diff --git a/.eslintignore b/.eslintignore index 8ab4750abd1685..5941496e1a6280 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,4 +7,5 @@ tools/icu tools/lint-md/lint-md.mjs benchmark/tmp doc/**/*.js +!doc/api_assets/*.js !.eslintrc.js diff --git a/.eslintrc.js b/.eslintrc.js index 787da541c3aed0..0f11677ccabf0d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -260,6 +260,7 @@ module.exports = { 'no-useless-concat': 'error', 'no-useless-constructor': 'error', 'no-useless-return': 'error', + 'no-var': 'error', 'no-void': 'error', 'no-whitespace-before-property': 'error', 'object-curly-newline': 'error', @@ -319,6 +320,7 @@ module.exports = { 'node-core/no-duplicate-requires': 'error', }, globals: { + CustomEvent: 'readable', Crypto: 'readable', CryptoKey: 'readable', fetch: 'readable', diff --git a/.gitattributes b/.gitattributes index 9f7d9377eaf426..82563e5d2fc91b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,6 @@ test/fixtures/* -text vcbuild.bat text eol=crlf +deps/npm/bin/npm text eol=lf +deps/npm/bin/npx text eol=lf +deps/corepack/shims/corepack text eol=lf tools/msvs/find_python.cmd text eol=crlf diff --git a/.github/ISSUE_TEMPLATE/4-report-a-flaky-test.yml b/.github/ISSUE_TEMPLATE/4-report-a-flaky-test.yml index dd6fa5091e3f15..8dc099fb40a5e7 100644 --- a/.github/ISSUE_TEMPLATE/4-report-a-flaky-test.yml +++ b/.github/ISSUE_TEMPLATE/4-report-a-flaky-test.yml @@ -19,11 +19,24 @@ body: placeholder: e.g. `test-fs-stat-bigint` validations: required: true - - type: input + - type: dropdown attributes: label: Platform description: The platform the test is flaky on. - placeholder: e.g. `macos` or `linux` + multiple: true + options: + - AIX + - FreeBSD + - Linux ARM64 + - Linux ARMv7 + - Linux PPC64LE + - Linux s390x + - Linux x64 + - macOS ARM64 + - macOS x64 + - SmartOS + - Windows + - Other - type: textarea attributes: label: Console output diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 428bbf678a34c3..df5f12bb934f75 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,4 +1,4 @@ -blank_issues_enabled: false +blank_issues_enabled: true contact_links: - name: ⁉️ Need help with Node.js? url: https://github.com/nodejs/help diff --git a/.github/label-pr-config.yml b/.github/label-pr-config.yml index a8d22980f6db18..e76fa3e4e694a7 100644 --- a/.github/label-pr-config.yml +++ b/.github/label-pr-config.yml @@ -26,7 +26,7 @@ subSystemLabels: /^src\/.*win32.*/: c++, windows /^src\/node_zlib/: c++, zlib /^src\/tracing/: c++, tracing - /^src\/node_api/: c++, node-api + /^src\/(?:node_api|js_native_api)/: c++, node-api /^src\/node_http2/: c++, http2 /^src\/node_report/: c++, report /^src\/node_wasi/: c++, wasi @@ -67,7 +67,7 @@ subSystemLabels: /^tools\/make-v8/: tools, v8 engine, needs-ci /^tools\/v8_gypfiles/: tools, v8 engine, needs-ci /^tools\/(code_cache|snapshot)/: needs-ci - /^tools\/build-addons.js/: needs-ci + /^tools\/build-addons.mjs/: needs-ci # all other tool changes should be marked as such /^tools\//: tools /^\.eslint|\.remark|\.editorconfig/: tools @@ -117,7 +117,8 @@ exlusiveLabels: /^test\/inspector\//: test, inspector /^test\/cctest\/test_inspector/: test, inspector /^test\/cctest\/test_url/: test, whatwg-url - /^test\/addons-napi\//: test, node-api + /^test\/node-api\//: test, node-api + /^test\/js-native-api\//: test, node-api /^test\/async-hooks\//: test, async_hooks /^test\/report\//: test, report /^test\/fixtures\/es-module/: test, esm diff --git a/.github/workflows/authors.yml b/.github/workflows/authors.yml index 75fec53a549438..e33089ea252cdb 100644 --- a/.github/workflows/authors.yml +++ b/.github/workflows/authors.yml @@ -6,17 +6,22 @@ on: workflow_dispatch: +permissions: + contents: read + jobs: authors_update: if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: '0' # This is required to actually get all the authors persist-credentials: false - - run: tools/update-authors.js # Run the AUTHORS tool - - uses: gr2m/create-or-update-pull-request-action@v1 # Create a PR or update the Action's existing PR + - run: tools/update-authors.mjs # Run the AUTHORS tool + - uses: gr2m/create-or-update-pull-request-action@6720400cad8e74d7adc64640e4e6ea6748b83d8f + # Creates a PR or update the Action's existing PR, or + # no-op if the base branch is already up-to-date. env: GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} with: @@ -24,7 +29,7 @@ jobs: body: > Here are some new additions to the AUTHORS file. This is an automatically generated PR by the - `authors.yml` GitHub Action, which runs `tools/update-authors.js`. + `authors.yml` GitHub Action, which runs `tools/update-authors.mjs`. branch: actions/authors-update # Custom branch *just* for this Action. commit-message: 'meta: update AUTHORS' labels: meta diff --git a/.github/workflows/auto-start-ci.yml b/.github/workflows/auto-start-ci.yml index 2416561ab7ebf3..98f562fd00b767 100644 --- a/.github/workflows/auto-start-ci.yml +++ b/.github/workflows/auto-start-ci.yml @@ -13,8 +13,13 @@ concurrency: ${{ github.workflow }} env: NODE_VERSION: lts/* +permissions: + contents: read + jobs: get-prs-for-ci: + permissions: + pull-requests: read if: github.repository == 'nodejs/node' runs-on: ubuntu-latest outputs: @@ -32,16 +37,19 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} start-ci: + permissions: + contents: read + pull-requests: write needs: get-prs-for-ci if: needs.get-prs-for-ci.outputs.numbers != '' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Install Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml index 38a8922c093a99..2ced884f35c539 100644 --- a/.github/workflows/build-tarball.yml +++ b/.github/workflows/build-tarball.yml @@ -12,7 +12,6 @@ on: - '!.github/workflows/build-tarball.yml' push: branches: - - master - main - v[0-9]+.x-staging - v[0-9]+.x @@ -30,18 +29,21 @@ concurrency: env: PYTHON_VERSION: '3.10' - FLAKY_TESTS: dontcare + FLAKY_TESTS: keep_retrying + +permissions: + contents: read jobs: build-tarball: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -55,7 +57,7 @@ jobs: mkdir tarballs mv *.tar.gz tarballs - name: Upload tarball artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: tarballs path: tarballs @@ -63,17 +65,17 @@ jobs: needs: build-tarball runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information run: npx envinfo - name: Download tarball - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: tarballs path: tarballs @@ -92,4 +94,4 @@ jobs: - name: Test run: | cd $TAR_DIR - make run-ci -j2 V=1 TEST_CI_ARGS="-p dots" + make run-ci -j2 V=1 TEST_CI_ARGS="-p dots --measure-flakiness 9" diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 2312d10d33faee..9b5f81a816e2d0 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -9,7 +9,6 @@ on: types: [opened, synchronize, reopened, ready_for_review] push: branches: - - master - main - canary - v[0-9]+.x-staging @@ -25,18 +24,21 @@ concurrency: env: PYTHON_VERSION: '3.10' - FLAKY_TESTS: dontcare + FLAKY_TESTS: keep_retrying + +permissions: + contents: read jobs: build-windows: if: github.event.pull_request.draft == false runs-on: windows-2019 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install deps diff --git a/.github/workflows/close-stale-feature-requests.yml b/.github/workflows/close-stale-feature-requests.yml index 0b482ed8ae065f..834c4c84c28db2 100644 --- a/.github/workflows/close-stale-feature-requests.yml +++ b/.github/workflows/close-stale-feature-requests.yml @@ -1,12 +1,9 @@ name: Close stale feature requests on: workflow_dispatch: - inputs: - daysBeforeStale: - description: Idle number of days before marking feature requests stale - required: true - default: 906 - type: number + schedule: + # Run every day at 1:00 AM UTC. + - cron: 0 1 * * * # yamllint disable rule:empty-lines env: @@ -31,15 +28,21 @@ env: [feature request management document](https://github.com/nodejs/node/blob/HEAD/doc/contributing/feature-request-management.md). # yamllint enable +permissions: + contents: read + jobs: stale: + permissions: + issues: write # for actions/stale to close stale issues + pull-requests: write # for actions/stale to close stale PRs if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - uses: actions/stale@v4 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - days-before-stale: ${{ github.event.inputs.daysBeforeStale }} + days-before-stale: 180 days-before-close: 30 stale-issue-label: stale close-issue-message: ${{ env.CLOSE_MESSAGE }} diff --git a/.github/workflows/close-stalled.yml b/.github/workflows/close-stalled.yml index 347b22bd70caf3..509d79056f97e3 100644 --- a/.github/workflows/close-stalled.yml +++ b/.github/workflows/close-stalled.yml @@ -9,8 +9,14 @@ env: is still relevant, or to ping the collaborator who labelled it stalled if you have any questions. +permissions: + contents: read + jobs: stale: + permissions: + issues: write # for actions/stale to close stale issues + pull-requests: write # for actions/stale to close stale PRs if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: diff --git a/.github/workflows/comment-labeled.yml b/.github/workflows/comment-labeled.yml index 5c529000a63fb2..5f59a48bb5a6d0 100644 --- a/.github/workflows/comment-labeled.yml +++ b/.github/workflows/comment-labeled.yml @@ -11,8 +11,14 @@ env: If it should remain open, please leave a comment explaining why it should remain open. FAST_TRACK_MESSAGE: Fast-track has been requested by @${{ github.actor }}. Please 👍 to approve. +permissions: + contents: read + jobs: stale-comment: + permissions: + issues: write + pull-requests: write if: github.repository == 'nodejs/node' && github.event.label.name == 'stalled' runs-on: ubuntu-latest steps: @@ -23,6 +29,8 @@ jobs: run: gh issue comment "$NUMBER" --repo ${{ github.repository }} --body "$STALE_MESSAGE" fast-track: + permissions: + pull-requests: write if: github.repository == 'nodejs/node' && github.event_name == 'pull_request_target' && github.event.label.name == 'fast-track' runs-on: ubuntu-latest steps: diff --git a/.github/workflows/commit-lint.yml b/.github/workflows/commit-lint.yml index d0754d56035e54..738a034aecb017 100644 --- a/.github/workflows/commit-lint.yml +++ b/.github/workflows/commit-lint.yml @@ -5,6 +5,9 @@ on: [pull_request] env: NODE_VERSION: lts/* +permissions: + contents: read + jobs: lint-commit-message: runs-on: ubuntu-latest @@ -14,13 +17,13 @@ jobs: run: | echo "::set-output name=plusOne::$((${{ github.event.pull_request.commits }} + 1))" echo "::set-output name=minusOne::$((${{ github.event.pull_request.commits }} - 1))" - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: ${{ steps.nb-of-commits.outputs.plusOne }} persist-credentials: false - run: git reset HEAD^2 - name: Install Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} - name: Validate commit message diff --git a/.github/workflows/commit-queue.yml b/.github/workflows/commit-queue.yml index bbaf67a0e7e779..ac57fbb0e01f4f 100644 --- a/.github/workflows/commit-queue.yml +++ b/.github/workflows/commit-queue.yml @@ -18,8 +18,13 @@ concurrency: ${{ github.workflow }} env: NODE_VERSION: lts/* +permissions: + contents: read + jobs: get_mergeable_prs: + permissions: + pull-requests: read if: github.repository == 'nodejs/node' runs-on: ubuntu-latest outputs: @@ -42,7 +47,7 @@ jobs: if: needs.get_mergeable_prs.outputs.numbers != '' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: # Needs the whole git history for ncu to work # See https://github.com/nodejs/node-core-utils/pull/486 @@ -55,7 +60,7 @@ jobs: # Install dependencies - name: Install Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} - name: Install node-core-utils diff --git a/.github/workflows/coverage-linux.yml b/.github/workflows/coverage-linux.yml index 65004c243f3dd5..db0a82c9e21d73 100644 --- a/.github/workflows/coverage-linux.yml +++ b/.github/workflows/coverage-linux.yml @@ -11,7 +11,8 @@ on: - .github/** - '!.github/workflows/coverage-linux.yml' push: - branches: [master, main] + branches: + - main paths-ignore: - '**.md' - benchmark/** @@ -26,18 +27,21 @@ concurrency: env: PYTHON_VERSION: '3.10' - FLAKY_TESTS: dontcare + FLAKY_TESTS: keep_retrying + +permissions: + contents: read jobs: coverage-linux: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -49,7 +53,7 @@ jobs: # TODO(bcoe): fix the couple tests that fail with the inspector enabled. # The cause is most likely coverage's use of the inspector. - name: Test - run: NODE_V8_COVERAGE=coverage/tmp make test-cov -j2 V=1 TEST_CI_ARGS="-p dots" || exit 0 + run: NODE_V8_COVERAGE=coverage/tmp make test-cov -j2 V=1 TEST_CI_ARGS="-p dots --measure-flakiness 9" || exit 0 - name: Report JS run: npx c8 report --check-coverage env: @@ -60,6 +64,6 @@ jobs: - name: Clean tmp run: rm -rf coverage/tmp && rm -rf out - name: Upload - uses: codecov/codecov-action@v1 + uses: codecov/codecov-action@v3 with: directory: ./coverage diff --git a/.github/workflows/coverage-windows.yml b/.github/workflows/coverage-windows.yml index 550b4424e50407..78465acb17566d 100644 --- a/.github/workflows/coverage-windows.yml +++ b/.github/workflows/coverage-windows.yml @@ -12,7 +12,8 @@ on: - .github/** - '!.github/workflows/coverage-windows.yml' push: - branches: [master, main] + branches: + - main paths-ignore: - '**.md' - benchmark/** @@ -28,18 +29,21 @@ concurrency: env: PYTHON_VERSION: '3.10' - FLAKY_TESTS: dontcare + FLAKY_TESTS: keep_retrying + +permissions: + contents: read jobs: coverage-windows: if: github.event.pull_request.draft == false runs-on: windows-2019 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install deps @@ -61,6 +65,6 @@ jobs: - name: Clean tmp run: npx rimraf ./coverage/tmp - name: Upload - uses: codecov/codecov-action@v1 + uses: codecov/codecov-action@v3 with: directory: ./coverage diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml index 79294ca966ddef..f14bde4c7fb629 100644 --- a/.github/workflows/daily.yml +++ b/.github/workflows/daily.yml @@ -8,17 +8,20 @@ on: env: NODE_VERSION: lts/* +permissions: + contents: read + jobs: build-lto: runs-on: ubuntu-latest # not working on gcc-8 and gcc-9 see https://github.com/nodejs/node/issues/38570 container: gcc:11 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 9bb872f35384d4..76660343ca2f46 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -5,7 +5,6 @@ on: types: [opened, synchronize, reopened, ready_for_review] push: branches: - - master - main - v[0-9]+.x-staging - v[0-9]+.x @@ -17,25 +16,28 @@ concurrency: env: NODE_VERSION: lts/* +permissions: + contents: read + jobs: build-docs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information run: npx envinfo - name: Build run: NODE=$(command -v node) make doc-only - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 with: name: docs path: out/doc - name: Test - run: NODE=$(command -v node) make test-doc-ci TEST_CI_ARGS="-p actions" + run: NODE=$(command -v node) make test-doc-ci TEST_CI_ARGS="-p actions --measure-flakiness 9" diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml index 21f0f0297d5f11..ce47c0a1ddedb2 100644 --- a/.github/workflows/find-inactive-collaborators.yml +++ b/.github/workflows/find-inactive-collaborators.yml @@ -10,19 +10,22 @@ on: env: NODE_VERSION: lts/* +permissions: + contents: read + jobs: find: if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} @@ -30,7 +33,9 @@ jobs: run: tools/find-inactive-collaborators.mjs - name: Open pull request - uses: gr2m/create-or-update-pull-request-action@v1 + uses: gr2m/create-or-update-pull-request-action@6720400cad8e74d7adc64640e4e6ea6748b83d8f + # Creates a PR or update the Action's existing PR, or + # no-op if the base branch is already up-to-date. env: GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} with: diff --git a/.github/workflows/find-inactive-tsc.yml b/.github/workflows/find-inactive-tsc.yml index 9276de8b6a5c3a..2f6afec42277bb 100644 --- a/.github/workflows/find-inactive-tsc.yml +++ b/.github/workflows/find-inactive-tsc.yml @@ -10,6 +10,9 @@ on: env: NODE_VERSION: lts/* +permissions: + contents: read + jobs: find: if: github.repository == 'nodejs/node' @@ -17,13 +20,13 @@ jobs: steps: - name: Checkout the repo - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 persist-credentials: false - name: Clone nodejs/TSC repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 path: .tmp @@ -31,7 +34,7 @@ jobs: repository: nodejs/TSC - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} @@ -39,7 +42,9 @@ jobs: run: tools/find-inactive-tsc.mjs >> $GITHUB_ENV - name: Open pull request - uses: gr2m/create-or-update-pull-request-action@v1 + uses: gr2m/create-or-update-pull-request-action@6720400cad8e74d7adc64640e4e6ea6748b83d8f + # Creates a PR or update the Action's existing PR, or + # no-op if the base branch is already up-to-date. env: GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} with: diff --git a/.github/workflows/label-pr.yml b/.github/workflows/label-pr.yml index 58e9b226dab0d0..922a9359f5ed20 100644 --- a/.github/workflows/label-pr.yml +++ b/.github/workflows/label-pr.yml @@ -4,6 +4,9 @@ on: pull_request_target: types: [opened] +permissions: + contents: read + jobs: label: runs-on: ubuntu-latest diff --git a/.github/workflows/license-builder.yml b/.github/workflows/license-builder.yml index 6ccb3b2f743ed6..3c966da1d5b4f0 100644 --- a/.github/workflows/license-builder.yml +++ b/.github/workflows/license-builder.yml @@ -6,16 +6,24 @@ on: - cron: 0 0 * * 1 workflow_dispatch: +permissions: + contents: read + jobs: update_license: + permissions: + contents: write # for gr2m/create-or-update-pull-request-action to push local changes + pull-requests: write # for gr2m/create-or-update-pull-request-action to create a PR if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - run: ./tools/license-builder.sh # Run the license builder tool - - uses: gr2m/create-or-update-pull-request-action@v1.x # Create a PR or update the Action's existing PR + - uses: gr2m/create-or-update-pull-request-action@6720400cad8e74d7adc64640e4e6ea6748b83d8f + # Creates a PR or update the Action's existing PR, or + # no-op if the base branch is already up-to-date. env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index b8bc5ecb92efbd..1b5c9e8f9ba421 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -5,7 +5,6 @@ on: types: [opened, synchronize, reopened, ready_for_review] push: branches: - - master - main - v[0-9]+.x-staging - v[0-9]+.x @@ -18,16 +17,19 @@ env: PYTHON_VERSION: '3.10' NODE_VERSION: lts/* +permissions: + contents: read + jobs: lint-addon-docs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information @@ -38,65 +40,89 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information run: npx envinfo - name: Lint C/C++ files run: make lint-cpp - lint-md: - if: github.event.pull_request.draft == false + format-cpp: + if: ${{ github.event.pull_request && github.event.pull_request.draft == false && github.base_ref == github.event.repository.default_branch }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: + fetch-depth: 0 persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} + - name: Set up Python ${{ env.PYTHON_VERSION }} + uses: actions/setup-python@v3 + with: + python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information run: npx envinfo - - name: Get release version numbers - if: ${{ github.event.pull_request && github.event.pull_request.base.ref == github.event.pull_request.base.repo.default_branch }} - id: get-released-versions - run: ./tools/lint-md/list-released-versions-from-changelogs.mjs - - name: Lint docs + - name: Format C/C++ files run: | - echo "::add-matcher::.github/workflows/remark-lint-problem-matcher.json" - NODE=$(command -v node) make lint-md - env: - NODE_RELEASED_VERSIONS: ${{ steps.get-released-versions.outputs.NODE_RELEASED_VERSIONS }} - - lint-js: + make format-cpp-build + # The `make format-cpp` error code is intentionally ignored here + # because it is irrelevant. We already check if the formatter produced + # a diff in the next line. + # Refs: https://github.com/nodejs/node/pull/42764 + CLANG_FORMAT_START="$(git merge-base HEAD refs/remotes/origin/$GITHUB_BASE_REF)" \ + make format-cpp || true + git --no-pager diff --exit-code && EXIT_CODE="$?" || EXIT_CODE="$?" + if [ "$EXIT_CODE" != "0" ] + then + echo + echo 'ERROR: Please run:' + echo + echo " CLANG_FORMAT_START="$\(git merge-base HEAD ${GITHUB_BASE_REF}\)" make format-cpp" + echo + echo 'to format the commits in your branch.' + exit "$EXIT_CODE" + fi + lint-js-and-md: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information run: npx envinfo - name: Lint JavaScript files run: NODE=$(command -v node) make lint-js + - name: Get release version numbers + if: ${{ github.event.pull_request && github.event.pull_request.base.ref == github.event.pull_request.base.repo.default_branch }} + id: get-released-versions + run: ./tools/lint-md/list-released-versions-from-changelogs.mjs + - name: Lint markdown files + run: | + echo "::add-matcher::.github/workflows/remark-lint-problem-matcher.json" + NODE=$(command -v node) make lint-md + env: + NODE_RELEASED_VERSIONS: ${{ steps.get-released-versions.outputs.NODE_RELEASED_VERSIONS }} lint-py: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -109,11 +135,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Use Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -127,27 +153,27 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - run: shellcheck -V - name: Lint Shell scripts - run: tools/lint-sh.js . + run: tools/lint-sh.mjs . lint-codeowners: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - - uses: mszostok/codeowners-validator@v0.6.0 + - uses: mszostok/codeowners-validator@7f3f5e28c6d7b8dfae5731e54ce2272ca384592f with: checks: files,duppatterns lint-pr-url: if: ${{ github.event.pull_request }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 2 persist-credentials: false diff --git a/.github/workflows/notify-force-push.yml b/.github/workflows/notify-force-push.yml index dac2d50ae266f7..69aacc8524fd93 100644 --- a/.github/workflows/notify-force-push.yml +++ b/.github/workflows/notify-force-push.yml @@ -1,10 +1,12 @@ on: push: branches: - - master - main name: Notify on Force Push +permissions: + contents: read + jobs: slackNotification: name: Slack Notification @@ -12,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Slack Notification - uses: rtCamp/action-slack-notify@master + uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7 env: SLACK_COLOR: '#DE512A' SLACK_ICON: https://github.com/nodejs.png?size=48 diff --git a/.github/workflows/test-asan.yml b/.github/workflows/test-asan.yml index 5f2f1c93c3d521..c8e7a09e2e4efd 100644 --- a/.github/workflows/test-asan.yml +++ b/.github/workflows/test-asan.yml @@ -12,7 +12,6 @@ on: - '!.github/workflows/test-asan.yml' push: branches: - - master - main - canary - v[0-9]+.x-staging @@ -30,8 +29,12 @@ concurrency: cancel-in-progress: true env: + ASAN_OPTIONS: intercept_tls_get_addr=0 PYTHON_VERSION: '3.10' - FLAKY_TESTS: dontcare + FLAKY_TESTS: keep_retrying + +permissions: + contents: read jobs: test-asan: @@ -43,11 +46,11 @@ jobs: LINK: clang++ CONFIG_FLAGS: --enable-asan steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -55,4 +58,4 @@ jobs: - name: Build run: make build-ci -j2 V=1 - name: Test - run: make run-ci -j2 V=1 TEST_CI_ARGS="-p actions -t 300" + run: make run-ci -j2 V=1 TEST_CI_ARGS="-p actions -t 300 --measure-flakiness 9" diff --git a/.github/workflows/test-internet.yml b/.github/workflows/test-internet.yml index 9b504980301dbc..4fcb18a14f5ce9 100644 --- a/.github/workflows/test-internet.yml +++ b/.github/workflows/test-internet.yml @@ -10,7 +10,6 @@ on: paths: [test/internet/**] push: branches: - - master - main - canary - v[0-9]+.x-staging @@ -23,17 +22,20 @@ concurrency: env: PYTHON_VERSION: '3.10' - FLAKY_TESTS: dontcare + FLAKY_TESTS: keep_retrying + +permissions: + contents: read jobs: test-internet: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information diff --git a/.github/workflows/test-linux.yml b/.github/workflows/test-linux.yml index 22b5e9a35d3dd9..24196849d1bac8 100644 --- a/.github/workflows/test-linux.yml +++ b/.github/workflows/test-linux.yml @@ -9,7 +9,6 @@ on: types: [opened, synchronize, reopened, ready_for_review] push: branches: - - master - main - canary - v[0-9]+.x-staging @@ -25,18 +24,21 @@ concurrency: env: PYTHON_VERSION: '3.10' - FLAKY_TESTS: dontcare + FLAKY_TESTS: keep_retrying + +permissions: + contents: read jobs: test-linux: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -44,4 +46,4 @@ jobs: - name: Build run: make build-ci -j2 V=1 CONFIG_FLAGS="--error-on-warn" - name: Test - run: make run-ci -j2 V=1 TEST_CI_ARGS="-p actions" + run: make run-ci -j2 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9" diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index 40885bd9e65c5a..7faddc8eaedaec 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -12,7 +12,6 @@ on: - '!.github/workflows/test-macos.yml' push: branches: - - master - main - canary - v[0-9]+.x-staging @@ -31,18 +30,21 @@ concurrency: env: PYTHON_VERSION: '3.10' - FLAKY_TESTS: dontcare + FLAKY_TESTS: keep_retrying + +permissions: + contents: read jobs: test-macOS: if: github.event.pull_request.draft == false runs-on: macos-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -58,4 +60,4 @@ jobs: - name: Build run: make build-ci -j2 V=1 CONFIG_FLAGS="--error-on-warn" - name: Test - run: make run-ci -j2 V=1 TEST_CI_ARGS="-p actions" + run: make run-ci -j2 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9" diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index a9ae1372e42bd9..e58f59ef78a301 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -6,6 +6,9 @@ on: workflow_dispatch: +permissions: + contents: read + jobs: tools-update: if: github.repository == 'nodejs/node' @@ -58,11 +61,13 @@ jobs: npm install --ignore-scripts fi steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: persist-credentials: false - run: ${{ matrix.run }} - - uses: gr2m/create-or-update-pull-request-action@v1 # Create a PR or update the Action's existing PR + - uses: gr2m/create-or-update-pull-request-action@6720400cad8e74d7adc64640e4e6ea6748b83d8f + # Creates a PR or update the Action's existing PR, or + # no-op if the base branch is already up-to-date. env: GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} with: diff --git a/.gitignore b/.gitignore index bc986b3c4c0659..6e58d14c32a1bc 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ !.github !.gitignore !.gitkeep +!.gitpod.yml !.mailmap !.nycrc !.yamllint.yaml diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 00000000000000..e01e98fab5a1c6 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,11 @@ +# Ref: https://github.com/gitpod-io/gitpod/issues/6283#issuecomment-1001043454 +tasks: + - init: ./configure && timeout 50m make -j16 || true + +# Ref: https://www.gitpod.io/docs/prebuilds#github-specific-configuration +github: + prebuilds: + # enable for pull requests coming from this repo (defaults to true) + pullRequests: false + # add a check to pull requests (defaults to true) + addCheck: false diff --git a/.mailmap b/.mailmap index ea89c8e96c1076..f922b76746784f 100644 --- a/.mailmap +++ b/.mailmap @@ -50,6 +50,7 @@ Ashley Maceli Ashok Suthar Ashutosh Kumar Singh Atsuo Fukaya +Austin Kelleher Azard <330815461@qq.com> Ben Lugavere Ben Noordhuis @@ -66,7 +67,8 @@ Benjamin Waters Bert Belder Bert Belder Bert Belder -Beth Griggs +Beth Griggs +Beth Griggs Bidisha Pyne bl-ue <54780737+bl-ue@users.noreply.github.com> Brad Decker @@ -82,11 +84,14 @@ Brian White Caleb Boyd Calvin Metcalf Calvin Metcalf +Camillo Bruni Caralyn Reisle Charles Charles Rudolph Chen Gang Chen Gang <13298548+MoonBall@users.noreply.github.com> +Chengzhong Wu +Chengzhong Wu Chew Choon Keat Chris Andrews Chris Johnson @@ -196,8 +201,6 @@ Hassaan Pasha Hendrik Schwalm Henry Chin Herbert Vojčík -himself65 -himself65 Hitesh Kanwathirtha Icer Liang Igor Savin @@ -219,9 +222,10 @@ James Beavers James Bromwell <943160+thw0rted@users.noreply.github.com> James Hartig James Ide +James Ide James M Snell James Nimlos -James Sumners +James Sumners Jan Krems Jem Bezooyen Jem Bezooyen @@ -239,7 +243,7 @@ Jesús Leganés-Combarro 'piranna Jimb Esser Jithil P Ponnan Jithil P Ponnan -Jochen Eisinger +Jochen Eisinger Joe Shaw Johan Bergström Johan Dahlberg @@ -298,6 +302,7 @@ Lakshmi Swetha Gopireddy Lasse R.H. Nielsen Leeseean Chiu +LiviaMedeiros <74449973+LiviaMedeiros@users.noreply.github.com> Lucas Pardue Luke Bayes Lydia Kats @@ -356,6 +361,9 @@ Mitar Milutinovic Mithun Sasidharan Mohammed Keyvanzadeh Mohammed Keyvanzadeh <62040526+VoltrexMaster@users.noreply.github.com> +Morgan Roderick +Morgan Roderick <20321+mroderick@users.noreply.github.com> +MURAKAMI Masahiko Myles Borins Myles Borins Myles Borins @@ -371,10 +379,17 @@ Nils Kuhnhenn Nitzan Uziely Nitzan Uziely Noah Rose Ledesma +npm team +npm team +npm team +npm team Oliver Chang Oluwaseun Omoyajowo +OneNail Onne Gorter Oscar Martinez +Paolo Insogna +Paolo Insogna Paul Graham Paul Querna Pedro Lima @@ -438,6 +453,7 @@ Saúl Ibarra Corretgé Scott Blomquist Segu Riluvan Sergey Kryzhanovsky +Sergey Petushkov Sergey Zelenov Shannen Saez Shaopeng Zhang @@ -477,6 +493,7 @@ Tarun Batra Taylor Woll Ted Young Teppei Sato +theanarkh <2923878201@qq.com> Theotime Poisseau Thomas Hunter II Thomas Lee @@ -527,6 +544,7 @@ Vladimir de Turckheim vsemozhetbyt Vyacheslav Egorov Wang Xinyong +Wayne Zhang Wei-Wei Wu Weijia Wang Weijia Wang <381152119@qq.com> @@ -538,6 +556,7 @@ Wyatt Preul Xavier J Ortiz xiaoyu <306766053@qq.com> Xu Meng +Xuguang Mei Yael Hermon Yang Guo Yash Ladha <18033231+yashLadha@users.noreply.github.com> @@ -556,6 +575,8 @@ Yuta Hiroto Zach Bjornson Zachary Scott Zachary Vacura +Zeyu "Alex" Yang +Zeyu "Alex" Yang Zoran Tomicic Сковорода Никита Андреевич 隋鑫磊 diff --git a/AUTHORS b/AUTHORS index f213b402b5d222..f792f6357fe1a4 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1183,7 +1183,7 @@ ikasumi_wt Yoshiya Hinosawa Syuhei Kobayashi YutamaKotaro -MURAKAMI Masahiko +MURAKAMI Masahiko Thomas Watson Daijiro Yamada Kelvin Jin @@ -2310,12 +2310,12 @@ Dzmitry_Prudnikau Ian McKellar Jennifer Bland Kyle Fuller -Camillo Bruni +Camillo Bruni Yongsheng Zhang Neeraj Laad Scott Van Gilder Yaniv Friedensohn -Lucas Woo +Chengzhong Wu Troels Liebe Bentsen pranshuchittora lakamsani @@ -2686,7 +2686,7 @@ Alexander Sattelmaier Avi ד Thomas Aymen Naghmouchi -himself65 +Zeyu "Alex" Yang Patrick Gansterer Nicolas Moteau Anthony Tuininga @@ -3260,7 +3260,6 @@ Siddharth Cactysman David Brownman Michael Rommel -Chengzhong Wu Andres Jayden Seric divlo @@ -3288,7 +3287,7 @@ pengjie <37610029@qq.com> Philip julianjany <54538266+julianjany@users.noreply.github.com> bl-ue -npm-robot +npm team Shaun Keys Simone Busoli Derevianchenko Maksym <32910350+maks-white@users.noreply.github.com> @@ -3414,7 +3413,7 @@ Tony Gorez ofirbarak Bar Admoni ofir -Xuguang Mei +Xuguang Mei Elad Nava Balakrishna Avulapati Aaron Xie @@ -3430,9 +3429,8 @@ Derek Wolpert <48101033+derekwolpert@users.noreply.github.com> wbt Alexandru Comanescu madflow -Austin Kelleher +Austin Kelleher apeltop -Livia Medeiros <74449973+LiviaMedeiros@users.noreply.github.com> Nikolaos Papaspyrou Matt Probert <1196252+mattpr@users.noreply.github.com> Roch Devost @@ -3443,6 +3441,54 @@ Damjan Cvetko Randall Leeds Khoo Hao Yit <40757009+KhooHaoYit@users.noreply.github.com> Aroyan <43630681+aroyan@users.noreply.github.com> -theanarkh <2923878201@qq.com> +theanarkh +Vladimir Morozov +Anupama Codippily <47591753+AnupamaCodippily@users.noreply.github.com> +Greg Poole +Eliaz Bobadilla +Daeyeon Jeong +Daniel Roe +Niyas Sait +K.C.Ashish Kumar <703559+kcak11@users.noreply.github.com> +Niklas Mischkulnig <4586894+mischnic@users.noreply.github.com> +Liviu Ionescu +HE Shi-Jun +Yagiz Nizipli +liuxingbaoyu <30521560+liuxingbaoyu@users.noreply.github.com> +Sergey Nazaryev +William Marlow +Keyhan Vakil <60900335+airtable-keyhanvakil@users.noreply.github.com> +Feng Yu +pupilTong +rikapo +Meek Simbule <55823259+meekdenzo@users.noreply.github.com> +Michael Ficarra +hiroki osame +Eugene Chapko +Sergey Petushkov +Caleb Everett +JialuZhang-intel +Moshe Atlow +rubikscraft +James Scott-Brown +supriyo-biswas +Giacomo Gregoletto +italo jose +Kazuma Ohashi +Douglas Wilson <67512+dougwilson@users.noreply.github.com> +0xSanyam <108138884+0xSanyam@users.noreply.github.com> +Alena Khineika +Basit <1305718+mabaasit@users.noreply.github.com> +Kid <44045911+kidonng@users.noreply.github.com> +Jeremy Rose +Facundo Tuesca +Dan Castillo +Varun Sharma +txxnano +Jannis R +John Gee +Hrishikesh Kadam +KrayzeeKev +Airing -# Generated by tools/update-authors.js +# Generated by tools/update-authors.mjs diff --git a/BUILDING.md b/BUILDING.md index d1fa6e0648305e..96dcbf3774a9ba 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -337,13 +337,14 @@ You can execute the entire suite of tests for a given subsystem by providing the name of a subsystem: ```text -$ tools/test.py -J child-process +$ tools/test.py child-process ``` -You can also execute the tests in a tests directory (such as `test/message`): +You can also execute the tests in a test suite directory +(such as `test/message`): ```text -$ tools/test.py -J test/message +$ tools/test.py test/message ``` If you want to check the other options, please refer to the help by using @@ -551,7 +552,7 @@ When modifying only the JS layer in `lib`, it is possible to externally load it without modifying the executable: ```console -$ ./configure --node-builtin-modules-path $(pwd) +$ ./configure --node-builtin-modules-path "$(pwd)" ``` The resulting binary won't include any JS files and will try to load them from @@ -578,9 +579,9 @@ to run it again before invoking `make -j4`. * [Python 3.10](https://www.microsoft.com/en-us/p/python-310/9pjpw5ldxlz5) * The "Desktop development with C++" workload from - [Visual Studio 2019](https://visualstudio.microsoft.com/downloads/) or + [Visual Studio 2019](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2019-and-other-products) or the "C++ build tools" workload from the - [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019), + [Build Tools](https://aka.ms/vs/16/release/vs_buildtools.exe), with the default optional components * Basic Unix tools required for some tests, [Git for Windows](https://git-scm.com/download/win) includes Git Bash @@ -620,7 +621,7 @@ packages: * [NetWide Assembler](https://chocolatey.org/packages/nasm) To install Node.js prerequisites using -[Boxstarter WebLauncher](https://boxstarter.org/WebLauncher), open +[Boxstarter WebLauncher](https://boxstarter.org/weblauncher), open with Internet Explorer or Edge browser on the target machine. diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c39084334b6e0..898a254c4a75ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,7 +33,8 @@ release. -16.16.0
+16.17.0
+16.16.0
16.15.1
16.15.0
16.14.2
diff --git a/LICENSE b/LICENSE index 6730deeb0cdf52..902afd179cb437 100644 --- a/LICENSE +++ b/LICENSE @@ -109,9 +109,22 @@ The externally maintained libraries used by Node.js are: - ICU, located at deps/icu-small, is licensed as follows: """ - COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later) + UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE - Copyright © 1991-2020 Unicode, Inc. All rights reserved. + See Terms of Use + for definitions of Unicode Inc.’s Data Files and Software. + + NOTICE TO USER: Carefully read the following legal agreement. + BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S + DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), + YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE + TERMS AND CONDITIONS OF THIS AGREEMENT. + IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE + THE DATA FILES OR SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + + Copyright © 1991-2022 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in https://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining @@ -143,7 +156,7 @@ The externally maintained libraries used by Node.js are: use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. - --------------------- + ---------------------------------------------------------------------- Third-Party Software Licenses @@ -151,7 +164,9 @@ The externally maintained libraries used by Node.js are: terms for licensed third-party software components included within ICU libraries. - 1. ICU License - ICU 1.8.1 to ICU 57.1 + ---------------------------------------------------------------------- + + ICU License - ICU 1.8.1 to ICU 57.1 COPYRIGHT AND PERMISSION NOTICE @@ -186,7 +201,9 @@ The externally maintained libraries used by Node.js are: All trademarks and registered trademarks mentioned herein are the property of their respective owners. - 2. Chinese/Japanese Word Break Dictionary Data (cjdict.txt) + ---------------------------------------------------------------------- + + Chinese/Japanese Word Break Dictionary Data (cjdict.txt) # The Google Chrome software developed by Google is licensed under # the BSD license. Other software included in this distribution is @@ -390,7 +407,9 @@ The externally maintained libraries used by Node.js are: # # ---------------COPYING.ipadic-----END---------------------------------- - 3. Lao Word Break Dictionary Data (laodict.txt) + ---------------------------------------------------------------------- + + Lao Word Break Dictionary Data (laodict.txt) # Copyright (C) 2016 and later: Unicode, Inc. and others. # License & terms of use: http://www.unicode.org/copyright.html @@ -430,7 +449,9 @@ The externally maintained libraries used by Node.js are: # OF THE POSSIBILITY OF SUCH DAMAGE. # -------------------------------------------------------------------------- - 4. Burmese Word Break Dictionary Data (burmesedict.txt) + ---------------------------------------------------------------------- + + Burmese Word Break Dictionary Data (burmesedict.txt) # Copyright (c) 2014 International Business Machines Corporation # and others. All Rights Reserved. @@ -470,7 +491,9 @@ The externally maintained libraries used by Node.js are: # SUCH DAMAGE. # -------------------------------------------------------------------------- - 5. Time Zone Database + ---------------------------------------------------------------------- + + Time Zone Database ICU uses the public domain data and code derived from Time Zone Database for its time zone support. The ownership of the TZ database @@ -493,7 +516,9 @@ The externally maintained libraries used by Node.js are: # making a contribution to the database or code waives all rights to # future claims in that contribution or in the TZ Database. - 6. Google double-conversion + ---------------------------------------------------------------------- + + Google double-conversion Copyright 2006-2011, the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -521,6 +546,83 @@ The externally maintained libraries used by Node.js are: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ---------------------------------------------------------------------- + + File: aclocal.m4 (only for ICU4C) + Section: pkg.m4 - Macros to locate and utilise pkg-config. + + Copyright © 2004 Scott James Remnant . + Copyright © 2012-2015 Dan Nicholson + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. + + As a special exception to the GNU General Public License, if you + distribute this file as part of a program that contains a + configuration script generated by Autoconf, you may include it under + the same distribution terms that you use for the rest of that + program. + + (The condition for the exception is fulfilled because + ICU4C includes a configuration script generated by Autoconf, + namely the `configure` script.) + + ---------------------------------------------------------------------- + + File: config.guess (only for ICU4C) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . + + As a special exception to the GNU General Public License, if you + distribute this file as part of a program that contains a + configuration script generated by Autoconf, you may include it under + the same distribution terms that you use for the rest of that + program. This Exception is an additional permission under section 7 + of the GNU General Public License, version 3 ("GPLv3"). + + (The condition for the exception is fulfilled because + ICU4C includes a configuration script generated by Autoconf, + namely the `configure` script.) + + ---------------------------------------------------------------------- + + File: install-sh (only for ICU4C) + + Copyright 1991 by the Massachusetts Institute of Technology + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation, and that the name of M.I.T. not be used in advertising or + publicity pertaining to distribution of the software without specific, + written prior permission. M.I.T. makes no representations about the + suitability of this software for any purpose. It is provided "as is" + without express or implied warranty. """ - libuv, located at deps/uv, is licensed as follows: diff --git a/Makefile b/Makefile index 3c48653d05c0c6..dc6f08b6f0280f 100644 --- a/Makefile +++ b/Makefile @@ -366,13 +366,13 @@ ADDONS_BINDING_SOURCES := \ $(filter-out test/addons/??_*/*.h, $(wildcard test/addons/*/*.h)) ADDONS_PREREQS := config.gypi \ - deps/npm/node_modules/node-gyp/package.json tools/build-addons.js \ + deps/npm/node_modules/node-gyp/package.json tools/build-addons.mjs \ deps/uv/include/*.h deps/v8/include/*.h \ src/node.h src/node_buffer.h src/node_object_wrap.h src/node_version.h define run_build_addons env npm_config_loglevel=$(LOGLEVEL) npm_config_nodedir="$$PWD" \ - npm_config_python="$(PYTHON)" $(NODE) "$$PWD/tools/build-addons" \ + npm_config_python="$(PYTHON)" $(NODE) "$$PWD/tools/build-addons.mjs" \ "$$PWD/deps/npm/node_modules/node-gyp/bin/node-gyp.js" \ $1 touch $2 @@ -1096,7 +1096,7 @@ endif $(MACOSOUTDIR)/dist/npm/usr/local/lib/node_modules unlink $(MACOSOUTDIR)/dist/node/usr/local/bin/npm unlink $(MACOSOUTDIR)/dist/node/usr/local/bin/npx - $(NODE) tools/license2rtf.js < LICENSE > \ + $(NODE) tools/license2rtf.mjs < LICENSE > \ $(MACOSOUTDIR)/installer/productbuild/Resources/license.rtf cp doc/osx_installer_logo.png $(MACOSOUTDIR)/installer/productbuild/Resources pkgbuild --version $(FULLVERSION) \ @@ -1429,8 +1429,8 @@ CLANG_FORMAT_START ?= HEAD # $ make format-cpp # To format HEAD~1...HEAD (latest commit): # $ CLANG_FORMAT_START=`git rev-parse HEAD~1` make format-cpp -# To format diff between master and current branch head (master...HEAD): -# $ CLANG_FORMAT_START=master make format-cpp +# To format diff between main and current branch head (main...HEAD): +# $ CLANG_FORMAT_START=main make format-cpp format-cpp: ## Format C++ diff from $CLANG_FORMAT_START to current changes ifneq ("","$(wildcard tools/clang-format/node_modules/)") $(info Formatting C++ diff from $(CLANG_FORMAT_START)..) @@ -1440,7 +1440,7 @@ ifneq ("","$(wildcard tools/clang-format/node_modules/)") $(CLANG_FORMAT_START) -- \ $(LINT_CPP_FILES) else - $(info clang-format is not installed.) + $(info Required tooling for C++ code formatting is not installed.) $(info To install (requires internet access) run: $$ make format-cpp-build) endif diff --git a/README.md b/README.md index c7cb705d84d1bf..5b6347020b9696 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Looking for help? Check out the * **Nightly**: Code from the Current branch built every 24-hours when there are changes. Use with caution. -Current and LTS releases follow [Semantic Versioning](https://semver.org). A +Current and LTS releases follow [semantic versioning](https://semver.org). A member of the Release Team [signs](#release-keys) each Current and LTS release. For more information, see the [Release README](https://github.com/nodejs/Release#readme). @@ -113,7 +113,7 @@ import the keys: $ gpg --keyserver hkps://keys.openpgp.org --recv-keys DD8F2338BAE7501E3DD5AC78C273792F7D83545D ``` -See the bottom of this README for a full script to import active release keys. +See [Release keys](#release-keys) for a script to import active release keys. Next, download the `SHASUMS256.txt.sig` for the release: @@ -159,7 +159,7 @@ For information about the governance of the Node.js project, see * [apapirovski](https://github.com/apapirovski) - **Anatoli Papirovski** <> (he/him) * [BethGriggs](https://github.com/BethGriggs) - - **Beth Griggs** <> (she/her) + **Beth Griggs** <> (she/her) * [BridgeAR](https://github.com/BridgeAR) - **Ruben Bridgewater** <> (he/him) * [ChALkeR](https://github.com/ChALkeR) - @@ -170,6 +170,8 @@ For information about the governance of the Node.js project, see **Danielle Adams** <> (she/her) * [fhinkel](https://github.com/fhinkel) - **Franziska Hinkelmann** <> (she/her) +* [GeoffreyBooth](https://github.com/geoffreybooth) - + **Geoffrey Booth** <> (he/him) * [gireeshpunathil](https://github.com/gireeshpunathil) - **Gireesh Punathil** <> (he/him) * [jasnell](https://github.com/jasnell) - @@ -180,10 +182,6 @@ For information about the governance of the Node.js project, see **Matteo Collina** <> (he/him) * [mhdawson](https://github.com/mhdawson) - **Michael Dawson** <> (he/him) -* [mmarchini](https://github.com/mmarchini) - - **Mary Marchini** <> (she/her) -* [MylesBorins](https://github.com/MylesBorins) - - **Myles Borins** <> (he/him) * [RaisinTen](https://github.com/RaisinTen) - **Darshan Sen** <> (he/him) * [richardlau](https://github.com/richardlau) - @@ -227,8 +225,12 @@ For information about the governance of the Node.js project, see **Isaac Z. Schlueter** <> * [joshgav](https://github.com/joshgav) - **Josh Gavant** <> +* [mmarchini](https://github.com/mmarchini) - + **Mary Marchini** <> (she/her) * [mscdex](https://github.com/mscdex) - **Brian White** <> +* [MylesBorins](https://github.com/MylesBorins) - + **Myles Borins** <> (he/him) * [nebrius](https://github.com/nebrius) - **Bryan Hughes** <> * [ofrobots](https://github.com/ofrobots) - @@ -262,8 +264,6 @@ For information about the governance of the Node.js project, see **Anna Henningsen** <> (she/her) * [aduh95](https://github.com/aduh95) - **Antoine du Hamel** <> (he/him) -* [ak239](https://github.com/ak239) - - **Aleksei Koziatinskii** <> * [antsmartian](https://github.com/antsmartian) - **Anto Aravinth** <> (he/him) * [apapirovski](https://github.com/apapirovski) - @@ -279,19 +279,15 @@ For information about the governance of the Node.js project, see * [benjamingr](https://github.com/benjamingr) - **Benjamin Gruenbaum** <> * [BethGriggs](https://github.com/BethGriggs) - - **Beth Griggs** <> (she/her) + **Beth Griggs** <> (she/her) * [bmeck](https://github.com/bmeck) - **Bradley Farias** <> * [bnb](https://github.com/bnb) - **Tierney Cyren** <> (they/he) * [bnoordhuis](https://github.com/bnoordhuis) - **Ben Noordhuis** <> -* [boneskull](https://github.com/boneskull) - - **Christopher Hiller** <> (he/him) * [BridgeAR](https://github.com/BridgeAR) - **Ruben Bridgewater** <> (he/him) -* [bzoz](https://github.com/bzoz) - - **Bartosz Sosnowski** <> * [cclauss](https://github.com/cclauss) - **Christian Clauss** <> (he/him) * [ChALkeR](https://github.com/ChALkeR) - @@ -318,6 +314,8 @@ For information about the governance of the Node.js project, see **Evan Lucas** <> (he/him) * [fhinkel](https://github.com/fhinkel) - **Franziska Hinkelmann** <> (she/her) +* [F3n67u](https://github.com/F3n67u) - + **Feng Yu** <> (he/him) * [Flarna](https://github.com/Flarna) - **Gerhard Stöbich** <> (he/they) * [gabrielschulhof](https://github.com/gabrielschulhof) - @@ -332,12 +330,8 @@ For information about the governance of the Node.js project, see **Guy Bedford** <> (he/him) * [HarshithaKP](https://github.com/HarshithaKP) - **Harshitha K P** <> (she/her) -* [hashseed](https://github.com/hashseed) - - **Yang Guo** <> (he/him) * [himself65](https://github.com/himself65) - - **Zeyu Yang** <> (he/him) -* [hiroppy](https://github.com/hiroppy) - - **Yuta Hiroto** <> (he/him) + **Zeyu "Alex" Yang** <> (he/him) * [iansu](https://github.com/iansu) - **Ian Sutherland** <> * [indutny](https://github.com/indutny) - @@ -358,22 +352,26 @@ For information about the governance of the Node.js project, see **Juan José Arboleda** <> (he/him) * [JungMinu](https://github.com/JungMinu) - **Minwoo Jung** <> (he/him) +* [kuriyosh](https://github.com/kuriyosh) - + **Yoshiki Kurihara** <> (he/him) * [legendecas](https://github.com/legendecas) - **Chengzhong Wu** <> (he/him) * [Leko](https://github.com/Leko) - **Shingo Inoue** <> (he/him) * [linkgoron](https://github.com/linkgoron) - **Nitzan Uziely** <> +* [LiviaMedeiros](https://github.com/LiviaMedeiros) - + **LiviaMedeiros** <> * [lpinca](https://github.com/lpinca) - **Luigi Pinca** <> (he/him) -* [lundibundi](https://github.com/lundibundi) - - **Denys Otrishko** <> (he/him) * [Lxxyx](https://github.com/Lxxyx) - **Zijian Liu** <> (he/him) * [marsonya](https://github.com/marsonya) - **Akhil Marsonya** <> (he/him) * [mcollina](https://github.com/mcollina) - **Matteo Collina** <> (he/him) +* [meixg](https://github.com/meixg) - + **Xuguang Mei** <> (he/him) * [Mesteery](https://github.com/Mesteery) - **Mestery** <> (he/him) * [mhdawson](https://github.com/mhdawson) - @@ -382,8 +380,6 @@ For information about the governance of the Node.js project, see **Milad Fa** <> (he/him) * [mildsunrise](https://github.com/mildsunrise) - **Alba Mendez** <> (she/her) -* [mmarchini](https://github.com/mmarchini) - - **Mary Marchini** <> (she/her) * [mscdex](https://github.com/mscdex) - **Brian White** <> * [MylesBorins](https://github.com/MylesBorins) - @@ -398,10 +394,10 @@ For information about the governance of the Node.js project, see **Andrey Pechkurov** <> (he/him) * [Qard](https://github.com/Qard) - **Stephen Belanger** <> (he/him) +* [RafaelGSS](https://github.com/RafaelGSS) - + **Rafael Gonzaga** <> (he/him) * [RaisinTen](https://github.com/RaisinTen) - **Darshan Sen** <> (he/him) -* [rexagod](https://github.com/rexagod) - - **Pranshu Srivastava** <> (he/him) * [richardlau](https://github.com/richardlau) - **Richard Lau** <> * [rickyes](https://github.com/rickyes) - @@ -446,8 +442,6 @@ For information about the governance of the Node.js project, see **Khaidi Chu** <> (he/him) * [yashLadha](https://github.com/yashLadha) - **Yash Ladha** <> (he/him) -* [yosuke-furukawa](https://github.com/yosuke-furukawa) - - **Yosuke Furukawa** <> * [ZYSzys](https://github.com/ZYSzys) - **Yongsheng Zhang** <> (he/him) @@ -460,6 +454,8 @@ For information about the governance of the Node.js project, see ### Collaborator emeriti +* [ak239](https://github.com/ak239) - + **Aleksei Koziatinskii** <> * [andrasq](https://github.com/andrasq) - **Andras** <> * [AnnaMag](https://github.com/AnnaMag) - @@ -470,8 +466,12 @@ For information about the governance of the Node.js project, see **Alexey Orlenko** <> (he/him) * [bmeurer](https://github.com/bmeurer) - **Benedikt Meurer** <> +* [boneskull](https://github.com/boneskull) - + **Christopher Hiller** <> (he/him) * [brendanashworth](https://github.com/brendanashworth) - **Brendan Ashworth** <> +* [bzoz](https://github.com/bzoz) - + **Bartosz Sosnowski** <> * [calvinmetcalf](https://github.com/calvinmetcalf) - **Calvin Metcalf** <> * [chrisdickinson](https://github.com/chrisdickinson) - @@ -502,6 +502,10 @@ For information about the governance of the Node.js project, see **Gibson Fahnestock** <> (he/him) * [glentiki](https://github.com/glentiki) - **Glen Keane** <> (he/him) +* [hashseed](https://github.com/hashseed) - + **Yang Guo** <> (he/him) +* [hiroppy](https://github.com/hiroppy) - + **Yuta Hiroto** <> (he/him) * [iarna](https://github.com/iarna) - **Rebecca Turner** <> * [imran-iq](https://github.com/imran-iq) - @@ -534,6 +538,8 @@ For information about the governance of the Node.js project, see **Lance Ball** <> (he/him) * [lucamaraschi](https://github.com/lucamaraschi) - **Luca Maraschi** <> (he/him) +* [lundibundi](https://github.com/lundibundi) - + **Denys Otrishko** <> (he/him) * [lxe](https://github.com/lxe) - **Aleksey Smolenchuk** <> * [maclover7](https://github.com/maclover7) - @@ -548,6 +554,8 @@ For information about the governance of the Node.js project, see **Mikeal Rogers** <> * [misterdjules](https://github.com/misterdjules) - **Julien Gilli** <> +* [mmarchini](https://github.com/mmarchini) - + **Mary Marchini** <> (she/her) * [monsanto](https://github.com/monsanto) - **Christopher Monsanto** <> * [MoonBall](https://github.com/MoonBall) - @@ -576,6 +584,8 @@ For information about the governance of the Node.js project, see **Peter Marshall** <> (he/him) * [refack](https://github.com/refack) - **Refael Ackermann (רפאל פלחי)** <> (he/him/הוא/אתה) +* [rexagod](https://github.com/rexagod) - + **Pranshu Srivastava** <> (he/him) * [rlidwka](https://github.com/rlidwka) - **Alex Kocharin** <> * [rmg](https://github.com/rmg) - @@ -626,6 +636,8 @@ For information about the governance of the Node.js project, see **Yihong Wang** <> * [yorkie](https://github.com/yorkie) - **Yorkie Liu** <> +* [yosuke-furukawa](https://github.com/yosuke-furukawa) - + **Yosuke Furukawa** <> @@ -638,6 +650,10 @@ maintaining the Node.js project. * [Ayase-252](https://github.com/Ayase-252) - **Qingyu Deng** <> +* [daeyeon](https://github.com/daeyeon) - + **Daeyeon Jeong** <> (he/him) +* [F3n67u](https://github.com/F3n67u) - + **Feng Yu** <> (he/him) * [himadriganguly](https://github.com/himadriganguly) - **Himadri Ganguly** <> (he/him) * [iam-frankqiu](https://github.com/iam-frankqiu) - @@ -645,9 +661,11 @@ maintaining the Node.js project. * [marsonya](https://github.com/marsonya) - **Akhil Marsonya** <> (he/him) * [meixg](https://github.com/meixg) - - **Xuguang Mei** <> (he/him) + **Xuguang Mei** <> (he/him) * [Mesteery](https://github.com/Mesteery) - **Mestery** <> (he/him) +* [MoLow](https://github.com/MoLow) - + **Moshe Atlow** <> (he/him) * [PoojaDurgad](https://github.com/PoojaDurgad) - **Pooja Durgad** <> * [RaisinTen](https://github.com/RaisinTen) - @@ -659,7 +677,7 @@ maintaining the Node.js project. Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys): -* **Beth Griggs** <> +* **Beth Griggs** <> `4ED778F539E3634C779C87C6D7062848A1AB005C` * **Bryan English** <> `141F07595B7B3FFE74309A937405533BE57C7D57` @@ -708,8 +726,8 @@ gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B0 gpg --keyserver hkps://keys.openpgp.org --recv-keys B9E2F5981AA6E0CD28160D9FF13993A75599653C ``` -See the section above on [Verifying binaries](#verifying-binaries) for how to -use these keys to verify a downloaded file. +See [Verifying binaries](#verifying-binaries) for how to use these keys to +verify a downloaded file.
diff --git a/SECURITY.md b/SECURITY.md index b22301a1f1d556..57943ce969e20b 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,7 +4,7 @@ Report security bugs in Node.js via [HackerOne](https://hackerone.com/nodejs). -Your report will be acknowledged within 5 days, and you’ll receive a more +Your report will be acknowledged within 5 days, and you'll receive a more detailed response to your report within 10 days indicating the next steps in handling your submission. @@ -49,7 +49,7 @@ Here is the security disclosure policy for Node.js * This process can take some time, especially when coordination is required with maintainers of other projects. Every effort will be made to handle the - bug in as timely a manner as possible; however, it’s important that we follow + bug in as timely a manner as possible; however, it's important that we follow the release process above to ensure that the disclosure is handled in a consistent manner. diff --git a/benchmark/.eslintrc.yaml b/benchmark/.eslintrc.yaml index 6871299adece7b..aa014eec4e3627 100644 --- a/benchmark/.eslintrc.yaml +++ b/benchmark/.eslintrc.yaml @@ -5,5 +5,4 @@ env: es6: true rules: - no-var: error prefer-arrow-callback: error diff --git a/benchmark/common.js b/benchmark/common.js index 88cb8a560f40e1..6ed230ffde4231 100644 --- a/benchmark/common.js +++ b/benchmark/common.js @@ -289,7 +289,15 @@ function formatResult(data) { function sendResult(data) { if (process.send) { // If forked, report by process send - process.send(data); + process.send(data, () => { + if (Object.hasOwn(process.env, 'NODE_RUN_BENCHMARK_FN')) { + // If, for any reason, the process is unable to self close within + // a second after completing, forcefully close it. + setTimeout(() => { + process.exit(0); + }, 5000).unref(); + } + }); } else { // Otherwise report by stdout process.stdout.write(formatResult(data)); diff --git a/benchmark/error/error.js b/benchmark/error/error.js new file mode 100644 index 00000000000000..c856f3e07f6bea --- /dev/null +++ b/benchmark/error/error.js @@ -0,0 +1,14 @@ +'use strict'; + +const common = require('../common.js'); + +const bench = common.createBenchmark(main, { + n: [1e7], +}); + +function main({ n }) { + bench.start(); + for (let i = 0; i < n; ++i) + new Error('test'); + bench.end(n); +} diff --git a/benchmark/error/node-error.js b/benchmark/error/node-error.js new file mode 100644 index 00000000000000..f672522b2d0a65 --- /dev/null +++ b/benchmark/error/node-error.js @@ -0,0 +1,21 @@ +'use strict'; + +const common = require('../common'); + +const bench = common.createBenchmark(main, { + n: [1e7], +}, { + flags: ['--expose-internals'] +}); + +function main({ n }) { + const { + codes: { + ERR_INVALID_STATE, + } + } = require('internal/errors'); + bench.start(); + for (let i = 0; i < n; ++i) + new ERR_INVALID_STATE.TypeError('test'); + bench.end(n); +} diff --git a/benchmark/es/eval.js b/benchmark/es/eval.js new file mode 100644 index 00000000000000..b4c6ee2e0a64c7 --- /dev/null +++ b/benchmark/es/eval.js @@ -0,0 +1,46 @@ +'use strict'; + +const common = require('../common.js'); + +const bench = common.createBenchmark(main, { + method: ['without-sourcemap', 'sourcemap'], + n: [1e6], +}); + +const sourceWithoutSourceMap = ` +'use strict'; +(function() { + let a = 1; + for (let i = 0; i < 1000; i++) { + a++; + } + return a; +})(); +`; +const sourceWithSourceMap = ` +${sourceWithoutSourceMap} +//# sourceMappingURL=https://ci.nodejs.org/405 +`; + +function evalN(n, source) { + bench.start(); + for (let i = 0; i < n; i++) { + eval(source); + } + bench.end(n); +} + +function main({ n, method }) { + switch (method) { + case 'without-sourcemap': + process.setSourceMapsEnabled(false); + evalN(n, sourceWithoutSourceMap); + break; + case 'sourcemap': + process.setSourceMapsEnabled(true); + evalN(n, sourceWithSourceMap); + break; + default: + throw new Error(`Unexpected method "${method}"`); + } +} diff --git a/benchmark/fixtures/require-cachable.js b/benchmark/fixtures/require-cachable.js index 4afda3cda47675..85e3a81f4e9fb0 100644 --- a/benchmark/fixtures/require-cachable.js +++ b/benchmark/fixtures/require-cachable.js @@ -6,5 +6,5 @@ const { } = internalBinding('native_module'); for (const key of canBeRequired) { - require(key); + require(`node:${key}`); } diff --git a/benchmark/perf_hooks/resourcetiming.js b/benchmark/perf_hooks/resourcetiming.js new file mode 100644 index 00000000000000..c71cfeae7ef06b --- /dev/null +++ b/benchmark/perf_hooks/resourcetiming.js @@ -0,0 +1,77 @@ +'use strict'; + +const common = require('../common.js'); + +const { + PerformanceObserver, + performance, +} = require('perf_hooks'); + +function createTimingInfo({ + startTime = 0, + redirectStartTime = 0, + redirectEndTime = 0, + postRedirectStartTime = 0, + finalServiceWorkerStartTime = 0, + finalNetworkRequestStartTime = 0, + finalNetworkResponseStartTime = 0, + endTime = 0, + encodedBodySize = 0, + decodedBodySize = 0, + finalConnectionTimingInfo = null +}) { + if (finalConnectionTimingInfo !== null) { + finalConnectionTimingInfo.domainLookupStartTime = + finalConnectionTimingInfo.domainLookupStartTime || 0; + finalConnectionTimingInfo.domainLookupEndTime = + finalConnectionTimingInfo.domainLookupEndTime || 0; + finalConnectionTimingInfo.connectionStartTime = + finalConnectionTimingInfo.connectionStartTime || 0; + finalConnectionTimingInfo.connectionEndTime = + finalConnectionTimingInfo.connectionEndTime || 0; + finalConnectionTimingInfo.secureConnectionStartTime = + finalConnectionTimingInfo.secureConnectionStartTime || 0; + finalConnectionTimingInfo.ALPNNegotiatedProtocol = + finalConnectionTimingInfo.ALPNNegotiatedProtocol || []; + } + return { + startTime, + redirectStartTime, + redirectEndTime, + postRedirectStartTime, + finalServiceWorkerStartTime, + finalNetworkRequestStartTime, + finalNetworkResponseStartTime, + endTime, + encodedBodySize, + decodedBodySize, + finalConnectionTimingInfo, + }; +} + +const bench = common.createBenchmark(main, { + n: [1e5], + observe: ['resource'], +}); + +function test() { + const timingInfo = createTimingInfo({ finalConnectionTimingInfo: {} }); + performance.markResourceTiming( + timingInfo, + 'http://localhost:8080', + 'fetch', + {}, + '' + ); +} + +function main({ n, observe }) { + const obs = new PerformanceObserver(() => { + bench.end(n); + }); + obs.observe({ entryTypes: [observe], buffered: true }); + + bench.start(); + for (let i = 0; i < 1e5; i++) + test(); +} diff --git a/benchmark/tls/secure-pair.js b/benchmark/tls/secure-pair.js index 76658fc3c42ad7..08be1f7e46f8ba 100644 --- a/benchmark/tls/secure-pair.js +++ b/benchmark/tls/secure-pair.js @@ -25,6 +25,7 @@ function main({ dur, size, securing }) { isServer: true, requestCert: true, rejectUnauthorized: true, + maxVersion: 'TLSv1.2', }; const server = net.createServer(onRedirectConnection); @@ -38,6 +39,7 @@ function main({ dur, size, securing }) { cert: options.cert, isServer: false, rejectUnauthorized: false, + maxVersion: options.maxVersion, }; const network = securing === 'clear' ? net : tls; const conn = network.connect(clientOptions, () => { diff --git a/benchmark/tls/throughput-c2s.js b/benchmark/tls/throughput-c2s.js index f3a96abcbc0174..023b42cbeda685 100644 --- a/benchmark/tls/throughput-c2s.js +++ b/benchmark/tls/throughput-c2s.js @@ -33,7 +33,8 @@ function main({ dur, type, size }) { key: fixtures.readKey('rsa_private.pem'), cert: fixtures.readKey('rsa_cert.crt'), ca: fixtures.readKey('rsa_ca.crt'), - ciphers: 'AES256-GCM-SHA384' + ciphers: 'AES256-GCM-SHA384', + maxVersion: 'TLSv1.2', }; const server = tls.createServer(options, onConnection); diff --git a/benchmark/tls/throughput-s2c.js b/benchmark/tls/throughput-s2c.js index a505a719d30884..d3018cf851db75 100644 --- a/benchmark/tls/throughput-s2c.js +++ b/benchmark/tls/throughput-s2c.js @@ -40,7 +40,8 @@ function main({ dur, type, sendchunklen, recvbuflen, recvbufgenfn }) { key: fixtures.readKey('rsa_private.pem'), cert: fixtures.readKey('rsa_cert.crt'), ca: fixtures.readKey('rsa_ca.crt'), - ciphers: 'AES256-GCM-SHA384' + ciphers: 'AES256-GCM-SHA384', + maxVersion: 'TLSv1.2', }; let socketOpts; diff --git a/benchmark/tls/tls-connect.js b/benchmark/tls/tls-connect.js index 3fc2ecb614978b..db50306485aec3 100644 --- a/benchmark/tls/tls-connect.js +++ b/benchmark/tls/tls-connect.js @@ -21,7 +21,8 @@ function main(conf) { key: fixtures.readKey('rsa_private.pem'), cert: fixtures.readKey('rsa_cert.crt'), ca: fixtures.readKey('rsa_ca.crt'), - ciphers: 'AES256-GCM-SHA384' + ciphers: 'AES256-GCM-SHA384', + maxVersion: 'TLSv1.2', }; const server = tls.createServer(options, onConnection); diff --git a/common.gypi b/common.gypi index 3cfed562577978..d68a4c9eafacfa 100644 --- a/common.gypi +++ b/common.gypi @@ -36,7 +36,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.21', + 'v8_embedder_string': '-node.22', ##### V8 defaults for Node.js ##### @@ -286,7 +286,11 @@ 'VCCLCompilerTool': { 'AdditionalOptions': ['/Zc:__cplusplus'], 'BufferSecurityCheck': 'true', - 'DebugInformationFormat': 1, # /Z7 embed info in .obj files + 'target_conditions': [ + ['_toolset=="target"', { + 'DebugInformationFormat': 1 # /Z7 embed info in .obj files + }], + ], 'ExceptionHandling': 0, # /EHsc 'MultiProcessorCompilation': 'true', 'StringPooling': 'true', # pool string literals diff --git a/configure.py b/configure.py index fed2688c792486..1a7023dece5886 100755 --- a/configure.py +++ b/configure.py @@ -798,6 +798,13 @@ default=False, help='node will load builtin modules from disk instead of from binary') +parser.add_argument('--node-snapshot-main', + action='store', + dest='node_snapshot_main', + default=None, + help='Run a file when building the embedded snapshot. Currently ' + + 'experimental.') + # Create compile_commands.json in out/Debug and out/Release. parser.add_argument('-C', action='store_true', @@ -1124,6 +1131,7 @@ def host_arch_win(): 'x86' : 'ia32', 'arm' : 'arm', 'mips' : 'mips', + 'ARM64' : 'arm64' } return matchup.get(arch, 'ia32') @@ -1225,6 +1233,18 @@ def configure_node(o): o['variables']['want_separate_host_toolset'] = int(cross_compiling) + if options.node_snapshot_main is not None: + if options.shared: + # This should be possible to fix, but we will need to refactor the + # libnode target to avoid building it twice. + error('--node-snapshot-main is incompatible with --shared') + if options.without_node_snapshot: + error('--node-snapshot-main is incompatible with ' + + '--without-node-snapshot') + if cross_compiling: + error('--node-snapshot-main is incompatible with cross compilation') + o['variables']['node_snapshot_main'] = options.node_snapshot_main + if options.without_node_snapshot or options.node_builtin_modules_path: o['variables']['node_use_node_snapshot'] = 'false' else: @@ -1615,7 +1635,7 @@ def icu_download(path): # write an empty file to start with write(icu_config_name, do_not_edit + - pprint.pformat(icu_config, indent=2) + '\n') + pprint.pformat(icu_config, indent=2, width=1024) + '\n') # always set icu_small, node.gyp depends on it being defined. o['variables']['icu_small'] = b(False) @@ -1642,7 +1662,7 @@ def icu_download(path): o['variables']['icu_small'] = b(True) locs = set(options.with_icu_locales.split(',')) locs.add('root') # must have root - o['variables']['icu_locales'] = ','.join(str(loc) for loc in locs) + o['variables']['icu_locales'] = ','.join(str(loc) for loc in sorted(locs)) # We will check a bit later if we can use the canned deps/icu-small o['variables']['icu_default_data'] = options.with_icu_default_data_dir or '' elif with_intl == 'full-icu': @@ -1867,7 +1887,7 @@ def icu_download(path): # write updated icu_config.gypi with a bunch of paths write(icu_config_name, do_not_edit + - pprint.pformat(icu_config, indent=2) + '\n') + pprint.pformat(icu_config, indent=2, width=1024) + '\n') return # end of configure_intl def configure_inspector(o): @@ -2005,7 +2025,7 @@ def make_bin_override(): print_verbose(output) write('config.gypi', do_not_edit + - pprint.pformat(output, indent=2) + '\n') + pprint.pformat(output, indent=2, width=1024) + '\n') write('config.status', '#!/bin/sh\nset -x\nexec ./configure ' + ' '.join([pipes.quote(arg) for arg in original_argv]) + '\n') diff --git a/deps/acorn/acorn/CHANGELOG.md b/deps/acorn/acorn/CHANGELOG.md index 278fa50c9d83b1..d19b5f1bad0b93 100644 --- a/deps/acorn/acorn/CHANGELOG.md +++ b/deps/acorn/acorn/CHANGELOG.md @@ -1,3 +1,17 @@ +## 8.7.0 (2021-12-27) + +### New features + +Support quoted export names. + +Upgrade to Unicode 14. + +Add support for Unicode 13 properties in regular expressions. + +### Bug fixes + +Use a loop to find line breaks, because the existing regexp search would overrun the end of the searched range and waste a lot of time in minified code. + ## 8.6.0 (2021-11-18) ### Bug fixes diff --git a/deps/acorn/acorn/dist/acorn.js b/deps/acorn/acorn/dist/acorn.js index 5d9b521ac320bd..2d279e9fa8417d 100644 --- a/deps/acorn/acorn/dist/acorn.js +++ b/deps/acorn/acorn/dist/acorn.js @@ -33,8 +33,8 @@ // are only applied when a character is found to actually have a // code point above 128. // Generated by `bin/generate-identifier-regex.js`. - var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08c7\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\u9ffc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7ca\ua7f5-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; - var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf\u1ac0\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; + var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; + var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); @@ -48,10 +48,10 @@ // generated by bin/generate-identifier-regex.js // eslint-disable-next-line comma-spacing - var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,107,20,28,22,13,52,76,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,230,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,35,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,190,0,80,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8952,286,50,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,2357,44,11,6,17,0,370,43,1301,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42717,35,4148,12,221,3,5761,15,7472,3104,541,1507,4938]; + var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,190,0,80,921,103,110,18,195,2637,96,16,1070,4050,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,46,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,482,44,11,6,17,0,322,29,19,43,1269,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4152,8,221,3,5761,15,7472,3104,541,1507,4938]; // eslint-disable-next-line comma-spacing - var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,154,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,135,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,419,13,1495,6,110,6,6,9,4759,9,787719,239]; + var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,154,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,357,0,62,13,1495,6,110,6,6,9,4759,9,787719,239]; // This has a complexity linear to the value of the code. The // assumption is that looking up astral identifier characters is @@ -256,6 +256,17 @@ return code === 10 || code === 13 || code === 0x2028 || code === 0x2029 } + function nextLineBreak(code, from, end) { + if ( end === void 0 ) end = code.length; + + for (var i = from; i < end; i++) { + var next = code.charCodeAt(i); + if (isNewLine(next)) + { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 } + } + return -1 + } + var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/; var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; @@ -264,11 +275,9 @@ var hasOwnProperty = ref.hasOwnProperty; var toString = ref.toString; - // Checks if an object has a property. - - function has(obj, propName) { - return hasOwnProperty.call(obj, propName) - } + var hasOwn = Object.hasOwn || (function (obj, propName) { return ( + hasOwnProperty.call(obj, propName) + ); }); var isArray = Array.isArray || (function (obj) { return ( toString.call(obj) === "[object Array]" @@ -278,6 +287,8 @@ return new RegExp("^(?:" + words.replace(/ /g, "|") + ")$") } + var loneSurrogate = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/; + // These are used when `options.locations` is on, for the // `startLoc` and `endLoc` properties. @@ -304,14 +315,10 @@ function getLineInfo(input, offset) { for (var line = 1, cur = 0;;) { - lineBreakG.lastIndex = cur; - var match = lineBreakG.exec(input); - if (match && match.index < offset) { - ++line; - cur = match.index + match[0].length; - } else { - return new Position(line, offset - cur) - } + var nextBreak = nextLineBreak(input, cur, offset); + if (nextBreak < 0) { return new Position(line, offset - cur) } + ++line; + cur = nextBreak; } } @@ -417,7 +424,7 @@ var options = {}; for (var opt in defaultOptions) - { options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]; } + { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; } if (options.ecmaVersion === "latest") { options.ecmaVersion = 1e8; @@ -1583,7 +1590,7 @@ var parent = len === 0 ? null : this.privateNameStack[len - 1]; for (var i = 0; i < used.length; ++i) { var id = used[i]; - if (!has(declared, id.name)) { + if (!hasOwn(declared, id.name)) { if (parent) { parent.used.push(id); } else { @@ -1636,7 +1643,7 @@ if (this.eat(types$1.star)) { if (this.options.ecmaVersion >= 11) { if (this.eatContextual("as")) { - node.exported = this.parseIdent(true); + node.exported = this.parseModuleExportName(); this.checkExport(exports, node.exported.name, this.lastTokStart); } else { node.exported = null; @@ -1688,6 +1695,10 @@ this.checkUnreserved(spec.local); // check if export is defined this.checkLocalExport(spec.local); + + if (spec.local.type === "Literal") { + this.raise(spec.local.start, "A string literal cannot be used as an exported binding without `from`."); + } } node.source = null; @@ -1699,7 +1710,7 @@ pp$8.checkExport = function(exports, name, pos) { if (!exports) { return } - if (has(exports, name)) + if (hasOwn(exports, name)) { this.raiseRecoverable(pos, "Duplicate export '" + name + "'"); } exports[name] = true; }; @@ -1763,9 +1774,13 @@ } else { first = false; } var node = this.startNode(); - node.local = this.parseIdent(true); - node.exported = this.eatContextual("as") ? this.parseIdent(true) : node.local; - this.checkExport(exports, node.exported.name, node.exported.start); + node.local = this.parseModuleExportName(); + node.exported = this.eatContextual("as") ? this.parseModuleExportName() : node.local; + this.checkExport( + exports, + node.exported[node.exported.type === "Identifier" ? "name" : "value"], + node.exported.start + ); nodes.push(this.finishNode(node, "ExportSpecifier")); } return nodes @@ -1817,7 +1832,7 @@ } else { first = false; } var node$2 = this.startNode(); - node$2.imported = this.parseIdent(true); + node$2.imported = this.parseModuleExportName(); if (this.eatContextual("as")) { node$2.local = this.parseIdent(); } else { @@ -1830,6 +1845,17 @@ return nodes }; + pp$8.parseModuleExportName = function() { + if (this.options.ecmaVersion >= 13 && this.type === types$1.string) { + var stringLiteral = this.parseLiteral(this.value); + if (loneSurrogate.test(stringLiteral.value)) { + this.raise(stringLiteral.start, "An export name cannot include a lone surrogate."); + } + return stringLiteral + } + return this.parseIdent(true) + }; + // Set `ExpressionStatement#directive` property for directive prologues. pp$8.adaptDirectivePrologue = function(statements) { for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) { @@ -2103,7 +2129,7 @@ if (bindingType === BIND_LEXICAL && expr.name === "let") { this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"); } if (checkClashes) { - if (has(checkClashes, expr.name)) + if (hasOwn(checkClashes, expr.name)) { this.raiseRecoverable(expr.start, "Argument name clash"); } checkClashes[expr.name] = true; } @@ -3598,26 +3624,30 @@ var ecma10BinaryProperties = ecma9BinaryProperties + " Extended_Pictographic"; var ecma11BinaryProperties = ecma10BinaryProperties; var ecma12BinaryProperties = ecma11BinaryProperties + " EBase EComp EMod EPres ExtPict"; + var ecma13BinaryProperties = ecma12BinaryProperties; var unicodeBinaryProperties = { 9: ecma9BinaryProperties, 10: ecma10BinaryProperties, 11: ecma11BinaryProperties, - 12: ecma12BinaryProperties + 12: ecma12BinaryProperties, + 13: ecma13BinaryProperties }; // #table-unicode-general-category-values var unicodeGeneralCategoryValues = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu"; // #table-unicode-script-values - var ecma9ScriptValues = "Adlam Adlm Ahom Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb"; + var ecma9ScriptValues = "Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb"; var ecma10ScriptValues = ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd"; var ecma11ScriptValues = ecma10ScriptValues + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho"; var ecma12ScriptValues = ecma11ScriptValues + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi"; + var ecma13ScriptValues = ecma12ScriptValues + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith"; var unicodeScriptValues = { 9: ecma9ScriptValues, 10: ecma10ScriptValues, 11: ecma11ScriptValues, - 12: ecma12ScriptValues + 12: ecma12ScriptValues, + 13: ecma13ScriptValues }; var data = {}; @@ -3635,17 +3665,19 @@ d.nonBinary.sc = d.nonBinary.Script; d.nonBinary.scx = d.nonBinary.Script_Extensions; } - buildUnicodeData(9); - buildUnicodeData(10); - buildUnicodeData(11); - buildUnicodeData(12); + + for (var i = 0, list = [9, 10, 11, 12, 13]; i < list.length; i += 1) { + var ecmaVersion = list[i]; + + buildUnicodeData(ecmaVersion); + } var pp$1 = Parser.prototype; var RegExpValidationState = function RegExpValidationState(parser) { this.parser = parser; this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : ""); - this.unicodeProperties = data[parser.options.ecmaVersion >= 12 ? 12 : parser.options.ecmaVersion]; + this.unicodeProperties = data[parser.options.ecmaVersion >= 13 ? 13 : parser.options.ecmaVersion]; this.source = ""; this.flags = ""; this.start = 0; @@ -4444,7 +4476,7 @@ return false }; pp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) { - if (!has(state.unicodeProperties.nonBinary, name)) + if (!hasOwn(state.unicodeProperties.nonBinary, name)) { state.raise("Invalid property name"); } if (!state.unicodeProperties.nonBinary[name].test(value)) { state.raise("Invalid property value"); } @@ -4796,11 +4828,9 @@ if (end === -1) { this.raise(this.pos - 2, "Unterminated comment"); } this.pos = end + 2; if (this.options.locations) { - lineBreakG.lastIndex = start; - var match; - while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) { + for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) { ++this.curLine; - this.lineStart = match.index + match[0].length; + pos = this.lineStart = nextBreak; } } if (this.options.onComment) @@ -5511,7 +5541,7 @@ // Acorn is a tiny, fast JavaScript parser written in JavaScript. - var version = "8.6.0"; + var version = "8.7.0"; Parser.acorn = { Parser: Parser, diff --git a/deps/acorn/acorn/dist/acorn.mjs b/deps/acorn/acorn/dist/acorn.mjs index df5b26e5dd0f74..e99e9b30e1b635 100644 --- a/deps/acorn/acorn/dist/acorn.mjs +++ b/deps/acorn/acorn/dist/acorn.mjs @@ -27,8 +27,8 @@ var keywordRelationalOperator = /^in(stanceof)?$/; // are only applied when a character is found to actually have a // code point above 128. // Generated by `bin/generate-identifier-regex.js`. -var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08c7\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\u9ffc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7ca\ua7f5-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; -var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf\u1ac0\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; +var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); @@ -42,10 +42,10 @@ nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; // generated by bin/generate-identifier-regex.js // eslint-disable-next-line comma-spacing -var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,107,20,28,22,13,52,76,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,230,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,35,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,190,0,80,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8952,286,50,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,2357,44,11,6,17,0,370,43,1301,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42717,35,4148,12,221,3,5761,15,7472,3104,541,1507,4938]; +var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,190,0,80,921,103,110,18,195,2637,96,16,1070,4050,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,46,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,482,44,11,6,17,0,322,29,19,43,1269,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4152,8,221,3,5761,15,7472,3104,541,1507,4938]; // eslint-disable-next-line comma-spacing -var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,154,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,135,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,419,13,1495,6,110,6,6,9,4759,9,787719,239]; +var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,154,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,357,0,62,13,1495,6,110,6,6,9,4759,9,787719,239]; // This has a complexity linear to the value of the code. The // assumption is that looking up astral identifier characters is @@ -250,6 +250,17 @@ function isNewLine(code) { return code === 10 || code === 13 || code === 0x2028 || code === 0x2029 } +function nextLineBreak(code, from, end) { + if ( end === void 0 ) end = code.length; + + for (var i = from; i < end; i++) { + var next = code.charCodeAt(i); + if (isNewLine(next)) + { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 } + } + return -1 +} + var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/; var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; @@ -258,11 +269,9 @@ var ref = Object.prototype; var hasOwnProperty = ref.hasOwnProperty; var toString = ref.toString; -// Checks if an object has a property. - -function has(obj, propName) { - return hasOwnProperty.call(obj, propName) -} +var hasOwn = Object.hasOwn || (function (obj, propName) { return ( + hasOwnProperty.call(obj, propName) +); }); var isArray = Array.isArray || (function (obj) { return ( toString.call(obj) === "[object Array]" @@ -272,6 +281,8 @@ function wordsRegexp(words) { return new RegExp("^(?:" + words.replace(/ /g, "|") + ")$") } +var loneSurrogate = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/; + // These are used when `options.locations` is on, for the // `startLoc` and `endLoc` properties. @@ -298,14 +309,10 @@ var SourceLocation = function SourceLocation(p, start, end) { function getLineInfo(input, offset) { for (var line = 1, cur = 0;;) { - lineBreakG.lastIndex = cur; - var match = lineBreakG.exec(input); - if (match && match.index < offset) { - ++line; - cur = match.index + match[0].length; - } else { - return new Position(line, offset - cur) - } + var nextBreak = nextLineBreak(input, cur, offset); + if (nextBreak < 0) { return new Position(line, offset - cur) } + ++line; + cur = nextBreak; } } @@ -411,7 +418,7 @@ function getOptions(opts) { var options = {}; for (var opt in defaultOptions) - { options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]; } + { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; } if (options.ecmaVersion === "latest") { options.ecmaVersion = 1e8; @@ -1577,7 +1584,7 @@ pp$8.exitClassBody = function() { var parent = len === 0 ? null : this.privateNameStack[len - 1]; for (var i = 0; i < used.length; ++i) { var id = used[i]; - if (!has(declared, id.name)) { + if (!hasOwn(declared, id.name)) { if (parent) { parent.used.push(id); } else { @@ -1630,7 +1637,7 @@ pp$8.parseExport = function(node, exports) { if (this.eat(types$1.star)) { if (this.options.ecmaVersion >= 11) { if (this.eatContextual("as")) { - node.exported = this.parseIdent(true); + node.exported = this.parseModuleExportName(); this.checkExport(exports, node.exported.name, this.lastTokStart); } else { node.exported = null; @@ -1682,6 +1689,10 @@ pp$8.parseExport = function(node, exports) { this.checkUnreserved(spec.local); // check if export is defined this.checkLocalExport(spec.local); + + if (spec.local.type === "Literal") { + this.raise(spec.local.start, "A string literal cannot be used as an exported binding without `from`."); + } } node.source = null; @@ -1693,7 +1704,7 @@ pp$8.parseExport = function(node, exports) { pp$8.checkExport = function(exports, name, pos) { if (!exports) { return } - if (has(exports, name)) + if (hasOwn(exports, name)) { this.raiseRecoverable(pos, "Duplicate export '" + name + "'"); } exports[name] = true; }; @@ -1757,9 +1768,13 @@ pp$8.parseExportSpecifiers = function(exports) { } else { first = false; } var node = this.startNode(); - node.local = this.parseIdent(true); - node.exported = this.eatContextual("as") ? this.parseIdent(true) : node.local; - this.checkExport(exports, node.exported.name, node.exported.start); + node.local = this.parseModuleExportName(); + node.exported = this.eatContextual("as") ? this.parseModuleExportName() : node.local; + this.checkExport( + exports, + node.exported[node.exported.type === "Identifier" ? "name" : "value"], + node.exported.start + ); nodes.push(this.finishNode(node, "ExportSpecifier")); } return nodes @@ -1811,7 +1826,7 @@ pp$8.parseImportSpecifiers = function() { } else { first = false; } var node$2 = this.startNode(); - node$2.imported = this.parseIdent(true); + node$2.imported = this.parseModuleExportName(); if (this.eatContextual("as")) { node$2.local = this.parseIdent(); } else { @@ -1824,6 +1839,17 @@ pp$8.parseImportSpecifiers = function() { return nodes }; +pp$8.parseModuleExportName = function() { + if (this.options.ecmaVersion >= 13 && this.type === types$1.string) { + var stringLiteral = this.parseLiteral(this.value); + if (loneSurrogate.test(stringLiteral.value)) { + this.raise(stringLiteral.start, "An export name cannot include a lone surrogate."); + } + return stringLiteral + } + return this.parseIdent(true) +}; + // Set `ExpressionStatement#directive` property for directive prologues. pp$8.adaptDirectivePrologue = function(statements) { for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) { @@ -2097,7 +2123,7 @@ pp$7.checkLValSimple = function(expr, bindingType, checkClashes) { if (bindingType === BIND_LEXICAL && expr.name === "let") { this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"); } if (checkClashes) { - if (has(checkClashes, expr.name)) + if (hasOwn(checkClashes, expr.name)) { this.raiseRecoverable(expr.start, "Argument name clash"); } checkClashes[expr.name] = true; } @@ -3592,26 +3618,30 @@ var ecma9BinaryProperties = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Ass var ecma10BinaryProperties = ecma9BinaryProperties + " Extended_Pictographic"; var ecma11BinaryProperties = ecma10BinaryProperties; var ecma12BinaryProperties = ecma11BinaryProperties + " EBase EComp EMod EPres ExtPict"; +var ecma13BinaryProperties = ecma12BinaryProperties; var unicodeBinaryProperties = { 9: ecma9BinaryProperties, 10: ecma10BinaryProperties, 11: ecma11BinaryProperties, - 12: ecma12BinaryProperties + 12: ecma12BinaryProperties, + 13: ecma13BinaryProperties }; // #table-unicode-general-category-values var unicodeGeneralCategoryValues = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu"; // #table-unicode-script-values -var ecma9ScriptValues = "Adlam Adlm Ahom Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb"; +var ecma9ScriptValues = "Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb"; var ecma10ScriptValues = ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd"; var ecma11ScriptValues = ecma10ScriptValues + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho"; var ecma12ScriptValues = ecma11ScriptValues + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi"; +var ecma13ScriptValues = ecma12ScriptValues + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith"; var unicodeScriptValues = { 9: ecma9ScriptValues, 10: ecma10ScriptValues, 11: ecma11ScriptValues, - 12: ecma12ScriptValues + 12: ecma12ScriptValues, + 13: ecma13ScriptValues }; var data = {}; @@ -3629,17 +3659,19 @@ function buildUnicodeData(ecmaVersion) { d.nonBinary.sc = d.nonBinary.Script; d.nonBinary.scx = d.nonBinary.Script_Extensions; } -buildUnicodeData(9); -buildUnicodeData(10); -buildUnicodeData(11); -buildUnicodeData(12); + +for (var i = 0, list = [9, 10, 11, 12, 13]; i < list.length; i += 1) { + var ecmaVersion = list[i]; + + buildUnicodeData(ecmaVersion); +} var pp$1 = Parser.prototype; var RegExpValidationState = function RegExpValidationState(parser) { this.parser = parser; this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : ""); - this.unicodeProperties = data[parser.options.ecmaVersion >= 12 ? 12 : parser.options.ecmaVersion]; + this.unicodeProperties = data[parser.options.ecmaVersion >= 13 ? 13 : parser.options.ecmaVersion]; this.source = ""; this.flags = ""; this.start = 0; @@ -4438,7 +4470,7 @@ pp$1.regexp_eatUnicodePropertyValueExpression = function(state) { return false }; pp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) { - if (!has(state.unicodeProperties.nonBinary, name)) + if (!hasOwn(state.unicodeProperties.nonBinary, name)) { state.raise("Invalid property name"); } if (!state.unicodeProperties.nonBinary[name].test(value)) { state.raise("Invalid property value"); } @@ -4790,11 +4822,9 @@ pp.skipBlockComment = function() { if (end === -1) { this.raise(this.pos - 2, "Unterminated comment"); } this.pos = end + 2; if (this.options.locations) { - lineBreakG.lastIndex = start; - var match; - while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) { + for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) { ++this.curLine; - this.lineStart = match.index + match[0].length; + pos = this.lineStart = nextBreak; } } if (this.options.onComment) @@ -5505,7 +5535,7 @@ pp.readWord = function() { // Acorn is a tiny, fast JavaScript parser written in JavaScript. -var version = "8.6.0"; +var version = "8.7.0"; Parser.acorn = { Parser: Parser, diff --git a/deps/acorn/acorn/dist/bin.js b/deps/acorn/acorn/dist/bin.js index 675cab9ac89cae..8e645009450b64 100644 --- a/deps/acorn/acorn/dist/bin.js +++ b/deps/acorn/acorn/dist/bin.js @@ -30,7 +30,7 @@ var options = {}; function help(status) { var print = (status === 0) ? console.log : console.error; print("usage: " + path.basename(process.argv[1]) + " [--ecma3|--ecma5|--ecma6|--ecma7|--ecma8|--ecma9|...|--ecma2015|--ecma2016|--ecma2017|--ecma2018|...]"); - print(" [--tokenize] [--locations] [---allow-hash-bang] [--allow-await-outside-function] [--compact] [--silent] [--module] [--help] [--] [...]"); + print(" [--tokenize] [--locations] [--allow-hash-bang] [--allow-await-outside-function] [--compact] [--silent] [--module] [--help] [--] [...]"); process.exit(status); } diff --git a/deps/acorn/acorn/package.json b/deps/acorn/acorn/package.json index e242a235e00c84..8e2edc65cff81c 100644 --- a/deps/acorn/acorn/package.json +++ b/deps/acorn/acorn/package.json @@ -16,7 +16,7 @@ ], "./package.json": "./package.json" }, - "version": "8.6.0", + "version": "8.7.0", "engines": {"node": ">=0.4.0"}, "maintainers": [ { @@ -40,7 +40,7 @@ }, "license": "MIT", "scripts": { - "prepare": "cd ..; npm run build:main && npm run build:bin" + "prepare": "cd ..; npm run build:main" }, "bin": {"acorn": "./bin/acorn"} } diff --git a/deps/corepack/CHANGELOG.md b/deps/corepack/CHANGELOG.md new file mode 100644 index 00000000000000..56b4367692fa70 --- /dev/null +++ b/deps/corepack/CHANGELOG.md @@ -0,0 +1,60 @@ +# Changelog + +## [0.12.1](https://github.com/nodejs/corepack/compare/v0.12.0...v0.12.1) (2022-07-21) + + +### Bug Fixes + +* **doc:** update DESIGN.md s/engines.pm/packageManager/ ([#141](https://github.com/nodejs/corepack/issues/141)) ([d6039c5](https://github.com/nodejs/corepack/commit/d6039c5b16cdddb33069b9aa864854ed16d17e4e)) +* update package manager versions ([#146](https://github.com/nodejs/corepack/issues/146)) ([fdb187a](https://github.com/nodejs/corepack/commit/fdb187a640de77df9b3688623ba510bdafda8702)) + +## [0.12.0](https://github.com/nodejs/corepack/compare/v0.11.2...v0.12.0) (2022-07-09) + + +### Features + +* add support for hash checking ([#133](https://github.com/nodejs/corepack/issues/133)) ([6a480a7](https://github.com/nodejs/corepack/commit/6a480a72c2e9fc6725f2ab6dfaf4c52e4d3d2ade)) +* add support for tags and ranges in `prepare` command ([#136](https://github.com/nodejs/corepack/issues/136)) ([29da06c](https://github.com/nodejs/corepack/commit/29da06c515e917829e5ffbedb34284a6597e9d56)) +* update package manager versions ([#129](https://github.com/nodejs/corepack/issues/129)) ([2470f58](https://github.com/nodejs/corepack/commit/2470f58b74491a1301221df643c55be5adf1d349)) +* update package manager versions ([#139](https://github.com/nodejs/corepack/issues/139)) ([cd0dcad](https://github.com/nodejs/corepack/commit/cd0dcade85621199048d7ca30dfc3efce11e1f37)) + + +### Bug Fixes + +* streamline the cache exploration ([#135](https://github.com/nodejs/corepack/issues/135)) ([185da44](https://github.com/nodejs/corepack/commit/185da44078fd1ca34aec2e4e6f8a52ecffcf3c11)) + +## [0.11.2](https://github.com/nodejs/corepack/compare/v0.11.1...v0.11.2) (2022-06-13) + +### Bug Fixes + +* only set bins on pack ([#127](https://github.com/nodejs/corepack/issues/127)) ([7ae489a](https://github.com/nodejs/corepack/commit/7ae489a86c3fe584b9915f4ec57deb7c316c1a25)) + +## [0.11.1](https://github.com/nodejs/corepack/compare/v0.11.0...v0.11.1) (2022-06-12) + + +### Bug Fixes + +* **ci:** YAML formatting in publish workflow ([#124](https://github.com/nodejs/corepack/issues/124)) ([01c7d63](https://github.com/nodejs/corepack/commit/01c7d638b04a1340b3939a7985e24b586e344995)) + +## 0.11.0 (2022-06-12) + + +### Features + +* auto setup proxy for http requests ([#69](https://github.com/nodejs/corepack/issues/69)) ([876ce02](https://github.com/nodejs/corepack/commit/876ce02fe7385ea5bc896b2dc93d1fb320361c64)) + + +### Bug Fixes + +* avoid symlinks to work on Windows ([#13](https://github.com/nodejs/corepack/issues/13)) ([b56df30](https://github.com/nodejs/corepack/commit/b56df30796da9c7cb0ba5e1bb7152c81582abba6)) +* avoid using eval to get the corepack version ([#45](https://github.com/nodejs/corepack/issues/45)) ([78d94eb](https://github.com/nodejs/corepack/commit/78d94eb297444d7558e8b4395f0108c97117f8ab)) +* bin file name for pnpm >=6.0 ([#35](https://github.com/nodejs/corepack/issues/35)) ([8ff2499](https://github.com/nodejs/corepack/commit/8ff2499e831c8cf2dea604ea985d830afc8a479e)) +* generate cmd shim files ([a900b4d](https://github.com/nodejs/corepack/commit/a900b4db12fcd4d99c0a4d011b426cdc6485d323)) +* handle package managers with a bin array correctly ([#20](https://github.com/nodejs/corepack/issues/20)) ([1836d17](https://github.com/nodejs/corepack/commit/1836d17b4fc4c0164df2fe1ccaca4d2f16f6f2d1)) +* handle parallel installs ([#84](https://github.com/nodejs/corepack/issues/84)) ([5cfc6c9](https://github.com/nodejs/corepack/commit/5cfc6c9df0dbec8e4de4324be37aa0a54a300552)) +* handle prereleases ([#32](https://github.com/nodejs/corepack/issues/32)) ([2a46b6d](https://github.com/nodejs/corepack/commit/2a46b6d13adae139141012254ef670d6ddcb5d11)) + + +### Performance Improvements + +* load binaries in the same process ([#97](https://github.com/nodejs/corepack/issues/97)) ([5ff6e82](https://github.com/nodejs/corepack/commit/5ff6e82028e58448ba5ba986854b61ecdc69885b)) diff --git a/deps/corepack/README.md b/deps/corepack/README.md index d58811c4cdaaee..6fc940814cdd4e 100644 --- a/deps/corepack/README.md +++ b/deps/corepack/README.md @@ -8,7 +8,7 @@ Corepack is a zero-runtime-dependency Node.js script that acts as a bridge betwe ### Default Installs -Corepack is distributed by default with Node.js 16.9, but is opt-in for the time being. Run `corepack enable` to install the required shims. +Corepack is distributed by default with Node.js 14.19.0 and 16.9.0, but is opt-in for the time being. Run `corepack enable` to install the required shims. ### Manual Installs @@ -104,8 +104,14 @@ This command will retrieve the given package manager from the specified archive ## Environment Variables +- `COREPACK_ENABLE_NETWORK` can be set to `0` to prevent Corepack from accessing the network (in which case you'll be responsible for hydrating the package manager versions that will be required for the projects you'll run, using `corepack hydrate`). + +- `COREPACK_HOME` can be set in order to define where Corepack should install the package managers. By default it is set to `$HOME/.node/corepack`. + - `COREPACK_ROOT` has no functional impact on Corepack itself; it's automatically being set in your environment by Corepack when it shells out to the underlying package managers, so that they can feature-detect its presence (useful for commands like `yarn init`). +- `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` are supported through [`node-proxy-agent`](https://github.com/TooTallNate/node-proxy-agent). + ## Contributing If you want to build corepack yourself, you can build the project like this: diff --git a/deps/corepack/dist/corepack.js b/deps/corepack/dist/corepack.js index f540b108b0a305..c7dbc6fa9f1a9c 100755 --- a/deps/corepack/dist/corepack.js +++ b/deps/corepack/dist/corepack.js @@ -3,14616 +3,16968 @@ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/Cli.js": -/*!*********************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/Cli.js ***! - \*********************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/@zkochan-cmd-shim-npm-5.3.0-8f73631a81-9.zip/node_modules/@zkochan/cmd-shim/index.js": +/*!***********************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/@zkochan-cmd-shim-npm-5.3.0-8f73631a81-9.zip/node_modules/@zkochan/cmd-shim/index.js ***! + \***********************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); - -var constants = __webpack_require__(/*! ../constants.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/constants.js"); -var Command = __webpack_require__(/*! ./Command.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/Command.js"); -var core = __webpack_require__(/*! ../core.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/core.js"); -var format = __webpack_require__(/*! ../format.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/format.js"); -var HelpCommand = __webpack_require__(/*! ./HelpCommand.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/HelpCommand.js"); - -const errorCommandSymbol = Symbol(`clipanion/errorCommand`); -function getDefaultColorSettings() { - if (process.env.FORCE_COLOR === `0`) - return false; - if (process.env.FORCE_COLOR === `1`) - return true; - if (typeof process.stdout !== `undefined` && process.stdout.isTTY) - return true; - return false; +cmdShim.ifExists = cmdShimIfExists; +const util_1 = __webpack_require__(/*! util */ "util"); +const path = __webpack_require__(/*! path */ "path"); +const isWindows = __webpack_require__(/*! is-windows */ "../../../.yarn/berry/cache/is-windows-npm-1.0.2-898cd6f3d7-9.zip/node_modules/is-windows/index.js"); +const CMD_EXTENSION = __webpack_require__(/*! cmd-extension */ "../../../.yarn/berry/cache/cmd-extension-npm-1.0.2-11aa204c4b-9.zip/node_modules/cmd-extension/index.js"); +const shebangExpr = /^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/; +const DEFAULT_OPTIONS = { + // Create PowerShell file by default if the option hasn't been specified + createPwshFile: true, + createCmdFile: isWindows(), + fs: __webpack_require__(/*! fs */ "fs") +}; +/** + * Map from extensions of files that this module is frequently used for to their runtime. + * @type {Map} + */ +const extensionToProgramMap = new Map([ + ['.js', 'node'], + ['.cjs', 'node'], + ['.mjs', 'node'], + ['.cmd', 'cmd'], + ['.bat', 'cmd'], + ['.ps1', 'pwsh'], + ['.sh', 'sh'] +]); +function ingestOptions(opts) { + const opts_ = { ...DEFAULT_OPTIONS, ...opts }; + const fs = opts_.fs; + opts_.fs_ = { + chmod: fs.chmod ? util_1.promisify(fs.chmod) : (async () => { }), + mkdir: util_1.promisify(fs.mkdir), + readFile: util_1.promisify(fs.readFile), + stat: util_1.promisify(fs.stat), + unlink: util_1.promisify(fs.unlink), + writeFile: util_1.promisify(fs.writeFile) + }; + return opts_; } /** - * @template Context The context shared by all commands. Contexts are a set of values, defined when calling the `run`/`runExit` functions from the CLI instance, that will be made available to the commands via `this.context`. + * Try to create shims. + * + * @param src Path to program (executable or script). + * @param to Path to shims. + * Don't add an extension if you will create multiple types of shims. + * @param opts Options. + * @throws If `src` is missing. */ -class Cli { - constructor({ binaryLabel, binaryName: binaryNameOpt = `...`, binaryVersion, enableColors = getDefaultColorSettings() } = {}) { - this.registrations = new Map(); - this.builder = new core.CliBuilder({ binaryName: binaryNameOpt }); - this.binaryLabel = binaryLabel; - this.binaryName = binaryNameOpt; - this.binaryVersion = binaryVersion; - this.enableColors = enableColors; - } - /** - * Creates a new Cli and registers all commands passed as parameters. - * - * @param commandClasses The Commands to register - * @returns The created `Cli` instance - */ - static from(commandClasses, options = {}) { - const cli = new Cli(options); - for (const commandClass of commandClasses) - cli.register(commandClass); - return cli; +async function cmdShim(src, to, opts) { + const opts_ = ingestOptions(opts); + await opts_.fs_.stat(src); + await cmdShim_(src, to, opts_); +} +/** + * Try to create shims. + * + * Does nothing if `src` doesn't exist. + * + * @param src Path to program (executable or script). + * @param to Path to shims. + * Don't add an extension if you will create multiple types of shims. + * @param opts Options. + */ +function cmdShimIfExists(src, to, opts) { + return cmdShim(src, to, opts).catch(() => { }); +} +/** + * Try to unlink, but ignore errors. + * Any problems will surface later. + * + * @param path File to be removed. + */ +function rm(path, opts) { + return opts.fs_.unlink(path).catch(() => { }); +} +/** + * Try to create shims **even if `src` is missing**. + * + * @param src Path to program (executable or script). + * @param to Path to shims. + * Don't add an extension if you will create multiple types of shims. + * @param opts Options. + */ +async function cmdShim_(src, to, opts) { + const srcRuntimeInfo = await searchScriptRuntime(src, opts); + // Always tries to create all types of shims by calling `writeAllShims` as of now. + // Append your code here to change the behavior in response to `srcRuntimeInfo`. + // Create 3 shims for (Ba)sh in Cygwin / MSYS, no extension) & CMD (.cmd) & PowerShell (.ps1) + await writeShimsPreCommon(to, opts); + return writeAllShims(src, to, srcRuntimeInfo, opts); +} +/** + * Do processes before **all** shims are created. + * This must be called **only once** for one call of `cmdShim(IfExists)`. + * + * @param target Path of shims that are going to be created. + */ +function writeShimsPreCommon(target, opts) { + return opts.fs_.mkdir(path.dirname(target), { recursive: true }); +} +/** + * Write all types (sh & cmd & pwsh) of shims to files. + * Extensions (`.cmd` and `.ps1`) are appended to cmd and pwsh shims. + * + * + * @param src Path to program (executable or script). + * @param to Path to shims **without extensions**. + * Extensions are added for CMD and PowerShell shims. + * @param srcRuntimeInfo Return value of `await searchScriptRuntime(src)`. + * @param opts Options. + */ +function writeAllShims(src, to, srcRuntimeInfo, opts) { + const opts_ = ingestOptions(opts); + const generatorAndExts = [{ generator: generateShShim, extension: '' }]; + if (opts_.createCmdFile) { + generatorAndExts.push({ generator: generateCmdShim, extension: CMD_EXTENSION }); } - /** - * Registers a command inside the CLI. - */ - register(commandClass) { - var _a; - const specs = new Map(); - const command = new commandClass(); - for (const key in command) { - const value = command[key]; - if (typeof value === `object` && value !== null && value[Command.Command.isOption]) { - specs.set(key, value); - } - } - const builder = this.builder.command(); - const index = builder.cliIndex; - const paths = (_a = commandClass.paths) !== null && _a !== void 0 ? _a : command.paths; - if (typeof paths !== `undefined`) - for (const path of paths) - builder.addPath(path); - this.registrations.set(commandClass, { specs, builder, index }); - for (const [key, { definition }] of specs.entries()) - definition(builder, key); - builder.setContext({ - commandClass, - }); + if (opts_.createPwshFile) { + generatorAndExts.push({ generator: generatePwshShim, extension: '.ps1' }); } - process(input) { - const { contexts, process } = this.builder.compile(); - const state = process(input); - switch (state.selectedIndex) { - case constants.HELP_COMMAND_INDEX: - { - return HelpCommand.HelpCommand.from(state, contexts); - } - default: - { - const { commandClass } = contexts[state.selectedIndex]; - const record = this.registrations.get(commandClass); - if (typeof record === `undefined`) - throw new Error(`Assertion failed: Expected the command class to have been registered.`); - const command = new commandClass(); - command.path = state.path; - try { - for (const [key, { transformer }] of record.specs.entries()) - command[key] = transformer(record.builder, key, state); - return command; - } - catch (error) { - error[errorCommandSymbol] = command; - throw error; - } - } - break; - } + return Promise.all(generatorAndExts.map((generatorAndExt) => writeShim(src, to + generatorAndExt.extension, srcRuntimeInfo, generatorAndExt.generator, opts_))); +} +/** + * Do processes before writing shim. + * + * @param target Path to shim that is going to be created. + */ +function writeShimPre(target, opts) { + return rm(target, opts); +} +/** + * Do processes after writing the shim. + * + * @param target Path to just created shim. + */ +function writeShimPost(target, opts) { + // Only chmoding shims as of now. + // Some other processes may be appended. + return chmodShim(target, opts); +} +/** + * Look into runtime (e.g. `node` & `sh` & `pwsh`) and its arguments + * of the target program (script or executable). + * + * @param target Path to the executable or script. + * @return Promise of infomation of runtime of `target`. + */ +async function searchScriptRuntime(target, opts) { + const data = await opts.fs_.readFile(target, 'utf8'); + // First, check if the bin is a #! of some sort. + const firstLine = data.trim().split(/\r*\n/)[0]; + const shebang = firstLine.match(shebangExpr); + if (!shebang) { + // If not, infer script type from its extension. + // If the inference fails, it's something that'll be compiled, or some other + // sort of script, and just call it directly. + const targetExtension = path.extname(target).toLowerCase(); + return { + // undefined if extension is unknown but it's converted to null. + program: extensionToProgramMap.get(targetExtension) || null, + additionalArgs: '' + }; } - async run(input, context) { - let command; - if (!Array.isArray(input)) { - command = input; - } - else { - try { - command = this.process(input); - } - catch (error) { - context.stdout.write(this.error(error)); - return 1; - } - } - if (command.help) { - context.stdout.write(this.usage(command, { detailed: true })); - return 0; - } - command.context = context; - command.cli = { - binaryLabel: this.binaryLabel, - binaryName: this.binaryName, - binaryVersion: this.binaryVersion, - enableColors: this.enableColors, - definitions: () => this.definitions(), - error: (error, opts) => this.error(error, opts), - process: input => this.process(input), - run: (input, subContext) => this.run(input, { ...context, ...subContext }), - usage: (command, opts) => this.usage(command, opts), - }; - let exitCode; - try { - exitCode = await command.validateAndExecute().catch(error => command.catch(error).then(() => 0)); - } - catch (error) { - context.stdout.write(this.error(error, { command })); - return 1; - } - return exitCode; + return { + program: shebang[1], + additionalArgs: shebang[2] + }; +} +/** + * Write shim to the file system while executing the pre- and post-processes + * defined in `WriteShimPre` and `WriteShimPost`. + * + * @param src Path to the executable or script. + * @param to Path to the (sh) shim(s) that is going to be created. + * @param srcRuntimeInfo Result of `await searchScriptRuntime(src)`. + * @param generateShimScript Generator of shim script. + * @param opts Other options. + */ +async function writeShim(src, to, srcRuntimeInfo, generateShimScript, opts) { + const defaultArgs = opts.preserveSymlinks ? '--preserve-symlinks' : ''; + // `Array.prototype.filter` removes ''. + // ['--foo', '--bar'].join(' ') and [].join(' ') returns '--foo --bar' and '' respectively. + const args = [srcRuntimeInfo.additionalArgs, defaultArgs].filter(arg => arg).join(' '); + opts = Object.assign({}, opts, { + prog: srcRuntimeInfo.program, + args: args + }); + await writeShimPre(to, opts); + await opts.fs_.writeFile(to, generateShimScript(src, to, opts), 'utf8'); + return writeShimPost(to, opts); +} +/** + * Generate the content of a shim for CMD. + * + * @param src Path to the executable or script. + * @param to Path to the shim to be created. + * It is highly recommended to end with `.cmd` (or `.bat`). + * @param opts Options. + * @return The content of shim. + */ +function generateCmdShim(src, to, opts) { + // `shTarget` is not used to generate the content. + const shTarget = path.relative(path.dirname(to), src); + let target = shTarget.split('/').join('\\'); + const quotedPathToTarget = path.isAbsolute(target) ? `"${target}"` : `"%~dp0\\${target}"`; + let longProg; + let prog = opts.prog; + let args = opts.args || ''; + const nodePath = normalizePathEnvVar(opts.nodePath).win32; + const prependToPath = normalizePathEnvVar(opts.prependToPath).win32; + if (!prog) { + prog = quotedPathToTarget; + args = ''; + target = ''; } - /** - * Runs a command and exits the current `process` with the exit code returned by the command. - * - * @param input An array containing the name of the command and its arguments. - * - * @example - * cli.runExit(process.argv.slice(2), Cli.defaultContext) - */ - async runExit(input, context) { - process.exitCode = await this.run(input, context); + else if (prog === 'node' && opts.nodeExecPath) { + prog = `"${opts.nodeExecPath}"`; + target = quotedPathToTarget; } - suggest(input, partial) { - const { suggest } = this.builder.compile(); - return suggest(input, partial); + else { + longProg = `"%~dp0\\${prog}.exe"`; + target = quotedPathToTarget; } - definitions({ colored = false } = {}) { - const data = []; - for (const [commandClass, { index }] of this.registrations) { - if (typeof commandClass.usage === `undefined`) - continue; - const { usage: path } = this.getUsageByIndex(index, { detailed: false }); - const { usage, options } = this.getUsageByIndex(index, { detailed: true, inlineOptions: false }); - const category = typeof commandClass.usage.category !== `undefined` - ? format.formatMarkdownish(commandClass.usage.category, { format: this.format(colored), paragraphs: false }) - : undefined; - const description = typeof commandClass.usage.description !== `undefined` - ? format.formatMarkdownish(commandClass.usage.description, { format: this.format(colored), paragraphs: false }) - : undefined; - const details = typeof commandClass.usage.details !== `undefined` - ? format.formatMarkdownish(commandClass.usage.details, { format: this.format(colored), paragraphs: true }) - : undefined; - const examples = typeof commandClass.usage.examples !== `undefined` - ? commandClass.usage.examples.map(([label, cli]) => [format.formatMarkdownish(label, { format: this.format(colored), paragraphs: false }), cli.replace(/\$0/g, this.binaryName)]) - : undefined; - data.push({ path, usage, category, description, details, examples, options }); - } - return data; + let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : ''; + // @IF EXIST "%~dp0\node.exe" ( + // "%~dp0\node.exe" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %* + // ) ELSE ( + // SETLOCAL + // SET PATHEXT=%PATHEXT:;.JS;=;% + // node "%~dp0\.\node_modules\npm\bin\npm-cli.js" %* + // ) + let cmd = '@SETLOCAL\r\n'; + if (prependToPath) { + cmd += `@SET "PATH=${prependToPath}:%PATH%"\r\n`; + } + if (nodePath) { + cmd += `\ +@IF NOT DEFINED NODE_PATH (\r + @SET "NODE_PATH=${nodePath}"\r +) ELSE (\r + @SET "NODE_PATH=%NODE_PATH%;${nodePath}"\r +)\r +`; } - usage(command = null, { colored, detailed = false, prefix = `$ ` } = {}) { - var _a; - // In case the default command is the only one, we can just show the command help rather than the general one - if (command === null) { - for (const commandClass of this.registrations.keys()) { - const paths = commandClass.paths; - const isDocumented = typeof commandClass.usage !== `undefined`; - const isExclusivelyDefault = !paths || paths.length === 0 || (paths.length === 1 && paths[0].length === 0); - const isDefault = isExclusivelyDefault || ((_a = paths === null || paths === void 0 ? void 0 : paths.some(path => path.length === 0)) !== null && _a !== void 0 ? _a : false); - if (isDefault) { - if (command) { - command = null; - break; - } - else { - command = commandClass; - } - } - else { - if (isDocumented) { - command = null; - continue; - } - } - } - if (command) { - detailed = true; - } - } - // @ts-ignore - const commandClass = command !== null && command instanceof Command.Command - ? command.constructor - : command; - let result = ``; - if (!commandClass) { - const commandsByCategories = new Map(); - for (const [commandClass, { index }] of this.registrations.entries()) { - if (typeof commandClass.usage === `undefined`) - continue; - const category = typeof commandClass.usage.category !== `undefined` - ? format.formatMarkdownish(commandClass.usage.category, { format: this.format(colored), paragraphs: false }) - : null; - let categoryCommands = commandsByCategories.get(category); - if (typeof categoryCommands === `undefined`) - commandsByCategories.set(category, categoryCommands = []); - const { usage } = this.getUsageByIndex(index); - categoryCommands.push({ commandClass, usage }); - } - const categoryNames = Array.from(commandsByCategories.keys()).sort((a, b) => { - if (a === null) - return -1; - if (b === null) - return +1; - return a.localeCompare(b, `en`, { usage: `sort`, caseFirst: `upper` }); - }); - const hasLabel = typeof this.binaryLabel !== `undefined`; - const hasVersion = typeof this.binaryVersion !== `undefined`; - if (hasLabel || hasVersion) { - if (hasLabel && hasVersion) - result += `${this.format(colored).header(`${this.binaryLabel} - ${this.binaryVersion}`)}\n\n`; - else if (hasLabel) - result += `${this.format(colored).header(`${this.binaryLabel}`)}\n`; - else - result += `${this.format(colored).header(`${this.binaryVersion}`)}\n`; - result += ` ${this.format(colored).bold(prefix)}${this.binaryName} \n`; - } - else { - result += `${this.format(colored).bold(prefix)}${this.binaryName} \n`; - } - for (const categoryName of categoryNames) { - const commands = commandsByCategories.get(categoryName).slice().sort((a, b) => { - return a.usage.localeCompare(b.usage, `en`, { usage: `sort`, caseFirst: `upper` }); - }); - const header = categoryName !== null - ? categoryName.trim() - : `General commands`; - result += `\n`; - result += `${this.format(colored).header(`${header}`)}\n`; - for (const { commandClass, usage } of commands) { - const doc = commandClass.usage.description || `undocumented`; - result += `\n`; - result += ` ${this.format(colored).bold(usage)}\n`; - result += ` ${format.formatMarkdownish(doc, { format: this.format(colored), paragraphs: false })}`; - } - } - result += `\n`; - result += format.formatMarkdownish(`You can also print more details about any of these commands by calling them with the \`-h,--help\` flag right after the command name.`, { format: this.format(colored), paragraphs: true }); - } - else { - if (!detailed) { - const { usage } = this.getUsageByRegistration(commandClass); - result += `${this.format(colored).bold(prefix)}${usage}\n`; - } - else { - const { description = ``, details = ``, examples = [], } = commandClass.usage || {}; - if (description !== ``) { - result += format.formatMarkdownish(description, { format: this.format(colored), paragraphs: false }).replace(/^./, $0 => $0.toUpperCase()); - result += `\n`; - } - if (details !== `` || examples.length > 0) { - result += `${this.format(colored).header(`Usage`)}\n`; - result += `\n`; - } - const { usage, options } = this.getUsageByRegistration(commandClass, { inlineOptions: false }); - result += `${this.format(colored).bold(prefix)}${usage}\n`; - if (options.length > 0) { - result += `\n`; - result += `${format.richFormat.header(`Options`)}\n`; - const maxDefinitionLength = options.reduce((length, option) => { - return Math.max(length, option.definition.length); - }, 0); - result += `\n`; - for (const { definition, description } of options) { - result += ` ${this.format(colored).bold(definition.padEnd(maxDefinitionLength))} ${format.formatMarkdownish(description, { format: this.format(colored), paragraphs: false })}`; - } - } - if (details !== ``) { - result += `\n`; - result += `${this.format(colored).header(`Details`)}\n`; - result += `\n`; - result += format.formatMarkdownish(details, { format: this.format(colored), paragraphs: true }); - } - if (examples.length > 0) { - result += `\n`; - result += `${this.format(colored).header(`Examples`)}\n`; - for (const [description, example] of examples) { - result += `\n`; - result += format.formatMarkdownish(description, { format: this.format(colored), paragraphs: false }); - result += `${example - .replace(/^/m, ` ${this.format(colored).bold(prefix)}`) - .replace(/\$0/g, this.binaryName)}\n`; - } - } - } - } - return result; + if (longProg) { + cmd += `\ +@IF EXIST ${longProg} (\r + ${longProg} ${args} ${target} ${progArgs}%*\r +) ELSE (\r + @SET PATHEXT=%PATHEXT:;.JS;=;%\r + ${prog} ${args} ${target} ${progArgs}%*\r +)\r +`; } - error(error, _a) { - var _b; - var { colored, command = (_b = error[errorCommandSymbol]) !== null && _b !== void 0 ? _b : null } = _a === void 0 ? {} : _a; - if (!(error instanceof Error)) - error = new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(error)})`); - let result = ``; - let name = error.name.replace(/([a-z])([A-Z])/g, `$1 $2`); - if (name === `Error`) - name = `Internal Error`; - result += `${this.format(colored).error(name)}: ${error.message}\n`; - const meta = error.clipanion; - if (typeof meta !== `undefined`) { - if (meta.type === `usage`) { - result += `\n`; - result += this.usage(command); - } - } - else { - if (error.stack) { - result += `${error.stack.replace(/^.*\n/, ``)}\n`; - } - } - return result; + else { + cmd += `@${prog} ${args} ${target} ${progArgs}%*\r\n`; } - getUsageByRegistration(klass, opts) { - const record = this.registrations.get(klass); - if (typeof record === `undefined`) - throw new Error(`Assertion failed: Unregistered command`); - return this.getUsageByIndex(record.index, opts); + return cmd; +} +/** + * Generate the content of a shim for (Ba)sh in, for example, Cygwin and MSYS(2). + * + * @param src Path to the executable or script. + * @param to Path to the shim to be created. + * It is highly recommended to end with `.sh` or to contain no extension. + * @param opts Options. + * @return The content of shim. + */ +function generateShShim(src, to, opts) { + let shTarget = path.relative(path.dirname(to), src); + let shProg = opts.prog && opts.prog.split('\\').join('/'); + let shLongProg; + shTarget = shTarget.split('\\').join('/'); + const quotedPathToTarget = path.isAbsolute(shTarget) ? `"${shTarget}"` : `"$basedir/${shTarget}"`; + let args = opts.args || ''; + const shNodePath = normalizePathEnvVar(opts.nodePath).posix; + if (!shProg) { + shProg = quotedPathToTarget; + args = ''; + shTarget = ''; } - getUsageByIndex(n, opts) { - return this.builder.getBuilderByIndex(n).usage(opts); + else if (opts.prog === 'node' && opts.nodeExecPath) { + shProg = `"${opts.nodeExecPath}"`; + shTarget = quotedPathToTarget; } - format(colored = this.enableColors) { - return colored ? format.richFormat : format.textFormat; + else { + shLongProg = `"$basedir/${opts.prog}"`; + shTarget = quotedPathToTarget; + } + let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : ''; + // #!/bin/sh + // basedir=`dirname "$0"` + // + // case `uname` in + // *CYGWIN*) basedir=`cygpath -w "$basedir"`;; + // esac + // + // export NODE_PATH="" + // + // if [ -x "$basedir/node.exe" ]; then + // exec "$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@" + // else + // exec node "$basedir/node_modules/npm/bin/npm-cli.js" "$@" + // fi + let sh = `\ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") + +case \`uname\` in + *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; +esac + +`; + if (opts.prependToPath) { + sh += `\ +export PATH="${opts.prependToPath}:$PATH" +`; + } + if (shNodePath) { + sh += `\ +if [ -z "$NODE_PATH" ]; then + export NODE_PATH="${shNodePath}" +else + export NODE_PATH="$NODE_PATH:${shNodePath}" +fi +`; + } + if (shLongProg) { + sh += `\ +if [ -x ${shLongProg} ]; then + exec ${shLongProg} ${args} ${shTarget} ${progArgs}"$@" +else + exec ${shProg} ${args} ${shTarget} ${progArgs}"$@" +fi +`; + } + else { + sh += `\ +${shProg} ${args} ${shTarget} ${progArgs}"$@" +exit $? +`; } + return sh; } /** - * The default context of the CLI. + * Generate the content of a shim for PowerShell. * - * Contains the stdio of the current `process`. + * @param src Path to the executable or script. + * @param to Path to the shim to be created. + * It is highly recommended to end with `.ps1`. + * @param opts Options. + * @return The content of shim. */ -Cli.defaultContext = { - stdin: process.stdin, - stdout: process.stdout, - stderr: process.stderr, -}; - -exports.Cli = Cli; - +function generatePwshShim(src, to, opts) { + let shTarget = path.relative(path.dirname(to), src); + const shProg = opts.prog && opts.prog.split('\\').join('/'); + let pwshProg = shProg && `"${shProg}$exe"`; + let pwshLongProg; + shTarget = shTarget.split('\\').join('/'); + const quotedPathToTarget = path.isAbsolute(shTarget) ? `"${shTarget}"` : `"$basedir/${shTarget}"`; + let args = opts.args || ''; + let normalizedNodePathEnvVar = normalizePathEnvVar(opts.nodePath); + const nodePath = normalizedNodePathEnvVar.win32; + const shNodePath = normalizedNodePathEnvVar.posix; + let normalizedPrependPathEnvVar = normalizePathEnvVar(opts.prependToPath); + const prependPath = normalizedPrependPathEnvVar.win32; + const shPrependPath = normalizedPrependPathEnvVar.posix; + if (!pwshProg) { + pwshProg = quotedPathToTarget; + args = ''; + shTarget = ''; + } + else if (opts.prog === 'node' && opts.nodeExecPath) { + pwshProg = `"${opts.nodeExecPath}"`; + shTarget = quotedPathToTarget; + } + else { + pwshLongProg = `"$basedir/${opts.prog}$exe"`; + shTarget = quotedPathToTarget; + } + let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : ''; + // #!/usr/bin/env pwsh + // $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + // + // $ret=0 + // $exe = "" + // if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + // # Fix case when both the Windows and Linux builds of Node + // # are installed in the same directory + // $exe = ".exe" + // } + // if (Test-Path "$basedir/node") { + // # Support pipeline input + // if ($MyInvocation.ExpectingInput) { + // $input | & "$basedir/node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args + // } else { + // & "$basedir/node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args + // } + // $ret=$LASTEXITCODE + // } else { + // # Support pipeline input + // if ($MyInvocation.ExpectingInput) { + // $input | & "node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args + // } else { + // & "node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args + // } + // $ret=$LASTEXITCODE + // } + // exit $ret + let pwsh = `\ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +${(nodePath || prependPath) ? '$pathsep=":"\n' : ''}\ +${nodePath ? `\ +$env_node_path=$env:NODE_PATH +$new_node_path="${nodePath}" +` : ''}\ +${prependPath ? `\ +$env_path=$env:PATH +$prepend_path="${prependPath}" +` : ''}\ +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +${(nodePath || prependPath) ? ' $pathsep=";"\n' : ''}\ +}`; + if (shNodePath || shPrependPath) { + pwsh += `\ + else { +${shNodePath ? ` $new_node_path="${shNodePath}"\n` : ''}\ +${shPrependPath ? ` $prepend_path="${shPrependPath}"\n` : ''}\ +} +`; + } + if (shNodePath) { + pwsh += `\ +if ([string]::IsNullOrEmpty($env_node_path)) { + $env:NODE_PATH=$new_node_path +} else { + $env:NODE_PATH="$env_node_path$pathsep$new_node_path" +} +`; + } + if (opts.prependToPath) { + pwsh += ` +$env:PATH="$prepend_path$pathsep$env:PATH" +`; + } + if (pwshLongProg) { + pwsh += ` +$ret=0 +if (Test-Path ${pwshLongProg}) { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${pwshLongProg} ${args} ${shTarget} ${progArgs}$args + } else { + & ${pwshLongProg} ${args} ${shTarget} ${progArgs}$args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${pwshProg} ${args} ${shTarget} ${progArgs}$args + } else { + & ${pwshProg} ${args} ${shTarget} ${progArgs}$args + } + $ret=$LASTEXITCODE +} +${nodePath ? '$env:NODE_PATH=$env_node_path\n' : ''}\ +${prependPath ? '$env:PATH=$env_path\n' : ''}\ +exit $ret +`; + } + else { + pwsh += ` +# Support pipeline input +if ($MyInvocation.ExpectingInput) { + $input | & ${pwshProg} ${args} ${shTarget} ${progArgs}$args +} else { + & ${pwshProg} ${args} ${shTarget} ${progArgs}$args +} +${nodePath ? '$env:NODE_PATH=$env_node_path\n' : ''}\ +${prependPath ? '$env:PATH=$env_path\n' : ''}\ +exit $LASTEXITCODE +`; + } + return pwsh; +} +/** + * Chmod just created shim and make it executable + * + * @param to Path to shim. + */ +function chmodShim(to, opts) { + return opts.fs_.chmod(to, 0o755); +} +function normalizePathEnvVar(nodePath) { + if (!nodePath || !nodePath.length) { + return { + win32: '', + posix: '' + }; + } + let split = (typeof nodePath === 'string' ? nodePath.split(path.delimiter) : Array.from(nodePath)); + let result = {}; + for (let i = 0; i < split.length; i++) { + const win32 = split[i].split('/').join('\\'); + const posix = isWindows() ? split[i].split('\\').join('/').replace(/^([^:\\/]*):/, (_, $1) => `/mnt/${$1.toLowerCase()}`) : split[i]; + result.win32 = result.win32 ? `${result.win32};${win32}` : win32; + result.posix = result.posix ? `${result.posix}:${posix}` : posix; + result[i] = { win32, posix }; + } + return result; +} +module.exports = cmdShim; +//# sourceMappingURL=index.js.map /***/ }), -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/Command.js": -/*!*************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/Command.js ***! - \*************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/chownr-npm-2.0.0-638f1c9c61-9.zip/node_modules/chownr/chownr.js": +/*!**************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/chownr-npm-2.0.0-638f1c9c61-9.zip/node_modules/chownr/chownr.js ***! + \**************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; +const fs = __webpack_require__(/*! fs */ "fs") +const path = __webpack_require__(/*! path */ "path") -Object.defineProperty(exports, "__esModule", ({ value: true })); +/* istanbul ignore next */ +const LCHOWN = fs.lchown ? 'lchown' : 'chown' +/* istanbul ignore next */ +const LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync' -var utils = __webpack_require__(/*! ./options/utils.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/utils.js"); +/* istanbul ignore next */ +const needEISDIRHandled = fs.lchown && + !process.version.match(/v1[1-9]+\./) && + !process.version.match(/v10\.[6-9]/) -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); +const lchownSync = (path, uid, gid) => { + try { + return fs[LCHOWNSYNC](path, uid, gid) + } catch (er) { + if (er.code !== 'ENOENT') + throw er + } } -class Command { - constructor() { - /** - * Predefined that will be set to true if `-h,--help` has been used, in - * which case `Command#execute` won't be called. - */ - this.help = false; - } - /** - * Defines the usage information for the given command. - */ - static Usage(usage) { - return usage; - } - /** - * Standard error handler which will simply rethrow the error. Can be used - * to add custom logic to handle errors from the command or simply return - * the parent class error handling. - */ - async catch(error) { - throw error; - } - async validateAndExecute() { - const commandClass = this.constructor; - const cascade = commandClass.schema; - if (typeof cascade !== `undefined`) { - const { isDict, isUnknown, applyCascade } = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(__webpack_require__(/*! typanion */ "./.yarn/cache/typanion-npm-3.3.1-ee9997c7cf-212d2beb55.zip/node_modules/typanion/lib/index.js")); }); - const schema = applyCascade(isDict(isUnknown()), cascade); - const errors = []; - const coercions = []; - const check = schema(this, { errors, coercions }); - if (!check) - throw utils.formatError(`Invalid option schema`, errors); - for (const [, op] of coercions) { - op(); - } - } - const exitCode = await this.execute(); - if (typeof exitCode !== `undefined`) { - return exitCode; - } - else { - return 0; - } - } +/* istanbul ignore next */ +const chownSync = (path, uid, gid) => { + try { + return fs.chownSync(path, uid, gid) + } catch (er) { + if (er.code !== 'ENOENT') + throw er + } } -/** - * Used to detect option definitions. - */ -Command.isOption = utils.isOptionSymbol; -/** - * Just an helper to use along with the `paths` fields, to make it - * clearer that a command is the default one. - * - * @example - * class MyCommand extends Command { - * static paths = [Command.Default]; - * } - */ -Command.Default = []; - -exports.Command = Command; +/* istanbul ignore next */ +const handleEISDIR = + needEISDIRHandled ? (path, uid, gid, cb) => er => { + // Node prior to v10 had a very questionable implementation of + // fs.lchown, which would always try to call fs.open on a directory + // Fall back to fs.chown in those cases. + if (!er || er.code !== 'EISDIR') + cb(er) + else + fs.chown(path, uid, gid, cb) + } + : (_, __, ___, cb) => cb -/***/ }), +/* istanbul ignore next */ +const handleEISDirSync = + needEISDIRHandled ? (path, uid, gid) => { + try { + return lchownSync(path, uid, gid) + } catch (er) { + if (er.code !== 'EISDIR') + throw er + chownSync(path, uid, gid) + } + } + : (path, uid, gid) => lchownSync(path, uid, gid) -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/HelpCommand.js": -/*!*****************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/HelpCommand.js ***! - \*****************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +// fs.readdir could only accept an options object as of node v6 +const nodeVersion = process.version +let readdir = (path, options, cb) => fs.readdir(path, options, cb) +let readdirSync = (path, options) => fs.readdirSync(path, options) +/* istanbul ignore next */ +if (/^v4\./.test(nodeVersion)) + readdir = (path, options, cb) => fs.readdir(path, cb) -"use strict"; +const chown = (cpath, uid, gid, cb) => { + fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => { + // Skip ENOENT error + cb(er && er.code !== 'ENOENT' ? er : null) + })) +} +const chownrKid = (p, child, uid, gid, cb) => { + if (typeof child === 'string') + return fs.lstat(path.resolve(p, child), (er, stats) => { + // Skip ENOENT error + if (er) + return cb(er.code !== 'ENOENT' ? er : null) + stats.name = child + chownrKid(p, stats, uid, gid, cb) + }) -Object.defineProperty(exports, "__esModule", ({ value: true })); + if (child.isDirectory()) { + chownr(path.resolve(p, child.name), uid, gid, er => { + if (er) + return cb(er) + const cpath = path.resolve(p, child.name) + chown(cpath, uid, gid, cb) + }) + } else { + const cpath = path.resolve(p, child.name) + chown(cpath, uid, gid, cb) + } +} -var Command = __webpack_require__(/*! ./Command.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/Command.js"); -class HelpCommand extends Command.Command { - constructor(contexts) { - super(); - this.contexts = contexts; - this.commands = []; - } - static from(state, contexts) { - const command = new HelpCommand(contexts); - command.path = state.path; - for (const opt of state.options) { - switch (opt.name) { - case `-c`: - { - command.commands.push(Number(opt.value)); - } - break; - case `-i`: - { - command.index = Number(opt.value); - } - break; - } - } - return command; - } - async execute() { - let commands = this.commands; - if (typeof this.index !== `undefined` && this.index >= 0 && this.index < commands.length) - commands = [commands[this.index]]; - if (commands.length === 0) { - this.context.stdout.write(this.cli.usage()); - } - else if (commands.length === 1) { - this.context.stdout.write(this.cli.usage(this.contexts[commands[0]].commandClass, { detailed: true })); - } - else if (commands.length > 1) { - this.context.stdout.write(`Multiple commands match your selection:\n`); - this.context.stdout.write(`\n`); - let index = 0; - for (const command of this.commands) - this.context.stdout.write(this.cli.usage(this.contexts[command].commandClass, { prefix: `${index++}. `.padStart(5) })); - this.context.stdout.write(`\n`); - this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands.\n`); - } +const chownr = (p, uid, gid, cb) => { + readdir(p, { withFileTypes: true }, (er, children) => { + // any error other than ENOTDIR or ENOTSUP means it's not readable, + // or doesn't exist. give up. + if (er) { + if (er.code === 'ENOENT') + return cb() + else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP') + return cb(er) } -} - -exports.HelpCommand = HelpCommand; + if (er || !children.length) + return chown(p, uid, gid, cb) + let len = children.length + let errState = null + const then = er => { + if (errState) + return + if (er) + return cb(errState = er) + if (-- len === 0) + return chown(p, uid, gid, cb) + } -/***/ }), + children.forEach(child => chownrKid(p, child, uid, gid, then)) + }) +} -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/builtins/definitions.js": -/*!**************************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/builtins/definitions.js ***! - \**************************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +const chownrKidSync = (p, child, uid, gid) => { + if (typeof child === 'string') { + try { + const stats = fs.lstatSync(path.resolve(p, child)) + stats.name = child + child = stats + } catch (er) { + if (er.code === 'ENOENT') + return + else + throw er + } + } -"use strict"; + if (child.isDirectory()) + chownrSync(path.resolve(p, child.name), uid, gid) + handleEISDirSync(path.resolve(p, child.name), uid, gid) +} -Object.defineProperty(exports, "__esModule", ({ value: true })); +const chownrSync = (p, uid, gid) => { + let children + try { + children = readdirSync(p, { withFileTypes: true }) + } catch (er) { + if (er.code === 'ENOENT') + return + else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP') + return handleEISDirSync(p, uid, gid) + else + throw er + } -var Command = __webpack_require__(/*! ../Command.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/Command.js"); + if (children && children.length) + children.forEach(child => chownrKidSync(p, child, uid, gid)) -/** - * A command that prints the clipanion definitions. - */ -class DefinitionsCommand extends Command.Command { - async execute() { - this.context.stdout.write(`${JSON.stringify(this.cli.definitions(), null, 2)}\n`); - } + return handleEISDirSync(p, uid, gid) } -DefinitionsCommand.paths = [[`--clipanion=definitions`]]; -exports.DefinitionsCommand = DefinitionsCommand; +module.exports = chownr +chownr.sync = chownrSync /***/ }), -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/builtins/help.js": -/*!*******************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/builtins/help.js ***! - \*******************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/cmd-extension-npm-1.0.2-11aa204c4b-9.zip/node_modules/cmd-extension/index.js": +/*!***************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/cmd-extension-npm-1.0.2-11aa204c4b-9.zip/node_modules/cmd-extension/index.js ***! + \***************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; +const path = __webpack_require__(/*! path */ "path") -Object.defineProperty(exports, "__esModule", ({ value: true })); - -var Command = __webpack_require__(/*! ../Command.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/Command.js"); +let cmdExtension -/** - * A command that prints the usage of all commands. - * - * Paths: `-h`, `--help` - */ -class HelpCommand extends Command.Command { - async execute() { - this.context.stdout.write(this.cli.usage()); - } +if (process.env.PATHEXT) { + cmdExtension = process.env.PATHEXT + .split(path.delimiter) + .find(ext => ext.toUpperCase() === '.CMD') } -HelpCommand.paths = [[`-h`], [`--help`]]; -exports.HelpCommand = HelpCommand; +module.exports = cmdExtension || '.cmd' /***/ }), -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/builtins/index.js": -/*!********************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/builtins/index.js ***! - \********************************************************************************************************************************************************************/ +/***/ "../../../.yarn/berry/cache/fs-minipass-npm-2.1.0-501ef87306-9.zip/node_modules/fs-minipass/index.js": +/*!***********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/fs-minipass-npm-2.1.0-501ef87306-9.zip/node_modules/fs-minipass/index.js ***! + \***********************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; +const MiniPass = __webpack_require__(/*! minipass */ "../../../.yarn/berry/cache/minipass-npm-3.3.4-6cf48a6c5e-9.zip/node_modules/minipass/index.js") +const EE = (__webpack_require__(/*! events */ "events").EventEmitter) +const fs = __webpack_require__(/*! fs */ "fs") -Object.defineProperty(exports, "__esModule", ({ value: true })); - -var definitions = __webpack_require__(/*! ./definitions.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/builtins/definitions.js"); -var help = __webpack_require__(/*! ./help.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/builtins/help.js"); -var version = __webpack_require__(/*! ./version.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/builtins/version.js"); - - +let writev = fs.writev +/* istanbul ignore next */ +if (!writev) { + // This entire block can be removed if support for earlier than Node.js + // 12.9.0 is not needed. + const binding = process.binding('fs') + const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback -exports.DefinitionsCommand = definitions.DefinitionsCommand; -exports.HelpCommand = help.HelpCommand; -exports.VersionCommand = version.VersionCommand; - - -/***/ }), - -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/builtins/version.js": -/*!**********************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/builtins/version.js ***! - \**********************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; + writev = (fd, iovec, pos, cb) => { + const done = (er, bw) => cb(er, bw, iovec) + const req = new FSReqWrap() + req.oncomplete = done + binding.writeBuffers(fd, iovec, pos, req) + } +} +const _autoClose = Symbol('_autoClose') +const _close = Symbol('_close') +const _ended = Symbol('_ended') +const _fd = Symbol('_fd') +const _finished = Symbol('_finished') +const _flags = Symbol('_flags') +const _flush = Symbol('_flush') +const _handleChunk = Symbol('_handleChunk') +const _makeBuf = Symbol('_makeBuf') +const _mode = Symbol('_mode') +const _needDrain = Symbol('_needDrain') +const _onerror = Symbol('_onerror') +const _onopen = Symbol('_onopen') +const _onread = Symbol('_onread') +const _onwrite = Symbol('_onwrite') +const _open = Symbol('_open') +const _path = Symbol('_path') +const _pos = Symbol('_pos') +const _queue = Symbol('_queue') +const _read = Symbol('_read') +const _readSize = Symbol('_readSize') +const _reading = Symbol('_reading') +const _remain = Symbol('_remain') +const _size = Symbol('_size') +const _write = Symbol('_write') +const _writing = Symbol('_writing') +const _defaultFlag = Symbol('_defaultFlag') +const _errored = Symbol('_errored') -Object.defineProperty(exports, "__esModule", ({ value: true })); +class ReadStream extends MiniPass { + constructor (path, opt) { + opt = opt || {} + super(opt) -var Command = __webpack_require__(/*! ../Command.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/Command.js"); + this.readable = true + this.writable = false -/** - * A command that prints the version of the binary (`cli.binaryVersion`). - * - * Paths: `-v`, `--version` - */ -class VersionCommand extends Command.Command { - async execute() { - var _a; - this.context.stdout.write(`${(_a = this.cli.binaryVersion) !== null && _a !== void 0 ? _a : ``}\n`); - } -} -VersionCommand.paths = [[`-v`], [`--version`]]; + if (typeof path !== 'string') + throw new TypeError('path must be a string') -exports.VersionCommand = VersionCommand; + this[_errored] = false + this[_fd] = typeof opt.fd === 'number' ? opt.fd : null + this[_path] = path + this[_readSize] = opt.readSize || 16*1024*1024 + this[_reading] = false + this[_size] = typeof opt.size === 'number' ? opt.size : Infinity + this[_remain] = this[_size] + this[_autoClose] = typeof opt.autoClose === 'boolean' ? + opt.autoClose : true + if (typeof this[_fd] === 'number') + this[_read]() + else + this[_open]() + } -/***/ }), + get fd () { return this[_fd] } + get path () { return this[_path] } -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/index.js": -/*!***********************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/index.js ***! - \***********************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + write () { + throw new TypeError('this is a readable stream') + } -"use strict"; + end () { + throw new TypeError('this is a readable stream') + } + [_open] () { + fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd)) + } -Object.defineProperty(exports, "__esModule", ({ value: true })); + [_onopen] (er, fd) { + if (er) + this[_onerror](er) + else { + this[_fd] = fd + this.emit('open', fd) + this[_read]() + } + } -var errors = __webpack_require__(/*! ../errors.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/errors.js"); -var Command = __webpack_require__(/*! ./Command.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/Command.js"); -var Cli = __webpack_require__(/*! ./Cli.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/Cli.js"); -var index = __webpack_require__(/*! ./builtins/index.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/builtins/index.js"); -var index$1 = __webpack_require__(/*! ./options/index.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/index.js"); + [_makeBuf] () { + return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain])) + } + [_read] () { + if (!this[_reading]) { + this[_reading] = true + const buf = this[_makeBuf]() + /* istanbul ignore if */ + if (buf.length === 0) + return process.nextTick(() => this[_onread](null, 0, buf)) + fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) => + this[_onread](er, br, buf)) + } + } + [_onread] (er, br, buf) { + this[_reading] = false + if (er) + this[_onerror](er) + else if (this[_handleChunk](br, buf)) + this[_read]() + } -exports.UsageError = errors.UsageError; -exports.Command = Command.Command; -exports.Cli = Cli.Cli; -exports.Builtins = index; -exports.Option = index$1; + [_close] () { + if (this[_autoClose] && typeof this[_fd] === 'number') { + const fd = this[_fd] + this[_fd] = null + fs.close(fd, er => er ? this.emit('error', er) : this.emit('close')) + } + } + [_onerror] (er) { + this[_reading] = true + this[_close]() + this.emit('error', er) + } -/***/ }), + [_handleChunk] (br, buf) { + let ret = false + // no effect if infinite + this[_remain] -= br + if (br > 0) + ret = super.write(br < buf.length ? buf.slice(0, br) : buf) -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Array.js": -/*!*******************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Array.js ***! - \*******************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + if (br === 0 || this[_remain] <= 0) { + ret = false + this[_close]() + super.end() + } -"use strict"; + return ret + } + emit (ev, data) { + switch (ev) { + case 'prefinish': + case 'finish': + break -Object.defineProperty(exports, "__esModule", ({ value: true })); + case 'drain': + if (typeof this[_fd] === 'number') + this[_read]() + break -var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/utils.js"); + case 'error': + if (this[_errored]) + return + this[_errored] = true + return super.emit(ev, data) -function Array(descriptor, initialValueBase, optsBase) { - const [initialValue, opts] = utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); - const { arity = 1 } = opts; - const optNames = descriptor.split(`,`); - const nameSet = new Set(optNames); - return utils.makeCommandOption({ - definition(builder) { - builder.addOption({ - names: optNames, - arity, - hidden: opts === null || opts === void 0 ? void 0 : opts.hidden, - description: opts === null || opts === void 0 ? void 0 : opts.description, - required: opts.required, - }); - }, - transformer(builder, key, state) { - let currentValue = typeof initialValue !== `undefined` - ? [...initialValue] - : undefined; - for (const { name, value } of state.options) { - if (!nameSet.has(name)) - continue; - currentValue = currentValue !== null && currentValue !== void 0 ? currentValue : []; - currentValue.push(value); - } - return currentValue; - }, - }); + default: + return super.emit(ev, data) + } + } } -exports.Array = Array; - - -/***/ }), +class ReadStreamSync extends ReadStream { + [_open] () { + let threw = true + try { + this[_onopen](null, fs.openSync(this[_path], 'r')) + threw = false + } finally { + if (threw) + this[_close]() + } + } -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Boolean.js": -/*!*********************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Boolean.js ***! - \*********************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + [_read] () { + let threw = true + try { + if (!this[_reading]) { + this[_reading] = true + do { + const buf = this[_makeBuf]() + /* istanbul ignore next */ + const br = buf.length === 0 ? 0 + : fs.readSync(this[_fd], buf, 0, buf.length, null) + if (!this[_handleChunk](br, buf)) + break + } while (true) + this[_reading] = false + } + threw = false + } finally { + if (threw) + this[_close]() + } + } -"use strict"; + [_close] () { + if (this[_autoClose] && typeof this[_fd] === 'number') { + const fd = this[_fd] + this[_fd] = null + fs.closeSync(fd) + this.emit('close') + } + } +} +class WriteStream extends EE { + constructor (path, opt) { + opt = opt || {} + super(opt) + this.readable = false + this.writable = true + this[_errored] = false + this[_writing] = false + this[_ended] = false + this[_needDrain] = false + this[_queue] = [] + this[_path] = path + this[_fd] = typeof opt.fd === 'number' ? opt.fd : null + this[_mode] = opt.mode === undefined ? 0o666 : opt.mode + this[_pos] = typeof opt.start === 'number' ? opt.start : null + this[_autoClose] = typeof opt.autoClose === 'boolean' ? + opt.autoClose : true -Object.defineProperty(exports, "__esModule", ({ value: true })); - -var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/utils.js"); + // truncating makes no sense when writing into the middle + const defaultFlag = this[_pos] !== null ? 'r+' : 'w' + this[_defaultFlag] = opt.flags === undefined + this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags -function Boolean(descriptor, initialValueBase, optsBase) { - const [initialValue, opts] = utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); - const optNames = descriptor.split(`,`); - const nameSet = new Set(optNames); - return utils.makeCommandOption({ - definition(builder) { - builder.addOption({ - names: optNames, - allowBinding: false, - arity: 0, - hidden: opts.hidden, - description: opts.description, - required: opts.required, - }); - }, - transformer(builer, key, state) { - let currentValue = initialValue; - for (const { name, value } of state.options) { - if (!nameSet.has(name)) - continue; - currentValue = value; - } - return currentValue; - }, - }); -} + if (this[_fd] === null) + this[_open]() + } -exports.Boolean = Boolean; + emit (ev, data) { + if (ev === 'error') { + if (this[_errored]) + return + this[_errored] = true + } + return super.emit(ev, data) + } -/***/ }), + get fd () { return this[_fd] } + get path () { return this[_path] } -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Counter.js": -/*!*********************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Counter.js ***! - \*********************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + [_onerror] (er) { + this[_close]() + this[_writing] = true + this.emit('error', er) + } -"use strict"; + [_open] () { + fs.open(this[_path], this[_flags], this[_mode], + (er, fd) => this[_onopen](er, fd)) + } + [_onopen] (er, fd) { + if (this[_defaultFlag] && + this[_flags] === 'r+' && + er && er.code === 'ENOENT') { + this[_flags] = 'w' + this[_open]() + } else if (er) + this[_onerror](er) + else { + this[_fd] = fd + this.emit('open', fd) + this[_flush]() + } + } -Object.defineProperty(exports, "__esModule", ({ value: true })); + end (buf, enc) { + if (buf) + this.write(buf, enc) -var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/utils.js"); + this[_ended] = true -function Counter(descriptor, initialValueBase, optsBase) { - const [initialValue, opts] = utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); - const optNames = descriptor.split(`,`); - const nameSet = new Set(optNames); - return utils.makeCommandOption({ - definition(builder) { - builder.addOption({ - names: optNames, - allowBinding: false, - arity: 0, - hidden: opts.hidden, - description: opts.description, - required: opts.required, - }); - }, - transformer(builder, key, state) { - let currentValue = initialValue; - for (const { name, value } of state.options) { - if (!nameSet.has(name)) - continue; - currentValue !== null && currentValue !== void 0 ? currentValue : (currentValue = 0); - // Negated options reset the counter - if (!value) { - currentValue = 0; - } - else { - currentValue += 1; - } - } - return currentValue; - }, - }); -} + // synthetic after-write logic, where drain/finish live + if (!this[_writing] && !this[_queue].length && + typeof this[_fd] === 'number') + this[_onwrite](null, 0) + return this + } -exports.Counter = Counter; + write (buf, enc) { + if (typeof buf === 'string') + buf = Buffer.from(buf, enc) + if (this[_ended]) { + this.emit('error', new Error('write() after end()')) + return false + } -/***/ }), + if (this[_fd] === null || this[_writing] || this[_queue].length) { + this[_queue].push(buf) + this[_needDrain] = true + return false + } -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Proxy.js": -/*!*******************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Proxy.js ***! - \*******************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + this[_writing] = true + this[_write](buf) + return true + } -"use strict"; + [_write] (buf) { + fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) => + this[_onwrite](er, bw)) + } + [_onwrite] (er, bw) { + if (er) + this[_onerror](er) + else { + if (this[_pos] !== null) + this[_pos] += bw + if (this[_queue].length) + this[_flush]() + else { + this[_writing] = false -Object.defineProperty(exports, "__esModule", ({ value: true })); + if (this[_ended] && !this[_finished]) { + this[_finished] = true + this[_close]() + this.emit('finish') + } else if (this[_needDrain]) { + this[_needDrain] = false + this.emit('drain') + } + } + } + } -var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/utils.js"); + [_flush] () { + if (this[_queue].length === 0) { + if (this[_ended]) + this[_onwrite](null, 0) + } else if (this[_queue].length === 1) + this[_write](this[_queue].pop()) + else { + const iovec = this[_queue] + this[_queue] = [] + writev(this[_fd], iovec, this[_pos], + (er, bw) => this[_onwrite](er, bw)) + } + } -/** - * Used to annotate that the command wants to retrieve all trailing - * arguments that cannot be tied to a declared option. - * - * Be careful: this function is order-dependent! Make sure to define it - * after any positional argument you want to declare. - * - * This function is mutually exclusive with Option.Rest. - * - * @example - * yarn run foo hello --foo=bar world - * ► proxy = ["hello", "--foo=bar", "world"] - */ -function Proxy(opts = {}) { - return utils.makeCommandOption({ - definition(builder, key) { - var _a; - builder.addProxy({ - name: (_a = opts.name) !== null && _a !== void 0 ? _a : key, - required: opts.required, - }); - }, - transformer(builder, key, state) { - return state.positionals.map(({ value }) => value); - }, - }); + [_close] () { + if (this[_autoClose] && typeof this[_fd] === 'number') { + const fd = this[_fd] + this[_fd] = null + fs.close(fd, er => er ? this.emit('error', er) : this.emit('close')) + } + } } -exports.Proxy = Proxy; +class WriteStreamSync extends WriteStream { + [_open] () { + let fd + // only wrap in a try{} block if we know we'll retry, to avoid + // the rethrow obscuring the error's source frame in most cases. + if (this[_defaultFlag] && this[_flags] === 'r+') { + try { + fd = fs.openSync(this[_path], this[_flags], this[_mode]) + } catch (er) { + if (er.code === 'ENOENT') { + this[_flags] = 'w' + return this[_open]() + } else + throw er + } + } else + fd = fs.openSync(this[_path], this[_flags], this[_mode]) + this[_onopen](null, fd) + } -/***/ }), + [_close] () { + if (this[_autoClose] && typeof this[_fd] === 'number') { + const fd = this[_fd] + this[_fd] = null + fs.closeSync(fd) + this.emit('close') + } + } -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Rest.js": -/*!******************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Rest.js ***! - \******************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + [_write] (buf) { + // throw the original, but try to close if it fails + let threw = true + try { + this[_onwrite](null, + fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos])) + threw = false + } finally { + if (threw) + try { this[_close]() } catch (_) {} + } + } +} -"use strict"; +exports.ReadStream = ReadStream +exports.ReadStreamSync = ReadStreamSync +exports.WriteStream = WriteStream +exports.WriteStreamSync = WriteStreamSync -Object.defineProperty(exports, "__esModule", ({ value: true })); -var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/utils.js"); -var core = __webpack_require__(/*! ../../core.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/core.js"); +/***/ }), -/** - * Used to annotate that the command supports any number of positional - * arguments. - * - * Be careful: this function is order-dependent! Make sure to define it - * after any positional argument you want to declare. - * - * This function is mutually exclusive with Option.Proxy. +/***/ "../../../.yarn/berry/cache/is-windows-npm-1.0.2-898cd6f3d7-9.zip/node_modules/is-windows/index.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/is-windows-npm-1.0.2-898cd6f3d7-9.zip/node_modules/is-windows/index.js ***! + \*********************************************************************************************************/ +/***/ ((module, exports) => { + +var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! + * is-windows * - * @example - * yarn add hello world - * ► rest = ["hello", "world"] + * Copyright © 2015-2018, Jon Schlinkert. + * Released under the MIT License. */ -function Rest(opts = {}) { - return utils.makeCommandOption({ - definition(builder, key) { - var _a; - builder.addRest({ - name: (_a = opts.name) !== null && _a !== void 0 ? _a : key, - required: opts.required, - }); - }, - transformer(builder, key, state) { - // The builder's arity.extra will always be NoLimits, - // because it is set when we call registerDefinition - const isRestPositional = (index) => { - const positional = state.positionals[index]; - // A NoLimits extra (i.e. an optional rest argument) - if (positional.extra === core.NoLimits) - return true; - // A leading positional (i.e. a required rest argument) - if (positional.extra === false && index < builder.arity.leading.length) - return true; - return false; - }; - let count = 0; - while (count < state.positionals.length && isRestPositional(count)) - count += 1; - return state.positionals.splice(0, count).map(({ value }) => value); - }, - }); -} -exports.Rest = Rest; +(function(factory) { + if (exports && typeof exports === 'object' && "object" !== 'undefined') { + module.exports = factory(); + } else if (true) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), + __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? + (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else {} +})(function() { + 'use strict'; + return function isWindows() { + return process && (process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE)); + }; +}); /***/ }), -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/String.js": -/*!********************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/String.js ***! - \********************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; +/***/ "../../../.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-9.zip/node_modules/isexe/index.js": +/*!***********************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-9.zip/node_modules/isexe/index.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +var fs = __webpack_require__(/*! fs */ "fs") +var core +if (process.platform === 'win32' || global.TESTING_WINDOWS) { + core = __webpack_require__(/*! ./windows.js */ "../../../.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-9.zip/node_modules/isexe/windows.js") +} else { + core = __webpack_require__(/*! ./mode.js */ "../../../.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-9.zip/node_modules/isexe/mode.js") +} -Object.defineProperty(exports, "__esModule", ({ value: true })); +module.exports = isexe +isexe.sync = sync -var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/utils.js"); -var core = __webpack_require__(/*! ../../core.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/core.js"); +function isexe (path, options, cb) { + if (typeof options === 'function') { + cb = options + options = {} + } -function StringOption(descriptor, initialValueBase, optsBase) { - const [initialValue, opts] = utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); - const { arity = 1 } = opts; - const optNames = descriptor.split(`,`); - const nameSet = new Set(optNames); - return utils.makeCommandOption({ - definition(builder) { - builder.addOption({ - names: optNames, - arity: opts.tolerateBoolean ? 0 : arity, - hidden: opts.hidden, - description: opts.description, - required: opts.required, - }); - }, - transformer(builder, key, state) { - let usedName; - let currentValue = initialValue; - for (const { name, value } of state.options) { - if (!nameSet.has(name)) - continue; - usedName = name; - currentValue = value; - } - if (typeof currentValue === `string`) { - return utils.applyValidator(usedName !== null && usedName !== void 0 ? usedName : key, currentValue, opts.validator); - } - else { - return currentValue; - } - }, - }); -} -function StringPositional(opts = {}) { - const { required = true } = opts; - return utils.makeCommandOption({ - definition(builder, key) { - var _a; - builder.addPositional({ - name: (_a = opts.name) !== null && _a !== void 0 ? _a : key, - required: opts.required, - }); - }, - transformer(builder, key, state) { - var _a; - for (let i = 0; i < state.positionals.length; ++i) { - // We skip NoLimits extras. We only care about - // required and optional finite positionals. - if (state.positionals[i].extra === core.NoLimits) - continue; - // We skip optional positionals when we only - // care about required positionals. - if (required && state.positionals[i].extra === true) - continue; - // We skip required positionals when we only - // care about optional positionals. - if (!required && state.positionals[i].extra === false) - continue; - // We remove the positional from the list - const [positional] = state.positionals.splice(i, 1); - return utils.applyValidator((_a = opts.name) !== null && _a !== void 0 ? _a : key, positional.value, opts.validator); - } - return undefined; - }, - }); -} -// This function is badly typed, but it doesn't matter because the overloads provide the true public typings -function String(descriptor, ...args) { - if (typeof descriptor === `string`) { - return StringOption(descriptor, ...args); + if (!cb) { + if (typeof Promise !== 'function') { + throw new TypeError('callback not provided') } - else { - return StringPositional(descriptor); + + return new Promise(function (resolve, reject) { + isexe(path, options || {}, function (er, is) { + if (er) { + reject(er) + } else { + resolve(is) + } + }) + }) + } + + core(path, options || {}, function (er, is) { + // ignore EACCES because that just means we aren't allowed to run it + if (er) { + if (er.code === 'EACCES' || options && options.ignoreErrors) { + er = null + is = false + } } + cb(er, is) + }) } -exports.String = String; +function sync (path, options) { + // my kingdom for a filtered catch + try { + return core.sync(path, options || {}) + } catch (er) { + if (options && options.ignoreErrors || er.code === 'EACCES') { + return false + } else { + throw er + } + } +} /***/ }), -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/index.js": -/*!*******************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/index.js ***! - \*******************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - +/***/ "../../../.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-9.zip/node_modules/isexe/mode.js": +/*!**********************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-9.zip/node_modules/isexe/mode.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -Object.defineProperty(exports, "__esModule", ({ value: true })); +module.exports = isexe +isexe.sync = sync -var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/utils.js"); -var _Array = __webpack_require__(/*! ./Array.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Array.js"); -var _Boolean = __webpack_require__(/*! ./Boolean.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Boolean.js"); -var Counter = __webpack_require__(/*! ./Counter.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Counter.js"); -var _Proxy = __webpack_require__(/*! ./Proxy.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Proxy.js"); -var Rest = __webpack_require__(/*! ./Rest.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/Rest.js"); -var _String = __webpack_require__(/*! ./String.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/String.js"); +var fs = __webpack_require__(/*! fs */ "fs") +function isexe (path, options, cb) { + fs.stat(path, function (er, stat) { + cb(er, er ? false : checkStat(stat, options)) + }) +} +function sync (path, options) { + return checkStat(fs.statSync(path), options) +} -exports.applyValidator = utils.applyValidator; -exports.cleanValidationError = utils.cleanValidationError; -exports.formatError = utils.formatError; -exports.isOptionSymbol = utils.isOptionSymbol; -exports.makeCommandOption = utils.makeCommandOption; -exports.rerouteArguments = utils.rerouteArguments; -exports.Array = _Array.Array; -exports.Boolean = _Boolean.Boolean; -exports.Counter = Counter.Counter; -exports.Proxy = _Proxy.Proxy; -exports.Rest = Rest.Rest; -exports.String = _String.String; +function checkStat (stat, options) { + return stat.isFile() && checkMode(stat, options) +} +function checkMode (stat, options) { + var mod = stat.mode + var uid = stat.uid + var gid = stat.gid -/***/ }), + var myUid = options.uid !== undefined ? + options.uid : process.getuid && process.getuid() + var myGid = options.gid !== undefined ? + options.gid : process.getgid && process.getgid() -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/utils.js": -/*!*******************************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/options/utils.js ***! - \*******************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + var u = parseInt('100', 8) + var g = parseInt('010', 8) + var o = parseInt('001', 8) + var ug = u | g -"use strict"; + var ret = (mod & o) || + (mod & g) && gid === myGid || + (mod & u) && uid === myUid || + (mod & ug) && myUid === 0 + return ret +} -Object.defineProperty(exports, "__esModule", ({ value: true })); -var errors = __webpack_require__(/*! ../../errors.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/errors.js"); +/***/ }), -const isOptionSymbol = Symbol(`clipanion/isOption`); -function makeCommandOption(spec) { - // We lie! But it's for the good cause: the cli engine will turn the specs into proper values after instantiation. - return { ...spec, [isOptionSymbol]: true }; -} -function rerouteArguments(a, b) { - if (typeof a === `undefined`) - return [a, b]; - if (typeof a === `object` && a !== null && !Array.isArray(a)) { - return [undefined, a]; - } - else { - return [a, b]; +/***/ "../../../.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-9.zip/node_modules/isexe/windows.js": +/*!*************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-9.zip/node_modules/isexe/windows.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = isexe +isexe.sync = sync + +var fs = __webpack_require__(/*! fs */ "fs") + +function checkPathExt (path, options) { + var pathext = options.pathExt !== undefined ? + options.pathExt : process.env.PATHEXT + + if (!pathext) { + return true + } + + pathext = pathext.split(';') + if (pathext.indexOf('') !== -1) { + return true + } + for (var i = 0; i < pathext.length; i++) { + var p = pathext[i].toLowerCase() + if (p && path.substr(-p.length).toLowerCase() === p) { + return true } + } + return false } -function cleanValidationError(message, lowerCase = false) { - let cleaned = message.replace(/^\.: /, ``); - if (lowerCase) - cleaned = cleaned[0].toLowerCase() + cleaned.slice(1); - return cleaned; -} -function formatError(message, errors$1) { - if (errors$1.length === 1) { - return new errors.UsageError(`${message}: ${cleanValidationError(errors$1[0], true)}`); - } - else { - return new errors.UsageError(`${message}:\n${errors$1.map(error => `\n- ${cleanValidationError(error)}`).join(``)}`); - } + +function checkStat (stat, path, options) { + if (!stat.isSymbolicLink() && !stat.isFile()) { + return false + } + return checkPathExt(path, options) } -function applyValidator(name, value, validator) { - if (typeof validator === `undefined`) - return value; - const errors = []; - const coercions = []; - const coercion = (v) => { - const orig = value; - value = v; - return coercion.bind(null, orig); - }; - const check = validator(value, { errors, coercions, coercion }); - if (!check) - throw formatError(`Invalid value for ${name}`, errors); - for (const [, op] of coercions) - op(); - return value; + +function isexe (path, options, cb) { + fs.stat(path, function (er, stat) { + cb(er, er ? false : checkStat(stat, path, options)) + }) } -exports.applyValidator = applyValidator; -exports.cleanValidationError = cleanValidationError; -exports.formatError = formatError; -exports.isOptionSymbol = isOptionSymbol; -exports.makeCommandOption = makeCommandOption; -exports.rerouteArguments = rerouteArguments; +function sync (path, options) { + return checkStat(fs.statSync(path), path, options) +} /***/ }), -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/constants.js": -/*!******************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/constants.js ***! - \******************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports) => { +/***/ "../../../.yarn/berry/cache/lru-cache-npm-6.0.0-b4c8668fe1-9.zip/node_modules/lru-cache/index.js": +/*!*******************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/lru-cache-npm-6.0.0-b4c8668fe1-9.zip/node_modules/lru-cache/index.js ***! + \*******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); +// A linked list to keep track of recently-used-ness +const Yallist = __webpack_require__(/*! yallist */ "../../../.yarn/berry/cache/yallist-npm-4.0.0-b493d9e907-9.zip/node_modules/yallist/yallist.js") -const NODE_INITIAL = 0; -const NODE_SUCCESS = 1; -const NODE_ERRORED = 2; -const START_OF_INPUT = `\u0001`; -const END_OF_INPUT = `\u0000`; -const HELP_COMMAND_INDEX = -1; -const HELP_REGEX = /^(-h|--help)(?:=([0-9]+))?$/; -const OPTION_REGEX = /^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/; -const BATCH_REGEX = /^-[a-zA-Z]{2,}$/; -const BINDING_REGEX = /^([^=]+)=([\s\S]*)$/; -const DEBUG = process.env.DEBUG_CLI === `1`; +const MAX = Symbol('max') +const LENGTH = Symbol('length') +const LENGTH_CALCULATOR = Symbol('lengthCalculator') +const ALLOW_STALE = Symbol('allowStale') +const MAX_AGE = Symbol('maxAge') +const DISPOSE = Symbol('dispose') +const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet') +const LRU_LIST = Symbol('lruList') +const CACHE = Symbol('cache') +const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet') -exports.BATCH_REGEX = BATCH_REGEX; -exports.BINDING_REGEX = BINDING_REGEX; -exports.DEBUG = DEBUG; -exports.END_OF_INPUT = END_OF_INPUT; -exports.HELP_COMMAND_INDEX = HELP_COMMAND_INDEX; -exports.HELP_REGEX = HELP_REGEX; -exports.NODE_ERRORED = NODE_ERRORED; -exports.NODE_INITIAL = NODE_INITIAL; -exports.NODE_SUCCESS = NODE_SUCCESS; -exports.OPTION_REGEX = OPTION_REGEX; -exports.START_OF_INPUT = START_OF_INPUT; +const naiveLength = () => 1 +// lruList is a yallist where the head is the youngest +// item, and the tail is the oldest. the list contains the Hit +// objects as the entries. +// Each Hit object has a reference to its Yallist.Node. This +// never changes. +// +// cache is a Map (or PseudoMap) that matches the keys to +// the Yallist.Node object. +class LRUCache { + constructor (options) { + if (typeof options === 'number') + options = { max: options } -/***/ }), + if (!options) + options = {} -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/core.js": -/*!*************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/core.js ***! - \*************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + if (options.max && (typeof options.max !== 'number' || options.max < 0)) + throw new TypeError('max must be a non-negative number') + // Kind of weird to have a default max of Infinity, but oh well. + const max = this[MAX] = options.max || Infinity -"use strict"; + const lc = options.length || naiveLength + this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc + this[ALLOW_STALE] = options.stale || false + if (options.maxAge && typeof options.maxAge !== 'number') + throw new TypeError('maxAge must be a number') + this[MAX_AGE] = options.maxAge || 0 + this[DISPOSE] = options.dispose + this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false + this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false + this.reset() + } + // resize the cache when the max changes. + set max (mL) { + if (typeof mL !== 'number' || mL < 0) + throw new TypeError('max must be a non-negative number') -Object.defineProperty(exports, "__esModule", ({ value: true })); + this[MAX] = mL || Infinity + trim(this) + } + get max () { + return this[MAX] + } -var constants = __webpack_require__(/*! ./constants.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/constants.js"); -var errors = __webpack_require__(/*! ./errors.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/errors.js"); + set allowStale (allowStale) { + this[ALLOW_STALE] = !!allowStale + } + get allowStale () { + return this[ALLOW_STALE] + } -// ------------------------------------------------------------------------ -function debug(str) { - if (constants.DEBUG) { - console.log(str); + set maxAge (mA) { + if (typeof mA !== 'number') + throw new TypeError('maxAge must be a non-negative number') + + this[MAX_AGE] = mA + trim(this) + } + get maxAge () { + return this[MAX_AGE] + } + + // resize the cache when the lengthCalculator changes. + set lengthCalculator (lC) { + if (typeof lC !== 'function') + lC = naiveLength + + if (lC !== this[LENGTH_CALCULATOR]) { + this[LENGTH_CALCULATOR] = lC + this[LENGTH] = 0 + this[LRU_LIST].forEach(hit => { + hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key) + this[LENGTH] += hit.length + }) } + trim(this) + } + get lengthCalculator () { return this[LENGTH_CALCULATOR] } + + get length () { return this[LENGTH] } + get itemCount () { return this[LRU_LIST].length } + + rforEach (fn, thisp) { + thisp = thisp || this + for (let walker = this[LRU_LIST].tail; walker !== null;) { + const prev = walker.prev + forEachStep(this, fn, walker, thisp) + walker = prev + } + } + + forEach (fn, thisp) { + thisp = thisp || this + for (let walker = this[LRU_LIST].head; walker !== null;) { + const next = walker.next + forEachStep(this, fn, walker, thisp) + walker = next + } + } + + keys () { + return this[LRU_LIST].toArray().map(k => k.key) + } + + values () { + return this[LRU_LIST].toArray().map(k => k.value) + } + + reset () { + if (this[DISPOSE] && + this[LRU_LIST] && + this[LRU_LIST].length) { + this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value)) + } + + this[CACHE] = new Map() // hash of items by key + this[LRU_LIST] = new Yallist() // list of items in order of use recency + this[LENGTH] = 0 // length of items in the list + } + + dump () { + return this[LRU_LIST].map(hit => + isStale(this, hit) ? false : { + k: hit.key, + v: hit.value, + e: hit.now + (hit.maxAge || 0) + }).toArray().filter(h => h) + } + + dumpLru () { + return this[LRU_LIST] + } + + set (key, value, maxAge) { + maxAge = maxAge || this[MAX_AGE] + + if (maxAge && typeof maxAge !== 'number') + throw new TypeError('maxAge must be a number') + + const now = maxAge ? Date.now() : 0 + const len = this[LENGTH_CALCULATOR](value, key) + + if (this[CACHE].has(key)) { + if (len > this[MAX]) { + del(this, this[CACHE].get(key)) + return false + } + + const node = this[CACHE].get(key) + const item = node.value + + // dispose of the old one before overwriting + // split out into 2 ifs for better coverage tracking + if (this[DISPOSE]) { + if (!this[NO_DISPOSE_ON_SET]) + this[DISPOSE](key, item.value) + } + + item.now = now + item.maxAge = maxAge + item.value = value + this[LENGTH] += len - item.length + item.length = len + this.get(key) + trim(this) + return true + } + + const hit = new Entry(key, value, len, now, maxAge) + + // oversized objects fall out of cache automatically. + if (hit.length > this[MAX]) { + if (this[DISPOSE]) + this[DISPOSE](key, value) + + return false + } + + this[LENGTH] += hit.length + this[LRU_LIST].unshift(hit) + this[CACHE].set(key, this[LRU_LIST].head) + trim(this) + return true + } + + has (key) { + if (!this[CACHE].has(key)) return false + const hit = this[CACHE].get(key).value + return !isStale(this, hit) + } + + get (key) { + return get(this, key, true) + } + + peek (key) { + return get(this, key, false) + } + + pop () { + const node = this[LRU_LIST].tail + if (!node) + return null + + del(this, node) + return node.value + } + + del (key) { + del(this, this[CACHE].get(key)) + } + + load (arr) { + // reset the cache + this.reset() + + const now = Date.now() + // A previous serialized cache has the most recent items first + for (let l = arr.length - 1; l >= 0; l--) { + const hit = arr[l] + const expiresAt = hit.e || 0 + if (expiresAt === 0) + // the item was created without expiration in a non aged cache + this.set(hit.k, hit.v) + else { + const maxAge = expiresAt - now + // dont add already expired items + if (maxAge > 0) { + this.set(hit.k, hit.v, maxAge) + } + } + } + } + + prune () { + this[CACHE].forEach((value, key) => get(this, key, false)) + } } -const basicHelpState = { - candidateUsage: null, - requiredOptions: [], - errorMessage: null, - ignoreOptions: false, - path: [], - positionals: [], - options: [], - remainder: null, - selectedIndex: constants.HELP_COMMAND_INDEX, -}; -function makeStateMachine() { - return { - nodes: [makeNode(), makeNode(), makeNode()], - }; -} -function makeAnyOfMachine(inputs) { - const output = makeStateMachine(); - const heads = []; - let offset = output.nodes.length; - for (const input of inputs) { - heads.push(offset); - for (let t = 0; t < input.nodes.length; ++t) - if (!isTerminalNode(t)) - output.nodes.push(cloneNode(input.nodes[t], offset)); - offset += input.nodes.length - 2; + +const get = (self, key, doUse) => { + const node = self[CACHE].get(key) + if (node) { + const hit = node.value + if (isStale(self, hit)) { + del(self, node) + if (!self[ALLOW_STALE]) + return undefined + } else { + if (doUse) { + if (self[UPDATE_AGE_ON_GET]) + node.value.now = Date.now() + self[LRU_LIST].unshiftNode(node) + } } - for (const head of heads) - registerShortcut(output, constants.NODE_INITIAL, head); - return output; + return hit.value + } } -function injectNode(machine, node) { - machine.nodes.push(node); - return machine.nodes.length - 1; + +const isStale = (self, hit) => { + if (!hit || (!hit.maxAge && !self[MAX_AGE])) + return false + + const diff = Date.now() - hit.now + return hit.maxAge ? diff > hit.maxAge + : self[MAX_AGE] && (diff > self[MAX_AGE]) } -function simplifyMachine(input) { - const visited = new Set(); - const process = (node) => { - if (visited.has(node)) - return; - visited.add(node); - const nodeDef = input.nodes[node]; - for (const transitions of Object.values(nodeDef.statics)) - for (const { to } of transitions) - process(to); - for (const [, { to }] of nodeDef.dynamics) - process(to); - for (const { to } of nodeDef.shortcuts) - process(to); - const shortcuts = new Set(nodeDef.shortcuts.map(({ to }) => to)); - while (nodeDef.shortcuts.length > 0) { - const { to } = nodeDef.shortcuts.shift(); - const toDef = input.nodes[to]; - for (const [segment, transitions] of Object.entries(toDef.statics)) { - const store = !Object.prototype.hasOwnProperty.call(nodeDef.statics, segment) - ? nodeDef.statics[segment] = [] - : nodeDef.statics[segment]; - for (const transition of transitions) { - if (!store.some(({ to }) => transition.to === to)) { - store.push(transition); - } - } - } - for (const [test, transition] of toDef.dynamics) - if (!nodeDef.dynamics.some(([otherTest, { to }]) => test === otherTest && transition.to === to)) - nodeDef.dynamics.push([test, transition]); - for (const transition of toDef.shortcuts) { - if (!shortcuts.has(transition.to)) { - nodeDef.shortcuts.push(transition); - shortcuts.add(transition.to); - } - } - } - }; - process(constants.NODE_INITIAL); -} -function debugMachine(machine, { prefix = `` } = {}) { - // Don't iterate unless it's needed - if (constants.DEBUG) { - debug(`${prefix}Nodes are:`); - for (let t = 0; t < machine.nodes.length; ++t) { - debug(`${prefix} ${t}: ${JSON.stringify(machine.nodes[t])}`); - } - } -} -function runMachineInternal(machine, input, partial = false) { - debug(`Running a vm on ${JSON.stringify(input)}`); - let branches = [{ node: constants.NODE_INITIAL, state: { - candidateUsage: null, - requiredOptions: [], - errorMessage: null, - ignoreOptions: false, - options: [], - path: [], - positionals: [], - remainder: null, - selectedIndex: null, - } }]; - debugMachine(machine, { prefix: ` ` }); - const tokens = [constants.START_OF_INPUT, ...input]; - for (let t = 0; t < tokens.length; ++t) { - const segment = tokens[t]; - debug(` Processing ${JSON.stringify(segment)}`); - const nextBranches = []; - for (const { node, state } of branches) { - debug(` Current node is ${node}`); - const nodeDef = machine.nodes[node]; - if (node === constants.NODE_ERRORED) { - nextBranches.push({ node, state }); - continue; - } - console.assert(nodeDef.shortcuts.length === 0, `Shortcuts should have been eliminated by now`); - const hasExactMatch = Object.prototype.hasOwnProperty.call(nodeDef.statics, segment); - if (!partial || t < tokens.length - 1 || hasExactMatch) { - if (hasExactMatch) { - const transitions = nodeDef.statics[segment]; - for (const { to, reducer } of transitions) { - nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment) : state }); - debug(` Static transition to ${to} found`); - } - } - else { - debug(` No static transition found`); - } - } - else { - let hasMatches = false; - for (const candidate of Object.keys(nodeDef.statics)) { - if (!candidate.startsWith(segment)) - continue; - if (segment === candidate) { - for (const { to, reducer } of nodeDef.statics[candidate]) { - nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment) : state }); - debug(` Static transition to ${to} found`); - } - } - else { - for (const { to } of nodeDef.statics[candidate]) { - nextBranches.push({ node: to, state: { ...state, remainder: candidate.slice(segment.length) } }); - debug(` Static transition to ${to} found (partial match)`); - } - } - hasMatches = true; - } - if (!hasMatches) { - debug(` No partial static transition found`); - } - } - if (segment !== constants.END_OF_INPUT) { - for (const [test, { to, reducer }] of nodeDef.dynamics) { - if (execute(tests, test, state, segment)) { - nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment) : state }); - debug(` Dynamic transition to ${to} found (via ${test})`); - } - } - } - } - if (nextBranches.length === 0 && segment === constants.END_OF_INPUT && input.length === 1) { - return [{ - node: constants.NODE_INITIAL, - state: basicHelpState, - }]; - } - if (nextBranches.length === 0) { - throw new errors.UnknownSyntaxError(input, branches.filter(({ node }) => { - return node !== constants.NODE_ERRORED; - }).map(({ state }) => { - return { usage: state.candidateUsage, reason: null }; - })); - } - if (nextBranches.every(({ node }) => node === constants.NODE_ERRORED)) { - throw new errors.UnknownSyntaxError(input, nextBranches.map(({ state }) => { - return { usage: state.candidateUsage, reason: state.errorMessage }; - })); - } - branches = trimSmallerBranches(nextBranches); - } - if (branches.length > 0) { - debug(` Results:`); - for (const branch of branches) { - debug(` - ${branch.node} -> ${JSON.stringify(branch.state)}`); - } - } - else { - debug(` No results`); + +const trim = self => { + if (self[LENGTH] > self[MAX]) { + for (let walker = self[LRU_LIST].tail; + self[LENGTH] > self[MAX] && walker !== null;) { + // We know that we're about to delete this one, and also + // what the next least recently used key will be, so just + // go ahead and set it now. + const prev = walker.prev + del(self, walker) + walker = prev } - return branches; + } } -function checkIfNodeIsFinished(node, state) { - if (state.selectedIndex !== null) - return true; - if (Object.prototype.hasOwnProperty.call(node.statics, constants.END_OF_INPUT)) - for (const { to } of node.statics[constants.END_OF_INPUT]) - if (to === constants.NODE_SUCCESS) - return true; - return false; + +const del = (self, node) => { + if (node) { + const hit = node.value + if (self[DISPOSE]) + self[DISPOSE](hit.key, hit.value) + + self[LENGTH] -= hit.length + self[CACHE].delete(hit.key) + self[LRU_LIST].removeNode(node) + } } -function suggestMachine(machine, input, partial) { - // If we're accepting partial matches, then exact matches need to be - // prefixed with an extra space. - const prefix = partial && input.length > 0 ? [``] : []; - const branches = runMachineInternal(machine, input, partial); - const suggestions = []; - const suggestionsJson = new Set(); - const traverseSuggestion = (suggestion, node, skipFirst = true) => { - let nextNodes = [node]; - while (nextNodes.length > 0) { - const currentNodes = nextNodes; - nextNodes = []; - for (const node of currentNodes) { - const nodeDef = machine.nodes[node]; - const keys = Object.keys(nodeDef.statics); - // The fact that `key` is unused is likely a bug, but no one has investigated it yet. - // TODO: Investigate it. - // eslint-disable-next-line @typescript-eslint/no-unused-vars - for (const key of Object.keys(nodeDef.statics)) { - const segment = keys[0]; - for (const { to, reducer } of nodeDef.statics[segment]) { - if (reducer !== `pushPath`) - continue; - if (!skipFirst) - suggestion.push(segment); - nextNodes.push(to); - } - } - } - skipFirst = false; - } - const json = JSON.stringify(suggestion); - if (suggestionsJson.has(json)) - return; - suggestions.push(suggestion); - suggestionsJson.add(json); - }; - for (const { node, state } of branches) { - if (state.remainder !== null) { - traverseSuggestion([state.remainder], node); - continue; - } - const nodeDef = machine.nodes[node]; - const isFinished = checkIfNodeIsFinished(nodeDef, state); - for (const [candidate, transitions] of Object.entries(nodeDef.statics)) - if ((isFinished && candidate !== constants.END_OF_INPUT) || (!candidate.startsWith(`-`) && transitions.some(({ reducer }) => reducer === `pushPath`))) - traverseSuggestion([...prefix, candidate], node); - if (!isFinished) - continue; - for (const [test, { to }] of nodeDef.dynamics) { - if (to === constants.NODE_ERRORED) - continue; - const tokens = suggest(test, state); - if (tokens === null) - continue; - for (const token of tokens) { - traverseSuggestion([...prefix, token], node); - } - } - } - return [...suggestions].sort(); + +class Entry { + constructor (key, value, length, now, maxAge) { + this.key = key + this.value = value + this.length = length + this.now = now + this.maxAge = maxAge || 0 + } } -function runMachine(machine, input) { - const branches = runMachineInternal(machine, [...input, constants.END_OF_INPUT]); - return selectBestState(input, branches.map(({ state }) => { - return state; - })); + +const forEachStep = (self, fn, node, thisp) => { + let hit = node.value + if (isStale(self, hit)) { + del(self, node) + if (!self[ALLOW_STALE]) + hit = undefined + } + if (hit) + fn.call(thisp, hit.value, hit.key, self) } -function trimSmallerBranches(branches) { - let maxPathSize = 0; - for (const { state } of branches) - if (state.path.length > maxPathSize) - maxPathSize = state.path.length; - return branches.filter(({ state }) => { - return state.path.length === maxPathSize; - }); + +module.exports = LRUCache + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/minipass-npm-3.3.4-6cf48a6c5e-9.zip/node_modules/minipass/index.js": +/*!*****************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/minipass-npm-3.3.4-6cf48a6c5e-9.zip/node_modules/minipass/index.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +const proc = typeof process === 'object' && process ? process : { + stdout: null, + stderr: null, } -function selectBestState(input, states) { - const terminalStates = states.filter(state => { - return state.selectedIndex !== null; - }); - if (terminalStates.length === 0) - throw new Error(); - const requiredOptionsSetStates = terminalStates.filter(state => state.requiredOptions.every(names => names.some(name => state.options.find(opt => opt.name === name)))); - if (requiredOptionsSetStates.length === 0) { - throw new errors.UnknownSyntaxError(input, terminalStates.map(state => ({ - usage: state.candidateUsage, - reason: null, - }))); - } - let maxPathSize = 0; - for (const state of requiredOptionsSetStates) - if (state.path.length > maxPathSize) - maxPathSize = state.path.length; - const bestPathBranches = requiredOptionsSetStates.filter(state => { - return state.path.length === maxPathSize; - }); - const getPositionalCount = (state) => state.positionals.filter(({ extra }) => { - return !extra; - }).length + state.options.length; - const statesWithPositionalCount = bestPathBranches.map(state => { - return { state, positionalCount: getPositionalCount(state) }; - }); - let maxPositionalCount = 0; - for (const { positionalCount } of statesWithPositionalCount) - if (positionalCount > maxPositionalCount) - maxPositionalCount = positionalCount; - const bestPositionalStates = statesWithPositionalCount.filter(({ positionalCount }) => { - return positionalCount === maxPositionalCount; - }).map(({ state }) => { - return state; - }); - const fixedStates = aggregateHelpStates(bestPositionalStates); - if (fixedStates.length > 1) - throw new errors.AmbiguousSyntaxError(input, fixedStates.map(state => state.candidateUsage)); - return fixedStates[0]; +const EE = __webpack_require__(/*! events */ "events") +const Stream = __webpack_require__(/*! stream */ "stream") +const SD = (__webpack_require__(/*! string_decoder */ "string_decoder").StringDecoder) + +const EOF = Symbol('EOF') +const MAYBE_EMIT_END = Symbol('maybeEmitEnd') +const EMITTED_END = Symbol('emittedEnd') +const EMITTING_END = Symbol('emittingEnd') +const EMITTED_ERROR = Symbol('emittedError') +const CLOSED = Symbol('closed') +const READ = Symbol('read') +const FLUSH = Symbol('flush') +const FLUSHCHUNK = Symbol('flushChunk') +const ENCODING = Symbol('encoding') +const DECODER = Symbol('decoder') +const FLOWING = Symbol('flowing') +const PAUSED = Symbol('paused') +const RESUME = Symbol('resume') +const BUFFERLENGTH = Symbol('bufferLength') +const BUFFERPUSH = Symbol('bufferPush') +const BUFFERSHIFT = Symbol('bufferShift') +const OBJECTMODE = Symbol('objectMode') +const DESTROYED = Symbol('destroyed') +const EMITDATA = Symbol('emitData') +const EMITEND = Symbol('emitEnd') +const EMITEND2 = Symbol('emitEnd2') +const ASYNC = Symbol('async') + +const defer = fn => Promise.resolve().then(fn) + +// TODO remove when Node v8 support drops +const doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1' +const ASYNCITERATOR = doIter && Symbol.asyncIterator + || Symbol('asyncIterator not implemented') +const ITERATOR = doIter && Symbol.iterator + || Symbol('iterator not implemented') + +// events that mean 'the stream is over' +// these are treated specially, and re-emitted +// if they are listened for after emitting. +const isEndish = ev => + ev === 'end' || + ev === 'finish' || + ev === 'prefinish' + +const isArrayBuffer = b => b instanceof ArrayBuffer || + typeof b === 'object' && + b.constructor && + b.constructor.name === 'ArrayBuffer' && + b.byteLength >= 0 + +const isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b) + +class Pipe { + constructor (src, dest, opts) { + this.src = src + this.dest = dest + this.opts = opts + this.ondrain = () => src[RESUME]() + dest.on('drain', this.ondrain) + } + unpipe () { + this.dest.removeListener('drain', this.ondrain) + } + // istanbul ignore next - only here for the prototype + proxyErrors () {} + end () { + this.unpipe() + if (this.opts.end) + this.dest.end() + } } -function aggregateHelpStates(states) { - const notHelps = []; - const helps = []; - for (const state of states) { - if (state.selectedIndex === constants.HELP_COMMAND_INDEX) { - helps.push(state); - } - else { - notHelps.push(state); - } + +class PipeProxyErrors extends Pipe { + unpipe () { + this.src.removeListener('error', this.proxyErrors) + super.unpipe() + } + constructor (src, dest, opts) { + super(src, dest, opts) + this.proxyErrors = er => dest.emit('error', er) + src.on('error', this.proxyErrors) + } +} + +module.exports = class Minipass extends Stream { + constructor (options) { + super() + this[FLOWING] = false + // whether we're explicitly paused + this[PAUSED] = false + this.pipes = [] + this.buffer = [] + this[OBJECTMODE] = options && options.objectMode || false + if (this[OBJECTMODE]) + this[ENCODING] = null + else + this[ENCODING] = options && options.encoding || null + if (this[ENCODING] === 'buffer') + this[ENCODING] = null + this[ASYNC] = options && !!options.async || false + this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null + this[EOF] = false + this[EMITTED_END] = false + this[EMITTING_END] = false + this[CLOSED] = false + this[EMITTED_ERROR] = null + this.writable = true + this.readable = true + this[BUFFERLENGTH] = 0 + this[DESTROYED] = false + } + + get bufferLength () { return this[BUFFERLENGTH] } + + get encoding () { return this[ENCODING] } + set encoding (enc) { + if (this[OBJECTMODE]) + throw new Error('cannot set encoding in objectMode') + + if (this[ENCODING] && enc !== this[ENCODING] && + (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH])) + throw new Error('cannot change encoding') + + if (this[ENCODING] !== enc) { + this[DECODER] = enc ? new SD(enc) : null + if (this.buffer.length) + this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk)) } - if (helps.length > 0) { - notHelps.push({ - ...basicHelpState, - path: findCommonPrefix(...helps.map(state => state.path)), - options: helps.reduce((options, state) => options.concat(state.options), []), - }); + + this[ENCODING] = enc + } + + setEncoding (enc) { + this.encoding = enc + } + + get objectMode () { return this[OBJECTMODE] } + set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om } + + get ['async'] () { return this[ASYNC] } + set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a } + + write (chunk, encoding, cb) { + if (this[EOF]) + throw new Error('write after end') + + if (this[DESTROYED]) { + this.emit('error', Object.assign( + new Error('Cannot call write after a stream was destroyed'), + { code: 'ERR_STREAM_DESTROYED' } + )) + return true } - return notHelps; -} -function findCommonPrefix(firstPath, secondPath, ...rest) { - if (secondPath === undefined) - return Array.from(firstPath); - return findCommonPrefix(firstPath.filter((segment, i) => segment === secondPath[i]), ...rest); -} -function makeNode() { - return { - dynamics: [], - shortcuts: [], - statics: {}, - }; -} -function isTerminalNode(node) { - return node === constants.NODE_SUCCESS || node === constants.NODE_ERRORED; -} -function cloneTransition(input, offset = 0) { - return { - to: !isTerminalNode(input.to) ? input.to > 2 ? input.to + offset - 2 : input.to + offset : input.to, - reducer: input.reducer, - }; -} -function cloneNode(input, offset = 0) { - const output = makeNode(); - for (const [test, transition] of input.dynamics) - output.dynamics.push([test, cloneTransition(transition, offset)]); - for (const transition of input.shortcuts) - output.shortcuts.push(cloneTransition(transition, offset)); - for (const [segment, transitions] of Object.entries(input.statics)) - output.statics[segment] = transitions.map(transition => cloneTransition(transition, offset)); - return output; -} -function registerDynamic(machine, from, test, to, reducer) { - machine.nodes[from].dynamics.push([ - test, - { to, reducer: reducer }, - ]); -} -function registerShortcut(machine, from, to, reducer) { - machine.nodes[from].shortcuts.push({ to, reducer: reducer }); -} -function registerStatic(machine, from, test, to, reducer) { - const store = !Object.prototype.hasOwnProperty.call(machine.nodes[from].statics, test) - ? machine.nodes[from].statics[test] = [] - : machine.nodes[from].statics[test]; - store.push({ to, reducer: reducer }); -} -function execute(store, callback, state, segment) { - // TypeScript's control flow can't properly narrow - // generic conditionals for some mysterious reason - if (Array.isArray(callback)) { - const [name, ...args] = callback; - return store[name](state, segment, ...args); + + if (typeof encoding === 'function') + cb = encoding, encoding = 'utf8' + + if (!encoding) + encoding = 'utf8' + + const fn = this[ASYNC] ? defer : f => f() + + // convert array buffers and typed array views into buffers + // at some point in the future, we may want to do the opposite! + // leave strings and buffers as-is + // anything else switches us into object mode + if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) { + if (isArrayBufferView(chunk)) + chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength) + else if (isArrayBuffer(chunk)) + chunk = Buffer.from(chunk) + else if (typeof chunk !== 'string') + // use the setter so we throw if we have encoding set + this.objectMode = true } - else { - return store[callback](state, segment); + + // handle object mode up front, since it's simpler + // this yields better performance, fewer checks later. + if (this[OBJECTMODE]) { + /* istanbul ignore if - maybe impossible? */ + if (this.flowing && this[BUFFERLENGTH] !== 0) + this[FLUSH](true) + + if (this.flowing) + this.emit('data', chunk) + else + this[BUFFERPUSH](chunk) + + if (this[BUFFERLENGTH] !== 0) + this.emit('readable') + + if (cb) + fn(cb) + + return this.flowing } -} -function suggest(callback, state) { - const fn = Array.isArray(callback) - ? tests[callback[0]] - : tests[callback]; - // @ts-ignore - if (typeof fn.suggest === `undefined`) - return null; - const args = Array.isArray(callback) - ? callback.slice(1) - : []; - // @ts-ignore - return fn.suggest(state, ...args); -} -const tests = { - always: () => { - return true; - }, - isOptionLike: (state, segment) => { - return !state.ignoreOptions && (segment !== `-` && segment.startsWith(`-`)); - }, - isNotOptionLike: (state, segment) => { - return state.ignoreOptions || segment === `-` || !segment.startsWith(`-`); - }, - isOption: (state, segment, name, hidden) => { - return !state.ignoreOptions && segment === name; - }, - isBatchOption: (state, segment, names) => { - return !state.ignoreOptions && constants.BATCH_REGEX.test(segment) && [...segment.slice(1)].every(name => names.includes(`-${name}`)); - }, - isBoundOption: (state, segment, names, options) => { - const optionParsing = segment.match(constants.BINDING_REGEX); - return !state.ignoreOptions && !!optionParsing && constants.OPTION_REGEX.test(optionParsing[1]) && names.includes(optionParsing[1]) - // Disallow bound options with no arguments (i.e. booleans) - && options.filter(opt => opt.names.includes(optionParsing[1])).every(opt => opt.allowBinding); - }, - isNegatedOption: (state, segment, name) => { - return !state.ignoreOptions && segment === `--no-${name.slice(2)}`; - }, - isHelp: (state, segment) => { - return !state.ignoreOptions && constants.HELP_REGEX.test(segment); - }, - isUnsupportedOption: (state, segment, names) => { - return !state.ignoreOptions && segment.startsWith(`-`) && constants.OPTION_REGEX.test(segment) && !names.includes(segment); - }, - isInvalidOption: (state, segment) => { - return !state.ignoreOptions && segment.startsWith(`-`) && !constants.OPTION_REGEX.test(segment); - }, -}; -// @ts-ignore -tests.isOption.suggest = (state, name, hidden = true) => { - return !hidden ? [name] : null; -}; -const reducers = { - setCandidateState: (state, segment, candidateState) => { - return { ...state, ...candidateState }; - }, - setSelectedIndex: (state, segment, index) => { - return { ...state, selectedIndex: index }; - }, - pushBatch: (state, segment) => { - return { ...state, options: state.options.concat([...segment.slice(1)].map(name => ({ name: `-${name}`, value: true }))) }; - }, - pushBound: (state, segment) => { - const [, name, value] = segment.match(constants.BINDING_REGEX); - return { ...state, options: state.options.concat({ name, value }) }; - }, - pushPath: (state, segment) => { - return { ...state, path: state.path.concat(segment) }; - }, - pushPositional: (state, segment) => { - return { ...state, positionals: state.positionals.concat({ value: segment, extra: false }) }; - }, - pushExtra: (state, segment) => { - return { ...state, positionals: state.positionals.concat({ value: segment, extra: true }) }; - }, - pushExtraNoLimits: (state, segment) => { - return { ...state, positionals: state.positionals.concat({ value: segment, extra: NoLimits }) }; - }, - pushTrue: (state, segment, name = segment) => { - return { ...state, options: state.options.concat({ name: segment, value: true }) }; - }, - pushFalse: (state, segment, name = segment) => { - return { ...state, options: state.options.concat({ name, value: false }) }; - }, - pushUndefined: (state, segment) => { - return { ...state, options: state.options.concat({ name: segment, value: undefined }) }; - }, - pushStringValue: (state, segment) => { - var _a; - const copy = { ...state, options: [...state.options] }; - const lastOption = state.options[state.options.length - 1]; - lastOption.value = ((_a = lastOption.value) !== null && _a !== void 0 ? _a : []).concat([segment]); - return copy; - }, - setStringValue: (state, segment) => { - const copy = { ...state, options: [...state.options] }; - const lastOption = state.options[state.options.length - 1]; - lastOption.value = segment; - return copy; - }, - inhibateOptions: (state) => { - return { ...state, ignoreOptions: true }; - }, - useHelp: (state, segment, command) => { - const [, /* name */ , index] = segment.match(constants.HELP_REGEX); - if (typeof index !== `undefined`) { - return { ...state, options: [{ name: `-c`, value: String(command) }, { name: `-i`, value: index }] }; - } - else { - return { ...state, options: [{ name: `-c`, value: String(command) }] }; - } - }, - setError: (state, segment, errorMessage) => { - if (segment === constants.END_OF_INPUT) { - return { ...state, errorMessage: `${errorMessage}.` }; - } - else { - return { ...state, errorMessage: `${errorMessage} ("${segment}").` }; - } - }, - setOptionArityError: (state, segment) => { - const lastOption = state.options[state.options.length - 1]; - return { ...state, errorMessage: `Not enough arguments to option ${lastOption.name}.` }; - }, -}; -// ------------------------------------------------------------------------ -const NoLimits = Symbol(); -class CommandBuilder { - constructor(cliIndex, cliOpts) { - this.allOptionNames = []; - this.arity = { leading: [], trailing: [], extra: [], proxy: false }; - this.options = []; - this.paths = []; - this.cliIndex = cliIndex; - this.cliOpts = cliOpts; - } - addPath(path) { - this.paths.push(path); - } - setArity({ leading = this.arity.leading, trailing = this.arity.trailing, extra = this.arity.extra, proxy = this.arity.proxy }) { - Object.assign(this.arity, { leading, trailing, extra, proxy }); - } - addPositional({ name = `arg`, required = true } = {}) { - if (!required && this.arity.extra === NoLimits) - throw new Error(`Optional parameters cannot be declared when using .rest() or .proxy()`); - if (!required && this.arity.trailing.length > 0) - throw new Error(`Optional parameters cannot be declared after the required trailing positional arguments`); - if (!required && this.arity.extra !== NoLimits) { - this.arity.extra.push(name); - } - else if (this.arity.extra !== NoLimits && this.arity.extra.length === 0) { - this.arity.leading.push(name); - } - else { - this.arity.trailing.push(name); - } - } - addRest({ name = `arg`, required = 0 } = {}) { - if (this.arity.extra === NoLimits) - throw new Error(`Infinite lists cannot be declared multiple times in the same command`); - if (this.arity.trailing.length > 0) - throw new Error(`Infinite lists cannot be declared after the required trailing positional arguments`); - for (let t = 0; t < required; ++t) - this.addPositional({ name }); - this.arity.extra = NoLimits; + + // at this point the chunk is a buffer or string + // don't buffer it up or send it to the decoder + if (!chunk.length) { + if (this[BUFFERLENGTH] !== 0) + this.emit('readable') + if (cb) + fn(cb) + return this.flowing } - addProxy({ required = 0 } = {}) { - this.addRest({ required }); - this.arity.proxy = true; + + // fast-path writing strings of same encoding to a stream with + // an empty buffer, skipping the buffer/decoder dance + if (typeof chunk === 'string' && + // unless it is a string already ready for us to use + !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) { + chunk = Buffer.from(chunk, encoding) } - addOption({ names, description, arity = 0, hidden = false, required = false, allowBinding = true }) { - if (!allowBinding && arity > 1) - throw new Error(`The arity cannot be higher than 1 when the option only supports the --arg=value syntax`); - if (!Number.isInteger(arity)) - throw new Error(`The arity must be an integer, got ${arity}`); - if (arity < 0) - throw new Error(`The arity must be positive, got ${arity}`); - this.allOptionNames.push(...names); - this.options.push({ names, description, arity, hidden, required, allowBinding }); + + if (Buffer.isBuffer(chunk) && this[ENCODING]) + chunk = this[DECODER].write(chunk) + + // Note: flushing CAN potentially switch us into not-flowing mode + if (this.flowing && this[BUFFERLENGTH] !== 0) + this[FLUSH](true) + + if (this.flowing) + this.emit('data', chunk) + else + this[BUFFERPUSH](chunk) + + if (this[BUFFERLENGTH] !== 0) + this.emit('readable') + + if (cb) + fn(cb) + + return this.flowing + } + + read (n) { + if (this[DESTROYED]) + return null + + if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) { + this[MAYBE_EMIT_END]() + return null } - setContext(context) { - this.context = context; + + if (this[OBJECTMODE]) + n = null + + if (this.buffer.length > 1 && !this[OBJECTMODE]) { + if (this.encoding) + this.buffer = [this.buffer.join('')] + else + this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])] } - usage({ detailed = true, inlineOptions = true } = {}) { - const segments = [this.cliOpts.binaryName]; - const detailedOptionList = []; - if (this.paths.length > 0) - segments.push(...this.paths[0]); - if (detailed) { - for (const { names, arity, hidden, description, required } of this.options) { - if (hidden) - continue; - const args = []; - for (let t = 0; t < arity; ++t) - args.push(` #${t}`); - const definition = `${names.join(`,`)}${args.join(``)}`; - if (!inlineOptions && description) { - detailedOptionList.push({ definition, description, required }); - } - else { - segments.push(required ? `<${definition}>` : `[${definition}]`); - } - } - segments.push(...this.arity.leading.map(name => `<${name}>`)); - if (this.arity.extra === NoLimits) - segments.push(`...`); - else - segments.push(...this.arity.extra.map(name => `[${name}]`)); - segments.push(...this.arity.trailing.map(name => `<${name}>`)); - } - const usage = segments.join(` `); - return { usage, options: detailedOptionList }; + + const ret = this[READ](n || null, this.buffer[0]) + this[MAYBE_EMIT_END]() + return ret + } + + [READ] (n, chunk) { + if (n === chunk.length || n === null) + this[BUFFERSHIFT]() + else { + this.buffer[0] = chunk.slice(n) + chunk = chunk.slice(0, n) + this[BUFFERLENGTH] -= n } - compile() { - if (typeof this.context === `undefined`) - throw new Error(`Assertion failed: No context attached`); - const machine = makeStateMachine(); - let firstNode = constants.NODE_INITIAL; - const candidateUsage = this.usage().usage; - const requiredOptions = this.options - .filter(opt => opt.required) - .map(opt => opt.names); - firstNode = injectNode(machine, makeNode()); - registerStatic(machine, constants.NODE_INITIAL, constants.START_OF_INPUT, firstNode, [`setCandidateState`, { candidateUsage, requiredOptions }]); - const positionalArgument = this.arity.proxy - ? `always` - : `isNotOptionLike`; - const paths = this.paths.length > 0 - ? this.paths - : [[]]; - for (const path of paths) { - let lastPathNode = firstNode; - // We allow options to be specified before the path. Note that we - // only do this when there is a path, otherwise there would be - // some redundancy with the options attached later. - if (path.length > 0) { - const optionPathNode = injectNode(machine, makeNode()); - registerShortcut(machine, lastPathNode, optionPathNode); - this.registerOptions(machine, optionPathNode); - lastPathNode = optionPathNode; - } - for (let t = 0; t < path.length; ++t) { - const nextPathNode = injectNode(machine, makeNode()); - registerStatic(machine, lastPathNode, path[t], nextPathNode, `pushPath`); - lastPathNode = nextPathNode; - } - if (this.arity.leading.length > 0 || !this.arity.proxy) { - const helpNode = injectNode(machine, makeNode()); - registerDynamic(machine, lastPathNode, `isHelp`, helpNode, [`useHelp`, this.cliIndex]); - registerStatic(machine, helpNode, constants.END_OF_INPUT, constants.NODE_SUCCESS, [`setSelectedIndex`, constants.HELP_COMMAND_INDEX]); - this.registerOptions(machine, lastPathNode); - } - if (this.arity.leading.length > 0) - registerStatic(machine, lastPathNode, constants.END_OF_INPUT, constants.NODE_ERRORED, [`setError`, `Not enough positional arguments`]); - let lastLeadingNode = lastPathNode; - for (let t = 0; t < this.arity.leading.length; ++t) { - const nextLeadingNode = injectNode(machine, makeNode()); - if (!this.arity.proxy) - this.registerOptions(machine, nextLeadingNode); - if (this.arity.trailing.length > 0 || t + 1 !== this.arity.leading.length) - registerStatic(machine, nextLeadingNode, constants.END_OF_INPUT, constants.NODE_ERRORED, [`setError`, `Not enough positional arguments`]); - registerDynamic(machine, lastLeadingNode, `isNotOptionLike`, nextLeadingNode, `pushPositional`); - lastLeadingNode = nextLeadingNode; - } - let lastExtraNode = lastLeadingNode; - if (this.arity.extra === NoLimits || this.arity.extra.length > 0) { - const extraShortcutNode = injectNode(machine, makeNode()); - registerShortcut(machine, lastLeadingNode, extraShortcutNode); - if (this.arity.extra === NoLimits) { - const extraNode = injectNode(machine, makeNode()); - if (!this.arity.proxy) - this.registerOptions(machine, extraNode); - registerDynamic(machine, lastLeadingNode, positionalArgument, extraNode, `pushExtraNoLimits`); - registerDynamic(machine, extraNode, positionalArgument, extraNode, `pushExtraNoLimits`); - registerShortcut(machine, extraNode, extraShortcutNode); - } - else { - for (let t = 0; t < this.arity.extra.length; ++t) { - const nextExtraNode = injectNode(machine, makeNode()); - if (!this.arity.proxy) - this.registerOptions(machine, nextExtraNode); - registerDynamic(machine, lastExtraNode, positionalArgument, nextExtraNode, `pushExtra`); - registerShortcut(machine, nextExtraNode, extraShortcutNode); - lastExtraNode = nextExtraNode; - } - } - lastExtraNode = extraShortcutNode; - } - if (this.arity.trailing.length > 0) - registerStatic(machine, lastExtraNode, constants.END_OF_INPUT, constants.NODE_ERRORED, [`setError`, `Not enough positional arguments`]); - let lastTrailingNode = lastExtraNode; - for (let t = 0; t < this.arity.trailing.length; ++t) { - const nextTrailingNode = injectNode(machine, makeNode()); - if (!this.arity.proxy) - this.registerOptions(machine, nextTrailingNode); - if (t + 1 < this.arity.trailing.length) - registerStatic(machine, nextTrailingNode, constants.END_OF_INPUT, constants.NODE_ERRORED, [`setError`, `Not enough positional arguments`]); - registerDynamic(machine, lastTrailingNode, `isNotOptionLike`, nextTrailingNode, `pushPositional`); - lastTrailingNode = nextTrailingNode; - } - registerDynamic(machine, lastTrailingNode, positionalArgument, constants.NODE_ERRORED, [`setError`, `Extraneous positional argument`]); - registerStatic(machine, lastTrailingNode, constants.END_OF_INPUT, constants.NODE_SUCCESS, [`setSelectedIndex`, this.cliIndex]); - } - return { - machine, - context: this.context, - }; - } - registerOptions(machine, node) { - registerDynamic(machine, node, [`isOption`, `--`], node, `inhibateOptions`); - registerDynamic(machine, node, [`isBatchOption`, this.allOptionNames], node, `pushBatch`); - registerDynamic(machine, node, [`isBoundOption`, this.allOptionNames, this.options], node, `pushBound`); - registerDynamic(machine, node, [`isUnsupportedOption`, this.allOptionNames], constants.NODE_ERRORED, [`setError`, `Unsupported option name`]); - registerDynamic(machine, node, [`isInvalidOption`], constants.NODE_ERRORED, [`setError`, `Invalid option name`]); - for (const option of this.options) { - const longestName = option.names.reduce((longestName, name) => { - return name.length > longestName.length ? name : longestName; - }, ``); - if (option.arity === 0) { - for (const name of option.names) { - registerDynamic(machine, node, [`isOption`, name, option.hidden || name !== longestName], node, `pushTrue`); - if (name.startsWith(`--`) && !name.startsWith(`--no-`)) { - registerDynamic(machine, node, [`isNegatedOption`, name], node, [`pushFalse`, name]); - } - } - } - else { - // We inject a new node at the end of the state machine - let lastNode = injectNode(machine, makeNode()); - // We register transitions from the starting node to this new node - for (const name of option.names) - registerDynamic(machine, node, [`isOption`, name, option.hidden || name !== longestName], lastNode, `pushUndefined`); - // For each argument, we inject a new node at the end and we - // register a transition from the current node to this new node - for (let t = 0; t < option.arity; ++t) { - const nextNode = injectNode(machine, makeNode()); - // We can provide better errors when another option or END_OF_INPUT is encountered - registerStatic(machine, lastNode, constants.END_OF_INPUT, constants.NODE_ERRORED, `setOptionArityError`); - registerDynamic(machine, lastNode, `isOptionLike`, constants.NODE_ERRORED, `setOptionArityError`); - // If the option has a single argument, no need to store it in an array - const action = option.arity === 1 - ? `setStringValue` - : `pushStringValue`; - registerDynamic(machine, lastNode, `isNotOptionLike`, nextNode, action); - lastNode = nextNode; - } - // In the end, we register a shortcut from - // the last node back to the starting node - registerShortcut(machine, lastNode, node); - } - } - } -} -class CliBuilder { - constructor({ binaryName = `...` } = {}) { - this.builders = []; - this.opts = { binaryName }; - } - static build(cbs, opts = {}) { - return new CliBuilder(opts).commands(cbs).compile(); - } - getBuilderByIndex(n) { - if (!(n >= 0 && n < this.builders.length)) - throw new Error(`Assertion failed: Out-of-bound command index (${n})`); - return this.builders[n]; - } - commands(cbs) { - for (const cb of cbs) - cb(this.command()); - return this; - } - command() { - const builder = new CommandBuilder(this.builders.length, this.opts); - this.builders.push(builder); - return builder; - } - compile() { - const machines = []; - const contexts = []; - for (const builder of this.builders) { - const { machine, context } = builder.compile(); - machines.push(machine); - contexts.push(context); - } - const machine = makeAnyOfMachine(machines); - simplifyMachine(machine); - return { - machine, - contexts, - process: (input) => { - return runMachine(machine, input); - }, - suggest: (input, partial) => { - return suggestMachine(machine, input, partial); - }, - }; - } -} -exports.CliBuilder = CliBuilder; -exports.CommandBuilder = CommandBuilder; -exports.NoLimits = NoLimits; -exports.aggregateHelpStates = aggregateHelpStates; -exports.cloneNode = cloneNode; -exports.cloneTransition = cloneTransition; -exports.debug = debug; -exports.debugMachine = debugMachine; -exports.execute = execute; -exports.injectNode = injectNode; -exports.isTerminalNode = isTerminalNode; -exports.makeAnyOfMachine = makeAnyOfMachine; -exports.makeNode = makeNode; -exports.makeStateMachine = makeStateMachine; -exports.reducers = reducers; -exports.registerDynamic = registerDynamic; -exports.registerShortcut = registerShortcut; -exports.registerStatic = registerStatic; -exports.runMachineInternal = runMachineInternal; -exports.selectBestState = selectBestState; -exports.simplifyMachine = simplifyMachine; -exports.suggest = suggest; -exports.tests = tests; -exports.trimSmallerBranches = trimSmallerBranches; + this.emit('data', chunk) + if (!this.buffer.length && !this[EOF]) + this.emit('drain') -/***/ }), + return chunk + } -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/errors.js": -/*!***************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/errors.js ***! - \***************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + end (chunk, encoding, cb) { + if (typeof chunk === 'function') + cb = chunk, chunk = null + if (typeof encoding === 'function') + cb = encoding, encoding = 'utf8' + if (chunk) + this.write(chunk, encoding) + if (cb) + this.once('end', cb) + this[EOF] = true + this.writable = false -"use strict"; + // if we haven't written anything, then go ahead and emit, + // even if we're not reading. + // we'll re-emit if a new 'end' listener is added anyway. + // This makes MP more suitable to write-only use cases. + if (this.flowing || !this[PAUSED]) + this[MAYBE_EMIT_END]() + return this + } + // don't let the internal resume be overwritten + [RESUME] () { + if (this[DESTROYED]) + return -Object.defineProperty(exports, "__esModule", ({ value: true })); + this[PAUSED] = false + this[FLOWING] = true + this.emit('resume') + if (this.buffer.length) + this[FLUSH]() + else if (this[EOF]) + this[MAYBE_EMIT_END]() + else + this.emit('drain') + } -var constants = __webpack_require__(/*! ./constants.js */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/constants.js"); + resume () { + return this[RESUME]() + } -/** - * A generic usage error with the name `UsageError`. - * - * It should be used over `Error` only when it's the user's fault. - */ -class UsageError extends Error { - constructor(message) { - super(message); - this.clipanion = { type: `usage` }; - this.name = `UsageError`; - } -} -class UnknownSyntaxError extends Error { - constructor(input, candidates) { - super(); - this.input = input; - this.candidates = candidates; - this.clipanion = { type: `none` }; - this.name = `UnknownSyntaxError`; - if (this.candidates.length === 0) { - this.message = `Command not found, but we're not sure what's the alternative.`; - } - else if (this.candidates.every(candidate => candidate.reason !== null && candidate.reason === candidates[0].reason)) { - const [{ reason }] = this.candidates; - this.message = `${reason}\n\n${this.candidates.map(({ usage }) => `$ ${usage}`).join(`\n`)}`; - } - else if (this.candidates.length === 1) { - const [{ usage }] = this.candidates; - this.message = `Command not found; did you mean:\n\n$ ${usage}\n${whileRunning(input)}`; - } - else { - this.message = `Command not found; did you mean one of:\n\n${this.candidates.map(({ usage }, index) => { - return `${`${index}.`.padStart(4)} ${usage}`; - }).join(`\n`)}\n\n${whileRunning(input)}`; - } - } -} -class AmbiguousSyntaxError extends Error { - constructor(input, usages) { - super(); - this.input = input; - this.usages = usages; - this.clipanion = { type: `none` }; - this.name = `AmbiguousSyntaxError`; - this.message = `Cannot find which to pick amongst the following alternatives:\n\n${this.usages.map((usage, index) => { - return `${`${index}.`.padStart(4)} ${usage}`; - }).join(`\n`)}\n\n${whileRunning(input)}`; - } -} -const whileRunning = (input) => `While running ${input.filter(token => { - return token !== constants.END_OF_INPUT; -}).map(token => { - const json = JSON.stringify(token); - if (token.match(/\s/) || token.length === 0 || json !== `"${token}"`) { - return json; - } - else { - return token; + pause () { + this[FLOWING] = false + this[PAUSED] = true + } + + get destroyed () { + return this[DESTROYED] + } + + get flowing () { + return this[FLOWING] + } + + get paused () { + return this[PAUSED] + } + + [BUFFERPUSH] (chunk) { + if (this[OBJECTMODE]) + this[BUFFERLENGTH] += 1 + else + this[BUFFERLENGTH] += chunk.length + this.buffer.push(chunk) + } + + [BUFFERSHIFT] () { + if (this.buffer.length) { + if (this[OBJECTMODE]) + this[BUFFERLENGTH] -= 1 + else + this[BUFFERLENGTH] -= this.buffer[0].length } -}).join(` `)}`; + return this.buffer.shift() + } -exports.AmbiguousSyntaxError = AmbiguousSyntaxError; -exports.UnknownSyntaxError = UnknownSyntaxError; -exports.UsageError = UsageError; + [FLUSH] (noDrain) { + do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]())) + if (!noDrain && !this.buffer.length && !this[EOF]) + this.emit('drain') + } -/***/ }), + [FLUSHCHUNK] (chunk) { + return chunk ? (this.emit('data', chunk), this.flowing) : false + } -/***/ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/format.js": -/*!***************************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/format.js ***! - \***************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, exports) => { + pipe (dest, opts) { + if (this[DESTROYED]) + return -"use strict"; + const ended = this[EMITTED_END] + opts = opts || {} + if (dest === proc.stdout || dest === proc.stderr) + opts.end = false + else + opts.end = opts.end !== false + opts.proxyErrors = !!opts.proxyErrors + // piping an ended stream ends immediately + if (ended) { + if (opts.end) + dest.end() + } else { + this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts) + : new PipeProxyErrors(this, dest, opts)) + if (this[ASYNC]) + defer(() => this[RESUME]()) + else + this[RESUME]() + } -Object.defineProperty(exports, "__esModule", ({ value: true })); + return dest + } -const MAX_LINE_LENGTH = 80; -const richLine = Array(MAX_LINE_LENGTH).fill(`━`); -for (let t = 0; t <= 24; ++t) - richLine[richLine.length - t] = `\x1b[38;5;${232 + t}m━`; -const richFormat = { - header: str => `\x1b[1m━━━ ${str}${str.length < MAX_LINE_LENGTH - 5 ? ` ${richLine.slice(str.length + 5).join(``)}` : `:`}\x1b[0m`, - bold: str => `\x1b[1m${str}\x1b[22m`, - error: str => `\x1b[31m\x1b[1m${str}\x1b[22m\x1b[39m`, - code: str => `\x1b[36m${str}\x1b[39m`, -}; -const textFormat = { - header: str => str, - bold: str => str, - error: str => str, - code: str => str, -}; -function dedent(text) { - const lines = text.split(`\n`); - const nonEmptyLines = lines.filter(line => line.match(/\S/)); - const indent = nonEmptyLines.length > 0 ? nonEmptyLines.reduce((minLength, line) => Math.min(minLength, line.length - line.trimStart().length), Number.MAX_VALUE) : 0; - return lines - .map(line => line.slice(indent).trimRight()) - .join(`\n`); -} -function formatMarkdownish(text, { format, paragraphs }) { - // Enforce \n as newline character - text = text.replace(/\r\n?/g, `\n`); - // Remove the indentation, since it got messed up with the JS indentation - text = dedent(text); - // Remove surrounding newlines, since they got added for JS formatting - text = text.replace(/^\n+|\n+$/g, ``); - // List items always end with at least two newlines (in order to not be collapsed) - text = text.replace(/^(\s*)-([^\n]*?)\n+/gm, `$1-$2\n\n`); - // Single newlines are removed; larger than that are collapsed into one - text = text.replace(/\n(\n)?\n*/g, `$1`); - if (paragraphs) { - text = text.split(/\n/).map(paragraph => { - // Does the paragraph starts with a list? - const bulletMatch = paragraph.match(/^\s*[*-][\t ]+(.*)/); - if (!bulletMatch) - // No, cut the paragraphs into segments of 80 characters - return paragraph.match(/(.{1,80})(?: |$)/g).join(`\n`); - const indent = paragraph.length - paragraph.trimStart().length; - // Yes, cut the paragraphs into segments of (78 - indent) characters (to account for the prefix) - return bulletMatch[1].match(new RegExp(`(.{1,${78 - indent}})(?: |$)`, `g`)).map((line, index) => { - return ` `.repeat(indent) + (index === 0 ? `- ` : ` `) + line; - }).join(`\n`); - }).join(`\n\n`); + unpipe (dest) { + const p = this.pipes.find(p => p.dest === dest) + if (p) { + this.pipes.splice(this.pipes.indexOf(p), 1) + p.unpipe() } - // Highlight the code segments - text = text.replace(/(`+)((?:.|[\n])*?)\1/g, ($0, $1, $2) => { - return format.code($1 + $2 + $1); - }); - // Highlight the code segments - text = text.replace(/(\*\*)((?:.|[\n])*?)\1/g, ($0, $1, $2) => { - return format.bold($1 + $2 + $1); - }); - return text ? `${text}\n` : ``; -} + } -exports.formatMarkdownish = formatMarkdownish; -exports.richFormat = richFormat; -exports.textFormat = textFormat; + addListener (ev, fn) { + return this.on(ev, fn) + } + on (ev, fn) { + const ret = super.on(ev, fn) + if (ev === 'data' && !this.pipes.length && !this.flowing) + this[RESUME]() + else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) + super.emit('readable') + else if (isEndish(ev) && this[EMITTED_END]) { + super.emit(ev) + this.removeAllListeners(ev) + } else if (ev === 'error' && this[EMITTED_ERROR]) { + if (this[ASYNC]) + defer(() => fn.call(this, this[EMITTED_ERROR])) + else + fn.call(this, this[EMITTED_ERROR]) + } + return ret + } -/***/ }), + get emittedEnd () { + return this[EMITTED_END] + } -/***/ "./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/browser.js": -/*!****************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/browser.js ***! - \****************************************************************************************************************************************/ -/***/ ((module, exports, __webpack_require__) => { + [MAYBE_EMIT_END] () { + if (!this[EMITTING_END] && + !this[EMITTED_END] && + !this[DESTROYED] && + this.buffer.length === 0 && + this[EOF]) { + this[EMITTING_END] = true + this.emit('end') + this.emit('prefinish') + this.emit('finish') + if (this[CLOSED]) + this.emit('close') + this[EMITTING_END] = false + } + } -/* eslint-env browser */ + emit (ev, data, ...extra) { + // error and close are only events allowed after calling destroy() + if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED]) + return + else if (ev === 'data') { + return !data ? false + : this[ASYNC] ? defer(() => this[EMITDATA](data)) + : this[EMITDATA](data) + } else if (ev === 'end') { + return this[EMITEND]() + } else if (ev === 'close') { + this[CLOSED] = true + // don't emit close before 'end' and 'finish' + if (!this[EMITTED_END] && !this[DESTROYED]) + return + const ret = super.emit('close') + this.removeAllListeners('close') + return ret + } else if (ev === 'error') { + this[EMITTED_ERROR] = data + const ret = super.emit('error', data) + this[MAYBE_EMIT_END]() + return ret + } else if (ev === 'resume') { + const ret = super.emit('resume') + this[MAYBE_EMIT_END]() + return ret + } else if (ev === 'finish' || ev === 'prefinish') { + const ret = super.emit(ev) + this.removeAllListeners(ev) + return ret + } -/** - * This is the web browser implementation of `debug()`. - */ + // Some other unknown event + const ret = super.emit(ev, data, ...extra) + this[MAYBE_EMIT_END]() + return ret + } -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = localstorage(); + [EMITDATA] (data) { + for (const p of this.pipes) { + if (p.dest.write(data) === false) + this.pause() + } + const ret = super.emit('data', data) + this[MAYBE_EMIT_END]() + return ret + } -/** - * Colors. - */ + [EMITEND] () { + if (this[EMITTED_END]) + return -exports.colors = [ - '#0000CC', - '#0000FF', - '#0033CC', - '#0033FF', - '#0066CC', - '#0066FF', - '#0099CC', - '#0099FF', - '#00CC00', - '#00CC33', - '#00CC66', - '#00CC99', - '#00CCCC', - '#00CCFF', - '#3300CC', - '#3300FF', - '#3333CC', - '#3333FF', - '#3366CC', - '#3366FF', - '#3399CC', - '#3399FF', - '#33CC00', - '#33CC33', - '#33CC66', - '#33CC99', - '#33CCCC', - '#33CCFF', - '#6600CC', - '#6600FF', - '#6633CC', - '#6633FF', - '#66CC00', - '#66CC33', - '#9900CC', - '#9900FF', - '#9933CC', - '#9933FF', - '#99CC00', - '#99CC33', - '#CC0000', - '#CC0033', - '#CC0066', - '#CC0099', - '#CC00CC', - '#CC00FF', - '#CC3300', - '#CC3333', - '#CC3366', - '#CC3399', - '#CC33CC', - '#CC33FF', - '#CC6600', - '#CC6633', - '#CC9900', - '#CC9933', - '#CCCC00', - '#CCCC33', - '#FF0000', - '#FF0033', - '#FF0066', - '#FF0099', - '#FF00CC', - '#FF00FF', - '#FF3300', - '#FF3333', - '#FF3366', - '#FF3399', - '#FF33CC', - '#FF33FF', - '#FF6600', - '#FF6633', - '#FF9900', - '#FF9933', - '#FFCC00', - '#FFCC33' -]; + this[EMITTED_END] = true + this.readable = false + if (this[ASYNC]) + defer(() => this[EMITEND2]()) + else + this[EMITEND2]() + } -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ + [EMITEND2] () { + if (this[DECODER]) { + const data = this[DECODER].end() + if (data) { + for (const p of this.pipes) { + p.dest.write(data) + } + super.emit('data', data) + } + } -// eslint-disable-next-line complexity -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { - return true; - } + for (const p of this.pipes) { + p.end() + } + const ret = super.emit('end') + this.removeAllListeners('end') + return ret + } - // Internet Explorer and Edge do not support colors. - if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } + // const all = await stream.collect() + collect () { + const buf = [] + if (!this[OBJECTMODE]) + buf.dataLength = 0 + // set the promise first, in case an error is raised + // by triggering the flow here. + const p = this.promise() + this.on('data', c => { + buf.push(c) + if (!this[OBJECTMODE]) + buf.dataLength += c.length + }) + return p.then(() => buf) + } - // Is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // Is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // Is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // Double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} + // const data = await stream.concat() + concat () { + return this[OBJECTMODE] + ? Promise.reject(new Error('cannot concat in objectMode')) + : this.collect().then(buf => + this[OBJECTMODE] + ? Promise.reject(new Error('cannot concat in objectMode')) + : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength)) + } -/** - * Colorize log arguments if enabled. - * - * @api public - */ + // stream.promise().then(() => done, er => emitted error) + promise () { + return new Promise((resolve, reject) => { + this.on(DESTROYED, () => reject(new Error('stream destroyed'))) + this.on('error', er => reject(er)) + this.on('end', () => resolve()) + }) + } -function formatArgs(args) { - args[0] = (this.useColors ? '%c' : '') + - this.namespace + - (this.useColors ? ' %c' : ' ') + - args[0] + - (this.useColors ? '%c ' : ' ') + - '+' + module.exports.humanize(this.diff); + // for await (let chunk of stream) + [ASYNCITERATOR] () { + const next = () => { + const res = this.read() + if (res !== null) + return Promise.resolve({ done: false, value: res }) - if (!this.useColors) { - return; - } + if (this[EOF]) + return Promise.resolve({ done: true }) - const c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit'); + let resolve = null + let reject = null + const onerr = er => { + this.removeListener('data', ondata) + this.removeListener('end', onend) + reject(er) + } + const ondata = value => { + this.removeListener('error', onerr) + this.removeListener('end', onend) + this.pause() + resolve({ value: value, done: !!this[EOF] }) + } + const onend = () => { + this.removeListener('error', onerr) + this.removeListener('data', ondata) + resolve({ done: true }) + } + const ondestroy = () => onerr(new Error('stream destroyed')) + return new Promise((res, rej) => { + reject = rej + resolve = res + this.once(DESTROYED, ondestroy) + this.once('error', onerr) + this.once('end', onend) + this.once('data', ondata) + }) + } - // The final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - let index = 0; - let lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, match => { - if (match === '%%') { - return; - } - index++; - if (match === '%c') { - // We only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); + return { next } + } - args.splice(lastC, 0, c); -} + // for (let chunk of stream) + [ITERATOR] () { + const next = () => { + const value = this.read() + const done = value === null + return { value, done } + } + return { next } + } -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ -function log(...args) { - // This hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return typeof console === 'object' && - console.log && - console.log(...args); -} + destroy (er) { + if (this[DESTROYED]) { + if (er) + this.emit('error', er) + else + this.emit(DESTROYED) + return this + } -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - try { - if (namespaces) { - exports.storage.setItem('debug', namespaces); - } else { - exports.storage.removeItem('debug'); - } - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} + this[DESTROYED] = true -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ -function load() { - let r; - try { - r = exports.storage.getItem('debug'); - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } + // throw away all buffered data, it's never coming out + this.buffer.length = 0 + this[BUFFERLENGTH] = 0 - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } + if (typeof this.close === 'function' && !this[CLOSED]) + this.close() - return r; -} + if (er) + this.emit('error', er) + else // if no error to emit, still reject pending promises + this.emit(DESTROYED) -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ + return this + } -function localstorage() { - try { - // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context - // The Browser also has localStorage in the global context. - return localStorage; - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } + static isStream (s) { + return !!s && (s instanceof Minipass || s instanceof Stream || + s instanceof EE && ( + typeof s.pipe === 'function' || // readable + (typeof s.write === 'function' && typeof s.end === 'function') // writable + )) + } } -module.exports = __webpack_require__(/*! ./common */ "./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/common.js")(exports); - -const {formatters} = module.exports; - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -formatters.j = function (v) { - try { - return JSON.stringify(v); - } catch (error) { - return '[UnexpectedJSONParseError]: ' + error.message; - } -}; - /***/ }), -/***/ "./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/common.js": -/*!***************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/common.js ***! - \***************************************************************************************************************************************/ +/***/ "../../../.yarn/berry/cache/minizlib-npm-2.1.2-ea89cd0cfb-9.zip/node_modules/minizlib/constants.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/minizlib-npm-2.1.2-ea89cd0cfb-9.zip/node_modules/minizlib/constants.js ***! + \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// Update with any zlib constants that are added or changed in the future. +// Node v6 didn't export this, so we just hard code the version and rely +// on all the other hard-coded values from zlib v4736. When node v6 +// support drops, we can just export the realZlibConstants object. +const realZlibConstants = (__webpack_require__(/*! zlib */ "zlib").constants) || + /* istanbul ignore next */ { ZLIB_VERNUM: 4736 } -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - */ +module.exports = Object.freeze(Object.assign(Object.create(null), { + Z_NO_FLUSH: 0, + Z_PARTIAL_FLUSH: 1, + Z_SYNC_FLUSH: 2, + Z_FULL_FLUSH: 3, + Z_FINISH: 4, + Z_BLOCK: 5, + Z_OK: 0, + Z_STREAM_END: 1, + Z_NEED_DICT: 2, + Z_ERRNO: -1, + Z_STREAM_ERROR: -2, + Z_DATA_ERROR: -3, + Z_MEM_ERROR: -4, + Z_BUF_ERROR: -5, + Z_VERSION_ERROR: -6, + Z_NO_COMPRESSION: 0, + Z_BEST_SPEED: 1, + Z_BEST_COMPRESSION: 9, + Z_DEFAULT_COMPRESSION: -1, + Z_FILTERED: 1, + Z_HUFFMAN_ONLY: 2, + Z_RLE: 3, + Z_FIXED: 4, + Z_DEFAULT_STRATEGY: 0, + DEFLATE: 1, + INFLATE: 2, + GZIP: 3, + GUNZIP: 4, + DEFLATERAW: 5, + INFLATERAW: 6, + UNZIP: 7, + BROTLI_DECODE: 8, + BROTLI_ENCODE: 9, + Z_MIN_WINDOWBITS: 8, + Z_MAX_WINDOWBITS: 15, + Z_DEFAULT_WINDOWBITS: 15, + Z_MIN_CHUNK: 64, + Z_MAX_CHUNK: Infinity, + Z_DEFAULT_CHUNK: 16384, + Z_MIN_MEMLEVEL: 1, + Z_MAX_MEMLEVEL: 9, + Z_DEFAULT_MEMLEVEL: 8, + Z_MIN_LEVEL: -1, + Z_MAX_LEVEL: 9, + Z_DEFAULT_LEVEL: -1, + BROTLI_OPERATION_PROCESS: 0, + BROTLI_OPERATION_FLUSH: 1, + BROTLI_OPERATION_FINISH: 2, + BROTLI_OPERATION_EMIT_METADATA: 3, + BROTLI_MODE_GENERIC: 0, + BROTLI_MODE_TEXT: 1, + BROTLI_MODE_FONT: 2, + BROTLI_DEFAULT_MODE: 0, + BROTLI_MIN_QUALITY: 0, + BROTLI_MAX_QUALITY: 11, + BROTLI_DEFAULT_QUALITY: 11, + BROTLI_MIN_WINDOW_BITS: 10, + BROTLI_MAX_WINDOW_BITS: 24, + BROTLI_LARGE_MAX_WINDOW_BITS: 30, + BROTLI_DEFAULT_WINDOW: 22, + BROTLI_MIN_INPUT_BLOCK_BITS: 16, + BROTLI_MAX_INPUT_BLOCK_BITS: 24, + BROTLI_PARAM_MODE: 0, + BROTLI_PARAM_QUALITY: 1, + BROTLI_PARAM_LGWIN: 2, + BROTLI_PARAM_LGBLOCK: 3, + BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4, + BROTLI_PARAM_SIZE_HINT: 5, + BROTLI_PARAM_LARGE_WINDOW: 6, + BROTLI_PARAM_NPOSTFIX: 7, + BROTLI_PARAM_NDIRECT: 8, + BROTLI_DECODER_RESULT_ERROR: 0, + BROTLI_DECODER_RESULT_SUCCESS: 1, + BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2, + BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3, + BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0, + BROTLI_DECODER_PARAM_LARGE_WINDOW: 1, + BROTLI_DECODER_NO_ERROR: 0, + BROTLI_DECODER_SUCCESS: 1, + BROTLI_DECODER_NEEDS_MORE_INPUT: 2, + BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3, + BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1, + BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2, + BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3, + BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4, + BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5, + BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6, + BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7, + BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8, + BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9, + BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10, + BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11, + BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12, + BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13, + BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14, + BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15, + BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16, + BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19, + BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20, + BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21, + BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22, + BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25, + BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26, + BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27, + BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30, + BROTLI_DECODER_ERROR_UNREACHABLE: -31, +}, realZlibConstants)) -function setup(env) { - createDebug.debug = createDebug; - createDebug.default = createDebug; - createDebug.coerce = coerce; - createDebug.disable = disable; - createDebug.enable = enable; - createDebug.enabled = enabled; - createDebug.humanize = __webpack_require__(/*! ms */ "./.yarn/cache/ms-npm-2.1.2-ec0c1512ff-673cdb2c31.zip/node_modules/ms/index.js"); - Object.keys(env).forEach(key => { - createDebug[key] = env[key]; - }); +/***/ }), - /** - * Active `debug` instances. - */ - createDebug.instances = []; +/***/ "../../../.yarn/berry/cache/minizlib-npm-2.1.2-ea89cd0cfb-9.zip/node_modules/minizlib/index.js": +/*!*****************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/minizlib-npm-2.1.2-ea89cd0cfb-9.zip/node_modules/minizlib/index.js ***! + \*****************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - /** - * The currently active debug mode names, and names to skip. - */ +"use strict"; - createDebug.names = []; - createDebug.skips = []; - /** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - createDebug.formatters = {}; +const assert = __webpack_require__(/*! assert */ "assert") +const Buffer = (__webpack_require__(/*! buffer */ "buffer").Buffer) +const realZlib = __webpack_require__(/*! zlib */ "zlib") - /** - * Selects a color for a debug namespace - * @param {String} namespace The namespace string for the for the debug instance to be colored - * @return {Number|String} An ANSI color code for the given namespace - * @api private - */ - function selectColor(namespace) { - let hash = 0; +const constants = exports.constants = __webpack_require__(/*! ./constants.js */ "../../../.yarn/berry/cache/minizlib-npm-2.1.2-ea89cd0cfb-9.zip/node_modules/minizlib/constants.js") +const Minipass = __webpack_require__(/*! minipass */ "../../../.yarn/berry/cache/minipass-npm-3.3.4-6cf48a6c5e-9.zip/node_modules/minipass/index.js") - for (let i = 0; i < namespace.length; i++) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } +const OriginalBufferConcat = Buffer.concat - return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; - } - createDebug.selectColor = selectColor; +const _superWrite = Symbol('_superWrite') +class ZlibError extends Error { + constructor (err) { + super('zlib: ' + err.message) + this.code = err.code + this.errno = err.errno + /* istanbul ignore if */ + if (!this.code) + this.code = 'ZLIB_ERROR' - /** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - function createDebug(namespace) { - let prevTime; + this.message = 'zlib: ' + err.message + Error.captureStackTrace(this, this.constructor) + } - function debug(...args) { - // Disabled? - if (!debug.enabled) { - return; - } + get name () { + return 'ZlibError' + } +} - const self = debug; +// the Zlib class they all inherit from +// This thing manages the queue of requests, and returns +// true or false if there is anything in the queue when +// you call the .write() method. +const _opts = Symbol('opts') +const _flushFlag = Symbol('flushFlag') +const _finishFlushFlag = Symbol('finishFlushFlag') +const _fullFlushFlag = Symbol('fullFlushFlag') +const _handle = Symbol('handle') +const _onError = Symbol('onError') +const _sawError = Symbol('sawError') +const _level = Symbol('level') +const _strategy = Symbol('strategy') +const _ended = Symbol('ended') +const _defaultFullFlush = Symbol('_defaultFullFlush') - // Set `diff` timestamp - const curr = Number(new Date()); - const ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; +class ZlibBase extends Minipass { + constructor (opts, mode) { + if (!opts || typeof opts !== 'object') + throw new TypeError('invalid options for ZlibBase constructor') - args[0] = createDebug.coerce(args[0]); + super(opts) + this[_sawError] = false + this[_ended] = false + this[_opts] = opts - if (typeof args[0] !== 'string') { - // Anything else let's inspect with %O - args.unshift('%O'); - } + this[_flushFlag] = opts.flush + this[_finishFlushFlag] = opts.finishFlush + // this will throw if any options are invalid for the class selected + try { + this[_handle] = new realZlib[mode](opts) + } catch (er) { + // make sure that all errors get decorated properly + throw new ZlibError(er) + } - // Apply any `formatters` transformations - let index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { - // If we encounter an escaped % then don't increase the array index - if (match === '%%') { - return match; - } - index++; - const formatter = createDebug.formatters[format]; - if (typeof formatter === 'function') { - const val = args[index]; - match = formatter.call(self, val); + this[_onError] = (err) => { + // no sense raising multiple errors, since we abort on the first one. + if (this[_sawError]) + return - // Now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); + this[_sawError] = true - // Apply env-specific formatting (colors, etc.) - createDebug.formatArgs.call(self, args); + // there is no way to cleanly recover. + // continuing only obscures problems. + this.close() + this.emit('error', err) + } - const logFn = self.log || createDebug.log; - logFn.apply(self, args); - } + this[_handle].on('error', er => this[_onError](new ZlibError(er))) + this.once('end', () => this.close) + } - debug.namespace = namespace; - debug.enabled = createDebug.enabled(namespace); - debug.useColors = createDebug.useColors(); - debug.color = selectColor(namespace); - debug.destroy = destroy; - debug.extend = extend; - // Debug.formatArgs = formatArgs; - // debug.rawLog = rawLog; + close () { + if (this[_handle]) { + this[_handle].close() + this[_handle] = null + this.emit('close') + } + } - // env-specific initialization logic for debug instances - if (typeof createDebug.init === 'function') { - createDebug.init(debug); - } + reset () { + if (!this[_sawError]) { + assert(this[_handle], 'zlib binding closed') + return this[_handle].reset() + } + } - createDebug.instances.push(debug); + flush (flushFlag) { + if (this.ended) + return - return debug; - } + if (typeof flushFlag !== 'number') + flushFlag = this[_fullFlushFlag] + this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag })) + } - function destroy() { - const index = createDebug.instances.indexOf(this); - if (index !== -1) { - createDebug.instances.splice(index, 1); - return true; - } - return false; - } + end (chunk, encoding, cb) { + if (chunk) + this.write(chunk, encoding) + this.flush(this[_finishFlushFlag]) + this[_ended] = true + return super.end(null, null, cb) + } - function extend(namespace, delimiter) { - const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); - newDebug.log = this.log; - return newDebug; - } + get ended () { + return this[_ended] + } - /** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - function enable(namespaces) { - createDebug.save(namespaces); + write (chunk, encoding, cb) { + // process the chunk using the sync process + // then super.write() all the outputted chunks + if (typeof encoding === 'function') + cb = encoding, encoding = 'utf8' - createDebug.names = []; - createDebug.skips = []; + if (typeof chunk === 'string') + chunk = Buffer.from(chunk, encoding) - let i; - const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - const len = split.length; + if (this[_sawError]) + return + assert(this[_handle], 'zlib binding closed') - for (i = 0; i < len; i++) { - if (!split[i]) { - // ignore empty strings - continue; - } + // _processChunk tries to .close() the native handle after it's done, so we + // intercept that by temporarily making it a no-op. + const nativeHandle = this[_handle]._handle + const originalNativeClose = nativeHandle.close + nativeHandle.close = () => {} + const originalClose = this[_handle].close + this[_handle].close = () => {} + // It also calls `Buffer.concat()` at the end, which may be convenient + // for some, but which we are not interested in as it slows us down. + Buffer.concat = (args) => args + let result + try { + const flushFlag = typeof chunk[_flushFlag] === 'number' + ? chunk[_flushFlag] : this[_flushFlag] + result = this[_handle]._processChunk(chunk, flushFlag) + // if we don't throw, reset it back how it was + Buffer.concat = OriginalBufferConcat + } catch (err) { + // or if we do, put Buffer.concat() back before we emit error + // Error events call into user code, which may call Buffer.concat() + Buffer.concat = OriginalBufferConcat + this[_onError](new ZlibError(err)) + } finally { + if (this[_handle]) { + // Core zlib resets `_handle` to null after attempting to close the + // native handle. Our no-op handler prevented actual closure, but we + // need to restore the `._handle` property. + this[_handle]._handle = nativeHandle + nativeHandle.close = originalNativeClose + this[_handle].close = originalClose + // `_processChunk()` adds an 'error' listener. If we don't remove it + // after each call, these handlers start piling up. + this[_handle].removeAllListeners('error') + // make sure OUR error listener is still attached tho + } + } - namespaces = split[i].replace(/\*/g, '.*?'); + if (this[_handle]) + this[_handle].on('error', er => this[_onError](new ZlibError(er))) - if (namespaces[0] === '-') { - createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - createDebug.names.push(new RegExp('^' + namespaces + '$')); - } - } + let writeReturn + if (result) { + if (Array.isArray(result) && result.length > 0) { + // The first buffer is always `handle._outBuffer`, which would be + // re-used for later invocations; so, we always have to copy that one. + writeReturn = this[_superWrite](Buffer.from(result[0])) + for (let i = 1; i < result.length; i++) { + writeReturn = this[_superWrite](result[i]) + } + } else { + writeReturn = this[_superWrite](Buffer.from(result)) + } + } - for (i = 0; i < createDebug.instances.length; i++) { - const instance = createDebug.instances[i]; - instance.enabled = createDebug.enabled(instance.namespace); - } - } + if (cb) + cb() + return writeReturn + } - /** - * Disable debug output. - * - * @return {String} namespaces - * @api public - */ - function disable() { - const namespaces = [ - ...createDebug.names.map(toNamespace), - ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) - ].join(','); - createDebug.enable(''); - return namespaces; - } + [_superWrite] (data) { + return super.write(data) + } +} - /** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - function enabled(name) { - if (name[name.length - 1] === '*') { - return true; - } +class Zlib extends ZlibBase { + constructor (opts, mode) { + opts = opts || {} - let i; - let len; + opts.flush = opts.flush || constants.Z_NO_FLUSH + opts.finishFlush = opts.finishFlush || constants.Z_FINISH + super(opts, mode) - for (i = 0, len = createDebug.skips.length; i < len; i++) { - if (createDebug.skips[i].test(name)) { - return false; - } - } + this[_fullFlushFlag] = constants.Z_FULL_FLUSH + this[_level] = opts.level + this[_strategy] = opts.strategy + } - for (i = 0, len = createDebug.names.length; i < len; i++) { - if (createDebug.names[i].test(name)) { - return true; - } - } + params (level, strategy) { + if (this[_sawError]) + return - return false; - } + if (!this[_handle]) + throw new Error('cannot switch params when binding is closed') - /** - * Convert regexp to namespace - * - * @param {RegExp} regxep - * @return {String} namespace - * @api private - */ - function toNamespace(regexp) { - return regexp.toString() - .substring(2, regexp.toString().length - 2) - .replace(/\.\*\?$/, '*'); - } + // no way to test this without also not supporting params at all + /* istanbul ignore if */ + if (!this[_handle].params) + throw new Error('not supported in this implementation') - /** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - function coerce(val) { - if (val instanceof Error) { - return val.stack || val.message; - } - return val; - } + if (this[_level] !== level || this[_strategy] !== strategy) { + this.flush(constants.Z_SYNC_FLUSH) + assert(this[_handle], 'zlib binding closed') + // .params() calls .flush(), but the latter is always async in the + // core zlib. We override .flush() temporarily to intercept that and + // flush synchronously. + const origFlush = this[_handle].flush + this[_handle].flush = (flushFlag, cb) => { + this.flush(flushFlag) + cb() + } + try { + this[_handle].params(level, strategy) + } finally { + this[_handle].flush = origFlush + } + /* istanbul ignore else */ + if (this[_handle]) { + this[_level] = level + this[_strategy] = strategy + } + } + } +} - createDebug.enable(createDebug.load()); +// minimal 2-byte header +class Deflate extends Zlib { + constructor (opts) { + super(opts, 'Deflate') + } +} - return createDebug; +class Inflate extends Zlib { + constructor (opts) { + super(opts, 'Inflate') + } } -module.exports = setup; +// gzip - bigger header, same deflate compression +const _portable = Symbol('_portable') +class Gzip extends Zlib { + constructor (opts) { + super(opts, 'Gzip') + this[_portable] = opts && !!opts.portable + } + + [_superWrite] (data) { + if (!this[_portable]) + return super[_superWrite](data) + + // we'll always get the header emitted in one first chunk + // overwrite the OS indicator byte with 0xFF + this[_portable] = false + data[9] = 255 + return super[_superWrite](data) + } +} + +class Gunzip extends Zlib { + constructor (opts) { + super(opts, 'Gunzip') + } +} + +// raw - no header +class DeflateRaw extends Zlib { + constructor (opts) { + super(opts, 'DeflateRaw') + } +} + +class InflateRaw extends Zlib { + constructor (opts) { + super(opts, 'InflateRaw') + } +} + +// auto-detect header. +class Unzip extends Zlib { + constructor (opts) { + super(opts, 'Unzip') + } +} + +class Brotli extends ZlibBase { + constructor (opts, mode) { + opts = opts || {} + + opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS + opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH + + super(opts, mode) + + this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH + } +} + +class BrotliCompress extends Brotli { + constructor (opts) { + super(opts, 'BrotliCompress') + } +} + +class BrotliDecompress extends Brotli { + constructor (opts) { + super(opts, 'BrotliDecompress') + } +} + +exports.Deflate = Deflate +exports.Inflate = Inflate +exports.Gzip = Gzip +exports.Gunzip = Gunzip +exports.DeflateRaw = DeflateRaw +exports.InflateRaw = InflateRaw +exports.Unzip = Unzip +/* istanbul ignore else */ +if (typeof realZlib.BrotliCompress === 'function') { + exports.BrotliCompress = BrotliCompress + exports.BrotliDecompress = BrotliDecompress +} else { + exports.BrotliCompress = exports.BrotliDecompress = class { + constructor () { + throw new Error('Brotli is not supported in this version of Node.js') + } + } +} /***/ }), -/***/ "./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/index.js": -/*!**************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/index.js ***! - \**************************************************************************************************************************************/ +/***/ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/index.js": +/*!*************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/index.js ***! + \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/** - * Detect Electron renderer / nwjs process, which is node, but we should - * treat as a browser. - */ +const optsArg = __webpack_require__(/*! ./lib/opts-arg.js */ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/opts-arg.js") +const pathArg = __webpack_require__(/*! ./lib/path-arg.js */ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/path-arg.js") -if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { - module.exports = __webpack_require__(/*! ./browser.js */ "./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/browser.js"); -} else { - module.exports = __webpack_require__(/*! ./node.js */ "./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/node.js"); +const {mkdirpNative, mkdirpNativeSync} = __webpack_require__(/*! ./lib/mkdirp-native.js */ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/mkdirp-native.js") +const {mkdirpManual, mkdirpManualSync} = __webpack_require__(/*! ./lib/mkdirp-manual.js */ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/mkdirp-manual.js") +const {useNative, useNativeSync} = __webpack_require__(/*! ./lib/use-native.js */ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/use-native.js") + + +const mkdirp = (path, opts) => { + path = pathArg(path) + opts = optsArg(opts) + return useNative(opts) + ? mkdirpNative(path, opts) + : mkdirpManual(path, opts) +} + +const mkdirpSync = (path, opts) => { + path = pathArg(path) + opts = optsArg(opts) + return useNativeSync(opts) + ? mkdirpNativeSync(path, opts) + : mkdirpManualSync(path, opts) } +mkdirp.sync = mkdirpSync +mkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts)) +mkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts)) +mkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts)) +mkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts)) + +module.exports = mkdirp + /***/ }), -/***/ "./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/node.js": -/*!*************************************************************************************************************************************!*\ - !*** ./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/node.js ***! - \*************************************************************************************************************************************/ -/***/ ((module, exports, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/find-made.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/find-made.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/** - * Module dependencies. - */ +const {dirname} = __webpack_require__(/*! path */ "path") -const tty = __webpack_require__(/*! tty */ "tty"); -const util = __webpack_require__(/*! util */ "util"); +const findMade = (opts, parent, path = undefined) => { + // we never want the 'made' return value to be a root directory + if (path === parent) + return Promise.resolve() -/** - * This is the Node.js implementation of `debug()`. - */ + return opts.statAsync(parent).then( + st => st.isDirectory() ? path : undefined, // will fail later + er => er.code === 'ENOENT' + ? findMade(opts, dirname(parent), parent) + : undefined + ) +} -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; +const findMadeSync = (opts, parent, path = undefined) => { + if (path === parent) + return undefined -/** - * Colors. - */ + try { + return opts.statSync(parent).isDirectory() ? path : undefined + } catch (er) { + return er.code === 'ENOENT' + ? findMadeSync(opts, dirname(parent), parent) + : undefined + } +} -exports.colors = [6, 2, 3, 4, 5, 1]; +module.exports = {findMade, findMadeSync} -try { - // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) - // eslint-disable-next-line import/no-extraneous-dependencies - const supportsColor = __webpack_require__(/*! supports-color */ "./.yarn/cache/supports-color-npm-7.1.0-df2ba1e338-899480ac85.zip/node_modules/supports-color/index.js"); - if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { - exports.colors = [ - 20, - 21, - 26, - 27, - 32, - 33, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 56, - 57, - 62, - 63, - 68, - 69, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 92, - 93, - 98, - 99, - 112, - 113, - 128, - 129, - 134, - 135, - 148, - 149, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 178, - 179, - 184, - 185, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 214, - 215, - 220, - 221 - ]; - } -} catch (error) { - // Swallow - we only care if `supports-color` is available; it doesn't have to be. -} +/***/ }), -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ +/***/ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/mkdirp-manual.js": +/*!*************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/mkdirp-manual.js ***! + \*************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -exports.inspectOpts = Object.keys(process.env).filter(key => { - return /^debug_/i.test(key); -}).reduce((obj, key) => { - // Camel-case - const prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, (_, k) => { - return k.toUpperCase(); - }); +const {dirname} = __webpack_require__(/*! path */ "path") - // Coerce string value into JS value - let val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) { - val = true; - } else if (/^(no|off|false|disabled)$/i.test(val)) { - val = false; - } else if (val === 'null') { - val = null; - } else { - val = Number(val); - } +const mkdirpManual = (path, opts, made) => { + opts.recursive = false + const parent = dirname(path) + if (parent === path) { + return opts.mkdirAsync(path, opts).catch(er => { + // swallowed by recursive implementation on posix systems + // any other error is a failure + if (er.code !== 'EISDIR') + throw er + }) + } - obj[prop] = val; - return obj; -}, {}); + return opts.mkdirAsync(path, opts).then(() => made || path, er => { + if (er.code === 'ENOENT') + return mkdirpManual(parent, opts) + .then(made => mkdirpManual(path, opts, made)) + if (er.code !== 'EEXIST' && er.code !== 'EROFS') + throw er + return opts.statAsync(path).then(st => { + if (st.isDirectory()) + return made + else + throw er + }, () => { throw er }) + }) +} -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ +const mkdirpManualSync = (path, opts, made) => { + const parent = dirname(path) + opts.recursive = false -function useColors() { - return 'colors' in exports.inspectOpts ? - Boolean(exports.inspectOpts.colors) : - tty.isatty(process.stderr.fd); + if (parent === path) { + try { + return opts.mkdirSync(path, opts) + } catch (er) { + // swallowed by recursive implementation on posix systems + // any other error is a failure + if (er.code !== 'EISDIR') + throw er + else + return + } + } + + try { + opts.mkdirSync(path, opts) + return made || path + } catch (er) { + if (er.code === 'ENOENT') + return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made)) + if (er.code !== 'EEXIST' && er.code !== 'EROFS') + throw er + try { + if (!opts.statSync(path).isDirectory()) + throw er + } catch (_) { + throw er + } + } } -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ +module.exports = {mkdirpManual, mkdirpManualSync} -function formatArgs(args) { - const {namespace: name, useColors} = this; - if (useColors) { - const c = this.color; - const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); - const prefix = ` ${colorCode};1m${name} \u001B[0m`; +/***/ }), - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); - } else { - args[0] = getDate() + name + ' ' + args[0]; - } -} +/***/ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/mkdirp-native.js": +/*!*************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/mkdirp-native.js ***! + \*************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -function getDate() { - if (exports.inspectOpts.hideDate) { - return ''; - } - return new Date().toISOString() + ' '; -} +const {dirname} = __webpack_require__(/*! path */ "path") +const {findMade, findMadeSync} = __webpack_require__(/*! ./find-made.js */ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/find-made.js") +const {mkdirpManual, mkdirpManualSync} = __webpack_require__(/*! ./mkdirp-manual.js */ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/mkdirp-manual.js") -/** - * Invokes `util.format()` with the specified arguments and writes to stderr. - */ +const mkdirpNative = (path, opts) => { + opts.recursive = true + const parent = dirname(path) + if (parent === path) + return opts.mkdirAsync(path, opts) -function log(...args) { - return process.stderr.write(util.format(...args) + '\n'); + return findMade(opts, path).then(made => + opts.mkdirAsync(path, opts).then(() => made) + .catch(er => { + if (er.code === 'ENOENT') + return mkdirpManual(path, opts) + else + throw er + })) } -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - if (namespaces) { - process.env.DEBUG = namespaces; - } else { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } +const mkdirpNativeSync = (path, opts) => { + opts.recursive = true + const parent = dirname(path) + if (parent === path) + return opts.mkdirSync(path, opts) + + const made = findMadeSync(opts, path) + try { + opts.mkdirSync(path, opts) + return made + } catch (er) { + if (er.code === 'ENOENT') + return mkdirpManualSync(path, opts) + else + throw er + } } -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ +module.exports = {mkdirpNative, mkdirpNativeSync} -function load() { - return process.env.DEBUG; + +/***/ }), + +/***/ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/opts-arg.js": +/*!********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/opts-arg.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const { promisify } = __webpack_require__(/*! util */ "util") +const fs = __webpack_require__(/*! fs */ "fs") +const optsArg = opts => { + if (!opts) + opts = { mode: 0o777, fs } + else if (typeof opts === 'object') + opts = { mode: 0o777, fs, ...opts } + else if (typeof opts === 'number') + opts = { mode: opts, fs } + else if (typeof opts === 'string') + opts = { mode: parseInt(opts, 8), fs } + else + throw new TypeError('invalid options argument') + + opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir + opts.mkdirAsync = promisify(opts.mkdir) + opts.stat = opts.stat || opts.fs.stat || fs.stat + opts.statAsync = promisify(opts.stat) + opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync + opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync + return opts } +module.exports = optsArg -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ -function init(debug) { - debug.inspectOpts = {}; +/***/ }), - const keys = Object.keys(exports.inspectOpts); - for (let i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } +/***/ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/path-arg.js": +/*!********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/path-arg.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform +const { resolve, parse } = __webpack_require__(/*! path */ "path") +const pathArg = path => { + if (/\0/.test(path)) { + // simulate same failure that node raises + throw Object.assign( + new TypeError('path must be a string without null bytes'), + { + path, + code: 'ERR_INVALID_ARG_VALUE', + } + ) + } + + path = resolve(path) + if (platform === 'win32') { + const badWinChars = /[*|"<>?:]/ + const {root} = parse(path) + if (badWinChars.test(path.substr(root.length))) { + throw Object.assign(new Error('Illegal characters in path.'), { + path, + code: 'EINVAL', + }) + } + } + + return path } +module.exports = pathArg -module.exports = __webpack_require__(/*! ./common */ "./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/common.js")(exports); -const {formatters} = module.exports; +/***/ }), -/** - * Map %o to `util.inspect()`, all on a single line. - */ +/***/ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/use-native.js": +/*!**********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/lib/use-native.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -formatters.o = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .replace(/\s*\n\s*/g, ' '); -}; +const fs = __webpack_require__(/*! fs */ "fs") -/** - * Map %O to `util.inspect()`, allowing multiple lines if needed. - */ +const version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version +const versArr = version.replace(/^v/, '').split('.') +const hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12 -formatters.O = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; +const useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir +const useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync + +module.exports = {useNative, useNativeSync} /***/ }), -/***/ "./sources/Engine.ts": -/*!***************************!*\ - !*** ./sources/Engine.ts ***! - \***************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/ms-npm-2.1.2-ec0c1512ff-9.zip/node_modules/ms/index.js": +/*!*****************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ms-npm-2.1.2-ec0c1512ff-9.zip/node_modules/ms/index.js ***! + \*****************************************************************************************/ +/***/ ((module) => { -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "Engine": () => (/* binding */ Engine) -/* harmony export */ }); -/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/index.js"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/index.js"); -/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(semver__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _config_json__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config.json */ "./config.json"); -/* harmony import */ var _folderUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./folderUtils */ "./sources/folderUtils.ts"); -/* harmony import */ var _corepackUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./corepackUtils */ "./sources/corepackUtils.ts"); -/* harmony import */ var _semverUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./semverUtils */ "./sources/semverUtils.ts"); -/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./types */ "./sources/types.ts"); +/** + * Helpers. + */ +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ -class Engine { - constructor(config = _config_json__WEBPACK_IMPORTED_MODULE_3__) { - this.config = config; - } - getPackageManagerFor(binaryName) { - for (const packageManager of _types__WEBPACK_IMPORTED_MODULE_7__.SupportedPackageManagerSet) { - for (const rangeDefinition of Object.values(this.config.definitions[packageManager].ranges)) { - const bins = Array.isArray(rangeDefinition.bin) - ? rangeDefinition.bin - : Object.keys(rangeDefinition.bin); - if (bins.includes(binaryName)) { - return packageManager; - } - } - } - return null; - } - getBinariesFor(name) { - const binNames = new Set(); - for (const rangeDefinition of Object.values(this.config.definitions[name].ranges)) { - const bins = Array.isArray(rangeDefinition.bin) - ? rangeDefinition.bin - : Object.keys(rangeDefinition.bin); - for (const name of bins) { - binNames.add(name); - } - } - return binNames; - } - async getDefaultDescriptors() { - const locators = []; - for (const name of _types__WEBPACK_IMPORTED_MODULE_7__.SupportedPackageManagerSet) - locators.push({ name, range: await this.getDefaultVersion(name) }); - return locators; - } - async getDefaultVersion(packageManager) { - const definition = this.config.definitions[packageManager]; - if (typeof definition === `undefined`) - throw new clipanion__WEBPACK_IMPORTED_MODULE_8__.UsageError(`This package manager (${packageManager}) isn't supported by this corepack build`); - let lastKnownGood; - try { - lastKnownGood = JSON.parse(await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.readFile(this.getLastKnownGoodFile(), `utf8`)); - } - catch (_a) { - // Ignore errors; too bad - } - if (typeof lastKnownGood !== `object` || lastKnownGood === null) - return definition.default; - if (!Object.prototype.hasOwnProperty.call(lastKnownGood, packageManager)) - return definition.default; - const override = lastKnownGood[packageManager]; - if (typeof override !== `string`) - return definition.default; - return override; - } - async activatePackageManager(locator) { - const lastKnownGoodFile = this.getLastKnownGoodFile(); - let lastKnownGood; - try { - lastKnownGood = JSON.parse(await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.readFile(lastKnownGoodFile, `utf8`)); - } - catch (_a) { - // Ignore errors; too bad - } - if (typeof lastKnownGood !== `object` || lastKnownGood === null) - lastKnownGood = {}; - lastKnownGood[locator.name] = locator.reference; - await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.mkdir(path__WEBPACK_IMPORTED_MODULE_1___default().dirname(lastKnownGoodFile), { recursive: true }); - await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.writeFile(lastKnownGoodFile, `${JSON.stringify(lastKnownGood, null, 2)}\n`); - } - async ensurePackageManager(locator) { - const definition = this.config.definitions[locator.name]; - if (typeof definition === `undefined`) - throw new clipanion__WEBPACK_IMPORTED_MODULE_8__.UsageError(`This package manager (${locator.name}) isn't supported by this corepack build`); - const ranges = Object.keys(definition.ranges).reverse(); - const range = ranges.find(range => _semverUtils__WEBPACK_IMPORTED_MODULE_6__.satisfiesWithPrereleases(locator.reference, range)); - if (typeof range === `undefined`) - throw new Error(`Assertion failed: Specified resolution (${locator.reference}) isn't supported by any of ${ranges.join(`, `)}`); - const installedLocation = await _corepackUtils__WEBPACK_IMPORTED_MODULE_5__.installVersion(_folderUtils__WEBPACK_IMPORTED_MODULE_4__.getInstallFolder(), locator, { - spec: definition.ranges[range], - }); - return { - location: installedLocation, - spec: definition.ranges[range], - }; - } - async resolveDescriptor(descriptor, { allowTags = false, useCache = true } = {}) { - const definition = this.config.definitions[descriptor.name]; - if (typeof definition === `undefined`) - throw new clipanion__WEBPACK_IMPORTED_MODULE_8__.UsageError(`This package manager (${descriptor.name}) isn't supported by this corepack build`); - let finalDescriptor = descriptor; - if (descriptor.range.match(/^[a-z-]+$/)) { - if (!allowTags) - throw new clipanion__WEBPACK_IMPORTED_MODULE_8__.UsageError(`Packages managers can't be referended via tags in this context`); - // We only resolve tags from the latest registry entry - const ranges = Object.keys(definition.ranges); - const tagRange = ranges[ranges.length - 1]; - const tags = await _corepackUtils__WEBPACK_IMPORTED_MODULE_5__.fetchAvailableTags(definition.ranges[tagRange].registry); - if (!Object.prototype.hasOwnProperty.call(tags, descriptor.range)) - throw new clipanion__WEBPACK_IMPORTED_MODULE_8__.UsageError(`Tag not found (${descriptor.range})`); - finalDescriptor = { - name: descriptor.name, - range: tags[descriptor.range], - }; - } - // If a compatible version is already installed, no need to query one - // from the remote listings - const cachedVersion = await _corepackUtils__WEBPACK_IMPORTED_MODULE_5__.findInstalledVersion(_folderUtils__WEBPACK_IMPORTED_MODULE_4__.getInstallFolder(), finalDescriptor); - if (cachedVersion !== null && useCache) - return { name: finalDescriptor.name, reference: cachedVersion }; - const candidateRangeDefinitions = Object.keys(definition.ranges).filter(range => { - return _semverUtils__WEBPACK_IMPORTED_MODULE_6__.satisfiesWithPrereleases(finalDescriptor.range, range); - }); - const tagResolutions = await Promise.all(candidateRangeDefinitions.map(async (range) => { - return [range, await _corepackUtils__WEBPACK_IMPORTED_MODULE_5__.fetchAvailableVersions(definition.ranges[range].registry)]; - })); - // If a version is available under multiple strategies (for example if - // Yarn is published to both the v1 package and git), we only care - // about the latest one - const resolutionMap = new Map(); - for (const [range, resolutions] of tagResolutions) - for (const entry of resolutions) - resolutionMap.set(entry, range); - const candidates = [...resolutionMap.keys()]; - const maxSatisfying = semver__WEBPACK_IMPORTED_MODULE_2___default().maxSatisfying(candidates, finalDescriptor.range); - if (maxSatisfying === null) - return null; - return { name: finalDescriptor.name, reference: maxSatisfying }; - } - getLastKnownGoodFile() { - return path__WEBPACK_IMPORTED_MODULE_1___default().join(_folderUtils__WEBPACK_IMPORTED_MODULE_4__.getInstallFolder(), `lastKnownGood.json`); - } +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); } /***/ }), -/***/ "./sources/commands/Disable.ts": -/*!*************************************!*\ - !*** ./sources/commands/Disable.ts ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/comparator.js": +/*!**************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/comparator.js ***! + \**************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "DisableCommand": () => (/* binding */ DisableCommand) -/* harmony export */ }); -/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/index.js"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var which__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! which */ "./.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip/node_modules/which/which.js"); -/* harmony import */ var which__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(which__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../types */ "./sources/types.ts"); +const ANY = Symbol('SemVer ANY') +// hoisted class for cyclic dependency +class Comparator { + static get ANY () { + return ANY + } + constructor (comp, options) { + options = parseOptions(options) + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } -class DisableCommand extends clipanion__WEBPACK_IMPORTED_MODULE_4__.Command { - constructor() { - super(...arguments); - this.installDirectory = clipanion__WEBPACK_IMPORTED_MODULE_4__.Option.String(`--install-directory`, { - description: `Where the shims are located`, - }); - this.names = clipanion__WEBPACK_IMPORTED_MODULE_4__.Option.Rest(); + debug('comp', this) + } + + parse (comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] + const m = comp.match(r) + + if (!m) { + throw new TypeError(`Invalid comparator: ${comp}`) } - async execute() { - let installDirectory = this.installDirectory; - // Node always call realpath on the module it executes, so we already - // lost track of how the binary got called. To find it back, we need to - // iterate over the PATH variable. - if (typeof installDirectory === `undefined`) - installDirectory = path__WEBPACK_IMPORTED_MODULE_1___default().dirname(await which__WEBPACK_IMPORTED_MODULE_2___default()(`corepack`)); - const names = this.names.length === 0 - ? _types__WEBPACK_IMPORTED_MODULE_3__.SupportedPackageManagerSetWithoutNpm - : this.names; - for (const name of new Set(names)) { - if (!(0,_types__WEBPACK_IMPORTED_MODULE_3__.isSupportedPackageManager)(name)) - throw new clipanion__WEBPACK_IMPORTED_MODULE_4__.UsageError(`Invalid package manager name '${name}'`); - for (const binName of this.context.engine.getBinariesFor(name)) { - if (process.platform === `win32`) { - await this.removeWin32Link(installDirectory, binName); - } - else { - await this.removePosixLink(installDirectory, binName); - } - } - } + + this.operator = m[1] !== undefined ? m[1] : '' + if (this.operator === '=') { + this.operator = '' } - async removePosixLink(installDirectory, binName) { - const file = path__WEBPACK_IMPORTED_MODULE_1___default().join(installDirectory, binName); - try { - await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.unlink(file); - } - catch (err) { - if (err.code !== `ENOENT`) { - throw err; - } - } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) } - async removeWin32Link(installDirectory, binName) { - for (const ext of [``, `.ps1`, `.cmd`]) { - const file = path__WEBPACK_IMPORTED_MODULE_1___default().join(installDirectory, `${binName}${ext}`); - try { - await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.unlink(file); - } - catch (err) { - if (err.code !== `ENOENT`) { - throw err; - } - } - } + } + + toString () { + return this.value + } + + test (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY || version === ANY) { + return true } -} -DisableCommand.paths = [ - [`disable`], -]; -DisableCommand.usage = clipanion__WEBPACK_IMPORTED_MODULE_4__.Command.Usage({ - description: `Remove the Corepack shims from the install directory`, - details: ` - When run, this command will remove the shims for the specified package managers from the install directory, or all shims if no parameters are passed. - By default it will locate the install directory by running the equivalent of \`which corepack\`, but this can be tweaked by explicitly passing the install directory via the \`--bin-folder\` flag. - `, - examples: [[ - `Disable all shims, removing them if they're next to the \`coreshim\` binary`, - `$0 disable`, - ], [ - `Disable all shims, removing them from the specified directory`, - `$0 disable --install-directory /path/to/bin`, - ], [ - `Disable the Yarn shim only`, - `$0 disable yarn`, - ]], -}); + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + return cmp(version, this.operator, this.semver, this.options) + } -/***/ }), + intersects (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } -/***/ "./sources/commands/Enable.ts": -/*!************************************!*\ - !*** ./sources/commands/Enable.ts ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false, + } + } -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "EnableCommand": () => (/* binding */ EnableCommand) -/* harmony export */ }); -/* harmony import */ var _zkochan_cmd_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @zkochan/cmd-shim */ "./.yarn/cache/@zkochan-cmd-shim-npm-5.0.0-9e90407ba0-ace99c7c36.zip/node_modules/@zkochan/cmd-shim/index.js"); -/* harmony import */ var _zkochan_cmd_shim__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_zkochan_cmd_shim__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/index.js"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fs */ "fs"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var which__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! which */ "./.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip/node_modules/which/which.js"); -/* harmony import */ var which__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(which__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../types */ "./sources/types.ts"); + if (this.operator === '') { + if (this.value === '') { + return true + } + return new Range(comp.value, options).test(this.value) + } else if (comp.operator === '') { + if (comp.value === '') { + return true + } + return new Range(this.value, options).test(comp.semver) + } + const sameDirectionIncreasing = + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '>=' || comp.operator === '>') + const sameDirectionDecreasing = + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '<=' || comp.operator === '<') + const sameSemVer = this.semver.version === comp.semver.version + const differentDirectionsInclusive = + (this.operator === '>=' || this.operator === '<=') && + (comp.operator === '>=' || comp.operator === '<=') + const oppositeDirectionsLessThan = + cmp(this.semver, '<', comp.semver, options) && + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<') + const oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>') + return ( + sameDirectionIncreasing || + sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || + oppositeDirectionsGreaterThan + ) + } +} +module.exports = Comparator +const parseOptions = __webpack_require__(/*! ../internal/parse-options */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/parse-options.js") +const { re, t } = __webpack_require__(/*! ../internal/re */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/re.js") +const cmp = __webpack_require__(/*! ../functions/cmp */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/cmp.js") +const debug = __webpack_require__(/*! ../internal/debug */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/debug.js") +const SemVer = __webpack_require__(/*! ./semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") +const Range = __webpack_require__(/*! ./range */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js") -class EnableCommand extends clipanion__WEBPACK_IMPORTED_MODULE_5__.Command { - constructor() { - super(...arguments); - this.installDirectory = clipanion__WEBPACK_IMPORTED_MODULE_5__.Option.String(`--install-directory`, { - description: `Where the shims are to be installed`, - }); - this.names = clipanion__WEBPACK_IMPORTED_MODULE_5__.Option.Rest(); - } - async execute() { - let installDirectory = this.installDirectory; - // Node always call realpath on the module it executes, so we already - // lost track of how the binary got called. To find it back, we need to - // iterate over the PATH variable. - if (typeof installDirectory === `undefined`) - installDirectory = path__WEBPACK_IMPORTED_MODULE_2___default().dirname(await which__WEBPACK_IMPORTED_MODULE_3___default()(`corepack`)); - // Otherwise the relative symlink we'll compute will be incorrect, if the - // install directory is within a symlink - installDirectory = fs__WEBPACK_IMPORTED_MODULE_1___default().realpathSync(installDirectory); - // We use `eval` so that Webpack doesn't statically transform it. - const manifestPath = eval(`require`).resolve(`corepack/package.json`); - const distFolder = path__WEBPACK_IMPORTED_MODULE_2___default().join(path__WEBPACK_IMPORTED_MODULE_2___default().dirname(manifestPath), `dist`); - if (!fs__WEBPACK_IMPORTED_MODULE_1___default().existsSync(distFolder)) - throw new Error(`Assertion failed: The stub folder doesn't exist`); - const names = this.names.length === 0 - ? _types__WEBPACK_IMPORTED_MODULE_4__.SupportedPackageManagerSetWithoutNpm - : this.names; - for (const name of new Set(names)) { - if (!(0,_types__WEBPACK_IMPORTED_MODULE_4__.isSupportedPackageManager)(name)) - throw new clipanion__WEBPACK_IMPORTED_MODULE_5__.UsageError(`Invalid package manager name '${name}'`); - for (const binName of this.context.engine.getBinariesFor(name)) { - if (process.platform === `win32`) { - await this.generateWin32Link(installDirectory, distFolder, binName); - } - else { - await this.generatePosixLink(installDirectory, distFolder, binName); - } - } - } - } - async generatePosixLink(installDirectory, distFolder, binName) { - const file = path__WEBPACK_IMPORTED_MODULE_2___default().join(installDirectory, binName); - const symlink = path__WEBPACK_IMPORTED_MODULE_2___default().relative(installDirectory, path__WEBPACK_IMPORTED_MODULE_2___default().join(distFolder, `${binName}.js`)); - if (fs__WEBPACK_IMPORTED_MODULE_1___default().existsSync(file)) { - const currentSymlink = await fs__WEBPACK_IMPORTED_MODULE_1___default().promises.readlink(file); - if (currentSymlink !== symlink) { - await fs__WEBPACK_IMPORTED_MODULE_1___default().promises.unlink(file); - } - else { - return; - } - } - await fs__WEBPACK_IMPORTED_MODULE_1___default().promises.symlink(symlink, file); +/***/ }), + +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// hoisted class for cyclic dependency +class Range { + constructor (range, options) { + options = parseOptions(options) + + if (range instanceof Range) { + if ( + range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease + ) { + return range + } else { + return new Range(range.raw, options) + } } - async generateWin32Link(installDirectory, distFolder, binName) { - const file = path__WEBPACK_IMPORTED_MODULE_2___default().join(installDirectory, binName); - await _zkochan_cmd_shim__WEBPACK_IMPORTED_MODULE_0___default()(path__WEBPACK_IMPORTED_MODULE_2___default().join(distFolder, `${binName}.js`), file, { - createCmdFile: true, - }); + + if (range instanceof Comparator) { + // just put it in the set and return + this.raw = range.value + this.set = [[range]] + this.format() + return this } -} -EnableCommand.paths = [ - [`enable`], -]; -EnableCommand.usage = clipanion__WEBPACK_IMPORTED_MODULE_5__.Command.Usage({ - description: `Add the Corepack shims to the install directories`, - details: ` - When run, this commmand will check whether the shims for the specified package managers can be found with the correct values inside the install directory. If not, or if they don't exist, they will be created. - By default it will locate the install directory by running the equivalent of \`which corepack\`, but this can be tweaked by explicitly passing the install directory via the \`--bin-folder\` flag. - `, - examples: [[ - `Enable all shims, putting them next to the \`corepath\` binary`, - `$0 enable`, - ], [ - `Enable all shims, putting them in the specified directory`, - `$0 enable --install-directory /path/to/folder`, - ], [ - `Enable the Yarn shim only`, - `$0 enable yarn`, - ]], -}); + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + // First, split based on boolean or || + this.raw = range + this.set = range + .split('||') + // map the range to a 2d array of comparators + .map(r => this.parseRange(r.trim())) + // throw out any comparator lists that are empty + // this generally means that it was not a valid range, which is allowed + // in loose mode, but will still throw if the WHOLE range is invalid. + .filter(c => c.length) -/***/ }), + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${range}`) + } -/***/ "./sources/commands/Hydrate.ts": -/*!*************************************!*\ - !*** ./sources/commands/Hydrate.ts ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + // if we have any that are not the null set, throw out null sets. + if (this.set.length > 1) { + // keep the first one, in case they're all null sets + const first = this.set[0] + this.set = this.set.filter(c => !isNullSet(c[0])) + if (this.set.length === 0) { + this.set = [first] + } else if (this.set.length > 1) { + // if we have any that are *, then the range is just * + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c] + break + } + } + } + } -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "HydrateCommand": () => (/* binding */ HydrateCommand) -/* harmony export */ }); -/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/index.js"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _folderUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../folderUtils */ "./sources/folderUtils.ts"); -/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../types */ "./sources/types.ts"); + this.format() + } + format () { + this.range = this.set + .map((comps) => { + return comps.join(' ').trim() + }) + .join('||') + .trim() + return this.range + } + toString () { + return this.range + } + parseRange (range) { + range = range.trim() -class HydrateCommand extends clipanion__WEBPACK_IMPORTED_MODULE_3__.Command { - constructor() { - super(...arguments); - this.activate = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.Boolean(`--activate`, false, { - description: `If true, this release will become the default one for this package manager`, - }); - this.fileName = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.String(); - } - async execute() { - const installFolder = _folderUtils__WEBPACK_IMPORTED_MODULE_1__.getInstallFolder(); - const fileName = path__WEBPACK_IMPORTED_MODULE_0___default().resolve(this.context.cwd, this.fileName); - const archiveEntries = new Map(); - let hasShortEntries = false; - const { default: tar } = await Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! tar */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/index.js", 19)); - await tar.t({ file: fileName, onentry: entry => { - const segments = entry.header.path.split(/\//g); - if (segments.length < 3) { - hasShortEntries = true; - } - else { - let references = archiveEntries.get(segments[0]); - if (typeof references === `undefined`) - archiveEntries.set(segments[0], references = new Set()); - references.add(segments[1]); - } - } }); - if (hasShortEntries || archiveEntries.size < 1) - throw new clipanion__WEBPACK_IMPORTED_MODULE_3__.UsageError(`Invalid archive format; did it get generated by 'corepack prepare'?`); - for (const [name, references] of archiveEntries) { - for (const reference of references) { - if (!(0,_types__WEBPACK_IMPORTED_MODULE_2__.isSupportedPackageManager)(name)) - throw new clipanion__WEBPACK_IMPORTED_MODULE_3__.UsageError(`Unsupported package manager '${name}'`); - if (this.activate) - this.context.stdout.write(`Hydrating ${name}@${reference} for immediate activation...\n`); - else - this.context.stdout.write(`Hydrating ${name}@${reference}...\n`); - await tar.x({ file: fileName, cwd: installFolder }, [`${name}/${reference}`]); - if (this.activate) { - await this.context.engine.activatePackageManager({ name, reference }); - } - } - } - this.context.stdout.write(`All done!\n`); + // memoize range parsing for performance. + // this is a very hot path, and fully deterministic. + const memoOpts = Object.keys(this.options).join(',') + const memoKey = `parseRange:${memoOpts}:${range}` + const cached = cache.get(memoKey) + if (cached) { + return cached } -} -HydrateCommand.paths = [ - [`hydrate`], -]; -HydrateCommand.usage = clipanion__WEBPACK_IMPORTED_MODULE_3__.Command.Usage({ - description: `Import a package manager into the cache`, - details: ` - This command unpacks a package manager archive into the cache. The archive must have been generated by the \`corepack prepare\` command - no other will work. - `, - examples: [[ - `Import a package manager in the cache`, - `$0 hydrate corepack.tgz`, - ]], -}); + const loose = this.options.loose + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)) + debug('hyphen replace', range) + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range) -/***/ }), + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[t.TILDETRIM], tildeTrimReplace) -/***/ "./sources/commands/Prepare.ts": -/*!*************************************!*\ - !*** ./sources/commands/Prepare.ts ***! - \*************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[t.CARETTRIM], caretTrimReplace) -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "PrepareCommand": () => (/* binding */ PrepareCommand) -/* harmony export */ }); -/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/index.js"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _folderUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../folderUtils */ "./sources/folderUtils.ts"); -/* harmony import */ var _specUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../specUtils */ "./sources/specUtils.ts"); + // normalize spaces + range = range.split(/\s+/).join(' ') + // At this point, the range is completely trimmed and + // ready to be split into comparators. + let rangeList = range + .split(' ') + .map(comp => parseComparator(comp, this.options)) + .join(' ') + .split(/\s+/) + // >=0.0.0 is equivalent to * + .map(comp => replaceGTE0(comp, this.options)) + if (loose) { + // in loose mode, throw out any that are not valid comparators + rangeList = rangeList.filter(comp => { + debug('loose invalid filter', comp, this.options) + return !!comp.match(re[t.COMPARATORLOOSE]) + }) + } + debug('range list', rangeList) -class PrepareCommand extends clipanion__WEBPACK_IMPORTED_MODULE_3__.Command { - constructor() { - super(...arguments); - this.activate = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.Boolean(`--activate`, false, { - description: `If true, this release will become the default one for this package manager`, - }); - this.all = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.Boolean(`--all`, false, { - description: `If true, all available default package managers will be installed`, - }); - this.json = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.Boolean(`--json`, false, { - description: `If true, the output will be the path of the generated tarball`, - }); - this.output = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.String(`-o,--output`, { - description: `If true, the installed package managers will also be stored in a tarball`, - tolerateBoolean: true, - }); - this.specs = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.Rest(); + // if any comparators are the null set, then replace with JUST null set + // if more than one comparator, remove any * comparators + // also, don't include the same comparator more than once + const rangeMap = new Map() + const comparators = rangeList.map(comp => new Comparator(comp, this.options)) + for (const comp of comparators) { + if (isNullSet(comp)) { + return [comp] + } + rangeMap.set(comp.value, comp) } - async execute() { - if (this.all && this.specs.length > 0) - throw new clipanion__WEBPACK_IMPORTED_MODULE_3__.UsageError(`The --all option cannot be used along with an explicit package manager specification`); - const specs = this.all - ? await this.context.engine.getDefaultDescriptors() - : this.specs; - const installLocations = []; - for (const request of specs) { - let spec; - if (typeof request === `undefined`) { - const lookup = await _specUtils__WEBPACK_IMPORTED_MODULE_2__.loadSpec(this.context.cwd); - switch (lookup.type) { - case `NoProject`: - throw new clipanion__WEBPACK_IMPORTED_MODULE_3__.UsageError(`Couldn't find a project in the local directory - please explicit the package manager to pack, or run this command from a valid project`); - case `NoSpec`: - throw new clipanion__WEBPACK_IMPORTED_MODULE_3__.UsageError(`The local project doesn't feature a 'packageManager' field - please explicit the package manager to pack, or update the manifest to reference it`); - default: { - spec = lookup.spec; - } - } - } - else { - spec = typeof request === `string` - ? _specUtils__WEBPACK_IMPORTED_MODULE_2__.parseSpec(request, `CLI arguments`) - : request; - } - const resolved = await this.context.engine.resolveDescriptor(spec); - if (resolved === null) - throw new clipanion__WEBPACK_IMPORTED_MODULE_3__.UsageError(`Failed to successfully resolve '${spec.range}' to a valid ${spec.name} release`); - if (!this.json) { - if (this.activate) { - this.context.stdout.write(`Preparing ${spec.name}@${spec.range} for immediate activation...\n`); - } - else { - this.context.stdout.write(`Preparing ${spec.name}@${spec.range}...\n`); - } - } - const installSpec = await this.context.engine.ensurePackageManager(resolved); - installLocations.push(installSpec.location); - if (this.activate) { - await this.context.engine.activatePackageManager(resolved); - } - } - if (this.output) { - const outputName = typeof this.output === `string` - ? this.output - : `corepack.tgz`; - const baseInstallFolder = _folderUtils__WEBPACK_IMPORTED_MODULE_1__.getInstallFolder(); - const outputPath = path__WEBPACK_IMPORTED_MODULE_0___default().resolve(this.context.cwd, outputName); - if (!this.json) - this.context.stdout.write(`Packing the selected tools in ${path__WEBPACK_IMPORTED_MODULE_0___default().basename(outputPath)}...\n`); - const { default: tar } = await Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! tar */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/index.js", 19)); - await tar.c({ gzip: true, cwd: baseInstallFolder, file: path__WEBPACK_IMPORTED_MODULE_0___default().resolve(outputPath) }, installLocations.map(location => { - return path__WEBPACK_IMPORTED_MODULE_0___default().relative(baseInstallFolder, location); - })); - if (this.json) { - this.context.stdout.write(`${JSON.stringify(outputPath)}\n`); - } - else { - this.context.stdout.write(`All done!\n`); - } - } + if (rangeMap.size > 1 && rangeMap.has('')) { + rangeMap.delete('') } -} -PrepareCommand.paths = [ - [`prepare`], -]; -PrepareCommand.usage = clipanion__WEBPACK_IMPORTED_MODULE_3__.Command.Usage({ - description: `Generate a package manager archive`, - details: ` - This command makes sure that the specified package managers are installed in the local cache. Calling this command explicitly unless you operate in an environment without network access (in which case you'd have to call \`prepare\` while building your image, to make sure all tools are available for later use). - - When the \`-o,--output\` flag is set, Corepack will also compress the resulting package manager into a format suitable for \`corepack hydrate\`, and will store it at the specified location on the disk. - `, - examples: [[ - `Prepare the package manager from the active project`, - `$0 prepare`, - ], [ - `Prepare a specific Yarn version`, - `$0 prepare yarn@2.2.2`, - ], [ - `Generate an archive for a specific Yarn version`, - `$0 prepare yarn@2.2.2 -o`, - ], [ - `Generate a named archive`, - `$0 prepare yarn@2.2.2 --output=yarn.tgz`, - ]], -}); + const result = [...rangeMap.values()] + cache.set(memoKey, result) + return result + } -/***/ }), + intersects (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } -/***/ "./sources/corepackUtils.ts": -/*!**********************************!*\ - !*** ./sources/corepackUtils.ts ***! - \**********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + return this.set.some((thisComparators) => { + return ( + isSatisfiable(thisComparators, options) && + range.set.some((rangeComparators) => { + return ( + isSatisfiable(rangeComparators, options) && + thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options) + }) + }) + ) + }) + ) + }) + } -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "fetchAvailableTags": () => (/* binding */ fetchAvailableTags), -/* harmony export */ "fetchAvailableVersions": () => (/* binding */ fetchAvailableVersions), -/* harmony export */ "findInstalledVersion": () => (/* binding */ findInstalledVersion), -/* harmony export */ "installVersion": () => (/* binding */ installVersion), -/* harmony export */ "runVersion": () => (/* binding */ runVersion) -/* harmony export */ }); -/* harmony import */ var child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! child_process */ "child_process"); -/* harmony import */ var child_process__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(child_process__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fs */ "fs"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/index.js"); -/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(semver__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _debugUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./debugUtils */ "./sources/debugUtils.ts"); -/* harmony import */ var _folderUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./folderUtils */ "./sources/folderUtils.ts"); -/* harmony import */ var _fsUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./fsUtils */ "./sources/fsUtils.ts"); -/* harmony import */ var _httpUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./httpUtils */ "./sources/httpUtils.ts"); + // if ANY of the sets match ALL of its comparators, then pass + test (version) { + if (!version) { + return false + } + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + for (let i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false + } +} +module.exports = Range +const LRU = __webpack_require__(/*! lru-cache */ "../../../.yarn/berry/cache/lru-cache-npm-6.0.0-b4c8668fe1-9.zip/node_modules/lru-cache/index.js") +const cache = new LRU({ max: 1000 }) +const parseOptions = __webpack_require__(/*! ../internal/parse-options */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/parse-options.js") +const Comparator = __webpack_require__(/*! ./comparator */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/comparator.js") +const debug = __webpack_require__(/*! ../internal/debug */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/debug.js") +const SemVer = __webpack_require__(/*! ./semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") +const { + re, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace, +} = __webpack_require__(/*! ../internal/re */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/re.js") +const isNullSet = c => c.value === '<0.0.0-0' +const isAny = c => c.value === '' +// take a set of comparators and determine whether there +// exists a version which can satisfy it +const isSatisfiable = (comparators, options) => { + let result = true + const remainingComparators = comparators.slice() + let testComparator = remainingComparators.pop() + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options) + }) -async function fetchAvailableTags(spec) { - switch (spec.type) { - case `npm`: { - const data = await _httpUtils__WEBPACK_IMPORTED_MODULE_7__.fetchAsJson(`https://registry.npmjs.org/${spec.package}`, { headers: { [`Accept`]: `application/vnd.npm.install-v1+json` } }); - return data[`dist-tags`]; - } - case `url`: { - const data = await _httpUtils__WEBPACK_IMPORTED_MODULE_7__.fetchAsJson(spec.url); - return data[spec.fields.tags]; - } - default: { - throw new Error(`Unsupported specification ${JSON.stringify(spec)}`); - } - } -} -async function fetchAvailableVersions(spec) { - switch (spec.type) { - case `npm`: { - const data = await _httpUtils__WEBPACK_IMPORTED_MODULE_7__.fetchAsJson(`https://registry.npmjs.org/${spec.package}`, { headers: { [`Accept`]: `application/vnd.npm.install-v1+json` } }); - return Object.keys(data.versions); - } - case `url`: { - const data = await _httpUtils__WEBPACK_IMPORTED_MODULE_7__.fetchAsJson(spec.url); - const field = data[spec.fields.versions]; - return Array.isArray(field) ? field : Object.keys(field); - } - default: { - throw new Error(`Unsupported specification ${JSON.stringify(spec)}`); - } - } -} -async function findInstalledVersion(installTarget, descriptor) { - const installFolder = path__WEBPACK_IMPORTED_MODULE_2___default().join(installTarget, descriptor.name); - let folderContent; - try { - folderContent = await fs__WEBPACK_IMPORTED_MODULE_1___default().promises.readdir(installFolder); - } - catch (error) { - if (error.code === `ENOENT`) { - folderContent = []; - } - else { - throw error; - } - } - const candidateVersions = []; - for (const entry of folderContent) { - // Some dot-folders tend to pop inside directories, especially on OSX - if (entry.startsWith(`.`)) - continue; - candidateVersions.push(entry); - } - const bestMatch = semver__WEBPACK_IMPORTED_MODULE_3___default().maxSatisfying(candidateVersions, descriptor.range); - if (bestMatch === null) - return null; - return bestMatch; -} -async function installVersion(installTarget, locator, { spec }) { - const { default: tar } = await Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! tar */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/index.js", 19)); - const installFolder = path__WEBPACK_IMPORTED_MODULE_2___default().join(installTarget, locator.name, locator.reference); - if (fs__WEBPACK_IMPORTED_MODULE_1___default().existsSync(installFolder)) { - _debugUtils__WEBPACK_IMPORTED_MODULE_4__.log(`Reusing ${locator.name}@${locator.reference}`); - return installFolder; - } - const url = spec.url.replace(`{}`, locator.reference); - _debugUtils__WEBPACK_IMPORTED_MODULE_4__.log(`Installing ${locator.name}@${locator.reference} from ${url}`); - return await _fsUtils__WEBPACK_IMPORTED_MODULE_6__.mutex(installFolder, async () => { - // Creating a temporary folder inside the install folder means that we - // are sure it'll be in the same drive as the destination, so we can - // just move it there atomically once we are done - const tmpFolder = _folderUtils__WEBPACK_IMPORTED_MODULE_5__.getTemporaryFolder(installTarget); - const stream = await _httpUtils__WEBPACK_IMPORTED_MODULE_7__.fetchUrlStream(url); - const parsedUrl = new URL(url); - const ext = path__WEBPACK_IMPORTED_MODULE_2___default().posix.extname(parsedUrl.pathname); - let outputFile = null; - let sendTo; - if (ext === `.tgz`) { - sendTo = tar.x({ strip: 1, cwd: tmpFolder }); - } - else if (ext === `.js`) { - outputFile = path__WEBPACK_IMPORTED_MODULE_2___default().join(tmpFolder, path__WEBPACK_IMPORTED_MODULE_2___default().posix.basename(parsedUrl.pathname)); - sendTo = fs__WEBPACK_IMPORTED_MODULE_1___default().createWriteStream(outputFile); - } - stream.pipe(sendTo); - await new Promise(resolve => { - sendTo.on(`finish`, resolve); - }); - await fs__WEBPACK_IMPORTED_MODULE_1___default().promises.mkdir(path__WEBPACK_IMPORTED_MODULE_2___default().dirname(installFolder), { recursive: true }); - await fs__WEBPACK_IMPORTED_MODULE_1___default().promises.rename(tmpFolder, installFolder); - _debugUtils__WEBPACK_IMPORTED_MODULE_4__.log(`Install finished`); - return installFolder; - }); -} -async function runVersion(installSpec, locator, binName, args, context) { - let binPath = null; - if (Array.isArray(installSpec.spec.bin)) { - if (installSpec.spec.bin.some(bin => bin === binName)) { - const parsedUrl = new URL(installSpec.spec.url); - const ext = path__WEBPACK_IMPORTED_MODULE_2___default().posix.extname(parsedUrl.pathname); - if (ext === `.js`) { - binPath = path__WEBPACK_IMPORTED_MODULE_2___default().join(installSpec.location, path__WEBPACK_IMPORTED_MODULE_2___default().posix.basename(parsedUrl.pathname)); - } - } - } - else { - for (const [name, dest] of Object.entries(installSpec.spec.bin)) { - if (name === binName) { - binPath = path__WEBPACK_IMPORTED_MODULE_2___default().join(installSpec.location, dest); - break; - } - } - } - if (!binPath) - throw new Error(`Assertion failed: Unable to locate path for bin '${binName}'`); - return new Promise((resolve, reject) => { - process.on(`SIGINT`, () => { - // We don't want to exit the process before the child, so we just - // ignore SIGINT and wait for the regular exit to happen (the child - // will receive SIGINT too since it's part of the same process grp) - }); - const stdio = [`pipe`, `pipe`, `pipe`]; - if (context.stdin === process.stdin) - stdio[0] = `inherit`; - if (context.stdout === process.stdout) - stdio[1] = `inherit`; - if (context.stderr === process.stderr) - stdio[2] = `inherit`; - const v8CompileCache = typeof require !== `undefined` - ? eval(`require`).resolve(`./vcc.js`) - : eval(`require`).resolve(`corepack/dist/vcc.js`); - const child = (0,child_process__WEBPACK_IMPORTED_MODULE_0__.spawn)(process.execPath, [`--require`, v8CompileCache, binPath, ...args], { - cwd: context.cwd, - stdio, - env: Object.assign(Object.assign({}, process.env), { COREPACK_ROOT: path__WEBPACK_IMPORTED_MODULE_2___default().dirname(eval(`__dirname`)) }), - }); - activeChildren.add(child); - if (activeChildren.size === 1) { - process.on(`SIGINT`, sigintHandler); - process.on(`SIGTERM`, sigtermHandler); - } - if (context.stdin !== process.stdin) - context.stdin.pipe(child.stdin); - if (context.stdout !== process.stdout) - child.stdout.pipe(context.stdout); - if (context.stderr !== process.stderr) - child.stderr.pipe(context.stderr); - child.on(`error`, error => { - activeChildren.delete(child); - if (activeChildren.size === 0) { - process.off(`SIGINT`, sigintHandler); - process.off(`SIGTERM`, sigtermHandler); - } - reject(error); - }); - child.on(`exit`, exitCode => { - activeChildren.delete(child); - if (activeChildren.size === 0) { - process.off(`SIGINT`, sigintHandler); - process.off(`SIGTERM`, sigtermHandler); - } - resolve(exitCode !== null ? exitCode : 1); - }); - }); -} -const activeChildren = new Set(); -function sigintHandler() { - // We don't want SIGINT to kill our process; we want it to kill the - // innermost process, whose end will cause our own to exit. -} -function sigtermHandler() { - for (const child of activeChildren) { - child.kill(); - } -} - - -/***/ }), + testComparator = remainingComparators.pop() + } -/***/ "./sources/debugUtils.ts": -/*!*******************************!*\ - !*** ./sources/debugUtils.ts ***! - \*******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + return result +} -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "log": () => (/* binding */ log) -/* harmony export */ }); -/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "./.yarn/__virtual__/debug-virtual-d208043b83/0/cache/debug-npm-4.1.1-540248b3aa-1e681f5cce.zip/node_modules/debug/src/index.js"); -/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__); +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +const parseComparator = (comp, options) => { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} -const log = debug__WEBPACK_IMPORTED_MODULE_0___default()(`corepack`); +const isX = id => !id || id.toLowerCase() === 'x' || id === '*' +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 +const replaceTildes = (comp, options) => + comp.trim().split(/\s+/).map((c) => { + return replaceTilde(c, options) + }).join(' ') -/***/ }), +const replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] + return comp.replace(r, (_, M, m, p, pr) => { + debug('tilde', comp, _, M, m, p, pr) + let ret -/***/ "./sources/folderUtils.ts": -/*!********************************!*\ - !*** ./sources/folderUtils.ts ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0` + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0` + } else if (pr) { + debug('replaceTilde pr', pr) + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0` + } else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p + } <${M}.${+m + 1}.0-0` + } -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getInstallFolder": () => (/* binding */ getInstallFolder), -/* harmony export */ "getTemporaryFolder": () => (/* binding */ getTemporaryFolder) -/* harmony export */ }); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! os */ "os"); -/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(os__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); + debug('tilde return', ret) + return ret + }) +} +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 +// ^1.2.3 --> >=1.2.3 <2.0.0-0 +// ^1.2.0 --> >=1.2.0 <2.0.0-0 +const replaceCarets = (comp, options) => + comp.trim().split(/\s+/).map((c) => { + return replaceCaret(c, options) + }).join(' ') +const replaceCaret = (comp, options) => { + debug('caret', comp, options) + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] + const z = options.includePrerelease ? '-0' : '' + return comp.replace(r, (_, M, m, p, pr) => { + debug('caret', comp, _, M, m, p, pr) + let ret -function getInstallFolder() { - var _a; - return (_a = process.env.COREPACK_HOME) !== null && _a !== void 0 ? _a : (0,path__WEBPACK_IMPORTED_MODULE_2__.join)((0,os__WEBPACK_IMPORTED_MODULE_1__.homedir)(), `.node/corepack`); -} -function getTemporaryFolder(target = (0,os__WEBPACK_IMPORTED_MODULE_1__.tmpdir)()) { - (0,fs__WEBPACK_IMPORTED_MODULE_0__.mkdirSync)(target, { recursive: true }); - while (true) { - const rnd = Math.random() * 0x100000000; - const hex = rnd.toString(16).padStart(8, `0`); - const path = (0,path__WEBPACK_IMPORTED_MODULE_2__.join)(target, `corepack-${process.pid}-${hex}`); - try { - (0,fs__WEBPACK_IMPORTED_MODULE_0__.mkdirSync)(path); - return path; + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0` + } else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0` + } else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0` + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${m}.${+p + 1}-0` + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0` } - catch (error) { - if (error.code === `EEXIST`) { - continue; - } - else { - throw error; - } + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${+M + 1}.0.0-0` + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p + }${z} <${M}.${m}.${+p + 1}-0` + } else { + ret = `>=${M}.${m}.${p + }${z} <${M}.${+m + 1}.0-0` } + } else { + ret = `>=${M}.${m}.${p + } <${+M + 1}.0.0-0` + } } -} - -/***/ }), - -/***/ "./sources/fsUtils.ts": -/*!****************************!*\ - !*** ./sources/fsUtils.ts ***! - \****************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + debug('caret return', ret) + return ret + }) +} -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "mutex": () => (/* binding */ mutex) -/* harmony export */ }); -async function mutex(p, cb) { - return await cb(); +const replaceXRanges = (comp, options) => { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map((c) => { + return replaceXRange(c, options) + }).join(' ') } +const replaceXRange = (comp, options) => { + comp = comp.trim() + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + const xM = isX(M) + const xm = xM || isX(m) + const xp = xm || isX(p) + const anyX = xp -/***/ }), + if (gtlt === '=' && anyX) { + gtlt = '' + } -/***/ "./sources/httpUtils.ts": -/*!******************************!*\ - !*** ./sources/httpUtils.ts ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options.includePrerelease ? '-0' : '' -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "fetchUrlStream": () => (/* binding */ fetchUrlStream), -/* harmony export */ "fetchAsBuffer": () => (/* binding */ fetchAsBuffer), -/* harmony export */ "fetchAsJson": () => (/* binding */ fetchAsJson) -/* harmony export */ }); -/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/index.js"); + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 -async function fetchUrlStream(url, options = {}) { - if (process.env.COREPACK_ENABLE_NETWORK === `0`) - throw new clipanion__WEBPACK_IMPORTED_MODULE_0__.UsageError(`Network access disabled by the environment; can't reach ${url}`); - const { default: https } = await Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(__webpack_require__, /*! https */ "https", 23)); - return new Promise((resolve, reject) => { - const request = https.get(url, options, response => { - var _a; - const statusCode = (_a = response.statusCode) !== null && _a !== void 0 ? _a : 500; - if (!(statusCode >= 200 && statusCode < 300)) - return reject(new Error(`Server answered with HTTP ${statusCode}`)); - return resolve(response); - }); - request.on(`error`, err => { - reject(new Error(`Error when performing the request`)); - }); - }); -} -async function fetchAsBuffer(url, options) { - const response = await fetchUrlStream(url, options); - return new Promise((resolve, reject) => { - const chunks = []; - response.on(`data`, chunk => { - chunks.push(chunk); - }); - response.on(`error`, error => { - reject(error); - }); - response.on(`end`, () => { - resolve(Buffer.concat(chunks)); - }); - }); -} -async function fetchAsJson(url, options) { - const buffer = await fetchAsBuffer(url, options); - const asText = buffer.toString(); - try { - return JSON.parse(asText); - } - catch (error) { - const truncated = asText.length > 30 - ? `${asText.slice(0, 30)}...` - : asText; - throw new Error(`Couldn't parse JSON data: ${JSON.stringify(truncated)}`); - } -} + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } + if (gtlt === '<') { + pr = '-0' + } -/***/ }), + ret = `${gtlt + M}.${m}.${p}${pr}` + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0` + } else if (xp) { + ret = `>=${M}.${m}.0${pr + } <${M}.${+m + 1}.0-0` + } -/***/ "./sources/miscUtils.ts": -/*!******************************!*\ - !*** ./sources/miscUtils.ts ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + debug('xRange return', ret) -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "Cancellation": () => (/* binding */ Cancellation) -/* harmony export */ }); -class Cancellation extends Error { - constructor() { - super(`Cancelled operation`); - } + return ret + }) } +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +const replaceStars = (comp, options) => { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(re[t.STAR], '') +} -/***/ }), +const replaceGTE0 = (comp, options) => { + debug('replaceGTE0', comp, options) + return comp.trim() + .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '') +} -/***/ "./sources/semverUtils.ts": -/*!********************************!*\ - !*** ./sources/semverUtils.ts ***! - \********************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +// This function is passed to string.replace(re[t.HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 +const hyphenReplace = incPr => ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) => { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? '-0' : ''}` + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}` + } else if (fpr) { + from = `>=${from}` + } else { + from = `>=${from}${incPr ? '-0' : ''}` + } -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "satisfiesWithPrereleases": () => (/* binding */ satisfiesWithPrereleases) -/* harmony export */ }); -/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/index.js"); -/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(semver__WEBPACK_IMPORTED_MODULE_0__); + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0` + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0` + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}` + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0` + } else { + to = `<=${to}` + } -/** - * Returns whether the given semver version satisfies the given range. Notably - * this supports prerelease versions so that "2.0.0-rc.0" satisfies the range - * ">=1.0.0", for example. - * - * This function exists because the semver.satisfies method does not include - * pre releases. This means ranges such as * would not satisfy 1.0.0-rc. The - * includePrerelease flag has a weird behavior and cannot be used (if you want - * to try it out, just run the `semverUtils` testsuite using this flag instead - * of our own implementation, and you'll see the failing cases). - * - * See https://github.com/yarnpkg/berry/issues/575 for more context. - */ -function satisfiesWithPrereleases(version, range, loose = false) { - let semverRange; - try { - semverRange = new (semver__WEBPACK_IMPORTED_MODULE_0___default().Range)(range, loose); - } - catch (err) { - return false; + return (`${from} ${to}`).trim() +} + +const testSet = (set, version, options) => { + for (let i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false } - if (!version) - return false; - let semverVersion; - try { - semverVersion = new (semver__WEBPACK_IMPORTED_MODULE_0___default().SemVer)(version, semverRange.loose); - if (semverVersion.prerelease) { - semverVersion.prerelease = []; + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (let i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === Comparator.ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true } + } } - catch (err) { - return false; - } - // A range has multiple sets of comparators. A version must satisfy all - // comparators in a set and at least one set to satisfy the range. - return semverRange.set.some(comparatorSet => { - for (const comparator of comparatorSet) - if (comparator.semver.prerelease) - comparator.semver.prerelease = []; - return comparatorSet.every(comparator => { - return comparator.test(semverVersion); - }); - }); + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true } /***/ }), -/***/ "./sources/specUtils.ts": -/*!******************************!*\ - !*** ./sources/specUtils.ts ***! - \******************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js": +/*!**********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "parseSpec": () => (/* binding */ parseSpec), -/* harmony export */ "findProjectSpec": () => (/* binding */ findProjectSpec), -/* harmony export */ "loadSpec": () => (/* binding */ loadSpec) -/* harmony export */ }); -/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/index.js"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/index.js"); -/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(semver__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ "./sources/types.ts"); +const debug = __webpack_require__(/*! ../internal/debug */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/debug.js") +const { MAX_LENGTH, MAX_SAFE_INTEGER } = __webpack_require__(/*! ../internal/constants */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/constants.js") +const { re, t } = __webpack_require__(/*! ../internal/re */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/re.js") +const parseOptions = __webpack_require__(/*! ../internal/parse-options */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/parse-options.js") +const { compareIdentifiers } = __webpack_require__(/*! ../internal/identifiers */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/identifiers.js") +class SemVer { + constructor (version, options) { + options = parseOptions(options) + if (version instanceof SemVer) { + if (version.loose === !!options.loose && + version.includePrerelease === !!options.includePrerelease) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError(`Invalid Version: ${version}`) + } + if (version.length > MAX_LENGTH) { + throw new TypeError( + `version is longer than ${MAX_LENGTH} characters` + ) + } + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + // this isn't actually relevant for versions, but keep it so that we + // don't run into trouble passing this.options around. + this.includePrerelease = !!options.includePrerelease -const nodeModulesRegExp = /[\\/]node_modules[\\/](@[^\\/]*[\\/])?([^@\\/][^\\/]*)$/; -function parseSpec(raw, source) { - if (typeof raw !== `string`) - throw new clipanion__WEBPACK_IMPORTED_MODULE_4__.UsageError(`Invalid package manager specification in ${source}; expected a string`); - const match = raw.match(/^(?!_)(.+)@(.+)$/); - if (match === null || !semver__WEBPACK_IMPORTED_MODULE_2___default().valid(match[2])) - throw new clipanion__WEBPACK_IMPORTED_MODULE_4__.UsageError(`Invalid package manager specification in ${source}; expected a semver version`); - if (!(0,_types__WEBPACK_IMPORTED_MODULE_3__.isSupportedPackageManager)(match[1])) - throw new clipanion__WEBPACK_IMPORTED_MODULE_4__.UsageError(`Unsupported package manager specification (${match})`); - return { - name: match[1], - range: match[2], - }; -} -/** - * Locates the active project's package manager specification. - * - * If the specification exists but doesn't match the active package manager, - * an error is thrown to prevent users from using the wrong package manager, - * which would lead to inconsistent project layouts. - * - * If the project doesn't include a specification file, we just assume that - * whatever the user uses is exactly what they want to use. Since the version - * isn't explicited, we fallback on known good versions. - * - * Finally, if the project doesn't exist at all, we ask the user whether they - * want to create one in the current project. If they do, we initialize a new - * project using the default package managers, and configure it so that we - * don't need to ask again in the future. - */ -async function findProjectSpec(initialCwd, locator, { transparent = false } = {}) { - // A locator is a valid descriptor (but not the other way around) - const fallbackLocator = { name: locator.name, range: locator.reference }; - while (true) { - const result = await loadSpec(initialCwd); - switch (result.type) { - case `NoProject`: - case `NoSpec`: - { - return fallbackLocator; - } - break; - case `Found`: - { - if (result.spec.name !== locator.name) { - if (transparent) { - return fallbackLocator; - } - else { - throw new clipanion__WEBPACK_IMPORTED_MODULE_4__.UsageError(`This project is configured to use ${result.spec.name}`); - } - } - else { - return result.spec; - } - } - break; - } + const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) + + if (!m) { + throw new TypeError(`Invalid Version: ${version}`) } -} -async function loadSpec(initialCwd) { - let nextCwd = initialCwd; - let currCwd = ``; - let selection = null; - while (nextCwd !== currCwd && (!selection || !selection.data.packageManager)) { - currCwd = nextCwd; - nextCwd = path__WEBPACK_IMPORTED_MODULE_1___default().dirname(currCwd); - if (nodeModulesRegExp.test(currCwd)) - continue; - const manifestPath = path__WEBPACK_IMPORTED_MODULE_1___default().join(currCwd, `package.json`); - if (!fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(manifestPath)) - continue; - const content = await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.readFile(manifestPath, `utf8`); - let data; - try { - data = JSON.parse(content); + + this.raw = version + + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } } - catch (_a) { } - if (typeof data !== `object` || data === null) - throw new clipanion__WEBPACK_IMPORTED_MODULE_4__.UsageError(`Invalid package.json in ${path__WEBPACK_IMPORTED_MODULE_1___default().relative(initialCwd, manifestPath)}`); - selection = { data, manifestPath }; + return id + }) } - if (selection === null) - return { type: `NoProject`, target: path__WEBPACK_IMPORTED_MODULE_1___default().join(initialCwd, `package.json`) }; - const rawPmSpec = selection.data.packageManager; - if (typeof rawPmSpec === `undefined`) - return { type: `NoSpec`, target: selection.manifestPath }; - return { - type: `Found`, - spec: parseSpec(rawPmSpec, path__WEBPACK_IMPORTED_MODULE_1___default().relative(initialCwd, selection.manifestPath)), - }; -} + this.build = m[5] ? m[5].split('.') : [] + this.format() + } -/***/ }), + format () { + this.version = `${this.major}.${this.minor}.${this.patch}` + if (this.prerelease.length) { + this.version += `-${this.prerelease.join('.')}` + } + return this.version + } -/***/ "./sources/types.ts": -/*!**************************!*\ - !*** ./sources/types.ts ***! - \**************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + toString () { + return this.version + } -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "SupportedPackageManagers": () => (/* binding */ SupportedPackageManagers), -/* harmony export */ "SupportedPackageManagerSet": () => (/* binding */ SupportedPackageManagerSet), -/* harmony export */ "SupportedPackageManagerSetWithoutNpm": () => (/* binding */ SupportedPackageManagerSetWithoutNpm), -/* harmony export */ "isSupportedPackageManager": () => (/* binding */ isSupportedPackageManager) -/* harmony export */ }); -var SupportedPackageManagers; -(function (SupportedPackageManagers) { - SupportedPackageManagers["Npm"] = "npm"; - SupportedPackageManagers["Pnpm"] = "pnpm"; - SupportedPackageManagers["Yarn"] = "yarn"; -})(SupportedPackageManagers || (SupportedPackageManagers = {})); -const SupportedPackageManagerSet = new Set(Object.values(SupportedPackageManagers)); -const SupportedPackageManagerSetWithoutNpm = new Set(Object.values(SupportedPackageManagers)); -// npm is distributed with Node as a builtin; we don't want Corepack to override it unless the npm team is on board -SupportedPackageManagerSetWithoutNpm.delete(SupportedPackageManagers.Npm); -function isSupportedPackageManager(value) { - return SupportedPackageManagerSet.has(value); -} + compare (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + if (typeof other === 'string' && other === this.version) { + return 0 + } + other = new SemVer(other, this.options) + } + if (other.version === this.version) { + return 0 + } -/***/ }), + return this.compareMain(other) || this.comparePre(other) + } -/***/ "./.yarn/cache/@zkochan-cmd-shim-npm-5.0.0-9e90407ba0-ace99c7c36.zip/node_modules/@zkochan/cmd-shim/index.js": -/*!*******************************************************************************************************************!*\ - !*** ./.yarn/cache/@zkochan-cmd-shim-npm-5.0.0-9e90407ba0-ace99c7c36.zip/node_modules/@zkochan/cmd-shim/index.js ***! - \*******************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + compareMain (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } -"use strict"; + return ( + compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) + ) + } -cmdShim.ifExists = cmdShimIfExists; -const util_1 = __webpack_require__(/*! util */ "util"); -const path = __webpack_require__(/*! path */ "path"); -const isWindows = __webpack_require__(/*! is-windows */ "./.yarn/cache/is-windows-npm-1.0.2-898cd6f3d7-438b7e5265.zip/node_modules/is-windows/index.js"); -const shebangExpr = /^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/; -const DEFAULT_OPTIONS = { - // Create PowerShell file by default if the option hasn't been specified - createPwshFile: true, - createCmdFile: isWindows(), - fs: __webpack_require__(/*! fs */ "fs") -}; -/** - * Map from extensions of files that this module is frequently used for to their runtime. - * @type {Map} - */ -const extensionToProgramMap = new Map([ - ['.js', 'node'], - ['.cmd', 'cmd'], - ['.bat', 'cmd'], - ['.ps1', 'pwsh'], - ['.sh', 'sh'] -]); -function ingestOptions(opts) { - const opts_ = { ...DEFAULT_OPTIONS, ...opts }; - const fs = opts_.fs; - opts_.fs_ = { - chmod: fs.chmod ? util_1.promisify(fs.chmod) : (async () => { }), - mkdir: util_1.promisify(fs.mkdir), - readFile: util_1.promisify(fs.readFile), - stat: util_1.promisify(fs.stat), - unlink: util_1.promisify(fs.unlink), - writeFile: util_1.promisify(fs.writeFile) - }; - return opts_; -} -/** - * Try to create shims. - * - * @param src Path to program (executable or script). - * @param to Path to shims. - * Don't add an extension if you will create multiple types of shims. - * @param opts Options. - * @throws If `src` is missing. - */ -async function cmdShim(src, to, opts) { - const opts_ = ingestOptions(opts); - await opts_.fs_.stat(src); - await cmdShim_(src, to, opts_); -} -/** - * Try to create shims. - * - * Does nothing if `src` doesn't exist. - * - * @param src Path to program (executable or script). - * @param to Path to shims. - * Don't add an extension if you will create multiple types of shims. - * @param opts Options. - */ -function cmdShimIfExists(src, to, opts) { - return cmdShim(src, to, opts).catch(() => { }); -} -/** - * Try to unlink, but ignore errors. - * Any problems will surface later. - * - * @param path File to be removed. - */ -function rm(path, opts) { - return opts.fs_.unlink(path).catch(() => { }); -} -/** - * Try to create shims **even if `src` is missing**. - * - * @param src Path to program (executable or script). - * @param to Path to shims. - * Don't add an extension if you will create multiple types of shims. - * @param opts Options. - */ -async function cmdShim_(src, to, opts) { - const srcRuntimeInfo = await searchScriptRuntime(src, opts); - // Always tries to create all types of shims by calling `writeAllShims` as of now. - // Append your code here to change the behavior in response to `srcRuntimeInfo`. - // Create 3 shims for (Ba)sh in Cygwin / MSYS, no extension) & CMD (.cmd) & PowerShell (.ps1) - await writeShimsPreCommon(to, opts); - return writeAllShims(src, to, srcRuntimeInfo, opts); -} -/** - * Do processes before **all** shims are created. - * This must be called **only once** for one call of `cmdShim(IfExists)`. - * - * @param target Path of shims that are going to be created. - */ -function writeShimsPreCommon(target, opts) { - return opts.fs_.mkdir(path.dirname(target), { recursive: true }); -} -/** - * Write all types (sh & cmd & pwsh) of shims to files. - * Extensions (`.cmd` and `.ps1`) are appended to cmd and pwsh shims. - * - * - * @param src Path to program (executable or script). - * @param to Path to shims **without extensions**. - * Extensions are added for CMD and PowerShell shims. - * @param srcRuntimeInfo Return value of `await searchScriptRuntime(src)`. - * @param opts Options. - */ -function writeAllShims(src, to, srcRuntimeInfo, opts) { - const opts_ = ingestOptions(opts); - const generatorAndExts = [{ generator: generateShShim, extension: '' }]; - if (opts_.createCmdFile) { - generatorAndExts.push({ generator: generateCmdShim, extension: '.cmd' }); + comparePre (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) } - if (opts_.createPwshFile) { - generatorAndExts.push({ generator: generatePwshShim, extension: '.ps1' }); + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 } - return Promise.all(generatorAndExts.map((generatorAndExt) => writeShim(src, to + generatorAndExt.extension, srcRuntimeInfo, generatorAndExt.generator, opts_))); -} -/** - * Do processes before writing shim. - * - * @param target Path to shim that is going to be created. - */ -function writeShimPre(target, opts) { - return rm(target, opts); + + let i = 0 + do { + const a = this.prerelease[i] + const b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + compareBuild (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + let i = 0 + do { + const a = this.build[i] + const b = other.build[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + // preminor will bump the version up to the next minor release, and immediately + // down to pre-release. premajor and prepatch work the same way. + inc (release, identifier) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier) + this.inc('pre', identifier) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier) + } + this.inc('pre', identifier) + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if ( + this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0 + ) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. + case 'pre': + if (this.prerelease.length === 0) { + this.prerelease = [0] + } else { + let i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] + } + } else { + this.prerelease = [identifier, 0] + } + } + break + + default: + throw new Error(`invalid increment argument: ${release}`) + } + this.format() + this.raw = this.version + return this + } } -/** - * Do processes after writing the shim. - * - * @param target Path to just created shim. - */ -function writeShimPost(target, opts) { - // Only chmoding shims as of now. - // Some other processes may be appended. - return chmodShim(target, opts); + +module.exports = SemVer + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/clean.js": +/*!***********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/clean.js ***! + \***********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const parse = __webpack_require__(/*! ./parse */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/parse.js") +const clean = (version, options) => { + const s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null } -/** - * Look into runtime (e.g. `node` & `sh` & `pwsh`) and its arguments - * of the target program (script or executable). - * - * @param target Path to the executable or script. - * @return Promise of infomation of runtime of `target`. - */ -async function searchScriptRuntime(target, opts) { - const data = await opts.fs_.readFile(target, 'utf8'); - // First, check if the bin is a #! of some sort. - const firstLine = data.trim().split(/\r*\n/)[0]; - const shebang = firstLine.match(shebangExpr); - if (!shebang) { - // If not, infer script type from its extension. - // If the inference fails, it's something that'll be compiled, or some other - // sort of script, and just call it directly. - const targetExtension = path.extname(target).toLowerCase(); - return { - // undefined if extension is unknown but it's converted to null. - program: extensionToProgramMap.get(targetExtension) || null, - additionalArgs: '' - }; - } - return { - program: shebang[1], - additionalArgs: shebang[2] - }; -} -/** - * Write shim to the file system while executing the pre- and post-processes - * defined in `WriteShimPre` and `WriteShimPost`. - * - * @param src Path to the executable or script. - * @param to Path to the (sh) shim(s) that is going to be created. - * @param srcRuntimeInfo Result of `await searchScriptRuntime(src)`. - * @param generateShimScript Generator of shim script. - * @param opts Other options. - */ -async function writeShim(src, to, srcRuntimeInfo, generateShimScript, opts) { - const defaultArgs = opts.preserveSymlinks ? '--preserve-symlinks' : ''; - // `Array.prototype.filter` removes ''. - // ['--foo', '--bar'].join(' ') and [].join(' ') returns '--foo --bar' and '' respectively. - const args = [srcRuntimeInfo.additionalArgs, defaultArgs].filter(arg => arg).join(' '); - opts = Object.assign({}, opts, { - prog: srcRuntimeInfo.program, - args: args - }); - await writeShimPre(to, opts); - await opts.fs_.writeFile(to, generateShimScript(src, to, opts), 'utf8'); - return writeShimPost(to, opts); -} -/** - * Generate the content of a shim for CMD. - * - * @param src Path to the executable or script. - * @param to Path to the shim to be created. - * It is highly recommended to end with `.cmd` (or `.bat`). - * @param opts Options. - * @return The content of shim. - */ -function generateCmdShim(src, to, opts) { - // `shTarget` is not used to generate the content. - const shTarget = path.relative(path.dirname(to), src); - let target = shTarget.split('/').join('\\'); - const quotedPathToTarget = path.isAbsolute(target) ? `"${target}"` : `"%~dp0\\${target}"`; - let longProg; - let prog = opts.prog; - let args = opts.args || ''; - const nodePath = normalizePathEnvVar(opts.nodePath).win32; - if (!prog) { - prog = quotedPathToTarget; - args = ''; - target = ''; - } - else { - longProg = `"%~dp0\\${prog}.exe"`; - target = quotedPathToTarget; - } - let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : ''; - // @IF EXIST "%~dp0\node.exe" ( - // "%~dp0\node.exe" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %* - // ) ELSE ( - // SETLOCAL - // SET PATHEXT=%PATHEXT:;.JS;=;% - // node "%~dp0\.\node_modules\npm\bin\npm-cli.js" %* - // ) - let cmd = nodePath ? `@SET NODE_PATH=${nodePath}\r\n` : ''; - if (longProg) { - cmd += `@IF EXIST ${longProg} (\r\n` + - ` ${longProg} ${args} ${target} ${progArgs}%*\r\n` + - ') ELSE (\r\n' + - ' @SETLOCAL\r\n' + - ' @SET PATHEXT=%PATHEXT:;.JS;=;%\r\n' + - ` ${prog} ${args} ${target} ${progArgs}%*\r\n` + - ')'; - } - else { - cmd += `@${prog} ${args} ${target} ${progArgs}%*\r\n`; - } - return cmd; -} -/** - * Generate the content of a shim for (Ba)sh in, for example, Cygwin and MSYS(2). - * - * @param src Path to the executable or script. - * @param to Path to the shim to be created. - * It is highly recommended to end with `.sh` or to contain no extension. - * @param opts Options. - * @return The content of shim. - */ -function generateShShim(src, to, opts) { - let shTarget = path.relative(path.dirname(to), src); - let shProg = opts.prog && opts.prog.split('\\').join('/'); - let shLongProg; - shTarget = shTarget.split('\\').join('/'); - const quotedPathToTarget = path.isAbsolute(shTarget) ? `"${shTarget}"` : `"$basedir/${shTarget}"`; - let args = opts.args || ''; - const shNodePath = normalizePathEnvVar(opts.nodePath).posix; - if (!shProg) { - shProg = quotedPathToTarget; - args = ''; - shTarget = ''; - } - else { - shLongProg = `"$basedir/${opts.prog}"`; - shTarget = quotedPathToTarget; - } - let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : ''; - // #!/bin/sh - // basedir=`dirname "$0"` - // - // case `uname` in - // *CYGWIN*) basedir=`cygpath -w "$basedir"`;; - // esac - // - // export NODE_PATH="" - // - // if [ -x "$basedir/node.exe" ]; then - // exec "$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@" - // else - // exec node "$basedir/node_modules/npm/bin/npm-cli.js" "$@" - // fi - let sh = '#!/bin/sh\n'; - sh = sh + - "basedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\,/,g')\")\n" + - '\n' + - 'case `uname` in\n' + - ' *CYGWIN*) basedir=`cygpath -w "$basedir"`;;\n' + - 'esac\n' + - '\n'; - const env = opts.nodePath ? `export NODE_PATH="${shNodePath}"\n` : ''; - if (shLongProg) { - sh += env + - `if [ -x ${shLongProg} ]; then\n` + - ` exec ${shLongProg} ${args} ${shTarget} ${progArgs}"$@"\n` + - 'else \n' + - ` exec ${shProg} ${args} ${shTarget} ${progArgs}"$@"\n` + - 'fi\n'; - } - else { - sh += `${env}${shProg} ${args} ${shTarget} ${progArgs}"$@"\n` + - 'exit $?\n'; - } - return sh; -} -/** - * Generate the content of a shim for PowerShell. - * - * @param src Path to the executable or script. - * @param to Path to the shim to be created. - * It is highly recommended to end with `.ps1`. - * @param opts Options. - * @return The content of shim. - */ -function generatePwshShim(src, to, opts) { - let shTarget = path.relative(path.dirname(to), src); - const shProg = opts.prog && opts.prog.split('\\').join('/'); - let pwshProg = shProg && `"${shProg}$exe"`; - let pwshLongProg; - shTarget = shTarget.split('\\').join('/'); - const quotedPathToTarget = path.isAbsolute(shTarget) ? `"${shTarget}"` : `"$basedir/${shTarget}"`; - let args = opts.args || ''; - let normalizedPathEnvVar = normalizePathEnvVar(opts.nodePath); - const nodePath = normalizedPathEnvVar.win32; - const shNodePath = normalizedPathEnvVar.posix; - if (!pwshProg) { - pwshProg = quotedPathToTarget; - args = ''; - shTarget = ''; - } - else { - pwshLongProg = `"$basedir/${opts.prog}$exe"`; - shTarget = quotedPathToTarget; - } - let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : ''; - // #!/usr/bin/env pwsh - // $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - // - // $ret=0 - // $exe = "" - // if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - // # Fix case when both the Windows and Linux builds of Node - // # are installed in the same directory - // $exe = ".exe" - // } - // if (Test-Path "$basedir/node") { - // # Support pipeline input - // if ($MyInvocation.ExpectingInput) { - // $input | & "$basedir/node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args - // } else { - // & "$basedir/node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args - // } - // $ret=$LASTEXITCODE - // } else { - // # Support pipeline input - // if ($MyInvocation.ExpectingInput) { - // $input | & "node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args - // } else { - // & "node$exe" "$basedir/node_modules/npm/bin/npm-cli.js" $args - // } - // $ret=$LASTEXITCODE - // } - // exit $ret - let pwsh = '#!/usr/bin/env pwsh\n' + - '$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n' + - '\n' + - '$exe=""\n' + - (opts.nodePath ? '$env_node_path=$env:NODE_PATH\n' + - `$env:NODE_PATH="${nodePath}"\n` : '') + - 'if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {\n' + - ' # Fix case when both the Windows and Linux builds of Node\n' + - ' # are installed in the same directory\n' + - ' $exe=".exe"\n' + - '}'; - if (opts.nodePath) { - pwsh = pwsh + - ' else {\n' + - ` $env:NODE_PATH="${shNodePath}"\n` + - '}'; - } - pwsh += '\n'; - if (pwshLongProg) { - pwsh = pwsh + - '$ret=0\n' + - `if (Test-Path ${pwshLongProg}) {\n` + - ' # Support pipeline input\n' + - ' if ($MyInvocation.ExpectingInput) {\n' + - ` $input | & ${pwshLongProg} ${args} ${shTarget} ${progArgs}$args\n` + - ' } else {\n' + - ` & ${pwshLongProg} ${args} ${shTarget} ${progArgs}$args\n` + - ' }\n' + - ' $ret=$LASTEXITCODE\n' + - '} else {\n' + - ' # Support pipeline input\n' + - ' if ($MyInvocation.ExpectingInput) {\n' + - ` $input | & ${pwshProg} ${args} ${shTarget} ${progArgs}$args\n` + - ' } else {\n' + - ` & ${pwshProg} ${args} ${shTarget} ${progArgs}$args\n` + - ' }\n' + - ' $ret=$LASTEXITCODE\n' + - '}\n' + - (opts.nodePath ? '$env:NODE_PATH=$env_node_path\n' : '') + - 'exit $ret\n'; - } - else { - pwsh = pwsh + - '# Support pipeline input\n' + - 'if ($MyInvocation.ExpectingInput) {\n' + - ` $input | & ${pwshProg} ${args} ${shTarget} ${progArgs}$args\n` + - '} else {\n' + - ` & ${pwshProg} ${args} ${shTarget} ${progArgs}$args\n` + - '}\n' + - (opts.nodePath ? '$env:NODE_PATH=$env_node_path\n' : '') + - 'exit $LASTEXITCODE\n'; - } - return pwsh; -} -/** - * Chmod just created shim and make it executable - * - * @param to Path to shim. - */ -function chmodShim(to, opts) { - return opts.fs_.chmod(to, 0o755); -} -function normalizePathEnvVar(nodePath) { - if (!nodePath) { - return { - win32: '', - posix: '' - }; - } - let split = (typeof nodePath === 'string' ? nodePath.split(path.delimiter) : Array.from(nodePath)); - let result = {}; - for (let i = 0; i < split.length; i++) { - const win32 = split[i].split('/').join('\\'); - const posix = isWindows() ? split[i].split('\\').join('/').replace(/^([^:\\/]*):/, (_, $1) => `/mnt/${$1.toLowerCase()}`) : split[i]; - result.win32 = result.win32 ? `${result.win32};${win32}` : win32; - result.posix = result.posix ? `${result.posix}:${posix}` : posix; - result[i] = { win32, posix }; - } - return result; -} -module.exports = cmdShim; -//# sourceMappingURL=index.js.map +module.exports = clean + /***/ }), -/***/ "./.yarn/cache/chownr-npm-1.1.4-5bd400ab08-115648f8eb.zip/node_modules/chownr/chownr.js": -/*!**********************************************************************************************!*\ - !*** ./.yarn/cache/chownr-npm-1.1.4-5bd400ab08-115648f8eb.zip/node_modules/chownr/chownr.js ***! - \**********************************************************************************************/ +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/cmp.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/cmp.js ***! + \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -"use strict"; +const eq = __webpack_require__(/*! ./eq */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/eq.js") +const neq = __webpack_require__(/*! ./neq */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/neq.js") +const gt = __webpack_require__(/*! ./gt */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/gt.js") +const gte = __webpack_require__(/*! ./gte */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/gte.js") +const lt = __webpack_require__(/*! ./lt */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/lt.js") +const lte = __webpack_require__(/*! ./lte */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/lte.js") -const fs = __webpack_require__(/*! fs */ "fs") -const path = __webpack_require__(/*! path */ "path") +const cmp = (a, op, b, loose) => { + switch (op) { + case '===': + if (typeof a === 'object') { + a = a.version + } + if (typeof b === 'object') { + b = b.version + } + return a === b -/* istanbul ignore next */ -const LCHOWN = fs.lchown ? 'lchown' : 'chown' -/* istanbul ignore next */ -const LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync' + case '!==': + if (typeof a === 'object') { + a = a.version + } + if (typeof b === 'object') { + b = b.version + } + return a !== b -/* istanbul ignore next */ -const needEISDIRHandled = fs.lchown && - !process.version.match(/v1[1-9]+\./) && - !process.version.match(/v10\.[6-9]/) + case '': + case '=': + case '==': + return eq(a, b, loose) -const lchownSync = (path, uid, gid) => { - try { - return fs[LCHOWNSYNC](path, uid, gid) - } catch (er) { - if (er.code !== 'ENOENT') - throw er - } -} + case '!=': + return neq(a, b, loose) -/* istanbul ignore next */ -const chownSync = (path, uid, gid) => { - try { - return fs.chownSync(path, uid, gid) - } catch (er) { - if (er.code !== 'ENOENT') - throw er + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError(`Invalid operator: ${op}`) } } +module.exports = cmp -/* istanbul ignore next */ -const handleEISDIR = - needEISDIRHandled ? (path, uid, gid, cb) => er => { - // Node prior to v10 had a very questionable implementation of - // fs.lchown, which would always try to call fs.open on a directory - // Fall back to fs.chown in those cases. - if (!er || er.code !== 'EISDIR') - cb(er) - else - fs.chown(path, uid, gid, cb) - } - : (_, __, ___, cb) => cb -/* istanbul ignore next */ -const handleEISDirSync = - needEISDIRHandled ? (path, uid, gid) => { - try { - return lchownSync(path, uid, gid) - } catch (er) { - if (er.code !== 'EISDIR') - throw er - chownSync(path, uid, gid) - } - } - : (path, uid, gid) => lchownSync(path, uid, gid) +/***/ }), -// fs.readdir could only accept an options object as of node v6 -const nodeVersion = process.version -let readdir = (path, options, cb) => fs.readdir(path, options, cb) -let readdirSync = (path, options) => fs.readdirSync(path, options) -/* istanbul ignore next */ -if (/^v4\./.test(nodeVersion)) - readdir = (path, options, cb) => fs.readdir(path, cb) +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/coerce.js": +/*!************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/coerce.js ***! + \************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const chown = (cpath, uid, gid, cb) => { - fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => { - // Skip ENOENT error - cb(er && er.code !== 'ENOENT' ? er : null) - })) -} +const SemVer = __webpack_require__(/*! ../classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") +const parse = __webpack_require__(/*! ./parse */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/parse.js") +const { re, t } = __webpack_require__(/*! ../internal/re */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/re.js") -const chownrKid = (p, child, uid, gid, cb) => { - if (typeof child === 'string') - return fs.lstat(path.resolve(p, child), (er, stats) => { - // Skip ENOENT error - if (er) - return cb(er.code !== 'ENOENT' ? er : null) - stats.name = child - chownrKid(p, stats, uid, gid, cb) - }) +const coerce = (version, options) => { + if (version instanceof SemVer) { + return version + } - if (child.isDirectory()) { - chownr(path.resolve(p, child.name), uid, gid, er => { - if (er) - return cb(er) - const cpath = path.resolve(p, child.name) - chown(cpath, uid, gid, cb) - }) - } else { - const cpath = path.resolve(p, child.name) - chown(cpath, uid, gid, cb) + if (typeof version === 'number') { + version = String(version) } -} + if (typeof version !== 'string') { + return null + } -const chownr = (p, uid, gid, cb) => { - readdir(p, { withFileTypes: true }, (er, children) => { - // any error other than ENOTDIR or ENOTSUP means it's not readable, - // or doesn't exist. give up. - if (er) { - if (er.code === 'ENOENT') - return cb() - else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP') - return cb(er) - } - if (er || !children.length) - return chown(p, uid, gid, cb) + options = options || {} - let len = children.length - let errState = null - const then = er => { - if (errState) - return - if (er) - return cb(errState = er) - if (-- len === 0) - return chown(p, uid, gid, cb) + let match = null + if (!options.rtl) { + match = version.match(re[t.COERCE]) + } else { + // Find the right-most coercible string that does not share + // a terminus with a more left-ward coercible string. + // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' + // + // Walk through the string checking with a /g regexp + // Manually set the index so as to pick up overlapping matches. + // Stop when we get a match that ends at the string end, since no + // coercible string can be more right-ward without the same terminus. + let next + while ((next = re[t.COERCERTL].exec(version)) && + (!match || match.index + match[0].length !== version.length) + ) { + if (!match || + next.index + next[0].length !== match.index + match[0].length) { + match = next + } + re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length } + // leave it in a clean state + re[t.COERCERTL].lastIndex = -1 + } - children.forEach(child => chownrKid(p, child, uid, gid, then)) - }) + if (match === null) { + return null + } + + return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options) } +module.exports = coerce -const chownrKidSync = (p, child, uid, gid) => { - if (typeof child === 'string') { - try { - const stats = fs.lstatSync(path.resolve(p, child)) - stats.name = child - child = stats - } catch (er) { - if (er.code === 'ENOENT') - return - else - throw er - } - } - if (child.isDirectory()) - chownrSync(path.resolve(p, child.name), uid, gid) +/***/ }), - handleEISDirSync(path.resolve(p, child.name), uid, gid) +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare-build.js": +/*!*******************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare-build.js ***! + \*******************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const SemVer = __webpack_require__(/*! ../classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") +const compareBuild = (a, b, loose) => { + const versionA = new SemVer(a, loose) + const versionB = new SemVer(b, loose) + return versionA.compare(versionB) || versionA.compareBuild(versionB) } +module.exports = compareBuild -const chownrSync = (p, uid, gid) => { - let children - try { - children = readdirSync(p, { withFileTypes: true }) - } catch (er) { - if (er.code === 'ENOENT') - return - else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP') - return handleEISDirSync(p, uid, gid) - else - throw er - } - if (children && children.length) - children.forEach(child => chownrKidSync(p, child, uid, gid)) +/***/ }), - return handleEISDirSync(p, uid, gid) -} +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare-loose.js": +/*!*******************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare-loose.js ***! + \*******************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -module.exports = chownr -chownr.sync = chownrSync +const compare = __webpack_require__(/*! ./compare */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js") +const compareLoose = (a, b) => compare(a, b, true) +module.exports = compareLoose /***/ }), -/***/ "./.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip/node_modules/fs-minipass/index.js": -/*!*******************************************************************************************************!*\ - !*** ./.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip/node_modules/fs-minipass/index.js ***! - \*******************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js": +/*!*************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js ***! + \*************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -"use strict"; +const SemVer = __webpack_require__(/*! ../classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") +const compare = (a, b, loose) => + new SemVer(a, loose).compare(new SemVer(b, loose)) -const MiniPass = __webpack_require__(/*! minipass */ "./.yarn/cache/minipass-npm-3.1.1-b51d7e264d-cfcfd86adc.zip/node_modules/minipass/index.js") -const EE = __webpack_require__(/*! events */ "events").EventEmitter -const fs = __webpack_require__(/*! fs */ "fs") +module.exports = compare -let writev = fs.writev -/* istanbul ignore next */ -if (!writev) { - // This entire block can be removed if support for earlier than Node.js - // 12.9.0 is not needed. - const binding = process.binding('fs') - const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback - writev = (fd, iovec, pos, cb) => { - const done = (er, bw) => cb(er, bw, iovec) - const req = new FSReqWrap() - req.oncomplete = done - binding.writeBuffers(fd, iovec, pos, req) +/***/ }), + +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/diff.js": +/*!**********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/diff.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const parse = __webpack_require__(/*! ./parse */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/parse.js") +const eq = __webpack_require__(/*! ./eq */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/eq.js") + +const diff = (version1, version2) => { + if (eq(version1, version2)) { + return null + } else { + const v1 = parse(version1) + const v2 = parse(version2) + const hasPre = v1.prerelease.length || v2.prerelease.length + const prefix = hasPre ? 'pre' : '' + const defaultResult = hasPre ? 'prerelease' : '' + for (const key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined } } +module.exports = diff -const _autoClose = Symbol('_autoClose') -const _close = Symbol('_close') -const _ended = Symbol('_ended') -const _fd = Symbol('_fd') -const _finished = Symbol('_finished') -const _flags = Symbol('_flags') -const _flush = Symbol('_flush') -const _handleChunk = Symbol('_handleChunk') -const _makeBuf = Symbol('_makeBuf') -const _mode = Symbol('_mode') -const _needDrain = Symbol('_needDrain') -const _onerror = Symbol('_onerror') -const _onopen = Symbol('_onopen') -const _onread = Symbol('_onread') -const _onwrite = Symbol('_onwrite') -const _open = Symbol('_open') -const _path = Symbol('_path') -const _pos = Symbol('_pos') -const _queue = Symbol('_queue') -const _read = Symbol('_read') -const _readSize = Symbol('_readSize') -const _reading = Symbol('_reading') -const _remain = Symbol('_remain') -const _size = Symbol('_size') -const _write = Symbol('_write') -const _writing = Symbol('_writing') -const _defaultFlag = Symbol('_defaultFlag') -const _errored = Symbol('_errored') -class ReadStream extends MiniPass { - constructor (path, opt) { - opt = opt || {} - super(opt) +/***/ }), - this.readable = true - this.writable = false +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/eq.js": +/*!********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/eq.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - if (typeof path !== 'string') - throw new TypeError('path must be a string') +const compare = __webpack_require__(/*! ./compare */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js") +const eq = (a, b, loose) => compare(a, b, loose) === 0 +module.exports = eq - this[_errored] = false - this[_fd] = typeof opt.fd === 'number' ? opt.fd : null - this[_path] = path - this[_readSize] = opt.readSize || 16*1024*1024 - this[_reading] = false - this[_size] = typeof opt.size === 'number' ? opt.size : Infinity - this[_remain] = this[_size] - this[_autoClose] = typeof opt.autoClose === 'boolean' ? - opt.autoClose : true - if (typeof this[_fd] === 'number') - this[_read]() - else - this[_open]() - } +/***/ }), - get fd () { return this[_fd] } - get path () { return this[_path] } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/gt.js": +/*!********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/gt.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - write () { - throw new TypeError('this is a readable stream') - } +const compare = __webpack_require__(/*! ./compare */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js") +const gt = (a, b, loose) => compare(a, b, loose) > 0 +module.exports = gt - end () { - throw new TypeError('this is a readable stream') - } - [_open] () { - fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd)) - } +/***/ }), - [_onopen] (er, fd) { - if (er) - this[_onerror](er) - else { - this[_fd] = fd - this.emit('open', fd) - this[_read]() - } - } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/gte.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/gte.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - [_makeBuf] () { - return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain])) - } +const compare = __webpack_require__(/*! ./compare */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js") +const gte = (a, b, loose) => compare(a, b, loose) >= 0 +module.exports = gte - [_read] () { - if (!this[_reading]) { - this[_reading] = true - const buf = this[_makeBuf]() - /* istanbul ignore if */ - if (buf.length === 0) - return process.nextTick(() => this[_onread](null, 0, buf)) - fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) => - this[_onread](er, br, buf)) - } - } - [_onread] (er, br, buf) { - this[_reading] = false - if (er) - this[_onerror](er) - else if (this[_handleChunk](br, buf)) - this[_read]() - } +/***/ }), - [_close] () { - if (this[_autoClose] && typeof this[_fd] === 'number') { - const fd = this[_fd] - this[_fd] = null - fs.close(fd, er => er ? this.emit('error', er) : this.emit('close')) - } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/inc.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/inc.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const SemVer = __webpack_require__(/*! ../classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") + +const inc = (version, release, options, identifier) => { + if (typeof (options) === 'string') { + identifier = options + options = undefined } - [_onerror] (er) { - this[_reading] = true - this[_close]() - this.emit('error', er) + try { + return new SemVer( + version instanceof SemVer ? version.version : version, + options + ).inc(release, identifier).version + } catch (er) { + return null } +} +module.exports = inc - [_handleChunk] (br, buf) { - let ret = false - // no effect if infinite - this[_remain] -= br - if (br > 0) - ret = super.write(br < buf.length ? buf.slice(0, br) : buf) - if (br === 0 || this[_remain] <= 0) { - ret = false - this[_close]() - super.end() - } +/***/ }), - return ret - } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/lt.js": +/*!********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/lt.js ***! + \********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - emit (ev, data) { - switch (ev) { - case 'prefinish': - case 'finish': - break +const compare = __webpack_require__(/*! ./compare */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js") +const lt = (a, b, loose) => compare(a, b, loose) < 0 +module.exports = lt - case 'drain': - if (typeof this[_fd] === 'number') - this[_read]() - break - case 'error': - if (this[_errored]) - return - this[_errored] = true - return super.emit(ev, data) +/***/ }), - default: - return super.emit(ev, data) - } - } -} +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/lte.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/lte.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -class ReadStreamSync extends ReadStream { - [_open] () { - let threw = true - try { - this[_onopen](null, fs.openSync(this[_path], 'r')) - threw = false - } finally { - if (threw) - this[_close]() - } - } +const compare = __webpack_require__(/*! ./compare */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js") +const lte = (a, b, loose) => compare(a, b, loose) <= 0 +module.exports = lte - [_read] () { - let threw = true - try { - if (!this[_reading]) { - this[_reading] = true - do { - const buf = this[_makeBuf]() - /* istanbul ignore next */ - const br = buf.length === 0 ? 0 - : fs.readSync(this[_fd], buf, 0, buf.length, null) - if (!this[_handleChunk](br, buf)) - break - } while (true) - this[_reading] = false - } - threw = false - } finally { - if (threw) - this[_close]() - } - } - [_close] () { - if (this[_autoClose] && typeof this[_fd] === 'number') { - const fd = this[_fd] - this[_fd] = null - fs.closeSync(fd) - this.emit('close') - } - } -} +/***/ }), -class WriteStream extends EE { - constructor (path, opt) { - opt = opt || {} - super(opt) - this.readable = false - this.writable = true - this[_errored] = false - this[_writing] = false - this[_ended] = false - this[_needDrain] = false - this[_queue] = [] - this[_path] = path - this[_fd] = typeof opt.fd === 'number' ? opt.fd : null - this[_mode] = opt.mode === undefined ? 0o666 : opt.mode - this[_pos] = typeof opt.start === 'number' ? opt.start : null - this[_autoClose] = typeof opt.autoClose === 'boolean' ? - opt.autoClose : true +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/major.js": +/*!***********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/major.js ***! + \***********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - // truncating makes no sense when writing into the middle - const defaultFlag = this[_pos] !== null ? 'r+' : 'w' - this[_defaultFlag] = opt.flags === undefined - this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags +const SemVer = __webpack_require__(/*! ../classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") +const major = (a, loose) => new SemVer(a, loose).major +module.exports = major - if (this[_fd] === null) - this[_open]() - } - emit (ev, data) { - if (ev === 'error') { - if (this[_errored]) - return - this[_errored] = true - } - return super.emit(ev, data) - } +/***/ }), +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/minor.js": +/*!***********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/minor.js ***! + \***********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - get fd () { return this[_fd] } - get path () { return this[_path] } +const SemVer = __webpack_require__(/*! ../classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") +const minor = (a, loose) => new SemVer(a, loose).minor +module.exports = minor - [_onerror] (er) { - this[_close]() - this[_writing] = true - this.emit('error', er) - } - [_open] () { - fs.open(this[_path], this[_flags], this[_mode], - (er, fd) => this[_onopen](er, fd)) - } +/***/ }), - [_onopen] (er, fd) { - if (this[_defaultFlag] && - this[_flags] === 'r+' && - er && er.code === 'ENOENT') { - this[_flags] = 'w' - this[_open]() - } else if (er) - this[_onerror](er) - else { - this[_fd] = fd - this.emit('open', fd) - this[_flush]() - } - } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/neq.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/neq.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - end (buf, enc) { - if (buf) - this.write(buf, enc) +const compare = __webpack_require__(/*! ./compare */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js") +const neq = (a, b, loose) => compare(a, b, loose) !== 0 +module.exports = neq - this[_ended] = true - // synthetic after-write logic, where drain/finish live - if (!this[_writing] && !this[_queue].length && - typeof this[_fd] === 'number') - this[_onwrite](null, 0) - return this - } +/***/ }), - write (buf, enc) { - if (typeof buf === 'string') - buf = Buffer.from(buf, enc) +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/parse.js": +/*!***********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/parse.js ***! + \***********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - if (this[_ended]) { - this.emit('error', new Error('write() after end()')) - return false - } +const { MAX_LENGTH } = __webpack_require__(/*! ../internal/constants */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/constants.js") +const { re, t } = __webpack_require__(/*! ../internal/re */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/re.js") +const SemVer = __webpack_require__(/*! ../classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") - if (this[_fd] === null || this[_writing] || this[_queue].length) { - this[_queue].push(buf) - this[_needDrain] = true - return false - } +const parseOptions = __webpack_require__(/*! ../internal/parse-options */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/parse-options.js") +const parse = (version, options) => { + options = parseOptions(options) - this[_writing] = true - this[_write](buf) - return true + if (version instanceof SemVer) { + return version } - [_write] (buf) { - fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) => - this[_onwrite](er, bw)) + if (typeof version !== 'string') { + return null } - [_onwrite] (er, bw) { - if (er) - this[_onerror](er) - else { - if (this[_pos] !== null) - this[_pos] += bw - if (this[_queue].length) - this[_flush]() - else { - this[_writing] = false - - if (this[_ended] && !this[_finished]) { - this[_finished] = true - this[_close]() - this.emit('finish') - } else if (this[_needDrain]) { - this[_needDrain] = false - this.emit('drain') - } - } - } + if (version.length > MAX_LENGTH) { + return null } - [_flush] () { - if (this[_queue].length === 0) { - if (this[_ended]) - this[_onwrite](null, 0) - } else if (this[_queue].length === 1) - this[_write](this[_queue].pop()) - else { - const iovec = this[_queue] - this[_queue] = [] - writev(this[_fd], iovec, this[_pos], - (er, bw) => this[_onwrite](er, bw)) - } + const r = options.loose ? re[t.LOOSE] : re[t.FULL] + if (!r.test(version)) { + return null } - [_close] () { - if (this[_autoClose] && typeof this[_fd] === 'number') { - const fd = this[_fd] - this[_fd] = null - fs.close(fd, er => er ? this.emit('error', er) : this.emit('close')) - } + try { + return new SemVer(version, options) + } catch (er) { + return null } } -class WriteStreamSync extends WriteStream { - [_open] () { - let fd - // only wrap in a try{} block if we know we'll retry, to avoid - // the rethrow obscuring the error's source frame in most cases. - if (this[_defaultFlag] && this[_flags] === 'r+') { - try { - fd = fs.openSync(this[_path], this[_flags], this[_mode]) - } catch (er) { - if (er.code === 'ENOENT') { - this[_flags] = 'w' - return this[_open]() - } else - throw er - } - } else - fd = fs.openSync(this[_path], this[_flags], this[_mode]) - - this[_onopen](null, fd) - } +module.exports = parse - [_close] () { - if (this[_autoClose] && typeof this[_fd] === 'number') { - const fd = this[_fd] - this[_fd] = null - fs.closeSync(fd) - this.emit('close') - } - } - [_write] (buf) { - // throw the original, but try to close if it fails - let threw = true - try { - this[_onwrite](null, - fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos])) - threw = false - } finally { - if (threw) - try { this[_close]() } catch (_) {} - } - } -} +/***/ }), -exports.ReadStream = ReadStream -exports.ReadStreamSync = ReadStreamSync +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/patch.js": +/*!***********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/patch.js ***! + \***********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -exports.WriteStream = WriteStream -exports.WriteStreamSync = WriteStreamSync +const SemVer = __webpack_require__(/*! ../classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") +const patch = (a, loose) => new SemVer(a, loose).patch +module.exports = patch /***/ }), -/***/ "./.yarn/cache/has-flag-npm-4.0.0-32af9f0536-261a135703.zip/node_modules/has-flag/index.js": -/*!*************************************************************************************************!*\ - !*** ./.yarn/cache/has-flag-npm-4.0.0-32af9f0536-261a135703.zip/node_modules/has-flag/index.js ***! - \*************************************************************************************************/ -/***/ ((module) => { +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/prerelease.js": +/*!****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/prerelease.js ***! + \****************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -"use strict"; +const parse = __webpack_require__(/*! ./parse */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/parse.js") +const prerelease = (version, options) => { + const parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} +module.exports = prerelease -module.exports = (flag, argv = process.argv) => { - const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); - const position = argv.indexOf(prefix + flag); - const terminatorPosition = argv.indexOf('--'); - return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); -}; +/***/ }), +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/rcompare.js": +/*!**************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/rcompare.js ***! + \**************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/***/ }), +const compare = __webpack_require__(/*! ./compare */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js") +const rcompare = (a, b, loose) => compare(b, a, loose) +module.exports = rcompare -/***/ "./.yarn/cache/is-windows-npm-1.0.2-898cd6f3d7-438b7e5265.zip/node_modules/is-windows/index.js": -/*!*****************************************************************************************************!*\ - !*** ./.yarn/cache/is-windows-npm-1.0.2-898cd6f3d7-438b7e5265.zip/node_modules/is-windows/index.js ***! - \*****************************************************************************************************/ -/***/ ((module, exports) => { -var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - * is-windows - * - * Copyright © 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ +/***/ }), -(function(factory) { - if (exports && typeof exports === 'object' && "object" !== 'undefined') { - module.exports = factory(); - } else if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), - __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? - (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else {} -})(function() { - 'use strict'; - return function isWindows() { - return process && (process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE)); - }; -}); +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/rsort.js": +/*!***********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/rsort.js ***! + \***********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const compareBuild = __webpack_require__(/*! ./compare-build */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare-build.js") +const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)) +module.exports = rsort /***/ }), -/***/ "./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/index.js": -/*!*******************************************************************************************!*\ - !*** ./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/index.js ***! - \*******************************************************************************************/ +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/satisfies.js": +/*!***************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/satisfies.js ***! + \***************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -var fs = __webpack_require__(/*! fs */ "fs") -var core -if (process.platform === 'win32' || global.TESTING_WINDOWS) { - core = __webpack_require__(/*! ./windows.js */ "./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/windows.js") -} else { - core = __webpack_require__(/*! ./mode.js */ "./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/mode.js") +const Range = __webpack_require__(/*! ../classes/range */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js") +const satisfies = (version, range, options) => { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) } +module.exports = satisfies -module.exports = isexe -isexe.sync = sync -function isexe (path, options, cb) { - if (typeof options === 'function') { - cb = options - options = {} - } +/***/ }), - if (!cb) { - if (typeof Promise !== 'function') { - throw new TypeError('callback not provided') - } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/sort.js": +/*!**********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/sort.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return new Promise(function (resolve, reject) { - isexe(path, options || {}, function (er, is) { - if (er) { - reject(er) - } else { - resolve(is) - } - }) - }) - } +const compareBuild = __webpack_require__(/*! ./compare-build */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare-build.js") +const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)) +module.exports = sort - core(path, options || {}, function (er, is) { - // ignore EACCES because that just means we aren't allowed to run it - if (er) { - if (er.code === 'EACCES' || options && options.ignoreErrors) { - er = null - is = false - } - } - cb(er, is) - }) -} -function sync (path, options) { - // my kingdom for a filtered catch - try { - return core.sync(path, options || {}) - } catch (er) { - if (options && options.ignoreErrors || er.code === 'EACCES') { - return false - } else { - throw er - } - } +/***/ }), + +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/valid.js": +/*!***********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/valid.js ***! + \***********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const parse = __webpack_require__(/*! ./parse */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/parse.js") +const valid = (version, options) => { + const v = parse(version, options) + return v ? v.version : null } +module.exports = valid /***/ }), -/***/ "./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/mode.js": -/*!******************************************************************************************!*\ - !*** ./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/mode.js ***! - \******************************************************************************************/ +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/index.js": +/*!*************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/index.js ***! + \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -module.exports = isexe -isexe.sync = sync - -var fs = __webpack_require__(/*! fs */ "fs") - -function isexe (path, options, cb) { - fs.stat(path, function (er, stat) { - cb(er, er ? false : checkStat(stat, options)) - }) +// just pre-load all the stuff that index.js lazily exports +const internalRe = __webpack_require__(/*! ./internal/re */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/re.js") +module.exports = { + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: (__webpack_require__(/*! ./internal/constants */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/constants.js").SEMVER_SPEC_VERSION), + SemVer: __webpack_require__(/*! ./classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js"), + compareIdentifiers: (__webpack_require__(/*! ./internal/identifiers */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/identifiers.js").compareIdentifiers), + rcompareIdentifiers: (__webpack_require__(/*! ./internal/identifiers */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/identifiers.js").rcompareIdentifiers), + parse: __webpack_require__(/*! ./functions/parse */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/parse.js"), + valid: __webpack_require__(/*! ./functions/valid */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/valid.js"), + clean: __webpack_require__(/*! ./functions/clean */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/clean.js"), + inc: __webpack_require__(/*! ./functions/inc */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/inc.js"), + diff: __webpack_require__(/*! ./functions/diff */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/diff.js"), + major: __webpack_require__(/*! ./functions/major */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/major.js"), + minor: __webpack_require__(/*! ./functions/minor */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/minor.js"), + patch: __webpack_require__(/*! ./functions/patch */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/patch.js"), + prerelease: __webpack_require__(/*! ./functions/prerelease */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/prerelease.js"), + compare: __webpack_require__(/*! ./functions/compare */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js"), + rcompare: __webpack_require__(/*! ./functions/rcompare */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/rcompare.js"), + compareLoose: __webpack_require__(/*! ./functions/compare-loose */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare-loose.js"), + compareBuild: __webpack_require__(/*! ./functions/compare-build */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare-build.js"), + sort: __webpack_require__(/*! ./functions/sort */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/sort.js"), + rsort: __webpack_require__(/*! ./functions/rsort */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/rsort.js"), + gt: __webpack_require__(/*! ./functions/gt */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/gt.js"), + lt: __webpack_require__(/*! ./functions/lt */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/lt.js"), + eq: __webpack_require__(/*! ./functions/eq */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/eq.js"), + neq: __webpack_require__(/*! ./functions/neq */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/neq.js"), + gte: __webpack_require__(/*! ./functions/gte */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/gte.js"), + lte: __webpack_require__(/*! ./functions/lte */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/lte.js"), + cmp: __webpack_require__(/*! ./functions/cmp */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/cmp.js"), + coerce: __webpack_require__(/*! ./functions/coerce */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/coerce.js"), + Comparator: __webpack_require__(/*! ./classes/comparator */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/comparator.js"), + Range: __webpack_require__(/*! ./classes/range */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js"), + satisfies: __webpack_require__(/*! ./functions/satisfies */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/satisfies.js"), + toComparators: __webpack_require__(/*! ./ranges/to-comparators */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/to-comparators.js"), + maxSatisfying: __webpack_require__(/*! ./ranges/max-satisfying */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/max-satisfying.js"), + minSatisfying: __webpack_require__(/*! ./ranges/min-satisfying */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/min-satisfying.js"), + minVersion: __webpack_require__(/*! ./ranges/min-version */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/min-version.js"), + validRange: __webpack_require__(/*! ./ranges/valid */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/valid.js"), + outside: __webpack_require__(/*! ./ranges/outside */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/outside.js"), + gtr: __webpack_require__(/*! ./ranges/gtr */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/gtr.js"), + ltr: __webpack_require__(/*! ./ranges/ltr */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/ltr.js"), + intersects: __webpack_require__(/*! ./ranges/intersects */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/intersects.js"), + simplifyRange: __webpack_require__(/*! ./ranges/simplify */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/simplify.js"), + subset: __webpack_require__(/*! ./ranges/subset */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/subset.js"), } -function sync (path, options) { - return checkStat(fs.statSync(path), options) -} -function checkStat (stat, options) { - return stat.isFile() && checkMode(stat, options) -} +/***/ }), -function checkMode (stat, options) { - var mod = stat.mode - var uid = stat.uid - var gid = stat.gid +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/constants.js": +/*!**************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/constants.js ***! + \**************************************************************************************************************/ +/***/ ((module) => { - var myUid = options.uid !== undefined ? - options.uid : process.getuid && process.getuid() - var myGid = options.gid !== undefined ? - options.gid : process.getgid && process.getgid() +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +const SEMVER_SPEC_VERSION = '2.0.0' - var u = parseInt('100', 8) - var g = parseInt('010', 8) - var o = parseInt('001', 8) - var ug = u | g +const MAX_LENGTH = 256 +const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || +/* istanbul ignore next */ 9007199254740991 - var ret = (mod & o) || - (mod & g) && gid === myGid || - (mod & u) && uid === myUid || - (mod & ug) && myUid === 0 +// Max safe segment length for coercion. +const MAX_SAFE_COMPONENT_LENGTH = 16 - return ret +module.exports = { + SEMVER_SPEC_VERSION, + MAX_LENGTH, + MAX_SAFE_INTEGER, + MAX_SAFE_COMPONENT_LENGTH, } /***/ }), -/***/ "./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/windows.js": -/*!*********************************************************************************************!*\ - !*** ./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/windows.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/debug.js": +/*!**********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/debug.js ***! + \**********************************************************************************************************/ +/***/ ((module) => { -module.exports = isexe -isexe.sync = sync +const debug = ( + typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG) +) ? (...args) => console.error('SEMVER', ...args) + : () => {} -var fs = __webpack_require__(/*! fs */ "fs") +module.exports = debug -function checkPathExt (path, options) { - var pathext = options.pathExt !== undefined ? - options.pathExt : process.env.PATHEXT - if (!pathext) { - return true - } +/***/ }), - pathext = pathext.split(';') - if (pathext.indexOf('') !== -1) { - return true - } - for (var i = 0; i < pathext.length; i++) { - var p = pathext[i].toLowerCase() - if (p && path.substr(-p.length).toLowerCase() === p) { - return true - } - } - return false -} +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/identifiers.js": +/*!****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/identifiers.js ***! + \****************************************************************************************************************/ +/***/ ((module) => { -function checkStat (stat, path, options) { - if (!stat.isSymbolicLink() && !stat.isFile()) { - return false +const numeric = /^[0-9]+$/ +const compareIdentifiers = (a, b) => { + const anum = numeric.test(a) + const bnum = numeric.test(b) + + if (anum && bnum) { + a = +a + b = +b } - return checkPathExt(path, options) -} -function isexe (path, options, cb) { - fs.stat(path, function (er, stat) { - cb(er, er ? false : checkStat(stat, path, options)) - }) + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 } -function sync (path, options) { - return checkStat(fs.statSync(path), path, options) +const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) + +module.exports = { + compareIdentifiers, + rcompareIdentifiers, } /***/ }), -/***/ "./.yarn/cache/minipass-npm-3.1.1-b51d7e264d-cfcfd86adc.zip/node_modules/minipass/index.js": -/*!*************************************************************************************************!*\ - !*** ./.yarn/cache/minipass-npm-3.1.1-b51d7e264d-cfcfd86adc.zip/node_modules/minipass/index.js ***! - \*************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/parse-options.js": +/*!******************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/parse-options.js ***! + \******************************************************************************************************************/ +/***/ ((module) => { -"use strict"; +// parse out just the options we care about so we always get a consistent +// obj with keys in a consistent order. +const opts = ['includePrerelease', 'loose', 'rtl'] +const parseOptions = options => + !options ? {} + : typeof options !== 'object' ? { loose: true } + : opts.filter(k => options[k]).reduce((o, k) => { + o[k] = true + return o + }, {}) +module.exports = parseOptions -const EE = __webpack_require__(/*! events */ "events") -const Stream = __webpack_require__(/*! stream */ "stream") -const Yallist = __webpack_require__(/*! yallist */ "./.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip/node_modules/yallist/yallist.js") -const SD = __webpack_require__(/*! string_decoder */ "string_decoder").StringDecoder -const EOF = Symbol('EOF') -const MAYBE_EMIT_END = Symbol('maybeEmitEnd') -const EMITTED_END = Symbol('emittedEnd') -const EMITTING_END = Symbol('emittingEnd') -const CLOSED = Symbol('closed') -const READ = Symbol('read') -const FLUSH = Symbol('flush') -const FLUSHCHUNK = Symbol('flushChunk') -const ENCODING = Symbol('encoding') -const DECODER = Symbol('decoder') -const FLOWING = Symbol('flowing') -const PAUSED = Symbol('paused') -const RESUME = Symbol('resume') -const BUFFERLENGTH = Symbol('bufferLength') -const BUFFERPUSH = Symbol('bufferPush') -const BUFFERSHIFT = Symbol('bufferShift') -const OBJECTMODE = Symbol('objectMode') -const DESTROYED = Symbol('destroyed') +/***/ }), -// TODO remove when Node v8 support drops -const doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1' -const ASYNCITERATOR = doIter && Symbol.asyncIterator - || Symbol('asyncIterator not implemented') -const ITERATOR = doIter && Symbol.iterator - || Symbol('iterator not implemented') +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/re.js": +/*!*******************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/re.js ***! + \*******************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { -// events that mean 'the stream is over' -// these are treated specially, and re-emitted -// if they are listened for after emitting. -const isEndish = ev => - ev === 'end' || - ev === 'finish' || - ev === 'prefinish' +const { MAX_SAFE_COMPONENT_LENGTH } = __webpack_require__(/*! ./constants */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/constants.js") +const debug = __webpack_require__(/*! ./debug */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/internal/debug.js") +exports = module.exports = {} -const isArrayBuffer = b => b instanceof ArrayBuffer || - typeof b === 'object' && - b.constructor && - b.constructor.name === 'ArrayBuffer' && - b.byteLength >= 0 +// The actual regexps go on exports.re +const re = exports.re = [] +const src = exports.src = [] +const t = exports.t = {} +let R = 0 -const isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b) +const createToken = (name, value, isGlobal) => { + const index = R++ + debug(name, index, value) + t[name] = index + src[index] = value + re[index] = new RegExp(value, isGlobal ? 'g' : undefined) +} -module.exports = class Minipass extends Stream { - constructor (options) { - super() - this[FLOWING] = false - // whether we're explicitly paused - this[PAUSED] = false - this.pipes = new Yallist() - this.buffer = new Yallist() - this[OBJECTMODE] = options && options.objectMode || false - if (this[OBJECTMODE]) - this[ENCODING] = null - else - this[ENCODING] = options && options.encoding || null - if (this[ENCODING] === 'buffer') - this[ENCODING] = null - this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null - this[EOF] = false - this[EMITTED_END] = false - this[EMITTING_END] = false - this[CLOSED] = false - this.writable = true - this.readable = true - this[BUFFERLENGTH] = 0 - this[DESTROYED] = false - } +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. - get bufferLength () { return this[BUFFERLENGTH] } +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. - get encoding () { return this[ENCODING] } - set encoding (enc) { - if (this[OBJECTMODE]) - throw new Error('cannot set encoding in objectMode') +createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*') +createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+') - if (this[ENCODING] && enc !== this[ENCODING] && - (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH])) - throw new Error('cannot change encoding') +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. - if (this[ENCODING] !== enc) { - this[DECODER] = enc ? new SD(enc) : null - if (this.buffer.length) - this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk)) - } +createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*') - this[ENCODING] = enc - } +// ## Main Version +// Three dot-separated numeric identifiers. - setEncoding (enc) { - this.encoding = enc - } +createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})`) - get objectMode () { return this[OBJECTMODE] } - set objectMode (ॐ ) { this[OBJECTMODE] = this[OBJECTMODE] || !!ॐ } +createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})`) - write (chunk, encoding, cb) { - if (this[EOF]) - throw new Error('write after end') +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. - if (this[DESTROYED]) { - this.emit('error', Object.assign( - new Error('Cannot call write after a stream was destroyed'), - { code: 'ERR_STREAM_DESTROYED' } - )) - return true - } +createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER] +}|${src[t.NONNUMERICIDENTIFIER]})`) - if (typeof encoding === 'function') - cb = encoding, encoding = 'utf8' +createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE] +}|${src[t.NONNUMERICIDENTIFIER]})`) - if (!encoding) - encoding = 'utf8' +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. - // convert array buffers and typed array views into buffers - // at some point in the future, we may want to do the opposite! - // leave strings and buffers as-is - // anything else switches us into object mode - if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) { - if (isArrayBufferView(chunk)) - chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength) - else if (isArrayBuffer(chunk)) - chunk = Buffer.from(chunk) - else if (typeof chunk !== 'string') - // use the setter so we throw if we have encoding set - this.objectMode = true - } +createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] +}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`) - // this ensures at this point that the chunk is a buffer or string - // don't buffer it up or send it to the decoder - if (!this.objectMode && !chunk.length) { - const ret = this.flowing - if (this[BUFFERLENGTH] !== 0) - this.emit('readable') - if (cb) - cb() - return ret - } +createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] +}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`) - // fast-path writing strings of same encoding to a stream with - // an empty buffer, skipping the buffer/decoder dance - if (typeof chunk === 'string' && !this[OBJECTMODE] && - // unless it is a string already ready for us to use - !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) { - chunk = Buffer.from(chunk, encoding) - } +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. - if (Buffer.isBuffer(chunk) && this[ENCODING]) - chunk = this[DECODER].write(chunk) +createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+') - try { - return this.flowing - ? (this.emit('data', chunk), this.flowing) - : (this[BUFFERPUSH](chunk), false) - } finally { - if (this[BUFFERLENGTH] !== 0) - this.emit('readable') - if (cb) - cb() - } - } +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. - read (n) { - if (this[DESTROYED]) - return null +createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] +}(?:\\.${src[t.BUILDIDENTIFIER]})*))`) - try { - if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) - return null +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. - if (this[OBJECTMODE]) - n = null +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. - if (this.buffer.length > 1 && !this[OBJECTMODE]) { - if (this.encoding) - this.buffer = new Yallist([ - Array.from(this.buffer).join('') - ]) - else - this.buffer = new Yallist([ - Buffer.concat(Array.from(this.buffer), this[BUFFERLENGTH]) - ]) - } +createToken('FULLPLAIN', `v?${src[t.MAINVERSION] +}${src[t.PRERELEASE]}?${ + src[t.BUILD]}?`) - return this[READ](n || null, this.buffer.head.value) - } finally { - this[MAYBE_EMIT_END]() - } - } +createToken('FULL', `^${src[t.FULLPLAIN]}$`) - [READ] (n, chunk) { - if (n === chunk.length || n === null) - this[BUFFERSHIFT]() - else { - this.buffer.head.value = chunk.slice(n) - chunk = chunk.slice(0, n) - this[BUFFERLENGTH] -= n - } +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] +}${src[t.PRERELEASELOOSE]}?${ + src[t.BUILD]}?`) - this.emit('data', chunk) +createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`) - if (!this.buffer.length && !this[EOF]) - this.emit('drain') +createToken('GTLT', '((?:<|>)?=?)') - return chunk - } +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`) +createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`) - end (chunk, encoding, cb) { - if (typeof chunk === 'function') - cb = chunk, chunk = null - if (typeof encoding === 'function') - cb = encoding, encoding = 'utf8' - if (chunk) - this.write(chunk, encoding) - if (cb) - this.once('end', cb) - this[EOF] = true - this.writable = false +createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:${src[t.PRERELEASE]})?${ + src[t.BUILD]}?` + + `)?)?`) - // if we haven't written anything, then go ahead and emit, - // even if we're not reading. - // we'll re-emit if a new 'end' listener is added anyway. - // This makes MP more suitable to write-only use cases. - if (this.flowing || !this[PAUSED]) - this[MAYBE_EMIT_END]() - return this - } +createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:${src[t.PRERELEASELOOSE]})?${ + src[t.BUILD]}?` + + `)?)?`) - // don't let the internal resume be overwritten - [RESUME] () { - if (this[DESTROYED]) - return +createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`) +createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`) - this[PAUSED] = false - this[FLOWING] = true - this.emit('resume') - if (this.buffer.length) - this[FLUSH]() - else if (this[EOF]) - this[MAYBE_EMIT_END]() - else - this.emit('drain') - } +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +createToken('COERCE', `${'(^|[^\\d])' + + '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:$|[^\\d])`) +createToken('COERCERTL', src[t.COERCE], true) - resume () { - return this[RESUME]() - } +// Tilde ranges. +// Meaning is "reasonably at or greater than" +createToken('LONETILDE', '(?:~>?)') - pause () { - this[FLOWING] = false - this[PAUSED] = true - } +createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true) +exports.tildeTrimReplace = '$1~' - get destroyed () { - return this[DESTROYED] - } +createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`) +createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`) - get flowing () { - return this[FLOWING] - } +// Caret ranges. +// Meaning is "at least and backwards compatible with" +createToken('LONECARET', '(?:\\^)') - get paused () { - return this[PAUSED] - } +createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true) +exports.caretTrimReplace = '$1^' - [BUFFERPUSH] (chunk) { - if (this[OBJECTMODE]) - this[BUFFERLENGTH] += 1 - else - this[BUFFERLENGTH] += chunk.length - return this.buffer.push(chunk) - } +createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`) +createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`) - [BUFFERSHIFT] () { - if (this.buffer.length) { - if (this[OBJECTMODE]) - this[BUFFERLENGTH] -= 1 - else - this[BUFFERLENGTH] -= this.buffer.head.value.length - } - return this.buffer.shift() - } +// A simple gt/lt/eq thing, or just "" to indicate "any version" +createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`) +createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`) - [FLUSH] () { - do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]())) +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] +}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true) +exports.comparatorTrimReplace = '$1$2$3' - if (!this.buffer.length && !this[EOF]) - this.emit('drain') - } +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAIN]})` + + `\\s*$`) - [FLUSHCHUNK] (chunk) { - return chunk ? (this.emit('data', chunk), this.flowing) : false - } +createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAINLOOSE]})` + + `\\s*$`) - pipe (dest, opts) { - if (this[DESTROYED]) - return +// Star ranges basically just allow anything at all. +createToken('STAR', '(<|>)?=?\\s*\\*') +// >=0.0.0 is like a star +createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$') +createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$') - const ended = this[EMITTED_END] - opts = opts || {} - if (dest === process.stdout || dest === process.stderr) - opts.end = false - else - opts.end = opts.end !== false - const p = { dest: dest, opts: opts, ondrain: _ => this[RESUME]() } - this.pipes.push(p) +/***/ }), - dest.on('drain', p.ondrain) - this[RESUME]() - // piping an ended stream ends immediately - if (ended && p.opts.end) - p.dest.end() - return dest - } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/gtr.js": +/*!******************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/gtr.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - addListener (ev, fn) { - return this.on(ev, fn) - } +// Determine if version is greater than all the versions possible in the range. +const outside = __webpack_require__(/*! ./outside */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/outside.js") +const gtr = (version, range, options) => outside(version, range, '>', options) +module.exports = gtr - on (ev, fn) { - try { - return super.on(ev, fn) - } finally { - if (ev === 'data' && !this.pipes.length && !this.flowing) - this[RESUME]() - else if (isEndish(ev) && this[EMITTED_END]) { - super.emit(ev) - this.removeAllListeners(ev) - } - } - } - get emittedEnd () { - return this[EMITTED_END] - } +/***/ }), - [MAYBE_EMIT_END] () { - if (!this[EMITTING_END] && - !this[EMITTED_END] && - !this[DESTROYED] && - this.buffer.length === 0 && - this[EOF]) { - this[EMITTING_END] = true - this.emit('end') - this.emit('prefinish') - this.emit('finish') - if (this[CLOSED]) - this.emit('close') - this[EMITTING_END] = false - } - } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/intersects.js": +/*!*************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/intersects.js ***! + \*************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - emit (ev, data) { - // error and close are only events allowed after calling destroy() - if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED]) - return - else if (ev === 'data') { - if (!data) - return +const Range = __webpack_require__(/*! ../classes/range */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js") +const intersects = (r1, r2, options) => { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2) +} +module.exports = intersects - if (this.pipes.length) - this.pipes.forEach(p => - p.dest.write(data) === false && this.pause()) - } else if (ev === 'end') { - // only actual end gets this treatment - if (this[EMITTED_END] === true) - return - this[EMITTED_END] = true - this.readable = false +/***/ }), - if (this[DECODER]) { - data = this[DECODER].end() - if (data) { - this.pipes.forEach(p => p.dest.write(data)) - super.emit('data', data) - } - } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/ltr.js": +/*!******************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/ltr.js ***! + \******************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - this.pipes.forEach(p => { - p.dest.removeListener('drain', p.ondrain) - if (p.opts.end) - p.dest.end() - }) - } else if (ev === 'close') { - this[CLOSED] = true - // don't emit close before 'end' and 'finish' - if (!this[EMITTED_END] && !this[DESTROYED]) - return - } +const outside = __webpack_require__(/*! ./outside */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/outside.js") +// Determine if version is less than all the versions possible in the range +const ltr = (version, range, options) => outside(version, range, '<', options) +module.exports = ltr - // TODO: replace with a spread operator when Node v4 support drops - const args = new Array(arguments.length) - args[0] = ev - args[1] = data - if (arguments.length > 2) { - for (let i = 2; i < arguments.length; i++) { - args[i] = arguments[i] - } - } - try { - return super.emit.apply(this, args) - } finally { - if (!isEndish(ev)) - this[MAYBE_EMIT_END]() - else - this.removeAllListeners(ev) - } - } +/***/ }), - // const all = await stream.collect() - collect () { - const buf = [] - if (!this[OBJECTMODE]) - buf.dataLength = 0 - // set the promise first, in case an error is raised - // by triggering the flow here. - const p = this.promise() - this.on('data', c => { - buf.push(c) - if (!this[OBJECTMODE]) - buf.dataLength += c.length - }) - return p.then(() => buf) - } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/max-satisfying.js": +/*!*****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/max-satisfying.js ***! + \*****************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - // const data = await stream.concat() - concat () { - return this[OBJECTMODE] - ? Promise.reject(new Error('cannot concat in objectMode')) - : this.collect().then(buf => - this[OBJECTMODE] - ? Promise.reject(new Error('cannot concat in objectMode')) - : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength)) - } +const SemVer = __webpack_require__(/*! ../classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") +const Range = __webpack_require__(/*! ../classes/range */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js") - // stream.promise().then(() => done, er => emitted error) - promise () { - return new Promise((resolve, reject) => { - this.on(DESTROYED, () => reject(new Error('stream destroyed'))) - this.on('end', () => resolve()) - this.on('error', er => reject(er)) - }) +const maxSatisfying = (versions, range, options) => { + let max = null + let maxSV = null + let rangeObj = null + try { + rangeObj = new Range(range, options) + } catch (er) { + return null } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} +module.exports = maxSatisfying - // for await (let chunk of stream) - [ASYNCITERATOR] () { - const next = () => { - const res = this.read() - if (res !== null) - return Promise.resolve({ done: false, value: res }) - if (this[EOF]) - return Promise.resolve({ done: true }) +/***/ }), - let resolve = null - let reject = null - const onerr = er => { - this.removeListener('data', ondata) - this.removeListener('end', onend) - reject(er) - } - const ondata = value => { - this.removeListener('error', onerr) - this.removeListener('end', onend) - this.pause() - resolve({ value: value, done: !!this[EOF] }) - } - const onend = () => { - this.removeListener('error', onerr) - this.removeListener('data', ondata) - resolve({ done: true }) - } - const ondestroy = () => onerr(new Error('stream destroyed')) - return new Promise((res, rej) => { - reject = rej - resolve = res - this.once(DESTROYED, ondestroy) - this.once('error', onerr) - this.once('end', onend) - this.once('data', ondata) - }) - } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/min-satisfying.js": +/*!*****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/min-satisfying.js ***! + \*****************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - return { next } +const SemVer = __webpack_require__(/*! ../classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") +const Range = __webpack_require__(/*! ../classes/range */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js") +const minSatisfying = (versions, range, options) => { + let min = null + let minSV = null + let rangeObj = null + try { + rangeObj = new Range(range, options) + } catch (er) { + return null } - - // for (let chunk of stream) - [ITERATOR] () { - const next = () => { - const value = this.read() - const done = value === null - return { value, done } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } } - return { next } - } + }) + return min +} +module.exports = minSatisfying - destroy (er) { - if (this[DESTROYED]) { - if (er) - this.emit('error', er) - else - this.emit(DESTROYED) - return this - } - this[DESTROYED] = true +/***/ }), - // throw away all buffered data, it's never coming out - this.buffer = new Yallist() - this[BUFFERLENGTH] = 0 +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/min-version.js": +/*!**************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/min-version.js ***! + \**************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - if (typeof this.close === 'function' && !this[CLOSED]) - this.close() +const SemVer = __webpack_require__(/*! ../classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") +const Range = __webpack_require__(/*! ../classes/range */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js") +const gt = __webpack_require__(/*! ../functions/gt */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/gt.js") - if (er) - this.emit('error', er) - else // if no error to emit, still reject pending promises - this.emit(DESTROYED) +const minVersion = (range, loose) => { + range = new Range(range, loose) - return this + let minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver } - static isStream (s) { - return !!s && (s instanceof Minipass || s instanceof Stream || - s instanceof EE && ( - typeof s.pipe === 'function' || // readable - (typeof s.write === 'function' && typeof s.end === 'function') // writable - )) + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver } -} - -/***/ }), + minver = null + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i] -/***/ "./.yarn/cache/minizlib-npm-2.1.0-9531be52b3-6a811aaa3a.zip/node_modules/minizlib/constants.js": -/*!*****************************************************************************************************!*\ - !*** ./.yarn/cache/minizlib-npm-2.1.0-9531be52b3-6a811aaa3a.zip/node_modules/minizlib/constants.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + let setMin = null + comparators.forEach((comparator) => { + // Clone to avoid manipulating the comparator's semver object. + const compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!setMin || gt(compver, setMin)) { + setMin = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error(`Unexpected operation: ${comparator.operator}`) + } + }) + if (setMin && (!minver || gt(minver, setMin))) { + minver = setMin + } + } -// Update with any zlib constants that are added or changed in the future. -// Node v6 didn't export this, so we just hard code the version and rely -// on all the other hard-coded values from zlib v4736. When node v6 -// support drops, we can just export the realZlibConstants object. -const realZlibConstants = __webpack_require__(/*! zlib */ "zlib").constants || - /* istanbul ignore next */ { ZLIB_VERNUM: 4736 } + if (minver && range.test(minver)) { + return minver + } -module.exports = Object.freeze(Object.assign(Object.create(null), { - Z_NO_FLUSH: 0, - Z_PARTIAL_FLUSH: 1, - Z_SYNC_FLUSH: 2, - Z_FULL_FLUSH: 3, - Z_FINISH: 4, - Z_BLOCK: 5, - Z_OK: 0, - Z_STREAM_END: 1, - Z_NEED_DICT: 2, - Z_ERRNO: -1, - Z_STREAM_ERROR: -2, - Z_DATA_ERROR: -3, - Z_MEM_ERROR: -4, - Z_BUF_ERROR: -5, - Z_VERSION_ERROR: -6, - Z_NO_COMPRESSION: 0, - Z_BEST_SPEED: 1, - Z_BEST_COMPRESSION: 9, - Z_DEFAULT_COMPRESSION: -1, - Z_FILTERED: 1, - Z_HUFFMAN_ONLY: 2, - Z_RLE: 3, - Z_FIXED: 4, - Z_DEFAULT_STRATEGY: 0, - DEFLATE: 1, - INFLATE: 2, - GZIP: 3, - GUNZIP: 4, - DEFLATERAW: 5, - INFLATERAW: 6, - UNZIP: 7, - BROTLI_DECODE: 8, - BROTLI_ENCODE: 9, - Z_MIN_WINDOWBITS: 8, - Z_MAX_WINDOWBITS: 15, - Z_DEFAULT_WINDOWBITS: 15, - Z_MIN_CHUNK: 64, - Z_MAX_CHUNK: Infinity, - Z_DEFAULT_CHUNK: 16384, - Z_MIN_MEMLEVEL: 1, - Z_MAX_MEMLEVEL: 9, - Z_DEFAULT_MEMLEVEL: 8, - Z_MIN_LEVEL: -1, - Z_MAX_LEVEL: 9, - Z_DEFAULT_LEVEL: -1, - BROTLI_OPERATION_PROCESS: 0, - BROTLI_OPERATION_FLUSH: 1, - BROTLI_OPERATION_FINISH: 2, - BROTLI_OPERATION_EMIT_METADATA: 3, - BROTLI_MODE_GENERIC: 0, - BROTLI_MODE_TEXT: 1, - BROTLI_MODE_FONT: 2, - BROTLI_DEFAULT_MODE: 0, - BROTLI_MIN_QUALITY: 0, - BROTLI_MAX_QUALITY: 11, - BROTLI_DEFAULT_QUALITY: 11, - BROTLI_MIN_WINDOW_BITS: 10, - BROTLI_MAX_WINDOW_BITS: 24, - BROTLI_LARGE_MAX_WINDOW_BITS: 30, - BROTLI_DEFAULT_WINDOW: 22, - BROTLI_MIN_INPUT_BLOCK_BITS: 16, - BROTLI_MAX_INPUT_BLOCK_BITS: 24, - BROTLI_PARAM_MODE: 0, - BROTLI_PARAM_QUALITY: 1, - BROTLI_PARAM_LGWIN: 2, - BROTLI_PARAM_LGBLOCK: 3, - BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4, - BROTLI_PARAM_SIZE_HINT: 5, - BROTLI_PARAM_LARGE_WINDOW: 6, - BROTLI_PARAM_NPOSTFIX: 7, - BROTLI_PARAM_NDIRECT: 8, - BROTLI_DECODER_RESULT_ERROR: 0, - BROTLI_DECODER_RESULT_SUCCESS: 1, - BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2, - BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3, - BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0, - BROTLI_DECODER_PARAM_LARGE_WINDOW: 1, - BROTLI_DECODER_NO_ERROR: 0, - BROTLI_DECODER_SUCCESS: 1, - BROTLI_DECODER_NEEDS_MORE_INPUT: 2, - BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3, - BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1, - BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2, - BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3, - BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4, - BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5, - BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6, - BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7, - BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8, - BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9, - BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10, - BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11, - BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12, - BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13, - BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14, - BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15, - BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16, - BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19, - BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20, - BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21, - BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22, - BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25, - BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26, - BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27, - BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30, - BROTLI_DECODER_ERROR_UNREACHABLE: -31, -}, realZlibConstants)) + return null +} +module.exports = minVersion /***/ }), -/***/ "./.yarn/cache/minizlib-npm-2.1.0-9531be52b3-6a811aaa3a.zip/node_modules/minizlib/index.js": -/*!*************************************************************************************************!*\ - !*** ./.yarn/cache/minizlib-npm-2.1.0-9531be52b3-6a811aaa3a.zip/node_modules/minizlib/index.js ***! - \*************************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/outside.js": +/*!**********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/outside.js ***! + \**********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -"use strict"; +const SemVer = __webpack_require__(/*! ../classes/semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/semver.js") +const Comparator = __webpack_require__(/*! ../classes/comparator */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/comparator.js") +const { ANY } = Comparator +const Range = __webpack_require__(/*! ../classes/range */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js") +const satisfies = __webpack_require__(/*! ../functions/satisfies */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/satisfies.js") +const gt = __webpack_require__(/*! ../functions/gt */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/gt.js") +const lt = __webpack_require__(/*! ../functions/lt */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/lt.js") +const lte = __webpack_require__(/*! ../functions/lte */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/lte.js") +const gte = __webpack_require__(/*! ../functions/gte */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/gte.js") +const outside = (version, range, hilo, options) => { + version = new SemVer(version, options) + range = new Range(range, options) -const assert = __webpack_require__(/*! assert */ "assert") -const Buffer = __webpack_require__(/*! buffer */ "buffer").Buffer -const realZlib = __webpack_require__(/*! zlib */ "zlib") + let gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } -const constants = exports.constants = __webpack_require__(/*! ./constants.js */ "./.yarn/cache/minizlib-npm-2.1.0-9531be52b3-6a811aaa3a.zip/node_modules/minizlib/constants.js") -const Minipass = __webpack_require__(/*! minipass */ "./.yarn/cache/minipass-npm-3.1.1-b51d7e264d-cfcfd86adc.zip/node_modules/minipass/index.js") + // If it satisfies the range it is not outside + if (satisfies(version, range, options)) { + return false + } -const OriginalBufferConcat = Buffer.concat + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. -const _superWrite = Symbol('_superWrite') -class ZlibError extends Error { - constructor (err) { - super('zlib: ' + err.message) - this.code = err.code - this.errno = err.errno - /* istanbul ignore if */ - if (!this.code) - this.code = 'ZLIB_ERROR' + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i] - this.message = 'zlib: ' + err.message - Error.captureStackTrace(this, this.constructor) - } + let high = null + let low = null - get name () { - return 'ZlibError' + comparators.forEach((comparator) => { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } } + return true } -// the Zlib class they all inherit from -// This thing manages the queue of requests, and returns -// true or false if there is anything in the queue when -// you call the .write() method. -const _opts = Symbol('opts') -const _flushFlag = Symbol('flushFlag') -const _finishFlushFlag = Symbol('finishFlushFlag') -const _fullFlushFlag = Symbol('fullFlushFlag') -const _handle = Symbol('handle') -const _onError = Symbol('onError') -const _sawError = Symbol('sawError') -const _level = Symbol('level') -const _strategy = Symbol('strategy') -const _ended = Symbol('ended') -const _defaultFullFlush = Symbol('_defaultFullFlush') +module.exports = outside -class ZlibBase extends Minipass { - constructor (opts, mode) { - if (!opts || typeof opts !== 'object') - throw new TypeError('invalid options for ZlibBase constructor') - super(opts) - this[_ended] = false - this[_opts] = opts +/***/ }), - this[_flushFlag] = opts.flush - this[_finishFlushFlag] = opts.finishFlush - // this will throw if any options are invalid for the class selected - try { - this[_handle] = new realZlib[mode](opts) - } catch (er) { - // make sure that all errors get decorated properly - throw new ZlibError(er) - } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/simplify.js": +/*!***********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/simplify.js ***! + \***********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - this[_onError] = (err) => { - this[_sawError] = true - // there is no way to cleanly recover. - // continuing only obscures problems. - this.close() - this.emit('error', err) +// given a set of versions and a range, create a "simplified" range +// that includes the same versions that the original range does +// If the original range is shorter than the simplified one, return that. +const satisfies = __webpack_require__(/*! ../functions/satisfies.js */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/satisfies.js") +const compare = __webpack_require__(/*! ../functions/compare.js */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js") +module.exports = (versions, range, options) => { + const set = [] + let first = null + let prev = null + const v = versions.sort((a, b) => compare(a, b, options)) + for (const version of v) { + const included = satisfies(version, range, options) + if (included) { + prev = version + if (!first) { + first = version + } + } else { + if (prev) { + set.push([first, prev]) + } + prev = null + first = null } - - this[_handle].on('error', er => this[_onError](new ZlibError(er))) - this.once('end', () => this.close) } - - close () { - if (this[_handle]) { - this[_handle].close() - this[_handle] = null - this.emit('close') - } + if (first) { + set.push([first, null]) } - reset () { - if (!this[_sawError]) { - assert(this[_handle], 'zlib binding closed') - return this[_handle].reset() + const ranges = [] + for (const [min, max] of set) { + if (min === max) { + ranges.push(min) + } else if (!max && min === v[0]) { + ranges.push('*') + } else if (!max) { + ranges.push(`>=${min}`) + } else if (min === v[0]) { + ranges.push(`<=${max}`) + } else { + ranges.push(`${min} - ${max}`) } } + const simplified = ranges.join(' || ') + const original = typeof range.raw === 'string' ? range.raw : String(range) + return simplified.length < original.length ? simplified : range +} - flush (flushFlag) { - if (this.ended) - return - - if (typeof flushFlag !== 'number') - flushFlag = this[_fullFlushFlag] - this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag })) - } - end (chunk, encoding, cb) { - if (chunk) - this.write(chunk, encoding) - this.flush(this[_finishFlushFlag]) - this[_ended] = true - return super.end(null, null, cb) - } +/***/ }), - get ended () { - return this[_ended] - } +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/subset.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/subset.js ***! + \*********************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - write (chunk, encoding, cb) { - // process the chunk using the sync process - // then super.write() all the outputted chunks - if (typeof encoding === 'function') - cb = encoding, encoding = 'utf8' +const Range = __webpack_require__(/*! ../classes/range.js */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js") +const Comparator = __webpack_require__(/*! ../classes/comparator.js */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/comparator.js") +const { ANY } = Comparator +const satisfies = __webpack_require__(/*! ../functions/satisfies.js */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/satisfies.js") +const compare = __webpack_require__(/*! ../functions/compare.js */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/functions/compare.js") - if (typeof chunk === 'string') - chunk = Buffer.from(chunk, encoding) +// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: +// - Every simple range `r1, r2, ...` is a null set, OR +// - Every simple range `r1, r2, ...` which is not a null set is a subset of +// some `R1, R2, ...` +// +// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: +// - If c is only the ANY comparator +// - If C is only the ANY comparator, return true +// - Else if in prerelease mode, return false +// - else replace c with `[>=0.0.0]` +// - If C is only the ANY comparator +// - if in prerelease mode, return true +// - else replace C with `[>=0.0.0]` +// - Let EQ be the set of = comparators in c +// - If EQ is more than one, return true (null set) +// - Let GT be the highest > or >= comparator in c +// - Let LT be the lowest < or <= comparator in c +// - If GT and LT, and GT.semver > LT.semver, return true (null set) +// - If any C is a = range, and GT or LT are set, return false +// - If EQ +// - If GT, and EQ does not satisfy GT, return true (null set) +// - If LT, and EQ does not satisfy LT, return true (null set) +// - If EQ satisfies every C, return true +// - Else return false +// - If GT +// - If GT.semver is lower than any > or >= comp in C, return false +// - If GT is >=, and GT.semver does not satisfy every C, return false +// - If GT.semver has a prerelease, and not in prerelease mode +// - If no C has a prerelease and the GT.semver tuple, return false +// - If LT +// - If LT.semver is greater than any < or <= comp in C, return false +// - If LT is <=, and LT.semver does not satisfy every C, return false +// - If GT.semver has a prerelease, and not in prerelease mode +// - If no C has a prerelease and the LT.semver tuple, return false +// - Else return true + +const subset = (sub, dom, options = {}) => { + if (sub === dom) { + return true + } - if (this[_sawError]) - return - assert(this[_handle], 'zlib binding closed') + sub = new Range(sub, options) + dom = new Range(dom, options) + let sawNonNull = false - // _processChunk tries to .close() the native handle after it's done, so we - // intercept that by temporarily making it a no-op. - const nativeHandle = this[_handle]._handle - const originalNativeClose = nativeHandle.close - nativeHandle.close = () => {} - const originalClose = this[_handle].close - this[_handle].close = () => {} - // It also calls `Buffer.concat()` at the end, which may be convenient - // for some, but which we are not interested in as it slows us down. - Buffer.concat = (args) => args - let result - try { - const flushFlag = typeof chunk[_flushFlag] === 'number' - ? chunk[_flushFlag] : this[_flushFlag] - result = this[_handle]._processChunk(chunk, flushFlag) - // if we don't throw, reset it back how it was - Buffer.concat = OriginalBufferConcat - } catch (err) { - // or if we do, put Buffer.concat() back before we emit error - // Error events call into user code, which may call Buffer.concat() - Buffer.concat = OriginalBufferConcat - this[_onError](new ZlibError(err)) - } finally { - if (this[_handle]) { - // Core zlib resets `_handle` to null after attempting to close the - // native handle. Our no-op handler prevented actual closure, but we - // need to restore the `._handle` property. - this[_handle]._handle = nativeHandle - nativeHandle.close = originalNativeClose - this[_handle].close = originalClose - // `_processChunk()` adds an 'error' listener. If we don't remove it - // after each call, these handlers start piling up. - this[_handle].removeAllListeners('error') + OUTER: for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options) + sawNonNull = sawNonNull || isSub !== null + if (isSub) { + continue OUTER } } - - let writeReturn - if (result) { - if (Array.isArray(result) && result.length > 0) { - // The first buffer is always `handle._outBuffer`, which would be - // re-used for later invocations; so, we always have to copy that one. - writeReturn = this[_superWrite](Buffer.from(result[0])) - for (let i = 1; i < result.length; i++) { - writeReturn = this[_superWrite](result[i]) - } - } else { - writeReturn = this[_superWrite](Buffer.from(result)) - } + // the null set is a subset of everything, but null simple ranges in + // a complex range should be ignored. so if we saw a non-null range, + // then we know this isn't a subset, but if EVERY simple range was null, + // then it is a subset. + if (sawNonNull) { + return false } + } + return true +} - if (cb) - cb() - return writeReturn +const simpleSubset = (sub, dom, options) => { + if (sub === dom) { + return true } - [_superWrite] (data) { - return super.write(data) + if (sub.length === 1 && sub[0].semver === ANY) { + if (dom.length === 1 && dom[0].semver === ANY) { + return true + } else if (options.includePrerelease) { + sub = [new Comparator('>=0.0.0-0')] + } else { + sub = [new Comparator('>=0.0.0')] + } } -} -class Zlib extends ZlibBase { - constructor (opts, mode) { - opts = opts || {} + if (dom.length === 1 && dom[0].semver === ANY) { + if (options.includePrerelease) { + return true + } else { + dom = [new Comparator('>=0.0.0')] + } + } - opts.flush = opts.flush || constants.Z_NO_FLUSH - opts.finishFlush = opts.finishFlush || constants.Z_FINISH - super(opts, mode) + const eqSet = new Set() + let gt, lt + for (const c of sub) { + if (c.operator === '>' || c.operator === '>=') { + gt = higherGT(gt, c, options) + } else if (c.operator === '<' || c.operator === '<=') { + lt = lowerLT(lt, c, options) + } else { + eqSet.add(c.semver) + } + } - this[_fullFlushFlag] = constants.Z_FULL_FLUSH - this[_level] = opts.level - this[_strategy] = opts.strategy + if (eqSet.size > 1) { + return null } - params (level, strategy) { - if (this[_sawError]) - return + let gtltComp + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options) + if (gtltComp > 0) { + return null + } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) { + return null + } + } - if (!this[_handle]) - throw new Error('cannot switch params when binding is closed') + // will iterate one or zero times + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) { + return null + } - // no way to test this without also not supporting params at all - /* istanbul ignore if */ - if (!this[_handle].params) - throw new Error('not supported in this implementation') + if (lt && !satisfies(eq, String(lt), options)) { + return null + } - if (this[_level] !== level || this[_strategy] !== strategy) { - this.flush(constants.Z_SYNC_FLUSH) - assert(this[_handle], 'zlib binding closed') - // .params() calls .flush(), but the latter is always async in the - // core zlib. We override .flush() temporarily to intercept that and - // flush synchronously. - const origFlush = this[_handle].flush - this[_handle].flush = (flushFlag, cb) => { - this.flush(flushFlag) - cb() - } - try { - this[_handle].params(level, strategy) - } finally { - this[_handle].flush = origFlush - } - /* istanbul ignore else */ - if (this[_handle]) { - this[_level] = level - this[_strategy] = strategy + for (const c of dom) { + if (!satisfies(eq, String(c), options)) { + return false } } - } -} -// minimal 2-byte header -class Deflate extends Zlib { - constructor (opts) { - super(opts, 'Deflate') + return true } -} -class Inflate extends Zlib { - constructor (opts) { - super(opts, 'Inflate') + let higher, lower + let hasDomLT, hasDomGT + // if the subset has a prerelease, we need a comparator in the superset + // with the same tuple and a prerelease, or it's not a subset + let needDomLTPre = lt && + !options.includePrerelease && + lt.semver.prerelease.length ? lt.semver : false + let needDomGTPre = gt && + !options.includePrerelease && + gt.semver.prerelease.length ? gt.semver : false + // exception: <1.2.3-0 is the same as <1.2.3 + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && + lt.operator === '<' && needDomLTPre.prerelease[0] === 0) { + needDomLTPre = false + } + + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>=' + hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<=' + if (gt) { + if (needDomGTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && + c.semver.major === needDomGTPre.major && + c.semver.minor === needDomGTPre.minor && + c.semver.patch === needDomGTPre.patch) { + needDomGTPre = false + } + } + if (c.operator === '>' || c.operator === '>=') { + higher = higherGT(gt, c, options) + if (higher === c && higher !== gt) { + return false + } + } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) { + return false + } + } + if (lt) { + if (needDomLTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && + c.semver.major === needDomLTPre.major && + c.semver.minor === needDomLTPre.minor && + c.semver.patch === needDomLTPre.patch) { + needDomLTPre = false + } + } + if (c.operator === '<' || c.operator === '<=') { + lower = lowerLT(lt, c, options) + if (lower === c && lower !== lt) { + return false + } + } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) { + return false + } + } + if (!c.operator && (lt || gt) && gtltComp !== 0) { + return false + } } -} -// gzip - bigger header, same deflate compression -const _portable = Symbol('_portable') -class Gzip extends Zlib { - constructor (opts) { - super(opts, 'Gzip') - this[_portable] = opts && !!opts.portable + // if there was a < or >, and nothing in the dom, then must be false + // UNLESS it was limited by another range in the other direction. + // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 + if (gt && hasDomLT && !lt && gtltComp !== 0) { + return false } - [_superWrite] (data) { - if (!this[_portable]) - return super[_superWrite](data) - - // we'll always get the header emitted in one first chunk - // overwrite the OS indicator byte with 0xFF - this[_portable] = false - data[9] = 255 - return super[_superWrite](data) + if (lt && hasDomGT && !gt && gtltComp !== 0) { + return false } -} -class Gunzip extends Zlib { - constructor (opts) { - super(opts, 'Gunzip') + // we needed a prerelease range in a specific tuple, but didn't get one + // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, + // because it includes prereleases in the 1.2.3 tuple + if (needDomGTPre || needDomLTPre) { + return false } -} -// raw - no header -class DeflateRaw extends Zlib { - constructor (opts) { - super(opts, 'DeflateRaw') - } + return true } -class InflateRaw extends Zlib { - constructor (opts) { - super(opts, 'InflateRaw') +// >=1.2.3 is lower than >1.2.3 +const higherGT = (a, b, options) => { + if (!a) { + return b } + const comp = compare(a.semver, b.semver, options) + return comp > 0 ? a + : comp < 0 ? b + : b.operator === '>' && a.operator === '>=' ? b + : a } -// auto-detect header. -class Unzip extends Zlib { - constructor (opts) { - super(opts, 'Unzip') +// <=1.2.3 is higher than <1.2.3 +const lowerLT = (a, b, options) => { + if (!a) { + return b } + const comp = compare(a.semver, b.semver, options) + return comp < 0 ? a + : comp > 0 ? b + : b.operator === '<' && a.operator === '<=' ? b + : a } -class Brotli extends ZlibBase { - constructor (opts, mode) { - opts = opts || {} +module.exports = subset - opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS - opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH - super(opts, mode) +/***/ }), - this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH - } -} +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/to-comparators.js": +/*!*****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/to-comparators.js ***! + \*****************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -class BrotliCompress extends Brotli { - constructor (opts) { - super(opts, 'BrotliCompress') - } -} +const Range = __webpack_require__(/*! ../classes/range */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js") -class BrotliDecompress extends Brotli { - constructor (opts) { - super(opts, 'BrotliDecompress') - } -} +// Mostly just for testing and legacy API reasons +const toComparators = (range, options) => + new Range(range, options).set + .map(comp => comp.map(c => c.value).join(' ').trim().split(' ')) -exports.Deflate = Deflate -exports.Inflate = Inflate -exports.Gzip = Gzip -exports.Gunzip = Gunzip -exports.DeflateRaw = DeflateRaw -exports.InflateRaw = InflateRaw -exports.Unzip = Unzip -/* istanbul ignore else */ -if (typeof realZlib.BrotliCompress === 'function') { - exports.BrotliCompress = BrotliCompress - exports.BrotliDecompress = BrotliDecompress -} else { - exports.BrotliCompress = exports.BrotliDecompress = class { - constructor () { - throw new Error('Brotli is not supported in this version of Node.js') - } - } -} +module.exports = toComparators /***/ }), -/***/ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/index.js": -/*!*********************************************************************************************!*\ - !*** ./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/index.js ***! - \*********************************************************************************************/ +/***/ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/valid.js": +/*!********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/ranges/valid.js ***! + \********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const optsArg = __webpack_require__(/*! ./lib/opts-arg.js */ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/opts-arg.js") -const pathArg = __webpack_require__(/*! ./lib/path-arg.js */ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/path-arg.js") +const Range = __webpack_require__(/*! ../classes/range */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/classes/range.js") +const validRange = (range, options) => { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} +module.exports = validRange -const {mkdirpNative, mkdirpNativeSync} = __webpack_require__(/*! ./lib/mkdirp-native.js */ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/mkdirp-native.js") -const {mkdirpManual, mkdirpManualSync} = __webpack_require__(/*! ./lib/mkdirp-manual.js */ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/mkdirp-manual.js") -const {useNative, useNativeSync} = __webpack_require__(/*! ./lib/use-native.js */ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/use-native.js") +/***/ }), -const mkdirp = (path, opts) => { - path = pathArg(path) - opts = optsArg(opts) - return useNative(opts) - ? mkdirpNative(path, opts) - : mkdirpManual(path, opts) -} +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/index.js": +/*!********************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/index.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -const mkdirpSync = (path, opts) => { - path = pathArg(path) - opts = optsArg(opts) - return useNativeSync(opts) - ? mkdirpNativeSync(path, opts) - : mkdirpManualSync(path, opts) -} +"use strict"; -mkdirp.sync = mkdirpSync -mkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts)) -mkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts)) -mkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts)) -mkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts)) -module.exports = mkdirp +// high-level commands +exports.c = exports.create = __webpack_require__(/*! ./lib/create.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/create.js") +exports.r = exports.replace = __webpack_require__(/*! ./lib/replace.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/replace.js") +exports.t = exports.list = __webpack_require__(/*! ./lib/list.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/list.js") +exports.u = exports.update = __webpack_require__(/*! ./lib/update.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/update.js") +exports.x = exports.extract = __webpack_require__(/*! ./lib/extract.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/extract.js") + +// classes +exports.Pack = __webpack_require__(/*! ./lib/pack.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/pack.js") +exports.Unpack = __webpack_require__(/*! ./lib/unpack.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/unpack.js") +exports.Parse = __webpack_require__(/*! ./lib/parse.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/parse.js") +exports.ReadEntry = __webpack_require__(/*! ./lib/read-entry.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/read-entry.js") +exports.WriteEntry = __webpack_require__(/*! ./lib/write-entry.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/write-entry.js") +exports.Header = __webpack_require__(/*! ./lib/header.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/header.js") +exports.Pax = __webpack_require__(/*! ./lib/pax.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/pax.js") +exports.types = __webpack_require__(/*! ./lib/types.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/types.js") /***/ }), -/***/ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/find-made.js": -/*!*****************************************************************************************************!*\ - !*** ./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/find-made.js ***! - \*****************************************************************************************************/ +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/create.js": +/*!*************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/create.js ***! + \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const {dirname} = __webpack_require__(/*! path */ "path") +"use strict"; -const findMade = (opts, parent, path = undefined) => { - // we never want the 'made' return value to be a root directory - if (path === parent) - return Promise.resolve() - return opts.statAsync(parent).then( - st => st.isDirectory() ? path : undefined, // will fail later - er => er.code === 'ENOENT' - ? findMade(opts, dirname(parent), parent) - : undefined - ) -} +// tar -c +const hlo = __webpack_require__(/*! ./high-level-opt.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/high-level-opt.js") -const findMadeSync = (opts, parent, path = undefined) => { - if (path === parent) - return undefined +const Pack = __webpack_require__(/*! ./pack.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/pack.js") +const fsm = __webpack_require__(/*! fs-minipass */ "../../../.yarn/berry/cache/fs-minipass-npm-2.1.0-501ef87306-9.zip/node_modules/fs-minipass/index.js") +const t = __webpack_require__(/*! ./list.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/list.js") +const path = __webpack_require__(/*! path */ "path") - try { - return opts.statSync(parent).isDirectory() ? path : undefined - } catch (er) { - return er.code === 'ENOENT' - ? findMadeSync(opts, dirname(parent), parent) - : undefined - } -} +module.exports = (opt_, files, cb) => { + if (typeof files === 'function') + cb = files -module.exports = {findMade, findMadeSync} + if (Array.isArray(opt_)) + files = opt_, opt_ = {} + if (!files || !Array.isArray(files) || !files.length) + throw new TypeError('no files or directories specified') -/***/ }), + files = Array.from(files) -/***/ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/mkdirp-manual.js": -/*!*********************************************************************************************************!*\ - !*** ./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/mkdirp-manual.js ***! - \*********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const opt = hlo(opt_) -const {dirname} = __webpack_require__(/*! path */ "path") + if (opt.sync && typeof cb === 'function') + throw new TypeError('callback not supported for sync tar functions') -const mkdirpManual = (path, opts, made) => { - opts.recursive = false - const parent = dirname(path) - if (parent === path) { - return opts.mkdirAsync(path, opts).catch(er => { - // swallowed by recursive implementation on posix systems - // any other error is a failure - if (er.code !== 'EISDIR') - throw er - }) - } + if (!opt.file && typeof cb === 'function') + throw new TypeError('callback only supported with file option') - return opts.mkdirAsync(path, opts).then(() => made || path, er => { - if (er.code === 'ENOENT') - return mkdirpManual(parent, opts) - .then(made => mkdirpManual(path, opts, made)) - if (er.code !== 'EEXIST' && er.code !== 'EROFS') - throw er - return opts.statAsync(path).then(st => { - if (st.isDirectory()) - return made - else - throw er - }, () => { throw er }) + return opt.file && opt.sync ? createFileSync(opt, files) + : opt.file ? createFile(opt, files, cb) + : opt.sync ? createSync(opt, files) + : create(opt, files) +} + +const createFileSync = (opt, files) => { + const p = new Pack.Sync(opt) + const stream = new fsm.WriteStreamSync(opt.file, { + mode: opt.mode || 0o666, }) + p.pipe(stream) + addFilesSync(p, files) } -const mkdirpManualSync = (path, opts, made) => { - const parent = dirname(path) - opts.recursive = false +const createFile = (opt, files, cb) => { + const p = new Pack(opt) + const stream = new fsm.WriteStream(opt.file, { + mode: opt.mode || 0o666, + }) + p.pipe(stream) - if (parent === path) { - try { - return opts.mkdirSync(path, opts) - } catch (er) { - // swallowed by recursive implementation on posix systems - // any other error is a failure - if (er.code !== 'EISDIR') - throw er - else - return - } - } + const promise = new Promise((res, rej) => { + stream.on('error', rej) + stream.on('close', res) + p.on('error', rej) + }) - try { - opts.mkdirSync(path, opts) - return made || path - } catch (er) { - if (er.code === 'ENOENT') - return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made)) - if (er.code !== 'EEXIST' && er.code !== 'EROFS') - throw er - try { - if (!opts.statSync(path).isDirectory()) - throw er - } catch (_) { - throw er - } + addFilesAsync(p, files) + + return cb ? promise.then(cb, cb) : promise +} + +const addFilesSync = (p, files) => { + files.forEach(file => { + if (file.charAt(0) === '@') { + t({ + file: path.resolve(p.cwd, file.substr(1)), + sync: true, + noResume: true, + onentry: entry => p.add(entry), + }) + } else + p.add(file) + }) + p.end() +} + +const addFilesAsync = (p, files) => { + while (files.length) { + const file = files.shift() + if (file.charAt(0) === '@') { + return t({ + file: path.resolve(p.cwd, file.substr(1)), + noResume: true, + onentry: entry => p.add(entry), + }).then(_ => addFilesAsync(p, files)) + } else + p.add(file) } + p.end() } -module.exports = {mkdirpManual, mkdirpManualSync} +const createSync = (opt, files) => { + const p = new Pack.Sync(opt) + addFilesSync(p, files) + return p +} + +const create = (opt, files) => { + const p = new Pack(opt) + addFilesAsync(p, files) + return p +} /***/ }), -/***/ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/mkdirp-native.js": -/*!*********************************************************************************************************!*\ - !*** ./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/mkdirp-native.js ***! - \*********************************************************************************************************/ +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/extract.js": +/*!**************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/extract.js ***! + \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const {dirname} = __webpack_require__(/*! path */ "path") -const {findMade, findMadeSync} = __webpack_require__(/*! ./find-made.js */ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/find-made.js") -const {mkdirpManual, mkdirpManualSync} = __webpack_require__(/*! ./mkdirp-manual.js */ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/mkdirp-manual.js") +"use strict"; -const mkdirpNative = (path, opts) => { - opts.recursive = true - const parent = dirname(path) - if (parent === path) - return opts.mkdirAsync(path, opts) - return findMade(opts, path).then(made => - opts.mkdirAsync(path, opts).then(() => made) - .catch(er => { - if (er.code === 'ENOENT') - return mkdirpManual(path, opts) - else - throw er - })) -} +// tar -x +const hlo = __webpack_require__(/*! ./high-level-opt.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/high-level-opt.js") +const Unpack = __webpack_require__(/*! ./unpack.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/unpack.js") +const fs = __webpack_require__(/*! fs */ "fs") +const fsm = __webpack_require__(/*! fs-minipass */ "../../../.yarn/berry/cache/fs-minipass-npm-2.1.0-501ef87306-9.zip/node_modules/fs-minipass/index.js") +const path = __webpack_require__(/*! path */ "path") +const stripSlash = __webpack_require__(/*! ./strip-trailing-slashes.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/strip-trailing-slashes.js") -const mkdirpNativeSync = (path, opts) => { - opts.recursive = true - const parent = dirname(path) - if (parent === path) - return opts.mkdirSync(path, opts) +module.exports = (opt_, files, cb) => { + if (typeof opt_ === 'function') + cb = opt_, files = null, opt_ = {} + else if (Array.isArray(opt_)) + files = opt_, opt_ = {} - const made = findMadeSync(opts, path) - try { - opts.mkdirSync(path, opts) - return made - } catch (er) { - if (er.code === 'ENOENT') - return mkdirpManualSync(path, opts) - else - throw er - } -} + if (typeof files === 'function') + cb = files, files = null -module.exports = {mkdirpNative, mkdirpNativeSync} + if (!files) + files = [] + else + files = Array.from(files) + const opt = hlo(opt_) -/***/ }), + if (opt.sync && typeof cb === 'function') + throw new TypeError('callback not supported for sync tar functions') -/***/ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/opts-arg.js": -/*!****************************************************************************************************!*\ - !*** ./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/opts-arg.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + if (!opt.file && typeof cb === 'function') + throw new TypeError('callback only supported with file option') -const { promisify } = __webpack_require__(/*! util */ "util") -const fs = __webpack_require__(/*! fs */ "fs") -const optsArg = opts => { - if (!opts) - opts = { mode: 0o777 & (~process.umask()), fs } - else if (typeof opts === 'object') - opts = { mode: 0o777 & (~process.umask()), fs, ...opts } - else if (typeof opts === 'number') - opts = { mode: opts, fs } - else if (typeof opts === 'string') - opts = { mode: parseInt(opts, 8), fs } - else - throw new TypeError('invalid options argument') + if (files.length) + filesFilter(opt, files) - opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir - opts.mkdirAsync = promisify(opts.mkdir) - opts.stat = opts.stat || opts.fs.stat || fs.stat - opts.statAsync = promisify(opts.stat) - opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync - opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync - return opts + return opt.file && opt.sync ? extractFileSync(opt) + : opt.file ? extractFile(opt, cb) + : opt.sync ? extractSync(opt) + : extract(opt) } -module.exports = optsArg +// construct a filter that limits the file entries listed +// include child entries if a dir is included +const filesFilter = (opt, files) => { + const map = new Map(files.map(f => [stripSlash(f), true])) + const filter = opt.filter -/***/ }), - -/***/ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/path-arg.js": -/*!****************************************************************************************************!*\ - !*** ./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/path-arg.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const mapHas = (file, r) => { + const root = r || path.parse(file).root || '.' + const ret = file === root ? false + : map.has(file) ? map.get(file) + : mapHas(path.dirname(file), root) -const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform -const { resolve, parse } = __webpack_require__(/*! path */ "path") -const pathArg = path => { - if (/\0/.test(path)) { - // simulate same failure that node raises - throw Object.assign( - new TypeError('path must be a string without null bytes'), - { - path, - code: 'ERR_INVALID_ARG_VALUE', - } - ) + map.set(file, ret) + return ret } - path = resolve(path) - if (platform === 'win32') { - const badWinChars = /[*|"<>?:]/ - const {root} = parse(path) - if (badWinChars.test(path.substr(root.length))) { - throw Object.assign(new Error('Illegal characters in path.'), { - path, - code: 'EINVAL', - }) - } - } + opt.filter = filter + ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file)) + : file => mapHas(stripSlash(file)) +} - return path +const extractFileSync = opt => { + const u = new Unpack.Sync(opt) + + const file = opt.file + const stat = fs.statSync(file) + // This trades a zero-byte read() syscall for a stat + // However, it will usually result in less memory allocation + const readSize = opt.maxReadSize || 16 * 1024 * 1024 + const stream = new fsm.ReadStreamSync(file, { + readSize: readSize, + size: stat.size, + }) + stream.pipe(u) } -module.exports = pathArg + +const extractFile = (opt, cb) => { + const u = new Unpack(opt) + const readSize = opt.maxReadSize || 16 * 1024 * 1024 + + const file = opt.file + const p = new Promise((resolve, reject) => { + u.on('error', reject) + u.on('close', resolve) + + // This trades a zero-byte read() syscall for a stat + // However, it will usually result in less memory allocation + fs.stat(file, (er, stat) => { + if (er) + reject(er) + else { + const stream = new fsm.ReadStream(file, { + readSize: readSize, + size: stat.size, + }) + stream.on('error', reject) + stream.pipe(u) + } + }) + }) + return cb ? p.then(cb, cb) : p +} + +const extractSync = opt => new Unpack.Sync(opt) + +const extract = opt => new Unpack(opt) /***/ }), -/***/ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/use-native.js": -/*!******************************************************************************************************!*\ - !*** ./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/lib/use-native.js ***! - \******************************************************************************************************/ +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/get-write-flag.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/get-write-flag.js ***! + \*********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const fs = __webpack_require__(/*! fs */ "fs") - -const version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version -const versArr = version.replace(/^v/, '').split('.') -const hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12 +// Get the appropriate flag to use for creating files +// We use fmap on Windows platforms for files less than +// 512kb. This is a fairly low limit, but avoids making +// things slower in some cases. Since most of what this +// library is used for is extracting tarballs of many +// relatively small files in npm packages and the like, +// it can be a big boost on Windows platforms. +// Only supported in Node v12.9.0 and above. +const platform = process.env.__FAKE_PLATFORM__ || process.platform +const isWindows = platform === 'win32' +const fs = global.__FAKE_TESTING_FS__ || __webpack_require__(/*! fs */ "fs") -const useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir -const useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync +/* istanbul ignore next */ +const { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants -module.exports = {useNative, useNativeSync} +const fMapEnabled = isWindows && !!UV_FS_O_FILEMAP +const fMapLimit = 512 * 1024 +const fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY +module.exports = !fMapEnabled ? () => 'w' + : size => size < fMapLimit ? fMapFlag : 'w' /***/ }), -/***/ "./.yarn/cache/ms-npm-2.1.2-ec0c1512ff-673cdb2c31.zip/node_modules/ms/index.js": -/*!*************************************************************************************!*\ - !*** ./.yarn/cache/ms-npm-2.1.2-ec0c1512ff-673cdb2c31.zip/node_modules/ms/index.js ***! - \*************************************************************************************/ -/***/ ((module) => { +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/header.js": +/*!*************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/header.js ***! + \*************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -/** - * Helpers. - */ +"use strict"; -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var w = d * 7; -var y = d * 365.25; +// parse a 512-byte header block to a data object, or vice-versa +// encode returns `true` if a pax extended header is needed, because +// the data could not be faithfully encoded in a simple header. +// (Also, check header.needPax to see if it needs a pax header.) -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ +const types = __webpack_require__(/*! ./types.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/types.js") +const pathModule = (__webpack_require__(/*! path */ "path").posix) +const large = __webpack_require__(/*! ./large-numbers.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/large-numbers.js") -module.exports = function(val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; +const SLURP = Symbol('slurp') +const TYPE = Symbol('type') -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ +class Header { + constructor (data, off, ex, gex) { + this.cksumValid = false + this.needPax = false + this.nullBlock = false -function parse(str) { - str = String(str); - if (str.length > 100) { - return; + this.block = null + this.path = null + this.mode = null + this.uid = null + this.gid = null + this.size = null + this.mtime = null + this.cksum = null + this[TYPE] = '0' + this.linkpath = null + this.uname = null + this.gname = null + this.devmaj = 0 + this.devmin = 0 + this.atime = null + this.ctime = null + + if (Buffer.isBuffer(data)) + this.decode(data, off || 0, ex, gex) + else if (data) + this.set(data) } - var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'weeks': - case 'week': - case 'w': - return n * w; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ + decode (buf, off, ex, gex) { + if (!off) + off = 0 -function fmtShort(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; - } - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; - } - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; - } - if (msAbs >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} + if (!buf || !(buf.length >= off + 512)) + throw new Error('need 512 bytes for header') -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ + this.path = decString(buf, off, 100) + this.mode = decNumber(buf, off + 100, 8) + this.uid = decNumber(buf, off + 108, 8) + this.gid = decNumber(buf, off + 116, 8) + this.size = decNumber(buf, off + 124, 12) + this.mtime = decDate(buf, off + 136, 12) + this.cksum = decNumber(buf, off + 148, 12) -function fmtLong(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); - } - return ms + ' ms'; -} + // if we have extended or global extended headers, apply them now + // See https://github.com/npm/node-tar/pull/187 + this[SLURP](ex) + this[SLURP](gex, true) -/** - * Pluralization helper. - */ + // old tar versions marked dirs as a file with a trailing / + this[TYPE] = decString(buf, off + 156, 1) + if (this[TYPE] === '') + this[TYPE] = '0' + if (this[TYPE] === '0' && this.path.substr(-1) === '/') + this[TYPE] = '5' -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} + // tar implementations sometimes incorrectly put the stat(dir).size + // as the size in the tarball, even though Directory entries are + // not able to have any body at all. In the very rare chance that + // it actually DOES have a body, we weren't going to do anything with + // it anyway, and it'll just be a warning about an invalid header. + if (this[TYPE] === '5') + this.size = 0 + this.linkpath = decString(buf, off + 157, 100) + if (buf.slice(off + 257, off + 265).toString() === 'ustar\u000000') { + this.uname = decString(buf, off + 265, 32) + this.gname = decString(buf, off + 297, 32) + this.devmaj = decNumber(buf, off + 329, 8) + this.devmin = decNumber(buf, off + 337, 8) + if (buf[off + 475] !== 0) { + // definitely a prefix, definitely >130 chars. + const prefix = decString(buf, off + 345, 155) + this.path = prefix + '/' + this.path + } else { + const prefix = decString(buf, off + 345, 130) + if (prefix) + this.path = prefix + '/' + this.path + this.atime = decDate(buf, off + 476, 12) + this.ctime = decDate(buf, off + 488, 12) + } + } -/***/ }), + let sum = 8 * 0x20 + for (let i = off; i < off + 148; i++) + sum += buf[i] -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/comparator.js": -/*!**********************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/comparator.js ***! - \**********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + for (let i = off + 156; i < off + 512; i++) + sum += buf[i] -const ANY = Symbol('SemVer ANY') -// hoisted class for cyclic dependency -class Comparator { - static get ANY () { - return ANY + this.cksumValid = sum === this.cksum + if (this.cksum === null && sum === 8 * 0x20) + this.nullBlock = true } - constructor (comp, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } + + [SLURP] (ex, global) { + for (const k in ex) { + // we slurp in everything except for the path attribute in + // a global extended header, because that's weird. + if (ex[k] !== null && ex[k] !== undefined && + !(global && k === 'path')) + this[k] = ex[k] } + } - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp - } else { - comp = comp.value - } + encode (buf, off) { + if (!buf) { + buf = this.block = Buffer.alloc(512) + off = 0 } - debug('comparator', comp, options) - this.options = options - this.loose = !!options.loose - this.parse(comp) + if (!off) + off = 0 - if (this.semver === ANY) { - this.value = '' - } else { - this.value = this.operator + this.semver.version + if (!(buf.length >= off + 512)) + throw new Error('need 512 bytes for header') + + const prefixSize = this.ctime || this.atime ? 130 : 155 + const split = splitPrefix(this.path || '', prefixSize) + const path = split[0] + const prefix = split[1] + this.needPax = split[2] + + this.needPax = encString(buf, off, 100, path) || this.needPax + this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax + this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax + this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax + this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax + this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax + buf[off + 156] = this[TYPE].charCodeAt(0) + this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax + buf.write('ustar\u000000', off + 257, 8) + this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax + this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax + this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax + this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax + this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax + if (buf[off + 475] !== 0) + this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax + else { + this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax + this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax + this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax } - debug('comp', this) - } + let sum = 8 * 0x20 + for (let i = off; i < off + 148; i++) + sum += buf[i] - parse (comp) { - const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - const m = comp.match(r) + for (let i = off + 156; i < off + 512; i++) + sum += buf[i] - if (!m) { - throw new TypeError(`Invalid comparator: ${comp}`) - } + this.cksum = sum + encNumber(buf, off + 148, 8, this.cksum) + this.cksumValid = true - this.operator = m[1] !== undefined ? m[1] : '' - if (this.operator === '=') { - this.operator = '' - } + return this.needPax + } - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY - } else { - this.semver = new SemVer(m[2], this.options.loose) + set (data) { + for (const i in data) { + if (data[i] !== null && data[i] !== undefined) + this[i] = data[i] } } - toString () { - return this.value + get type () { + return types.name.get(this[TYPE]) || this[TYPE] } - test (version) { - debug('Comparator.test', version, this.options.loose) + get typeKey () { + return this[TYPE] + } - if (this.semver === ANY || version === ANY) { - return true - } + set type (type) { + if (types.code.has(type)) + this[TYPE] = types.code.get(type) + else + this[TYPE] = type + } +} - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } +const splitPrefix = (p, prefixSize) => { + const pathSize = 100 + let pp = p + let prefix = '' + let ret + const root = pathModule.parse(p).root || '.' - return cmp(version, this.operator, this.semver, this.options) - } + if (Buffer.byteLength(pp) < pathSize) + ret = [pp, prefix, false] + else { + // first set prefix to the dir, and path to the base + prefix = pathModule.dirname(pp) + pp = pathModule.basename(pp) - intersects (comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required') - } + do { + // both fit! + if (Buffer.byteLength(pp) <= pathSize && + Buffer.byteLength(prefix) <= prefixSize) + ret = [pp, prefix, false] - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } + // prefix fits in prefix, but path doesn't fit in path + else if (Buffer.byteLength(pp) > pathSize && + Buffer.byteLength(prefix) <= prefixSize) + ret = [pp.substr(0, pathSize - 1), prefix, true] - if (this.operator === '') { - if (this.value === '') { - return true - } - return new Range(comp.value, options).test(this.value) - } else if (comp.operator === '') { - if (comp.value === '') { - return true + else { + // make path take a bit from prefix + pp = pathModule.join(pathModule.basename(prefix), pp) + prefix = pathModule.dirname(prefix) } - return new Range(this.value, options).test(comp.semver) - } - - const sameDirectionIncreasing = - (this.operator === '>=' || this.operator === '>') && - (comp.operator === '>=' || comp.operator === '>') - const sameDirectionDecreasing = - (this.operator === '<=' || this.operator === '<') && - (comp.operator === '<=' || comp.operator === '<') - const sameSemVer = this.semver.version === comp.semver.version - const differentDirectionsInclusive = - (this.operator === '>=' || this.operator === '<=') && - (comp.operator === '>=' || comp.operator === '<=') - const oppositeDirectionsLessThan = - cmp(this.semver, '<', comp.semver, options) && - (this.operator === '>=' || this.operator === '>') && - (comp.operator === '<=' || comp.operator === '<') - const oppositeDirectionsGreaterThan = - cmp(this.semver, '>', comp.semver, options) && - (this.operator === '<=' || this.operator === '<') && - (comp.operator === '>=' || comp.operator === '>') + } while (prefix !== root && !ret) - return ( - sameDirectionIncreasing || - sameDirectionDecreasing || - (sameSemVer && differentDirectionsInclusive) || - oppositeDirectionsLessThan || - oppositeDirectionsGreaterThan - ) + // at this point, found no resolution, just truncate + if (!ret) + ret = [p.substr(0, pathSize - 1), '', true] } + return ret } -module.exports = Comparator +const decString = (buf, off, size) => + buf.slice(off, off + size).toString('utf8').replace(/\0.*/, '') -const {re, t} = __webpack_require__(/*! ../internal/re */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/re.js") -const cmp = __webpack_require__(/*! ../functions/cmp */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/cmp.js") -const debug = __webpack_require__(/*! ../internal/debug */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/debug.js") -const SemVer = __webpack_require__(/*! ./semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") -const Range = __webpack_require__(/*! ./range */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/range.js") +const decDate = (buf, off, size) => + numToDate(decNumber(buf, off, size)) +const numToDate = num => num === null ? null : new Date(num * 1000) -/***/ }), +const decNumber = (buf, off, size) => + buf[off] & 0x80 ? large.parse(buf.slice(off, off + size)) + : decSmallNumber(buf, off, size) -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/range.js": -/*!*****************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/range.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +const nanNull = value => isNaN(value) ? null : value -// hoisted class for cyclic dependency -class Range { - constructor (range, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } +const decSmallNumber = (buf, off, size) => + nanNull(parseInt( + buf.slice(off, off + size) + .toString('utf8').replace(/\0.*$/, '').trim(), 8)) - if (range instanceof Range) { - if ( - range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease - ) { - return range - } else { - return new Range(range.raw, options) - } - } +// the maximum encodable as a null-terminated octal, by field size +const MAXNUM = { + 12: 0o77777777777, + 8: 0o7777777, +} - if (range instanceof Comparator) { - // just put it in the set and return - this.raw = range.value - this.set = [[range]] - this.format() - return this - } +const encNumber = (buf, off, size, number) => + number === null ? false : + number > MAXNUM[size] || number < 0 + ? (large.encode(number, buf.slice(off, off + size)), true) + : (encSmallNumber(buf, off, size, number), false) - this.options = options - this.loose = !!options.loose - this.includePrerelease = !!options.includePrerelease +const encSmallNumber = (buf, off, size, number) => + buf.write(octalString(number, size), off, size, 'ascii') - // First, split based on boolean or || - this.raw = range - this.set = range - .split(/\s*\|\|\s*/) - // map the range to a 2d array of comparators - .map(range => this.parseRange(range.trim())) - // throw out any comparator lists that are empty - // this generally means that it was not a valid range, which is allowed - // in loose mode, but will still throw if the WHOLE range is invalid. - .filter(c => c.length) +const octalString = (number, size) => + padOctal(Math.floor(number).toString(8), size) - if (!this.set.length) { - throw new TypeError(`Invalid SemVer Range: ${range}`) - } +const padOctal = (string, size) => + (string.length === size - 1 ? string + : new Array(size - string.length - 1).join('0') + string + ' ') + '\0' - this.format() - } +const encDate = (buf, off, size, date) => + date === null ? false : + encNumber(buf, off, size, date.getTime() / 1000) - format () { - this.range = this.set - .map((comps) => { - return comps.join(' ').trim() - }) - .join('||') - .trim() - return this.range - } +// enough to fill the longest string we've got +const NULLS = new Array(156).join('\0') +// pad with nulls, return true if it's longer or non-ascii +const encString = (buf, off, size, string) => + string === null ? false : + (buf.write(string + NULLS, off, size, 'utf8'), + string.length !== Buffer.byteLength(string) || string.length > size) - toString () { - return this.range - } +module.exports = Header - parseRange (range) { - const loose = this.options.loose - range = range.trim() - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] - range = range.replace(hr, hyphenReplace) - debug('hyphen replace', range) - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) - debug('comparator trim', range, re[t.COMPARATORTRIM]) - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[t.TILDETRIM], tildeTrimReplace) +/***/ }), - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[t.CARETTRIM], caretTrimReplace) +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/high-level-opt.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/high-level-opt.js ***! + \*********************************************************************************************************/ +/***/ ((module) => { - // normalize spaces - range = range.split(/\s+/).join(' ') +"use strict"; - // At this point, the range is completely trimmed and - // ready to be split into comparators. - const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - return range - .split(' ') - .map(comp => parseComparator(comp, this.options)) - .join(' ') - .split(/\s+/) - // in loose mode, throw out any that are not valid comparators - .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true) - .map(comp => new Comparator(comp, this.options)) - } +// turn tar(1) style args like `C` into the more verbose things like `cwd` - intersects (range, options) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required') - } +const argmap = new Map([ + ['C', 'cwd'], + ['f', 'file'], + ['z', 'gzip'], + ['P', 'preservePaths'], + ['U', 'unlink'], + ['strip-components', 'strip'], + ['stripComponents', 'strip'], + ['keep-newer', 'newer'], + ['keepNewer', 'newer'], + ['keep-newer-files', 'newer'], + ['keepNewerFiles', 'newer'], + ['k', 'keep'], + ['keep-existing', 'keep'], + ['keepExisting', 'keep'], + ['m', 'noMtime'], + ['no-mtime', 'noMtime'], + ['p', 'preserveOwner'], + ['L', 'follow'], + ['h', 'follow'], +]) - return this.set.some((thisComparators) => { - return ( - isSatisfiable(thisComparators, options) && - range.set.some((rangeComparators) => { - return ( - isSatisfiable(rangeComparators, options) && - thisComparators.every((thisComparator) => { - return rangeComparators.every((rangeComparator) => { - return thisComparator.intersects(rangeComparator, options) - }) - }) - ) - }) - ) - }) - } +module.exports = opt => opt ? Object.keys(opt).map(k => [ + argmap.has(k) ? argmap.get(k) : k, opt[k], +]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {} - // if ANY of the sets match ALL of its comparators, then pass - test (version) { - if (!version) { - return false - } - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } +/***/ }), - for (let i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true - } +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/large-numbers.js": +/*!********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/large-numbers.js ***! + \********************************************************************************************************/ +/***/ ((module) => { + +"use strict"; + +// Tar can encode large and negative numbers using a leading byte of +// 0xff for negative, and 0x80 for positive. + +const encode = (num, buf) => { + if (!Number.isSafeInteger(num)) + // The number is so large that javascript cannot represent it with integer + // precision. + throw Error('cannot encode number outside of javascript safe integer range') + else if (num < 0) + encodeNegative(num, buf) + else + encodePositive(num, buf) + return buf +} + +const encodePositive = (num, buf) => { + buf[0] = 0x80 + + for (var i = buf.length; i > 1; i--) { + buf[i - 1] = num & 0xff + num = Math.floor(num / 0x100) + } +} + +const encodeNegative = (num, buf) => { + buf[0] = 0xff + var flipped = false + num = num * -1 + for (var i = buf.length; i > 1; i--) { + var byte = num & 0xff + num = Math.floor(num / 0x100) + if (flipped) + buf[i - 1] = onesComp(byte) + else if (byte === 0) + buf[i - 1] = 0 + else { + flipped = true + buf[i - 1] = twosComp(byte) } - return false } } -module.exports = Range -const Comparator = __webpack_require__(/*! ./comparator */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/comparator.js") -const debug = __webpack_require__(/*! ../internal/debug */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/debug.js") -const SemVer = __webpack_require__(/*! ./semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") -const { - re, - t, - comparatorTrimReplace, - tildeTrimReplace, - caretTrimReplace -} = __webpack_require__(/*! ../internal/re */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/re.js") +const parse = (buf) => { + const pre = buf[0] + const value = pre === 0x80 ? pos(buf.slice(1, buf.length)) + : pre === 0xff ? twos(buf) + : null + if (value === null) + throw Error('invalid base256 encoding') -// take a set of comparators and determine whether there -// exists a version which can satisfy it -const isSatisfiable = (comparators, options) => { - let result = true - const remainingComparators = comparators.slice() - let testComparator = remainingComparators.pop() + if (!Number.isSafeInteger(value)) + // The number is so large that javascript cannot represent it with integer + // precision. + throw Error('parsed number outside of javascript safe integer range') - while (result && remainingComparators.length) { - result = remainingComparators.every((otherComparator) => { - return testComparator.intersects(otherComparator, options) - }) + return value +} - testComparator = remainingComparators.pop() +const twos = (buf) => { + var len = buf.length + var sum = 0 + var flipped = false + for (var i = len - 1; i > -1; i--) { + var byte = buf[i] + var f + if (flipped) + f = onesComp(byte) + else if (byte === 0) + f = byte + else { + flipped = true + f = twosComp(byte) + } + if (f !== 0) + sum -= f * Math.pow(256, len - i - 1) } + return sum +} - return result +const pos = (buf) => { + var len = buf.length + var sum = 0 + for (var i = len - 1; i > -1; i--) { + var byte = buf[i] + if (byte !== 0) + sum += byte * Math.pow(256, len - i - 1) + } + return sum } -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -const parseComparator = (comp, options) => { - debug('comp', comp, options) - comp = replaceCarets(comp, options) - debug('caret', comp) - comp = replaceTildes(comp, options) - debug('tildes', comp) - comp = replaceXRanges(comp, options) - debug('xrange', comp) - comp = replaceStars(comp, options) - debug('stars', comp) - return comp +const onesComp = byte => (0xff ^ byte) & 0xff + +const twosComp = byte => ((0xff ^ byte) + 1) & 0xff + +module.exports = { + encode, + parse, } -const isX = id => !id || id.toLowerCase() === 'x' || id === '*' -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 -const replaceTildes = (comp, options) => - comp.trim().split(/\s+/).map((comp) => { - return replaceTilde(comp, options) - }).join(' ') +/***/ }), -const replaceTilde = (comp, options) => { - const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] - return comp.replace(r, (_, M, m, p, pr) => { - debug('tilde', comp, _, M, m, p, pr) - let ret +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/list.js": +/*!***********************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/list.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = `>=${M}.0.0 <${+M + 1}.0.0` - } else if (isX(p)) { - // ~1.2 == >=1.2.0 <1.3.0 - ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0` - } else if (pr) { - debug('replaceTilde pr', pr) - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${+m + 1}.0` - } else { - // ~1.2.3 == >=1.2.3 <1.3.0 - ret = `>=${M}.${m}.${p - } <${M}.${+m + 1}.0` - } +"use strict"; - debug('tilde return', ret) - return ret - }) -} -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 -// ^1.2.3 --> >=1.2.3 <2.0.0 -// ^1.2.0 --> >=1.2.0 <2.0.0 -const replaceCarets = (comp, options) => - comp.trim().split(/\s+/).map((comp) => { - return replaceCaret(comp, options) - }).join(' ') +// XXX: This shares a lot in common with extract.js +// maybe some DRY opportunity here? -const replaceCaret = (comp, options) => { - debug('caret', comp, options) - const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] - return comp.replace(r, (_, M, m, p, pr) => { - debug('caret', comp, _, M, m, p, pr) - let ret +// tar -t +const hlo = __webpack_require__(/*! ./high-level-opt.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/high-level-opt.js") +const Parser = __webpack_require__(/*! ./parse.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/parse.js") +const fs = __webpack_require__(/*! fs */ "fs") +const fsm = __webpack_require__(/*! fs-minipass */ "../../../.yarn/berry/cache/fs-minipass-npm-2.1.0-501ef87306-9.zip/node_modules/fs-minipass/index.js") +const path = __webpack_require__(/*! path */ "path") +const stripSlash = __webpack_require__(/*! ./strip-trailing-slashes.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/strip-trailing-slashes.js") - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = `>=${M}.0.0 <${+M + 1}.0.0` - } else if (isX(p)) { - if (M === '0') { - ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0` - } else { - ret = `>=${M}.${m}.0 <${+M + 1}.0.0` - } - } else if (pr) { - debug('replaceCaret pr', pr) - if (M === '0') { - if (m === '0') { - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${m}.${+p + 1}` - } else { - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${+m + 1}.0` - } - } else { - ret = `>=${M}.${m}.${p}-${pr - } <${+M + 1}.0.0` - } - } else { - debug('no pr') - if (M === '0') { - if (m === '0') { - ret = `>=${M}.${m}.${p - } <${M}.${m}.${+p + 1}` - } else { - ret = `>=${M}.${m}.${p - } <${M}.${+m + 1}.0` - } - } else { - ret = `>=${M}.${m}.${p - } <${+M + 1}.0.0` - } - } +module.exports = (opt_, files, cb) => { + if (typeof opt_ === 'function') + cb = opt_, files = null, opt_ = {} + else if (Array.isArray(opt_)) + files = opt_, opt_ = {} - debug('caret return', ret) - return ret - }) -} + if (typeof files === 'function') + cb = files, files = null -const replaceXRanges = (comp, options) => { - debug('replaceXRanges', comp, options) - return comp.split(/\s+/).map((comp) => { - return replaceXRange(comp, options) - }).join(' ') -} + if (!files) + files = [] + else + files = Array.from(files) -const replaceXRange = (comp, options) => { - comp = comp.trim() - const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] - return comp.replace(r, (ret, gtlt, M, m, p, pr) => { - debug('xRange', comp, ret, gtlt, M, m, p, pr) - const xM = isX(M) - const xm = xM || isX(m) - const xp = xm || isX(p) - const anyX = xp + const opt = hlo(opt_) - if (gtlt === '=' && anyX) { - gtlt = '' - } + if (opt.sync && typeof cb === 'function') + throw new TypeError('callback not supported for sync tar functions') - // if we're including prereleases in the match, then we need - // to fix this to -0, the lowest possible prerelease value - pr = options.includePrerelease ? '-0' : '' + if (!opt.file && typeof cb === 'function') + throw new TypeError('callback only supported with file option') - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0-0' - } else { - // nothing is forbidden - ret = '*' - } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0 - } - p = 0 - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - gtlt = '>=' - if (xm) { - M = +M + 1 - m = 0 - p = 0 - } else { - m = +m + 1 - p = 0 - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<' - if (xm) { - M = +M + 1 - } else { - m = +m + 1 - } - } - - ret = `${gtlt + M}.${m}.${p}${pr}` - } else if (xm) { - ret = `>=${M}.0.0${pr} <${+M + 1}.0.0${pr}` - } else if (xp) { - ret = `>=${M}.${m}.0${pr - } <${M}.${+m + 1}.0${pr}` - } + if (files.length) + filesFilter(opt, files) - debug('xRange return', ret) + if (!opt.noResume) + onentryFunction(opt) - return ret - }) + return opt.file && opt.sync ? listFileSync(opt) + : opt.file ? listFile(opt, cb) + : list(opt) } -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -const replaceStars = (comp, options) => { - debug('replaceStars', comp, options) - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[t.STAR], '') +const onentryFunction = opt => { + const onentry = opt.onentry + opt.onentry = onentry ? e => { + onentry(e) + e.resume() + } : e => e.resume() } -// This function is passed to string.replace(re[t.HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0 -const hyphenReplace = ($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) => { - if (isX(fM)) { - from = '' - } else if (isX(fm)) { - from = `>=${fM}.0.0` - } else if (isX(fp)) { - from = `>=${fM}.${fm}.0` - } else { - from = `>=${from}` - } +// construct a filter that limits the file entries listed +// include child entries if a dir is included +const filesFilter = (opt, files) => { + const map = new Map(files.map(f => [stripSlash(f), true])) + const filter = opt.filter - if (isX(tM)) { - to = '' - } else if (isX(tm)) { - to = `<${+tM + 1}.0.0` - } else if (isX(tp)) { - to = `<${tM}.${+tm + 1}.0` - } else if (tpr) { - to = `<=${tM}.${tm}.${tp}-${tpr}` - } else { - to = `<=${to}` + const mapHas = (file, r) => { + const root = r || path.parse(file).root || '.' + const ret = file === root ? false + : map.has(file) ? map.get(file) + : mapHas(path.dirname(file), root) + + map.set(file, ret) + return ret } - return (`${from} ${to}`).trim() + opt.filter = filter + ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file)) + : file => mapHas(stripSlash(file)) } -const testSet = (set, version, options) => { - for (let i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false +const listFileSync = opt => { + const p = list(opt) + const file = opt.file + let threw = true + let fd + try { + const stat = fs.statSync(file) + const readSize = opt.maxReadSize || 16 * 1024 * 1024 + if (stat.size < readSize) + p.end(fs.readFileSync(file)) + else { + let pos = 0 + const buf = Buffer.allocUnsafe(readSize) + fd = fs.openSync(file, 'r') + while (pos < stat.size) { + const bytesRead = fs.readSync(fd, buf, 0, readSize, pos) + pos += bytesRead + p.write(buf.slice(0, bytesRead)) + } + p.end() + } + threw = false + } finally { + if (threw && fd) { + try { + fs.closeSync(fd) + } catch (er) {} } } +} - if (version.prerelease.length && !options.includePrerelease) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (let i = 0; i < set.length; i++) { - debug(set[i].semver) - if (set[i].semver === Comparator.ANY) { - continue - } - - if (set[i].semver.prerelease.length > 0) { - const allowed = set[i].semver - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) { - return true - } - } - } +const listFile = (opt, cb) => { + const parse = new Parser(opt) + const readSize = opt.maxReadSize || 16 * 1024 * 1024 - // Version has a -pre, but it's not one of the ones we like. - return false - } + const file = opt.file + const p = new Promise((resolve, reject) => { + parse.on('error', reject) + parse.on('end', resolve) - return true + fs.stat(file, (er, stat) => { + if (er) + reject(er) + else { + const stream = new fsm.ReadStream(file, { + readSize: readSize, + size: stat.size, + }) + stream.on('error', reject) + stream.pipe(parse) + } + }) + }) + return cb ? p.then(cb, cb) : p } +const list = opt => new Parser(opt) + /***/ }), -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js": -/*!******************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js ***! - \******************************************************************************************************/ +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/mkdir.js": +/*!************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/mkdir.js ***! + \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const debug = __webpack_require__(/*! ../internal/debug */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/debug.js") -const { MAX_LENGTH, MAX_SAFE_INTEGER } = __webpack_require__(/*! ../internal/constants */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/constants.js") -const { re, t } = __webpack_require__(/*! ../internal/re */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/re.js") +"use strict"; -const { compareIdentifiers } = __webpack_require__(/*! ../internal/identifiers */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/identifiers.js") -class SemVer { - constructor (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - if (version instanceof SemVer) { - if (version.loose === !!options.loose && - version.includePrerelease === !!options.includePrerelease) { - return version - } else { - version = version.version - } - } else if (typeof version !== 'string') { - throw new TypeError(`Invalid Version: ${version}`) - } +// wrapper around mkdirp for tar's needs. - if (version.length > MAX_LENGTH) { - throw new TypeError( - `version is longer than ${MAX_LENGTH} characters` - ) - } +// TODO: This should probably be a class, not functionally +// passing around state in a gazillion args. - debug('SemVer', version, options) - this.options = options - this.loose = !!options.loose - // this isn't actually relevant for versions, but keep it so that we - // don't run into trouble passing this.options around. - this.includePrerelease = !!options.includePrerelease +const mkdirp = __webpack_require__(/*! mkdirp */ "../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/index.js") +const fs = __webpack_require__(/*! fs */ "fs") +const path = __webpack_require__(/*! path */ "path") +const chownr = __webpack_require__(/*! chownr */ "../../../.yarn/berry/cache/chownr-npm-2.0.0-638f1c9c61-9.zip/node_modules/chownr/chownr.js") +const normPath = __webpack_require__(/*! ./normalize-windows-path.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/normalize-windows-path.js") - const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) +class SymlinkError extends Error { + constructor (symlink, path) { + super('Cannot extract through symbolic link') + this.path = path + this.symlink = symlink + } - if (!m) { - throw new TypeError(`Invalid Version: ${version}`) - } + get name () { + return 'SylinkError' + } +} - this.raw = version +class CwdError extends Error { + constructor (path, code) { + super(code + ': Cannot cd into \'' + path + '\'') + this.path = path + this.code = code + } - // these are actually numbers - this.major = +m[1] - this.minor = +m[2] - this.patch = +m[3] + get name () { + return 'CwdError' + } +} - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError('Invalid major version') - } +const cGet = (cache, key) => cache.get(normPath(key)) +const cSet = (cache, key, val) => cache.set(normPath(key), val) - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError('Invalid minor version') - } +const checkCwd = (dir, cb) => { + fs.stat(dir, (er, st) => { + if (er || !st.isDirectory()) + er = new CwdError(dir, er && er.code || 'ENOTDIR') + cb(er) + }) +} - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError('Invalid patch version') - } +module.exports = (dir, opt, cb) => { + dir = normPath(dir) - // numberify any prerelease numeric ids - if (!m[4]) { - this.prerelease = [] - } else { - this.prerelease = m[4].split('.').map((id) => { - if (/^[0-9]+$/.test(id)) { - const num = +id - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num - } - } - return id - }) - } + // if there's any overlap between mask and mode, + // then we'll need an explicit chmod + const umask = opt.umask + const mode = opt.mode | 0o0700 + const needChmod = (mode & umask) !== 0 - this.build = m[5] ? m[5].split('.') : [] - this.format() - } + const uid = opt.uid + const gid = opt.gid + const doChown = typeof uid === 'number' && + typeof gid === 'number' && + (uid !== opt.processUid || gid !== opt.processGid) - format () { - this.version = `${this.major}.${this.minor}.${this.patch}` - if (this.prerelease.length) { - this.version += `-${this.prerelease.join('.')}` + const preserve = opt.preserve + const unlink = opt.unlink + const cache = opt.cache + const cwd = normPath(opt.cwd) + + const done = (er, created) => { + if (er) + cb(er) + else { + cSet(cache, dir, true) + if (created && doChown) + chownr(created, uid, gid, er => done(er)) + else if (needChmod) + fs.chmod(dir, mode, cb) + else + cb() } - return this.version } - toString () { - return this.version + if (cache && cGet(cache, dir) === true) + return done() + + if (dir === cwd) + return checkCwd(dir, done) + + if (preserve) + return mkdirp(dir, {mode}).then(made => done(null, made), done) + + const sub = normPath(path.relative(cwd, dir)) + const parts = sub.split('/') + mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done) +} + +const mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => { + if (!parts.length) + return cb(null, created) + const p = parts.shift() + const part = normPath(path.resolve(base + '/' + p)) + if (cGet(cache, part)) + return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb) + fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb)) +} + +const onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => { + if (er) { + fs.lstat(part, (statEr, st) => { + if (statEr) { + statEr.path = statEr.path && normPath(statEr.path) + cb(statEr) + } else if (st.isDirectory()) + mkdir_(part, parts, mode, cache, unlink, cwd, created, cb) + else if (unlink) { + fs.unlink(part, er => { + if (er) + return cb(er) + fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb)) + }) + } else if (st.isSymbolicLink()) + return cb(new SymlinkError(part, part + '/' + parts.join('/'))) + else + cb(er) + }) + } else { + created = created || part + mkdir_(part, parts, mode, cache, unlink, cwd, created, cb) } +} - compare (other) { - debug('SemVer.compare', this.version, this.options, other) - if (!(other instanceof SemVer)) { - if (typeof other === 'string' && other === this.version) { - return 0 - } - other = new SemVer(other, this.options) - } +const checkCwdSync = dir => { + let ok = false + let code = 'ENOTDIR' + try { + ok = fs.statSync(dir).isDirectory() + } catch (er) { + code = er.code + } finally { + if (!ok) + throw new CwdError(dir, code) + } +} - if (other.version === this.version) { - return 0 - } +module.exports.sync = (dir, opt) => { + dir = normPath(dir) + // if there's any overlap between mask and mode, + // then we'll need an explicit chmod + const umask = opt.umask + const mode = opt.mode | 0o0700 + const needChmod = (mode & umask) !== 0 - return this.compareMain(other) || this.comparePre(other) + const uid = opt.uid + const gid = opt.gid + const doChown = typeof uid === 'number' && + typeof gid === 'number' && + (uid !== opt.processUid || gid !== opt.processGid) + + const preserve = opt.preserve + const unlink = opt.unlink + const cache = opt.cache + const cwd = normPath(opt.cwd) + + const done = (created) => { + cSet(cache, dir, true) + if (created && doChown) + chownr.sync(created, uid, gid) + if (needChmod) + fs.chmodSync(dir, mode) } - compareMain (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } + if (cache && cGet(cache, dir) === true) + return done() - return ( - compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch) - ) + if (dir === cwd) { + checkCwdSync(cwd) + return done() } - comparePre (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } + if (preserve) + return done(mkdirp.sync(dir, mode)) - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) { - return -1 - } else if (!this.prerelease.length && other.prerelease.length) { - return 1 - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0 - } + const sub = normPath(path.relative(cwd, dir)) + const parts = sub.split('/') + let created = null + for (let p = parts.shift(), part = cwd; + p && (part += '/' + p); + p = parts.shift()) { + part = normPath(path.resolve(part)) + if (cGet(cache, part)) + continue - let i = 0 - do { - const a = this.prerelease[i] - const b = other.prerelease[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { + try { + fs.mkdirSync(part, mode) + created = created || part + cSet(cache, part, true) + } catch (er) { + const st = fs.lstatSync(part) + if (st.isDirectory()) { + cSet(cache, part, true) continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) + } else if (unlink) { + fs.unlinkSync(part) + fs.mkdirSync(part, mode) + created = created || part + cSet(cache, part, true) + continue + } else if (st.isSymbolicLink()) + return new SymlinkError(part, part + '/' + parts.join('/')) + } } - compareBuild (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } + return done(created) +} - let i = 0 - do { - const a = this.build[i] - const b = other.build[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) + +/***/ }), + +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/mode-fix.js": +/*!***************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/mode-fix.js ***! + \***************************************************************************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = (mode, isDir, portable) => { + mode &= 0o7777 + + // in portable mode, use the minimum reasonable umask + // if this system creates files with 0o664 by default + // (as some linux distros do), then we'll write the + // archive with 0o644 instead. Also, don't ever create + // a file that is not readable/writable by the owner. + if (portable) + mode = (mode | 0o600) & ~0o22 + + // if dirs are readable, then they should be listable + if (isDir) { + if (mode & 0o400) + mode |= 0o100 + if (mode & 0o40) + mode |= 0o10 + if (mode & 0o4) + mode |= 0o1 } + return mode +} - // preminor will bump the version up to the next minor release, and immediately - // down to pre-release. premajor and prepatch work the same way. - inc (release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0 - this.patch = 0 - this.minor = 0 - this.major++ - this.inc('pre', identifier) - break - case 'preminor': - this.prerelease.length = 0 - this.patch = 0 - this.minor++ - this.inc('pre', identifier) - break - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0 - this.inc('patch', identifier) - this.inc('pre', identifier) - break - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) { - this.inc('patch', identifier) - } - this.inc('pre', identifier) - break - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if ( - this.minor !== 0 || - this.patch !== 0 || - this.prerelease.length === 0 - ) { - this.major++ - } - this.minor = 0 - this.patch = 0 - this.prerelease = [] - break - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++ - } - this.patch = 0 - this.prerelease = [] - break - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) { - this.patch++ - } - this.prerelease = [] - break - // This probably shouldn't be used publicly. - // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) { - this.prerelease = [0] - } else { - let i = this.prerelease.length - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++ - i = -2 - } - } - if (i === -1) { - // didn't increment anything - this.prerelease.push(0) - } - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) { - this.prerelease = [identifier, 0] - } - } else { - this.prerelease = [identifier, 0] - } - } - break +/***/ }), - default: - throw new Error(`invalid increment argument: ${release}`) - } - this.format() - this.raw = this.version - return this - } -} +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/normalize-unicode.js": +/*!************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/normalize-unicode.js ***! + \************************************************************************************************************/ +/***/ ((module) => { -module.exports = SemVer +// warning: extremely hot code path. +// This has been meticulously optimized for use +// within npm install on large package trees. +// Do not edit without careful benchmarking. +const normalizeCache = Object.create(null) +const {hasOwnProperty} = Object.prototype +module.exports = s => { + if (!hasOwnProperty.call(normalizeCache, s)) + normalizeCache[s] = s.normalize('NFKD') + return normalizeCache[s] +} /***/ }), -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/clean.js": -/*!*******************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/clean.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/normalize-windows-path.js": +/*!*****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/normalize-windows-path.js ***! + \*****************************************************************************************************************/ +/***/ ((module) => { -const parse = __webpack_require__(/*! ./parse */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/parse.js") -const clean = (version, options) => { - const s = parse(version.trim().replace(/^[=v]+/, ''), options) - return s ? s.version : null -} -module.exports = clean +// on windows, either \ or / are valid directory separators. +// on unix, \ is a valid character in filenames. +// so, on windows, and only on windows, we replace all \ chars with /, +// so that we can use / as our one and only directory separator char. + +const platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform +module.exports = platform !== 'win32' ? p => p + : p => p && p.replace(/\\/g, '/') /***/ }), -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/cmp.js": -/*!*****************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/cmp.js ***! - \*****************************************************************************************************/ +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/pack.js": +/*!***********************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/pack.js ***! + \***********************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const eq = __webpack_require__(/*! ./eq */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/eq.js") -const neq = __webpack_require__(/*! ./neq */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/neq.js") -const gt = __webpack_require__(/*! ./gt */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/gt.js") -const gte = __webpack_require__(/*! ./gte */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/gte.js") -const lt = __webpack_require__(/*! ./lt */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/lt.js") -const lte = __webpack_require__(/*! ./lte */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/lte.js") +"use strict"; -const cmp = (a, op, b, loose) => { - switch (op) { - case '===': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a === b - case '!==': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a !== b +// A readable tar stream creator +// Technically, this is a transform stream that you write paths into, +// and tar format comes out of. +// The `add()` method is like `write()` but returns this, +// and end() return `this` as well, so you can +// do `new Pack(opt).add('files').add('dir').end().pipe(output) +// You could also do something like: +// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar')) - case '': - case '=': - case '==': - return eq(a, b, loose) +class PackJob { + constructor (path, absolute) { + this.path = path || './' + this.absolute = absolute + this.entry = null + this.stat = null + this.readdir = null + this.pending = false + this.ignore = false + this.piped = false + } +} - case '!=': - return neq(a, b, loose) +const MiniPass = __webpack_require__(/*! minipass */ "../../../.yarn/berry/cache/minipass-npm-3.3.4-6cf48a6c5e-9.zip/node_modules/minipass/index.js") +const zlib = __webpack_require__(/*! minizlib */ "../../../.yarn/berry/cache/minizlib-npm-2.1.2-ea89cd0cfb-9.zip/node_modules/minizlib/index.js") +const ReadEntry = __webpack_require__(/*! ./read-entry.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/read-entry.js") +const WriteEntry = __webpack_require__(/*! ./write-entry.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/write-entry.js") +const WriteEntrySync = WriteEntry.Sync +const WriteEntryTar = WriteEntry.Tar +const Yallist = __webpack_require__(/*! yallist */ "../../../.yarn/berry/cache/yallist-npm-4.0.0-b493d9e907-9.zip/node_modules/yallist/yallist.js") +const EOF = Buffer.alloc(1024) +const ONSTAT = Symbol('onStat') +const ENDED = Symbol('ended') +const QUEUE = Symbol('queue') +const CURRENT = Symbol('current') +const PROCESS = Symbol('process') +const PROCESSING = Symbol('processing') +const PROCESSJOB = Symbol('processJob') +const JOBS = Symbol('jobs') +const JOBDONE = Symbol('jobDone') +const ADDFSENTRY = Symbol('addFSEntry') +const ADDTARENTRY = Symbol('addTarEntry') +const STAT = Symbol('stat') +const READDIR = Symbol('readdir') +const ONREADDIR = Symbol('onreaddir') +const PIPE = Symbol('pipe') +const ENTRY = Symbol('entry') +const ENTRYOPT = Symbol('entryOpt') +const WRITEENTRYCLASS = Symbol('writeEntryClass') +const WRITE = Symbol('write') +const ONDRAIN = Symbol('ondrain') - case '>': - return gt(a, b, loose) +const fs = __webpack_require__(/*! fs */ "fs") +const path = __webpack_require__(/*! path */ "path") +const warner = __webpack_require__(/*! ./warn-mixin.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/warn-mixin.js") +const normPath = __webpack_require__(/*! ./normalize-windows-path.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/normalize-windows-path.js") - case '>=': - return gte(a, b, loose) +const Pack = warner(class Pack extends MiniPass { + constructor (opt) { + super(opt) + opt = opt || Object.create(null) + this.opt = opt + this.file = opt.file || '' + this.cwd = opt.cwd || process.cwd() + this.maxReadSize = opt.maxReadSize + this.preservePaths = !!opt.preservePaths + this.strict = !!opt.strict + this.noPax = !!opt.noPax + this.prefix = normPath(opt.prefix || '') + this.linkCache = opt.linkCache || new Map() + this.statCache = opt.statCache || new Map() + this.readdirCache = opt.readdirCache || new Map() - case '<': - return lt(a, b, loose) + this[WRITEENTRYCLASS] = WriteEntry + if (typeof opt.onwarn === 'function') + this.on('warn', opt.onwarn) - case '<=': - return lte(a, b, loose) + this.portable = !!opt.portable + this.zip = null + if (opt.gzip) { + if (typeof opt.gzip !== 'object') + opt.gzip = {} + if (this.portable) + opt.gzip.portable = true + this.zip = new zlib.Gzip(opt.gzip) + this.zip.on('data', chunk => super.write(chunk)) + this.zip.on('end', _ => super.end()) + this.zip.on('drain', _ => this[ONDRAIN]()) + this.on('resume', _ => this.zip.resume()) + } else + this.on('drain', this[ONDRAIN]) - default: - throw new TypeError(`Invalid operator: ${op}`) - } -} -module.exports = cmp + this.noDirRecurse = !!opt.noDirRecurse + this.follow = !!opt.follow + this.noMtime = !!opt.noMtime + this.mtime = opt.mtime || null + this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true -/***/ }), + this[QUEUE] = new Yallist() + this[JOBS] = 0 + this.jobs = +opt.jobs || 4 + this[PROCESSING] = false + this[ENDED] = false + } -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/coerce.js": -/*!********************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/coerce.js ***! - \********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + [WRITE] (chunk) { + return super.write(chunk) + } -const SemVer = __webpack_require__(/*! ../classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") -const parse = __webpack_require__(/*! ./parse */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/parse.js") -const {re, t} = __webpack_require__(/*! ../internal/re */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/re.js") + add (path) { + this.write(path) + return this + } -const coerce = (version, options) => { - if (version instanceof SemVer) { - return version + end (path) { + if (path) + this.write(path) + this[ENDED] = true + this[PROCESS]() + return this } - if (typeof version === 'number') { - version = String(version) + write (path) { + if (this[ENDED]) + throw new Error('write after end') + + if (path instanceof ReadEntry) + this[ADDTARENTRY](path) + else + this[ADDFSENTRY](path) + return this.flowing } - if (typeof version !== 'string') { - return null + [ADDTARENTRY] (p) { + const absolute = normPath(path.resolve(this.cwd, p.path)) + // in this case, we don't have to wait for the stat + if (!this.filter(p.path, p)) + p.resume() + else { + const job = new PackJob(p.path, absolute, false) + job.entry = new WriteEntryTar(p, this[ENTRYOPT](job)) + job.entry.on('end', _ => this[JOBDONE](job)) + this[JOBS] += 1 + this[QUEUE].push(job) + } + + this[PROCESS]() } - options = options || {} + [ADDFSENTRY] (p) { + const absolute = normPath(path.resolve(this.cwd, p)) + this[QUEUE].push(new PackJob(p, absolute)) + this[PROCESS]() + } - let match = null - if (!options.rtl) { - match = version.match(re[t.COERCE]) - } else { - // Find the right-most coercible string that does not share - // a terminus with a more left-ward coercible string. - // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' - // - // Walk through the string checking with a /g regexp - // Manually set the index so as to pick up overlapping matches. - // Stop when we get a match that ends at the string end, since no - // coercible string can be more right-ward without the same terminus. - let next - while ((next = re[t.COERCERTL].exec(version)) && - (!match || match.index + match[0].length !== version.length) - ) { - if (!match || - next.index + next[0].length !== match.index + match[0].length) { - match = next - } - re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length - } - // leave it in a clean state - re[t.COERCERTL].lastIndex = -1 + [STAT] (job) { + job.pending = true + this[JOBS] += 1 + const stat = this.follow ? 'stat' : 'lstat' + fs[stat](job.absolute, (er, stat) => { + job.pending = false + this[JOBS] -= 1 + if (er) + this.emit('error', er) + else + this[ONSTAT](job, stat) + }) } - if (match === null) - return null + [ONSTAT] (job, stat) { + this.statCache.set(job.absolute, stat) + job.stat = stat - return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options) -} -module.exports = coerce + // now we have the stat, we can filter it. + if (!this.filter(job.path, stat)) + job.ignore = true + this[PROCESS]() + } -/***/ }), + [READDIR] (job) { + job.pending = true + this[JOBS] += 1 + fs.readdir(job.absolute, (er, entries) => { + job.pending = false + this[JOBS] -= 1 + if (er) + return this.emit('error', er) + this[ONREADDIR](job, entries) + }) + } -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare-build.js": -/*!***************************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare-build.js ***! - \***************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + [ONREADDIR] (job, entries) { + this.readdirCache.set(job.absolute, entries) + job.readdir = entries + this[PROCESS]() + } -const SemVer = __webpack_require__(/*! ../classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") -const compareBuild = (a, b, loose) => { - const versionA = new SemVer(a, loose) - const versionB = new SemVer(b, loose) - return versionA.compare(versionB) || versionA.compareBuild(versionB) -} -module.exports = compareBuild + [PROCESS] () { + if (this[PROCESSING]) + return + this[PROCESSING] = true + for (let w = this[QUEUE].head; + w !== null && this[JOBS] < this.jobs; + w = w.next) { + this[PROCESSJOB](w.value) + if (w.value.ignore) { + const p = w.next + this[QUEUE].removeNode(w) + w.next = p + } + } -/***/ }), + this[PROCESSING] = false -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare-loose.js": -/*!***************************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare-loose.js ***! - \***************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) { + if (this.zip) + this.zip.end(EOF) + else { + super.write(EOF) + super.end() + } + } + } -const compare = __webpack_require__(/*! ./compare */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare.js") -const compareLoose = (a, b) => compare(a, b, true) -module.exports = compareLoose + get [CURRENT] () { + return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value + } + [JOBDONE] (job) { + this[QUEUE].shift() + this[JOBS] -= 1 + this[PROCESS]() + } -/***/ }), + [PROCESSJOB] (job) { + if (job.pending) + return -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare.js": -/*!*********************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare.js ***! - \*********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + if (job.entry) { + if (job === this[CURRENT] && !job.piped) + this[PIPE](job) + return + } -const SemVer = __webpack_require__(/*! ../classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") -const compare = (a, b, loose) => - new SemVer(a, loose).compare(new SemVer(b, loose)) + if (!job.stat) { + if (this.statCache.has(job.absolute)) + this[ONSTAT](job, this.statCache.get(job.absolute)) + else + this[STAT](job) + } + if (!job.stat) + return -module.exports = compare + // filtered out! + if (job.ignore) + return + if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) { + if (this.readdirCache.has(job.absolute)) + this[ONREADDIR](job, this.readdirCache.get(job.absolute)) + else + this[READDIR](job) + if (!job.readdir) + return + } -/***/ }), + // we know it doesn't have an entry, because that got checked above + job.entry = this[ENTRY](job) + if (!job.entry) { + job.ignore = true + return + } -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/diff.js": -/*!******************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/diff.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + if (job === this[CURRENT] && !job.piped) + this[PIPE](job) + } -const parse = __webpack_require__(/*! ./parse */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/parse.js") -const eq = __webpack_require__(/*! ./eq */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/eq.js") + [ENTRYOPT] (job) { + return { + onwarn: (code, msg, data) => this.warn(code, msg, data), + noPax: this.noPax, + cwd: this.cwd, + absolute: job.absolute, + preservePaths: this.preservePaths, + maxReadSize: this.maxReadSize, + strict: this.strict, + portable: this.portable, + linkCache: this.linkCache, + statCache: this.statCache, + noMtime: this.noMtime, + mtime: this.mtime, + prefix: this.prefix, + } + } -const diff = (version1, version2) => { - if (eq(version1, version2)) { - return null - } else { - const v1 = parse(version1) - const v2 = parse(version2) - const hasPre = v1.prerelease.length || v2.prerelease.length - const prefix = hasPre ? 'pre' : '' - const defaultResult = hasPre ? 'prerelease' : '' - for (const key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return prefix + key - } - } + [ENTRY] (job) { + this[JOBS] += 1 + try { + return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job)) + .on('end', () => this[JOBDONE](job)) + .on('error', er => this.emit('error', er)) + } catch (er) { + this.emit('error', er) } - return defaultResult // may be undefined } -} -module.exports = diff + [ONDRAIN] () { + if (this[CURRENT] && this[CURRENT].entry) + this[CURRENT].entry.resume() + } -/***/ }), + // like .pipe() but using super, because our write() is special + [PIPE] (job) { + job.piped = true -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/eq.js": -/*!****************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/eq.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + if (job.readdir) { + job.readdir.forEach(entry => { + const p = job.path + const base = p === './' ? '' : p.replace(/\/*$/, '/') + this[ADDFSENTRY](base + entry) + }) + } -const compare = __webpack_require__(/*! ./compare */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare.js") -const eq = (a, b, loose) => compare(a, b, loose) === 0 -module.exports = eq + const source = job.entry + const zip = this.zip + if (zip) { + source.on('data', chunk => { + if (!zip.write(chunk)) + source.pause() + }) + } else { + source.on('data', chunk => { + if (!super.write(chunk)) + source.pause() + }) + } + } -/***/ }), + pause () { + if (this.zip) + this.zip.pause() + return super.pause() + } +}) -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/gt.js": -/*!****************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/gt.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +class PackSync extends Pack { + constructor (opt) { + super(opt) + this[WRITEENTRYCLASS] = WriteEntrySync + } -const compare = __webpack_require__(/*! ./compare */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare.js") -const gt = (a, b, loose) => compare(a, b, loose) > 0 -module.exports = gt + // pause/resume are no-ops in sync streams. + pause () {} + resume () {} + [STAT] (job) { + const stat = this.follow ? 'statSync' : 'lstatSync' + this[ONSTAT](job, fs[stat](job.absolute)) + } -/***/ }), + [READDIR] (job, stat) { + this[ONREADDIR](job, fs.readdirSync(job.absolute)) + } -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/gte.js": -/*!*****************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/gte.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -const compare = __webpack_require__(/*! ./compare */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare.js") -const gte = (a, b, loose) => compare(a, b, loose) >= 0 -module.exports = gte - - -/***/ }), - -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/inc.js": -/*!*****************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/inc.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -const SemVer = __webpack_require__(/*! ../classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") + // gotta get it all in this tick + [PIPE] (job) { + const source = job.entry + const zip = this.zip -const inc = (version, release, options, identifier) => { - if (typeof (options) === 'string') { - identifier = options - options = undefined - } + if (job.readdir) { + job.readdir.forEach(entry => { + const p = job.path + const base = p === './' ? '' : p.replace(/\/*$/, '/') + this[ADDFSENTRY](base + entry) + }) + } - try { - return new SemVer(version, options).inc(release, identifier).version - } catch (er) { - return null + if (zip) { + source.on('data', chunk => { + zip.write(chunk) + }) + } else { + source.on('data', chunk => { + super[WRITE](chunk) + }) + } } } -module.exports = inc - - -/***/ }), - -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/lt.js": -/*!****************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/lt.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -const compare = __webpack_require__(/*! ./compare */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare.js") -const lt = (a, b, loose) => compare(a, b, loose) < 0 -module.exports = lt - - -/***/ }), -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/lte.js": -/*!*****************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/lte.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +Pack.Sync = PackSync -const compare = __webpack_require__(/*! ./compare */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare.js") -const lte = (a, b, loose) => compare(a, b, loose) <= 0 -module.exports = lte +module.exports = Pack /***/ }), -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/major.js": -/*!*******************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/major.js ***! - \*******************************************************************************************************/ +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/parse.js": +/*!************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/parse.js ***! + \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const SemVer = __webpack_require__(/*! ../classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") -const major = (a, loose) => new SemVer(a, loose).major -module.exports = major - - -/***/ }), - -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/minor.js": -/*!*******************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/minor.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +"use strict"; -const SemVer = __webpack_require__(/*! ../classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") -const minor = (a, loose) => new SemVer(a, loose).minor -module.exports = minor +// this[BUFFER] is the remainder of a chunk if we're waiting for +// the full 512 bytes of a header to come in. We will Buffer.concat() +// it to the next write(), which is a mem copy, but a small one. +// +// this[QUEUE] is a Yallist of entries that haven't been emitted +// yet this can only get filled up if the user keeps write()ing after +// a write() returns false, or does a write() with more than one entry +// +// We don't buffer chunks, we always parse them and either create an +// entry, or push it into the active entry. The ReadEntry class knows +// to throw data away if .ignore=true +// +// Shift entry off the buffer when it emits 'end', and emit 'entry' for +// the next one in the list. +// +// At any time, we're pushing body chunks into the entry at WRITEENTRY, +// and waiting for 'end' on the entry at READENTRY +// +// ignored entries get .resume() called on them straight away -/***/ }), +const warner = __webpack_require__(/*! ./warn-mixin.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/warn-mixin.js") +const Header = __webpack_require__(/*! ./header.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/header.js") +const EE = __webpack_require__(/*! events */ "events") +const Yallist = __webpack_require__(/*! yallist */ "../../../.yarn/berry/cache/yallist-npm-4.0.0-b493d9e907-9.zip/node_modules/yallist/yallist.js") +const maxMetaEntrySize = 1024 * 1024 +const Entry = __webpack_require__(/*! ./read-entry.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/read-entry.js") +const Pax = __webpack_require__(/*! ./pax.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/pax.js") +const zlib = __webpack_require__(/*! minizlib */ "../../../.yarn/berry/cache/minizlib-npm-2.1.2-ea89cd0cfb-9.zip/node_modules/minizlib/index.js") -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/neq.js": -/*!*****************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/neq.js ***! - \*****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +const gzipHeader = Buffer.from([0x1f, 0x8b]) +const STATE = Symbol('state') +const WRITEENTRY = Symbol('writeEntry') +const READENTRY = Symbol('readEntry') +const NEXTENTRY = Symbol('nextEntry') +const PROCESSENTRY = Symbol('processEntry') +const EX = Symbol('extendedHeader') +const GEX = Symbol('globalExtendedHeader') +const META = Symbol('meta') +const EMITMETA = Symbol('emitMeta') +const BUFFER = Symbol('buffer') +const QUEUE = Symbol('queue') +const ENDED = Symbol('ended') +const EMITTEDEND = Symbol('emittedEnd') +const EMIT = Symbol('emit') +const UNZIP = Symbol('unzip') +const CONSUMECHUNK = Symbol('consumeChunk') +const CONSUMECHUNKSUB = Symbol('consumeChunkSub') +const CONSUMEBODY = Symbol('consumeBody') +const CONSUMEMETA = Symbol('consumeMeta') +const CONSUMEHEADER = Symbol('consumeHeader') +const CONSUMING = Symbol('consuming') +const BUFFERCONCAT = Symbol('bufferConcat') +const MAYBEEND = Symbol('maybeEnd') +const WRITING = Symbol('writing') +const ABORTED = Symbol('aborted') +const DONE = Symbol('onDone') +const SAW_VALID_ENTRY = Symbol('sawValidEntry') +const SAW_NULL_BLOCK = Symbol('sawNullBlock') +const SAW_EOF = Symbol('sawEOF') -const compare = __webpack_require__(/*! ./compare */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare.js") -const neq = (a, b, loose) => compare(a, b, loose) !== 0 -module.exports = neq +const noop = _ => true +module.exports = warner(class Parser extends EE { + constructor (opt) { + opt = opt || {} + super(opt) -/***/ }), + this.file = opt.file || '' -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/parse.js": -/*!*******************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/parse.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // set to boolean false when an entry starts. 1024 bytes of \0 + // is technically a valid tarball, albeit a boring one. + this[SAW_VALID_ENTRY] = null -const {MAX_LENGTH} = __webpack_require__(/*! ../internal/constants */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/constants.js") -const { re, t } = __webpack_require__(/*! ../internal/re */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/re.js") -const SemVer = __webpack_require__(/*! ../classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") + // these BADARCHIVE errors can't be detected early. listen on DONE. + this.on(DONE, _ => { + if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) { + // either less than 1 block of data, or all entries were invalid. + // Either way, probably not even a tarball. + this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format') + } + }) -const parse = (version, options) => { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false + if (opt.ondone) + this.on(DONE, opt.ondone) + else { + this.on(DONE, _ => { + this.emit('prefinish') + this.emit('finish') + this.emit('end') + this.emit('close') + }) } - } - if (version instanceof SemVer) { - return version - } - - if (typeof version !== 'string') { - return null - } - - if (version.length > MAX_LENGTH) { - return null - } + this.strict = !!opt.strict + this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize + this.filter = typeof opt.filter === 'function' ? opt.filter : noop - const r = options.loose ? re[t.LOOSE] : re[t.FULL] - if (!r.test(version)) { - return null - } + // have to set this so that streams are ok piping into it + this.writable = true + this.readable = false - try { - return new SemVer(version, options) - } catch (er) { - return null + this[QUEUE] = new Yallist() + this[BUFFER] = null + this[READENTRY] = null + this[WRITEENTRY] = null + this[STATE] = 'begin' + this[META] = '' + this[EX] = null + this[GEX] = null + this[ENDED] = false + this[UNZIP] = null + this[ABORTED] = false + this[SAW_NULL_BLOCK] = false + this[SAW_EOF] = false + if (typeof opt.onwarn === 'function') + this.on('warn', opt.onwarn) + if (typeof opt.onentry === 'function') + this.on('entry', opt.onentry) } -} - -module.exports = parse + [CONSUMEHEADER] (chunk, position) { + if (this[SAW_VALID_ENTRY] === null) + this[SAW_VALID_ENTRY] = false + let header + try { + header = new Header(chunk, position, this[EX], this[GEX]) + } catch (er) { + return this.warn('TAR_ENTRY_INVALID', er) + } -/***/ }), + if (header.nullBlock) { + if (this[SAW_NULL_BLOCK]) { + this[SAW_EOF] = true + // ending an archive with no entries. pointless, but legal. + if (this[STATE] === 'begin') + this[STATE] = 'header' + this[EMIT]('eof') + } else { + this[SAW_NULL_BLOCK] = true + this[EMIT]('nullBlock') + } + } else { + this[SAW_NULL_BLOCK] = false + if (!header.cksumValid) + this.warn('TAR_ENTRY_INVALID', 'checksum failure', {header}) + else if (!header.path) + this.warn('TAR_ENTRY_INVALID', 'path is required', {header}) + else { + const type = header.type + if (/^(Symbolic)?Link$/.test(type) && !header.linkpath) + this.warn('TAR_ENTRY_INVALID', 'linkpath required', {header}) + else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath) + this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', {header}) + else { + const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX]) -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/patch.js": -/*!*******************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/patch.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // we do this for meta & ignored entries as well, because they + // are still valid tar, or else we wouldn't know to ignore them + if (!this[SAW_VALID_ENTRY]) { + if (entry.remain) { + // this might be the one! + const onend = () => { + if (!entry.invalid) + this[SAW_VALID_ENTRY] = true + } + entry.on('end', onend) + } else + this[SAW_VALID_ENTRY] = true + } -const SemVer = __webpack_require__(/*! ../classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") -const patch = (a, loose) => new SemVer(a, loose).patch -module.exports = patch - - -/***/ }), + if (entry.meta) { + if (entry.size > this.maxMetaEntrySize) { + entry.ignore = true + this[EMIT]('ignoredEntry', entry) + this[STATE] = 'ignore' + entry.resume() + } else if (entry.size > 0) { + this[META] = '' + entry.on('data', c => this[META] += c) + this[STATE] = 'meta' + } + } else { + this[EX] = null + entry.ignore = entry.ignore || !this.filter(entry.path, entry) -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/prerelease.js": -/*!************************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/prerelease.js ***! - \************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + if (entry.ignore) { + // probably valid, just not something we care about + this[EMIT]('ignoredEntry', entry) + this[STATE] = entry.remain ? 'ignore' : 'header' + entry.resume() + } else { + if (entry.remain) + this[STATE] = 'body' + else { + this[STATE] = 'header' + entry.end() + } -const parse = __webpack_require__(/*! ./parse */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/parse.js") -const prerelease = (version, options) => { - const parsed = parse(version, options) - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null -} -module.exports = prerelease + if (!this[READENTRY]) { + this[QUEUE].push(entry) + this[NEXTENTRY]() + } else + this[QUEUE].push(entry) + } + } + } + } + } + } + [PROCESSENTRY] (entry) { + let go = true -/***/ }), + if (!entry) { + this[READENTRY] = null + go = false + } else if (Array.isArray(entry)) + this.emit.apply(this, entry) + else { + this[READENTRY] = entry + this.emit('entry', entry) + if (!entry.emittedEnd) { + entry.on('end', _ => this[NEXTENTRY]()) + go = false + } + } -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/rcompare.js": -/*!**********************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/rcompare.js ***! - \**********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + return go + } -const compare = __webpack_require__(/*! ./compare */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare.js") -const rcompare = (a, b, loose) => compare(b, a, loose) -module.exports = rcompare + [NEXTENTRY] () { + do {} while (this[PROCESSENTRY](this[QUEUE].shift())) + if (!this[QUEUE].length) { + // At this point, there's nothing in the queue, but we may have an + // entry which is being consumed (readEntry). + // If we don't, then we definitely can handle more data. + // If we do, and either it's flowing, or it has never had any data + // written to it, then it needs more. + // The only other possibility is that it has returned false from a + // write() call, so we wait for the next drain to continue. + const re = this[READENTRY] + const drainNow = !re || re.flowing || re.size === re.remain + if (drainNow) { + if (!this[WRITING]) + this.emit('drain') + } else + re.once('drain', _ => this.emit('drain')) + } + } -/***/ }), + [CONSUMEBODY] (chunk, position) { + // write up to but no more than writeEntry.blockRemain + const entry = this[WRITEENTRY] + const br = entry.blockRemain + const c = (br >= chunk.length && position === 0) ? chunk + : chunk.slice(position, position + br) -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/rsort.js": -/*!*******************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/rsort.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + entry.write(c) -const compareBuild = __webpack_require__(/*! ./compare-build */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare-build.js") -const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)) -module.exports = rsort + if (!entry.blockRemain) { + this[STATE] = 'header' + this[WRITEENTRY] = null + entry.end() + } + return c.length + } -/***/ }), + [CONSUMEMETA] (chunk, position) { + const entry = this[WRITEENTRY] + const ret = this[CONSUMEBODY](chunk, position) -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/satisfies.js": -/*!***********************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/satisfies.js ***! - \***********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // if we finished, then the entry is reset + if (!this[WRITEENTRY]) + this[EMITMETA](entry) -const Range = __webpack_require__(/*! ../classes/range */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/range.js") -const satisfies = (version, range, options) => { - try { - range = new Range(range, options) - } catch (er) { - return false + return ret } - return range.test(version) -} -module.exports = satisfies - -/***/ }), + [EMIT] (ev, data, extra) { + if (!this[QUEUE].length && !this[READENTRY]) + this.emit(ev, data, extra) + else + this[QUEUE].push([ev, data, extra]) + } -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/sort.js": -/*!******************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/sort.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + [EMITMETA] (entry) { + this[EMIT]('meta', this[META]) + switch (entry.type) { + case 'ExtendedHeader': + case 'OldExtendedHeader': + this[EX] = Pax.parse(this[META], this[EX], false) + break -const compareBuild = __webpack_require__(/*! ./compare-build */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare-build.js") -const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)) -module.exports = sort + case 'GlobalExtendedHeader': + this[GEX] = Pax.parse(this[META], this[GEX], true) + break + case 'NextFileHasLongPath': + case 'OldGnuLongPath': + this[EX] = this[EX] || Object.create(null) + this[EX].path = this[META].replace(/\0.*/, '') + break -/***/ }), + case 'NextFileHasLongLinkpath': + this[EX] = this[EX] || Object.create(null) + this[EX].linkpath = this[META].replace(/\0.*/, '') + break -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/valid.js": -/*!*******************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/valid.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + /* istanbul ignore next */ + default: throw new Error('unknown meta: ' + entry.type) + } + } -const parse = __webpack_require__(/*! ./parse */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/parse.js") -const valid = (version, options) => { - const v = parse(version, options) - return v ? v.version : null -} -module.exports = valid + abort (error) { + this[ABORTED] = true + this.emit('abort', error) + // always throws, even in non-strict mode + this.warn('TAR_ABORT', error, { recoverable: false }) + } + write (chunk) { + if (this[ABORTED]) + return -/***/ }), + // first write, might be gzipped + if (this[UNZIP] === null && chunk) { + if (this[BUFFER]) { + chunk = Buffer.concat([this[BUFFER], chunk]) + this[BUFFER] = null + } + if (chunk.length < gzipHeader.length) { + this[BUFFER] = chunk + return true + } + for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) { + if (chunk[i] !== gzipHeader[i]) + this[UNZIP] = false + } + if (this[UNZIP] === null) { + const ended = this[ENDED] + this[ENDED] = false + this[UNZIP] = new zlib.Unzip() + this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk)) + this[UNZIP].on('error', er => this.abort(er)) + this[UNZIP].on('end', _ => { + this[ENDED] = true + this[CONSUMECHUNK]() + }) + this[WRITING] = true + const ret = this[UNZIP][ended ? 'end' : 'write'](chunk) + this[WRITING] = false + return ret + } + } -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/index.js": -/*!*********************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/index.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + this[WRITING] = true + if (this[UNZIP]) + this[UNZIP].write(chunk) + else + this[CONSUMECHUNK](chunk) + this[WRITING] = false -// just pre-load all the stuff that index.js lazily exports -const internalRe = __webpack_require__(/*! ./internal/re */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/re.js") -module.exports = { - re: internalRe.re, - src: internalRe.src, - tokens: internalRe.t, - SEMVER_SPEC_VERSION: __webpack_require__(/*! ./internal/constants */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/constants.js").SEMVER_SPEC_VERSION, - SemVer: __webpack_require__(/*! ./classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js"), - compareIdentifiers: __webpack_require__(/*! ./internal/identifiers */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/identifiers.js").compareIdentifiers, - rcompareIdentifiers: __webpack_require__(/*! ./internal/identifiers */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/identifiers.js").rcompareIdentifiers, - parse: __webpack_require__(/*! ./functions/parse */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/parse.js"), - valid: __webpack_require__(/*! ./functions/valid */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/valid.js"), - clean: __webpack_require__(/*! ./functions/clean */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/clean.js"), - inc: __webpack_require__(/*! ./functions/inc */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/inc.js"), - diff: __webpack_require__(/*! ./functions/diff */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/diff.js"), - major: __webpack_require__(/*! ./functions/major */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/major.js"), - minor: __webpack_require__(/*! ./functions/minor */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/minor.js"), - patch: __webpack_require__(/*! ./functions/patch */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/patch.js"), - prerelease: __webpack_require__(/*! ./functions/prerelease */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/prerelease.js"), - compare: __webpack_require__(/*! ./functions/compare */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare.js"), - rcompare: __webpack_require__(/*! ./functions/rcompare */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/rcompare.js"), - compareLoose: __webpack_require__(/*! ./functions/compare-loose */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare-loose.js"), - compareBuild: __webpack_require__(/*! ./functions/compare-build */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/compare-build.js"), - sort: __webpack_require__(/*! ./functions/sort */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/sort.js"), - rsort: __webpack_require__(/*! ./functions/rsort */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/rsort.js"), - gt: __webpack_require__(/*! ./functions/gt */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/gt.js"), - lt: __webpack_require__(/*! ./functions/lt */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/lt.js"), - eq: __webpack_require__(/*! ./functions/eq */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/eq.js"), - neq: __webpack_require__(/*! ./functions/neq */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/neq.js"), - gte: __webpack_require__(/*! ./functions/gte */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/gte.js"), - lte: __webpack_require__(/*! ./functions/lte */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/lte.js"), - cmp: __webpack_require__(/*! ./functions/cmp */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/cmp.js"), - coerce: __webpack_require__(/*! ./functions/coerce */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/coerce.js"), - Comparator: __webpack_require__(/*! ./classes/comparator */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/comparator.js"), - Range: __webpack_require__(/*! ./classes/range */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/range.js"), - satisfies: __webpack_require__(/*! ./functions/satisfies */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/satisfies.js"), - toComparators: __webpack_require__(/*! ./ranges/to-comparators */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/to-comparators.js"), - maxSatisfying: __webpack_require__(/*! ./ranges/max-satisfying */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/max-satisfying.js"), - minSatisfying: __webpack_require__(/*! ./ranges/min-satisfying */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/min-satisfying.js"), - minVersion: __webpack_require__(/*! ./ranges/min-version */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/min-version.js"), - validRange: __webpack_require__(/*! ./ranges/valid */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/valid.js"), - outside: __webpack_require__(/*! ./ranges/outside */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/outside.js"), - gtr: __webpack_require__(/*! ./ranges/gtr */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/gtr.js"), - ltr: __webpack_require__(/*! ./ranges/ltr */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/ltr.js"), - intersects: __webpack_require__(/*! ./ranges/intersects */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/intersects.js"), -} - - -/***/ }), - -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/constants.js": -/*!**********************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/constants.js ***! - \**********************************************************************************************************/ -/***/ ((module) => { + // return false if there's a queue, or if the current entry isn't flowing + const ret = + this[QUEUE].length ? false : + this[READENTRY] ? this[READENTRY].flowing : + true -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -const SEMVER_SPEC_VERSION = '2.0.0' + // if we have no queue, then that means a clogged READENTRY + if (!ret && !this[QUEUE].length) + this[READENTRY].once('drain', _ => this.emit('drain')) -const MAX_LENGTH = 256 -const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || - /* istanbul ignore next */ 9007199254740991 + return ret + } -// Max safe segment length for coercion. -const MAX_SAFE_COMPONENT_LENGTH = 16 + [BUFFERCONCAT] (c) { + if (c && !this[ABORTED]) + this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c + } -module.exports = { - SEMVER_SPEC_VERSION, - MAX_LENGTH, - MAX_SAFE_INTEGER, - MAX_SAFE_COMPONENT_LENGTH -} - - -/***/ }), + [MAYBEEND] () { + if (this[ENDED] && + !this[EMITTEDEND] && + !this[ABORTED] && + !this[CONSUMING]) { + this[EMITTEDEND] = true + const entry = this[WRITEENTRY] + if (entry && entry.blockRemain) { + // truncated, likely a damaged file + const have = this[BUFFER] ? this[BUFFER].length : 0 + this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${ + entry.blockRemain} more bytes, only ${have} available)`, {entry}) + if (this[BUFFER]) + entry.write(this[BUFFER]) + entry.end() + } + this[EMIT](DONE) + } + } -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/debug.js": -/*!******************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/debug.js ***! - \******************************************************************************************************/ -/***/ ((module) => { + [CONSUMECHUNK] (chunk) { + if (this[CONSUMING]) + this[BUFFERCONCAT](chunk) + else if (!chunk && !this[BUFFER]) + this[MAYBEEND]() + else { + this[CONSUMING] = true + if (this[BUFFER]) { + this[BUFFERCONCAT](chunk) + const c = this[BUFFER] + this[BUFFER] = null + this[CONSUMECHUNKSUB](c) + } else + this[CONSUMECHUNKSUB](chunk) -const debug = ( - typeof process === 'object' && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG) -) ? (...args) => console.error('SEMVER', ...args) - : () => {} + while (this[BUFFER] && + this[BUFFER].length >= 512 && + !this[ABORTED] && + !this[SAW_EOF]) { + const c = this[BUFFER] + this[BUFFER] = null + this[CONSUMECHUNKSUB](c) + } + this[CONSUMING] = false + } -module.exports = debug + if (!this[BUFFER] || this[ENDED]) + this[MAYBEEND]() + } + [CONSUMECHUNKSUB] (chunk) { + // we know that we are in CONSUMING mode, so anything written goes into + // the buffer. Advance the position and put any remainder in the buffer. + let position = 0 + const length = chunk.length + while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) { + switch (this[STATE]) { + case 'begin': + case 'header': + this[CONSUMEHEADER](chunk, position) + position += 512 + break -/***/ }), + case 'ignore': + case 'body': + position += this[CONSUMEBODY](chunk, position) + break -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/identifiers.js": -/*!************************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/identifiers.js ***! - \************************************************************************************************************/ -/***/ ((module) => { + case 'meta': + position += this[CONSUMEMETA](chunk, position) + break -const numeric = /^[0-9]+$/ -const compareIdentifiers = (a, b) => { - const anum = numeric.test(a) - const bnum = numeric.test(b) + /* istanbul ignore next */ + default: + throw new Error('invalid state: ' + this[STATE]) + } + } - if (anum && bnum) { - a = +a - b = +b + if (position < length) { + if (this[BUFFER]) + this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]]) + else + this[BUFFER] = chunk.slice(position) + } } - return a === b ? 0 - : (anum && !bnum) ? -1 - : (bnum && !anum) ? 1 - : a < b ? -1 - : 1 -} - -const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) - -module.exports = { - compareIdentifiers, - rcompareIdentifiers -} + end (chunk) { + if (!this[ABORTED]) { + if (this[UNZIP]) + this[UNZIP].end(chunk) + else { + this[ENDED] = true + this.write(chunk) + } + } + } +}) /***/ }), -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/re.js": -/*!***************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/re.js ***! - \***************************************************************************************************/ -/***/ ((module, exports, __webpack_require__) => { - -const { MAX_SAFE_COMPONENT_LENGTH } = __webpack_require__(/*! ./constants */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/constants.js") -const debug = __webpack_require__(/*! ./debug */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/internal/debug.js") -exports = module.exports = {} +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/path-reservations.js": +/*!************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/path-reservations.js ***! + \************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -// The actual regexps go on exports.re -const re = exports.re = [] -const src = exports.src = [] -const t = exports.t = {} -let R = 0 +// A path exclusive reservation system +// reserve([list, of, paths], fn) +// When the fn is first in line for all its paths, it +// is called with a cb that clears the reservation. +// +// Used by async unpack to avoid clobbering paths in use, +// while still allowing maximal safe parallelization. -const createToken = (name, value, isGlobal) => { - const index = R++ - debug(index, value) - t[name] = index - src[index] = value - re[index] = new RegExp(value, isGlobal ? 'g' : undefined) -} +const assert = __webpack_require__(/*! assert */ "assert") +const normalize = __webpack_require__(/*! ./normalize-unicode.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/normalize-unicode.js") +const stripSlashes = __webpack_require__(/*! ./strip-trailing-slashes.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/strip-trailing-slashes.js") +const { join } = __webpack_require__(/*! path */ "path") -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. +const platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform +const isWindows = platform === 'win32' -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. +module.exports = () => { + // path => [function or Set] + // A Set object means a directory reservation + // A fn is a direct reservation on that path + const queues = new Map() -createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*') -createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+') + // fn => {paths:[path,...], dirs:[path, ...]} + const reservations = new Map() -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. + // return a set of parent dirs for a given path + // '/a/b/c/d' -> ['/', '/a', '/a/b', '/a/b/c', '/a/b/c/d'] + const getDirs = path => { + const dirs = path.split('/').slice(0, -1).reduce((set, path) => { + if (set.length) + path = join(set[set.length - 1], path) + set.push(path || '/') + return set + }, []) + return dirs + } -createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*') + // functions currently running + const running = new Set() -// ## Main Version -// Three dot-separated numeric identifiers. + // return the queues for each path the function cares about + // fn => {paths, dirs} + const getQueues = fn => { + const res = reservations.get(fn) + /* istanbul ignore if - unpossible */ + if (!res) + throw new Error('function does not have any path reservations') + return { + paths: res.paths.map(path => queues.get(path)), + dirs: [...res.dirs].map(path => queues.get(path)), + } + } -createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})`) + // check if fn is first in line for all its paths, and is + // included in the first set for all its dir queues + const check = fn => { + const {paths, dirs} = getQueues(fn) + return paths.every(q => q[0] === fn) && + dirs.every(q => q[0] instanceof Set && q[0].has(fn)) + } -createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})`) + // run the function if it's first in line and not already running + const run = fn => { + if (running.has(fn) || !check(fn)) + return false + running.add(fn) + fn(() => clear(fn)) + return true + } -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. + const clear = fn => { + if (!running.has(fn)) + return false -createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER] -}|${src[t.NONNUMERICIDENTIFIER]})`) + const { paths, dirs } = reservations.get(fn) + const next = new Set() -createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE] -}|${src[t.NONNUMERICIDENTIFIER]})`) + paths.forEach(path => { + const q = queues.get(path) + assert.equal(q[0], fn) + if (q.length === 1) + queues.delete(path) + else { + q.shift() + if (typeof q[0] === 'function') + next.add(q[0]) + else + q[0].forEach(fn => next.add(fn)) + } + }) -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. + dirs.forEach(dir => { + const q = queues.get(dir) + assert(q[0] instanceof Set) + if (q[0].size === 1 && q.length === 1) + queues.delete(dir) + else if (q[0].size === 1) { + q.shift() -createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] -}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`) + // must be a function or else the Set would've been reused + next.add(q[0]) + } else + q[0].delete(fn) + }) + running.delete(fn) -createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] -}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`) + next.forEach(fn => run(fn)) + return true + } -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. + const reserve = (paths, fn) => { + // collide on matches across case and unicode normalization + // On windows, thanks to the magic of 8.3 shortnames, it is fundamentally + // impossible to determine whether two paths refer to the same thing on + // disk, without asking the kernel for a shortname. + // So, we just pretend that every path matches every other path here, + // effectively removing all parallelization on windows. + paths = isWindows ? ['win32 parallelization disabled'] : paths.map(p => { + // don't need normPath, because we skip this entirely for windows + return normalize(stripSlashes(join(p))).toLowerCase() + }) -createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+') - -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. - -createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] -}(?:\\.${src[t.BUILDIDENTIFIER]})*))`) - -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. - -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. + const dirs = new Set( + paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b)) + ) + reservations.set(fn, {dirs, paths}) + paths.forEach(path => { + const q = queues.get(path) + if (!q) + queues.set(path, [fn]) + else + q.push(fn) + }) + dirs.forEach(dir => { + const q = queues.get(dir) + if (!q) + queues.set(dir, [new Set([fn])]) + else if (q[q.length - 1] instanceof Set) + q[q.length - 1].add(fn) + else + q.push(new Set([fn])) + }) -createToken('FULLPLAIN', `v?${src[t.MAINVERSION] -}${src[t.PRERELEASE]}?${ - src[t.BUILD]}?`) + return run(fn) + } -createToken('FULL', `^${src[t.FULLPLAIN]}$`) + return { check, reserve } +} -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] -}${src[t.PRERELEASELOOSE]}?${ - src[t.BUILD]}?`) -createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`) +/***/ }), -createToken('GTLT', '((?:<|>)?=?)') +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/pax.js": +/*!**********************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/pax.js ***! + \**********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`) -createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`) +"use strict"; -createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:${src[t.PRERELEASE]})?${ - src[t.BUILD]}?` + - `)?)?`) +const Header = __webpack_require__(/*! ./header.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/header.js") +const path = __webpack_require__(/*! path */ "path") -createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:${src[t.PRERELEASELOOSE]})?${ - src[t.BUILD]}?` + - `)?)?`) +class Pax { + constructor (obj, global) { + this.atime = obj.atime || null + this.charset = obj.charset || null + this.comment = obj.comment || null + this.ctime = obj.ctime || null + this.gid = obj.gid || null + this.gname = obj.gname || null + this.linkpath = obj.linkpath || null + this.mtime = obj.mtime || null + this.path = obj.path || null + this.size = obj.size || null + this.uid = obj.uid || null + this.uname = obj.uname || null + this.dev = obj.dev || null + this.ino = obj.ino || null + this.nlink = obj.nlink || null + this.global = global || false + } -createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`) -createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`) + encode () { + const body = this.encodeBody() + if (body === '') + return null -// Coercion. -// Extract anything that could conceivably be a part of a valid semver -createToken('COERCE', `${'(^|[^\\d])' + - '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + - `(?:$|[^\\d])`) -createToken('COERCERTL', src[t.COERCE], true) + const bodyLen = Buffer.byteLength(body) + // round up to 512 bytes + // add 512 for header + const bufLen = 512 * Math.ceil(1 + bodyLen / 512) + const buf = Buffer.allocUnsafe(bufLen) -// Tilde ranges. -// Meaning is "reasonably at or greater than" -createToken('LONETILDE', '(?:~>?)') + // 0-fill the header section, it might not hit every field + for (let i = 0; i < 512; i++) + buf[i] = 0 -createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true) -exports.tildeTrimReplace = '$1~' + new Header({ + // XXX split the path + // then the path should be PaxHeader + basename, but less than 99, + // prepend with the dirname + path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99), + mode: this.mode || 0o644, + uid: this.uid || null, + gid: this.gid || null, + size: bodyLen, + mtime: this.mtime || null, + type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader', + linkpath: '', + uname: this.uname || '', + gname: this.gname || '', + devmaj: 0, + devmin: 0, + atime: this.atime || null, + ctime: this.ctime || null, + }).encode(buf) -createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`) -createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`) + buf.write(body, 512, bodyLen, 'utf8') -// Caret ranges. -// Meaning is "at least and backwards compatible with" -createToken('LONECARET', '(?:\\^)') + // null pad after the body + for (let i = bodyLen + 512; i < buf.length; i++) + buf[i] = 0 -createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true) -exports.caretTrimReplace = '$1^' + return buf + } -createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`) -createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`) + encodeBody () { + return ( + this.encodeField('path') + + this.encodeField('ctime') + + this.encodeField('atime') + + this.encodeField('dev') + + this.encodeField('ino') + + this.encodeField('nlink') + + this.encodeField('charset') + + this.encodeField('comment') + + this.encodeField('gid') + + this.encodeField('gname') + + this.encodeField('linkpath') + + this.encodeField('mtime') + + this.encodeField('size') + + this.encodeField('uid') + + this.encodeField('uname') + ) + } -// A simple gt/lt/eq thing, or just "" to indicate "any version" -createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`) -createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`) + encodeField (field) { + if (this[field] === null || this[field] === undefined) + return '' + const v = this[field] instanceof Date ? this[field].getTime() / 1000 + : this[field] + const s = ' ' + + (field === 'dev' || field === 'ino' || field === 'nlink' + ? 'SCHILY.' : '') + + field + '=' + v + '\n' + const byteLen = Buffer.byteLength(s) + // the digits includes the length of the digits in ascii base-10 + // so if it's 9 characters, then adding 1 for the 9 makes it 10 + // which makes it 11 chars. + let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1 + if (byteLen + digits >= Math.pow(10, digits)) + digits += 1 + const len = digits + byteLen + return len + s + } +} -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] -}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true) -exports.comparatorTrimReplace = '$1$2$3' +Pax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g) -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + - `\\s+-\\s+` + - `(${src[t.XRANGEPLAIN]})` + - `\\s*$`) +const merge = (a, b) => + b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a -createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + - `\\s+-\\s+` + - `(${src[t.XRANGEPLAINLOOSE]})` + - `\\s*$`) +const parseKV = string => + string + .replace(/\n$/, '') + .split('\n') + .reduce(parseKVLine, Object.create(null)) -// Star ranges basically just allow anything at all. -createToken('STAR', '(<|>)?=?\\s*\\*') +const parseKVLine = (set, line) => { + const n = parseInt(line, 10) + // XXX Values with \n in them will fail this. + // Refactor to not be a naive line-by-line parse. + if (n !== Buffer.byteLength(line) + 1) + return set -/***/ }), + line = line.substr((n + ' ').length) + const kv = line.split('=') + const k = kv.shift().replace(/^SCHILY\.(dev|ino|nlink)/, '$1') + if (!k) + return set -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/gtr.js": -/*!**************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/gtr.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + const v = kv.join('=') + set[k] = /^([A-Z]+\.)?([mac]|birth|creation)time$/.test(k) + ? new Date(v * 1000) + : /^[0-9]+$/.test(v) ? +v + : v + return set +} -// Determine if version is greater than all the versions possible in the range. -const outside = __webpack_require__(/*! ./outside */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/outside.js") -const gtr = (version, range, options) => outside(version, range, '>', options) -module.exports = gtr +module.exports = Pax /***/ }), -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/intersects.js": -/*!*********************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/intersects.js ***! - \*********************************************************************************************************/ +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/read-entry.js": +/*!*****************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/read-entry.js ***! + \*****************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const Range = __webpack_require__(/*! ../classes/range */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/range.js") -const intersects = (r1, r2, options) => { - r1 = new Range(r1, options) - r2 = new Range(r2, options) - return r1.intersects(r2) -} -module.exports = intersects +"use strict"; +const MiniPass = __webpack_require__(/*! minipass */ "../../../.yarn/berry/cache/minipass-npm-3.3.4-6cf48a6c5e-9.zip/node_modules/minipass/index.js") +const normPath = __webpack_require__(/*! ./normalize-windows-path.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/normalize-windows-path.js") -/***/ }), +const SLURP = Symbol('slurp') +module.exports = class ReadEntry extends MiniPass { + constructor (header, ex, gex) { + super() + // read entries always start life paused. this is to avoid the + // situation where Minipass's auto-ending empty streams results + // in an entry ending before we're ready for it. + this.pause() + this.extended = ex + this.globalExtended = gex + this.header = header + this.startBlockSize = 512 * Math.ceil(header.size / 512) + this.blockRemain = this.startBlockSize + this.remain = header.size + this.type = header.type + this.meta = false + this.ignore = false + switch (this.type) { + case 'File': + case 'OldFile': + case 'Link': + case 'SymbolicLink': + case 'CharacterDevice': + case 'BlockDevice': + case 'Directory': + case 'FIFO': + case 'ContiguousFile': + case 'GNUDumpDir': + break -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/ltr.js": -/*!**************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/ltr.js ***! - \**************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + case 'NextFileHasLongLinkpath': + case 'NextFileHasLongPath': + case 'OldGnuLongPath': + case 'GlobalExtendedHeader': + case 'ExtendedHeader': + case 'OldExtendedHeader': + this.meta = true + break -const outside = __webpack_require__(/*! ./outside */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/outside.js") -// Determine if version is less than all the versions possible in the range -const ltr = (version, range, options) => outside(version, range, '<', options) -module.exports = ltr + // NOTE: gnutar and bsdtar treat unrecognized types as 'File' + // it may be worth doing the same, but with a warning. + default: + this.ignore = true + } + this.path = normPath(header.path) + this.mode = header.mode + if (this.mode) + this.mode = this.mode & 0o7777 + this.uid = header.uid + this.gid = header.gid + this.uname = header.uname + this.gname = header.gname + this.size = header.size + this.mtime = header.mtime + this.atime = header.atime + this.ctime = header.ctime + this.linkpath = normPath(header.linkpath) + this.uname = header.uname + this.gname = header.gname -/***/ }), + if (ex) + this[SLURP](ex) + if (gex) + this[SLURP](gex, true) + } -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/max-satisfying.js": -/*!*************************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/max-satisfying.js ***! - \*************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + write (data) { + const writeLen = data.length + if (writeLen > this.blockRemain) + throw new Error('writing more to entry than is appropriate') -const SemVer = __webpack_require__(/*! ../classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") -const Range = __webpack_require__(/*! ../classes/range */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/range.js") + const r = this.remain + const br = this.blockRemain + this.remain = Math.max(0, r - writeLen) + this.blockRemain = Math.max(0, br - writeLen) + if (this.ignore) + return true -const maxSatisfying = (versions, range, options) => { - let max = null - let maxSV = null - let rangeObj = null - try { - rangeObj = new Range(range, options) - } catch (er) { - return null + if (r >= writeLen) + return super.write(data) + + // r < writeLen + return super.write(data.slice(0, r)) } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v - maxSV = new SemVer(max, options) - } + + [SLURP] (ex, global) { + for (const k in ex) { + // we slurp in everything except for the path attribute in + // a global extended header, because that's weird. + if (ex[k] !== null && ex[k] !== undefined && + !(global && k === 'path')) + this[k] = k === 'path' || k === 'linkpath' ? normPath(ex[k]) : ex[k] } - }) - return max + } } -module.exports = maxSatisfying /***/ }), -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/min-satisfying.js": -/*!*************************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/min-satisfying.js ***! - \*************************************************************************************************************/ +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/replace.js": +/*!**************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/replace.js ***! + \**************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -const SemVer = __webpack_require__(/*! ../classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") -const Range = __webpack_require__(/*! ../classes/range */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/range.js") -const minSatisfying = (versions, range, options) => { - let min = null - let minSV = null - let rangeObj = null - try { - rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v - minSV = new SemVer(min, options) - } - } - }) - return min -} -module.exports = minSatisfying - +"use strict"; -/***/ }), -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/min-version.js": -/*!**********************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/min-version.js ***! - \**********************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +// tar -r +const hlo = __webpack_require__(/*! ./high-level-opt.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/high-level-opt.js") +const Pack = __webpack_require__(/*! ./pack.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/pack.js") +const fs = __webpack_require__(/*! fs */ "fs") +const fsm = __webpack_require__(/*! fs-minipass */ "../../../.yarn/berry/cache/fs-minipass-npm-2.1.0-501ef87306-9.zip/node_modules/fs-minipass/index.js") +const t = __webpack_require__(/*! ./list.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/list.js") +const path = __webpack_require__(/*! path */ "path") -const SemVer = __webpack_require__(/*! ../classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") -const Range = __webpack_require__(/*! ../classes/range */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/range.js") -const gt = __webpack_require__(/*! ../functions/gt */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/gt.js") +// starting at the head of the file, read a Header +// If the checksum is invalid, that's our position to start writing +// If it is, jump forward by the specified size (round up to 512) +// and try again. +// Write the new Pack stream starting there. -const minVersion = (range, loose) => { - range = new Range(range, loose) +const Header = __webpack_require__(/*! ./header.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/header.js") - let minver = new SemVer('0.0.0') - if (range.test(minver)) { - return minver - } +module.exports = (opt_, files, cb) => { + const opt = hlo(opt_) - minver = new SemVer('0.0.0-0') - if (range.test(minver)) { - return minver - } + if (!opt.file) + throw new TypeError('file is required') - minver = null - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i] + if (opt.gzip) + throw new TypeError('cannot append to compressed archives') - comparators.forEach((comparator) => { - // Clone to avoid manipulating the comparator's semver object. - const compver = new SemVer(comparator.semver.version) - switch (comparator.operator) { - case '>': - if (compver.prerelease.length === 0) { - compver.patch++ - } else { - compver.prerelease.push(0) - } - compver.raw = compver.format() - /* fallthrough */ - case '': - case '>=': - if (!minver || gt(minver, compver)) { - minver = compver - } - break - case '<': - case '<=': - /* Ignore maximum versions */ - break - /* istanbul ignore next */ - default: - throw new Error(`Unexpected operation: ${comparator.operator}`) - } - }) - } + if (!files || !Array.isArray(files) || !files.length) + throw new TypeError('no files or directories specified') - if (minver && range.test(minver)) { - return minver - } + files = Array.from(files) - return null + return opt.sync ? replaceSync(opt, files) + : replace(opt, files, cb) } -module.exports = minVersion +const replaceSync = (opt, files) => { + const p = new Pack.Sync(opt) -/***/ }), + let threw = true + let fd + let position -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/outside.js": -/*!******************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/outside.js ***! - \******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + try { + try { + fd = fs.openSync(opt.file, 'r+') + } catch (er) { + if (er.code === 'ENOENT') + fd = fs.openSync(opt.file, 'w+') + else + throw er + } -const SemVer = __webpack_require__(/*! ../classes/semver */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/semver.js") -const Comparator = __webpack_require__(/*! ../classes/comparator */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/comparator.js") -const {ANY} = Comparator -const Range = __webpack_require__(/*! ../classes/range */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/range.js") -const satisfies = __webpack_require__(/*! ../functions/satisfies */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/satisfies.js") -const gt = __webpack_require__(/*! ../functions/gt */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/gt.js") -const lt = __webpack_require__(/*! ../functions/lt */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/lt.js") -const lte = __webpack_require__(/*! ../functions/lte */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/lte.js") -const gte = __webpack_require__(/*! ../functions/gte */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/functions/gte.js") + const st = fs.fstatSync(fd) + const headBuf = Buffer.alloc(512) -const outside = (version, range, hilo, options) => { - version = new SemVer(version, options) - range = new Range(range, options) + POSITION: for (position = 0; position < st.size; position += 512) { + for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) { + bytes = fs.readSync( + fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos + ) - let gtfn, ltefn, ltfn, comp, ecomp - switch (hilo) { - case '>': - gtfn = gt - ltefn = lte - ltfn = lt - comp = '>' - ecomp = '>=' - break - case '<': - gtfn = lt - ltefn = gte - ltfn = gt - comp = '<' - ecomp = '<=' - break - default: - throw new TypeError('Must provide a hilo val of "<" or ">"') - } + if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) + throw new Error('cannot append to compressed archives') - // If it satisifes the range it is not outside - if (satisfies(version, range, options)) { - return false - } + if (!bytes) + break POSITION + } - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i] - - let high = null - let low = null - - comparators.forEach((comparator) => { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0') - } - high = high || comparator - low = low || comparator - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator - } - }) - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false + const h = new Header(headBuf) + if (!h.cksumValid) + break + const entryBlockSize = 512 * Math.ceil(h.size / 512) + if (position + entryBlockSize + 512 > st.size) + break + // the 512 for the header we just parsed will be added as well + // also jump ahead all the blocks for the body + position += entryBlockSize + if (opt.mtimeCache) + opt.mtimeCache.set(h.path, h.mtime) } + threw = false - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false + streamSync(opt, p, position, fd, files) + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} } } - return true } -module.exports = outside +const streamSync = (opt, p, position, fd, files) => { + const stream = new fsm.WriteStreamSync(opt.file, { + fd: fd, + start: position, + }) + p.pipe(stream) + addFilesSync(p, files) +} +const replace = (opt, files, cb) => { + files = Array.from(files) + const p = new Pack(opt) -/***/ }), + const getPos = (fd, size, cb_) => { + const cb = (er, pos) => { + if (er) + fs.close(fd, _ => cb_(er)) + else + cb_(null, pos) + } -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/to-comparators.js": -/*!*************************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/to-comparators.js ***! - \*************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + let position = 0 + if (size === 0) + return cb(null, 0) -const Range = __webpack_require__(/*! ../classes/range */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/range.js") + let bufPos = 0 + const headBuf = Buffer.alloc(512) + const onread = (er, bytes) => { + if (er) + return cb(er) + bufPos += bytes + if (bufPos < 512 && bytes) { + return fs.read( + fd, headBuf, bufPos, headBuf.length - bufPos, + position + bufPos, onread + ) + } -// Mostly just for testing and legacy API reasons -const toComparators = (range, options) => - new Range(range, options).set - .map(comp => comp.map(c => c.value).join(' ').trim().split(' ')) + if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) + return cb(new Error('cannot append to compressed archives')) -module.exports = toComparators + // truncated header + if (bufPos < 512) + return cb(null, position) + const h = new Header(headBuf) + if (!h.cksumValid) + return cb(null, position) -/***/ }), + const entryBlockSize = 512 * Math.ceil(h.size / 512) + if (position + entryBlockSize + 512 > size) + return cb(null, position) -/***/ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/valid.js": -/*!****************************************************************************************************!*\ - !*** ./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/ranges/valid.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + position += entryBlockSize + 512 + if (position >= size) + return cb(null, position) -const Range = __webpack_require__(/*! ../classes/range */ "./.yarn/cache/semver-npm-7.1.3-1741df6bad-a7700fd039.zip/node_modules/semver/classes/range.js") -const validRange = (range, options) => { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || '*' - } catch (er) { - return null + if (opt.mtimeCache) + opt.mtimeCache.set(h.path, h.mtime) + bufPos = 0 + fs.read(fd, headBuf, 0, 512, position, onread) + } + fs.read(fd, headBuf, 0, 512, position, onread) } -} -module.exports = validRange + const promise = new Promise((resolve, reject) => { + p.on('error', reject) + let flag = 'r+' + const onopen = (er, fd) => { + if (er && er.code === 'ENOENT' && flag === 'r+') { + flag = 'w+' + return fs.open(opt.file, flag, onopen) + } -/***/ }), + if (er) + return reject(er) -/***/ "./.yarn/cache/supports-color-npm-7.1.0-df2ba1e338-899480ac85.zip/node_modules/supports-color/index.js": -/*!*************************************************************************************************************!*\ - !*** ./.yarn/cache/supports-color-npm-7.1.0-df2ba1e338-899480ac85.zip/node_modules/supports-color/index.js ***! - \*************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + fs.fstat(fd, (er, st) => { + if (er) + return fs.close(fd, () => reject(er)) -"use strict"; + getPos(fd, st.size, (er, position) => { + if (er) + return reject(er) + const stream = new fsm.WriteStream(opt.file, { + fd: fd, + start: position, + }) + p.pipe(stream) + stream.on('error', reject) + stream.on('close', resolve) + addFilesAsync(p, files) + }) + }) + } + fs.open(opt.file, flag, onopen) + }) -const os = __webpack_require__(/*! os */ "os"); -const tty = __webpack_require__(/*! tty */ "tty"); -const hasFlag = __webpack_require__(/*! has-flag */ "./.yarn/cache/has-flag-npm-4.0.0-32af9f0536-261a135703.zip/node_modules/has-flag/index.js"); - -const {env} = process; - -let forceColor; -if (hasFlag('no-color') || - hasFlag('no-colors') || - hasFlag('color=false') || - hasFlag('color=never')) { - forceColor = 0; -} else if (hasFlag('color') || - hasFlag('colors') || - hasFlag('color=true') || - hasFlag('color=always')) { - forceColor = 1; -} - -if ('FORCE_COLOR' in env) { - if (env.FORCE_COLOR === 'true') { - forceColor = 1; - } else if (env.FORCE_COLOR === 'false') { - forceColor = 0; - } else { - forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); - } + return cb ? promise.then(cb, cb) : promise } -function translateLevel(level) { - if (level === 0) { - return false; - } - - return { - level, - hasBasic: true, - has256: level >= 2, - has16m: level >= 3 - }; +const addFilesSync = (p, files) => { + files.forEach(file => { + if (file.charAt(0) === '@') { + t({ + file: path.resolve(p.cwd, file.substr(1)), + sync: true, + noResume: true, + onentry: entry => p.add(entry), + }) + } else + p.add(file) + }) + p.end() } -function supportsColor(haveStream, streamIsTTY) { - if (forceColor === 0) { - return 0; - } - - if (hasFlag('color=16m') || - hasFlag('color=full') || - hasFlag('color=truecolor')) { - return 3; - } - - if (hasFlag('color=256')) { - return 2; - } +const addFilesAsync = (p, files) => { + while (files.length) { + const file = files.shift() + if (file.charAt(0) === '@') { + return t({ + file: path.resolve(p.cwd, file.substr(1)), + noResume: true, + onentry: entry => p.add(entry), + }).then(_ => addFilesAsync(p, files)) + } else + p.add(file) + } + p.end() +} - if (haveStream && !streamIsTTY && forceColor === undefined) { - return 0; - } - const min = forceColor || 0; +/***/ }), - if (env.TERM === 'dumb') { - return min; - } +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/strip-absolute-path.js": +/*!**************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/strip-absolute-path.js ***! + \**************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - if (process.platform === 'win32') { - // Windows 10 build 10586 is the first Windows release that supports 256 colors. - // Windows 10 build 14931 is the first release that supports 16m/TrueColor. - const osRelease = os.release().split('.'); - if ( - Number(osRelease[0]) >= 10 && - Number(osRelease[2]) >= 10586 - ) { - return Number(osRelease[2]) >= 14931 ? 3 : 2; - } +// unix absolute paths are also absolute on win32, so we use this for both +const { isAbsolute, parse } = (__webpack_require__(/*! path */ "path").win32) - return 1; - } +// returns [root, stripped] +// Note that windows will think that //x/y/z/a has a "root" of //x/y, and in +// those cases, we want to sanitize it to x/y/z/a, not z/a, so we strip / +// explicitly if it's the first character. +// drive-specific relative paths on Windows get their root stripped off even +// though they are not absolute, so `c:../foo` becomes ['c:', '../foo'] +module.exports = path => { + let r = '' - if ('CI' in env) { - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { - return 1; - } + let parsed = parse(path) + while (isAbsolute(path) || parsed.root) { + // windows will think that //x/y/z has a "root" of //x/y/ + // but strip the //?/C:/ off of //?/C:/path + const root = path.charAt(0) === '/' && path.slice(0, 4) !== '//?/' ? '/' + : parsed.root + path = path.substr(root.length) + r += root + parsed = parse(path) + } + return [r, path] +} - return min; - } - if ('TEAMCITY_VERSION' in env) { - return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; - } +/***/ }), - if ('GITHUB_ACTIONS' in env) { - return 1; - } +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/strip-trailing-slashes.js": +/*!*****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/strip-trailing-slashes.js ***! + \*****************************************************************************************************************/ +/***/ ((module) => { - if (env.COLORTERM === 'truecolor') { - return 3; - } +// warning: extremely hot code path. +// This has been meticulously optimized for use +// within npm install on large package trees. +// Do not edit without careful benchmarking. +module.exports = str => { + let i = str.length - 1 + let slashesStart = -1 + while (i > -1 && str.charAt(i) === '/') { + slashesStart = i + i-- + } + return slashesStart === -1 ? str : str.slice(0, slashesStart) +} - if ('TERM_PROGRAM' in env) { - const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); - switch (env.TERM_PROGRAM) { - case 'iTerm.app': - return version >= 3 ? 3 : 2; - case 'Apple_Terminal': - return 2; - // No default - } - } +/***/ }), - if (/-256(color)?$/i.test(env.TERM)) { - return 2; - } +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/types.js": +/*!************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/types.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { - if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { - return 1; - } +"use strict"; - if ('COLORTERM' in env) { - return 1; - } - - return min; -} - -function getSupportLevel(stream) { - const level = supportsColor(stream, stream && stream.isTTY); - return translateLevel(level); -} - -module.exports = { - supportsColor: getSupportLevel, - stdout: translateLevel(supportsColor(true, tty.isatty(1))), - stderr: translateLevel(supportsColor(true, tty.isatty(2))) -}; - - -/***/ }), - -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/index.js": -/*!***************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/index.js ***! - \***************************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -// high-level commands -exports.c = exports.create = __webpack_require__(/*! ./lib/create.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/create.js") -exports.r = exports.replace = __webpack_require__(/*! ./lib/replace.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/replace.js") -exports.t = exports.list = __webpack_require__(/*! ./lib/list.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/list.js") -exports.u = exports.update = __webpack_require__(/*! ./lib/update.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/update.js") -exports.x = exports.extract = __webpack_require__(/*! ./lib/extract.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/extract.js") +// map types from key to human-friendly name +exports.name = new Map([ + ['0', 'File'], + // same as File + ['', 'OldFile'], + ['1', 'Link'], + ['2', 'SymbolicLink'], + // Devices and FIFOs aren't fully supported + // they are parsed, but skipped when unpacking + ['3', 'CharacterDevice'], + ['4', 'BlockDevice'], + ['5', 'Directory'], + ['6', 'FIFO'], + // same as File + ['7', 'ContiguousFile'], + // pax headers + ['g', 'GlobalExtendedHeader'], + ['x', 'ExtendedHeader'], + // vendor-specific stuff + // skip + ['A', 'SolarisACL'], + // like 5, but with data, which should be skipped + ['D', 'GNUDumpDir'], + // metadata only, skip + ['I', 'Inode'], + // data = link path of next file + ['K', 'NextFileHasLongLinkpath'], + // data = path of next file + ['L', 'NextFileHasLongPath'], + // skip + ['M', 'ContinuationFile'], + // like L + ['N', 'OldGnuLongPath'], + // skip + ['S', 'SparseFile'], + // skip + ['V', 'TapeVolumeHeader'], + // like x + ['X', 'OldExtendedHeader'], +]) -// classes -exports.Pack = __webpack_require__(/*! ./lib/pack.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/pack.js") -exports.Unpack = __webpack_require__(/*! ./lib/unpack.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/unpack.js") -exports.Parse = __webpack_require__(/*! ./lib/parse.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/parse.js") -exports.ReadEntry = __webpack_require__(/*! ./lib/read-entry.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/read-entry.js") -exports.WriteEntry = __webpack_require__(/*! ./lib/write-entry.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/write-entry.js") -exports.Header = __webpack_require__(/*! ./lib/header.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/header.js") -exports.Pax = __webpack_require__(/*! ./lib/pax.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/pax.js") -exports.types = __webpack_require__(/*! ./lib/types.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/types.js") +// map the other direction +exports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]])) /***/ }), -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/create.js": -/*!********************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/create.js ***! - \********************************************************************************************/ +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/unpack.js": +/*!*************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/unpack.js ***! + \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; -// tar -c -const hlo = __webpack_require__(/*! ./high-level-opt.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/high-level-opt.js") +// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet. +// but the path reservations are required to avoid race conditions where +// parallelized unpack ops may mess with one another, due to dependencies +// (like a Link depending on its target) or destructive operations (like +// clobbering an fs object to create one of a different type.) -const Pack = __webpack_require__(/*! ./pack.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/pack.js") +const assert = __webpack_require__(/*! assert */ "assert") +const Parser = __webpack_require__(/*! ./parse.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/parse.js") const fs = __webpack_require__(/*! fs */ "fs") -const fsm = __webpack_require__(/*! fs-minipass */ "./.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip/node_modules/fs-minipass/index.js") -const t = __webpack_require__(/*! ./list.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/list.js") +const fsm = __webpack_require__(/*! fs-minipass */ "../../../.yarn/berry/cache/fs-minipass-npm-2.1.0-501ef87306-9.zip/node_modules/fs-minipass/index.js") const path = __webpack_require__(/*! path */ "path") +const mkdir = __webpack_require__(/*! ./mkdir.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/mkdir.js") +const wc = __webpack_require__(/*! ./winchars.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/winchars.js") +const pathReservations = __webpack_require__(/*! ./path-reservations.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/path-reservations.js") +const stripAbsolutePath = __webpack_require__(/*! ./strip-absolute-path.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/strip-absolute-path.js") +const normPath = __webpack_require__(/*! ./normalize-windows-path.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/normalize-windows-path.js") +const stripSlash = __webpack_require__(/*! ./strip-trailing-slashes.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/strip-trailing-slashes.js") +const normalize = __webpack_require__(/*! ./normalize-unicode.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/normalize-unicode.js") -const c = module.exports = (opt_, files, cb) => { - if (typeof files === 'function') - cb = files - - if (Array.isArray(opt_)) - files = opt_, opt_ = {} - - if (!files || !Array.isArray(files) || !files.length) - throw new TypeError('no files or directories specified') - - files = Array.from(files) - - const opt = hlo(opt_) - - if (opt.sync && typeof cb === 'function') - throw new TypeError('callback not supported for sync tar functions') - - if (!opt.file && typeof cb === 'function') - throw new TypeError('callback only supported with file option') +const ONENTRY = Symbol('onEntry') +const CHECKFS = Symbol('checkFs') +const CHECKFS2 = Symbol('checkFs2') +const PRUNECACHE = Symbol('pruneCache') +const ISREUSABLE = Symbol('isReusable') +const MAKEFS = Symbol('makeFs') +const FILE = Symbol('file') +const DIRECTORY = Symbol('directory') +const LINK = Symbol('link') +const SYMLINK = Symbol('symlink') +const HARDLINK = Symbol('hardlink') +const UNSUPPORTED = Symbol('unsupported') +const CHECKPATH = Symbol('checkPath') +const MKDIR = Symbol('mkdir') +const ONERROR = Symbol('onError') +const PENDING = Symbol('pending') +const PEND = Symbol('pend') +const UNPEND = Symbol('unpend') +const ENDED = Symbol('ended') +const MAYBECLOSE = Symbol('maybeClose') +const SKIP = Symbol('skip') +const DOCHOWN = Symbol('doChown') +const UID = Symbol('uid') +const GID = Symbol('gid') +const CHECKED_CWD = Symbol('checkedCwd') +const crypto = __webpack_require__(/*! crypto */ "crypto") +const getFlag = __webpack_require__(/*! ./get-write-flag.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/get-write-flag.js") +const platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform +const isWindows = platform === 'win32' - return opt.file && opt.sync ? createFileSync(opt, files) - : opt.file ? createFile(opt, files, cb) - : opt.sync ? createSync(opt, files) - : create(opt, files) -} +// Unlinks on Windows are not atomic. +// +// This means that if you have a file entry, followed by another +// file entry with an identical name, and you cannot re-use the file +// (because it's a hardlink, or because unlink:true is set, or it's +// Windows, which does not have useful nlink values), then the unlink +// will be committed to the disk AFTER the new file has been written +// over the old one, deleting the new file. +// +// To work around this, on Windows systems, we rename the file and then +// delete the renamed file. It's a sloppy kludge, but frankly, I do not +// know of a better way to do this, given windows' non-atomic unlink +// semantics. +// +// See: https://github.com/npm/node-tar/issues/183 +/* istanbul ignore next */ +const unlinkFile = (path, cb) => { + if (!isWindows) + return fs.unlink(path, cb) -const createFileSync = (opt, files) => { - const p = new Pack.Sync(opt) - const stream = new fsm.WriteStreamSync(opt.file, { - mode: opt.mode || 0o666 + const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex') + fs.rename(path, name, er => { + if (er) + return cb(er) + fs.unlink(name, cb) }) - p.pipe(stream) - addFilesSync(p, files) } -const createFile = (opt, files, cb) => { - const p = new Pack(opt) - const stream = new fsm.WriteStream(opt.file, { - mode: opt.mode || 0o666 - }) - p.pipe(stream) - - const promise = new Promise((res, rej) => { - stream.on('error', rej) - stream.on('close', res) - p.on('error', rej) - }) - - addFilesAsync(p, files) +/* istanbul ignore next */ +const unlinkFileSync = path => { + if (!isWindows) + return fs.unlinkSync(path) - return cb ? promise.then(cb, cb) : promise + const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex') + fs.renameSync(path, name) + fs.unlinkSync(name) } -const addFilesSync = (p, files) => { - files.forEach(file => { - if (file.charAt(0) === '@') - t({ - file: path.resolve(p.cwd, file.substr(1)), - sync: true, - noResume: true, - onentry: entry => p.add(entry) - }) - else - p.add(file) - }) - p.end() -} +// this.gid, entry.gid, this.processUid +const uint32 = (a, b, c) => + a === a >>> 0 ? a + : b === b >>> 0 ? b + : c -const addFilesAsync = (p, files) => { - while (files.length) { - const file = files.shift() - if (file.charAt(0) === '@') - return t({ - file: path.resolve(p.cwd, file.substr(1)), - noResume: true, - onentry: entry => p.add(entry) - }).then(_ => addFilesAsync(p, files)) - else - p.add(file) +// clear the cache if it's a case-insensitive unicode-squashing match. +// we can't know if the current file system is case-sensitive or supports +// unicode fully, so we check for similarity on the maximally compatible +// representation. Err on the side of pruning, since all it's doing is +// preventing lstats, and it's not the end of the world if we get a false +// positive. +// Note that on windows, we always drop the entire cache whenever a +// symbolic link is encountered, because 8.3 filenames are impossible +// to reason about, and collisions are hazards rather than just failures. +const cacheKeyNormalize = path => normalize(stripSlash(normPath(path))) + .toLowerCase() + +const pruneCache = (cache, abs) => { + abs = cacheKeyNormalize(abs) + for (const path of cache.keys()) { + const pnorm = cacheKeyNormalize(path) + if (pnorm === abs || pnorm.indexOf(abs + '/') === 0) + cache.delete(path) } - p.end() } -const createSync = (opt, files) => { - const p = new Pack.Sync(opt) - addFilesSync(p, files) - return p +const dropCache = cache => { + for (const key of cache.keys()) + cache.delete(key) } -const create = (opt, files) => { - const p = new Pack(opt) - addFilesAsync(p, files) - return p -} +class Unpack extends Parser { + constructor (opt) { + if (!opt) + opt = {} + opt.ondone = _ => { + this[ENDED] = true + this[MAYBECLOSE]() + } -/***/ }), + super(opt) -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/extract.js": -/*!*********************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/extract.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + this[CHECKED_CWD] = false -"use strict"; + this.reservations = pathReservations() + this.transform = typeof opt.transform === 'function' ? opt.transform : null -// tar -x -const hlo = __webpack_require__(/*! ./high-level-opt.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/high-level-opt.js") -const Unpack = __webpack_require__(/*! ./unpack.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/unpack.js") -const fs = __webpack_require__(/*! fs */ "fs") -const fsm = __webpack_require__(/*! fs-minipass */ "./.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip/node_modules/fs-minipass/index.js") -const path = __webpack_require__(/*! path */ "path") + this.writable = true + this.readable = false -const x = module.exports = (opt_, files, cb) => { - if (typeof opt_ === 'function') - cb = opt_, files = null, opt_ = {} - else if (Array.isArray(opt_)) - files = opt_, opt_ = {} + this[PENDING] = 0 + this[ENDED] = false - if (typeof files === 'function') - cb = files, files = null + this.dirCache = opt.dirCache || new Map() - if (!files) - files = [] - else - files = Array.from(files) + if (typeof opt.uid === 'number' || typeof opt.gid === 'number') { + // need both or neither + if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number') + throw new TypeError('cannot set owner without number uid and gid') + if (opt.preserveOwner) { + throw new TypeError( + 'cannot preserve owner in archive and also set owner explicitly') + } + this.uid = opt.uid + this.gid = opt.gid + this.setOwner = true + } else { + this.uid = null + this.gid = null + this.setOwner = false + } - const opt = hlo(opt_) + // default true for root + if (opt.preserveOwner === undefined && typeof opt.uid !== 'number') + this.preserveOwner = process.getuid && process.getuid() === 0 + else + this.preserveOwner = !!opt.preserveOwner - if (opt.sync && typeof cb === 'function') - throw new TypeError('callback not supported for sync tar functions') + this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ? + process.getuid() : null + this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ? + process.getgid() : null - if (!opt.file && typeof cb === 'function') - throw new TypeError('callback only supported with file option') + // mostly just for testing, but useful in some cases. + // Forcibly trigger a chown on every entry, no matter what + this.forceChown = opt.forceChown === true - if (files.length) - filesFilter(opt, files) + // turn > { - const map = new Map(files.map(f => [f.replace(/\/+$/, ''), true])) - const filter = opt.filter + // do not unpack over ANY files + this.keep = !!opt.keep - const mapHas = (file, r) => { - const root = r || path.parse(file).root || '.' - const ret = file === root ? false - : map.has(file) ? map.get(file) - : mapHas(path.dirname(file), root) + // do not set mtime/atime of extracted entries + this.noMtime = !!opt.noMtime - map.set(file, ret) - return ret + // allow .., absolute path entries, and unpacking through symlinks + // without this, warn and skip .., relativize absolutes, and error + // on symlinks in extraction path + this.preservePaths = !!opt.preservePaths + + // unlink files and links before writing. This breaks existing hard + // links, and removes symlink directories rather than erroring + this.unlink = !!opt.unlink + + this.cwd = normPath(path.resolve(opt.cwd || process.cwd())) + this.strip = +opt.strip || 0 + // if we're not chmodding, then we don't need the process umask + this.processUmask = opt.noChmod ? 0 : process.umask() + this.umask = typeof opt.umask === 'number' ? opt.umask : this.processUmask + + // default mode for dirs created as parents + this.dmode = opt.dmode || (0o0777 & (~this.umask)) + this.fmode = opt.fmode || (0o0666 & (~this.umask)) + + this.on('entry', entry => this[ONENTRY](entry)) } - opt.filter = filter - ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\/+$/, '')) - : file => mapHas(file.replace(/\/+$/, '')) -} + // a bad or damaged archive is a warning for Parser, but an error + // when extracting. Mark those errors as unrecoverable, because + // the Unpack contract cannot be met. + warn (code, msg, data = {}) { + if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT') + data.recoverable = false + return super.warn(code, msg, data) + } -const extractFileSync = opt => { - const u = new Unpack.Sync(opt) + [MAYBECLOSE] () { + if (this[ENDED] && this[PENDING] === 0) { + this.emit('prefinish') + this.emit('finish') + this.emit('end') + this.emit('close') + } + } - const file = opt.file - let threw = true - let fd - const stat = fs.statSync(file) - // This trades a zero-byte read() syscall for a stat - // However, it will usually result in less memory allocation - const readSize = opt.maxReadSize || 16*1024*1024 - const stream = new fsm.ReadStreamSync(file, { - readSize: readSize, - size: stat.size - }) - stream.pipe(u) -} + [CHECKPATH] (entry) { + if (this.strip) { + const parts = normPath(entry.path).split('/') + if (parts.length < this.strip) + return false + entry.path = parts.slice(this.strip).join('/') -const extractFile = (opt, cb) => { - const u = new Unpack(opt) - const readSize = opt.maxReadSize || 16*1024*1024 + if (entry.type === 'Link') { + const linkparts = normPath(entry.linkpath).split('/') + if (linkparts.length >= this.strip) + entry.linkpath = linkparts.slice(this.strip).join('/') + else + return false + } + } - const file = opt.file - const p = new Promise((resolve, reject) => { - u.on('error', reject) - u.on('close', resolve) + if (!this.preservePaths) { + const p = normPath(entry.path) + const parts = p.split('/') + if (parts.includes('..') || isWindows && /^[a-z]:\.\.$/i.test(parts[0])) { + this.warn('TAR_ENTRY_ERROR', `path contains '..'`, { + entry, + path: p, + }) + return false + } - // This trades a zero-byte read() syscall for a stat - // However, it will usually result in less memory allocation - fs.stat(file, (er, stat) => { - if (er) - reject(er) - else { - const stream = new fsm.ReadStream(file, { - readSize: readSize, - size: stat.size + // strip off the root + const [root, stripped] = stripAbsolutePath(p) + if (root) { + entry.path = stripped + this.warn('TAR_ENTRY_INFO', `stripping ${root} from absolute path`, { + entry, + path: p, }) - stream.on('error', reject) - stream.pipe(u) } - }) - }) - return cb ? p.then(cb, cb) : p -} + } -const extractSync = opt => { - return new Unpack.Sync(opt) -} + if (path.isAbsolute(entry.path)) + entry.absolute = normPath(path.resolve(entry.path)) + else + entry.absolute = normPath(path.resolve(this.cwd, entry.path)) + + // if we somehow ended up with a path that escapes the cwd, and we are + // not in preservePaths mode, then something is fishy! This should have + // been prevented above, so ignore this for coverage. + /* istanbul ignore if - defense in depth */ + if (!this.preservePaths && + entry.absolute.indexOf(this.cwd + '/') !== 0 && + entry.absolute !== this.cwd) { + this.warn('TAR_ENTRY_ERROR', 'path escaped extraction target', { + entry, + path: normPath(entry.path), + resolvedPath: entry.absolute, + cwd: this.cwd, + }) + return false + } -const extract = opt => { - return new Unpack(opt) -} + // an archive can set properties on the extraction directory, but it + // may not replace the cwd with a different kind of thing entirely. + if (entry.absolute === this.cwd && + entry.type !== 'Directory' && + entry.type !== 'GNUDumpDir') + return false + // only encode : chars that aren't drive letter indicators + if (this.win32) { + const { root: aRoot } = path.win32.parse(entry.absolute) + entry.absolute = aRoot + wc.encode(entry.absolute.substr(aRoot.length)) + const { root: pRoot } = path.win32.parse(entry.path) + entry.path = pRoot + wc.encode(entry.path.substr(pRoot.length)) + } -/***/ }), + return true + } -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/get-write-flag.js": -/*!****************************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/get-write-flag.js ***! - \****************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + [ONENTRY] (entry) { + if (!this[CHECKPATH](entry)) + return entry.resume() -// Get the appropriate flag to use for creating files -// We use fmap on Windows platforms for files less than -// 512kb. This is a fairly low limit, but avoids making -// things slower in some cases. Since most of what this -// library is used for is extracting tarballs of many -// relatively small files in npm packages and the like, -// it can be a big boost on Windows platforms. -// Only supported in Node v12.9.0 and above. -const platform = process.env.__FAKE_PLATFORM__ || process.platform -const isWindows = platform === 'win32' -const fs = global.__FAKE_TESTING_FS__ || __webpack_require__(/*! fs */ "fs") + assert.equal(typeof entry.absolute, 'string') -/* istanbul ignore next */ -const { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants + switch (entry.type) { + case 'Directory': + case 'GNUDumpDir': + if (entry.mode) + entry.mode = entry.mode | 0o700 -const fMapEnabled = isWindows && !!UV_FS_O_FILEMAP -const fMapLimit = 512 * 1024 -const fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY -module.exports = !fMapEnabled ? () => 'w' - : size => size < fMapLimit ? fMapFlag : 'w' + case 'File': + case 'OldFile': + case 'ContiguousFile': + case 'Link': + case 'SymbolicLink': + return this[CHECKFS](entry) + case 'CharacterDevice': + case 'BlockDevice': + case 'FIFO': + default: + return this[UNSUPPORTED](entry) + } + } -/***/ }), + [ONERROR] (er, entry) { + // Cwd has to exist, or else nothing works. That's serious. + // Other errors are warnings, which raise the error in strict + // mode, but otherwise continue on. + if (er.name === 'CwdError') + this.emit('error', er) + else { + this.warn('TAR_ENTRY_ERROR', er, {entry}) + this[UNPEND]() + entry.resume() + } + } -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/header.js": -/*!********************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/header.js ***! - \********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + [MKDIR] (dir, mode, cb) { + mkdir(normPath(dir), { + uid: this.uid, + gid: this.gid, + processUid: this.processUid, + processGid: this.processGid, + umask: this.processUmask, + preserve: this.preservePaths, + unlink: this.unlink, + cache: this.dirCache, + cwd: this.cwd, + mode: mode, + noChmod: this.noChmod, + }, cb) + } -"use strict"; + [DOCHOWN] (entry) { + // in preserve owner mode, chown if the entry doesn't match process + // in set owner mode, chown if setting doesn't match process + return this.forceChown || + this.preserveOwner && + (typeof entry.uid === 'number' && entry.uid !== this.processUid || + typeof entry.gid === 'number' && entry.gid !== this.processGid) + || + (typeof this.uid === 'number' && this.uid !== this.processUid || + typeof this.gid === 'number' && this.gid !== this.processGid) + } -// parse a 512-byte header block to a data object, or vice-versa -// encode returns `true` if a pax extended header is needed, because -// the data could not be faithfully encoded in a simple header. -// (Also, check header.needPax to see if it needs a pax header.) + [UID] (entry) { + return uint32(this.uid, entry.uid, this.processUid) + } -const types = __webpack_require__(/*! ./types.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/types.js") -const pathModule = __webpack_require__(/*! path */ "path").posix -const large = __webpack_require__(/*! ./large-numbers.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/large-numbers.js") + [GID] (entry) { + return uint32(this.gid, entry.gid, this.processGid) + } -const SLURP = Symbol('slurp') -const TYPE = Symbol('type') + [FILE] (entry, fullyDone) { + const mode = entry.mode & 0o7777 || this.fmode + const stream = new fsm.WriteStream(entry.absolute, { + flags: getFlag(entry.size), + mode: mode, + autoClose: false, + }) + stream.on('error', er => { + if (stream.fd) + fs.close(stream.fd, () => {}) + + // flush all the data out so that we aren't left hanging + // if the error wasn't actually fatal. otherwise the parse + // is blocked, and we never proceed. + stream.write = () => true + this[ONERROR](er, entry) + fullyDone() + }) -class Header { - constructor (data, off, ex, gex) { - this.cksumValid = false - this.needPax = false - this.nullBlock = false + let actions = 1 + const done = er => { + if (er) { + /* istanbul ignore else - we should always have a fd by now */ + if (stream.fd) + fs.close(stream.fd, () => {}) - this.block = null - this.path = null - this.mode = null - this.uid = null - this.gid = null - this.size = null - this.mtime = null - this.cksum = null - this[TYPE] = '0' - this.linkpath = null - this.uname = null - this.gname = null - this.devmaj = 0 - this.devmin = 0 - this.atime = null - this.ctime = null - - if (Buffer.isBuffer(data)) - this.decode(data, off || 0, ex, gex) - else if (data) - this.set(data) - } - - decode (buf, off, ex, gex) { - if (!off) - off = 0 - - if (!buf || !(buf.length >= off + 512)) - throw new Error('need 512 bytes for header') - - this.path = decString(buf, off, 100) - this.mode = decNumber(buf, off + 100, 8) - this.uid = decNumber(buf, off + 108, 8) - this.gid = decNumber(buf, off + 116, 8) - this.size = decNumber(buf, off + 124, 12) - this.mtime = decDate(buf, off + 136, 12) - this.cksum = decNumber(buf, off + 148, 12) + this[ONERROR](er, entry) + fullyDone() + return + } - // if we have extended or global extended headers, apply them now - // See https://github.com/npm/node-tar/pull/187 - this[SLURP](ex) - this[SLURP](gex, true) + if (--actions === 0) { + fs.close(stream.fd, er => { + if (er) + this[ONERROR](er, entry) + else + this[UNPEND]() + fullyDone() + }) + } + } - // old tar versions marked dirs as a file with a trailing / - this[TYPE] = decString(buf, off + 156, 1) - if (this[TYPE] === '') - this[TYPE] = '0' - if (this[TYPE] === '0' && this.path.substr(-1) === '/') - this[TYPE] = '5' + stream.on('finish', _ => { + // if futimes fails, try utimes + // if utimes fails, fail with the original error + // same for fchown/chown + const abs = entry.absolute + const fd = stream.fd - // tar implementations sometimes incorrectly put the stat(dir).size - // as the size in the tarball, even though Directory entries are - // not able to have any body at all. In the very rare chance that - // it actually DOES have a body, we weren't going to do anything with - // it anyway, and it'll just be a warning about an invalid header. - if (this[TYPE] === '5') - this.size = 0 + if (entry.mtime && !this.noMtime) { + actions++ + const atime = entry.atime || new Date() + const mtime = entry.mtime + fs.futimes(fd, atime, mtime, er => + er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er)) + : done()) + } - this.linkpath = decString(buf, off + 157, 100) - if (buf.slice(off + 257, off + 265).toString() === 'ustar\u000000') { - this.uname = decString(buf, off + 265, 32) - this.gname = decString(buf, off + 297, 32) - this.devmaj = decNumber(buf, off + 329, 8) - this.devmin = decNumber(buf, off + 337, 8) - if (buf[off + 475] !== 0) { - // definitely a prefix, definitely >130 chars. - const prefix = decString(buf, off + 345, 155) - this.path = prefix + '/' + this.path - } else { - const prefix = decString(buf, off + 345, 130) - if (prefix) - this.path = prefix + '/' + this.path - this.atime = decDate(buf, off + 476, 12) - this.ctime = decDate(buf, off + 488, 12) + if (this[DOCHOWN](entry)) { + actions++ + const uid = this[UID](entry) + const gid = this[GID](entry) + fs.fchown(fd, uid, gid, er => + er ? fs.chown(abs, uid, gid, er2 => done(er2 && er)) + : done()) } - } - let sum = 8 * 0x20 - for (let i = off; i < off + 148; i++) { - sum += buf[i] - } - for (let i = off + 156; i < off + 512; i++) { - sum += buf[i] - } - this.cksumValid = sum === this.cksum - if (this.cksum === null && sum === 8 * 0x20) - this.nullBlock = true - } + done() + }) - [SLURP] (ex, global) { - for (let k in ex) { - // we slurp in everything except for the path attribute in - // a global extended header, because that's weird. - if (ex[k] !== null && ex[k] !== undefined && - !(global && k === 'path')) - this[k] = ex[k] + const tx = this.transform ? this.transform(entry) || entry : entry + if (tx !== entry) { + tx.on('error', er => { + this[ONERROR](er, entry) + fullyDone() + }) + entry.pipe(tx) } + tx.pipe(stream) } - encode (buf, off) { - if (!buf) { - buf = this.block = Buffer.alloc(512) - off = 0 - } + [DIRECTORY] (entry, fullyDone) { + const mode = entry.mode & 0o7777 || this.dmode + this[MKDIR](entry.absolute, mode, er => { + if (er) { + this[ONERROR](er, entry) + fullyDone() + return + } - if (!off) - off = 0 + let actions = 1 + const done = _ => { + if (--actions === 0) { + fullyDone() + this[UNPEND]() + entry.resume() + } + } - if (!(buf.length >= off + 512)) - throw new Error('need 512 bytes for header') + if (entry.mtime && !this.noMtime) { + actions++ + fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done) + } - const prefixSize = this.ctime || this.atime ? 130 : 155 - const split = splitPrefix(this.path || '', prefixSize) - const path = split[0] - const prefix = split[1] - this.needPax = split[2] + if (this[DOCHOWN](entry)) { + actions++ + fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done) + } - this.needPax = encString(buf, off, 100, path) || this.needPax - this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax - this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax - this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax - this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax - this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax - buf[off + 156] = this[TYPE].charCodeAt(0) - this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax - buf.write('ustar\u000000', off + 257, 8) - this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax - this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax - this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax - this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax - this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax - if (buf[off + 475] !== 0) - this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax - else { - this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax - this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax - this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax - } + done() + }) + } - let sum = 8 * 0x20 - for (let i = off; i < off + 148; i++) { - sum += buf[i] - } - for (let i = off + 156; i < off + 512; i++) { - sum += buf[i] - } - this.cksum = sum - encNumber(buf, off + 148, 8, this.cksum) - this.cksumValid = true + [UNSUPPORTED] (entry) { + entry.unsupported = true + this.warn('TAR_ENTRY_UNSUPPORTED', + `unsupported entry type: ${entry.type}`, {entry}) + entry.resume() + } - return this.needPax + [SYMLINK] (entry, done) { + this[LINK](entry, entry.linkpath, 'symlink', done) } - set (data) { - for (let i in data) { - if (data[i] !== null && data[i] !== undefined) - this[i] = data[i] - } + [HARDLINK] (entry, done) { + const linkpath = normPath(path.resolve(this.cwd, entry.linkpath)) + this[LINK](entry, linkpath, 'link', done) } - get type () { - return types.name.get(this[TYPE]) || this[TYPE] + [PEND] () { + this[PENDING]++ } - get typeKey () { - return this[TYPE] + [UNPEND] () { + this[PENDING]-- + this[MAYBECLOSE]() } - set type (type) { - if (types.code.has(type)) - this[TYPE] = types.code.get(type) - else - this[TYPE] = type + [SKIP] (entry) { + this[UNPEND]() + entry.resume() } -} -const splitPrefix = (p, prefixSize) => { - const pathSize = 100 - let pp = p - let prefix = '' - let ret - const root = pathModule.parse(p).root || '.' + // Check if we can reuse an existing filesystem entry safely and + // overwrite it, rather than unlinking and recreating + // Windows doesn't report a useful nlink, so we just never reuse entries + [ISREUSABLE] (entry, st) { + return entry.type === 'File' && + !this.unlink && + st.isFile() && + st.nlink <= 1 && + !isWindows + } - if (Buffer.byteLength(pp) < pathSize) - ret = [pp, prefix, false] - else { - // first set prefix to the dir, and path to the base - prefix = pathModule.dirname(pp) - pp = pathModule.basename(pp) + // check if a thing is there, and if so, try to clobber it + [CHECKFS] (entry) { + this[PEND]() + const paths = [entry.path] + if (entry.linkpath) + paths.push(entry.linkpath) + this.reservations.reserve(paths, done => this[CHECKFS2](entry, done)) + } - do { - // both fit! - if (Buffer.byteLength(pp) <= pathSize && - Buffer.byteLength(prefix) <= prefixSize) - ret = [pp, prefix, false] + [PRUNECACHE] (entry) { + // if we are not creating a directory, and the path is in the dirCache, + // then that means we are about to delete the directory we created + // previously, and it is no longer going to be a directory, and neither + // is any of its children. + // If a symbolic link is encountered, all bets are off. There is no + // reasonable way to sanitize the cache in such a way we will be able to + // avoid having filesystem collisions. If this happens with a non-symlink + // entry, it'll just fail to unpack, but a symlink to a directory, using an + // 8.3 shortname or certain unicode attacks, can evade detection and lead + // to arbitrary writes to anywhere on the system. + if (entry.type === 'SymbolicLink') + dropCache(this.dirCache) + else if (entry.type !== 'Directory') + pruneCache(this.dirCache, entry.absolute) + } - // prefix fits in prefix, but path doesn't fit in path - else if (Buffer.byteLength(pp) > pathSize && - Buffer.byteLength(prefix) <= prefixSize) - ret = [pp.substr(0, pathSize - 1), prefix, true] - - else { - // make path take a bit from prefix - pp = pathModule.join(pathModule.basename(prefix), pp) - prefix = pathModule.dirname(prefix) - } - } while (prefix !== root && !ret) - - // at this point, found no resolution, just truncate - if (!ret) - ret = [p.substr(0, pathSize - 1), '', true] - } - return ret -} + [CHECKFS2] (entry, fullyDone) { + this[PRUNECACHE](entry) -const decString = (buf, off, size) => - buf.slice(off, off + size).toString('utf8').replace(/\0.*/, '') + const done = er => { + this[PRUNECACHE](entry) + fullyDone(er) + } -const decDate = (buf, off, size) => - numToDate(decNumber(buf, off, size)) + const checkCwd = () => { + this[MKDIR](this.cwd, this.dmode, er => { + if (er) { + this[ONERROR](er, entry) + done() + return + } + this[CHECKED_CWD] = true + start() + }) + } -const numToDate = num => num === null ? null : new Date(num * 1000) + const start = () => { + if (entry.absolute !== this.cwd) { + const parent = normPath(path.dirname(entry.absolute)) + if (parent !== this.cwd) { + return this[MKDIR](parent, this.dmode, er => { + if (er) { + this[ONERROR](er, entry) + done() + return + } + afterMakeParent() + }) + } + } + afterMakeParent() + } -const decNumber = (buf, off, size) => - buf[off] & 0x80 ? large.parse(buf.slice(off, off + size)) - : decSmallNumber(buf, off, size) + const afterMakeParent = () => { + fs.lstat(entry.absolute, (lstatEr, st) => { + if (st && (this.keep || this.newer && st.mtime > entry.mtime)) { + this[SKIP](entry) + done() + return + } + if (lstatEr || this[ISREUSABLE](entry, st)) + return this[MAKEFS](null, entry, done) -const nanNull = value => isNaN(value) ? null : value + if (st.isDirectory()) { + if (entry.type === 'Directory') { + const needChmod = !this.noChmod && + entry.mode && + (st.mode & 0o7777) !== entry.mode + const afterChmod = er => this[MAKEFS](er, entry, done) + if (!needChmod) + return afterChmod() + return fs.chmod(entry.absolute, entry.mode, afterChmod) + } + // Not a dir entry, have to remove it. + // NB: the only way to end up with an entry that is the cwd + // itself, in such a way that == does not detect, is a + // tricky windows absolute path with UNC or 8.3 parts (and + // preservePaths:true, or else it will have been stripped). + // In that case, the user has opted out of path protections + // explicitly, so if they blow away the cwd, c'est la vie. + if (entry.absolute !== this.cwd) { + return fs.rmdir(entry.absolute, er => + this[MAKEFS](er, entry, done)) + } + } -const decSmallNumber = (buf, off, size) => - nanNull(parseInt( - buf.slice(off, off + size) - .toString('utf8').replace(/\0.*$/, '').trim(), 8)) + // not a dir, and not reusable + // don't remove if the cwd, we want that error + if (entry.absolute === this.cwd) + return this[MAKEFS](null, entry, done) -// the maximum encodable as a null-terminated octal, by field size -const MAXNUM = { - 12: 0o77777777777, - 8 : 0o7777777 -} + unlinkFile(entry.absolute, er => + this[MAKEFS](er, entry, done)) + }) + } -const encNumber = (buf, off, size, number) => - number === null ? false : - number > MAXNUM[size] || number < 0 - ? (large.encode(number, buf.slice(off, off + size)), true) - : (encSmallNumber(buf, off, size, number), false) + if (this[CHECKED_CWD]) + start() + else + checkCwd() + } -const encSmallNumber = (buf, off, size, number) => - buf.write(octalString(number, size), off, size, 'ascii') + [MAKEFS] (er, entry, done) { + if (er) { + this[ONERROR](er, entry) + done() + return + } -const octalString = (number, size) => - padOctal(Math.floor(number).toString(8), size) + switch (entry.type) { + case 'File': + case 'OldFile': + case 'ContiguousFile': + return this[FILE](entry, done) -const padOctal = (string, size) => - (string.length === size - 1 ? string - : new Array(size - string.length - 1).join('0') + string + ' ') + '\0' + case 'Link': + return this[HARDLINK](entry, done) -const encDate = (buf, off, size, date) => - date === null ? false : - encNumber(buf, off, size, date.getTime() / 1000) + case 'SymbolicLink': + return this[SYMLINK](entry, done) -// enough to fill the longest string we've got -const NULLS = new Array(156).join('\0') -// pad with nulls, return true if it's longer or non-ascii -const encString = (buf, off, size, string) => - string === null ? false : - (buf.write(string + NULLS, off, size, 'utf8'), - string.length !== Buffer.byteLength(string) || string.length > size) + case 'Directory': + case 'GNUDumpDir': + return this[DIRECTORY](entry, done) + } + } -module.exports = Header + [LINK] (entry, linkpath, link, done) { + // XXX: get the type ('symlink' or 'junction') for windows + fs[link](linkpath, entry.absolute, er => { + if (er) + this[ONERROR](er, entry) + else { + this[UNPEND]() + entry.resume() + } + done() + }) + } +} +const callSync = fn => { + try { + return [null, fn()] + } catch (er) { + return [er, null] + } +} +class UnpackSync extends Unpack { + [MAKEFS] (er, entry) { + return super[MAKEFS](er, entry, () => {}) + } -/***/ }), + [CHECKFS] (entry) { + this[PRUNECACHE](entry) -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/high-level-opt.js": -/*!****************************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/high-level-opt.js ***! - \****************************************************************************************************/ -/***/ ((module) => { + if (!this[CHECKED_CWD]) { + const er = this[MKDIR](this.cwd, this.dmode) + if (er) + return this[ONERROR](er, entry) + this[CHECKED_CWD] = true + } -"use strict"; + // don't bother to make the parent if the current entry is the cwd, + // we've already checked it. + if (entry.absolute !== this.cwd) { + const parent = normPath(path.dirname(entry.absolute)) + if (parent !== this.cwd) { + const mkParent = this[MKDIR](parent, this.dmode) + if (mkParent) + return this[ONERROR](mkParent, entry) + } + } + const [lstatEr, st] = callSync(() => fs.lstatSync(entry.absolute)) + if (st && (this.keep || this.newer && st.mtime > entry.mtime)) + return this[SKIP](entry) -// turn tar(1) style args like `C` into the more verbose things like `cwd` + if (lstatEr || this[ISREUSABLE](entry, st)) + return this[MAKEFS](null, entry) -const argmap = new Map([ - ['C', 'cwd'], - ['f', 'file'], - ['z', 'gzip'], - ['P', 'preservePaths'], - ['U', 'unlink'], - ['strip-components', 'strip'], - ['stripComponents', 'strip'], - ['keep-newer', 'newer'], - ['keepNewer', 'newer'], - ['keep-newer-files', 'newer'], - ['keepNewerFiles', 'newer'], - ['k', 'keep'], - ['keep-existing', 'keep'], - ['keepExisting', 'keep'], - ['m', 'noMtime'], - ['no-mtime', 'noMtime'], - ['p', 'preserveOwner'], - ['L', 'follow'], - ['h', 'follow'] -]) + if (st.isDirectory()) { + if (entry.type === 'Directory') { + const needChmod = !this.noChmod && + entry.mode && + (st.mode & 0o7777) !== entry.mode + const [er] = needChmod ? callSync(() => { + fs.chmodSync(entry.absolute, entry.mode) + }) : [] + return this[MAKEFS](er, entry) + } + // not a dir entry, have to remove it + const [er] = callSync(() => fs.rmdirSync(entry.absolute)) + this[MAKEFS](er, entry) + } -const parse = module.exports = opt => opt ? Object.keys(opt).map(k => [ - argmap.has(k) ? argmap.get(k) : k, opt[k] -]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {} + // not a dir, and not reusable. + // don't remove if it's the cwd, since we want that error. + const [er] = entry.absolute === this.cwd ? [] + : callSync(() => unlinkFileSync(entry.absolute)) + this[MAKEFS](er, entry) + } + [FILE] (entry, done) { + const mode = entry.mode & 0o7777 || this.fmode -/***/ }), + const oner = er => { + let closeError + try { + fs.closeSync(fd) + } catch (e) { + closeError = e + } + if (er || closeError) + this[ONERROR](er || closeError, entry) + done() + } -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/large-numbers.js": -/*!***************************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/large-numbers.js ***! - \***************************************************************************************************/ -/***/ ((__unused_webpack_module, exports) => { + let fd + try { + fd = fs.openSync(entry.absolute, getFlag(entry.size), mode) + } catch (er) { + return oner(er) + } + const tx = this.transform ? this.transform(entry) || entry : entry + if (tx !== entry) { + tx.on('error', er => this[ONERROR](er, entry)) + entry.pipe(tx) + } -"use strict"; + tx.on('data', chunk => { + try { + fs.writeSync(fd, chunk, 0, chunk.length) + } catch (er) { + oner(er) + } + }) -// Tar can encode large and negative numbers using a leading byte of -// 0xff for negative, and 0x80 for positive. + tx.on('end', _ => { + let er = null + // try both, falling futimes back to utimes + // if either fails, handle the first error + if (entry.mtime && !this.noMtime) { + const atime = entry.atime || new Date() + const mtime = entry.mtime + try { + fs.futimesSync(fd, atime, mtime) + } catch (futimeser) { + try { + fs.utimesSync(entry.absolute, atime, mtime) + } catch (utimeser) { + er = futimeser + } + } + } -const encode = exports.encode = (num, buf) => { - if (!Number.isSafeInteger(num)) - // The number is so large that javascript cannot represent it with integer - // precision. - throw Error('cannot encode number outside of javascript safe integer range') - else if (num < 0) - encodeNegative(num, buf) - else - encodePositive(num, buf) - return buf -} + if (this[DOCHOWN](entry)) { + const uid = this[UID](entry) + const gid = this[GID](entry) -const encodePositive = (num, buf) => { - buf[0] = 0x80 + try { + fs.fchownSync(fd, uid, gid) + } catch (fchowner) { + try { + fs.chownSync(entry.absolute, uid, gid) + } catch (chowner) { + er = er || fchowner + } + } + } - for (var i = buf.length; i > 1; i--) { - buf[i-1] = num & 0xff - num = Math.floor(num / 0x100) + oner(er) + }) } -} -const encodeNegative = (num, buf) => { - buf[0] = 0xff - var flipped = false - num = num * -1 - for (var i = buf.length; i > 1; i--) { - var byte = num & 0xff - num = Math.floor(num / 0x100) - if (flipped) - buf[i-1] = onesComp(byte) - else if (byte === 0) - buf[i-1] = 0 - else { - flipped = true - buf[i-1] = twosComp(byte) + [DIRECTORY] (entry, done) { + const mode = entry.mode & 0o7777 || this.dmode + const er = this[MKDIR](entry.absolute, mode) + if (er) { + this[ONERROR](er, entry) + done() + return } - } -} - -const parse = exports.parse = (buf) => { - var post = buf[buf.length - 1] - var pre = buf[0] - var value; - if (pre === 0x80) - value = pos(buf.slice(1, buf.length)) - else if (pre === 0xff) - value = twos(buf) - else - throw Error('invalid base256 encoding') - - if (!Number.isSafeInteger(value)) - // The number is so large that javascript cannot represent it with integer - // precision. - throw Error('parsed number outside of javascript safe integer range') - - return value -} + if (entry.mtime && !this.noMtime) { + try { + fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime) + } catch (er) {} + } + if (this[DOCHOWN](entry)) { + try { + fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry)) + } catch (er) {} + } + done() + entry.resume() + } -const twos = (buf) => { - var len = buf.length - var sum = 0 - var flipped = false - for (var i = len - 1; i > -1; i--) { - var byte = buf[i] - var f - if (flipped) - f = onesComp(byte) - else if (byte === 0) - f = byte - else { - flipped = true - f = twosComp(byte) + [MKDIR] (dir, mode) { + try { + return mkdir.sync(normPath(dir), { + uid: this.uid, + gid: this.gid, + processUid: this.processUid, + processGid: this.processGid, + umask: this.processUmask, + preserve: this.preservePaths, + unlink: this.unlink, + cache: this.dirCache, + cwd: this.cwd, + mode: mode, + }) + } catch (er) { + return er } - if (f !== 0) - sum -= f * Math.pow(256, len - i - 1) } - return sum -} -const pos = (buf) => { - var len = buf.length - var sum = 0 - for (var i = len - 1; i > -1; i--) { - var byte = buf[i] - if (byte !== 0) - sum += byte * Math.pow(256, len - i - 1) + [LINK] (entry, linkpath, link, done) { + try { + fs[link + 'Sync'](linkpath, entry.absolute) + done() + entry.resume() + } catch (er) { + return this[ONERROR](er, entry) + } } - return sum } -const onesComp = byte => (0xff ^ byte) & 0xff - -const twosComp = byte => ((0xff ^ byte) + 1) & 0xff +Unpack.Sync = UnpackSync +module.exports = Unpack /***/ }), -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/list.js": -/*!******************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/list.js ***! - \******************************************************************************************/ +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/update.js": +/*!*************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/update.js ***! + \*************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; -// XXX: This shares a lot in common with extract.js -// maybe some DRY opportunity here? - -// tar -t -const hlo = __webpack_require__(/*! ./high-level-opt.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/high-level-opt.js") -const Parser = __webpack_require__(/*! ./parse.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/parse.js") -const fs = __webpack_require__(/*! fs */ "fs") -const fsm = __webpack_require__(/*! fs-minipass */ "./.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip/node_modules/fs-minipass/index.js") -const path = __webpack_require__(/*! path */ "path") - -const t = module.exports = (opt_, files, cb) => { - if (typeof opt_ === 'function') - cb = opt_, files = null, opt_ = {} - else if (Array.isArray(opt_)) - files = opt_, opt_ = {} - - if (typeof files === 'function') - cb = files, files = null +// tar -u - if (!files) - files = [] - else - files = Array.from(files) +const hlo = __webpack_require__(/*! ./high-level-opt.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/high-level-opt.js") +const r = __webpack_require__(/*! ./replace.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/replace.js") +// just call tar.r with the filter and mtimeCache +module.exports = (opt_, files, cb) => { const opt = hlo(opt_) - if (opt.sync && typeof cb === 'function') - throw new TypeError('callback not supported for sync tar functions') + if (!opt.file) + throw new TypeError('file is required') - if (!opt.file && typeof cb === 'function') - throw new TypeError('callback only supported with file option') + if (opt.gzip) + throw new TypeError('cannot append to compressed archives') - if (files.length) - filesFilter(opt, files) + if (!files || !Array.isArray(files) || !files.length) + throw new TypeError('no files or directories specified') - if (!opt.noResume) - onentryFunction(opt) + files = Array.from(files) - return opt.file && opt.sync ? listFileSync(opt) - : opt.file ? listFile(opt, cb) - : list(opt) + mtimeFilter(opt) + return r(opt, files, cb) } -const onentryFunction = opt => { - const onentry = opt.onentry - opt.onentry = onentry ? e => { - onentry(e) - e.resume() - } : e => e.resume() +const mtimeFilter = opt => { + const filter = opt.filter + + if (!opt.mtimeCache) + opt.mtimeCache = new Map() + + opt.filter = filter ? (path, stat) => + filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime) + : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime) } -// construct a filter that limits the file entries listed -// include child entries if a dir is included -const filesFilter = (opt, files) => { - const map = new Map(files.map(f => [f.replace(/\/+$/, ''), true])) - const filter = opt.filter - const mapHas = (file, r) => { - const root = r || path.parse(file).root || '.' - const ret = file === root ? false - : map.has(file) ? map.get(file) - : mapHas(path.dirname(file), root) +/***/ }), - map.set(file, ret) - return ret - } +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/warn-mixin.js": +/*!*****************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/warn-mixin.js ***! + \*****************************************************************************************************/ +/***/ ((module) => { - opt.filter = filter - ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\/+$/, '')) - : file => mapHas(file.replace(/\/+$/, '')) -} +"use strict"; -const listFileSync = opt => { - const p = list(opt) - const file = opt.file - let threw = true - let fd - try { - const stat = fs.statSync(file) - const readSize = opt.maxReadSize || 16*1024*1024 - if (stat.size < readSize) { - p.end(fs.readFileSync(file)) - } else { - let pos = 0 - const buf = Buffer.allocUnsafe(readSize) - fd = fs.openSync(file, 'r') - while (pos < stat.size) { - let bytesRead = fs.readSync(fd, buf, 0, readSize, pos) - pos += bytesRead - p.write(buf.slice(0, bytesRead)) +module.exports = Base => class extends Base { + warn (code, message, data = {}) { + if (this.file) + data.file = this.file + if (this.cwd) + data.cwd = this.cwd + data.code = message instanceof Error && message.code || code + data.tarCode = code + if (!this.strict && data.recoverable !== false) { + if (message instanceof Error) { + data = Object.assign(message, data) + message = message.message } - p.end() - } - threw = false - } finally { - if (threw && fd) - try { fs.closeSync(fd) } catch (er) {} + this.emit('warn', data.tarCode, message, data) + } else if (message instanceof Error) + this.emit('error', Object.assign(message, data)) + else + this.emit('error', Object.assign(new Error(`${code}: ${message}`), data)) } } -const listFile = (opt, cb) => { - const parse = new Parser(opt) - const readSize = opt.maxReadSize || 16*1024*1024 - const file = opt.file - const p = new Promise((resolve, reject) => { - parse.on('error', reject) - parse.on('end', resolve) +/***/ }), - fs.stat(file, (er, stat) => { - if (er) - reject(er) - else { - const stream = new fsm.ReadStream(file, { - readSize: readSize, - size: stat.size - }) - stream.on('error', reject) - stream.pipe(parse) - } - }) - }) - return cb ? p.then(cb, cb) : p -} +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/winchars.js": +/*!***************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/winchars.js ***! + \***************************************************************************************************/ +/***/ ((module) => { -const list = opt => new Parser(opt) +"use strict"; + + +// When writing files on Windows, translate the characters to their +// 0xf000 higher-encoded versions. + +const raw = [ + '|', + '<', + '>', + '?', + ':', +] + +const win = raw.map(char => + String.fromCharCode(0xf000 + char.charCodeAt(0))) + +const toWin = new Map(raw.map((char, i) => [char, win[i]])) +const toRaw = new Map(win.map((char, i) => [char, raw[i]])) + +module.exports = { + encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s), + decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s), +} /***/ }), -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/mkdir.js": -/*!*******************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/mkdir.js ***! - \*******************************************************************************************/ +/***/ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/write-entry.js": +/*!******************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/write-entry.js ***! + \******************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; -// wrapper around mkdirp for tar's needs. - -// TODO: This should probably be a class, not functionally -// passing around state in a gazillion args. - -const mkdirp = __webpack_require__(/*! mkdirp */ "./.yarn/cache/mkdirp-npm-1.0.3-02fc91ac70-c5c46ae417.zip/node_modules/mkdirp/index.js") +const MiniPass = __webpack_require__(/*! minipass */ "../../../.yarn/berry/cache/minipass-npm-3.3.4-6cf48a6c5e-9.zip/node_modules/minipass/index.js") +const Pax = __webpack_require__(/*! ./pax.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/pax.js") +const Header = __webpack_require__(/*! ./header.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/header.js") const fs = __webpack_require__(/*! fs */ "fs") const path = __webpack_require__(/*! path */ "path") -const chownr = __webpack_require__(/*! chownr */ "./.yarn/cache/chownr-npm-1.1.4-5bd400ab08-115648f8eb.zip/node_modules/chownr/chownr.js") - -class SymlinkError extends Error { - constructor (symlink, path) { - super('Cannot extract through symbolic link') - this.path = path - this.symlink = symlink - } +const normPath = __webpack_require__(/*! ./normalize-windows-path.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/normalize-windows-path.js") +const stripSlash = __webpack_require__(/*! ./strip-trailing-slashes.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/strip-trailing-slashes.js") - get name () { - return 'SylinkError' - } +const prefixPath = (path, prefix) => { + if (!prefix) + return normPath(path) + path = normPath(path).replace(/^\.(\/|$)/, '') + return stripSlash(prefix) + '/' + path } -class CwdError extends Error { - constructor (path, code) { - super(code + ': Cannot cd into \'' + path + '\'') - this.path = path - this.code = code - } - - get name () { - return 'CwdError' - } -} +const maxReadSize = 16 * 1024 * 1024 +const PROCESS = Symbol('process') +const FILE = Symbol('file') +const DIRECTORY = Symbol('directory') +const SYMLINK = Symbol('symlink') +const HARDLINK = Symbol('hardlink') +const HEADER = Symbol('header') +const READ = Symbol('read') +const LSTAT = Symbol('lstat') +const ONLSTAT = Symbol('onlstat') +const ONREAD = Symbol('onread') +const ONREADLINK = Symbol('onreadlink') +const OPENFILE = Symbol('openfile') +const ONOPENFILE = Symbol('onopenfile') +const CLOSE = Symbol('close') +const MODE = Symbol('mode') +const AWAITDRAIN = Symbol('awaitDrain') +const ONDRAIN = Symbol('ondrain') +const PREFIX = Symbol('prefix') +const HAD_ERROR = Symbol('hadError') +const warner = __webpack_require__(/*! ./warn-mixin.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/warn-mixin.js") +const winchars = __webpack_require__(/*! ./winchars.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/winchars.js") +const stripAbsolutePath = __webpack_require__(/*! ./strip-absolute-path.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/strip-absolute-path.js") -const mkdir = module.exports = (dir, opt, cb) => { - // if there's any overlap between mask and mode, - // then we'll need an explicit chmod - const umask = opt.umask - const mode = opt.mode | 0o0700 - const needChmod = (mode & umask) !== 0 +const modeFix = __webpack_require__(/*! ./mode-fix.js */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/lib/mode-fix.js") - const uid = opt.uid - const gid = opt.gid - const doChown = typeof uid === 'number' && - typeof gid === 'number' && - ( uid !== opt.processUid || gid !== opt.processGid ) +const WriteEntry = warner(class WriteEntry extends MiniPass { + constructor (p, opt) { + opt = opt || {} + super(opt) + if (typeof p !== 'string') + throw new TypeError('path is required') + this.path = normPath(p) + // suppress atime, ctime, uid, gid, uname, gname + this.portable = !!opt.portable + // until node has builtin pwnam functions, this'll have to do + this.myuid = process.getuid && process.getuid() || 0 + this.myuser = process.env.USER || '' + this.maxReadSize = opt.maxReadSize || maxReadSize + this.linkCache = opt.linkCache || new Map() + this.statCache = opt.statCache || new Map() + this.preservePaths = !!opt.preservePaths + this.cwd = normPath(opt.cwd || process.cwd()) + this.strict = !!opt.strict + this.noPax = !!opt.noPax + this.noMtime = !!opt.noMtime + this.mtime = opt.mtime || null + this.prefix = opt.prefix ? normPath(opt.prefix) : null - const preserve = opt.preserve - const unlink = opt.unlink - const cache = opt.cache - const cwd = opt.cwd + this.fd = null + this.blockLen = null + this.blockRemain = null + this.buf = null + this.offset = null + this.length = null + this.pos = null + this.remain = null - const done = (er, created) => { - if (er) - cb(er) - else { - cache.set(dir, true) - if (created && doChown) - chownr(created, uid, gid, er => done(er)) - else if (needChmod) - fs.chmod(dir, mode, cb) - else - cb() + if (typeof opt.onwarn === 'function') + this.on('warn', opt.onwarn) + + let pathWarn = false + if (!this.preservePaths) { + const [root, stripped] = stripAbsolutePath(this.path) + if (root) { + this.path = stripped + pathWarn = root + } } - } - if (cache && cache.get(dir) === true) - return done() + this.win32 = !!opt.win32 || process.platform === 'win32' + if (this.win32) { + // force the \ to / normalization, since we might not *actually* + // be on windows, but want \ to be considered a path separator. + this.path = winchars.decode(this.path.replace(/\\/g, '/')) + p = p.replace(/\\/g, '/') + } - if (dir === cwd) - return fs.stat(dir, (er, st) => { - if (er || !st.isDirectory()) - er = new CwdError(dir, er && er.code || 'ENOTDIR') - done(er) - }) + this.absolute = normPath(opt.absolute || path.resolve(this.cwd, p)) - if (preserve) - return mkdirp(dir, {mode}).then(made => done(null, made), done) + if (this.path === '') + this.path = './' - const sub = path.relative(cwd, dir) - const parts = sub.split(/\/|\\/) - mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done) -} + if (pathWarn) { + this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, { + entry: this, + path: pathWarn + this.path, + }) + } -const mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => { - if (!parts.length) - return cb(null, created) - const p = parts.shift() - const part = base + '/' + p - if (cache.get(part)) - return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb) - fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb)) -} + if (this.statCache.has(this.absolute)) + this[ONLSTAT](this.statCache.get(this.absolute)) + else + this[LSTAT]() + } -const onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => { - if (er) { - if (er.path && path.dirname(er.path) === cwd && - (er.code === 'ENOTDIR' || er.code === 'ENOENT')) - return cb(new CwdError(cwd, er.code)) + emit (ev, ...data) { + if (ev === 'error') + this[HAD_ERROR] = true + return super.emit(ev, ...data) + } - fs.lstat(part, (statEr, st) => { - if (statEr) - cb(statEr) - else if (st.isDirectory()) - mkdir_(part, parts, mode, cache, unlink, cwd, created, cb) - else if (unlink) - fs.unlink(part, er => { - if (er) - return cb(er) - fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb)) - }) - else if (st.isSymbolicLink()) - return cb(new SymlinkError(part, part + '/' + parts.join('/'))) - else - cb(er) + [LSTAT] () { + fs.lstat(this.absolute, (er, stat) => { + if (er) + return this.emit('error', er) + this[ONLSTAT](stat) }) - } else { - created = created || part - mkdir_(part, parts, mode, cache, unlink, cwd, created, cb) } -} - -const mkdirSync = module.exports.sync = (dir, opt) => { - // if there's any overlap between mask and mode, - // then we'll need an explicit chmod - const umask = opt.umask - const mode = opt.mode | 0o0700 - const needChmod = (mode & umask) !== 0 - const uid = opt.uid - const gid = opt.gid - const doChown = typeof uid === 'number' && - typeof gid === 'number' && - ( uid !== opt.processUid || gid !== opt.processGid ) - - const preserve = opt.preserve - const unlink = opt.unlink - const cache = opt.cache - const cwd = opt.cwd - - const done = (created) => { - cache.set(dir, true) - if (created && doChown) - chownr.sync(created, uid, gid) - if (needChmod) - fs.chmodSync(dir, mode) + [ONLSTAT] (stat) { + this.statCache.set(this.absolute, stat) + this.stat = stat + if (!stat.isFile()) + stat.size = 0 + this.type = getType(stat) + this.emit('stat', stat) + this[PROCESS]() } - if (cache && cache.get(dir) === true) - return done() - - if (dir === cwd) { - let ok = false - let code = 'ENOTDIR' - try { - ok = fs.statSync(dir).isDirectory() - } catch (er) { - code = er.code - } finally { - if (!ok) - throw new CwdError(dir, code) + [PROCESS] () { + switch (this.type) { + case 'File': return this[FILE]() + case 'Directory': return this[DIRECTORY]() + case 'SymbolicLink': return this[SYMLINK]() + // unsupported types are ignored. + default: return this.end() } - done() - return } - if (preserve) - return done(mkdirp.sync(dir, mode)) + [MODE] (mode) { + return modeFix(mode, this.type === 'Directory', this.portable) + } - const sub = path.relative(cwd, dir) - const parts = sub.split(/\/|\\/) - let created = null - for (let p = parts.shift(), part = cwd; - p && (part += '/' + p); - p = parts.shift()) { + [PREFIX] (path) { + return prefixPath(path, this.prefix) + } - if (cache.get(part)) - continue + [HEADER] () { + if (this.type === 'Directory' && this.portable) + this.noMtime = true - try { - fs.mkdirSync(part, mode) - created = created || part - cache.set(part, true) - } catch (er) { - if (er.path && path.dirname(er.path) === cwd && - (er.code === 'ENOTDIR' || er.code === 'ENOENT')) - return new CwdError(cwd, er.code) + this.header = new Header({ + path: this[PREFIX](this.path), + // only apply the prefix to hard links. + linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath) + : this.linkpath, + // only the permissions and setuid/setgid/sticky bitflags + // not the higher-order bits that specify file type + mode: this[MODE](this.stat.mode), + uid: this.portable ? null : this.stat.uid, + gid: this.portable ? null : this.stat.gid, + size: this.stat.size, + mtime: this.noMtime ? null : this.mtime || this.stat.mtime, + type: this.type, + uname: this.portable ? null : + this.stat.uid === this.myuid ? this.myuser : '', + atime: this.portable ? null : this.stat.atime, + ctime: this.portable ? null : this.stat.ctime, + }) - const st = fs.lstatSync(part) - if (st.isDirectory()) { - cache.set(part, true) - continue - } else if (unlink) { - fs.unlinkSync(part) - fs.mkdirSync(part, mode) - created = created || part - cache.set(part, true) - continue - } else if (st.isSymbolicLink()) - return new SymlinkError(part, part + '/' + parts.join('/')) + if (this.header.encode() && !this.noPax) { + super.write(new Pax({ + atime: this.portable ? null : this.header.atime, + ctime: this.portable ? null : this.header.ctime, + gid: this.portable ? null : this.header.gid, + mtime: this.noMtime ? null : this.mtime || this.header.mtime, + path: this[PREFIX](this.path), + linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath) + : this.linkpath, + size: this.header.size, + uid: this.portable ? null : this.header.uid, + uname: this.portable ? null : this.header.uname, + dev: this.portable ? null : this.stat.dev, + ino: this.portable ? null : this.stat.ino, + nlink: this.portable ? null : this.stat.nlink, + }).encode()) } + super.write(this.header.block) } - return done(created) -} - - -/***/ }), - -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/mode-fix.js": -/*!**********************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/mode-fix.js ***! - \**********************************************************************************************/ -/***/ ((module) => { + [DIRECTORY] () { + if (this.path.substr(-1) !== '/') + this.path += '/' + this.stat.size = 0 + this[HEADER]() + this.end() + } -"use strict"; + [SYMLINK] () { + fs.readlink(this.absolute, (er, linkpath) => { + if (er) + return this.emit('error', er) + this[ONREADLINK](linkpath) + }) + } -module.exports = (mode, isDir, portable) => { - mode &= 0o7777 + [ONREADLINK] (linkpath) { + this.linkpath = normPath(linkpath) + this[HEADER]() + this.end() + } - // in portable mode, use the minimum reasonable umask - // if this system creates files with 0o664 by default - // (as some linux distros do), then we'll write the - // archive with 0o644 instead. Also, don't ever create - // a file that is not readable/writable by the owner. - if (portable) { - mode = (mode | 0o600) &~0o22 + [HARDLINK] (linkpath) { + this.type = 'Link' + this.linkpath = normPath(path.relative(this.cwd, linkpath)) + this.stat.size = 0 + this[HEADER]() + this.end() } - // if dirs are readable, then they should be listable - if (isDir) { - if (mode & 0o400) - mode |= 0o100 - if (mode & 0o40) - mode |= 0o10 - if (mode & 0o4) - mode |= 0o1 - } - return mode -} - - -/***/ }), - -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/pack.js": -/*!******************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/pack.js ***! - \******************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - + [FILE] () { + if (this.stat.nlink > 1) { + const linkKey = this.stat.dev + ':' + this.stat.ino + if (this.linkCache.has(linkKey)) { + const linkpath = this.linkCache.get(linkKey) + if (linkpath.indexOf(this.cwd) === 0) + return this[HARDLINK](linkpath) + } + this.linkCache.set(linkKey, this.absolute) + } -// A readable tar stream creator -// Technically, this is a transform stream that you write paths into, -// and tar format comes out of. -// The `add()` method is like `write()` but returns this, -// and end() return `this` as well, so you can -// do `new Pack(opt).add('files').add('dir').end().pipe(output) -// You could also do something like: -// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar')) + this[HEADER]() + if (this.stat.size === 0) + return this.end() -class PackJob { - constructor (path, absolute) { - this.path = path || './' - this.absolute = absolute - this.entry = null - this.stat = null - this.readdir = null - this.pending = false - this.ignore = false - this.piped = false + this[OPENFILE]() } -} -const MiniPass = __webpack_require__(/*! minipass */ "./.yarn/cache/minipass-npm-3.1.1-b51d7e264d-cfcfd86adc.zip/node_modules/minipass/index.js") -const zlib = __webpack_require__(/*! minizlib */ "./.yarn/cache/minizlib-npm-2.1.0-9531be52b3-6a811aaa3a.zip/node_modules/minizlib/index.js") -const ReadEntry = __webpack_require__(/*! ./read-entry.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/read-entry.js") -const WriteEntry = __webpack_require__(/*! ./write-entry.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/write-entry.js") -const WriteEntrySync = WriteEntry.Sync -const WriteEntryTar = WriteEntry.Tar -const Yallist = __webpack_require__(/*! yallist */ "./.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip/node_modules/yallist/yallist.js") -const EOF = Buffer.alloc(1024) -const ONSTAT = Symbol('onStat') -const ENDED = Symbol('ended') -const QUEUE = Symbol('queue') -const CURRENT = Symbol('current') -const PROCESS = Symbol('process') -const PROCESSING = Symbol('processing') -const PROCESSJOB = Symbol('processJob') -const JOBS = Symbol('jobs') -const JOBDONE = Symbol('jobDone') -const ADDFSENTRY = Symbol('addFSEntry') -const ADDTARENTRY = Symbol('addTarEntry') -const STAT = Symbol('stat') -const READDIR = Symbol('readdir') -const ONREADDIR = Symbol('onreaddir') -const PIPE = Symbol('pipe') -const ENTRY = Symbol('entry') -const ENTRYOPT = Symbol('entryOpt') -const WRITEENTRYCLASS = Symbol('writeEntryClass') -const WRITE = Symbol('write') -const ONDRAIN = Symbol('ondrain') + [OPENFILE] () { + fs.open(this.absolute, 'r', (er, fd) => { + if (er) + return this.emit('error', er) + this[ONOPENFILE](fd) + }) + } -const fs = __webpack_require__(/*! fs */ "fs") -const path = __webpack_require__(/*! path */ "path") -const warner = __webpack_require__(/*! ./warn-mixin.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/warn-mixin.js") + [ONOPENFILE] (fd) { + this.fd = fd + if (this[HAD_ERROR]) + return this[CLOSE]() + + this.blockLen = 512 * Math.ceil(this.stat.size / 512) + this.blockRemain = this.blockLen + const bufLen = Math.min(this.blockLen, this.maxReadSize) + this.buf = Buffer.allocUnsafe(bufLen) + this.offset = 0 + this.pos = 0 + this.remain = this.stat.size + this.length = this.buf.length + this[READ]() + } + + [READ] () { + const { fd, buf, offset, length, pos } = this + fs.read(fd, buf, offset, length, pos, (er, bytesRead) => { + if (er) { + // ignoring the error from close(2) is a bad practice, but at + // this point we already have an error, don't need another one + return this[CLOSE](() => this.emit('error', er)) + } + this[ONREAD](bytesRead) + }) + } -const Pack = warner(class Pack extends MiniPass { - constructor (opt) { - super(opt) - opt = opt || Object.create(null) - this.opt = opt - this.file = opt.file || '' - this.cwd = opt.cwd || process.cwd() - this.maxReadSize = opt.maxReadSize - this.preservePaths = !!opt.preservePaths - this.strict = !!opt.strict - this.noPax = !!opt.noPax - this.prefix = (opt.prefix || '').replace(/(\\|\/)+$/, '') - this.linkCache = opt.linkCache || new Map() - this.statCache = opt.statCache || new Map() - this.readdirCache = opt.readdirCache || new Map() + [CLOSE] (cb) { + fs.close(this.fd, cb) + } - this[WRITEENTRYCLASS] = WriteEntry - if (typeof opt.onwarn === 'function') - this.on('warn', opt.onwarn) + [ONREAD] (bytesRead) { + if (bytesRead <= 0 && this.remain > 0) { + const er = new Error('encountered unexpected EOF') + er.path = this.absolute + er.syscall = 'read' + er.code = 'EOF' + return this[CLOSE](() => this.emit('error', er)) + } - this.portable = !!opt.portable - this.zip = null - if (opt.gzip) { - if (typeof opt.gzip !== 'object') - opt.gzip = {} - if (this.portable) - opt.gzip.portable = true - this.zip = new zlib.Gzip(opt.gzip) - this.zip.on('data', chunk => super.write(chunk)) - this.zip.on('end', _ => super.end()) - this.zip.on('drain', _ => this[ONDRAIN]()) - this.on('resume', _ => this.zip.resume()) - } else - this.on('drain', this[ONDRAIN]) + if (bytesRead > this.remain) { + const er = new Error('did not encounter expected EOF') + er.path = this.absolute + er.syscall = 'read' + er.code = 'EOF' + return this[CLOSE](() => this.emit('error', er)) + } - this.noDirRecurse = !!opt.noDirRecurse - this.follow = !!opt.follow - this.noMtime = !!opt.noMtime - this.mtime = opt.mtime || null + // null out the rest of the buffer, if we could fit the block padding + // at the end of this loop, we've incremented bytesRead and this.remain + // to be incremented up to the blockRemain level, as if we had expected + // to get a null-padded file, and read it until the end. then we will + // decrement both remain and blockRemain by bytesRead, and know that we + // reached the expected EOF, without any null buffer to append. + if (bytesRead === this.remain) { + for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) { + this.buf[i + this.offset] = 0 + bytesRead++ + this.remain++ + } + } - this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true + const writeBuf = this.offset === 0 && bytesRead === this.buf.length ? + this.buf : this.buf.slice(this.offset, this.offset + bytesRead) - this[QUEUE] = new Yallist - this[JOBS] = 0 - this.jobs = +opt.jobs || 4 - this[PROCESSING] = false - this[ENDED] = false + const flushed = this.write(writeBuf) + if (!flushed) + this[AWAITDRAIN](() => this[ONDRAIN]()) + else + this[ONDRAIN]() } - [WRITE] (chunk) { - return super.write(chunk) + [AWAITDRAIN] (cb) { + this.once('drain', cb) } - add (path) { - this.write(path) - return this + write (writeBuf) { + if (this.blockRemain < writeBuf.length) { + const er = new Error('writing more data than expected') + er.path = this.absolute + return this.emit('error', er) + } + this.remain -= writeBuf.length + this.blockRemain -= writeBuf.length + this.pos += writeBuf.length + this.offset += writeBuf.length + return super.write(writeBuf) } - end (path) { - if (path) - this.write(path) - this[ENDED] = true - this[PROCESS]() - return this + [ONDRAIN] () { + if (!this.remain) { + if (this.blockRemain) + super.write(Buffer.alloc(this.blockRemain)) + return this[CLOSE](er => er ? this.emit('error', er) : this.end()) + } + + if (this.offset >= this.length) { + // if we only have a smaller bit left to read, alloc a smaller buffer + // otherwise, keep it the same length it was before. + this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length)) + this.offset = 0 + } + this.length = this.buf.length - this.offset + this[READ]() } +}) - write (path) { - if (this[ENDED]) - throw new Error('write after end') +class WriteEntrySync extends WriteEntry { + [LSTAT] () { + this[ONLSTAT](fs.lstatSync(this.absolute)) + } - if (path instanceof ReadEntry) - this[ADDTARENTRY](path) - else - this[ADDFSENTRY](path) - return this.flowing + [SYMLINK] () { + this[ONREADLINK](fs.readlinkSync(this.absolute)) } - [ADDTARENTRY] (p) { - const absolute = path.resolve(this.cwd, p.path) - if (this.prefix) - p.path = this.prefix + '/' + p.path.replace(/^\.(\/+|$)/, '') + [OPENFILE] () { + this[ONOPENFILE](fs.openSync(this.absolute, 'r')) + } - // in this case, we don't have to wait for the stat - if (!this.filter(p.path, p)) - p.resume() - else { - const job = new PackJob(p.path, absolute, false) - job.entry = new WriteEntryTar(p, this[ENTRYOPT](job)) - job.entry.on('end', _ => this[JOBDONE](job)) - this[JOBS] += 1 - this[QUEUE].push(job) + [READ] () { + let threw = true + try { + const { fd, buf, offset, length, pos } = this + const bytesRead = fs.readSync(fd, buf, offset, length, pos) + this[ONREAD](bytesRead) + threw = false + } finally { + // ignoring the error from close(2) is a bad practice, but at + // this point we already have an error, don't need another one + if (threw) { + try { + this[CLOSE](() => {}) + } catch (er) {} + } } - - this[PROCESS]() } - [ADDFSENTRY] (p) { - const absolute = path.resolve(this.cwd, p) - if (this.prefix) - p = this.prefix + '/' + p.replace(/^\.(\/+|$)/, '') - - this[QUEUE].push(new PackJob(p, absolute)) - this[PROCESS]() + [AWAITDRAIN] (cb) { + cb() } - [STAT] (job) { - job.pending = true - this[JOBS] += 1 - const stat = this.follow ? 'stat' : 'lstat' - fs[stat](job.absolute, (er, stat) => { - job.pending = false - this[JOBS] -= 1 - if (er) - this.emit('error', er) - else - this[ONSTAT](job, stat) - }) + [CLOSE] (cb) { + fs.closeSync(this.fd) + cb() } +} - [ONSTAT] (job, stat) { - this.statCache.set(job.absolute, stat) - job.stat = stat - - // now we have the stat, we can filter it. - if (!this.filter(job.path, stat)) - job.ignore = true +const WriteEntryTar = warner(class WriteEntryTar extends MiniPass { + constructor (readEntry, opt) { + opt = opt || {} + super(opt) + this.preservePaths = !!opt.preservePaths + this.portable = !!opt.portable + this.strict = !!opt.strict + this.noPax = !!opt.noPax + this.noMtime = !!opt.noMtime - this[PROCESS]() - } + this.readEntry = readEntry + this.type = readEntry.type + if (this.type === 'Directory' && this.portable) + this.noMtime = true - [READDIR] (job) { - job.pending = true - this[JOBS] += 1 - fs.readdir(job.absolute, (er, entries) => { - job.pending = false - this[JOBS] -= 1 - if (er) - return this.emit('error', er) - this[ONREADDIR](job, entries) - }) - } + this.prefix = opt.prefix || null - [ONREADDIR] (job, entries) { - this.readdirCache.set(job.absolute, entries) - job.readdir = entries - this[PROCESS]() - } - - [PROCESS] () { - if (this[PROCESSING]) - return - - this[PROCESSING] = true - for (let w = this[QUEUE].head; - w !== null && this[JOBS] < this.jobs; - w = w.next) { - this[PROCESSJOB](w.value) - if (w.value.ignore) { - const p = w.next - this[QUEUE].removeNode(w) - w.next = p - } - } + this.path = normPath(readEntry.path) + this.mode = this[MODE](readEntry.mode) + this.uid = this.portable ? null : readEntry.uid + this.gid = this.portable ? null : readEntry.gid + this.uname = this.portable ? null : readEntry.uname + this.gname = this.portable ? null : readEntry.gname + this.size = readEntry.size + this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime + this.atime = this.portable ? null : readEntry.atime + this.ctime = this.portable ? null : readEntry.ctime + this.linkpath = normPath(readEntry.linkpath) - this[PROCESSING] = false + if (typeof opt.onwarn === 'function') + this.on('warn', opt.onwarn) - if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) { - if (this.zip) - this.zip.end(EOF) - else { - super.write(EOF) - super.end() + let pathWarn = false + if (!this.preservePaths) { + const [root, stripped] = stripAbsolutePath(this.path) + if (root) { + this.path = stripped + pathWarn = root } } - } - - get [CURRENT] () { - return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value - } - - [JOBDONE] (job) { - this[QUEUE].shift() - this[JOBS] -= 1 - this[PROCESS]() - } - - [PROCESSJOB] (job) { - if (job.pending) - return - - if (job.entry) { - if (job === this[CURRENT] && !job.piped) - this[PIPE](job) - return - } - if (!job.stat) { - if (this.statCache.has(job.absolute)) - this[ONSTAT](job, this.statCache.get(job.absolute)) - else - this[STAT](job) - } - if (!job.stat) - return + this.remain = readEntry.size + this.blockRemain = readEntry.startBlockSize - // filtered out! - if (job.ignore) - return + this.header = new Header({ + path: this[PREFIX](this.path), + linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath) + : this.linkpath, + // only the permissions and setuid/setgid/sticky bitflags + // not the higher-order bits that specify file type + mode: this.mode, + uid: this.portable ? null : this.uid, + gid: this.portable ? null : this.gid, + size: this.size, + mtime: this.noMtime ? null : this.mtime, + type: this.type, + uname: this.portable ? null : this.uname, + atime: this.portable ? null : this.atime, + ctime: this.portable ? null : this.ctime, + }) - if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) { - if (this.readdirCache.has(job.absolute)) - this[ONREADDIR](job, this.readdirCache.get(job.absolute)) - else - this[READDIR](job) - if (!job.readdir) - return + if (pathWarn) { + this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, { + entry: this, + path: pathWarn + this.path, + }) } - // we know it doesn't have an entry, because that got checked above - job.entry = this[ENTRY](job) - if (!job.entry) { - job.ignore = true - return + if (this.header.encode() && !this.noPax) { + super.write(new Pax({ + atime: this.portable ? null : this.atime, + ctime: this.portable ? null : this.ctime, + gid: this.portable ? null : this.gid, + mtime: this.noMtime ? null : this.mtime, + path: this[PREFIX](this.path), + linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath) + : this.linkpath, + size: this.size, + uid: this.portable ? null : this.uid, + uname: this.portable ? null : this.uname, + dev: this.portable ? null : this.readEntry.dev, + ino: this.portable ? null : this.readEntry.ino, + nlink: this.portable ? null : this.readEntry.nlink, + }).encode()) } - if (job === this[CURRENT] && !job.piped) - this[PIPE](job) - } - - [ENTRYOPT] (job) { - return { - onwarn: (code, msg, data) => this.warn(code, msg, data), - noPax: this.noPax, - cwd: this.cwd, - absolute: job.absolute, - preservePaths: this.preservePaths, - maxReadSize: this.maxReadSize, - strict: this.strict, - portable: this.portable, - linkCache: this.linkCache, - statCache: this.statCache, - noMtime: this.noMtime, - mtime: this.mtime - } + super.write(this.header.block) + readEntry.pipe(this) } - [ENTRY] (job) { - this[JOBS] += 1 - try { - return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job)) - .on('end', () => this[JOBDONE](job)) - .on('error', er => this.emit('error', er)) - } catch (er) { - this.emit('error', er) - } + [PREFIX] (path) { + return prefixPath(path, this.prefix) } - [ONDRAIN] () { - if (this[CURRENT] && this[CURRENT].entry) - this[CURRENT].entry.resume() + [MODE] (mode) { + return modeFix(mode, this.type === 'Directory', this.portable) } - // like .pipe() but using super, because our write() is special - [PIPE] (job) { - job.piped = true - - if (job.readdir) - job.readdir.forEach(entry => { - const p = this.prefix ? - job.path.slice(this.prefix.length + 1) || './' - : job.path - - const base = p === './' ? '' : p.replace(/\/*$/, '/') - this[ADDFSENTRY](base + entry) - }) - - const source = job.entry - const zip = this.zip - - if (zip) - source.on('data', chunk => { - if (!zip.write(chunk)) - source.pause() - }) - else - source.on('data', chunk => { - if (!super.write(chunk)) - source.pause() - }) + write (data) { + const writeLen = data.length + if (writeLen > this.blockRemain) + throw new Error('writing more to entry than is appropriate') + this.blockRemain -= writeLen + return super.write(data) } - pause () { - if (this.zip) - this.zip.pause() - return super.pause() + end () { + if (this.blockRemain) + super.write(Buffer.alloc(this.blockRemain)) + return super.end() } }) -class PackSync extends Pack { - constructor (opt) { - super(opt) - this[WRITEENTRYCLASS] = WriteEntrySync - } - - // pause/resume are no-ops in sync streams. - pause () {} - resume () {} - - [STAT] (job) { - const stat = this.follow ? 'statSync' : 'lstatSync' - this[ONSTAT](job, fs[stat](job.absolute)) - } - - [READDIR] (job, stat) { - this[ONREADDIR](job, fs.readdirSync(job.absolute)) - } - - // gotta get it all in this tick - [PIPE] (job) { - const source = job.entry - const zip = this.zip - - if (job.readdir) - job.readdir.forEach(entry => { - const p = this.prefix ? - job.path.slice(this.prefix.length + 1) || './' - : job.path - - const base = p === './' ? '' : p.replace(/\/*$/, '/') - this[ADDFSENTRY](base + entry) - }) - - if (zip) - source.on('data', chunk => { - zip.write(chunk) - }) - else - source.on('data', chunk => { - super[WRITE](chunk) - }) - } -} +WriteEntry.Sync = WriteEntrySync +WriteEntry.Tar = WriteEntryTar -Pack.Sync = PackSync +const getType = stat => + stat.isFile() ? 'File' + : stat.isDirectory() ? 'Directory' + : stat.isSymbolicLink() ? 'SymbolicLink' + : 'Unsupported' -module.exports = Pack +module.exports = WriteEntry /***/ }), -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/parse.js": -/*!*******************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/parse.js ***! - \*******************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "../../../.yarn/berry/cache/typanion-npm-3.9.0-ef0bfe7e8b-9.zip/node_modules/typanion/lib/index.js": +/*!*********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/typanion-npm-3.9.0-ef0bfe7e8b-9.zip/node_modules/typanion/lib/index.js ***! + \*********************************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { "use strict"; -// this[BUFFER] is the remainder of a chunk if we're waiting for -// the full 512 bytes of a header to come in. We will Buffer.concat() -// it to the next write(), which is a mem copy, but a small one. -// -// this[QUEUE] is a Yallist of entries that haven't been emitted -// yet this can only get filled up if the user keeps write()ing after -// a write() returns false, or does a write() with more than one entry -// -// We don't buffer chunks, we always parse them and either create an -// entry, or push it into the active entry. The ReadEntry class knows -// to throw data away if .ignore=true -// -// Shift entry off the buffer when it emits 'end', and emit 'entry' for -// the next one in the list. -// -// At any time, we're pushing body chunks into the entry at WRITEENTRY, -// and waiting for 'end' on the entry at READENTRY -// -// ignored entries get .resume() called on them straight away +Object.defineProperty(exports, "__esModule", ({ value: true })); -const warner = __webpack_require__(/*! ./warn-mixin.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/warn-mixin.js") -const path = __webpack_require__(/*! path */ "path") -const Header = __webpack_require__(/*! ./header.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/header.js") -const EE = __webpack_require__(/*! events */ "events") -const Yallist = __webpack_require__(/*! yallist */ "./.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip/node_modules/yallist/yallist.js") -const maxMetaEntrySize = 1024 * 1024 -const Entry = __webpack_require__(/*! ./read-entry.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/read-entry.js") -const Pax = __webpack_require__(/*! ./pax.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/pax.js") -const zlib = __webpack_require__(/*! minizlib */ "./.yarn/cache/minizlib-npm-2.1.0-9531be52b3-6a811aaa3a.zip/node_modules/minizlib/index.js") - -const gzipHeader = Buffer.from([0x1f, 0x8b]) -const STATE = Symbol('state') -const WRITEENTRY = Symbol('writeEntry') -const READENTRY = Symbol('readEntry') -const NEXTENTRY = Symbol('nextEntry') -const PROCESSENTRY = Symbol('processEntry') -const EX = Symbol('extendedHeader') -const GEX = Symbol('globalExtendedHeader') -const META = Symbol('meta') -const EMITMETA = Symbol('emitMeta') -const BUFFER = Symbol('buffer') -const QUEUE = Symbol('queue') -const ENDED = Symbol('ended') -const EMITTEDEND = Symbol('emittedEnd') -const EMIT = Symbol('emit') -const UNZIP = Symbol('unzip') -const CONSUMECHUNK = Symbol('consumeChunk') -const CONSUMECHUNKSUB = Symbol('consumeChunkSub') -const CONSUMEBODY = Symbol('consumeBody') -const CONSUMEMETA = Symbol('consumeMeta') -const CONSUMEHEADER = Symbol('consumeHeader') -const CONSUMING = Symbol('consuming') -const BUFFERCONCAT = Symbol('bufferConcat') -const MAYBEEND = Symbol('maybeEnd') -const WRITING = Symbol('writing') -const ABORTED = Symbol('aborted') -const DONE = Symbol('onDone') -const SAW_VALID_ENTRY = Symbol('sawValidEntry') -const SAW_NULL_BLOCK = Symbol('sawNullBlock') -const SAW_EOF = Symbol('sawEOF') - -const noop = _ => true - -module.exports = warner(class Parser extends EE { - constructor (opt) { - opt = opt || {} - super(opt) - - this.file = opt.file || '' - - // set to boolean false when an entry starts. 1024 bytes of \0 - // is technically a valid tarball, albeit a boring one. - this[SAW_VALID_ENTRY] = null - - // these BADARCHIVE errors can't be detected early. listen on DONE. - this.on(DONE, _ => { - if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) { - // either less than 1 block of data, or all entries were invalid. - // Either way, probably not even a tarball. - this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format') - } - }) - - if (opt.ondone) - this.on(DONE, opt.ondone) - else - this.on(DONE, _ => { - this.emit('prefinish') - this.emit('finish') - this.emit('end') - this.emit('close') - }) - - this.strict = !!opt.strict - this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize - this.filter = typeof opt.filter === 'function' ? opt.filter : noop - - // have to set this so that streams are ok piping into it - this.writable = true - this.readable = false - - this[QUEUE] = new Yallist() - this[BUFFER] = null - this[READENTRY] = null - this[WRITEENTRY] = null - this[STATE] = 'begin' - this[META] = '' - this[EX] = null - this[GEX] = null - this[ENDED] = false - this[UNZIP] = null - this[ABORTED] = false - this[SAW_NULL_BLOCK] = false - this[SAW_EOF] = false - if (typeof opt.onwarn === 'function') - this.on('warn', opt.onwarn) - if (typeof opt.onentry === 'function') - this.on('entry', opt.onentry) - } - - [CONSUMEHEADER] (chunk, position) { - if (this[SAW_VALID_ENTRY] === null) - this[SAW_VALID_ENTRY] = false - let header - try { - header = new Header(chunk, position, this[EX], this[GEX]) - } catch (er) { - return this.warn('TAR_ENTRY_INVALID', er) +const simpleKeyRegExp = /^[a-zA-Z_][a-zA-Z0-9_]*$/; +function getPrintable(value) { + if (value === null) + return `null`; + if (value === undefined) + return `undefined`; + if (value === ``) + return `an empty string`; + if (typeof value === 'symbol') + return `<${value.toString()}>`; + if (Array.isArray(value)) + return `an array`; + return JSON.stringify(value); +} +function getPrintableArray(value, conjunction) { + if (value.length === 0) + return `nothing`; + if (value.length === 1) + return getPrintable(value[0]); + const rest = value.slice(0, -1); + const trailing = value[value.length - 1]; + const separator = value.length > 2 + ? `, ${conjunction} ` + : ` ${conjunction} `; + return `${rest.map(value => getPrintable(value)).join(`, `)}${separator}${getPrintable(trailing)}`; +} +function computeKey(state, key) { + var _a, _b, _c; + if (typeof key === `number`) { + return `${(_a = state === null || state === void 0 ? void 0 : state.p) !== null && _a !== void 0 ? _a : `.`}[${key}]`; } - - if (header.nullBlock) { - if (this[SAW_NULL_BLOCK]) { - this[SAW_EOF] = true - // ending an archive with no entries. pointless, but legal. - if (this[STATE] === 'begin') - this[STATE] = 'header' - this[EMIT]('eof') - } else { - this[SAW_NULL_BLOCK] = true - this[EMIT]('nullBlock') - } - } else { - this[SAW_NULL_BLOCK] = false - if (!header.cksumValid) - this.warn('TAR_ENTRY_INVALID', 'checksum failure', {header}) - else if (!header.path) - this.warn('TAR_ENTRY_INVALID', 'path is required', {header}) - else { - const type = header.type - if (/^(Symbolic)?Link$/.test(type) && !header.linkpath) - this.warn('TAR_ENTRY_INVALID', 'linkpath required', {header}) - else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath) - this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', {header}) - else { - const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX]) - - // we do this for meta & ignored entries as well, because they - // are still valid tar, or else we wouldn't know to ignore them - if (!this[SAW_VALID_ENTRY]) { - if (entry.remain) { - // this might be the one! - const onend = () => { - if (!entry.invalid) - this[SAW_VALID_ENTRY] = true - } - entry.on('end', onend) - } else { - this[SAW_VALID_ENTRY] = true - } - } - - if (entry.meta) { - if (entry.size > this.maxMetaEntrySize) { - entry.ignore = true - this[EMIT]('ignoredEntry', entry) - this[STATE] = 'ignore' - entry.resume() - } else if (entry.size > 0) { - this[META] = '' - entry.on('data', c => this[META] += c) - this[STATE] = 'meta' - } - } else { - this[EX] = null - entry.ignore = entry.ignore || !this.filter(entry.path, entry) - - if (entry.ignore) { - // probably valid, just not something we care about - this[EMIT]('ignoredEntry', entry) - this[STATE] = entry.remain ? 'ignore' : 'header' - entry.resume() - } else { - if (entry.remain) - this[STATE] = 'body' - else { - this[STATE] = 'header' - entry.end() - } - - if (!this[READENTRY]) { - this[QUEUE].push(entry) - this[NEXTENTRY]() - } else - this[QUEUE].push(entry) - } - } - } - } + else if (simpleKeyRegExp.test(key)) { + return `${(_b = state === null || state === void 0 ? void 0 : state.p) !== null && _b !== void 0 ? _b : ``}.${key}`; } - } - - [PROCESSENTRY] (entry) { - let go = true - - if (!entry) { - this[READENTRY] = null - go = false - } else if (Array.isArray(entry)) - this.emit.apply(this, entry) else { - this[READENTRY] = entry - this.emit('entry', entry) - if (!entry.emittedEnd) { - entry.on('end', _ => this[NEXTENTRY]()) - go = false - } + return `${(_c = state === null || state === void 0 ? void 0 : state.p) !== null && _c !== void 0 ? _c : `.`}[${JSON.stringify(key)}]`; } +} +function plural(n, singular, plural) { + return n === 1 ? singular : plural; +} - return go - } +const colorStringRegExp = /^#[0-9a-f]{6}$/i; +const colorStringAlphaRegExp = /^#[0-9a-f]{6}([0-9a-f]{2})?$/i; +// https://stackoverflow.com/a/475217/880703 +const base64RegExp = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/; +// https://stackoverflow.com/a/14166194/880703 +const uuid4RegExp = /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i; +// https://stackoverflow.com/a/28022901/880703 + https://www.debuggex.com/r/bl8J35wMKk48a7u_ +const iso8601RegExp = /^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/; - [NEXTENTRY] () { - do {} while (this[PROCESSENTRY](this[QUEUE].shift())) +function pushError({ errors, p } = {}, message) { + errors === null || errors === void 0 ? void 0 : errors.push(`${p !== null && p !== void 0 ? p : `.`}: ${message}`); + return false; +} +function makeSetter(target, key) { + return (v) => { + target[key] = v; + }; +} +function makeCoercionFn(target, key) { + return (v) => { + const previous = target[key]; + target[key] = v; + return makeCoercionFn(target, key).bind(null, previous); + }; +} +function makeLazyCoercionFn(fn, orig, generator) { + const commit = () => { + fn(generator()); + return revert; + }; + const revert = () => { + fn(orig); + return commit; + }; + return commit; +} - if (!this[QUEUE].length) { - // At this point, there's nothing in the queue, but we may have an - // entry which is being consumed (readEntry). - // If we don't, then we definitely can handle more data. - // If we do, and either it's flowing, or it has never had any data - // written to it, then it needs more. - // The only other possibility is that it has returned false from a - // write() call, so we wait for the next drain to continue. - const re = this[READENTRY] - const drainNow = !re || re.flowing || re.size === re.remain - if (drainNow) { - if (!this[WRITING]) - this.emit('drain') - } else - re.once('drain', _ => this.emit('drain')) - } +/** + * Create a validator that always returns true and never refines the type. + */ +function isUnknown() { + return makeValidator({ + test: (value, state) => { + return true; + }, + }); +} +function isLiteral(expected) { + return makeValidator({ + test: (value, state) => { + if (value !== expected) + return pushError(state, `Expected ${getPrintable(expected)} (got ${getPrintable(value)})`); + return true; + }, + }); +} +/** + * Create a validator that only returns true when the tested value is a string. + * Refines the type to `string`. + */ +function isString() { + return makeValidator({ + test: (value, state) => { + if (typeof value !== `string`) + return pushError(state, `Expected a string (got ${getPrintable(value)})`); + return true; + }, + }); +} +function isEnum(enumSpec) { + const valuesArray = Array.isArray(enumSpec) ? enumSpec : Object.values(enumSpec); + const isAlphaNum = valuesArray.every(item => typeof item === 'string' || typeof item === 'number'); + const values = new Set(valuesArray); + if (values.size === 1) + return isLiteral([...values][0]); + return makeValidator({ + test: (value, state) => { + if (!values.has(value)) { + if (isAlphaNum) { + return pushError(state, `Expected one of ${getPrintableArray(valuesArray, `or`)} (got ${getPrintable(value)})`); + } + else { + return pushError(state, `Expected a valid enumeration value (got ${getPrintable(value)})`); + } + } + return true; + }, + }); +} +const BOOLEAN_COERCIONS = new Map([ + [`true`, true], + [`True`, true], + [`1`, true], + [1, true], + [`false`, false], + [`False`, false], + [`0`, false], + [0, false], +]); +/** + * Create a validator that only returns true when the tested value is a + * boolean. Refines the type to `boolean`. + * + * Supports coercion: + * - 'true' / 'True' / '1' / 1 will turn to `true` + * - 'false' / 'False' / '0' / 0 will turn to `false` + */ +function isBoolean() { + return makeValidator({ + test: (value, state) => { + var _a; + if (typeof value !== `boolean`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) + return pushError(state, `Unbound coercion result`); + const coercion = BOOLEAN_COERCIONS.get(value); + if (typeof coercion !== `undefined`) { + state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]); + return true; + } + } + return pushError(state, `Expected a boolean (got ${getPrintable(value)})`); + } + return true; + }, + }); +} +/** + * Create a validator that only returns true when the tested value is a + * number (including floating numbers; use `cascade` and `isInteger` to + * restrict the range further). Refines the type to `number`. + * + * Supports coercion. + */ +function isNumber() { + return makeValidator({ + test: (value, state) => { + var _a; + if (typeof value !== `number`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) + return pushError(state, `Unbound coercion result`); + let coercion; + if (typeof value === `string`) { + let val; + try { + val = JSON.parse(value); + } + catch (_b) { } + // We check against JSON.stringify that the output is the same to ensure that the number can be safely represented in JS + if (typeof val === `number`) { + if (JSON.stringify(val) === value) { + coercion = val; + } + else { + return pushError(state, `Received a number that can't be safely represented by the runtime (${value})`); + } + } + } + if (typeof coercion !== `undefined`) { + state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]); + return true; + } + } + return pushError(state, `Expected a number (got ${getPrintable(value)})`); + } + return true; + }, + }); +} +/** + * Create a validator that only returns true when the tested value is a + * valid date. Refines the type to `Date`. + * + * Supports coercion via one of the following formats: + * - ISO86001 strings + * - Unix timestamps + */ +function isDate() { + return makeValidator({ + test: (value, state) => { + var _a; + if (!(value instanceof Date)) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) + return pushError(state, `Unbound coercion result`); + let coercion; + if (typeof value === `string` && iso8601RegExp.test(value)) { + coercion = new Date(value); + } + else { + let timestamp; + if (typeof value === `string`) { + let val; + try { + val = JSON.parse(value); + } + catch (_b) { } + if (typeof val === `number`) { + timestamp = val; + } + } + else if (typeof value === `number`) { + timestamp = value; + } + if (typeof timestamp !== `undefined`) { + if (Number.isSafeInteger(timestamp) || !Number.isSafeInteger(timestamp * 1000)) { + coercion = new Date(timestamp * 1000); + } + else { + return pushError(state, `Received a timestamp that can't be safely represented by the runtime (${value})`); + } + } + } + if (typeof coercion !== `undefined`) { + state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]); + return true; + } + } + return pushError(state, `Expected a date (got ${getPrintable(value)})`); + } + return true; + }, + }); +} +/** + * Create a validator that only returns true when the tested value is an + * array whose all values match the provided subspec. Refines the type to + * `Array`, with `T` being the subspec inferred type. + * + * Supports coercion if the `delimiter` option is set, in which case strings + * will be split accordingly. + */ +function isArray(spec, { delimiter } = {}) { + return makeValidator({ + test: (value, state) => { + var _a; + const originalValue = value; + if (typeof value === `string` && typeof delimiter !== `undefined`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) + return pushError(state, `Unbound coercion result`); + value = value.split(delimiter); + } + } + if (!Array.isArray(value)) + return pushError(state, `Expected an array (got ${getPrintable(value)})`); + let valid = true; + for (let t = 0, T = value.length; t < T; ++t) { + valid = spec(value[t], Object.assign(Object.assign({}, state), { p: computeKey(state, t), coercion: makeCoercionFn(value, t) })) && valid; + if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { + break; + } + } + if (value !== originalValue) + state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]); + return valid; + }, + }); +} +/** + * Create a validator that only returns true when the tested value is an + * set whose all values match the provided subspec. Refines the type to + * `Set`, with `T` being the subspec inferred type. + * + * Supports coercion from arrays (or anything that can be coerced into an + * array). + */ +function isSet(spec, { delimiter } = {}) { + const isArrayValidator = isArray(spec, { delimiter }); + return makeValidator({ + test: (value, state) => { + var _a, _b; + if (Object.getPrototypeOf(value).toString() === `[object Set]`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) + return pushError(state, `Unbound coercion result`); + const originalValues = [...value]; + const coercedValues = [...value]; + if (!isArrayValidator(coercedValues, Object.assign(Object.assign({}, state), { coercion: undefined }))) + return false; + const updateValue = () => coercedValues.some((val, t) => val !== originalValues[t]) + ? new Set(coercedValues) + : value; + state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, makeLazyCoercionFn(state.coercion, value, updateValue)]); + return true; + } + else { + let valid = true; + for (const subValue of value) { + valid = spec(subValue, Object.assign({}, state)) && valid; + if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { + break; + } + } + return valid; + } + } + if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) + return pushError(state, `Unbound coercion result`); + const store = { value }; + if (!isArrayValidator(value, Object.assign(Object.assign({}, state), { coercion: makeCoercionFn(store, `value`) }))) + return false; + state.coercions.push([(_b = state.p) !== null && _b !== void 0 ? _b : `.`, makeLazyCoercionFn(state.coercion, value, () => new Set(store.value))]); + return true; + } + return pushError(state, `Expected a set (got ${getPrintable(value)})`); + } + }); +} +/** + * Create a validator that only returns true when the tested value is an + * map whose all values match the provided subspecs. Refines the type to + * `Map`, with `U` being the key subspec inferred type and `V` being + * the value subspec inferred type. + * + * Supports coercion from array of tuples (or anything that can be coerced into + * an array of tuples). + */ +function isMap(keySpec, valueSpec) { + const isArrayValidator = isArray(isTuple([keySpec, valueSpec])); + const isRecordValidator = isRecord(valueSpec, { keys: keySpec }); + return makeValidator({ + test: (value, state) => { + var _a, _b, _c; + if (Object.getPrototypeOf(value).toString() === `[object Map]`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) + return pushError(state, `Unbound coercion result`); + const originalValues = [...value]; + const coercedValues = [...value]; + if (!isArrayValidator(coercedValues, Object.assign(Object.assign({}, state), { coercion: undefined }))) + return false; + const updateValue = () => coercedValues.some((val, t) => val[0] !== originalValues[t][0] || val[1] !== originalValues[t][1]) + ? new Map(coercedValues) + : value; + state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, makeLazyCoercionFn(state.coercion, value, updateValue)]); + return true; + } + else { + let valid = true; + for (const [key, subValue] of value) { + valid = keySpec(key, Object.assign({}, state)) && valid; + if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { + break; + } + valid = valueSpec(subValue, Object.assign(Object.assign({}, state), { p: computeKey(state, key) })) && valid; + if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { + break; + } + } + return valid; + } + } + if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) + return pushError(state, `Unbound coercion result`); + const store = { value }; + if (Array.isArray(value)) { + if (!isArrayValidator(value, Object.assign(Object.assign({}, state), { coercion: undefined }))) + return false; + state.coercions.push([(_b = state.p) !== null && _b !== void 0 ? _b : `.`, makeLazyCoercionFn(state.coercion, value, () => new Map(store.value))]); + return true; + } + else { + if (!isRecordValidator(value, Object.assign(Object.assign({}, state), { coercion: makeCoercionFn(store, `value`) }))) + return false; + state.coercions.push([(_c = state.p) !== null && _c !== void 0 ? _c : `.`, makeLazyCoercionFn(state.coercion, value, () => new Map(Object.entries(store.value)))]); + return true; + } + } + return pushError(state, `Expected a map (got ${getPrintable(value)})`); + } + }); +} +/** + * Create a validator that only returns true when the tested value is a + * tuple whose each value matches the corresponding subspec. Refines the type + * into a tuple whose each item has the type inferred by the corresponding + * tuple. + * + * Supports coercion if the `delimiter` option is set, in which case strings + * will be split accordingly. + */ +function isTuple(spec, { delimiter } = {}) { + const lengthValidator = hasExactLength(spec.length); + return makeValidator({ + test: (value, state) => { + var _a; + if (typeof value === `string` && typeof delimiter !== `undefined`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) + return pushError(state, `Unbound coercion result`); + value = value.split(delimiter); + state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]); + } + } + if (!Array.isArray(value)) + return pushError(state, `Expected a tuple (got ${getPrintable(value)})`); + let valid = lengthValidator(value, Object.assign({}, state)); + for (let t = 0, T = value.length; t < T && t < spec.length; ++t) { + valid = spec[t](value[t], Object.assign(Object.assign({}, state), { p: computeKey(state, t), coercion: makeCoercionFn(value, t) })) && valid; + if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { + break; + } + } + return valid; + }, + }); +} +/** + * Create a validator that only returns true when the tested value is an + * object with any amount of properties that must all match the provided + * subspec. Refines the type to `Record`, with `T` being the + * subspec inferred type. + * + * Keys can be optionally validated as well by using the `keys` optional + * subspec parameter. + */ +function isRecord(spec, { keys: keySpec = null, } = {}) { + const isArrayValidator = isArray(isTuple([keySpec !== null && keySpec !== void 0 ? keySpec : isString(), spec])); + return makeValidator({ + test: (value, state) => { + var _a; + if (Array.isArray(value)) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) + return pushError(state, `Unbound coercion result`); + if (!isArrayValidator(value, Object.assign(Object.assign({}, state), { coercion: undefined }))) + return false; + value = Object.fromEntries(value); + state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]); + return true; + } + } + if (typeof value !== `object` || value === null) + return pushError(state, `Expected an object (got ${getPrintable(value)})`); + const keys = Object.keys(value); + let valid = true; + for (let t = 0, T = keys.length; t < T && (valid || (state === null || state === void 0 ? void 0 : state.errors) != null); ++t) { + const key = keys[t]; + const sub = value[key]; + if (key === `__proto__` || key === `constructor`) { + valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Unsafe property name`); + continue; + } + if (keySpec !== null && !keySpec(key, state)) { + valid = false; + continue; + } + if (!spec(sub, Object.assign(Object.assign({}, state), { p: computeKey(state, key), coercion: makeCoercionFn(value, key) }))) { + valid = false; + continue; + } + } + return valid; + }, + }); +} +/** + * @deprecated Replace `isDict` by `isRecord` + */ +function isDict(spec, opts = {}) { + return isRecord(spec, opts); +} +/** + * Create a validator that only returns true when the tested value is an + * object whose all properties match their corresponding subspec. Refines + * the type into an object whose each property has the type inferred by the + * corresponding subspec. + * + * Unlike `t.isPartial`, `t.isObject` doesn't allow extraneous properties by + * default. This behaviour can be altered by using the `extra` optional + * subspec parameter, which will be called to validate an object only + * containing the extraneous properties. + * + * Calling `t.isObject(..., {extra: t.isRecord(t.isUnknown())})` is + * essentially the same as calling `t.isPartial(...)`. + */ +function isObject(props, { extra: extraSpec = null, } = {}) { + const specKeys = Object.keys(props); + const validator = makeValidator({ + test: (value, state) => { + if (typeof value !== `object` || value === null) + return pushError(state, `Expected an object (got ${getPrintable(value)})`); + const keys = new Set([...specKeys, ...Object.keys(value)]); + const extra = {}; + let valid = true; + for (const key of keys) { + if (key === `constructor` || key === `__proto__`) { + valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Unsafe property name`); + } + else { + const spec = Object.prototype.hasOwnProperty.call(props, key) + ? props[key] + : undefined; + const sub = Object.prototype.hasOwnProperty.call(value, key) + ? value[key] + : undefined; + if (typeof spec !== `undefined`) { + valid = spec(sub, Object.assign(Object.assign({}, state), { p: computeKey(state, key), coercion: makeCoercionFn(value, key) })) && valid; + } + else if (extraSpec === null) { + valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Extraneous property (got ${getPrintable(sub)})`); + } + else { + Object.defineProperty(extra, key, { + enumerable: true, + get: () => sub, + set: makeSetter(value, key) + }); + } + } + if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { + break; + } + } + if (extraSpec !== null && (valid || (state === null || state === void 0 ? void 0 : state.errors) != null)) + valid = extraSpec(extra, state) && valid; + return valid; + }, + }); + return Object.assign(validator, { + properties: props, + }); +} +/** + * Create a validator that only returns true when the tested value is an + * object whose all properties match their corresponding subspec. Refines + * the type into an object whose each property has the type inferred by the + * corresponding subspec. + * + * Unlike `t.isObject`, `t.isPartial` allows extraneous properties. The + * resulting type will reflect this behaviour by including an index + * signature (each extraneous property being typed `unknown`). + * + * Calling `t.isPartial(...)` is essentially the same as calling + * `t.isObject(..., {extra: t.isRecord(t.isUnknown())})`. + */ +function isPartial(props) { + return isObject(props, { extra: isRecord(isUnknown()) }); +} +/** + * Create a validator that only returns true when the tested value is an + * object whose prototype is derived from the given class. Refines the type + * into a class instance. + */ +const isInstanceOf = (constructor) => makeValidator({ + test: (value, state) => { + if (!(value instanceof constructor)) + return pushError(state, `Expected an instance of ${constructor.name} (got ${getPrintable(value)})`); + return true; + }, +}); +/** + * Create a validator that only returns true when the tested value is an + * object matching any of the provided subspecs. If the optional `exclusive` + * parameter is set to `true`, the behaviour changes so that the validator + * only returns true when exactly one subspec matches. + */ +const isOneOf = (specs, { exclusive = false, } = {}) => makeValidator({ + test: (value, state) => { + var _a, _b, _c; + const matches = []; + const errorBuffer = typeof (state === null || state === void 0 ? void 0 : state.errors) !== `undefined` + ? [] : undefined; + for (let t = 0, T = specs.length; t < T; ++t) { + const subErrors = typeof (state === null || state === void 0 ? void 0 : state.errors) !== `undefined` + ? [] : undefined; + const subCoercions = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined` + ? [] : undefined; + if (specs[t](value, Object.assign(Object.assign({}, state), { errors: subErrors, coercions: subCoercions, p: `${(_a = state === null || state === void 0 ? void 0 : state.p) !== null && _a !== void 0 ? _a : `.`}#${t + 1}` }))) { + matches.push([`#${t + 1}`, subCoercions]); + if (!exclusive) { + break; + } + } + else { + errorBuffer === null || errorBuffer === void 0 ? void 0 : errorBuffer.push(subErrors[0]); + } + } + if (matches.length === 1) { + const [, subCoercions] = matches[0]; + if (typeof subCoercions !== `undefined`) + (_b = state === null || state === void 0 ? void 0 : state.coercions) === null || _b === void 0 ? void 0 : _b.push(...subCoercions); + return true; + } + if (matches.length > 1) + pushError(state, `Expected to match exactly a single predicate (matched ${matches.join(`, `)})`); + else + (_c = state === null || state === void 0 ? void 0 : state.errors) === null || _c === void 0 ? void 0 : _c.push(...errorBuffer); + return false; + }, +}); + +function makeTrait(value) { + return () => { + return value; + }; +} +function makeValidator({ test }) { + return makeTrait(test)(); +} +class TypeAssertionError extends Error { + constructor({ errors } = {}) { + let errorMessage = `Type mismatch`; + if (errors && errors.length > 0) { + errorMessage += `\n`; + for (const error of errors) { + errorMessage += `\n- ${error}`; + } + } + super(errorMessage); + } +} +/** + * Check that the specified value matches the given validator, and throws an + * exception if it doesn't. Refine the type if it passes. + */ +function assert(val, validator) { + if (!validator(val)) { + throw new TypeAssertionError(); + } +} +/** + * Check that the specified value matches the given validator, and throws an + * exception if it doesn't. Refine the type if it passes. + * + * Thrown exceptions include details about what exactly looks invalid in the + * tested value. + */ +function assertWithErrors(val, validator) { + const errors = []; + if (!validator(val, { errors })) { + throw new TypeAssertionError({ errors }); + } +} +/** + * Compile-time only. Refine the type as if the validator was matching the + * tested value, but doesn't actually run it. Similar to the classic `as` + * operator in TypeScript. + */ +function softAssert(val, validator) { + // It's a soft assert; we tell TypeScript about the type, but we don't need to check it +} +function as(value, validator, { coerce = false, errors: storeErrors, throw: throws } = {}) { + const errors = storeErrors ? [] : undefined; + if (!coerce) { + if (validator(value, { errors })) { + return throws ? value : { value, errors: undefined }; + } + else if (!throws) { + return { value: undefined, errors: errors !== null && errors !== void 0 ? errors : true }; + } + else { + throw new TypeAssertionError({ errors }); + } + } + const state = { value }; + const coercion = makeCoercionFn(state, `value`); + const coercions = []; + if (!validator(value, { errors, coercion, coercions })) { + if (!throws) { + return { value: undefined, errors: errors !== null && errors !== void 0 ? errors : true }; + } + else { + throw new TypeAssertionError({ errors }); + } + } + for (const [, apply] of coercions) + apply(); + if (throws) { + return state.value; + } + else { + return { value: state.value, errors: undefined }; + } +} +/** + * Create and return a new function that apply the given validators to each + * corresponding argument passed to the function and throws an exception in + * case of a mismatch. + */ +function fn(validators, fn) { + const isValidArgList = isTuple(validators); + return ((...args) => { + const check = isValidArgList(args); + if (!check) + throw new TypeAssertionError(); + return fn(...args); + }); +} + +/** + * Create a validator that checks that the tested array or string has at least + * the specified length. + */ +function hasMinLength(length) { + return makeValidator({ + test: (value, state) => { + if (!(value.length >= length)) + return pushError(state, `Expected to have a length of at least ${length} elements (got ${value.length})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested array or string has at most + * the specified length. + */ +function hasMaxLength(length) { + return makeValidator({ + test: (value, state) => { + if (!(value.length <= length)) + return pushError(state, `Expected to have a length of at most ${length} elements (got ${value.length})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested array or string has exactly + * the specified length. + */ +function hasExactLength(length) { + return makeValidator({ + test: (value, state) => { + if (!(value.length === length)) + return pushError(state, `Expected to have a length of exactly ${length} elements (got ${value.length})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested array only contains unique + * elements. The optional `map` parameter lets you define a transform to + * apply before making the check (the result of this transform will be + * discarded afterwards). + */ +function hasUniqueItems({ map, } = {}) { + return makeValidator({ + test: (value, state) => { + const set = new Set(); + const dup = new Set(); + for (let t = 0, T = value.length; t < T; ++t) { + const sub = value[t]; + const key = typeof map !== `undefined` + ? map(sub) + : sub; + if (set.has(key)) { + if (dup.has(key)) + continue; + pushError(state, `Expected to contain unique elements; got a duplicate with ${getPrintable(value)}`); + dup.add(key); + } + else { + set.add(key); + } + } + return dup.size === 0; + }, + }); +} +/** + * Create a validator that checks that the tested number is strictly less than 0. + */ +function isNegative() { + return makeValidator({ + test: (value, state) => { + if (!(value <= 0)) + return pushError(state, `Expected to be negative (got ${value})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested number is equal or greater + * than 0. + */ +function isPositive() { + return makeValidator({ + test: (value, state) => { + if (!(value >= 0)) + return pushError(state, `Expected to be positive (got ${value})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested number is equal or greater + * than the specified reference. + */ +function isAtLeast(n) { + return makeValidator({ + test: (value, state) => { + if (!(value >= n)) + return pushError(state, `Expected to be at least ${n} (got ${value})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested number is equal or smaller + * than the specified reference. + */ +function isAtMost(n) { + return makeValidator({ + test: (value, state) => { + if (!(value <= n)) + return pushError(state, `Expected to be at most ${n} (got ${value})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested number is between the + * specified references (including the upper boundary). + */ +function isInInclusiveRange(a, b) { + return makeValidator({ + test: (value, state) => { + if (!(value >= a && value <= b)) + return pushError(state, `Expected to be in the [${a}; ${b}] range (got ${value})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested number is between the + * specified references (excluding the upper boundary). + */ +function isInExclusiveRange(a, b) { + return makeValidator({ + test: (value, state) => { + if (!(value >= a && value < b)) + return pushError(state, `Expected to be in the [${a}; ${b}[ range (got ${value})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested number is an integer. + * + * By default Typanion will also check that it's a *safe* integer. For example, + * 2^53 wouldn't be a safe integer because 2^53+1 would be rounded to 2^53, + * which could put your applications at risk when used in loops. + */ +function isInteger({ unsafe = false, } = {}) { + return makeValidator({ + test: (value, state) => { + if (value !== Math.round(value)) + return pushError(state, `Expected to be an integer (got ${value})`); + if (!unsafe && !Number.isSafeInteger(value)) + return pushError(state, `Expected to be a safe integer (got ${value})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested string matches the given + * regular expression. + */ +function matchesRegExp(regExp) { + return makeValidator({ + test: (value, state) => { + if (!regExp.test(value)) + return pushError(state, `Expected to match the pattern ${regExp.toString()} (got ${getPrintable(value)})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested string only contain lowercase + * characters. + */ +function isLowerCase() { + return makeValidator({ + test: (value, state) => { + if (value !== value.toLowerCase()) + return pushError(state, `Expected to be all-lowercase (got ${value})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested string only contain uppercase + * characters. + */ +function isUpperCase() { + return makeValidator({ + test: (value, state) => { + if (value !== value.toUpperCase()) + return pushError(state, `Expected to be all-uppercase (got ${value})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested string is a valid UUID v4. + */ +function isUUID4() { + return makeValidator({ + test: (value, state) => { + if (!uuid4RegExp.test(value)) + return pushError(state, `Expected to be a valid UUID v4 (got ${getPrintable(value)})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested string is a valid ISO8601 + * date. + */ +function isISO8601() { + return makeValidator({ + test: (value, state) => { + if (!iso8601RegExp.test(value)) + return pushError(state, `Expected to be a valid ISO 8601 date string (got ${getPrintable(value)})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested string is a valid hexadecimal + * color. Setting the optional `alpha` parameter to `true` allows an additional + * transparency channel to be included. + */ +function isHexColor({ alpha = false, }) { + return makeValidator({ + test: (value, state) => { + const res = alpha + ? colorStringRegExp.test(value) + : colorStringAlphaRegExp.test(value); + if (!res) + return pushError(state, `Expected to be a valid hexadecimal color string (got ${getPrintable(value)})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested string is valid base64. + */ +function isBase64() { + return makeValidator({ + test: (value, state) => { + if (!base64RegExp.test(value)) + return pushError(state, `Expected to be a valid base 64 string (got ${getPrintable(value)})`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested string is valid JSON. A + * optional spec can be passed as parameter, in which case the data will be + * deserialized and validated against the spec (coercion will be disabled + * for this check, and even if successful the returned value will still be + * the original string). + */ +function isJSON(spec = isUnknown()) { + return makeValidator({ + test: (value, state) => { + let data; + try { + data = JSON.parse(value); + } + catch (_a) { + return pushError(state, `Expected to be a valid JSON string (got ${getPrintable(value)})`); + } + return spec(data, state); + }, + }); +} + +function cascade(spec, ...followups) { + const resolvedFollowups = Array.isArray(followups[0]) + ? followups[0] + : followups; + return makeValidator({ + test: (value, state) => { + var _a, _b; + const context = { value: value }; + const subCoercion = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined` + ? makeCoercionFn(context, `value`) : undefined; + const subCoercions = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined` + ? [] : undefined; + if (!spec(value, Object.assign(Object.assign({}, state), { coercion: subCoercion, coercions: subCoercions }))) + return false; + const reverts = []; + if (typeof subCoercions !== `undefined`) + for (const [, coercion] of subCoercions) + reverts.push(coercion()); + try { + if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { + if (context.value !== value) { + if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) + return pushError(state, `Unbound coercion result`); + state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, context.value)]); + } + (_b = state === null || state === void 0 ? void 0 : state.coercions) === null || _b === void 0 ? void 0 : _b.push(...subCoercions); + } + return resolvedFollowups.every(spec => { + return spec(context.value, state); + }); + } + finally { + for (const revert of reverts) { + revert(); + } + } + }, + }); +} +function applyCascade(spec, ...followups) { + const resolvedFollowups = Array.isArray(followups[0]) + ? followups[0] + : followups; + return cascade(spec, resolvedFollowups); +} +/** + * Wraps the given spec to also allow `undefined`. + */ +function isOptional(spec) { + return makeValidator({ + test: (value, state) => { + if (typeof value === `undefined`) + return true; + return spec(value, state); + }, + }); +} +/** + * Wraps the given spec to also allow `null`. + */ +function isNullable(spec) { + return makeValidator({ + test: (value, state) => { + if (value === null) + return true; + return spec(value, state); + }, + }); +} +/** + * Create a validator that checks that the tested object contains the specified + * keys. + */ +function hasRequiredKeys(requiredKeys) { + const requiredSet = new Set(requiredKeys); + return makeValidator({ + test: (value, state) => { + const keys = new Set(Object.keys(value)); + const problems = []; + for (const key of requiredSet) + if (!keys.has(key)) + problems.push(key); + if (problems.length > 0) + return pushError(state, `Missing required ${plural(problems.length, `property`, `properties`)} ${getPrintableArray(problems, `and`)}`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested object contains none of the + * specified keys. + */ +function hasForbiddenKeys(forbiddenKeys) { + const forbiddenSet = new Set(forbiddenKeys); + return makeValidator({ + test: (value, state) => { + const keys = new Set(Object.keys(value)); + const problems = []; + for (const key of forbiddenSet) + if (keys.has(key)) + problems.push(key); + if (problems.length > 0) + return pushError(state, `Forbidden ${plural(problems.length, `property`, `properties`)} ${getPrintableArray(problems, `and`)}`); + return true; + }, + }); +} +/** + * Create a validator that checks that the tested object contains at most one + * of the specified keys. + */ +function hasMutuallyExclusiveKeys(exclusiveKeys) { + const exclusiveSet = new Set(exclusiveKeys); + return makeValidator({ + test: (value, state) => { + const keys = new Set(Object.keys(value)); + const used = []; + for (const key of exclusiveSet) + if (keys.has(key)) + used.push(key); + if (used.length > 1) + return pushError(state, `Mutually exclusive properties ${getPrintableArray(used, `and`)}`); + return true; + }, + }); +} +(function (KeyRelationship) { + KeyRelationship["Forbids"] = "Forbids"; + KeyRelationship["Requires"] = "Requires"; +})(exports.KeyRelationship || (exports.KeyRelationship = {})); +const keyRelationships = { + [exports.KeyRelationship.Forbids]: { + expect: false, + message: `forbids using`, + }, + [exports.KeyRelationship.Requires]: { + expect: true, + message: `requires using`, + }, +}; +/** + * Create a validator that checks that, when the specified subject property is + * set, the relationship is satisfied. + */ +function hasKeyRelationship(subject, relationship, others, { ignore = [], } = {}) { + const skipped = new Set(ignore); + const otherSet = new Set(others); + const spec = keyRelationships[relationship]; + const conjunction = relationship === exports.KeyRelationship.Forbids + ? `or` + : `and`; + return makeValidator({ + test: (value, state) => { + const keys = new Set(Object.keys(value)); + if (!keys.has(subject) || skipped.has(value[subject])) + return true; + const problems = []; + for (const key of otherSet) + if ((keys.has(key) && !skipped.has(value[key])) !== spec.expect) + problems.push(key); + if (problems.length >= 1) + return pushError(state, `Property "${subject}" ${spec.message} ${plural(problems.length, `property`, `properties`)} ${getPrintableArray(problems, conjunction)}`); + return true; + }, + }); +} + +exports.TypeAssertionError = TypeAssertionError; +exports.applyCascade = applyCascade; +exports.as = as; +exports.assert = assert; +exports.assertWithErrors = assertWithErrors; +exports.cascade = cascade; +exports.fn = fn; +exports.hasExactLength = hasExactLength; +exports.hasForbiddenKeys = hasForbiddenKeys; +exports.hasKeyRelationship = hasKeyRelationship; +exports.hasMaxLength = hasMaxLength; +exports.hasMinLength = hasMinLength; +exports.hasMutuallyExclusiveKeys = hasMutuallyExclusiveKeys; +exports.hasRequiredKeys = hasRequiredKeys; +exports.hasUniqueItems = hasUniqueItems; +exports.isArray = isArray; +exports.isAtLeast = isAtLeast; +exports.isAtMost = isAtMost; +exports.isBase64 = isBase64; +exports.isBoolean = isBoolean; +exports.isDate = isDate; +exports.isDict = isDict; +exports.isEnum = isEnum; +exports.isHexColor = isHexColor; +exports.isISO8601 = isISO8601; +exports.isInExclusiveRange = isInExclusiveRange; +exports.isInInclusiveRange = isInInclusiveRange; +exports.isInstanceOf = isInstanceOf; +exports.isInteger = isInteger; +exports.isJSON = isJSON; +exports.isLiteral = isLiteral; +exports.isLowerCase = isLowerCase; +exports.isMap = isMap; +exports.isNegative = isNegative; +exports.isNullable = isNullable; +exports.isNumber = isNumber; +exports.isObject = isObject; +exports.isOneOf = isOneOf; +exports.isOptional = isOptional; +exports.isPartial = isPartial; +exports.isPositive = isPositive; +exports.isRecord = isRecord; +exports.isSet = isSet; +exports.isString = isString; +exports.isTuple = isTuple; +exports.isUUID4 = isUUID4; +exports.isUnknown = isUnknown; +exports.isUpperCase = isUpperCase; +exports.makeTrait = makeTrait; +exports.makeValidator = makeValidator; +exports.matchesRegExp = matchesRegExp; +exports.softAssert = softAssert; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/which-npm-2.0.2-320ddf72f7-9.zip/node_modules/which/which.js": +/*!***********************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/which-npm-2.0.2-320ddf72f7-9.zip/node_modules/which/which.js ***! + \***********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const isWindows = process.platform === 'win32' || + process.env.OSTYPE === 'cygwin' || + process.env.OSTYPE === 'msys' + +const path = __webpack_require__(/*! path */ "path") +const COLON = isWindows ? ';' : ':' +const isexe = __webpack_require__(/*! isexe */ "../../../.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-9.zip/node_modules/isexe/index.js") + +const getNotFoundError = (cmd) => + Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' }) + +const getPathInfo = (cmd, opt) => { + const colon = opt.colon || COLON + + // If it has a slash, then we don't bother searching the pathenv. + // just check the file itself, and that's it. + const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? [''] + : ( + [ + // windows always checks the cwd first + ...(isWindows ? [process.cwd()] : []), + ...(opt.path || process.env.PATH || + /* istanbul ignore next: very unusual */ '').split(colon), + ] + ) + const pathExtExe = isWindows + ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM' + : '' + const pathExt = isWindows ? pathExtExe.split(colon) : [''] + + if (isWindows) { + if (cmd.indexOf('.') !== -1 && pathExt[0] !== '') + pathExt.unshift('') + } + + return { + pathEnv, + pathExt, + pathExtExe, + } +} + +const which = (cmd, opt, cb) => { + if (typeof opt === 'function') { + cb = opt + opt = {} + } + if (!opt) + opt = {} + + const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt) + const found = [] + + const step = i => new Promise((resolve, reject) => { + if (i === pathEnv.length) + return opt.all && found.length ? resolve(found) + : reject(getNotFoundError(cmd)) + + const ppRaw = pathEnv[i] + const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw + + const pCmd = path.join(pathPart, cmd) + const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd + : pCmd + + resolve(subStep(p, i, 0)) + }) + + const subStep = (p, i, ii) => new Promise((resolve, reject) => { + if (ii === pathExt.length) + return resolve(step(i + 1)) + const ext = pathExt[ii] + isexe(p + ext, { pathExt: pathExtExe }, (er, is) => { + if (!er && is) { + if (opt.all) + found.push(p + ext) + else + return resolve(p + ext) + } + return resolve(subStep(p, i, ii + 1)) + }) + }) + + return cb ? step(0).then(res => cb(null, res), cb) : step(0) +} + +const whichSync = (cmd, opt) => { + opt = opt || {} + + const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt) + const found = [] + + for (let i = 0; i < pathEnv.length; i ++) { + const ppRaw = pathEnv[i] + const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw + + const pCmd = path.join(pathPart, cmd) + const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd + : pCmd + + for (let j = 0; j < pathExt.length; j ++) { + const cur = p + pathExt[j] + try { + const is = isexe.sync(cur, { pathExt: pathExtExe }) + if (is) { + if (opt.all) + found.push(cur) + else + return cur + } + } catch (ex) {} + } + } + + if (opt.all && found.length) + return found + + if (opt.nothrow) + return null + + throw getNotFoundError(cmd) +} + +module.exports = which +which.sync = whichSync + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/yallist-npm-4.0.0-b493d9e907-9.zip/node_modules/yallist/iterator.js": +/*!******************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/yallist-npm-4.0.0-b493d9e907-9.zip/node_modules/yallist/iterator.js ***! + \******************************************************************************************************/ +/***/ ((module) => { + +"use strict"; + +module.exports = function (Yallist) { + Yallist.prototype[Symbol.iterator] = function* () { + for (let walker = this.head; walker; walker = walker.next) { + yield walker.value + } + } +} + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/yallist-npm-4.0.0-b493d9e907-9.zip/node_modules/yallist/yallist.js": +/*!*****************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/yallist-npm-4.0.0-b493d9e907-9.zip/node_modules/yallist/yallist.js ***! + \*****************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +module.exports = Yallist + +Yallist.Node = Node +Yallist.create = Yallist + +function Yallist (list) { + var self = this + if (!(self instanceof Yallist)) { + self = new Yallist() + } + + self.tail = null + self.head = null + self.length = 0 + + if (list && typeof list.forEach === 'function') { + list.forEach(function (item) { + self.push(item) + }) + } else if (arguments.length > 0) { + for (var i = 0, l = arguments.length; i < l; i++) { + self.push(arguments[i]) + } + } + + return self +} + +Yallist.prototype.removeNode = function (node) { + if (node.list !== this) { + throw new Error('removing node which does not belong to this list') + } + + var next = node.next + var prev = node.prev + + if (next) { + next.prev = prev + } + + if (prev) { + prev.next = next + } + + if (node === this.head) { + this.head = next + } + if (node === this.tail) { + this.tail = prev + } + + node.list.length-- + node.next = null + node.prev = null + node.list = null + + return next +} + +Yallist.prototype.unshiftNode = function (node) { + if (node === this.head) { + return + } + + if (node.list) { + node.list.removeNode(node) + } + + var head = this.head + node.list = this + node.next = head + if (head) { + head.prev = node + } + + this.head = node + if (!this.tail) { + this.tail = node + } + this.length++ +} + +Yallist.prototype.pushNode = function (node) { + if (node === this.tail) { + return + } + + if (node.list) { + node.list.removeNode(node) + } + + var tail = this.tail + node.list = this + node.prev = tail + if (tail) { + tail.next = node + } + + this.tail = node + if (!this.head) { + this.head = node + } + this.length++ +} + +Yallist.prototype.push = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + push(this, arguments[i]) + } + return this.length +} + +Yallist.prototype.unshift = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + unshift(this, arguments[i]) + } + return this.length +} + +Yallist.prototype.pop = function () { + if (!this.tail) { + return undefined + } + + var res = this.tail.value + this.tail = this.tail.prev + if (this.tail) { + this.tail.next = null + } else { + this.head = null + } + this.length-- + return res +} + +Yallist.prototype.shift = function () { + if (!this.head) { + return undefined + } + + var res = this.head.value + this.head = this.head.next + if (this.head) { + this.head.prev = null + } else { + this.tail = null + } + this.length-- + return res +} + +Yallist.prototype.forEach = function (fn, thisp) { + thisp = thisp || this + for (var walker = this.head, i = 0; walker !== null; i++) { + fn.call(thisp, walker.value, i, this) + walker = walker.next + } +} + +Yallist.prototype.forEachReverse = function (fn, thisp) { + thisp = thisp || this + for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { + fn.call(thisp, walker.value, i, this) + walker = walker.prev + } +} + +Yallist.prototype.get = function (n) { + for (var i = 0, walker = this.head; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.next + } + if (i === n && walker !== null) { + return walker.value + } +} + +Yallist.prototype.getReverse = function (n) { + for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.prev + } + if (i === n && walker !== null) { + return walker.value + } +} + +Yallist.prototype.map = function (fn, thisp) { + thisp = thisp || this + var res = new Yallist() + for (var walker = this.head; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)) + walker = walker.next + } + return res +} + +Yallist.prototype.mapReverse = function (fn, thisp) { + thisp = thisp || this + var res = new Yallist() + for (var walker = this.tail; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)) + walker = walker.prev + } + return res +} + +Yallist.prototype.reduce = function (fn, initial) { + var acc + var walker = this.head + if (arguments.length > 1) { + acc = initial + } else if (this.head) { + walker = this.head.next + acc = this.head.value + } else { + throw new TypeError('Reduce of empty list with no initial value') + } + + for (var i = 0; walker !== null; i++) { + acc = fn(acc, walker.value, i) + walker = walker.next + } + + return acc +} + +Yallist.prototype.reduceReverse = function (fn, initial) { + var acc + var walker = this.tail + if (arguments.length > 1) { + acc = initial + } else if (this.tail) { + walker = this.tail.prev + acc = this.tail.value + } else { + throw new TypeError('Reduce of empty list with no initial value') + } + + for (var i = this.length - 1; walker !== null; i--) { + acc = fn(acc, walker.value, i) + walker = walker.prev + } + + return acc +} + +Yallist.prototype.toArray = function () { + var arr = new Array(this.length) + for (var i = 0, walker = this.head; walker !== null; i++) { + arr[i] = walker.value + walker = walker.next + } + return arr +} + +Yallist.prototype.toArrayReverse = function () { + var arr = new Array(this.length) + for (var i = 0, walker = this.tail; walker !== null; i++) { + arr[i] = walker.value + walker = walker.prev + } + return arr +} + +Yallist.prototype.slice = function (from, to) { + to = to || this.length + if (to < 0) { + to += this.length + } + from = from || 0 + if (from < 0) { + from += this.length + } + var ret = new Yallist() + if (to < from || to < 0) { + return ret + } + if (from < 0) { + from = 0 + } + if (to > this.length) { + to = this.length + } + for (var i = 0, walker = this.head; walker !== null && i < from; i++) { + walker = walker.next + } + for (; walker !== null && i < to; i++, walker = walker.next) { + ret.push(walker.value) + } + return ret +} + +Yallist.prototype.sliceReverse = function (from, to) { + to = to || this.length + if (to < 0) { + to += this.length + } + from = from || 0 + if (from < 0) { + from += this.length + } + var ret = new Yallist() + if (to < from || to < 0) { + return ret + } + if (from < 0) { + from = 0 + } + if (to > this.length) { + to = this.length + } + for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { + walker = walker.prev + } + for (; walker !== null && i > from; i--, walker = walker.prev) { + ret.push(walker.value) + } + return ret +} + +Yallist.prototype.splice = function (start, deleteCount, ...nodes) { + if (start > this.length) { + start = this.length - 1 + } + if (start < 0) { + start = this.length + start; + } + + for (var i = 0, walker = this.head; walker !== null && i < start; i++) { + walker = walker.next + } + + var ret = [] + for (var i = 0; walker && i < deleteCount; i++) { + ret.push(walker.value) + walker = this.removeNode(walker) + } + if (walker === null) { + walker = this.tail + } + + if (walker !== this.head && walker !== this.tail) { + walker = walker.prev + } + + for (var i = 0; i < nodes.length; i++) { + walker = insert(this, walker, nodes[i]) + } + return ret; +} + +Yallist.prototype.reverse = function () { + var head = this.head + var tail = this.tail + for (var walker = head; walker !== null; walker = walker.prev) { + var p = walker.prev + walker.prev = walker.next + walker.next = p + } + this.head = tail + this.tail = head + return this +} + +function insert (self, node, value) { + var inserted = node === self.head ? + new Node(value, null, node, self) : + new Node(value, node, node.next, self) + + if (inserted.next === null) { + self.tail = inserted + } + if (inserted.prev === null) { + self.head = inserted + } + + self.length++ + + return inserted +} + +function push (self, item) { + self.tail = new Node(item, self.tail, null, self) + if (!self.head) { + self.head = self.tail + } + self.length++ +} + +function unshift (self, item) { + self.head = new Node(item, null, self.head, self) + if (!self.tail) { + self.tail = self.head + } + self.length++ +} + +function Node (value, prev, next, list) { + if (!(this instanceof Node)) { + return new Node(value, prev, next, list) + } + + this.list = list + this.value = value + + if (prev) { + prev.next = this + this.prev = prev + } else { + this.prev = null + } + + if (next) { + next.prev = this + this.next = next + } else { + this.next = null } +} + +try { + // add if support for Symbol.iterator is present + __webpack_require__(/*! ./iterator.js */ "../../../.yarn/berry/cache/yallist-npm-4.0.0-b493d9e907-9.zip/node_modules/yallist/iterator.js")(Yallist) +} catch (er) {} + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/Cli.js": +/*!************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/Cli.js ***! + \************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var constants = __webpack_require__(/*! ../constants.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/constants.js"); +var Command = __webpack_require__(/*! ./Command.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/Command.js"); +var core = __webpack_require__(/*! ../core.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/core.js"); +var format = __webpack_require__(/*! ../format.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/format.js"); +var HelpCommand = __webpack_require__(/*! ./HelpCommand.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/HelpCommand.js"); + +const errorCommandSymbol = Symbol(`clipanion/errorCommand`); +function getDefaultColorSettings() { + if (process.env.FORCE_COLOR === `0`) + return false; + if (process.env.FORCE_COLOR === `1`) + return true; + if (typeof process.stdout !== `undefined` && process.stdout.isTTY) + return true; + return false; +} +/** + * @template Context The context shared by all commands. Contexts are a set of values, defined when calling the `run`/`runExit` functions from the CLI instance, that will be made available to the commands via `this.context`. + */ +class Cli { + constructor({ binaryLabel, binaryName: binaryNameOpt = `...`, binaryVersion, enableCapture = false, enableColors = getDefaultColorSettings() } = {}) { + this.registrations = new Map(); + this.builder = new core.CliBuilder({ binaryName: binaryNameOpt }); + this.binaryLabel = binaryLabel; + this.binaryName = binaryNameOpt; + this.binaryVersion = binaryVersion; + this.enableCapture = enableCapture; + this.enableColors = enableColors; + } + /** + * Creates a new Cli and registers all commands passed as parameters. + * + * @param commandClasses The Commands to register + * @returns The created `Cli` instance + */ + static from(commandClasses, options = {}) { + const cli = new Cli(options); + for (const commandClass of commandClasses) + cli.register(commandClass); + return cli; + } + /** + * Registers a command inside the CLI. + */ + register(commandClass) { + var _a; + const specs = new Map(); + const command = new commandClass(); + for (const key in command) { + const value = command[key]; + if (typeof value === `object` && value !== null && value[Command.Command.isOption]) { + specs.set(key, value); + } + } + const builder = this.builder.command(); + const index = builder.cliIndex; + const paths = (_a = commandClass.paths) !== null && _a !== void 0 ? _a : command.paths; + if (typeof paths !== `undefined`) + for (const path of paths) + builder.addPath(path); + this.registrations.set(commandClass, { specs, builder, index }); + for (const [key, { definition }] of specs.entries()) + definition(builder, key); + builder.setContext({ + commandClass, + }); + } + process(input) { + const { contexts, process } = this.builder.compile(); + const state = process(input); + switch (state.selectedIndex) { + case constants.HELP_COMMAND_INDEX: + { + return HelpCommand.HelpCommand.from(state, contexts); + } + default: + { + const { commandClass } = contexts[state.selectedIndex]; + const record = this.registrations.get(commandClass); + if (typeof record === `undefined`) + throw new Error(`Assertion failed: Expected the command class to have been registered.`); + const command = new commandClass(); + command.path = state.path; + try { + for (const [key, { transformer }] of record.specs.entries()) + command[key] = transformer(record.builder, key, state); + return command; + } + catch (error) { + error[errorCommandSymbol] = command; + throw error; + } + } + break; + } + } + async run(input, userContext) { + let command; + const context = { + ...Cli.defaultContext, + ...userContext, + }; + if (!Array.isArray(input)) { + command = input; + } + else { + try { + command = this.process(input); + } + catch (error) { + context.stdout.write(this.error(error)); + return 1; + } + } + if (command.help) { + context.stdout.write(this.usage(command, { detailed: true })); + return 0; + } + command.context = context; + command.cli = { + binaryLabel: this.binaryLabel, + binaryName: this.binaryName, + binaryVersion: this.binaryVersion, + enableCapture: this.enableCapture, + enableColors: this.enableColors, + definitions: () => this.definitions(), + error: (error, opts) => this.error(error, opts), + process: input => this.process(input), + run: (input, subContext) => this.run(input, { ...context, ...subContext }), + usage: (command, opts) => this.usage(command, opts), + }; + const activate = this.enableCapture + ? getCaptureActivator(context) + : noopCaptureActivator; + let exitCode; + try { + exitCode = await activate(() => command.validateAndExecute().catch(error => command.catch(error).then(() => 0))); + } + catch (error) { + context.stdout.write(this.error(error, { command })); + return 1; + } + return exitCode; + } + /** + * Runs a command and exits the current `process` with the exit code returned by the command. + * + * @param input An array containing the name of the command and its arguments. + * + * @example + * cli.runExit(process.argv.slice(2)) + */ + async runExit(input, context) { + process.exitCode = await this.run(input, context); + } + suggest(input, partial) { + const { suggest } = this.builder.compile(); + return suggest(input, partial); + } + definitions({ colored = false } = {}) { + const data = []; + for (const [commandClass, { index }] of this.registrations) { + if (typeof commandClass.usage === `undefined`) + continue; + const { usage: path } = this.getUsageByIndex(index, { detailed: false }); + const { usage, options } = this.getUsageByIndex(index, { detailed: true, inlineOptions: false }); + const category = typeof commandClass.usage.category !== `undefined` + ? format.formatMarkdownish(commandClass.usage.category, { format: this.format(colored), paragraphs: false }) + : undefined; + const description = typeof commandClass.usage.description !== `undefined` + ? format.formatMarkdownish(commandClass.usage.description, { format: this.format(colored), paragraphs: false }) + : undefined; + const details = typeof commandClass.usage.details !== `undefined` + ? format.formatMarkdownish(commandClass.usage.details, { format: this.format(colored), paragraphs: true }) + : undefined; + const examples = typeof commandClass.usage.examples !== `undefined` + ? commandClass.usage.examples.map(([label, cli]) => [format.formatMarkdownish(label, { format: this.format(colored), paragraphs: false }), cli.replace(/\$0/g, this.binaryName)]) + : undefined; + data.push({ path, usage, category, description, details, examples, options }); + } + return data; + } + usage(command = null, { colored, detailed = false, prefix = `$ ` } = {}) { + var _a; + // In case the default command is the only one, we can just show the command help rather than the general one + if (command === null) { + for (const commandClass of this.registrations.keys()) { + const paths = commandClass.paths; + const isDocumented = typeof commandClass.usage !== `undefined`; + const isExclusivelyDefault = !paths || paths.length === 0 || (paths.length === 1 && paths[0].length === 0); + const isDefault = isExclusivelyDefault || ((_a = paths === null || paths === void 0 ? void 0 : paths.some(path => path.length === 0)) !== null && _a !== void 0 ? _a : false); + if (isDefault) { + if (command) { + command = null; + break; + } + else { + command = commandClass; + } + } + else { + if (isDocumented) { + command = null; + continue; + } + } + } + if (command) { + detailed = true; + } + } + // @ts-ignore + const commandClass = command !== null && command instanceof Command.Command + ? command.constructor + : command; + let result = ``; + if (!commandClass) { + const commandsByCategories = new Map(); + for (const [commandClass, { index }] of this.registrations.entries()) { + if (typeof commandClass.usage === `undefined`) + continue; + const category = typeof commandClass.usage.category !== `undefined` + ? format.formatMarkdownish(commandClass.usage.category, { format: this.format(colored), paragraphs: false }) + : null; + let categoryCommands = commandsByCategories.get(category); + if (typeof categoryCommands === `undefined`) + commandsByCategories.set(category, categoryCommands = []); + const { usage } = this.getUsageByIndex(index); + categoryCommands.push({ commandClass, usage }); + } + const categoryNames = Array.from(commandsByCategories.keys()).sort((a, b) => { + if (a === null) + return -1; + if (b === null) + return +1; + return a.localeCompare(b, `en`, { usage: `sort`, caseFirst: `upper` }); + }); + const hasLabel = typeof this.binaryLabel !== `undefined`; + const hasVersion = typeof this.binaryVersion !== `undefined`; + if (hasLabel || hasVersion) { + if (hasLabel && hasVersion) + result += `${this.format(colored).header(`${this.binaryLabel} - ${this.binaryVersion}`)}\n\n`; + else if (hasLabel) + result += `${this.format(colored).header(`${this.binaryLabel}`)}\n`; + else + result += `${this.format(colored).header(`${this.binaryVersion}`)}\n`; + result += ` ${this.format(colored).bold(prefix)}${this.binaryName} \n`; + } + else { + result += `${this.format(colored).bold(prefix)}${this.binaryName} \n`; + } + for (const categoryName of categoryNames) { + const commands = commandsByCategories.get(categoryName).slice().sort((a, b) => { + return a.usage.localeCompare(b.usage, `en`, { usage: `sort`, caseFirst: `upper` }); + }); + const header = categoryName !== null + ? categoryName.trim() + : `General commands`; + result += `\n`; + result += `${this.format(colored).header(`${header}`)}\n`; + for (const { commandClass, usage } of commands) { + const doc = commandClass.usage.description || `undocumented`; + result += `\n`; + result += ` ${this.format(colored).bold(usage)}\n`; + result += ` ${format.formatMarkdownish(doc, { format: this.format(colored), paragraphs: false })}`; + } + } + result += `\n`; + result += format.formatMarkdownish(`You can also print more details about any of these commands by calling them with the \`-h,--help\` flag right after the command name.`, { format: this.format(colored), paragraphs: true }); + } + else { + if (!detailed) { + const { usage } = this.getUsageByRegistration(commandClass); + result += `${this.format(colored).bold(prefix)}${usage}\n`; + } + else { + const { description = ``, details = ``, examples = [], } = commandClass.usage || {}; + if (description !== ``) { + result += format.formatMarkdownish(description, { format: this.format(colored), paragraphs: false }).replace(/^./, $0 => $0.toUpperCase()); + result += `\n`; + } + if (details !== `` || examples.length > 0) { + result += `${this.format(colored).header(`Usage`)}\n`; + result += `\n`; + } + const { usage, options } = this.getUsageByRegistration(commandClass, { inlineOptions: false }); + result += `${this.format(colored).bold(prefix)}${usage}\n`; + if (options.length > 0) { + result += `\n`; + result += `${format.richFormat.header(`Options`)}\n`; + const maxDefinitionLength = options.reduce((length, option) => { + return Math.max(length, option.definition.length); + }, 0); + result += `\n`; + for (const { definition, description } of options) { + result += ` ${this.format(colored).bold(definition.padEnd(maxDefinitionLength))} ${format.formatMarkdownish(description, { format: this.format(colored), paragraphs: false })}`; + } + } + if (details !== ``) { + result += `\n`; + result += `${this.format(colored).header(`Details`)}\n`; + result += `\n`; + result += format.formatMarkdownish(details, { format: this.format(colored), paragraphs: true }); + } + if (examples.length > 0) { + result += `\n`; + result += `${this.format(colored).header(`Examples`)}\n`; + for (const [description, example] of examples) { + result += `\n`; + result += format.formatMarkdownish(description, { format: this.format(colored), paragraphs: false }); + result += `${example + .replace(/^/m, ` ${this.format(colored).bold(prefix)}`) + .replace(/\$0/g, this.binaryName)}\n`; + } + } + } + } + return result; + } + error(error, _a) { + var _b; + var { colored, command = (_b = error[errorCommandSymbol]) !== null && _b !== void 0 ? _b : null } = _a === void 0 ? {} : _a; + if (!(error instanceof Error)) + error = new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(error)})`); + let result = ``; + let name = error.name.replace(/([a-z])([A-Z])/g, `$1 $2`); + if (name === `Error`) + name = `Internal Error`; + result += `${this.format(colored).error(name)}: ${error.message}\n`; + const meta = error.clipanion; + if (typeof meta !== `undefined`) { + if (meta.type === `usage`) { + result += `\n`; + result += this.usage(command); + } + } + else { + if (error.stack) { + result += `${error.stack.replace(/^.*\n/, ``)}\n`; + } + } + return result; + } + getUsageByRegistration(klass, opts) { + const record = this.registrations.get(klass); + if (typeof record === `undefined`) + throw new Error(`Assertion failed: Unregistered command`); + return this.getUsageByIndex(record.index, opts); + } + getUsageByIndex(n, opts) { + return this.builder.getBuilderByIndex(n).usage(opts); + } + format(colored = this.enableColors) { + return colored ? format.richFormat : format.textFormat; + } +} +/** + * The default context of the CLI. + * + * Contains the stdio of the current `process`. + */ +Cli.defaultContext = { + stdin: process.stdin, + stdout: process.stdout, + stderr: process.stderr, +}; +let gContextStorage; +function getCaptureActivator(context) { + let contextStorage = gContextStorage; + if (typeof contextStorage === `undefined`) { + if (context.stdout === process.stdout && context.stderr === process.stderr) + return noopCaptureActivator; + const { AsyncLocalStorage: LazyAsyncLocalStorage } = __webpack_require__(/*! async_hooks */ "async_hooks"); + contextStorage = gContextStorage = new LazyAsyncLocalStorage(); + const origStdoutWrite = process.stdout._write; + process.stdout._write = function (chunk, encoding, cb) { + const context = contextStorage.getStore(); + if (typeof context === `undefined`) + return origStdoutWrite.call(this, chunk, encoding, cb); + return context.stdout.write(chunk, encoding, cb); + }; + const origStderrWrite = process.stderr._write; + process.stderr._write = function (chunk, encoding, cb) { + const context = contextStorage.getStore(); + if (typeof context === `undefined`) + return origStderrWrite.call(this, chunk, encoding, cb); + return context.stderr.write(chunk, encoding, cb); + }; + } + return (fn) => { + return contextStorage.run(context, fn); + }; +} +function noopCaptureActivator(fn) { + return fn(); +} + +exports.Cli = Cli; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/Command.js": +/*!****************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/Command.js ***! + \****************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var utils = __webpack_require__(/*! ./options/utils.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/utils.js"); + +function _interopNamespace(e) { + if (e && e.__esModule) return e; + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { + return e[k]; + } + }); + } + }); + } + n['default'] = e; + return Object.freeze(n); +} + +class Command { + constructor() { + /** + * Predefined that will be set to true if `-h,--help` has been used, in + * which case `Command#execute` won't be called. + */ + this.help = false; + } + /** + * Defines the usage information for the given command. + */ + static Usage(usage) { + return usage; + } + /** + * Standard error handler which will simply rethrow the error. Can be used + * to add custom logic to handle errors from the command or simply return + * the parent class error handling. + */ + async catch(error) { + throw error; + } + async validateAndExecute() { + const commandClass = this.constructor; + const cascade = commandClass.schema; + if (Array.isArray(cascade)) { + const { isDict, isUnknown, applyCascade } = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(__webpack_require__(/*! typanion */ "../../../.yarn/berry/cache/typanion-npm-3.9.0-ef0bfe7e8b-9.zip/node_modules/typanion/lib/index.js")); }); + const schema = applyCascade(isDict(isUnknown()), cascade); + const errors = []; + const coercions = []; + const check = schema(this, { errors, coercions }); + if (!check) + throw utils.formatError(`Invalid option schema`, errors); + for (const [, op] of coercions) { + op(); + } + } + else if (cascade != null) { + throw new Error(`Invalid command schema`); + } + const exitCode = await this.execute(); + if (typeof exitCode !== `undefined`) { + return exitCode; + } + else { + return 0; + } + } +} +/** + * Used to detect option definitions. + */ +Command.isOption = utils.isOptionSymbol; +/** + * Just an helper to use along with the `paths` fields, to make it + * clearer that a command is the default one. + * + * @example + * class MyCommand extends Command { + * static paths = [Command.Default]; + * } + */ +Command.Default = []; + +exports.Command = Command; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/HelpCommand.js": +/*!********************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/HelpCommand.js ***! + \********************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var Command = __webpack_require__(/*! ./Command.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/Command.js"); + +class HelpCommand extends Command.Command { + constructor(contexts) { + super(); + this.contexts = contexts; + this.commands = []; + } + static from(state, contexts) { + const command = new HelpCommand(contexts); + command.path = state.path; + for (const opt of state.options) { + switch (opt.name) { + case `-c`: + { + command.commands.push(Number(opt.value)); + } + break; + case `-i`: + { + command.index = Number(opt.value); + } + break; + } + } + return command; + } + async execute() { + let commands = this.commands; + if (typeof this.index !== `undefined` && this.index >= 0 && this.index < commands.length) + commands = [commands[this.index]]; + if (commands.length === 0) { + this.context.stdout.write(this.cli.usage()); + } + else if (commands.length === 1) { + this.context.stdout.write(this.cli.usage(this.contexts[commands[0]].commandClass, { detailed: true })); + } + else if (commands.length > 1) { + this.context.stdout.write(`Multiple commands match your selection:\n`); + this.context.stdout.write(`\n`); + let index = 0; + for (const command of this.commands) + this.context.stdout.write(this.cli.usage(this.contexts[command].commandClass, { prefix: `${index++}. `.padStart(5) })); + this.context.stdout.write(`\n`); + this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands.\n`); + } + } +} + +exports.HelpCommand = HelpCommand; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/builtins/definitions.js": +/*!*****************************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/builtins/definitions.js ***! + \*****************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var Command = __webpack_require__(/*! ../Command.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/Command.js"); + +/** + * A command that prints the clipanion definitions. + */ +class DefinitionsCommand extends Command.Command { + async execute() { + this.context.stdout.write(`${JSON.stringify(this.cli.definitions(), null, 2)}\n`); + } +} +DefinitionsCommand.paths = [[`--clipanion=definitions`]]; + +exports.DefinitionsCommand = DefinitionsCommand; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/builtins/help.js": +/*!**********************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/builtins/help.js ***! + \**********************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var Command = __webpack_require__(/*! ../Command.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/Command.js"); + +/** + * A command that prints the usage of all commands. + * + * Paths: `-h`, `--help` + */ +class HelpCommand extends Command.Command { + async execute() { + this.context.stdout.write(this.cli.usage()); + } +} +HelpCommand.paths = [[`-h`], [`--help`]]; + +exports.HelpCommand = HelpCommand; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/builtins/index.js": +/*!***********************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/builtins/index.js ***! + \***********************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var definitions = __webpack_require__(/*! ./definitions.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/builtins/definitions.js"); +var help = __webpack_require__(/*! ./help.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/builtins/help.js"); +var version = __webpack_require__(/*! ./version.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/builtins/version.js"); + + + +exports.DefinitionsCommand = definitions.DefinitionsCommand; +exports.HelpCommand = help.HelpCommand; +exports.VersionCommand = version.VersionCommand; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/builtins/version.js": +/*!*************************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/builtins/version.js ***! + \*************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var Command = __webpack_require__(/*! ../Command.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/Command.js"); + +/** + * A command that prints the version of the binary (`cli.binaryVersion`). + * + * Paths: `-v`, `--version` + */ +class VersionCommand extends Command.Command { + async execute() { + var _a; + this.context.stdout.write(`${(_a = this.cli.binaryVersion) !== null && _a !== void 0 ? _a : ``}\n`); + } +} +VersionCommand.paths = [[`-v`], [`--version`]]; + +exports.VersionCommand = VersionCommand; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/index.js": +/*!**************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/index.js ***! + \**************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var errors = __webpack_require__(/*! ../errors.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/errors.js"); +var Command = __webpack_require__(/*! ./Command.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/Command.js"); +var Cli = __webpack_require__(/*! ./Cli.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/Cli.js"); +var index = __webpack_require__(/*! ./builtins/index.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/builtins/index.js"); +var index$1 = __webpack_require__(/*! ./options/index.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/index.js"); + + + +exports.UsageError = errors.UsageError; +exports.Command = Command.Command; +exports.Cli = Cli.Cli; +exports.Builtins = index; +exports.Option = index$1; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Array.js": +/*!**********************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Array.js ***! + \**********************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/utils.js"); + +function Array(descriptor, initialValueBase, optsBase) { + const [initialValue, opts] = utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); + const { arity = 1 } = opts; + const optNames = descriptor.split(`,`); + const nameSet = new Set(optNames); + return utils.makeCommandOption({ + definition(builder) { + builder.addOption({ + names: optNames, + arity, + hidden: opts === null || opts === void 0 ? void 0 : opts.hidden, + description: opts === null || opts === void 0 ? void 0 : opts.description, + required: opts.required, + }); + }, + transformer(builder, key, state) { + let currentValue = typeof initialValue !== `undefined` + ? [...initialValue] + : undefined; + for (const { name, value } of state.options) { + if (!nameSet.has(name)) + continue; + currentValue = currentValue !== null && currentValue !== void 0 ? currentValue : []; + currentValue.push(value); + } + return currentValue; + }, + }); +} + +exports.Array = Array; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Boolean.js": +/*!************************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Boolean.js ***! + \************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/utils.js"); + +function Boolean(descriptor, initialValueBase, optsBase) { + const [initialValue, opts] = utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); + const optNames = descriptor.split(`,`); + const nameSet = new Set(optNames); + return utils.makeCommandOption({ + definition(builder) { + builder.addOption({ + names: optNames, + allowBinding: false, + arity: 0, + hidden: opts.hidden, + description: opts.description, + required: opts.required, + }); + }, + transformer(builer, key, state) { + let currentValue = initialValue; + for (const { name, value } of state.options) { + if (!nameSet.has(name)) + continue; + currentValue = value; + } + return currentValue; + }, + }); +} + +exports.Boolean = Boolean; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Counter.js": +/*!************************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Counter.js ***! + \************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; - [CONSUMEBODY] (chunk, position) { - // write up to but no more than writeEntry.blockRemain - const entry = this[WRITEENTRY] - const br = entry.blockRemain - const c = (br >= chunk.length && position === 0) ? chunk - : chunk.slice(position, position + br) - entry.write(c) +Object.defineProperty(exports, "__esModule", ({ value: true })); - if (!entry.blockRemain) { - this[STATE] = 'header' - this[WRITEENTRY] = null - entry.end() +var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/utils.js"); + +function Counter(descriptor, initialValueBase, optsBase) { + const [initialValue, opts] = utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); + const optNames = descriptor.split(`,`); + const nameSet = new Set(optNames); + return utils.makeCommandOption({ + definition(builder) { + builder.addOption({ + names: optNames, + allowBinding: false, + arity: 0, + hidden: opts.hidden, + description: opts.description, + required: opts.required, + }); + }, + transformer(builder, key, state) { + let currentValue = initialValue; + for (const { name, value } of state.options) { + if (!nameSet.has(name)) + continue; + currentValue !== null && currentValue !== void 0 ? currentValue : (currentValue = 0); + // Negated options reset the counter + if (!value) { + currentValue = 0; + } + else { + currentValue += 1; + } + } + return currentValue; + }, + }); +} + +exports.Counter = Counter; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Proxy.js": +/*!**********************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Proxy.js ***! + \**********************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/utils.js"); + +/** + * Used to annotate that the command wants to retrieve all trailing + * arguments that cannot be tied to a declared option. + * + * Be careful: this function is order-dependent! Make sure to define it + * after any positional argument you want to declare. + * + * This function is mutually exclusive with Option.Rest. + * + * @example + * yarn run foo hello --foo=bar world + * ► proxy = ["hello", "--foo=bar", "world"] + */ +function Proxy(opts = {}) { + return utils.makeCommandOption({ + definition(builder, key) { + var _a; + builder.addProxy({ + name: (_a = opts.name) !== null && _a !== void 0 ? _a : key, + required: opts.required, + }); + }, + transformer(builder, key, state) { + return state.positionals.map(({ value }) => value); + }, + }); +} + +exports.Proxy = Proxy; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Rest.js": +/*!*********************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Rest.js ***! + \*********************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/utils.js"); +var core = __webpack_require__(/*! ../../core.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/core.js"); + +/** + * Used to annotate that the command supports any number of positional + * arguments. + * + * Be careful: this function is order-dependent! Make sure to define it + * after any positional argument you want to declare. + * + * This function is mutually exclusive with Option.Proxy. + * + * @example + * yarn add hello world + * ► rest = ["hello", "world"] + */ +function Rest(opts = {}) { + return utils.makeCommandOption({ + definition(builder, key) { + var _a; + builder.addRest({ + name: (_a = opts.name) !== null && _a !== void 0 ? _a : key, + required: opts.required, + }); + }, + transformer(builder, key, state) { + // The builder's arity.extra will always be NoLimits, + // because it is set when we call registerDefinition + const isRestPositional = (index) => { + const positional = state.positionals[index]; + // A NoLimits extra (i.e. an optional rest argument) + if (positional.extra === core.NoLimits) + return true; + // A leading positional (i.e. a required rest argument) + if (positional.extra === false && index < builder.arity.leading.length) + return true; + return false; + }; + let count = 0; + while (count < state.positionals.length && isRestPositional(count)) + count += 1; + return state.positionals.splice(0, count).map(({ value }) => value); + }, + }); +} + +exports.Rest = Rest; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/String.js": +/*!***********************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/String.js ***! + \***********************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/utils.js"); +var core = __webpack_require__(/*! ../../core.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/core.js"); + +function StringOption(descriptor, initialValueBase, optsBase) { + const [initialValue, opts] = utils.rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {}); + const { arity = 1 } = opts; + const optNames = descriptor.split(`,`); + const nameSet = new Set(optNames); + return utils.makeCommandOption({ + definition(builder) { + builder.addOption({ + names: optNames, + arity: opts.tolerateBoolean ? 0 : arity, + hidden: opts.hidden, + description: opts.description, + required: opts.required, + }); + }, + transformer(builder, key, state) { + let usedName; + let currentValue = initialValue; + for (const { name, value } of state.options) { + if (!nameSet.has(name)) + continue; + usedName = name; + currentValue = value; + } + if (typeof currentValue === `string`) { + return utils.applyValidator(usedName !== null && usedName !== void 0 ? usedName : key, currentValue, opts.validator); + } + else { + return currentValue; + } + }, + }); +} +function StringPositional(opts = {}) { + const { required = true } = opts; + return utils.makeCommandOption({ + definition(builder, key) { + var _a; + builder.addPositional({ + name: (_a = opts.name) !== null && _a !== void 0 ? _a : key, + required: opts.required, + }); + }, + transformer(builder, key, state) { + var _a; + for (let i = 0; i < state.positionals.length; ++i) { + // We skip NoLimits extras. We only care about + // required and optional finite positionals. + if (state.positionals[i].extra === core.NoLimits) + continue; + // We skip optional positionals when we only + // care about required positionals. + if (required && state.positionals[i].extra === true) + continue; + // We skip required positionals when we only + // care about optional positionals. + if (!required && state.positionals[i].extra === false) + continue; + // We remove the positional from the list + const [positional] = state.positionals.splice(i, 1); + return utils.applyValidator((_a = opts.name) !== null && _a !== void 0 ? _a : key, positional.value, opts.validator); + } + return undefined; + }, + }); +} +// This function is badly typed, but it doesn't matter because the overloads provide the true public typings +function String(descriptor, ...args) { + if (typeof descriptor === `string`) { + return StringOption(descriptor, ...args); } + else { + return StringPositional(descriptor); + } +} + +exports.String = String; + + +/***/ }), + +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/index.js": +/*!**********************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/index.js ***! + \**********************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var utils = __webpack_require__(/*! ./utils.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/utils.js"); +var _Array = __webpack_require__(/*! ./Array.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Array.js"); +var _Boolean = __webpack_require__(/*! ./Boolean.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Boolean.js"); +var Counter = __webpack_require__(/*! ./Counter.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Counter.js"); +var _Proxy = __webpack_require__(/*! ./Proxy.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Proxy.js"); +var Rest = __webpack_require__(/*! ./Rest.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/Rest.js"); +var _String = __webpack_require__(/*! ./String.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/String.js"); - return c.length - } - [CONSUMEMETA] (chunk, position) { - const entry = this[WRITEENTRY] - const ret = this[CONSUMEBODY](chunk, position) - // if we finished, then the entry is reset - if (!this[WRITEENTRY]) - this[EMITMETA](entry) +exports.applyValidator = utils.applyValidator; +exports.cleanValidationError = utils.cleanValidationError; +exports.formatError = utils.formatError; +exports.isOptionSymbol = utils.isOptionSymbol; +exports.makeCommandOption = utils.makeCommandOption; +exports.rerouteArguments = utils.rerouteArguments; +exports.Array = _Array.Array; +exports.Boolean = _Boolean.Boolean; +exports.Counter = Counter.Counter; +exports.Proxy = _Proxy.Proxy; +exports.Rest = Rest.Rest; +exports.String = _String.String; - return ret - } - [EMIT] (ev, data, extra) { - if (!this[QUEUE].length && !this[READENTRY]) - this.emit(ev, data, extra) - else - this[QUEUE].push([ev, data, extra]) - } +/***/ }), - [EMITMETA] (entry) { - this[EMIT]('meta', this[META]) - switch (entry.type) { - case 'ExtendedHeader': - case 'OldExtendedHeader': - this[EX] = Pax.parse(this[META], this[EX], false) - break +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/utils.js": +/*!**********************************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/options/utils.js ***! + \**********************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - case 'GlobalExtendedHeader': - this[GEX] = Pax.parse(this[META], this[GEX], true) - break +"use strict"; - case 'NextFileHasLongPath': - case 'OldGnuLongPath': - this[EX] = this[EX] || Object.create(null) - this[EX].path = this[META].replace(/\0.*/, '') - break - case 'NextFileHasLongLinkpath': - this[EX] = this[EX] || Object.create(null) - this[EX].linkpath = this[META].replace(/\0.*/, '') - break +Object.defineProperty(exports, "__esModule", ({ value: true })); - /* istanbul ignore next */ - default: throw new Error('unknown meta: ' + entry.type) +var errors = __webpack_require__(/*! ../../errors.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/errors.js"); + +const isOptionSymbol = Symbol(`clipanion/isOption`); +function makeCommandOption(spec) { + // We lie! But it's for the good cause: the cli engine will turn the specs into proper values after instantiation. + return { ...spec, [isOptionSymbol]: true }; +} +function rerouteArguments(a, b) { + if (typeof a === `undefined`) + return [a, b]; + if (typeof a === `object` && a !== null && !Array.isArray(a)) { + return [undefined, a]; } - } + else { + return [a, b]; + } +} +function cleanValidationError(message, lowerCase = false) { + let cleaned = message.replace(/^\.: /, ``); + if (lowerCase) + cleaned = cleaned[0].toLowerCase() + cleaned.slice(1); + return cleaned; +} +function formatError(message, errors$1) { + if (errors$1.length === 1) { + return new errors.UsageError(`${message}: ${cleanValidationError(errors$1[0], true)}`); + } + else { + return new errors.UsageError(`${message}:\n${errors$1.map(error => `\n- ${cleanValidationError(error)}`).join(``)}`); + } +} +function applyValidator(name, value, validator) { + if (typeof validator === `undefined`) + return value; + const errors = []; + const coercions = []; + const coercion = (v) => { + const orig = value; + value = v; + return coercion.bind(null, orig); + }; + const check = validator(value, { errors, coercions, coercion }); + if (!check) + throw formatError(`Invalid value for ${name}`, errors); + for (const [, op] of coercions) + op(); + return value; +} - abort (error) { - this[ABORTED] = true - this.emit('abort', error) - // always throws, even in non-strict mode - this.warn('TAR_ABORT', error, { recoverable: false }) - } +exports.applyValidator = applyValidator; +exports.cleanValidationError = cleanValidationError; +exports.formatError = formatError; +exports.isOptionSymbol = isOptionSymbol; +exports.makeCommandOption = makeCommandOption; +exports.rerouteArguments = rerouteArguments; - write (chunk) { - if (this[ABORTED]) - return - // first write, might be gzipped - if (this[UNZIP] === null && chunk) { - if (this[BUFFER]) { - chunk = Buffer.concat([this[BUFFER], chunk]) - this[BUFFER] = null - } - if (chunk.length < gzipHeader.length) { - this[BUFFER] = chunk - return true - } - for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) { - if (chunk[i] !== gzipHeader[i]) - this[UNZIP] = false - } - if (this[UNZIP] === null) { - const ended = this[ENDED] - this[ENDED] = false - this[UNZIP] = new zlib.Unzip() - this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk)) - this[UNZIP].on('error', er => this.abort(er)) - this[UNZIP].on('end', _ => { - this[ENDED] = true - this[CONSUMECHUNK]() - }) - this[WRITING] = true - const ret = this[UNZIP][ended ? 'end' : 'write' ](chunk) - this[WRITING] = false - return ret - } - } +/***/ }), - this[WRITING] = true - if (this[UNZIP]) - this[UNZIP].write(chunk) - else - this[CONSUMECHUNK](chunk) - this[WRITING] = false +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/constants.js": +/*!*********************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/constants.js ***! + \*********************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { - // return false if there's a queue, or if the current entry isn't flowing - const ret = - this[QUEUE].length ? false : - this[READENTRY] ? this[READENTRY].flowing : - true +"use strict"; - // if we have no queue, then that means a clogged READENTRY - if (!ret && !this[QUEUE].length) - this[READENTRY].once('drain', _ => this.emit('drain')) - return ret - } +Object.defineProperty(exports, "__esModule", ({ value: true })); - [BUFFERCONCAT] (c) { - if (c && !this[ABORTED]) - this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c - } +const NODE_INITIAL = 0; +const NODE_SUCCESS = 1; +const NODE_ERRORED = 2; +const START_OF_INPUT = `\u0001`; +const END_OF_INPUT = `\u0000`; +const HELP_COMMAND_INDEX = -1; +const HELP_REGEX = /^(-h|--help)(?:=([0-9]+))?$/; +const OPTION_REGEX = /^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/; +const BATCH_REGEX = /^-[a-zA-Z]{2,}$/; +const BINDING_REGEX = /^([^=]+)=([\s\S]*)$/; +const DEBUG = process.env.DEBUG_CLI === `1`; - [MAYBEEND] () { - if (this[ENDED] && - !this[EMITTEDEND] && - !this[ABORTED] && - !this[CONSUMING]) { - this[EMITTEDEND] = true - const entry = this[WRITEENTRY] - if (entry && entry.blockRemain) { - // truncated, likely a damaged file - const have = this[BUFFER] ? this[BUFFER].length : 0 - this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${ - entry.blockRemain} more bytes, only ${have} available)`, {entry}) - if (this[BUFFER]) - entry.write(this[BUFFER]) - entry.end() - } - this[EMIT](DONE) - } - } +exports.BATCH_REGEX = BATCH_REGEX; +exports.BINDING_REGEX = BINDING_REGEX; +exports.DEBUG = DEBUG; +exports.END_OF_INPUT = END_OF_INPUT; +exports.HELP_COMMAND_INDEX = HELP_COMMAND_INDEX; +exports.HELP_REGEX = HELP_REGEX; +exports.NODE_ERRORED = NODE_ERRORED; +exports.NODE_INITIAL = NODE_INITIAL; +exports.NODE_SUCCESS = NODE_SUCCESS; +exports.OPTION_REGEX = OPTION_REGEX; +exports.START_OF_INPUT = START_OF_INPUT; - [CONSUMECHUNK] (chunk) { - if (this[CONSUMING]) - this[BUFFERCONCAT](chunk) - else if (!chunk && !this[BUFFER]) - this[MAYBEEND]() - else { - this[CONSUMING] = true - if (this[BUFFER]) { - this[BUFFERCONCAT](chunk) - const c = this[BUFFER] - this[BUFFER] = null - this[CONSUMECHUNKSUB](c) - } else { - this[CONSUMECHUNKSUB](chunk) - } - while (this[BUFFER] && - this[BUFFER].length >= 512 && - !this[ABORTED] && - !this[SAW_EOF]) { - const c = this[BUFFER] - this[BUFFER] = null - this[CONSUMECHUNKSUB](c) - } - this[CONSUMING] = false - } +/***/ }), - if (!this[BUFFER] || this[ENDED]) - this[MAYBEEND]() - } +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/core.js": +/*!****************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/core.js ***! + \****************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - [CONSUMECHUNKSUB] (chunk) { - // we know that we are in CONSUMING mode, so anything written goes into - // the buffer. Advance the position and put any remainder in the buffer. - let position = 0 - let length = chunk.length - while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) { - switch (this[STATE]) { - case 'begin': - case 'header': - this[CONSUMEHEADER](chunk, position) - position += 512 - break +"use strict"; - case 'ignore': - case 'body': - position += this[CONSUMEBODY](chunk, position) - break - case 'meta': - position += this[CONSUMEMETA](chunk, position) - break +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var constants = __webpack_require__(/*! ./constants.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/constants.js"); +var errors = __webpack_require__(/*! ./errors.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/errors.js"); - /* istanbul ignore next */ - default: - throw new Error('invalid state: ' + this[STATE]) - } +// ------------------------------------------------------------------------ +function debug(str) { + if (constants.DEBUG) { + console.log(str); } - - if (position < length) { - if (this[BUFFER]) - this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]]) - else - this[BUFFER] = chunk.slice(position) +} +const basicHelpState = { + candidateUsage: null, + requiredOptions: [], + errorMessage: null, + ignoreOptions: false, + path: [], + positionals: [], + options: [], + remainder: null, + selectedIndex: constants.HELP_COMMAND_INDEX, +}; +function makeStateMachine() { + return { + nodes: [makeNode(), makeNode(), makeNode()], + }; +} +function makeAnyOfMachine(inputs) { + const output = makeStateMachine(); + const heads = []; + let offset = output.nodes.length; + for (const input of inputs) { + heads.push(offset); + for (let t = 0; t < input.nodes.length; ++t) + if (!isTerminalNode(t)) + output.nodes.push(cloneNode(input.nodes[t], offset)); + offset += input.nodes.length - 2; } - } - - end (chunk) { - if (!this[ABORTED]) { - if (this[UNZIP]) - this[UNZIP].end(chunk) - else { - this[ENDED] = true - this.write(chunk) - } + for (const head of heads) + registerShortcut(output, constants.NODE_INITIAL, head); + return output; +} +function injectNode(machine, node) { + machine.nodes.push(node); + return machine.nodes.length - 1; +} +function simplifyMachine(input) { + const visited = new Set(); + const process = (node) => { + if (visited.has(node)) + return; + visited.add(node); + const nodeDef = input.nodes[node]; + for (const transitions of Object.values(nodeDef.statics)) + for (const { to } of transitions) + process(to); + for (const [, { to }] of nodeDef.dynamics) + process(to); + for (const { to } of nodeDef.shortcuts) + process(to); + const shortcuts = new Set(nodeDef.shortcuts.map(({ to }) => to)); + while (nodeDef.shortcuts.length > 0) { + const { to } = nodeDef.shortcuts.shift(); + const toDef = input.nodes[to]; + for (const [segment, transitions] of Object.entries(toDef.statics)) { + const store = !Object.prototype.hasOwnProperty.call(nodeDef.statics, segment) + ? nodeDef.statics[segment] = [] + : nodeDef.statics[segment]; + for (const transition of transitions) { + if (!store.some(({ to }) => transition.to === to)) { + store.push(transition); + } + } + } + for (const [test, transition] of toDef.dynamics) + if (!nodeDef.dynamics.some(([otherTest, { to }]) => test === otherTest && transition.to === to)) + nodeDef.dynamics.push([test, transition]); + for (const transition of toDef.shortcuts) { + if (!shortcuts.has(transition.to)) { + nodeDef.shortcuts.push(transition); + shortcuts.add(transition.to); + } + } + } + }; + process(constants.NODE_INITIAL); +} +function debugMachine(machine, { prefix = `` } = {}) { + // Don't iterate unless it's needed + if (constants.DEBUG) { + debug(`${prefix}Nodes are:`); + for (let t = 0; t < machine.nodes.length; ++t) { + debug(`${prefix} ${t}: ${JSON.stringify(machine.nodes[t])}`); + } + } +} +function runMachineInternal(machine, input, partial = false) { + debug(`Running a vm on ${JSON.stringify(input)}`); + let branches = [{ node: constants.NODE_INITIAL, state: { + candidateUsage: null, + requiredOptions: [], + errorMessage: null, + ignoreOptions: false, + options: [], + path: [], + positionals: [], + remainder: null, + selectedIndex: null, + } }]; + debugMachine(machine, { prefix: ` ` }); + const tokens = [constants.START_OF_INPUT, ...input]; + for (let t = 0; t < tokens.length; ++t) { + const segment = tokens[t]; + debug(` Processing ${JSON.stringify(segment)}`); + const nextBranches = []; + for (const { node, state } of branches) { + debug(` Current node is ${node}`); + const nodeDef = machine.nodes[node]; + if (node === constants.NODE_ERRORED) { + nextBranches.push({ node, state }); + continue; + } + console.assert(nodeDef.shortcuts.length === 0, `Shortcuts should have been eliminated by now`); + const hasExactMatch = Object.prototype.hasOwnProperty.call(nodeDef.statics, segment); + if (!partial || t < tokens.length - 1 || hasExactMatch) { + if (hasExactMatch) { + const transitions = nodeDef.statics[segment]; + for (const { to, reducer } of transitions) { + nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment) : state }); + debug(` Static transition to ${to} found`); + } + } + else { + debug(` No static transition found`); + } + } + else { + let hasMatches = false; + for (const candidate of Object.keys(nodeDef.statics)) { + if (!candidate.startsWith(segment)) + continue; + if (segment === candidate) { + for (const { to, reducer } of nodeDef.statics[candidate]) { + nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment) : state }); + debug(` Static transition to ${to} found`); + } + } + else { + for (const { to } of nodeDef.statics[candidate]) { + nextBranches.push({ node: to, state: { ...state, remainder: candidate.slice(segment.length) } }); + debug(` Static transition to ${to} found (partial match)`); + } + } + hasMatches = true; + } + if (!hasMatches) { + debug(` No partial static transition found`); + } + } + if (segment !== constants.END_OF_INPUT) { + for (const [test, { to, reducer }] of nodeDef.dynamics) { + if (execute(tests, test, state, segment)) { + nextBranches.push({ node: to, state: typeof reducer !== `undefined` ? execute(reducers, reducer, state, segment) : state }); + debug(` Dynamic transition to ${to} found (via ${test})`); + } + } + } + } + if (nextBranches.length === 0 && segment === constants.END_OF_INPUT && input.length === 1) { + return [{ + node: constants.NODE_INITIAL, + state: basicHelpState, + }]; + } + if (nextBranches.length === 0) { + throw new errors.UnknownSyntaxError(input, branches.filter(({ node }) => { + return node !== constants.NODE_ERRORED; + }).map(({ state }) => { + return { usage: state.candidateUsage, reason: null }; + })); + } + if (nextBranches.every(({ node }) => node === constants.NODE_ERRORED)) { + throw new errors.UnknownSyntaxError(input, nextBranches.map(({ state }) => { + return { usage: state.candidateUsage, reason: state.errorMessage }; + })); + } + branches = trimSmallerBranches(nextBranches); + } + if (branches.length > 0) { + debug(` Results:`); + for (const branch of branches) { + debug(` - ${branch.node} -> ${JSON.stringify(branch.state)}`); + } + } + else { + debug(` No results`); + } + return branches; +} +function checkIfNodeIsFinished(node, state) { + if (state.selectedIndex !== null) + return true; + if (Object.prototype.hasOwnProperty.call(node.statics, constants.END_OF_INPUT)) + for (const { to } of node.statics[constants.END_OF_INPUT]) + if (to === constants.NODE_SUCCESS) + return true; + return false; +} +function suggestMachine(machine, input, partial) { + // If we're accepting partial matches, then exact matches need to be + // prefixed with an extra space. + const prefix = partial && input.length > 0 ? [``] : []; + const branches = runMachineInternal(machine, input, partial); + const suggestions = []; + const suggestionsJson = new Set(); + const traverseSuggestion = (suggestion, node, skipFirst = true) => { + let nextNodes = [node]; + while (nextNodes.length > 0) { + const currentNodes = nextNodes; + nextNodes = []; + for (const node of currentNodes) { + const nodeDef = machine.nodes[node]; + const keys = Object.keys(nodeDef.statics); + // The fact that `key` is unused is likely a bug, but no one has investigated it yet. + // TODO: Investigate it. + // eslint-disable-next-line @typescript-eslint/no-unused-vars + for (const key of Object.keys(nodeDef.statics)) { + const segment = keys[0]; + for (const { to, reducer } of nodeDef.statics[segment]) { + if (reducer !== `pushPath`) + continue; + if (!skipFirst) + suggestion.push(segment); + nextNodes.push(to); + } + } + } + skipFirst = false; + } + const json = JSON.stringify(suggestion); + if (suggestionsJson.has(json)) + return; + suggestions.push(suggestion); + suggestionsJson.add(json); + }; + for (const { node, state } of branches) { + if (state.remainder !== null) { + traverseSuggestion([state.remainder], node); + continue; + } + const nodeDef = machine.nodes[node]; + const isFinished = checkIfNodeIsFinished(nodeDef, state); + for (const [candidate, transitions] of Object.entries(nodeDef.statics)) + if ((isFinished && candidate !== constants.END_OF_INPUT) || (!candidate.startsWith(`-`) && transitions.some(({ reducer }) => reducer === `pushPath`))) + traverseSuggestion([...prefix, candidate], node); + if (!isFinished) + continue; + for (const [test, { to }] of nodeDef.dynamics) { + if (to === constants.NODE_ERRORED) + continue; + const tokens = suggest(test, state); + if (tokens === null) + continue; + for (const token of tokens) { + traverseSuggestion([...prefix, token], node); + } + } } - } -}) - - -/***/ }), - -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/path-reservations.js": -/*!*******************************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/path-reservations.js ***! - \*******************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// A path exclusive reservation system -// reserve([list, of, paths], fn) -// When the fn is first in line for all its paths, it -// is called with a cb that clears the reservation. -// -// Used by async unpack to avoid clobbering paths in use, -// while still allowing maximal safe parallelization. - -const assert = __webpack_require__(/*! assert */ "assert") - -module.exports = () => { - // path => [function or Set] - // A Set object means a directory reservation - // A fn is a direct reservation on that path - const queues = new Map() - - // fn => {paths:[path,...], dirs:[path, ...]} - const reservations = new Map() - - // return a set of parent dirs for a given path - const { join } = __webpack_require__(/*! path */ "path") - const getDirs = path => - join(path).split(/[\\\/]/).slice(0, -1).reduce((set, path) => - set.length ? set.concat(join(set[set.length-1], path)) : [path], []) - - // functions currently running - const running = new Set() - - // return the queues for each path the function cares about - // fn => {paths, dirs} - const getQueues = fn => { - const res = reservations.get(fn) - /* istanbul ignore if - unpossible */ - if (!res) - throw new Error('function does not have any path reservations') - return { - paths: res.paths.map(path => queues.get(path)), - dirs: [...res.dirs].map(path => queues.get(path)), + return [...suggestions].sort(); +} +function runMachine(machine, input) { + const branches = runMachineInternal(machine, [...input, constants.END_OF_INPUT]); + return selectBestState(input, branches.map(({ state }) => { + return state; + })); +} +function trimSmallerBranches(branches) { + let maxPathSize = 0; + for (const { state } of branches) + if (state.path.length > maxPathSize) + maxPathSize = state.path.length; + return branches.filter(({ state }) => { + return state.path.length === maxPathSize; + }); +} +function selectBestState(input, states) { + const terminalStates = states.filter(state => { + return state.selectedIndex !== null; + }); + if (terminalStates.length === 0) + throw new Error(); + const requiredOptionsSetStates = terminalStates.filter(state => state.requiredOptions.every(names => names.some(name => state.options.find(opt => opt.name === name)))); + if (requiredOptionsSetStates.length === 0) { + throw new errors.UnknownSyntaxError(input, terminalStates.map(state => ({ + usage: state.candidateUsage, + reason: null, + }))); } - } - - // check if fn is first in line for all its paths, and is - // included in the first set for all its dir queues - const check = fn => { - const {paths, dirs} = getQueues(fn) - return paths.every(q => q[0] === fn) && - dirs.every(q => q[0] instanceof Set && q[0].has(fn)) - } - - // run the function if it's first in line and not already running - const run = fn => { - if (running.has(fn) || !check(fn)) - return false - running.add(fn) - fn(() => clear(fn)) - return true - } - - const clear = fn => { - if (!running.has(fn)) - return false - - const { paths, dirs } = reservations.get(fn) - const next = new Set() - - paths.forEach(path => { - const q = queues.get(path) - assert.equal(q[0], fn) - if (q.length === 1) - queues.delete(path) - else { - q.shift() - if (typeof q[0] === 'function') - next.add(q[0]) - else - q[0].forEach(fn => next.add(fn)) - } - }) - - dirs.forEach(dir => { - const q = queues.get(dir) - assert(q[0] instanceof Set) - if (q[0].size === 1 && q.length === 1) { - queues.delete(dir) - } else if (q[0].size === 1) { - q.shift() - - // must be a function or else the Set would've been reused - next.add(q[0]) - } else - q[0].delete(fn) - }) - running.delete(fn) - - next.forEach(fn => run(fn)) - return true - } - - const reserve = (paths, fn) => { - const dirs = new Set( - paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b)) - ) - reservations.set(fn, {dirs, paths}) - paths.forEach(path => { - const q = queues.get(path) - if (!q) - queues.set(path, [fn]) - else - q.push(fn) - }) - dirs.forEach(dir => { - const q = queues.get(dir) - if (!q) - queues.set(dir, [new Set([fn])]) - else if (q[q.length-1] instanceof Set) - q[q.length-1].add(fn) - else - q.push(new Set([fn])) - }) - - return run(fn) - } - - return { check, reserve } + let maxPathSize = 0; + for (const state of requiredOptionsSetStates) + if (state.path.length > maxPathSize) + maxPathSize = state.path.length; + const bestPathBranches = requiredOptionsSetStates.filter(state => { + return state.path.length === maxPathSize; + }); + const getPositionalCount = (state) => state.positionals.filter(({ extra }) => { + return !extra; + }).length + state.options.length; + const statesWithPositionalCount = bestPathBranches.map(state => { + return { state, positionalCount: getPositionalCount(state) }; + }); + let maxPositionalCount = 0; + for (const { positionalCount } of statesWithPositionalCount) + if (positionalCount > maxPositionalCount) + maxPositionalCount = positionalCount; + const bestPositionalStates = statesWithPositionalCount.filter(({ positionalCount }) => { + return positionalCount === maxPositionalCount; + }).map(({ state }) => { + return state; + }); + const fixedStates = aggregateHelpStates(bestPositionalStates); + if (fixedStates.length > 1) + throw new errors.AmbiguousSyntaxError(input, fixedStates.map(state => state.candidateUsage)); + return fixedStates[0]; } - - -/***/ }), - -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/pax.js": -/*!*****************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/pax.js ***! - \*****************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -const Header = __webpack_require__(/*! ./header.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/header.js") -const path = __webpack_require__(/*! path */ "path") - -class Pax { - constructor (obj, global) { - this.atime = obj.atime || null - this.charset = obj.charset || null - this.comment = obj.comment || null - this.ctime = obj.ctime || null - this.gid = obj.gid || null - this.gname = obj.gname || null - this.linkpath = obj.linkpath || null - this.mtime = obj.mtime || null - this.path = obj.path || null - this.size = obj.size || null - this.uid = obj.uid || null - this.uname = obj.uname || null - this.dev = obj.dev || null - this.ino = obj.ino || null - this.nlink = obj.nlink || null - this.global = global || false - } - - encode () { - const body = this.encodeBody() - if (body === '') - return null - - const bodyLen = Buffer.byteLength(body) - // round up to 512 bytes - // add 512 for header - const bufLen = 512 * Math.ceil(1 + bodyLen / 512) - const buf = Buffer.allocUnsafe(bufLen) - - // 0-fill the header section, it might not hit every field - for (let i = 0; i < 512; i++) { - buf[i] = 0 +function aggregateHelpStates(states) { + const notHelps = []; + const helps = []; + for (const state of states) { + if (state.selectedIndex === constants.HELP_COMMAND_INDEX) { + helps.push(state); + } + else { + notHelps.push(state); + } } - - new Header({ - // XXX split the path - // then the path should be PaxHeader + basename, but less than 99, - // prepend with the dirname - path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99), - mode: this.mode || 0o644, - uid: this.uid || null, - gid: this.gid || null, - size: bodyLen, - mtime: this.mtime || null, - type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader', - linkpath: '', - uname: this.uname || '', - gname: this.gname || '', - devmaj: 0, - devmin: 0, - atime: this.atime || null, - ctime: this.ctime || null - }).encode(buf) - - buf.write(body, 512, bodyLen, 'utf8') - - // null pad after the body - for (let i = bodyLen + 512; i < buf.length; i++) { - buf[i] = 0 + if (helps.length > 0) { + notHelps.push({ + ...basicHelpState, + path: findCommonPrefix(...helps.map(state => state.path)), + options: helps.reduce((options, state) => options.concat(state.options), []), + }); } - - return buf - } - - encodeBody () { - return ( - this.encodeField('path') + - this.encodeField('ctime') + - this.encodeField('atime') + - this.encodeField('dev') + - this.encodeField('ino') + - this.encodeField('nlink') + - this.encodeField('charset') + - this.encodeField('comment') + - this.encodeField('gid') + - this.encodeField('gname') + - this.encodeField('linkpath') + - this.encodeField('mtime') + - this.encodeField('size') + - this.encodeField('uid') + - this.encodeField('uname') - ) - } - - encodeField (field) { - if (this[field] === null || this[field] === undefined) - return '' - const v = this[field] instanceof Date ? this[field].getTime() / 1000 - : this[field] - const s = ' ' + - (field === 'dev' || field === 'ino' || field === 'nlink' - ? 'SCHILY.' : '') + - field + '=' + v + '\n' - const byteLen = Buffer.byteLength(s) - // the digits includes the length of the digits in ascii base-10 - // so if it's 9 characters, then adding 1 for the 9 makes it 10 - // which makes it 11 chars. - let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1 - if (byteLen + digits >= Math.pow(10, digits)) - digits += 1 - const len = digits + byteLen - return len + s - } + return notHelps; } - -Pax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g) - -const merge = (a, b) => - b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a - -const parseKV = string => - string - .replace(/\n$/, '') - .split('\n') - .reduce(parseKVLine, Object.create(null)) - -const parseKVLine = (set, line) => { - const n = parseInt(line, 10) - - // XXX Values with \n in them will fail this. - // Refactor to not be a naive line-by-line parse. - if (n !== Buffer.byteLength(line) + 1) - return set - - line = line.substr((n + ' ').length) - const kv = line.split('=') - const k = kv.shift().replace(/^SCHILY\.(dev|ino|nlink)/, '$1') - if (!k) - return set - - const v = kv.join('=') - set[k] = /^([A-Z]+\.)?([mac]|birth|creation)time$/.test(k) - ? new Date(v * 1000) - : /^[0-9]+$/.test(v) ? +v - : v - return set +function findCommonPrefix(firstPath, secondPath, ...rest) { + if (secondPath === undefined) + return Array.from(firstPath); + return findCommonPrefix(firstPath.filter((segment, i) => segment === secondPath[i]), ...rest); } - -module.exports = Pax - - -/***/ }), - -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/read-entry.js": -/*!************************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/read-entry.js ***! - \************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -const types = __webpack_require__(/*! ./types.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/types.js") -const MiniPass = __webpack_require__(/*! minipass */ "./.yarn/cache/minipass-npm-3.1.1-b51d7e264d-cfcfd86adc.zip/node_modules/minipass/index.js") - -const SLURP = Symbol('slurp') -module.exports = class ReadEntry extends MiniPass { - constructor (header, ex, gex) { - super() - // read entries always start life paused. this is to avoid the - // situation where Minipass's auto-ending empty streams results - // in an entry ending before we're ready for it. - this.pause() - this.extended = ex - this.globalExtended = gex - this.header = header - this.startBlockSize = 512 * Math.ceil(header.size / 512) - this.blockRemain = this.startBlockSize - this.remain = header.size - this.type = header.type - this.meta = false - this.ignore = false - switch (this.type) { - case 'File': - case 'OldFile': - case 'Link': - case 'SymbolicLink': - case 'CharacterDevice': - case 'BlockDevice': - case 'Directory': - case 'FIFO': - case 'ContiguousFile': - case 'GNUDumpDir': - break - - case 'NextFileHasLongLinkpath': - case 'NextFileHasLongPath': - case 'OldGnuLongPath': - case 'GlobalExtendedHeader': - case 'ExtendedHeader': - case 'OldExtendedHeader': - this.meta = true - break - - // NOTE: gnutar and bsdtar treat unrecognized types as 'File' - // it may be worth doing the same, but with a warning. - default: - this.ignore = true - } - - this.path = header.path - this.mode = header.mode - if (this.mode) - this.mode = this.mode & 0o7777 - this.uid = header.uid - this.gid = header.gid - this.uname = header.uname - this.gname = header.gname - this.size = header.size - this.mtime = header.mtime - this.atime = header.atime - this.ctime = header.ctime - this.linkpath = header.linkpath - this.uname = header.uname - this.gname = header.gname - - if (ex) this[SLURP](ex) - if (gex) this[SLURP](gex, true) - } - - write (data) { - const writeLen = data.length - if (writeLen > this.blockRemain) - throw new Error('writing more to entry than is appropriate') - - const r = this.remain - const br = this.blockRemain - this.remain = Math.max(0, r - writeLen) - this.blockRemain = Math.max(0, br - writeLen) - if (this.ignore) - return true - - if (r >= writeLen) - return super.write(data) - - // r < writeLen - return super.write(data.slice(0, r)) - } - - [SLURP] (ex, global) { - for (let k in ex) { - // we slurp in everything except for the path attribute in - // a global extended header, because that's weird. - if (ex[k] !== null && ex[k] !== undefined && - !(global && k === 'path')) - this[k] = ex[k] +function makeNode() { + return { + dynamics: [], + shortcuts: [], + statics: {}, + }; +} +function isTerminalNode(node) { + return node === constants.NODE_SUCCESS || node === constants.NODE_ERRORED; +} +function cloneTransition(input, offset = 0) { + return { + to: !isTerminalNode(input.to) ? input.to > 2 ? input.to + offset - 2 : input.to + offset : input.to, + reducer: input.reducer, + }; +} +function cloneNode(input, offset = 0) { + const output = makeNode(); + for (const [test, transition] of input.dynamics) + output.dynamics.push([test, cloneTransition(transition, offset)]); + for (const transition of input.shortcuts) + output.shortcuts.push(cloneTransition(transition, offset)); + for (const [segment, transitions] of Object.entries(input.statics)) + output.statics[segment] = transitions.map(transition => cloneTransition(transition, offset)); + return output; +} +function registerDynamic(machine, from, test, to, reducer) { + machine.nodes[from].dynamics.push([ + test, + { to, reducer: reducer }, + ]); +} +function registerShortcut(machine, from, to, reducer) { + machine.nodes[from].shortcuts.push({ to, reducer: reducer }); +} +function registerStatic(machine, from, test, to, reducer) { + const store = !Object.prototype.hasOwnProperty.call(machine.nodes[from].statics, test) + ? machine.nodes[from].statics[test] = [] + : machine.nodes[from].statics[test]; + store.push({ to, reducer: reducer }); +} +function execute(store, callback, state, segment) { + // TypeScript's control flow can't properly narrow + // generic conditionals for some mysterious reason + if (Array.isArray(callback)) { + const [name, ...args] = callback; + return store[name](state, segment, ...args); + } + else { + return store[callback](state, segment); } - } } - - -/***/ }), - -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/replace.js": -/*!*********************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/replace.js ***! - \*********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -// tar -r -const hlo = __webpack_require__(/*! ./high-level-opt.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/high-level-opt.js") -const Pack = __webpack_require__(/*! ./pack.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/pack.js") -const Parse = __webpack_require__(/*! ./parse.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/parse.js") -const fs = __webpack_require__(/*! fs */ "fs") -const fsm = __webpack_require__(/*! fs-minipass */ "./.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip/node_modules/fs-minipass/index.js") -const t = __webpack_require__(/*! ./list.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/list.js") -const path = __webpack_require__(/*! path */ "path") - -// starting at the head of the file, read a Header -// If the checksum is invalid, that's our position to start writing -// If it is, jump forward by the specified size (round up to 512) -// and try again. -// Write the new Pack stream starting there. - -const Header = __webpack_require__(/*! ./header.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/header.js") - -const r = module.exports = (opt_, files, cb) => { - const opt = hlo(opt_) - - if (!opt.file) - throw new TypeError('file is required') - - if (opt.gzip) - throw new TypeError('cannot append to compressed archives') - - if (!files || !Array.isArray(files) || !files.length) - throw new TypeError('no files or directories specified') - - files = Array.from(files) - - return opt.sync ? replaceSync(opt, files) - : replace(opt, files, cb) +function suggest(callback, state) { + const fn = Array.isArray(callback) + ? tests[callback[0]] + : tests[callback]; + // @ts-ignore + if (typeof fn.suggest === `undefined`) + return null; + const args = Array.isArray(callback) + ? callback.slice(1) + : []; + // @ts-ignore + return fn.suggest(state, ...args); } - -const replaceSync = (opt, files) => { - const p = new Pack.Sync(opt) - - let threw = true - let fd - let position - - try { - try { - fd = fs.openSync(opt.file, 'r+') - } catch (er) { - if (er.code === 'ENOENT') - fd = fs.openSync(opt.file, 'w+') - else - throw er +const tests = { + always: () => { + return true; + }, + isOptionLike: (state, segment) => { + return !state.ignoreOptions && (segment !== `-` && segment.startsWith(`-`)); + }, + isNotOptionLike: (state, segment) => { + return state.ignoreOptions || segment === `-` || !segment.startsWith(`-`); + }, + isOption: (state, segment, name, hidden) => { + return !state.ignoreOptions && segment === name; + }, + isBatchOption: (state, segment, names) => { + return !state.ignoreOptions && constants.BATCH_REGEX.test(segment) && [...segment.slice(1)].every(name => names.includes(`-${name}`)); + }, + isBoundOption: (state, segment, names, options) => { + const optionParsing = segment.match(constants.BINDING_REGEX); + return !state.ignoreOptions && !!optionParsing && constants.OPTION_REGEX.test(optionParsing[1]) && names.includes(optionParsing[1]) + // Disallow bound options with no arguments (i.e. booleans) + && options.filter(opt => opt.names.includes(optionParsing[1])).every(opt => opt.allowBinding); + }, + isNegatedOption: (state, segment, name) => { + return !state.ignoreOptions && segment === `--no-${name.slice(2)}`; + }, + isHelp: (state, segment) => { + return !state.ignoreOptions && constants.HELP_REGEX.test(segment); + }, + isUnsupportedOption: (state, segment, names) => { + return !state.ignoreOptions && segment.startsWith(`-`) && constants.OPTION_REGEX.test(segment) && !names.includes(segment); + }, + isInvalidOption: (state, segment) => { + return !state.ignoreOptions && segment.startsWith(`-`) && !constants.OPTION_REGEX.test(segment); + }, +}; +// @ts-ignore +tests.isOption.suggest = (state, name, hidden = true) => { + return !hidden ? [name] : null; +}; +const reducers = { + setCandidateState: (state, segment, candidateState) => { + return { ...state, ...candidateState }; + }, + setSelectedIndex: (state, segment, index) => { + return { ...state, selectedIndex: index }; + }, + pushBatch: (state, segment) => { + return { ...state, options: state.options.concat([...segment.slice(1)].map(name => ({ name: `-${name}`, value: true }))) }; + }, + pushBound: (state, segment) => { + const [, name, value] = segment.match(constants.BINDING_REGEX); + return { ...state, options: state.options.concat({ name, value }) }; + }, + pushPath: (state, segment) => { + return { ...state, path: state.path.concat(segment) }; + }, + pushPositional: (state, segment) => { + return { ...state, positionals: state.positionals.concat({ value: segment, extra: false }) }; + }, + pushExtra: (state, segment) => { + return { ...state, positionals: state.positionals.concat({ value: segment, extra: true }) }; + }, + pushExtraNoLimits: (state, segment) => { + return { ...state, positionals: state.positionals.concat({ value: segment, extra: NoLimits }) }; + }, + pushTrue: (state, segment, name = segment) => { + return { ...state, options: state.options.concat({ name: segment, value: true }) }; + }, + pushFalse: (state, segment, name = segment) => { + return { ...state, options: state.options.concat({ name, value: false }) }; + }, + pushUndefined: (state, segment) => { + return { ...state, options: state.options.concat({ name: segment, value: undefined }) }; + }, + pushStringValue: (state, segment) => { + var _a; + const copy = { ...state, options: [...state.options] }; + const lastOption = state.options[state.options.length - 1]; + lastOption.value = ((_a = lastOption.value) !== null && _a !== void 0 ? _a : []).concat([segment]); + return copy; + }, + setStringValue: (state, segment) => { + const copy = { ...state, options: [...state.options] }; + const lastOption = state.options[state.options.length - 1]; + lastOption.value = segment; + return copy; + }, + inhibateOptions: (state) => { + return { ...state, ignoreOptions: true }; + }, + useHelp: (state, segment, command) => { + const [, /* name */ , index] = segment.match(constants.HELP_REGEX); + if (typeof index !== `undefined`) { + return { ...state, options: [{ name: `-c`, value: String(command) }, { name: `-i`, value: index }] }; + } + else { + return { ...state, options: [{ name: `-c`, value: String(command) }] }; + } + }, + setError: (state, segment, errorMessage) => { + if (segment === constants.END_OF_INPUT) { + return { ...state, errorMessage: `${errorMessage}.` }; + } + else { + return { ...state, errorMessage: `${errorMessage} ("${segment}").` }; + } + }, + setOptionArityError: (state, segment) => { + const lastOption = state.options[state.options.length - 1]; + return { ...state, errorMessage: `Not enough arguments to option ${lastOption.name}.` }; + }, +}; +// ------------------------------------------------------------------------ +const NoLimits = Symbol(); +class CommandBuilder { + constructor(cliIndex, cliOpts) { + this.allOptionNames = []; + this.arity = { leading: [], trailing: [], extra: [], proxy: false }; + this.options = []; + this.paths = []; + this.cliIndex = cliIndex; + this.cliOpts = cliOpts; } - - const st = fs.fstatSync(fd) - const headBuf = Buffer.alloc(512) - - POSITION: for (position = 0; position < st.size; position += 512) { - for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) { - bytes = fs.readSync( - fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos - ) - - if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) - throw new Error('cannot append to compressed archives') - - if (!bytes) - break POSITION - } - - let h = new Header(headBuf) - if (!h.cksumValid) - break - let entryBlockSize = 512 * Math.ceil(h.size / 512) - if (position + entryBlockSize + 512 > st.size) - break - // the 512 for the header we just parsed will be added as well - // also jump ahead all the blocks for the body - position += entryBlockSize - if (opt.mtimeCache) - opt.mtimeCache.set(h.path, h.mtime) + addPath(path) { + this.paths.push(path); + } + setArity({ leading = this.arity.leading, trailing = this.arity.trailing, extra = this.arity.extra, proxy = this.arity.proxy }) { + Object.assign(this.arity, { leading, trailing, extra, proxy }); + } + addPositional({ name = `arg`, required = true } = {}) { + if (!required && this.arity.extra === NoLimits) + throw new Error(`Optional parameters cannot be declared when using .rest() or .proxy()`); + if (!required && this.arity.trailing.length > 0) + throw new Error(`Optional parameters cannot be declared after the required trailing positional arguments`); + if (!required && this.arity.extra !== NoLimits) { + this.arity.extra.push(name); + } + else if (this.arity.extra !== NoLimits && this.arity.extra.length === 0) { + this.arity.leading.push(name); + } + else { + this.arity.trailing.push(name); + } + } + addRest({ name = `arg`, required = 0 } = {}) { + if (this.arity.extra === NoLimits) + throw new Error(`Infinite lists cannot be declared multiple times in the same command`); + if (this.arity.trailing.length > 0) + throw new Error(`Infinite lists cannot be declared after the required trailing positional arguments`); + for (let t = 0; t < required; ++t) + this.addPositional({ name }); + this.arity.extra = NoLimits; + } + addProxy({ required = 0 } = {}) { + this.addRest({ required }); + this.arity.proxy = true; + } + addOption({ names, description, arity = 0, hidden = false, required = false, allowBinding = true }) { + if (!allowBinding && arity > 1) + throw new Error(`The arity cannot be higher than 1 when the option only supports the --arg=value syntax`); + if (!Number.isInteger(arity)) + throw new Error(`The arity must be an integer, got ${arity}`); + if (arity < 0) + throw new Error(`The arity must be positive, got ${arity}`); + this.allOptionNames.push(...names); + this.options.push({ names, description, arity, hidden, required, allowBinding }); } - threw = false - - streamSync(opt, p, position, fd, files) - } finally { - if (threw) - try { fs.closeSync(fd) } catch (er) {} - } -} - -const streamSync = (opt, p, position, fd, files) => { - const stream = new fsm.WriteStreamSync(opt.file, { - fd: fd, - start: position - }) - p.pipe(stream) - addFilesSync(p, files) -} - -const replace = (opt, files, cb) => { - files = Array.from(files) - const p = new Pack(opt) - - const getPos = (fd, size, cb_) => { - const cb = (er, pos) => { - if (er) - fs.close(fd, _ => cb_(er)) - else - cb_(null, pos) + setContext(context) { + this.context = context; } - - let position = 0 - if (size === 0) - return cb(null, 0) - - let bufPos = 0 - const headBuf = Buffer.alloc(512) - const onread = (er, bytes) => { - if (er) - return cb(er) - bufPos += bytes - if (bufPos < 512 && bytes) - return fs.read( - fd, headBuf, bufPos, headBuf.length - bufPos, - position + bufPos, onread - ) - - if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) - return cb(new Error('cannot append to compressed archives')) - - // truncated header - if (bufPos < 512) - return cb(null, position) - - const h = new Header(headBuf) - if (!h.cksumValid) - return cb(null, position) - - const entryBlockSize = 512 * Math.ceil(h.size / 512) - if (position + entryBlockSize + 512 > size) - return cb(null, position) - - position += entryBlockSize + 512 - if (position >= size) - return cb(null, position) - - if (opt.mtimeCache) - opt.mtimeCache.set(h.path, h.mtime) - bufPos = 0 - fs.read(fd, headBuf, 0, 512, position, onread) + usage({ detailed = true, inlineOptions = true } = {}) { + const segments = [this.cliOpts.binaryName]; + const detailedOptionList = []; + if (this.paths.length > 0) + segments.push(...this.paths[0]); + if (detailed) { + for (const { names, arity, hidden, description, required } of this.options) { + if (hidden) + continue; + const args = []; + for (let t = 0; t < arity; ++t) + args.push(` #${t}`); + const definition = `${names.join(`,`)}${args.join(``)}`; + if (!inlineOptions && description) { + detailedOptionList.push({ definition, description, required }); + } + else { + segments.push(required ? `<${definition}>` : `[${definition}]`); + } + } + segments.push(...this.arity.leading.map(name => `<${name}>`)); + if (this.arity.extra === NoLimits) + segments.push(`...`); + else + segments.push(...this.arity.extra.map(name => `[${name}]`)); + segments.push(...this.arity.trailing.map(name => `<${name}>`)); + } + const usage = segments.join(` `); + return { usage, options: detailedOptionList }; } - fs.read(fd, headBuf, 0, 512, position, onread) - } - - const promise = new Promise((resolve, reject) => { - p.on('error', reject) - let flag = 'r+' - const onopen = (er, fd) => { - if (er && er.code === 'ENOENT' && flag === 'r+') { - flag = 'w+' - return fs.open(opt.file, flag, onopen) - } - - if (er) - return reject(er) - - fs.fstat(fd, (er, st) => { - if (er) - return reject(er) - getPos(fd, st.size, (er, position) => { - if (er) - return reject(er) - const stream = new fsm.WriteStream(opt.file, { - fd: fd, - start: position - }) - p.pipe(stream) - stream.on('error', reject) - stream.on('close', resolve) - addFilesAsync(p, files) - }) - }) + compile() { + if (typeof this.context === `undefined`) + throw new Error(`Assertion failed: No context attached`); + const machine = makeStateMachine(); + let firstNode = constants.NODE_INITIAL; + const candidateUsage = this.usage().usage; + const requiredOptions = this.options + .filter(opt => opt.required) + .map(opt => opt.names); + firstNode = injectNode(machine, makeNode()); + registerStatic(machine, constants.NODE_INITIAL, constants.START_OF_INPUT, firstNode, [`setCandidateState`, { candidateUsage, requiredOptions }]); + const positionalArgument = this.arity.proxy + ? `always` + : `isNotOptionLike`; + const paths = this.paths.length > 0 + ? this.paths + : [[]]; + for (const path of paths) { + let lastPathNode = firstNode; + // We allow options to be specified before the path. Note that we + // only do this when there is a path, otherwise there would be + // some redundancy with the options attached later. + if (path.length > 0) { + const optionPathNode = injectNode(machine, makeNode()); + registerShortcut(machine, lastPathNode, optionPathNode); + this.registerOptions(machine, optionPathNode); + lastPathNode = optionPathNode; + } + for (let t = 0; t < path.length; ++t) { + const nextPathNode = injectNode(machine, makeNode()); + registerStatic(machine, lastPathNode, path[t], nextPathNode, `pushPath`); + lastPathNode = nextPathNode; + } + if (this.arity.leading.length > 0 || !this.arity.proxy) { + const helpNode = injectNode(machine, makeNode()); + registerDynamic(machine, lastPathNode, `isHelp`, helpNode, [`useHelp`, this.cliIndex]); + registerStatic(machine, helpNode, constants.END_OF_INPUT, constants.NODE_SUCCESS, [`setSelectedIndex`, constants.HELP_COMMAND_INDEX]); + this.registerOptions(machine, lastPathNode); + } + if (this.arity.leading.length > 0) + registerStatic(machine, lastPathNode, constants.END_OF_INPUT, constants.NODE_ERRORED, [`setError`, `Not enough positional arguments`]); + let lastLeadingNode = lastPathNode; + for (let t = 0; t < this.arity.leading.length; ++t) { + const nextLeadingNode = injectNode(machine, makeNode()); + if (!this.arity.proxy) + this.registerOptions(machine, nextLeadingNode); + if (this.arity.trailing.length > 0 || t + 1 !== this.arity.leading.length) + registerStatic(machine, nextLeadingNode, constants.END_OF_INPUT, constants.NODE_ERRORED, [`setError`, `Not enough positional arguments`]); + registerDynamic(machine, lastLeadingNode, `isNotOptionLike`, nextLeadingNode, `pushPositional`); + lastLeadingNode = nextLeadingNode; + } + let lastExtraNode = lastLeadingNode; + if (this.arity.extra === NoLimits || this.arity.extra.length > 0) { + const extraShortcutNode = injectNode(machine, makeNode()); + registerShortcut(machine, lastLeadingNode, extraShortcutNode); + if (this.arity.extra === NoLimits) { + const extraNode = injectNode(machine, makeNode()); + if (!this.arity.proxy) + this.registerOptions(machine, extraNode); + registerDynamic(machine, lastLeadingNode, positionalArgument, extraNode, `pushExtraNoLimits`); + registerDynamic(machine, extraNode, positionalArgument, extraNode, `pushExtraNoLimits`); + registerShortcut(machine, extraNode, extraShortcutNode); + } + else { + for (let t = 0; t < this.arity.extra.length; ++t) { + const nextExtraNode = injectNode(machine, makeNode()); + if (!this.arity.proxy) + this.registerOptions(machine, nextExtraNode); + registerDynamic(machine, lastExtraNode, positionalArgument, nextExtraNode, `pushExtra`); + registerShortcut(machine, nextExtraNode, extraShortcutNode); + lastExtraNode = nextExtraNode; + } + } + lastExtraNode = extraShortcutNode; + } + if (this.arity.trailing.length > 0) + registerStatic(machine, lastExtraNode, constants.END_OF_INPUT, constants.NODE_ERRORED, [`setError`, `Not enough positional arguments`]); + let lastTrailingNode = lastExtraNode; + for (let t = 0; t < this.arity.trailing.length; ++t) { + const nextTrailingNode = injectNode(machine, makeNode()); + if (!this.arity.proxy) + this.registerOptions(machine, nextTrailingNode); + if (t + 1 < this.arity.trailing.length) + registerStatic(machine, nextTrailingNode, constants.END_OF_INPUT, constants.NODE_ERRORED, [`setError`, `Not enough positional arguments`]); + registerDynamic(machine, lastTrailingNode, `isNotOptionLike`, nextTrailingNode, `pushPositional`); + lastTrailingNode = nextTrailingNode; + } + registerDynamic(machine, lastTrailingNode, positionalArgument, constants.NODE_ERRORED, [`setError`, `Extraneous positional argument`]); + registerStatic(machine, lastTrailingNode, constants.END_OF_INPUT, constants.NODE_SUCCESS, [`setSelectedIndex`, this.cliIndex]); + } + return { + machine, + context: this.context, + }; + } + registerOptions(machine, node) { + registerDynamic(machine, node, [`isOption`, `--`], node, `inhibateOptions`); + registerDynamic(machine, node, [`isBatchOption`, this.allOptionNames], node, `pushBatch`); + registerDynamic(machine, node, [`isBoundOption`, this.allOptionNames, this.options], node, `pushBound`); + registerDynamic(machine, node, [`isUnsupportedOption`, this.allOptionNames], constants.NODE_ERRORED, [`setError`, `Unsupported option name`]); + registerDynamic(machine, node, [`isInvalidOption`], constants.NODE_ERRORED, [`setError`, `Invalid option name`]); + for (const option of this.options) { + const longestName = option.names.reduce((longestName, name) => { + return name.length > longestName.length ? name : longestName; + }, ``); + if (option.arity === 0) { + for (const name of option.names) { + registerDynamic(machine, node, [`isOption`, name, option.hidden || name !== longestName], node, `pushTrue`); + if (name.startsWith(`--`) && !name.startsWith(`--no-`)) { + registerDynamic(machine, node, [`isNegatedOption`, name], node, [`pushFalse`, name]); + } + } + } + else { + // We inject a new node at the end of the state machine + let lastNode = injectNode(machine, makeNode()); + // We register transitions from the starting node to this new node + for (const name of option.names) + registerDynamic(machine, node, [`isOption`, name, option.hidden || name !== longestName], lastNode, `pushUndefined`); + // For each argument, we inject a new node at the end and we + // register a transition from the current node to this new node + for (let t = 0; t < option.arity; ++t) { + const nextNode = injectNode(machine, makeNode()); + // We can provide better errors when another option or END_OF_INPUT is encountered + registerStatic(machine, lastNode, constants.END_OF_INPUT, constants.NODE_ERRORED, `setOptionArityError`); + registerDynamic(machine, lastNode, `isOptionLike`, constants.NODE_ERRORED, `setOptionArityError`); + // If the option has a single argument, no need to store it in an array + const action = option.arity === 1 + ? `setStringValue` + : `pushStringValue`; + registerDynamic(machine, lastNode, `isNotOptionLike`, nextNode, action); + lastNode = nextNode; + } + // In the end, we register a shortcut from + // the last node back to the starting node + registerShortcut(machine, lastNode, node); + } + } } - fs.open(opt.file, flag, onopen) - }) - - return cb ? promise.then(cb, cb) : promise } - -const addFilesSync = (p, files) => { - files.forEach(file => { - if (file.charAt(0) === '@') - t({ - file: path.resolve(p.cwd, file.substr(1)), - sync: true, - noResume: true, - onentry: entry => p.add(entry) - }) - else - p.add(file) - }) - p.end() -} - -const addFilesAsync = (p, files) => { - while (files.length) { - const file = files.shift() - if (file.charAt(0) === '@') - return t({ - file: path.resolve(p.cwd, file.substr(1)), - noResume: true, - onentry: entry => p.add(entry) - }).then(_ => addFilesAsync(p, files)) - else - p.add(file) - } - p.end() +class CliBuilder { + constructor({ binaryName = `...` } = {}) { + this.builders = []; + this.opts = { binaryName }; + } + static build(cbs, opts = {}) { + return new CliBuilder(opts).commands(cbs).compile(); + } + getBuilderByIndex(n) { + if (!(n >= 0 && n < this.builders.length)) + throw new Error(`Assertion failed: Out-of-bound command index (${n})`); + return this.builders[n]; + } + commands(cbs) { + for (const cb of cbs) + cb(this.command()); + return this; + } + command() { + const builder = new CommandBuilder(this.builders.length, this.opts); + this.builders.push(builder); + return builder; + } + compile() { + const machines = []; + const contexts = []; + for (const builder of this.builders) { + const { machine, context } = builder.compile(); + machines.push(machine); + contexts.push(context); + } + const machine = makeAnyOfMachine(machines); + simplifyMachine(machine); + return { + machine, + contexts, + process: (input) => { + return runMachine(machine, input); + }, + suggest: (input, partial) => { + return suggestMachine(machine, input, partial); + }, + }; + } } - -/***/ }), - -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/types.js": -/*!*******************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/types.js ***! - \*******************************************************************************************/ -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -// map types from key to human-friendly name -exports.name = new Map([ - ['0', 'File'], - // same as File - ['', 'OldFile'], - ['1', 'Link'], - ['2', 'SymbolicLink'], - // Devices and FIFOs aren't fully supported - // they are parsed, but skipped when unpacking - ['3', 'CharacterDevice'], - ['4', 'BlockDevice'], - ['5', 'Directory'], - ['6', 'FIFO'], - // same as File - ['7', 'ContiguousFile'], - // pax headers - ['g', 'GlobalExtendedHeader'], - ['x', 'ExtendedHeader'], - // vendor-specific stuff - // skip - ['A', 'SolarisACL'], - // like 5, but with data, which should be skipped - ['D', 'GNUDumpDir'], - // metadata only, skip - ['I', 'Inode'], - // data = link path of next file - ['K', 'NextFileHasLongLinkpath'], - // data = path of next file - ['L', 'NextFileHasLongPath'], - // skip - ['M', 'ContinuationFile'], - // like L - ['N', 'OldGnuLongPath'], - // skip - ['S', 'SparseFile'], - // skip - ['V', 'TapeVolumeHeader'], - // like x - ['X', 'OldExtendedHeader'] -]) - -// map the other direction -exports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]])) +exports.CliBuilder = CliBuilder; +exports.CommandBuilder = CommandBuilder; +exports.NoLimits = NoLimits; +exports.aggregateHelpStates = aggregateHelpStates; +exports.cloneNode = cloneNode; +exports.cloneTransition = cloneTransition; +exports.debug = debug; +exports.debugMachine = debugMachine; +exports.execute = execute; +exports.injectNode = injectNode; +exports.isTerminalNode = isTerminalNode; +exports.makeAnyOfMachine = makeAnyOfMachine; +exports.makeNode = makeNode; +exports.makeStateMachine = makeStateMachine; +exports.reducers = reducers; +exports.registerDynamic = registerDynamic; +exports.registerShortcut = registerShortcut; +exports.registerStatic = registerStatic; +exports.runMachineInternal = runMachineInternal; +exports.selectBestState = selectBestState; +exports.simplifyMachine = simplifyMachine; +exports.suggest = suggest; +exports.tests = tests; +exports.trimSmallerBranches = trimSmallerBranches; /***/ }), -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/unpack.js": -/*!********************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/unpack.js ***! - \********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/errors.js": +/*!******************************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/errors.js ***! + \******************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; -// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet. -// but the path reservations are required to avoid race conditions where -// parallelized unpack ops may mess with one another, due to dependencies -// (like a Link depending on its target) or destructive operations (like -// clobbering an fs object to create one of a different type.) - -const assert = __webpack_require__(/*! assert */ "assert") -const EE = __webpack_require__(/*! events */ "events").EventEmitter -const Parser = __webpack_require__(/*! ./parse.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/parse.js") -const fs = __webpack_require__(/*! fs */ "fs") -const fsm = __webpack_require__(/*! fs-minipass */ "./.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip/node_modules/fs-minipass/index.js") -const path = __webpack_require__(/*! path */ "path") -const mkdir = __webpack_require__(/*! ./mkdir.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/mkdir.js") -const mkdirSync = mkdir.sync -const wc = __webpack_require__(/*! ./winchars.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/winchars.js") -const pathReservations = __webpack_require__(/*! ./path-reservations.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/path-reservations.js") +Object.defineProperty(exports, "__esModule", ({ value: true })); -const ONENTRY = Symbol('onEntry') -const CHECKFS = Symbol('checkFs') -const CHECKFS2 = Symbol('checkFs2') -const ISREUSABLE = Symbol('isReusable') -const MAKEFS = Symbol('makeFs') -const FILE = Symbol('file') -const DIRECTORY = Symbol('directory') -const LINK = Symbol('link') -const SYMLINK = Symbol('symlink') -const HARDLINK = Symbol('hardlink') -const UNSUPPORTED = Symbol('unsupported') -const UNKNOWN = Symbol('unknown') -const CHECKPATH = Symbol('checkPath') -const MKDIR = Symbol('mkdir') -const ONERROR = Symbol('onError') -const PENDING = Symbol('pending') -const PEND = Symbol('pend') -const UNPEND = Symbol('unpend') -const ENDED = Symbol('ended') -const MAYBECLOSE = Symbol('maybeClose') -const SKIP = Symbol('skip') -const DOCHOWN = Symbol('doChown') -const UID = Symbol('uid') -const GID = Symbol('gid') -const crypto = __webpack_require__(/*! crypto */ "crypto") -const getFlag = __webpack_require__(/*! ./get-write-flag.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/get-write-flag.js") +var constants = __webpack_require__(/*! ./constants.js */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/constants.js"); -/* istanbul ignore next */ -const neverCalled = () => { - throw new Error('sync function called cb somehow?!?') +/** + * A generic usage error with the name `UsageError`. + * + * It should be used over `Error` only when it's the user's fault. + */ +class UsageError extends Error { + constructor(message) { + super(message); + this.clipanion = { type: `usage` }; + this.name = `UsageError`; + } } - -// Unlinks on Windows are not atomic. -// -// This means that if you have a file entry, followed by another -// file entry with an identical name, and you cannot re-use the file -// (because it's a hardlink, or because unlink:true is set, or it's -// Windows, which does not have useful nlink values), then the unlink -// will be committed to the disk AFTER the new file has been written -// over the old one, deleting the new file. -// -// To work around this, on Windows systems, we rename the file and then -// delete the renamed file. It's a sloppy kludge, but frankly, I do not -// know of a better way to do this, given windows' non-atomic unlink -// semantics. -// -// See: https://github.com/npm/node-tar/issues/183 -/* istanbul ignore next */ -const unlinkFile = (path, cb) => { - if (process.platform !== 'win32') - return fs.unlink(path, cb) - - const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex') - fs.rename(path, name, er => { - if (er) - return cb(er) - fs.unlink(name, cb) - }) +class UnknownSyntaxError extends Error { + constructor(input, candidates) { + super(); + this.input = input; + this.candidates = candidates; + this.clipanion = { type: `none` }; + this.name = `UnknownSyntaxError`; + if (this.candidates.length === 0) { + this.message = `Command not found, but we're not sure what's the alternative.`; + } + else if (this.candidates.every(candidate => candidate.reason !== null && candidate.reason === candidates[0].reason)) { + const [{ reason }] = this.candidates; + this.message = `${reason}\n\n${this.candidates.map(({ usage }) => `$ ${usage}`).join(`\n`)}`; + } + else if (this.candidates.length === 1) { + const [{ usage }] = this.candidates; + this.message = `Command not found; did you mean:\n\n$ ${usage}\n${whileRunning(input)}`; + } + else { + this.message = `Command not found; did you mean one of:\n\n${this.candidates.map(({ usage }, index) => { + return `${`${index}.`.padStart(4)} ${usage}`; + }).join(`\n`)}\n\n${whileRunning(input)}`; + } + } } - -/* istanbul ignore next */ -const unlinkFileSync = path => { - if (process.platform !== 'win32') - return fs.unlinkSync(path) - - const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex') - fs.renameSync(path, name) - fs.unlinkSync(name) +class AmbiguousSyntaxError extends Error { + constructor(input, usages) { + super(); + this.input = input; + this.usages = usages; + this.clipanion = { type: `none` }; + this.name = `AmbiguousSyntaxError`; + this.message = `Cannot find which to pick amongst the following alternatives:\n\n${this.usages.map((usage, index) => { + return `${`${index}.`.padStart(4)} ${usage}`; + }).join(`\n`)}\n\n${whileRunning(input)}`; + } } - -// this.gid, entry.gid, this.processUid -const uint32 = (a, b, c) => - a === a >>> 0 ? a - : b === b >>> 0 ? b - : c - -class Unpack extends Parser { - constructor (opt) { - if (!opt) - opt = {} - - opt.ondone = _ => { - this[ENDED] = true - this[MAYBECLOSE]() +const whileRunning = (input) => `While running ${input.filter(token => { + return token !== constants.END_OF_INPUT; +}).map(token => { + const json = JSON.stringify(token); + if (token.match(/\s/) || token.length === 0 || json !== `"${token}"`) { + return json; } - - super(opt) - - this.reservations = pathReservations() - - this.transform = typeof opt.transform === 'function' ? opt.transform : null - - this.writable = true - this.readable = false - - this[PENDING] = 0 - this[ENDED] = false - - this.dirCache = opt.dirCache || new Map() - - if (typeof opt.uid === 'number' || typeof opt.gid === 'number') { - // need both or neither - if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number') - throw new TypeError('cannot set owner without number uid and gid') - if (opt.preserveOwner) - throw new TypeError( - 'cannot preserve owner in archive and also set owner explicitly') - this.uid = opt.uid - this.gid = opt.gid - this.setOwner = true - } else { - this.uid = null - this.gid = null - this.setOwner = false + else { + return token; } +}).join(` `)}`; - // default true for root - if (opt.preserveOwner === undefined && typeof opt.uid !== 'number') - this.preserveOwner = process.getuid && process.getuid() === 0 - else - this.preserveOwner = !!opt.preserveOwner +exports.AmbiguousSyntaxError = AmbiguousSyntaxError; +exports.UnknownSyntaxError = UnknownSyntaxError; +exports.UsageError = UsageError; - this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ? - process.getuid() : null - this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ? - process.getgid() : null - // mostly just for testing, but useful in some cases. - // Forcibly trigger a chown on every entry, no matter what - this.forceChown = opt.forceChown === true +/***/ }), - // turn > { - // do not unpack over files that are newer than what's in the archive - this.newer = !!opt.newer +"use strict"; - // do not unpack over ANY files - this.keep = !!opt.keep - // do not set mtime/atime of extracted entries - this.noMtime = !!opt.noMtime +Object.defineProperty(exports, "__esModule", ({ value: true })); - // allow .., absolute path entries, and unpacking through symlinks - // without this, warn and skip .., relativize absolutes, and error - // on symlinks in extraction path - this.preservePaths = !!opt.preservePaths +const MAX_LINE_LENGTH = 80; +const richLine = Array(MAX_LINE_LENGTH).fill(`━`); +for (let t = 0; t <= 24; ++t) + richLine[richLine.length - t] = `\x1b[38;5;${232 + t}m━`; +const richFormat = { + header: str => `\x1b[1m━━━ ${str}${str.length < MAX_LINE_LENGTH - 5 ? ` ${richLine.slice(str.length + 5).join(``)}` : `:`}\x1b[0m`, + bold: str => `\x1b[1m${str}\x1b[22m`, + error: str => `\x1b[31m\x1b[1m${str}\x1b[22m\x1b[39m`, + code: str => `\x1b[36m${str}\x1b[39m`, +}; +const textFormat = { + header: str => str, + bold: str => str, + error: str => str, + code: str => str, +}; +function dedent(text) { + const lines = text.split(`\n`); + const nonEmptyLines = lines.filter(line => line.match(/\S/)); + const indent = nonEmptyLines.length > 0 ? nonEmptyLines.reduce((minLength, line) => Math.min(minLength, line.length - line.trimStart().length), Number.MAX_VALUE) : 0; + return lines + .map(line => line.slice(indent).trimRight()) + .join(`\n`); +} +function formatMarkdownish(text, { format, paragraphs }) { + // Enforce \n as newline character + text = text.replace(/\r\n?/g, `\n`); + // Remove the indentation, since it got messed up with the JS indentation + text = dedent(text); + // Remove surrounding newlines, since they got added for JS formatting + text = text.replace(/^\n+|\n+$/g, ``); + // List items always end with at least two newlines (in order to not be collapsed) + text = text.replace(/^(\s*)-([^\n]*?)\n+/gm, `$1-$2\n\n`); + // Single newlines are removed; larger than that are collapsed into one + text = text.replace(/\n(\n)?\n*/g, `$1`); + if (paragraphs) { + text = text.split(/\n/).map(paragraph => { + // Does the paragraph starts with a list? + const bulletMatch = paragraph.match(/^\s*[*-][\t ]+(.*)/); + if (!bulletMatch) + // No, cut the paragraphs into segments of 80 characters + return paragraph.match(/(.{1,80})(?: |$)/g).join(`\n`); + const indent = paragraph.length - paragraph.trimStart().length; + // Yes, cut the paragraphs into segments of (78 - indent) characters (to account for the prefix) + return bulletMatch[1].match(new RegExp(`(.{1,${78 - indent}})(?: |$)`, `g`)).map((line, index) => { + return ` `.repeat(indent) + (index === 0 ? `- ` : ` `) + line; + }).join(`\n`); + }).join(`\n\n`); + } + // Highlight the code segments + text = text.replace(/(`+)((?:.|[\n])*?)\1/g, ($0, $1, $2) => { + return format.code($1 + $2 + $1); + }); + // Highlight the code segments + text = text.replace(/(\*\*)((?:.|[\n])*?)\1/g, ($0, $1, $2) => { + return format.bold($1 + $2 + $1); + }); + return text ? `${text}\n` : ``; +} - // unlink files and links before writing. This breaks existing hard - // links, and removes symlink directories rather than erroring - this.unlink = !!opt.unlink +exports.formatMarkdownish = formatMarkdownish; +exports.richFormat = richFormat; +exports.textFormat = textFormat; - this.cwd = path.resolve(opt.cwd || process.cwd()) - this.strip = +opt.strip || 0 - this.processUmask = process.umask() - this.umask = typeof opt.umask === 'number' ? opt.umask : this.processUmask - // default mode for dirs created as parents - this.dmode = opt.dmode || (0o0777 & (~this.umask)) - this.fmode = opt.fmode || (0o0666 & (~this.umask)) - this.on('entry', entry => this[ONENTRY](entry)) - } - // a bad or damaged archive is a warning for Parser, but an error - // when extracting. Mark those errors as unrecoverable, because - // the Unpack contract cannot be met. - warn (code, msg, data = {}) { - if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT') - data.recoverable = false - return super.warn(code, msg, data) - } +/***/ }), - [MAYBECLOSE] () { - if (this[ENDED] && this[PENDING] === 0) { - this.emit('prefinish') - this.emit('finish') - this.emit('end') - this.emit('close') - } - } +/***/ "./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/browser.js": +/*!*******************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/browser.js ***! + \*******************************************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { - [CHECKPATH] (entry) { - if (this.strip) { - const parts = entry.path.split(/\/|\\/) - if (parts.length < this.strip) - return false - entry.path = parts.slice(this.strip).join('/') +/* eslint-env browser */ - if (entry.type === 'Link') { - const linkparts = entry.linkpath.split(/\/|\\/) - if (linkparts.length >= this.strip) - entry.linkpath = linkparts.slice(this.strip).join('/') - } - } +/** + * This is the web browser implementation of `debug()`. + */ - if (!this.preservePaths) { - const p = entry.path - if (p.match(/(^|\/|\\)\.\.(\\|\/|$)/)) { - this.warn('TAR_ENTRY_ERROR', `path contains '..'`, { - entry, - path: p, - }) - return false - } +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; - // absolutes on posix are also absolutes on win32 - // so we only need to test this one to get both - if (path.win32.isAbsolute(p)) { - const parsed = path.win32.parse(p) - entry.path = p.substr(parsed.root.length) - const r = parsed.root - this.warn('TAR_ENTRY_INFO', `stripping ${r} from absolute path`, { - entry, - path: p, - }) - } - } + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); - // only encode : chars that aren't drive letter indicators - if (this.win32) { - const parsed = path.win32.parse(entry.path) - entry.path = parsed.root === '' ? wc.encode(entry.path) - : parsed.root + wc.encode(entry.path.substr(parsed.root.length)) - } +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; - if (path.isAbsolute(entry.path)) - entry.absolute = entry.path - else - entry.absolute = path.resolve(this.cwd, entry.path) +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ - return true - } +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } - [ONENTRY] (entry) { - if (!this[CHECKPATH](entry)) - return entry.resume() + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } - assert.equal(typeof entry.absolute, 'string') + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} - switch (entry.type) { - case 'Directory': - case 'GNUDumpDir': - if (entry.mode) - entry.mode = entry.mode | 0o700 +/** + * Colorize log arguments if enabled. + * + * @api public + */ - case 'File': - case 'OldFile': - case 'ContiguousFile': - case 'Link': - case 'SymbolicLink': - return this[CHECKFS](entry) +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); - case 'CharacterDevice': - case 'BlockDevice': - case 'FIFO': - return this[UNSUPPORTED](entry) - } - } + if (!this.useColors) { + return; + } - [ONERROR] (er, entry) { - // Cwd has to exist, or else nothing works. That's serious. - // Other errors are warnings, which raise the error in strict - // mode, but otherwise continue on. - if (er.name === 'CwdError') - this.emit('error', er) - else { - this.warn('TAR_ENTRY_ERROR', er, {entry}) - this[UNPEND]() - entry.resume() - } - } + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); - [MKDIR] (dir, mode, cb) { - mkdir(dir, { - uid: this.uid, - gid: this.gid, - processUid: this.processUid, - processGid: this.processGid, - umask: this.processUmask, - preserve: this.preservePaths, - unlink: this.unlink, - cache: this.dirCache, - cwd: this.cwd, - mode: mode - }, cb) - } + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); - [DOCHOWN] (entry) { - // in preserve owner mode, chown if the entry doesn't match process - // in set owner mode, chown if setting doesn't match process - return this.forceChown || - this.preserveOwner && - ( typeof entry.uid === 'number' && entry.uid !== this.processUid || - typeof entry.gid === 'number' && entry.gid !== this.processGid ) - || - ( typeof this.uid === 'number' && this.uid !== this.processUid || - typeof this.gid === 'number' && this.gid !== this.processGid ) - } + args.splice(lastC, 0, c); +} - [UID] (entry) { - return uint32(this.uid, entry.uid, this.processUid) - } +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || (() => {}); - [GID] (entry) { - return uint32(this.gid, entry.gid, this.processGid) - } +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} - [FILE] (entry, fullyDone) { - const mode = entry.mode & 0o7777 || this.fmode - const stream = new fsm.WriteStream(entry.absolute, { - flags: getFlag(entry.size), - mode: mode, - autoClose: false - }) - stream.on('error', er => this[ONERROR](er, entry)) +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug'); + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } - let actions = 1 - const done = er => { - if (er) - return this[ONERROR](er, entry) + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } - if (--actions === 0) { - fs.close(stream.fd, er => { - fullyDone() - er ? this[ONERROR](er, entry) : this[UNPEND]() - }) - } - } + return r; +} - stream.on('finish', _ => { - // if futimes fails, try utimes - // if utimes fails, fail with the original error - // same for fchown/chown - const abs = entry.absolute - const fd = stream.fd +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ - if (entry.mtime && !this.noMtime) { - actions++ - const atime = entry.atime || new Date() - const mtime = entry.mtime - fs.futimes(fd, atime, mtime, er => - er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er)) - : done()) - } +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} - if (this[DOCHOWN](entry)) { - actions++ - const uid = this[UID](entry) - const gid = this[GID](entry) - fs.fchown(fd, uid, gid, er => - er ? fs.chown(abs, uid, gid, er2 => done(er2 && er)) - : done()) - } +module.exports = __webpack_require__(/*! ./common */ "./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/common.js")(exports); - done() - }) +const {formatters} = module.exports; - const tx = this.transform ? this.transform(entry) || entry : entry - if (tx !== entry) { - tx.on('error', er => this[ONERROR](er, entry)) - entry.pipe(tx) - } - tx.pipe(stream) - } +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ - [DIRECTORY] (entry, fullyDone) { - const mode = entry.mode & 0o7777 || this.dmode - this[MKDIR](entry.absolute, mode, er => { - if (er) { - fullyDone() - return this[ONERROR](er, entry) - } +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; - let actions = 1 - const done = _ => { - if (--actions === 0) { - fullyDone() - this[UNPEND]() - entry.resume() - } - } - if (entry.mtime && !this.noMtime) { - actions++ - fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done) - } +/***/ }), - if (this[DOCHOWN](entry)) { - actions++ - fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done) - } +/***/ "./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/common.js": +/*!******************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/common.js ***! + \******************************************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - done() - }) - } - [UNSUPPORTED] (entry) { - entry.unsupported = true - this.warn('TAR_ENTRY_UNSUPPORTED', - `unsupported entry type: ${entry.type}`, {entry}) - entry.resume() - } +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ - [SYMLINK] (entry, done) { - this[LINK](entry, entry.linkpath, 'symlink', done) - } +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = __webpack_require__(/*! ms */ "../../../.yarn/berry/cache/ms-npm-2.1.2-ec0c1512ff-9.zip/node_modules/ms/index.js"); + createDebug.destroy = destroy; - [HARDLINK] (entry, done) { - this[LINK](entry, path.resolve(this.cwd, entry.linkpath), 'link', done) - } + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); - [PEND] () { - this[PENDING]++ - } + /** + * The currently active debug mode names, and names to skip. + */ - [UNPEND] () { - this[PENDING]-- - this[MAYBECLOSE]() - } + createDebug.names = []; + createDebug.skips = []; - [SKIP] (entry) { - this[UNPEND]() - entry.resume() - } + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; - // Check if we can reuse an existing filesystem entry safely and - // overwrite it, rather than unlinking and recreating - // Windows doesn't report a useful nlink, so we just never reuse entries - [ISREUSABLE] (entry, st) { - return entry.type === 'File' && - !this.unlink && - st.isFile() && - st.nlink <= 1 && - process.platform !== 'win32' - } + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; - // check if a thing is there, and if so, try to clobber it - [CHECKFS] (entry) { - this[PEND]() - const paths = [entry.path] - if (entry.linkpath) - paths.push(entry.linkpath) - this.reservations.reserve(paths, done => this[CHECKFS2](entry, done)) - } - [CHECKFS2] (entry, done) { - this[MKDIR](path.dirname(entry.absolute), this.dmode, er => { - if (er) { - done() - return this[ONERROR](er, entry) - } - fs.lstat(entry.absolute, (er, st) => { - if (st && (this.keep || this.newer && st.mtime > entry.mtime)) { - this[SKIP](entry) - done() - } else if (er || this[ISREUSABLE](entry, st)) { - this[MAKEFS](null, entry, done) - } - else if (st.isDirectory()) { - if (entry.type === 'Directory') { - if (!entry.mode || (st.mode & 0o7777) === entry.mode) - this[MAKEFS](null, entry, done) - else - fs.chmod(entry.absolute, entry.mode, - er => this[MAKEFS](er, entry, done)) - } else - fs.rmdir(entry.absolute, er => this[MAKEFS](er, entry, done)) - } else - unlinkFile(entry.absolute, er => this[MAKEFS](er, entry, done)) - }) - }) - } + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } - [MAKEFS] (er, entry, done) { - if (er) - return this[ONERROR](er, entry) + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; - switch (entry.type) { - case 'File': - case 'OldFile': - case 'ContiguousFile': - return this[FILE](entry, done) + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; - case 'Link': - return this[HARDLINK](entry, done) + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } - case 'SymbolicLink': - return this[SYMLINK](entry, done) + const self = debug; - case 'Directory': - case 'GNUDumpDir': - return this[DIRECTORY](entry, done) - } - } + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; - [LINK] (entry, linkpath, link, done) { - // XXX: get the type ('file' or 'dir') for windows - fs[link](linkpath, entry.absolute, er => { - if (er) - return this[ONERROR](er, entry) - done() - this[UNPEND]() - entry.resume() - }) - } -} + args[0] = createDebug.coerce(args[0]); -class UnpackSync extends Unpack { - constructor (opt) { - super(opt) - } + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } - [CHECKFS] (entry) { - const er = this[MKDIR](path.dirname(entry.absolute), this.dmode, neverCalled) - if (er) - return this[ONERROR](er, entry) - try { - const st = fs.lstatSync(entry.absolute) - if (this.keep || this.newer && st.mtime > entry.mtime) - return this[SKIP](entry) - else if (this[ISREUSABLE](entry, st)) - return this[MAKEFS](null, entry, neverCalled) - else { - try { - if (st.isDirectory()) { - if (entry.type === 'Directory') { - if (entry.mode && (st.mode & 0o7777) !== entry.mode) - fs.chmodSync(entry.absolute, entry.mode) - } else - fs.rmdirSync(entry.absolute) - } else - unlinkFileSync(entry.absolute) - return this[MAKEFS](null, entry, neverCalled) - } catch (er) { - return this[ONERROR](er, entry) - } - } - } catch (er) { - return this[MAKEFS](null, entry, neverCalled) - } - } + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); - [FILE] (entry, _) { - const mode = entry.mode & 0o7777 || this.fmode + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); - const oner = er => { - let closeError - try { - fs.closeSync(fd) - } catch (e) { - closeError = e - } - if (er || closeError) - this[ONERROR](er || closeError, entry) - } + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); - let stream - let fd - try { - fd = fs.openSync(entry.absolute, getFlag(entry.size), mode) - } catch (er) { - return oner(er) - } - const tx = this.transform ? this.transform(entry) || entry : entry - if (tx !== entry) { - tx.on('error', er => this[ONERROR](er, entry)) - entry.pipe(tx) - } + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } - tx.on('data', chunk => { - try { - fs.writeSync(fd, chunk, 0, chunk.length) - } catch (er) { - oner(er) - } - }) + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } - tx.on('end', _ => { - let er = null - // try both, falling futimes back to utimes - // if either fails, handle the first error - if (entry.mtime && !this.noMtime) { - const atime = entry.atime || new Date() - const mtime = entry.mtime - try { - fs.futimesSync(fd, atime, mtime) - } catch (futimeser) { - try { - fs.utimesSync(entry.absolute, atime, mtime) - } catch (utimeser) { - er = futimeser - } - } - } + return enabledCache; + }, + set: v => { + enableOverride = v; + } + }); - if (this[DOCHOWN](entry)) { - const uid = this[UID](entry) - const gid = this[GID](entry) + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } - try { - fs.fchownSync(fd, uid, gid) - } catch (fchowner) { - try { - fs.chownSync(entry.absolute, uid, gid) - } catch (chowner) { - er = er || fchowner - } - } - } + return debug; + } - oner(er) - }) - } + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } - [DIRECTORY] (entry, _) { - const mode = entry.mode & 0o7777 || this.dmode - const er = this[MKDIR](entry.absolute, mode) - if (er) - return this[ONERROR](er, entry) - if (entry.mtime && !this.noMtime) { - try { - fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime) - } catch (er) {} - } - if (this[DOCHOWN](entry)) { - try { - fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry)) - } catch (er) {} - } - entry.resume() - } + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; - [MKDIR] (dir, mode) { - try { - return mkdir.sync(dir, { - uid: this.uid, - gid: this.gid, - processUid: this.processUid, - processGid: this.processGid, - umask: this.processUmask, - preserve: this.preservePaths, - unlink: this.unlink, - cache: this.dirCache, - cwd: this.cwd, - mode: mode - }) - } catch (er) { - return er - } - } + createDebug.names = []; + createDebug.skips = []; - [LINK] (entry, linkpath, link, _) { - try { - fs[link + 'Sync'](linkpath, entry.absolute) - entry.resume() - } catch (er) { - return this[ONERROR](er, entry) - } - } -} + let i; + const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + const len = split.length; -Unpack.Sync = UnpackSync -module.exports = Unpack + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } + namespaces = split[i].replace(/\*/g, '.*?'); -/***/ }), + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } + } -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/update.js": -/*!********************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/update.js ***! - \********************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names.map(toNamespace), + ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } -"use strict"; + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + let i; + let len; -// tar -u + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } -const hlo = __webpack_require__(/*! ./high-level-opt.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/high-level-opt.js") -const r = __webpack_require__(/*! ./replace.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/replace.js") -// just call tar.r with the filter and mtimeCache + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } -const u = module.exports = (opt_, files, cb) => { - const opt = hlo(opt_) + return false; + } - if (!opt.file) - throw new TypeError('file is required') + /** + * Convert regexp to namespace + * + * @param {RegExp} regxep + * @return {String} namespace + * @api private + */ + function toNamespace(regexp) { + return regexp.toString() + .substring(2, regexp.toString().length - 2) + .replace(/\.\*\?$/, '*'); + } - if (opt.gzip) - throw new TypeError('cannot append to compressed archives') + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } - if (!files || !Array.isArray(files) || !files.length) - throw new TypeError('no files or directories specified') + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } - files = Array.from(files) + createDebug.enable(createDebug.load()); - mtimeFilter(opt) - return r(opt, files, cb) + return createDebug; } -const mtimeFilter = opt => { - const filter = opt.filter +module.exports = setup; - if (!opt.mtimeCache) - opt.mtimeCache = new Map() - opt.filter = filter ? (path, stat) => - filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime) - : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime) +/***/ }), + +/***/ "./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/index.js": +/*!*****************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/index.js ***! + \*****************************************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ + +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = __webpack_require__(/*! ./browser.js */ "./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/browser.js"); +} else { + module.exports = __webpack_require__(/*! ./node.js */ "./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/node.js"); } /***/ }), -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/warn-mixin.js": -/*!************************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/warn-mixin.js ***! - \************************************************************************************************/ -/***/ ((module) => { - -"use strict"; +/***/ "./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/node.js": +/*!****************************************************************************************************************************************!*\ + !*** ./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/node.js ***! + \****************************************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { -module.exports = Base => class extends Base { - warn (code, message, data = {}) { - if (this.file) - data.file = this.file - if (this.cwd) - data.cwd = this.cwd - data.code = message instanceof Error && message.code || code - data.tarCode = code - if (!this.strict && data.recoverable !== false) { - if (message instanceof Error) { - data = Object.assign(message, data) - message = message.message - } - this.emit('warn', data.tarCode, message, data) - } else if (message instanceof Error) { - this.emit('error', Object.assign(message, data)) - } else - this.emit('error', Object.assign(new Error(`${code}: ${message}`), data)) - } -} +/** + * Module dependencies. + */ +const tty = __webpack_require__(/*! tty */ "tty"); +const util = __webpack_require__(/*! util */ "util"); -/***/ }), +/** + * This is the Node.js implementation of `debug()`. + */ -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/winchars.js": -/*!**********************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/winchars.js ***! - \**********************************************************************************************/ -/***/ ((module) => { +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.destroy = util.deprecate( + () => {}, + 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' +); -"use strict"; +/** + * Colors. + */ +exports.colors = [6, 2, 3, 4, 5, 1]; -// When writing files on Windows, translate the characters to their -// 0xf000 higher-encoded versions. +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + const supportsColor = __webpack_require__(/*! supports-color */ "../../../.yarn/berry/cache/supports-color-npm-9.2.2-d003069e84-9.zip/node_modules/supports-color/index.js"); -const raw = [ - '|', - '<', - '>', - '?', - ':' -] + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } +} catch (error) { + // Swallow - we only care if `supports-color` is available; it doesn't have to be. +} -const win = raw.map(char => - String.fromCharCode(0xf000 + char.charCodeAt(0))) +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ -const toWin = new Map(raw.map((char, i) => [char, win[i]])) -const toRaw = new Map(win.map((char, i) => [char, raw[i]])) +exports.inspectOpts = Object.keys(process.env).filter(key => { + return /^debug_/i.test(key); +}).reduce((obj, key) => { + // Camel-case + const prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); -module.exports = { - encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s), - decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s) -} + // Coerce string value into JS value + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } + obj[prop] = val; + return obj; +}, {}); -/***/ }), +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ -/***/ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/write-entry.js": -/*!*************************************************************************************************!*\ - !*** ./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/write-entry.js ***! - \*************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +function useColors() { + return 'colors' in exports.inspectOpts ? + Boolean(exports.inspectOpts.colors) : + tty.isatty(process.stderr.fd); +} -"use strict"; +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ -const MiniPass = __webpack_require__(/*! minipass */ "./.yarn/cache/minipass-npm-3.1.1-b51d7e264d-cfcfd86adc.zip/node_modules/minipass/index.js") -const Pax = __webpack_require__(/*! ./pax.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/pax.js") -const Header = __webpack_require__(/*! ./header.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/header.js") -const ReadEntry = __webpack_require__(/*! ./read-entry.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/read-entry.js") -const fs = __webpack_require__(/*! fs */ "fs") -const path = __webpack_require__(/*! path */ "path") +function formatArgs(args) { + const {namespace: name, useColors} = this; -const types = __webpack_require__(/*! ./types.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/types.js") -const maxReadSize = 16 * 1024 * 1024 -const PROCESS = Symbol('process') -const FILE = Symbol('file') -const DIRECTORY = Symbol('directory') -const SYMLINK = Symbol('symlink') -const HARDLINK = Symbol('hardlink') -const HEADER = Symbol('header') -const READ = Symbol('read') -const LSTAT = Symbol('lstat') -const ONLSTAT = Symbol('onlstat') -const ONREAD = Symbol('onread') -const ONREADLINK = Symbol('onreadlink') -const OPENFILE = Symbol('openfile') -const ONOPENFILE = Symbol('onopenfile') -const CLOSE = Symbol('close') -const MODE = Symbol('mode') -const warner = __webpack_require__(/*! ./warn-mixin.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/warn-mixin.js") -const winchars = __webpack_require__(/*! ./winchars.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/winchars.js") + if (useColors) { + const c = this.color; + const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); + const prefix = ` ${colorCode};1m${name} \u001B[0m`; -const modeFix = __webpack_require__(/*! ./mode-fix.js */ "./.yarn/cache/tar-npm-6.0.1-aedef672fb-498c4a5671.zip/node_modules/tar/lib/mode-fix.js") + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} -const WriteEntry = warner(class WriteEntry extends MiniPass { - constructor (p, opt) { - opt = opt || {} - super(opt) - if (typeof p !== 'string') - throw new TypeError('path is required') - this.path = p - // suppress atime, ctime, uid, gid, uname, gname - this.portable = !!opt.portable - // until node has builtin pwnam functions, this'll have to do - this.myuid = process.getuid && process.getuid() - this.myuser = process.env.USER || '' - this.maxReadSize = opt.maxReadSize || maxReadSize - this.linkCache = opt.linkCache || new Map() - this.statCache = opt.statCache || new Map() - this.preservePaths = !!opt.preservePaths - this.cwd = opt.cwd || process.cwd() - this.strict = !!opt.strict - this.noPax = !!opt.noPax - this.noMtime = !!opt.noMtime - this.mtime = opt.mtime || null +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + return new Date().toISOString() + ' '; +} - if (typeof opt.onwarn === 'function') - this.on('warn', opt.onwarn) +/** + * Invokes `util.format()` with the specified arguments and writes to stderr. + */ - let pathWarn = false - if (!this.preservePaths && path.win32.isAbsolute(p)) { - // absolutes on posix are also absolutes on win32 - // so we only need to test this one to get both - const parsed = path.win32.parse(p) - this.path = p.substr(parsed.root.length) - pathWarn = parsed.root - } +function log(...args) { + return process.stderr.write(util.format(...args) + '\n'); +} - this.win32 = !!opt.win32 || process.platform === 'win32' - if (this.win32) { - this.path = winchars.decode(this.path.replace(/\\/g, '/')) - p = p.replace(/\\/g, '/') - } +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } +} - this.absolute = opt.absolute || path.resolve(this.cwd, p) +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ - if (this.path === '') - this.path = './' +function load() { + return process.env.DEBUG; +} - if (pathWarn) { - this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, { - entry: this, - path: pathWarn + this.path, - }) - } +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ - if (this.statCache.has(this.absolute)) - this[ONLSTAT](this.statCache.get(this.absolute)) - else - this[LSTAT]() - } +function init(debug) { + debug.inspectOpts = {}; - [LSTAT] () { - fs.lstat(this.absolute, (er, stat) => { - if (er) - return this.emit('error', er) - this[ONLSTAT](stat) - }) - } + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} - [ONLSTAT] (stat) { - this.statCache.set(this.absolute, stat) - this.stat = stat - if (!stat.isFile()) - stat.size = 0 - this.type = getType(stat) - this.emit('stat', stat) - this[PROCESS]() - } +module.exports = __webpack_require__(/*! ./common */ "./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/common.js")(exports); - [PROCESS] () { - switch (this.type) { - case 'File': return this[FILE]() - case 'Directory': return this[DIRECTORY]() - case 'SymbolicLink': return this[SYMLINK]() - // unsupported types are ignored. - default: return this.end() - } - } +const {formatters} = module.exports; - [MODE] (mode) { - return modeFix(mode, this.type === 'Directory', this.portable) - } +/** + * Map %o to `util.inspect()`, all on a single line. + */ - [HEADER] () { - if (this.type === 'Directory' && this.portable) - this.noMtime = true +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n') + .map(str => str.trim()) + .join(' '); +}; - this.header = new Header({ - path: this.path, - linkpath: this.linkpath, - // only the permissions and setuid/setgid/sticky bitflags - // not the higher-order bits that specify file type - mode: this[MODE](this.stat.mode), - uid: this.portable ? null : this.stat.uid, - gid: this.portable ? null : this.stat.gid, - size: this.stat.size, - mtime: this.noMtime ? null : this.mtime || this.stat.mtime, - type: this.type, - uname: this.portable ? null : - this.stat.uid === this.myuid ? this.myuser : '', - atime: this.portable ? null : this.stat.atime, - ctime: this.portable ? null : this.stat.ctime - }) +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ - if (this.header.encode() && !this.noPax) - this.write(new Pax({ - atime: this.portable ? null : this.header.atime, - ctime: this.portable ? null : this.header.ctime, - gid: this.portable ? null : this.header.gid, - mtime: this.noMtime ? null : this.mtime || this.header.mtime, - path: this.path, - linkpath: this.linkpath, - size: this.header.size, - uid: this.portable ? null : this.header.uid, - uname: this.portable ? null : this.header.uname, - dev: this.portable ? null : this.stat.dev, - ino: this.portable ? null : this.stat.ino, - nlink: this.portable ? null : this.stat.nlink - }).encode()) - this.write(this.header.block) - } +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; - [DIRECTORY] () { - if (this.path.substr(-1) !== '/') - this.path += '/' - this.stat.size = 0 - this[HEADER]() - this.end() - } - [SYMLINK] () { - fs.readlink(this.absolute, (er, linkpath) => { - if (er) - return this.emit('error', er) - this[ONREADLINK](linkpath) - }) - } +/***/ }), - [ONREADLINK] (linkpath) { - this.linkpath = linkpath.replace(/\\/g, '/') - this[HEADER]() - this.end() - } +/***/ "./sources/Engine.ts": +/*!***************************!*\ + !*** ./sources/Engine.ts ***! + \***************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - [HARDLINK] (linkpath) { - this.type = 'Link' - this.linkpath = path.relative(this.cwd, linkpath).replace(/\\/g, '/') - this.stat.size = 0 - this[HEADER]() - this.end() - } +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Engine": () => (/* binding */ Engine) +/* harmony export */ }); +/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/index.js"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/index.js"); +/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(semver__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _config_json__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config.json */ "./config.json"); +/* harmony import */ var _corepackUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./corepackUtils */ "./sources/corepackUtils.ts"); +/* harmony import */ var _folderUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./folderUtils */ "./sources/folderUtils.ts"); +/* harmony import */ var _semverUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./semverUtils */ "./sources/semverUtils.ts"); +/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./types */ "./sources/types.ts"); - [FILE] () { - if (this.stat.nlink > 1) { - const linkKey = this.stat.dev + ':' + this.stat.ino - if (this.linkCache.has(linkKey)) { - const linkpath = this.linkCache.get(linkKey) - if (linkpath.indexOf(this.cwd) === 0) - return this[HARDLINK](linkpath) - } - this.linkCache.set(linkKey, this.absolute) - } - this[HEADER]() - if (this.stat.size === 0) - return this.end() - this[OPENFILE]() - } - [OPENFILE] () { - fs.open(this.absolute, 'r', (er, fd) => { - if (er) - return this.emit('error', er) - this[ONOPENFILE](fd) - }) - } - [ONOPENFILE] (fd) { - const blockLen = 512 * Math.ceil(this.stat.size / 512) - const bufLen = Math.min(blockLen, this.maxReadSize) - const buf = Buffer.allocUnsafe(bufLen) - this[READ](fd, buf, 0, buf.length, 0, this.stat.size, blockLen) - } - [READ] (fd, buf, offset, length, pos, remain, blockRemain) { - fs.read(fd, buf, offset, length, pos, (er, bytesRead) => { - if (er) { - // ignoring the error from close(2) is a bad practice, but at - // this point we already have an error, don't need another one - return this[CLOSE](fd, () => this.emit('error', er)) - } - this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead) - }) - } - [CLOSE] (fd, cb) { - fs.close(fd, cb) - } - [ONREAD] (fd, buf, offset, length, pos, remain, blockRemain, bytesRead) { - if (bytesRead <= 0 && remain > 0) { - const er = new Error('encountered unexpected EOF') - er.path = this.absolute - er.syscall = 'read' - er.code = 'EOF' - return this[CLOSE](fd, () => this.emit('error', er)) + +class Engine { + constructor(config = _config_json__WEBPACK_IMPORTED_MODULE_3__) { + this.config = config; + } + getPackageManagerFor(binaryName) { + for (const packageManager of _types__WEBPACK_IMPORTED_MODULE_7__.SupportedPackageManagerSet) { + for (const rangeDefinition of Object.values(this.config.definitions[packageManager].ranges)) { + const bins = Array.isArray(rangeDefinition.bin) + ? rangeDefinition.bin + : Object.keys(rangeDefinition.bin); + if (bins.includes(binaryName)) { + return packageManager; + } + } + } + return null; + } + getBinariesFor(name) { + const binNames = new Set(); + for (const rangeDefinition of Object.values(this.config.definitions[name].ranges)) { + const bins = Array.isArray(rangeDefinition.bin) + ? rangeDefinition.bin + : Object.keys(rangeDefinition.bin); + for (const name of bins) { + binNames.add(name); + } + } + return binNames; + } + async getDefaultDescriptors() { + const locators = []; + for (const name of _types__WEBPACK_IMPORTED_MODULE_7__.SupportedPackageManagerSet) + locators.push({ name, range: await this.getDefaultVersion(name) }); + return locators; + } + async getDefaultVersion(packageManager) { + const definition = this.config.definitions[packageManager]; + if (typeof definition === `undefined`) + throw new clipanion__WEBPACK_IMPORTED_MODULE_8__.UsageError(`This package manager (${packageManager}) isn't supported by this corepack build`); + let lastKnownGood; + try { + lastKnownGood = JSON.parse(await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.readFile(this.getLastKnownGoodFile(), `utf8`)); + } + catch (_a) { + // Ignore errors; too bad + } + if (typeof lastKnownGood !== `object` || lastKnownGood === null) + return definition.default; + if (!Object.prototype.hasOwnProperty.call(lastKnownGood, packageManager)) + return definition.default; + const override = lastKnownGood[packageManager]; + if (typeof override !== `string`) + return definition.default; + return override; } - - if (bytesRead > remain) { - const er = new Error('did not encounter expected EOF') - er.path = this.absolute - er.syscall = 'read' - er.code = 'EOF' - return this[CLOSE](fd, () => this.emit('error', er)) + async activatePackageManager(locator) { + const lastKnownGoodFile = this.getLastKnownGoodFile(); + let lastKnownGood; + try { + lastKnownGood = JSON.parse(await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.readFile(lastKnownGoodFile, `utf8`)); + } + catch (_a) { + // Ignore errors; too bad + } + if (typeof lastKnownGood !== `object` || lastKnownGood === null) + lastKnownGood = {}; + lastKnownGood[locator.name] = locator.reference; + await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.mkdir(path__WEBPACK_IMPORTED_MODULE_1___default().dirname(lastKnownGoodFile), { recursive: true }); + await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.writeFile(lastKnownGoodFile, `${JSON.stringify(lastKnownGood, null, 2)}\n`); } - - // null out the rest of the buffer, if we could fit the block padding - if (bytesRead === remain) { - for (let i = bytesRead; i < length && bytesRead < blockRemain; i++) { - buf[i + offset] = 0 - bytesRead ++ - remain ++ - } + async ensurePackageManager(locator) { + const definition = this.config.definitions[locator.name]; + if (typeof definition === `undefined`) + throw new clipanion__WEBPACK_IMPORTED_MODULE_8__.UsageError(`This package manager (${locator.name}) isn't supported by this corepack build`); + const ranges = Object.keys(definition.ranges).reverse(); + const range = ranges.find(range => _semverUtils__WEBPACK_IMPORTED_MODULE_6__.satisfiesWithPrereleases(locator.reference, range)); + if (typeof range === `undefined`) + throw new Error(`Assertion failed: Specified resolution (${locator.reference}) isn't supported by any of ${ranges.join(`, `)}`); + const installedLocation = await _corepackUtils__WEBPACK_IMPORTED_MODULE_4__.installVersion(_folderUtils__WEBPACK_IMPORTED_MODULE_5__.getInstallFolder(), locator, { + spec: definition.ranges[range], + }); + return { + location: installedLocation, + spec: definition.ranges[range], + }; } - - const writeBuf = offset === 0 && bytesRead === buf.length ? - buf : buf.slice(offset, offset + bytesRead) - remain -= bytesRead - blockRemain -= bytesRead - pos += bytesRead - offset += bytesRead - - this.write(writeBuf) - - if (!remain) { - if (blockRemain) - this.write(Buffer.alloc(blockRemain)) - return this[CLOSE](fd, er => er ? this.emit('error', er) : this.end()) + async resolveDescriptor(descriptor, { allowTags = false, useCache = true } = {}) { + const definition = this.config.definitions[descriptor.name]; + if (typeof definition === `undefined`) + throw new clipanion__WEBPACK_IMPORTED_MODULE_8__.UsageError(`This package manager (${descriptor.name}) isn't supported by this corepack build`); + let finalDescriptor = descriptor; + if (/^[a-z-]+$/.test(descriptor.range)) { + if (!allowTags) + throw new clipanion__WEBPACK_IMPORTED_MODULE_8__.UsageError(`Packages managers can't be referended via tags in this context`); + // We only resolve tags from the latest registry entry + const ranges = Object.keys(definition.ranges); + const tagRange = ranges[ranges.length - 1]; + const tags = await _corepackUtils__WEBPACK_IMPORTED_MODULE_4__.fetchAvailableTags(definition.ranges[tagRange].registry); + if (!Object.prototype.hasOwnProperty.call(tags, descriptor.range)) + throw new clipanion__WEBPACK_IMPORTED_MODULE_8__.UsageError(`Tag not found (${descriptor.range})`); + finalDescriptor = { + name: descriptor.name, + range: tags[descriptor.range], + }; + } + // If a compatible version is already installed, no need to query one + // from the remote listings + const cachedVersion = await _corepackUtils__WEBPACK_IMPORTED_MODULE_4__.findInstalledVersion(_folderUtils__WEBPACK_IMPORTED_MODULE_5__.getInstallFolder(), finalDescriptor); + if (cachedVersion !== null && useCache) + return { name: finalDescriptor.name, reference: cachedVersion }; + // If the user asked for a specific version, no need to request the list of + // available versions from the registry. + if (semver__WEBPACK_IMPORTED_MODULE_2___default().valid(finalDescriptor.range)) + return { name: finalDescriptor.name, reference: finalDescriptor.range }; + const candidateRangeDefinitions = Object.keys(definition.ranges).filter(range => { + return _semverUtils__WEBPACK_IMPORTED_MODULE_6__.satisfiesWithPrereleases(finalDescriptor.range, range); + }); + const tagResolutions = await Promise.all(candidateRangeDefinitions.map(async (range) => { + return [range, await _corepackUtils__WEBPACK_IMPORTED_MODULE_4__.fetchAvailableVersions(definition.ranges[range].registry)]; + })); + // If a version is available under multiple strategies (for example if + // Yarn is published to both the v1 package and git), we only care + // about the latest one + const resolutionMap = new Map(); + for (const [range, resolutions] of tagResolutions) + for (const entry of resolutions) + resolutionMap.set(entry, range); + const candidates = [...resolutionMap.keys()]; + const maxSatisfying = semver__WEBPACK_IMPORTED_MODULE_2___default().maxSatisfying(candidates, finalDescriptor.range); + if (maxSatisfying === null) + return null; + return { name: finalDescriptor.name, reference: maxSatisfying }; } - - if (offset >= length) { - buf = Buffer.allocUnsafe(length) - offset = 0 + getLastKnownGoodFile() { + return path__WEBPACK_IMPORTED_MODULE_1___default().join(_folderUtils__WEBPACK_IMPORTED_MODULE_5__.getInstallFolder(), `lastKnownGood.json`); } - length = buf.length - offset - this[READ](fd, buf, offset, length, pos, remain, blockRemain) - } -}) - -class WriteEntrySync extends WriteEntry { - constructor (path, opt) { - super(path, opt) - } - - [LSTAT] () { - this[ONLSTAT](fs.lstatSync(this.absolute)) - } +} - [SYMLINK] () { - this[ONREADLINK](fs.readlinkSync(this.absolute)) - } - [OPENFILE] () { - this[ONOPENFILE](fs.openSync(this.absolute, 'r')) - } +/***/ }), - [READ] (fd, buf, offset, length, pos, remain, blockRemain) { - let threw = true - try { - const bytesRead = fs.readSync(fd, buf, offset, length, pos) - this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead) - threw = false - } finally { - // ignoring the error from close(2) is a bad practice, but at - // this point we already have an error, don't need another one - if (threw) - try { this[CLOSE](fd, () => {}) } catch (er) {} - } - } +/***/ "./sources/commands/Disable.ts": +/*!*************************************!*\ + !*** ./sources/commands/Disable.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - [CLOSE] (fd, cb) { - fs.closeSync(fd) - cb() - } -} +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "DisableCommand": () => (/* binding */ DisableCommand) +/* harmony export */ }); +/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/index.js"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var which__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! which */ "../../../.yarn/berry/cache/which-npm-2.0.2-320ddf72f7-9.zip/node_modules/which/which.js"); +/* harmony import */ var which__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(which__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../types */ "./sources/types.ts"); -const WriteEntryTar = warner(class WriteEntryTar extends MiniPass { - constructor (readEntry, opt) { - opt = opt || {} - super(opt) - this.preservePaths = !!opt.preservePaths - this.portable = !!opt.portable - this.strict = !!opt.strict - this.noPax = !!opt.noPax - this.noMtime = !!opt.noMtime - this.readEntry = readEntry - this.type = readEntry.type - if (this.type === 'Directory' && this.portable) - this.noMtime = true - this.path = readEntry.path - this.mode = this[MODE](readEntry.mode) - this.uid = this.portable ? null : readEntry.uid - this.gid = this.portable ? null : readEntry.gid - this.uname = this.portable ? null : readEntry.uname - this.gname = this.portable ? null : readEntry.gname - this.size = readEntry.size - this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime - this.atime = this.portable ? null : readEntry.atime - this.ctime = this.portable ? null : readEntry.ctime - this.linkpath = readEntry.linkpath - if (typeof opt.onwarn === 'function') - this.on('warn', opt.onwarn) - let pathWarn = false - if (path.isAbsolute(this.path) && !this.preservePaths) { - const parsed = path.parse(this.path) - pathWarn = parsed.root - this.path = this.path.substr(parsed.root.length) +class DisableCommand extends clipanion__WEBPACK_IMPORTED_MODULE_4__.Command { + constructor() { + super(...arguments); + this.installDirectory = clipanion__WEBPACK_IMPORTED_MODULE_4__.Option.String(`--install-directory`, { + description: `Where the shims are located`, + }); + this.names = clipanion__WEBPACK_IMPORTED_MODULE_4__.Option.Rest(); } - - this.remain = readEntry.size - this.blockRemain = readEntry.startBlockSize - - this.header = new Header({ - path: this.path, - linkpath: this.linkpath, - // only the permissions and setuid/setgid/sticky bitflags - // not the higher-order bits that specify file type - mode: this.mode, - uid: this.portable ? null : this.uid, - gid: this.portable ? null : this.gid, - size: this.size, - mtime: this.noMtime ? null : this.mtime, - type: this.type, - uname: this.portable ? null : this.uname, - atime: this.portable ? null : this.atime, - ctime: this.portable ? null : this.ctime - }) - - if (pathWarn) { - this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, { - entry: this, - path: pathWarn + this.path, - }) + async execute() { + let installDirectory = this.installDirectory; + // Node always call realpath on the module it executes, so we already + // lost track of how the binary got called. To find it back, we need to + // iterate over the PATH variable. + if (typeof installDirectory === `undefined`) + installDirectory = path__WEBPACK_IMPORTED_MODULE_1___default().dirname(await which__WEBPACK_IMPORTED_MODULE_2___default()(`corepack`)); + const names = this.names.length === 0 + ? _types__WEBPACK_IMPORTED_MODULE_3__.SupportedPackageManagerSetWithoutNpm + : this.names; + for (const name of new Set(names)) { + if (!(0,_types__WEBPACK_IMPORTED_MODULE_3__.isSupportedPackageManager)(name)) + throw new clipanion__WEBPACK_IMPORTED_MODULE_4__.UsageError(`Invalid package manager name '${name}'`); + for (const binName of this.context.engine.getBinariesFor(name)) { + if (process.platform === `win32`) { + await this.removeWin32Link(installDirectory, binName); + } + else { + await this.removePosixLink(installDirectory, binName); + } + } + } } + async removePosixLink(installDirectory, binName) { + const file = path__WEBPACK_IMPORTED_MODULE_1___default().join(installDirectory, binName); + try { + await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.unlink(file); + } + catch (err) { + if (err.code !== `ENOENT`) { + throw err; + } + } + } + async removeWin32Link(installDirectory, binName) { + for (const ext of [``, `.ps1`, `.cmd`]) { + const file = path__WEBPACK_IMPORTED_MODULE_1___default().join(installDirectory, `${binName}${ext}`); + try { + await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.unlink(file); + } + catch (err) { + if (err.code !== `ENOENT`) { + throw err; + } + } + } + } +} +DisableCommand.paths = [ + [`disable`], +]; +DisableCommand.usage = clipanion__WEBPACK_IMPORTED_MODULE_4__.Command.Usage({ + description: `Remove the Corepack shims from the install directory`, + details: ` + When run, this command will remove the shims for the specified package managers from the install directory, or all shims if no parameters are passed. - if (this.header.encode() && !this.noPax) - super.write(new Pax({ - atime: this.portable ? null : this.atime, - ctime: this.portable ? null : this.ctime, - gid: this.portable ? null : this.gid, - mtime: this.noMtime ? null : this.mtime, - path: this.path, - linkpath: this.linkpath, - size: this.size, - uid: this.portable ? null : this.uid, - uname: this.portable ? null : this.uname, - dev: this.portable ? null : this.readEntry.dev, - ino: this.portable ? null : this.readEntry.ino, - nlink: this.portable ? null : this.readEntry.nlink - }).encode()) - - super.write(this.header.block) - readEntry.pipe(this) - } - - [MODE] (mode) { - return modeFix(mode, this.type === 'Directory', this.portable) - } - - write (data) { - const writeLen = data.length - if (writeLen > this.blockRemain) - throw new Error('writing more to entry than is appropriate') - this.blockRemain -= writeLen - return super.write(data) - } + By default it will locate the install directory by running the equivalent of \`which corepack\`, but this can be tweaked by explicitly passing the install directory via the \`--install-directory\` flag. + `, + examples: [[ + `Disable all shims, removing them if they're next to the \`coreshim\` binary`, + `$0 disable`, + ], [ + `Disable all shims, removing them from the specified directory`, + `$0 disable --install-directory /path/to/bin`, + ], [ + `Disable the Yarn shim only`, + `$0 disable yarn`, + ]], +}); - end () { - if (this.blockRemain) - this.write(Buffer.alloc(this.blockRemain)) - return super.end() - } -}) -WriteEntry.Sync = WriteEntrySync -WriteEntry.Tar = WriteEntryTar +/***/ }), -const getType = stat => - stat.isFile() ? 'File' - : stat.isDirectory() ? 'Directory' - : stat.isSymbolicLink() ? 'SymbolicLink' - : 'Unsupported' +/***/ "./sources/commands/Enable.ts": +/*!************************************!*\ + !*** ./sources/commands/Enable.ts ***! + \************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { -module.exports = WriteEntry +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "EnableCommand": () => (/* binding */ EnableCommand) +/* harmony export */ }); +/* harmony import */ var _zkochan_cmd_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @zkochan/cmd-shim */ "../../../.yarn/berry/cache/@zkochan-cmd-shim-npm-5.3.0-8f73631a81-9.zip/node_modules/@zkochan/cmd-shim/index.js"); +/* harmony import */ var _zkochan_cmd_shim__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_zkochan_cmd_shim__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/index.js"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var which__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! which */ "../../../.yarn/berry/cache/which-npm-2.0.2-320ddf72f7-9.zip/node_modules/which/which.js"); +/* harmony import */ var which__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(which__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _nodeUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../nodeUtils */ "./sources/nodeUtils.ts"); +/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../types */ "./sources/types.ts"); -/***/ }), -/***/ "./.yarn/cache/typanion-npm-3.3.1-ee9997c7cf-212d2beb55.zip/node_modules/typanion/lib/index.js": -/*!*****************************************************************************************************!*\ - !*** ./.yarn/cache/typanion-npm-3.3.1-ee9997c7cf-212d2beb55.zip/node_modules/typanion/lib/index.js ***! - \*****************************************************************************************************/ -/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const simpleKeyRegExp = /^[a-zA-Z_][a-zA-Z0-9_]*$/; -const colorStringRegExp = /^#[0-9a-f]{6}$/i; -const colorStringAlphaRegExp = /^#[0-9a-f]{6}([0-9a-f]{2})?$/i; -// https://stackoverflow.com/a/475217/880703 -const base64RegExp = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/; -// https://stackoverflow.com/a/14166194/880703 -const uuid4RegExp = /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i; -// https://stackoverflow.com/a/28022901/880703 + https://www.debuggex.com/r/bl8J35wMKk48a7u_ -const iso8601RegExp = /^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/; -const makeTrait = (value) => () => { - return value; -}; -function makeValidator({ test }) { - return makeTrait(test)(); -} -function getPrintable(value) { - if (value === null) - return `null`; - if (value === undefined) - return `undefined`; - if (value === ``) - return `an empty string`; - return JSON.stringify(value); -} -function computeKey(state, key) { - var _a, _b, _c; - if (typeof key === `number`) { - return `${(_a = state === null || state === void 0 ? void 0 : state.p) !== null && _a !== void 0 ? _a : `.`}[${key}]`; - } - else if (simpleKeyRegExp.test(key)) { - return `${(_b = state === null || state === void 0 ? void 0 : state.p) !== null && _b !== void 0 ? _b : ``}.${key}`; - } - else { - return `${(_c = state === null || state === void 0 ? void 0 : state.p) !== null && _c !== void 0 ? _c : `.`}[${JSON.stringify(key)}]`; +class EnableCommand extends clipanion__WEBPACK_IMPORTED_MODULE_6__.Command { + constructor() { + super(...arguments); + this.installDirectory = clipanion__WEBPACK_IMPORTED_MODULE_6__.Option.String(`--install-directory`, { + description: `Where the shims are to be installed`, + }); + this.names = clipanion__WEBPACK_IMPORTED_MODULE_6__.Option.Rest(); } -} -function makeCoercionFn(target, key) { - return (v) => { - const previous = target[key]; - target[key] = v; - return makeCoercionFn(target, key).bind(null, previous); - }; -} -function makeSetter(target, key) { - return (v) => { - target[key] = v; - }; -} -function plural(n, singular, plural) { - return n === 1 ? singular : plural; -} -function pushError({ errors, p } = {}, message) { - errors === null || errors === void 0 ? void 0 : errors.push(`${p !== null && p !== void 0 ? p : `.`}: ${message}`); - return false; -} -const isUnknown = () => makeValidator({ - test: (value, state) => { - return true; - }, -}); -function isLiteral(expected) { - return makeValidator({ - test: (value, state) => { - if (value !== expected) - return pushError(state, `Expected a literal (got ${getPrintable(expected)})`); - return true; - }, - }); -} -const isString = () => makeValidator({ - test: (value, state) => { - if (typeof value !== `string`) - return pushError(state, `Expected a string (got ${getPrintable(value)})`); - return true; - }, -}); -function isEnum(enumSpec) { - const valuesArray = Array.isArray(enumSpec) ? enumSpec : Object.values(enumSpec); - const values = new Set(valuesArray); - return makeValidator({ - test: (value, state) => { - if (!values.has(value)) - return pushError(state, `Expected a valid enumeration value (got ${getPrintable(value)})`); - return true; - }, - }); -} -const BOOLEAN_COERCIONS = new Map([ - [`true`, true], - [`True`, true], - [`1`, true], - [1, true], - [`false`, false], - [`False`, false], - [`0`, false], - [0, false], -]); -const isBoolean = () => makeValidator({ - test: (value, state) => { - var _a; - if (typeof value !== `boolean`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - const coercion = BOOLEAN_COERCIONS.get(value); - if (typeof coercion !== `undefined`) { - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]); - return true; - } - } - return pushError(state, `Expected a boolean (got ${getPrintable(value)})`); - } - return true; - }, -}); -const isNumber = () => makeValidator({ - test: (value, state) => { - var _a; - if (typeof value !== `number`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - let coercion; - if (typeof value === `string`) { - let val; - try { - val = JSON.parse(value); - } - catch (_b) { } - // We check against JSON.stringify that the output is the same to ensure that the number can be safely represented in JS - if (typeof val === `number`) { - if (JSON.stringify(val) === value) { - coercion = val; - } - else { - return pushError(state, `Received a number that can't be safely represented by the runtime (${value})`); - } - } - } - if (typeof coercion !== `undefined`) { - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]); - return true; - } - } - return pushError(state, `Expected a number (got ${getPrintable(value)})`); - } - return true; - }, -}); -const isDate = () => makeValidator({ - test: (value, state) => { - var _a; - if (!(value instanceof Date)) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - let coercion; - if (typeof value === `string` && iso8601RegExp.test(value)) { - coercion = new Date(value); - } - else { - let timestamp; - if (typeof value === `string`) { - let val; - try { - val = JSON.parse(value); - } - catch (_b) { } - if (typeof val === `number`) { - timestamp = val; - } - } - else if (typeof value === `number`) { - timestamp = value; - } - if (typeof timestamp !== `undefined`) { - if (Number.isSafeInteger(timestamp) || !Number.isSafeInteger(timestamp * 1000)) { - coercion = new Date(timestamp * 1000); - } - else { - return pushError(state, `Received a timestamp that can't be safely represented by the runtime (${value})`); - } - } - } - if (typeof coercion !== `undefined`) { - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, coercion)]); - return true; - } - } - return pushError(state, `Expected a date (got ${getPrintable(value)})`); - } - return true; - }, -}); -const isArray = (spec, { delimiter } = {}) => makeValidator({ - test: (value, state) => { - var _a; - if (typeof value === `string` && typeof delimiter !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - value = value.split(delimiter); - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]); - } - } - if (!Array.isArray(value)) - return pushError(state, `Expected an array (got ${getPrintable(value)})`); - let valid = true; - for (let t = 0, T = value.length; t < T; ++t) { - valid = spec(value[t], Object.assign(Object.assign({}, state), { p: computeKey(state, t), coercion: makeCoercionFn(value, t) })) && valid; - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; - } - } - return valid; - }, -}); -const isTuple = (spec, { delimiter } = {}) => { - const lengthValidator = hasExactLength(spec.length); - return makeValidator({ - test: (value, state) => { - var _a; - if (typeof value === `string` && typeof delimiter !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - value = value.split(delimiter); - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, value)]); + async execute() { + let installDirectory = this.installDirectory; + // Node always call realpath on the module it executes, so we already + // lost track of how the binary got called. To find it back, we need to + // iterate over the PATH variable. + if (typeof installDirectory === `undefined`) + installDirectory = path__WEBPACK_IMPORTED_MODULE_2___default().dirname(await which__WEBPACK_IMPORTED_MODULE_3___default()(`corepack`)); + // Otherwise the relative symlink we'll compute will be incorrect, if the + // install directory is within a symlink + installDirectory = fs__WEBPACK_IMPORTED_MODULE_1___default().realpathSync(installDirectory); + // We use `eval` so that Webpack doesn't statically transform it. + const manifestPath = _nodeUtils__WEBPACK_IMPORTED_MODULE_4__.dynamicRequire.resolve(`corepack/package.json`); + const distFolder = path__WEBPACK_IMPORTED_MODULE_2___default().join(path__WEBPACK_IMPORTED_MODULE_2___default().dirname(manifestPath), `dist`); + if (!fs__WEBPACK_IMPORTED_MODULE_1___default().existsSync(distFolder)) + throw new Error(`Assertion failed: The stub folder doesn't exist`); + const names = this.names.length === 0 + ? _types__WEBPACK_IMPORTED_MODULE_5__.SupportedPackageManagerSetWithoutNpm + : this.names; + for (const name of new Set(names)) { + if (!(0,_types__WEBPACK_IMPORTED_MODULE_5__.isSupportedPackageManager)(name)) + throw new clipanion__WEBPACK_IMPORTED_MODULE_6__.UsageError(`Invalid package manager name '${name}'`); + for (const binName of this.context.engine.getBinariesFor(name)) { + if (process.platform === `win32`) { + await this.generateWin32Link(installDirectory, distFolder, binName); } - } - if (!Array.isArray(value)) - return pushError(state, `Expected a tuple (got ${getPrintable(value)})`); - let valid = lengthValidator(value, Object.assign({}, state)); - for (let t = 0, T = value.length; t < T && t < spec.length; ++t) { - valid = spec[t](value[t], Object.assign(Object.assign({}, state), { p: computeKey(state, t), coercion: makeCoercionFn(value, t) })) && valid; - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; + else { + await this.generatePosixLink(installDirectory, distFolder, binName); } } - return valid; - }, - }); -}; -const isDict = (spec, { keys: keySpec = null, } = {}) => makeValidator({ - test: (value, state) => { - if (typeof value !== `object` || value === null) - return pushError(state, `Expected an object (got ${getPrintable(value)})`); - const keys = Object.keys(value); - let valid = true; - for (let t = 0, T = keys.length; t < T && (valid || (state === null || state === void 0 ? void 0 : state.errors) != null); ++t) { - const key = keys[t]; - const sub = value[key]; - if (key === `__proto__` || key === `constructor`) { - valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Unsafe property name`); - continue; - } - if (keySpec !== null && !keySpec(key, state)) { - valid = false; - continue; + } + } + async generatePosixLink(installDirectory, distFolder, binName) { + const file = path__WEBPACK_IMPORTED_MODULE_2___default().join(installDirectory, binName); + const symlink = path__WEBPACK_IMPORTED_MODULE_2___default().relative(installDirectory, path__WEBPACK_IMPORTED_MODULE_2___default().join(distFolder, `${binName}.js`)); + if (fs__WEBPACK_IMPORTED_MODULE_1___default().existsSync(file)) { + const currentSymlink = await fs__WEBPACK_IMPORTED_MODULE_1___default().promises.readlink(file); + if (currentSymlink !== symlink) { + await fs__WEBPACK_IMPORTED_MODULE_1___default().promises.unlink(file); } - if (!spec(sub, Object.assign(Object.assign({}, state), { p: computeKey(state, key), coercion: makeCoercionFn(value, key) }))) { - valid = false; - continue; + else { + return; } } - return valid; - }, + await fs__WEBPACK_IMPORTED_MODULE_1___default().promises.symlink(symlink, file); + } + async generateWin32Link(installDirectory, distFolder, binName) { + const file = path__WEBPACK_IMPORTED_MODULE_2___default().join(installDirectory, binName); + await _zkochan_cmd_shim__WEBPACK_IMPORTED_MODULE_0___default()(path__WEBPACK_IMPORTED_MODULE_2___default().join(distFolder, `${binName}.js`), file, { + createCmdFile: true, + }); + } +} +EnableCommand.paths = [ + [`enable`], +]; +EnableCommand.usage = clipanion__WEBPACK_IMPORTED_MODULE_6__.Command.Usage({ + description: `Add the Corepack shims to the install directories`, + details: ` + When run, this commmand will check whether the shims for the specified package managers can be found with the correct values inside the install directory. If not, or if they don't exist, they will be created. + + By default it will locate the install directory by running the equivalent of \`which corepack\`, but this can be tweaked by explicitly passing the install directory via the \`--install-directory\` flag. + `, + examples: [[ + `Enable all shims, putting them next to the \`corepath\` binary`, + `$0 enable`, + ], [ + `Enable all shims, putting them in the specified directory`, + `$0 enable --install-directory /path/to/folder`, + ], [ + `Enable the Yarn shim only`, + `$0 enable yarn`, + ]], }); -const isObject = (props, { extra: extraSpec = null, } = {}) => { - const specKeys = Object.keys(props); - return makeValidator({ - test: (value, state) => { - if (typeof value !== `object` || value === null) - return pushError(state, `Expected an object (got ${getPrintable(value)})`); - const keys = new Set([...specKeys, ...Object.keys(value)]); - const extra = {}; - let valid = true; - for (const key of keys) { - if (key === `constructor` || key === `__proto__`) { - valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Unsafe property name`); + + +/***/ }), + +/***/ "./sources/commands/Hydrate.ts": +/*!*************************************!*\ + !*** ./sources/commands/Hydrate.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "HydrateCommand": () => (/* binding */ HydrateCommand) +/* harmony export */ }); +/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/index.js"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _folderUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../folderUtils */ "./sources/folderUtils.ts"); +/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../types */ "./sources/types.ts"); + + + + +class HydrateCommand extends clipanion__WEBPACK_IMPORTED_MODULE_3__.Command { + constructor() { + super(...arguments); + this.activate = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.Boolean(`--activate`, false, { + description: `If true, this release will become the default one for this package manager`, + }); + this.fileName = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.String(); + } + async execute() { + const installFolder = _folderUtils__WEBPACK_IMPORTED_MODULE_1__.getInstallFolder(); + const fileName = path__WEBPACK_IMPORTED_MODULE_0___default().resolve(this.context.cwd, this.fileName); + const archiveEntries = new Map(); + let hasShortEntries = false; + const { default: tar } = await Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! tar */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/index.js", 19)); + await tar.t({ file: fileName, onentry: entry => { + const segments = entry.header.path.split(/\//g); + if (segments.length < 3) { + hasShortEntries = true; } else { - const spec = Object.prototype.hasOwnProperty.call(props, key) - ? props[key] - : undefined; - const sub = Object.prototype.hasOwnProperty.call(value, key) - ? value[key] - : undefined; - if (typeof spec !== `undefined`) { - valid = spec(sub, Object.assign(Object.assign({}, state), { p: computeKey(state, key), coercion: makeCoercionFn(value, key) })) && valid; - } - else if (extraSpec === null) { - valid = pushError(Object.assign(Object.assign({}, state), { p: computeKey(state, key) }), `Extraneous property (got ${getPrintable(sub)})`); - } - else { - Object.defineProperty(extra, key, { - enumerable: true, - get: () => sub, - set: makeSetter(value, key) - }); - } + let references = archiveEntries.get(segments[0]); + if (typeof references === `undefined`) + archiveEntries.set(segments[0], references = new Set()); + references.add(segments[1]); } - if (!valid && (state === null || state === void 0 ? void 0 : state.errors) == null) { - break; + } }); + if (hasShortEntries || archiveEntries.size < 1) + throw new clipanion__WEBPACK_IMPORTED_MODULE_3__.UsageError(`Invalid archive format; did it get generated by 'corepack prepare'?`); + for (const [name, references] of archiveEntries) { + for (const reference of references) { + if (!(0,_types__WEBPACK_IMPORTED_MODULE_2__.isSupportedPackageManager)(name)) + throw new clipanion__WEBPACK_IMPORTED_MODULE_3__.UsageError(`Unsupported package manager '${name}'`); + if (this.activate) + this.context.stdout.write(`Hydrating ${name}@${reference} for immediate activation...\n`); + else + this.context.stdout.write(`Hydrating ${name}@${reference}...\n`); + await tar.x({ file: fileName, cwd: installFolder }, [`${name}/${reference}`]); + if (this.activate) { + await this.context.engine.activatePackageManager({ name, reference }); } } - if (extraSpec !== null && (valid || (state === null || state === void 0 ? void 0 : state.errors) != null)) - valid = extraSpec(extra, state) && valid; - return valid; - }, - }); -}; -const isInstanceOf = (constructor) => makeValidator({ - test: (value, state) => { - if (!(value instanceof constructor)) - return pushError(state, `Expected an instance of ${constructor.name} (got ${getPrintable(value)})`); - return true; - }, + } + this.context.stdout.write(`All done!\n`); + } +} +HydrateCommand.paths = [ + [`hydrate`], +]; +HydrateCommand.usage = clipanion__WEBPACK_IMPORTED_MODULE_3__.Command.Usage({ + description: `Import a package manager into the cache`, + details: ` + This command unpacks a package manager archive into the cache. The archive must have been generated by the \`corepack prepare\` command - no other will work. + `, + examples: [[ + `Import a package manager in the cache`, + `$0 hydrate corepack.tgz`, + ]], }); -const isOneOf = (specs, { exclusive = false, } = {}) => makeValidator({ - test: (value, state) => { - var _a, _b, _c; - const matches = []; - const errorBuffer = typeof (state === null || state === void 0 ? void 0 : state.errors) !== `undefined` - ? [] : undefined; - for (let t = 0, T = specs.length; t < T; ++t) { - const subErrors = typeof (state === null || state === void 0 ? void 0 : state.errors) !== `undefined` - ? [] : undefined; - const subCoercions = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined` - ? [] : undefined; - if (specs[t](value, Object.assign(Object.assign({}, state), { errors: subErrors, coercions: subCoercions, p: `${(_a = state === null || state === void 0 ? void 0 : state.p) !== null && _a !== void 0 ? _a : `.`}#${t + 1}` }))) { - matches.push([`#${t + 1}`, subCoercions]); - if (!exclusive) { - break; + + +/***/ }), + +/***/ "./sources/commands/Prepare.ts": +/*!*************************************!*\ + !*** ./sources/commands/Prepare.ts ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "PrepareCommand": () => (/* binding */ PrepareCommand) +/* harmony export */ }); +/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/index.js"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _folderUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../folderUtils */ "./sources/folderUtils.ts"); +/* harmony import */ var _specUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../specUtils */ "./sources/specUtils.ts"); + + + + +class PrepareCommand extends clipanion__WEBPACK_IMPORTED_MODULE_3__.Command { + constructor() { + super(...arguments); + this.activate = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.Boolean(`--activate`, false, { + description: `If true, this release will become the default one for this package manager`, + }); + this.all = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.Boolean(`--all`, false, { + description: `If true, all available default package managers will be installed`, + }); + this.json = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.Boolean(`--json`, false, { + description: `If true, the output will be the path of the generated tarball`, + }); + this.output = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.String(`-o,--output`, { + description: `If true, the installed package managers will also be stored in a tarball`, + tolerateBoolean: true, + }); + this.specs = clipanion__WEBPACK_IMPORTED_MODULE_3__.Option.Rest(); + } + async execute() { + if (this.all && this.specs.length > 0) + throw new clipanion__WEBPACK_IMPORTED_MODULE_3__.UsageError(`The --all option cannot be used along with an explicit package manager specification`); + const specs = this.all + ? await this.context.engine.getDefaultDescriptors() + : this.specs; + const installLocations = []; + if (specs.length === 0) { + const lookup = await _specUtils__WEBPACK_IMPORTED_MODULE_2__.loadSpec(this.context.cwd); + switch (lookup.type) { + case `NoProject`: + throw new clipanion__WEBPACK_IMPORTED_MODULE_3__.UsageError(`Couldn't find a project in the local directory - please explicit the package manager to pack, or run this command from a valid project`); + case `NoSpec`: + throw new clipanion__WEBPACK_IMPORTED_MODULE_3__.UsageError(`The local project doesn't feature a 'packageManager' field - please explicit the package manager to pack, or update the manifest to reference it`); + default: { + specs.push(lookup.spec); + } + } + } + for (const request of specs) { + const spec = typeof request === `string` + ? _specUtils__WEBPACK_IMPORTED_MODULE_2__.parseSpec(request, `CLI arguments`, { enforceExactVersion: false }) + : request; + const resolved = await this.context.engine.resolveDescriptor(spec, { allowTags: true }); + if (resolved === null) + throw new clipanion__WEBPACK_IMPORTED_MODULE_3__.UsageError(`Failed to successfully resolve '${spec.range}' to a valid ${spec.name} release`); + if (!this.json) { + if (this.activate) { + this.context.stdout.write(`Preparing ${spec.name}@${spec.range} for immediate activation...\n`); + } + else { + this.context.stdout.write(`Preparing ${spec.name}@${spec.range}...\n`); } } - else { - errorBuffer === null || errorBuffer === void 0 ? void 0 : errorBuffer.push(subErrors[0]); + const installSpec = await this.context.engine.ensurePackageManager(resolved); + installLocations.push(installSpec.location); + if (this.activate) { + await this.context.engine.activatePackageManager(resolved); } } - if (matches.length === 1) { - const [, subCoercions] = matches[0]; - if (typeof subCoercions !== `undefined`) - (_b = state === null || state === void 0 ? void 0 : state.coercions) === null || _b === void 0 ? void 0 : _b.push(...subCoercions); - return true; + if (this.output) { + const outputName = typeof this.output === `string` + ? this.output + : `corepack.tgz`; + const baseInstallFolder = _folderUtils__WEBPACK_IMPORTED_MODULE_1__.getInstallFolder(); + const outputPath = path__WEBPACK_IMPORTED_MODULE_0___default().resolve(this.context.cwd, outputName); + if (!this.json) + this.context.stdout.write(`Packing the selected tools in ${path__WEBPACK_IMPORTED_MODULE_0___default().basename(outputPath)}...\n`); + const { default: tar } = await Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! tar */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/index.js", 19)); + await tar.c({ gzip: true, cwd: baseInstallFolder, file: path__WEBPACK_IMPORTED_MODULE_0___default().resolve(outputPath) }, installLocations.map(location => { + return path__WEBPACK_IMPORTED_MODULE_0___default().relative(baseInstallFolder, location); + })); + if (this.json) { + this.context.stdout.write(`${JSON.stringify(outputPath)}\n`); + } + else { + this.context.stdout.write(`All done!\n`); + } } - if (matches.length > 1) - pushError(state, `Expected to match exactly a single predicate (matched ${matches.join(`, `)})`); - else - (_c = state === null || state === void 0 ? void 0 : state.errors) === null || _c === void 0 ? void 0 : _c.push(...errorBuffer); - return false; - }, + } +} +PrepareCommand.paths = [ + [`prepare`], +]; +PrepareCommand.usage = clipanion__WEBPACK_IMPORTED_MODULE_3__.Command.Usage({ + description: `Generate a package manager archive`, + details: ` + This command makes sure that the specified package managers are installed in the local cache. Calling this command explicitly unless you operate in an environment without network access (in which case you'd have to call \`prepare\` while building your image, to make sure all tools are available for later use). + + When the \`-o,--output\` flag is set, Corepack will also compress the resulting package manager into a format suitable for \`corepack hydrate\`, and will store it at the specified location on the disk. + `, + examples: [[ + `Prepare the package manager from the active project`, + `$0 prepare`, + ], [ + `Prepare a specific Yarn version`, + `$0 prepare yarn@2.2.2`, + ], [ + `Prepare the latest available pnpm version`, + `$0 prepare pnpm@latest --activate`, + ], [ + `Generate an archive for a specific Yarn version`, + `$0 prepare yarn@2.2.2 -o`, + ], [ + `Generate a named archive`, + `$0 prepare yarn@2.2.2 --output=yarn.tgz`, + ]], }); -const applyCascade = (spec, followups) => makeValidator({ - test: (value, state) => { - var _a, _b; - const context = { value: value }; - const subCoercion = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined` - ? makeCoercionFn(context, `value`) : undefined; - const subCoercions = typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined` - ? [] : undefined; - if (!spec(value, Object.assign(Object.assign({}, state), { coercion: subCoercion, coercions: subCoercions }))) - return false; - const reverts = []; - if (typeof subCoercions !== `undefined`) - for (const [, coercion] of subCoercions) - reverts.push(coercion()); + + +/***/ }), + +/***/ "./sources/corepackUtils.ts": +/*!**********************************!*\ + !*** ./sources/corepackUtils.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "fetchAvailableTags": () => (/* binding */ fetchAvailableTags), +/* harmony export */ "fetchAvailableVersions": () => (/* binding */ fetchAvailableVersions), +/* harmony export */ "findInstalledVersion": () => (/* binding */ findInstalledVersion), +/* harmony export */ "installVersion": () => (/* binding */ installVersion), +/* harmony export */ "runVersion": () => (/* binding */ runVersion) +/* harmony export */ }); +/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! crypto */ "crypto"); +/* harmony import */ var crypto__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(crypto__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! events */ "events"); +/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/index.js"); +/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(semver__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _debugUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./debugUtils */ "./sources/debugUtils.ts"); +/* harmony import */ var _folderUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./folderUtils */ "./sources/folderUtils.ts"); +/* harmony import */ var _fsUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./fsUtils */ "./sources/fsUtils.ts"); +/* harmony import */ var _httpUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./httpUtils */ "./sources/httpUtils.ts"); +/* harmony import */ var _nodeUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./nodeUtils */ "./sources/nodeUtils.ts"); +var __asyncValues = (undefined && undefined.__asyncValues) || function (o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +}; + + + + + + + + + + +async function fetchAvailableTags(spec) { + switch (spec.type) { + case `npm`: { + const data = await _httpUtils__WEBPACK_IMPORTED_MODULE_8__.fetchAsJson(`https://registry.npmjs.org/${spec.package}`, { headers: { [`Accept`]: `application/vnd.npm.install-v1+json` } }); + return data[`dist-tags`]; + } + case `url`: { + const data = await _httpUtils__WEBPACK_IMPORTED_MODULE_8__.fetchAsJson(spec.url); + return data[spec.fields.tags]; + } + default: { + throw new Error(`Unsupported specification ${JSON.stringify(spec)}`); + } + } +} +async function fetchAvailableVersions(spec) { + switch (spec.type) { + case `npm`: { + const data = await _httpUtils__WEBPACK_IMPORTED_MODULE_8__.fetchAsJson(`https://registry.npmjs.org/${spec.package}`, { headers: { [`Accept`]: `application/vnd.npm.install-v1+json` } }); + return Object.keys(data.versions); + } + case `url`: { + const data = await _httpUtils__WEBPACK_IMPORTED_MODULE_8__.fetchAsJson(spec.url); + const field = data[spec.fields.versions]; + return Array.isArray(field) ? field : Object.keys(field); + } + default: { + throw new Error(`Unsupported specification ${JSON.stringify(spec)}`); + } + } +} +async function findInstalledVersion(installTarget, descriptor) { + var e_1, _a; + const installFolder = path__WEBPACK_IMPORTED_MODULE_3___default().join(installTarget, descriptor.name); + let cacheDirectory; + try { + cacheDirectory = await fs__WEBPACK_IMPORTED_MODULE_2___default().promises.opendir(installFolder); + } + catch (error) { + if (error.code === `ENOENT`) { + return null; + } + else { + throw error; + } + } + const range = new (semver__WEBPACK_IMPORTED_MODULE_4___default().Range)(descriptor.range); + let bestMatch = null; + let maxSV = undefined; + try { + for (var cacheDirectory_1 = __asyncValues(cacheDirectory), cacheDirectory_1_1; cacheDirectory_1_1 = await cacheDirectory_1.next(), !cacheDirectory_1_1.done;) { + const { name } = cacheDirectory_1_1.value; + // Some dot-folders tend to pop inside directories, especially on OSX + if (name.startsWith(`.`)) + continue; + // If the dirname correspond to an in-range version and is not lower than + // the previous best match (or if there is not yet a previous best match), + // it's our new best match. + if (range.test(name) && (maxSV === null || maxSV === void 0 ? void 0 : maxSV.compare(name)) !== 1) { + bestMatch = name; + maxSV = new (semver__WEBPACK_IMPORTED_MODULE_4___default().SemVer)(bestMatch); + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { try { - if (typeof (state === null || state === void 0 ? void 0 : state.coercions) !== `undefined`) { - if (context.value !== value) { - if (typeof (state === null || state === void 0 ? void 0 : state.coercion) === `undefined`) - return pushError(state, `Unbound coercion result`); - state.coercions.push([(_a = state.p) !== null && _a !== void 0 ? _a : `.`, state.coercion.bind(null, context.value)]); - } - (_b = state === null || state === void 0 ? void 0 : state.coercions) === null || _b === void 0 ? void 0 : _b.push(...subCoercions); + if (cacheDirectory_1_1 && !cacheDirectory_1_1.done && (_a = cacheDirectory_1.return)) await _a.call(cacheDirectory_1); + } + finally { if (e_1) throw e_1.error; } + } + return bestMatch; +} +async function installVersion(installTarget, locator, { spec }) { + const { default: tar } = await Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! tar */ "../../../.yarn/berry/cache/tar-npm-6.1.11-e6ac3cba9c-9.zip/node_modules/tar/index.js", 19)); + const { version, build } = semver__WEBPACK_IMPORTED_MODULE_4___default().parse(locator.reference); + const installFolder = path__WEBPACK_IMPORTED_MODULE_3___default().join(installTarget, locator.name, version); + if (fs__WEBPACK_IMPORTED_MODULE_2___default().existsSync(installFolder)) { + _debugUtils__WEBPACK_IMPORTED_MODULE_5__.log(`Reusing ${locator.name}@${locator.reference}`); + return installFolder; + } + const url = spec.url.replace(`{}`, version); + // Creating a temporary folder inside the install folder means that we + // are sure it'll be in the same drive as the destination, so we can + // just move it there atomically once we are done + const tmpFolder = _folderUtils__WEBPACK_IMPORTED_MODULE_6__.getTemporaryFolder(installTarget); + _debugUtils__WEBPACK_IMPORTED_MODULE_5__.log(`Installing ${locator.name}@${version} from ${url} to ${tmpFolder}`); + const stream = await _httpUtils__WEBPACK_IMPORTED_MODULE_8__.fetchUrlStream(url); + const parsedUrl = new URL(url); + const ext = path__WEBPACK_IMPORTED_MODULE_3___default().posix.extname(parsedUrl.pathname); + let outputFile = null; + let sendTo; + if (ext === `.tgz`) { + sendTo = tar.x({ strip: 1, cwd: tmpFolder }); + } + else if (ext === `.js`) { + outputFile = path__WEBPACK_IMPORTED_MODULE_3___default().join(tmpFolder, path__WEBPACK_IMPORTED_MODULE_3___default().posix.basename(parsedUrl.pathname)); + sendTo = fs__WEBPACK_IMPORTED_MODULE_2___default().createWriteStream(outputFile); + } + stream.pipe(sendTo); + const hash = build[0] + ? stream.pipe((0,crypto__WEBPACK_IMPORTED_MODULE_0__.createHash)(build[0])) + : null; + await (0,events__WEBPACK_IMPORTED_MODULE_1__.once)(sendTo, `finish`); + const actualHash = hash === null || hash === void 0 ? void 0 : hash.digest(`hex`); + if (actualHash !== build[1]) + throw new Error(`Mismatch hashes. Expected ${build[1]}, got ${actualHash}`); + await fs__WEBPACK_IMPORTED_MODULE_2___default().promises.mkdir(path__WEBPACK_IMPORTED_MODULE_3___default().dirname(installFolder), { recursive: true }); + try { + await fs__WEBPACK_IMPORTED_MODULE_2___default().promises.rename(tmpFolder, installFolder); + } + catch (err) { + if (err.code === `ENOTEMPTY` || + // On Windows the error code is EPERM so we check if it is a directory + (err.code === `EPERM` && (await fs__WEBPACK_IMPORTED_MODULE_2___default().promises.stat(installFolder)).isDirectory())) { + _debugUtils__WEBPACK_IMPORTED_MODULE_5__.log(`Another instance of corepack installed ${locator.name}@${locator.reference}`); + await _fsUtils__WEBPACK_IMPORTED_MODULE_7__.rimraf(tmpFolder); + } + else { + throw err; + } + } + _debugUtils__WEBPACK_IMPORTED_MODULE_5__.log(`Install finished`); + return installFolder; +} +/** + * Loads the binary, taking control of the current process. + */ +async function runVersion(installSpec, binName, args) { + let binPath = null; + if (Array.isArray(installSpec.spec.bin)) { + if (installSpec.spec.bin.some(bin => bin === binName)) { + const parsedUrl = new URL(installSpec.spec.url); + const ext = path__WEBPACK_IMPORTED_MODULE_3___default().posix.extname(parsedUrl.pathname); + if (ext === `.js`) { + binPath = path__WEBPACK_IMPORTED_MODULE_3___default().join(installSpec.location, path__WEBPACK_IMPORTED_MODULE_3___default().posix.basename(parsedUrl.pathname)); } - return followups.every(spec => { - return spec(context.value, state); - }); } - finally { - for (const revert of reverts) { - revert(); + } + else { + for (const [name, dest] of Object.entries(installSpec.spec.bin)) { + if (name === binName) { + binPath = path__WEBPACK_IMPORTED_MODULE_3___default().join(installSpec.location, dest); + break; } } - }, -}); -const isOptional = (spec) => makeValidator({ - test: (value, state) => { - if (typeof value === `undefined`) - return true; - return spec(value, state); - }, -}); -const isNullable = (spec) => makeValidator({ - test: (value, state) => { - if (value === null) - return true; - return spec(value, state); - }, -}); -const hasMinLength = (length) => makeValidator({ - test: (value, state) => { - if (!(value.length >= length)) - return pushError(state, `Expected to have a length of at least ${length} elements (got ${value.length})`); - return true; - }, -}); -const hasMaxLength = (length) => makeValidator({ - test: (value, state) => { - if (!(value.length <= length)) - return pushError(state, `Expected to have a length of at most ${length} elements (got ${value.length})`); - return true; - }, -}); -const hasExactLength = (length) => makeValidator({ - test: (value, state) => { - if (!(value.length === length)) - return pushError(state, `Expected to have a length of exactly ${length} elements (got ${value.length})`); - return true; - }, -}); -const hasUniqueItems = ({ map, } = {}) => makeValidator({ - test: (value, state) => { - const set = new Set(); - const dup = new Set(); - for (let t = 0, T = value.length; t < T; ++t) { - const sub = value[t]; - const key = typeof map !== `undefined` - ? map(sub) - : sub; - if (set.has(key)) { - if (dup.has(key)) - continue; - pushError(state, `Expected to contain unique elements; got a duplicate with ${getPrintable(value)}`); - dup.add(key); + } + if (!binPath) + throw new Error(`Assertion failed: Unable to locate path for bin '${binName}'`); + _nodeUtils__WEBPACK_IMPORTED_MODULE_9__.registerV8CompileCache(); + // We load the binary into the current process, + // while making it think it was spawned. + // Non-exhaustive list of requirements: + // - Yarn uses process.argv[1] to determine its own path: https://github.com/yarnpkg/berry/blob/0da258120fc266b06f42aed67e4227e81a2a900f/packages/yarnpkg-cli/sources/main.ts#L80 + // - pnpm uses `require.main == null` to determine its own version: https://github.com/pnpm/pnpm/blob/e2866dee92991e979b2b0e960ddf5a74f6845d90/packages/cli-meta/src/index.ts#L14 + process.env.COREPACK_ROOT = path__WEBPACK_IMPORTED_MODULE_3___default().dirname(eval(`__dirname`)); + process.argv = [ + process.execPath, + binPath, + ...args, + ]; + process.execArgv = []; + return _nodeUtils__WEBPACK_IMPORTED_MODULE_9__.loadMainModule(binPath); +} + + +/***/ }), + +/***/ "./sources/debugUtils.ts": +/*!*******************************!*\ + !*** ./sources/debugUtils.ts ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "log": () => (/* binding */ log) +/* harmony export */ }); +/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "./.yarn/__virtual__/debug-virtual-80c19f725b/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/index.js"); +/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__); + +const log = debug__WEBPACK_IMPORTED_MODULE_0___default()(`corepack`); + + +/***/ }), + +/***/ "./sources/folderUtils.ts": +/*!********************************!*\ + !*** ./sources/folderUtils.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "getInstallFolder": () => (/* binding */ getInstallFolder), +/* harmony export */ "getTemporaryFolder": () => (/* binding */ getTemporaryFolder) +/* harmony export */ }); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! os */ "os"); +/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(os__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); + + + +function getInstallFolder() { + var _a; + return (_a = process.env.COREPACK_HOME) !== null && _a !== void 0 ? _a : (0,path__WEBPACK_IMPORTED_MODULE_2__.join)((0,os__WEBPACK_IMPORTED_MODULE_1__.homedir)(), `.node/corepack`); +} +function getTemporaryFolder(target = (0,os__WEBPACK_IMPORTED_MODULE_1__.tmpdir)()) { + (0,fs__WEBPACK_IMPORTED_MODULE_0__.mkdirSync)(target, { recursive: true }); + while (true) { + const rnd = Math.random() * 0x100000000; + const hex = rnd.toString(16).padStart(8, `0`); + const path = (0,path__WEBPACK_IMPORTED_MODULE_2__.join)(target, `corepack-${process.pid}-${hex}`); + try { + (0,fs__WEBPACK_IMPORTED_MODULE_0__.mkdirSync)(path); + return path; + } + catch (error) { + if (error.code === `EEXIST`) { + continue; } else { - set.add(key); + throw error; } } - return dup.size === 0; - }, -}); -const isNegative = () => makeValidator({ - test: (value, state) => { - if (!(value <= 0)) - return pushError(state, `Expected to be negative (got ${value})`); - return true; - }, -}); -const isPositive = () => makeValidator({ - test: (value, state) => { - if (!(value >= 0)) - return pushError(state, `Expected to be positive (got ${value})`); - return true; - }, -}); -const isAtLeast = (n) => makeValidator({ - test: (value, state) => { - if (!(value >= n)) - return pushError(state, `Expected to be at least ${n} (got ${value})`); - return true; - }, -}); -const isAtMost = (n) => makeValidator({ - test: (value, state) => { - if (!(value <= n)) - return pushError(state, `Expected to be at most ${n} (got ${value})`); - return true; - }, -}); -const isInInclusiveRange = (a, b) => makeValidator({ - test: (value, state) => { - if (!(value >= a && value <= b)) - return pushError(state, `Expected to be in the [${a}; ${b}] range (got ${value})`); - return true; - }, -}); -const isInExclusiveRange = (a, b) => makeValidator({ - test: (value, state) => { - if (!(value >= a && value < b)) - return pushError(state, `Expected to be in the [${a}; ${b}[ range (got ${value})`); - return true; - }, -}); -const isInteger = ({ unsafe = false, } = {}) => makeValidator({ - test: (value, state) => { - if (value !== Math.round(value)) - return pushError(state, `Expected to be an integer (got ${value})`); - if (!Number.isSafeInteger(value)) - return pushError(state, `Expected to be a safe integer (got ${value})`); - return true; - }, -}); -const matchesRegExp = (regExp) => makeValidator({ - test: (value, state) => { - if (!regExp.test(value)) - return pushError(state, `Expected to match the pattern ${regExp.toString()} (got ${getPrintable(value)})`); - return true; - }, -}); -const isLowerCase = () => makeValidator({ - test: (value, state) => { - if (value !== value.toLowerCase()) - return pushError(state, `Expected to be all-lowercase (got ${value})`); - return true; - }, -}); -const isUpperCase = () => makeValidator({ - test: (value, state) => { - if (value !== value.toUpperCase()) - return pushError(state, `Expected to be all-uppercase (got ${value})`); - return true; - }, -}); -const isUUID4 = () => makeValidator({ - test: (value, state) => { - if (!uuid4RegExp.test(value)) - return pushError(state, `Expected to be a valid UUID v4 (got ${getPrintable(value)})`); - return true; - }, -}); -const isISO8601 = () => makeValidator({ - test: (value, state) => { - if (!iso8601RegExp.test(value)) - return pushError(state, `Expected to be a valid ISO 8601 date string (got ${getPrintable(value)})`); - return false; - }, -}); -const isHexColor = ({ alpha = false, }) => makeValidator({ - test: (value, state) => { - const res = alpha - ? colorStringRegExp.test(value) - : colorStringAlphaRegExp.test(value); - if (!res) - return pushError(state, `Expected to be a valid hexadecimal color string (got ${getPrintable(value)})`); - return true; - }, -}); -const isBase64 = () => makeValidator({ - test: (value, state) => { - if (!base64RegExp.test(value)) - return pushError(state, `Expected to be a valid base 64 string (got ${getPrintable(value)})`); - return true; - }, -}); -const isJSON = (spec = isUnknown()) => makeValidator({ - test: (value, state) => { - let data; - try { - data = JSON.parse(value); - } - catch (_a) { - return pushError(state, `Expected to be a valid JSON string (got ${getPrintable(value)})`); - } - return spec(data, state); - }, -}); -const hasRequiredKeys = (requiredKeys) => { - const requiredSet = new Set(requiredKeys); - return makeValidator({ - test: (value, state) => { - const keys = new Set(Object.keys(value)); - const problems = []; - for (const key of requiredSet) - if (!keys.has(key)) - problems.push(key); - if (problems.length > 0) - return pushError(state, `Missing required ${plural(problems.length, `property`, `properties`)} ${problems.map(name => `"${name}"`).join(`, `)}`); - return true; - }, - }); -}; -const hasForbiddenKeys = (forbiddenKeys) => { - const forbiddenSet = new Set(forbiddenKeys); - return makeValidator({ - test: (value, state) => { - const keys = new Set(Object.keys(value)); - const problems = []; - for (const key of forbiddenSet) - if (keys.has(key)) - problems.push(key); - if (problems.length > 0) - return pushError(state, `Forbidden ${plural(problems.length, `property`, `properties`)} ${problems.map(name => `"${name}"`).join(`, `)}`); - return true; - }, - }); -}; -const hasMutuallyExclusiveKeys = (exclusiveKeys) => { - const exclusiveSet = new Set(exclusiveKeys); - return makeValidator({ - test: (value, state) => { - const keys = new Set(Object.keys(value)); - const used = []; - for (const key of exclusiveSet) - if (keys.has(key)) - used.push(key); - if (used.length > 1) - return pushError(state, `Mutually exclusive properties ${used.map(name => `"${name}"`).join(`, `)}`); - return true; - }, + } +} + + +/***/ }), + +/***/ "./sources/fsUtils.ts": +/*!****************************!*\ + !*** ./sources/fsUtils.ts ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "rimraf": () => (/* binding */ rimraf) +/* harmony export */ }); +/* harmony import */ var fs_promises__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs/promises */ "fs/promises"); +/* harmony import */ var fs_promises__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs_promises__WEBPACK_IMPORTED_MODULE_0__); + +async function rimraf(path) { + return (0,fs_promises__WEBPACK_IMPORTED_MODULE_0__.rm)(path, { recursive: true, force: true }); +} + + +/***/ }), + +/***/ "./sources/httpUtils.ts": +/*!******************************!*\ + !*** ./sources/httpUtils.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "fetchAsBuffer": () => (/* binding */ fetchAsBuffer), +/* harmony export */ "fetchAsJson": () => (/* binding */ fetchAsJson), +/* harmony export */ "fetchUrlStream": () => (/* binding */ fetchUrlStream) +/* harmony export */ }); +/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/index.js"); + +async function fetchUrlStream(url, options = {}) { + if (process.env.COREPACK_ENABLE_NETWORK === `0`) + throw new clipanion__WEBPACK_IMPORTED_MODULE_0__.UsageError(`Network access disabled by the environment; can't reach ${url}`); + const { default: https } = await Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(__webpack_require__, /*! https */ "https", 23)); + const { default: ProxyAgent } = await __webpack_require__.e(/*! import() */ "vendors-_yarn_berry_cache_proxy-agent-npm-5_0_0-41772f4b01-9_zip_node_modules_proxy-agent_index_js").then(__webpack_require__.t.bind(__webpack_require__, /*! proxy-agent */ "../../../.yarn/berry/cache/proxy-agent-npm-5.0.0-41772f4b01-9.zip/node_modules/proxy-agent/index.js", 23)); + const proxyAgent = new ProxyAgent(); + return new Promise((resolve, reject) => { + const request = https.get(url, Object.assign(Object.assign({}, options), { agent: proxyAgent }), response => { + var _a; + const statusCode = (_a = response.statusCode) !== null && _a !== void 0 ? _a : 500; + if (!(statusCode >= 200 && statusCode < 300)) + return reject(new Error(`Server answered with HTTP ${statusCode}`)); + return resolve(response); + }); + request.on(`error`, err => { + reject(new Error(`Error when performing the request`)); + }); }); -}; -(function (KeyRelationship) { - KeyRelationship["Forbids"] = "Forbids"; - KeyRelationship["Requires"] = "Requires"; -})(exports.KeyRelationship || (exports.KeyRelationship = {})); -const keyRelationships = { - [exports.KeyRelationship.Forbids]: { - expect: false, - message: `forbids using`, - }, - [exports.KeyRelationship.Requires]: { - expect: true, - message: `requires using`, - }, -}; -const hasKeyRelationship = (subject, relationship, others, { ignore = [], } = {}) => { - const skipped = new Set(ignore); - const otherSet = new Set(others); - const spec = keyRelationships[relationship]; - return makeValidator({ - test: (value, state) => { - const keys = new Set(Object.keys(value)); - if (!keys.has(subject) || skipped.has(value[subject])) - return true; - const problems = []; - for (const key of otherSet) - if ((keys.has(key) && !skipped.has(value[key])) !== spec.expect) - problems.push(key); - if (problems.length >= 1) - return pushError(state, `Property "${subject}" ${spec.message} ${plural(problems.length, `property`, `properties`)} ${problems.map(name => `"${name}"`).join(`, `)}`); - return true; - }, +} +async function fetchAsBuffer(url, options) { + const response = await fetchUrlStream(url, options); + return new Promise((resolve, reject) => { + const chunks = []; + response.on(`data`, chunk => { + chunks.push(chunk); + }); + response.on(`error`, error => { + reject(error); + }); + response.on(`end`, () => { + resolve(Buffer.concat(chunks)); + }); }); -}; - -exports.applyCascade = applyCascade; -exports.base64RegExp = base64RegExp; -exports.colorStringAlphaRegExp = colorStringAlphaRegExp; -exports.colorStringRegExp = colorStringRegExp; -exports.computeKey = computeKey; -exports.getPrintable = getPrintable; -exports.hasExactLength = hasExactLength; -exports.hasForbiddenKeys = hasForbiddenKeys; -exports.hasKeyRelationship = hasKeyRelationship; -exports.hasMaxLength = hasMaxLength; -exports.hasMinLength = hasMinLength; -exports.hasMutuallyExclusiveKeys = hasMutuallyExclusiveKeys; -exports.hasRequiredKeys = hasRequiredKeys; -exports.hasUniqueItems = hasUniqueItems; -exports.isArray = isArray; -exports.isAtLeast = isAtLeast; -exports.isAtMost = isAtMost; -exports.isBase64 = isBase64; -exports.isBoolean = isBoolean; -exports.isDate = isDate; -exports.isDict = isDict; -exports.isEnum = isEnum; -exports.isHexColor = isHexColor; -exports.isISO8601 = isISO8601; -exports.isInExclusiveRange = isInExclusiveRange; -exports.isInInclusiveRange = isInInclusiveRange; -exports.isInstanceOf = isInstanceOf; -exports.isInteger = isInteger; -exports.isJSON = isJSON; -exports.isLiteral = isLiteral; -exports.isLowerCase = isLowerCase; -exports.isNegative = isNegative; -exports.isNullable = isNullable; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isOneOf = isOneOf; -exports.isOptional = isOptional; -exports.isPositive = isPositive; -exports.isString = isString; -exports.isTuple = isTuple; -exports.isUUID4 = isUUID4; -exports.isUnknown = isUnknown; -exports.isUpperCase = isUpperCase; -exports.iso8601RegExp = iso8601RegExp; -exports.makeCoercionFn = makeCoercionFn; -exports.makeSetter = makeSetter; -exports.makeTrait = makeTrait; -exports.makeValidator = makeValidator; -exports.matchesRegExp = matchesRegExp; -exports.plural = plural; -exports.pushError = pushError; -exports.simpleKeyRegExp = simpleKeyRegExp; -exports.uuid4RegExp = uuid4RegExp; +} +async function fetchAsJson(url, options) { + const buffer = await fetchAsBuffer(url, options); + const asText = buffer.toString(); + try { + return JSON.parse(asText); + } + catch (error) { + const truncated = asText.length > 30 + ? `${asText.slice(0, 30)}...` + : asText; + throw new Error(`Couldn't parse JSON data: ${JSON.stringify(truncated)}`); + } +} /***/ }), -/***/ "./.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip/node_modules/which/which.js": -/*!*******************************************************************************************!*\ - !*** ./.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip/node_modules/which/which.js ***! - \*******************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -const isWindows = process.platform === 'win32' || - process.env.OSTYPE === 'cygwin' || - process.env.OSTYPE === 'msys' - -const path = __webpack_require__(/*! path */ "path") -const COLON = isWindows ? ';' : ':' -const isexe = __webpack_require__(/*! isexe */ "./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/index.js") - -const getNotFoundError = (cmd) => - Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' }) - -const getPathInfo = (cmd, opt) => { - const colon = opt.colon || COLON - - // If it has a slash, then we don't bother searching the pathenv. - // just check the file itself, and that's it. - const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? [''] - : ( - [ - // windows always checks the cwd first - ...(isWindows ? [process.cwd()] : []), - ...(opt.path || process.env.PATH || - /* istanbul ignore next: very unusual */ '').split(colon), - ] - ) - const pathExtExe = isWindows - ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM' - : '' - const pathExt = isWindows ? pathExtExe.split(colon) : [''] +/***/ "./sources/main.ts": +/*!*************************!*\ + !*** ./sources/main.ts ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - if (isWindows) { - if (cmd.indexOf('.') !== -1 && pathExt[0] !== '') - pathExt.unshift('') - } +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "runMain": () => (/* binding */ runMain) +/* harmony export */ }); +/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/index.js"); +/* harmony import */ var _Engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Engine */ "./sources/Engine.ts"); +/* harmony import */ var _commands_Disable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./commands/Disable */ "./sources/commands/Disable.ts"); +/* harmony import */ var _commands_Enable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./commands/Enable */ "./sources/commands/Enable.ts"); +/* harmony import */ var _commands_Hydrate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./commands/Hydrate */ "./sources/commands/Hydrate.ts"); +/* harmony import */ var _commands_Prepare__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./commands/Prepare */ "./sources/commands/Prepare.ts"); +/* harmony import */ var _corepackUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./corepackUtils */ "./sources/corepackUtils.ts"); +/* harmony import */ var _miscUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./miscUtils */ "./sources/miscUtils.ts"); +/* harmony import */ var _specUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./specUtils */ "./sources/specUtils.ts"); - return { - pathEnv, - pathExt, - pathExtExe, - } -} -const which = (cmd, opt, cb) => { - if (typeof opt === 'function') { - cb = opt - opt = {} - } - if (!opt) - opt = {} - const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt) - const found = [] - const step = i => new Promise((resolve, reject) => { - if (i === pathEnv.length) - return opt.all && found.length ? resolve(found) - : reject(getNotFoundError(cmd)) - const ppRaw = pathEnv[i] - const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw - const pCmd = path.join(pathPart, cmd) - const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd - : pCmd - resolve(subStep(p, i, 0)) - }) - const subStep = (p, i, ii) => new Promise((resolve, reject) => { - if (ii === pathExt.length) - return resolve(step(i + 1)) - const ext = pathExt[ii] - isexe(p + ext, { pathExt: pathExtExe }, (er, is) => { - if (!er && is) { - if (opt.all) - found.push(p + ext) - else - return resolve(p + ext) - } - return resolve(subStep(p, i, ii + 1)) - }) - }) - return cb ? step(0).then(res => cb(null, res), cb) : step(0) +function getPackageManagerRequestFromCli(parameter, context) { + if (!parameter) + return null; + const match = parameter.match(/^([^@]*)(?:@(.*))?$/); + if (!match) + return null; + const [, binaryName, binaryVersion] = match; + const packageManager = context.engine.getPackageManagerFor(binaryName); + if (!packageManager) + return null; + return { + packageManager, + binaryName, + binaryVersion: binaryVersion || null, + }; } - -const whichSync = (cmd, opt) => { - opt = opt || {} - - const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt) - const found = [] - - for (let i = 0; i < pathEnv.length; i ++) { - const ppRaw = pathEnv[i] - const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw - - const pCmd = path.join(pathPart, cmd) - const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd - : pCmd - - for (let j = 0; j < pathExt.length; j ++) { - const cur = p + pathExt[j] - try { - const is = isexe.sync(cur, { pathExt: pathExtExe }) - if (is) { - if (opt.all) - found.push(cur) - else - return cur +async function executePackageManagerRequest({ packageManager, binaryName, binaryVersion }, args, context) { + var _a; + const defaultVersion = await context.engine.getDefaultVersion(packageManager); + const definition = context.engine.config.definitions[packageManager]; + // If all leading segments match one of the patterns defined in the `transparent` + // key, we tolerate calling this binary even if the local project isn't explicitly + // configured for it, and we use the special default version if requested. + let isTransparentCommand = false; + for (const transparentPath of definition.transparent.commands) { + if (transparentPath[0] === binaryName && transparentPath.slice(1).every((segment, index) => segment === args[index])) { + isTransparentCommand = true; + break; } - } catch (ex) {} } - } + const fallbackReference = isTransparentCommand + ? (_a = definition.transparent.default) !== null && _a !== void 0 ? _a : defaultVersion + : defaultVersion; + const fallbackLocator = { + name: packageManager, + reference: fallbackReference, + }; + let descriptor; + try { + descriptor = await _specUtils__WEBPACK_IMPORTED_MODULE_7__.findProjectSpec(context.cwd, fallbackLocator, { transparent: isTransparentCommand }); + } + catch (err) { + if (err instanceof _miscUtils__WEBPACK_IMPORTED_MODULE_6__.Cancellation) { + return 1; + } + else { + throw err; + } + } + if (binaryVersion) + descriptor.range = binaryVersion; + const resolved = await context.engine.resolveDescriptor(descriptor, { allowTags: true }); + if (resolved === null) + throw new clipanion__WEBPACK_IMPORTED_MODULE_8__.UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`); + const installSpec = await context.engine.ensurePackageManager(resolved); + return await _corepackUtils__WEBPACK_IMPORTED_MODULE_5__.runVersion(installSpec, binaryName, args); +} +async function main(argv) { + const corepackVersion = (__webpack_require__(/*! ../package.json */ "./package.json").version); + // Because we load the binaries in the same process, we don't support custom contexts. + const context = Object.assign(Object.assign({}, clipanion__WEBPACK_IMPORTED_MODULE_8__.Cli.defaultContext), { cwd: process.cwd(), engine: new _Engine__WEBPACK_IMPORTED_MODULE_0__.Engine() }); + const [firstArg, ...restArgs] = argv; + const request = getPackageManagerRequestFromCli(firstArg, context); + let cli; + if (!request) { + // If the first argument doesn't match any supported package manager, we fallback to the standard Corepack CLI + cli = new clipanion__WEBPACK_IMPORTED_MODULE_8__.Cli({ + binaryLabel: `Corepack`, + binaryName: `corepack`, + binaryVersion: corepackVersion, + }); + cli.register(clipanion__WEBPACK_IMPORTED_MODULE_8__.Builtins.HelpCommand); + cli.register(clipanion__WEBPACK_IMPORTED_MODULE_8__.Builtins.VersionCommand); + cli.register(_commands_Enable__WEBPACK_IMPORTED_MODULE_2__.EnableCommand); + cli.register(_commands_Disable__WEBPACK_IMPORTED_MODULE_1__.DisableCommand); + cli.register(_commands_Hydrate__WEBPACK_IMPORTED_MODULE_3__.HydrateCommand); + cli.register(_commands_Prepare__WEBPACK_IMPORTED_MODULE_4__.PrepareCommand); + return await cli.run(argv, context); + } + else { + // Otherwise, we create a single-command CLI to run the specified package manager (we still use Clipanion in order to pretty-print usage errors). + const cli = new clipanion__WEBPACK_IMPORTED_MODULE_8__.Cli({ + binaryLabel: `'${request.binaryName}', via Corepack`, + binaryName: request.binaryName, + binaryVersion: `corepack/${corepackVersion}`, + }); + cli.register(class BinaryCommand extends clipanion__WEBPACK_IMPORTED_MODULE_8__.Command { + constructor() { + super(...arguments); + this.proxy = clipanion__WEBPACK_IMPORTED_MODULE_8__.Option.Proxy(); + } + async execute() { + return executePackageManagerRequest(request, this.proxy, this.context); + } + }); + return await cli.run(restArgs, context); + } +} +// Important: this is the only function that the corepack binary exports. +function runMain(argv) { + main(argv).then(exitCode => { + process.exitCode = exitCode; + }, err => { + console.error(err.stack); + process.exitCode = 1; + }); +} - if (opt.all && found.length) - return found - if (opt.nothrow) - return null +/***/ }), - throw getNotFoundError(cmd) -} +/***/ "./sources/miscUtils.ts": +/*!******************************!*\ + !*** ./sources/miscUtils.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { -module.exports = which -which.sync = whichSync +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Cancellation": () => (/* binding */ Cancellation) +/* harmony export */ }); +class Cancellation extends Error { + constructor() { + super(`Cancelled operation`); + } +} /***/ }), -/***/ "./.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip/node_modules/yallist/iterator.js": -/*!**************************************************************************************************!*\ - !*** ./.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip/node_modules/yallist/iterator.js ***! - \**************************************************************************************************/ -/***/ ((module) => { +/***/ "./sources/nodeUtils.ts": +/*!******************************!*\ + !*** ./sources/nodeUtils.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "dynamicRequire": () => (/* binding */ dynamicRequire), +/* harmony export */ "loadMainModule": () => (/* binding */ loadMainModule), +/* harmony export */ "registerV8CompileCache": () => (/* binding */ registerV8CompileCache) +/* harmony export */ }); +/* harmony import */ var module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! module */ "module"); +/* harmony import */ var module__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(module__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -module.exports = function (Yallist) { - Yallist.prototype[Symbol.iterator] = function* () { - for (let walker = this.head; walker; walker = walker.next) { - yield walker.value + +const dynamicRequire = typeof require !== `undefined` + ? require + : __webpack_require__("./sources sync recursive"); +function getV8CompileCachePath() { + return typeof require !== `undefined` + ? `./vcc.js` + : `corepack/dist/vcc.js`; +} +function registerV8CompileCache() { + const vccPath = getV8CompileCachePath(); + dynamicRequire(vccPath); +} +/** + * Loads a module as a main module, enabling the `require.main === module` pattern. + */ +function loadMainModule(id) { + const modulePath = module__WEBPACK_IMPORTED_MODULE_0___default()._resolveFilename(id, null, true); + const module = new (module__WEBPACK_IMPORTED_MODULE_0___default())(modulePath, undefined); + module.filename = modulePath; + module.paths = module__WEBPACK_IMPORTED_MODULE_0___default()._nodeModulePaths(path__WEBPACK_IMPORTED_MODULE_1___default().dirname(modulePath)); + (module__WEBPACK_IMPORTED_MODULE_0___default()._cache)[modulePath] = module; + process.mainModule = module; + module.id = `.`; + try { + return module.load(modulePath); + } + catch (error) { + delete (module__WEBPACK_IMPORTED_MODULE_0___default()._cache)[modulePath]; + throw error; } - } } /***/ }), -/***/ "./.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip/node_modules/yallist/yallist.js": -/*!*************************************************************************************************!*\ - !*** ./.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip/node_modules/yallist/yallist.js ***! - \*************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ "./sources/semverUtils.ts": +/*!********************************!*\ + !*** ./sources/semverUtils.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "satisfiesWithPrereleases": () => (/* binding */ satisfiesWithPrereleases) +/* harmony export */ }); +/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/index.js"); +/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(semver__WEBPACK_IMPORTED_MODULE_0__); -module.exports = Yallist - -Yallist.Node = Node -Yallist.create = Yallist - -function Yallist (list) { - var self = this - if (!(self instanceof Yallist)) { - self = new Yallist() - } - - self.tail = null - self.head = null - self.length = 0 - - if (list && typeof list.forEach === 'function') { - list.forEach(function (item) { - self.push(item) - }) - } else if (arguments.length > 0) { - for (var i = 0, l = arguments.length; i < l; i++) { - self.push(arguments[i]) +/** + * Returns whether the given semver version satisfies the given range. Notably + * this supports prerelease versions so that "2.0.0-rc.0" satisfies the range + * ">=1.0.0", for example. + * + * This function exists because the semver.satisfies method does not include + * pre releases. This means ranges such as * would not satisfy 1.0.0-rc. The + * includePrerelease flag has a weird behavior and cannot be used (if you want + * to try it out, just run the `semverUtils` testsuite using this flag instead + * of our own implementation, and you'll see the failing cases). + * + * See https://github.com/yarnpkg/berry/issues/575 for more context. + */ +function satisfiesWithPrereleases(version, range, loose = false) { + let semverRange; + try { + semverRange = new (semver__WEBPACK_IMPORTED_MODULE_0___default().Range)(range, loose); } - } - - return self + catch (err) { + return false; + } + if (!version) + return false; + let semverVersion; + try { + semverVersion = new (semver__WEBPACK_IMPORTED_MODULE_0___default().SemVer)(version, semverRange.loose); + if (semverVersion.prerelease) { + semverVersion.prerelease = []; + } + } + catch (err) { + return false; + } + // A range has multiple sets of comparators. A version must satisfy all + // comparators in a set and at least one set to satisfy the range. + return semverRange.set.some(comparatorSet => { + for (const comparator of comparatorSet) + if (comparator.semver.prerelease) + comparator.semver.prerelease = []; + return comparatorSet.every(comparator => { + return comparator.test(semverVersion); + }); + }); } -Yallist.prototype.removeNode = function (node) { - if (node.list !== this) { - throw new Error('removing node which does not belong to this list') - } - var next = node.next - var prev = node.prev +/***/ }), - if (next) { - next.prev = prev - } +/***/ "./sources/specUtils.ts": +/*!******************************!*\ + !*** ./sources/specUtils.ts ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - if (prev) { - prev.next = next - } +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "findProjectSpec": () => (/* binding */ findProjectSpec), +/* harmony export */ "loadSpec": () => (/* binding */ loadSpec), +/* harmony export */ "parseSpec": () => (/* binding */ parseSpec) +/* harmony export */ }); +/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-72ec1bc418/4/.yarn/berry/cache/clipanion-npm-3.1.0-ced87dbbea-9.zip/node_modules/clipanion/lib/advanced/index.js"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! semver */ "../../../.yarn/berry/cache/semver-npm-7.3.7-3bfe704194-9.zip/node_modules/semver/index.js"); +/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(semver__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ "./sources/types.ts"); - if (node === this.head) { - this.head = next - } - if (node === this.tail) { - this.tail = prev - } - node.list.length-- - node.next = null - node.prev = null - node.list = null - return next + + +const nodeModulesRegExp = /[\\/]node_modules[\\/](@[^\\/]*[\\/])?([^@\\/][^\\/]*)$/; +function parseSpec(raw, source, { enforceExactVersion = true } = {}) { + if (typeof raw !== `string`) + throw new clipanion__WEBPACK_IMPORTED_MODULE_4__.UsageError(`Invalid package manager specification in ${source}; expected a string`); + const match = raw.match(/^(?!_)(.+)@(.+)$/); + if (match === null || (enforceExactVersion && !semver__WEBPACK_IMPORTED_MODULE_2___default().valid(match[2]))) + throw new clipanion__WEBPACK_IMPORTED_MODULE_4__.UsageError(`Invalid package manager specification in ${source}; expected a semver version${enforceExactVersion ? `` : `, range, or tag`}`); + if (!(0,_types__WEBPACK_IMPORTED_MODULE_3__.isSupportedPackageManager)(match[1])) + throw new clipanion__WEBPACK_IMPORTED_MODULE_4__.UsageError(`Unsupported package manager specification (${match})`); + return { + name: match[1], + range: match[2], + }; +} +/** + * Locates the active project's package manager specification. + * + * If the specification exists but doesn't match the active package manager, + * an error is thrown to prevent users from using the wrong package manager, + * which would lead to inconsistent project layouts. + * + * If the project doesn't include a specification file, we just assume that + * whatever the user uses is exactly what they want to use. Since the version + * isn't explicited, we fallback on known good versions. + * + * Finally, if the project doesn't exist at all, we ask the user whether they + * want to create one in the current project. If they do, we initialize a new + * project using the default package managers, and configure it so that we + * don't need to ask again in the future. + */ +async function findProjectSpec(initialCwd, locator, { transparent = false } = {}) { + // A locator is a valid descriptor (but not the other way around) + const fallbackLocator = { name: locator.name, range: locator.reference }; + while (true) { + const result = await loadSpec(initialCwd); + switch (result.type) { + case `NoProject`: + case `NoSpec`: + { + return fallbackLocator; + } + break; + case `Found`: + { + if (result.spec.name !== locator.name) { + if (transparent) { + return fallbackLocator; + } + else { + throw new clipanion__WEBPACK_IMPORTED_MODULE_4__.UsageError(`This project is configured to use ${result.spec.name}`); + } + } + else { + return result.spec; + } + } + break; + } + } +} +async function loadSpec(initialCwd) { + let nextCwd = initialCwd; + let currCwd = ``; + let selection = null; + while (nextCwd !== currCwd && (!selection || !selection.data.packageManager)) { + currCwd = nextCwd; + nextCwd = path__WEBPACK_IMPORTED_MODULE_1___default().dirname(currCwd); + if (nodeModulesRegExp.test(currCwd)) + continue; + const manifestPath = path__WEBPACK_IMPORTED_MODULE_1___default().join(currCwd, `package.json`); + if (!fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(manifestPath)) + continue; + const content = await fs__WEBPACK_IMPORTED_MODULE_0___default().promises.readFile(manifestPath, `utf8`); + let data; + try { + data = JSON.parse(content); + } + catch (_a) { } + if (typeof data !== `object` || data === null) + throw new clipanion__WEBPACK_IMPORTED_MODULE_4__.UsageError(`Invalid package.json in ${path__WEBPACK_IMPORTED_MODULE_1___default().relative(initialCwd, manifestPath)}`); + selection = { data, manifestPath }; + } + if (selection === null) + return { type: `NoProject`, target: path__WEBPACK_IMPORTED_MODULE_1___default().join(initialCwd, `package.json`) }; + const rawPmSpec = selection.data.packageManager; + if (typeof rawPmSpec === `undefined`) + return { type: `NoSpec`, target: selection.manifestPath }; + return { + type: `Found`, + spec: parseSpec(rawPmSpec, path__WEBPACK_IMPORTED_MODULE_1___default().relative(initialCwd, selection.manifestPath)), + }; } -Yallist.prototype.unshiftNode = function (node) { - if (node === this.head) { - return - } - if (node.list) { - node.list.removeNode(node) - } +/***/ }), - var head = this.head - node.list = this - node.next = head - if (head) { - head.prev = node - } +/***/ "./sources/types.ts": +/*!**************************!*\ + !*** ./sources/types.ts ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - this.head = node - if (!this.tail) { - this.tail = node - } - this.length++ +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "SupportedPackageManagerSet": () => (/* binding */ SupportedPackageManagerSet), +/* harmony export */ "SupportedPackageManagerSetWithoutNpm": () => (/* binding */ SupportedPackageManagerSetWithoutNpm), +/* harmony export */ "SupportedPackageManagers": () => (/* binding */ SupportedPackageManagers), +/* harmony export */ "isSupportedPackageManager": () => (/* binding */ isSupportedPackageManager) +/* harmony export */ }); +var SupportedPackageManagers; +(function (SupportedPackageManagers) { + SupportedPackageManagers["Npm"] = "npm"; + SupportedPackageManagers["Pnpm"] = "pnpm"; + SupportedPackageManagers["Yarn"] = "yarn"; +})(SupportedPackageManagers || (SupportedPackageManagers = {})); +const SupportedPackageManagerSet = new Set(Object.values(SupportedPackageManagers)); +const SupportedPackageManagerSetWithoutNpm = new Set(Object.values(SupportedPackageManagers)); +// npm is distributed with Node as a builtin; we don't want Corepack to override it unless the npm team is on board +SupportedPackageManagerSetWithoutNpm.delete(SupportedPackageManagers.Npm); +function isSupportedPackageManager(value) { + return SupportedPackageManagerSet.has(value); } -Yallist.prototype.pushNode = function (node) { - if (node === this.tail) { - return - } - if (node.list) { - node.list.removeNode(node) - } +/***/ }), - var tail = this.tail - node.list = this - node.prev = tail - if (tail) { - tail.next = node - } +/***/ "./sources sync recursive": +/*!***********************!*\ + !*** ./sources/ sync ***! + \***********************/ +/***/ ((module) => { - this.tail = node - if (!this.head) { - this.head = node - } - this.length++ +function webpackEmptyContext(req) { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; } +webpackEmptyContext.keys = () => ([]); +webpackEmptyContext.resolve = webpackEmptyContext; +webpackEmptyContext.id = "./sources sync recursive"; +module.exports = webpackEmptyContext; -Yallist.prototype.push = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - push(this, arguments[i]) - } - return this.length -} +/***/ }), -Yallist.prototype.unshift = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - unshift(this, arguments[i]) - } - return this.length -} +/***/ "assert": +/*!*************************!*\ + !*** external "assert" ***! + \*************************/ +/***/ ((module) => { -Yallist.prototype.pop = function () { - if (!this.tail) { - return undefined - } +"use strict"; +module.exports = require("assert"); - var res = this.tail.value - this.tail = this.tail.prev - if (this.tail) { - this.tail.next = null - } else { - this.head = null - } - this.length-- - return res -} +/***/ }), -Yallist.prototype.shift = function () { - if (!this.head) { - return undefined - } +/***/ "async_hooks": +/*!******************************!*\ + !*** external "async_hooks" ***! + \******************************/ +/***/ ((module) => { - var res = this.head.value - this.head = this.head.next - if (this.head) { - this.head.prev = null - } else { - this.tail = null - } - this.length-- - return res -} +"use strict"; +module.exports = require("async_hooks"); -Yallist.prototype.forEach = function (fn, thisp) { - thisp = thisp || this - for (var walker = this.head, i = 0; walker !== null; i++) { - fn.call(thisp, walker.value, i, this) - walker = walker.next - } -} +/***/ }), -Yallist.prototype.forEachReverse = function (fn, thisp) { - thisp = thisp || this - for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { - fn.call(thisp, walker.value, i, this) - walker = walker.prev - } -} +/***/ "buffer": +/*!*************************!*\ + !*** external "buffer" ***! + \*************************/ +/***/ ((module) => { -Yallist.prototype.get = function (n) { - for (var i = 0, walker = this.head; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.next - } - if (i === n && walker !== null) { - return walker.value - } -} +"use strict"; +module.exports = require("buffer"); -Yallist.prototype.getReverse = function (n) { - for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.prev - } - if (i === n && walker !== null) { - return walker.value - } -} +/***/ }), -Yallist.prototype.map = function (fn, thisp) { - thisp = thisp || this - var res = new Yallist() - for (var walker = this.head; walker !== null;) { - res.push(fn.call(thisp, walker.value, this)) - walker = walker.next - } - return res -} +/***/ "constants": +/*!****************************!*\ + !*** external "constants" ***! + \****************************/ +/***/ ((module) => { -Yallist.prototype.mapReverse = function (fn, thisp) { - thisp = thisp || this - var res = new Yallist() - for (var walker = this.tail; walker !== null;) { - res.push(fn.call(thisp, walker.value, this)) - walker = walker.prev - } - return res -} +"use strict"; +module.exports = require("constants"); -Yallist.prototype.reduce = function (fn, initial) { - var acc - var walker = this.head - if (arguments.length > 1) { - acc = initial - } else if (this.head) { - walker = this.head.next - acc = this.head.value - } else { - throw new TypeError('Reduce of empty list with no initial value') - } +/***/ }), - for (var i = 0; walker !== null; i++) { - acc = fn(acc, walker.value, i) - walker = walker.next - } +/***/ "crypto": +/*!*************************!*\ + !*** external "crypto" ***! + \*************************/ +/***/ ((module) => { - return acc -} +"use strict"; +module.exports = require("crypto"); -Yallist.prototype.reduceReverse = function (fn, initial) { - var acc - var walker = this.tail - if (arguments.length > 1) { - acc = initial - } else if (this.tail) { - walker = this.tail.prev - acc = this.tail.value - } else { - throw new TypeError('Reduce of empty list with no initial value') - } +/***/ }), - for (var i = this.length - 1; walker !== null; i--) { - acc = fn(acc, walker.value, i) - walker = walker.prev - } +/***/ "dns": +/*!**********************!*\ + !*** external "dns" ***! + \**********************/ +/***/ ((module) => { - return acc -} +"use strict"; +module.exports = require("dns"); -Yallist.prototype.toArray = function () { - var arr = new Array(this.length) - for (var i = 0, walker = this.head; walker !== null; i++) { - arr[i] = walker.value - walker = walker.next - } - return arr -} +/***/ }), -Yallist.prototype.toArrayReverse = function () { - var arr = new Array(this.length) - for (var i = 0, walker = this.tail; walker !== null; i++) { - arr[i] = walker.value - walker = walker.prev - } - return arr -} +/***/ "events": +/*!*************************!*\ + !*** external "events" ***! + \*************************/ +/***/ ((module) => { -Yallist.prototype.slice = function (from, to) { - to = to || this.length - if (to < 0) { - to += this.length - } - from = from || 0 - if (from < 0) { - from += this.length - } - var ret = new Yallist() - if (to < from || to < 0) { - return ret - } - if (from < 0) { - from = 0 - } - if (to > this.length) { - to = this.length - } - for (var i = 0, walker = this.head; walker !== null && i < from; i++) { - walker = walker.next - } - for (; walker !== null && i < to; i++, walker = walker.next) { - ret.push(walker.value) - } - return ret -} +"use strict"; +module.exports = require("events"); + +/***/ }), + +/***/ "fs": +/*!*********************!*\ + !*** external "fs" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("fs"); + +/***/ }), + +/***/ "fs/promises": +/*!******************************!*\ + !*** external "fs/promises" ***! + \******************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("fs/promises"); + +/***/ }), + +/***/ "http": +/*!***********************!*\ + !*** external "http" ***! + \***********************/ +/***/ ((module) => { -Yallist.prototype.sliceReverse = function (from, to) { - to = to || this.length - if (to < 0) { - to += this.length - } - from = from || 0 - if (from < 0) { - from += this.length - } - var ret = new Yallist() - if (to < from || to < 0) { - return ret - } - if (from < 0) { - from = 0 - } - if (to > this.length) { - to = this.length - } - for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { - walker = walker.prev - } - for (; walker !== null && i > from; i--, walker = walker.prev) { - ret.push(walker.value) - } - return ret -} +"use strict"; +module.exports = require("http"); -Yallist.prototype.splice = function (start, deleteCount, ...nodes) { - if (start > this.length) { - start = this.length - 1 - } - if (start < 0) { - start = this.length + start; - } +/***/ }), - for (var i = 0, walker = this.head; walker !== null && i < start; i++) { - walker = walker.next - } +/***/ "https": +/*!************************!*\ + !*** external "https" ***! + \************************/ +/***/ ((module) => { - var ret = [] - for (var i = 0; walker && i < deleteCount; i++) { - ret.push(walker.value) - walker = this.removeNode(walker) - } - if (walker === null) { - walker = this.tail - } +"use strict"; +module.exports = require("https"); - if (walker !== this.head && walker !== this.tail) { - walker = walker.prev - } +/***/ }), - for (var i = 0; i < nodes.length; i++) { - walker = insert(this, walker, nodes[i]) - } - return ret; -} +/***/ "module": +/*!*************************!*\ + !*** external "module" ***! + \*************************/ +/***/ ((module) => { -Yallist.prototype.reverse = function () { - var head = this.head - var tail = this.tail - for (var walker = head; walker !== null; walker = walker.prev) { - var p = walker.prev - walker.prev = walker.next - walker.next = p - } - this.head = tail - this.tail = head - return this -} +"use strict"; +module.exports = require("module"); -function insert (self, node, value) { - var inserted = node === self.head ? - new Node(value, null, node, self) : - new Node(value, node, node.next, self) +/***/ }), - if (inserted.next === null) { - self.tail = inserted - } - if (inserted.prev === null) { - self.head = inserted - } +/***/ "net": +/*!**********************!*\ + !*** external "net" ***! + \**********************/ +/***/ ((module) => { - self.length++ +"use strict"; +module.exports = require("net"); - return inserted -} +/***/ }), -function push (self, item) { - self.tail = new Node(item, self.tail, null, self) - if (!self.head) { - self.head = self.tail - } - self.length++ -} +/***/ "node:os": +/*!**************************!*\ + !*** external "node:os" ***! + \**************************/ +/***/ ((module) => { -function unshift (self, item) { - self.head = new Node(item, null, self.head, self) - if (!self.tail) { - self.tail = self.head - } - self.length++ -} +"use strict"; +module.exports = require("node:os"); -function Node (value, prev, next, list) { - if (!(this instanceof Node)) { - return new Node(value, prev, next, list) - } +/***/ }), - this.list = list - this.value = value +/***/ "node:process": +/*!*******************************!*\ + !*** external "node:process" ***! + \*******************************/ +/***/ ((module) => { - if (prev) { - prev.next = this - this.prev = prev - } else { - this.prev = null - } +"use strict"; +module.exports = require("node:process"); - if (next) { - next.prev = this - this.next = next - } else { - this.next = null - } -} +/***/ }), -try { - // add if support for Symbol.iterator is present - __webpack_require__(/*! ./iterator.js */ "./.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip/node_modules/yallist/iterator.js")(Yallist) -} catch (er) {} +/***/ "node:tty": +/*!***************************!*\ + !*** external "node:tty" ***! + \***************************/ +/***/ ((module) => { +"use strict"; +module.exports = require("node:tty"); /***/ }), -/***/ "./config.json": +/***/ "os": /*!*********************!*\ - !*** ./config.json ***! + !*** external "os" ***! \*********************/ /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"definitions":{"npm":{"default":"7.20.1","transparent":{"commands":[["npm","init"],["npx"]]},"ranges":{"*":{"url":"https://registry.npmjs.org/npm/-/npm-{}.tgz","bin":{"npm":"./bin/npm-cli.js","npx":"./bin/npx-cli.js"},"registry":{"type":"npm","package":"npm"}}}},"pnpm":{"default":"6.11.0","transparent":{"commands":[["pnpm","init"],["pnpx"]]},"ranges":{"<6.0.0":{"url":"https://registry.npmjs.org/pnpm/-/pnpm-{}.tgz","bin":{"pnpm":"./bin/pnpm.js","pnpx":"./bin/pnpx.js"},"registry":{"type":"npm","package":"pnpm"}},">=6.0.0":{"url":"https://registry.npmjs.org/pnpm/-/pnpm-{}.tgz","bin":{"pnpm":"./bin/pnpm.cjs","pnpx":"./bin/pnpx.cjs"},"registry":{"type":"npm","package":"pnpm"}}}},"yarn":{"default":"1.22.15","transparent":{"default":"3.0.0","commands":[["yarn","dlx"]]},"ranges":{"<2.0.0":{"url":"https://registry.yarnpkg.com/yarn/-/yarn-{}.tgz","bin":{"yarn":"./bin/yarn.js","yarnpkg":"./bin/yarn.js"},"registry":{"type":"npm","package":"yarn"}},">=2.0.0":{"name":"yarn","url":"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js","bin":["yarn","yarnpkg"],"registry":{"type":"url","url":"https://repo.yarnpkg.com/tags","fields":{"tags":"latest","versions":"tags"}}}}}}}'); +module.exports = require("os"); /***/ }), -/***/ "./package.json": -/*!**********************!*\ - !*** ./package.json ***! - \**********************/ +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"corepack","version":"0.10.0","homepage":"https://github.com/nodejs/corepack#readme","bugs":{"url":"https://github.com/nodejs/corepack/issues"},"repository":{"type":"git","url":"https://github.com/nodejs/corepack.git"},"license":"MIT","bin":{"corepack":"./dist/corepack.js","pnpm":"./dist/pnpm.js","pnpx":"./dist/pnpx.js","yarn":"./dist/yarn.js","yarnpkg":"./dist/yarnpkg.js"},"packageManager":"yarn@3.0.0","devDependencies":{"@babel/core":"^7.14.3","@babel/plugin-proposal-class-properties":"^7.13.0","@babel/plugin-proposal-decorators":"^7.14.2","@babel/plugin-proposal-nullish-coalescing-operator":"^7.10.4","@babel/plugin-transform-modules-commonjs":"^7.14.0","@babel/preset-typescript":"^7.13.0","@types/debug":"^4.1.5","@types/jest":"^26.0.23","@types/node":"^13.9.2","@types/semver":"^7.1.0","@types/tar":"^4.0.3","@types/which":"^1.3.2","@typescript-eslint/eslint-plugin":"^2.0.0","@typescript-eslint/parser":"^4.2.0","@yarnpkg/eslint-config":"^0.1.0","@yarnpkg/fslib":"^2.1.0","@zkochan/cmd-shim":"^5.0.0","babel-plugin-dynamic-import-node":"^2.3.3","clipanion":"^3.0.1","debug":"^4.1.1","eslint":"^7.10.0","eslint-plugin-arca":"^0.9.5","jest":"^26.0.0","nock":"^13.0.4","semver":"^7.1.3","supports-color":"^7.1.0","tar":"^6.0.1","terser-webpack-plugin":"^5.1.2","ts-loader":"^8.0.2","ts-node":"^8.10.2","typescript":"^4.3.2","v8-compile-cache":"^2.3.0","webpack":"^5.38.1","webpack-cli":"^3.3.11","which":"^2.0.2"},"scripts":{"build":"rm -rf dist && webpack && ts-node ./mkshims.ts","corepack":"ts-node ./sources/main.ts","prepack":"node ./.yarn/releases/*.*js build","postpack":"rm -rf dist shims","test":"yarn jest"},"files":["dist","shims","LICENSE.md"],"publishConfig":{"executableFiles":["./dist/npm.js","./dist/npx.js","./dist/pnpm.js","./dist/pnpx.js","./dist/yarn.js","./dist/yarnpkg.js","./dist/corepack.js","./shims/npm","./shims/npm.ps1","./shims/npx","./shims/npx.ps1","./shims/pnpm","./shims/pnpm.ps1","./shims/pnpx","./shims/pnpx.ps1","./shims/yarn","./shims/yarn.ps1","./shims/yarnpkg","./shims/yarnpkg.ps1"]}}'); +module.exports = require("path"); /***/ }), -/***/ "assert": +/***/ "stream": /*!*************************!*\ - !*** external "assert" ***! + !*** external "stream" ***! \*************************/ /***/ ((module) => { "use strict"; -module.exports = require("assert");; +module.exports = require("stream"); /***/ }), -/***/ "buffer": -/*!*************************!*\ - !*** external "buffer" ***! - \*************************/ +/***/ "string_decoder": +/*!*********************************!*\ + !*** external "string_decoder" ***! + \*********************************/ /***/ ((module) => { "use strict"; -module.exports = require("buffer");; +module.exports = require("string_decoder"); /***/ }), -/***/ "child_process": -/*!********************************!*\ - !*** external "child_process" ***! - \********************************/ +/***/ "tls": +/*!**********************!*\ + !*** external "tls" ***! + \**********************/ /***/ ((module) => { "use strict"; -module.exports = require("child_process");; +module.exports = require("tls"); /***/ }), -/***/ "crypto": -/*!*************************!*\ - !*** external "crypto" ***! - \*************************/ +/***/ "tty": +/*!**********************!*\ + !*** external "tty" ***! + \**********************/ /***/ ((module) => { "use strict"; -module.exports = require("crypto");; +module.exports = require("tty"); /***/ }), -/***/ "events": -/*!*************************!*\ - !*** external "events" ***! - \*************************/ +/***/ "url": +/*!**********************!*\ + !*** external "url" ***! + \**********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("url"); + +/***/ }), + +/***/ "util": +/*!***********************!*\ + !*** external "util" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("util"); + +/***/ }), + +/***/ "zlib": +/*!***********************!*\ + !*** external "zlib" ***! + \***********************/ /***/ ((module) => { -"use strict"; -module.exports = require("events");; +"use strict"; +module.exports = require("zlib"); + +/***/ }), + +/***/ "../../../.yarn/berry/cache/supports-color-npm-9.2.2-d003069e84-9.zip/node_modules/supports-color/index.js": +/*!*****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/supports-color-npm-9.2.2-d003069e84-9.zip/node_modules/supports-color/index.js ***! + \*****************************************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "createSupportsColor": () => (/* binding */ createSupportsColor), +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var node_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:process */ "node:process"); +/* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:os */ "node:os"); +/* harmony import */ var node_tty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node:tty */ "node:tty"); + + + + +// From: https://github.com/sindresorhus/has-flag/blob/main/index.js +function hasFlag(flag, argv = node_process__WEBPACK_IMPORTED_MODULE_0__.argv) { + const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); + const position = argv.indexOf(prefix + flag); + const terminatorPosition = argv.indexOf('--'); + return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); +} + +const {env} = node_process__WEBPACK_IMPORTED_MODULE_0__; + +let flagForceColor; +if ( + hasFlag('no-color') + || hasFlag('no-colors') + || hasFlag('color=false') + || hasFlag('color=never') +) { + flagForceColor = 0; +} else if ( + hasFlag('color') + || hasFlag('colors') + || hasFlag('color=true') + || hasFlag('color=always') +) { + flagForceColor = 1; +} + +function envForceColor() { + if ('FORCE_COLOR' in env) { + if (env.FORCE_COLOR === 'true') { + return 1; + } + + if (env.FORCE_COLOR === 'false') { + return 0; + } + + return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3); + } +} + +function translateLevel(level) { + if (level === 0) { + return false; + } + + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3, + }; +} + +function _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) { + const noFlagForceColor = envForceColor(); + if (noFlagForceColor !== undefined) { + flagForceColor = noFlagForceColor; + } + + const forceColor = sniffFlags ? flagForceColor : noFlagForceColor; + + if (forceColor === 0) { + return 0; + } + + if (sniffFlags) { + if (hasFlag('color=16m') + || hasFlag('color=full') + || hasFlag('color=truecolor')) { + return 3; + } -/***/ }), + if (hasFlag('color=256')) { + return 2; + } + } -/***/ "fs": -/*!*********************!*\ - !*** external "fs" ***! - \*********************/ -/***/ ((module) => { + if (haveStream && !streamIsTTY && forceColor === undefined) { + return 0; + } -"use strict"; -module.exports = require("fs");; + const min = forceColor || 0; -/***/ }), + if (env.TERM === 'dumb') { + return min; + } -/***/ "https": -/*!************************!*\ - !*** external "https" ***! - \************************/ -/***/ ((module) => { + if (node_process__WEBPACK_IMPORTED_MODULE_0__.platform === 'win32') { + // Windows 10 build 10586 is the first Windows release that supports 256 colors. + // Windows 10 build 14931 is the first release that supports 16m/TrueColor. + const osRelease = node_os__WEBPACK_IMPORTED_MODULE_1__.release().split('.'); + if ( + Number(osRelease[0]) >= 10 + && Number(osRelease[2]) >= 10_586 + ) { + return Number(osRelease[2]) >= 14_931 ? 3 : 2; + } -"use strict"; -module.exports = require("https");; + return 1; + } -/***/ }), + if ('CI' in env) { + if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + return 1; + } -/***/ "os": -/*!*********************!*\ - !*** external "os" ***! - \*********************/ -/***/ ((module) => { + return min; + } -"use strict"; -module.exports = require("os");; + if ('TEAMCITY_VERSION' in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } -/***/ }), + // Check for Azure DevOps pipelines + if ('TF_BUILD' in env && 'AGENT_NAME' in env) { + return 1; + } -/***/ "path": -/*!***********************!*\ - !*** external "path" ***! - \***********************/ -/***/ ((module) => { + if (env.COLORTERM === 'truecolor') { + return 3; + } -"use strict"; -module.exports = require("path");; + if ('TERM_PROGRAM' in env) { + const version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); -/***/ }), + switch (env.TERM_PROGRAM) { + case 'iTerm.app': + return version >= 3 ? 3 : 2; + case 'Apple_Terminal': + return 2; + // No default + } + } -/***/ "stream": -/*!*************************!*\ - !*** external "stream" ***! - \*************************/ -/***/ ((module) => { + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } -"use strict"; -module.exports = require("stream");; + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } -/***/ }), + if ('COLORTERM' in env) { + return 1; + } -/***/ "string_decoder": -/*!*********************************!*\ - !*** external "string_decoder" ***! - \*********************************/ -/***/ ((module) => { + return min; +} -"use strict"; -module.exports = require("string_decoder");; +function createSupportsColor(stream, options = {}) { + const level = _supportsColor(stream, { + streamIsTTY: stream && stream.isTTY, + ...options, + }); -/***/ }), + return translateLevel(level); +} -/***/ "tty": -/*!**********************!*\ - !*** external "tty" ***! - \**********************/ -/***/ ((module) => { +const supportsColor = { + stdout: createSupportsColor({isTTY: node_tty__WEBPACK_IMPORTED_MODULE_2__.isatty(1)}), + stderr: createSupportsColor({isTTY: node_tty__WEBPACK_IMPORTED_MODULE_2__.isatty(2)}), +}; + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (supportsColor); -"use strict"; -module.exports = require("tty");; /***/ }), -/***/ "util": -/*!***********************!*\ - !*** external "util" ***! - \***********************/ +/***/ "./config.json": +/*!*********************!*\ + !*** ./config.json ***! + \*********************/ /***/ ((module) => { "use strict"; -module.exports = require("util");; +module.exports = JSON.parse('{"definitions":{"npm":{"default":"8.15.0+sha1.d4b53cd29b13ea164f0f5767bca274dbe7d8f78d","transparent":{"commands":[["npm","init"],["npx"]]},"ranges":{"*":{"url":"https://registry.npmjs.org/npm/-/npm-{}.tgz","bin":{"npm":"./bin/npm-cli.js","npx":"./bin/npx-cli.js"},"registry":{"type":"npm","package":"npm"}}}},"pnpm":{"default":"7.5.2+sha1.89331cc7dc542e0d7a33fe4f423989f0c54e9604","transparent":{"commands":[["pnpm","init"],["pnpx"],["pnpm","dlx"]]},"ranges":{"<6.0.0":{"url":"https://registry.npmjs.org/pnpm/-/pnpm-{}.tgz","bin":{"pnpm":"./bin/pnpm.js","pnpx":"./bin/pnpx.js"},"registry":{"type":"npm","package":"pnpm"}},">=6.0.0":{"url":"https://registry.npmjs.org/pnpm/-/pnpm-{}.tgz","bin":{"pnpm":"./bin/pnpm.cjs","pnpx":"./bin/pnpx.cjs"},"registry":{"type":"npm","package":"pnpm"}}}},"yarn":{"default":"1.22.19+sha1.4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447","transparent":{"default":"3.2.2+sha224.634d0331703700cabfa9d9389835bd8f7426b0207ed6b74d8d34c81e","commands":[["yarn","dlx"]]},"ranges":{"<2.0.0":{"url":"https://registry.yarnpkg.com/yarn/-/yarn-{}.tgz","bin":{"yarn":"./bin/yarn.js","yarnpkg":"./bin/yarn.js"},"registry":{"type":"npm","package":"yarn"}},">=2.0.0":{"name":"yarn","url":"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js","bin":["yarn","yarnpkg"],"registry":{"type":"url","url":"https://repo.yarnpkg.com/tags","fields":{"tags":"latest","versions":"tags"}}}}}}}'); /***/ }), -/***/ "zlib": -/*!***********************!*\ - !*** external "zlib" ***! - \***********************/ +/***/ "./package.json": +/*!**********************!*\ + !*** ./package.json ***! + \**********************/ /***/ ((module) => { "use strict"; -module.exports = require("zlib");; +module.exports = JSON.parse('{"name":"corepack","version":"0.12.1","homepage":"https://github.com/nodejs/corepack#readme","bugs":{"url":"https://github.com/nodejs/corepack/issues"},"repository":{"type":"git","url":"https://github.com/nodejs/corepack.git"},"license":"MIT","packageManager":"yarn@4.0.0-rc.14+sha224.d3bee29dce07417588d640327d44f1e0b8182c240bc2beb0b81ccf6e","devDependencies":{"@babel/core":"^7.14.3","@babel/plugin-transform-modules-commonjs":"^7.14.0","@babel/preset-typescript":"^7.13.0","@types/debug":"^4.1.5","@types/jest":"^28.0.0","@types/node":"^18.0.0","@types/semver":"^7.1.0","@types/tar":"^6.0.0","@types/which":"^2.0.0","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","@yarnpkg/eslint-config":"^1.0.0-rc.5","@yarnpkg/fslib":"^2.1.0","@zkochan/cmd-shim":"^5.0.0","babel-plugin-dynamic-import-node":"^2.3.3","clipanion":"^3.0.1","debug":"^4.1.1","eslint":"^8.0.0","eslint-plugin-arca":"^0.15.0","jest":"^28.0.0","nock":"^13.0.4","proxy-agent":"^5.0.0","semver":"^7.1.3","supports-color":"^9.0.0","tar":"^6.0.1","terser-webpack-plugin":"^5.1.2","ts-loader":"^9.0.0","ts-node":"^10.0.0","typescript":"^4.3.2","v8-compile-cache":"^2.3.0","webpack":"^5.38.1","webpack-cli":"^4.0.0","which":"^2.0.2"},"scripts":{"build":"rm -rf dist shims && webpack && ts-node ./mkshims.ts","corepack":"ts-node ./sources/_entryPoint.ts","lint":"yarn eslint","prepack":"yarn build","postpack":"rm -rf dist shims","typecheck":"tsc --noEmit","test":"yarn jest"},"files":["dist","shims","LICENSE.md"],"publishConfig":{"bin":{"corepack":"./dist/corepack.js","pnpm":"./dist/pnpm.js","pnpx":"./dist/pnpx.js","yarn":"./dist/yarn.js","yarnpkg":"./dist/yarnpkg.js"},"executableFiles":["./dist/npm.js","./dist/npx.js","./dist/pnpm.js","./dist/pnpx.js","./dist/yarn.js","./dist/yarnpkg.js","./dist/corepack.js","./shims/npm","./shims/npm.ps1","./shims/npx","./shims/npx.ps1","./shims/pnpm","./shims/pnpm.ps1","./shims/pnpx","./shims/pnpx.ps1","./shims/yarn","./shims/yarn.ps1","./shims/yarnpkg","./shims/yarnpkg.ps1"]},"resolutions":{"vm2":"patch:vm2@npm:3.9.9#.yarn/patches/vm2-npm-3.9.9-03fd1f4dc5.patch"}}'); /***/ }) @@ -14636,12 +16988,15 @@ module.exports = require("zlib");; /******/ }; /******/ /******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = __webpack_modules__; +/******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { @@ -14697,6 +17052,28 @@ module.exports = require("zlib");; /******/ }; /******/ })(); /******/ +/******/ /* webpack/runtime/ensure chunk */ +/******/ (() => { +/******/ __webpack_require__.f = {}; +/******/ // This file contains only the entry chunk. +/******/ // The chunk loading function for additional chunks +/******/ __webpack_require__.e = (chunkId) => { +/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => { +/******/ __webpack_require__.f[key](chunkId, promises); +/******/ return promises; +/******/ }, [])); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/get javascript chunk filename */ +/******/ (() => { +/******/ // This function allow to reference async chunks +/******/ __webpack_require__.u = (chunkId) => { +/******/ // return url for filenames based on template +/******/ return "" + chunkId + ".js"; +/******/ }; +/******/ })(); +/******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) @@ -14713,148 +17090,67 @@ module.exports = require("zlib");; /******/ }; /******/ })(); /******/ +/******/ /* webpack/runtime/require chunk loading */ +/******/ (() => { +/******/ // no baseURI +/******/ +/******/ // object to store loaded chunks +/******/ // "1" means "loaded", otherwise not loaded yet +/******/ var installedChunks = { +/******/ "corepack": 1 +/******/ }; +/******/ +/******/ // no on chunks loaded +/******/ +/******/ var installChunk = (chunk) => { +/******/ var moreModules = chunk.modules, chunkIds = chunk.ids, runtime = chunk.runtime; +/******/ for(var moduleId in moreModules) { +/******/ if(__webpack_require__.o(moreModules, moduleId)) { +/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(runtime) runtime(__webpack_require__); +/******/ for(var i = 0; i < chunkIds.length; i++) +/******/ installedChunks[chunkIds[i]] = 1; +/******/ +/******/ }; +/******/ +/******/ // require() chunk loading for javascript +/******/ __webpack_require__.f.require = (chunkId, promises) => { +/******/ // "1" is the signal for "already loaded" +/******/ if(!installedChunks[chunkId]) { +/******/ if(true) { // all chunks have JS +/******/ installChunk(require("./" + __webpack_require__.u(chunkId))); +/******/ } else installedChunks[chunkId] = 1; +/******/ } +/******/ }; +/******/ +/******/ // no external install chunk +/******/ +/******/ // no HMR +/******/ +/******/ // no HMR manifest +/******/ })(); +/******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be in strict mode. (() => { "use strict"; -/*!*************************!*\ - !*** ./sources/main.ts ***! - \*************************/ +/*!********************************!*\ + !*** ./sources/_entryPoint.ts ***! + \********************************/ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "main": () => (/* binding */ main), -/* harmony export */ "runMain": () => (/* binding */ runMain) +/* harmony export */ "runMain": () => (/* reexport safe */ _main__WEBPACK_IMPORTED_MODULE_0__.runMain) /* harmony export */ }); -/* harmony import */ var clipanion__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! clipanion */ "./.yarn/__virtual__/clipanion-virtual-119dc92083/0/cache/clipanion-npm-3.0.1-901533eeed-3a4b0c1e7d.zip/node_modules/clipanion/lib/advanced/index.js"); -/* harmony import */ var _Engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Engine */ "./sources/Engine.ts"); -/* harmony import */ var _commands_Disable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./commands/Disable */ "./sources/commands/Disable.ts"); -/* harmony import */ var _commands_Enable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./commands/Enable */ "./sources/commands/Enable.ts"); -/* harmony import */ var _commands_Hydrate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./commands/Hydrate */ "./sources/commands/Hydrate.ts"); -/* harmony import */ var _commands_Prepare__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./commands/Prepare */ "./sources/commands/Prepare.ts"); -/* harmony import */ var _miscUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./miscUtils */ "./sources/miscUtils.ts"); -/* harmony import */ var _corepackUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./corepackUtils */ "./sources/corepackUtils.ts"); -/* harmony import */ var _specUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./specUtils */ "./sources/specUtils.ts"); +/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./main */ "./sources/main.ts"); +// Used by the generated shims - - - - - - - -function getPackageManagerRequestFromCli(parameter, context) { - if (!parameter) - return null; - const match = parameter.match(/^([^@]*)(?:@(.*))?$/); - if (!match) - return null; - const [, binaryName, binaryVersion] = match; - const packageManager = context.engine.getPackageManagerFor(binaryName); - if (!packageManager) - return null; - return { - packageManager, - binaryName, - binaryVersion: binaryVersion || null, - }; -} -async function executePackageManagerRequest({ packageManager, binaryName, binaryVersion }, args, context) { - var _a; - const defaultVersion = await context.engine.getDefaultVersion(packageManager); - const definition = context.engine.config.definitions[packageManager]; - // If all leading segments match one of the patterns defined in the `transparent` - // key, we tolerate calling this binary even if the local project isn't explicitly - // configured for it, and we use the special default version if requested. - let isTransparentCommand = false; - for (const transparentPath of definition.transparent.commands) { - if (transparentPath[0] === binaryName && transparentPath.slice(1).every((segment, index) => segment === args[index])) { - isTransparentCommand = true; - break; - } - } - const fallbackReference = isTransparentCommand - ? (_a = definition.transparent.default) !== null && _a !== void 0 ? _a : defaultVersion - : defaultVersion; - const fallbackLocator = { - name: packageManager, - reference: fallbackReference, - }; - let descriptor; - try { - descriptor = await _specUtils__WEBPACK_IMPORTED_MODULE_7__.findProjectSpec(context.cwd, fallbackLocator, { transparent: isTransparentCommand }); - } - catch (err) { - if (err instanceof _miscUtils__WEBPACK_IMPORTED_MODULE_5__.Cancellation) { - return 1; - } - else { - throw err; - } - } - if (binaryVersion) - descriptor.range = binaryVersion; - const resolved = await context.engine.resolveDescriptor(descriptor, { allowTags: true }); - if (resolved === null) - throw new clipanion__WEBPACK_IMPORTED_MODULE_8__.UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`); - const installSpec = await context.engine.ensurePackageManager(resolved); - const exitCode = await _corepackUtils__WEBPACK_IMPORTED_MODULE_6__.runVersion(installSpec, resolved, binaryName, args, context); - return exitCode; -} -async function main(argv, context) { - const corepackVersion = __webpack_require__(/*! ../package.json */ "./package.json").version; - const [firstArg, ...restArgs] = argv; - const request = getPackageManagerRequestFromCli(firstArg, context); - let cli; - if (!request) { - // If the first argument doesn't match any supported package manager, we fallback to the standard Corepack CLI - cli = new clipanion__WEBPACK_IMPORTED_MODULE_8__.Cli({ - binaryLabel: `Corepack`, - binaryName: `corepack`, - binaryVersion: corepackVersion, - }); - cli.register(clipanion__WEBPACK_IMPORTED_MODULE_8__.Builtins.HelpCommand); - cli.register(clipanion__WEBPACK_IMPORTED_MODULE_8__.Builtins.VersionCommand); - cli.register(_commands_Enable__WEBPACK_IMPORTED_MODULE_2__.EnableCommand); - cli.register(_commands_Disable__WEBPACK_IMPORTED_MODULE_1__.DisableCommand); - cli.register(_commands_Hydrate__WEBPACK_IMPORTED_MODULE_3__.HydrateCommand); - cli.register(_commands_Prepare__WEBPACK_IMPORTED_MODULE_4__.PrepareCommand); - return await cli.run(argv, Object.assign(Object.assign({}, clipanion__WEBPACK_IMPORTED_MODULE_8__.Cli.defaultContext), context)); - } - else { - // Otherwise, we create a single-command CLI to run the specified package manager (we still use Clipanion in order to pretty-print usage errors). - const cli = new clipanion__WEBPACK_IMPORTED_MODULE_8__.Cli({ - binaryLabel: `'${request.binaryName}', via Corepack`, - binaryName: request.binaryName, - binaryVersion: `corepack/${corepackVersion}`, - }); - cli.register(class BinaryCommand extends clipanion__WEBPACK_IMPORTED_MODULE_8__.Command { - constructor() { - super(...arguments); - this.proxy = clipanion__WEBPACK_IMPORTED_MODULE_8__.Option.Proxy(); - } - async execute() { - return executePackageManagerRequest(request, this.proxy, this.context); - } - }); - return await cli.run(restArgs, Object.assign(Object.assign({}, clipanion__WEBPACK_IMPORTED_MODULE_8__.Cli.defaultContext), context)); - } -} -function runMain(argv) { - main(argv, { - cwd: process.cwd(), - engine: new _Engine__WEBPACK_IMPORTED_MODULE_0__.Engine(), - }).then(exitCode => { - process.exitCode = exitCode; - }, err => { - console.error(err.stack); - process.exitCode = 1; - }); -} // Using `eval` to be sure that Webpack doesn't transform it if (process.mainModule === eval(`module`)) - runMain(process.argv.slice(2)); + (0,_main__WEBPACK_IMPORTED_MODULE_0__.runMain)(process.argv.slice(2)); })(); diff --git a/deps/corepack/dist/vcc.js b/deps/corepack/dist/vcc.js index 69558e7cdd55a4..2a8c9014b546d1 100644 --- a/deps/corepack/dist/vcc.js +++ b/deps/corepack/dist/vcc.js @@ -3,10 +3,10 @@ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ -/***/ "./.yarn/cache/v8-compile-cache-npm-2.3.0-961375f150-adb0a271ea.zip/node_modules/v8-compile-cache/v8-compile-cache.js": -/*!****************************************************************************************************************************!*\ - !*** ./.yarn/cache/v8-compile-cache-npm-2.3.0-961375f150-adb0a271ea.zip/node_modules/v8-compile-cache/v8-compile-cache.js ***! - \****************************************************************************************************************************/ +/***/ "../../../.yarn/berry/cache/v8-compile-cache-npm-2.3.0-961375f150-9.zip/node_modules/v8-compile-cache/v8-compile-cache.js": +/*!********************************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/v8-compile-cache-npm-2.3.0-961375f150-9.zip/node_modules/v8-compile-cache/v8-compile-cache.js ***! + \********************************************************************************************************************************/ /***/ (function(module, exports) { 'use strict'; @@ -415,7 +415,7 @@ module.exports.__TEST__ = { /******/ // startup /******/ // Load entry module and return exports /******/ // This entry module doesn't tell about it's top-level declarations so it can't be inlined -/******/ var __webpack_exports__ = __webpack_require__("./.yarn/cache/v8-compile-cache-npm-2.3.0-961375f150-adb0a271ea.zip/node_modules/v8-compile-cache/v8-compile-cache.js"); +/******/ var __webpack_exports__ = __webpack_require__("../../../.yarn/berry/cache/v8-compile-cache-npm-2.3.0-961375f150-9.zip/node_modules/v8-compile-cache/v8-compile-cache.js"); /******/ var __webpack_export_target__ = exports; /******/ for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i]; /******/ if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true }); diff --git a/deps/corepack/dist/vendors-_yarn_berry_cache_proxy-agent-npm-5_0_0-41772f4b01-9_zip_node_modules_proxy-agent_index_js.js b/deps/corepack/dist/vendors-_yarn_berry_cache_proxy-agent-npm-5_0_0-41772f4b01-9_zip_node_modules_proxy-agent_index_js.js new file mode 100644 index 00000000000000..afb6a9b2b75a51 --- /dev/null +++ b/deps/corepack/dist/vendors-_yarn_berry_cache_proxy-agent-npm-5_0_0-41772f4b01-9_zip_node_modules_proxy-agent_index_js.js @@ -0,0 +1,41282 @@ +exports.id = "vendors-_yarn_berry_cache_proxy-agent-npm-5_0_0-41772f4b01-9_zip_node_modules_proxy-agent_index_js"; +exports.ids = ["vendors-_yarn_berry_cache_proxy-agent-npm-5_0_0-41772f4b01-9_zip_node_modules_proxy-agent_index_js"]; +exports.modules = { + +/***/ "../../../.yarn/berry/cache/@tootallnate-once-npm-1.1.2-0517220057-9.zip/node_modules/@tootallnate/once/dist/index.js": +/*!****************************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/@tootallnate-once-npm-1.1.2-0517220057-9.zip/node_modules/@tootallnate/once/dist/index.js ***! + \****************************************************************************************************************************/ +/***/ ((module) => { + +"use strict"; + +function noop() { } +function once(emitter, name) { + const o = once.spread(emitter, name); + const r = o.then((args) => args[0]); + r.cancel = o.cancel; + return r; +} +(function (once) { + function spread(emitter, name) { + let c = null; + const p = new Promise((resolve, reject) => { + function cancel() { + emitter.removeListener(name, onEvent); + emitter.removeListener('error', onError); + p.cancel = noop; + } + function onEvent(...args) { + cancel(); + resolve(args); + } + function onError(err) { + cancel(); + reject(err); + } + c = cancel; + emitter.on(name, onEvent); + emitter.on('error', onError); + }); + if (!c) { + throw new TypeError('Could not get `cancel()` function'); + } + p.cancel = c; + return p; + } + once.spread = spread; +})(once || (once = {})); +module.exports = once; +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ "../../../.yarn/berry/cache/agent-base-npm-6.0.2-428f325a93-9.zip/node_modules/agent-base/dist/src/index.js": +/*!******************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/agent-base-npm-6.0.2-428f325a93-9.zip/node_modules/agent-base/dist/src/index.js ***! + \******************************************************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +const events_1 = __webpack_require__(/*! events */ "events"); +const debug_1 = __importDefault(__webpack_require__(/*! debug */ "./.yarn/__virtual__/debug-virtual-3720c848e9/4/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/src/index.js")); +const promisify_1 = __importDefault(__webpack_require__(/*! ./promisify */ "../../../.yarn/berry/cache/agent-base-npm-6.0.2-428f325a93-9.zip/node_modules/agent-base/dist/src/promisify.js")); +const debug = debug_1.default('agent-base'); +function isAgent(v) { + return Boolean(v) && typeof v.addRequest === 'function'; +} +function isSecureEndpoint() { + const { stack } = new Error(); + if (typeof stack !== 'string') + return false; + return stack.split('\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1); +} +function createAgent(callback, opts) { + return new createAgent.Agent(callback, opts); +} +(function (createAgent) { + /** + * Base `http.Agent` implementation. + * No pooling/keep-alive is implemented by default. + * + * @param {Function} callback + * @api public + */ + class Agent extends events_1.EventEmitter { + constructor(callback, _opts) { + super(); + let opts = _opts; + if (typeof callback === 'function') { + this.callback = callback; + } + else if (callback) { + opts = callback; + } + // Timeout for the socket to be returned from the callback + this.timeout = null; + if (opts && typeof opts.timeout === 'number') { + this.timeout = opts.timeout; + } + // These aren't actually used by `agent-base`, but are required + // for the TypeScript definition files in `@types/node` :/ + this.maxFreeSockets = 1; + this.maxSockets = 1; + this.maxTotalSockets = Infinity; + this.sockets = {}; + this.freeSockets = {}; + this.requests = {}; + this.options = {}; + } + get defaultPort() { + if (typeof this.explicitDefaultPort === 'number') { + return this.explicitDefaultPort; + } + return isSecureEndpoint() ? 443 : 80; + } + set defaultPort(v) { + this.explicitDefaultPort = v; + } + get protocol() { + if (typeof this.explicitProtocol === 'string') { + return this.explicitProtocol; + } + return isSecureEndpoint() ? 'https:' : 'http:'; + } + set protocol(v) { + this.explicitProtocol = v; + } + callback(req, opts, fn) { + throw new Error('"agent-base" has no default implementation, you must subclass and override `callback()`'); + } + /** + * Called by node-core's "_http_client.js" module when creating + * a new HTTP request with this Agent instance. + * + * @api public + */ + addRequest(req, _opts) { + const opts = Object.assign({}, _opts); + if (typeof opts.secureEndpoint !== 'boolean') { + opts.secureEndpoint = isSecureEndpoint(); + } + if (opts.host == null) { + opts.host = 'localhost'; + } + if (opts.port == null) { + opts.port = opts.secureEndpoint ? 443 : 80; + } + if (opts.protocol == null) { + opts.protocol = opts.secureEndpoint ? 'https:' : 'http:'; + } + if (opts.host && opts.path) { + // If both a `host` and `path` are specified then it's most + // likely the result of a `url.parse()` call... we need to + // remove the `path` portion so that `net.connect()` doesn't + // attempt to open that as a unix socket file. + delete opts.path; + } + delete opts.agent; + delete opts.hostname; + delete opts._defaultAgent; + delete opts.defaultPort; + delete opts.createConnection; + // Hint to use "Connection: close" + // XXX: non-documented `http` module API :( + req._last = true; + req.shouldKeepAlive = false; + let timedOut = false; + let timeoutId = null; + const timeoutMs = opts.timeout || this.timeout; + const onerror = (err) => { + if (req._hadError) + return; + req.emit('error', err); + // For Safety. Some additional errors might fire later on + // and we need to make sure we don't double-fire the error event. + req._hadError = true; + }; + const ontimeout = () => { + timeoutId = null; + timedOut = true; + const err = new Error(`A "socket" was not created for HTTP request before ${timeoutMs}ms`); + err.code = 'ETIMEOUT'; + onerror(err); + }; + const callbackError = (err) => { + if (timedOut) + return; + if (timeoutId !== null) { + clearTimeout(timeoutId); + timeoutId = null; + } + onerror(err); + }; + const onsocket = (socket) => { + if (timedOut) + return; + if (timeoutId != null) { + clearTimeout(timeoutId); + timeoutId = null; + } + if (isAgent(socket)) { + // `socket` is actually an `http.Agent` instance, so + // relinquish responsibility for this `req` to the Agent + // from here on + debug('Callback returned another Agent instance %o', socket.constructor.name); + socket.addRequest(req, opts); + return; + } + if (socket) { + socket.once('free', () => { + this.freeSocket(socket, opts); + }); + req.onSocket(socket); + return; + } + const err = new Error(`no Duplex stream was returned to agent-base for \`${req.method} ${req.path}\``); + onerror(err); + }; + if (typeof this.callback !== 'function') { + onerror(new Error('`callback` is not defined')); + return; + } + if (!this.promisifiedCallback) { + if (this.callback.length >= 3) { + debug('Converting legacy callback function to promise'); + this.promisifiedCallback = promisify_1.default(this.callback); + } + else { + this.promisifiedCallback = this.callback; + } + } + if (typeof timeoutMs === 'number' && timeoutMs > 0) { + timeoutId = setTimeout(ontimeout, timeoutMs); + } + if ('port' in opts && typeof opts.port !== 'number') { + opts.port = Number(opts.port); + } + try { + debug('Resolving socket for %o request: %o', opts.protocol, `${req.method} ${req.path}`); + Promise.resolve(this.promisifiedCallback(req, opts)).then(onsocket, callbackError); + } + catch (err) { + Promise.reject(err).catch(callbackError); + } + } + freeSocket(socket, opts) { + debug('Freeing socket %o %o', socket.constructor.name, opts); + socket.destroy(); + } + destroy() { + debug('Destroying agent %o', this.constructor.name); + } + } + createAgent.Agent = Agent; + // So that `instanceof` works correctly + createAgent.prototype = createAgent.Agent.prototype; +})(createAgent || (createAgent = {})); +module.exports = createAgent; +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ "../../../.yarn/berry/cache/agent-base-npm-6.0.2-428f325a93-9.zip/node_modules/agent-base/dist/src/promisify.js": +/*!**********************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/agent-base-npm-6.0.2-428f325a93-9.zip/node_modules/agent-base/dist/src/promisify.js ***! + \**********************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +function promisify(fn) { + return function (req, opts) { + return new Promise((resolve, reject) => { + fn.call(this, req, opts, (err, rtn) => { + if (err) { + reject(err); + } + else { + resolve(rtn); + } + }); + }); + }; +} +exports["default"] = promisify; +//# sourceMappingURL=promisify.js.map + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/babel-core.js": +/*!*****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/babel-core.js ***! + \*****************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var shared_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/shared */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/shared.js")); +var es7_1 = tslib_1.__importDefault(__webpack_require__(/*! ./es7 */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es7.js")); +function default_1(fork) { + fork.use(es7_1.default); + var types = fork.use(types_1.default); + var defaults = fork.use(shared_1.default).defaults; + var def = types.Type.def; + var or = types.Type.or; + def("Noop") + .bases("Statement") + .build(); + def("DoExpression") + .bases("Expression") + .build("body") + .field("body", [def("Statement")]); + def("Super") + .bases("Expression") + .build(); + def("BindExpression") + .bases("Expression") + .build("object", "callee") + .field("object", or(def("Expression"), null)) + .field("callee", def("Expression")); + def("Decorator") + .bases("Node") + .build("expression") + .field("expression", def("Expression")); + def("Property") + .field("decorators", or([def("Decorator")], null), defaults["null"]); + def("MethodDefinition") + .field("decorators", or([def("Decorator")], null), defaults["null"]); + def("MetaProperty") + .bases("Expression") + .build("meta", "property") + .field("meta", def("Identifier")) + .field("property", def("Identifier")); + def("ParenthesizedExpression") + .bases("Expression") + .build("expression") + .field("expression", def("Expression")); + def("ImportSpecifier") + .bases("ModuleSpecifier") + .build("imported", "local") + .field("imported", def("Identifier")); + def("ImportDefaultSpecifier") + .bases("ModuleSpecifier") + .build("local"); + def("ImportNamespaceSpecifier") + .bases("ModuleSpecifier") + .build("local"); + def("ExportDefaultDeclaration") + .bases("Declaration") + .build("declaration") + .field("declaration", or(def("Declaration"), def("Expression"))); + def("ExportNamedDeclaration") + .bases("Declaration") + .build("declaration", "specifiers", "source") + .field("declaration", or(def("Declaration"), null)) + .field("specifiers", [def("ExportSpecifier")], defaults.emptyArray) + .field("source", or(def("Literal"), null), defaults["null"]); + def("ExportSpecifier") + .bases("ModuleSpecifier") + .build("local", "exported") + .field("exported", def("Identifier")); + def("ExportNamespaceSpecifier") + .bases("Specifier") + .build("exported") + .field("exported", def("Identifier")); + def("ExportDefaultSpecifier") + .bases("Specifier") + .build("exported") + .field("exported", def("Identifier")); + def("ExportAllDeclaration") + .bases("Declaration") + .build("exported", "source") + .field("exported", or(def("Identifier"), null)) + .field("source", def("Literal")); + def("CommentBlock") + .bases("Comment") + .build("value", /*optional:*/ "leading", "trailing"); + def("CommentLine") + .bases("Comment") + .build("value", /*optional:*/ "leading", "trailing"); + def("Directive") + .bases("Node") + .build("value") + .field("value", def("DirectiveLiteral")); + def("DirectiveLiteral") + .bases("Node", "Expression") + .build("value") + .field("value", String, defaults["use strict"]); + def("InterpreterDirective") + .bases("Node") + .build("value") + .field("value", String); + def("BlockStatement") + .bases("Statement") + .build("body") + .field("body", [def("Statement")]) + .field("directives", [def("Directive")], defaults.emptyArray); + def("Program") + .bases("Node") + .build("body") + .field("body", [def("Statement")]) + .field("directives", [def("Directive")], defaults.emptyArray) + .field("interpreter", or(def("InterpreterDirective"), null), defaults["null"]); + // Split Literal + def("StringLiteral") + .bases("Literal") + .build("value") + .field("value", String); + def("NumericLiteral") + .bases("Literal") + .build("value") + .field("value", Number) + .field("raw", or(String, null), defaults["null"]) + .field("extra", { + rawValue: Number, + raw: String + }, function getDefault() { + return { + rawValue: this.value, + raw: this.value + "" + }; + }); + def("BigIntLiteral") + .bases("Literal") + .build("value") + // Only String really seems appropriate here, since BigInt values + // often exceed the limits of JS numbers. + .field("value", or(String, Number)) + .field("extra", { + rawValue: String, + raw: String + }, function getDefault() { + return { + rawValue: String(this.value), + raw: this.value + "n" + }; + }); + def("NullLiteral") + .bases("Literal") + .build() + .field("value", null, defaults["null"]); + def("BooleanLiteral") + .bases("Literal") + .build("value") + .field("value", Boolean); + def("RegExpLiteral") + .bases("Literal") + .build("pattern", "flags") + .field("pattern", String) + .field("flags", String) + .field("value", RegExp, function () { + return new RegExp(this.pattern, this.flags); + }); + var ObjectExpressionProperty = or(def("Property"), def("ObjectMethod"), def("ObjectProperty"), def("SpreadProperty"), def("SpreadElement")); + // Split Property -> ObjectProperty and ObjectMethod + def("ObjectExpression") + .bases("Expression") + .build("properties") + .field("properties", [ObjectExpressionProperty]); + // ObjectMethod hoist .value properties to own properties + def("ObjectMethod") + .bases("Node", "Function") + .build("kind", "key", "params", "body", "computed") + .field("kind", or("method", "get", "set")) + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) + .field("params", [def("Pattern")]) + .field("body", def("BlockStatement")) + .field("computed", Boolean, defaults["false"]) + .field("generator", Boolean, defaults["false"]) + .field("async", Boolean, defaults["false"]) + .field("accessibility", // TypeScript + or(def("Literal"), null), defaults["null"]) + .field("decorators", or([def("Decorator")], null), defaults["null"]); + def("ObjectProperty") + .bases("Node") + .build("key", "value") + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) + .field("value", or(def("Expression"), def("Pattern"))) + .field("accessibility", // TypeScript + or(def("Literal"), null), defaults["null"]) + .field("computed", Boolean, defaults["false"]); + var ClassBodyElement = or(def("MethodDefinition"), def("VariableDeclarator"), def("ClassPropertyDefinition"), def("ClassProperty"), def("ClassPrivateProperty"), def("ClassMethod"), def("ClassPrivateMethod")); + // MethodDefinition -> ClassMethod + def("ClassBody") + .bases("Declaration") + .build("body") + .field("body", [ClassBodyElement]); + def("ClassMethod") + .bases("Declaration", "Function") + .build("kind", "key", "params", "body", "computed", "static") + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))); + def("ClassPrivateMethod") + .bases("Declaration", "Function") + .build("key", "params", "body", "kind", "computed", "static") + .field("key", def("PrivateName")); + ["ClassMethod", + "ClassPrivateMethod", + ].forEach(function (typeName) { + def(typeName) + .field("kind", or("get", "set", "method", "constructor"), function () { return "method"; }) + .field("body", def("BlockStatement")) + .field("computed", Boolean, defaults["false"]) + .field("static", or(Boolean, null), defaults["null"]) + .field("abstract", or(Boolean, null), defaults["null"]) + .field("access", or("public", "private", "protected", null), defaults["null"]) + .field("accessibility", or("public", "private", "protected", null), defaults["null"]) + .field("decorators", or([def("Decorator")], null), defaults["null"]) + .field("optional", or(Boolean, null), defaults["null"]); + }); + def("ClassPrivateProperty") + .bases("ClassProperty") + .build("key", "value") + .field("key", def("PrivateName")) + .field("value", or(def("Expression"), null), defaults["null"]); + def("PrivateName") + .bases("Expression", "Pattern") + .build("id") + .field("id", def("Identifier")); + var ObjectPatternProperty = or(def("Property"), def("PropertyPattern"), def("SpreadPropertyPattern"), def("SpreadProperty"), // Used by Esprima + def("ObjectProperty"), // Babel 6 + def("RestProperty") // Babel 6 + ); + // Split into RestProperty and SpreadProperty + def("ObjectPattern") + .bases("Pattern") + .build("properties") + .field("properties", [ObjectPatternProperty]) + .field("decorators", or([def("Decorator")], null), defaults["null"]); + def("SpreadProperty") + .bases("Node") + .build("argument") + .field("argument", def("Expression")); + def("RestProperty") + .bases("Node") + .build("argument") + .field("argument", def("Expression")); + def("ForAwaitStatement") + .bases("Statement") + .build("left", "right", "body") + .field("left", or(def("VariableDeclaration"), def("Expression"))) + .field("right", def("Expression")) + .field("body", def("Statement")); + // The callee node of a dynamic import(...) expression. + def("Import") + .bases("Expression") + .build(); +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/babel.js": +/*!************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/babel.js ***! + \************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var babel_core_1 = tslib_1.__importDefault(__webpack_require__(/*! ./babel-core */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/babel-core.js")); +var flow_1 = tslib_1.__importDefault(__webpack_require__(/*! ./flow */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/flow.js")); +function default_1(fork) { + fork.use(babel_core_1.default); + fork.use(flow_1.default); +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/core.js": +/*!***********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/core.js ***! + \***********************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var shared_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/shared */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/shared.js")); +function default_1(fork) { + var types = fork.use(types_1.default); + var Type = types.Type; + var def = Type.def; + var or = Type.or; + var shared = fork.use(shared_1.default); + var defaults = shared.defaults; + var geq = shared.geq; + // Abstract supertype of all syntactic entities that are allowed to have a + // .loc field. + def("Printable") + .field("loc", or(def("SourceLocation"), null), defaults["null"], true); + def("Node") + .bases("Printable") + .field("type", String) + .field("comments", or([def("Comment")], null), defaults["null"], true); + def("SourceLocation") + .field("start", def("Position")) + .field("end", def("Position")) + .field("source", or(String, null), defaults["null"]); + def("Position") + .field("line", geq(1)) + .field("column", geq(0)); + def("File") + .bases("Node") + .build("program", "name") + .field("program", def("Program")) + .field("name", or(String, null), defaults["null"]); + def("Program") + .bases("Node") + .build("body") + .field("body", [def("Statement")]); + def("Function") + .bases("Node") + .field("id", or(def("Identifier"), null), defaults["null"]) + .field("params", [def("Pattern")]) + .field("body", def("BlockStatement")) + .field("generator", Boolean, defaults["false"]) + .field("async", Boolean, defaults["false"]); + def("Statement").bases("Node"); + // The empty .build() here means that an EmptyStatement can be constructed + // (i.e. it's not abstract) but that it needs no arguments. + def("EmptyStatement").bases("Statement").build(); + def("BlockStatement") + .bases("Statement") + .build("body") + .field("body", [def("Statement")]); + // TODO Figure out how to silently coerce Expressions to + // ExpressionStatements where a Statement was expected. + def("ExpressionStatement") + .bases("Statement") + .build("expression") + .field("expression", def("Expression")); + def("IfStatement") + .bases("Statement") + .build("test", "consequent", "alternate") + .field("test", def("Expression")) + .field("consequent", def("Statement")) + .field("alternate", or(def("Statement"), null), defaults["null"]); + def("LabeledStatement") + .bases("Statement") + .build("label", "body") + .field("label", def("Identifier")) + .field("body", def("Statement")); + def("BreakStatement") + .bases("Statement") + .build("label") + .field("label", or(def("Identifier"), null), defaults["null"]); + def("ContinueStatement") + .bases("Statement") + .build("label") + .field("label", or(def("Identifier"), null), defaults["null"]); + def("WithStatement") + .bases("Statement") + .build("object", "body") + .field("object", def("Expression")) + .field("body", def("Statement")); + def("SwitchStatement") + .bases("Statement") + .build("discriminant", "cases", "lexical") + .field("discriminant", def("Expression")) + .field("cases", [def("SwitchCase")]) + .field("lexical", Boolean, defaults["false"]); + def("ReturnStatement") + .bases("Statement") + .build("argument") + .field("argument", or(def("Expression"), null)); + def("ThrowStatement") + .bases("Statement") + .build("argument") + .field("argument", def("Expression")); + def("TryStatement") + .bases("Statement") + .build("block", "handler", "finalizer") + .field("block", def("BlockStatement")) + .field("handler", or(def("CatchClause"), null), function () { + return this.handlers && this.handlers[0] || null; + }) + .field("handlers", [def("CatchClause")], function () { + return this.handler ? [this.handler] : []; + }, true) // Indicates this field is hidden from eachField iteration. + .field("guardedHandlers", [def("CatchClause")], defaults.emptyArray) + .field("finalizer", or(def("BlockStatement"), null), defaults["null"]); + def("CatchClause") + .bases("Node") + .build("param", "guard", "body") + // https://github.com/tc39/proposal-optional-catch-binding + .field("param", or(def("Pattern"), null), defaults["null"]) + .field("guard", or(def("Expression"), null), defaults["null"]) + .field("body", def("BlockStatement")); + def("WhileStatement") + .bases("Statement") + .build("test", "body") + .field("test", def("Expression")) + .field("body", def("Statement")); + def("DoWhileStatement") + .bases("Statement") + .build("body", "test") + .field("body", def("Statement")) + .field("test", def("Expression")); + def("ForStatement") + .bases("Statement") + .build("init", "test", "update", "body") + .field("init", or(def("VariableDeclaration"), def("Expression"), null)) + .field("test", or(def("Expression"), null)) + .field("update", or(def("Expression"), null)) + .field("body", def("Statement")); + def("ForInStatement") + .bases("Statement") + .build("left", "right", "body") + .field("left", or(def("VariableDeclaration"), def("Expression"))) + .field("right", def("Expression")) + .field("body", def("Statement")); + def("DebuggerStatement").bases("Statement").build(); + def("Declaration").bases("Statement"); + def("FunctionDeclaration") + .bases("Function", "Declaration") + .build("id", "params", "body") + .field("id", def("Identifier")); + def("FunctionExpression") + .bases("Function", "Expression") + .build("id", "params", "body"); + def("VariableDeclaration") + .bases("Declaration") + .build("kind", "declarations") + .field("kind", or("var", "let", "const")) + .field("declarations", [def("VariableDeclarator")]); + def("VariableDeclarator") + .bases("Node") + .build("id", "init") + .field("id", def("Pattern")) + .field("init", or(def("Expression"), null), defaults["null"]); + def("Expression").bases("Node"); + def("ThisExpression").bases("Expression").build(); + def("ArrayExpression") + .bases("Expression") + .build("elements") + .field("elements", [or(def("Expression"), null)]); + def("ObjectExpression") + .bases("Expression") + .build("properties") + .field("properties", [def("Property")]); + // TODO Not in the Mozilla Parser API, but used by Esprima. + def("Property") + .bases("Node") // Want to be able to visit Property Nodes. + .build("kind", "key", "value") + .field("kind", or("init", "get", "set")) + .field("key", or(def("Literal"), def("Identifier"))) + .field("value", def("Expression")); + def("SequenceExpression") + .bases("Expression") + .build("expressions") + .field("expressions", [def("Expression")]); + var UnaryOperator = or("-", "+", "!", "~", "typeof", "void", "delete"); + def("UnaryExpression") + .bases("Expression") + .build("operator", "argument", "prefix") + .field("operator", UnaryOperator) + .field("argument", def("Expression")) + // Esprima doesn't bother with this field, presumably because it's + // always true for unary operators. + .field("prefix", Boolean, defaults["true"]); + var BinaryOperator = or("==", "!=", "===", "!==", "<", "<=", ">", ">=", "<<", ">>", ">>>", "+", "-", "*", "/", "%", "**", "&", // TODO Missing from the Parser API. + "|", "^", "in", "instanceof"); + def("BinaryExpression") + .bases("Expression") + .build("operator", "left", "right") + .field("operator", BinaryOperator) + .field("left", def("Expression")) + .field("right", def("Expression")); + var AssignmentOperator = or("=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", "|=", "^=", "&="); + def("AssignmentExpression") + .bases("Expression") + .build("operator", "left", "right") + .field("operator", AssignmentOperator) + .field("left", or(def("Pattern"), def("MemberExpression"))) + .field("right", def("Expression")); + var UpdateOperator = or("++", "--"); + def("UpdateExpression") + .bases("Expression") + .build("operator", "argument", "prefix") + .field("operator", UpdateOperator) + .field("argument", def("Expression")) + .field("prefix", Boolean); + var LogicalOperator = or("||", "&&"); + def("LogicalExpression") + .bases("Expression") + .build("operator", "left", "right") + .field("operator", LogicalOperator) + .field("left", def("Expression")) + .field("right", def("Expression")); + def("ConditionalExpression") + .bases("Expression") + .build("test", "consequent", "alternate") + .field("test", def("Expression")) + .field("consequent", def("Expression")) + .field("alternate", def("Expression")); + def("NewExpression") + .bases("Expression") + .build("callee", "arguments") + .field("callee", def("Expression")) + // The Mozilla Parser API gives this type as [or(def("Expression"), + // null)], but null values don't really make sense at the call site. + // TODO Report this nonsense. + .field("arguments", [def("Expression")]); + def("CallExpression") + .bases("Expression") + .build("callee", "arguments") + .field("callee", def("Expression")) + // See comment for NewExpression above. + .field("arguments", [def("Expression")]); + def("MemberExpression") + .bases("Expression") + .build("object", "property", "computed") + .field("object", def("Expression")) + .field("property", or(def("Identifier"), def("Expression"))) + .field("computed", Boolean, function () { + var type = this.property.type; + if (type === 'Literal' || + type === 'MemberExpression' || + type === 'BinaryExpression') { + return true; + } + return false; + }); + def("Pattern").bases("Node"); + def("SwitchCase") + .bases("Node") + .build("test", "consequent") + .field("test", or(def("Expression"), null)) + .field("consequent", [def("Statement")]); + def("Identifier") + .bases("Expression", "Pattern") + .build("name") + .field("name", String) + .field("optional", Boolean, defaults["false"]); + def("Literal") + .bases("Expression") + .build("value") + .field("value", or(String, Boolean, null, Number, RegExp)) + .field("regex", or({ + pattern: String, + flags: String + }, null), function () { + if (this.value instanceof RegExp) { + var flags = ""; + if (this.value.ignoreCase) + flags += "i"; + if (this.value.multiline) + flags += "m"; + if (this.value.global) + flags += "g"; + return { + pattern: this.value.source, + flags: flags + }; + } + return null; + }); + // Abstract (non-buildable) comment supertype. Not a Node. + def("Comment") + .bases("Printable") + .field("value", String) + // A .leading comment comes before the node, whereas a .trailing + // comment comes after it. These two fields should not both be true, + // but they might both be false when the comment falls inside a node + // and the node has no children for the comment to lead or trail, + // e.g. { /*dangling*/ }. + .field("leading", Boolean, defaults["true"]) + .field("trailing", Boolean, defaults["false"]); +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es-proposals.js": +/*!*******************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es-proposals.js ***! + \*******************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var shared_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/shared */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/shared.js")); +var core_1 = tslib_1.__importDefault(__webpack_require__(/*! ./core */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/core.js")); +function default_1(fork) { + fork.use(core_1.default); + var types = fork.use(types_1.default); + var Type = types.Type; + var def = types.Type.def; + var or = Type.or; + var shared = fork.use(shared_1.default); + var defaults = shared.defaults; + // https://github.com/tc39/proposal-optional-chaining + // `a?.b` as per https://github.com/estree/estree/issues/146 + def("OptionalMemberExpression") + .bases("MemberExpression") + .build("object", "property", "computed", "optional") + .field("optional", Boolean, defaults["true"]); + // a?.b() + def("OptionalCallExpression") + .bases("CallExpression") + .build("callee", "arguments", "optional") + .field("optional", Boolean, defaults["true"]); + // https://github.com/tc39/proposal-nullish-coalescing + // `a ?? b` as per https://github.com/babel/babylon/pull/761/files + var LogicalOperator = or("||", "&&", "??"); + def("LogicalExpression") + .field("operator", LogicalOperator); +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es2020.js": +/*!*************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es2020.js ***! + \*************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var es7_1 = tslib_1.__importDefault(__webpack_require__(/*! ./es7 */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es7.js")); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +function default_1(fork) { + fork.use(es7_1.default); + var types = fork.use(types_1.default); + var def = types.Type.def; + def("ImportExpression") + .bases("Expression") + .build("source") + .field("source", def("Expression")); +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es6.js": +/*!**********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es6.js ***! + \**********************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var core_1 = tslib_1.__importDefault(__webpack_require__(/*! ./core */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/core.js")); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var shared_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/shared */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/shared.js")); +function default_1(fork) { + fork.use(core_1.default); + var types = fork.use(types_1.default); + var def = types.Type.def; + var or = types.Type.or; + var defaults = fork.use(shared_1.default).defaults; + def("Function") + .field("generator", Boolean, defaults["false"]) + .field("expression", Boolean, defaults["false"]) + .field("defaults", [or(def("Expression"), null)], defaults.emptyArray) + // TODO This could be represented as a RestElement in .params. + .field("rest", or(def("Identifier"), null), defaults["null"]); + // The ESTree way of representing a ...rest parameter. + def("RestElement") + .bases("Pattern") + .build("argument") + .field("argument", def("Pattern")) + .field("typeAnnotation", // for Babylon. Flow parser puts it on the identifier + or(def("TypeAnnotation"), def("TSTypeAnnotation"), null), defaults["null"]); + def("SpreadElementPattern") + .bases("Pattern") + .build("argument") + .field("argument", def("Pattern")); + def("FunctionDeclaration") + .build("id", "params", "body", "generator", "expression"); + def("FunctionExpression") + .build("id", "params", "body", "generator", "expression"); + // The Parser API calls this ArrowExpression, but Esprima and all other + // actual parsers use ArrowFunctionExpression. + def("ArrowFunctionExpression") + .bases("Function", "Expression") + .build("params", "body", "expression") + // The forced null value here is compatible with the overridden + // definition of the "id" field in the Function interface. + .field("id", null, defaults["null"]) + // Arrow function bodies are allowed to be expressions. + .field("body", or(def("BlockStatement"), def("Expression"))) + // The current spec forbids arrow generators, so I have taken the + // liberty of enforcing that. TODO Report this. + .field("generator", false, defaults["false"]); + def("ForOfStatement") + .bases("Statement") + .build("left", "right", "body") + .field("left", or(def("VariableDeclaration"), def("Pattern"))) + .field("right", def("Expression")) + .field("body", def("Statement")); + def("YieldExpression") + .bases("Expression") + .build("argument", "delegate") + .field("argument", or(def("Expression"), null)) + .field("delegate", Boolean, defaults["false"]); + def("GeneratorExpression") + .bases("Expression") + .build("body", "blocks", "filter") + .field("body", def("Expression")) + .field("blocks", [def("ComprehensionBlock")]) + .field("filter", or(def("Expression"), null)); + def("ComprehensionExpression") + .bases("Expression") + .build("body", "blocks", "filter") + .field("body", def("Expression")) + .field("blocks", [def("ComprehensionBlock")]) + .field("filter", or(def("Expression"), null)); + def("ComprehensionBlock") + .bases("Node") + .build("left", "right", "each") + .field("left", def("Pattern")) + .field("right", def("Expression")) + .field("each", Boolean); + def("Property") + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) + .field("value", or(def("Expression"), def("Pattern"))) + .field("method", Boolean, defaults["false"]) + .field("shorthand", Boolean, defaults["false"]) + .field("computed", Boolean, defaults["false"]); + def("ObjectProperty") + .field("shorthand", Boolean, defaults["false"]); + def("PropertyPattern") + .bases("Pattern") + .build("key", "pattern") + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) + .field("pattern", def("Pattern")) + .field("computed", Boolean, defaults["false"]); + def("ObjectPattern") + .bases("Pattern") + .build("properties") + .field("properties", [or(def("PropertyPattern"), def("Property"))]); + def("ArrayPattern") + .bases("Pattern") + .build("elements") + .field("elements", [or(def("Pattern"), null)]); + def("MethodDefinition") + .bases("Declaration") + .build("kind", "key", "value", "static") + .field("kind", or("constructor", "method", "get", "set")) + .field("key", def("Expression")) + .field("value", def("Function")) + .field("computed", Boolean, defaults["false"]) + .field("static", Boolean, defaults["false"]); + def("SpreadElement") + .bases("Node") + .build("argument") + .field("argument", def("Expression")); + def("ArrayExpression") + .field("elements", [or(def("Expression"), def("SpreadElement"), def("RestElement"), null)]); + def("NewExpression") + .field("arguments", [or(def("Expression"), def("SpreadElement"))]); + def("CallExpression") + .field("arguments", [or(def("Expression"), def("SpreadElement"))]); + // Note: this node type is *not* an AssignmentExpression with a Pattern on + // the left-hand side! The existing AssignmentExpression type already + // supports destructuring assignments. AssignmentPattern nodes may appear + // wherever a Pattern is allowed, and the right-hand side represents a + // default value to be destructured against the left-hand side, if no + // value is otherwise provided. For example: default parameter values. + def("AssignmentPattern") + .bases("Pattern") + .build("left", "right") + .field("left", def("Pattern")) + .field("right", def("Expression")); + var ClassBodyElement = or(def("MethodDefinition"), def("VariableDeclarator"), def("ClassPropertyDefinition"), def("ClassProperty")); + def("ClassProperty") + .bases("Declaration") + .build("key") + .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) + .field("computed", Boolean, defaults["false"]); + def("ClassPropertyDefinition") // static property + .bases("Declaration") + .build("definition") + // Yes, Virginia, circular definitions are permitted. + .field("definition", ClassBodyElement); + def("ClassBody") + .bases("Declaration") + .build("body") + .field("body", [ClassBodyElement]); + def("ClassDeclaration") + .bases("Declaration") + .build("id", "body", "superClass") + .field("id", or(def("Identifier"), null)) + .field("body", def("ClassBody")) + .field("superClass", or(def("Expression"), null), defaults["null"]); + def("ClassExpression") + .bases("Expression") + .build("id", "body", "superClass") + .field("id", or(def("Identifier"), null), defaults["null"]) + .field("body", def("ClassBody")) + .field("superClass", or(def("Expression"), null), defaults["null"]); + // Specifier and ModuleSpecifier are abstract non-standard types + // introduced for definitional convenience. + def("Specifier").bases("Node"); + // This supertype is shared/abused by both def/babel.js and + // def/esprima.js. In the future, it will be possible to load only one set + // of definitions appropriate for a given parser, but until then we must + // rely on default functions to reconcile the conflicting AST formats. + def("ModuleSpecifier") + .bases("Specifier") + // This local field is used by Babel/Acorn. It should not technically + // be optional in the Babel/Acorn AST format, but it must be optional + // in the Esprima AST format. + .field("local", or(def("Identifier"), null), defaults["null"]) + // The id and name fields are used by Esprima. The id field should not + // technically be optional in the Esprima AST format, but it must be + // optional in the Babel/Acorn AST format. + .field("id", or(def("Identifier"), null), defaults["null"]) + .field("name", or(def("Identifier"), null), defaults["null"]); + // Like ModuleSpecifier, except type:"ImportSpecifier" and buildable. + // import {} from ...; + def("ImportSpecifier") + .bases("ModuleSpecifier") + .build("id", "name"); + // import <* as id> from ...; + def("ImportNamespaceSpecifier") + .bases("ModuleSpecifier") + .build("id"); + // import from ...; + def("ImportDefaultSpecifier") + .bases("ModuleSpecifier") + .build("id"); + def("ImportDeclaration") + .bases("Declaration") + .build("specifiers", "source", "importKind") + .field("specifiers", [or(def("ImportSpecifier"), def("ImportNamespaceSpecifier"), def("ImportDefaultSpecifier"))], defaults.emptyArray) + .field("source", def("Literal")) + .field("importKind", or("value", "type"), function () { + return "value"; + }); + def("TaggedTemplateExpression") + .bases("Expression") + .build("tag", "quasi") + .field("tag", def("Expression")) + .field("quasi", def("TemplateLiteral")); + def("TemplateLiteral") + .bases("Expression") + .build("quasis", "expressions") + .field("quasis", [def("TemplateElement")]) + .field("expressions", [def("Expression")]); + def("TemplateElement") + .bases("Node") + .build("value", "tail") + .field("value", { "cooked": String, "raw": String }) + .field("tail", Boolean); +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es7.js": +/*!**********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es7.js ***! + \**********************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var es6_1 = tslib_1.__importDefault(__webpack_require__(/*! ./es6 */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es6.js")); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var shared_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/shared */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/shared.js")); +function default_1(fork) { + fork.use(es6_1.default); + var types = fork.use(types_1.default); + var def = types.Type.def; + var or = types.Type.or; + var defaults = fork.use(shared_1.default).defaults; + def("Function") + .field("async", Boolean, defaults["false"]); + def("SpreadProperty") + .bases("Node") + .build("argument") + .field("argument", def("Expression")); + def("ObjectExpression") + .field("properties", [or(def("Property"), def("SpreadProperty"), def("SpreadElement"))]); + def("SpreadPropertyPattern") + .bases("Pattern") + .build("argument") + .field("argument", def("Pattern")); + def("ObjectPattern") + .field("properties", [or(def("Property"), def("PropertyPattern"), def("SpreadPropertyPattern"))]); + def("AwaitExpression") + .bases("Expression") + .build("argument", "all") + .field("argument", or(def("Expression"), null)) + .field("all", Boolean, defaults["false"]); +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/esprima.js": +/*!**************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/esprima.js ***! + \**************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var es7_1 = tslib_1.__importDefault(__webpack_require__(/*! ./es7 */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es7.js")); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var shared_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/shared */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/shared.js")); +function default_1(fork) { + fork.use(es7_1.default); + var types = fork.use(types_1.default); + var defaults = fork.use(shared_1.default).defaults; + var def = types.Type.def; + var or = types.Type.or; + def("VariableDeclaration") + .field("declarations", [or(def("VariableDeclarator"), def("Identifier") // Esprima deviation. + )]); + def("Property") + .field("value", or(def("Expression"), def("Pattern") // Esprima deviation. + )); + def("ArrayPattern") + .field("elements", [or(def("Pattern"), def("SpreadElement"), null)]); + def("ObjectPattern") + .field("properties", [or(def("Property"), def("PropertyPattern"), def("SpreadPropertyPattern"), def("SpreadProperty") // Used by Esprima. + )]); + // Like ModuleSpecifier, except type:"ExportSpecifier" and buildable. + // export {} [from ...]; + def("ExportSpecifier") + .bases("ModuleSpecifier") + .build("id", "name"); + // export <*> from ...; + def("ExportBatchSpecifier") + .bases("Specifier") + .build(); + def("ExportDeclaration") + .bases("Declaration") + .build("default", "declaration", "specifiers", "source") + .field("default", Boolean) + .field("declaration", or(def("Declaration"), def("Expression"), // Implies default. + null)) + .field("specifiers", [or(def("ExportSpecifier"), def("ExportBatchSpecifier"))], defaults.emptyArray) + .field("source", or(def("Literal"), null), defaults["null"]); + def("Block") + .bases("Comment") + .build("value", /*optional:*/ "leading", "trailing"); + def("Line") + .bases("Comment") + .build("value", /*optional:*/ "leading", "trailing"); +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/flow.js": +/*!***********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/flow.js ***! + \***********************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var es7_1 = tslib_1.__importDefault(__webpack_require__(/*! ./es7 */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es7.js")); +var type_annotations_1 = tslib_1.__importDefault(__webpack_require__(/*! ./type-annotations */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/type-annotations.js")); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var shared_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/shared */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/shared.js")); +function default_1(fork) { + fork.use(es7_1.default); + fork.use(type_annotations_1.default); + var types = fork.use(types_1.default); + var def = types.Type.def; + var or = types.Type.or; + var defaults = fork.use(shared_1.default).defaults; + // Base types + def("Flow").bases("Node"); + def("FlowType").bases("Flow"); + // Type annotations + def("AnyTypeAnnotation") + .bases("FlowType") + .build(); + def("EmptyTypeAnnotation") + .bases("FlowType") + .build(); + def("MixedTypeAnnotation") + .bases("FlowType") + .build(); + def("VoidTypeAnnotation") + .bases("FlowType") + .build(); + def("NumberTypeAnnotation") + .bases("FlowType") + .build(); + def("NumberLiteralTypeAnnotation") + .bases("FlowType") + .build("value", "raw") + .field("value", Number) + .field("raw", String); + // Babylon 6 differs in AST from Flow + // same as NumberLiteralTypeAnnotation + def("NumericLiteralTypeAnnotation") + .bases("FlowType") + .build("value", "raw") + .field("value", Number) + .field("raw", String); + def("StringTypeAnnotation") + .bases("FlowType") + .build(); + def("StringLiteralTypeAnnotation") + .bases("FlowType") + .build("value", "raw") + .field("value", String) + .field("raw", String); + def("BooleanTypeAnnotation") + .bases("FlowType") + .build(); + def("BooleanLiteralTypeAnnotation") + .bases("FlowType") + .build("value", "raw") + .field("value", Boolean) + .field("raw", String); + def("TypeAnnotation") + .bases("Node") + .build("typeAnnotation") + .field("typeAnnotation", def("FlowType")); + def("NullableTypeAnnotation") + .bases("FlowType") + .build("typeAnnotation") + .field("typeAnnotation", def("FlowType")); + def("NullLiteralTypeAnnotation") + .bases("FlowType") + .build(); + def("NullTypeAnnotation") + .bases("FlowType") + .build(); + def("ThisTypeAnnotation") + .bases("FlowType") + .build(); + def("ExistsTypeAnnotation") + .bases("FlowType") + .build(); + def("ExistentialTypeParam") + .bases("FlowType") + .build(); + def("FunctionTypeAnnotation") + .bases("FlowType") + .build("params", "returnType", "rest", "typeParameters") + .field("params", [def("FunctionTypeParam")]) + .field("returnType", def("FlowType")) + .field("rest", or(def("FunctionTypeParam"), null)) + .field("typeParameters", or(def("TypeParameterDeclaration"), null)); + def("FunctionTypeParam") + .bases("Node") + .build("name", "typeAnnotation", "optional") + .field("name", def("Identifier")) + .field("typeAnnotation", def("FlowType")) + .field("optional", Boolean); + def("ArrayTypeAnnotation") + .bases("FlowType") + .build("elementType") + .field("elementType", def("FlowType")); + def("ObjectTypeAnnotation") + .bases("FlowType") + .build("properties", "indexers", "callProperties") + .field("properties", [ + or(def("ObjectTypeProperty"), def("ObjectTypeSpreadProperty")) + ]) + .field("indexers", [def("ObjectTypeIndexer")], defaults.emptyArray) + .field("callProperties", [def("ObjectTypeCallProperty")], defaults.emptyArray) + .field("inexact", or(Boolean, void 0), defaults["undefined"]) + .field("exact", Boolean, defaults["false"]) + .field("internalSlots", [def("ObjectTypeInternalSlot")], defaults.emptyArray); + def("Variance") + .bases("Node") + .build("kind") + .field("kind", or("plus", "minus")); + var LegacyVariance = or(def("Variance"), "plus", "minus", null); + def("ObjectTypeProperty") + .bases("Node") + .build("key", "value", "optional") + .field("key", or(def("Literal"), def("Identifier"))) + .field("value", def("FlowType")) + .field("optional", Boolean) + .field("variance", LegacyVariance, defaults["null"]); + def("ObjectTypeIndexer") + .bases("Node") + .build("id", "key", "value") + .field("id", def("Identifier")) + .field("key", def("FlowType")) + .field("value", def("FlowType")) + .field("variance", LegacyVariance, defaults["null"]); + def("ObjectTypeCallProperty") + .bases("Node") + .build("value") + .field("value", def("FunctionTypeAnnotation")) + .field("static", Boolean, defaults["false"]); + def("QualifiedTypeIdentifier") + .bases("Node") + .build("qualification", "id") + .field("qualification", or(def("Identifier"), def("QualifiedTypeIdentifier"))) + .field("id", def("Identifier")); + def("GenericTypeAnnotation") + .bases("FlowType") + .build("id", "typeParameters") + .field("id", or(def("Identifier"), def("QualifiedTypeIdentifier"))) + .field("typeParameters", or(def("TypeParameterInstantiation"), null)); + def("MemberTypeAnnotation") + .bases("FlowType") + .build("object", "property") + .field("object", def("Identifier")) + .field("property", or(def("MemberTypeAnnotation"), def("GenericTypeAnnotation"))); + def("UnionTypeAnnotation") + .bases("FlowType") + .build("types") + .field("types", [def("FlowType")]); + def("IntersectionTypeAnnotation") + .bases("FlowType") + .build("types") + .field("types", [def("FlowType")]); + def("TypeofTypeAnnotation") + .bases("FlowType") + .build("argument") + .field("argument", def("FlowType")); + def("ObjectTypeSpreadProperty") + .bases("Node") + .build("argument") + .field("argument", def("FlowType")); + def("ObjectTypeInternalSlot") + .bases("Node") + .build("id", "value", "optional", "static", "method") + .field("id", def("Identifier")) + .field("value", def("FlowType")) + .field("optional", Boolean) + .field("static", Boolean) + .field("method", Boolean); + def("TypeParameterDeclaration") + .bases("Node") + .build("params") + .field("params", [def("TypeParameter")]); + def("TypeParameterInstantiation") + .bases("Node") + .build("params") + .field("params", [def("FlowType")]); + def("TypeParameter") + .bases("FlowType") + .build("name", "variance", "bound") + .field("name", String) + .field("variance", LegacyVariance, defaults["null"]) + .field("bound", or(def("TypeAnnotation"), null), defaults["null"]); + def("ClassProperty") + .field("variance", LegacyVariance, defaults["null"]); + def("ClassImplements") + .bases("Node") + .build("id") + .field("id", def("Identifier")) + .field("superClass", or(def("Expression"), null), defaults["null"]) + .field("typeParameters", or(def("TypeParameterInstantiation"), null), defaults["null"]); + def("InterfaceTypeAnnotation") + .bases("FlowType") + .build("body", "extends") + .field("body", def("ObjectTypeAnnotation")) + .field("extends", or([def("InterfaceExtends")], null), defaults["null"]); + def("InterfaceDeclaration") + .bases("Declaration") + .build("id", "body", "extends") + .field("id", def("Identifier")) + .field("typeParameters", or(def("TypeParameterDeclaration"), null), defaults["null"]) + .field("body", def("ObjectTypeAnnotation")) + .field("extends", [def("InterfaceExtends")]); + def("DeclareInterface") + .bases("InterfaceDeclaration") + .build("id", "body", "extends"); + def("InterfaceExtends") + .bases("Node") + .build("id") + .field("id", def("Identifier")) + .field("typeParameters", or(def("TypeParameterInstantiation"), null), defaults["null"]); + def("TypeAlias") + .bases("Declaration") + .build("id", "typeParameters", "right") + .field("id", def("Identifier")) + .field("typeParameters", or(def("TypeParameterDeclaration"), null)) + .field("right", def("FlowType")); + def("OpaqueType") + .bases("Declaration") + .build("id", "typeParameters", "impltype", "supertype") + .field("id", def("Identifier")) + .field("typeParameters", or(def("TypeParameterDeclaration"), null)) + .field("impltype", def("FlowType")) + .field("supertype", def("FlowType")); + def("DeclareTypeAlias") + .bases("TypeAlias") + .build("id", "typeParameters", "right"); + def("DeclareOpaqueType") + .bases("TypeAlias") + .build("id", "typeParameters", "supertype"); + def("TypeCastExpression") + .bases("Expression") + .build("expression", "typeAnnotation") + .field("expression", def("Expression")) + .field("typeAnnotation", def("TypeAnnotation")); + def("TupleTypeAnnotation") + .bases("FlowType") + .build("types") + .field("types", [def("FlowType")]); + def("DeclareVariable") + .bases("Statement") + .build("id") + .field("id", def("Identifier")); + def("DeclareFunction") + .bases("Statement") + .build("id") + .field("id", def("Identifier")); + def("DeclareClass") + .bases("InterfaceDeclaration") + .build("id"); + def("DeclareModule") + .bases("Statement") + .build("id", "body") + .field("id", or(def("Identifier"), def("Literal"))) + .field("body", def("BlockStatement")); + def("DeclareModuleExports") + .bases("Statement") + .build("typeAnnotation") + .field("typeAnnotation", def("TypeAnnotation")); + def("DeclareExportDeclaration") + .bases("Declaration") + .build("default", "declaration", "specifiers", "source") + .field("default", Boolean) + .field("declaration", or(def("DeclareVariable"), def("DeclareFunction"), def("DeclareClass"), def("FlowType"), // Implies default. + null)) + .field("specifiers", [or(def("ExportSpecifier"), def("ExportBatchSpecifier"))], defaults.emptyArray) + .field("source", or(def("Literal"), null), defaults["null"]); + def("DeclareExportAllDeclaration") + .bases("Declaration") + .build("source") + .field("source", or(def("Literal"), null), defaults["null"]); + def("FlowPredicate").bases("Flow"); + def("InferredPredicate") + .bases("FlowPredicate") + .build(); + def("DeclaredPredicate") + .bases("FlowPredicate") + .build("value") + .field("value", def("Expression")); + def("CallExpression") + .field("typeArguments", or(null, def("TypeParameterInstantiation")), defaults["null"]); + def("NewExpression") + .field("typeArguments", or(null, def("TypeParameterInstantiation")), defaults["null"]); +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/jsx.js": +/*!**********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/jsx.js ***! + \**********************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var es7_1 = tslib_1.__importDefault(__webpack_require__(/*! ./es7 */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es7.js")); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var shared_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/shared */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/shared.js")); +function default_1(fork) { + fork.use(es7_1.default); + var types = fork.use(types_1.default); + var def = types.Type.def; + var or = types.Type.or; + var defaults = fork.use(shared_1.default).defaults; + def("JSXAttribute") + .bases("Node") + .build("name", "value") + .field("name", or(def("JSXIdentifier"), def("JSXNamespacedName"))) + .field("value", or(def("Literal"), // attr="value" + def("JSXExpressionContainer"), // attr={value} + null // attr= or just attr + ), defaults["null"]); + def("JSXIdentifier") + .bases("Identifier") + .build("name") + .field("name", String); + def("JSXNamespacedName") + .bases("Node") + .build("namespace", "name") + .field("namespace", def("JSXIdentifier")) + .field("name", def("JSXIdentifier")); + def("JSXMemberExpression") + .bases("MemberExpression") + .build("object", "property") + .field("object", or(def("JSXIdentifier"), def("JSXMemberExpression"))) + .field("property", def("JSXIdentifier")) + .field("computed", Boolean, defaults.false); + var JSXElementName = or(def("JSXIdentifier"), def("JSXNamespacedName"), def("JSXMemberExpression")); + def("JSXSpreadAttribute") + .bases("Node") + .build("argument") + .field("argument", def("Expression")); + var JSXAttributes = [or(def("JSXAttribute"), def("JSXSpreadAttribute"))]; + def("JSXExpressionContainer") + .bases("Expression") + .build("expression") + .field("expression", def("Expression")); + def("JSXElement") + .bases("Expression") + .build("openingElement", "closingElement", "children") + .field("openingElement", def("JSXOpeningElement")) + .field("closingElement", or(def("JSXClosingElement"), null), defaults["null"]) + .field("children", [or(def("JSXElement"), def("JSXExpressionContainer"), def("JSXFragment"), def("JSXText"), def("Literal") // TODO Esprima should return JSXText instead. + )], defaults.emptyArray) + .field("name", JSXElementName, function () { + // Little-known fact: the `this` object inside a default function + // is none other than the partially-built object itself, and any + // fields initialized directly from builder function arguments + // (like openingElement, closingElement, and children) are + // guaranteed to be available. + return this.openingElement.name; + }, true) // hidden from traversal + .field("selfClosing", Boolean, function () { + return this.openingElement.selfClosing; + }, true) // hidden from traversal + .field("attributes", JSXAttributes, function () { + return this.openingElement.attributes; + }, true); // hidden from traversal + def("JSXOpeningElement") + .bases("Node") // TODO Does this make sense? Can't really be an JSXElement. + .build("name", "attributes", "selfClosing") + .field("name", JSXElementName) + .field("attributes", JSXAttributes, defaults.emptyArray) + .field("selfClosing", Boolean, defaults["false"]); + def("JSXClosingElement") + .bases("Node") // TODO Same concern. + .build("name") + .field("name", JSXElementName); + def("JSXFragment") + .bases("Expression") + .build("openingElement", "closingElement", "children") + .field("openingElement", def("JSXOpeningFragment")) + .field("closingElement", def("JSXClosingFragment")) + .field("children", [or(def("JSXElement"), def("JSXExpressionContainer"), def("JSXFragment"), def("JSXText"), def("Literal") // TODO Esprima should return JSXText instead. + )], defaults.emptyArray); + def("JSXOpeningFragment") + .bases("Node") // TODO Same concern. + .build(); + def("JSXClosingFragment") + .bases("Node") // TODO Same concern. + .build(); + def("JSXText") + .bases("Literal") + .build("value") + .field("value", String); + def("JSXEmptyExpression").bases("Expression").build(); + // This PR has caused many people issues, but supporting it seems like a + // good idea anyway: https://github.com/babel/babel/pull/4988 + def("JSXSpreadChild") + .bases("Expression") + .build("expression") + .field("expression", def("Expression")); +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/type-annotations.js": +/*!***********************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/type-annotations.js ***! + \***********************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +/** + * Type annotation defs shared between Flow and TypeScript. + * These defs could not be defined in ./flow.ts or ./typescript.ts directly + * because they use the same name. + */ +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var shared_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/shared */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/shared.js")); +function default_1(fork) { + var types = fork.use(types_1.default); + var def = types.Type.def; + var or = types.Type.or; + var defaults = fork.use(shared_1.default).defaults; + var TypeAnnotation = or(def("TypeAnnotation"), def("TSTypeAnnotation"), null); + var TypeParamDecl = or(def("TypeParameterDeclaration"), def("TSTypeParameterDeclaration"), null); + def("Identifier") + .field("typeAnnotation", TypeAnnotation, defaults["null"]); + def("ObjectPattern") + .field("typeAnnotation", TypeAnnotation, defaults["null"]); + def("Function") + .field("returnType", TypeAnnotation, defaults["null"]) + .field("typeParameters", TypeParamDecl, defaults["null"]); + def("ClassProperty") + .build("key", "value", "typeAnnotation", "static") + .field("value", or(def("Expression"), null)) + .field("static", Boolean, defaults["false"]) + .field("typeAnnotation", TypeAnnotation, defaults["null"]); + ["ClassDeclaration", + "ClassExpression", + ].forEach(function (typeName) { + def(typeName) + .field("typeParameters", TypeParamDecl, defaults["null"]) + .field("superTypeParameters", or(def("TypeParameterInstantiation"), def("TSTypeParameterInstantiation"), null), defaults["null"]) + .field("implements", or([def("ClassImplements")], [def("TSExpressionWithTypeArguments")]), defaults.emptyArray); + }); +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/typescript.js": +/*!*****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/typescript.js ***! + \*****************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var babel_core_1 = tslib_1.__importDefault(__webpack_require__(/*! ./babel-core */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/babel-core.js")); +var type_annotations_1 = tslib_1.__importDefault(__webpack_require__(/*! ./type-annotations */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/type-annotations.js")); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var shared_1 = tslib_1.__importDefault(__webpack_require__(/*! ../lib/shared */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/shared.js")); +function default_1(fork) { + // Since TypeScript is parsed by Babylon, include the core Babylon types + // but omit the Flow-related types. + fork.use(babel_core_1.default); + fork.use(type_annotations_1.default); + var types = fork.use(types_1.default); + var n = types.namedTypes; + var def = types.Type.def; + var or = types.Type.or; + var defaults = fork.use(shared_1.default).defaults; + var StringLiteral = types.Type.from(function (value, deep) { + if (n.StringLiteral && + n.StringLiteral.check(value, deep)) { + return true; + } + if (n.Literal && + n.Literal.check(value, deep) && + typeof value.value === "string") { + return true; + } + return false; + }, "StringLiteral"); + def("TSType") + .bases("Node"); + var TSEntityName = or(def("Identifier"), def("TSQualifiedName")); + def("TSTypeReference") + .bases("TSType", "TSHasOptionalTypeParameterInstantiation") + .build("typeName", "typeParameters") + .field("typeName", TSEntityName); + // An abstract (non-buildable) base type that provide a commonly-needed + // optional .typeParameters field. + def("TSHasOptionalTypeParameterInstantiation") + .field("typeParameters", or(def("TSTypeParameterInstantiation"), null), defaults["null"]); + // An abstract (non-buildable) base type that provide a commonly-needed + // optional .typeParameters field. + def("TSHasOptionalTypeParameters") + .field("typeParameters", or(def("TSTypeParameterDeclaration"), null, void 0), defaults["null"]); + // An abstract (non-buildable) base type that provide a commonly-needed + // optional .typeAnnotation field. + def("TSHasOptionalTypeAnnotation") + .field("typeAnnotation", or(def("TSTypeAnnotation"), null), defaults["null"]); + def("TSQualifiedName") + .bases("Node") + .build("left", "right") + .field("left", TSEntityName) + .field("right", TSEntityName); + def("TSAsExpression") + .bases("Expression", "Pattern") + .build("expression", "typeAnnotation") + .field("expression", def("Expression")) + .field("typeAnnotation", def("TSType")) + .field("extra", or({ parenthesized: Boolean }, null), defaults["null"]); + def("TSNonNullExpression") + .bases("Expression", "Pattern") + .build("expression") + .field("expression", def("Expression")); + [ + "TSAnyKeyword", + "TSBigIntKeyword", + "TSBooleanKeyword", + "TSNeverKeyword", + "TSNullKeyword", + "TSNumberKeyword", + "TSObjectKeyword", + "TSStringKeyword", + "TSSymbolKeyword", + "TSUndefinedKeyword", + "TSUnknownKeyword", + "TSVoidKeyword", + "TSThisType", + ].forEach(function (keywordType) { + def(keywordType) + .bases("TSType") + .build(); + }); + def("TSArrayType") + .bases("TSType") + .build("elementType") + .field("elementType", def("TSType")); + def("TSLiteralType") + .bases("TSType") + .build("literal") + .field("literal", or(def("NumericLiteral"), def("StringLiteral"), def("BooleanLiteral"), def("TemplateLiteral"), def("UnaryExpression"))); + ["TSUnionType", + "TSIntersectionType", + ].forEach(function (typeName) { + def(typeName) + .bases("TSType") + .build("types") + .field("types", [def("TSType")]); + }); + def("TSConditionalType") + .bases("TSType") + .build("checkType", "extendsType", "trueType", "falseType") + .field("checkType", def("TSType")) + .field("extendsType", def("TSType")) + .field("trueType", def("TSType")) + .field("falseType", def("TSType")); + def("TSInferType") + .bases("TSType") + .build("typeParameter") + .field("typeParameter", def("TSTypeParameter")); + def("TSParenthesizedType") + .bases("TSType") + .build("typeAnnotation") + .field("typeAnnotation", def("TSType")); + var ParametersType = [or(def("Identifier"), def("RestElement"), def("ArrayPattern"), def("ObjectPattern"))]; + ["TSFunctionType", + "TSConstructorType", + ].forEach(function (typeName) { + def(typeName) + .bases("TSType", "TSHasOptionalTypeParameters", "TSHasOptionalTypeAnnotation") + .build("parameters") + .field("parameters", ParametersType); + }); + def("TSDeclareFunction") + .bases("Declaration", "TSHasOptionalTypeParameters") + .build("id", "params", "returnType") + .field("declare", Boolean, defaults["false"]) + .field("async", Boolean, defaults["false"]) + .field("generator", Boolean, defaults["false"]) + .field("id", or(def("Identifier"), null), defaults["null"]) + .field("params", [def("Pattern")]) + // tSFunctionTypeAnnotationCommon + .field("returnType", or(def("TSTypeAnnotation"), def("Noop"), // Still used? + null), defaults["null"]); + def("TSDeclareMethod") + .bases("Declaration", "TSHasOptionalTypeParameters") + .build("key", "params", "returnType") + .field("async", Boolean, defaults["false"]) + .field("generator", Boolean, defaults["false"]) + .field("params", [def("Pattern")]) + // classMethodOrPropertyCommon + .field("abstract", Boolean, defaults["false"]) + .field("accessibility", or("public", "private", "protected", void 0), defaults["undefined"]) + .field("static", Boolean, defaults["false"]) + .field("computed", Boolean, defaults["false"]) + .field("optional", Boolean, defaults["false"]) + .field("key", or(def("Identifier"), def("StringLiteral"), def("NumericLiteral"), + // Only allowed if .computed is true. + def("Expression"))) + // classMethodOrDeclareMethodCommon + .field("kind", or("get", "set", "method", "constructor"), function getDefault() { return "method"; }) + .field("access", // Not "accessibility"? + or("public", "private", "protected", void 0), defaults["undefined"]) + .field("decorators", or([def("Decorator")], null), defaults["null"]) + // tSFunctionTypeAnnotationCommon + .field("returnType", or(def("TSTypeAnnotation"), def("Noop"), // Still used? + null), defaults["null"]); + def("TSMappedType") + .bases("TSType") + .build("typeParameter", "typeAnnotation") + .field("readonly", or(Boolean, "+", "-"), defaults["false"]) + .field("typeParameter", def("TSTypeParameter")) + .field("optional", or(Boolean, "+", "-"), defaults["false"]) + .field("typeAnnotation", or(def("TSType"), null), defaults["null"]); + def("TSTupleType") + .bases("TSType") + .build("elementTypes") + .field("elementTypes", [or(def("TSType"), def("TSNamedTupleMember"))]); + def("TSNamedTupleMember") + .bases("TSType") + .build("label", "elementType", "optional") + .field("label", def("Identifier")) + .field("optional", Boolean, defaults["false"]) + .field("elementType", def("TSType")); + def("TSRestType") + .bases("TSType") + .build("typeAnnotation") + .field("typeAnnotation", def("TSType")); + def("TSOptionalType") + .bases("TSType") + .build("typeAnnotation") + .field("typeAnnotation", def("TSType")); + def("TSIndexedAccessType") + .bases("TSType") + .build("objectType", "indexType") + .field("objectType", def("TSType")) + .field("indexType", def("TSType")); + def("TSTypeOperator") + .bases("TSType") + .build("operator") + .field("operator", String) + .field("typeAnnotation", def("TSType")); + def("TSTypeAnnotation") + .bases("Node") + .build("typeAnnotation") + .field("typeAnnotation", or(def("TSType"), def("TSTypeAnnotation"))); + def("TSIndexSignature") + .bases("Declaration", "TSHasOptionalTypeAnnotation") + .build("parameters", "typeAnnotation") + .field("parameters", [def("Identifier")]) // Length === 1 + .field("readonly", Boolean, defaults["false"]); + def("TSPropertySignature") + .bases("Declaration", "TSHasOptionalTypeAnnotation") + .build("key", "typeAnnotation", "optional") + .field("key", def("Expression")) + .field("computed", Boolean, defaults["false"]) + .field("readonly", Boolean, defaults["false"]) + .field("optional", Boolean, defaults["false"]) + .field("initializer", or(def("Expression"), null), defaults["null"]); + def("TSMethodSignature") + .bases("Declaration", "TSHasOptionalTypeParameters", "TSHasOptionalTypeAnnotation") + .build("key", "parameters", "typeAnnotation") + .field("key", def("Expression")) + .field("computed", Boolean, defaults["false"]) + .field("optional", Boolean, defaults["false"]) + .field("parameters", ParametersType); + def("TSTypePredicate") + .bases("TSTypeAnnotation", "TSType") + .build("parameterName", "typeAnnotation", "asserts") + .field("parameterName", or(def("Identifier"), def("TSThisType"))) + .field("typeAnnotation", or(def("TSTypeAnnotation"), null), defaults["null"]) + .field("asserts", Boolean, defaults["false"]); + ["TSCallSignatureDeclaration", + "TSConstructSignatureDeclaration", + ].forEach(function (typeName) { + def(typeName) + .bases("Declaration", "TSHasOptionalTypeParameters", "TSHasOptionalTypeAnnotation") + .build("parameters", "typeAnnotation") + .field("parameters", ParametersType); + }); + def("TSEnumMember") + .bases("Node") + .build("id", "initializer") + .field("id", or(def("Identifier"), StringLiteral)) + .field("initializer", or(def("Expression"), null), defaults["null"]); + def("TSTypeQuery") + .bases("TSType") + .build("exprName") + .field("exprName", or(TSEntityName, def("TSImportType"))); + // Inferred from Babylon's tsParseTypeMember method. + var TSTypeMember = or(def("TSCallSignatureDeclaration"), def("TSConstructSignatureDeclaration"), def("TSIndexSignature"), def("TSMethodSignature"), def("TSPropertySignature")); + def("TSTypeLiteral") + .bases("TSType") + .build("members") + .field("members", [TSTypeMember]); + def("TSTypeParameter") + .bases("Identifier") + .build("name", "constraint", "default") + .field("name", String) + .field("constraint", or(def("TSType"), void 0), defaults["undefined"]) + .field("default", or(def("TSType"), void 0), defaults["undefined"]); + def("TSTypeAssertion") + .bases("Expression", "Pattern") + .build("typeAnnotation", "expression") + .field("typeAnnotation", def("TSType")) + .field("expression", def("Expression")) + .field("extra", or({ parenthesized: Boolean }, null), defaults["null"]); + def("TSTypeParameterDeclaration") + .bases("Declaration") + .build("params") + .field("params", [def("TSTypeParameter")]); + def("TSTypeParameterInstantiation") + .bases("Node") + .build("params") + .field("params", [def("TSType")]); + def("TSEnumDeclaration") + .bases("Declaration") + .build("id", "members") + .field("id", def("Identifier")) + .field("const", Boolean, defaults["false"]) + .field("declare", Boolean, defaults["false"]) + .field("members", [def("TSEnumMember")]) + .field("initializer", or(def("Expression"), null), defaults["null"]); + def("TSTypeAliasDeclaration") + .bases("Declaration", "TSHasOptionalTypeParameters") + .build("id", "typeAnnotation") + .field("id", def("Identifier")) + .field("declare", Boolean, defaults["false"]) + .field("typeAnnotation", def("TSType")); + def("TSModuleBlock") + .bases("Node") + .build("body") + .field("body", [def("Statement")]); + def("TSModuleDeclaration") + .bases("Declaration") + .build("id", "body") + .field("id", or(StringLiteral, TSEntityName)) + .field("declare", Boolean, defaults["false"]) + .field("global", Boolean, defaults["false"]) + .field("body", or(def("TSModuleBlock"), def("TSModuleDeclaration"), null), defaults["null"]); + def("TSImportType") + .bases("TSType", "TSHasOptionalTypeParameterInstantiation") + .build("argument", "qualifier", "typeParameters") + .field("argument", StringLiteral) + .field("qualifier", or(TSEntityName, void 0), defaults["undefined"]); + def("TSImportEqualsDeclaration") + .bases("Declaration") + .build("id", "moduleReference") + .field("id", def("Identifier")) + .field("isExport", Boolean, defaults["false"]) + .field("moduleReference", or(TSEntityName, def("TSExternalModuleReference"))); + def("TSExternalModuleReference") + .bases("Declaration") + .build("expression") + .field("expression", StringLiteral); + def("TSExportAssignment") + .bases("Statement") + .build("expression") + .field("expression", def("Expression")); + def("TSNamespaceExportDeclaration") + .bases("Declaration") + .build("id") + .field("id", def("Identifier")); + def("TSInterfaceBody") + .bases("Node") + .build("body") + .field("body", [TSTypeMember]); + def("TSExpressionWithTypeArguments") + .bases("TSType", "TSHasOptionalTypeParameterInstantiation") + .build("expression", "typeParameters") + .field("expression", TSEntityName); + def("TSInterfaceDeclaration") + .bases("Declaration", "TSHasOptionalTypeParameters") + .build("id", "body") + .field("id", TSEntityName) + .field("declare", Boolean, defaults["false"]) + .field("extends", or([def("TSExpressionWithTypeArguments")], null), defaults["null"]) + .field("body", def("TSInterfaceBody")); + def("TSParameterProperty") + .bases("Pattern") + .build("parameter") + .field("accessibility", or("public", "private", "protected", void 0), defaults["undefined"]) + .field("readonly", Boolean, defaults["false"]) + .field("parameter", or(def("Identifier"), def("AssignmentPattern"))); + def("ClassProperty") + .field("access", // Not "accessibility"? + or("public", "private", "protected", void 0), defaults["undefined"]); + // Defined already in es6 and babel-core. + def("ClassBody") + .field("body", [or(def("MethodDefinition"), def("VariableDeclarator"), def("ClassPropertyDefinition"), def("ClassProperty"), def("ClassPrivateProperty"), def("ClassMethod"), def("ClassPrivateMethod"), + // Just need to add these types: + def("TSDeclareMethod"), TSTypeMember)]); +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/fork.js": +/*!*******************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/fork.js ***! + \*******************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ./lib/types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var path_visitor_1 = tslib_1.__importDefault(__webpack_require__(/*! ./lib/path-visitor */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/path-visitor.js")); +var equiv_1 = tslib_1.__importDefault(__webpack_require__(/*! ./lib/equiv */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/equiv.js")); +var path_1 = tslib_1.__importDefault(__webpack_require__(/*! ./lib/path */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/path.js")); +var node_path_1 = tslib_1.__importDefault(__webpack_require__(/*! ./lib/node-path */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/node-path.js")); +function default_1(defs) { + var fork = createFork(); + var types = fork.use(types_1.default); + defs.forEach(fork.use); + types.finalize(); + var PathVisitor = fork.use(path_visitor_1.default); + return { + Type: types.Type, + builtInTypes: types.builtInTypes, + namedTypes: types.namedTypes, + builders: types.builders, + defineMethod: types.defineMethod, + getFieldNames: types.getFieldNames, + getFieldValue: types.getFieldValue, + eachField: types.eachField, + someField: types.someField, + getSupertypeNames: types.getSupertypeNames, + getBuilderName: types.getBuilderName, + astNodesAreEquivalent: fork.use(equiv_1.default), + finalize: types.finalize, + Path: fork.use(path_1.default), + NodePath: fork.use(node_path_1.default), + PathVisitor: PathVisitor, + use: fork.use, + visit: PathVisitor.visit, + }; +} +exports["default"] = default_1; +function createFork() { + var used = []; + var usedResult = []; + function use(plugin) { + var idx = used.indexOf(plugin); + if (idx === -1) { + idx = used.length; + used.push(plugin); + usedResult[idx] = plugin(fork); + } + return usedResult[idx]; + } + var fork = { use: use }; + return fork; +} +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/gen/namedTypes.js": +/*!*****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/gen/namedTypes.js ***! + \*****************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.namedTypes = void 0; +var namedTypes; +(function (namedTypes) { +})(namedTypes = exports.namedTypes || (exports.namedTypes = {})); + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/equiv.js": +/*!************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/equiv.js ***! + \************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ./types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +function default_1(fork) { + var types = fork.use(types_1.default); + var getFieldNames = types.getFieldNames; + var getFieldValue = types.getFieldValue; + var isArray = types.builtInTypes.array; + var isObject = types.builtInTypes.object; + var isDate = types.builtInTypes.Date; + var isRegExp = types.builtInTypes.RegExp; + var hasOwn = Object.prototype.hasOwnProperty; + function astNodesAreEquivalent(a, b, problemPath) { + if (isArray.check(problemPath)) { + problemPath.length = 0; + } + else { + problemPath = null; + } + return areEquivalent(a, b, problemPath); + } + astNodesAreEquivalent.assert = function (a, b) { + var problemPath = []; + if (!astNodesAreEquivalent(a, b, problemPath)) { + if (problemPath.length === 0) { + if (a !== b) { + throw new Error("Nodes must be equal"); + } + } + else { + throw new Error("Nodes differ in the following path: " + + problemPath.map(subscriptForProperty).join("")); + } + } + }; + function subscriptForProperty(property) { + if (/[_$a-z][_$a-z0-9]*/i.test(property)) { + return "." + property; + } + return "[" + JSON.stringify(property) + "]"; + } + function areEquivalent(a, b, problemPath) { + if (a === b) { + return true; + } + if (isArray.check(a)) { + return arraysAreEquivalent(a, b, problemPath); + } + if (isObject.check(a)) { + return objectsAreEquivalent(a, b, problemPath); + } + if (isDate.check(a)) { + return isDate.check(b) && (+a === +b); + } + if (isRegExp.check(a)) { + return isRegExp.check(b) && (a.source === b.source && + a.global === b.global && + a.multiline === b.multiline && + a.ignoreCase === b.ignoreCase); + } + return a == b; + } + function arraysAreEquivalent(a, b, problemPath) { + isArray.assert(a); + var aLength = a.length; + if (!isArray.check(b) || b.length !== aLength) { + if (problemPath) { + problemPath.push("length"); + } + return false; + } + for (var i = 0; i < aLength; ++i) { + if (problemPath) { + problemPath.push(i); + } + if (i in a !== i in b) { + return false; + } + if (!areEquivalent(a[i], b[i], problemPath)) { + return false; + } + if (problemPath) { + var problemPathTail = problemPath.pop(); + if (problemPathTail !== i) { + throw new Error("" + problemPathTail); + } + } + } + return true; + } + function objectsAreEquivalent(a, b, problemPath) { + isObject.assert(a); + if (!isObject.check(b)) { + return false; + } + // Fast path for a common property of AST nodes. + if (a.type !== b.type) { + if (problemPath) { + problemPath.push("type"); + } + return false; + } + var aNames = getFieldNames(a); + var aNameCount = aNames.length; + var bNames = getFieldNames(b); + var bNameCount = bNames.length; + if (aNameCount === bNameCount) { + for (var i = 0; i < aNameCount; ++i) { + var name = aNames[i]; + var aChild = getFieldValue(a, name); + var bChild = getFieldValue(b, name); + if (problemPath) { + problemPath.push(name); + } + if (!areEquivalent(aChild, bChild, problemPath)) { + return false; + } + if (problemPath) { + var problemPathTail = problemPath.pop(); + if (problemPathTail !== name) { + throw new Error("" + problemPathTail); + } + } + } + return true; + } + if (!problemPath) { + return false; + } + // Since aNameCount !== bNameCount, we need to find some name that's + // missing in aNames but present in bNames, or vice-versa. + var seenNames = Object.create(null); + for (i = 0; i < aNameCount; ++i) { + seenNames[aNames[i]] = true; + } + for (i = 0; i < bNameCount; ++i) { + name = bNames[i]; + if (!hasOwn.call(seenNames, name)) { + problemPath.push(name); + return false; + } + delete seenNames[name]; + } + for (name in seenNames) { + problemPath.push(name); + break; + } + return false; + } + return astNodesAreEquivalent; +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/node-path.js": +/*!****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/node-path.js ***! + \****************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ./types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var path_1 = tslib_1.__importDefault(__webpack_require__(/*! ./path */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/path.js")); +var scope_1 = tslib_1.__importDefault(__webpack_require__(/*! ./scope */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/scope.js")); +function nodePathPlugin(fork) { + var types = fork.use(types_1.default); + var n = types.namedTypes; + var b = types.builders; + var isNumber = types.builtInTypes.number; + var isArray = types.builtInTypes.array; + var Path = fork.use(path_1.default); + var Scope = fork.use(scope_1.default); + var NodePath = function NodePath(value, parentPath, name) { + if (!(this instanceof NodePath)) { + throw new Error("NodePath constructor cannot be invoked without 'new'"); + } + Path.call(this, value, parentPath, name); + }; + var NPp = NodePath.prototype = Object.create(Path.prototype, { + constructor: { + value: NodePath, + enumerable: false, + writable: true, + configurable: true + } + }); + Object.defineProperties(NPp, { + node: { + get: function () { + Object.defineProperty(this, "node", { + configurable: true, + value: this._computeNode() + }); + return this.node; + } + }, + parent: { + get: function () { + Object.defineProperty(this, "parent", { + configurable: true, + value: this._computeParent() + }); + return this.parent; + } + }, + scope: { + get: function () { + Object.defineProperty(this, "scope", { + configurable: true, + value: this._computeScope() + }); + return this.scope; + } + } + }); + NPp.replace = function () { + delete this.node; + delete this.parent; + delete this.scope; + return Path.prototype.replace.apply(this, arguments); + }; + NPp.prune = function () { + var remainingNodePath = this.parent; + this.replace(); + return cleanUpNodesAfterPrune(remainingNodePath); + }; + // The value of the first ancestor Path whose value is a Node. + NPp._computeNode = function () { + var value = this.value; + if (n.Node.check(value)) { + return value; + } + var pp = this.parentPath; + return pp && pp.node || null; + }; + // The first ancestor Path whose value is a Node distinct from this.node. + NPp._computeParent = function () { + var value = this.value; + var pp = this.parentPath; + if (!n.Node.check(value)) { + while (pp && !n.Node.check(pp.value)) { + pp = pp.parentPath; + } + if (pp) { + pp = pp.parentPath; + } + } + while (pp && !n.Node.check(pp.value)) { + pp = pp.parentPath; + } + return pp || null; + }; + // The closest enclosing scope that governs this node. + NPp._computeScope = function () { + var value = this.value; + var pp = this.parentPath; + var scope = pp && pp.scope; + if (n.Node.check(value) && + Scope.isEstablishedBy(value)) { + scope = new Scope(this, scope); + } + return scope || null; + }; + NPp.getValueProperty = function (name) { + return types.getFieldValue(this.value, name); + }; + /** + * Determine whether this.node needs to be wrapped in parentheses in order + * for a parser to reproduce the same local AST structure. + * + * For instance, in the expression `(1 + 2) * 3`, the BinaryExpression + * whose operator is "+" needs parentheses, because `1 + 2 * 3` would + * parse differently. + * + * If assumeExpressionContext === true, we don't worry about edge cases + * like an anonymous FunctionExpression appearing lexically first in its + * enclosing statement and thus needing parentheses to avoid being parsed + * as a FunctionDeclaration with a missing name. + */ + NPp.needsParens = function (assumeExpressionContext) { + var pp = this.parentPath; + if (!pp) { + return false; + } + var node = this.value; + // Only expressions need parentheses. + if (!n.Expression.check(node)) { + return false; + } + // Identifiers never need parentheses. + if (node.type === "Identifier") { + return false; + } + while (!n.Node.check(pp.value)) { + pp = pp.parentPath; + if (!pp) { + return false; + } + } + var parent = pp.value; + switch (node.type) { + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + return parent.type === "MemberExpression" + && this.name === "object" + && parent.object === node; + case "BinaryExpression": + case "LogicalExpression": + switch (parent.type) { + case "CallExpression": + return this.name === "callee" + && parent.callee === node; + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + return true; + case "MemberExpression": + return this.name === "object" + && parent.object === node; + case "BinaryExpression": + case "LogicalExpression": { + var n_1 = node; + var po = parent.operator; + var pp_1 = PRECEDENCE[po]; + var no = n_1.operator; + var np = PRECEDENCE[no]; + if (pp_1 > np) { + return true; + } + if (pp_1 === np && this.name === "right") { + if (parent.right !== n_1) { + throw new Error("Nodes must be equal"); + } + return true; + } + } + default: + return false; + } + case "SequenceExpression": + switch (parent.type) { + case "ForStatement": + // Although parentheses wouldn't hurt around sequence + // expressions in the head of for loops, traditional style + // dictates that e.g. i++, j++ should not be wrapped with + // parentheses. + return false; + case "ExpressionStatement": + return this.name !== "expression"; + default: + // Otherwise err on the side of overparenthesization, adding + // explicit exceptions above if this proves overzealous. + return true; + } + case "YieldExpression": + switch (parent.type) { + case "BinaryExpression": + case "LogicalExpression": + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + case "CallExpression": + case "MemberExpression": + case "NewExpression": + case "ConditionalExpression": + case "YieldExpression": + return true; + default: + return false; + } + case "Literal": + return parent.type === "MemberExpression" + && isNumber.check(node.value) + && this.name === "object" + && parent.object === node; + case "AssignmentExpression": + case "ConditionalExpression": + switch (parent.type) { + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + case "BinaryExpression": + case "LogicalExpression": + return true; + case "CallExpression": + return this.name === "callee" + && parent.callee === node; + case "ConditionalExpression": + return this.name === "test" + && parent.test === node; + case "MemberExpression": + return this.name === "object" + && parent.object === node; + default: + return false; + } + default: + if (parent.type === "NewExpression" && + this.name === "callee" && + parent.callee === node) { + return containsCallExpression(node); + } + } + if (assumeExpressionContext !== true && + !this.canBeFirstInStatement() && + this.firstInStatement()) + return true; + return false; + }; + function isBinary(node) { + return n.BinaryExpression.check(node) + || n.LogicalExpression.check(node); + } + // @ts-ignore 'isUnaryLike' is declared but its value is never read. [6133] + function isUnaryLike(node) { + return n.UnaryExpression.check(node) + // I considered making SpreadElement and SpreadProperty subtypes + // of UnaryExpression, but they're not really Expression nodes. + || (n.SpreadElement && n.SpreadElement.check(node)) + || (n.SpreadProperty && n.SpreadProperty.check(node)); + } + var PRECEDENCE = {}; + [["||"], + ["&&"], + ["|"], + ["^"], + ["&"], + ["==", "===", "!=", "!=="], + ["<", ">", "<=", ">=", "in", "instanceof"], + [">>", "<<", ">>>"], + ["+", "-"], + ["*", "/", "%"] + ].forEach(function (tier, i) { + tier.forEach(function (op) { + PRECEDENCE[op] = i; + }); + }); + function containsCallExpression(node) { + if (n.CallExpression.check(node)) { + return true; + } + if (isArray.check(node)) { + return node.some(containsCallExpression); + } + if (n.Node.check(node)) { + return types.someField(node, function (_name, child) { + return containsCallExpression(child); + }); + } + return false; + } + NPp.canBeFirstInStatement = function () { + var node = this.node; + return !n.FunctionExpression.check(node) + && !n.ObjectExpression.check(node); + }; + NPp.firstInStatement = function () { + return firstInStatement(this); + }; + function firstInStatement(path) { + for (var node, parent; path.parent; path = path.parent) { + node = path.node; + parent = path.parent.node; + if (n.BlockStatement.check(parent) && + path.parent.name === "body" && + path.name === 0) { + if (parent.body[0] !== node) { + throw new Error("Nodes must be equal"); + } + return true; + } + if (n.ExpressionStatement.check(parent) && + path.name === "expression") { + if (parent.expression !== node) { + throw new Error("Nodes must be equal"); + } + return true; + } + if (n.SequenceExpression.check(parent) && + path.parent.name === "expressions" && + path.name === 0) { + if (parent.expressions[0] !== node) { + throw new Error("Nodes must be equal"); + } + continue; + } + if (n.CallExpression.check(parent) && + path.name === "callee") { + if (parent.callee !== node) { + throw new Error("Nodes must be equal"); + } + continue; + } + if (n.MemberExpression.check(parent) && + path.name === "object") { + if (parent.object !== node) { + throw new Error("Nodes must be equal"); + } + continue; + } + if (n.ConditionalExpression.check(parent) && + path.name === "test") { + if (parent.test !== node) { + throw new Error("Nodes must be equal"); + } + continue; + } + if (isBinary(parent) && + path.name === "left") { + if (parent.left !== node) { + throw new Error("Nodes must be equal"); + } + continue; + } + if (n.UnaryExpression.check(parent) && + !parent.prefix && + path.name === "argument") { + if (parent.argument !== node) { + throw new Error("Nodes must be equal"); + } + continue; + } + return false; + } + return true; + } + /** + * Pruning certain nodes will result in empty or incomplete nodes, here we clean those nodes up. + */ + function cleanUpNodesAfterPrune(remainingNodePath) { + if (n.VariableDeclaration.check(remainingNodePath.node)) { + var declarations = remainingNodePath.get('declarations').value; + if (!declarations || declarations.length === 0) { + return remainingNodePath.prune(); + } + } + else if (n.ExpressionStatement.check(remainingNodePath.node)) { + if (!remainingNodePath.get('expression').value) { + return remainingNodePath.prune(); + } + } + else if (n.IfStatement.check(remainingNodePath.node)) { + cleanUpIfStatementAfterPrune(remainingNodePath); + } + return remainingNodePath; + } + function cleanUpIfStatementAfterPrune(ifStatement) { + var testExpression = ifStatement.get('test').value; + var alternate = ifStatement.get('alternate').value; + var consequent = ifStatement.get('consequent').value; + if (!consequent && !alternate) { + var testExpressionStatement = b.expressionStatement(testExpression); + ifStatement.replace(testExpressionStatement); + } + else if (!consequent && alternate) { + var negatedTestExpression = b.unaryExpression('!', testExpression, true); + if (n.UnaryExpression.check(testExpression) && testExpression.operator === '!') { + negatedTestExpression = testExpression.argument; + } + ifStatement.get("test").replace(negatedTestExpression); + ifStatement.get("consequent").replace(alternate); + ifStatement.get("alternate").replace(); + } + } + return NodePath; +} +exports["default"] = nodePathPlugin; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/path-visitor.js": +/*!*******************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/path-visitor.js ***! + \*******************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ./types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var node_path_1 = tslib_1.__importDefault(__webpack_require__(/*! ./node-path */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/node-path.js")); +var hasOwn = Object.prototype.hasOwnProperty; +function pathVisitorPlugin(fork) { + var types = fork.use(types_1.default); + var NodePath = fork.use(node_path_1.default); + var isArray = types.builtInTypes.array; + var isObject = types.builtInTypes.object; + var isFunction = types.builtInTypes.function; + var undefined; + var PathVisitor = function PathVisitor() { + if (!(this instanceof PathVisitor)) { + throw new Error("PathVisitor constructor cannot be invoked without 'new'"); + } + // Permanent state. + this._reusableContextStack = []; + this._methodNameTable = computeMethodNameTable(this); + this._shouldVisitComments = + hasOwn.call(this._methodNameTable, "Block") || + hasOwn.call(this._methodNameTable, "Line"); + this.Context = makeContextConstructor(this); + // State reset every time PathVisitor.prototype.visit is called. + this._visiting = false; + this._changeReported = false; + }; + function computeMethodNameTable(visitor) { + var typeNames = Object.create(null); + for (var methodName in visitor) { + if (/^visit[A-Z]/.test(methodName)) { + typeNames[methodName.slice("visit".length)] = true; + } + } + var supertypeTable = types.computeSupertypeLookupTable(typeNames); + var methodNameTable = Object.create(null); + var typeNameKeys = Object.keys(supertypeTable); + var typeNameCount = typeNameKeys.length; + for (var i = 0; i < typeNameCount; ++i) { + var typeName = typeNameKeys[i]; + methodName = "visit" + supertypeTable[typeName]; + if (isFunction.check(visitor[methodName])) { + methodNameTable[typeName] = methodName; + } + } + return methodNameTable; + } + PathVisitor.fromMethodsObject = function fromMethodsObject(methods) { + if (methods instanceof PathVisitor) { + return methods; + } + if (!isObject.check(methods)) { + // An empty visitor? + return new PathVisitor; + } + var Visitor = function Visitor() { + if (!(this instanceof Visitor)) { + throw new Error("Visitor constructor cannot be invoked without 'new'"); + } + PathVisitor.call(this); + }; + var Vp = Visitor.prototype = Object.create(PVp); + Vp.constructor = Visitor; + extend(Vp, methods); + extend(Visitor, PathVisitor); + isFunction.assert(Visitor.fromMethodsObject); + isFunction.assert(Visitor.visit); + return new Visitor; + }; + function extend(target, source) { + for (var property in source) { + if (hasOwn.call(source, property)) { + target[property] = source[property]; + } + } + return target; + } + PathVisitor.visit = function visit(node, methods) { + return PathVisitor.fromMethodsObject(methods).visit(node); + }; + var PVp = PathVisitor.prototype; + PVp.visit = function () { + if (this._visiting) { + throw new Error("Recursively calling visitor.visit(path) resets visitor state. " + + "Try this.visit(path) or this.traverse(path) instead."); + } + // Private state that needs to be reset before every traversal. + this._visiting = true; + this._changeReported = false; + this._abortRequested = false; + var argc = arguments.length; + var args = new Array(argc); + for (var i = 0; i < argc; ++i) { + args[i] = arguments[i]; + } + if (!(args[0] instanceof NodePath)) { + args[0] = new NodePath({ root: args[0] }).get("root"); + } + // Called with the same arguments as .visit. + this.reset.apply(this, args); + var didNotThrow; + try { + var root = this.visitWithoutReset(args[0]); + didNotThrow = true; + } + finally { + this._visiting = false; + if (!didNotThrow && this._abortRequested) { + // If this.visitWithoutReset threw an exception and + // this._abortRequested was set to true, return the root of + // the AST instead of letting the exception propagate, so that + // client code does not have to provide a try-catch block to + // intercept the AbortRequest exception. Other kinds of + // exceptions will propagate without being intercepted and + // rethrown by a catch block, so their stacks will accurately + // reflect the original throwing context. + return args[0].value; + } + } + return root; + }; + PVp.AbortRequest = function AbortRequest() { }; + PVp.abort = function () { + var visitor = this; + visitor._abortRequested = true; + var request = new visitor.AbortRequest(); + // If you decide to catch this exception and stop it from propagating, + // make sure to call its cancel method to avoid silencing other + // exceptions that might be thrown later in the traversal. + request.cancel = function () { + visitor._abortRequested = false; + }; + throw request; + }; + PVp.reset = function (_path /*, additional arguments */) { + // Empty stub; may be reassigned or overridden by subclasses. + }; + PVp.visitWithoutReset = function (path) { + if (this instanceof this.Context) { + // Since this.Context.prototype === this, there's a chance we + // might accidentally call context.visitWithoutReset. If that + // happens, re-invoke the method against context.visitor. + return this.visitor.visitWithoutReset(path); + } + if (!(path instanceof NodePath)) { + throw new Error(""); + } + var value = path.value; + var methodName = value && + typeof value === "object" && + typeof value.type === "string" && + this._methodNameTable[value.type]; + if (methodName) { + var context = this.acquireContext(path); + try { + return context.invokeVisitorMethod(methodName); + } + finally { + this.releaseContext(context); + } + } + else { + // If there was no visitor method to call, visit the children of + // this node generically. + return visitChildren(path, this); + } + }; + function visitChildren(path, visitor) { + if (!(path instanceof NodePath)) { + throw new Error(""); + } + if (!(visitor instanceof PathVisitor)) { + throw new Error(""); + } + var value = path.value; + if (isArray.check(value)) { + path.each(visitor.visitWithoutReset, visitor); + } + else if (!isObject.check(value)) { + // No children to visit. + } + else { + var childNames = types.getFieldNames(value); + // The .comments field of the Node type is hidden, so we only + // visit it if the visitor defines visitBlock or visitLine, and + // value.comments is defined. + if (visitor._shouldVisitComments && + value.comments && + childNames.indexOf("comments") < 0) { + childNames.push("comments"); + } + var childCount = childNames.length; + var childPaths = []; + for (var i = 0; i < childCount; ++i) { + var childName = childNames[i]; + if (!hasOwn.call(value, childName)) { + value[childName] = types.getFieldValue(value, childName); + } + childPaths.push(path.get(childName)); + } + for (var i = 0; i < childCount; ++i) { + visitor.visitWithoutReset(childPaths[i]); + } + } + return path.value; + } + PVp.acquireContext = function (path) { + if (this._reusableContextStack.length === 0) { + return new this.Context(path); + } + return this._reusableContextStack.pop().reset(path); + }; + PVp.releaseContext = function (context) { + if (!(context instanceof this.Context)) { + throw new Error(""); + } + this._reusableContextStack.push(context); + context.currentPath = null; + }; + PVp.reportChanged = function () { + this._changeReported = true; + }; + PVp.wasChangeReported = function () { + return this._changeReported; + }; + function makeContextConstructor(visitor) { + function Context(path) { + if (!(this instanceof Context)) { + throw new Error(""); + } + if (!(this instanceof PathVisitor)) { + throw new Error(""); + } + if (!(path instanceof NodePath)) { + throw new Error(""); + } + Object.defineProperty(this, "visitor", { + value: visitor, + writable: false, + enumerable: true, + configurable: false + }); + this.currentPath = path; + this.needToCallTraverse = true; + Object.seal(this); + } + if (!(visitor instanceof PathVisitor)) { + throw new Error(""); + } + // Note that the visitor object is the prototype of Context.prototype, + // so all visitor methods are inherited by context objects. + var Cp = Context.prototype = Object.create(visitor); + Cp.constructor = Context; + extend(Cp, sharedContextProtoMethods); + return Context; + } + // Every PathVisitor has a different this.Context constructor and + // this.Context.prototype object, but those prototypes can all use the + // same reset, invokeVisitorMethod, and traverse function objects. + var sharedContextProtoMethods = Object.create(null); + sharedContextProtoMethods.reset = + function reset(path) { + if (!(this instanceof this.Context)) { + throw new Error(""); + } + if (!(path instanceof NodePath)) { + throw new Error(""); + } + this.currentPath = path; + this.needToCallTraverse = true; + return this; + }; + sharedContextProtoMethods.invokeVisitorMethod = + function invokeVisitorMethod(methodName) { + if (!(this instanceof this.Context)) { + throw new Error(""); + } + if (!(this.currentPath instanceof NodePath)) { + throw new Error(""); + } + var result = this.visitor[methodName].call(this, this.currentPath); + if (result === false) { + // Visitor methods return false to indicate that they have handled + // their own traversal needs, and we should not complain if + // this.needToCallTraverse is still true. + this.needToCallTraverse = false; + } + else if (result !== undefined) { + // Any other non-undefined value returned from the visitor method + // is interpreted as a replacement value. + this.currentPath = this.currentPath.replace(result)[0]; + if (this.needToCallTraverse) { + // If this.traverse still hasn't been called, visit the + // children of the replacement node. + this.traverse(this.currentPath); + } + } + if (this.needToCallTraverse !== false) { + throw new Error("Must either call this.traverse or return false in " + methodName); + } + var path = this.currentPath; + return path && path.value; + }; + sharedContextProtoMethods.traverse = + function traverse(path, newVisitor) { + if (!(this instanceof this.Context)) { + throw new Error(""); + } + if (!(path instanceof NodePath)) { + throw new Error(""); + } + if (!(this.currentPath instanceof NodePath)) { + throw new Error(""); + } + this.needToCallTraverse = false; + return visitChildren(path, PathVisitor.fromMethodsObject(newVisitor || this.visitor)); + }; + sharedContextProtoMethods.visit = + function visit(path, newVisitor) { + if (!(this instanceof this.Context)) { + throw new Error(""); + } + if (!(path instanceof NodePath)) { + throw new Error(""); + } + if (!(this.currentPath instanceof NodePath)) { + throw new Error(""); + } + this.needToCallTraverse = false; + return PathVisitor.fromMethodsObject(newVisitor || this.visitor).visitWithoutReset(path); + }; + sharedContextProtoMethods.reportChanged = function reportChanged() { + this.visitor.reportChanged(); + }; + sharedContextProtoMethods.abort = function abort() { + this.needToCallTraverse = false; + this.visitor.abort(); + }; + return PathVisitor; +} +exports["default"] = pathVisitorPlugin; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/path.js": +/*!***********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/path.js ***! + \***********************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ./types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var Op = Object.prototype; +var hasOwn = Op.hasOwnProperty; +function pathPlugin(fork) { + var types = fork.use(types_1.default); + var isArray = types.builtInTypes.array; + var isNumber = types.builtInTypes.number; + var Path = function Path(value, parentPath, name) { + if (!(this instanceof Path)) { + throw new Error("Path constructor cannot be invoked without 'new'"); + } + if (parentPath) { + if (!(parentPath instanceof Path)) { + throw new Error(""); + } + } + else { + parentPath = null; + name = null; + } + // The value encapsulated by this Path, generally equal to + // parentPath.value[name] if we have a parentPath. + this.value = value; + // The immediate parent Path of this Path. + this.parentPath = parentPath; + // The name of the property of parentPath.value through which this + // Path's value was reached. + this.name = name; + // Calling path.get("child") multiple times always returns the same + // child Path object, for both performance and consistency reasons. + this.__childCache = null; + }; + var Pp = Path.prototype; + function getChildCache(path) { + // Lazily create the child cache. This also cheapens cache + // invalidation, since you can just reset path.__childCache to null. + return path.__childCache || (path.__childCache = Object.create(null)); + } + function getChildPath(path, name) { + var cache = getChildCache(path); + var actualChildValue = path.getValueProperty(name); + var childPath = cache[name]; + if (!hasOwn.call(cache, name) || + // Ensure consistency between cache and reality. + childPath.value !== actualChildValue) { + childPath = cache[name] = new path.constructor(actualChildValue, path, name); + } + return childPath; + } + // This method is designed to be overridden by subclasses that need to + // handle missing properties, etc. + Pp.getValueProperty = function getValueProperty(name) { + return this.value[name]; + }; + Pp.get = function get() { + var names = []; + for (var _i = 0; _i < arguments.length; _i++) { + names[_i] = arguments[_i]; + } + var path = this; + var count = names.length; + for (var i = 0; i < count; ++i) { + path = getChildPath(path, names[i]); + } + return path; + }; + Pp.each = function each(callback, context) { + var childPaths = []; + var len = this.value.length; + var i = 0; + // Collect all the original child paths before invoking the callback. + for (var i = 0; i < len; ++i) { + if (hasOwn.call(this.value, i)) { + childPaths[i] = this.get(i); + } + } + // Invoke the callback on just the original child paths, regardless of + // any modifications made to the array by the callback. I chose these + // semantics over cleverly invoking the callback on new elements because + // this way is much easier to reason about. + context = context || this; + for (i = 0; i < len; ++i) { + if (hasOwn.call(childPaths, i)) { + callback.call(context, childPaths[i]); + } + } + }; + Pp.map = function map(callback, context) { + var result = []; + this.each(function (childPath) { + result.push(callback.call(this, childPath)); + }, context); + return result; + }; + Pp.filter = function filter(callback, context) { + var result = []; + this.each(function (childPath) { + if (callback.call(this, childPath)) { + result.push(childPath); + } + }, context); + return result; + }; + function emptyMoves() { } + function getMoves(path, offset, start, end) { + isArray.assert(path.value); + if (offset === 0) { + return emptyMoves; + } + var length = path.value.length; + if (length < 1) { + return emptyMoves; + } + var argc = arguments.length; + if (argc === 2) { + start = 0; + end = length; + } + else if (argc === 3) { + start = Math.max(start, 0); + end = length; + } + else { + start = Math.max(start, 0); + end = Math.min(end, length); + } + isNumber.assert(start); + isNumber.assert(end); + var moves = Object.create(null); + var cache = getChildCache(path); + for (var i = start; i < end; ++i) { + if (hasOwn.call(path.value, i)) { + var childPath = path.get(i); + if (childPath.name !== i) { + throw new Error(""); + } + var newIndex = i + offset; + childPath.name = newIndex; + moves[newIndex] = childPath; + delete cache[i]; + } + } + delete cache.length; + return function () { + for (var newIndex in moves) { + var childPath = moves[newIndex]; + if (childPath.name !== +newIndex) { + throw new Error(""); + } + cache[newIndex] = childPath; + path.value[newIndex] = childPath.value; + } + }; + } + Pp.shift = function shift() { + var move = getMoves(this, -1); + var result = this.value.shift(); + move(); + return result; + }; + Pp.unshift = function unshift() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var move = getMoves(this, args.length); + var result = this.value.unshift.apply(this.value, args); + move(); + return result; + }; + Pp.push = function push() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + isArray.assert(this.value); + delete getChildCache(this).length; + return this.value.push.apply(this.value, args); + }; + Pp.pop = function pop() { + isArray.assert(this.value); + var cache = getChildCache(this); + delete cache[this.value.length - 1]; + delete cache.length; + return this.value.pop(); + }; + Pp.insertAt = function insertAt(index) { + var argc = arguments.length; + var move = getMoves(this, argc - 1, index); + if (move === emptyMoves && argc <= 1) { + return this; + } + index = Math.max(index, 0); + for (var i = 1; i < argc; ++i) { + this.value[index + i - 1] = arguments[i]; + } + move(); + return this; + }; + Pp.insertBefore = function insertBefore() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var pp = this.parentPath; + var argc = args.length; + var insertAtArgs = [this.name]; + for (var i = 0; i < argc; ++i) { + insertAtArgs.push(args[i]); + } + return pp.insertAt.apply(pp, insertAtArgs); + }; + Pp.insertAfter = function insertAfter() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var pp = this.parentPath; + var argc = args.length; + var insertAtArgs = [this.name + 1]; + for (var i = 0; i < argc; ++i) { + insertAtArgs.push(args[i]); + } + return pp.insertAt.apply(pp, insertAtArgs); + }; + function repairRelationshipWithParent(path) { + if (!(path instanceof Path)) { + throw new Error(""); + } + var pp = path.parentPath; + if (!pp) { + // Orphan paths have no relationship to repair. + return path; + } + var parentValue = pp.value; + var parentCache = getChildCache(pp); + // Make sure parentCache[path.name] is populated. + if (parentValue[path.name] === path.value) { + parentCache[path.name] = path; + } + else if (isArray.check(parentValue)) { + // Something caused path.name to become out of date, so attempt to + // recover by searching for path.value in parentValue. + var i = parentValue.indexOf(path.value); + if (i >= 0) { + parentCache[path.name = i] = path; + } + } + else { + // If path.value disagrees with parentValue[path.name], and + // path.name is not an array index, let path.value become the new + // parentValue[path.name] and update parentCache accordingly. + parentValue[path.name] = path.value; + parentCache[path.name] = path; + } + if (parentValue[path.name] !== path.value) { + throw new Error(""); + } + if (path.parentPath.get(path.name) !== path) { + throw new Error(""); + } + return path; + } + Pp.replace = function replace(replacement) { + var results = []; + var parentValue = this.parentPath.value; + var parentCache = getChildCache(this.parentPath); + var count = arguments.length; + repairRelationshipWithParent(this); + if (isArray.check(parentValue)) { + var originalLength = parentValue.length; + var move = getMoves(this.parentPath, count - 1, this.name + 1); + var spliceArgs = [this.name, 1]; + for (var i = 0; i < count; ++i) { + spliceArgs.push(arguments[i]); + } + var splicedOut = parentValue.splice.apply(parentValue, spliceArgs); + if (splicedOut[0] !== this.value) { + throw new Error(""); + } + if (parentValue.length !== (originalLength - 1 + count)) { + throw new Error(""); + } + move(); + if (count === 0) { + delete this.value; + delete parentCache[this.name]; + this.__childCache = null; + } + else { + if (parentValue[this.name] !== replacement) { + throw new Error(""); + } + if (this.value !== replacement) { + this.value = replacement; + this.__childCache = null; + } + for (i = 0; i < count; ++i) { + results.push(this.parentPath.get(this.name + i)); + } + if (results[0] !== this) { + throw new Error(""); + } + } + } + else if (count === 1) { + if (this.value !== replacement) { + this.__childCache = null; + } + this.value = parentValue[this.name] = replacement; + results.push(this); + } + else if (count === 0) { + delete parentValue[this.name]; + delete this.value; + this.__childCache = null; + // Leave this path cached as parentCache[this.name], even though + // it no longer has a value defined. + } + else { + throw new Error("Could not replace path"); + } + return results; + }; + return Path; +} +exports["default"] = pathPlugin; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/scope.js": +/*!************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/scope.js ***! + \************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ./types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +var hasOwn = Object.prototype.hasOwnProperty; +function scopePlugin(fork) { + var types = fork.use(types_1.default); + var Type = types.Type; + var namedTypes = types.namedTypes; + var Node = namedTypes.Node; + var Expression = namedTypes.Expression; + var isArray = types.builtInTypes.array; + var b = types.builders; + var Scope = function Scope(path, parentScope) { + if (!(this instanceof Scope)) { + throw new Error("Scope constructor cannot be invoked without 'new'"); + } + ScopeType.assert(path.value); + var depth; + if (parentScope) { + if (!(parentScope instanceof Scope)) { + throw new Error(""); + } + depth = parentScope.depth + 1; + } + else { + parentScope = null; + depth = 0; + } + Object.defineProperties(this, { + path: { value: path }, + node: { value: path.value }, + isGlobal: { value: !parentScope, enumerable: true }, + depth: { value: depth }, + parent: { value: parentScope }, + bindings: { value: {} }, + types: { value: {} }, + }); + }; + var scopeTypes = [ + // Program nodes introduce global scopes. + namedTypes.Program, + // Function is the supertype of FunctionExpression, + // FunctionDeclaration, ArrowExpression, etc. + namedTypes.Function, + // In case you didn't know, the caught parameter shadows any variable + // of the same name in an outer scope. + namedTypes.CatchClause + ]; + var ScopeType = Type.or.apply(Type, scopeTypes); + Scope.isEstablishedBy = function (node) { + return ScopeType.check(node); + }; + var Sp = Scope.prototype; + // Will be overridden after an instance lazily calls scanScope. + Sp.didScan = false; + Sp.declares = function (name) { + this.scan(); + return hasOwn.call(this.bindings, name); + }; + Sp.declaresType = function (name) { + this.scan(); + return hasOwn.call(this.types, name); + }; + Sp.declareTemporary = function (prefix) { + if (prefix) { + if (!/^[a-z$_]/i.test(prefix)) { + throw new Error(""); + } + } + else { + prefix = "t$"; + } + // Include this.depth in the name to make sure the name does not + // collide with any variables in nested/enclosing scopes. + prefix += this.depth.toString(36) + "$"; + this.scan(); + var index = 0; + while (this.declares(prefix + index)) { + ++index; + } + var name = prefix + index; + return this.bindings[name] = types.builders.identifier(name); + }; + Sp.injectTemporary = function (identifier, init) { + identifier || (identifier = this.declareTemporary()); + var bodyPath = this.path.get("body"); + if (namedTypes.BlockStatement.check(bodyPath.value)) { + bodyPath = bodyPath.get("body"); + } + bodyPath.unshift(b.variableDeclaration("var", [b.variableDeclarator(identifier, init || null)])); + return identifier; + }; + Sp.scan = function (force) { + if (force || !this.didScan) { + for (var name in this.bindings) { + // Empty out this.bindings, just in cases. + delete this.bindings[name]; + } + scanScope(this.path, this.bindings, this.types); + this.didScan = true; + } + }; + Sp.getBindings = function () { + this.scan(); + return this.bindings; + }; + Sp.getTypes = function () { + this.scan(); + return this.types; + }; + function scanScope(path, bindings, scopeTypes) { + var node = path.value; + ScopeType.assert(node); + if (namedTypes.CatchClause.check(node)) { + // A catch clause establishes a new scope but the only variable + // bound in that scope is the catch parameter. Any other + // declarations create bindings in the outer scope. + var param = path.get("param"); + if (param.value) { + addPattern(param, bindings); + } + } + else { + recursiveScanScope(path, bindings, scopeTypes); + } + } + function recursiveScanScope(path, bindings, scopeTypes) { + var node = path.value; + if (path.parent && + namedTypes.FunctionExpression.check(path.parent.node) && + path.parent.node.id) { + addPattern(path.parent.get("id"), bindings); + } + if (!node) { + // None of the remaining cases matter if node is falsy. + } + else if (isArray.check(node)) { + path.each(function (childPath) { + recursiveScanChild(childPath, bindings, scopeTypes); + }); + } + else if (namedTypes.Function.check(node)) { + path.get("params").each(function (paramPath) { + addPattern(paramPath, bindings); + }); + recursiveScanChild(path.get("body"), bindings, scopeTypes); + } + else if ((namedTypes.TypeAlias && namedTypes.TypeAlias.check(node)) || + (namedTypes.InterfaceDeclaration && namedTypes.InterfaceDeclaration.check(node)) || + (namedTypes.TSTypeAliasDeclaration && namedTypes.TSTypeAliasDeclaration.check(node)) || + (namedTypes.TSInterfaceDeclaration && namedTypes.TSInterfaceDeclaration.check(node))) { + addTypePattern(path.get("id"), scopeTypes); + } + else if (namedTypes.VariableDeclarator.check(node)) { + addPattern(path.get("id"), bindings); + recursiveScanChild(path.get("init"), bindings, scopeTypes); + } + else if (node.type === "ImportSpecifier" || + node.type === "ImportNamespaceSpecifier" || + node.type === "ImportDefaultSpecifier") { + addPattern( + // Esprima used to use the .name field to refer to the local + // binding identifier for ImportSpecifier nodes, but .id for + // ImportNamespaceSpecifier and ImportDefaultSpecifier nodes. + // ESTree/Acorn/ESpree use .local for all three node types. + path.get(node.local ? "local" : + node.name ? "name" : "id"), bindings); + } + else if (Node.check(node) && !Expression.check(node)) { + types.eachField(node, function (name, child) { + var childPath = path.get(name); + if (!pathHasValue(childPath, child)) { + throw new Error(""); + } + recursiveScanChild(childPath, bindings, scopeTypes); + }); + } + } + function pathHasValue(path, value) { + if (path.value === value) { + return true; + } + // Empty arrays are probably produced by defaults.emptyArray, in which + // case is makes sense to regard them as equivalent, if not ===. + if (Array.isArray(path.value) && + path.value.length === 0 && + Array.isArray(value) && + value.length === 0) { + return true; + } + return false; + } + function recursiveScanChild(path, bindings, scopeTypes) { + var node = path.value; + if (!node || Expression.check(node)) { + // Ignore falsy values and Expressions. + } + else if (namedTypes.FunctionDeclaration.check(node) && + node.id !== null) { + addPattern(path.get("id"), bindings); + } + else if (namedTypes.ClassDeclaration && + namedTypes.ClassDeclaration.check(node)) { + addPattern(path.get("id"), bindings); + } + else if (ScopeType.check(node)) { + if (namedTypes.CatchClause.check(node) && + // TODO Broaden this to accept any pattern. + namedTypes.Identifier.check(node.param)) { + var catchParamName = node.param.name; + var hadBinding = hasOwn.call(bindings, catchParamName); + // Any declarations that occur inside the catch body that do + // not have the same name as the catch parameter should count + // as bindings in the outer scope. + recursiveScanScope(path.get("body"), bindings, scopeTypes); + // If a new binding matching the catch parameter name was + // created while scanning the catch body, ignore it because it + // actually refers to the catch parameter and not the outer + // scope that we're currently scanning. + if (!hadBinding) { + delete bindings[catchParamName]; + } + } + } + else { + recursiveScanScope(path, bindings, scopeTypes); + } + } + function addPattern(patternPath, bindings) { + var pattern = patternPath.value; + namedTypes.Pattern.assert(pattern); + if (namedTypes.Identifier.check(pattern)) { + if (hasOwn.call(bindings, pattern.name)) { + bindings[pattern.name].push(patternPath); + } + else { + bindings[pattern.name] = [patternPath]; + } + } + else if (namedTypes.AssignmentPattern && + namedTypes.AssignmentPattern.check(pattern)) { + addPattern(patternPath.get('left'), bindings); + } + else if (namedTypes.ObjectPattern && + namedTypes.ObjectPattern.check(pattern)) { + patternPath.get('properties').each(function (propertyPath) { + var property = propertyPath.value; + if (namedTypes.Pattern.check(property)) { + addPattern(propertyPath, bindings); + } + else if (namedTypes.Property.check(property)) { + addPattern(propertyPath.get('value'), bindings); + } + else if (namedTypes.SpreadProperty && + namedTypes.SpreadProperty.check(property)) { + addPattern(propertyPath.get('argument'), bindings); + } + }); + } + else if (namedTypes.ArrayPattern && + namedTypes.ArrayPattern.check(pattern)) { + patternPath.get('elements').each(function (elementPath) { + var element = elementPath.value; + if (namedTypes.Pattern.check(element)) { + addPattern(elementPath, bindings); + } + else if (namedTypes.SpreadElement && + namedTypes.SpreadElement.check(element)) { + addPattern(elementPath.get("argument"), bindings); + } + }); + } + else if (namedTypes.PropertyPattern && + namedTypes.PropertyPattern.check(pattern)) { + addPattern(patternPath.get('pattern'), bindings); + } + else if ((namedTypes.SpreadElementPattern && + namedTypes.SpreadElementPattern.check(pattern)) || + (namedTypes.SpreadPropertyPattern && + namedTypes.SpreadPropertyPattern.check(pattern))) { + addPattern(patternPath.get('argument'), bindings); + } + } + function addTypePattern(patternPath, types) { + var pattern = patternPath.value; + namedTypes.Pattern.assert(pattern); + if (namedTypes.Identifier.check(pattern)) { + if (hasOwn.call(types, pattern.name)) { + types[pattern.name].push(patternPath); + } + else { + types[pattern.name] = [patternPath]; + } + } + } + Sp.lookup = function (name) { + for (var scope = this; scope; scope = scope.parent) + if (scope.declares(name)) + break; + return scope; + }; + Sp.lookupType = function (name) { + for (var scope = this; scope; scope = scope.parent) + if (scope.declaresType(name)) + break; + return scope; + }; + Sp.getGlobalScope = function () { + var scope = this; + while (!scope.isGlobal) + scope = scope.parent; + return scope; + }; + return Scope; +} +exports["default"] = scopePlugin; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/shared.js": +/*!*************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/shared.js ***! + \*************************************************************************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +"use strict"; +; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var types_1 = tslib_1.__importDefault(__webpack_require__(/*! ./types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js")); +function default_1(fork) { + var types = fork.use(types_1.default); + var Type = types.Type; + var builtin = types.builtInTypes; + var isNumber = builtin.number; + // An example of constructing a new type with arbitrary constraints from + // an existing type. + function geq(than) { + return Type.from(function (value) { return isNumber.check(value) && value >= than; }, isNumber + " >= " + than); + } + ; + // Default value-returning functions that may optionally be passed as a + // third argument to Def.prototype.field. + var defaults = { + // Functions were used because (among other reasons) that's the most + // elegant way to allow for the emptyArray one always to give a new + // array instance. + "null": function () { return null; }, + "emptyArray": function () { return []; }, + "false": function () { return false; }, + "true": function () { return true; }, + "undefined": function () { }, + "use strict": function () { return "use strict"; } + }; + var naiveIsPrimitive = Type.or(builtin.string, builtin.number, builtin.boolean, builtin.null, builtin.undefined); + var isPrimitive = Type.from(function (value) { + if (value === null) + return true; + var type = typeof value; + if (type === "object" || + type === "function") { + return false; + } + return true; + }, naiveIsPrimitive.toString()); + return { + geq: geq, + defaults: defaults, + isPrimitive: isPrimitive, + }; +} +exports["default"] = default_1; +module.exports = exports["default"]; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js": +/*!************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/lib/types.js ***! + \************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Def = void 0; +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var Op = Object.prototype; +var objToStr = Op.toString; +var hasOwn = Op.hasOwnProperty; +var BaseType = /** @class */ (function () { + function BaseType() { + } + BaseType.prototype.assert = function (value, deep) { + if (!this.check(value, deep)) { + var str = shallowStringify(value); + throw new Error(str + " does not match type " + this); + } + return true; + }; + BaseType.prototype.arrayOf = function () { + var elemType = this; + return new ArrayType(elemType); + }; + return BaseType; +}()); +var ArrayType = /** @class */ (function (_super) { + tslib_1.__extends(ArrayType, _super); + function ArrayType(elemType) { + var _this = _super.call(this) || this; + _this.elemType = elemType; + _this.kind = "ArrayType"; + return _this; + } + ArrayType.prototype.toString = function () { + return "[" + this.elemType + "]"; + }; + ArrayType.prototype.check = function (value, deep) { + var _this = this; + return Array.isArray(value) && value.every(function (elem) { return _this.elemType.check(elem, deep); }); + }; + return ArrayType; +}(BaseType)); +var IdentityType = /** @class */ (function (_super) { + tslib_1.__extends(IdentityType, _super); + function IdentityType(value) { + var _this = _super.call(this) || this; + _this.value = value; + _this.kind = "IdentityType"; + return _this; + } + IdentityType.prototype.toString = function () { + return String(this.value); + }; + IdentityType.prototype.check = function (value, deep) { + var result = value === this.value; + if (!result && typeof deep === "function") { + deep(this, value); + } + return result; + }; + return IdentityType; +}(BaseType)); +var ObjectType = /** @class */ (function (_super) { + tslib_1.__extends(ObjectType, _super); + function ObjectType(fields) { + var _this = _super.call(this) || this; + _this.fields = fields; + _this.kind = "ObjectType"; + return _this; + } + ObjectType.prototype.toString = function () { + return "{ " + this.fields.join(", ") + " }"; + }; + ObjectType.prototype.check = function (value, deep) { + return (objToStr.call(value) === objToStr.call({}) && + this.fields.every(function (field) { + return field.type.check(value[field.name], deep); + })); + }; + return ObjectType; +}(BaseType)); +var OrType = /** @class */ (function (_super) { + tslib_1.__extends(OrType, _super); + function OrType(types) { + var _this = _super.call(this) || this; + _this.types = types; + _this.kind = "OrType"; + return _this; + } + OrType.prototype.toString = function () { + return this.types.join(" | "); + }; + OrType.prototype.check = function (value, deep) { + return this.types.some(function (type) { + return type.check(value, deep); + }); + }; + return OrType; +}(BaseType)); +var PredicateType = /** @class */ (function (_super) { + tslib_1.__extends(PredicateType, _super); + function PredicateType(name, predicate) { + var _this = _super.call(this) || this; + _this.name = name; + _this.predicate = predicate; + _this.kind = "PredicateType"; + return _this; + } + PredicateType.prototype.toString = function () { + return this.name; + }; + PredicateType.prototype.check = function (value, deep) { + var result = this.predicate(value, deep); + if (!result && typeof deep === "function") { + deep(this, value); + } + return result; + }; + return PredicateType; +}(BaseType)); +var Def = /** @class */ (function () { + function Def(type, typeName) { + this.type = type; + this.typeName = typeName; + this.baseNames = []; + this.ownFields = Object.create(null); + // Includes own typeName. Populated during finalization. + this.allSupertypes = Object.create(null); + // Linear inheritance hierarchy. Populated during finalization. + this.supertypeList = []; + // Includes inherited fields. + this.allFields = Object.create(null); + // Non-hidden keys of allFields. + this.fieldNames = []; + // This property will be overridden as true by individual Def instances + // when they are finalized. + this.finalized = false; + // False by default until .build(...) is called on an instance. + this.buildable = false; + this.buildParams = []; + } + Def.prototype.isSupertypeOf = function (that) { + if (that instanceof Def) { + if (this.finalized !== true || + that.finalized !== true) { + throw new Error(""); + } + return hasOwn.call(that.allSupertypes, this.typeName); + } + else { + throw new Error(that + " is not a Def"); + } + }; + Def.prototype.checkAllFields = function (value, deep) { + var allFields = this.allFields; + if (this.finalized !== true) { + throw new Error("" + this.typeName); + } + function checkFieldByName(name) { + var field = allFields[name]; + var type = field.type; + var child = field.getValue(value); + return type.check(child, deep); + } + return value !== null && + typeof value === "object" && + Object.keys(allFields).every(checkFieldByName); + }; + Def.prototype.bases = function () { + var supertypeNames = []; + for (var _i = 0; _i < arguments.length; _i++) { + supertypeNames[_i] = arguments[_i]; + } + var bases = this.baseNames; + if (this.finalized) { + if (supertypeNames.length !== bases.length) { + throw new Error(""); + } + for (var i = 0; i < supertypeNames.length; i++) { + if (supertypeNames[i] !== bases[i]) { + throw new Error(""); + } + } + return this; + } + supertypeNames.forEach(function (baseName) { + // This indexOf lookup may be O(n), but the typical number of base + // names is very small, and indexOf is a native Array method. + if (bases.indexOf(baseName) < 0) { + bases.push(baseName); + } + }); + return this; // For chaining. + }; + return Def; +}()); +exports.Def = Def; +var Field = /** @class */ (function () { + function Field(name, type, defaultFn, hidden) { + this.name = name; + this.type = type; + this.defaultFn = defaultFn; + this.hidden = !!hidden; + } + Field.prototype.toString = function () { + return JSON.stringify(this.name) + ": " + this.type; + }; + Field.prototype.getValue = function (obj) { + var value = obj[this.name]; + if (typeof value !== "undefined") { + return value; + } + if (typeof this.defaultFn === "function") { + value = this.defaultFn.call(obj); + } + return value; + }; + return Field; +}()); +function shallowStringify(value) { + if (Array.isArray(value)) { + return "[" + value.map(shallowStringify).join(", ") + "]"; + } + if (value && typeof value === "object") { + return "{ " + Object.keys(value).map(function (key) { + return key + ": " + value[key]; + }).join(", ") + " }"; + } + return JSON.stringify(value); +} +function typesPlugin(_fork) { + var Type = { + or: function () { + var types = []; + for (var _i = 0; _i < arguments.length; _i++) { + types[_i] = arguments[_i]; + } + return new OrType(types.map(function (type) { return Type.from(type); })); + }, + from: function (value, name) { + if (value instanceof ArrayType || + value instanceof IdentityType || + value instanceof ObjectType || + value instanceof OrType || + value instanceof PredicateType) { + return value; + } + // The Def type is used as a helper for constructing compound + // interface types for AST nodes. + if (value instanceof Def) { + return value.type; + } + // Support [ElemType] syntax. + if (isArray.check(value)) { + if (value.length !== 1) { + throw new Error("only one element type is permitted for typed arrays"); + } + return new ArrayType(Type.from(value[0])); + } + // Support { someField: FieldType, ... } syntax. + if (isObject.check(value)) { + return new ObjectType(Object.keys(value).map(function (name) { + return new Field(name, Type.from(value[name], name)); + })); + } + if (typeof value === "function") { + var bicfIndex = builtInCtorFns.indexOf(value); + if (bicfIndex >= 0) { + return builtInCtorTypes[bicfIndex]; + } + if (typeof name !== "string") { + throw new Error("missing name"); + } + return new PredicateType(name, value); + } + // As a last resort, toType returns a type that matches any value that + // is === from. This is primarily useful for literal values like + // toType(null), but it has the additional advantage of allowing + // toType to be a total function. + return new IdentityType(value); + }, + // Define a type whose name is registered in a namespace (the defCache) so + // that future definitions will return the same type given the same name. + // In particular, this system allows for circular and forward definitions. + // The Def object d returned from Type.def may be used to configure the + // type d.type by calling methods such as d.bases, d.build, and d.field. + def: function (typeName) { + return hasOwn.call(defCache, typeName) + ? defCache[typeName] + : defCache[typeName] = new DefImpl(typeName); + }, + hasDef: function (typeName) { + return hasOwn.call(defCache, typeName); + } + }; + var builtInCtorFns = []; + var builtInCtorTypes = []; + function defBuiltInType(name, example) { + var objStr = objToStr.call(example); + var type = new PredicateType(name, function (value) { return objToStr.call(value) === objStr; }); + if (example && typeof example.constructor === "function") { + builtInCtorFns.push(example.constructor); + builtInCtorTypes.push(type); + } + return type; + } + // These types check the underlying [[Class]] attribute of the given + // value, rather than using the problematic typeof operator. Note however + // that no subtyping is considered; so, for instance, isObject.check + // returns false for [], /./, new Date, and null. + var isString = defBuiltInType("string", "truthy"); + var isFunction = defBuiltInType("function", function () { }); + var isArray = defBuiltInType("array", []); + var isObject = defBuiltInType("object", {}); + var isRegExp = defBuiltInType("RegExp", /./); + var isDate = defBuiltInType("Date", new Date()); + var isNumber = defBuiltInType("number", 3); + var isBoolean = defBuiltInType("boolean", true); + var isNull = defBuiltInType("null", null); + var isUndefined = defBuiltInType("undefined", undefined); + var builtInTypes = { + string: isString, + function: isFunction, + array: isArray, + object: isObject, + RegExp: isRegExp, + Date: isDate, + number: isNumber, + boolean: isBoolean, + null: isNull, + undefined: isUndefined, + }; + // In order to return the same Def instance every time Type.def is called + // with a particular name, those instances need to be stored in a cache. + var defCache = Object.create(null); + function defFromValue(value) { + if (value && typeof value === "object") { + var type = value.type; + if (typeof type === "string" && + hasOwn.call(defCache, type)) { + var d = defCache[type]; + if (d.finalized) { + return d; + } + } + } + return null; + } + var DefImpl = /** @class */ (function (_super) { + tslib_1.__extends(DefImpl, _super); + function DefImpl(typeName) { + var _this = _super.call(this, new PredicateType(typeName, function (value, deep) { return _this.check(value, deep); }), typeName) || this; + return _this; + } + DefImpl.prototype.check = function (value, deep) { + if (this.finalized !== true) { + throw new Error("prematurely checking unfinalized type " + this.typeName); + } + // A Def type can only match an object value. + if (value === null || typeof value !== "object") { + return false; + } + var vDef = defFromValue(value); + if (!vDef) { + // If we couldn't infer the Def associated with the given value, + // and we expected it to be a SourceLocation or a Position, it was + // probably just missing a "type" field (because Esprima does not + // assign a type property to such nodes). Be optimistic and let + // this.checkAllFields make the final decision. + if (this.typeName === "SourceLocation" || + this.typeName === "Position") { + return this.checkAllFields(value, deep); + } + // Calling this.checkAllFields for any other type of node is both + // bad for performance and way too forgiving. + return false; + } + // If checking deeply and vDef === this, then we only need to call + // checkAllFields once. Calling checkAllFields is too strict when deep + // is false, because then we only care about this.isSupertypeOf(vDef). + if (deep && vDef === this) { + return this.checkAllFields(value, deep); + } + // In most cases we rely exclusively on isSupertypeOf to make O(1) + // subtyping determinations. This suffices in most situations outside + // of unit tests, since interface conformance is checked whenever new + // instances are created using builder functions. + if (!this.isSupertypeOf(vDef)) { + return false; + } + // The exception is when deep is true; then, we recursively check all + // fields. + if (!deep) { + return true; + } + // Use the more specific Def (vDef) to perform the deep check, but + // shallow-check fields defined by the less specific Def (this). + return vDef.checkAllFields(value, deep) + && this.checkAllFields(value, false); + }; + DefImpl.prototype.build = function () { + var _this = this; + var buildParams = []; + for (var _i = 0; _i < arguments.length; _i++) { + buildParams[_i] = arguments[_i]; + } + // Calling Def.prototype.build multiple times has the effect of merely + // redefining this property. + this.buildParams = buildParams; + if (this.buildable) { + // If this Def is already buildable, update self.buildParams and + // continue using the old builder function. + return this; + } + // Every buildable type will have its "type" field filled in + // automatically. This includes types that are not subtypes of Node, + // like SourceLocation, but that seems harmless (TODO?). + this.field("type", String, function () { return _this.typeName; }); + // Override Dp.buildable for this Def instance. + this.buildable = true; + var addParam = function (built, param, arg, isArgAvailable) { + if (hasOwn.call(built, param)) + return; + var all = _this.allFields; + if (!hasOwn.call(all, param)) { + throw new Error("" + param); + } + var field = all[param]; + var type = field.type; + var value; + if (isArgAvailable) { + value = arg; + } + else if (field.defaultFn) { + // Expose the partially-built object to the default + // function as its `this` object. + value = field.defaultFn.call(built); + } + else { + var message = "no value or default function given for field " + + JSON.stringify(param) + " of " + _this.typeName + "(" + + _this.buildParams.map(function (name) { + return all[name]; + }).join(", ") + ")"; + throw new Error(message); + } + if (!type.check(value)) { + throw new Error(shallowStringify(value) + + " does not match field " + field + + " of type " + _this.typeName); + } + built[param] = value; + }; + // Calling the builder function will construct an instance of the Def, + // with positional arguments mapped to the fields original passed to .build. + // If not enough arguments are provided, the default value for the remaining fields + // will be used. + var builder = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var argc = args.length; + if (!_this.finalized) { + throw new Error("attempting to instantiate unfinalized type " + + _this.typeName); + } + var built = Object.create(nodePrototype); + _this.buildParams.forEach(function (param, i) { + if (i < argc) { + addParam(built, param, args[i], true); + } + else { + addParam(built, param, null, false); + } + }); + Object.keys(_this.allFields).forEach(function (param) { + // Use the default value. + addParam(built, param, null, false); + }); + // Make sure that the "type" field was filled automatically. + if (built.type !== _this.typeName) { + throw new Error(""); + } + return built; + }; + // Calling .from on the builder function will construct an instance of the Def, + // using field values from the passed object. For fields missing from the passed object, + // their default value will be used. + builder.from = function (obj) { + if (!_this.finalized) { + throw new Error("attempting to instantiate unfinalized type " + + _this.typeName); + } + var built = Object.create(nodePrototype); + Object.keys(_this.allFields).forEach(function (param) { + if (hasOwn.call(obj, param)) { + addParam(built, param, obj[param], true); + } + else { + addParam(built, param, null, false); + } + }); + // Make sure that the "type" field was filled automatically. + if (built.type !== _this.typeName) { + throw new Error(""); + } + return built; + }; + Object.defineProperty(builders, getBuilderName(this.typeName), { + enumerable: true, + value: builder + }); + return this; + }; + // The reason fields are specified using .field(...) instead of an object + // literal syntax is somewhat subtle: the object literal syntax would + // support only one key and one value, but with .field(...) we can pass + // any number of arguments to specify the field. + DefImpl.prototype.field = function (name, type, defaultFn, hidden) { + if (this.finalized) { + console.error("Ignoring attempt to redefine field " + + JSON.stringify(name) + " of finalized type " + + JSON.stringify(this.typeName)); + return this; + } + this.ownFields[name] = new Field(name, Type.from(type), defaultFn, hidden); + return this; // For chaining. + }; + DefImpl.prototype.finalize = function () { + var _this = this; + // It's not an error to finalize a type more than once, but only the + // first call to .finalize does anything. + if (!this.finalized) { + var allFields = this.allFields; + var allSupertypes = this.allSupertypes; + this.baseNames.forEach(function (name) { + var def = defCache[name]; + if (def instanceof Def) { + def.finalize(); + extend(allFields, def.allFields); + extend(allSupertypes, def.allSupertypes); + } + else { + var message = "unknown supertype name " + + JSON.stringify(name) + + " for subtype " + + JSON.stringify(_this.typeName); + throw new Error(message); + } + }); + // TODO Warn if fields are overridden with incompatible types. + extend(allFields, this.ownFields); + allSupertypes[this.typeName] = this; + this.fieldNames.length = 0; + for (var fieldName in allFields) { + if (hasOwn.call(allFields, fieldName) && + !allFields[fieldName].hidden) { + this.fieldNames.push(fieldName); + } + } + // Types are exported only once they have been finalized. + Object.defineProperty(namedTypes, this.typeName, { + enumerable: true, + value: this.type + }); + this.finalized = true; + // A linearization of the inheritance hierarchy. + populateSupertypeList(this.typeName, this.supertypeList); + if (this.buildable && + this.supertypeList.lastIndexOf("Expression") >= 0) { + wrapExpressionBuilderWithStatement(this.typeName); + } + } + }; + return DefImpl; + }(Def)); + // Note that the list returned by this function is a copy of the internal + // supertypeList, *without* the typeName itself as the first element. + function getSupertypeNames(typeName) { + if (!hasOwn.call(defCache, typeName)) { + throw new Error(""); + } + var d = defCache[typeName]; + if (d.finalized !== true) { + throw new Error(""); + } + return d.supertypeList.slice(1); + } + // Returns an object mapping from every known type in the defCache to the + // most specific supertype whose name is an own property of the candidates + // object. + function computeSupertypeLookupTable(candidates) { + var table = {}; + var typeNames = Object.keys(defCache); + var typeNameCount = typeNames.length; + for (var i = 0; i < typeNameCount; ++i) { + var typeName = typeNames[i]; + var d = defCache[typeName]; + if (d.finalized !== true) { + throw new Error("" + typeName); + } + for (var j = 0; j < d.supertypeList.length; ++j) { + var superTypeName = d.supertypeList[j]; + if (hasOwn.call(candidates, superTypeName)) { + table[typeName] = superTypeName; + break; + } + } + } + return table; + } + var builders = Object.create(null); + // This object is used as prototype for any node created by a builder. + var nodePrototype = {}; + // Call this function to define a new method to be shared by all AST + // nodes. The replaced method (if any) is returned for easy wrapping. + function defineMethod(name, func) { + var old = nodePrototype[name]; + // Pass undefined as func to delete nodePrototype[name]. + if (isUndefined.check(func)) { + delete nodePrototype[name]; + } + else { + isFunction.assert(func); + Object.defineProperty(nodePrototype, name, { + enumerable: true, + configurable: true, + value: func + }); + } + return old; + } + function getBuilderName(typeName) { + return typeName.replace(/^[A-Z]+/, function (upperCasePrefix) { + var len = upperCasePrefix.length; + switch (len) { + case 0: return ""; + // If there's only one initial capital letter, just lower-case it. + case 1: return upperCasePrefix.toLowerCase(); + default: + // If there's more than one initial capital letter, lower-case + // all but the last one, so that XMLDefaultDeclaration (for + // example) becomes xmlDefaultDeclaration. + return upperCasePrefix.slice(0, len - 1).toLowerCase() + + upperCasePrefix.charAt(len - 1); + } + }); + } + function getStatementBuilderName(typeName) { + typeName = getBuilderName(typeName); + return typeName.replace(/(Expression)?$/, "Statement"); + } + var namedTypes = {}; + // Like Object.keys, but aware of what fields each AST type should have. + function getFieldNames(object) { + var d = defFromValue(object); + if (d) { + return d.fieldNames.slice(0); + } + if ("type" in object) { + throw new Error("did not recognize object of type " + + JSON.stringify(object.type)); + } + return Object.keys(object); + } + // Get the value of an object property, taking object.type and default + // functions into account. + function getFieldValue(object, fieldName) { + var d = defFromValue(object); + if (d) { + var field = d.allFields[fieldName]; + if (field) { + return field.getValue(object); + } + } + return object && object[fieldName]; + } + // Iterate over all defined fields of an object, including those missing + // or undefined, passing each field name and effective value (as returned + // by getFieldValue) to the callback. If the object has no corresponding + // Def, the callback will never be called. + function eachField(object, callback, context) { + getFieldNames(object).forEach(function (name) { + callback.call(this, name, getFieldValue(object, name)); + }, context); + } + // Similar to eachField, except that iteration stops as soon as the + // callback returns a truthy value. Like Array.prototype.some, the final + // result is either true or false to indicates whether the callback + // returned true for any element or not. + function someField(object, callback, context) { + return getFieldNames(object).some(function (name) { + return callback.call(this, name, getFieldValue(object, name)); + }, context); + } + // Adds an additional builder for Expression subtypes + // that wraps the built Expression in an ExpressionStatements. + function wrapExpressionBuilderWithStatement(typeName) { + var wrapperName = getStatementBuilderName(typeName); + // skip if the builder already exists + if (builders[wrapperName]) + return; + // the builder function to wrap with builders.ExpressionStatement + var wrapped = builders[getBuilderName(typeName)]; + // skip if there is nothing to wrap + if (!wrapped) + return; + var builder = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return builders.expressionStatement(wrapped.apply(builders, args)); + }; + builder.from = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return builders.expressionStatement(wrapped.from.apply(builders, args)); + }; + builders[wrapperName] = builder; + } + function populateSupertypeList(typeName, list) { + list.length = 0; + list.push(typeName); + var lastSeen = Object.create(null); + for (var pos = 0; pos < list.length; ++pos) { + typeName = list[pos]; + var d = defCache[typeName]; + if (d.finalized !== true) { + throw new Error(""); + } + // If we saw typeName earlier in the breadth-first traversal, + // delete the last-seen occurrence. + if (hasOwn.call(lastSeen, typeName)) { + delete list[lastSeen[typeName]]; + } + // Record the new index of the last-seen occurrence of typeName. + lastSeen[typeName] = pos; + // Enqueue the base names of this type. + list.push.apply(list, d.baseNames); + } + // Compaction loop to remove array holes. + for (var to = 0, from = to, len = list.length; from < len; ++from) { + if (hasOwn.call(list, from)) { + list[to++] = list[from]; + } + } + list.length = to; + } + function extend(into, from) { + Object.keys(from).forEach(function (name) { + into[name] = from[name]; + }); + return into; + } + function finalize() { + Object.keys(defCache).forEach(function (name) { + defCache[name].finalize(); + }); + } + return { + Type: Type, + builtInTypes: builtInTypes, + getSupertypeNames: getSupertypeNames, + computeSupertypeLookupTable: computeSupertypeLookupTable, + builders: builders, + defineMethod: defineMethod, + getBuilderName: getBuilderName, + getStatementBuilderName: getStatementBuilderName, + namedTypes: namedTypes, + getFieldNames: getFieldNames, + getFieldValue: getFieldValue, + eachField: eachField, + someField: someField, + finalize: finalize, + }; +} +exports["default"] = typesPlugin; +; + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/main.js": +/*!*******************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/main.js ***! + \*******************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.visit = exports.use = exports.Type = exports.someField = exports.PathVisitor = exports.Path = exports.NodePath = exports.namedTypes = exports.getSupertypeNames = exports.getFieldValue = exports.getFieldNames = exports.getBuilderName = exports.finalize = exports.eachField = exports.defineMethod = exports.builtInTypes = exports.builders = exports.astNodesAreEquivalent = void 0; +var tslib_1 = __webpack_require__(/*! tslib */ "../../../.yarn/berry/cache/tslib-npm-2.4.0-9cb6dc5030-9.zip/node_modules/tslib/tslib.es6.js"); +var fork_1 = tslib_1.__importDefault(__webpack_require__(/*! ./fork */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/fork.js")); +var core_1 = tslib_1.__importDefault(__webpack_require__(/*! ./def/core */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/core.js")); +var es6_1 = tslib_1.__importDefault(__webpack_require__(/*! ./def/es6 */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es6.js")); +var es7_1 = tslib_1.__importDefault(__webpack_require__(/*! ./def/es7 */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es7.js")); +var es2020_1 = tslib_1.__importDefault(__webpack_require__(/*! ./def/es2020 */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es2020.js")); +var jsx_1 = tslib_1.__importDefault(__webpack_require__(/*! ./def/jsx */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/jsx.js")); +var flow_1 = tslib_1.__importDefault(__webpack_require__(/*! ./def/flow */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/flow.js")); +var esprima_1 = tslib_1.__importDefault(__webpack_require__(/*! ./def/esprima */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/esprima.js")); +var babel_1 = tslib_1.__importDefault(__webpack_require__(/*! ./def/babel */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/babel.js")); +var typescript_1 = tslib_1.__importDefault(__webpack_require__(/*! ./def/typescript */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/typescript.js")); +var es_proposals_1 = tslib_1.__importDefault(__webpack_require__(/*! ./def/es-proposals */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/def/es-proposals.js")); +var namedTypes_1 = __webpack_require__(/*! ./gen/namedTypes */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/gen/namedTypes.js"); +Object.defineProperty(exports, "namedTypes", ({ enumerable: true, get: function () { return namedTypes_1.namedTypes; } })); +var _a = fork_1.default([ + // This core module of AST types captures ES5 as it is parsed today by + // git://github.com/ariya/esprima.git#master. + core_1.default, + // Feel free to add to or remove from this list of extension modules to + // configure the precise type hierarchy that you need. + es6_1.default, + es7_1.default, + es2020_1.default, + jsx_1.default, + flow_1.default, + esprima_1.default, + babel_1.default, + typescript_1.default, + es_proposals_1.default, +]), astNodesAreEquivalent = _a.astNodesAreEquivalent, builders = _a.builders, builtInTypes = _a.builtInTypes, defineMethod = _a.defineMethod, eachField = _a.eachField, finalize = _a.finalize, getBuilderName = _a.getBuilderName, getFieldNames = _a.getFieldNames, getFieldValue = _a.getFieldValue, getSupertypeNames = _a.getSupertypeNames, n = _a.namedTypes, NodePath = _a.NodePath, Path = _a.Path, PathVisitor = _a.PathVisitor, someField = _a.someField, Type = _a.Type, use = _a.use, visit = _a.visit; +exports.astNodesAreEquivalent = astNodesAreEquivalent; +exports.builders = builders; +exports.builtInTypes = builtInTypes; +exports.defineMethod = defineMethod; +exports.eachField = eachField; +exports.finalize = finalize; +exports.getBuilderName = getBuilderName; +exports.getFieldNames = getFieldNames; +exports.getFieldValue = getFieldValue; +exports.getSupertypeNames = getSupertypeNames; +exports.NodePath = NodePath; +exports.Path = Path; +exports.PathVisitor = PathVisitor; +exports.someField = someField; +exports.Type = Type; +exports.use = use; +exports.visit = visit; +// Populate the exported fields of the namedTypes namespace, while still +// retaining its member types. +Object.assign(namedTypes_1.namedTypes, n); + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/bytes-npm-3.1.2-28b8643004-9.zip/node_modules/bytes/index.js": +/*!***********************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/bytes-npm-3.1.2-28b8643004-9.zip/node_modules/bytes/index.js ***! + \***********************************************************************************************/ +/***/ ((module) => { + +"use strict"; +/*! + * bytes + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015 Jed Watson + * MIT Licensed + */ + + + +/** + * Module exports. + * @public + */ + +module.exports = bytes; +module.exports.format = format; +module.exports.parse = parse; + +/** + * Module variables. + * @private + */ + +var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; + +var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; + +var map = { + b: 1, + kb: 1 << 10, + mb: 1 << 20, + gb: 1 << 30, + tb: Math.pow(1024, 4), + pb: Math.pow(1024, 5), +}; + +var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i; + +/** + * Convert the given value in bytes into a string or parse to string to an integer in bytes. + * + * @param {string|number} value + * @param {{ + * case: [string], + * decimalPlaces: [number] + * fixedDecimals: [boolean] + * thousandsSeparator: [string] + * unitSeparator: [string] + * }} [options] bytes options. + * + * @returns {string|number|null} + */ + +function bytes(value, options) { + if (typeof value === 'string') { + return parse(value); + } + + if (typeof value === 'number') { + return format(value, options); + } + + return null; +} + +/** + * Format the given value in bytes into a string. + * + * If the value is negative, it is kept as such. If it is a float, + * it is rounded. + * + * @param {number} value + * @param {object} [options] + * @param {number} [options.decimalPlaces=2] + * @param {number} [options.fixedDecimals=false] + * @param {string} [options.thousandsSeparator=] + * @param {string} [options.unit=] + * @param {string} [options.unitSeparator=] + * + * @returns {string|null} + * @public + */ + +function format(value, options) { + if (!Number.isFinite(value)) { + return null; + } + + var mag = Math.abs(value); + var thousandsSeparator = (options && options.thousandsSeparator) || ''; + var unitSeparator = (options && options.unitSeparator) || ''; + var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2; + var fixedDecimals = Boolean(options && options.fixedDecimals); + var unit = (options && options.unit) || ''; + + if (!unit || !map[unit.toLowerCase()]) { + if (mag >= map.pb) { + unit = 'PB'; + } else if (mag >= map.tb) { + unit = 'TB'; + } else if (mag >= map.gb) { + unit = 'GB'; + } else if (mag >= map.mb) { + unit = 'MB'; + } else if (mag >= map.kb) { + unit = 'KB'; + } else { + unit = 'B'; + } + } + + var val = value / map[unit.toLowerCase()]; + var str = val.toFixed(decimalPlaces); + + if (!fixedDecimals) { + str = str.replace(formatDecimalsRegExp, '$1'); + } + + if (thousandsSeparator) { + str = str.split('.').map(function (s, i) { + return i === 0 + ? s.replace(formatThousandsRegExp, thousandsSeparator) + : s + }).join('.'); + } + + return str + unitSeparator + unit; +} + +/** + * Parse the string value into an integer in bytes. + * + * If no unit is given, it is assumed the value is in bytes. + * + * @param {number|string} val + * + * @returns {number|null} + * @public + */ + +function parse(val) { + if (typeof val === 'number' && !isNaN(val)) { + return val; + } + + if (typeof val !== 'string') { + return null; + } + + // Test if the string passed is valid + var results = parseRegExp.exec(val); + var floatValue; + var unit = 'b'; + + if (!results) { + // Nothing could be extracted from the given string + floatValue = parseInt(val, 10); + unit = 'b' + } else { + // Retrieve the value and the unit + floatValue = parseFloat(results[1]); + unit = results[4].toLowerCase(); + } + + if (isNaN(floatValue)) { + return null; + } + + return Math.floor(map[unit] * floatValue); +} + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/core-util-is-npm-1.0.3-ca74b76c90-9.zip/node_modules/core-util-is/lib/util.js": +/*!****************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/core-util-is-npm-1.0.3-ca74b76c90-9.zip/node_modules/core-util-is/lib/util.js ***! + \****************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. + +function isArray(arg) { + if (Array.isArray) { + return Array.isArray(arg); + } + return objectToString(arg) === '[object Array]'; +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = __webpack_require__(/*! buffer */ "buffer").Buffer.isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/data-uri-to-buffer-npm-3.0.1-830646f9ee-9.zip/node_modules/data-uri-to-buffer/dist/src/index.js": +/*!**********************************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/data-uri-to-buffer-npm-3.0.1-830646f9ee-9.zip/node_modules/data-uri-to-buffer/dist/src/index.js ***! + \**********************************************************************************************************************************/ +/***/ ((module) => { + +"use strict"; + +/** + * Returns a `Buffer` instance from the given data URI `uri`. + * + * @param {String} uri Data URI to turn into a Buffer instance + * @return {Buffer} Buffer instance from Data URI + * @api public + */ +function dataUriToBuffer(uri) { + if (!/^data:/i.test(uri)) { + throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")'); + } + // strip newlines + uri = uri.replace(/\r?\n/g, ''); + // split the URI up into the "metadata" and the "data" portions + const firstComma = uri.indexOf(','); + if (firstComma === -1 || firstComma <= 4) { + throw new TypeError('malformed data: URI'); + } + // remove the "data:" scheme and parse the metadata + const meta = uri.substring(5, firstComma).split(';'); + let charset = ''; + let base64 = false; + const type = meta[0] || 'text/plain'; + let typeFull = type; + for (let i = 1; i < meta.length; i++) { + if (meta[i] === 'base64') { + base64 = true; + } + else { + typeFull += `;${meta[i]}`; + if (meta[i].indexOf('charset=') === 0) { + charset = meta[i].substring(8); + } + } + } + // defaults to US-ASCII only if type is not provided + if (!meta[0] && !charset.length) { + typeFull += ';charset=US-ASCII'; + charset = 'US-ASCII'; + } + // get the encoded data portion and decode URI-encoded chars + const encoding = base64 ? 'base64' : 'ascii'; + const data = unescape(uri.substring(firstComma + 1)); + const buffer = Buffer.from(data, encoding); + // set `.type` and `.typeFull` properties to MIME type + buffer.type = type; + buffer.typeFull = typeFull; + // set the `.charset` property + buffer.charset = charset; + return buffer; +} +module.exports = dataUriToBuffer; +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ "../../../.yarn/berry/cache/degenerator-npm-3.0.2-3b38df9d12-9.zip/node_modules/degenerator/dist/src/index.js": +/*!********************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/degenerator-npm-3.0.2-3b38df9d12-9.zip/node_modules/degenerator/dist/src/index.js ***! + \********************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +const util_1 = __webpack_require__(/*! util */ "util"); +const escodegen_1 = __webpack_require__(/*! escodegen */ "../../../.yarn/berry/cache/escodegen-npm-1.14.3-a4dedc6eeb-9.zip/node_modules/escodegen/escodegen.js"); +const esprima_1 = __webpack_require__(/*! esprima */ "../../../.yarn/berry/cache/esprima-npm-4.0.1-1084e98778-9.zip/node_modules/esprima/dist/esprima.js"); +const ast_types_1 = __webpack_require__(/*! ast-types */ "../../../.yarn/berry/cache/ast-types-npm-0.13.4-69f7e68df8-9.zip/node_modules/ast-types/main.js"); +const vm2_1 = __webpack_require__(/*! vm2 */ "../../../.yarn/berry/cache/vm2-patch-b52c0bba95-9.zip/node_modules/vm2/index.js"); +/** + * Compiles sync JavaScript code into JavaScript with async Functions. + * + * @param {String} code JavaScript string to convert + * @param {Array} names Array of function names to add `await` operators to + * @return {String} Converted JavaScript string with async/await injected + * @api public + */ +function degenerator(code, _names) { + if (!Array.isArray(_names)) { + throw new TypeError('an array of async function "names" is required'); + } + // Duplicate the `names` array since it's rude to augment the user args + const names = _names.slice(0); + const ast = esprima_1.parseScript(code); + // First pass is to find the `function` nodes and turn them into async or + // generator functions only if their body includes `CallExpressions` to + // function in `names`. We also add the names of the functions to the `names` + // array. We'll iterate several time, as every iteration might add new items + // to the `names` array, until no new names were added in the iteration. + let lastNamesLength = 0; + do { + lastNamesLength = names.length; + ast_types_1.visit(ast, { + visitVariableDeclaration(path) { + if (path.node.declarations) { + for (let i = 0; i < path.node.declarations.length; i++) { + const declaration = path.node.declarations[i]; + if (ast_types_1.namedTypes.VariableDeclarator.check(declaration) && + ast_types_1.namedTypes.Identifier.check(declaration.init) && + ast_types_1.namedTypes.Identifier.check(declaration.id) && + checkName(declaration.init.name, names) && + !checkName(declaration.id.name, names)) { + names.push(declaration.id.name); + } + } + } + return false; + }, + visitAssignmentExpression(path) { + if (ast_types_1.namedTypes.Identifier.check(path.node.left) && + ast_types_1.namedTypes.Identifier.check(path.node.right) && + checkName(path.node.right.name, names) && + !checkName(path.node.left.name, names)) { + names.push(path.node.left.name); + } + return false; + }, + visitFunction(path) { + if (path.node.id) { + let shouldDegenerate = false; + ast_types_1.visit(path.node, { + visitCallExpression(path) { + if (checkNames(path.node, names)) { + shouldDegenerate = true; + } + return false; + }, + }); + if (!shouldDegenerate) { + return false; + } + // Got a "function" expression/statement, + // convert it into an async function + path.node.async = true; + // Add function name to `names` array + if (!checkName(path.node.id.name, names)) { + names.push(path.node.id.name); + } + } + this.traverse(path); + }, + }); + } while (lastNamesLength !== names.length); + // Second pass is for adding `await`/`yield` statements to any function + // invocations that match the given `names` array. + ast_types_1.visit(ast, { + visitCallExpression(path) { + if (checkNames(path.node, names)) { + // A "function invocation" expression, + // we need to inject a `AwaitExpression`/`YieldExpression` + const delegate = false; + const { name, parent: { node: pNode }, } = path; + const expr = ast_types_1.builders.awaitExpression(path.node, delegate); + if (ast_types_1.namedTypes.CallExpression.check(pNode)) { + pNode.arguments[name] = expr; + } + else { + pNode[name] = expr; + } + } + this.traverse(path); + }, + }); + return escodegen_1.generate(ast); +} +(function (degenerator) { + function compile(code, returnName, names, options = {}) { + const compiled = degenerator(code, names); + const vm = new vm2_1.VM(options); + const script = new vm2_1.VMScript(`${compiled};${returnName}`, { + filename: options.filename, + }); + const fn = vm.run(script); + if (typeof fn !== 'function') { + throw new Error(`Expected a "function" to be returned for \`${returnName}\`, but got "${typeof fn}"`); + } + const r = function (...args) { + try { + const p = fn.apply(this, args); + if (typeof (p === null || p === void 0 ? void 0 : p.then) === 'function') { + return p; + } + return Promise.resolve(p); + } + catch (err) { + return Promise.reject(err); + } + }; + Object.defineProperty(r, 'toString', { + value: fn.toString.bind(fn), + enumerable: false, + }); + return r; + } + degenerator.compile = compile; +})(degenerator || (degenerator = {})); +/** + * Returns `true` if `node` has a matching name to one of the entries in the + * `names` array. + * + * @param {types.Node} node + * @param {Array} names Array of function names to return true for + * @return {Boolean} + * @api private + */ +function checkNames({ callee }, names) { + let name; + if (ast_types_1.namedTypes.Identifier.check(callee)) { + name = callee.name; + } + else if (ast_types_1.namedTypes.MemberExpression.check(callee)) { + if (ast_types_1.namedTypes.Identifier.check(callee.object) && + ast_types_1.namedTypes.Identifier.check(callee.property)) { + name = `${callee.object.name}.${callee.property.name}`; + } + else { + return false; + } + } + else if (ast_types_1.namedTypes.FunctionExpression.check(callee)) { + if (callee.id) { + name = callee.id.name; + } + else { + return false; + } + } + else { + throw new Error(`Don't know how to get name for: ${callee.type}`); + } + return checkName(name, names); +} +function checkName(name, names) { + // now that we have the `name`, check if any entries match in the `names` array + for (let i = 0; i < names.length; i++) { + const n = names[i]; + if (util_1.isRegExp(n)) { + if (n.test(name)) { + return true; + } + } + else if (name === n) { + return true; + } + } + return false; +} +module.exports = degenerator; +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ "../../../.yarn/berry/cache/depd-npm-2.0.0-b6c51a4b43-9.zip/node_modules/depd/index.js": +/*!*********************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/depd-npm-2.0.0-b6c51a4b43-9.zip/node_modules/depd/index.js ***! + \*********************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/*! + * depd + * Copyright(c) 2014-2018 Douglas Christopher Wilson + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var relative = (__webpack_require__(/*! path */ "path").relative) + +/** + * Module exports. + */ + +module.exports = depd + +/** + * Get the path to base files on. + */ + +var basePath = process.cwd() + +/** + * Determine if namespace is contained in the string. + */ + +function containsNamespace (str, namespace) { + var vals = str.split(/[ ,]+/) + var ns = String(namespace).toLowerCase() + + for (var i = 0; i < vals.length; i++) { + var val = vals[i] + + // namespace contained + if (val && (val === '*' || val.toLowerCase() === ns)) { + return true + } + } + + return false +} + +/** + * Convert a data descriptor to accessor descriptor. + */ + +function convertDataDescriptorToAccessor (obj, prop, message) { + var descriptor = Object.getOwnPropertyDescriptor(obj, prop) + var value = descriptor.value + + descriptor.get = function getter () { return value } + + if (descriptor.writable) { + descriptor.set = function setter (val) { return (value = val) } + } + + delete descriptor.value + delete descriptor.writable + + Object.defineProperty(obj, prop, descriptor) + + return descriptor +} + +/** + * Create arguments string to keep arity. + */ + +function createArgumentsString (arity) { + var str = '' + + for (var i = 0; i < arity; i++) { + str += ', arg' + i + } + + return str.substr(2) +} + +/** + * Create stack string from stack. + */ + +function createStackString (stack) { + var str = this.name + ': ' + this.namespace + + if (this.message) { + str += ' deprecated ' + this.message + } + + for (var i = 0; i < stack.length; i++) { + str += '\n at ' + stack[i].toString() + } + + return str +} + +/** + * Create deprecate for namespace in caller. + */ + +function depd (namespace) { + if (!namespace) { + throw new TypeError('argument namespace is required') + } + + var stack = getStack() + var site = callSiteLocation(stack[1]) + var file = site[0] + + function deprecate (message) { + // call to self as log + log.call(deprecate, message) + } + + deprecate._file = file + deprecate._ignored = isignored(namespace) + deprecate._namespace = namespace + deprecate._traced = istraced(namespace) + deprecate._warned = Object.create(null) + + deprecate.function = wrapfunction + deprecate.property = wrapproperty + + return deprecate +} + +/** + * Determine if event emitter has listeners of a given type. + * + * The way to do this check is done three different ways in Node.js >= 0.8 + * so this consolidates them into a minimal set using instance methods. + * + * @param {EventEmitter} emitter + * @param {string} type + * @returns {boolean} + * @private + */ + +function eehaslisteners (emitter, type) { + var count = typeof emitter.listenerCount !== 'function' + ? emitter.listeners(type).length + : emitter.listenerCount(type) + + return count > 0 +} + +/** + * Determine if namespace is ignored. + */ + +function isignored (namespace) { + if (process.noDeprecation) { + // --no-deprecation support + return true + } + + var str = process.env.NO_DEPRECATION || '' + + // namespace ignored + return containsNamespace(str, namespace) +} + +/** + * Determine if namespace is traced. + */ + +function istraced (namespace) { + if (process.traceDeprecation) { + // --trace-deprecation support + return true + } + + var str = process.env.TRACE_DEPRECATION || '' + + // namespace traced + return containsNamespace(str, namespace) +} + +/** + * Display deprecation message. + */ + +function log (message, site) { + var haslisteners = eehaslisteners(process, 'deprecation') + + // abort early if no destination + if (!haslisteners && this._ignored) { + return + } + + var caller + var callFile + var callSite + var depSite + var i = 0 + var seen = false + var stack = getStack() + var file = this._file + + if (site) { + // provided site + depSite = site + callSite = callSiteLocation(stack[1]) + callSite.name = depSite.name + file = callSite[0] + } else { + // get call site + i = 2 + depSite = callSiteLocation(stack[i]) + callSite = depSite + } + + // get caller of deprecated thing in relation to file + for (; i < stack.length; i++) { + caller = callSiteLocation(stack[i]) + callFile = caller[0] + + if (callFile === file) { + seen = true + } else if (callFile === this._file) { + file = this._file + } else if (seen) { + break + } + } + + var key = caller + ? depSite.join(':') + '__' + caller.join(':') + : undefined + + if (key !== undefined && key in this._warned) { + // already warned + return + } + + this._warned[key] = true + + // generate automatic message from call site + var msg = message + if (!msg) { + msg = callSite === depSite || !callSite.name + ? defaultMessage(depSite) + : defaultMessage(callSite) + } + + // emit deprecation if listeners exist + if (haslisteners) { + var err = DeprecationError(this._namespace, msg, stack.slice(i)) + process.emit('deprecation', err) + return + } + + // format and write message + var format = process.stderr.isTTY + ? formatColor + : formatPlain + var output = format.call(this, msg, caller, stack.slice(i)) + process.stderr.write(output + '\n', 'utf8') +} + +/** + * Get call site location as array. + */ + +function callSiteLocation (callSite) { + var file = callSite.getFileName() || '' + var line = callSite.getLineNumber() + var colm = callSite.getColumnNumber() + + if (callSite.isEval()) { + file = callSite.getEvalOrigin() + ', ' + file + } + + var site = [file, line, colm] + + site.callSite = callSite + site.name = callSite.getFunctionName() + + return site +} + +/** + * Generate a default message from the site. + */ + +function defaultMessage (site) { + var callSite = site.callSite + var funcName = site.name + + // make useful anonymous name + if (!funcName) { + funcName = '' + } + + var context = callSite.getThis() + var typeName = context && callSite.getTypeName() + + // ignore useless type name + if (typeName === 'Object') { + typeName = undefined + } + + // make useful type name + if (typeName === 'Function') { + typeName = context.name || typeName + } + + return typeName && callSite.getMethodName() + ? typeName + '.' + funcName + : funcName +} + +/** + * Format deprecation message without color. + */ + +function formatPlain (msg, caller, stack) { + var timestamp = new Date().toUTCString() + + var formatted = timestamp + + ' ' + this._namespace + + ' deprecated ' + msg + + // add stack trace + if (this._traced) { + for (var i = 0; i < stack.length; i++) { + formatted += '\n at ' + stack[i].toString() + } + + return formatted + } + + if (caller) { + formatted += ' at ' + formatLocation(caller) + } + + return formatted +} + +/** + * Format deprecation message with color. + */ + +function formatColor (msg, caller, stack) { + var formatted = '\x1b[36;1m' + this._namespace + '\x1b[22;39m' + // bold cyan + ' \x1b[33;1mdeprecated\x1b[22;39m' + // bold yellow + ' \x1b[0m' + msg + '\x1b[39m' // reset + + // add stack trace + if (this._traced) { + for (var i = 0; i < stack.length; i++) { + formatted += '\n \x1b[36mat ' + stack[i].toString() + '\x1b[39m' // cyan + } + + return formatted + } + + if (caller) { + formatted += ' \x1b[36m' + formatLocation(caller) + '\x1b[39m' // cyan + } + + return formatted +} + +/** + * Format call site location. + */ + +function formatLocation (callSite) { + return relative(basePath, callSite[0]) + + ':' + callSite[1] + + ':' + callSite[2] +} + +/** + * Get the stack as array of call sites. + */ + +function getStack () { + var limit = Error.stackTraceLimit + var obj = {} + var prep = Error.prepareStackTrace + + Error.prepareStackTrace = prepareObjectStackTrace + Error.stackTraceLimit = Math.max(10, limit) + + // capture the stack + Error.captureStackTrace(obj) + + // slice this function off the top + var stack = obj.stack.slice(1) + + Error.prepareStackTrace = prep + Error.stackTraceLimit = limit + + return stack +} + +/** + * Capture call site stack from v8. + */ + +function prepareObjectStackTrace (obj, stack) { + return stack +} + +/** + * Return a wrapped function in a deprecation message. + */ + +function wrapfunction (fn, message) { + if (typeof fn !== 'function') { + throw new TypeError('argument fn must be a function') + } + + var args = createArgumentsString(fn.length) + var stack = getStack() + var site = callSiteLocation(stack[1]) + + site.name = fn.name + + // eslint-disable-next-line no-new-func + var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site', + '"use strict"\n' + + 'return function (' + args + ') {' + + 'log.call(deprecate, message, site)\n' + + 'return fn.apply(this, arguments)\n' + + '}')(fn, log, this, message, site) + + return deprecatedfn +} + +/** + * Wrap property in a deprecation message. + */ + +function wrapproperty (obj, prop, message) { + if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) { + throw new TypeError('argument obj must be object') + } + + var descriptor = Object.getOwnPropertyDescriptor(obj, prop) + + if (!descriptor) { + throw new TypeError('must call property on owner object') + } + + if (!descriptor.configurable) { + throw new TypeError('property must be configurable') + } + + var deprecate = this + var stack = getStack() + var site = callSiteLocation(stack[1]) + + // set site name + site.name = prop + + // convert data descriptor + if ('value' in descriptor) { + descriptor = convertDataDescriptorToAccessor(obj, prop, message) + } + + var get = descriptor.get + var set = descriptor.set + + // wrap getter + if (typeof get === 'function') { + descriptor.get = function getter () { + log.call(deprecate, message, site) + return get.apply(this, arguments) + } + } + + // wrap setter + if (typeof set === 'function') { + descriptor.set = function setter () { + log.call(deprecate, message, site) + return set.apply(this, arguments) + } + } + + Object.defineProperty(obj, prop, descriptor) +} + +/** + * Create DeprecationError for deprecation + */ + +function DeprecationError (namespace, message, stack) { + var error = new Error() + var stackString + + Object.defineProperty(error, 'constructor', { + value: DeprecationError + }) + + Object.defineProperty(error, 'message', { + configurable: true, + enumerable: false, + value: message, + writable: true + }) + + Object.defineProperty(error, 'name', { + enumerable: false, + configurable: true, + value: 'DeprecationError', + writable: true + }) + + Object.defineProperty(error, 'namespace', { + configurable: true, + enumerable: false, + value: namespace, + writable: true + }) + + Object.defineProperty(error, 'stack', { + configurable: true, + enumerable: false, + get: function () { + if (stackString !== undefined) { + return stackString + } + + // prepare stack trace + return (stackString = createStackString.call(this, stack)) + }, + set: function setter (val) { + stackString = val + } + }) + + return error +} + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/escodegen-npm-1.14.3-a4dedc6eeb-9.zip/node_modules/escodegen/escodegen.js": +/*!************************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/escodegen-npm-1.14.3-a4dedc6eeb-9.zip/node_modules/escodegen/escodegen.js ***! + \************************************************************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +/* + Copyright (C) 2012-2014 Yusuke Suzuki + Copyright (C) 2015 Ingvar Stepanyan + Copyright (C) 2014 Ivan Nikulin + Copyright (C) 2012-2013 Michael Ficarra + Copyright (C) 2012-2013 Mathias Bynens + Copyright (C) 2013 Irakli Gozalishvili + Copyright (C) 2012 Robert Gust-Bardon + Copyright (C) 2012 John Freeman + Copyright (C) 2011-2012 Ariya Hidayat + Copyright (C) 2012 Joost-Wim Boekesteijn + Copyright (C) 2012 Kris Kowal + Copyright (C) 2012 Arpad Borsos + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*global exports:true, require:true, global:true*/ +(function () { + 'use strict'; + + var Syntax, + Precedence, + BinaryPrecedence, + SourceNode, + estraverse, + esutils, + base, + indent, + json, + renumber, + hexadecimal, + quotes, + escapeless, + newline, + space, + parentheses, + semicolons, + safeConcatenation, + directive, + extra, + parse, + sourceMap, + sourceCode, + preserveBlankLines, + FORMAT_MINIFY, + FORMAT_DEFAULTS; + + estraverse = __webpack_require__(/*! estraverse */ "../../../.yarn/berry/cache/estraverse-npm-4.3.0-920a32f3c6-9.zip/node_modules/estraverse/estraverse.js"); + esutils = __webpack_require__(/*! esutils */ "../../../.yarn/berry/cache/esutils-npm-2.0.3-f865beafd5-9.zip/node_modules/esutils/lib/utils.js"); + + Syntax = estraverse.Syntax; + + // Generation is done by generateExpression. + function isExpression(node) { + return CodeGenerator.Expression.hasOwnProperty(node.type); + } + + // Generation is done by generateStatement. + function isStatement(node) { + return CodeGenerator.Statement.hasOwnProperty(node.type); + } + + Precedence = { + Sequence: 0, + Yield: 1, + Assignment: 1, + Conditional: 2, + ArrowFunction: 2, + LogicalOR: 3, + LogicalAND: 4, + BitwiseOR: 5, + BitwiseXOR: 6, + BitwiseAND: 7, + Equality: 8, + Relational: 9, + BitwiseSHIFT: 10, + Additive: 11, + Multiplicative: 12, + Exponentiation: 13, + Await: 14, + Unary: 14, + Postfix: 15, + Call: 16, + New: 17, + TaggedTemplate: 18, + Member: 19, + Primary: 20 + }; + + BinaryPrecedence = { + '||': Precedence.LogicalOR, + '&&': Precedence.LogicalAND, + '|': Precedence.BitwiseOR, + '^': Precedence.BitwiseXOR, + '&': Precedence.BitwiseAND, + '==': Precedence.Equality, + '!=': Precedence.Equality, + '===': Precedence.Equality, + '!==': Precedence.Equality, + 'is': Precedence.Equality, + 'isnt': Precedence.Equality, + '<': Precedence.Relational, + '>': Precedence.Relational, + '<=': Precedence.Relational, + '>=': Precedence.Relational, + 'in': Precedence.Relational, + 'instanceof': Precedence.Relational, + '<<': Precedence.BitwiseSHIFT, + '>>': Precedence.BitwiseSHIFT, + '>>>': Precedence.BitwiseSHIFT, + '+': Precedence.Additive, + '-': Precedence.Additive, + '*': Precedence.Multiplicative, + '%': Precedence.Multiplicative, + '/': Precedence.Multiplicative, + '**': Precedence.Exponentiation + }; + + //Flags + var F_ALLOW_IN = 1, + F_ALLOW_CALL = 1 << 1, + F_ALLOW_UNPARATH_NEW = 1 << 2, + F_FUNC_BODY = 1 << 3, + F_DIRECTIVE_CTX = 1 << 4, + F_SEMICOLON_OPT = 1 << 5; + + //Expression flag sets + //NOTE: Flag order: + // F_ALLOW_IN + // F_ALLOW_CALL + // F_ALLOW_UNPARATH_NEW + var E_FTT = F_ALLOW_CALL | F_ALLOW_UNPARATH_NEW, + E_TTF = F_ALLOW_IN | F_ALLOW_CALL, + E_TTT = F_ALLOW_IN | F_ALLOW_CALL | F_ALLOW_UNPARATH_NEW, + E_TFF = F_ALLOW_IN, + E_FFT = F_ALLOW_UNPARATH_NEW, + E_TFT = F_ALLOW_IN | F_ALLOW_UNPARATH_NEW; + + //Statement flag sets + //NOTE: Flag order: + // F_ALLOW_IN + // F_FUNC_BODY + // F_DIRECTIVE_CTX + // F_SEMICOLON_OPT + var S_TFFF = F_ALLOW_IN, + S_TFFT = F_ALLOW_IN | F_SEMICOLON_OPT, + S_FFFF = 0x00, + S_TFTF = F_ALLOW_IN | F_DIRECTIVE_CTX, + S_TTFF = F_ALLOW_IN | F_FUNC_BODY; + + function getDefaultOptions() { + // default options + return { + indent: null, + base: null, + parse: null, + comment: false, + format: { + indent: { + style: ' ', + base: 0, + adjustMultilineComment: false + }, + newline: '\n', + space: ' ', + json: false, + renumber: false, + hexadecimal: false, + quotes: 'single', + escapeless: false, + compact: false, + parentheses: true, + semicolons: true, + safeConcatenation: false, + preserveBlankLines: false + }, + moz: { + comprehensionExpressionStartsWithAssignment: false, + starlessGenerator: false + }, + sourceMap: null, + sourceMapRoot: null, + sourceMapWithCode: false, + directive: false, + raw: true, + verbatim: null, + sourceCode: null + }; + } + + function stringRepeat(str, num) { + var result = ''; + + for (num |= 0; num > 0; num >>>= 1, str += str) { + if (num & 1) { + result += str; + } + } + + return result; + } + + function hasLineTerminator(str) { + return (/[\r\n]/g).test(str); + } + + function endsWithLineTerminator(str) { + var len = str.length; + return len && esutils.code.isLineTerminator(str.charCodeAt(len - 1)); + } + + function merge(target, override) { + var key; + for (key in override) { + if (override.hasOwnProperty(key)) { + target[key] = override[key]; + } + } + return target; + } + + function updateDeeply(target, override) { + var key, val; + + function isHashObject(target) { + return typeof target === 'object' && target instanceof Object && !(target instanceof RegExp); + } + + for (key in override) { + if (override.hasOwnProperty(key)) { + val = override[key]; + if (isHashObject(val)) { + if (isHashObject(target[key])) { + updateDeeply(target[key], val); + } else { + target[key] = updateDeeply({}, val); + } + } else { + target[key] = val; + } + } + } + return target; + } + + function generateNumber(value) { + var result, point, temp, exponent, pos; + + if (value !== value) { + throw new Error('Numeric literal whose value is NaN'); + } + if (value < 0 || (value === 0 && 1 / value < 0)) { + throw new Error('Numeric literal whose value is negative'); + } + + if (value === 1 / 0) { + return json ? 'null' : renumber ? '1e400' : '1e+400'; + } + + result = '' + value; + if (!renumber || result.length < 3) { + return result; + } + + point = result.indexOf('.'); + if (!json && result.charCodeAt(0) === 0x30 /* 0 */ && point === 1) { + point = 0; + result = result.slice(1); + } + temp = result; + result = result.replace('e+', 'e'); + exponent = 0; + if ((pos = temp.indexOf('e')) > 0) { + exponent = +temp.slice(pos + 1); + temp = temp.slice(0, pos); + } + if (point >= 0) { + exponent -= temp.length - point - 1; + temp = +(temp.slice(0, point) + temp.slice(point + 1)) + ''; + } + pos = 0; + while (temp.charCodeAt(temp.length + pos - 1) === 0x30 /* 0 */) { + --pos; + } + if (pos !== 0) { + exponent -= pos; + temp = temp.slice(0, pos); + } + if (exponent !== 0) { + temp += 'e' + exponent; + } + if ((temp.length < result.length || + (hexadecimal && value > 1e12 && Math.floor(value) === value && (temp = '0x' + value.toString(16)).length < result.length)) && + +temp === value) { + result = temp; + } + + return result; + } + + // Generate valid RegExp expression. + // This function is based on https://github.com/Constellation/iv Engine + + function escapeRegExpCharacter(ch, previousIsBackslash) { + // not handling '\' and handling \u2028 or \u2029 to unicode escape sequence + if ((ch & ~1) === 0x2028) { + return (previousIsBackslash ? 'u' : '\\u') + ((ch === 0x2028) ? '2028' : '2029'); + } else if (ch === 10 || ch === 13) { // \n, \r + return (previousIsBackslash ? '' : '\\') + ((ch === 10) ? 'n' : 'r'); + } + return String.fromCharCode(ch); + } + + function generateRegExp(reg) { + var match, result, flags, i, iz, ch, characterInBrack, previousIsBackslash; + + result = reg.toString(); + + if (reg.source) { + // extract flag from toString result + match = result.match(/\/([^/]*)$/); + if (!match) { + return result; + } + + flags = match[1]; + result = ''; + + characterInBrack = false; + previousIsBackslash = false; + for (i = 0, iz = reg.source.length; i < iz; ++i) { + ch = reg.source.charCodeAt(i); + + if (!previousIsBackslash) { + if (characterInBrack) { + if (ch === 93) { // ] + characterInBrack = false; + } + } else { + if (ch === 47) { // / + result += '\\'; + } else if (ch === 91) { // [ + characterInBrack = true; + } + } + result += escapeRegExpCharacter(ch, previousIsBackslash); + previousIsBackslash = ch === 92; // \ + } else { + // if new RegExp("\\\n') is provided, create /\n/ + result += escapeRegExpCharacter(ch, previousIsBackslash); + // prevent like /\\[/]/ + previousIsBackslash = false; + } + } + + return '/' + result + '/' + flags; + } + + return result; + } + + function escapeAllowedCharacter(code, next) { + var hex; + + if (code === 0x08 /* \b */) { + return '\\b'; + } + + if (code === 0x0C /* \f */) { + return '\\f'; + } + + if (code === 0x09 /* \t */) { + return '\\t'; + } + + hex = code.toString(16).toUpperCase(); + if (json || code > 0xFF) { + return '\\u' + '0000'.slice(hex.length) + hex; + } else if (code === 0x0000 && !esutils.code.isDecimalDigit(next)) { + return '\\0'; + } else if (code === 0x000B /* \v */) { // '\v' + return '\\x0B'; + } else { + return '\\x' + '00'.slice(hex.length) + hex; + } + } + + function escapeDisallowedCharacter(code) { + if (code === 0x5C /* \ */) { + return '\\\\'; + } + + if (code === 0x0A /* \n */) { + return '\\n'; + } + + if (code === 0x0D /* \r */) { + return '\\r'; + } + + if (code === 0x2028) { + return '\\u2028'; + } + + if (code === 0x2029) { + return '\\u2029'; + } + + throw new Error('Incorrectly classified character'); + } + + function escapeDirective(str) { + var i, iz, code, quote; + + quote = quotes === 'double' ? '"' : '\''; + for (i = 0, iz = str.length; i < iz; ++i) { + code = str.charCodeAt(i); + if (code === 0x27 /* ' */) { + quote = '"'; + break; + } else if (code === 0x22 /* " */) { + quote = '\''; + break; + } else if (code === 0x5C /* \ */) { + ++i; + } + } + + return quote + str + quote; + } + + function escapeString(str) { + var result = '', i, len, code, singleQuotes = 0, doubleQuotes = 0, single, quote; + + for (i = 0, len = str.length; i < len; ++i) { + code = str.charCodeAt(i); + if (code === 0x27 /* ' */) { + ++singleQuotes; + } else if (code === 0x22 /* " */) { + ++doubleQuotes; + } else if (code === 0x2F /* / */ && json) { + result += '\\'; + } else if (esutils.code.isLineTerminator(code) || code === 0x5C /* \ */) { + result += escapeDisallowedCharacter(code); + continue; + } else if (!esutils.code.isIdentifierPartES5(code) && (json && code < 0x20 /* SP */ || !json && !escapeless && (code < 0x20 /* SP */ || code > 0x7E /* ~ */))) { + result += escapeAllowedCharacter(code, str.charCodeAt(i + 1)); + continue; + } + result += String.fromCharCode(code); + } + + single = !(quotes === 'double' || (quotes === 'auto' && doubleQuotes < singleQuotes)); + quote = single ? '\'' : '"'; + + if (!(single ? singleQuotes : doubleQuotes)) { + return quote + result + quote; + } + + str = result; + result = quote; + + for (i = 0, len = str.length; i < len; ++i) { + code = str.charCodeAt(i); + if ((code === 0x27 /* ' */ && single) || (code === 0x22 /* " */ && !single)) { + result += '\\'; + } + result += String.fromCharCode(code); + } + + return result + quote; + } + + /** + * flatten an array to a string, where the array can contain + * either strings or nested arrays + */ + function flattenToString(arr) { + var i, iz, elem, result = ''; + for (i = 0, iz = arr.length; i < iz; ++i) { + elem = arr[i]; + result += Array.isArray(elem) ? flattenToString(elem) : elem; + } + return result; + } + + /** + * convert generated to a SourceNode when source maps are enabled. + */ + function toSourceNodeWhenNeeded(generated, node) { + if (!sourceMap) { + // with no source maps, generated is either an + // array or a string. if an array, flatten it. + // if a string, just return it + if (Array.isArray(generated)) { + return flattenToString(generated); + } else { + return generated; + } + } + if (node == null) { + if (generated instanceof SourceNode) { + return generated; + } else { + node = {}; + } + } + if (node.loc == null) { + return new SourceNode(null, null, sourceMap, generated, node.name || null); + } + return new SourceNode(node.loc.start.line, node.loc.start.column, (sourceMap === true ? node.loc.source || null : sourceMap), generated, node.name || null); + } + + function noEmptySpace() { + return (space) ? space : ' '; + } + + function join(left, right) { + var leftSource, + rightSource, + leftCharCode, + rightCharCode; + + leftSource = toSourceNodeWhenNeeded(left).toString(); + if (leftSource.length === 0) { + return [right]; + } + + rightSource = toSourceNodeWhenNeeded(right).toString(); + if (rightSource.length === 0) { + return [left]; + } + + leftCharCode = leftSource.charCodeAt(leftSource.length - 1); + rightCharCode = rightSource.charCodeAt(0); + + if ((leftCharCode === 0x2B /* + */ || leftCharCode === 0x2D /* - */) && leftCharCode === rightCharCode || + esutils.code.isIdentifierPartES5(leftCharCode) && esutils.code.isIdentifierPartES5(rightCharCode) || + leftCharCode === 0x2F /* / */ && rightCharCode === 0x69 /* i */) { // infix word operators all start with `i` + return [left, noEmptySpace(), right]; + } else if (esutils.code.isWhiteSpace(leftCharCode) || esutils.code.isLineTerminator(leftCharCode) || + esutils.code.isWhiteSpace(rightCharCode) || esutils.code.isLineTerminator(rightCharCode)) { + return [left, right]; + } + return [left, space, right]; + } + + function addIndent(stmt) { + return [base, stmt]; + } + + function withIndent(fn) { + var previousBase; + previousBase = base; + base += indent; + fn(base); + base = previousBase; + } + + function calculateSpaces(str) { + var i; + for (i = str.length - 1; i >= 0; --i) { + if (esutils.code.isLineTerminator(str.charCodeAt(i))) { + break; + } + } + return (str.length - 1) - i; + } + + function adjustMultilineComment(value, specialBase) { + var array, i, len, line, j, spaces, previousBase, sn; + + array = value.split(/\r\n|[\r\n]/); + spaces = Number.MAX_VALUE; + + // first line doesn't have indentation + for (i = 1, len = array.length; i < len; ++i) { + line = array[i]; + j = 0; + while (j < line.length && esutils.code.isWhiteSpace(line.charCodeAt(j))) { + ++j; + } + if (spaces > j) { + spaces = j; + } + } + + if (typeof specialBase !== 'undefined') { + // pattern like + // { + // var t = 20; /* + // * this is comment + // */ + // } + previousBase = base; + if (array[1][spaces] === '*') { + specialBase += ' '; + } + base = specialBase; + } else { + if (spaces & 1) { + // /* + // * + // */ + // If spaces are odd number, above pattern is considered. + // We waste 1 space. + --spaces; + } + previousBase = base; + } + + for (i = 1, len = array.length; i < len; ++i) { + sn = toSourceNodeWhenNeeded(addIndent(array[i].slice(spaces))); + array[i] = sourceMap ? sn.join('') : sn; + } + + base = previousBase; + + return array.join('\n'); + } + + function generateComment(comment, specialBase) { + if (comment.type === 'Line') { + if (endsWithLineTerminator(comment.value)) { + return '//' + comment.value; + } else { + // Always use LineTerminator + var result = '//' + comment.value; + if (!preserveBlankLines) { + result += '\n'; + } + return result; + } + } + if (extra.format.indent.adjustMultilineComment && /[\n\r]/.test(comment.value)) { + return adjustMultilineComment('/*' + comment.value + '*/', specialBase); + } + return '/*' + comment.value + '*/'; + } + + function addComments(stmt, result) { + var i, len, comment, save, tailingToStatement, specialBase, fragment, + extRange, range, prevRange, prefix, infix, suffix, count; + + if (stmt.leadingComments && stmt.leadingComments.length > 0) { + save = result; + + if (preserveBlankLines) { + comment = stmt.leadingComments[0]; + result = []; + + extRange = comment.extendedRange; + range = comment.range; + + prefix = sourceCode.substring(extRange[0], range[0]); + count = (prefix.match(/\n/g) || []).length; + if (count > 0) { + result.push(stringRepeat('\n', count)); + result.push(addIndent(generateComment(comment))); + } else { + result.push(prefix); + result.push(generateComment(comment)); + } + + prevRange = range; + + for (i = 1, len = stmt.leadingComments.length; i < len; i++) { + comment = stmt.leadingComments[i]; + range = comment.range; + + infix = sourceCode.substring(prevRange[1], range[0]); + count = (infix.match(/\n/g) || []).length; + result.push(stringRepeat('\n', count)); + result.push(addIndent(generateComment(comment))); + + prevRange = range; + } + + suffix = sourceCode.substring(range[1], extRange[1]); + count = (suffix.match(/\n/g) || []).length; + result.push(stringRepeat('\n', count)); + } else { + comment = stmt.leadingComments[0]; + result = []; + if (safeConcatenation && stmt.type === Syntax.Program && stmt.body.length === 0) { + result.push('\n'); + } + result.push(generateComment(comment)); + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push('\n'); + } + + for (i = 1, len = stmt.leadingComments.length; i < len; ++i) { + comment = stmt.leadingComments[i]; + fragment = [generateComment(comment)]; + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { + fragment.push('\n'); + } + result.push(addIndent(fragment)); + } + } + + result.push(addIndent(save)); + } + + if (stmt.trailingComments) { + + if (preserveBlankLines) { + comment = stmt.trailingComments[0]; + extRange = comment.extendedRange; + range = comment.range; + + prefix = sourceCode.substring(extRange[0], range[0]); + count = (prefix.match(/\n/g) || []).length; + + if (count > 0) { + result.push(stringRepeat('\n', count)); + result.push(addIndent(generateComment(comment))); + } else { + result.push(prefix); + result.push(generateComment(comment)); + } + } else { + tailingToStatement = !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString()); + specialBase = stringRepeat(' ', calculateSpaces(toSourceNodeWhenNeeded([base, result, indent]).toString())); + for (i = 0, len = stmt.trailingComments.length; i < len; ++i) { + comment = stmt.trailingComments[i]; + if (tailingToStatement) { + // We assume target like following script + // + // var t = 20; /** + // * This is comment of t + // */ + if (i === 0) { + // first case + result = [result, indent]; + } else { + result = [result, specialBase]; + } + result.push(generateComment(comment, specialBase)); + } else { + result = [result, addIndent(generateComment(comment))]; + } + if (i !== len - 1 && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result = [result, '\n']; + } + } + } + } + + return result; + } + + function generateBlankLines(start, end, result) { + var j, newlineCount = 0; + + for (j = start; j < end; j++) { + if (sourceCode[j] === '\n') { + newlineCount++; + } + } + + for (j = 1; j < newlineCount; j++) { + result.push(newline); + } + } + + function parenthesize(text, current, should) { + if (current < should) { + return ['(', text, ')']; + } + return text; + } + + function generateVerbatimString(string) { + var i, iz, result; + result = string.split(/\r\n|\n/); + for (i = 1, iz = result.length; i < iz; i++) { + result[i] = newline + base + result[i]; + } + return result; + } + + function generateVerbatim(expr, precedence) { + var verbatim, result, prec; + verbatim = expr[extra.verbatim]; + + if (typeof verbatim === 'string') { + result = parenthesize(generateVerbatimString(verbatim), Precedence.Sequence, precedence); + } else { + // verbatim is object + result = generateVerbatimString(verbatim.content); + prec = (verbatim.precedence != null) ? verbatim.precedence : Precedence.Sequence; + result = parenthesize(result, prec, precedence); + } + + return toSourceNodeWhenNeeded(result, expr); + } + + function CodeGenerator() { + } + + // Helpers. + + CodeGenerator.prototype.maybeBlock = function(stmt, flags) { + var result, noLeadingComment, that = this; + + noLeadingComment = !extra.comment || !stmt.leadingComments; + + if (stmt.type === Syntax.BlockStatement && noLeadingComment) { + return [space, this.generateStatement(stmt, flags)]; + } + + if (stmt.type === Syntax.EmptyStatement && noLeadingComment) { + return ';'; + } + + withIndent(function () { + result = [ + newline, + addIndent(that.generateStatement(stmt, flags)) + ]; + }); + + return result; + }; + + CodeGenerator.prototype.maybeBlockSuffix = function (stmt, result) { + var ends = endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString()); + if (stmt.type === Syntax.BlockStatement && (!extra.comment || !stmt.leadingComments) && !ends) { + return [result, space]; + } + if (ends) { + return [result, base]; + } + return [result, newline, base]; + }; + + function generateIdentifier(node) { + return toSourceNodeWhenNeeded(node.name, node); + } + + function generateAsyncPrefix(node, spaceRequired) { + return node.async ? 'async' + (spaceRequired ? noEmptySpace() : space) : ''; + } + + function generateStarSuffix(node) { + var isGenerator = node.generator && !extra.moz.starlessGenerator; + return isGenerator ? '*' + space : ''; + } + + function generateMethodPrefix(prop) { + var func = prop.value, prefix = ''; + if (func.async) { + prefix += generateAsyncPrefix(func, !prop.computed); + } + if (func.generator) { + // avoid space before method name + prefix += generateStarSuffix(func) ? '*' : ''; + } + return prefix; + } + + CodeGenerator.prototype.generatePattern = function (node, precedence, flags) { + if (node.type === Syntax.Identifier) { + return generateIdentifier(node); + } + return this.generateExpression(node, precedence, flags); + }; + + CodeGenerator.prototype.generateFunctionParams = function (node) { + var i, iz, result, hasDefault; + + hasDefault = false; + + if (node.type === Syntax.ArrowFunctionExpression && + !node.rest && (!node.defaults || node.defaults.length === 0) && + node.params.length === 1 && node.params[0].type === Syntax.Identifier) { + // arg => { } case + result = [generateAsyncPrefix(node, true), generateIdentifier(node.params[0])]; + } else { + result = node.type === Syntax.ArrowFunctionExpression ? [generateAsyncPrefix(node, false)] : []; + result.push('('); + if (node.defaults) { + hasDefault = true; + } + for (i = 0, iz = node.params.length; i < iz; ++i) { + if (hasDefault && node.defaults[i]) { + // Handle default values. + result.push(this.generateAssignment(node.params[i], node.defaults[i], '=', Precedence.Assignment, E_TTT)); + } else { + result.push(this.generatePattern(node.params[i], Precedence.Assignment, E_TTT)); + } + if (i + 1 < iz) { + result.push(',' + space); + } + } + + if (node.rest) { + if (node.params.length) { + result.push(',' + space); + } + result.push('...'); + result.push(generateIdentifier(node.rest)); + } + + result.push(')'); + } + + return result; + }; + + CodeGenerator.prototype.generateFunctionBody = function (node) { + var result, expr; + + result = this.generateFunctionParams(node); + + if (node.type === Syntax.ArrowFunctionExpression) { + result.push(space); + result.push('=>'); + } + + if (node.expression) { + result.push(space); + expr = this.generateExpression(node.body, Precedence.Assignment, E_TTT); + if (expr.toString().charAt(0) === '{') { + expr = ['(', expr, ')']; + } + result.push(expr); + } else { + result.push(this.maybeBlock(node.body, S_TTFF)); + } + + return result; + }; + + CodeGenerator.prototype.generateIterationForStatement = function (operator, stmt, flags) { + var result = ['for' + (stmt.await ? noEmptySpace() + 'await' : '') + space + '('], that = this; + withIndent(function () { + if (stmt.left.type === Syntax.VariableDeclaration) { + withIndent(function () { + result.push(stmt.left.kind + noEmptySpace()); + result.push(that.generateStatement(stmt.left.declarations[0], S_FFFF)); + }); + } else { + result.push(that.generateExpression(stmt.left, Precedence.Call, E_TTT)); + } + + result = join(result, operator); + result = [join( + result, + that.generateExpression(stmt.right, Precedence.Assignment, E_TTT) + ), ')']; + }); + result.push(this.maybeBlock(stmt.body, flags)); + return result; + }; + + CodeGenerator.prototype.generatePropertyKey = function (expr, computed) { + var result = []; + + if (computed) { + result.push('['); + } + + result.push(this.generateExpression(expr, Precedence.Assignment, E_TTT)); + + if (computed) { + result.push(']'); + } + + return result; + }; + + CodeGenerator.prototype.generateAssignment = function (left, right, operator, precedence, flags) { + if (Precedence.Assignment < precedence) { + flags |= F_ALLOW_IN; + } + + return parenthesize( + [ + this.generateExpression(left, Precedence.Call, flags), + space + operator + space, + this.generateExpression(right, Precedence.Assignment, flags) + ], + Precedence.Assignment, + precedence + ); + }; + + CodeGenerator.prototype.semicolon = function (flags) { + if (!semicolons && flags & F_SEMICOLON_OPT) { + return ''; + } + return ';'; + }; + + // Statements. + + CodeGenerator.Statement = { + + BlockStatement: function (stmt, flags) { + var range, content, result = ['{', newline], that = this; + + withIndent(function () { + // handle functions without any code + if (stmt.body.length === 0 && preserveBlankLines) { + range = stmt.range; + if (range[1] - range[0] > 2) { + content = sourceCode.substring(range[0] + 1, range[1] - 1); + if (content[0] === '\n') { + result = ['{']; + } + result.push(content); + } + } + + var i, iz, fragment, bodyFlags; + bodyFlags = S_TFFF; + if (flags & F_FUNC_BODY) { + bodyFlags |= F_DIRECTIVE_CTX; + } + + for (i = 0, iz = stmt.body.length; i < iz; ++i) { + if (preserveBlankLines) { + // handle spaces before the first line + if (i === 0) { + if (stmt.body[0].leadingComments) { + range = stmt.body[0].leadingComments[0].extendedRange; + content = sourceCode.substring(range[0], range[1]); + if (content[0] === '\n') { + result = ['{']; + } + } + if (!stmt.body[0].leadingComments) { + generateBlankLines(stmt.range[0], stmt.body[0].range[0], result); + } + } + + // handle spaces between lines + if (i > 0) { + if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) { + generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result); + } + } + } + + if (i === iz - 1) { + bodyFlags |= F_SEMICOLON_OPT; + } + + if (stmt.body[i].leadingComments && preserveBlankLines) { + fragment = that.generateStatement(stmt.body[i], bodyFlags); + } else { + fragment = addIndent(that.generateStatement(stmt.body[i], bodyFlags)); + } + + result.push(fragment); + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { + if (preserveBlankLines && i < iz - 1) { + // don't add a new line if there are leading coments + // in the next statement + if (!stmt.body[i + 1].leadingComments) { + result.push(newline); + } + } else { + result.push(newline); + } + } + + if (preserveBlankLines) { + // handle spaces after the last line + if (i === iz - 1) { + if (!stmt.body[i].trailingComments) { + generateBlankLines(stmt.body[i].range[1], stmt.range[1], result); + } + } + } + } + }); + + result.push(addIndent('}')); + return result; + }, + + BreakStatement: function (stmt, flags) { + if (stmt.label) { + return 'break ' + stmt.label.name + this.semicolon(flags); + } + return 'break' + this.semicolon(flags); + }, + + ContinueStatement: function (stmt, flags) { + if (stmt.label) { + return 'continue ' + stmt.label.name + this.semicolon(flags); + } + return 'continue' + this.semicolon(flags); + }, + + ClassBody: function (stmt, flags) { + var result = [ '{', newline], that = this; + + withIndent(function (indent) { + var i, iz; + + for (i = 0, iz = stmt.body.length; i < iz; ++i) { + result.push(indent); + result.push(that.generateExpression(stmt.body[i], Precedence.Sequence, E_TTT)); + if (i + 1 < iz) { + result.push(newline); + } + } + }); + + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + result.push(base); + result.push('}'); + return result; + }, + + ClassDeclaration: function (stmt, flags) { + var result, fragment; + result = ['class']; + if (stmt.id) { + result = join(result, this.generateExpression(stmt.id, Precedence.Sequence, E_TTT)); + } + if (stmt.superClass) { + fragment = join('extends', this.generateExpression(stmt.superClass, Precedence.Unary, E_TTT)); + result = join(result, fragment); + } + result.push(space); + result.push(this.generateStatement(stmt.body, S_TFFT)); + return result; + }, + + DirectiveStatement: function (stmt, flags) { + if (extra.raw && stmt.raw) { + return stmt.raw + this.semicolon(flags); + } + return escapeDirective(stmt.directive) + this.semicolon(flags); + }, + + DoWhileStatement: function (stmt, flags) { + // Because `do 42 while (cond)` is Syntax Error. We need semicolon. + var result = join('do', this.maybeBlock(stmt.body, S_TFFF)); + result = this.maybeBlockSuffix(stmt.body, result); + return join(result, [ + 'while' + space + '(', + this.generateExpression(stmt.test, Precedence.Sequence, E_TTT), + ')' + this.semicolon(flags) + ]); + }, + + CatchClause: function (stmt, flags) { + var result, that = this; + withIndent(function () { + var guard; + + if (stmt.param) { + result = [ + 'catch' + space + '(', + that.generateExpression(stmt.param, Precedence.Sequence, E_TTT), + ')' + ]; + + if (stmt.guard) { + guard = that.generateExpression(stmt.guard, Precedence.Sequence, E_TTT); + result.splice(2, 0, ' if ', guard); + } + } else { + result = ['catch']; + } + }); + result.push(this.maybeBlock(stmt.body, S_TFFF)); + return result; + }, + + DebuggerStatement: function (stmt, flags) { + return 'debugger' + this.semicolon(flags); + }, + + EmptyStatement: function (stmt, flags) { + return ';'; + }, + + ExportDefaultDeclaration: function (stmt, flags) { + var result = [ 'export' ], bodyFlags; + + bodyFlags = (flags & F_SEMICOLON_OPT) ? S_TFFT : S_TFFF; + + // export default HoistableDeclaration[Default] + // export default AssignmentExpression[In] ; + result = join(result, 'default'); + if (isStatement(stmt.declaration)) { + result = join(result, this.generateStatement(stmt.declaration, bodyFlags)); + } else { + result = join(result, this.generateExpression(stmt.declaration, Precedence.Assignment, E_TTT) + this.semicolon(flags)); + } + return result; + }, + + ExportNamedDeclaration: function (stmt, flags) { + var result = [ 'export' ], bodyFlags, that = this; + + bodyFlags = (flags & F_SEMICOLON_OPT) ? S_TFFT : S_TFFF; + + // export VariableStatement + // export Declaration[Default] + if (stmt.declaration) { + return join(result, this.generateStatement(stmt.declaration, bodyFlags)); + } + + // export ExportClause[NoReference] FromClause ; + // export ExportClause ; + if (stmt.specifiers) { + if (stmt.specifiers.length === 0) { + result = join(result, '{' + space + '}'); + } else if (stmt.specifiers[0].type === Syntax.ExportBatchSpecifier) { + result = join(result, this.generateExpression(stmt.specifiers[0], Precedence.Sequence, E_TTT)); + } else { + result = join(result, '{'); + withIndent(function (indent) { + var i, iz; + result.push(newline); + for (i = 0, iz = stmt.specifiers.length; i < iz; ++i) { + result.push(indent); + result.push(that.generateExpression(stmt.specifiers[i], Precedence.Sequence, E_TTT)); + if (i + 1 < iz) { + result.push(',' + newline); + } + } + }); + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + result.push(base + '}'); + } + + if (stmt.source) { + result = join(result, [ + 'from' + space, + // ModuleSpecifier + this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), + this.semicolon(flags) + ]); + } else { + result.push(this.semicolon(flags)); + } + } + return result; + }, + + ExportAllDeclaration: function (stmt, flags) { + // export * FromClause ; + return [ + 'export' + space, + '*' + space, + 'from' + space, + // ModuleSpecifier + this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), + this.semicolon(flags) + ]; + }, + + ExpressionStatement: function (stmt, flags) { + var result, fragment; + + function isClassPrefixed(fragment) { + var code; + if (fragment.slice(0, 5) !== 'class') { + return false; + } + code = fragment.charCodeAt(5); + return code === 0x7B /* '{' */ || esutils.code.isWhiteSpace(code) || esutils.code.isLineTerminator(code); + } + + function isFunctionPrefixed(fragment) { + var code; + if (fragment.slice(0, 8) !== 'function') { + return false; + } + code = fragment.charCodeAt(8); + return code === 0x28 /* '(' */ || esutils.code.isWhiteSpace(code) || code === 0x2A /* '*' */ || esutils.code.isLineTerminator(code); + } + + function isAsyncPrefixed(fragment) { + var code, i, iz; + if (fragment.slice(0, 5) !== 'async') { + return false; + } + if (!esutils.code.isWhiteSpace(fragment.charCodeAt(5))) { + return false; + } + for (i = 6, iz = fragment.length; i < iz; ++i) { + if (!esutils.code.isWhiteSpace(fragment.charCodeAt(i))) { + break; + } + } + if (i === iz) { + return false; + } + if (fragment.slice(i, i + 8) !== 'function') { + return false; + } + code = fragment.charCodeAt(i + 8); + return code === 0x28 /* '(' */ || esutils.code.isWhiteSpace(code) || code === 0x2A /* '*' */ || esutils.code.isLineTerminator(code); + } + + result = [this.generateExpression(stmt.expression, Precedence.Sequence, E_TTT)]; + // 12.4 '{', 'function', 'class' is not allowed in this position. + // wrap expression with parentheses + fragment = toSourceNodeWhenNeeded(result).toString(); + if (fragment.charCodeAt(0) === 0x7B /* '{' */ || // ObjectExpression + isClassPrefixed(fragment) || + isFunctionPrefixed(fragment) || + isAsyncPrefixed(fragment) || + (directive && (flags & F_DIRECTIVE_CTX) && stmt.expression.type === Syntax.Literal && typeof stmt.expression.value === 'string')) { + result = ['(', result, ')' + this.semicolon(flags)]; + } else { + result.push(this.semicolon(flags)); + } + return result; + }, + + ImportDeclaration: function (stmt, flags) { + // ES6: 15.2.1 valid import declarations: + // - import ImportClause FromClause ; + // - import ModuleSpecifier ; + var result, cursor, that = this; + + // If no ImportClause is present, + // this should be `import ModuleSpecifier` so skip `from` + // ModuleSpecifier is StringLiteral. + if (stmt.specifiers.length === 0) { + // import ModuleSpecifier ; + return [ + 'import', + space, + // ModuleSpecifier + this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), + this.semicolon(flags) + ]; + } + + // import ImportClause FromClause ; + result = [ + 'import' + ]; + cursor = 0; + + // ImportedBinding + if (stmt.specifiers[cursor].type === Syntax.ImportDefaultSpecifier) { + result = join(result, [ + this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT) + ]); + ++cursor; + } + + if (stmt.specifiers[cursor]) { + if (cursor !== 0) { + result.push(','); + } + + if (stmt.specifiers[cursor].type === Syntax.ImportNamespaceSpecifier) { + // NameSpaceImport + result = join(result, [ + space, + this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT) + ]); + } else { + // NamedImports + result.push(space + '{'); + + if ((stmt.specifiers.length - cursor) === 1) { + // import { ... } from "..."; + result.push(space); + result.push(this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT)); + result.push(space + '}' + space); + } else { + // import { + // ..., + // ..., + // } from "..."; + withIndent(function (indent) { + var i, iz; + result.push(newline); + for (i = cursor, iz = stmt.specifiers.length; i < iz; ++i) { + result.push(indent); + result.push(that.generateExpression(stmt.specifiers[i], Precedence.Sequence, E_TTT)); + if (i + 1 < iz) { + result.push(',' + newline); + } + } + }); + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + result.push(base + '}' + space); + } + } + } + + result = join(result, [ + 'from' + space, + // ModuleSpecifier + this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), + this.semicolon(flags) + ]); + return result; + }, + + VariableDeclarator: function (stmt, flags) { + var itemFlags = (flags & F_ALLOW_IN) ? E_TTT : E_FTT; + if (stmt.init) { + return [ + this.generateExpression(stmt.id, Precedence.Assignment, itemFlags), + space, + '=', + space, + this.generateExpression(stmt.init, Precedence.Assignment, itemFlags) + ]; + } + return this.generatePattern(stmt.id, Precedence.Assignment, itemFlags); + }, + + VariableDeclaration: function (stmt, flags) { + // VariableDeclarator is typed as Statement, + // but joined with comma (not LineTerminator). + // So if comment is attached to target node, we should specialize. + var result, i, iz, node, bodyFlags, that = this; + + result = [ stmt.kind ]; + + bodyFlags = (flags & F_ALLOW_IN) ? S_TFFF : S_FFFF; + + function block() { + node = stmt.declarations[0]; + if (extra.comment && node.leadingComments) { + result.push('\n'); + result.push(addIndent(that.generateStatement(node, bodyFlags))); + } else { + result.push(noEmptySpace()); + result.push(that.generateStatement(node, bodyFlags)); + } + + for (i = 1, iz = stmt.declarations.length; i < iz; ++i) { + node = stmt.declarations[i]; + if (extra.comment && node.leadingComments) { + result.push(',' + newline); + result.push(addIndent(that.generateStatement(node, bodyFlags))); + } else { + result.push(',' + space); + result.push(that.generateStatement(node, bodyFlags)); + } + } + } + + if (stmt.declarations.length > 1) { + withIndent(block); + } else { + block(); + } + + result.push(this.semicolon(flags)); + + return result; + }, + + ThrowStatement: function (stmt, flags) { + return [join( + 'throw', + this.generateExpression(stmt.argument, Precedence.Sequence, E_TTT) + ), this.semicolon(flags)]; + }, + + TryStatement: function (stmt, flags) { + var result, i, iz, guardedHandlers; + + result = ['try', this.maybeBlock(stmt.block, S_TFFF)]; + result = this.maybeBlockSuffix(stmt.block, result); + + if (stmt.handlers) { + // old interface + for (i = 0, iz = stmt.handlers.length; i < iz; ++i) { + result = join(result, this.generateStatement(stmt.handlers[i], S_TFFF)); + if (stmt.finalizer || i + 1 !== iz) { + result = this.maybeBlockSuffix(stmt.handlers[i].body, result); + } + } + } else { + guardedHandlers = stmt.guardedHandlers || []; + + for (i = 0, iz = guardedHandlers.length; i < iz; ++i) { + result = join(result, this.generateStatement(guardedHandlers[i], S_TFFF)); + if (stmt.finalizer || i + 1 !== iz) { + result = this.maybeBlockSuffix(guardedHandlers[i].body, result); + } + } + + // new interface + if (stmt.handler) { + if (Array.isArray(stmt.handler)) { + for (i = 0, iz = stmt.handler.length; i < iz; ++i) { + result = join(result, this.generateStatement(stmt.handler[i], S_TFFF)); + if (stmt.finalizer || i + 1 !== iz) { + result = this.maybeBlockSuffix(stmt.handler[i].body, result); + } + } + } else { + result = join(result, this.generateStatement(stmt.handler, S_TFFF)); + if (stmt.finalizer) { + result = this.maybeBlockSuffix(stmt.handler.body, result); + } + } + } + } + if (stmt.finalizer) { + result = join(result, ['finally', this.maybeBlock(stmt.finalizer, S_TFFF)]); + } + return result; + }, + + SwitchStatement: function (stmt, flags) { + var result, fragment, i, iz, bodyFlags, that = this; + withIndent(function () { + result = [ + 'switch' + space + '(', + that.generateExpression(stmt.discriminant, Precedence.Sequence, E_TTT), + ')' + space + '{' + newline + ]; + }); + if (stmt.cases) { + bodyFlags = S_TFFF; + for (i = 0, iz = stmt.cases.length; i < iz; ++i) { + if (i === iz - 1) { + bodyFlags |= F_SEMICOLON_OPT; + } + fragment = addIndent(this.generateStatement(stmt.cases[i], bodyFlags)); + result.push(fragment); + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { + result.push(newline); + } + } + } + result.push(addIndent('}')); + return result; + }, + + SwitchCase: function (stmt, flags) { + var result, fragment, i, iz, bodyFlags, that = this; + withIndent(function () { + if (stmt.test) { + result = [ + join('case', that.generateExpression(stmt.test, Precedence.Sequence, E_TTT)), + ':' + ]; + } else { + result = ['default:']; + } + + i = 0; + iz = stmt.consequent.length; + if (iz && stmt.consequent[0].type === Syntax.BlockStatement) { + fragment = that.maybeBlock(stmt.consequent[0], S_TFFF); + result.push(fragment); + i = 1; + } + + if (i !== iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + + bodyFlags = S_TFFF; + for (; i < iz; ++i) { + if (i === iz - 1 && flags & F_SEMICOLON_OPT) { + bodyFlags |= F_SEMICOLON_OPT; + } + fragment = addIndent(that.generateStatement(stmt.consequent[i], bodyFlags)); + result.push(fragment); + if (i + 1 !== iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { + result.push(newline); + } + } + }); + return result; + }, + + IfStatement: function (stmt, flags) { + var result, bodyFlags, semicolonOptional, that = this; + withIndent(function () { + result = [ + 'if' + space + '(', + that.generateExpression(stmt.test, Precedence.Sequence, E_TTT), + ')' + ]; + }); + semicolonOptional = flags & F_SEMICOLON_OPT; + bodyFlags = S_TFFF; + if (semicolonOptional) { + bodyFlags |= F_SEMICOLON_OPT; + } + if (stmt.alternate) { + result.push(this.maybeBlock(stmt.consequent, S_TFFF)); + result = this.maybeBlockSuffix(stmt.consequent, result); + if (stmt.alternate.type === Syntax.IfStatement) { + result = join(result, ['else ', this.generateStatement(stmt.alternate, bodyFlags)]); + } else { + result = join(result, join('else', this.maybeBlock(stmt.alternate, bodyFlags))); + } + } else { + result.push(this.maybeBlock(stmt.consequent, bodyFlags)); + } + return result; + }, + + ForStatement: function (stmt, flags) { + var result, that = this; + withIndent(function () { + result = ['for' + space + '(']; + if (stmt.init) { + if (stmt.init.type === Syntax.VariableDeclaration) { + result.push(that.generateStatement(stmt.init, S_FFFF)); + } else { + // F_ALLOW_IN becomes false. + result.push(that.generateExpression(stmt.init, Precedence.Sequence, E_FTT)); + result.push(';'); + } + } else { + result.push(';'); + } + + if (stmt.test) { + result.push(space); + result.push(that.generateExpression(stmt.test, Precedence.Sequence, E_TTT)); + result.push(';'); + } else { + result.push(';'); + } + + if (stmt.update) { + result.push(space); + result.push(that.generateExpression(stmt.update, Precedence.Sequence, E_TTT)); + result.push(')'); + } else { + result.push(')'); + } + }); + + result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)); + return result; + }, + + ForInStatement: function (stmt, flags) { + return this.generateIterationForStatement('in', stmt, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF); + }, + + ForOfStatement: function (stmt, flags) { + return this.generateIterationForStatement('of', stmt, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF); + }, + + LabeledStatement: function (stmt, flags) { + return [stmt.label.name + ':', this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)]; + }, + + Program: function (stmt, flags) { + var result, fragment, i, iz, bodyFlags; + iz = stmt.body.length; + result = [safeConcatenation && iz > 0 ? '\n' : '']; + bodyFlags = S_TFTF; + for (i = 0; i < iz; ++i) { + if (!safeConcatenation && i === iz - 1) { + bodyFlags |= F_SEMICOLON_OPT; + } + + if (preserveBlankLines) { + // handle spaces before the first line + if (i === 0) { + if (!stmt.body[0].leadingComments) { + generateBlankLines(stmt.range[0], stmt.body[i].range[0], result); + } + } + + // handle spaces between lines + if (i > 0) { + if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) { + generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result); + } + } + } + + fragment = addIndent(this.generateStatement(stmt.body[i], bodyFlags)); + result.push(fragment); + if (i + 1 < iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { + if (preserveBlankLines) { + if (!stmt.body[i + 1].leadingComments) { + result.push(newline); + } + } else { + result.push(newline); + } + } + + if (preserveBlankLines) { + // handle spaces after the last line + if (i === iz - 1) { + if (!stmt.body[i].trailingComments) { + generateBlankLines(stmt.body[i].range[1], stmt.range[1], result); + } + } + } + } + return result; + }, + + FunctionDeclaration: function (stmt, flags) { + return [ + generateAsyncPrefix(stmt, true), + 'function', + generateStarSuffix(stmt) || noEmptySpace(), + stmt.id ? generateIdentifier(stmt.id) : '', + this.generateFunctionBody(stmt) + ]; + }, + + ReturnStatement: function (stmt, flags) { + if (stmt.argument) { + return [join( + 'return', + this.generateExpression(stmt.argument, Precedence.Sequence, E_TTT) + ), this.semicolon(flags)]; + } + return ['return' + this.semicolon(flags)]; + }, + + WhileStatement: function (stmt, flags) { + var result, that = this; + withIndent(function () { + result = [ + 'while' + space + '(', + that.generateExpression(stmt.test, Precedence.Sequence, E_TTT), + ')' + ]; + }); + result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)); + return result; + }, + + WithStatement: function (stmt, flags) { + var result, that = this; + withIndent(function () { + result = [ + 'with' + space + '(', + that.generateExpression(stmt.object, Precedence.Sequence, E_TTT), + ')' + ]; + }); + result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)); + return result; + } + + }; + + merge(CodeGenerator.prototype, CodeGenerator.Statement); + + // Expressions. + + CodeGenerator.Expression = { + + SequenceExpression: function (expr, precedence, flags) { + var result, i, iz; + if (Precedence.Sequence < precedence) { + flags |= F_ALLOW_IN; + } + result = []; + for (i = 0, iz = expr.expressions.length; i < iz; ++i) { + result.push(this.generateExpression(expr.expressions[i], Precedence.Assignment, flags)); + if (i + 1 < iz) { + result.push(',' + space); + } + } + return parenthesize(result, Precedence.Sequence, precedence); + }, + + AssignmentExpression: function (expr, precedence, flags) { + return this.generateAssignment(expr.left, expr.right, expr.operator, precedence, flags); + }, + + ArrowFunctionExpression: function (expr, precedence, flags) { + return parenthesize(this.generateFunctionBody(expr), Precedence.ArrowFunction, precedence); + }, + + ConditionalExpression: function (expr, precedence, flags) { + if (Precedence.Conditional < precedence) { + flags |= F_ALLOW_IN; + } + return parenthesize( + [ + this.generateExpression(expr.test, Precedence.LogicalOR, flags), + space + '?' + space, + this.generateExpression(expr.consequent, Precedence.Assignment, flags), + space + ':' + space, + this.generateExpression(expr.alternate, Precedence.Assignment, flags) + ], + Precedence.Conditional, + precedence + ); + }, + + LogicalExpression: function (expr, precedence, flags) { + return this.BinaryExpression(expr, precedence, flags); + }, + + BinaryExpression: function (expr, precedence, flags) { + var result, leftPrecedence, rightPrecedence, currentPrecedence, fragment, leftSource; + currentPrecedence = BinaryPrecedence[expr.operator]; + leftPrecedence = expr.operator === '**' ? Precedence.Postfix : currentPrecedence; + rightPrecedence = expr.operator === '**' ? currentPrecedence : currentPrecedence + 1; + + if (currentPrecedence < precedence) { + flags |= F_ALLOW_IN; + } + + fragment = this.generateExpression(expr.left, leftPrecedence, flags); + + leftSource = fragment.toString(); + + if (leftSource.charCodeAt(leftSource.length - 1) === 0x2F /* / */ && esutils.code.isIdentifierPartES5(expr.operator.charCodeAt(0))) { + result = [fragment, noEmptySpace(), expr.operator]; + } else { + result = join(fragment, expr.operator); + } + + fragment = this.generateExpression(expr.right, rightPrecedence, flags); + + if (expr.operator === '/' && fragment.toString().charAt(0) === '/' || + expr.operator.slice(-1) === '<' && fragment.toString().slice(0, 3) === '!--') { + // If '/' concats with '/' or `<` concats with `!--`, it is interpreted as comment start + result.push(noEmptySpace()); + result.push(fragment); + } else { + result = join(result, fragment); + } + + if (expr.operator === 'in' && !(flags & F_ALLOW_IN)) { + return ['(', result, ')']; + } + return parenthesize(result, currentPrecedence, precedence); + }, + + CallExpression: function (expr, precedence, flags) { + var result, i, iz; + // F_ALLOW_UNPARATH_NEW becomes false. + result = [this.generateExpression(expr.callee, Precedence.Call, E_TTF)]; + result.push('('); + for (i = 0, iz = expr['arguments'].length; i < iz; ++i) { + result.push(this.generateExpression(expr['arguments'][i], Precedence.Assignment, E_TTT)); + if (i + 1 < iz) { + result.push(',' + space); + } + } + result.push(')'); + + if (!(flags & F_ALLOW_CALL)) { + return ['(', result, ')']; + } + return parenthesize(result, Precedence.Call, precedence); + }, + + NewExpression: function (expr, precedence, flags) { + var result, length, i, iz, itemFlags; + length = expr['arguments'].length; + + // F_ALLOW_CALL becomes false. + // F_ALLOW_UNPARATH_NEW may become false. + itemFlags = (flags & F_ALLOW_UNPARATH_NEW && !parentheses && length === 0) ? E_TFT : E_TFF; + + result = join( + 'new', + this.generateExpression(expr.callee, Precedence.New, itemFlags) + ); + + if (!(flags & F_ALLOW_UNPARATH_NEW) || parentheses || length > 0) { + result.push('('); + for (i = 0, iz = length; i < iz; ++i) { + result.push(this.generateExpression(expr['arguments'][i], Precedence.Assignment, E_TTT)); + if (i + 1 < iz) { + result.push(',' + space); + } + } + result.push(')'); + } + + return parenthesize(result, Precedence.New, precedence); + }, + + MemberExpression: function (expr, precedence, flags) { + var result, fragment; + + // F_ALLOW_UNPARATH_NEW becomes false. + result = [this.generateExpression(expr.object, Precedence.Call, (flags & F_ALLOW_CALL) ? E_TTF : E_TFF)]; + + if (expr.computed) { + result.push('['); + result.push(this.generateExpression(expr.property, Precedence.Sequence, flags & F_ALLOW_CALL ? E_TTT : E_TFT)); + result.push(']'); + } else { + if (expr.object.type === Syntax.Literal && typeof expr.object.value === 'number') { + fragment = toSourceNodeWhenNeeded(result).toString(); + // When the following conditions are all true, + // 1. No floating point + // 2. Don't have exponents + // 3. The last character is a decimal digit + // 4. Not hexadecimal OR octal number literal + // we should add a floating point. + if ( + fragment.indexOf('.') < 0 && + !/[eExX]/.test(fragment) && + esutils.code.isDecimalDigit(fragment.charCodeAt(fragment.length - 1)) && + !(fragment.length >= 2 && fragment.charCodeAt(0) === 48) // '0' + ) { + result.push(' '); + } + } + result.push('.'); + result.push(generateIdentifier(expr.property)); + } + + return parenthesize(result, Precedence.Member, precedence); + }, + + MetaProperty: function (expr, precedence, flags) { + var result; + result = []; + result.push(typeof expr.meta === "string" ? expr.meta : generateIdentifier(expr.meta)); + result.push('.'); + result.push(typeof expr.property === "string" ? expr.property : generateIdentifier(expr.property)); + return parenthesize(result, Precedence.Member, precedence); + }, + + UnaryExpression: function (expr, precedence, flags) { + var result, fragment, rightCharCode, leftSource, leftCharCode; + fragment = this.generateExpression(expr.argument, Precedence.Unary, E_TTT); + + if (space === '') { + result = join(expr.operator, fragment); + } else { + result = [expr.operator]; + if (expr.operator.length > 2) { + // delete, void, typeof + // get `typeof []`, not `typeof[]` + result = join(result, fragment); + } else { + // Prevent inserting spaces between operator and argument if it is unnecessary + // like, `!cond` + leftSource = toSourceNodeWhenNeeded(result).toString(); + leftCharCode = leftSource.charCodeAt(leftSource.length - 1); + rightCharCode = fragment.toString().charCodeAt(0); + + if (((leftCharCode === 0x2B /* + */ || leftCharCode === 0x2D /* - */) && leftCharCode === rightCharCode) || + (esutils.code.isIdentifierPartES5(leftCharCode) && esutils.code.isIdentifierPartES5(rightCharCode))) { + result.push(noEmptySpace()); + result.push(fragment); + } else { + result.push(fragment); + } + } + } + return parenthesize(result, Precedence.Unary, precedence); + }, + + YieldExpression: function (expr, precedence, flags) { + var result; + if (expr.delegate) { + result = 'yield*'; + } else { + result = 'yield'; + } + if (expr.argument) { + result = join( + result, + this.generateExpression(expr.argument, Precedence.Yield, E_TTT) + ); + } + return parenthesize(result, Precedence.Yield, precedence); + }, + + AwaitExpression: function (expr, precedence, flags) { + var result = join( + expr.all ? 'await*' : 'await', + this.generateExpression(expr.argument, Precedence.Await, E_TTT) + ); + return parenthesize(result, Precedence.Await, precedence); + }, + + UpdateExpression: function (expr, precedence, flags) { + if (expr.prefix) { + return parenthesize( + [ + expr.operator, + this.generateExpression(expr.argument, Precedence.Unary, E_TTT) + ], + Precedence.Unary, + precedence + ); + } + return parenthesize( + [ + this.generateExpression(expr.argument, Precedence.Postfix, E_TTT), + expr.operator + ], + Precedence.Postfix, + precedence + ); + }, + + FunctionExpression: function (expr, precedence, flags) { + var result = [ + generateAsyncPrefix(expr, true), + 'function' + ]; + if (expr.id) { + result.push(generateStarSuffix(expr) || noEmptySpace()); + result.push(generateIdentifier(expr.id)); + } else { + result.push(generateStarSuffix(expr) || space); + } + result.push(this.generateFunctionBody(expr)); + return result; + }, + + ArrayPattern: function (expr, precedence, flags) { + return this.ArrayExpression(expr, precedence, flags, true); + }, + + ArrayExpression: function (expr, precedence, flags, isPattern) { + var result, multiline, that = this; + if (!expr.elements.length) { + return '[]'; + } + multiline = isPattern ? false : expr.elements.length > 1; + result = ['[', multiline ? newline : '']; + withIndent(function (indent) { + var i, iz; + for (i = 0, iz = expr.elements.length; i < iz; ++i) { + if (!expr.elements[i]) { + if (multiline) { + result.push(indent); + } + if (i + 1 === iz) { + result.push(','); + } + } else { + result.push(multiline ? indent : ''); + result.push(that.generateExpression(expr.elements[i], Precedence.Assignment, E_TTT)); + } + if (i + 1 < iz) { + result.push(',' + (multiline ? newline : space)); + } + } + }); + if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + result.push(multiline ? base : ''); + result.push(']'); + return result; + }, + + RestElement: function(expr, precedence, flags) { + return '...' + this.generatePattern(expr.argument); + }, + + ClassExpression: function (expr, precedence, flags) { + var result, fragment; + result = ['class']; + if (expr.id) { + result = join(result, this.generateExpression(expr.id, Precedence.Sequence, E_TTT)); + } + if (expr.superClass) { + fragment = join('extends', this.generateExpression(expr.superClass, Precedence.Unary, E_TTT)); + result = join(result, fragment); + } + result.push(space); + result.push(this.generateStatement(expr.body, S_TFFT)); + return result; + }, + + MethodDefinition: function (expr, precedence, flags) { + var result, fragment; + if (expr['static']) { + result = ['static' + space]; + } else { + result = []; + } + if (expr.kind === 'get' || expr.kind === 'set') { + fragment = [ + join(expr.kind, this.generatePropertyKey(expr.key, expr.computed)), + this.generateFunctionBody(expr.value) + ]; + } else { + fragment = [ + generateMethodPrefix(expr), + this.generatePropertyKey(expr.key, expr.computed), + this.generateFunctionBody(expr.value) + ]; + } + return join(result, fragment); + }, + + Property: function (expr, precedence, flags) { + if (expr.kind === 'get' || expr.kind === 'set') { + return [ + expr.kind, noEmptySpace(), + this.generatePropertyKey(expr.key, expr.computed), + this.generateFunctionBody(expr.value) + ]; + } + + if (expr.shorthand) { + if (expr.value.type === "AssignmentPattern") { + return this.AssignmentPattern(expr.value, Precedence.Sequence, E_TTT); + } + return this.generatePropertyKey(expr.key, expr.computed); + } + + if (expr.method) { + return [ + generateMethodPrefix(expr), + this.generatePropertyKey(expr.key, expr.computed), + this.generateFunctionBody(expr.value) + ]; + } + + return [ + this.generatePropertyKey(expr.key, expr.computed), + ':' + space, + this.generateExpression(expr.value, Precedence.Assignment, E_TTT) + ]; + }, + + ObjectExpression: function (expr, precedence, flags) { + var multiline, result, fragment, that = this; + + if (!expr.properties.length) { + return '{}'; + } + multiline = expr.properties.length > 1; + + withIndent(function () { + fragment = that.generateExpression(expr.properties[0], Precedence.Sequence, E_TTT); + }); + + if (!multiline) { + // issues 4 + // Do not transform from + // dejavu.Class.declare({ + // method2: function () {} + // }); + // to + // dejavu.Class.declare({method2: function () { + // }}); + if (!hasLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) { + return [ '{', space, fragment, space, '}' ]; + } + } + + withIndent(function (indent) { + var i, iz; + result = [ '{', newline, indent, fragment ]; + + if (multiline) { + result.push(',' + newline); + for (i = 1, iz = expr.properties.length; i < iz; ++i) { + result.push(indent); + result.push(that.generateExpression(expr.properties[i], Precedence.Sequence, E_TTT)); + if (i + 1 < iz) { + result.push(',' + newline); + } + } + } + }); + + if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + result.push(base); + result.push('}'); + return result; + }, + + AssignmentPattern: function(expr, precedence, flags) { + return this.generateAssignment(expr.left, expr.right, '=', precedence, flags); + }, + + ObjectPattern: function (expr, precedence, flags) { + var result, i, iz, multiline, property, that = this; + if (!expr.properties.length) { + return '{}'; + } + + multiline = false; + if (expr.properties.length === 1) { + property = expr.properties[0]; + if ( + property.type === Syntax.Property + && property.value.type !== Syntax.Identifier + ) { + multiline = true; + } + } else { + for (i = 0, iz = expr.properties.length; i < iz; ++i) { + property = expr.properties[i]; + if ( + property.type === Syntax.Property + && !property.shorthand + ) { + multiline = true; + break; + } + } + } + result = ['{', multiline ? newline : '' ]; + + withIndent(function (indent) { + var i, iz; + for (i = 0, iz = expr.properties.length; i < iz; ++i) { + result.push(multiline ? indent : ''); + result.push(that.generateExpression(expr.properties[i], Precedence.Sequence, E_TTT)); + if (i + 1 < iz) { + result.push(',' + (multiline ? newline : space)); + } + } + }); + + if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) { + result.push(newline); + } + result.push(multiline ? base : ''); + result.push('}'); + return result; + }, + + ThisExpression: function (expr, precedence, flags) { + return 'this'; + }, + + Super: function (expr, precedence, flags) { + return 'super'; + }, + + Identifier: function (expr, precedence, flags) { + return generateIdentifier(expr); + }, + + ImportDefaultSpecifier: function (expr, precedence, flags) { + return generateIdentifier(expr.id || expr.local); + }, + + ImportNamespaceSpecifier: function (expr, precedence, flags) { + var result = ['*']; + var id = expr.id || expr.local; + if (id) { + result.push(space + 'as' + noEmptySpace() + generateIdentifier(id)); + } + return result; + }, + + ImportSpecifier: function (expr, precedence, flags) { + var imported = expr.imported; + var result = [ imported.name ]; + var local = expr.local; + if (local && local.name !== imported.name) { + result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(local)); + } + return result; + }, + + ExportSpecifier: function (expr, precedence, flags) { + var local = expr.local; + var result = [ local.name ]; + var exported = expr.exported; + if (exported && exported.name !== local.name) { + result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(exported)); + } + return result; + }, + + Literal: function (expr, precedence, flags) { + var raw; + if (expr.hasOwnProperty('raw') && parse && extra.raw) { + try { + raw = parse(expr.raw).body[0].expression; + if (raw.type === Syntax.Literal) { + if (raw.value === expr.value) { + return expr.raw; + } + } + } catch (e) { + // not use raw property + } + } + + if (expr.regex) { + return '/' + expr.regex.pattern + '/' + expr.regex.flags; + } + + if (expr.value === null) { + return 'null'; + } + + if (typeof expr.value === 'string') { + return escapeString(expr.value); + } + + if (typeof expr.value === 'number') { + return generateNumber(expr.value); + } + + if (typeof expr.value === 'boolean') { + return expr.value ? 'true' : 'false'; + } + + return generateRegExp(expr.value); + }, + + GeneratorExpression: function (expr, precedence, flags) { + return this.ComprehensionExpression(expr, precedence, flags); + }, + + ComprehensionExpression: function (expr, precedence, flags) { + // GeneratorExpression should be parenthesized with (...), ComprehensionExpression with [...] + // Due to https://bugzilla.mozilla.org/show_bug.cgi?id=883468 position of expr.body can differ in Spidermonkey and ES6 + + var result, i, iz, fragment, that = this; + result = (expr.type === Syntax.GeneratorExpression) ? ['('] : ['[']; + + if (extra.moz.comprehensionExpressionStartsWithAssignment) { + fragment = this.generateExpression(expr.body, Precedence.Assignment, E_TTT); + result.push(fragment); + } + + if (expr.blocks) { + withIndent(function () { + for (i = 0, iz = expr.blocks.length; i < iz; ++i) { + fragment = that.generateExpression(expr.blocks[i], Precedence.Sequence, E_TTT); + if (i > 0 || extra.moz.comprehensionExpressionStartsWithAssignment) { + result = join(result, fragment); + } else { + result.push(fragment); + } + } + }); + } + + if (expr.filter) { + result = join(result, 'if' + space); + fragment = this.generateExpression(expr.filter, Precedence.Sequence, E_TTT); + result = join(result, [ '(', fragment, ')' ]); + } + + if (!extra.moz.comprehensionExpressionStartsWithAssignment) { + fragment = this.generateExpression(expr.body, Precedence.Assignment, E_TTT); + + result = join(result, fragment); + } + + result.push((expr.type === Syntax.GeneratorExpression) ? ')' : ']'); + return result; + }, + + ComprehensionBlock: function (expr, precedence, flags) { + var fragment; + if (expr.left.type === Syntax.VariableDeclaration) { + fragment = [ + expr.left.kind, noEmptySpace(), + this.generateStatement(expr.left.declarations[0], S_FFFF) + ]; + } else { + fragment = this.generateExpression(expr.left, Precedence.Call, E_TTT); + } + + fragment = join(fragment, expr.of ? 'of' : 'in'); + fragment = join(fragment, this.generateExpression(expr.right, Precedence.Sequence, E_TTT)); + + return [ 'for' + space + '(', fragment, ')' ]; + }, + + SpreadElement: function (expr, precedence, flags) { + return [ + '...', + this.generateExpression(expr.argument, Precedence.Assignment, E_TTT) + ]; + }, + + TaggedTemplateExpression: function (expr, precedence, flags) { + var itemFlags = E_TTF; + if (!(flags & F_ALLOW_CALL)) { + itemFlags = E_TFF; + } + var result = [ + this.generateExpression(expr.tag, Precedence.Call, itemFlags), + this.generateExpression(expr.quasi, Precedence.Primary, E_FFT) + ]; + return parenthesize(result, Precedence.TaggedTemplate, precedence); + }, + + TemplateElement: function (expr, precedence, flags) { + // Don't use "cooked". Since tagged template can use raw template + // representation. So if we do so, it breaks the script semantics. + return expr.value.raw; + }, + + TemplateLiteral: function (expr, precedence, flags) { + var result, i, iz; + result = [ '`' ]; + for (i = 0, iz = expr.quasis.length; i < iz; ++i) { + result.push(this.generateExpression(expr.quasis[i], Precedence.Primary, E_TTT)); + if (i + 1 < iz) { + result.push('${' + space); + result.push(this.generateExpression(expr.expressions[i], Precedence.Sequence, E_TTT)); + result.push(space + '}'); + } + } + result.push('`'); + return result; + }, + + ModuleSpecifier: function (expr, precedence, flags) { + return this.Literal(expr, precedence, flags); + }, + + ImportExpression: function(expr, precedence, flag) { + return parenthesize([ + 'import(', + this.generateExpression(expr.source, Precedence.Assignment, E_TTT), + ')' + ], Precedence.Call, precedence); + }, + + }; + + merge(CodeGenerator.prototype, CodeGenerator.Expression); + + CodeGenerator.prototype.generateExpression = function (expr, precedence, flags) { + var result, type; + + type = expr.type || Syntax.Property; + + if (extra.verbatim && expr.hasOwnProperty(extra.verbatim)) { + return generateVerbatim(expr, precedence); + } + + result = this[type](expr, precedence, flags); + + + if (extra.comment) { + result = addComments(expr, result); + } + return toSourceNodeWhenNeeded(result, expr); + }; + + CodeGenerator.prototype.generateStatement = function (stmt, flags) { + var result, + fragment; + + result = this[stmt.type](stmt, flags); + + // Attach comments + + if (extra.comment) { + result = addComments(stmt, result); + } + + fragment = toSourceNodeWhenNeeded(result).toString(); + if (stmt.type === Syntax.Program && !safeConcatenation && newline === '' && fragment.charAt(fragment.length - 1) === '\n') { + result = sourceMap ? toSourceNodeWhenNeeded(result).replaceRight(/\s+$/, '') : fragment.replace(/\s+$/, ''); + } + + return toSourceNodeWhenNeeded(result, stmt); + }; + + function generateInternal(node) { + var codegen; + + codegen = new CodeGenerator(); + if (isStatement(node)) { + return codegen.generateStatement(node, S_TFFF); + } + + if (isExpression(node)) { + return codegen.generateExpression(node, Precedence.Sequence, E_TTT); + } + + throw new Error('Unknown node type: ' + node.type); + } + + function generate(node, options) { + var defaultOptions = getDefaultOptions(), result, pair; + + if (options != null) { + // Obsolete options + // + // `options.indent` + // `options.base` + // + // Instead of them, we can use `option.format.indent`. + if (typeof options.indent === 'string') { + defaultOptions.format.indent.style = options.indent; + } + if (typeof options.base === 'number') { + defaultOptions.format.indent.base = options.base; + } + options = updateDeeply(defaultOptions, options); + indent = options.format.indent.style; + if (typeof options.base === 'string') { + base = options.base; + } else { + base = stringRepeat(indent, options.format.indent.base); + } + } else { + options = defaultOptions; + indent = options.format.indent.style; + base = stringRepeat(indent, options.format.indent.base); + } + json = options.format.json; + renumber = options.format.renumber; + hexadecimal = json ? false : options.format.hexadecimal; + quotes = json ? 'double' : options.format.quotes; + escapeless = options.format.escapeless; + newline = options.format.newline; + space = options.format.space; + if (options.format.compact) { + newline = space = indent = base = ''; + } + parentheses = options.format.parentheses; + semicolons = options.format.semicolons; + safeConcatenation = options.format.safeConcatenation; + directive = options.directive; + parse = json ? null : options.parse; + sourceMap = options.sourceMap; + sourceCode = options.sourceCode; + preserveBlankLines = options.format.preserveBlankLines && sourceCode !== null; + extra = options; + + if (sourceMap) { + if (!exports.browser) { + // We assume environment is node.js + // And prevent from including source-map by browserify + SourceNode = (__webpack_require__(/*! source-map */ "../../../.yarn/berry/cache/source-map-npm-0.6.1-1a3621db16-9.zip/node_modules/source-map/source-map.js").SourceNode); + } else { + SourceNode = global.sourceMap.SourceNode; + } + } + + result = generateInternal(node); + + if (!sourceMap) { + pair = {code: result.toString(), map: null}; + return options.sourceMapWithCode ? pair : pair.code; + } + + + pair = result.toStringWithSourceMap({ + file: options.file, + sourceRoot: options.sourceMapRoot + }); + + if (options.sourceContent) { + pair.map.setSourceContent(options.sourceMap, + options.sourceContent); + } + + if (options.sourceMapWithCode) { + return pair; + } + + return pair.map.toString(); + } + + FORMAT_MINIFY = { + indent: { + style: '', + base: 0 + }, + renumber: true, + hexadecimal: true, + quotes: 'auto', + escapeless: true, + compact: true, + parentheses: false, + semicolons: false + }; + + FORMAT_DEFAULTS = getDefaultOptions().format; + + exports.version = __webpack_require__(/*! ./package.json */ "../../../.yarn/berry/cache/escodegen-npm-1.14.3-a4dedc6eeb-9.zip/node_modules/escodegen/package.json").version; + exports.generate = generate; + exports.attachComments = estraverse.attachComments; + exports.Precedence = updateDeeply({}, Precedence); + exports.browser = false; + exports.FORMAT_MINIFY = FORMAT_MINIFY; + exports.FORMAT_DEFAULTS = FORMAT_DEFAULTS; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ + + +/***/ }), + +/***/ "../../../.yarn/berry/cache/esprima-npm-4.0.1-1084e98778-9.zip/node_modules/esprima/dist/esprima.js": +/*!**********************************************************************************************************!*\ + !*** ../../../.yarn/berry/cache/esprima-npm-4.0.1-1084e98778-9.zip/node_modules/esprima/dist/esprima.js ***! + \**********************************************************************************************************/ +/***/ (function(module) { + +(function webpackUniversalModuleDefinition(root, factory) { +/* istanbul ignore next */ + if(true) + module.exports = factory(); + else {} +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __nested_webpack_require_583__(moduleId) { + +/******/ // Check if module is in cache +/* istanbul ignore if */ +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_583__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __nested_webpack_require_583__.m = modules; + +/******/ // expose the module cache +/******/ __nested_webpack_require_583__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __nested_webpack_require_583__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __nested_webpack_require_583__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __nested_webpack_require_1808__) { + + "use strict"; + /* + Copyright JS Foundation and other contributors, https://js.foundation/ + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + Object.defineProperty(exports, "__esModule", { value: true }); + var comment_handler_1 = __nested_webpack_require_1808__(1); + var jsx_parser_1 = __nested_webpack_require_1808__(3); + var parser_1 = __nested_webpack_require_1808__(8); + var tokenizer_1 = __nested_webpack_require_1808__(15); + function parse(code, options, delegate) { + var commentHandler = null; + var proxyDelegate = function (node, metadata) { + if (delegate) { + delegate(node, metadata); + } + if (commentHandler) { + commentHandler.visit(node, metadata); + } + }; + var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null; + var collectComment = false; + if (options) { + collectComment = (typeof options.comment === 'boolean' && options.comment); + var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment); + if (collectComment || attachComment) { + commentHandler = new comment_handler_1.CommentHandler(); + commentHandler.attach = attachComment; + options.comment = true; + parserDelegate = proxyDelegate; + } + } + var isModule = false; + if (options && typeof options.sourceType === 'string') { + isModule = (options.sourceType === 'module'); + } + var parser; + if (options && typeof options.jsx === 'boolean' && options.jsx) { + parser = new jsx_parser_1.JSXParser(code, options, parserDelegate); + } + else { + parser = new parser_1.Parser(code, options, parserDelegate); + } + var program = isModule ? parser.parseModule() : parser.parseScript(); + var ast = program; + if (collectComment && commentHandler) { + ast.comments = commentHandler.comments; + } + if (parser.config.tokens) { + ast.tokens = parser.tokens; + } + if (parser.config.tolerant) { + ast.errors = parser.errorHandler.errors; + } + return ast; + } + exports.parse = parse; + function parseModule(code, options, delegate) { + var parsingOptions = options || {}; + parsingOptions.sourceType = 'module'; + return parse(code, parsingOptions, delegate); + } + exports.parseModule = parseModule; + function parseScript(code, options, delegate) { + var parsingOptions = options || {}; + parsingOptions.sourceType = 'script'; + return parse(code, parsingOptions, delegate); + } + exports.parseScript = parseScript; + function tokenize(code, options, delegate) { + var tokenizer = new tokenizer_1.Tokenizer(code, options); + var tokens; + tokens = []; + try { + while (true) { + var token = tokenizer.getNextToken(); + if (!token) { + break; + } + if (delegate) { + token = delegate(token); + } + tokens.push(token); + } + } + catch (e) { + tokenizer.errorHandler.tolerate(e); + } + if (tokenizer.errorHandler.tolerant) { + tokens.errors = tokenizer.errors(); + } + return tokens; + } + exports.tokenize = tokenize; + var syntax_1 = __nested_webpack_require_1808__(2); + exports.Syntax = syntax_1.Syntax; + // Sync with *.json manifests. + exports.version = '4.0.1'; + + +/***/ }, +/* 1 */ +/***/ function(module, exports, __nested_webpack_require_6456__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var syntax_1 = __nested_webpack_require_6456__(2); + var CommentHandler = (function () { + function CommentHandler() { + this.attach = false; + this.comments = []; + this.stack = []; + this.leading = []; + this.trailing = []; + } + CommentHandler.prototype.insertInnerComments = function (node, metadata) { + // innnerComments for properties empty block + // `function a() {/** comments **\/}` + if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) { + var innerComments = []; + for (var i = this.leading.length - 1; i >= 0; --i) { + var entry = this.leading[i]; + if (metadata.end.offset >= entry.start) { + innerComments.unshift(entry.comment); + this.leading.splice(i, 1); + this.trailing.splice(i, 1); + } + } + if (innerComments.length) { + node.innerComments = innerComments; + } + } + }; + CommentHandler.prototype.findTrailingComments = function (metadata) { + var trailingComments = []; + if (this.trailing.length > 0) { + for (var i = this.trailing.length - 1; i >= 0; --i) { + var entry_1 = this.trailing[i]; + if (entry_1.start >= metadata.end.offset) { + trailingComments.unshift(entry_1.comment); + } + } + this.trailing.length = 0; + return trailingComments; + } + var entry = this.stack[this.stack.length - 1]; + if (entry && entry.node.trailingComments) { + var firstComment = entry.node.trailingComments[0]; + if (firstComment && firstComment.range[0] >= metadata.end.offset) { + trailingComments = entry.node.trailingComments; + delete entry.node.trailingComments; + } + } + return trailingComments; + }; + CommentHandler.prototype.findLeadingComments = function (metadata) { + var leadingComments = []; + var target; + while (this.stack.length > 0) { + var entry = this.stack[this.stack.length - 1]; + if (entry && entry.start >= metadata.start.offset) { + target = entry.node; + this.stack.pop(); + } + else { + break; + } + } + if (target) { + var count = target.leadingComments ? target.leadingComments.length : 0; + for (var i = count - 1; i >= 0; --i) { + var comment = target.leadingComments[i]; + if (comment.range[1] <= metadata.start.offset) { + leadingComments.unshift(comment); + target.leadingComments.splice(i, 1); + } + } + if (target.leadingComments && target.leadingComments.length === 0) { + delete target.leadingComments; + } + return leadingComments; + } + for (var i = this.leading.length - 1; i >= 0; --i) { + var entry = this.leading[i]; + if (entry.start <= metadata.start.offset) { + leadingComments.unshift(entry.comment); + this.leading.splice(i, 1); + } + } + return leadingComments; + }; + CommentHandler.prototype.visitNode = function (node, metadata) { + if (node.type === syntax_1.Syntax.Program && node.body.length > 0) { + return; + } + this.insertInnerComments(node, metadata); + var trailingComments = this.findTrailingComments(metadata); + var leadingComments = this.findLeadingComments(metadata); + if (leadingComments.length > 0) { + node.leadingComments = leadingComments; + } + if (trailingComments.length > 0) { + node.trailingComments = trailingComments; + } + this.stack.push({ + node: node, + start: metadata.start.offset + }); + }; + CommentHandler.prototype.visitComment = function (node, metadata) { + var type = (node.type[0] === 'L') ? 'Line' : 'Block'; + var comment = { + type: type, + value: node.value + }; + if (node.range) { + comment.range = node.range; + } + if (node.loc) { + comment.loc = node.loc; + } + this.comments.push(comment); + if (this.attach) { + var entry = { + comment: { + type: type, + value: node.value, + range: [metadata.start.offset, metadata.end.offset] + }, + start: metadata.start.offset + }; + if (node.loc) { + entry.comment.loc = node.loc; + } + node.type = type; + this.leading.push(entry); + this.trailing.push(entry); + } + }; + CommentHandler.prototype.visit = function (node, metadata) { + if (node.type === 'LineComment') { + this.visitComment(node, metadata); + } + else if (node.type === 'BlockComment') { + this.visitComment(node, metadata); + } + else if (this.attach) { + this.visitNode(node, metadata); + } + }; + return CommentHandler; + }()); + exports.CommentHandler = CommentHandler; + + +/***/ }, +/* 2 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Syntax = { + AssignmentExpression: 'AssignmentExpression', + AssignmentPattern: 'AssignmentPattern', + ArrayExpression: 'ArrayExpression', + ArrayPattern: 'ArrayPattern', + ArrowFunctionExpression: 'ArrowFunctionExpression', + AwaitExpression: 'AwaitExpression', + BlockStatement: 'BlockStatement', + BinaryExpression: 'BinaryExpression', + BreakStatement: 'BreakStatement', + CallExpression: 'CallExpression', + CatchClause: 'CatchClause', + ClassBody: 'ClassBody', + ClassDeclaration: 'ClassDeclaration', + ClassExpression: 'ClassExpression', + ConditionalExpression: 'ConditionalExpression', + ContinueStatement: 'ContinueStatement', + DoWhileStatement: 'DoWhileStatement', + DebuggerStatement: 'DebuggerStatement', + EmptyStatement: 'EmptyStatement', + ExportAllDeclaration: 'ExportAllDeclaration', + ExportDefaultDeclaration: 'ExportDefaultDeclaration', + ExportNamedDeclaration: 'ExportNamedDeclaration', + ExportSpecifier: 'ExportSpecifier', + ExpressionStatement: 'ExpressionStatement', + ForStatement: 'ForStatement', + ForOfStatement: 'ForOfStatement', + ForInStatement: 'ForInStatement', + FunctionDeclaration: 'FunctionDeclaration', + FunctionExpression: 'FunctionExpression', + Identifier: 'Identifier', + IfStatement: 'IfStatement', + ImportDeclaration: 'ImportDeclaration', + ImportDefaultSpecifier: 'ImportDefaultSpecifier', + ImportNamespaceSpecifier: 'ImportNamespaceSpecifier', + ImportSpecifier: 'ImportSpecifier', + Literal: 'Literal', + LabeledStatement: 'LabeledStatement', + LogicalExpression: 'LogicalExpression', + MemberExpression: 'MemberExpression', + MetaProperty: 'MetaProperty', + MethodDefinition: 'MethodDefinition', + NewExpression: 'NewExpression', + ObjectExpression: 'ObjectExpression', + ObjectPattern: 'ObjectPattern', + Program: 'Program', + Property: 'Property', + RestElement: 'RestElement', + ReturnStatement: 'ReturnStatement', + SequenceExpression: 'SequenceExpression', + SpreadElement: 'SpreadElement', + Super: 'Super', + SwitchCase: 'SwitchCase', + SwitchStatement: 'SwitchStatement', + TaggedTemplateExpression: 'TaggedTemplateExpression', + TemplateElement: 'TemplateElement', + TemplateLiteral: 'TemplateLiteral', + ThisExpression: 'ThisExpression', + ThrowStatement: 'ThrowStatement', + TryStatement: 'TryStatement', + UnaryExpression: 'UnaryExpression', + UpdateExpression: 'UpdateExpression', + VariableDeclaration: 'VariableDeclaration', + VariableDeclarator: 'VariableDeclarator', + WhileStatement: 'WhileStatement', + WithStatement: 'WithStatement', + YieldExpression: 'YieldExpression' + }; + + +/***/ }, +/* 3 */ +/***/ function(module, exports, __nested_webpack_require_15019__) { + + "use strict"; +/* istanbul ignore next */ + var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + Object.defineProperty(exports, "__esModule", { value: true }); + var character_1 = __nested_webpack_require_15019__(4); + var JSXNode = __nested_webpack_require_15019__(5); + var jsx_syntax_1 = __nested_webpack_require_15019__(6); + var Node = __nested_webpack_require_15019__(7); + var parser_1 = __nested_webpack_require_15019__(8); + var token_1 = __nested_webpack_require_15019__(13); + var xhtml_entities_1 = __nested_webpack_require_15019__(14); + token_1.TokenName[100 /* Identifier */] = 'JSXIdentifier'; + token_1.TokenName[101 /* Text */] = 'JSXText'; + // Fully qualified element name, e.g. returns "svg:path" + function getQualifiedElementName(elementName) { + var qualifiedName; + switch (elementName.type) { + case jsx_syntax_1.JSXSyntax.JSXIdentifier: + var id = elementName; + qualifiedName = id.name; + break; + case jsx_syntax_1.JSXSyntax.JSXNamespacedName: + var ns = elementName; + qualifiedName = getQualifiedElementName(ns.namespace) + ':' + + getQualifiedElementName(ns.name); + break; + case jsx_syntax_1.JSXSyntax.JSXMemberExpression: + var expr = elementName; + qualifiedName = getQualifiedElementName(expr.object) + '.' + + getQualifiedElementName(expr.property); + break; + /* istanbul ignore next */ + default: + break; + } + return qualifiedName; + } + var JSXParser = (function (_super) { + __extends(JSXParser, _super); + function JSXParser(code, options, delegate) { + return _super.call(this, code, options, delegate) || this; + } + JSXParser.prototype.parsePrimaryExpression = function () { + return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this); + }; + JSXParser.prototype.startJSX = function () { + // Unwind the scanner before the lookahead token. + this.scanner.index = this.startMarker.index; + this.scanner.lineNumber = this.startMarker.line; + this.scanner.lineStart = this.startMarker.index - this.startMarker.column; + }; + JSXParser.prototype.finishJSX = function () { + // Prime the next lookahead. + this.nextToken(); + }; + JSXParser.prototype.reenterJSX = function () { + this.startJSX(); + this.expectJSX('}'); + // Pop the closing '}' added from the lookahead. + if (this.config.tokens) { + this.tokens.pop(); + } + }; + JSXParser.prototype.createJSXNode = function () { + this.collectComments(); + return { + index: this.scanner.index, + line: this.scanner.lineNumber, + column: this.scanner.index - this.scanner.lineStart + }; + }; + JSXParser.prototype.createJSXChildNode = function () { + return { + index: this.scanner.index, + line: this.scanner.lineNumber, + column: this.scanner.index - this.scanner.lineStart + }; + }; + JSXParser.prototype.scanXHTMLEntity = function (quote) { + var result = '&'; + var valid = true; + var terminated = false; + var numeric = false; + var hex = false; + while (!this.scanner.eof() && valid && !terminated) { + var ch = this.scanner.source[this.scanner.index]; + if (ch === quote) { + break; + } + terminated = (ch === ';'); + result += ch; + ++this.scanner.index; + if (!terminated) { + switch (result.length) { + case 2: + // e.g. '{' + numeric = (ch === '#'); + break; + case 3: + if (numeric) { + // e.g. 'A' + hex = (ch === 'x'); + valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0)); + numeric = numeric && !hex; + } + break; + default: + valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0))); + valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0))); + break; + } + } + } + if (valid && terminated && result.length > 2) { + // e.g. 'A' becomes just '#x41' + var str = result.substr(1, result.length - 2); + if (numeric && str.length > 1) { + result = String.fromCharCode(parseInt(str.substr(1), 10)); + } + else if (hex && str.length > 2) { + result = String.fromCharCode(parseInt('0' + str.substr(1), 16)); + } + else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) { + result = xhtml_entities_1.XHTMLEntities[str]; + } + } + return result; + }; + // Scan the next JSX token. This replaces Scanner#lex when in JSX mode. + JSXParser.prototype.lexJSX = function () { + var cp = this.scanner.source.charCodeAt(this.scanner.index); + // < > / : = { } + if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) { + var value = this.scanner.source[this.scanner.index++]; + return { + type: 7 /* Punctuator */, + value: value, + lineNumber: this.scanner.lineNumber, + lineStart: this.scanner.lineStart, + start: this.scanner.index - 1, + end: this.scanner.index + }; + } + // " ' + if (cp === 34 || cp === 39) { + var start = this.scanner.index; + var quote = this.scanner.source[this.scanner.index++]; + var str = ''; + while (!this.scanner.eof()) { + var ch = this.scanner.source[this.scanner.index++]; + if (ch === quote) { + break; + } + else if (ch === '&') { + str += this.scanXHTMLEntity(quote); + } + else { + str += ch; + } + } + return { + type: 8 /* StringLiteral */, + value: str, + lineNumber: this.scanner.lineNumber, + lineStart: this.scanner.lineStart, + start: start, + end: this.scanner.index + }; + } + // ... or . + if (cp === 46) { + var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1); + var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2); + var value = (n1 === 46 && n2 === 46) ? '...' : '.'; + var start = this.scanner.index; + this.scanner.index += value.length; + return { + type: 7 /* Punctuator */, + value: value, + lineNumber: this.scanner.lineNumber, + lineStart: this.scanner.lineStart, + start: start, + end: this.scanner.index + }; + } + // ` + if (cp === 96) { + // Only placeholder, since it will be rescanned as a real assignment expression. + return { + type: 10 /* Template */, + value: '', + lineNumber: this.scanner.lineNumber, + lineStart: this.scanner.lineStart, + start: this.scanner.index, + end: this.scanner.index + }; + } + // Identifer can not contain backslash (char code 92). + if (character_1.Character.isIdentifierStart(cp) && (cp !== 92)) { + var start = this.scanner.index; + ++this.scanner.index; + while (!this.scanner.eof()) { + var ch = this.scanner.source.charCodeAt(this.scanner.index); + if (character_1.Character.isIdentifierPart(ch) && (ch !== 92)) { + ++this.scanner.index; + } + else if (ch === 45) { + // Hyphen (char code 45) can be part of an identifier. + ++this.scanner.index; + } + else { + break; + } + } + var id = this.scanner.source.slice(start, this.scanner.index); + return { + type: 100 /* Identifier */, + value: id, + lineNumber: this.scanner.lineNumber, + lineStart: this.scanner.lineStart, + start: start, + end: this.scanner.index + }; + } + return this.scanner.lex(); + }; + JSXParser.prototype.nextJSXToken = function () { + this.collectComments(); + this.startMarker.index = this.scanner.index; + this.startMarker.line = this.scanner.lineNumber; + this.startMarker.column = this.scanner.index - this.scanner.lineStart; + var token = this.lexJSX(); + this.lastMarker.index = this.scanner.index; + this.lastMarker.line = this.scanner.lineNumber; + this.lastMarker.column = this.scanner.index - this.scanner.lineStart; + if (this.config.tokens) { + this.tokens.push(this.convertToken(token)); + } + return token; + }; + JSXParser.prototype.nextJSXText = function () { + this.startMarker.index = this.scanner.index; + this.startMarker.line = this.scanner.lineNumber; + this.startMarker.column = this.scanner.index - this.scanner.lineStart; + var start = this.scanner.index; + var text = ''; + while (!this.scanner.eof()) { + var ch = this.scanner.source[this.scanner.index]; + if (ch === '{' || ch === '<') { + break; + } + ++this.scanner.index; + text += ch; + if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) { + ++this.scanner.lineNumber; + if (ch === '\r' && this.scanner.source[this.scanner.index] === '\n') { + ++this.scanner.index; + } + this.scanner.lineStart = this.scanner.index; + } + } + this.lastMarker.index = this.scanner.index; + this.lastMarker.line = this.scanner.lineNumber; + this.lastMarker.column = this.scanner.index - this.scanner.lineStart; + var token = { + type: 101 /* Text */, + value: text, + lineNumber: this.scanner.lineNumber, + lineStart: this.scanner.lineStart, + start: start, + end: this.scanner.index + }; + if ((text.length > 0) && this.config.tokens) { + this.tokens.push(this.convertToken(token)); + } + return token; + }; + JSXParser.prototype.peekJSXToken = function () { + var state = this.scanner.saveState(); + this.scanner.scanComments(); + var next = this.lexJSX(); + this.scanner.restoreState(state); + return next; + }; + // Expect the next JSX token to match the specified punctuator. + // If not, an exception will be thrown. + JSXParser.prototype.expectJSX = function (value) { + var token = this.nextJSXToken(); + if (token.type !== 7 /* Punctuator */ || token.value !== value) { + this.throwUnexpectedToken(token); + } + }; + // Return true if the next JSX token matches the specified punctuator. + JSXParser.prototype.matchJSX = function (value) { + var next = this.peekJSXToken(); + return next.type === 7 /* Punctuator */ && next.value === value; + }; + JSXParser.prototype.parseJSXIdentifier = function () { + var node = this.createJSXNode(); + var token = this.nextJSXToken(); + if (token.type !== 100 /* Identifier */) { + this.throwUnexpectedToken(token); + } + return this.finalize(node, new JSXNode.JSXIdentifier(token.value)); + }; + JSXParser.prototype.parseJSXElementName = function () { + var node = this.createJSXNode(); + var elementName = this.parseJSXIdentifier(); + if (this.matchJSX(':')) { + var namespace = elementName; + this.expectJSX(':'); + var name_1 = this.parseJSXIdentifier(); + elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1)); + } + else if (this.matchJSX('.')) { + while (this.matchJSX('.')) { + var object = elementName; + this.expectJSX('.'); + var property = this.parseJSXIdentifier(); + elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property)); + } + } + return elementName; + }; + JSXParser.prototype.parseJSXAttributeName = function () { + var node = this.createJSXNode(); + var attributeName; + var identifier = this.parseJSXIdentifier(); + if (this.matchJSX(':')) { + var namespace = identifier; + this.expectJSX(':'); + var name_2 = this.parseJSXIdentifier(); + attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2)); + } + else { + attributeName = identifier; + } + return attributeName; + }; + JSXParser.prototype.parseJSXStringLiteralAttribute = function () { + var node = this.createJSXNode(); + var token = this.nextJSXToken(); + if (token.type !== 8 /* StringLiteral */) { + this.throwUnexpectedToken(token); + } + var raw = this.getTokenRaw(token); + return this.finalize(node, new Node.Literal(token.value, raw)); + }; + JSXParser.prototype.parseJSXExpressionAttribute = function () { + var node = this.createJSXNode(); + this.expectJSX('{'); + this.finishJSX(); + if (this.match('}')) { + this.tolerateError('JSX attributes must only be assigned a non-empty expression'); + } + var expression = this.parseAssignmentExpression(); + this.reenterJSX(); + return this.finalize(node, new JSXNode.JSXExpressionContainer(expression)); + }; + JSXParser.prototype.parseJSXAttributeValue = function () { + return this.matchJSX('{') ? this.parseJSXExpressionAttribute() : + this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute(); + }; + JSXParser.prototype.parseJSXNameValueAttribute = function () { + var node = this.createJSXNode(); + var name = this.parseJSXAttributeName(); + var value = null; + if (this.matchJSX('=')) { + this.expectJSX('='); + value = this.parseJSXAttributeValue(); + } + return this.finalize(node, new JSXNode.JSXAttribute(name, value)); + }; + JSXParser.prototype.parseJSXSpreadAttribute = function () { + var node = this.createJSXNode(); + this.expectJSX('{'); + this.expectJSX('...'); + this.finishJSX(); + var argument = this.parseAssignmentExpression(); + this.reenterJSX(); + return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument)); + }; + JSXParser.prototype.parseJSXAttributes = function () { + var attributes = []; + while (!this.matchJSX('/') && !this.matchJSX('>')) { + var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() : + this.parseJSXNameValueAttribute(); + attributes.push(attribute); + } + return attributes; + }; + JSXParser.prototype.parseJSXOpeningElement = function () { + var node = this.createJSXNode(); + this.expectJSX('<'); + var name = this.parseJSXElementName(); + var attributes = this.parseJSXAttributes(); + var selfClosing = this.matchJSX('/'); + if (selfClosing) { + this.expectJSX('/'); + } + this.expectJSX('>'); + return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes)); + }; + JSXParser.prototype.parseJSXBoundaryElement = function () { + var node = this.createJSXNode(); + this.expectJSX('<'); + if (this.matchJSX('/')) { + this.expectJSX('/'); + var name_3 = this.parseJSXElementName(); + this.expectJSX('>'); + return this.finalize(node, new JSXNode.JSXClosingElement(name_3)); + } + var name = this.parseJSXElementName(); + var attributes = this.parseJSXAttributes(); + var selfClosing = this.matchJSX('/'); + if (selfClosing) { + this.expectJSX('/'); + } + this.expectJSX('>'); + return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes)); + }; + JSXParser.prototype.parseJSXEmptyExpression = function () { + var node = this.createJSXChildNode(); + this.collectComments(); + this.lastMarker.index = this.scanner.index; + this.lastMarker.line = this.scanner.lineNumber; + this.lastMarker.column = this.scanner.index - this.scanner.lineStart; + return this.finalize(node, new JSXNode.JSXEmptyExpression()); + }; + JSXParser.prototype.parseJSXExpressionContainer = function () { + var node = this.createJSXNode(); + this.expectJSX('{'); + var expression; + if (this.matchJSX('}')) { + expression = this.parseJSXEmptyExpression(); + this.expectJSX('}'); + } + else { + this.finishJSX(); + expression = this.parseAssignmentExpression(); + this.reenterJSX(); + } + return this.finalize(node, new JSXNode.JSXExpressionContainer(expression)); + }; + JSXParser.prototype.parseJSXChildren = function () { + var children = []; + while (!this.scanner.eof()) { + var node = this.createJSXChildNode(); + var token = this.nextJSXText(); + if (token.start < token.end) { + var raw = this.getTokenRaw(token); + var child = this.finalize(node, new JSXNode.JSXText(token.value, raw)); + children.push(child); + } + if (this.scanner.source[this.scanner.index] === '{') { + var container = this.parseJSXExpressionContainer(); + children.push(container); + } + else { + break; + } + } + return children; + }; + JSXParser.prototype.parseComplexJSXElement = function (el) { + var stack = []; + while (!this.scanner.eof()) { + el.children = el.children.concat(this.parseJSXChildren()); + var node = this.createJSXChildNode(); + var element = this.parseJSXBoundaryElement(); + if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) { + var opening = element; + if (opening.selfClosing) { + var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null)); + el.children.push(child); + } + else { + stack.push(el); + el = { node: node, opening: opening, closing: null, children: [] }; + } + } + if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) { + el.closing = element; + var open_1 = getQualifiedElementName(el.opening.name); + var close_1 = getQualifiedElementName(el.closing.name); + if (open_1 !== close_1) { + this.tolerateError('Expected corresponding JSX closing tag for %0', open_1); + } + if (stack.length > 0) { + var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing)); + el = stack[stack.length - 1]; + el.children.push(child); + stack.pop(); + } + else { + break; + } + } + } + return el; + }; + JSXParser.prototype.parseJSXElement = function () { + var node = this.createJSXNode(); + var opening = this.parseJSXOpeningElement(); + var children = []; + var closing = null; + if (!opening.selfClosing) { + var el = this.parseComplexJSXElement({ node: node, opening: opening, closing: closing, children: children }); + children = el.children; + closing = el.closing; + } + return this.finalize(node, new JSXNode.JSXElement(opening, children, closing)); + }; + JSXParser.prototype.parseJSXRoot = function () { + // Pop the opening '<' added from the lookahead. + if (this.config.tokens) { + this.tokens.pop(); + } + this.startJSX(); + var element = this.parseJSXElement(); + this.finishJSX(); + return element; + }; + JSXParser.prototype.isStartOfExpression = function () { + return _super.prototype.isStartOfExpression.call(this) || this.match('<'); + }; + return JSXParser; + }(parser_1.Parser)); + exports.JSXParser = JSXParser; + + +/***/ }, +/* 4 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + // See also tools/generate-unicode-regex.js. + var Regex = { + // Unicode v8.0.0 NonAsciiIdentifierStart: + NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/, + // Unicode v8.0.0 NonAsciiIdentifierPart: + NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ + }; + exports.Character = { + /* tslint:disable:no-bitwise */ + fromCodePoint: function (cp) { + return (cp < 0x10000) ? String.fromCharCode(cp) : + String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) + + String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023)); + }, + // https://tc39.github.io/ecma262/#sec-white-space + isWhiteSpace: function (cp) { + return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) || + (cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0); + }, + // https://tc39.github.io/ecma262/#sec-line-terminators + isLineTerminator: function (cp) { + return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029); + }, + // https://tc39.github.io/ecma262/#sec-names-and-keywords + isIdentifierStart: function (cp) { + return (cp === 0x24) || (cp === 0x5F) || + (cp >= 0x41 && cp <= 0x5A) || + (cp >= 0x61 && cp <= 0x7A) || + (cp === 0x5C) || + ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp))); + }, + isIdentifierPart: function (cp) { + return (cp === 0x24) || (cp === 0x5F) || + (cp >= 0x41 && cp <= 0x5A) || + (cp >= 0x61 && cp <= 0x7A) || + (cp >= 0x30 && cp <= 0x39) || + (cp === 0x5C) || + ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp))); + }, + // https://tc39.github.io/ecma262/#sec-literals-numeric-literals + isDecimalDigit: function (cp) { + return (cp >= 0x30 && cp <= 0x39); // 0..9 + }, + isHexDigit: function (cp) { + return (cp >= 0x30 && cp <= 0x39) || + (cp >= 0x41 && cp <= 0x46) || + (cp >= 0x61 && cp <= 0x66); // a..f + }, + isOctalDigit: function (cp) { + return (cp >= 0x30 && cp <= 0x37); // 0..7 + } + }; + + +/***/ }, +/* 5 */ +/***/ function(module, exports, __nested_webpack_require_54354__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var jsx_syntax_1 = __nested_webpack_require_54354__(6); + /* tslint:disable:max-classes-per-file */ + var JSXClosingElement = (function () { + function JSXClosingElement(name) { + this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement; + this.name = name; + } + return JSXClosingElement; + }()); + exports.JSXClosingElement = JSXClosingElement; + var JSXElement = (function () { + function JSXElement(openingElement, children, closingElement) { + this.type = jsx_syntax_1.JSXSyntax.JSXElement; + this.openingElement = openingElement; + this.children = children; + this.closingElement = closingElement; + } + return JSXElement; + }()); + exports.JSXElement = JSXElement; + var JSXEmptyExpression = (function () { + function JSXEmptyExpression() { + this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression; + } + return JSXEmptyExpression; + }()); + exports.JSXEmptyExpression = JSXEmptyExpression; + var JSXExpressionContainer = (function () { + function JSXExpressionContainer(expression) { + this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer; + this.expression = expression; + } + return JSXExpressionContainer; + }()); + exports.JSXExpressionContainer = JSXExpressionContainer; + var JSXIdentifier = (function () { + function JSXIdentifier(name) { + this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier; + this.name = name; + } + return JSXIdentifier; + }()); + exports.JSXIdentifier = JSXIdentifier; + var JSXMemberExpression = (function () { + function JSXMemberExpression(object, property) { + this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression; + this.object = object; + this.property = property; + } + return JSXMemberExpression; + }()); + exports.JSXMemberExpression = JSXMemberExpression; + var JSXAttribute = (function () { + function JSXAttribute(name, value) { + this.type = jsx_syntax_1.JSXSyntax.JSXAttribute; + this.name = name; + this.value = value; + } + return JSXAttribute; + }()); + exports.JSXAttribute = JSXAttribute; + var JSXNamespacedName = (function () { + function JSXNamespacedName(namespace, name) { + this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName; + this.namespace = namespace; + this.name = name; + } + return JSXNamespacedName; + }()); + exports.JSXNamespacedName = JSXNamespacedName; + var JSXOpeningElement = (function () { + function JSXOpeningElement(name, selfClosing, attributes) { + this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement; + this.name = name; + this.selfClosing = selfClosing; + this.attributes = attributes; + } + return JSXOpeningElement; + }()); + exports.JSXOpeningElement = JSXOpeningElement; + var JSXSpreadAttribute = (function () { + function JSXSpreadAttribute(argument) { + this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute; + this.argument = argument; + } + return JSXSpreadAttribute; + }()); + exports.JSXSpreadAttribute = JSXSpreadAttribute; + var JSXText = (function () { + function JSXText(value, raw) { + this.type = jsx_syntax_1.JSXSyntax.JSXText; + this.value = value; + this.raw = raw; + } + return JSXText; + }()); + exports.JSXText = JSXText; + + +/***/ }, +/* 6 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.JSXSyntax = { + JSXAttribute: 'JSXAttribute', + JSXClosingElement: 'JSXClosingElement', + JSXElement: 'JSXElement', + JSXEmptyExpression: 'JSXEmptyExpression', + JSXExpressionContainer: 'JSXExpressionContainer', + JSXIdentifier: 'JSXIdentifier', + JSXMemberExpression: 'JSXMemberExpression', + JSXNamespacedName: 'JSXNamespacedName', + JSXOpeningElement: 'JSXOpeningElement', + JSXSpreadAttribute: 'JSXSpreadAttribute', + JSXText: 'JSXText' + }; + + +/***/ }, +/* 7 */ +/***/ function(module, exports, __nested_webpack_require_58416__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var syntax_1 = __nested_webpack_require_58416__(2); + /* tslint:disable:max-classes-per-file */ + var ArrayExpression = (function () { + function ArrayExpression(elements) { + this.type = syntax_1.Syntax.ArrayExpression; + this.elements = elements; + } + return ArrayExpression; + }()); + exports.ArrayExpression = ArrayExpression; + var ArrayPattern = (function () { + function ArrayPattern(elements) { + this.type = syntax_1.Syntax.ArrayPattern; + this.elements = elements; + } + return ArrayPattern; + }()); + exports.ArrayPattern = ArrayPattern; + var ArrowFunctionExpression = (function () { + function ArrowFunctionExpression(params, body, expression) { + this.type = syntax_1.Syntax.ArrowFunctionExpression; + this.id = null; + this.params = params; + this.body = body; + this.generator = false; + this.expression = expression; + this.async = false; + } + return ArrowFunctionExpression; + }()); + exports.ArrowFunctionExpression = ArrowFunctionExpression; + var AssignmentExpression = (function () { + function AssignmentExpression(operator, left, right) { + this.type = syntax_1.Syntax.AssignmentExpression; + this.operator = operator; + this.left = left; + this.right = right; + } + return AssignmentExpression; + }()); + exports.AssignmentExpression = AssignmentExpression; + var AssignmentPattern = (function () { + function AssignmentPattern(left, right) { + this.type = syntax_1.Syntax.AssignmentPattern; + this.left = left; + this.right = right; + } + return AssignmentPattern; + }()); + exports.AssignmentPattern = AssignmentPattern; + var AsyncArrowFunctionExpression = (function () { + function AsyncArrowFunctionExpression(params, body, expression) { + this.type = syntax_1.Syntax.ArrowFunctionExpression; + this.id = null; + this.params = params; + this.body = body; + this.generator = false; + this.expression = expression; + this.async = true; + } + return AsyncArrowFunctionExpression; + }()); + exports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression; + var AsyncFunctionDeclaration = (function () { + function AsyncFunctionDeclaration(id, params, body) { + this.type = syntax_1.Syntax.FunctionDeclaration; + this.id = id; + this.params = params; + this.body = body; + this.generator = false; + this.expression = false; + this.async = true; + } + return AsyncFunctionDeclaration; + }()); + exports.AsyncFunctionDeclaration = AsyncFunctionDeclaration; + var AsyncFunctionExpression = (function () { + function AsyncFunctionExpression(id, params, body) { + this.type = syntax_1.Syntax.FunctionExpression; + this.id = id; + this.params = params; + this.body = body; + this.generator = false; + this.expression = false; + this.async = true; + } + return AsyncFunctionExpression; + }()); + exports.AsyncFunctionExpression = AsyncFunctionExpression; + var AwaitExpression = (function () { + function AwaitExpression(argument) { + this.type = syntax_1.Syntax.AwaitExpression; + this.argument = argument; + } + return AwaitExpression; + }()); + exports.AwaitExpression = AwaitExpression; + var BinaryExpression = (function () { + function BinaryExpression(operator, left, right) { + var logical = (operator === '||' || operator === '&&'); + this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression; + this.operator = operator; + this.left = left; + this.right = right; + } + return BinaryExpression; + }()); + exports.BinaryExpression = BinaryExpression; + var BlockStatement = (function () { + function BlockStatement(body) { + this.type = syntax_1.Syntax.BlockStatement; + this.body = body; + } + return BlockStatement; + }()); + exports.BlockStatement = BlockStatement; + var BreakStatement = (function () { + function BreakStatement(label) { + this.type = syntax_1.Syntax.BreakStatement; + this.label = label; + } + return BreakStatement; + }()); + exports.BreakStatement = BreakStatement; + var CallExpression = (function () { + function CallExpression(callee, args) { + this.type = syntax_1.Syntax.CallExpression; + this.callee = callee; + this.arguments = args; + } + return CallExpression; + }()); + exports.CallExpression = CallExpression; + var CatchClause = (function () { + function CatchClause(param, body) { + this.type = syntax_1.Syntax.CatchClause; + this.param = param; + this.body = body; + } + return CatchClause; + }()); + exports.CatchClause = CatchClause; + var ClassBody = (function () { + function ClassBody(body) { + this.type = syntax_1.Syntax.ClassBody; + this.body = body; + } + return ClassBody; + }()); + exports.ClassBody = ClassBody; + var ClassDeclaration = (function () { + function ClassDeclaration(id, superClass, body) { + this.type = syntax_1.Syntax.ClassDeclaration; + this.id = id; + this.superClass = superClass; + this.body = body; + } + return ClassDeclaration; + }()); + exports.ClassDeclaration = ClassDeclaration; + var ClassExpression = (function () { + function ClassExpression(id, superClass, body) { + this.type = syntax_1.Syntax.ClassExpression; + this.id = id; + this.superClass = superClass; + this.body = body; + } + return ClassExpression; + }()); + exports.ClassExpression = ClassExpression; + var ComputedMemberExpression = (function () { + function ComputedMemberExpression(object, property) { + this.type = syntax_1.Syntax.MemberExpression; + this.computed = true; + this.object = object; + this.property = property; + } + return ComputedMemberExpression; + }()); + exports.ComputedMemberExpression = ComputedMemberExpression; + var ConditionalExpression = (function () { + function ConditionalExpression(test, consequent, alternate) { + this.type = syntax_1.Syntax.ConditionalExpression; + this.test = test; + this.consequent = consequent; + this.alternate = alternate; + } + return ConditionalExpression; + }()); + exports.ConditionalExpression = ConditionalExpression; + var ContinueStatement = (function () { + function ContinueStatement(label) { + this.type = syntax_1.Syntax.ContinueStatement; + this.label = label; + } + return ContinueStatement; + }()); + exports.ContinueStatement = ContinueStatement; + var DebuggerStatement = (function () { + function DebuggerStatement() { + this.type = syntax_1.Syntax.DebuggerStatement; + } + return DebuggerStatement; + }()); + exports.DebuggerStatement = DebuggerStatement; + var Directive = (function () { + function Directive(expression, directive) { + this.type = syntax_1.Syntax.ExpressionStatement; + this.expression = expression; + this.directive = directive; + } + return Directive; + }()); + exports.Directive = Directive; + var DoWhileStatement = (function () { + function DoWhileStatement(body, test) { + this.type = syntax_1.Syntax.DoWhileStatement; + this.body = body; + this.test = test; + } + return DoWhileStatement; + }()); + exports.DoWhileStatement = DoWhileStatement; + var EmptyStatement = (function () { + function EmptyStatement() { + this.type = syntax_1.Syntax.EmptyStatement; + } + return EmptyStatement; + }()); + exports.EmptyStatement = EmptyStatement; + var ExportAllDeclaration = (function () { + function ExportAllDeclaration(source) { + this.type = syntax_1.Syntax.ExportAllDeclaration; + this.source = source; + } + return ExportAllDeclaration; + }()); + exports.ExportAllDeclaration = ExportAllDeclaration; + var ExportDefaultDeclaration = (function () { + function ExportDefaultDeclaration(declaration) { + this.type = syntax_1.Syntax.ExportDefaultDeclaration; + this.declaration = declaration; + } + return ExportDefaultDeclaration; + }()); + exports.ExportDefaultDeclaration = ExportDefaultDeclaration; + var ExportNamedDeclaration = (function () { + function ExportNamedDeclaration(declaration, specifiers, source) { + this.type = syntax_1.Syntax.ExportNamedDeclaration; + this.declaration = declaration; + this.specifiers = specifiers; + this.source = source; + } + return ExportNamedDeclaration; + }()); + exports.ExportNamedDeclaration = ExportNamedDeclaration; + var ExportSpecifier = (function () { + function ExportSpecifier(local, exported) { + this.type = syntax_1.Syntax.ExportSpecifier; + this.exported = exported; + this.local = local; + } + return ExportSpecifier; + }()); + exports.ExportSpecifier = ExportSpecifier; + var ExpressionStatement = (function () { + function ExpressionStatement(expression) { + this.type = syntax_1.Syntax.ExpressionStatement; + this.expression = expression; + } + return ExpressionStatement; + }()); + exports.ExpressionStatement = ExpressionStatement; + var ForInStatement = (function () { + function ForInStatement(left, right, body) { + this.type = syntax_1.Syntax.ForInStatement; + this.left = left; + this.right = right; + this.body = body; + this.each = false; + } + return ForInStatement; + }()); + exports.ForInStatement = ForInStatement; + var ForOfStatement = (function () { + function ForOfStatement(left, right, body) { + this.type = syntax_1.Syntax.ForOfStatement; + this.left = left; + this.right = right; + this.body = body; + } + return ForOfStatement; + }()); + exports.ForOfStatement = ForOfStatement; + var ForStatement = (function () { + function ForStatement(init, test, update, body) { + this.type = syntax_1.Syntax.ForStatement; + this.init = init; + this.test = test; + this.update = update; + this.body = body; + } + return ForStatement; + }()); + exports.ForStatement = ForStatement; + var FunctionDeclaration = (function () { + function FunctionDeclaration(id, params, body, generator) { + this.type = syntax_1.Syntax.FunctionDeclaration; + this.id = id; + this.params = params; + this.body = body; + this.generator = generator; + this.expression = false; + this.async = false; + } + return FunctionDeclaration; + }()); + exports.FunctionDeclaration = FunctionDeclaration; + var FunctionExpression = (function () { + function FunctionExpression(id, params, body, generator) { + this.type = syntax_1.Syntax.FunctionExpression; + this.id = id; + this.params = params; + this.body = body; + this.generator = generator; + this.expression = false; + this.async = false; + } + return FunctionExpression; + }()); + exports.FunctionExpression = FunctionExpression; + var Identifier = (function () { + function Identifier(name) { + this.type = syntax_1.Syntax.Identifier; + this.name = name; + } + return Identifier; + }()); + exports.Identifier = Identifier; + var IfStatement = (function () { + function IfStatement(test, consequent, alternate) { + this.type = syntax_1.Syntax.IfStatement; + this.test = test; + this.consequent = consequent; + this.alternate = alternate; + } + return IfStatement; + }()); + exports.IfStatement = IfStatement; + var ImportDeclaration = (function () { + function ImportDeclaration(specifiers, source) { + this.type = syntax_1.Syntax.ImportDeclaration; + this.specifiers = specifiers; + this.source = source; + } + return ImportDeclaration; + }()); + exports.ImportDeclaration = ImportDeclaration; + var ImportDefaultSpecifier = (function () { + function ImportDefaultSpecifier(local) { + this.type = syntax_1.Syntax.ImportDefaultSpecifier; + this.local = local; + } + return ImportDefaultSpecifier; + }()); + exports.ImportDefaultSpecifier = ImportDefaultSpecifier; + var ImportNamespaceSpecifier = (function () { + function ImportNamespaceSpecifier(local) { + this.type = syntax_1.Syntax.ImportNamespaceSpecifier; + this.local = local; + } + return ImportNamespaceSpecifier; + }()); + exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier; + var ImportSpecifier = (function () { + function ImportSpecifier(local, imported) { + this.type = syntax_1.Syntax.ImportSpecifier; + this.local = local; + this.imported = imported; + } + return ImportSpecifier; + }()); + exports.ImportSpecifier = ImportSpecifier; + var LabeledStatement = (function () { + function LabeledStatement(label, body) { + this.type = syntax_1.Syntax.LabeledStatement; + this.label = label; + this.body = body; + } + return LabeledStatement; + }()); + exports.LabeledStatement = LabeledStatement; + var Literal = (function () { + function Literal(value, raw) { + this.type = syntax_1.Syntax.Literal; + this.value = value; + this.raw = raw; + } + return Literal; + }()); + exports.Literal = Literal; + var MetaProperty = (function () { + function MetaProperty(meta, property) { + this.type = syntax_1.Syntax.MetaProperty; + this.meta = meta; + this.property = property; + } + return MetaProperty; + }()); + exports.MetaProperty = MetaProperty; + var MethodDefinition = (function () { + function MethodDefinition(key, computed, value, kind, isStatic) { + this.type = syntax_1.Syntax.MethodDefinition; + this.key = key; + this.computed = computed; + this.value = value; + this.kind = kind; + this.static = isStatic; + } + return MethodDefinition; + }()); + exports.MethodDefinition = MethodDefinition; + var Module = (function () { + function Module(body) { + this.type = syntax_1.Syntax.Program; + this.body = body; + this.sourceType = 'module'; + } + return Module; + }()); + exports.Module = Module; + var NewExpression = (function () { + function NewExpression(callee, args) { + this.type = syntax_1.Syntax.NewExpression; + this.callee = callee; + this.arguments = args; + } + return NewExpression; + }()); + exports.NewExpression = NewExpression; + var ObjectExpression = (function () { + function ObjectExpression(properties) { + this.type = syntax_1.Syntax.ObjectExpression; + this.properties = properties; + } + return ObjectExpression; + }()); + exports.ObjectExpression = ObjectExpression; + var ObjectPattern = (function () { + function ObjectPattern(properties) { + this.type = syntax_1.Syntax.ObjectPattern; + this.properties = properties; + } + return ObjectPattern; + }()); + exports.ObjectPattern = ObjectPattern; + var Property = (function () { + function Property(kind, key, computed, value, method, shorthand) { + this.type = syntax_1.Syntax.Property; + this.key = key; + this.computed = computed; + this.value = value; + this.kind = kind; + this.method = method; + this.shorthand = shorthand; + } + return Property; + }()); + exports.Property = Property; + var RegexLiteral = (function () { + function RegexLiteral(value, raw, pattern, flags) { + this.type = syntax_1.Syntax.Literal; + this.value = value; + this.raw = raw; + this.regex = { pattern: pattern, flags: flags }; + } + return RegexLiteral; + }()); + exports.RegexLiteral = RegexLiteral; + var RestElement = (function () { + function RestElement(argument) { + this.type = syntax_1.Syntax.RestElement; + this.argument = argument; + } + return RestElement; + }()); + exports.RestElement = RestElement; + var ReturnStatement = (function () { + function ReturnStatement(argument) { + this.type = syntax_1.Syntax.ReturnStatement; + this.argument = argument; + } + return ReturnStatement; + }()); + exports.ReturnStatement = ReturnStatement; + var Script = (function () { + function Script(body) { + this.type = syntax_1.Syntax.Program; + this.body = body; + this.sourceType = 'script'; + } + return Script; + }()); + exports.Script = Script; + var SequenceExpression = (function () { + function SequenceExpression(expressions) { + this.type = syntax_1.Syntax.SequenceExpression; + this.expressions = expressions; + } + return SequenceExpression; + }()); + exports.SequenceExpression = SequenceExpression; + var SpreadElement = (function () { + function SpreadElement(argument) { + this.type = syntax_1.Syntax.SpreadElement; + this.argument = argument; + } + return SpreadElement; + }()); + exports.SpreadElement = SpreadElement; + var StaticMemberExpression = (function () { + function StaticMemberExpression(object, property) { + this.type = syntax_1.Syntax.MemberExpression; + this.computed = false; + this.object = object; + this.property = property; + } + return StaticMemberExpression; + }()); + exports.StaticMemberExpression = StaticMemberExpression; + var Super = (function () { + function Super() { + this.type = syntax_1.Syntax.Super; + } + return Super; + }()); + exports.Super = Super; + var SwitchCase = (function () { + function SwitchCase(test, consequent) { + this.type = syntax_1.Syntax.SwitchCase; + this.test = test; + this.consequent = consequent; + } + return SwitchCase; + }()); + exports.SwitchCase = SwitchCase; + var SwitchStatement = (function () { + function SwitchStatement(discriminant, cases) { + this.type = syntax_1.Syntax.SwitchStatement; + this.discriminant = discriminant; + this.cases = cases; + } + return SwitchStatement; + }()); + exports.SwitchStatement = SwitchStatement; + var TaggedTemplateExpression = (function () { + function TaggedTemplateExpression(tag, quasi) { + this.type = syntax_1.Syntax.TaggedTemplateExpression; + this.tag = tag; + this.quasi = quasi; + } + return TaggedTemplateExpression; + }()); + exports.TaggedTemplateExpression = TaggedTemplateExpression; + var TemplateElement = (function () { + function TemplateElement(value, tail) { + this.type = syntax_1.Syntax.TemplateElement; + this.value = value; + this.tail = tail; + } + return TemplateElement; + }()); + exports.TemplateElement = TemplateElement; + var TemplateLiteral = (function () { + function TemplateLiteral(quasis, expressions) { + this.type = syntax_1.Syntax.TemplateLiteral; + this.quasis = quasis; + this.expressions = expressions; + } + return TemplateLiteral; + }()); + exports.TemplateLiteral = TemplateLiteral; + var ThisExpression = (function () { + function ThisExpression() { + this.type = syntax_1.Syntax.ThisExpression; + } + return ThisExpression; + }()); + exports.ThisExpression = ThisExpression; + var ThrowStatement = (function () { + function ThrowStatement(argument) { + this.type = syntax_1.Syntax.ThrowStatement; + this.argument = argument; + } + return ThrowStatement; + }()); + exports.ThrowStatement = ThrowStatement; + var TryStatement = (function () { + function TryStatement(block, handler, finalizer) { + this.type = syntax_1.Syntax.TryStatement; + this.block = block; + this.handler = handler; + this.finalizer = finalizer; + } + return TryStatement; + }()); + exports.TryStatement = TryStatement; + var UnaryExpression = (function () { + function UnaryExpression(operator, argument) { + this.type = syntax_1.Syntax.UnaryExpression; + this.operator = operator; + this.argument = argument; + this.prefix = true; + } + return UnaryExpression; + }()); + exports.UnaryExpression = UnaryExpression; + var UpdateExpression = (function () { + function UpdateExpression(operator, argument, prefix) { + this.type = syntax_1.Syntax.UpdateExpression; + this.operator = operator; + this.argument = argument; + this.prefix = prefix; + } + return UpdateExpression; + }()); + exports.UpdateExpression = UpdateExpression; + var VariableDeclaration = (function () { + function VariableDeclaration(declarations, kind) { + this.type = syntax_1.Syntax.VariableDeclaration; + this.declarations = declarations; + this.kind = kind; + } + return VariableDeclaration; + }()); + exports.VariableDeclaration = VariableDeclaration; + var VariableDeclarator = (function () { + function VariableDeclarator(id, init) { + this.type = syntax_1.Syntax.VariableDeclarator; + this.id = id; + this.init = init; + } + return VariableDeclarator; + }()); + exports.VariableDeclarator = VariableDeclarator; + var WhileStatement = (function () { + function WhileStatement(test, body) { + this.type = syntax_1.Syntax.WhileStatement; + this.test = test; + this.body = body; + } + return WhileStatement; + }()); + exports.WhileStatement = WhileStatement; + var WithStatement = (function () { + function WithStatement(object, body) { + this.type = syntax_1.Syntax.WithStatement; + this.object = object; + this.body = body; + } + return WithStatement; + }()); + exports.WithStatement = WithStatement; + var YieldExpression = (function () { + function YieldExpression(argument, delegate) { + this.type = syntax_1.Syntax.YieldExpression; + this.argument = argument; + this.delegate = delegate; + } + return YieldExpression; + }()); + exports.YieldExpression = YieldExpression; + + +/***/ }, +/* 8 */ +/***/ function(module, exports, __nested_webpack_require_80491__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var assert_1 = __nested_webpack_require_80491__(9); + var error_handler_1 = __nested_webpack_require_80491__(10); + var messages_1 = __nested_webpack_require_80491__(11); + var Node = __nested_webpack_require_80491__(7); + var scanner_1 = __nested_webpack_require_80491__(12); + var syntax_1 = __nested_webpack_require_80491__(2); + var token_1 = __nested_webpack_require_80491__(13); + var ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder'; + var Parser = (function () { + function Parser(code, options, delegate) { + if (options === void 0) { options = {}; } + this.config = { + range: (typeof options.range === 'boolean') && options.range, + loc: (typeof options.loc === 'boolean') && options.loc, + source: null, + tokens: (typeof options.tokens === 'boolean') && options.tokens, + comment: (typeof options.comment === 'boolean') && options.comment, + tolerant: (typeof options.tolerant === 'boolean') && options.tolerant + }; + if (this.config.loc && options.source && options.source !== null) { + this.config.source = String(options.source); + } + this.delegate = delegate; + this.errorHandler = new error_handler_1.ErrorHandler(); + this.errorHandler.tolerant = this.config.tolerant; + this.scanner = new scanner_1.Scanner(code, this.errorHandler); + this.scanner.trackComment = this.config.comment; + this.operatorPrecedence = { + ')': 0, + ';': 0, + ',': 0, + '=': 0, + ']': 0, + '||': 1, + '&&': 2, + '|': 3, + '^': 4, + '&': 5, + '==': 6, + '!=': 6, + '===': 6, + '!==': 6, + '<': 7, + '>': 7, + '<=': 7, + '>=': 7, + '<<': 8, + '>>': 8, + '>>>': 8, + '+': 9, + '-': 9, + '*': 11, + '/': 11, + '%': 11 + }; + this.lookahead = { + type: 2 /* EOF */, + value: '', + lineNumber: this.scanner.lineNumber, + lineStart: 0, + start: 0, + end: 0 + }; + this.hasLineTerminator = false; + this.context = { + isModule: false, + await: false, + allowIn: true, + allowStrictDirective: true, + allowYield: true, + firstCoverInitializedNameError: null, + isAssignmentTarget: false, + isBindingElement: false, + inFunctionBody: false, + inIteration: false, + inSwitch: false, + labelSet: {}, + strict: false + }; + this.tokens = []; + this.startMarker = { + index: 0, + line: this.scanner.lineNumber, + column: 0 + }; + this.lastMarker = { + index: 0, + line: this.scanner.lineNumber, + column: 0 + }; + this.nextToken(); + this.lastMarker = { + index: this.scanner.index, + line: this.scanner.lineNumber, + column: this.scanner.index - this.scanner.lineStart + }; + } + Parser.prototype.throwError = function (messageFormat) { + var values = []; + for (var _i = 1; _i < arguments.length; _i++) { + values[_i - 1] = arguments[_i]; + } + var args = Array.prototype.slice.call(arguments, 1); + var msg = messageFormat.replace(/%(\d)/g, function (whole, idx) { + assert_1.assert(idx < args.length, 'Message reference must be in range'); + return args[idx]; + }); + var index = this.lastMarker.index; + var line = this.lastMarker.line; + var column = this.lastMarker.column + 1; + throw this.errorHandler.createError(index, line, column, msg); + }; + Parser.prototype.tolerateError = function (messageFormat) { + var values = []; + for (var _i = 1; _i < arguments.length; _i++) { + values[_i - 1] = arguments[_i]; + } + var args = Array.prototype.slice.call(arguments, 1); + var msg = messageFormat.replace(/%(\d)/g, function (whole, idx) { + assert_1.assert(idx < args.length, 'Message reference must be in range'); + return args[idx]; + }); + var index = this.lastMarker.index; + var line = this.scanner.lineNumber; + var column = this.lastMarker.column + 1; + this.errorHandler.tolerateError(index, line, column, msg); + }; + // Throw an exception because of the token. + Parser.prototype.unexpectedTokenError = function (token, message) { + var msg = message || messages_1.Messages.UnexpectedToken; + var value; + if (token) { + if (!message) { + msg = (token.type === 2 /* EOF */) ? messages_1.Messages.UnexpectedEOS : + (token.type === 3 /* Identifier */) ? messages_1.Messages.UnexpectedIdentifier : + (token.type === 6 /* NumericLiteral */) ? messages_1.Messages.UnexpectedNumber : + (token.type === 8 /* StringLiteral */) ? messages_1.Messages.UnexpectedString : + (token.type === 10 /* Template */) ? messages_1.Messages.UnexpectedTemplate : + messages_1.Messages.UnexpectedToken; + if (token.type === 4 /* Keyword */) { + if (this.scanner.isFutureReservedWord(token.value)) { + msg = messages_1.Messages.UnexpectedReserved; + } + else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) { + msg = messages_1.Messages.StrictReservedWord; + } + } + } + value = token.value; + } + else { + value = 'ILLEGAL'; + } + msg = msg.replace('%0', value); + if (token && typeof token.lineNumber === 'number') { + var index = token.start; + var line = token.lineNumber; + var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column; + var column = token.start - lastMarkerLineStart + 1; + return this.errorHandler.createError(index, line, column, msg); + } + else { + var index = this.lastMarker.index; + var line = this.lastMarker.line; + var column = this.lastMarker.column + 1; + return this.errorHandler.createError(index, line, column, msg); + } + }; + Parser.prototype.throwUnexpectedToken = function (token, message) { + throw this.unexpectedTokenError(token, message); + }; + Parser.prototype.tolerateUnexpectedToken = function (token, message) { + this.errorHandler.tolerate(this.unexpectedTokenError(token, message)); + }; + Parser.prototype.collectComments = function () { + if (!this.config.comment) { + this.scanner.scanComments(); + } + else { + var comments = this.scanner.scanComments(); + if (comments.length > 0 && this.delegate) { + for (var i = 0; i < comments.length; ++i) { + var e = comments[i]; + var node = void 0; + node = { + type: e.multiLine ? 'BlockComment' : 'LineComment', + value: this.scanner.source.slice(e.slice[0], e.slice[1]) + }; + if (this.config.range) { + node.range = e.range; + } + if (this.config.loc) { + node.loc = e.loc; + } + var metadata = { + start: { + line: e.loc.start.line, + column: e.loc.start.column, + offset: e.range[0] + }, + end: { + line: e.loc.end.line, + column: e.loc.end.column, + offset: e.range[1] + } + }; + this.delegate(node, metadata); + } + } + } + }; + // From internal representation to an external structure + Parser.prototype.getTokenRaw = function (token) { + return this.scanner.source.slice(token.start, token.end); + }; + Parser.prototype.convertToken = function (token) { + var t = { + type: token_1.TokenName[token.type], + value: this.getTokenRaw(token) + }; + if (this.config.range) { + t.range = [token.start, token.end]; + } + if (this.config.loc) { + t.loc = { + start: { + line: this.startMarker.line, + column: this.startMarker.column + }, + end: { + line: this.scanner.lineNumber, + column: this.scanner.index - this.scanner.lineStart + } + }; + } + if (token.type === 9 /* RegularExpression */) { + var pattern = token.pattern; + var flags = token.flags; + t.regex = { pattern: pattern, flags: flags }; + } + return t; + }; + Parser.prototype.nextToken = function () { + var token = this.lookahead; + this.lastMarker.index = this.scanner.index; + this.lastMarker.line = this.scanner.lineNumber; + this.lastMarker.column = this.scanner.index - this.scanner.lineStart; + this.collectComments(); + if (this.scanner.index !== this.startMarker.index) { + this.startMarker.index = this.scanner.index; + this.startMarker.line = this.scanner.lineNumber; + this.startMarker.column = this.scanner.index - this.scanner.lineStart; + } + var next = this.scanner.lex(); + this.hasLineTerminator = (token.lineNumber !== next.lineNumber); + if (next && this.context.strict && next.type === 3 /* Identifier */) { + if (this.scanner.isStrictModeReservedWord(next.value)) { + next.type = 4 /* Keyword */; + } + } + this.lookahead = next; + if (this.config.tokens && next.type !== 2 /* EOF */) { + this.tokens.push(this.convertToken(next)); + } + return token; + }; + Parser.prototype.nextRegexToken = function () { + this.collectComments(); + var token = this.scanner.scanRegExp(); + if (this.config.tokens) { + // Pop the previous token, '/' or '/=' + // This is added from the lookahead token. + this.tokens.pop(); + this.tokens.push(this.convertToken(token)); + } + // Prime the next lookahead. + this.lookahead = token; + this.nextToken(); + return token; + }; + Parser.prototype.createNode = function () { + return { + index: this.startMarker.index, + line: this.startMarker.line, + column: this.startMarker.column + }; + }; + Parser.prototype.startNode = function (token, lastLineStart) { + if (lastLineStart === void 0) { lastLineStart = 0; } + var column = token.start - token.lineStart; + var line = token.lineNumber; + if (column < 0) { + column += lastLineStart; + line--; + } + return { + index: token.start, + line: line, + column: column + }; + }; + Parser.prototype.finalize = function (marker, node) { + if (this.config.range) { + node.range = [marker.index, this.lastMarker.index]; + } + if (this.config.loc) { + node.loc = { + start: { + line: marker.line, + column: marker.column, + }, + end: { + line: this.lastMarker.line, + column: this.lastMarker.column + } + }; + if (this.config.source) { + node.loc.source = this.config.source; + } + } + if (this.delegate) { + var metadata = { + start: { + line: marker.line, + column: marker.column, + offset: marker.index + }, + end: { + line: this.lastMarker.line, + column: this.lastMarker.column, + offset: this.lastMarker.index + } + }; + this.delegate(node, metadata); + } + return node; + }; + // Expect the next token to match the specified punctuator. + // If not, an exception will be thrown. + Parser.prototype.expect = function (value) { + var token = this.nextToken(); + if (token.type !== 7 /* Punctuator */ || token.value !== value) { + this.throwUnexpectedToken(token); + } + }; + // Quietly expect a comma when in tolerant mode, otherwise delegates to expect(). + Parser.prototype.expectCommaSeparator = function () { + if (this.config.tolerant) { + var token = this.lookahead; + if (token.type === 7 /* Punctuator */ && token.value === ',') { + this.nextToken(); + } + else if (token.type === 7 /* Punctuator */ && token.value === ';') { + this.nextToken(); + this.tolerateUnexpectedToken(token); + } + else { + this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken); + } + } + else { + this.expect(','); + } + }; + // Expect the next token to match the specified keyword. + // If not, an exception will be thrown. + Parser.prototype.expectKeyword = function (keyword) { + var token = this.nextToken(); + if (token.type !== 4 /* Keyword */ || token.value !== keyword) { + this.throwUnexpectedToken(token); + } + }; + // Return true if the next token matches the specified punctuator. + Parser.prototype.match = function (value) { + return this.lookahead.type === 7 /* Punctuator */ && this.lookahead.value === value; + }; + // Return true if the next token matches the specified keyword + Parser.prototype.matchKeyword = function (keyword) { + return this.lookahead.type === 4 /* Keyword */ && this.lookahead.value === keyword; + }; + // Return true if the next token matches the specified contextual keyword + // (where an identifier is sometimes a keyword depending on the context) + Parser.prototype.matchContextualKeyword = function (keyword) { + return this.lookahead.type === 3 /* Identifier */ && this.lookahead.value === keyword; + }; + // Return true if the next token is an assignment operator + Parser.prototype.matchAssign = function () { + if (this.lookahead.type !== 7 /* Punctuator */) { + return false; + } + var op = this.lookahead.value; + return op === '=' || + op === '*=' || + op === '**=' || + op === '/=' || + op === '%=' || + op === '+=' || + op === '-=' || + op === '<<=' || + op === '>>=' || + op === '>>>=' || + op === '&=' || + op === '^=' || + op === '|='; + }; + // Cover grammar support. + // + // When an assignment expression position starts with an left parenthesis, the determination of the type + // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead) + // or the first comma. This situation also defers the determination of all the expressions nested in the pair. + // + // There are three productions that can be parsed in a parentheses pair that needs to be determined + // after the outermost pair is closed. They are: + // + // 1. AssignmentExpression + // 2. BindingElements + // 3. AssignmentTargets + // + // In order to avoid exponential backtracking, we use two flags to denote if the production can be + // binding element or assignment target. + // + // The three productions have the relationship: + // + // BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression + // + // with a single exception that CoverInitializedName when used directly in an Expression, generates + // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the + // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair. + // + // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not + // effect the current flags. This means the production the parser parses is only used as an expression. Therefore + // the CoverInitializedName check is conducted. + // + // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates + // the flags outside of the parser. This means the production the parser parses is used as a part of a potential + // pattern. The CoverInitializedName check is deferred. + Parser.prototype.isolateCoverGrammar = function (parseFunction) { + var previousIsBindingElement = this.context.isBindingElement; + var previousIsAssignmentTarget = this.context.isAssignmentTarget; + var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError; + this.context.isBindingElement = true; + this.context.isAssignmentTarget = true; + this.context.firstCoverInitializedNameError = null; + var result = parseFunction.call(this); + if (this.context.firstCoverInitializedNameError !== null) { + this.throwUnexpectedToken(this.context.firstCoverInitializedNameError); + } + this.context.isBindingElement = previousIsBindingElement; + this.context.isAssignmentTarget = previousIsAssignmentTarget; + this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError; + return result; + }; + Parser.prototype.inheritCoverGrammar = function (parseFunction) { + var previousIsBindingElement = this.context.isBindingElement; + var previousIsAssignmentTarget = this.context.isAssignmentTarget; + var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError; + this.context.isBindingElement = true; + this.context.isAssignmentTarget = true; + this.context.firstCoverInitializedNameError = null; + var result = parseFunction.call(this); + this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement; + this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget; + this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError; + return result; + }; + Parser.prototype.consumeSemicolon = function () { + if (this.match(';')) { + this.nextToken(); + } + else if (!this.hasLineTerminator) { + if (this.lookahead.type !== 2 /* EOF */ && !this.match('}')) { + this.throwUnexpectedToken(this.lookahead); + } + this.lastMarker.index = this.startMarker.index; + this.lastMarker.line = this.startMarker.line; + this.lastMarker.column = this.startMarker.column; + } + }; + // https://tc39.github.io/ecma262/#sec-primary-expression + Parser.prototype.parsePrimaryExpression = function () { + var node = this.createNode(); + var expr; + var token, raw; + switch (this.lookahead.type) { + case 3 /* Identifier */: + if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') { + this.tolerateUnexpectedToken(this.lookahead); + } + expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value)); + break; + case 6 /* NumericLiteral */: + case 8 /* StringLiteral */: + if (this.context.strict && this.lookahead.octal) { + this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral); + } + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + token = this.nextToken(); + raw = this.getTokenRaw(token); + expr = this.finalize(node, new Node.Literal(token.value, raw)); + break; + case 1 /* BooleanLiteral */: + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + token = this.nextToken(); + raw = this.getTokenRaw(token); + expr = this.finalize(node, new Node.Literal(token.value === 'true', raw)); + break; + case 5 /* NullLiteral */: + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + token = this.nextToken(); + raw = this.getTokenRaw(token); + expr = this.finalize(node, new Node.Literal(null, raw)); + break; + case 10 /* Template */: + expr = this.parseTemplateLiteral(); + break; + case 7 /* Punctuator */: + switch (this.lookahead.value) { + case '(': + this.context.isBindingElement = false; + expr = this.inheritCoverGrammar(this.parseGroupExpression); + break; + case '[': + expr = this.inheritCoverGrammar(this.parseArrayInitializer); + break; + case '{': + expr = this.inheritCoverGrammar(this.parseObjectInitializer); + break; + case '/': + case '/=': + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + this.scanner.index = this.startMarker.index; + token = this.nextRegexToken(); + raw = this.getTokenRaw(token); + expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags)); + break; + default: + expr = this.throwUnexpectedToken(this.nextToken()); + } + break; + case 4 /* Keyword */: + if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) { + expr = this.parseIdentifierName(); + } + else if (!this.context.strict && this.matchKeyword('let')) { + expr = this.finalize(node, new Node.Identifier(this.nextToken().value)); + } + else { + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + if (this.matchKeyword('function')) { + expr = this.parseFunctionExpression(); + } + else if (this.matchKeyword('this')) { + this.nextToken(); + expr = this.finalize(node, new Node.ThisExpression()); + } + else if (this.matchKeyword('class')) { + expr = this.parseClassExpression(); + } + else { + expr = this.throwUnexpectedToken(this.nextToken()); + } + } + break; + default: + expr = this.throwUnexpectedToken(this.nextToken()); + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-array-initializer + Parser.prototype.parseSpreadElement = function () { + var node = this.createNode(); + this.expect('...'); + var arg = this.inheritCoverGrammar(this.parseAssignmentExpression); + return this.finalize(node, new Node.SpreadElement(arg)); + }; + Parser.prototype.parseArrayInitializer = function () { + var node = this.createNode(); + var elements = []; + this.expect('['); + while (!this.match(']')) { + if (this.match(',')) { + this.nextToken(); + elements.push(null); + } + else if (this.match('...')) { + var element = this.parseSpreadElement(); + if (!this.match(']')) { + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + this.expect(','); + } + elements.push(element); + } + else { + elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression)); + if (!this.match(']')) { + this.expect(','); + } + } + } + this.expect(']'); + return this.finalize(node, new Node.ArrayExpression(elements)); + }; + // https://tc39.github.io/ecma262/#sec-object-initializer + Parser.prototype.parsePropertyMethod = function (params) { + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + var previousStrict = this.context.strict; + var previousAllowStrictDirective = this.context.allowStrictDirective; + this.context.allowStrictDirective = params.simple; + var body = this.isolateCoverGrammar(this.parseFunctionSourceElements); + if (this.context.strict && params.firstRestricted) { + this.tolerateUnexpectedToken(params.firstRestricted, params.message); + } + if (this.context.strict && params.stricted) { + this.tolerateUnexpectedToken(params.stricted, params.message); + } + this.context.strict = previousStrict; + this.context.allowStrictDirective = previousAllowStrictDirective; + return body; + }; + Parser.prototype.parsePropertyMethodFunction = function () { + var isGenerator = false; + var node = this.createNode(); + var previousAllowYield = this.context.allowYield; + this.context.allowYield = true; + var params = this.parseFormalParameters(); + var method = this.parsePropertyMethod(params); + this.context.allowYield = previousAllowYield; + return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator)); + }; + Parser.prototype.parsePropertyMethodAsyncFunction = function () { + var node = this.createNode(); + var previousAllowYield = this.context.allowYield; + var previousAwait = this.context.await; + this.context.allowYield = false; + this.context.await = true; + var params = this.parseFormalParameters(); + var method = this.parsePropertyMethod(params); + this.context.allowYield = previousAllowYield; + this.context.await = previousAwait; + return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method)); + }; + Parser.prototype.parseObjectPropertyKey = function () { + var node = this.createNode(); + var token = this.nextToken(); + var key; + switch (token.type) { + case 8 /* StringLiteral */: + case 6 /* NumericLiteral */: + if (this.context.strict && token.octal) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral); + } + var raw = this.getTokenRaw(token); + key = this.finalize(node, new Node.Literal(token.value, raw)); + break; + case 3 /* Identifier */: + case 1 /* BooleanLiteral */: + case 5 /* NullLiteral */: + case 4 /* Keyword */: + key = this.finalize(node, new Node.Identifier(token.value)); + break; + case 7 /* Punctuator */: + if (token.value === '[') { + key = this.isolateCoverGrammar(this.parseAssignmentExpression); + this.expect(']'); + } + else { + key = this.throwUnexpectedToken(token); + } + break; + default: + key = this.throwUnexpectedToken(token); + } + return key; + }; + Parser.prototype.isPropertyKey = function (key, value) { + return (key.type === syntax_1.Syntax.Identifier && key.name === value) || + (key.type === syntax_1.Syntax.Literal && key.value === value); + }; + Parser.prototype.parseObjectProperty = function (hasProto) { + var node = this.createNode(); + var token = this.lookahead; + var kind; + var key = null; + var value = null; + var computed = false; + var method = false; + var shorthand = false; + var isAsync = false; + if (token.type === 3 /* Identifier */) { + var id = token.value; + this.nextToken(); + computed = this.match('['); + isAsync = !this.hasLineTerminator && (id === 'async') && + !this.match(':') && !this.match('(') && !this.match('*') && !this.match(','); + key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id)); + } + else if (this.match('*')) { + this.nextToken(); + } + else { + computed = this.match('['); + key = this.parseObjectPropertyKey(); + } + var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead); + if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'get' && lookaheadPropertyKey) { + kind = 'get'; + computed = this.match('['); + key = this.parseObjectPropertyKey(); + this.context.allowYield = false; + value = this.parseGetterMethod(); + } + else if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'set' && lookaheadPropertyKey) { + kind = 'set'; + computed = this.match('['); + key = this.parseObjectPropertyKey(); + value = this.parseSetterMethod(); + } + else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) { + kind = 'init'; + computed = this.match('['); + key = this.parseObjectPropertyKey(); + value = this.parseGeneratorMethod(); + method = true; + } + else { + if (!key) { + this.throwUnexpectedToken(this.lookahead); + } + kind = 'init'; + if (this.match(':') && !isAsync) { + if (!computed && this.isPropertyKey(key, '__proto__')) { + if (hasProto.value) { + this.tolerateError(messages_1.Messages.DuplicateProtoProperty); + } + hasProto.value = true; + } + this.nextToken(); + value = this.inheritCoverGrammar(this.parseAssignmentExpression); + } + else if (this.match('(')) { + value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction(); + method = true; + } + else if (token.type === 3 /* Identifier */) { + var id = this.finalize(node, new Node.Identifier(token.value)); + if (this.match('=')) { + this.context.firstCoverInitializedNameError = this.lookahead; + this.nextToken(); + shorthand = true; + var init = this.isolateCoverGrammar(this.parseAssignmentExpression); + value = this.finalize(node, new Node.AssignmentPattern(id, init)); + } + else { + shorthand = true; + value = id; + } + } + else { + this.throwUnexpectedToken(this.nextToken()); + } + } + return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand)); + }; + Parser.prototype.parseObjectInitializer = function () { + var node = this.createNode(); + this.expect('{'); + var properties = []; + var hasProto = { value: false }; + while (!this.match('}')) { + properties.push(this.parseObjectProperty(hasProto)); + if (!this.match('}')) { + this.expectCommaSeparator(); + } + } + this.expect('}'); + return this.finalize(node, new Node.ObjectExpression(properties)); + }; + // https://tc39.github.io/ecma262/#sec-template-literals + Parser.prototype.parseTemplateHead = function () { + assert_1.assert(this.lookahead.head, 'Template literal must start with a template head'); + var node = this.createNode(); + var token = this.nextToken(); + var raw = token.value; + var cooked = token.cooked; + return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail)); + }; + Parser.prototype.parseTemplateElement = function () { + if (this.lookahead.type !== 10 /* Template */) { + this.throwUnexpectedToken(); + } + var node = this.createNode(); + var token = this.nextToken(); + var raw = token.value; + var cooked = token.cooked; + return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail)); + }; + Parser.prototype.parseTemplateLiteral = function () { + var node = this.createNode(); + var expressions = []; + var quasis = []; + var quasi = this.parseTemplateHead(); + quasis.push(quasi); + while (!quasi.tail) { + expressions.push(this.parseExpression()); + quasi = this.parseTemplateElement(); + quasis.push(quasi); + } + return this.finalize(node, new Node.TemplateLiteral(quasis, expressions)); + }; + // https://tc39.github.io/ecma262/#sec-grouping-operator + Parser.prototype.reinterpretExpressionAsPattern = function (expr) { + switch (expr.type) { + case syntax_1.Syntax.Identifier: + case syntax_1.Syntax.MemberExpression: + case syntax_1.Syntax.RestElement: + case syntax_1.Syntax.AssignmentPattern: + break; + case syntax_1.Syntax.SpreadElement: + expr.type = syntax_1.Syntax.RestElement; + this.reinterpretExpressionAsPattern(expr.argument); + break; + case syntax_1.Syntax.ArrayExpression: + expr.type = syntax_1.Syntax.ArrayPattern; + for (var i = 0; i < expr.elements.length; i++) { + if (expr.elements[i] !== null) { + this.reinterpretExpressionAsPattern(expr.elements[i]); + } + } + break; + case syntax_1.Syntax.ObjectExpression: + expr.type = syntax_1.Syntax.ObjectPattern; + for (var i = 0; i < expr.properties.length; i++) { + this.reinterpretExpressionAsPattern(expr.properties[i].value); + } + break; + case syntax_1.Syntax.AssignmentExpression: + expr.type = syntax_1.Syntax.AssignmentPattern; + delete expr.operator; + this.reinterpretExpressionAsPattern(expr.left); + break; + default: + // Allow other node type for tolerant parsing. + break; + } + }; + Parser.prototype.parseGroupExpression = function () { + var expr; + this.expect('('); + if (this.match(')')) { + this.nextToken(); + if (!this.match('=>')) { + this.expect('=>'); + } + expr = { + type: ArrowParameterPlaceHolder, + params: [], + async: false + }; + } + else { + var startToken = this.lookahead; + var params = []; + if (this.match('...')) { + expr = this.parseRestElement(params); + this.expect(')'); + if (!this.match('=>')) { + this.expect('=>'); + } + expr = { + type: ArrowParameterPlaceHolder, + params: [expr], + async: false + }; + } + else { + var arrow = false; + this.context.isBindingElement = true; + expr = this.inheritCoverGrammar(this.parseAssignmentExpression); + if (this.match(',')) { + var expressions = []; + this.context.isAssignmentTarget = false; + expressions.push(expr); + while (this.lookahead.type !== 2 /* EOF */) { + if (!this.match(',')) { + break; + } + this.nextToken(); + if (this.match(')')) { + this.nextToken(); + for (var i = 0; i < expressions.length; i++) { + this.reinterpretExpressionAsPattern(expressions[i]); + } + arrow = true; + expr = { + type: ArrowParameterPlaceHolder, + params: expressions, + async: false + }; + } + else if (this.match('...')) { + if (!this.context.isBindingElement) { + this.throwUnexpectedToken(this.lookahead); + } + expressions.push(this.parseRestElement(params)); + this.expect(')'); + if (!this.match('=>')) { + this.expect('=>'); + } + this.context.isBindingElement = false; + for (var i = 0; i < expressions.length; i++) { + this.reinterpretExpressionAsPattern(expressions[i]); + } + arrow = true; + expr = { + type: ArrowParameterPlaceHolder, + params: expressions, + async: false + }; + } + else { + expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression)); + } + if (arrow) { + break; + } + } + if (!arrow) { + expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions)); + } + } + if (!arrow) { + this.expect(')'); + if (this.match('=>')) { + if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') { + arrow = true; + expr = { + type: ArrowParameterPlaceHolder, + params: [expr], + async: false + }; + } + if (!arrow) { + if (!this.context.isBindingElement) { + this.throwUnexpectedToken(this.lookahead); + } + if (expr.type === syntax_1.Syntax.SequenceExpression) { + for (var i = 0; i < expr.expressions.length; i++) { + this.reinterpretExpressionAsPattern(expr.expressions[i]); + } + } + else { + this.reinterpretExpressionAsPattern(expr); + } + var parameters = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]); + expr = { + type: ArrowParameterPlaceHolder, + params: parameters, + async: false + }; + } + } + this.context.isBindingElement = false; + } + } + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions + Parser.prototype.parseArguments = function () { + this.expect('('); + var args = []; + if (!this.match(')')) { + while (true) { + var expr = this.match('...') ? this.parseSpreadElement() : + this.isolateCoverGrammar(this.parseAssignmentExpression); + args.push(expr); + if (this.match(')')) { + break; + } + this.expectCommaSeparator(); + if (this.match(')')) { + break; + } + } + } + this.expect(')'); + return args; + }; + Parser.prototype.isIdentifierName = function (token) { + return token.type === 3 /* Identifier */ || + token.type === 4 /* Keyword */ || + token.type === 1 /* BooleanLiteral */ || + token.type === 5 /* NullLiteral */; + }; + Parser.prototype.parseIdentifierName = function () { + var node = this.createNode(); + var token = this.nextToken(); + if (!this.isIdentifierName(token)) { + this.throwUnexpectedToken(token); + } + return this.finalize(node, new Node.Identifier(token.value)); + }; + Parser.prototype.parseNewExpression = function () { + var node = this.createNode(); + var id = this.parseIdentifierName(); + assert_1.assert(id.name === 'new', 'New expression must start with `new`'); + var expr; + if (this.match('.')) { + this.nextToken(); + if (this.lookahead.type === 3 /* Identifier */ && this.context.inFunctionBody && this.lookahead.value === 'target') { + var property = this.parseIdentifierName(); + expr = new Node.MetaProperty(id, property); + } + else { + this.throwUnexpectedToken(this.lookahead); + } + } + else { + var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression); + var args = this.match('(') ? this.parseArguments() : []; + expr = new Node.NewExpression(callee, args); + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + } + return this.finalize(node, expr); + }; + Parser.prototype.parseAsyncArgument = function () { + var arg = this.parseAssignmentExpression(); + this.context.firstCoverInitializedNameError = null; + return arg; + }; + Parser.prototype.parseAsyncArguments = function () { + this.expect('('); + var args = []; + if (!this.match(')')) { + while (true) { + var expr = this.match('...') ? this.parseSpreadElement() : + this.isolateCoverGrammar(this.parseAsyncArgument); + args.push(expr); + if (this.match(')')) { + break; + } + this.expectCommaSeparator(); + if (this.match(')')) { + break; + } + } + } + this.expect(')'); + return args; + }; + Parser.prototype.parseLeftHandSideExpressionAllowCall = function () { + var startToken = this.lookahead; + var maybeAsync = this.matchContextualKeyword('async'); + var previousAllowIn = this.context.allowIn; + this.context.allowIn = true; + var expr; + if (this.matchKeyword('super') && this.context.inFunctionBody) { + expr = this.createNode(); + this.nextToken(); + expr = this.finalize(expr, new Node.Super()); + if (!this.match('(') && !this.match('.') && !this.match('[')) { + this.throwUnexpectedToken(this.lookahead); + } + } + else { + expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression); + } + while (true) { + if (this.match('.')) { + this.context.isBindingElement = false; + this.context.isAssignmentTarget = true; + this.expect('.'); + var property = this.parseIdentifierName(); + expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property)); + } + else if (this.match('(')) { + var asyncArrow = maybeAsync && (startToken.lineNumber === this.lookahead.lineNumber); + this.context.isBindingElement = false; + this.context.isAssignmentTarget = false; + var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments(); + expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args)); + if (asyncArrow && this.match('=>')) { + for (var i = 0; i < args.length; ++i) { + this.reinterpretExpressionAsPattern(args[i]); + } + expr = { + type: ArrowParameterPlaceHolder, + params: args, + async: true + }; + } + } + else if (this.match('[')) { + this.context.isBindingElement = false; + this.context.isAssignmentTarget = true; + this.expect('['); + var property = this.isolateCoverGrammar(this.parseExpression); + this.expect(']'); + expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property)); + } + else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) { + var quasi = this.parseTemplateLiteral(); + expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi)); + } + else { + break; + } + } + this.context.allowIn = previousAllowIn; + return expr; + }; + Parser.prototype.parseSuper = function () { + var node = this.createNode(); + this.expectKeyword('super'); + if (!this.match('[') && !this.match('.')) { + this.throwUnexpectedToken(this.lookahead); + } + return this.finalize(node, new Node.Super()); + }; + Parser.prototype.parseLeftHandSideExpression = function () { + assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.'); + var node = this.startNode(this.lookahead); + var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() : + this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression); + while (true) { + if (this.match('[')) { + this.context.isBindingElement = false; + this.context.isAssignmentTarget = true; + this.expect('['); + var property = this.isolateCoverGrammar(this.parseExpression); + this.expect(']'); + expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property)); + } + else if (this.match('.')) { + this.context.isBindingElement = false; + this.context.isAssignmentTarget = true; + this.expect('.'); + var property = this.parseIdentifierName(); + expr = this.finalize(node, new Node.StaticMemberExpression(expr, property)); + } + else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) { + var quasi = this.parseTemplateLiteral(); + expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi)); + } + else { + break; + } + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-update-expressions + Parser.prototype.parseUpdateExpression = function () { + var expr; + var startToken = this.lookahead; + if (this.match('++') || this.match('--')) { + var node = this.startNode(startToken); + var token = this.nextToken(); + expr = this.inheritCoverGrammar(this.parseUnaryExpression); + if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) { + this.tolerateError(messages_1.Messages.StrictLHSPrefix); + } + if (!this.context.isAssignmentTarget) { + this.tolerateError(messages_1.Messages.InvalidLHSInAssignment); + } + var prefix = true; + expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix)); + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + } + else { + expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall); + if (!this.hasLineTerminator && this.lookahead.type === 7 /* Punctuator */) { + if (this.match('++') || this.match('--')) { + if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) { + this.tolerateError(messages_1.Messages.StrictLHSPostfix); + } + if (!this.context.isAssignmentTarget) { + this.tolerateError(messages_1.Messages.InvalidLHSInAssignment); + } + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + var operator = this.nextToken().value; + var prefix = false; + expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix)); + } + } + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-unary-operators + Parser.prototype.parseAwaitExpression = function () { + var node = this.createNode(); + this.nextToken(); + var argument = this.parseUnaryExpression(); + return this.finalize(node, new Node.AwaitExpression(argument)); + }; + Parser.prototype.parseUnaryExpression = function () { + var expr; + if (this.match('+') || this.match('-') || this.match('~') || this.match('!') || + this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) { + var node = this.startNode(this.lookahead); + var token = this.nextToken(); + expr = this.inheritCoverGrammar(this.parseUnaryExpression); + expr = this.finalize(node, new Node.UnaryExpression(token.value, expr)); + if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) { + this.tolerateError(messages_1.Messages.StrictDelete); + } + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + } + else if (this.context.await && this.matchContextualKeyword('await')) { + expr = this.parseAwaitExpression(); + } + else { + expr = this.parseUpdateExpression(); + } + return expr; + }; + Parser.prototype.parseExponentiationExpression = function () { + var startToken = this.lookahead; + var expr = this.inheritCoverGrammar(this.parseUnaryExpression); + if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) { + this.nextToken(); + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + var left = expr; + var right = this.isolateCoverGrammar(this.parseExponentiationExpression); + expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right)); + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-exp-operator + // https://tc39.github.io/ecma262/#sec-multiplicative-operators + // https://tc39.github.io/ecma262/#sec-additive-operators + // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators + // https://tc39.github.io/ecma262/#sec-relational-operators + // https://tc39.github.io/ecma262/#sec-equality-operators + // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators + // https://tc39.github.io/ecma262/#sec-binary-logical-operators + Parser.prototype.binaryPrecedence = function (token) { + var op = token.value; + var precedence; + if (token.type === 7 /* Punctuator */) { + precedence = this.operatorPrecedence[op] || 0; + } + else if (token.type === 4 /* Keyword */) { + precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0; + } + else { + precedence = 0; + } + return precedence; + }; + Parser.prototype.parseBinaryExpression = function () { + var startToken = this.lookahead; + var expr = this.inheritCoverGrammar(this.parseExponentiationExpression); + var token = this.lookahead; + var prec = this.binaryPrecedence(token); + if (prec > 0) { + this.nextToken(); + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + var markers = [startToken, this.lookahead]; + var left = expr; + var right = this.isolateCoverGrammar(this.parseExponentiationExpression); + var stack = [left, token.value, right]; + var precedences = [prec]; + while (true) { + prec = this.binaryPrecedence(this.lookahead); + if (prec <= 0) { + break; + } + // Reduce: make a binary expression from the three topmost entries. + while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) { + right = stack.pop(); + var operator = stack.pop(); + precedences.pop(); + left = stack.pop(); + markers.pop(); + var node = this.startNode(markers[markers.length - 1]); + stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right))); + } + // Shift. + stack.push(this.nextToken().value); + precedences.push(prec); + markers.push(this.lookahead); + stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression)); + } + // Final reduce to clean-up the stack. + var i = stack.length - 1; + expr = stack[i]; + var lastMarker = markers.pop(); + while (i > 1) { + var marker = markers.pop(); + var lastLineStart = lastMarker && lastMarker.lineStart; + var node = this.startNode(marker, lastLineStart); + var operator = stack[i - 1]; + expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr)); + i -= 2; + lastMarker = marker; + } + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-conditional-operator + Parser.prototype.parseConditionalExpression = function () { + var startToken = this.lookahead; + var expr = this.inheritCoverGrammar(this.parseBinaryExpression); + if (this.match('?')) { + this.nextToken(); + var previousAllowIn = this.context.allowIn; + this.context.allowIn = true; + var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression); + this.context.allowIn = previousAllowIn; + this.expect(':'); + var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression); + expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate)); + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-assignment-operators + Parser.prototype.checkPatternParam = function (options, param) { + switch (param.type) { + case syntax_1.Syntax.Identifier: + this.validateParam(options, param, param.name); + break; + case syntax_1.Syntax.RestElement: + this.checkPatternParam(options, param.argument); + break; + case syntax_1.Syntax.AssignmentPattern: + this.checkPatternParam(options, param.left); + break; + case syntax_1.Syntax.ArrayPattern: + for (var i = 0; i < param.elements.length; i++) { + if (param.elements[i] !== null) { + this.checkPatternParam(options, param.elements[i]); + } + } + break; + case syntax_1.Syntax.ObjectPattern: + for (var i = 0; i < param.properties.length; i++) { + this.checkPatternParam(options, param.properties[i].value); + } + break; + default: + break; + } + options.simple = options.simple && (param instanceof Node.Identifier); + }; + Parser.prototype.reinterpretAsCoverFormalsList = function (expr) { + var params = [expr]; + var options; + var asyncArrow = false; + switch (expr.type) { + case syntax_1.Syntax.Identifier: + break; + case ArrowParameterPlaceHolder: + params = expr.params; + asyncArrow = expr.async; + break; + default: + return null; + } + options = { + simple: true, + paramSet: {} + }; + for (var i = 0; i < params.length; ++i) { + var param = params[i]; + if (param.type === syntax_1.Syntax.AssignmentPattern) { + if (param.right.type === syntax_1.Syntax.YieldExpression) { + if (param.right.argument) { + this.throwUnexpectedToken(this.lookahead); + } + param.right.type = syntax_1.Syntax.Identifier; + param.right.name = 'yield'; + delete param.right.argument; + delete param.right.delegate; + } + } + else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') { + this.throwUnexpectedToken(this.lookahead); + } + this.checkPatternParam(options, param); + params[i] = param; + } + if (this.context.strict || !this.context.allowYield) { + for (var i = 0; i < params.length; ++i) { + var param = params[i]; + if (param.type === syntax_1.Syntax.YieldExpression) { + this.throwUnexpectedToken(this.lookahead); + } + } + } + if (options.message === messages_1.Messages.StrictParamDupe) { + var token = this.context.strict ? options.stricted : options.firstRestricted; + this.throwUnexpectedToken(token, options.message); + } + return { + simple: options.simple, + params: params, + stricted: options.stricted, + firstRestricted: options.firstRestricted, + message: options.message + }; + }; + Parser.prototype.parseAssignmentExpression = function () { + var expr; + if (!this.context.allowYield && this.matchKeyword('yield')) { + expr = this.parseYieldExpression(); + } + else { + var startToken = this.lookahead; + var token = startToken; + expr = this.parseConditionalExpression(); + if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') { + if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) { + var arg = this.parsePrimaryExpression(); + this.reinterpretExpressionAsPattern(arg); + expr = { + type: ArrowParameterPlaceHolder, + params: [arg], + async: true + }; + } + } + if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) { + // https://tc39.github.io/ecma262/#sec-arrow-function-definitions + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + var isAsync = expr.async; + var list = this.reinterpretAsCoverFormalsList(expr); + if (list) { + if (this.hasLineTerminator) { + this.tolerateUnexpectedToken(this.lookahead); + } + this.context.firstCoverInitializedNameError = null; + var previousStrict = this.context.strict; + var previousAllowStrictDirective = this.context.allowStrictDirective; + this.context.allowStrictDirective = list.simple; + var previousAllowYield = this.context.allowYield; + var previousAwait = this.context.await; + this.context.allowYield = true; + this.context.await = isAsync; + var node = this.startNode(startToken); + this.expect('=>'); + var body = void 0; + if (this.match('{')) { + var previousAllowIn = this.context.allowIn; + this.context.allowIn = true; + body = this.parseFunctionSourceElements(); + this.context.allowIn = previousAllowIn; + } + else { + body = this.isolateCoverGrammar(this.parseAssignmentExpression); + } + var expression = body.type !== syntax_1.Syntax.BlockStatement; + if (this.context.strict && list.firstRestricted) { + this.throwUnexpectedToken(list.firstRestricted, list.message); + } + if (this.context.strict && list.stricted) { + this.tolerateUnexpectedToken(list.stricted, list.message); + } + expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) : + this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression)); + this.context.strict = previousStrict; + this.context.allowStrictDirective = previousAllowStrictDirective; + this.context.allowYield = previousAllowYield; + this.context.await = previousAwait; + } + } + else { + if (this.matchAssign()) { + if (!this.context.isAssignmentTarget) { + this.tolerateError(messages_1.Messages.InvalidLHSInAssignment); + } + if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) { + var id = expr; + if (this.scanner.isRestrictedWord(id.name)) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment); + } + if (this.scanner.isStrictModeReservedWord(id.name)) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord); + } + } + if (!this.match('=')) { + this.context.isAssignmentTarget = false; + this.context.isBindingElement = false; + } + else { + this.reinterpretExpressionAsPattern(expr); + } + token = this.nextToken(); + var operator = token.value; + var right = this.isolateCoverGrammar(this.parseAssignmentExpression); + expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right)); + this.context.firstCoverInitializedNameError = null; + } + } + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-comma-operator + Parser.prototype.parseExpression = function () { + var startToken = this.lookahead; + var expr = this.isolateCoverGrammar(this.parseAssignmentExpression); + if (this.match(',')) { + var expressions = []; + expressions.push(expr); + while (this.lookahead.type !== 2 /* EOF */) { + if (!this.match(',')) { + break; + } + this.nextToken(); + expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression)); + } + expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions)); + } + return expr; + }; + // https://tc39.github.io/ecma262/#sec-block + Parser.prototype.parseStatementListItem = function () { + var statement; + this.context.isAssignmentTarget = true; + this.context.isBindingElement = true; + if (this.lookahead.type === 4 /* Keyword */) { + switch (this.lookahead.value) { + case 'export': + if (!this.context.isModule) { + this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration); + } + statement = this.parseExportDeclaration(); + break; + case 'import': + if (!this.context.isModule) { + this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration); + } + statement = this.parseImportDeclaration(); + break; + case 'const': + statement = this.parseLexicalDeclaration({ inFor: false }); + break; + case 'function': + statement = this.parseFunctionDeclaration(); + break; + case 'class': + statement = this.parseClassDeclaration(); + break; + case 'let': + statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement(); + break; + default: + statement = this.parseStatement(); + break; + } + } + else { + statement = this.parseStatement(); + } + return statement; + }; + Parser.prototype.parseBlock = function () { + var node = this.createNode(); + this.expect('{'); + var block = []; + while (true) { + if (this.match('}')) { + break; + } + block.push(this.parseStatementListItem()); + } + this.expect('}'); + return this.finalize(node, new Node.BlockStatement(block)); + }; + // https://tc39.github.io/ecma262/#sec-let-and-const-declarations + Parser.prototype.parseLexicalBinding = function (kind, options) { + var node = this.createNode(); + var params = []; + var id = this.parsePattern(params, kind); + if (this.context.strict && id.type === syntax_1.Syntax.Identifier) { + if (this.scanner.isRestrictedWord(id.name)) { + this.tolerateError(messages_1.Messages.StrictVarName); + } + } + var init = null; + if (kind === 'const') { + if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) { + if (this.match('=')) { + this.nextToken(); + init = this.isolateCoverGrammar(this.parseAssignmentExpression); + } + else { + this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const'); + } + } + } + else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) { + this.expect('='); + init = this.isolateCoverGrammar(this.parseAssignmentExpression); + } + return this.finalize(node, new Node.VariableDeclarator(id, init)); + }; + Parser.prototype.parseBindingList = function (kind, options) { + var list = [this.parseLexicalBinding(kind, options)]; + while (this.match(',')) { + this.nextToken(); + list.push(this.parseLexicalBinding(kind, options)); + } + return list; + }; + Parser.prototype.isLexicalDeclaration = function () { + var state = this.scanner.saveState(); + this.scanner.scanComments(); + var next = this.scanner.lex(); + this.scanner.restoreState(state); + return (next.type === 3 /* Identifier */) || + (next.type === 7 /* Punctuator */ && next.value === '[') || + (next.type === 7 /* Punctuator */ && next.value === '{') || + (next.type === 4 /* Keyword */ && next.value === 'let') || + (next.type === 4 /* Keyword */ && next.value === 'yield'); + }; + Parser.prototype.parseLexicalDeclaration = function (options) { + var node = this.createNode(); + var kind = this.nextToken().value; + assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const'); + var declarations = this.parseBindingList(kind, options); + this.consumeSemicolon(); + return this.finalize(node, new Node.VariableDeclaration(declarations, kind)); + }; + // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns + Parser.prototype.parseBindingRestElement = function (params, kind) { + var node = this.createNode(); + this.expect('...'); + var arg = this.parsePattern(params, kind); + return this.finalize(node, new Node.RestElement(arg)); + }; + Parser.prototype.parseArrayPattern = function (params, kind) { + var node = this.createNode(); + this.expect('['); + var elements = []; + while (!this.match(']')) { + if (this.match(',')) { + this.nextToken(); + elements.push(null); + } + else { + if (this.match('...')) { + elements.push(this.parseBindingRestElement(params, kind)); + break; + } + else { + elements.push(this.parsePatternWithDefault(params, kind)); + } + if (!this.match(']')) { + this.expect(','); + } + } + } + this.expect(']'); + return this.finalize(node, new Node.ArrayPattern(elements)); + }; + Parser.prototype.parsePropertyPattern = function (params, kind) { + var node = this.createNode(); + var computed = false; + var shorthand = false; + var method = false; + var key; + var value; + if (this.lookahead.type === 3 /* Identifier */) { + var keyToken = this.lookahead; + key = this.parseVariableIdentifier(); + var init = this.finalize(node, new Node.Identifier(keyToken.value)); + if (this.match('=')) { + params.push(keyToken); + shorthand = true; + this.nextToken(); + var expr = this.parseAssignmentExpression(); + value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr)); + } + else if (!this.match(':')) { + params.push(keyToken); + shorthand = true; + value = init; + } + else { + this.expect(':'); + value = this.parsePatternWithDefault(params, kind); + } + } + else { + computed = this.match('['); + key = this.parseObjectPropertyKey(); + this.expect(':'); + value = this.parsePatternWithDefault(params, kind); + } + return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand)); + }; + Parser.prototype.parseObjectPattern = function (params, kind) { + var node = this.createNode(); + var properties = []; + this.expect('{'); + while (!this.match('}')) { + properties.push(this.parsePropertyPattern(params, kind)); + if (!this.match('}')) { + this.expect(','); + } + } + this.expect('}'); + return this.finalize(node, new Node.ObjectPattern(properties)); + }; + Parser.prototype.parsePattern = function (params, kind) { + var pattern; + if (this.match('[')) { + pattern = this.parseArrayPattern(params, kind); + } + else if (this.match('{')) { + pattern = this.parseObjectPattern(params, kind); + } + else { + if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) { + this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding); + } + params.push(this.lookahead); + pattern = this.parseVariableIdentifier(kind); + } + return pattern; + }; + Parser.prototype.parsePatternWithDefault = function (params, kind) { + var startToken = this.lookahead; + var pattern = this.parsePattern(params, kind); + if (this.match('=')) { + this.nextToken(); + var previousAllowYield = this.context.allowYield; + this.context.allowYield = true; + var right = this.isolateCoverGrammar(this.parseAssignmentExpression); + this.context.allowYield = previousAllowYield; + pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right)); + } + return pattern; + }; + // https://tc39.github.io/ecma262/#sec-variable-statement + Parser.prototype.parseVariableIdentifier = function (kind) { + var node = this.createNode(); + var token = this.nextToken(); + if (token.type === 4 /* Keyword */ && token.value === 'yield') { + if (this.context.strict) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord); + } + else if (!this.context.allowYield) { + this.throwUnexpectedToken(token); + } + } + else if (token.type !== 3 /* Identifier */) { + if (this.context.strict && token.type === 4 /* Keyword */ && this.scanner.isStrictModeReservedWord(token.value)) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord); + } + else { + if (this.context.strict || token.value !== 'let' || kind !== 'var') { + this.throwUnexpectedToken(token); + } + } + } + else if ((this.context.isModule || this.context.await) && token.type === 3 /* Identifier */ && token.value === 'await') { + this.tolerateUnexpectedToken(token); + } + return this.finalize(node, new Node.Identifier(token.value)); + }; + Parser.prototype.parseVariableDeclaration = function (options) { + var node = this.createNode(); + var params = []; + var id = this.parsePattern(params, 'var'); + if (this.context.strict && id.type === syntax_1.Syntax.Identifier) { + if (this.scanner.isRestrictedWord(id.name)) { + this.tolerateError(messages_1.Messages.StrictVarName); + } + } + var init = null; + if (this.match('=')) { + this.nextToken(); + init = this.isolateCoverGrammar(this.parseAssignmentExpression); + } + else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) { + this.expect('='); + } + return this.finalize(node, new Node.VariableDeclarator(id, init)); + }; + Parser.prototype.parseVariableDeclarationList = function (options) { + var opt = { inFor: options.inFor }; + var list = []; + list.push(this.parseVariableDeclaration(opt)); + while (this.match(',')) { + this.nextToken(); + list.push(this.parseVariableDeclaration(opt)); + } + return list; + }; + Parser.prototype.parseVariableStatement = function () { + var node = this.createNode(); + this.expectKeyword('var'); + var declarations = this.parseVariableDeclarationList({ inFor: false }); + this.consumeSemicolon(); + return this.finalize(node, new Node.VariableDeclaration(declarations, 'var')); + }; + // https://tc39.github.io/ecma262/#sec-empty-statement + Parser.prototype.parseEmptyStatement = function () { + var node = this.createNode(); + this.expect(';'); + return this.finalize(node, new Node.EmptyStatement()); + }; + // https://tc39.github.io/ecma262/#sec-expression-statement + Parser.prototype.parseExpressionStatement = function () { + var node = this.createNode(); + var expr = this.parseExpression(); + this.consumeSemicolon(); + return this.finalize(node, new Node.ExpressionStatement(expr)); + }; + // https://tc39.github.io/ecma262/#sec-if-statement + Parser.prototype.parseIfClause = function () { + if (this.context.strict && this.matchKeyword('function')) { + this.tolerateError(messages_1.Messages.StrictFunction); + } + return this.parseStatement(); + }; + Parser.prototype.parseIfStatement = function () { + var node = this.createNode(); + var consequent; + var alternate = null; + this.expectKeyword('if'); + this.expect('('); + var test = this.parseExpression(); + if (!this.match(')') && this.config.tolerant) { + this.tolerateUnexpectedToken(this.nextToken()); + consequent = this.finalize(this.createNode(), new Node.EmptyStatement()); + } + else { + this.expect(')'); + consequent = this.parseIfClause(); + if (this.matchKeyword('else')) { + this.nextToken(); + alternate = this.parseIfClause(); + } + } + return this.finalize(node, new Node.IfStatement(test, consequent, alternate)); + }; + // https://tc39.github.io/ecma262/#sec-do-while-statement + Parser.prototype.parseDoWhileStatement = function () { + var node = this.createNode(); + this.expectKeyword('do'); + var previousInIteration = this.context.inIteration; + this.context.inIteration = true; + var body = this.parseStatement(); + this.context.inIteration = previousInIteration; + this.expectKeyword('while'); + this.expect('('); + var test = this.parseExpression(); + if (!this.match(')') && this.config.tolerant) { + this.tolerateUnexpectedToken(this.nextToken()); + } + else { + this.expect(')'); + if (this.match(';')) { + this.nextToken(); + } + } + return this.finalize(node, new Node.DoWhileStatement(body, test)); + }; + // https://tc39.github.io/ecma262/#sec-while-statement + Parser.prototype.parseWhileStatement = function () { + var node = this.createNode(); + var body; + this.expectKeyword('while'); + this.expect('('); + var test = this.parseExpression(); + if (!this.match(')') && this.config.tolerant) { + this.tolerateUnexpectedToken(this.nextToken()); + body = this.finalize(this.createNode(), new Node.EmptyStatement()); + } + else { + this.expect(')'); + var previousInIteration = this.context.inIteration; + this.context.inIteration = true; + body = this.parseStatement(); + this.context.inIteration = previousInIteration; + } + return this.finalize(node, new Node.WhileStatement(test, body)); + }; + // https://tc39.github.io/ecma262/#sec-for-statement + // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements + Parser.prototype.parseForStatement = function () { + var init = null; + var test = null; + var update = null; + var forIn = true; + var left, right; + var node = this.createNode(); + this.expectKeyword('for'); + this.expect('('); + if (this.match(';')) { + this.nextToken(); + } + else { + if (this.matchKeyword('var')) { + init = this.createNode(); + this.nextToken(); + var previousAllowIn = this.context.allowIn; + this.context.allowIn = false; + var declarations = this.parseVariableDeclarationList({ inFor: true }); + this.context.allowIn = previousAllowIn; + if (declarations.length === 1 && this.matchKeyword('in')) { + var decl = declarations[0]; + if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) { + this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in'); + } + init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var')); + this.nextToken(); + left = init; + right = this.parseExpression(); + init = null; + } + else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) { + init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var')); + this.nextToken(); + left = init; + right = this.parseAssignmentExpression(); + init = null; + forIn = false; + } + else { + init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var')); + this.expect(';'); + } + } + else if (this.matchKeyword('const') || this.matchKeyword('let')) { + init = this.createNode(); + var kind = this.nextToken().value; + if (!this.context.strict && this.lookahead.value === 'in') { + init = this.finalize(init, new Node.Identifier(kind)); + this.nextToken(); + left = init; + right = this.parseExpression(); + init = null; + } + else { + var previousAllowIn = this.context.allowIn; + this.context.allowIn = false; + var declarations = this.parseBindingList(kind, { inFor: true }); + this.context.allowIn = previousAllowIn; + if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) { + init = this.finalize(init, new Node.VariableDeclaration(declarations, kind)); + this.nextToken(); + left = init; + right = this.parseExpression(); + init = null; + } + else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) { + init = this.finalize(init, new Node.VariableDeclaration(declarations, kind)); + this.nextToken(); + left = init; + right = this.parseAssignmentExpression(); + init = null; + forIn = false; + } + else { + this.consumeSemicolon(); + init = this.finalize(init, new Node.VariableDeclaration(declarations, kind)); + } + } + } + else { + var initStartToken = this.lookahead; + var previousAllowIn = this.context.allowIn; + this.context.allowIn = false; + init = this.inheritCoverGrammar(this.parseAssignmentExpression); + this.context.allowIn = previousAllowIn; + if (this.matchKeyword('in')) { + if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) { + this.tolerateError(messages_1.Messages.InvalidLHSInForIn); + } + this.nextToken(); + this.reinterpretExpressionAsPattern(init); + left = init; + right = this.parseExpression(); + init = null; + } + else if (this.matchContextualKeyword('of')) { + if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) { + this.tolerateError(messages_1.Messages.InvalidLHSInForLoop); + } + this.nextToken(); + this.reinterpretExpressionAsPattern(init); + left = init; + right = this.parseAssignmentExpression(); + init = null; + forIn = false; + } + else { + if (this.match(',')) { + var initSeq = [init]; + while (this.match(',')) { + this.nextToken(); + initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression)); + } + init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq)); + } + this.expect(';'); + } + } + } + if (typeof left === 'undefined') { + if (!this.match(';')) { + test = this.parseExpression(); + } + this.expect(';'); + if (!this.match(')')) { + update = this.parseExpression(); + } + } + var body; + if (!this.match(')') && this.config.tolerant) { + this.tolerateUnexpectedToken(this.nextToken()); + body = this.finalize(this.createNode(), new Node.EmptyStatement()); + } + else { + this.expect(')'); + var previousInIteration = this.context.inIteration; + this.context.inIteration = true; + body = this.isolateCoverGrammar(this.parseStatement); + this.context.inIteration = previousInIteration; + } + return (typeof left === 'undefined') ? + this.finalize(node, new Node.ForStatement(init, test, update, body)) : + forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) : + this.finalize(node, new Node.ForOfStatement(left, right, body)); + }; + // https://tc39.github.io/ecma262/#sec-continue-statement + Parser.prototype.parseContinueStatement = function () { + var node = this.createNode(); + this.expectKeyword('continue'); + var label = null; + if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) { + var id = this.parseVariableIdentifier(); + label = id; + var key = '$' + id.name; + if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) { + this.throwError(messages_1.Messages.UnknownLabel, id.name); + } + } + this.consumeSemicolon(); + if (label === null && !this.context.inIteration) { + this.throwError(messages_1.Messages.IllegalContinue); + } + return this.finalize(node, new Node.ContinueStatement(label)); + }; + // https://tc39.github.io/ecma262/#sec-break-statement + Parser.prototype.parseBreakStatement = function () { + var node = this.createNode(); + this.expectKeyword('break'); + var label = null; + if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) { + var id = this.parseVariableIdentifier(); + var key = '$' + id.name; + if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) { + this.throwError(messages_1.Messages.UnknownLabel, id.name); + } + label = id; + } + this.consumeSemicolon(); + if (label === null && !this.context.inIteration && !this.context.inSwitch) { + this.throwError(messages_1.Messages.IllegalBreak); + } + return this.finalize(node, new Node.BreakStatement(label)); + }; + // https://tc39.github.io/ecma262/#sec-return-statement + Parser.prototype.parseReturnStatement = function () { + if (!this.context.inFunctionBody) { + this.tolerateError(messages_1.Messages.IllegalReturn); + } + var node = this.createNode(); + this.expectKeyword('return'); + var hasArgument = (!this.match(';') && !this.match('}') && + !this.hasLineTerminator && this.lookahead.type !== 2 /* EOF */) || + this.lookahead.type === 8 /* StringLiteral */ || + this.lookahead.type === 10 /* Template */; + var argument = hasArgument ? this.parseExpression() : null; + this.consumeSemicolon(); + return this.finalize(node, new Node.ReturnStatement(argument)); + }; + // https://tc39.github.io/ecma262/#sec-with-statement + Parser.prototype.parseWithStatement = function () { + if (this.context.strict) { + this.tolerateError(messages_1.Messages.StrictModeWith); + } + var node = this.createNode(); + var body; + this.expectKeyword('with'); + this.expect('('); + var object = this.parseExpression(); + if (!this.match(')') && this.config.tolerant) { + this.tolerateUnexpectedToken(this.nextToken()); + body = this.finalize(this.createNode(), new Node.EmptyStatement()); + } + else { + this.expect(')'); + body = this.parseStatement(); + } + return this.finalize(node, new Node.WithStatement(object, body)); + }; + // https://tc39.github.io/ecma262/#sec-switch-statement + Parser.prototype.parseSwitchCase = function () { + var node = this.createNode(); + var test; + if (this.matchKeyword('default')) { + this.nextToken(); + test = null; + } + else { + this.expectKeyword('case'); + test = this.parseExpression(); + } + this.expect(':'); + var consequent = []; + while (true) { + if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) { + break; + } + consequent.push(this.parseStatementListItem()); + } + return this.finalize(node, new Node.SwitchCase(test, consequent)); + }; + Parser.prototype.parseSwitchStatement = function () { + var node = this.createNode(); + this.expectKeyword('switch'); + this.expect('('); + var discriminant = this.parseExpression(); + this.expect(')'); + var previousInSwitch = this.context.inSwitch; + this.context.inSwitch = true; + var cases = []; + var defaultFound = false; + this.expect('{'); + while (true) { + if (this.match('}')) { + break; + } + var clause = this.parseSwitchCase(); + if (clause.test === null) { + if (defaultFound) { + this.throwError(messages_1.Messages.MultipleDefaultsInSwitch); + } + defaultFound = true; + } + cases.push(clause); + } + this.expect('}'); + this.context.inSwitch = previousInSwitch; + return this.finalize(node, new Node.SwitchStatement(discriminant, cases)); + }; + // https://tc39.github.io/ecma262/#sec-labelled-statements + Parser.prototype.parseLabelledStatement = function () { + var node = this.createNode(); + var expr = this.parseExpression(); + var statement; + if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) { + this.nextToken(); + var id = expr; + var key = '$' + id.name; + if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) { + this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name); + } + this.context.labelSet[key] = true; + var body = void 0; + if (this.matchKeyword('class')) { + this.tolerateUnexpectedToken(this.lookahead); + body = this.parseClassDeclaration(); + } + else if (this.matchKeyword('function')) { + var token = this.lookahead; + var declaration = this.parseFunctionDeclaration(); + if (this.context.strict) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction); + } + else if (declaration.generator) { + this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext); + } + body = declaration; + } + else { + body = this.parseStatement(); + } + delete this.context.labelSet[key]; + statement = new Node.LabeledStatement(id, body); + } + else { + this.consumeSemicolon(); + statement = new Node.ExpressionStatement(expr); + } + return this.finalize(node, statement); + }; + // https://tc39.github.io/ecma262/#sec-throw-statement + Parser.prototype.parseThrowStatement = function () { + var node = this.createNode(); + this.expectKeyword('throw'); + if (this.hasLineTerminator) { + this.throwError(messages_1.Messages.NewlineAfterThrow); + } + var argument = this.parseExpression(); + this.consumeSemicolon(); + return this.finalize(node, new Node.ThrowStatement(argument)); + }; + // https://tc39.github.io/ecma262/#sec-try-statement + Parser.prototype.parseCatchClause = function () { + var node = this.createNode(); + this.expectKeyword('catch'); + this.expect('('); + if (this.match(')')) { + this.throwUnexpectedToken(this.lookahead); + } + var params = []; + var param = this.parsePattern(params); + var paramMap = {}; + for (var i = 0; i < params.length; i++) { + var key = '$' + params[i].value; + if (Object.prototype.hasOwnProperty.call(paramMap, key)) { + this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value); + } + paramMap[key] = true; + } + if (this.context.strict && param.type === syntax_1.Syntax.Identifier) { + if (this.scanner.isRestrictedWord(param.name)) { + this.tolerateError(messages_1.Messages.StrictCatchVariable); + } + } + this.expect(')'); + var body = this.parseBlock(); + return this.finalize(node, new Node.CatchClause(param, body)); + }; + Parser.prototype.parseFinallyClause = function () { + this.expectKeyword('finally'); + return this.parseBlock(); + }; + Parser.prototype.parseTryStatement = function () { + var node = this.createNode(); + this.expectKeyword('try'); + var block = this.parseBlock(); + var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null; + var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null; + if (!handler && !finalizer) { + this.throwError(messages_1.Messages.NoCatchOrFinally); + } + return this.finalize(node, new Node.TryStatement(block, handler, finalizer)); + }; + // https://tc39.github.io/ecma262/#sec-debugger-statement + Parser.prototype.parseDebuggerStatement = function () { + var node = this.createNode(); + this.expectKeyword('debugger'); + this.consumeSemicolon(); + return this.finalize(node, new Node.DebuggerStatement()); + }; + // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations + Parser.prototype.parseStatement = function () { + var statement; + switch (this.lookahead.type) { + case 1 /* BooleanLiteral */: + case 5 /* NullLiteral */: + case 6 /* NumericLiteral */: + case 8 /* StringLiteral */: + case 10 /* Template */: + case 9 /* RegularExpression */: + statement = this.parseExpressionStatement(); + break; + case 7 /* Punctuator */: + var value = this.lookahead.value; + if (value === '{') { + statement = this.parseBlock(); + } + else if (value === '(') { + statement = this.parseExpressionStatement(); + } + else if (value === ';') { + statement = this.parseEmptyStatement(); + } + else { + statement = this.parseExpressionStatement(); + } + break; + case 3 /* Identifier */: + statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement(); + break; + case 4 /* Keyword */: + switch (this.lookahead.value) { + case 'break': + statement = this.parseBreakStatement(); + break; + case 'continue': + statement = this.parseContinueStatement(); + break; + case 'debugger': + statement = this.parseDebuggerStatement(); + break; + case 'do': + statement = this.parseDoWhileStatement(); + break; + case 'for': + statement = this.parseForStatement(); + break; + case 'function': + statement = this.parseFunctionDeclaration(); + break; + case 'if': + statement = this.parseIfStatement(); + break; + case 'return': + statement = this.parseReturnStatement(); + break; + case 'switch': + statement = this.parseSwitchStatement(); + break; + case 'throw': + statement = this.parseThrowStatement(); + break; + case 'try': + statement = this.parseTryStatement(); + break; + case 'var': + statement = this.parseVariableStatement(); + break; + case 'while': + statement = this.parseWhileStatement(); + break; + case 'with': + statement = this.parseWithStatement(); + break; + default: + statement = this.parseExpressionStatement(); + break; + } + break; + default: + statement = this.throwUnexpectedToken(this.lookahead); + } + return statement; + }; + // https://tc39.github.io/ecma262/#sec-function-definitions + Parser.prototype.parseFunctionSourceElements = function () { + var node = this.createNode(); + this.expect('{'); + var body = this.parseDirectivePrologues(); + var previousLabelSet = this.context.labelSet; + var previousInIteration = this.context.inIteration; + var previousInSwitch = this.context.inSwitch; + var previousInFunctionBody = this.context.inFunctionBody; + this.context.labelSet = {}; + this.context.inIteration = false; + this.context.inSwitch = false; + this.context.inFunctionBody = true; + while (this.lookahead.type !== 2 /* EOF */) { + if (this.match('}')) { + break; + } + body.push(this.parseStatementListItem()); + } + this.expect('}'); + this.context.labelSet = previousLabelSet; + this.context.inIteration = previousInIteration; + this.context.inSwitch = previousInSwitch; + this.context.inFunctionBody = previousInFunctionBody; + return this.finalize(node, new Node.BlockStatement(body)); + }; + Parser.prototype.validateParam = function (options, param, name) { + var key = '$' + name; + if (this.context.strict) { + if (this.scanner.isRestrictedWord(name)) { + options.stricted = param; + options.message = messages_1.Messages.StrictParamName; + } + if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) { + options.stricted = param; + options.message = messages_1.Messages.StrictParamDupe; + } + } + else if (!options.firstRestricted) { + if (this.scanner.isRestrictedWord(name)) { + options.firstRestricted = param; + options.message = messages_1.Messages.StrictParamName; + } + else if (this.scanner.isStrictModeReservedWord(name)) { + options.firstRestricted = param; + options.message = messages_1.Messages.StrictReservedWord; + } + else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) { + options.stricted = param; + options.message = messages_1.Messages.StrictParamDupe; + } + } + /* istanbul ignore next */ + if (typeof Object.defineProperty === 'function') { + Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true }); + } + else { + options.paramSet[key] = true; + } + }; + Parser.prototype.parseRestElement = function (params) { + var node = this.createNode(); + this.expect('...'); + var arg = this.parsePattern(params); + if (this.match('=')) { + this.throwError(messages_1.Messages.DefaultRestParameter); + } + if (!this.match(')')) { + this.throwError(messages_1.Messages.ParameterAfterRestParameter); + } + return this.finalize(node, new Node.RestElement(arg)); + }; + Parser.prototype.parseFormalParameter = function (options) { + var params = []; + var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params); + for (var i = 0; i < params.length; i++) { + this.validateParam(options, params[i], params[i].value); + } + options.simple = options.simple && (param instanceof Node.Identifier); + options.params.push(param); + }; + Parser.prototype.parseFormalParameters = function (firstRestricted) { + var options; + options = { + simple: true, + params: [], + firstRestricted: firstRestricted + }; + this.expect('('); + if (!this.match(')')) { + options.paramSet = {}; + while (this.lookahead.type !== 2 /* EOF */) { + this.parseFormalParameter(options); + if (this.match(')')) { + break; + } + this.expect(','); + if (this.match(')')) { + break; + } + } + } + this.expect(')'); + return { + simple: options.simple, + params: options.params, + stricted: options.stricted, + firstRestricted: options.firstRestricted, + message: options.message + }; + }; + Parser.prototype.matchAsyncFunction = function () { + var match = this.matchContextualKeyword('async'); + if (match) { + var state = this.scanner.saveState(); + this.scanner.scanComments(); + var next = this.scanner.lex(); + this.scanner.restoreState(state); + match = (state.lineNumber === next.lineNumber) && (next.type === 4 /* Keyword */) && (next.value === 'function'); + } + return match; + }; + Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) { + var node = this.createNode(); + var isAsync = this.matchContextualKeyword('async'); + if (isAsync) { + this.nextToken(); + } + this.expectKeyword('function'); + var isGenerator = isAsync ? false : this.match('*'); + if (isGenerator) { + this.nextToken(); + } + var message; + var id = null; + var firstRestricted = null; + if (!identifierIsOptional || !this.match('(')) { + var token = this.lookahead; + id = this.parseVariableIdentifier(); + if (this.context.strict) { + if (this.scanner.isRestrictedWord(token.value)) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName); + } + } + else { + if (this.scanner.isRestrictedWord(token.value)) { + firstRestricted = token; + message = messages_1.Messages.StrictFunctionName; + } + else if (this.scanner.isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = messages_1.Messages.StrictReservedWord; + } + } + } + var previousAllowAwait = this.context.await; + var previousAllowYield = this.context.allowYield; + this.context.await = isAsync; + this.context.allowYield = !isGenerator; + var formalParameters = this.parseFormalParameters(firstRestricted); + var params = formalParameters.params; + var stricted = formalParameters.stricted; + firstRestricted = formalParameters.firstRestricted; + if (formalParameters.message) { + message = formalParameters.message; + } + var previousStrict = this.context.strict; + var previousAllowStrictDirective = this.context.allowStrictDirective; + this.context.allowStrictDirective = formalParameters.simple; + var body = this.parseFunctionSourceElements(); + if (this.context.strict && firstRestricted) { + this.throwUnexpectedToken(firstRestricted, message); + } + if (this.context.strict && stricted) { + this.tolerateUnexpectedToken(stricted, message); + } + this.context.strict = previousStrict; + this.context.allowStrictDirective = previousAllowStrictDirective; + this.context.await = previousAllowAwait; + this.context.allowYield = previousAllowYield; + return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) : + this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator)); + }; + Parser.prototype.parseFunctionExpression = function () { + var node = this.createNode(); + var isAsync = this.matchContextualKeyword('async'); + if (isAsync) { + this.nextToken(); + } + this.expectKeyword('function'); + var isGenerator = isAsync ? false : this.match('*'); + if (isGenerator) { + this.nextToken(); + } + var message; + var id = null; + var firstRestricted; + var previousAllowAwait = this.context.await; + var previousAllowYield = this.context.allowYield; + this.context.await = isAsync; + this.context.allowYield = !isGenerator; + if (!this.match('(')) { + var token = this.lookahead; + id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier(); + if (this.context.strict) { + if (this.scanner.isRestrictedWord(token.value)) { + this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName); + } + } + else { + if (this.scanner.isRestrictedWord(token.value)) { + firstRestricted = token; + message = messages_1.Messages.StrictFunctionName; + } + else if (this.scanner.isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = messages_1.Messages.StrictReservedWord; + } + } + } + var formalParameters = this.parseFormalParameters(firstRestricted); + var params = formalParameters.params; + var stricted = formalParameters.stricted; + firstRestricted = formalParameters.firstRestricted; + if (formalParameters.message) { + message = formalParameters.message; + } + var previousStrict = this.context.strict; + var previousAllowStrictDirective = this.context.allowStrictDirective; + this.context.allowStrictDirective = formalParameters.simple; + var body = this.parseFunctionSourceElements(); + if (this.context.strict && firstRestricted) { + this.throwUnexpectedToken(firstRestricted, message); + } + if (this.context.strict && stricted) { + this.tolerateUnexpectedToken(stricted, message); + } + this.context.strict = previousStrict; + this.context.allowStrictDirective = previousAllowStrictDirective; + this.context.await = previousAllowAwait; + this.context.allowYield = previousAllowYield; + return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) : + this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator)); + }; + // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive + Parser.prototype.parseDirective = function () { + var token = this.lookahead; + var node = this.createNode(); + var expr = this.parseExpression(); + var directive = (expr.type === syntax_1.Syntax.Literal) ? this.getTokenRaw(token).slice(1, -1) : null; + this.consumeSemicolon(); + return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr)); + }; + Parser.prototype.parseDirectivePrologues = function () { + var firstRestricted = null; + var body = []; + while (true) { + var token = this.lookahead; + if (token.type !== 8 /* StringLiteral */) { + break; + } + var statement = this.parseDirective(); + body.push(statement); + var directive = statement.directive; + if (typeof directive !== 'string') { + break; + } + if (directive === 'use strict') { + this.context.strict = true; + if (firstRestricted) { + this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral); + } + if (!this.context.allowStrictDirective) { + this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective); + } + } + else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } + return body; + }; + // https://tc39.github.io/ecma262/#sec-method-definitions + Parser.prototype.qualifiedPropertyName = function (token) { + switch (token.type) { + case 3 /* Identifier */: + case 8 /* StringLiteral */: + case 1 /* BooleanLiteral */: + case 5 /* NullLiteral */: + case 6 /* NumericLiteral */: + case 4 /* Keyword */: + return true; + case 7 /* Punctuator */: + return token.value === '['; + default: + break; + } + return false; + }; + Parser.prototype.parseGetterMethod = function () { + var node = this.createNode(); + var isGenerator = false; + var previousAllowYield = this.context.allowYield; + this.context.allowYield = !isGenerator; + var formalParameters = this.parseFormalParameters(); + if (formalParameters.params.length > 0) { + this.tolerateError(messages_1.Messages.BadGetterArity); + } + var method = this.parsePropertyMethod(formalParameters); + this.context.allowYield = previousAllowYield; + return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator)); + }; + Parser.prototype.parseSetterMethod = function () { + var node = this.createNode(); + var isGenerator = false; + var previousAllowYield = this.context.allowYield; + this.context.allowYield = !isGenerator; + var formalParameters = this.parseFormalParameters(); + if (formalParameters.params.length !== 1) { + this.tolerateError(messages_1.Messages.BadSetterArity); + } + else if (formalParameters.params[0] instanceof Node.RestElement) { + this.tolerateError(messages_1.Messages.BadSetterRestParameter); + } + var method = this.parsePropertyMethod(formalParameters); + this.context.allowYield = previousAllowYield; + return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator)); + }; + Parser.prototype.parseGeneratorMethod = function () { + var node = this.createNode(); + var isGenerator = true; + var previousAllowYield = this.context.allowYield; + this.context.allowYield = true; + var params = this.parseFormalParameters(); + this.context.allowYield = false; + var method = this.parsePropertyMethod(params); + this.context.allowYield = previousAllowYield; + return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator)); + }; + // https://tc39.github.io/ecma262/#sec-generator-function-definitions + Parser.prototype.isStartOfExpression = function () { + var start = true; + var value = this.lookahead.value; + switch (this.lookahead.type) { + case 7 /* Punctuator */: + start = (value === '[') || (value === '(') || (value === '{') || + (value === '+') || (value === '-') || + (value === '!') || (value === '~') || + (value === '++') || (value === '--') || + (value === '/') || (value === '/='); // regular expression literal + break; + case 4 /* Keyword */: + start = (value === 'class') || (value === 'delete') || + (value === 'function') || (value === 'let') || (value === 'new') || + (value === 'super') || (value === 'this') || (value === 'typeof') || + (value === 'void') || (value === 'yield'); + break; + default: + break; + } + return start; + }; + Parser.prototype.parseYieldExpression = function () { + var node = this.createNode(); + this.expectKeyword('yield'); + var argument = null; + var delegate = false; + if (!this.hasLineTerminator) { + var previousAllowYield = this.context.allowYield; + this.context.allowYield = false; + delegate = this.match('*'); + if (delegate) { + this.nextToken(); + argument = this.parseAssignmentExpression(); + } + else if (this.isStartOfExpression()) { + argument = this.parseAssignmentExpression(); + } + this.context.allowYield = previousAllowYield; + } + return this.finalize(node, new Node.YieldExpression(argument, delegate)); + }; + // https://tc39.github.io/ecma262/#sec-class-definitions + Parser.prototype.parseClassElement = function (hasConstructor) { + var token = this.lookahead; + var node = this.createNode(); + var kind = ''; + var key = null; + var value = null; + var computed = false; + var method = false; + var isStatic = false; + var isAsync = false; + if (this.match('*')) { + this.nextToken(); + } + else { + computed = this.match('['); + key = this.parseObjectPropertyKey(); + var id = key; + if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) { + token = this.lookahead; + isStatic = true; + computed = this.match('['); + if (this.match('*')) { + this.nextToken(); + } + else { + key = this.parseObjectPropertyKey(); + } + } + if ((token.type === 3 /* Identifier */) && !this.hasLineTerminator && (token.value === 'async')) { + var punctuator = this.lookahead.value; + if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') { + isAsync = true; + token = this.lookahead; + key = this.parseObjectPropertyKey(); + if (token.type === 3 /* Identifier */ && token.value === 'constructor') { + this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync); + } + } + } + } + var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead); + if (token.type === 3 /* Identifier */) { + if (token.value === 'get' && lookaheadPropertyKey) { + kind = 'get'; + computed = this.match('['); + key = this.parseObjectPropertyKey(); + this.context.allowYield = false; + value = this.parseGetterMethod(); + } + else if (token.value === 'set' && lookaheadPropertyKey) { + kind = 'set'; + computed = this.match('['); + key = this.parseObjectPropertyKey(); + value = this.parseSetterMethod(); + } + } + else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) { + kind = 'init'; + computed = this.match('['); + key = this.parseObjectPropertyKey(); + value = this.parseGeneratorMethod(); + method = true; + } + if (!kind && key && this.match('(')) { + kind = 'init'; + value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction(); + method = true; + } + if (!kind) { + this.throwUnexpectedToken(this.lookahead); + } + if (kind === 'init') { + kind = 'method'; + } + if (!computed) { + if (isStatic && this.isPropertyKey(key, 'prototype')) { + this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype); + } + if (!isStatic && this.isPropertyKey(key, 'constructor')) { + if (kind !== 'method' || !method || (value && value.generator)) { + this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod); + } + if (hasConstructor.value) { + this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor); + } + else { + hasConstructor.value = true; + } + kind = 'constructor'; + } + } + return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic)); + }; + Parser.prototype.parseClassElementList = function () { + var body = []; + var hasConstructor = { value: false }; + this.expect('{'); + while (!this.match('}')) { + if (this.match(';')) { + this.nextToken(); + } + else { + body.push(this.parseClassElement(hasConstructor)); + } + } + this.expect('}'); + return body; + }; + Parser.prototype.parseClassBody = function () { + var node = this.createNode(); + var elementList = this.parseClassElementList(); + return this.finalize(node, new Node.ClassBody(elementList)); + }; + Parser.prototype.parseClassDeclaration = function (identifierIsOptional) { + var node = this.createNode(); + var previousStrict = this.context.strict; + this.context.strict = true; + this.expectKeyword('class'); + var id = (identifierIsOptional && (this.lookahead.type !== 3 /* Identifier */)) ? null : this.parseVariableIdentifier(); + var superClass = null; + if (this.matchKeyword('extends')) { + this.nextToken(); + superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall); + } + var classBody = this.parseClassBody(); + this.context.strict = previousStrict; + return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody)); + }; + Parser.prototype.parseClassExpression = function () { + var node = this.createNode(); + var previousStrict = this.context.strict; + this.context.strict = true; + this.expectKeyword('class'); + var id = (this.lookahead.type === 3 /* Identifier */) ? this.parseVariableIdentifier() : null; + var superClass = null; + if (this.matchKeyword('extends')) { + this.nextToken(); + superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall); + } + var classBody = this.parseClassBody(); + this.context.strict = previousStrict; + return this.finalize(node, new Node.ClassExpression(id, superClass, classBody)); + }; + // https://tc39.github.io/ecma262/#sec-scripts + // https://tc39.github.io/ecma262/#sec-modules + Parser.prototype.parseModule = function () { + this.context.strict = true; + this.context.isModule = true; + this.scanner.isModule = true; + var node = this.createNode(); + var body = this.parseDirectivePrologues(); + while (this.lookahead.type !== 2 /* EOF */) { + body.push(this.parseStatementListItem()); + } + return this.finalize(node, new Node.Module(body)); + }; + Parser.prototype.parseScript = function () { + var node = this.createNode(); + var body = this.parseDirectivePrologues(); + while (this.lookahead.type !== 2 /* EOF */) { + body.push(this.parseStatementListItem()); + } + return this.finalize(node, new Node.Script(body)); + }; + // https://tc39.github.io/ecma262/#sec-imports + Parser.prototype.parseModuleSpecifier = function () { + var node = this.createNode(); + if (this.lookahead.type !== 8 /* StringLiteral */) { + this.throwError(messages_1.Messages.InvalidModuleSpecifier); + } + var token = this.nextToken(); + var raw = this.getTokenRaw(token); + return this.finalize(node, new Node.Literal(token.value, raw)); + }; + // import {} ...; + Parser.prototype.parseImportSpecifier = function () { + var node = this.createNode(); + var imported; + var local; + if (this.lookahead.type === 3 /* Identifier */) { + imported = this.parseVariableIdentifier(); + local = imported; + if (this.matchContextualKeyword('as')) { + this.nextToken(); + local = this.parseVariableIdentifier(); + } + } + else { + imported = this.parseIdentifierName(); + local = imported; + if (this.matchContextualKeyword('as')) { + this.nextToken(); + local = this.parseVariableIdentifier(); + } + else { + this.throwUnexpectedToken(this.nextToken()); + } + } + return this.finalize(node, new Node.ImportSpecifier(local, imported)); + }; + // {foo, bar as bas} + Parser.prototype.parseNamedImports = function () { + this.expect('{'); + var specifiers = []; + while (!this.match('}')) { + specifiers.push(this.parseImportSpecifier()); + if (!this.match('}')) { + this.expect(','); + } + } + this.expect('}'); + return specifiers; + }; + // import ...; + Parser.prototype.parseImportDefaultSpecifier = function () { + var node = this.createNode(); + var local = this.parseIdentifierName(); + return this.finalize(node, new Node.ImportDefaultSpecifier(local)); + }; + // import <* as foo> ...; + Parser.prototype.parseImportNamespaceSpecifier = function () { + var node = this.createNode(); + this.expect('*'); + if (!this.matchContextualKeyword('as')) { + this.throwError(messages_1.Messages.NoAsAfterImportNamespace); + } + this.nextToken(); + var local = this.parseIdentifierName(); + return this.finalize(node, new Node.ImportNamespaceSpecifier(local)); + }; + Parser.prototype.parseImportDeclaration = function () { + if (this.context.inFunctionBody) { + this.throwError(messages_1.Messages.IllegalImportDeclaration); + } + var node = this.createNode(); + this.expectKeyword('import'); + var src; + var specifiers = []; + if (this.lookahead.type === 8 /* StringLiteral */) { + // import 'foo'; + src = this.parseModuleSpecifier(); + } + else { + if (this.match('{')) { + // import {bar} + specifiers = specifiers.concat(this.parseNamedImports()); + } + else if (this.match('*')) { + // import * as foo + specifiers.push(this.parseImportNamespaceSpecifier()); + } + else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) { + // import foo + specifiers.push(this.parseImportDefaultSpecifier()); + if (this.match(',')) { + this.nextToken(); + if (this.match('*')) { + // import foo, * as foo + specifiers.push(this.parseImportNamespaceSpecifier()); + } + else if (this.match('{')) { + // import foo, {bar} + specifiers = specifiers.concat(this.parseNamedImports()); + } + else { + this.throwUnexpectedToken(this.lookahead); + } + } + } + else { + this.throwUnexpectedToken(this.nextToken()); + } + if (!this.matchContextualKeyword('from')) { + var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause; + this.throwError(message, this.lookahead.value); + } + this.nextToken(); + src = this.parseModuleSpecifier(); + } + this.consumeSemicolon(); + return this.finalize(node, new Node.ImportDeclaration(specifiers, src)); + }; + // https://tc39.github.io/ecma262/#sec-exports + Parser.prototype.parseExportSpecifier = function () { + var node = this.createNode(); + var local = this.parseIdentifierName(); + var exported = local; + if (this.matchContextualKeyword('as')) { + this.nextToken(); + exported = this.parseIdentifierName(); + } + return this.finalize(node, new Node.ExportSpecifier(local, exported)); + }; + Parser.prototype.parseExportDeclaration = function () { + if (this.context.inFunctionBody) { + this.throwError(messages_1.Messages.IllegalExportDeclaration); + } + var node = this.createNode(); + this.expectKeyword('export'); + var exportDeclaration; + if (this.matchKeyword('default')) { + // export default ... + this.nextToken(); + if (this.matchKeyword('function')) { + // export default function foo () {} + // export default function () {} + var declaration = this.parseFunctionDeclaration(true); + exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration)); + } + else if (this.matchKeyword('class')) { + // export default class foo {} + var declaration = this.parseClassDeclaration(true); + exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration)); + } + else if (this.matchContextualKeyword('async')) { + // export default async function f () {} + // export default async function () {} + // export default async x => x + var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression(); + exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration)); + } + else { + if (this.matchContextualKeyword('from')) { + this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value); + } + // export default {}; + // export default []; + // export default (1 + 2); + var declaration = this.match('{') ? this.parseObjectInitializer() : + this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression(); + this.consumeSemicolon(); + exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration)); + } + } + else if (this.match('*')) { + // export * from 'foo'; + this.nextToken(); + if (!this.matchContextualKeyword('from')) { + var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause; + this.throwError(message, this.lookahead.value); + } + this.nextToken(); + var src = this.parseModuleSpecifier(); + this.consumeSemicolon(); + exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src)); + } + else if (this.lookahead.type === 4 /* Keyword */) { + // export var f = 1; + var declaration = void 0; + switch (this.lookahead.value) { + case 'let': + case 'const': + declaration = this.parseLexicalDeclaration({ inFor: false }); + break; + case 'var': + case 'class': + case 'function': + declaration = this.parseStatementListItem(); + break; + default: + this.throwUnexpectedToken(this.lookahead); + } + exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null)); + } + else if (this.matchAsyncFunction()) { + var declaration = this.parseFunctionDeclaration(); + exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null)); + } + else { + var specifiers = []; + var source = null; + var isExportFromIdentifier = false; + this.expect('{'); + while (!this.match('}')) { + isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default'); + specifiers.push(this.parseExportSpecifier()); + if (!this.match('}')) { + this.expect(','); + } + } + this.expect('}'); + if (this.matchContextualKeyword('from')) { + // export {default} from 'foo'; + // export {foo} from 'foo'; + this.nextToken(); + source = this.parseModuleSpecifier(); + this.consumeSemicolon(); + } + else if (isExportFromIdentifier) { + // export {default}; // missing fromClause + var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause; + this.throwError(message, this.lookahead.value); + } + else { + // export {foo}; + this.consumeSemicolon(); + } + exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source)); + } + return exportDeclaration; + }; + return Parser; + }()); + exports.Parser = Parser; + + +/***/ }, +/* 9 */ +/***/ function(module, exports) { + + "use strict"; + // Ensure the condition is true, otherwise throw an error. + // This is only to have a better contract semantic, i.e. another safety net + // to catch a logic error. The condition shall be fulfilled in normal case. + // Do NOT use this to enforce a certain condition on any user input. + Object.defineProperty(exports, "__esModule", { value: true }); + function assert(condition, message) { + /* istanbul ignore if */ + if (!condition) { + throw new Error('ASSERT: ' + message); + } + } + exports.assert = assert; + + +/***/ }, +/* 10 */ +/***/ function(module, exports) { + + "use strict"; + /* tslint:disable:max-classes-per-file */ + Object.defineProperty(exports, "__esModule", { value: true }); + var ErrorHandler = (function () { + function ErrorHandler() { + this.errors = []; + this.tolerant = false; + } + ErrorHandler.prototype.recordError = function (error) { + this.errors.push(error); + }; + ErrorHandler.prototype.tolerate = function (error) { + if (this.tolerant) { + this.recordError(error); + } + else { + throw error; + } + }; + ErrorHandler.prototype.constructError = function (msg, column) { + var error = new Error(msg); + try { + throw error; + } + catch (base) { + /* istanbul ignore else */ + if (Object.create && Object.defineProperty) { + error = Object.create(base); + Object.defineProperty(error, 'column', { value: column }); + } + } + /* istanbul ignore next */ + return error; + }; + ErrorHandler.prototype.createError = function (index, line, col, description) { + var msg = 'Line ' + line + ': ' + description; + var error = this.constructError(msg, col); + error.index = index; + error.lineNumber = line; + error.description = description; + return error; + }; + ErrorHandler.prototype.throwError = function (index, line, col, description) { + throw this.createError(index, line, col, description); + }; + ErrorHandler.prototype.tolerateError = function (index, line, col, description) { + var error = this.createError(index, line, col, description); + if (this.tolerant) { + this.recordError(error); + } + else { + throw error; + } + }; + return ErrorHandler; + }()); + exports.ErrorHandler = ErrorHandler; + + +/***/ }, +/* 11 */ +/***/ function(module, exports) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + // Error messages should be identical to V8. + exports.Messages = { + BadGetterArity: 'Getter must not have any formal parameters', + BadSetterArity: 'Setter must have exactly one formal parameter', + BadSetterRestParameter: 'Setter function argument must not be a rest parameter', + ConstructorIsAsync: 'Class constructor may not be an async method', + ConstructorSpecialMethod: 'Class constructor may not be an accessor', + DeclarationMissingInitializer: 'Missing initializer in %0 declaration', + DefaultRestParameter: 'Unexpected token =', + DuplicateBinding: 'Duplicate binding %0', + DuplicateConstructor: 'A class may only have one constructor', + DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals', + ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer', + GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts', + IllegalBreak: 'Illegal break statement', + IllegalContinue: 'Illegal continue statement', + IllegalExportDeclaration: 'Unexpected token', + IllegalImportDeclaration: 'Unexpected token', + IllegalLanguageModeDirective: 'Illegal \'use strict\' directive in function with non-simple parameter list', + IllegalReturn: 'Illegal return statement', + InvalidEscapedReservedWord: 'Keyword must not contain escaped characters', + InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence', + InvalidLHSInAssignment: 'Invalid left-hand side in assignment', + InvalidLHSInForIn: 'Invalid left-hand side in for-in', + InvalidLHSInForLoop: 'Invalid left-hand side in for-loop', + InvalidModuleSpecifier: 'Unexpected token', + InvalidRegExp: 'Invalid regular expression', + LetInLexicalBinding: 'let is disallowed as a lexically bound name', + MissingFromClause: 'Unexpected token', + MultipleDefaultsInSwitch: 'More than one default clause in switch statement', + NewlineAfterThrow: 'Illegal newline after throw', + NoAsAfterImportNamespace: 'Unexpected token', + NoCatchOrFinally: 'Missing catch or finally after try', + ParameterAfterRestParameter: 'Rest parameter must be last formal parameter', + Redeclaration: '%0 \'%1\' has already been declared', + StaticPrototype: 'Classes may not have static property named prototype', + StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', + StrictDelete: 'Delete of an unqualified identifier in strict mode.', + StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block', + StrictFunctionName: 'Function name may not be eval or arguments in strict mode', + StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', + StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', + StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', + StrictModeWith: 'Strict mode code may not include a with statement', + StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', + StrictParamDupe: 'Strict mode function may not have duplicate parameter names', + StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', + StrictReservedWord: 'Use of future reserved word in strict mode', + StrictVarName: 'Variable name may not be eval or arguments in strict mode', + TemplateOctalLiteral: 'Octal literals are not allowed in template strings.', + UnexpectedEOS: 'Unexpected end of input', + UnexpectedIdentifier: 'Unexpected identifier', + UnexpectedNumber: 'Unexpected number', + UnexpectedReserved: 'Unexpected reserved word', + UnexpectedString: 'Unexpected string', + UnexpectedTemplate: 'Unexpected quasi %0', + UnexpectedToken: 'Unexpected token %0', + UnexpectedTokenIllegal: 'Unexpected token ILLEGAL', + UnknownLabel: 'Undefined label \'%0\'', + UnterminatedRegExp: 'Invalid regular expression: missing /' + }; + + +/***/ }, +/* 12 */ +/***/ function(module, exports, __nested_webpack_require_226595__) { + + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var assert_1 = __nested_webpack_require_226595__(9); + var character_1 = __nested_webpack_require_226595__(4); + var messages_1 = __nested_webpack_require_226595__(11); + function hexValue(ch) { + return '0123456789abcdef'.indexOf(ch.toLowerCase()); + } + function octalValue(ch) { + return '01234567'.indexOf(ch); + } + var Scanner = (function () { + function Scanner(code, handler) { + this.source = code; + this.errorHandler = handler; + this.trackComment = false; + this.isModule = false; + this.length = code.length; + this.index = 0; + this.lineNumber = (code.length > 0) ? 1 : 0; + this.lineStart = 0; + this.curlyStack = []; + } + Scanner.prototype.saveState = function () { + return { + index: this.index, + lineNumber: this.lineNumber, + lineStart: this.lineStart + }; + }; + Scanner.prototype.restoreState = function (state) { + this.index = state.index; + this.lineNumber = state.lineNumber; + this.lineStart = state.lineStart; + }; + Scanner.prototype.eof = function () { + return this.index >= this.length; + }; + Scanner.prototype.throwUnexpectedToken = function (message) { + if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; } + return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message); + }; + Scanner.prototype.tolerateUnexpectedToken = function (message) { + if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; } + this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message); + }; + // https://tc39.github.io/ecma262/#sec-comments + Scanner.prototype.skipSingleLineComment = function (offset) { + var comments = []; + var start, loc; + if (this.trackComment) { + comments = []; + start = this.index - offset; + loc = { + start: { + line: this.lineNumber, + column: this.index - this.lineStart - offset + }, + end: {} + }; + } + while (!this.eof()) { + var ch = this.source.charCodeAt(this.index); + ++this.index; + if (character_1.Character.isLineTerminator(ch)) { + if (this.trackComment) { + loc.end = { + line: this.lineNumber, + column: this.index - this.lineStart - 1 + }; + var entry = { + multiLine: false, + slice: [start + offset, this.index - 1], + range: [start, this.index - 1], + loc: loc + }; + comments.push(entry); + } + if (ch === 13 && this.source.charCodeAt(this.index) === 10) { + ++this.index; + } + ++this.lineNumber; + this.lineStart = this.index; + return comments; + } + } + if (this.trackComment) { + loc.end = { + line: this.lineNumber, + column: this.index - this.lineStart + }; + var entry = { + multiLine: false, + slice: [start + offset, this.index], + range: [start, this.index], + loc: loc + }; + comments.push(entry); + } + return comments; + }; + Scanner.prototype.skipMultiLineComment = function () { + var comments = []; + var start, loc; + if (this.trackComment) { + comments = []; + start = this.index - 2; + loc = { + start: { + line: this.lineNumber, + column: this.index - this.lineStart - 2 + }, + end: {} + }; + } + while (!this.eof()) { + var ch = this.source.charCodeAt(this.index); + if (character_1.Character.isLineTerminator(ch)) { + if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) { + ++this.index; + } + ++this.lineNumber; + ++this.index; + this.lineStart = this.index; + } + else if (ch === 0x2A) { + // Block comment ends with '*/'. + if (this.source.charCodeAt(this.index + 1) === 0x2F) { + this.index += 2; + if (this.trackComment) { + loc.end = { + line: this.lineNumber, + column: this.index - this.lineStart + }; + var entry = { + multiLine: true, + slice: [start + 2, this.index - 2], + range: [start, this.index], + loc: loc + }; + comments.push(entry); + } + return comments; + } + ++this.index; + } + else { + ++this.index; + } + } + // Ran off the end of the file - the whole thing is a comment + if (this.trackComment) { + loc.end = { + line: this.lineNumber, + column: this.index - this.lineStart + }; + var entry = { + multiLine: true, + slice: [start + 2, this.index], + range: [start, this.index], + loc: loc + }; + comments.push(entry); + } + this.tolerateUnexpectedToken(); + return comments; + }; + Scanner.prototype.scanComments = function () { + var comments; + if (this.trackComment) { + comments = []; + } + var start = (this.index === 0); + while (!this.eof()) { + var ch = this.source.charCodeAt(this.index); + if (character_1.Character.isWhiteSpace(ch)) { + ++this.index; + } + else if (character_1.Character.isLineTerminator(ch)) { + ++this.index; + if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) { + ++this.index; + } + ++this.lineNumber; + this.lineStart = this.index; + start = true; + } + else if (ch === 0x2F) { + ch = this.source.charCodeAt(this.index + 1); + if (ch === 0x2F) { + this.index += 2; + var comment = this.skipSingleLineComment(2); + if (this.trackComment) { + comments = comments.concat(comment); + } + start = true; + } + else if (ch === 0x2A) { + this.index += 2; + var comment = this.skipMultiLineComment(); + if (this.trackComment) { + comments = comments.concat(comment); + } + } + else { + break; + } + } + else if (start && ch === 0x2D) { + // U+003E is '>' + if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) { + // '-->' is a single-line comment + this.index += 3; + var comment = this.skipSingleLineComment(3); + if (this.trackComment) { + comments = comments.concat(comment); + } + } + else { + break; + } + } + else if (ch === 0x3C && !this.isModule) { + if (this.source.slice(this.index + 1, this.index + 4) === '!--') { + this.index += 4; // ` + + +#### `auth-type` + +* Default: "legacy" +* Type: "legacy", "web", "sso", "saml", "oauth", or "webauthn" + +NOTE: auth-type values "sso", "saml", "oauth", and "webauthn" will be +removed in a future version. + +What authentication strategy to use with `login`. + diff --git a/deps/npm/docs/content/commands/npm-audit.md b/deps/npm/docs/content/commands/npm-audit.md index 9d09a4107fdc7d..48e0a3161e8f2c 100644 --- a/deps/npm/docs/content/commands/npm-audit.md +++ b/deps/npm/docs/content/commands/npm-audit.md @@ -11,7 +11,7 @@ description: Run a security audit ```bash -npm audit [fix] +npm audit [fix|signatures] ``` @@ -41,6 +41,58 @@ vulnerability is found. It may be useful in CI environments to include the will cause the command to fail. This option does not filter the report output, it simply changes the command's failure threshold. +### Audit Signatures + +To ensure the integrity of packages you download from the public npm registry, or any registry that supports signatures, you can verify the registry signatures of downloaded packages using the npm CLI. + +Registry signatures can be verified using the following `audit` command: + +```bash +$ npm audit signatures +``` + +The npm CLI supports registry signatures and signing keys provided by any registry if the following conventions are followed: + +1. Signatures are provided in the package's `packument` in each published version within the `dist` object: + +```json +"dist":{ + "..omitted..": "..omitted..", + "signatures": [{ + "keyid": "SHA256:{{SHA256_PUBLIC_KEY}}", + "sig": "a312b9c3cb4a1b693e8ebac5ee1ca9cc01f2661c14391917dcb111517f72370809..." + }] +} +``` + +See this [example](https://registry.npmjs.org/light-cycle/1.4.3) of a signed package from the public npm registry. + +The `sig` is generated using the following template: `${package.name}@${package.version}:${package.dist.integrity}` and the `keyid` has to match one of the public signing keys below. + +2. Public signing keys are provided at `registry-host.tld/-/npm/v1/keys` in the following format: + +``` +{ + "keys": [{ + "expires": null, + "keyid": "SHA256:{{SHA256_PUBLIC_KEY}}", + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "key": "{{B64_PUBLIC_KEY}}" + }] +} +``` + +Keys response: + +- `expires`: null or a simplified extended ISO 8601 format: `YYYY-MM-DDTHH:mm:ss.sssZ` +- `keydid`: sha256 fingerprint of the public key +- `keytype`: only `ecdsa-sha2-nistp256` is currently supported by the npm CLI +- `scheme`: only `ecdsa-sha2-nistp256` is currently supported by the npm CLI +- `key`: base64 encoded public key + +See this example key's response from the public npm registry. + ### Audit Endpoints There are two audit endpoints that npm may use to fetch vulnerability diff --git a/deps/npm/docs/content/commands/npm-bin.md b/deps/npm/docs/content/commands/npm-bin.md index b344ea2fc94159..94b72cfd5c81ce 100644 --- a/deps/npm/docs/content/commands/npm-bin.md +++ b/deps/npm/docs/content/commands/npm-bin.md @@ -34,8 +34,6 @@ Print the folder where npm will install executables. * Default: false * Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. Operates in "global" mode, so that packages are installed into the `prefix` folder instead of the current working directory. See diff --git a/deps/npm/docs/content/commands/npm-cache.md b/deps/npm/docs/content/commands/npm-cache.md index 091e26e8a71828..b5eddd46c05a7d 100644 --- a/deps/npm/docs/content/commands/npm-cache.md +++ b/deps/npm/docs/content/commands/npm-cache.md @@ -11,11 +11,7 @@ description: Manipulates packages cache ```bash -npm cache add -npm cache add -npm cache add -npm cache add -npm cache add @ +npm cache add npm cache clean [] npm cache ls [@] npm cache verify @@ -101,6 +97,7 @@ cache`](/commands/npm-cache) ### See Also +* [package spec](/using-npm/package-spec) * [npm folders](/configuring-npm/folders) * [npm config](/commands/npm-config) * [npmrc](/configuring-npm/npmrc) diff --git a/deps/npm/docs/content/commands/npm-ci.md b/deps/npm/docs/content/commands/npm-ci.md index 3374bf1e25136b..9b8238d05a3b91 100644 --- a/deps/npm/docs/content/commands/npm-ci.md +++ b/deps/npm/docs/content/commands/npm-ci.md @@ -133,7 +133,7 @@ will *not* run any pre- or post-scripts. * Type: null or String The shell to use for scripts run with the `npm exec`, `npm run` and `npm -init ` commands. +init ` commands. diff --git a/deps/npm/docs/content/commands/npm-config.md b/deps/npm/docs/content/commands/npm-config.md index 809e42a1be1cdb..28c6003571de5f 100644 --- a/deps/npm/docs/content/commands/npm-config.md +++ b/deps/npm/docs/content/commands/npm-config.md @@ -124,8 +124,6 @@ Not supported by all npm commands. * Default: false * Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. Operates in "global" mode, so that packages are installed into the `prefix` folder instead of the current working directory. See diff --git a/deps/npm/docs/content/commands/npm-deprecate.md b/deps/npm/docs/content/commands/npm-deprecate.md index 4345120d3744b3..20f65140fc735f 100644 --- a/deps/npm/docs/content/commands/npm-deprecate.md +++ b/deps/npm/docs/content/commands/npm-deprecate.md @@ -11,7 +11,7 @@ description: Deprecate a version of a package ```bash -npm deprecate [@] +npm deprecate ``` @@ -45,8 +45,8 @@ In this case, a version `my-thing@1.0.0-beta.0` will also be deprecated. You must be the package owner to deprecate something. See the `owner` and `adduser` help topics. -To un-deprecate a package, specify an empty string (`""`) for the `message` -argument. Note that you must use double quotes with no space between them to +To un-deprecate a package, specify an empty string (`""`) for the `message` +argument. Note that you must use double quotes with no space between them to format an empty string. ### Configuration @@ -82,6 +82,7 @@ password, npm will prompt on the command line for one. ### See Also +* [package spec](/using-npm/package-spec) * [npm publish](/commands/npm-publish) * [npm registry](/using-npm/registry) * [npm owner](/commands/npm-owner) diff --git a/deps/npm/docs/content/commands/npm-diff.md b/deps/npm/docs/content/commands/npm-diff.md index 7183e4a2b752e3..7dcc8af7c3b4c7 100644 --- a/deps/npm/docs/content/commands/npm-diff.md +++ b/deps/npm/docs/content/commands/npm-diff.md @@ -248,8 +248,6 @@ Treat all files as text in `npm diff`. * Default: false * Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. Operates in "global" mode, so that packages are installed into the `prefix` folder instead of the current working directory. See diff --git a/deps/npm/docs/content/commands/npm-dist-tag.md b/deps/npm/docs/content/commands/npm-dist-tag.md index b9caf1fbe7fa9c..123e67dbf3b235 100644 --- a/deps/npm/docs/content/commands/npm-dist-tag.md +++ b/deps/npm/docs/content/commands/npm-dist-tag.md @@ -11,9 +11,9 @@ description: Modify package distribution tags ```bash -npm dist-tag add @ [] -npm dist-tag rm -npm dist-tag ls [] +npm dist-tag add [] +npm dist-tag rm +npm dist-tag ls [] alias: dist-tags ``` @@ -27,11 +27,11 @@ alias: dist-tags Add, remove, and enumerate distribution tags on a package: -* add: Tags the specified version of the package with the specified tag, or - the `--tag` config if not specified. If you have two-factor - authentication on auth-and-writes then you’ll need to include a one-time - password on the command line with `--otp `, or at the - OTP prompt. +* add: Tags the specified version of the package with the specified tag, + or the `--tag` config if not specified. If you have two-factor + authentication on auth-and-writes then you’ll need to include a + one-time password on the command line with + `--otp `, or at the OTP prompt. * rm: Clear a tag that is no longer in use from the package. If you have two-factor authentication on auth-and-writes then you’ll need to include @@ -168,6 +168,7 @@ This value is not exported to the environment for child processes. ### See Also +* [package spec](/using-npm/package-spec) * [npm publish](/commands/npm-publish) * [npm install](/commands/npm-install) * [npm dedupe](/commands/npm-dedupe) diff --git a/deps/npm/docs/content/commands/npm-explain.md b/deps/npm/docs/content/commands/npm-explain.md index 765221056585d9..5ba2fe8206ba16 100644 --- a/deps/npm/docs/content/commands/npm-explain.md +++ b/deps/npm/docs/content/commands/npm-explain.md @@ -11,7 +11,7 @@ description: Explain installed packages ```bash -npm explain +npm explain alias: why ``` @@ -26,9 +26,10 @@ alias: why This command will print the chain of dependencies causing a given package to be installed in the current project. -Positional arguments can be either folders within `node_modules`, or -`name@version-range` specifiers, which will select the dependency -relationships to explain. +If one or more package specs are provided, then only packages matching +one of the specifiers will have their relationships explained. + +The package spec can also refer to a folder within `./node_modules` For example, running `npm explain glob` within npm's source tree will show: @@ -110,6 +111,7 @@ This value is not exported to the environment for child processes. ### See Also +* [package spec](/using-npm/package-spec) * [npm config](/commands/npm-config) * [npmrc](/configuring-npm/npmrc) * [npm folders](/configuring-npm/folders) diff --git a/deps/npm/docs/content/commands/npm-fund.md b/deps/npm/docs/content/commands/npm-fund.md index 5b96e91ab8ccb9..8db0ce910de967 100644 --- a/deps/npm/docs/content/commands/npm-fund.md +++ b/deps/npm/docs/content/commands/npm-fund.md @@ -11,7 +11,7 @@ description: Retrieve funding information ```bash -npm fund [[<@scope>/]] +npm fund [] ``` @@ -23,22 +23,22 @@ npm fund [[<@scope>/]] This command retrieves information on how to fund the dependencies of a given project. If no package name is provided, it will list all -dependencies that are looking for funding in a tree structure, listing the -type of funding and the url to visit. If a package name is provided then it -tries to open its funding url using the `--browser` config param; if there -are multiple funding sources for the package, the user will be instructed -to pass the `--which` option to disambiguate. +dependencies that are looking for funding in a tree structure, listing +the type of funding and the url to visit. If a package name is provided +then it tries to open its funding url using the `--browser` config +param; if there are multiple funding sources for the package, the user +will be instructed to pass the `--which` option to disambiguate. The list will avoid duplicated entries and will stack all packages that -share the same url as a single entry. Thus, the list does not have the same -shape of the output from `npm ls`. +share the same url as a single entry. Thus, the list does not have the +same shape of the output from `npm ls`. #### Example ### Workspaces support -It's possible to filter the results to only include a single workspace and its -dependencies using the `workspace` config option. +It's possible to filter the results to only include a single workspace +and its dependencies using the `workspace` config option. #### Example: @@ -58,8 +58,8 @@ test-workspaces-fund@1.0.0 `-- bar@2.0.0 ``` -And here is an example of the expected result when filtering only by -a specific workspace `a` in the same project: +And here is an example of the expected result when filtering only by a +specific workspace `a` in the same project: ```bash $ npm fund -w a @@ -156,6 +156,7 @@ If there are multiple funding sources, which 1-indexed source URL to open. ## See Also +* [package spec](/using-npm/package-spec) * [npm install](/commands/npm-install) * [npm docs](/commands/npm-docs) * [npm ls](/commands/npm-ls) diff --git a/deps/npm/docs/content/commands/npm-init.md b/deps/npm/docs/content/commands/npm-init.md index 5a7dd4c97ac60e..cd0be4643e0ead 100644 --- a/deps/npm/docs/content/commands/npm-init.md +++ b/deps/npm/docs/content/commands/npm-init.md @@ -11,9 +11,8 @@ description: Create a package.json file ```bash -npm init [--force|-f|--yes|-y|--scope] +npm init (same as `npx ) npm init <@scope> (same as `npx <@scope>/create`) -npm init [<@scope>/] (same as `npx [<@scope>/]create-`) aliases: create, innit ``` @@ -204,6 +203,39 @@ mistakes, unnecessary performance degradation, and malicious input. If you don't have a clear idea of what you want to do, it is strongly recommended that you do not use this option! + + + +#### `scope` + +* Default: the scope of the current project, if any, or "" +* Type: String + +Associate an operation with a scope for a scoped registry. + +Useful when logging in to or out of a private registry: + +``` +# log in, linking the scope to the custom registry +npm login --scope=@mycorp --registry=https://registry.mycorp.com + +# log out, removing the link and the auth token +npm logout --scope=@mycorp +``` + +This will cause `@mycorp` to be mapped to the registry for future +installation of packages specified according to the pattern +`@mycorp/package`. + +This will also cause `npm init` to create a scoped package. + +``` +# accept all defaults, and create a package named "@foo/whatever", +# instead of just named "whatever" +npm init --scope=@foo --yes +``` + + @@ -253,6 +285,17 @@ This value is not exported to the environment for child processes. +#### `workspaces-update` + +* Default: true +* Type: Boolean + +If set to true, the npm cli will run an update after operations that may +possibly change the workspaces installed to the `node_modules` folder. + + + + #### `include-workspace-root` * Default: false @@ -273,6 +316,7 @@ This value is not exported to the environment for child processes. ### See Also +* [package spec](/using-npm/package-spec) * [init-package-json module](http://npm.im/init-package-json) * [package.json](/configuring-npm/package-json) * [npm version](/commands/npm-version) diff --git a/deps/npm/docs/content/commands/npm-install-ci-test.md b/deps/npm/docs/content/commands/npm-install-ci-test.md index 0d9470acf58b3d..74ed4667e81bfe 100644 --- a/deps/npm/docs/content/commands/npm-install-ci-test.md +++ b/deps/npm/docs/content/commands/npm-install-ci-test.md @@ -79,7 +79,7 @@ will *not* run any pre- or post-scripts. * Type: null or String The shell to use for scripts run with the `npm exec`, `npm run` and `npm -init ` commands. +init ` commands. diff --git a/deps/npm/docs/content/commands/npm-install-test.md b/deps/npm/docs/content/commands/npm-install-test.md index 18e374869d5a60..d27686e731ce16 100644 --- a/deps/npm/docs/content/commands/npm-install-test.md +++ b/deps/npm/docs/content/commands/npm-install-test.md @@ -11,16 +11,7 @@ description: Install package(s) and run tests ```bash -npm install-test [<@scope>/] -npm install-test [<@scope>/]@ -npm install-test [<@scope>/]@ -npm install-test [<@scope>/]@ -npm install-test @npm: -npm install-test -npm install-test -npm install-test -npm install-test -npm install-test / +npm install-test [ ...] alias: it ``` @@ -70,8 +61,6 @@ rather than using npm's default semver range operator. * Default: false * Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. Operates in "global" mode, so that packages are installed into the `prefix` folder instead of the current working directory. See diff --git a/deps/npm/docs/content/commands/npm-install.md b/deps/npm/docs/content/commands/npm-install.md index 318df5780e8dba..7e5544f85e3dda 100644 --- a/deps/npm/docs/content/commands/npm-install.md +++ b/deps/npm/docs/content/commands/npm-install.md @@ -11,16 +11,7 @@ description: Install a package ```bash -npm install [<@scope>/] -npm install [<@scope>/]@ -npm install [<@scope>/]@ -npm install [<@scope>/]@ -npm install @npm: -npm install -npm install -npm install -npm install -npm install / +npm install [ ...] aliases: add, i, in, ins, inst, insta, instal, isnt, isnta, isntal, isntall ``` @@ -460,8 +451,6 @@ rather than using npm's default semver range operator. * Default: false * Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. Operates in "global" mode, so that packages are installed into the `prefix` folder instead of the current working directory. See diff --git a/deps/npm/docs/content/commands/npm-link.md b/deps/npm/docs/content/commands/npm-link.md index 34c67aa3def81d..8c1b422493bd57 100644 --- a/deps/npm/docs/content/commands/npm-link.md +++ b/deps/npm/docs/content/commands/npm-link.md @@ -11,8 +11,7 @@ description: Symlink a package folder ```bash -npm link (in package dir) -npm link [<@scope>/][@] +npm link [] alias: ln ``` @@ -29,11 +28,11 @@ test iteratively without having to continually rebuild. Package linking is a two-step process. -First, `npm link` in a package folder will create a symlink in the global -folder `{prefix}/lib/node_modules/` that links to the package -where the `npm link` command was executed. It will also link any bins in -the package to `{prefix}/bin/{name}`. Note that `npm link` uses the global -prefix (see `npm prefix -g` for its value). +First, `npm link` in a package folder with no arguments will create a +symlink in the global folder `{prefix}/lib/node_modules/` that +links to the package where the `npm link` command was executed. It will +also link any bins in the package to `{prefix}/bin/{name}`. Note that +`npm link` uses the global prefix (see `npm prefix -g` for its value). Next, in some other location, `npm link package-name` will create a symbolic link from globally-installed `package-name` to `node_modules/` of @@ -153,8 +152,6 @@ rather than using npm's default semver range operator. * Default: false * Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. Operates in "global" mode, so that packages are installed into the `prefix` folder instead of the current working directory. See @@ -401,6 +398,7 @@ symlink. This option has no effect on workspaces. ### See Also +* [package spec](/using-npm/package-spec) * [npm developers](/using-npm/developers) * [package.json](/configuring-npm/package-json) * [npm install](/commands/npm-install) diff --git a/deps/npm/docs/content/commands/npm-ls.md b/deps/npm/docs/content/commands/npm-ls.md index 5ad4593bfa2f6a..a97c5168e6e0b4 100644 --- a/deps/npm/docs/content/commands/npm-ls.md +++ b/deps/npm/docs/content/commands/npm-ls.md @@ -11,7 +11,7 @@ description: List installed packages ```bash -npm ls [[<@scope>/] ...] +npm ls alias: list ``` @@ -137,8 +137,6 @@ Output parseable results from commands that write to standard output. For * Default: false * Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. Operates in "global" mode, so that packages are installed into the `prefix` folder instead of the current working directory. See @@ -303,6 +301,7 @@ symlink. This option has no effect on workspaces. ### See Also +* [package spec](/using-npm/package-spec) * [npm explain](/commands/npm-explain) * [npm config](/commands/npm-config) * [npmrc](/configuring-npm/npmrc) diff --git a/deps/npm/docs/content/commands/npm-outdated.md b/deps/npm/docs/content/commands/npm-outdated.md index 1bf2de039c3159..c4e07a0cd36f02 100644 --- a/deps/npm/docs/content/commands/npm-outdated.md +++ b/deps/npm/docs/content/commands/npm-outdated.md @@ -11,7 +11,7 @@ description: Check for outdated packages ```bash -npm outdated [[<@scope>/] ...] +npm outdated [ ...] ``` @@ -150,8 +150,6 @@ Output parseable results from commands that write to standard output. For * Default: false * Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. Operates in "global" mode, so that packages are installed into the `prefix` folder instead of the current working directory. See @@ -194,6 +192,7 @@ This value is not exported to the environment for child processes. ### See Also +* [package spec](/using-npm/package-spec) * [npm update](/commands/npm-update) * [npm dist-tag](/commands/npm-dist-tag) * [npm registry](/using-npm/registry) diff --git a/deps/npm/docs/content/commands/npm-owner.md b/deps/npm/docs/content/commands/npm-owner.md index 72dfe6a22d01b0..ebc29ef6939392 100644 --- a/deps/npm/docs/content/commands/npm-owner.md +++ b/deps/npm/docs/content/commands/npm-owner.md @@ -11,9 +11,9 @@ description: Manage package owners ```bash -npm owner add [<@scope>/] -npm owner rm [<@scope>/] -npm owner ls [<@scope>/] +npm owner add +npm owner rm +npm owner ls alias: author ``` @@ -123,6 +123,7 @@ This value is not exported to the environment for child processes. ### See Also +* [package spec](/using-npm/package-spec) * [npm profile](/commands/npm-profile) * [npm publish](/commands/npm-publish) * [npm registry](/using-npm/registry) diff --git a/deps/npm/docs/content/commands/npm-pack.md b/deps/npm/docs/content/commands/npm-pack.md index fa6c005e9d2287..7921042eae8fe0 100644 --- a/deps/npm/docs/content/commands/npm-pack.md +++ b/deps/npm/docs/content/commands/npm-pack.md @@ -11,7 +11,7 @@ description: Create a tarball from a package ```bash -npm pack [[<@scope>/]...] +npm pack ``` @@ -144,6 +144,7 @@ If no arguments are supplied, then npm packs the current package folder. ### See Also +* [package spec](/using-npm/package-spec) * [npm-packlist package](http://npm.im/npm-packlist) * [npm cache](/commands/npm-cache) * [npm publish](/commands/npm-publish) diff --git a/deps/npm/docs/content/commands/npm-prefix.md b/deps/npm/docs/content/commands/npm-prefix.md index 6f08e43fa8c0c4..39328bcc88a143 100644 --- a/deps/npm/docs/content/commands/npm-prefix.md +++ b/deps/npm/docs/content/commands/npm-prefix.md @@ -51,8 +51,6 @@ npm prefix -g * Default: false * Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. Operates in "global" mode, so that packages are installed into the `prefix` folder instead of the current working directory. See diff --git a/deps/npm/docs/content/commands/npm-publish.md b/deps/npm/docs/content/commands/npm-publish.md index 2995f6bc81551e..536d04988e6849 100644 --- a/deps/npm/docs/content/commands/npm-publish.md +++ b/deps/npm/docs/content/commands/npm-publish.md @@ -11,7 +11,7 @@ description: Publish a package ```bash -npm publish [] +npm publish ``` @@ -23,42 +23,26 @@ npm publish [] Publishes a package to the registry so that it can be installed by name. -By default npm will publish to the public registry. This can be overridden -by specifying a different default registry or using a -[`scope`](/using-npm/scope) in the name (see +By default npm will publish to the public registry. This can be +overridden by specifying a different default registry or using a +[`scope`](/using-npm/scope) in the name, combined with a +scope-configured registry (see [`package.json`](/configuring-npm/package-json)). -* ``: A folder containing a package.json file -* ``: A url or file path to a gzipped tar archive containing a - single folder with a package.json file inside. +A `package` is interpreted the same way as other commands (like +`npm install` and can be: -* `[--tag ]`: Registers the published package with the given tag, such - that `npm install @` will install this version. By default, - `npm publish` updates and `npm install` installs the `latest` tag. See - [`npm-dist-tag`](npm-dist-tag) for details about tags. - -* `[--access ]`: Tells the registry whether this package - should be published as public or restricted. Only applies to scoped - packages, which default to `restricted`. If you don't have a paid - account, you must publish with `--access public` to publish scoped - packages. - -* `[--otp ]`: If you have two-factor authentication enabled in - `auth-and-writes` mode then you can provide a code from your - authenticator with this. If you don't include this and you're running - from a TTY then you'll be prompted. - -* `[--dry-run]`: As of `npm@6`, does everything publish would do except - actually publishing to the registry. Reports the details of what would - have been published. - -* `[--workspaces]`: Enables workspace context while publishing. All - workspace packages will be published. - -* `[--workspace]`: Enables workspaces context and limits results to only - those specified by this config item. Only the packages in the - workspaces given will be published. +* a) a folder containing a program described by a + [`package.json`](/configuring-npm/package-json) file +* b) a gzipped tarball containing (a) +* c) a url that resolves to (b) +* d) a `@` that is published on the registry (see + [`registry`](/using-npm/registry)) with (c) +* e) a `@` (see [`npm dist-tag`](/commands/npm-dist-tag)) that + points to (d) +* f) a `` that has a "latest" tag satisfying (e) +* g) a `` that resolves to (a) The publish will fail if the package name and version combination already exists in the specified registry. @@ -247,6 +231,7 @@ This value is not exported to the environment for child processes. ### See Also +* [package spec](/using-npm/package-spec) * [npm-packlist package](http://npm.im/npm-packlist) * [npm registry](/using-npm/registry) * [npm scope](/using-npm/scope) diff --git a/deps/npm/docs/content/commands/npm-rebuild.md b/deps/npm/docs/content/commands/npm-rebuild.md index fa5b0cfa97d7c1..6a396421213d3d 100644 --- a/deps/npm/docs/content/commands/npm-rebuild.md +++ b/deps/npm/docs/content/commands/npm-rebuild.md @@ -11,7 +11,7 @@ description: Rebuild a package ```bash -npm rebuild [[<@scope>/][@] ...] +npm rebuild [] ...] alias: rb ``` @@ -29,9 +29,8 @@ C++ addons with the new binary. It is also useful when installing with `--ignore-scripts` and `--no-bin-links`, to explicitly choose which packages to build and/or link bins. -If one or more package names (and optionally version ranges) are provided, -then only packages with a name and version matching one of the specifiers -will be rebuilt. +If one or more package specs are provided, then only packages with a +name and version matching one of the specifiers will be rebuilt. ### Configuration @@ -42,8 +41,6 @@ will be rebuilt. * Default: false * Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. Operates in "global" mode, so that packages are installed into the `prefix` folder instead of the current working directory. See @@ -180,4 +177,5 @@ symlink. This option has no effect on workspaces. ### See Also +* [package spec](/using-npm/package-spec) * [npm install](/commands/npm-install) diff --git a/deps/npm/docs/content/commands/npm-restart.md b/deps/npm/docs/content/commands/npm-restart.md index f01cd014e74357..048bebb1659bd3 100644 --- a/deps/npm/docs/content/commands/npm-restart.md +++ b/deps/npm/docs/content/commands/npm-restart.md @@ -69,7 +69,7 @@ will *not* run any pre- or post-scripts. * Type: null or String The shell to use for scripts run with the `npm exec`, `npm run` and `npm -init ` commands. +init ` commands. diff --git a/deps/npm/docs/content/commands/npm-root.md b/deps/npm/docs/content/commands/npm-root.md index 80545235fc9693..40b58e4b33d0b2 100644 --- a/deps/npm/docs/content/commands/npm-root.md +++ b/deps/npm/docs/content/commands/npm-root.md @@ -41,8 +41,6 @@ echo "Global packages installed in: ${global_node_modules}" * Default: false * Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. Operates in "global" mode, so that packages are installed into the `prefix` folder instead of the current working directory. See diff --git a/deps/npm/docs/content/commands/npm-run-script.md b/deps/npm/docs/content/commands/npm-run-script.md index 73c4b1c7a748a7..f606ec6bf59e5e 100644 --- a/deps/npm/docs/content/commands/npm-run-script.md +++ b/deps/npm/docs/content/commands/npm-run-script.md @@ -240,13 +240,28 @@ will *not* run any pre- or post-scripts. +#### `foreground-scripts` + +* Default: false +* Type: Boolean + +Run all build scripts (ie, `preinstall`, `install`, and `postinstall`) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process. + +Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging. + + + + #### `script-shell` * Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows * Type: null or String The shell to use for scripts run with the `npm exec`, `npm run` and `npm -init ` commands. +init ` commands. diff --git a/deps/npm/docs/content/commands/npm-star.md b/deps/npm/docs/content/commands/npm-star.md index 00ef17a816b4ae..3e81c6a55bbb05 100644 --- a/deps/npm/docs/content/commands/npm-star.md +++ b/deps/npm/docs/content/commands/npm-star.md @@ -11,7 +11,7 @@ description: Mark your favorite packages ```bash -npm star [...] +npm star [...] ``` @@ -87,6 +87,7 @@ password, npm will prompt on the command line for one. ### See Also +* [package spec](/using-npm/package-spec) * [npm unstar](/commands/npm-unstar) * [npm stars](/commands/npm-stars) * [npm view](/commands/npm-view) diff --git a/deps/npm/docs/content/commands/npm-start.md b/deps/npm/docs/content/commands/npm-start.md index 8dd874b3c7d291..148f92606d83fb 100644 --- a/deps/npm/docs/content/commands/npm-start.md +++ b/deps/npm/docs/content/commands/npm-start.md @@ -80,7 +80,7 @@ will *not* run any pre- or post-scripts. * Type: null or String The shell to use for scripts run with the `npm exec`, `npm run` and `npm -init ` commands. +init ` commands. diff --git a/deps/npm/docs/content/commands/npm-stop.md b/deps/npm/docs/content/commands/npm-stop.md index 9a3a55cf3f20e6..a3084e8432ba77 100644 --- a/deps/npm/docs/content/commands/npm-stop.md +++ b/deps/npm/docs/content/commands/npm-stop.md @@ -73,7 +73,7 @@ will *not* run any pre- or post-scripts. * Type: null or String The shell to use for scripts run with the `npm exec`, `npm run` and `npm -init ` commands. +init ` commands. diff --git a/deps/npm/docs/content/commands/npm-test.md b/deps/npm/docs/content/commands/npm-test.md index 8a343ab299b34c..72bb899d0b9165 100644 --- a/deps/npm/docs/content/commands/npm-test.md +++ b/deps/npm/docs/content/commands/npm-test.md @@ -70,7 +70,7 @@ will *not* run any pre- or post-scripts. * Type: null or String The shell to use for scripts run with the `npm exec`, `npm run` and `npm -init ` commands. +init ` commands. diff --git a/deps/npm/docs/content/commands/npm-unpublish.md b/deps/npm/docs/content/commands/npm-unpublish.md index a4c481ea5af7f7..9ad99e72a5a8e0 100644 --- a/deps/npm/docs/content/commands/npm-unpublish.md +++ b/deps/npm/docs/content/commands/npm-unpublish.md @@ -11,7 +11,7 @@ description: Remove a package from the registry ```bash -npm unpublish [<@scope>/][@] +npm unpublish [] ``` @@ -146,6 +146,7 @@ This value is not exported to the environment for child processes. ### See Also +* [package spec](/using-npm/package-spec) * [npm deprecate](/commands/npm-deprecate) * [npm publish](/commands/npm-publish) * [npm registry](/using-npm/registry) diff --git a/deps/npm/docs/content/commands/npm-unstar.md b/deps/npm/docs/content/commands/npm-unstar.md index 76202190da8c35..636e1b6ac0a947 100644 --- a/deps/npm/docs/content/commands/npm-unstar.md +++ b/deps/npm/docs/content/commands/npm-unstar.md @@ -11,7 +11,7 @@ description: Remove an item from your favorite packages ```bash -npm unstar [...] +npm unstar [...] ``` diff --git a/deps/npm/docs/content/commands/npm-update.md b/deps/npm/docs/content/commands/npm-update.md index 55aad182fcafe8..421d04ca3dc583 100644 --- a/deps/npm/docs/content/commands/npm-update.md +++ b/deps/npm/docs/content/commands/npm-update.md @@ -188,8 +188,6 @@ Will also prevent writing to `package-lock.json` if set to `false`. * Default: false * Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. Operates in "global" mode, so that packages are installed into the `prefix` folder instead of the current working directory. See diff --git a/deps/npm/docs/content/commands/npm-view.md b/deps/npm/docs/content/commands/npm-view.md index 0ef17d8adfb39b..d9d1daac0cda7d 100644 --- a/deps/npm/docs/content/commands/npm-view.md +++ b/deps/npm/docs/content/commands/npm-view.md @@ -11,7 +11,7 @@ description: View registry info ```bash -npm view [<@scope>/][@] [[.subfield]...] +npm view [] [[.subfield]...] aliases: info, show, v ``` @@ -203,6 +203,7 @@ the field name. ### See Also +* [package spec](/using-npm/package-spec) * [npm search](/commands/npm-search) * [npm registry](/using-npm/registry) * [npm config](/commands/npm-config) diff --git a/deps/npm/docs/content/commands/npm.md b/deps/npm/docs/content/commands/npm.md index aaf295dfde230d..18a68d03cd44ff 100644 --- a/deps/npm/docs/content/commands/npm.md +++ b/deps/npm/docs/content/commands/npm.md @@ -102,7 +102,7 @@ following help topics: done via [`npm install`](/commands/npm-install) * adduser: Create an account or log in. When you do this, npm will store - credentials in the user config file config file. + credentials in the user config file. * publish: Use the [`npm publish`](/commands/npm-publish) command to upload your code to the registry. diff --git a/deps/npm/docs/content/configuring-npm/folders.md b/deps/npm/docs/content/configuring-npm/folders.md index 218870765b2625..5bab80ec169c5c 100644 --- a/deps/npm/docs/content/configuring-npm/folders.md +++ b/deps/npm/docs/content/configuring-npm/folders.md @@ -202,7 +202,7 @@ For a graphical breakdown of what is installed where, use `npm ls`. #### Publishing Upon publishing, npm will look in the `node_modules` folder. If any of -the items there are not in the `bundledDependencies` array, then they will +the items there are not in the `bundleDependencies` array, then they will not be included in the package tarball. This allows a package maintainer to install all of their dependencies diff --git a/deps/npm/docs/content/configuring-npm/package-json.md b/deps/npm/docs/content/configuring-npm/package-json.md index 0c2047ad9abe08..f0315d60efef48 100644 --- a/deps/npm/docs/content/configuring-npm/package-json.md +++ b/deps/npm/docs/content/configuring-npm/package-json.md @@ -124,7 +124,7 @@ IDs](https://spdx.org/licenses/). Ideally you should pick one that is If your package is licensed under multiple common licenses, use an [SPDX license expression syntax version 2.0 -string](https://www.npmjs.com/package/spdx), like this: +string](https://spdx.dev/specifications/), like this: ```json { @@ -222,7 +222,7 @@ npm also sets a top-level "maintainers" field with your npm user info. ### funding -You can specify an object containing an URL that provides up-to-date +You can specify an object containing a URL that provides up-to-date information about ways to help fund development of your package, or a string URL, or an array of these: @@ -643,6 +643,26 @@ git+https://isaacs@github.com/npm/cli.git git://github.com/npm/cli.git#v1.0.27 ``` +When installing from a `git` repository, the presence of certain fields in the +`package.json` will cause npm to believe it needs to perform a build. To do so +your repository will be cloned into a temporary directory, all of its deps +installed, relevant scripts run, and the resulting directory packed and +installed. + +This flow will occur if your git dependency uses `workspaces`, or if any of the +following scripts are present: + +* `build` +* `prepare` +* `prepack` +* `preinstall` +* `install` +* `postinstall` + +If your git repository includes pre-built artifacts, you will likely want to +make sure that none of the above scripts are defined, or your dependency +will be rebuilt for every installation. + #### GitHub URLs As of version 1.1.65, you can refer to GitHub urls as just "foo": @@ -809,14 +829,14 @@ if the `soy-milk` package is not installed on the host. This allows you to integrate and interact with a variety of host packages without requiring all of them to be installed. -### bundledDependencies +### bundleDependencies This defines an array of package names that will be bundled when publishing the package. In cases where you need to preserve npm packages locally or have them available through a single file download, you can bundle the packages in a -tarball file by specifying the package names in the `bundledDependencies` +tarball file by specifying the package names in the `bundleDependencies` array and executing `npm pack`. For example: @@ -827,7 +847,7 @@ If we define a package.json like this: { "name": "awesome-web-framework", "version": "1.0.0", - "bundledDependencies": [ + "bundleDependencies": [ "renderized", "super-streams" ] @@ -840,9 +860,9 @@ can be installed in a new project by executing `npm install awesome-web-framework-1.0.0.tgz`. Note that the package names do not include any versions, as that information is specified in `dependencies`. -If this is spelled `"bundleDependencies"`, then that is also honored. +If this is spelled `"bundledDependencies"`, then that is also honored. -Alternatively, `"bundledDependencies"` can be defined as a boolean value. A +Alternatively, `"bundleDependencies"` can be defined as a boolean value. A value of `true` will bundle all dependencies, a value of `false` will bundle none. diff --git a/deps/npm/docs/content/using-npm/config.md b/deps/npm/docs/content/using-npm/config.md index 12b508582af1c3..e3e1bd6c73bb3b 100644 --- a/deps/npm/docs/content/using-npm/config.md +++ b/deps/npm/docs/content/using-npm/config.md @@ -215,6 +215,19 @@ exit code. +#### `auth-type` + +* Default: "legacy" +* Type: "legacy", "web", "sso", "saml", "oauth", or "webauthn" + +NOTE: auth-type values "sso", "saml", "oauth", and "webauthn" will be +removed in a future version. + +What authentication strategy to use with `login`. + + + + #### `before` * Default: null @@ -344,8 +357,9 @@ newlines replaced by the string "\n". For example: cert="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----" ``` -It is _not_ the path to a certificate file (and there is no "certfile" -option). +It is _not_ the path to a certificate file, though you can set a +registry-scoped "certfile" path like +"//other-registry.tld/:certfile=/path/to/cert.pem". @@ -687,6 +701,23 @@ results in no commit being made at all. +#### `global` + +* Default: false +* Type: Boolean + +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. + +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. +* bin files are linked to `{prefix}/bin` +* man pages are linked to `{prefix}/share/man` + + + + #### `global-style` * Default: false @@ -916,7 +947,8 @@ format with newlines replaced by the string "\n". For example: key="-----BEGIN PRIVATE KEY-----\nXXXX\nXXXX\n-----END PRIVATE KEY-----" ``` -It is _not_ the path to a key file (and there is no "keyfile" option). +It is _not_ the path to a key file, though you can set a registry-scoped +"keyfile" path like "//other-registry.tld/:keyfile=/path/to/key.pem". @@ -1501,7 +1533,7 @@ npm init --scope=@foo --yes * Type: null or String The shell to use for scripts run with the `npm exec`, `npm run` and `npm -init ` commands. +init ` commands. @@ -1888,18 +1920,6 @@ When set to `dev` or `development`, this is an alias for `--include=dev`. -#### `auth-type` - -* Default: "legacy" -* Type: "legacy", "sso", "saml", or "oauth" -* DEPRECATED: This method of SSO/SAML/OAuth is deprecated and will be removed - in a future version of npm in favor of web-based login. - -What authentication strategy to use with `adduser`/`login`. - - - - #### `cache-max` * Default: Infinity @@ -1933,25 +1953,6 @@ Alias for `--include=dev`. -#### `global` - -* Default: false -* Type: Boolean -* DEPRECATED: `--global`, `--local` are deprecated. Use `--location=global` - instead. - -Operates in "global" mode, so that packages are installed into the `prefix` -folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in behavior. - -* packages are installed into the `{prefix}/lib/node_modules` folder, instead - of the current working directory. -* bin files are linked to `{prefix}/bin` -* man pages are linked to `{prefix}/share/man` - - - - #### `init.author.email` * Default: "" diff --git a/deps/npm/docs/content/using-npm/package-spec.md b/deps/npm/docs/content/using-npm/package-spec.md new file mode 100644 index 00000000000000..0d3741018f036f --- /dev/null +++ b/deps/npm/docs/content/using-npm/package-spec.md @@ -0,0 +1,106 @@ +--- +title: package-spec +section: 7 +description: Package name specifier +--- + + +### Description + +Commands like `npm install` and the dependency sections in the +`package.json` use a package name specifier. This can be many different +things that all refer to a "package". Examples include a package name, +git url, tarball, or local directory. These will generally be referred +to as `` in the help output for the npm commands that use +this package name specifier. + +### Package name + +* `[<@scope>/]` +* `[<@scope>/]@` +* `[<@scope>/]@` +* `[<@scope>/]@` + +Refers to a package by name, with or without a scope, and optionally +tag, version, or version range. This is typically used in combination +with the [registry](/using-npm/config#registry) config to refer to a +package in a registry. + +Examples: +* `npm` +* `@npmcli/arborist` +* `@npmcli/arborist@latest` +* `npm@6.13.1` +* `npm@^4.0.0` + +### Aliases + +* `@npm:` + +Primarily used by commands like `npm install` and in the dependency +sections in the `package.json`, this refers to a package by an alias. +The `` is the name of the package as it is reified in the +`node_modules` folder, and the `` refers to a package name as +found in the configured registry. + +See `Package name` above for more info on referring to a package by +name, and [registry](/using-npm/config#registry) for configuring which +registry is used when referring to a package by name. + +Examples: +* `semver:@npm:@npmcli/semver-with-patch` +* `semver:@npm:semver@7.2.2` +* `semver:@npm:semver@legacy` + +### Folders + +* `` + +This refers to a package on the local filesystem. Specifically this is +a folder with a `package.json` file in it. This *should* always be +prefixed with a `/` or `./` (or your OS equivalent) to reduce confusion. +npm currently will parse a string with more than one `/` in it as a +folder, but this is legacy behavior that may be removed in a future +version. + +Examples: + +* `./my-package` +* `/opt/npm/my-package` + +### Tarballs + +* `` +* `` + +Examples: + +* `./my-package.tgz` +* `https://registry.npmjs.org/semver/-/semver-1.0.0.tgz` + +Refers to a package in a tarball format, either on the local filesystem +or remotely via url. This is the format that packages exist in when +uploaded to a registry. + +### git urls + +* `` +* `/` + +Refers to a package in a git repo. This can be a full git url, git +shorthand, or a username/package on GitHub. You can specify a +git tag, branch, or other git ref by appending `#ref`. + +Examples: + +* `https://github.com/npm/cli.git` +* `git@github.com:npm/cli.git` +* `git+ssh://git@github.com/npm/cli#v6.0.0` +* `github:npm/cli#HEAD` +* `npm/cli#c12ea07` + +### See also + +[npm-package-arg](https://npm.im/npm-package-arg) +[scope](/using-npm/scope) +[config](/using-npm/config) diff --git a/deps/npm/docs/content/using-npm/scripts.md b/deps/npm/docs/content/using-npm/scripts.md index b37ca593e4ce63..2e0a5d1a95e14d 100644 --- a/deps/npm/docs/content/using-npm/scripts.md +++ b/deps/npm/docs/content/using-npm/scripts.md @@ -39,7 +39,7 @@ There are some special life cycle scripts that happen only in certain situations. These scripts happen in addition to the `pre`, `post`, and `` scripts. -* `prepare`, `prepublish`, `prepublishOnly`, `prepack`, `postpack` +* `prepare`, `prepublish`, `prepublishOnly`, `prepack`, `postpack`, `dependencies` **prepare** (since `npm@4.0.0`) * Runs any time before the package is packed, i.e. during `npm publish` @@ -71,6 +71,10 @@ situations. These scripts happen in addition to the `pre`, `post`, **postpack** * Runs AFTER the tarball has been generated but before it is moved to its final destination (if at all, publish does not save the tarball locally) +**dependencies** +* Runs AFTER any operations that modify the `node_modules` directory IF changes occurred. +* Does NOT run in global mode + #### Prepare and Prepublish **Deprecation Note: prepublish** @@ -96,6 +100,10 @@ The advantage of doing these things at `prepublish` time is that they can be don * You don't need to rely on your users having `curl` or `wget` or other system tools on the target machines. +#### Dependencies + +The `dependencies` script is run any time an `npm` command causes changes to the `node_modules` directory. It is run AFTER the changes have been applied and the `package.json` and `package-lock.json` files have been updated. + ### Life Cycle Operation Order #### [`npm cache add`](/commands/npm-cache) @@ -203,6 +211,12 @@ will default the `start` command to `node server.js`. `prestart` and * `test` * `posttest` +#### [`npm version`](/commands/npm-version) + +* `preversion` +* `version` +* `postversion` + #### A Note on a lack of [`npm uninstall`](/commands/npm-uninstall) scripts While npm v6 had `uninstall` lifecycle scripts, npm v7 does not. Removal of a package can happen for a wide variety of reasons, and there's no clear way to currently give the script enough context to be useful. diff --git a/deps/npm/docs/content/using-npm/workspaces.md b/deps/npm/docs/content/using-npm/workspaces.md index 26d6a5d7551dcf..82491cd74af823 100644 --- a/deps/npm/docs/content/using-npm/workspaces.md +++ b/deps/npm/docs/content/using-npm/workspaces.md @@ -57,7 +57,7 @@ structure of files and folders: ``` . +-- node_modules -| `-- packages/a -> ../packages/a +| `-- a -> ../packages/a +-- package-lock.json +-- package.json `-- packages @@ -112,15 +112,15 @@ respect the provided `workspace` configuration. Given the [specifities of how Node.js handles module resolution](https://nodejs.org/dist/latest-v14.x/docs/api/modules.html#modules_all_together) it's possible to consume any defined workspace by its declared `package.json` `name`. Continuing from the example defined -above, let's also create a Node.js script that will require the `workspace-a` +above, let's also create a Node.js script that will require the workspace `a` example module, e.g: ``` -// ./workspace-a/index.js +// ./packages/a/index.js module.exports = 'a' // ./lib/index.js -const moduleA = require('workspace-a') +const moduleA = require('a') console.log(moduleA) // -> a ``` diff --git a/deps/npm/docs/output/commands/npm-adduser.html b/deps/npm/docs/output/commands/npm-adduser.html index c0b870e534631e..d084a5e1f2deaf 100644 --- a/deps/npm/docs/output/commands/npm-adduser.html +++ b/deps/npm/docs/output/commands/npm-adduser.html @@ -142,7 +142,7 @@

npm-adduser

Table of contents

- +

Synopsis

@@ -204,6 +204,16 @@

scope

+

auth-type

+
    +
  • Default: "legacy"
  • +
  • Type: "legacy", "web", "sso", "saml", "oauth", or "webauthn"
  • +
+

NOTE: auth-type values "sso", "saml", "oauth", and "webauthn" will be +removed in a future version.

+

What authentication strategy to use with login.

+ +

See Also

    diff --git a/deps/npm/docs/output/commands/npm-audit.html b/deps/npm/docs/output/commands/npm-audit.html index af627aff7701a1..fa2c4ad52bce9c 100644 --- a/deps/npm/docs/output/commands/npm-audit.html +++ b/deps/npm/docs/output/commands/npm-audit.html @@ -142,14 +142,14 @@

    npm-audit

    Table of contents

    - +

    Synopsis

    -
    npm audit [fix]
    +
    npm audit [fix|signatures]
     
    @@ -170,6 +170,47 @@

    Description

    --audit-level parameter to specify the minimum vulnerability level that will cause the command to fail. This option does not filter the report output, it simply changes the command's failure threshold.

    +

    Audit Signatures

    +

    To ensure the integrity of packages you download from the public npm registry, or any registry that supports signatures, you can verify the registry signatures of downloaded packages using the npm CLI.

    +

    Registry signatures can be verified using the following audit command:

    +
    $ npm audit signatures
    +
    +

    The npm CLI supports registry signatures and signing keys provided by any registry if the following conventions are followed:

    +
      +
    1. Signatures are provided in the package's packument in each published version within the dist object:
    2. +
    +
    "dist":{
    +  "..omitted..": "..omitted..",
    +  "signatures": [{
    +    "keyid": "SHA256:{{SHA256_PUBLIC_KEY}}",
    +    "sig": "a312b9c3cb4a1b693e8ebac5ee1ca9cc01f2661c14391917dcb111517f72370809..."
    +  }]
    +}
    +
    +

    See this example of a signed package from the public npm registry.

    +

    The sig is generated using the following template: ${package.name}@${package.version}:${package.dist.integrity} and the keyid has to match one of the public signing keys below.

    +
      +
    1. Public signing keys are provided at registry-host.tld/-/npm/v1/keys in the following format:
    2. +
    +
    {
    +  "keys": [{
    +    "expires": null,
    +    "keyid": "SHA256:{{SHA256_PUBLIC_KEY}}",
    +    "keytype": "ecdsa-sha2-nistp256",
    +    "scheme": "ecdsa-sha2-nistp256",
    +    "key": "{{B64_PUBLIC_KEY}}"
    +  }]
    +}
    +
    +

    Keys response:

    +
      +
    • expires: null or a simplified extended ISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ
    • +
    • keydid: sha256 fingerprint of the public key
    • +
    • keytype: only ecdsa-sha2-nistp256 is currently supported by the npm CLI
    • +
    • scheme: only ecdsa-sha2-nistp256 is currently supported by the npm CLI
    • +
    • key: base64 encoded public key
    • +
    +

    See this example key's response from the public npm registry.

    Audit Endpoints

    There are two audit endpoints that npm may use to fetch vulnerability information: the Bulk Advisory endpoint and the Quick Audit endpoint.

    diff --git a/deps/npm/docs/output/commands/npm-bin.html b/deps/npm/docs/output/commands/npm-bin.html index 7b957b6014dc44..5961ea7e50fb74 100644 --- a/deps/npm/docs/output/commands/npm-bin.html +++ b/deps/npm/docs/output/commands/npm-bin.html @@ -165,8 +165,6 @@

    global

    • Default: false
    • Type: Boolean
    • -
    • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.

    Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See diff --git a/deps/npm/docs/output/commands/npm-cache.html b/deps/npm/docs/output/commands/npm-cache.html index c5d6869b343be2..ad29cc73819d58 100644 --- a/deps/npm/docs/output/commands/npm-cache.html +++ b/deps/npm/docs/output/commands/npm-cache.html @@ -149,11 +149,7 @@

    Table of contents

    -
    npm cache add <tarball file>
    -npm cache add <folder>
    -npm cache add <tarball url>
    -npm cache add <git url>
    -npm cache add <name>@<version>
    +
    npm cache add <package-spec>
     npm cache clean [<key>]
     npm cache ls [<name>@<version>]
     npm cache verify
    @@ -224,6 +220,7 @@ 

    cache

    See Also

      +
    • package spec
    • npm folders
    • npm config
    • npmrc
    • diff --git a/deps/npm/docs/output/commands/npm-ci.html b/deps/npm/docs/output/commands/npm-ci.html index 4f9a194ae57e54..abc8ce6deb0e31 100644 --- a/deps/npm/docs/output/commands/npm-ci.html +++ b/deps/npm/docs/output/commands/npm-ci.html @@ -245,7 +245,7 @@

      script-shell

    • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
    • Type: null or String
    -

    The shell to use for scripts run with the npm exec, npm run and npm init <pkg> commands.

    +

    The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

    diff --git a/deps/npm/docs/output/commands/npm-config.html b/deps/npm/docs/output/commands/npm-config.html index e267531fc0462f..184895e036fc0a 100644 --- a/deps/npm/docs/output/commands/npm-config.html +++ b/deps/npm/docs/output/commands/npm-config.html @@ -223,8 +223,6 @@

    global

    • Default: false
    • Type: Boolean
    • -
    • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.

    Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See diff --git a/deps/npm/docs/output/commands/npm-deprecate.html b/deps/npm/docs/output/commands/npm-deprecate.html index 52a9ef82c30e24..5b1d3489ca6157 100644 --- a/deps/npm/docs/output/commands/npm-deprecate.html +++ b/deps/npm/docs/output/commands/npm-deprecate.html @@ -149,7 +149,7 @@

    Table of contents

    -
    npm deprecate <pkg>[@<version>] <message>
    +
    npm deprecate <package-spec> <message>
     
    @@ -198,6 +198,7 @@

    otp

    See Also

      +
    • package spec
    • npm publish
    • npm registry
    • npm owner
    • diff --git a/deps/npm/docs/output/commands/npm-diff.html b/deps/npm/docs/output/commands/npm-diff.html index 7ee9d76d227f8b..13ed989c461801 100644 --- a/deps/npm/docs/output/commands/npm-diff.html +++ b/deps/npm/docs/output/commands/npm-diff.html @@ -334,8 +334,6 @@

      global

      • Default: false
      • Type: Boolean
      • -
      • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.

      Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See diff --git a/deps/npm/docs/output/commands/npm-dist-tag.html b/deps/npm/docs/output/commands/npm-dist-tag.html index 8615aec686f79d..a6cdc6230b2057 100644 --- a/deps/npm/docs/output/commands/npm-dist-tag.html +++ b/deps/npm/docs/output/commands/npm-dist-tag.html @@ -149,9 +149,9 @@

      Table of contents

      -
      npm dist-tag add <pkg>@<version> [<tag>]
      -npm dist-tag rm <pkg> <tag>
      -npm dist-tag ls [<pkg>]
      +
      npm dist-tag add <package-spec (with version)> [<tag>]
      +npm dist-tag rm <package-spec> <tag>
      +npm dist-tag ls [<package-spec>]
       
       alias: dist-tags
       
      @@ -162,11 +162,11 @@

      Description

      Add, remove, and enumerate distribution tags on a package:

      • -

        add: Tags the specified version of the package with the specified tag, or -the --tag config if not specified. If you have two-factor -authentication on auth-and-writes then you’ll need to include a one-time -password on the command line with --otp <one-time password>, or at the -OTP prompt.

        +

        add: Tags the specified version of the package with the specified tag, +or the --tag config if not specified. If you have two-factor +authentication on auth-and-writes then you’ll need to include a +one-time password on the command line with +--otp <one-time password>, or at the OTP prompt.

      • rm: Clear a tag that is no longer in use from the package. If you have @@ -273,6 +273,7 @@

        include-workspace-root

        See Also

          +
        • package spec
        • npm publish
        • npm install
        • npm dedupe
        • diff --git a/deps/npm/docs/output/commands/npm-explain.html b/deps/npm/docs/output/commands/npm-explain.html index caf5ab1506fcc9..612e18676b418d 100644 --- a/deps/npm/docs/output/commands/npm-explain.html +++ b/deps/npm/docs/output/commands/npm-explain.html @@ -149,7 +149,7 @@

          Table of contents

          -
          npm explain <folder | specifier>
          +
          npm explain <package-spec>
           
           alias: why
           
          @@ -159,9 +159,9 @@

          Table of contents

          Description

          This command will print the chain of dependencies causing a given package to be installed in the current project.

          -

          Positional arguments can be either folders within node_modules, or -name@version-range specifiers, which will select the dependency -relationships to explain.

          +

          If one or more package specs are provided, then only packages matching +one of the specifiers will have their relationships explained.

          +

          The package spec can also refer to a folder within ./node_modules

          For example, running npm explain glob within npm's source tree will show:

          glob@7.1.6
           node_modules/glob
          @@ -229,6 +229,7 @@ 

          workspace

          See Also

            +
          • package spec
          • npm config
          • npmrc
          • npm folders
          • diff --git a/deps/npm/docs/output/commands/npm-fund.html b/deps/npm/docs/output/commands/npm-fund.html index ba88e461c60988..08389cb45ba6c0 100644 --- a/deps/npm/docs/output/commands/npm-fund.html +++ b/deps/npm/docs/output/commands/npm-fund.html @@ -149,7 +149,7 @@

            Table of contents

            -
            npm fund [[<@scope>/]<pkg>]
            +
            npm fund [<package-spec>]
             
            @@ -157,18 +157,18 @@

            Table of contents

            Description

            This command retrieves information on how to fund the dependencies of a given project. If no package name is provided, it will list all -dependencies that are looking for funding in a tree structure, listing the -type of funding and the url to visit. If a package name is provided then it -tries to open its funding url using the --browser config param; if there -are multiple funding sources for the package, the user will be instructed -to pass the --which option to disambiguate.

            +dependencies that are looking for funding in a tree structure, listing +the type of funding and the url to visit. If a package name is provided +then it tries to open its funding url using the --browser config +param; if there are multiple funding sources for the package, the user +will be instructed to pass the --which option to disambiguate.

            The list will avoid duplicated entries and will stack all packages that -share the same url as a single entry. Thus, the list does not have the same -shape of the output from npm ls.

            +share the same url as a single entry. Thus, the list does not have the +same shape of the output from npm ls.

            Example

            Workspaces support

            -

            It's possible to filter the results to only include a single workspace and its -dependencies using the workspace config option.

            +

            It's possible to filter the results to only include a single workspace +and its dependencies using the workspace config option.

            Example:

            Here's an example running npm fund in a project with a configured workspace a:

            @@ -183,8 +183,8 @@

            Example:

            `-- https://example.com/org `-- bar@2.0.0
            -

            And here is an example of the expected result when filtering only by -a specific workspace a in the same project:

            +

            And here is an example of the expected result when filtering only by a +specific workspace a in the same project:

            $ npm fund -w a
             test-workspaces-fund@1.0.0
             `-- https://example.com/a
            @@ -262,6 +262,7 @@ 

            which

            See Also

              +
            • package spec
            • npm install
            • npm docs
            • npm ls
            • diff --git a/deps/npm/docs/output/commands/npm-init.html b/deps/npm/docs/output/commands/npm-init.html index e2e9b01a04ea5d..c7c00b3531becf 100644 --- a/deps/npm/docs/output/commands/npm-init.html +++ b/deps/npm/docs/output/commands/npm-init.html @@ -142,16 +142,15 @@

              npm-init

              Table of contents

              - +

              Synopsis

              -
              npm init [--force|-f|--yes|-y|--scope]
              +
              npm init <package-spec> (same as `npx <package-spec>)
               npm init <@scope> (same as `npx <@scope>/create`)
              -npm init [<@scope>/]<name> (same as `npx [<@scope>/]create-<name>`)
               
               aliases: create, innit
               
              @@ -300,6 +299,29 @@

              force

              recommended that you do not use this option!

              +

              scope

              +
                +
              • Default: the scope of the current project, if any, or ""
              • +
              • Type: String
              • +
              +

              Associate an operation with a scope for a scoped registry.

              +

              Useful when logging in to or out of a private registry:

              +
              # log in, linking the scope to the custom registry
              +npm login --scope=@mycorp --registry=https://registry.mycorp.com
              +
              +# log out, removing the link and the auth token
              +npm logout --scope=@mycorp
              +
              +

              This will cause @mycorp to be mapped to the registry for future +installation of packages specified according to the pattern +@mycorp/package.

              +

              This will also cause npm init to create a scoped package.

              +
              # accept all defaults, and create a package named "@foo/whatever",
              +# instead of just named "whatever"
              +npm init --scope=@foo --yes
              +
              + +

              workspace

              • Default:
              • @@ -339,6 +361,15 @@

                workspaces

                This value is not exported to the environment for child processes.

                +

                workspaces-update

                +
                  +
                • Default: true
                • +
                • Type: Boolean
                • +
                +

                If set to true, the npm cli will run an update after operations that may +possibly change the workspaces installed to the node_modules folder.

                + +

                include-workspace-root

                • Default: false
                • @@ -354,6 +385,7 @@

                  include-workspace-root

                  See Also

                    +
                  • package spec
                  • init-package-json module
                  • package.json
                  • npm version
                  • diff --git a/deps/npm/docs/output/commands/npm-install-ci-test.html b/deps/npm/docs/output/commands/npm-install-ci-test.html index b414f090278283..8d3d9541421fe0 100644 --- a/deps/npm/docs/output/commands/npm-install-ci-test.html +++ b/deps/npm/docs/output/commands/npm-install-ci-test.html @@ -202,7 +202,7 @@

                    script-shell

                  • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
                  • Type: null or String
                  -

                  The shell to use for scripts run with the npm exec, npm run and npm init <pkg> commands.

                  +

                  The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

                  diff --git a/deps/npm/docs/output/commands/npm-install-test.html b/deps/npm/docs/output/commands/npm-install-test.html index fce049dc2c09e5..bf2ad29400f570 100644 --- a/deps/npm/docs/output/commands/npm-install-test.html +++ b/deps/npm/docs/output/commands/npm-install-test.html @@ -149,16 +149,7 @@

                  Table of contents

                  -
                  npm install-test [<@scope>/]<pkg>
                  -npm install-test [<@scope>/]<pkg>@<tag>
                  -npm install-test [<@scope>/]<pkg>@<version>
                  -npm install-test [<@scope>/]<pkg>@<version range>
                  -npm install-test <alias>@npm:<name>
                  -npm install-test <folder>
                  -npm install-test <tarball file>
                  -npm install-test <tarball url>
                  -npm install-test <git:// url>
                  -npm install-test <github username>/<github project>
                  +
                  npm install-test [<package-spec> ...]
                   
                   alias: it
                   
                  @@ -196,8 +187,6 @@

                  global

                  • Default: false
                  • Type: Boolean
                  • -
                  • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.

                  Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See diff --git a/deps/npm/docs/output/commands/npm-install.html b/deps/npm/docs/output/commands/npm-install.html index ca6ca1ee260f33..48f62f9e4822c7 100644 --- a/deps/npm/docs/output/commands/npm-install.html +++ b/deps/npm/docs/output/commands/npm-install.html @@ -149,16 +149,7 @@

                  Table of contents

                  -
                  npm install [<@scope>/]<pkg>
                  -npm install [<@scope>/]<pkg>@<tag>
                  -npm install [<@scope>/]<pkg>@<version>
                  -npm install [<@scope>/]<pkg>@<version range>
                  -npm install <alias>@npm:<name>
                  -npm install <folder>
                  -npm install <tarball file>
                  -npm install <tarball url>
                  -npm install <git:// url>
                  -npm install <github username>/<github project>
                  +
                  npm install [<package-spec> ...]
                   
                   aliases: add, i, in, ins, inst, insta, instal, isnt, isnta, isntal, isntall
                   
                  @@ -522,8 +513,6 @@

                  global

                  • Default: false
                  • Type: Boolean
                  • -
                  • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.

                  Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See diff --git a/deps/npm/docs/output/commands/npm-link.html b/deps/npm/docs/output/commands/npm-link.html index cb43c0478d7015..cd31a3ee0dfd25 100644 --- a/deps/npm/docs/output/commands/npm-link.html +++ b/deps/npm/docs/output/commands/npm-link.html @@ -149,8 +149,7 @@

                  Table of contents

                  -
                  npm link (in package dir)
                  -npm link [<@scope>/]<pkg>[@<version>]
                  +
                  npm link [<package-spec>]
                   
                   alias: ln
                   
                  @@ -161,11 +160,11 @@

                  Description

                  This is handy for installing your own stuff, so that you can work on it and test iteratively without having to continually rebuild.

                  Package linking is a two-step process.

                  -

                  First, npm link in a package folder will create a symlink in the global -folder {prefix}/lib/node_modules/<package> that links to the package -where the npm link command was executed. It will also link any bins in -the package to {prefix}/bin/{name}. Note that npm link uses the global -prefix (see npm prefix -g for its value).

                  +

                  First, npm link in a package folder with no arguments will create a +symlink in the global folder {prefix}/lib/node_modules/<package> that +links to the package where the npm link command was executed. It will +also link any bins in the package to {prefix}/bin/{name}. Note that +npm link uses the global prefix (see npm prefix -g for its value).

                  Next, in some other location, npm link package-name will create a symbolic link from globally-installed package-name to node_modules/ of the current folder.

                  @@ -251,8 +250,6 @@

                  global

                  • Default: false
                  • Type: Boolean
                  • -
                  • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.

                  Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See @@ -454,6 +451,7 @@

                  See Also

                    +
                  • package spec
                  • npm developers
                  • package.json
                  • npm install
                  • diff --git a/deps/npm/docs/output/commands/npm-ls.html b/deps/npm/docs/output/commands/npm-ls.html index 10caff53c3a090..47b3bbc085e164 100644 --- a/deps/npm/docs/output/commands/npm-ls.html +++ b/deps/npm/docs/output/commands/npm-ls.html @@ -149,7 +149,7 @@

                    Table of contents

                    -
                    npm ls [[<@scope>/]<pkg> ...]
                    +
                    npm ls <package-spec>
                     
                     alias: list
                     
                    @@ -166,7 +166,7 @@

                    Description

                    the results to only the paths to the packages named. Note that nested packages will also show the paths to the specified packages. For example, running npm ls promzard in npm's source tree will show:

                    -
                    npm@8.11.0 /path/to/npm
                    +
                    npm@8.15.0 /path/to/npm
                     └─┬ init-package-json@0.0.4
                       └── promzard@0.1.5
                     
                    @@ -246,8 +246,6 @@

                    global

                    • Default: false
                    • Type: Boolean
                    • -
                    • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.

                    Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See @@ -381,6 +379,7 @@

                    See Also

                      +
                    • package spec
                    • npm explain
                    • npm config
                    • npmrc
                    • diff --git a/deps/npm/docs/output/commands/npm-outdated.html b/deps/npm/docs/output/commands/npm-outdated.html index 15030d60080819..57740228c48ab6 100644 --- a/deps/npm/docs/output/commands/npm-outdated.html +++ b/deps/npm/docs/output/commands/npm-outdated.html @@ -149,7 +149,7 @@

                      Table of contents

                      -
                      npm outdated [[<@scope>/]<pkg> ...]
                      +
                      npm outdated [<package-spec> ...]
                       
                      @@ -268,8 +268,6 @@

                      global

                      • Default: false
                      • Type: Boolean
                      • -
                      • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.

                      Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See @@ -306,6 +304,7 @@

                      workspace

                      See Also

                        +
                      • package spec
                      • npm update
                      • npm dist-tag
                      • npm registry
                      • diff --git a/deps/npm/docs/output/commands/npm-owner.html b/deps/npm/docs/output/commands/npm-owner.html index 744f7821408fd5..bf47a0ce04f93d 100644 --- a/deps/npm/docs/output/commands/npm-owner.html +++ b/deps/npm/docs/output/commands/npm-owner.html @@ -149,9 +149,9 @@

                        Table of contents

                        -
                        npm owner add <user> [<@scope>/]<pkg>
                        -npm owner rm <user> [<@scope>/]<pkg>
                        -npm owner ls [<@scope>/]<pkg>
                        +
                        npm owner add <user> <package-spec>
                        +npm owner rm <user> <package-spec>
                        +npm owner ls <package-spec>
                         
                         alias: author
                         
                        @@ -240,6 +240,7 @@

                        workspaces

                        See Also

                          +
                        • package spec
                        • npm profile
                        • npm publish
                        • npm registry
                        • diff --git a/deps/npm/docs/output/commands/npm-pack.html b/deps/npm/docs/output/commands/npm-pack.html index 86e45cb303ae36..387becd8c1f8ca 100644 --- a/deps/npm/docs/output/commands/npm-pack.html +++ b/deps/npm/docs/output/commands/npm-pack.html @@ -149,7 +149,7 @@

                          Table of contents

                          -
                          npm pack [[<@scope>/]<pkg>...]
                          +
                          npm pack <package-spec>
                           
                          @@ -255,6 +255,7 @@

                          Description

                          If no arguments are supplied, then npm packs the current package folder.

                          See Also

                            +
                          • package spec
                          • npm-packlist package
                          • npm cache
                          • npm publish
                          • diff --git a/deps/npm/docs/output/commands/npm-prefix.html b/deps/npm/docs/output/commands/npm-prefix.html index df6960ef97bbcd..2f302144269200 100644 --- a/deps/npm/docs/output/commands/npm-prefix.html +++ b/deps/npm/docs/output/commands/npm-prefix.html @@ -176,8 +176,6 @@

                            global

                            • Default: false
                            • Type: Boolean
                            • -
                            • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.

                            Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See diff --git a/deps/npm/docs/output/commands/npm-publish.html b/deps/npm/docs/output/commands/npm-publish.html index 23e5f11ea0e927..019295ab1f0c66 100644 --- a/deps/npm/docs/output/commands/npm-publish.html +++ b/deps/npm/docs/output/commands/npm-publish.html @@ -149,58 +149,31 @@

                            Table of contents

                            -
                            npm publish [<folder>]
                            +
                            npm publish <package-spec>
                             

                            Description

                            Publishes a package to the registry so that it can be installed by name.

                            -

                            By default npm will publish to the public registry. This can be overridden -by specifying a different default registry or using a -scope in the name (see +

                            By default npm will publish to the public registry. This can be +overridden by specifying a different default registry or using a +scope in the name, combined with a +scope-configured registry (see package.json).

                            +

                            A package is interpreted the same way as other commands (like +npm install and can be:

                              -
                            • -

                              <folder>: A folder containing a package.json file

                              -
                            • -
                            • -

                              <tarball>: A url or file path to a gzipped tar archive containing a -single folder with a package.json file inside.

                              -
                            • -
                            • -

                              [--tag <tag>]: Registers the published package with the given tag, such -that npm install <name>@<tag> will install this version. By default, -npm publish updates and npm install installs the latest tag. See -npm-dist-tag for details about tags.

                              -
                            • -
                            • -

                              [--access <public|restricted>]: Tells the registry whether this package -should be published as public or restricted. Only applies to scoped -packages, which default to restricted. If you don't have a paid -account, you must publish with --access public to publish scoped -packages.

                              -
                            • -
                            • -

                              [--otp <otpcode>]: If you have two-factor authentication enabled in -auth-and-writes mode then you can provide a code from your -authenticator with this. If you don't include this and you're running -from a TTY then you'll be prompted.

                              -
                            • -
                            • -

                              [--dry-run]: As of npm@6, does everything publish would do except -actually publishing to the registry. Reports the details of what would -have been published.

                              -
                            • -
                            • -

                              [--workspaces]: Enables workspace context while publishing. All -workspace packages will be published.

                              -
                            • -
                            • -

                              [--workspace]: Enables workspaces context and limits results to only -those specified by this config item. Only the packages in the -workspaces given will be published.

                              -
                            • +
                            • a) a folder containing a program described by a +package.json file
                            • +
                            • b) a gzipped tarball containing (a)
                            • +
                            • c) a url that resolves to (b)
                            • +
                            • d) a <name>@<version> that is published on the registry (see +registry) with (c)
                            • +
                            • e) a <name>@<tag> (see npm dist-tag) that +points to (d)
                            • +
                            • f) a <name> that has a "latest" tag satisfying (e)
                            • +
                            • g) a <git remote url> that resolves to (a)

                            The publish will fail if the package name and version combination already exists in the specified registry.

                            @@ -361,6 +334,7 @@

                            include-workspace-root

                            See Also

                              +
                            • package spec
                            • npm-packlist package
                            • npm registry
                            • npm scope
                            • diff --git a/deps/npm/docs/output/commands/npm-rebuild.html b/deps/npm/docs/output/commands/npm-rebuild.html index 84837a3be5d394..2fdd821d592d13 100644 --- a/deps/npm/docs/output/commands/npm-rebuild.html +++ b/deps/npm/docs/output/commands/npm-rebuild.html @@ -149,7 +149,7 @@

                              Table of contents

                              -
                              npm rebuild [[<@scope>/]<name>[@<version>] ...]
                              +
                              npm rebuild [<package-spec>] ...]
                               
                               alias: rb
                               
                              @@ -162,9 +162,8 @@

                              Description

                              C++ addons with the new binary. It is also useful when installing with --ignore-scripts and --no-bin-links, to explicitly choose which packages to build and/or link bins.

                              -

                              If one or more package names (and optionally version ranges) are provided, -then only packages with a name and version matching one of the specifiers -will be rebuilt.

                              +

                              If one or more package specs are provided, then only packages with a +name and version matching one of the specifiers will be rebuilt.

                              Configuration

                              @@ -173,8 +172,6 @@

                              global

                              • Default: false
                              • Type: Boolean
                              • -
                              • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.

                              Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See @@ -287,6 +284,7 @@

                              See Also

              diff --git a/deps/npm/docs/output/commands/npm-restart.html b/deps/npm/docs/output/commands/npm-restart.html index f65a170d53838b..0e39072664a1d7 100644 --- a/deps/npm/docs/output/commands/npm-restart.html +++ b/deps/npm/docs/output/commands/npm-restart.html @@ -196,7 +196,7 @@

              script-shell

            • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
            • Type: null or String
            -

            The shell to use for scripts run with the npm exec, npm run and npm init <pkg> commands.

            +

            The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

            diff --git a/deps/npm/docs/output/commands/npm-root.html b/deps/npm/docs/output/commands/npm-root.html index c9cc1d4b67843b..e0595fd8e76256 100644 --- a/deps/npm/docs/output/commands/npm-root.html +++ b/deps/npm/docs/output/commands/npm-root.html @@ -170,8 +170,6 @@

            global

            • Default: false
            • Type: Boolean
            • -
            • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.

            Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See diff --git a/deps/npm/docs/output/commands/npm-run-script.html b/deps/npm/docs/output/commands/npm-run-script.html index 6211c2b55efcfc..5b1150cf4b9b3f 100644 --- a/deps/npm/docs/output/commands/npm-run-script.html +++ b/deps/npm/docs/output/commands/npm-run-script.html @@ -142,7 +142,7 @@

            npm-run-script

            Table of contents

            - +

            Synopsis

            @@ -319,12 +319,24 @@

            ignore-scripts

            will not run any pre- or post-scripts.

            +

            foreground-scripts

            +
              +
            • Default: false
            • +
            • Type: Boolean
            • +
            +

            Run all build scripts (ie, preinstall, install, and postinstall) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process.

            +

            Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging.

            + +

            script-shell

            • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
            • Type: null or String
            -

            The shell to use for scripts run with the npm exec, npm run and npm init <pkg> commands.

            +

            The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

            diff --git a/deps/npm/docs/output/commands/npm-star.html b/deps/npm/docs/output/commands/npm-star.html index bc1f7ae76992dd..d442e391108d37 100644 --- a/deps/npm/docs/output/commands/npm-star.html +++ b/deps/npm/docs/output/commands/npm-star.html @@ -149,7 +149,7 @@

            Table of contents

            -
            npm star [<pkg>...]
            +
            npm star [<package-spec>...]
             
            @@ -202,6 +202,7 @@

            otp

            See Also

              +
            • package spec
            • npm unstar
            • npm stars
            • npm view
            • diff --git a/deps/npm/docs/output/commands/npm-start.html b/deps/npm/docs/output/commands/npm-start.html index 8cedd9855d88c4..4f300f37adee2f 100644 --- a/deps/npm/docs/output/commands/npm-start.html +++ b/deps/npm/docs/output/commands/npm-start.html @@ -200,7 +200,7 @@

              script-shell

            • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
            • Type: null or String
            -

            The shell to use for scripts run with the npm exec, npm run and npm init <pkg> commands.

            +

            The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

            diff --git a/deps/npm/docs/output/commands/npm-stop.html b/deps/npm/docs/output/commands/npm-stop.html index 87b7d30fd8f3cd..8c91c7321a5ed3 100644 --- a/deps/npm/docs/output/commands/npm-stop.html +++ b/deps/npm/docs/output/commands/npm-stop.html @@ -195,7 +195,7 @@

            script-shell

          • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
          • Type: null or String
          -

          The shell to use for scripts run with the npm exec, npm run and npm init <pkg> commands.

          +

          The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

          diff --git a/deps/npm/docs/output/commands/npm-test.html b/deps/npm/docs/output/commands/npm-test.html index 5c403b94eb99a8..c4d71b30f514cd 100644 --- a/deps/npm/docs/output/commands/npm-test.html +++ b/deps/npm/docs/output/commands/npm-test.html @@ -193,7 +193,7 @@

          script-shell

        • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
        • Type: null or String
        -

        The shell to use for scripts run with the npm exec, npm run and npm init <pkg> commands.

        +

        The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

        diff --git a/deps/npm/docs/output/commands/npm-unpublish.html b/deps/npm/docs/output/commands/npm-unpublish.html index 21fafc89ebaacf..ab5858f2666fd5 100644 --- a/deps/npm/docs/output/commands/npm-unpublish.html +++ b/deps/npm/docs/output/commands/npm-unpublish.html @@ -149,7 +149,7 @@

        Table of contents

        -
        npm unpublish [<@scope>/]<pkg>[@<version>]
        +
        npm unpublish [<package-spec>]
         
        @@ -257,6 +257,7 @@

        workspaces

        See Also

          +
        • package spec
        • npm deprecate
        • npm publish
        • npm registry
        • diff --git a/deps/npm/docs/output/commands/npm-unstar.html b/deps/npm/docs/output/commands/npm-unstar.html index a332f857e6b7ea..c8b057f8e2d163 100644 --- a/deps/npm/docs/output/commands/npm-unstar.html +++ b/deps/npm/docs/output/commands/npm-unstar.html @@ -149,7 +149,7 @@

          Table of contents

          -
          npm unstar [<pkg>...]
          +
          npm unstar [<package-spec>...]
           
          diff --git a/deps/npm/docs/output/commands/npm-update.html b/deps/npm/docs/output/commands/npm-update.html index d0cb6d5f75501b..d88ea8578bacef 100644 --- a/deps/npm/docs/output/commands/npm-update.html +++ b/deps/npm/docs/output/commands/npm-update.html @@ -275,8 +275,6 @@

          global

          • Default: false
          • Type: Boolean
          • -
          • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.

          Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See diff --git a/deps/npm/docs/output/commands/npm-view.html b/deps/npm/docs/output/commands/npm-view.html index 0eb17026a77b39..2b74e28f3b9256 100644 --- a/deps/npm/docs/output/commands/npm-view.html +++ b/deps/npm/docs/output/commands/npm-view.html @@ -149,7 +149,7 @@

          Table of contents

          -
          npm view [<@scope>/]<pkg>[@<version>] [<field>[.subfield]...]
          +
          npm view [<package-spec>] [<field>[.subfield]...]
           
           aliases: info, show, v
           
          @@ -285,6 +285,7 @@

          Output

          the field name.

          See Also

            +
          • package spec
          • npm search
          • npm registry
          • npm config
          • diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html index 99c109c4e25cfa..514017fd875943 100644 --- a/deps/npm/docs/output/commands/npm.html +++ b/deps/npm/docs/output/commands/npm.html @@ -149,7 +149,7 @@

            Table of contents

            Version

            -

            8.11.0

            +

            8.15.0

            Description

            npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency @@ -219,7 +219,7 @@

            Developer Usage

            done via npm install
          • adduser: Create an account or log in. When you do this, npm will store -credentials in the user config file config file.
          • +credentials in the user config file.
          • publish: Use the npm publish command to upload your code to the registry.
          • diff --git a/deps/npm/docs/output/configuring-npm/folders.html b/deps/npm/docs/output/configuring-npm/folders.html index 6d722466c52d83..2968dacd5ee78b 100644 --- a/deps/npm/docs/output/configuring-npm/folders.html +++ b/deps/npm/docs/output/configuring-npm/folders.html @@ -291,7 +291,7 @@

            Example

            For a graphical breakdown of what is installed where, use npm ls.

            Publishing

            Upon publishing, npm will look in the node_modules folder. If any of -the items there are not in the bundledDependencies array, then they will +the items there are not in the bundleDependencies array, then they will not be included in the package tarball.

            This allows a package maintainer to install all of their dependencies (and dev dependencies) locally, but only re-publish those items that diff --git a/deps/npm/docs/output/configuring-npm/package-json.html b/deps/npm/docs/output/configuring-npm/package-json.html index b318eee5795193..354069b1a2c738 100644 --- a/deps/npm/docs/output/configuring-npm/package-json.html +++ b/deps/npm/docs/output/configuring-npm/package-json.html @@ -142,7 +142,7 @@

            package.json

            Table of contents

            - +

            Description

            @@ -231,7 +231,7 @@

            license

            You can check the full list of SPDX license IDs. Ideally you should pick one that is OSI approved.

            -

            If your package is licensed under multiple common licenses, use an SPDX +

            If your package is licensed under multiple common licenses, use an SPDX license expression syntax version 2.0 string, like this:

            {
            @@ -304,7 +304,7 @@ 

            people fields: author, contributorsBoth email and url are optional either way.

            npm also sets a top-level "maintainers" field with your npm user info.

            funding

            -

            You can specify an object containing an URL that provides up-to-date +

            You can specify an object containing a URL that provides up-to-date information about ways to help fund development of your package, or a string URL, or an array of these:

            {
            @@ -629,6 +629,24 @@ 

            Git URLs as Dependencies

            git+https://isaacs@github.com/npm/cli.git git://github.com/npm/cli.git#v1.0.27
            +

            When installing from a git repository, the presence of certain fields in the +package.json will cause npm to believe it needs to perform a build. To do so +your repository will be cloned into a temporary directory, all of its deps +installed, relevant scripts run, and the resulting directory packed and +installed.

            +

            This flow will occur if your git dependency uses workspaces, or if any of the +following scripts are present:

            +
              +
            • build
            • +
            • prepare
            • +
            • prepack
            • +
            • preinstall
            • +
            • install
            • +
            • postinstall
            • +
            +

            If your git repository includes pre-built artifacts, you will likely want to +make sure that none of the above scripts are defined, or your dependency +will be rebuilt for every installation.

            GitHub URLs

            As of version 1.1.65, you can refer to GitHub urls as just "foo": "user/foo-project". Just as with git URLs, a commit-ish suffix can be @@ -754,19 +772,19 @@

            peerDependenciesMeta

            if the soy-milk package is not installed on the host. This allows you to integrate and interact with a variety of host packages without requiring all of them to be installed.

            -

            bundledDependencies

            +

            bundleDependencies

            This defines an array of package names that will be bundled when publishing the package.

            In cases where you need to preserve npm packages locally or have them available through a single file download, you can bundle the packages in a -tarball file by specifying the package names in the bundledDependencies +tarball file by specifying the package names in the bundleDependencies array and executing npm pack.

            For example:

            If we define a package.json like this:

            {
               "name": "awesome-web-framework",
               "version": "1.0.0",
            -  "bundledDependencies": [
            +  "bundleDependencies": [
                 "renderized",
                 "super-streams"
               ]
            @@ -776,8 +794,8 @@ 

            bundledDependencies

            This file contains the dependencies renderized and super-streams which can be installed in a new project by executing npm install awesome-web-framework-1.0.0.tgz. Note that the package names do not include any versions, as that information is specified in dependencies.

            -

            If this is spelled "bundleDependencies", then that is also honored.

            -

            Alternatively, "bundledDependencies" can be defined as a boolean value. A +

            If this is spelled "bundledDependencies", then that is also honored.

            +

            Alternatively, "bundleDependencies" can be defined as a boolean value. A value of true will bundle all dependencies, a value of false will bundle none.

            optionalDependencies

            diff --git a/deps/npm/docs/output/using-npm/config.html b/deps/npm/docs/output/using-npm/config.html index ef033b8693e4fd..79bf005d61e15e 100644 --- a/deps/npm/docs/output/using-npm/config.html +++ b/deps/npm/docs/output/using-npm/config.html @@ -142,7 +142,7 @@

            config

            Table of contents

            -
            +

            Description

            @@ -321,6 +321,16 @@

            audit-level

            exit code.

            +

            auth-type

            +
              +
            • Default: "legacy"
            • +
            • Type: "legacy", "web", "sso", "saml", "oauth", or "webauthn"
            • +
            +

            NOTE: auth-type values "sso", "saml", "oauth", and "webauthn" will be +removed in a future version.

            +

            What authentication strategy to use with login.

            + +

            before

            • Default: null
            • @@ -418,8 +428,9 @@

              cert

              newlines replaced by the string "\n". For example:

              cert="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
               
              -

              It is not the path to a certificate file (and there is no "certfile" -option).

              +

              It is not the path to a certificate file, though you can set a +registry-scoped "certfile" path like +"//other-registry.tld/:certfile=/path/to/cert.pem".

              ci-name

              @@ -696,6 +707,22 @@

              git-tag-version

              results in no commit being made at all.

              +

              global

              +
                +
              • Default: false
              • +
              • Type: Boolean
              • +
              +

              Operates in "global" mode, so that packages are installed into the prefix +folder instead of the current working directory. See +folders for more on the differences in behavior.

              +
                +
              • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
              • +
              • bin files are linked to {prefix}/bin
              • +
              • man pages are linked to {prefix}/share/man
              • +
              + +

              global-style

              • Default: false
              • @@ -881,7 +908,8 @@

                key

                format with newlines replaced by the string "\n". For example:

                key="-----BEGIN PRIVATE KEY-----\nXXXX\nXXXX\n-----END PRIVATE KEY-----"
                 
                -

                It is not the path to a key file (and there is no "keyfile" option).

                +

                It is not the path to a key file, though you can set a registry-scoped +"keyfile" path like "//other-registry.tld/:keyfile=/path/to/key.pem".

                legacy-bundling

                @@ -1344,7 +1372,7 @@

                script-shell

              • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
              • Type: null or String
              -

              The shell to use for scripts run with the npm exec, npm run and npm init <pkg> commands.

              +

              The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

              searchexclude

              @@ -1657,16 +1685,6 @@

              also

              When set to dev or development, this is an alias for --include=dev.

              -

              auth-type

              -
                -
              • Default: "legacy"
              • -
              • Type: "legacy", "sso", "saml", or "oauth"
              • -
              • DEPRECATED: This method of SSO/SAML/OAuth is deprecated and will be removed -in a future version of npm in favor of web-based login.
              • -
              -

              What authentication strategy to use with adduser/login.

              - -

              cache-max

              • Default: Infinity
              • @@ -1694,24 +1712,6 @@

                dev

                Alias for --include=dev.

                -

                global

                -
                  -
                • Default: false
                • -
                • Type: Boolean
                • -
                • DEPRECATED: --global, --local are deprecated. Use --location=global -instead.
                • -
                -

                Operates in "global" mode, so that packages are installed into the prefix -folder instead of the current working directory. See -folders for more on the differences in behavior.

                -
                  -
                • packages are installed into the {prefix}/lib/node_modules folder, instead -of the current working directory.
                • -
                • bin files are linked to {prefix}/bin
                • -
                • man pages are linked to {prefix}/share/man
                • -
                - -

                init.author.email

                • Default: ""
                • diff --git a/deps/npm/docs/output/using-npm/package-spec.html b/deps/npm/docs/output/using-npm/package-spec.html new file mode 100644 index 00000000000000..2b0855737bc269 --- /dev/null +++ b/deps/npm/docs/output/using-npm/package-spec.html @@ -0,0 +1,254 @@ + + +package-spec + + + + + +
                  +
                  +

                  package-spec

                  +Package name specifier +
                  + +
                  +

                  Table of contents

                  + +
                  + +

                  Description

                  +

                  Commands like npm install and the dependency sections in the +package.json use a package name specifier. This can be many different +things that all refer to a "package". Examples include a package name, +git url, tarball, or local directory. These will generally be referred +to as <package-spec> in the help output for the npm commands that use +this package name specifier.

                  +

                  Package name

                  +
                    +
                  • [<@scope>/]<pkg>
                  • +
                  • [<@scope>/]<pkg>@<tag>
                  • +
                  • [<@scope>/]<pkg>@<version>
                  • +
                  • [<@scope>/]<pkg>@<version range>
                  • +
                  +

                  Refers to a package by name, with or without a scope, and optionally +tag, version, or version range. This is typically used in combination +with the registry config to refer to a +package in a registry.

                  +

                  Examples:

                  +
                    +
                  • npm
                  • +
                  • @npmcli/arborist
                  • +
                  • @npmcli/arborist@latest
                  • +
                  • npm@6.13.1
                  • +
                  • npm@^4.0.0
                  • +
                  +

                  Aliases

                  +
                    +
                  • <alias>@npm:<name>
                  • +
                  +

                  Primarily used by commands like npm install and in the dependency +sections in the package.json, this refers to a package by an alias. +The <alias> is the name of the package as it is reified in the +node_modules folder, and the <name> refers to a package name as +found in the configured registry.

                  +

                  See Package name above for more info on referring to a package by +name, and registry for configuring which +registry is used when referring to a package by name.

                  +

                  Examples:

                  +
                    +
                  • semver:@npm:@npmcli/semver-with-patch
                  • +
                  • semver:@npm:semver@7.2.2
                  • +
                  • semver:@npm:semver@legacy
                  • +
                  +

                  Folders

                  +
                    +
                  • <folder>
                  • +
                  +

                  This refers to a package on the local filesystem. Specifically this is +a folder with a package.json file in it. This should always be +prefixed with a / or ./ (or your OS equivalent) to reduce confusion. +npm currently will parse a string with more than one / in it as a +folder, but this is legacy behavior that may be removed in a future +version.

                  +

                  Examples:

                  +
                    +
                  • ./my-package
                  • +
                  • /opt/npm/my-package
                  • +
                  +

                  Tarballs

                  +
                    +
                  • <tarball file>
                  • +
                  • <tarball url>
                  • +
                  +

                  Examples:

                  +
                    +
                  • ./my-package.tgz
                  • +
                  • https://registry.npmjs.org/semver/-/semver-1.0.0.tgz
                  • +
                  +

                  Refers to a package in a tarball format, either on the local filesystem +or remotely via url. This is the format that packages exist in when +uploaded to a registry.

                  +

                  git urls

                  +
                    +
                  • <git:// url>
                  • +
                  • <github username>/<github project>
                  • +
                  +

                  Refers to a package in a git repo. This can be a full git url, git +shorthand, or a username/package on GitHub. You can specify a +git tag, branch, or other git ref by appending #ref.

                  +

                  Examples:

                  +
                    +
                  • https://github.com/npm/cli.git
                  • +
                  • git@github.com:npm/cli.git
                  • +
                  • git+ssh://git@github.com/npm/cli#v6.0.0
                  • +
                  • github:npm/cli#HEAD
                  • +
                  • npm/cli#c12ea07
                  • +
                  +

                  See also

                  +

                  npm-package-arg +scope +config

                  +
                  + + +
                  + + + + \ No newline at end of file diff --git a/deps/npm/docs/output/using-npm/scripts.html b/deps/npm/docs/output/using-npm/scripts.html index e13d0c488ee8a9..9571e73ac63f07 100644 --- a/deps/npm/docs/output/using-npm/scripts.html +++ b/deps/npm/docs/output/using-npm/scripts.html @@ -142,7 +142,7 @@

                  scripts

                  Table of contents

                  - +

                  Description

                  @@ -172,7 +172,7 @@

                  Life Cycle Scripts

                  situations. These scripts happen in addition to the pre<event>, post<event>, and <event> scripts.

                    -
                  • prepare, prepublish, prepublishOnly, prepack, postpack
                  • +
                  • prepare, prepublish, prepublishOnly, prepack, postpack, dependencies

                  prepare (since npm@4.0.0)

                    @@ -221,6 +221,11 @@

                    Life Cycle Scripts

                    • Runs AFTER the tarball has been generated but before it is moved to its final destination (if at all, publish does not save the tarball locally)
                    +

                    dependencies

                    +
                      +
                    • Runs AFTER any operations that modify the node_modules directory IF changes occurred.
                    • +
                    • Does NOT run in global mode
                    • +

                    Prepare and Prepublish

                    Deprecation Note: prepublish

                    Since npm@1.1.71, the npm CLI has run the prepublish script for both npm publish and npm install, because it's a convenient way to prepare a package for use (some common use cases are described in the section below). It has also turned out to be, in practice, very confusing. As of npm@4.0.0, a new event has been introduced, prepare, that preserves this existing behavior. A new event, prepublishOnly has been added as a transitional strategy to allow users to avoid the confusing behavior of existing npm versions and only run on npm publish (for instance, running the tests one last time to ensure they're in good shape).

                    @@ -241,6 +246,8 @@

                    Prepare and Prepublish

                  • You don't need to rely on your users having curl or wget or other system tools on the target machines.
                  +

                  Dependencies

                  +

                  The dependencies script is run any time an npm command causes changes to the node_modules directory. It is run AFTER the changes have been applied and the package.json and package-lock.json files have been updated.

                  Life Cycle Operation Order

                  npm cache add

                    @@ -338,6 +345,12 @@

                    npm test<
                  • test
                  • posttest
                  +

                  npm version

                  +
                    +
                  • preversion
                  • +
                  • version
                  • +
                  • postversion
                  • +

                  A Note on a lack of npm uninstall scripts

                  While npm v6 had uninstall lifecycle scripts, npm v7 does not. Removal of a package can happen for a wide variety of reasons, and there's no clear way to currently give the script enough context to be useful.

                  Reasons for a package removal include:

                  diff --git a/deps/npm/docs/output/using-npm/workspaces.html b/deps/npm/docs/output/using-npm/workspaces.html index a1613b782f7c46..06928563acc1fd 100644 --- a/deps/npm/docs/output/using-npm/workspaces.html +++ b/deps/npm/docs/output/using-npm/workspaces.html @@ -184,7 +184,7 @@

                  Defining workspaces

                  structure of files and folders:

                  .
                   +-- node_modules
                  -|  `-- packages/a -> ../packages/a
                  +|  `-- a -> ../packages/a
                   +-- package-lock.json
                   +-- package.json
                   `-- packages
                  @@ -223,13 +223,13 @@ 

                  Adding dependencies to a workspaceUsing workspaces

                  Given the specifities of how Node.js handles module resolution it's possible to consume any defined workspace by its declared package.json name. Continuing from the example defined -above, let's also create a Node.js script that will require the workspace-a +above, let's also create a Node.js script that will require the workspace a example module, e.g:

                  -
                  // ./workspace-a/index.js
                  +
                  // ./packages/a/index.js
                   module.exports = 'a'
                   
                   // ./lib/index.js
                  -const moduleA = require('workspace-a')
                  +const moduleA = require('a')
                   console.log(moduleA) // -> a
                   

                  When running it with:

                  diff --git a/deps/npm/lib/auth/legacy.js b/deps/npm/lib/auth/legacy.js index d1401ce14b9ef1..9aed12f3926fbe 100644 --- a/deps/npm/lib/auth/legacy.js +++ b/deps/npm/lib/auth/legacy.js @@ -1,6 +1,6 @@ const profile = require('npm-profile') const log = require('../utils/log-shim') -const openUrl = require('../utils/open-url.js') +const openUrlPrompt = require('../utils/open-url-prompt.js') const read = require('../utils/read-user-info.js') const loginPrompter = async (creds) => { @@ -47,7 +47,15 @@ const login = async (npm, opts) => { return newUser } - const openerPromise = (url) => openUrl(npm, url, 'to complete your login please visit') + const openerPromise = (url, emitter) => + openUrlPrompt( + npm, + url, + 'Authenticate your account at', + 'Press ENTER to open in the browser...', + emitter + ) + try { res = await profile.login(openerPromise, loginPrompter, opts) } catch (err) { diff --git a/deps/npm/lib/auth/sso.js b/deps/npm/lib/auth/sso.js index 9812a18cb99ca6..621ead5d21b658 100644 --- a/deps/npm/lib/auth/sso.js +++ b/deps/npm/lib/auth/sso.js @@ -52,7 +52,7 @@ const login = async (npm, { creds, registry, scope }) => { authType: ssoType, } - const { token, sso } = await otplease(opts, + const { token, sso } = await otplease(npm, opts, opts => profile.loginCouch(auth.username, auth.password, opts) ) diff --git a/deps/npm/lib/commands/access.js b/deps/npm/lib/commands/access.js index bc8ce48bacdad5..0a80da8ddd0066 100644 --- a/deps/npm/lib/commands/access.js +++ b/deps/npm/lib/commands/access.js @@ -180,7 +180,7 @@ class Access extends BaseCommand { modifyPackage (pkg, opts, fn, requireScope = true) { return this.getPackage(pkg, requireScope) - .then(pkgName => otplease(opts, opts => fn(pkgName, opts))) + .then(pkgName => otplease(this.npm, opts, opts => fn(pkgName, opts))) } async getPackage (name, requireScope) { diff --git a/deps/npm/lib/commands/adduser.js b/deps/npm/lib/commands/adduser.js index 755abea8eb9ebe..2853269ef3deee 100644 --- a/deps/npm/lib/commands/adduser.js +++ b/deps/npm/lib/commands/adduser.js @@ -3,6 +3,8 @@ const replaceInfo = require('../utils/replace-info.js') const BaseCommand = require('../base-command.js') const authTypes = { legacy: require('../auth/legacy.js'), + web: require('../auth/legacy.js'), + webauthn: require('../auth/legacy.js'), oauth: require('../auth/oauth.js'), saml: require('../auth/saml.js'), sso: require('../auth/sso.js'), @@ -14,6 +16,7 @@ class AddUser extends BaseCommand { static params = [ 'registry', 'scope', + 'auth-type', ] static ignoreImplicitWorkspace = true @@ -26,6 +29,10 @@ class AddUser extends BaseCommand { log.disableProgress() + log.warn('adduser', + '`adduser` will be split into `login` and `register` in a future version.' + + ' `adduser` will become an alias of `register`.' + + ' `login` (currently an alias) will become its own command.') log.notice('', `Log in on ${replaceInfo(registry)}`) const { message, newCreds } = await auth(this.npm, { diff --git a/deps/npm/lib/commands/audit.js b/deps/npm/lib/commands/audit.js index 08d011d8318751..779bc22fc6aaf7 100644 --- a/deps/npm/lib/commands/audit.js +++ b/deps/npm/lib/commands/audit.js @@ -1,8 +1,336 @@ const Arborist = require('@npmcli/arborist') const auditReport = require('npm-audit-report') -const reifyFinish = require('../utils/reify-finish.js') -const auditError = require('../utils/audit-error.js') +const fetch = require('npm-registry-fetch') +const localeCompare = require('@isaacs/string-locale-compare')('en') +const npa = require('npm-package-arg') +const pacote = require('pacote') +const pMap = require('p-map') + const ArboristWorkspaceCmd = require('../arborist-cmd.js') +const auditError = require('../utils/audit-error.js') +const log = require('../utils/log-shim.js') +const reifyFinish = require('../utils/reify-finish.js') + +const sortAlphabetically = (a, b) => localeCompare(a.name, b.name) + +class VerifySignatures { + constructor (tree, filterSet, npm, opts) { + this.tree = tree + this.filterSet = filterSet + this.npm = npm + this.opts = opts + this.keys = new Map() + this.invalid = [] + this.missing = [] + this.checkedPackages = new Set() + this.auditedWithKeysCount = 0 + this.verifiedCount = 0 + this.output = [] + this.exitCode = 0 + } + + async run () { + const start = process.hrtime.bigint() + + // Find all deps in tree + const { edges, registries } = this.getEdgesOut(this.tree.inventory.values(), this.filterSet) + if (edges.size === 0) { + throw new Error('found no installed dependencies to audit') + } + + await Promise.all([...registries].map(registry => this.setKeys({ registry }))) + + const progress = log.newItem('verifying registry signatures', edges.size) + const mapper = async (edge) => { + progress.completeWork(1) + await this.getVerifiedInfo(edge) + } + await pMap(edges, mapper, { concurrency: 20, stopOnError: true }) + + // Didn't find any dependencies that could be verified, e.g. only local + // deps, missing version, not on a registry etc. + if (!this.auditedWithKeysCount) { + throw new Error('found no dependencies to audit that where installed from ' + + 'a supported registry') + } + + const invalid = this.invalid.sort(sortAlphabetically) + const missing = this.missing.sort(sortAlphabetically) + + const hasNoInvalidOrMissing = invalid.length === 0 && missing.length === 0 + + if (!hasNoInvalidOrMissing) { + this.exitCode = 1 + } + + if (this.npm.config.get('json')) { + this.appendOutput(JSON.stringify({ + invalid: this.makeJSON(invalid), + missing: this.makeJSON(missing), + }, null, 2)) + return + } + const end = process.hrtime.bigint() + const elapsed = end - start + + const auditedPlural = this.auditedWithKeysCount > 1 ? 's' : '' + const timing = `audited ${this.auditedWithKeysCount} package${auditedPlural} in ` + + `${Math.floor(Number(elapsed) / 1e9)}s` + this.appendOutput(`${timing}\n`) + + if (this.verifiedCount) { + const verifiedBold = this.npm.chalk.bold('verified') + const msg = this.verifiedCount === 1 ? + `${this.verifiedCount} package has a ${verifiedBold} registry signature\n` : + `${this.verifiedCount} packages have ${verifiedBold} registry signatures\n` + this.appendOutput(msg) + } + + if (missing.length) { + const missingClr = this.npm.chalk.bold(this.npm.chalk.red('missing')) + const msg = missing.length === 1 ? + `package has a ${missingClr} registry signature` : + `packages have ${missingClr} registry signatures` + this.appendOutput( + `${missing.length} ${msg} but the registry is ` + + `providing signing keys:\n` + ) + this.appendOutput(this.humanOutput(missing)) + } + + if (invalid.length) { + const invalidClr = this.npm.chalk.bold(this.npm.chalk.red('invalid')) + const msg = invalid.length === 1 ? + `${invalid.length} package has an ${invalidClr} registry signature:\n` : + `${invalid.length} packages have ${invalidClr} registry signatures:\n` + this.appendOutput( + `${missing.length ? '\n' : ''}${msg}` + ) + this.appendOutput(this.humanOutput(invalid)) + const tamperMsg = invalid.length === 1 ? + `\nSomeone might have tampered with this package since it was ` + + `published on the registry!\n` : + `\nSomeone might have tampered with these packages since they where ` + + `published on the registry!\n` + this.appendOutput(tamperMsg) + } + } + + appendOutput (...args) { + this.output.push(...args.flat()) + } + + report () { + return { report: this.output.join('\n'), exitCode: this.exitCode } + } + + getEdgesOut (nodes, filterSet) { + const edges = new Set() + const registries = new Set() + for (const node of nodes) { + for (const edge of node.edgesOut.values()) { + const filteredOut = + edge.from + && filterSet + && filterSet.size > 0 + && !filterSet.has(edge.from.target) + + if (!filteredOut) { + const spec = this.getEdgeSpec(edge) + if (spec) { + // Prefetch and cache public keys from used registries + registries.add(this.getSpecRegistry(spec)) + } + edges.add(edge) + } + } + } + return { edges, registries } + } + + async setKeys ({ registry }) { + const keys = await fetch.json('/-/npm/v1/keys', { + ...this.npm.flatOptions, + registry, + }).then(({ keys }) => keys.map((key) => ({ + ...key, + pemkey: `-----BEGIN PUBLIC KEY-----\n${key.key}\n-----END PUBLIC KEY-----`, + }))).catch(err => { + if (err.code === 'E404') { + return null + } else { + throw err + } + }) + if (keys) { + this.keys.set(registry, keys) + } + } + + getEdgeType (edge) { + return edge.optional ? 'optionalDependencies' + : edge.peer ? 'peerDependencies' + : edge.dev ? 'devDependencies' + : 'dependencies' + } + + getEdgeSpec (edge) { + let name = edge.name + try { + name = npa(edge.spec).subSpec.name + } catch (_) { + } + try { + return npa(`${name}@${edge.spec}`) + } catch (_) { + // Skip packages with invalid spec + } + } + + buildRegistryConfig (registry) { + const keys = this.keys.get(registry) || [] + const parsedRegistry = new URL(registry) + const regKey = `//${parsedRegistry.host}${parsedRegistry.pathname}` + return { + [`${regKey}:_keys`]: keys, + } + } + + getSpecRegistry (spec) { + return fetch.pickRegistry(spec, this.npm.flatOptions) + } + + getValidPackageInfo (edge) { + const type = this.getEdgeType(edge) + // Skip potentially optional packages that are not on disk, as these could + // be omitted during install + if (edge.error === 'MISSING' && type !== 'dependencies') { + return + } + + const spec = this.getEdgeSpec(edge) + // Skip invalid version requirements + if (!spec) { + return + } + const node = edge.to || edge + const { version } = node.package || {} + + if (node.isWorkspace || // Skip local workspaces packages + !version || // Skip packages that don't have a installed version, e.g. optonal dependencies + !spec.registry) { // Skip if not from registry, e.g. git package + return + } + + for (const omitType of this.npm.config.get('omit')) { + if (node[omitType]) { + return + } + } + + return { + name: spec.name, + version, + type, + location: node.location, + registry: this.getSpecRegistry(spec), + } + } + + async verifySignatures (name, version, registry) { + const { + _integrity: integrity, + _signatures, + _resolved: resolved, + } = await pacote.manifest(`${name}@${version}`, { + verifySignatures: true, + ...this.buildRegistryConfig(registry), + ...this.npm.flatOptions, + }) + const signatures = _signatures || [] + return { + integrity, + signatures, + resolved, + } + } + + async getVerifiedInfo (edge) { + const info = this.getValidPackageInfo(edge) + if (!info) { + return + } + const { name, version, location, registry, type } = info + if (this.checkedPackages.has(location)) { + // we already did or are doing this one + return + } + this.checkedPackages.add(location) + + // We only "audit" or verify the signature, or the presence of it, on + // packages whose registry returns signing keys + const keys = this.keys.get(registry) || [] + if (keys.length) { + this.auditedWithKeysCount += 1 + } + + try { + const { integrity, signatures, resolved } = await this.verifySignatures( + name, version, registry + ) + + // Currently we only care about missing signatures on registries that provide a public key + // We could make this configurable in the future with a strict/paranoid mode + if (signatures.length) { + this.verifiedCount += 1 + } else if (keys.length) { + this.missing.push({ + name, + version, + location, + resolved, + integrity, + registry, + }) + } + } catch (e) { + if (e.code === 'EINTEGRITYSIGNATURE') { + const { signature, keyid, integrity, resolved } = e + this.invalid.push({ + name, + type, + version, + resolved, + location, + integrity, + registry, + signature, + keyid, + }) + } else { + throw e + } + } + } + + humanOutput (list) { + return list.map(v => + `${this.npm.chalk.red(`${v.name}@${v.version}`)} (${v.registry})` + ).join('\n') + } + + makeJSON (deps) { + return deps.map(d => ({ + name: d.name, + version: d.version, + location: d.location, + resolved: d.resolved, + integrity: d.integrity, + signature: d.signature, + keyid: d.keyid, + })) + } +} class Audit extends ArboristWorkspaceCmd { static description = 'Run a security audit' @@ -19,7 +347,7 @@ class Audit extends ArboristWorkspaceCmd { ...super.params, ] - static usage = ['[fix]'] + static usage = ['[fix|signatures]'] async completion (opts) { const argv = opts.conf.argv.remain @@ -32,11 +360,21 @@ class Audit extends ArboristWorkspaceCmd { case 'fix': return [] default: - throw new Error(argv[2] + ' not recognized') + throw Object.assign(new Error(argv[2] + ' not recognized'), { + code: 'EUSAGE', + }) } } async exec (args) { + if (args[0] === 'signatures') { + await this.auditSignatures() + } else { + await this.auditAdvisories(args) + } + } + + async auditAdvisories (args) { const reporter = this.npm.config.get('json') ? 'json' : 'detail' const opts = { ...this.npm.flatOptions, @@ -59,6 +397,44 @@ class Audit extends ArboristWorkspaceCmd { this.npm.output(result.report) } } + + async auditSignatures () { + if (this.npm.global) { + throw Object.assign( + new Error('`npm audit signatures` does not support global packages'), { + code: 'EAUDITGLOBAL', + } + ) + } + + log.verbose('loading installed dependencies') + const opts = { + ...this.npm.flatOptions, + path: this.npm.prefix, + workspaces: this.workspaceNames, + } + + const arb = new Arborist(opts) + const tree = await arb.loadActual() + let filterSet = new Set() + if (opts.workspaces && opts.workspaces.length) { + filterSet = + arb.workspaceDependencySet( + tree, + opts.workspaces, + this.npm.flatOptions.includeWorkspaceRoot + ) + } else if (!this.npm.flatOptions.workspacesEnabled) { + filterSet = + arb.excludeWorkspacesDependencySet(tree) + } + + const verify = new VerifySignatures(tree, filterSet, this.npm, { ...opts }) + await verify.run() + const result = verify.report() + process.exitCode = process.exitCode || result.exitCode + this.npm.output(result.report) + } } module.exports = Audit diff --git a/deps/npm/lib/commands/cache.js b/deps/npm/lib/commands/cache.js index 862f346adb4369..bc52889c0006fb 100644 --- a/deps/npm/lib/commands/cache.js +++ b/deps/npm/lib/commands/cache.js @@ -68,11 +68,7 @@ class Cache extends BaseCommand { static name = 'cache' static params = ['cache'] static usage = [ - 'add ', - 'add ', - 'add ', - 'add ', - 'add @', + 'add ', 'clean []', 'ls [@]', 'verify', diff --git a/deps/npm/lib/commands/deprecate.js b/deps/npm/lib/commands/deprecate.js index 0ae88f1921f566..068bfdbcec717f 100644 --- a/deps/npm/lib/commands/deprecate.js +++ b/deps/npm/lib/commands/deprecate.js @@ -9,7 +9,7 @@ const BaseCommand = require('../base-command.js') class Deprecate extends BaseCommand { static description = 'Deprecate a version of a package' static name = 'deprecate' - static usage = ['[@] '] + static usage = [' '] static params = [ 'registry', 'otp', @@ -60,7 +60,7 @@ class Deprecate extends BaseCommand { packument.versions[v].deprecated = msg }) - return otplease(this.npm.flatOptions, opts => fetch(uri, { + return otplease(this.npm, this.npm.flatOptions, opts => fetch(uri, { ...opts, spec: p, method: 'PUT', diff --git a/deps/npm/lib/commands/dist-tag.js b/deps/npm/lib/commands/dist-tag.js index a207e422cb53c1..8052e4f7e4e38c 100644 --- a/deps/npm/lib/commands/dist-tag.js +++ b/deps/npm/lib/commands/dist-tag.js @@ -12,9 +12,9 @@ class DistTag extends BaseCommand { static params = ['workspace', 'workspaces', 'include-workspace-root'] static name = 'dist-tag' static usage = [ - 'add @ []', - 'rm ', - 'ls []', + 'add []', + 'rm ', + 'ls []', ] static ignoreImplicitWorkspace = false @@ -90,7 +90,7 @@ class DistTag extends BaseCommand { log.verbose('dist-tag add', defaultTag, 'to', spec.name + '@' + version) if (!spec.name || !version || !defaultTag) { - throw this.usageError() + throw this.usageError('must provide a spec with a name and version, and a tag to add') } const t = defaultTag.trim() @@ -116,7 +116,7 @@ class DistTag extends BaseCommand { }, spec, } - await otplease(reqOpts, reqOpts => regFetch(url, reqOpts)) + await otplease(this.npm, reqOpts, reqOpts => regFetch(url, reqOpts)) this.npm.output(`+${t}: ${spec.name}@${version}`) } @@ -142,7 +142,7 @@ class DistTag extends BaseCommand { method: 'DELETE', spec, } - await otplease(reqOpts, reqOpts => regFetch(url, reqOpts)) + await otplease(this.npm, reqOpts, reqOpts => regFetch(url, reqOpts)) this.npm.output(`-${tag}: ${spec.name}@${version}`) } diff --git a/deps/npm/lib/commands/explain.js b/deps/npm/lib/commands/explain.js index ca6ee7540bc916..c0ef04548a4ed3 100644 --- a/deps/npm/lib/commands/explain.js +++ b/deps/npm/lib/commands/explain.js @@ -10,7 +10,7 @@ const ArboristWorkspaceCmd = require('../arborist-cmd.js') class Explain extends ArboristWorkspaceCmd { static description = 'Explain installed packages' static name = 'explain' - static usage = [''] + static usage = [''] static params = [ 'json', 'workspace', diff --git a/deps/npm/lib/commands/fund.js b/deps/npm/lib/commands/fund.js index 09ca81653b0eb3..9690cbc32e0792 100644 --- a/deps/npm/lib/commands/fund.js +++ b/deps/npm/lib/commands/fund.js @@ -20,7 +20,7 @@ class Fund extends ArboristWorkspaceCmd { static description = 'Retrieve funding information' static name = 'fund' static params = ['json', 'browser', 'unicode', 'workspace', 'which'] - static usage = ['[[<@scope>/]]'] + static usage = ['[]'] // TODO /* istanbul ignore next */ diff --git a/deps/npm/lib/commands/hook.js b/deps/npm/lib/commands/hook.js index a4619802d84298..bb3a34b8d2d1b0 100644 --- a/deps/npm/lib/commands/hook.js +++ b/deps/npm/lib/commands/hook.js @@ -22,7 +22,7 @@ class Hook extends BaseCommand { static ignoreImplicitWorkspace = true async exec (args) { - return otplease({ + return otplease(this.npm, { ...this.npm.flatOptions, }, (opts) => { switch (args[0]) { diff --git a/deps/npm/lib/commands/init.js b/deps/npm/lib/commands/init.js index 2a6b6aaddc7e65..b8b6bd5d53e088 100644 --- a/deps/npm/lib/commands/init.js +++ b/deps/npm/lib/commands/init.js @@ -8,18 +8,27 @@ const libexec = require('libnpmexec') const mapWorkspaces = require('@npmcli/map-workspaces') const PackageJson = require('@npmcli/package-json') const log = require('../utils/log-shim.js') +const updateWorkspaces = require('../workspaces/update-workspaces.js') const getLocationMsg = require('../exec/get-workspace-location-msg.js') const BaseCommand = require('../base-command.js') class Init extends BaseCommand { static description = 'Create a package.json file' - static params = ['yes', 'force', 'workspace', 'workspaces', 'include-workspace-root'] + static params = [ + 'yes', + 'force', + 'scope', + 'workspace', + 'workspaces', + 'workspaces-update', + 'include-workspace-root', + ] + static name = 'init' static usage = [ - '[--force|-f|--yes|-y|--scope]', + ' (same as `npx )', '<@scope> (same as `npx <@scope>/create`)', - '[<@scope>/] (same as `npx [<@scope>/]create-`)', ] static ignoreImplicitWorkspace = false @@ -46,11 +55,13 @@ class Init extends BaseCommand { const pkg = await rpj(resolve(this.npm.localPrefix, 'package.json')) const wPath = filterArg => resolve(this.npm.localPrefix, filterArg) + const workspacesPaths = [] // npm-exec style, runs in the context of each workspace filter if (args.length) { for (const filterArg of filters) { const path = wPath(filterArg) await mkdirp(path) + workspacesPaths.push(path) await this.execCreate({ args, path }) await this.setWorkspace({ pkg, workspacePath: path }) } @@ -61,9 +72,13 @@ class Init extends BaseCommand { for (const filterArg of filters) { const path = wPath(filterArg) await mkdirp(path) + workspacesPaths.push(path) await this.template(path) await this.setWorkspace({ pkg, workspacePath: path }) } + + // reify packages once all workspaces have been initialized + await this.update(workspacesPaths) } async execCreate ({ args, path }) { @@ -196,6 +211,34 @@ class Init extends BaseCommand { await pkgJson.save() } + + async update (workspacesPaths) { + // translate workspaces paths into an array containing workspaces names + const workspaces = [] + for (const path of workspacesPaths) { + const pkgPath = resolve(path, 'package.json') + const { name } = await rpj(pkgPath) + .catch(() => ({})) + + if (name) { + workspaces.push(name) + } + } + + const { + config, + flatOptions, + localPrefix, + } = this.npm + + await updateWorkspaces({ + config, + flatOptions, + localPrefix, + npm: this.npm, + workspaces, + }) + } } module.exports = Init diff --git a/deps/npm/lib/commands/install.js b/deps/npm/lib/commands/install.js index 4cda36448317fe..ecc0727a2ef7c4 100644 --- a/deps/npm/lib/commands/install.js +++ b/deps/npm/lib/commands/install.js @@ -34,18 +34,7 @@ class Install extends ArboristWorkspaceCmd { ...super.params, ] - static usage = [ - '[<@scope>/]', - '[<@scope>/]@', - '[<@scope>/]@', - '[<@scope>/]@', - '@npm:', - '', - '', - '', - '', - '/', - ] + static usage = ['[ ...]'] async completion (opts) { const { partialWord } = opts diff --git a/deps/npm/lib/commands/link.js b/deps/npm/lib/commands/link.js index 80a60d36e324e9..b0b889ea787fd5 100644 --- a/deps/npm/lib/commands/link.js +++ b/deps/npm/lib/commands/link.js @@ -15,8 +15,7 @@ class Link extends ArboristWorkspaceCmd { static description = 'Symlink a package folder' static name = 'link' static usage = [ - '(in package dir)', - '[<@scope>/][@]', + '[]', ] static params = [ diff --git a/deps/npm/lib/commands/ls.js b/deps/npm/lib/commands/ls.js index cfd9cb5a5051ca..d3932072b7d348 100644 --- a/deps/npm/lib/commands/ls.js +++ b/deps/npm/lib/commands/ls.js @@ -27,7 +27,7 @@ const localeCompare = require('@isaacs/string-locale-compare')('en') class LS extends ArboristWorkspaceCmd { static description = 'List installed packages' static name = 'ls' - static usage = ['[[<@scope>/] ...]'] + static usage = [''] static params = [ 'all', 'json', diff --git a/deps/npm/lib/commands/org.js b/deps/npm/lib/commands/org.js index e2202a9e9cf3b4..599b4b9c8758a3 100644 --- a/deps/npm/lib/commands/org.js +++ b/deps/npm/lib/commands/org.js @@ -33,7 +33,7 @@ class Org extends BaseCommand { } async exec ([cmd, orgname, username, role], cb) { - return otplease({ + return otplease(this.npm, { ...this.npm.flatOptions, }, opts => { switch (cmd) { diff --git a/deps/npm/lib/commands/outdated.js b/deps/npm/lib/commands/outdated.js index 081e75a2c61d36..042b776f71e0d8 100644 --- a/deps/npm/lib/commands/outdated.js +++ b/deps/npm/lib/commands/outdated.js @@ -15,7 +15,7 @@ const ArboristWorkspaceCmd = require('../arborist-cmd.js') class Outdated extends ArboristWorkspaceCmd { static description = 'Check for outdated packages' static name = 'outdated' - static usage = ['[[<@scope>/] ...]'] + static usage = ['[ ...]'] static params = [ 'all', 'json', diff --git a/deps/npm/lib/commands/owner.js b/deps/npm/lib/commands/owner.js index 4797e9c7ec84b4..824b64e044ecf2 100644 --- a/deps/npm/lib/commands/owner.js +++ b/deps/npm/lib/commands/owner.js @@ -27,9 +27,9 @@ class Owner extends BaseCommand { ] static usage = [ - 'add [<@scope>/]', - 'rm [<@scope>/]', - 'ls [<@scope>/]', + 'add ', + 'rm ', + 'ls ', ] static ignoreImplicitWorkspace = false @@ -202,7 +202,7 @@ class Owner extends BaseCommand { const dataPath = `/${spec.escapedName}/-rev/${encodeURIComponent(data._rev)}` try { - const res = await otplease(this.npm.flatOptions, opts => { + const res = await otplease(this.npm, this.npm.flatOptions, opts => { return npmFetch.json(dataPath, { ...opts, method: 'PUT', diff --git a/deps/npm/lib/commands/pack.js b/deps/npm/lib/commands/pack.js index 8190ceecaf94bc..c6a74804642f66 100644 --- a/deps/npm/lib/commands/pack.js +++ b/deps/npm/lib/commands/pack.js @@ -17,7 +17,7 @@ class Pack extends BaseCommand { 'include-workspace-root', ] - static usage = ['[[<@scope>/]...]'] + static usage = [''] static ignoreImplicitWorkspace = false async exec (args) { diff --git a/deps/npm/lib/commands/profile.js b/deps/npm/lib/commands/profile.js index fcf0eb7d53fa69..27060cf73a6502 100644 --- a/deps/npm/lib/commands/profile.js +++ b/deps/npm/lib/commands/profile.js @@ -221,7 +221,7 @@ class Profile extends BaseCommand { newUser[prop] = value - const result = await otplease(conf, conf => npmProfile.set(newUser, conf)) + const result = await otplease(this.npm, conf, conf => npmProfile.set(newUser, conf)) if (this.npm.config.get('json')) { this.npm.output(JSON.stringify({ [prop]: result[prop] }, null, 2)) diff --git a/deps/npm/lib/commands/publish.js b/deps/npm/lib/commands/publish.js index da6437fa9c58fc..3d17866a684a45 100644 --- a/deps/npm/lib/commands/publish.js +++ b/deps/npm/lib/commands/publish.js @@ -37,7 +37,7 @@ class Publish extends BaseCommand { 'include-workspace-root', ] - static usage = ['[]'] + static usage = [''] static ignoreImplicitWorkspace = false async exec (args) { @@ -61,7 +61,8 @@ class Publish extends BaseCommand { throw new Error('Tag name must not be a valid SemVer range: ' + defaultTag.trim()) } - const opts = { ...this.npm.flatOptions } + const opts = { ...this.npm.flatOptions, progress: false } + log.disableProgress() // you can publish name@version, ./foo.tgz, etc. // even though the default is the 'file:.' cwd. @@ -101,7 +102,7 @@ class Publish extends BaseCommand { const resolved = npa.resolve(manifest.name, manifest.version) const registry = npmFetch.pickRegistry(resolved, opts) const creds = this.npm.config.getCredentialsByURI(registry) - const noCreds = !creds.token && !creds.username + const noCreds = !(creds.token || creds.username || creds.certfile && creds.keyfile) const outputRegistry = replaceInfo(registry) if (noCreds) { @@ -116,7 +117,7 @@ class Publish extends BaseCommand { log.notice('', `Publishing to ${outputRegistry}${dryRun ? ' (dry-run)' : ''}`) if (!dryRun) { - await otplease(opts, opts => libpub(manifest, tarballData, opts)) + await otplease(this.npm, opts, opts => libpub(manifest, tarballData, opts)) } if (spec.type === 'directory' && !ignoreScripts) { diff --git a/deps/npm/lib/commands/rebuild.js b/deps/npm/lib/commands/rebuild.js index 3e6046d8df22b0..d06313ce483a95 100644 --- a/deps/npm/lib/commands/rebuild.js +++ b/deps/npm/lib/commands/rebuild.js @@ -16,7 +16,7 @@ class Rebuild extends ArboristWorkspaceCmd { ...super.params, ] - static usage = ['[[<@scope>/][@] ...]'] + static usage = ['[] ...]'] // TODO /* istanbul ignore next */ diff --git a/deps/npm/lib/commands/run-script.js b/deps/npm/lib/commands/run-script.js index a1591c7900b446..8507dbe79a90e8 100644 --- a/deps/npm/lib/commands/run-script.js +++ b/deps/npm/lib/commands/run-script.js @@ -35,6 +35,7 @@ class RunScript extends BaseCommand { 'include-workspace-root', 'if-present', 'ignore-scripts', + 'foreground-scripts', 'script-shell', ] diff --git a/deps/npm/lib/commands/star.js b/deps/npm/lib/commands/star.js index 7b76be3c1632d5..20039bf8938116 100644 --- a/deps/npm/lib/commands/star.js +++ b/deps/npm/lib/commands/star.js @@ -7,7 +7,7 @@ const BaseCommand = require('../base-command.js') class Star extends BaseCommand { static description = 'Mark your favorite packages' static name = 'star' - static usage = ['[...]'] + static usage = ['[...]'] static params = [ 'registry', 'unicode', diff --git a/deps/npm/lib/commands/team.js b/deps/npm/lib/commands/team.js index 640002456acad0..2d4fc663715e4e 100644 --- a/deps/npm/lib/commands/team.js +++ b/deps/npm/lib/commands/team.js @@ -44,7 +44,7 @@ class Team extends BaseCommand { // XXX: "description" option to libnpmteam is used as a description of the // team, but in npm's options, this is a boolean meaning "show the // description in npm search output". Hence its being set to null here. - await otplease({ ...this.npm.flatOptions }, opts => { + await otplease(this.npm, { ...this.npm.flatOptions }, opts => { entity = entity.replace(/^@/, '') switch (cmd) { case 'create': return this.create(entity, opts) diff --git a/deps/npm/lib/commands/token.js b/deps/npm/lib/commands/token.js index edfb07b9d3a9a4..cf3b8cbee53a4c 100644 --- a/deps/npm/lib/commands/token.js +++ b/deps/npm/lib/commands/token.js @@ -121,7 +121,7 @@ class Token extends BaseCommand { }) await Promise.all( toRemove.map(key => { - return otplease(conf, conf => { + return otplease(this.npm, conf, conf => { return profile.removeToken(key, conf) }) }) @@ -146,7 +146,7 @@ class Token extends BaseCommand { const validCIDR = this.validateCIDRList(cidr) log.info('token', 'creating') return pulseTillDone.withPromise( - otplease(conf, conf => { + otplease(this.npm, conf, conf => { return profile.createToken(password, readonly, validCIDR, conf) }) ) diff --git a/deps/npm/lib/commands/unpublish.js b/deps/npm/lib/commands/unpublish.js index f27be2e41c1078..0e5ef3dc5e91d3 100644 --- a/deps/npm/lib/commands/unpublish.js +++ b/deps/npm/lib/commands/unpublish.js @@ -20,7 +20,7 @@ class Unpublish extends BaseCommand { static description = 'Remove a package from the registry' static name = 'unpublish' static params = ['dry-run', 'force', 'workspace', 'workspaces'] - static usage = ['[<@scope>/][@]'] + static usage = ['[]'] static ignoreImplicitWorkspace = false async getKeysOfVersions (name, opts) { @@ -130,7 +130,7 @@ class Unpublish extends BaseCommand { } if (!dryRun) { - await otplease(opts, opts => libunpub(spec, opts)) + await otplease(this.npm, opts, opts => libunpub(spec, opts)) } if (!silent) { this.npm.output(`- ${pkgName}${pkgVersion}`) diff --git a/deps/npm/lib/commands/version.js b/deps/npm/lib/commands/version.js index ed506f663e89fd..ab59fff5a308cc 100644 --- a/deps/npm/lib/commands/version.js +++ b/deps/npm/lib/commands/version.js @@ -3,9 +3,7 @@ const { resolve } = require('path') const { promisify } = require('util') const readFile = promisify(require('fs').readFile) -const Arborist = require('@npmcli/arborist') -const reifyFinish = require('../utils/reify-finish.js') - +const updateWorkspaces = require('../workspaces/update-workspaces.js') const BaseCommand = require('../base-command.js') class Version extends BaseCommand { @@ -137,32 +135,20 @@ class Version extends BaseCommand { return this.list(results) } - async update (args) { - if (!this.npm.flatOptions.workspacesUpdate || !args.length) { - return - } - - // default behavior is to not save by default in order to avoid - // race condition problems when publishing multiple workspaces - // that have dependencies on one another, it might still be useful - // in some cases, which then need to set --save - const save = this.npm.config.isDefault('save') - ? false - : this.npm.config.get('save') - - // runs a minimalistic reify update, targetting only the workspaces - // that had version updates and skipping fund/audit/save - const opts = { - ...this.npm.flatOptions, - audit: false, - fund: false, - path: this.npm.localPrefix, - save, - } - const arb = new Arborist(opts) - - await arb.reify({ ...opts, update: args }) - await reifyFinish(this.npm, arb) + async update (workspaces) { + const { + config, + flatOptions, + localPrefix, + } = this.npm + + await updateWorkspaces({ + config, + flatOptions, + localPrefix, + npm: this.npm, + workspaces, + }) } } diff --git a/deps/npm/lib/commands/view.js b/deps/npm/lib/commands/view.js index efb298a03bc359..3b8524ad3fc0d5 100644 --- a/deps/npm/lib/commands/view.js +++ b/deps/npm/lib/commands/view.js @@ -33,7 +33,7 @@ class View extends BaseCommand { static ignoreImplicitWorkspace = false - static usage = ['[<@scope>/][@] [[.subfield]...]'] + static usage = ['[] [[.subfield]...]'] async completion (opts) { if (opts.conf.argv.remain.length <= 2) { @@ -236,6 +236,15 @@ class View extends BaseCommand { } }) + // No data has been pushed because no data is matching the specified version + if (data.length === 0 && version !== 'latest') { + const er = new Error(`No match found for version ${version}`) + er.statusCode = 404 + er.code = 'E404' + er.pkgid = `${pckmnt._id}@${version}` + throw er + } + if ( !this.npm.config.get('json') && args.length === 1 && diff --git a/deps/npm/lib/package-url-cmd.js b/deps/npm/lib/package-url-cmd.js index b897272149d027..4254dde4517ba3 100644 --- a/deps/npm/lib/package-url-cmd.js +++ b/deps/npm/lib/package-url-cmd.js @@ -40,6 +40,9 @@ class PackageUrlCommand extends BaseCommand { } async execWorkspaces (args, filters) { + if (args && args.length) { + return this.exec(args) + } await this.setWorkspaces(filters) return this.exec(this.workspacePaths) } diff --git a/deps/npm/lib/utils/config/definitions.js b/deps/npm/lib/utils/config/definitions.js index 92fbbd1e6dc20e..7d6af2473f2bd6 100644 --- a/deps/npm/lib/utils/config/definitions.js +++ b/deps/npm/lib/utils/config/definitions.js @@ -3,6 +3,7 @@ module.exports = definitions const Definition = require('./definition.js') +const log = require('../log-shim') const { version: npmVersion } = require('../../../package.json') const ciDetect = require('@npmcli/ci-detect') const ciName = ciDetect() @@ -238,15 +239,24 @@ define('audit-level', { define('auth-type', { default: 'legacy', - type: ['legacy', 'sso', 'saml', 'oauth'], - deprecated: ` - This method of SSO/SAML/OAuth is deprecated and will be removed in - a future version of npm in favor of web-based login. - `, + type: ['legacy', 'web', 'sso', 'saml', 'oauth', 'webauthn'], + // deprecation in description rather than field, because not every value + // is deprecated description: ` - What authentication strategy to use with \`adduser\`/\`login\`. + NOTE: auth-type values "sso", "saml", "oauth", and "webauthn" will be + removed in a future version. + + What authentication strategy to use with \`login\`. `, - flatten, + flatten (key, obj, flatOptions) { + flatOptions.authType = obj[key] + if (obj[key] === 'sso') { + // no need to deprecate saml/oauth here, as sso-type will be set by these in + // lib/auth/ and is deprecated already + log.warn('config', + '--auth-type=sso is will be removed in a future version.') + } + }, }) define('before', { @@ -426,8 +436,8 @@ define('cert', { cert="-----BEGIN CERTIFICATE-----\\nXXXX\\nXXXX\\n-----END CERTIFICATE-----" \`\`\` - It is _not_ the path to a certificate file (and there is no "certfile" - option). + It is _not_ the path to a certificate file, though you can set a registry-scoped + "certfile" path like "//other-registry.tld/:certfile=/path/to/cert.pem". `, flatten, }) @@ -533,7 +543,7 @@ define('dev', { define('diff', { default: [], - hint: '', + hint: '', type: [String, Array], description: ` Define arguments to compare in \`npm diff\`. @@ -811,9 +821,6 @@ define('global', { default: false, type: Boolean, short: 'g', - deprecated: ` - \`--global\`, \`--local\` are deprecated. Use \`--location=global\` instead. - `, description: ` Operates in "global" mode, so that packages are installed into the \`prefix\` folder instead of the current working directory. See @@ -1111,7 +1118,8 @@ define('key', { key="-----BEGIN PRIVATE KEY-----\\nXXXX\\nXXXX\\n-----END PRIVATE KEY-----" \`\`\` - It is _not_ the path to a key file (and there is no "keyfile" option). + It is _not_ the path to a key file, though you can set a registry-scoped + "keyfile" path like "//other-registry.tld/:keyfile=/path/to/key.pem". `, flatten, }) @@ -1459,7 +1467,7 @@ define('otp', { define('package', { default: [], - hint: '[@]', + hint: '', type: [String, Array], description: ` The package to install for [\`npm exec\`](/commands/npm-exec) @@ -1868,7 +1876,7 @@ define('script-shell', { type: [null, String], description: ` The shell to use for scripts run with the \`npm exec\`, - \`npm run\` and \`npm init \` commands. + \`npm run\` and \`npm init \` commands. `, flatten (key, obj, flatOptions) { flatOptions.scriptShell = obj[key] || undefined diff --git a/deps/npm/lib/utils/get-identity.js b/deps/npm/lib/utils/get-identity.js index f4aedb89b39573..41d882473ab7b1 100644 --- a/deps/npm/lib/utils/get-identity.js +++ b/deps/npm/lib/utils/get-identity.js @@ -9,8 +9,8 @@ module.exports = async (npm, opts) => { return creds.username } - // No username, but we have a token; fetch the username from registry - if (creds.token) { + // No username, but we have other credentials; fetch the username from registry + if (creds.token || creds.certfile && creds.keyfile) { const registryData = await npmFetch.json('/-/whoami', { ...opts }) return registryData.username } diff --git a/deps/npm/lib/utils/open-url-prompt.js b/deps/npm/lib/utils/open-url-prompt.js new file mode 100644 index 00000000000000..3eb3ac288c0355 --- /dev/null +++ b/deps/npm/lib/utils/open-url-prompt.js @@ -0,0 +1,69 @@ +const readline = require('readline') +const opener = require('opener') + +function print (npm, title, url) { + const json = npm.config.get('json') + + const message = json ? JSON.stringify({ title, url }) : `${title}:\n${url}` + + npm.output(message) +} + +// Prompt to open URL in browser if possible +const promptOpen = async (npm, url, title, prompt, emitter) => { + const browser = npm.config.get('browser') + const isInteractive = process.stdin.isTTY === true && process.stdout.isTTY === true + + try { + if (!/^https?:$/.test(new URL(url).protocol)) { + throw new Error() + } + } catch (_) { + throw new Error('Invalid URL: ' + url) + } + + print(npm, title, url) + + if (browser === false || !isInteractive) { + return + } + + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }) + + const tryOpen = await new Promise(resolve => { + rl.question(prompt, () => { + resolve(true) + }) + + if (emitter && emitter.addListener) { + emitter.addListener('abort', () => { + rl.close() + + // clear the prompt line + npm.output('') + + resolve(false) + }) + } + }) + + if (!tryOpen) { + return + } + + const command = browser === true ? null : browser + await new Promise((resolve, reject) => { + opener(url, { command }, err => { + if (err) { + return reject(err) + } + + return resolve() + }) + }) +} + +module.exports = promptOpen diff --git a/deps/npm/lib/utils/otplease.js b/deps/npm/lib/utils/otplease.js index 83985b6bc170d0..0e20e7a797ae04 100644 --- a/deps/npm/lib/utils/otplease.js +++ b/deps/npm/lib/utils/otplease.js @@ -1,17 +1,46 @@ -async function otplease (opts, fn) { +async function otplease (npm, opts, fn) { try { return await fn(opts) } catch (err) { - const readUserInfo = require('./read-user-info.js') - if (err.code !== 'EOTP' && (err.code !== 'E401' || !/one-time pass/.test(err.body))) { + if (!process.stdin.isTTY || !process.stdout.isTTY) { throw err - } else if (!process.stdin.isTTY || !process.stdout.isTTY) { - throw err - } else { + } + + if (isWebOTP(err)) { + const webAuth = require('./web-auth') + const openUrlPrompt = require('./open-url-prompt') + + const openerPromise = (url, emitter) => + openUrlPrompt( + npm, + url, + 'Authenticate your account at', + 'Press ENTER to open in the browser...', + emitter + ) + const otp = await webAuth(openerPromise, err.body.authUrl, err.body.doneUrl, opts) + return await fn({ ...opts, otp }) + } + + if (isClassicOTP(err)) { + const readUserInfo = require('./read-user-info.js') const otp = await readUserInfo.otp('This operation requires a one-time password.\nEnter OTP:') return await fn({ ...opts, otp }) } + + throw err + } +} + +function isWebOTP (err) { + if (!err.code === 'EOTP' || !err.body) { + return false } + return err.body.authUrl && err.body.doneUrl +} + +function isClassicOTP (err) { + return err.code === 'EOTP' || (err.code === 'E401' && /one-time pass/.test(err.body)) } module.exports = otplease diff --git a/deps/npm/lib/utils/web-auth.js b/deps/npm/lib/utils/web-auth.js new file mode 100644 index 00000000000000..ce551687098fc8 --- /dev/null +++ b/deps/npm/lib/utils/web-auth.js @@ -0,0 +1,20 @@ +const EventEmitter = require('events') +const { webAuthCheckLogin } = require('npm-profile') + +async function webAuth (opener, initialUrl, doneUrl, opts) { + const doneEmitter = new EventEmitter() + + const openPromise = opener(initialUrl, doneEmitter) + const webAuthCheckPromise = webAuthCheckLogin(doneUrl, { ...opts, cache: false }) + .then(authResult => { + // cancel open prompt if it's present + doneEmitter.emit('abort') + + return authResult.token + }) + + await openPromise + return await webAuthCheckPromise +} + +module.exports = webAuth diff --git a/deps/npm/lib/workspaces/update-workspaces.js b/deps/npm/lib/workspaces/update-workspaces.js new file mode 100644 index 00000000000000..4cba1245ac2e57 --- /dev/null +++ b/deps/npm/lib/workspaces/update-workspaces.js @@ -0,0 +1,40 @@ +'use strict' + +const Arborist = require('@npmcli/arborist') +const reifyFinish = require('../utils/reify-finish.js') + +async function updateWorkspaces ({ + config, + flatOptions, + localPrefix, + npm, + workspaces, +}) { + if (!flatOptions.workspacesUpdate || !workspaces.length) { + return + } + + // default behavior is to not save by default in order to avoid + // race condition problems when publishing multiple workspaces + // that have dependencies on one another, it might still be useful + // in some cases, which then need to set --save + const save = config.isDefault('save') + ? false + : config.get('save') + + // runs a minimalistic reify update, targetting only the workspaces + // that had version updates and skipping fund/audit/save + const opts = { + ...flatOptions, + audit: false, + fund: false, + path: localPrefix, + save, + } + const arb = new Arborist(opts) + + await arb.reify({ ...opts, update: workspaces }) + await reifyFinish(npm, arb) +} + +module.exports = updateWorkspaces diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1 index 66e859f6a2a6d8..2c3f67180c1c89 100644 --- a/deps/npm/man/man1/npm-access.1 +++ b/deps/npm/man/man1/npm-access.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ACCESS" "1" "May 2022" "" "" +.TH "NPM\-ACCESS" "1" "July 2022" "" "" .SH "NAME" \fBnpm-access\fR \- Set access level on published packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1 index 08a78c48e85522..fc27cef4516a28 100644 --- a/deps/npm/man/man1/npm-adduser.1 +++ b/deps/npm/man/man1/npm-adduser.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ADDUSER" "1" "May 2022" "" "" +.TH "NPM\-ADDUSER" "1" "July 2022" "" "" .SH "NAME" \fBnpm-adduser\fR \- Add a registry user account .SS Synopsis @@ -77,6 +77,19 @@ This will also cause \fBnpm init\fP to create a scoped package\. npm init \-\-scope=@foo \-\-yes .fi .RE +.SS \fBauth\-type\fP +.RS 0 +.IP \(bu 2 +Default: "legacy" +.IP \(bu 2 +Type: "legacy", "web", "sso", "saml", "oauth", or "webauthn" + +.RE +.P +NOTE: auth\-type values "sso", "saml", "oauth", and "webauthn" will be +removed in a future version\. +.P +What authentication strategy to use with \fBlogin\fP\|\. .SS See Also .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man1/npm-audit.1 b/deps/npm/man/man1/npm-audit.1 index d84fdd59e583c3..ac628b8a80c517 100644 --- a/deps/npm/man/man1/npm-audit.1 +++ b/deps/npm/man/man1/npm-audit.1 @@ -1,11 +1,11 @@ -.TH "NPM\-AUDIT" "1" "May 2022" "" "" +.TH "NPM\-AUDIT" "1" "July 2022" "" "" .SH "NAME" \fBnpm-audit\fR \- Run a security audit .SS Synopsis .P .RS 2 .nf -npm audit [fix] +npm audit [fix|signatures] .fi .RE .SS Description @@ -29,6 +29,76 @@ vulnerability is found\. It may be useful in CI environments to include the \fB\-\-audit\-level\fP parameter to specify the minimum vulnerability level that will cause the command to fail\. This option does not filter the report output, it simply changes the command's failure threshold\. +.SS Audit Signatures +.P +To ensure the integrity of packages you download from the public npm registry, or any registry that supports signatures, you can verify the registry signatures of downloaded packages using the npm CLI\. +.P +Registry signatures can be verified using the following \fBaudit\fP command: +.P +.RS 2 +.nf +$ npm audit signatures +.fi +.RE +.P +The npm CLI supports registry signatures and signing keys provided by any registry if the following conventions are followed: +.RS 0 +.IP 1. 3 +Signatures are provided in the package's \fBpackument\fP in each published version within the \fBdist\fP object: + +.RE +.P +.RS 2 +.nf +"dist":{ + "\.\.omitted\.\.": "\.\.omitted\.\.", + "signatures": [{ + "keyid": "SHA256:{{SHA256_PUBLIC_KEY}}", + "sig": "a312b9c3cb4a1b693e8ebac5ee1ca9cc01f2661c14391917dcb111517f72370809\.\.\." + }] +} +.fi +.RE +.P +See this example \fIhttps://registry\.npmjs\.org/light\-cycle/1\.4\.3\fR of a signed package from the public npm registry\. +.P +The \fBsig\fP is generated using the following template: \fB${package\.name}@${package\.version}:${package\.dist\.integrity}\fP and the \fBkeyid\fP has to match one of the public signing keys below\. +.RS 0 +.IP 1. 3 +Public signing keys are provided at \fBregistry\-host\.tld/\-/npm/v1/keys\fP in the following format: + +.RE +.P +.RS 2 +.nf +{ + "keys": [{ + "expires": null, + "keyid": "SHA256:{{SHA256_PUBLIC_KEY}}", + "keytype": "ecdsa\-sha2\-nistp256", + "scheme": "ecdsa\-sha2\-nistp256", + "key": "{{B64_PUBLIC_KEY}}" + }] +} +.fi +.RE +.P +Keys response: +.RS 0 +.IP \(bu 2 +\fBexpires\fP: null or a simplified extended ISO 8601 format: \fBYYYY\-MM\-DDTHH:mm:ss\.sssZ\fP +.IP \(bu 2 +\fBkeydid\fP: sha256 fingerprint of the public key +.IP \(bu 2 +\fBkeytype\fP: only \fBecdsa\-sha2\-nistp256\fP is currently supported by the npm CLI +.IP \(bu 2 +\fBscheme\fP: only \fBecdsa\-sha2\-nistp256\fP is currently supported by the npm CLI +.IP \(bu 2 +\fBkey\fP: base64 encoded public key + +.RE +.P +See this example key's response from the public npm registry\|\. .SS Audit Endpoints .P There are two audit endpoints that npm may use to fetch vulnerability diff --git a/deps/npm/man/man1/npm-bin.1 b/deps/npm/man/man1/npm-bin.1 index 9c6d2ccf4c7723..a3316780613917 100644 --- a/deps/npm/man/man1/npm-bin.1 +++ b/deps/npm/man/man1/npm-bin.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BIN" "1" "May 2022" "" "" +.TH "NPM\-BIN" "1" "July 2022" "" "" .SH "NAME" \fBnpm-bin\fR \- Display npm bin folder .SS Synopsis @@ -20,9 +20,6 @@ Print the folder where npm will install executables\. Default: false .IP \(bu 2 Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. .RE .P diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1 index 1c1ec8a08e28c1..d401d152d4fa9c 100644 --- a/deps/npm/man/man1/npm-bugs.1 +++ b/deps/npm/man/man1/npm-bugs.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUGS" "1" "May 2022" "" "" +.TH "NPM\-BUGS" "1" "July 2022" "" "" .SH "NAME" \fBnpm-bugs\fR \- Report bugs for a package in a web browser .SS Synopsis diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1 index 1b5e5a843725b3..379fdccedd94b7 100644 --- a/deps/npm/man/man1/npm-cache.1 +++ b/deps/npm/man/man1/npm-cache.1 @@ -1,15 +1,11 @@ -.TH "NPM\-CACHE" "1" "May 2022" "" "" +.TH "NPM\-CACHE" "1" "July 2022" "" "" .SH "NAME" \fBnpm-cache\fR \- Manipulates packages cache .SS Synopsis .P .RS 2 .nf -npm cache add -npm cache add -npm cache add -npm cache add -npm cache add @ +npm cache add npm cache clean [] npm cache ls [@] npm cache verify @@ -85,6 +81,8 @@ cache\fP .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help folders .IP \(bu 2 npm help config diff --git a/deps/npm/man/man1/npm-ci.1 b/deps/npm/man/man1/npm-ci.1 index 70182bf407ae5b..316da3a61189ce 100644 --- a/deps/npm/man/man1/npm-ci.1 +++ b/deps/npm/man/man1/npm-ci.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CI" "1" "May 2022" "" "" +.TH "NPM\-CI" "1" "July 2022" "" "" .SH "NAME" \fBnpm-ci\fR \- Clean install a project .SS Synopsis @@ -133,7 +133,7 @@ Type: null or String .RE .P The shell to use for scripts run with the \fBnpm exec\fP, \fBnpm run\fP and \fBnpm -init \fP commands\. +init \fP commands\. .SS See Also .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1 index 87eb098ce92098..6fedc9f5a4cab2 100644 --- a/deps/npm/man/man1/npm-completion.1 +++ b/deps/npm/man/man1/npm-completion.1 @@ -1,4 +1,4 @@ -.TH "NPM\-COMPLETION" "1" "May 2022" "" "" +.TH "NPM\-COMPLETION" "1" "July 2022" "" "" .SH "NAME" \fBnpm-completion\fR \- Tab Completion for npm .SS Synopsis diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1 index 88ffa9aa054c67..1898ee6cdc630e 100644 --- a/deps/npm/man/man1/npm-config.1 +++ b/deps/npm/man/man1/npm-config.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CONFIG" "1" "May 2022" "" "" +.TH "NPM\-CONFIG" "1" "July 2022" "" "" .SH "NAME" \fBnpm-config\fR \- Manage the npm configuration files .SS Synopsis @@ -117,9 +117,6 @@ Not supported by all npm commands\. Default: false .IP \(bu 2 Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. .RE .P diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1 index c337c715017a57..cdae87193198e6 100644 --- a/deps/npm/man/man1/npm-dedupe.1 +++ b/deps/npm/man/man1/npm-dedupe.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DEDUPE" "1" "May 2022" "" "" +.TH "NPM\-DEDUPE" "1" "July 2022" "" "" .SH "NAME" \fBnpm-dedupe\fR \- Reduce duplication in the package tree .SS Synopsis diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1 index 594b1689b73f62..ba9c1d083e9bf1 100644 --- a/deps/npm/man/man1/npm-deprecate.1 +++ b/deps/npm/man/man1/npm-deprecate.1 @@ -1,11 +1,11 @@ -.TH "NPM\-DEPRECATE" "1" "May 2022" "" "" +.TH "NPM\-DEPRECATE" "1" "July 2022" "" "" .SH "NAME" \fBnpm-deprecate\fR \- Deprecate a version of a package .SS Synopsis .P .RS 2 .nf -npm deprecate [@] +npm deprecate .fi .RE .P @@ -38,8 +38,8 @@ In this case, a version \fBmy\-thing@1\.0\.0\-beta\.0\fP will also be deprecated You must be the package owner to deprecate something\. See the \fBowner\fP and \fBadduser\fP help topics\. .P -To un\-deprecate a package, specify an empty string (\fB""\fP) for the \fBmessage\fP -argument\. Note that you must use double quotes with no space between them to +To un\-deprecate a package, specify an empty string (\fB""\fP) for the \fBmessage\fP +argument\. Note that you must use double quotes with no space between them to format an empty string\. .SS Configuration .SS \fBregistry\fP @@ -69,6 +69,8 @@ password, npm will prompt on the command line for one\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help publish .IP \(bu 2 npm help registry diff --git a/deps/npm/man/man1/npm-diff.1 b/deps/npm/man/man1/npm-diff.1 index d32c343f064372..6d5f0eb2c64e00 100644 --- a/deps/npm/man/man1/npm-diff.1 +++ b/deps/npm/man/man1/npm-diff.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DIFF" "1" "May 2022" "" "" +.TH "NPM\-DIFF" "1" "July 2022" "" "" .SH "NAME" \fBnpm-diff\fR \- The registry diff command .SS Synopsis @@ -232,9 +232,6 @@ Treat all files as text in \fBnpm diff\fP\|\. Default: false .IP \(bu 2 Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. .RE .P diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1 index 33166e1c45a244..b96b7c26e4f7d2 100644 --- a/deps/npm/man/man1/npm-dist-tag.1 +++ b/deps/npm/man/man1/npm-dist-tag.1 @@ -1,13 +1,13 @@ -.TH "NPM\-DIST\-TAG" "1" "May 2022" "" "" +.TH "NPM\-DIST\-TAG" "1" "July 2022" "" "" .SH "NAME" \fBnpm-dist-tag\fR \- Modify package distribution tags .SS Synopsis .P .RS 2 .nf -npm dist\-tag add @ [] -npm dist\-tag rm -npm dist\-tag ls [] +npm dist\-tag add [] +npm dist\-tag rm +npm dist\-tag ls [] alias: dist\-tags .fi @@ -17,11 +17,11 @@ alias: dist\-tags Add, remove, and enumerate distribution tags on a package: .RS 0 .IP \(bu 2 -add: Tags the specified version of the package with the specified tag, or -the \fB\-\-tag\fP config if not specified\. If you have two\-factor -authentication on auth\-and\-writes then you’ll need to include a one\-time -password on the command line with \fB\-\-otp \fP, or at the -OTP prompt\. +add: Tags the specified version of the package with the specified tag, +or the \fB\-\-tag\fP config if not specified\. If you have two\-factor +authentication on auth\-and\-writes then you’ll need to include a +one\-time password on the command line with +\fB\-\-otp \fP, or at the OTP prompt\. .IP \(bu 2 rm: Clear a tag that is no longer in use from the package\. If you have two\-factor authentication on auth\-and\-writes then you’ll need to include @@ -164,6 +164,8 @@ This value is not exported to the environment for child processes\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help publish .IP \(bu 2 npm help install diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1 index e7dc87e834e440..d15191dd13ab94 100644 --- a/deps/npm/man/man1/npm-docs.1 +++ b/deps/npm/man/man1/npm-docs.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DOCS" "1" "May 2022" "" "" +.TH "NPM\-DOCS" "1" "July 2022" "" "" .SH "NAME" \fBnpm-docs\fR \- Open documentation for a package in a web browser .SS Synopsis diff --git a/deps/npm/man/man1/npm-doctor.1 b/deps/npm/man/man1/npm-doctor.1 index 4c7dd20a9df826..aa4affb8908d37 100644 --- a/deps/npm/man/man1/npm-doctor.1 +++ b/deps/npm/man/man1/npm-doctor.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DOCTOR" "1" "May 2022" "" "" +.TH "NPM\-DOCTOR" "1" "July 2022" "" "" .SH "NAME" \fBnpm-doctor\fR \- Check your npm environment .SS Synopsis diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1 index d5e4fd9398fa6d..7b0725b669c44d 100644 --- a/deps/npm/man/man1/npm-edit.1 +++ b/deps/npm/man/man1/npm-edit.1 @@ -1,4 +1,4 @@ -.TH "NPM\-EDIT" "1" "May 2022" "" "" +.TH "NPM\-EDIT" "1" "July 2022" "" "" .SH "NAME" \fBnpm-edit\fR \- Edit an installed package .SS Synopsis diff --git a/deps/npm/man/man1/npm-exec.1 b/deps/npm/man/man1/npm-exec.1 index 1203e1427e0b90..f29a7bcb7d77b4 100644 --- a/deps/npm/man/man1/npm-exec.1 +++ b/deps/npm/man/man1/npm-exec.1 @@ -1,4 +1,4 @@ -.TH "NPM\-EXEC" "1" "May 2022" "" "" +.TH "NPM\-EXEC" "1" "July 2022" "" "" .SH "NAME" \fBnpm-exec\fR \- Run a command from a local or remote npm package .SS Synopsis diff --git a/deps/npm/man/man1/npm-explain.1 b/deps/npm/man/man1/npm-explain.1 index 29866d5c36b214..0a0dd0a14991c4 100644 --- a/deps/npm/man/man1/npm-explain.1 +++ b/deps/npm/man/man1/npm-explain.1 @@ -1,11 +1,11 @@ -.TH "NPM\-EXPLAIN" "1" "May 2022" "" "" +.TH "NPM\-EXPLAIN" "1" "July 2022" "" "" .SH "NAME" \fBnpm-explain\fR \- Explain installed packages .SS Synopsis .P .RS 2 .nf -npm explain +npm explain alias: why .fi @@ -15,9 +15,10 @@ alias: why This command will print the chain of dependencies causing a given package to be installed in the current project\. .P -Positional arguments can be either folders within \fBnode_modules\fP, or -\fBname@version\-range\fP specifiers, which will select the dependency -relationships to explain\. +If one or more package specs are provided, then only packages matching +one of the specifiers will have their relationships explained\. +.P +The package spec can also refer to a folder within \fB\|\./node_modules\fP .P For example, running \fBnpm explain glob\fP within npm's source tree will show: .P @@ -106,6 +107,8 @@ This value is not exported to the environment for child processes\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help config .IP \(bu 2 npm help npmrc diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1 index 266248676dfacb..e46d75eec6a2b7 100644 --- a/deps/npm/man/man1/npm-explore.1 +++ b/deps/npm/man/man1/npm-explore.1 @@ -1,4 +1,4 @@ -.TH "NPM\-EXPLORE" "1" "May 2022" "" "" +.TH "NPM\-EXPLORE" "1" "July 2022" "" "" .SH "NAME" \fBnpm-explore\fR \- Browse an installed package .SS Synopsis diff --git a/deps/npm/man/man1/npm-find-dupes.1 b/deps/npm/man/man1/npm-find-dupes.1 index 4f1652d54bb5bc..6c5aa7e1b43131 100644 --- a/deps/npm/man/man1/npm-find-dupes.1 +++ b/deps/npm/man/man1/npm-find-dupes.1 @@ -1,4 +1,4 @@ -.TH "NPM\-FIND\-DUPES" "1" "May 2022" "" "" +.TH "NPM\-FIND\-DUPES" "1" "July 2022" "" "" .SH "NAME" \fBnpm-find-dupes\fR \- Find duplication in the package tree .SS Synopsis diff --git a/deps/npm/man/man1/npm-fund.1 b/deps/npm/man/man1/npm-fund.1 index 44d848357d5281..06612675a4a0da 100644 --- a/deps/npm/man/man1/npm-fund.1 +++ b/deps/npm/man/man1/npm-fund.1 @@ -1,31 +1,31 @@ -.TH "NPM\-FUND" "1" "May 2022" "" "" +.TH "NPM\-FUND" "1" "July 2022" "" "" .SH "NAME" \fBnpm-fund\fR \- Retrieve funding information .SS Synopsis .P .RS 2 .nf -npm fund [[<@scope>/]] +npm fund [] .fi .RE .SS Description .P This command retrieves information on how to fund the dependencies of a given project\. If no package name is provided, it will list all -dependencies that are looking for funding in a tree structure, listing the -type of funding and the url to visit\. If a package name is provided then it -tries to open its funding url using the \fB\-\-browser\fP config param; if there -are multiple funding sources for the package, the user will be instructed -to pass the \fB\-\-which\fP option to disambiguate\. +dependencies that are looking for funding in a tree structure, listing +the type of funding and the url to visit\. If a package name is provided +then it tries to open its funding url using the \fB\-\-browser\fP config +param; if there are multiple funding sources for the package, the user +will be instructed to pass the \fB\-\-which\fP option to disambiguate\. .P The list will avoid duplicated entries and will stack all packages that -share the same url as a single entry\. Thus, the list does not have the same -shape of the output from \fBnpm ls\fP\|\. +share the same url as a single entry\. Thus, the list does not have the +same shape of the output from \fBnpm ls\fP\|\. .SS Example .SS Workspaces support .P -It's possible to filter the results to only include a single workspace and its -dependencies using the \fBworkspace\fP config option\. +It's possible to filter the results to only include a single workspace +and its dependencies using the \fBworkspace\fP config option\. .SS Example: .P Here's an example running \fBnpm fund\fP in a project with a configured @@ -46,8 +46,8 @@ test\-workspaces\-fund@1\.0\.0 .fi .RE .P -And here is an example of the expected result when filtering only by -a specific workspace \fBa\fP in the same project: +And here is an example of the expected result when filtering only by a +specific workspace \fBa\fP in the same project: .P .RS 2 .nf @@ -148,6 +148,8 @@ If there are multiple funding sources, which 1\-indexed source URL to open\. .SH See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help install .IP \(bu 2 npm help docs diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1 index f4e9ec4c91e4d5..69b13814f1af26 100644 --- a/deps/npm/man/man1/npm-help-search.1 +++ b/deps/npm/man/man1/npm-help-search.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HELP\-SEARCH" "1" "May 2022" "" "" +.TH "NPM\-HELP\-SEARCH" "1" "July 2022" "" "" .SH "NAME" \fBnpm-help-search\fR \- Search npm help documentation .SS Synopsis diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1 index 83cb8f92d04db8..7c541c114df917 100644 --- a/deps/npm/man/man1/npm-help.1 +++ b/deps/npm/man/man1/npm-help.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HELP" "1" "May 2022" "" "" +.TH "NPM\-HELP" "1" "July 2022" "" "" .SH "NAME" \fBnpm-help\fR \- Get help on npm .SS Synopsis diff --git a/deps/npm/man/man1/npm-hook.1 b/deps/npm/man/man1/npm-hook.1 index 27b8888c8cda20..0eee4018b4eac4 100644 --- a/deps/npm/man/man1/npm-hook.1 +++ b/deps/npm/man/man1/npm-hook.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HOOK" "1" "May 2022" "" "" +.TH "NPM\-HOOK" "1" "July 2022" "" "" .SH "NAME" \fBnpm-hook\fR \- Manage registry hooks .SS Synopsis diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1 index 829b1b4752bdb5..50334564f99085 100644 --- a/deps/npm/man/man1/npm-init.1 +++ b/deps/npm/man/man1/npm-init.1 @@ -1,13 +1,12 @@ -.TH "NPM\-INIT" "1" "May 2022" "" "" +.TH "NPM\-INIT" "1" "July 2022" "" "" .SH "NAME" \fBnpm-init\fR \- Create a package\.json file .SS Synopsis .P .RS 2 .nf -npm init [\-\-force|\-f|\-\-yes|\-y|\-\-scope] +npm init (same as `npx ) npm init <@scope> (same as `npx <@scope>/create`) -npm init [<@scope>/] (same as `npx [<@scope>/]create\-`) aliases: create, innit .fi @@ -232,6 +231,42 @@ Allow unpublishing of entire packages (not just a single version)\. .P If you don't have a clear idea of what you want to do, it is strongly recommended that you do not use this option! +.SS \fBscope\fP +.RS 0 +.IP \(bu 2 +Default: the scope of the current project, if any, or "" +.IP \(bu 2 +Type: String + +.RE +.P +Associate an operation with a scope for a scoped registry\. +.P +Useful when logging in to or out of a private registry: +.P +.RS 2 +.nf +# log in, linking the scope to the custom registry +npm login \-\-scope=@mycorp \-\-registry=https://registry\.mycorp\.com + +# log out, removing the link and the auth token +npm logout \-\-scope=@mycorp +.fi +.RE +.P +This will cause \fB@mycorp\fP to be mapped to the registry for future +installation of packages specified according to the pattern +\fB@mycorp/package\fP\|\. +.P +This will also cause \fBnpm init\fP to create a scoped package\. +.P +.RS 2 +.nf +# accept all defaults, and create a package named "@foo/whatever", +# instead of just named "whatever" +npm init \-\-scope=@foo \-\-yes +.fi +.RE .SS \fBworkspace\fP .RS 0 .IP \(bu 2 @@ -286,6 +321,17 @@ other things (test, exec, publish, etc\.) will operate on the root project, .RE .P This value is not exported to the environment for child processes\. +.SS \fBworkspaces\-update\fP +.RS 0 +.IP \(bu 2 +Default: true +.IP \(bu 2 +Type: Boolean + +.RE +.P +If set to true, the npm cli will run an update after operations that may +possibly change the workspaces installed to the \fBnode_modules\fP folder\. .SS \fBinclude\-workspace\-root\fP .RS 0 .IP \(bu 2 @@ -305,6 +351,8 @@ This value is not exported to the environment for child processes\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 init\-package\-json module \fIhttp://npm\.im/init\-package\-json\fR .IP \(bu 2 npm help package\.json diff --git a/deps/npm/man/man1/npm-install-ci-test.1 b/deps/npm/man/man1/npm-install-ci-test.1 index aeddd06d146dda..59fb33b10bdafc 100644 --- a/deps/npm/man/man1/npm-install-ci-test.1 +++ b/deps/npm/man/man1/npm-install-ci-test.1 @@ -1,4 +1,4 @@ -.TH "NPM\-INSTALL\-CI\-TEST" "1" "May 2022" "" "" +.TH "NPM\-INSTALL\-CI\-TEST" "1" "July 2022" "" "" .SH "NAME" \fBnpm-install-ci-test\fR \- Install a project with a clean slate and run tests .SS Synopsis @@ -67,7 +67,7 @@ Type: null or String .RE .P The shell to use for scripts run with the \fBnpm exec\fP, \fBnpm run\fP and \fBnpm -init \fP commands\. +init \fP commands\. .SS See Also .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1 index e29397bf940453..0cd44530fd7e0b 100644 --- a/deps/npm/man/man1/npm-install-test.1 +++ b/deps/npm/man/man1/npm-install-test.1 @@ -1,20 +1,11 @@ -.TH "NPM\-INSTALL\-TEST" "1" "May 2022" "" "" +.TH "NPM\-INSTALL\-TEST" "1" "July 2022" "" "" .SH "NAME" \fBnpm-install-test\fR \- Install package(s) and run tests .SS Synopsis .P .RS 2 .nf -npm install\-test [<@scope>/] -npm install\-test [<@scope>/]@ -npm install\-test [<@scope>/]@ -npm install\-test [<@scope>/]@ -npm install\-test @npm: -npm install\-test -npm install\-test -npm install\-test -npm install\-test -npm install\-test / +npm install\-test [ \.\.\.] alias: it .fi @@ -56,9 +47,6 @@ rather than using npm's default semver range operator\. Default: false .IP \(bu 2 Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. .RE .P diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1 index 4bb41f2d7b4670..43adfbe9e4b5f0 100644 --- a/deps/npm/man/man1/npm-install.1 +++ b/deps/npm/man/man1/npm-install.1 @@ -1,20 +1,11 @@ -.TH "NPM\-INSTALL" "1" "May 2022" "" "" +.TH "NPM\-INSTALL" "1" "July 2022" "" "" .SH "NAME" \fBnpm-install\fR \- Install a package .SS Synopsis .P .RS 2 .nf -npm install [<@scope>/] -npm install [<@scope>/]@ -npm install [<@scope>/]@ -npm install [<@scope>/]@ -npm install @npm: -npm install -npm install -npm install -npm install -npm install / +npm install [ \.\.\.] aliases: add, i, in, ins, inst, insta, instal, isnt, isnta, isntal, isntall .fi @@ -467,9 +458,6 @@ rather than using npm's default semver range operator\. Default: false .IP \(bu 2 Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. .RE .P diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1 index 1b982044e48d69..8943060964e156 100644 --- a/deps/npm/man/man1/npm-link.1 +++ b/deps/npm/man/man1/npm-link.1 @@ -1,12 +1,11 @@ -.TH "NPM\-LINK" "1" "May 2022" "" "" +.TH "NPM\-LINK" "1" "July 2022" "" "" .SH "NAME" \fBnpm-link\fR \- Symlink a package folder .SS Synopsis .P .RS 2 .nf -npm link (in package dir) -npm link [<@scope>/][@] +npm link [] alias: ln .fi @@ -18,11 +17,11 @@ test iteratively without having to continually rebuild\. .P Package linking is a two\-step process\. .P -First, \fBnpm link\fP in a package folder will create a symlink in the global -folder \fB{prefix}/lib/node_modules/\fP that links to the package -where the \fBnpm link\fP command was executed\. It will also link any bins in -the package to \fB{prefix}/bin/{name}\fP\|\. Note that \fBnpm link\fP uses the global -prefix (see \fBnpm prefix \-g\fP for its value)\. +First, \fBnpm link\fP in a package folder with no arguments will create a +symlink in the global folder \fB{prefix}/lib/node_modules/\fP that +links to the package where the \fBnpm link\fP command was executed\. It will +also link any bins in the package to \fB{prefix}/bin/{name}\fP\|\. Note that +\fBnpm link\fP uses the global prefix (see \fBnpm prefix \-g\fP for its value)\. .P Next, in some other location, \fBnpm link package\-name\fP will create a symbolic link from globally\-installed \fBpackage\-name\fP to \fBnode_modules/\fP of @@ -145,9 +144,6 @@ rather than using npm's default semver range operator\. Default: false .IP \(bu 2 Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. .RE .P @@ -404,6 +400,8 @@ symlink\. This option has no effect on workspaces\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help developers .IP \(bu 2 npm help package\.json diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1 index 8307918100789e..1e0d35f9005bb8 100644 --- a/deps/npm/man/man1/npm-logout.1 +++ b/deps/npm/man/man1/npm-logout.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LOGOUT" "1" "May 2022" "" "" +.TH "NPM\-LOGOUT" "1" "July 2022" "" "" .SH "NAME" \fBnpm-logout\fR \- Log out of the registry .SS Synopsis diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1 index 1efd612984c8dd..511f481a6ea9fd 100644 --- a/deps/npm/man/man1/npm-ls.1 +++ b/deps/npm/man/man1/npm-ls.1 @@ -1,11 +1,11 @@ -.TH "NPM\-LS" "1" "May 2022" "" "" +.TH "NPM\-LS" "1" "July 2022" "" "" .SH "NAME" \fBnpm-ls\fR \- List installed packages .SS Synopsis .P .RS 2 .nf -npm ls [[<@scope>/] \.\.\.] +npm ls alias: list .fi @@ -26,7 +26,7 @@ example, running \fBnpm ls promzard\fP in npm's source tree will show: .P .RS 2 .nf -npm@8\.11\.0 /path/to/npm +npm@8\.15\.0 /path/to/npm └─┬ init\-package\-json@0\.0\.4 └── promzard@0\.1\.5 .fi @@ -127,9 +127,6 @@ Output parseable results from commands that write to standard output\. For Default: false .IP \(bu 2 Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. .RE .P @@ -304,6 +301,8 @@ symlink\. This option has no effect on workspaces\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help explain .IP \(bu 2 npm help config diff --git a/deps/npm/man/man1/npm-org.1 b/deps/npm/man/man1/npm-org.1 index 28d623b204b760..9545a27ced04f9 100644 --- a/deps/npm/man/man1/npm-org.1 +++ b/deps/npm/man/man1/npm-org.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ORG" "1" "May 2022" "" "" +.TH "NPM\-ORG" "1" "July 2022" "" "" .SH "NAME" \fBnpm-org\fR \- Manage orgs .SS Synopsis diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1 index 03bcf925884496..b18a2bd064b137 100644 --- a/deps/npm/man/man1/npm-outdated.1 +++ b/deps/npm/man/man1/npm-outdated.1 @@ -1,11 +1,11 @@ -.TH "NPM\-OUTDATED" "1" "May 2022" "" "" +.TH "NPM\-OUTDATED" "1" "July 2022" "" "" .SH "NAME" \fBnpm-outdated\fR \- Check for outdated packages .SS Synopsis .P .RS 2 .nf -npm outdated [[<@scope>/] \.\.\.] +npm outdated [ \.\.\.] .fi .RE .SS Description @@ -159,9 +159,6 @@ Output parseable results from commands that write to standard output\. For Default: false .IP \(bu 2 Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. .RE .P @@ -211,6 +208,8 @@ This value is not exported to the environment for child processes\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help update .IP \(bu 2 npm help dist\-tag diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1 index 09f488ed8ea57f..ebdf9f719c8412 100644 --- a/deps/npm/man/man1/npm-owner.1 +++ b/deps/npm/man/man1/npm-owner.1 @@ -1,13 +1,13 @@ -.TH "NPM\-OWNER" "1" "May 2022" "" "" +.TH "NPM\-OWNER" "1" "July 2022" "" "" .SH "NAME" \fBnpm-owner\fR \- Manage package owners .SS Synopsis .P .RS 2 .nf -npm owner add [<@scope>/] -npm owner rm [<@scope>/] -npm owner ls [<@scope>/] +npm owner add +npm owner rm +npm owner ls alias: author .fi @@ -119,6 +119,8 @@ This value is not exported to the environment for child processes\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help profile .IP \(bu 2 npm help publish diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1 index 94a0df9efc3bb5..f89580c2090606 100644 --- a/deps/npm/man/man1/npm-pack.1 +++ b/deps/npm/man/man1/npm-pack.1 @@ -1,11 +1,11 @@ -.TH "NPM\-PACK" "1" "May 2022" "" "" +.TH "NPM\-PACK" "1" "July 2022" "" "" .SH "NAME" \fBnpm-pack\fR \- Create a tarball from a package .SS Synopsis .P .RS 2 .nf -npm pack [[<@scope>/]\.\.\.] +npm pack .fi .RE .SS Configuration @@ -138,6 +138,8 @@ If no arguments are supplied, then npm packs the current package folder\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm\-packlist package \fIhttp://npm\.im/npm\-packlist\fR .IP \(bu 2 npm help cache diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1 index bf065b16f1573d..c60ce739dfea26 100644 --- a/deps/npm/man/man1/npm-ping.1 +++ b/deps/npm/man/man1/npm-ping.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PING" "1" "May 2022" "" "" +.TH "NPM\-PING" "1" "July 2022" "" "" .SH "NAME" \fBnpm-ping\fR \- Ping npm registry .SS Synopsis diff --git a/deps/npm/man/man1/npm-pkg.1 b/deps/npm/man/man1/npm-pkg.1 index 1307a6664b1e64..9bffc812fc6f84 100644 --- a/deps/npm/man/man1/npm-pkg.1 +++ b/deps/npm/man/man1/npm-pkg.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PKG" "1" "May 2022" "" "" +.TH "NPM\-PKG" "1" "July 2022" "" "" .SH "NAME" \fBnpm-pkg\fR \- Manages your package\.json .SS Synopsis diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1 index e053f315ff3d08..fcc9f57bcfbb13 100644 --- a/deps/npm/man/man1/npm-prefix.1 +++ b/deps/npm/man/man1/npm-prefix.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PREFIX" "1" "May 2022" "" "" +.TH "NPM\-PREFIX" "1" "July 2022" "" "" .SH "NAME" \fBnpm-prefix\fR \- Display prefix .SS Synopsis @@ -40,9 +40,6 @@ npm prefix \-g Default: false .IP \(bu 2 Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. .RE .P diff --git a/deps/npm/man/man1/npm-profile.1 b/deps/npm/man/man1/npm-profile.1 index a7a1733b63d179..285f4e118be6ea 100644 --- a/deps/npm/man/man1/npm-profile.1 +++ b/deps/npm/man/man1/npm-profile.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PROFILE" "1" "May 2022" "" "" +.TH "NPM\-PROFILE" "1" "July 2022" "" "" .SH "NAME" \fBnpm-profile\fR \- Change settings on your registry profile .SS Synopsis diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1 index a0d23793206b3b..0a3c631fb57dc1 100644 --- a/deps/npm/man/man1/npm-prune.1 +++ b/deps/npm/man/man1/npm-prune.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PRUNE" "1" "May 2022" "" "" +.TH "NPM\-PRUNE" "1" "July 2022" "" "" .SH "NAME" \fBnpm-prune\fR \- Remove extraneous packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1 index 241f7cffd2045f..664e5664ba95d7 100644 --- a/deps/npm/man/man1/npm-publish.1 +++ b/deps/npm/man/man1/npm-publish.1 @@ -1,54 +1,43 @@ -.TH "NPM\-PUBLISH" "1" "May 2022" "" "" +.TH "NPM\-PUBLISH" "1" "July 2022" "" "" .SH "NAME" \fBnpm-publish\fR \- Publish a package .SS Synopsis .P .RS 2 .nf -npm publish [] +npm publish .fi .RE .SS Description .P Publishes a package to the registry so that it can be installed by name\. .P -By default npm will publish to the public registry\. This can be overridden -by specifying a different default registry or using a -npm help \fBscope\fP in the name (see +By default npm will publish to the public registry\. This can be +overridden by specifying a different default registry or using a +npm help \fBscope\fP in the name, combined with a +scope\-configured registry (see npm help \fBpackage\.json\fP)\. +.P +A \fBpackage\fP is interpreted the same way as other commands (like +\fBnpm install\fP and can be: .RS 0 .IP \(bu 2 -\fB\fP: A folder containing a package\.json file -.IP \(bu 2 -\fB\fP: A url or file path to a gzipped tar archive containing a -single folder with a package\.json file inside\. +a) a folder containing a program described by a +npm help \fBpackage\.json\fP file .IP \(bu 2 -\fB[\-\-tag ]\fP: Registers the published package with the given tag, such -that \fBnpm install @\fP will install this version\. By default, -\fBnpm publish\fP updates and \fBnpm install\fP installs the \fBlatest\fP tag\. See -\fBnpm\-dist\-tag\fP \fInpm\-dist\-tag\fR for details about tags\. +b) a gzipped tarball containing (a) .IP \(bu 2 -\fB[\-\-access ]\fP: Tells the registry whether this package -should be published as public or restricted\. Only applies to scoped -packages, which default to \fBrestricted\fP\|\. If you don't have a paid -account, you must publish with \fB\-\-access public\fP to publish scoped -packages\. +c) a url that resolves to (b) .IP \(bu 2 -\fB[\-\-otp ]\fP: If you have two\-factor authentication enabled in -\fBauth\-and\-writes\fP mode then you can provide a code from your -authenticator with this\. If you don't include this and you're running -from a TTY then you'll be prompted\. +d) a \fB@\fP that is published on the registry (see +npm help \fBregistry\fP) with (c) .IP \(bu 2 -\fB[\-\-dry\-run]\fP: As of \fBnpm@6\fP, does everything publish would do except -actually publishing to the registry\. Reports the details of what would -have been published\. +e) a \fB@\fP (see npm help \fBdist\-tag\fP) that +points to (d) .IP \(bu 2 -\fB[\-\-workspaces]\fP: Enables workspace context while publishing\. All -workspace packages will be published\. +f) a \fB\fP that has a "latest" tag satisfying (e) .IP \(bu 2 -\fB[\-\-workspace]\fP: Enables workspaces context and limits results to only -those specified by this config item\. Only the packages in the -workspaces given will be published\. +g) a \fB\fP that resolves to (a) .RE .P @@ -241,6 +230,8 @@ This value is not exported to the environment for child processes\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm\-packlist package \fIhttp://npm\.im/npm\-packlist\fR .IP \(bu 2 npm help registry diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1 index f3c51a34e49030..a59bfb49bf9c17 100644 --- a/deps/npm/man/man1/npm-rebuild.1 +++ b/deps/npm/man/man1/npm-rebuild.1 @@ -1,11 +1,11 @@ -.TH "NPM\-REBUILD" "1" "May 2022" "" "" +.TH "NPM\-REBUILD" "1" "July 2022" "" "" .SH "NAME" \fBnpm-rebuild\fR \- Rebuild a package .SS Synopsis .P .RS 2 .nf -npm rebuild [[<@scope>/][@] \.\.\.] +npm rebuild [] \.\.\.] alias: rb .fi @@ -18,9 +18,8 @@ C++ addons with the new binary\. It is also useful when installing with \fB\-\-ignore\-scripts\fP and \fB\-\-no\-bin\-links\fP, to explicitly choose which packages to build and/or link bins\. .P -If one or more package names (and optionally version ranges) are provided, -then only packages with a name and version matching one of the specifiers -will be rebuilt\. +If one or more package specs are provided, then only packages with a +name and version matching one of the specifiers will be rebuilt\. .SS Configuration .SS \fBglobal\fP .RS 0 @@ -28,9 +27,6 @@ will be rebuilt\. Default: false .IP \(bu 2 Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. .RE .P @@ -177,6 +173,8 @@ symlink\. This option has no effect on workspaces\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help install .RE diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1 index 7b9993a2fd7b60..a56585cfe18840 100644 --- a/deps/npm/man/man1/npm-repo.1 +++ b/deps/npm/man/man1/npm-repo.1 @@ -1,4 +1,4 @@ -.TH "NPM\-REPO" "1" "May 2022" "" "" +.TH "NPM\-REPO" "1" "July 2022" "" "" .SH "NAME" \fBnpm-repo\fR \- Open package repository page in the browser .SS Synopsis diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1 index 9866fa5792cd6d..99da68ba9ae4e5 100644 --- a/deps/npm/man/man1/npm-restart.1 +++ b/deps/npm/man/man1/npm-restart.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RESTART" "1" "May 2022" "" "" +.TH "NPM\-RESTART" "1" "July 2022" "" "" .SH "NAME" \fBnpm-restart\fR \- Restart a package .SS Synopsis @@ -72,7 +72,7 @@ Type: null or String .RE .P The shell to use for scripts run with the \fBnpm exec\fP, \fBnpm run\fP and \fBnpm -init \fP commands\. +init \fP commands\. .SS See Also .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1 index a9143ebe882e2d..093aacaf1d78c0 100644 --- a/deps/npm/man/man1/npm-root.1 +++ b/deps/npm/man/man1/npm-root.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ROOT" "1" "May 2022" "" "" +.TH "NPM\-ROOT" "1" "July 2022" "" "" .SH "NAME" \fBnpm-root\fR \- Display npm root .SS Synopsis @@ -29,9 +29,6 @@ echo "Global packages installed in: ${global_node_modules}" Default: false .IP \(bu 2 Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. .RE .P diff --git a/deps/npm/man/man1/npm-run-script.1 b/deps/npm/man/man1/npm-run-script.1 index b9e2afb2696852..6c056ca9f6be3c 100644 --- a/deps/npm/man/man1/npm-run-script.1 +++ b/deps/npm/man/man1/npm-run-script.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RUN\-SCRIPT" "1" "May 2022" "" "" +.TH "NPM\-RUN\-SCRIPT" "1" "July 2022" "" "" .SH "NAME" \fBnpm-run-script\fR \- Run arbitrary package scripts .SS Synopsis @@ -246,6 +246,21 @@ Note that commands explicitly intended to run a particular script, such as \fBnpm start\fP, \fBnpm stop\fP, \fBnpm restart\fP, \fBnpm test\fP, and \fBnpm run\-script\fP will still run their intended script if \fBignore\-scripts\fP is set, but they will \fInot\fR run any pre\- or post\-scripts\. +.SS \fBforeground\-scripts\fP +.RS 0 +.IP \(bu 2 +Default: false +.IP \(bu 2 +Type: Boolean + +.RE +.P +Run all build scripts (ie, \fBpreinstall\fP, \fBinstall\fP, and \fBpostinstall\fP) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process\. +.P +Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging\. .SS \fBscript\-shell\fP .RS 0 .IP \(bu 2 @@ -256,7 +271,7 @@ Type: null or String .RE .P The shell to use for scripts run with the \fBnpm exec\fP, \fBnpm run\fP and \fBnpm -init \fP commands\. +init \fP commands\. .SS See Also .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1 index 51fa43b80e73c8..7ecd371aa95962 100644 --- a/deps/npm/man/man1/npm-search.1 +++ b/deps/npm/man/man1/npm-search.1 @@ -1,4 +1,4 @@ -.TH "NPM\-SEARCH" "1" "May 2022" "" "" +.TH "NPM\-SEARCH" "1" "July 2022" "" "" .SH "NAME" \fBnpm-search\fR \- Search for packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-set-script.1 b/deps/npm/man/man1/npm-set-script.1 index 85106d95fbc443..66197695fa93a1 100644 --- a/deps/npm/man/man1/npm-set-script.1 +++ b/deps/npm/man/man1/npm-set-script.1 @@ -1,4 +1,4 @@ -.TH "NPM\-SET\-SCRIPT" "1" "May 2022" "" "" +.TH "NPM\-SET\-SCRIPT" "1" "July 2022" "" "" .SH "NAME" \fBnpm-set-script\fR \- Set tasks in the scripts section of package\.json .SS Synopsis diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1 index fa87fb7e72b2d4..702c2d18a3ba28 100644 --- a/deps/npm/man/man1/npm-shrinkwrap.1 +++ b/deps/npm/man/man1/npm-shrinkwrap.1 @@ -1,4 +1,4 @@ -.TH "NPM\-SHRINKWRAP" "1" "May 2022" "" "" +.TH "NPM\-SHRINKWRAP" "1" "July 2022" "" "" .SH "NAME" \fBnpm-shrinkwrap\fR \- Lock down dependency versions for publication .SS Synopsis diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1 index 57f9c5d361f8ec..1abbc968298f33 100644 --- a/deps/npm/man/man1/npm-star.1 +++ b/deps/npm/man/man1/npm-star.1 @@ -1,11 +1,11 @@ -.TH "NPM\-STAR" "1" "May 2022" "" "" +.TH "NPM\-STAR" "1" "July 2022" "" "" .SH "NAME" \fBnpm-star\fR \- Mark your favorite packages .SS Synopsis .P .RS 2 .nf -npm star [\.\.\.] +npm star [\.\.\.] .fi .RE .P @@ -67,6 +67,8 @@ password, npm will prompt on the command line for one\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help unstar .IP \(bu 2 npm help stars diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1 index aa290760aad377..f4c52978e0ae45 100644 --- a/deps/npm/man/man1/npm-stars.1 +++ b/deps/npm/man/man1/npm-stars.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STARS" "1" "May 2022" "" "" +.TH "NPM\-STARS" "1" "July 2022" "" "" .SH "NAME" \fBnpm-stars\fR \- View packages marked as favorites .SS Synopsis diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1 index f45e4a2a24c3e7..5176b3b3dc12e1 100644 --- a/deps/npm/man/man1/npm-start.1 +++ b/deps/npm/man/man1/npm-start.1 @@ -1,4 +1,4 @@ -.TH "NPM\-START" "1" "May 2022" "" "" +.TH "NPM\-START" "1" "July 2022" "" "" .SH "NAME" \fBnpm-start\fR \- Start a package .SS Synopsis @@ -71,7 +71,7 @@ Type: null or String .RE .P The shell to use for scripts run with the \fBnpm exec\fP, \fBnpm run\fP and \fBnpm -init \fP commands\. +init \fP commands\. .SS See Also .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1 index a7bb25b3a44dd1..da3d1e3a1f0523 100644 --- a/deps/npm/man/man1/npm-stop.1 +++ b/deps/npm/man/man1/npm-stop.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STOP" "1" "May 2022" "" "" +.TH "NPM\-STOP" "1" "July 2022" "" "" .SH "NAME" \fBnpm-stop\fR \- Stop a package .SS Synopsis @@ -64,7 +64,7 @@ Type: null or String .RE .P The shell to use for scripts run with the \fBnpm exec\fP, \fBnpm run\fP and \fBnpm -init \fP commands\. +init \fP commands\. .SS See Also .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1 index 05f508427a4a08..2b16d2db0ea322 100644 --- a/deps/npm/man/man1/npm-team.1 +++ b/deps/npm/man/man1/npm-team.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TEAM" "1" "May 2022" "" "" +.TH "NPM\-TEAM" "1" "July 2022" "" "" .SH "NAME" \fBnpm-team\fR \- Manage organization teams and team memberships .SS Synopsis diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1 index 590d9519df51f6..f67c2752d7fcd0 100644 --- a/deps/npm/man/man1/npm-test.1 +++ b/deps/npm/man/man1/npm-test.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TEST" "1" "May 2022" "" "" +.TH "NPM\-TEST" "1" "July 2022" "" "" .SH "NAME" \fBnpm-test\fR \- Test a package .SS Synopsis @@ -61,7 +61,7 @@ Type: null or String .RE .P The shell to use for scripts run with the \fBnpm exec\fP, \fBnpm run\fP and \fBnpm -init \fP commands\. +init \fP commands\. .SS See Also .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1 index f2e32ea27fdbec..f16b421f0f1852 100644 --- a/deps/npm/man/man1/npm-token.1 +++ b/deps/npm/man/man1/npm-token.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TOKEN" "1" "May 2022" "" "" +.TH "NPM\-TOKEN" "1" "July 2022" "" "" .SH "NAME" \fBnpm-token\fR \- Manage your authentication tokens .SS Synopsis diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1 index d918034ba19490..654a0ae681f401 100644 --- a/deps/npm/man/man1/npm-uninstall.1 +++ b/deps/npm/man/man1/npm-uninstall.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UNINSTALL" "1" "May 2022" "" "" +.TH "NPM\-UNINSTALL" "1" "July 2022" "" "" .SH "NAME" \fBnpm-uninstall\fR \- Remove a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1 index 20198422799984..6577e11e837765 100644 --- a/deps/npm/man/man1/npm-unpublish.1 +++ b/deps/npm/man/man1/npm-unpublish.1 @@ -1,11 +1,11 @@ -.TH "NPM\-UNPUBLISH" "1" "May 2022" "" "" +.TH "NPM\-UNPUBLISH" "1" "July 2022" "" "" .SH "NAME" \fBnpm-unpublish\fR \- Remove a package from the registry .SS Synopsis .P .RS 2 .nf -npm unpublish [<@scope>/][@] +npm unpublish [] .fi .RE .P @@ -149,6 +149,8 @@ This value is not exported to the environment for child processes\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help deprecate .IP \(bu 2 npm help publish diff --git a/deps/npm/man/man1/npm-unstar.1 b/deps/npm/man/man1/npm-unstar.1 index 1fa7b88c64a5d4..43600931c9f8df 100644 --- a/deps/npm/man/man1/npm-unstar.1 +++ b/deps/npm/man/man1/npm-unstar.1 @@ -1,11 +1,11 @@ -.TH "NPM\-UNSTAR" "1" "May 2022" "" "" +.TH "NPM\-UNSTAR" "1" "July 2022" "" "" .SH "NAME" \fBnpm-unstar\fR \- Remove an item from your favorite packages .SS Synopsis .P .RS 2 .nf -npm unstar [\.\.\.] +npm unstar [\.\.\.] .fi .RE .P diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1 index aebe0c88953b90..54bf4184fbf6f6 100644 --- a/deps/npm/man/man1/npm-update.1 +++ b/deps/npm/man/man1/npm-update.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UPDATE" "1" "May 2022" "" "" +.TH "NPM\-UPDATE" "1" "July 2022" "" "" .SH "NAME" \fBnpm-update\fR \- Update packages .SS Synopsis @@ -180,9 +180,6 @@ Will also prevent writing to \fBpackage\-lock\.json\fP if set to \fBfalse\fP\|\. Default: false .IP \(bu 2 Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. .RE .P diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1 index 444c0709759de0..40c157adf971e0 100644 --- a/deps/npm/man/man1/npm-version.1 +++ b/deps/npm/man/man1/npm-version.1 @@ -1,4 +1,4 @@ -.TH "NPM\-VERSION" "1" "May 2022" "" "" +.TH "NPM\-VERSION" "1" "July 2022" "" "" .SH "NAME" \fBnpm-version\fR \- Bump a package version .SS Synopsis diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1 index b77c7705667115..b3d9488a9f9be2 100644 --- a/deps/npm/man/man1/npm-view.1 +++ b/deps/npm/man/man1/npm-view.1 @@ -1,11 +1,11 @@ -.TH "NPM\-VIEW" "1" "May 2022" "" "" +.TH "NPM\-VIEW" "1" "July 2022" "" "" .SH "NAME" \fBnpm-view\fR \- View registry info .SS Synopsis .P .RS 2 .nf -npm view [<@scope>/][@] [[\.subfield]\.\.\.] +npm view [] [[\.subfield]\.\.\.] aliases: info, show, v .fi @@ -216,6 +216,8 @@ the field name\. .SS See Also .RS 0 .IP \(bu 2 +npm help package spec +.IP \(bu 2 npm help search .IP \(bu 2 npm help registry diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1 index d79c448a7a1141..27a7bbb4ce87e6 100644 --- a/deps/npm/man/man1/npm-whoami.1 +++ b/deps/npm/man/man1/npm-whoami.1 @@ -1,4 +1,4 @@ -.TH "NPM\-WHOAMI" "1" "May 2022" "" "" +.TH "NPM\-WHOAMI" "1" "July 2022" "" "" .SH "NAME" \fBnpm-whoami\fR \- Display npm username .SS Synopsis diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 index 6ac72ad35cba3d..984dbc49192dd7 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -1,10 +1,10 @@ -.TH "NPM" "1" "May 2022" "" "" +.TH "NPM" "1" "July 2022" "" "" .SH "NAME" \fBnpm\fR \- javascript package manager .SS Synopsis .SS Version .P -8\.11\.0 +8\.15\.0 .SS Description .P npm is the package manager for the Node JavaScript platform\. It puts @@ -97,7 +97,7 @@ done via npm help \fBinstall\fP .IP \(bu 2 adduser: Create an account or log in\. When you do this, npm will store -credentials in the user config file config file\. +credentials in the user config file\. .IP \(bu 2 publish: Use the npm help \fBpublish\fP command to upload your diff --git a/deps/npm/man/man1/npx.1 b/deps/npm/man/man1/npx.1 index 51634bc8e8f9f3..47eefc4dd25796 100644 --- a/deps/npm/man/man1/npx.1 +++ b/deps/npm/man/man1/npx.1 @@ -1,4 +1,4 @@ -.TH "NPX" "1" "May 2022" "" "" +.TH "NPX" "1" "July 2022" "" "" .SH "NAME" \fBnpx\fR \- Run a command from a local or remote npm package .SS Synopsis diff --git a/deps/npm/man/man5/folders.5 b/deps/npm/man/man5/folders.5 index 74403f97bfccae..924ee0fa243d1c 100644 --- a/deps/npm/man/man5/folders.5 +++ b/deps/npm/man/man5/folders.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "May 2022" "" "" +.TH "FOLDERS" "5" "July 2022" "" "" .SH "NAME" \fBfolders\fR \- Folder Structures Used by npm .SS Description @@ -198,7 +198,7 @@ For a graphical breakdown of what is installed where, use \fBnpm ls\fP\|\. .SS Publishing .P Upon publishing, npm will look in the \fBnode_modules\fP folder\. If any of -the items there are not in the \fBbundledDependencies\fP array, then they will +the items there are not in the \fBbundleDependencies\fP array, then they will not be included in the package tarball\. .P This allows a package maintainer to install all of their dependencies diff --git a/deps/npm/man/man5/install.5 b/deps/npm/man/man5/install.5 index 40d8a825c9ef54..7d8c5693027cc2 100644 --- a/deps/npm/man/man5/install.5 +++ b/deps/npm/man/man5/install.5 @@ -1,4 +1,4 @@ -.TH "INSTALL" "5" "May 2022" "" "" +.TH "INSTALL" "5" "July 2022" "" "" .SH "NAME" \fBinstall\fR \- Download and install node and npm .SS Description diff --git a/deps/npm/man/man5/npm-shrinkwrap-json.5 b/deps/npm/man/man5/npm-shrinkwrap-json.5 index 2928a9bae6cfdb..931d1ae49f01c3 100644 --- a/deps/npm/man/man5/npm-shrinkwrap-json.5 +++ b/deps/npm/man/man5/npm-shrinkwrap-json.5 @@ -1,4 +1,4 @@ -.TH "NPM\-SHRINKWRAP\.JSON" "5" "May 2022" "" "" +.TH "NPM\-SHRINKWRAP\.JSON" "5" "July 2022" "" "" .SH "NAME" \fBnpm-shrinkwrap.json\fR \- A publishable lockfile .SS Description diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5 index 429bcc3875dd50..a4d2ee239f8543 100644 --- a/deps/npm/man/man5/npmrc.5 +++ b/deps/npm/man/man5/npmrc.5 @@ -1,4 +1,4 @@ -.TH "NPMRC" "5" "May 2022" "" "" +.TH "NPMRC" "5" "July 2022" "" "" .SH "NAME" \fBnpmrc\fR \- The npm config files .SS Description diff --git a/deps/npm/man/man5/package-json.5 b/deps/npm/man/man5/package-json.5 index 47156509747685..0fd5174f6aa7b6 100644 --- a/deps/npm/man/man5/package-json.5 +++ b/deps/npm/man/man5/package-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE\.JSON" "5" "May 2022" "" "" +.TH "PACKAGE\.JSON" "5" "July 2022" "" "" .SH "NAME" \fBpackage.json\fR \- Specifics of npm's package\.json handling .SS Description @@ -132,7 +132,7 @@ OSI \fIhttps://opensource\.org/licenses/alphabetical\fR approved\. .P If your package is licensed under multiple common licenses, use an SPDX license expression syntax version 2\.0 -string \fIhttps://www\.npmjs\.com/package/spdx\fR, like this: +string \fIhttps://spdx\.dev/specifications/\fR, like this: .P .RS 2 .nf @@ -246,7 +246,7 @@ Both email and url are optional either way\. npm also sets a top\-level "maintainers" field with your npm user info\. .SS funding .P -You can specify an object containing an URL that provides up\-to\-date +You can specify an object containing a URL that provides up\-to\-date information about ways to help fund development of your package, or a string URL, or an array of these: .P @@ -721,6 +721,34 @@ git+https://isaacs@github\.com/npm/cli\.git git://github\.com/npm/cli\.git#v1\.0\.27 .fi .RE +.P +When installing from a \fBgit\fP repository, the presence of certain fields in the +\fBpackage\.json\fP will cause npm to believe it needs to perform a build\. To do so +your repository will be cloned into a temporary directory, all of its deps +installed, relevant scripts run, and the resulting directory packed and +installed\. +.P +This flow will occur if your git dependency uses \fBworkspaces\fP, or if any of the +following scripts are present: +.RS 0 +.IP \(bu 2 +\fBbuild\fP +.IP \(bu 2 +\fBprepare\fP +.IP \(bu 2 +\fBprepack\fP +.IP \(bu 2 +\fBpreinstall\fP +.IP \(bu 2 +\fBinstall\fP +.IP \(bu 2 +\fBpostinstall\fP + +.RE +.P +If your git repository includes pre\-built artifacts, you will likely want to +make sure that none of the above scripts are defined, or your dependency +will be rebuilt for every installation\. .SS GitHub URLs .P As of version 1\.1\.65, you can refer to GitHub urls as just "foo": @@ -896,14 +924,14 @@ Marking a peer dependency as optional ensures npm will not emit a warning if the \fBsoy\-milk\fP package is not installed on the host\. This allows you to integrate and interact with a variety of host packages without requiring all of them to be installed\. -.SS bundledDependencies +.SS bundleDependencies .P This defines an array of package names that will be bundled when publishing the package\. .P In cases where you need to preserve npm packages locally or have them available through a single file download, you can bundle the packages in a -tarball file by specifying the package names in the \fBbundledDependencies\fP +tarball file by specifying the package names in the \fBbundleDependencies\fP array and executing \fBnpm pack\fP\|\. .P For example: @@ -915,7 +943,7 @@ If we define a package\.json like this: { "name": "awesome\-web\-framework", "version": "1\.0\.0", - "bundledDependencies": [ + "bundleDependencies": [ "renderized", "super\-streams" ] @@ -929,9 +957,9 @@ can be installed in a new project by executing \fBnpm install awesome\-web\-framework\-1\.0\.0\.tgz\fP\|\. Note that the package names do not include any versions, as that information is specified in \fBdependencies\fP\|\. .P -If this is spelled \fB"bundleDependencies"\fP, then that is also honored\. +If this is spelled \fB"bundledDependencies"\fP, then that is also honored\. .P -Alternatively, \fB"bundledDependencies"\fP can be defined as a boolean value\. A +Alternatively, \fB"bundleDependencies"\fP can be defined as a boolean value\. A value of \fBtrue\fP will bundle all dependencies, a value of \fBfalse\fP will bundle none\. .SS optionalDependencies diff --git a/deps/npm/man/man5/package-lock-json.5 b/deps/npm/man/man5/package-lock-json.5 index 569d9c5ae679d9..ad4fa609649f72 100644 --- a/deps/npm/man/man5/package-lock-json.5 +++ b/deps/npm/man/man5/package-lock-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE\-LOCK\.JSON" "5" "May 2022" "" "" +.TH "PACKAGE\-LOCK\.JSON" "5" "July 2022" "" "" .SH "NAME" \fBpackage-lock.json\fR \- A manifestation of the manifest .SS Description diff --git a/deps/npm/man/man7/config.7 b/deps/npm/man/man7/config.7 index e3dc9a995216a5..bb0c65e9851255 100644 --- a/deps/npm/man/man7/config.7 +++ b/deps/npm/man/man7/config.7 @@ -1,4 +1,4 @@ -.TH "CONFIG" "7" "May 2022" "" "" +.TH "CONFIG" "7" "July 2022" "" "" .SH "NAME" \fBconfig\fR \- More than you probably want to know about npm configuration .SS Description @@ -247,6 +247,19 @@ Type: null, "info", "low", "moderate", "high", "critical", or "none" .P The minimum level of vulnerability for \fBnpm audit\fP to exit with a non\-zero exit code\. +.SS \fBauth\-type\fP +.RS 0 +.IP \(bu 2 +Default: "legacy" +.IP \(bu 2 +Type: "legacy", "web", "sso", "saml", "oauth", or "webauthn" + +.RE +.P +NOTE: auth\-type values "sso", "saml", "oauth", and "webauthn" will be +removed in a future version\. +.P +What authentication strategy to use with \fBlogin\fP\|\. .SS \fBbefore\fP .RS 0 .IP \(bu 2 @@ -387,8 +400,9 @@ cert="\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-\\nXXXX\\nXXXX\\n\-\-\-\-\-END CERTIF .fi .RE .P -It is \fInot\fR the path to a certificate file (and there is no "certfile" -option)\. +It is \fInot\fR the path to a certificate file, though you can set a +registry\-scoped "certfile" path like +"//other\-registry\.tld/:certfile=/path/to/cert\.pem"\. .SS \fBci\-name\fP .RS 0 .IP \(bu 2 @@ -739,6 +753,28 @@ Type: Boolean .P Tag the commit when using the \fBnpm version\fP command\. Setting this to false results in no commit being made at all\. +.SS \fBglobal\fP +.RS 0 +.IP \(bu 2 +Default: false +.IP \(bu 2 +Type: Boolean + +.RE +.P +Operates in "global" mode, so that packages are installed into the \fBprefix\fP +folder instead of the current working directory\. See +npm help folders for more on the differences in behavior\. +.RS 0 +.IP \(bu 2 +packages are installed into the \fB{prefix}/lib/node_modules\fP folder, instead +of the current working directory\. +.IP \(bu 2 +bin files are linked to \fB{prefix}/bin\fP +.IP \(bu 2 +man pages are linked to \fB{prefix}/share/man\fP + +.RE .SS \fBglobal\-style\fP .RS 0 .IP \(bu 2 @@ -977,7 +1013,8 @@ key="\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-\\nXXXX\\nXXXX\\n\-\-\-\-\-END PRIVATE .fi .RE .P -It is \fInot\fR the path to a key file (and there is no "keyfile" option)\. +It is \fInot\fR the path to a key file, though you can set a registry\-scoped +"keyfile" path like "//other\-registry\.tld/:keyfile=/path/to/key\.pem"\. .SS \fBlegacy\-bundling\fP .RS 0 .IP \(bu 2 @@ -1570,7 +1607,7 @@ Type: null or String .RE .P The shell to use for scripts run with the \fBnpm exec\fP, \fBnpm run\fP and \fBnpm -init \fP commands\. +init \fP commands\. .SS \fBsearchexclude\fP .RS 0 .IP \(bu 2 @@ -1970,19 +2007,6 @@ DEPRECATED: Please use \-\-include=dev instead\. .RE .P When set to \fBdev\fP or \fBdevelopment\fP, this is an alias for \fB\-\-include=dev\fP\|\. -.SS \fBauth\-type\fP -.RS 0 -.IP \(bu 2 -Default: "legacy" -.IP \(bu 2 -Type: "legacy", "sso", "saml", or "oauth" -.IP \(bu 2 -DEPRECATED: This method of SSO/SAML/OAuth is deprecated and will be removed -in a future version of npm in favor of web\-based login\. - -.RE -.P -What authentication strategy to use with \fBadduser\fP/\fBlogin\fP\|\. .SS \fBcache\-max\fP .RS 0 .IP \(bu 2 @@ -2019,31 +2043,6 @@ DEPRECATED: Please use \-\-include=dev instead\. .RE .P Alias for \fB\-\-include=dev\fP\|\. -.SS \fBglobal\fP -.RS 0 -.IP \(bu 2 -Default: false -.IP \(bu 2 -Type: Boolean -.IP \(bu 2 -DEPRECATED: \fB\-\-global\fP, \fB\-\-local\fP are deprecated\. Use \fB\-\-location=global\fP -instead\. - -.RE -.P -Operates in "global" mode, so that packages are installed into the \fBprefix\fP -folder instead of the current working directory\. See -npm help folders for more on the differences in behavior\. -.RS 0 -.IP \(bu 2 -packages are installed into the \fB{prefix}/lib/node_modules\fP folder, instead -of the current working directory\. -.IP \(bu 2 -bin files are linked to \fB{prefix}/bin\fP -.IP \(bu 2 -man pages are linked to \fB{prefix}/share/man\fP - -.RE .SS \fBinit\.author\.email\fP .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man7/developers.7 b/deps/npm/man/man7/developers.7 index 12e9b535fce56a..595fc387ca48c5 100644 --- a/deps/npm/man/man7/developers.7 +++ b/deps/npm/man/man7/developers.7 @@ -1,4 +1,4 @@ -.TH "DEVELOPERS" "7" "May 2022" "" "" +.TH "DEVELOPERS" "7" "July 2022" "" "" .SH "NAME" \fBdevelopers\fR \- Developer Guide .SS Description diff --git a/deps/npm/man/man7/logging.7 b/deps/npm/man/man7/logging.7 index ea0a7a8f1873b0..9f637cff885945 100644 --- a/deps/npm/man/man7/logging.7 +++ b/deps/npm/man/man7/logging.7 @@ -1,4 +1,4 @@ -.TH "LOGGING" "7" "May 2022" "" "" +.TH "LOGGING" "7" "July 2022" "" "" .SH "NAME" \fBLogging\fR \- Why, What & How We Log .SS Description diff --git a/deps/npm/man/man7/orgs.7 b/deps/npm/man/man7/orgs.7 index 84c949949dc60c..cb718d7476aa8a 100644 --- a/deps/npm/man/man7/orgs.7 +++ b/deps/npm/man/man7/orgs.7 @@ -1,4 +1,4 @@ -.TH "ORGS" "7" "May 2022" "" "" +.TH "ORGS" "7" "July 2022" "" "" .SH "NAME" \fBorgs\fR \- Working with Teams & Orgs .SS Description diff --git a/deps/npm/man/man7/package-spec.7 b/deps/npm/man/man7/package-spec.7 new file mode 100644 index 00000000000000..01da091d16b6f0 --- /dev/null +++ b/deps/npm/man/man7/package-spec.7 @@ -0,0 +1,145 @@ +.TH "PACKAGE\-SPEC" "7" "July 2022" "" "" +.SH "NAME" +\fBpackage-spec\fR \- Package name specifier +.SS Description +.P +Commands like \fBnpm install\fP and the dependency sections in the +\fBpackage\.json\fP use a package name specifier\. This can be many different +things that all refer to a "package"\. Examples include a package name, +git url, tarball, or local directory\. These will generally be referred +to as \fB\fP in the help output for the npm commands that use +this package name specifier\. +.SS Package name +.RS 0 +.IP \(bu 2 +\fB[<@scope>/]\fP +.IP \(bu 2 +\fB[<@scope>/]@\fP +.IP \(bu 2 +\fB[<@scope>/]@\fP +.IP \(bu 2 +\fB[<@scope>/]@\fP + +.RE +.P +Refers to a package by name, with or without a scope, and optionally +tag, version, or version range\. This is typically used in combination +with the npm help registry config to refer to a +package in a registry\. +.P +Examples: +.RS 0 +.IP \(bu 2 +\fBnpm\fP +.IP \(bu 2 +\fB@npmcli/arborist\fP +.IP \(bu 2 +\fB@npmcli/arborist@latest\fP +.IP \(bu 2 +\fBnpm@6\.13\.1\fP +.IP \(bu 2 +\fBnpm@^4\.0\.0\fP + +.RE +.SS Aliases +.RS 0 +.IP \(bu 2 +\fB@npm:\fP + +.RE +.P +Primarily used by commands like \fBnpm install\fP and in the dependency +sections in the \fBpackage\.json\fP, this refers to a package by an alias\. +The \fB\fP is the name of the package as it is reified in the +\fBnode_modules\fP folder, and the \fB\fP refers to a package name as +found in the configured registry\. +.P +See \fBPackage name\fP above for more info on referring to a package by +name, and npm help registry for configuring which +registry is used when referring to a package by name\. +.P +Examples: +.RS 0 +.IP \(bu 2 +\fBsemver:@npm:@npmcli/semver\-with\-patch\fP +.IP \(bu 2 +\fBsemver:@npm:semver@7\.2\.2\fP +.IP \(bu 2 +\fBsemver:@npm:semver@legacy\fP + +.RE +.SS Folders +.RS 0 +.IP \(bu 2 +\fB\fP + +.RE +.P +This refers to a package on the local filesystem\. Specifically this is +a folder with a \fBpackage\.json\fP file in it\. This \fIshould\fR always be +prefixed with a \fB/\fP or \fB\|\./\fP (or your OS equivalent) to reduce confusion\. +npm currently will parse a string with more than one \fB/\fP in it as a +folder, but this is legacy behavior that may be removed in a future +version\. +.P +Examples: +.RS 0 +.IP \(bu 2 +\fB\|\./my\-package\fP +.IP \(bu 2 +\fB/opt/npm/my\-package\fP + +.RE +.SS Tarballs +.RS 0 +.IP \(bu 2 +\fB\fP +.IP \(bu 2 +\fB\fP + +.RE +.P +Examples: +.RS 0 +.IP \(bu 2 +\fB\|\./my\-package\.tgz\fP +.IP \(bu 2 +\fBhttps://registry\.npmjs\.org/semver/\-/semver\-1\.0\.0\.tgz\fP + +.RE +.P +Refers to a package in a tarball format, either on the local filesystem +or remotely via url\. This is the format that packages exist in when +uploaded to a registry\. +.SS git urls +.RS 0 +.IP \(bu 2 +\fB\fP +.IP \(bu 2 +\fB/\fP + +.RE +.P +Refers to a package in a git repo\. This can be a full git url, git +shorthand, or a username/package on GitHub\. You can specify a +git tag, branch, or other git ref by appending \fB#ref\fP\|\. +.P +Examples: +.RS 0 +.IP \(bu 2 +\fBhttps://github\.com/npm/cli\.git\fP +.IP \(bu 2 +\fBgit@github\.com:npm/cli\.git\fP +.IP \(bu 2 +\fBgit+ssh://git@github\.com/npm/cli#v6\.0\.0\fP +.IP \(bu 2 +\fBgithub:npm/cli#HEAD\fP +.IP \(bu 2 +\fBnpm/cli#c12ea07\fP + +.RE +.SS See also +.P +npm\-package\-arg \fIhttps://npm\.im/npm\-package\-arg\fR +npm help scope +npm help config diff --git a/deps/npm/man/man7/registry.7 b/deps/npm/man/man7/registry.7 index eff3f31ab64127..0afd375ae74660 100644 --- a/deps/npm/man/man7/registry.7 +++ b/deps/npm/man/man7/registry.7 @@ -1,4 +1,4 @@ -.TH "REGISTRY" "7" "May 2022" "" "" +.TH "REGISTRY" "7" "July 2022" "" "" .SH "NAME" \fBregistry\fR \- The JavaScript Package Registry .SS Description diff --git a/deps/npm/man/man7/removal.7 b/deps/npm/man/man7/removal.7 index 27bb1de4c99af1..e30f3afbd7889d 100644 --- a/deps/npm/man/man7/removal.7 +++ b/deps/npm/man/man7/removal.7 @@ -1,4 +1,4 @@ -.TH "REMOVAL" "7" "May 2022" "" "" +.TH "REMOVAL" "7" "July 2022" "" "" .SH "NAME" \fBremoval\fR \- Cleaning the Slate .SS Synopsis diff --git a/deps/npm/man/man7/scope.7 b/deps/npm/man/man7/scope.7 index 5d4f0e7270a02b..825b9298f063c7 100644 --- a/deps/npm/man/man7/scope.7 +++ b/deps/npm/man/man7/scope.7 @@ -1,4 +1,4 @@ -.TH "SCOPE" "7" "May 2022" "" "" +.TH "SCOPE" "7" "July 2022" "" "" .SH "NAME" \fBscope\fR \- Scoped packages .SS Description diff --git a/deps/npm/man/man7/scripts.7 b/deps/npm/man/man7/scripts.7 index 2ced12c63d9006..87a6d72492cff3 100644 --- a/deps/npm/man/man7/scripts.7 +++ b/deps/npm/man/man7/scripts.7 @@ -1,4 +1,4 @@ -.TH "SCRIPTS" "7" "May 2022" "" "" +.TH "SCRIPTS" "7" "July 2022" "" "" .SH "NAME" \fBscripts\fR \- How npm handles the "scripts" field .SS Description @@ -37,7 +37,7 @@ situations\. These scripts happen in addition to the \fBpre\fP, \fBpost\fP scripts\. .RS 0 .IP \(bu 2 -\fBprepare\fP, \fBprepublish\fP, \fBprepublishOnly\fP, \fBprepack\fP, \fBpostpack\fP +\fBprepare\fP, \fBprepublish\fP, \fBprepublishOnly\fP, \fBprepack\fP, \fBpostpack\fP, \fBdependencies\fP .RE .P @@ -94,6 +94,15 @@ NOTE: "\fBnpm run pack\fP" is NOT the same as "\fBnpm pack\fP"\. "\fBnpm run pac .IP \(bu 2 Runs AFTER the tarball has been generated but before it is moved to its final destination (if at all, publish does not save the tarball locally) +.RE +.P +\fBdependencies\fR +.RS 0 +.IP \(bu 2 +Runs AFTER any operations that modify the \fBnode_modules\fP directory IF changes occurred\. +.IP \(bu 2 +Does NOT run in global mode + .RE .SS Prepare and Prepublish .P @@ -129,6 +138,9 @@ You don't need to rely on your users having \fBcurl\fP or \fBwget\fP or other system tools on the target machines\. .RE +.SS Dependencies +.P +The \fBdependencies\fP script is run any time an \fBnpm\fP command causes changes to the \fBnode_modules\fP directory\. It is run AFTER the changes have been applied and the \fBpackage\.json\fP and \fBpackage\-lock\.json\fP files have been updated\. .SS Life Cycle Operation Order .SS npm help \fBcache add\fP .RS 0 @@ -289,6 +301,16 @@ will default the \fBstart\fP command to \fBnode server\.js\fP\|\. \fBprestart\f .IP \(bu 2 \fBposttest\fP +.RE +.SS npm help \fBversion\fP +.RS 0 +.IP \(bu 2 +\fBpreversion\fP +.IP \(bu 2 +\fBversion\fP +.IP \(bu 2 +\fBpostversion\fP + .RE .SS A Note on a lack of npm help \fBuninstall\fP scripts .P diff --git a/deps/npm/man/man7/workspaces.7 b/deps/npm/man/man7/workspaces.7 index 494b4068621421..0bc4488b44e5f2 100644 --- a/deps/npm/man/man7/workspaces.7 +++ b/deps/npm/man/man7/workspaces.7 @@ -1,4 +1,4 @@ -.TH "WORKSPACES" "7" "May 2022" "" "" +.TH "WORKSPACES" "7" "July 2022" "" "" .SH "NAME" \fBworkspaces\fR \- Working with workspaces .SS Description @@ -58,7 +58,7 @@ structure of files and folders: .nf \|\. +\-\- node_modules -| `\-\- packages/a \-> \.\./packages/a +| `\-\- a \-> \.\./packages/a +\-\- package\-lock\.json +\-\- package\.json `\-\- packages @@ -117,16 +117,16 @@ respect the provided \fBworkspace\fP configuration\. .P Given the specifities of how Node\.js handles module resolution \fIhttps://nodejs\.org/dist/latest\-v14\.x/docs/api/modules\.html#modules_all_together\fR it's possible to consume any defined workspace by its declared \fBpackage\.json\fP \fBname\fP\|\. Continuing from the example defined -above, let's also create a Node\.js script that will require the \fBworkspace\-a\fP +above, let's also create a Node\.js script that will require the workspace \fBa\fP example module, e\.g: .P .RS 2 .nf -// \./workspace\-a/index\.js +// \./packages/a/index\.js module\.exports = 'a' // \./lib/index\.js -const moduleA = require('workspace\-a') +const moduleA = require('a') console\.log(moduleA) // \-> a .fi .RE diff --git a/deps/npm/node_modules/@npmcli/arborist/README.md b/deps/npm/node_modules/@npmcli/arborist/README.md index e4a58239a0e085..81d79cbf3021b9 100644 --- a/deps/npm/node_modules/@npmcli/arborist/README.md +++ b/deps/npm/node_modules/@npmcli/arborist/README.md @@ -9,7 +9,7 @@ Inspect and manage `node_modules` trees. ![a tree with the word ARBORIST superimposed on it](https://raw.githubusercontent.com/npm/arborist/main/docs/logo.svg?sanitize=true) There's more documentation [in the docs -folder](https://github.com/npm/arborist/tree/main/docs). +folder](https://github.com/npm/cli/tree/latest/workspaces/arborist/docs). ## USAGE diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js index e6c9fe68fab97d..da2652c449a1cd 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js @@ -673,7 +673,7 @@ Try using the package name instead, e.g: const breakingMessage = isSemVerMajor ? 'a SemVer major change' : 'outside your stated dependency range' - log.warn('audit', `Updating ${name} to ${version},` + + log.warn('audit', `Updating ${name} to ${version}, ` + `which is ${breakingMessage}.`) await this[_add](node, { add: [`${name}@${version}`] }) diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js index 4932c17d03667b..faf016c7040109 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js @@ -22,6 +22,7 @@ const moveFile = require('@npmcli/move-file') const rimraf = promisify(require('rimraf')) const PackageJson = require('@npmcli/package-json') const packageContents = require('@npmcli/installed-package-contents') +const runScript = require('@npmcli/run-script') const { checkEngine, checkPlatform } = require('npm-install-checks') const _force = Symbol.for('force') @@ -1516,6 +1517,30 @@ module.exports = cls => class Reifier extends cls { if (!this[_global]) { await this.actualTree.meta.save() + const ignoreScripts = !!this.options.ignoreScripts + // if we aren't doing a dry run or ignoring scripts and we actually made changes to the dep + // tree, then run the dependencies scripts + if (!this[_dryRun] && !ignoreScripts && this.diff && this.diff.children.length) { + const { path, package: pkg } = this.actualTree.target + const stdio = this.options.foregroundScripts ? 'inherit' : 'pipe' + const { scripts = {} } = pkg + for (const event of ['predependencies', 'dependencies', 'postdependencies']) { + if (Object.prototype.hasOwnProperty.call(scripts, event)) { + const timer = `reify:run:${event}` + process.emit('time', timer) + log.info('run', pkg._id, event, scripts[event]) + await runScript({ + event, + path, + pkg, + stdioString: true, + stdio, + scriptShell: this.options.scriptShell, + }) + process.emit('timeEnd', timer) + } + } + } } } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/edge.js b/deps/npm/node_modules/@npmcli/arborist/lib/edge.js index d72f312569466c..a04404f2265633 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/edge.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/edge.js @@ -92,7 +92,12 @@ class Edge { return false } - return depValid(node, this.spec, this.accept, this.from) + // NOTE: this condition means we explicitly do not support overriding + // bundled or shrinkwrapped dependencies + const spec = (node.hasShrinkwrap || node.inShrinkwrap || node.inBundle) + ? this.rawSpec + : this.spec + return depValid(node, spec, this.accept, this.from) } explain (seen = []) { diff --git a/deps/npm/node_modules/@npmcli/arborist/package.json b/deps/npm/node_modules/@npmcli/arborist/package.json index e6d2d9613c206f..328cdf0146c141 100644 --- a/deps/npm/node_modules/@npmcli/arborist/package.json +++ b/deps/npm/node_modules/@npmcli/arborist/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/arborist", - "version": "5.2.0", + "version": "5.3.0", "description": "Manage node_modules trees", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", @@ -11,7 +11,7 @@ "@npmcli/name-from-folder": "^1.0.1", "@npmcli/node-gyp": "^2.0.0", "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^3.0.0", + "@npmcli/run-script": "^4.1.3", "bin-links": "^3.0.0", "cacache": "^16.0.6", "common-ancestor-path": "^1.0.1", @@ -25,7 +25,7 @@ "npm-pick-manifest": "^7.0.0", "npm-registry-fetch": "^13.0.0", "npmlog": "^6.0.2", - "pacote": "^13.0.5", + "pacote": "^13.6.1", "parse-conflict-json": "^2.0.1", "proc-log": "^2.0.0", "promise-all-reject-late": "^1.0.0", diff --git a/deps/npm/node_modules/@npmcli/config/lib/index.js b/deps/npm/node_modules/@npmcli/config/lib/index.js index 5b7ea68e91e36e..8c2b181ca9c618 100644 --- a/deps/npm/node_modules/@npmcli/config/lib/index.js +++ b/deps/npm/node_modules/@npmcli/config/lib/index.js @@ -698,9 +698,11 @@ class Config { this.delete(`${nerfed}:_password`, 'user') this.delete(`${nerfed}:username`, 'user') this.delete(`${nerfed}:email`, 'user') + this.delete(`${nerfed}:certfile`, 'user') + this.delete(`${nerfed}:keyfile`, 'user') } - setCredentialsByURI (uri, { token, username, password, email }) { + setCredentialsByURI (uri, { token, username, password, email, certfile, keyfile }) { const nerfed = nerfDart(uri) const def = nerfDart(this.get('registry')) @@ -733,6 +735,11 @@ class Config { this.delete(`${nerfed}:-authtoken`, 'user') this.delete(`${nerfed}:_authtoken`, 'user') this.delete(`${nerfed}:email`, 'user') + if (certfile && keyfile) { + this.set(`${nerfed}:certfile`, certfile, 'user') + this.set(`${nerfed}:keyfile`, keyfile, 'user') + // cert/key may be used in conjunction with other credentials, thus no `else` + } if (token) { this.set(`${nerfed}:_authToken`, token, 'user') this.delete(`${nerfed}:_password`, 'user') @@ -750,7 +757,7 @@ class Config { // protects against shoulder-hacks if password is memorable, I guess? const encoded = Buffer.from(password, 'utf8').toString('base64') this.set(`${nerfed}:_password`, encoded, 'user') - } else { + } else if (!certfile || !keyfile) { throw new Error('No credentials to set.') } } @@ -765,6 +772,14 @@ class Config { creds.email = email } + const certfileReg = this.get(`${nerfed}:certfile`) + const keyfileReg = this.get(`${nerfed}:keyfile`) + if (certfileReg && keyfileReg) { + creds.certfile = certfileReg + creds.keyfile = keyfileReg + // cert/key may be used in conjunction with other credentials, thus no `return` + } + const tokenReg = this.get(`${nerfed}:_authToken`) || this.get(`${nerfed}:_authtoken`) || this.get(`${nerfed}:-authtoken`) || diff --git a/deps/npm/node_modules/@npmcli/config/package.json b/deps/npm/node_modules/@npmcli/config/package.json index 2cc04e05be8c97..2f561c12233dc3 100644 --- a/deps/npm/node_modules/@npmcli/config/package.json +++ b/deps/npm/node_modules/@npmcli/config/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/config", - "version": "4.1.0", + "version": "4.2.0", "files": [ "bin/", "lib/" @@ -31,7 +31,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^3.0.1", - "@npmcli/template-oss": "3.3.2", + "@npmcli/template-oss": "3.5.0", "tap": "^16.0.1" }, "dependencies": { @@ -49,6 +49,6 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "3.3.2" + "version": "3.5.0" } } diff --git a/deps/npm/node_modules/@npmcli/metavuln-calculator/lib/advisory.js b/deps/npm/node_modules/@npmcli/metavuln-calculator/lib/advisory.js index d30838e7384f62..1f479a90dd999f 100644 --- a/deps/npm/node_modules/@npmcli/metavuln-calculator/lib/advisory.js +++ b/deps/npm/node_modules/@npmcli/metavuln-calculator/lib/advisory.js @@ -166,8 +166,8 @@ class Advisory { // we can try to be a *little* smarter up front by doing x-y for all // contiguous version sets in the list const ranges = [] - this.versions = semver.sort(this.versions) - this.vulnerableVersions = semver.sort(this.vulnerableVersions) + this.versions = semver.sort(this.versions, semverOpt) + this.vulnerableVersions = semver.sort(this.vulnerableVersions, semverOpt) for (let v = 0, vulnVer = 0; v < this.versions.length; v++) { // figure out the vulnerable subrange const vr = [this.versions[v]] diff --git a/deps/npm/node_modules/@npmcli/metavuln-calculator/package.json b/deps/npm/node_modules/@npmcli/metavuln-calculator/package.json index 2c04e0fd420bfd..2e7209ffc7da0e 100644 --- a/deps/npm/node_modules/@npmcli/metavuln-calculator/package.json +++ b/deps/npm/node_modules/@npmcli/metavuln-calculator/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/metavuln-calculator", - "version": "3.1.0", + "version": "3.1.1", "main": "lib/index.js", "files": [ "bin/", @@ -33,7 +33,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^3.0.1", - "@npmcli/template-oss": "3.2.0", + "@npmcli/template-oss": "3.5.0", "require-inject": "^1.4.4", "tap": "^16.0.1" }, @@ -48,6 +48,6 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "3.2.0" + "version": "3.5.0" } } diff --git a/deps/npm/node_modules/@npmcli/run-script/lib/escape.js b/deps/npm/node_modules/@npmcli/run-script/lib/escape.js new file mode 100644 index 00000000000000..303100d337eb7f --- /dev/null +++ b/deps/npm/node_modules/@npmcli/run-script/lib/escape.js @@ -0,0 +1,77 @@ +'use strict' + +// eslint-disable-next-line max-len +// this code adapted from: https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-line-arguments-the-wrong-way/ +const cmd = (input, doubleEscape) => { + if (!input.length) { + return '""' + } + + let result + if (!/[ \t\n\v"]/.test(input)) { + result = input + } else { + result = '"' + for (let i = 0; i <= input.length; ++i) { + let slashCount = 0 + while (input[i] === '\\') { + ++i + ++slashCount + } + + if (i === input.length) { + result += '\\'.repeat(slashCount * 2) + break + } + + if (input[i] === '"') { + result += '\\'.repeat(slashCount * 2 + 1) + result += input[i] + } else { + result += '\\'.repeat(slashCount) + result += input[i] + } + } + result += '"' + } + + // and finally, prefix shell meta chars with a ^ + result = result.replace(/[ !^&()<>|"]/g, '^$&') + if (doubleEscape) { + result = result.replace(/[ !^&()<>|"]/g, '^$&') + } + + // except for % which is escaped with another %, and only once + result = result.replace(/%/g, '%%') + + return result +} + +const sh = (input) => { + if (!input.length) { + return `''` + } + + if (!/[\t\n\r "#$&'()*;<>?\\`|~]/.test(input)) { + return input + } + + // replace single quotes with '\'' and wrap the whole result in a fresh set of quotes + const result = `'${input.replace(/'/g, `'\\''`)}'` + // if the input string already had single quotes around it, clean those up + .replace(/^(?:'')+(?!$)/, '') + .replace(/\\'''/g, `\\'`) + + return result +} + +// disabling the no-control-regex rule for this line as we very specifically _do_ want to +// replace those characters if they somehow exist at this point, which is highly unlikely +// eslint-disable-next-line no-control-regex +const filename = (input) => input.replace(/[<>:"/\\|?*\x00-\x1F]/g, '') + +module.exports = { + cmd, + sh, + filename, +} diff --git a/deps/npm/node_modules/@npmcli/run-script/lib/make-spawn-args.js b/deps/npm/node_modules/@npmcli/run-script/lib/make-spawn-args.js index 9cfc84b0e0de11..f2253d7cc607b1 100644 --- a/deps/npm/node_modules/@npmcli/run-script/lib/make-spawn-args.js +++ b/deps/npm/node_modules/@npmcli/run-script/lib/make-spawn-args.js @@ -1,8 +1,19 @@ /* eslint camelcase: "off" */ const isWindows = require('./is-windows.js') const setPATH = require('./set-path.js') +const { unlinkSync: unlink, writeFileSync: writeFile } = require('fs') +const { tmpdir } = require('os') const { resolve } = require('path') +const which = require('which') const npm_config_node_gyp = require.resolve('node-gyp/bin/node-gyp.js') +const escape = require('./escape.js') +const { randomBytes } = require('crypto') + +const translateWinPathToPosix = (path) => { + return path + .replace(/^([A-z]):/, '/$1') + .replace(/\\/g, '/') +} const makeSpawnArgs = options => { const { @@ -12,29 +23,87 @@ const makeSpawnArgs = options => { env = {}, stdio, cmd, + args = [], stdioString = false, } = options + const spawnEnv = setPATH(path, { + // we need to at least save the PATH environment var + ...process.env, + ...env, + npm_package_json: resolve(path, 'package.json'), + npm_lifecycle_event: event, + npm_lifecycle_script: cmd, + npm_config_node_gyp, + }) + + const fileName = escape.filename(`${event}-${randomBytes(4).toString('hex')}`) + let scriptFile + let script = '' + const isCmd = /(?:^|\\)cmd(?:\.exe)?$/i.test(scriptShell) - const args = isCmd ? ['/d', '/s', '/c', cmd] : ['-c', cmd] + if (isCmd) { + let initialCmd = '' + let insideQuotes = false + for (let i = 0; i < cmd.length; ++i) { + const char = cmd.charAt(i) + if (char === ' ' && !insideQuotes) { + break + } + + initialCmd += char + if (char === '"' || char === "'") { + insideQuotes = !insideQuotes + } + } + + let pathToInitial + try { + pathToInitial = which.sync(initialCmd, { + path: spawnEnv.path, + pathext: spawnEnv.pathext, + }).toLowerCase() + } catch (err) { + pathToInitial = initialCmd.toLowerCase() + } + + const doubleEscape = pathToInitial.endsWith('.cmd') || pathToInitial.endsWith('.bat') + + scriptFile = resolve(tmpdir(), `${fileName}.cmd`) + script += '@echo off\n' + script += cmd + if (args.length) { + script += ` ${args.map((arg) => escape.cmd(arg, doubleEscape)).join(' ')}` + } + } else { + scriptFile = resolve(tmpdir(), `${fileName}.sh`) + script = cmd + if (args.length) { + script += ` ${args.map((arg) => escape.sh(arg)).join(' ')}` + } + } + + writeFile(scriptFile, script) + const spawnArgs = isCmd + ? ['/d', '/s', '/c', escape.cmd(scriptFile)] + : [isWindows ? translateWinPathToPosix(scriptFile) : scriptFile] const spawnOpts = { - env: setPATH(path, { - // we need to at least save the PATH environment var - ...process.env, - ...env, - npm_package_json: resolve(path, 'package.json'), - npm_lifecycle_event: event, - npm_lifecycle_script: cmd, - npm_config_node_gyp, - }), + env: spawnEnv, stdioString, stdio, cwd: path, ...(isCmd ? { windowsVerbatimArguments: true } : {}), } - return [scriptShell, args, spawnOpts] + const cleanup = () => { + // delete the script, this is just a best effort + try { + unlink(scriptFile) + } catch (err) {} + } + + return [scriptShell, spawnArgs, spawnOpts, cleanup] } module.exports = makeSpawnArgs diff --git a/deps/npm/node_modules/@npmcli/run-script/lib/run-script-pkg.js b/deps/npm/node_modules/@npmcli/run-script/lib/run-script-pkg.js index a6fa4d2b389485..84c5e2bfe0c521 100644 --- a/deps/npm/node_modules/@npmcli/run-script/lib/run-script-pkg.js +++ b/deps/npm/node_modules/@npmcli/run-script/lib/run-script-pkg.js @@ -31,7 +31,7 @@ const runScriptPkg = async options => { if (options.cmd) { cmd = options.cmd } else if (pkg.scripts && pkg.scripts[event]) { - cmd = pkg.scripts[event] + args.map(a => ` ${JSON.stringify(a)}`).join('') + cmd = pkg.scripts[event] } else if ( // If there is no preinstall or install script, default to rebuilding node-gyp packages. event === 'install' && @@ -42,7 +42,7 @@ const runScriptPkg = async options => { ) { cmd = defaultGypInstallScript } else if (event === 'start' && await isServerPackage(path)) { - cmd = 'node server.js' + args.map(a => ` ${JSON.stringify(a)}`).join('') + cmd = 'node server.js' } if (!cmd) { @@ -54,15 +54,18 @@ const runScriptPkg = async options => { console.log(bruce(pkg._id, event, cmd)) } - const p = promiseSpawn(...makeSpawnArgs({ + const [spawnShell, spawnArgs, spawnOpts, cleanup] = makeSpawnArgs({ event, path, scriptShell, env: packageEnvs(env, pkg), stdio, cmd, + args, stdioString, - }), { + }) + + const p = promiseSpawn(spawnShell, spawnArgs, spawnOpts, { event, script: cmd, pkgid: pkg._id, @@ -88,7 +91,7 @@ const runScriptPkg = async options => { } else { throw er } - }) + }).finally(cleanup) } module.exports = runScriptPkg diff --git a/deps/npm/node_modules/@npmcli/run-script/package.json b/deps/npm/node_modules/@npmcli/run-script/package.json index 733b27e44a1b8b..c096f39421bf11 100644 --- a/deps/npm/node_modules/@npmcli/run-script/package.json +++ b/deps/npm/node_modules/@npmcli/run-script/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/run-script", - "version": "3.0.2", + "version": "4.1.7", "description": "Run a lifecycle script for a package (descendant of npm-lifecycle)", "author": "GitHub Inc.", "license": "ISC", @@ -17,13 +17,9 @@ "posttest": "npm run lint", "template-oss-apply": "template-oss-apply --force" }, - "tap": { - "check-coverage": true, - "coverage-map": "map.js" - }, "devDependencies": { "@npmcli/eslint-config": "^3.0.1", - "@npmcli/template-oss": "3.2.2", + "@npmcli/template-oss": "3.5.0", "minipass": "^3.1.6", "require-inject": "^1.4.4", "tap": "^16.0.1" @@ -32,7 +28,8 @@ "@npmcli/node-gyp": "^2.0.0", "@npmcli/promise-spawn": "^3.0.0", "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3" + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" }, "files": [ "bin/", @@ -48,6 +45,6 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "3.2.2" + "version": "3.5.0" } } diff --git a/deps/npm/node_modules/cacache/lib/content/read.js b/deps/npm/node_modules/cacache/lib/content/read.js index f5128fe185d0f4..8367ccb205d0b0 100644 --- a/deps/npm/node_modules/cacache/lib/content/read.js +++ b/deps/npm/node_modules/cacache/lib/content/read.js @@ -13,7 +13,7 @@ async function read (cache, integrity, opts = {}) { const { size } = opts const { stat, cpath, sri } = await withContentSri(cache, integrity, async (cpath, sri) => { // get size - const stat = await fs.lstat(cpath) + const stat = await fs.stat(cpath) return { stat, cpath, sri } }) if (typeof size === 'number' && stat.size !== size) { @@ -73,8 +73,8 @@ function readStream (cache, integrity, opts = {}) { // Set all this up to run on the stream and then just return the stream Promise.resolve().then(async () => { const { stat, cpath, sri } = await withContentSri(cache, integrity, async (cpath, sri) => { - // just lstat to ensure it exists - const stat = await fs.lstat(cpath) + // just stat to ensure it exists + const stat = await fs.stat(cpath) return { stat, cpath, sri } }) if (typeof size === 'number' && size !== stat.size) { @@ -111,7 +111,7 @@ async function hasContent (cache, integrity) { try { return await withContentSri(cache, integrity, async (cpath, sri) => { - const stat = await fs.lstat(cpath) + const stat = await fs.stat(cpath) return { size: stat.size, sri, stat } }) } catch (err) { @@ -139,7 +139,7 @@ function hasContentSync (cache, integrity) { return withContentSriSync(cache, integrity, (cpath, sri) => { try { - const stat = fs.lstatSync(cpath) + const stat = fs.statSync(cpath) return { size: stat.size, sri, stat } } catch (err) { if (err.code === 'ENOENT') { diff --git a/deps/npm/node_modules/cacache/package.json b/deps/npm/node_modules/cacache/package.json index 8e54901b4562a0..bb5674dafca81b 100644 --- a/deps/npm/node_modules/cacache/package.json +++ b/deps/npm/node_modules/cacache/package.json @@ -1,6 +1,6 @@ { "name": "cacache", - "version": "16.1.0", + "version": "16.1.1", "cache-version": { "content": "2", "index": "5" @@ -69,7 +69,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^3.0.1", - "@npmcli/template-oss": "3.4.3", + "@npmcli/template-oss": "3.5.0", "tap": "^16.0.0" }, "engines": { @@ -78,7 +78,7 @@ "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", "windowsCI": false, - "version": "3.4.3" + "version": "3.5.0" }, "author": "GitHub Inc." } diff --git a/deps/npm/node_modules/glob/common.js b/deps/npm/node_modules/glob/common.js index fc193ee6fbda5d..e094f750472f78 100644 --- a/deps/npm/node_modules/glob/common.js +++ b/deps/npm/node_modules/glob/common.js @@ -13,7 +13,7 @@ function ownProp (obj, field) { var fs = require("fs") var path = require("path") var minimatch = require("minimatch") -var isAbsolute = require("path-is-absolute") +var isAbsolute = require("path").isAbsolute var Minimatch = minimatch.Minimatch function alphasort (a, b) { @@ -88,7 +88,7 @@ function setopts (self, pattern, options) { self.changedCwd = false var cwd = process.cwd() if (!ownProp(options, "cwd")) - self.cwd = cwd + self.cwd = path.resolve(cwd) else { self.cwd = path.resolve(options.cwd) self.changedCwd = self.cwd !== cwd @@ -96,16 +96,18 @@ function setopts (self, pattern, options) { self.root = options.root || path.resolve(self.cwd, "/") self.root = path.resolve(self.root) - if (process.platform === "win32") - self.root = self.root.replace(/\\/g, "/") // TODO: is an absolute `cwd` supposed to be resolved against `root`? // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test') self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd) - if (process.platform === "win32") - self.cwdAbs = self.cwdAbs.replace(/\\/g, "/") self.nomount = !!options.nomount + if (process.platform === "win32") { + self.root = self.root.replace(/\\/g, "/") + self.cwd = self.cwd.replace(/\\/g, "/") + self.cwdAbs = self.cwdAbs.replace(/\\/g, "/") + } + // disable comments and negation in Minimatch. // Note that they are not supported in Glob itself anyway. options.nonegate = true diff --git a/deps/npm/node_modules/glob/glob.js b/deps/npm/node_modules/glob/glob.js index 37a4d7e60775a3..2112a957dc5016 100644 --- a/deps/npm/node_modules/glob/glob.js +++ b/deps/npm/node_modules/glob/glob.js @@ -47,7 +47,7 @@ var inherits = require('inherits') var EE = require('events').EventEmitter var path = require('path') var assert = require('assert') -var isAbsolute = require('path-is-absolute') +var isAbsolute = require('path').isAbsolute var globSync = require('./sync.js') var common = require('./common.js') var setopts = common.setopts diff --git a/deps/npm/node_modules/glob/package.json b/deps/npm/node_modules/glob/package.json index 54940cbeb42080..5134253e32226f 100644 --- a/deps/npm/node_modules/glob/package.json +++ b/deps/npm/node_modules/glob/package.json @@ -2,7 +2,7 @@ "author": "Isaac Z. Schlueter (http://blog.izs.me/)", "name": "glob", "description": "a little globber", - "version": "8.0.1", + "version": "8.0.3", "repository": { "type": "git", "url": "git://github.com/isaacs/node-glob.git" @@ -21,8 +21,7 @@ "inflight": "^1.0.4", "inherits": "2", "minimatch": "^5.0.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "once": "^1.3.0" }, "devDependencies": { "memfs": "^3.2.0", diff --git a/deps/npm/node_modules/glob/sync.js b/deps/npm/node_modules/glob/sync.js index c705a9c0291dd9..af4600dd595081 100644 --- a/deps/npm/node_modules/glob/sync.js +++ b/deps/npm/node_modules/glob/sync.js @@ -8,7 +8,7 @@ var Glob = require('./glob.js').Glob var util = require('util') var path = require('path') var assert = require('assert') -var isAbsolute = require('path-is-absolute') +var isAbsolute = require('path').isAbsolute var common = require('./common.js') var setopts = common.setopts var ownProp = common.ownProp @@ -48,7 +48,7 @@ function GlobSync (pattern, options) { } GlobSync.prototype._finish = function () { - assert(this instanceof GlobSync) + assert.ok(this instanceof GlobSync) if (this.realpath) { var self = this this.matches.forEach(function (matchset, index) { @@ -72,7 +72,7 @@ GlobSync.prototype._finish = function () { GlobSync.prototype._process = function (pattern, index, inGlobStar) { - assert(this instanceof GlobSync) + assert.ok(this instanceof GlobSync) // Get the first [n] parts of pattern that are all strings. var n = 0 diff --git a/deps/npm/node_modules/just-diff-apply/index.d.ts b/deps/npm/node_modules/just-diff-apply/index.d.ts index 9fc05257af0aab..7547b722f484fb 100644 --- a/deps/npm/node_modules/just-diff-apply/index.d.ts +++ b/deps/npm/node_modules/just-diff-apply/index.d.ts @@ -1,6 +1,6 @@ // Definitions by: Eddie Atkinson -type Operation = "add" | "replace" | "remove"; +type Operation = "add" | "replace" | "remove" | "move"; type DiffOps = Array<{ op: Operation; diff --git a/deps/npm/node_modules/just-diff-apply/index.mjs b/deps/npm/node_modules/just-diff-apply/index.mjs index 045830507cd177..adc5f46ed51df7 100644 --- a/deps/npm/node_modules/just-diff-apply/index.mjs +++ b/deps/npm/node_modules/just-diff-apply/index.mjs @@ -42,6 +42,7 @@ var REMOVE = 'remove'; var REPLACE = 'replace'; var ADD = 'add'; +var MOVE = 'move'; function diffApply(obj, diff, pathConverter) { if (!obj || typeof obj != 'object') { @@ -57,23 +58,40 @@ function diffApply(obj, diff, pathConverter) { var thisDiff = diff[i]; var subObject = obj; var thisOp = thisDiff.op; - var thisPath = thisDiff.path; - if (pathConverter) { - thisPath = pathConverter(thisPath); - if (!Array.isArray(thisPath)) { - throw new Error('pathConverter must return an array'); + + var thisPath = transformPath(pathConverter, thisDiff.path); + var thisFromPath = thisDiff.from && transformPath(pathConverter, thisDiff.from); + var toPath, toPathCopy, lastToProp, subToObject, valueToMove; + + if (thisFromPath) { + // MOVE only, "fromPath" is effectively path and "path" is toPath + toPath = thisPath; + thisPath = thisFromPath; + + toPathCopy = toPath.slice(); + lastToProp = toPathCopy.pop(); + prototypeCheck(lastToProp); + if (lastToProp == null) { + return false; } - } else { - if (!Array.isArray(thisPath)) { - throw new Error('diff path must be an array, consider supplying a path converter'); + + var thisToProp; + while (((thisToProp = toPathCopy.shift())) != null) { + prototypeCheck(thisToProp); + if (!(thisToProp in subToObject)) { + subToObject[thisToProp] = {}; + } + subToObject = subToObject[thisToProp]; } } + var pathCopy = thisPath.slice(); var lastProp = pathCopy.pop(); prototypeCheck(lastProp); if (lastProp == null) { return false; } + var thisProp; while (((thisProp = pathCopy.shift())) != null) { prototypeCheck(thisProp); @@ -82,21 +100,50 @@ function diffApply(obj, diff, pathConverter) { } subObject = subObject[thisProp]; } - if (thisOp === REMOVE || thisOp === REPLACE) { + if (thisOp === REMOVE || thisOp === REPLACE || thisOp === MOVE) { + var path = thisOp === MOVE ? thisDiff.from : thisDiff.path; if (!subObject.hasOwnProperty(lastProp)) { - throw new Error(['expected to find property', thisDiff.path, 'in object', obj].join(' ')); + throw new Error(['expected to find property', path, 'in object', obj].join(' ')); } } - if (thisOp === REMOVE) { + if (thisOp === REMOVE || thisOp === MOVE) { + if (thisOp === MOVE) { + valueToMove = subObject[lastProp]; + } Array.isArray(subObject) ? subObject.splice(lastProp, 1) : delete subObject[lastProp]; } if (thisOp === REPLACE || thisOp === ADD) { subObject[lastProp] = thisDiff.value; } + + if (thisOp === MOVE) { + subObject[lastToProp] = valueToMove; + } } return subObject; } +function transformPath(pathConverter, thisPath) { + if(pathConverter) { + thisPath = pathConverter(thisPath); + if(!Array.isArray(thisPath)) { + throw new Error([ + 'pathConverter must return an array, returned:', + thisPath, + ].join(' ')); + } + } else { + if(!Array.isArray(thisPath)) { + throw new Error([ + 'diff path', + thisPath, + 'must be an array, consider supplying a path converter'] + .join(' ')); + } + } + return thisPath; +} + function jsonPatchPathConverter(stringPath) { return stringPath.split('/').slice(1); } diff --git a/deps/npm/node_modules/just-diff-apply/package.json b/deps/npm/node_modules/just-diff-apply/package.json index b8e5012ff83b15..b2f80b73a19c6f 100644 --- a/deps/npm/node_modules/just-diff-apply/package.json +++ b/deps/npm/node_modules/just-diff-apply/package.json @@ -1,6 +1,6 @@ { "name": "just-diff-apply", - "version": "5.2.0", + "version": "5.3.1", "description": "Apply a diff to an object. Optionally supports jsonPatch protocol", "main": "index.js", "module": "index.mjs", diff --git a/deps/npm/node_modules/just-diff/index.mjs b/deps/npm/node_modules/just-diff/index.mjs index 8da5b5cea8dab2..a0c5834475fea6 100644 --- a/deps/npm/node_modules/just-diff/index.mjs +++ b/deps/npm/node_modules/just-diff/index.mjs @@ -124,9 +124,13 @@ function diff(obj1, obj2, pathConverter) { } } - return diffs.remove.reverse().concat(diffs.replace).concat(diffs.add); + return diffs; } - return getDiff(obj1, obj2, [], {remove: [], replace: [], add: []}); + const finalDiffs = getDiff(obj1, obj2, [], {remove: [], replace: [], add: []}); + return finalDiffs.remove + .reverse() + .concat(finalDiffs.replace) + .concat(finalDiffs.add); } function pushReplace(path, basePath, key, diffs, pathConverter, obj2) { diff --git a/deps/npm/node_modules/just-diff/package.json b/deps/npm/node_modules/just-diff/package.json index 5a4bb5f129c831..9c6a8bbe2f94b3 100644 --- a/deps/npm/node_modules/just-diff/package.json +++ b/deps/npm/node_modules/just-diff/package.json @@ -1,6 +1,6 @@ { "name": "just-diff", - "version": "5.0.2", + "version": "5.0.3", "description": "Return an object representing the diffs between two objects. Supports jsonPatch protocol", "main": "index.js", "module": "index.mjs", diff --git a/deps/npm/node_modules/libnpmdiff/package.json b/deps/npm/node_modules/libnpmdiff/package.json index 3630980ccb30b2..814629dd2e2957 100644 --- a/deps/npm/node_modules/libnpmdiff/package.json +++ b/deps/npm/node_modules/libnpmdiff/package.json @@ -1,6 +1,6 @@ { "name": "libnpmdiff", - "version": "4.0.3", + "version": "4.0.4", "description": "The registry diff", "repository": { "type": "git", @@ -56,7 +56,7 @@ "diff": "^5.0.0", "minimatch": "^5.0.1", "npm-package-arg": "^9.0.1", - "pacote": "^13.0.5", + "pacote": "^13.6.1", "tar": "^6.1.0" }, "templateOSS": { diff --git a/deps/npm/node_modules/libnpmexec/lib/index.js b/deps/npm/node_modules/libnpmexec/lib/index.js index fbe5c5520c381e..dfe7560120702d 100644 --- a/deps/npm/node_modules/libnpmexec/lib/index.js +++ b/deps/npm/node_modules/libnpmexec/lib/index.js @@ -166,7 +166,7 @@ const exec = async (opts) => { const add = manis .filter(mani => !mani[_localManifest]) .filter(filterMissingPackagesFromInstallDir) - .map(mani => mani._from) + .map(mani => mani._id || mani._from) .sort((a, b) => a.localeCompare(b, 'en')) // no need to install if already present diff --git a/deps/npm/node_modules/libnpmexec/package.json b/deps/npm/node_modules/libnpmexec/package.json index 9fe45c7ef6d049..d163103ea2b0bf 100644 --- a/deps/npm/node_modules/libnpmexec/package.json +++ b/deps/npm/node_modules/libnpmexec/package.json @@ -1,6 +1,6 @@ { "name": "libnpmexec", - "version": "4.0.5", + "version": "4.0.8", "files": [ "bin/", "lib/" @@ -57,12 +57,12 @@ "dependencies": { "@npmcli/arborist": "^5.0.0", "@npmcli/ci-detect": "^2.0.0", - "@npmcli/run-script": "^3.0.0", + "@npmcli/run-script": "^4.1.3", "chalk": "^4.1.0", "mkdirp-infer-owner": "^2.0.0", "npm-package-arg": "^9.0.1", "npmlog": "^6.0.2", - "pacote": "^13.0.5", + "pacote": "^13.6.1", "proc-log": "^2.0.0", "read": "^1.0.7", "read-package-json-fast": "^2.0.2", diff --git a/deps/npm/node_modules/libnpmpack/package.json b/deps/npm/node_modules/libnpmpack/package.json index 02f06a8bbfa3c1..86bec9ff1d618d 100644 --- a/deps/npm/node_modules/libnpmpack/package.json +++ b/deps/npm/node_modules/libnpmpack/package.json @@ -1,6 +1,6 @@ { "name": "libnpmpack", - "version": "4.1.0", + "version": "4.1.2", "description": "Programmatic API for the bits behind npm pack", "author": "GitHub Inc.", "main": "lib/index.js", @@ -38,9 +38,9 @@ "bugs": "https://github.com/npm/libnpmpack/issues", "homepage": "https://npmjs.com/package/libnpmpack", "dependencies": { - "@npmcli/run-script": "^3.0.0", + "@npmcli/run-script": "^4.1.3", "npm-package-arg": "^9.0.1", - "pacote": "^13.5.0" + "pacote": "^13.6.1" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" diff --git a/deps/npm/node_modules/libnpmversion/package.json b/deps/npm/node_modules/libnpmversion/package.json index 86f97378128375..c5c1a0398bb169 100644 --- a/deps/npm/node_modules/libnpmversion/package.json +++ b/deps/npm/node_modules/libnpmversion/package.json @@ -1,6 +1,6 @@ { "name": "libnpmversion", - "version": "3.0.4", + "version": "3.0.6", "main": "lib/index.js", "files": [ "bin/", @@ -37,7 +37,7 @@ }, "dependencies": { "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^3.0.0", + "@npmcli/run-script": "^4.1.3", "json-parse-even-better-errors": "^2.3.1", "proc-log": "^2.0.0", "semver": "^7.3.7" diff --git a/deps/npm/node_modules/lru-cache/index.d.ts b/deps/npm/node_modules/lru-cache/index.d.ts new file mode 100644 index 00000000000000..b9375a8b96a716 --- /dev/null +++ b/deps/npm/node_modules/lru-cache/index.d.ts @@ -0,0 +1,593 @@ +// Type definitions for lru-cache 7.10.0 +// Project: https://github.com/isaacs/node-lru-cache +// Based initially on @types/lru-cache +// https://github.com/DefinitelyTyped/DefinitelyTyped +// used under the terms of the MIT License, shown below. +// +// DefinitelyTyped license: +// ------ +// MIT License +// +// Copyright (c) Microsoft Corporation. +// +// 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 +// ------ +// +// Changes by Isaac Z. Schlueter released under the terms found in the +// LICENSE file within this project. + +/// +//tslint:disable:member-access +declare class LRUCache implements Iterable<[K, V]> { + constructor(options: LRUCache.Options) + + /** + * Number of items in the cache. + * Alias for `cache.size` + * + * @deprecated since 7.0 use `cache.size` instead + */ + public readonly length: number + + public readonly max: number + public readonly maxSize: number + public readonly sizeCalculation: + | LRUCache.SizeCalculator + | undefined + public readonly dispose: LRUCache.Disposer + /** + * @since 7.4.0 + */ + public readonly disposeAfter: LRUCache.Disposer | null + public readonly noDisposeOnSet: boolean + public readonly ttl: number + public readonly ttlResolution: number + public readonly ttlAutopurge: boolean + public readonly allowStale: boolean + public readonly updateAgeOnGet: boolean + /** + * @since 7.11.0 + */ + public readonly noDeleteOnStaleGet: boolean + /** + * @since 7.6.0 + */ + public readonly fetchMethod: LRUCache.Fetcher | null + + /** + * The total number of items held in the cache at the current moment. + */ + public readonly size: number + + /** + * The total size of items in cache when using size tracking. + */ + public readonly calculatedSize: number + + /** + * Add a value to the cache. + */ + public set( + key: K, + value: V, + options?: LRUCache.SetOptions + ): this + + /** + * Return a value from the cache. + * Will update the recency of the cache entry found. + * If the key is not found, `get()` will return `undefined`. + * This can be confusing when setting values specifically to `undefined`, + * as in `cache.set(key, undefined)`. Use `cache.has()` to determine + * whether a key is present in the cache at all. + */ + // tslint:disable-next-line:no-unnecessary-generics + public get( + key: K, + options?: LRUCache.GetOptions + ): T | undefined + + /** + * Like `get()` but doesn't update recency or delete stale items. + * Returns `undefined` if the item is stale, unless `allowStale` is set + * either on the cache or in the options object. + */ + // tslint:disable-next-line:no-unnecessary-generics + public peek( + key: K, + options?: LRUCache.PeekOptions + ): T | undefined + + /** + * Check if a key is in the cache, without updating the recency of use. + * Will return false if the item is stale, even though it is technically + * in the cache. + * Will not update item age unless `updateAgeOnHas` is set in the options + * or constructor. + */ + public has(key: K, options?: LRUCache.HasOptions): boolean + + /** + * Deletes a key out of the cache. + * Returns true if the key was deleted, false otherwise. + */ + public delete(key: K): boolean + + /** + * Clear the cache entirely, throwing away all values. + */ + public clear(): void + + /** + * Delete any stale entries. Returns true if anything was removed, false + * otherwise. + */ + public purgeStale(): boolean + + /** + * Find a value for which the supplied fn method returns a truthy value, + * similar to Array.find(). fn is called as fn(value, key, cache). + */ + // tslint:disable-next-line:no-unnecessary-generics + public find( + callbackFn: ( + value: V, + key: K, + cache: this + ) => boolean | undefined | void, + options?: LRUCache.GetOptions + ): T + + /** + * Call the supplied function on each item in the cache, in order from + * most recently used to least recently used. fn is called as + * fn(value, key, cache). Does not update age or recenty of use. + */ + public forEach( + callbackFn: (this: T, value: V, key: K, cache: this) => void, + thisArg?: T + ): void + + /** + * The same as `cache.forEach(...)` but items are iterated over in reverse + * order. (ie, less recently used items are iterated over first.) + */ + public rforEach( + callbackFn: (this: T, value: V, key: K, cache: this) => void, + thisArg?: T + ): void + + /** + * Return a generator yielding the keys in the cache, + * in order from most recently used to least recently used. + */ + public keys(): Generator + + /** + * Inverse order version of `cache.keys()` + * Return a generator yielding the keys in the cache, + * in order from least recently used to most recently used. + */ + public rkeys(): Generator + + /** + * Return a generator yielding the values in the cache, + * in order from most recently used to least recently used. + */ + public values(): Generator + + /** + * Inverse order version of `cache.values()` + * Return a generator yielding the values in the cache, + * in order from least recently used to most recently used. + */ + public rvalues(): Generator + + /** + * Return a generator yielding `[key, value]` pairs, + * in order from most recently used to least recently used. + */ + public entries(): Generator<[K, V]> + + /** + * Inverse order version of `cache.entries()` + * Return a generator yielding `[key, value]` pairs, + * in order from least recently used to most recently used. + */ + public rentries(): Generator<[K, V]> + + /** + * Iterating over the cache itself yields the same results as + * `cache.entries()` + */ + public [Symbol.iterator](): Iterator<[K, V]> + + /** + * Return an array of [key, entry] objects which can be passed to + * cache.load() + */ + public dump(): Array<[K, LRUCache.Entry]> + + /** + * Reset the cache and load in the items in entries in the order listed. + * Note that the shape of the resulting cache may be different if the + * same options are not used in both caches. + */ + public load( + cacheEntries: ReadonlyArray<[K, LRUCache.Entry]> + ): void + + /** + * Evict the least recently used item, returning its value or `undefined` + * if cache is empty. + */ + public pop(): V | undefined + + /** + * Deletes a key out of the cache. + * + * @deprecated since 7.0 use delete() instead + */ + public del(key: K): boolean + + /** + * Clear the cache entirely, throwing away all values. + * + * @deprecated since 7.0 use clear() instead + */ + public reset(): void + + /** + * Manually iterates over the entire cache proactively pruning old entries. + * + * @deprecated since 7.0 use purgeStale() instead + */ + public prune(): boolean + + /** + * since: 7.6.0 + */ + // tslint:disable-next-line:no-unnecessary-generics + public fetch( + key: K, + options?: LRUCache.FetchOptions + ): Promise + + /** + * since: 7.6.0 + */ + public getRemainingTTL(key: K): number +} + +declare namespace LRUCache { + type LRUMilliseconds = number + type DisposeReason = 'evict' | 'set' | 'delete' + + type SizeCalculator = (value: V, key: K) => number + type Disposer = ( + value: V, + key: K, + reason: DisposeReason + ) => void + type Fetcher = ( + key: K, + staleValue: V, + options: FetcherOptions + ) => Promise | V | void | undefined + + interface DeprecatedOptions { + /** + * alias for ttl + * + * @deprecated since 7.0 use options.ttl instead + */ + maxAge?: number + + /** + * alias for sizeCalculation + * + * @deprecated since 7.0 use options.sizeCalculation instead + */ + length?: SizeCalculator + + /** + * alias for allowStale + * + * @deprecated since 7.0 use options.allowStale instead + */ + stale?: boolean + } + + interface LimitedByCount { + /** + * The number of most recently used items to keep. + * Note that we may store fewer items than this if maxSize is hit. + */ + max: number + } + + interface LimitedBySize { + /** + * If you wish to track item size, you must provide a maxSize + * note that we still will only keep up to max *actual items*, + * if max is set, so size tracking may cause fewer than max items + * to be stored. At the extreme, a single item of maxSize size + * will cause everything else in the cache to be dropped when it + * is added. Use with caution! + * Note also that size tracking can negatively impact performance, + * though for most cases, only minimally. + */ + maxSize: number + + /** + * Function to calculate size of items. Useful if storing strings or + * buffers or other items where memory size depends on the object itself. + * Also note that oversized items do NOT immediately get dropped from + * the cache, though they will cause faster turnover in the storage. + */ + sizeCalculation?: SizeCalculator + } + + interface LimitedByTTL { + /** + * Max time in milliseconds for items to live in cache before they are + * considered stale. Note that stale items are NOT preemptively removed + * by default, and MAY live in the cache, contributing to its LRU max, + * long after they have expired. + * + * Also, as this cache is optimized for LRU/MRU operations, some of + * the staleness/TTL checks will reduce performance, as they will incur + * overhead by deleting items. + * + * Must be an integer number of ms, defaults to 0, which means "no TTL" + */ + ttl: number + + /** + * Boolean flag to tell the cache to not update the TTL when + * setting a new value for an existing key (ie, when updating a value + * rather than inserting a new value). Note that the TTL value is + * _always_ set (if provided) when adding a new entry into the cache. + * + * @default false + * @since 7.4.0 + */ + noUpdateTTL?: boolean + + /** + * Minimum amount of time in ms in which to check for staleness. + * Defaults to 1, which means that the current time is checked + * at most once per millisecond. + * + * Set to 0 to check the current time every time staleness is tested. + * (This reduces performance, and is theoretically unnecessary.) + * + * Setting this to a higher value will improve performance somewhat + * while using ttl tracking, albeit at the expense of keeping stale + * items around a bit longer than intended. + * + * @default 1 + * @since 7.1.0 + */ + ttlResolution?: number + + /** + * Preemptively remove stale items from the cache. + * Note that this may significantly degrade performance, + * especially if the cache is storing a large number of items. + * It is almost always best to just leave the stale items in + * the cache, and let them fall out as new items are added. + * + * Note that this means that allowStale is a bit pointless, + * as stale items will be deleted almost as soon as they expire. + * + * Use with caution! + * + * @default false + * @since 7.1.0 + */ + ttlAutopurge?: boolean + + /** + * Return stale items from cache.get() before disposing of them. + * Return stale values from cache.fetch() while performing a call + * to the `fetchMethod` in the background. + * + * @default false + */ + allowStale?: boolean + + /** + * Update the age of items on cache.get(), renewing their TTL + * + * @default false + */ + updateAgeOnGet?: boolean + + /** + * Do not delete stale items when they are retrieved with cache.get() + * Note that the get() return value will still be `undefined` unless + * allowStale is true. + * + * @default false + * @since 7.11.0 + */ + noDeleteOnStaleGet?: boolean + + /** + * Update the age of items on cache.has(), renewing their TTL + * + * @default false + */ + updateAgeOnHas?: boolean + } + + type SafetyBounds = + | LimitedByCount + | LimitedBySize + | LimitedByTTL + + // options shared by all three of the limiting scenarios + interface SharedOptions { + /** + * Function that is called on items when they are dropped from the cache. + * This can be handy if you want to close file descriptors or do other + * cleanup tasks when items are no longer accessible. Called with `key, + * value`. It's called before actually removing the item from the + * internal cache, so it is *NOT* safe to re-add them. + * Use `disposeAfter` if you wish to dispose items after they have been + * full removed, when it is safe to add them back to the cache. + */ + dispose?: Disposer + + /** + * The same as dispose, but called *after* the entry is completely + * removed and the cache is once again in a clean state. It is safe to + * add an item right back into the cache at this point. + * However, note that it is *very* easy to inadvertently create infinite + * recursion this way. + * + * @since 7.3.0 + */ + disposeAfter?: Disposer + + /** + * Set to true to suppress calling the dispose() function if the entry + * key is still accessible within the cache. + * This may be overridden by passing an options object to cache.set(). + * + * @default false + */ + noDisposeOnSet?: boolean + + /** + * `fetchMethod` Function that is used to make background asynchronous + * fetches. Called with `fetchMethod(key, staleValue)`. May return a + * Promise. + * + * If `fetchMethod` is not provided, then `cache.fetch(key)` is + * equivalent to `Promise.resolve(cache.get(key))`. + * + * @since 7.6.0 + */ + fetchMethod?: LRUCache.Fetcher + + /** + * Set to true to suppress the deletion of stale data when a + * `fetchMethod` throws an error or returns a rejected promise + * + * @default false + * @since 7.10.0 + */ + noDeleteOnFetchRejection?: boolean + + /** + * Set to any value in the constructor or fetch() options to + * pass arbitrary data to the fetch() method in the options.context + * field. + * + * @since 7.12.0 + */ + fetchContext?: any + } + + type Options = SharedOptions & + DeprecatedOptions & + SafetyBounds + + /** + * options which override the options set in the LRUCache constructor + * when making `cache.set()` calls. + */ + interface SetOptions { + /** + * A value for the size of the entry, prevents calls to + * `sizeCalculation` function. + */ + size?: number + sizeCalculation?: SizeCalculator + ttl?: number + start?: number + noDisposeOnSet?: boolean + noUpdateTTL?: boolean + } + + /** + * options which override the options set in the LRUCAche constructor + * when making `cache.has()` calls. + */ + interface HasOptions { + updateAgeOnHas?: boolean + } + + /** + * options which override the options set in the LRUCache constructor + * when making `cache.get()` calls. + */ + interface GetOptions { + allowStale?: boolean + updateAgeOnGet?: boolean + noDeleteOnStaleGet?: boolean + } + + /** + * options which override the options set in the LRUCache constructor + * when making `cache.peek()` calls. + */ + interface PeekOptions { + allowStale?: boolean + } + + interface FetcherFetchOptions { + allowStale?: boolean + updateAgeOnGet?: boolean + noDeleteOnStaleGet?: boolean + size?: number + sizeCalculation?: SizeCalculator + ttl?: number + noDisposeOnSet?: boolean + noUpdateTTL?: boolean + noDeleteOnFetchRejection?: boolean + } + + /** + * options which override the options set in the LRUCache constructor + * when making `cache.fetch()` calls. + * This is the union of GetOptions and SetOptions, plus the + * `noDeleteOnFetchRejection` and `fetchContext` fields. + */ + interface FetchOptions extends FetcherFetchOptions { + fetchContext?: any + } + + interface FetcherOptions { + signal: AbortSignal + options: FetcherFetchOptions + context: any + } + + interface Entry { + value: V + ttl?: number + size?: number + start?: number + } +} + +export = LRUCache diff --git a/deps/npm/node_modules/lru-cache/index.js b/deps/npm/node_modules/lru-cache/index.js index fb1a076fa3ae8e..479ffc8656b703 100644 --- a/deps/npm/node_modules/lru-cache/index.js +++ b/deps/npm/node_modules/lru-cache/index.js @@ -1,5 +1,9 @@ -const perf = typeof performance === 'object' && performance && - typeof performance.now === 'function' ? performance : Date +const perf = + typeof performance === 'object' && + performance && + typeof performance.now === 'function' + ? performance + : Date const hasAbortController = typeof AbortController === 'function' @@ -7,20 +11,30 @@ const hasAbortController = typeof AbortController === 'function' // this doesn't have nearly all the checks and whatnot that // actual AbortController/Signal has, but it's enough for // our purposes, and if used properly, behaves the same. -const AC = hasAbortController ? AbortController : Object.assign( - class AbortController { - constructor () { this.signal = new AC.AbortSignal } - abort () { - this.signal.dispatchEvent('abort') - } - }, - { - AbortSignal: class AbortSignal { - constructor () { +const AC = hasAbortController + ? AbortController + : class AbortController { + constructor() { + this.signal = new AS() + } + abort() { + this.signal.dispatchEvent('abort') + } + } + +const hasAbortSignal = typeof AbortSignal === 'function' +// Some polyfills put this on the AC class, not global +const hasACAbortSignal = typeof AC.AbortSignal === 'function' +const AS = hasAbortSignal + ? AbortSignal + : hasACAbortSignal + ? AC.AbortController + : class AbortSignal { + constructor() { this.aborted = false this._listeners = [] } - dispatchEvent (type) { + dispatchEvent(type) { if (type === 'abort') { this.aborted = true const e = { type, target: this } @@ -28,20 +42,18 @@ const AC = hasAbortController ? AbortController : Object.assign( this._listeners.forEach(f => f(e), this) } } - onabort () {} - addEventListener (ev, fn) { + onabort() {} + addEventListener(ev, fn) { if (ev === 'abort') { this._listeners.push(fn) } } - removeEventListener (ev, fn) { + removeEventListener(ev, fn) { if (ev === 'abort') { this._listeners = this._listeners.filter(f => f !== fn) } } } - } -) const warned = new Set() const deprecatedOption = (opt, instead) => { @@ -69,10 +81,10 @@ const deprecatedProperty = (field, instead) => { const emitWarning = (...a) => { typeof process === 'object' && - process && - typeof process.emitWarning === 'function' - ? process.emitWarning(...a) - : console.error(...a) + process && + typeof process.emitWarning === 'function' + ? process.emitWarning(...a) + : console.error(...a) } const shouldWarn = code => !warned.has(code) @@ -93,22 +105,28 @@ const isPosInt = n => n && n === Math.floor(n) && n > 0 && isFinite(n) * zeroes at init time is brutal when you get that big. * But why not be complete? * Maybe in the future, these limits will have expanded. */ -const getUintArray = max => !isPosInt(max) ? null -: max <= Math.pow(2, 8) ? Uint8Array -: max <= Math.pow(2, 16) ? Uint16Array -: max <= Math.pow(2, 32) ? Uint32Array -: max <= Number.MAX_SAFE_INTEGER ? ZeroArray -: null +const getUintArray = max => + !isPosInt(max) + ? null + : max <= Math.pow(2, 8) + ? Uint8Array + : max <= Math.pow(2, 16) + ? Uint16Array + : max <= Math.pow(2, 32) + ? Uint32Array + : max <= Number.MAX_SAFE_INTEGER + ? ZeroArray + : null class ZeroArray extends Array { - constructor (size) { + constructor(size) { super(size) this.fill(0) } } class Stack { - constructor (max) { + constructor(max) { if (max === 0) { return [] } @@ -116,16 +134,16 @@ class Stack { this.heap = new UintArray(max) this.length = 0 } - push (n) { + push(n) { this.heap[this.length++] = n } - pop () { + pop() { return this.heap[--this.length] } } class LRUCache { - constructor (options = {}) { + constructor(options = {}) { const { max = 0, ttl, @@ -141,15 +159,15 @@ class LRUCache { maxSize = 0, sizeCalculation, fetchMethod, + fetchContext, + noDeleteOnFetchRejection, + noDeleteOnStaleGet, } = options // deprecated options, don't trigger a warning for getting them if // the thing being passed in is another LRUCache we're copying. - const { - length, - maxAge, - stale, - } = options instanceof LRUCache ? {} : options + const { length, maxAge, stale } = + options instanceof LRUCache ? {} : options if (max !== 0 && !isPosInt(max)) { throw new TypeError('max option must be a nonnegative integer') @@ -165,7 +183,9 @@ class LRUCache { this.sizeCalculation = sizeCalculation || length if (this.sizeCalculation) { if (!this.maxSize) { - throw new TypeError('cannot set sizeCalculation without setting maxSize') + throw new TypeError( + 'cannot set sizeCalculation without setting maxSize' + ) } if (typeof this.sizeCalculation !== 'function') { throw new TypeError('sizeCalculation set to non-function') @@ -174,7 +194,16 @@ class LRUCache { this.fetchMethod = fetchMethod || null if (this.fetchMethod && typeof this.fetchMethod !== 'function') { - throw new TypeError('fetchMethod must be a function if specified') + throw new TypeError( + 'fetchMethod must be a function if specified' + ) + } + + this.fetchContext = fetchContext + if (!this.fetchMethod && fetchContext !== undefined) { + throw new TypeError( + 'cannot set fetchContext without fetchMethod' + ) } this.keyMap = new Map() @@ -200,37 +229,48 @@ class LRUCache { } this.noDisposeOnSet = !!noDisposeOnSet this.noUpdateTTL = !!noUpdateTTL + this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection if (this.maxSize !== 0) { if (!isPosInt(this.maxSize)) { - throw new TypeError('maxSize must be a positive integer if specified') + throw new TypeError( + 'maxSize must be a positive integer if specified' + ) } this.initializeSizeTracking() } this.allowStale = !!allowStale || !!stale + this.noDeleteOnStaleGet = !!noDeleteOnStaleGet this.updateAgeOnGet = !!updateAgeOnGet this.updateAgeOnHas = !!updateAgeOnHas - this.ttlResolution = isPosInt(ttlResolution) || ttlResolution === 0 - ? ttlResolution : 1 + this.ttlResolution = + isPosInt(ttlResolution) || ttlResolution === 0 + ? ttlResolution + : 1 this.ttlAutopurge = !!ttlAutopurge this.ttl = ttl || maxAge || 0 if (this.ttl) { if (!isPosInt(this.ttl)) { - throw new TypeError('ttl must be a positive integer if specified') + throw new TypeError( + 'ttl must be a positive integer if specified' + ) } this.initializeTTLTracking() } // do not allow completely unbounded caches if (this.max === 0 && this.ttl === 0 && this.maxSize === 0) { - throw new TypeError('At least one of max, maxSize, or ttl is required') + throw new TypeError( + 'At least one of max, maxSize, or ttl is required' + ) } if (!this.ttlAutopurge && !this.max && !this.maxSize) { const code = 'LRU_CACHE_UNBOUNDED' if (shouldWarn(code)) { warned.add(code) - const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' + + const msg = + 'TTL caching without ttlAutopurge, max, or maxSize can ' + 'result in unbounded memory consumption.' emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache) } @@ -247,16 +287,16 @@ class LRUCache { } } - getRemainingTTL (key) { + getRemainingTTL(key) { return this.has(key, { updateAgeOnHas: false }) ? Infinity : 0 } - initializeTTLTracking () { + initializeTTLTracking() { this.ttls = new ZeroArray(this.max) this.starts = new ZeroArray(this.max) - this.setItemTTL = (index, ttl) => { - this.starts[index] = ttl !== 0 ? perf.now() : 0 + this.setItemTTL = (index, ttl, start = perf.now()) => { + this.starts[index] = ttl !== 0 ? start : 0 this.ttls[index] = ttl if (ttl !== 0 && this.ttlAutopurge) { const t = setTimeout(() => { @@ -271,7 +311,7 @@ class LRUCache { } } - this.updateItemAge = (index) => { + this.updateItemAge = index => { this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0 } @@ -282,7 +322,10 @@ class LRUCache { const n = perf.now() if (this.ttlResolution > 0) { cachedNow = n - const t = setTimeout(() => cachedNow = 0, this.ttlResolution) + const t = setTimeout( + () => (cachedNow = 0), + this.ttlResolution + ) /* istanbul ignore else - not available on all platforms */ if (t.unref) { t.unref() @@ -291,28 +334,38 @@ class LRUCache { return n } - this.getRemainingTTL = (key) => { + this.getRemainingTTL = key => { const index = this.keyMap.get(key) if (index === undefined) { return 0 } - return this.ttls[index] === 0 || this.starts[index] === 0 ? Infinity - : ((this.starts[index] + this.ttls[index]) - (cachedNow || getNow())) + return this.ttls[index] === 0 || this.starts[index] === 0 + ? Infinity + : this.starts[index] + + this.ttls[index] - + (cachedNow || getNow()) } - this.isStale = (index) => { - return this.ttls[index] !== 0 && this.starts[index] !== 0 && - ((cachedNow || getNow()) - this.starts[index] > this.ttls[index]) + this.isStale = index => { + return ( + this.ttls[index] !== 0 && + this.starts[index] !== 0 && + (cachedNow || getNow()) - this.starts[index] > + this.ttls[index] + ) } } - updateItemAge (index) {} - setItemTTL (index, ttl) {} - isStale (index) { return false } + updateItemAge(index) {} + setItemTTL(index, ttl, start) {} + isStale(index) { + return false + } - initializeSizeTracking () { + initializeSizeTracking() { this.calculatedSize = 0 this.sizes = new ZeroArray(this.max) - this.removeItemSize = index => this.calculatedSize -= this.sizes[index] + this.removeItemSize = index => + (this.calculatedSize -= this.sizes[index]) this.requireSize = (k, v, size, sizeCalculation) => { if (!isPosInt(size)) { if (sizeCalculation) { @@ -321,10 +374,14 @@ class LRUCache { } size = sizeCalculation(v, k) if (!isPosInt(size)) { - throw new TypeError('sizeCalculation return invalid (expect positive integer)') + throw new TypeError( + 'sizeCalculation return invalid (expect positive integer)' + ) } } else { - throw new TypeError('invalid size value (must be positive integer)') + throw new TypeError( + 'invalid size value (must be positive integer)' + ) } } return size @@ -338,15 +395,17 @@ class LRUCache { this.calculatedSize += this.sizes[index] } } - removeItemSize (index) {} - addItemSize (index, v, k, size) {} - requireSize (k, v, size, sizeCalculation) { + removeItemSize(index) {} + addItemSize(index, v, k, size) {} + requireSize(k, v, size, sizeCalculation) { if (size || sizeCalculation) { - throw new TypeError('cannot set size without setting maxSize on cache') + throw new TypeError( + 'cannot set size without setting maxSize on cache' + ) } } - *indexes ({ allowStale = this.allowStale } = {}) { + *indexes({ allowStale = this.allowStale } = {}) { if (this.size) { for (let i = this.tail; true; ) { if (!this.isValidIndex(i)) { @@ -364,7 +423,7 @@ class LRUCache { } } - *rindexes ({ allowStale = this.allowStale } = {}) { + *rindexes({ allowStale = this.allowStale } = {}) { if (this.size) { for (let i = this.head; true; ) { if (!this.isValidIndex(i)) { @@ -382,48 +441,48 @@ class LRUCache { } } - isValidIndex (index) { + isValidIndex(index) { return this.keyMap.get(this.keyList[index]) === index } - *entries () { + *entries() { for (const i of this.indexes()) { yield [this.keyList[i], this.valList[i]] } } - *rentries () { + *rentries() { for (const i of this.rindexes()) { yield [this.keyList[i], this.valList[i]] } } - *keys () { + *keys() { for (const i of this.indexes()) { yield this.keyList[i] } } - *rkeys () { + *rkeys() { for (const i of this.rindexes()) { yield this.keyList[i] } } - *values () { + *values() { for (const i of this.indexes()) { yield this.valList[i] } } - *rvalues () { + *rvalues() { for (const i of this.rindexes()) { yield this.valList[i] } } - [Symbol.iterator] () { + [Symbol.iterator]() { return this.entries() } - find (fn, getOptions = {}) { + find(fn, getOptions = {}) { for (const i of this.indexes()) { if (fn(this.valList[i], this.keyList[i], this)) { return this.get(this.keyList[i], getOptions) @@ -431,24 +490,24 @@ class LRUCache { } } - forEach (fn, thisp = this) { + forEach(fn, thisp = this) { for (const i of this.indexes()) { fn.call(thisp, this.valList[i], this.keyList[i], this) } } - rforEach (fn, thisp = this) { + rforEach(fn, thisp = this) { for (const i of this.rindexes()) { fn.call(thisp, this.valList[i], this.keyList[i], this) } } - get prune () { + get prune() { deprecatedMethod('prune', 'purgeStale') return this.purgeStale } - purgeStale () { + purgeStale() { let deleted = false for (const i of this.rindexes({ allowStale: true })) { if (this.isStale(i)) { @@ -459,14 +518,19 @@ class LRUCache { return deleted } - dump () { + dump() { const arr = [] - for (const i of this.indexes()) { + for (const i of this.indexes({ allowStale: true })) { const key = this.keyList[i] - const value = this.valList[i] + const v = this.valList[i] + const value = this.isBackgroundFetch(v) ? v.__staleWhileFetching : v const entry = { value } if (this.ttls) { entry.ttl = this.ttls[i] + // always dump the start relative to a portable timestamp + // it's ok for this to be a bit slow, it's a rare operation. + const age = perf.now() - this.starts[i] + entry.start = Math.floor(Date.now() - age) } if (this.sizes) { entry.size = this.sizes[i] @@ -476,22 +540,34 @@ class LRUCache { return arr } - load (arr) { + load(arr) { this.clear() for (const [key, entry] of arr) { + if (entry.start) { + // entry.start is a portable timestamp, but we may be using + // node's performance.now(), so calculate the offset. + // it's ok for this to be a bit slow, it's a rare operation. + const age = Date.now() - entry.start + entry.start = perf.now() - age + } this.set(key, entry.value, entry) } } - dispose (v, k, reason) {} + dispose(v, k, reason) {} - set (k, v, { - ttl = this.ttl, - noDisposeOnSet = this.noDisposeOnSet, - size = 0, - sizeCalculation = this.sizeCalculation, - noUpdateTTL = this.noUpdateTTL, - } = {}) { + set( + k, + v, + { + ttl = this.ttl, + start, + noDisposeOnSet = this.noDisposeOnSet, + size = 0, + sizeCalculation = this.sizeCalculation, + noUpdateTTL = this.noUpdateTTL, + } = {} + ) { size = this.requireSize(k, v, size, sizeCalculation) let index = this.size === 0 ? undefined : this.keyMap.get(k) if (index === undefined) { @@ -503,7 +579,7 @@ class LRUCache { this.next[this.tail] = index this.prev[index] = this.tail this.tail = index - this.size ++ + this.size++ this.addItemSize(index, v, k, size) noUpdateTTL = false } else { @@ -530,7 +606,7 @@ class LRUCache { this.initializeTTLTracking() } if (!noUpdateTTL) { - this.setItemTTL(index, ttl) + this.setItemTTL(index, ttl, start) } if (this.disposeAfter) { while (this.disposed.length) { @@ -540,7 +616,7 @@ class LRUCache { return this } - newIndex () { + newIndex() { if (this.size === 0) { return this.tail } @@ -554,7 +630,7 @@ class LRUCache { return this.initialFill++ } - pop () { + pop() { if (this.size) { const val = this.valList[this.head] this.evict(true) @@ -562,7 +638,7 @@ class LRUCache { } } - evict (free) { + evict(free) { const head = this.head const k = this.keyList[head] const v = this.valList[head] @@ -583,11 +659,11 @@ class LRUCache { } this.head = this.next[head] this.keyMap.delete(k) - this.size -- + this.size-- return head } - has (k, { updateAgeOnHas = this.updateAgeOnHas } = {}) { + has(k, { updateAgeOnHas = this.updateAgeOnHas } = {}) { const index = this.keyMap.get(k) if (index !== undefined) { if (!this.isStale(index)) { @@ -601,14 +677,14 @@ class LRUCache { } // like get(), but without any LRU updating or TTL expiration - peek (k, { allowStale = this.allowStale } = {}) { + peek(k, { allowStale = this.allowStale } = {}) { const index = this.keyMap.get(k) if (index !== undefined && (allowStale || !this.isStale(index))) { return this.valList[index] } } - backgroundFetch (k, index, options) { + backgroundFetch(k, index, options, context) { const v = index === undefined ? undefined : this.valList[index] if (this.isBackgroundFetch(v)) { return v @@ -617,15 +693,36 @@ class LRUCache { const fetchOpts = { signal: ac.signal, options, + context, } - const p = Promise.resolve(this.fetchMethod(k, v, fetchOpts)).then(v => { + const cb = v => { if (!ac.signal.aborted) { this.set(k, v, fetchOpts.options) } return v - }) + } + const eb = er => { + if (this.valList[index] === p) { + const del = + !options.noDeleteOnFetchRejection || + p.__staleWhileFetching === undefined + if (del) { + this.delete(k) + } else { + // still replace the *promise* with the stale value, + // since we are done with the promise at this point. + this.valList[index] = p.__staleWhileFetching + } + } + if (p.__returned === p) { + throw er + } + } + const pcall = res => res(this.fetchMethod(k, v, fetchOpts)) + const p = new Promise(pcall).then(cb, eb) p.__abortController = ac p.__staleWhileFetching = v + p.__returned = null if (index === undefined) { this.set(k, p, fetchOpts.options) index = this.keyMap.get(k) @@ -635,44 +732,66 @@ class LRUCache { return p } - isBackgroundFetch (p) { - return p && typeof p === 'object' && typeof p.then === 'function' && - Object.prototype.hasOwnProperty.call(p, '__staleWhileFetching') + isBackgroundFetch(p) { + return ( + p && + typeof p === 'object' && + typeof p.then === 'function' && + Object.prototype.hasOwnProperty.call( + p, + '__staleWhileFetching' + ) && + Object.prototype.hasOwnProperty.call(p, '__returned') && + (p.__returned === p || p.__returned === null) + ) } // this takes the union of get() and set() opts, because it does both - async fetch (k, { - allowStale = this.allowStale, - updateAgeOnGet = this.updateAgeOnGet, - ttl = this.ttl, - noDisposeOnSet = this.noDisposeOnSet, - size = 0, - sizeCalculation = this.sizeCalculation, - noUpdateTTL = this.noUpdateTTL, - } = {}) { + async fetch( + k, + { + // get options + allowStale = this.allowStale, + updateAgeOnGet = this.updateAgeOnGet, + noDeleteOnStaleGet = this.noDeleteOnStaleGet, + // set options + ttl = this.ttl, + noDisposeOnSet = this.noDisposeOnSet, + size = 0, + sizeCalculation = this.sizeCalculation, + noUpdateTTL = this.noUpdateTTL, + // fetch exclusive options + noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, + fetchContext = this.fetchContext, + } = {} + ) { if (!this.fetchMethod) { - return this.get(k, {allowStale, updateAgeOnGet}) + return this.get(k, { allowStale, updateAgeOnGet, noDeleteOnStaleGet }) } const options = { allowStale, updateAgeOnGet, + noDeleteOnStaleGet, ttl, noDisposeOnSet, size, sizeCalculation, noUpdateTTL, + noDeleteOnFetchRejection, } let index = this.keyMap.get(k) if (index === undefined) { - return this.backgroundFetch(k, index, options) + const p = this.backgroundFetch(k, index, options, fetchContext) + return (p.__returned = p) } else { // in cache, maybe already fetching const v = this.valList[index] if (this.isBackgroundFetch(v)) { return allowStale && v.__staleWhileFetching !== undefined - ? v.__staleWhileFetching : v + ? v.__staleWhileFetching + : (v.__returned = v) } if (!this.isStale(index)) { @@ -685,16 +804,21 @@ class LRUCache { // ok, it is stale, and not already fetching // refresh the cache. - const p = this.backgroundFetch(k, index, options) + const p = this.backgroundFetch(k, index, options, fetchContext) return allowStale && p.__staleWhileFetching !== undefined - ? p.__staleWhileFetching : p + ? p.__staleWhileFetching + : (p.__returned = p) } } - get (k, { - allowStale = this.allowStale, - updateAgeOnGet = this.updateAgeOnGet, - } = {}) { + get( + k, + { + allowStale = this.allowStale, + updateAgeOnGet = this.updateAgeOnGet, + noDeleteOnStaleGet = this.noDeleteOnStaleGet, + } = {} + ) { const index = this.keyMap.get(k) if (index !== undefined) { const value = this.valList[index] @@ -702,7 +826,9 @@ class LRUCache { if (this.isStale(index)) { // delete only if not an in-flight background fetch if (!fetching) { - this.delete(k) + if (!noDeleteOnStaleGet) { + this.delete(k) + } return allowStale ? value : undefined } else { return allowStale ? value.__staleWhileFetching : undefined @@ -723,12 +849,12 @@ class LRUCache { } } - connect (p, n) { + connect(p, n) { this.prev[n] = p this.next[p] = n } - moveToTail (index) { + moveToTail(index) { // if tail already, nothing to do // if head, move head to next[index] // else @@ -748,12 +874,12 @@ class LRUCache { } } - get del () { + get del() { deprecatedMethod('del', 'delete') return this.delete } - delete (k) { + delete(k) { let deleted = false if (this.size !== 0) { const index = this.keyMap.get(k) @@ -783,7 +909,7 @@ class LRUCache { this.next[this.prev[index]] = this.next[index] this.prev[this.next[index]] = this.prev[index] } - this.size -- + this.size-- this.free.push(index) } } @@ -796,7 +922,7 @@ class LRUCache { return deleted } - clear () { + clear() { for (const index of this.rindexes({ allowStale: true })) { const v = this.valList[index] if (this.isBackgroundFetch(v)) { @@ -833,19 +959,22 @@ class LRUCache { } } - get reset () { + get reset() { deprecatedMethod('reset', 'clear') return this.clear } - get length () { + get length() { deprecatedProperty('length', 'size') return this.size } - static get AbortController () { + static get AbortController() { return AC } + static get AbortSignal() { + return AS + } } module.exports = LRUCache diff --git a/deps/npm/node_modules/lru-cache/package.json b/deps/npm/node_modules/lru-cache/package.json index 5364b09d2002c1..c023ce6c49aca2 100644 --- a/deps/npm/node_modules/lru-cache/package.json +++ b/deps/npm/node_modules/lru-cache/package.json @@ -1,7 +1,7 @@ { "name": "lru-cache", "description": "A cache object that deletes the least-recently-used items.", - "version": "7.9.0", + "version": "7.12.0", "author": "Isaac Z. Schlueter ", "keywords": [ "mru", @@ -10,34 +10,60 @@ ], "scripts": { "build": "", + "size": "size-limit", "test": "tap", "snap": "tap", - "size": "size-limit", "preversion": "npm test", "postversion": "npm publish", - "prepublishOnly": "git push origin --follow-tags" + "prepublishOnly": "git push origin --follow-tags", + "format": "prettier --write ." }, "main": "index.js", "repository": "git://github.com/isaacs/node-lru-cache.git", "devDependencies": { "@size-limit/preset-small-lib": "^7.0.8", + "@types/node": "^17.0.31", + "@types/tap": "^15.0.6", "benchmark": "^2.1.4", + "c8": "^7.11.2", "clock-mock": "^1.0.4", + "eslint-config-prettier": "^8.5.0", + "prettier": "^2.6.2", "size-limit": "^7.0.8", - "tap": "^15.1.6" + "tap": "^16.0.1", + "ts-node": "^10.7.0", + "tslib": "^2.4.0", + "typescript": "^4.6.4" }, "license": "ISC", "files": [ - "index.js" + "index.js", + "index.d.ts" ], "engines": { "node": ">=12" }, + "prettier": { + "semi": false, + "printWidth": 70, + "tabWidth": 2, + "useTabs": false, + "singleQuote": true, + "jsxSingleQuote": false, + "bracketSameLine": true, + "arrowParens": "avoid", + "endOfLine": "lf" + }, "tap": { - "coverage-map": "map.js", + "nyc-arg": [ + "--include=index.js" + ], "node-arg": [ - "--expose-gc" - ] + "--expose-gc", + "--require", + "ts-node/register" + ], + "ts": false }, "size-limit": [ { diff --git a/deps/npm/node_modules/make-fetch-happen/lib/agent.js b/deps/npm/node_modules/make-fetch-happen/lib/agent.js index f64644ff611a57..dd68492ed7ea7b 100644 --- a/deps/npm/node_modules/make-fetch-happen/lib/agent.js +++ b/deps/npm/node_modules/make-fetch-happen/lib/agent.js @@ -171,7 +171,7 @@ const getPath = u => u.pathname + u.search + u.hash const HttpProxyAgent = require('http-proxy-agent') const HttpsProxyAgent = require('https-proxy-agent') -const SocksProxyAgent = require('socks-proxy-agent') +const { SocksProxyAgent } = require('socks-proxy-agent') module.exports.getProxy = getProxy function getProxy (proxyUrl, opts, isHttps) { // our current proxy agents do not support an overridden dns lookup method, so will not @@ -198,6 +198,9 @@ function getProxy (proxyUrl, opts, isHttps) { return new HttpsProxyAgent(popts) } } else if (proxyUrl.protocol.startsWith('socks')) { + // socks-proxy-agent uses hostname not host + popts.hostname = popts.host + delete popts.host return new SocksProxyAgent(popts) } else { throw Object.assign( diff --git a/deps/npm/node_modules/make-fetch-happen/lib/cache/entry.js b/deps/npm/node_modules/make-fetch-happen/lib/cache/entry.js index 7a7572ba030c9d..4307962b889d0e 100644 --- a/deps/npm/node_modules/make-fetch-happen/lib/cache/entry.js +++ b/deps/npm/node_modules/make-fetch-happen/lib/cache/entry.js @@ -35,6 +35,7 @@ const KEEP_RESPONSE_HEADERS = [ 'etag', 'expires', 'last-modified', + 'link', 'location', 'pragma', 'vary', diff --git a/deps/npm/node_modules/make-fetch-happen/lib/remote.js b/deps/npm/node_modules/make-fetch-happen/lib/remote.js index 763fc0d48802b1..068c73a8a7a7e3 100644 --- a/deps/npm/node_modules/make-fetch-happen/lib/remote.js +++ b/deps/npm/node_modules/make-fetch-happen/lib/remote.js @@ -52,7 +52,11 @@ const remoteFetch = (request, options) => { if (_opts.integrity && res.status === 200) { // we got a 200 response and the user has specified an expected // integrity value, so wrap the response in an ssri stream to verify it - const integrityStream = ssri.integrityStream({ integrity: _opts.integrity }) + const integrityStream = ssri.integrityStream({ + algorithms: _opts.algorithms, + integrity: _opts.integrity, + size: _opts.size, + }) const pipeline = new CachingMinipassPipeline({ events: ['integrity', 'size'], }, res.body, integrityStream) diff --git a/deps/npm/node_modules/make-fetch-happen/package.json b/deps/npm/node_modules/make-fetch-happen/package.json index 2e6153b99fa0d1..8b21901f34fc12 100644 --- a/deps/npm/node_modules/make-fetch-happen/package.json +++ b/deps/npm/node_modules/make-fetch-happen/package.json @@ -1,6 +1,6 @@ { "name": "make-fetch-happen", - "version": "10.1.5", + "version": "10.2.0", "description": "Opinionated, caching, retrying fetch client", "main": "lib/index.js", "files": [ @@ -50,7 +50,7 @@ "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.1.1", + "socks-proxy-agent": "^7.0.0", "ssri": "^9.0.0" }, "devDependencies": { @@ -69,7 +69,8 @@ "tap": { "color": 1, "files": "test/*.js", - "check-coverage": true + "check-coverage": true, + "timeout": 60 }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", diff --git a/deps/npm/node_modules/minimatch/minimatch.js b/deps/npm/node_modules/minimatch/minimatch.js index f3b491dd1073ed..71c96a1fb71cce 100644 --- a/deps/npm/node_modules/minimatch/minimatch.js +++ b/deps/npm/node_modules/minimatch/minimatch.js @@ -168,6 +168,11 @@ class Minimatch { this.options = options this.set = [] this.pattern = pattern + this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || + options.allowWindowsEscape === false + if (this.windowsPathsNoEscape) { + this.pattern = this.pattern.replace(/\\/g, '/') + } this.regexp = null this.negate = false this.comment = false diff --git a/deps/npm/node_modules/minimatch/package.json b/deps/npm/node_modules/minimatch/package.json index 2cc856968c0b29..8e1a84285d38f3 100644 --- a/deps/npm/node_modules/minimatch/package.json +++ b/deps/npm/node_modules/minimatch/package.json @@ -2,7 +2,7 @@ "author": "Isaac Z. Schlueter (http://blog.izs.me)", "name": "minimatch", "description": "a glob matcher in javascript", - "version": "5.0.1", + "version": "5.1.0", "repository": { "type": "git", "url": "git://github.com/isaacs/minimatch.git" diff --git a/deps/npm/node_modules/minipass/LICENSE b/deps/npm/node_modules/minipass/LICENSE index 20a47625409237..bf1dece2e1f122 100644 --- a/deps/npm/node_modules/minipass/LICENSE +++ b/deps/npm/node_modules/minipass/LICENSE @@ -1,6 +1,6 @@ The ISC License -Copyright (c) npm, Inc. and Contributors +Copyright (c) 2017-2022 npm, Inc., Isaac Z. Schlueter, and Contributors Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above diff --git a/deps/npm/node_modules/minipass/index.d.ts b/deps/npm/node_modules/minipass/index.d.ts new file mode 100644 index 00000000000000..edbef548248014 --- /dev/null +++ b/deps/npm/node_modules/minipass/index.d.ts @@ -0,0 +1,149 @@ +/// +import { EventEmitter } from 'events' +import { Stream } from 'stream' + +export type Encoding = BufferEncoding | 'buffer' | null + +interface Writable extends EventEmitter { + end(): any + write(chunk: any, ...args: any[]): any +} + +interface Readable extends EventEmitter { + pause(): any + resume(): any + pipe(): any +} + +interface Pipe { + src: Minipass + dest: Writable + opts: PipeOptions +} + +type DualIterable = Iterable & AsyncIterable + +type ContiguousData = Buffer | ArrayBufferLike | ArrayBufferView | string + +type BufferOrString = Buffer | string + +export default class Minipass< + RType extends any = Buffer, + WType extends any = RType extends BufferOrString ? ContiguousData : RType + > + extends Stream + implements DualIterable +{ + static isStream(stream: any): stream is Readable | Writable + + readonly bufferLength: number + readonly flowing: boolean + readonly writable: boolean + readonly readable: boolean + readonly paused: boolean + readonly emittedEnd: boolean + readonly destroyed: boolean + + /** + * Not technically private or readonly, but not safe to mutate. + */ + private readonly buffer: RType[] + private readonly pipes: Pipe[] + + /** + * Technically writable, but mutating it can change the type, + * so is not safe to do in TypeScript. + */ + readonly objectMode: boolean + async: boolean + + /** + * Note: encoding is not actually read-only, and setEncoding(enc) + * exists. However, this type definition will insist that TypeScript + * programs declare the type of a Minipass stream up front, and if + * that type is string, then an encoding MUST be set in the ctor. If + * the type is Buffer, then the encoding must be missing, or set to + * 'buffer' or null. If the type is anything else, then objectMode + * must be set in the constructor options. So there is effectively + * no allowed way that a TS program can set the encoding after + * construction, as doing so will destroy any hope of type safety. + * TypeScript does not provide many options for changing the type of + * an object at run-time, which is what changing the encoding does. + */ + readonly encoding: Encoding + // setEncoding(encoding: Encoding): void + + // Options required if not reading buffers + constructor( + ...args: RType extends Buffer + ? [] | [Options] + : [Options] + ) + + write(chunk: WType, cb?: () => void): boolean + write(chunk: WType, encoding?: Encoding, cb?: () => void): boolean + read(size?: number): RType + end(cb?: () => void): this + end(chunk: any, cb?: () => void): this + end(chunk: any, encoding?: Encoding, cb?: () => void): this + pause(): void + resume(): void + promise(): Promise + collect(): Promise + + concat(): RType extends BufferOrString ? Promise : never + destroy(er?: any): void + pipe(dest: W, opts?: PipeOptions): W + unpipe(dest: W): void + + /** + * alias for on() + */ + addEventHandler(event: string, listener: (...args: any[]) => any): this + + on(event: string, listener: (...args: any[]) => any): this + on(event: 'data', listener: (chunk: RType) => any): this + on(event: 'error', listener: (error: any) => any): this + on( + event: + | 'readable' + | 'drain' + | 'resume' + | 'end' + | 'prefinish' + | 'finish' + | 'close', + listener: () => any + ): this + + [Symbol.iterator](): Iterator + [Symbol.asyncIterator](): AsyncIterator +} + +interface StringOptions { + encoding: BufferEncoding + objectMode?: boolean + async?: boolean +} + +interface BufferOptions { + encoding?: null | 'buffer' + objectMode?: boolean + async?: boolean +} + +interface ObjectModeOptions { + objectMode: true + async?: boolean +} + +export declare interface PipeOptions { + end?: boolean + proxyErrors?: boolean +} + +export declare type Options = T extends string + ? StringOptions + : T extends Buffer + ? BufferOptions + : ObjectModeOptions diff --git a/deps/npm/node_modules/minipass/index.js b/deps/npm/node_modules/minipass/index.js index 1835dd9bcf5121..e8797aab6cc276 100644 --- a/deps/npm/node_modules/minipass/index.js +++ b/deps/npm/node_modules/minipass/index.js @@ -5,7 +5,6 @@ const proc = typeof process === 'object' && process ? process : { } const EE = require('events') const Stream = require('stream') -const Yallist = require('yallist') const SD = require('string_decoder').StringDecoder const EOF = Symbol('EOF') @@ -27,6 +26,12 @@ const BUFFERPUSH = Symbol('bufferPush') const BUFFERSHIFT = Symbol('bufferShift') const OBJECTMODE = Symbol('objectMode') const DESTROYED = Symbol('destroyed') +const EMITDATA = Symbol('emitData') +const EMITEND = Symbol('emitEnd') +const EMITEND2 = Symbol('emitEnd2') +const ASYNC = Symbol('async') + +const defer = fn => Promise.resolve().then(fn) // TODO remove when Node v8 support drops const doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1' @@ -51,14 +56,46 @@ const isArrayBuffer = b => b instanceof ArrayBuffer || const isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b) +class Pipe { + constructor (src, dest, opts) { + this.src = src + this.dest = dest + this.opts = opts + this.ondrain = () => src[RESUME]() + dest.on('drain', this.ondrain) + } + unpipe () { + this.dest.removeListener('drain', this.ondrain) + } + // istanbul ignore next - only here for the prototype + proxyErrors () {} + end () { + this.unpipe() + if (this.opts.end) + this.dest.end() + } +} + +class PipeProxyErrors extends Pipe { + unpipe () { + this.src.removeListener('error', this.proxyErrors) + super.unpipe() + } + constructor (src, dest, opts) { + super(src, dest, opts) + this.proxyErrors = er => dest.emit('error', er) + src.on('error', this.proxyErrors) + } +} + module.exports = class Minipass extends Stream { constructor (options) { super() this[FLOWING] = false // whether we're explicitly paused this[PAUSED] = false - this.pipes = new Yallist() - this.buffer = new Yallist() + this.pipes = [] + this.buffer = [] this[OBJECTMODE] = options && options.objectMode || false if (this[OBJECTMODE]) this[ENCODING] = null @@ -66,6 +103,7 @@ module.exports = class Minipass extends Stream { this[ENCODING] = options && options.encoding || null if (this[ENCODING] === 'buffer') this[ENCODING] = null + this[ASYNC] = options && !!options.async || false this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null this[EOF] = false this[EMITTED_END] = false @@ -105,6 +143,9 @@ module.exports = class Minipass extends Stream { get objectMode () { return this[OBJECTMODE] } set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om } + get ['async'] () { return this[ASYNC] } + set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a } + write (chunk, encoding, cb) { if (this[EOF]) throw new Error('write after end') @@ -123,6 +164,8 @@ module.exports = class Minipass extends Stream { if (!encoding) encoding = 'utf8' + const fn = this[ASYNC] ? defer : f => f() + // convert array buffers and typed array views into buffers // at some point in the future, we may want to do the opposite! // leave strings and buffers as-is @@ -137,19 +180,40 @@ module.exports = class Minipass extends Stream { this.objectMode = true } - // this ensures at this point that the chunk is a buffer or string + // handle object mode up front, since it's simpler + // this yields better performance, fewer checks later. + if (this[OBJECTMODE]) { + /* istanbul ignore if - maybe impossible? */ + if (this.flowing && this[BUFFERLENGTH] !== 0) + this[FLUSH](true) + + if (this.flowing) + this.emit('data', chunk) + else + this[BUFFERPUSH](chunk) + + if (this[BUFFERLENGTH] !== 0) + this.emit('readable') + + if (cb) + fn(cb) + + return this.flowing + } + + // at this point the chunk is a buffer or string // don't buffer it up or send it to the decoder - if (!this.objectMode && !chunk.length) { + if (!chunk.length) { if (this[BUFFERLENGTH] !== 0) this.emit('readable') if (cb) - cb() + fn(cb) return this.flowing } // fast-path writing strings of same encoding to a stream with // an empty buffer, skipping the buffer/decoder dance - if (typeof chunk === 'string' && !this[OBJECTMODE] && + if (typeof chunk === 'string' && // unless it is a string already ready for us to use !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) { chunk = Buffer.from(chunk, encoding) @@ -158,27 +222,20 @@ module.exports = class Minipass extends Stream { if (Buffer.isBuffer(chunk) && this[ENCODING]) chunk = this[DECODER].write(chunk) - if (this.flowing) { - // if we somehow have something in the buffer, but we think we're - // flowing, then we need to flush all that out first, or we get - // chunks coming in out of order. Can't emit 'drain' here though, - // because we're mid-write, so that'd be bad. - if (this[BUFFERLENGTH] !== 0) - this[FLUSH](true) + // Note: flushing CAN potentially switch us into not-flowing mode + if (this.flowing && this[BUFFERLENGTH] !== 0) + this[FLUSH](true) - // if we are still flowing after flushing the buffer we can emit the - // chunk otherwise we have to buffer it. - this.flowing - ? this.emit('data', chunk) - : this[BUFFERPUSH](chunk) - } else + if (this.flowing) + this.emit('data', chunk) + else this[BUFFERPUSH](chunk) if (this[BUFFERLENGTH] !== 0) this.emit('readable') if (cb) - cb() + fn(cb) return this.flowing } @@ -187,35 +244,31 @@ module.exports = class Minipass extends Stream { if (this[DESTROYED]) return null - try { - if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) - return null + if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) { + this[MAYBE_EMIT_END]() + return null + } - if (this[OBJECTMODE]) - n = null - - if (this.buffer.length > 1 && !this[OBJECTMODE]) { - if (this.encoding) - this.buffer = new Yallist([ - Array.from(this.buffer).join('') - ]) - else - this.buffer = new Yallist([ - Buffer.concat(Array.from(this.buffer), this[BUFFERLENGTH]) - ]) - } + if (this[OBJECTMODE]) + n = null - return this[READ](n || null, this.buffer.head.value) - } finally { - this[MAYBE_EMIT_END]() + if (this.buffer.length > 1 && !this[OBJECTMODE]) { + if (this.encoding) + this.buffer = [this.buffer.join('')] + else + this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])] } + + const ret = this[READ](n || null, this.buffer[0]) + this[MAYBE_EMIT_END]() + return ret } [READ] (n, chunk) { if (n === chunk.length || n === null) this[BUFFERSHIFT]() else { - this.buffer.head.value = chunk.slice(n) + this.buffer[0] = chunk.slice(n) chunk = chunk.slice(0, n) this[BUFFERLENGTH] -= n } @@ -291,7 +344,7 @@ module.exports = class Minipass extends Stream { this[BUFFERLENGTH] += 1 else this[BUFFERLENGTH] += chunk.length - return this.buffer.push(chunk) + this.buffer.push(chunk) } [BUFFERSHIFT] () { @@ -299,7 +352,7 @@ module.exports = class Minipass extends Stream { if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1 else - this[BUFFERLENGTH] -= this.buffer.head.value.length + this[BUFFERLENGTH] -= this.buffer[0].length } return this.buffer.shift() } @@ -325,35 +378,52 @@ module.exports = class Minipass extends Stream { opts.end = false else opts.end = opts.end !== false + opts.proxyErrors = !!opts.proxyErrors - const p = { dest: dest, opts: opts, ondrain: _ => this[RESUME]() } - this.pipes.push(p) - - dest.on('drain', p.ondrain) - this[RESUME]() // piping an ended stream ends immediately - if (ended && p.opts.end) - p.dest.end() + if (ended) { + if (opts.end) + dest.end() + } else { + this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts) + : new PipeProxyErrors(this, dest, opts)) + if (this[ASYNC]) + defer(() => this[RESUME]()) + else + this[RESUME]() + } + return dest } + unpipe (dest) { + const p = this.pipes.find(p => p.dest === dest) + if (p) { + this.pipes.splice(this.pipes.indexOf(p), 1) + p.unpipe() + } + } + addListener (ev, fn) { return this.on(ev, fn) } on (ev, fn) { - try { - return super.on(ev, fn) - } finally { - if (ev === 'data' && !this.pipes.length && !this.flowing) - this[RESUME]() - else if (isEndish(ev) && this[EMITTED_END]) { - super.emit(ev) - this.removeAllListeners(ev) - } else if (ev === 'error' && this[EMITTED_ERROR]) { + const ret = super.on(ev, fn) + if (ev === 'data' && !this.pipes.length && !this.flowing) + this[RESUME]() + else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) + super.emit('readable') + else if (isEndish(ev) && this[EMITTED_END]) { + super.emit(ev) + this.removeAllListeners(ev) + } else if (ev === 'error' && this[EMITTED_ERROR]) { + if (this[ASYNC]) + defer(() => fn.call(this, this[EMITTED_ERROR])) + else fn.call(this, this[EMITTED_ERROR]) - } } + return ret } get emittedEnd () { @@ -376,65 +446,84 @@ module.exports = class Minipass extends Stream { } } - emit (ev, data) { + emit (ev, data, ...extra) { // error and close are only events allowed after calling destroy() if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED]) return else if (ev === 'data') { - if (!data) - return - - if (this.pipes.length) - this.pipes.forEach(p => - p.dest.write(data) === false && this.pause()) + return !data ? false + : this[ASYNC] ? defer(() => this[EMITDATA](data)) + : this[EMITDATA](data) } else if (ev === 'end') { - // only actual end gets this treatment - if (this[EMITTED_END] === true) - return - - this[EMITTED_END] = true - this.readable = false - - if (this[DECODER]) { - data = this[DECODER].end() - if (data) { - this.pipes.forEach(p => p.dest.write(data)) - super.emit('data', data) - } - } - - this.pipes.forEach(p => { - p.dest.removeListener('drain', p.ondrain) - if (p.opts.end) - p.dest.end() - }) + return this[EMITEND]() } else if (ev === 'close') { this[CLOSED] = true // don't emit close before 'end' and 'finish' if (!this[EMITTED_END] && !this[DESTROYED]) return + const ret = super.emit('close') + this.removeAllListeners('close') + return ret } else if (ev === 'error') { this[EMITTED_ERROR] = data + const ret = super.emit('error', data) + this[MAYBE_EMIT_END]() + return ret + } else if (ev === 'resume') { + const ret = super.emit('resume') + this[MAYBE_EMIT_END]() + return ret + } else if (ev === 'finish' || ev === 'prefinish') { + const ret = super.emit(ev) + this.removeAllListeners(ev) + return ret } - // TODO: replace with a spread operator when Node v4 support drops - const args = new Array(arguments.length) - args[0] = ev - args[1] = data - if (arguments.length > 2) { - for (let i = 2; i < arguments.length; i++) { - args[i] = arguments[i] + // Some other unknown event + const ret = super.emit(ev, data, ...extra) + this[MAYBE_EMIT_END]() + return ret + } + + [EMITDATA] (data) { + for (const p of this.pipes) { + if (p.dest.write(data) === false) + this.pause() + } + const ret = super.emit('data', data) + this[MAYBE_EMIT_END]() + return ret + } + + [EMITEND] () { + if (this[EMITTED_END]) + return + + this[EMITTED_END] = true + this.readable = false + if (this[ASYNC]) + defer(() => this[EMITEND2]()) + else + this[EMITEND2]() + } + + [EMITEND2] () { + if (this[DECODER]) { + const data = this[DECODER].end() + if (data) { + for (const p of this.pipes) { + p.dest.write(data) + } + super.emit('data', data) } } - try { - return super.emit.apply(this, args) - } finally { - if (!isEndish(ev)) - this[MAYBE_EMIT_END]() - else - this.removeAllListeners(ev) + for (const p of this.pipes) { + p.end() } + const ret = super.emit('end') + this.removeAllListeners('end') + return ret } // const all = await stream.collect() @@ -536,7 +625,7 @@ module.exports = class Minipass extends Stream { this[DESTROYED] = true // throw away all buffered data, it's never coming out - this.buffer = new Yallist() + this.buffer.length = 0 this[BUFFERLENGTH] = 0 if (typeof this.close === 'function' && !this[CLOSED]) diff --git a/deps/npm/node_modules/minipass/package.json b/deps/npm/node_modules/minipass/package.json index 1728e5108c4c20..47c90a4fcf4a71 100644 --- a/deps/npm/node_modules/minipass/package.json +++ b/deps/npm/node_modules/minipass/package.json @@ -1,15 +1,19 @@ { "name": "minipass", - "version": "3.1.6", + "version": "3.3.4", "description": "minimal implementation of a PassThrough stream", "main": "index.js", "dependencies": { "yallist": "^4.0.0" }, "devDependencies": { + "@types/node": "^17.0.41", "end-of-stream": "^1.4.0", - "tap": "^15.0.9", - "through2": "^2.0.3" + "prettier": "^2.6.2", + "tap": "^16.2.0", + "through2": "^2.0.3", + "ts-node": "^10.8.1", + "typescript": "^4.7.3" }, "scripts": { "test": "tap", @@ -28,6 +32,7 @@ "author": "Isaac Z. Schlueter (http://blog.izs.me/)", "license": "ISC", "files": [ + "index.d.ts", "index.js" ], "tap": { @@ -35,5 +40,16 @@ }, "engines": { "node": ">=8" + }, + "prettier": { + "semi": false, + "printWidth": 80, + "tabWidth": 2, + "useTabs": false, + "singleQuote": true, + "jsxSingleQuote": false, + "bracketSameLine": true, + "arrowParens": "avoid", + "endOfLine": "lf" } } diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/common.js b/deps/npm/node_modules/node-gyp/node_modules/glob/common.js index 8e363b6c1f16a1..424c46e1dab1be 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/common.js +++ b/deps/npm/node_modules/node-gyp/node_modules/glob/common.js @@ -110,6 +110,8 @@ function setopts (self, pattern, options) { // Note that they are not supported in Glob itself anyway. options.nonegate = true options.nocomment = true + // always treat \ in patterns as escapes, not path separators + options.allowWindowsEscape = false self.minimatch = new Minimatch(pattern, options) self.options = self.minimatch.options diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/glob.js b/deps/npm/node_modules/node-gyp/node_modules/glob/glob.js index afcf82752c390a..37a4d7e60775a3 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/glob.js +++ b/deps/npm/node_modules/node-gyp/node_modules/glob/glob.js @@ -342,7 +342,10 @@ Glob.prototype._process = function (pattern, index, inGlobStar, cb) { var read if (prefix === null) read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + else if (isAbsolute(prefix) || + isAbsolute(pattern.map(function (p) { + return typeof p === 'string' ? p : '[*]' + }).join('/'))) { if (!prefix || !isAbsolute(prefix)) prefix = '/' + prefix read = prefix diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/package.json b/deps/npm/node_modules/node-gyp/node_modules/glob/package.json index cc1a57a896e9eb..5940b649b7e65a 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/package.json +++ b/deps/npm/node_modules/node-gyp/node_modules/glob/package.json @@ -2,7 +2,10 @@ "author": "Isaac Z. Schlueter (http://blog.izs.me/)", "name": "glob", "description": "a little globber", - "version": "7.2.0", + "version": "7.2.3", + "publishConfig": { + "tag": "v7-legacy" + }, "repository": { "type": "git", "url": "git://github.com/isaacs/node-glob.git" @@ -20,7 +23,7 @@ "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/sync.js b/deps/npm/node_modules/node-gyp/node_modules/glob/sync.js index 4f46f90559a0ca..2c4f480192d28d 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/sync.js +++ b/deps/npm/node_modules/node-gyp/node_modules/glob/sync.js @@ -48,7 +48,7 @@ function GlobSync (pattern, options) { } GlobSync.prototype._finish = function () { - assert(this instanceof GlobSync) + assert.ok(this instanceof GlobSync) if (this.realpath) { var self = this this.matches.forEach(function (matchset, index) { @@ -72,7 +72,7 @@ GlobSync.prototype._finish = function () { GlobSync.prototype._process = function (pattern, index, inGlobStar) { - assert(this instanceof GlobSync) + assert.ok(this instanceof GlobSync) // Get the first [n] parts of pattern that are all strings. var n = 0 @@ -109,7 +109,10 @@ GlobSync.prototype._process = function (pattern, index, inGlobStar) { var read if (prefix === null) read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + else if (isAbsolute(prefix) || + isAbsolute(pattern.map(function (p) { + return typeof p === 'string' ? p : '[*]' + }).join('/'))) { if (!prefix || !isAbsolute(prefix)) prefix = '/' + prefix read = prefix diff --git a/deps/npm/node_modules/npm-package-arg/lib/npa.js b/deps/npm/node_modules/npm-package-arg/lib/npa.js index cc1eddaec74b4e..61fee0783ecc7e 100644 --- a/deps/npm/node_modules/npm-package-arg/lib/npa.js +++ b/deps/npm/node_modules/npm-package-arg/lib/npa.js @@ -9,6 +9,7 @@ const semver = require('semver') const path = global.FAKE_WINDOWS ? require('path').win32 : require('path') const validatePackageName = require('validate-npm-package-name') const { homedir } = require('os') +const log = require('proc-log') const isWindows = process.platform === 'win32' || global.FAKE_WINDOWS const hasSlashes = isWindows ? /\\|[/]/ : /[/]/ @@ -120,6 +121,7 @@ function Result (opts) { } this.gitRange = opts.gitRange this.gitCommittish = opts.gitCommittish + this.gitSubdir = opts.gitSubdir this.hosted = opts.hosted } @@ -155,11 +157,45 @@ Result.prototype.toJSON = function () { } function setGitCommittish (res, committish) { - if (committish != null && committish.length >= 7 && committish.slice(0, 7) === 'semver:') { - res.gitRange = decodeURIComponent(committish.slice(7)) + if (!committish) { res.gitCommittish = null - } else { - res.gitCommittish = committish === '' ? null : committish + return res + } + + // for each :: separated item: + for (const part of committish.split('::')) { + // if the item has no : the n it is a commit-ish + if (!part.includes(':')) { + if (res.gitRange) { + throw new Error('cannot override existing semver range with a committish') + } + if (res.gitCommittish) { + throw new Error('cannot override existing committish with a second committish') + } + res.gitCommittish = part + continue + } + // split on name:value + const [name, value] = part.split(':') + // if name is semver do semver lookup of ref or tag + if (name === 'semver') { + if (res.gitCommittish) { + throw new Error('cannot override existing committish with a semver range') + } + if (res.gitRange) { + throw new Error('cannot override existing semver range with a second semver range') + } + res.gitRange = decodeURIComponent(value) + continue + } + if (name === 'path') { + if (res.gitSubdir) { + throw new Error('cannot override existing path with a second path') + } + res.gitSubdir = `/${value}` + continue + } + log.warn('npm-package-arg', `ignoring unknown key "${name}"`) } return res diff --git a/deps/npm/node_modules/npm-package-arg/package.json b/deps/npm/node_modules/npm-package-arg/package.json index 457f1d8a2f83d3..b9729db5d4f14e 100644 --- a/deps/npm/node_modules/npm-package-arg/package.json +++ b/deps/npm/node_modules/npm-package-arg/package.json @@ -1,6 +1,6 @@ { "name": "npm-package-arg", - "version": "9.0.2", + "version": "9.1.0", "description": "Parse the things that can be arguments to `npm install`", "main": "./lib/npa.js", "directories": { @@ -12,12 +12,13 @@ ], "dependencies": { "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", "semver": "^7.3.5", "validate-npm-package-name": "^4.0.0" }, "devDependencies": { "@npmcli/eslint-config": "^3.0.1", - "@npmcli/template-oss": "3.2.1", + "@npmcli/template-oss": "3.5.0", "tap": "^16.0.1" }, "scripts": { @@ -52,6 +53,6 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "3.2.1" + "version": "3.5.0" } } diff --git a/deps/npm/node_modules/npm-packlist/lib/index.js b/deps/npm/node_modules/npm-packlist/lib/index.js index e4a2e76c545f60..bd72329f027e61 100644 --- a/deps/npm/node_modules/npm-packlist/lib/index.js +++ b/deps/npm/node_modules/npm-packlist/lib/index.js @@ -34,10 +34,13 @@ const glob = require('glob') const globify = pattern => pattern.split('\\').join('/') const readOutOfTreeIgnoreFiles = (root, rel, result = '') => { - for (const file of ['.gitignore', '.npmignore']) { + for (const file of ['.npmignore', '.gitignore']) { try { const ignoreContent = fs.readFileSync(path.join(root, file), { encoding: 'utf8' }) result += ignoreContent + '\n' + // break the loop immediately after concatting, this allows us to prioritize the + // .npmignore and discard the .gitignore if one exists + break } catch (err) { // we ignore ENOENT errors completely because we don't care if the file doesn't exist // but we throw everything else because failing to read a file that does exist is diff --git a/deps/npm/node_modules/npm-packlist/package.json b/deps/npm/node_modules/npm-packlist/package.json index dfa0188b4c437b..4c63caf21e8107 100644 --- a/deps/npm/node_modules/npm-packlist/package.json +++ b/deps/npm/node_modules/npm-packlist/package.json @@ -1,6 +1,6 @@ { "name": "npm-packlist", - "version": "5.1.0", + "version": "5.1.1", "description": "Get a list of the files to add from a folder into an npm package", "directories": { "test": "test" diff --git a/deps/npm/node_modules/npm-profile/lib/index.js b/deps/npm/node_modules/npm-profile/lib/index.js index 74a8084292a6c5..e4ac5622e0d5c6 100644 --- a/deps/npm/node_modules/npm-profile/lib/index.js +++ b/deps/npm/node_modules/npm-profile/lib/index.js @@ -2,6 +2,7 @@ const fetch = require('npm-registry-fetch') const { HttpErrorBase } = require('npm-registry-fetch/lib/errors') +const EventEmitter = require('events') const os = require('os') const { URL } = require('url') const log = require('proc-log') @@ -59,6 +60,9 @@ const webAuth = (opener, opts, body) => { ...opts, method: 'POST', body, + headers: { + 'npm-use-webauthn': opts.authType === 'webauthn', + }, }).then(res => { return Promise.all([res, res.json()]) }).then(([res, content]) => { @@ -70,8 +74,23 @@ const webAuth = (opener, opts, body) => { return content }).then(({ doneUrl, loginUrl }) => { log.verbose('web auth', 'opening url pair') - return opener(loginUrl).then( - () => webAuthCheckLogin(doneUrl, { ...opts, cache: false }) + + const doneEmitter = new EventEmitter() + + const openPromise = opener(loginUrl, doneEmitter) + const webAuthCheckPromise = webAuthCheckLogin(doneUrl, { ...opts, cache: false }) + .then(authResult => { + log.verbose('web auth', 'done-check finished') + + // cancel open prompt if it's present + doneEmitter.emit('abort') + + return authResult + }) + + return Promise.all([openPromise, webAuthCheckPromise]).then( + // pick the auth result and pass it along + ([, authResult]) => authResult ) }).catch(er => { if ((er.statusCode >= 400 && er.statusCode <= 499) || er.statusCode === 500) { @@ -273,4 +292,5 @@ module.exports = { listTokens, removeToken, createToken, + webAuthCheckLogin, } diff --git a/deps/npm/node_modules/npm-profile/package.json b/deps/npm/node_modules/npm-profile/package.json index 5e8f2d2391abd6..bd4ebd31761159 100644 --- a/deps/npm/node_modules/npm-profile/package.json +++ b/deps/npm/node_modules/npm-profile/package.json @@ -1,6 +1,6 @@ { "name": "npm-profile", - "version": "6.0.3", + "version": "6.2.0", "description": "Library for updating an npmjs.com profile", "keywords": [], "author": "GitHub Inc.", @@ -20,7 +20,7 @@ ], "devDependencies": { "@npmcli/eslint-config": "^3.0.1", - "@npmcli/template-oss": "3.4.1", + "@npmcli/template-oss": "3.5.0", "nock": "^13.2.4", "tap": "^16.0.1" }, @@ -44,6 +44,6 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "3.4.1" + "version": "3.5.0" } } diff --git a/deps/npm/node_modules/npm-registry-fetch/lib/auth.js b/deps/npm/node_modules/npm-registry-fetch/lib/auth.js index 17da6a17d7193b..870ce0d923cd0f 100644 --- a/deps/npm/node_modules/npm-registry-fetch/lib/auth.js +++ b/deps/npm/node_modules/npm-registry-fetch/lib/auth.js @@ -1,4 +1,5 @@ 'use strict' +const fs = require('fs') const npa = require('npm-package-arg') const { URL } = require('url') @@ -7,7 +8,8 @@ const { URL } = require('url') const regKeyFromURI = (uri, opts) => { const parsed = new URL(uri) // try to find a config key indicating we have auth for this registry - // can be one of :_authToken, :_auth, or :_password and :username + // can be one of :_authToken, :_auth, :_password and :username, or + // :certfile and :keyfile // We walk up the "path" until we're left with just //[:], // stopping when we reach '//'. let regKey = `//${parsed.host}${parsed.pathname}` @@ -26,7 +28,8 @@ const regKeyFromURI = (uri, opts) => { const hasAuth = (regKey, opts) => ( opts[`${regKey}:_authToken`] || opts[`${regKey}:_auth`] || - opts[`${regKey}:username`] && opts[`${regKey}:_password`] + opts[`${regKey}:username`] && opts[`${regKey}:_password`] || + opts[`${regKey}:certfile`] && opts[`${regKey}:keyfile`] ) const sameHost = (a, b) => { @@ -44,6 +47,17 @@ const getRegistry = opts => { return scopeReg || opts.registry } +const maybeReadFile = file => { + try { + return fs.readFileSync(file, 'utf8') + } catch (er) { + if (er.code !== 'ENOENT') { + throw er + } + return null + } +} + const getAuth = (uri, opts = {}) => { const { forceAuth } = opts if (!uri) { @@ -59,6 +73,8 @@ const getAuth = (uri, opts = {}) => { username: forceAuth.username, password: forceAuth._password || forceAuth.password, auth: forceAuth._auth || forceAuth.auth, + certfile: forceAuth.certfile, + keyfile: forceAuth.keyfile, }) } @@ -82,6 +98,8 @@ const getAuth = (uri, opts = {}) => { [`${regKey}:username`]: username, [`${regKey}:_password`]: password, [`${regKey}:_auth`]: auth, + [`${regKey}:certfile`]: certfile, + [`${regKey}:keyfile`]: keyfile, } = opts return new Auth({ @@ -90,15 +108,19 @@ const getAuth = (uri, opts = {}) => { auth, username, password, + certfile, + keyfile, }) } class Auth { - constructor ({ token, auth, username, password, scopeAuthKey }) { + constructor ({ token, auth, username, password, scopeAuthKey, certfile, keyfile }) { this.scopeAuthKey = scopeAuthKey this.token = null this.auth = null this.isBasicAuth = false + this.cert = null + this.key = null if (token) { this.token = token } else if (auth) { @@ -108,6 +130,15 @@ class Auth { this.auth = Buffer.from(`${username}:${p}`, 'utf8').toString('base64') this.isBasicAuth = true } + // mTLS may be used in conjunction with another auth method above + if (certfile && keyfile) { + const cert = maybeReadFile(certfile, 'utf-8') + const key = maybeReadFile(keyfile, 'utf-8') + if (cert && key) { + this.cert = cert + this.key = key + } + } } } diff --git a/deps/npm/node_modules/npm-registry-fetch/lib/index.js b/deps/npm/node_modules/npm-registry-fetch/lib/index.js index 6c834aa4af5ef0..cc331a50c09635 100644 --- a/deps/npm/node_modules/npm-registry-fetch/lib/index.js +++ b/deps/npm/node_modules/npm-registry-fetch/lib/index.js @@ -112,10 +112,10 @@ function regFetch (uri, /* istanbul ignore next */ opts_ = {}) { cache: getCacheMode(opts), cachePath: opts.cache, ca: opts.ca, - cert: opts.cert, + cert: auth.cert || opts.cert, headers, integrity: opts.integrity, - key: opts.key, + key: auth.key || opts.key, localAddress: opts.localAddress, maxSockets: opts.maxSockets, memoize: opts.memoize, @@ -213,6 +213,10 @@ function getHeaders (uri, auth, opts) { 'user-agent': opts.userAgent, }, opts.headers || {}) + if (opts.authType) { + headers['npm-auth-type'] = opts.authType + } + if (opts.scope) { headers['npm-scope'] = opts.scope } diff --git a/deps/npm/node_modules/npm-registry-fetch/package.json b/deps/npm/node_modules/npm-registry-fetch/package.json index 0ce12c633637a6..8a0189a9ef74d5 100644 --- a/deps/npm/node_modules/npm-registry-fetch/package.json +++ b/deps/npm/node_modules/npm-registry-fetch/package.json @@ -1,6 +1,6 @@ { "name": "npm-registry-fetch", - "version": "13.1.1", + "version": "13.3.0", "description": "Fetch-based http client for use with npm registry APIs", "main": "lib", "files": [ @@ -44,7 +44,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^3.0.1", - "@npmcli/template-oss": "3.3.2", + "@npmcli/template-oss": "3.5.0", "cacache": "^16.0.2", "nock": "^13.2.4", "require-inject": "^1.4.4", @@ -60,6 +60,6 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "3.3.2" + "version": "3.5.0" } } diff --git a/deps/npm/node_modules/pacote/README.md b/deps/npm/node_modules/pacote/README.md index eac48f69fe39fc..4403ad113a0b5c 100644 --- a/deps/npm/node_modules/pacote/README.md +++ b/deps/npm/node_modules/pacote/README.md @@ -237,6 +237,7 @@ In addition to the common `package.json` fields, manifests include: artifact can be found. * `manifest._from` A normalized form of the spec passed in as an argument. * `manifest._integrity` The integrity value for the package artifact. +* `manifest._id` The canonical spec of this package version: name@version. * `manifest.dist` Registry manifests (those included in a packument) have a `dist` object. Only `tarball` is required, though at least one of `shasum` or `integrity` is almost always present. @@ -274,3 +275,8 @@ For Pacote's purposes, the following fields are relevant: `foo@latest` gets turned into `foo@1.2.3`. * `time` In the full packument, an object mapping version numbers to publication times, for the `opts.before` functionality. + +Pacote adds the following fields, regardless of the accept header: + +* `_cached` Whether the packument was fetched from the network or the local cache. +* `_contentLength` The size of the packument. diff --git a/deps/npm/node_modules/pacote/lib/fetcher.js b/deps/npm/node_modules/pacote/lib/fetcher.js index d88724c5d19731..5f93e703bca4b8 100644 --- a/deps/npm/node_modules/pacote/lib/fetcher.js +++ b/deps/npm/node_modules/pacote/lib/fetcher.js @@ -18,6 +18,7 @@ const removeTrailingSlashes = require('./util/trailing-slashes.js') const getContents = require('@npmcli/installed-package-contents') const readPackageJsonFast = require('read-package-json-fast') const readPackageJson = promisify(require('read-package-json')) +const Minipass = require('minipass') // we only change ownership on unix platforms, and only if uid is 0 const selfOwner = process.getuid && process.getuid() === 0 ? { @@ -105,15 +106,10 @@ class FetcherBase { this[_readPackageJson] = readPackageJsonFast } - // config values: npmjs (default), never, always - // we don't want to mutate the original value - if (opts.replaceRegistryHost !== 'never' - && opts.replaceRegistryHost !== 'always' - ) { - this.replaceRegistryHost = 'npmjs' - } else { - this.replaceRegistryHost = opts.replaceRegistryHost - } + // rrh is a registry hostname or 'never' or 'always' + // defaults to registry.npmjs.org + this.replaceRegistryHost = (!opts.replaceRegistryHost || opts.replaceRegistryHost === 'npmjs') ? + 'registry.npmjs.org' : opts.replaceRegistryHost this.defaultTag = opts.defaultTag || 'latest' this.registry = removeTrailingSlashes(opts.registry || 'https://registry.npmjs.org') @@ -224,18 +220,18 @@ class FetcherBase { } [_istream] (stream) { - // everyone will need one of these, either for verifying or calculating - // We always set it, because we have might only have a weak legacy hex - // sha1 in the packument, and this MAY upgrade it to a stronger algo. - // If we had an integrity, and it doesn't match, then this does not - // override that error; the istream will raise the error before it - // gets to the point of re-setting the integrity. - const istream = ssri.integrityStream(this.opts) - istream.on('integrity', i => this.integrity = i) - stream.on('error', er => istream.emit('error', er)) - - // if not caching this, just pipe through to the istream and return it + // if not caching this, just return it if (!this.opts.cache || !this[_cacheFetches]) { + // instead of creating a new integrity stream, we only piggyback on the + // provided stream's events + if (stream.hasIntegrityEmitter) { + stream.on('integrity', i => this.integrity = i) + return stream + } + + const istream = ssri.integrityStream(this.opts) + istream.on('integrity', i => this.integrity = i) + stream.on('error', err => istream.emit('error', err)) return stream.pipe(istream) } @@ -243,21 +239,23 @@ class FetcherBase { // but then pipe from the original tarball stream into the cache as well. // To do this without losing any data, and since the cacache put stream // is not a passthrough, we have to pipe from the original stream into - // the cache AFTER we pipe into the istream. Since the cache stream + // the cache AFTER we pipe into the middleStream. Since the cache stream // has an asynchronous flush to write its contents to disk, we need to - // defer the istream end until the cache stream ends. - stream.pipe(istream, { end: false }) + // defer the middleStream end until the cache stream ends. + const middleStream = new Minipass() + stream.on('error', err => middleStream.emit('error', err)) + stream.pipe(middleStream, { end: false }) const cstream = cacache.put.stream( this.opts.cache, `pacote:tarball:${this.from}`, this.opts ) + cstream.on('integrity', i => this.integrity = i) + cstream.on('error', err => stream.emit('error', err)) stream.pipe(cstream) - // defer istream end until after cstream - // cache write errors should not crash the fetch, this is best-effort. - cstream.promise().catch(() => {}).then(() => istream.end()) - return istream + cstream.promise().catch(() => {}).then(() => middleStream.end()) + return middleStream } pickIntegrityAlgorithm () { diff --git a/deps/npm/node_modules/pacote/lib/registry.js b/deps/npm/node_modules/pacote/lib/registry.js index 2eb37bceccebc6..c8eb6b02907022 100644 --- a/deps/npm/node_modules/pacote/lib/registry.js +++ b/deps/npm/node_modules/pacote/lib/registry.js @@ -122,11 +122,12 @@ class RegistryFetcher extends Fetcher { } const packument = await this.packument() - const mani = await pickManifest(packument, this.spec.fetchSpec, { + let mani = await pickManifest(packument, this.spec.fetchSpec, { ...this.opts, defaultTag: this.defaultTag, before: this.before, }) + mani = rpj.normalize(mani) /* XXX add ETARGET and E403 revalidation of cached packuments here */ // add _resolved and _integrity from dist object @@ -165,49 +166,53 @@ class RegistryFetcher extends Fetcher { mani._integrity = String(this.integrity) if (dist.signatures) { if (this.opts.verifySignatures) { - if (this.registryKeys) { - // validate and throw on error, then set _signatures - const message = `${mani._id}:${mani._integrity}` - for (const signature of dist.signatures) { - const publicKey = this.registryKeys.filter(key => (key.keyid === signature.keyid))[0] - if (!publicKey) { - throw Object.assign(new Error( - `${mani._id} has a signature with keyid: ${signature.keyid} ` + - 'but no corresponding public key can be found.' - ), { code: 'EMISSINGSIGNATUREKEY' }) - } - const validPublicKey = - !publicKey.expires || (Date.parse(publicKey.expires) > Date.now()) - if (!validPublicKey) { - throw Object.assign(new Error( - `${mani._id} has a signature with keyid: ${signature.keyid} ` + + // validate and throw on error, then set _signatures + const message = `${mani._id}:${mani._integrity}` + for (const signature of dist.signatures) { + const publicKey = this.registryKeys && + this.registryKeys.filter(key => (key.keyid === signature.keyid))[0] + if (!publicKey) { + throw Object.assign(new Error( + `${mani._id} has a registry signature with keyid: ${signature.keyid} ` + + 'but no corresponding public key can be found' + ), { code: 'EMISSINGSIGNATUREKEY' }) + } + const validPublicKey = + !publicKey.expires || (Date.parse(publicKey.expires) > Date.now()) + if (!validPublicKey) { + throw Object.assign(new Error( + `${mani._id} has a registry signature with keyid: ${signature.keyid} ` + `but the corresponding public key has expired ${publicKey.expires}` - ), { code: 'EEXPIREDSIGNATUREKEY' }) - } - const verifier = crypto.createVerify('SHA256') - verifier.write(message) - verifier.end() - const valid = verifier.verify( - publicKey.pemkey, - signature.sig, - 'base64' - ) - if (!valid) { - throw Object.assign(new Error( - 'Integrity checksum signature failed: ' + - `key ${publicKey.keyid} signature ${signature.sig}` - ), { code: 'EINTEGRITYSIGNATURE' }) - } + ), { code: 'EEXPIREDSIGNATUREKEY' }) + } + const verifier = crypto.createVerify('SHA256') + verifier.write(message) + verifier.end() + const valid = verifier.verify( + publicKey.pemkey, + signature.sig, + 'base64' + ) + if (!valid) { + throw Object.assign(new Error( + `${mani._id} has an invalid registry signature with ` + + `keyid: ${publicKey.keyid} and signature: ${signature.sig}` + ), { + code: 'EINTEGRITYSIGNATURE', + keyid: publicKey.keyid, + signature: signature.sig, + resolved: mani._resolved, + integrity: mani._integrity, + }) } - mani._signatures = dist.signatures } - // if no keys, don't set _signatures + mani._signatures = dist.signatures } else { mani._signatures = dist.signatures } } } - this.package = rpj.normalize(mani) + this.package = mani return this.package } diff --git a/deps/npm/node_modules/pacote/lib/remote.js b/deps/npm/node_modules/pacote/lib/remote.js index 14e687805d47a8..6759dbba3ed2f2 100644 --- a/deps/npm/node_modules/pacote/lib/remote.js +++ b/deps/npm/node_modules/pacote/lib/remote.js @@ -4,8 +4,6 @@ const _tarballFromResolved = Symbol.for('pacote.Fetcher._tarballFromResolved') const pacoteVersion = require('../package.json').version const fetch = require('npm-registry-fetch') const Minipass = require('minipass') -// The default registry URL is a string of great magic. -const magicHost = 'https://registry.npmjs.org' const _cacheFetches = Symbol.for('pacote.Fetcher._cacheFetches') const _headers = Symbol('_headers') @@ -14,11 +12,9 @@ class RemoteFetcher extends Fetcher { super(spec, opts) this.resolved = this.spec.fetchSpec const resolvedURL = new URL(this.resolved) - if ( - (this.replaceRegistryHost === 'npmjs' - && resolvedURL.origin === magicHost) - || this.replaceRegistryHost === 'always' - ) { + if (this.replaceRegistryHost !== 'never' + && (this.replaceRegistryHost === 'always' + || this.replaceRegistryHost === resolvedURL.host)) { this.resolved = new URL(resolvedURL.pathname, this.registry).href } @@ -35,6 +31,8 @@ class RemoteFetcher extends Fetcher { [_tarballFromResolved] () { const stream = new Minipass() + stream.hasIntegrityEmitter = true + const fetchOpts = { ...this.opts, headers: this[_headers](), @@ -42,16 +40,19 @@ class RemoteFetcher extends Fetcher { integrity: this.integrity, algorithms: [this.pickIntegrityAlgorithm()], } - fetch(this.resolved, fetchOpts).then(res => { - const hash = res.headers.get('x-local-cache-hash') - if (hash) { - this.integrity = decodeURIComponent(hash) - } + fetch(this.resolved, fetchOpts).then(res => { res.body.on('error', /* istanbul ignore next - exceedingly rare and hard to simulate */ er => stream.emit('error', er) - ).pipe(stream) + ) + + res.body.on('integrity', i => { + this.integrity = i + stream.emit('integrity', i) + }) + + res.body.pipe(stream) }).catch(er => stream.emit('error', er)) return stream diff --git a/deps/npm/node_modules/pacote/package.json b/deps/npm/node_modules/pacote/package.json index 5045e3f06a0788..696c925d353208 100644 --- a/deps/npm/node_modules/pacote/package.json +++ b/deps/npm/node_modules/pacote/package.json @@ -1,6 +1,6 @@ { "name": "pacote", - "version": "13.5.0", + "version": "13.6.1", "description": "JavaScript package downloader", "author": "GitHub Inc.", "bin": { @@ -21,8 +21,7 @@ "template-oss-apply": "template-oss-apply --force" }, "tap": { - "timeout": 300, - "coverage-map": "map.js" + "timeout": 300 }, "devDependencies": { "@npmcli/eslint-config": "^3.0.1", @@ -46,7 +45,7 @@ "@npmcli/git": "^3.0.0", "@npmcli/installed-package-contents": "^1.0.7", "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^3.0.1", + "@npmcli/run-script": "^4.1.0", "cacache": "^16.0.0", "chownr": "^2.0.0", "fs-minipass": "^2.1.0", diff --git a/deps/npm/node_modules/rimraf/node_modules/glob/common.js b/deps/npm/node_modules/rimraf/node_modules/glob/common.js index 8e363b6c1f16a1..424c46e1dab1be 100644 --- a/deps/npm/node_modules/rimraf/node_modules/glob/common.js +++ b/deps/npm/node_modules/rimraf/node_modules/glob/common.js @@ -110,6 +110,8 @@ function setopts (self, pattern, options) { // Note that they are not supported in Glob itself anyway. options.nonegate = true options.nocomment = true + // always treat \ in patterns as escapes, not path separators + options.allowWindowsEscape = false self.minimatch = new Minimatch(pattern, options) self.options = self.minimatch.options diff --git a/deps/npm/node_modules/rimraf/node_modules/glob/glob.js b/deps/npm/node_modules/rimraf/node_modules/glob/glob.js index afcf82752c390a..37a4d7e60775a3 100644 --- a/deps/npm/node_modules/rimraf/node_modules/glob/glob.js +++ b/deps/npm/node_modules/rimraf/node_modules/glob/glob.js @@ -342,7 +342,10 @@ Glob.prototype._process = function (pattern, index, inGlobStar, cb) { var read if (prefix === null) read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + else if (isAbsolute(prefix) || + isAbsolute(pattern.map(function (p) { + return typeof p === 'string' ? p : '[*]' + }).join('/'))) { if (!prefix || !isAbsolute(prefix)) prefix = '/' + prefix read = prefix diff --git a/deps/npm/node_modules/rimraf/node_modules/glob/package.json b/deps/npm/node_modules/rimraf/node_modules/glob/package.json index cc1a57a896e9eb..5940b649b7e65a 100644 --- a/deps/npm/node_modules/rimraf/node_modules/glob/package.json +++ b/deps/npm/node_modules/rimraf/node_modules/glob/package.json @@ -2,7 +2,10 @@ "author": "Isaac Z. Schlueter (http://blog.izs.me/)", "name": "glob", "description": "a little globber", - "version": "7.2.0", + "version": "7.2.3", + "publishConfig": { + "tag": "v7-legacy" + }, "repository": { "type": "git", "url": "git://github.com/isaacs/node-glob.git" @@ -20,7 +23,7 @@ "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, diff --git a/deps/npm/node_modules/rimraf/node_modules/glob/sync.js b/deps/npm/node_modules/rimraf/node_modules/glob/sync.js index 4f46f90559a0ca..2c4f480192d28d 100644 --- a/deps/npm/node_modules/rimraf/node_modules/glob/sync.js +++ b/deps/npm/node_modules/rimraf/node_modules/glob/sync.js @@ -48,7 +48,7 @@ function GlobSync (pattern, options) { } GlobSync.prototype._finish = function () { - assert(this instanceof GlobSync) + assert.ok(this instanceof GlobSync) if (this.realpath) { var self = this this.matches.forEach(function (matchset, index) { @@ -72,7 +72,7 @@ GlobSync.prototype._finish = function () { GlobSync.prototype._process = function (pattern, index, inGlobStar) { - assert(this instanceof GlobSync) + assert.ok(this instanceof GlobSync) // Get the first [n] parts of pattern that are all strings. var n = 0 @@ -109,7 +109,10 @@ GlobSync.prototype._process = function (pattern, index, inGlobStar) { var read if (prefix === null) read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + else if (isAbsolute(prefix) || + isAbsolute(pattern.map(function (p) { + return typeof p === 'string' ? p : '[*]' + }).join('/'))) { if (!prefix || !isAbsolute(prefix)) prefix = '/' + prefix read = prefix diff --git a/deps/npm/node_modules/socks-proxy-agent/package.json b/deps/npm/node_modules/socks-proxy-agent/package.json index 268b8a5b187441..aa2999969c1743 100644 --- a/deps/npm/node_modules/socks-proxy-agent/package.json +++ b/deps/npm/node_modules/socks-proxy-agent/package.json @@ -2,7 +2,7 @@ "name": "socks-proxy-agent", "description": "A SOCKS proxy `http.Agent` implementation for HTTP and HTTPS", "homepage": "https://github.com/TooTallNate/node-socks-proxy-agent#readme", - "version": "6.2.0", + "version": "7.0.0", "main": "dist/index.js", "author": { "email": "nathan@tootallnate.net", @@ -38,6 +38,10 @@ "name": "Matheus Fernandes", "email": "matheus.frndes@gmail.com" }, + { + "name": "Ricky Miller", + "email": "richardkazuomiller@gmail.com" + }, { "name": "Shantanu Sharma", "email": "shantanu34@outlook.com" @@ -111,12 +115,12 @@ "@commitlint/config-conventional": "latest", "@types/debug": "latest", "@types/node": "latest", - "cacheable-lookup": "^6.0.4", + "cacheable-lookup": "latest", "conventional-github-releaser": "latest", - "dns2": "^2.0.1", + "dns2": "latest", "finepack": "latest", "git-authors-cli": "latest", - "mocha": "latest", + "mocha": "9", "nano-staged": "latest", "npm-check-updates": "latest", "prettier-standard": "latest", @@ -136,6 +140,22 @@ "files": [ "dist" ], + "scripts": { + "build": "tsc", + "clean": "rimraf node_modules", + "contributors": "(git-authors-cli && finepack && git add package.json && git commit -m 'build: contributors' --no-verify) || true", + "lint": "ts-standard", + "postrelease": "npm run release:tags && npm run release:github && (ci-publish || npm publish --access=public)", + "prebuild": "rimraf dist", + "prepublishOnly": "npm run build", + "prerelease": "npm run update:check && npm run contributors", + "release": "standard-version -a", + "release:github": "conventional-github-releaser -p angular", + "release:tags": "git push --follow-tags origin HEAD:master", + "test": "mocha --reporter spec", + "update": "ncu -u", + "update:check": "ncu -- --error-level 2" + }, "license": "MIT", "commitlint": { "extends": [ @@ -157,21 +177,5 @@ "commit-msg": "npx commitlint --edit", "pre-commit": "npx nano-staged" }, - "typings": "dist/index.d.ts", - "scripts": { - "build": "tsc", - "clean": "rimraf node_modules", - "contributors": "(git-authors-cli && finepack && git add package.json && git commit -m 'build: contributors' --no-verify) || true", - "lint": "ts-standard", - "postrelease": "npm run release:tags && npm run release:github && (ci-publish || npm publish --access=public)", - "prebuild": "rimraf dist", - "prerelease": "npm run update:check && npm run contributors", - "release": "standard-version -a", - "release:github": "conventional-github-releaser -p angular", - "release:tags": "git push --follow-tags origin HEAD:master", - "test": "mocha --reporter spec", - "update": "ncu -u", - "update:check": "ncu -- --error-level 2" - }, - "readme": "socks-proxy-agent\n================\n### A SOCKS proxy `http.Agent` implementation for HTTP and HTTPS\n[![Build Status](https://github.com/TooTallNate/node-socks-proxy-agent/workflows/Node%20CI/badge.svg)](https://github.com/TooTallNate/node-socks-proxy-agent/actions?workflow=Node+CI)\n\nThis module provides an `http.Agent` implementation that connects to a\nspecified SOCKS proxy server, and can be used with the built-in `http`\nand `https` modules.\n\nIt can also be used in conjunction with the `ws` module to establish a WebSocket\nconnection over a SOCKS proxy. See the \"Examples\" section below.\n\nInstallation\n------------\n\nInstall with `npm`:\n\n``` bash\nnpm install socks-proxy-agent\n```\n\n\nExamples\n--------\n\n#### TypeScript example\n\n```ts\nimport https from 'https';\nimport { SocksProxyAgent } from 'socks-proxy-agent';\n\nconst info = {\n\thostname: 'br41.nordvpn.com',\n\tuserId: 'your-name@gmail.com',\n\tpassword: 'abcdef12345124'\n};\nconst agent = new SocksProxyAgent(info);\n\nhttps.get('https://ipinfo.io', { agent }, (res) => {\n\tconsole.log(res.headers);\n\tres.pipe(process.stdout);\n});\n```\n\n#### `http` module example\n\n```js\nvar url = require('url');\nvar http = require('http');\nvar { SocksProxyAgent } = require('socks-proxy-agent');\n\n// SOCKS proxy to connect to\nvar proxy = process.env.socks_proxy || 'socks://127.0.0.1:1080';\nconsole.log('using proxy server %j', proxy);\n\n// HTTP endpoint for the proxy to connect to\nvar endpoint = process.argv[2] || 'http://nodejs.org/api/';\nconsole.log('attempting to GET %j', endpoint);\nvar opts = url.parse(endpoint);\n\n// create an instance of the `SocksProxyAgent` class with the proxy server information\nvar agent = new SocksProxyAgent(proxy);\nopts.agent = agent;\n\nhttp.get(opts, function (res) {\n\tconsole.log('\"response\" event!', res.headers);\n\tres.pipe(process.stdout);\n});\n```\n\n#### `https` module example\n\n```js\nvar url = require('url');\nvar https = require('https');\nvar { SocksProxyAgent } = require('socks-proxy-agent');\n\n// SOCKS proxy to connect to\nvar proxy = process.env.socks_proxy || 'socks://127.0.0.1:1080';\nconsole.log('using proxy server %j', proxy);\n\n// HTTP endpoint for the proxy to connect to\nvar endpoint = process.argv[2] || 'https://encrypted.google.com/';\nconsole.log('attempting to GET %j', endpoint);\nvar opts = url.parse(endpoint);\n\n// create an instance of the `SocksProxyAgent` class with the proxy server information\nvar agent = new SocksProxyAgent(proxy);\nopts.agent = agent;\n\nhttps.get(opts, function (res) {\n\tconsole.log('\"response\" event!', res.headers);\n\tres.pipe(process.stdout);\n});\n```\n\n#### `ws` WebSocket connection example\n\n``` js\nvar WebSocket = require('ws');\nvar { SocksProxyAgent } = require('socks-proxy-agent');\n\n// SOCKS proxy to connect to\nvar proxy = process.env.socks_proxy || 'socks://127.0.0.1:1080';\nconsole.log('using proxy server %j', proxy);\n\n// WebSocket endpoint for the proxy to connect to\nvar endpoint = process.argv[2] || 'ws://echo.websocket.org';\nconsole.log('attempting to connect to WebSocket %j', endpoint);\n\n// create an instance of the `SocksProxyAgent` class with the proxy server information\nvar agent = new SocksProxyAgent(proxy);\n\n// initiate the WebSocket connection\nvar socket = new WebSocket(endpoint, { agent: agent });\n\nsocket.on('open', function () {\n\tconsole.log('\"open\" event!');\n\tsocket.send('hello world');\n});\n\nsocket.on('message', function (data, flags) {\n\tconsole.log('\"message\" event! %j %j', data, flags);\n\tsocket.close();\n});\n```\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2013 Nathan Rajlich <nathan@tootallnate.net>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" -} \ No newline at end of file + "typings": "dist/index.d.ts" +} diff --git a/deps/npm/package.json b/deps/npm/package.json index f616f038dbf921..969e8e160c28c5 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -1,5 +1,5 @@ { - "version": "8.11.0", + "version": "8.15.0", "name": "npm", "description": "a package manager for JavaScript", "workspaces": [ @@ -58,14 +58,14 @@ "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/arborist": "^5.0.4", "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.1.0", + "@npmcli/config": "^4.2.0", "@npmcli/fs": "^2.1.0", "@npmcli/map-workspaces": "^2.0.3", "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^3.0.1", + "@npmcli/run-script": "^4.1.7", "abbrev": "~1.1.1", "archy": "~1.0.0", - "cacache": "^16.1.0", + "cacache": "^16.1.1", "chalk": "^4.1.2", "chownr": "^2.0.0", "cli-columns": "^4.0.0", @@ -90,7 +90,7 @@ "libnpmsearch": "^5.0.2", "libnpmteam": "^4.0.2", "libnpmversion": "^3.0.1", - "make-fetch-happen": "^10.1.5", + "make-fetch-happen": "^10.2.0", "minipass": "^3.1.6", "minipass-pipeline": "^1.2.4", "mkdirp": "^1.0.4", @@ -100,14 +100,15 @@ "nopt": "^5.0.0", "npm-audit-report": "^3.0.0", "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.2", + "npm-package-arg": "^9.1.0", "npm-pick-manifest": "^7.0.1", - "npm-profile": "^6.0.3", - "npm-registry-fetch": "^13.1.1", + "npm-profile": "^6.2.0", + "npm-registry-fetch": "^13.3.0", "npm-user-validate": "^1.0.1", "npmlog": "^6.0.2", "opener": "^1.5.2", - "pacote": "^13.4.1", + "p-map": "^4.0.0", + "pacote": "^13.6.1", "parse-conflict-json": "^2.0.2", "proc-log": "^2.0.1", "qrcode-terminal": "^0.12.0", @@ -179,6 +180,7 @@ "npm-user-validate", "npmlog", "opener", + "p-map", "pacote", "parse-conflict-json", "proc-log", @@ -207,6 +209,7 @@ "tap": "^16.0.1" }, "scripts": { + "dependencies": "node scripts/bundle-and-gitignore-deps.js && node scripts/dependency-graph.js", "dumpconf": "env | grep npm | sort | uniq", "preversion": "bash scripts/update-authors.sh && git add AUTHORS && git commit -m \"chore: update AUTHORS\" || true", "licenses": "licensee --production --errors-only", diff --git a/deps/npm/tap-snapshots/test/lib/commands/adduser.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/adduser.js.test.cjs new file mode 100644 index 00000000000000..ba27a6a781ab05 --- /dev/null +++ b/deps/npm/tap-snapshots/test/lib/commands/adduser.js.test.cjs @@ -0,0 +1,17 @@ +/* IMPORTANT + * This snapshot file is auto-generated, but designed for humans. + * It should be checked into source control and tracked carefully. + * Re-generate by setting TAP_SNAPSHOT=1 and running tests. + * Make sure to inspect the output below. Do not ignore changes! + */ +'use strict' +exports[`test/lib/commands/adduser.js TAP auth-type sso warning > warning 1`] = ` +Object { + "warn": Array [ + Array [ + "config", + "--auth-type=sso is will be removed in a future version.", + ], + ], +} +` diff --git a/deps/npm/tap-snapshots/test/lib/commands/audit.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/audit.js.test.cjs index c3680933e6a793..3e7658c14bb195 100644 --- a/deps/npm/tap-snapshots/test/lib/commands/audit.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/commands/audit.js.test.cjs @@ -41,6 +41,233 @@ added 1 package, and audited 2 packages in xxx found 0 vulnerabilities ` +exports[`test/lib/commands/audit.js TAP audit signatures ignores optional dependencies > must match snapshot 1`] = ` +audited 1 package in xxx + +1 package has a verified registry signature + +` + +exports[`test/lib/commands/audit.js TAP audit signatures json output with invalid and missing signatures > must match snapshot 1`] = ` +{ + "invalid": [ + { + "name": "kms-demo", + "version": "1.0.0", + "location": "node_modules/kms-demo", + "resolved": "https://registry.npmjs.org/kms-demo/-/kms-demo-1.0.0.tgz", + "integrity": "sha512-QqZ7VJ/8xPkS9s2IWB7Shj3qTJdcRyeXKbPQnsZjsPEwvutGv0EGeVchPcauoiDFJlGbZMFq5GDCurAGNSghJQ==", + "signature": "bogus", + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA" + } + ], + "missing": [ + { + "name": "async", + "version": "1.1.1", + "location": "node_modules/async", + "resolved": "https://registry.npmjs.org/async/-/async-1.1.1.tgz" + } + ] +} +` + +exports[`test/lib/commands/audit.js TAP audit signatures json output with invalid signatures > must match snapshot 1`] = ` +{ + "invalid": [ + { + "name": "kms-demo", + "version": "1.0.0", + "location": "node_modules/kms-demo", + "resolved": "https://registry.npmjs.org/kms-demo/-/kms-demo-1.0.0.tgz", + "integrity": "sha512-QqZ7VJ/8xPkS9s2IWB7Shj3qTJdcRyeXKbPQnsZjsPEwvutGv0EGeVchPcauoiDFJlGbZMFq5GDCurAGNSghJQ==", + "signature": "bogus", + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA" + } + ], + "missing": [] +} +` + +exports[`test/lib/commands/audit.js TAP audit signatures json output with valid signatures > must match snapshot 1`] = ` +{ + "invalid": [], + "missing": [] +} +` + +exports[`test/lib/commands/audit.js TAP audit signatures multiple registries with keys and signatures > must match snapshot 1`] = ` +audited 2 packages in xxx + +2 packages have verified registry signatures + +` + +exports[`test/lib/commands/audit.js TAP audit signatures omit dev dependencies with missing signature > must match snapshot 1`] = ` +audited 1 package in xxx + +1 package has a verified registry signature + +` + +exports[`test/lib/commands/audit.js TAP audit signatures output details about missing signatures > must match snapshot 1`] = ` +audited 1 package in xxx + +1 package has a missing registry signature but the registry is providing signing keys: + +kms-demo@1.0.0 (https://registry.npmjs.org/) +` + +exports[`test/lib/commands/audit.js TAP audit signatures third-party registry with invalid signatures errors > must match snapshot 1`] = ` +audited 1 package in xxx + +1 package has an invalid registry signature: + +@npmcli/arborist@1.0.14 (https://verdaccio-clone.org) + +Someone might have tampered with this package since it was published on the registry! + +` + +exports[`test/lib/commands/audit.js TAP audit signatures third-party registry with keys and missing signatures errors > must match snapshot 1`] = ` +audited 1 package in xxx + +1 package has a missing registry signature but the registry is providing signing keys: + +@npmcli/arborist@1.0.14 (https://verdaccio-clone.org) +` + +exports[`test/lib/commands/audit.js TAP audit signatures third-party registry with keys and signatures > must match snapshot 1`] = ` +audited 1 package in xxx + +1 package has a verified registry signature + +` + +exports[`test/lib/commands/audit.js TAP audit signatures with both invalid and missing signatures > must match snapshot 1`] = ` +audited 2 packages in xxx + +1 package has a missing registry signature but the registry is providing signing keys: + +async@1.1.1 (https://registry.npmjs.org/) + +1 package has an invalid registry signature: + +kms-demo@1.0.0 (https://registry.npmjs.org/) + +Someone might have tampered with this package since it was published on the registry! + +` + +exports[`test/lib/commands/audit.js TAP audit signatures with bundled and peer deps and no signatures > must match snapshot 1`] = ` +audited 1 package in xxx + +1 package has a verified registry signature + +` + +exports[`test/lib/commands/audit.js TAP audit signatures with invalid signatures > must match snapshot 1`] = ` +audited 1 package in xxx + +1 package has an invalid registry signature: + +kms-demo@1.0.0 (https://registry.npmjs.org/) + +Someone might have tampered with this package since it was published on the registry! + +` + +exports[`test/lib/commands/audit.js TAP audit signatures with invalid signtaures and color output enabled > must match snapshot 1`] = ` +audited 1 package in xxx + +1 package has an invalid registry signature: + +kms-demo@1.0.0 (https://registry.npmjs.org/) + +Someone might have tampered with this package since it was published on the registry! + +` + +exports[`test/lib/commands/audit.js TAP audit signatures with keys but missing signature > must match snapshot 1`] = ` +audited 1 package in xxx + +1 package has a missing registry signature but the registry is providing signing keys: + +kms-demo@1.0.0 (https://registry.npmjs.org/) +` + +exports[`test/lib/commands/audit.js TAP audit signatures with multiple invalid signatures > must match snapshot 1`] = ` +audited 2 packages in xxx + +2 packages have invalid registry signatures: + +async@1.1.1 (https://registry.npmjs.org/) +kms-demo@1.0.0 (https://registry.npmjs.org/) + +Someone might have tampered with these packages since they where published on the registry! + +` + +exports[`test/lib/commands/audit.js TAP audit signatures with multiple missing signatures > must match snapshot 1`] = ` +audited 2 packages in xxx + +2 packages have missing registry signatures but the registry is providing signing keys: + +async@1.1.1 (https://registry.npmjs.org/) +kms-demo@1.0.0 (https://registry.npmjs.org/) +` + +exports[`test/lib/commands/audit.js TAP audit signatures with multiple valid signatures and one invalid > must match snapshot 1`] = ` +audited 3 packages in xxx + +2 packages have verified registry signatures + +1 package has an invalid registry signature: + +node-fetch@1.6.0 (https://registry.npmjs.org/) + +Someone might have tampered with this package since it was published on the registry! + +` + +exports[`test/lib/commands/audit.js TAP audit signatures with valid and missing signatures > must match snapshot 1`] = ` +audited 2 packages in xxx + +1 package has a verified registry signature + +1 package has a missing registry signature but the registry is providing signing keys: + +async@1.1.1 (https://registry.npmjs.org/) +` + +exports[`test/lib/commands/audit.js TAP audit signatures with valid signatures > must match snapshot 1`] = ` +audited 1 package in xxx + +1 package has a verified registry signature + +` + +exports[`test/lib/commands/audit.js TAP audit signatures with valid signatures using alias > must match snapshot 1`] = ` +audited 1 package in xxx + +1 package has a verified registry signature + +` + +exports[`test/lib/commands/audit.js TAP audit signatures workspaces verifies registry deps and ignores local workspace deps > must match snapshot 1`] = ` +audited 3 packages in xxx + +3 packages have verified registry signatures + +` + +exports[`test/lib/commands/audit.js TAP audit signatures workspaces verifies registry deps when filtering by workspace name > must match snapshot 1`] = ` +audited 2 packages in xxx + +2 packages have verified registry signatures + +` + exports[`test/lib/commands/audit.js TAP fallback audit > must match snapshot 1`] = ` # npm audit report diff --git a/deps/npm/tap-snapshots/test/lib/commands/init.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/init.js.test.cjs index 9dd0b4b6be36b7..a544b864035417 100644 --- a/deps/npm/tap-snapshots/test/lib/commands/init.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/commands/init.js.test.cjs @@ -10,26 +10,53 @@ Array [] ` exports[`test/lib/commands/init.js TAP workspaces no args > should print helper info 1`] = ` +Array [] +` + +exports[`test/lib/commands/init.js TAP workspaces no args, existing folder > should print helper info 1`] = ` +Array [] +` + +exports[`test/lib/commands/init.js TAP workspaces post workspace-init reify > should print helper info 1`] = ` Array [ Array [ String( - This utility will walk you through creating a package.json file. - It only covers the most common items, and tries to guess sensible defaults. - - See \`npm help init\` for definitive documentation on these fields - and exactly what they do. - - Use \`npm install \` afterwards to install a package and - save it as a dependency in the package.json file. - Press ^C at any time to quit. + added 1 package in 100ms ), ], ] ` -exports[`test/lib/commands/init.js TAP workspaces no args, existing folder > should print helper info 1`] = ` -Array [] +exports[`test/lib/commands/init.js TAP workspaces post workspace-init reify > should reify tree on init ws complete 1`] = ` +{ + "name": "top-level", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "top-level", + "workspaces": [ + "a" + ] + }, + "a": { + "version": "1.0.0", + "license": "ISC", + "devDependencies": {} + }, + "node_modules/a": { + "resolved": "a", + "link": true + } + }, + "dependencies": { + "a": { + "version": "file:a" + } + } +} + ` exports[`test/lib/commands/init.js TAP workspaces with arg but missing workspace folder > should print helper info 1`] = ` diff --git a/deps/npm/tap-snapshots/test/lib/commands/publish.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/publish.js.test.cjs index e2d248edf5b6c6..65a9ee02eb9524 100644 --- a/deps/npm/tap-snapshots/test/lib/commands/publish.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/commands/publish.js.test.cjs @@ -56,7 +56,11 @@ Array [ ] ` -exports[`test/lib/commands/publish.js TAP has auth for scope configured registry > new package version 1`] = ` +exports[`test/lib/commands/publish.js TAP has mTLS auth for scope configured registry > new package version 1`] = ` ++ @npm/test-package@1.0.0 +` + +exports[`test/lib/commands/publish.js TAP has token auth for scope configured registry > new package version 1`] = ` + @npm/test-package@1.0.0 ` diff --git a/deps/npm/tap-snapshots/test/lib/load-all-commands.js.test.cjs b/deps/npm/tap-snapshots/test/lib/load-all-commands.js.test.cjs index b8c274b085a7a5..b697dfbb796c68 100644 --- a/deps/npm/tap-snapshots/test/lib/load-all-commands.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/load-all-commands.js.test.cjs @@ -33,6 +33,7 @@ npm adduser Options: [--registry ] [--scope <@scope>] +[--auth-type ] aliases: login, add-user @@ -43,7 +44,7 @@ exports[`test/lib/load-all-commands.js TAP load each command audit > must match Run a security audit Usage: -npm audit [fix] +npm audit [fix|signatures] Options: [--audit-level ] [--dry-run] [-f|--force] @@ -97,11 +98,7 @@ exports[`test/lib/load-all-commands.js TAP load each command cache > must match Manipulates packages cache Usage: -npm cache add -npm cache add -npm cache add -npm cache add -npm cache add @ +npm cache add npm cache clean [] npm cache ls [@] npm cache verify @@ -177,7 +174,7 @@ exports[`test/lib/load-all-commands.js TAP load each command deprecate > must ma Deprecate a version of a package Usage: -npm deprecate [@] +npm deprecate Options: [--registry ] [--otp ] @@ -192,10 +189,10 @@ Usage: npm diff [...] Options: -[--diff [--diff ...]] -[--diff-name-only] [--diff-unified ] [--diff-ignore-all-space] -[--diff-no-prefix] [--diff-src-prefix ] [--diff-dst-prefix ] -[--diff-text] [-g|--global] [--tag ] +[--diff [--diff ...]] [--diff-name-only] +[--diff-unified ] [--diff-ignore-all-space] [--diff-no-prefix] +[--diff-src-prefix ] [--diff-dst-prefix ] [--diff-text] [-g|--global] +[--tag ] [-w|--workspace [-w|--workspace ...]] [-ws|--workspaces] [--include-workspace-root] @@ -206,9 +203,9 @@ exports[`test/lib/load-all-commands.js TAP load each command dist-tag > must mat Modify package distribution tags Usage: -npm dist-tag add @ [] -npm dist-tag rm -npm dist-tag ls [] +npm dist-tag add [] +npm dist-tag rm +npm dist-tag ls [] Options: [-w|--workspace [-w|--workspace ...]] @@ -269,8 +266,7 @@ npm exec -c ' [args...]' npm exec --package=foo -c ' [args...]' Options: -[--package [@] [--package [@] ...]] -[-c|--call ] +[--package [--package ...]] [-c|--call ] [-w|--workspace [-w|--workspace ...]] [-ws|--workspaces] [--include-workspace-root] @@ -283,7 +279,7 @@ exports[`test/lib/load-all-commands.js TAP load each command explain > must matc Explain installed packages Usage: -npm explain +npm explain Options: [--json] [-w|--workspace [-w|--workspace ...]] @@ -325,7 +321,7 @@ exports[`test/lib/load-all-commands.js TAP load each command fund > must match s Retrieve funding information Usage: -npm fund [[<@scope>/]] +npm fund [] Options: [--json] [--no-browser|--browser ] [--unicode] @@ -389,14 +385,13 @@ exports[`test/lib/load-all-commands.js TAP load each command init > must match s Create a package.json file Usage: -npm init [--force|-f|--yes|-y|--scope] +npm init (same as \`npx ) npm init <@scope> (same as \`npx <@scope>/create\`) -npm init [<@scope>/] (same as \`npx [<@scope>/]create-\`) Options: -[-y|--yes] [-f|--force] +[-y|--yes] [-f|--force] [--scope <@scope>] [-w|--workspace [-w|--workspace ...]] -[-ws|--workspaces] [--include-workspace-root] +[-ws|--workspaces] [--no-workspaces-update] [--include-workspace-root] aliases: create, innit @@ -407,16 +402,7 @@ exports[`test/lib/load-all-commands.js TAP load each command install > must matc Install a package Usage: -npm install [<@scope>/] -npm install [<@scope>/]@ -npm install [<@scope>/]@ -npm install [<@scope>/]@ -npm install @npm: -npm install -npm install -npm install -npm install -npm install / +npm install [ ...] Options: [-S|--save|--no-save|--save-prod|--save-dev|--save-optional|--save-peer|--save-bundle] @@ -451,16 +437,7 @@ exports[`test/lib/load-all-commands.js TAP load each command install-test > must Install package(s) and run tests Usage: -npm install-test [<@scope>/] -npm install-test [<@scope>/]@ -npm install-test [<@scope>/]@ -npm install-test [<@scope>/]@ -npm install-test @npm: -npm install-test -npm install-test -npm install-test -npm install-test -npm install-test / +npm install-test [ ...] Options: [-S|--save|--no-save|--save-prod|--save-dev|--save-optional|--save-peer|--save-bundle] @@ -480,8 +457,7 @@ exports[`test/lib/load-all-commands.js TAP load each command link > must match s Symlink a package folder Usage: -npm link (in package dir) -npm link [<@scope>/][@] +npm link [] Options: [-S|--save|--no-save|--save-prod|--save-dev|--save-optional|--save-peer|--save-bundle] @@ -523,6 +499,7 @@ npm adduser Options: [--registry ] [--scope <@scope>] +[--auth-type ] aliases: login, add-user @@ -545,7 +522,7 @@ exports[`test/lib/load-all-commands.js TAP load each command ls > must match sna List installed packages Usage: -npm ls [[<@scope>/] ...] +npm ls Options: [-a|--all] [--json] [-l|--long] [-p|--parseable] [-g|--global] [--depth ] @@ -579,7 +556,7 @@ exports[`test/lib/load-all-commands.js TAP load each command outdated > must mat Check for outdated packages Usage: -npm outdated [[<@scope>/] ...] +npm outdated [ ...] Options: [-a|--all] [--json] [-l|--long] [-p|--parseable] [-g|--global] @@ -592,9 +569,9 @@ exports[`test/lib/load-all-commands.js TAP load each command owner > must match Manage package owners Usage: -npm owner add [<@scope>/] -npm owner rm [<@scope>/] -npm owner ls [<@scope>/] +npm owner add +npm owner rm +npm owner ls Options: [--registry ] [--otp ] @@ -610,7 +587,7 @@ exports[`test/lib/load-all-commands.js TAP load each command pack > must match s Create a tarball from a package Usage: -npm pack [[<@scope>/]...] +npm pack Options: [--dry-run] [--json] [--pack-destination ] @@ -696,7 +673,7 @@ exports[`test/lib/load-all-commands.js TAP load each command publish > must matc Publish a package Usage: -npm publish [] +npm publish Options: [--tag ] [--access ] [--dry-run] [--otp ] @@ -710,7 +687,7 @@ exports[`test/lib/load-all-commands.js TAP load each command rebuild > must matc Rebuild a package Usage: -npm rebuild [[<@scope>/][@] ...] +npm rebuild [] ...] Options: [-g|--global] [--no-bin-links] [--foreground-scripts] [--ignore-scripts] @@ -769,7 +746,7 @@ npm run-script [-- ] Options: [-w|--workspace [-w|--workspace ...]] [-ws|--workspaces] [--include-workspace-root] [--if-present] [--ignore-scripts] -[--script-shell ] +[--foreground-scripts] [--script-shell ] aliases: run, rum, urn @@ -827,7 +804,7 @@ exports[`test/lib/load-all-commands.js TAP load each command star > must match s Mark your favorite packages Usage: -npm star [...] +npm star [...] Options: [--registry ] [--unicode] [--otp ] @@ -936,7 +913,7 @@ exports[`test/lib/load-all-commands.js TAP load each command unpublish > must ma Remove a package from the registry Usage: -npm unpublish [<@scope>/][@] +npm unpublish [] Options: [--dry-run] [-f|--force] @@ -950,7 +927,7 @@ exports[`test/lib/load-all-commands.js TAP load each command unstar > must match Remove an item from your favorite packages Usage: -npm unstar [...] +npm unstar [...] Options: [--registry ] [--unicode] [--otp ] @@ -999,7 +976,7 @@ exports[`test/lib/load-all-commands.js TAP load each command view > must match s View registry info Usage: -npm view [<@scope>/][@] [[.subfield]...] +npm view [] [[.subfield]...] Options: [--json] [-w|--workspace [-w|--workspace ...]] diff --git a/deps/npm/tap-snapshots/test/lib/npm.js.test.cjs b/deps/npm/tap-snapshots/test/lib/npm.js.test.cjs index c7c75ce84b6685..b2ba45b2d615cb 100644 --- a/deps/npm/tap-snapshots/test/lib/npm.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/npm.js.test.cjs @@ -190,6 +190,7 @@ All commands: Options: [--registry ] [--scope <@scope>] + [--auth-type ] aliases: login, add-user @@ -198,7 +199,7 @@ All commands: audit Run a security audit Usage: - npm audit [fix] + npm audit [fix|signatures] Options: [--audit-level ] [--dry-run] [-f|--force] @@ -237,11 +238,7 @@ All commands: cache Manipulates packages cache Usage: - npm cache add - npm cache add - npm cache add - npm cache add - npm cache add @ + npm cache add npm cache clean [] npm cache ls [@] npm cache verify @@ -307,7 +304,7 @@ All commands: deprecate Deprecate a version of a package Usage: - npm deprecate [@] + npm deprecate Options: [--registry ] [--otp ] @@ -320,10 +317,10 @@ All commands: npm diff [...] Options: - [--diff [--diff ...]] - [--diff-name-only] [--diff-unified ] [--diff-ignore-all-space] - [--diff-no-prefix] [--diff-src-prefix ] [--diff-dst-prefix ] - [--diff-text] [-g|--global] [--tag ] + [--diff [--diff ...]] [--diff-name-only] + [--diff-unified ] [--diff-ignore-all-space] [--diff-no-prefix] + [--diff-src-prefix ] [--diff-dst-prefix ] [--diff-text] [-g|--global] + [--tag ] [-w|--workspace [-w|--workspace ...]] [-ws|--workspaces] [--include-workspace-root] @@ -332,9 +329,9 @@ All commands: dist-tag Modify package distribution tags Usage: - npm dist-tag add @ [] - npm dist-tag rm - npm dist-tag ls [] + npm dist-tag add [] + npm dist-tag rm + npm dist-tag ls [] Options: [-w|--workspace [-w|--workspace ...]] @@ -387,8 +384,7 @@ All commands: npm exec --package=foo -c ' [args...]' Options: - [--package [@] [--package [@] ...]] - [-c|--call ] + [--package [--package ...]] [-c|--call ] [-w|--workspace [-w|--workspace ...]] [-ws|--workspaces] [--include-workspace-root] @@ -399,7 +395,7 @@ All commands: explain Explain installed packages Usage: - npm explain + npm explain Options: [--json] [-w|--workspace [-w|--workspace ...]] @@ -435,7 +431,7 @@ All commands: fund Retrieve funding information Usage: - npm fund [[<@scope>/]] + npm fund [] Options: [--json] [--no-browser|--browser ] [--unicode] @@ -479,14 +475,13 @@ All commands: init Create a package.json file Usage: - npm init [--force|-f|--yes|-y|--scope] + npm init (same as \`npx ) npm init <@scope> (same as \`npx <@scope>/create\`) - npm init [<@scope>/] (same as \`npx [<@scope>/]create-\`) Options: - [-y|--yes] [-f|--force] + [-y|--yes] [-f|--force] [--scope <@scope>] [-w|--workspace [-w|--workspace ...]] - [-ws|--workspaces] [--include-workspace-root] + [-ws|--workspaces] [--no-workspaces-update] [--include-workspace-root] aliases: create, innit @@ -495,16 +490,7 @@ All commands: install Install a package Usage: - npm install [<@scope>/] - npm install [<@scope>/]@ - npm install [<@scope>/]@ - npm install [<@scope>/]@ - npm install @npm: - npm install - npm install - npm install - npm install - npm install / + npm install [ ...] Options: [-S|--save|--no-save|--save-prod|--save-dev|--save-optional|--save-peer|--save-bundle] @@ -535,16 +521,7 @@ All commands: install-test Install package(s) and run tests Usage: - npm install-test [<@scope>/] - npm install-test [<@scope>/]@ - npm install-test [<@scope>/]@ - npm install-test [<@scope>/]@ - npm install-test @npm: - npm install-test - npm install-test - npm install-test - npm install-test - npm install-test / + npm install-test [ ...] Options: [-S|--save|--no-save|--save-prod|--save-dev|--save-optional|--save-peer|--save-bundle] @@ -562,8 +539,7 @@ All commands: link Symlink a package folder Usage: - npm link (in package dir) - npm link [<@scope>/][@] + npm link [] Options: [-S|--save|--no-save|--save-prod|--save-dev|--save-optional|--save-peer|--save-bundle] @@ -601,6 +577,7 @@ All commands: Options: [--registry ] [--scope <@scope>] + [--auth-type ] aliases: login, add-user @@ -619,7 +596,7 @@ All commands: ls List installed packages Usage: - npm ls [[<@scope>/] ...] + npm ls Options: [-a|--all] [--json] [-l|--long] [-p|--parseable] [-g|--global] [--depth ] @@ -649,7 +626,7 @@ All commands: outdated Check for outdated packages Usage: - npm outdated [[<@scope>/] ...] + npm outdated [ ...] Options: [-a|--all] [--json] [-l|--long] [-p|--parseable] [-g|--global] @@ -660,9 +637,9 @@ All commands: owner Manage package owners Usage: - npm owner add [<@scope>/] - npm owner rm [<@scope>/] - npm owner ls [<@scope>/] + npm owner add + npm owner rm + npm owner ls Options: [--registry ] [--otp ] @@ -676,7 +653,7 @@ All commands: pack Create a tarball from a package Usage: - npm pack [[<@scope>/]...] + npm pack Options: [--dry-run] [--json] [--pack-destination ] @@ -750,7 +727,7 @@ All commands: publish Publish a package Usage: - npm publish [] + npm publish Options: [--tag ] [--access ] [--dry-run] [--otp ] @@ -762,7 +739,7 @@ All commands: rebuild Rebuild a package Usage: - npm rebuild [[<@scope>/][@] ...] + npm rebuild [] ...] Options: [-g|--global] [--no-bin-links] [--foreground-scripts] [--ignore-scripts] @@ -813,7 +790,7 @@ All commands: Options: [-w|--workspace [-w|--workspace ...]] [-ws|--workspaces] [--include-workspace-root] [--if-present] [--ignore-scripts] - [--script-shell ] + [--foreground-scripts] [--script-shell ] aliases: run, rum, urn @@ -861,7 +838,7 @@ All commands: star Mark your favorite packages Usage: - npm star [...] + npm star [...] Options: [--registry ] [--unicode] [--otp ] @@ -954,7 +931,7 @@ All commands: unpublish Remove a package from the registry Usage: - npm unpublish [<@scope>/][@] + npm unpublish [] Options: [--dry-run] [-f|--force] @@ -966,7 +943,7 @@ All commands: unstar Remove an item from your favorite packages Usage: - npm unstar [...] + npm unstar [...] Options: [--registry ] [--unicode] [--otp ] @@ -1009,7 +986,7 @@ All commands: view View registry info Usage: - npm view [<@scope>/][@] [[.subfield]...] + npm view [] [[.subfield]...] Options: [--json] [-w|--workspace [-w|--workspace ...]] diff --git a/deps/npm/tap-snapshots/test/lib/utils/config/definitions.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/config/definitions.js.test.cjs index b12dccdb76c317..89c9969d69424d 100644 --- a/deps/npm/tap-snapshots/test/lib/utils/config/definitions.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/utils/config/definitions.js.test.cjs @@ -253,11 +253,12 @@ exports[`test/lib/utils/config/definitions.js TAP > config description for auth- #### \`auth-type\` * Default: "legacy" -* Type: "legacy", "sso", "saml", or "oauth" -* DEPRECATED: This method of SSO/SAML/OAuth is deprecated and will be removed - in a future version of npm in favor of web-based login. +* Type: "legacy", "web", "sso", "saml", "oauth", or "webauthn" -What authentication strategy to use with \`adduser\`/\`login\`. +NOTE: auth-type values "sso", "saml", "oauth", and "webauthn" will be +removed in a future version. + +What authentication strategy to use with \`login\`. ` exports[`test/lib/utils/config/definitions.js TAP > config description for before 1`] = ` @@ -403,8 +404,9 @@ newlines replaced by the string "\\n". For example: cert="-----BEGIN CERTIFICATE-----\\nXXXX\\nXXXX\\n-----END CERTIFICATE-----" \`\`\` -It is _not_ the path to a certificate file (and there is no "certfile" -option). +It is _not_ the path to a certificate file, though you can set a +registry-scoped "certfile" path like +"//other-registry.tld/:certfile=/path/to/cert.pem". ` exports[`test/lib/utils/config/definitions.js TAP > config description for ci-name 1`] = ` @@ -731,8 +733,6 @@ exports[`test/lib/utils/config/definitions.js TAP > config description for globa * Default: false * Type: Boolean -* DEPRECATED: \`--global\`, \`--local\` are deprecated. Use \`--location=global\` - instead. Operates in "global" mode, so that packages are installed into the \`prefix\` folder instead of the current working directory. See @@ -1017,7 +1017,8 @@ format with newlines replaced by the string "\\n". For example: key="-----BEGIN PRIVATE KEY-----\\nXXXX\\nXXXX\\n-----END PRIVATE KEY-----" \`\`\` -It is _not_ the path to a key file (and there is no "keyfile" option). +It is _not_ the path to a key file, though you can set a registry-scoped +"keyfile" path like "//other-registry.tld/:keyfile=/path/to/key.pem". ` exports[`test/lib/utils/config/definitions.js TAP > config description for legacy-bundling 1`] = ` @@ -1591,7 +1592,7 @@ exports[`test/lib/utils/config/definitions.js TAP > config description for scrip * Type: null or String The shell to use for scripts run with the \`npm exec\`, \`npm run\` and \`npm -init \` commands. +init \` commands. ` exports[`test/lib/utils/config/definitions.js TAP > config description for searchexclude 1`] = ` diff --git a/deps/npm/tap-snapshots/test/lib/utils/config/describe-all.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/config/describe-all.js.test.cjs index cacbe96a74f351..a9247f49c04187 100644 --- a/deps/npm/tap-snapshots/test/lib/utils/config/describe-all.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/utils/config/describe-all.js.test.cjs @@ -88,6 +88,19 @@ exit code. +#### \`auth-type\` + +* Default: "legacy" +* Type: "legacy", "web", "sso", "saml", "oauth", or "webauthn" + +NOTE: auth-type values "sso", "saml", "oauth", and "webauthn" will be +removed in a future version. + +What authentication strategy to use with \`login\`. + + + + #### \`before\` * Default: null @@ -217,8 +230,9 @@ newlines replaced by the string "\\n". For example: cert="-----BEGIN CERTIFICATE-----\\nXXXX\\nXXXX\\n-----END CERTIFICATE-----" \`\`\` -It is _not_ the path to a certificate file (and there is no "certfile" -option). +It is _not_ the path to a certificate file, though you can set a +registry-scoped "certfile" path like +"//other-registry.tld/:certfile=/path/to/cert.pem". @@ -560,6 +574,23 @@ results in no commit being made at all. +#### \`global\` + +* Default: false +* Type: Boolean + +Operates in "global" mode, so that packages are installed into the \`prefix\` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. + +* packages are installed into the \`{prefix}/lib/node_modules\` folder, instead + of the current working directory. +* bin files are linked to \`{prefix}/bin\` +* man pages are linked to \`{prefix}/share/man\` + + + + #### \`global-style\` * Default: false @@ -789,7 +820,8 @@ format with newlines replaced by the string "\\n". For example: key="-----BEGIN PRIVATE KEY-----\\nXXXX\\nXXXX\\n-----END PRIVATE KEY-----" \`\`\` -It is _not_ the path to a key file (and there is no "keyfile" option). +It is _not_ the path to a key file, though you can set a registry-scoped +"keyfile" path like "//other-registry.tld/:keyfile=/path/to/key.pem". @@ -1374,7 +1406,7 @@ npm init --scope=@foo --yes * Type: null or String The shell to use for scripts run with the \`npm exec\`, \`npm run\` and \`npm -init \` commands. +init \` commands. @@ -1761,18 +1793,6 @@ When set to \`dev\` or \`development\`, this is an alias for \`--include=dev\`. -#### \`auth-type\` - -* Default: "legacy" -* Type: "legacy", "sso", "saml", or "oauth" -* DEPRECATED: This method of SSO/SAML/OAuth is deprecated and will be removed - in a future version of npm in favor of web-based login. - -What authentication strategy to use with \`adduser\`/\`login\`. - - - - #### \`cache-max\` * Default: Infinity @@ -1806,25 +1826,6 @@ Alias for \`--include=dev\`. -#### \`global\` - -* Default: false -* Type: Boolean -* DEPRECATED: \`--global\`, \`--local\` are deprecated. Use \`--location=global\` - instead. - -Operates in "global" mode, so that packages are installed into the \`prefix\` -folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in behavior. - -* packages are installed into the \`{prefix}/lib/node_modules\` folder, instead - of the current working directory. -* bin files are linked to \`{prefix}/bin\` -* man pages are linked to \`{prefix}/share/man\` - - - - #### \`init.author.email\` * Default: "" diff --git a/deps/npm/tap-snapshots/test/lib/utils/open-url-prompt.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/open-url-prompt.js.test.cjs new file mode 100644 index 00000000000000..8af3c475c7720c --- /dev/null +++ b/deps/npm/tap-snapshots/test/lib/utils/open-url-prompt.js.test.cjs @@ -0,0 +1,25 @@ +/* IMPORTANT + * This snapshot file is auto-generated, but designed for humans. + * It should be checked into source control and tracked carefully. + * Re-generate by setting TAP_SNAPSHOT=1 and running tests. + * Make sure to inspect the output below. Do not ignore changes! + */ +'use strict' +exports[`test/lib/utils/open-url-prompt.js TAP opens a url > must match snapshot 1`] = ` +Array [ + Array [ + String( + npm home: + https://www.npmjs.com + ), + ], +] +` + +exports[`test/lib/utils/open-url-prompt.js TAP prints json output > must match snapshot 1`] = ` +Array [ + Array [ + "{\\"title\\":\\"npm home\\",\\"url\\":\\"https://www.npmjs.com\\"}", + ], +] +` diff --git a/deps/npm/test/lib/auth/legacy.js b/deps/npm/test/lib/auth/legacy.js index 0c23f8ba6b3356..39d977d436b5e2 100644 --- a/deps/npm/test/lib/auth/legacy.js +++ b/deps/npm/test/lib/auth/legacy.js @@ -12,7 +12,7 @@ const legacy = t.mock('../../../lib/auth/legacy.js', { }, }, 'npm-profile': profile, - '../../../lib/utils/open-url.js': (npm, url, msg) => { + '../../../lib/utils/open-url-prompt.js': (_npm, url) => { if (!url) { throw Object.assign(new Error('failed open url'), { code: 'ERROR' }) } diff --git a/deps/npm/test/lib/commands/adduser.js b/deps/npm/test/lib/commands/adduser.js index ca07199b2c9fbd..7c7079394f132d 100644 --- a/deps/npm/test/lib/commands/adduser.js +++ b/deps/npm/test/lib/commands/adduser.js @@ -75,6 +75,15 @@ t.test('bad auth type', async t => { }) }) +t.test('auth-type sso warning', async t => { + const { logs } = await loadMockNpm(t, { + config: { + 'auth-type': 'sso', + }, + }) + t.matchSnapshot({ warn: logs.warn }, 'warning') +}) + t.test('scoped login', async t => { const stdin = new stream.PassThrough() stdin.write('test-user\n') diff --git a/deps/npm/test/lib/commands/audit.js b/deps/npm/test/lib/commands/audit.js index da6de4774e6b8d..b6c6c77a2b40aa 100644 --- a/deps/npm/test/lib/commands/audit.js +++ b/deps/npm/test/lib/commands/audit.js @@ -1,14 +1,15 @@ +const fs = require('fs') +const zlib = require('zlib') +const path = require('path') const t = require('tap') const { load: loadMockNpm } = require('../../fixtures/mock-npm') const MockRegistry = require('../../fixtures/mock-registry.js') -const zlib = require('zlib') -const gzip = zlib.gzipSync + const gunzip = zlib.gunzipSync -const path = require('path') -const fs = require('fs') +const gzip = zlib.gzipSync -t.cleanSnapshot = str => str.replace(/packages in [0-9]+[a-z]+/g, 'packages in xxx') +t.cleanSnapshot = str => str.replace(/package(s)? in [0-9]+[a-z]+/g, 'package$1 in xxx') const tree = { 'package.json': JSON.stringify({ @@ -236,3 +237,1456 @@ t.test('completion', async t => { }) }) }) + +t.test('audit signatures', async t => { + const VALID_REGISTRY_KEYS = { + keys: [{ + expires: null, + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + keytype: 'ecdsa-sha2-nistp256', + scheme: 'ecdsa-sha2-nistp256', + key: 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+' + + 'IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg==', + }], + } + + const MISMATCHING_REGISTRY_KEYS = { + keys: [{ + expires: null, + keyid: 'SHA256:2l3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + keytype: 'ecdsa-sha2-nistp256', + scheme: 'ecdsa-sha2-nistp256', + key: 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+' + + 'IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg==', + }], + } + + const EXPIRED_REGISTRY_KEYS = { + keys: [{ + expires: '2021-01-11T15:45:42.144Z', + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + keytype: 'ecdsa-sha2-nistp256', + scheme: 'ecdsa-sha2-nistp256', + key: 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+' + + 'IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg==', + }], + } + + const installWithValidSigs = { + 'package.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + dependencies: { + 'kms-demo': '1.0.0', + }, + }), + node_modules: { + 'kms-demo': { + 'package.json': JSON.stringify({ + name: 'kms-demo', + version: '1.0.0', + }), + }, + }, + 'package-lock.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + lockfileVersion: 2, + requires: true, + packages: { + '': { + name: 'scratch', + version: '1.0.0', + dependencies: { + 'kms-demo': '^1.0.0', + }, + }, + 'node_modules/kms-demo': { + version: '1.0.0', + }, + }, + dependencies: { + 'kms-demo': { + version: '1.0.0', + }, + }, + }), + } + + const installWithAlias = { + 'package.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + dependencies: { + get: 'npm:node-fetch@^1.0.0', + }, + }), + node_modules: { + get: { + 'package.json': JSON.stringify({ + name: 'node-fetch', + version: '1.7.1', + }), + }, + }, + 'package-lock.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + lockfileVersion: 2, + requires: true, + packages: { + '': { + name: 'test-dep', + version: '1.0.0', + dependencies: { + get: 'npm:node-fetch@^1.0.0', + }, + }, + 'node_modules/demo': { + name: 'node-fetch', + version: '1.7.1', + }, + }, + dependencies: { + get: { + version: 'npm:node-fetch@1.7.1', + }, + }, + }), + } + + const noInstall = { + 'package.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + dependencies: { + 'kms-demo': '1.0.0', + }, + }), + 'package-lock.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + lockfileVersion: 2, + requires: true, + packages: { + '': { + name: 'scratch', + version: '1.0.0', + dependencies: { + 'kms-demo': '^1.0.0', + }, + }, + 'node_modules/kms-demo': { + version: '1.0.0', + }, + }, + dependencies: { + 'kms-demo': { + version: '1.0.0', + }, + }, + }), + } + + const workspaceInstall = { + 'package.json': JSON.stringify({ + name: 'workspaces-project', + version: '1.0.0', + workspaces: ['packages/*'], + dependencies: { + 'kms-demo': '^1.0.0', + }, + }), + node_modules: { + a: t.fixture('symlink', '../packages/a'), + b: t.fixture('symlink', '../packages/b'), + c: t.fixture('symlink', '../packages/c'), + 'kms-demo': { + 'package.json': JSON.stringify({ + name: 'kms-demo', + version: '1.0.0', + }), + }, + async: { + 'package.json': JSON.stringify({ + name: 'async', + version: '2.5.0', + }), + }, + 'light-cycle': { + 'package.json': JSON.stringify({ + name: 'light-cycle', + version: '1.4.2', + }), + }, + }, + packages: { + a: { + 'package.json': JSON.stringify({ + name: 'a', + version: '1.0.0', + dependencies: { + b: '^1.0.0', + async: '^2.0.0', + }, + }), + }, + b: { + 'package.json': JSON.stringify({ + name: 'b', + version: '1.0.0', + dependencies: { + 'light-cycle': '^1.0.0', + }, + }), + }, + c: { + 'package.json': JSON.stringify({ + name: 'c', + version: '1.0.0', + }), + }, + }, + } + + const installWithMultipleDeps = { + 'package.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + dependencies: { + 'kms-demo': '^1.0.0', + }, + devDependencies: { + async: '~1.1.0', + }, + }), + node_modules: { + 'kms-demo': { + 'package.json': JSON.stringify({ + name: 'kms-demo', + version: '1.0.0', + }), + }, + async: { + 'package.json': JSON.stringify({ + name: 'async', + version: '1.1.1', + dependencies: { + 'kms-demo': '^1.0.0', + }, + }), + }, + }, + 'package-lock.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + lockfileVersion: 2, + requires: true, + packages: { + '': { + name: 'scratch', + version: '1.0.0', + dependencies: { + 'kms-demo': '^1.0.0', + }, + devDependencies: { + async: '~1.0.0', + }, + }, + 'node_modules/kms-demo': { + version: '1.0.0', + }, + 'node_modules/async': { + version: '1.1.1', + }, + }, + dependencies: { + 'kms-demo': { + version: '1.0.0', + }, + async: { + version: '1.1.1', + dependencies: { + 'kms-demo': '^1.0.0', + }, + }, + }, + }), + } + + const installWithPeerDeps = { + 'package.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + peerDependencies: { + 'kms-demo': '^1.0.0', + }, + }), + node_modules: { + 'kms-demo': { + 'package.json': JSON.stringify({ + name: 'kms-demo', + version: '1.0.0', + }), + }, + }, + 'package-lock.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + lockfileVersion: 2, + requires: true, + packages: { + '': { + name: 'scratch', + version: '1.0.0', + peerDependencies: { + 'kms-demo': '^1.0.0', + }, + }, + 'node_modules/kms-demo': { + version: '1.0.0', + }, + }, + dependencies: { + 'kms-demo': { + version: '1.0.0', + }, + }, + }), + } + + const installWithOptionalDeps = { + 'package.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + dependencies: { + 'kms-demo': '^1.0.0', + }, + optionalDependencies: { + lorem: '^1.0.0', + }, + }, null, 2), + node_modules: { + 'kms-demo': { + 'package.json': JSON.stringify({ + name: 'kms-demo', + version: '1.0.0', + }), + }, + }, + 'package-lock.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + lockfileVersion: 2, + requires: true, + packages: { + '': { + name: 'scratch', + version: '1.0.0', + dependencies: { + 'kms-demo': '^1.0.0', + }, + optionalDependencies: { + lorem: '^1.0.0', + }, + }, + 'node_modules/kms-demo': { + version: '1.0.0', + }, + }, + dependencies: { + 'kms-demo': { + version: '1.0.0', + }, + }, + }), + } + + const installWithMultipleRegistries = { + 'package.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + dependencies: { + '@npmcli/arborist': '^1.0.0', + 'kms-demo': '^1.0.0', + }, + }), + node_modules: { + '@npmcli/arborist': { + 'package.json': JSON.stringify({ + name: '@npmcli/arborist', + version: '1.0.14', + }), + }, + 'kms-demo': { + 'package.json': JSON.stringify({ + name: 'kms-demo', + version: '1.0.0', + }), + }, + }, + 'package-lock.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + lockfileVersion: 2, + requires: true, + packages: { + '': { + name: 'test-dep', + version: '1.0.0', + dependencies: { + '@npmcli/arborist': '^1.0.0', + 'kms-demo': '^1.0.0', + }, + }, + 'node_modules/@npmcli/arborist': { + version: '1.0.14', + }, + 'node_modules/kms-demo': { + version: '1.0.0', + }, + }, + dependencies: { + '@npmcli/arborist': { + version: '1.0.14', + }, + 'kms-demo': { + version: '1.0.0', + }, + }, + }), + } + + const installWithThirdPartyRegistry = { + 'package.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + dependencies: { + '@npmcli/arborist': '^1.0.0', + }, + }), + node_modules: { + '@npmcli/arborist': { + 'package.json': JSON.stringify({ + name: '@npmcli/arborist', + version: '1.0.14', + }), + }, + }, + 'package-lock.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + lockfileVersion: 2, + requires: true, + packages: { + '': { + name: 'test-dep', + version: '1.0.0', + dependencies: { + '@npmcli/arborist': '^1.0.0', + }, + }, + 'node_modules/@npmcli/arborist': { + version: '1.0.14', + }, + }, + dependencies: { + '@npmcli/arborist': { + version: '1.0.14', + }, + }, + }), + } + + async function manifestWithValidSigs ({ registry }) { + const manifest = registry.manifest({ + name: 'kms-demo', + packuments: [{ + version: '1.0.0', + dist: { + tarball: 'https://registry.npmjs.org/kms-demo/-/kms-demo-1.0.0.tgz', + integrity: 'sha512-QqZ7VJ/8xPkS9s2IWB7Shj3qTJdcRyeXKbPQnsZjsPEwvutGv0EGeVchPca' + + 'uoiDFJlGbZMFq5GDCurAGNSghJQ==', + signatures: [ + { + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + sig: 'MEUCIDrLNspFeU5NZ6d55ycVBZIMXnPJi/XnI1Y2dlJvK8P1AiEAnXjn1IOMUd+U7YfPH' + + '+FNjwfLq+jCwfH8uaxocq+mpPk=', + }, + ], + }, + }], + }) + await registry.package({ manifest }) + } + + async function manifestWithInvalidSigs ({ registry, name = 'kms-demo', version = '1.0.0' }) { + const manifest = registry.manifest({ + name, + packuments: [{ + version, + dist: { + tarball: `https://registry.npmjs.org/${name}/-/${name}-${version}.tgz`, + integrity: 'sha512-QqZ7VJ/8xPkS9s2IWB7Shj3qTJdcRyeXKbPQnsZjsPEwvutGv0EGeVchPca' + + 'uoiDFJlGbZMFq5GDCurAGNSghJQ==', + signatures: [ + { + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + sig: 'bogus', + }, + ], + }, + }], + }) + await registry.package({ manifest }) + } + + async function manifestWithoutSigs ({ registry, name = 'kms-demo', version = '1.0.0' }) { + const manifest = registry.manifest({ + name, + packuments: [{ + version, + }], + }) + await registry.package({ manifest }) + } + + t.test('with valid signatures', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithValidSigs, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithValidSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 0, 'should exit successfully') + process.exitCode = 0 + t.match(joinedOutput(), /audited 1 package/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('with valid signatures using alias', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithAlias, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + const manifest = registry.manifest({ + name: 'node-fetch', + packuments: [{ + version: '1.7.1', + dist: { + tarball: 'https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz', + integrity: 'sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq6' + + '6igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==', + signatures: [ + { + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + sig: 'MEYCIQDEn2XrrMXlRm+wh2tOIUyb0Km3ZujfT+6Mf61OXGK9zQIhANnPauUwx3' + + 'N9RcQYQakDpOmLvYzNkySh7fmzmvyhk21j', + }, + ], + }, + }], + }) + await registry.package({ manifest }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 0, 'should exit successfully') + process.exitCode = 0 + t.match(joinedOutput(), /audited 1 package/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('with multiple valid signatures and one invalid', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: { + 'package.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + dependencies: { + 'kms-demo': '^1.0.0', + 'node-fetch': '^1.6.0', + }, + devDependencies: { + async: '~2.1.0', + }, + }), + node_modules: { + 'kms-demo': { + 'package.json': JSON.stringify({ + name: 'kms-demo', + version: '1.0.0', + }), + }, + async: { + 'package.json': JSON.stringify({ + name: 'async', + version: '2.5.0', + }), + }, + 'node-fetch': { + 'package.json': JSON.stringify({ + name: 'node-fetch', + version: '1.6.0', + }), + }, + }, + 'package-lock.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + lockfileVersion: 2, + requires: true, + packages: { + '': { + name: 'test-dep', + version: '1.0.0', + dependencies: { + 'kms-demo': '^1.0.0', + 'node-fetch': '^1.6.0', + }, + devDependencies: { + async: '~2.1.0', + }, + }, + 'node_modules/kms-demo': { + version: '1.0.0', + }, + 'node_modules/async': { + version: '2.5.0', + }, + 'node_modules/node-fetch': { + version: '1.6.0', + }, + }, + dependencies: { + 'kms-demo': { + version: '1.0.0', + }, + 'node-fetch': { + version: '1.6.0', + }, + async: { + version: '2.5.0', + }, + }, + }), + }, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithValidSigs({ registry }) + const asyncManifest = registry.manifest({ + name: 'async', + packuments: [{ + version: '2.5.0', + dist: { + tarball: 'https://registry.npmjs.org/async/-/async-2.5.0.tgz', + integrity: 'sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFT' + + 'KE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==', + signatures: [ + { + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + sig: 'MEUCIQCM8cX2U3IVZKKhzQx1w5AlNSDUI+fVf4857K1qT0NTNgIgdT4qwEl' + + '/kg2vU1uIWUI0bGikRvVHCHlRs1rgjPMpRFA=', + }, + ], + }, + }], + }) + await registry.package({ manifest: asyncManifest }) + await manifestWithInvalidSigs({ registry, name: 'node-fetch', version: '1.6.0' }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.match(joinedOutput(), /audited 3 packages/) + t.match(joinedOutput(), /2 packages have verified registry signatures/) + t.match(joinedOutput(), /1 package has an invalid registry signature/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('with bundled and peer deps and no signatures', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithPeerDeps, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithValidSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 0, 'should exit successfully') + process.exitCode = 0 + t.match(joinedOutput(), /audited 1 package/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('with invalid signatures', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithValidSigs, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithInvalidSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.match(joinedOutput(), /invalid registry signature/) + t.match(joinedOutput(), /kms-demo@1.0.0/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('with valid and missing signatures', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithMultipleDeps, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithValidSigs({ registry }) + await manifestWithoutSigs({ registry, name: 'async', version: '1.1.1' }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.match(joinedOutput(), /audited 2 packages/) + t.match(joinedOutput(), /verified registry signature/) + t.match(joinedOutput(), /missing registry signature/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('with both invalid and missing signatures', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithMultipleDeps, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithInvalidSigs({ registry }) + await manifestWithoutSigs({ registry, name: 'async', version: '1.1.1' }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.match(joinedOutput(), /audited 2 packages/) + t.match(joinedOutput(), /invalid/) + t.match(joinedOutput(), /missing/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('with multiple invalid signatures', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithMultipleDeps, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithInvalidSigs({ registry, name: 'kms-demo', version: '1.0.0' }) + await manifestWithInvalidSigs({ registry, name: 'async', version: '1.1.1' }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.matchSnapshot(joinedOutput()) + }) + + t.test('with multiple missing signatures', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithMultipleDeps, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithoutSigs({ registry, name: 'kms-demo', version: '1.0.0' }) + await manifestWithoutSigs({ registry, name: 'async', version: '1.1.1' }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.matchSnapshot(joinedOutput()) + }) + + t.test('with signatures but no public keys', async t => { + const { npm } = await loadMockNpm(t, { + prefixDir: installWithValidSigs, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithValidSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(404) + + await t.rejects( + npm.exec('audit', ['signatures']), + /no corresponding public key can be found/, + 'should throw with error' + ) + }) + + t.test('with signatures but the public keys are expired', async t => { + const { npm } = await loadMockNpm(t, { + prefixDir: installWithValidSigs, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithValidSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, EXPIRED_REGISTRY_KEYS) + + await t.rejects( + npm.exec('audit', ['signatures']), + /the corresponding public key has expired/, + 'should throw with error' + ) + }) + + t.test('with signatures but the public keyid does not match', async t => { + const { npm } = await loadMockNpm(t, { + prefixDir: installWithValidSigs, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithValidSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, MISMATCHING_REGISTRY_KEYS) + + await t.rejects( + npm.exec('audit', ['signatures']), + /no corresponding public key can be found/, + 'should throw with error' + ) + }) + + t.test('with keys but missing signature', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithValidSigs, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithoutSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.match( + joinedOutput(), + /registry is providing signing keys/ + ) + t.matchSnapshot(joinedOutput()) + }) + + t.test('output details about missing signatures', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithValidSigs, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithoutSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.match( + joinedOutput(), + /kms-demo/ + ) + t.matchSnapshot(joinedOutput()) + }) + + t.test('json output with valid signatures', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithValidSigs, + config: { + json: true, + }, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithValidSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 0, 'should exit successfully') + process.exitCode = 0 + t.match(joinedOutput(), JSON.stringify({ invalid: [], missing: [] }, null, 2)) + t.matchSnapshot(joinedOutput()) + }) + + t.test('json output with invalid signatures', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithValidSigs, + config: { + json: true, + }, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithInvalidSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.matchSnapshot(joinedOutput()) + }) + + t.test('json output with invalid and missing signatures', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithMultipleDeps, + config: { + json: true, + }, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithInvalidSigs({ registry }) + await manifestWithoutSigs({ registry, name: 'async', version: '1.1.1' }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.matchSnapshot(joinedOutput()) + }) + + t.test('omit dev dependencies with missing signature', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithMultipleDeps, + config: { + omit: ['dev'], + }, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithValidSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 0, 'should exit successfully') + process.exitCode = 0 + t.match(joinedOutput(), /audited 1 package/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('third-party registry without keys does not verify', async t => { + const registryUrl = 'https://verdaccio-clone2.org' + const { npm } = await loadMockNpm(t, { + prefixDir: installWithThirdPartyRegistry, + config: { + '@npmcli:registry': registryUrl, + }, + }) + const registry = new MockRegistry({ tap: t, registry: registryUrl }) + const manifest = registry.manifest({ + name: '@npmcli/arborist', + packuments: [{ + version: '1.0.14', + dist: { + tarball: 'https://registry.npmjs.org/@npmcli/arborist/-/@npmcli/arborist-1.0.14.tgz', + integrity: 'sha512-caa8hv5rW9VpQKk6tyNRvSaVDySVjo9GkI7Wj/wcsFyxPm3tYrE' + + 'sFyTjSnJH8HCIfEGVQNjqqKXaXLFVp7UBag==', + }, + }], + }) + await registry.package({ manifest }) + registry.nock.get('/-/npm/v1/keys').reply(404) + + await t.rejects( + npm.exec('audit', ['signatures']), + /found no dependencies to audit that where installed from a supported registry/ + ) + }) + + t.test('third-party registry with keys and signatures', async t => { + const registryUrl = 'https://verdaccio-clone.org' + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithThirdPartyRegistry, + config: { + '@npmcli:registry': registryUrl, + }, + }) + const registry = new MockRegistry({ tap: t, registry: registryUrl }) + + const manifest = registry.manifest({ + name: '@npmcli/arborist', + packuments: [{ + version: '1.0.14', + dist: { + tarball: 'https://registry.npmjs.org/@npmcli/arborist/-/@npmcli/arborist-1.0.14.tgz', + integrity: 'sha512-caa8hv5rW9VpQKk6tyNRvSaVDySVjo9GkI7Wj/wcsFyxPm3tYrE' + + 'sFyTjSnJH8HCIfEGVQNjqqKXaXLFVp7UBag==', + signatures: [ + { + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + sig: 'MEUCIAvNpR3G0j7WOPUuVMhE0ZdM8PnDNcsoeFD8Iwz9YWIMAiEAn8cicDC2' + + 'Sf9MFQydqTv6S5XYsAh9Af1sig1nApNI11M=', + }, + ], + }, + }], + }) + await registry.package({ manifest }) + registry.nock.get('/-/npm/v1/keys') + .reply(200, { + keys: [{ + expires: null, + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + keytype: 'ecdsa-sha2-nistp256', + scheme: 'ecdsa-sha2-nistp256', + key: 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+' + + 'IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg==', + }], + }) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 0, 'should exit successfully') + process.exitCode = 0 + t.match(joinedOutput(), /audited 1 package/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('third-party registry with invalid signatures errors', async t => { + const registryUrl = 'https://verdaccio-clone.org' + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithThirdPartyRegistry, + config: { + '@npmcli:registry': registryUrl, + }, + }) + const registry = new MockRegistry({ tap: t, registry: registryUrl }) + + const manifest = registry.manifest({ + name: '@npmcli/arborist', + packuments: [{ + version: '1.0.14', + dist: { + tarball: 'https://registry.npmjs.org/@npmcli/arborist/-/@npmcli/arborist-1.0.14.tgz', + integrity: 'sha512-caa8hv5rW9VpQKk6tyNRvSaVDySVjo9GkI7Wj/wcsFyxPm3tYrE' + + 'sFyTjSnJH8HCIfEGVQNjqqKXaXLFVp7UBag==', + signatures: [ + { + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + sig: 'bogus', + }, + ], + }, + }], + }) + await registry.package({ manifest }) + registry.nock.get('/-/npm/v1/keys') + .reply(200, { + keys: [{ + expires: null, + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + keytype: 'ecdsa-sha2-nistp256', + scheme: 'ecdsa-sha2-nistp256', + key: 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+' + + 'IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg==', + }], + }) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.match(joinedOutput(), /https:\/\/verdaccio-clone.org/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('third-party registry with keys and missing signatures errors', async t => { + const registryUrl = 'https://verdaccio-clone.org' + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithThirdPartyRegistry, + config: { + '@npmcli:registry': registryUrl, + }, + }) + const registry = new MockRegistry({ tap: t, registry: registryUrl }) + + const manifest = registry.manifest({ + name: '@npmcli/arborist', + packuments: [{ + version: '1.0.14', + dist: { + tarball: 'https://registry.npmjs.org/@npmcli/arborist/-/@npmcli/arborist-1.0.14.tgz', + integrity: 'sha512-caa8hv5rW9VpQKk6tyNRvSaVDySVjo9GkI7Wj/wcsFyxPm3tYrE' + + 'sFyTjSnJH8HCIfEGVQNjqqKXaXLFVp7UBag==', + }, + }], + }) + await registry.package({ manifest }) + registry.nock.get('/-/npm/v1/keys') + .reply(200, { + keys: [{ + expires: null, + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + keytype: 'ecdsa-sha2-nistp256', + scheme: 'ecdsa-sha2-nistp256', + key: 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+' + + 'IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg==', + }], + }) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.match(joinedOutput(), /1 package has a missing registry signature/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('multiple registries with keys and signatures', async t => { + const registryUrl = 'https://verdaccio-clone.org' + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithMultipleRegistries, + config: { + '@npmcli:registry': registryUrl, + }, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + const thirdPartyRegistry = new MockRegistry({ + tap: t, + registry: registryUrl, + }) + await manifestWithValidSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + const manifest = thirdPartyRegistry.manifest({ + name: '@npmcli/arborist', + packuments: [{ + version: '1.0.14', + dist: { + tarball: 'https://registry.npmjs.org/@npmcli/arborist/-/@npmcli/arborist-1.0.14.tgz', + integrity: 'sha512-caa8hv5rW9VpQKk6tyNRvSaVDySVjo9GkI7Wj/wcsFyxPm3tYrE' + + 'sFyTjSnJH8HCIfEGVQNjqqKXaXLFVp7UBag==', + signatures: [ + { + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + sig: 'MEUCIAvNpR3G0j7WOPUuVMhE0ZdM8PnDNcsoeFD8Iwz9YWIMAiEAn8cicDC2' + + 'Sf9MFQydqTv6S5XYsAh9Af1sig1nApNI11M=', + }, + ], + }, + }], + }) + await thirdPartyRegistry.package({ manifest }) + thirdPartyRegistry.nock.get('/-/npm/v1/keys') + .reply(200, { + keys: [{ + expires: null, + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + keytype: 'ecdsa-sha2-nistp256', + scheme: 'ecdsa-sha2-nistp256', + key: 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+' + + 'IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg==', + }], + }) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 0, 'should exit successfully') + process.exitCode = 0 + t.match(joinedOutput(), /audited 2 packages/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('errors with an empty install', async t => { + const { npm } = await loadMockNpm(t, { + prefixDir: { + 'package.json': JSON.stringify({ + name: 'test-dep', + version: '1.0.0', + }), + }, + }) + + await t.rejects( + npm.exec('audit', ['signatures']), + /found no installed dependencies to audit/ + ) + }) + + t.test('errors when the keys endpoint errors', async t => { + const { npm } = await loadMockNpm(t, { + prefixDir: installWithMultipleDeps, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + registry.nock.get('/-/npm/v1/keys') + .reply(500, { error: 'keys broke' }) + + await t.rejects( + npm.exec('audit', ['signatures']), + /keys broke/ + ) + }) + + t.test('ignores optional dependencies', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithOptionalDeps, + }) + + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithValidSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 0, 'should exit successfully') + process.exitCode = 0 + t.match(joinedOutput(), /audited 1 package/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('errors when no installed dependencies', async t => { + const { npm } = await loadMockNpm(t, { + prefixDir: noInstall, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await t.rejects( + npm.exec('audit', ['signatures']), + /found no dependencies to audit that where installed from a supported registry/ + ) + }) + + t.test('should skip missing non-prod deps', async t => { + const { npm } = await loadMockNpm(t, { + prefixDir: { + 'package.json': JSON.stringify({ + name: 'delta', + version: '1.0.0', + devDependencies: { + chai: '^1.0.0', + }, + }, null, 2), + node_modules: {}, + }, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await t.rejects( + npm.exec('audit', ['signatures']), + /found no dependencies to audit that where installed from a supported registry/ + ) + }) + + t.test('should skip invalid pkg ranges', async t => { + const { npm } = await loadMockNpm(t, { + prefixDir: { + 'package.json': JSON.stringify({ + name: 'delta', + version: '1.0.0', + dependencies: { + cat: '>=^2', + }, + }, null, 2), + node_modules: { + cat: { + 'package.json': JSON.stringify({ + name: 'cat', + version: '1.0.0', + }, null, 2), + }, + }, + }, + }) + + await t.rejects( + npm.exec('audit', ['signatures']), + /found no dependencies to audit that where installed from a supported registry/ + ) + }) + + t.test('should skip git specs', async t => { + const { npm } = await loadMockNpm(t, { + prefixDir: { + 'package.json': JSON.stringify({ + name: 'delta', + version: '1.0.0', + dependencies: { + cat: 'github:username/foo', + }, + }, null, 2), + node_modules: { + cat: { + 'package.json': JSON.stringify({ + name: 'cat', + version: '1.0.0', + }, null, 2), + }, + }, + }, + }) + + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await t.rejects( + npm.exec('audit', ['signatures']), + /found no dependencies to audit that where installed from a supported registry/ + ) + }) + + t.test('errors for global packages', async t => { + const { npm } = await loadMockNpm(t, { + config: { global: true }, + }) + + await t.rejects( + npm.exec('audit', ['signatures']), + /`npm audit signatures` does not support global packages/, + { code: 'ECIGLOBAL' } + ) + }) + + t.test('with invalid signtaures and color output enabled', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: installWithValidSigs, + config: { color: 'always' }, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithInvalidSigs({ registry }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 1, 'should exit with error') + process.exitCode = 0 + t.match( + joinedOutput(), + // eslint-disable-next-line no-control-regex + /\u001b\[1m\u001b\[31minvalid\u001b\[39m\u001b\[22m registry signature/ + ) + t.matchSnapshot(joinedOutput()) + }) + + t.test('workspaces', async t => { + t.test('verifies registry deps and ignores local workspace deps', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: workspaceInstall, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + await manifestWithValidSigs({ registry }) + const asyncManifest = registry.manifest({ + name: 'async', + packuments: [{ + version: '2.5.0', + dist: { + tarball: 'https://registry.npmjs.org/async/-/async-2.5.0.tgz', + integrity: 'sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFT' + + 'KE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==', + signatures: [ + { + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + sig: 'MEUCIQCM8cX2U3IVZKKhzQx1w5AlNSDUI+fVf4857K1qT0NTNgIgdT4qwEl' + + '/kg2vU1uIWUI0bGikRvVHCHlRs1rgjPMpRFA=', + }, + ], + }, + }], + }) + const lightCycleManifest = registry.manifest({ + name: 'light-cycle', + packuments: [{ + version: '1.4.2', + dist: { + tarball: 'https://registry.npmjs.org/light-cycle/-/light-cycle-1.4.2.tgz', + integrity: 'sha512-badZ3KMUaGwQfVcHjXTXSecYSXxT6f99bT+kVzBqmO10U1UNlE' + + 'thJ1XAok97E4gfDRTA2JJ3r0IeMPtKf0EJMw==', + signatures: [ + { + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + sig: 'MEUCIQDXjoxQz4MzPqaIuy2RJmBlcFp0UD3h9EhKZxxEz9IYZAIgLO0znG5' + + 'aGciTAg4u8fE0/UXBU4gU7JcvTZGxW2BmKGw=', + }, + ], + }, + }], + }) + await registry.package({ manifest: asyncManifest }) + await registry.package({ manifest: lightCycleManifest }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 0, 'should exit successfully') + process.exitCode = 0 + t.match(joinedOutput(), /audited 3 packages/) + t.matchSnapshot(joinedOutput()) + }) + + t.test('verifies registry deps when filtering by workspace name', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: workspaceInstall, + config: { workspace: ['./packages/a'] }, + }) + const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry') }) + const asyncManifest = registry.manifest({ + name: 'async', + packuments: [{ + version: '2.5.0', + dist: { + tarball: 'https://registry.npmjs.org/async/-/async-2.5.0.tgz', + integrity: 'sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFT' + + 'KE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==', + signatures: [ + { + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + sig: 'MEUCIQCM8cX2U3IVZKKhzQx1w5AlNSDUI+fVf4857K1qT0NTNgIgdT4qwEl' + + '/kg2vU1uIWUI0bGikRvVHCHlRs1rgjPMpRFA=', + }, + ], + }, + }], + }) + const lightCycleManifest = registry.manifest({ + name: 'light-cycle', + packuments: [{ + version: '1.4.2', + dist: { + tarball: 'https://registry.npmjs.org/light-cycle/-/light-cycle-1.4.2.tgz', + integrity: 'sha512-badZ3KMUaGwQfVcHjXTXSecYSXxT6f99bT+kVzBqmO10U1UNlE' + + 'thJ1XAok97E4gfDRTA2JJ3r0IeMPtKf0EJMw==', + signatures: [ + { + keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', + sig: 'MEUCIQDXjoxQz4MzPqaIuy2RJmBlcFp0UD3h9EhKZxxEz9IYZAIgLO0znG5' + + 'aGciTAg4u8fE0/UXBU4gU7JcvTZGxW2BmKGw=', + }, + ], + }, + }], + }) + await registry.package({ manifest: asyncManifest }) + await registry.package({ manifest: lightCycleManifest }) + registry.nock.get('/-/npm/v1/keys').reply(200, VALID_REGISTRY_KEYS) + + await npm.exec('audit', ['signatures']) + + t.equal(process.exitCode, 0, 'should exit successfully') + process.exitCode = 0 + t.match(joinedOutput(), /audited 2 packages/) + t.matchSnapshot(joinedOutput()) + }) + + // TODO: This should verify kms-demo, but doesn't because arborist filters + // workspace deps even if they're also root deps + t.test('verifies registry dep if workspaces is disabled', async t => { + const { npm } = await loadMockNpm(t, { + prefixDir: workspaceInstall, + config: { workspaces: false }, + }) + + await t.rejects( + npm.exec('audit', ['signatures']), + /found no installed dependencies to audit/ + ) + }) + }) +}) diff --git a/deps/npm/test/lib/commands/edit.js b/deps/npm/test/lib/commands/edit.js index 1943e8c5fb4ae1..b2a10be135ad90 100644 --- a/deps/npm/test/lib/commands/edit.js +++ b/deps/npm/test/lib/commands/edit.js @@ -1,4 +1,5 @@ const t = require('tap') +const fs = require('fs') const path = require('path') const tspawk = require('../../fixtures/tspawk') const { load: loadMockNpm } = require('../../fixtures/mock-npm') @@ -41,11 +42,19 @@ t.test('npm edit', async t => { const [scriptShell] = makeSpawnArgs({ event: 'install', path: npm.prefix, + cmd: 'testinstall', }) spawk.spawn('testeditor', [semverPath]) spawk.spawn( scriptShell, - args => args.includes('testinstall'), + args => { + const lastArg = args[args.length - 1] + const rightExtension = lastArg.endsWith('.cmd') || lastArg.endsWith('.sh') + const rightFilename = path.basename(lastArg).startsWith('install') + const rightContents = fs.readFileSync(lastArg, { encoding: 'utf8' }) + .trim().endsWith('testinstall') + return rightExtension && rightFilename && rightContents + }, { cwd: semverPath } ) await npm.exec('edit', ['semver']) @@ -58,11 +67,19 @@ t.test('rebuild failure', async t => { const [scriptShell] = makeSpawnArgs({ event: 'install', path: npm.prefix, + cmd: 'testinstall', }) spawk.spawn('testeditor', [semverPath]) spawk.spawn( scriptShell, - args => args.includes('testinstall'), + args => { + const lastArg = args[args.length - 1] + const rightExtension = lastArg.endsWith('.cmd') || lastArg.endsWith('.sh') + const rightFilename = path.basename(lastArg).startsWith('install') + const rightContents = fs.readFileSync(lastArg, { encoding: 'utf8' }) + .trim().endsWith('testinstall') + return rightExtension && rightFilename && rightContents + }, { cwd: semverPath } ).exit(1).stdout('test error') await t.rejects( @@ -94,11 +111,19 @@ t.test('npm edit editor has flags', async t => { const [scriptShell] = makeSpawnArgs({ event: 'install', path: npm.prefix, + cmd: 'testinstall', }) spawk.spawn('testeditor', ['--flag', semverPath]) spawk.spawn( scriptShell, - args => args.includes('testinstall'), + args => { + const lastArg = args[args.length - 1] + const rightExtension = lastArg.endsWith('.cmd') || lastArg.endsWith('.sh') + const rightFilename = path.basename(lastArg).startsWith('install') + const rightContents = fs.readFileSync(lastArg, { encoding: 'utf8' }) + .trim().endsWith('testinstall') + return rightExtension && rightFilename && rightContents + }, { cwd: semverPath } ) await npm.exec('edit', ['semver']) diff --git a/deps/npm/test/lib/commands/init.js b/deps/npm/test/lib/commands/init.js index 82e7e0524cee9b..32816adbc272ee 100644 --- a/deps/npm/test/lib/commands/init.js +++ b/deps/npm/test/lib/commands/init.js @@ -288,6 +288,7 @@ t.test('workspaces', t => { t.teardown(() => { npm._mockOutputs.length = 0 }) + npm._mockOutputs.length = 0 npm.localPrefix = t.testdir({ 'package.json': JSON.stringify({ name: 'top-level', @@ -306,6 +307,39 @@ t.test('workspaces', t => { t.matchSnapshot(npm._mockOutputs, 'should print helper info') }) + t.test('post workspace-init reify', async t => { + const _consolelog = console.log + console.log = () => null + t.teardown(() => { + console.log = _consolelog + npm._mockOutputs.length = 0 + delete npm.flatOptions.workspacesUpdate + }) + npm.started = Date.now() + npm._mockOutputs.length = 0 + npm.flatOptions.workspacesUpdate = true + npm.localPrefix = t.testdir({ + 'package.json': JSON.stringify({ + name: 'top-level', + }), + }) + + const Init = t.mock('../../../lib/commands/init.js', { + ...mocks, + 'init-package-json': (dir, initFile, config, cb) => { + t.equal(dir, resolve(npm.localPrefix, 'a'), 'should use the ws path') + return require('init-package-json')(dir, initFile, config, cb) + }, + }) + const init = new Init(npm) + await init.execWorkspaces([], ['a']) + const output = npm._mockOutputs.map(arr => arr.map(i => i.replace(/[0-9]*ms$/, '100ms'))) + t.matchSnapshot(output, 'should print helper info') + const lockFilePath = resolve(npm.localPrefix, 'package-lock.json') + const lockFile = fs.readFileSync(lockFilePath, { encoding: 'utf8' }) + t.matchSnapshot(lockFile, 'should reify tree on init ws complete') + }) + t.test('no args, existing folder', async t => { t.teardown(() => { npm._mockOutputs.length = 0 diff --git a/deps/npm/test/lib/commands/publish.js b/deps/npm/test/lib/commands/publish.js index 3cbe962382e21b..16b79df532d823 100644 --- a/deps/npm/test/lib/commands/publish.js +++ b/deps/npm/test/lib/commands/publish.js @@ -327,7 +327,7 @@ t.test('no auth for scope configured registry', async t => { ) }) -t.test('has auth for scope configured registry', async t => { +t.test('has token auth for scope configured registry', async t => { const spec = npa('@npm/test-package') const { npm, joinedOutput } = await loadMockNpm(t, { config: { @@ -356,6 +356,35 @@ t.test('has auth for scope configured registry', async t => { t.matchSnapshot(joinedOutput(), 'new package version') }) +t.test('has mTLS auth for scope configured registry', async t => { + const spec = npa('@npm/test-package') + const { npm, joinedOutput } = await loadMockNpm(t, { + config: { + '@npm:registry': alternateRegistry, + [`${alternateRegistry.slice(6)}/:certfile`]: '/some.cert', + [`${alternateRegistry.slice(6)}/:keyfile`]: '/some.key', + }, + prefixDir: { + 'package.json': JSON.stringify({ + name: '@npm/test-package', + version: '1.0.0', + }, null, 2), + }, + globals: ({ prefix }) => ({ + 'process.cwd': () => prefix, + }), + }) + const registry = new MockRegistry({ + tap: t, + registry: alternateRegistry, + }) + registry.nock.put(`/${spec.escapedName}`, body => { + return t.match(body, { name: '@npm/test-package' }) + }).reply(200, {}) + await npm.exec('publish', []) + t.matchSnapshot(joinedOutput(), 'new package version') +}) + t.test('workspaces', t => { const dir = { 'package.json': JSON.stringify( diff --git a/deps/npm/test/lib/commands/repo.js b/deps/npm/test/lib/commands/repo.js index e06a2894417bc2..4c983f1353f007 100644 --- a/deps/npm/test/lib/commands/repo.js +++ b/deps/npm/test/lib/commands/repo.js @@ -311,4 +311,12 @@ t.test('workspaces', async t => { ) t.match({}, opened, 'opened no repo urls') }) + + t.test('package arg and workspace', async (t) => { + npm.config.set('workspace', ['workspace-a']) + await npm.exec('repo', ['.']) + t.match({ + 'https://github.com/npm/workspaces-test': 1, + }, opened, 'opened url for package arg, not workspace') + }) }) diff --git a/deps/npm/test/lib/commands/restart.js b/deps/npm/test/lib/commands/restart.js index 84bd93d8c99ca9..bfbe715e8c688d 100644 --- a/deps/npm/test/lib/commands/restart.js +++ b/deps/npm/test/lib/commands/restart.js @@ -1,3 +1,5 @@ +const fs = require('fs') +const path = require('path') const t = require('tap') const tspawk = require('../../fixtures/tspawk') const { load: loadMockNpm } = require('../../fixtures/mock-npm') @@ -24,10 +26,14 @@ t.test('should run restart script from package.json', async t => { loglevel: 'silent', }, }) - const [scriptShell] = makeSpawnArgs({ path: npm.prefix }) + const [scriptShell] = makeSpawnArgs({ path: npm.prefix, cmd: 'node ./test-restart.js' }) const script = spawk.spawn(scriptShell, (args) => { - t.ok(args.includes('node ./test-restart.js "foo"'), 'ran restart script with extra args') - return true + const lastArg = args[args.length - 1] + const rightExtension = lastArg.endsWith('.cmd') || lastArg.endsWith('.sh') + const rightFilename = path.basename(lastArg).startsWith('restart') + const rightContents = fs.readFileSync(lastArg, { encoding: 'utf8' }) + .trim().endsWith('foo') + return rightExtension && rightFilename && rightContents }) await npm.exec('restart', ['foo']) t.ok(script.called, 'script ran') diff --git a/deps/npm/test/lib/commands/start.js b/deps/npm/test/lib/commands/start.js index 8fc73493d20a9a..79c2133bc69fc4 100644 --- a/deps/npm/test/lib/commands/start.js +++ b/deps/npm/test/lib/commands/start.js @@ -1,3 +1,5 @@ +const fs = require('fs') +const path = require('path') const t = require('tap') const tspawk = require('../../fixtures/tspawk') const { load: loadMockNpm } = require('../../fixtures/mock-npm') @@ -10,7 +12,6 @@ const spawk = tspawk(t) const makeSpawnArgs = require('@npmcli/run-script/lib/make-spawn-args.js') t.test('should run start script from package.json', async t => { - t.plan(2) const { npm } = await loadMockNpm(t, { prefixDir: { 'package.json': JSON.stringify({ @@ -25,10 +26,14 @@ t.test('should run start script from package.json', async t => { loglevel: 'silent', }, }) - const [scriptShell] = makeSpawnArgs({ path: npm.prefix }) + const [scriptShell] = makeSpawnArgs({ path: npm.prefix, cmd: 'node ./test-start.js' }) const script = spawk.spawn(scriptShell, (args) => { - t.ok(args.includes('node ./test-start.js "foo"'), 'ran start script with extra args') - return true + const lastArg = args[args.length - 1] + const rightExtension = lastArg.endsWith('.cmd') || lastArg.endsWith('.sh') + const rightFilename = path.basename(lastArg).startsWith('start') + const rightContents = fs.readFileSync(lastArg, { encoding: 'utf8' }) + .trim().endsWith('foo') + return rightExtension && rightFilename && rightContents }) await npm.exec('start', ['foo']) t.ok(script.called, 'script ran') diff --git a/deps/npm/test/lib/commands/stop.js b/deps/npm/test/lib/commands/stop.js index f2aef21899f6ce..1a4abd0b3abda7 100644 --- a/deps/npm/test/lib/commands/stop.js +++ b/deps/npm/test/lib/commands/stop.js @@ -1,3 +1,5 @@ +const fs = require('fs') +const path = require('path') const t = require('tap') const tspawk = require('../../fixtures/tspawk') const { load: loadMockNpm } = require('../../fixtures/mock-npm') @@ -24,10 +26,14 @@ t.test('should run stop script from package.json', async t => { loglevel: 'silent', }, }) - const [scriptShell] = makeSpawnArgs({ path: npm.prefix }) + const [scriptShell] = makeSpawnArgs({ path: npm.prefix, cmd: 'node ./test-stop.js' }) const script = spawk.spawn(scriptShell, (args) => { - t.ok(args.includes('node ./test-stop.js "foo"'), 'ran stop script with extra args') - return true + const lastArg = args[args.length - 1] + const rightExtension = lastArg.endsWith('.cmd') || lastArg.endsWith('.sh') + const rightFilename = path.basename(lastArg).startsWith('stop') + const rightContents = fs.readFileSync(lastArg, { encoding: 'utf8' }) + .trim().endsWith('foo') + return rightExtension && rightFilename && rightContents }) await npm.exec('stop', ['foo']) t.ok(script.called, 'script ran') diff --git a/deps/npm/test/lib/commands/test.js b/deps/npm/test/lib/commands/test.js index e9ea0a3c834aa1..c6d3f530bb69e3 100644 --- a/deps/npm/test/lib/commands/test.js +++ b/deps/npm/test/lib/commands/test.js @@ -1,3 +1,5 @@ +const fs = require('fs') +const path = require('path') const t = require('tap') const tspawk = require('../../fixtures/tspawk') const { load: loadMockNpm } = require('../../fixtures/mock-npm') @@ -24,10 +26,14 @@ t.test('should run test script from package.json', async t => { loglevel: 'silent', }, }) - const [scriptShell] = makeSpawnArgs({ path: npm.prefix }) + const [scriptShell] = makeSpawnArgs({ path: npm.prefix, cmd: 'node ./test-test.js' }) const script = spawk.spawn(scriptShell, (args) => { - t.ok(args.includes('node ./test-test.js "foo"'), 'ran test script with extra args') - return true + const lastArg = args[args.length - 1] + const rightExtension = lastArg.endsWith('.cmd') || lastArg.endsWith('.sh') + const rightFilename = path.basename(lastArg).startsWith('test') + const rightContents = fs.readFileSync(lastArg, { encoding: 'utf8' }) + .trim().endsWith('foo') + return rightExtension && rightFilename && rightContents }) await npm.exec('test', ['foo']) t.ok(script.called, 'script ran') diff --git a/deps/npm/test/lib/commands/view.js b/deps/npm/test/lib/commands/view.js index da823db5d75072..d347bc9230ec8a 100644 --- a/deps/npm/test/lib/commands/view.js +++ b/deps/npm/test/lib/commands/view.js @@ -33,6 +33,7 @@ const packument = (nv, opts) => { }, }, blue: { + _id: 'blue', name: 'blue', 'dist-tags': { latest: '1.0.0', @@ -464,6 +465,14 @@ t.test('throws when unpublished', async t => { ) }) +t.test('throws when version not matched', async t => { + const { npm } = await loadMockNpm(t) + await t.rejects( + npm.exec('view', ['blue@2.0.0']), + { code: 'E404', pkgid: 'blue@2.0.0', message: 'No match found for version 2.0.0' } + ) +}) + t.test('workspaces', async t => { const prefixDir = { 'package.json': JSON.stringify({ diff --git a/deps/npm/test/lib/commands/whoami.js b/deps/npm/test/lib/commands/whoami.js index ad7c223888df41..d63b49015f0d07 100644 --- a/deps/npm/test/lib/commands/whoami.js +++ b/deps/npm/test/lib/commands/whoami.js @@ -34,6 +34,20 @@ t.test('npm whoami --json', async t => { t.equal(JSON.parse(joinedOutput()), username, 'should print username') }) +t.test('npm whoami using mTLS', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { config: { + '//registry.npmjs.org/:certfile': '/some.cert', + '//registry.npmjs.org/:keyfile': '/some.key', + } }) + const registry = new MockRegistry({ + tap: t, + registry: npm.config.get('registry'), + }) + registry.whoami({ username }) + await npm.exec('whoami', []) + t.equal(joinedOutput(), username, 'should print username') +}) + t.test('credentials from token', async t => { const { npm, joinedOutput } = await loadMockNpm(t, { config: { diff --git a/deps/npm/test/lib/utils/open-url-prompt.js b/deps/npm/test/lib/utils/open-url-prompt.js new file mode 100644 index 00000000000000..6908e36b7c81e3 --- /dev/null +++ b/deps/npm/test/lib/utils/open-url-prompt.js @@ -0,0 +1,150 @@ +const t = require('tap') +const mockGlobals = require('../../fixtures/mock-globals.js') +const EventEmitter = require('events') + +const OUTPUT = [] +const output = (...args) => OUTPUT.push(args) +const npm = { + _config: { + json: false, + browser: true, + }, + config: { + get: k => npm._config[k], + set: (k, v) => { + npm._config[k] = v + }, + }, + output, +} + +let openerUrl = null +let openerOpts = null +let openerResult = null +const opener = (url, opts, cb) => { + openerUrl = url + openerOpts = opts + return cb(openerResult) +} + +let questionShouldResolve = true +const readline = { + createInterface: () => ({ + question: (_q, cb) => { + if (questionShouldResolve === true) { + cb() + } + }, + close: () => {}, + }), +} + +const openUrlPrompt = t.mock('../../../lib/utils/open-url-prompt.js', { + opener, + readline, +}) + +mockGlobals(t, { + 'process.stdin.isTTY': true, + 'process.stdout.isTTY': true, +}) + +t.test('does not open a url in non-interactive environments', async t => { + t.teardown(() => { + openerUrl = null + openerOpts = null + OUTPUT.length = 0 + }) + + mockGlobals(t, { + 'process.stdin.isTTY': false, + 'process.stdout.isTTY': false, + }) + + await openUrlPrompt(npm, 'https://www.npmjs.com', 'npm home', 'prompt') + t.equal(openerUrl, null, 'did not open') + t.same(openerOpts, null, 'did not open') +}) + +t.test('opens a url', async t => { + t.teardown(() => { + openerUrl = null + openerOpts = null + OUTPUT.length = 0 + npm._config.browser = true + }) + + npm._config.browser = 'browser' + await openUrlPrompt(npm, 'https://www.npmjs.com', 'npm home', 'prompt') + t.equal(openerUrl, 'https://www.npmjs.com', 'opened the given url') + t.same(openerOpts, { command: 'browser' }, 'passed command as null (the default)') + t.matchSnapshot(OUTPUT) +}) + +t.test('prints json output', async t => { + t.teardown(() => { + openerUrl = null + openerOpts = null + OUTPUT.length = 0 + npm._config.json = false + }) + + npm._config.json = true + await openUrlPrompt(npm, 'https://www.npmjs.com', 'npm home', 'prompt') + t.matchSnapshot(OUTPUT) +}) + +t.test('returns error for non-https url', async t => { + t.teardown(() => { + openerUrl = null + openerOpts = null + OUTPUT.length = 0 + }) + await t.rejects( + openUrlPrompt(npm, 'ftp://www.npmjs.com', 'npm home', 'prompt'), + /Invalid URL/, + 'got the correct error' + ) + t.equal(openerUrl, null, 'did not open') + t.same(openerOpts, null, 'did not open') + t.same(OUTPUT, [], 'printed no output') +}) + +t.test('does not open url if canceled', async t => { + t.teardown(() => { + openerUrl = null + openerOpts = null + OUTPUT.length = 0 + questionShouldResolve = true + }) + + questionShouldResolve = false + const emitter = new EventEmitter() + + const open = openUrlPrompt(npm, 'https://www.npmjs.com', 'npm home', 'prompt', emitter) + + emitter.emit('abort') + + await open + + t.equal(openerUrl, null, 'did not open') + t.same(openerOpts, null, 'did not open') +}) + +t.test('returns error when opener errors', async t => { + t.teardown(() => { + openerUrl = null + openerOpts = null + openerResult = null + OUTPUT.length = 0 + }) + + openerResult = new Error('Opener failed') + + await t.rejects( + openUrlPrompt(npm, 'https://www.npmjs.com', 'npm home', 'prompt'), + /Opener failed/, + 'got the correct error' + ) + t.equal(openerUrl, 'https://www.npmjs.com', 'did not open') +}) diff --git a/deps/npm/test/lib/utils/otplease.js b/deps/npm/test/lib/utils/otplease.js index 025084ab4f2c5b..79eaa798e60539 100644 --- a/deps/npm/test/lib/utils/otplease.js +++ b/deps/npm/test/lib/utils/otplease.js @@ -1,17 +1,25 @@ const t = require('tap') + +const { fake: mockNpm } = require('../../fixtures/mock-npm') const mockGlobals = require('../../fixtures/mock-globals') const readUserInfo = { otp: async () => '1234', } +const webAuth = async (opener) => { + opener() + return '1234' +} const otplease = t.mock('../../../lib/utils/otplease.js', { '../../../lib/utils/read-user-info.js': readUserInfo, + '../../../lib/utils/open-url-prompt.js': () => {}, + '../../../lib/utils/web-auth': webAuth, }) t.test('returns function results on success', async (t) => { const fn = () => 'test string' - const result = await otplease({}, fn) + const result = await otplease(null, {}, fn) t.equal('test string', result) }) @@ -26,7 +34,7 @@ t.test('returns function results on otp success', async (t) => { } throw Object.assign(new Error('nope'), { code: 'EOTP' }) } - const result = await otplease({}, fn) + const result = await otplease(null, {}, fn) t.equal('success', result) }) @@ -51,7 +59,31 @@ t.test('prompts for otp for EOTP', async (t) => { t.end() } - await otplease({ some: 'prop' }, fn) + await otplease(null, { some: 'prop' }, fn) +}) + +t.test('returns function results on webauth success', async (t) => { + mockGlobals(t, { + 'process.stdin': { isTTY: true }, + 'process.stdout': { isTTY: true }, + }) + + const npm = mockNpm({ config: { browser: 'firefox' } }) + const fn = ({ otp }) => { + if (otp) { + return 'success' + } + throw Object.assign(new Error('nope'), { + code: 'EOTP', + body: { + authUrl: 'https://www.example.com/auth', + doneUrl: 'https://www.example.com/done', + }, + }) + } + + const result = await otplease(npm, {}, fn) + t.equal('success', result) }) t.test('prompts for otp for 401', async (t) => { @@ -78,7 +110,7 @@ t.test('prompts for otp for 401', async (t) => { t.end() } - await otplease({ some: 'prop' }, fn) + await otplease(null, { some: 'prop' }, fn) }) t.test('does not prompt for non-otp errors', async (t) => { @@ -95,7 +127,11 @@ t.test('does not prompt for non-otp errors', async (t) => { throw new Error('nope') } - t.rejects(otplease({ some: 'prop' }, fn), { message: 'nope' }, 'rejects with the original error') + t.rejects( + otplease(null, { some: 'prop' }, fn), + { message: 'nope' }, + 'rejects with the original error' + ) }) t.test('does not prompt if stdin or stdout is not a tty', async (t) => { @@ -112,5 +148,9 @@ t.test('does not prompt if stdin or stdout is not a tty', async (t) => { throw Object.assign(new Error('nope'), { code: 'EOTP' }) } - t.rejects(otplease({ some: 'prop' }, fn), { message: 'nope' }, 'rejects with the original error') + t.rejects( + otplease(null, { some: 'prop' }, fn), + { message: 'nope' }, + 'rejects with the original error' + ) }) diff --git a/deps/npm/test/lib/utils/web-auth.js b/deps/npm/test/lib/utils/web-auth.js new file mode 100644 index 00000000000000..ee8a17ecbc09d4 --- /dev/null +++ b/deps/npm/test/lib/utils/web-auth.js @@ -0,0 +1,32 @@ +const t = require('tap') + +const webAuthCheckLogin = async () => { + return { token: 'otp-token' } +} + +const webauth = t.mock('../../../lib/utils/web-auth.js', { + 'npm-profile': { webAuthCheckLogin }, +}) + +const initialUrl = 'https://example.com/auth' +const doneUrl = 'https://example.com/done' +const opts = {} + +t.test('returns token on success', async (t) => { + const opener = async () => {} + const result = await webauth(opener, initialUrl, doneUrl, opts) + t.equal(result, 'otp-token') +}) + +t.test('closes opener when auth check finishes', async (t) => { + const opener = (_url, emitter) => { + return new Promise((resolve, reject) => { + // the only way to finish this promise is to emit aboter on the emitter + emitter.addListener('abort', () => { + resolve() + }) + }) + } + const result = await webauth(opener, initialUrl, doneUrl, opts) + t.equal(result, 'otp-token') +}) diff --git a/deps/undici/src/README.md b/deps/undici/src/README.md index a4cc09a0373858..323b2ca38bb58d 100644 --- a/deps/undici/src/README.md +++ b/deps/undici/src/README.md @@ -2,7 +2,7 @@ [![Node CI](https://github.com/nodejs/undici/actions/workflows/nodejs.yml/badge.svg)](https://github.com/nodejs/undici/actions/workflows/nodejs.yml) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](http://standardjs.com/) [![npm version](https://badge.fury.io/js/undici.svg)](https://badge.fury.io/js/undici) [![codecov](https://codecov.io/gh/nodejs/undici/branch/main/graph/badge.svg?token=yZL6LtXkOA)](https://codecov.io/gh/nodejs/undici) -A HTTP/1.1 client, written from scratch for Node.js. +An HTTP/1.1 client, written from scratch for Node.js. > Undici means eleven in Italian. 1.1 -> 11 -> Eleven -> Undici. It is also a Stranger Things reference. @@ -65,7 +65,15 @@ for await (const data of body) { console.log('trailers', trailers) ``` -Using [the body mixin from the Fetch Standard](https://fetch.spec.whatwg.org/#body-mixin). +## Body Mixins + +The `body` mixins are the most common way to format the request/response body. Mixins include: + +- [`.formData()`](https://fetch.spec.whatwg.org/#dom-body-formdata) +- [`.json()`](https://fetch.spec.whatwg.org/#dom-body-json) +- [`.text()`](https://fetch.spec.whatwg.org/#dom-body-text) + +Example usage: ```js import { request } from 'undici' @@ -83,6 +91,12 @@ console.log('data', await body.json()) console.log('trailers', trailers) ``` +_Note: Once a mixin has been called then the body cannot be reused, thus calling additional mixins on `.body`, e.g. `.body.json(); .body.text()` will result in an error `TypeError: unusable` being thrown and returned through the `Promise` rejection._ + +Should you need to access the `body` in plain-text after using a mixin, the best practice is to use the `.text()` mixin first and then manually parse the text to the desired format. + +For more information about their behavior, please reference the body mixin from the [Fetch Standard](https://fetch.spec.whatwg.org/#body-mixin). + ## Common API Methods This section documents our most commonly used API methods. Additional APIs are documented in their own files within the [docs](./docs/) folder and are accessible via the navigation list on the left side of the docs site. @@ -162,7 +176,7 @@ Implements [fetch](https://fetch.spec.whatwg.org/#fetch-method). * https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch * https://fetch.spec.whatwg.org/#fetch-method -Only supported on Node 16.5+. +Only supported on Node 16.8+. This is [experimental](https://nodejs.org/api/documentation.html#documentation_stability_index) and is not yet fully compliant with the Fetch Standard. We plan to ship breaking changes to this feature until it is out of experimental. @@ -171,15 +185,29 @@ Help us improve the test coverage by following instructions at [nodejs/undici/#9 Basic usage example: ```js - import {fetch} from 'undici'; +import { fetch } from 'undici'; - async function fetchJson() { - const res = await fetch('https://example.com') - const json = await res.json() - console.log(json); - } + +const res = await fetch('https://example.com') +const json = await res.json() +console.log(json); ``` +You can pass an optional dispatcher to `fetch` as: + +```js +import { fetch, Agent } from 'undici' + +const res = await fetch('https://example.com', { + // Mocks are also supported + dispatcher: new Agent({ + keepAliveTimeout: 10, + keepAliveMaxTimeout: 10 + }) +}) +const json = await res.json() +console.log(json) +``` #### `request.body` @@ -206,29 +234,25 @@ const data = { }, }; -(async () => { - await fetch("https://example.com", { body: data, method: 'POST' }); -})(); +await fetch("https://example.com", { body: data, method: 'POST' }); ``` #### `response.body` -Nodejs has two kinds of streams: [web streams](https://nodejs.org/dist/latest-v16.x/docs/api/webstreams.html) which follow the API of the WHATWG web standard found in browsers, and an older Node-specific [streams API](https://nodejs.org/api/stream.html). `response.body` returns a readable web stream. If you would prefer to work with a Node stream you can convert a web stream using `.fromWeb()`. +Nodejs has two kinds of streams: [web streams](https://nodejs.org/dist/latest-v16.x/docs/api/webstreams.html), which follow the API of the WHATWG web standard found in browsers, and an older Node-specific [streams API](https://nodejs.org/api/stream.html). `response.body` returns a readable web stream. If you would prefer to work with a Node stream you can convert a web stream using `.fromWeb()`. ```js - import {fetch} from 'undici'; - import {Readable} from 'node:stream'; +import { fetch } from 'undici'; +import { Readable } from 'node:stream'; - async function fetchStream() { - const response = await fetch('https://example.com') - const readableWebStream = response.body; - const readableNodeStream = Readable.fromWeb(readableWebStream); - } +const response = await fetch('https://example.com') +const readableWebStream = response.body; +const readableNodeStream = Readable.fromWeb(readableWebStream); ``` #### Specification Compliance -This section documents parts of the [Fetch Standard](https://fetch.spec.whatwg.org) which Undici does +This section documents parts of the [Fetch Standard](https://fetch.spec.whatwg.org) that Undici does not support or does not fully implement. ##### Garbage Collection @@ -239,7 +263,7 @@ The [Fetch Standard](https://fetch.spec.whatwg.org) allows users to skip consumi [garbage collection](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management#garbage_collection) to release connection resources. Undici does not do the same. Therefore, it is important to always either consume or cancel the response body. Garbage collection in Node is less aggressive and deterministic -(due to the lack of clear idle periods that browser have through the rendering refresh rate) +(due to the lack of clear idle periods that browsers have through the rendering refresh rate) which means that leaving the release of connection resources to the garbage collector can lead to excessive connection usage, reduced performance (due to less connection re-use), and even stalls or deadlocks when running out of connections. @@ -259,6 +283,22 @@ const headers = await fetch(url) .then(res => res.headers) ``` +However, if you want to get only headers, it might be better to use `HEAD` request method. Usage of this method will obviate the need for consumption or cancelling of the response body. See [MDN - HTTP - HTTP request methods - HEAD](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD) for more details. + +```js +const headers = await fetch(url, { method: 'HEAD' }) + .then(res => res.headers) +``` + +##### Forbidden and Safelisted Header Names + +* https://fetch.spec.whatwg.org/#cors-safelisted-response-header-name +* https://fetch.spec.whatwg.org/#forbidden-header-name +* https://fetch.spec.whatwg.org/#forbidden-response-header-name +* https://github.com/wintercg/fetch/issues/6 + +The [Fetch Standard](https://fetch.spec.whatwg.org) requires implementations to exclude certain headers from requests and responses. In browser environments, some headers are forbidden so the user agent remains in full control over them. In Undici, these constraints are removed to give more control to the user. + ### `undici.upgrade([url, options]): Promise` Upgrade to a different protocol. See [MDN - HTTP - Protocol upgrade mechanism](https://developer.mozilla.org/en-US/docs/Web/HTTP/Protocol_upgrade_mechanism) for more details. @@ -301,7 +341,7 @@ Returns: `Dispatcher` ## Specification Compliance -This section documents parts of the HTTP/1.1 specification which Undici does +This section documents parts of the HTTP/1.1 specification that Undici does not support or does not fully implement. ### Expect @@ -334,7 +374,7 @@ aborted. ### Manual Redirect -Since it is not possible to manually follow an HTTP redirect on server-side, +Since it is not possible to manually follow an HTTP redirect on the server-side, Undici returns the actual response instead of an `opaqueredirect` filtered one when invoked with a `manual` redirect. This aligns `fetch()` with the other implementations in Deno and Cloudflare Workers. @@ -346,6 +386,7 @@ Refs: https://fetch.spec.whatwg.org/#atomic-http-redirect-handling * [__Daniele Belardi__](https://github.com/dnlup), * [__Ethan Arrowood__](https://github.com/ethan-arrowood), * [__Matteo Collina__](https://github.com/mcollina), +* [__Matthew Aitken__](https://github.com/KhafraDev), * [__Robert Nagy__](https://github.com/ronag), * [__Szymon Marczak__](https://github.com/szmarczak), * [__Tomas Della Vedova__](https://github.com/delvedor), diff --git a/deps/undici/src/docs/api/Dispatcher.md b/deps/undici/src/docs/api/Dispatcher.md index d2c4228a8f965f..32ccb57993f3ec 100644 --- a/deps/undici/src/docs/api/Dispatcher.md +++ b/deps/undici/src/docs/api/Dispatcher.md @@ -193,19 +193,21 @@ Returns: `Boolean` - `false` if dispatcher is busy and further dispatch calls wo * **path** `string` * **method** `string` * **body** `string | Buffer | Uint8Array | stream.Readable | Iterable | AsyncIterable | null` (optional) - Default: `null` -* **headers** `UndiciHeaders` (optional) - Default: `null` +* **headers** `UndiciHeaders | string[]` (optional) - Default: `null`. +* **query** `Record | null` (optional) - Default: `null` - Query string params to be embedded in the request URL. Note that both keys and values of query are encoded using `encodeURIComponent`. If for some reason you need to send them unencoded, embed query params into path directly instead. * **idempotent** `boolean` (optional) - Default: `true` if `method` is `'HEAD'` or `'GET'` - Whether the requests can be safely retried or not. If `false` the request won't be sent until all preceding requests in the pipeline has completed. * **blocking** `boolean` (optional) - Default: `false` - Whether the response is expected to take a long time and would end up blocking the pipeline. When this is set to `true` further pipelining will be avoided on the same connection until headers have been received. * **upgrade** `string | null` (optional) - Default: `null` - Upgrade the request. Should be used to specify the kind of upgrade i.e. `'Websocket'`. * **bodyTimeout** `number | null` (optional) - The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Defaults to 30 seconds. * **headersTimeout** `number | null` (optional) - The amount of time the parser will wait to receive the complete HTTP headers. Defaults to 30 seconds. +* **throwOnError** `boolean` (optional) - Default: `false` - Whether Undici should throw an error upon receiving a 4xx or 5xx response from the server. #### Parameter: `DispatchHandler` * **onConnect** `(abort: () => void, context: object) => void` - Invoked before request is dispatched on socket. May be invoked multiple times when a request is retried when the request at the head of the pipeline fails. * **onError** `(error: Error) => void` - Invoked when an error has occurred. May not throw. * **onUpgrade** `(statusCode: number, headers: Buffer[], socket: Duplex) => void` (optional) - Invoked when request is upgraded. Required if `DispatchOptions.upgrade` is defined or `DispatchOptions.method === 'CONNECT'`. -* **onHeaders** `(statusCode: number, headers: Buffer[], resume: () => void) => boolean` - Invoked when statusCode and headers have been received. May be invoked multiple times due to 1xx informational headers. Not required for `upgrade` requests. +* **onHeaders** `(statusCode: number, headers: Buffer[], resume: () => void, statusText: string) => boolean` - Invoked when statusCode and headers have been received. May be invoked multiple times due to 1xx informational headers. Not required for `upgrade` requests. * **onData** `(chunk: Buffer) => boolean` - Invoked when response payload data is received. Not required for `upgrade` requests. * **onComplete** `(trailers: Buffer[]) => void` - Invoked when response payload and trailers have been received and the request has completed. Not required for `upgrade` requests. * **onBodySent** `(chunk: string | Buffer | Uint8Array) => void` - Invoked when a body chunk is sent to the server. Not required. For a stream or iterable body this will be invoked for every chunk. For other body types, it will be invoked once after the body is sent. @@ -459,14 +461,14 @@ Arguments: * **options** `RequestOptions` * **callback** `(error: Error | null, data: ResponseData) => void` (optional) -Returns: `void | Promise` - Only returns a `Promise` if no `callback` argument was passed +Returns: `void | Promise` - Only returns a `Promise` if no `callback` argument was passed. #### Parameter: `RequestOptions` Extends: [`DispatchOptions`](#parameter-dispatchoptions) -* **opaque** `unknown` (optional) - Default: `null` - Used for passing through context to `ResponseData` -* **signal** `AbortSignal | events.EventEmitter | null` (optional) - Default: `null` +* **opaque** `unknown` (optional) - Default: `null` - Used for passing through context to `ResponseData`. +* **signal** `AbortSignal | events.EventEmitter | null` (optional) - Default: `null`. * **onInfo** `({statusCode: number, headers: Record}) => void | null` (optional) - Default: `null` - Callback collecting all the info headers (HTTP 100-199) received. The `RequestOptions.method` property should not be value `'CONNECT'`. @@ -474,7 +476,7 @@ The `RequestOptions.method` property should not be value `'CONNECT'`. #### Parameter: `ResponseData` * **statusCode** `number` -* **headers** `http.IncomingHttpHeaders` +* **headers** `http.IncomingHttpHeaders` - Note that all header keys are lower-cased, e. g. `content-type`. * **body** `stream.Readable` which also implements [the body mixin from the Fetch Standard](https://fetch.spec.whatwg.org/#body-mixin). * **trailers** `Record` - This object starts out as empty and will be mutated to contain trailers after `body` has emitted `'end'`. @@ -495,6 +497,8 @@ The `RequestOptions.method` property should not be value `'CONNECT'`. - `dump({ limit: Integer })`, dump the response by reading up to `limit` bytes without killing the socket (optional) - Default: 262144. +Note that body will still be a `Readable` even if it is empty, but attempting to deserialize it with `json()` will result in an exception. Recommended way to ensure there is a body to deserialize is to check if status code is not 204, and `content-type` header starts with `application/json`. + #### Example 1 - Basic GET Request ```js diff --git a/deps/undici/src/docs/api/Errors.md b/deps/undici/src/docs/api/Errors.md index 406fd5c40fc9c9..6287ddcfd0becc 100644 --- a/deps/undici/src/docs/api/Errors.md +++ b/deps/undici/src/docs/api/Errors.md @@ -19,7 +19,6 @@ import { errors } from 'undici' | `RequestContentLengthMismatchError` | `UND_ERR_REQ_CONTENT_LENGTH_MISMATCH` | request body does not match content-length header | | `ResponseContentLengthMismatchError` | `UND_ERR_RES_CONTENT_LENGTH_MISMATCH` | response body does not match content-length header | | `InformationalError` | `UND_ERR_INFO` | expected error with reason | -| `TrailerMismatchError` | `UND_ERR_TRAILER_MISMATCH` | trailers did not match specification | ### `SocketError` diff --git a/deps/undici/src/docs/api/MockAgent.md b/deps/undici/src/docs/api/MockAgent.md index f94ae339f963d0..5c8eda24937fde 100644 --- a/deps/undici/src/docs/api/MockAgent.md +++ b/deps/undici/src/docs/api/MockAgent.md @@ -445,3 +445,79 @@ mockAgent.disableNetConnect() await request('http://example.com') // Will throw ``` + +### `MockAgent.pendingInterceptors()` + +This method returns any pending interceptors registered on a mock agent. A pending interceptor meets one of the following criteria: + +- Is registered with neither `.times()` nor `.persist()`, and has not been invoked; +- Is persistent (i.e., registered with `.persist()`) and has not been invoked; +- Is registered with `.times()` and has not been invoked `` of times. + +Returns: `PendingInterceptor[]` (where `PendingInterceptor` is a `MockDispatch` with an additional `origin: string`) + +#### Example - List all pending inteceptors + +```js +const agent = new MockAgent() +agent.disableNetConnect() + +agent + .get('https://example.com') + .intercept({ method: 'GET', path: '/' }) + .reply(200) + +const pendingInterceptors = agent.pendingInterceptors() +// Returns [ +// { +// timesInvoked: 0, +// times: 1, +// persist: false, +// consumed: false, +// pending: true, +// path: '/', +// method: 'GET', +// body: undefined, +// headers: undefined, +// data: { +// error: null, +// statusCode: 200, +// data: '', +// headers: {}, +// trailers: {} +// }, +// origin: 'https://example.com' +// } +// ] +``` + +### `MockAgent.assertNoPendingInterceptors([options])` + +This method throws if the mock agent has any pending interceptors. A pending interceptor meets one of the following criteria: + +- Is registered with neither `.times()` nor `.persist()`, and has not been invoked; +- Is persistent (i.e., registered with `.persist()`) and has not been invoked; +- Is registered with `.times()` and has not been invoked `` of times. + +#### Example - Check that there are no pending interceptors + +```js +const agent = new MockAgent() +agent.disableNetConnect() + +agent + .get('https://example.com') + .intercept({ method: 'GET', path: '/' }) + .reply(200) + +agent.assertNoPendingInterceptors() +// Throws an UndiciError with the following message: +// +// 1 interceptor is pending: +// +// ┌─────────┬────────┬───────────────────────┬──────┬─────────────┬────────────┬─────────────┬───────────┐ +// │ (index) │ Method │ Origin │ Path │ Status code │ Persistent │ Invocations │ Remaining │ +// ├─────────┼────────┼───────────────────────┼──────┼─────────────┼────────────┼─────────────┼───────────┤ +// │ 0 │ 'GET' │ 'https://example.com' │ '/' │ 200 │ '❌' │ 0 │ 1 │ +// └─────────┴────────┴───────────────────────┴──────┴─────────────┴────────────┴─────────────┴───────────┘ +``` diff --git a/deps/undici/src/docs/api/MockPool.md b/deps/undici/src/docs/api/MockPool.md index 29667f3177b51e..87fde1ddd995e5 100644 --- a/deps/undici/src/docs/api/MockPool.md +++ b/deps/undici/src/docs/api/MockPool.md @@ -57,6 +57,7 @@ Returns: `MockInterceptor` corresponding to the input options. * **method** `string | RegExp | (method: string) => boolean` - a matcher for the HTTP request method. * **body** `string | RegExp | (body: string) => boolean` - (optional) - a matcher for the HTTP request body. * **headers** `Record boolean`> - (optional) - a matcher for the HTTP request headers. To be intercepted, a request must match all defined headers. Extra headers not defined here may (or may not) be included in the request and do not affect the interception in any way. +* **query** `Record | null` - (optional) - a matcher for the HTTP request query string params. ### Return: `MockInterceptor` diff --git a/deps/undici/src/docs/best-practices/mocking-request.md b/deps/undici/src/docs/best-practices/mocking-request.md index 0182d249b8e0eb..b98a450a32e29b 100644 --- a/deps/undici/src/docs/best-practices/mocking-request.md +++ b/deps/undici/src/docs/best-practices/mocking-request.md @@ -5,17 +5,20 @@ Undici have its own mocking [utility](../api/MockAgent.md). It allow us to inter Example: ```js -// index.mjs +// bank.mjs import { request } from 'undici' -export async function bankTransfer(recepient, ammount) { - const { body } = await request('http://localhost:3000/bank-transfer', +export async function bankTransfer(recepient, amount) { + const { body } = await request('http://localhost:3000/bank-transfer', { method: 'POST', headers: { 'X-TOKEN-SECRET': 'SuperSecretToken', }, - body: JSON.stringify({ recepient }) + body: JSON.stringify({ + recepient, + amount + }) } ) return await body.json() @@ -28,7 +31,7 @@ And this is what the test file looks like: // index.test.mjs import { strict as assert } from 'assert' import { MockAgent, setGlobalDispatcher, } from 'undici' -import { bankTransfer } from './undici.mjs' +import { bankTransfer } from './bank.mjs' const mockAgent = new MockAgent(); @@ -46,7 +49,7 @@ mockPool.intercept({ }, body: JSON.stringify({ recepient: '1234567890', - ammount: '100' + amount: '100' }) }).reply(200, { message: 'transaction processed' @@ -94,8 +97,40 @@ mockPool.intercept({ const badRequest = await bankTransfer('1234567890', '100') // Will throw an error -// MockNotMatchedError: Mock dispatch not matched for path '/bank-transfer': +// MockNotMatchedError: Mock dispatch not matched for path '/bank-transfer': // subsequent request to origin http://localhost:3000 was not allowed (net.connect disabled) ``` +## Reply with data based on request +If the mocked response needs to be dynamically derived from the request parameters, you can provide a function instead of an object to `reply` + +```js +mockPool.intercept({ + path: '/bank-transfer', + method: 'POST', + headers: { + 'X-TOKEN-SECRET': 'SuperSecretToken', + }, + body: JSON.stringify({ + recepient: '1234567890', + amount: '100' + }) +}).reply(200, (opts) => { + // do something with opts + + return { message: 'transaction processed' } +}) +``` + +in this case opts will be + +``` +{ + method: 'POST', + headers: { 'X-TOKEN-SECRET': 'SuperSecretToken' }, + body: '{"recepient":"1234567890","amount":"100"}', + origin: 'http://localhost:3000', + path: '/bank-transfer' +} +``` diff --git a/deps/undici/src/docs/best-practices/proxy.md b/deps/undici/src/docs/best-practices/proxy.md index 256e8f9c147cdf..bf102955cc84d1 100644 --- a/deps/undici/src/docs/best-practices/proxy.md +++ b/deps/undici/src/docs/best-practices/proxy.md @@ -20,10 +20,10 @@ import { createServer } from 'http' import proxy from 'proxy' const server = await buildServer() -const proxy = await buildProxy() +const proxyServer = await buildProxy() const serverUrl = `http://localhost:${server.address().port}` -const proxyUrl = `http://localhost:${proxy.address().port}` +const proxyUrl = `http://localhost:${proxyServer.address().port}` server.on('request', (req, res) => { console.log(req.url) // '/hello?foo=bar' @@ -47,7 +47,7 @@ console.log(response.statusCode) // 200 console.log(JSON.parse(data)) // { hello: 'world' } server.close() -proxy.close() +proxyServer.close() client.close() function buildServer () { @@ -73,12 +73,12 @@ import { createServer } from 'http' import proxy from 'proxy' const server = await buildServer() -const proxy = await buildProxy() +const proxyServer = await buildProxy() const serverUrl = `http://localhost:${server.address().port}` -const proxyUrl = `http://localhost:${proxy.address().port}` +const proxyUrl = `http://localhost:${proxyServer.address().port}` -proxy.authenticate = function (req, fn) { +proxyServer.authenticate = function (req, fn) { fn(null, req.headers['proxy-authorization'] === `Basic ${Buffer.from('user:pass').toString('base64')}`) } @@ -107,7 +107,7 @@ console.log(response.statusCode) // 200 console.log(JSON.parse(data)) // { hello: 'world' } server.close() -proxy.close() +proxyServer.close() client.close() function buildServer () { @@ -124,3 +124,4 @@ function buildProxy () { }) } ``` + diff --git a/deps/undici/src/index-fetch.js b/deps/undici/src/index-fetch.js new file mode 100644 index 00000000000000..2ee12fc1ef77e6 --- /dev/null +++ b/deps/undici/src/index-fetch.js @@ -0,0 +1,13 @@ +'use strict' + +const { getGlobalDispatcher } = require('./lib/global') +const fetchImpl = require('./lib/fetch') + +module.exports.fetch = async function fetch (resource) { + const dispatcher = (arguments[1] && arguments[1].dispatcher) || getGlobalDispatcher() + return fetchImpl.apply(dispatcher, arguments) +} +module.exports.FormData = require('./lib/fetch/formdata').FormData +module.exports.Headers = require('./lib/fetch/headers').Headers +module.exports.Response = require('./lib/fetch/response').Response +module.exports.Request = require('./lib/fetch/request').Request diff --git a/deps/undici/src/index.d.ts b/deps/undici/src/index.d.ts index e658fd6231f46c..e4aa8f62cdbc42 100644 --- a/deps/undici/src/index.d.ts +++ b/deps/undici/src/index.d.ts @@ -16,6 +16,8 @@ import { request, pipeline, stream, connect, upgrade } from './types/api' export * from './types/fetch' export * from './types/file' export * from './types/formdata' +export * from './types/diagnostics-channel' +export { Interceptable } from './types/mock-interceptor' export { Dispatcher, BalancedPool, Pool, Client, buildConnector, errors, Agent, request, stream, pipeline, connect, upgrade, setGlobalDispatcher, getGlobalDispatcher, MockClient, MockPool, MockAgent, mockErrors, ProxyAgent } export default Undici diff --git a/deps/undici/src/index.js b/deps/undici/src/index.js index 888eb6a5a4f3d3..b2144c844ba7b2 100644 --- a/deps/undici/src/index.js +++ b/deps/undici/src/index.js @@ -15,6 +15,7 @@ const MockAgent = require('./lib/mock/mock-agent') const MockPool = require('./lib/mock/mock-pool') const mockErrors = require('./lib/mock/mock-errors') const ProxyAgent = require('./lib/proxy-agent') +const { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global') const nodeVersion = process.versions.node.split('.') const nodeMajor = Number(nodeVersion[0]) @@ -32,19 +33,6 @@ module.exports.ProxyAgent = ProxyAgent module.exports.buildConnector = buildConnector module.exports.errors = errors -let globalDispatcher = new Agent() - -function setGlobalDispatcher (agent) { - if (!agent || typeof agent.dispatch !== 'function') { - throw new InvalidArgumentError('Argument agent must implement Agent') - } - globalDispatcher = agent -} - -function getGlobalDispatcher () { - return globalDispatcher -} - function makeDispatcher (fn) { return (url, opts, handler) => { if (typeof opts === 'function') { @@ -92,13 +80,13 @@ function makeDispatcher (fn) { module.exports.setGlobalDispatcher = setGlobalDispatcher module.exports.getGlobalDispatcher = getGlobalDispatcher -if (nodeMajor > 16 || (nodeMajor === 16 && nodeMinor >= 5)) { +if (nodeMajor > 16 || (nodeMajor === 16 && nodeMinor >= 8)) { let fetchImpl = null module.exports.fetch = async function fetch (resource) { if (!fetchImpl) { fetchImpl = require('./lib/fetch') } - const dispatcher = getGlobalDispatcher() + const dispatcher = (arguments[1] && arguments[1].dispatcher) || getGlobalDispatcher() return fetchImpl.apply(dispatcher, arguments) } module.exports.Headers = require('./lib/fetch/headers').Headers diff --git a/deps/undici/src/lib/api/api-request.js b/deps/undici/src/lib/api/api-request.js index 2d5bcf54c6d802..b4674878d2e9d7 100644 --- a/deps/undici/src/lib/api/api-request.js +++ b/deps/undici/src/lib/api/api-request.js @@ -3,7 +3,8 @@ const Readable = require('./readable') const { InvalidArgumentError, - RequestAbortedError + RequestAbortedError, + ResponseStatusCodeError } = require('../core/errors') const util = require('../core/util') const { AsyncResource } = require('async_hooks') @@ -15,7 +16,7 @@ class RequestHandler extends AsyncResource { throw new InvalidArgumentError('invalid opts') } - const { signal, method, opaque, body, onInfo, responseHeaders } = opts + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts try { if (typeof callback !== 'function') { @@ -51,6 +52,7 @@ class RequestHandler extends AsyncResource { this.trailers = {} this.context = null this.onInfo = onInfo || null + this.throwOnError = throwOnError if (util.isStream(body)) { body.on('error', (err) => { @@ -70,7 +72,7 @@ class RequestHandler extends AsyncResource { this.context = context } - onHeaders (statusCode, rawHeaders, resume) { + onHeaders (statusCode, rawHeaders, resume, statusMessage) { const { callback, opaque, abort, context } = this if (statusCode < 200) { @@ -82,20 +84,30 @@ class RequestHandler extends AsyncResource { } const parsedHeaders = util.parseHeaders(rawHeaders) - const body = new Readable(resume, abort, parsedHeaders['content-type']) + const contentType = parsedHeaders['content-type'] + const body = new Readable(resume, abort, contentType) this.callback = null this.res = body const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - trailers: this.trailers, - opaque, - body, - context - }) + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope(getResolveErrorBodyCallback, null, + { callback, body, contentType, statusCode, statusMessage, headers } + ) + return + } + + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + trailers: this.trailers, + opaque, + body, + context + }) + } } onData (chunk) { @@ -141,6 +153,33 @@ class RequestHandler extends AsyncResource { } } +async function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) { + if (statusCode === 204 || !contentType) { + body.dump() + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)) + return + } + + try { + if (contentType.startsWith('application/json')) { + const payload = await body.json() + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)) + return + } + + if (contentType.startsWith('text/')) { + const payload = await body.text() + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)) + return + } + } catch (err) { + // Process in a fallback if error + } + + body.dump() + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)) +} + function request (opts, callback) { if (callback === undefined) { return new Promise((resolve, reject) => { diff --git a/deps/undici/src/lib/balanced-pool.js b/deps/undici/src/lib/balanced-pool.js index bb5788a8c1aada..47468ec0460689 100644 --- a/deps/undici/src/lib/balanced-pool.js +++ b/deps/undici/src/lib/balanced-pool.js @@ -18,6 +18,17 @@ const { parseOrigin } = require('./core/util') const kFactory = Symbol('factory') const kOptions = Symbol('options') +const kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor') +const kCurrentWeight = Symbol('kCurrentWeight') +const kIndex = Symbol('kIndex') +const kWeight = Symbol('kWeight') +const kMaxWeightPerServer = Symbol('kMaxWeightPerServer') +const kErrorPenalty = Symbol('kErrorPenalty') + +function getGreatestCommonDivisor (a, b) { + if (b === 0) return a + return getGreatestCommonDivisor(b, a % b) +} function defaultFactory (origin, opts) { return new Pool(origin, opts) @@ -28,6 +39,11 @@ class BalancedPool extends PoolBase { super() this[kOptions] = opts + this[kIndex] = -1 + this[kCurrentWeight] = 0 + + this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100 + this[kErrorPenalty] = this[kOptions].errorPenalty || 15 if (!Array.isArray(upstreams)) { upstreams = [upstreams] @@ -42,6 +58,7 @@ class BalancedPool extends PoolBase { for (const upstream of upstreams) { this.addUpstream(upstream) } + this._updateBalancedPoolStats() } addUpstream (upstream) { @@ -54,12 +71,40 @@ class BalancedPool extends PoolBase { ))) { return this } + const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])) + + this[kAddClient](pool) + pool.on('connect', () => { + pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]) + }) + + pool.on('connectionError', () => { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) + this._updateBalancedPoolStats() + }) + + pool.on('disconnect', (...args) => { + const err = args[2] + if (err && err.code === 'UND_ERR_SOCKET') { + // decrease the weight of the pool. + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) + this._updateBalancedPoolStats() + } + }) + + for (const client of this[kClients]) { + client[kWeight] = this[kMaxWeightPerServer] + } - this[kAddClient](this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))) + this._updateBalancedPoolStats() return this } + _updateBalancedPoolStats () { + this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0) + } + removeUpstream (upstream) { const upstreamOrigin = parseOrigin(upstream).origin @@ -100,10 +145,42 @@ class BalancedPool extends PoolBase { return } - this[kClients].splice(this[kClients].indexOf(dispatcher), 1) - this[kClients].push(dispatcher) + const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true) + + if (allClientsBusy) { + return + } + + let counter = 0 + + let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain]) + + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length + const pool = this[kClients][this[kIndex]] + + // find pool index with the largest weight + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex] + } + + // decrease the current weight every `this[kClients].length`. + if (this[kIndex] === 0) { + // Set the current weight to the next lower weight. + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor] + + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer] + } + } + if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) { + return pool + } + } - return dispatcher + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight] + this[kIndex] = maxWeightIndex + return this[kClients][maxWeightIndex] } } diff --git a/deps/undici/src/lib/client.js b/deps/undici/src/lib/client.js index d3d4cfc705d635..fb0b985faab585 100644 --- a/deps/undici/src/lib/client.js +++ b/deps/undici/src/lib/client.js @@ -11,7 +11,6 @@ const RedirectHandler = require('./handler/redirect') const { RequestContentLengthMismatchError, ResponseContentLengthMismatchError, - TrailerMismatchError, InvalidArgumentError, RequestAbortedError, HeadersTimeoutError, @@ -425,7 +424,6 @@ class Parser { this.bytesRead = 0 - this.trailer = '' this.keepAlive = '' this.contentLength = '' } @@ -615,8 +613,6 @@ class Parser { const key = this.headers[len - 2] if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') { this.keepAlive += buf.toString() - } else if (key.length === 7 && key.toString().toLowerCase() === 'trailer') { - this.trailer += buf.toString() } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') { this.contentLength += buf.toString() } @@ -724,7 +720,7 @@ class Parser { } } - if (request.method === 'CONNECT' && statusCode >= 200 && statusCode < 300) { + if (request.method === 'CONNECT') { assert(client[kRunning] === 1) this.upgrade = true return 2 @@ -819,7 +815,7 @@ class Parser { } onMessageComplete () { - const { client, socket, statusCode, upgrade, trailer, headers, contentLength, bytesRead, shouldKeepAlive } = this + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this if (socket.destroyed && (!statusCode || shouldKeepAlive)) { return -1 @@ -838,7 +834,6 @@ class Parser { this.statusText = '' this.bytesRead = 0 this.contentLength = '' - this.trailer = '' this.keepAlive = '' assert(this.headers.length % 2 === 0) @@ -849,23 +844,6 @@ class Parser { return } - const trailers = trailer ? trailer.split(/,\s*/) : [] - for (let i = 0; i < trailers.length; i++) { - const trailer = trailers[i] - let found = false - for (let n = 0; n < headers.length; n += 2) { - const key = headers[n] - if (key.length === trailer.length && key.toString().toLowerCase() === trailer.toLowerCase()) { - found = true - break - } - } - if (!found) { - util.destroy(socket, new TrailerMismatchError()) - return -1 - } - } - /* istanbul ignore next: should be handled by llhttp? */ if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) { util.destroy(socket, new ResponseContentLengthMismatchError()) @@ -895,6 +873,11 @@ class Parser { // have been queued since then. util.destroy(socket, new InformationalError('reset')) return constants.ERROR.PAUSED + } else if (client[kPipelining] === 1) { + // We must wait a full event loop cycle to reuse this socket to make sure + // that non-spec compliant servers are not closing the connection even if they + // said they won't. + setImmediate(resume, client) } else { resume(client) } @@ -906,10 +889,8 @@ function onParserTimeout (parser) { /* istanbul ignore else */ if (timeoutType === TIMEOUT_HEADERS) { - if (!socket[kWriting]) { - assert(!parser.paused, 'cannot be paused while waiting for headers') - util.destroy(socket, new HeadersTimeoutError()) - } + assert(!parser.paused, 'cannot be paused while waiting for headers') + util.destroy(socket, new HeadersTimeoutError()) } else if (timeoutType === TIMEOUT_BODY) { if (!parser.paused) { util.destroy(socket, new BodyTimeoutError()) diff --git a/deps/undici/src/lib/core/connect.js b/deps/undici/src/lib/core/connect.js index 33a07e6d02dc73..57667a1314afa0 100644 --- a/deps/undici/src/lib/core/connect.js +++ b/deps/undici/src/lib/core/connect.js @@ -21,7 +21,7 @@ function buildConnector ({ maxCachedSessions, socketPath, timeout, ...opts }) { timeout = timeout == null ? 10e3 : timeout maxCachedSessions = maxCachedSessions == null ? 100 : maxCachedSessions - return function connect ({ hostname, host, protocol, port, servername }, callback) { + return function connect ({ hostname, host, protocol, port, servername, httpSocket }, callback) { let socket if (protocol === 'https:') { if (!tls) { @@ -39,6 +39,7 @@ function buildConnector ({ maxCachedSessions, socketPath, timeout, ...opts }) { ...options, servername, session, + socket: httpSocket, // upgrade socket connection port: port || 443, host: hostname }) @@ -65,6 +66,7 @@ function buildConnector ({ maxCachedSessions, socketPath, timeout, ...opts }) { } }) } else { + assert(!httpSocket, 'httpSocket can only be sent on TLS update') socket = net.connect({ highWaterMark: 64 * 1024, // Same as nodejs fs streams. ...options, diff --git a/deps/undici/src/lib/core/errors.js b/deps/undici/src/lib/core/errors.js index a36107c5a9811e..1f87dbf52dcb0f 100644 --- a/deps/undici/src/lib/core/errors.js +++ b/deps/undici/src/lib/core/errors.js @@ -1,13 +1,5 @@ 'use strict' -class AbortError extends Error { - constructor () { - super('The operation was aborted') - this.code = 'ABORT_ERR' - this.name = 'AbortError' - } -} - class UndiciError extends Error { constructor (message) { super(message) @@ -56,6 +48,20 @@ class BodyTimeoutError extends UndiciError { } } +class ResponseStatusCodeError extends UndiciError { + constructor (message, statusCode, headers, body) { + super(message) + Error.captureStackTrace(this, ResponseStatusCodeError) + this.name = 'ResponseStatusCodeError' + this.message = message || 'Response Status Code Error' + this.code = 'UND_ERR_RESPONSE_STATUS_CODE' + this.body = body + this.status = statusCode + this.statusCode = statusCode + this.headers = headers + } +} + class InvalidArgumentError extends UndiciError { constructor (message) { super(message) @@ -116,16 +122,6 @@ class ResponseContentLengthMismatchError extends UndiciError { } } -class TrailerMismatchError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, TrailerMismatchError) - this.name = 'TrailerMismatchError' - this.message = message || 'Trailers does not match trailer header' - this.code = 'UND_ERR_TRAILER_MISMATCH' - } -} - class ClientDestroyedError extends UndiciError { constructor (message) { super(message) @@ -188,7 +184,6 @@ class HTTPParserError extends Error { } module.exports = { - AbortError, HTTPParserError, UndiciError, HeadersTimeoutError, @@ -196,7 +191,7 @@ module.exports = { BodyTimeoutError, RequestContentLengthMismatchError, ConnectTimeoutError, - TrailerMismatchError, + ResponseStatusCodeError, InvalidArgumentError, InvalidReturnValueError, RequestAbortedError, diff --git a/deps/undici/src/lib/core/request.js b/deps/undici/src/lib/core/request.js index 0d98987d9d1465..4dc2fcca0db62c 100644 --- a/deps/undici/src/lib/core/request.js +++ b/deps/undici/src/lib/core/request.js @@ -4,13 +4,40 @@ const { InvalidArgumentError, NotSupportedError } = require('./errors') -const util = require('./util') const assert = require('assert') +const util = require('./util') + +// tokenRegExp and headerCharRegex have been lifted from +// https://github.com/nodejs/node/blob/main/lib/_http_common.js + +/** + * Verifies that the given val is a valid HTTP token + * per the rules defined in RFC 7230 + * See https://tools.ietf.org/html/rfc7230#section-3.2.6 + */ +const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/ + +/** + * Matches if val contains an invalid field-vchar + * field-value = *( field-content / obs-fold ) + * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] + * field-vchar = VCHAR / obs-text + */ +const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/ + +// Verifies that a given path is valid does not contain control chars \x00 to \x20 +const invalidPathRegex = /[^\u0021-\u00ff]/ const kHandler = Symbol('handler') const channels = {} +let extractBody + +const nodeVersion = process.versions.node.split('.') +const nodeMajor = Number(nodeVersion[0]) +const nodeMinor = Number(nodeVersion[1]) + try { const diagnosticsChannel = require('diagnostics_channel') channels.create = diagnosticsChannel.channel('undici:request:create') @@ -32,20 +59,30 @@ class Request { method, body, headers, + query, idempotent, blocking, upgrade, headersTimeout, - bodyTimeout + bodyTimeout, + throwOnError }, handler) { if (typeof path !== 'string') { throw new InvalidArgumentError('path must be a string') - } else if (path[0] !== '/' && !(path.startsWith('http://') || path.startsWith('https://'))) { + } else if ( + path[0] !== '/' && + !(path.startsWith('http://') || path.startsWith('https://')) && + method !== 'CONNECT' + ) { throw new InvalidArgumentError('path must be an absolute URL or start with a slash') + } else if (invalidPathRegex.exec(path) !== null) { + throw new InvalidArgumentError('invalid request path') } if (typeof method !== 'string') { throw new InvalidArgumentError('method must be a string') + } else if (tokenRegExp.exec(method) === null) { + throw new InvalidArgumentError('invalid request method') } if (upgrade && typeof upgrade !== 'string') { @@ -64,22 +101,23 @@ class Request { this.bodyTimeout = bodyTimeout + this.throwOnError = throwOnError === true + this.method = method if (body == null) { this.body = null } else if (util.isStream(body)) { this.body = body - } else if (body instanceof DataView) { - // TODO: Why is DataView special? - this.body = body.buffer.byteLength ? Buffer.from(body.buffer) : null - } else if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) { - this.body = body.byteLength ? Buffer.from(body) : null } else if (util.isBuffer(body)) { this.body = body.byteLength ? body : null + } else if (ArrayBuffer.isView(body)) { + this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null + } else if (body instanceof ArrayBuffer) { + this.body = body.byteLength ? Buffer.from(body) : null } else if (typeof body === 'string') { this.body = body.length ? Buffer.from(body) : null - } else if (util.isIterable(body) || util.isBlobLike(body)) { + } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { this.body = body } else { throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable') @@ -91,7 +129,7 @@ class Request { this.upgrade = upgrade || null - this.path = path + this.path = query ? util.buildURL(path, query) : path this.origin = origin @@ -126,7 +164,22 @@ class Request { throw new InvalidArgumentError('headers must be an object or an array') } - if (util.isBlobLike(body) && this.contentType == null && body.type) { + if (util.isFormDataLike(this.body)) { + if (nodeMajor < 16 || (nodeMajor === 16 && nodeMinor < 8)) { + throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.') + } + + if (!extractBody) { + extractBody = require('../fetch/body.js').extractBody + } + + const [bodyStream, contentType] = extractBody(body) + if (this.contentType == null) { + this.contentType = contentType + this.headers += `content-type: ${contentType}\r\n` + } + this.body = bodyStream.stream + } else if (util.isBlobLike(body) && this.contentType == null && body.type) { this.contentType = body.type this.headers += `content-type: ${body.type}\r\n` } @@ -273,6 +326,10 @@ function processHeader (request, key, val) { key.toLowerCase() === 'expect' ) { throw new NotSupportedError('expect header not supported') + } else if (tokenRegExp.exec(key) === null) { + throw new InvalidArgumentError('invalid header key') + } else if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`) } else { request.headers += `${key}: ${val}\r\n` } diff --git a/deps/undici/src/lib/core/util.js b/deps/undici/src/lib/core/util.js index 9d028cadc11e8c..635ef2e15f2a8d 100644 --- a/deps/undici/src/lib/core/util.js +++ b/deps/undici/src/lib/core/util.js @@ -26,6 +26,51 @@ function isBlobLike (object) { ) } +function isObject (val) { + return val !== null && typeof val === 'object' +} + +// this escapes all non-uri friendly characters +function encode (val) { + return encodeURIComponent(val) +} + +// based on https://github.com/axios/axios/blob/63e559fa609c40a0a460ae5d5a18c3470ffc6c9e/lib/helpers/buildURL.js (MIT license) +function buildURL (url, queryParams) { + if (url.includes('?') || url.includes('#')) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".') + } + if (!isObject(queryParams)) { + throw new Error('Query params must be an object') + } + + const parts = [] + for (let [key, val] of Object.entries(queryParams)) { + if (val === null || typeof val === 'undefined') { + continue + } + + if (!Array.isArray(val)) { + val = [val] + } + + for (const v of val) { + if (isObject(v)) { + throw new Error('Passing object as a query param is not supported, please serialize to string up-front') + } + parts.push(encode(key) + '=' + encode(v)) + } + } + + const serializedParams = parts.join('&') + + if (serializedParams) { + url += '?' + serializedParams + } + + return url +} + function parseURL (url) { if (typeof url === 'string') { url = new URL(url) @@ -324,6 +369,10 @@ function ReadableStreamFrom (iterable) { ) } +function isFormDataLike (chunk) { + return chunk && chunk.constructor && chunk.constructor.name === 'FormData' +} + const kEnumerableProperty = Object.create(null) kEnumerableProperty.enumerable = true @@ -352,5 +401,7 @@ module.exports = { ReadableStreamFrom, isBuffer, validateHandler, - getSocketInfo + getSocketInfo, + isFormDataLike, + buildURL } diff --git a/deps/undici/src/lib/fetch/body.js b/deps/undici/src/lib/fetch/body.js index 7da6eb988b0580..2a9f1c83d888d2 100644 --- a/deps/undici/src/lib/fetch/body.js +++ b/deps/undici/src/lib/fetch/body.js @@ -4,22 +4,18 @@ const util = require('../core/util') const { ReadableStreamFrom, toUSVString, isBlobLike } = require('./util') const { FormData } = require('./formdata') const { kState } = require('./symbols') +const { webidl } = require('./webidl') const { Blob } = require('buffer') const { kBodyUsed } = require('../core/symbols') const assert = require('assert') const { NotSupportedError } = require('../core/errors') const { isErrored } = require('../core/util') -const { isUint8Array } = require('util/types') +const { isUint8Array, isArrayBuffer } = require('util/types') let ReadableStream async function * blobGen (blob) { - if (blob.stream) { - yield * blob.stream() - } else { - // istanbul ignore next: node < 16.7 - yield await blob.arrayBuffer() - } + yield * blob.stream() } // https://fetch.spec.whatwg.org/#concept-bodyinit-extract @@ -61,7 +57,7 @@ function extractBody (object, keepalive = false) { // Set Content-Type to `application/x-www-form-urlencoded;charset=UTF-8`. contentType = 'application/x-www-form-urlencoded;charset=UTF-8' - } else if (object instanceof ArrayBuffer || ArrayBuffer.isView(object)) { + } else if (isArrayBuffer(object) || ArrayBuffer.isView(object)) { // BufferSource if (object instanceof DataView) { @@ -71,7 +67,7 @@ function extractBody (object, keepalive = false) { // Set source to a copy of the bytes held by object. source = new Uint8Array(object) - } else if (object instanceof FormData) { + } else if (util.isFormDataLike(object)) { const boundary = '----formdata-undici-' + Math.random() const prefix = `--${boundary}\r\nContent-Disposition: form-data` @@ -262,100 +258,204 @@ function cloneBody (body) { } } -const methods = { - async blob () { - const chunks = [] +async function * consumeBody (body) { + if (body) { + if (isUint8Array(body)) { + yield body + } else { + const stream = body.stream - if (this[kState].body) { - if (isUint8Array(this[kState].body)) { - chunks.push(this[kState].body) - } else { - const stream = this[kState].body.stream + if (util.isDisturbed(stream)) { + throw new TypeError('disturbed') + } + + if (stream.locked) { + throw new TypeError('locked') + } + + // Compat. + stream[kBodyUsed] = true + + yield * stream + } + } +} + +function bodyMixinMethods (instance) { + const methods = { + async blob () { + if (!(this instanceof instance)) { + throw new TypeError('Illegal invocation') + } + + const chunks = [] - if (util.isDisturbed(stream)) { - throw new TypeError('disturbed') + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError('Expected Uint8Array chunk') } - if (stream.locked) { - throw new TypeError('locked') + // Assemble one final large blob with Uint8Array's can exhaust memory. + // That's why we create create multiple blob's and using references + chunks.push(new Blob([chunk])) + } + + return new Blob(chunks, { type: this.headers.get('Content-Type') || '' }) + }, + + async arrayBuffer () { + if (!(this instanceof instance)) { + throw new TypeError('Illegal invocation') + } + + const contentLength = this.headers.get('content-length') + const encoded = this.headers.has('content-encoding') + + // if we have content length and no encoding, then we can + // pre allocate the buffer and just read the data into it + if (!encoded && contentLength) { + const buffer = new Uint8Array(contentLength) + let offset = 0 + + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError('Expected Uint8Array chunk') + } + + buffer.set(chunk, offset) + offset += chunk.length } - // Compat. - stream[kBodyUsed] = true + return buffer.buffer + } + + // if we don't have content length, then we have to allocate 2x the + // size of the body, once for consumed data, and once for the final buffer - for await (const chunk of stream) { - chunks.push(chunk) + // This could be optimized by using growable ArrayBuffer, but it's not + // implemented yet. https://github.com/tc39/proposal-resizablearraybuffer + + const chunks = [] + let size = 0 + + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError('Expected Uint8Array chunk') } + + chunks.push(chunk) + size += chunk.byteLength } - } - return new Blob(chunks, { type: this.headers.get('Content-Type') || '' }) - }, + const buffer = new Uint8Array(size) + let offset = 0 - async arrayBuffer () { - const blob = await this.blob() - return await blob.arrayBuffer() - }, + for (const chunk of chunks) { + buffer.set(chunk, offset) + offset += chunk.byteLength + } - async text () { - const blob = await this.blob() - return toUSVString(await blob.text()) - }, + return buffer.buffer + }, - async json () { - return JSON.parse(await this.text()) - }, + async text () { + if (!(this instanceof instance)) { + throw new TypeError('Illegal invocation') + } - async formData () { - const contentType = this.headers.get('Content-Type') - - // If mimeType’s essence is "multipart/form-data", then: - if (/multipart\/form-data/.test(contentType)) { - throw new NotSupportedError('multipart/form-data not supported') - } else if (/application\/x-www-form-urlencoded/.test(contentType)) { - // Otherwise, if mimeType’s essence is "application/x-www-form-urlencoded", then: - - // 1. Let entries be the result of parsing bytes. - let entries - try { - entries = new URLSearchParams(await this.text()) - } catch (err) { - // istanbul ignore next: Unclear when new URLSearchParams can fail on a string. - // 2. If entries is failure, then throw a TypeError. - throw Object.assign(new TypeError(), { cause: err }) + let result = '' + const textDecoder = new TextDecoder() + + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError('Expected Uint8Array chunk') + } + + result += textDecoder.decode(chunk, { stream: true }) } - // 3. Return a new FormData object whose entries are entries. - const formData = new FormData() - for (const [name, value] of entries) { - formData.append(name, value) + // flush + result += textDecoder.decode() + + return result + }, + + async json () { + if (!(this instanceof instance)) { + throw new TypeError('Illegal invocation') + } + + return JSON.parse(await this.text()) + }, + + async formData () { + if (!(this instanceof instance)) { + throw new TypeError('Illegal invocation') + } + + const contentType = this.headers.get('Content-Type') + + // If mimeType’s essence is "multipart/form-data", then: + if (/multipart\/form-data/.test(contentType)) { + throw new NotSupportedError('multipart/form-data not supported') + } else if (/application\/x-www-form-urlencoded/.test(contentType)) { + // Otherwise, if mimeType’s essence is "application/x-www-form-urlencoded", then: + + // 1. Let entries be the result of parsing bytes. + let entries + try { + entries = new URLSearchParams(await this.text()) + } catch (err) { + // istanbul ignore next: Unclear when new URLSearchParams can fail on a string. + // 2. If entries is failure, then throw a TypeError. + throw Object.assign(new TypeError(), { cause: err }) + } + + // 3. Return a new FormData object whose entries are entries. + const formData = new FormData() + for (const [name, value] of entries) { + formData.append(name, value) + } + return formData + } else { + // Otherwise, throw a TypeError. + webidl.errors.exception({ + header: `${instance.name}.formData`, + value: 'Could not parse content as FormData.' + }) } - return formData - } else { - // Otherwise, throw a TypeError. - throw new TypeError() } } + + return methods } const properties = { body: { enumerable: true, get () { + if (!this || !this[kState]) { + throw new TypeError('Illegal invocation') + } + return this[kState].body ? this[kState].body.stream : null } }, bodyUsed: { enumerable: true, get () { - return this[kState].body && util.isDisturbed(this[kState].body.stream) + if (!this || !this[kState]) { + throw new TypeError('Illegal invocation') + } + + return !!this[kState].body && util.isDisturbed(this[kState].body.stream) } } } function mixinBody (prototype) { - Object.assign(prototype, methods) - Object.defineProperties(prototype, properties) + Object.assign(prototype.prototype, bodyMixinMethods(prototype)) + Object.defineProperties(prototype.prototype, properties) } module.exports = { diff --git a/deps/undici/src/lib/fetch/constants.js b/deps/undici/src/lib/fetch/constants.js index 75c9265e8c1557..44a86702d62920 100644 --- a/deps/undici/src/lib/fetch/constants.js +++ b/deps/undici/src/lib/fetch/constants.js @@ -1,28 +1,5 @@ 'use strict' -const forbiddenHeaderNames = [ - 'accept-charset', - 'accept-encoding', - 'access-control-request-headers', - 'access-control-request-method', - 'connection', - 'content-length', - 'cookie', - 'cookie2', - 'date', - 'dnt', - 'expect', - 'host', - 'keep-alive', - 'origin', - 'referer', - 'te', - 'trailer', - 'transfer-encoding', - 'upgrade', - 'via' -] - const corsSafeListedMethods = ['GET', 'HEAD', 'POST'] const nullBodyStatus = [101, 204, 205, 304] @@ -58,9 +35,6 @@ const requestCache = [ 'only-if-cached' ] -// https://fetch.spec.whatwg.org/#forbidden-response-header-name -const forbiddenResponseHeaderNames = ['set-cookie', 'set-cookie2'] - const requestBodyHeader = [ 'content-encoding', 'content-language', @@ -86,12 +60,20 @@ const subresource = [ '' ] -const corsSafeListedResponseHeaderNames = [] // TODO +/** @type {globalThis['DOMException']} */ +const DOMException = globalThis.DOMException ?? (() => { + // DOMException was only made a global in Node v17.0.0, + // but fetch supports >= v16.8. + try { + atob('~') + } catch (err) { + return Object.getPrototypeOf(err).constructor + } +})() module.exports = { + DOMException, subresource, - forbiddenResponseHeaderNames, - corsSafeListedResponseHeaderNames, forbiddenMethods, requestBodyHeader, referrerPolicy, @@ -99,7 +81,6 @@ module.exports = { requestMode, requestCredentials, requestCache, - forbiddenHeaderNames, redirectStatus, corsSafeListedMethods, nullBodyStatus, diff --git a/deps/undici/src/lib/fetch/file.js b/deps/undici/src/lib/fetch/file.js index 2b98739d2bbff4..647fc5ff38e29d 100644 --- a/deps/undici/src/lib/fetch/file.js +++ b/deps/undici/src/lib/fetch/file.js @@ -1,19 +1,27 @@ 'use strict' const { Blob } = require('buffer') +const { types } = require('util') const { kState } = require('./symbols') +const { isBlobLike } = require('./util') +const { webidl } = require('./webidl') class File extends Blob { constructor (fileBits, fileName, options = {}) { - // TODO: argument idl type check - // The File constructor is invoked with two or three parameters, depending // on whether the optional dictionary parameter is used. When the File() // constructor is invoked, user agents must run the following steps: + if (arguments.length < 2) { + throw new TypeError('2 arguments required') + } + + fileBits = webidl.converters['sequence'](fileBits) + fileName = webidl.converters.USVString(fileName) + options = webidl.converters.FilePropertyBag(options) // 1. Let bytes be the result of processing blob parts given fileBits and // options. - // TODO + // Note: Blob handles this for us // 2. Let n be the fileName argument to the constructor. const n = fileName @@ -25,17 +33,14 @@ class File extends Blob { // be set to the type dictionary member. If t contains any characters // outside the range U+0020 to U+007E, then set t to the empty string // and return from these substeps. - // TODO - const t = options.type - // 2. Convert every character in t to ASCII lowercase. - // TODO + // Note: Blob handles both of these steps for us // 3. If the lastModified member is provided, let d be set to the // lastModified dictionary member. If it is not provided, set d to the // current date and time represented as the number of milliseconds since // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). - const d = options.lastModified ?? Date.now() + const d = options.lastModified // 4. Return a new File object F such that: // F refers to the bytes byte sequence. @@ -43,9 +48,8 @@ class File extends Blob { // F.name is set to n. // F.type is set to t. // F.lastModified is set to d. - // TODO - super(fileBits, { type: t }) + super(processBlobParts(fileBits, options), { type: options.type }) this[kState] = { name: n, lastModified: d @@ -69,10 +73,6 @@ class File extends Blob { } get [Symbol.toStringTag] () { - if (!(this instanceof File)) { - throw new TypeError('Illegal invocation') - } - return this.constructor.name } } @@ -190,12 +190,124 @@ class FileLike { } get [Symbol.toStringTag] () { - if (!(this instanceof FileLike)) { - throw new TypeError('Illegal invocation') + return 'File' + } +} + +webidl.converters.Blob = webidl.interfaceConverter(Blob) + +webidl.converters.BlobPart = function (V, opts) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) } - return 'File' + return webidl.converters.BufferSource(V, opts) + } else { + return webidl.converters.USVString(V, opts) + } +} + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.BlobPart +) + +// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag +webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ + { + key: 'lastModified', + converter: webidl.converters['long long'], + get defaultValue () { + return Date.now() + } + }, + { + key: 'type', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'endings', + converter: (value) => { + value = webidl.converters.DOMString(value) + value = value.toLowerCase() + + if (value !== 'native') { + value = 'transparent' + } + + return value + }, + defaultValue: 'transparent' + } +]) + +/** + * @see https://www.w3.org/TR/FileAPI/#process-blob-parts + * @param {(NodeJS.TypedArray|Blob|string)[]} parts + * @param {{ type: string, endings: string }} options + */ +function processBlobParts (parts, options) { + // 1. Let bytes be an empty sequence of bytes. + /** @type {NodeJS.TypedArray[]} */ + const bytes = [] + + // 2. For each element in parts: + for (const element of parts) { + // 1. If element is a USVString, run the following substeps: + if (typeof element === 'string') { + // 1. Let s be element. + let s = element + + // 2. If the endings member of options is "native", set s + // to the result of converting line endings to native + // of element. + if (options.endings === 'native') { + s = convertLineEndingsNative(s) + } + + // 3. Append the result of UTF-8 encoding s to bytes. + bytes.push(new TextEncoder().encode(s)) + } else if ( + types.isAnyArrayBuffer(element) || + types.isTypedArray(element) + ) { + // 2. If element is a BufferSource, get a copy of the + // bytes held by the buffer source, and append those + // bytes to bytes. + if (!element.buffer) { // ArrayBuffer + bytes.push(new Uint8Array(element)) + } else { + bytes.push(element.buffer) + } + } else if (isBlobLike(element)) { + // 3. If element is a Blob, append the bytes it represents + // to bytes. + bytes.push(element) + } + } + + // 3. Return bytes. + return bytes +} + +/** + * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native + * @param {string} s + */ +function convertLineEndingsNative (s) { + // 1. Let native line ending be be the code point U+000A LF. + let nativeLineEnding = '\n' + + // 2. If the underlying platform’s conventions are to + // represent newlines as a carriage return and line feed + // sequence, set native line ending to the code point + // U+000D CR followed by the code point U+000A LF. + if (process.platform === 'win32') { + nativeLineEnding = '\r\n' } + + return s.replace(/\r?\n/g, nativeLineEnding) } -module.exports = { File: globalThis.File ?? File, FileLike } +module.exports = { File, FileLike } diff --git a/deps/undici/src/lib/fetch/formdata.js b/deps/undici/src/lib/fetch/formdata.js index 550e1e469479fe..e4b9841bbfa309 100644 --- a/deps/undici/src/lib/fetch/formdata.js +++ b/deps/undici/src/lib/fetch/formdata.js @@ -1,43 +1,53 @@ 'use strict' -const { isBlobLike, isFileLike, toUSVString } = require('./util') +const { isBlobLike, isFileLike, toUSVString, makeIterator } = require('./util') const { kState } = require('./symbols') const { File, FileLike } = require('./file') +const { webidl } = require('./webidl') const { Blob } = require('buffer') +// https://xhr.spec.whatwg.org/#formdata class FormData { - constructor (...args) { - if (args.length > 0 && !(args[0]?.constructor?.name === 'HTMLFormElement')) { - throw new TypeError( - "Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'" - ) + static name = 'FormData' + + constructor (form) { + if (arguments.length > 0 && form != null) { + webidl.errors.conversionFailed({ + prefix: 'FormData constructor', + argument: 'Argument 1', + types: ['null'] + }) } this[kState] = [] } - append (...args) { + append (name, value, filename = undefined) { if (!(this instanceof FormData)) { throw new TypeError('Illegal invocation') } - if (args.length < 2) { + if (arguments.length < 2) { throw new TypeError( - `Failed to execute 'append' on 'FormData': 2 arguments required, but only ${args.length} present.` + `Failed to execute 'append' on 'FormData': 2 arguments required, but only ${arguments.length} present.` ) } - if (args.length === 3 && !isBlobLike(args[1])) { + if (arguments.length === 3 && !isBlobLike(value)) { throw new TypeError( "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" ) } - const name = toUSVString(args[0]) - const filename = args.length === 3 ? toUSVString(args[2]) : undefined - // 1. Let value be value if given; otherwise blobValue. - const value = isBlobLike(args[1]) ? args[1] : toUSVString(args[1]) + + name = webidl.converters.USVString(name) + value = isBlobLike(value) + ? webidl.converters.Blob(value, { strict: false }) + : webidl.converters.USVString(value) + filename = arguments.length === 3 + ? webidl.converters.USVString(filename) + : undefined // 2. Let entry be the result of creating an entry with // name, value, and filename if given. @@ -47,18 +57,18 @@ class FormData { this[kState].push(entry) } - delete (...args) { + delete (name) { if (!(this instanceof FormData)) { throw new TypeError('Illegal invocation') } - if (args.length < 1) { + if (arguments.length < 1) { throw new TypeError( - `Failed to execute 'delete' on 'FormData': 1 arguments required, but only ${args.length} present.` + `Failed to execute 'delete' on 'FormData': 1 arguments required, but only ${arguments.length} present.` ) } - const name = toUSVString(args[0]) + name = webidl.converters.USVString(name) // The delete(name) method steps are to remove all entries whose name // is name from this’s entry list. @@ -72,18 +82,18 @@ class FormData { this[kState] = next } - get (...args) { + get (name) { if (!(this instanceof FormData)) { throw new TypeError('Illegal invocation') } - if (args.length < 1) { + if (arguments.length < 1) { throw new TypeError( - `Failed to execute 'get' on 'FormData': 1 arguments required, but only ${args.length} present.` + `Failed to execute 'get' on 'FormData': 1 arguments required, but only ${arguments.length} present.` ) } - const name = toUSVString(args[0]) + name = webidl.converters.USVString(name) // 1. If there is no entry whose name is name in this’s entry list, // then return null. @@ -97,18 +107,18 @@ class FormData { return this[kState][idx].value } - getAll (...args) { + getAll (name) { if (!(this instanceof FormData)) { throw new TypeError('Illegal invocation') } - if (args.length < 1) { + if (arguments.length < 1) { throw new TypeError( - `Failed to execute 'getAll' on 'FormData': 1 arguments required, but only ${args.length} present.` + `Failed to execute 'getAll' on 'FormData': 1 arguments required, but only ${arguments.length} present.` ) } - const name = toUSVString(args[0]) + name = webidl.converters.USVString(name) // 1. If there is no entry whose name is name in this’s entry list, // then return the empty list. @@ -119,48 +129,53 @@ class FormData { .map((entry) => entry.value) } - has (...args) { + has (name) { if (!(this instanceof FormData)) { throw new TypeError('Illegal invocation') } - if (args.length < 1) { + if (arguments.length < 1) { throw new TypeError( - `Failed to execute 'has' on 'FormData': 1 arguments required, but only ${args.length} present.` + `Failed to execute 'has' on 'FormData': 1 arguments required, but only ${arguments.length} present.` ) } - const name = toUSVString(args[0]) + name = webidl.converters.USVString(name) // The has(name) method steps are to return true if there is an entry // whose name is name in this’s entry list; otherwise false. return this[kState].findIndex((entry) => entry.name === name) !== -1 } - set (...args) { + set (name, value, filename = undefined) { if (!(this instanceof FormData)) { throw new TypeError('Illegal invocation') } - if (args.length < 2) { + if (arguments.length < 2) { throw new TypeError( - `Failed to execute 'set' on 'FormData': 2 arguments required, but only ${args.length} present.` + `Failed to execute 'set' on 'FormData': 2 arguments required, but only ${arguments.length} present.` ) } - if (args.length === 3 && !isBlobLike(args[1])) { + if (arguments.length === 3 && !isBlobLike(value)) { throw new TypeError( "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" ) } - const name = toUSVString(args[0]) - const filename = args.length === 3 ? toUSVString(args[2]) : undefined // The set(name, value) and set(name, blobValue, filename) method steps // are: // 1. Let value be value if given; otherwise blobValue. - const value = isBlobLike(args[1]) ? args[1] : toUSVString(args[1]) + + name = webidl.converters.USVString(name) + value = isBlobLike(value) + ? webidl.converters.Blob(value, { strict: false }) + : webidl.converters.USVString(value) + filename = arguments.length === 3 + ? toUSVString(filename) + : undefined // 2. Let entry be the result of creating an entry with name, value, and // filename if given. @@ -182,91 +197,125 @@ class FormData { } get [Symbol.toStringTag] () { + return this.constructor.name + } + + entries () { if (!(this instanceof FormData)) { throw new TypeError('Illegal invocation') } - return this.constructor.name + return makeIterator( + makeIterable(this[kState], 'entries'), + 'FormData' + ) } - * entries () { + keys () { if (!(this instanceof FormData)) { throw new TypeError('Illegal invocation') } - for (const pair of this) { - yield pair - } + return makeIterator( + makeIterable(this[kState], 'keys'), + 'FormData' + ) } - * keys () { + values () { if (!(this instanceof FormData)) { throw new TypeError('Illegal invocation') } - for (const [key] of this) { - yield key - } + return makeIterator( + makeIterable(this[kState], 'values'), + 'FormData' + ) } - * values () { + /** + * @param {(value: string, key: string, self: FormData) => void} callbackFn + * @param {unknown} thisArg + */ + forEach (callbackFn, thisArg = globalThis) { if (!(this instanceof FormData)) { throw new TypeError('Illegal invocation') } - for (const [, value] of this) { - yield value + if (arguments.length < 1) { + throw new TypeError( + `Failed to execute 'forEach' on 'FormData': 1 argument required, but only ${arguments.length} present.` + ) } - } - * [Symbol.iterator] () { - // The value pairs to iterate over are this’s entry list’s entries with - // the key being the name and the value being the value. - for (const { name, value } of this[kState]) { - yield [name, value] + if (typeof callbackFn !== 'function') { + throw new TypeError( + "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'." + ) + } + + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]) } } } +FormData.prototype[Symbol.iterator] = FormData.prototype.entries + +/** + * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry + * @param {string} name + * @param {string|Blob} value + * @param {?string} filename + * @returns + */ function makeEntry (name, value, filename) { - // To create an entry for name, value, and optionally a filename, run these - // steps: + // 1. Set name to the result of converting name into a scalar value string. + // "To convert a string into a scalar value string, replace any surrogates + // with U+FFFD." + // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end + name = Buffer.from(name).toString('utf8') + + // 2. If value is a string, then set value to the result of converting + // value into a scalar value string. + if (typeof value === 'string') { + value = Buffer.from(value).toString('utf8') + } else { + // 3. Otherwise: + + // 1. If value is not a File object, then set value to a new File object, + // representing the same bytes, whose name attribute value is "blob" + if (!isFileLike(value)) { + value = value instanceof Blob + ? new File([value], 'blob', { type: value.type }) + : new FileLike(value, 'blob', { type: value.type }) + } - // 1. Let entry be a new entry. - const entry = { - name: null, - value: null + // 2. If filename is given, then set value to a new File object, + // representing the same bytes, whose name attribute is filename. + if (filename !== undefined) { + value = value instanceof File + ? new File([value], filename, { type: value.type }) + : new FileLike(value, filename, { type: value.type }) + } } - // 2. Set entry’s name to name. - entry.name = name - - // 3. If value is a Blob object and not a File object, then set value to a new File - // object, representing the same bytes, whose name attribute value is "blob". - if (isBlobLike(value) && !isFileLike(value)) { - value = value instanceof Blob - ? new File([value], 'blob') - : new FileLike(value, 'blob') - } + // 4. Return an entry whose name is name and whose value is value. + return { name, value } +} - // 4. If value is (now) a File object and filename is given, then set value to a - // new File object, representing the same bytes, whose name attribute value is - // filename. - // TODO: This is a bit weird... What if passed value is a File? - // Do we just override the name attribute? Since it says "if value is (now)" - // does that mean that this lives inside the previous condition? In which case - // creating one more File instance doesn't make much sense.... - if (isFileLike(value) && filename != null) { - value = value instanceof File - ? new File([value], filename) - : new FileLike(value, filename) +function * makeIterable (entries, type) { + // The value pairs to iterate over are this’s entry list’s entries + // with the key being the name and the value being the value. + for (const { name, value } of entries) { + if (type === 'entries') { + yield [name, value] + } else if (type === 'values') { + yield value + } else { + yield name + } } - - // 5. Set entry’s value to value. - entry.value = value - - // 6. Return entry. - return entry } -module.exports = { FormData: globalThis.FormData ?? FormData } +module.exports = { FormData } diff --git a/deps/undici/src/lib/fetch/headers.js b/deps/undici/src/lib/fetch/headers.js index a5dd5b7a413373..69a3ec57576890 100644 --- a/deps/undici/src/lib/fetch/headers.js +++ b/deps/undici/src/lib/fetch/headers.js @@ -2,166 +2,171 @@ 'use strict' -const { validateHeaderName, validateHeaderValue } = require('http') const { kHeadersList } = require('../core/symbols') const { kGuard } = require('./symbols') const { kEnumerableProperty } = require('../core/util') const { - forbiddenHeaderNames, - forbiddenResponseHeaderNames -} = require('./constants') - -function binarySearch (arr, val) { - let low = 0 - let high = Math.floor(arr.length / 2) - - while (high > low) { - const mid = (high + low) >>> 1 - - if (val.localeCompare(arr[mid * 2]) > 0) { - low = mid + 1 - } else { - high = mid - } - } - - return low * 2 -} - -function normalizeAndValidateHeaderName (name) { - if (name === undefined) { - throw new TypeError(`Header name ${name}`) - } - const normalizedHeaderName = name.toLocaleLowerCase() - validateHeaderName(normalizedHeaderName) - return normalizedHeaderName -} - -function normalizeAndValidateHeaderValue (name, value) { - if (value === undefined) { - throw new TypeError(value, name) - } - const normalizedHeaderValue = `${value}`.replace( - /^[\n\t\r\x20]+|[\n\t\r\x20]+$/g, + makeIterator, + isValidHeaderName, + isValidHeaderValue +} = require('./util') +const { webidl } = require('./webidl') + +const kHeadersMap = Symbol('headers map') +const kHeadersSortedMap = Symbol('headers map sorted') + +/** + * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize + * @param {string} potentialValue + */ +function headerValueNormalize (potentialValue) { + // To normalize a byte sequence potentialValue, remove + // any leading and trailing HTTP whitespace bytes from + // potentialValue. + return potentialValue.replace( + /^[\r\n\t ]+|[\r\n\t ]+$/g, '' ) - validateHeaderValue(name, normalizedHeaderValue) - return normalizedHeaderValue } function fill (headers, object) { // To fill a Headers object headers with a given object object, run these steps: - if (object[Symbol.iterator]) { - // 1. If object is a sequence, then for each header in object: - // TODO: How to check if sequence? - for (let header of object) { + // 1. If object is a sequence, then for each header in object: + // Note: webidl conversion to array has already been done. + if (Array.isArray(object)) { + for (const header of object) { // 1. If header does not contain exactly two items, then throw a TypeError. - if (!header[Symbol.iterator]) { - // TODO: Spec doesn't define what to do here? - throw new TypeError() - } - - if (typeof header === 'string') { - // TODO: Spec doesn't define what to do here? - throw new TypeError() - } - - if (!Array.isArray(header)) { - header = [...header] - } - if (header.length !== 2) { - throw new TypeError() + webidl.errors.exception({ + header: 'Headers constructor', + message: `expected name/value pair to be length 2, found ${header.length}.` + }) } - // 2. Append header’s first item/header’s second item to headers. + // 2. Append (header’s first item, header’s second item) to headers. headers.append(header[0], header[1]) } - } else if (object && typeof object === 'object') { - // Otherwise, object is a record, then for each key → value in object, - // append key/value to headers. - // TODO: How to check if record? - for (const header of Object.entries(object)) { - headers.append(header[0], header[1]) + } else if (typeof object === 'object' && object !== null) { + // Note: null should throw + + // 2. Otherwise, object is a record, then for each key → value in object, + // append (key, value) to headers + for (const [key, value] of Object.entries(object)) { + headers.append(key, value) } } else { - // TODO: Spec doesn't define what to do here? - throw TypeError() + webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }) } } -// TODO: Composition over inheritence? Or helper methods? -class HeadersList extends Array { +class HeadersList { + constructor (init) { + if (init instanceof HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]) + this[kHeadersSortedMap] = init[kHeadersSortedMap] + } else { + this[kHeadersMap] = new Map(init) + this[kHeadersSortedMap] = null + } + } + + // https://fetch.spec.whatwg.org/#header-list-contains + contains (name) { + // A header list list contains a header name name if list + // contains a header whose name is a byte-case-insensitive + // match for name. + name = name.toLowerCase() + + return this[kHeadersMap].has(name) + } + + clear () { + this[kHeadersMap].clear() + this[kHeadersSortedMap] = null + } + + // https://fetch.spec.whatwg.org/#concept-header-list-append append (name, value) { - const normalizedName = normalizeAndValidateHeaderName(name) - const normalizedValue = normalizeAndValidateHeaderValue(name, value) + this[kHeadersSortedMap] = null - const index = binarySearch(this, normalizedName) + // 1. If list contains name, then set name to the first such + // header’s name. + name = name.toLowerCase() + const exists = this[kHeadersMap].get(name) - if (this[index] === normalizedName) { - this[index + 1] += `, ${normalizedValue}` + // 2. Append (name, value) to list. + if (exists) { + this[kHeadersMap].set(name, `${exists}, ${value}`) } else { - this.splice(index, 0, normalizedName, normalizedValue) + this[kHeadersMap].set(name, `${value}`) } } - delete (name) { - const normalizedName = normalizeAndValidateHeaderName(name) + // https://fetch.spec.whatwg.org/#concept-header-list-set + set (name, value) { + this[kHeadersSortedMap] = null + name = name.toLowerCase() + + // 1. If list contains name, then set the value of + // the first such header to value and remove the + // others. + // 2. Otherwise, append header (name, value) to list. + return this[kHeadersMap].set(name, value) + } - const index = binarySearch(this, normalizedName) + // https://fetch.spec.whatwg.org/#concept-header-list-delete + delete (name) { + this[kHeadersSortedMap] = null - if (this[index] === normalizedName) { - this.splice(index, 2) - } + name = name.toLowerCase() + return this[kHeadersMap].delete(name) } + // https://fetch.spec.whatwg.org/#concept-header-list-get get (name) { - const normalizedName = normalizeAndValidateHeaderName(name) - - const index = binarySearch(this, normalizedName) + name = name.toLowerCase() - if (this[index] === normalizedName) { - return this[index + 1] + // 1. If list does not contain name, then return null. + if (!this.contains(name)) { + return null } - return null + // 2. Return the values of all headers in list whose name + // is a byte-case-insensitive match for name, + // separated from each other by 0x2C 0x20, in order. + return this[kHeadersMap].get(name) ?? null } has (name) { - const normalizedName = normalizeAndValidateHeaderName(name) + name = name.toLowerCase() + return this[kHeadersMap].has(name) + } - const index = binarySearch(this, normalizedName) + keys () { + return this[kHeadersMap].keys() + } - return this[index] === normalizedName + values () { + return this[kHeadersMap].values() } - set (name, value) { - const normalizedName = normalizeAndValidateHeaderName(name) - const normalizedValue = normalizeAndValidateHeaderValue(name, value) + entries () { + return this[kHeadersMap].entries() + } - const index = binarySearch(this, normalizedName) - if (this[index] === normalizedName) { - this[index + 1] = normalizedValue - } else { - this.splice(index, 0, normalizedName, normalizedValue) - } + [Symbol.iterator] () { + return this[kHeadersMap][Symbol.iterator]() } } +// https://fetch.spec.whatwg.org/#headers-class class Headers { - constructor (...args) { - if ( - args[0] !== undefined && - !(typeof args[0] === 'object' && args[0] != null) && - !Array.isArray(args[0]) - ) { - throw new TypeError( - "Failed to construct 'Headers': The provided value is not of type '(record or sequence>" - ) - } - const init = args.length >= 1 ? args[0] ?? {} : {} - + constructor (init = undefined) { this[kHeadersList] = new HeadersList() // The new Headers(init) constructor steps are: @@ -170,190 +175,284 @@ class Headers { this[kGuard] = 'none' // 2. If init is given, then fill this with init. - fill(this, init) + if (init !== undefined) { + init = webidl.converters.HeadersInit(init) + fill(this, init) + } } get [Symbol.toStringTag] () { - if (!(this instanceof Headers)) { - throw new TypeError('Illegal invocation') - } - return this.constructor.name } - toString () { + // https://fetch.spec.whatwg.org/#dom-headers-append + append (name, value) { if (!(this instanceof Headers)) { throw new TypeError('Illegal invocation') } - return Object.prototype.toString.call(this) - } - - append (...args) { - if (!(this instanceof Headers)) { - throw new TypeError('Illegal invocation') - } - if (args.length < 2) { + if (arguments.length < 2) { throw new TypeError( - `Failed to execute 'append' on 'Headers': 2 arguments required, but only ${args.length} present.` + `Failed to execute 'append' on 'Headers': 2 arguments required, but only ${arguments.length} present.` ) } - const normalizedName = normalizeAndValidateHeaderName(String(args[0])) + name = webidl.converters.ByteString(name) + value = webidl.converters.ByteString(value) + + // 1. Normalize value. + value = headerValueNormalize(value) + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value: name, + type: 'header name' + }) + } else if (!isValidHeaderValue(value)) { + webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value, + type: 'header value' + }) + } + // 3. If headers’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if headers’s guard is "request" and name is a + // forbidden header name, return. + // Note: undici does not implement forbidden header names if (this[kGuard] === 'immutable') { throw new TypeError('immutable') - } else if ( - this[kGuard] === 'request' && - forbiddenHeaderNames.includes(normalizedName) - ) { - return } else if (this[kGuard] === 'request-no-cors') { + // 5. Otherwise, if headers’s guard is "request-no-cors": // TODO - } else if ( - this[kGuard] === 'response' && - forbiddenResponseHeaderNames.includes(normalizedName) - ) { - return } - return this[kHeadersList].append(String(args[0]), String(args[1])) + // 6. Otherwise, if headers’s guard is "response" and name is a + // forbidden response-header name, return. + + // 7. Append (name, value) to headers’s header list. + // 8. If headers’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from headers + return this[kHeadersList].append(name, value) } - delete (...args) { + // https://fetch.spec.whatwg.org/#dom-headers-delete + delete (name) { if (!(this instanceof Headers)) { throw new TypeError('Illegal invocation') } - if (args.length < 1) { + + if (arguments.length < 1) { throw new TypeError( - `Failed to execute 'delete' on 'Headers': 1 argument required, but only ${args.length} present.` + `Failed to execute 'delete' on 'Headers': 1 argument required, but only ${arguments.length} present.` ) } - const normalizedName = normalizeAndValidateHeaderName(String(args[0])) + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + webidl.errors.invalidArgument({ + prefix: 'Headers.delete', + value: name, + type: 'header name' + }) + } + // 2. If this’s guard is "immutable", then throw a TypeError. + // 3. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 4. Otherwise, if this’s guard is "request-no-cors", name + // is not a no-CORS-safelisted request-header name, and + // name is not a privileged no-CORS request-header name, + // return. + // 5. Otherwise, if this’s guard is "response" and name is + // a forbidden response-header name, return. + // Note: undici does not implement forbidden header names if (this[kGuard] === 'immutable') { throw new TypeError('immutable') - } else if ( - this[kGuard] === 'request' && - forbiddenHeaderNames.includes(normalizedName) - ) { - return } else if (this[kGuard] === 'request-no-cors') { // TODO - } else if ( - this[kGuard] === 'response' && - forbiddenResponseHeaderNames.includes(normalizedName) - ) { + } + + // 6. If this’s header list does not contain name, then + // return. + if (!this[kHeadersList].contains(name)) { return } - return this[kHeadersList].delete(String(args[0])) + // 7. Delete name from this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this. + return this[kHeadersList].delete(name) } - get (...args) { + // https://fetch.spec.whatwg.org/#dom-headers-get + get (name) { if (!(this instanceof Headers)) { throw new TypeError('Illegal invocation') } - if (args.length < 1) { + + if (arguments.length < 1) { throw new TypeError( - `Failed to execute 'get' on 'Headers': 1 argument required, but only ${args.length} present.` + `Failed to execute 'get' on 'Headers': 1 argument required, but only ${arguments.length} present.` ) } - return this[kHeadersList].get(String(args[0])) + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + webidl.errors.invalidArgument({ + prefix: 'Headers.get', + value: name, + type: 'header name' + }) + } + + // 2. Return the result of getting name from this’s header + // list. + return this[kHeadersList].get(name) } - has (...args) { + // https://fetch.spec.whatwg.org/#dom-headers-has + has (name) { if (!(this instanceof Headers)) { throw new TypeError('Illegal invocation') } - if (args.length < 1) { + + if (arguments.length < 1) { throw new TypeError( - `Failed to execute 'has' on 'Headers': 1 argument required, but only ${args.length} present.` + `Failed to execute 'has' on 'Headers': 1 argument required, but only ${arguments.length} present.` ) } - return this[kHeadersList].has(String(args[0])) + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + webidl.errors.invalidArgument({ + prefix: 'Headers.has', + value: name, + type: 'header name' + }) + } + + // 2. Return true if this’s header list contains name; + // otherwise false. + return this[kHeadersList].contains(name) } - set (...args) { + // https://fetch.spec.whatwg.org/#dom-headers-set + set (name, value) { if (!(this instanceof Headers)) { throw new TypeError('Illegal invocation') } - if (args.length < 2) { + + if (arguments.length < 2) { throw new TypeError( - `Failed to execute 'set' on 'Headers': 2 arguments required, but only ${args.length} present.` + `Failed to execute 'set' on 'Headers': 2 arguments required, but only ${arguments.length} present.` ) } - const normalizedName = normalizeAndValidateHeaderName(String(args[0])) + name = webidl.converters.ByteString(name) + value = webidl.converters.ByteString(value) + + // 1. Normalize value. + value = headerValueNormalize(value) + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value: name, + type: 'header name' + }) + } else if (!isValidHeaderValue(value)) { + webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value, + type: 'header value' + }) + } + // 3. If this’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 5. Otherwise, if this’s guard is "request-no-cors" and + // name/value is not a no-CORS-safelisted request-header, + // return. + // 6. Otherwise, if this’s guard is "response" and name is a + // forbidden response-header name, return. + // Note: undici does not implement forbidden header names if (this[kGuard] === 'immutable') { throw new TypeError('immutable') - } else if ( - this[kGuard] === 'request' && - forbiddenHeaderNames.includes(normalizedName) - ) { - return } else if (this[kGuard] === 'request-no-cors') { // TODO - } else if ( - this[kGuard] === 'response' && - forbiddenResponseHeaderNames.includes(normalizedName) - ) { - return } - return this[kHeadersList].set(String(args[0]), String(args[1])) + // 7. Set (name, value) in this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this + return this[kHeadersList].set(name, value) + } + + get [kHeadersSortedMap] () { + this[kHeadersList][kHeadersSortedMap] ??= new Map([...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1)) + return this[kHeadersList][kHeadersSortedMap] } - * keys () { - const clone = this[kHeadersList].slice() - for (let index = 0; index < clone.length; index += 2) { - yield clone[index] + keys () { + if (!(this instanceof Headers)) { + throw new TypeError('Illegal invocation') } + + return makeIterator(this[kHeadersSortedMap].keys(), 'Headers') } - * values () { - const clone = this[kHeadersList].slice() - for (let index = 1; index < clone.length; index += 2) { - yield clone[index] + values () { + if (!(this instanceof Headers)) { + throw new TypeError('Illegal invocation') } + + return makeIterator(this[kHeadersSortedMap].values(), 'Headers') } - * entries () { - const clone = this[kHeadersList].slice() - for (let index = 0; index < clone.length; index += 2) { - yield [clone[index], clone[index + 1]] + entries () { + if (!(this instanceof Headers)) { + throw new TypeError('Illegal invocation') } + + return makeIterator(this[kHeadersSortedMap].entries(), 'Headers') } - forEach (...args) { + /** + * @param {(value: string, key: string, self: Headers) => void} callbackFn + * @param {unknown} thisArg + */ + forEach (callbackFn, thisArg = globalThis) { if (!(this instanceof Headers)) { throw new TypeError('Illegal invocation') } - if (args.length < 1) { + + if (arguments.length < 1) { throw new TypeError( - `Failed to execute 'forEach' on 'Headers': 1 argument required, but only ${args.length} present.` + `Failed to execute 'forEach' on 'Headers': 1 argument required, but only ${arguments.length} present.` ) } - if (typeof args[0] !== 'function') { + + if (typeof callbackFn !== 'function') { throw new TypeError( "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'." ) } - const callback = args[0] - const thisArg = args[1] - const clone = this[kHeadersList].slice() - for (let index = 0; index < clone.length; index += 2) { - callback.call( - thisArg, - clone[index + 1], - clone[index], - this - ) + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]) } } @@ -380,11 +479,24 @@ Object.defineProperties(Headers.prototype, { forEach: kEnumerableProperty }) +webidl.converters.HeadersInit = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (V[Symbol.iterator]) { + return webidl.converters['sequence>'](V) + } + + return webidl.converters['record'](V) + } + + webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }) +} + module.exports = { fill, Headers, - HeadersList, - binarySearch, - normalizeAndValidateHeaderName, - normalizeAndValidateHeaderValue + HeadersList } diff --git a/deps/undici/src/lib/fetch/index.js b/deps/undici/src/lib/fetch/index.js index dfc7b824082660..cf91a5d378e98b 100644 --- a/deps/undici/src/lib/fetch/index.js +++ b/deps/undici/src/lib/fetch/index.js @@ -31,13 +31,11 @@ const { coarsenedSharedCurrentTime, createDeferredPromise, isBlobLike, - CORBCheck, sameOrigin, isCancelled, isAborted } = require('./util') const { kState, kHeaders, kGuard, kRealm } = require('./symbols') -const { AbortError } = require('../core/errors') const assert = require('assert') const { safelyExtractBody, extractBody } = require('./body') const { @@ -45,20 +43,24 @@ const { nullBodyStatus, safeMethods, requestBodyHeader, - subresource + subresource, + DOMException } = require('./constants') const { kHeadersList } = require('../core/symbols') const EE = require('events') const { Readable, pipeline } = require('stream') const { isErrored, isReadable } = require('../core/util') const { dataURLProcessor } = require('./dataURL') -const { kIsMockActive } = require('../mock/mock-symbols') const { TransformStream } = require('stream/web') /** @type {import('buffer').resolveObjectURL} */ let resolveObjectURL let ReadableStream +const nodeVersion = process.versions.node.split('.') +const nodeMajor = Number(nodeVersion[0]) +const nodeMinor = Number(nodeVersion[1]) + class Fetch extends EE { constructor (dispatcher) { super() @@ -84,7 +86,7 @@ class Fetch extends EE { return } - const reason = new AbortError() + const reason = new DOMException('The operation was aborted.', 'AbortError') this.state = 'aborted' this.connection?.destroy(reason) @@ -93,32 +95,27 @@ class Fetch extends EE { } // https://fetch.spec.whatwg.org/#fetch-method -async function fetch (...args) { - if (args.length < 1) { - throw new TypeError( - `Failed to execute 'fetch' on 'Window': 1 argument required, but only ${args.length} present.` - ) - } - if ( - args.length >= 1 && - typeof args[1] !== 'object' && - args[1] !== undefined - ) { +async function fetch (input, init = {}) { + if (arguments.length < 1) { throw new TypeError( - "Failed to execute 'fetch' on 'Window': cannot convert to dictionary." + `Failed to execute 'fetch' on 'Window': 1 argument required, but only ${arguments.length} present.` ) } - const resource = args[0] - const init = args.length >= 1 ? args[1] ?? {} : {} - // 1. Let p be a new promise. const p = createDeferredPromise() // 2. Let requestObject be the result of invoking the initial value of // Request as constructor with input and init as arguments. If this throws // an exception, reject p with it and return p. - const requestObject = new Request(resource, init) + let requestObject + + try { + requestObject = new Request(input, init) + } catch (e) { + p.reject(e) + return p.promise + } // 3. Let request be requestObject’s request. const request = requestObject[kState] @@ -290,14 +287,16 @@ function finalizeAndReportTiming (response, initiatorType = 'other') { } // https://w3c.github.io/resource-timing/#dfn-mark-resource-timing -function markResourceTiming () { - // TODO +function markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) { + if (nodeMajor >= 18 && nodeMinor >= 2) { + performance.markResourceTiming(timingInfo, originalURL, initiatorType, globalThis, cacheState) + } } // https://fetch.spec.whatwg.org/#abort-fetch function abortFetch (p, request, responseObject) { // 1. Let error be an "AbortError" DOMException. - const error = new AbortError() + const error = new DOMException('The operation was aborted.', 'AbortError') // 2. Reject promise with error. p.reject(error) @@ -588,18 +587,8 @@ async function mainFetch (fetchParams, recursive = false) { // 2. Set request’s response tainting to "opaque". request.responseTainting = 'opaque' - // 3. Let noCorsResponse be the result of running scheme fetch given - // fetchParams. - const noCorsResponse = await schemeFetch(fetchParams) - - // 4. If noCorsResponse is a filtered response or the CORB check with - // request and noCorsResponse returns allowed, then return noCorsResponse. - if (noCorsResponse.status === 0 || CORBCheck(request, noCorsResponse) === 'allowed') { - return noCorsResponse - } - - // 5. Return a new response whose status is noCorsResponse’s status. - return makeResponse({ status: noCorsResponse.status }) + // 3. Return the result of running scheme fetch given fetchParams. + return await schemeFetch(fetchParams) } // request’s current URL’s scheme is not an HTTP(S) scheme @@ -768,7 +757,7 @@ async function schemeFetch (fetchParams) { const { protocol: scheme, pathname: path - } = new URL(requestCurrentURL(request)) + } = requestCurrentURL(request) // switch on request’s current URL’s scheme, and run the associated steps: switch (scheme) { @@ -780,7 +769,7 @@ async function schemeFetch (fetchParams) { const resp = makeResponse({ statusText: 'OK', headersList: [ - 'content-type', 'text/html;charset=utf-8' + ['content-type', 'text/html;charset=utf-8'] ] }) @@ -792,7 +781,7 @@ async function schemeFetch (fetchParams) { return makeNetworkError('invalid path called') } case 'blob:': { - resolveObjectURL ??= require('buffer').resolveObjectURL + resolveObjectURL = resolveObjectURL || require('buffer').resolveObjectURL // 1. Run these steps, but abort when the ongoing fetch is terminated: // 1. Let blob be request’s current URL’s blob URL entry’s object. @@ -871,7 +860,7 @@ async function schemeFetch (fetchParams) { return makeResponse({ statusText: 'OK', headersList: [ - 'content-type', contentType + ['content-type', contentType] ], body: extractBody(dataURLStruct.body)[0] }) @@ -1070,7 +1059,7 @@ async function httpFetch (fetchParams) { // 2. Switch on request’s redirect mode: if (request.redirect === 'error') { // Set response to a network error. - response = makeNetworkError() + response = makeNetworkError('unexpected redirect') } else if (request.redirect === 'manual') { // Set response to an opaque-redirect filtered response whose internal // response is actualResponse. @@ -1176,7 +1165,7 @@ async function httpRedirectFetch (fetchParams, response) { if ( ([301, 302].includes(actualResponse.status) && request.method === 'POST') || (actualResponse.status === 303 && - !['GET', 'HEADER'].includes(request.method)) + !['GET', 'HEAD'].includes(request.method)) ) { // then: // 1. Set request’s method to `GET` and request’s body to null. @@ -1567,7 +1556,7 @@ async function httpNetworkFetch ( destroy (err) { if (!this.destroyed) { this.destroyed = true - this.abort?.(err ?? new AbortError()) + this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError')) } } } @@ -1827,6 +1816,11 @@ async function httpNetworkFetch ( let bytes try { const { done, value } = await fetchParams.controller.next() + + if (isAborted(fetchParams)) { + break + } + bytes = done ? undefined : value } catch (err) { if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { @@ -1892,7 +1886,9 @@ async function httpNetworkFetch ( // 2. If stream is readable, error stream with an "AbortError" DOMException. if (isReadable(stream)) { - fetchParams.controller.controller.error(new AbortError()) + fetchParams.controller.controller.error( + new DOMException('The operation was aborted.', 'AbortError') + ) } } else { // 3. Otherwise, if stream is readable, error stream with a TypeError. @@ -1918,9 +1914,11 @@ async function httpNetworkFetch ( path: url.pathname + url.search, origin: url.origin, method: request.method, - body: fetchParams.controller.dispatcher[kIsMockActive] ? request.body && request.body.source : body, - headers: request.headersList, - maxRedirections: 0 + body: fetchParams.controller.dispatcher.isMockActive ? request.body && request.body.source : body, + headers: [...request.headersList].flat(), + maxRedirections: 0, + bodyTimeout: 300_000, + headersTimeout: 300_000 }, { body: null, @@ -1931,7 +1929,7 @@ async function httpNetworkFetch ( const { connection } = fetchParams.controller if (connection.destroyed) { - abort(new AbortError()) + abort(new DOMException('The operation was aborted.', 'AbortError')) } else { fetchParams.controller.on('terminated', abort) this.abort = connection.abort = abort @@ -1962,16 +1960,18 @@ async function httpNetworkFetch ( const decoders = [] // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding - for (const coding of codings) { - if (/(x-)?gzip/.test(coding)) { - decoders.push(zlib.createGunzip()) - } else if (/(x-)?deflate/.test(coding)) { - decoders.push(zlib.createInflate()) - } else if (coding === 'br') { - decoders.push(zlib.createBrotliDecompress()) - } else { - decoders.length = 0 - break + if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status)) { + for (const coding of codings) { + if (/(x-)?gzip/.test(coding)) { + decoders.push(zlib.createGunzip()) + } else if (/(x-)?deflate/.test(coding)) { + decoders.push(zlib.createInflate()) + } else if (coding === 'br') { + decoders.push(zlib.createBrotliDecompress()) + } else { + decoders.length = 0 + break + } } } @@ -2029,7 +2029,7 @@ async function httpNetworkFetch ( fetchParams.controller.terminate(error) - reject(makeNetworkError(error)) + reject(error) } } )) diff --git a/deps/undici/src/lib/fetch/request.js b/deps/undici/src/lib/fetch/request.js index 151dc8e44111f1..7e1b3d8eb1d009 100644 --- a/deps/undici/src/lib/fetch/request.js +++ b/deps/undici/src/lib/fetch/request.js @@ -8,7 +8,6 @@ const util = require('../core/util') const { isValidHTTPToken, sameOrigin, - toUSVString, normalizeMethod } = require('./util') const { @@ -22,6 +21,7 @@ const { } = require('./constants') const { kEnumerableProperty } = util const { kHeaders, kSignal, kState, kGuard, kRealm } = require('./symbols') +const { webidl } = require('./webidl') const { kHeadersList } = require('../core/symbols') const assert = require('assert') @@ -36,27 +36,19 @@ const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { // https://fetch.spec.whatwg.org/#request-class class Request { // https://fetch.spec.whatwg.org/#dom-request - constructor (...args) { - if (args[0] === kInit) { + constructor (input, init = {}) { + if (input === kInit) { return } - if (args.length < 1) { + if (arguments.length < 1) { throw new TypeError( - `Failed to construct 'Request': 1 argument required, but only ${args.length} present.` + `Failed to construct 'Request': 1 argument required, but only ${arguments.length} present.` ) } - if ( - args.length >= 1 && - typeof args[1] !== 'object' && - args[1] !== undefined - ) { - throw new TypeError( - "Failed to construct 'Request': cannot convert to dictionary." - ) - } - const input = args[0] instanceof Request ? args[0] : toUSVString(args[0]) - const init = args.length >= 1 ? args[1] ?? {} : {} + + input = webidl.converters.RequestInfo(input) + init = webidl.converters.RequestInit(init) // TODO this[kRealm] = { settingsObject: {} } @@ -266,7 +258,10 @@ class Request { // 17. If mode is "navigate", then throw a TypeError. if (mode === 'navigate') { - throw new TypeError() + webidl.errors.exception({ + header: 'Request constructor', + message: 'invalid request mode navigate.' + }) } // 18. If mode is non-null, set request’s mode to mode. @@ -384,8 +379,8 @@ class Request { // Realm, whose header list is request’s header list and guard is // "request". this[kHeaders] = new Headers() - this[kHeaders][kGuard] = 'request' this[kHeaders][kHeadersList] = request.headersList + this[kHeaders][kGuard] = 'request' this[kHeaders][kRealm] = this[kRealm] // 31. If this’s request’s mode is "no-cors", then: @@ -406,7 +401,7 @@ class Request { if (Object.keys(init).length !== 0) { // 1. Let headers be a copy of this’s headers and its associated header // list. - let headers = new Headers(this.headers) + let headers = new Headers(this[kHeaders]) // 2. If init["headers"] exists, then set headers to init["headers"]. if (init.headers !== undefined) { @@ -414,16 +409,17 @@ class Request { } // 3. Empty this’s headers’s header list. - this[kState].headersList = new HeadersList() - this[kHeaders][kHeadersList] = this[kState].headersList + this[kHeaders][kHeadersList].clear() // 4. If headers is a Headers object, then for each header in its header // list, append header’s name/header’s value to this’s headers. - if (headers instanceof Headers) { - this[kState].headersList.push(...headers[kHeadersList]) + if (headers.constructor.name === 'Headers') { + for (const [key, val] of headers) { + this[kHeaders].append(key, val) + } } else { // 5. Otherwise, fill this’s headers with headers. - fillHeaders(this[kState].headersList, headers) + fillHeaders(this[kHeaders], headers) } } @@ -514,10 +510,6 @@ class Request { } get [Symbol.toStringTag] () { - if (!(this instanceof Request)) { - throw new TypeError('Illegal invocation') - } - return this.constructor.name } @@ -751,7 +743,7 @@ class Request { } } -mixinBody(Request.prototype) +mixinBody(Request) function makeRequest (init) { // https://fetch.spec.whatwg.org/#requests @@ -793,9 +785,8 @@ function makeRequest (init) { timingAllowFailed: false, ...init, headersList: init.headersList - ? new HeadersList(...init.headersList) - : new HeadersList(), - urlList: init.urlList ? [...init.urlList.map((url) => new URL(url))] : [] + ? new HeadersList(init.headersList) + : new HeadersList() } request.url = request.urlList[0] return request @@ -827,4 +818,109 @@ Object.defineProperties(Request.prototype, { signal: kEnumerableProperty }) +webidl.converters.Request = webidl.interfaceConverter( + Request +) + +// https://fetch.spec.whatwg.org/#requestinfo +webidl.converters.RequestInfo = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V) + } + + if (V instanceof Request) { + return webidl.converters.Request(V) + } + + return webidl.converters.USVString(V) +} + +webidl.converters.AbortSignal = webidl.interfaceConverter( + AbortSignal +) + +// https://fetch.spec.whatwg.org/#requestinit +webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: 'method', + converter: webidl.converters.ByteString + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + }, + { + key: 'body', + converter: webidl.nullableConverter( + webidl.converters.BodyInit + ) + }, + { + key: 'referrer', + converter: webidl.converters.USVString + }, + { + key: 'referrerPolicy', + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: [ + '', 'no-referrer', 'no-referrer-when-downgrade', + 'same-origin', 'origin', 'strict-origin', + 'origin-when-cross-origin', 'strict-origin-when-cross-origin', + 'unsafe-url' + ] + }, + { + key: 'mode', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: [ + 'same-origin', 'cors', 'no-cors', 'navigate', 'websocket' + ] + }, + { + key: 'credentials', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: [ + 'omit', 'same-origin', 'include' + ] + }, + { + key: 'cache', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: [ + 'default', 'no-store', 'reload', 'no-cache', 'force-cache', + 'only-if-cached' + ] + }, + { + key: 'redirect', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: [ + 'follow', 'error', 'manual' + ] + }, + { + key: 'integrity', + converter: webidl.converters.DOMString + }, + { + key: 'keepalive', + converter: webidl.converters.boolean + }, + { + key: 'signal', + converter: webidl.nullableConverter( + webidl.converters.AbortSignal + ) + }, + { + key: 'window', + converter: webidl.converters.any + } +]) + module.exports = { Request, makeRequest } diff --git a/deps/undici/src/lib/fetch/response.js b/deps/undici/src/lib/fetch/response.js index 64fc3170dac413..4649a5da907029 100644 --- a/deps/undici/src/lib/fetch/response.js +++ b/deps/undici/src/lib/fetch/response.js @@ -1,20 +1,30 @@ 'use strict' const { Headers, HeadersList, fill } = require('./headers') -const { AbortError } = require('../core/errors') const { extractBody, cloneBody, mixinBody } = require('./body') const util = require('../core/util') const { kEnumerableProperty } = util -const { responseURL, isValidReasonPhrase, toUSVString, isCancelled, isAborted } = require('./util') +const { + responseURL, + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString +} = require('./util') const { redirectStatus, nullBodyStatus, - forbiddenResponseHeaderNames, - corsSafeListedResponseHeaderNames + DOMException } = require('./constants') const { kState, kHeaders, kGuard, kRealm } = require('./symbols') +const { webidl } = require('./webidl') +const { FormData } = require('./formdata') const { kHeadersList } = require('../core/symbols') const assert = require('assert') +const { types } = require('util') + +const ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream // https://fetch.spec.whatwg.org/#response-class class Response { @@ -35,18 +45,53 @@ class Response { return responseObject } + // https://fetch.spec.whatwg.org/#dom-response-json + static json (data, init = {}) { + if (arguments.length === 0) { + throw new TypeError( + 'Failed to execute \'json\' on \'Response\': 1 argument required, but 0 present.' + ) + } + + if (init !== null) { + init = webidl.converters.ResponseInit(init) + } + + // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data. + const bytes = new TextEncoder('utf-8').encode( + serializeJavascriptValueToJSONString(data) + ) + + // 2. Let body be the result of extracting bytes. + const body = extractBody(bytes) + + // 3. Let responseObject be the result of creating a Response object, given a new response, + // "response", and this’s relevant Realm. + const relevantRealm = { settingsObject: {} } + const responseObject = new Response() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kGuard] = 'response' + responseObject[kHeaders][kRealm] = relevantRealm + + // 4. Perform initialize a response given responseObject, init, and (body, "application/json"). + initializeResponse(responseObject, init, { body: body[0], type: 'application/json' }) + + // 5. Return responseObject. + return responseObject + } + // Creates a redirect Response that redirects to url with status status. - static redirect (...args) { + static redirect (url, status = 302) { const relevantRealm = { settingsObject: {} } - if (args.length < 1) { + if (arguments.length < 1) { throw new TypeError( - `Failed to execute 'redirect' on 'Response': 1 argument required, but only ${args.length} present.` + `Failed to execute 'redirect' on 'Response': 1 argument required, but only ${arguments.length} present.` ) } - const status = args.length >= 2 ? args[1] : 302 - const url = toUSVString(args[0]) + url = webidl.converters.USVString(url) + status = webidl.converters['unsigned short'](status) // 1. Let parsedURL be the result of parsing url with current settings // object’s API base URL. @@ -81,58 +126,27 @@ class Response { const value = parsedURL.toString() // 7. Append `Location`/value to responseObject’s response’s header list. - responseObject[kState].headersList.push('location', value) + responseObject[kState].headersList.append('location', value) // 8. Return responseObject. return responseObject } // https://fetch.spec.whatwg.org/#dom-response - constructor (...args) { - if ( - args.length >= 1 && - typeof args[1] !== 'object' && - args[1] !== undefined - ) { - throw new TypeError( - "Failed to construct 'Request': cannot convert to dictionary." - ) + constructor (body = null, init = {}) { + if (body !== null) { + body = webidl.converters.BodyInit(body) } - const body = args.length >= 1 ? args[0] : null - const init = args.length >= 2 ? args[1] ?? {} : {} + init = webidl.converters.ResponseInit(init) // TODO this[kRealm] = { settingsObject: {} } - // 1. If init["status"] is not in the range 200 to 599, inclusive, then - // throw a RangeError. - if ('status' in init && init.status !== undefined) { - if (!Number.isFinite(init.status)) { - throw new TypeError() - } - - if (init.status < 200 || init.status > 599) { - throw new RangeError( - `Failed to construct 'Response': The status provided (${init.status}) is outside the range [200, 599].` - ) - } - } - - if ('statusText' in init && init.statusText !== undefined) { - // 2. If init["statusText"] does not match the reason-phrase token - // production, then throw a TypeError. - // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2: - // reason-phrase = *( HTAB / SP / VCHAR / obs-text ) - if (!isValidReasonPhrase(String(init.statusText))) { - throw new TypeError('Invalid statusText') - } - } - - // 3. Set this’s response to a new response. + // 1. Set this’s response to a new response. this[kState] = makeResponse({}) - // 4. Set this’s headers to a new Headers object with this’s relevant + // 2. Set this’s headers to a new Headers object with this’s relevant // Realm, whose header list is this’s response’s header list and guard // is "response". this[kHeaders] = new Headers() @@ -140,48 +154,20 @@ class Response { this[kHeaders][kHeadersList] = this[kState].headersList this[kHeaders][kRealm] = this[kRealm] - // 5. Set this’s response’s status to init["status"]. - if ('status' in init && init.status !== undefined) { - this[kState].status = init.status - } + // 3. Let bodyWithType be null. + let bodyWithType = null - // 6. Set this’s response’s status message to init["statusText"]. - if ('statusText' in init && init.statusText !== undefined) { - this[kState].statusText = String(init.statusText) - } - - // 7. If init["headers"] exists, then fill this’s headers with init["headers"]. - if ('headers' in init) { - fill(this[kState].headersList, init.headers) - } - - // 8. If body is non-null, then: + // 4. If body is non-null, then set bodyWithType to the result of extracting body. if (body != null) { - // 1. If init["status"] is a null body status, then throw a TypeError. - if (nullBodyStatus.includes(init.status)) { - throw new TypeError('Response with null body status cannot have body') - } - - // 2. Let Content-Type be null. - // 3. Set this’s response’s body and Content-Type to the result of - // extracting body. - const [extractedBody, contentType] = extractBody(body) - this[kState].body = extractedBody - - // 4. If Content-Type is non-null and this’s response’s header list does - // not contain `Content-Type`, then append `Content-Type`/Content-Type - // to this’s response’s header list. - if (contentType && !this.headers.has('content-type')) { - this.headers.set('content-type', contentType) - } + const [extractedBody, type] = extractBody(body) + bodyWithType = { body: extractedBody, type } } + + // 5. Perform initialize a response given this, init, and bodyWithType. + initializeResponse(this, init, bodyWithType) } get [Symbol.toStringTag] () { - if (!(this instanceof Response)) { - throw new TypeError('Illegal invocation') - } - return this.constructor.name } @@ -279,7 +265,10 @@ class Response { // 1. If this is unusable, then throw a TypeError. if (this.bodyUsed || (this.body && this.body.locked)) { - throw new TypeError() + webidl.errors.exception({ + header: 'Response.clone', + message: 'Body has already been consumed.' + }) } // 2. Let clonedResponse be the result of cloning this’s response. @@ -297,7 +286,8 @@ class Response { return clonedResponseObject } } -mixinBody(Response.prototype) + +mixinBody(Response) Object.defineProperties(Response.prototype, { type: kEnumerableProperty, @@ -350,7 +340,7 @@ function makeResponse (init) { statusText: '', ...init, headersList: init.headersList - ? new HeadersList(...init.headersList) + ? new HeadersList(init.headersList) : new HeadersList(), urlList: init.urlList ? [...init.urlList] : [] } @@ -388,30 +378,6 @@ function makeFilteredResponse (response, state) { }) } -function makeFilteredHeadersList (headersList, filter) { - return new Proxy(headersList, { - get (target, prop) { - // Override methods used by Headers class. - if (prop === 'get' || prop === 'has') { - return (name) => filter(name) ? target[prop](name) : undefined - } else if (prop === 'slice') { - return (...args) => { - assert(args.length === 0) - const arr = [] - for (let index = 0; index < target.length; index += 2) { - if (filter(target[index])) { - arr.push(target[index], target[index + 1]) - } - } - return arr - } - } else { - return target[prop] - } - } - }) -} - // https://fetch.spec.whatwg.org/#concept-filtered-response function filterResponse (response, type) { // Set response to the following filtered response with response as its @@ -421,9 +387,10 @@ function filterResponse (response, type) { // and header list excludes any headers in internal response’s header list // whose name is a forbidden response-header name. + // Note: undici does not implement forbidden response-header names return makeFilteredResponse(response, { type: 'basic', - headersList: makeFilteredHeadersList(response.headersList, (name) => !forbiddenResponseHeaderNames.includes(name)) + headersList: response.headersList }) } else if (type === 'cors') { // A CORS filtered response is a filtered response whose type is "cors" @@ -431,9 +398,10 @@ function filterResponse (response, type) { // list whose name is not a CORS-safelisted response-header name, given // internal response’s CORS-exposed header-name list. + // Note: undici does not implement CORS-safelisted response-header names return makeFilteredResponse(response, { type: 'cors', - headersList: makeFilteredHeadersList(response.headersList, (name) => !corsSafeListedResponseHeaderNames.includes(name)) + headersList: response.headersList }) } else if (type === 'opaque') { // An opaque filtered response is a filtered response whose type is @@ -456,7 +424,7 @@ function filterResponse (response, type) { type: 'opaqueredirect', status: 0, statusText: '', - headersList: makeFilteredHeadersList(response.headersList, () => false), + headersList: [], body: null }) } else { @@ -472,10 +440,137 @@ function makeAppropriateNetworkError (fetchParams) { // 2. Return an aborted network error if fetchParams is aborted; // otherwise return a network error. return isAborted(fetchParams) - ? makeNetworkError(new AbortError()) + ? makeNetworkError(new DOMException('The operation was aborted.', 'AbortError')) : makeNetworkError(fetchParams.controller.terminated.reason) } +// https://whatpr.org/fetch/1392.html#initialize-a-response +function initializeResponse (response, init, body) { + // 1. If init["status"] is not in the range 200 to 599, inclusive, then + // throw a RangeError. + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.') + } + + // 2. If init["statusText"] does not match the reason-phrase token production, + // then throw a TypeError. + if ('statusText' in init && init.statusText != null) { + // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2: + // reason-phrase = *( HTAB / SP / VCHAR / obs-text ) + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError('Invalid statusText') + } + } + + // 3. Set response’s response’s status to init["status"]. + if ('status' in init && init.status != null) { + response[kState].status = init.status + } + + // 4. Set response’s response’s status message to init["statusText"]. + if ('statusText' in init && init.statusText != null) { + response[kState].statusText = init.statusText + } + + // 5. If init["headers"] exists, then fill response’s headers with init["headers"]. + if ('headers' in init && init.headers != null) { + fill(response[kState].headersList, init.headers) + } + + // 6. If body was given, then: + if (body) { + // 1. If response's status is a null body status, then throw a TypeError. + if (nullBodyStatus.includes(response.status)) { + webidl.errors.exception({ + header: 'Response constructor', + message: 'Invalid response status code.' + }) + } + + // 2. Set response's body to body's body. + response[kState].body = body.body + + // 3. If body's type is non-null and response's header list does not contain + // `Content-Type`, then append (`Content-Type`, body's type) to response's header list. + if (body.type != null && !response[kState].headersList.has('Content-Type')) { + response[kState].headersList.append('content-type', body.type) + } + } +} + +webidl.converters.ReadableStream = webidl.interfaceConverter( + ReadableStream +) + +webidl.converters.FormData = webidl.interfaceConverter( + FormData +) + +webidl.converters.URLSearchParams = webidl.interfaceConverter( + URLSearchParams +) + +// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit +webidl.converters.XMLHttpRequestBodyInit = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V) + } + + if (isBlobLike(V)) { + return webidl.converters.Blob(V) + } + + if ( + types.isAnyArrayBuffer(V) || + types.isTypedArray(V) || + types.isDataView(V) + ) { + return webidl.converters.BufferSource(V) + } + + if (V instanceof FormData) { + return webidl.converters.FormData(V) + } + + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V) + } + + return webidl.converters.DOMString(V) +} + +// https://fetch.spec.whatwg.org/#bodyinit +webidl.converters.BodyInit = function (V) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V) + } + + // Note: the spec doesn't include async iterables, + // this is an undici extension. + if (V?.[Symbol.asyncIterator]) { + return V + } + + return webidl.converters.XMLHttpRequestBodyInit(V) +} + +webidl.converters.ResponseInit = webidl.dictionaryConverter([ + { + key: 'status', + converter: webidl.converters['unsigned short'], + defaultValue: 200 + }, + { + key: 'statusText', + converter: webidl.converters.ByteString, + defaultValue: '' + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + } +]) + module.exports = { makeNetworkError, makeResponse, diff --git a/deps/undici/src/lib/fetch/util.js b/deps/undici/src/lib/fetch/util.js index eea3905586d90b..17c68162980f76 100644 --- a/deps/undici/src/lib/fetch/util.js +++ b/deps/undici/src/lib/fetch/util.js @@ -3,6 +3,7 @@ const { redirectStatus } = require('./constants') const { performance } = require('perf_hooks') const { isBlobLike, toUSVString, ReadableStreamFrom } = require('../core/util') +const assert = require('assert') let File @@ -144,6 +145,49 @@ function isValidHTTPToken (characters) { return true } +// https://fetch.spec.whatwg.org/#header-name +// https://github.com/chromium/chromium/blob/b3d37e6f94f87d59e44662d6078f6a12de845d17/net/http/http_util.cc#L342 +function isValidHeaderName (potentialValue) { + if (potentialValue.length === 0) { + return false + } + + for (const char of potentialValue) { + if (!isValidHTTPToken(char)) { + return false + } + } + + return true +} + +/** + * @see https://fetch.spec.whatwg.org/#header-value + * @param {string} potentialValue + */ +function isValidHeaderValue (potentialValue) { + // - Has no leading or trailing HTTP tab or space bytes. + // - Contains no 0x00 (NUL) or HTTP newline bytes. + if ( + potentialValue.startsWith('\t') || + potentialValue.startsWith(' ') || + potentialValue.endsWith('\t') || + potentialValue.endsWith(' ') + ) { + return false + } + + if ( + potentialValue.includes('\0') || + potentialValue.includes('\r') || + potentialValue.includes('\n') + ) { + return false + } + + return true +} + // https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect function setRequestReferrerPolicyOnRedirect (request, actualResponse) { // Given a request request and a response actualResponse, this algorithm @@ -316,12 +360,6 @@ function sameOrigin (A, B) { return false } -// https://fetch.spec.whatwg.org/#corb-check -function CORBCheck (request, response) { - // TODO - return 'allowed' -} - function createDeferredPromise () { let res let rej @@ -349,6 +387,55 @@ function normalizeMethod (method) { : method } +// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string +function serializeJavascriptValueToJSONString (value) { + // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »). + const result = JSON.stringify(value) + + // 2. If result is undefined, then throw a TypeError. + if (result === undefined) { + throw new TypeError('Value is not JSON serializable') + } + + // 3. Assert: result is a string. + assert(typeof result === 'string') + + // 4. Return result. + return result +} + +// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object +const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())) + +// https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object +function makeIterator (iterator, name) { + const i = { + next () { + if (Object.getPrototypeOf(this) !== i) { + throw new TypeError( + `'next' called on an object that does not implement interface ${name} Iterator.` + ) + } + + return iterator.next() + }, + // The class string of an iterator prototype object for a given interface is the + // result of concatenating the identifier of the interface and the string " Iterator". + [Symbol.toStringTag]: `${name} Iterator` + } + + // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%. + Object.setPrototypeOf(i, esIteratorPrototype) + // esIteratorPrototype needs to be the prototype of i + // which is the prototype of an empty object. Yes, it's confusing. + return Object.setPrototypeOf({}, i) +} + +/** + * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0. + */ +const hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)) + module.exports = { isAborted, isCancelled, @@ -377,6 +464,10 @@ module.exports = { isFileLike, isValidReasonPhrase, sameOrigin, - CORBCheck, - normalizeMethod + normalizeMethod, + serializeJavascriptValueToJSONString, + makeIterator, + isValidHeaderName, + isValidHeaderValue, + hasOwn } diff --git a/deps/undici/src/lib/fetch/webidl.js b/deps/undici/src/lib/fetch/webidl.js new file mode 100644 index 00000000000000..f9a780ccaa74b6 --- /dev/null +++ b/deps/undici/src/lib/fetch/webidl.js @@ -0,0 +1,595 @@ +'use strict' + +const { types } = require('util') +const { hasOwn, toUSVString } = require('./util') + +const webidl = {} +webidl.converters = {} +webidl.util = {} +webidl.errors = {} + +/** + * + * @param {{ + * header: string + * message: string + * }} message + */ +webidl.errors.exception = function (message) { + throw new TypeError(`${message.header}: ${message.message}`) +} + +/** + * Throw an error when conversion from one type to another has failed + * @param {{ + * prefix: string + * argument: string + * types: string[] + * }} context + */ +webidl.errors.conversionFailed = function (context) { + const plural = context.types.length === 1 ? '' : ' one of' + const message = + `${context.argument} could not be converted to` + + `${plural}: ${context.types.join(', ')}.` + + return webidl.errors.exception({ + header: context.prefix, + message + }) +} + +/** + * Throw an error when an invalid argument is provided + * @param {{ + * prefix: string + * value: string + * type: string + * }} context + */ +webidl.errors.invalidArgument = function (context) { + return webidl.errors.exception({ + header: context.prefix, + message: `"${context.value}" is an invalid ${context.type}.` + }) +} + +// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values +webidl.util.Type = function (V) { + switch (typeof V) { + case 'undefined': return 'Undefined' + case 'boolean': return 'Boolean' + case 'string': return 'String' + case 'symbol': return 'Symbol' + case 'number': return 'Number' + case 'bigint': return 'BigInt' + case 'function': + case 'object': { + if (V === null) { + return 'Null' + } + + return 'Object' + } + } +} + +// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint +webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) { + let upperBound + let lowerBound + + // 1. If bitLength is 64, then: + if (bitLength === 64) { + // 1. Let upperBound be 2^53 − 1. + upperBound = Math.pow(2, 53) - 1 + + // 2. If signedness is "unsigned", then let lowerBound be 0. + if (signedness === 'unsigned') { + lowerBound = 0 + } else { + // 3. Otherwise let lowerBound be −2^53 + 1. + lowerBound = Math.pow(-2, 53) + 1 + } + } else if (signedness === 'unsigned') { + // 2. Otherwise, if signedness is "unsigned", then: + + // 1. Let lowerBound be 0. + lowerBound = 0 + + // 2. Let upperBound be 2^bitLength − 1. + upperBound = Math.pow(2, bitLength) - 1 + } else { + // 3. Otherwise: + + // 1. Let lowerBound be -2^bitLength − 1. + lowerBound = Math.pow(-2, bitLength) - 1 + + // 2. Let upperBound be 2^bitLength − 1 − 1. + upperBound = Math.pow(2, bitLength - 1) - 1 + } + + // 4. Let x be ? ToNumber(V). + let x = Number(V) + + // 5. If x is −0, then set x to +0. + if (Object.is(-0, x)) { + x = 0 + } + + // 6. If the conversion is to an IDL type associated + // with the [EnforceRange] extended attribute, then: + if (opts.enforceRange === true) { + // 1. If x is NaN, +∞, or −∞, then throw a TypeError. + if ( + Number.isNaN(x) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + webidl.errors.exception({ + header: 'Integer conversion', + message: `Could not convert ${V} to an integer.` + }) + } + + // 2. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x) + + // 3. If x < lowerBound or x > upperBound, then + // throw a TypeError. + if (x < lowerBound || x > upperBound) { + webidl.errors.exception({ + header: 'Integer conversion', + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }) + } + + // 4. Return x. + return x + } + + // 7. If x is not NaN and the conversion is to an IDL + // type associated with the [Clamp] extended + // attribute, then: + if (!Number.isNaN(x) && opts.clamp === true) { + // 1. Set x to min(max(x, lowerBound), upperBound). + x = Math.min(Math.max(x, lowerBound), upperBound) + + // 2. Round x to the nearest integer, choosing the + // even integer if it lies halfway between two, + // and choosing +0 rather than −0. + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x) + } else { + x = Math.ceil(x) + } + + // 3. Return x. + return x + } + + // 8. If x is NaN, +0, +∞, or −∞, then return +0. + if ( + Number.isNaN(x) || + Object.is(0, x) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + return 0 + } + + // 9. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x) + + // 10. Set x to x modulo 2^bitLength. + x = x % Math.pow(2, bitLength) + + // 11. If signedness is "signed" and x ≥ 2^bitLength − 1, + // then return x − 2^bitLength. + if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength) + } + + // 12. Otherwise, return x. + return x +} + +// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart +webidl.util.IntegerPart = function (n) { + // 1. Let r be floor(abs(n)). + const r = Math.floor(Math.abs(n)) + + // 2. If n < 0, then return -1 × r. + if (n < 0) { + return -1 * r + } + + // 3. Otherwise, return r. + return r +} + +// https://webidl.spec.whatwg.org/#es-sequence +webidl.sequenceConverter = function (converter) { + return (V) => { + // 1. If Type(V) is not Object, throw a TypeError. + if (webidl.util.Type(V) !== 'Object') { + webidl.errors.exception({ + header: 'Sequence', + message: `Value of type ${webidl.util.Type(V)} is not an Object.` + }) + } + + // 2. Let method be ? GetMethod(V, @@iterator). + /** @type {Generator} */ + const method = V?.[Symbol.iterator]?.() + const seq = [] + + // 3. If method is undefined, throw a TypeError. + if ( + method === undefined || + typeof method.next !== 'function' + ) { + webidl.errors.exception({ + header: 'Sequence', + message: 'Object is not an iterator.' + }) + } + + // https://webidl.spec.whatwg.org/#create-sequence-from-iterable + while (true) { + const { done, value } = method.next() + + if (done) { + break + } + + seq.push(converter(value)) + } + + return seq + } +} + +webidl.recordConverter = function (keyConverter, valueConverter) { + return (V) => { + const record = {} + const type = webidl.util.Type(V) + + if (type === 'Undefined' || type === 'Null') { + return record + } + + if (type !== 'Object') { + webidl.errors.exception({ + header: 'Record', + message: `Expected ${V} to be an Object type.` + }) + } + + for (let [key, value] of Object.entries(V)) { + key = keyConverter(key) + value = valueConverter(value) + + record[key] = value + } + + return record + } +} + +webidl.interfaceConverter = function (i) { + return (V, opts = {}) => { + if (opts.strict !== false && !(V instanceof i)) { + webidl.errors.exception({ + header: i.name, + message: `Expected ${V} to be an instance of ${i.name}.` + }) + } + + return V + } +} + +/** + * @param {{ + * key: string, + * defaultValue?: any, + * required?: boolean, + * converter: (...args: unknown[]) => unknown, + * allowedValues?: any[] + * }[]} converters + * @returns + */ +webidl.dictionaryConverter = function (converters) { + return (dictionary) => { + const type = webidl.util.Type(dictionary) + const dict = {} + + if (type !== 'Null' && type !== 'Undefined' && type !== 'Object') { + webidl.errors.exception({ + header: 'Dictionary', + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }) + } + + for (const options of converters) { + const { key, defaultValue, required, converter } = options + + if (required === true) { + if (!hasOwn(dictionary, key)) { + webidl.errors.exception({ + header: 'Dictionary', + message: `Missing required key "${key}".` + }) + } + } + + let value = dictionary[key] + const hasDefault = hasOwn(options, 'defaultValue') + + // Only use defaultValue if value is undefined and + // a defaultValue options was provided. + if (hasDefault && value !== null) { + value = value ?? defaultValue + } + + // A key can be optional and have no default value. + // When this happens, do not perform a conversion, + // and do not assign the key a value. + if (required || hasDefault || value !== undefined) { + value = converter(value) + + if ( + options.allowedValues && + !options.allowedValues.includes(value) + ) { + webidl.errors.exception({ + header: 'Dictionary', + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.` + }) + } + + dict[key] = value + } + } + + return dict + } +} + +webidl.nullableConverter = function (converter) { + return (V) => { + if (V === null) { + return V + } + + return converter(V) + } +} + +// https://webidl.spec.whatwg.org/#es-DOMString +webidl.converters.DOMString = function (V, opts = {}) { + // 1. If V is null and the conversion is to an IDL type + // associated with the [LegacyNullToEmptyString] + // extended attribute, then return the DOMString value + // that represents the empty string. + if (V === null && opts.legacyNullToEmptyString) { + return '' + } + + // 2. Let x be ? ToString(V). + if (typeof V === 'symbol') { + throw new TypeError('Could not convert argument of type symbol to string.') + } + + // 3. Return the IDL DOMString value that represents the + // same sequence of code units as the one the + // ECMAScript String value x represents. + return String(V) +} + +// eslint-disable-next-line no-control-regex +const isNotLatin1 = /[^\u0000-\u00ff]/ + +// https://webidl.spec.whatwg.org/#es-ByteString +webidl.converters.ByteString = function (V) { + // 1. Let x be ? ToString(V). + // Note: DOMString converter perform ? ToString(V) + const x = webidl.converters.DOMString(V) + + // 2. If the value of any element of x is greater than + // 255, then throw a TypeError. + if (isNotLatin1.test(x)) { + throw new TypeError('Argument is not a ByteString') + } + + // 3. Return an IDL ByteString value whose length is the + // length of x, and where the value of each element is + // the value of the corresponding element of x. + return x +} + +// https://webidl.spec.whatwg.org/#es-USVString +// TODO: ensure that util.toUSVString follows webidl spec +webidl.converters.USVString = toUSVString + +// https://webidl.spec.whatwg.org/#es-boolean +webidl.converters.boolean = function (V) { + // 1. Let x be the result of computing ToBoolean(V). + const x = Boolean(V) + + // 2. Return the IDL boolean value that is the one that represents + // the same truth value as the ECMAScript Boolean value x. + return x +} + +// https://webidl.spec.whatwg.org/#es-any +webidl.converters.any = function (V) { + return V +} + +// https://webidl.spec.whatwg.org/#es-long-long +webidl.converters['long long'] = function (V, opts) { + // 1. Let x be ? ConvertToInt(V, 64, "signed"). + const x = webidl.util.ConvertToInt(V, 64, 'signed', opts) + + // 2. Return the IDL long long value that represents + // the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-short +webidl.converters['unsigned short'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 16, "unsigned"). + const x = webidl.util.ConvertToInt(V, 16, 'unsigned') + + // 2. Return the IDL unsigned short value that represents + // the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#idl-ArrayBuffer +webidl.converters.ArrayBuffer = function (V, opts = {}) { + // 1. If Type(V) is not Object, or V does not have an + // [[ArrayBufferData]] internal slot, then throw a + // TypeError. + // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances + // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances + if ( + webidl.util.Type(V) !== 'Object' || + !types.isAnyArrayBuffer(V) + ) { + webidl.errors.conversionFailed({ + prefix: `${V}`, + argument: `${V}`, + types: ['ArrayBuffer'] + }) + } + + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V) is true, then throw a + // TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { + webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V) is true, then throw a + // TypeError. + // Note: resizable ArrayBuffers are currently a proposal. + + // 4. Return the IDL ArrayBuffer value that is a + // reference to the same object as V. + return V +} + +webidl.converters.TypedArray = function (V, T, opts = {}) { + // 1. Let T be the IDL type V is being converted to. + + // 2. If Type(V) is not Object, or V does not have a + // [[TypedArrayName]] internal slot with a value + // equal to T’s name, then throw a TypeError. + if ( + webidl.util.Type(V) !== 'Object' || + !types.isTypedArray(V) || + V.constructor.name !== T.name + ) { + webidl.errors.conversionFailed({ + prefix: `${T.name}`, + argument: `${V}`, + types: [T.name] + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 4. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + // Note: resizable array buffers are currently a proposal + + // 5. Return the IDL value of type T that is a reference + // to the same object as V. + return V +} + +webidl.converters.DataView = function (V, opts = {}) { + // 1. If Type(V) is not Object, or V does not have a + // [[DataView]] internal slot, then throw a TypeError. + if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) { + webidl.errors.exception({ + header: 'DataView', + message: 'Object is not a DataView.' + }) + } + + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true, + // then throw a TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + // Note: resizable ArrayBuffers are currently a proposal + + // 4. Return the IDL DataView value that is a reference + // to the same object as V. + return V +} + +// https://webidl.spec.whatwg.org/#BufferSource +webidl.converters.BufferSource = function (V, opts = {}) { + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, opts) + } + + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor) + } + + if (types.isDataView(V)) { + return webidl.converters.DataView(V, opts) + } + + throw new TypeError(`Could not convert ${V} to a BufferSource.`) +} + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.ByteString +) + +webidl.converters['sequence>'] = webidl.sequenceConverter( + webidl.converters['sequence'] +) + +webidl.converters['record'] = webidl.recordConverter( + webidl.converters.ByteString, + webidl.converters.ByteString +) + +module.exports = { + webidl +} diff --git a/deps/undici/src/lib/global.js b/deps/undici/src/lib/global.js new file mode 100644 index 00000000000000..18bfd73cc9283e --- /dev/null +++ b/deps/undici/src/lib/global.js @@ -0,0 +1,32 @@ +'use strict' + +// We include a version number for the Dispatcher API. In case of breaking changes, +// this version number must be increased to avoid conflicts. +const globalDispatcher = Symbol.for('undici.globalDispatcher.1') +const { InvalidArgumentError } = require('./core/errors') +const Agent = require('./agent') + +if (getGlobalDispatcher() === undefined) { + setGlobalDispatcher(new Agent()) +} + +function setGlobalDispatcher (agent) { + if (!agent || typeof agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument agent must implement Agent') + } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }) +} + +function getGlobalDispatcher () { + return globalThis[globalDispatcher] +} + +module.exports = { + setGlobalDispatcher, + getGlobalDispatcher +} diff --git a/deps/undici/src/lib/handler/redirect.js b/deps/undici/src/lib/handler/redirect.js index 32f74ffa3810cc..a464e052dc7038 100644 --- a/deps/undici/src/lib/handler/redirect.js +++ b/deps/undici/src/lib/handler/redirect.js @@ -99,7 +99,7 @@ class RedirectHandler { return this.handler.onHeaders(statusCode, headers, resume, statusText) } - const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin)) + const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))) const path = search ? `${pathname}${search}` : pathname // Remove headers referring to the original URL. @@ -186,7 +186,8 @@ function shouldRemoveHeader (header, removeContent, unknownOrigin) { return ( (header.length === 4 && header.toString().toLowerCase() === 'host') || (removeContent && header.toString().toLowerCase().indexOf('content-') === 0) || - (unknownOrigin && header.length === 13 && header.toString().toLowerCase() === 'authorization') + (unknownOrigin && header.length === 13 && header.toString().toLowerCase() === 'authorization') || + (unknownOrigin && header.length === 6 && header.toString().toLowerCase() === 'cookie') ) } diff --git a/deps/undici/src/lib/llhttp/llhttp.wasm b/deps/undici/src/lib/llhttp/llhttp.wasm index 3f596bb7544d53..f5128ec5088b83 100755 Binary files a/deps/undici/src/lib/llhttp/llhttp.wasm and b/deps/undici/src/lib/llhttp/llhttp.wasm differ diff --git a/deps/undici/src/lib/llhttp/llhttp.wasm.js b/deps/undici/src/lib/llhttp/llhttp.wasm.js index 753bbc9b44fd10..a6223047be0ab8 100644 --- a/deps/undici/src/lib/llhttp/llhttp.wasm.js +++ b/deps/undici/src/lib/llhttp/llhttp.wasm.js @@ -1 +1 @@ -module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzk4AwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAYGAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAAMEBQFwAQ4OBQMBAAIGCAF/AUGgtwQLB/UEHwZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAJGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAKGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQA1DGxsaHR0cF9hbGxvYwAMBm1hbGxvYwA6C2xsaHR0cF9mcmVlAA0EZnJlZQA8D2xsaHR0cF9nZXRfdHlwZQAOFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAPFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAQEWxsaHR0cF9nZXRfbWV0aG9kABEWbGxodHRwX2dldF9zdGF0dXNfY29kZQASEmxsaHR0cF9nZXRfdXBncmFkZQATDGxsaHR0cF9yZXNldAAUDmxsaHR0cF9leGVjdXRlABUUbGxodHRwX3NldHRpbmdzX2luaXQAFg1sbGh0dHBfZmluaXNoABcMbGxodHRwX3BhdXNlABgNbGxodHRwX3Jlc3VtZQAZG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAaEGxsaHR0cF9nZXRfZXJybm8AGxdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAcF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uAB0UbGxodHRwX2dldF9lcnJvcl9wb3MAHhFsbGh0dHBfZXJybm9fbmFtZQAfEmxsaHR0cF9tZXRob2RfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mADMJEwEAQQELDQECAwQFCwYHLiooJCYK56QCOAIACwgAEIiAgIAACxkAIAAQtoCAgAAaIAAgAjYCNCAAIAE6ACgLHAAgACAALwEyIAAtAC4gABC1gICAABCAgICAAAspAQF/QTgQuoCAgAAiARC2gICAABogAUGAiICAADYCNCABIAA6ACggAQsKACAAELyAgIAACwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BMgsHACAALQAuC0UBBH8gACgCGCEBIAAtAC0hAiAALQAoIQMgACgCNCEEIAAQtoCAgAAaIAAgBDYCNCAAIAM6ACggACACOgAtIAAgATYCGAsRACAAIAEgASACahC3gICAAAtFACAAQgA3AgAgAEEwakIANwIAIABBKGpCADcCACAAQSBqQgA3AgAgAEEYakIANwIAIABBEGpCADcCACAAQQhqQgA3AgALZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI0IgFFDQAgASgCHCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQv4CAgAAACyAAQa+RgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQbSTgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBGUkNABC/gICAAAALIABBAnRB6JqAgABqKAIACyIAAkAgAEEuSQ0AEL+AgIAAAAsgAEECdEHMm4CAAGooAgALFgAgACAALQAtQf4BcSABQQBHcjoALQsZACAAIAAtAC1B/QFxIAFBAEdBAXRyOgAtCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI0IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZyOgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIoIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCNCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEHSioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCLCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBjZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAjAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI0IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcOQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAI0IgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAhQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCHCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB0oiAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAiAiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL9AEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARBCHENAAJAIARBgARxRQ0AAkAgAC0AKEEBRw0AQQUhBSAALQAtQQJxRQ0CC0EEDwsCQCAEQSBxDQACQCAALQAoQQFGDQAgAC8BMiIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQBBBCEFIARBiARxQYAERg0CIARBKHFFDQILQQAPC0EAQQMgACkDIFAbIQULIAULXQECf0EAIQECQCAALQAoQQFGDQAgAC8BMiICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6IBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMiIFQZx/akHkAEkNACAFQcwBRg0AIAVBsAJGDQAgBEHAAHENAEEAIQMgBEGIBHFBgARGDQAgBEEocUEARyEDCyAAQQA7ATAgAEEAOgAvIAMLlAEBAn8CQAJAAkAgAC0AKkUNACAALQArRQ0AQQAhASAALwEwIgJBAnFFDQEMAgtBACEBIAAvATAiAkEBcUUNAQtBASEBIAAtAChBAUYNACAALwEyIgBBnH9qQeQASQ0AIABBzAFGDQAgAEGwAkYNACACQcAAcQ0AQQAhASACQYgEcUGABEYNACACQShxQQBHIQELIAELTwAgAEEYakIANwMAIABCADcDACAAQTBqQgA3AwAgAEEoakIANwMAIABBIGpCADcDACAAQRBqQgA3AwAgAEEIakIANwMAIABBuAE2AhxBAAt7AQF/AkAgACgCDCIDDQACQCAAKAIERQ0AIAAgATYCBAsCQCAAIAEgAhC4gICAACIDDQAgACgCDA8LIAAgAzYCHEEAIQMgACgCBCIBRQ0AIAAgASACIAAoAggRgYCAgAAAIgFFDQAgACACNgIUIAAgATYCDCABIQMLIAML8soBAxl/A34FfyOAgICAAEEQayIDJICAgIAAIAEhBCABIQUgASEGIAEhByABIQggASEJIAEhCiABIQsgASEMIAEhDSABIQ4gASEPIAEhECABIREgASESIAEhEyABIRQgASEVIAEhFiABIRcgASEYIAEhGSABIRoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAhwiG0F/ag64AbUBAbQBAgMEBQYHCAkKCwwNDg8QuwG6ARESE7MBFBUWFxgZGhscHR4fICGyAbEBIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5OrYBOzw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BALcBC0EAIRsMrwELQRAhGwyuAQtBDyEbDK0BC0ERIRsMrAELQRIhGwyrAQtBFSEbDKoBC0EWIRsMqQELQRchGwyoAQtBGCEbDKcBC0EZIRsMpgELQQghGwylAQtBGiEbDKQBC0EbIRsMowELQRQhGwyiAQtBEyEbDKEBC0EcIRsMoAELQR0hGwyfAQtBHiEbDJ4BC0EfIRsMnQELQaoBIRsMnAELQasBIRsMmwELQSEhGwyaAQtBIiEbDJkBC0EjIRsMmAELQSQhGwyXAQtBJSEbDJYBC0GtASEbDJUBC0EmIRsMlAELQSohGwyTAQtBDiEbDJIBC0EnIRsMkQELQSghGwyQAQtBKSEbDI8BC0EuIRsMjgELQSshGwyNAQtBrgEhGwyMAQtBDSEbDIsBC0EMIRsMigELQS8hGwyJAQtBCyEbDIgBC0EsIRsMhwELQS0hGwyGAQtBCiEbDIUBC0ExIRsMhAELQTAhGwyDAQtBCSEbDIIBC0EgIRsMgQELQTIhGwyAAQtBMyEbDH8LQTQhGwx+C0E1IRsMfQtBNiEbDHwLQTchGwx7C0E4IRsMegtBOSEbDHkLQTohGwx4C0GsASEbDHcLQTshGwx2C0E8IRsMdQtBPSEbDHQLQT4hGwxzC0E/IRsMcgtBwAAhGwxxC0HBACEbDHALQcIAIRsMbwtBwwAhGwxuC0HEACEbDG0LQQchGwxsC0HFACEbDGsLQQYhGwxqC0HGACEbDGkLQQUhGwxoC0HHACEbDGcLQQQhGwxmC0HIACEbDGULQckAIRsMZAtBygAhGwxjC0HLACEbDGILQQMhGwxhC0HMACEbDGALQc0AIRsMXwtBzgAhGwxeC0HQACEbDF0LQc8AIRsMXAtB0QAhGwxbC0HSACEbDFoLQQIhGwxZC0HTACEbDFgLQdQAIRsMVwtB1QAhGwxWC0HWACEbDFULQdcAIRsMVAtB2AAhGwxTC0HZACEbDFILQdoAIRsMUQtB2wAhGwxQC0HcACEbDE8LQd0AIRsMTgtB3gAhGwxNC0HfACEbDEwLQeAAIRsMSwtB4QAhGwxKC0HiACEbDEkLQeMAIRsMSAtB5AAhGwxHC0HlACEbDEYLQeYAIRsMRQtB5wAhGwxEC0HoACEbDEMLQekAIRsMQgtB6gAhGwxBC0HrACEbDEALQewAIRsMPwtB7QAhGww+C0HuACEbDD0LQe8AIRsMPAtB8AAhGww7C0HxACEbDDoLQfIAIRsMOQtB8wAhGww4C0H0ACEbDDcLQfUAIRsMNgtB9gAhGww1C0H3ACEbDDQLQfgAIRsMMwtB+QAhGwwyC0H6ACEbDDELQfsAIRsMMAtB/AAhGwwvC0H9ACEbDC4LQf4AIRsMLQtB/wAhGwwsC0GAASEbDCsLQYEBIRsMKgtBggEhGwwpC0GDASEbDCgLQYQBIRsMJwtBhQEhGwwmC0GGASEbDCULQYcBIRsMJAtBiAEhGwwjC0GJASEbDCILQYoBIRsMIQtBiwEhGwwgC0GMASEbDB8LQY0BIRsMHgtBjgEhGwwdC0GPASEbDBwLQZABIRsMGwtBkQEhGwwaC0GSASEbDBkLQZMBIRsMGAtBlAEhGwwXC0GVASEbDBYLQZYBIRsMFQtBlwEhGwwUC0GYASEbDBMLQZkBIRsMEgtBnQEhGwwRC0GaASEbDBALQQEhGwwPC0GbASEbDA4LQZwBIRsMDQtBngEhGwwMC0GgASEbDAsLQZ8BIRsMCgtBoQEhGwwJC0GiASEbDAgLQaMBIRsMBwtBpAEhGwwGC0GlASEbDAULQaYBIRsMBAtBpwEhGwwDC0GoASEbDAILQakBIRsMAQtBrwEhGwsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgGw6wAQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGx0fICEkJSYnKCkqKy0uLzAxNzg6Oz5BQ0RFRkdISUpLTE1OT1BRUlNUVVdZW15fYGJkZWZnaGlqbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHcAeIB4wHnAfYBwwLDAgsgASIEIAJHDcQBQbgBIRsMkgMLIAEiGyACRw2zAUGoASEbDJEDCyABIgEgAkcNaUHeACEbDJADCyABIgEgAkcNX0HWACEbDI8DCyABIgEgAkcNWEHRACEbDI4DCyABIgEgAkcNVEHPACEbDI0DCyABIgEgAkcNUUHNACEbDIwDCyABIgEgAkcNTkHLACEbDIsDCyABIgEgAkcNEUEMIRsMigMLIAEiASACRw01QTQhGwyJAwsgASIBIAJHDTFBMSEbDIgDCyABIhogAkcNKEEuIRsMhwMLIAEiASACRw0mQSwhGwyGAwsgASIBIAJHDSRBKyEbDIUDCyABIgEgAkcNHUEiIRsMhAMLIAAtAC5BAUYN/AIMyAELIAAgASIBIAIQtICAgABBAUcNtQEMtgELIAAgASIBIAIQrYCAgAAiGw22ASABIQEMtgILAkAgASIBIAJHDQBBBiEbDIEDCyAAIAFBAWoiASACELCAgIAAIhsNtwEgASEBDA8LIABCADcDIEEUIRsM9AILIAEiGyACRw0JQQ8hGwz+AgsCQCABIgEgAkYNACABQQFqIQFBEiEbDPMCC0EHIRsM/QILIABCACAAKQMgIhwgAiABIhtrrSIdfSIeIB4gHFYbNwMgIBwgHVYiH0UNtAFBCCEbDPwCCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEWIRsM8QILQQkhGwz7AgsgASEBIAApAyBQDbMBIAEhAQyzAgsCQCABIgEgAkcNAEELIRsM+gILIAAgAUEBaiIBIAIQr4CAgAAiGw2zASABIQEMswILA0ACQCABLQAAQZCdgIAAai0AACIbQQFGDQAgG0ECRw21ASABQQFqIQEMAwsgAUEBaiIBIAJHDQALQQwhGwz4AgsCQCABIgEgAkcNAEENIRsM+AILAkACQCABLQAAIhtBc2oOFAG3AbcBtwG3AbcBtwG3AbcBtwG3AbcBtwG3AbcBtwG3AbcBtwEAtQELIAFBAWohAQy1AQsgAUEBaiEBC0EZIRsM6wILAkAgASIbIAJHDQBBDiEbDPYCC0IAIRwgGyEBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAbLQAAQVBqDjfJAcgBAAECAwQFBgfEAsQCxALEAsQCxALEAggJCgsMDcQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxAIODxAREhPEAgtCAiEcDMgBC0IDIRwMxwELQgQhHAzGAQtCBSEcDMUBC0IGIRwMxAELQgchHAzDAQtCCCEcDMIBC0IJIRwMwQELQgohHAzAAQtCCyEcDL8BC0IMIRwMvgELQg0hHAy9AQtCDiEcDLwBC0IPIRwMuwELQgohHAy6AQtCCyEcDLkBC0IMIRwMuAELQg0hHAy3AQtCDiEcDLYBC0IPIRwMtQELQgAhHAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgGy0AAEFQag43yAHHAQABAgMEBQYHyQHJAckByQHJAckByQEICQoLDA3JAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckBDg8QERITyQELQgIhHAzHAQtCAyEcDMYBC0IEIRwMxQELQgUhHAzEAQtCBiEcDMMBC0IHIRwMwgELQgghHAzBAQtCCSEcDMABC0IKIRwMvwELQgshHAy+AQtCDCEcDL0BC0INIRwMvAELQg4hHAy7AQtCDyEcDLoBC0IKIRwMuQELQgshHAy4AQtCDCEcDLcBC0INIRwMtgELQg4hHAy1AQtCDyEcDLQBCyAAQgAgACkDICIcIAIgASIba60iHX0iHiAeIBxWGzcDICAcIB1WIh9FDbUBQREhGwzzAgsCQCABIgEgAkYNACAAQYmAgIAANgIIIAAgATYCBCABIQFBHCEbDOgCC0ESIRsM8gILIAAgASIbIAIQsoCAgABBf2oOBacBAKgCAbQBtQELQRMhGwzlAgsgAEEBOgAvIBshAQzuAgsgASIBIAJHDbUBQRYhGwzuAgsgASIYIAJHDRpBNSEbDO0CCwJAIAEiASACRw0AQRohGwztAgsgAEEANgIEIABBioCAgAA2AgggACABIAEQqoCAgAAiGw23ASABIQEMugELAkAgASIbIAJHDQBBGyEbDOwCCwJAIBstAAAiAUEgRw0AIBtBAWohAQwbCyABQQlHDbcBIBtBAWohAQwaCwJAIAEiASACRg0AIAFBAWohAQwVC0EcIRsM6gILAkAgASIbIAJHDQBBHSEbDOoCCwJAIBstAAAiAUEJRw0AIBshAQzWAgsgAUEgRw22ASAbIQEM1QILAkAgASIBIAJHDQBBHiEbDOkCCyABLQAAQQpHDbkBIAFBAWohAQymAgsCQCABIhkgAkcNAEEgIRsM6AILIBktAABBdmoOBLwBugG6AbkBugELA0ACQCABLQAAIhtBIEYNAAJAIBtBdmoOBADDAcMBAMEBCyABIQEMyQELIAFBAWoiASACRw0AC0EiIRsM5gILQSMhGyABIiAgAkYN5QIgAiAgayAAKAIAIiFqISIgICEjICEhAQJAA0AgIy0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUGQn4CAAGotAABHDQEgAUEDRg3WAiABQQFqIQEgI0EBaiIjIAJHDQALIAAgIjYCAAzmAgsgAEEANgIAICMhAQzAAQtBJCEbIAEiICACRg3kAiACICBrIAAoAgAiIWohIiAgISMgISEBAkADQCAjLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQZSfgIAAai0AAEcNASABQQhGDcIBIAFBAWohASAjQQFqIiMgAkcNAAsgACAiNgIADOUCCyAAQQA2AgAgIyEBDL8BC0ElIRsgASIgIAJGDeMCIAIgIGsgACgCACIhaiEiICAhIyAhIQECQANAICMtAAAiH0EgciAfIB9Bv39qQf8BcUEaSRtB/wFxIAFB8KWAgABqLQAARw0BIAFBBUYNwgEgAUEBaiEBICNBAWoiIyACRw0ACyAAICI2AgAM5AILIABBADYCACAjIQEMvgELAkAgASIBIAJGDQADQAJAIAEtAABBoKGAgABqLQAAIhtBAUYNACAbQQJGDQsgASEBDMYBCyABQQFqIgEgAkcNAAtBISEbDOMCC0EhIRsM4gILAkAgASIBIAJGDQADQAJAIAEtAAAiG0EgRg0AIBtBdmoOBMIBwwHDAcIBwwELIAFBAWoiASACRw0AC0EpIRsM4gILQSkhGwzhAgsDQAJAIAEtAAAiG0EgRg0AIBtBdmoOBMIBBATCAQQLIAFBAWoiASACRw0AC0ErIRsM4AILA0ACQCABLQAAIhtBIEYNACAbQQlHDQQLIAFBAWoiASACRw0AC0EsIRsM3wILA0ACQCAaLQAAQaChgIAAai0AACIBQQFGDQAgAUECRw3HASAaQQFqIQEMlAILIBpBAWoiGiACRw0AC0EuIRsM3gILIAEhAQzCAQsgASEBDMEBC0EvIRsgASIjIAJGDdsCIAIgI2sgACgCACIgaiEhICMhHyAgIQEDQCAfLQAAQSByIAFBoKOAgABqLQAARw3OAiABQQZGDc0CIAFBAWohASAfQQFqIh8gAkcNAAsgACAhNgIADNsCCwJAIAEiGiACRw0AQTAhGwzbAgsgAEGKgICAADYCCCAAIBo2AgQgGiEBIAAtACxBf2oOBLMBvAG+AcABmgILIAFBAWohAQyyAQsCQCABIgEgAkYNAANAAkAgAS0AACIbQSByIBsgG0G/f2pB/wFxQRpJG0H/AXEiG0EJRg0AIBtBIEYNAAJAAkACQAJAIBtBnX9qDhMAAwMDAwMDAwEDAwMDAwMDAwMCAwsgAUEBaiEBQSchGwzTAgsgAUEBaiEBQSghGwzSAgsgAUEBaiEBQSkhGwzRAgsgASEBDLYBCyABQQFqIgEgAkcNAAtBJiEbDNkCC0EmIRsM2AILAkAgASIBIAJGDQADQAJAIAEtAABBoJ+AgABqLQAAQQFGDQAgASEBDLsBCyABQQFqIgEgAkcNAAtBLSEbDNgCC0EtIRsM1wILAkADQAJAIAEtAABBd2oOGAACxALEAsYCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCAMQCCyABQQFqIgEgAkcNAAtBMSEbDNcCCyABQQFqIQELQSIhGwzKAgsgASIBIAJHDb0BQTMhGwzUAgsDQAJAIAEtAABBsKOAgABqLQAAQQFGDQAgASEBDJYCCyABQQFqIgEgAkcNAAtBNCEbDNMCCyAYLQAAIhtBIEYNmgEgG0E6Rw3GAiAAKAIEIQEgAEEANgIEIAAgASAYEKiAgIAAIgENugEgGEEBaiEBDLwBCyAAIAEgAhCpgICAABoLQQohGwzFAgtBNiEbIAEiIyACRg3PAiACICNrIAAoAgAiIGohISAjIRggICEBAkADQCAYLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQbClgIAAai0AAEcNxAIgAUEFRg0BIAFBAWohASAYQQFqIhggAkcNAAsgACAhNgIADNACCyAAQQA2AgAgAEEBOgAsICMgIGtBBmohAQy9AgtBNyEbIAEiIyACRg3OAiACICNrIAAoAgAiIGohISAjIRggICEBAkADQCAYLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQbalgIAAai0AAEcNwwIgAUEJRg0BIAFBAWohASAYQQFqIhggAkcNAAsgACAhNgIADM8CCyAAQQA2AgAgAEECOgAsICMgIGtBCmohAQy8AgsCQCABIhggAkcNAEE4IRsMzgILAkACQCAYLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwDDAsMCwwLDAsMCAcMCCyAYQQFqIQFBMiEbDMMCCyAYQQFqIQFBMyEbDMICC0E5IRsgASIjIAJGDcwCIAIgI2sgACgCACIgaiEhICMhGCAgIQEDQCAYLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQcClgIAAai0AAEcNwAIgAUEBRg23AiABQQFqIQEgGEEBaiIYIAJHDQALIAAgITYCAAzMAgtBOiEbIAEiIyACRg3LAiACICNrIAAoAgAiIGohISAjIRggICEBAkADQCAYLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQcKlgIAAai0AAEcNwAIgAUEORg0BIAFBAWohASAYQQFqIhggAkcNAAsgACAhNgIADMwCCyAAQQA2AgAgAEEBOgAsICMgIGtBD2ohAQy5AgtBOyEbIAEiIyACRg3KAiACICNrIAAoAgAiIGohISAjIRggICEBAkADQCAYLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQeClgIAAai0AAEcNvwIgAUEPRg0BIAFBAWohASAYQQFqIhggAkcNAAsgACAhNgIADMsCCyAAQQA2AgAgAEEDOgAsICMgIGtBEGohAQy4AgtBPCEbIAEiIyACRg3JAiACICNrIAAoAgAiIGohISAjIRggICEBAkADQCAYLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQfClgIAAai0AAEcNvgIgAUEFRg0BIAFBAWohASAYQQFqIhggAkcNAAsgACAhNgIADMoCCyAAQQA2AgAgAEEEOgAsICMgIGtBBmohAQy3AgsCQCABIhggAkcNAEE9IRsMyQILAkACQAJAAkAgGC0AACIBQSByIAEgAUG/f2pB/wFxQRpJG0H/AXFBnX9qDhMAwALAAsACwALAAsACwALAAsACwALAAsACAcACwALAAgIDwAILIBhBAWohAUE1IRsMwAILIBhBAWohAUE2IRsMvwILIBhBAWohAUE3IRsMvgILIBhBAWohAUE4IRsMvQILAkAgASIBIAJGDQAgAEGLgICAADYCCCAAIAE2AgQgASEBQTkhGwy9AgtBPiEbDMcCCyABIgEgAkcNswFBwAAhGwzGAgtBwQAhGyABIiMgAkYNxQIgAiAjayAAKAIAIiBqISEgIyEfICAhAQJAA0AgHy0AACABQfalgIAAai0AAEcNuAEgAUEBRg0BIAFBAWohASAfQQFqIh8gAkcNAAsgACAhNgIADMYCCyAAQQA2AgAgIyAga0ECaiEBDLMBCwJAIAEiASACRw0AQcMAIRsMxQILIAEtAABBCkcNtwEgAUEBaiEBDLMBCwJAIAEiASACRw0AQcQAIRsMxAILAkACQCABLQAAQXZqDgQBuAG4AQC4AQsgAUEBaiEBQT0hGwy5AgsgAUEBaiEBDLIBCwJAIAEiASACRw0AQcUAIRsMwwILQQAhGwJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4KvwG+AQABAgMEBQYHwAELQQIhGwy+AQtBAyEbDL0BC0EEIRsMvAELQQUhGwy7AQtBBiEbDLoBC0EHIRsMuQELQQghGwy4AQtBCSEbDLcBCwJAIAEiASACRw0AQcYAIRsMwgILIAEtAABBLkcNuAEgAUEBaiEBDIYCCwJAIAEiASACRw0AQccAIRsMwQILQQAhGwJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4KwQHAAQABAgMEBQYHwgELQQIhGwzAAQtBAyEbDL8BC0EEIRsMvgELQQUhGwy9AQtBBiEbDLwBC0EHIRsMuwELQQghGwy6AQtBCSEbDLkBC0HIACEbIAEiIyACRg2/AiACICNrIAAoAgAiIGohISAjIQEgICEfA0AgAS0AACAfQYKmgIAAai0AAEcNvAEgH0EDRg27ASAfQQFqIR8gAUEBaiIBIAJHDQALIAAgITYCAAy/AgtByQAhGyABIiMgAkYNvgIgAiAjayAAKAIAIiBqISEgIyEBICAhHwNAIAEtAAAgH0GGpoCAAGotAABHDbsBIB9BAkYNvQEgH0EBaiEfIAFBAWoiASACRw0ACyAAICE2AgAMvgILQcoAIRsgASIjIAJGDb0CIAIgI2sgACgCACIgaiEhICMhASAgIR8DQCABLQAAIB9BiaaAgABqLQAARw26ASAfQQNGDb0BIB9BAWohHyABQQFqIgEgAkcNAAsgACAhNgIADL0CCwNAAkAgAS0AACIbQSBGDQACQAJAAkAgG0G4f2oOCwABvgG+Ab4BvgG+Ab4BvgG+AQK+AQsgAUEBaiEBQcIAIRsMtQILIAFBAWohAUHDACEbDLQCCyABQQFqIQFBxAAhGwyzAgsgAUEBaiIBIAJHDQALQcsAIRsMvAILAkAgASIBIAJGDQAgACABQQFqIgEgAhClgICAABogASEBQQchGwyxAgtBzAAhGwy7AgsDQAJAIAEtAABBkKaAgABqLQAAIhtBAUYNACAbQX5qDgO9Ab4BvwHAAQsgAUEBaiIBIAJHDQALQc0AIRsMugILAkAgASIBIAJGDQAgAUEBaiEBDAMLQc4AIRsMuQILA0ACQCABLQAAQZCogIAAai0AACIbQQFGDQACQCAbQX5qDgTAAcEBwgEAwwELIAEhAUHGACEbDK8CCyABQQFqIgEgAkcNAAtBzwAhGwy4AgsCQCABIgEgAkcNAEHQACEbDLgCCwJAIAEtAAAiG0F2ag4aqAHDAcMBqgHDAcMBwwHDAcMBwwHDAcMBwwHDAcMBwwHDAcMBwwHDAcMBwwG4AcMBwwEAwQELIAFBAWohAQtBBiEbDKsCCwNAAkAgAS0AAEGQqoCAAGotAABBAUYNACABIQEMgAILIAFBAWoiASACRw0AC0HRACEbDLUCCwJAIAEiASACRg0AIAFBAWohAQwDC0HSACEbDLQCCwJAIAEiASACRw0AQdMAIRsMtAILIAFBAWohAQwBCwJAIAEiASACRw0AQdQAIRsMswILIAFBAWohAQtBBCEbDKYCCwJAIAEiHyACRw0AQdUAIRsMsQILIB8hAQJAAkACQCAfLQAAQZCsgIAAai0AAEF/ag4HwgHDAcQBAP4BAQLFAQsgH0EBaiEBDAoLIB9BAWohAQy7AQtBACEbIABBADYCHCAAQfGOgIAANgIQIABBBzYCDCAAIB9BAWo2AhQMsAILAkADQAJAIAEtAABBkKyAgABqLQAAIhtBBEYNAAJAAkAgG0F/ag4HwAHBAcIBxwEABAHHAQsgASEBQckAIRsMqAILIAFBAWohAUHLACEbDKcCCyABQQFqIgEgAkcNAAtB1gAhGwywAgsgAUEBaiEBDLkBCwJAIAEiHyACRw0AQdcAIRsMrwILIB8tAABBL0cNwgEgH0EBaiEBDAYLAkAgASIfIAJHDQBB2AAhGwyuAgsCQCAfLQAAIgFBL0cNACAfQQFqIQFBzAAhGwyjAgsgAUF2aiIEQRZLDcEBQQEgBHRBiYCAAnFFDcEBDJYCCwJAIAEiASACRg0AIAFBAWohAUHNACEbDKICC0HZACEbDKwCCwJAIAEiHyACRw0AQdsAIRsMrAILIB8hAQJAIB8tAABBkLCAgABqLQAAQX9qDgOVAvYBAMIBC0HQACEbDKACCwJAIAEiHyACRg0AA0ACQCAfLQAAQZCugIAAai0AACIBQQNGDQACQCABQX9qDgKXAgDDAQsgHyEBQc4AIRsMogILIB9BAWoiHyACRw0AC0HaACEbDKsCC0HaACEbDKoCCwJAIAEiASACRg0AIABBjICAgAA2AgggACABNgIEIAEhAUHPACEbDJ8CC0HcACEbDKkCCwJAIAEiASACRw0AQd0AIRsMqQILIABBjICAgAA2AgggACABNgIEIAEhAQtBAyEbDJwCCwNAIAEtAABBIEcNjwIgAUEBaiIBIAJHDQALQd4AIRsMpgILAkAgASIBIAJHDQBB3wAhGwymAgsgAS0AAEEgRw28ASABQQFqIQEM2AELAkAgASIEIAJHDQBB4AAhGwylAgsgBC0AAEHMAEcNvwEgBEEBaiEBQRMhGwy9AQtB4QAhGyABIh8gAkYNowIgAiAfayAAKAIAIiNqISAgHyEEICMhAQNAIAQtAAAgAUGQsoCAAGotAABHDb4BIAFBBUYNvAEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMowILAkAgASIEIAJHDQBB4gAhGwyjAgsCQAJAIAQtAABBvX9qDgwAvwG/Ab8BvwG/Ab8BvwG/Ab8BvwEBvwELIARBAWohAUHUACEbDJgCCyAEQQFqIQFB1QAhGwyXAgtB4wAhGyABIh8gAkYNoQIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQY2zgIAAai0AAEcNvQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADKICCyAAQQA2AgAgHyAja0EDaiEBQRAhGwy6AQtB5AAhGyABIh8gAkYNoAIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQZaygIAAai0AAEcNvAEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADKECCyAAQQA2AgAgHyAja0EGaiEBQRYhGwy5AQtB5QAhGyABIh8gAkYNnwIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQZyygIAAai0AAEcNuwEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADKACCyAAQQA2AgAgHyAja0EEaiEBQQUhGwy4AQsCQCABIgQgAkcNAEHmACEbDJ8CCyAELQAAQdkARw25ASAEQQFqIQFBCCEbDLcBCwJAIAEiBCACRw0AQecAIRsMngILAkACQCAELQAAQbJ/ag4DALoBAboBCyAEQQFqIQFB2QAhGwyTAgsgBEEBaiEBQdoAIRsMkgILAkAgASIEIAJHDQBB6AAhGwydAgsCQAJAIAQtAABBuH9qDggAuQG5AbkBuQG5AbkBAbkBCyAEQQFqIQFB2AAhGwySAgsgBEEBaiEBQdsAIRsMkQILQekAIRsgASIfIAJGDZsCIAIgH2sgACgCACIjaiEgIB8hBCAjIQECQANAIAQtAAAgAUGgsoCAAGotAABHDbcBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIDYCAAycAgtBACEbIABBADYCACAfICNrQQNqIQEMtAELQeoAIRsgASIfIAJGDZoCIAIgH2sgACgCACIjaiEgIB8hBCAjIQECQANAIAQtAAAgAUGjsoCAAGotAABHDbYBIAFBBEYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIDYCAAybAgsgAEEANgIAIB8gI2tBBWohAUEjIRsMswELAkAgASIEIAJHDQBB6wAhGwyaAgsCQAJAIAQtAABBtH9qDggAtgG2AbYBtgG2AbYBAbYBCyAEQQFqIQFB3QAhGwyPAgsgBEEBaiEBQd4AIRsMjgILAkAgASIEIAJHDQBB7AAhGwyZAgsgBC0AAEHFAEcNswEgBEEBaiEBDOQBC0HtACEbIAEiHyACRg2XAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFBqLKAgABqLQAARw2zASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMmAILIABBADYCACAfICNrQQRqIQFBLSEbDLABC0HuACEbIAEiHyACRg2WAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFB8LKAgABqLQAARw2yASABQQhGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMlwILIABBADYCACAfICNrQQlqIQFBKSEbDK8BCwJAIAEiASACRw0AQe8AIRsMlgILQQEhGyABLQAAQd8ARw2uASABQQFqIQEM4gELQfAAIRsgASIfIAJGDZQCIAIgH2sgACgCACIjaiEgIB8hBCAjIQEDQCAELQAAIAFBrLKAgABqLQAARw2vASABQQFGDfoBIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADJQCC0HxACEbIAEiHyACRg2TAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFBrrKAgABqLQAARw2vASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMlAILIABBADYCACAfICNrQQNqIQFBAiEbDKwBC0HyACEbIAEiHyACRg2SAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFBkLOAgABqLQAARw2uASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMkwILIABBADYCACAfICNrQQJqIQFBHyEbDKsBC0HzACEbIAEiHyACRg2RAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFBkrOAgABqLQAARw2tASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMkgILIABBADYCACAfICNrQQJqIQFBCSEbDKoBCwJAIAEiBCACRw0AQfQAIRsMkQILAkACQCAELQAAQbd/ag4HAK0BrQGtAa0BrQEBrQELIARBAWohAUHmACEbDIYCCyAEQQFqIQFB5wAhGwyFAgsCQCABIhsgAkcNAEH1ACEbDJACCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFBsbKAgABqLQAARw2rASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBB9QAhGwyQAgsgAEEANgIAIBsgH2tBBmohAUEYIRsMqAELAkAgASIbIAJHDQBB9gAhGwyPAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQbeygIAAai0AAEcNqgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQfYAIRsMjwILIABBADYCACAbIB9rQQNqIQFBFyEbDKcBCwJAIAEiGyACRw0AQfcAIRsMjgILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUG6soCAAGotAABHDakBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEH3ACEbDI4CCyAAQQA2AgAgGyAfa0EHaiEBQRUhGwymAQsCQCABIhsgAkcNAEH4ACEbDI0CCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFBwbKAgABqLQAARw2oASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBB+AAhGwyNAgsgAEEANgIAIBsgH2tBBmohAUEeIRsMpQELAkAgASIEIAJHDQBB+QAhGwyMAgsgBC0AAEHMAEcNpgEgBEEBaiEBQQohGwykAQsCQCABIgQgAkcNAEH6ACEbDIsCCwJAAkAgBC0AAEG/f2oODwCnAacBpwGnAacBpwGnAacBpwGnAacBpwGnAQGnAQsgBEEBaiEBQewAIRsMgAILIARBAWohAUHtACEbDP8BCwJAIAEiBCACRw0AQfsAIRsMigILAkACQCAELQAAQb9/ag4DAKYBAaYBCyAEQQFqIQFB6wAhGwz/AQsgBEEBaiEBQe4AIRsM/gELAkAgASIbIAJHDQBB/AAhGwyJAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQceygIAAai0AAEcNpAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQfwAIRsMiQILIABBADYCACAbIB9rQQJqIQFBCyEbDKEBCwJAIAEiBCACRw0AQf0AIRsMiAILAkACQAJAAkAgBC0AAEFTag4jAKYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgEBpgGmAaYBpgGmAQKmAaYBpgEDpgELIARBAWohAUHpACEbDP8BCyAEQQFqIQFB6gAhGwz+AQsgBEEBaiEBQe8AIRsM/QELIARBAWohAUHwACEbDPwBCwJAIAEiGyACRw0AQf4AIRsMhwILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHJsoCAAGotAABHDaIBIAFBBEYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEH+ACEbDIcCCyAAQQA2AgAgGyAfa0EFaiEBQRkhGwyfAQsCQCABIh8gAkcNAEH/ACEbDIYCCyACIB9rIAAoAgAiI2ohGyAfIQQgIyEBAkADQCAELQAAIAFBzrKAgABqLQAARw2hASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBs2AgBB/wAhGwyGAgsgAEEANgIAQQYhGyAfICNrQQZqIQEMngELAkAgASIbIAJHDQBBgAEhGwyFAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQdSygIAAai0AAEcNoAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQYABIRsMhQILIABBADYCACAbIB9rQQJqIQFBHCEbDJ0BCwJAIAEiGyACRw0AQYEBIRsMhAILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHWsoCAAGotAABHDZ8BIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGBASEbDIQCCyAAQQA2AgAgGyAfa0ECaiEBQSchGwycAQsCQCABIgQgAkcNAEGCASEbDIMCCwJAAkAgBC0AAEGsf2oOAgABnwELIARBAWohAUH0ACEbDPgBCyAEQQFqIQFB9QAhGwz3AQsCQCABIhsgAkcNAEGDASEbDIICCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFB2LKAgABqLQAARw2dASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBgwEhGwyCAgsgAEEANgIAIBsgH2tBAmohAUEmIRsMmgELAkAgASIbIAJHDQBBhAEhGwyBAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQdqygIAAai0AAEcNnAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQYQBIRsMgQILIABBADYCACAbIB9rQQJqIQFBAyEbDJkBCwJAIAEiGyACRw0AQYUBIRsMgAILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUGNs4CAAGotAABHDZsBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGFASEbDIACCyAAQQA2AgAgGyAfa0EDaiEBQQwhGwyYAQsCQCABIhsgAkcNAEGGASEbDP8BCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFB3LKAgABqLQAARw2aASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBhgEhGwz/AQsgAEEANgIAIBsgH2tBBGohAUENIRsMlwELAkAgASIEIAJHDQBBhwEhGwz+AQsCQAJAIAQtAABBun9qDgsAmgGaAZoBmgGaAZoBmgGaAZoBAZoBCyAEQQFqIQFB+QAhGwzzAQsgBEEBaiEBQfoAIRsM8gELAkAgASIEIAJHDQBBiAEhGwz9AQsgBC0AAEHQAEcNlwEgBEEBaiEBDMoBCwJAIAEiBCACRw0AQYkBIRsM/AELAkACQCAELQAAQbd/ag4HAZgBmAGYAZgBmAEAmAELIARBAWohAUH8ACEbDPEBCyAEQQFqIQFBIiEbDJQBCwJAIAEiGyACRw0AQYoBIRsM+wELIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHgsoCAAGotAABHDZYBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGKASEbDPsBCyAAQQA2AgAgGyAfa0ECaiEBQR0hGwyTAQsCQCABIgQgAkcNAEGLASEbDPoBCwJAAkAgBC0AAEGuf2oOAwCWAQGWAQsgBEEBaiEBQf4AIRsM7wELIARBAWohAUEEIRsMkgELAkAgASIEIAJHDQBBjAEhGwz5AQsCQAJAAkACQAJAIAQtAABBv39qDhUAmAGYAZgBmAGYAZgBmAGYAZgBmAEBmAGYAQKYAZgBA5gBmAEEmAELIARBAWohAUH2ACEbDPEBCyAEQQFqIQFB9wAhGwzwAQsgBEEBaiEBQfgAIRsM7wELIARBAWohAUH9ACEbDO4BCyAEQQFqIQFB/wAhGwztAQsCQCABIhsgAkcNAEGNASEbDPgBCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFBjbOAgABqLQAARw2TASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBjQEhGwz4AQsgAEEANgIAIBsgH2tBA2ohAUERIRsMkAELAkAgASIbIAJHDQBBjgEhGwz3AQsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQeKygIAAai0AAEcNkgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQY4BIRsM9wELIABBADYCACAbIB9rQQNqIQFBLCEbDI8BCwJAIAEiGyACRw0AQY8BIRsM9gELIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHlsoCAAGotAABHDZEBIAFBBEYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGPASEbDPYBCyAAQQA2AgAgGyAfa0EFaiEBQSshGwyOAQsCQCABIhsgAkcNAEGQASEbDPUBCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFB6rKAgABqLQAARw2QASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBkAEhGwz1AQsgAEEANgIAIBsgH2tBA2ohAUEUIRsMjQELAkAgBCACRw0AQZEBIRsM9AELAkACQAJAAkAgBC0AAEG+f2oODwABApIBkgGSAZIBkgGSAZIBkgGSAZIBkgEDkgELIARBAWohAUGBASEbDOsBCyAEQQFqIQFBggEhGwzqAQsgBEEBaiEBQYMBIRsM6QELIARBAWohAUGEASEbDOgBCwJAIAQgAkcNAEGSASEbDPMBCyAELQAAQcUARw2NASAEQQFqIQQMwQELAkAgBSACRw0AQZMBIRsM8gELIAIgBWsgACgCACIbaiEfIAUhBCAbIQECQANAIAQtAAAgAUHtsoCAAGotAABHDY0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGTASEbDPIBCyAAQQA2AgAgBSAba0EDaiEBQQ4hGwyKAQsCQCAEIAJHDQBBlAEhGwzxAQsgBC0AAEHQAEcNiwEgBEEBaiEBQSUhGwyJAQsCQCAGIAJHDQBBlQEhGwzwAQsgAiAGayAAKAIAIhtqIR8gBiEEIBshAQJAA0AgBC0AACABQfCygIAAai0AAEcNiwEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQZUBIRsM8AELIABBADYCACAGIBtrQQlqIQFBKiEbDIgBCwJAIAQgAkcNAEGWASEbDO8BCwJAAkAgBC0AAEGrf2oOCwCLAYsBiwGLAYsBiwGLAYsBiwEBiwELIARBAWohBEGIASEbDOQBCyAEQQFqIQZBiQEhGwzjAQsCQCAEIAJHDQBBlwEhGwzuAQsCQAJAIAQtAABBv39qDhQAigGKAYoBigGKAYoBigGKAYoBigGKAYoBigGKAYoBigGKAYoBAYoBCyAEQQFqIQVBhwEhGwzjAQsgBEEBaiEEQYoBIRsM4gELAkAgByACRw0AQZgBIRsM7QELIAIgB2sgACgCACIbaiEfIAchBCAbIQECQANAIAQtAAAgAUH5soCAAGotAABHDYgBIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGYASEbDO0BCyAAQQA2AgAgByAba0EEaiEBQSEhGwyFAQsCQCAIIAJHDQBBmQEhGwzsAQsgAiAIayAAKAIAIhtqIR8gCCEEIBshAQJAA0AgBC0AACABQf2ygIAAai0AAEcNhwEgAUEGRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQZkBIRsM7AELIABBADYCACAIIBtrQQdqIQFBGiEbDIQBCwJAIAQgAkcNAEGaASEbDOsBCwJAAkACQCAELQAAQbt/ag4RAIgBiAGIAYgBiAGIAYgBiAGIAQGIAYgBiAGIAYgBAogBCyAEQQFqIQRBiwEhGwzhAQsgBEEBaiEHQYwBIRsM4AELIARBAWohCEGNASEbDN8BCwJAIAkgAkcNAEGbASEbDOoBCyACIAlrIAAoAgAiG2ohHyAJIQQgGyEBAkADQCAELQAAIAFBhLOAgABqLQAARw2FASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBmwEhGwzqAQsgAEEANgIAIAkgG2tBBmohAUEoIRsMggELAkAgCiACRw0AQZwBIRsM6QELIAIgCmsgACgCACIbaiEfIAohBCAbIQECQANAIAQtAAAgAUGKs4CAAGotAABHDYQBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGcASEbDOkBCyAAQQA2AgAgCiAba0EDaiEBQQchGwyBAQsCQCAEIAJHDQBBnQEhGwzoAQsCQAJAIAQtAABBu39qDg4AhAGEAYQBhAGEAYQBhAGEAYQBhAGEAYQBAYQBCyAEQQFqIQlBjwEhGwzdAQsgBEEBaiEKQZABIRsM3AELAkAgCyACRw0AQZ4BIRsM5wELIAIgC2sgACgCACIbaiEfIAshBCAbIQECQANAIAQtAAAgAUGNs4CAAGotAABHDYIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGeASEbDOcBCyAAQQA2AgAgCyAba0EDaiEBQRIhGwx/CwJAIAwgAkcNAEGfASEbDOYBCyACIAxrIAAoAgAiG2ohHyAMIQQgGyEBAkADQCAELQAAIAFBkLOAgABqLQAARw2BASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBnwEhGwzmAQsgAEEANgIAIAwgG2tBAmohAUEgIRsMfgsCQCANIAJHDQBBoAEhGwzlAQsgAiANayAAKAIAIhtqIR8gDSEEIBshAQJAA0AgBC0AACABQZKzgIAAai0AAEcNgAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQaABIRsM5QELIABBADYCACANIBtrQQJqIQFBDyEbDH0LAkAgBCACRw0AQaEBIRsM5AELAkACQCAELQAAQbd/ag4HAIABgAGAAYABgAEBgAELIARBAWohDEGTASEbDNkBCyAEQQFqIQ1BlAEhGwzYAQsCQCAOIAJHDQBBogEhGwzjAQsgAiAOayAAKAIAIhtqIR8gDiEEIBshAQJAA0AgBC0AACABQZSzgIAAai0AAEcNfiABQQdGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBogEhGwzjAQsgAEEANgIAIA4gG2tBCGohAUEbIRsMewsCQCAEIAJHDQBBowEhGwziAQsCQAJAAkAgBC0AAEG+f2oOEgB/f39/f39/f38Bf39/f39/An8LIARBAWohC0GSASEbDNgBCyAEQQFqIQRBlQEhGwzXAQsgBEEBaiEOQZYBIRsM1gELAkAgBCACRw0AQaQBIRsM4QELIAQtAABBzgBHDXsgBEEBaiEEDLABCwJAIAQgAkcNAEGlASEbDOABCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAQtAABBv39qDhUAAQIDigEEBQaKAYoBigEHCAkKC4oBDA0OD4oBCyAEQQFqIQFB1gAhGwzjAQsgBEEBaiEBQdcAIRsM4gELIARBAWohAUHcACEbDOEBCyAEQQFqIQFB4AAhGwzgAQsgBEEBaiEBQeEAIRsM3wELIARBAWohAUHkACEbDN4BCyAEQQFqIQFB5QAhGwzdAQsgBEEBaiEBQegAIRsM3AELIARBAWohAUHxACEbDNsBCyAEQQFqIQFB8gAhGwzaAQsgBEEBaiEBQfMAIRsM2QELIARBAWohAUGAASEbDNgBCyAEQQFqIQRBhgEhGwzXAQsgBEEBaiEEQY4BIRsM1gELIARBAWohBEGRASEbDNUBCyAEQQFqIQRBmAEhGwzUAQsCQCAQIAJHDQBBpwEhGwzfAQsgEEEBaiEPDHsLA0ACQCAbLQAAQXZqDgR7AAB+AAsgG0EBaiIbIAJHDQALQagBIRsM3QELAkAgESACRg0AIABBjYCAgAA2AgggACARNgIEIBEhAUEBIRsM0gELQakBIRsM3AELAkAgESACRw0AQaoBIRsM3AELAkACQCARLQAAQXZqDgQBsQGxAQCxAQsgEUEBaiEQDHwLIBFBAWohDwx4CyAAIA8gAhCngICAABogDyEBDEkLAkAgESACRw0AQasBIRsM2gELAkACQCARLQAAQXZqDhcBfX0BfX19fX19fX19fX19fX19fX19AH0LIBFBAWohEQtBnAEhGwzOAQsCQCASIAJHDQBBrQEhGwzZAQsgEi0AAEEgRw17IABBADsBMiASQQFqIQFBoAEhGwzNAQsgASEjAkADQCAjIhEgAkYNASARLQAAQVBqQf8BcSIbQQpPDa4BAkAgAC8BMiIfQZkzSw0AIAAgH0EKbCIfOwEyIBtB//8DcyAfQf7/A3FJDQAgEUEBaiEjIAAgHyAbaiIbOwEyIBtB//8DcUHoB0kNAQsLQQAhGyAAQQA2AhwgAEGdiYCAADYCECAAQQ02AgwgACARQQFqNgIUDNgBC0GsASEbDNcBCwJAIBMgAkcNAEGuASEbDNcBC0EAIRsCQAJAAkACQAJAAkACQAJAIBMtAABBUGoOCoMBggEAAQIDBAUGB4QBC0ECIRsMggELQQMhGwyBAQtBBCEbDIABC0EFIRsMfwtBBiEbDH4LQQchGwx9C0EIIRsMfAtBCSEbDHsLAkAgFCACRw0AQa8BIRsM1gELIBQtAABBLkcNfCAUQQFqIRMMrAELAkAgFSACRw0AQbABIRsM1QELQQAhGwJAAkACQAJAAkACQAJAAkAgFS0AAEFQag4KhQGEAQABAgMEBQYHhgELQQIhGwyEAQtBAyEbDIMBC0EEIRsMggELQQUhGwyBAQtBBiEbDIABC0EHIRsMfwtBCCEbDH4LQQkhGwx9CwJAIAQgAkcNAEGxASEbDNQBCyACIARrIAAoAgAiH2ohIyAEIRUgHyEbA0AgFS0AACAbQZyzgIAAai0AAEcNfyAbQQRGDbcBIBtBAWohGyAVQQFqIhUgAkcNAAsgACAjNgIAQbEBIRsM0wELAkAgFiACRw0AQbIBIRsM0wELIAIgFmsgACgCACIbaiEfIBYhBCAbIQEDQCAELQAAIAFBobOAgABqLQAARw1/IAFBAUYNuQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBsgEhGwzSAQsCQCAXIAJHDQBBswEhGwzSAQsgAiAXayAAKAIAIhVqIR8gFyEEIBUhGwNAIAQtAAAgG0Gjs4CAAGotAABHDX4gG0ECRg2AASAbQQFqIRsgBEEBaiIEIAJHDQALIAAgHzYCAEGzASEbDNEBCwJAIAQgAkcNAEG0ASEbDNEBCwJAAkAgBC0AAEG7f2oOEAB/f39/f39/f39/f39/fwF/CyAEQQFqIRZBpQEhGwzGAQsgBEEBaiEXQaYBIRsMxQELAkAgBCACRw0AQbUBIRsM0AELIAQtAABByABHDXwgBEEBaiEEDKgBCwJAIAQgAkcNAEG2ASEbDM8BCyAELQAAQcgARg2oASAAQQE6ACgMnwELA0ACQCAELQAAQXZqDgQAfn4AfgsgBEEBaiIEIAJHDQALQbgBIRsMzQELIABBADoALyAALQAtQQRxRQ3GAQsgAEEAOgAvIAEhAQx9CyAbQRVGDawBIABBADYCHCAAIAE2AhQgAEGrjICAADYCECAAQRI2AgxBACEbDMoBCwJAIAAgGyACEK2AgIAAIgQNACAbIQEMwwELAkAgBEEVRw0AIABBAzYCHCAAIBs2AhQgAEGGkoCAADYCECAAQRU2AgxBACEbDMoBCyAAQQA2AhwgACAbNgIUIABBq4yAgAA2AhAgAEESNgIMQQAhGwzJAQsgG0EVRg2oASAAQQA2AhwgACABNgIUIABBiIyAgAA2AhAgAEEUNgIMQQAhGwzIAQsgACgCBCEjIABBADYCBCAbIBynaiIgIQEgACAjIBsgICAfGyIbEK6AgIAAIh9FDX8gAEEHNgIcIAAgGzYCFCAAIB82AgxBACEbDMcBCyAAIAAvATBBgAFyOwEwIAEhAQw1CyAbQRVGDaQBIABBADYCHCAAIAE2AhQgAEHFi4CAADYCECAAQRM2AgxBACEbDMUBCyAAQQA2AhwgACABNgIUIABBi4uAgAA2AhAgAEECNgIMQQAhGwzEAQsgG0E7Rw0BIAFBAWohAQtBCCEbDLcBC0EAIRsgAEEANgIcIAAgATYCFCAAQaOQgIAANgIQIABBDDYCDAzBAQtCASEcCyAbQQFqIQECQCAAKQMgIh1C//////////8PVg0AIAAgHUIEhiAchDcDICABIQEMfAsgAEEANgIcIAAgATYCFCAAQYmJgIAANgIQIABBDDYCDEEAIRsMvwELIABBADYCHCAAIBs2AhQgAEGjkICAADYCECAAQQw2AgxBACEbDL4BCyAAKAIEISMgAEEANgIEIBsgHKdqIiAhASAAICMgGyAgIB8bIhsQroCAgAAiH0UNcyAAQQU2AhwgACAbNgIUIAAgHzYCDEEAIRsMvQELIABBADYCHCAAIBs2AhQgAEGNlICAADYCECAAQQ82AgxBACEbDLwBCyAAIBsgAhCtgICAACIBDQEgGyEBC0EQIRsMrwELAkAgAUEVRw0AIABBAjYCHCAAIBs2AhQgAEGGkoCAADYCECAAQRU2AgxBACEbDLoBCyAAQQA2AhwgACAbNgIUIABBq4yAgAA2AhAgAEESNgIMQQAhGwy5AQsgAUEBaiEbAkAgAC8BMCIBQYABcUUNAAJAIAAgGyACELCAgIAAIgENACAbIQEMcAsgAUEVRw2aASAAQQU2AhwgACAbNgIUIABB7pGAgAA2AhAgAEEVNgIMQQAhGwy5AQsCQCABQaAEcUGgBEcNACAALQAtQQJxDQAgAEEANgIcIAAgGzYCFCAAQeyPgIAANgIQIABBBDYCDEEAIRsMuQELIAAgGyACELGAgIAAGiAbIQECQAJAAkACQAJAIAAgGyACEKyAgIAADhYCAQAEBAQEBAQEBAQEBAQEBAQEBAQDBAsgAEEBOgAuCyAAIAAvATBBwAByOwEwIBshAQtBHiEbDK8BCyAAQRU2AhwgACAbNgIUIABBkZGAgAA2AhAgAEEVNgIMQQAhGwy5AQsgAEEANgIcIAAgGzYCFCAAQbGLgIAANgIQIABBETYCDEEAIRsMuAELIAAtAC1BAXFFDQFBqgEhGwysAQsCQCAYIAJGDQADQAJAIBgtAABBIEYNACAYIQEMpwELIBhBAWoiGCACRw0AC0EXIRsMtwELQRchGwy2AQsgACgCBCEEIABBADYCBCAAIAQgGBCogICAACIERQ2TASAAQRg2AhwgACAENgIMIAAgGEEBajYCFEEAIRsMtQELIABBGTYCHCAAIAE2AhQgACAbNgIMQQAhGwy0AQsgGyEBQQEhHwJAAkACQAJAAkACQAJAIAAtACxBfmoOBwYFBQMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEfDAELQQQhHwsgAEEBOgAsIAAgAC8BMCAfcjsBMAsgGyEBC0EhIRsMqQELIABBADYCHCAAIBs2AhQgAEGBj4CAADYCECAAQQs2AgxBACEbDLMBCyAbIQFBASEfAkACQAJAAkACQCAALQAsQXtqDgQCAAEDBQtBAiEfDAELQQQhHwsgAEEBOgAsIAAgAC8BMCAfcjsBMAwBCyAAIAAvATBBCHI7ATALIBshAQtBqwEhGwymAQsgACABIAIQq4CAgAAaDB8LAkAgASIbIAJGDQAgGyEBAkACQCAbLQAAQXZqDgQBb28AbwsgG0EBaiEBC0EfIRsMpQELQT8hGwyvAQsgAEEANgIcIAAgATYCFCAAQeqQgIAANgIQIABBAzYCDEEAIRsMrgELIAAoAgQhASAAQQA2AgQCQCAAIAEgGRCqgICAACIBDQAgGUEBaiEBDG0LIABBHjYCHCAAIAE2AgwgACAZQQFqNgIUQQAhGwytAQsgAC0ALUEBcUUNA0GtASEbDKEBCwJAIBkgAkcNAEEfIRsMrAELA0ACQCAZLQAAQXZqDgQCAAADAAsgGUEBaiIZIAJHDQALQR8hGwyrAQsgACgCBCEBIABBADYCBAJAIAAgASAZEKqAgIAAIgENACAZIQEMagsgAEEeNgIcIAAgGTYCFCAAIAE2AgxBACEbDKoBCyAAKAIEIQEgAEEANgIEAkAgACABIBkQqoCAgAAiAQ0AIBlBAWohAQxpCyAAQR42AhwgACABNgIMIAAgGUEBajYCFEEAIRsMqQELIABBADYCHCAAIBk2AhQgAEHujICAADYCECAAQQo2AgxBACEbDKgBCyAbQSxHDQEgAUEBaiEbQQEhAQJAAkACQAJAAkAgAC0ALEF7ag4EAwECBAALIBshAQwEC0ECIQEMAQtBBCEBCyAAQQE6ACwgACAALwEwIAFyOwEwIBshAQwBCyAAIAAvATBBCHI7ATAgGyEBC0EuIRsMmwELIABBADoALCABIQELQSohGwyZAQsgAEEANgIAICAgIWtBCWohAUEFIRsMkwELIABBADYCACAgICFrQQZqIQFBByEbDJIBCyAAIAAvATBBIHI7ATAgASEBDAILIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCqgICAACIEDQAgASEBDJcBCyAAQSg2AhwgACABNgIUIAAgBDYCDEEAIRsMoAELIABBCDoALCABIQELQSYhGwyTAQsgAC0AMEEgcQ15Qa4BIRsMkgELAkAgGiACRg0AAkADQAJAIBotAABBUGoiAUH/AXFBCkkNACAaIQFBKyEbDJUBCyAAKQMgIhxCmbPmzJmz5swZVg0BIAAgHEIKfiIcNwMgIBwgAa0iHUJ/hUKAfoRWDQEgACAcIB1C/wGDfDcDICAaQQFqIhogAkcNAAtBKiEbDJ4BCyAAKAIEIQQgAEEANgIEIAAgBCAaQQFqIgEQqoCAgAAiBA16IAEhAQyUAQtBKiEbDJwBCyAAIAAvATBB9/sDcUGABHI7ATAgGiEBC0EsIRsMjwELIAAgAC8BMEEQcjsBMAsgAEEAOgAsIBohAQxYCyAAQTI2AhwgACABNgIMIAAgGEEBajYCFEEAIRsMlwELIAEtAABBOkcNAiAAKAIEIRsgAEEANgIEIAAgGyABEKiAgIAAIhsNASABQQFqIQELQTEhGwyKAQsgAEEyNgIcIAAgGzYCDCAAIAFBAWo2AhRBACEbDJQBCyAAQQA2AhwgACABNgIUIABBh46AgAA2AhAgAEEKNgIMQQAhGwyTAQsgAUEBaiEBCyAAQYASOwEqIAAgASACEKWAgIAAGiABIQELQawBIRsMhQELIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDFILIABBwAA2AhwgACABNgIUIAAgGzYCDEEAIRsMjwELIABBADYCHCAAIB82AhQgAEGVmICAADYCECAAQQc2AgwgAEEANgIAQQAhGwyOAQsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMUQsgAEHBADYCHCAAIAE2AhQgACAbNgIMQQAhGwyNAQtBACEbIABBADYCHCAAIAE2AhQgAEHrjYCAADYCECAAQQk2AgwMjAELQQEhGwsgACAbOgArIAFBAWohASAALQApQSJGDYUBDE4LIABBADYCHCAAIAE2AhQgAEGijYCAADYCECAAQQk2AgxBACEbDIkBCyAAQQA2AhwgACABNgIUIABBxYqAgAA2AhAgAEEJNgIMQQAhGwyIAQtBASEbCyAAIBs6ACogAUEBaiEBDEwLIABBADYCHCAAIAE2AhQgAEG4jYCAADYCECAAQQk2AgxBACEbDIUBCyAAQQA2AgAgIyAga0EEaiEBAkAgAC0AKUEjTw0AIAEhAQxMCyAAQQA2AhwgACABNgIUIABBr4mAgAA2AhAgAEEINgIMQQAhGwyEAQsgAEEANgIAC0EAIRsgAEEANgIcIAAgATYCFCAAQdmagIAANgIQIABBCDYCDAyCAQsgAEEANgIAICMgIGtBA2ohAQJAIAAtAClBIUcNACABIQEMSQsgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDEEAIRsMgQELIABBADYCACAjICBrQQRqIQECQCAALQApIhtBXWpBC08NACABIQEMSAsCQCAbQQZLDQBBASAbdEHKAHFFDQAgASEBDEgLQQAhGyAAQQA2AhwgACABNgIUIABB04mAgAA2AhAgAEEINgIMDIABCyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQxICyAAQcwANgIcIAAgATYCFCAAIBs2AgxBACEbDH8LIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDEELIABBwAA2AhwgACABNgIUIAAgGzYCDEEAIRsMfgsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMQQsgAEHBADYCHCAAIAE2AhQgACAbNgIMQQAhGwx9CyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQxFCyAAQcwANgIcIAAgATYCFCAAIBs2AgxBACEbDHwLIABBADYCHCAAIAE2AhQgAEGiioCAADYCECAAQQc2AgxBACEbDHsLIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDD0LIABBwAA2AhwgACABNgIUIAAgGzYCDEEAIRsMegsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMPQsgAEHBADYCHCAAIAE2AhQgACAbNgIMQQAhGwx5CyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQxBCyAAQcwANgIcIAAgATYCFCAAIBs2AgxBACEbDHgLIABBADYCHCAAIAE2AhQgAEG4iICAADYCECAAQQc2AgxBACEbDHcLIBtBP0cNASABQQFqIQELQQUhGwxqC0EAIRsgAEEANgIcIAAgATYCFCAAQdOPgIAANgIQIABBBzYCDAx0CyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQw2CyAAQcAANgIcIAAgATYCFCAAIBs2AgxBACEbDHMLIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDDYLIABBwQA2AhwgACABNgIUIAAgGzYCDEEAIRsMcgsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMOgsgAEHMADYCHCAAIAE2AhQgACAbNgIMQQAhGwxxCyAAKAIEIQEgAEEANgIEAkAgACABIB8QpICAgAAiAQ0AIB8hAQwzCyAAQcAANgIcIAAgHzYCFCAAIAE2AgxBACEbDHALIAAoAgQhASAAQQA2AgQCQCAAIAEgHxCkgICAACIBDQAgHyEBDDMLIABBwQA2AhwgACAfNgIUIAAgATYCDEEAIRsMbwsgACgCBCEBIABBADYCBAJAIAAgASAfEKSAgIAAIgENACAfIQEMNwsgAEHMADYCHCAAIB82AhQgACABNgIMQQAhGwxuCyAAQQA2AhwgACAfNgIUIABB0IyAgAA2AhAgAEEHNgIMQQAhGwxtCyAAQQA2AhwgACABNgIUIABB0IyAgAA2AhAgAEEHNgIMQQAhGwxsC0EAIRsgAEEANgIcIAAgHzYCFCAAQe+TgIAANgIQIABBBzYCDAxrCyAAQQA2AhwgACAfNgIUIABB75OAgAA2AhAgAEEHNgIMQQAhGwxqCyAAQQA2AhwgACAfNgIUIABB1I6AgAA2AhAgAEEHNgIMQQAhGwxpCyAAQQA2AhwgACABNgIUIABB8ZKAgAA2AhAgAEEGNgIMQQAhGwxoCyAAQQA2AgAgHyAja0EGaiEBQSQhGwsgACAbOgApIAEhAQxNCyAAQQA2AgALQQAhGyAAQQA2AhwgACAENgIUIABB1JOAgAA2AhAgAEEGNgIMDGQLIAAoAgQhDyAAQQA2AgQgACAPIBsQpoCAgAAiDw0BIBtBAWohDwtBnQEhGwxXCyAAQaYBNgIcIAAgDzYCDCAAIBtBAWo2AhRBACEbDGELIAAoAgQhECAAQQA2AgQgACAQIBsQpoCAgAAiEA0BIBtBAWohEAtBmgEhGwxUCyAAQacBNgIcIAAgEDYCDCAAIBtBAWo2AhRBACEbDF4LIABBADYCHCAAIBE2AhQgAEHzioCAADYCECAAQQ02AgxBACEbDF0LIABBADYCHCAAIBI2AhQgAEHOjYCAADYCECAAQQk2AgxBACEbDFwLQQEhGwsgACAbOgArIBNBAWohEgwwCyAAQQA2AhwgACATNgIUIABBoo2AgAA2AhAgAEEJNgIMQQAhGwxZCyAAQQA2AhwgACAUNgIUIABBxYqAgAA2AhAgAEEJNgIMQQAhGwxYC0EBIRsLIAAgGzoAKiAVQQFqIRQMLgsgAEEANgIcIAAgFTYCFCAAQbiNgIAANgIQIABBCTYCDEEAIRsMVQsgAEEANgIcIAAgFTYCFCAAQdmagIAANgIQIABBCDYCDCAAQQA2AgBBACEbDFQLIABBADYCAAtBACEbIABBADYCHCAAIAQ2AhQgAEG7k4CAADYCECAAQQg2AgwMUgsgAEECOgAoIABBADYCACAXIBVrQQNqIRUMNQsgAEECOgAvIAAgBCACEKOAgIAAIhsNAUGvASEbDEULIAAtAChBf2oOAiAiIQsgG0EVRw0pIABBtwE2AhwgACAENgIUIABB15GAgAA2AhAgAEEVNgIMQQAhGwxOC0EAIRsMQgtBAiEbDEELQQwhGwxAC0EPIRsMPwtBESEbDD4LQR0hGww9C0EVIRsMPAtBFyEbDDsLQRghGww6C0EaIRsMOQtBGyEbDDgLQTohGww3C0EkIRsMNgtBJSEbDDULQS8hGww0C0EwIRsMMwtBOyEbDDILQTwhGwwxC0E+IRsMMAtBPyEbDC8LQcAAIRsMLgtBwQAhGwwtC0HFACEbDCwLQccAIRsMKwtByAAhGwwqC0HKACEbDCkLQd8AIRsMKAtB4gAhGwwnC0H7ACEbDCYLQYUBIRsMJQtBlwEhGwwkC0GZASEbDCMLQakBIRsMIgtBpAEhGwwhC0GbASEbDCALQZ4BIRsMHwtBnwEhGwweC0GhASEbDB0LQaIBIRsMHAtBpwEhGwwbC0GoASEbDBoLIABBADYCHCAAIAQ2AhQgAEHmi4CAADYCECAAQRA2AgxBACEbDCQLIABBADYCHCAAIBo2AhQgAEG6j4CAADYCECAAQQQ2AgxBACEbDCMLIABBJzYCHCAAIAE2AhQgACAENgIMQQAhGwwiCyAYQQFqIQEMGQsgAEEKNgIcIAAgATYCFCAAQcGRgIAANgIQIABBFTYCDEEAIRsMIAsgAEEQNgIcIAAgATYCFCAAQe6RgIAANgIQIABBFTYCDEEAIRsMHwsgAEEANgIcIAAgGzYCFCAAQYiMgIAANgIQIABBFDYCDEEAIRsMHgsgAEEENgIcIAAgATYCFCAAQYaSgIAANgIQIABBFTYCDEEAIRsMHQsgAEEANgIAIAQgH2tBBWohFQtBowEhGwwQCyAAQQA2AgAgHyAja0ECaiEBQeMAIRsMDwsgAEEANgIAIABBgQQ7ASggFiAba0ECaiEBC0HTACEbDA0LIAEhAQJAIAAtAClBBUcNAEHSACEbDA0LQdEAIRsMDAtBACEbIABBADYCHCAAQbqOgIAANgIQIABBBzYCDCAAIB9BAWo2AhQMFgsgAEEANgIAICMgIGtBAmohAUE0IRsMCgsgASEBC0EtIRsMCAsgAUEBaiEBQSMhGwwHC0EgIRsMBgsgAEEANgIAICAgIWtBBGohAUEGIRsLIAAgGzoALCABIQFBDiEbDAQLIABBADYCACAjICBrQQdqIQFBDSEbDAMLIABBADYCACAfIQFBCyEbDAILIABBADYCAAsgAEEAOgAsIBghAUEJIRsMAAsLQQAhGyAAQQA2AhwgACABNgIUIABBlo+AgAA2AhAgAEELNgIMDAkLQQAhGyAAQQA2AhwgACABNgIUIABB8YiAgAA2AhAgAEELNgIMDAgLQQAhGyAAQQA2AhwgACABNgIUIABBiI2AgAA2AhAgAEEKNgIMDAcLIABBAjYCHCAAIAE2AhQgAEGgkoCAADYCECAAQRY2AgxBACEbDAYLQQEhGwwFC0HCACEbIAEiBCACRg0EIANBCGogACAEIAJB+KWAgABBChC5gICAACADKAIMIQQgAygCCA4DAQQCAAsQv4CAgAAACyAAQQA2AhwgAEG5koCAADYCECAAQRc2AgwgACAEQQFqNgIUQQAhGwwCCyAAQQA2AhwgACAENgIUIABBzpKAgAA2AhAgAEEJNgIMQQAhGwwBCwJAIAEiBCACRw0AQRQhGwwBCyAAQYmAgIAANgIIIAAgBDYCBEETIRsLIANBEGokgICAgAAgGwuvAQECfyABKAIAIQYCQAJAIAIgA0YNACAEIAZqIQQgBiADaiACayEHIAIgBkF/cyAFaiIGaiEFA0ACQCACLQAAIAQtAABGDQBBAiEEDAMLAkAgBg0AQQAhBCAFIQIMAwsgBkF/aiEGIARBAWohBCACQQFqIgIgA0cNAAsgByEGIAMhAgsgAEEBNgIAIAEgBjYCACAAIAI2AgQPCyABQQA2AgAgACAENgIAIAAgAjYCBAsKACAAELuAgIAAC5U3AQt/I4CAgIAAQRBrIgEkgICAgAACQEEAKALAs4CAAA0AQQAQvoCAgABBoLeEgABrIgJB2QBJDQBBACEDAkBBACgCgLeAgAAiBA0AQQBCfzcCjLeAgABBAEKAgISAgIDAADcChLeAgABBACABQQhqQXBxQdiq1aoFcyIENgKAt4CAAEEAQQA2ApS3gIAAQQBBADYC5LaAgAALQQAgAjYC7LaAgABBAEGgt4SAADYC6LaAgABBAEGgt4SAADYCuLOAgABBACAENgLMs4CAAEEAQX82AsizgIAAA0AgA0Hks4CAAGogA0HYs4CAAGoiBDYCACAEIANB0LOAgABqIgU2AgAgA0Hcs4CAAGogBTYCACADQeyzgIAAaiADQeCzgIAAaiIFNgIAIAUgBDYCACADQfSzgIAAaiADQeizgIAAaiIENgIAIAQgBTYCACADQfCzgIAAaiAENgIAIANBIGoiA0GAAkcNAAtBoLeEgABBeEGgt4SAAGtBD3FBAEGgt4SAAEEIakEPcRsiA2oiBEEEaiACIANrQUhqIgNBAXI2AgBBAEEAKAKQt4CAADYCxLOAgABBACAENgLAs4CAAEEAIAM2ArSzgIAAIAJBoLeEgABqQUxqQTg2AgALAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKos4CAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQAgA0EBcSAEckEBcyIFQQN0IgBB2LOAgABqKAIAIgRBCGohAwJAAkAgBCgCCCICIABB0LOAgABqIgBHDQBBACAGQX4gBXdxNgKos4CAAAwBCyAAIAI2AgggAiAANgIMCyAEIAVBA3QiBUEDcjYCBCAEIAVqQQRqIgQgBCgCAEEBcjYCAAwMCyACQQAoArCzgIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgVBA3QiAEHYs4CAAGooAgAiBCgCCCIDIABB0LOAgABqIgBHDQBBACAGQX4gBXdxIgY2AqizgIAADAELIAAgAzYCCCADIAA2AgwLIARBCGohAyAEIAJBA3I2AgQgBCAFQQN0IgVqIAUgAmsiBTYCACAEIAJqIgAgBUEBcjYCBAJAIAdFDQAgB0EDdiIIQQN0QdCzgIAAaiECQQAoAryzgIAAIQQCQAJAIAZBASAIdCIIcQ0AQQAgBiAIcjYCqLOAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIIC0EAIAA2AryzgIAAQQAgBTYCsLOAgAAMDAtBACgCrLOAgAAiCUUNASAJQQAgCWtxQX9qIgMgA0EMdkEQcSIDdiIEQQV2QQhxIgUgA3IgBCAFdiIDQQJ2QQRxIgRyIAMgBHYiA0EBdkECcSIEciADIAR2IgNBAXZBAXEiBHIgAyAEdmpBAnRB2LWAgABqKAIAIgAoAgRBeHEgAmshBCAAIQUCQANAAkAgBSgCECIDDQAgBUEUaigCACIDRQ0CCyADKAIEQXhxIAJrIgUgBCAFIARJIgUbIQQgAyAAIAUbIQAgAyEFDAALCyAAKAIYIQoCQCAAKAIMIgggAEYNAEEAKAK4s4CAACAAKAIIIgNLGiAIIAM2AgggAyAINgIMDAsLAkAgAEEUaiIFKAIAIgMNACAAKAIQIgNFDQMgAEEQaiEFCwNAIAUhCyADIghBFGoiBSgCACIDDQAgCEEQaiEFIAgoAhAiAw0ACyALQQA2AgAMCgtBfyECIABBv39LDQAgAEETaiIDQXBxIQJBACgCrLOAgAAiB0UNAEEAIQsCQCACQYACSQ0AQR8hCyACQf///wdLDQAgA0EIdiIDIANBgP4/akEQdkEIcSIDdCIEIARBgOAfakEQdkEEcSIEdCIFIAVBgIAPakEQdkECcSIFdEEPdiADIARyIAVyayIDQQF0IAIgA0EVanZBAXFyQRxqIQsLQQAgAmshBAJAAkACQAJAIAtBAnRB2LWAgABqKAIAIgUNAEEAIQNBACEIDAELQQAhAyACQQBBGSALQQF2ayALQR9GG3QhAEEAIQgDQAJAIAUoAgRBeHEgAmsiBiAETw0AIAYhBCAFIQggBg0AQQAhBCAFIQggBSEDDAMLIAMgBUEUaigCACIGIAYgBSAAQR12QQRxakEQaigCACIFRhsgAyAGGyEDIABBAXQhACAFDQALCwJAIAMgCHINAEEAIQhBAiALdCIDQQAgA2tyIAdxIgNFDQMgA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBUEFdkEIcSIAIANyIAUgAHYiA0ECdkEEcSIFciADIAV2IgNBAXZBAnEiBXIgAyAFdiIDQQF2QQFxIgVyIAMgBXZqQQJ0Qdi1gIAAaigCACEDCyADRQ0BCwNAIAMoAgRBeHEgAmsiBiAESSEAAkAgAygCECIFDQAgA0EUaigCACEFCyAGIAQgABshBCADIAggABshCCAFIQMgBQ0ACwsgCEUNACAEQQAoArCzgIAAIAJrTw0AIAgoAhghCwJAIAgoAgwiACAIRg0AQQAoArizgIAAIAgoAggiA0saIAAgAzYCCCADIAA2AgwMCQsCQCAIQRRqIgUoAgAiAw0AIAgoAhAiA0UNAyAIQRBqIQULA0AgBSEGIAMiAEEUaiIFKAIAIgMNACAAQRBqIQUgACgCECIDDQALIAZBADYCAAwICwJAQQAoArCzgIAAIgMgAkkNAEEAKAK8s4CAACEEAkACQCADIAJrIgVBEEkNACAEIAJqIgAgBUEBcjYCBEEAIAU2ArCzgIAAQQAgADYCvLOAgAAgBCADaiAFNgIAIAQgAkEDcjYCBAwBCyAEIANBA3I2AgQgAyAEakEEaiIDIAMoAgBBAXI2AgBBAEEANgK8s4CAAEEAQQA2ArCzgIAACyAEQQhqIQMMCgsCQEEAKAK0s4CAACIAIAJNDQBBACgCwLOAgAAiAyACaiIEIAAgAmsiBUEBcjYCBEEAIAU2ArSzgIAAQQAgBDYCwLOAgAAgAyACQQNyNgIEIANBCGohAwwKCwJAAkBBACgCgLeAgABFDQBBACgCiLeAgAAhBAwBC0EAQn83Aoy3gIAAQQBCgICEgICAwAA3AoS3gIAAQQAgAUEMakFwcUHYqtWqBXM2AoC3gIAAQQBBADYClLeAgABBAEEANgLktoCAAEGAgAQhBAtBACEDAkAgBCACQccAaiIHaiIGQQAgBGsiC3EiCCACSw0AQQBBMDYCmLeAgAAMCgsCQEEAKALgtoCAACIDRQ0AAkBBACgC2LaAgAAiBCAIaiIFIARNDQAgBSADTQ0BC0EAIQNBAEEwNgKYt4CAAAwKC0EALQDktoCAAEEEcQ0EAkACQAJAQQAoAsCzgIAAIgRFDQBB6LaAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiAESw0DCyADKAIIIgMNAAsLQQAQvoCAgAAiAEF/Rg0FIAghBgJAQQAoAoS3gIAAIgNBf2oiBCAAcUUNACAIIABrIAQgAGpBACADa3FqIQYLIAYgAk0NBSAGQf7///8HSw0FAkBBACgC4LaAgAAiA0UNAEEAKALYtoCAACIEIAZqIgUgBE0NBiAFIANLDQYLIAYQvoCAgAAiAyAARw0BDAcLIAYgAGsgC3EiBkH+////B0sNBCAGEL6AgIAAIgAgAygCACADKAIEakYNAyAAIQMLAkAgA0F/Rg0AIAJByABqIAZNDQACQCAHIAZrQQAoAoi3gIAAIgRqQQAgBGtxIgRB/v///wdNDQAgAyEADAcLAkAgBBC+gICAAEF/Rg0AIAQgBmohBiADIQAMBwtBACAGaxC+gICAABoMBAsgAyEAIANBf0cNBQwDC0EAIQgMBwtBACEADAULIABBf0cNAgtBAEEAKALktoCAAEEEcjYC5LaAgAALIAhB/v///wdLDQEgCBC+gICAACEAQQAQvoCAgAAhAyAAQX9GDQEgA0F/Rg0BIAAgA08NASADIABrIgYgAkE4ak0NAQtBAEEAKALYtoCAACAGaiIDNgLYtoCAAAJAIANBACgC3LaAgABNDQBBACADNgLctoCAAAsCQAJAAkACQEEAKALAs4CAACIERQ0AQei2gIAAIQMDQCAAIAMoAgAiBSADKAIEIghqRg0CIAMoAggiAw0ADAMLCwJAAkBBACgCuLOAgAAiA0UNACAAIANPDQELQQAgADYCuLOAgAALQQAhA0EAIAY2Auy2gIAAQQAgADYC6LaAgABBAEF/NgLIs4CAAEEAQQAoAoC3gIAANgLMs4CAAEEAQQA2AvS2gIAAA0AgA0Hks4CAAGogA0HYs4CAAGoiBDYCACAEIANB0LOAgABqIgU2AgAgA0Hcs4CAAGogBTYCACADQeyzgIAAaiADQeCzgIAAaiIFNgIAIAUgBDYCACADQfSzgIAAaiADQeizgIAAaiIENgIAIAQgBTYCACADQfCzgIAAaiAENgIAIANBIGoiA0GAAkcNAAsgAEF4IABrQQ9xQQAgAEEIakEPcRsiA2oiBCAGIANrQUhqIgNBAXI2AgRBAEEAKAKQt4CAADYCxLOAgABBACAENgLAs4CAAEEAIAM2ArSzgIAAIAYgAGpBTGpBODYCAAwCCyADLQAMQQhxDQAgBSAESw0AIAAgBE0NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoArSzgIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKAKQt4CAADYCxLOAgABBACAFNgK0s4CAAEEAIAA2AsCzgIAAIAsgBGpBBGpBODYCAAwBCwJAIABBACgCuLOAgAAiC08NAEEAIAA2ArizgIAAIAAhCwsgACAGaiEIQei2gIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgCEYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtB6LaAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiBiACQQNyNgIEIAhBeCAIa0EPcUEAIAhBCGpBD3EbaiIIIAYgAmoiAmshBQJAIAQgCEcNAEEAIAI2AsCzgIAAQQBBACgCtLOAgAAgBWoiAzYCtLOAgAAgAiADQQFyNgIEDAMLAkBBACgCvLOAgAAgCEcNAEEAIAI2AryzgIAAQQBBACgCsLOAgAAgBWoiAzYCsLOAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAgoAgQiA0EDcUEBRw0AIANBeHEhBwJAAkAgA0H/AUsNACAIKAIIIgQgA0EDdiILQQN0QdCzgIAAaiIARhoCQCAIKAIMIgMgBEcNAEEAQQAoAqizgIAAQX4gC3dxNgKos4CAAAwCCyADIABGGiADIAQ2AgggBCADNgIMDAELIAgoAhghCQJAAkAgCCgCDCIAIAhGDQAgCyAIKAIIIgNLGiAAIAM2AgggAyAANgIMDAELAkAgCEEUaiIDKAIAIgQNACAIQRBqIgMoAgAiBA0AQQAhAAwBCwNAIAMhCyAEIgBBFGoiAygCACIEDQAgAEEQaiEDIAAoAhAiBA0ACyALQQA2AgALIAlFDQACQAJAIAgoAhwiBEECdEHYtYCAAGoiAygCACAIRw0AIAMgADYCACAADQFBAEEAKAKss4CAAEF+IAR3cTYCrLOAgAAMAgsgCUEQQRQgCSgCECAIRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgCCgCECIDRQ0AIAAgAzYCECADIAA2AhgLIAgoAhQiA0UNACAAQRRqIAM2AgAgAyAANgIYCyAHIAVqIQUgCCAHaiEICyAIIAgoAgRBfnE2AgQgAiAFaiAFNgIAIAIgBUEBcjYCBAJAIAVB/wFLDQAgBUEDdiIEQQN0QdCzgIAAaiEDAkACQEEAKAKos4CAACIFQQEgBHQiBHENAEEAIAUgBHI2AqizgIAAIAMhBAwBCyADKAIIIQQLIAQgAjYCDCADIAI2AgggAiADNgIMIAIgBDYCCAwDC0EfIQMCQCAFQf///wdLDQAgBUEIdiIDIANBgP4/akEQdkEIcSIDdCIEIARBgOAfakEQdkEEcSIEdCIAIABBgIAPakEQdkECcSIAdEEPdiADIARyIAByayIDQQF0IAUgA0EVanZBAXFyQRxqIQMLIAIgAzYCHCACQgA3AhAgA0ECdEHYtYCAAGohBAJAQQAoAqyzgIAAIgBBASADdCIIcQ0AIAQgAjYCAEEAIAAgCHI2AqyzgIAAIAIgBDYCGCACIAI2AgggAiACNgIMDAMLIAVBAEEZIANBAXZrIANBH0YbdCEDIAQoAgAhAANAIAAiBCgCBEF4cSAFRg0CIANBHXYhACADQQF0IQMgBCAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBDYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBiADa0FIaiIDQQFyNgIEIAhBTGpBODYCACAEIAVBNyAFa0EPcUEAIAVBSWpBD3EbakFBaiIIIAggBEEQakkbIghBIzYCBEEAQQAoApC3gIAANgLEs4CAAEEAIAs2AsCzgIAAQQAgAzYCtLOAgAAgCEEQakEAKQLwtoCAADcCACAIQQApAui2gIAANwIIQQAgCEEIajYC8LaAgABBACAGNgLstoCAAEEAIAA2Aui2gIAAQQBBADYC9LaAgAAgCEEkaiEDA0AgA0EHNgIAIAUgA0EEaiIDSw0ACyAIIARGDQMgCCAIKAIEQX5xNgIEIAggCCAEayIGNgIAIAQgBkEBcjYCBAJAIAZB/wFLDQAgBkEDdiIFQQN0QdCzgIAAaiEDAkACQEEAKAKos4CAACIAQQEgBXQiBXENAEEAIAAgBXI2AqizgIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAGQf///wdLDQAgBkEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiADIAVyIAByayIDQQF0IAYgA0EVanZBAXFyQRxqIQMLIARCADcCECAEQRxqIAM2AgAgA0ECdEHYtYCAAGohBQJAQQAoAqyzgIAAIgBBASADdCIIcQ0AIAUgBDYCAEEAIAAgCHI2AqyzgIAAIARBGGogBTYCACAEIAQ2AgggBCAENgIMDAQLIAZBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhAANAIAAiBSgCBEF4cSAGRg0DIANBHXYhACADQQF0IQMgBSAAQQRxakEQaiIIKAIAIgANAAsgCCAENgIAIARBGGogBTYCACAEIAQ2AgwgBCAENgIIDAMLIAQoAggiAyACNgIMIAQgAjYCCCACQQA2AhggAiAENgIMIAIgAzYCCAsgBkEIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQRhqQQA2AgAgBCAFNgIMIAQgAzYCCAtBACgCtLOAgAAiAyACTQ0AQQAoAsCzgIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgK0s4CAAEEAIAU2AsCzgIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYCmLeAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEHYtYCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKss4CAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgAyAIakEEaiIDIAMoAgBBAXI2AgAMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEEDdiIEQQN0QdCzgIAAaiEDAkACQEEAKAKos4CAACIFQQEgBHQiBHENAEEAIAUgBHI2AqizgIAAIAMhBAwBCyADKAIIIQQLIAQgADYCDCADIAA2AgggACADNgIMIAAgBDYCCAwBC0EfIQMCQCAEQf///wdLDQAgBEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCICIAJBgIAPakEQdkECcSICdEEPdiADIAVyIAJyayIDQQF0IAQgA0EVanZBAXFyQRxqIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEHYtYCAAGohBQJAIAdBASADdCICcQ0AIAUgADYCAEEAIAcgAnI2AqyzgIAAIAAgBTYCGCAAIAA2AgggACAANgIMDAELIARBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhAgJAA0AgAiIFKAIEQXhxIARGDQEgA0EddiECIANBAXQhAyAFIAJBBHFqQRBqIgYoAgAiAg0ACyAGIAA2AgAgACAFNgIYIAAgADYCDCAAIAA2AggMAQsgBSgCCCIDIAA2AgwgBSAANgIIIABBADYCGCAAIAU2AgwgACADNgIICyAIQQhqIQMMAQsCQCAKRQ0AAkACQCAAIAAoAhwiBUECdEHYtYCAAGoiAygCAEcNACADIAg2AgAgCA0BQQAgCUF+IAV3cTYCrLOAgAAMAgsgCkEQQRQgCigCECAARhtqIAg2AgAgCEUNAQsgCCAKNgIYAkAgACgCECIDRQ0AIAggAzYCECADIAg2AhgLIABBFGooAgAiA0UNACAIQRRqIAM2AgAgAyAINgIYCwJAAkAgBEEPSw0AIAAgBCACaiIDQQNyNgIEIAMgAGpBBGoiAyADKAIAQQFyNgIADAELIAAgAmoiBSAEQQFyNgIEIAAgAkEDcjYCBCAFIARqIAQ2AgACQCAHRQ0AIAdBA3YiCEEDdEHQs4CAAGohAkEAKAK8s4CAACEDAkACQEEBIAh0IgggBnENAEEAIAggBnI2AqizgIAAIAIhCAwBCyACKAIIIQgLIAggAzYCDCACIAM2AgggAyACNgIMIAMgCDYCCAtBACAFNgK8s4CAAEEAIAQ2ArCzgIAACyAAQQhqIQMLIAFBEGokgICAgAAgAwsKACAAEL2AgIAAC/ANAQd/AkAgAEUNACAAQXhqIgEgAEF8aigCACICQXhxIgBqIQMCQCACQQFxDQAgAkEDcUUNASABIAEoAgAiAmsiAUEAKAK4s4CAACIESQ0BIAIgAGohAAJAQQAoAryzgIAAIAFGDQACQCACQf8BSw0AIAEoAggiBCACQQN2IgVBA3RB0LOAgABqIgZGGgJAIAEoAgwiAiAERw0AQQBBACgCqLOAgABBfiAFd3E2AqizgIAADAMLIAIgBkYaIAIgBDYCCCAEIAI2AgwMAgsgASgCGCEHAkACQCABKAIMIgYgAUYNACAEIAEoAggiAksaIAYgAjYCCCACIAY2AgwMAQsCQCABQRRqIgIoAgAiBA0AIAFBEGoiAigCACIEDQBBACEGDAELA0AgAiEFIAQiBkEUaiICKAIAIgQNACAGQRBqIQIgBigCECIEDQALIAVBADYCAAsgB0UNAQJAAkAgASgCHCIEQQJ0Qdi1gIAAaiICKAIAIAFHDQAgAiAGNgIAIAYNAUEAQQAoAqyzgIAAQX4gBHdxNgKss4CAAAwDCyAHQRBBFCAHKAIQIAFGG2ogBjYCACAGRQ0CCyAGIAc2AhgCQCABKAIQIgJFDQAgBiACNgIQIAIgBjYCGAsgASgCFCICRQ0BIAZBFGogAjYCACACIAY2AhgMAQsgAygCBCICQQNxQQNHDQAgAyACQX5xNgIEQQAgADYCsLOAgAAgASAAaiAANgIAIAEgAEEBcjYCBA8LIAMgAU0NACADKAIEIgJBAXFFDQACQAJAIAJBAnENAAJAQQAoAsCzgIAAIANHDQBBACABNgLAs4CAAEEAQQAoArSzgIAAIABqIgA2ArSzgIAAIAEgAEEBcjYCBCABQQAoAryzgIAARw0DQQBBADYCsLOAgABBAEEANgK8s4CAAA8LAkBBACgCvLOAgAAgA0cNAEEAIAE2AryzgIAAQQBBACgCsLOAgAAgAGoiADYCsLOAgAAgASAAQQFyNgIEIAEgAGogADYCAA8LIAJBeHEgAGohAAJAAkAgAkH/AUsNACADKAIIIgQgAkEDdiIFQQN0QdCzgIAAaiIGRhoCQCADKAIMIgIgBEcNAEEAQQAoAqizgIAAQX4gBXdxNgKos4CAAAwCCyACIAZGGiACIAQ2AgggBCACNgIMDAELIAMoAhghBwJAAkAgAygCDCIGIANGDQBBACgCuLOAgAAgAygCCCICSxogBiACNgIIIAIgBjYCDAwBCwJAIANBFGoiAigCACIEDQAgA0EQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0AAkACQCADKAIcIgRBAnRB2LWAgABqIgIoAgAgA0cNACACIAY2AgAgBg0BQQBBACgCrLOAgABBfiAEd3E2AqyzgIAADAILIAdBEEEUIAcoAhAgA0YbaiAGNgIAIAZFDQELIAYgBzYCGAJAIAMoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyADKAIUIgJFDQAgBkEUaiACNgIAIAIgBjYCGAsgASAAaiAANgIAIAEgAEEBcjYCBCABQQAoAryzgIAARw0BQQAgADYCsLOAgAAPCyADIAJBfnE2AgQgASAAaiAANgIAIAEgAEEBcjYCBAsCQCAAQf8BSw0AIABBA3YiAkEDdEHQs4CAAGohAAJAAkBBACgCqLOAgAAiBEEBIAJ0IgJxDQBBACAEIAJyNgKos4CAACAAIQIMAQsgACgCCCECCyACIAE2AgwgACABNgIIIAEgADYCDCABIAI2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAFCADcCECABQRxqIAI2AgAgAkECdEHYtYCAAGohBAJAAkBBACgCrLOAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCrLOAgAAgAUEYaiAENgIAIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABQRhqIAQ2AgAgASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEYakEANgIAIAEgBDYCDCABIAA2AggLQQBBACgCyLOAgABBf2oiAUF/IAEbNgLIs4CAAAsLTgACQCAADQA/AEEQdA8LAkAgAEH//wNxDQAgAEF/TA0AAkAgAEEQdkAAIgBBf0cNAEEAQTA2Api3gIAAQX8PCyAAQRB0DwsQv4CAgAAACwQAAAALC64rAQBBgAgLpisBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHBhcmFtZXRlcnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAE1LQUNUSVZJVFkAQ09QWQBOT1RJRlkAUExBWQBQVVQAQ0hFQ0tPVVQAUE9TVABSRVBPUlQASFBFX0lOVkFMSURfQ09OU1RBTlQAR0VUAEhQRV9TVFJJQ1QAUkVESVJFQ1QAQ09OTkVDVABIUEVfSU5WQUxJRF9TVEFUVVMAT1BUSU9OUwBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBIUEVfSU5WQUxJRF9VUkwATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAFBBVVNFAFBVUkdFAE1FUkdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QAUFJPUEZJTkQAVU5CSU5EAFJFQklORABIUEVfTEZfRVhQRUNURUQASFBFX1BBVVNFRABIRUFEAEV4cGVjdGVkIEhUVFAvAIwLAAB/CwAAgwoAADkNAADACwAADQsAAA8NAABlCwAAagoAACMLAABMCwAApQsAACMMAACfCgAAjAwAAPcLAAA3CwAAPwwAAG0MAADfCgAAVwwAAEkNAAC0DAAAxwwAANYKAACFDAAAfwoAAFQNAABeCgAAUQoAAJcKAACyCgAA7QwAAEAKAACcCwAAdQsAADoMAAAiDQAA5AsAAPALAACaCwAANA0AADINAAArDQAAewsAAGMKAAA1CgAAVQoAAK4MAADuCwAARQoAAP4MAAD8DAAA6AsAAKgMAADzCgAAlQsAAJMLAADdDAAAoQsAAPMMAADkDAAA/goAAEwKAACiDAAABAsAAMgKAAC6CgAAjgoAAAgNAADeCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWxvc2VlZXAtYWxpdmUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZWN0aW9uZW50LWxlbmd0aG9ucm94eS1jb25uZWN0aW9uAAAAAAAAAAAAAAAAAAAAcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAAAAAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAEAAAIAAAAAAAAAAAAAAAAAAAAAAAADBAAABAQEBAQEBAQEBAQFBAQEBAQEBAQEBAQEAAQABgcEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAACAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv' +module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzk4AwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAYGAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAAMEBQFwAQ4OBQMBAAIGCAF/AUGAuAQLB/UEHwZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAJGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAKGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQA1DGxsaHR0cF9hbGxvYwAMBm1hbGxvYwA6C2xsaHR0cF9mcmVlAA0EZnJlZQA8D2xsaHR0cF9nZXRfdHlwZQAOFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAPFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAQEWxsaHR0cF9nZXRfbWV0aG9kABEWbGxodHRwX2dldF9zdGF0dXNfY29kZQASEmxsaHR0cF9nZXRfdXBncmFkZQATDGxsaHR0cF9yZXNldAAUDmxsaHR0cF9leGVjdXRlABUUbGxodHRwX3NldHRpbmdzX2luaXQAFg1sbGh0dHBfZmluaXNoABcMbGxodHRwX3BhdXNlABgNbGxodHRwX3Jlc3VtZQAZG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAaEGxsaHR0cF9nZXRfZXJybm8AGxdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAcF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uAB0UbGxodHRwX2dldF9lcnJvcl9wb3MAHhFsbGh0dHBfZXJybm9fbmFtZQAfEmxsaHR0cF9tZXRob2RfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mADMJEwEAQQELDQECAwQFCwYHLiooJCYKxqgCOAIACwgAEIiAgIAACxkAIAAQtoCAgAAaIAAgAjYCNCAAIAE6ACgLHAAgACAALwEyIAAtAC4gABC1gICAABCAgICAAAspAQF/QTgQuoCAgAAiARC2gICAABogAUGAiICAADYCNCABIAA6ACggAQsKACAAELyAgIAACwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BMgsHACAALQAuC0UBBH8gACgCGCEBIAAtAC0hAiAALQAoIQMgACgCNCEEIAAQtoCAgAAaIAAgBDYCNCAAIAM6ACggACACOgAtIAAgATYCGAsRACAAIAEgASACahC3gICAAAtFACAAQgA3AgAgAEEwakIANwIAIABBKGpCADcCACAAQSBqQgA3AgAgAEEYakIANwIAIABBEGpCADcCACAAQQhqQgA3AgALZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI0IgFFDQAgASgCHCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQv4CAgAAACyAAQf+RgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQYSUgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBGkkNABC/gICAAAALIABBAnRByJuAgABqKAIACyIAAkAgAEEuSQ0AEL+AgIAAAAsgAEECdEGwnICAAGooAgALFgAgACAALQAtQf4BcSABQQBHcjoALQsZACAAIAAtAC1B/QFxIAFBAEdBAXRyOgAtCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI0IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZyOgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIoIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCNCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEHSioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCLCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB3ZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAjAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI0IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcOQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAI0IgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAhQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCHCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB0oiAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAiAiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL8gEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARBCHENAAJAIARBgARxRQ0AAkAgAC0AKEEBRw0AIAAtAC1BCnENAEEFDwtBBA8LAkAgBEEgcQ0AAkAgAC0AKEEBRg0AIAAvATIiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQYgEcUGABEYNAiAEQShxRQ0CC0EADwtBAEEDIAApAyBQGyEFCyAFC10BAn9BACEBAkAgAC0AKEEBRg0AIAAvATIiAkGcf2pB5ABJDQAgAkHMAUYNACACQbACRg0AIAAvATAiAEHAAHENAEEBIQEgAEGIBHFBgARGDQAgAEEocUUhAQsgAQuiAQEDfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEDIAAvATAiBEECcUUNAQwCC0EAIQMgAC8BMCIEQQFxRQ0BC0EBIQMgAC0AKEEBRg0AIAAvATIiBUGcf2pB5ABJDQAgBUHMAUYNACAFQbACRg0AIARBwABxDQBBACEDIARBiARxQYAERg0AIARBKHFBAEchAwsgAEEAOwEwIABBADoALyADC5QBAQJ/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQEgAC8BMCICQQJxRQ0BDAILQQAhASAALwEwIgJBAXFFDQELQQEhASAALQAoQQFGDQAgAC8BMiIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC08AIABBGGpCADcDACAAQgA3AwAgAEEwakIANwMAIABBKGpCADcDACAAQSBqQgA3AwAgAEEQakIANwMAIABBCGpCADcDACAAQbwBNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQuICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC9POAQMcfwN+BX8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDyABIRAgASERIAEhEiABIRMgASEUIAEhFSABIRYgASEXIAEhGCABIRkgASEaIAEhGyABIRwgASEdAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIeQX9qDrwBtwEBtgECAwQFBgcICQoLDA0ODxDAAb8BERITtQEUFRYXGBkavQG8ARscHR4fICG0AbMBIiOyAbEBJCUmJygpKissLS4vMDEyMzQ1Njc4OTq4ATs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAQC5AQtBACEeDK8BC0EPIR4MrgELQQ4hHgytAQtBECEeDKwBC0ERIR4MqwELQRQhHgyqAQtBFSEeDKkBC0EWIR4MqAELQRchHgynAQtBGCEeDKYBC0EIIR4MpQELQRkhHgykAQtBGiEeDKMBC0ETIR4MogELQRIhHgyhAQtBGyEeDKABC0EcIR4MnwELQR0hHgyeAQtBHiEeDJ0BC0GqASEeDJwBC0GrASEeDJsBC0EgIR4MmgELQSEhHgyZAQtBIiEeDJgBC0EjIR4MlwELQSQhHgyWAQtBrQEhHgyVAQtBJSEeDJQBC0EpIR4MkwELQQ0hHgySAQtBJiEeDJEBC0EnIR4MkAELQSghHgyPAQtBLiEeDI4BC0EqIR4MjQELQa4BIR4MjAELQQwhHgyLAQtBLyEeDIoBC0ErIR4MiQELQQshHgyIAQtBLCEeDIcBC0EtIR4MhgELQQohHgyFAQtBMSEeDIQBC0EwIR4MgwELQQkhHgyCAQtBHyEeDIEBC0EyIR4MgAELQTMhHgx/C0E0IR4MfgtBNSEeDH0LQTYhHgx8C0E3IR4MewtBOCEeDHoLQTkhHgx5C0E6IR4MeAtBrAEhHgx3C0E7IR4MdgtBPCEeDHULQT0hHgx0C0E+IR4McwtBPyEeDHILQcAAIR4McQtBwQAhHgxwC0HCACEeDG8LQcMAIR4MbgtBxAAhHgxtC0EHIR4MbAtBxQAhHgxrC0EGIR4MagtBxgAhHgxpC0EFIR4MaAtBxwAhHgxnC0EEIR4MZgtByAAhHgxlC0HJACEeDGQLQcoAIR4MYwtBywAhHgxiC0EDIR4MYQtBzAAhHgxgC0HNACEeDF8LQc4AIR4MXgtB0AAhHgxdC0HPACEeDFwLQdEAIR4MWwtB0gAhHgxaC0ECIR4MWQtB0wAhHgxYC0HUACEeDFcLQdUAIR4MVgtB1gAhHgxVC0HXACEeDFQLQdgAIR4MUwtB2QAhHgxSC0HaACEeDFELQdsAIR4MUAtB3AAhHgxPC0HdACEeDE4LQd4AIR4MTQtB3wAhHgxMC0HgACEeDEsLQeEAIR4MSgtB4gAhHgxJC0HjACEeDEgLQeQAIR4MRwtB5QAhHgxGC0HmACEeDEULQecAIR4MRAtB6AAhHgxDC0HpACEeDEILQeoAIR4MQQtB6wAhHgxAC0HsACEeDD8LQe0AIR4MPgtB7gAhHgw9C0HvACEeDDwLQfAAIR4MOwtB8QAhHgw6C0HyACEeDDkLQfMAIR4MOAtB9AAhHgw3C0H1ACEeDDYLQfYAIR4MNQtB9wAhHgw0C0H4ACEeDDMLQfkAIR4MMgtB+gAhHgwxC0H7ACEeDDALQfwAIR4MLwtB/QAhHgwuC0H+ACEeDC0LQf8AIR4MLAtBgAEhHgwrC0GBASEeDCoLQYIBIR4MKQtBgwEhHgwoC0GEASEeDCcLQYUBIR4MJgtBhgEhHgwlC0GHASEeDCQLQYgBIR4MIwtBiQEhHgwiC0GKASEeDCELQYsBIR4MIAtBjAEhHgwfC0GNASEeDB4LQY4BIR4MHQtBjwEhHgwcC0GQASEeDBsLQZEBIR4MGgtBkgEhHgwZC0GTASEeDBgLQZQBIR4MFwtBlQEhHgwWC0GWASEeDBULQZcBIR4MFAtBmAEhHgwTC0GZASEeDBILQZ0BIR4MEQtBmgEhHgwQC0EBIR4MDwtBmwEhHgwOC0GcASEeDA0LQZ4BIR4MDAtBoAEhHgwLC0GfASEeDAoLQaEBIR4MCQtBogEhHgwIC0GjASEeDAcLQaQBIR4MBgtBpQEhHgwFC0GmASEeDAQLQacBIR4MAwtBqAEhHgwCC0GpASEeDAELQa8BIR4LA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgHg6wAQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgaHB4fICMkJSYnKCkqLC0uLzD7AjQ2ODk8P0FCQ0RFRkdISUpLTE1OT1BRUlNVV1lcXV5gYmNkZWZnaGtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAdoB4AHhAeQB8QG9Ar0CCyABIgggAkcNwgFBvAEhHgyVAwsgASIeIAJHDbEBQawBIR4MlAMLIAEiASACRw1nQeIAIR4MkwMLIAEiASACRw1dQdoAIR4MkgMLIAEiASACRw1WQdUAIR4MkQMLIAEiASACRw1SQdMAIR4MkAMLIAEiASACRw1PQdEAIR4MjwMLIAEiASACRw1MQc8AIR4MjgMLIAEiASACRw0QQQwhHgyNAwsgASIBIAJHDTNBOCEeDIwDCyABIgEgAkcNL0E1IR4MiwMLIAEiASACRw0mQTIhHgyKAwsgASIBIAJHDSRBLyEeDIkDCyABIgEgAkcNHUEkIR4MiAMLIAAtAC5BAUYN/QIMxwELIAAgASIBIAIQtICAgABBAUcNtAEMtQELIAAgASIBIAIQrYCAgAAiHg21ASABIQEMsAILAkAgASIBIAJHDQBBBiEeDIUDCyAAIAFBAWoiASACELCAgIAAIh4NtgEgASEBDA8LIABCADcDIEETIR4M8wILIAEiHiACRw0JQQ8hHgyCAwsCQCABIgEgAkYNACABQQFqIQFBESEeDPICC0EHIR4MgQMLIABCACAAKQMgIh8gAiABIh5rrSIgfSIhICEgH1YbNwMgIB8gIFYiIkUNswFBCCEeDIADCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEVIR4M8AILQQkhHgz/AgsgASEBIAApAyBQDbIBIAEhAQytAgsCQCABIgEgAkcNAEELIR4M/gILIAAgAUEBaiIBIAIQr4CAgAAiHg2yASABIQEMrQILA0ACQCABLQAAQfCdgIAAai0AACIeQQFGDQAgHkECRw20ASABQQFqIQEMAwsgAUEBaiIBIAJHDQALQQwhHgz8AgsCQCABIgEgAkcNAEENIR4M/AILAkACQCABLQAAIh5Bc2oOFAG2AbYBtgG2AbYBtgG2AbYBtgG2AbYBtgG2AbYBtgG2AbYBtgEAtAELIAFBAWohAQy0AQsgAUEBaiEBC0EYIR4M6gILAkAgASIeIAJHDQBBDiEeDPoCC0IAIR8gHiEBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAeLQAAQVBqDjfIAccBAAECAwQFBge+Ar4CvgK+Ar4CvgK+AggJCgsMDb4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgIODxAREhO+AgtCAiEfDMcBC0IDIR8MxgELQgQhHwzFAQtCBSEfDMQBC0IGIR8MwwELQgchHwzCAQtCCCEfDMEBC0IJIR8MwAELQgohHwy/AQtCCyEfDL4BC0IMIR8MvQELQg0hHwy8AQtCDiEfDLsBC0IPIR8MugELQgohHwy5AQtCCyEfDLgBC0IMIR8MtwELQg0hHwy2AQtCDiEfDLUBC0IPIR8MtAELQgAhHwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgHi0AAEFQag43xwHGAQABAgMEBQYHyAHIAcgByAHIAcgByAEICQoLDA3IAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgBDg8QERITyAELQgIhHwzGAQtCAyEfDMUBC0IEIR8MxAELQgUhHwzDAQtCBiEfDMIBC0IHIR8MwQELQgghHwzAAQtCCSEfDL8BC0IKIR8MvgELQgshHwy9AQtCDCEfDLwBC0INIR8MuwELQg4hHwy6AQtCDyEfDLkBC0IKIR8MuAELQgshHwy3AQtCDCEfDLYBC0INIR8MtQELQg4hHwy0AQtCDyEfDLMBCyAAQgAgACkDICIfIAIgASIea60iIH0iISAhIB9WGzcDICAfICBWIiJFDbQBQREhHgz3AgsCQCABIgEgAkYNACAAQYmAgIAANgIIIAAgATYCBCABIQFBGyEeDOcCC0ESIR4M9gILIAAgASIeIAIQsoCAgABBf2oOBaYBAKICAbMBtAELQRIhHgzkAgsgAEEBOgAvIB4hAQzyAgsgASIBIAJHDbQBQRYhHgzyAgsgASIcIAJHDRlBOSEeDPECCwJAIAEiASACRw0AQRohHgzxAgsgAEEANgIEIABBioCAgAA2AgggACABIAEQqoCAgAAiHg22ASABIQEMuQELAkAgASIeIAJHDQBBGyEeDPACCwJAIB4tAAAiAUEgRw0AIB5BAWohAQwaCyABQQlHDbYBIB5BAWohAQwZCwJAIAEiASACRg0AIAFBAWohAQwUC0EcIR4M7gILAkAgASIeIAJHDQBBHSEeDO4CCwJAIB4tAAAiAUEJRw0AIB4hAQzSAgsgAUEgRw21ASAeIQEM0QILAkAgASIBIAJHDQBBHiEeDO0CCyABLQAAQQpHDbgBIAFBAWohAQygAgsgASIBIAJHDbgBQSIhHgzrAgsDQAJAIAEtAAAiHkEgRg0AAkAgHkF2ag4EAL4BvgEAvAELIAEhAQzEAQsgAUEBaiIBIAJHDQALQSQhHgzqAgtBJSEeIAEiIyACRg3pAiACICNrIAAoAgAiJGohJSAjISYgJCEBAkADQCAmLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQfCfgIAAai0AAEcNASABQQNGDdYCIAFBAWohASAmQQFqIiYgAkcNAAsgACAlNgIADOoCCyAAQQA2AgAgJiEBDLsBC0EmIR4gASIjIAJGDegCIAIgI2sgACgCACIkaiElICMhJiAkIQECQANAICYtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFB9J+AgABqLQAARw0BIAFBCEYNvQEgAUEBaiEBICZBAWoiJiACRw0ACyAAICU2AgAM6QILIABBADYCACAmIQEMugELQSchHiABIiMgAkYN5wIgAiAjayAAKAIAIiRqISUgIyEmICQhAQJAA0AgJi0AACIiQSByICIgIkG/f2pB/wFxQRpJG0H/AXEgAUHQpoCAAGotAABHDQEgAUEFRg29ASABQQFqIQEgJkEBaiImIAJHDQALIAAgJTYCAAzoAgsgAEEANgIAICYhAQy5AQsCQCABIgEgAkYNAANAAkAgAS0AAEGAooCAAGotAAAiHkEBRg0AIB5BAkYNCiABIQEMwQELIAFBAWoiASACRw0AC0EjIR4M5wILQSMhHgzmAgsCQCABIgEgAkYNAANAAkAgAS0AACIeQSBGDQAgHkF2ag4EvQG+Ab4BvQG+AQsgAUEBaiIBIAJHDQALQSshHgzmAgtBKyEeDOUCCwNAAkAgAS0AACIeQSBGDQAgHkEJRw0DCyABQQFqIgEgAkcNAAtBLyEeDOQCCwNAAkAgAS0AACIeQSBGDQACQAJAIB5BdmoOBL4BAQG+AQALIB5BLEYNvwELIAEhAQwECyABQQFqIgEgAkcNAAtBMiEeDOMCCyABIQEMvwELQTMhHiABIiYgAkYN4QIgAiAmayAAKAIAIiNqISQgJiEiICMhAQJAA0AgIi0AAEEgciABQYCkgIAAai0AAEcNASABQQZGDdACIAFBAWohASAiQQFqIiIgAkcNAAsgACAkNgIADOICCyAAQQA2AgAgIiEBC0ErIR4M0AILAkAgASIdIAJHDQBBNCEeDOACCyAAQYqAgIAANgIIIAAgHTYCBCAdIQEgAC0ALEF/ag4ErwG5AbsBvQHHAgsgAUEBaiEBDK4BCwJAIAEiASACRg0AA0ACQCABLQAAIh5BIHIgHiAeQb9/akH/AXFBGkkbQf8BcSIeQQlGDQAgHkEgRg0AAkACQAJAAkAgHkGdf2oOEwADAwMDAwMDAQMDAwMDAwMDAwIDCyABQQFqIQFBJiEeDNMCCyABQQFqIQFBJyEeDNICCyABQQFqIQFBKCEeDNECCyABIQEMsgELIAFBAWoiASACRw0AC0EoIR4M3gILQSghHgzdAgsCQCABIgEgAkYNAANAAkAgAS0AAEGAoICAAGotAABBAUYNACABIQEMtwELIAFBAWoiASACRw0AC0EwIR4M3QILQTAhHgzcAgsCQANAAkAgAS0AAEF3ag4YAALBAsECxwLBAsECwQLBAsECwQLBAsECwQLBAsECwQLBAsECwQLBAsECwQIAwQILIAFBAWoiASACRw0AC0E1IR4M3AILIAFBAWohAQtBISEeDMoCCyABIgEgAkcNuQFBNyEeDNkCCwNAAkAgAS0AAEGQpICAAGotAABBAUYNACABIQEMkAILIAFBAWoiASACRw0AC0E4IR4M2AILIBwtAAAiHkEgRg2aASAeQTpHDcYCIAAoAgQhASAAQQA2AgQgACABIBwQqICAgAAiAQ22ASAcQQFqIQEMuAELIAAgASACEKmAgIAAGgtBCiEeDMUCC0E6IR4gASImIAJGDdQCIAIgJmsgACgCACIjaiEkICYhHCAjIQECQANAIBwtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFBkKaAgABqLQAARw3EAiABQQVGDQEgAUEBaiEBIBxBAWoiHCACRw0ACyAAICQ2AgAM1QILIABBADYCACAAQQE6ACwgJiAja0EGaiEBDL4CC0E7IR4gASImIAJGDdMCIAIgJmsgACgCACIjaiEkICYhHCAjIQECQANAIBwtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFBlqaAgABqLQAARw3DAiABQQlGDQEgAUEBaiEBIBxBAWoiHCACRw0ACyAAICQ2AgAM1AILIABBADYCACAAQQI6ACwgJiAja0EKaiEBDL0CCwJAIAEiHCACRw0AQTwhHgzTAgsCQAJAIBwtAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZJ/ag4HAMMCwwLDAsMCwwIBwwILIBxBAWohAUEyIR4MwwILIBxBAWohAUEzIR4MwgILQT0hHiABIiYgAkYN0QIgAiAmayAAKAIAIiNqISQgJiEcICMhAQNAIBwtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFBoKaAgABqLQAARw3AAiABQQFGDbQCIAFBAWohASAcQQFqIhwgAkcNAAsgACAkNgIADNECC0E+IR4gASImIAJGDdACIAIgJmsgACgCACIjaiEkICYhHCAjIQECQANAIBwtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFBoqaAgABqLQAARw3AAiABQQ5GDQEgAUEBaiEBIBxBAWoiHCACRw0ACyAAICQ2AgAM0QILIABBADYCACAAQQE6ACwgJiAja0EPaiEBDLoCC0E/IR4gASImIAJGDc8CIAIgJmsgACgCACIjaiEkICYhHCAjIQECQANAIBwtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFBwKaAgABqLQAARw2/AiABQQ9GDQEgAUEBaiEBIBxBAWoiHCACRw0ACyAAICQ2AgAM0AILIABBADYCACAAQQM6ACwgJiAja0EQaiEBDLkCC0HAACEeIAEiJiACRg3OAiACICZrIAAoAgAiI2ohJCAmIRwgIyEBAkADQCAcLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQdCmgIAAai0AAEcNvgIgAUEFRg0BIAFBAWohASAcQQFqIhwgAkcNAAsgACAkNgIADM8CCyAAQQA2AgAgAEEEOgAsICYgI2tBBmohAQy4AgsCQCABIhwgAkcNAEHBACEeDM4CCwJAAkACQAJAIBwtAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAMACwALAAsACwALAAsACwALAAsACwALAAgHAAsACwAICA8ACCyAcQQFqIQFBNSEeDMACCyAcQQFqIQFBNiEeDL8CCyAcQQFqIQFBNyEeDL4CCyAcQQFqIQFBOCEeDL0CCwJAIAEiASACRg0AIABBi4CAgAA2AgggACABNgIEIAEhAUE5IR4MvQILQcIAIR4MzAILIAEiASACRw2vAUHEACEeDMsCC0HFACEeIAEiJiACRg3KAiACICZrIAAoAgAiI2ohJCAmISIgIyEBAkADQCAiLQAAIAFB1qaAgABqLQAARw20ASABQQFGDQEgAUEBaiEBICJBAWoiIiACRw0ACyAAICQ2AgAMywILIABBADYCACAmICNrQQJqIQEMrwELAkAgASIBIAJHDQBBxwAhHgzKAgsgAS0AAEEKRw2zASABQQFqIQEMrwELAkAgASIBIAJHDQBByAAhHgzJAgsCQAJAIAEtAABBdmoOBAG0AbQBALQBCyABQQFqIQFBPSEeDLkCCyABQQFqIQEMrgELAkAgASIBIAJHDQBByQAhHgzIAgtBACEeAkACQAJAAkACQAJAAkACQCABLQAAQVBqDgq7AboBAAECAwQFBge8AQtBAiEeDLoBC0EDIR4MuQELQQQhHgy4AQtBBSEeDLcBC0EGIR4MtgELQQchHgy1AQtBCCEeDLQBC0EJIR4MswELAkAgASIBIAJHDQBBygAhHgzHAgsgAS0AAEEuRw20ASABQQFqIQEMgAILAkAgASIBIAJHDQBBywAhHgzGAgtBACEeAkACQAJAAkACQAJAAkACQCABLQAAQVBqDgq9AbwBAAECAwQFBge+AQtBAiEeDLwBC0EDIR4MuwELQQQhHgy6AQtBBSEeDLkBC0EGIR4MuAELQQchHgy3AQtBCCEeDLYBC0EJIR4MtQELQcwAIR4gASImIAJGDcQCIAIgJmsgACgCACIjaiEkICYhASAjISIDQCABLQAAICJB4qaAgABqLQAARw24ASAiQQNGDbcBICJBAWohIiABQQFqIgEgAkcNAAsgACAkNgIADMQCC0HNACEeIAEiJiACRg3DAiACICZrIAAoAgAiI2ohJCAmIQEgIyEiA0AgAS0AACAiQeamgIAAai0AAEcNtwEgIkECRg25ASAiQQFqISIgAUEBaiIBIAJHDQALIAAgJDYCAAzDAgtBzgAhHiABIiYgAkYNwgIgAiAmayAAKAIAIiNqISQgJiEBICMhIgNAIAEtAAAgIkHppoCAAGotAABHDbYBICJBA0YNuQEgIkEBaiEiIAFBAWoiASACRw0ACyAAICQ2AgAMwgILA0ACQCABLQAAIh5BIEYNAAJAAkACQCAeQbh/ag4LAAG6AboBugG6AboBugG6AboBAroBCyABQQFqIQFBwgAhHgy1AgsgAUEBaiEBQcMAIR4MtAILIAFBAWohAUHEACEeDLMCCyABQQFqIgEgAkcNAAtBzwAhHgzBAgsCQCABIgEgAkYNACAAIAFBAWoiASACEKWAgIAAGiABIQFBByEeDLECC0HQACEeDMACCwNAAkAgAS0AAEHwpoCAAGotAAAiHkEBRg0AIB5BfmoOA7kBugG7AbwBCyABQQFqIgEgAkcNAAtB0QAhHgy/AgsCQCABIgEgAkYNACABQQFqIQEMAwtB0gAhHgy+AgsDQAJAIAEtAABB8KiAgABqLQAAIh5BAUYNAAJAIB5BfmoOBLwBvQG+AQC/AQsgASEBQcYAIR4MrwILIAFBAWoiASACRw0AC0HTACEeDL0CCwJAIAEiASACRw0AQdQAIR4MvQILAkAgAS0AACIeQXZqDhqkAb8BvwGmAb8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/AbQBvwG/AQC9AQsgAUEBaiEBC0EGIR4MqwILA0ACQCABLQAAQfCqgIAAai0AAEEBRg0AIAEhAQz6AQsgAUEBaiIBIAJHDQALQdUAIR4MugILAkAgASIBIAJGDQAgAUEBaiEBDAMLQdYAIR4MuQILAkAgASIBIAJHDQBB1wAhHgy5AgsgAUEBaiEBDAELAkAgASIBIAJHDQBB2AAhHgy4AgsgAUEBaiEBC0EEIR4MpgILAkAgASIiIAJHDQBB2QAhHgy2AgsgIiEBAkACQAJAICItAABB8KyAgABqLQAAQX9qDge+Ab8BwAEA+AEBAsEBCyAiQQFqIQEMCgsgIkEBaiEBDLcBC0EAIR4gAEEANgIcIABB8Y6AgAA2AhAgAEEHNgIMIAAgIkEBajYCFAy1AgsCQANAAkAgAS0AAEHwrICAAGotAAAiHkEERg0AAkACQCAeQX9qDge8Ab0BvgHDAQAEAcMBCyABIQFByQAhHgyoAgsgAUEBaiEBQcsAIR4MpwILIAFBAWoiASACRw0AC0HaACEeDLUCCyABQQFqIQEMtQELAkAgASIiIAJHDQBB2wAhHgy0AgsgIi0AAEEvRw2+ASAiQQFqIQEMBgsCQCABIiIgAkcNAEHcACEeDLMCCwJAICItAAAiAUEvRw0AICJBAWohAUHMACEeDKMCCyABQXZqIgFBFksNvQFBASABdEGJgIACcUUNvQEMkwILAkAgASIBIAJGDQAgAUEBaiEBQc0AIR4MogILQd0AIR4MsQILAkAgASIiIAJHDQBB3wAhHgyxAgsgIiEBAkAgIi0AAEHwsICAAGotAABBf2oOA5IC8AEAvgELQdAAIR4MoAILAkAgASIiIAJGDQADQAJAICItAABB8K6AgABqLQAAIgFBA0YNAAJAIAFBf2oOApQCAL8BCyAiIQFBzgAhHgyiAgsgIkEBaiIiIAJHDQALQd4AIR4MsAILQd4AIR4MrwILAkAgASIBIAJGDQAgAEGMgICAADYCCCAAIAE2AgQgASEBQc8AIR4MnwILQeAAIR4MrgILAkAgASIBIAJHDQBB4QAhHgyuAgsgAEGMgICAADYCCCAAIAE2AgQgASEBC0EDIR4MnAILA0AgAS0AAEEgRw2MAiABQQFqIgEgAkcNAAtB4gAhHgyrAgsCQCABIgEgAkcNAEHjACEeDKsCCyABLQAAQSBHDbgBIAFBAWohAQzUAQsCQCABIgggAkcNAEHkACEeDKoCCyAILQAAQcwARw27ASAIQQFqIQFBEyEeDLkBC0HlACEeIAEiIiACRg2oAiACICJrIAAoAgAiJmohIyAiIQggJiEBA0AgCC0AACABQfCygIAAai0AAEcNugEgAUEFRg24ASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIzYCAAyoAgsCQCABIgggAkcNAEHmACEeDKgCCwJAAkAgCC0AAEG9f2oODAC7AbsBuwG7AbsBuwG7AbsBuwG7AQG7AQsgCEEBaiEBQdQAIR4MmAILIAhBAWohAUHVACEeDJcCC0HnACEeIAEiIiACRg2mAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFB7bOAgABqLQAARw25ASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMpwILIABBADYCACAiICZrQQNqIQFBECEeDLYBC0HoACEeIAEiIiACRg2lAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFB9rKAgABqLQAARw24ASABQQVGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMpgILIABBADYCACAiICZrQQZqIQFBFiEeDLUBC0HpACEeIAEiIiACRg2kAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFB/LKAgABqLQAARw23ASABQQNGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMpQILIABBADYCACAiICZrQQRqIQFBBSEeDLQBCwJAIAEiCCACRw0AQeoAIR4MpAILIAgtAABB2QBHDbUBIAhBAWohAUEIIR4MswELAkAgASIIIAJHDQBB6wAhHgyjAgsCQAJAIAgtAABBsn9qDgMAtgEBtgELIAhBAWohAUHZACEeDJMCCyAIQQFqIQFB2gAhHgySAgsCQCABIgggAkcNAEHsACEeDKICCwJAAkAgCC0AAEG4f2oOCAC1AbUBtQG1AbUBtQEBtQELIAhBAWohAUHYACEeDJICCyAIQQFqIQFB2wAhHgyRAgtB7QAhHiABIiIgAkYNoAIgAiAiayAAKAIAIiZqISMgIiEIICYhAQJAA0AgCC0AACABQYCzgIAAai0AAEcNswEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADKECC0EAIR4gAEEANgIAICIgJmtBA2ohAQywAQtB7gAhHiABIiIgAkYNnwIgAiAiayAAKAIAIiZqISMgIiEIICYhAQJAA0AgCC0AACABQYOzgIAAai0AAEcNsgEgAUEERg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADKACCyAAQQA2AgAgIiAma0EFaiEBQSMhHgyvAQsCQCABIgggAkcNAEHvACEeDJ8CCwJAAkAgCC0AAEG0f2oOCACyAbIBsgGyAbIBsgEBsgELIAhBAWohAUHdACEeDI8CCyAIQQFqIQFB3gAhHgyOAgsCQCABIgggAkcNAEHwACEeDJ4CCyAILQAAQcUARw2vASAIQQFqIQEM3gELQfEAIR4gASIiIAJGDZwCIAIgImsgACgCACImaiEjICIhCCAmIQECQANAIAgtAAAgAUGIs4CAAGotAABHDa8BIAFBA0YNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIzYCAAydAgsgAEEANgIAICIgJmtBBGohAUEtIR4MrAELQfIAIR4gASIiIAJGDZsCIAIgImsgACgCACImaiEjICIhCCAmIQECQANAIAgtAAAgAUHQs4CAAGotAABHDa4BIAFBCEYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIzYCAAycAgsgAEEANgIAICIgJmtBCWohAUEpIR4MqwELAkAgASIBIAJHDQBB8wAhHgybAgtBASEeIAEtAABB3wBHDaoBIAFBAWohAQzcAQtB9AAhHiABIiIgAkYNmQIgAiAiayAAKAIAIiZqISMgIiEIICYhAQNAIAgtAAAgAUGMs4CAAGotAABHDasBIAFBAUYN9wEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMmQILAkAgASIeIAJHDQBB9QAhHgyZAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQY6zgIAAai0AAEcNqwEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQfUAIR4MmQILIABBADYCACAeICJrQQNqIQFBAiEeDKgBCwJAIAEiHiACRw0AQfYAIR4MmAILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUHws4CAAGotAABHDaoBIAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH2ACEeDJgCCyAAQQA2AgAgHiAia0ECaiEBQR8hHgynAQsCQCABIh4gAkcNAEH3ACEeDJcCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFB8rOAgABqLQAARw2pASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB9wAhHgyXAgsgAEEANgIAIB4gImtBAmohAUEJIR4MpgELAkAgASIIIAJHDQBB+AAhHgyWAgsCQAJAIAgtAABBt39qDgcAqQGpAakBqQGpAQGpAQsgCEEBaiEBQeYAIR4MhgILIAhBAWohAUHnACEeDIUCCwJAIAEiHiACRw0AQfkAIR4MlQILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGRs4CAAGotAABHDacBIAFBBUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH5ACEeDJUCCyAAQQA2AgAgHiAia0EGaiEBQRghHgykAQsCQCABIh4gAkcNAEH6ACEeDJQCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBl7OAgABqLQAARw2mASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB+gAhHgyUAgsgAEEANgIAIB4gImtBA2ohAUEXIR4MowELAkAgASIeIAJHDQBB+wAhHgyTAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQZqzgIAAai0AAEcNpQEgAUEGRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQfsAIR4MkwILIABBADYCACAeICJrQQdqIQFBFSEeDKIBCwJAIAEiHiACRw0AQfwAIR4MkgILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGhs4CAAGotAABHDaQBIAFBBUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH8ACEeDJICCyAAQQA2AgAgHiAia0EGaiEBQR4hHgyhAQsCQCABIgggAkcNAEH9ACEeDJECCyAILQAAQcwARw2iASAIQQFqIQFBCiEeDKABCwJAIAEiCCACRw0AQf4AIR4MkAILAkACQCAILQAAQb9/ag4PAKMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBAaMBCyAIQQFqIQFB7AAhHgyAAgsgCEEBaiEBQe0AIR4M/wELAkAgASIIIAJHDQBB/wAhHgyPAgsCQAJAIAgtAABBv39qDgMAogEBogELIAhBAWohAUHrACEeDP8BCyAIQQFqIQFB7gAhHgz+AQsCQCABIh4gAkcNAEGAASEeDI4CCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBp7OAgABqLQAARw2gASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBBgAEhHgyOAgsgAEEANgIAIB4gImtBAmohAUELIR4MnQELAkAgASIIIAJHDQBBgQEhHgyNAgsCQAJAAkACQCAILQAAQVNqDiMAogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAQGiAaIBogGiAaIBAqIBogGiAQOiAQsgCEEBaiEBQekAIR4M/wELIAhBAWohAUHqACEeDP4BCyAIQQFqIQFB7wAhHgz9AQsgCEEBaiEBQfAAIR4M/AELAkAgASIeIAJHDQBBggEhHgyMAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQamzgIAAai0AAEcNngEgAUEERg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYIBIR4MjAILIABBADYCACAeICJrQQVqIQFBGSEeDJsBCwJAIAEiIiACRw0AQYMBIR4MiwILIAIgImsgACgCACImaiEeICIhCCAmIQECQANAIAgtAAAgAUGus4CAAGotAABHDZ0BIAFBBUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgHjYCAEGDASEeDIsCCyAAQQA2AgBBBiEeICIgJmtBBmohAQyaAQsCQCABIh4gAkcNAEGEASEeDIoCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBtLOAgABqLQAARw2cASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBBhAEhHgyKAgsgAEEANgIAIB4gImtBAmohAUEcIR4MmQELAkAgASIeIAJHDQBBhQEhHgyJAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQbazgIAAai0AAEcNmwEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYUBIR4MiQILIABBADYCACAeICJrQQJqIQFBJyEeDJgBCwJAIAEiCCACRw0AQYYBIR4MiAILAkACQCAILQAAQax/ag4CAAGbAQsgCEEBaiEBQfQAIR4M+AELIAhBAWohAUH1ACEeDPcBCwJAIAEiHiACRw0AQYcBIR4MhwILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUG4s4CAAGotAABHDZkBIAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEGHASEeDIcCCyAAQQA2AgAgHiAia0ECaiEBQSYhHgyWAQsCQCABIh4gAkcNAEGIASEeDIYCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBurOAgABqLQAARw2YASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBBiAEhHgyGAgsgAEEANgIAIB4gImtBAmohAUEDIR4MlQELAkAgASIeIAJHDQBBiQEhHgyFAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQe2zgIAAai0AAEcNlwEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYkBIR4MhQILIABBADYCACAeICJrQQNqIQFBDCEeDJQBCwJAIAEiHiACRw0AQYoBIR4MhAILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUG8s4CAAGotAABHDZYBIAFBA0YNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEGKASEeDIQCCyAAQQA2AgAgHiAia0EEaiEBQQ0hHgyTAQsCQCABIgggAkcNAEGLASEeDIMCCwJAAkAgCC0AAEG6f2oOCwCWAZYBlgGWAZYBlgGWAZYBlgEBlgELIAhBAWohAUH5ACEeDPMBCyAIQQFqIQFB+gAhHgzyAQsCQCABIgggAkcNAEGMASEeDIICCyAILQAAQdAARw2TASAIQQFqIQEMxAELAkAgASIIIAJHDQBBjQEhHgyBAgsCQAJAIAgtAABBt39qDgcBlAGUAZQBlAGUAQCUAQsgCEEBaiEBQfwAIR4M8QELIAhBAWohAUEiIR4MkAELAkAgASIeIAJHDQBBjgEhHgyAAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQcCzgIAAai0AAEcNkgEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQY4BIR4MgAILIABBADYCACAeICJrQQJqIQFBHSEeDI8BCwJAIAEiCCACRw0AQY8BIR4M/wELAkACQCAILQAAQa5/ag4DAJIBAZIBCyAIQQFqIQFB/gAhHgzvAQsgCEEBaiEBQQQhHgyOAQsCQCABIgggAkcNAEGQASEeDP4BCwJAAkACQAJAAkAgCC0AAEG/f2oOFQCUAZQBlAGUAZQBlAGUAZQBlAGUAQGUAZQBApQBlAEDlAGUAQSUAQsgCEEBaiEBQfYAIR4M8QELIAhBAWohAUH3ACEeDPABCyAIQQFqIQFB+AAhHgzvAQsgCEEBaiEBQf0AIR4M7gELIAhBAWohAUH/ACEeDO0BCwJAIAQgAkcNAEGRASEeDP0BCyACIARrIAAoAgAiHmohIiAEIQggHiEBAkADQCAILQAAIAFB7bOAgABqLQAARw2PASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBkQEhHgz9AQsgAEEANgIAIAQgHmtBA2ohAUERIR4MjAELAkAgBSACRw0AQZIBIR4M/AELIAIgBWsgACgCACIeaiEiIAUhCCAeIQECQANAIAgtAAAgAUHCs4CAAGotAABHDY4BIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGSASEeDPwBCyAAQQA2AgAgBSAea0EDaiEBQSwhHgyLAQsCQCAGIAJHDQBBkwEhHgz7AQsgAiAGayAAKAIAIh5qISIgBiEIIB4hAQJAA0AgCC0AACABQcWzgIAAai0AAEcNjQEgAUEERg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQZMBIR4M+wELIABBADYCACAGIB5rQQVqIQFBKyEeDIoBCwJAIAcgAkcNAEGUASEeDPoBCyACIAdrIAAoAgAiHmohIiAHIQggHiEBAkADQCAILQAAIAFByrOAgABqLQAARw2MASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBlAEhHgz6AQsgAEEANgIAIAcgHmtBA2ohAUEUIR4MiQELAkAgCCACRw0AQZUBIR4M+QELAkACQAJAAkAgCC0AAEG+f2oODwABAo4BjgGOAY4BjgGOAY4BjgGOAY4BjgEDjgELIAhBAWohBEGBASEeDOsBCyAIQQFqIQVBggEhHgzqAQsgCEEBaiEGQYMBIR4M6QELIAhBAWohB0GEASEeDOgBCwJAIAggAkcNAEGWASEeDPgBCyAILQAAQcUARw2JASAIQQFqIQgMuwELAkAgCSACRw0AQZcBIR4M9wELIAIgCWsgACgCACIeaiEiIAkhCCAeIQECQANAIAgtAAAgAUHNs4CAAGotAABHDYkBIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGXASEeDPcBCyAAQQA2AgAgCSAea0EDaiEBQQ4hHgyGAQsCQCAIIAJHDQBBmAEhHgz2AQsgCC0AAEHQAEcNhwEgCEEBaiEBQSUhHgyFAQsCQCAKIAJHDQBBmQEhHgz1AQsgAiAKayAAKAIAIh5qISIgCiEIIB4hAQJAA0AgCC0AACABQdCzgIAAai0AAEcNhwEgAUEIRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQZkBIR4M9QELIABBADYCACAKIB5rQQlqIQFBKiEeDIQBCwJAIAggAkcNAEGaASEeDPQBCwJAAkAgCC0AAEGrf2oOCwCHAYcBhwGHAYcBhwGHAYcBhwEBhwELIAhBAWohCEGIASEeDOQBCyAIQQFqIQpBiQEhHgzjAQsCQCAIIAJHDQBBmwEhHgzzAQsCQAJAIAgtAABBv39qDhQAhgGGAYYBhgGGAYYBhgGGAYYBhgGGAYYBhgGGAYYBhgGGAYYBAYYBCyAIQQFqIQlBhwEhHgzjAQsgCEEBaiEIQYoBIR4M4gELAkAgCyACRw0AQZwBIR4M8gELIAIgC2sgACgCACIeaiEiIAshCCAeIQECQANAIAgtAAAgAUHZs4CAAGotAABHDYQBIAFBA0YNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGcASEeDPIBCyAAQQA2AgAgCyAea0EEaiEBQSEhHgyBAQsCQCAMIAJHDQBBnQEhHgzxAQsgAiAMayAAKAIAIh5qISIgDCEIIB4hAQJAA0AgCC0AACABQd2zgIAAai0AAEcNgwEgAUEGRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQZ0BIR4M8QELIABBADYCACAMIB5rQQdqIQFBGiEeDIABCwJAIAggAkcNAEGeASEeDPABCwJAAkACQCAILQAAQbt/ag4RAIQBhAGEAYQBhAGEAYQBhAGEAQGEAYQBhAGEAYQBAoQBCyAIQQFqIQhBiwEhHgzhAQsgCEEBaiELQYwBIR4M4AELIAhBAWohDEGNASEeDN8BCwJAIA0gAkcNAEGfASEeDO8BCyACIA1rIAAoAgAiHmohIiANIQggHiEBAkADQCAILQAAIAFB5LOAgABqLQAARw2BASABQQVGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBnwEhHgzvAQsgAEEANgIAIA0gHmtBBmohAUEoIR4MfgsCQCAOIAJHDQBBoAEhHgzuAQsgAiAOayAAKAIAIh5qISIgDiEIIB4hAQJAA0AgCC0AACABQeqzgIAAai0AAEcNgAEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQaABIR4M7gELIABBADYCACAOIB5rQQNqIQFBByEeDH0LAkAgCCACRw0AQaEBIR4M7QELAkACQCAILQAAQbt/ag4OAIABgAGAAYABgAGAAYABgAGAAYABgAGAAQGAAQsgCEEBaiENQY8BIR4M3QELIAhBAWohDkGQASEeDNwBCwJAIA8gAkcNAEGiASEeDOwBCyACIA9rIAAoAgAiHmohIiAPIQggHiEBAkADQCAILQAAIAFB7bOAgABqLQAARw1+IAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGiASEeDOwBCyAAQQA2AgAgDyAea0EDaiEBQRIhHgx7CwJAIBAgAkcNAEGjASEeDOsBCyACIBBrIAAoAgAiHmohIiAQIQggHiEBAkADQCAILQAAIAFB8LOAgABqLQAARw19IAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGjASEeDOsBCyAAQQA2AgAgECAea0ECaiEBQSAhHgx6CwJAIBEgAkcNAEGkASEeDOoBCyACIBFrIAAoAgAiHmohIiARIQggHiEBAkADQCAILQAAIAFB8rOAgABqLQAARw18IAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGkASEeDOoBCyAAQQA2AgAgESAea0ECaiEBQQ8hHgx5CwJAIAggAkcNAEGlASEeDOkBCwJAAkAgCC0AAEG3f2oOBwB8fHx8fAF8CyAIQQFqIRBBkwEhHgzZAQsgCEEBaiERQZQBIR4M2AELAkAgEiACRw0AQaYBIR4M6AELIAIgEmsgACgCACIeaiEiIBIhCCAeIQECQANAIAgtAAAgAUH0s4CAAGotAABHDXogAUEHRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQaYBIR4M6AELIABBADYCACASIB5rQQhqIQFBGyEeDHcLAkAgCCACRw0AQacBIR4M5wELAkACQAJAIAgtAABBvn9qDhIAe3t7e3t7e3t7AXt7e3t7ewJ7CyAIQQFqIQ9BkgEhHgzYAQsgCEEBaiEIQZUBIR4M1wELIAhBAWohEkGWASEeDNYBCwJAIAggAkcNAEGoASEeDOYBCyAILQAAQc4ARw13IAhBAWohCAyqAQsCQCAIIAJHDQBBqQEhHgzlAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAILQAAQb9/ag4VAAECA4YBBAUGhgGGAYYBBwgJCguGAQwNDg+GAQsgCEEBaiEBQdYAIR4M4wELIAhBAWohAUHXACEeDOIBCyAIQQFqIQFB3AAhHgzhAQsgCEEBaiEBQeAAIR4M4AELIAhBAWohAUHhACEeDN8BCyAIQQFqIQFB5AAhHgzeAQsgCEEBaiEBQeUAIR4M3QELIAhBAWohAUHoACEeDNwBCyAIQQFqIQFB8QAhHgzbAQsgCEEBaiEBQfIAIR4M2gELIAhBAWohAUHzACEeDNkBCyAIQQFqIQFBgAEhHgzYAQsgCEEBaiEIQYYBIR4M1wELIAhBAWohCEGOASEeDNYBCyAIQQFqIQhBkQEhHgzVAQsgCEEBaiEIQZgBIR4M1AELAkAgFCACRw0AQasBIR4M5AELIBRBAWohEwx3CwNAAkAgHi0AAEF2ag4EdwAAegALIB5BAWoiHiACRw0AC0GsASEeDOIBCwJAIBUgAkYNACAAQY2AgIAANgIIIAAgFTYCBCAVIQFBASEeDNIBC0GtASEeDOEBCwJAIBUgAkcNAEGuASEeDOEBCwJAAkAgFS0AAEF2ag4EAasBqwEAqwELIBVBAWohFAx4CyAVQQFqIRMMdAsgACATIAIQp4CAgAAaIBMhAQxFCwJAIBUgAkcNAEGvASEeDN8BCwJAAkAgFS0AAEF2ag4XAXl5AXl5eXl5eXl5eXl5eXl5eXl5eQB5CyAVQQFqIRULQZwBIR4MzgELAkAgFiACRw0AQbEBIR4M3gELIBYtAABBIEcNdyAAQQA7ATIgFkEBaiEBQaABIR4MzQELIAEhJgJAA0AgJiIVIAJGDQEgFS0AAEFQakH/AXEiHkEKTw2oAQJAIAAvATIiIkGZM0sNACAAICJBCmwiIjsBMiAeQf//A3MgIkH+/wNxSQ0AIBVBAWohJiAAICIgHmoiHjsBMiAeQf//A3FB6AdJDQELC0EAIR4gAEEANgIcIABBnYmAgAA2AhAgAEENNgIMIAAgFUEBajYCFAzdAQtBsAEhHgzcAQsCQCAXIAJHDQBBsgEhHgzcAQtBACEeAkACQAJAAkACQAJAAkACQCAXLQAAQVBqDgp/fgABAgMEBQYHgAELQQIhHgx+C0EDIR4MfQtBBCEeDHwLQQUhHgx7C0EGIR4MegtBByEeDHkLQQghHgx4C0EJIR4MdwsCQCAYIAJHDQBBswEhHgzbAQsgGC0AAEEuRw14IBhBAWohFwymAQsCQCAZIAJHDQBBtAEhHgzaAQtBACEeAkACQAJAAkACQAJAAkACQCAZLQAAQVBqDgqBAYABAAECAwQFBgeCAQtBAiEeDIABC0EDIR4MfwtBBCEeDH4LQQUhHgx9C0EGIR4MfAtBByEeDHsLQQghHgx6C0EJIR4MeQsCQCAIIAJHDQBBtQEhHgzZAQsgAiAIayAAKAIAIiJqISYgCCEZICIhHgNAIBktAAAgHkH8s4CAAGotAABHDXsgHkEERg20ASAeQQFqIR4gGUEBaiIZIAJHDQALIAAgJjYCAEG1ASEeDNgBCwJAIBogAkcNAEG2ASEeDNgBCyACIBprIAAoAgAiHmohIiAaIQggHiEBA0AgCC0AACABQYG0gIAAai0AAEcNeyABQQFGDbYBIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQbYBIR4M1wELAkAgGyACRw0AQbcBIR4M1wELIAIgG2sgACgCACIZaiEiIBshCCAZIR4DQCAILQAAIB5Bg7SAgABqLQAARw16IB5BAkYNfCAeQQFqIR4gCEEBaiIIIAJHDQALIAAgIjYCAEG3ASEeDNYBCwJAIAggAkcNAEG4ASEeDNYBCwJAAkAgCC0AAEG7f2oOEAB7e3t7e3t7e3t7e3t7ewF7CyAIQQFqIRpBpQEhHgzGAQsgCEEBaiEbQaYBIR4MxQELAkAgCCACRw0AQbkBIR4M1QELIAgtAABByABHDXggCEEBaiEIDKIBCwJAIAggAkcNAEG6ASEeDNQBCyAILQAAQcgARg2iASAAQQE6ACgMmQELA0ACQCAILQAAQXZqDgQAenoAegsgCEEBaiIIIAJHDQALQbwBIR4M0gELIABBADoALyAALQAtQQRxRQ3IAQsgAEEAOgAvIAEhAQx5CyAeQRVGDakBIABBADYCHCAAIAE2AhQgAEGrjICAADYCECAAQRI2AgxBACEeDM8BCwJAIAAgHiACEK2AgIAAIgENACAeIQEMxQELAkAgAUEVRw0AIABBAzYCHCAAIB42AhQgAEHWkoCAADYCECAAQRU2AgxBACEeDM8BCyAAQQA2AhwgACAeNgIUIABBq4yAgAA2AhAgAEESNgIMQQAhHgzOAQsgHkEVRg2lASAAQQA2AhwgACABNgIUIABBiIyAgAA2AhAgAEEUNgIMQQAhHgzNAQsgACgCBCEmIABBADYCBCAeIB+naiIjIQEgACAmIB4gIyAiGyIeEK6AgIAAIiJFDXogAEEHNgIcIAAgHjYCFCAAICI2AgxBACEeDMwBCyAAIAAvATBBgAFyOwEwIAEhAQwxCyAeQRVGDaEBIABBADYCHCAAIAE2AhQgAEHFi4CAADYCECAAQRM2AgxBACEeDMoBCyAAQQA2AhwgACABNgIUIABBi4uAgAA2AhAgAEECNgIMQQAhHgzJAQsgHkE7Rw0BIAFBAWohAQtBCCEeDLcBC0EAIR4gAEEANgIcIAAgATYCFCAAQaOQgIAANgIQIABBDDYCDAzGAQtCASEfCyAeQQFqIQECQCAAKQMgIiBC//////////8PVg0AIAAgIEIEhiAfhDcDICABIQEMdwsgAEEANgIcIAAgATYCFCAAQYmJgIAANgIQIABBDDYCDEEAIR4MxAELIABBADYCHCAAIB42AhQgAEGjkICAADYCECAAQQw2AgxBACEeDMMBCyAAKAIEISYgAEEANgIEIB4gH6dqIiMhASAAICYgHiAjICIbIh4QroCAgAAiIkUNbiAAQQU2AhwgACAeNgIUIAAgIjYCDEEAIR4MwgELIABBADYCHCAAIB42AhQgAEHdlICAADYCECAAQQ82AgxBACEeDMEBCyAAIB4gAhCtgICAACIBDQEgHiEBC0EPIR4MrwELAkAgAUEVRw0AIABBAjYCHCAAIB42AhQgAEHWkoCAADYCECAAQRU2AgxBACEeDL8BCyAAQQA2AhwgACAeNgIUIABBq4yAgAA2AhAgAEESNgIMQQAhHgy+AQsgAUEBaiEeAkAgAC8BMCIBQYABcUUNAAJAIAAgHiACELCAgIAAIgENACAeIQEMawsgAUEVRw2XASAAQQU2AhwgACAeNgIUIABBvpKAgAA2AhAgAEEVNgIMQQAhHgy+AQsCQCABQaAEcUGgBEcNACAALQAtQQJxDQAgAEEANgIcIAAgHjYCFCAAQeyPgIAANgIQIABBBDYCDEEAIR4MvgELIAAgHiACELGAgIAAGiAeIQECQAJAAkACQAJAIAAgHiACEKyAgIAADhYCAQAEBAQEBAQEBAQEBAQEBAQEBAQDBAsgAEEBOgAuCyAAIAAvATBBwAByOwEwIB4hAQtBHSEeDK8BCyAAQRU2AhwgACAeNgIUIABB4ZGAgAA2AhAgAEEVNgIMQQAhHgy+AQsgAEEANgIcIAAgHjYCFCAAQbGLgIAANgIQIABBETYCDEEAIR4MvQELIAAtAC1BAXFFDQFBqgEhHgysAQsCQCAcIAJGDQADQAJAIBwtAABBIEYNACAcIQEMqAELIBxBAWoiHCACRw0AC0EXIR4MvAELQRchHgy7AQsgACgCBCEBIABBADYCBCAAIAEgHBCogICAACIBRQ2QASAAQRg2AhwgACABNgIMIAAgHEEBajYCFEEAIR4MugELIABBGTYCHCAAIAE2AhQgACAeNgIMQQAhHgy5AQsgHiEBQQEhIgJAAkACQAJAAkACQAJAIAAtACxBfmoOBwYFBQMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEiDAELQQQhIgsgAEEBOgAsIAAgAC8BMCAicjsBMAsgHiEBC0EgIR4MqQELIABBADYCHCAAIB42AhQgAEGBj4CAADYCECAAQQs2AgxBACEeDLgBCyAeIQFBASEiAkACQAJAAkACQCAALQAsQXtqDgQCAAEDBQtBAiEiDAELQQQhIgsgAEEBOgAsIAAgAC8BMCAicjsBMAwBCyAAIAAvATBBCHI7ATALIB4hAQtBqwEhHgymAQsgACABIAIQq4CAgAAaDBsLAkAgASIeIAJGDQAgHiEBAkACQCAeLQAAQXZqDgQBamoAagsgHkEBaiEBC0EeIR4MpQELQcMAIR4MtAELIABBADYCHCAAIAE2AhQgAEGRkYCAADYCECAAQQM2AgxBACEeDLMBCwJAIAEtAABBDUcNACAAKAIEIR4gAEEANgIEAkAgACAeIAEQqoCAgAAiHg0AIAFBAWohAQxpCyAAQR42AhwgACAeNgIMIAAgAUEBajYCFEEAIR4MswELIAEhASAALQAtQQFxRQ2uAUGtASEeDKIBCwJAIAEiASACRw0AQR8hHgyyAQsCQAJAA0ACQCABLQAAQXZqDgQCAAADAAsgAUEBaiIBIAJHDQALQR8hHgyzAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKqAgIAAIh4NACABIQEMaAsgAEEeNgIcIAAgATYCFCAAIB42AgxBACEeDLIBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQqoCAgAAiHg0AIAFBAWohAQxnCyAAQR42AhwgACAeNgIMIAAgAUEBajYCFEEAIR4MsQELIB5BLEcNASABQQFqIR5BASEBAkACQAJAAkACQCAALQAsQXtqDgQDAQIEAAsgHiEBDAQLQQIhAQwBC0EEIQELIABBAToALCAAIAAvATAgAXI7ATAgHiEBDAELIAAgAC8BMEEIcjsBMCAeIQELQS4hHgyfAQsgAEEAOgAsIAEhAQtBKSEeDJ0BCyAAQQA2AgAgIyAka0EJaiEBQQUhHgyYAQsgAEEANgIAICMgJGtBBmohAUEHIR4MlwELIAAgAC8BMEEgcjsBMCABIQEMAgsgACgCBCEIIABBADYCBAJAIAAgCCABEKqAgIAAIggNACABIQEMnQELIABBKjYCHCAAIAE2AhQgACAINgIMQQAhHgypAQsgAEEIOgAsIAEhAQtBJSEeDJcBCwJAIAAtAChBAUYNACABIQEMBAsgAC0ALUEIcUUNeCABIQEMAwsgAC0AMEEgcQ15Qa4BIR4MlQELAkAgHSACRg0AAkADQAJAIB0tAABBUGoiAUH/AXFBCkkNACAdIQFBKiEeDJgBCyAAKQMgIh9CmbPmzJmz5swZVg0BIAAgH0IKfiIfNwMgIB8gAa0iIEJ/hUKAfoRWDQEgACAfICBC/wGDfDcDICAdQQFqIh0gAkcNAAtBLCEeDKYBCyAAKAIEIQggAEEANgIEIAAgCCAdQQFqIgEQqoCAgAAiCA16IAEhAQyZAQtBLCEeDKQBCwJAIAAvATAiAUEIcUUNACAALQAoQQFHDQAgAC0ALUEIcUUNdQsgACABQff7A3FBgARyOwEwIB0hAQtBLCEeDJIBCyAAIAAvATBBEHI7ATAMhwELIABBNjYCHCAAIAE2AgwgACAcQQFqNgIUQQAhHgygAQsgAS0AAEE6Rw0CIAAoAgQhHiAAQQA2AgQgACAeIAEQqICAgAAiHg0BIAFBAWohAQtBMSEeDI4BCyAAQTY2AhwgACAeNgIMIAAgAUEBajYCFEEAIR4MnQELIABBADYCHCAAIAE2AhQgAEGHjoCAADYCECAAQQo2AgxBACEeDJwBCyABQQFqIQELIABBgBI7ASogACABIAIQpYCAgAAaIAEhAQtBrAEhHgyJAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMUAsgAEHEADYCHCAAIAE2AhQgACAeNgIMQQAhHgyYAQsgAEEANgIcIAAgIjYCFCAAQeWYgIAANgIQIABBBzYCDCAAQQA2AgBBACEeDJcBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQxPCyAAQcUANgIcIAAgATYCFCAAIB42AgxBACEeDJYBC0EAIR4gAEEANgIcIAAgATYCFCAAQeuNgIAANgIQIABBCTYCDAyVAQtBASEeCyAAIB46ACsgAUEBaiEBIAAtAClBIkYNiwEMTAsgAEEANgIcIAAgATYCFCAAQaKNgIAANgIQIABBCTYCDEEAIR4MkgELIABBADYCHCAAIAE2AhQgAEHFioCAADYCECAAQQk2AgxBACEeDJEBC0EBIR4LIAAgHjoAKiABQQFqIQEMSgsgAEEANgIcIAAgATYCFCAAQbiNgIAANgIQIABBCTYCDEEAIR4MjgELIABBADYCACAmICNrQQRqIQECQCAALQApQSNPDQAgASEBDEoLIABBADYCHCAAIAE2AhQgAEGviYCAADYCECAAQQg2AgxBACEeDI0BCyAAQQA2AgALQQAhHiAAQQA2AhwgACABNgIUIABBuZuAgAA2AhAgAEEINgIMDIsBCyAAQQA2AgAgJiAja0EDaiEBAkAgAC0AKUEhRw0AIAEhAQxHCyAAQQA2AhwgACABNgIUIABB94mAgAA2AhAgAEEINgIMQQAhHgyKAQsgAEEANgIAICYgI2tBBGohAQJAIAAtACkiHkFdakELTw0AIAEhAQxGCwJAIB5BBksNAEEBIB50QcoAcUUNACABIQEMRgtBACEeIABBADYCHCAAIAE2AhQgAEHTiYCAADYCECAAQQg2AgwMiQELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDEYLIABB0AA2AhwgACABNgIUIAAgHjYCDEEAIR4MiAELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDD8LIABBxAA2AhwgACABNgIUIAAgHjYCDEEAIR4MhwELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDD8LIABBxQA2AhwgACABNgIUIAAgHjYCDEEAIR4MhgELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDEMLIABB0AA2AhwgACABNgIUIAAgHjYCDEEAIR4MhQELIABBADYCHCAAIAE2AhQgAEGiioCAADYCECAAQQc2AgxBACEeDIQBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw7CyAAQcQANgIcIAAgATYCFCAAIB42AgxBACEeDIMBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw7CyAAQcUANgIcIAAgATYCFCAAIB42AgxBACEeDIIBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw/CyAAQdAANgIcIAAgATYCFCAAIB42AgxBACEeDIEBCyAAQQA2AhwgACABNgIUIABBuIiAgAA2AhAgAEEHNgIMQQAhHgyAAQsgHkE/Rw0BIAFBAWohAQtBBSEeDG4LQQAhHiAAQQA2AhwgACABNgIUIABB04+AgAA2AhAgAEEHNgIMDH0LIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDDQLIABBxAA2AhwgACABNgIUIAAgHjYCDEEAIR4MfAsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMNAsgAEHFADYCHCAAIAE2AhQgACAeNgIMQQAhHgx7CyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw4CyAAQdAANgIcIAAgATYCFCAAIB42AgxBACEeDHoLIAAoAgQhASAAQQA2AgQCQCAAIAEgIhCkgICAACIBDQAgIiEBDDELIABBxAA2AhwgACAiNgIUIAAgATYCDEEAIR4MeQsgACgCBCEBIABBADYCBAJAIAAgASAiEKSAgIAAIgENACAiIQEMMQsgAEHFADYCHCAAICI2AhQgACABNgIMQQAhHgx4CyAAKAIEIQEgAEEANgIEAkAgACABICIQpICAgAAiAQ0AICIhAQw1CyAAQdAANgIcIAAgIjYCFCAAIAE2AgxBACEeDHcLIABBADYCHCAAICI2AhQgAEHQjICAADYCECAAQQc2AgxBACEeDHYLIABBADYCHCAAIAE2AhQgAEHQjICAADYCECAAQQc2AgxBACEeDHULQQAhHiAAQQA2AhwgACAiNgIUIABBv5SAgAA2AhAgAEEHNgIMDHQLIABBADYCHCAAICI2AhQgAEG/lICAADYCECAAQQc2AgxBACEeDHMLIABBADYCHCAAICI2AhQgAEHUjoCAADYCECAAQQc2AgxBACEeDHILIABBADYCHCAAIAE2AhQgAEHBk4CAADYCECAAQQY2AgxBACEeDHELIABBADYCACAiICZrQQZqIQFBJCEeCyAAIB46ACkgASEBDE4LIABBADYCAAtBACEeIABBADYCHCAAIAg2AhQgAEGklICAADYCECAAQQY2AgwMbQsgACgCBCETIABBADYCBCAAIBMgHhCmgICAACITDQEgHkEBaiETC0GdASEeDFsLIABBqgE2AhwgACATNgIMIAAgHkEBajYCFEEAIR4MagsgACgCBCEUIABBADYCBCAAIBQgHhCmgICAACIUDQEgHkEBaiEUC0GaASEeDFgLIABBqwE2AhwgACAUNgIMIAAgHkEBajYCFEEAIR4MZwsgAEEANgIcIAAgFTYCFCAAQfOKgIAANgIQIABBDTYCDEEAIR4MZgsgAEEANgIcIAAgFjYCFCAAQc6NgIAANgIQIABBCTYCDEEAIR4MZQtBASEeCyAAIB46ACsgF0EBaiEWDC4LIABBADYCHCAAIBc2AhQgAEGijYCAADYCECAAQQk2AgxBACEeDGILIABBADYCHCAAIBg2AhQgAEHFioCAADYCECAAQQk2AgxBACEeDGELQQEhHgsgACAeOgAqIBlBAWohGAwsCyAAQQA2AhwgACAZNgIUIABBuI2AgAA2AhAgAEEJNgIMQQAhHgxeCyAAQQA2AhwgACAZNgIUIABBuZuAgAA2AhAgAEEINgIMIABBADYCAEEAIR4MXQsgAEEANgIAC0EAIR4gAEEANgIcIAAgCDYCFCAAQYuUgIAANgIQIABBCDYCDAxbCyAAQQI6ACggAEEANgIAIBsgGWtBA2ohGQw2CyAAQQI6AC8gACAIIAIQo4CAgAAiHg0BQa8BIR4MSQsgAC0AKEF/ag4CHiAfCyAeQRVHDScgAEG7ATYCHCAAIAg2AhQgAEGnkoCAADYCECAAQRU2AgxBACEeDFcLQQAhHgxGC0ECIR4MRQtBDiEeDEQLQRAhHgxDC0EcIR4MQgtBFCEeDEELQRYhHgxAC0EXIR4MPwtBGSEeDD4LQRohHgw9C0E6IR4MPAtBIyEeDDsLQSQhHgw6C0EwIR4MOQtBOyEeDDgLQTwhHgw3C0E+IR4MNgtBPyEeDDULQcAAIR4MNAtBwQAhHgwzC0HFACEeDDILQccAIR4MMQtByAAhHgwwC0HKACEeDC8LQd8AIR4MLgtB4gAhHgwtC0H7ACEeDCwLQYUBIR4MKwtBlwEhHgwqC0GZASEeDCkLQakBIR4MKAtBpAEhHgwnC0GbASEeDCYLQZ4BIR4MJQtBnwEhHgwkC0GhASEeDCMLQaIBIR4MIgtBpwEhHgwhC0GoASEeDCALIABBADYCHCAAIAg2AhQgAEHmi4CAADYCECAAQRA2AgxBACEeDC8LIABBADYCBCAAIB0gHRCqgICAACIBRQ0BIABBLTYCHCAAIAE2AgwgACAdQQFqNgIUQQAhHgwuCyAAKAIEIQggAEEANgIEAkAgACAIIAEQqoCAgAAiCEUNACAAQS42AhwgACAINgIMIAAgAUEBajYCFEEAIR4MLgsgAUEBaiEBDB4LIB1BAWohAQweCyAAQQA2AhwgACAdNgIUIABBuo+AgAA2AhAgAEEENgIMQQAhHgwrCyAAQSk2AhwgACABNgIUIAAgCDYCDEEAIR4MKgsgHEEBaiEBDB4LIABBCjYCHCAAIAE2AhQgAEGRkoCAADYCECAAQRU2AgxBACEeDCgLIABBEDYCHCAAIAE2AhQgAEG+koCAADYCECAAQRU2AgxBACEeDCcLIABBADYCHCAAIB42AhQgAEGIjICAADYCECAAQRQ2AgxBACEeDCYLIABBBDYCHCAAIAE2AhQgAEHWkoCAADYCECAAQRU2AgxBACEeDCULIABBADYCACAIICJrQQVqIRkLQaMBIR4MEwsgAEEANgIAICIgJmtBAmohAUHjACEeDBILIABBADYCACAAQYEEOwEoIBogHmtBAmohAQtB0wAhHgwQCyABIQECQCAALQApQQVHDQBB0gAhHgwQC0HRACEeDA8LQQAhHiAAQQA2AhwgAEG6joCAADYCECAAQQc2AgwgACAiQQFqNgIUDB4LIABBADYCACAmICNrQQJqIQFBNCEeDA0LIAEhAQtBLSEeDAsLAkAgASIdIAJGDQADQAJAIB0tAABBgKKAgABqLQAAIgFBAUYNACABQQJHDQMgHUEBaiEBDAQLIB1BAWoiHSACRw0AC0ExIR4MGwtBMSEeDBoLIABBADoALCAdIQEMAQtBDCEeDAgLQS8hHgwHCyABQQFqIQFBIiEeDAYLQR8hHgwFCyAAQQA2AgAgIyAka0EEaiEBQQYhHgsgACAeOgAsIAEhAUENIR4MAwsgAEEANgIAICYgI2tBB2ohAUELIR4MAgsgAEEANgIACyAAQQA6ACwgHCEBQQkhHgwACwtBACEeIABBADYCHCAAIAE2AhQgAEG4kYCAADYCECAAQQ82AgwMDgtBACEeIABBADYCHCAAIAE2AhQgAEG4kYCAADYCECAAQQ82AgwMDQtBACEeIABBADYCHCAAIAE2AhQgAEGWj4CAADYCECAAQQs2AgwMDAtBACEeIABBADYCHCAAIAE2AhQgAEHxiICAADYCECAAQQs2AgwMCwtBACEeIABBADYCHCAAIAE2AhQgAEGIjYCAADYCECAAQQo2AgwMCgsgAEECNgIcIAAgATYCFCAAQfCSgIAANgIQIABBFjYCDEEAIR4MCQtBASEeDAgLQcYAIR4gASIBIAJGDQcgA0EIaiAAIAEgAkHYpoCAAEEKELmAgIAAIAMoAgwhASADKAIIDgMBBwIACxC/gICAAAALIABBADYCHCAAQYmTgIAANgIQIABBFzYCDCAAIAFBAWo2AhRBACEeDAULIABBADYCHCAAIAE2AhQgAEGek4CAADYCECAAQQk2AgxBACEeDAQLAkAgASIBIAJHDQBBISEeDAQLAkAgAS0AAEEKRg0AIABBADYCHCAAIAE2AhQgAEHujICAADYCECAAQQo2AgxBACEeDAQLIAAoAgQhCCAAQQA2AgQgACAIIAEQqoCAgAAiCA0BIAFBAWohAQtBACEeIABBADYCHCAAIAE2AhQgAEHqkICAADYCECAAQRk2AgwMAgsgAEEgNgIcIAAgCDYCDCAAIAFBAWo2AhRBACEeDAELAkAgASIBIAJHDQBBFCEeDAELIABBiYCAgAA2AgggACABNgIEQRMhHgsgA0EQaiSAgICAACAeC68BAQJ/IAEoAgAhBgJAAkAgAiADRg0AIAQgBmohBCAGIANqIAJrIQcgAiAGQX9zIAVqIgZqIQUDQAJAIAItAAAgBC0AAEYNAEECIQQMAwsCQCAGDQBBACEEIAUhAgwDCyAGQX9qIQYgBEEBaiEEIAJBAWoiAiADRw0ACyAHIQYgAyECCyAAQQE2AgAgASAGNgIAIAAgAjYCBA8LIAFBADYCACAAIAQ2AgAgACACNgIECwoAIAAQu4CAgAALlTcBC38jgICAgABBEGsiASSAgICAAAJAQQAoAqC0gIAADQBBABC+gICAAEGAuISAAGsiAkHZAEkNAEEAIQMCQEEAKALgt4CAACIEDQBBAEJ/NwLst4CAAEEAQoCAhICAgMAANwLkt4CAAEEAIAFBCGpBcHFB2KrVqgVzIgQ2AuC3gIAAQQBBADYC9LeAgABBAEEANgLEt4CAAAtBACACNgLMt4CAAEEAQYC4hIAANgLIt4CAAEEAQYC4hIAANgKYtICAAEEAIAQ2Aqy0gIAAQQBBfzYCqLSAgAADQCADQcS0gIAAaiADQbi0gIAAaiIENgIAIAQgA0GwtICAAGoiBTYCACADQby0gIAAaiAFNgIAIANBzLSAgABqIANBwLSAgABqIgU2AgAgBSAENgIAIANB1LSAgABqIANByLSAgABqIgQ2AgAgBCAFNgIAIANB0LSAgABqIAQ2AgAgA0EgaiIDQYACRw0AC0GAuISAAEF4QYC4hIAAa0EPcUEAQYC4hIAAQQhqQQ9xGyIDaiIEQQRqIAIgA2tBSGoiA0EBcjYCAEEAQQAoAvC3gIAANgKktICAAEEAIAQ2AqC0gIAAQQAgAzYClLSAgAAgAkGAuISAAGpBTGpBODYCAAsCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEHsAUsNAAJAQQAoAoi0gIAAIgZBECAAQRNqQXBxIABBC0kbIgJBA3YiBHYiA0EDcUUNACADQQFxIARyQQFzIgVBA3QiAEG4tICAAGooAgAiBEEIaiEDAkACQCAEKAIIIgIgAEGwtICAAGoiAEcNAEEAIAZBfiAFd3E2Aoi0gIAADAELIAAgAjYCCCACIAA2AgwLIAQgBUEDdCIFQQNyNgIEIAQgBWpBBGoiBCAEKAIAQQFyNgIADAwLIAJBACgCkLSAgAAiB00NAQJAIANFDQACQAJAIAMgBHRBAiAEdCIDQQAgA2tycSIDQQAgA2txQX9qIgMgA0EMdkEQcSIDdiIEQQV2QQhxIgUgA3IgBCAFdiIDQQJ2QQRxIgRyIAMgBHYiA0EBdkECcSIEciADIAR2IgNBAXZBAXEiBHIgAyAEdmoiBUEDdCIAQbi0gIAAaigCACIEKAIIIgMgAEGwtICAAGoiAEcNAEEAIAZBfiAFd3EiBjYCiLSAgAAMAQsgACADNgIIIAMgADYCDAsgBEEIaiEDIAQgAkEDcjYCBCAEIAVBA3QiBWogBSACayIFNgIAIAQgAmoiACAFQQFyNgIEAkAgB0UNACAHQQN2IghBA3RBsLSAgABqIQJBACgCnLSAgAAhBAJAAkAgBkEBIAh0IghxDQBBACAGIAhyNgKItICAACACIQgMAQsgAigCCCEICyAIIAQ2AgwgAiAENgIIIAQgAjYCDCAEIAg2AggLQQAgADYCnLSAgABBACAFNgKQtICAAAwMC0EAKAKMtICAACIJRQ0BIAlBACAJa3FBf2oiAyADQQx2QRBxIgN2IgRBBXZBCHEiBSADciAEIAV2IgNBAnZBBHEiBHIgAyAEdiIDQQF2QQJxIgRyIAMgBHYiA0EBdkEBcSIEciADIAR2akECdEG4toCAAGooAgAiACgCBEF4cSACayEEIAAhBQJAA0ACQCAFKAIQIgMNACAFQRRqKAIAIgNFDQILIAMoAgRBeHEgAmsiBSAEIAUgBEkiBRshBCADIAAgBRshACADIQUMAAsLIAAoAhghCgJAIAAoAgwiCCAARg0AQQAoApi0gIAAIAAoAggiA0saIAggAzYCCCADIAg2AgwMCwsCQCAAQRRqIgUoAgAiAw0AIAAoAhAiA0UNAyAAQRBqIQULA0AgBSELIAMiCEEUaiIFKAIAIgMNACAIQRBqIQUgCCgCECIDDQALIAtBADYCAAwKC0F/IQIgAEG/f0sNACAAQRNqIgNBcHEhAkEAKAKMtICAACIHRQ0AQQAhCwJAIAJBgAJJDQBBHyELIAJB////B0sNACADQQh2IgMgA0GA/j9qQRB2QQhxIgN0IgQgBEGA4B9qQRB2QQRxIgR0IgUgBUGAgA9qQRB2QQJxIgV0QQ92IAMgBHIgBXJrIgNBAXQgAiADQRVqdkEBcXJBHGohCwtBACACayEEAkACQAJAAkAgC0ECdEG4toCAAGooAgAiBQ0AQQAhA0EAIQgMAQtBACEDIAJBAEEZIAtBAXZrIAtBH0YbdCEAQQAhCANAAkAgBSgCBEF4cSACayIGIARPDQAgBiEEIAUhCCAGDQBBACEEIAUhCCAFIQMMAwsgAyAFQRRqKAIAIgYgBiAFIABBHXZBBHFqQRBqKAIAIgVGGyADIAYbIQMgAEEBdCEAIAUNAAsLAkAgAyAIcg0AQQAhCEECIAt0IgNBACADa3IgB3EiA0UNAyADQQAgA2txQX9qIgMgA0EMdkEQcSIDdiIFQQV2QQhxIgAgA3IgBSAAdiIDQQJ2QQRxIgVyIAMgBXYiA0EBdkECcSIFciADIAV2IgNBAXZBAXEiBXIgAyAFdmpBAnRBuLaAgABqKAIAIQMLIANFDQELA0AgAygCBEF4cSACayIGIARJIQACQCADKAIQIgUNACADQRRqKAIAIQULIAYgBCAAGyEEIAMgCCAAGyEIIAUhAyAFDQALCyAIRQ0AIARBACgCkLSAgAAgAmtPDQAgCCgCGCELAkAgCCgCDCIAIAhGDQBBACgCmLSAgAAgCCgCCCIDSxogACADNgIIIAMgADYCDAwJCwJAIAhBFGoiBSgCACIDDQAgCCgCECIDRQ0DIAhBEGohBQsDQCAFIQYgAyIAQRRqIgUoAgAiAw0AIABBEGohBSAAKAIQIgMNAAsgBkEANgIADAgLAkBBACgCkLSAgAAiAyACSQ0AQQAoApy0gIAAIQQCQAJAIAMgAmsiBUEQSQ0AIAQgAmoiACAFQQFyNgIEQQAgBTYCkLSAgABBACAANgKctICAACAEIANqIAU2AgAgBCACQQNyNgIEDAELIAQgA0EDcjYCBCADIARqQQRqIgMgAygCAEEBcjYCAEEAQQA2Apy0gIAAQQBBADYCkLSAgAALIARBCGohAwwKCwJAQQAoApS0gIAAIgAgAk0NAEEAKAKgtICAACIDIAJqIgQgACACayIFQQFyNgIEQQAgBTYClLSAgABBACAENgKgtICAACADIAJBA3I2AgQgA0EIaiEDDAoLAkACQEEAKALgt4CAAEUNAEEAKALot4CAACEEDAELQQBCfzcC7LeAgABBAEKAgISAgIDAADcC5LeAgABBACABQQxqQXBxQdiq1aoFczYC4LeAgABBAEEANgL0t4CAAEEAQQA2AsS3gIAAQYCABCEEC0EAIQMCQCAEIAJBxwBqIgdqIgZBACAEayILcSIIIAJLDQBBAEEwNgL4t4CAAAwKCwJAQQAoAsC3gIAAIgNFDQACQEEAKAK4t4CAACIEIAhqIgUgBE0NACAFIANNDQELQQAhA0EAQTA2Avi3gIAADAoLQQAtAMS3gIAAQQRxDQQCQAJAAkBBACgCoLSAgAAiBEUNAEHIt4CAACEDA0ACQCADKAIAIgUgBEsNACAFIAMoAgRqIARLDQMLIAMoAggiAw0ACwtBABC+gICAACIAQX9GDQUgCCEGAkBBACgC5LeAgAAiA0F/aiIEIABxRQ0AIAggAGsgBCAAakEAIANrcWohBgsgBiACTQ0FIAZB/v///wdLDQUCQEEAKALAt4CAACIDRQ0AQQAoAri3gIAAIgQgBmoiBSAETQ0GIAUgA0sNBgsgBhC+gICAACIDIABHDQEMBwsgBiAAayALcSIGQf7///8HSw0EIAYQvoCAgAAiACADKAIAIAMoAgRqRg0DIAAhAwsCQCADQX9GDQAgAkHIAGogBk0NAAJAIAcgBmtBACgC6LeAgAAiBGpBACAEa3EiBEH+////B00NACADIQAMBwsCQCAEEL6AgIAAQX9GDQAgBCAGaiEGIAMhAAwHC0EAIAZrEL6AgIAAGgwECyADIQAgA0F/Rw0FDAMLQQAhCAwHC0EAIQAMBQsgAEF/Rw0CC0EAQQAoAsS3gIAAQQRyNgLEt4CAAAsgCEH+////B0sNASAIEL6AgIAAIQBBABC+gICAACEDIABBf0YNASADQX9GDQEgACADTw0BIAMgAGsiBiACQThqTQ0BC0EAQQAoAri3gIAAIAZqIgM2Ari3gIAAAkAgA0EAKAK8t4CAAE0NAEEAIAM2Ary3gIAACwJAAkACQAJAQQAoAqC0gIAAIgRFDQBByLeAgAAhAwNAIAAgAygCACIFIAMoAgQiCGpGDQIgAygCCCIDDQAMAwsLAkACQEEAKAKYtICAACIDRQ0AIAAgA08NAQtBACAANgKYtICAAAtBACEDQQAgBjYCzLeAgABBACAANgLIt4CAAEEAQX82Aqi0gIAAQQBBACgC4LeAgAA2Aqy0gIAAQQBBADYC1LeAgAADQCADQcS0gIAAaiADQbi0gIAAaiIENgIAIAQgA0GwtICAAGoiBTYCACADQby0gIAAaiAFNgIAIANBzLSAgABqIANBwLSAgABqIgU2AgAgBSAENgIAIANB1LSAgABqIANByLSAgABqIgQ2AgAgBCAFNgIAIANB0LSAgABqIAQ2AgAgA0EgaiIDQYACRw0ACyAAQXggAGtBD3FBACAAQQhqQQ9xGyIDaiIEIAYgA2tBSGoiA0EBcjYCBEEAQQAoAvC3gIAANgKktICAAEEAIAQ2AqC0gIAAQQAgAzYClLSAgAAgBiAAakFMakE4NgIADAILIAMtAAxBCHENACAFIARLDQAgACAETQ0AIARBeCAEa0EPcUEAIARBCGpBD3EbIgVqIgBBACgClLSAgAAgBmoiCyAFayIFQQFyNgIEIAMgCCAGajYCBEEAQQAoAvC3gIAANgKktICAAEEAIAU2ApS0gIAAQQAgADYCoLSAgAAgCyAEakEEakE4NgIADAELAkAgAEEAKAKYtICAACILTw0AQQAgADYCmLSAgAAgACELCyAAIAZqIQhByLeAgAAhAwJAAkACQAJAAkACQAJAA0AgAygCACAIRg0BIAMoAggiAw0ADAILCyADLQAMQQhxRQ0BC0HIt4CAACEDA0ACQCADKAIAIgUgBEsNACAFIAMoAgRqIgUgBEsNAwsgAygCCCEDDAALCyADIAA2AgAgAyADKAIEIAZqNgIEIABBeCAAa0EPcUEAIABBCGpBD3EbaiIGIAJBA3I2AgQgCEF4IAhrQQ9xQQAgCEEIakEPcRtqIgggBiACaiICayEFAkAgBCAIRw0AQQAgAjYCoLSAgABBAEEAKAKUtICAACAFaiIDNgKUtICAACACIANBAXI2AgQMAwsCQEEAKAKctICAACAIRw0AQQAgAjYCnLSAgABBAEEAKAKQtICAACAFaiIDNgKQtICAACACIANBAXI2AgQgAiADaiADNgIADAMLAkAgCCgCBCIDQQNxQQFHDQAgA0F4cSEHAkACQCADQf8BSw0AIAgoAggiBCADQQN2IgtBA3RBsLSAgABqIgBGGgJAIAgoAgwiAyAERw0AQQBBACgCiLSAgABBfiALd3E2Aoi0gIAADAILIAMgAEYaIAMgBDYCCCAEIAM2AgwMAQsgCCgCGCEJAkACQCAIKAIMIgAgCEYNACALIAgoAggiA0saIAAgAzYCCCADIAA2AgwMAQsCQCAIQRRqIgMoAgAiBA0AIAhBEGoiAygCACIEDQBBACEADAELA0AgAyELIAQiAEEUaiIDKAIAIgQNACAAQRBqIQMgACgCECIEDQALIAtBADYCAAsgCUUNAAJAAkAgCCgCHCIEQQJ0Qbi2gIAAaiIDKAIAIAhHDQAgAyAANgIAIAANAUEAQQAoAoy0gIAAQX4gBHdxNgKMtICAAAwCCyAJQRBBFCAJKAIQIAhGG2ogADYCACAARQ0BCyAAIAk2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCCgCFCIDRQ0AIABBFGogAzYCACADIAA2AhgLIAcgBWohBSAIIAdqIQgLIAggCCgCBEF+cTYCBCACIAVqIAU2AgAgAiAFQQFyNgIEAkAgBUH/AUsNACAFQQN2IgRBA3RBsLSAgABqIQMCQAJAQQAoAoi0gIAAIgVBASAEdCIEcQ0AQQAgBSAEcjYCiLSAgAAgAyEEDAELIAMoAgghBAsgBCACNgIMIAMgAjYCCCACIAM2AgwgAiAENgIIDAMLQR8hAwJAIAVB////B0sNACAFQQh2IgMgA0GA/j9qQRB2QQhxIgN0IgQgBEGA4B9qQRB2QQRxIgR0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAMgBHIgAHJrIgNBAXQgBSADQRVqdkEBcXJBHGohAwsgAiADNgIcIAJCADcCECADQQJ0Qbi2gIAAaiEEAkBBACgCjLSAgAAiAEEBIAN0IghxDQAgBCACNgIAQQAgACAIcjYCjLSAgAAgAiAENgIYIAIgAjYCCCACIAI2AgwMAwsgBUEAQRkgA0EBdmsgA0EfRht0IQMgBCgCACEAA0AgACIEKAIEQXhxIAVGDQIgA0EddiEAIANBAXQhAyAEIABBBHFqQRBqIggoAgAiAA0ACyAIIAI2AgAgAiAENgIYIAIgAjYCDCACIAI2AggMAgsgAEF4IABrQQ9xQQAgAEEIakEPcRsiA2oiCyAGIANrQUhqIgNBAXI2AgQgCEFMakE4NgIAIAQgBUE3IAVrQQ9xQQAgBUFJakEPcRtqQUFqIgggCCAEQRBqSRsiCEEjNgIEQQBBACgC8LeAgAA2AqS0gIAAQQAgCzYCoLSAgABBACADNgKUtICAACAIQRBqQQApAtC3gIAANwIAIAhBACkCyLeAgAA3AghBACAIQQhqNgLQt4CAAEEAIAY2Asy3gIAAQQAgADYCyLeAgABBAEEANgLUt4CAACAIQSRqIQMDQCADQQc2AgAgBSADQQRqIgNLDQALIAggBEYNAyAIIAgoAgRBfnE2AgQgCCAIIARrIgY2AgAgBCAGQQFyNgIEAkAgBkH/AUsNACAGQQN2IgVBA3RBsLSAgABqIQMCQAJAQQAoAoi0gIAAIgBBASAFdCIFcQ0AQQAgACAFcjYCiLSAgAAgAyEFDAELIAMoAgghBQsgBSAENgIMIAMgBDYCCCAEIAM2AgwgBCAFNgIIDAQLQR8hAwJAIAZB////B0sNACAGQQh2IgMgA0GA/j9qQRB2QQhxIgN0IgUgBUGA4B9qQRB2QQRxIgV0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAMgBXIgAHJrIgNBAXQgBiADQRVqdkEBcXJBHGohAwsgBEIANwIQIARBHGogAzYCACADQQJ0Qbi2gIAAaiEFAkBBACgCjLSAgAAiAEEBIAN0IghxDQAgBSAENgIAQQAgACAIcjYCjLSAgAAgBEEYaiAFNgIAIAQgBDYCCCAEIAQ2AgwMBAsgBkEAQRkgA0EBdmsgA0EfRht0IQMgBSgCACEAA0AgACIFKAIEQXhxIAZGDQMgA0EddiEAIANBAXQhAyAFIABBBHFqQRBqIggoAgAiAA0ACyAIIAQ2AgAgBEEYaiAFNgIAIAQgBDYCDCAEIAQ2AggMAwsgBCgCCCIDIAI2AgwgBCACNgIIIAJBADYCGCACIAQ2AgwgAiADNgIICyAGQQhqIQMMBQsgBSgCCCIDIAQ2AgwgBSAENgIIIARBGGpBADYCACAEIAU2AgwgBCADNgIIC0EAKAKUtICAACIDIAJNDQBBACgCoLSAgAAiBCACaiIFIAMgAmsiA0EBcjYCBEEAIAM2ApS0gIAAQQAgBTYCoLSAgAAgBCACQQNyNgIEIARBCGohAwwDC0EAIQNBAEEwNgL4t4CAAAwCCwJAIAtFDQACQAJAIAggCCgCHCIFQQJ0Qbi2gIAAaiIDKAIARw0AIAMgADYCACAADQFBACAHQX4gBXdxIgc2Aoy0gIAADAILIAtBEEEUIAsoAhAgCEYbaiAANgIAIABFDQELIAAgCzYCGAJAIAgoAhAiA0UNACAAIAM2AhAgAyAANgIYCyAIQRRqKAIAIgNFDQAgAEEUaiADNgIAIAMgADYCGAsCQAJAIARBD0sNACAIIAQgAmoiA0EDcjYCBCADIAhqQQRqIgMgAygCAEEBcjYCAAwBCyAIIAJqIgAgBEEBcjYCBCAIIAJBA3I2AgQgACAEaiAENgIAAkAgBEH/AUsNACAEQQN2IgRBA3RBsLSAgABqIQMCQAJAQQAoAoi0gIAAIgVBASAEdCIEcQ0AQQAgBSAEcjYCiLSAgAAgAyEEDAELIAMoAgghBAsgBCAANgIMIAMgADYCCCAAIAM2AgwgACAENgIIDAELQR8hAwJAIARB////B0sNACAEQQh2IgMgA0GA/j9qQRB2QQhxIgN0IgUgBUGA4B9qQRB2QQRxIgV0IgIgAkGAgA9qQRB2QQJxIgJ0QQ92IAMgBXIgAnJrIgNBAXQgBCADQRVqdkEBcXJBHGohAwsgACADNgIcIABCADcCECADQQJ0Qbi2gIAAaiEFAkAgB0EBIAN0IgJxDQAgBSAANgIAQQAgByACcjYCjLSAgAAgACAFNgIYIAAgADYCCCAAIAA2AgwMAQsgBEEAQRkgA0EBdmsgA0EfRht0IQMgBSgCACECAkADQCACIgUoAgRBeHEgBEYNASADQR12IQIgA0EBdCEDIAUgAkEEcWpBEGoiBigCACICDQALIAYgADYCACAAIAU2AhggACAANgIMIAAgADYCCAwBCyAFKAIIIgMgADYCDCAFIAA2AgggAEEANgIYIAAgBTYCDCAAIAM2AggLIAhBCGohAwwBCwJAIApFDQACQAJAIAAgACgCHCIFQQJ0Qbi2gIAAaiIDKAIARw0AIAMgCDYCACAIDQFBACAJQX4gBXdxNgKMtICAAAwCCyAKQRBBFCAKKAIQIABGG2ogCDYCACAIRQ0BCyAIIAo2AhgCQCAAKAIQIgNFDQAgCCADNgIQIAMgCDYCGAsgAEEUaigCACIDRQ0AIAhBFGogAzYCACADIAg2AhgLAkACQCAEQQ9LDQAgACAEIAJqIgNBA3I2AgQgAyAAakEEaiIDIAMoAgBBAXI2AgAMAQsgACACaiIFIARBAXI2AgQgACACQQNyNgIEIAUgBGogBDYCAAJAIAdFDQAgB0EDdiIIQQN0QbC0gIAAaiECQQAoApy0gIAAIQMCQAJAQQEgCHQiCCAGcQ0AQQAgCCAGcjYCiLSAgAAgAiEIDAELIAIoAgghCAsgCCADNgIMIAIgAzYCCCADIAI2AgwgAyAINgIIC0EAIAU2Apy0gIAAQQAgBDYCkLSAgAALIABBCGohAwsgAUEQaiSAgICAACADCwoAIAAQvYCAgAAL8A0BB38CQCAARQ0AIABBeGoiASAAQXxqKAIAIgJBeHEiAGohAwJAIAJBAXENACACQQNxRQ0BIAEgASgCACICayIBQQAoApi0gIAAIgRJDQEgAiAAaiEAAkBBACgCnLSAgAAgAUYNAAJAIAJB/wFLDQAgASgCCCIEIAJBA3YiBUEDdEGwtICAAGoiBkYaAkAgASgCDCICIARHDQBBAEEAKAKItICAAEF+IAV3cTYCiLSAgAAMAwsgAiAGRhogAiAENgIIIAQgAjYCDAwCCyABKAIYIQcCQAJAIAEoAgwiBiABRg0AIAQgASgCCCICSxogBiACNgIIIAIgBjYCDAwBCwJAIAFBFGoiAigCACIEDQAgAUEQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0BAkACQCABKAIcIgRBAnRBuLaAgABqIgIoAgAgAUcNACACIAY2AgAgBg0BQQBBACgCjLSAgABBfiAEd3E2Aoy0gIAADAMLIAdBEEEUIAcoAhAgAUYbaiAGNgIAIAZFDQILIAYgBzYCGAJAIAEoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyABKAIUIgJFDQEgBkEUaiACNgIAIAIgBjYCGAwBCyADKAIEIgJBA3FBA0cNACADIAJBfnE2AgRBACAANgKQtICAACABIABqIAA2AgAgASAAQQFyNgIEDwsgAyABTQ0AIAMoAgQiAkEBcUUNAAJAAkAgAkECcQ0AAkBBACgCoLSAgAAgA0cNAEEAIAE2AqC0gIAAQQBBACgClLSAgAAgAGoiADYClLSAgAAgASAAQQFyNgIEIAFBACgCnLSAgABHDQNBAEEANgKQtICAAEEAQQA2Apy0gIAADwsCQEEAKAKctICAACADRw0AQQAgATYCnLSAgABBAEEAKAKQtICAACAAaiIANgKQtICAACABIABBAXI2AgQgASAAaiAANgIADwsgAkF4cSAAaiEAAkACQCACQf8BSw0AIAMoAggiBCACQQN2IgVBA3RBsLSAgABqIgZGGgJAIAMoAgwiAiAERw0AQQBBACgCiLSAgABBfiAFd3E2Aoi0gIAADAILIAIgBkYaIAIgBDYCCCAEIAI2AgwMAQsgAygCGCEHAkACQCADKAIMIgYgA0YNAEEAKAKYtICAACADKAIIIgJLGiAGIAI2AgggAiAGNgIMDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQACQAJAIAMoAhwiBEECdEG4toCAAGoiAigCACADRw0AIAIgBjYCACAGDQFBAEEAKAKMtICAAEF+IAR3cTYCjLSAgAAMAgsgB0EQQRQgBygCECADRhtqIAY2AgAgBkUNAQsgBiAHNgIYAkAgAygCECICRQ0AIAYgAjYCECACIAY2AhgLIAMoAhQiAkUNACAGQRRqIAI2AgAgAiAGNgIYCyABIABqIAA2AgAgASAAQQFyNgIEIAFBACgCnLSAgABHDQFBACAANgKQtICAAA8LIAMgAkF+cTYCBCABIABqIAA2AgAgASAAQQFyNgIECwJAIABB/wFLDQAgAEEDdiICQQN0QbC0gIAAaiEAAkACQEEAKAKItICAACIEQQEgAnQiAnENAEEAIAQgAnI2Aoi0gIAAIAAhAgwBCyAAKAIIIQILIAIgATYCDCAAIAE2AgggASAANgIMIAEgAjYCCA8LQR8hAgJAIABB////B0sNACAAQQh2IgIgAkGA/j9qQRB2QQhxIgJ0IgQgBEGA4B9qQRB2QQRxIgR0IgYgBkGAgA9qQRB2QQJxIgZ0QQ92IAIgBHIgBnJrIgJBAXQgACACQRVqdkEBcXJBHGohAgsgAUIANwIQIAFBHGogAjYCACACQQJ0Qbi2gIAAaiEEAkACQEEAKAKMtICAACIGQQEgAnQiA3ENACAEIAE2AgBBACAGIANyNgKMtICAACABQRhqIAQ2AgAgASABNgIIIAEgATYCDAwBCyAAQQBBGSACQQF2ayACQR9GG3QhAiAEKAIAIQYCQANAIAYiBCgCBEF4cSAARg0BIAJBHXYhBiACQQF0IQIgBCAGQQRxakEQaiIDKAIAIgYNAAsgAyABNgIAIAFBGGogBDYCACABIAE2AgwgASABNgIIDAELIAQoAggiACABNgIMIAQgATYCCCABQRhqQQA2AgAgASAENgIMIAEgADYCCAtBAEEAKAKotICAAEF/aiIBQX8gARs2Aqi0gIAACwtOAAJAIAANAD8AQRB0DwsCQCAAQf//A3ENACAAQX9MDQACQCAAQRB2QAAiAEF/Rw0AQQBBMDYC+LeAgABBfw8LIABBEHQPCxC/gICAAAALBAAAAAsLjiwBAEGACAuGLAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgcGFyYW1ldGVycwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABNS0FDVElWSVRZAENPUFkATk9USUZZAFBMQVkAUFVUAENIRUNLT1VUAFBPU1QAUkVQT1JUAEhQRV9JTlZBTElEX0NPTlNUQU5UAEdFVABIUEVfU1RSSUNUAFJFRElSRUNUAENPTk5FQ1QASFBFX0lOVkFMSURfU1RBVFVTAE9QVElPTlMAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASFBFX0lOVkFMSURfVVJMAE1LQ09MAEFDTABIUEVfSU5URVJOQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBQQVVTRQBQVVJHRQBNRVJHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAFBST1BGSU5EAFVOQklORABSRUJJTkQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABIUEVfUEFVU0VEAEhFQUQARXhwZWN0ZWQgSFRUUC8A3AsAAM8LAADTCgAAmQ0AABAMAABdCwAAXw0AALULAAC6CgAAcwsAAJwLAAD1CwAAcwwAAO8KAADcDAAARwwAAIcLAACPDAAAvQwAAC8LAACnDAAAqQ0AAAQNAAAXDQAAJgsAAIkNAADVDAAAzwoAALQNAACuCgAAoQoAAOcKAAACCwAAPQ0AAJAKAADsCwAAxQsAAIoMAAByDQAANAwAAEAMAADqCwAAhA0AAIINAAB7DQAAywsAALMKAACFCgAApQoAAP4MAAA+DAAAlQoAAE4NAABMDQAAOAwAAPgMAABDCwAA5QsAAOMLAAAtDQAA8QsAAEMNAAA0DQAATgsAAJwKAADyDAAAVAsAABgLAAAKCwAA3goAAFgNAAAuDAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=' diff --git a/deps/undici/src/lib/llhttp/llhttp_simd.wasm b/deps/undici/src/lib/llhttp/llhttp_simd.wasm index bc2848bbb84586..a569ef99c24a48 100755 Binary files a/deps/undici/src/lib/llhttp/llhttp_simd.wasm and b/deps/undici/src/lib/llhttp/llhttp_simd.wasm differ diff --git a/deps/undici/src/lib/llhttp/llhttp_simd.wasm.js b/deps/undici/src/lib/llhttp/llhttp_simd.wasm.js index 008f3e28682782..83a9ac9bc4935f 100644 --- a/deps/undici/src/lib/llhttp/llhttp_simd.wasm.js +++ b/deps/undici/src/lib/llhttp/llhttp_simd.wasm.js @@ -1 +1 @@ -module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzk4AwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAYGAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAAMEBQFwAQ4OBQMBAAIGCAF/AUGgtwQLB/UEHwZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAJGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAKGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQA1DGxsaHR0cF9hbGxvYwAMBm1hbGxvYwA6C2xsaHR0cF9mcmVlAA0EZnJlZQA8D2xsaHR0cF9nZXRfdHlwZQAOFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAPFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAQEWxsaHR0cF9nZXRfbWV0aG9kABEWbGxodHRwX2dldF9zdGF0dXNfY29kZQASEmxsaHR0cF9nZXRfdXBncmFkZQATDGxsaHR0cF9yZXNldAAUDmxsaHR0cF9leGVjdXRlABUUbGxodHRwX3NldHRpbmdzX2luaXQAFg1sbGh0dHBfZmluaXNoABcMbGxodHRwX3BhdXNlABgNbGxodHRwX3Jlc3VtZQAZG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAaEGxsaHR0cF9nZXRfZXJybm8AGxdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAcF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uAB0UbGxodHRwX2dldF9lcnJvcl9wb3MAHhFsbGh0dHBfZXJybm9fbmFtZQAfEmxsaHR0cF9tZXRob2RfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mADMJEwEAQQELDQECAwQFCwYHLiooJCYK2aQCOAIACwgAEIiAgIAACxkAIAAQtoCAgAAaIAAgAjYCNCAAIAE6ACgLHAAgACAALwEyIAAtAC4gABC1gICAABCAgICAAAspAQF/QTgQuoCAgAAiARC2gICAABogAUGAiICAADYCNCABIAA6ACggAQsKACAAELyAgIAACwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BMgsHACAALQAuC0UBBH8gACgCGCEBIAAtAC0hAiAALQAoIQMgACgCNCEEIAAQtoCAgAAaIAAgBDYCNCAAIAM6ACggACACOgAtIAAgATYCGAsRACAAIAEgASACahC3gICAAAs+AQF7IAD9DAAAAAAAAAAAAAAAAAAAAAAiAf0LAgAgAEEwakIANwIAIABBIGogAf0LAgAgAEEQaiAB/QsCAAtnAQF/QQAhAQJAIAAoAgwNAAJAAkACQAJAIAAtAC8OAwEAAwILIAAoAjQiAUUNACABKAIcIgFFDQAgACABEYCAgIAAACIBDQMLQQAPCxC/gICAAAALIABBr5GAgAA2AhBBDiEBCyABCx4AAkAgACgCDA0AIABBtJOAgAA2AhAgAEEVNgIMCwsWAAJAIAAoAgxBFUcNACAAQQA2AgwLCxYAAkAgACgCDEEWRw0AIABBADYCDAsLBwAgACgCDAsHACAAKAIQCwkAIAAgATYCEAsHACAAKAIUCyIAAkAgAEEZSQ0AEL+AgIAAAAsgAEECdEHomoCAAGooAgALIgACQCAAQS5JDQAQv4CAgAAACyAAQQJ0QcybgIAAaigCAAsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCACIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIEIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBnI6AgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAigiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI0IgRFDQAgBCgCCCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQdKKgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCNCIERQ0AIAQoAgwiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEGNk4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCMCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIQIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBw5CAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAjQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCFCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIcIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCNCIERQ0AIAQoAhgiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEHSiICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCICIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIkIgRFDQAgACAEEYCAgIAAACEDCyADC0UBAX8CQAJAIAAvATBBFHFBFEcNAEEBIQMgAC0AKEEBRg0BIAAvATJB5QBGIQMMAQsgAC0AKUEFRiEDCyAAIAM6AC5BAAv0AQEDf0EBIQMCQCAALwEwIgRBCHENACAAKQMgQgBSIQMLAkACQCAALQAuRQ0AQQEhBSAALQApQQVGDQFBASEFIARBwABxRSADcUEBRw0BC0EAIQUgBEHAAHENAEECIQUgBEEIcQ0AAkAgBEGABHFFDQACQCAALQAoQQFHDQBBBSEFIAAtAC1BAnFFDQILQQQPCwJAIARBIHENAAJAIAAtAChBAUYNACAALwEyIgBBnH9qQeQASQ0AIABBzAFGDQAgAEGwAkYNAEEEIQUgBEGIBHFBgARGDQIgBEEocUUNAgtBAA8LQQBBAyAAKQMgUBshBQsgBQtdAQJ/QQAhAQJAIAAtAChBAUYNACAALwEyIgJBnH9qQeQASQ0AIAJBzAFGDQAgAkGwAkYNACAALwEwIgBBwABxDQBBASEBIABBiARxQYAERg0AIABBKHFFIQELIAELogEBA38CQAJAAkAgAC0AKkUNACAALQArRQ0AQQAhAyAALwEwIgRBAnFFDQEMAgtBACEDIAAvATAiBEEBcUUNAQtBASEDIAAtAChBAUYNACAALwEyIgVBnH9qQeQASQ0AIAVBzAFGDQAgBUGwAkYNACAEQcAAcQ0AQQAhAyAEQYgEcUGABEYNACAEQShxQQBHIQMLIABBADsBMCAAQQA6AC8gAwuUAQECfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEBIAAvATAiAkECcUUNAQwCC0EAIQEgAC8BMCICQQFxRQ0BC0EBIQEgAC0AKEEBRg0AIAAvATIiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AIAJBwABxDQBBACEBIAJBiARxQYAERg0AIAJBKHFBAEchAQsgAQtIAQF7IABBEGr9DAAAAAAAAAAAAAAAAAAAAAAiAf0LAwAgACAB/QsDACAAQTBqQgA3AwAgAEEgaiAB/QsDACAAQbgBNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQuICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC/LKAQMZfwN+BX8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDyABIRAgASERIAEhEiABIRMgASEUIAEhFSABIRYgASEXIAEhGCABIRkgASEaAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhtBf2oOuAG1AQG0AQIDBAUGBwgJCgsMDQ4PELsBugEREhOzARQVFhcYGRobHB0eHyAhsgGxASIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTq2ATs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAQC3AQtBACEbDK8BC0EQIRsMrgELQQ8hGwytAQtBESEbDKwBC0ESIRsMqwELQRUhGwyqAQtBFiEbDKkBC0EXIRsMqAELQRghGwynAQtBGSEbDKYBC0EIIRsMpQELQRohGwykAQtBGyEbDKMBC0EUIRsMogELQRMhGwyhAQtBHCEbDKABC0EdIRsMnwELQR4hGwyeAQtBHyEbDJ0BC0GqASEbDJwBC0GrASEbDJsBC0EhIRsMmgELQSIhGwyZAQtBIyEbDJgBC0EkIRsMlwELQSUhGwyWAQtBrQEhGwyVAQtBJiEbDJQBC0EqIRsMkwELQQ4hGwySAQtBJyEbDJEBC0EoIRsMkAELQSkhGwyPAQtBLiEbDI4BC0ErIRsMjQELQa4BIRsMjAELQQ0hGwyLAQtBDCEbDIoBC0EvIRsMiQELQQshGwyIAQtBLCEbDIcBC0EtIRsMhgELQQohGwyFAQtBMSEbDIQBC0EwIRsMgwELQQkhGwyCAQtBICEbDIEBC0EyIRsMgAELQTMhGwx/C0E0IRsMfgtBNSEbDH0LQTYhGwx8C0E3IRsMewtBOCEbDHoLQTkhGwx5C0E6IRsMeAtBrAEhGwx3C0E7IRsMdgtBPCEbDHULQT0hGwx0C0E+IRsMcwtBPyEbDHILQcAAIRsMcQtBwQAhGwxwC0HCACEbDG8LQcMAIRsMbgtBxAAhGwxtC0EHIRsMbAtBxQAhGwxrC0EGIRsMagtBxgAhGwxpC0EFIRsMaAtBxwAhGwxnC0EEIRsMZgtByAAhGwxlC0HJACEbDGQLQcoAIRsMYwtBywAhGwxiC0EDIRsMYQtBzAAhGwxgC0HNACEbDF8LQc4AIRsMXgtB0AAhGwxdC0HPACEbDFwLQdEAIRsMWwtB0gAhGwxaC0ECIRsMWQtB0wAhGwxYC0HUACEbDFcLQdUAIRsMVgtB1gAhGwxVC0HXACEbDFQLQdgAIRsMUwtB2QAhGwxSC0HaACEbDFELQdsAIRsMUAtB3AAhGwxPC0HdACEbDE4LQd4AIRsMTQtB3wAhGwxMC0HgACEbDEsLQeEAIRsMSgtB4gAhGwxJC0HjACEbDEgLQeQAIRsMRwtB5QAhGwxGC0HmACEbDEULQecAIRsMRAtB6AAhGwxDC0HpACEbDEILQeoAIRsMQQtB6wAhGwxAC0HsACEbDD8LQe0AIRsMPgtB7gAhGww9C0HvACEbDDwLQfAAIRsMOwtB8QAhGww6C0HyACEbDDkLQfMAIRsMOAtB9AAhGww3C0H1ACEbDDYLQfYAIRsMNQtB9wAhGww0C0H4ACEbDDMLQfkAIRsMMgtB+gAhGwwxC0H7ACEbDDALQfwAIRsMLwtB/QAhGwwuC0H+ACEbDC0LQf8AIRsMLAtBgAEhGwwrC0GBASEbDCoLQYIBIRsMKQtBgwEhGwwoC0GEASEbDCcLQYUBIRsMJgtBhgEhGwwlC0GHASEbDCQLQYgBIRsMIwtBiQEhGwwiC0GKASEbDCELQYsBIRsMIAtBjAEhGwwfC0GNASEbDB4LQY4BIRsMHQtBjwEhGwwcC0GQASEbDBsLQZEBIRsMGgtBkgEhGwwZC0GTASEbDBgLQZQBIRsMFwtBlQEhGwwWC0GWASEbDBULQZcBIRsMFAtBmAEhGwwTC0GZASEbDBILQZ0BIRsMEQtBmgEhGwwQC0EBIRsMDwtBmwEhGwwOC0GcASEbDA0LQZ4BIRsMDAtBoAEhGwwLC0GfASEbDAoLQaEBIRsMCQtBogEhGwwIC0GjASEbDAcLQaQBIRsMBgtBpQEhGwwFC0GmASEbDAQLQacBIRsMAwtBqAEhGwwCC0GpASEbDAELQa8BIRsLA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBsOsAEAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRsdHyAhJCUmJygpKistLi8wMTc4Ojs+QUNERUZHSElKS0xNTk9QUVJTVFVXWVteX2BiZGVmZ2hpam1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQB3AHiAeMB5wH2AcMCwwILIAEiBCACRw3EAUG4ASEbDJIDCyABIhsgAkcNswFBqAEhGwyRAwsgASIBIAJHDWlB3gAhGwyQAwsgASIBIAJHDV9B1gAhGwyPAwsgASIBIAJHDVhB0QAhGwyOAwsgASIBIAJHDVRBzwAhGwyNAwsgASIBIAJHDVFBzQAhGwyMAwsgASIBIAJHDU5BywAhGwyLAwsgASIBIAJHDRFBDCEbDIoDCyABIgEgAkcNNUE0IRsMiQMLIAEiASACRw0xQTEhGwyIAwsgASIaIAJHDShBLiEbDIcDCyABIgEgAkcNJkEsIRsMhgMLIAEiASACRw0kQSshGwyFAwsgASIBIAJHDR1BIiEbDIQDCyAALQAuQQFGDfwCDMgBCyAAIAEiASACELSAgIAAQQFHDbUBDLYBCyAAIAEiASACEK2AgIAAIhsNtgEgASEBDLYCCwJAIAEiASACRw0AQQYhGwyBAwsgACABQQFqIgEgAhCwgICAACIbDbcBIAEhAQwPCyAAQgA3AyBBFCEbDPQCCyABIhsgAkcNCUEPIRsM/gILAkAgASIBIAJGDQAgAUEBaiEBQRIhGwzzAgtBByEbDP0CCyAAQgAgACkDICIcIAIgASIba60iHX0iHiAeIBxWGzcDICAcIB1WIh9FDbQBQQghGwz8AgsCQCABIgEgAkYNACAAQYmAgIAANgIIIAAgATYCBCABIQFBFiEbDPECC0EJIRsM+wILIAEhASAAKQMgUA2zASABIQEMswILAkAgASIBIAJHDQBBCyEbDPoCCyAAIAFBAWoiASACEK+AgIAAIhsNswEgASEBDLMCCwNAAkAgAS0AAEGQnYCAAGotAAAiG0EBRg0AIBtBAkcNtQEgAUEBaiEBDAMLIAFBAWoiASACRw0AC0EMIRsM+AILAkAgASIBIAJHDQBBDSEbDPgCCwJAAkAgAS0AACIbQXNqDhQBtwG3AbcBtwG3AbcBtwG3AbcBtwG3AbcBtwG3AbcBtwG3AbcBALUBCyABQQFqIQEMtQELIAFBAWohAQtBGSEbDOsCCwJAIAEiGyACRw0AQQ4hGwz2AgtCACEcIBshAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgGy0AAEFQag43yQHIAQABAgMEBQYHxALEAsQCxALEAsQCxAIICQoLDA3EAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCDg8QERITxAILQgIhHAzIAQtCAyEcDMcBC0IEIRwMxgELQgUhHAzFAQtCBiEcDMQBC0IHIRwMwwELQgghHAzCAQtCCSEcDMEBC0IKIRwMwAELQgshHAy/AQtCDCEcDL4BC0INIRwMvQELQg4hHAy8AQtCDyEcDLsBC0IKIRwMugELQgshHAy5AQtCDCEcDLgBC0INIRwMtwELQg4hHAy2AQtCDyEcDLUBC0IAIRwCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBstAABBUGoON8gBxwEAAQIDBAUGB8kByQHJAckByQHJAckBCAkKCwwNyQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAQ4PEBESE8kBC0ICIRwMxwELQgMhHAzGAQtCBCEcDMUBC0IFIRwMxAELQgYhHAzDAQtCByEcDMIBC0IIIRwMwQELQgkhHAzAAQtCCiEcDL8BC0ILIRwMvgELQgwhHAy9AQtCDSEcDLwBC0IOIRwMuwELQg8hHAy6AQtCCiEcDLkBC0ILIRwMuAELQgwhHAy3AQtCDSEcDLYBC0IOIRwMtQELQg8hHAy0AQsgAEIAIAApAyAiHCACIAEiG2utIh19Ih4gHiAcVhs3AyAgHCAdViIfRQ21AUERIRsM8wILAkAgASIBIAJGDQAgAEGJgICAADYCCCAAIAE2AgQgASEBQRwhGwzoAgtBEiEbDPICCyAAIAEiGyACELKAgIAAQX9qDgWnAQCoAgG0AbUBC0ETIRsM5QILIABBAToALyAbIQEM7gILIAEiASACRw21AUEWIRsM7gILIAEiGCACRw0aQTUhGwztAgsCQCABIgEgAkcNAEEaIRsM7QILIABBADYCBCAAQYqAgIAANgIIIAAgASABEKqAgIAAIhsNtwEgASEBDLoBCwJAIAEiGyACRw0AQRshGwzsAgsCQCAbLQAAIgFBIEcNACAbQQFqIQEMGwsgAUEJRw23ASAbQQFqIQEMGgsCQCABIgEgAkYNACABQQFqIQEMFQtBHCEbDOoCCwJAIAEiGyACRw0AQR0hGwzqAgsCQCAbLQAAIgFBCUcNACAbIQEM1gILIAFBIEcNtgEgGyEBDNUCCwJAIAEiASACRw0AQR4hGwzpAgsgAS0AAEEKRw25ASABQQFqIQEMpgILAkAgASIZIAJHDQBBICEbDOgCCyAZLQAAQXZqDgS8AboBugG5AboBCwNAAkAgAS0AACIbQSBGDQACQCAbQXZqDgQAwwHDAQDBAQsgASEBDMkBCyABQQFqIgEgAkcNAAtBIiEbDOYCC0EjIRsgASIgIAJGDeUCIAIgIGsgACgCACIhaiEiICAhIyAhIQECQANAICMtAAAiH0EgciAfIB9Bv39qQf8BcUEaSRtB/wFxIAFBkJ+AgABqLQAARw0BIAFBA0YN1gIgAUEBaiEBICNBAWoiIyACRw0ACyAAICI2AgAM5gILIABBADYCACAjIQEMwAELQSQhGyABIiAgAkYN5AIgAiAgayAAKAIAIiFqISIgICEjICEhAQJAA0AgIy0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUGUn4CAAGotAABHDQEgAUEIRg3CASABQQFqIQEgI0EBaiIjIAJHDQALIAAgIjYCAAzlAgsgAEEANgIAICMhAQy/AQtBJSEbIAEiICACRg3jAiACICBrIAAoAgAiIWohIiAgISMgISEBAkADQCAjLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQfClgIAAai0AAEcNASABQQVGDcIBIAFBAWohASAjQQFqIiMgAkcNAAsgACAiNgIADOQCCyAAQQA2AgAgIyEBDL4BCwJAIAEiASACRg0AA0ACQCABLQAAQaChgIAAai0AACIbQQFGDQAgG0ECRg0LIAEhAQzGAQsgAUEBaiIBIAJHDQALQSEhGwzjAgtBISEbDOICCwJAIAEiASACRg0AA0ACQCABLQAAIhtBIEYNACAbQXZqDgTCAcMBwwHCAcMBCyABQQFqIgEgAkcNAAtBKSEbDOICC0EpIRsM4QILA0ACQCABLQAAIhtBIEYNACAbQXZqDgTCAQQEwgEECyABQQFqIgEgAkcNAAtBKyEbDOACCwNAAkAgAS0AACIbQSBGDQAgG0EJRw0ECyABQQFqIgEgAkcNAAtBLCEbDN8CCwNAAkAgGi0AAEGgoYCAAGotAAAiAUEBRg0AIAFBAkcNxwEgGkEBaiEBDJQCCyAaQQFqIhogAkcNAAtBLiEbDN4CCyABIQEMwgELIAEhAQzBAQtBLyEbIAEiIyACRg3bAiACICNrIAAoAgAiIGohISAjIR8gICEBA0AgHy0AAEEgciABQaCjgIAAai0AAEcNzgIgAUEGRg3NAiABQQFqIQEgH0EBaiIfIAJHDQALIAAgITYCAAzbAgsCQCABIhogAkcNAEEwIRsM2wILIABBioCAgAA2AgggACAaNgIEIBohASAALQAsQX9qDgSzAbwBvgHAAZoCCyABQQFqIQEMsgELAkAgASIBIAJGDQADQAJAIAEtAAAiG0EgciAbIBtBv39qQf8BcUEaSRtB/wFxIhtBCUYNACAbQSBGDQACQAJAAkACQCAbQZ1/ag4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUEnIRsM0wILIAFBAWohAUEoIRsM0gILIAFBAWohAUEpIRsM0QILIAEhAQy2AQsgAUEBaiIBIAJHDQALQSYhGwzZAgtBJiEbDNgCCwJAIAEiASACRg0AA0ACQCABLQAAQaCfgIAAai0AAEEBRg0AIAEhAQy7AQsgAUEBaiIBIAJHDQALQS0hGwzYAgtBLSEbDNcCCwJAA0ACQCABLQAAQXdqDhgAAsQCxALGAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAgDEAgsgAUEBaiIBIAJHDQALQTEhGwzXAgsgAUEBaiEBC0EiIRsMygILIAEiASACRw29AUEzIRsM1AILA0ACQCABLQAAQbCjgIAAai0AAEEBRg0AIAEhAQyWAgsgAUEBaiIBIAJHDQALQTQhGwzTAgsgGC0AACIbQSBGDZoBIBtBOkcNxgIgACgCBCEBIABBADYCBCAAIAEgGBCogICAACIBDboBIBhBAWohAQy8AQsgACABIAIQqYCAgAAaC0EKIRsMxQILQTYhGyABIiMgAkYNzwIgAiAjayAAKAIAIiBqISEgIyEYICAhAQJAA0AgGC0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUGwpYCAAGotAABHDcQCIAFBBUYNASABQQFqIQEgGEEBaiIYIAJHDQALIAAgITYCAAzQAgsgAEEANgIAIABBAToALCAjICBrQQZqIQEMvQILQTchGyABIiMgAkYNzgIgAiAjayAAKAIAIiBqISEgIyEYICAhAQJAA0AgGC0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUG2pYCAAGotAABHDcMCIAFBCUYNASABQQFqIQEgGEEBaiIYIAJHDQALIAAgITYCAAzPAgsgAEEANgIAIABBAjoALCAjICBrQQpqIQEMvAILAkAgASIYIAJHDQBBOCEbDM4CCwJAAkAgGC0AACIBQSByIAEgAUG/f2pB/wFxQRpJG0H/AXFBkn9qDgcAwwLDAsMCwwLDAgHDAgsgGEEBaiEBQTIhGwzDAgsgGEEBaiEBQTMhGwzCAgtBOSEbIAEiIyACRg3MAiACICNrIAAoAgAiIGohISAjIRggICEBA0AgGC0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUHApYCAAGotAABHDcACIAFBAUYNtwIgAUEBaiEBIBhBAWoiGCACRw0ACyAAICE2AgAMzAILQTohGyABIiMgAkYNywIgAiAjayAAKAIAIiBqISEgIyEYICAhAQJAA0AgGC0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUHCpYCAAGotAABHDcACIAFBDkYNASABQQFqIQEgGEEBaiIYIAJHDQALIAAgITYCAAzMAgsgAEEANgIAIABBAToALCAjICBrQQ9qIQEMuQILQTshGyABIiMgAkYNygIgAiAjayAAKAIAIiBqISEgIyEYICAhAQJAA0AgGC0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUHgpYCAAGotAABHDb8CIAFBD0YNASABQQFqIQEgGEEBaiIYIAJHDQALIAAgITYCAAzLAgsgAEEANgIAIABBAzoALCAjICBrQRBqIQEMuAILQTwhGyABIiMgAkYNyQIgAiAjayAAKAIAIiBqISEgIyEYICAhAQJAA0AgGC0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUHwpYCAAGotAABHDb4CIAFBBUYNASABQQFqIQEgGEEBaiIYIAJHDQALIAAgITYCAAzKAgsgAEEANgIAIABBBDoALCAjICBrQQZqIQEMtwILAkAgASIYIAJHDQBBPSEbDMkCCwJAAkACQAJAIBgtAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAMACwALAAsACwALAAsACwALAAsACwALAAgHAAsACwAICA8ACCyAYQQFqIQFBNSEbDMACCyAYQQFqIQFBNiEbDL8CCyAYQQFqIQFBNyEbDL4CCyAYQQFqIQFBOCEbDL0CCwJAIAEiASACRg0AIABBi4CAgAA2AgggACABNgIEIAEhAUE5IRsMvQILQT4hGwzHAgsgASIBIAJHDbMBQcAAIRsMxgILQcEAIRsgASIjIAJGDcUCIAIgI2sgACgCACIgaiEhICMhHyAgIQECQANAIB8tAAAgAUH2pYCAAGotAABHDbgBIAFBAUYNASABQQFqIQEgH0EBaiIfIAJHDQALIAAgITYCAAzGAgsgAEEANgIAICMgIGtBAmohAQyzAQsCQCABIgEgAkcNAEHDACEbDMUCCyABLQAAQQpHDbcBIAFBAWohAQyzAQsCQCABIgEgAkcNAEHEACEbDMQCCwJAAkAgAS0AAEF2ag4EAbgBuAEAuAELIAFBAWohAUE9IRsMuQILIAFBAWohAQyyAQsCQCABIgEgAkcNAEHFACEbDMMCC0EAIRsCQAJAAkACQAJAAkACQAJAIAEtAABBUGoOCr8BvgEAAQIDBAUGB8ABC0ECIRsMvgELQQMhGwy9AQtBBCEbDLwBC0EFIRsMuwELQQYhGwy6AQtBByEbDLkBC0EIIRsMuAELQQkhGwy3AQsCQCABIgEgAkcNAEHGACEbDMICCyABLQAAQS5HDbgBIAFBAWohAQyGAgsCQCABIgEgAkcNAEHHACEbDMECC0EAIRsCQAJAAkACQAJAAkACQAJAIAEtAABBUGoOCsEBwAEAAQIDBAUGB8IBC0ECIRsMwAELQQMhGwy/AQtBBCEbDL4BC0EFIRsMvQELQQYhGwy8AQtBByEbDLsBC0EIIRsMugELQQkhGwy5AQtByAAhGyABIiMgAkYNvwIgAiAjayAAKAIAIiBqISEgIyEBICAhHwNAIAEtAAAgH0GCpoCAAGotAABHDbwBIB9BA0YNuwEgH0EBaiEfIAFBAWoiASACRw0ACyAAICE2AgAMvwILQckAIRsgASIjIAJGDb4CIAIgI2sgACgCACIgaiEhICMhASAgIR8DQCABLQAAIB9BhqaAgABqLQAARw27ASAfQQJGDb0BIB9BAWohHyABQQFqIgEgAkcNAAsgACAhNgIADL4CC0HKACEbIAEiIyACRg29AiACICNrIAAoAgAiIGohISAjIQEgICEfA0AgAS0AACAfQYmmgIAAai0AAEcNugEgH0EDRg29ASAfQQFqIR8gAUEBaiIBIAJHDQALIAAgITYCAAy9AgsDQAJAIAEtAAAiG0EgRg0AAkACQAJAIBtBuH9qDgsAAb4BvgG+Ab4BvgG+Ab4BvgECvgELIAFBAWohAUHCACEbDLUCCyABQQFqIQFBwwAhGwy0AgsgAUEBaiEBQcQAIRsMswILIAFBAWoiASACRw0AC0HLACEbDLwCCwJAIAEiASACRg0AIAAgAUEBaiIBIAIQpYCAgAAaIAEhAUEHIRsMsQILQcwAIRsMuwILA0ACQCABLQAAQZCmgIAAai0AACIbQQFGDQAgG0F+ag4DvQG+Ab8BwAELIAFBAWoiASACRw0AC0HNACEbDLoCCwJAIAEiASACRg0AIAFBAWohAQwDC0HOACEbDLkCCwNAAkAgAS0AAEGQqICAAGotAAAiG0EBRg0AAkAgG0F+ag4EwAHBAcIBAMMBCyABIQFBxgAhGwyvAgsgAUEBaiIBIAJHDQALQc8AIRsMuAILAkAgASIBIAJHDQBB0AAhGwy4AgsCQCABLQAAIhtBdmoOGqgBwwHDAaoBwwHDAcMBwwHDAcMBwwHDAcMBwwHDAcMBwwHDAcMBwwHDAcMBuAHDAcMBAMEBCyABQQFqIQELQQYhGwyrAgsDQAJAIAEtAABBkKqAgABqLQAAQQFGDQAgASEBDIACCyABQQFqIgEgAkcNAAtB0QAhGwy1AgsCQCABIgEgAkYNACABQQFqIQEMAwtB0gAhGwy0AgsCQCABIgEgAkcNAEHTACEbDLQCCyABQQFqIQEMAQsCQCABIgEgAkcNAEHUACEbDLMCCyABQQFqIQELQQQhGwymAgsCQCABIh8gAkcNAEHVACEbDLECCyAfIQECQAJAAkAgHy0AAEGQrICAAGotAABBf2oOB8IBwwHEAQD+AQECxQELIB9BAWohAQwKCyAfQQFqIQEMuwELQQAhGyAAQQA2AhwgAEHxjoCAADYCECAAQQc2AgwgACAfQQFqNgIUDLACCwJAA0ACQCABLQAAQZCsgIAAai0AACIbQQRGDQACQAJAIBtBf2oOB8ABwQHCAccBAAQBxwELIAEhAUHJACEbDKgCCyABQQFqIQFBywAhGwynAgsgAUEBaiIBIAJHDQALQdYAIRsMsAILIAFBAWohAQy5AQsCQCABIh8gAkcNAEHXACEbDK8CCyAfLQAAQS9HDcIBIB9BAWohAQwGCwJAIAEiHyACRw0AQdgAIRsMrgILAkAgHy0AACIBQS9HDQAgH0EBaiEBQcwAIRsMowILIAFBdmoiBEEWSw3BAUEBIAR0QYmAgAJxRQ3BAQyWAgsCQCABIgEgAkYNACABQQFqIQFBzQAhGwyiAgtB2QAhGwysAgsCQCABIh8gAkcNAEHbACEbDKwCCyAfIQECQCAfLQAAQZCwgIAAai0AAEF/ag4DlQL2AQDCAQtB0AAhGwygAgsCQCABIh8gAkYNAANAAkAgHy0AAEGQroCAAGotAAAiAUEDRg0AAkAgAUF/ag4ClwIAwwELIB8hAUHOACEbDKICCyAfQQFqIh8gAkcNAAtB2gAhGwyrAgtB2gAhGwyqAgsCQCABIgEgAkYNACAAQYyAgIAANgIIIAAgATYCBCABIQFBzwAhGwyfAgtB3AAhGwypAgsCQCABIgEgAkcNAEHdACEbDKkCCyAAQYyAgIAANgIIIAAgATYCBCABIQELQQMhGwycAgsDQCABLQAAQSBHDY8CIAFBAWoiASACRw0AC0HeACEbDKYCCwJAIAEiASACRw0AQd8AIRsMpgILIAEtAABBIEcNvAEgAUEBaiEBDNgBCwJAIAEiBCACRw0AQeAAIRsMpQILIAQtAABBzABHDb8BIARBAWohAUETIRsMvQELQeEAIRsgASIfIAJGDaMCIAIgH2sgACgCACIjaiEgIB8hBCAjIQEDQCAELQAAIAFBkLKAgABqLQAARw2+ASABQQVGDbwBIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADKMCCwJAIAEiBCACRw0AQeIAIRsMowILAkACQCAELQAAQb1/ag4MAL8BvwG/Ab8BvwG/Ab8BvwG/Ab8BAb8BCyAEQQFqIQFB1AAhGwyYAgsgBEEBaiEBQdUAIRsMlwILQeMAIRsgASIfIAJGDaECIAIgH2sgACgCACIjaiEgIB8hBCAjIQECQANAIAQtAAAgAUGNs4CAAGotAABHDb0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIDYCAAyiAgsgAEEANgIAIB8gI2tBA2ohAUEQIRsMugELQeQAIRsgASIfIAJGDaACIAIgH2sgACgCACIjaiEgIB8hBCAjIQECQANAIAQtAAAgAUGWsoCAAGotAABHDbwBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIDYCAAyhAgsgAEEANgIAIB8gI2tBBmohAUEWIRsMuQELQeUAIRsgASIfIAJGDZ8CIAIgH2sgACgCACIjaiEgIB8hBCAjIQECQANAIAQtAAAgAUGcsoCAAGotAABHDbsBIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIDYCAAygAgsgAEEANgIAIB8gI2tBBGohAUEFIRsMuAELAkAgASIEIAJHDQBB5gAhGwyfAgsgBC0AAEHZAEcNuQEgBEEBaiEBQQghGwy3AQsCQCABIgQgAkcNAEHnACEbDJ4CCwJAAkAgBC0AAEGyf2oOAwC6AQG6AQsgBEEBaiEBQdkAIRsMkwILIARBAWohAUHaACEbDJICCwJAIAEiBCACRw0AQegAIRsMnQILAkACQCAELQAAQbh/ag4IALkBuQG5AbkBuQG5AQG5AQsgBEEBaiEBQdgAIRsMkgILIARBAWohAUHbACEbDJECC0HpACEbIAEiHyACRg2bAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFBoLKAgABqLQAARw23ASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMnAILQQAhGyAAQQA2AgAgHyAja0EDaiEBDLQBC0HqACEbIAEiHyACRg2aAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFBo7KAgABqLQAARw22ASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMmwILIABBADYCACAfICNrQQVqIQFBIyEbDLMBCwJAIAEiBCACRw0AQesAIRsMmgILAkACQCAELQAAQbR/ag4IALYBtgG2AbYBtgG2AQG2AQsgBEEBaiEBQd0AIRsMjwILIARBAWohAUHeACEbDI4CCwJAIAEiBCACRw0AQewAIRsMmQILIAQtAABBxQBHDbMBIARBAWohAQzkAQtB7QAhGyABIh8gAkYNlwIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQaiygIAAai0AAEcNswEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADJgCCyAAQQA2AgAgHyAja0EEaiEBQS0hGwywAQtB7gAhGyABIh8gAkYNlgIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQfCygIAAai0AAEcNsgEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADJcCCyAAQQA2AgAgHyAja0EJaiEBQSkhGwyvAQsCQCABIgEgAkcNAEHvACEbDJYCC0EBIRsgAS0AAEHfAEcNrgEgAUEBaiEBDOIBC0HwACEbIAEiHyACRg2UAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBA0AgBC0AACABQayygIAAai0AAEcNrwEgAUEBRg36ASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIDYCAAyUAgtB8QAhGyABIh8gAkYNkwIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQa6ygIAAai0AAEcNrwEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADJQCCyAAQQA2AgAgHyAja0EDaiEBQQIhGwysAQtB8gAhGyABIh8gAkYNkgIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQZCzgIAAai0AAEcNrgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADJMCCyAAQQA2AgAgHyAja0ECaiEBQR8hGwyrAQtB8wAhGyABIh8gAkYNkQIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQZKzgIAAai0AAEcNrQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADJICCyAAQQA2AgAgHyAja0ECaiEBQQkhGwyqAQsCQCABIgQgAkcNAEH0ACEbDJECCwJAAkAgBC0AAEG3f2oOBwCtAa0BrQGtAa0BAa0BCyAEQQFqIQFB5gAhGwyGAgsgBEEBaiEBQecAIRsMhQILAkAgASIbIAJHDQBB9QAhGwyQAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQbGygIAAai0AAEcNqwEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQfUAIRsMkAILIABBADYCACAbIB9rQQZqIQFBGCEbDKgBCwJAIAEiGyACRw0AQfYAIRsMjwILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUG3soCAAGotAABHDaoBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEH2ACEbDI8CCyAAQQA2AgAgGyAfa0EDaiEBQRchGwynAQsCQCABIhsgAkcNAEH3ACEbDI4CCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFBurKAgABqLQAARw2pASABQQZGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBB9wAhGwyOAgsgAEEANgIAIBsgH2tBB2ohAUEVIRsMpgELAkAgASIbIAJHDQBB+AAhGwyNAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQcGygIAAai0AAEcNqAEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQfgAIRsMjQILIABBADYCACAbIB9rQQZqIQFBHiEbDKUBCwJAIAEiBCACRw0AQfkAIRsMjAILIAQtAABBzABHDaYBIARBAWohAUEKIRsMpAELAkAgASIEIAJHDQBB+gAhGwyLAgsCQAJAIAQtAABBv39qDg8ApwGnAacBpwGnAacBpwGnAacBpwGnAacBpwEBpwELIARBAWohAUHsACEbDIACCyAEQQFqIQFB7QAhGwz/AQsCQCABIgQgAkcNAEH7ACEbDIoCCwJAAkAgBC0AAEG/f2oOAwCmAQGmAQsgBEEBaiEBQesAIRsM/wELIARBAWohAUHuACEbDP4BCwJAIAEiGyACRw0AQfwAIRsMiQILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHHsoCAAGotAABHDaQBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEH8ACEbDIkCCyAAQQA2AgAgGyAfa0ECaiEBQQshGwyhAQsCQCABIgQgAkcNAEH9ACEbDIgCCwJAAkACQAJAIAQtAABBU2oOIwCmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBAaYBpgGmAaYBpgECpgGmAaYBA6YBCyAEQQFqIQFB6QAhGwz/AQsgBEEBaiEBQeoAIRsM/gELIARBAWohAUHvACEbDP0BCyAEQQFqIQFB8AAhGwz8AQsCQCABIhsgAkcNAEH+ACEbDIcCCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFBybKAgABqLQAARw2iASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBB/gAhGwyHAgsgAEEANgIAIBsgH2tBBWohAUEZIRsMnwELAkAgASIfIAJHDQBB/wAhGwyGAgsgAiAfayAAKAIAIiNqIRsgHyEEICMhAQJAA0AgBC0AACABQc6ygIAAai0AAEcNoQEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAbNgIAQf8AIRsMhgILIABBADYCAEEGIRsgHyAja0EGaiEBDJ4BCwJAIAEiGyACRw0AQYABIRsMhQILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHUsoCAAGotAABHDaABIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGAASEbDIUCCyAAQQA2AgAgGyAfa0ECaiEBQRwhGwydAQsCQCABIhsgAkcNAEGBASEbDIQCCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFB1rKAgABqLQAARw2fASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBgQEhGwyEAgsgAEEANgIAIBsgH2tBAmohAUEnIRsMnAELAkAgASIEIAJHDQBBggEhGwyDAgsCQAJAIAQtAABBrH9qDgIAAZ8BCyAEQQFqIQFB9AAhGwz4AQsgBEEBaiEBQfUAIRsM9wELAkAgASIbIAJHDQBBgwEhGwyCAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQdiygIAAai0AAEcNnQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQYMBIRsMggILIABBADYCACAbIB9rQQJqIQFBJiEbDJoBCwJAIAEiGyACRw0AQYQBIRsMgQILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHasoCAAGotAABHDZwBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGEASEbDIECCyAAQQA2AgAgGyAfa0ECaiEBQQMhGwyZAQsCQCABIhsgAkcNAEGFASEbDIACCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFBjbOAgABqLQAARw2bASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBhQEhGwyAAgsgAEEANgIAIBsgH2tBA2ohAUEMIRsMmAELAkAgASIbIAJHDQBBhgEhGwz/AQsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQdyygIAAai0AAEcNmgEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQYYBIRsM/wELIABBADYCACAbIB9rQQRqIQFBDSEbDJcBCwJAIAEiBCACRw0AQYcBIRsM/gELAkACQCAELQAAQbp/ag4LAJoBmgGaAZoBmgGaAZoBmgGaAQGaAQsgBEEBaiEBQfkAIRsM8wELIARBAWohAUH6ACEbDPIBCwJAIAEiBCACRw0AQYgBIRsM/QELIAQtAABB0ABHDZcBIARBAWohAQzKAQsCQCABIgQgAkcNAEGJASEbDPwBCwJAAkAgBC0AAEG3f2oOBwGYAZgBmAGYAZgBAJgBCyAEQQFqIQFB/AAhGwzxAQsgBEEBaiEBQSIhGwyUAQsCQCABIhsgAkcNAEGKASEbDPsBCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFB4LKAgABqLQAARw2WASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBigEhGwz7AQsgAEEANgIAIBsgH2tBAmohAUEdIRsMkwELAkAgASIEIAJHDQBBiwEhGwz6AQsCQAJAIAQtAABBrn9qDgMAlgEBlgELIARBAWohAUH+ACEbDO8BCyAEQQFqIQFBBCEbDJIBCwJAIAEiBCACRw0AQYwBIRsM+QELAkACQAJAAkACQCAELQAAQb9/ag4VAJgBmAGYAZgBmAGYAZgBmAGYAZgBAZgBmAECmAGYAQOYAZgBBJgBCyAEQQFqIQFB9gAhGwzxAQsgBEEBaiEBQfcAIRsM8AELIARBAWohAUH4ACEbDO8BCyAEQQFqIQFB/QAhGwzuAQsgBEEBaiEBQf8AIRsM7QELAkAgASIbIAJHDQBBjQEhGwz4AQsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQY2zgIAAai0AAEcNkwEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQY0BIRsM+AELIABBADYCACAbIB9rQQNqIQFBESEbDJABCwJAIAEiGyACRw0AQY4BIRsM9wELIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHisoCAAGotAABHDZIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGOASEbDPcBCyAAQQA2AgAgGyAfa0EDaiEBQSwhGwyPAQsCQCABIhsgAkcNAEGPASEbDPYBCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFB5bKAgABqLQAARw2RASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBjwEhGwz2AQsgAEEANgIAIBsgH2tBBWohAUErIRsMjgELAkAgASIbIAJHDQBBkAEhGwz1AQsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQeqygIAAai0AAEcNkAEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQZABIRsM9QELIABBADYCACAbIB9rQQNqIQFBFCEbDI0BCwJAIAQgAkcNAEGRASEbDPQBCwJAAkACQAJAIAQtAABBvn9qDg8AAQKSAZIBkgGSAZIBkgGSAZIBkgGSAZIBA5IBCyAEQQFqIQFBgQEhGwzrAQsgBEEBaiEBQYIBIRsM6gELIARBAWohAUGDASEbDOkBCyAEQQFqIQFBhAEhGwzoAQsCQCAEIAJHDQBBkgEhGwzzAQsgBC0AAEHFAEcNjQEgBEEBaiEEDMEBCwJAIAUgAkcNAEGTASEbDPIBCyACIAVrIAAoAgAiG2ohHyAFIQQgGyEBAkADQCAELQAAIAFB7bKAgABqLQAARw2NASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBkwEhGwzyAQsgAEEANgIAIAUgG2tBA2ohAUEOIRsMigELAkAgBCACRw0AQZQBIRsM8QELIAQtAABB0ABHDYsBIARBAWohAUElIRsMiQELAkAgBiACRw0AQZUBIRsM8AELIAIgBmsgACgCACIbaiEfIAYhBCAbIQECQANAIAQtAAAgAUHwsoCAAGotAABHDYsBIAFBCEYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGVASEbDPABCyAAQQA2AgAgBiAba0EJaiEBQSohGwyIAQsCQCAEIAJHDQBBlgEhGwzvAQsCQAJAIAQtAABBq39qDgsAiwGLAYsBiwGLAYsBiwGLAYsBAYsBCyAEQQFqIQRBiAEhGwzkAQsgBEEBaiEGQYkBIRsM4wELAkAgBCACRw0AQZcBIRsM7gELAkACQCAELQAAQb9/ag4UAIoBigGKAYoBigGKAYoBigGKAYoBigGKAYoBigGKAYoBigGKAQGKAQsgBEEBaiEFQYcBIRsM4wELIARBAWohBEGKASEbDOIBCwJAIAcgAkcNAEGYASEbDO0BCyACIAdrIAAoAgAiG2ohHyAHIQQgGyEBAkADQCAELQAAIAFB+bKAgABqLQAARw2IASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBmAEhGwztAQsgAEEANgIAIAcgG2tBBGohAUEhIRsMhQELAkAgCCACRw0AQZkBIRsM7AELIAIgCGsgACgCACIbaiEfIAghBCAbIQECQANAIAQtAAAgAUH9soCAAGotAABHDYcBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGZASEbDOwBCyAAQQA2AgAgCCAba0EHaiEBQRohGwyEAQsCQCAEIAJHDQBBmgEhGwzrAQsCQAJAAkAgBC0AAEG7f2oOEQCIAYgBiAGIAYgBiAGIAYgBiAEBiAGIAYgBiAGIAQKIAQsgBEEBaiEEQYsBIRsM4QELIARBAWohB0GMASEbDOABCyAEQQFqIQhBjQEhGwzfAQsCQCAJIAJHDQBBmwEhGwzqAQsgAiAJayAAKAIAIhtqIR8gCSEEIBshAQJAA0AgBC0AACABQYSzgIAAai0AAEcNhQEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQZsBIRsM6gELIABBADYCACAJIBtrQQZqIQFBKCEbDIIBCwJAIAogAkcNAEGcASEbDOkBCyACIAprIAAoAgAiG2ohHyAKIQQgGyEBAkADQCAELQAAIAFBirOAgABqLQAARw2EASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBnAEhGwzpAQsgAEEANgIAIAogG2tBA2ohAUEHIRsMgQELAkAgBCACRw0AQZ0BIRsM6AELAkACQCAELQAAQbt/ag4OAIQBhAGEAYQBhAGEAYQBhAGEAYQBhAGEAQGEAQsgBEEBaiEJQY8BIRsM3QELIARBAWohCkGQASEbDNwBCwJAIAsgAkcNAEGeASEbDOcBCyACIAtrIAAoAgAiG2ohHyALIQQgGyEBAkADQCAELQAAIAFBjbOAgABqLQAARw2CASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBngEhGwznAQsgAEEANgIAIAsgG2tBA2ohAUESIRsMfwsCQCAMIAJHDQBBnwEhGwzmAQsgAiAMayAAKAIAIhtqIR8gDCEEIBshAQJAA0AgBC0AACABQZCzgIAAai0AAEcNgQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQZ8BIRsM5gELIABBADYCACAMIBtrQQJqIQFBICEbDH4LAkAgDSACRw0AQaABIRsM5QELIAIgDWsgACgCACIbaiEfIA0hBCAbIQECQANAIAQtAAAgAUGSs4CAAGotAABHDYABIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGgASEbDOUBCyAAQQA2AgAgDSAba0ECaiEBQQ8hGwx9CwJAIAQgAkcNAEGhASEbDOQBCwJAAkAgBC0AAEG3f2oOBwCAAYABgAGAAYABAYABCyAEQQFqIQxBkwEhGwzZAQsgBEEBaiENQZQBIRsM2AELAkAgDiACRw0AQaIBIRsM4wELIAIgDmsgACgCACIbaiEfIA4hBCAbIQECQANAIAQtAAAgAUGUs4CAAGotAABHDX4gAUEHRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQaIBIRsM4wELIABBADYCACAOIBtrQQhqIQFBGyEbDHsLAkAgBCACRw0AQaMBIRsM4gELAkACQAJAIAQtAABBvn9qDhIAf39/f39/f39/AX9/f39/fwJ/CyAEQQFqIQtBkgEhGwzYAQsgBEEBaiEEQZUBIRsM1wELIARBAWohDkGWASEbDNYBCwJAIAQgAkcNAEGkASEbDOEBCyAELQAAQc4ARw17IARBAWohBAywAQsCQCAEIAJHDQBBpQEhGwzgAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAELQAAQb9/ag4VAAECA4oBBAUGigGKAYoBBwgJCguKAQwNDg+KAQsgBEEBaiEBQdYAIRsM4wELIARBAWohAUHXACEbDOIBCyAEQQFqIQFB3AAhGwzhAQsgBEEBaiEBQeAAIRsM4AELIARBAWohAUHhACEbDN8BCyAEQQFqIQFB5AAhGwzeAQsgBEEBaiEBQeUAIRsM3QELIARBAWohAUHoACEbDNwBCyAEQQFqIQFB8QAhGwzbAQsgBEEBaiEBQfIAIRsM2gELIARBAWohAUHzACEbDNkBCyAEQQFqIQFBgAEhGwzYAQsgBEEBaiEEQYYBIRsM1wELIARBAWohBEGOASEbDNYBCyAEQQFqIQRBkQEhGwzVAQsgBEEBaiEEQZgBIRsM1AELAkAgECACRw0AQacBIRsM3wELIBBBAWohDwx7CwNAAkAgGy0AAEF2ag4EewAAfgALIBtBAWoiGyACRw0AC0GoASEbDN0BCwJAIBEgAkYNACAAQY2AgIAANgIIIAAgETYCBCARIQFBASEbDNIBC0GpASEbDNwBCwJAIBEgAkcNAEGqASEbDNwBCwJAAkAgES0AAEF2ag4EAbEBsQEAsQELIBFBAWohEAx8CyARQQFqIQ8MeAsgACAPIAIQp4CAgAAaIA8hAQxJCwJAIBEgAkcNAEGrASEbDNoBCwJAAkAgES0AAEF2ag4XAX19AX19fX19fX19fX19fX19fX19fQB9CyARQQFqIRELQZwBIRsMzgELAkAgEiACRw0AQa0BIRsM2QELIBItAABBIEcNeyAAQQA7ATIgEkEBaiEBQaABIRsMzQELIAEhIwJAA0AgIyIRIAJGDQEgES0AAEFQakH/AXEiG0EKTw2uAQJAIAAvATIiH0GZM0sNACAAIB9BCmwiHzsBMiAbQf//A3MgH0H+/wNxSQ0AIBFBAWohIyAAIB8gG2oiGzsBMiAbQf//A3FB6AdJDQELC0EAIRsgAEEANgIcIABBnYmAgAA2AhAgAEENNgIMIAAgEUEBajYCFAzYAQtBrAEhGwzXAQsCQCATIAJHDQBBrgEhGwzXAQtBACEbAkACQAJAAkACQAJAAkACQCATLQAAQVBqDgqDAYIBAAECAwQFBgeEAQtBAiEbDIIBC0EDIRsMgQELQQQhGwyAAQtBBSEbDH8LQQYhGwx+C0EHIRsMfQtBCCEbDHwLQQkhGwx7CwJAIBQgAkcNAEGvASEbDNYBCyAULQAAQS5HDXwgFEEBaiETDKwBCwJAIBUgAkcNAEGwASEbDNUBC0EAIRsCQAJAAkACQAJAAkACQAJAIBUtAABBUGoOCoUBhAEAAQIDBAUGB4YBC0ECIRsMhAELQQMhGwyDAQtBBCEbDIIBC0EFIRsMgQELQQYhGwyAAQtBByEbDH8LQQghGwx+C0EJIRsMfQsCQCAEIAJHDQBBsQEhGwzUAQsgAiAEayAAKAIAIh9qISMgBCEVIB8hGwNAIBUtAAAgG0Gcs4CAAGotAABHDX8gG0EERg23ASAbQQFqIRsgFUEBaiIVIAJHDQALIAAgIzYCAEGxASEbDNMBCwJAIBYgAkcNAEGyASEbDNMBCyACIBZrIAAoAgAiG2ohHyAWIQQgGyEBA0AgBC0AACABQaGzgIAAai0AAEcNfyABQQFGDbkBIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQbIBIRsM0gELAkAgFyACRw0AQbMBIRsM0gELIAIgF2sgACgCACIVaiEfIBchBCAVIRsDQCAELQAAIBtBo7OAgABqLQAARw1+IBtBAkYNgAEgG0EBaiEbIARBAWoiBCACRw0ACyAAIB82AgBBswEhGwzRAQsCQCAEIAJHDQBBtAEhGwzRAQsCQAJAIAQtAABBu39qDhAAf39/f39/f39/f39/f38BfwsgBEEBaiEWQaUBIRsMxgELIARBAWohF0GmASEbDMUBCwJAIAQgAkcNAEG1ASEbDNABCyAELQAAQcgARw18IARBAWohBAyoAQsCQCAEIAJHDQBBtgEhGwzPAQsgBC0AAEHIAEYNqAEgAEEBOgAoDJ8BCwNAAkAgBC0AAEF2ag4EAH5+AH4LIARBAWoiBCACRw0AC0G4ASEbDM0BCyAAQQA6AC8gAC0ALUEEcUUNxgELIABBADoALyABIQEMfQsgG0EVRg2sASAAQQA2AhwgACABNgIUIABBq4yAgAA2AhAgAEESNgIMQQAhGwzKAQsCQCAAIBsgAhCtgICAACIEDQAgGyEBDMMBCwJAIARBFUcNACAAQQM2AhwgACAbNgIUIABBhpKAgAA2AhAgAEEVNgIMQQAhGwzKAQsgAEEANgIcIAAgGzYCFCAAQauMgIAANgIQIABBEjYCDEEAIRsMyQELIBtBFUYNqAEgAEEANgIcIAAgATYCFCAAQYiMgIAANgIQIABBFDYCDEEAIRsMyAELIAAoAgQhIyAAQQA2AgQgGyAcp2oiICEBIAAgIyAbICAgHxsiGxCugICAACIfRQ1/IABBBzYCHCAAIBs2AhQgACAfNgIMQQAhGwzHAQsgACAALwEwQYABcjsBMCABIQEMNQsgG0EVRg2kASAAQQA2AhwgACABNgIUIABBxYuAgAA2AhAgAEETNgIMQQAhGwzFAQsgAEEANgIcIAAgATYCFCAAQYuLgIAANgIQIABBAjYCDEEAIRsMxAELIBtBO0cNASABQQFqIQELQQghGwy3AQtBACEbIABBADYCHCAAIAE2AhQgAEGjkICAADYCECAAQQw2AgwMwQELQgEhHAsgG0EBaiEBAkAgACkDICIdQv//////////D1YNACAAIB1CBIYgHIQ3AyAgASEBDHwLIABBADYCHCAAIAE2AhQgAEGJiYCAADYCECAAQQw2AgxBACEbDL8BCyAAQQA2AhwgACAbNgIUIABBo5CAgAA2AhAgAEEMNgIMQQAhGwy+AQsgACgCBCEjIABBADYCBCAbIBynaiIgIQEgACAjIBsgICAfGyIbEK6AgIAAIh9FDXMgAEEFNgIcIAAgGzYCFCAAIB82AgxBACEbDL0BCyAAQQA2AhwgACAbNgIUIABBjZSAgAA2AhAgAEEPNgIMQQAhGwy8AQsgACAbIAIQrYCAgAAiAQ0BIBshAQtBECEbDK8BCwJAIAFBFUcNACAAQQI2AhwgACAbNgIUIABBhpKAgAA2AhAgAEEVNgIMQQAhGwy6AQsgAEEANgIcIAAgGzYCFCAAQauMgIAANgIQIABBEjYCDEEAIRsMuQELIAFBAWohGwJAIAAvATAiAUGAAXFFDQACQCAAIBsgAhCwgICAACIBDQAgGyEBDHALIAFBFUcNmgEgAEEFNgIcIAAgGzYCFCAAQe6RgIAANgIQIABBFTYCDEEAIRsMuQELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIBs2AhQgAEHsj4CAADYCECAAQQQ2AgxBACEbDLkBCyAAIBsgAhCxgICAABogGyEBAkACQAJAAkACQCAAIBsgAhCsgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAbIQELQR4hGwyvAQsgAEEVNgIcIAAgGzYCFCAAQZGRgIAANgIQIABBFTYCDEEAIRsMuQELIABBADYCHCAAIBs2AhQgAEGxi4CAADYCECAAQRE2AgxBACEbDLgBCyAALQAtQQFxRQ0BQaoBIRsMrAELAkAgGCACRg0AA0ACQCAYLQAAQSBGDQAgGCEBDKcBCyAYQQFqIhggAkcNAAtBFyEbDLcBC0EXIRsMtgELIAAoAgQhBCAAQQA2AgQgACAEIBgQqICAgAAiBEUNkwEgAEEYNgIcIAAgBDYCDCAAIBhBAWo2AhRBACEbDLUBCyAAQRk2AhwgACABNgIUIAAgGzYCDEEAIRsMtAELIBshAUEBIR8CQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhHwwBC0EEIR8LIABBAToALCAAIAAvATAgH3I7ATALIBshAQtBISEbDKkBCyAAQQA2AhwgACAbNgIUIABBgY+AgAA2AhAgAEELNgIMQQAhGwyzAQsgGyEBQQEhHwJAAkACQAJAAkAgAC0ALEF7ag4EAgABAwULQQIhHwwBC0EEIR8LIABBAToALCAAIAAvATAgH3I7ATAMAQsgACAALwEwQQhyOwEwCyAbIQELQasBIRsMpgELIAAgASACEKuAgIAAGgwfCwJAIAEiGyACRg0AIBshAQJAAkAgGy0AAEF2ag4EAW9vAG8LIBtBAWohAQtBHyEbDKUBC0E/IRsMrwELIABBADYCHCAAIAE2AhQgAEHqkICAADYCECAAQQM2AgxBACEbDK4BCyAAKAIEIQEgAEEANgIEAkAgACABIBkQqoCAgAAiAQ0AIBlBAWohAQxtCyAAQR42AhwgACABNgIMIAAgGUEBajYCFEEAIRsMrQELIAAtAC1BAXFFDQNBrQEhGwyhAQsCQCAZIAJHDQBBHyEbDKwBCwNAAkAgGS0AAEF2ag4EAgAAAwALIBlBAWoiGSACRw0AC0EfIRsMqwELIAAoAgQhASAAQQA2AgQCQCAAIAEgGRCqgICAACIBDQAgGSEBDGoLIABBHjYCHCAAIBk2AhQgACABNgIMQQAhGwyqAQsgACgCBCEBIABBADYCBAJAIAAgASAZEKqAgIAAIgENACAZQQFqIQEMaQsgAEEeNgIcIAAgATYCDCAAIBlBAWo2AhRBACEbDKkBCyAAQQA2AhwgACAZNgIUIABB7oyAgAA2AhAgAEEKNgIMQQAhGwyoAQsgG0EsRw0BIAFBAWohG0EBIQECQAJAAkACQAJAIAAtACxBe2oOBAMBAgQACyAbIQEMBAtBAiEBDAELQQQhAQsgAEEBOgAsIAAgAC8BMCABcjsBMCAbIQEMAQsgACAALwEwQQhyOwEwIBshAQtBLiEbDJsBCyAAQQA6ACwgASEBC0EqIRsMmQELIABBADYCACAgICFrQQlqIQFBBSEbDJMBCyAAQQA2AgAgICAha0EGaiEBQQchGwySAQsgACAALwEwQSByOwEwIAEhAQwCCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQqoCAgAAiBA0AIAEhAQyXAQsgAEEoNgIcIAAgATYCFCAAIAQ2AgxBACEbDKABCyAAQQg6ACwgASEBC0EmIRsMkwELIAAtADBBIHENeUGuASEbDJIBCwJAIBogAkYNAAJAA0ACQCAaLQAAQVBqIgFB/wFxQQpJDQAgGiEBQSshGwyVAQsgACkDICIcQpmz5syZs+bMGVYNASAAIBxCCn4iHDcDICAcIAGtIh1Cf4VCgH6EVg0BIAAgHCAdQv8Bg3w3AyAgGkEBaiIaIAJHDQALQSohGwyeAQsgACgCBCEEIABBADYCBCAAIAQgGkEBaiIBEKqAgIAAIgQNeiABIQEMlAELQSohGwycAQsgACAALwEwQff7A3FBgARyOwEwIBohAQtBLCEbDI8BCyAAIAAvATBBEHI7ATALIABBADoALCAaIQEMWAsgAEEyNgIcIAAgATYCDCAAIBhBAWo2AhRBACEbDJcBCyABLQAAQTpHDQIgACgCBCEbIABBADYCBCAAIBsgARCogICAACIbDQEgAUEBaiEBC0ExIRsMigELIABBMjYCHCAAIBs2AgwgACABQQFqNgIUQQAhGwyUAQsgAEEANgIcIAAgATYCFCAAQYeOgIAANgIQIABBCjYCDEEAIRsMkwELIAFBAWohAQsgAEGAEjsBKiAAIAEgAhClgICAABogASEBC0GsASEbDIUBCyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQxSCyAAQcAANgIcIAAgATYCFCAAIBs2AgxBACEbDI8BCyAAQQA2AhwgACAfNgIUIABBlZiAgAA2AhAgAEEHNgIMIABBADYCAEEAIRsMjgELIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDFELIABBwQA2AhwgACABNgIUIAAgGzYCDEEAIRsMjQELQQAhGyAAQQA2AhwgACABNgIUIABB642AgAA2AhAgAEEJNgIMDIwBC0EBIRsLIAAgGzoAKyABQQFqIQEgAC0AKUEiRg2FAQxOCyAAQQA2AhwgACABNgIUIABBoo2AgAA2AhAgAEEJNgIMQQAhGwyJAQsgAEEANgIcIAAgATYCFCAAQcWKgIAANgIQIABBCTYCDEEAIRsMiAELQQEhGwsgACAbOgAqIAFBAWohAQxMCyAAQQA2AhwgACABNgIUIABBuI2AgAA2AhAgAEEJNgIMQQAhGwyFAQsgAEEANgIAICMgIGtBBGohAQJAIAAtAClBI08NACABIQEMTAsgAEEANgIcIAAgATYCFCAAQa+JgIAANgIQIABBCDYCDEEAIRsMhAELIABBADYCAAtBACEbIABBADYCHCAAIAE2AhQgAEHZmoCAADYCECAAQQg2AgwMggELIABBADYCACAjICBrQQNqIQECQCAALQApQSFHDQAgASEBDEkLIABBADYCHCAAIAE2AhQgAEH3iYCAADYCECAAQQg2AgxBACEbDIEBCyAAQQA2AgAgIyAga0EEaiEBAkAgAC0AKSIbQV1qQQtPDQAgASEBDEgLAkAgG0EGSw0AQQEgG3RBygBxRQ0AIAEhAQxIC0EAIRsgAEEANgIcIAAgATYCFCAAQdOJgIAANgIQIABBCDYCDAyAAQsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMSAsgAEHMADYCHCAAIAE2AhQgACAbNgIMQQAhGwx/CyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQxBCyAAQcAANgIcIAAgATYCFCAAIBs2AgxBACEbDH4LIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDEELIABBwQA2AhwgACABNgIUIAAgGzYCDEEAIRsMfQsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMRQsgAEHMADYCHCAAIAE2AhQgACAbNgIMQQAhGwx8CyAAQQA2AhwgACABNgIUIABBooqAgAA2AhAgAEEHNgIMQQAhGwx7CyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQw9CyAAQcAANgIcIAAgATYCFCAAIBs2AgxBACEbDHoLIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDD0LIABBwQA2AhwgACABNgIUIAAgGzYCDEEAIRsMeQsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMQQsgAEHMADYCHCAAIAE2AhQgACAbNgIMQQAhGwx4CyAAQQA2AhwgACABNgIUIABBuIiAgAA2AhAgAEEHNgIMQQAhGwx3CyAbQT9HDQEgAUEBaiEBC0EFIRsMagtBACEbIABBADYCHCAAIAE2AhQgAEHTj4CAADYCECAAQQc2AgwMdAsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMNgsgAEHAADYCHCAAIAE2AhQgACAbNgIMQQAhGwxzCyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQw2CyAAQcEANgIcIAAgATYCFCAAIBs2AgxBACEbDHILIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDDoLIABBzAA2AhwgACABNgIUIAAgGzYCDEEAIRsMcQsgACgCBCEBIABBADYCBAJAIAAgASAfEKSAgIAAIgENACAfIQEMMwsgAEHAADYCHCAAIB82AhQgACABNgIMQQAhGwxwCyAAKAIEIQEgAEEANgIEAkAgACABIB8QpICAgAAiAQ0AIB8hAQwzCyAAQcEANgIcIAAgHzYCFCAAIAE2AgxBACEbDG8LIAAoAgQhASAAQQA2AgQCQCAAIAEgHxCkgICAACIBDQAgHyEBDDcLIABBzAA2AhwgACAfNgIUIAAgATYCDEEAIRsMbgsgAEEANgIcIAAgHzYCFCAAQdCMgIAANgIQIABBBzYCDEEAIRsMbQsgAEEANgIcIAAgATYCFCAAQdCMgIAANgIQIABBBzYCDEEAIRsMbAtBACEbIABBADYCHCAAIB82AhQgAEHvk4CAADYCECAAQQc2AgwMawsgAEEANgIcIAAgHzYCFCAAQe+TgIAANgIQIABBBzYCDEEAIRsMagsgAEEANgIcIAAgHzYCFCAAQdSOgIAANgIQIABBBzYCDEEAIRsMaQsgAEEANgIcIAAgATYCFCAAQfGSgIAANgIQIABBBjYCDEEAIRsMaAsgAEEANgIAIB8gI2tBBmohAUEkIRsLIAAgGzoAKSABIQEMTQsgAEEANgIAC0EAIRsgAEEANgIcIAAgBDYCFCAAQdSTgIAANgIQIABBBjYCDAxkCyAAKAIEIQ8gAEEANgIEIAAgDyAbEKaAgIAAIg8NASAbQQFqIQ8LQZ0BIRsMVwsgAEGmATYCHCAAIA82AgwgACAbQQFqNgIUQQAhGwxhCyAAKAIEIRAgAEEANgIEIAAgECAbEKaAgIAAIhANASAbQQFqIRALQZoBIRsMVAsgAEGnATYCHCAAIBA2AgwgACAbQQFqNgIUQQAhGwxeCyAAQQA2AhwgACARNgIUIABB84qAgAA2AhAgAEENNgIMQQAhGwxdCyAAQQA2AhwgACASNgIUIABBzo2AgAA2AhAgAEEJNgIMQQAhGwxcC0EBIRsLIAAgGzoAKyATQQFqIRIMMAsgAEEANgIcIAAgEzYCFCAAQaKNgIAANgIQIABBCTYCDEEAIRsMWQsgAEEANgIcIAAgFDYCFCAAQcWKgIAANgIQIABBCTYCDEEAIRsMWAtBASEbCyAAIBs6ACogFUEBaiEUDC4LIABBADYCHCAAIBU2AhQgAEG4jYCAADYCECAAQQk2AgxBACEbDFULIABBADYCHCAAIBU2AhQgAEHZmoCAADYCECAAQQg2AgwgAEEANgIAQQAhGwxUCyAAQQA2AgALQQAhGyAAQQA2AhwgACAENgIUIABBu5OAgAA2AhAgAEEINgIMDFILIABBAjoAKCAAQQA2AgAgFyAVa0EDaiEVDDULIABBAjoALyAAIAQgAhCjgICAACIbDQFBrwEhGwxFCyAALQAoQX9qDgIgIiELIBtBFUcNKSAAQbcBNgIcIAAgBDYCFCAAQdeRgIAANgIQIABBFTYCDEEAIRsMTgtBACEbDEILQQIhGwxBC0EMIRsMQAtBDyEbDD8LQREhGww+C0EdIRsMPQtBFSEbDDwLQRchGww7C0EYIRsMOgtBGiEbDDkLQRshGww4C0E6IRsMNwtBJCEbDDYLQSUhGww1C0EvIRsMNAtBMCEbDDMLQTshGwwyC0E8IRsMMQtBPiEbDDALQT8hGwwvC0HAACEbDC4LQcEAIRsMLQtBxQAhGwwsC0HHACEbDCsLQcgAIRsMKgtBygAhGwwpC0HfACEbDCgLQeIAIRsMJwtB+wAhGwwmC0GFASEbDCULQZcBIRsMJAtBmQEhGwwjC0GpASEbDCILQaQBIRsMIQtBmwEhGwwgC0GeASEbDB8LQZ8BIRsMHgtBoQEhGwwdC0GiASEbDBwLQacBIRsMGwtBqAEhGwwaCyAAQQA2AhwgACAENgIUIABB5ouAgAA2AhAgAEEQNgIMQQAhGwwkCyAAQQA2AhwgACAaNgIUIABBuo+AgAA2AhAgAEEENgIMQQAhGwwjCyAAQSc2AhwgACABNgIUIAAgBDYCDEEAIRsMIgsgGEEBaiEBDBkLIABBCjYCHCAAIAE2AhQgAEHBkYCAADYCECAAQRU2AgxBACEbDCALIABBEDYCHCAAIAE2AhQgAEHukYCAADYCECAAQRU2AgxBACEbDB8LIABBADYCHCAAIBs2AhQgAEGIjICAADYCECAAQRQ2AgxBACEbDB4LIABBBDYCHCAAIAE2AhQgAEGGkoCAADYCECAAQRU2AgxBACEbDB0LIABBADYCACAEIB9rQQVqIRULQaMBIRsMEAsgAEEANgIAIB8gI2tBAmohAUHjACEbDA8LIABBADYCACAAQYEEOwEoIBYgG2tBAmohAQtB0wAhGwwNCyABIQECQCAALQApQQVHDQBB0gAhGwwNC0HRACEbDAwLQQAhGyAAQQA2AhwgAEG6joCAADYCECAAQQc2AgwgACAfQQFqNgIUDBYLIABBADYCACAjICBrQQJqIQFBNCEbDAoLIAEhAQtBLSEbDAgLIAFBAWohAUEjIRsMBwtBICEbDAYLIABBADYCACAgICFrQQRqIQFBBiEbCyAAIBs6ACwgASEBQQ4hGwwECyAAQQA2AgAgIyAga0EHaiEBQQ0hGwwDCyAAQQA2AgAgHyEBQQshGwwCCyAAQQA2AgALIABBADoALCAYIQFBCSEbDAALC0EAIRsgAEEANgIcIAAgATYCFCAAQZaPgIAANgIQIABBCzYCDAwJC0EAIRsgAEEANgIcIAAgATYCFCAAQfGIgIAANgIQIABBCzYCDAwIC0EAIRsgAEEANgIcIAAgATYCFCAAQYiNgIAANgIQIABBCjYCDAwHCyAAQQI2AhwgACABNgIUIABBoJKAgAA2AhAgAEEWNgIMQQAhGwwGC0EBIRsMBQtBwgAhGyABIgQgAkYNBCADQQhqIAAgBCACQfilgIAAQQoQuYCAgAAgAygCDCEEIAMoAggOAwEEAgALEL+AgIAAAAsgAEEANgIcIABBuZKAgAA2AhAgAEEXNgIMIAAgBEEBajYCFEEAIRsMAgsgAEEANgIcIAAgBDYCFCAAQc6SgIAANgIQIABBCTYCDEEAIRsMAQsCQCABIgQgAkcNAEEUIRsMAQsgAEGJgICAADYCCCAAIAQ2AgRBEyEbCyADQRBqJICAgIAAIBsLrwEBAn8gASgCACEGAkACQCACIANGDQAgBCAGaiEEIAYgA2ogAmshByACIAZBf3MgBWoiBmohBQNAAkAgAi0AACAELQAARg0AQQIhBAwDCwJAIAYNAEEAIQQgBSECDAMLIAZBf2ohBiAEQQFqIQQgAkEBaiICIANHDQALIAchBiADIQILIABBATYCACABIAY2AgAgACACNgIEDwsgAUEANgIAIAAgBDYCACAAIAI2AgQLCgAgABC7gICAAAuVNwELfyOAgICAAEEQayIBJICAgIAAAkBBACgCwLOAgAANAEEAEL6AgIAAQaC3hIAAayICQdkASQ0AQQAhAwJAQQAoAoC3gIAAIgQNAEEAQn83Aoy3gIAAQQBCgICEgICAwAA3AoS3gIAAQQAgAUEIakFwcUHYqtWqBXMiBDYCgLeAgABBAEEANgKUt4CAAEEAQQA2AuS2gIAAC0EAIAI2Auy2gIAAQQBBoLeEgAA2Aui2gIAAQQBBoLeEgAA2ArizgIAAQQAgBDYCzLOAgABBAEF/NgLIs4CAAANAIANB5LOAgABqIANB2LOAgABqIgQ2AgAgBCADQdCzgIAAaiIFNgIAIANB3LOAgABqIAU2AgAgA0Hss4CAAGogA0Hgs4CAAGoiBTYCACAFIAQ2AgAgA0H0s4CAAGogA0Hos4CAAGoiBDYCACAEIAU2AgAgA0Hws4CAAGogBDYCACADQSBqIgNBgAJHDQALQaC3hIAAQXhBoLeEgABrQQ9xQQBBoLeEgABBCGpBD3EbIgNqIgRBBGogAiADa0FIaiIDQQFyNgIAQQBBACgCkLeAgAA2AsSzgIAAQQAgBDYCwLOAgABBACADNgK0s4CAACACQaC3hIAAakFMakE4NgIACwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQewBSw0AAkBBACgCqLOAgAAiBkEQIABBE2pBcHEgAEELSRsiAkEDdiIEdiIDQQNxRQ0AIANBAXEgBHJBAXMiBUEDdCIAQdizgIAAaigCACIEQQhqIQMCQAJAIAQoAggiAiAAQdCzgIAAaiIARw0AQQAgBkF+IAV3cTYCqLOAgAAMAQsgACACNgIIIAIgADYCDAsgBCAFQQN0IgVBA3I2AgQgBCAFakEEaiIEIAQoAgBBAXI2AgAMDAsgAkEAKAKws4CAACIHTQ0BAkAgA0UNAAJAAkAgAyAEdEECIAR0IgNBACADa3JxIgNBACADa3FBf2oiAyADQQx2QRBxIgN2IgRBBXZBCHEiBSADciAEIAV2IgNBAnZBBHEiBHIgAyAEdiIDQQF2QQJxIgRyIAMgBHYiA0EBdkEBcSIEciADIAR2aiIFQQN0IgBB2LOAgABqKAIAIgQoAggiAyAAQdCzgIAAaiIARw0AQQAgBkF+IAV3cSIGNgKos4CAAAwBCyAAIAM2AgggAyAANgIMCyAEQQhqIQMgBCACQQNyNgIEIAQgBUEDdCIFaiAFIAJrIgU2AgAgBCACaiIAIAVBAXI2AgQCQCAHRQ0AIAdBA3YiCEEDdEHQs4CAAGohAkEAKAK8s4CAACEEAkACQCAGQQEgCHQiCHENAEEAIAYgCHI2AqizgIAAIAIhCAwBCyACKAIIIQgLIAggBDYCDCACIAQ2AgggBCACNgIMIAQgCDYCCAtBACAANgK8s4CAAEEAIAU2ArCzgIAADAwLQQAoAqyzgIAAIglFDQEgCUEAIAlrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqQQJ0Qdi1gIAAaigCACIAKAIEQXhxIAJrIQQgACEFAkADQAJAIAUoAhAiAw0AIAVBFGooAgAiA0UNAgsgAygCBEF4cSACayIFIAQgBSAESSIFGyEEIAMgACAFGyEAIAMhBQwACwsgACgCGCEKAkAgACgCDCIIIABGDQBBACgCuLOAgAAgACgCCCIDSxogCCADNgIIIAMgCDYCDAwLCwJAIABBFGoiBSgCACIDDQAgACgCECIDRQ0DIABBEGohBQsDQCAFIQsgAyIIQRRqIgUoAgAiAw0AIAhBEGohBSAIKAIQIgMNAAsgC0EANgIADAoLQX8hAiAAQb9/Sw0AIABBE2oiA0FwcSECQQAoAqyzgIAAIgdFDQBBACELAkAgAkGAAkkNAEEfIQsgAkH///8HSw0AIANBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiBSAFQYCAD2pBEHZBAnEiBXRBD3YgAyAEciAFcmsiA0EBdCACIANBFWp2QQFxckEcaiELC0EAIAJrIQQCQAJAAkACQCALQQJ0Qdi1gIAAaigCACIFDQBBACEDQQAhCAwBC0EAIQMgAkEAQRkgC0EBdmsgC0EfRht0IQBBACEIA0ACQCAFKAIEQXhxIAJrIgYgBE8NACAGIQQgBSEIIAYNAEEAIQQgBSEIIAUhAwwDCyADIAVBFGooAgAiBiAGIAUgAEEddkEEcWpBEGooAgAiBUYbIAMgBhshAyAAQQF0IQAgBQ0ACwsCQCADIAhyDQBBACEIQQIgC3QiA0EAIANrciAHcSIDRQ0DIANBACADa3FBf2oiAyADQQx2QRBxIgN2IgVBBXZBCHEiACADciAFIAB2IgNBAnZBBHEiBXIgAyAFdiIDQQF2QQJxIgVyIAMgBXYiA0EBdkEBcSIFciADIAV2akECdEHYtYCAAGooAgAhAwsgA0UNAQsDQCADKAIEQXhxIAJrIgYgBEkhAAJAIAMoAhAiBQ0AIANBFGooAgAhBQsgBiAEIAAbIQQgAyAIIAAbIQggBSEDIAUNAAsLIAhFDQAgBEEAKAKws4CAACACa08NACAIKAIYIQsCQCAIKAIMIgAgCEYNAEEAKAK4s4CAACAIKAIIIgNLGiAAIAM2AgggAyAANgIMDAkLAkAgCEEUaiIFKAIAIgMNACAIKAIQIgNFDQMgCEEQaiEFCwNAIAUhBiADIgBBFGoiBSgCACIDDQAgAEEQaiEFIAAoAhAiAw0ACyAGQQA2AgAMCAsCQEEAKAKws4CAACIDIAJJDQBBACgCvLOAgAAhBAJAAkAgAyACayIFQRBJDQAgBCACaiIAIAVBAXI2AgRBACAFNgKws4CAAEEAIAA2AryzgIAAIAQgA2ogBTYCACAEIAJBA3I2AgQMAQsgBCADQQNyNgIEIAMgBGpBBGoiAyADKAIAQQFyNgIAQQBBADYCvLOAgABBAEEANgKws4CAAAsgBEEIaiEDDAoLAkBBACgCtLOAgAAiACACTQ0AQQAoAsCzgIAAIgMgAmoiBCAAIAJrIgVBAXI2AgRBACAFNgK0s4CAAEEAIAQ2AsCzgIAAIAMgAkEDcjYCBCADQQhqIQMMCgsCQAJAQQAoAoC3gIAARQ0AQQAoAoi3gIAAIQQMAQtBAEJ/NwKMt4CAAEEAQoCAhICAgMAANwKEt4CAAEEAIAFBDGpBcHFB2KrVqgVzNgKAt4CAAEEAQQA2ApS3gIAAQQBBADYC5LaAgABBgIAEIQQLQQAhAwJAIAQgAkHHAGoiB2oiBkEAIARrIgtxIgggAksNAEEAQTA2Api3gIAADAoLAkBBACgC4LaAgAAiA0UNAAJAQQAoAti2gIAAIgQgCGoiBSAETQ0AIAUgA00NAQtBACEDQQBBMDYCmLeAgAAMCgtBAC0A5LaAgABBBHENBAJAAkACQEEAKALAs4CAACIERQ0AQei2gIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGogBEsNAwsgAygCCCIDDQALC0EAEL6AgIAAIgBBf0YNBSAIIQYCQEEAKAKEt4CAACIDQX9qIgQgAHFFDQAgCCAAayAEIABqQQAgA2txaiEGCyAGIAJNDQUgBkH+////B0sNBQJAQQAoAuC2gIAAIgNFDQBBACgC2LaAgAAiBCAGaiIFIARNDQYgBSADSw0GCyAGEL6AgIAAIgMgAEcNAQwHCyAGIABrIAtxIgZB/v///wdLDQQgBhC+gICAACIAIAMoAgAgAygCBGpGDQMgACEDCwJAIANBf0YNACACQcgAaiAGTQ0AAkAgByAGa0EAKAKIt4CAACIEakEAIARrcSIEQf7///8HTQ0AIAMhAAwHCwJAIAQQvoCAgABBf0YNACAEIAZqIQYgAyEADAcLQQAgBmsQvoCAgAAaDAQLIAMhACADQX9HDQUMAwtBACEIDAcLQQAhAAwFCyAAQX9HDQILQQBBACgC5LaAgABBBHI2AuS2gIAACyAIQf7///8HSw0BIAgQvoCAgAAhAEEAEL6AgIAAIQMgAEF/Rg0BIANBf0YNASAAIANPDQEgAyAAayIGIAJBOGpNDQELQQBBACgC2LaAgAAgBmoiAzYC2LaAgAACQCADQQAoAty2gIAATQ0AQQAgAzYC3LaAgAALAkACQAJAAkBBACgCwLOAgAAiBEUNAEHotoCAACEDA0AgACADKAIAIgUgAygCBCIIakYNAiADKAIIIgMNAAwDCwsCQAJAQQAoArizgIAAIgNFDQAgACADTw0BC0EAIAA2ArizgIAAC0EAIQNBACAGNgLstoCAAEEAIAA2Aui2gIAAQQBBfzYCyLOAgABBAEEAKAKAt4CAADYCzLOAgABBAEEANgL0toCAAANAIANB5LOAgABqIANB2LOAgABqIgQ2AgAgBCADQdCzgIAAaiIFNgIAIANB3LOAgABqIAU2AgAgA0Hss4CAAGogA0Hgs4CAAGoiBTYCACAFIAQ2AgAgA0H0s4CAAGogA0Hos4CAAGoiBDYCACAEIAU2AgAgA0Hws4CAAGogBDYCACADQSBqIgNBgAJHDQALIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgQgBiADa0FIaiIDQQFyNgIEQQBBACgCkLeAgAA2AsSzgIAAQQAgBDYCwLOAgABBACADNgK0s4CAACAGIABqQUxqQTg2AgAMAgsgAy0ADEEIcQ0AIAUgBEsNACAAIARNDQAgBEF4IARrQQ9xQQAgBEEIakEPcRsiBWoiAEEAKAK0s4CAACAGaiILIAVrIgVBAXI2AgQgAyAIIAZqNgIEQQBBACgCkLeAgAA2AsSzgIAAQQAgBTYCtLOAgABBACAANgLAs4CAACALIARqQQRqQTg2AgAMAQsCQCAAQQAoArizgIAAIgtPDQBBACAANgK4s4CAACAAIQsLIAAgBmohCEHotoCAACEDAkACQAJAAkACQAJAAkADQCADKAIAIAhGDQEgAygCCCIDDQAMAgsLIAMtAAxBCHFFDQELQei2gIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGoiBSAESw0DCyADKAIIIQMMAAsLIAMgADYCACADIAMoAgQgBmo2AgQgAEF4IABrQQ9xQQAgAEEIakEPcRtqIgYgAkEDcjYCBCAIQXggCGtBD3FBACAIQQhqQQ9xG2oiCCAGIAJqIgJrIQUCQCAEIAhHDQBBACACNgLAs4CAAEEAQQAoArSzgIAAIAVqIgM2ArSzgIAAIAIgA0EBcjYCBAwDCwJAQQAoAryzgIAAIAhHDQBBACACNgK8s4CAAEEAQQAoArCzgIAAIAVqIgM2ArCzgIAAIAIgA0EBcjYCBCACIANqIAM2AgAMAwsCQCAIKAIEIgNBA3FBAUcNACADQXhxIQcCQAJAIANB/wFLDQAgCCgCCCIEIANBA3YiC0EDdEHQs4CAAGoiAEYaAkAgCCgCDCIDIARHDQBBAEEAKAKos4CAAEF+IAt3cTYCqLOAgAAMAgsgAyAARhogAyAENgIIIAQgAzYCDAwBCyAIKAIYIQkCQAJAIAgoAgwiACAIRg0AIAsgCCgCCCIDSxogACADNgIIIAMgADYCDAwBCwJAIAhBFGoiAygCACIEDQAgCEEQaiIDKAIAIgQNAEEAIQAMAQsDQCADIQsgBCIAQRRqIgMoAgAiBA0AIABBEGohAyAAKAIQIgQNAAsgC0EANgIACyAJRQ0AAkACQCAIKAIcIgRBAnRB2LWAgABqIgMoAgAgCEcNACADIAA2AgAgAA0BQQBBACgCrLOAgABBfiAEd3E2AqyzgIAADAILIAlBEEEUIAkoAhAgCEYbaiAANgIAIABFDQELIAAgCTYCGAJAIAgoAhAiA0UNACAAIAM2AhAgAyAANgIYCyAIKAIUIgNFDQAgAEEUaiADNgIAIAMgADYCGAsgByAFaiEFIAggB2ohCAsgCCAIKAIEQX5xNgIEIAIgBWogBTYCACACIAVBAXI2AgQCQCAFQf8BSw0AIAVBA3YiBEEDdEHQs4CAAGohAwJAAkBBACgCqLOAgAAiBUEBIAR0IgRxDQBBACAFIARyNgKos4CAACADIQQMAQsgAygCCCEECyAEIAI2AgwgAyACNgIIIAIgAzYCDCACIAQ2AggMAwtBHyEDAkAgBUH///8HSw0AIAVBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiACAAQYCAD2pBEHZBAnEiAHRBD3YgAyAEciAAcmsiA0EBdCAFIANBFWp2QQFxckEcaiEDCyACIAM2AhwgAkIANwIQIANBAnRB2LWAgABqIQQCQEEAKAKss4CAACIAQQEgA3QiCHENACAEIAI2AgBBACAAIAhyNgKss4CAACACIAQ2AhggAiACNgIIIAIgAjYCDAwDCyAFQQBBGSADQQF2ayADQR9GG3QhAyAEKAIAIQADQCAAIgQoAgRBeHEgBUYNAiADQR12IQAgA0EBdCEDIAQgAEEEcWpBEGoiCCgCACIADQALIAggAjYCACACIAQ2AhggAiACNgIMIAIgAjYCCAwCCyAAQXggAGtBD3FBACAAQQhqQQ9xGyIDaiILIAYgA2tBSGoiA0EBcjYCBCAIQUxqQTg2AgAgBCAFQTcgBWtBD3FBACAFQUlqQQ9xG2pBQWoiCCAIIARBEGpJGyIIQSM2AgRBAEEAKAKQt4CAADYCxLOAgABBACALNgLAs4CAAEEAIAM2ArSzgIAAIAhBEGpBACkC8LaAgAA3AgAgCEEAKQLotoCAADcCCEEAIAhBCGo2AvC2gIAAQQAgBjYC7LaAgABBACAANgLotoCAAEEAQQA2AvS2gIAAIAhBJGohAwNAIANBBzYCACAFIANBBGoiA0sNAAsgCCAERg0DIAggCCgCBEF+cTYCBCAIIAggBGsiBjYCACAEIAZBAXI2AgQCQCAGQf8BSw0AIAZBA3YiBUEDdEHQs4CAAGohAwJAAkBBACgCqLOAgAAiAEEBIAV0IgVxDQBBACAAIAVyNgKos4CAACADIQUMAQsgAygCCCEFCyAFIAQ2AgwgAyAENgIIIAQgAzYCDCAEIAU2AggMBAtBHyEDAkAgBkH///8HSw0AIAZBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgAyAFciAAcmsiA0EBdCAGIANBFWp2QQFxckEcaiEDCyAEQgA3AhAgBEEcaiADNgIAIANBAnRB2LWAgABqIQUCQEEAKAKss4CAACIAQQEgA3QiCHENACAFIAQ2AgBBACAAIAhyNgKss4CAACAEQRhqIAU2AgAgBCAENgIIIAQgBDYCDAwECyAGQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQADQCAAIgUoAgRBeHEgBkYNAyADQR12IQAgA0EBdCEDIAUgAEEEcWpBEGoiCCgCACIADQALIAggBDYCACAEQRhqIAU2AgAgBCAENgIMIAQgBDYCCAwDCyAEKAIIIgMgAjYCDCAEIAI2AgggAkEANgIYIAIgBDYCDCACIAM2AggLIAZBCGohAwwFCyAFKAIIIgMgBDYCDCAFIAQ2AgggBEEYakEANgIAIAQgBTYCDCAEIAM2AggLQQAoArSzgIAAIgMgAk0NAEEAKALAs4CAACIEIAJqIgUgAyACayIDQQFyNgIEQQAgAzYCtLOAgABBACAFNgLAs4CAACAEIAJBA3I2AgQgBEEIaiEDDAMLQQAhA0EAQTA2Api3gIAADAILAkAgC0UNAAJAAkAgCCAIKAIcIgVBAnRB2LWAgABqIgMoAgBHDQAgAyAANgIAIAANAUEAIAdBfiAFd3EiBzYCrLOAgAAMAgsgC0EQQRQgCygCECAIRhtqIAA2AgAgAEUNAQsgACALNgIYAkAgCCgCECIDRQ0AIAAgAzYCECADIAA2AhgLIAhBFGooAgAiA0UNACAAQRRqIAM2AgAgAyAANgIYCwJAAkAgBEEPSw0AIAggBCACaiIDQQNyNgIEIAMgCGpBBGoiAyADKAIAQQFyNgIADAELIAggAmoiACAEQQFyNgIEIAggAkEDcjYCBCAAIARqIAQ2AgACQCAEQf8BSw0AIARBA3YiBEEDdEHQs4CAAGohAwJAAkBBACgCqLOAgAAiBUEBIAR0IgRxDQBBACAFIARyNgKos4CAACADIQQMAQsgAygCCCEECyAEIAA2AgwgAyAANgIIIAAgAzYCDCAAIAQ2AggMAQtBHyEDAkAgBEH///8HSw0AIARBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAFciACcmsiA0EBdCAEIANBFWp2QQFxckEcaiEDCyAAIAM2AhwgAEIANwIQIANBAnRB2LWAgABqIQUCQCAHQQEgA3QiAnENACAFIAA2AgBBACAHIAJyNgKss4CAACAAIAU2AhggACAANgIIIAAgADYCDAwBCyAEQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQICQANAIAIiBSgCBEF4cSAERg0BIANBHXYhAiADQQF0IQMgBSACQQRxakEQaiIGKAIAIgINAAsgBiAANgIAIAAgBTYCGCAAIAA2AgwgACAANgIIDAELIAUoAggiAyAANgIMIAUgADYCCCAAQQA2AhggACAFNgIMIAAgAzYCCAsgCEEIaiEDDAELAkAgCkUNAAJAAkAgACAAKAIcIgVBAnRB2LWAgABqIgMoAgBHDQAgAyAINgIAIAgNAUEAIAlBfiAFd3E2AqyzgIAADAILIApBEEEUIAooAhAgAEYbaiAINgIAIAhFDQELIAggCjYCGAJAIAAoAhAiA0UNACAIIAM2AhAgAyAINgIYCyAAQRRqKAIAIgNFDQAgCEEUaiADNgIAIAMgCDYCGAsCQAJAIARBD0sNACAAIAQgAmoiA0EDcjYCBCADIABqQQRqIgMgAygCAEEBcjYCAAwBCyAAIAJqIgUgBEEBcjYCBCAAIAJBA3I2AgQgBSAEaiAENgIAAkAgB0UNACAHQQN2IghBA3RB0LOAgABqIQJBACgCvLOAgAAhAwJAAkBBASAIdCIIIAZxDQBBACAIIAZyNgKos4CAACACIQgMAQsgAigCCCEICyAIIAM2AgwgAiADNgIIIAMgAjYCDCADIAg2AggLQQAgBTYCvLOAgABBACAENgKws4CAAAsgAEEIaiEDCyABQRBqJICAgIAAIAMLCgAgABC9gICAAAvwDQEHfwJAIABFDQAgAEF4aiIBIABBfGooAgAiAkF4cSIAaiEDAkAgAkEBcQ0AIAJBA3FFDQEgASABKAIAIgJrIgFBACgCuLOAgAAiBEkNASACIABqIQACQEEAKAK8s4CAACABRg0AAkAgAkH/AUsNACABKAIIIgQgAkEDdiIFQQN0QdCzgIAAaiIGRhoCQCABKAIMIgIgBEcNAEEAQQAoAqizgIAAQX4gBXdxNgKos4CAAAwDCyACIAZGGiACIAQ2AgggBCACNgIMDAILIAEoAhghBwJAAkAgASgCDCIGIAFGDQAgBCABKAIIIgJLGiAGIAI2AgggAiAGNgIMDAELAkAgAUEUaiICKAIAIgQNACABQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQECQAJAIAEoAhwiBEECdEHYtYCAAGoiAigCACABRw0AIAIgBjYCACAGDQFBAEEAKAKss4CAAEF+IAR3cTYCrLOAgAAMAwsgB0EQQRQgBygCECABRhtqIAY2AgAgBkUNAgsgBiAHNgIYAkAgASgCECICRQ0AIAYgAjYCECACIAY2AhgLIAEoAhQiAkUNASAGQRRqIAI2AgAgAiAGNgIYDAELIAMoAgQiAkEDcUEDRw0AIAMgAkF+cTYCBEEAIAA2ArCzgIAAIAEgAGogADYCACABIABBAXI2AgQPCyADIAFNDQAgAygCBCICQQFxRQ0AAkACQCACQQJxDQACQEEAKALAs4CAACADRw0AQQAgATYCwLOAgABBAEEAKAK0s4CAACAAaiIANgK0s4CAACABIABBAXI2AgQgAUEAKAK8s4CAAEcNA0EAQQA2ArCzgIAAQQBBADYCvLOAgAAPCwJAQQAoAryzgIAAIANHDQBBACABNgK8s4CAAEEAQQAoArCzgIAAIABqIgA2ArCzgIAAIAEgAEEBcjYCBCABIABqIAA2AgAPCyACQXhxIABqIQACQAJAIAJB/wFLDQAgAygCCCIEIAJBA3YiBUEDdEHQs4CAAGoiBkYaAkAgAygCDCICIARHDQBBAEEAKAKos4CAAEF+IAV3cTYCqLOAgAAMAgsgAiAGRhogAiAENgIIIAQgAjYCDAwBCyADKAIYIQcCQAJAIAMoAgwiBiADRg0AQQAoArizgIAAIAMoAggiAksaIAYgAjYCCCACIAY2AgwMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEGDAELA0AgAiEFIAQiBkEUaiICKAIAIgQNACAGQRBqIQIgBigCECIEDQALIAVBADYCAAsgB0UNAAJAAkAgAygCHCIEQQJ0Qdi1gIAAaiICKAIAIANHDQAgAiAGNgIAIAYNAUEAQQAoAqyzgIAAQX4gBHdxNgKss4CAAAwCCyAHQRBBFCAHKAIQIANGG2ogBjYCACAGRQ0BCyAGIAc2AhgCQCADKAIQIgJFDQAgBiACNgIQIAIgBjYCGAsgAygCFCICRQ0AIAZBFGogAjYCACACIAY2AhgLIAEgAGogADYCACABIABBAXI2AgQgAUEAKAK8s4CAAEcNAUEAIAA2ArCzgIAADwsgAyACQX5xNgIEIAEgAGogADYCACABIABBAXI2AgQLAkAgAEH/AUsNACAAQQN2IgJBA3RB0LOAgABqIQACQAJAQQAoAqizgIAAIgRBASACdCICcQ0AQQAgBCACcjYCqLOAgAAgACECDAELIAAoAgghAgsgAiABNgIMIAAgATYCCCABIAA2AgwgASACNgIIDwtBHyECAkAgAEH///8HSw0AIABBCHYiAiACQYD+P2pBEHZBCHEiAnQiBCAEQYDgH2pBEHZBBHEiBHQiBiAGQYCAD2pBEHZBAnEiBnRBD3YgAiAEciAGcmsiAkEBdCAAIAJBFWp2QQFxckEcaiECCyABQgA3AhAgAUEcaiACNgIAIAJBAnRB2LWAgABqIQQCQAJAQQAoAqyzgIAAIgZBASACdCIDcQ0AIAQgATYCAEEAIAYgA3I2AqyzgIAAIAFBGGogBDYCACABIAE2AgggASABNgIMDAELIABBAEEZIAJBAXZrIAJBH0YbdCECIAQoAgAhBgJAA0AgBiIEKAIEQXhxIABGDQEgAkEddiEGIAJBAXQhAiAEIAZBBHFqQRBqIgMoAgAiBg0ACyADIAE2AgAgAUEYaiAENgIAIAEgATYCDCABIAE2AggMAQsgBCgCCCIAIAE2AgwgBCABNgIIIAFBGGpBADYCACABIAQ2AgwgASAANgIIC0EAQQAoAsizgIAAQX9qIgFBfyABGzYCyLOAgAALC04AAkAgAA0APwBBEHQPCwJAIABB//8DcQ0AIABBf0wNAAJAIABBEHZAACIAQX9HDQBBAEEwNgKYt4CAAEF/DwsgAEEQdA8LEL+AgIAAAAsEAAAACwuuKwEAQYAIC6YrAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBwYXJhbWV0ZXJzAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABNS0FDVElWSVRZAENPUFkATk9USUZZAFBMQVkAUFVUAENIRUNLT1VUAFBPU1QAUkVQT1JUAEhQRV9JTlZBTElEX0NPTlNUQU5UAEdFVABIUEVfU1RSSUNUAFJFRElSRUNUAENPTk5FQ1QASFBFX0lOVkFMSURfU1RBVFVTAE9QVElPTlMAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASFBFX0lOVkFMSURfVVJMAE1LQ09MAEFDTABIUEVfSU5URVJOQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBQQVVTRQBQVVJHRQBNRVJHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAFBST1BGSU5EAFVOQklORABSRUJJTkQASFBFX0xGX0VYUEVDVEVEAEhQRV9QQVVTRUQASEVBRABFeHBlY3RlZCBIVFRQLwCMCwAAfwsAAIMKAAA5DQAAwAsAAA0LAAAPDQAAZQsAAGoKAAAjCwAATAsAAKULAAAjDAAAnwoAAIwMAAD3CwAANwsAAD8MAABtDAAA3woAAFcMAABJDQAAtAwAAMcMAADWCgAAhQwAAH8KAABUDQAAXgoAAFEKAACXCgAAsgoAAO0MAABACgAAnAsAAHULAAA6DAAAIg0AAOQLAADwCwAAmgsAADQNAAAyDQAAKw0AAHsLAABjCgAANQoAAFUKAACuDAAA7gsAAEUKAAD+DAAA/AwAAOgLAACoDAAA8woAAJULAACTCwAA3QwAAKELAADzDAAA5AwAAP4KAABMCgAAogwAAAQLAADICgAAugoAAI4KAAAIDQAA3gsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==' +module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzk4AwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAYGAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAAMEBQFwAQ4OBQMBAAIGCAF/AUGAuAQLB/UEHwZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAJGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAKGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQA1DGxsaHR0cF9hbGxvYwAMBm1hbGxvYwA6C2xsaHR0cF9mcmVlAA0EZnJlZQA8D2xsaHR0cF9nZXRfdHlwZQAOFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAPFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAQEWxsaHR0cF9nZXRfbWV0aG9kABEWbGxodHRwX2dldF9zdGF0dXNfY29kZQASEmxsaHR0cF9nZXRfdXBncmFkZQATDGxsaHR0cF9yZXNldAAUDmxsaHR0cF9leGVjdXRlABUUbGxodHRwX3NldHRpbmdzX2luaXQAFg1sbGh0dHBfZmluaXNoABcMbGxodHRwX3BhdXNlABgNbGxodHRwX3Jlc3VtZQAZG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAaEGxsaHR0cF9nZXRfZXJybm8AGxdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAcF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uAB0UbGxodHRwX2dldF9lcnJvcl9wb3MAHhFsbGh0dHBfZXJybm9fbmFtZQAfEmxsaHR0cF9tZXRob2RfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mADMJEwEAQQELDQECAwQFCwYHLiooJCYKuKgCOAIACwgAEIiAgIAACxkAIAAQtoCAgAAaIAAgAjYCNCAAIAE6ACgLHAAgACAALwEyIAAtAC4gABC1gICAABCAgICAAAspAQF/QTgQuoCAgAAiARC2gICAABogAUGAiICAADYCNCABIAA6ACggAQsKACAAELyAgIAACwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BMgsHACAALQAuC0UBBH8gACgCGCEBIAAtAC0hAiAALQAoIQMgACgCNCEEIAAQtoCAgAAaIAAgBDYCNCAAIAM6ACggACACOgAtIAAgATYCGAsRACAAIAEgASACahC3gICAAAs+AQF7IAD9DAAAAAAAAAAAAAAAAAAAAAAiAf0LAgAgAEEwakIANwIAIABBIGogAf0LAgAgAEEQaiAB/QsCAAtnAQF/QQAhAQJAIAAoAgwNAAJAAkACQAJAIAAtAC8OAwEAAwILIAAoAjQiAUUNACABKAIcIgFFDQAgACABEYCAgIAAACIBDQMLQQAPCxC/gICAAAALIABB/5GAgAA2AhBBDiEBCyABCx4AAkAgACgCDA0AIABBhJSAgAA2AhAgAEEVNgIMCwsWAAJAIAAoAgxBFUcNACAAQQA2AgwLCxYAAkAgACgCDEEWRw0AIABBADYCDAsLBwAgACgCDAsHACAAKAIQCwkAIAAgATYCEAsHACAAKAIUCyIAAkAgAEEaSQ0AEL+AgIAAAAsgAEECdEHIm4CAAGooAgALIgACQCAAQS5JDQAQv4CAgAAACyAAQQJ0QbCcgIAAaigCAAsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCACIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIEIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBnI6AgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAigiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI0IgRFDQAgBCgCCCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQdKKgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCNCIERQ0AIAQoAgwiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEHdk4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCMCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIQIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBw5CAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAjQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCFCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIcIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCNCIERQ0AIAQoAhgiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEHSiICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCICIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIkIgRFDQAgACAEEYCAgIAAACEDCyADC0UBAX8CQAJAIAAvATBBFHFBFEcNAEEBIQMgAC0AKEEBRg0BIAAvATJB5QBGIQMMAQsgAC0AKUEFRiEDCyAAIAM6AC5BAAvyAQEDf0EBIQMCQCAALwEwIgRBCHENACAAKQMgQgBSIQMLAkACQCAALQAuRQ0AQQEhBSAALQApQQVGDQFBASEFIARBwABxRSADcUEBRw0BC0EAIQUgBEHAAHENAEECIQUgBEEIcQ0AAkAgBEGABHFFDQACQCAALQAoQQFHDQAgAC0ALUEKcQ0AQQUPC0EEDwsCQCAEQSBxDQACQCAALQAoQQFGDQAgAC8BMiIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQBBBCEFIARBiARxQYAERg0CIARBKHFFDQILQQAPC0EAQQMgACkDIFAbIQULIAULXQECf0EAIQECQCAALQAoQQFGDQAgAC8BMiICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6IBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMiIFQZx/akHkAEkNACAFQcwBRg0AIAVBsAJGDQAgBEHAAHENAEEAIQMgBEGIBHFBgARGDQAgBEEocUEARyEDCyAAQQA7ATAgAEEAOgAvIAMLlAEBAn8CQAJAAkAgAC0AKkUNACAALQArRQ0AQQAhASAALwEwIgJBAnFFDQEMAgtBACEBIAAvATAiAkEBcUUNAQtBASEBIAAtAChBAUYNACAALwEyIgBBnH9qQeQASQ0AIABBzAFGDQAgAEGwAkYNACACQcAAcQ0AQQAhASACQYgEcUGABEYNACACQShxQQBHIQELIAELSAEBeyAAQRBq/QwAAAAAAAAAAAAAAAAAAAAAIgH9CwMAIAAgAf0LAwAgAEEwakIANwMAIABBIGogAf0LAwAgAEG8ATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACELiAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvTzgEDHH8DfgV/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8gASEQIAEhESABIRIgASETIAEhFCABIRUgASEWIAEhFyABIRggASEZIAEhGiABIRsgASEcIAEhHQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAhwiHkF/ag68AbcBAbYBAgMEBQYHCAkKCwwNDg8QwAG/ARESE7UBFBUWFxgZGr0BvAEbHB0eHyAhtAGzASIjsgGxASQlJicoKSorLC0uLzAxMjM0NTY3ODk6uAE7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwEAuQELQQAhHgyvAQtBDyEeDK4BC0EOIR4MrQELQRAhHgysAQtBESEeDKsBC0EUIR4MqgELQRUhHgypAQtBFiEeDKgBC0EXIR4MpwELQRghHgymAQtBCCEeDKUBC0EZIR4MpAELQRohHgyjAQtBEyEeDKIBC0ESIR4MoQELQRshHgygAQtBHCEeDJ8BC0EdIR4MngELQR4hHgydAQtBqgEhHgycAQtBqwEhHgybAQtBICEeDJoBC0EhIR4MmQELQSIhHgyYAQtBIyEeDJcBC0EkIR4MlgELQa0BIR4MlQELQSUhHgyUAQtBKSEeDJMBC0ENIR4MkgELQSYhHgyRAQtBJyEeDJABC0EoIR4MjwELQS4hHgyOAQtBKiEeDI0BC0GuASEeDIwBC0EMIR4MiwELQS8hHgyKAQtBKyEeDIkBC0ELIR4MiAELQSwhHgyHAQtBLSEeDIYBC0EKIR4MhQELQTEhHgyEAQtBMCEeDIMBC0EJIR4MggELQR8hHgyBAQtBMiEeDIABC0EzIR4MfwtBNCEeDH4LQTUhHgx9C0E2IR4MfAtBNyEeDHsLQTghHgx6C0E5IR4MeQtBOiEeDHgLQawBIR4MdwtBOyEeDHYLQTwhHgx1C0E9IR4MdAtBPiEeDHMLQT8hHgxyC0HAACEeDHELQcEAIR4McAtBwgAhHgxvC0HDACEeDG4LQcQAIR4MbQtBByEeDGwLQcUAIR4MawtBBiEeDGoLQcYAIR4MaQtBBSEeDGgLQccAIR4MZwtBBCEeDGYLQcgAIR4MZQtByQAhHgxkC0HKACEeDGMLQcsAIR4MYgtBAyEeDGELQcwAIR4MYAtBzQAhHgxfC0HOACEeDF4LQdAAIR4MXQtBzwAhHgxcC0HRACEeDFsLQdIAIR4MWgtBAiEeDFkLQdMAIR4MWAtB1AAhHgxXC0HVACEeDFYLQdYAIR4MVQtB1wAhHgxUC0HYACEeDFMLQdkAIR4MUgtB2gAhHgxRC0HbACEeDFALQdwAIR4MTwtB3QAhHgxOC0HeACEeDE0LQd8AIR4MTAtB4AAhHgxLC0HhACEeDEoLQeIAIR4MSQtB4wAhHgxIC0HkACEeDEcLQeUAIR4MRgtB5gAhHgxFC0HnACEeDEQLQegAIR4MQwtB6QAhHgxCC0HqACEeDEELQesAIR4MQAtB7AAhHgw/C0HtACEeDD4LQe4AIR4MPQtB7wAhHgw8C0HwACEeDDsLQfEAIR4MOgtB8gAhHgw5C0HzACEeDDgLQfQAIR4MNwtB9QAhHgw2C0H2ACEeDDULQfcAIR4MNAtB+AAhHgwzC0H5ACEeDDILQfoAIR4MMQtB+wAhHgwwC0H8ACEeDC8LQf0AIR4MLgtB/gAhHgwtC0H/ACEeDCwLQYABIR4MKwtBgQEhHgwqC0GCASEeDCkLQYMBIR4MKAtBhAEhHgwnC0GFASEeDCYLQYYBIR4MJQtBhwEhHgwkC0GIASEeDCMLQYkBIR4MIgtBigEhHgwhC0GLASEeDCALQYwBIR4MHwtBjQEhHgweC0GOASEeDB0LQY8BIR4MHAtBkAEhHgwbC0GRASEeDBoLQZIBIR4MGQtBkwEhHgwYC0GUASEeDBcLQZUBIR4MFgtBlgEhHgwVC0GXASEeDBQLQZgBIR4MEwtBmQEhHgwSC0GdASEeDBELQZoBIR4MEAtBASEeDA8LQZsBIR4MDgtBnAEhHgwNC0GeASEeDAwLQaABIR4MCwtBnwEhHgwKC0GhASEeDAkLQaIBIR4MCAtBowEhHgwHC0GkASEeDAYLQaUBIR4MBQtBpgEhHgwEC0GnASEeDAMLQagBIR4MAgtBqQEhHgwBC0GvASEeCwNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIB4OsAEAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGhweHyAjJCUmJygpKiwtLi8w+wI0Njg5PD9BQkNERUZHSElKS0xNTk9QUVJTVVdZXF1eYGJjZGVmZ2hrbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHaAeAB4QHkAfEBvQK9AgsgASIIIAJHDcIBQbwBIR4MlQMLIAEiHiACRw2xAUGsASEeDJQDCyABIgEgAkcNZ0HiACEeDJMDCyABIgEgAkcNXUHaACEeDJIDCyABIgEgAkcNVkHVACEeDJEDCyABIgEgAkcNUkHTACEeDJADCyABIgEgAkcNT0HRACEeDI8DCyABIgEgAkcNTEHPACEeDI4DCyABIgEgAkcNEEEMIR4MjQMLIAEiASACRw0zQTghHgyMAwsgASIBIAJHDS9BNSEeDIsDCyABIgEgAkcNJkEyIR4MigMLIAEiASACRw0kQS8hHgyJAwsgASIBIAJHDR1BJCEeDIgDCyAALQAuQQFGDf0CDMcBCyAAIAEiASACELSAgIAAQQFHDbQBDLUBCyAAIAEiASACEK2AgIAAIh4NtQEgASEBDLACCwJAIAEiASACRw0AQQYhHgyFAwsgACABQQFqIgEgAhCwgICAACIeDbYBIAEhAQwPCyAAQgA3AyBBEyEeDPMCCyABIh4gAkcNCUEPIR4MggMLAkAgASIBIAJGDQAgAUEBaiEBQREhHgzyAgtBByEeDIEDCyAAQgAgACkDICIfIAIgASIea60iIH0iISAhIB9WGzcDICAfICBWIiJFDbMBQQghHgyAAwsCQCABIgEgAkYNACAAQYmAgIAANgIIIAAgATYCBCABIQFBFSEeDPACC0EJIR4M/wILIAEhASAAKQMgUA2yASABIQEMrQILAkAgASIBIAJHDQBBCyEeDP4CCyAAIAFBAWoiASACEK+AgIAAIh4NsgEgASEBDK0CCwNAAkAgAS0AAEHwnYCAAGotAAAiHkEBRg0AIB5BAkcNtAEgAUEBaiEBDAMLIAFBAWoiASACRw0AC0EMIR4M/AILAkAgASIBIAJHDQBBDSEeDPwCCwJAAkAgAS0AACIeQXNqDhQBtgG2AbYBtgG2AbYBtgG2AbYBtgG2AbYBtgG2AbYBtgG2AbYBALQBCyABQQFqIQEMtAELIAFBAWohAQtBGCEeDOoCCwJAIAEiHiACRw0AQQ4hHgz6AgtCACEfIB4hAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgHi0AAEFQag43yAHHAQABAgMEBQYHvgK+Ar4CvgK+Ar4CvgIICQoLDA2+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CDg8QERITvgILQgIhHwzHAQtCAyEfDMYBC0IEIR8MxQELQgUhHwzEAQtCBiEfDMMBC0IHIR8MwgELQgghHwzBAQtCCSEfDMABC0IKIR8MvwELQgshHwy+AQtCDCEfDL0BC0INIR8MvAELQg4hHwy7AQtCDyEfDLoBC0IKIR8MuQELQgshHwy4AQtCDCEfDLcBC0INIR8MtgELQg4hHwy1AQtCDyEfDLQBC0IAIR8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIB4tAABBUGoON8cBxgEAAQIDBAUGB8gByAHIAcgByAHIAcgBCAkKCwwNyAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAQ4PEBESE8gBC0ICIR8MxgELQgMhHwzFAQtCBCEfDMQBC0IFIR8MwwELQgYhHwzCAQtCByEfDMEBC0IIIR8MwAELQgkhHwy/AQtCCiEfDL4BC0ILIR8MvQELQgwhHwy8AQtCDSEfDLsBC0IOIR8MugELQg8hHwy5AQtCCiEfDLgBC0ILIR8MtwELQgwhHwy2AQtCDSEfDLUBC0IOIR8MtAELQg8hHwyzAQsgAEIAIAApAyAiHyACIAEiHmutIiB9IiEgISAfVhs3AyAgHyAgViIiRQ20AUERIR4M9wILAkAgASIBIAJGDQAgAEGJgICAADYCCCAAIAE2AgQgASEBQRshHgznAgtBEiEeDPYCCyAAIAEiHiACELKAgIAAQX9qDgWmAQCiAgGzAbQBC0ESIR4M5AILIABBAToALyAeIQEM8gILIAEiASACRw20AUEWIR4M8gILIAEiHCACRw0ZQTkhHgzxAgsCQCABIgEgAkcNAEEaIR4M8QILIABBADYCBCAAQYqAgIAANgIIIAAgASABEKqAgIAAIh4NtgEgASEBDLkBCwJAIAEiHiACRw0AQRshHgzwAgsCQCAeLQAAIgFBIEcNACAeQQFqIQEMGgsgAUEJRw22ASAeQQFqIQEMGQsCQCABIgEgAkYNACABQQFqIQEMFAtBHCEeDO4CCwJAIAEiHiACRw0AQR0hHgzuAgsCQCAeLQAAIgFBCUcNACAeIQEM0gILIAFBIEcNtQEgHiEBDNECCwJAIAEiASACRw0AQR4hHgztAgsgAS0AAEEKRw24ASABQQFqIQEMoAILIAEiASACRw24AUEiIR4M6wILA0ACQCABLQAAIh5BIEYNAAJAIB5BdmoOBAC+Ab4BALwBCyABIQEMxAELIAFBAWoiASACRw0AC0EkIR4M6gILQSUhHiABIiMgAkYN6QIgAiAjayAAKAIAIiRqISUgIyEmICQhAQJAA0AgJi0AACIiQSByICIgIkG/f2pB/wFxQRpJG0H/AXEgAUHwn4CAAGotAABHDQEgAUEDRg3WAiABQQFqIQEgJkEBaiImIAJHDQALIAAgJTYCAAzqAgsgAEEANgIAICYhAQy7AQtBJiEeIAEiIyACRg3oAiACICNrIAAoAgAiJGohJSAjISYgJCEBAkADQCAmLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQfSfgIAAai0AAEcNASABQQhGDb0BIAFBAWohASAmQQFqIiYgAkcNAAsgACAlNgIADOkCCyAAQQA2AgAgJiEBDLoBC0EnIR4gASIjIAJGDecCIAIgI2sgACgCACIkaiElICMhJiAkIQECQANAICYtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFB0KaAgABqLQAARw0BIAFBBUYNvQEgAUEBaiEBICZBAWoiJiACRw0ACyAAICU2AgAM6AILIABBADYCACAmIQEMuQELAkAgASIBIAJGDQADQAJAIAEtAABBgKKAgABqLQAAIh5BAUYNACAeQQJGDQogASEBDMEBCyABQQFqIgEgAkcNAAtBIyEeDOcCC0EjIR4M5gILAkAgASIBIAJGDQADQAJAIAEtAAAiHkEgRg0AIB5BdmoOBL0BvgG+Ab0BvgELIAFBAWoiASACRw0AC0ErIR4M5gILQSshHgzlAgsDQAJAIAEtAAAiHkEgRg0AIB5BCUcNAwsgAUEBaiIBIAJHDQALQS8hHgzkAgsDQAJAIAEtAAAiHkEgRg0AAkACQCAeQXZqDgS+AQEBvgEACyAeQSxGDb8BCyABIQEMBAsgAUEBaiIBIAJHDQALQTIhHgzjAgsgASEBDL8BC0EzIR4gASImIAJGDeECIAIgJmsgACgCACIjaiEkICYhIiAjIQECQANAICItAABBIHIgAUGApICAAGotAABHDQEgAUEGRg3QAiABQQFqIQEgIkEBaiIiIAJHDQALIAAgJDYCAAziAgsgAEEANgIAICIhAQtBKyEeDNACCwJAIAEiHSACRw0AQTQhHgzgAgsgAEGKgICAADYCCCAAIB02AgQgHSEBIAAtACxBf2oOBK8BuQG7Ab0BxwILIAFBAWohAQyuAQsCQCABIgEgAkYNAANAAkAgAS0AACIeQSByIB4gHkG/f2pB/wFxQRpJG0H/AXEiHkEJRg0AIB5BIEYNAAJAAkACQAJAIB5BnX9qDhMAAwMDAwMDAwEDAwMDAwMDAwMCAwsgAUEBaiEBQSYhHgzTAgsgAUEBaiEBQSchHgzSAgsgAUEBaiEBQSghHgzRAgsgASEBDLIBCyABQQFqIgEgAkcNAAtBKCEeDN4CC0EoIR4M3QILAkAgASIBIAJGDQADQAJAIAEtAABBgKCAgABqLQAAQQFGDQAgASEBDLcBCyABQQFqIgEgAkcNAAtBMCEeDN0CC0EwIR4M3AILAkADQAJAIAEtAABBd2oOGAACwQLBAscCwQLBAsECwQLBAsECwQLBAsECwQLBAsECwQLBAsECwQLBAsECAMECCyABQQFqIgEgAkcNAAtBNSEeDNwCCyABQQFqIQELQSEhHgzKAgsgASIBIAJHDbkBQTchHgzZAgsDQAJAIAEtAABBkKSAgABqLQAAQQFGDQAgASEBDJACCyABQQFqIgEgAkcNAAtBOCEeDNgCCyAcLQAAIh5BIEYNmgEgHkE6Rw3GAiAAKAIEIQEgAEEANgIEIAAgASAcEKiAgIAAIgENtgEgHEEBaiEBDLgBCyAAIAEgAhCpgICAABoLQQohHgzFAgtBOiEeIAEiJiACRg3UAiACICZrIAAoAgAiI2ohJCAmIRwgIyEBAkADQCAcLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQZCmgIAAai0AAEcNxAIgAUEFRg0BIAFBAWohASAcQQFqIhwgAkcNAAsgACAkNgIADNUCCyAAQQA2AgAgAEEBOgAsICYgI2tBBmohAQy+AgtBOyEeIAEiJiACRg3TAiACICZrIAAoAgAiI2ohJCAmIRwgIyEBAkADQCAcLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQZamgIAAai0AAEcNwwIgAUEJRg0BIAFBAWohASAcQQFqIhwgAkcNAAsgACAkNgIADNQCCyAAQQA2AgAgAEECOgAsICYgI2tBCmohAQy9AgsCQCABIhwgAkcNAEE8IR4M0wILAkACQCAcLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwDDAsMCwwLDAsMCAcMCCyAcQQFqIQFBMiEeDMMCCyAcQQFqIQFBMyEeDMICC0E9IR4gASImIAJGDdECIAIgJmsgACgCACIjaiEkICYhHCAjIQEDQCAcLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQaCmgIAAai0AAEcNwAIgAUEBRg20AiABQQFqIQEgHEEBaiIcIAJHDQALIAAgJDYCAAzRAgtBPiEeIAEiJiACRg3QAiACICZrIAAoAgAiI2ohJCAmIRwgIyEBAkADQCAcLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQaKmgIAAai0AAEcNwAIgAUEORg0BIAFBAWohASAcQQFqIhwgAkcNAAsgACAkNgIADNECCyAAQQA2AgAgAEEBOgAsICYgI2tBD2ohAQy6AgtBPyEeIAEiJiACRg3PAiACICZrIAAoAgAiI2ohJCAmIRwgIyEBAkADQCAcLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQcCmgIAAai0AAEcNvwIgAUEPRg0BIAFBAWohASAcQQFqIhwgAkcNAAsgACAkNgIADNACCyAAQQA2AgAgAEEDOgAsICYgI2tBEGohAQy5AgtBwAAhHiABIiYgAkYNzgIgAiAmayAAKAIAIiNqISQgJiEcICMhAQJAA0AgHC0AACIiQSByICIgIkG/f2pB/wFxQRpJG0H/AXEgAUHQpoCAAGotAABHDb4CIAFBBUYNASABQQFqIQEgHEEBaiIcIAJHDQALIAAgJDYCAAzPAgsgAEEANgIAIABBBDoALCAmICNrQQZqIQEMuAILAkAgASIcIAJHDQBBwQAhHgzOAgsCQAJAAkACQCAcLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGdf2oOEwDAAsACwALAAsACwALAAsACwALAAsACwAIBwALAAsACAgPAAgsgHEEBaiEBQTUhHgzAAgsgHEEBaiEBQTYhHgy/AgsgHEEBaiEBQTchHgy+AgsgHEEBaiEBQTghHgy9AgsCQCABIgEgAkYNACAAQYuAgIAANgIIIAAgATYCBCABIQFBOSEeDL0CC0HCACEeDMwCCyABIgEgAkcNrwFBxAAhHgzLAgtBxQAhHiABIiYgAkYNygIgAiAmayAAKAIAIiNqISQgJiEiICMhAQJAA0AgIi0AACABQdamgIAAai0AAEcNtAEgAUEBRg0BIAFBAWohASAiQQFqIiIgAkcNAAsgACAkNgIADMsCCyAAQQA2AgAgJiAja0ECaiEBDK8BCwJAIAEiASACRw0AQccAIR4MygILIAEtAABBCkcNswEgAUEBaiEBDK8BCwJAIAEiASACRw0AQcgAIR4MyQILAkACQCABLQAAQXZqDgQBtAG0AQC0AQsgAUEBaiEBQT0hHgy5AgsgAUEBaiEBDK4BCwJAIAEiASACRw0AQckAIR4MyAILQQAhHgJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4KuwG6AQABAgMEBQYHvAELQQIhHgy6AQtBAyEeDLkBC0EEIR4MuAELQQUhHgy3AQtBBiEeDLYBC0EHIR4MtQELQQghHgy0AQtBCSEeDLMBCwJAIAEiASACRw0AQcoAIR4MxwILIAEtAABBLkcNtAEgAUEBaiEBDIACCwJAIAEiASACRw0AQcsAIR4MxgILQQAhHgJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4KvQG8AQABAgMEBQYHvgELQQIhHgy8AQtBAyEeDLsBC0EEIR4MugELQQUhHgy5AQtBBiEeDLgBC0EHIR4MtwELQQghHgy2AQtBCSEeDLUBC0HMACEeIAEiJiACRg3EAiACICZrIAAoAgAiI2ohJCAmIQEgIyEiA0AgAS0AACAiQeKmgIAAai0AAEcNuAEgIkEDRg23ASAiQQFqISIgAUEBaiIBIAJHDQALIAAgJDYCAAzEAgtBzQAhHiABIiYgAkYNwwIgAiAmayAAKAIAIiNqISQgJiEBICMhIgNAIAEtAAAgIkHmpoCAAGotAABHDbcBICJBAkYNuQEgIkEBaiEiIAFBAWoiASACRw0ACyAAICQ2AgAMwwILQc4AIR4gASImIAJGDcICIAIgJmsgACgCACIjaiEkICYhASAjISIDQCABLQAAICJB6aaAgABqLQAARw22ASAiQQNGDbkBICJBAWohIiABQQFqIgEgAkcNAAsgACAkNgIADMICCwNAAkAgAS0AACIeQSBGDQACQAJAAkAgHkG4f2oOCwABugG6AboBugG6AboBugG6AQK6AQsgAUEBaiEBQcIAIR4MtQILIAFBAWohAUHDACEeDLQCCyABQQFqIQFBxAAhHgyzAgsgAUEBaiIBIAJHDQALQc8AIR4MwQILAkAgASIBIAJGDQAgACABQQFqIgEgAhClgICAABogASEBQQchHgyxAgtB0AAhHgzAAgsDQAJAIAEtAABB8KaAgABqLQAAIh5BAUYNACAeQX5qDgO5AboBuwG8AQsgAUEBaiIBIAJHDQALQdEAIR4MvwILAkAgASIBIAJGDQAgAUEBaiEBDAMLQdIAIR4MvgILA0ACQCABLQAAQfCogIAAai0AACIeQQFGDQACQCAeQX5qDgS8Ab0BvgEAvwELIAEhAUHGACEeDK8CCyABQQFqIgEgAkcNAAtB0wAhHgy9AgsCQCABIgEgAkcNAEHUACEeDL0CCwJAIAEtAAAiHkF2ag4apAG/Ab8BpgG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG0Ab8BvwEAvQELIAFBAWohAQtBBiEeDKsCCwNAAkAgAS0AAEHwqoCAAGotAABBAUYNACABIQEM+gELIAFBAWoiASACRw0AC0HVACEeDLoCCwJAIAEiASACRg0AIAFBAWohAQwDC0HWACEeDLkCCwJAIAEiASACRw0AQdcAIR4MuQILIAFBAWohAQwBCwJAIAEiASACRw0AQdgAIR4MuAILIAFBAWohAQtBBCEeDKYCCwJAIAEiIiACRw0AQdkAIR4MtgILICIhAQJAAkACQCAiLQAAQfCsgIAAai0AAEF/ag4HvgG/AcABAPgBAQLBAQsgIkEBaiEBDAoLICJBAWohAQy3AQtBACEeIABBADYCHCAAQfGOgIAANgIQIABBBzYCDCAAICJBAWo2AhQMtQILAkADQAJAIAEtAABB8KyAgABqLQAAIh5BBEYNAAJAAkAgHkF/ag4HvAG9Ab4BwwEABAHDAQsgASEBQckAIR4MqAILIAFBAWohAUHLACEeDKcCCyABQQFqIgEgAkcNAAtB2gAhHgy1AgsgAUEBaiEBDLUBCwJAIAEiIiACRw0AQdsAIR4MtAILICItAABBL0cNvgEgIkEBaiEBDAYLAkAgASIiIAJHDQBB3AAhHgyzAgsCQCAiLQAAIgFBL0cNACAiQQFqIQFBzAAhHgyjAgsgAUF2aiIBQRZLDb0BQQEgAXRBiYCAAnFFDb0BDJMCCwJAIAEiASACRg0AIAFBAWohAUHNACEeDKICC0HdACEeDLECCwJAIAEiIiACRw0AQd8AIR4MsQILICIhAQJAICItAABB8LCAgABqLQAAQX9qDgOSAvABAL4BC0HQACEeDKACCwJAIAEiIiACRg0AA0ACQCAiLQAAQfCugIAAai0AACIBQQNGDQACQCABQX9qDgKUAgC/AQsgIiEBQc4AIR4MogILICJBAWoiIiACRw0AC0HeACEeDLACC0HeACEeDK8CCwJAIAEiASACRg0AIABBjICAgAA2AgggACABNgIEIAEhAUHPACEeDJ8CC0HgACEeDK4CCwJAIAEiASACRw0AQeEAIR4MrgILIABBjICAgAA2AgggACABNgIEIAEhAQtBAyEeDJwCCwNAIAEtAABBIEcNjAIgAUEBaiIBIAJHDQALQeIAIR4MqwILAkAgASIBIAJHDQBB4wAhHgyrAgsgAS0AAEEgRw24ASABQQFqIQEM1AELAkAgASIIIAJHDQBB5AAhHgyqAgsgCC0AAEHMAEcNuwEgCEEBaiEBQRMhHgy5AQtB5QAhHiABIiIgAkYNqAIgAiAiayAAKAIAIiZqISMgIiEIICYhAQNAIAgtAAAgAUHwsoCAAGotAABHDboBIAFBBUYNuAEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMqAILAkAgASIIIAJHDQBB5gAhHgyoAgsCQAJAIAgtAABBvX9qDgwAuwG7AbsBuwG7AbsBuwG7AbsBuwEBuwELIAhBAWohAUHUACEeDJgCCyAIQQFqIQFB1QAhHgyXAgtB5wAhHiABIiIgAkYNpgIgAiAiayAAKAIAIiZqISMgIiEIICYhAQJAA0AgCC0AACABQe2zgIAAai0AAEcNuQEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADKcCCyAAQQA2AgAgIiAma0EDaiEBQRAhHgy2AQtB6AAhHiABIiIgAkYNpQIgAiAiayAAKAIAIiZqISMgIiEIICYhAQJAA0AgCC0AACABQfaygIAAai0AAEcNuAEgAUEFRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADKYCCyAAQQA2AgAgIiAma0EGaiEBQRYhHgy1AQtB6QAhHiABIiIgAkYNpAIgAiAiayAAKAIAIiZqISMgIiEIICYhAQJAA0AgCC0AACABQfyygIAAai0AAEcNtwEgAUEDRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADKUCCyAAQQA2AgAgIiAma0EEaiEBQQUhHgy0AQsCQCABIgggAkcNAEHqACEeDKQCCyAILQAAQdkARw21ASAIQQFqIQFBCCEeDLMBCwJAIAEiCCACRw0AQesAIR4MowILAkACQCAILQAAQbJ/ag4DALYBAbYBCyAIQQFqIQFB2QAhHgyTAgsgCEEBaiEBQdoAIR4MkgILAkAgASIIIAJHDQBB7AAhHgyiAgsCQAJAIAgtAABBuH9qDggAtQG1AbUBtQG1AbUBAbUBCyAIQQFqIQFB2AAhHgySAgsgCEEBaiEBQdsAIR4MkQILQe0AIR4gASIiIAJGDaACIAIgImsgACgCACImaiEjICIhCCAmIQECQANAIAgtAAAgAUGAs4CAAGotAABHDbMBIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIzYCAAyhAgtBACEeIABBADYCACAiICZrQQNqIQEMsAELQe4AIR4gASIiIAJGDZ8CIAIgImsgACgCACImaiEjICIhCCAmIQECQANAIAgtAAAgAUGDs4CAAGotAABHDbIBIAFBBEYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIzYCAAygAgsgAEEANgIAICIgJmtBBWohAUEjIR4MrwELAkAgASIIIAJHDQBB7wAhHgyfAgsCQAJAIAgtAABBtH9qDggAsgGyAbIBsgGyAbIBAbIBCyAIQQFqIQFB3QAhHgyPAgsgCEEBaiEBQd4AIR4MjgILAkAgASIIIAJHDQBB8AAhHgyeAgsgCC0AAEHFAEcNrwEgCEEBaiEBDN4BC0HxACEeIAEiIiACRg2cAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFBiLOAgABqLQAARw2vASABQQNGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMnQILIABBADYCACAiICZrQQRqIQFBLSEeDKwBC0HyACEeIAEiIiACRg2bAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFB0LOAgABqLQAARw2uASABQQhGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMnAILIABBADYCACAiICZrQQlqIQFBKSEeDKsBCwJAIAEiASACRw0AQfMAIR4MmwILQQEhHiABLQAAQd8ARw2qASABQQFqIQEM3AELQfQAIR4gASIiIAJGDZkCIAIgImsgACgCACImaiEjICIhCCAmIQEDQCAILQAAIAFBjLOAgABqLQAARw2rASABQQFGDfcBIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADJkCCwJAIAEiHiACRw0AQfUAIR4MmQILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGOs4CAAGotAABHDasBIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH1ACEeDJkCCyAAQQA2AgAgHiAia0EDaiEBQQIhHgyoAQsCQCABIh4gAkcNAEH2ACEeDJgCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFB8LOAgABqLQAARw2qASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB9gAhHgyYAgsgAEEANgIAIB4gImtBAmohAUEfIR4MpwELAkAgASIeIAJHDQBB9wAhHgyXAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQfKzgIAAai0AAEcNqQEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQfcAIR4MlwILIABBADYCACAeICJrQQJqIQFBCSEeDKYBCwJAIAEiCCACRw0AQfgAIR4MlgILAkACQCAILQAAQbd/ag4HAKkBqQGpAakBqQEBqQELIAhBAWohAUHmACEeDIYCCyAIQQFqIQFB5wAhHgyFAgsCQCABIh4gAkcNAEH5ACEeDJUCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBkbOAgABqLQAARw2nASABQQVGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB+QAhHgyVAgsgAEEANgIAIB4gImtBBmohAUEYIR4MpAELAkAgASIeIAJHDQBB+gAhHgyUAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQZezgIAAai0AAEcNpgEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQfoAIR4MlAILIABBADYCACAeICJrQQNqIQFBFyEeDKMBCwJAIAEiHiACRw0AQfsAIR4MkwILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGas4CAAGotAABHDaUBIAFBBkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH7ACEeDJMCCyAAQQA2AgAgHiAia0EHaiEBQRUhHgyiAQsCQCABIh4gAkcNAEH8ACEeDJICCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBobOAgABqLQAARw2kASABQQVGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB/AAhHgySAgsgAEEANgIAIB4gImtBBmohAUEeIR4MoQELAkAgASIIIAJHDQBB/QAhHgyRAgsgCC0AAEHMAEcNogEgCEEBaiEBQQohHgygAQsCQCABIgggAkcNAEH+ACEeDJACCwJAAkAgCC0AAEG/f2oODwCjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAQGjAQsgCEEBaiEBQewAIR4MgAILIAhBAWohAUHtACEeDP8BCwJAIAEiCCACRw0AQf8AIR4MjwILAkACQCAILQAAQb9/ag4DAKIBAaIBCyAIQQFqIQFB6wAhHgz/AQsgCEEBaiEBQe4AIR4M/gELAkAgASIeIAJHDQBBgAEhHgyOAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQaezgIAAai0AAEcNoAEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYABIR4MjgILIABBADYCACAeICJrQQJqIQFBCyEeDJ0BCwJAIAEiCCACRw0AQYEBIR4MjQILAkACQAJAAkAgCC0AAEFTag4jAKIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogEBogGiAaIBogGiAQKiAaIBogEDogELIAhBAWohAUHpACEeDP8BCyAIQQFqIQFB6gAhHgz+AQsgCEEBaiEBQe8AIR4M/QELIAhBAWohAUHwACEeDPwBCwJAIAEiHiACRw0AQYIBIR4MjAILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGps4CAAGotAABHDZ4BIAFBBEYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEGCASEeDIwCCyAAQQA2AgAgHiAia0EFaiEBQRkhHgybAQsCQCABIiIgAkcNAEGDASEeDIsCCyACICJrIAAoAgAiJmohHiAiIQggJiEBAkADQCAILQAAIAFBrrOAgABqLQAARw2dASABQQVGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAIB42AgBBgwEhHgyLAgsgAEEANgIAQQYhHiAiICZrQQZqIQEMmgELAkAgASIeIAJHDQBBhAEhHgyKAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQbSzgIAAai0AAEcNnAEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYQBIR4MigILIABBADYCACAeICJrQQJqIQFBHCEeDJkBCwJAIAEiHiACRw0AQYUBIR4MiQILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUG2s4CAAGotAABHDZsBIAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEGFASEeDIkCCyAAQQA2AgAgHiAia0ECaiEBQSchHgyYAQsCQCABIgggAkcNAEGGASEeDIgCCwJAAkAgCC0AAEGsf2oOAgABmwELIAhBAWohAUH0ACEeDPgBCyAIQQFqIQFB9QAhHgz3AQsCQCABIh4gAkcNAEGHASEeDIcCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBuLOAgABqLQAARw2ZASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBBhwEhHgyHAgsgAEEANgIAIB4gImtBAmohAUEmIR4MlgELAkAgASIeIAJHDQBBiAEhHgyGAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQbqzgIAAai0AAEcNmAEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYgBIR4MhgILIABBADYCACAeICJrQQJqIQFBAyEeDJUBCwJAIAEiHiACRw0AQYkBIR4MhQILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUHts4CAAGotAABHDZcBIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEGJASEeDIUCCyAAQQA2AgAgHiAia0EDaiEBQQwhHgyUAQsCQCABIh4gAkcNAEGKASEeDIQCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBvLOAgABqLQAARw2WASABQQNGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBBigEhHgyEAgsgAEEANgIAIB4gImtBBGohAUENIR4MkwELAkAgASIIIAJHDQBBiwEhHgyDAgsCQAJAIAgtAABBun9qDgsAlgGWAZYBlgGWAZYBlgGWAZYBAZYBCyAIQQFqIQFB+QAhHgzzAQsgCEEBaiEBQfoAIR4M8gELAkAgASIIIAJHDQBBjAEhHgyCAgsgCC0AAEHQAEcNkwEgCEEBaiEBDMQBCwJAIAEiCCACRw0AQY0BIR4MgQILAkACQCAILQAAQbd/ag4HAZQBlAGUAZQBlAEAlAELIAhBAWohAUH8ACEeDPEBCyAIQQFqIQFBIiEeDJABCwJAIAEiHiACRw0AQY4BIR4MgAILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUHAs4CAAGotAABHDZIBIAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEGOASEeDIACCyAAQQA2AgAgHiAia0ECaiEBQR0hHgyPAQsCQCABIgggAkcNAEGPASEeDP8BCwJAAkAgCC0AAEGuf2oOAwCSAQGSAQsgCEEBaiEBQf4AIR4M7wELIAhBAWohAUEEIR4MjgELAkAgASIIIAJHDQBBkAEhHgz+AQsCQAJAAkACQAJAIAgtAABBv39qDhUAlAGUAZQBlAGUAZQBlAGUAZQBlAEBlAGUAQKUAZQBA5QBlAEElAELIAhBAWohAUH2ACEeDPEBCyAIQQFqIQFB9wAhHgzwAQsgCEEBaiEBQfgAIR4M7wELIAhBAWohAUH9ACEeDO4BCyAIQQFqIQFB/wAhHgztAQsCQCAEIAJHDQBBkQEhHgz9AQsgAiAEayAAKAIAIh5qISIgBCEIIB4hAQJAA0AgCC0AACABQe2zgIAAai0AAEcNjwEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQZEBIR4M/QELIABBADYCACAEIB5rQQNqIQFBESEeDIwBCwJAIAUgAkcNAEGSASEeDPwBCyACIAVrIAAoAgAiHmohIiAFIQggHiEBAkADQCAILQAAIAFBwrOAgABqLQAARw2OASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBkgEhHgz8AQsgAEEANgIAIAUgHmtBA2ohAUEsIR4MiwELAkAgBiACRw0AQZMBIR4M+wELIAIgBmsgACgCACIeaiEiIAYhCCAeIQECQANAIAgtAAAgAUHFs4CAAGotAABHDY0BIAFBBEYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGTASEeDPsBCyAAQQA2AgAgBiAea0EFaiEBQSshHgyKAQsCQCAHIAJHDQBBlAEhHgz6AQsgAiAHayAAKAIAIh5qISIgByEIIB4hAQJAA0AgCC0AACABQcqzgIAAai0AAEcNjAEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQZQBIR4M+gELIABBADYCACAHIB5rQQNqIQFBFCEeDIkBCwJAIAggAkcNAEGVASEeDPkBCwJAAkACQAJAIAgtAABBvn9qDg8AAQKOAY4BjgGOAY4BjgGOAY4BjgGOAY4BA44BCyAIQQFqIQRBgQEhHgzrAQsgCEEBaiEFQYIBIR4M6gELIAhBAWohBkGDASEeDOkBCyAIQQFqIQdBhAEhHgzoAQsCQCAIIAJHDQBBlgEhHgz4AQsgCC0AAEHFAEcNiQEgCEEBaiEIDLsBCwJAIAkgAkcNAEGXASEeDPcBCyACIAlrIAAoAgAiHmohIiAJIQggHiEBAkADQCAILQAAIAFBzbOAgABqLQAARw2JASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBlwEhHgz3AQsgAEEANgIAIAkgHmtBA2ohAUEOIR4MhgELAkAgCCACRw0AQZgBIR4M9gELIAgtAABB0ABHDYcBIAhBAWohAUElIR4MhQELAkAgCiACRw0AQZkBIR4M9QELIAIgCmsgACgCACIeaiEiIAohCCAeIQECQANAIAgtAAAgAUHQs4CAAGotAABHDYcBIAFBCEYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGZASEeDPUBCyAAQQA2AgAgCiAea0EJaiEBQSohHgyEAQsCQCAIIAJHDQBBmgEhHgz0AQsCQAJAIAgtAABBq39qDgsAhwGHAYcBhwGHAYcBhwGHAYcBAYcBCyAIQQFqIQhBiAEhHgzkAQsgCEEBaiEKQYkBIR4M4wELAkAgCCACRw0AQZsBIR4M8wELAkACQCAILQAAQb9/ag4UAIYBhgGGAYYBhgGGAYYBhgGGAYYBhgGGAYYBhgGGAYYBhgGGAQGGAQsgCEEBaiEJQYcBIR4M4wELIAhBAWohCEGKASEeDOIBCwJAIAsgAkcNAEGcASEeDPIBCyACIAtrIAAoAgAiHmohIiALIQggHiEBAkADQCAILQAAIAFB2bOAgABqLQAARw2EASABQQNGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBnAEhHgzyAQsgAEEANgIAIAsgHmtBBGohAUEhIR4MgQELAkAgDCACRw0AQZ0BIR4M8QELIAIgDGsgACgCACIeaiEiIAwhCCAeIQECQANAIAgtAAAgAUHds4CAAGotAABHDYMBIAFBBkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGdASEeDPEBCyAAQQA2AgAgDCAea0EHaiEBQRohHgyAAQsCQCAIIAJHDQBBngEhHgzwAQsCQAJAAkAgCC0AAEG7f2oOEQCEAYQBhAGEAYQBhAGEAYQBhAEBhAGEAYQBhAGEAQKEAQsgCEEBaiEIQYsBIR4M4QELIAhBAWohC0GMASEeDOABCyAIQQFqIQxBjQEhHgzfAQsCQCANIAJHDQBBnwEhHgzvAQsgAiANayAAKAIAIh5qISIgDSEIIB4hAQJAA0AgCC0AACABQeSzgIAAai0AAEcNgQEgAUEFRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQZ8BIR4M7wELIABBADYCACANIB5rQQZqIQFBKCEeDH4LAkAgDiACRw0AQaABIR4M7gELIAIgDmsgACgCACIeaiEiIA4hCCAeIQECQANAIAgtAAAgAUHqs4CAAGotAABHDYABIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGgASEeDO4BCyAAQQA2AgAgDiAea0EDaiEBQQchHgx9CwJAIAggAkcNAEGhASEeDO0BCwJAAkAgCC0AAEG7f2oODgCAAYABgAGAAYABgAGAAYABgAGAAYABgAEBgAELIAhBAWohDUGPASEeDN0BCyAIQQFqIQ5BkAEhHgzcAQsCQCAPIAJHDQBBogEhHgzsAQsgAiAPayAAKAIAIh5qISIgDyEIIB4hAQJAA0AgCC0AACABQe2zgIAAai0AAEcNfiABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBogEhHgzsAQsgAEEANgIAIA8gHmtBA2ohAUESIR4MewsCQCAQIAJHDQBBowEhHgzrAQsgAiAQayAAKAIAIh5qISIgECEIIB4hAQJAA0AgCC0AACABQfCzgIAAai0AAEcNfSABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBowEhHgzrAQsgAEEANgIAIBAgHmtBAmohAUEgIR4MegsCQCARIAJHDQBBpAEhHgzqAQsgAiARayAAKAIAIh5qISIgESEIIB4hAQJAA0AgCC0AACABQfKzgIAAai0AAEcNfCABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBpAEhHgzqAQsgAEEANgIAIBEgHmtBAmohAUEPIR4MeQsCQCAIIAJHDQBBpQEhHgzpAQsCQAJAIAgtAABBt39qDgcAfHx8fHwBfAsgCEEBaiEQQZMBIR4M2QELIAhBAWohEUGUASEeDNgBCwJAIBIgAkcNAEGmASEeDOgBCyACIBJrIAAoAgAiHmohIiASIQggHiEBAkADQCAILQAAIAFB9LOAgABqLQAARw16IAFBB0YNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGmASEeDOgBCyAAQQA2AgAgEiAea0EIaiEBQRshHgx3CwJAIAggAkcNAEGnASEeDOcBCwJAAkACQCAILQAAQb5/ag4SAHt7e3t7e3t7ewF7e3t7e3sCewsgCEEBaiEPQZIBIR4M2AELIAhBAWohCEGVASEeDNcBCyAIQQFqIRJBlgEhHgzWAQsCQCAIIAJHDQBBqAEhHgzmAQsgCC0AAEHOAEcNdyAIQQFqIQgMqgELAkAgCCACRw0AQakBIR4M5QELAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCC0AAEG/f2oOFQABAgOGAQQFBoYBhgGGAQcICQoLhgEMDQ4PhgELIAhBAWohAUHWACEeDOMBCyAIQQFqIQFB1wAhHgziAQsgCEEBaiEBQdwAIR4M4QELIAhBAWohAUHgACEeDOABCyAIQQFqIQFB4QAhHgzfAQsgCEEBaiEBQeQAIR4M3gELIAhBAWohAUHlACEeDN0BCyAIQQFqIQFB6AAhHgzcAQsgCEEBaiEBQfEAIR4M2wELIAhBAWohAUHyACEeDNoBCyAIQQFqIQFB8wAhHgzZAQsgCEEBaiEBQYABIR4M2AELIAhBAWohCEGGASEeDNcBCyAIQQFqIQhBjgEhHgzWAQsgCEEBaiEIQZEBIR4M1QELIAhBAWohCEGYASEeDNQBCwJAIBQgAkcNAEGrASEeDOQBCyAUQQFqIRMMdwsDQAJAIB4tAABBdmoOBHcAAHoACyAeQQFqIh4gAkcNAAtBrAEhHgziAQsCQCAVIAJGDQAgAEGNgICAADYCCCAAIBU2AgQgFSEBQQEhHgzSAQtBrQEhHgzhAQsCQCAVIAJHDQBBrgEhHgzhAQsCQAJAIBUtAABBdmoOBAGrAasBAKsBCyAVQQFqIRQMeAsgFUEBaiETDHQLIAAgEyACEKeAgIAAGiATIQEMRQsCQCAVIAJHDQBBrwEhHgzfAQsCQAJAIBUtAABBdmoOFwF5eQF5eXl5eXl5eXl5eXl5eXl5eXkAeQsgFUEBaiEVC0GcASEeDM4BCwJAIBYgAkcNAEGxASEeDN4BCyAWLQAAQSBHDXcgAEEAOwEyIBZBAWohAUGgASEeDM0BCyABISYCQANAICYiFSACRg0BIBUtAABBUGpB/wFxIh5BCk8NqAECQCAALwEyIiJBmTNLDQAgACAiQQpsIiI7ATIgHkH//wNzICJB/v8DcUkNACAVQQFqISYgACAiIB5qIh47ATIgHkH//wNxQegHSQ0BCwtBACEeIABBADYCHCAAQZ2JgIAANgIQIABBDTYCDCAAIBVBAWo2AhQM3QELQbABIR4M3AELAkAgFyACRw0AQbIBIR4M3AELQQAhHgJAAkACQAJAAkACQAJAAkAgFy0AAEFQag4Kf34AAQIDBAUGB4ABC0ECIR4MfgtBAyEeDH0LQQQhHgx8C0EFIR4MewtBBiEeDHoLQQchHgx5C0EIIR4MeAtBCSEeDHcLAkAgGCACRw0AQbMBIR4M2wELIBgtAABBLkcNeCAYQQFqIRcMpgELAkAgGSACRw0AQbQBIR4M2gELQQAhHgJAAkACQAJAAkACQAJAAkAgGS0AAEFQag4KgQGAAQABAgMEBQYHggELQQIhHgyAAQtBAyEeDH8LQQQhHgx+C0EFIR4MfQtBBiEeDHwLQQchHgx7C0EIIR4MegtBCSEeDHkLAkAgCCACRw0AQbUBIR4M2QELIAIgCGsgACgCACIiaiEmIAghGSAiIR4DQCAZLQAAIB5B/LOAgABqLQAARw17IB5BBEYNtAEgHkEBaiEeIBlBAWoiGSACRw0ACyAAICY2AgBBtQEhHgzYAQsCQCAaIAJHDQBBtgEhHgzYAQsgAiAaayAAKAIAIh5qISIgGiEIIB4hAQNAIAgtAAAgAUGBtICAAGotAABHDXsgAUEBRg22ASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEG2ASEeDNcBCwJAIBsgAkcNAEG3ASEeDNcBCyACIBtrIAAoAgAiGWohIiAbIQggGSEeA0AgCC0AACAeQYO0gIAAai0AAEcNeiAeQQJGDXwgHkEBaiEeIAhBAWoiCCACRw0ACyAAICI2AgBBtwEhHgzWAQsCQCAIIAJHDQBBuAEhHgzWAQsCQAJAIAgtAABBu39qDhAAe3t7e3t7e3t7e3t7e3sBewsgCEEBaiEaQaUBIR4MxgELIAhBAWohG0GmASEeDMUBCwJAIAggAkcNAEG5ASEeDNUBCyAILQAAQcgARw14IAhBAWohCAyiAQsCQCAIIAJHDQBBugEhHgzUAQsgCC0AAEHIAEYNogEgAEEBOgAoDJkBCwNAAkAgCC0AAEF2ag4EAHp6AHoLIAhBAWoiCCACRw0AC0G8ASEeDNIBCyAAQQA6AC8gAC0ALUEEcUUNyAELIABBADoALyABIQEMeQsgHkEVRg2pASAAQQA2AhwgACABNgIUIABBq4yAgAA2AhAgAEESNgIMQQAhHgzPAQsCQCAAIB4gAhCtgICAACIBDQAgHiEBDMUBCwJAIAFBFUcNACAAQQM2AhwgACAeNgIUIABB1pKAgAA2AhAgAEEVNgIMQQAhHgzPAQsgAEEANgIcIAAgHjYCFCAAQauMgIAANgIQIABBEjYCDEEAIR4MzgELIB5BFUYNpQEgAEEANgIcIAAgATYCFCAAQYiMgIAANgIQIABBFDYCDEEAIR4MzQELIAAoAgQhJiAAQQA2AgQgHiAfp2oiIyEBIAAgJiAeICMgIhsiHhCugICAACIiRQ16IABBBzYCHCAAIB42AhQgACAiNgIMQQAhHgzMAQsgACAALwEwQYABcjsBMCABIQEMMQsgHkEVRg2hASAAQQA2AhwgACABNgIUIABBxYuAgAA2AhAgAEETNgIMQQAhHgzKAQsgAEEANgIcIAAgATYCFCAAQYuLgIAANgIQIABBAjYCDEEAIR4MyQELIB5BO0cNASABQQFqIQELQQghHgy3AQtBACEeIABBADYCHCAAIAE2AhQgAEGjkICAADYCECAAQQw2AgwMxgELQgEhHwsgHkEBaiEBAkAgACkDICIgQv//////////D1YNACAAICBCBIYgH4Q3AyAgASEBDHcLIABBADYCHCAAIAE2AhQgAEGJiYCAADYCECAAQQw2AgxBACEeDMQBCyAAQQA2AhwgACAeNgIUIABBo5CAgAA2AhAgAEEMNgIMQQAhHgzDAQsgACgCBCEmIABBADYCBCAeIB+naiIjIQEgACAmIB4gIyAiGyIeEK6AgIAAIiJFDW4gAEEFNgIcIAAgHjYCFCAAICI2AgxBACEeDMIBCyAAQQA2AhwgACAeNgIUIABB3ZSAgAA2AhAgAEEPNgIMQQAhHgzBAQsgACAeIAIQrYCAgAAiAQ0BIB4hAQtBDyEeDK8BCwJAIAFBFUcNACAAQQI2AhwgACAeNgIUIABB1pKAgAA2AhAgAEEVNgIMQQAhHgy/AQsgAEEANgIcIAAgHjYCFCAAQauMgIAANgIQIABBEjYCDEEAIR4MvgELIAFBAWohHgJAIAAvATAiAUGAAXFFDQACQCAAIB4gAhCwgICAACIBDQAgHiEBDGsLIAFBFUcNlwEgAEEFNgIcIAAgHjYCFCAAQb6SgIAANgIQIABBFTYCDEEAIR4MvgELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIB42AhQgAEHsj4CAADYCECAAQQQ2AgxBACEeDL4BCyAAIB4gAhCxgICAABogHiEBAkACQAJAAkACQCAAIB4gAhCsgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAeIQELQR0hHgyvAQsgAEEVNgIcIAAgHjYCFCAAQeGRgIAANgIQIABBFTYCDEEAIR4MvgELIABBADYCHCAAIB42AhQgAEGxi4CAADYCECAAQRE2AgxBACEeDL0BCyAALQAtQQFxRQ0BQaoBIR4MrAELAkAgHCACRg0AA0ACQCAcLQAAQSBGDQAgHCEBDKgBCyAcQQFqIhwgAkcNAAtBFyEeDLwBC0EXIR4MuwELIAAoAgQhASAAQQA2AgQgACABIBwQqICAgAAiAUUNkAEgAEEYNgIcIAAgATYCDCAAIBxBAWo2AhRBACEeDLoBCyAAQRk2AhwgACABNgIUIAAgHjYCDEEAIR4MuQELIB4hAUEBISICQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhIgwBC0EEISILIABBAToALCAAIAAvATAgInI7ATALIB4hAQtBICEeDKkBCyAAQQA2AhwgACAeNgIUIABBgY+AgAA2AhAgAEELNgIMQQAhHgy4AQsgHiEBQQEhIgJAAkACQAJAAkAgAC0ALEF7ag4EAgABAwULQQIhIgwBC0EEISILIABBAToALCAAIAAvATAgInI7ATAMAQsgACAALwEwQQhyOwEwCyAeIQELQasBIR4MpgELIAAgASACEKuAgIAAGgwbCwJAIAEiHiACRg0AIB4hAQJAAkAgHi0AAEF2ag4EAWpqAGoLIB5BAWohAQtBHiEeDKUBC0HDACEeDLQBCyAAQQA2AhwgACABNgIUIABBkZGAgAA2AhAgAEEDNgIMQQAhHgyzAQsCQCABLQAAQQ1HDQAgACgCBCEeIABBADYCBAJAIAAgHiABEKqAgIAAIh4NACABQQFqIQEMaQsgAEEeNgIcIAAgHjYCDCAAIAFBAWo2AhRBACEeDLMBCyABIQEgAC0ALUEBcUUNrgFBrQEhHgyiAQsCQCABIgEgAkcNAEEfIR4MsgELAkACQANAAkAgAS0AAEF2ag4EAgAAAwALIAFBAWoiASACRw0AC0EfIR4MswELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCqgICAACIeDQAgASEBDGgLIABBHjYCHCAAIAE2AhQgACAeNgIMQQAhHgyyAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKqAgIAAIh4NACABQQFqIQEMZwsgAEEeNgIcIAAgHjYCDCAAIAFBAWo2AhRBACEeDLEBCyAeQSxHDQEgAUEBaiEeQQEhAQJAAkACQAJAAkAgAC0ALEF7ag4EAwECBAALIB4hAQwEC0ECIQEMAQtBBCEBCyAAQQE6ACwgACAALwEwIAFyOwEwIB4hAQwBCyAAIAAvATBBCHI7ATAgHiEBC0EuIR4MnwELIABBADoALCABIQELQSkhHgydAQsgAEEANgIAICMgJGtBCWohAUEFIR4MmAELIABBADYCACAjICRrQQZqIQFBByEeDJcBCyAAIAAvATBBIHI7ATAgASEBDAILIAAoAgQhCCAAQQA2AgQCQCAAIAggARCqgICAACIIDQAgASEBDJ0BCyAAQSo2AhwgACABNgIUIAAgCDYCDEEAIR4MqQELIABBCDoALCABIQELQSUhHgyXAQsCQCAALQAoQQFGDQAgASEBDAQLIAAtAC1BCHFFDXggASEBDAMLIAAtADBBIHENeUGuASEeDJUBCwJAIB0gAkYNAAJAA0ACQCAdLQAAQVBqIgFB/wFxQQpJDQAgHSEBQSohHgyYAQsgACkDICIfQpmz5syZs+bMGVYNASAAIB9CCn4iHzcDICAfIAGtIiBCf4VCgH6EVg0BIAAgHyAgQv8Bg3w3AyAgHUEBaiIdIAJHDQALQSwhHgymAQsgACgCBCEIIABBADYCBCAAIAggHUEBaiIBEKqAgIAAIggNeiABIQEMmQELQSwhHgykAQsCQCAALwEwIgFBCHFFDQAgAC0AKEEBRw0AIAAtAC1BCHFFDXULIAAgAUH3+wNxQYAEcjsBMCAdIQELQSwhHgySAQsgACAALwEwQRByOwEwDIcBCyAAQTY2AhwgACABNgIMIAAgHEEBajYCFEEAIR4MoAELIAEtAABBOkcNAiAAKAIEIR4gAEEANgIEIAAgHiABEKiAgIAAIh4NASABQQFqIQELQTEhHgyOAQsgAEE2NgIcIAAgHjYCDCAAIAFBAWo2AhRBACEeDJ0BCyAAQQA2AhwgACABNgIUIABBh46AgAA2AhAgAEEKNgIMQQAhHgycAQsgAUEBaiEBCyAAQYASOwEqIAAgASACEKWAgIAAGiABIQELQawBIR4MiQELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDFALIABBxAA2AhwgACABNgIUIAAgHjYCDEEAIR4MmAELIABBADYCHCAAICI2AhQgAEHlmICAADYCECAAQQc2AgwgAEEANgIAQQAhHgyXAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMTwsgAEHFADYCHCAAIAE2AhQgACAeNgIMQQAhHgyWAQtBACEeIABBADYCHCAAIAE2AhQgAEHrjYCAADYCECAAQQk2AgwMlQELQQEhHgsgACAeOgArIAFBAWohASAALQApQSJGDYsBDEwLIABBADYCHCAAIAE2AhQgAEGijYCAADYCECAAQQk2AgxBACEeDJIBCyAAQQA2AhwgACABNgIUIABBxYqAgAA2AhAgAEEJNgIMQQAhHgyRAQtBASEeCyAAIB46ACogAUEBaiEBDEoLIABBADYCHCAAIAE2AhQgAEG4jYCAADYCECAAQQk2AgxBACEeDI4BCyAAQQA2AgAgJiAja0EEaiEBAkAgAC0AKUEjTw0AIAEhAQxKCyAAQQA2AhwgACABNgIUIABBr4mAgAA2AhAgAEEINgIMQQAhHgyNAQsgAEEANgIAC0EAIR4gAEEANgIcIAAgATYCFCAAQbmbgIAANgIQIABBCDYCDAyLAQsgAEEANgIAICYgI2tBA2ohAQJAIAAtAClBIUcNACABIQEMRwsgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDEEAIR4MigELIABBADYCACAmICNrQQRqIQECQCAALQApIh5BXWpBC08NACABIQEMRgsCQCAeQQZLDQBBASAedEHKAHFFDQAgASEBDEYLQQAhHiAAQQA2AhwgACABNgIUIABB04mAgAA2AhAgAEEINgIMDIkBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQxGCyAAQdAANgIcIAAgATYCFCAAIB42AgxBACEeDIgBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw/CyAAQcQANgIcIAAgATYCFCAAIB42AgxBACEeDIcBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw/CyAAQcUANgIcIAAgATYCFCAAIB42AgxBACEeDIYBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQxDCyAAQdAANgIcIAAgATYCFCAAIB42AgxBACEeDIUBCyAAQQA2AhwgACABNgIUIABBooqAgAA2AhAgAEEHNgIMQQAhHgyEAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMOwsgAEHEADYCHCAAIAE2AhQgACAeNgIMQQAhHgyDAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMOwsgAEHFADYCHCAAIAE2AhQgACAeNgIMQQAhHgyCAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMPwsgAEHQADYCHCAAIAE2AhQgACAeNgIMQQAhHgyBAQsgAEEANgIcIAAgATYCFCAAQbiIgIAANgIQIABBBzYCDEEAIR4MgAELIB5BP0cNASABQQFqIQELQQUhHgxuC0EAIR4gAEEANgIcIAAgATYCFCAAQdOPgIAANgIQIABBBzYCDAx9CyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw0CyAAQcQANgIcIAAgATYCFCAAIB42AgxBACEeDHwLIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDDQLIABBxQA2AhwgACABNgIUIAAgHjYCDEEAIR4MewsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMOAsgAEHQADYCHCAAIAE2AhQgACAeNgIMQQAhHgx6CyAAKAIEIQEgAEEANgIEAkAgACABICIQpICAgAAiAQ0AICIhAQwxCyAAQcQANgIcIAAgIjYCFCAAIAE2AgxBACEeDHkLIAAoAgQhASAAQQA2AgQCQCAAIAEgIhCkgICAACIBDQAgIiEBDDELIABBxQA2AhwgACAiNgIUIAAgATYCDEEAIR4MeAsgACgCBCEBIABBADYCBAJAIAAgASAiEKSAgIAAIgENACAiIQEMNQsgAEHQADYCHCAAICI2AhQgACABNgIMQQAhHgx3CyAAQQA2AhwgACAiNgIUIABB0IyAgAA2AhAgAEEHNgIMQQAhHgx2CyAAQQA2AhwgACABNgIUIABB0IyAgAA2AhAgAEEHNgIMQQAhHgx1C0EAIR4gAEEANgIcIAAgIjYCFCAAQb+UgIAANgIQIABBBzYCDAx0CyAAQQA2AhwgACAiNgIUIABBv5SAgAA2AhAgAEEHNgIMQQAhHgxzCyAAQQA2AhwgACAiNgIUIABB1I6AgAA2AhAgAEEHNgIMQQAhHgxyCyAAQQA2AhwgACABNgIUIABBwZOAgAA2AhAgAEEGNgIMQQAhHgxxCyAAQQA2AgAgIiAma0EGaiEBQSQhHgsgACAeOgApIAEhAQxOCyAAQQA2AgALQQAhHiAAQQA2AhwgACAINgIUIABBpJSAgAA2AhAgAEEGNgIMDG0LIAAoAgQhEyAAQQA2AgQgACATIB4QpoCAgAAiEw0BIB5BAWohEwtBnQEhHgxbCyAAQaoBNgIcIAAgEzYCDCAAIB5BAWo2AhRBACEeDGoLIAAoAgQhFCAAQQA2AgQgACAUIB4QpoCAgAAiFA0BIB5BAWohFAtBmgEhHgxYCyAAQasBNgIcIAAgFDYCDCAAIB5BAWo2AhRBACEeDGcLIABBADYCHCAAIBU2AhQgAEHzioCAADYCECAAQQ02AgxBACEeDGYLIABBADYCHCAAIBY2AhQgAEHOjYCAADYCECAAQQk2AgxBACEeDGULQQEhHgsgACAeOgArIBdBAWohFgwuCyAAQQA2AhwgACAXNgIUIABBoo2AgAA2AhAgAEEJNgIMQQAhHgxiCyAAQQA2AhwgACAYNgIUIABBxYqAgAA2AhAgAEEJNgIMQQAhHgxhC0EBIR4LIAAgHjoAKiAZQQFqIRgMLAsgAEEANgIcIAAgGTYCFCAAQbiNgIAANgIQIABBCTYCDEEAIR4MXgsgAEEANgIcIAAgGTYCFCAAQbmbgIAANgIQIABBCDYCDCAAQQA2AgBBACEeDF0LIABBADYCAAtBACEeIABBADYCHCAAIAg2AhQgAEGLlICAADYCECAAQQg2AgwMWwsgAEECOgAoIABBADYCACAbIBlrQQNqIRkMNgsgAEECOgAvIAAgCCACEKOAgIAAIh4NAUGvASEeDEkLIAAtAChBf2oOAh4gHwsgHkEVRw0nIABBuwE2AhwgACAINgIUIABBp5KAgAA2AhAgAEEVNgIMQQAhHgxXC0EAIR4MRgtBAiEeDEULQQ4hHgxEC0EQIR4MQwtBHCEeDEILQRQhHgxBC0EWIR4MQAtBFyEeDD8LQRkhHgw+C0EaIR4MPQtBOiEeDDwLQSMhHgw7C0EkIR4MOgtBMCEeDDkLQTshHgw4C0E8IR4MNwtBPiEeDDYLQT8hHgw1C0HAACEeDDQLQcEAIR4MMwtBxQAhHgwyC0HHACEeDDELQcgAIR4MMAtBygAhHgwvC0HfACEeDC4LQeIAIR4MLQtB+wAhHgwsC0GFASEeDCsLQZcBIR4MKgtBmQEhHgwpC0GpASEeDCgLQaQBIR4MJwtBmwEhHgwmC0GeASEeDCULQZ8BIR4MJAtBoQEhHgwjC0GiASEeDCILQacBIR4MIQtBqAEhHgwgCyAAQQA2AhwgACAINgIUIABB5ouAgAA2AhAgAEEQNgIMQQAhHgwvCyAAQQA2AgQgACAdIB0QqoCAgAAiAUUNASAAQS02AhwgACABNgIMIAAgHUEBajYCFEEAIR4MLgsgACgCBCEIIABBADYCBAJAIAAgCCABEKqAgIAAIghFDQAgAEEuNgIcIAAgCDYCDCAAIAFBAWo2AhRBACEeDC4LIAFBAWohAQweCyAdQQFqIQEMHgsgAEEANgIcIAAgHTYCFCAAQbqPgIAANgIQIABBBDYCDEEAIR4MKwsgAEEpNgIcIAAgATYCFCAAIAg2AgxBACEeDCoLIBxBAWohAQweCyAAQQo2AhwgACABNgIUIABBkZKAgAA2AhAgAEEVNgIMQQAhHgwoCyAAQRA2AhwgACABNgIUIABBvpKAgAA2AhAgAEEVNgIMQQAhHgwnCyAAQQA2AhwgACAeNgIUIABBiIyAgAA2AhAgAEEUNgIMQQAhHgwmCyAAQQQ2AhwgACABNgIUIABB1pKAgAA2AhAgAEEVNgIMQQAhHgwlCyAAQQA2AgAgCCAia0EFaiEZC0GjASEeDBMLIABBADYCACAiICZrQQJqIQFB4wAhHgwSCyAAQQA2AgAgAEGBBDsBKCAaIB5rQQJqIQELQdMAIR4MEAsgASEBAkAgAC0AKUEFRw0AQdIAIR4MEAtB0QAhHgwPC0EAIR4gAEEANgIcIABBuo6AgAA2AhAgAEEHNgIMIAAgIkEBajYCFAweCyAAQQA2AgAgJiAja0ECaiEBQTQhHgwNCyABIQELQS0hHgwLCwJAIAEiHSACRg0AA0ACQCAdLQAAQYCigIAAai0AACIBQQFGDQAgAUECRw0DIB1BAWohAQwECyAdQQFqIh0gAkcNAAtBMSEeDBsLQTEhHgwaCyAAQQA6ACwgHSEBDAELQQwhHgwIC0EvIR4MBwsgAUEBaiEBQSIhHgwGC0EfIR4MBQsgAEEANgIAICMgJGtBBGohAUEGIR4LIAAgHjoALCABIQFBDSEeDAMLIABBADYCACAmICNrQQdqIQFBCyEeDAILIABBADYCAAsgAEEAOgAsIBwhAUEJIR4MAAsLQQAhHiAAQQA2AhwgACABNgIUIABBuJGAgAA2AhAgAEEPNgIMDA4LQQAhHiAAQQA2AhwgACABNgIUIABBuJGAgAA2AhAgAEEPNgIMDA0LQQAhHiAAQQA2AhwgACABNgIUIABBlo+AgAA2AhAgAEELNgIMDAwLQQAhHiAAQQA2AhwgACABNgIUIABB8YiAgAA2AhAgAEELNgIMDAsLQQAhHiAAQQA2AhwgACABNgIUIABBiI2AgAA2AhAgAEEKNgIMDAoLIABBAjYCHCAAIAE2AhQgAEHwkoCAADYCECAAQRY2AgxBACEeDAkLQQEhHgwIC0HGACEeIAEiASACRg0HIANBCGogACABIAJB2KaAgABBChC5gICAACADKAIMIQEgAygCCA4DAQcCAAsQv4CAgAAACyAAQQA2AhwgAEGJk4CAADYCECAAQRc2AgwgACABQQFqNgIUQQAhHgwFCyAAQQA2AhwgACABNgIUIABBnpOAgAA2AhAgAEEJNgIMQQAhHgwECwJAIAEiASACRw0AQSEhHgwECwJAIAEtAABBCkYNACAAQQA2AhwgACABNgIUIABB7oyAgAA2AhAgAEEKNgIMQQAhHgwECyAAKAIEIQggAEEANgIEIAAgCCABEKqAgIAAIggNASABQQFqIQELQQAhHiAAQQA2AhwgACABNgIUIABB6pCAgAA2AhAgAEEZNgIMDAILIABBIDYCHCAAIAg2AgwgACABQQFqNgIUQQAhHgwBCwJAIAEiASACRw0AQRQhHgwBCyAAQYmAgIAANgIIIAAgATYCBEETIR4LIANBEGokgICAgAAgHguvAQECfyABKAIAIQYCQAJAIAIgA0YNACAEIAZqIQQgBiADaiACayEHIAIgBkF/cyAFaiIGaiEFA0ACQCACLQAAIAQtAABGDQBBAiEEDAMLAkAgBg0AQQAhBCAFIQIMAwsgBkF/aiEGIARBAWohBCACQQFqIgIgA0cNAAsgByEGIAMhAgsgAEEBNgIAIAEgBjYCACAAIAI2AgQPCyABQQA2AgAgACAENgIAIAAgAjYCBAsKACAAELuAgIAAC5U3AQt/I4CAgIAAQRBrIgEkgICAgAACQEEAKAKgtICAAA0AQQAQvoCAgABBgLiEgABrIgJB2QBJDQBBACEDAkBBACgC4LeAgAAiBA0AQQBCfzcC7LeAgABBAEKAgISAgIDAADcC5LeAgABBACABQQhqQXBxQdiq1aoFcyIENgLgt4CAAEEAQQA2AvS3gIAAQQBBADYCxLeAgAALQQAgAjYCzLeAgABBAEGAuISAADYCyLeAgABBAEGAuISAADYCmLSAgABBACAENgKstICAAEEAQX82Aqi0gIAAA0AgA0HEtICAAGogA0G4tICAAGoiBDYCACAEIANBsLSAgABqIgU2AgAgA0G8tICAAGogBTYCACADQcy0gIAAaiADQcC0gIAAaiIFNgIAIAUgBDYCACADQdS0gIAAaiADQci0gIAAaiIENgIAIAQgBTYCACADQdC0gIAAaiAENgIAIANBIGoiA0GAAkcNAAtBgLiEgABBeEGAuISAAGtBD3FBAEGAuISAAEEIakEPcRsiA2oiBEEEaiACIANrQUhqIgNBAXI2AgBBAEEAKALwt4CAADYCpLSAgABBACAENgKgtICAAEEAIAM2ApS0gIAAIAJBgLiEgABqQUxqQTg2AgALAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKItICAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQAgA0EBcSAEckEBcyIFQQN0IgBBuLSAgABqKAIAIgRBCGohAwJAAkAgBCgCCCICIABBsLSAgABqIgBHDQBBACAGQX4gBXdxNgKItICAAAwBCyAAIAI2AgggAiAANgIMCyAEIAVBA3QiBUEDcjYCBCAEIAVqQQRqIgQgBCgCAEEBcjYCAAwMCyACQQAoApC0gIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgVBA3QiAEG4tICAAGooAgAiBCgCCCIDIABBsLSAgABqIgBHDQBBACAGQX4gBXdxIgY2Aoi0gIAADAELIAAgAzYCCCADIAA2AgwLIARBCGohAyAEIAJBA3I2AgQgBCAFQQN0IgVqIAUgAmsiBTYCACAEIAJqIgAgBUEBcjYCBAJAIAdFDQAgB0EDdiIIQQN0QbC0gIAAaiECQQAoApy0gIAAIQQCQAJAIAZBASAIdCIIcQ0AQQAgBiAIcjYCiLSAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIIC0EAIAA2Apy0gIAAQQAgBTYCkLSAgAAMDAtBACgCjLSAgAAiCUUNASAJQQAgCWtxQX9qIgMgA0EMdkEQcSIDdiIEQQV2QQhxIgUgA3IgBCAFdiIDQQJ2QQRxIgRyIAMgBHYiA0EBdkECcSIEciADIAR2IgNBAXZBAXEiBHIgAyAEdmpBAnRBuLaAgABqKAIAIgAoAgRBeHEgAmshBCAAIQUCQANAAkAgBSgCECIDDQAgBUEUaigCACIDRQ0CCyADKAIEQXhxIAJrIgUgBCAFIARJIgUbIQQgAyAAIAUbIQAgAyEFDAALCyAAKAIYIQoCQCAAKAIMIgggAEYNAEEAKAKYtICAACAAKAIIIgNLGiAIIAM2AgggAyAINgIMDAsLAkAgAEEUaiIFKAIAIgMNACAAKAIQIgNFDQMgAEEQaiEFCwNAIAUhCyADIghBFGoiBSgCACIDDQAgCEEQaiEFIAgoAhAiAw0ACyALQQA2AgAMCgtBfyECIABBv39LDQAgAEETaiIDQXBxIQJBACgCjLSAgAAiB0UNAEEAIQsCQCACQYACSQ0AQR8hCyACQf///wdLDQAgA0EIdiIDIANBgP4/akEQdkEIcSIDdCIEIARBgOAfakEQdkEEcSIEdCIFIAVBgIAPakEQdkECcSIFdEEPdiADIARyIAVyayIDQQF0IAIgA0EVanZBAXFyQRxqIQsLQQAgAmshBAJAAkACQAJAIAtBAnRBuLaAgABqKAIAIgUNAEEAIQNBACEIDAELQQAhAyACQQBBGSALQQF2ayALQR9GG3QhAEEAIQgDQAJAIAUoAgRBeHEgAmsiBiAETw0AIAYhBCAFIQggBg0AQQAhBCAFIQggBSEDDAMLIAMgBUEUaigCACIGIAYgBSAAQR12QQRxakEQaigCACIFRhsgAyAGGyEDIABBAXQhACAFDQALCwJAIAMgCHINAEEAIQhBAiALdCIDQQAgA2tyIAdxIgNFDQMgA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBUEFdkEIcSIAIANyIAUgAHYiA0ECdkEEcSIFciADIAV2IgNBAXZBAnEiBXIgAyAFdiIDQQF2QQFxIgVyIAMgBXZqQQJ0Qbi2gIAAaigCACEDCyADRQ0BCwNAIAMoAgRBeHEgAmsiBiAESSEAAkAgAygCECIFDQAgA0EUaigCACEFCyAGIAQgABshBCADIAggABshCCAFIQMgBQ0ACwsgCEUNACAEQQAoApC0gIAAIAJrTw0AIAgoAhghCwJAIAgoAgwiACAIRg0AQQAoApi0gIAAIAgoAggiA0saIAAgAzYCCCADIAA2AgwMCQsCQCAIQRRqIgUoAgAiAw0AIAgoAhAiA0UNAyAIQRBqIQULA0AgBSEGIAMiAEEUaiIFKAIAIgMNACAAQRBqIQUgACgCECIDDQALIAZBADYCAAwICwJAQQAoApC0gIAAIgMgAkkNAEEAKAKctICAACEEAkACQCADIAJrIgVBEEkNACAEIAJqIgAgBUEBcjYCBEEAIAU2ApC0gIAAQQAgADYCnLSAgAAgBCADaiAFNgIAIAQgAkEDcjYCBAwBCyAEIANBA3I2AgQgAyAEakEEaiIDIAMoAgBBAXI2AgBBAEEANgKctICAAEEAQQA2ApC0gIAACyAEQQhqIQMMCgsCQEEAKAKUtICAACIAIAJNDQBBACgCoLSAgAAiAyACaiIEIAAgAmsiBUEBcjYCBEEAIAU2ApS0gIAAQQAgBDYCoLSAgAAgAyACQQNyNgIEIANBCGohAwwKCwJAAkBBACgC4LeAgABFDQBBACgC6LeAgAAhBAwBC0EAQn83Auy3gIAAQQBCgICEgICAwAA3AuS3gIAAQQAgAUEMakFwcUHYqtWqBXM2AuC3gIAAQQBBADYC9LeAgABBAEEANgLEt4CAAEGAgAQhBAtBACEDAkAgBCACQccAaiIHaiIGQQAgBGsiC3EiCCACSw0AQQBBMDYC+LeAgAAMCgsCQEEAKALAt4CAACIDRQ0AAkBBACgCuLeAgAAiBCAIaiIFIARNDQAgBSADTQ0BC0EAIQNBAEEwNgL4t4CAAAwKC0EALQDEt4CAAEEEcQ0EAkACQAJAQQAoAqC0gIAAIgRFDQBByLeAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiAESw0DCyADKAIIIgMNAAsLQQAQvoCAgAAiAEF/Rg0FIAghBgJAQQAoAuS3gIAAIgNBf2oiBCAAcUUNACAIIABrIAQgAGpBACADa3FqIQYLIAYgAk0NBSAGQf7///8HSw0FAkBBACgCwLeAgAAiA0UNAEEAKAK4t4CAACIEIAZqIgUgBE0NBiAFIANLDQYLIAYQvoCAgAAiAyAARw0BDAcLIAYgAGsgC3EiBkH+////B0sNBCAGEL6AgIAAIgAgAygCACADKAIEakYNAyAAIQMLAkAgA0F/Rg0AIAJByABqIAZNDQACQCAHIAZrQQAoAui3gIAAIgRqQQAgBGtxIgRB/v///wdNDQAgAyEADAcLAkAgBBC+gICAAEF/Rg0AIAQgBmohBiADIQAMBwtBACAGaxC+gICAABoMBAsgAyEAIANBf0cNBQwDC0EAIQgMBwtBACEADAULIABBf0cNAgtBAEEAKALEt4CAAEEEcjYCxLeAgAALIAhB/v///wdLDQEgCBC+gICAACEAQQAQvoCAgAAhAyAAQX9GDQEgA0F/Rg0BIAAgA08NASADIABrIgYgAkE4ak0NAQtBAEEAKAK4t4CAACAGaiIDNgK4t4CAAAJAIANBACgCvLeAgABNDQBBACADNgK8t4CAAAsCQAJAAkACQEEAKAKgtICAACIERQ0AQci3gIAAIQMDQCAAIAMoAgAiBSADKAIEIghqRg0CIAMoAggiAw0ADAMLCwJAAkBBACgCmLSAgAAiA0UNACAAIANPDQELQQAgADYCmLSAgAALQQAhA0EAIAY2Asy3gIAAQQAgADYCyLeAgABBAEF/NgKotICAAEEAQQAoAuC3gIAANgKstICAAEEAQQA2AtS3gIAAA0AgA0HEtICAAGogA0G4tICAAGoiBDYCACAEIANBsLSAgABqIgU2AgAgA0G8tICAAGogBTYCACADQcy0gIAAaiADQcC0gIAAaiIFNgIAIAUgBDYCACADQdS0gIAAaiADQci0gIAAaiIENgIAIAQgBTYCACADQdC0gIAAaiAENgIAIANBIGoiA0GAAkcNAAsgAEF4IABrQQ9xQQAgAEEIakEPcRsiA2oiBCAGIANrQUhqIgNBAXI2AgRBAEEAKALwt4CAADYCpLSAgABBACAENgKgtICAAEEAIAM2ApS0gIAAIAYgAGpBTGpBODYCAAwCCyADLQAMQQhxDQAgBSAESw0AIAAgBE0NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoApS0gIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKALwt4CAADYCpLSAgABBACAFNgKUtICAAEEAIAA2AqC0gIAAIAsgBGpBBGpBODYCAAwBCwJAIABBACgCmLSAgAAiC08NAEEAIAA2Api0gIAAIAAhCwsgACAGaiEIQci3gIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgCEYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtByLeAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiBiACQQNyNgIEIAhBeCAIa0EPcUEAIAhBCGpBD3EbaiIIIAYgAmoiAmshBQJAIAQgCEcNAEEAIAI2AqC0gIAAQQBBACgClLSAgAAgBWoiAzYClLSAgAAgAiADQQFyNgIEDAMLAkBBACgCnLSAgAAgCEcNAEEAIAI2Apy0gIAAQQBBACgCkLSAgAAgBWoiAzYCkLSAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAgoAgQiA0EDcUEBRw0AIANBeHEhBwJAAkAgA0H/AUsNACAIKAIIIgQgA0EDdiILQQN0QbC0gIAAaiIARhoCQCAIKAIMIgMgBEcNAEEAQQAoAoi0gIAAQX4gC3dxNgKItICAAAwCCyADIABGGiADIAQ2AgggBCADNgIMDAELIAgoAhghCQJAAkAgCCgCDCIAIAhGDQAgCyAIKAIIIgNLGiAAIAM2AgggAyAANgIMDAELAkAgCEEUaiIDKAIAIgQNACAIQRBqIgMoAgAiBA0AQQAhAAwBCwNAIAMhCyAEIgBBFGoiAygCACIEDQAgAEEQaiEDIAAoAhAiBA0ACyALQQA2AgALIAlFDQACQAJAIAgoAhwiBEECdEG4toCAAGoiAygCACAIRw0AIAMgADYCACAADQFBAEEAKAKMtICAAEF+IAR3cTYCjLSAgAAMAgsgCUEQQRQgCSgCECAIRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgCCgCECIDRQ0AIAAgAzYCECADIAA2AhgLIAgoAhQiA0UNACAAQRRqIAM2AgAgAyAANgIYCyAHIAVqIQUgCCAHaiEICyAIIAgoAgRBfnE2AgQgAiAFaiAFNgIAIAIgBUEBcjYCBAJAIAVB/wFLDQAgBUEDdiIEQQN0QbC0gIAAaiEDAkACQEEAKAKItICAACIFQQEgBHQiBHENAEEAIAUgBHI2Aoi0gIAAIAMhBAwBCyADKAIIIQQLIAQgAjYCDCADIAI2AgggAiADNgIMIAIgBDYCCAwDC0EfIQMCQCAFQf///wdLDQAgBUEIdiIDIANBgP4/akEQdkEIcSIDdCIEIARBgOAfakEQdkEEcSIEdCIAIABBgIAPakEQdkECcSIAdEEPdiADIARyIAByayIDQQF0IAUgA0EVanZBAXFyQRxqIQMLIAIgAzYCHCACQgA3AhAgA0ECdEG4toCAAGohBAJAQQAoAoy0gIAAIgBBASADdCIIcQ0AIAQgAjYCAEEAIAAgCHI2Aoy0gIAAIAIgBDYCGCACIAI2AgggAiACNgIMDAMLIAVBAEEZIANBAXZrIANBH0YbdCEDIAQoAgAhAANAIAAiBCgCBEF4cSAFRg0CIANBHXYhACADQQF0IQMgBCAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBDYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBiADa0FIaiIDQQFyNgIEIAhBTGpBODYCACAEIAVBNyAFa0EPcUEAIAVBSWpBD3EbakFBaiIIIAggBEEQakkbIghBIzYCBEEAQQAoAvC3gIAANgKktICAAEEAIAs2AqC0gIAAQQAgAzYClLSAgAAgCEEQakEAKQLQt4CAADcCACAIQQApAsi3gIAANwIIQQAgCEEIajYC0LeAgABBACAGNgLMt4CAAEEAIAA2Asi3gIAAQQBBADYC1LeAgAAgCEEkaiEDA0AgA0EHNgIAIAUgA0EEaiIDSw0ACyAIIARGDQMgCCAIKAIEQX5xNgIEIAggCCAEayIGNgIAIAQgBkEBcjYCBAJAIAZB/wFLDQAgBkEDdiIFQQN0QbC0gIAAaiEDAkACQEEAKAKItICAACIAQQEgBXQiBXENAEEAIAAgBXI2Aoi0gIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAGQf///wdLDQAgBkEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiADIAVyIAByayIDQQF0IAYgA0EVanZBAXFyQRxqIQMLIARCADcCECAEQRxqIAM2AgAgA0ECdEG4toCAAGohBQJAQQAoAoy0gIAAIgBBASADdCIIcQ0AIAUgBDYCAEEAIAAgCHI2Aoy0gIAAIARBGGogBTYCACAEIAQ2AgggBCAENgIMDAQLIAZBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhAANAIAAiBSgCBEF4cSAGRg0DIANBHXYhACADQQF0IQMgBSAAQQRxakEQaiIIKAIAIgANAAsgCCAENgIAIARBGGogBTYCACAEIAQ2AgwgBCAENgIIDAMLIAQoAggiAyACNgIMIAQgAjYCCCACQQA2AhggAiAENgIMIAIgAzYCCAsgBkEIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQRhqQQA2AgAgBCAFNgIMIAQgAzYCCAtBACgClLSAgAAiAyACTQ0AQQAoAqC0gIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgKUtICAAEEAIAU2AqC0gIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYC+LeAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEG4toCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKMtICAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgAyAIakEEaiIDIAMoAgBBAXI2AgAMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEEDdiIEQQN0QbC0gIAAaiEDAkACQEEAKAKItICAACIFQQEgBHQiBHENAEEAIAUgBHI2Aoi0gIAAIAMhBAwBCyADKAIIIQQLIAQgADYCDCADIAA2AgggACADNgIMIAAgBDYCCAwBC0EfIQMCQCAEQf///wdLDQAgBEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCICIAJBgIAPakEQdkECcSICdEEPdiADIAVyIAJyayIDQQF0IAQgA0EVanZBAXFyQRxqIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEG4toCAAGohBQJAIAdBASADdCICcQ0AIAUgADYCAEEAIAcgAnI2Aoy0gIAAIAAgBTYCGCAAIAA2AgggACAANgIMDAELIARBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhAgJAA0AgAiIFKAIEQXhxIARGDQEgA0EddiECIANBAXQhAyAFIAJBBHFqQRBqIgYoAgAiAg0ACyAGIAA2AgAgACAFNgIYIAAgADYCDCAAIAA2AggMAQsgBSgCCCIDIAA2AgwgBSAANgIIIABBADYCGCAAIAU2AgwgACADNgIICyAIQQhqIQMMAQsCQCAKRQ0AAkACQCAAIAAoAhwiBUECdEG4toCAAGoiAygCAEcNACADIAg2AgAgCA0BQQAgCUF+IAV3cTYCjLSAgAAMAgsgCkEQQRQgCigCECAARhtqIAg2AgAgCEUNAQsgCCAKNgIYAkAgACgCECIDRQ0AIAggAzYCECADIAg2AhgLIABBFGooAgAiA0UNACAIQRRqIAM2AgAgAyAINgIYCwJAAkAgBEEPSw0AIAAgBCACaiIDQQNyNgIEIAMgAGpBBGoiAyADKAIAQQFyNgIADAELIAAgAmoiBSAEQQFyNgIEIAAgAkEDcjYCBCAFIARqIAQ2AgACQCAHRQ0AIAdBA3YiCEEDdEGwtICAAGohAkEAKAKctICAACEDAkACQEEBIAh0IgggBnENAEEAIAggBnI2Aoi0gIAAIAIhCAwBCyACKAIIIQgLIAggAzYCDCACIAM2AgggAyACNgIMIAMgCDYCCAtBACAFNgKctICAAEEAIAQ2ApC0gIAACyAAQQhqIQMLIAFBEGokgICAgAAgAwsKACAAEL2AgIAAC/ANAQd/AkAgAEUNACAAQXhqIgEgAEF8aigCACICQXhxIgBqIQMCQCACQQFxDQAgAkEDcUUNASABIAEoAgAiAmsiAUEAKAKYtICAACIESQ0BIAIgAGohAAJAQQAoApy0gIAAIAFGDQACQCACQf8BSw0AIAEoAggiBCACQQN2IgVBA3RBsLSAgABqIgZGGgJAIAEoAgwiAiAERw0AQQBBACgCiLSAgABBfiAFd3E2Aoi0gIAADAMLIAIgBkYaIAIgBDYCCCAEIAI2AgwMAgsgASgCGCEHAkACQCABKAIMIgYgAUYNACAEIAEoAggiAksaIAYgAjYCCCACIAY2AgwMAQsCQCABQRRqIgIoAgAiBA0AIAFBEGoiAigCACIEDQBBACEGDAELA0AgAiEFIAQiBkEUaiICKAIAIgQNACAGQRBqIQIgBigCECIEDQALIAVBADYCAAsgB0UNAQJAAkAgASgCHCIEQQJ0Qbi2gIAAaiICKAIAIAFHDQAgAiAGNgIAIAYNAUEAQQAoAoy0gIAAQX4gBHdxNgKMtICAAAwDCyAHQRBBFCAHKAIQIAFGG2ogBjYCACAGRQ0CCyAGIAc2AhgCQCABKAIQIgJFDQAgBiACNgIQIAIgBjYCGAsgASgCFCICRQ0BIAZBFGogAjYCACACIAY2AhgMAQsgAygCBCICQQNxQQNHDQAgAyACQX5xNgIEQQAgADYCkLSAgAAgASAAaiAANgIAIAEgAEEBcjYCBA8LIAMgAU0NACADKAIEIgJBAXFFDQACQAJAIAJBAnENAAJAQQAoAqC0gIAAIANHDQBBACABNgKgtICAAEEAQQAoApS0gIAAIABqIgA2ApS0gIAAIAEgAEEBcjYCBCABQQAoApy0gIAARw0DQQBBADYCkLSAgABBAEEANgKctICAAA8LAkBBACgCnLSAgAAgA0cNAEEAIAE2Apy0gIAAQQBBACgCkLSAgAAgAGoiADYCkLSAgAAgASAAQQFyNgIEIAEgAGogADYCAA8LIAJBeHEgAGohAAJAAkAgAkH/AUsNACADKAIIIgQgAkEDdiIFQQN0QbC0gIAAaiIGRhoCQCADKAIMIgIgBEcNAEEAQQAoAoi0gIAAQX4gBXdxNgKItICAAAwCCyACIAZGGiACIAQ2AgggBCACNgIMDAELIAMoAhghBwJAAkAgAygCDCIGIANGDQBBACgCmLSAgAAgAygCCCICSxogBiACNgIIIAIgBjYCDAwBCwJAIANBFGoiAigCACIEDQAgA0EQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0AAkACQCADKAIcIgRBAnRBuLaAgABqIgIoAgAgA0cNACACIAY2AgAgBg0BQQBBACgCjLSAgABBfiAEd3E2Aoy0gIAADAILIAdBEEEUIAcoAhAgA0YbaiAGNgIAIAZFDQELIAYgBzYCGAJAIAMoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyADKAIUIgJFDQAgBkEUaiACNgIAIAIgBjYCGAsgASAAaiAANgIAIAEgAEEBcjYCBCABQQAoApy0gIAARw0BQQAgADYCkLSAgAAPCyADIAJBfnE2AgQgASAAaiAANgIAIAEgAEEBcjYCBAsCQCAAQf8BSw0AIABBA3YiAkEDdEGwtICAAGohAAJAAkBBACgCiLSAgAAiBEEBIAJ0IgJxDQBBACAEIAJyNgKItICAACAAIQIMAQsgACgCCCECCyACIAE2AgwgACABNgIIIAEgADYCDCABIAI2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAFCADcCECABQRxqIAI2AgAgAkECdEG4toCAAGohBAJAAkBBACgCjLSAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCjLSAgAAgAUEYaiAENgIAIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABQRhqIAQ2AgAgASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEYakEANgIAIAEgBDYCDCABIAA2AggLQQBBACgCqLSAgABBf2oiAUF/IAEbNgKotICAAAsLTgACQCAADQA/AEEQdA8LAkAgAEH//wNxDQAgAEF/TA0AAkAgAEEQdkAAIgBBf0cNAEEAQTA2Avi3gIAAQX8PCyAAQRB0DwsQv4CAgAAACwQAAAALC44sAQBBgAgLhiwBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHBhcmFtZXRlcnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AATUtBQ1RJVklUWQBDT1BZAE5PVElGWQBQTEFZAFBVVABDSEVDS09VVABQT1NUAFJFUE9SVABIUEVfSU5WQUxJRF9DT05TVEFOVABHRVQASFBFX1NUUklDVABSRURJUkVDVABDT05ORUNUAEhQRV9JTlZBTElEX1NUQVRVUwBPUFRJT05TAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAEhQRV9JTlZBTElEX1VSTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUAUEFVU0UAUFVSR0UATUVSR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABQUk9QRklORABVTkJJTkQAUkVCSU5EAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQASFBFX1BBVVNFRABIRUFEAEV4cGVjdGVkIEhUVFAvANwLAADPCwAA0woAAJkNAAAQDAAAXQsAAF8NAAC1CwAAugoAAHMLAACcCwAA9QsAAHMMAADvCgAA3AwAAEcMAACHCwAAjwwAAL0MAAAvCwAApwwAAKkNAAAEDQAAFw0AACYLAACJDQAA1QwAAM8KAAC0DQAArgoAAKEKAADnCgAAAgsAAD0NAACQCgAA7AsAAMULAACKDAAAcg0AADQMAABADAAA6gsAAIQNAACCDQAAew0AAMsLAACzCgAAhQoAAKUKAAD+DAAAPgwAAJUKAABODQAATA0AADgMAAD4DAAAQwsAAOULAADjCwAALQ0AAPELAABDDQAANA0AAE4LAACcCgAA8gwAAFQLAAAYCwAACgsAAN4KAABYDQAALgwAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWxvc2VlZXAtYWxpdmUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZWN0aW9uZW50LWxlbmd0aG9ucm94eS1jb25uZWN0aW9uAAAAAAAAAAAAAAAAAAAAcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAAAAAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAEAAAIAAAAAAAAAAAAAAAAAAAAAAAADBAAABAQEBAQEBAQEBAQFBAQEBAQEBAQEBAQEAAQABgcEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAACAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv' diff --git a/deps/undici/src/lib/mock/mock-agent.js b/deps/undici/src/lib/mock/mock-agent.js index 4ae47f657fe47f..828e8af174d5f2 100644 --- a/deps/undici/src/lib/mock/mock-agent.js +++ b/deps/undici/src/lib/mock/mock-agent.js @@ -16,8 +16,10 @@ const { const MockClient = require('./mock-client') const MockPool = require('./mock-pool') const { matchValue, buildMockOptions } = require('./mock-utils') -const { InvalidArgumentError } = require('../core/errors') +const { InvalidArgumentError, UndiciError } = require('../core/errors') const Dispatcher = require('../dispatcher') +const Pluralizer = require('./pluralizer') +const PendingInterceptorsFormatter = require('./pending-interceptors-formatter') class FakeWeakRef { constructor (value) { @@ -94,6 +96,12 @@ class MockAgent extends Dispatcher { this[kNetConnect] = false } + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive () { + return this[kIsMockActive] + } + [kMockAgentSet] (origin, dispatcher) { this[kClients].set(origin, new FakeWeakRef(dispatcher)) } @@ -134,6 +142,30 @@ class MockAgent extends Dispatcher { [kGetNetConnect] () { return this[kNetConnect] } + + pendingInterceptors () { + const mockAgentClients = this[kClients] + + return Array.from(mockAgentClients.entries()) + .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin }))) + .filter(({ pending }) => pending) + } + + assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors() + + if (pending.length === 0) { + return + } + + const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length) + + throw new UndiciError(` +${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: + +${pendingInterceptorsFormatter.format(pending)} +`.trim()) + } } module.exports = MockAgent diff --git a/deps/undici/src/lib/mock/mock-interceptor.js b/deps/undici/src/lib/mock/mock-interceptor.js index 699bec41287e41..781e477502ad04 100644 --- a/deps/undici/src/lib/mock/mock-interceptor.js +++ b/deps/undici/src/lib/mock/mock-interceptor.js @@ -10,9 +10,10 @@ const { kMockDispatch } = require('./mock-symbols') const { InvalidArgumentError } = require('../core/errors') +const { buildURL } = require('../core/util') /** - * Defines the scope API for a interceptor reply + * Defines the scope API for an interceptor reply */ class MockScope { constructor (mockDispatch) { @@ -70,9 +71,16 @@ class MockInterceptor { // As per RFC 3986, clients are not supposed to send URI // fragments to servers when they retrieve a document, if (typeof opts.path === 'string') { - // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811 - const parsedURL = new URL(opts.path, 'data://') - opts.path = parsedURL.pathname + parsedURL.search + if (opts.query) { + opts.path = buildURL(opts.path, opts.query) + } else { + // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811 + const parsedURL = new URL(opts.path, 'data://') + opts.path = parsedURL.pathname + parsedURL.search + } + } + if (typeof opts.method === 'string') { + opts.method = opts.method.toUpperCase() } this[kDispatchKey] = buildKey(opts) @@ -122,7 +130,7 @@ class MockInterceptor { throw new InvalidArgumentError('reply options callback must return an object') } - const { statusCode, data, responseOptions = {} } = resolvedData + const { statusCode, data = '', responseOptions = {} } = resolvedData this.validateReplyParameters(statusCode, data, responseOptions) // Since the values can be obtained immediately we return them // from this higher order function that will be resolved later. @@ -137,10 +145,10 @@ class MockInterceptor { } // We can have either one or three parameters, if we get here, - // we should have 2-3 parameters. So we spread the arguments of + // we should have 1-3 parameters. So we spread the arguments of // this function to obtain the parameters, since replyData will always // just be the statusCode. - const [statusCode, data, responseOptions = {}] = [...arguments] + const [statusCode, data = '', responseOptions = {}] = [...arguments] this.validateReplyParameters(statusCode, data, responseOptions) // Send in-already provided data like usual diff --git a/deps/undici/src/lib/mock/mock-utils.js b/deps/undici/src/lib/mock/mock-utils.js index 8bd4df51a09436..80052223f8fb40 100644 --- a/deps/undici/src/lib/mock/mock-utils.js +++ b/deps/undici/src/lib/mock/mock-utils.js @@ -6,9 +6,9 @@ const { kMockAgent, kOriginalDispatch, kOrigin, - kIsMockActive, kGetNetConnect } = require('./mock-symbols') +const { buildURL, nop } = require('../core/util') function matchValue (match, value) { if (typeof match === 'string') { @@ -31,6 +31,26 @@ function lowerCaseEntries (headers) { ) } +/** + * @param {import('../../index').Headers|string[]|Record} headers + * @param {string} key + */ +function getHeaderByName (headers, key) { + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (headers[i] === key) { + return headers[i + 1] + } + } + + return undefined + } else if (typeof headers.get === 'function') { + return headers.get(key) + } else { + return headers[key] + } +} + function matchHeaders (mockDispatch, headers) { if (typeof mockDispatch.headers === 'function') { if (Array.isArray(headers)) { // fetch HeadersList @@ -51,9 +71,9 @@ function matchHeaders (mockDispatch, headers) { } for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) { - const header = typeof headers.get === 'function' ? headers.get(matchHeaderName) : headers[matchHeaderName] + const headerValue = getHeaderByName(headers, matchHeaderName) - if (!matchValue(matchHeaderValue, header)) { + if (!matchValue(matchHeaderValue, headerValue)) { return false } } @@ -79,10 +99,12 @@ function getResponseData (data) { } function getMockDispatch (mockDispatches, key) { + const resolvedPath = key.query ? buildURL(key.path, key.query) : key.path + // Match path - let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(path, key.path)) + let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(path, resolvedPath)) if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for path '${key.path}'`) + throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`) } // Match method @@ -107,9 +129,9 @@ function getMockDispatch (mockDispatches, key) { } function addMockDispatch (mockDispatches, key, data) { - const baseData = { times: null, persist: false, consumed: false } + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false } const replyData = typeof data === 'function' ? { callback: data } : { ...data } - const newMockDispatch = { ...baseData, ...key, data: { error: null, ...replyData } } + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } } mockDispatches.push(newMockDispatch) return newMockDispatch } @@ -127,12 +149,13 @@ function deleteMockDispatch (mockDispatches, key) { } function buildKey (opts) { - const { path, method, body, headers } = opts + const { path, method, body, headers, query } = opts return { path, method, body, - headers + headers, + query } } @@ -140,6 +163,79 @@ function generateKeyValues (data) { return Object.entries(data).reduce((keyValuePairs, [key, value]) => [...keyValuePairs, key, value], []) } +/** + * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status + * @param {number} statusCode + */ +function getStatusText (statusCode) { + switch (statusCode) { + case 100: return 'Continue' + case 101: return 'Switching Protocols' + case 102: return 'Processing' + case 103: return 'Early Hints' + case 200: return 'OK' + case 201: return 'Created' + case 202: return 'Accepted' + case 203: return 'Non-Authoritative Information' + case 204: return 'No Content' + case 205: return 'Reset Content' + case 206: return 'Partial Content' + case 207: return 'Multi-Status' + case 208: return 'Already Reported' + case 226: return 'IM Used' + case 300: return 'Multiple Choice' + case 301: return 'Moved Permanently' + case 302: return 'Found' + case 303: return 'See Other' + case 304: return 'Not Modified' + case 305: return 'Use Proxy' + case 306: return 'unused' + case 307: return 'Temporary Redirect' + case 308: return 'Permanent Redirect' + case 400: return 'Bad Request' + case 401: return 'Unauthorized' + case 402: return 'Payment Required' + case 403: return 'Forbidden' + case 404: return 'Not Found' + case 405: return 'Method Not Allowed' + case 406: return 'Not Acceptable' + case 407: return 'Proxy Authentication Required' + case 408: return 'Request Timeout' + case 409: return 'Conflict' + case 410: return 'Gone' + case 411: return 'Length Required' + case 412: return 'Precondition Failed' + case 413: return 'Payload Too Large' + case 414: return 'URI Too Large' + case 415: return 'Unsupported Media Type' + case 416: return 'Range Not Satisfiable' + case 417: return 'Expectation Failed' + case 418: return 'I\'m a teapot' + case 421: return 'Misdirected Request' + case 422: return 'Unprocessable Entity' + case 423: return 'Locked' + case 424: return 'Failed Dependency' + case 425: return 'Too Early' + case 426: return 'Upgrade Required' + case 428: return 'Precondition Required' + case 429: return 'Too Many Requests' + case 431: return 'Request Header Fields Too Large' + case 451: return 'Unavailable For Legal Reasons' + case 500: return 'Internal Server Error' + case 501: return 'Not Implemented' + case 502: return 'Bad Gateway' + case 503: return 'Service Unavailable' + case 504: return 'Gateway Timeout' + case 505: return 'HTTP Version Not Supported' + case 506: return 'Variant Also Negotiates' + case 507: return 'Insufficient Storage' + case 508: return 'Loop Detected' + case 510: return 'Not Extended' + case 511: return 'Network Authentication Required' + default: return 'unknown' + } +} + async function getResponse (body) { const buffers = [] for await (const data of body) { @@ -156,6 +252,8 @@ function mockDispatch (opts, handler) { const key = buildKey(opts) const mockDispatch = getMockDispatch(this[kDispatches], key) + mockDispatch.timesInvoked++ + // Here's where we resolve a callback if a callback is present for the dispatch data. if (mockDispatch.data.callback) { mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) } @@ -163,18 +261,11 @@ function mockDispatch (opts, handler) { // Parse mockDispatch data const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch - let { times } = mockDispatch - if (typeof times === 'number' && times > 0) { - times = --mockDispatch.times - } + const { timesInvoked, times } = mockDispatch - // If persist is true, skip - // Or if times is a number and > 0, skip - // Otherwise, mark as consumed - - if (!(persist === true || (typeof times === 'number' && times > 0))) { - mockDispatch.consumed = true - } + // If it's used up and not persistent, mark as consumed + mockDispatch.consumed = !persist && timesInvoked >= times + mockDispatch.pending = timesInvoked < times // If specified, trigger dispatch error if (error !== null) { @@ -197,7 +288,8 @@ function mockDispatch (opts, handler) { const responseHeaders = generateKeyValues(headers) const responseTrailers = generateKeyValues(trailers) - handler.onHeaders(statusCode, responseHeaders, resume) + handler.abort = nop + handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)) handler.onData(Buffer.from(responseData)) handler.onComplete(responseTrailers) deleteMockDispatch(mockDispatches, key) @@ -214,7 +306,7 @@ function buildMockDispatch () { const originalDispatch = this[kOriginalDispatch] return function dispatch (opts, handler) { - if (agent[kIsMockActive]) { + if (agent.isMockActive) { try { mockDispatch.call(this, opts, handler) } catch (error) { @@ -264,8 +356,10 @@ module.exports = { generateKeyValues, matchValue, getResponse, + getStatusText, mockDispatch, buildMockDispatch, checkNetConnect, - buildMockOptions + buildMockOptions, + getHeaderByName } diff --git a/deps/undici/src/lib/mock/pending-interceptors-formatter.js b/deps/undici/src/lib/mock/pending-interceptors-formatter.js new file mode 100644 index 00000000000000..1bc7539fd2e3de --- /dev/null +++ b/deps/undici/src/lib/mock/pending-interceptors-formatter.js @@ -0,0 +1,40 @@ +'use strict' + +const { Transform } = require('stream') +const { Console } = require('console') + +/** + * Gets the output of `console.table(…)` as a string. + */ +module.exports = class PendingInterceptorsFormatter { + constructor ({ disableColors } = {}) { + this.transform = new Transform({ + transform (chunk, _enc, cb) { + cb(null, chunk) + } + }) + + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }) + } + + format (pendingInterceptors) { + const withPrettyHeaders = pendingInterceptors.map( + ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path, + 'Status code': statusCode, + Persistent: persist ? '✅' : '❌', + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + })) + + this.logger.table(withPrettyHeaders) + return this.transform.read().toString() + } +} diff --git a/deps/undici/src/lib/mock/pluralizer.js b/deps/undici/src/lib/mock/pluralizer.js new file mode 100644 index 00000000000000..47f150bc27a80a --- /dev/null +++ b/deps/undici/src/lib/mock/pluralizer.js @@ -0,0 +1,29 @@ +'use strict' + +const singulars = { + pronoun: 'it', + is: 'is', + was: 'was', + this: 'this' +} + +const plurals = { + pronoun: 'they', + is: 'are', + was: 'were', + this: 'these' +} + +module.exports = class Pluralizer { + constructor (singular, plural) { + this.singular = singular + this.plural = plural + } + + pluralize (count) { + const one = count === 1 + const keys = one ? singulars : plurals + const noun = one ? this.singular : this.plural + return { ...keys, count, noun } + } +} diff --git a/deps/undici/src/lib/proxy-agent.js b/deps/undici/src/lib/proxy-agent.js index ee674df646fe65..bfc75d796ed677 100644 --- a/deps/undici/src/lib/proxy-agent.js +++ b/deps/undici/src/lib/proxy-agent.js @@ -1,29 +1,97 @@ 'use strict' -const { kProxy, kClose, kDestroy } = require('./core/symbols') -const { URL } = require('url') +const { kClose, kDestroy } = require('./core/symbols') +const Client = require('./agent') const Agent = require('./agent') const DispatcherBase = require('./dispatcher-base') -const { InvalidArgumentError } = require('./core/errors') +const { InvalidArgumentError, RequestAbortedError } = require('./core/errors') +const buildConnector = require('./core/connect') const kAgent = Symbol('proxy agent') +const kClient = Symbol('proxy client') +const kProxyHeaders = Symbol('proxy headers') +const kRequestTls = Symbol('request tls settings') +const kProxyTls = Symbol('proxy tls settings') +const kConnectEndpoint = Symbol('connect endpoint function') + +function defaultProtocolPort (protocol) { + return protocol === 'https:' ? 443 : 80 +} class ProxyAgent extends DispatcherBase { constructor (opts) { super(opts) - this[kProxy] = buildProxyOptions(opts) - this[kAgent] = new Agent(opts) + + if (typeof opts === 'string') { + opts = { uri: opts } + } + + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory') + } + + this[kRequestTls] = opts.requestTls + this[kProxyTls] = opts.proxyTls + this[kProxyHeaders] = {} + + if (opts.auth) { + this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}` + } + + const { origin, port } = new URL(opts.uri) + + const connect = buildConnector({ ...opts.proxyTls }) + this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }) + this[kClient] = new Client({ origin: opts.origin, connect }) + this[kAgent] = new Agent({ + ...opts, + connect: async (opts, callback) => { + let requestedHost = opts.host + if (!opts.port) { + requestedHost += `:${defaultProtocolPort(opts.protocol)}` + } + try { + const { socket, statusCode } = await this[kClient].connect({ + origin, + port, + path: requestedHost, + signal: opts.signal, + headers: { + ...this[kProxyHeaders], + host: opts.host + } + }) + if (statusCode !== 200) { + socket.on('error', () => {}).destroy() + callback(new RequestAbortedError('Proxy response !== 200 when HTTP Tunneling')) + } + if (opts.protocol !== 'https:') { + callback(null, socket) + return + } + let servername + if (this[kRequestTls]) { + servername = this[kRequestTls].servername + } else { + servername = opts.servername + } + this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback) + } catch (err) { + callback(err) + } + } + }) } dispatch (opts, handler) { const { host } = new URL(opts.origin) + const headers = buildHeaders(opts.headers) + throwIfProxyAuthIsSent(headers) return this[kAgent].dispatch( { ...opts, - origin: this[kProxy].uri, - path: opts.origin + opts.path, headers: { - ...opts.headers, + ...headers, host } }, @@ -33,25 +101,49 @@ class ProxyAgent extends DispatcherBase { async [kClose] () { await this[kAgent].close() + await this[kClient].close() } async [kDestroy] () { await this[kAgent].destroy() + await this[kClient].destroy() } } -function buildProxyOptions (opts) { - if (typeof opts === 'string') { - opts = { uri: opts } - } +/** + * @param {string[] | Record} headers + * @returns {Record} + */ +function buildHeaders (headers) { + // When using undici.fetch, the headers list is stored + // as an array. + if (Array.isArray(headers)) { + /** @type {Record} */ + const headersPair = {} - if (!opts || !opts.uri) { - throw new InvalidArgumentError('Proxy opts.uri is mandatory') + for (let i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1] + } + + return headersPair } - return { - uri: opts.uri, - protocol: opts.protocol || 'https' + return headers +} + +/** + * @param {Record} headers + * + * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers + * Nevertheless, it was changed and to avoid a security vulnerability by end users + * this check was created. + * It should be removed in the next major version for performance reasons + */ +function throwIfProxyAuthIsSent (headers) { + const existProxyAuth = headers && Object.keys(headers) + .find((key) => key.toLowerCase() === 'proxy-authorization') + if (existProxyAuth) { + throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor') } } diff --git a/deps/undici/src/package.json b/deps/undici/src/package.json index aee29e463873fd..1fde040055fadc 100644 --- a/deps/undici/src/package.json +++ b/deps/undici/src/package.json @@ -1,6 +1,6 @@ { "name": "undici", - "version": "5.0.0", + "version": "5.8.0", "description": "An HTTP/1.1 client, written from scratch for Node.js", "homepage": "https://undici.nodejs.org", "bugs": { @@ -35,19 +35,20 @@ "files": [ "*.d.ts", "index.js", + "index-fetch.js", "lib", "types", "docs" ], "scripts": { - "build:node": "npx esbuild@0.14.25 index.js --bundle --platform=node --outfile=undici.js", + "build:node": "npx esbuild@0.14.38 index-fetch.js --bundle --platform=node --outfile=undici-fetch.js", "prebuild:wasm": "docker build -t llhttp_wasm_builder -f build/Dockerfile .", "build:wasm": "node build/wasm.js --docker", "lint": "standard | snazzy", "lint:fix": "standard --fix | snazzy", "test": "npm run test:tap && npm run test:node-fetch && npm run test:fetch && npm run test:jest && tsd", "test:node-fetch": "node scripts/verifyVersion.js 16 || mocha test/node-fetch", - "test:fetch": "node scripts/verifyVersion.js 16 || tap test/fetch/*.js", + "test:fetch": "node scripts/verifyVersion.js 16 || (npm run build:node && tap test/fetch/*.js && tap test/webidl/*.js)", "test:jest": "jest", "test:tap": "tap test/*.js test/diagnostics-channel/*.js", "test:tdd": "tap test/*.js test/diagnostics-channel/*.js -w", @@ -63,34 +64,36 @@ "fuzz": "jsfuzz test/fuzzing/fuzz.js corpus" }, "devDependencies": { - "@sinonjs/fake-timers": "^7.0.5", - "@types/node": "^16.9.1", + "@sinonjs/fake-timers": "^9.1.2", + "@types/node": "^17.0.29", "abort-controller": "^3.0.0", - "busboy": "^0.3.1", + "busboy": "^1.6.0", "chai": "^4.3.4", "chai-as-promised": "^7.1.1", "chai-iterator": "^3.0.2", "chai-string": "^1.5.0", - "concurrently": "^6.2.1", - "cronometro": "^0.8.0", + "concurrently": "^7.1.0", + "cronometro": "^1.0.5", "delay": "^5.0.0", "docsify-cli": "^4.4.3", "formdata-node": "^4.3.1", - "https-pem": "^2.0.0", - "husky": "^7.0.2", - "jest": "^27.2.0", + "https-pem": "^3.0.0", + "husky": "^8.0.1", + "import-fresh": "^3.3.0", + "jest": "^28.0.1", "jsfuzz": "^1.0.15", - "mocha": "^9.1.1", + "mocha": "^10.0.0", "p-timeout": "^3.2.0", "pre-commit": "^1.2.2", "proxy": "^1.0.2", "proxyquire": "^2.1.3", "semver": "^7.3.5", - "sinon": "^11.1.2", + "sinon": "^14.0.0", "snazzy": "^9.0.0", - "standard": "^16.0.3", - "tap": "^15.0.9", - "tsd": "^0.17.0", + "standard": "^17.0.0", + "table": "^6.8.0", + "tap": "^16.1.0", + "tsd": "^0.22.0", "wait-on": "^6.0.0" }, "engines": { diff --git a/deps/undici/src/types/connector.d.ts b/deps/undici/src/types/connector.d.ts index 0794903cf0879b..38016b00008091 100644 --- a/deps/undici/src/types/connector.d.ts +++ b/deps/undici/src/types/connector.d.ts @@ -1,16 +1,15 @@ -import { URL } from 'url' -import { TLSSocket, TlsOptions } from 'tls' -import { Socket } from 'net' +import {TLSSocket, ConnectionOptions} from 'tls' +import {IpcNetConnectOpts, Socket, TcpNetConnectOpts} from 'net' export = buildConnector declare function buildConnector (options?: buildConnector.BuildOptions): typeof buildConnector.connector declare namespace buildConnector { - export interface BuildOptions extends TlsOptions { + export type BuildOptions = (ConnectionOptions | TcpNetConnectOpts | IpcNetConnectOpts) & { maxCachedSessions?: number | null; socketPath?: string | null; timeout?: number | null; - servername?: string | null; + port?: number; } export interface Options { diff --git a/deps/undici/src/types/diagnostics-channel.d.ts b/deps/undici/src/types/diagnostics-channel.d.ts new file mode 100644 index 00000000000000..c6131482280dc6 --- /dev/null +++ b/deps/undici/src/types/diagnostics-channel.d.ts @@ -0,0 +1,67 @@ +import { Socket } from "net"; +import { URL } from "url"; +import { connector } from "./connector"; +import { HttpMethod } from "./dispatcher"; + +declare namespace DiagnosticsChannel { + interface Request { + origin?: string | URL; + completed: boolean; + method?: HttpMethod; + path: string; + headers: string; + addHeader(key: string, value: string): Request; + } + interface Response { + statusCode: number; + statusText: string; + headers: Array; + } + type Error = unknown; + interface ConnectParams { + host: URL["host"]; + hostname: URL["hostname"]; + protocol: URL["protocol"]; + port: URL["port"]; + servername: string | null; + } + type Connector = typeof connector; + export interface RequestCreateMessage { + request: Request; + } + export interface RequestBodySentMessage { + request: Request; + } + export interface RequestHeadersMessage { + request: Request; + response: Response; + } + export interface RequestTrailersMessage { + request: Request; + trailers: Array; + } + export interface RequestErrorMessage { + request: Request; + error: Error; + } + export interface ClientSendHeadersMessage { + request: Request; + headers: string; + socket: Socket; + } + export interface ClientBeforeConnectMessage { + connectParams: ConnectParams; + connector: Connector; + } + export interface ClientConnectedMessage { + socket: Socket; + connectParams: ConnectParams; + connector: Connector; + } + export interface ClientConnectErrorMessage { + error: Error; + socket: Socket; + connectParams: ConnectParams; + connector: Connector; + } +} diff --git a/deps/undici/src/types/dispatcher.d.ts b/deps/undici/src/types/dispatcher.d.ts index 0fe6cbfb9d4967..8744f04e2d7083 100644 --- a/deps/undici/src/types/dispatcher.d.ts +++ b/deps/undici/src/types/dispatcher.d.ts @@ -3,7 +3,8 @@ import { Duplex, Readable, Writable } from 'stream' import { EventEmitter } from 'events' import { IncomingHttpHeaders } from 'http' import { Blob } from 'buffer' -import BodyReadable from './readable' +import BodyReadable = require('./readable') +import { FormData } from './formdata' type AbortSignal = unknown; @@ -43,9 +44,11 @@ declare namespace Dispatcher { path: string; method: HttpMethod; /** Default: `null` */ - body?: string | Buffer | Uint8Array | Readable | null; + body?: string | Buffer | Uint8Array | Readable | null | FormData; /** Default: `null` */ headers?: IncomingHttpHeaders | string[] | null; + /** Query string params to be embedded in the request URL. Default: `null` */ + query?: Record; /** Whether the requests can be safely retried or not. If `false` the request won't be sent until all preceding requests in the pipeline have completed. Default: `true` if `method` is `HEAD` or `GET`. */ idempotent?: boolean; /** Upgrade the request. Should be used to specify the kind of upgrade i.e. `'Websocket'`. Default: `method === 'CONNECT' || null`. */ @@ -54,6 +57,8 @@ declare namespace Dispatcher { headersTimeout?: number | null; /** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use 0 to disable it entirely. Defaults to 30 seconds. */ bodyTimeout?: number | null; + /** Whether Undici should throw an error upon receiving a 4xx or 5xx response from the server. Defaults to false */ + throwOnError?: boolean; } export interface ConnectOptions { path: string; diff --git a/deps/undici/src/types/errors.d.ts b/deps/undici/src/types/errors.d.ts index 31997b05020490..ab0ecc801b4d5a 100644 --- a/deps/undici/src/types/errors.d.ts +++ b/deps/undici/src/types/errors.d.ts @@ -1,3 +1,5 @@ +import {IncomingHttpHeaders} from "http"; + export = Errors import { SocketInfo } from './client' @@ -16,6 +18,15 @@ declare namespace Errors { code: 'UND_ERR_BODY_TIMEOUT'; } + export class ResponseStatusCodeError extends UndiciError { + name: 'ResponseStatusCodeError'; + code: 'UND_ERR_RESPONSE_STATUS_CODE'; + body: null | Record | string + status: number + statusCode: number + headers: IncomingHttpHeaders | string[] | null; + } + /** A socket exceeds the `socketTimeout` option. */ export class SocketTimeoutError extends UndiciError { name: 'SocketTimeoutError'; diff --git a/deps/undici/src/types/fetch.d.ts b/deps/undici/src/types/fetch.d.ts index 2057c8c8e7f617..87980bed40b3df 100644 --- a/deps/undici/src/types/fetch.d.ts +++ b/deps/undici/src/types/fetch.d.ts @@ -4,8 +4,11 @@ import { Blob } from 'buffer' import { URL, URLSearchParams } from 'url' +import { ReadableStream } from 'stream/web' import { FormData } from './formdata' +import Dispatcher = require('./dispatcher') + export type RequestInfo = string | URL | Request export declare function fetch ( @@ -13,13 +16,6 @@ export declare function fetch ( init?: RequestInit ): Promise -declare class ControlledAsyncIterable implements AsyncIterable { - constructor (input: AsyncIterable | Iterable) - data: AsyncIterable - disturbed: boolean - readonly [Symbol.asyncIterator]: () => AsyncIterator -} - export type BodyInit = | ArrayBuffer | AsyncIterable @@ -32,7 +28,7 @@ export type BodyInit = | string export interface BodyMixin { - readonly body: ControlledAsyncIterable | null + readonly body: ReadableStream | null readonly bodyUsed: boolean readonly arrayBuffer: () => Promise @@ -42,9 +38,21 @@ export interface BodyMixin { readonly text: () => Promise } +export interface SpecIterator { + next(...args: [] | [TNext]): IteratorResult; +} + +export interface SpecIterableIterator extends SpecIterator { + [Symbol.iterator](): SpecIterableIterator; +} + +export interface SpecIterable { + [Symbol.iterator](): SpecIterator; +} + export type HeadersInit = string[][] | Record> | Headers -export declare class Headers implements Iterable<[string, string]> { +export declare class Headers implements SpecIterable<[string, string]> { constructor (init?: HeadersInit) readonly append: (name: string, value: string) => void readonly delete: (name: string) => void @@ -56,10 +64,10 @@ export declare class Headers implements Iterable<[string, string]> { thisArg?: unknown ) => void - readonly keys: () => IterableIterator - readonly values: () => IterableIterator - readonly entries: () => IterableIterator<[string, string]> - readonly [Symbol.iterator]: () => Iterator<[string, string]> + readonly keys: () => SpecIterableIterator + readonly values: () => SpecIterableIterator + readonly entries: () => SpecIterableIterator<[string, string]> + readonly [Symbol.iterator]: () => SpecIterator<[string, string]> } export type RequestCache = @@ -93,18 +101,19 @@ type RequestDestination = | 'xslt' export interface RequestInit { - readonly method?: string - readonly keepalive?: boolean - readonly headers?: HeadersInit - readonly body?: BodyInit - readonly redirect?: RequestRedirect - readonly integrity?: string - readonly signal?: AbortSignal - readonly credentials?: RequestCredentials - readonly mode?: RequestMode - readonly referrer?: string - readonly referrerPolicy?: ReferrerPolicy - readonly window?: null + method?: string + keepalive?: boolean + headers?: HeadersInit + body?: BodyInit + redirect?: RequestRedirect + integrity?: string + signal?: AbortSignal + credentials?: RequestCredentials + mode?: RequestMode + referrer?: string + referrerPolicy?: ReferrerPolicy + window?: null + dispatcher?: Dispatcher } export type ReferrerPolicy = @@ -139,7 +148,7 @@ export declare class Request implements BodyMixin { readonly keepalive: boolean readonly signal: AbortSignal - readonly body: ControlledAsyncIterable | null + readonly body: ReadableStream | null readonly bodyUsed: boolean readonly arrayBuffer: () => Promise @@ -178,7 +187,7 @@ export declare class Response implements BodyMixin { readonly url: string readonly redirected: boolean - readonly body: ControlledAsyncIterable | null + readonly body: ReadableStream | null readonly bodyUsed: boolean readonly arrayBuffer: () => Promise @@ -190,5 +199,6 @@ export declare class Response implements BodyMixin { readonly clone: () => Response static error (): Response + static json(data: any, init?: ResponseInit): Response static redirect (url: string | URL, status: ResponseRedirectStatus): Response } diff --git a/deps/undici/src/types/file.d.ts b/deps/undici/src/types/file.d.ts index 93695baa22f21c..c695b7ab0baf87 100644 --- a/deps/undici/src/types/file.d.ts +++ b/deps/undici/src/types/file.d.ts @@ -1,9 +1,14 @@ // Based on https://github.com/octet-stream/form-data/blob/2d0f0dc371517444ce1f22cdde13f51995d0953a/lib/File.ts (MIT) /// -import { Blob, BlobOptions } from 'buffer' +import { Blob } from 'buffer' -export interface FileOptions extends BlobOptions { +export interface BlobPropertyBag { + type?: string + endings?: 'native' | 'transparent' +} + +export interface FilePropertyBag extends BlobPropertyBag { /** * The last modified date of the file as the number of milliseconds since the Unix epoch (January 1, 1970 at midnight). Files without a known last modified date return the current date. */ @@ -18,7 +23,7 @@ export declare class File extends Blob { * @param fileName The name of the file. * @param options An options object containing optional attributes for the file. */ - constructor(fileBits: ReadonlyArray, fileName: string, options?: FileOptions) + constructor(fileBits: ReadonlyArray, fileName: string, options?: FilePropertyBag) /** * Name of the file referenced by the File object. diff --git a/deps/undici/src/types/formdata.d.ts b/deps/undici/src/types/formdata.d.ts index 2e652bacdb731f..df29a572d6bd4f 100644 --- a/deps/undici/src/types/formdata.d.ts +++ b/deps/undici/src/types/formdata.d.ts @@ -2,6 +2,7 @@ /// import { File } from './file' +import { SpecIterator, SpecIterableIterator } from './fetch' /** * A `string` or `File` that represents a single value from a set of `FormData` key-value pairs. @@ -73,32 +74,35 @@ export declare class FormData { delete(name: string): void /** - * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through all keys contained in this `FormData` object. - * Each key is a `string`. + * Executes given callback function for each field of the FormData instance */ - keys(): Generator + forEach: ( + callbackfn: (value: FormDataEntryValue, key: string, iterable: FormData) => void, + thisArg?: unknown + ) => void /** - * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through the `FormData` key/value pairs. - * The key of each pair is a string; the value is a [`FormDataValue`](https://developer.mozilla.org/en-US/docs/Web/API/FormDataEntryValue). + * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through all keys contained in this `FormData` object. + * Each key is a `string`. */ - entries(): Generator<[string, FormDataEntryValue]> + keys: () => SpecIterableIterator /** * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through all values contained in this object `FormData` object. * Each value is a [`FormDataValue`](https://developer.mozilla.org/en-US/docs/Web/API/FormDataEntryValue). */ - values(): Generator + values: () => SpecIterableIterator /** - * An alias for FormData#entries() + * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through the `FormData` key/value pairs. + * The key of each pair is a string; the value is a [`FormDataValue`](https://developer.mozilla.org/en-US/docs/Web/API/FormDataEntryValue). */ - [Symbol.iterator](): Generator<[string, FormDataEntryValue], void> + entries: () => SpecIterableIterator<[string, FormDataEntryValue]> /** - * Executes given callback function for each field of the FormData instance + * An alias for FormData#entries() */ - forEach(callback: (value: FormDataEntryValue, key: string, formData: FormData) => void, thisArg?: unknown): void + [Symbol.iterator]: () => SpecIterableIterator<[string, FormDataEntryValue]> readonly [Symbol.toStringTag]: string } diff --git a/deps/undici/src/types/mock-agent.d.ts b/deps/undici/src/types/mock-agent.d.ts index 2b673c489564c5..825d2aeff6dc80 100644 --- a/deps/undici/src/types/mock-agent.d.ts +++ b/deps/undici/src/types/mock-agent.d.ts @@ -1,9 +1,14 @@ import Agent = require('./agent') import Dispatcher = require('./dispatcher') -import { Interceptable } from './mock-interceptor' +import { Interceptable, MockInterceptor } from './mock-interceptor' +import MockDispatch = MockInterceptor.MockDispatch; export = MockAgent +interface PendingInterceptor extends MockDispatch { + origin: string; +} + /** A mocked Agent class that implements the Agent API. It allows one to intercept HTTP requests made through undici and return mocked responses instead. */ declare class MockAgent extends Dispatcher { constructor(options?: MockAgent.Options) @@ -26,6 +31,14 @@ declare class MockAgent boolean)): void; /** Causes all requests to throw when requests are not matched in a MockAgent intercept. */ disableNetConnect(): void; + pendingInterceptors(): PendingInterceptor[]; + assertNoPendingInterceptors(options?: { + pendingInterceptorsFormatter?: PendingInterceptorsFormatter; + }): void; +} + +interface PendingInterceptorsFormatter { + format(pendingInterceptors: readonly PendingInterceptor[]): string; } declare namespace MockAgent { diff --git a/deps/undici/src/types/mock-interceptor.d.ts b/deps/undici/src/types/mock-interceptor.d.ts index 2e4272176adb2d..8812960573f3e3 100644 --- a/deps/undici/src/types/mock-interceptor.d.ts +++ b/deps/undici/src/types/mock-interceptor.d.ts @@ -1,6 +1,6 @@ import { IncomingHttpHeaders } from 'http' -import Dispatcher from './dispatcher'; -import { Headers } from './fetch' +import Dispatcher = require('./dispatcher'); +import { BodyInit, Headers } from './fetch' export { Interceptable, @@ -26,7 +26,7 @@ declare class MockInterceptor { reply(replyOptionsCallback: MockInterceptor.MockReplyOptionsCallback): MockScope; reply( statusCode: number, - data: TData | Buffer | string | MockInterceptor.MockResponseDataHandler, + data?: TData | Buffer | string | MockInterceptor.MockResponseDataHandler, responseOptions?: MockInterceptor.MockResponseOptions ): MockScope; /** Mock an undici request by throwing the defined reply error. */ @@ -50,6 +50,8 @@ declare namespace MockInterceptor { body?: string | RegExp | ((body: string) => boolean); /** Headers to intercept on. */ headers?: Record boolean)> | ((headers: Record) => boolean); + /** Query params to intercept on */ + query?: Record; } export interface MockDispatch extends Options { times: number | null; @@ -71,7 +73,7 @@ declare namespace MockInterceptor { path: string; origin: string; method: string; - body?: string; + body?: BodyInit | Dispatcher.DispatchOptions['body']; headers: Headers; maxRedirections: number; } @@ -82,7 +84,7 @@ declare namespace MockInterceptor { export type MockReplyOptionsCallback = ( opts: MockResponseCallbackOptions - ) => { statusCode: number, data: TData | Buffer | string, responseOptions?: MockResponseOptions } + ) => { statusCode: number, data?: TData | Buffer | string, responseOptions?: MockResponseOptions } } interface Interceptable extends Dispatcher { diff --git a/deps/undici/src/types/proxy-agent.d.ts b/deps/undici/src/types/proxy-agent.d.ts index c22369e96ee1ec..30fef450215380 100644 --- a/deps/undici/src/types/proxy-agent.d.ts +++ b/deps/undici/src/types/proxy-agent.d.ts @@ -1,3 +1,4 @@ +import { TlsOptions } from 'tls' import Agent = require('./agent') import Dispatcher = require('./dispatcher') @@ -13,5 +14,8 @@ declare class ProxyAgent extends Dispatcher { declare namespace ProxyAgent { export interface Options extends Agent.Options { uri: string; + auth?: string; + requestTls?: TlsOptions & { servername?: string }; + proxyTls?: TlsOptions & { servername?: string }; } } diff --git a/deps/undici/undici.js b/deps/undici/undici.js index f955b9dc320038..f59f177536a324 100644 --- a/deps/undici/undici.js +++ b/deps/undici/undici.js @@ -1,78 +1,19 @@ "use strict"; +var __defProp = Object.defineProperty; var __getOwnPropNames = Object.getOwnPropertyNames; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; - -// lib/core/symbols.js -var require_symbols = __commonJS({ - "lib/core/symbols.js"(exports2, module2) { - module2.exports = { - kClose: Symbol("close"), - kDestroy: Symbol("destroy"), - kDispatch: Symbol("dispatch"), - kUrl: Symbol("url"), - kWriting: Symbol("writing"), - kResuming: Symbol("resuming"), - kQueue: Symbol("queue"), - kConnect: Symbol("connect"), - kConnecting: Symbol("connecting"), - kHeadersList: Symbol("headers list"), - kKeepAliveDefaultTimeout: Symbol("default keep alive timeout"), - kKeepAliveMaxTimeout: Symbol("max keep alive timeout"), - kKeepAliveTimeoutThreshold: Symbol("keep alive timeout threshold"), - kKeepAliveTimeoutValue: Symbol("keep alive timeout"), - kKeepAlive: Symbol("keep alive"), - kHeadersTimeout: Symbol("headers timeout"), - kBodyTimeout: Symbol("body timeout"), - kServerName: Symbol("server name"), - kHost: Symbol("host"), - kNoRef: Symbol("no ref"), - kBodyUsed: Symbol("used"), - kRunning: Symbol("running"), - kBlocking: Symbol("blocking"), - kPending: Symbol("pending"), - kSize: Symbol("size"), - kBusy: Symbol("busy"), - kQueued: Symbol("queued"), - kFree: Symbol("free"), - kConnected: Symbol("connected"), - kClosed: Symbol("closed"), - kNeedDrain: Symbol("need drain"), - kReset: Symbol("reset"), - kDestroyed: Symbol("destroyed"), - kMaxHeadersSize: Symbol("max headers size"), - kRunningIdx: Symbol("running index"), - kPendingIdx: Symbol("pending index"), - kError: Symbol("error"), - kClients: Symbol("clients"), - kClient: Symbol("client"), - kParser: Symbol("parser"), - kOnDestroyed: Symbol("destroy callbacks"), - kPipelining: Symbol("pipelinig"), - kSocket: Symbol("socket"), - kHostHeader: Symbol("host header"), - kConnector: Symbol("connector"), - kStrictContentLength: Symbol("strict content length"), - kMaxRedirections: Symbol("maxRedirections"), - kMaxRequests: Symbol("maxRequestsPerClient"), - kProxy: Symbol("proxy agent options"), - kCounter: Symbol("socket request counter") - }; - } -}); +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; // lib/core/errors.js var require_errors = __commonJS({ "lib/core/errors.js"(exports2, module2) { "use strict"; - var AbortError = class extends Error { - constructor() { - super("The operation was aborted"); - this.code = "ABORT_ERR"; - this.name = "AbortError"; - } - }; var UndiciError = class extends Error { constructor(message) { super(message); @@ -116,10 +57,23 @@ var require_errors = __commonJS({ this.code = "UND_ERR_BODY_TIMEOUT"; } }; - var InvalidArgumentError2 = class extends UndiciError { + var ResponseStatusCodeError = class extends UndiciError { + constructor(message, statusCode, headers, body) { + super(message); + Error.captureStackTrace(this, ResponseStatusCodeError); + this.name = "ResponseStatusCodeError"; + this.message = message || "Response Status Code Error"; + this.code = "UND_ERR_RESPONSE_STATUS_CODE"; + this.body = body; + this.status = statusCode; + this.statusCode = statusCode; + this.headers = headers; + } + }; + var InvalidArgumentError = class extends UndiciError { constructor(message) { super(message); - Error.captureStackTrace(this, InvalidArgumentError2); + Error.captureStackTrace(this, InvalidArgumentError); this.name = "InvalidArgumentError"; this.message = message || "Invalid Argument Error"; this.code = "UND_ERR_INVALID_ARG"; @@ -170,15 +124,6 @@ var require_errors = __commonJS({ this.code = "UND_ERR_RES_CONTENT_LENGTH_MISMATCH"; } }; - var TrailerMismatchError = class extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, TrailerMismatchError); - this.name = "TrailerMismatchError"; - this.message = message || "Trailers does not match trailer header"; - this.code = "UND_ERR_TRAILER_MISMATCH"; - } - }; var ClientDestroyedError = class extends UndiciError { constructor(message) { super(message); @@ -235,7 +180,6 @@ var require_errors = __commonJS({ } }; module2.exports = { - AbortError, HTTPParserError, UndiciError, HeadersTimeoutError, @@ -243,8 +187,8 @@ var require_errors = __commonJS({ BodyTimeoutError, RequestContentLengthMismatchError, ConnectTimeoutError, - TrailerMismatchError, - InvalidArgumentError: InvalidArgumentError2, + ResponseStatusCodeError, + InvalidArgumentError, InvalidReturnValueError, RequestAbortedError, ClientDestroyedError, @@ -258,5842 +202,4833 @@ var require_errors = __commonJS({ } }); -// lib/core/util.js -var require_util = __commonJS({ - "lib/core/util.js"(exports2, module2) { +// lib/core/symbols.js +var require_symbols = __commonJS({ + "lib/core/symbols.js"(exports2, module2) { + module2.exports = { + kClose: Symbol("close"), + kDestroy: Symbol("destroy"), + kDispatch: Symbol("dispatch"), + kUrl: Symbol("url"), + kWriting: Symbol("writing"), + kResuming: Symbol("resuming"), + kQueue: Symbol("queue"), + kConnect: Symbol("connect"), + kConnecting: Symbol("connecting"), + kHeadersList: Symbol("headers list"), + kKeepAliveDefaultTimeout: Symbol("default keep alive timeout"), + kKeepAliveMaxTimeout: Symbol("max keep alive timeout"), + kKeepAliveTimeoutThreshold: Symbol("keep alive timeout threshold"), + kKeepAliveTimeoutValue: Symbol("keep alive timeout"), + kKeepAlive: Symbol("keep alive"), + kHeadersTimeout: Symbol("headers timeout"), + kBodyTimeout: Symbol("body timeout"), + kServerName: Symbol("server name"), + kHost: Symbol("host"), + kNoRef: Symbol("no ref"), + kBodyUsed: Symbol("used"), + kRunning: Symbol("running"), + kBlocking: Symbol("blocking"), + kPending: Symbol("pending"), + kSize: Symbol("size"), + kBusy: Symbol("busy"), + kQueued: Symbol("queued"), + kFree: Symbol("free"), + kConnected: Symbol("connected"), + kClosed: Symbol("closed"), + kNeedDrain: Symbol("need drain"), + kReset: Symbol("reset"), + kDestroyed: Symbol("destroyed"), + kMaxHeadersSize: Symbol("max headers size"), + kRunningIdx: Symbol("running index"), + kPendingIdx: Symbol("pending index"), + kError: Symbol("error"), + kClients: Symbol("clients"), + kClient: Symbol("client"), + kParser: Symbol("parser"), + kOnDestroyed: Symbol("destroy callbacks"), + kPipelining: Symbol("pipelinig"), + kSocket: Symbol("socket"), + kHostHeader: Symbol("host header"), + kConnector: Symbol("connector"), + kStrictContentLength: Symbol("strict content length"), + kMaxRedirections: Symbol("maxRedirections"), + kMaxRequests: Symbol("maxRequestsPerClient"), + kProxy: Symbol("proxy agent options"), + kCounter: Symbol("socket request counter") + }; + } +}); + +// lib/dispatcher.js +var require_dispatcher = __commonJS({ + "lib/dispatcher.js"(exports2, module2) { "use strict"; - var assert = require("assert"); - var { kDestroyed, kBodyUsed } = require_symbols(); - var { IncomingMessage } = require("http"); - var stream = require("stream"); - var net = require("net"); - var { InvalidArgumentError: InvalidArgumentError2 } = require_errors(); - var { Blob } = require("buffer"); - var nodeUtil = require("util"); - function nop() { - } - function isStream(obj) { - return obj && typeof obj.pipe === "function"; - } - function isBlobLike(object) { - return Blob && object instanceof Blob || object && typeof object === "object" && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && /^(Blob|File)$/.test(object[Symbol.toStringTag]); - } - function parseURL(url) { - if (typeof url === "string") { - url = new URL(url); - } - if (!url || typeof url !== "object") { - throw new InvalidArgumentError2("invalid url"); - } - if (url.port != null && url.port !== "" && !Number.isFinite(parseInt(url.port))) { - throw new InvalidArgumentError2("invalid port"); - } - if (url.path != null && typeof url.path !== "string") { - throw new InvalidArgumentError2("invalid path"); - } - if (url.pathname != null && typeof url.pathname !== "string") { - throw new InvalidArgumentError2("invalid pathname"); + var EventEmitter = require("events"); + var Dispatcher = class extends EventEmitter { + dispatch() { + throw new Error("not implemented"); } - if (url.hostname != null && typeof url.hostname !== "string") { - throw new InvalidArgumentError2("invalid hostname"); + close() { + throw new Error("not implemented"); } - if (url.origin != null && typeof url.origin !== "string") { - throw new InvalidArgumentError2("invalid origin"); + destroy() { + throw new Error("not implemented"); } - if (!/^https?:/.test(url.origin || url.protocol)) { - throw new InvalidArgumentError2("invalid protocol"); + }; + module2.exports = Dispatcher; + } +}); + +// lib/dispatcher-base.js +var require_dispatcher_base = __commonJS({ + "lib/dispatcher-base.js"(exports2, module2) { + "use strict"; + var Dispatcher = require_dispatcher(); + var { + ClientDestroyedError, + ClientClosedError, + InvalidArgumentError + } = require_errors(); + var { kDestroy, kClose, kDispatch } = require_symbols(); + var kDestroyed = Symbol("destroyed"); + var kClosed = Symbol("closed"); + var kOnDestroyed = Symbol("onDestroyed"); + var kOnClosed = Symbol("onClosed"); + var DispatcherBase = class extends Dispatcher { + constructor() { + super(); + this[kDestroyed] = false; + this[kOnDestroyed] = []; + this[kClosed] = false; + this[kOnClosed] = []; } - if (!(url instanceof URL)) { - const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80; - const origin = url.origin != null ? url.origin : `${url.protocol}//${url.hostname}:${port}`; - const path = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`; - url = new URL(path, origin); + get destroyed() { + return this[kDestroyed]; } - return url; - } - function parseOrigin(url) { - url = parseURL(url); - if (url.pathname !== "/" || url.search || url.hash) { - throw new InvalidArgumentError2("invalid url"); + get closed() { + return this[kClosed]; } - return url; - } - function getHostname(host) { - if (host[0] === "[") { - const idx2 = host.indexOf("]"); - assert(idx2 !== -1); - return host.substr(1, idx2 - 1); + close(callback) { + if (callback === void 0) { + return new Promise((resolve, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve(data); + }); + }); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (this[kDestroyed]) { + queueMicrotask(() => callback(new ClientDestroyedError(), null)); + return; + } + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + this[kClosed] = true; + this[kOnClosed].push(callback); + const onClosed = () => { + const callbacks = this[kOnClosed]; + this[kOnClosed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kClose]().then(() => this.destroy()).then(() => { + queueMicrotask(onClosed); + }); } - const idx = host.indexOf(":"); - if (idx === -1) - return host; - return host.substr(0, idx); - } - function getServerName(host) { - if (!host) { - return null; + destroy(err, callback) { + if (typeof err === "function") { + callback = err; + err = null; + } + if (callback === void 0) { + return new Promise((resolve, reject) => { + this.destroy(err, (err2, data) => { + return err2 ? reject(err2) : resolve(data); + }); + }); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + if (!err) { + err = new ClientDestroyedError(); + } + this[kDestroyed] = true; + this[kOnDestroyed].push(callback); + const onDestroyed = () => { + const callbacks = this[kOnDestroyed]; + this[kOnDestroyed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kDestroy](err).then(() => { + queueMicrotask(onDestroyed); + }); } - assert.strictEqual(typeof host, "string"); - const servername = getHostname(host); - if (net.isIP(servername)) { - return ""; + dispatch(opts, handler) { + if (!handler || typeof handler !== "object") { + throw new InvalidArgumentError("handler must be an object"); + } + try { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("opts must be an object."); + } + if (this[kDestroyed]) { + throw new ClientDestroyedError(); + } + if (this[kClosed]) { + throw new ClientClosedError(); + } + return this[kDispatch](opts, handler); + } catch (err) { + if (typeof handler.onError !== "function") { + throw new InvalidArgumentError("invalid onError method"); + } + handler.onError(err); + return false; + } } - return servername; - } - function deepClone(obj) { - return JSON.parse(JSON.stringify(obj)); - } - function isAsyncIterable(obj) { - return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function"); - } - function isIterable(obj) { - return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function")); - } - function bodyLength(body) { - if (body == null) { - return 0; - } else if (isStream(body)) { - const state = body._readableState; - return state && state.ended === true && Number.isFinite(state.length) ? state.length : null; - } else if (isBlobLike(body)) { - return body.size != null ? body.size : null; - } else if (isBuffer(body)) { - return body.byteLength; + }; + module2.exports = DispatcherBase; + } +}); + +// lib/node/fixed-queue.js +var require_fixed_queue = __commonJS({ + "lib/node/fixed-queue.js"(exports2, module2) { + "use strict"; + var kSize = 2048; + var kMask = kSize - 1; + var FixedCircularBuffer = class { + constructor() { + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; } - return null; - } - function isDestroyed(stream2) { - return !stream2 || !!(stream2.destroyed || stream2[kDestroyed]); - } - function isReadableAborted(stream2) { - const state = stream2 && stream2._readableState; - return isDestroyed(stream2) && state && !state.endEmitted; - } - function destroy(stream2, err) { - if (!isStream(stream2) || isDestroyed(stream2)) { - return; + isEmpty() { + return this.top === this.bottom; } - if (typeof stream2.destroy === "function") { - if (Object.getPrototypeOf(stream2).constructor === IncomingMessage) { - stream2.socket = null; - } - stream2.destroy(err); - } else if (err) { - process.nextTick((stream3, err2) => { - stream3.emit("error", err2); - }, stream2, err); + isFull() { + return (this.top + 1 & kMask) === this.bottom; } - if (stream2.destroyed !== true) { - stream2[kDestroyed] = true; + push(data) { + this.list[this.top] = data; + this.top = this.top + 1 & kMask; } - } - var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; - function parseKeepAliveTimeout(val) { - const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); - return m ? parseInt(m[1], 10) * 1e3 : null; - } - function parseHeaders(headers, obj = {}) { - for (let i = 0; i < headers.length; i += 2) { - const key = headers[i].toString().toLowerCase(); - let val = obj[key]; - if (!val) { - obj[key] = headers[i + 1].toString(); - } else { - if (!Array.isArray(val)) { - val = [val]; - obj[key] = val; - } - val.push(headers[i + 1].toString()); + shift() { + const nextItem = this.list[this.bottom]; + if (nextItem === void 0) + return null; + this.list[this.bottom] = void 0; + this.bottom = this.bottom + 1 & kMask; + return nextItem; + } + }; + module2.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); + } + isEmpty() { + return this.head.isEmpty(); + } + push(data) { + if (this.head.isFull()) { + this.head = this.head.next = new FixedCircularBuffer(); } + this.head.push(data); } - return obj; - } - function parseRawHeaders(headers) { - return headers.map((header) => header.toString()); - } - function isBuffer(buffer) { - return buffer instanceof Uint8Array || Buffer.isBuffer(buffer); - } - function validateHandler(handler, method, upgrade) { - if (!handler || typeof handler !== "object") { - throw new InvalidArgumentError2("handler must be an object"); + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + this.tail = tail.next; + } + return next; } - if (typeof handler.onConnect !== "function") { - throw new InvalidArgumentError2("invalid onConnect method"); + }; + } +}); + +// lib/pool-stats.js +var require_pool_stats = __commonJS({ + "lib/pool-stats.js"(exports2, module2) { + var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols(); + var kPool = Symbol("pool"); + var PoolStats = class { + constructor(pool) { + this[kPool] = pool; } - if (typeof handler.onError !== "function") { - throw new InvalidArgumentError2("invalid onError method"); + get connected() { + return this[kPool][kConnected]; } - if (typeof handler.onBodySent !== "function" && handler.onBodySent !== void 0) { - throw new InvalidArgumentError2("invalid onBodySent method"); + get free() { + return this[kPool][kFree]; } - if (upgrade || method === "CONNECT") { - if (typeof handler.onUpgrade !== "function") { - throw new InvalidArgumentError2("invalid onUpgrade method"); - } - } else { - if (typeof handler.onHeaders !== "function") { - throw new InvalidArgumentError2("invalid onHeaders method"); - } - if (typeof handler.onData !== "function") { - throw new InvalidArgumentError2("invalid onData method"); - } - if (typeof handler.onComplete !== "function") { - throw new InvalidArgumentError2("invalid onComplete method"); - } + get pending() { + return this[kPool][kPending]; } - } - function isDisturbed(body) { - return !!(body && (stream.isDisturbed ? stream.isDisturbed(body) || body[kBodyUsed] : body[kBodyUsed] || body.readableDidRead || body._readableState && body._readableState.dataEmitted || isReadableAborted(body))); - } - function isErrored(body) { - return !!(body && (stream.isErrored ? stream.isErrored(body) : /state: 'errored'/.test(nodeUtil.inspect(body)))); - } - function isReadable(body) { - return !!(body && (stream.isReadable ? stream.isReadable(body) : /state: 'readable'/.test(nodeUtil.inspect(body)))); - } - function getSocketInfo(socket) { - return { - localAddress: socket.localAddress, - localPort: socket.localPort, - remoteAddress: socket.remoteAddress, - remotePort: socket.remotePort, - remoteFamily: socket.remoteFamily, - timeout: socket.timeout, - bytesWritten: socket.bytesWritten, - bytesRead: socket.bytesRead - }; - } - var ReadableStream; - function ReadableStreamFrom(iterable) { - if (!ReadableStream) { - ReadableStream = require("stream/web").ReadableStream; + get queued() { + return this[kPool][kQueued]; } - if (ReadableStream.from) { - return ReadableStream.from(iterable); + get running() { + return this[kPool][kRunning]; + } + get size() { + return this[kPool][kSize]; } - let iterator; - return new ReadableStream({ - async start() { - iterator = iterable[Symbol.asyncIterator](); - }, - async pull(controller) { - const { done, value } = await iterator.next(); - if (done) { - queueMicrotask(() => { - controller.close(); - }); - } else { - const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); - controller.enqueue(new Uint8Array(buf)); - } - return controller.desiredSize > 0; - }, - async cancel(reason) { - await iterator.return(); - } - }, 0); - } - var kEnumerableProperty = /* @__PURE__ */ Object.create(null); - kEnumerableProperty.enumerable = true; - module2.exports = { - kEnumerableProperty, - nop, - isDisturbed, - isErrored, - isReadable, - toUSVString: nodeUtil.toUSVString || ((val) => `${val}`), - isReadableAborted, - isBlobLike, - parseOrigin, - parseURL, - getServerName, - isStream, - isIterable, - isAsyncIterable, - isDestroyed, - parseRawHeaders, - parseHeaders, - parseKeepAliveTimeout, - destroy, - bodyLength, - deepClone, - ReadableStreamFrom, - isBuffer, - validateHandler, - getSocketInfo }; + module2.exports = PoolStats; } }); -// lib/core/request.js -var require_request = __commonJS({ - "lib/core/request.js"(exports2, module2) { +// lib/pool-base.js +var require_pool_base = __commonJS({ + "lib/pool-base.js"(exports2, module2) { "use strict"; - var { - InvalidArgumentError: InvalidArgumentError2, - NotSupportedError - } = require_errors(); - var util2 = require_util(); - var assert = require("assert"); - var kHandler = Symbol("handler"); - var channels = {}; - try { - const diagnosticsChannel = require("diagnostics_channel"); - channels.create = diagnosticsChannel.channel("undici:request:create"); - channels.bodySent = diagnosticsChannel.channel("undici:request:bodySent"); - channels.headers = diagnosticsChannel.channel("undici:request:headers"); - channels.trailers = diagnosticsChannel.channel("undici:request:trailers"); - channels.error = diagnosticsChannel.channel("undici:request:error"); - } catch { - channels.create = { hasSubscribers: false }; - channels.bodySent = { hasSubscribers: false }; - channels.headers = { hasSubscribers: false }; - channels.trailers = { hasSubscribers: false }; - channels.error = { hasSubscribers: false }; - } - var Request = class { - constructor(origin, { - path, - method, - body, - headers, - idempotent, - blocking, - upgrade, - headersTimeout, - bodyTimeout - }, handler) { - if (typeof path !== "string") { - throw new InvalidArgumentError2("path must be a string"); - } else if (path[0] !== "/" && !(path.startsWith("http://") || path.startsWith("https://"))) { - throw new InvalidArgumentError2("path must be an absolute URL or start with a slash"); - } - if (typeof method !== "string") { - throw new InvalidArgumentError2("method must be a string"); - } - if (upgrade && typeof upgrade !== "string") { - throw new InvalidArgumentError2("upgrade must be a string"); - } - if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { - throw new InvalidArgumentError2("invalid headersTimeout"); - } - if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { - throw new InvalidArgumentError2("invalid bodyTimeout"); - } - this.headersTimeout = headersTimeout; - this.bodyTimeout = bodyTimeout; - this.method = method; - if (body == null) { - this.body = null; - } else if (util2.isStream(body)) { - this.body = body; - } else if (body instanceof DataView) { - this.body = body.buffer.byteLength ? Buffer.from(body.buffer) : null; - } else if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) { - this.body = body.byteLength ? Buffer.from(body) : null; - } else if (util2.isBuffer(body)) { - this.body = body.byteLength ? body : null; - } else if (typeof body === "string") { - this.body = body.length ? Buffer.from(body) : null; - } else if (util2.isIterable(body) || util2.isBlobLike(body)) { - this.body = body; - } else { - throw new InvalidArgumentError2("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable"); - } - this.completed = false; - this.aborted = false; - this.upgrade = upgrade || null; - this.path = path; - this.origin = origin; - this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent; - this.blocking = blocking == null ? false : blocking; - this.host = null; - this.contentLength = null; - this.contentType = null; - this.headers = ""; - if (Array.isArray(headers)) { - if (headers.length % 2 !== 0) { - throw new InvalidArgumentError2("headers array must be even"); + var DispatcherBase = require_dispatcher_base(); + var FixedQueue = require_fixed_queue(); + var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols(); + var PoolStats = require_pool_stats(); + var kClients = Symbol("clients"); + var kNeedDrain = Symbol("needDrain"); + var kQueue = Symbol("queue"); + var kClosedResolve = Symbol("closed resolve"); + var kOnDrain = Symbol("onDrain"); + var kOnConnect = Symbol("onConnect"); + var kOnDisconnect = Symbol("onDisconnect"); + var kOnConnectionError = Symbol("onConnectionError"); + var kGetDispatcher = Symbol("get dispatcher"); + var kAddClient = Symbol("add client"); + var kRemoveClient = Symbol("remove client"); + var kStats = Symbol("stats"); + var PoolBase = class extends DispatcherBase { + constructor() { + super(); + this[kQueue] = new FixedQueue(); + this[kClients] = []; + this[kQueued] = 0; + const pool = this; + this[kOnDrain] = function onDrain(origin, targets) { + const queue = pool[kQueue]; + let needDrain = false; + while (!needDrain) { + const item = queue.shift(); + if (!item) { + break; + } + pool[kQueued]--; + needDrain = !this.dispatch(item.opts, item.handler); } - for (let i = 0; i < headers.length; i += 2) { - processHeader(this, headers[i], headers[i + 1]); + this[kNeedDrain] = needDrain; + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false; + pool.emit("drain", origin, [pool, ...targets]); } - } else if (headers && typeof headers === "object") { - const keys = Object.keys(headers); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - processHeader(this, key, headers[key]); + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise.all(pool[kClients].map((c) => c.close())).then(pool[kClosedResolve]); } - } else if (headers != null) { - throw new InvalidArgumentError2("headers must be an object or an array"); - } - if (util2.isBlobLike(body) && this.contentType == null && body.type) { - this.contentType = body.type; - this.headers += `content-type: ${body.type}\r -`; - } - util2.validateHandler(handler, method, upgrade); - this.servername = util2.getServerName(this.host); - this[kHandler] = handler; - if (channels.create.hasSubscribers) { - channels.create.publish({ request: this }); - } + }; + this[kOnConnect] = (origin, targets) => { + pool.emit("connect", origin, [pool, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + pool.emit("disconnect", origin, [pool, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + pool.emit("connectionError", origin, [pool, ...targets], err); + }; + this[kStats] = new PoolStats(this); } - onBodySent(chunk) { - if (this[kHandler].onBodySent) { - try { - this[kHandler].onBodySent(chunk); - } catch (err) { - this.onError(err); - } - } + get [kBusy]() { + return this[kNeedDrain]; } - onRequestSent() { - if (channels.bodySent.hasSubscribers) { - channels.bodySent.publish({ request: this }); - } + get [kConnected]() { + return this[kClients].filter((client) => client[kConnected]).length; } - onConnect(abort) { - assert(!this.aborted); - assert(!this.completed); - return this[kHandler].onConnect(abort); + get [kFree]() { + return this[kClients].filter((client) => client[kConnected] && !client[kNeedDrain]).length; } - onHeaders(statusCode, headers, resume, statusText) { - assert(!this.aborted); - assert(!this.completed); - if (channels.headers.hasSubscribers) { - channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }); + get [kPending]() { + let ret = this[kQueued]; + for (const { [kPending]: pending } of this[kClients]) { + ret += pending; } - return this[kHandler].onHeaders(statusCode, headers, resume, statusText); - } - onData(chunk) { - assert(!this.aborted); - assert(!this.completed); - return this[kHandler].onData(chunk); - } - onUpgrade(statusCode, headers, socket) { - assert(!this.aborted); - assert(!this.completed); - return this[kHandler].onUpgrade(statusCode, headers, socket); + return ret; } - onComplete(trailers) { - assert(!this.aborted); - this.completed = true; - if (channels.trailers.hasSubscribers) { - channels.trailers.publish({ request: this, trailers }); + get [kRunning]() { + let ret = 0; + for (const { [kRunning]: running } of this[kClients]) { + ret += running; } - return this[kHandler].onComplete(trailers); + return ret; } - onError(error) { - if (channels.error.hasSubscribers) { - channels.error.publish({ request: this, error }); - } - if (this.aborted) { - return; + get [kSize]() { + let ret = this[kQueued]; + for (const { [kSize]: size } of this[kClients]) { + ret += size; } - this.aborted = true; - return this[kHandler].onError(error); + return ret; } - addHeader(key, value) { - processHeader(this, key, value); - return this; + get stats() { + return this[kStats]; } - }; - function processHeader(request, key, val) { - if (val && typeof val === "object") { - throw new InvalidArgumentError2(`invalid ${key} header`); - } else if (val === void 0) { - return; + async [kClose]() { + if (this[kQueue].isEmpty()) { + return Promise.all(this[kClients].map((c) => c.close())); + } else { + return new Promise((resolve) => { + this[kClosedResolve] = resolve; + }); + } } - if (request.host === null && key.length === 4 && key.toLowerCase() === "host") { - request.host = val; - } else if (request.contentLength === null && key.length === 14 && key.toLowerCase() === "content-length") { - request.contentLength = parseInt(val, 10); - if (!Number.isFinite(request.contentLength)) { - throw new InvalidArgumentError2("invalid content-length header"); + async [kDestroy](err) { + while (true) { + const item = this[kQueue].shift(); + if (!item) { + break; + } + item.handler.onError(err); } - } else if (request.contentType === null && key.length === 12 && key.toLowerCase() === "content-type") { - request.contentType = val; - request.headers += `${key}: ${val}\r -`; - } else if (key.length === 17 && key.toLowerCase() === "transfer-encoding") { - throw new InvalidArgumentError2("invalid transfer-encoding header"); - } else if (key.length === 10 && key.toLowerCase() === "connection") { - throw new InvalidArgumentError2("invalid connection header"); - } else if (key.length === 10 && key.toLowerCase() === "keep-alive") { - throw new InvalidArgumentError2("invalid keep-alive header"); - } else if (key.length === 7 && key.toLowerCase() === "upgrade") { - throw new InvalidArgumentError2("invalid upgrade header"); - } else if (key.length === 6 && key.toLowerCase() === "expect") { - throw new NotSupportedError("expect header not supported"); - } else { - request.headers += `${key}: ${val}\r -`; + return Promise.all(this[kClients].map((c) => c.destroy(err))); } - } - module2.exports = Request; - } -}); - -// lib/dispatcher.js -var require_dispatcher = __commonJS({ - "lib/dispatcher.js"(exports2, module2) { - "use strict"; - var EventEmitter = require("events"); - var Dispatcher2 = class extends EventEmitter { - dispatch() { - throw new Error("not implemented"); + [kDispatch](opts, handler) { + const dispatcher = this[kGetDispatcher](); + if (!dispatcher) { + this[kNeedDrain] = true; + this[kQueue].push({ opts, handler }); + this[kQueued]++; + } else if (!dispatcher.dispatch(opts, handler)) { + dispatcher[kNeedDrain] = true; + this[kNeedDrain] = !this[kGetDispatcher](); + } + return !this[kNeedDrain]; } - close() { - throw new Error("not implemented"); + [kAddClient](client) { + client.on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]); + this[kClients].push(client); + if (this[kNeedDrain]) { + process.nextTick(() => { + if (this[kNeedDrain]) { + this[kOnDrain](client[kUrl], [this, client]); + } + }); + } + return this; } - destroy() { - throw new Error("not implemented"); + [kRemoveClient](client) { + client.close(() => { + const idx = this[kClients].indexOf(client); + if (idx !== -1) { + this[kClients].splice(idx, 1); + } + }); + this[kNeedDrain] = this[kClients].some((dispatcher) => !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true); } }; - module2.exports = Dispatcher2; + module2.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher + }; } }); -// lib/dispatcher-base.js -var require_dispatcher_base = __commonJS({ - "lib/dispatcher-base.js"(exports2, module2) { +// lib/core/util.js +var require_util = __commonJS({ + "lib/core/util.js"(exports2, module2) { "use strict"; - var Dispatcher2 = require_dispatcher(); - var { - ClientDestroyedError, - ClientClosedError, - InvalidArgumentError: InvalidArgumentError2 - } = require_errors(); - var { kDestroy, kClose, kDispatch } = require_symbols(); - var kDestroyed = Symbol("destroyed"); - var kClosed = Symbol("closed"); - var kOnDestroyed = Symbol("onDestroyed"); - var kOnClosed = Symbol("onClosed"); - var DispatcherBase = class extends Dispatcher2 { - constructor() { - super(); - this[kDestroyed] = false; - this[kOnDestroyed] = []; - this[kClosed] = false; - this[kOnClosed] = []; - } - get destroyed() { - return this[kDestroyed]; + var assert = require("assert"); + var { kDestroyed, kBodyUsed } = require_symbols(); + var { IncomingMessage } = require("http"); + var stream = require("stream"); + var net = require("net"); + var { InvalidArgumentError } = require_errors(); + var { Blob } = require("buffer"); + var nodeUtil = require("util"); + function nop() { + } + function isStream(obj) { + return obj && typeof obj.pipe === "function"; + } + function isBlobLike(object) { + return Blob && object instanceof Blob || object && typeof object === "object" && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && /^(Blob|File)$/.test(object[Symbol.toStringTag]); + } + function isObject(val) { + return val !== null && typeof val === "object"; + } + function encode(val) { + return encodeURIComponent(val); + } + function buildURL(url, queryParams) { + if (url.includes("?") || url.includes("#")) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".'); } - get closed() { - return this[kClosed]; + if (!isObject(queryParams)) { + throw new Error("Query params must be an object"); } - close(callback) { - if (callback === void 0) { - return new Promise((resolve, reject) => { - this.close((err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - if (typeof callback !== "function") { - throw new InvalidArgumentError2("invalid callback"); + const parts = []; + for (let [key, val] of Object.entries(queryParams)) { + if (val === null || typeof val === "undefined") { + continue; } - if (this[kDestroyed]) { - queueMicrotask(() => callback(new ClientDestroyedError(), null)); - return; + if (!Array.isArray(val)) { + val = [val]; } - if (this[kClosed]) { - if (this[kOnClosed]) { - this[kOnClosed].push(callback); - } else { - queueMicrotask(() => callback(null, null)); + for (const v of val) { + if (isObject(v)) { + throw new Error("Passing object as a query param is not supported, please serialize to string up-front"); } - return; + parts.push(encode(key) + "=" + encode(v)); } - this[kClosed] = true; - this[kOnClosed].push(callback); - const onClosed = () => { - const callbacks = this[kOnClosed]; - this[kOnClosed] = null; - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null); - } - }; - this[kClose]().then(() => this.destroy()).then(() => { - queueMicrotask(onClosed); - }); } - destroy(err, callback) { - if (typeof err === "function") { - callback = err; - err = null; - } - if (callback === void 0) { - return new Promise((resolve, reject) => { - this.destroy(err, (err2, data) => { - return err2 ? reject(err2) : resolve(data); - }); - }); - } - if (typeof callback !== "function") { - throw new InvalidArgumentError2("invalid callback"); - } - if (this[kDestroyed]) { - if (this[kOnDestroyed]) { - this[kOnDestroyed].push(callback); - } else { - queueMicrotask(() => callback(null, null)); - } - return; - } - if (!err) { - err = new ClientDestroyedError(); - } - this[kDestroyed] = true; - this[kOnDestroyed].push(callback); - const onDestroyed = () => { - const callbacks = this[kOnDestroyed]; - this[kOnDestroyed] = null; - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null); - } - }; - this[kDestroy](err).then(() => { - queueMicrotask(onDestroyed); - }); + const serializedParams = parts.join("&"); + if (serializedParams) { + url += "?" + serializedParams; } - dispatch(opts, handler) { - if (!handler || typeof handler !== "object") { - throw new InvalidArgumentError2("handler must be an object"); - } - try { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError2("opts must be an object."); - } - if (this[kDestroyed]) { - throw new ClientDestroyedError(); - } - if (this[kClosed]) { - throw new ClientClosedError(); - } - return this[kDispatch](opts, handler); - } catch (err) { - if (typeof handler.onError !== "function") { - throw new InvalidArgumentError2("invalid onError method"); - } - handler.onError(err); - return false; - } + return url; + } + function parseURL(url) { + if (typeof url === "string") { + url = new URL(url); } - }; - module2.exports = DispatcherBase; - } -}); - -// lib/handler/redirect.js -var require_redirect = __commonJS({ - "lib/handler/redirect.js"(exports2, module2) { - "use strict"; - var util2 = require_util(); - var { kBodyUsed } = require_symbols(); - var assert = require("assert"); - var { InvalidArgumentError: InvalidArgumentError2 } = require_errors(); - var EE = require("events"); - var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; - var kBody = Symbol("body"); - var BodyAsyncIterable = class { - constructor(body) { - this[kBody] = body; - this[kBodyUsed] = false; + if (!url || typeof url !== "object") { + throw new InvalidArgumentError("invalid url"); } - async *[Symbol.asyncIterator]() { - assert(!this[kBodyUsed], "disturbed"); - this[kBodyUsed] = true; - yield* this[kBody]; + if (url.port != null && url.port !== "" && !Number.isFinite(parseInt(url.port))) { + throw new InvalidArgumentError("invalid port"); } - }; - var RedirectHandler = class { - constructor(dispatcher, maxRedirections, opts, handler) { - if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { - throw new InvalidArgumentError2("maxRedirections must be a positive number"); - } - util2.validateHandler(handler, opts.method, opts.upgrade); - this.dispatcher = dispatcher; - this.location = null; - this.abort = null; - this.opts = { ...opts, maxRedirections: 0 }; - this.maxRedirections = maxRedirections; - this.handler = handler; - this.history = []; - if (util2.isStream(this.opts.body)) { - if (util2.bodyLength(this.opts.body) === 0) { - this.opts.body.on("data", function() { - assert(false); - }); - } - if (typeof this.opts.body.readableDidRead !== "boolean") { - this.opts.body[kBodyUsed] = false; - EE.prototype.on.call(this.opts.body, "data", function() { - this[kBodyUsed] = true; - }); - } - } else if (this.opts.body && typeof this.opts.body.pipeTo === "function") { - this.opts.body = new BodyAsyncIterable(this.opts.body); - } else if (this.opts.body && typeof this.opts.body !== "string" && !ArrayBuffer.isView(this.opts.body) && util2.isIterable(this.opts.body)) { - this.opts.body = new BodyAsyncIterable(this.opts.body); - } + if (url.path != null && typeof url.path !== "string") { + throw new InvalidArgumentError("invalid path"); } - onConnect(abort) { - this.abort = abort; - this.handler.onConnect(abort, { history: this.history }); + if (url.pathname != null && typeof url.pathname !== "string") { + throw new InvalidArgumentError("invalid pathname"); } - onUpgrade(statusCode, headers, socket) { - this.handler.onUpgrade(statusCode, headers, socket); + if (url.hostname != null && typeof url.hostname !== "string") { + throw new InvalidArgumentError("invalid hostname"); } - onError(error) { - this.handler.onError(error); + if (url.origin != null && typeof url.origin !== "string") { + throw new InvalidArgumentError("invalid origin"); } - onHeaders(statusCode, headers, resume, statusText) { - this.location = this.history.length >= this.maxRedirections || util2.isDisturbed(this.opts.body) ? null : parseLocation(statusCode, headers); - if (this.opts.origin) { - this.history.push(new URL(this.opts.path, this.opts.origin)); - } - if (!this.location) { - return this.handler.onHeaders(statusCode, headers, resume, statusText); - } - const { origin, pathname, search } = util2.parseURL(new URL(this.location, this.opts.origin)); - const path = search ? `${pathname}${search}` : pathname; - this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); - this.opts.path = path; - this.opts.origin = origin; - this.opts.maxRedirections = 0; - if (statusCode === 303 && this.opts.method !== "HEAD") { - this.opts.method = "GET"; - this.opts.body = null; - } + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError("invalid protocol"); } - onData(chunk) { - if (this.location) { - } else { - return this.handler.onData(chunk); - } + if (!(url instanceof URL)) { + const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80; + const origin = url.origin != null ? url.origin : `${url.protocol}//${url.hostname}:${port}`; + const path = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`; + url = new URL(path, origin); } - onComplete(trailers) { - if (this.location) { - this.location = null; - this.abort = null; - this.dispatcher.dispatch(this.opts, this); - } else { - this.handler.onComplete(trailers); - } + return url; + } + function parseOrigin(url) { + url = parseURL(url); + if (url.pathname !== "/" || url.search || url.hash) { + throw new InvalidArgumentError("invalid url"); } - onBodySent(chunk) { - if (this.handler.onBodySent) { - this.handler.onBodySent(chunk); - } + return url; + } + function getHostname(host) { + if (host[0] === "[") { + const idx2 = host.indexOf("]"); + assert(idx2 !== -1); + return host.substr(1, idx2 - 1); } - }; - function parseLocation(statusCode, headers) { - if (redirectableStatusCodes.indexOf(statusCode) === -1) { + const idx = host.indexOf(":"); + if (idx === -1) + return host; + return host.substr(0, idx); + } + function getServerName(host) { + if (!host) { return null; } - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].toString().toLowerCase() === "location") { - return headers[i + 1]; + assert.strictEqual(typeof host, "string"); + const servername = getHostname(host); + if (net.isIP(servername)) { + return ""; + } + return servername; + } + function deepClone(obj) { + return JSON.parse(JSON.stringify(obj)); + } + function isAsyncIterable(obj) { + return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function"); + } + function isIterable(obj) { + return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function")); + } + function bodyLength(body) { + if (body == null) { + return 0; + } else if (isStream(body)) { + const state = body._readableState; + return state && state.ended === true && Number.isFinite(state.length) ? state.length : null; + } else if (isBlobLike(body)) { + return body.size != null ? body.size : null; + } else if (isBuffer(body)) { + return body.byteLength; + } + return null; + } + function isDestroyed(stream2) { + return !stream2 || !!(stream2.destroyed || stream2[kDestroyed]); + } + function isReadableAborted(stream2) { + const state = stream2 && stream2._readableState; + return isDestroyed(stream2) && state && !state.endEmitted; + } + function destroy(stream2, err) { + if (!isStream(stream2) || isDestroyed(stream2)) { + return; + } + if (typeof stream2.destroy === "function") { + if (Object.getPrototypeOf(stream2).constructor === IncomingMessage) { + stream2.socket = null; } + stream2.destroy(err); + } else if (err) { + process.nextTick((stream3, err2) => { + stream3.emit("error", err2); + }, stream2, err); + } + if (stream2.destroyed !== true) { + stream2[kDestroyed] = true; } } - function shouldRemoveHeader(header, removeContent, unknownOrigin) { - return header.length === 4 && header.toString().toLowerCase() === "host" || removeContent && header.toString().toLowerCase().indexOf("content-") === 0 || unknownOrigin && header.length === 13 && header.toString().toLowerCase() === "authorization"; + var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; + function parseKeepAliveTimeout(val) { + const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); + return m ? parseInt(m[1], 10) * 1e3 : null; } - function cleanRequestHeaders(headers, removeContent, unknownOrigin) { - const ret = []; - if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { - ret.push(headers[i], headers[i + 1]); + function parseHeaders(headers, obj = {}) { + for (let i = 0; i < headers.length; i += 2) { + const key = headers[i].toString().toLowerCase(); + let val = obj[key]; + if (!val) { + obj[key] = headers[i + 1].toString(); + } else { + if (!Array.isArray(val)) { + val = [val]; + obj[key] = val; } + val.push(headers[i + 1].toString()); } - } else if (headers && typeof headers === "object") { - for (const key of Object.keys(headers)) { - if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { - ret.push(key, headers[key]); - } + } + return obj; + } + function parseRawHeaders(headers) { + return headers.map((header) => header.toString()); + } + function isBuffer(buffer) { + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer); + } + function validateHandler(handler, method, upgrade) { + if (!handler || typeof handler !== "object") { + throw new InvalidArgumentError("handler must be an object"); + } + if (typeof handler.onConnect !== "function") { + throw new InvalidArgumentError("invalid onConnect method"); + } + if (typeof handler.onError !== "function") { + throw new InvalidArgumentError("invalid onError method"); + } + if (typeof handler.onBodySent !== "function" && handler.onBodySent !== void 0) { + throw new InvalidArgumentError("invalid onBodySent method"); + } + if (upgrade || method === "CONNECT") { + if (typeof handler.onUpgrade !== "function") { + throw new InvalidArgumentError("invalid onUpgrade method"); } } else { - assert(headers == null, "headers must be an object or an array"); + if (typeof handler.onHeaders !== "function") { + throw new InvalidArgumentError("invalid onHeaders method"); + } + if (typeof handler.onData !== "function") { + throw new InvalidArgumentError("invalid onData method"); + } + if (typeof handler.onComplete !== "function") { + throw new InvalidArgumentError("invalid onComplete method"); + } } - return ret; } - module2.exports = RedirectHandler; - } -}); - -// lib/core/connect.js -var require_connect = __commonJS({ - "lib/core/connect.js"(exports2, module2) { - "use strict"; - var net = require("net"); - var assert = require("assert"); - var util2 = require_util(); - var { InvalidArgumentError: InvalidArgumentError2, ConnectTimeoutError } = require_errors(); - var tls; - function buildConnector2({ maxCachedSessions, socketPath, timeout, ...opts }) { - if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { - throw new InvalidArgumentError2("maxCachedSessions must be a positive integer or zero"); + function isDisturbed(body) { + return !!(body && (stream.isDisturbed ? stream.isDisturbed(body) || body[kBodyUsed] : body[kBodyUsed] || body.readableDidRead || body._readableState && body._readableState.dataEmitted || isReadableAborted(body))); + } + function isErrored(body) { + return !!(body && (stream.isErrored ? stream.isErrored(body) : /state: 'errored'/.test(nodeUtil.inspect(body)))); + } + function isReadable(body) { + return !!(body && (stream.isReadable ? stream.isReadable(body) : /state: 'readable'/.test(nodeUtil.inspect(body)))); + } + function getSocketInfo(socket) { + return { + localAddress: socket.localAddress, + localPort: socket.localPort, + remoteAddress: socket.remoteAddress, + remotePort: socket.remotePort, + remoteFamily: socket.remoteFamily, + timeout: socket.timeout, + bytesWritten: socket.bytesWritten, + bytesRead: socket.bytesRead + }; + } + var ReadableStream; + function ReadableStreamFrom(iterable) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; } - const options = { path: socketPath, ...opts }; - const sessionCache = /* @__PURE__ */ new Map(); - timeout = timeout == null ? 1e4 : timeout; - maxCachedSessions = maxCachedSessions == null ? 100 : maxCachedSessions; - return function connect({ hostname, host, protocol, port, servername }, callback) { - let socket; - if (protocol === "https:") { - if (!tls) { - tls = require("tls"); - } - servername = servername || options.servername || util2.getServerName(host) || null; - const sessionKey = servername || hostname; - const session = sessionCache.get(sessionKey) || null; - assert(sessionKey); - socket = tls.connect({ - highWaterMark: 16384, - ...options, - servername, - session, - port: port || 443, - host: hostname - }); - socket.on("session", function(session2) { - if (maxCachedSessions === 0) { - return; - } - if (sessionCache.size >= maxCachedSessions) { - const { value: oldestKey } = sessionCache.keys().next(); - sessionCache.delete(oldestKey); - } - sessionCache.set(sessionKey, session2); - }).on("error", function(err) { - if (sessionKey && err.code !== "UND_ERR_INFO") { - sessionCache.delete(sessionKey); - } - }); - } else { - socket = net.connect({ - highWaterMark: 64 * 1024, - ...options, - port: port || 80, - host: hostname - }); - } - const timeoutId = timeout ? setTimeout(onConnectTimeout, timeout, socket) : null; - socket.setNoDelay(true).once(protocol === "https:" ? "secureConnect" : "connect", function() { - clearTimeout(timeoutId); - if (callback) { - const cb = callback; - callback = null; - cb(null, this); - } - }).on("error", function(err) { - clearTimeout(timeoutId); - if (callback) { - const cb = callback; - callback = null; - cb(err); + if (ReadableStream.from) { + return ReadableStream.from(iterable); + } + let iterator; + return new ReadableStream({ + async start() { + iterator = iterable[Symbol.asyncIterator](); + }, + async pull(controller) { + const { done, value } = await iterator.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + }); + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); + controller.enqueue(new Uint8Array(buf)); } - }); - return socket; - }; + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator.return(); + } + }, 0); } - function onConnectTimeout(socket) { - util2.destroy(socket, new ConnectTimeoutError()); + function isFormDataLike(chunk) { + return chunk && chunk.constructor && chunk.constructor.name === "FormData"; } - module2.exports = buildConnector2; + var kEnumerableProperty = /* @__PURE__ */ Object.create(null); + kEnumerableProperty.enumerable = true; + module2.exports = { + kEnumerableProperty, + nop, + isDisturbed, + isErrored, + isReadable, + toUSVString: nodeUtil.toUSVString || ((val) => `${val}`), + isReadableAborted, + isBlobLike, + parseOrigin, + parseURL, + getServerName, + isStream, + isIterable, + isAsyncIterable, + isDestroyed, + parseRawHeaders, + parseHeaders, + parseKeepAliveTimeout, + destroy, + bodyLength, + deepClone, + ReadableStreamFrom, + isBuffer, + validateHandler, + getSocketInfo, + isFormDataLike, + buildURL + }; } }); -// lib/llhttp/utils.js -var require_utils = __commonJS({ - "lib/llhttp/utils.js"(exports2) { +// lib/fetch/constants.js +var require_constants = __commonJS({ + "lib/fetch/constants.js"(exports2, module2) { "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.enumToMap = void 0; - function enumToMap(obj) { - const res = {}; - Object.keys(obj).forEach((key) => { - const value = obj[key]; - if (typeof value === "number") { - res[key] = value; - } - }); - return res; - } - exports2.enumToMap = enumToMap; + var corsSafeListedMethods = ["GET", "HEAD", "POST"]; + var nullBodyStatus = [101, 204, 205, 304]; + var redirectStatus = [301, 302, 303, 307, 308]; + var referrerPolicy = [ + "", + "no-referrer", + "no-referrer-when-downgrade", + "same-origin", + "origin", + "strict-origin", + "origin-when-cross-origin", + "strict-origin-when-cross-origin", + "unsafe-url" + ]; + var requestRedirect = ["follow", "manual", "error"]; + var safeMethods = ["GET", "HEAD", "OPTIONS", "TRACE"]; + var requestMode = ["navigate", "same-origin", "no-cors", "cors"]; + var requestCredentials = ["omit", "same-origin", "include"]; + var requestCache = [ + "default", + "no-store", + "reload", + "no-cache", + "force-cache", + "only-if-cached" + ]; + var requestBodyHeader = [ + "content-encoding", + "content-language", + "content-location", + "content-type" + ]; + var forbiddenMethods = ["CONNECT", "TRACE", "TRACK"]; + var subresource = [ + "audio", + "audioworklet", + "font", + "image", + "manifest", + "paintworklet", + "script", + "style", + "track", + "video", + "xslt", + "" + ]; + var DOMException = globalThis.DOMException ?? (() => { + try { + atob("~"); + } catch (err) { + return Object.getPrototypeOf(err).constructor; + } + })(); + module2.exports = { + DOMException, + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods + }; } }); -// lib/llhttp/constants.js -var require_constants = __commonJS({ - "lib/llhttp/constants.js"(exports2) { +// lib/fetch/symbols.js +var require_symbols2 = __commonJS({ + "lib/fetch/symbols.js"(exports2, module2) { "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.SPECIAL_HEADERS = exports2.HEADER_STATE = exports2.MINOR = exports2.MAJOR = exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS = exports2.TOKEN = exports2.STRICT_TOKEN = exports2.HEX = exports2.URL_CHAR = exports2.STRICT_URL_CHAR = exports2.USERINFO_CHARS = exports2.MARK = exports2.ALPHANUM = exports2.NUM = exports2.HEX_MAP = exports2.NUM_MAP = exports2.ALPHA = exports2.FINISH = exports2.H_METHOD_MAP = exports2.METHOD_MAP = exports2.METHODS_RTSP = exports2.METHODS_ICE = exports2.METHODS_HTTP = exports2.METHODS = exports2.LENIENT_FLAGS = exports2.FLAGS = exports2.TYPE = exports2.ERROR = void 0; - var utils_1 = require_utils(); - var ERROR; - (function(ERROR2) { - ERROR2[ERROR2["OK"] = 0] = "OK"; - ERROR2[ERROR2["INTERNAL"] = 1] = "INTERNAL"; - ERROR2[ERROR2["STRICT"] = 2] = "STRICT"; - ERROR2[ERROR2["LF_EXPECTED"] = 3] = "LF_EXPECTED"; - ERROR2[ERROR2["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; - ERROR2[ERROR2["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; - ERROR2[ERROR2["INVALID_METHOD"] = 6] = "INVALID_METHOD"; - ERROR2[ERROR2["INVALID_URL"] = 7] = "INVALID_URL"; - ERROR2[ERROR2["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; - ERROR2[ERROR2["INVALID_VERSION"] = 9] = "INVALID_VERSION"; - ERROR2[ERROR2["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; - ERROR2[ERROR2["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; - ERROR2[ERROR2["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; - ERROR2[ERROR2["INVALID_STATUS"] = 13] = "INVALID_STATUS"; - ERROR2[ERROR2["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; - ERROR2[ERROR2["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; - ERROR2[ERROR2["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; - ERROR2[ERROR2["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; - ERROR2[ERROR2["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; - ERROR2[ERROR2["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; - ERROR2[ERROR2["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; - ERROR2[ERROR2["PAUSED"] = 21] = "PAUSED"; - ERROR2[ERROR2["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; - ERROR2[ERROR2["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; - ERROR2[ERROR2["USER"] = 24] = "USER"; - })(ERROR = exports2.ERROR || (exports2.ERROR = {})); - var TYPE; - (function(TYPE2) { - TYPE2[TYPE2["BOTH"] = 0] = "BOTH"; - TYPE2[TYPE2["REQUEST"] = 1] = "REQUEST"; - TYPE2[TYPE2["RESPONSE"] = 2] = "RESPONSE"; - })(TYPE = exports2.TYPE || (exports2.TYPE = {})); - var FLAGS; - (function(FLAGS2) { - FLAGS2[FLAGS2["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; - FLAGS2[FLAGS2["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; - FLAGS2[FLAGS2["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; - FLAGS2[FLAGS2["CHUNKED"] = 8] = "CHUNKED"; - FLAGS2[FLAGS2["UPGRADE"] = 16] = "UPGRADE"; - FLAGS2[FLAGS2["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; - FLAGS2[FLAGS2["SKIPBODY"] = 64] = "SKIPBODY"; - FLAGS2[FLAGS2["TRAILING"] = 128] = "TRAILING"; - FLAGS2[FLAGS2["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; - })(FLAGS = exports2.FLAGS || (exports2.FLAGS = {})); - var LENIENT_FLAGS; - (function(LENIENT_FLAGS2) { - LENIENT_FLAGS2[LENIENT_FLAGS2["HEADERS"] = 1] = "HEADERS"; - LENIENT_FLAGS2[LENIENT_FLAGS2["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; - LENIENT_FLAGS2[LENIENT_FLAGS2["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; - })(LENIENT_FLAGS = exports2.LENIENT_FLAGS || (exports2.LENIENT_FLAGS = {})); - var METHODS; - (function(METHODS2) { - METHODS2[METHODS2["DELETE"] = 0] = "DELETE"; - METHODS2[METHODS2["GET"] = 1] = "GET"; - METHODS2[METHODS2["HEAD"] = 2] = "HEAD"; - METHODS2[METHODS2["POST"] = 3] = "POST"; - METHODS2[METHODS2["PUT"] = 4] = "PUT"; - METHODS2[METHODS2["CONNECT"] = 5] = "CONNECT"; - METHODS2[METHODS2["OPTIONS"] = 6] = "OPTIONS"; - METHODS2[METHODS2["TRACE"] = 7] = "TRACE"; - METHODS2[METHODS2["COPY"] = 8] = "COPY"; - METHODS2[METHODS2["LOCK"] = 9] = "LOCK"; - METHODS2[METHODS2["MKCOL"] = 10] = "MKCOL"; - METHODS2[METHODS2["MOVE"] = 11] = "MOVE"; - METHODS2[METHODS2["PROPFIND"] = 12] = "PROPFIND"; - METHODS2[METHODS2["PROPPATCH"] = 13] = "PROPPATCH"; - METHODS2[METHODS2["SEARCH"] = 14] = "SEARCH"; - METHODS2[METHODS2["UNLOCK"] = 15] = "UNLOCK"; - METHODS2[METHODS2["BIND"] = 16] = "BIND"; - METHODS2[METHODS2["REBIND"] = 17] = "REBIND"; - METHODS2[METHODS2["UNBIND"] = 18] = "UNBIND"; - METHODS2[METHODS2["ACL"] = 19] = "ACL"; - METHODS2[METHODS2["REPORT"] = 20] = "REPORT"; - METHODS2[METHODS2["MKACTIVITY"] = 21] = "MKACTIVITY"; - METHODS2[METHODS2["CHECKOUT"] = 22] = "CHECKOUT"; - METHODS2[METHODS2["MERGE"] = 23] = "MERGE"; - METHODS2[METHODS2["M-SEARCH"] = 24] = "M-SEARCH"; - METHODS2[METHODS2["NOTIFY"] = 25] = "NOTIFY"; - METHODS2[METHODS2["SUBSCRIBE"] = 26] = "SUBSCRIBE"; - METHODS2[METHODS2["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; - METHODS2[METHODS2["PATCH"] = 28] = "PATCH"; - METHODS2[METHODS2["PURGE"] = 29] = "PURGE"; - METHODS2[METHODS2["MKCALENDAR"] = 30] = "MKCALENDAR"; - METHODS2[METHODS2["LINK"] = 31] = "LINK"; - METHODS2[METHODS2["UNLINK"] = 32] = "UNLINK"; - METHODS2[METHODS2["SOURCE"] = 33] = "SOURCE"; - METHODS2[METHODS2["PRI"] = 34] = "PRI"; - METHODS2[METHODS2["DESCRIBE"] = 35] = "DESCRIBE"; - METHODS2[METHODS2["ANNOUNCE"] = 36] = "ANNOUNCE"; - METHODS2[METHODS2["SETUP"] = 37] = "SETUP"; - METHODS2[METHODS2["PLAY"] = 38] = "PLAY"; - METHODS2[METHODS2["PAUSE"] = 39] = "PAUSE"; - METHODS2[METHODS2["TEARDOWN"] = 40] = "TEARDOWN"; - METHODS2[METHODS2["GET_PARAMETER"] = 41] = "GET_PARAMETER"; - METHODS2[METHODS2["SET_PARAMETER"] = 42] = "SET_PARAMETER"; - METHODS2[METHODS2["REDIRECT"] = 43] = "REDIRECT"; - METHODS2[METHODS2["RECORD"] = 44] = "RECORD"; - METHODS2[METHODS2["FLUSH"] = 45] = "FLUSH"; - })(METHODS = exports2.METHODS || (exports2.METHODS = {})); - exports2.METHODS_HTTP = [ - METHODS.DELETE, - METHODS.GET, - METHODS.HEAD, - METHODS.POST, - METHODS.PUT, - METHODS.CONNECT, - METHODS.OPTIONS, - METHODS.TRACE, - METHODS.COPY, - METHODS.LOCK, - METHODS.MKCOL, - METHODS.MOVE, - METHODS.PROPFIND, - METHODS.PROPPATCH, - METHODS.SEARCH, - METHODS.UNLOCK, - METHODS.BIND, - METHODS.REBIND, - METHODS.UNBIND, - METHODS.ACL, - METHODS.REPORT, - METHODS.MKACTIVITY, - METHODS.CHECKOUT, - METHODS.MERGE, - METHODS["M-SEARCH"], - METHODS.NOTIFY, - METHODS.SUBSCRIBE, - METHODS.UNSUBSCRIBE, - METHODS.PATCH, - METHODS.PURGE, - METHODS.MKCALENDAR, - METHODS.LINK, - METHODS.UNLINK, - METHODS.PRI, - METHODS.SOURCE - ]; - exports2.METHODS_ICE = [ - METHODS.SOURCE - ]; - exports2.METHODS_RTSP = [ - METHODS.OPTIONS, - METHODS.DESCRIBE, - METHODS.ANNOUNCE, - METHODS.SETUP, - METHODS.PLAY, - METHODS.PAUSE, - METHODS.TEARDOWN, - METHODS.GET_PARAMETER, - METHODS.SET_PARAMETER, - METHODS.REDIRECT, - METHODS.RECORD, - METHODS.FLUSH, - METHODS.GET, - METHODS.POST - ]; - exports2.METHOD_MAP = utils_1.enumToMap(METHODS); - exports2.H_METHOD_MAP = {}; - Object.keys(exports2.METHOD_MAP).forEach((key) => { - if (/^H/.test(key)) { - exports2.H_METHOD_MAP[key] = exports2.METHOD_MAP[key]; - } - }); - var FINISH; - (function(FINISH2) { - FINISH2[FINISH2["SAFE"] = 0] = "SAFE"; - FINISH2[FINISH2["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; - FINISH2[FINISH2["UNSAFE"] = 2] = "UNSAFE"; - })(FINISH = exports2.FINISH || (exports2.FINISH = {})); - exports2.ALPHA = []; - for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) { - exports2.ALPHA.push(String.fromCharCode(i)); - exports2.ALPHA.push(String.fromCharCode(i + 32)); - } - exports2.NUM_MAP = { - 0: 0, - 1: 1, - 2: 2, - 3: 3, - 4: 4, - 5: 5, - 6: 6, - 7: 7, - 8: 8, - 9: 9 - }; - exports2.HEX_MAP = { - 0: 0, - 1: 1, - 2: 2, - 3: 3, - 4: 4, - 5: 5, - 6: 6, - 7: 7, - 8: 8, - 9: 9, - A: 10, - B: 11, - C: 12, - D: 13, - E: 14, - F: 15, - a: 10, - b: 11, - c: 12, - d: 13, - e: 14, - f: 15 - }; - exports2.NUM = [ - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9" - ]; - exports2.ALPHANUM = exports2.ALPHA.concat(exports2.NUM); - exports2.MARK = ["-", "_", ".", "!", "~", "*", "'", "(", ")"]; - exports2.USERINFO_CHARS = exports2.ALPHANUM.concat(exports2.MARK).concat(["%", ";", ":", "&", "=", "+", "$", ","]); - exports2.STRICT_URL_CHAR = [ - "!", - '"', - "$", - "%", - "&", - "'", - "(", - ")", - "*", - "+", - ",", - "-", - ".", - "/", - ":", - ";", - "<", - "=", - ">", - "@", - "[", - "\\", - "]", - "^", - "_", - "`", - "{", - "|", - "}", - "~" - ].concat(exports2.ALPHANUM); - exports2.URL_CHAR = exports2.STRICT_URL_CHAR.concat([" ", "\f"]); - for (let i = 128; i <= 255; i++) { - exports2.URL_CHAR.push(i); - } - exports2.HEX = exports2.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]); - exports2.STRICT_TOKEN = [ - "!", - "#", - "$", - "%", - "&", - "'", - "*", - "+", - "-", - ".", - "^", - "_", - "`", - "|", - "~" - ].concat(exports2.ALPHANUM); - exports2.TOKEN = exports2.STRICT_TOKEN.concat([" "]); - exports2.HEADER_CHARS = [" "]; - for (let i = 32; i <= 255; i++) { - if (i !== 127) { - exports2.HEADER_CHARS.push(i); - } - } - exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS.filter((c) => c !== 44); - exports2.MAJOR = exports2.NUM_MAP; - exports2.MINOR = exports2.MAJOR; - var HEADER_STATE; - (function(HEADER_STATE2) { - HEADER_STATE2[HEADER_STATE2["GENERAL"] = 0] = "GENERAL"; - HEADER_STATE2[HEADER_STATE2["CONNECTION"] = 1] = "CONNECTION"; - HEADER_STATE2[HEADER_STATE2["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; - HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; - HEADER_STATE2[HEADER_STATE2["UPGRADE"] = 4] = "UPGRADE"; - HEADER_STATE2[HEADER_STATE2["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; - HEADER_STATE2[HEADER_STATE2["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; - HEADER_STATE2[HEADER_STATE2["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; - HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; - })(HEADER_STATE = exports2.HEADER_STATE || (exports2.HEADER_STATE = {})); - exports2.SPECIAL_HEADERS = { - "connection": HEADER_STATE.CONNECTION, - "content-length": HEADER_STATE.CONTENT_LENGTH, - "proxy-connection": HEADER_STATE.CONNECTION, - "transfer-encoding": HEADER_STATE.TRANSFER_ENCODING, - "upgrade": HEADER_STATE.UPGRADE - }; - } -}); - -// lib/llhttp/llhttp.wasm.js -var require_llhttp_wasm = __commonJS({ - "lib/llhttp/llhttp.wasm.js"(exports2, module2) { - module2.exports = "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzk4AwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAYGAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAAMEBQFwAQ4OBQMBAAIGCAF/AUGgtwQLB/UEHwZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAJGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAKGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQA1DGxsaHR0cF9hbGxvYwAMBm1hbGxvYwA6C2xsaHR0cF9mcmVlAA0EZnJlZQA8D2xsaHR0cF9nZXRfdHlwZQAOFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAPFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAQEWxsaHR0cF9nZXRfbWV0aG9kABEWbGxodHRwX2dldF9zdGF0dXNfY29kZQASEmxsaHR0cF9nZXRfdXBncmFkZQATDGxsaHR0cF9yZXNldAAUDmxsaHR0cF9leGVjdXRlABUUbGxodHRwX3NldHRpbmdzX2luaXQAFg1sbGh0dHBfZmluaXNoABcMbGxodHRwX3BhdXNlABgNbGxodHRwX3Jlc3VtZQAZG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAaEGxsaHR0cF9nZXRfZXJybm8AGxdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAcF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uAB0UbGxodHRwX2dldF9lcnJvcl9wb3MAHhFsbGh0dHBfZXJybm9fbmFtZQAfEmxsaHR0cF9tZXRob2RfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mADMJEwEAQQELDQECAwQFCwYHLiooJCYK56QCOAIACwgAEIiAgIAACxkAIAAQtoCAgAAaIAAgAjYCNCAAIAE6ACgLHAAgACAALwEyIAAtAC4gABC1gICAABCAgICAAAspAQF/QTgQuoCAgAAiARC2gICAABogAUGAiICAADYCNCABIAA6ACggAQsKACAAELyAgIAACwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BMgsHACAALQAuC0UBBH8gACgCGCEBIAAtAC0hAiAALQAoIQMgACgCNCEEIAAQtoCAgAAaIAAgBDYCNCAAIAM6ACggACACOgAtIAAgATYCGAsRACAAIAEgASACahC3gICAAAtFACAAQgA3AgAgAEEwakIANwIAIABBKGpCADcCACAAQSBqQgA3AgAgAEEYakIANwIAIABBEGpCADcCACAAQQhqQgA3AgALZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI0IgFFDQAgASgCHCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQv4CAgAAACyAAQa+RgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQbSTgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBGUkNABC/gICAAAALIABBAnRB6JqAgABqKAIACyIAAkAgAEEuSQ0AEL+AgIAAAAsgAEECdEHMm4CAAGooAgALFgAgACAALQAtQf4BcSABQQBHcjoALQsZACAAIAAtAC1B/QFxIAFBAEdBAXRyOgAtCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI0IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZyOgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIoIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCNCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEHSioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCLCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBjZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAjAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI0IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcOQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAI0IgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAhQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCHCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB0oiAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAiAiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL9AEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARBCHENAAJAIARBgARxRQ0AAkAgAC0AKEEBRw0AQQUhBSAALQAtQQJxRQ0CC0EEDwsCQCAEQSBxDQACQCAALQAoQQFGDQAgAC8BMiIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQBBBCEFIARBiARxQYAERg0CIARBKHFFDQILQQAPC0EAQQMgACkDIFAbIQULIAULXQECf0EAIQECQCAALQAoQQFGDQAgAC8BMiICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6IBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMiIFQZx/akHkAEkNACAFQcwBRg0AIAVBsAJGDQAgBEHAAHENAEEAIQMgBEGIBHFBgARGDQAgBEEocUEARyEDCyAAQQA7ATAgAEEAOgAvIAMLlAEBAn8CQAJAAkAgAC0AKkUNACAALQArRQ0AQQAhASAALwEwIgJBAnFFDQEMAgtBACEBIAAvATAiAkEBcUUNAQtBASEBIAAtAChBAUYNACAALwEyIgBBnH9qQeQASQ0AIABBzAFGDQAgAEGwAkYNACACQcAAcQ0AQQAhASACQYgEcUGABEYNACACQShxQQBHIQELIAELTwAgAEEYakIANwMAIABCADcDACAAQTBqQgA3AwAgAEEoakIANwMAIABBIGpCADcDACAAQRBqQgA3AwAgAEEIakIANwMAIABBuAE2AhxBAAt7AQF/AkAgACgCDCIDDQACQCAAKAIERQ0AIAAgATYCBAsCQCAAIAEgAhC4gICAACIDDQAgACgCDA8LIAAgAzYCHEEAIQMgACgCBCIBRQ0AIAAgASACIAAoAggRgYCAgAAAIgFFDQAgACACNgIUIAAgATYCDCABIQMLIAML8soBAxl/A34FfyOAgICAAEEQayIDJICAgIAAIAEhBCABIQUgASEGIAEhByABIQggASEJIAEhCiABIQsgASEMIAEhDSABIQ4gASEPIAEhECABIREgASESIAEhEyABIRQgASEVIAEhFiABIRcgASEYIAEhGSABIRoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAhwiG0F/ag64AbUBAbQBAgMEBQYHCAkKCwwNDg8QuwG6ARESE7MBFBUWFxgZGhscHR4fICGyAbEBIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5OrYBOzw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BALcBC0EAIRsMrwELQRAhGwyuAQtBDyEbDK0BC0ERIRsMrAELQRIhGwyrAQtBFSEbDKoBC0EWIRsMqQELQRchGwyoAQtBGCEbDKcBC0EZIRsMpgELQQghGwylAQtBGiEbDKQBC0EbIRsMowELQRQhGwyiAQtBEyEbDKEBC0EcIRsMoAELQR0hGwyfAQtBHiEbDJ4BC0EfIRsMnQELQaoBIRsMnAELQasBIRsMmwELQSEhGwyaAQtBIiEbDJkBC0EjIRsMmAELQSQhGwyXAQtBJSEbDJYBC0GtASEbDJUBC0EmIRsMlAELQSohGwyTAQtBDiEbDJIBC0EnIRsMkQELQSghGwyQAQtBKSEbDI8BC0EuIRsMjgELQSshGwyNAQtBrgEhGwyMAQtBDSEbDIsBC0EMIRsMigELQS8hGwyJAQtBCyEbDIgBC0EsIRsMhwELQS0hGwyGAQtBCiEbDIUBC0ExIRsMhAELQTAhGwyDAQtBCSEbDIIBC0EgIRsMgQELQTIhGwyAAQtBMyEbDH8LQTQhGwx+C0E1IRsMfQtBNiEbDHwLQTchGwx7C0E4IRsMegtBOSEbDHkLQTohGwx4C0GsASEbDHcLQTshGwx2C0E8IRsMdQtBPSEbDHQLQT4hGwxzC0E/IRsMcgtBwAAhGwxxC0HBACEbDHALQcIAIRsMbwtBwwAhGwxuC0HEACEbDG0LQQchGwxsC0HFACEbDGsLQQYhGwxqC0HGACEbDGkLQQUhGwxoC0HHACEbDGcLQQQhGwxmC0HIACEbDGULQckAIRsMZAtBygAhGwxjC0HLACEbDGILQQMhGwxhC0HMACEbDGALQc0AIRsMXwtBzgAhGwxeC0HQACEbDF0LQc8AIRsMXAtB0QAhGwxbC0HSACEbDFoLQQIhGwxZC0HTACEbDFgLQdQAIRsMVwtB1QAhGwxWC0HWACEbDFULQdcAIRsMVAtB2AAhGwxTC0HZACEbDFILQdoAIRsMUQtB2wAhGwxQC0HcACEbDE8LQd0AIRsMTgtB3gAhGwxNC0HfACEbDEwLQeAAIRsMSwtB4QAhGwxKC0HiACEbDEkLQeMAIRsMSAtB5AAhGwxHC0HlACEbDEYLQeYAIRsMRQtB5wAhGwxEC0HoACEbDEMLQekAIRsMQgtB6gAhGwxBC0HrACEbDEALQewAIRsMPwtB7QAhGww+C0HuACEbDD0LQe8AIRsMPAtB8AAhGww7C0HxACEbDDoLQfIAIRsMOQtB8wAhGww4C0H0ACEbDDcLQfUAIRsMNgtB9gAhGww1C0H3ACEbDDQLQfgAIRsMMwtB+QAhGwwyC0H6ACEbDDELQfsAIRsMMAtB/AAhGwwvC0H9ACEbDC4LQf4AIRsMLQtB/wAhGwwsC0GAASEbDCsLQYEBIRsMKgtBggEhGwwpC0GDASEbDCgLQYQBIRsMJwtBhQEhGwwmC0GGASEbDCULQYcBIRsMJAtBiAEhGwwjC0GJASEbDCILQYoBIRsMIQtBiwEhGwwgC0GMASEbDB8LQY0BIRsMHgtBjgEhGwwdC0GPASEbDBwLQZABIRsMGwtBkQEhGwwaC0GSASEbDBkLQZMBIRsMGAtBlAEhGwwXC0GVASEbDBYLQZYBIRsMFQtBlwEhGwwUC0GYASEbDBMLQZkBIRsMEgtBnQEhGwwRC0GaASEbDBALQQEhGwwPC0GbASEbDA4LQZwBIRsMDQtBngEhGwwMC0GgASEbDAsLQZ8BIRsMCgtBoQEhGwwJC0GiASEbDAgLQaMBIRsMBwtBpAEhGwwGC0GlASEbDAULQaYBIRsMBAtBpwEhGwwDC0GoASEbDAILQakBIRsMAQtBrwEhGwsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgGw6wAQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGx0fICEkJSYnKCkqKy0uLzAxNzg6Oz5BQ0RFRkdISUpLTE1OT1BRUlNUVVdZW15fYGJkZWZnaGlqbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHcAeIB4wHnAfYBwwLDAgsgASIEIAJHDcQBQbgBIRsMkgMLIAEiGyACRw2zAUGoASEbDJEDCyABIgEgAkcNaUHeACEbDJADCyABIgEgAkcNX0HWACEbDI8DCyABIgEgAkcNWEHRACEbDI4DCyABIgEgAkcNVEHPACEbDI0DCyABIgEgAkcNUUHNACEbDIwDCyABIgEgAkcNTkHLACEbDIsDCyABIgEgAkcNEUEMIRsMigMLIAEiASACRw01QTQhGwyJAwsgASIBIAJHDTFBMSEbDIgDCyABIhogAkcNKEEuIRsMhwMLIAEiASACRw0mQSwhGwyGAwsgASIBIAJHDSRBKyEbDIUDCyABIgEgAkcNHUEiIRsMhAMLIAAtAC5BAUYN/AIMyAELIAAgASIBIAIQtICAgABBAUcNtQEMtgELIAAgASIBIAIQrYCAgAAiGw22ASABIQEMtgILAkAgASIBIAJHDQBBBiEbDIEDCyAAIAFBAWoiASACELCAgIAAIhsNtwEgASEBDA8LIABCADcDIEEUIRsM9AILIAEiGyACRw0JQQ8hGwz+AgsCQCABIgEgAkYNACABQQFqIQFBEiEbDPMCC0EHIRsM/QILIABCACAAKQMgIhwgAiABIhtrrSIdfSIeIB4gHFYbNwMgIBwgHVYiH0UNtAFBCCEbDPwCCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEWIRsM8QILQQkhGwz7AgsgASEBIAApAyBQDbMBIAEhAQyzAgsCQCABIgEgAkcNAEELIRsM+gILIAAgAUEBaiIBIAIQr4CAgAAiGw2zASABIQEMswILA0ACQCABLQAAQZCdgIAAai0AACIbQQFGDQAgG0ECRw21ASABQQFqIQEMAwsgAUEBaiIBIAJHDQALQQwhGwz4AgsCQCABIgEgAkcNAEENIRsM+AILAkACQCABLQAAIhtBc2oOFAG3AbcBtwG3AbcBtwG3AbcBtwG3AbcBtwG3AbcBtwG3AbcBtwEAtQELIAFBAWohAQy1AQsgAUEBaiEBC0EZIRsM6wILAkAgASIbIAJHDQBBDiEbDPYCC0IAIRwgGyEBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAbLQAAQVBqDjfJAcgBAAECAwQFBgfEAsQCxALEAsQCxALEAggJCgsMDcQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxAIODxAREhPEAgtCAiEcDMgBC0IDIRwMxwELQgQhHAzGAQtCBSEcDMUBC0IGIRwMxAELQgchHAzDAQtCCCEcDMIBC0IJIRwMwQELQgohHAzAAQtCCyEcDL8BC0IMIRwMvgELQg0hHAy9AQtCDiEcDLwBC0IPIRwMuwELQgohHAy6AQtCCyEcDLkBC0IMIRwMuAELQg0hHAy3AQtCDiEcDLYBC0IPIRwMtQELQgAhHAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgGy0AAEFQag43yAHHAQABAgMEBQYHyQHJAckByQHJAckByQEICQoLDA3JAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckBDg8QERITyQELQgIhHAzHAQtCAyEcDMYBC0IEIRwMxQELQgUhHAzEAQtCBiEcDMMBC0IHIRwMwgELQgghHAzBAQtCCSEcDMABC0IKIRwMvwELQgshHAy+AQtCDCEcDL0BC0INIRwMvAELQg4hHAy7AQtCDyEcDLoBC0IKIRwMuQELQgshHAy4AQtCDCEcDLcBC0INIRwMtgELQg4hHAy1AQtCDyEcDLQBCyAAQgAgACkDICIcIAIgASIba60iHX0iHiAeIBxWGzcDICAcIB1WIh9FDbUBQREhGwzzAgsCQCABIgEgAkYNACAAQYmAgIAANgIIIAAgATYCBCABIQFBHCEbDOgCC0ESIRsM8gILIAAgASIbIAIQsoCAgABBf2oOBacBAKgCAbQBtQELQRMhGwzlAgsgAEEBOgAvIBshAQzuAgsgASIBIAJHDbUBQRYhGwzuAgsgASIYIAJHDRpBNSEbDO0CCwJAIAEiASACRw0AQRohGwztAgsgAEEANgIEIABBioCAgAA2AgggACABIAEQqoCAgAAiGw23ASABIQEMugELAkAgASIbIAJHDQBBGyEbDOwCCwJAIBstAAAiAUEgRw0AIBtBAWohAQwbCyABQQlHDbcBIBtBAWohAQwaCwJAIAEiASACRg0AIAFBAWohAQwVC0EcIRsM6gILAkAgASIbIAJHDQBBHSEbDOoCCwJAIBstAAAiAUEJRw0AIBshAQzWAgsgAUEgRw22ASAbIQEM1QILAkAgASIBIAJHDQBBHiEbDOkCCyABLQAAQQpHDbkBIAFBAWohAQymAgsCQCABIhkgAkcNAEEgIRsM6AILIBktAABBdmoOBLwBugG6AbkBugELA0ACQCABLQAAIhtBIEYNAAJAIBtBdmoOBADDAcMBAMEBCyABIQEMyQELIAFBAWoiASACRw0AC0EiIRsM5gILQSMhGyABIiAgAkYN5QIgAiAgayAAKAIAIiFqISIgICEjICEhAQJAA0AgIy0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUGQn4CAAGotAABHDQEgAUEDRg3WAiABQQFqIQEgI0EBaiIjIAJHDQALIAAgIjYCAAzmAgsgAEEANgIAICMhAQzAAQtBJCEbIAEiICACRg3kAiACICBrIAAoAgAiIWohIiAgISMgISEBAkADQCAjLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQZSfgIAAai0AAEcNASABQQhGDcIBIAFBAWohASAjQQFqIiMgAkcNAAsgACAiNgIADOUCCyAAQQA2AgAgIyEBDL8BC0ElIRsgASIgIAJGDeMCIAIgIGsgACgCACIhaiEiICAhIyAhIQECQANAICMtAAAiH0EgciAfIB9Bv39qQf8BcUEaSRtB/wFxIAFB8KWAgABqLQAARw0BIAFBBUYNwgEgAUEBaiEBICNBAWoiIyACRw0ACyAAICI2AgAM5AILIABBADYCACAjIQEMvgELAkAgASIBIAJGDQADQAJAIAEtAABBoKGAgABqLQAAIhtBAUYNACAbQQJGDQsgASEBDMYBCyABQQFqIgEgAkcNAAtBISEbDOMCC0EhIRsM4gILAkAgASIBIAJGDQADQAJAIAEtAAAiG0EgRg0AIBtBdmoOBMIBwwHDAcIBwwELIAFBAWoiASACRw0AC0EpIRsM4gILQSkhGwzhAgsDQAJAIAEtAAAiG0EgRg0AIBtBdmoOBMIBBATCAQQLIAFBAWoiASACRw0AC0ErIRsM4AILA0ACQCABLQAAIhtBIEYNACAbQQlHDQQLIAFBAWoiASACRw0AC0EsIRsM3wILA0ACQCAaLQAAQaChgIAAai0AACIBQQFGDQAgAUECRw3HASAaQQFqIQEMlAILIBpBAWoiGiACRw0AC0EuIRsM3gILIAEhAQzCAQsgASEBDMEBC0EvIRsgASIjIAJGDdsCIAIgI2sgACgCACIgaiEhICMhHyAgIQEDQCAfLQAAQSByIAFBoKOAgABqLQAARw3OAiABQQZGDc0CIAFBAWohASAfQQFqIh8gAkcNAAsgACAhNgIADNsCCwJAIAEiGiACRw0AQTAhGwzbAgsgAEGKgICAADYCCCAAIBo2AgQgGiEBIAAtACxBf2oOBLMBvAG+AcABmgILIAFBAWohAQyyAQsCQCABIgEgAkYNAANAAkAgAS0AACIbQSByIBsgG0G/f2pB/wFxQRpJG0H/AXEiG0EJRg0AIBtBIEYNAAJAAkACQAJAIBtBnX9qDhMAAwMDAwMDAwEDAwMDAwMDAwMCAwsgAUEBaiEBQSchGwzTAgsgAUEBaiEBQSghGwzSAgsgAUEBaiEBQSkhGwzRAgsgASEBDLYBCyABQQFqIgEgAkcNAAtBJiEbDNkCC0EmIRsM2AILAkAgASIBIAJGDQADQAJAIAEtAABBoJ+AgABqLQAAQQFGDQAgASEBDLsBCyABQQFqIgEgAkcNAAtBLSEbDNgCC0EtIRsM1wILAkADQAJAIAEtAABBd2oOGAACxALEAsYCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCAMQCCyABQQFqIgEgAkcNAAtBMSEbDNcCCyABQQFqIQELQSIhGwzKAgsgASIBIAJHDb0BQTMhGwzUAgsDQAJAIAEtAABBsKOAgABqLQAAQQFGDQAgASEBDJYCCyABQQFqIgEgAkcNAAtBNCEbDNMCCyAYLQAAIhtBIEYNmgEgG0E6Rw3GAiAAKAIEIQEgAEEANgIEIAAgASAYEKiAgIAAIgENugEgGEEBaiEBDLwBCyAAIAEgAhCpgICAABoLQQohGwzFAgtBNiEbIAEiIyACRg3PAiACICNrIAAoAgAiIGohISAjIRggICEBAkADQCAYLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQbClgIAAai0AAEcNxAIgAUEFRg0BIAFBAWohASAYQQFqIhggAkcNAAsgACAhNgIADNACCyAAQQA2AgAgAEEBOgAsICMgIGtBBmohAQy9AgtBNyEbIAEiIyACRg3OAiACICNrIAAoAgAiIGohISAjIRggICEBAkADQCAYLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQbalgIAAai0AAEcNwwIgAUEJRg0BIAFBAWohASAYQQFqIhggAkcNAAsgACAhNgIADM8CCyAAQQA2AgAgAEECOgAsICMgIGtBCmohAQy8AgsCQCABIhggAkcNAEE4IRsMzgILAkACQCAYLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwDDAsMCwwLDAsMCAcMCCyAYQQFqIQFBMiEbDMMCCyAYQQFqIQFBMyEbDMICC0E5IRsgASIjIAJGDcwCIAIgI2sgACgCACIgaiEhICMhGCAgIQEDQCAYLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQcClgIAAai0AAEcNwAIgAUEBRg23AiABQQFqIQEgGEEBaiIYIAJHDQALIAAgITYCAAzMAgtBOiEbIAEiIyACRg3LAiACICNrIAAoAgAiIGohISAjIRggICEBAkADQCAYLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQcKlgIAAai0AAEcNwAIgAUEORg0BIAFBAWohASAYQQFqIhggAkcNAAsgACAhNgIADMwCCyAAQQA2AgAgAEEBOgAsICMgIGtBD2ohAQy5AgtBOyEbIAEiIyACRg3KAiACICNrIAAoAgAiIGohISAjIRggICEBAkADQCAYLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQeClgIAAai0AAEcNvwIgAUEPRg0BIAFBAWohASAYQQFqIhggAkcNAAsgACAhNgIADMsCCyAAQQA2AgAgAEEDOgAsICMgIGtBEGohAQy4AgtBPCEbIAEiIyACRg3JAiACICNrIAAoAgAiIGohISAjIRggICEBAkADQCAYLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQfClgIAAai0AAEcNvgIgAUEFRg0BIAFBAWohASAYQQFqIhggAkcNAAsgACAhNgIADMoCCyAAQQA2AgAgAEEEOgAsICMgIGtBBmohAQy3AgsCQCABIhggAkcNAEE9IRsMyQILAkACQAJAAkAgGC0AACIBQSByIAEgAUG/f2pB/wFxQRpJG0H/AXFBnX9qDhMAwALAAsACwALAAsACwALAAsACwALAAsACAcACwALAAgIDwAILIBhBAWohAUE1IRsMwAILIBhBAWohAUE2IRsMvwILIBhBAWohAUE3IRsMvgILIBhBAWohAUE4IRsMvQILAkAgASIBIAJGDQAgAEGLgICAADYCCCAAIAE2AgQgASEBQTkhGwy9AgtBPiEbDMcCCyABIgEgAkcNswFBwAAhGwzGAgtBwQAhGyABIiMgAkYNxQIgAiAjayAAKAIAIiBqISEgIyEfICAhAQJAA0AgHy0AACABQfalgIAAai0AAEcNuAEgAUEBRg0BIAFBAWohASAfQQFqIh8gAkcNAAsgACAhNgIADMYCCyAAQQA2AgAgIyAga0ECaiEBDLMBCwJAIAEiASACRw0AQcMAIRsMxQILIAEtAABBCkcNtwEgAUEBaiEBDLMBCwJAIAEiASACRw0AQcQAIRsMxAILAkACQCABLQAAQXZqDgQBuAG4AQC4AQsgAUEBaiEBQT0hGwy5AgsgAUEBaiEBDLIBCwJAIAEiASACRw0AQcUAIRsMwwILQQAhGwJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4KvwG+AQABAgMEBQYHwAELQQIhGwy+AQtBAyEbDL0BC0EEIRsMvAELQQUhGwy7AQtBBiEbDLoBC0EHIRsMuQELQQghGwy4AQtBCSEbDLcBCwJAIAEiASACRw0AQcYAIRsMwgILIAEtAABBLkcNuAEgAUEBaiEBDIYCCwJAIAEiASACRw0AQccAIRsMwQILQQAhGwJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4KwQHAAQABAgMEBQYHwgELQQIhGwzAAQtBAyEbDL8BC0EEIRsMvgELQQUhGwy9AQtBBiEbDLwBC0EHIRsMuwELQQghGwy6AQtBCSEbDLkBC0HIACEbIAEiIyACRg2/AiACICNrIAAoAgAiIGohISAjIQEgICEfA0AgAS0AACAfQYKmgIAAai0AAEcNvAEgH0EDRg27ASAfQQFqIR8gAUEBaiIBIAJHDQALIAAgITYCAAy/AgtByQAhGyABIiMgAkYNvgIgAiAjayAAKAIAIiBqISEgIyEBICAhHwNAIAEtAAAgH0GGpoCAAGotAABHDbsBIB9BAkYNvQEgH0EBaiEfIAFBAWoiASACRw0ACyAAICE2AgAMvgILQcoAIRsgASIjIAJGDb0CIAIgI2sgACgCACIgaiEhICMhASAgIR8DQCABLQAAIB9BiaaAgABqLQAARw26ASAfQQNGDb0BIB9BAWohHyABQQFqIgEgAkcNAAsgACAhNgIADL0CCwNAAkAgAS0AACIbQSBGDQACQAJAAkAgG0G4f2oOCwABvgG+Ab4BvgG+Ab4BvgG+AQK+AQsgAUEBaiEBQcIAIRsMtQILIAFBAWohAUHDACEbDLQCCyABQQFqIQFBxAAhGwyzAgsgAUEBaiIBIAJHDQALQcsAIRsMvAILAkAgASIBIAJGDQAgACABQQFqIgEgAhClgICAABogASEBQQchGwyxAgtBzAAhGwy7AgsDQAJAIAEtAABBkKaAgABqLQAAIhtBAUYNACAbQX5qDgO9Ab4BvwHAAQsgAUEBaiIBIAJHDQALQc0AIRsMugILAkAgASIBIAJGDQAgAUEBaiEBDAMLQc4AIRsMuQILA0ACQCABLQAAQZCogIAAai0AACIbQQFGDQACQCAbQX5qDgTAAcEBwgEAwwELIAEhAUHGACEbDK8CCyABQQFqIgEgAkcNAAtBzwAhGwy4AgsCQCABIgEgAkcNAEHQACEbDLgCCwJAIAEtAAAiG0F2ag4aqAHDAcMBqgHDAcMBwwHDAcMBwwHDAcMBwwHDAcMBwwHDAcMBwwHDAcMBwwG4AcMBwwEAwQELIAFBAWohAQtBBiEbDKsCCwNAAkAgAS0AAEGQqoCAAGotAABBAUYNACABIQEMgAILIAFBAWoiASACRw0AC0HRACEbDLUCCwJAIAEiASACRg0AIAFBAWohAQwDC0HSACEbDLQCCwJAIAEiASACRw0AQdMAIRsMtAILIAFBAWohAQwBCwJAIAEiASACRw0AQdQAIRsMswILIAFBAWohAQtBBCEbDKYCCwJAIAEiHyACRw0AQdUAIRsMsQILIB8hAQJAAkACQCAfLQAAQZCsgIAAai0AAEF/ag4HwgHDAcQBAP4BAQLFAQsgH0EBaiEBDAoLIB9BAWohAQy7AQtBACEbIABBADYCHCAAQfGOgIAANgIQIABBBzYCDCAAIB9BAWo2AhQMsAILAkADQAJAIAEtAABBkKyAgABqLQAAIhtBBEYNAAJAAkAgG0F/ag4HwAHBAcIBxwEABAHHAQsgASEBQckAIRsMqAILIAFBAWohAUHLACEbDKcCCyABQQFqIgEgAkcNAAtB1gAhGwywAgsgAUEBaiEBDLkBCwJAIAEiHyACRw0AQdcAIRsMrwILIB8tAABBL0cNwgEgH0EBaiEBDAYLAkAgASIfIAJHDQBB2AAhGwyuAgsCQCAfLQAAIgFBL0cNACAfQQFqIQFBzAAhGwyjAgsgAUF2aiIEQRZLDcEBQQEgBHRBiYCAAnFFDcEBDJYCCwJAIAEiASACRg0AIAFBAWohAUHNACEbDKICC0HZACEbDKwCCwJAIAEiHyACRw0AQdsAIRsMrAILIB8hAQJAIB8tAABBkLCAgABqLQAAQX9qDgOVAvYBAMIBC0HQACEbDKACCwJAIAEiHyACRg0AA0ACQCAfLQAAQZCugIAAai0AACIBQQNGDQACQCABQX9qDgKXAgDDAQsgHyEBQc4AIRsMogILIB9BAWoiHyACRw0AC0HaACEbDKsCC0HaACEbDKoCCwJAIAEiASACRg0AIABBjICAgAA2AgggACABNgIEIAEhAUHPACEbDJ8CC0HcACEbDKkCCwJAIAEiASACRw0AQd0AIRsMqQILIABBjICAgAA2AgggACABNgIEIAEhAQtBAyEbDJwCCwNAIAEtAABBIEcNjwIgAUEBaiIBIAJHDQALQd4AIRsMpgILAkAgASIBIAJHDQBB3wAhGwymAgsgAS0AAEEgRw28ASABQQFqIQEM2AELAkAgASIEIAJHDQBB4AAhGwylAgsgBC0AAEHMAEcNvwEgBEEBaiEBQRMhGwy9AQtB4QAhGyABIh8gAkYNowIgAiAfayAAKAIAIiNqISAgHyEEICMhAQNAIAQtAAAgAUGQsoCAAGotAABHDb4BIAFBBUYNvAEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMowILAkAgASIEIAJHDQBB4gAhGwyjAgsCQAJAIAQtAABBvX9qDgwAvwG/Ab8BvwG/Ab8BvwG/Ab8BvwEBvwELIARBAWohAUHUACEbDJgCCyAEQQFqIQFB1QAhGwyXAgtB4wAhGyABIh8gAkYNoQIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQY2zgIAAai0AAEcNvQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADKICCyAAQQA2AgAgHyAja0EDaiEBQRAhGwy6AQtB5AAhGyABIh8gAkYNoAIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQZaygIAAai0AAEcNvAEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADKECCyAAQQA2AgAgHyAja0EGaiEBQRYhGwy5AQtB5QAhGyABIh8gAkYNnwIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQZyygIAAai0AAEcNuwEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADKACCyAAQQA2AgAgHyAja0EEaiEBQQUhGwy4AQsCQCABIgQgAkcNAEHmACEbDJ8CCyAELQAAQdkARw25ASAEQQFqIQFBCCEbDLcBCwJAIAEiBCACRw0AQecAIRsMngILAkACQCAELQAAQbJ/ag4DALoBAboBCyAEQQFqIQFB2QAhGwyTAgsgBEEBaiEBQdoAIRsMkgILAkAgASIEIAJHDQBB6AAhGwydAgsCQAJAIAQtAABBuH9qDggAuQG5AbkBuQG5AbkBAbkBCyAEQQFqIQFB2AAhGwySAgsgBEEBaiEBQdsAIRsMkQILQekAIRsgASIfIAJGDZsCIAIgH2sgACgCACIjaiEgIB8hBCAjIQECQANAIAQtAAAgAUGgsoCAAGotAABHDbcBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIDYCAAycAgtBACEbIABBADYCACAfICNrQQNqIQEMtAELQeoAIRsgASIfIAJGDZoCIAIgH2sgACgCACIjaiEgIB8hBCAjIQECQANAIAQtAAAgAUGjsoCAAGotAABHDbYBIAFBBEYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIDYCAAybAgsgAEEANgIAIB8gI2tBBWohAUEjIRsMswELAkAgASIEIAJHDQBB6wAhGwyaAgsCQAJAIAQtAABBtH9qDggAtgG2AbYBtgG2AbYBAbYBCyAEQQFqIQFB3QAhGwyPAgsgBEEBaiEBQd4AIRsMjgILAkAgASIEIAJHDQBB7AAhGwyZAgsgBC0AAEHFAEcNswEgBEEBaiEBDOQBC0HtACEbIAEiHyACRg2XAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFBqLKAgABqLQAARw2zASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMmAILIABBADYCACAfICNrQQRqIQFBLSEbDLABC0HuACEbIAEiHyACRg2WAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFB8LKAgABqLQAARw2yASABQQhGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMlwILIABBADYCACAfICNrQQlqIQFBKSEbDK8BCwJAIAEiASACRw0AQe8AIRsMlgILQQEhGyABLQAAQd8ARw2uASABQQFqIQEM4gELQfAAIRsgASIfIAJGDZQCIAIgH2sgACgCACIjaiEgIB8hBCAjIQEDQCAELQAAIAFBrLKAgABqLQAARw2vASABQQFGDfoBIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADJQCC0HxACEbIAEiHyACRg2TAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFBrrKAgABqLQAARw2vASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMlAILIABBADYCACAfICNrQQNqIQFBAiEbDKwBC0HyACEbIAEiHyACRg2SAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFBkLOAgABqLQAARw2uASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMkwILIABBADYCACAfICNrQQJqIQFBHyEbDKsBC0HzACEbIAEiHyACRg2RAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFBkrOAgABqLQAARw2tASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMkgILIABBADYCACAfICNrQQJqIQFBCSEbDKoBCwJAIAEiBCACRw0AQfQAIRsMkQILAkACQCAELQAAQbd/ag4HAK0BrQGtAa0BrQEBrQELIARBAWohAUHmACEbDIYCCyAEQQFqIQFB5wAhGwyFAgsCQCABIhsgAkcNAEH1ACEbDJACCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFBsbKAgABqLQAARw2rASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBB9QAhGwyQAgsgAEEANgIAIBsgH2tBBmohAUEYIRsMqAELAkAgASIbIAJHDQBB9gAhGwyPAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQbeygIAAai0AAEcNqgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQfYAIRsMjwILIABBADYCACAbIB9rQQNqIQFBFyEbDKcBCwJAIAEiGyACRw0AQfcAIRsMjgILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUG6soCAAGotAABHDakBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEH3ACEbDI4CCyAAQQA2AgAgGyAfa0EHaiEBQRUhGwymAQsCQCABIhsgAkcNAEH4ACEbDI0CCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFBwbKAgABqLQAARw2oASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBB+AAhGwyNAgsgAEEANgIAIBsgH2tBBmohAUEeIRsMpQELAkAgASIEIAJHDQBB+QAhGwyMAgsgBC0AAEHMAEcNpgEgBEEBaiEBQQohGwykAQsCQCABIgQgAkcNAEH6ACEbDIsCCwJAAkAgBC0AAEG/f2oODwCnAacBpwGnAacBpwGnAacBpwGnAacBpwGnAQGnAQsgBEEBaiEBQewAIRsMgAILIARBAWohAUHtACEbDP8BCwJAIAEiBCACRw0AQfsAIRsMigILAkACQCAELQAAQb9/ag4DAKYBAaYBCyAEQQFqIQFB6wAhGwz/AQsgBEEBaiEBQe4AIRsM/gELAkAgASIbIAJHDQBB/AAhGwyJAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQceygIAAai0AAEcNpAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQfwAIRsMiQILIABBADYCACAbIB9rQQJqIQFBCyEbDKEBCwJAIAEiBCACRw0AQf0AIRsMiAILAkACQAJAAkAgBC0AAEFTag4jAKYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgEBpgGmAaYBpgGmAQKmAaYBpgEDpgELIARBAWohAUHpACEbDP8BCyAEQQFqIQFB6gAhGwz+AQsgBEEBaiEBQe8AIRsM/QELIARBAWohAUHwACEbDPwBCwJAIAEiGyACRw0AQf4AIRsMhwILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHJsoCAAGotAABHDaIBIAFBBEYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEH+ACEbDIcCCyAAQQA2AgAgGyAfa0EFaiEBQRkhGwyfAQsCQCABIh8gAkcNAEH/ACEbDIYCCyACIB9rIAAoAgAiI2ohGyAfIQQgIyEBAkADQCAELQAAIAFBzrKAgABqLQAARw2hASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBs2AgBB/wAhGwyGAgsgAEEANgIAQQYhGyAfICNrQQZqIQEMngELAkAgASIbIAJHDQBBgAEhGwyFAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQdSygIAAai0AAEcNoAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQYABIRsMhQILIABBADYCACAbIB9rQQJqIQFBHCEbDJ0BCwJAIAEiGyACRw0AQYEBIRsMhAILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHWsoCAAGotAABHDZ8BIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGBASEbDIQCCyAAQQA2AgAgGyAfa0ECaiEBQSchGwycAQsCQCABIgQgAkcNAEGCASEbDIMCCwJAAkAgBC0AAEGsf2oOAgABnwELIARBAWohAUH0ACEbDPgBCyAEQQFqIQFB9QAhGwz3AQsCQCABIhsgAkcNAEGDASEbDIICCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFB2LKAgABqLQAARw2dASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBgwEhGwyCAgsgAEEANgIAIBsgH2tBAmohAUEmIRsMmgELAkAgASIbIAJHDQBBhAEhGwyBAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQdqygIAAai0AAEcNnAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQYQBIRsMgQILIABBADYCACAbIB9rQQJqIQFBAyEbDJkBCwJAIAEiGyACRw0AQYUBIRsMgAILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUGNs4CAAGotAABHDZsBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGFASEbDIACCyAAQQA2AgAgGyAfa0EDaiEBQQwhGwyYAQsCQCABIhsgAkcNAEGGASEbDP8BCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFB3LKAgABqLQAARw2aASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBhgEhGwz/AQsgAEEANgIAIBsgH2tBBGohAUENIRsMlwELAkAgASIEIAJHDQBBhwEhGwz+AQsCQAJAIAQtAABBun9qDgsAmgGaAZoBmgGaAZoBmgGaAZoBAZoBCyAEQQFqIQFB+QAhGwzzAQsgBEEBaiEBQfoAIRsM8gELAkAgASIEIAJHDQBBiAEhGwz9AQsgBC0AAEHQAEcNlwEgBEEBaiEBDMoBCwJAIAEiBCACRw0AQYkBIRsM/AELAkACQCAELQAAQbd/ag4HAZgBmAGYAZgBmAEAmAELIARBAWohAUH8ACEbDPEBCyAEQQFqIQFBIiEbDJQBCwJAIAEiGyACRw0AQYoBIRsM+wELIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHgsoCAAGotAABHDZYBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGKASEbDPsBCyAAQQA2AgAgGyAfa0ECaiEBQR0hGwyTAQsCQCABIgQgAkcNAEGLASEbDPoBCwJAAkAgBC0AAEGuf2oOAwCWAQGWAQsgBEEBaiEBQf4AIRsM7wELIARBAWohAUEEIRsMkgELAkAgASIEIAJHDQBBjAEhGwz5AQsCQAJAAkACQAJAIAQtAABBv39qDhUAmAGYAZgBmAGYAZgBmAGYAZgBmAEBmAGYAQKYAZgBA5gBmAEEmAELIARBAWohAUH2ACEbDPEBCyAEQQFqIQFB9wAhGwzwAQsgBEEBaiEBQfgAIRsM7wELIARBAWohAUH9ACEbDO4BCyAEQQFqIQFB/wAhGwztAQsCQCABIhsgAkcNAEGNASEbDPgBCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFBjbOAgABqLQAARw2TASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBjQEhGwz4AQsgAEEANgIAIBsgH2tBA2ohAUERIRsMkAELAkAgASIbIAJHDQBBjgEhGwz3AQsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQeKygIAAai0AAEcNkgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQY4BIRsM9wELIABBADYCACAbIB9rQQNqIQFBLCEbDI8BCwJAIAEiGyACRw0AQY8BIRsM9gELIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHlsoCAAGotAABHDZEBIAFBBEYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGPASEbDPYBCyAAQQA2AgAgGyAfa0EFaiEBQSshGwyOAQsCQCABIhsgAkcNAEGQASEbDPUBCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFB6rKAgABqLQAARw2QASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBkAEhGwz1AQsgAEEANgIAIBsgH2tBA2ohAUEUIRsMjQELAkAgBCACRw0AQZEBIRsM9AELAkACQAJAAkAgBC0AAEG+f2oODwABApIBkgGSAZIBkgGSAZIBkgGSAZIBkgEDkgELIARBAWohAUGBASEbDOsBCyAEQQFqIQFBggEhGwzqAQsgBEEBaiEBQYMBIRsM6QELIARBAWohAUGEASEbDOgBCwJAIAQgAkcNAEGSASEbDPMBCyAELQAAQcUARw2NASAEQQFqIQQMwQELAkAgBSACRw0AQZMBIRsM8gELIAIgBWsgACgCACIbaiEfIAUhBCAbIQECQANAIAQtAAAgAUHtsoCAAGotAABHDY0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGTASEbDPIBCyAAQQA2AgAgBSAba0EDaiEBQQ4hGwyKAQsCQCAEIAJHDQBBlAEhGwzxAQsgBC0AAEHQAEcNiwEgBEEBaiEBQSUhGwyJAQsCQCAGIAJHDQBBlQEhGwzwAQsgAiAGayAAKAIAIhtqIR8gBiEEIBshAQJAA0AgBC0AACABQfCygIAAai0AAEcNiwEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQZUBIRsM8AELIABBADYCACAGIBtrQQlqIQFBKiEbDIgBCwJAIAQgAkcNAEGWASEbDO8BCwJAAkAgBC0AAEGrf2oOCwCLAYsBiwGLAYsBiwGLAYsBiwEBiwELIARBAWohBEGIASEbDOQBCyAEQQFqIQZBiQEhGwzjAQsCQCAEIAJHDQBBlwEhGwzuAQsCQAJAIAQtAABBv39qDhQAigGKAYoBigGKAYoBigGKAYoBigGKAYoBigGKAYoBigGKAYoBAYoBCyAEQQFqIQVBhwEhGwzjAQsgBEEBaiEEQYoBIRsM4gELAkAgByACRw0AQZgBIRsM7QELIAIgB2sgACgCACIbaiEfIAchBCAbIQECQANAIAQtAAAgAUH5soCAAGotAABHDYgBIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGYASEbDO0BCyAAQQA2AgAgByAba0EEaiEBQSEhGwyFAQsCQCAIIAJHDQBBmQEhGwzsAQsgAiAIayAAKAIAIhtqIR8gCCEEIBshAQJAA0AgBC0AACABQf2ygIAAai0AAEcNhwEgAUEGRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQZkBIRsM7AELIABBADYCACAIIBtrQQdqIQFBGiEbDIQBCwJAIAQgAkcNAEGaASEbDOsBCwJAAkACQCAELQAAQbt/ag4RAIgBiAGIAYgBiAGIAYgBiAGIAQGIAYgBiAGIAYgBAogBCyAEQQFqIQRBiwEhGwzhAQsgBEEBaiEHQYwBIRsM4AELIARBAWohCEGNASEbDN8BCwJAIAkgAkcNAEGbASEbDOoBCyACIAlrIAAoAgAiG2ohHyAJIQQgGyEBAkADQCAELQAAIAFBhLOAgABqLQAARw2FASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBmwEhGwzqAQsgAEEANgIAIAkgG2tBBmohAUEoIRsMggELAkAgCiACRw0AQZwBIRsM6QELIAIgCmsgACgCACIbaiEfIAohBCAbIQECQANAIAQtAAAgAUGKs4CAAGotAABHDYQBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGcASEbDOkBCyAAQQA2AgAgCiAba0EDaiEBQQchGwyBAQsCQCAEIAJHDQBBnQEhGwzoAQsCQAJAIAQtAABBu39qDg4AhAGEAYQBhAGEAYQBhAGEAYQBhAGEAYQBAYQBCyAEQQFqIQlBjwEhGwzdAQsgBEEBaiEKQZABIRsM3AELAkAgCyACRw0AQZ4BIRsM5wELIAIgC2sgACgCACIbaiEfIAshBCAbIQECQANAIAQtAAAgAUGNs4CAAGotAABHDYIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGeASEbDOcBCyAAQQA2AgAgCyAba0EDaiEBQRIhGwx/CwJAIAwgAkcNAEGfASEbDOYBCyACIAxrIAAoAgAiG2ohHyAMIQQgGyEBAkADQCAELQAAIAFBkLOAgABqLQAARw2BASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBnwEhGwzmAQsgAEEANgIAIAwgG2tBAmohAUEgIRsMfgsCQCANIAJHDQBBoAEhGwzlAQsgAiANayAAKAIAIhtqIR8gDSEEIBshAQJAA0AgBC0AACABQZKzgIAAai0AAEcNgAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQaABIRsM5QELIABBADYCACANIBtrQQJqIQFBDyEbDH0LAkAgBCACRw0AQaEBIRsM5AELAkACQCAELQAAQbd/ag4HAIABgAGAAYABgAEBgAELIARBAWohDEGTASEbDNkBCyAEQQFqIQ1BlAEhGwzYAQsCQCAOIAJHDQBBogEhGwzjAQsgAiAOayAAKAIAIhtqIR8gDiEEIBshAQJAA0AgBC0AACABQZSzgIAAai0AAEcNfiABQQdGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBogEhGwzjAQsgAEEANgIAIA4gG2tBCGohAUEbIRsMewsCQCAEIAJHDQBBowEhGwziAQsCQAJAAkAgBC0AAEG+f2oOEgB/f39/f39/f38Bf39/f39/An8LIARBAWohC0GSASEbDNgBCyAEQQFqIQRBlQEhGwzXAQsgBEEBaiEOQZYBIRsM1gELAkAgBCACRw0AQaQBIRsM4QELIAQtAABBzgBHDXsgBEEBaiEEDLABCwJAIAQgAkcNAEGlASEbDOABCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAQtAABBv39qDhUAAQIDigEEBQaKAYoBigEHCAkKC4oBDA0OD4oBCyAEQQFqIQFB1gAhGwzjAQsgBEEBaiEBQdcAIRsM4gELIARBAWohAUHcACEbDOEBCyAEQQFqIQFB4AAhGwzgAQsgBEEBaiEBQeEAIRsM3wELIARBAWohAUHkACEbDN4BCyAEQQFqIQFB5QAhGwzdAQsgBEEBaiEBQegAIRsM3AELIARBAWohAUHxACEbDNsBCyAEQQFqIQFB8gAhGwzaAQsgBEEBaiEBQfMAIRsM2QELIARBAWohAUGAASEbDNgBCyAEQQFqIQRBhgEhGwzXAQsgBEEBaiEEQY4BIRsM1gELIARBAWohBEGRASEbDNUBCyAEQQFqIQRBmAEhGwzUAQsCQCAQIAJHDQBBpwEhGwzfAQsgEEEBaiEPDHsLA0ACQCAbLQAAQXZqDgR7AAB+AAsgG0EBaiIbIAJHDQALQagBIRsM3QELAkAgESACRg0AIABBjYCAgAA2AgggACARNgIEIBEhAUEBIRsM0gELQakBIRsM3AELAkAgESACRw0AQaoBIRsM3AELAkACQCARLQAAQXZqDgQBsQGxAQCxAQsgEUEBaiEQDHwLIBFBAWohDwx4CyAAIA8gAhCngICAABogDyEBDEkLAkAgESACRw0AQasBIRsM2gELAkACQCARLQAAQXZqDhcBfX0BfX19fX19fX19fX19fX19fX19AH0LIBFBAWohEQtBnAEhGwzOAQsCQCASIAJHDQBBrQEhGwzZAQsgEi0AAEEgRw17IABBADsBMiASQQFqIQFBoAEhGwzNAQsgASEjAkADQCAjIhEgAkYNASARLQAAQVBqQf8BcSIbQQpPDa4BAkAgAC8BMiIfQZkzSw0AIAAgH0EKbCIfOwEyIBtB//8DcyAfQf7/A3FJDQAgEUEBaiEjIAAgHyAbaiIbOwEyIBtB//8DcUHoB0kNAQsLQQAhGyAAQQA2AhwgAEGdiYCAADYCECAAQQ02AgwgACARQQFqNgIUDNgBC0GsASEbDNcBCwJAIBMgAkcNAEGuASEbDNcBC0EAIRsCQAJAAkACQAJAAkACQAJAIBMtAABBUGoOCoMBggEAAQIDBAUGB4QBC0ECIRsMggELQQMhGwyBAQtBBCEbDIABC0EFIRsMfwtBBiEbDH4LQQchGwx9C0EIIRsMfAtBCSEbDHsLAkAgFCACRw0AQa8BIRsM1gELIBQtAABBLkcNfCAUQQFqIRMMrAELAkAgFSACRw0AQbABIRsM1QELQQAhGwJAAkACQAJAAkACQAJAAkAgFS0AAEFQag4KhQGEAQABAgMEBQYHhgELQQIhGwyEAQtBAyEbDIMBC0EEIRsMggELQQUhGwyBAQtBBiEbDIABC0EHIRsMfwtBCCEbDH4LQQkhGwx9CwJAIAQgAkcNAEGxASEbDNQBCyACIARrIAAoAgAiH2ohIyAEIRUgHyEbA0AgFS0AACAbQZyzgIAAai0AAEcNfyAbQQRGDbcBIBtBAWohGyAVQQFqIhUgAkcNAAsgACAjNgIAQbEBIRsM0wELAkAgFiACRw0AQbIBIRsM0wELIAIgFmsgACgCACIbaiEfIBYhBCAbIQEDQCAELQAAIAFBobOAgABqLQAARw1/IAFBAUYNuQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBsgEhGwzSAQsCQCAXIAJHDQBBswEhGwzSAQsgAiAXayAAKAIAIhVqIR8gFyEEIBUhGwNAIAQtAAAgG0Gjs4CAAGotAABHDX4gG0ECRg2AASAbQQFqIRsgBEEBaiIEIAJHDQALIAAgHzYCAEGzASEbDNEBCwJAIAQgAkcNAEG0ASEbDNEBCwJAAkAgBC0AAEG7f2oOEAB/f39/f39/f39/f39/fwF/CyAEQQFqIRZBpQEhGwzGAQsgBEEBaiEXQaYBIRsMxQELAkAgBCACRw0AQbUBIRsM0AELIAQtAABByABHDXwgBEEBaiEEDKgBCwJAIAQgAkcNAEG2ASEbDM8BCyAELQAAQcgARg2oASAAQQE6ACgMnwELA0ACQCAELQAAQXZqDgQAfn4AfgsgBEEBaiIEIAJHDQALQbgBIRsMzQELIABBADoALyAALQAtQQRxRQ3GAQsgAEEAOgAvIAEhAQx9CyAbQRVGDawBIABBADYCHCAAIAE2AhQgAEGrjICAADYCECAAQRI2AgxBACEbDMoBCwJAIAAgGyACEK2AgIAAIgQNACAbIQEMwwELAkAgBEEVRw0AIABBAzYCHCAAIBs2AhQgAEGGkoCAADYCECAAQRU2AgxBACEbDMoBCyAAQQA2AhwgACAbNgIUIABBq4yAgAA2AhAgAEESNgIMQQAhGwzJAQsgG0EVRg2oASAAQQA2AhwgACABNgIUIABBiIyAgAA2AhAgAEEUNgIMQQAhGwzIAQsgACgCBCEjIABBADYCBCAbIBynaiIgIQEgACAjIBsgICAfGyIbEK6AgIAAIh9FDX8gAEEHNgIcIAAgGzYCFCAAIB82AgxBACEbDMcBCyAAIAAvATBBgAFyOwEwIAEhAQw1CyAbQRVGDaQBIABBADYCHCAAIAE2AhQgAEHFi4CAADYCECAAQRM2AgxBACEbDMUBCyAAQQA2AhwgACABNgIUIABBi4uAgAA2AhAgAEECNgIMQQAhGwzEAQsgG0E7Rw0BIAFBAWohAQtBCCEbDLcBC0EAIRsgAEEANgIcIAAgATYCFCAAQaOQgIAANgIQIABBDDYCDAzBAQtCASEcCyAbQQFqIQECQCAAKQMgIh1C//////////8PVg0AIAAgHUIEhiAchDcDICABIQEMfAsgAEEANgIcIAAgATYCFCAAQYmJgIAANgIQIABBDDYCDEEAIRsMvwELIABBADYCHCAAIBs2AhQgAEGjkICAADYCECAAQQw2AgxBACEbDL4BCyAAKAIEISMgAEEANgIEIBsgHKdqIiAhASAAICMgGyAgIB8bIhsQroCAgAAiH0UNcyAAQQU2AhwgACAbNgIUIAAgHzYCDEEAIRsMvQELIABBADYCHCAAIBs2AhQgAEGNlICAADYCECAAQQ82AgxBACEbDLwBCyAAIBsgAhCtgICAACIBDQEgGyEBC0EQIRsMrwELAkAgAUEVRw0AIABBAjYCHCAAIBs2AhQgAEGGkoCAADYCECAAQRU2AgxBACEbDLoBCyAAQQA2AhwgACAbNgIUIABBq4yAgAA2AhAgAEESNgIMQQAhGwy5AQsgAUEBaiEbAkAgAC8BMCIBQYABcUUNAAJAIAAgGyACELCAgIAAIgENACAbIQEMcAsgAUEVRw2aASAAQQU2AhwgACAbNgIUIABB7pGAgAA2AhAgAEEVNgIMQQAhGwy5AQsCQCABQaAEcUGgBEcNACAALQAtQQJxDQAgAEEANgIcIAAgGzYCFCAAQeyPgIAANgIQIABBBDYCDEEAIRsMuQELIAAgGyACELGAgIAAGiAbIQECQAJAAkACQAJAIAAgGyACEKyAgIAADhYCAQAEBAQEBAQEBAQEBAQEBAQEBAQDBAsgAEEBOgAuCyAAIAAvATBBwAByOwEwIBshAQtBHiEbDK8BCyAAQRU2AhwgACAbNgIUIABBkZGAgAA2AhAgAEEVNgIMQQAhGwy5AQsgAEEANgIcIAAgGzYCFCAAQbGLgIAANgIQIABBETYCDEEAIRsMuAELIAAtAC1BAXFFDQFBqgEhGwysAQsCQCAYIAJGDQADQAJAIBgtAABBIEYNACAYIQEMpwELIBhBAWoiGCACRw0AC0EXIRsMtwELQRchGwy2AQsgACgCBCEEIABBADYCBCAAIAQgGBCogICAACIERQ2TASAAQRg2AhwgACAENgIMIAAgGEEBajYCFEEAIRsMtQELIABBGTYCHCAAIAE2AhQgACAbNgIMQQAhGwy0AQsgGyEBQQEhHwJAAkACQAJAAkACQAJAIAAtACxBfmoOBwYFBQMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEfDAELQQQhHwsgAEEBOgAsIAAgAC8BMCAfcjsBMAsgGyEBC0EhIRsMqQELIABBADYCHCAAIBs2AhQgAEGBj4CAADYCECAAQQs2AgxBACEbDLMBCyAbIQFBASEfAkACQAJAAkACQCAALQAsQXtqDgQCAAEDBQtBAiEfDAELQQQhHwsgAEEBOgAsIAAgAC8BMCAfcjsBMAwBCyAAIAAvATBBCHI7ATALIBshAQtBqwEhGwymAQsgACABIAIQq4CAgAAaDB8LAkAgASIbIAJGDQAgGyEBAkACQCAbLQAAQXZqDgQBb28AbwsgG0EBaiEBC0EfIRsMpQELQT8hGwyvAQsgAEEANgIcIAAgATYCFCAAQeqQgIAANgIQIABBAzYCDEEAIRsMrgELIAAoAgQhASAAQQA2AgQCQCAAIAEgGRCqgICAACIBDQAgGUEBaiEBDG0LIABBHjYCHCAAIAE2AgwgACAZQQFqNgIUQQAhGwytAQsgAC0ALUEBcUUNA0GtASEbDKEBCwJAIBkgAkcNAEEfIRsMrAELA0ACQCAZLQAAQXZqDgQCAAADAAsgGUEBaiIZIAJHDQALQR8hGwyrAQsgACgCBCEBIABBADYCBAJAIAAgASAZEKqAgIAAIgENACAZIQEMagsgAEEeNgIcIAAgGTYCFCAAIAE2AgxBACEbDKoBCyAAKAIEIQEgAEEANgIEAkAgACABIBkQqoCAgAAiAQ0AIBlBAWohAQxpCyAAQR42AhwgACABNgIMIAAgGUEBajYCFEEAIRsMqQELIABBADYCHCAAIBk2AhQgAEHujICAADYCECAAQQo2AgxBACEbDKgBCyAbQSxHDQEgAUEBaiEbQQEhAQJAAkACQAJAAkAgAC0ALEF7ag4EAwECBAALIBshAQwEC0ECIQEMAQtBBCEBCyAAQQE6ACwgACAALwEwIAFyOwEwIBshAQwBCyAAIAAvATBBCHI7ATAgGyEBC0EuIRsMmwELIABBADoALCABIQELQSohGwyZAQsgAEEANgIAICAgIWtBCWohAUEFIRsMkwELIABBADYCACAgICFrQQZqIQFBByEbDJIBCyAAIAAvATBBIHI7ATAgASEBDAILIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCqgICAACIEDQAgASEBDJcBCyAAQSg2AhwgACABNgIUIAAgBDYCDEEAIRsMoAELIABBCDoALCABIQELQSYhGwyTAQsgAC0AMEEgcQ15Qa4BIRsMkgELAkAgGiACRg0AAkADQAJAIBotAABBUGoiAUH/AXFBCkkNACAaIQFBKyEbDJUBCyAAKQMgIhxCmbPmzJmz5swZVg0BIAAgHEIKfiIcNwMgIBwgAa0iHUJ/hUKAfoRWDQEgACAcIB1C/wGDfDcDICAaQQFqIhogAkcNAAtBKiEbDJ4BCyAAKAIEIQQgAEEANgIEIAAgBCAaQQFqIgEQqoCAgAAiBA16IAEhAQyUAQtBKiEbDJwBCyAAIAAvATBB9/sDcUGABHI7ATAgGiEBC0EsIRsMjwELIAAgAC8BMEEQcjsBMAsgAEEAOgAsIBohAQxYCyAAQTI2AhwgACABNgIMIAAgGEEBajYCFEEAIRsMlwELIAEtAABBOkcNAiAAKAIEIRsgAEEANgIEIAAgGyABEKiAgIAAIhsNASABQQFqIQELQTEhGwyKAQsgAEEyNgIcIAAgGzYCDCAAIAFBAWo2AhRBACEbDJQBCyAAQQA2AhwgACABNgIUIABBh46AgAA2AhAgAEEKNgIMQQAhGwyTAQsgAUEBaiEBCyAAQYASOwEqIAAgASACEKWAgIAAGiABIQELQawBIRsMhQELIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDFILIABBwAA2AhwgACABNgIUIAAgGzYCDEEAIRsMjwELIABBADYCHCAAIB82AhQgAEGVmICAADYCECAAQQc2AgwgAEEANgIAQQAhGwyOAQsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMUQsgAEHBADYCHCAAIAE2AhQgACAbNgIMQQAhGwyNAQtBACEbIABBADYCHCAAIAE2AhQgAEHrjYCAADYCECAAQQk2AgwMjAELQQEhGwsgACAbOgArIAFBAWohASAALQApQSJGDYUBDE4LIABBADYCHCAAIAE2AhQgAEGijYCAADYCECAAQQk2AgxBACEbDIkBCyAAQQA2AhwgACABNgIUIABBxYqAgAA2AhAgAEEJNgIMQQAhGwyIAQtBASEbCyAAIBs6ACogAUEBaiEBDEwLIABBADYCHCAAIAE2AhQgAEG4jYCAADYCECAAQQk2AgxBACEbDIUBCyAAQQA2AgAgIyAga0EEaiEBAkAgAC0AKUEjTw0AIAEhAQxMCyAAQQA2AhwgACABNgIUIABBr4mAgAA2AhAgAEEINgIMQQAhGwyEAQsgAEEANgIAC0EAIRsgAEEANgIcIAAgATYCFCAAQdmagIAANgIQIABBCDYCDAyCAQsgAEEANgIAICMgIGtBA2ohAQJAIAAtAClBIUcNACABIQEMSQsgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDEEAIRsMgQELIABBADYCACAjICBrQQRqIQECQCAALQApIhtBXWpBC08NACABIQEMSAsCQCAbQQZLDQBBASAbdEHKAHFFDQAgASEBDEgLQQAhGyAAQQA2AhwgACABNgIUIABB04mAgAA2AhAgAEEINgIMDIABCyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQxICyAAQcwANgIcIAAgATYCFCAAIBs2AgxBACEbDH8LIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDEELIABBwAA2AhwgACABNgIUIAAgGzYCDEEAIRsMfgsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMQQsgAEHBADYCHCAAIAE2AhQgACAbNgIMQQAhGwx9CyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQxFCyAAQcwANgIcIAAgATYCFCAAIBs2AgxBACEbDHwLIABBADYCHCAAIAE2AhQgAEGiioCAADYCECAAQQc2AgxBACEbDHsLIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDD0LIABBwAA2AhwgACABNgIUIAAgGzYCDEEAIRsMegsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMPQsgAEHBADYCHCAAIAE2AhQgACAbNgIMQQAhGwx5CyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQxBCyAAQcwANgIcIAAgATYCFCAAIBs2AgxBACEbDHgLIABBADYCHCAAIAE2AhQgAEG4iICAADYCECAAQQc2AgxBACEbDHcLIBtBP0cNASABQQFqIQELQQUhGwxqC0EAIRsgAEEANgIcIAAgATYCFCAAQdOPgIAANgIQIABBBzYCDAx0CyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQw2CyAAQcAANgIcIAAgATYCFCAAIBs2AgxBACEbDHMLIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDDYLIABBwQA2AhwgACABNgIUIAAgGzYCDEEAIRsMcgsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMOgsgAEHMADYCHCAAIAE2AhQgACAbNgIMQQAhGwxxCyAAKAIEIQEgAEEANgIEAkAgACABIB8QpICAgAAiAQ0AIB8hAQwzCyAAQcAANgIcIAAgHzYCFCAAIAE2AgxBACEbDHALIAAoAgQhASAAQQA2AgQCQCAAIAEgHxCkgICAACIBDQAgHyEBDDMLIABBwQA2AhwgACAfNgIUIAAgATYCDEEAIRsMbwsgACgCBCEBIABBADYCBAJAIAAgASAfEKSAgIAAIgENACAfIQEMNwsgAEHMADYCHCAAIB82AhQgACABNgIMQQAhGwxuCyAAQQA2AhwgACAfNgIUIABB0IyAgAA2AhAgAEEHNgIMQQAhGwxtCyAAQQA2AhwgACABNgIUIABB0IyAgAA2AhAgAEEHNgIMQQAhGwxsC0EAIRsgAEEANgIcIAAgHzYCFCAAQe+TgIAANgIQIABBBzYCDAxrCyAAQQA2AhwgACAfNgIUIABB75OAgAA2AhAgAEEHNgIMQQAhGwxqCyAAQQA2AhwgACAfNgIUIABB1I6AgAA2AhAgAEEHNgIMQQAhGwxpCyAAQQA2AhwgACABNgIUIABB8ZKAgAA2AhAgAEEGNgIMQQAhGwxoCyAAQQA2AgAgHyAja0EGaiEBQSQhGwsgACAbOgApIAEhAQxNCyAAQQA2AgALQQAhGyAAQQA2AhwgACAENgIUIABB1JOAgAA2AhAgAEEGNgIMDGQLIAAoAgQhDyAAQQA2AgQgACAPIBsQpoCAgAAiDw0BIBtBAWohDwtBnQEhGwxXCyAAQaYBNgIcIAAgDzYCDCAAIBtBAWo2AhRBACEbDGELIAAoAgQhECAAQQA2AgQgACAQIBsQpoCAgAAiEA0BIBtBAWohEAtBmgEhGwxUCyAAQacBNgIcIAAgEDYCDCAAIBtBAWo2AhRBACEbDF4LIABBADYCHCAAIBE2AhQgAEHzioCAADYCECAAQQ02AgxBACEbDF0LIABBADYCHCAAIBI2AhQgAEHOjYCAADYCECAAQQk2AgxBACEbDFwLQQEhGwsgACAbOgArIBNBAWohEgwwCyAAQQA2AhwgACATNgIUIABBoo2AgAA2AhAgAEEJNgIMQQAhGwxZCyAAQQA2AhwgACAUNgIUIABBxYqAgAA2AhAgAEEJNgIMQQAhGwxYC0EBIRsLIAAgGzoAKiAVQQFqIRQMLgsgAEEANgIcIAAgFTYCFCAAQbiNgIAANgIQIABBCTYCDEEAIRsMVQsgAEEANgIcIAAgFTYCFCAAQdmagIAANgIQIABBCDYCDCAAQQA2AgBBACEbDFQLIABBADYCAAtBACEbIABBADYCHCAAIAQ2AhQgAEG7k4CAADYCECAAQQg2AgwMUgsgAEECOgAoIABBADYCACAXIBVrQQNqIRUMNQsgAEECOgAvIAAgBCACEKOAgIAAIhsNAUGvASEbDEULIAAtAChBf2oOAiAiIQsgG0EVRw0pIABBtwE2AhwgACAENgIUIABB15GAgAA2AhAgAEEVNgIMQQAhGwxOC0EAIRsMQgtBAiEbDEELQQwhGwxAC0EPIRsMPwtBESEbDD4LQR0hGww9C0EVIRsMPAtBFyEbDDsLQRghGww6C0EaIRsMOQtBGyEbDDgLQTohGww3C0EkIRsMNgtBJSEbDDULQS8hGww0C0EwIRsMMwtBOyEbDDILQTwhGwwxC0E+IRsMMAtBPyEbDC8LQcAAIRsMLgtBwQAhGwwtC0HFACEbDCwLQccAIRsMKwtByAAhGwwqC0HKACEbDCkLQd8AIRsMKAtB4gAhGwwnC0H7ACEbDCYLQYUBIRsMJQtBlwEhGwwkC0GZASEbDCMLQakBIRsMIgtBpAEhGwwhC0GbASEbDCALQZ4BIRsMHwtBnwEhGwweC0GhASEbDB0LQaIBIRsMHAtBpwEhGwwbC0GoASEbDBoLIABBADYCHCAAIAQ2AhQgAEHmi4CAADYCECAAQRA2AgxBACEbDCQLIABBADYCHCAAIBo2AhQgAEG6j4CAADYCECAAQQQ2AgxBACEbDCMLIABBJzYCHCAAIAE2AhQgACAENgIMQQAhGwwiCyAYQQFqIQEMGQsgAEEKNgIcIAAgATYCFCAAQcGRgIAANgIQIABBFTYCDEEAIRsMIAsgAEEQNgIcIAAgATYCFCAAQe6RgIAANgIQIABBFTYCDEEAIRsMHwsgAEEANgIcIAAgGzYCFCAAQYiMgIAANgIQIABBFDYCDEEAIRsMHgsgAEEENgIcIAAgATYCFCAAQYaSgIAANgIQIABBFTYCDEEAIRsMHQsgAEEANgIAIAQgH2tBBWohFQtBowEhGwwQCyAAQQA2AgAgHyAja0ECaiEBQeMAIRsMDwsgAEEANgIAIABBgQQ7ASggFiAba0ECaiEBC0HTACEbDA0LIAEhAQJAIAAtAClBBUcNAEHSACEbDA0LQdEAIRsMDAtBACEbIABBADYCHCAAQbqOgIAANgIQIABBBzYCDCAAIB9BAWo2AhQMFgsgAEEANgIAICMgIGtBAmohAUE0IRsMCgsgASEBC0EtIRsMCAsgAUEBaiEBQSMhGwwHC0EgIRsMBgsgAEEANgIAICAgIWtBBGohAUEGIRsLIAAgGzoALCABIQFBDiEbDAQLIABBADYCACAjICBrQQdqIQFBDSEbDAMLIABBADYCACAfIQFBCyEbDAILIABBADYCAAsgAEEAOgAsIBghAUEJIRsMAAsLQQAhGyAAQQA2AhwgACABNgIUIABBlo+AgAA2AhAgAEELNgIMDAkLQQAhGyAAQQA2AhwgACABNgIUIABB8YiAgAA2AhAgAEELNgIMDAgLQQAhGyAAQQA2AhwgACABNgIUIABBiI2AgAA2AhAgAEEKNgIMDAcLIABBAjYCHCAAIAE2AhQgAEGgkoCAADYCECAAQRY2AgxBACEbDAYLQQEhGwwFC0HCACEbIAEiBCACRg0EIANBCGogACAEIAJB+KWAgABBChC5gICAACADKAIMIQQgAygCCA4DAQQCAAsQv4CAgAAACyAAQQA2AhwgAEG5koCAADYCECAAQRc2AgwgACAEQQFqNgIUQQAhGwwCCyAAQQA2AhwgACAENgIUIABBzpKAgAA2AhAgAEEJNgIMQQAhGwwBCwJAIAEiBCACRw0AQRQhGwwBCyAAQYmAgIAANgIIIAAgBDYCBEETIRsLIANBEGokgICAgAAgGwuvAQECfyABKAIAIQYCQAJAIAIgA0YNACAEIAZqIQQgBiADaiACayEHIAIgBkF/cyAFaiIGaiEFA0ACQCACLQAAIAQtAABGDQBBAiEEDAMLAkAgBg0AQQAhBCAFIQIMAwsgBkF/aiEGIARBAWohBCACQQFqIgIgA0cNAAsgByEGIAMhAgsgAEEBNgIAIAEgBjYCACAAIAI2AgQPCyABQQA2AgAgACAENgIAIAAgAjYCBAsKACAAELuAgIAAC5U3AQt/I4CAgIAAQRBrIgEkgICAgAACQEEAKALAs4CAAA0AQQAQvoCAgABBoLeEgABrIgJB2QBJDQBBACEDAkBBACgCgLeAgAAiBA0AQQBCfzcCjLeAgABBAEKAgISAgIDAADcChLeAgABBACABQQhqQXBxQdiq1aoFcyIENgKAt4CAAEEAQQA2ApS3gIAAQQBBADYC5LaAgAALQQAgAjYC7LaAgABBAEGgt4SAADYC6LaAgABBAEGgt4SAADYCuLOAgABBACAENgLMs4CAAEEAQX82AsizgIAAA0AgA0Hks4CAAGogA0HYs4CAAGoiBDYCACAEIANB0LOAgABqIgU2AgAgA0Hcs4CAAGogBTYCACADQeyzgIAAaiADQeCzgIAAaiIFNgIAIAUgBDYCACADQfSzgIAAaiADQeizgIAAaiIENgIAIAQgBTYCACADQfCzgIAAaiAENgIAIANBIGoiA0GAAkcNAAtBoLeEgABBeEGgt4SAAGtBD3FBAEGgt4SAAEEIakEPcRsiA2oiBEEEaiACIANrQUhqIgNBAXI2AgBBAEEAKAKQt4CAADYCxLOAgABBACAENgLAs4CAAEEAIAM2ArSzgIAAIAJBoLeEgABqQUxqQTg2AgALAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKos4CAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQAgA0EBcSAEckEBcyIFQQN0IgBB2LOAgABqKAIAIgRBCGohAwJAAkAgBCgCCCICIABB0LOAgABqIgBHDQBBACAGQX4gBXdxNgKos4CAAAwBCyAAIAI2AgggAiAANgIMCyAEIAVBA3QiBUEDcjYCBCAEIAVqQQRqIgQgBCgCAEEBcjYCAAwMCyACQQAoArCzgIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgVBA3QiAEHYs4CAAGooAgAiBCgCCCIDIABB0LOAgABqIgBHDQBBACAGQX4gBXdxIgY2AqizgIAADAELIAAgAzYCCCADIAA2AgwLIARBCGohAyAEIAJBA3I2AgQgBCAFQQN0IgVqIAUgAmsiBTYCACAEIAJqIgAgBUEBcjYCBAJAIAdFDQAgB0EDdiIIQQN0QdCzgIAAaiECQQAoAryzgIAAIQQCQAJAIAZBASAIdCIIcQ0AQQAgBiAIcjYCqLOAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIIC0EAIAA2AryzgIAAQQAgBTYCsLOAgAAMDAtBACgCrLOAgAAiCUUNASAJQQAgCWtxQX9qIgMgA0EMdkEQcSIDdiIEQQV2QQhxIgUgA3IgBCAFdiIDQQJ2QQRxIgRyIAMgBHYiA0EBdkECcSIEciADIAR2IgNBAXZBAXEiBHIgAyAEdmpBAnRB2LWAgABqKAIAIgAoAgRBeHEgAmshBCAAIQUCQANAAkAgBSgCECIDDQAgBUEUaigCACIDRQ0CCyADKAIEQXhxIAJrIgUgBCAFIARJIgUbIQQgAyAAIAUbIQAgAyEFDAALCyAAKAIYIQoCQCAAKAIMIgggAEYNAEEAKAK4s4CAACAAKAIIIgNLGiAIIAM2AgggAyAINgIMDAsLAkAgAEEUaiIFKAIAIgMNACAAKAIQIgNFDQMgAEEQaiEFCwNAIAUhCyADIghBFGoiBSgCACIDDQAgCEEQaiEFIAgoAhAiAw0ACyALQQA2AgAMCgtBfyECIABBv39LDQAgAEETaiIDQXBxIQJBACgCrLOAgAAiB0UNAEEAIQsCQCACQYACSQ0AQR8hCyACQf///wdLDQAgA0EIdiIDIANBgP4/akEQdkEIcSIDdCIEIARBgOAfakEQdkEEcSIEdCIFIAVBgIAPakEQdkECcSIFdEEPdiADIARyIAVyayIDQQF0IAIgA0EVanZBAXFyQRxqIQsLQQAgAmshBAJAAkACQAJAIAtBAnRB2LWAgABqKAIAIgUNAEEAIQNBACEIDAELQQAhAyACQQBBGSALQQF2ayALQR9GG3QhAEEAIQgDQAJAIAUoAgRBeHEgAmsiBiAETw0AIAYhBCAFIQggBg0AQQAhBCAFIQggBSEDDAMLIAMgBUEUaigCACIGIAYgBSAAQR12QQRxakEQaigCACIFRhsgAyAGGyEDIABBAXQhACAFDQALCwJAIAMgCHINAEEAIQhBAiALdCIDQQAgA2tyIAdxIgNFDQMgA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBUEFdkEIcSIAIANyIAUgAHYiA0ECdkEEcSIFciADIAV2IgNBAXZBAnEiBXIgAyAFdiIDQQF2QQFxIgVyIAMgBXZqQQJ0Qdi1gIAAaigCACEDCyADRQ0BCwNAIAMoAgRBeHEgAmsiBiAESSEAAkAgAygCECIFDQAgA0EUaigCACEFCyAGIAQgABshBCADIAggABshCCAFIQMgBQ0ACwsgCEUNACAEQQAoArCzgIAAIAJrTw0AIAgoAhghCwJAIAgoAgwiACAIRg0AQQAoArizgIAAIAgoAggiA0saIAAgAzYCCCADIAA2AgwMCQsCQCAIQRRqIgUoAgAiAw0AIAgoAhAiA0UNAyAIQRBqIQULA0AgBSEGIAMiAEEUaiIFKAIAIgMNACAAQRBqIQUgACgCECIDDQALIAZBADYCAAwICwJAQQAoArCzgIAAIgMgAkkNAEEAKAK8s4CAACEEAkACQCADIAJrIgVBEEkNACAEIAJqIgAgBUEBcjYCBEEAIAU2ArCzgIAAQQAgADYCvLOAgAAgBCADaiAFNgIAIAQgAkEDcjYCBAwBCyAEIANBA3I2AgQgAyAEakEEaiIDIAMoAgBBAXI2AgBBAEEANgK8s4CAAEEAQQA2ArCzgIAACyAEQQhqIQMMCgsCQEEAKAK0s4CAACIAIAJNDQBBACgCwLOAgAAiAyACaiIEIAAgAmsiBUEBcjYCBEEAIAU2ArSzgIAAQQAgBDYCwLOAgAAgAyACQQNyNgIEIANBCGohAwwKCwJAAkBBACgCgLeAgABFDQBBACgCiLeAgAAhBAwBC0EAQn83Aoy3gIAAQQBCgICEgICAwAA3AoS3gIAAQQAgAUEMakFwcUHYqtWqBXM2AoC3gIAAQQBBADYClLeAgABBAEEANgLktoCAAEGAgAQhBAtBACEDAkAgBCACQccAaiIHaiIGQQAgBGsiC3EiCCACSw0AQQBBMDYCmLeAgAAMCgsCQEEAKALgtoCAACIDRQ0AAkBBACgC2LaAgAAiBCAIaiIFIARNDQAgBSADTQ0BC0EAIQNBAEEwNgKYt4CAAAwKC0EALQDktoCAAEEEcQ0EAkACQAJAQQAoAsCzgIAAIgRFDQBB6LaAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiAESw0DCyADKAIIIgMNAAsLQQAQvoCAgAAiAEF/Rg0FIAghBgJAQQAoAoS3gIAAIgNBf2oiBCAAcUUNACAIIABrIAQgAGpBACADa3FqIQYLIAYgAk0NBSAGQf7///8HSw0FAkBBACgC4LaAgAAiA0UNAEEAKALYtoCAACIEIAZqIgUgBE0NBiAFIANLDQYLIAYQvoCAgAAiAyAARw0BDAcLIAYgAGsgC3EiBkH+////B0sNBCAGEL6AgIAAIgAgAygCACADKAIEakYNAyAAIQMLAkAgA0F/Rg0AIAJByABqIAZNDQACQCAHIAZrQQAoAoi3gIAAIgRqQQAgBGtxIgRB/v///wdNDQAgAyEADAcLAkAgBBC+gICAAEF/Rg0AIAQgBmohBiADIQAMBwtBACAGaxC+gICAABoMBAsgAyEAIANBf0cNBQwDC0EAIQgMBwtBACEADAULIABBf0cNAgtBAEEAKALktoCAAEEEcjYC5LaAgAALIAhB/v///wdLDQEgCBC+gICAACEAQQAQvoCAgAAhAyAAQX9GDQEgA0F/Rg0BIAAgA08NASADIABrIgYgAkE4ak0NAQtBAEEAKALYtoCAACAGaiIDNgLYtoCAAAJAIANBACgC3LaAgABNDQBBACADNgLctoCAAAsCQAJAAkACQEEAKALAs4CAACIERQ0AQei2gIAAIQMDQCAAIAMoAgAiBSADKAIEIghqRg0CIAMoAggiAw0ADAMLCwJAAkBBACgCuLOAgAAiA0UNACAAIANPDQELQQAgADYCuLOAgAALQQAhA0EAIAY2Auy2gIAAQQAgADYC6LaAgABBAEF/NgLIs4CAAEEAQQAoAoC3gIAANgLMs4CAAEEAQQA2AvS2gIAAA0AgA0Hks4CAAGogA0HYs4CAAGoiBDYCACAEIANB0LOAgABqIgU2AgAgA0Hcs4CAAGogBTYCACADQeyzgIAAaiADQeCzgIAAaiIFNgIAIAUgBDYCACADQfSzgIAAaiADQeizgIAAaiIENgIAIAQgBTYCACADQfCzgIAAaiAENgIAIANBIGoiA0GAAkcNAAsgAEF4IABrQQ9xQQAgAEEIakEPcRsiA2oiBCAGIANrQUhqIgNBAXI2AgRBAEEAKAKQt4CAADYCxLOAgABBACAENgLAs4CAAEEAIAM2ArSzgIAAIAYgAGpBTGpBODYCAAwCCyADLQAMQQhxDQAgBSAESw0AIAAgBE0NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoArSzgIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKAKQt4CAADYCxLOAgABBACAFNgK0s4CAAEEAIAA2AsCzgIAAIAsgBGpBBGpBODYCAAwBCwJAIABBACgCuLOAgAAiC08NAEEAIAA2ArizgIAAIAAhCwsgACAGaiEIQei2gIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgCEYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtB6LaAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiBiACQQNyNgIEIAhBeCAIa0EPcUEAIAhBCGpBD3EbaiIIIAYgAmoiAmshBQJAIAQgCEcNAEEAIAI2AsCzgIAAQQBBACgCtLOAgAAgBWoiAzYCtLOAgAAgAiADQQFyNgIEDAMLAkBBACgCvLOAgAAgCEcNAEEAIAI2AryzgIAAQQBBACgCsLOAgAAgBWoiAzYCsLOAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAgoAgQiA0EDcUEBRw0AIANBeHEhBwJAAkAgA0H/AUsNACAIKAIIIgQgA0EDdiILQQN0QdCzgIAAaiIARhoCQCAIKAIMIgMgBEcNAEEAQQAoAqizgIAAQX4gC3dxNgKos4CAAAwCCyADIABGGiADIAQ2AgggBCADNgIMDAELIAgoAhghCQJAAkAgCCgCDCIAIAhGDQAgCyAIKAIIIgNLGiAAIAM2AgggAyAANgIMDAELAkAgCEEUaiIDKAIAIgQNACAIQRBqIgMoAgAiBA0AQQAhAAwBCwNAIAMhCyAEIgBBFGoiAygCACIEDQAgAEEQaiEDIAAoAhAiBA0ACyALQQA2AgALIAlFDQACQAJAIAgoAhwiBEECdEHYtYCAAGoiAygCACAIRw0AIAMgADYCACAADQFBAEEAKAKss4CAAEF+IAR3cTYCrLOAgAAMAgsgCUEQQRQgCSgCECAIRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgCCgCECIDRQ0AIAAgAzYCECADIAA2AhgLIAgoAhQiA0UNACAAQRRqIAM2AgAgAyAANgIYCyAHIAVqIQUgCCAHaiEICyAIIAgoAgRBfnE2AgQgAiAFaiAFNgIAIAIgBUEBcjYCBAJAIAVB/wFLDQAgBUEDdiIEQQN0QdCzgIAAaiEDAkACQEEAKAKos4CAACIFQQEgBHQiBHENAEEAIAUgBHI2AqizgIAAIAMhBAwBCyADKAIIIQQLIAQgAjYCDCADIAI2AgggAiADNgIMIAIgBDYCCAwDC0EfIQMCQCAFQf///wdLDQAgBUEIdiIDIANBgP4/akEQdkEIcSIDdCIEIARBgOAfakEQdkEEcSIEdCIAIABBgIAPakEQdkECcSIAdEEPdiADIARyIAByayIDQQF0IAUgA0EVanZBAXFyQRxqIQMLIAIgAzYCHCACQgA3AhAgA0ECdEHYtYCAAGohBAJAQQAoAqyzgIAAIgBBASADdCIIcQ0AIAQgAjYCAEEAIAAgCHI2AqyzgIAAIAIgBDYCGCACIAI2AgggAiACNgIMDAMLIAVBAEEZIANBAXZrIANBH0YbdCEDIAQoAgAhAANAIAAiBCgCBEF4cSAFRg0CIANBHXYhACADQQF0IQMgBCAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBDYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBiADa0FIaiIDQQFyNgIEIAhBTGpBODYCACAEIAVBNyAFa0EPcUEAIAVBSWpBD3EbakFBaiIIIAggBEEQakkbIghBIzYCBEEAQQAoApC3gIAANgLEs4CAAEEAIAs2AsCzgIAAQQAgAzYCtLOAgAAgCEEQakEAKQLwtoCAADcCACAIQQApAui2gIAANwIIQQAgCEEIajYC8LaAgABBACAGNgLstoCAAEEAIAA2Aui2gIAAQQBBADYC9LaAgAAgCEEkaiEDA0AgA0EHNgIAIAUgA0EEaiIDSw0ACyAIIARGDQMgCCAIKAIEQX5xNgIEIAggCCAEayIGNgIAIAQgBkEBcjYCBAJAIAZB/wFLDQAgBkEDdiIFQQN0QdCzgIAAaiEDAkACQEEAKAKos4CAACIAQQEgBXQiBXENAEEAIAAgBXI2AqizgIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAGQf///wdLDQAgBkEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiADIAVyIAByayIDQQF0IAYgA0EVanZBAXFyQRxqIQMLIARCADcCECAEQRxqIAM2AgAgA0ECdEHYtYCAAGohBQJAQQAoAqyzgIAAIgBBASADdCIIcQ0AIAUgBDYCAEEAIAAgCHI2AqyzgIAAIARBGGogBTYCACAEIAQ2AgggBCAENgIMDAQLIAZBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhAANAIAAiBSgCBEF4cSAGRg0DIANBHXYhACADQQF0IQMgBSAAQQRxakEQaiIIKAIAIgANAAsgCCAENgIAIARBGGogBTYCACAEIAQ2AgwgBCAENgIIDAMLIAQoAggiAyACNgIMIAQgAjYCCCACQQA2AhggAiAENgIMIAIgAzYCCAsgBkEIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQRhqQQA2AgAgBCAFNgIMIAQgAzYCCAtBACgCtLOAgAAiAyACTQ0AQQAoAsCzgIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgK0s4CAAEEAIAU2AsCzgIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYCmLeAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEHYtYCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKss4CAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgAyAIakEEaiIDIAMoAgBBAXI2AgAMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEEDdiIEQQN0QdCzgIAAaiEDAkACQEEAKAKos4CAACIFQQEgBHQiBHENAEEAIAUgBHI2AqizgIAAIAMhBAwBCyADKAIIIQQLIAQgADYCDCADIAA2AgggACADNgIMIAAgBDYCCAwBC0EfIQMCQCAEQf///wdLDQAgBEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCICIAJBgIAPakEQdkECcSICdEEPdiADIAVyIAJyayIDQQF0IAQgA0EVanZBAXFyQRxqIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEHYtYCAAGohBQJAIAdBASADdCICcQ0AIAUgADYCAEEAIAcgAnI2AqyzgIAAIAAgBTYCGCAAIAA2AgggACAANgIMDAELIARBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhAgJAA0AgAiIFKAIEQXhxIARGDQEgA0EddiECIANBAXQhAyAFIAJBBHFqQRBqIgYoAgAiAg0ACyAGIAA2AgAgACAFNgIYIAAgADYCDCAAIAA2AggMAQsgBSgCCCIDIAA2AgwgBSAANgIIIABBADYCGCAAIAU2AgwgACADNgIICyAIQQhqIQMMAQsCQCAKRQ0AAkACQCAAIAAoAhwiBUECdEHYtYCAAGoiAygCAEcNACADIAg2AgAgCA0BQQAgCUF+IAV3cTYCrLOAgAAMAgsgCkEQQRQgCigCECAARhtqIAg2AgAgCEUNAQsgCCAKNgIYAkAgACgCECIDRQ0AIAggAzYCECADIAg2AhgLIABBFGooAgAiA0UNACAIQRRqIAM2AgAgAyAINgIYCwJAAkAgBEEPSw0AIAAgBCACaiIDQQNyNgIEIAMgAGpBBGoiAyADKAIAQQFyNgIADAELIAAgAmoiBSAEQQFyNgIEIAAgAkEDcjYCBCAFIARqIAQ2AgACQCAHRQ0AIAdBA3YiCEEDdEHQs4CAAGohAkEAKAK8s4CAACEDAkACQEEBIAh0IgggBnENAEEAIAggBnI2AqizgIAAIAIhCAwBCyACKAIIIQgLIAggAzYCDCACIAM2AgggAyACNgIMIAMgCDYCCAtBACAFNgK8s4CAAEEAIAQ2ArCzgIAACyAAQQhqIQMLIAFBEGokgICAgAAgAwsKACAAEL2AgIAAC/ANAQd/AkAgAEUNACAAQXhqIgEgAEF8aigCACICQXhxIgBqIQMCQCACQQFxDQAgAkEDcUUNASABIAEoAgAiAmsiAUEAKAK4s4CAACIESQ0BIAIgAGohAAJAQQAoAryzgIAAIAFGDQACQCACQf8BSw0AIAEoAggiBCACQQN2IgVBA3RB0LOAgABqIgZGGgJAIAEoAgwiAiAERw0AQQBBACgCqLOAgABBfiAFd3E2AqizgIAADAMLIAIgBkYaIAIgBDYCCCAEIAI2AgwMAgsgASgCGCEHAkACQCABKAIMIgYgAUYNACAEIAEoAggiAksaIAYgAjYCCCACIAY2AgwMAQsCQCABQRRqIgIoAgAiBA0AIAFBEGoiAigCACIEDQBBACEGDAELA0AgAiEFIAQiBkEUaiICKAIAIgQNACAGQRBqIQIgBigCECIEDQALIAVBADYCAAsgB0UNAQJAAkAgASgCHCIEQQJ0Qdi1gIAAaiICKAIAIAFHDQAgAiAGNgIAIAYNAUEAQQAoAqyzgIAAQX4gBHdxNgKss4CAAAwDCyAHQRBBFCAHKAIQIAFGG2ogBjYCACAGRQ0CCyAGIAc2AhgCQCABKAIQIgJFDQAgBiACNgIQIAIgBjYCGAsgASgCFCICRQ0BIAZBFGogAjYCACACIAY2AhgMAQsgAygCBCICQQNxQQNHDQAgAyACQX5xNgIEQQAgADYCsLOAgAAgASAAaiAANgIAIAEgAEEBcjYCBA8LIAMgAU0NACADKAIEIgJBAXFFDQACQAJAIAJBAnENAAJAQQAoAsCzgIAAIANHDQBBACABNgLAs4CAAEEAQQAoArSzgIAAIABqIgA2ArSzgIAAIAEgAEEBcjYCBCABQQAoAryzgIAARw0DQQBBADYCsLOAgABBAEEANgK8s4CAAA8LAkBBACgCvLOAgAAgA0cNAEEAIAE2AryzgIAAQQBBACgCsLOAgAAgAGoiADYCsLOAgAAgASAAQQFyNgIEIAEgAGogADYCAA8LIAJBeHEgAGohAAJAAkAgAkH/AUsNACADKAIIIgQgAkEDdiIFQQN0QdCzgIAAaiIGRhoCQCADKAIMIgIgBEcNAEEAQQAoAqizgIAAQX4gBXdxNgKos4CAAAwCCyACIAZGGiACIAQ2AgggBCACNgIMDAELIAMoAhghBwJAAkAgAygCDCIGIANGDQBBACgCuLOAgAAgAygCCCICSxogBiACNgIIIAIgBjYCDAwBCwJAIANBFGoiAigCACIEDQAgA0EQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0AAkACQCADKAIcIgRBAnRB2LWAgABqIgIoAgAgA0cNACACIAY2AgAgBg0BQQBBACgCrLOAgABBfiAEd3E2AqyzgIAADAILIAdBEEEUIAcoAhAgA0YbaiAGNgIAIAZFDQELIAYgBzYCGAJAIAMoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyADKAIUIgJFDQAgBkEUaiACNgIAIAIgBjYCGAsgASAAaiAANgIAIAEgAEEBcjYCBCABQQAoAryzgIAARw0BQQAgADYCsLOAgAAPCyADIAJBfnE2AgQgASAAaiAANgIAIAEgAEEBcjYCBAsCQCAAQf8BSw0AIABBA3YiAkEDdEHQs4CAAGohAAJAAkBBACgCqLOAgAAiBEEBIAJ0IgJxDQBBACAEIAJyNgKos4CAACAAIQIMAQsgACgCCCECCyACIAE2AgwgACABNgIIIAEgADYCDCABIAI2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAFCADcCECABQRxqIAI2AgAgAkECdEHYtYCAAGohBAJAAkBBACgCrLOAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCrLOAgAAgAUEYaiAENgIAIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABQRhqIAQ2AgAgASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEYakEANgIAIAEgBDYCDCABIAA2AggLQQBBACgCyLOAgABBf2oiAUF/IAEbNgLIs4CAAAsLTgACQCAADQA/AEEQdA8LAkAgAEH//wNxDQAgAEF/TA0AAkAgAEEQdkAAIgBBf0cNAEEAQTA2Api3gIAAQX8PCyAAQRB0DwsQv4CAgAAACwQAAAALC64rAQBBgAgLpisBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHBhcmFtZXRlcnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAE1LQUNUSVZJVFkAQ09QWQBOT1RJRlkAUExBWQBQVVQAQ0hFQ0tPVVQAUE9TVABSRVBPUlQASFBFX0lOVkFMSURfQ09OU1RBTlQAR0VUAEhQRV9TVFJJQ1QAUkVESVJFQ1QAQ09OTkVDVABIUEVfSU5WQUxJRF9TVEFUVVMAT1BUSU9OUwBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBIUEVfSU5WQUxJRF9VUkwATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAFBBVVNFAFBVUkdFAE1FUkdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QAUFJPUEZJTkQAVU5CSU5EAFJFQklORABIUEVfTEZfRVhQRUNURUQASFBFX1BBVVNFRABIRUFEAEV4cGVjdGVkIEhUVFAvAIwLAAB/CwAAgwoAADkNAADACwAADQsAAA8NAABlCwAAagoAACMLAABMCwAApQsAACMMAACfCgAAjAwAAPcLAAA3CwAAPwwAAG0MAADfCgAAVwwAAEkNAAC0DAAAxwwAANYKAACFDAAAfwoAAFQNAABeCgAAUQoAAJcKAACyCgAA7QwAAEAKAACcCwAAdQsAADoMAAAiDQAA5AsAAPALAACaCwAANA0AADINAAArDQAAewsAAGMKAAA1CgAAVQoAAK4MAADuCwAARQoAAP4MAAD8DAAA6AsAAKgMAADzCgAAlQsAAJMLAADdDAAAoQsAAPMMAADkDAAA/goAAEwKAACiDAAABAsAAMgKAAC6CgAAjgoAAAgNAADeCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWxvc2VlZXAtYWxpdmUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZWN0aW9uZW50LWxlbmd0aG9ucm94eS1jb25uZWN0aW9uAAAAAAAAAAAAAAAAAAAAcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAAAAAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAEAAAIAAAAAAAAAAAAAAAAAAAAAAAADBAAABAQEBAQEBAQEBAQFBAQEBAQEBAQEBAQEAAQABgcEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAACAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv"; - } -}); - -// lib/llhttp/llhttp_simd.wasm.js -var require_llhttp_simd_wasm = __commonJS({ - "lib/llhttp/llhttp_simd.wasm.js"(exports2, module2) { - module2.exports = "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzk4AwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAYGAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAAMEBQFwAQ4OBQMBAAIGCAF/AUGgtwQLB/UEHwZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAJGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAKGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQA1DGxsaHR0cF9hbGxvYwAMBm1hbGxvYwA6C2xsaHR0cF9mcmVlAA0EZnJlZQA8D2xsaHR0cF9nZXRfdHlwZQAOFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAPFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAQEWxsaHR0cF9nZXRfbWV0aG9kABEWbGxodHRwX2dldF9zdGF0dXNfY29kZQASEmxsaHR0cF9nZXRfdXBncmFkZQATDGxsaHR0cF9yZXNldAAUDmxsaHR0cF9leGVjdXRlABUUbGxodHRwX3NldHRpbmdzX2luaXQAFg1sbGh0dHBfZmluaXNoABcMbGxodHRwX3BhdXNlABgNbGxodHRwX3Jlc3VtZQAZG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAaEGxsaHR0cF9nZXRfZXJybm8AGxdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAcF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uAB0UbGxodHRwX2dldF9lcnJvcl9wb3MAHhFsbGh0dHBfZXJybm9fbmFtZQAfEmxsaHR0cF9tZXRob2RfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mADMJEwEAQQELDQECAwQFCwYHLiooJCYK2aQCOAIACwgAEIiAgIAACxkAIAAQtoCAgAAaIAAgAjYCNCAAIAE6ACgLHAAgACAALwEyIAAtAC4gABC1gICAABCAgICAAAspAQF/QTgQuoCAgAAiARC2gICAABogAUGAiICAADYCNCABIAA6ACggAQsKACAAELyAgIAACwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BMgsHACAALQAuC0UBBH8gACgCGCEBIAAtAC0hAiAALQAoIQMgACgCNCEEIAAQtoCAgAAaIAAgBDYCNCAAIAM6ACggACACOgAtIAAgATYCGAsRACAAIAEgASACahC3gICAAAs+AQF7IAD9DAAAAAAAAAAAAAAAAAAAAAAiAf0LAgAgAEEwakIANwIAIABBIGogAf0LAgAgAEEQaiAB/QsCAAtnAQF/QQAhAQJAIAAoAgwNAAJAAkACQAJAIAAtAC8OAwEAAwILIAAoAjQiAUUNACABKAIcIgFFDQAgACABEYCAgIAAACIBDQMLQQAPCxC/gICAAAALIABBr5GAgAA2AhBBDiEBCyABCx4AAkAgACgCDA0AIABBtJOAgAA2AhAgAEEVNgIMCwsWAAJAIAAoAgxBFUcNACAAQQA2AgwLCxYAAkAgACgCDEEWRw0AIABBADYCDAsLBwAgACgCDAsHACAAKAIQCwkAIAAgATYCEAsHACAAKAIUCyIAAkAgAEEZSQ0AEL+AgIAAAAsgAEECdEHomoCAAGooAgALIgACQCAAQS5JDQAQv4CAgAAACyAAQQJ0QcybgIAAaigCAAsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCACIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIEIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBnI6AgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAigiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI0IgRFDQAgBCgCCCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQdKKgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCNCIERQ0AIAQoAgwiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEGNk4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCMCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIQIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBw5CAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAjQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCFCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIcIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCNCIERQ0AIAQoAhgiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEHSiICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCICIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIkIgRFDQAgACAEEYCAgIAAACEDCyADC0UBAX8CQAJAIAAvATBBFHFBFEcNAEEBIQMgAC0AKEEBRg0BIAAvATJB5QBGIQMMAQsgAC0AKUEFRiEDCyAAIAM6AC5BAAv0AQEDf0EBIQMCQCAALwEwIgRBCHENACAAKQMgQgBSIQMLAkACQCAALQAuRQ0AQQEhBSAALQApQQVGDQFBASEFIARBwABxRSADcUEBRw0BC0EAIQUgBEHAAHENAEECIQUgBEEIcQ0AAkAgBEGABHFFDQACQCAALQAoQQFHDQBBBSEFIAAtAC1BAnFFDQILQQQPCwJAIARBIHENAAJAIAAtAChBAUYNACAALwEyIgBBnH9qQeQASQ0AIABBzAFGDQAgAEGwAkYNAEEEIQUgBEGIBHFBgARGDQIgBEEocUUNAgtBAA8LQQBBAyAAKQMgUBshBQsgBQtdAQJ/QQAhAQJAIAAtAChBAUYNACAALwEyIgJBnH9qQeQASQ0AIAJBzAFGDQAgAkGwAkYNACAALwEwIgBBwABxDQBBASEBIABBiARxQYAERg0AIABBKHFFIQELIAELogEBA38CQAJAAkAgAC0AKkUNACAALQArRQ0AQQAhAyAALwEwIgRBAnFFDQEMAgtBACEDIAAvATAiBEEBcUUNAQtBASEDIAAtAChBAUYNACAALwEyIgVBnH9qQeQASQ0AIAVBzAFGDQAgBUGwAkYNACAEQcAAcQ0AQQAhAyAEQYgEcUGABEYNACAEQShxQQBHIQMLIABBADsBMCAAQQA6AC8gAwuUAQECfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEBIAAvATAiAkECcUUNAQwCC0EAIQEgAC8BMCICQQFxRQ0BC0EBIQEgAC0AKEEBRg0AIAAvATIiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AIAJBwABxDQBBACEBIAJBiARxQYAERg0AIAJBKHFBAEchAQsgAQtIAQF7IABBEGr9DAAAAAAAAAAAAAAAAAAAAAAiAf0LAwAgACAB/QsDACAAQTBqQgA3AwAgAEEgaiAB/QsDACAAQbgBNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQuICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC/LKAQMZfwN+BX8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDyABIRAgASERIAEhEiABIRMgASEUIAEhFSABIRYgASEXIAEhGCABIRkgASEaAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhtBf2oOuAG1AQG0AQIDBAUGBwgJCgsMDQ4PELsBugEREhOzARQVFhcYGRobHB0eHyAhsgGxASIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTq2ATs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAQC3AQtBACEbDK8BC0EQIRsMrgELQQ8hGwytAQtBESEbDKwBC0ESIRsMqwELQRUhGwyqAQtBFiEbDKkBC0EXIRsMqAELQRghGwynAQtBGSEbDKYBC0EIIRsMpQELQRohGwykAQtBGyEbDKMBC0EUIRsMogELQRMhGwyhAQtBHCEbDKABC0EdIRsMnwELQR4hGwyeAQtBHyEbDJ0BC0GqASEbDJwBC0GrASEbDJsBC0EhIRsMmgELQSIhGwyZAQtBIyEbDJgBC0EkIRsMlwELQSUhGwyWAQtBrQEhGwyVAQtBJiEbDJQBC0EqIRsMkwELQQ4hGwySAQtBJyEbDJEBC0EoIRsMkAELQSkhGwyPAQtBLiEbDI4BC0ErIRsMjQELQa4BIRsMjAELQQ0hGwyLAQtBDCEbDIoBC0EvIRsMiQELQQshGwyIAQtBLCEbDIcBC0EtIRsMhgELQQohGwyFAQtBMSEbDIQBC0EwIRsMgwELQQkhGwyCAQtBICEbDIEBC0EyIRsMgAELQTMhGwx/C0E0IRsMfgtBNSEbDH0LQTYhGwx8C0E3IRsMewtBOCEbDHoLQTkhGwx5C0E6IRsMeAtBrAEhGwx3C0E7IRsMdgtBPCEbDHULQT0hGwx0C0E+IRsMcwtBPyEbDHILQcAAIRsMcQtBwQAhGwxwC0HCACEbDG8LQcMAIRsMbgtBxAAhGwxtC0EHIRsMbAtBxQAhGwxrC0EGIRsMagtBxgAhGwxpC0EFIRsMaAtBxwAhGwxnC0EEIRsMZgtByAAhGwxlC0HJACEbDGQLQcoAIRsMYwtBywAhGwxiC0EDIRsMYQtBzAAhGwxgC0HNACEbDF8LQc4AIRsMXgtB0AAhGwxdC0HPACEbDFwLQdEAIRsMWwtB0gAhGwxaC0ECIRsMWQtB0wAhGwxYC0HUACEbDFcLQdUAIRsMVgtB1gAhGwxVC0HXACEbDFQLQdgAIRsMUwtB2QAhGwxSC0HaACEbDFELQdsAIRsMUAtB3AAhGwxPC0HdACEbDE4LQd4AIRsMTQtB3wAhGwxMC0HgACEbDEsLQeEAIRsMSgtB4gAhGwxJC0HjACEbDEgLQeQAIRsMRwtB5QAhGwxGC0HmACEbDEULQecAIRsMRAtB6AAhGwxDC0HpACEbDEILQeoAIRsMQQtB6wAhGwxAC0HsACEbDD8LQe0AIRsMPgtB7gAhGww9C0HvACEbDDwLQfAAIRsMOwtB8QAhGww6C0HyACEbDDkLQfMAIRsMOAtB9AAhGww3C0H1ACEbDDYLQfYAIRsMNQtB9wAhGww0C0H4ACEbDDMLQfkAIRsMMgtB+gAhGwwxC0H7ACEbDDALQfwAIRsMLwtB/QAhGwwuC0H+ACEbDC0LQf8AIRsMLAtBgAEhGwwrC0GBASEbDCoLQYIBIRsMKQtBgwEhGwwoC0GEASEbDCcLQYUBIRsMJgtBhgEhGwwlC0GHASEbDCQLQYgBIRsMIwtBiQEhGwwiC0GKASEbDCELQYsBIRsMIAtBjAEhGwwfC0GNASEbDB4LQY4BIRsMHQtBjwEhGwwcC0GQASEbDBsLQZEBIRsMGgtBkgEhGwwZC0GTASEbDBgLQZQBIRsMFwtBlQEhGwwWC0GWASEbDBULQZcBIRsMFAtBmAEhGwwTC0GZASEbDBILQZ0BIRsMEQtBmgEhGwwQC0EBIRsMDwtBmwEhGwwOC0GcASEbDA0LQZ4BIRsMDAtBoAEhGwwLC0GfASEbDAoLQaEBIRsMCQtBogEhGwwIC0GjASEbDAcLQaQBIRsMBgtBpQEhGwwFC0GmASEbDAQLQacBIRsMAwtBqAEhGwwCC0GpASEbDAELQa8BIRsLA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBsOsAEAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRsdHyAhJCUmJygpKistLi8wMTc4Ojs+QUNERUZHSElKS0xNTk9QUVJTVFVXWVteX2BiZGVmZ2hpam1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQB3AHiAeMB5wH2AcMCwwILIAEiBCACRw3EAUG4ASEbDJIDCyABIhsgAkcNswFBqAEhGwyRAwsgASIBIAJHDWlB3gAhGwyQAwsgASIBIAJHDV9B1gAhGwyPAwsgASIBIAJHDVhB0QAhGwyOAwsgASIBIAJHDVRBzwAhGwyNAwsgASIBIAJHDVFBzQAhGwyMAwsgASIBIAJHDU5BywAhGwyLAwsgASIBIAJHDRFBDCEbDIoDCyABIgEgAkcNNUE0IRsMiQMLIAEiASACRw0xQTEhGwyIAwsgASIaIAJHDShBLiEbDIcDCyABIgEgAkcNJkEsIRsMhgMLIAEiASACRw0kQSshGwyFAwsgASIBIAJHDR1BIiEbDIQDCyAALQAuQQFGDfwCDMgBCyAAIAEiASACELSAgIAAQQFHDbUBDLYBCyAAIAEiASACEK2AgIAAIhsNtgEgASEBDLYCCwJAIAEiASACRw0AQQYhGwyBAwsgACABQQFqIgEgAhCwgICAACIbDbcBIAEhAQwPCyAAQgA3AyBBFCEbDPQCCyABIhsgAkcNCUEPIRsM/gILAkAgASIBIAJGDQAgAUEBaiEBQRIhGwzzAgtBByEbDP0CCyAAQgAgACkDICIcIAIgASIba60iHX0iHiAeIBxWGzcDICAcIB1WIh9FDbQBQQghGwz8AgsCQCABIgEgAkYNACAAQYmAgIAANgIIIAAgATYCBCABIQFBFiEbDPECC0EJIRsM+wILIAEhASAAKQMgUA2zASABIQEMswILAkAgASIBIAJHDQBBCyEbDPoCCyAAIAFBAWoiASACEK+AgIAAIhsNswEgASEBDLMCCwNAAkAgAS0AAEGQnYCAAGotAAAiG0EBRg0AIBtBAkcNtQEgAUEBaiEBDAMLIAFBAWoiASACRw0AC0EMIRsM+AILAkAgASIBIAJHDQBBDSEbDPgCCwJAAkAgAS0AACIbQXNqDhQBtwG3AbcBtwG3AbcBtwG3AbcBtwG3AbcBtwG3AbcBtwG3AbcBALUBCyABQQFqIQEMtQELIAFBAWohAQtBGSEbDOsCCwJAIAEiGyACRw0AQQ4hGwz2AgtCACEcIBshAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgGy0AAEFQag43yQHIAQABAgMEBQYHxALEAsQCxALEAsQCxAIICQoLDA3EAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCDg8QERITxAILQgIhHAzIAQtCAyEcDMcBC0IEIRwMxgELQgUhHAzFAQtCBiEcDMQBC0IHIRwMwwELQgghHAzCAQtCCSEcDMEBC0IKIRwMwAELQgshHAy/AQtCDCEcDL4BC0INIRwMvQELQg4hHAy8AQtCDyEcDLsBC0IKIRwMugELQgshHAy5AQtCDCEcDLgBC0INIRwMtwELQg4hHAy2AQtCDyEcDLUBC0IAIRwCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBstAABBUGoON8gBxwEAAQIDBAUGB8kByQHJAckByQHJAckBCAkKCwwNyQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAckByQHJAQ4PEBESE8kBC0ICIRwMxwELQgMhHAzGAQtCBCEcDMUBC0IFIRwMxAELQgYhHAzDAQtCByEcDMIBC0IIIRwMwQELQgkhHAzAAQtCCiEcDL8BC0ILIRwMvgELQgwhHAy9AQtCDSEcDLwBC0IOIRwMuwELQg8hHAy6AQtCCiEcDLkBC0ILIRwMuAELQgwhHAy3AQtCDSEcDLYBC0IOIRwMtQELQg8hHAy0AQsgAEIAIAApAyAiHCACIAEiG2utIh19Ih4gHiAcVhs3AyAgHCAdViIfRQ21AUERIRsM8wILAkAgASIBIAJGDQAgAEGJgICAADYCCCAAIAE2AgQgASEBQRwhGwzoAgtBEiEbDPICCyAAIAEiGyACELKAgIAAQX9qDgWnAQCoAgG0AbUBC0ETIRsM5QILIABBAToALyAbIQEM7gILIAEiASACRw21AUEWIRsM7gILIAEiGCACRw0aQTUhGwztAgsCQCABIgEgAkcNAEEaIRsM7QILIABBADYCBCAAQYqAgIAANgIIIAAgASABEKqAgIAAIhsNtwEgASEBDLoBCwJAIAEiGyACRw0AQRshGwzsAgsCQCAbLQAAIgFBIEcNACAbQQFqIQEMGwsgAUEJRw23ASAbQQFqIQEMGgsCQCABIgEgAkYNACABQQFqIQEMFQtBHCEbDOoCCwJAIAEiGyACRw0AQR0hGwzqAgsCQCAbLQAAIgFBCUcNACAbIQEM1gILIAFBIEcNtgEgGyEBDNUCCwJAIAEiASACRw0AQR4hGwzpAgsgAS0AAEEKRw25ASABQQFqIQEMpgILAkAgASIZIAJHDQBBICEbDOgCCyAZLQAAQXZqDgS8AboBugG5AboBCwNAAkAgAS0AACIbQSBGDQACQCAbQXZqDgQAwwHDAQDBAQsgASEBDMkBCyABQQFqIgEgAkcNAAtBIiEbDOYCC0EjIRsgASIgIAJGDeUCIAIgIGsgACgCACIhaiEiICAhIyAhIQECQANAICMtAAAiH0EgciAfIB9Bv39qQf8BcUEaSRtB/wFxIAFBkJ+AgABqLQAARw0BIAFBA0YN1gIgAUEBaiEBICNBAWoiIyACRw0ACyAAICI2AgAM5gILIABBADYCACAjIQEMwAELQSQhGyABIiAgAkYN5AIgAiAgayAAKAIAIiFqISIgICEjICEhAQJAA0AgIy0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUGUn4CAAGotAABHDQEgAUEIRg3CASABQQFqIQEgI0EBaiIjIAJHDQALIAAgIjYCAAzlAgsgAEEANgIAICMhAQy/AQtBJSEbIAEiICACRg3jAiACICBrIAAoAgAiIWohIiAgISMgISEBAkADQCAjLQAAIh9BIHIgHyAfQb9/akH/AXFBGkkbQf8BcSABQfClgIAAai0AAEcNASABQQVGDcIBIAFBAWohASAjQQFqIiMgAkcNAAsgACAiNgIADOQCCyAAQQA2AgAgIyEBDL4BCwJAIAEiASACRg0AA0ACQCABLQAAQaChgIAAai0AACIbQQFGDQAgG0ECRg0LIAEhAQzGAQsgAUEBaiIBIAJHDQALQSEhGwzjAgtBISEbDOICCwJAIAEiASACRg0AA0ACQCABLQAAIhtBIEYNACAbQXZqDgTCAcMBwwHCAcMBCyABQQFqIgEgAkcNAAtBKSEbDOICC0EpIRsM4QILA0ACQCABLQAAIhtBIEYNACAbQXZqDgTCAQQEwgEECyABQQFqIgEgAkcNAAtBKyEbDOACCwNAAkAgAS0AACIbQSBGDQAgG0EJRw0ECyABQQFqIgEgAkcNAAtBLCEbDN8CCwNAAkAgGi0AAEGgoYCAAGotAAAiAUEBRg0AIAFBAkcNxwEgGkEBaiEBDJQCCyAaQQFqIhogAkcNAAtBLiEbDN4CCyABIQEMwgELIAEhAQzBAQtBLyEbIAEiIyACRg3bAiACICNrIAAoAgAiIGohISAjIR8gICEBA0AgHy0AAEEgciABQaCjgIAAai0AAEcNzgIgAUEGRg3NAiABQQFqIQEgH0EBaiIfIAJHDQALIAAgITYCAAzbAgsCQCABIhogAkcNAEEwIRsM2wILIABBioCAgAA2AgggACAaNgIEIBohASAALQAsQX9qDgSzAbwBvgHAAZoCCyABQQFqIQEMsgELAkAgASIBIAJGDQADQAJAIAEtAAAiG0EgciAbIBtBv39qQf8BcUEaSRtB/wFxIhtBCUYNACAbQSBGDQACQAJAAkACQCAbQZ1/ag4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUEnIRsM0wILIAFBAWohAUEoIRsM0gILIAFBAWohAUEpIRsM0QILIAEhAQy2AQsgAUEBaiIBIAJHDQALQSYhGwzZAgtBJiEbDNgCCwJAIAEiASACRg0AA0ACQCABLQAAQaCfgIAAai0AAEEBRg0AIAEhAQy7AQsgAUEBaiIBIAJHDQALQS0hGwzYAgtBLSEbDNcCCwJAA0ACQCABLQAAQXdqDhgAAsQCxALGAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAgDEAgsgAUEBaiIBIAJHDQALQTEhGwzXAgsgAUEBaiEBC0EiIRsMygILIAEiASACRw29AUEzIRsM1AILA0ACQCABLQAAQbCjgIAAai0AAEEBRg0AIAEhAQyWAgsgAUEBaiIBIAJHDQALQTQhGwzTAgsgGC0AACIbQSBGDZoBIBtBOkcNxgIgACgCBCEBIABBADYCBCAAIAEgGBCogICAACIBDboBIBhBAWohAQy8AQsgACABIAIQqYCAgAAaC0EKIRsMxQILQTYhGyABIiMgAkYNzwIgAiAjayAAKAIAIiBqISEgIyEYICAhAQJAA0AgGC0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUGwpYCAAGotAABHDcQCIAFBBUYNASABQQFqIQEgGEEBaiIYIAJHDQALIAAgITYCAAzQAgsgAEEANgIAIABBAToALCAjICBrQQZqIQEMvQILQTchGyABIiMgAkYNzgIgAiAjayAAKAIAIiBqISEgIyEYICAhAQJAA0AgGC0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUG2pYCAAGotAABHDcMCIAFBCUYNASABQQFqIQEgGEEBaiIYIAJHDQALIAAgITYCAAzPAgsgAEEANgIAIABBAjoALCAjICBrQQpqIQEMvAILAkAgASIYIAJHDQBBOCEbDM4CCwJAAkAgGC0AACIBQSByIAEgAUG/f2pB/wFxQRpJG0H/AXFBkn9qDgcAwwLDAsMCwwLDAgHDAgsgGEEBaiEBQTIhGwzDAgsgGEEBaiEBQTMhGwzCAgtBOSEbIAEiIyACRg3MAiACICNrIAAoAgAiIGohISAjIRggICEBA0AgGC0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUHApYCAAGotAABHDcACIAFBAUYNtwIgAUEBaiEBIBhBAWoiGCACRw0ACyAAICE2AgAMzAILQTohGyABIiMgAkYNywIgAiAjayAAKAIAIiBqISEgIyEYICAhAQJAA0AgGC0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUHCpYCAAGotAABHDcACIAFBDkYNASABQQFqIQEgGEEBaiIYIAJHDQALIAAgITYCAAzMAgsgAEEANgIAIABBAToALCAjICBrQQ9qIQEMuQILQTshGyABIiMgAkYNygIgAiAjayAAKAIAIiBqISEgIyEYICAhAQJAA0AgGC0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUHgpYCAAGotAABHDb8CIAFBD0YNASABQQFqIQEgGEEBaiIYIAJHDQALIAAgITYCAAzLAgsgAEEANgIAIABBAzoALCAjICBrQRBqIQEMuAILQTwhGyABIiMgAkYNyQIgAiAjayAAKAIAIiBqISEgIyEYICAhAQJAA0AgGC0AACIfQSByIB8gH0G/f2pB/wFxQRpJG0H/AXEgAUHwpYCAAGotAABHDb4CIAFBBUYNASABQQFqIQEgGEEBaiIYIAJHDQALIAAgITYCAAzKAgsgAEEANgIAIABBBDoALCAjICBrQQZqIQEMtwILAkAgASIYIAJHDQBBPSEbDMkCCwJAAkACQAJAIBgtAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAMACwALAAsACwALAAsACwALAAsACwALAAgHAAsACwAICA8ACCyAYQQFqIQFBNSEbDMACCyAYQQFqIQFBNiEbDL8CCyAYQQFqIQFBNyEbDL4CCyAYQQFqIQFBOCEbDL0CCwJAIAEiASACRg0AIABBi4CAgAA2AgggACABNgIEIAEhAUE5IRsMvQILQT4hGwzHAgsgASIBIAJHDbMBQcAAIRsMxgILQcEAIRsgASIjIAJGDcUCIAIgI2sgACgCACIgaiEhICMhHyAgIQECQANAIB8tAAAgAUH2pYCAAGotAABHDbgBIAFBAUYNASABQQFqIQEgH0EBaiIfIAJHDQALIAAgITYCAAzGAgsgAEEANgIAICMgIGtBAmohAQyzAQsCQCABIgEgAkcNAEHDACEbDMUCCyABLQAAQQpHDbcBIAFBAWohAQyzAQsCQCABIgEgAkcNAEHEACEbDMQCCwJAAkAgAS0AAEF2ag4EAbgBuAEAuAELIAFBAWohAUE9IRsMuQILIAFBAWohAQyyAQsCQCABIgEgAkcNAEHFACEbDMMCC0EAIRsCQAJAAkACQAJAAkACQAJAIAEtAABBUGoOCr8BvgEAAQIDBAUGB8ABC0ECIRsMvgELQQMhGwy9AQtBBCEbDLwBC0EFIRsMuwELQQYhGwy6AQtBByEbDLkBC0EIIRsMuAELQQkhGwy3AQsCQCABIgEgAkcNAEHGACEbDMICCyABLQAAQS5HDbgBIAFBAWohAQyGAgsCQCABIgEgAkcNAEHHACEbDMECC0EAIRsCQAJAAkACQAJAAkACQAJAIAEtAABBUGoOCsEBwAEAAQIDBAUGB8IBC0ECIRsMwAELQQMhGwy/AQtBBCEbDL4BC0EFIRsMvQELQQYhGwy8AQtBByEbDLsBC0EIIRsMugELQQkhGwy5AQtByAAhGyABIiMgAkYNvwIgAiAjayAAKAIAIiBqISEgIyEBICAhHwNAIAEtAAAgH0GCpoCAAGotAABHDbwBIB9BA0YNuwEgH0EBaiEfIAFBAWoiASACRw0ACyAAICE2AgAMvwILQckAIRsgASIjIAJGDb4CIAIgI2sgACgCACIgaiEhICMhASAgIR8DQCABLQAAIB9BhqaAgABqLQAARw27ASAfQQJGDb0BIB9BAWohHyABQQFqIgEgAkcNAAsgACAhNgIADL4CC0HKACEbIAEiIyACRg29AiACICNrIAAoAgAiIGohISAjIQEgICEfA0AgAS0AACAfQYmmgIAAai0AAEcNugEgH0EDRg29ASAfQQFqIR8gAUEBaiIBIAJHDQALIAAgITYCAAy9AgsDQAJAIAEtAAAiG0EgRg0AAkACQAJAIBtBuH9qDgsAAb4BvgG+Ab4BvgG+Ab4BvgECvgELIAFBAWohAUHCACEbDLUCCyABQQFqIQFBwwAhGwy0AgsgAUEBaiEBQcQAIRsMswILIAFBAWoiASACRw0AC0HLACEbDLwCCwJAIAEiASACRg0AIAAgAUEBaiIBIAIQpYCAgAAaIAEhAUEHIRsMsQILQcwAIRsMuwILA0ACQCABLQAAQZCmgIAAai0AACIbQQFGDQAgG0F+ag4DvQG+Ab8BwAELIAFBAWoiASACRw0AC0HNACEbDLoCCwJAIAEiASACRg0AIAFBAWohAQwDC0HOACEbDLkCCwNAAkAgAS0AAEGQqICAAGotAAAiG0EBRg0AAkAgG0F+ag4EwAHBAcIBAMMBCyABIQFBxgAhGwyvAgsgAUEBaiIBIAJHDQALQc8AIRsMuAILAkAgASIBIAJHDQBB0AAhGwy4AgsCQCABLQAAIhtBdmoOGqgBwwHDAaoBwwHDAcMBwwHDAcMBwwHDAcMBwwHDAcMBwwHDAcMBwwHDAcMBuAHDAcMBAMEBCyABQQFqIQELQQYhGwyrAgsDQAJAIAEtAABBkKqAgABqLQAAQQFGDQAgASEBDIACCyABQQFqIgEgAkcNAAtB0QAhGwy1AgsCQCABIgEgAkYNACABQQFqIQEMAwtB0gAhGwy0AgsCQCABIgEgAkcNAEHTACEbDLQCCyABQQFqIQEMAQsCQCABIgEgAkcNAEHUACEbDLMCCyABQQFqIQELQQQhGwymAgsCQCABIh8gAkcNAEHVACEbDLECCyAfIQECQAJAAkAgHy0AAEGQrICAAGotAABBf2oOB8IBwwHEAQD+AQECxQELIB9BAWohAQwKCyAfQQFqIQEMuwELQQAhGyAAQQA2AhwgAEHxjoCAADYCECAAQQc2AgwgACAfQQFqNgIUDLACCwJAA0ACQCABLQAAQZCsgIAAai0AACIbQQRGDQACQAJAIBtBf2oOB8ABwQHCAccBAAQBxwELIAEhAUHJACEbDKgCCyABQQFqIQFBywAhGwynAgsgAUEBaiIBIAJHDQALQdYAIRsMsAILIAFBAWohAQy5AQsCQCABIh8gAkcNAEHXACEbDK8CCyAfLQAAQS9HDcIBIB9BAWohAQwGCwJAIAEiHyACRw0AQdgAIRsMrgILAkAgHy0AACIBQS9HDQAgH0EBaiEBQcwAIRsMowILIAFBdmoiBEEWSw3BAUEBIAR0QYmAgAJxRQ3BAQyWAgsCQCABIgEgAkYNACABQQFqIQFBzQAhGwyiAgtB2QAhGwysAgsCQCABIh8gAkcNAEHbACEbDKwCCyAfIQECQCAfLQAAQZCwgIAAai0AAEF/ag4DlQL2AQDCAQtB0AAhGwygAgsCQCABIh8gAkYNAANAAkAgHy0AAEGQroCAAGotAAAiAUEDRg0AAkAgAUF/ag4ClwIAwwELIB8hAUHOACEbDKICCyAfQQFqIh8gAkcNAAtB2gAhGwyrAgtB2gAhGwyqAgsCQCABIgEgAkYNACAAQYyAgIAANgIIIAAgATYCBCABIQFBzwAhGwyfAgtB3AAhGwypAgsCQCABIgEgAkcNAEHdACEbDKkCCyAAQYyAgIAANgIIIAAgATYCBCABIQELQQMhGwycAgsDQCABLQAAQSBHDY8CIAFBAWoiASACRw0AC0HeACEbDKYCCwJAIAEiASACRw0AQd8AIRsMpgILIAEtAABBIEcNvAEgAUEBaiEBDNgBCwJAIAEiBCACRw0AQeAAIRsMpQILIAQtAABBzABHDb8BIARBAWohAUETIRsMvQELQeEAIRsgASIfIAJGDaMCIAIgH2sgACgCACIjaiEgIB8hBCAjIQEDQCAELQAAIAFBkLKAgABqLQAARw2+ASABQQVGDbwBIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADKMCCwJAIAEiBCACRw0AQeIAIRsMowILAkACQCAELQAAQb1/ag4MAL8BvwG/Ab8BvwG/Ab8BvwG/Ab8BAb8BCyAEQQFqIQFB1AAhGwyYAgsgBEEBaiEBQdUAIRsMlwILQeMAIRsgASIfIAJGDaECIAIgH2sgACgCACIjaiEgIB8hBCAjIQECQANAIAQtAAAgAUGNs4CAAGotAABHDb0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIDYCAAyiAgsgAEEANgIAIB8gI2tBA2ohAUEQIRsMugELQeQAIRsgASIfIAJGDaACIAIgH2sgACgCACIjaiEgIB8hBCAjIQECQANAIAQtAAAgAUGWsoCAAGotAABHDbwBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIDYCAAyhAgsgAEEANgIAIB8gI2tBBmohAUEWIRsMuQELQeUAIRsgASIfIAJGDZ8CIAIgH2sgACgCACIjaiEgIB8hBCAjIQECQANAIAQtAAAgAUGcsoCAAGotAABHDbsBIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIDYCAAygAgsgAEEANgIAIB8gI2tBBGohAUEFIRsMuAELAkAgASIEIAJHDQBB5gAhGwyfAgsgBC0AAEHZAEcNuQEgBEEBaiEBQQghGwy3AQsCQCABIgQgAkcNAEHnACEbDJ4CCwJAAkAgBC0AAEGyf2oOAwC6AQG6AQsgBEEBaiEBQdkAIRsMkwILIARBAWohAUHaACEbDJICCwJAIAEiBCACRw0AQegAIRsMnQILAkACQCAELQAAQbh/ag4IALkBuQG5AbkBuQG5AQG5AQsgBEEBaiEBQdgAIRsMkgILIARBAWohAUHbACEbDJECC0HpACEbIAEiHyACRg2bAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFBoLKAgABqLQAARw23ASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMnAILQQAhGyAAQQA2AgAgHyAja0EDaiEBDLQBC0HqACEbIAEiHyACRg2aAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBAkADQCAELQAAIAFBo7KAgABqLQAARw22ASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICA2AgAMmwILIABBADYCACAfICNrQQVqIQFBIyEbDLMBCwJAIAEiBCACRw0AQesAIRsMmgILAkACQCAELQAAQbR/ag4IALYBtgG2AbYBtgG2AQG2AQsgBEEBaiEBQd0AIRsMjwILIARBAWohAUHeACEbDI4CCwJAIAEiBCACRw0AQewAIRsMmQILIAQtAABBxQBHDbMBIARBAWohAQzkAQtB7QAhGyABIh8gAkYNlwIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQaiygIAAai0AAEcNswEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADJgCCyAAQQA2AgAgHyAja0EEaiEBQS0hGwywAQtB7gAhGyABIh8gAkYNlgIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQfCygIAAai0AAEcNsgEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADJcCCyAAQQA2AgAgHyAja0EJaiEBQSkhGwyvAQsCQCABIgEgAkcNAEHvACEbDJYCC0EBIRsgAS0AAEHfAEcNrgEgAUEBaiEBDOIBC0HwACEbIAEiHyACRg2UAiACIB9rIAAoAgAiI2ohICAfIQQgIyEBA0AgBC0AACABQayygIAAai0AAEcNrwEgAUEBRg36ASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIDYCAAyUAgtB8QAhGyABIh8gAkYNkwIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQa6ygIAAai0AAEcNrwEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADJQCCyAAQQA2AgAgHyAja0EDaiEBQQIhGwysAQtB8gAhGyABIh8gAkYNkgIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQZCzgIAAai0AAEcNrgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADJMCCyAAQQA2AgAgHyAja0ECaiEBQR8hGwyrAQtB8wAhGyABIh8gAkYNkQIgAiAfayAAKAIAIiNqISAgHyEEICMhAQJAA0AgBC0AACABQZKzgIAAai0AAEcNrQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAgNgIADJICCyAAQQA2AgAgHyAja0ECaiEBQQkhGwyqAQsCQCABIgQgAkcNAEH0ACEbDJECCwJAAkAgBC0AAEG3f2oOBwCtAa0BrQGtAa0BAa0BCyAEQQFqIQFB5gAhGwyGAgsgBEEBaiEBQecAIRsMhQILAkAgASIbIAJHDQBB9QAhGwyQAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQbGygIAAai0AAEcNqwEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQfUAIRsMkAILIABBADYCACAbIB9rQQZqIQFBGCEbDKgBCwJAIAEiGyACRw0AQfYAIRsMjwILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUG3soCAAGotAABHDaoBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEH2ACEbDI8CCyAAQQA2AgAgGyAfa0EDaiEBQRchGwynAQsCQCABIhsgAkcNAEH3ACEbDI4CCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFBurKAgABqLQAARw2pASABQQZGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBB9wAhGwyOAgsgAEEANgIAIBsgH2tBB2ohAUEVIRsMpgELAkAgASIbIAJHDQBB+AAhGwyNAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQcGygIAAai0AAEcNqAEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQfgAIRsMjQILIABBADYCACAbIB9rQQZqIQFBHiEbDKUBCwJAIAEiBCACRw0AQfkAIRsMjAILIAQtAABBzABHDaYBIARBAWohAUEKIRsMpAELAkAgASIEIAJHDQBB+gAhGwyLAgsCQAJAIAQtAABBv39qDg8ApwGnAacBpwGnAacBpwGnAacBpwGnAacBpwEBpwELIARBAWohAUHsACEbDIACCyAEQQFqIQFB7QAhGwz/AQsCQCABIgQgAkcNAEH7ACEbDIoCCwJAAkAgBC0AAEG/f2oOAwCmAQGmAQsgBEEBaiEBQesAIRsM/wELIARBAWohAUHuACEbDP4BCwJAIAEiGyACRw0AQfwAIRsMiQILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHHsoCAAGotAABHDaQBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEH8ACEbDIkCCyAAQQA2AgAgGyAfa0ECaiEBQQshGwyhAQsCQCABIgQgAkcNAEH9ACEbDIgCCwJAAkACQAJAIAQtAABBU2oOIwCmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBpgGmAaYBAaYBpgGmAaYBpgECpgGmAaYBA6YBCyAEQQFqIQFB6QAhGwz/AQsgBEEBaiEBQeoAIRsM/gELIARBAWohAUHvACEbDP0BCyAEQQFqIQFB8AAhGwz8AQsCQCABIhsgAkcNAEH+ACEbDIcCCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFBybKAgABqLQAARw2iASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBB/gAhGwyHAgsgAEEANgIAIBsgH2tBBWohAUEZIRsMnwELAkAgASIfIAJHDQBB/wAhGwyGAgsgAiAfayAAKAIAIiNqIRsgHyEEICMhAQJAA0AgBC0AACABQc6ygIAAai0AAEcNoQEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAbNgIAQf8AIRsMhgILIABBADYCAEEGIRsgHyAja0EGaiEBDJ4BCwJAIAEiGyACRw0AQYABIRsMhQILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHUsoCAAGotAABHDaABIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGAASEbDIUCCyAAQQA2AgAgGyAfa0ECaiEBQRwhGwydAQsCQCABIhsgAkcNAEGBASEbDIQCCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFB1rKAgABqLQAARw2fASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBgQEhGwyEAgsgAEEANgIAIBsgH2tBAmohAUEnIRsMnAELAkAgASIEIAJHDQBBggEhGwyDAgsCQAJAIAQtAABBrH9qDgIAAZ8BCyAEQQFqIQFB9AAhGwz4AQsgBEEBaiEBQfUAIRsM9wELAkAgASIbIAJHDQBBgwEhGwyCAgsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQdiygIAAai0AAEcNnQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQYMBIRsMggILIABBADYCACAbIB9rQQJqIQFBJiEbDJoBCwJAIAEiGyACRw0AQYQBIRsMgQILIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHasoCAAGotAABHDZwBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGEASEbDIECCyAAQQA2AgAgGyAfa0ECaiEBQQMhGwyZAQsCQCABIhsgAkcNAEGFASEbDIACCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFBjbOAgABqLQAARw2bASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBhQEhGwyAAgsgAEEANgIAIBsgH2tBA2ohAUEMIRsMmAELAkAgASIbIAJHDQBBhgEhGwz/AQsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQdyygIAAai0AAEcNmgEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQYYBIRsM/wELIABBADYCACAbIB9rQQRqIQFBDSEbDJcBCwJAIAEiBCACRw0AQYcBIRsM/gELAkACQCAELQAAQbp/ag4LAJoBmgGaAZoBmgGaAZoBmgGaAQGaAQsgBEEBaiEBQfkAIRsM8wELIARBAWohAUH6ACEbDPIBCwJAIAEiBCACRw0AQYgBIRsM/QELIAQtAABB0ABHDZcBIARBAWohAQzKAQsCQCABIgQgAkcNAEGJASEbDPwBCwJAAkAgBC0AAEG3f2oOBwGYAZgBmAGYAZgBAJgBCyAEQQFqIQFB/AAhGwzxAQsgBEEBaiEBQSIhGwyUAQsCQCABIhsgAkcNAEGKASEbDPsBCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFB4LKAgABqLQAARw2WASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBigEhGwz7AQsgAEEANgIAIBsgH2tBAmohAUEdIRsMkwELAkAgASIEIAJHDQBBiwEhGwz6AQsCQAJAIAQtAABBrn9qDgMAlgEBlgELIARBAWohAUH+ACEbDO8BCyAEQQFqIQFBBCEbDJIBCwJAIAEiBCACRw0AQYwBIRsM+QELAkACQAJAAkACQCAELQAAQb9/ag4VAJgBmAGYAZgBmAGYAZgBmAGYAZgBAZgBmAECmAGYAQOYAZgBBJgBCyAEQQFqIQFB9gAhGwzxAQsgBEEBaiEBQfcAIRsM8AELIARBAWohAUH4ACEbDO8BCyAEQQFqIQFB/QAhGwzuAQsgBEEBaiEBQf8AIRsM7QELAkAgASIbIAJHDQBBjQEhGwz4AQsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQY2zgIAAai0AAEcNkwEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQY0BIRsM+AELIABBADYCACAbIB9rQQNqIQFBESEbDJABCwJAIAEiGyACRw0AQY4BIRsM9wELIAIgG2sgACgCACIfaiEjIBshBCAfIQECQANAIAQtAAAgAUHisoCAAGotAABHDZIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgIzYCAEGOASEbDPcBCyAAQQA2AgAgGyAfa0EDaiEBQSwhGwyPAQsCQCABIhsgAkcNAEGPASEbDPYBCyACIBtrIAAoAgAiH2ohIyAbIQQgHyEBAkADQCAELQAAIAFB5bKAgABqLQAARw2RASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAICM2AgBBjwEhGwz2AQsgAEEANgIAIBsgH2tBBWohAUErIRsMjgELAkAgASIbIAJHDQBBkAEhGwz1AQsgAiAbayAAKAIAIh9qISMgGyEEIB8hAQJAA0AgBC0AACABQeqygIAAai0AAEcNkAEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAjNgIAQZABIRsM9QELIABBADYCACAbIB9rQQNqIQFBFCEbDI0BCwJAIAQgAkcNAEGRASEbDPQBCwJAAkACQAJAIAQtAABBvn9qDg8AAQKSAZIBkgGSAZIBkgGSAZIBkgGSAZIBA5IBCyAEQQFqIQFBgQEhGwzrAQsgBEEBaiEBQYIBIRsM6gELIARBAWohAUGDASEbDOkBCyAEQQFqIQFBhAEhGwzoAQsCQCAEIAJHDQBBkgEhGwzzAQsgBC0AAEHFAEcNjQEgBEEBaiEEDMEBCwJAIAUgAkcNAEGTASEbDPIBCyACIAVrIAAoAgAiG2ohHyAFIQQgGyEBAkADQCAELQAAIAFB7bKAgABqLQAARw2NASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBkwEhGwzyAQsgAEEANgIAIAUgG2tBA2ohAUEOIRsMigELAkAgBCACRw0AQZQBIRsM8QELIAQtAABB0ABHDYsBIARBAWohAUElIRsMiQELAkAgBiACRw0AQZUBIRsM8AELIAIgBmsgACgCACIbaiEfIAYhBCAbIQECQANAIAQtAAAgAUHwsoCAAGotAABHDYsBIAFBCEYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGVASEbDPABCyAAQQA2AgAgBiAba0EJaiEBQSohGwyIAQsCQCAEIAJHDQBBlgEhGwzvAQsCQAJAIAQtAABBq39qDgsAiwGLAYsBiwGLAYsBiwGLAYsBAYsBCyAEQQFqIQRBiAEhGwzkAQsgBEEBaiEGQYkBIRsM4wELAkAgBCACRw0AQZcBIRsM7gELAkACQCAELQAAQb9/ag4UAIoBigGKAYoBigGKAYoBigGKAYoBigGKAYoBigGKAYoBigGKAQGKAQsgBEEBaiEFQYcBIRsM4wELIARBAWohBEGKASEbDOIBCwJAIAcgAkcNAEGYASEbDO0BCyACIAdrIAAoAgAiG2ohHyAHIQQgGyEBAkADQCAELQAAIAFB+bKAgABqLQAARw2IASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBmAEhGwztAQsgAEEANgIAIAcgG2tBBGohAUEhIRsMhQELAkAgCCACRw0AQZkBIRsM7AELIAIgCGsgACgCACIbaiEfIAghBCAbIQECQANAIAQtAAAgAUH9soCAAGotAABHDYcBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGZASEbDOwBCyAAQQA2AgAgCCAba0EHaiEBQRohGwyEAQsCQCAEIAJHDQBBmgEhGwzrAQsCQAJAAkAgBC0AAEG7f2oOEQCIAYgBiAGIAYgBiAGIAYgBiAEBiAGIAYgBiAGIAQKIAQsgBEEBaiEEQYsBIRsM4QELIARBAWohB0GMASEbDOABCyAEQQFqIQhBjQEhGwzfAQsCQCAJIAJHDQBBmwEhGwzqAQsgAiAJayAAKAIAIhtqIR8gCSEEIBshAQJAA0AgBC0AACABQYSzgIAAai0AAEcNhQEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQZsBIRsM6gELIABBADYCACAJIBtrQQZqIQFBKCEbDIIBCwJAIAogAkcNAEGcASEbDOkBCyACIAprIAAoAgAiG2ohHyAKIQQgGyEBAkADQCAELQAAIAFBirOAgABqLQAARw2EASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBnAEhGwzpAQsgAEEANgIAIAogG2tBA2ohAUEHIRsMgQELAkAgBCACRw0AQZ0BIRsM6AELAkACQCAELQAAQbt/ag4OAIQBhAGEAYQBhAGEAYQBhAGEAYQBhAGEAQGEAQsgBEEBaiEJQY8BIRsM3QELIARBAWohCkGQASEbDNwBCwJAIAsgAkcNAEGeASEbDOcBCyACIAtrIAAoAgAiG2ohHyALIQQgGyEBAkADQCAELQAAIAFBjbOAgABqLQAARw2CASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIB82AgBBngEhGwznAQsgAEEANgIAIAsgG2tBA2ohAUESIRsMfwsCQCAMIAJHDQBBnwEhGwzmAQsgAiAMayAAKAIAIhtqIR8gDCEEIBshAQJAA0AgBC0AACABQZCzgIAAai0AAEcNgQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQZ8BIRsM5gELIABBADYCACAMIBtrQQJqIQFBICEbDH4LAkAgDSACRw0AQaABIRsM5QELIAIgDWsgACgCACIbaiEfIA0hBCAbIQECQANAIAQtAAAgAUGSs4CAAGotAABHDYABIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgHzYCAEGgASEbDOUBCyAAQQA2AgAgDSAba0ECaiEBQQ8hGwx9CwJAIAQgAkcNAEGhASEbDOQBCwJAAkAgBC0AAEG3f2oOBwCAAYABgAGAAYABAYABCyAEQQFqIQxBkwEhGwzZAQsgBEEBaiENQZQBIRsM2AELAkAgDiACRw0AQaIBIRsM4wELIAIgDmsgACgCACIbaiEfIA4hBCAbIQECQANAIAQtAAAgAUGUs4CAAGotAABHDX4gAUEHRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQaIBIRsM4wELIABBADYCACAOIBtrQQhqIQFBGyEbDHsLAkAgBCACRw0AQaMBIRsM4gELAkACQAJAIAQtAABBvn9qDhIAf39/f39/f39/AX9/f39/fwJ/CyAEQQFqIQtBkgEhGwzYAQsgBEEBaiEEQZUBIRsM1wELIARBAWohDkGWASEbDNYBCwJAIAQgAkcNAEGkASEbDOEBCyAELQAAQc4ARw17IARBAWohBAywAQsCQCAEIAJHDQBBpQEhGwzgAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAELQAAQb9/ag4VAAECA4oBBAUGigGKAYoBBwgJCguKAQwNDg+KAQsgBEEBaiEBQdYAIRsM4wELIARBAWohAUHXACEbDOIBCyAEQQFqIQFB3AAhGwzhAQsgBEEBaiEBQeAAIRsM4AELIARBAWohAUHhACEbDN8BCyAEQQFqIQFB5AAhGwzeAQsgBEEBaiEBQeUAIRsM3QELIARBAWohAUHoACEbDNwBCyAEQQFqIQFB8QAhGwzbAQsgBEEBaiEBQfIAIRsM2gELIARBAWohAUHzACEbDNkBCyAEQQFqIQFBgAEhGwzYAQsgBEEBaiEEQYYBIRsM1wELIARBAWohBEGOASEbDNYBCyAEQQFqIQRBkQEhGwzVAQsgBEEBaiEEQZgBIRsM1AELAkAgECACRw0AQacBIRsM3wELIBBBAWohDwx7CwNAAkAgGy0AAEF2ag4EewAAfgALIBtBAWoiGyACRw0AC0GoASEbDN0BCwJAIBEgAkYNACAAQY2AgIAANgIIIAAgETYCBCARIQFBASEbDNIBC0GpASEbDNwBCwJAIBEgAkcNAEGqASEbDNwBCwJAAkAgES0AAEF2ag4EAbEBsQEAsQELIBFBAWohEAx8CyARQQFqIQ8MeAsgACAPIAIQp4CAgAAaIA8hAQxJCwJAIBEgAkcNAEGrASEbDNoBCwJAAkAgES0AAEF2ag4XAX19AX19fX19fX19fX19fX19fX19fQB9CyARQQFqIRELQZwBIRsMzgELAkAgEiACRw0AQa0BIRsM2QELIBItAABBIEcNeyAAQQA7ATIgEkEBaiEBQaABIRsMzQELIAEhIwJAA0AgIyIRIAJGDQEgES0AAEFQakH/AXEiG0EKTw2uAQJAIAAvATIiH0GZM0sNACAAIB9BCmwiHzsBMiAbQf//A3MgH0H+/wNxSQ0AIBFBAWohIyAAIB8gG2oiGzsBMiAbQf//A3FB6AdJDQELC0EAIRsgAEEANgIcIABBnYmAgAA2AhAgAEENNgIMIAAgEUEBajYCFAzYAQtBrAEhGwzXAQsCQCATIAJHDQBBrgEhGwzXAQtBACEbAkACQAJAAkACQAJAAkACQCATLQAAQVBqDgqDAYIBAAECAwQFBgeEAQtBAiEbDIIBC0EDIRsMgQELQQQhGwyAAQtBBSEbDH8LQQYhGwx+C0EHIRsMfQtBCCEbDHwLQQkhGwx7CwJAIBQgAkcNAEGvASEbDNYBCyAULQAAQS5HDXwgFEEBaiETDKwBCwJAIBUgAkcNAEGwASEbDNUBC0EAIRsCQAJAAkACQAJAAkACQAJAIBUtAABBUGoOCoUBhAEAAQIDBAUGB4YBC0ECIRsMhAELQQMhGwyDAQtBBCEbDIIBC0EFIRsMgQELQQYhGwyAAQtBByEbDH8LQQghGwx+C0EJIRsMfQsCQCAEIAJHDQBBsQEhGwzUAQsgAiAEayAAKAIAIh9qISMgBCEVIB8hGwNAIBUtAAAgG0Gcs4CAAGotAABHDX8gG0EERg23ASAbQQFqIRsgFUEBaiIVIAJHDQALIAAgIzYCAEGxASEbDNMBCwJAIBYgAkcNAEGyASEbDNMBCyACIBZrIAAoAgAiG2ohHyAWIQQgGyEBA0AgBC0AACABQaGzgIAAai0AAEcNfyABQQFGDbkBIAFBAWohASAEQQFqIgQgAkcNAAsgACAfNgIAQbIBIRsM0gELAkAgFyACRw0AQbMBIRsM0gELIAIgF2sgACgCACIVaiEfIBchBCAVIRsDQCAELQAAIBtBo7OAgABqLQAARw1+IBtBAkYNgAEgG0EBaiEbIARBAWoiBCACRw0ACyAAIB82AgBBswEhGwzRAQsCQCAEIAJHDQBBtAEhGwzRAQsCQAJAIAQtAABBu39qDhAAf39/f39/f39/f39/f38BfwsgBEEBaiEWQaUBIRsMxgELIARBAWohF0GmASEbDMUBCwJAIAQgAkcNAEG1ASEbDNABCyAELQAAQcgARw18IARBAWohBAyoAQsCQCAEIAJHDQBBtgEhGwzPAQsgBC0AAEHIAEYNqAEgAEEBOgAoDJ8BCwNAAkAgBC0AAEF2ag4EAH5+AH4LIARBAWoiBCACRw0AC0G4ASEbDM0BCyAAQQA6AC8gAC0ALUEEcUUNxgELIABBADoALyABIQEMfQsgG0EVRg2sASAAQQA2AhwgACABNgIUIABBq4yAgAA2AhAgAEESNgIMQQAhGwzKAQsCQCAAIBsgAhCtgICAACIEDQAgGyEBDMMBCwJAIARBFUcNACAAQQM2AhwgACAbNgIUIABBhpKAgAA2AhAgAEEVNgIMQQAhGwzKAQsgAEEANgIcIAAgGzYCFCAAQauMgIAANgIQIABBEjYCDEEAIRsMyQELIBtBFUYNqAEgAEEANgIcIAAgATYCFCAAQYiMgIAANgIQIABBFDYCDEEAIRsMyAELIAAoAgQhIyAAQQA2AgQgGyAcp2oiICEBIAAgIyAbICAgHxsiGxCugICAACIfRQ1/IABBBzYCHCAAIBs2AhQgACAfNgIMQQAhGwzHAQsgACAALwEwQYABcjsBMCABIQEMNQsgG0EVRg2kASAAQQA2AhwgACABNgIUIABBxYuAgAA2AhAgAEETNgIMQQAhGwzFAQsgAEEANgIcIAAgATYCFCAAQYuLgIAANgIQIABBAjYCDEEAIRsMxAELIBtBO0cNASABQQFqIQELQQghGwy3AQtBACEbIABBADYCHCAAIAE2AhQgAEGjkICAADYCECAAQQw2AgwMwQELQgEhHAsgG0EBaiEBAkAgACkDICIdQv//////////D1YNACAAIB1CBIYgHIQ3AyAgASEBDHwLIABBADYCHCAAIAE2AhQgAEGJiYCAADYCECAAQQw2AgxBACEbDL8BCyAAQQA2AhwgACAbNgIUIABBo5CAgAA2AhAgAEEMNgIMQQAhGwy+AQsgACgCBCEjIABBADYCBCAbIBynaiIgIQEgACAjIBsgICAfGyIbEK6AgIAAIh9FDXMgAEEFNgIcIAAgGzYCFCAAIB82AgxBACEbDL0BCyAAQQA2AhwgACAbNgIUIABBjZSAgAA2AhAgAEEPNgIMQQAhGwy8AQsgACAbIAIQrYCAgAAiAQ0BIBshAQtBECEbDK8BCwJAIAFBFUcNACAAQQI2AhwgACAbNgIUIABBhpKAgAA2AhAgAEEVNgIMQQAhGwy6AQsgAEEANgIcIAAgGzYCFCAAQauMgIAANgIQIABBEjYCDEEAIRsMuQELIAFBAWohGwJAIAAvATAiAUGAAXFFDQACQCAAIBsgAhCwgICAACIBDQAgGyEBDHALIAFBFUcNmgEgAEEFNgIcIAAgGzYCFCAAQe6RgIAANgIQIABBFTYCDEEAIRsMuQELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIBs2AhQgAEHsj4CAADYCECAAQQQ2AgxBACEbDLkBCyAAIBsgAhCxgICAABogGyEBAkACQAJAAkACQCAAIBsgAhCsgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAbIQELQR4hGwyvAQsgAEEVNgIcIAAgGzYCFCAAQZGRgIAANgIQIABBFTYCDEEAIRsMuQELIABBADYCHCAAIBs2AhQgAEGxi4CAADYCECAAQRE2AgxBACEbDLgBCyAALQAtQQFxRQ0BQaoBIRsMrAELAkAgGCACRg0AA0ACQCAYLQAAQSBGDQAgGCEBDKcBCyAYQQFqIhggAkcNAAtBFyEbDLcBC0EXIRsMtgELIAAoAgQhBCAAQQA2AgQgACAEIBgQqICAgAAiBEUNkwEgAEEYNgIcIAAgBDYCDCAAIBhBAWo2AhRBACEbDLUBCyAAQRk2AhwgACABNgIUIAAgGzYCDEEAIRsMtAELIBshAUEBIR8CQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhHwwBC0EEIR8LIABBAToALCAAIAAvATAgH3I7ATALIBshAQtBISEbDKkBCyAAQQA2AhwgACAbNgIUIABBgY+AgAA2AhAgAEELNgIMQQAhGwyzAQsgGyEBQQEhHwJAAkACQAJAAkAgAC0ALEF7ag4EAgABAwULQQIhHwwBC0EEIR8LIABBAToALCAAIAAvATAgH3I7ATAMAQsgACAALwEwQQhyOwEwCyAbIQELQasBIRsMpgELIAAgASACEKuAgIAAGgwfCwJAIAEiGyACRg0AIBshAQJAAkAgGy0AAEF2ag4EAW9vAG8LIBtBAWohAQtBHyEbDKUBC0E/IRsMrwELIABBADYCHCAAIAE2AhQgAEHqkICAADYCECAAQQM2AgxBACEbDK4BCyAAKAIEIQEgAEEANgIEAkAgACABIBkQqoCAgAAiAQ0AIBlBAWohAQxtCyAAQR42AhwgACABNgIMIAAgGUEBajYCFEEAIRsMrQELIAAtAC1BAXFFDQNBrQEhGwyhAQsCQCAZIAJHDQBBHyEbDKwBCwNAAkAgGS0AAEF2ag4EAgAAAwALIBlBAWoiGSACRw0AC0EfIRsMqwELIAAoAgQhASAAQQA2AgQCQCAAIAEgGRCqgICAACIBDQAgGSEBDGoLIABBHjYCHCAAIBk2AhQgACABNgIMQQAhGwyqAQsgACgCBCEBIABBADYCBAJAIAAgASAZEKqAgIAAIgENACAZQQFqIQEMaQsgAEEeNgIcIAAgATYCDCAAIBlBAWo2AhRBACEbDKkBCyAAQQA2AhwgACAZNgIUIABB7oyAgAA2AhAgAEEKNgIMQQAhGwyoAQsgG0EsRw0BIAFBAWohG0EBIQECQAJAAkACQAJAIAAtACxBe2oOBAMBAgQACyAbIQEMBAtBAiEBDAELQQQhAQsgAEEBOgAsIAAgAC8BMCABcjsBMCAbIQEMAQsgACAALwEwQQhyOwEwIBshAQtBLiEbDJsBCyAAQQA6ACwgASEBC0EqIRsMmQELIABBADYCACAgICFrQQlqIQFBBSEbDJMBCyAAQQA2AgAgICAha0EGaiEBQQchGwySAQsgACAALwEwQSByOwEwIAEhAQwCCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQqoCAgAAiBA0AIAEhAQyXAQsgAEEoNgIcIAAgATYCFCAAIAQ2AgxBACEbDKABCyAAQQg6ACwgASEBC0EmIRsMkwELIAAtADBBIHENeUGuASEbDJIBCwJAIBogAkYNAAJAA0ACQCAaLQAAQVBqIgFB/wFxQQpJDQAgGiEBQSshGwyVAQsgACkDICIcQpmz5syZs+bMGVYNASAAIBxCCn4iHDcDICAcIAGtIh1Cf4VCgH6EVg0BIAAgHCAdQv8Bg3w3AyAgGkEBaiIaIAJHDQALQSohGwyeAQsgACgCBCEEIABBADYCBCAAIAQgGkEBaiIBEKqAgIAAIgQNeiABIQEMlAELQSohGwycAQsgACAALwEwQff7A3FBgARyOwEwIBohAQtBLCEbDI8BCyAAIAAvATBBEHI7ATALIABBADoALCAaIQEMWAsgAEEyNgIcIAAgATYCDCAAIBhBAWo2AhRBACEbDJcBCyABLQAAQTpHDQIgACgCBCEbIABBADYCBCAAIBsgARCogICAACIbDQEgAUEBaiEBC0ExIRsMigELIABBMjYCHCAAIBs2AgwgACABQQFqNgIUQQAhGwyUAQsgAEEANgIcIAAgATYCFCAAQYeOgIAANgIQIABBCjYCDEEAIRsMkwELIAFBAWohAQsgAEGAEjsBKiAAIAEgAhClgICAABogASEBC0GsASEbDIUBCyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQxSCyAAQcAANgIcIAAgATYCFCAAIBs2AgxBACEbDI8BCyAAQQA2AhwgACAfNgIUIABBlZiAgAA2AhAgAEEHNgIMIABBADYCAEEAIRsMjgELIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDFELIABBwQA2AhwgACABNgIUIAAgGzYCDEEAIRsMjQELQQAhGyAAQQA2AhwgACABNgIUIABB642AgAA2AhAgAEEJNgIMDIwBC0EBIRsLIAAgGzoAKyABQQFqIQEgAC0AKUEiRg2FAQxOCyAAQQA2AhwgACABNgIUIABBoo2AgAA2AhAgAEEJNgIMQQAhGwyJAQsgAEEANgIcIAAgATYCFCAAQcWKgIAANgIQIABBCTYCDEEAIRsMiAELQQEhGwsgACAbOgAqIAFBAWohAQxMCyAAQQA2AhwgACABNgIUIABBuI2AgAA2AhAgAEEJNgIMQQAhGwyFAQsgAEEANgIAICMgIGtBBGohAQJAIAAtAClBI08NACABIQEMTAsgAEEANgIcIAAgATYCFCAAQa+JgIAANgIQIABBCDYCDEEAIRsMhAELIABBADYCAAtBACEbIABBADYCHCAAIAE2AhQgAEHZmoCAADYCECAAQQg2AgwMggELIABBADYCACAjICBrQQNqIQECQCAALQApQSFHDQAgASEBDEkLIABBADYCHCAAIAE2AhQgAEH3iYCAADYCECAAQQg2AgxBACEbDIEBCyAAQQA2AgAgIyAga0EEaiEBAkAgAC0AKSIbQV1qQQtPDQAgASEBDEgLAkAgG0EGSw0AQQEgG3RBygBxRQ0AIAEhAQxIC0EAIRsgAEEANgIcIAAgATYCFCAAQdOJgIAANgIQIABBCDYCDAyAAQsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMSAsgAEHMADYCHCAAIAE2AhQgACAbNgIMQQAhGwx/CyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQxBCyAAQcAANgIcIAAgATYCFCAAIBs2AgxBACEbDH4LIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDEELIABBwQA2AhwgACABNgIUIAAgGzYCDEEAIRsMfQsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMRQsgAEHMADYCHCAAIAE2AhQgACAbNgIMQQAhGwx8CyAAQQA2AhwgACABNgIUIABBooqAgAA2AhAgAEEHNgIMQQAhGwx7CyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQw9CyAAQcAANgIcIAAgATYCFCAAIBs2AgxBACEbDHoLIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDD0LIABBwQA2AhwgACABNgIUIAAgGzYCDEEAIRsMeQsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMQQsgAEHMADYCHCAAIAE2AhQgACAbNgIMQQAhGwx4CyAAQQA2AhwgACABNgIUIABBuIiAgAA2AhAgAEEHNgIMQQAhGwx3CyAbQT9HDQEgAUEBaiEBC0EFIRsMagtBACEbIABBADYCHCAAIAE2AhQgAEHTj4CAADYCECAAQQc2AgwMdAsgACgCBCEbIABBADYCBAJAIAAgGyABEKSAgIAAIhsNACABIQEMNgsgAEHAADYCHCAAIAE2AhQgACAbNgIMQQAhGwxzCyAAKAIEIRsgAEEANgIEAkAgACAbIAEQpICAgAAiGw0AIAEhAQw2CyAAQcEANgIcIAAgATYCFCAAIBs2AgxBACEbDHILIAAoAgQhGyAAQQA2AgQCQCAAIBsgARCkgICAACIbDQAgASEBDDoLIABBzAA2AhwgACABNgIUIAAgGzYCDEEAIRsMcQsgACgCBCEBIABBADYCBAJAIAAgASAfEKSAgIAAIgENACAfIQEMMwsgAEHAADYCHCAAIB82AhQgACABNgIMQQAhGwxwCyAAKAIEIQEgAEEANgIEAkAgACABIB8QpICAgAAiAQ0AIB8hAQwzCyAAQcEANgIcIAAgHzYCFCAAIAE2AgxBACEbDG8LIAAoAgQhASAAQQA2AgQCQCAAIAEgHxCkgICAACIBDQAgHyEBDDcLIABBzAA2AhwgACAfNgIUIAAgATYCDEEAIRsMbgsgAEEANgIcIAAgHzYCFCAAQdCMgIAANgIQIABBBzYCDEEAIRsMbQsgAEEANgIcIAAgATYCFCAAQdCMgIAANgIQIABBBzYCDEEAIRsMbAtBACEbIABBADYCHCAAIB82AhQgAEHvk4CAADYCECAAQQc2AgwMawsgAEEANgIcIAAgHzYCFCAAQe+TgIAANgIQIABBBzYCDEEAIRsMagsgAEEANgIcIAAgHzYCFCAAQdSOgIAANgIQIABBBzYCDEEAIRsMaQsgAEEANgIcIAAgATYCFCAAQfGSgIAANgIQIABBBjYCDEEAIRsMaAsgAEEANgIAIB8gI2tBBmohAUEkIRsLIAAgGzoAKSABIQEMTQsgAEEANgIAC0EAIRsgAEEANgIcIAAgBDYCFCAAQdSTgIAANgIQIABBBjYCDAxkCyAAKAIEIQ8gAEEANgIEIAAgDyAbEKaAgIAAIg8NASAbQQFqIQ8LQZ0BIRsMVwsgAEGmATYCHCAAIA82AgwgACAbQQFqNgIUQQAhGwxhCyAAKAIEIRAgAEEANgIEIAAgECAbEKaAgIAAIhANASAbQQFqIRALQZoBIRsMVAsgAEGnATYCHCAAIBA2AgwgACAbQQFqNgIUQQAhGwxeCyAAQQA2AhwgACARNgIUIABB84qAgAA2AhAgAEENNgIMQQAhGwxdCyAAQQA2AhwgACASNgIUIABBzo2AgAA2AhAgAEEJNgIMQQAhGwxcC0EBIRsLIAAgGzoAKyATQQFqIRIMMAsgAEEANgIcIAAgEzYCFCAAQaKNgIAANgIQIABBCTYCDEEAIRsMWQsgAEEANgIcIAAgFDYCFCAAQcWKgIAANgIQIABBCTYCDEEAIRsMWAtBASEbCyAAIBs6ACogFUEBaiEUDC4LIABBADYCHCAAIBU2AhQgAEG4jYCAADYCECAAQQk2AgxBACEbDFULIABBADYCHCAAIBU2AhQgAEHZmoCAADYCECAAQQg2AgwgAEEANgIAQQAhGwxUCyAAQQA2AgALQQAhGyAAQQA2AhwgACAENgIUIABBu5OAgAA2AhAgAEEINgIMDFILIABBAjoAKCAAQQA2AgAgFyAVa0EDaiEVDDULIABBAjoALyAAIAQgAhCjgICAACIbDQFBrwEhGwxFCyAALQAoQX9qDgIgIiELIBtBFUcNKSAAQbcBNgIcIAAgBDYCFCAAQdeRgIAANgIQIABBFTYCDEEAIRsMTgtBACEbDEILQQIhGwxBC0EMIRsMQAtBDyEbDD8LQREhGww+C0EdIRsMPQtBFSEbDDwLQRchGww7C0EYIRsMOgtBGiEbDDkLQRshGww4C0E6IRsMNwtBJCEbDDYLQSUhGww1C0EvIRsMNAtBMCEbDDMLQTshGwwyC0E8IRsMMQtBPiEbDDALQT8hGwwvC0HAACEbDC4LQcEAIRsMLQtBxQAhGwwsC0HHACEbDCsLQcgAIRsMKgtBygAhGwwpC0HfACEbDCgLQeIAIRsMJwtB+wAhGwwmC0GFASEbDCULQZcBIRsMJAtBmQEhGwwjC0GpASEbDCILQaQBIRsMIQtBmwEhGwwgC0GeASEbDB8LQZ8BIRsMHgtBoQEhGwwdC0GiASEbDBwLQacBIRsMGwtBqAEhGwwaCyAAQQA2AhwgACAENgIUIABB5ouAgAA2AhAgAEEQNgIMQQAhGwwkCyAAQQA2AhwgACAaNgIUIABBuo+AgAA2AhAgAEEENgIMQQAhGwwjCyAAQSc2AhwgACABNgIUIAAgBDYCDEEAIRsMIgsgGEEBaiEBDBkLIABBCjYCHCAAIAE2AhQgAEHBkYCAADYCECAAQRU2AgxBACEbDCALIABBEDYCHCAAIAE2AhQgAEHukYCAADYCECAAQRU2AgxBACEbDB8LIABBADYCHCAAIBs2AhQgAEGIjICAADYCECAAQRQ2AgxBACEbDB4LIABBBDYCHCAAIAE2AhQgAEGGkoCAADYCECAAQRU2AgxBACEbDB0LIABBADYCACAEIB9rQQVqIRULQaMBIRsMEAsgAEEANgIAIB8gI2tBAmohAUHjACEbDA8LIABBADYCACAAQYEEOwEoIBYgG2tBAmohAQtB0wAhGwwNCyABIQECQCAALQApQQVHDQBB0gAhGwwNC0HRACEbDAwLQQAhGyAAQQA2AhwgAEG6joCAADYCECAAQQc2AgwgACAfQQFqNgIUDBYLIABBADYCACAjICBrQQJqIQFBNCEbDAoLIAEhAQtBLSEbDAgLIAFBAWohAUEjIRsMBwtBICEbDAYLIABBADYCACAgICFrQQRqIQFBBiEbCyAAIBs6ACwgASEBQQ4hGwwECyAAQQA2AgAgIyAga0EHaiEBQQ0hGwwDCyAAQQA2AgAgHyEBQQshGwwCCyAAQQA2AgALIABBADoALCAYIQFBCSEbDAALC0EAIRsgAEEANgIcIAAgATYCFCAAQZaPgIAANgIQIABBCzYCDAwJC0EAIRsgAEEANgIcIAAgATYCFCAAQfGIgIAANgIQIABBCzYCDAwIC0EAIRsgAEEANgIcIAAgATYCFCAAQYiNgIAANgIQIABBCjYCDAwHCyAAQQI2AhwgACABNgIUIABBoJKAgAA2AhAgAEEWNgIMQQAhGwwGC0EBIRsMBQtBwgAhGyABIgQgAkYNBCADQQhqIAAgBCACQfilgIAAQQoQuYCAgAAgAygCDCEEIAMoAggOAwEEAgALEL+AgIAAAAsgAEEANgIcIABBuZKAgAA2AhAgAEEXNgIMIAAgBEEBajYCFEEAIRsMAgsgAEEANgIcIAAgBDYCFCAAQc6SgIAANgIQIABBCTYCDEEAIRsMAQsCQCABIgQgAkcNAEEUIRsMAQsgAEGJgICAADYCCCAAIAQ2AgRBEyEbCyADQRBqJICAgIAAIBsLrwEBAn8gASgCACEGAkACQCACIANGDQAgBCAGaiEEIAYgA2ogAmshByACIAZBf3MgBWoiBmohBQNAAkAgAi0AACAELQAARg0AQQIhBAwDCwJAIAYNAEEAIQQgBSECDAMLIAZBf2ohBiAEQQFqIQQgAkEBaiICIANHDQALIAchBiADIQILIABBATYCACABIAY2AgAgACACNgIEDwsgAUEANgIAIAAgBDYCACAAIAI2AgQLCgAgABC7gICAAAuVNwELfyOAgICAAEEQayIBJICAgIAAAkBBACgCwLOAgAANAEEAEL6AgIAAQaC3hIAAayICQdkASQ0AQQAhAwJAQQAoAoC3gIAAIgQNAEEAQn83Aoy3gIAAQQBCgICEgICAwAA3AoS3gIAAQQAgAUEIakFwcUHYqtWqBXMiBDYCgLeAgABBAEEANgKUt4CAAEEAQQA2AuS2gIAAC0EAIAI2Auy2gIAAQQBBoLeEgAA2Aui2gIAAQQBBoLeEgAA2ArizgIAAQQAgBDYCzLOAgABBAEF/NgLIs4CAAANAIANB5LOAgABqIANB2LOAgABqIgQ2AgAgBCADQdCzgIAAaiIFNgIAIANB3LOAgABqIAU2AgAgA0Hss4CAAGogA0Hgs4CAAGoiBTYCACAFIAQ2AgAgA0H0s4CAAGogA0Hos4CAAGoiBDYCACAEIAU2AgAgA0Hws4CAAGogBDYCACADQSBqIgNBgAJHDQALQaC3hIAAQXhBoLeEgABrQQ9xQQBBoLeEgABBCGpBD3EbIgNqIgRBBGogAiADa0FIaiIDQQFyNgIAQQBBACgCkLeAgAA2AsSzgIAAQQAgBDYCwLOAgABBACADNgK0s4CAACACQaC3hIAAakFMakE4NgIACwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQewBSw0AAkBBACgCqLOAgAAiBkEQIABBE2pBcHEgAEELSRsiAkEDdiIEdiIDQQNxRQ0AIANBAXEgBHJBAXMiBUEDdCIAQdizgIAAaigCACIEQQhqIQMCQAJAIAQoAggiAiAAQdCzgIAAaiIARw0AQQAgBkF+IAV3cTYCqLOAgAAMAQsgACACNgIIIAIgADYCDAsgBCAFQQN0IgVBA3I2AgQgBCAFakEEaiIEIAQoAgBBAXI2AgAMDAsgAkEAKAKws4CAACIHTQ0BAkAgA0UNAAJAAkAgAyAEdEECIAR0IgNBACADa3JxIgNBACADa3FBf2oiAyADQQx2QRBxIgN2IgRBBXZBCHEiBSADciAEIAV2IgNBAnZBBHEiBHIgAyAEdiIDQQF2QQJxIgRyIAMgBHYiA0EBdkEBcSIEciADIAR2aiIFQQN0IgBB2LOAgABqKAIAIgQoAggiAyAAQdCzgIAAaiIARw0AQQAgBkF+IAV3cSIGNgKos4CAAAwBCyAAIAM2AgggAyAANgIMCyAEQQhqIQMgBCACQQNyNgIEIAQgBUEDdCIFaiAFIAJrIgU2AgAgBCACaiIAIAVBAXI2AgQCQCAHRQ0AIAdBA3YiCEEDdEHQs4CAAGohAkEAKAK8s4CAACEEAkACQCAGQQEgCHQiCHENAEEAIAYgCHI2AqizgIAAIAIhCAwBCyACKAIIIQgLIAggBDYCDCACIAQ2AgggBCACNgIMIAQgCDYCCAtBACAANgK8s4CAAEEAIAU2ArCzgIAADAwLQQAoAqyzgIAAIglFDQEgCUEAIAlrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqQQJ0Qdi1gIAAaigCACIAKAIEQXhxIAJrIQQgACEFAkADQAJAIAUoAhAiAw0AIAVBFGooAgAiA0UNAgsgAygCBEF4cSACayIFIAQgBSAESSIFGyEEIAMgACAFGyEAIAMhBQwACwsgACgCGCEKAkAgACgCDCIIIABGDQBBACgCuLOAgAAgACgCCCIDSxogCCADNgIIIAMgCDYCDAwLCwJAIABBFGoiBSgCACIDDQAgACgCECIDRQ0DIABBEGohBQsDQCAFIQsgAyIIQRRqIgUoAgAiAw0AIAhBEGohBSAIKAIQIgMNAAsgC0EANgIADAoLQX8hAiAAQb9/Sw0AIABBE2oiA0FwcSECQQAoAqyzgIAAIgdFDQBBACELAkAgAkGAAkkNAEEfIQsgAkH///8HSw0AIANBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiBSAFQYCAD2pBEHZBAnEiBXRBD3YgAyAEciAFcmsiA0EBdCACIANBFWp2QQFxckEcaiELC0EAIAJrIQQCQAJAAkACQCALQQJ0Qdi1gIAAaigCACIFDQBBACEDQQAhCAwBC0EAIQMgAkEAQRkgC0EBdmsgC0EfRht0IQBBACEIA0ACQCAFKAIEQXhxIAJrIgYgBE8NACAGIQQgBSEIIAYNAEEAIQQgBSEIIAUhAwwDCyADIAVBFGooAgAiBiAGIAUgAEEddkEEcWpBEGooAgAiBUYbIAMgBhshAyAAQQF0IQAgBQ0ACwsCQCADIAhyDQBBACEIQQIgC3QiA0EAIANrciAHcSIDRQ0DIANBACADa3FBf2oiAyADQQx2QRBxIgN2IgVBBXZBCHEiACADciAFIAB2IgNBAnZBBHEiBXIgAyAFdiIDQQF2QQJxIgVyIAMgBXYiA0EBdkEBcSIFciADIAV2akECdEHYtYCAAGooAgAhAwsgA0UNAQsDQCADKAIEQXhxIAJrIgYgBEkhAAJAIAMoAhAiBQ0AIANBFGooAgAhBQsgBiAEIAAbIQQgAyAIIAAbIQggBSEDIAUNAAsLIAhFDQAgBEEAKAKws4CAACACa08NACAIKAIYIQsCQCAIKAIMIgAgCEYNAEEAKAK4s4CAACAIKAIIIgNLGiAAIAM2AgggAyAANgIMDAkLAkAgCEEUaiIFKAIAIgMNACAIKAIQIgNFDQMgCEEQaiEFCwNAIAUhBiADIgBBFGoiBSgCACIDDQAgAEEQaiEFIAAoAhAiAw0ACyAGQQA2AgAMCAsCQEEAKAKws4CAACIDIAJJDQBBACgCvLOAgAAhBAJAAkAgAyACayIFQRBJDQAgBCACaiIAIAVBAXI2AgRBACAFNgKws4CAAEEAIAA2AryzgIAAIAQgA2ogBTYCACAEIAJBA3I2AgQMAQsgBCADQQNyNgIEIAMgBGpBBGoiAyADKAIAQQFyNgIAQQBBADYCvLOAgABBAEEANgKws4CAAAsgBEEIaiEDDAoLAkBBACgCtLOAgAAiACACTQ0AQQAoAsCzgIAAIgMgAmoiBCAAIAJrIgVBAXI2AgRBACAFNgK0s4CAAEEAIAQ2AsCzgIAAIAMgAkEDcjYCBCADQQhqIQMMCgsCQAJAQQAoAoC3gIAARQ0AQQAoAoi3gIAAIQQMAQtBAEJ/NwKMt4CAAEEAQoCAhICAgMAANwKEt4CAAEEAIAFBDGpBcHFB2KrVqgVzNgKAt4CAAEEAQQA2ApS3gIAAQQBBADYC5LaAgABBgIAEIQQLQQAhAwJAIAQgAkHHAGoiB2oiBkEAIARrIgtxIgggAksNAEEAQTA2Api3gIAADAoLAkBBACgC4LaAgAAiA0UNAAJAQQAoAti2gIAAIgQgCGoiBSAETQ0AIAUgA00NAQtBACEDQQBBMDYCmLeAgAAMCgtBAC0A5LaAgABBBHENBAJAAkACQEEAKALAs4CAACIERQ0AQei2gIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGogBEsNAwsgAygCCCIDDQALC0EAEL6AgIAAIgBBf0YNBSAIIQYCQEEAKAKEt4CAACIDQX9qIgQgAHFFDQAgCCAAayAEIABqQQAgA2txaiEGCyAGIAJNDQUgBkH+////B0sNBQJAQQAoAuC2gIAAIgNFDQBBACgC2LaAgAAiBCAGaiIFIARNDQYgBSADSw0GCyAGEL6AgIAAIgMgAEcNAQwHCyAGIABrIAtxIgZB/v///wdLDQQgBhC+gICAACIAIAMoAgAgAygCBGpGDQMgACEDCwJAIANBf0YNACACQcgAaiAGTQ0AAkAgByAGa0EAKAKIt4CAACIEakEAIARrcSIEQf7///8HTQ0AIAMhAAwHCwJAIAQQvoCAgABBf0YNACAEIAZqIQYgAyEADAcLQQAgBmsQvoCAgAAaDAQLIAMhACADQX9HDQUMAwtBACEIDAcLQQAhAAwFCyAAQX9HDQILQQBBACgC5LaAgABBBHI2AuS2gIAACyAIQf7///8HSw0BIAgQvoCAgAAhAEEAEL6AgIAAIQMgAEF/Rg0BIANBf0YNASAAIANPDQEgAyAAayIGIAJBOGpNDQELQQBBACgC2LaAgAAgBmoiAzYC2LaAgAACQCADQQAoAty2gIAATQ0AQQAgAzYC3LaAgAALAkACQAJAAkBBACgCwLOAgAAiBEUNAEHotoCAACEDA0AgACADKAIAIgUgAygCBCIIakYNAiADKAIIIgMNAAwDCwsCQAJAQQAoArizgIAAIgNFDQAgACADTw0BC0EAIAA2ArizgIAAC0EAIQNBACAGNgLstoCAAEEAIAA2Aui2gIAAQQBBfzYCyLOAgABBAEEAKAKAt4CAADYCzLOAgABBAEEANgL0toCAAANAIANB5LOAgABqIANB2LOAgABqIgQ2AgAgBCADQdCzgIAAaiIFNgIAIANB3LOAgABqIAU2AgAgA0Hss4CAAGogA0Hgs4CAAGoiBTYCACAFIAQ2AgAgA0H0s4CAAGogA0Hos4CAAGoiBDYCACAEIAU2AgAgA0Hws4CAAGogBDYCACADQSBqIgNBgAJHDQALIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgQgBiADa0FIaiIDQQFyNgIEQQBBACgCkLeAgAA2AsSzgIAAQQAgBDYCwLOAgABBACADNgK0s4CAACAGIABqQUxqQTg2AgAMAgsgAy0ADEEIcQ0AIAUgBEsNACAAIARNDQAgBEF4IARrQQ9xQQAgBEEIakEPcRsiBWoiAEEAKAK0s4CAACAGaiILIAVrIgVBAXI2AgQgAyAIIAZqNgIEQQBBACgCkLeAgAA2AsSzgIAAQQAgBTYCtLOAgABBACAANgLAs4CAACALIARqQQRqQTg2AgAMAQsCQCAAQQAoArizgIAAIgtPDQBBACAANgK4s4CAACAAIQsLIAAgBmohCEHotoCAACEDAkACQAJAAkACQAJAAkADQCADKAIAIAhGDQEgAygCCCIDDQAMAgsLIAMtAAxBCHFFDQELQei2gIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGoiBSAESw0DCyADKAIIIQMMAAsLIAMgADYCACADIAMoAgQgBmo2AgQgAEF4IABrQQ9xQQAgAEEIakEPcRtqIgYgAkEDcjYCBCAIQXggCGtBD3FBACAIQQhqQQ9xG2oiCCAGIAJqIgJrIQUCQCAEIAhHDQBBACACNgLAs4CAAEEAQQAoArSzgIAAIAVqIgM2ArSzgIAAIAIgA0EBcjYCBAwDCwJAQQAoAryzgIAAIAhHDQBBACACNgK8s4CAAEEAQQAoArCzgIAAIAVqIgM2ArCzgIAAIAIgA0EBcjYCBCACIANqIAM2AgAMAwsCQCAIKAIEIgNBA3FBAUcNACADQXhxIQcCQAJAIANB/wFLDQAgCCgCCCIEIANBA3YiC0EDdEHQs4CAAGoiAEYaAkAgCCgCDCIDIARHDQBBAEEAKAKos4CAAEF+IAt3cTYCqLOAgAAMAgsgAyAARhogAyAENgIIIAQgAzYCDAwBCyAIKAIYIQkCQAJAIAgoAgwiACAIRg0AIAsgCCgCCCIDSxogACADNgIIIAMgADYCDAwBCwJAIAhBFGoiAygCACIEDQAgCEEQaiIDKAIAIgQNAEEAIQAMAQsDQCADIQsgBCIAQRRqIgMoAgAiBA0AIABBEGohAyAAKAIQIgQNAAsgC0EANgIACyAJRQ0AAkACQCAIKAIcIgRBAnRB2LWAgABqIgMoAgAgCEcNACADIAA2AgAgAA0BQQBBACgCrLOAgABBfiAEd3E2AqyzgIAADAILIAlBEEEUIAkoAhAgCEYbaiAANgIAIABFDQELIAAgCTYCGAJAIAgoAhAiA0UNACAAIAM2AhAgAyAANgIYCyAIKAIUIgNFDQAgAEEUaiADNgIAIAMgADYCGAsgByAFaiEFIAggB2ohCAsgCCAIKAIEQX5xNgIEIAIgBWogBTYCACACIAVBAXI2AgQCQCAFQf8BSw0AIAVBA3YiBEEDdEHQs4CAAGohAwJAAkBBACgCqLOAgAAiBUEBIAR0IgRxDQBBACAFIARyNgKos4CAACADIQQMAQsgAygCCCEECyAEIAI2AgwgAyACNgIIIAIgAzYCDCACIAQ2AggMAwtBHyEDAkAgBUH///8HSw0AIAVBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiACAAQYCAD2pBEHZBAnEiAHRBD3YgAyAEciAAcmsiA0EBdCAFIANBFWp2QQFxckEcaiEDCyACIAM2AhwgAkIANwIQIANBAnRB2LWAgABqIQQCQEEAKAKss4CAACIAQQEgA3QiCHENACAEIAI2AgBBACAAIAhyNgKss4CAACACIAQ2AhggAiACNgIIIAIgAjYCDAwDCyAFQQBBGSADQQF2ayADQR9GG3QhAyAEKAIAIQADQCAAIgQoAgRBeHEgBUYNAiADQR12IQAgA0EBdCEDIAQgAEEEcWpBEGoiCCgCACIADQALIAggAjYCACACIAQ2AhggAiACNgIMIAIgAjYCCAwCCyAAQXggAGtBD3FBACAAQQhqQQ9xGyIDaiILIAYgA2tBSGoiA0EBcjYCBCAIQUxqQTg2AgAgBCAFQTcgBWtBD3FBACAFQUlqQQ9xG2pBQWoiCCAIIARBEGpJGyIIQSM2AgRBAEEAKAKQt4CAADYCxLOAgABBACALNgLAs4CAAEEAIAM2ArSzgIAAIAhBEGpBACkC8LaAgAA3AgAgCEEAKQLotoCAADcCCEEAIAhBCGo2AvC2gIAAQQAgBjYC7LaAgABBACAANgLotoCAAEEAQQA2AvS2gIAAIAhBJGohAwNAIANBBzYCACAFIANBBGoiA0sNAAsgCCAERg0DIAggCCgCBEF+cTYCBCAIIAggBGsiBjYCACAEIAZBAXI2AgQCQCAGQf8BSw0AIAZBA3YiBUEDdEHQs4CAAGohAwJAAkBBACgCqLOAgAAiAEEBIAV0IgVxDQBBACAAIAVyNgKos4CAACADIQUMAQsgAygCCCEFCyAFIAQ2AgwgAyAENgIIIAQgAzYCDCAEIAU2AggMBAtBHyEDAkAgBkH///8HSw0AIAZBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgAyAFciAAcmsiA0EBdCAGIANBFWp2QQFxckEcaiEDCyAEQgA3AhAgBEEcaiADNgIAIANBAnRB2LWAgABqIQUCQEEAKAKss4CAACIAQQEgA3QiCHENACAFIAQ2AgBBACAAIAhyNgKss4CAACAEQRhqIAU2AgAgBCAENgIIIAQgBDYCDAwECyAGQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQADQCAAIgUoAgRBeHEgBkYNAyADQR12IQAgA0EBdCEDIAUgAEEEcWpBEGoiCCgCACIADQALIAggBDYCACAEQRhqIAU2AgAgBCAENgIMIAQgBDYCCAwDCyAEKAIIIgMgAjYCDCAEIAI2AgggAkEANgIYIAIgBDYCDCACIAM2AggLIAZBCGohAwwFCyAFKAIIIgMgBDYCDCAFIAQ2AgggBEEYakEANgIAIAQgBTYCDCAEIAM2AggLQQAoArSzgIAAIgMgAk0NAEEAKALAs4CAACIEIAJqIgUgAyACayIDQQFyNgIEQQAgAzYCtLOAgABBACAFNgLAs4CAACAEIAJBA3I2AgQgBEEIaiEDDAMLQQAhA0EAQTA2Api3gIAADAILAkAgC0UNAAJAAkAgCCAIKAIcIgVBAnRB2LWAgABqIgMoAgBHDQAgAyAANgIAIAANAUEAIAdBfiAFd3EiBzYCrLOAgAAMAgsgC0EQQRQgCygCECAIRhtqIAA2AgAgAEUNAQsgACALNgIYAkAgCCgCECIDRQ0AIAAgAzYCECADIAA2AhgLIAhBFGooAgAiA0UNACAAQRRqIAM2AgAgAyAANgIYCwJAAkAgBEEPSw0AIAggBCACaiIDQQNyNgIEIAMgCGpBBGoiAyADKAIAQQFyNgIADAELIAggAmoiACAEQQFyNgIEIAggAkEDcjYCBCAAIARqIAQ2AgACQCAEQf8BSw0AIARBA3YiBEEDdEHQs4CAAGohAwJAAkBBACgCqLOAgAAiBUEBIAR0IgRxDQBBACAFIARyNgKos4CAACADIQQMAQsgAygCCCEECyAEIAA2AgwgAyAANgIIIAAgAzYCDCAAIAQ2AggMAQtBHyEDAkAgBEH///8HSw0AIARBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAFciACcmsiA0EBdCAEIANBFWp2QQFxckEcaiEDCyAAIAM2AhwgAEIANwIQIANBAnRB2LWAgABqIQUCQCAHQQEgA3QiAnENACAFIAA2AgBBACAHIAJyNgKss4CAACAAIAU2AhggACAANgIIIAAgADYCDAwBCyAEQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQICQANAIAIiBSgCBEF4cSAERg0BIANBHXYhAiADQQF0IQMgBSACQQRxakEQaiIGKAIAIgINAAsgBiAANgIAIAAgBTYCGCAAIAA2AgwgACAANgIIDAELIAUoAggiAyAANgIMIAUgADYCCCAAQQA2AhggACAFNgIMIAAgAzYCCAsgCEEIaiEDDAELAkAgCkUNAAJAAkAgACAAKAIcIgVBAnRB2LWAgABqIgMoAgBHDQAgAyAINgIAIAgNAUEAIAlBfiAFd3E2AqyzgIAADAILIApBEEEUIAooAhAgAEYbaiAINgIAIAhFDQELIAggCjYCGAJAIAAoAhAiA0UNACAIIAM2AhAgAyAINgIYCyAAQRRqKAIAIgNFDQAgCEEUaiADNgIAIAMgCDYCGAsCQAJAIARBD0sNACAAIAQgAmoiA0EDcjYCBCADIABqQQRqIgMgAygCAEEBcjYCAAwBCyAAIAJqIgUgBEEBcjYCBCAAIAJBA3I2AgQgBSAEaiAENgIAAkAgB0UNACAHQQN2IghBA3RB0LOAgABqIQJBACgCvLOAgAAhAwJAAkBBASAIdCIIIAZxDQBBACAIIAZyNgKos4CAACACIQgMAQsgAigCCCEICyAIIAM2AgwgAiADNgIIIAMgAjYCDCADIAg2AggLQQAgBTYCvLOAgABBACAENgKws4CAAAsgAEEIaiEDCyABQRBqJICAgIAAIAMLCgAgABC9gICAAAvwDQEHfwJAIABFDQAgAEF4aiIBIABBfGooAgAiAkF4cSIAaiEDAkAgAkEBcQ0AIAJBA3FFDQEgASABKAIAIgJrIgFBACgCuLOAgAAiBEkNASACIABqIQACQEEAKAK8s4CAACABRg0AAkAgAkH/AUsNACABKAIIIgQgAkEDdiIFQQN0QdCzgIAAaiIGRhoCQCABKAIMIgIgBEcNAEEAQQAoAqizgIAAQX4gBXdxNgKos4CAAAwDCyACIAZGGiACIAQ2AgggBCACNgIMDAILIAEoAhghBwJAAkAgASgCDCIGIAFGDQAgBCABKAIIIgJLGiAGIAI2AgggAiAGNgIMDAELAkAgAUEUaiICKAIAIgQNACABQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQECQAJAIAEoAhwiBEECdEHYtYCAAGoiAigCACABRw0AIAIgBjYCACAGDQFBAEEAKAKss4CAAEF+IAR3cTYCrLOAgAAMAwsgB0EQQRQgBygCECABRhtqIAY2AgAgBkUNAgsgBiAHNgIYAkAgASgCECICRQ0AIAYgAjYCECACIAY2AhgLIAEoAhQiAkUNASAGQRRqIAI2AgAgAiAGNgIYDAELIAMoAgQiAkEDcUEDRw0AIAMgAkF+cTYCBEEAIAA2ArCzgIAAIAEgAGogADYCACABIABBAXI2AgQPCyADIAFNDQAgAygCBCICQQFxRQ0AAkACQCACQQJxDQACQEEAKALAs4CAACADRw0AQQAgATYCwLOAgABBAEEAKAK0s4CAACAAaiIANgK0s4CAACABIABBAXI2AgQgAUEAKAK8s4CAAEcNA0EAQQA2ArCzgIAAQQBBADYCvLOAgAAPCwJAQQAoAryzgIAAIANHDQBBACABNgK8s4CAAEEAQQAoArCzgIAAIABqIgA2ArCzgIAAIAEgAEEBcjYCBCABIABqIAA2AgAPCyACQXhxIABqIQACQAJAIAJB/wFLDQAgAygCCCIEIAJBA3YiBUEDdEHQs4CAAGoiBkYaAkAgAygCDCICIARHDQBBAEEAKAKos4CAAEF+IAV3cTYCqLOAgAAMAgsgAiAGRhogAiAENgIIIAQgAjYCDAwBCyADKAIYIQcCQAJAIAMoAgwiBiADRg0AQQAoArizgIAAIAMoAggiAksaIAYgAjYCCCACIAY2AgwMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEGDAELA0AgAiEFIAQiBkEUaiICKAIAIgQNACAGQRBqIQIgBigCECIEDQALIAVBADYCAAsgB0UNAAJAAkAgAygCHCIEQQJ0Qdi1gIAAaiICKAIAIANHDQAgAiAGNgIAIAYNAUEAQQAoAqyzgIAAQX4gBHdxNgKss4CAAAwCCyAHQRBBFCAHKAIQIANGG2ogBjYCACAGRQ0BCyAGIAc2AhgCQCADKAIQIgJFDQAgBiACNgIQIAIgBjYCGAsgAygCFCICRQ0AIAZBFGogAjYCACACIAY2AhgLIAEgAGogADYCACABIABBAXI2AgQgAUEAKAK8s4CAAEcNAUEAIAA2ArCzgIAADwsgAyACQX5xNgIEIAEgAGogADYCACABIABBAXI2AgQLAkAgAEH/AUsNACAAQQN2IgJBA3RB0LOAgABqIQACQAJAQQAoAqizgIAAIgRBASACdCICcQ0AQQAgBCACcjYCqLOAgAAgACECDAELIAAoAgghAgsgAiABNgIMIAAgATYCCCABIAA2AgwgASACNgIIDwtBHyECAkAgAEH///8HSw0AIABBCHYiAiACQYD+P2pBEHZBCHEiAnQiBCAEQYDgH2pBEHZBBHEiBHQiBiAGQYCAD2pBEHZBAnEiBnRBD3YgAiAEciAGcmsiAkEBdCAAIAJBFWp2QQFxckEcaiECCyABQgA3AhAgAUEcaiACNgIAIAJBAnRB2LWAgABqIQQCQAJAQQAoAqyzgIAAIgZBASACdCIDcQ0AIAQgATYCAEEAIAYgA3I2AqyzgIAAIAFBGGogBDYCACABIAE2AgggASABNgIMDAELIABBAEEZIAJBAXZrIAJBH0YbdCECIAQoAgAhBgJAA0AgBiIEKAIEQXhxIABGDQEgAkEddiEGIAJBAXQhAiAEIAZBBHFqQRBqIgMoAgAiBg0ACyADIAE2AgAgAUEYaiAENgIAIAEgATYCDCABIAE2AggMAQsgBCgCCCIAIAE2AgwgBCABNgIIIAFBGGpBADYCACABIAQ2AgwgASAANgIIC0EAQQAoAsizgIAAQX9qIgFBfyABGzYCyLOAgAALC04AAkAgAA0APwBBEHQPCwJAIABB//8DcQ0AIABBf0wNAAJAIABBEHZAACIAQX9HDQBBAEEwNgKYt4CAAEF/DwsgAEEQdA8LEL+AgIAAAAsEAAAACwuuKwEAQYAIC6YrAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBwYXJhbWV0ZXJzAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABNS0FDVElWSVRZAENPUFkATk9USUZZAFBMQVkAUFVUAENIRUNLT1VUAFBPU1QAUkVQT1JUAEhQRV9JTlZBTElEX0NPTlNUQU5UAEdFVABIUEVfU1RSSUNUAFJFRElSRUNUAENPTk5FQ1QASFBFX0lOVkFMSURfU1RBVFVTAE9QVElPTlMAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASFBFX0lOVkFMSURfVVJMAE1LQ09MAEFDTABIUEVfSU5URVJOQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBQQVVTRQBQVVJHRQBNRVJHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAFBST1BGSU5EAFVOQklORABSRUJJTkQASFBFX0xGX0VYUEVDVEVEAEhQRV9QQVVTRUQASEVBRABFeHBlY3RlZCBIVFRQLwCMCwAAfwsAAIMKAAA5DQAAwAsAAA0LAAAPDQAAZQsAAGoKAAAjCwAATAsAAKULAAAjDAAAnwoAAIwMAAD3CwAANwsAAD8MAABtDAAA3woAAFcMAABJDQAAtAwAAMcMAADWCgAAhQwAAH8KAABUDQAAXgoAAFEKAACXCgAAsgoAAO0MAABACgAAnAsAAHULAAA6DAAAIg0AAOQLAADwCwAAmgsAADQNAAAyDQAAKw0AAHsLAABjCgAANQoAAFUKAACuDAAA7gsAAEUKAAD+DAAA/AwAAOgLAACoDAAA8woAAJULAACTCwAA3QwAAKELAADzDAAA5AwAAP4KAABMCgAAogwAAAQLAADICgAAugoAAI4KAAAIDQAA3gsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=="; - } -}); - -// lib/client.js -var require_client = __commonJS({ - "lib/client.js"(exports2, module2) { - "use strict"; - var assert = require("assert"); - var net = require("net"); - var util2 = require_util(); - var Request = require_request(); - var DispatcherBase = require_dispatcher_base(); - var RedirectHandler = require_redirect(); - var { - RequestContentLengthMismatchError, - ResponseContentLengthMismatchError, - TrailerMismatchError, - InvalidArgumentError: InvalidArgumentError2, - RequestAbortedError, - HeadersTimeoutError, - HeadersOverflowError, - SocketError, - InformationalError, - BodyTimeoutError, - HTTPParserError - } = require_errors(); - var buildConnector2 = require_connect(); - var { - kUrl, - kReset, - kServerName, - kClient, - kBusy, - kParser, - kConnect, - kBlocking, - kResuming, - kRunning, - kPending, - kSize, - kWriting, - kQueue, - kConnected, - kConnecting, - kNeedDrain, - kNoRef, - kKeepAliveDefaultTimeout, - kHostHeader, - kPendingIdx, - kRunningIdx, - kError, - kPipelining, - kSocket, - kKeepAliveTimeoutValue, - kMaxHeadersSize, - kKeepAliveMaxTimeout, - kKeepAliveTimeoutThreshold, - kHeadersTimeout, - kBodyTimeout, - kStrictContentLength, - kConnector, - kMaxRedirections, - kMaxRequests, - kCounter, - kClose, - kDestroy, - kDispatch - } = require_symbols(); - var kClosedResolve = Symbol("kClosedResolve"); - var channels = {}; - try { - const diagnosticsChannel = require("diagnostics_channel"); - channels.sendHeaders = diagnosticsChannel.channel("undici:client:sendHeaders"); - channels.beforeConnect = diagnosticsChannel.channel("undici:client:beforeConnect"); - channels.connectError = diagnosticsChannel.channel("undici:client:connectError"); - channels.connected = diagnosticsChannel.channel("undici:client:connected"); - } catch { - channels.sendHeaders = { hasSubscribers: false }; - channels.beforeConnect = { hasSubscribers: false }; - channels.connectError = { hasSubscribers: false }; - channels.connected = { hasSubscribers: false }; - } - var Client2 = class extends DispatcherBase { - constructor(url, { - maxHeaderSize, - headersTimeout, - socketTimeout, - requestTimeout, - connectTimeout, - bodyTimeout, - idleTimeout, - keepAlive, - keepAliveTimeout, - maxKeepAliveTimeout, - keepAliveMaxTimeout, - keepAliveTimeoutThreshold, - socketPath, - pipelining, - tls, - strictContentLength, - maxCachedSessions, - maxRedirections, - connect: connect2, - maxRequestsPerClient - } = {}) { - super(); - if (keepAlive !== void 0) { - throw new InvalidArgumentError2("unsupported keepAlive, use pipelining=0 instead"); - } - if (socketTimeout !== void 0) { - throw new InvalidArgumentError2("unsupported socketTimeout, use headersTimeout & bodyTimeout instead"); - } - if (requestTimeout !== void 0) { - throw new InvalidArgumentError2("unsupported requestTimeout, use headersTimeout & bodyTimeout instead"); - } - if (idleTimeout !== void 0) { - throw new InvalidArgumentError2("unsupported idleTimeout, use keepAliveTimeout instead"); - } - if (maxKeepAliveTimeout !== void 0) { - throw new InvalidArgumentError2("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead"); - } - if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { - throw new InvalidArgumentError2("invalid maxHeaderSize"); - } - if (socketPath != null && typeof socketPath !== "string") { - throw new InvalidArgumentError2("invalid socketPath"); - } - if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { - throw new InvalidArgumentError2("invalid connectTimeout"); - } - if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { - throw new InvalidArgumentError2("invalid keepAliveTimeout"); - } - if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { - throw new InvalidArgumentError2("invalid keepAliveMaxTimeout"); - } - if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { - throw new InvalidArgumentError2("invalid keepAliveTimeoutThreshold"); - } - if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { - throw new InvalidArgumentError2("headersTimeout must be a positive integer or zero"); - } - if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { - throw new InvalidArgumentError2("bodyTimeout must be a positive integer or zero"); - } - if (connect2 != null && typeof connect2 !== "function" && typeof connect2 !== "object") { - throw new InvalidArgumentError2("connect must be a function or an object"); - } - if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { - throw new InvalidArgumentError2("maxRedirections must be a positive number"); - } - if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { - throw new InvalidArgumentError2("maxRequestsPerClient must be a positive number"); - } - if (typeof connect2 !== "function") { - connect2 = buildConnector2({ - ...tls, - maxCachedSessions, - socketPath, - timeout: connectTimeout, - ...connect2 - }); - } - this[kUrl] = util2.parseOrigin(url); - this[kConnector] = connect2; - this[kSocket] = null; - this[kPipelining] = pipelining != null ? pipelining : 1; - this[kMaxHeadersSize] = maxHeaderSize || 16384; - this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; - this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout; - this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold; - this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]; - this[kServerName] = null; - this[kResuming] = 0; - this[kNeedDrain] = 0; - this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}\r -`; - this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e4; - this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e4; - this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; - this[kMaxRedirections] = maxRedirections; - this[kMaxRequests] = maxRequestsPerClient; - this[kClosedResolve] = null; - this[kQueue] = []; - this[kRunningIdx] = 0; - this[kPendingIdx] = 0; - } - get pipelining() { - return this[kPipelining]; - } - set pipelining(value) { - this[kPipelining] = value; - resume(this, true); - } - get [kPending]() { - return this[kQueue].length - this[kPendingIdx]; - } - get [kRunning]() { - return this[kPendingIdx] - this[kRunningIdx]; - } - get [kSize]() { - return this[kQueue].length - this[kRunningIdx]; - } - get [kConnected]() { - return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed; - } - get [kBusy]() { - const socket = this[kSocket]; - return socket && (socket[kReset] || socket[kWriting] || socket[kBlocking]) || this[kSize] >= (this[kPipelining] || 1) || this[kPending] > 0; - } - [kConnect](cb) { - connect(this); - this.once("connect", cb); - } - [kDispatch](opts, handler) { - const { maxRedirections = this[kMaxRedirections] } = opts; - if (maxRedirections) { - handler = new RedirectHandler(this, maxRedirections, opts, handler); - } - const origin = opts.origin || this[kUrl].origin; - const request = new Request(origin, opts, handler); - this[kQueue].push(request); - if (this[kResuming]) { - } else if (util2.bodyLength(request.body) == null && util2.isIterable(request.body)) { - this[kResuming] = 1; - process.nextTick(resume, this); - } else { - resume(this, true); - } - if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { - this[kNeedDrain] = 2; - } - return this[kNeedDrain] < 2; - } - async [kClose]() { - return new Promise((resolve) => { - if (!this[kSize]) { - this.destroy(resolve); - } else { - this[kClosedResolve] = resolve; - } - }); - } - async [kDestroy](err) { - return new Promise((resolve) => { - const requests = this[kQueue].splice(this[kPendingIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(this, request, err); - } - const callback = () => { - if (this[kClosedResolve]) { - this[kClosedResolve](); - this[kClosedResolve] = null; - } - resolve(); - }; - if (!this[kSocket]) { - queueMicrotask(callback); - } else { - util2.destroy(this[kSocket].on("close", callback), err); - } - resume(this); - }); - } - }; - var constants = require_constants(); - var EMPTY_BUF = Buffer.alloc(0); - async function lazyllhttp() { - const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0; - let mod; - try { - mod = await WebAssembly.compile(Buffer.from(require_llhttp_simd_wasm(), "base64")); - } catch (e) { - mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require_llhttp_wasm(), "base64")); - } - return await WebAssembly.instantiate(mod, { - env: { - wasm_on_url: (p, at, len) => { - return 0; - }, - wasm_on_status: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr; - const end = start + len; - return currentParser.onStatus(currentBufferRef.slice(start, end)) || 0; - }, - wasm_on_message_begin: (p) => { - assert.strictEqual(currentParser.ptr, p); - return currentParser.onMessageBegin() || 0; - }, - wasm_on_header_field: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr; - const end = start + len; - return currentParser.onHeaderField(currentBufferRef.slice(start, end)) || 0; - }, - wasm_on_header_value: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr; - const end = start + len; - return currentParser.onHeaderValue(currentBufferRef.slice(start, end)) || 0; - }, - wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { - assert.strictEqual(currentParser.ptr, p); - return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0; - }, - wasm_on_body: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr; - const end = start + len; - return currentParser.onBody(currentBufferRef.slice(start, end)) || 0; - }, - wasm_on_message_complete: (p) => { - assert.strictEqual(currentParser.ptr, p); - return currentParser.onMessageComplete() || 0; - } - } - }); - } - var llhttpInstance = null; - var llhttpPromise = lazyllhttp().catch(() => { - }); - var currentParser = null; - var currentBufferRef = null; - var currentBufferSize = 0; - var currentBufferPtr = null; - var TIMEOUT_HEADERS = 1; - var TIMEOUT_BODY = 2; - var TIMEOUT_IDLE = 3; - var Parser = class { - constructor(client, socket, { exports: exports3 }) { - assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0); - this.llhttp = exports3; - this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE); - this.client = client; - this.socket = socket; - this.timeout = null; - this.timeoutValue = null; - this.timeoutType = null; - this.statusCode = null; - this.statusText = ""; - this.upgrade = false; - this.headers = []; - this.headersSize = 0; - this.headersMaxSize = client[kMaxHeadersSize]; - this.shouldKeepAlive = false; - this.paused = false; - this.resume = this.resume.bind(this); - this.bytesRead = 0; - this.trailer = ""; - this.keepAlive = ""; - this.contentLength = ""; - } - setTimeout(value, type) { - this.timeoutType = type; - if (value !== this.timeoutValue) { - clearTimeout(this.timeout); - if (value) { - this.timeout = setTimeout(onParserTimeout, value, this); - if (this.timeout.unref) { - this.timeout.unref(); - } - } else { - this.timeout = null; - } - this.timeoutValue = value; - } else if (this.timeout) { - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - } - resume() { - if (this.socket.destroyed || !this.paused) { - return; - } - assert(this.ptr != null); - assert(currentParser == null); - this.llhttp.llhttp_resume(this.ptr); - assert(this.timeoutType === TIMEOUT_BODY); - if (this.timeout) { - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - this.paused = false; - this.execute(this.socket.read() || EMPTY_BUF); - this.readMore(); - } - readMore() { - while (!this.paused && this.ptr) { - const chunk = this.socket.read(); - if (chunk === null) { - break; - } - this.execute(chunk); - } - } - execute(data) { - assert(this.ptr != null); - assert(currentParser == null); - assert(!this.paused); - const { socket, llhttp } = this; - if (data.length > currentBufferSize) { - if (currentBufferPtr) { - llhttp.free(currentBufferPtr); - } - currentBufferSize = Math.ceil(data.length / 4096) * 4096; - currentBufferPtr = llhttp.malloc(currentBufferSize); - } - new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data); - try { - let ret; - try { - currentBufferRef = data; - currentParser = this; - ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length); - } catch (err) { - throw err; - } finally { - currentParser = null; - currentBufferRef = null; - } - const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr; - if (ret === constants.ERROR.PAUSED_UPGRADE) { - this.onUpgrade(data.slice(offset)); - } else if (ret === constants.ERROR.PAUSED) { - this.paused = true; - socket.unshift(data.slice(offset)); - } else if (ret !== constants.ERROR.OK) { - const ptr = llhttp.llhttp_get_error_reason(this.ptr); - let message = ""; - if (ptr) { - const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0); - message = Buffer.from(llhttp.memory.buffer, ptr, len).toString(); - } - throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)); - } - } catch (err) { - util2.destroy(socket, err); - } - } - finish() { - try { - try { - currentParser = this; - } finally { - currentParser = null; - } - } catch (err) { - util2.destroy(this.socket, err); - } - } - destroy() { - assert(this.ptr != null); - assert(currentParser == null); - this.llhttp.llhttp_free(this.ptr); - this.ptr = null; - clearTimeout(this.timeout); - this.timeout = null; - this.timeoutValue = null; - this.timeoutType = null; - this.paused = false; - } - onStatus(buf) { - this.statusText = buf.toString(); - } - onMessageBegin() { - const { socket, client } = this; - if (socket.destroyed) { - return -1; - } - const request = client[kQueue][client[kRunningIdx]]; - if (!request) { - return -1; - } - } - onHeaderField(buf) { - const len = this.headers.length; - if ((len & 1) === 0) { - this.headers.push(buf); - } else { - this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); - } - this.trackHeader(buf.length); - } - onHeaderValue(buf) { - let len = this.headers.length; - if ((len & 1) === 1) { - this.headers.push(buf); - len += 1; - } else { - this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); - } - const key = this.headers[len - 2]; - if (key.length === 10 && key.toString().toLowerCase() === "keep-alive") { - this.keepAlive += buf.toString(); - } else if (key.length === 7 && key.toString().toLowerCase() === "trailer") { - this.trailer += buf.toString(); - } else if (key.length === 14 && key.toString().toLowerCase() === "content-length") { - this.contentLength += buf.toString(); - } - this.trackHeader(buf.length); - } - trackHeader(len) { - this.headersSize += len; - if (this.headersSize >= this.headersMaxSize) { - util2.destroy(this.socket, new HeadersOverflowError()); - } - } - onUpgrade(head) { - const { upgrade, client, socket, headers, statusCode } = this; - assert(upgrade); - const request = client[kQueue][client[kRunningIdx]]; - assert(request); - assert(!socket.destroyed); - assert(socket === client[kSocket]); - assert(!this.paused); - assert(request.upgrade || request.method === "CONNECT"); - this.statusCode = null; - this.statusText = ""; - this.shouldKeepAlive = null; - assert(this.headers.length % 2 === 0); - this.headers = []; - this.headersSize = 0; - socket.unshift(head); - socket[kParser].destroy(); - socket[kParser] = null; - socket[kClient] = null; - socket[kError] = null; - socket.removeListener("error", onSocketError).removeListener("readable", onSocketReadable).removeListener("end", onSocketEnd).removeListener("close", onSocketClose); - client[kSocket] = null; - client[kQueue][client[kRunningIdx]++] = null; - client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade")); - try { - request.onUpgrade(statusCode, headers, socket); - } catch (err) { - util2.destroy(socket, err); - } - resume(client); - } - onHeadersComplete(statusCode, upgrade, shouldKeepAlive) { - const { client, socket, headers, statusText } = this; - if (socket.destroyed) { - return -1; - } - const request = client[kQueue][client[kRunningIdx]]; - if (!request) { - return -1; - } - assert(!this.upgrade); - assert(this.statusCode < 200); - if (statusCode === 100) { - util2.destroy(socket, new SocketError("bad response", util2.getSocketInfo(socket))); - return -1; - } - if (upgrade && !request.upgrade) { - util2.destroy(socket, new SocketError("bad upgrade", util2.getSocketInfo(socket))); - return -1; - } - assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS); - this.statusCode = statusCode; - this.shouldKeepAlive = shouldKeepAlive; - if (this.statusCode >= 200) { - const bodyTimeout = request.bodyTimeout != null ? request.bodyTimeout : client[kBodyTimeout]; - this.setTimeout(bodyTimeout, TIMEOUT_BODY); - } else if (this.timeout) { - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - if (request.method === "CONNECT" && statusCode >= 200 && statusCode < 300) { - assert(client[kRunning] === 1); - this.upgrade = true; - return 2; - } - if (upgrade) { - assert(client[kRunning] === 1); - this.upgrade = true; - return 2; - } - assert(this.headers.length % 2 === 0); - this.headers = []; - this.headersSize = 0; - if (shouldKeepAlive && client[kPipelining]) { - const keepAliveTimeout = this.keepAlive ? util2.parseKeepAliveTimeout(this.keepAlive) : null; - if (keepAliveTimeout != null) { - const timeout = Math.min(keepAliveTimeout - client[kKeepAliveTimeoutThreshold], client[kKeepAliveMaxTimeout]); - if (timeout <= 0) { - socket[kReset] = true; - } else { - client[kKeepAliveTimeoutValue] = timeout; - } - } else { - client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]; - } - } else { - socket[kReset] = true; - } - let pause; - try { - pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false; - } catch (err) { - util2.destroy(socket, err); - return -1; - } - if (request.method === "HEAD") { - assert(socket[kReset]); - return 1; - } - if (statusCode < 200) { - return 1; - } - if (socket[kBlocking]) { - socket[kBlocking] = false; - resume(client); - } - return pause ? constants.ERROR.PAUSED : 0; - } - onBody(buf) { - const { client, socket, statusCode } = this; - if (socket.destroyed) { - return -1; - } - const request = client[kQueue][client[kRunningIdx]]; - assert(request); - assert.strictEqual(this.timeoutType, TIMEOUT_BODY); - if (this.timeout) { - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - assert(statusCode >= 200); - this.bytesRead += buf.length; - try { - if (request.onData(buf) === false) { - return constants.ERROR.PAUSED; - } - } catch (err) { - util2.destroy(socket, err); - return -1; - } - } - onMessageComplete() { - const { client, socket, statusCode, upgrade, trailer, headers, contentLength, bytesRead, shouldKeepAlive } = this; - if (socket.destroyed && (!statusCode || shouldKeepAlive)) { - return -1; - } - if (upgrade) { - return; - } - const request = client[kQueue][client[kRunningIdx]]; - assert(request); - assert(statusCode >= 100); - this.statusCode = null; - this.statusText = ""; - this.bytesRead = 0; - this.contentLength = ""; - this.trailer = ""; - this.keepAlive = ""; - assert(this.headers.length % 2 === 0); - this.headers = []; - this.headersSize = 0; - if (statusCode < 200) { - return; - } - const trailers = trailer ? trailer.split(/,\s*/) : []; - for (let i = 0; i < trailers.length; i++) { - const trailer2 = trailers[i]; - let found = false; - for (let n = 0; n < headers.length; n += 2) { - const key = headers[n]; - if (key.length === trailer2.length && key.toString().toLowerCase() === trailer2.toLowerCase()) { - found = true; - break; - } - } - if (!found) { - util2.destroy(socket, new TrailerMismatchError()); - return -1; - } - } - if (request.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) { - util2.destroy(socket, new ResponseContentLengthMismatchError()); - return -1; - } - try { - request.onComplete(headers); - } catch (err) { - errorRequest(client, request, err); - } - client[kQueue][client[kRunningIdx]++] = null; - if (socket[kWriting]) { - assert.strictEqual(client[kRunning], 0); - util2.destroy(socket, new InformationalError("reset")); - return constants.ERROR.PAUSED; - } else if (!shouldKeepAlive) { - util2.destroy(socket, new InformationalError("reset")); - return constants.ERROR.PAUSED; - } else if (socket[kReset] && client[kRunning] === 0) { - util2.destroy(socket, new InformationalError("reset")); - return constants.ERROR.PAUSED; - } else { - resume(client); - } - } - }; - function onParserTimeout(parser) { - const { socket, timeoutType, client } = parser; - if (timeoutType === TIMEOUT_HEADERS) { - if (!socket[kWriting]) { - assert(!parser.paused, "cannot be paused while waiting for headers"); - util2.destroy(socket, new HeadersTimeoutError()); - } - } else if (timeoutType === TIMEOUT_BODY) { - if (!parser.paused) { - util2.destroy(socket, new BodyTimeoutError()); - } - } else if (timeoutType === TIMEOUT_IDLE) { - assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); - util2.destroy(socket, new InformationalError("socket idle timeout")); - } - } - function onSocketReadable() { - const { [kParser]: parser } = this; - parser.readMore(); - } - function onSocketError(err) { - const { [kParser]: parser } = this; - assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); - if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) { - parser.finish(); - return; - } - this[kError] = err; - onError(this[kClient], err); - } - function onError(client, err) { - if (client[kRunning] === 0 && err.code !== "UND_ERR_INFO" && err.code !== "UND_ERR_SOCKET") { - assert(client[kPendingIdx] === client[kRunningIdx]); - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(client, request, err); - } - assert(client[kSize] === 0); - } - } - function onSocketEnd() { - const { [kParser]: parser } = this; - if (parser.statusCode && !parser.shouldKeepAlive) { - parser.finish(); - return; - } - util2.destroy(this, new SocketError("other side closed", util2.getSocketInfo(this))); - } - function onSocketClose() { - const { [kClient]: client } = this; - this[kParser].destroy(); - this[kParser] = null; - const err = this[kError] || new SocketError("closed", util2.getSocketInfo(this)); - client[kSocket] = null; - if (client.destroyed) { - assert(client[kPending] === 0); - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(client, request, err); - } - } else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") { - const request = client[kQueue][client[kRunningIdx]]; - client[kQueue][client[kRunningIdx]++] = null; - errorRequest(client, request, err); - } - client[kPendingIdx] = client[kRunningIdx]; - assert(client[kRunning] === 0); - client.emit("disconnect", client[kUrl], [client], err); - resume(client); - } - async function connect(client) { - assert(!client[kConnecting]); - assert(!client[kSocket]); - let { host, hostname, protocol, port } = client[kUrl]; - if (hostname[0] === "[") { - const idx = hostname.indexOf("]"); - assert(idx !== -1); - const ip = hostname.substr(1, idx - 1); - assert(net.isIP(ip)); - hostname = ip; - } - client[kConnecting] = true; - if (channels.beforeConnect.hasSubscribers) { - channels.beforeConnect.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName] - }, - connector: client[kConnector] - }); - } - try { - const socket = await new Promise((resolve, reject) => { - client[kConnector]({ - host, - hostname, - protocol, - port, - servername: client[kServerName] - }, (err, socket2) => { - if (err) { - reject(err); - } else { - resolve(socket2); - } - }); - }); - if (!llhttpInstance) { - llhttpInstance = await llhttpPromise; - llhttpPromise = null; - } - client[kConnecting] = false; - assert(socket); - client[kSocket] = socket; - socket[kNoRef] = false; - socket[kWriting] = false; - socket[kReset] = false; - socket[kBlocking] = false; - socket[kError] = null; - socket[kParser] = new Parser(client, socket, llhttpInstance); - socket[kClient] = client; - socket[kCounter] = 0; - socket[kMaxRequests] = client[kMaxRequests]; - socket.on("error", onSocketError).on("readable", onSocketReadable).on("end", onSocketEnd).on("close", onSocketClose); - if (channels.connected.hasSubscribers) { - channels.connected.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName] - }, - connector: client[kConnector], - socket - }); - } - client.emit("connect", client[kUrl], [client]); - } catch (err) { - client[kConnecting] = false; - if (channels.connectError.hasSubscribers) { - channels.connectError.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName] - }, - connector: client[kConnector], - error: err - }); - } - if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") { - assert(client[kRunning] === 0); - while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { - const request = client[kQueue][client[kPendingIdx]++]; - errorRequest(client, request, err); - } - } else { - onError(client, err); - } - client.emit("connectionError", client[kUrl], [client], err); - } - resume(client); - } - function emitDrain(client) { - client[kNeedDrain] = 0; - client.emit("drain", client[kUrl], [client]); - } - function resume(client, sync) { - if (client[kResuming] === 2) { - return; - } - client[kResuming] = 2; - _resume(client, sync); - client[kResuming] = 0; - if (client[kRunningIdx] > 256) { - client[kQueue].splice(0, client[kRunningIdx]); - client[kPendingIdx] -= client[kRunningIdx]; - client[kRunningIdx] = 0; - } - } - function _resume(client, sync) { - while (true) { - if (client.destroyed) { - assert(client[kPending] === 0); - return; - } - if (client.closed && !client[kSize]) { - client.destroy(); - return; - } - const socket = client[kSocket]; - if (socket) { - if (client[kSize] === 0) { - if (!socket[kNoRef] && socket.unref) { - socket.unref(); - socket[kNoRef] = true; - } - } else if (socket[kNoRef] && socket.ref) { - socket.ref(); - socket[kNoRef] = false; - } - if (client[kSize] === 0) { - if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { - socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE); - } - } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { - if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { - const request2 = client[kQueue][client[kRunningIdx]]; - const headersTimeout = request2.headersTimeout != null ? request2.headersTimeout : client[kHeadersTimeout]; - socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); - } - } - } - if (client[kBusy]) { - client[kNeedDrain] = 2; - } else if (client[kNeedDrain] === 2) { - if (sync) { - client[kNeedDrain] = 1; - process.nextTick(emitDrain, client); - } else { - emitDrain(client); - } - continue; - } - if (client[kPending] === 0) { - return; - } - if (client[kRunning] >= (client[kPipelining] || 1)) { - return; - } - const request = client[kQueue][client[kPendingIdx]]; - if (client[kUrl].protocol === "https:" && client[kServerName] !== request.servername) { - if (client[kRunning] > 0) { - return; - } - client[kServerName] = request.servername; - if (socket && socket.servername !== request.servername) { - util2.destroy(socket, new InformationalError("servername changed")); - return; - } - } - if (client[kConnecting]) { - return; - } - if (!socket) { - connect(client); - continue; - } - if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { - return; - } - if (client[kRunning] > 0 && !request.idempotent) { - return; - } - if (client[kRunning] > 0 && (request.upgrade || request.method === "CONNECT")) { - return; - } - if (util2.isStream(request.body) && util2.bodyLength(request.body) === 0) { - request.body.on("data", function() { - assert(false); - }).on("error", function(err) { - errorRequest(client, request, err); - }).on("end", function() { - util2.destroy(this); - }); - request.body = null; - } - if (client[kRunning] > 0 && (util2.isStream(request.body) || util2.isAsyncIterable(request.body))) { - return; - } - if (!request.aborted && write(client, request)) { - client[kPendingIdx]++; - } else { - client[kQueue].splice(client[kPendingIdx], 1); - } - } - } - function write(client, request) { - const { body, method, path, host, upgrade, headers, blocking } = request; - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; - if (body && typeof body.read === "function") { - body.read(0); - } - let contentLength = util2.bodyLength(body); - if (contentLength === null) { - contentLength = request.contentLength; - } - if (contentLength === 0 && !expectsPayload) { - contentLength = null; - } - if (request.contentLength !== null && request.contentLength !== contentLength) { - if (client[kStrictContentLength]) { - errorRequest(client, request, new RequestContentLengthMismatchError()); - return false; - } - process.emitWarning(new RequestContentLengthMismatchError()); - } - const socket = client[kSocket]; - try { - request.onConnect((err) => { - if (request.aborted || request.completed) { - return; - } - errorRequest(client, request, err || new RequestAbortedError()); - util2.destroy(socket, new InformationalError("aborted")); - }); - } catch (err) { - errorRequest(client, request, err); - } - if (request.aborted) { - return false; - } - if (method === "HEAD") { - socket[kReset] = true; - } - if (upgrade || method === "CONNECT") { - socket[kReset] = true; - } - if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { - socket[kReset] = true; - } - if (blocking) { - socket[kBlocking] = true; - } - let header = `${method} ${path} HTTP/1.1\r -`; - if (typeof host === "string") { - header += `host: ${host}\r -`; - } else { - header += client[kHostHeader]; - } - if (upgrade) { - header += `connection: upgrade\r -upgrade: ${upgrade}\r -`; - } else if (client[kPipelining]) { - header += "connection: keep-alive\r\n"; - } else { - header += "connection: close\r\n"; - } - if (headers) { - header += headers; - } - if (channels.sendHeaders.hasSubscribers) { - channels.sendHeaders.publish({ request, headers: header, socket }); - } - if (!body) { - if (contentLength === 0) { - socket.write(`${header}content-length: 0\r -\r -`, "ascii"); - } else { - assert(contentLength === null, "no body must not have content length"); - socket.write(`${header}\r -`, "ascii"); - } - request.onRequestSent(); - } else if (util2.isBuffer(body)) { - assert(contentLength === body.byteLength, "buffer body must have content length"); - socket.cork(); - socket.write(`${header}content-length: ${contentLength}\r -\r -`, "ascii"); - socket.write(body); - socket.uncork(); - request.onBodySent(body); - request.onRequestSent(); - if (!expectsPayload) { - socket[kReset] = true; + module2.exports = { + kUrl: Symbol("url"), + kHeaders: Symbol("headers"), + kSignal: Symbol("signal"), + kState: Symbol("state"), + kGuard: Symbol("guard"), + kRealm: Symbol("realm") + }; + } +}); + +// lib/fetch/webidl.js +var require_webidl = __commonJS({ + "lib/fetch/webidl.js"(exports2, module2) { + "use strict"; + var { types } = require("util"); + var { hasOwn, toUSVString } = require_util2(); + var webidl = {}; + webidl.converters = {}; + webidl.util = {}; + webidl.errors = {}; + webidl.errors.exception = function(message) { + throw new TypeError(`${message.header}: ${message.message}`); + }; + webidl.errors.conversionFailed = function(context) { + const plural = context.types.length === 1 ? "" : " one of"; + const message = `${context.argument} could not be converted to${plural}: ${context.types.join(", ")}.`; + return webidl.errors.exception({ + header: context.prefix, + message + }); + }; + webidl.errors.invalidArgument = function(context) { + return webidl.errors.exception({ + header: context.prefix, + message: `"${context.value}" is an invalid ${context.type}.` + }); + }; + webidl.util.Type = function(V) { + switch (typeof V) { + case "undefined": + return "Undefined"; + case "boolean": + return "Boolean"; + case "string": + return "String"; + case "symbol": + return "Symbol"; + case "number": + return "Number"; + case "bigint": + return "BigInt"; + case "function": + case "object": { + if (V === null) { + return "Null"; + } + return "Object"; } - } else if (util2.isBlobLike(body)) { - if (typeof body.stream === "function") { - writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload }); + } + }; + webidl.util.ConvertToInt = function(V, bitLength, signedness, opts = {}) { + let upperBound; + let lowerBound; + if (bitLength === 64) { + upperBound = Math.pow(2, 53) - 1; + if (signedness === "unsigned") { + lowerBound = 0; } else { - writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }); + lowerBound = Math.pow(-2, 53) + 1; } - } else if (util2.isStream(body)) { - writeStream({ body, client, request, socket, contentLength, header, expectsPayload }); - } else if (util2.isIterable(body)) { - writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }); + } else if (signedness === "unsigned") { + lowerBound = 0; + upperBound = Math.pow(2, bitLength) - 1; } else { - assert(false); + lowerBound = Math.pow(-2, bitLength) - 1; + upperBound = Math.pow(2, bitLength - 1) - 1; + } + let x = Number(V); + if (Object.is(-0, x)) { + x = 0; + } + if (opts.enforceRange === true) { + if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + webidl.errors.exception({ + header: "Integer conversion", + message: `Could not convert ${V} to an integer.` + }); + } + x = webidl.util.IntegerPart(x); + if (x < lowerBound || x > upperBound) { + webidl.errors.exception({ + header: "Integer conversion", + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }); + } + return x; } - return true; - } - function writeStream({ body, client, request, socket, contentLength, header, expectsPayload }) { - assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined"); - let finished = false; - const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }); - const onData = function(chunk) { - try { - assert(!finished); - if (!writer.write(chunk) && this.pause) { - this.pause(); + if (!Number.isNaN(x) && opts.clamp === true) { + x = Math.min(Math.max(x, lowerBound), upperBound); + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x); + } else { + x = Math.ceil(x); + } + return x; + } + if (Number.isNaN(x) || Object.is(0, x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + return 0; + } + x = webidl.util.IntegerPart(x); + x = x % Math.pow(2, bitLength); + if (signedness === "signed" && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength); + } + return x; + }; + webidl.util.IntegerPart = function(n) { + const r = Math.floor(Math.abs(n)); + if (n < 0) { + return -1 * r; + } + return r; + }; + webidl.sequenceConverter = function(converter) { + return (V) => { + if (webidl.util.Type(V) !== "Object") { + webidl.errors.exception({ + header: "Sequence", + message: `Value of type ${webidl.util.Type(V)} is not an Object.` + }); + } + const method = V?.[Symbol.iterator]?.(); + const seq = []; + if (method === void 0 || typeof method.next !== "function") { + webidl.errors.exception({ + header: "Sequence", + message: "Object is not an iterator." + }); + } + while (true) { + const { done, value } = method.next(); + if (done) { + break; } - } catch (err) { - util2.destroy(this, err); + seq.push(converter(value)); } + return seq; }; - const onDrain = function() { - assert(!finished); - if (body.resume) { - body.resume(); + }; + webidl.recordConverter = function(keyConverter, valueConverter) { + return (V) => { + const record = {}; + const type = webidl.util.Type(V); + if (type === "Undefined" || type === "Null") { + return record; + } + if (type !== "Object") { + webidl.errors.exception({ + header: "Record", + message: `Expected ${V} to be an Object type.` + }); } + for (let [key, value] of Object.entries(V)) { + key = keyConverter(key); + value = valueConverter(value); + record[key] = value; + } + return record; }; - const onAbort = function() { - onFinished(new RequestAbortedError()); + }; + webidl.interfaceConverter = function(i) { + return (V, opts = {}) => { + if (opts.strict !== false && !(V instanceof i)) { + webidl.errors.exception({ + header: i.name, + message: `Expected ${V} to be an instance of ${i.name}.` + }); + } + return V; }; - const onFinished = function(err) { - if (finished) { - return; + }; + webidl.dictionaryConverter = function(converters) { + return (dictionary) => { + const type = webidl.util.Type(dictionary); + const dict = {}; + if (type !== "Null" && type !== "Undefined" && type !== "Object") { + webidl.errors.exception({ + header: "Dictionary", + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }); } - finished = true; - assert(socket.destroyed || socket[kWriting] && client[kRunning] <= 1); - socket.off("drain", onDrain).off("error", onFinished); - body.removeListener("data", onData).removeListener("end", onFinished).removeListener("error", onFinished).removeListener("close", onAbort); - if (!err) { - try { - writer.end(); - } catch (er) { - err = er; + for (const options of converters) { + const { key, defaultValue, required, converter } = options; + if (required === true) { + if (!hasOwn(dictionary, key)) { + webidl.errors.exception({ + header: "Dictionary", + message: `Missing required key "${key}".` + }); + } + } + let value = dictionary[key]; + const hasDefault = hasOwn(options, "defaultValue"); + if (hasDefault && value !== null) { + value = value ?? defaultValue; + } + if (required || hasDefault || value !== void 0) { + value = converter(value); + if (options.allowedValues && !options.allowedValues.includes(value)) { + webidl.errors.exception({ + header: "Dictionary", + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(", ")}.` + }); + } + dict[key] = value; } } - writer.destroy(err); - if (err && (err.code !== "UND_ERR_INFO" || err.message !== "reset")) { - util2.destroy(body, err); - } else { - util2.destroy(body); + return dict; + }; + }; + webidl.nullableConverter = function(converter) { + return (V) => { + if (V === null) { + return V; } + return converter(V); }; - body.on("data", onData).on("end", onFinished).on("error", onFinished).on("close", onAbort); - if (body.resume) { - body.resume(); + }; + webidl.converters.DOMString = function(V, opts = {}) { + if (V === null && opts.legacyNullToEmptyString) { + return ""; } - socket.on("drain", onDrain).on("error", onFinished); - } - async function writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }) { - assert(contentLength === body.size, "blob body must have content length"); - try { - if (contentLength != null && contentLength !== body.size) { - throw new RequestContentLengthMismatchError(); - } - const buffer = Buffer.from(await body.arrayBuffer()); - socket.cork(); - socket.write(`${header}content-length: ${contentLength}\r -\r -`, "ascii"); - socket.write(buffer); - socket.uncork(); - request.onBodySent(buffer); - request.onRequestSent(); - if (!expectsPayload) { - socket[kReset] = true; - } - resume(client); - } catch (err) { - util2.destroy(socket, err); + if (typeof V === "symbol") { + throw new TypeError("Could not convert argument of type symbol to string."); } - } - async function writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }) { - assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined"); - let callback = null; - function onDrain() { - if (callback) { - const cb = callback; - callback = null; - cb(); - } + return String(V); + }; + var isNotLatin1 = /[^\u0000-\u00ff]/; + webidl.converters.ByteString = function(V) { + const x = webidl.converters.DOMString(V); + if (isNotLatin1.test(x)) { + throw new TypeError("Argument is not a ByteString"); } - const waitForDrain = () => new Promise((resolve, reject) => { - assert(callback === null); - if (socket[kError]) { - reject(socket[kError]); - } else { - callback = resolve; - } - }); - socket.on("close", onDrain).on("drain", onDrain); - const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }); - try { - for await (const chunk of body) { - if (socket[kError]) { - throw socket[kError]; - } - if (!writer.write(chunk)) { - await waitForDrain(); - } - } - writer.end(); - } catch (err) { - writer.destroy(err); - } finally { - socket.off("close", onDrain).off("drain", onDrain); + return x; + }; + webidl.converters.USVString = toUSVString; + webidl.converters.boolean = function(V) { + const x = Boolean(V); + return x; + }; + webidl.converters.any = function(V) { + return V; + }; + webidl.converters["long long"] = function(V, opts) { + const x = webidl.util.ConvertToInt(V, 64, "signed", opts); + return x; + }; + webidl.converters["unsigned short"] = function(V) { + const x = webidl.util.ConvertToInt(V, 16, "unsigned"); + return x; + }; + webidl.converters.ArrayBuffer = function(V, opts = {}) { + if (webidl.util.Type(V) !== "Object" || !types.isAnyArrayBuffer(V)) { + webidl.errors.conversionFailed({ + prefix: `${V}`, + argument: `${V}`, + types: ["ArrayBuffer"] + }); } - } - var AsyncWriter = class { - constructor({ socket, request, contentLength, client, expectsPayload, header }) { - this.socket = socket; - this.request = request; - this.contentLength = contentLength; - this.client = client; - this.bytesWritten = 0; - this.expectsPayload = expectsPayload; - this.header = header; - socket[kWriting] = true; + if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { + webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); } - write(chunk) { - const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this; - if (socket[kError]) { - throw socket[kError]; + return V; + }; + webidl.converters.TypedArray = function(V, T, opts = {}) { + if (webidl.util.Type(V) !== "Object" || !types.isTypedArray(V) || V.constructor.name !== T.name) { + webidl.errors.conversionFailed({ + prefix: `${T.name}`, + argument: `${V}`, + types: [T.name] + }); + } + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + return V; + }; + webidl.converters.DataView = function(V, opts = {}) { + if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) { + webidl.errors.exception({ + header: "DataView", + message: "Object is not a DataView." + }); + } + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + return V; + }; + webidl.converters.BufferSource = function(V, opts = {}) { + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, opts); + } + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor); + } + if (types.isDataView(V)) { + return webidl.converters.DataView(V, opts); + } + throw new TypeError(`Could not convert ${V} to a BufferSource.`); + }; + webidl.converters["sequence"] = webidl.sequenceConverter(webidl.converters.ByteString); + webidl.converters["sequence>"] = webidl.sequenceConverter(webidl.converters["sequence"]); + webidl.converters["record"] = webidl.recordConverter(webidl.converters.ByteString, webidl.converters.ByteString); + module2.exports = { + webidl + }; + } +}); + +// lib/fetch/file.js +var require_file = __commonJS({ + "lib/fetch/file.js"(exports2, module2) { + "use strict"; + var { Blob } = require("buffer"); + var { types } = require("util"); + var { kState } = require_symbols2(); + var { isBlobLike } = require_util2(); + var { webidl } = require_webidl(); + var File = class extends Blob { + constructor(fileBits, fileName, options = {}) { + if (arguments.length < 2) { + throw new TypeError("2 arguments required"); } - if (socket.destroyed) { - return false; + fileBits = webidl.converters["sequence"](fileBits); + fileName = webidl.converters.USVString(fileName); + options = webidl.converters.FilePropertyBag(options); + const n = fileName; + const d = options.lastModified; + super(processBlobParts(fileBits, options), { type: options.type }); + this[kState] = { + name: n, + lastModified: d + }; + } + get name() { + if (!(this instanceof File)) { + throw new TypeError("Illegal invocation"); } - const len = Buffer.byteLength(chunk); - if (!len) { - return true; + return this[kState].name; + } + get lastModified() { + if (!(this instanceof File)) { + throw new TypeError("Illegal invocation"); } - if (contentLength !== null && bytesWritten + len > contentLength) { - if (client[kStrictContentLength]) { - throw new RequestContentLengthMismatchError(); - } - process.emitWarning(new RequestContentLengthMismatchError()); + return this[kState].lastModified; + } + get [Symbol.toStringTag]() { + return this.constructor.name; + } + }; + var FileLike = class { + constructor(blobLike, fileName, options = {}) { + const n = fileName; + const t = options.type; + const d = options.lastModified ?? Date.now(); + this[kState] = { + blobLike, + name: n, + type: t, + lastModified: d + }; + } + stream(...args) { + if (!(this instanceof FileLike)) { + throw new TypeError("Illegal invocation"); } - if (bytesWritten === 0) { - if (!expectsPayload) { - socket[kReset] = true; - } - if (contentLength === null) { - socket.write(`${header}transfer-encoding: chunked\r -`, "ascii"); - } else { - socket.write(`${header}content-length: ${contentLength}\r -\r -`, "ascii"); - } + return this[kState].blobLike.stream(...args); + } + arrayBuffer(...args) { + if (!(this instanceof FileLike)) { + throw new TypeError("Illegal invocation"); } - if (contentLength === null) { - socket.write(`\r -${len.toString(16)}\r -`, "ascii"); + return this[kState].blobLike.arrayBuffer(...args); + } + slice(...args) { + if (!(this instanceof FileLike)) { + throw new TypeError("Illegal invocation"); } - this.bytesWritten += len; - const ret = socket.write(chunk); - request.onBodySent(chunk); - return ret; + return this[kState].blobLike.slice(...args); } - end() { - const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this; - request.onRequestSent(); - socket[kWriting] = false; - if (socket[kError]) { - throw socket[kError]; + text(...args) { + if (!(this instanceof FileLike)) { + throw new TypeError("Illegal invocation"); } - if (socket.destroyed) { - return; + return this[kState].blobLike.text(...args); + } + get size() { + if (!(this instanceof FileLike)) { + throw new TypeError("Illegal invocation"); } - if (bytesWritten === 0) { - if (expectsPayload) { - socket.write(`${header}content-length: 0\r -\r -`, "ascii"); - } else { - socket.write(`${header}\r -`, "ascii"); - } - } else if (contentLength === null) { - socket.write("\r\n0\r\n\r\n", "ascii"); + return this[kState].blobLike.size; + } + get type() { + if (!(this instanceof FileLike)) { + throw new TypeError("Illegal invocation"); } - if (contentLength !== null && bytesWritten !== contentLength) { - if (client[kStrictContentLength]) { - throw new RequestContentLengthMismatchError(); - } else { - process.emitWarning(new RequestContentLengthMismatchError()); - } + return this[kState].blobLike.type; + } + get name() { + if (!(this instanceof FileLike)) { + throw new TypeError("Illegal invocation"); } - if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { - if (socket[kParser].timeout.refresh) { - socket[kParser].timeout.refresh(); - } + return this[kState].name; + } + get lastModified() { + if (!(this instanceof FileLike)) { + throw new TypeError("Illegal invocation"); } - resume(client); + return this[kState].lastModified; } - destroy(err) { - const { socket, client } = this; - socket[kWriting] = false; - if (err) { - assert(client[kRunning] <= 1, "pipeline should only contain this request"); - util2.destroy(socket, err); + get [Symbol.toStringTag]() { + return "File"; + } + }; + webidl.converters.Blob = webidl.interfaceConverter(Blob); + webidl.converters.BlobPart = function(V, opts) { + if (webidl.util.Type(V) === "Object") { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); } + return webidl.converters.BufferSource(V, opts); + } else { + return webidl.converters.USVString(V, opts); } }; - function errorRequest(client, request, err) { - try { - request.onError(err); - assert(request.aborted); - } catch (err2) { - client.emit("error", err2); + webidl.converters["sequence"] = webidl.sequenceConverter(webidl.converters.BlobPart); + webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ + { + key: "lastModified", + converter: webidl.converters["long long"], + get defaultValue() { + return Date.now(); + } + }, + { + key: "type", + converter: webidl.converters.DOMString, + defaultValue: "" + }, + { + key: "endings", + converter: (value) => { + value = webidl.converters.DOMString(value); + value = value.toLowerCase(); + if (value !== "native") { + value = "transparent"; + } + return value; + }, + defaultValue: "transparent" + } + ]); + function processBlobParts(parts, options) { + const bytes = []; + for (const element of parts) { + if (typeof element === "string") { + let s = element; + if (options.endings === "native") { + s = convertLineEndingsNative(s); + } + bytes.push(new TextEncoder().encode(s)); + } else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) { + if (!element.buffer) { + bytes.push(new Uint8Array(element)); + } else { + bytes.push(element.buffer); + } + } else if (isBlobLike(element)) { + bytes.push(element); + } + } + return bytes; + } + function convertLineEndingsNative(s) { + let nativeLineEnding = "\n"; + if (process.platform === "win32") { + nativeLineEnding = "\r\n"; } + return s.replace(/\r?\n/g, nativeLineEnding); } - module2.exports = Client2; + module2.exports = { File, FileLike }; } }); -// lib/node/fixed-queue.js -var require_fixed_queue = __commonJS({ - "lib/node/fixed-queue.js"(exports2, module2) { +// lib/fetch/util.js +var require_util2 = __commonJS({ + "lib/fetch/util.js"(exports2, module2) { "use strict"; - var kSize = 2048; - var kMask = kSize - 1; - var FixedCircularBuffer = class { - constructor() { - this.bottom = 0; - this.top = 0; - this.list = new Array(kSize); - this.next = null; - } - isEmpty() { - return this.top === this.bottom; - } - isFull() { - return (this.top + 1 & kMask) === this.bottom; - } - push(data) { - this.list[this.top] = data; - this.top = this.top + 1 & kMask; + var { redirectStatus } = require_constants(); + var { performance: performance2 } = require("perf_hooks"); + var { isBlobLike, toUSVString, ReadableStreamFrom } = require_util(); + var assert = require("assert"); + var File; + var badPorts = [ + "1", + "7", + "9", + "11", + "13", + "15", + "17", + "19", + "20", + "21", + "22", + "23", + "25", + "37", + "42", + "43", + "53", + "69", + "77", + "79", + "87", + "95", + "101", + "102", + "103", + "104", + "109", + "110", + "111", + "113", + "115", + "117", + "119", + "123", + "135", + "137", + "139", + "143", + "161", + "179", + "389", + "427", + "465", + "512", + "513", + "514", + "515", + "526", + "530", + "531", + "532", + "540", + "548", + "554", + "556", + "563", + "587", + "601", + "636", + "989", + "990", + "993", + "995", + "1719", + "1720", + "1723", + "2049", + "3659", + "4045", + "5060", + "5061", + "6000", + "6566", + "6665", + "6666", + "6667", + "6668", + "6669", + "6697", + "10080" + ]; + function responseURL(response) { + const urlList = response.urlList; + const length = urlList.length; + return length === 0 ? null : urlList[length - 1].toString(); + } + function responseLocationURL(response, requestFragment) { + if (!redirectStatus.includes(response.status)) { + return null; } - shift() { - const nextItem = this.list[this.bottom]; - if (nextItem === void 0) - return null; - this.list[this.bottom] = void 0; - this.bottom = this.bottom + 1 & kMask; - return nextItem; + let location = response.headersList.get("location"); + location = location ? new URL(location, responseURL(response)) : null; + if (location && !location.hash) { + location.hash = requestFragment; } - }; - module2.exports = class FixedQueue { - constructor() { - this.head = this.tail = new FixedCircularBuffer(); + return location; + } + function requestCurrentURL(request) { + return request.urlList[request.urlList.length - 1]; + } + function requestBadPort(request) { + const url = requestCurrentURL(request); + if (/^https?:/.test(url.protocol) && badPorts.includes(url.port)) { + return "blocked"; } - isEmpty() { - return this.head.isEmpty(); + return "allowed"; + } + function isFileLike(object) { + if (!File) { + File = require_file().File; } - push(data) { - if (this.head.isFull()) { - this.head = this.head.next = new FixedCircularBuffer(); + return object instanceof File || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && /^(File)$/.test(object[Symbol.toStringTag]); + } + function isValidReasonPhrase(statusText) { + for (let i = 0; i < statusText.length; ++i) { + const c = statusText.charCodeAt(i); + if (!(c === 9 || c >= 32 && c <= 126 || c >= 128 && c <= 255)) { + return false; } - this.head.push(data); } - shift() { - const tail = this.tail; - const next = tail.shift(); - if (tail.isEmpty() && tail.next !== null) { - this.tail = tail.next; + return true; + } + function isTokenChar(c) { + return !(c >= 127 || c <= 32 || c === "(" || c === ")" || c === "<" || c === ">" || c === "@" || c === "," || c === ";" || c === ":" || c === "\\" || c === '"' || c === "/" || c === "[" || c === "]" || c === "?" || c === "=" || c === "{" || c === "}"); + } + function isValidHTTPToken(characters) { + if (!characters || typeof characters !== "string") { + return false; + } + for (let i = 0; i < characters.length; ++i) { + const c = characters.charCodeAt(i); + if (c > 127 || !isTokenChar(c)) { + return false; } - return next; } - }; - } -}); - -// lib/pool-stats.js -var require_pool_stats = __commonJS({ - "lib/pool-stats.js"(exports2, module2) { - var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols(); - var kPool = Symbol("pool"); - var PoolStats = class { - constructor(pool) { - this[kPool] = pool; + return true; + } + function isValidHeaderName(potentialValue) { + if (potentialValue.length === 0) { + return false; } - get connected() { - return this[kPool][kConnected]; + for (const char of potentialValue) { + if (!isValidHTTPToken(char)) { + return false; + } } - get free() { - return this[kPool][kFree]; + return true; + } + function isValidHeaderValue(potentialValue) { + if (potentialValue.startsWith(" ") || potentialValue.startsWith(" ") || potentialValue.endsWith(" ") || potentialValue.endsWith(" ")) { + return false; } - get pending() { - return this[kPool][kPending]; + if (potentialValue.includes("\0") || potentialValue.includes("\r") || potentialValue.includes("\n")) { + return false; } - get queued() { - return this[kPool][kQueued]; + return true; + } + function setRequestReferrerPolicyOnRedirect(request, actualResponse) { + const policy = ""; + if (policy !== "") { + request.referrerPolicy = policy; } - get running() { - return this[kPool][kRunning]; + } + function crossOriginResourcePolicyCheck() { + return "allowed"; + } + function corsCheck() { + return "success"; + } + function TAOCheck() { + return "success"; + } + function appendFetchMetadata(httpRequest) { + let header = null; + header = httpRequest.mode; + httpRequest.headersList.set("sec-fetch-mode", header); + } + function appendRequestOriginHeader(request) { + let serializedOrigin = request.origin; + if (request.responseTainting === "cors" || request.mode === "websocket") { + if (serializedOrigin) { + request.headersList.append("Origin", serializedOrigin); + } + } else if (request.method !== "GET" && request.method !== "HEAD") { + switch (request.referrerPolicy) { + case "no-referrer": + serializedOrigin = null; + break; + case "no-referrer-when-downgrade": + case "strict-origin": + case "strict-origin-when-cross-origin": + if (/^https:/.test(request.origin) && !/^https:/.test(requestCurrentURL(request))) { + serializedOrigin = null; + } + break; + case "same-origin": + if (!sameOrigin(request, requestCurrentURL(request))) { + serializedOrigin = null; + } + break; + default: + } + if (serializedOrigin) { + request.headersList.append("Origin", serializedOrigin); + } } - get size() { - return this[kPool][kSize]; + } + function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { + return performance2.now(); + } + function createOpaqueTimingInfo(timingInfo) { + return { + startTime: timingInfo.startTime ?? 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: timingInfo.startTime ?? 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + }; + } + function makePolicyContainer() { + return {}; + } + function clonePolicyContainer() { + return {}; + } + function determineRequestsReferrer(request) { + return "no-referrer"; + } + function matchRequestIntegrity(request, bytes) { + return false; + } + function tryUpgradeRequestToAPotentiallyTrustworthyURL(request) { + } + function sameOrigin(A, B) { + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true; + } + return false; + } + function createDeferredPromise() { + let res; + let rej; + const promise = new Promise((resolve, reject) => { + res = resolve; + rej = reject; + }); + return { promise, resolve: res, reject: rej }; + } + function isAborted(fetchParams) { + return fetchParams.controller.state === "aborted"; + } + function isCancelled(fetchParams) { + return fetchParams.controller.state === "aborted" || fetchParams.controller.state === "terminated"; + } + function normalizeMethod(method) { + return /^(DELETE|GET|HEAD|OPTIONS|POST|PUT)$/i.test(method) ? method.toUpperCase() : method; + } + function serializeJavascriptValueToJSONString(value) { + const result = JSON.stringify(value); + if (result === void 0) { + throw new TypeError("Value is not JSON serializable"); } + assert(typeof result === "string"); + return result; + } + var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); + function makeIterator(iterator, name) { + const i = { + next() { + if (Object.getPrototypeOf(this) !== i) { + throw new TypeError(`'next' called on an object that does not implement interface ${name} Iterator.`); + } + return iterator.next(); + }, + [Symbol.toStringTag]: `${name} Iterator` + }; + Object.setPrototypeOf(i, esIteratorPrototype); + return Object.setPrototypeOf({}, i); + } + var hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)); + module2.exports = { + isAborted, + isCancelled, + createDeferredPromise, + ReadableStreamFrom, + toUSVString, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + coarsenedSharedCurrentTime, + matchRequestIntegrity, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isBlobLike, + isFileLike, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + serializeJavascriptValueToJSONString, + makeIterator, + isValidHeaderName, + isValidHeaderValue, + hasOwn }; - module2.exports = PoolStats; } }); -// lib/pool-base.js -var require_pool_base = __commonJS({ - "lib/pool-base.js"(exports2, module2) { +// lib/fetch/formdata.js +var require_formdata = __commonJS({ + "lib/fetch/formdata.js"(exports2, module2) { "use strict"; - var DispatcherBase = require_dispatcher_base(); - var FixedQueue = require_fixed_queue(); - var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols(); - var PoolStats = require_pool_stats(); - var kClients = Symbol("clients"); - var kNeedDrain = Symbol("needDrain"); - var kQueue = Symbol("queue"); - var kClosedResolve = Symbol("closed resolve"); - var kOnDrain = Symbol("onDrain"); - var kOnConnect = Symbol("onConnect"); - var kOnDisconnect = Symbol("onDisconnect"); - var kOnConnectionError = Symbol("onConnectionError"); - var kGetDispatcher = Symbol("get dispatcher"); - var kAddClient = Symbol("add client"); - var kRemoveClient = Symbol("remove client"); - var kStats = Symbol("stats"); - var PoolBase = class extends DispatcherBase { - constructor() { - super(); - this[kQueue] = new FixedQueue(); - this[kClients] = []; - this[kQueued] = 0; - const pool = this; - this[kOnDrain] = function onDrain(origin, targets) { - const queue = pool[kQueue]; - let needDrain = false; - while (!needDrain) { - const item = queue.shift(); - if (!item) { - break; - } - pool[kQueued]--; - needDrain = !this.dispatch(item.opts, item.handler); - } - this[kNeedDrain] = needDrain; - if (!this[kNeedDrain] && pool[kNeedDrain]) { - pool[kNeedDrain] = false; - pool.emit("drain", origin, [pool, ...targets]); - } - if (pool[kClosedResolve] && queue.isEmpty()) { - Promise.all(pool[kClients].map((c) => c.close())).then(pool[kClosedResolve]); + var { isBlobLike, isFileLike, toUSVString, makeIterator } = require_util2(); + var { kState } = require_symbols2(); + var { File, FileLike } = require_file(); + var { webidl } = require_webidl(); + var { Blob } = require("buffer"); + var _FormData = class { + constructor(form) { + if (arguments.length > 0 && form != null) { + webidl.errors.conversionFailed({ + prefix: "FormData constructor", + argument: "Argument 1", + types: ["null"] + }); + } + this[kState] = []; + } + append(name, value, filename = void 0) { + if (!(this instanceof _FormData)) { + throw new TypeError("Illegal invocation"); + } + if (arguments.length < 2) { + throw new TypeError(`Failed to execute 'append' on 'FormData': 2 arguments required, but only ${arguments.length} present.`); + } + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'"); + } + name = webidl.converters.USVString(name); + value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value); + filename = arguments.length === 3 ? webidl.converters.USVString(filename) : void 0; + const entry = makeEntry(name, value, filename); + this[kState].push(entry); + } + delete(name) { + if (!(this instanceof _FormData)) { + throw new TypeError("Illegal invocation"); + } + if (arguments.length < 1) { + throw new TypeError(`Failed to execute 'delete' on 'FormData': 1 arguments required, but only ${arguments.length} present.`); + } + name = webidl.converters.USVString(name); + const next = []; + for (const entry of this[kState]) { + if (entry.name !== name) { + next.push(entry); } - }; - this[kOnConnect] = (origin, targets) => { - pool.emit("connect", origin, [pool, ...targets]); - }; - this[kOnDisconnect] = (origin, targets, err) => { - pool.emit("disconnect", origin, [pool, ...targets], err); - }; - this[kOnConnectionError] = (origin, targets, err) => { - pool.emit("connectionError", origin, [pool, ...targets], err); - }; - this[kStats] = new PoolStats(this); + } + this[kState] = next; } - get [kBusy]() { - return this[kNeedDrain]; + get(name) { + if (!(this instanceof _FormData)) { + throw new TypeError("Illegal invocation"); + } + if (arguments.length < 1) { + throw new TypeError(`Failed to execute 'get' on 'FormData': 1 arguments required, but only ${arguments.length} present.`); + } + name = webidl.converters.USVString(name); + const idx = this[kState].findIndex((entry) => entry.name === name); + if (idx === -1) { + return null; + } + return this[kState][idx].value; } - get [kConnected]() { - return this[kClients].filter((client) => client[kConnected]).length; + getAll(name) { + if (!(this instanceof _FormData)) { + throw new TypeError("Illegal invocation"); + } + if (arguments.length < 1) { + throw new TypeError(`Failed to execute 'getAll' on 'FormData': 1 arguments required, but only ${arguments.length} present.`); + } + name = webidl.converters.USVString(name); + return this[kState].filter((entry) => entry.name === name).map((entry) => entry.value); } - get [kFree]() { - return this[kClients].filter((client) => client[kConnected] && !client[kNeedDrain]).length; + has(name) { + if (!(this instanceof _FormData)) { + throw new TypeError("Illegal invocation"); + } + if (arguments.length < 1) { + throw new TypeError(`Failed to execute 'has' on 'FormData': 1 arguments required, but only ${arguments.length} present.`); + } + name = webidl.converters.USVString(name); + return this[kState].findIndex((entry) => entry.name === name) !== -1; } - get [kPending]() { - let ret = this[kQueued]; - for (const { [kPending]: pending } of this[kClients]) { - ret += pending; + set(name, value, filename = void 0) { + if (!(this instanceof _FormData)) { + throw new TypeError("Illegal invocation"); + } + if (arguments.length < 2) { + throw new TypeError(`Failed to execute 'set' on 'FormData': 2 arguments required, but only ${arguments.length} present.`); + } + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'"); + } + name = webidl.converters.USVString(name); + value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value); + filename = arguments.length === 3 ? toUSVString(filename) : void 0; + const entry = makeEntry(name, value, filename); + const idx = this[kState].findIndex((entry2) => entry2.name === name); + if (idx !== -1) { + this[kState] = [ + ...this[kState].slice(0, idx), + entry, + ...this[kState].slice(idx + 1).filter((entry2) => entry2.name !== name) + ]; + } else { + this[kState].push(entry); } - return ret; } - get [kRunning]() { - let ret = 0; - for (const { [kRunning]: running } of this[kClients]) { - ret += running; + get [Symbol.toStringTag]() { + return this.constructor.name; + } + entries() { + if (!(this instanceof _FormData)) { + throw new TypeError("Illegal invocation"); } - return ret; + return makeIterator(makeIterable(this[kState], "entries"), "FormData"); } - get [kSize]() { - let ret = this[kQueued]; - for (const { [kSize]: size } of this[kClients]) { - ret += size; + keys() { + if (!(this instanceof _FormData)) { + throw new TypeError("Illegal invocation"); } - return ret; + return makeIterator(makeIterable(this[kState], "keys"), "FormData"); } - get stats() { - return this[kStats]; + values() { + if (!(this instanceof _FormData)) { + throw new TypeError("Illegal invocation"); + } + return makeIterator(makeIterable(this[kState], "values"), "FormData"); } - async [kClose]() { - if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); + forEach(callbackFn, thisArg = globalThis) { + if (!(this instanceof _FormData)) { + throw new TypeError("Illegal invocation"); + } + if (arguments.length < 1) { + throw new TypeError(`Failed to execute 'forEach' on 'FormData': 1 argument required, but only ${arguments.length} present.`); + } + if (typeof callbackFn !== "function") { + throw new TypeError("Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'."); + } + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]); + } + } + }; + var FormData = _FormData; + __publicField(FormData, "name", "FormData"); + FormData.prototype[Symbol.iterator] = FormData.prototype.entries; + function makeEntry(name, value, filename) { + name = Buffer.from(name).toString("utf8"); + if (typeof value === "string") { + value = Buffer.from(value).toString("utf8"); + } else { + if (!isFileLike(value)) { + value = value instanceof Blob ? new File([value], "blob", { type: value.type }) : new FileLike(value, "blob", { type: value.type }); + } + if (filename !== void 0) { + value = value instanceof File ? new File([value], filename, { type: value.type }) : new FileLike(value, filename, { type: value.type }); + } + } + return { name, value }; + } + function* makeIterable(entries, type) { + for (const { name, value } of entries) { + if (type === "entries") { + yield [name, value]; + } else if (type === "values") { + yield value; } else { - return new Promise((resolve) => { - this[kClosedResolve] = resolve; - }); + yield name; } } - async [kDestroy](err) { - while (true) { - const item = this[kQueue].shift(); - if (!item) { - break; + } + module2.exports = { FormData }; + } +}); + +// lib/fetch/body.js +var require_body = __commonJS({ + "lib/fetch/body.js"(exports2, module2) { + "use strict"; + var util = require_util(); + var { ReadableStreamFrom, toUSVString, isBlobLike } = require_util2(); + var { FormData } = require_formdata(); + var { kState } = require_symbols2(); + var { webidl } = require_webidl(); + var { Blob } = require("buffer"); + var { kBodyUsed } = require_symbols(); + var assert = require("assert"); + var { NotSupportedError } = require_errors(); + var { isErrored } = require_util(); + var { isUint8Array, isArrayBuffer } = require("util/types"); + var ReadableStream; + async function* blobGen(blob) { + yield* blob.stream(); + } + function extractBody(object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + let stream = null; + let action = null; + let source = null; + let length = null; + let contentType = null; + if (object == null) { + } else if (object instanceof URLSearchParams) { + source = object.toString(); + contentType = "application/x-www-form-urlencoded;charset=UTF-8"; + } else if (isArrayBuffer(object) || ArrayBuffer.isView(object)) { + if (object instanceof DataView) { + object = object.buffer; + } + source = new Uint8Array(object); + } else if (util.isFormDataLike(object)) { + const boundary = "----formdata-undici-" + Math.random(); + const prefix = `--${boundary}\r +Content-Disposition: form-data`; + const escape = (str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22"); + const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, "\r\n"); + action = async function* (object2) { + const enc = new TextEncoder(); + for (const [name, value] of object2) { + if (typeof value === "string") { + yield enc.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"\r +\r +${normalizeLinefeeds(value)}\r +`); + } else { + yield enc.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape(value.name)}"` : "") + `\r +Content-Type: ${value.type || "application/octet-stream"}\r +\r +`); + yield* blobGen(value); + yield enc.encode("\r\n"); + } } - item.handler.onError(err); + yield enc.encode(`--${boundary}--`); + }; + source = object; + contentType = "multipart/form-data; boundary=" + boundary; + } else if (isBlobLike(object)) { + action = blobGen; + source = object; + length = object.size; + if (object.type) { + contentType = object.type; } - return Promise.all(this[kClients].map((c) => c.destroy(err))); + } else if (typeof object[Symbol.asyncIterator] === "function") { + if (keepalive) { + throw new TypeError("keepalive"); + } + if (util.isDisturbed(object) || object.locked) { + throw new TypeError("Response body object should not be disturbed or locked"); + } + stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); + } else { + source = toUSVString(object); + contentType = "text/plain;charset=UTF-8"; } - [kDispatch](opts, handler) { - const dispatcher = this[kGetDispatcher](); - if (!dispatcher) { - this[kNeedDrain] = true; - this[kQueue].push({ opts, handler }); - this[kQueued]++; - } else if (!dispatcher.dispatch(opts, handler)) { - dispatcher[kNeedDrain] = true; - this[kNeedDrain] = !this[kGetDispatcher](); + if (typeof source === "string" || util.isBuffer(source)) { + length = Buffer.byteLength(source); + } + if (action != null) { + let iterator; + stream = new ReadableStream({ + async start() { + iterator = action(object)[Symbol.asyncIterator](); + }, + async pull(controller) { + const { value, done } = await iterator.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + }); + } else { + if (!isErrored(stream)) { + controller.enqueue(new Uint8Array(value)); + } + } + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator.return(); + } + }); + } else if (!stream) { + stream = new ReadableStream({ + async pull(controller) { + controller.enqueue(typeof source === "string" ? new TextEncoder().encode(source) : source); + queueMicrotask(() => { + controller.close(); + }); + } + }); + } + const body = { stream, source, length }; + return [body, contentType]; + } + function safelyExtractBody(object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = require("stream/web").ReadableStream; + } + if (object instanceof ReadableStream) { + assert(!util.isDisturbed(object), "disturbed"); + assert(!object.locked, "locked"); + } + return extractBody(object, keepalive); + } + function cloneBody(body) { + const [out1, out2] = body.stream.tee(); + body.stream = out1; + return { + stream: out2, + length: body.length, + source: body.source + }; + } + async function* consumeBody(body) { + if (body) { + if (isUint8Array(body)) { + yield body; + } else { + const stream = body.stream; + if (util.isDisturbed(stream)) { + throw new TypeError("disturbed"); + } + if (stream.locked) { + throw new TypeError("locked"); + } + stream[kBodyUsed] = true; + yield* stream; } - return !this[kNeedDrain]; } - [kAddClient](client) { - client.on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]); - this[kClients].push(client); - if (this[kNeedDrain]) { - process.nextTick(() => { - if (this[kNeedDrain]) { - this[kOnDrain](client[kUrl], [this, client]); + } + function bodyMixinMethods(instance) { + const methods = { + async blob() { + if (!(this instanceof instance)) { + throw new TypeError("Illegal invocation"); + } + const chunks = []; + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError("Expected Uint8Array chunk"); } - }); + chunks.push(new Blob([chunk])); + } + return new Blob(chunks, { type: this.headers.get("Content-Type") || "" }); + }, + async arrayBuffer() { + if (!(this instanceof instance)) { + throw new TypeError("Illegal invocation"); + } + const contentLength = this.headers.get("content-length"); + const encoded = this.headers.has("content-encoding"); + if (!encoded && contentLength) { + const buffer2 = new Uint8Array(contentLength); + let offset2 = 0; + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError("Expected Uint8Array chunk"); + } + buffer2.set(chunk, offset2); + offset2 += chunk.length; + } + return buffer2.buffer; + } + const chunks = []; + let size = 0; + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError("Expected Uint8Array chunk"); + } + chunks.push(chunk); + size += chunk.byteLength; + } + const buffer = new Uint8Array(size); + let offset = 0; + for (const chunk of chunks) { + buffer.set(chunk, offset); + offset += chunk.byteLength; + } + return buffer.buffer; + }, + async text() { + if (!(this instanceof instance)) { + throw new TypeError("Illegal invocation"); + } + let result = ""; + const textDecoder = new TextDecoder(); + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError("Expected Uint8Array chunk"); + } + result += textDecoder.decode(chunk, { stream: true }); + } + result += textDecoder.decode(); + return result; + }, + async json() { + if (!(this instanceof instance)) { + throw new TypeError("Illegal invocation"); + } + return JSON.parse(await this.text()); + }, + async formData() { + if (!(this instanceof instance)) { + throw new TypeError("Illegal invocation"); + } + const contentType = this.headers.get("Content-Type"); + if (/multipart\/form-data/.test(contentType)) { + throw new NotSupportedError("multipart/form-data not supported"); + } else if (/application\/x-www-form-urlencoded/.test(contentType)) { + let entries; + try { + entries = new URLSearchParams(await this.text()); + } catch (err) { + throw Object.assign(new TypeError(), { cause: err }); + } + const formData = new FormData(); + for (const [name, value] of entries) { + formData.append(name, value); + } + return formData; + } else { + webidl.errors.exception({ + header: `${instance.name}.formData`, + value: "Could not parse content as FormData." + }); + } } - return this; - } - [kRemoveClient](client) { - client.close(() => { - const idx = this[kClients].indexOf(client); - if (idx !== -1) { - this[kClients].splice(idx, 1); + }; + return methods; + } + var properties = { + body: { + enumerable: true, + get() { + if (!this || !this[kState]) { + throw new TypeError("Illegal invocation"); } - }); - this[kNeedDrain] = this[kClients].some((dispatcher) => !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true); + return this[kState].body ? this[kState].body.stream : null; + } + }, + bodyUsed: { + enumerable: true, + get() { + if (!this || !this[kState]) { + throw new TypeError("Illegal invocation"); + } + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } } }; + function mixinBody(prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)); + Object.defineProperties(prototype.prototype, properties); + } module2.exports = { - PoolBase, - kClients, - kNeedDrain, - kAddClient, - kRemoveClient, - kGetDispatcher + extractBody, + safelyExtractBody, + cloneBody, + mixinBody }; } }); -// lib/pool.js -var require_pool = __commonJS({ - "lib/pool.js"(exports2, module2) { +// lib/core/request.js +var require_request = __commonJS({ + "lib/core/request.js"(exports2, module2) { "use strict"; var { - PoolBase, - kClients, - kNeedDrain, - kAddClient, - kGetDispatcher - } = require_pool_base(); - var Client2 = require_client(); - var { - InvalidArgumentError: InvalidArgumentError2 + InvalidArgumentError, + NotSupportedError } = require_errors(); - var util2 = require_util(); - var { kUrl } = require_symbols(); - var buildConnector2 = require_connect(); - var kOptions = Symbol("options"); - var kConnections = Symbol("connections"); - var kFactory = Symbol("factory"); - function defaultFactory(origin, opts) { - return new Client2(origin, opts); + var assert = require("assert"); + var util = require_util(); + var tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; + var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; + var invalidPathRegex = /[^\u0021-\u00ff]/; + var kHandler = Symbol("handler"); + var channels = {}; + var extractBody; + var nodeVersion = process.versions.node.split("."); + var nodeMajor = Number(nodeVersion[0]); + var nodeMinor = Number(nodeVersion[1]); + try { + const diagnosticsChannel = require("diagnostics_channel"); + channels.create = diagnosticsChannel.channel("undici:request:create"); + channels.bodySent = diagnosticsChannel.channel("undici:request:bodySent"); + channels.headers = diagnosticsChannel.channel("undici:request:headers"); + channels.trailers = diagnosticsChannel.channel("undici:request:trailers"); + channels.error = diagnosticsChannel.channel("undici:request:error"); + } catch { + channels.create = { hasSubscribers: false }; + channels.bodySent = { hasSubscribers: false }; + channels.headers = { hasSubscribers: false }; + channels.trailers = { hasSubscribers: false }; + channels.error = { hasSubscribers: false }; } - var Pool2 = class extends PoolBase { + var Request = class { constructor(origin, { - connections, - factory = defaultFactory, - connect, - connectTimeout, - tls, - maxCachedSessions, - socketPath, - ...options - } = {}) { - super(); - if (connections != null && (!Number.isFinite(connections) || connections < 0)) { - throw new InvalidArgumentError2("invalid connections"); + path, + method, + body, + headers, + query, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + throwOnError + }, handler) { + if (typeof path !== "string") { + throw new InvalidArgumentError("path must be a string"); + } else if (path[0] !== "/" && !(path.startsWith("http://") || path.startsWith("https://")) && method !== "CONNECT") { + throw new InvalidArgumentError("path must be an absolute URL or start with a slash"); + } else if (invalidPathRegex.exec(path) !== null) { + throw new InvalidArgumentError("invalid request path"); } - if (typeof factory !== "function") { - throw new InvalidArgumentError2("factory must be a function."); + if (typeof method !== "string") { + throw new InvalidArgumentError("method must be a string"); + } else if (tokenRegExp.exec(method) === null) { + throw new InvalidArgumentError("invalid request method"); } - if (connect != null && typeof connect !== "function" && typeof connect !== "object") { - throw new InvalidArgumentError2("connect must be a function or an object"); + if (upgrade && typeof upgrade !== "string") { + throw new InvalidArgumentError("upgrade must be a string"); } - if (typeof connect !== "function") { - connect = buildConnector2({ - ...tls, - maxCachedSessions, - socketPath, - timeout: connectTimeout == null ? 1e4 : connectTimeout, - ...connect - }); + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError("invalid headersTimeout"); } - this[kConnections] = connections || null; - this[kUrl] = util2.parseOrigin(origin); - this[kOptions] = { ...util2.deepClone(options), connect }; - this[kFactory] = factory; - } - [kGetDispatcher]() { - let dispatcher = this[kClients].find((dispatcher2) => !dispatcher2[kNeedDrain]); - if (dispatcher) { - return dispatcher; + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError("invalid bodyTimeout"); } - if (!this[kConnections] || this[kClients].length < this[kConnections]) { - dispatcher = this[kFactory](this[kUrl], this[kOptions]); - this[kAddClient](dispatcher); + this.headersTimeout = headersTimeout; + this.bodyTimeout = bodyTimeout; + this.throwOnError = throwOnError === true; + this.method = method; + if (body == null) { + this.body = null; + } else if (util.isStream(body)) { + this.body = body; + } else if (util.isBuffer(body)) { + this.body = body.byteLength ? body : null; + } else if (ArrayBuffer.isView(body)) { + this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null; + } else if (body instanceof ArrayBuffer) { + this.body = body.byteLength ? Buffer.from(body) : null; + } else if (typeof body === "string") { + this.body = body.length ? Buffer.from(body) : null; + } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { + this.body = body; + } else { + throw new InvalidArgumentError("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable"); + } + this.completed = false; + this.aborted = false; + this.upgrade = upgrade || null; + this.path = query ? util.buildURL(path, query) : path; + this.origin = origin; + this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent; + this.blocking = blocking == null ? false : blocking; + this.host = null; + this.contentLength = null; + this.contentType = null; + this.headers = ""; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError("headers array must be even"); + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]); + } + } else if (headers && typeof headers === "object") { + const keys = Object.keys(headers); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + processHeader(this, key, headers[key]); + } + } else if (headers != null) { + throw new InvalidArgumentError("headers must be an object or an array"); + } + if (util.isFormDataLike(this.body)) { + if (nodeMajor < 16 || nodeMajor === 16 && nodeMinor < 8) { + throw new InvalidArgumentError("Form-Data bodies are only supported in node v16.8 and newer."); + } + if (!extractBody) { + extractBody = require_body().extractBody; + } + const [bodyStream, contentType] = extractBody(body); + if (this.contentType == null) { + this.contentType = contentType; + this.headers += `content-type: ${contentType}\r +`; + } + this.body = bodyStream.stream; + } else if (util.isBlobLike(body) && this.contentType == null && body.type) { + this.contentType = body.type; + this.headers += `content-type: ${body.type}\r +`; + } + util.validateHandler(handler, method, upgrade); + this.servername = util.getServerName(this.host); + this[kHandler] = handler; + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }); } - return dispatcher; } - }; - module2.exports = Pool2; - } -}); - -// lib/balanced-pool.js -var require_balanced_pool = __commonJS({ - "lib/balanced-pool.js"(exports2, module2) { - "use strict"; - var { - BalancedPoolMissingUpstreamError, - InvalidArgumentError: InvalidArgumentError2 - } = require_errors(); - var { - PoolBase, - kClients, - kNeedDrain, - kAddClient, - kRemoveClient, - kGetDispatcher - } = require_pool_base(); - var Pool2 = require_pool(); - var { kUrl } = require_symbols(); - var { parseOrigin } = require_util(); - var kFactory = Symbol("factory"); - var kOptions = Symbol("options"); - function defaultFactory(origin, opts) { - return new Pool2(origin, opts); - } - var BalancedPool2 = class extends PoolBase { - constructor(upstreams = [], { factory = defaultFactory, ...opts } = {}) { - super(); - this[kOptions] = opts; - if (!Array.isArray(upstreams)) { - upstreams = [upstreams]; + onBodySent(chunk) { + if (this[kHandler].onBodySent) { + try { + this[kHandler].onBodySent(chunk); + } catch (err) { + this.onError(err); + } } - if (typeof factory !== "function") { - throw new InvalidArgumentError2("factory must be a function."); + } + onRequestSent() { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }); } - this[kFactory] = factory; - for (const upstream of upstreams) { - this.addUpstream(upstream); + } + onConnect(abort) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onConnect(abort); + } + onHeaders(statusCode, headers, resume, statusText) { + assert(!this.aborted); + assert(!this.completed); + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }); + } + return this[kHandler].onHeaders(statusCode, headers, resume, statusText); + } + onData(chunk) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onData(chunk); + } + onUpgrade(statusCode, headers, socket) { + assert(!this.aborted); + assert(!this.completed); + return this[kHandler].onUpgrade(statusCode, headers, socket); + } + onComplete(trailers) { + assert(!this.aborted); + this.completed = true; + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }); } + return this[kHandler].onComplete(trailers); } - addUpstream(upstream) { - const upstreamOrigin = parseOrigin(upstream).origin; - if (this[kClients].find((pool) => pool[kUrl].origin === upstreamOrigin && pool.closed !== true && pool.destroyed !== true)) { - return this; + onError(error) { + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error }); } - this[kAddClient](this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))); - return this; - } - removeUpstream(upstream) { - const upstreamOrigin = parseOrigin(upstream).origin; - const pool = this[kClients].find((pool2) => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true); - if (pool) { - this[kRemoveClient](pool); + if (this.aborted) { + return; } + this.aborted = true; + return this[kHandler].onError(error); + } + addHeader(key, value) { + processHeader(this, key, value); return this; } - get upstreams() { - return this[kClients].filter((dispatcher) => dispatcher.closed !== true && dispatcher.destroyed !== true).map((p) => p[kUrl].origin); + }; + function processHeader(request, key, val) { + if (val && typeof val === "object") { + throw new InvalidArgumentError(`invalid ${key} header`); + } else if (val === void 0) { + return; } - [kGetDispatcher]() { - if (this[kClients].length === 0) { - throw new BalancedPoolMissingUpstreamError(); - } - const dispatcher = this[kClients].find((dispatcher2) => !dispatcher2[kNeedDrain] && dispatcher2.closed !== true && dispatcher2.destroyed !== true); - if (!dispatcher) { - return; + if (request.host === null && key.length === 4 && key.toLowerCase() === "host") { + request.host = val; + } else if (request.contentLength === null && key.length === 14 && key.toLowerCase() === "content-length") { + request.contentLength = parseInt(val, 10); + if (!Number.isFinite(request.contentLength)) { + throw new InvalidArgumentError("invalid content-length header"); } - this[kClients].splice(this[kClients].indexOf(dispatcher), 1); - this[kClients].push(dispatcher); - return dispatcher; + } else if (request.contentType === null && key.length === 12 && key.toLowerCase() === "content-type") { + request.contentType = val; + request.headers += `${key}: ${val}\r +`; + } else if (key.length === 17 && key.toLowerCase() === "transfer-encoding") { + throw new InvalidArgumentError("invalid transfer-encoding header"); + } else if (key.length === 10 && key.toLowerCase() === "connection") { + throw new InvalidArgumentError("invalid connection header"); + } else if (key.length === 10 && key.toLowerCase() === "keep-alive") { + throw new InvalidArgumentError("invalid keep-alive header"); + } else if (key.length === 7 && key.toLowerCase() === "upgrade") { + throw new InvalidArgumentError("invalid upgrade header"); + } else if (key.length === 6 && key.toLowerCase() === "expect") { + throw new NotSupportedError("expect header not supported"); + } else if (tokenRegExp.exec(key) === null) { + throw new InvalidArgumentError("invalid header key"); + } else if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`); + } else { + request.headers += `${key}: ${val}\r +`; } - }; - module2.exports = BalancedPool2; + } + module2.exports = Request; } }); -// lib/compat/dispatcher-weakref.js -var require_dispatcher_weakref = __commonJS({ - "lib/compat/dispatcher-weakref.js"(exports2, module2) { +// lib/handler/redirect.js +var require_redirect = __commonJS({ + "lib/handler/redirect.js"(exports2, module2) { "use strict"; - var { kConnected, kSize } = require_symbols(); - var CompatWeakRef = class { - constructor(value) { - this.value = value; + var util = require_util(); + var { kBodyUsed } = require_symbols(); + var assert = require("assert"); + var { InvalidArgumentError } = require_errors(); + var EE = require("events"); + var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; + var kBody = Symbol("body"); + var BodyAsyncIterable = class { + constructor(body) { + this[kBody] = body; + this[kBodyUsed] = false; } - deref() { - return this.value[kConnected] === 0 && this.value[kSize] === 0 ? void 0 : this.value; + async *[Symbol.asyncIterator]() { + assert(!this[kBodyUsed], "disturbed"); + this[kBodyUsed] = true; + yield* this[kBody]; } }; - var CompatFinalizer = class { - constructor(finalizer) { - this.finalizer = finalizer; - } - register(dispatcher, key) { - dispatcher.on("disconnect", () => { - if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { - this.finalizer(key); + var RedirectHandler = class { + constructor(dispatcher, maxRedirections, opts, handler) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + util.validateHandler(handler, opts.method, opts.upgrade); + this.dispatcher = dispatcher; + this.location = null; + this.abort = null; + this.opts = { ...opts, maxRedirections: 0 }; + this.maxRedirections = maxRedirections; + this.handler = handler; + this.history = []; + if (util.isStream(this.opts.body)) { + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body.on("data", function() { + assert(false); + }); } - }); - } - }; - module2.exports = function() { - return { - WeakRef: global.WeakRef || CompatWeakRef, - FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer - }; - }; - } -}); - -// lib/agent.js -var require_agent = __commonJS({ - "lib/agent.js"(exports2, module2) { - "use strict"; - var { InvalidArgumentError: InvalidArgumentError2 } = require_errors(); - var { kClients, kRunning, kClose, kDestroy, kDispatch } = require_symbols(); - var DispatcherBase = require_dispatcher_base(); - var Pool2 = require_pool(); - var Client2 = require_client(); - var util2 = require_util(); - var RedirectHandler = require_redirect(); - var { WeakRef, FinalizationRegistry: FinalizationRegistry2 } = require_dispatcher_weakref()(); - var kOnConnect = Symbol("onConnect"); - var kOnDisconnect = Symbol("onDisconnect"); - var kOnConnectionError = Symbol("onConnectionError"); - var kMaxRedirections = Symbol("maxRedirections"); - var kOnDrain = Symbol("onDrain"); - var kFactory = Symbol("factory"); - var kFinalizer = Symbol("finalizer"); - var kOptions = Symbol("options"); - function defaultFactory(origin, opts) { - return opts && opts.connections === 1 ? new Client2(origin, opts) : new Pool2(origin, opts); - } - var Agent2 = class extends DispatcherBase { - constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { - super(); - if (typeof factory !== "function") { - throw new InvalidArgumentError2("factory must be a function."); + if (typeof this.opts.body.readableDidRead !== "boolean") { + this.opts.body[kBodyUsed] = false; + EE.prototype.on.call(this.opts.body, "data", function() { + this[kBodyUsed] = true; + }); + } + } else if (this.opts.body && typeof this.opts.body.pipeTo === "function") { + this.opts.body = new BodyAsyncIterable(this.opts.body); + } else if (this.opts.body && typeof this.opts.body !== "string" && !ArrayBuffer.isView(this.opts.body) && util.isIterable(this.opts.body)) { + this.opts.body = new BodyAsyncIterable(this.opts.body); } - if (connect != null && typeof connect !== "function" && typeof connect !== "object") { - throw new InvalidArgumentError2("connect must be a function or an object"); + } + onConnect(abort) { + this.abort = abort; + this.handler.onConnect(abort, { history: this.history }); + } + onUpgrade(statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket); + } + onError(error) { + this.handler.onError(error); + } + onHeaders(statusCode, headers, resume, statusText) { + this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) ? null : parseLocation(statusCode, headers); + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)); } - if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { - throw new InvalidArgumentError2("maxRedirections must be a positive number"); + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText); } - if (connect && typeof connect !== "function") { - connect = { ...connect }; + const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))); + const path = search ? `${pathname}${search}` : pathname; + this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); + this.opts.path = path; + this.opts.origin = origin; + this.opts.maxRedirections = 0; + if (statusCode === 303 && this.opts.method !== "HEAD") { + this.opts.method = "GET"; + this.opts.body = null; } - this[kOptions] = { ...util2.deepClone(options), connect }; - this[kMaxRedirections] = maxRedirections; - this[kFactory] = factory; - this[kClients] = /* @__PURE__ */ new Map(); - this[kFinalizer] = new FinalizationRegistry2((key) => { - const ref = this[kClients].get(key); - if (ref !== void 0 && ref.deref() === void 0) { - this[kClients].delete(key); - } - }); - const agent = this; - this[kOnDrain] = (origin, targets) => { - agent.emit("drain", origin, [agent, ...targets]); - }; - this[kOnConnect] = (origin, targets) => { - agent.emit("connect", origin, [agent, ...targets]); - }; - this[kOnDisconnect] = (origin, targets, err) => { - agent.emit("disconnect", origin, [agent, ...targets], err); - }; - this[kOnConnectionError] = (origin, targets, err) => { - agent.emit("connectionError", origin, [agent, ...targets], err); - }; } - get [kRunning]() { - let ret = 0; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - if (client) { - ret += client[kRunning]; - } + onData(chunk) { + if (this.location) { + } else { + return this.handler.onData(chunk); } - return ret; } - [kDispatch](opts, handler) { - let key; - if (opts.origin && (typeof opts.origin === "string" || opts.origin instanceof URL)) { - key = String(opts.origin); + onComplete(trailers) { + if (this.location) { + this.location = null; + this.abort = null; + this.dispatcher.dispatch(this.opts, this); } else { - throw new InvalidArgumentError2("opts.origin must be a non-empty string or URL."); + this.handler.onComplete(trailers); } - const ref = this[kClients].get(key); - let dispatcher = ref ? ref.deref() : null; - if (!dispatcher) { - dispatcher = this[kFactory](opts.origin, this[kOptions]).on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]); - this[kClients].set(key, new WeakRef(dispatcher)); - this[kFinalizer].register(dispatcher, key); + } + onBodySent(chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk); } - const { maxRedirections = this[kMaxRedirections] } = opts; - if (maxRedirections != null && maxRedirections !== 0) { - opts = { ...opts, maxRedirections: 0 }; - handler = new RedirectHandler(this, maxRedirections, opts, handler); + } + }; + function parseLocation(statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null; + } + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toString().toLowerCase() === "location") { + return headers[i + 1]; } - return dispatcher.dispatch(opts, handler); } - async [kClose]() { - const closePromises = []; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - if (client) { - closePromises.push(client.close()); + } + function shouldRemoveHeader(header, removeContent, unknownOrigin) { + return header.length === 4 && header.toString().toLowerCase() === "host" || removeContent && header.toString().toLowerCase().indexOf("content-") === 0 || unknownOrigin && header.length === 13 && header.toString().toLowerCase() === "authorization" || unknownOrigin && header.length === 6 && header.toString().toLowerCase() === "cookie"; + } + function cleanRequestHeaders(headers, removeContent, unknownOrigin) { + const ret = []; + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]); } } - await Promise.all(closePromises); - } - async [kDestroy](err) { - const destroyPromises = []; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - if (client) { - destroyPromises.push(client.destroy(err)); + } else if (headers && typeof headers === "object") { + for (const key of Object.keys(headers)) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]); } } - await Promise.all(destroyPromises); + } else { + assert(headers == null, "headers must be an object or an array"); } - }; - module2.exports = Agent2; + return ret; + } + module2.exports = RedirectHandler; } }); -// lib/api/readable.js -var require_readable = __commonJS({ - "lib/api/readable.js"(exports2, module2) { +// lib/core/connect.js +var require_connect = __commonJS({ + "lib/core/connect.js"(exports2, module2) { "use strict"; + var net = require("net"); var assert = require("assert"); - var { Readable } = require("stream"); - var { RequestAbortedError, NotSupportedError } = require_errors(); - var util2 = require_util(); - var { ReadableStreamFrom, toUSVString } = require_util(); - var Blob; - var kConsume = Symbol("kConsume"); - var kReading = Symbol("kReading"); - var kBody = Symbol("kBody"); - var kAbort = Symbol("abort"); - var kContentType = Symbol("kContentType"); - module2.exports = class BodyReadable extends Readable { - constructor(resume, abort, contentType = "") { - super({ - autoDestroy: true, - read: resume, - highWaterMark: 64 * 1024 - }); - this._readableState.dataEmitted = false; - this[kAbort] = abort; - this[kConsume] = null; - this[kBody] = null; - this[kContentType] = contentType; - this[kReading] = false; - } - destroy(err) { - if (this.destroyed) { - return this; - } - if (!err && !this._readableState.endEmitted) { - err = new RequestAbortedError(); - } - if (err) { - this[kAbort](); - } - return super.destroy(err); - } - emit(ev, ...args) { - if (ev === "data") { - this._readableState.dataEmitted = true; - } else if (ev === "error") { - this._readableState.errorEmitted = true; - } - return super.emit(ev, ...args); - } - on(ev, ...args) { - if (ev === "data" || ev === "readable") { - this[kReading] = true; - } - return super.on(ev, ...args); - } - addListener(ev, ...args) { - return this.on(ev, ...args); - } - off(ev, ...args) { - const ret = super.off(ev, ...args); - if (ev === "data" || ev === "readable") { - this[kReading] = this.listenerCount("data") > 0 || this.listenerCount("readable") > 0; - } - return ret; - } - removeListener(ev, ...args) { - return this.off(ev, ...args); - } - push(chunk) { - if (this[kConsume] && chunk !== null) { - consumePush(this[kConsume], chunk); - return this[kReading] ? super.push(chunk) : true; - } - return super.push(chunk); - } - async text() { - return consume(this, "text"); - } - async json() { - return consume(this, "json"); - } - async blob() { - return consume(this, "blob"); - } - async arrayBuffer() { - return consume(this, "arrayBuffer"); - } - async formData() { - throw new NotSupportedError(); - } - get bodyUsed() { - return util2.isDisturbed(this); + var util = require_util(); + var { InvalidArgumentError, ConnectTimeoutError } = require_errors(); + var tls; + function buildConnector({ maxCachedSessions, socketPath, timeout, ...opts }) { + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError("maxCachedSessions must be a positive integer or zero"); } - get body() { - if (!this[kBody]) { - this[kBody] = ReadableStreamFrom(this); - if (this[kConsume]) { - this[kBody].getReader(); - assert(this[kBody].locked); + const options = { path: socketPath, ...opts }; + const sessionCache = /* @__PURE__ */ new Map(); + timeout = timeout == null ? 1e4 : timeout; + maxCachedSessions = maxCachedSessions == null ? 100 : maxCachedSessions; + return function connect({ hostname, host, protocol, port, servername, httpSocket }, callback) { + let socket; + if (protocol === "https:") { + if (!tls) { + tls = require("tls"); } - } - return this[kBody]; - } - async dump(opts) { - let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144; - try { - for await (const chunk of this) { - limit -= Buffer.byteLength(chunk); - if (limit < 0) { + servername = servername || options.servername || util.getServerName(host) || null; + const sessionKey = servername || hostname; + const session = sessionCache.get(sessionKey) || null; + assert(sessionKey); + socket = tls.connect({ + highWaterMark: 16384, + ...options, + servername, + session, + socket: httpSocket, + port: port || 443, + host: hostname + }); + socket.on("session", function(session2) { + if (maxCachedSessions === 0) { return; } - } - } catch { + if (sessionCache.size >= maxCachedSessions) { + const { value: oldestKey } = sessionCache.keys().next(); + sessionCache.delete(oldestKey); + } + sessionCache.set(sessionKey, session2); + }).on("error", function(err) { + if (sessionKey && err.code !== "UND_ERR_INFO") { + sessionCache.delete(sessionKey); + } + }); + } else { + assert(!httpSocket, "httpSocket can only be sent on TLS update"); + socket = net.connect({ + highWaterMark: 64 * 1024, + ...options, + port: port || 80, + host: hostname + }); } - } - }; - function isLocked(self) { - return self[kBody] && self[kBody].locked === true || self[kConsume]; - } - function isUnusable(self) { - return util2.isDisturbed(self) || isLocked(self); - } - async function consume(stream, type) { - if (isUnusable(stream)) { - throw new TypeError("unusable"); - } - assert(!stream[kConsume]); - return new Promise((resolve, reject) => { - stream[kConsume] = { - type, - stream, - resolve, - reject, - length: 0, - body: [] - }; - stream.on("error", function(err) { - consumeFinish(this[kConsume], err); - }).on("close", function() { - if (this[kConsume].body !== null) { - consumeFinish(this[kConsume], new RequestAbortedError()); + const timeoutId = timeout ? setTimeout(onConnectTimeout, timeout, socket) : null; + socket.setNoDelay(true).once(protocol === "https:" ? "secureConnect" : "connect", function() { + clearTimeout(timeoutId); + if (callback) { + const cb = callback; + callback = null; + cb(null, this); + } + }).on("error", function(err) { + clearTimeout(timeoutId); + if (callback) { + const cb = callback; + callback = null; + cb(err); } }); - process.nextTick(consumeStart, stream[kConsume]); - }); - } - function consumeStart(consume2) { - if (consume2.body === null) { - return; - } - const { _readableState: state } = consume2.stream; - for (const chunk of state.buffer) { - consumePush(consume2, chunk); - } - if (state.endEmitted) { - consumeEnd(this[kConsume]); - } else { - consume2.stream.on("end", function() { - consumeEnd(this[kConsume]); - }); - } - consume2.stream.resume(); - while (consume2.stream.read() != null) { - } - } - function consumeEnd(consume2) { - const { type, body, resolve, stream, length } = consume2; - try { - if (type === "text") { - resolve(toUSVString(Buffer.concat(body))); - } else if (type === "json") { - resolve(JSON.parse(Buffer.concat(body))); - } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - resolve(dst); - } else if (type === "blob") { - if (!Blob) { - Blob = require("buffer").Blob; - } - resolve(new Blob(body, { type: stream[kContentType] })); - } - consumeFinish(consume2); - } catch (err) { - stream.destroy(err); - } - } - function consumePush(consume2, chunk) { - consume2.length += chunk.length; - consume2.body.push(chunk); + return socket; + }; } - function consumeFinish(consume2, err) { - if (consume2.body === null) { - return; - } - if (err) { - consume2.reject(err); - } else { - consume2.resolve(); - } - consume2.type = null; - consume2.stream = null; - consume2.resolve = null; - consume2.reject = null; - consume2.length = 0; - consume2.body = null; + function onConnectTimeout(socket) { + util.destroy(socket, new ConnectTimeoutError()); } + module2.exports = buildConnector; } }); -// lib/api/abort-signal.js -var require_abort_signal = __commonJS({ - "lib/api/abort-signal.js"(exports2, module2) { - var { RequestAbortedError } = require_errors(); - var kListener = Symbol("kListener"); - var kSignal = Symbol("kSignal"); - function abort(self) { - if (self.abort) { - self.abort(); - } else { - self.onError(new RequestAbortedError()); - } - } - function addSignal(self, signal) { - self[kSignal] = null; - self[kListener] = null; - if (!signal) { - return; - } - if (signal.aborted) { - abort(self); - return; - } - self[kSignal] = signal; - self[kListener] = () => { - abort(self); - }; - if ("addEventListener" in self[kSignal]) { - self[kSignal].addEventListener("abort", self[kListener]); - } else { - self[kSignal].addListener("abort", self[kListener]); - } +// lib/llhttp/utils.js +var require_utils = __commonJS({ + "lib/llhttp/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.enumToMap = void 0; + function enumToMap(obj) { + const res = {}; + Object.keys(obj).forEach((key) => { + const value = obj[key]; + if (typeof value === "number") { + res[key] = value; + } + }); + return res; } - function removeSignal(self) { - if (!self[kSignal]) { - return; - } - if ("removeEventListener" in self[kSignal]) { - self[kSignal].removeEventListener("abort", self[kListener]); - } else { - self[kSignal].removeListener("abort", self[kListener]); + exports2.enumToMap = enumToMap; + } +}); + +// lib/llhttp/constants.js +var require_constants2 = __commonJS({ + "lib/llhttp/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SPECIAL_HEADERS = exports2.HEADER_STATE = exports2.MINOR = exports2.MAJOR = exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS = exports2.TOKEN = exports2.STRICT_TOKEN = exports2.HEX = exports2.URL_CHAR = exports2.STRICT_URL_CHAR = exports2.USERINFO_CHARS = exports2.MARK = exports2.ALPHANUM = exports2.NUM = exports2.HEX_MAP = exports2.NUM_MAP = exports2.ALPHA = exports2.FINISH = exports2.H_METHOD_MAP = exports2.METHOD_MAP = exports2.METHODS_RTSP = exports2.METHODS_ICE = exports2.METHODS_HTTP = exports2.METHODS = exports2.LENIENT_FLAGS = exports2.FLAGS = exports2.TYPE = exports2.ERROR = void 0; + var utils_1 = require_utils(); + var ERROR; + (function(ERROR2) { + ERROR2[ERROR2["OK"] = 0] = "OK"; + ERROR2[ERROR2["INTERNAL"] = 1] = "INTERNAL"; + ERROR2[ERROR2["STRICT"] = 2] = "STRICT"; + ERROR2[ERROR2["LF_EXPECTED"] = 3] = "LF_EXPECTED"; + ERROR2[ERROR2["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; + ERROR2[ERROR2["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; + ERROR2[ERROR2["INVALID_METHOD"] = 6] = "INVALID_METHOD"; + ERROR2[ERROR2["INVALID_URL"] = 7] = "INVALID_URL"; + ERROR2[ERROR2["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; + ERROR2[ERROR2["INVALID_VERSION"] = 9] = "INVALID_VERSION"; + ERROR2[ERROR2["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; + ERROR2[ERROR2["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; + ERROR2[ERROR2["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; + ERROR2[ERROR2["INVALID_STATUS"] = 13] = "INVALID_STATUS"; + ERROR2[ERROR2["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; + ERROR2[ERROR2["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; + ERROR2[ERROR2["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; + ERROR2[ERROR2["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; + ERROR2[ERROR2["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; + ERROR2[ERROR2["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; + ERROR2[ERROR2["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; + ERROR2[ERROR2["PAUSED"] = 21] = "PAUSED"; + ERROR2[ERROR2["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; + ERROR2[ERROR2["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; + ERROR2[ERROR2["USER"] = 24] = "USER"; + })(ERROR = exports2.ERROR || (exports2.ERROR = {})); + var TYPE; + (function(TYPE2) { + TYPE2[TYPE2["BOTH"] = 0] = "BOTH"; + TYPE2[TYPE2["REQUEST"] = 1] = "REQUEST"; + TYPE2[TYPE2["RESPONSE"] = 2] = "RESPONSE"; + })(TYPE = exports2.TYPE || (exports2.TYPE = {})); + var FLAGS; + (function(FLAGS2) { + FLAGS2[FLAGS2["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; + FLAGS2[FLAGS2["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; + FLAGS2[FLAGS2["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; + FLAGS2[FLAGS2["CHUNKED"] = 8] = "CHUNKED"; + FLAGS2[FLAGS2["UPGRADE"] = 16] = "UPGRADE"; + FLAGS2[FLAGS2["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; + FLAGS2[FLAGS2["SKIPBODY"] = 64] = "SKIPBODY"; + FLAGS2[FLAGS2["TRAILING"] = 128] = "TRAILING"; + FLAGS2[FLAGS2["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; + })(FLAGS = exports2.FLAGS || (exports2.FLAGS = {})); + var LENIENT_FLAGS; + (function(LENIENT_FLAGS2) { + LENIENT_FLAGS2[LENIENT_FLAGS2["HEADERS"] = 1] = "HEADERS"; + LENIENT_FLAGS2[LENIENT_FLAGS2["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; + LENIENT_FLAGS2[LENIENT_FLAGS2["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; + })(LENIENT_FLAGS = exports2.LENIENT_FLAGS || (exports2.LENIENT_FLAGS = {})); + var METHODS; + (function(METHODS2) { + METHODS2[METHODS2["DELETE"] = 0] = "DELETE"; + METHODS2[METHODS2["GET"] = 1] = "GET"; + METHODS2[METHODS2["HEAD"] = 2] = "HEAD"; + METHODS2[METHODS2["POST"] = 3] = "POST"; + METHODS2[METHODS2["PUT"] = 4] = "PUT"; + METHODS2[METHODS2["CONNECT"] = 5] = "CONNECT"; + METHODS2[METHODS2["OPTIONS"] = 6] = "OPTIONS"; + METHODS2[METHODS2["TRACE"] = 7] = "TRACE"; + METHODS2[METHODS2["COPY"] = 8] = "COPY"; + METHODS2[METHODS2["LOCK"] = 9] = "LOCK"; + METHODS2[METHODS2["MKCOL"] = 10] = "MKCOL"; + METHODS2[METHODS2["MOVE"] = 11] = "MOVE"; + METHODS2[METHODS2["PROPFIND"] = 12] = "PROPFIND"; + METHODS2[METHODS2["PROPPATCH"] = 13] = "PROPPATCH"; + METHODS2[METHODS2["SEARCH"] = 14] = "SEARCH"; + METHODS2[METHODS2["UNLOCK"] = 15] = "UNLOCK"; + METHODS2[METHODS2["BIND"] = 16] = "BIND"; + METHODS2[METHODS2["REBIND"] = 17] = "REBIND"; + METHODS2[METHODS2["UNBIND"] = 18] = "UNBIND"; + METHODS2[METHODS2["ACL"] = 19] = "ACL"; + METHODS2[METHODS2["REPORT"] = 20] = "REPORT"; + METHODS2[METHODS2["MKACTIVITY"] = 21] = "MKACTIVITY"; + METHODS2[METHODS2["CHECKOUT"] = 22] = "CHECKOUT"; + METHODS2[METHODS2["MERGE"] = 23] = "MERGE"; + METHODS2[METHODS2["M-SEARCH"] = 24] = "M-SEARCH"; + METHODS2[METHODS2["NOTIFY"] = 25] = "NOTIFY"; + METHODS2[METHODS2["SUBSCRIBE"] = 26] = "SUBSCRIBE"; + METHODS2[METHODS2["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; + METHODS2[METHODS2["PATCH"] = 28] = "PATCH"; + METHODS2[METHODS2["PURGE"] = 29] = "PURGE"; + METHODS2[METHODS2["MKCALENDAR"] = 30] = "MKCALENDAR"; + METHODS2[METHODS2["LINK"] = 31] = "LINK"; + METHODS2[METHODS2["UNLINK"] = 32] = "UNLINK"; + METHODS2[METHODS2["SOURCE"] = 33] = "SOURCE"; + METHODS2[METHODS2["PRI"] = 34] = "PRI"; + METHODS2[METHODS2["DESCRIBE"] = 35] = "DESCRIBE"; + METHODS2[METHODS2["ANNOUNCE"] = 36] = "ANNOUNCE"; + METHODS2[METHODS2["SETUP"] = 37] = "SETUP"; + METHODS2[METHODS2["PLAY"] = 38] = "PLAY"; + METHODS2[METHODS2["PAUSE"] = 39] = "PAUSE"; + METHODS2[METHODS2["TEARDOWN"] = 40] = "TEARDOWN"; + METHODS2[METHODS2["GET_PARAMETER"] = 41] = "GET_PARAMETER"; + METHODS2[METHODS2["SET_PARAMETER"] = 42] = "SET_PARAMETER"; + METHODS2[METHODS2["REDIRECT"] = 43] = "REDIRECT"; + METHODS2[METHODS2["RECORD"] = 44] = "RECORD"; + METHODS2[METHODS2["FLUSH"] = 45] = "FLUSH"; + })(METHODS = exports2.METHODS || (exports2.METHODS = {})); + exports2.METHODS_HTTP = [ + METHODS.DELETE, + METHODS.GET, + METHODS.HEAD, + METHODS.POST, + METHODS.PUT, + METHODS.CONNECT, + METHODS.OPTIONS, + METHODS.TRACE, + METHODS.COPY, + METHODS.LOCK, + METHODS.MKCOL, + METHODS.MOVE, + METHODS.PROPFIND, + METHODS.PROPPATCH, + METHODS.SEARCH, + METHODS.UNLOCK, + METHODS.BIND, + METHODS.REBIND, + METHODS.UNBIND, + METHODS.ACL, + METHODS.REPORT, + METHODS.MKACTIVITY, + METHODS.CHECKOUT, + METHODS.MERGE, + METHODS["M-SEARCH"], + METHODS.NOTIFY, + METHODS.SUBSCRIBE, + METHODS.UNSUBSCRIBE, + METHODS.PATCH, + METHODS.PURGE, + METHODS.MKCALENDAR, + METHODS.LINK, + METHODS.UNLINK, + METHODS.PRI, + METHODS.SOURCE + ]; + exports2.METHODS_ICE = [ + METHODS.SOURCE + ]; + exports2.METHODS_RTSP = [ + METHODS.OPTIONS, + METHODS.DESCRIBE, + METHODS.ANNOUNCE, + METHODS.SETUP, + METHODS.PLAY, + METHODS.PAUSE, + METHODS.TEARDOWN, + METHODS.GET_PARAMETER, + METHODS.SET_PARAMETER, + METHODS.REDIRECT, + METHODS.RECORD, + METHODS.FLUSH, + METHODS.GET, + METHODS.POST + ]; + exports2.METHOD_MAP = utils_1.enumToMap(METHODS); + exports2.H_METHOD_MAP = {}; + Object.keys(exports2.METHOD_MAP).forEach((key) => { + if (/^H/.test(key)) { + exports2.H_METHOD_MAP[key] = exports2.METHOD_MAP[key]; } - self[kSignal] = null; - self[kListener] = null; + }); + var FINISH; + (function(FINISH2) { + FINISH2[FINISH2["SAFE"] = 0] = "SAFE"; + FINISH2[FINISH2["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; + FINISH2[FINISH2["UNSAFE"] = 2] = "UNSAFE"; + })(FINISH = exports2.FINISH || (exports2.FINISH = {})); + exports2.ALPHA = []; + for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) { + exports2.ALPHA.push(String.fromCharCode(i)); + exports2.ALPHA.push(String.fromCharCode(i + 32)); } - module2.exports = { - addSignal, - removeSignal + exports2.NUM_MAP = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9 }; - } -}); - -// lib/api/api-request.js -var require_api_request = __commonJS({ - "lib/api/api-request.js"(exports2, module2) { - "use strict"; - var Readable = require_readable(); - var { - InvalidArgumentError: InvalidArgumentError2, - RequestAbortedError - } = require_errors(); - var util2 = require_util(); - var { AsyncResource } = require("async_hooks"); - var { addSignal, removeSignal } = require_abort_signal(); - var RequestHandler = class extends AsyncResource { - constructor(opts, callback) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError2("invalid opts"); - } - const { signal, method, opaque, body, onInfo, responseHeaders } = opts; - try { - if (typeof callback !== "function") { - throw new InvalidArgumentError2("invalid callback"); - } - if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { - throw new InvalidArgumentError2("signal must be an EventEmitter or EventTarget"); - } - if (method === "CONNECT") { - throw new InvalidArgumentError2("invalid method"); - } - if (onInfo && typeof onInfo !== "function") { - throw new InvalidArgumentError2("invalid onInfo callback"); - } - super("UNDICI_REQUEST"); - } catch (err) { - if (util2.isStream(body)) { - util2.destroy(body.on("error", util2.nop), err); - } - throw err; - } - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.callback = callback; - this.res = null; - this.abort = null; - this.body = body; - this.trailers = {}; - this.context = null; - this.onInfo = onInfo || null; - if (util2.isStream(body)) { - body.on("error", (err) => { - this.onError(err); - }); - } - addSignal(this, signal); - } - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); - } - this.abort = abort; - this.context = context; - } - onHeaders(statusCode, rawHeaders, resume) { - const { callback, opaque, abort, context } = this; - if (statusCode < 200) { - if (this.onInfo) { - const headers2 = this.responseHeaders === "raw" ? util2.parseRawHeaders(rawHeaders) : util2.parseHeaders(rawHeaders); - this.onInfo({ statusCode, headers: headers2 }); - } - return; - } - const parsedHeaders = util2.parseHeaders(rawHeaders); - const body = new Readable(resume, abort, parsedHeaders["content-type"]); - this.callback = null; - this.res = body; - const headers = this.responseHeaders === "raw" ? util2.parseRawHeaders(rawHeaders) : util2.parseHeaders(rawHeaders); - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - trailers: this.trailers, - opaque, - body, - context - }); - } - onData(chunk) { - const { res } = this; - return res.push(chunk); - } - onComplete(trailers) { - const { res } = this; - removeSignal(this); - util2.parseHeaders(trailers, this.trailers); - res.push(null); - } - onError(err) { - const { res, callback, body, opaque } = this; - removeSignal(this); - if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - if (res) { - this.res = null; - queueMicrotask(() => { - util2.destroy(res, err); - }); - } - if (body) { - this.body = null; - util2.destroy(body, err); - } - } + exports2.HEX_MAP = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9, + A: 10, + B: 11, + C: 12, + D: 13, + E: 14, + F: 15, + a: 10, + b: 11, + c: 12, + d: 13, + e: 14, + f: 15 }; - function request(opts, callback) { - if (callback === void 0) { - return new Promise((resolve, reject) => { - request.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - try { - this.dispatch(opts, new RequestHandler(opts, callback)); - } catch (err) { - if (typeof callback !== "function") { - throw err; - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); + exports2.NUM = [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ]; + exports2.ALPHANUM = exports2.ALPHA.concat(exports2.NUM); + exports2.MARK = ["-", "_", ".", "!", "~", "*", "'", "(", ")"]; + exports2.USERINFO_CHARS = exports2.ALPHANUM.concat(exports2.MARK).concat(["%", ";", ":", "&", "=", "+", "$", ","]); + exports2.STRICT_URL_CHAR = [ + "!", + '"', + "$", + "%", + "&", + "'", + "(", + ")", + "*", + "+", + ",", + "-", + ".", + "/", + ":", + ";", + "<", + "=", + ">", + "@", + "[", + "\\", + "]", + "^", + "_", + "`", + "{", + "|", + "}", + "~" + ].concat(exports2.ALPHANUM); + exports2.URL_CHAR = exports2.STRICT_URL_CHAR.concat([" ", "\f"]); + for (let i = 128; i <= 255; i++) { + exports2.URL_CHAR.push(i); + } + exports2.HEX = exports2.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]); + exports2.STRICT_TOKEN = [ + "!", + "#", + "$", + "%", + "&", + "'", + "*", + "+", + "-", + ".", + "^", + "_", + "`", + "|", + "~" + ].concat(exports2.ALPHANUM); + exports2.TOKEN = exports2.STRICT_TOKEN.concat([" "]); + exports2.HEADER_CHARS = [" "]; + for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports2.HEADER_CHARS.push(i); } } - module2.exports = request; + exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS.filter((c) => c !== 44); + exports2.MAJOR = exports2.NUM_MAP; + exports2.MINOR = exports2.MAJOR; + var HEADER_STATE; + (function(HEADER_STATE2) { + HEADER_STATE2[HEADER_STATE2["GENERAL"] = 0] = "GENERAL"; + HEADER_STATE2[HEADER_STATE2["CONNECTION"] = 1] = "CONNECTION"; + HEADER_STATE2[HEADER_STATE2["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; + HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; + HEADER_STATE2[HEADER_STATE2["UPGRADE"] = 4] = "UPGRADE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; + HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; + })(HEADER_STATE = exports2.HEADER_STATE || (exports2.HEADER_STATE = {})); + exports2.SPECIAL_HEADERS = { + "connection": HEADER_STATE.CONNECTION, + "content-length": HEADER_STATE.CONTENT_LENGTH, + "proxy-connection": HEADER_STATE.CONNECTION, + "transfer-encoding": HEADER_STATE.TRANSFER_ENCODING, + "upgrade": HEADER_STATE.UPGRADE + }; + } +}); + +// lib/llhttp/llhttp.wasm.js +var require_llhttp_wasm = __commonJS({ + "lib/llhttp/llhttp.wasm.js"(exports2, module2) { + module2.exports = "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzk4AwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAYGAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAAMEBQFwAQ4OBQMBAAIGCAF/AUGAuAQLB/UEHwZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAJGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAKGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQA1DGxsaHR0cF9hbGxvYwAMBm1hbGxvYwA6C2xsaHR0cF9mcmVlAA0EZnJlZQA8D2xsaHR0cF9nZXRfdHlwZQAOFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAPFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAQEWxsaHR0cF9nZXRfbWV0aG9kABEWbGxodHRwX2dldF9zdGF0dXNfY29kZQASEmxsaHR0cF9nZXRfdXBncmFkZQATDGxsaHR0cF9yZXNldAAUDmxsaHR0cF9leGVjdXRlABUUbGxodHRwX3NldHRpbmdzX2luaXQAFg1sbGh0dHBfZmluaXNoABcMbGxodHRwX3BhdXNlABgNbGxodHRwX3Jlc3VtZQAZG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAaEGxsaHR0cF9nZXRfZXJybm8AGxdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAcF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uAB0UbGxodHRwX2dldF9lcnJvcl9wb3MAHhFsbGh0dHBfZXJybm9fbmFtZQAfEmxsaHR0cF9tZXRob2RfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mADMJEwEAQQELDQECAwQFCwYHLiooJCYKxqgCOAIACwgAEIiAgIAACxkAIAAQtoCAgAAaIAAgAjYCNCAAIAE6ACgLHAAgACAALwEyIAAtAC4gABC1gICAABCAgICAAAspAQF/QTgQuoCAgAAiARC2gICAABogAUGAiICAADYCNCABIAA6ACggAQsKACAAELyAgIAACwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BMgsHACAALQAuC0UBBH8gACgCGCEBIAAtAC0hAiAALQAoIQMgACgCNCEEIAAQtoCAgAAaIAAgBDYCNCAAIAM6ACggACACOgAtIAAgATYCGAsRACAAIAEgASACahC3gICAAAtFACAAQgA3AgAgAEEwakIANwIAIABBKGpCADcCACAAQSBqQgA3AgAgAEEYakIANwIAIABBEGpCADcCACAAQQhqQgA3AgALZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI0IgFFDQAgASgCHCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQv4CAgAAACyAAQf+RgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQYSUgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBGkkNABC/gICAAAALIABBAnRByJuAgABqKAIACyIAAkAgAEEuSQ0AEL+AgIAAAAsgAEECdEGwnICAAGooAgALFgAgACAALQAtQf4BcSABQQBHcjoALQsZACAAIAAtAC1B/QFxIAFBAEdBAXRyOgAtCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI0IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZyOgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIoIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCNCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEHSioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCLCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB3ZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAjAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI0IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcOQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAI0IgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAhQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCHCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB0oiAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAiAiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL8gEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARBCHENAAJAIARBgARxRQ0AAkAgAC0AKEEBRw0AIAAtAC1BCnENAEEFDwtBBA8LAkAgBEEgcQ0AAkAgAC0AKEEBRg0AIAAvATIiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQYgEcUGABEYNAiAEQShxRQ0CC0EADwtBAEEDIAApAyBQGyEFCyAFC10BAn9BACEBAkAgAC0AKEEBRg0AIAAvATIiAkGcf2pB5ABJDQAgAkHMAUYNACACQbACRg0AIAAvATAiAEHAAHENAEEBIQEgAEGIBHFBgARGDQAgAEEocUUhAQsgAQuiAQEDfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEDIAAvATAiBEECcUUNAQwCC0EAIQMgAC8BMCIEQQFxRQ0BC0EBIQMgAC0AKEEBRg0AIAAvATIiBUGcf2pB5ABJDQAgBUHMAUYNACAFQbACRg0AIARBwABxDQBBACEDIARBiARxQYAERg0AIARBKHFBAEchAwsgAEEAOwEwIABBADoALyADC5QBAQJ/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQEgAC8BMCICQQJxRQ0BDAILQQAhASAALwEwIgJBAXFFDQELQQEhASAALQAoQQFGDQAgAC8BMiIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC08AIABBGGpCADcDACAAQgA3AwAgAEEwakIANwMAIABBKGpCADcDACAAQSBqQgA3AwAgAEEQakIANwMAIABBCGpCADcDACAAQbwBNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQuICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC9POAQMcfwN+BX8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDyABIRAgASERIAEhEiABIRMgASEUIAEhFSABIRYgASEXIAEhGCABIRkgASEaIAEhGyABIRwgASEdAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIeQX9qDrwBtwEBtgECAwQFBgcICQoLDA0ODxDAAb8BERITtQEUFRYXGBkavQG8ARscHR4fICG0AbMBIiOyAbEBJCUmJygpKissLS4vMDEyMzQ1Njc4OTq4ATs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAQC5AQtBACEeDK8BC0EPIR4MrgELQQ4hHgytAQtBECEeDKwBC0ERIR4MqwELQRQhHgyqAQtBFSEeDKkBC0EWIR4MqAELQRchHgynAQtBGCEeDKYBC0EIIR4MpQELQRkhHgykAQtBGiEeDKMBC0ETIR4MogELQRIhHgyhAQtBGyEeDKABC0EcIR4MnwELQR0hHgyeAQtBHiEeDJ0BC0GqASEeDJwBC0GrASEeDJsBC0EgIR4MmgELQSEhHgyZAQtBIiEeDJgBC0EjIR4MlwELQSQhHgyWAQtBrQEhHgyVAQtBJSEeDJQBC0EpIR4MkwELQQ0hHgySAQtBJiEeDJEBC0EnIR4MkAELQSghHgyPAQtBLiEeDI4BC0EqIR4MjQELQa4BIR4MjAELQQwhHgyLAQtBLyEeDIoBC0ErIR4MiQELQQshHgyIAQtBLCEeDIcBC0EtIR4MhgELQQohHgyFAQtBMSEeDIQBC0EwIR4MgwELQQkhHgyCAQtBHyEeDIEBC0EyIR4MgAELQTMhHgx/C0E0IR4MfgtBNSEeDH0LQTYhHgx8C0E3IR4MewtBOCEeDHoLQTkhHgx5C0E6IR4MeAtBrAEhHgx3C0E7IR4MdgtBPCEeDHULQT0hHgx0C0E+IR4McwtBPyEeDHILQcAAIR4McQtBwQAhHgxwC0HCACEeDG8LQcMAIR4MbgtBxAAhHgxtC0EHIR4MbAtBxQAhHgxrC0EGIR4MagtBxgAhHgxpC0EFIR4MaAtBxwAhHgxnC0EEIR4MZgtByAAhHgxlC0HJACEeDGQLQcoAIR4MYwtBywAhHgxiC0EDIR4MYQtBzAAhHgxgC0HNACEeDF8LQc4AIR4MXgtB0AAhHgxdC0HPACEeDFwLQdEAIR4MWwtB0gAhHgxaC0ECIR4MWQtB0wAhHgxYC0HUACEeDFcLQdUAIR4MVgtB1gAhHgxVC0HXACEeDFQLQdgAIR4MUwtB2QAhHgxSC0HaACEeDFELQdsAIR4MUAtB3AAhHgxPC0HdACEeDE4LQd4AIR4MTQtB3wAhHgxMC0HgACEeDEsLQeEAIR4MSgtB4gAhHgxJC0HjACEeDEgLQeQAIR4MRwtB5QAhHgxGC0HmACEeDEULQecAIR4MRAtB6AAhHgxDC0HpACEeDEILQeoAIR4MQQtB6wAhHgxAC0HsACEeDD8LQe0AIR4MPgtB7gAhHgw9C0HvACEeDDwLQfAAIR4MOwtB8QAhHgw6C0HyACEeDDkLQfMAIR4MOAtB9AAhHgw3C0H1ACEeDDYLQfYAIR4MNQtB9wAhHgw0C0H4ACEeDDMLQfkAIR4MMgtB+gAhHgwxC0H7ACEeDDALQfwAIR4MLwtB/QAhHgwuC0H+ACEeDC0LQf8AIR4MLAtBgAEhHgwrC0GBASEeDCoLQYIBIR4MKQtBgwEhHgwoC0GEASEeDCcLQYUBIR4MJgtBhgEhHgwlC0GHASEeDCQLQYgBIR4MIwtBiQEhHgwiC0GKASEeDCELQYsBIR4MIAtBjAEhHgwfC0GNASEeDB4LQY4BIR4MHQtBjwEhHgwcC0GQASEeDBsLQZEBIR4MGgtBkgEhHgwZC0GTASEeDBgLQZQBIR4MFwtBlQEhHgwWC0GWASEeDBULQZcBIR4MFAtBmAEhHgwTC0GZASEeDBILQZ0BIR4MEQtBmgEhHgwQC0EBIR4MDwtBmwEhHgwOC0GcASEeDA0LQZ4BIR4MDAtBoAEhHgwLC0GfASEeDAoLQaEBIR4MCQtBogEhHgwIC0GjASEeDAcLQaQBIR4MBgtBpQEhHgwFC0GmASEeDAQLQacBIR4MAwtBqAEhHgwCC0GpASEeDAELQa8BIR4LA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgHg6wAQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgaHB4fICMkJSYnKCkqLC0uLzD7AjQ2ODk8P0FCQ0RFRkdISUpLTE1OT1BRUlNVV1lcXV5gYmNkZWZnaGtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAdoB4AHhAeQB8QG9Ar0CCyABIgggAkcNwgFBvAEhHgyVAwsgASIeIAJHDbEBQawBIR4MlAMLIAEiASACRw1nQeIAIR4MkwMLIAEiASACRw1dQdoAIR4MkgMLIAEiASACRw1WQdUAIR4MkQMLIAEiASACRw1SQdMAIR4MkAMLIAEiASACRw1PQdEAIR4MjwMLIAEiASACRw1MQc8AIR4MjgMLIAEiASACRw0QQQwhHgyNAwsgASIBIAJHDTNBOCEeDIwDCyABIgEgAkcNL0E1IR4MiwMLIAEiASACRw0mQTIhHgyKAwsgASIBIAJHDSRBLyEeDIkDCyABIgEgAkcNHUEkIR4MiAMLIAAtAC5BAUYN/QIMxwELIAAgASIBIAIQtICAgABBAUcNtAEMtQELIAAgASIBIAIQrYCAgAAiHg21ASABIQEMsAILAkAgASIBIAJHDQBBBiEeDIUDCyAAIAFBAWoiASACELCAgIAAIh4NtgEgASEBDA8LIABCADcDIEETIR4M8wILIAEiHiACRw0JQQ8hHgyCAwsCQCABIgEgAkYNACABQQFqIQFBESEeDPICC0EHIR4MgQMLIABCACAAKQMgIh8gAiABIh5rrSIgfSIhICEgH1YbNwMgIB8gIFYiIkUNswFBCCEeDIADCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEVIR4M8AILQQkhHgz/AgsgASEBIAApAyBQDbIBIAEhAQytAgsCQCABIgEgAkcNAEELIR4M/gILIAAgAUEBaiIBIAIQr4CAgAAiHg2yASABIQEMrQILA0ACQCABLQAAQfCdgIAAai0AACIeQQFGDQAgHkECRw20ASABQQFqIQEMAwsgAUEBaiIBIAJHDQALQQwhHgz8AgsCQCABIgEgAkcNAEENIR4M/AILAkACQCABLQAAIh5Bc2oOFAG2AbYBtgG2AbYBtgG2AbYBtgG2AbYBtgG2AbYBtgG2AbYBtgEAtAELIAFBAWohAQy0AQsgAUEBaiEBC0EYIR4M6gILAkAgASIeIAJHDQBBDiEeDPoCC0IAIR8gHiEBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAeLQAAQVBqDjfIAccBAAECAwQFBge+Ar4CvgK+Ar4CvgK+AggJCgsMDb4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgIODxAREhO+AgtCAiEfDMcBC0IDIR8MxgELQgQhHwzFAQtCBSEfDMQBC0IGIR8MwwELQgchHwzCAQtCCCEfDMEBC0IJIR8MwAELQgohHwy/AQtCCyEfDL4BC0IMIR8MvQELQg0hHwy8AQtCDiEfDLsBC0IPIR8MugELQgohHwy5AQtCCyEfDLgBC0IMIR8MtwELQg0hHwy2AQtCDiEfDLUBC0IPIR8MtAELQgAhHwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgHi0AAEFQag43xwHGAQABAgMEBQYHyAHIAcgByAHIAcgByAEICQoLDA3IAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgBDg8QERITyAELQgIhHwzGAQtCAyEfDMUBC0IEIR8MxAELQgUhHwzDAQtCBiEfDMIBC0IHIR8MwQELQgghHwzAAQtCCSEfDL8BC0IKIR8MvgELQgshHwy9AQtCDCEfDLwBC0INIR8MuwELQg4hHwy6AQtCDyEfDLkBC0IKIR8MuAELQgshHwy3AQtCDCEfDLYBC0INIR8MtQELQg4hHwy0AQtCDyEfDLMBCyAAQgAgACkDICIfIAIgASIea60iIH0iISAhIB9WGzcDICAfICBWIiJFDbQBQREhHgz3AgsCQCABIgEgAkYNACAAQYmAgIAANgIIIAAgATYCBCABIQFBGyEeDOcCC0ESIR4M9gILIAAgASIeIAIQsoCAgABBf2oOBaYBAKICAbMBtAELQRIhHgzkAgsgAEEBOgAvIB4hAQzyAgsgASIBIAJHDbQBQRYhHgzyAgsgASIcIAJHDRlBOSEeDPECCwJAIAEiASACRw0AQRohHgzxAgsgAEEANgIEIABBioCAgAA2AgggACABIAEQqoCAgAAiHg22ASABIQEMuQELAkAgASIeIAJHDQBBGyEeDPACCwJAIB4tAAAiAUEgRw0AIB5BAWohAQwaCyABQQlHDbYBIB5BAWohAQwZCwJAIAEiASACRg0AIAFBAWohAQwUC0EcIR4M7gILAkAgASIeIAJHDQBBHSEeDO4CCwJAIB4tAAAiAUEJRw0AIB4hAQzSAgsgAUEgRw21ASAeIQEM0QILAkAgASIBIAJHDQBBHiEeDO0CCyABLQAAQQpHDbgBIAFBAWohAQygAgsgASIBIAJHDbgBQSIhHgzrAgsDQAJAIAEtAAAiHkEgRg0AAkAgHkF2ag4EAL4BvgEAvAELIAEhAQzEAQsgAUEBaiIBIAJHDQALQSQhHgzqAgtBJSEeIAEiIyACRg3pAiACICNrIAAoAgAiJGohJSAjISYgJCEBAkADQCAmLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQfCfgIAAai0AAEcNASABQQNGDdYCIAFBAWohASAmQQFqIiYgAkcNAAsgACAlNgIADOoCCyAAQQA2AgAgJiEBDLsBC0EmIR4gASIjIAJGDegCIAIgI2sgACgCACIkaiElICMhJiAkIQECQANAICYtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFB9J+AgABqLQAARw0BIAFBCEYNvQEgAUEBaiEBICZBAWoiJiACRw0ACyAAICU2AgAM6QILIABBADYCACAmIQEMugELQSchHiABIiMgAkYN5wIgAiAjayAAKAIAIiRqISUgIyEmICQhAQJAA0AgJi0AACIiQSByICIgIkG/f2pB/wFxQRpJG0H/AXEgAUHQpoCAAGotAABHDQEgAUEFRg29ASABQQFqIQEgJkEBaiImIAJHDQALIAAgJTYCAAzoAgsgAEEANgIAICYhAQy5AQsCQCABIgEgAkYNAANAAkAgAS0AAEGAooCAAGotAAAiHkEBRg0AIB5BAkYNCiABIQEMwQELIAFBAWoiASACRw0AC0EjIR4M5wILQSMhHgzmAgsCQCABIgEgAkYNAANAAkAgAS0AACIeQSBGDQAgHkF2ag4EvQG+Ab4BvQG+AQsgAUEBaiIBIAJHDQALQSshHgzmAgtBKyEeDOUCCwNAAkAgAS0AACIeQSBGDQAgHkEJRw0DCyABQQFqIgEgAkcNAAtBLyEeDOQCCwNAAkAgAS0AACIeQSBGDQACQAJAIB5BdmoOBL4BAQG+AQALIB5BLEYNvwELIAEhAQwECyABQQFqIgEgAkcNAAtBMiEeDOMCCyABIQEMvwELQTMhHiABIiYgAkYN4QIgAiAmayAAKAIAIiNqISQgJiEiICMhAQJAA0AgIi0AAEEgciABQYCkgIAAai0AAEcNASABQQZGDdACIAFBAWohASAiQQFqIiIgAkcNAAsgACAkNgIADOICCyAAQQA2AgAgIiEBC0ErIR4M0AILAkAgASIdIAJHDQBBNCEeDOACCyAAQYqAgIAANgIIIAAgHTYCBCAdIQEgAC0ALEF/ag4ErwG5AbsBvQHHAgsgAUEBaiEBDK4BCwJAIAEiASACRg0AA0ACQCABLQAAIh5BIHIgHiAeQb9/akH/AXFBGkkbQf8BcSIeQQlGDQAgHkEgRg0AAkACQAJAAkAgHkGdf2oOEwADAwMDAwMDAQMDAwMDAwMDAwIDCyABQQFqIQFBJiEeDNMCCyABQQFqIQFBJyEeDNICCyABQQFqIQFBKCEeDNECCyABIQEMsgELIAFBAWoiASACRw0AC0EoIR4M3gILQSghHgzdAgsCQCABIgEgAkYNAANAAkAgAS0AAEGAoICAAGotAABBAUYNACABIQEMtwELIAFBAWoiASACRw0AC0EwIR4M3QILQTAhHgzcAgsCQANAAkAgAS0AAEF3ag4YAALBAsECxwLBAsECwQLBAsECwQLBAsECwQLBAsECwQLBAsECwQLBAsECwQIAwQILIAFBAWoiASACRw0AC0E1IR4M3AILIAFBAWohAQtBISEeDMoCCyABIgEgAkcNuQFBNyEeDNkCCwNAAkAgAS0AAEGQpICAAGotAABBAUYNACABIQEMkAILIAFBAWoiASACRw0AC0E4IR4M2AILIBwtAAAiHkEgRg2aASAeQTpHDcYCIAAoAgQhASAAQQA2AgQgACABIBwQqICAgAAiAQ22ASAcQQFqIQEMuAELIAAgASACEKmAgIAAGgtBCiEeDMUCC0E6IR4gASImIAJGDdQCIAIgJmsgACgCACIjaiEkICYhHCAjIQECQANAIBwtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFBkKaAgABqLQAARw3EAiABQQVGDQEgAUEBaiEBIBxBAWoiHCACRw0ACyAAICQ2AgAM1QILIABBADYCACAAQQE6ACwgJiAja0EGaiEBDL4CC0E7IR4gASImIAJGDdMCIAIgJmsgACgCACIjaiEkICYhHCAjIQECQANAIBwtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFBlqaAgABqLQAARw3DAiABQQlGDQEgAUEBaiEBIBxBAWoiHCACRw0ACyAAICQ2AgAM1AILIABBADYCACAAQQI6ACwgJiAja0EKaiEBDL0CCwJAIAEiHCACRw0AQTwhHgzTAgsCQAJAIBwtAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZJ/ag4HAMMCwwLDAsMCwwIBwwILIBxBAWohAUEyIR4MwwILIBxBAWohAUEzIR4MwgILQT0hHiABIiYgAkYN0QIgAiAmayAAKAIAIiNqISQgJiEcICMhAQNAIBwtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFBoKaAgABqLQAARw3AAiABQQFGDbQCIAFBAWohASAcQQFqIhwgAkcNAAsgACAkNgIADNECC0E+IR4gASImIAJGDdACIAIgJmsgACgCACIjaiEkICYhHCAjIQECQANAIBwtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFBoqaAgABqLQAARw3AAiABQQ5GDQEgAUEBaiEBIBxBAWoiHCACRw0ACyAAICQ2AgAM0QILIABBADYCACAAQQE6ACwgJiAja0EPaiEBDLoCC0E/IR4gASImIAJGDc8CIAIgJmsgACgCACIjaiEkICYhHCAjIQECQANAIBwtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFBwKaAgABqLQAARw2/AiABQQ9GDQEgAUEBaiEBIBxBAWoiHCACRw0ACyAAICQ2AgAM0AILIABBADYCACAAQQM6ACwgJiAja0EQaiEBDLkCC0HAACEeIAEiJiACRg3OAiACICZrIAAoAgAiI2ohJCAmIRwgIyEBAkADQCAcLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQdCmgIAAai0AAEcNvgIgAUEFRg0BIAFBAWohASAcQQFqIhwgAkcNAAsgACAkNgIADM8CCyAAQQA2AgAgAEEEOgAsICYgI2tBBmohAQy4AgsCQCABIhwgAkcNAEHBACEeDM4CCwJAAkACQAJAIBwtAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAMACwALAAsACwALAAsACwALAAsACwALAAgHAAsACwAICA8ACCyAcQQFqIQFBNSEeDMACCyAcQQFqIQFBNiEeDL8CCyAcQQFqIQFBNyEeDL4CCyAcQQFqIQFBOCEeDL0CCwJAIAEiASACRg0AIABBi4CAgAA2AgggACABNgIEIAEhAUE5IR4MvQILQcIAIR4MzAILIAEiASACRw2vAUHEACEeDMsCC0HFACEeIAEiJiACRg3KAiACICZrIAAoAgAiI2ohJCAmISIgIyEBAkADQCAiLQAAIAFB1qaAgABqLQAARw20ASABQQFGDQEgAUEBaiEBICJBAWoiIiACRw0ACyAAICQ2AgAMywILIABBADYCACAmICNrQQJqIQEMrwELAkAgASIBIAJHDQBBxwAhHgzKAgsgAS0AAEEKRw2zASABQQFqIQEMrwELAkAgASIBIAJHDQBByAAhHgzJAgsCQAJAIAEtAABBdmoOBAG0AbQBALQBCyABQQFqIQFBPSEeDLkCCyABQQFqIQEMrgELAkAgASIBIAJHDQBByQAhHgzIAgtBACEeAkACQAJAAkACQAJAAkACQCABLQAAQVBqDgq7AboBAAECAwQFBge8AQtBAiEeDLoBC0EDIR4MuQELQQQhHgy4AQtBBSEeDLcBC0EGIR4MtgELQQchHgy1AQtBCCEeDLQBC0EJIR4MswELAkAgASIBIAJHDQBBygAhHgzHAgsgAS0AAEEuRw20ASABQQFqIQEMgAILAkAgASIBIAJHDQBBywAhHgzGAgtBACEeAkACQAJAAkACQAJAAkACQCABLQAAQVBqDgq9AbwBAAECAwQFBge+AQtBAiEeDLwBC0EDIR4MuwELQQQhHgy6AQtBBSEeDLkBC0EGIR4MuAELQQchHgy3AQtBCCEeDLYBC0EJIR4MtQELQcwAIR4gASImIAJGDcQCIAIgJmsgACgCACIjaiEkICYhASAjISIDQCABLQAAICJB4qaAgABqLQAARw24ASAiQQNGDbcBICJBAWohIiABQQFqIgEgAkcNAAsgACAkNgIADMQCC0HNACEeIAEiJiACRg3DAiACICZrIAAoAgAiI2ohJCAmIQEgIyEiA0AgAS0AACAiQeamgIAAai0AAEcNtwEgIkECRg25ASAiQQFqISIgAUEBaiIBIAJHDQALIAAgJDYCAAzDAgtBzgAhHiABIiYgAkYNwgIgAiAmayAAKAIAIiNqISQgJiEBICMhIgNAIAEtAAAgIkHppoCAAGotAABHDbYBICJBA0YNuQEgIkEBaiEiIAFBAWoiASACRw0ACyAAICQ2AgAMwgILA0ACQCABLQAAIh5BIEYNAAJAAkACQCAeQbh/ag4LAAG6AboBugG6AboBugG6AboBAroBCyABQQFqIQFBwgAhHgy1AgsgAUEBaiEBQcMAIR4MtAILIAFBAWohAUHEACEeDLMCCyABQQFqIgEgAkcNAAtBzwAhHgzBAgsCQCABIgEgAkYNACAAIAFBAWoiASACEKWAgIAAGiABIQFBByEeDLECC0HQACEeDMACCwNAAkAgAS0AAEHwpoCAAGotAAAiHkEBRg0AIB5BfmoOA7kBugG7AbwBCyABQQFqIgEgAkcNAAtB0QAhHgy/AgsCQCABIgEgAkYNACABQQFqIQEMAwtB0gAhHgy+AgsDQAJAIAEtAABB8KiAgABqLQAAIh5BAUYNAAJAIB5BfmoOBLwBvQG+AQC/AQsgASEBQcYAIR4MrwILIAFBAWoiASACRw0AC0HTACEeDL0CCwJAIAEiASACRw0AQdQAIR4MvQILAkAgAS0AACIeQXZqDhqkAb8BvwGmAb8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/AbQBvwG/AQC9AQsgAUEBaiEBC0EGIR4MqwILA0ACQCABLQAAQfCqgIAAai0AAEEBRg0AIAEhAQz6AQsgAUEBaiIBIAJHDQALQdUAIR4MugILAkAgASIBIAJGDQAgAUEBaiEBDAMLQdYAIR4MuQILAkAgASIBIAJHDQBB1wAhHgy5AgsgAUEBaiEBDAELAkAgASIBIAJHDQBB2AAhHgy4AgsgAUEBaiEBC0EEIR4MpgILAkAgASIiIAJHDQBB2QAhHgy2AgsgIiEBAkACQAJAICItAABB8KyAgABqLQAAQX9qDge+Ab8BwAEA+AEBAsEBCyAiQQFqIQEMCgsgIkEBaiEBDLcBC0EAIR4gAEEANgIcIABB8Y6AgAA2AhAgAEEHNgIMIAAgIkEBajYCFAy1AgsCQANAAkAgAS0AAEHwrICAAGotAAAiHkEERg0AAkACQCAeQX9qDge8Ab0BvgHDAQAEAcMBCyABIQFByQAhHgyoAgsgAUEBaiEBQcsAIR4MpwILIAFBAWoiASACRw0AC0HaACEeDLUCCyABQQFqIQEMtQELAkAgASIiIAJHDQBB2wAhHgy0AgsgIi0AAEEvRw2+ASAiQQFqIQEMBgsCQCABIiIgAkcNAEHcACEeDLMCCwJAICItAAAiAUEvRw0AICJBAWohAUHMACEeDKMCCyABQXZqIgFBFksNvQFBASABdEGJgIACcUUNvQEMkwILAkAgASIBIAJGDQAgAUEBaiEBQc0AIR4MogILQd0AIR4MsQILAkAgASIiIAJHDQBB3wAhHgyxAgsgIiEBAkAgIi0AAEHwsICAAGotAABBf2oOA5IC8AEAvgELQdAAIR4MoAILAkAgASIiIAJGDQADQAJAICItAABB8K6AgABqLQAAIgFBA0YNAAJAIAFBf2oOApQCAL8BCyAiIQFBzgAhHgyiAgsgIkEBaiIiIAJHDQALQd4AIR4MsAILQd4AIR4MrwILAkAgASIBIAJGDQAgAEGMgICAADYCCCAAIAE2AgQgASEBQc8AIR4MnwILQeAAIR4MrgILAkAgASIBIAJHDQBB4QAhHgyuAgsgAEGMgICAADYCCCAAIAE2AgQgASEBC0EDIR4MnAILA0AgAS0AAEEgRw2MAiABQQFqIgEgAkcNAAtB4gAhHgyrAgsCQCABIgEgAkcNAEHjACEeDKsCCyABLQAAQSBHDbgBIAFBAWohAQzUAQsCQCABIgggAkcNAEHkACEeDKoCCyAILQAAQcwARw27ASAIQQFqIQFBEyEeDLkBC0HlACEeIAEiIiACRg2oAiACICJrIAAoAgAiJmohIyAiIQggJiEBA0AgCC0AACABQfCygIAAai0AAEcNugEgAUEFRg24ASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIzYCAAyoAgsCQCABIgggAkcNAEHmACEeDKgCCwJAAkAgCC0AAEG9f2oODAC7AbsBuwG7AbsBuwG7AbsBuwG7AQG7AQsgCEEBaiEBQdQAIR4MmAILIAhBAWohAUHVACEeDJcCC0HnACEeIAEiIiACRg2mAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFB7bOAgABqLQAARw25ASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMpwILIABBADYCACAiICZrQQNqIQFBECEeDLYBC0HoACEeIAEiIiACRg2lAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFB9rKAgABqLQAARw24ASABQQVGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMpgILIABBADYCACAiICZrQQZqIQFBFiEeDLUBC0HpACEeIAEiIiACRg2kAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFB/LKAgABqLQAARw23ASABQQNGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMpQILIABBADYCACAiICZrQQRqIQFBBSEeDLQBCwJAIAEiCCACRw0AQeoAIR4MpAILIAgtAABB2QBHDbUBIAhBAWohAUEIIR4MswELAkAgASIIIAJHDQBB6wAhHgyjAgsCQAJAIAgtAABBsn9qDgMAtgEBtgELIAhBAWohAUHZACEeDJMCCyAIQQFqIQFB2gAhHgySAgsCQCABIgggAkcNAEHsACEeDKICCwJAAkAgCC0AAEG4f2oOCAC1AbUBtQG1AbUBtQEBtQELIAhBAWohAUHYACEeDJICCyAIQQFqIQFB2wAhHgyRAgtB7QAhHiABIiIgAkYNoAIgAiAiayAAKAIAIiZqISMgIiEIICYhAQJAA0AgCC0AACABQYCzgIAAai0AAEcNswEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADKECC0EAIR4gAEEANgIAICIgJmtBA2ohAQywAQtB7gAhHiABIiIgAkYNnwIgAiAiayAAKAIAIiZqISMgIiEIICYhAQJAA0AgCC0AACABQYOzgIAAai0AAEcNsgEgAUEERg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADKACCyAAQQA2AgAgIiAma0EFaiEBQSMhHgyvAQsCQCABIgggAkcNAEHvACEeDJ8CCwJAAkAgCC0AAEG0f2oOCACyAbIBsgGyAbIBsgEBsgELIAhBAWohAUHdACEeDI8CCyAIQQFqIQFB3gAhHgyOAgsCQCABIgggAkcNAEHwACEeDJ4CCyAILQAAQcUARw2vASAIQQFqIQEM3gELQfEAIR4gASIiIAJGDZwCIAIgImsgACgCACImaiEjICIhCCAmIQECQANAIAgtAAAgAUGIs4CAAGotAABHDa8BIAFBA0YNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIzYCAAydAgsgAEEANgIAICIgJmtBBGohAUEtIR4MrAELQfIAIR4gASIiIAJGDZsCIAIgImsgACgCACImaiEjICIhCCAmIQECQANAIAgtAAAgAUHQs4CAAGotAABHDa4BIAFBCEYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIzYCAAycAgsgAEEANgIAICIgJmtBCWohAUEpIR4MqwELAkAgASIBIAJHDQBB8wAhHgybAgtBASEeIAEtAABB3wBHDaoBIAFBAWohAQzcAQtB9AAhHiABIiIgAkYNmQIgAiAiayAAKAIAIiZqISMgIiEIICYhAQNAIAgtAAAgAUGMs4CAAGotAABHDasBIAFBAUYN9wEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMmQILAkAgASIeIAJHDQBB9QAhHgyZAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQY6zgIAAai0AAEcNqwEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQfUAIR4MmQILIABBADYCACAeICJrQQNqIQFBAiEeDKgBCwJAIAEiHiACRw0AQfYAIR4MmAILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUHws4CAAGotAABHDaoBIAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH2ACEeDJgCCyAAQQA2AgAgHiAia0ECaiEBQR8hHgynAQsCQCABIh4gAkcNAEH3ACEeDJcCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFB8rOAgABqLQAARw2pASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB9wAhHgyXAgsgAEEANgIAIB4gImtBAmohAUEJIR4MpgELAkAgASIIIAJHDQBB+AAhHgyWAgsCQAJAIAgtAABBt39qDgcAqQGpAakBqQGpAQGpAQsgCEEBaiEBQeYAIR4MhgILIAhBAWohAUHnACEeDIUCCwJAIAEiHiACRw0AQfkAIR4MlQILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGRs4CAAGotAABHDacBIAFBBUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH5ACEeDJUCCyAAQQA2AgAgHiAia0EGaiEBQRghHgykAQsCQCABIh4gAkcNAEH6ACEeDJQCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBl7OAgABqLQAARw2mASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB+gAhHgyUAgsgAEEANgIAIB4gImtBA2ohAUEXIR4MowELAkAgASIeIAJHDQBB+wAhHgyTAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQZqzgIAAai0AAEcNpQEgAUEGRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQfsAIR4MkwILIABBADYCACAeICJrQQdqIQFBFSEeDKIBCwJAIAEiHiACRw0AQfwAIR4MkgILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGhs4CAAGotAABHDaQBIAFBBUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH8ACEeDJICCyAAQQA2AgAgHiAia0EGaiEBQR4hHgyhAQsCQCABIgggAkcNAEH9ACEeDJECCyAILQAAQcwARw2iASAIQQFqIQFBCiEeDKABCwJAIAEiCCACRw0AQf4AIR4MkAILAkACQCAILQAAQb9/ag4PAKMBowGjAaMBowGjAaMBowGjAaMBowGjAaMBAaMBCyAIQQFqIQFB7AAhHgyAAgsgCEEBaiEBQe0AIR4M/wELAkAgASIIIAJHDQBB/wAhHgyPAgsCQAJAIAgtAABBv39qDgMAogEBogELIAhBAWohAUHrACEeDP8BCyAIQQFqIQFB7gAhHgz+AQsCQCABIh4gAkcNAEGAASEeDI4CCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBp7OAgABqLQAARw2gASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBBgAEhHgyOAgsgAEEANgIAIB4gImtBAmohAUELIR4MnQELAkAgASIIIAJHDQBBgQEhHgyNAgsCQAJAAkACQCAILQAAQVNqDiMAogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAQGiAaIBogGiAaIBAqIBogGiAQOiAQsgCEEBaiEBQekAIR4M/wELIAhBAWohAUHqACEeDP4BCyAIQQFqIQFB7wAhHgz9AQsgCEEBaiEBQfAAIR4M/AELAkAgASIeIAJHDQBBggEhHgyMAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQamzgIAAai0AAEcNngEgAUEERg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYIBIR4MjAILIABBADYCACAeICJrQQVqIQFBGSEeDJsBCwJAIAEiIiACRw0AQYMBIR4MiwILIAIgImsgACgCACImaiEeICIhCCAmIQECQANAIAgtAAAgAUGus4CAAGotAABHDZ0BIAFBBUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgHjYCAEGDASEeDIsCCyAAQQA2AgBBBiEeICIgJmtBBmohAQyaAQsCQCABIh4gAkcNAEGEASEeDIoCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBtLOAgABqLQAARw2cASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBBhAEhHgyKAgsgAEEANgIAIB4gImtBAmohAUEcIR4MmQELAkAgASIeIAJHDQBBhQEhHgyJAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQbazgIAAai0AAEcNmwEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYUBIR4MiQILIABBADYCACAeICJrQQJqIQFBJyEeDJgBCwJAIAEiCCACRw0AQYYBIR4MiAILAkACQCAILQAAQax/ag4CAAGbAQsgCEEBaiEBQfQAIR4M+AELIAhBAWohAUH1ACEeDPcBCwJAIAEiHiACRw0AQYcBIR4MhwILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUG4s4CAAGotAABHDZkBIAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEGHASEeDIcCCyAAQQA2AgAgHiAia0ECaiEBQSYhHgyWAQsCQCABIh4gAkcNAEGIASEeDIYCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBurOAgABqLQAARw2YASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBBiAEhHgyGAgsgAEEANgIAIB4gImtBAmohAUEDIR4MlQELAkAgASIeIAJHDQBBiQEhHgyFAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQe2zgIAAai0AAEcNlwEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYkBIR4MhQILIABBADYCACAeICJrQQNqIQFBDCEeDJQBCwJAIAEiHiACRw0AQYoBIR4MhAILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUG8s4CAAGotAABHDZYBIAFBA0YNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEGKASEeDIQCCyAAQQA2AgAgHiAia0EEaiEBQQ0hHgyTAQsCQCABIgggAkcNAEGLASEeDIMCCwJAAkAgCC0AAEG6f2oOCwCWAZYBlgGWAZYBlgGWAZYBlgEBlgELIAhBAWohAUH5ACEeDPMBCyAIQQFqIQFB+gAhHgzyAQsCQCABIgggAkcNAEGMASEeDIICCyAILQAAQdAARw2TASAIQQFqIQEMxAELAkAgASIIIAJHDQBBjQEhHgyBAgsCQAJAIAgtAABBt39qDgcBlAGUAZQBlAGUAQCUAQsgCEEBaiEBQfwAIR4M8QELIAhBAWohAUEiIR4MkAELAkAgASIeIAJHDQBBjgEhHgyAAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQcCzgIAAai0AAEcNkgEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQY4BIR4MgAILIABBADYCACAeICJrQQJqIQFBHSEeDI8BCwJAIAEiCCACRw0AQY8BIR4M/wELAkACQCAILQAAQa5/ag4DAJIBAZIBCyAIQQFqIQFB/gAhHgzvAQsgCEEBaiEBQQQhHgyOAQsCQCABIgggAkcNAEGQASEeDP4BCwJAAkACQAJAAkAgCC0AAEG/f2oOFQCUAZQBlAGUAZQBlAGUAZQBlAGUAQGUAZQBApQBlAEDlAGUAQSUAQsgCEEBaiEBQfYAIR4M8QELIAhBAWohAUH3ACEeDPABCyAIQQFqIQFB+AAhHgzvAQsgCEEBaiEBQf0AIR4M7gELIAhBAWohAUH/ACEeDO0BCwJAIAQgAkcNAEGRASEeDP0BCyACIARrIAAoAgAiHmohIiAEIQggHiEBAkADQCAILQAAIAFB7bOAgABqLQAARw2PASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBkQEhHgz9AQsgAEEANgIAIAQgHmtBA2ohAUERIR4MjAELAkAgBSACRw0AQZIBIR4M/AELIAIgBWsgACgCACIeaiEiIAUhCCAeIQECQANAIAgtAAAgAUHCs4CAAGotAABHDY4BIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGSASEeDPwBCyAAQQA2AgAgBSAea0EDaiEBQSwhHgyLAQsCQCAGIAJHDQBBkwEhHgz7AQsgAiAGayAAKAIAIh5qISIgBiEIIB4hAQJAA0AgCC0AACABQcWzgIAAai0AAEcNjQEgAUEERg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQZMBIR4M+wELIABBADYCACAGIB5rQQVqIQFBKyEeDIoBCwJAIAcgAkcNAEGUASEeDPoBCyACIAdrIAAoAgAiHmohIiAHIQggHiEBAkADQCAILQAAIAFByrOAgABqLQAARw2MASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBlAEhHgz6AQsgAEEANgIAIAcgHmtBA2ohAUEUIR4MiQELAkAgCCACRw0AQZUBIR4M+QELAkACQAJAAkAgCC0AAEG+f2oODwABAo4BjgGOAY4BjgGOAY4BjgGOAY4BjgEDjgELIAhBAWohBEGBASEeDOsBCyAIQQFqIQVBggEhHgzqAQsgCEEBaiEGQYMBIR4M6QELIAhBAWohB0GEASEeDOgBCwJAIAggAkcNAEGWASEeDPgBCyAILQAAQcUARw2JASAIQQFqIQgMuwELAkAgCSACRw0AQZcBIR4M9wELIAIgCWsgACgCACIeaiEiIAkhCCAeIQECQANAIAgtAAAgAUHNs4CAAGotAABHDYkBIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGXASEeDPcBCyAAQQA2AgAgCSAea0EDaiEBQQ4hHgyGAQsCQCAIIAJHDQBBmAEhHgz2AQsgCC0AAEHQAEcNhwEgCEEBaiEBQSUhHgyFAQsCQCAKIAJHDQBBmQEhHgz1AQsgAiAKayAAKAIAIh5qISIgCiEIIB4hAQJAA0AgCC0AACABQdCzgIAAai0AAEcNhwEgAUEIRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQZkBIR4M9QELIABBADYCACAKIB5rQQlqIQFBKiEeDIQBCwJAIAggAkcNAEGaASEeDPQBCwJAAkAgCC0AAEGrf2oOCwCHAYcBhwGHAYcBhwGHAYcBhwEBhwELIAhBAWohCEGIASEeDOQBCyAIQQFqIQpBiQEhHgzjAQsCQCAIIAJHDQBBmwEhHgzzAQsCQAJAIAgtAABBv39qDhQAhgGGAYYBhgGGAYYBhgGGAYYBhgGGAYYBhgGGAYYBhgGGAYYBAYYBCyAIQQFqIQlBhwEhHgzjAQsgCEEBaiEIQYoBIR4M4gELAkAgCyACRw0AQZwBIR4M8gELIAIgC2sgACgCACIeaiEiIAshCCAeIQECQANAIAgtAAAgAUHZs4CAAGotAABHDYQBIAFBA0YNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGcASEeDPIBCyAAQQA2AgAgCyAea0EEaiEBQSEhHgyBAQsCQCAMIAJHDQBBnQEhHgzxAQsgAiAMayAAKAIAIh5qISIgDCEIIB4hAQJAA0AgCC0AACABQd2zgIAAai0AAEcNgwEgAUEGRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQZ0BIR4M8QELIABBADYCACAMIB5rQQdqIQFBGiEeDIABCwJAIAggAkcNAEGeASEeDPABCwJAAkACQCAILQAAQbt/ag4RAIQBhAGEAYQBhAGEAYQBhAGEAQGEAYQBhAGEAYQBAoQBCyAIQQFqIQhBiwEhHgzhAQsgCEEBaiELQYwBIR4M4AELIAhBAWohDEGNASEeDN8BCwJAIA0gAkcNAEGfASEeDO8BCyACIA1rIAAoAgAiHmohIiANIQggHiEBAkADQCAILQAAIAFB5LOAgABqLQAARw2BASABQQVGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBnwEhHgzvAQsgAEEANgIAIA0gHmtBBmohAUEoIR4MfgsCQCAOIAJHDQBBoAEhHgzuAQsgAiAOayAAKAIAIh5qISIgDiEIIB4hAQJAA0AgCC0AACABQeqzgIAAai0AAEcNgAEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQaABIR4M7gELIABBADYCACAOIB5rQQNqIQFBByEeDH0LAkAgCCACRw0AQaEBIR4M7QELAkACQCAILQAAQbt/ag4OAIABgAGAAYABgAGAAYABgAGAAYABgAGAAQGAAQsgCEEBaiENQY8BIR4M3QELIAhBAWohDkGQASEeDNwBCwJAIA8gAkcNAEGiASEeDOwBCyACIA9rIAAoAgAiHmohIiAPIQggHiEBAkADQCAILQAAIAFB7bOAgABqLQAARw1+IAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGiASEeDOwBCyAAQQA2AgAgDyAea0EDaiEBQRIhHgx7CwJAIBAgAkcNAEGjASEeDOsBCyACIBBrIAAoAgAiHmohIiAQIQggHiEBAkADQCAILQAAIAFB8LOAgABqLQAARw19IAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGjASEeDOsBCyAAQQA2AgAgECAea0ECaiEBQSAhHgx6CwJAIBEgAkcNAEGkASEeDOoBCyACIBFrIAAoAgAiHmohIiARIQggHiEBAkADQCAILQAAIAFB8rOAgABqLQAARw18IAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGkASEeDOoBCyAAQQA2AgAgESAea0ECaiEBQQ8hHgx5CwJAIAggAkcNAEGlASEeDOkBCwJAAkAgCC0AAEG3f2oOBwB8fHx8fAF8CyAIQQFqIRBBkwEhHgzZAQsgCEEBaiERQZQBIR4M2AELAkAgEiACRw0AQaYBIR4M6AELIAIgEmsgACgCACIeaiEiIBIhCCAeIQECQANAIAgtAAAgAUH0s4CAAGotAABHDXogAUEHRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQaYBIR4M6AELIABBADYCACASIB5rQQhqIQFBGyEeDHcLAkAgCCACRw0AQacBIR4M5wELAkACQAJAIAgtAABBvn9qDhIAe3t7e3t7e3t7AXt7e3t7ewJ7CyAIQQFqIQ9BkgEhHgzYAQsgCEEBaiEIQZUBIR4M1wELIAhBAWohEkGWASEeDNYBCwJAIAggAkcNAEGoASEeDOYBCyAILQAAQc4ARw13IAhBAWohCAyqAQsCQCAIIAJHDQBBqQEhHgzlAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAILQAAQb9/ag4VAAECA4YBBAUGhgGGAYYBBwgJCguGAQwNDg+GAQsgCEEBaiEBQdYAIR4M4wELIAhBAWohAUHXACEeDOIBCyAIQQFqIQFB3AAhHgzhAQsgCEEBaiEBQeAAIR4M4AELIAhBAWohAUHhACEeDN8BCyAIQQFqIQFB5AAhHgzeAQsgCEEBaiEBQeUAIR4M3QELIAhBAWohAUHoACEeDNwBCyAIQQFqIQFB8QAhHgzbAQsgCEEBaiEBQfIAIR4M2gELIAhBAWohAUHzACEeDNkBCyAIQQFqIQFBgAEhHgzYAQsgCEEBaiEIQYYBIR4M1wELIAhBAWohCEGOASEeDNYBCyAIQQFqIQhBkQEhHgzVAQsgCEEBaiEIQZgBIR4M1AELAkAgFCACRw0AQasBIR4M5AELIBRBAWohEwx3CwNAAkAgHi0AAEF2ag4EdwAAegALIB5BAWoiHiACRw0AC0GsASEeDOIBCwJAIBUgAkYNACAAQY2AgIAANgIIIAAgFTYCBCAVIQFBASEeDNIBC0GtASEeDOEBCwJAIBUgAkcNAEGuASEeDOEBCwJAAkAgFS0AAEF2ag4EAasBqwEAqwELIBVBAWohFAx4CyAVQQFqIRMMdAsgACATIAIQp4CAgAAaIBMhAQxFCwJAIBUgAkcNAEGvASEeDN8BCwJAAkAgFS0AAEF2ag4XAXl5AXl5eXl5eXl5eXl5eXl5eXl5eQB5CyAVQQFqIRULQZwBIR4MzgELAkAgFiACRw0AQbEBIR4M3gELIBYtAABBIEcNdyAAQQA7ATIgFkEBaiEBQaABIR4MzQELIAEhJgJAA0AgJiIVIAJGDQEgFS0AAEFQakH/AXEiHkEKTw2oAQJAIAAvATIiIkGZM0sNACAAICJBCmwiIjsBMiAeQf//A3MgIkH+/wNxSQ0AIBVBAWohJiAAICIgHmoiHjsBMiAeQf//A3FB6AdJDQELC0EAIR4gAEEANgIcIABBnYmAgAA2AhAgAEENNgIMIAAgFUEBajYCFAzdAQtBsAEhHgzcAQsCQCAXIAJHDQBBsgEhHgzcAQtBACEeAkACQAJAAkACQAJAAkACQCAXLQAAQVBqDgp/fgABAgMEBQYHgAELQQIhHgx+C0EDIR4MfQtBBCEeDHwLQQUhHgx7C0EGIR4MegtBByEeDHkLQQghHgx4C0EJIR4MdwsCQCAYIAJHDQBBswEhHgzbAQsgGC0AAEEuRw14IBhBAWohFwymAQsCQCAZIAJHDQBBtAEhHgzaAQtBACEeAkACQAJAAkACQAJAAkACQCAZLQAAQVBqDgqBAYABAAECAwQFBgeCAQtBAiEeDIABC0EDIR4MfwtBBCEeDH4LQQUhHgx9C0EGIR4MfAtBByEeDHsLQQghHgx6C0EJIR4MeQsCQCAIIAJHDQBBtQEhHgzZAQsgAiAIayAAKAIAIiJqISYgCCEZICIhHgNAIBktAAAgHkH8s4CAAGotAABHDXsgHkEERg20ASAeQQFqIR4gGUEBaiIZIAJHDQALIAAgJjYCAEG1ASEeDNgBCwJAIBogAkcNAEG2ASEeDNgBCyACIBprIAAoAgAiHmohIiAaIQggHiEBA0AgCC0AACABQYG0gIAAai0AAEcNeyABQQFGDbYBIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQbYBIR4M1wELAkAgGyACRw0AQbcBIR4M1wELIAIgG2sgACgCACIZaiEiIBshCCAZIR4DQCAILQAAIB5Bg7SAgABqLQAARw16IB5BAkYNfCAeQQFqIR4gCEEBaiIIIAJHDQALIAAgIjYCAEG3ASEeDNYBCwJAIAggAkcNAEG4ASEeDNYBCwJAAkAgCC0AAEG7f2oOEAB7e3t7e3t7e3t7e3t7ewF7CyAIQQFqIRpBpQEhHgzGAQsgCEEBaiEbQaYBIR4MxQELAkAgCCACRw0AQbkBIR4M1QELIAgtAABByABHDXggCEEBaiEIDKIBCwJAIAggAkcNAEG6ASEeDNQBCyAILQAAQcgARg2iASAAQQE6ACgMmQELA0ACQCAILQAAQXZqDgQAenoAegsgCEEBaiIIIAJHDQALQbwBIR4M0gELIABBADoALyAALQAtQQRxRQ3IAQsgAEEAOgAvIAEhAQx5CyAeQRVGDakBIABBADYCHCAAIAE2AhQgAEGrjICAADYCECAAQRI2AgxBACEeDM8BCwJAIAAgHiACEK2AgIAAIgENACAeIQEMxQELAkAgAUEVRw0AIABBAzYCHCAAIB42AhQgAEHWkoCAADYCECAAQRU2AgxBACEeDM8BCyAAQQA2AhwgACAeNgIUIABBq4yAgAA2AhAgAEESNgIMQQAhHgzOAQsgHkEVRg2lASAAQQA2AhwgACABNgIUIABBiIyAgAA2AhAgAEEUNgIMQQAhHgzNAQsgACgCBCEmIABBADYCBCAeIB+naiIjIQEgACAmIB4gIyAiGyIeEK6AgIAAIiJFDXogAEEHNgIcIAAgHjYCFCAAICI2AgxBACEeDMwBCyAAIAAvATBBgAFyOwEwIAEhAQwxCyAeQRVGDaEBIABBADYCHCAAIAE2AhQgAEHFi4CAADYCECAAQRM2AgxBACEeDMoBCyAAQQA2AhwgACABNgIUIABBi4uAgAA2AhAgAEECNgIMQQAhHgzJAQsgHkE7Rw0BIAFBAWohAQtBCCEeDLcBC0EAIR4gAEEANgIcIAAgATYCFCAAQaOQgIAANgIQIABBDDYCDAzGAQtCASEfCyAeQQFqIQECQCAAKQMgIiBC//////////8PVg0AIAAgIEIEhiAfhDcDICABIQEMdwsgAEEANgIcIAAgATYCFCAAQYmJgIAANgIQIABBDDYCDEEAIR4MxAELIABBADYCHCAAIB42AhQgAEGjkICAADYCECAAQQw2AgxBACEeDMMBCyAAKAIEISYgAEEANgIEIB4gH6dqIiMhASAAICYgHiAjICIbIh4QroCAgAAiIkUNbiAAQQU2AhwgACAeNgIUIAAgIjYCDEEAIR4MwgELIABBADYCHCAAIB42AhQgAEHdlICAADYCECAAQQ82AgxBACEeDMEBCyAAIB4gAhCtgICAACIBDQEgHiEBC0EPIR4MrwELAkAgAUEVRw0AIABBAjYCHCAAIB42AhQgAEHWkoCAADYCECAAQRU2AgxBACEeDL8BCyAAQQA2AhwgACAeNgIUIABBq4yAgAA2AhAgAEESNgIMQQAhHgy+AQsgAUEBaiEeAkAgAC8BMCIBQYABcUUNAAJAIAAgHiACELCAgIAAIgENACAeIQEMawsgAUEVRw2XASAAQQU2AhwgACAeNgIUIABBvpKAgAA2AhAgAEEVNgIMQQAhHgy+AQsCQCABQaAEcUGgBEcNACAALQAtQQJxDQAgAEEANgIcIAAgHjYCFCAAQeyPgIAANgIQIABBBDYCDEEAIR4MvgELIAAgHiACELGAgIAAGiAeIQECQAJAAkACQAJAIAAgHiACEKyAgIAADhYCAQAEBAQEBAQEBAQEBAQEBAQEBAQDBAsgAEEBOgAuCyAAIAAvATBBwAByOwEwIB4hAQtBHSEeDK8BCyAAQRU2AhwgACAeNgIUIABB4ZGAgAA2AhAgAEEVNgIMQQAhHgy+AQsgAEEANgIcIAAgHjYCFCAAQbGLgIAANgIQIABBETYCDEEAIR4MvQELIAAtAC1BAXFFDQFBqgEhHgysAQsCQCAcIAJGDQADQAJAIBwtAABBIEYNACAcIQEMqAELIBxBAWoiHCACRw0AC0EXIR4MvAELQRchHgy7AQsgACgCBCEBIABBADYCBCAAIAEgHBCogICAACIBRQ2QASAAQRg2AhwgACABNgIMIAAgHEEBajYCFEEAIR4MugELIABBGTYCHCAAIAE2AhQgACAeNgIMQQAhHgy5AQsgHiEBQQEhIgJAAkACQAJAAkACQAJAIAAtACxBfmoOBwYFBQMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEiDAELQQQhIgsgAEEBOgAsIAAgAC8BMCAicjsBMAsgHiEBC0EgIR4MqQELIABBADYCHCAAIB42AhQgAEGBj4CAADYCECAAQQs2AgxBACEeDLgBCyAeIQFBASEiAkACQAJAAkACQCAALQAsQXtqDgQCAAEDBQtBAiEiDAELQQQhIgsgAEEBOgAsIAAgAC8BMCAicjsBMAwBCyAAIAAvATBBCHI7ATALIB4hAQtBqwEhHgymAQsgACABIAIQq4CAgAAaDBsLAkAgASIeIAJGDQAgHiEBAkACQCAeLQAAQXZqDgQBamoAagsgHkEBaiEBC0EeIR4MpQELQcMAIR4MtAELIABBADYCHCAAIAE2AhQgAEGRkYCAADYCECAAQQM2AgxBACEeDLMBCwJAIAEtAABBDUcNACAAKAIEIR4gAEEANgIEAkAgACAeIAEQqoCAgAAiHg0AIAFBAWohAQxpCyAAQR42AhwgACAeNgIMIAAgAUEBajYCFEEAIR4MswELIAEhASAALQAtQQFxRQ2uAUGtASEeDKIBCwJAIAEiASACRw0AQR8hHgyyAQsCQAJAA0ACQCABLQAAQXZqDgQCAAADAAsgAUEBaiIBIAJHDQALQR8hHgyzAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKqAgIAAIh4NACABIQEMaAsgAEEeNgIcIAAgATYCFCAAIB42AgxBACEeDLIBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQqoCAgAAiHg0AIAFBAWohAQxnCyAAQR42AhwgACAeNgIMIAAgAUEBajYCFEEAIR4MsQELIB5BLEcNASABQQFqIR5BASEBAkACQAJAAkACQCAALQAsQXtqDgQDAQIEAAsgHiEBDAQLQQIhAQwBC0EEIQELIABBAToALCAAIAAvATAgAXI7ATAgHiEBDAELIAAgAC8BMEEIcjsBMCAeIQELQS4hHgyfAQsgAEEAOgAsIAEhAQtBKSEeDJ0BCyAAQQA2AgAgIyAka0EJaiEBQQUhHgyYAQsgAEEANgIAICMgJGtBBmohAUEHIR4MlwELIAAgAC8BMEEgcjsBMCABIQEMAgsgACgCBCEIIABBADYCBAJAIAAgCCABEKqAgIAAIggNACABIQEMnQELIABBKjYCHCAAIAE2AhQgACAINgIMQQAhHgypAQsgAEEIOgAsIAEhAQtBJSEeDJcBCwJAIAAtAChBAUYNACABIQEMBAsgAC0ALUEIcUUNeCABIQEMAwsgAC0AMEEgcQ15Qa4BIR4MlQELAkAgHSACRg0AAkADQAJAIB0tAABBUGoiAUH/AXFBCkkNACAdIQFBKiEeDJgBCyAAKQMgIh9CmbPmzJmz5swZVg0BIAAgH0IKfiIfNwMgIB8gAa0iIEJ/hUKAfoRWDQEgACAfICBC/wGDfDcDICAdQQFqIh0gAkcNAAtBLCEeDKYBCyAAKAIEIQggAEEANgIEIAAgCCAdQQFqIgEQqoCAgAAiCA16IAEhAQyZAQtBLCEeDKQBCwJAIAAvATAiAUEIcUUNACAALQAoQQFHDQAgAC0ALUEIcUUNdQsgACABQff7A3FBgARyOwEwIB0hAQtBLCEeDJIBCyAAIAAvATBBEHI7ATAMhwELIABBNjYCHCAAIAE2AgwgACAcQQFqNgIUQQAhHgygAQsgAS0AAEE6Rw0CIAAoAgQhHiAAQQA2AgQgACAeIAEQqICAgAAiHg0BIAFBAWohAQtBMSEeDI4BCyAAQTY2AhwgACAeNgIMIAAgAUEBajYCFEEAIR4MnQELIABBADYCHCAAIAE2AhQgAEGHjoCAADYCECAAQQo2AgxBACEeDJwBCyABQQFqIQELIABBgBI7ASogACABIAIQpYCAgAAaIAEhAQtBrAEhHgyJAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMUAsgAEHEADYCHCAAIAE2AhQgACAeNgIMQQAhHgyYAQsgAEEANgIcIAAgIjYCFCAAQeWYgIAANgIQIABBBzYCDCAAQQA2AgBBACEeDJcBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQxPCyAAQcUANgIcIAAgATYCFCAAIB42AgxBACEeDJYBC0EAIR4gAEEANgIcIAAgATYCFCAAQeuNgIAANgIQIABBCTYCDAyVAQtBASEeCyAAIB46ACsgAUEBaiEBIAAtAClBIkYNiwEMTAsgAEEANgIcIAAgATYCFCAAQaKNgIAANgIQIABBCTYCDEEAIR4MkgELIABBADYCHCAAIAE2AhQgAEHFioCAADYCECAAQQk2AgxBACEeDJEBC0EBIR4LIAAgHjoAKiABQQFqIQEMSgsgAEEANgIcIAAgATYCFCAAQbiNgIAANgIQIABBCTYCDEEAIR4MjgELIABBADYCACAmICNrQQRqIQECQCAALQApQSNPDQAgASEBDEoLIABBADYCHCAAIAE2AhQgAEGviYCAADYCECAAQQg2AgxBACEeDI0BCyAAQQA2AgALQQAhHiAAQQA2AhwgACABNgIUIABBuZuAgAA2AhAgAEEINgIMDIsBCyAAQQA2AgAgJiAja0EDaiEBAkAgAC0AKUEhRw0AIAEhAQxHCyAAQQA2AhwgACABNgIUIABB94mAgAA2AhAgAEEINgIMQQAhHgyKAQsgAEEANgIAICYgI2tBBGohAQJAIAAtACkiHkFdakELTw0AIAEhAQxGCwJAIB5BBksNAEEBIB50QcoAcUUNACABIQEMRgtBACEeIABBADYCHCAAIAE2AhQgAEHTiYCAADYCECAAQQg2AgwMiQELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDEYLIABB0AA2AhwgACABNgIUIAAgHjYCDEEAIR4MiAELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDD8LIABBxAA2AhwgACABNgIUIAAgHjYCDEEAIR4MhwELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDD8LIABBxQA2AhwgACABNgIUIAAgHjYCDEEAIR4MhgELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDEMLIABB0AA2AhwgACABNgIUIAAgHjYCDEEAIR4MhQELIABBADYCHCAAIAE2AhQgAEGiioCAADYCECAAQQc2AgxBACEeDIQBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw7CyAAQcQANgIcIAAgATYCFCAAIB42AgxBACEeDIMBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw7CyAAQcUANgIcIAAgATYCFCAAIB42AgxBACEeDIIBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw/CyAAQdAANgIcIAAgATYCFCAAIB42AgxBACEeDIEBCyAAQQA2AhwgACABNgIUIABBuIiAgAA2AhAgAEEHNgIMQQAhHgyAAQsgHkE/Rw0BIAFBAWohAQtBBSEeDG4LQQAhHiAAQQA2AhwgACABNgIUIABB04+AgAA2AhAgAEEHNgIMDH0LIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDDQLIABBxAA2AhwgACABNgIUIAAgHjYCDEEAIR4MfAsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMNAsgAEHFADYCHCAAIAE2AhQgACAeNgIMQQAhHgx7CyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw4CyAAQdAANgIcIAAgATYCFCAAIB42AgxBACEeDHoLIAAoAgQhASAAQQA2AgQCQCAAIAEgIhCkgICAACIBDQAgIiEBDDELIABBxAA2AhwgACAiNgIUIAAgATYCDEEAIR4MeQsgACgCBCEBIABBADYCBAJAIAAgASAiEKSAgIAAIgENACAiIQEMMQsgAEHFADYCHCAAICI2AhQgACABNgIMQQAhHgx4CyAAKAIEIQEgAEEANgIEAkAgACABICIQpICAgAAiAQ0AICIhAQw1CyAAQdAANgIcIAAgIjYCFCAAIAE2AgxBACEeDHcLIABBADYCHCAAICI2AhQgAEHQjICAADYCECAAQQc2AgxBACEeDHYLIABBADYCHCAAIAE2AhQgAEHQjICAADYCECAAQQc2AgxBACEeDHULQQAhHiAAQQA2AhwgACAiNgIUIABBv5SAgAA2AhAgAEEHNgIMDHQLIABBADYCHCAAICI2AhQgAEG/lICAADYCECAAQQc2AgxBACEeDHMLIABBADYCHCAAICI2AhQgAEHUjoCAADYCECAAQQc2AgxBACEeDHILIABBADYCHCAAIAE2AhQgAEHBk4CAADYCECAAQQY2AgxBACEeDHELIABBADYCACAiICZrQQZqIQFBJCEeCyAAIB46ACkgASEBDE4LIABBADYCAAtBACEeIABBADYCHCAAIAg2AhQgAEGklICAADYCECAAQQY2AgwMbQsgACgCBCETIABBADYCBCAAIBMgHhCmgICAACITDQEgHkEBaiETC0GdASEeDFsLIABBqgE2AhwgACATNgIMIAAgHkEBajYCFEEAIR4MagsgACgCBCEUIABBADYCBCAAIBQgHhCmgICAACIUDQEgHkEBaiEUC0GaASEeDFgLIABBqwE2AhwgACAUNgIMIAAgHkEBajYCFEEAIR4MZwsgAEEANgIcIAAgFTYCFCAAQfOKgIAANgIQIABBDTYCDEEAIR4MZgsgAEEANgIcIAAgFjYCFCAAQc6NgIAANgIQIABBCTYCDEEAIR4MZQtBASEeCyAAIB46ACsgF0EBaiEWDC4LIABBADYCHCAAIBc2AhQgAEGijYCAADYCECAAQQk2AgxBACEeDGILIABBADYCHCAAIBg2AhQgAEHFioCAADYCECAAQQk2AgxBACEeDGELQQEhHgsgACAeOgAqIBlBAWohGAwsCyAAQQA2AhwgACAZNgIUIABBuI2AgAA2AhAgAEEJNgIMQQAhHgxeCyAAQQA2AhwgACAZNgIUIABBuZuAgAA2AhAgAEEINgIMIABBADYCAEEAIR4MXQsgAEEANgIAC0EAIR4gAEEANgIcIAAgCDYCFCAAQYuUgIAANgIQIABBCDYCDAxbCyAAQQI6ACggAEEANgIAIBsgGWtBA2ohGQw2CyAAQQI6AC8gACAIIAIQo4CAgAAiHg0BQa8BIR4MSQsgAC0AKEF/ag4CHiAfCyAeQRVHDScgAEG7ATYCHCAAIAg2AhQgAEGnkoCAADYCECAAQRU2AgxBACEeDFcLQQAhHgxGC0ECIR4MRQtBDiEeDEQLQRAhHgxDC0EcIR4MQgtBFCEeDEELQRYhHgxAC0EXIR4MPwtBGSEeDD4LQRohHgw9C0E6IR4MPAtBIyEeDDsLQSQhHgw6C0EwIR4MOQtBOyEeDDgLQTwhHgw3C0E+IR4MNgtBPyEeDDULQcAAIR4MNAtBwQAhHgwzC0HFACEeDDILQccAIR4MMQtByAAhHgwwC0HKACEeDC8LQd8AIR4MLgtB4gAhHgwtC0H7ACEeDCwLQYUBIR4MKwtBlwEhHgwqC0GZASEeDCkLQakBIR4MKAtBpAEhHgwnC0GbASEeDCYLQZ4BIR4MJQtBnwEhHgwkC0GhASEeDCMLQaIBIR4MIgtBpwEhHgwhC0GoASEeDCALIABBADYCHCAAIAg2AhQgAEHmi4CAADYCECAAQRA2AgxBACEeDC8LIABBADYCBCAAIB0gHRCqgICAACIBRQ0BIABBLTYCHCAAIAE2AgwgACAdQQFqNgIUQQAhHgwuCyAAKAIEIQggAEEANgIEAkAgACAIIAEQqoCAgAAiCEUNACAAQS42AhwgACAINgIMIAAgAUEBajYCFEEAIR4MLgsgAUEBaiEBDB4LIB1BAWohAQweCyAAQQA2AhwgACAdNgIUIABBuo+AgAA2AhAgAEEENgIMQQAhHgwrCyAAQSk2AhwgACABNgIUIAAgCDYCDEEAIR4MKgsgHEEBaiEBDB4LIABBCjYCHCAAIAE2AhQgAEGRkoCAADYCECAAQRU2AgxBACEeDCgLIABBEDYCHCAAIAE2AhQgAEG+koCAADYCECAAQRU2AgxBACEeDCcLIABBADYCHCAAIB42AhQgAEGIjICAADYCECAAQRQ2AgxBACEeDCYLIABBBDYCHCAAIAE2AhQgAEHWkoCAADYCECAAQRU2AgxBACEeDCULIABBADYCACAIICJrQQVqIRkLQaMBIR4MEwsgAEEANgIAICIgJmtBAmohAUHjACEeDBILIABBADYCACAAQYEEOwEoIBogHmtBAmohAQtB0wAhHgwQCyABIQECQCAALQApQQVHDQBB0gAhHgwQC0HRACEeDA8LQQAhHiAAQQA2AhwgAEG6joCAADYCECAAQQc2AgwgACAiQQFqNgIUDB4LIABBADYCACAmICNrQQJqIQFBNCEeDA0LIAEhAQtBLSEeDAsLAkAgASIdIAJGDQADQAJAIB0tAABBgKKAgABqLQAAIgFBAUYNACABQQJHDQMgHUEBaiEBDAQLIB1BAWoiHSACRw0AC0ExIR4MGwtBMSEeDBoLIABBADoALCAdIQEMAQtBDCEeDAgLQS8hHgwHCyABQQFqIQFBIiEeDAYLQR8hHgwFCyAAQQA2AgAgIyAka0EEaiEBQQYhHgsgACAeOgAsIAEhAUENIR4MAwsgAEEANgIAICYgI2tBB2ohAUELIR4MAgsgAEEANgIACyAAQQA6ACwgHCEBQQkhHgwACwtBACEeIABBADYCHCAAIAE2AhQgAEG4kYCAADYCECAAQQ82AgwMDgtBACEeIABBADYCHCAAIAE2AhQgAEG4kYCAADYCECAAQQ82AgwMDQtBACEeIABBADYCHCAAIAE2AhQgAEGWj4CAADYCECAAQQs2AgwMDAtBACEeIABBADYCHCAAIAE2AhQgAEHxiICAADYCECAAQQs2AgwMCwtBACEeIABBADYCHCAAIAE2AhQgAEGIjYCAADYCECAAQQo2AgwMCgsgAEECNgIcIAAgATYCFCAAQfCSgIAANgIQIABBFjYCDEEAIR4MCQtBASEeDAgLQcYAIR4gASIBIAJGDQcgA0EIaiAAIAEgAkHYpoCAAEEKELmAgIAAIAMoAgwhASADKAIIDgMBBwIACxC/gICAAAALIABBADYCHCAAQYmTgIAANgIQIABBFzYCDCAAIAFBAWo2AhRBACEeDAULIABBADYCHCAAIAE2AhQgAEGek4CAADYCECAAQQk2AgxBACEeDAQLAkAgASIBIAJHDQBBISEeDAQLAkAgAS0AAEEKRg0AIABBADYCHCAAIAE2AhQgAEHujICAADYCECAAQQo2AgxBACEeDAQLIAAoAgQhCCAAQQA2AgQgACAIIAEQqoCAgAAiCA0BIAFBAWohAQtBACEeIABBADYCHCAAIAE2AhQgAEHqkICAADYCECAAQRk2AgwMAgsgAEEgNgIcIAAgCDYCDCAAIAFBAWo2AhRBACEeDAELAkAgASIBIAJHDQBBFCEeDAELIABBiYCAgAA2AgggACABNgIEQRMhHgsgA0EQaiSAgICAACAeC68BAQJ/IAEoAgAhBgJAAkAgAiADRg0AIAQgBmohBCAGIANqIAJrIQcgAiAGQX9zIAVqIgZqIQUDQAJAIAItAAAgBC0AAEYNAEECIQQMAwsCQCAGDQBBACEEIAUhAgwDCyAGQX9qIQYgBEEBaiEEIAJBAWoiAiADRw0ACyAHIQYgAyECCyAAQQE2AgAgASAGNgIAIAAgAjYCBA8LIAFBADYCACAAIAQ2AgAgACACNgIECwoAIAAQu4CAgAALlTcBC38jgICAgABBEGsiASSAgICAAAJAQQAoAqC0gIAADQBBABC+gICAAEGAuISAAGsiAkHZAEkNAEEAIQMCQEEAKALgt4CAACIEDQBBAEJ/NwLst4CAAEEAQoCAhICAgMAANwLkt4CAAEEAIAFBCGpBcHFB2KrVqgVzIgQ2AuC3gIAAQQBBADYC9LeAgABBAEEANgLEt4CAAAtBACACNgLMt4CAAEEAQYC4hIAANgLIt4CAAEEAQYC4hIAANgKYtICAAEEAIAQ2Aqy0gIAAQQBBfzYCqLSAgAADQCADQcS0gIAAaiADQbi0gIAAaiIENgIAIAQgA0GwtICAAGoiBTYCACADQby0gIAAaiAFNgIAIANBzLSAgABqIANBwLSAgABqIgU2AgAgBSAENgIAIANB1LSAgABqIANByLSAgABqIgQ2AgAgBCAFNgIAIANB0LSAgABqIAQ2AgAgA0EgaiIDQYACRw0AC0GAuISAAEF4QYC4hIAAa0EPcUEAQYC4hIAAQQhqQQ9xGyIDaiIEQQRqIAIgA2tBSGoiA0EBcjYCAEEAQQAoAvC3gIAANgKktICAAEEAIAQ2AqC0gIAAQQAgAzYClLSAgAAgAkGAuISAAGpBTGpBODYCAAsCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEHsAUsNAAJAQQAoAoi0gIAAIgZBECAAQRNqQXBxIABBC0kbIgJBA3YiBHYiA0EDcUUNACADQQFxIARyQQFzIgVBA3QiAEG4tICAAGooAgAiBEEIaiEDAkACQCAEKAIIIgIgAEGwtICAAGoiAEcNAEEAIAZBfiAFd3E2Aoi0gIAADAELIAAgAjYCCCACIAA2AgwLIAQgBUEDdCIFQQNyNgIEIAQgBWpBBGoiBCAEKAIAQQFyNgIADAwLIAJBACgCkLSAgAAiB00NAQJAIANFDQACQAJAIAMgBHRBAiAEdCIDQQAgA2tycSIDQQAgA2txQX9qIgMgA0EMdkEQcSIDdiIEQQV2QQhxIgUgA3IgBCAFdiIDQQJ2QQRxIgRyIAMgBHYiA0EBdkECcSIEciADIAR2IgNBAXZBAXEiBHIgAyAEdmoiBUEDdCIAQbi0gIAAaigCACIEKAIIIgMgAEGwtICAAGoiAEcNAEEAIAZBfiAFd3EiBjYCiLSAgAAMAQsgACADNgIIIAMgADYCDAsgBEEIaiEDIAQgAkEDcjYCBCAEIAVBA3QiBWogBSACayIFNgIAIAQgAmoiACAFQQFyNgIEAkAgB0UNACAHQQN2IghBA3RBsLSAgABqIQJBACgCnLSAgAAhBAJAAkAgBkEBIAh0IghxDQBBACAGIAhyNgKItICAACACIQgMAQsgAigCCCEICyAIIAQ2AgwgAiAENgIIIAQgAjYCDCAEIAg2AggLQQAgADYCnLSAgABBACAFNgKQtICAAAwMC0EAKAKMtICAACIJRQ0BIAlBACAJa3FBf2oiAyADQQx2QRBxIgN2IgRBBXZBCHEiBSADciAEIAV2IgNBAnZBBHEiBHIgAyAEdiIDQQF2QQJxIgRyIAMgBHYiA0EBdkEBcSIEciADIAR2akECdEG4toCAAGooAgAiACgCBEF4cSACayEEIAAhBQJAA0ACQCAFKAIQIgMNACAFQRRqKAIAIgNFDQILIAMoAgRBeHEgAmsiBSAEIAUgBEkiBRshBCADIAAgBRshACADIQUMAAsLIAAoAhghCgJAIAAoAgwiCCAARg0AQQAoApi0gIAAIAAoAggiA0saIAggAzYCCCADIAg2AgwMCwsCQCAAQRRqIgUoAgAiAw0AIAAoAhAiA0UNAyAAQRBqIQULA0AgBSELIAMiCEEUaiIFKAIAIgMNACAIQRBqIQUgCCgCECIDDQALIAtBADYCAAwKC0F/IQIgAEG/f0sNACAAQRNqIgNBcHEhAkEAKAKMtICAACIHRQ0AQQAhCwJAIAJBgAJJDQBBHyELIAJB////B0sNACADQQh2IgMgA0GA/j9qQRB2QQhxIgN0IgQgBEGA4B9qQRB2QQRxIgR0IgUgBUGAgA9qQRB2QQJxIgV0QQ92IAMgBHIgBXJrIgNBAXQgAiADQRVqdkEBcXJBHGohCwtBACACayEEAkACQAJAAkAgC0ECdEG4toCAAGooAgAiBQ0AQQAhA0EAIQgMAQtBACEDIAJBAEEZIAtBAXZrIAtBH0YbdCEAQQAhCANAAkAgBSgCBEF4cSACayIGIARPDQAgBiEEIAUhCCAGDQBBACEEIAUhCCAFIQMMAwsgAyAFQRRqKAIAIgYgBiAFIABBHXZBBHFqQRBqKAIAIgVGGyADIAYbIQMgAEEBdCEAIAUNAAsLAkAgAyAIcg0AQQAhCEECIAt0IgNBACADa3IgB3EiA0UNAyADQQAgA2txQX9qIgMgA0EMdkEQcSIDdiIFQQV2QQhxIgAgA3IgBSAAdiIDQQJ2QQRxIgVyIAMgBXYiA0EBdkECcSIFciADIAV2IgNBAXZBAXEiBXIgAyAFdmpBAnRBuLaAgABqKAIAIQMLIANFDQELA0AgAygCBEF4cSACayIGIARJIQACQCADKAIQIgUNACADQRRqKAIAIQULIAYgBCAAGyEEIAMgCCAAGyEIIAUhAyAFDQALCyAIRQ0AIARBACgCkLSAgAAgAmtPDQAgCCgCGCELAkAgCCgCDCIAIAhGDQBBACgCmLSAgAAgCCgCCCIDSxogACADNgIIIAMgADYCDAwJCwJAIAhBFGoiBSgCACIDDQAgCCgCECIDRQ0DIAhBEGohBQsDQCAFIQYgAyIAQRRqIgUoAgAiAw0AIABBEGohBSAAKAIQIgMNAAsgBkEANgIADAgLAkBBACgCkLSAgAAiAyACSQ0AQQAoApy0gIAAIQQCQAJAIAMgAmsiBUEQSQ0AIAQgAmoiACAFQQFyNgIEQQAgBTYCkLSAgABBACAANgKctICAACAEIANqIAU2AgAgBCACQQNyNgIEDAELIAQgA0EDcjYCBCADIARqQQRqIgMgAygCAEEBcjYCAEEAQQA2Apy0gIAAQQBBADYCkLSAgAALIARBCGohAwwKCwJAQQAoApS0gIAAIgAgAk0NAEEAKAKgtICAACIDIAJqIgQgACACayIFQQFyNgIEQQAgBTYClLSAgABBACAENgKgtICAACADIAJBA3I2AgQgA0EIaiEDDAoLAkACQEEAKALgt4CAAEUNAEEAKALot4CAACEEDAELQQBCfzcC7LeAgABBAEKAgISAgIDAADcC5LeAgABBACABQQxqQXBxQdiq1aoFczYC4LeAgABBAEEANgL0t4CAAEEAQQA2AsS3gIAAQYCABCEEC0EAIQMCQCAEIAJBxwBqIgdqIgZBACAEayILcSIIIAJLDQBBAEEwNgL4t4CAAAwKCwJAQQAoAsC3gIAAIgNFDQACQEEAKAK4t4CAACIEIAhqIgUgBE0NACAFIANNDQELQQAhA0EAQTA2Avi3gIAADAoLQQAtAMS3gIAAQQRxDQQCQAJAAkBBACgCoLSAgAAiBEUNAEHIt4CAACEDA0ACQCADKAIAIgUgBEsNACAFIAMoAgRqIARLDQMLIAMoAggiAw0ACwtBABC+gICAACIAQX9GDQUgCCEGAkBBACgC5LeAgAAiA0F/aiIEIABxRQ0AIAggAGsgBCAAakEAIANrcWohBgsgBiACTQ0FIAZB/v///wdLDQUCQEEAKALAt4CAACIDRQ0AQQAoAri3gIAAIgQgBmoiBSAETQ0GIAUgA0sNBgsgBhC+gICAACIDIABHDQEMBwsgBiAAayALcSIGQf7///8HSw0EIAYQvoCAgAAiACADKAIAIAMoAgRqRg0DIAAhAwsCQCADQX9GDQAgAkHIAGogBk0NAAJAIAcgBmtBACgC6LeAgAAiBGpBACAEa3EiBEH+////B00NACADIQAMBwsCQCAEEL6AgIAAQX9GDQAgBCAGaiEGIAMhAAwHC0EAIAZrEL6AgIAAGgwECyADIQAgA0F/Rw0FDAMLQQAhCAwHC0EAIQAMBQsgAEF/Rw0CC0EAQQAoAsS3gIAAQQRyNgLEt4CAAAsgCEH+////B0sNASAIEL6AgIAAIQBBABC+gICAACEDIABBf0YNASADQX9GDQEgACADTw0BIAMgAGsiBiACQThqTQ0BC0EAQQAoAri3gIAAIAZqIgM2Ari3gIAAAkAgA0EAKAK8t4CAAE0NAEEAIAM2Ary3gIAACwJAAkACQAJAQQAoAqC0gIAAIgRFDQBByLeAgAAhAwNAIAAgAygCACIFIAMoAgQiCGpGDQIgAygCCCIDDQAMAwsLAkACQEEAKAKYtICAACIDRQ0AIAAgA08NAQtBACAANgKYtICAAAtBACEDQQAgBjYCzLeAgABBACAANgLIt4CAAEEAQX82Aqi0gIAAQQBBACgC4LeAgAA2Aqy0gIAAQQBBADYC1LeAgAADQCADQcS0gIAAaiADQbi0gIAAaiIENgIAIAQgA0GwtICAAGoiBTYCACADQby0gIAAaiAFNgIAIANBzLSAgABqIANBwLSAgABqIgU2AgAgBSAENgIAIANB1LSAgABqIANByLSAgABqIgQ2AgAgBCAFNgIAIANB0LSAgABqIAQ2AgAgA0EgaiIDQYACRw0ACyAAQXggAGtBD3FBACAAQQhqQQ9xGyIDaiIEIAYgA2tBSGoiA0EBcjYCBEEAQQAoAvC3gIAANgKktICAAEEAIAQ2AqC0gIAAQQAgAzYClLSAgAAgBiAAakFMakE4NgIADAILIAMtAAxBCHENACAFIARLDQAgACAETQ0AIARBeCAEa0EPcUEAIARBCGpBD3EbIgVqIgBBACgClLSAgAAgBmoiCyAFayIFQQFyNgIEIAMgCCAGajYCBEEAQQAoAvC3gIAANgKktICAAEEAIAU2ApS0gIAAQQAgADYCoLSAgAAgCyAEakEEakE4NgIADAELAkAgAEEAKAKYtICAACILTw0AQQAgADYCmLSAgAAgACELCyAAIAZqIQhByLeAgAAhAwJAAkACQAJAAkACQAJAA0AgAygCACAIRg0BIAMoAggiAw0ADAILCyADLQAMQQhxRQ0BC0HIt4CAACEDA0ACQCADKAIAIgUgBEsNACAFIAMoAgRqIgUgBEsNAwsgAygCCCEDDAALCyADIAA2AgAgAyADKAIEIAZqNgIEIABBeCAAa0EPcUEAIABBCGpBD3EbaiIGIAJBA3I2AgQgCEF4IAhrQQ9xQQAgCEEIakEPcRtqIgggBiACaiICayEFAkAgBCAIRw0AQQAgAjYCoLSAgABBAEEAKAKUtICAACAFaiIDNgKUtICAACACIANBAXI2AgQMAwsCQEEAKAKctICAACAIRw0AQQAgAjYCnLSAgABBAEEAKAKQtICAACAFaiIDNgKQtICAACACIANBAXI2AgQgAiADaiADNgIADAMLAkAgCCgCBCIDQQNxQQFHDQAgA0F4cSEHAkACQCADQf8BSw0AIAgoAggiBCADQQN2IgtBA3RBsLSAgABqIgBGGgJAIAgoAgwiAyAERw0AQQBBACgCiLSAgABBfiALd3E2Aoi0gIAADAILIAMgAEYaIAMgBDYCCCAEIAM2AgwMAQsgCCgCGCEJAkACQCAIKAIMIgAgCEYNACALIAgoAggiA0saIAAgAzYCCCADIAA2AgwMAQsCQCAIQRRqIgMoAgAiBA0AIAhBEGoiAygCACIEDQBBACEADAELA0AgAyELIAQiAEEUaiIDKAIAIgQNACAAQRBqIQMgACgCECIEDQALIAtBADYCAAsgCUUNAAJAAkAgCCgCHCIEQQJ0Qbi2gIAAaiIDKAIAIAhHDQAgAyAANgIAIAANAUEAQQAoAoy0gIAAQX4gBHdxNgKMtICAAAwCCyAJQRBBFCAJKAIQIAhGG2ogADYCACAARQ0BCyAAIAk2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCCgCFCIDRQ0AIABBFGogAzYCACADIAA2AhgLIAcgBWohBSAIIAdqIQgLIAggCCgCBEF+cTYCBCACIAVqIAU2AgAgAiAFQQFyNgIEAkAgBUH/AUsNACAFQQN2IgRBA3RBsLSAgABqIQMCQAJAQQAoAoi0gIAAIgVBASAEdCIEcQ0AQQAgBSAEcjYCiLSAgAAgAyEEDAELIAMoAgghBAsgBCACNgIMIAMgAjYCCCACIAM2AgwgAiAENgIIDAMLQR8hAwJAIAVB////B0sNACAFQQh2IgMgA0GA/j9qQRB2QQhxIgN0IgQgBEGA4B9qQRB2QQRxIgR0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAMgBHIgAHJrIgNBAXQgBSADQRVqdkEBcXJBHGohAwsgAiADNgIcIAJCADcCECADQQJ0Qbi2gIAAaiEEAkBBACgCjLSAgAAiAEEBIAN0IghxDQAgBCACNgIAQQAgACAIcjYCjLSAgAAgAiAENgIYIAIgAjYCCCACIAI2AgwMAwsgBUEAQRkgA0EBdmsgA0EfRht0IQMgBCgCACEAA0AgACIEKAIEQXhxIAVGDQIgA0EddiEAIANBAXQhAyAEIABBBHFqQRBqIggoAgAiAA0ACyAIIAI2AgAgAiAENgIYIAIgAjYCDCACIAI2AggMAgsgAEF4IABrQQ9xQQAgAEEIakEPcRsiA2oiCyAGIANrQUhqIgNBAXI2AgQgCEFMakE4NgIAIAQgBUE3IAVrQQ9xQQAgBUFJakEPcRtqQUFqIgggCCAEQRBqSRsiCEEjNgIEQQBBACgC8LeAgAA2AqS0gIAAQQAgCzYCoLSAgABBACADNgKUtICAACAIQRBqQQApAtC3gIAANwIAIAhBACkCyLeAgAA3AghBACAIQQhqNgLQt4CAAEEAIAY2Asy3gIAAQQAgADYCyLeAgABBAEEANgLUt4CAACAIQSRqIQMDQCADQQc2AgAgBSADQQRqIgNLDQALIAggBEYNAyAIIAgoAgRBfnE2AgQgCCAIIARrIgY2AgAgBCAGQQFyNgIEAkAgBkH/AUsNACAGQQN2IgVBA3RBsLSAgABqIQMCQAJAQQAoAoi0gIAAIgBBASAFdCIFcQ0AQQAgACAFcjYCiLSAgAAgAyEFDAELIAMoAgghBQsgBSAENgIMIAMgBDYCCCAEIAM2AgwgBCAFNgIIDAQLQR8hAwJAIAZB////B0sNACAGQQh2IgMgA0GA/j9qQRB2QQhxIgN0IgUgBUGA4B9qQRB2QQRxIgV0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAMgBXIgAHJrIgNBAXQgBiADQRVqdkEBcXJBHGohAwsgBEIANwIQIARBHGogAzYCACADQQJ0Qbi2gIAAaiEFAkBBACgCjLSAgAAiAEEBIAN0IghxDQAgBSAENgIAQQAgACAIcjYCjLSAgAAgBEEYaiAFNgIAIAQgBDYCCCAEIAQ2AgwMBAsgBkEAQRkgA0EBdmsgA0EfRht0IQMgBSgCACEAA0AgACIFKAIEQXhxIAZGDQMgA0EddiEAIANBAXQhAyAFIABBBHFqQRBqIggoAgAiAA0ACyAIIAQ2AgAgBEEYaiAFNgIAIAQgBDYCDCAEIAQ2AggMAwsgBCgCCCIDIAI2AgwgBCACNgIIIAJBADYCGCACIAQ2AgwgAiADNgIICyAGQQhqIQMMBQsgBSgCCCIDIAQ2AgwgBSAENgIIIARBGGpBADYCACAEIAU2AgwgBCADNgIIC0EAKAKUtICAACIDIAJNDQBBACgCoLSAgAAiBCACaiIFIAMgAmsiA0EBcjYCBEEAIAM2ApS0gIAAQQAgBTYCoLSAgAAgBCACQQNyNgIEIARBCGohAwwDC0EAIQNBAEEwNgL4t4CAAAwCCwJAIAtFDQACQAJAIAggCCgCHCIFQQJ0Qbi2gIAAaiIDKAIARw0AIAMgADYCACAADQFBACAHQX4gBXdxIgc2Aoy0gIAADAILIAtBEEEUIAsoAhAgCEYbaiAANgIAIABFDQELIAAgCzYCGAJAIAgoAhAiA0UNACAAIAM2AhAgAyAANgIYCyAIQRRqKAIAIgNFDQAgAEEUaiADNgIAIAMgADYCGAsCQAJAIARBD0sNACAIIAQgAmoiA0EDcjYCBCADIAhqQQRqIgMgAygCAEEBcjYCAAwBCyAIIAJqIgAgBEEBcjYCBCAIIAJBA3I2AgQgACAEaiAENgIAAkAgBEH/AUsNACAEQQN2IgRBA3RBsLSAgABqIQMCQAJAQQAoAoi0gIAAIgVBASAEdCIEcQ0AQQAgBSAEcjYCiLSAgAAgAyEEDAELIAMoAgghBAsgBCAANgIMIAMgADYCCCAAIAM2AgwgACAENgIIDAELQR8hAwJAIARB////B0sNACAEQQh2IgMgA0GA/j9qQRB2QQhxIgN0IgUgBUGA4B9qQRB2QQRxIgV0IgIgAkGAgA9qQRB2QQJxIgJ0QQ92IAMgBXIgAnJrIgNBAXQgBCADQRVqdkEBcXJBHGohAwsgACADNgIcIABCADcCECADQQJ0Qbi2gIAAaiEFAkAgB0EBIAN0IgJxDQAgBSAANgIAQQAgByACcjYCjLSAgAAgACAFNgIYIAAgADYCCCAAIAA2AgwMAQsgBEEAQRkgA0EBdmsgA0EfRht0IQMgBSgCACECAkADQCACIgUoAgRBeHEgBEYNASADQR12IQIgA0EBdCEDIAUgAkEEcWpBEGoiBigCACICDQALIAYgADYCACAAIAU2AhggACAANgIMIAAgADYCCAwBCyAFKAIIIgMgADYCDCAFIAA2AgggAEEANgIYIAAgBTYCDCAAIAM2AggLIAhBCGohAwwBCwJAIApFDQACQAJAIAAgACgCHCIFQQJ0Qbi2gIAAaiIDKAIARw0AIAMgCDYCACAIDQFBACAJQX4gBXdxNgKMtICAAAwCCyAKQRBBFCAKKAIQIABGG2ogCDYCACAIRQ0BCyAIIAo2AhgCQCAAKAIQIgNFDQAgCCADNgIQIAMgCDYCGAsgAEEUaigCACIDRQ0AIAhBFGogAzYCACADIAg2AhgLAkACQCAEQQ9LDQAgACAEIAJqIgNBA3I2AgQgAyAAakEEaiIDIAMoAgBBAXI2AgAMAQsgACACaiIFIARBAXI2AgQgACACQQNyNgIEIAUgBGogBDYCAAJAIAdFDQAgB0EDdiIIQQN0QbC0gIAAaiECQQAoApy0gIAAIQMCQAJAQQEgCHQiCCAGcQ0AQQAgCCAGcjYCiLSAgAAgAiEIDAELIAIoAgghCAsgCCADNgIMIAIgAzYCCCADIAI2AgwgAyAINgIIC0EAIAU2Apy0gIAAQQAgBDYCkLSAgAALIABBCGohAwsgAUEQaiSAgICAACADCwoAIAAQvYCAgAAL8A0BB38CQCAARQ0AIABBeGoiASAAQXxqKAIAIgJBeHEiAGohAwJAIAJBAXENACACQQNxRQ0BIAEgASgCACICayIBQQAoApi0gIAAIgRJDQEgAiAAaiEAAkBBACgCnLSAgAAgAUYNAAJAIAJB/wFLDQAgASgCCCIEIAJBA3YiBUEDdEGwtICAAGoiBkYaAkAgASgCDCICIARHDQBBAEEAKAKItICAAEF+IAV3cTYCiLSAgAAMAwsgAiAGRhogAiAENgIIIAQgAjYCDAwCCyABKAIYIQcCQAJAIAEoAgwiBiABRg0AIAQgASgCCCICSxogBiACNgIIIAIgBjYCDAwBCwJAIAFBFGoiAigCACIEDQAgAUEQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0BAkACQCABKAIcIgRBAnRBuLaAgABqIgIoAgAgAUcNACACIAY2AgAgBg0BQQBBACgCjLSAgABBfiAEd3E2Aoy0gIAADAMLIAdBEEEUIAcoAhAgAUYbaiAGNgIAIAZFDQILIAYgBzYCGAJAIAEoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyABKAIUIgJFDQEgBkEUaiACNgIAIAIgBjYCGAwBCyADKAIEIgJBA3FBA0cNACADIAJBfnE2AgRBACAANgKQtICAACABIABqIAA2AgAgASAAQQFyNgIEDwsgAyABTQ0AIAMoAgQiAkEBcUUNAAJAAkAgAkECcQ0AAkBBACgCoLSAgAAgA0cNAEEAIAE2AqC0gIAAQQBBACgClLSAgAAgAGoiADYClLSAgAAgASAAQQFyNgIEIAFBACgCnLSAgABHDQNBAEEANgKQtICAAEEAQQA2Apy0gIAADwsCQEEAKAKctICAACADRw0AQQAgATYCnLSAgABBAEEAKAKQtICAACAAaiIANgKQtICAACABIABBAXI2AgQgASAAaiAANgIADwsgAkF4cSAAaiEAAkACQCACQf8BSw0AIAMoAggiBCACQQN2IgVBA3RBsLSAgABqIgZGGgJAIAMoAgwiAiAERw0AQQBBACgCiLSAgABBfiAFd3E2Aoi0gIAADAILIAIgBkYaIAIgBDYCCCAEIAI2AgwMAQsgAygCGCEHAkACQCADKAIMIgYgA0YNAEEAKAKYtICAACADKAIIIgJLGiAGIAI2AgggAiAGNgIMDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQACQAJAIAMoAhwiBEECdEG4toCAAGoiAigCACADRw0AIAIgBjYCACAGDQFBAEEAKAKMtICAAEF+IAR3cTYCjLSAgAAMAgsgB0EQQRQgBygCECADRhtqIAY2AgAgBkUNAQsgBiAHNgIYAkAgAygCECICRQ0AIAYgAjYCECACIAY2AhgLIAMoAhQiAkUNACAGQRRqIAI2AgAgAiAGNgIYCyABIABqIAA2AgAgASAAQQFyNgIEIAFBACgCnLSAgABHDQFBACAANgKQtICAAA8LIAMgAkF+cTYCBCABIABqIAA2AgAgASAAQQFyNgIECwJAIABB/wFLDQAgAEEDdiICQQN0QbC0gIAAaiEAAkACQEEAKAKItICAACIEQQEgAnQiAnENAEEAIAQgAnI2Aoi0gIAAIAAhAgwBCyAAKAIIIQILIAIgATYCDCAAIAE2AgggASAANgIMIAEgAjYCCA8LQR8hAgJAIABB////B0sNACAAQQh2IgIgAkGA/j9qQRB2QQhxIgJ0IgQgBEGA4B9qQRB2QQRxIgR0IgYgBkGAgA9qQRB2QQJxIgZ0QQ92IAIgBHIgBnJrIgJBAXQgACACQRVqdkEBcXJBHGohAgsgAUIANwIQIAFBHGogAjYCACACQQJ0Qbi2gIAAaiEEAkACQEEAKAKMtICAACIGQQEgAnQiA3ENACAEIAE2AgBBACAGIANyNgKMtICAACABQRhqIAQ2AgAgASABNgIIIAEgATYCDAwBCyAAQQBBGSACQQF2ayACQR9GG3QhAiAEKAIAIQYCQANAIAYiBCgCBEF4cSAARg0BIAJBHXYhBiACQQF0IQIgBCAGQQRxakEQaiIDKAIAIgYNAAsgAyABNgIAIAFBGGogBDYCACABIAE2AgwgASABNgIIDAELIAQoAggiACABNgIMIAQgATYCCCABQRhqQQA2AgAgASAENgIMIAEgADYCCAtBAEEAKAKotICAAEF/aiIBQX8gARs2Aqi0gIAACwtOAAJAIAANAD8AQRB0DwsCQCAAQf//A3ENACAAQX9MDQACQCAAQRB2QAAiAEF/Rw0AQQBBMDYC+LeAgABBfw8LIABBEHQPCxC/gICAAAALBAAAAAsLjiwBAEGACAuGLAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgcGFyYW1ldGVycwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABNS0FDVElWSVRZAENPUFkATk9USUZZAFBMQVkAUFVUAENIRUNLT1VUAFBPU1QAUkVQT1JUAEhQRV9JTlZBTElEX0NPTlNUQU5UAEdFVABIUEVfU1RSSUNUAFJFRElSRUNUAENPTk5FQ1QASFBFX0lOVkFMSURfU1RBVFVTAE9QVElPTlMAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASFBFX0lOVkFMSURfVVJMAE1LQ09MAEFDTABIUEVfSU5URVJOQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBQQVVTRQBQVVJHRQBNRVJHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAFBST1BGSU5EAFVOQklORABSRUJJTkQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABIUEVfUEFVU0VEAEhFQUQARXhwZWN0ZWQgSFRUUC8A3AsAAM8LAADTCgAAmQ0AABAMAABdCwAAXw0AALULAAC6CgAAcwsAAJwLAAD1CwAAcwwAAO8KAADcDAAARwwAAIcLAACPDAAAvQwAAC8LAACnDAAAqQ0AAAQNAAAXDQAAJgsAAIkNAADVDAAAzwoAALQNAACuCgAAoQoAAOcKAAACCwAAPQ0AAJAKAADsCwAAxQsAAIoMAAByDQAANAwAAEAMAADqCwAAhA0AAIINAAB7DQAAywsAALMKAACFCgAApQoAAP4MAAA+DAAAlQoAAE4NAABMDQAAOAwAAPgMAABDCwAA5QsAAOMLAAAtDQAA8QsAAEMNAAA0DQAATgsAAJwKAADyDAAAVAsAABgLAAAKCwAA3goAAFgNAAAuDAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8="; + } +}); + +// lib/llhttp/llhttp_simd.wasm.js +var require_llhttp_simd_wasm = __commonJS({ + "lib/llhttp/llhttp_simd.wasm.js"(exports2, module2) { + module2.exports = "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzk4AwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAYGAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAAMEBQFwAQ4OBQMBAAIGCAF/AUGAuAQLB/UEHwZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAJGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAKGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQA1DGxsaHR0cF9hbGxvYwAMBm1hbGxvYwA6C2xsaHR0cF9mcmVlAA0EZnJlZQA8D2xsaHR0cF9nZXRfdHlwZQAOFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAPFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAQEWxsaHR0cF9nZXRfbWV0aG9kABEWbGxodHRwX2dldF9zdGF0dXNfY29kZQASEmxsaHR0cF9nZXRfdXBncmFkZQATDGxsaHR0cF9yZXNldAAUDmxsaHR0cF9leGVjdXRlABUUbGxodHRwX3NldHRpbmdzX2luaXQAFg1sbGh0dHBfZmluaXNoABcMbGxodHRwX3BhdXNlABgNbGxodHRwX3Jlc3VtZQAZG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAaEGxsaHR0cF9nZXRfZXJybm8AGxdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAcF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uAB0UbGxodHRwX2dldF9lcnJvcl9wb3MAHhFsbGh0dHBfZXJybm9fbmFtZQAfEmxsaHR0cF9tZXRob2RfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mADMJEwEAQQELDQECAwQFCwYHLiooJCYKuKgCOAIACwgAEIiAgIAACxkAIAAQtoCAgAAaIAAgAjYCNCAAIAE6ACgLHAAgACAALwEyIAAtAC4gABC1gICAABCAgICAAAspAQF/QTgQuoCAgAAiARC2gICAABogAUGAiICAADYCNCABIAA6ACggAQsKACAAELyAgIAACwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BMgsHACAALQAuC0UBBH8gACgCGCEBIAAtAC0hAiAALQAoIQMgACgCNCEEIAAQtoCAgAAaIAAgBDYCNCAAIAM6ACggACACOgAtIAAgATYCGAsRACAAIAEgASACahC3gICAAAs+AQF7IAD9DAAAAAAAAAAAAAAAAAAAAAAiAf0LAgAgAEEwakIANwIAIABBIGogAf0LAgAgAEEQaiAB/QsCAAtnAQF/QQAhAQJAIAAoAgwNAAJAAkACQAJAIAAtAC8OAwEAAwILIAAoAjQiAUUNACABKAIcIgFFDQAgACABEYCAgIAAACIBDQMLQQAPCxC/gICAAAALIABB/5GAgAA2AhBBDiEBCyABCx4AAkAgACgCDA0AIABBhJSAgAA2AhAgAEEVNgIMCwsWAAJAIAAoAgxBFUcNACAAQQA2AgwLCxYAAkAgACgCDEEWRw0AIABBADYCDAsLBwAgACgCDAsHACAAKAIQCwkAIAAgATYCEAsHACAAKAIUCyIAAkAgAEEaSQ0AEL+AgIAAAAsgAEECdEHIm4CAAGooAgALIgACQCAAQS5JDQAQv4CAgAAACyAAQQJ0QbCcgIAAaigCAAsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCACIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIEIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBnI6AgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAigiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI0IgRFDQAgBCgCCCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQdKKgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCNCIERQ0AIAQoAgwiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEHdk4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCMCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIQIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBw5CAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCNCIERQ0AIAQoAjQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCFCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIcIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCNCIERQ0AIAQoAhgiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEHSiICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI0IgRFDQAgBCgCICIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjQiBEUNACAEKAIkIgRFDQAgACAEEYCAgIAAACEDCyADC0UBAX8CQAJAIAAvATBBFHFBFEcNAEEBIQMgAC0AKEEBRg0BIAAvATJB5QBGIQMMAQsgAC0AKUEFRiEDCyAAIAM6AC5BAAvyAQEDf0EBIQMCQCAALwEwIgRBCHENACAAKQMgQgBSIQMLAkACQCAALQAuRQ0AQQEhBSAALQApQQVGDQFBASEFIARBwABxRSADcUEBRw0BC0EAIQUgBEHAAHENAEECIQUgBEEIcQ0AAkAgBEGABHFFDQACQCAALQAoQQFHDQAgAC0ALUEKcQ0AQQUPC0EEDwsCQCAEQSBxDQACQCAALQAoQQFGDQAgAC8BMiIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQBBBCEFIARBiARxQYAERg0CIARBKHFFDQILQQAPC0EAQQMgACkDIFAbIQULIAULXQECf0EAIQECQCAALQAoQQFGDQAgAC8BMiICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6IBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMiIFQZx/akHkAEkNACAFQcwBRg0AIAVBsAJGDQAgBEHAAHENAEEAIQMgBEGIBHFBgARGDQAgBEEocUEARyEDCyAAQQA7ATAgAEEAOgAvIAMLlAEBAn8CQAJAAkAgAC0AKkUNACAALQArRQ0AQQAhASAALwEwIgJBAnFFDQEMAgtBACEBIAAvATAiAkEBcUUNAQtBASEBIAAtAChBAUYNACAALwEyIgBBnH9qQeQASQ0AIABBzAFGDQAgAEGwAkYNACACQcAAcQ0AQQAhASACQYgEcUGABEYNACACQShxQQBHIQELIAELSAEBeyAAQRBq/QwAAAAAAAAAAAAAAAAAAAAAIgH9CwMAIAAgAf0LAwAgAEEwakIANwMAIABBIGogAf0LAwAgAEG8ATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACELiAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvTzgEDHH8DfgV/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8gASEQIAEhESABIRIgASETIAEhFCABIRUgASEWIAEhFyABIRggASEZIAEhGiABIRsgASEcIAEhHQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAhwiHkF/ag68AbcBAbYBAgMEBQYHCAkKCwwNDg8QwAG/ARESE7UBFBUWFxgZGr0BvAEbHB0eHyAhtAGzASIjsgGxASQlJicoKSorLC0uLzAxMjM0NTY3ODk6uAE7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwEAuQELQQAhHgyvAQtBDyEeDK4BC0EOIR4MrQELQRAhHgysAQtBESEeDKsBC0EUIR4MqgELQRUhHgypAQtBFiEeDKgBC0EXIR4MpwELQRghHgymAQtBCCEeDKUBC0EZIR4MpAELQRohHgyjAQtBEyEeDKIBC0ESIR4MoQELQRshHgygAQtBHCEeDJ8BC0EdIR4MngELQR4hHgydAQtBqgEhHgycAQtBqwEhHgybAQtBICEeDJoBC0EhIR4MmQELQSIhHgyYAQtBIyEeDJcBC0EkIR4MlgELQa0BIR4MlQELQSUhHgyUAQtBKSEeDJMBC0ENIR4MkgELQSYhHgyRAQtBJyEeDJABC0EoIR4MjwELQS4hHgyOAQtBKiEeDI0BC0GuASEeDIwBC0EMIR4MiwELQS8hHgyKAQtBKyEeDIkBC0ELIR4MiAELQSwhHgyHAQtBLSEeDIYBC0EKIR4MhQELQTEhHgyEAQtBMCEeDIMBC0EJIR4MggELQR8hHgyBAQtBMiEeDIABC0EzIR4MfwtBNCEeDH4LQTUhHgx9C0E2IR4MfAtBNyEeDHsLQTghHgx6C0E5IR4MeQtBOiEeDHgLQawBIR4MdwtBOyEeDHYLQTwhHgx1C0E9IR4MdAtBPiEeDHMLQT8hHgxyC0HAACEeDHELQcEAIR4McAtBwgAhHgxvC0HDACEeDG4LQcQAIR4MbQtBByEeDGwLQcUAIR4MawtBBiEeDGoLQcYAIR4MaQtBBSEeDGgLQccAIR4MZwtBBCEeDGYLQcgAIR4MZQtByQAhHgxkC0HKACEeDGMLQcsAIR4MYgtBAyEeDGELQcwAIR4MYAtBzQAhHgxfC0HOACEeDF4LQdAAIR4MXQtBzwAhHgxcC0HRACEeDFsLQdIAIR4MWgtBAiEeDFkLQdMAIR4MWAtB1AAhHgxXC0HVACEeDFYLQdYAIR4MVQtB1wAhHgxUC0HYACEeDFMLQdkAIR4MUgtB2gAhHgxRC0HbACEeDFALQdwAIR4MTwtB3QAhHgxOC0HeACEeDE0LQd8AIR4MTAtB4AAhHgxLC0HhACEeDEoLQeIAIR4MSQtB4wAhHgxIC0HkACEeDEcLQeUAIR4MRgtB5gAhHgxFC0HnACEeDEQLQegAIR4MQwtB6QAhHgxCC0HqACEeDEELQesAIR4MQAtB7AAhHgw/C0HtACEeDD4LQe4AIR4MPQtB7wAhHgw8C0HwACEeDDsLQfEAIR4MOgtB8gAhHgw5C0HzACEeDDgLQfQAIR4MNwtB9QAhHgw2C0H2ACEeDDULQfcAIR4MNAtB+AAhHgwzC0H5ACEeDDILQfoAIR4MMQtB+wAhHgwwC0H8ACEeDC8LQf0AIR4MLgtB/gAhHgwtC0H/ACEeDCwLQYABIR4MKwtBgQEhHgwqC0GCASEeDCkLQYMBIR4MKAtBhAEhHgwnC0GFASEeDCYLQYYBIR4MJQtBhwEhHgwkC0GIASEeDCMLQYkBIR4MIgtBigEhHgwhC0GLASEeDCALQYwBIR4MHwtBjQEhHgweC0GOASEeDB0LQY8BIR4MHAtBkAEhHgwbC0GRASEeDBoLQZIBIR4MGQtBkwEhHgwYC0GUASEeDBcLQZUBIR4MFgtBlgEhHgwVC0GXASEeDBQLQZgBIR4MEwtBmQEhHgwSC0GdASEeDBELQZoBIR4MEAtBASEeDA8LQZsBIR4MDgtBnAEhHgwNC0GeASEeDAwLQaABIR4MCwtBnwEhHgwKC0GhASEeDAkLQaIBIR4MCAtBowEhHgwHC0GkASEeDAYLQaUBIR4MBQtBpgEhHgwEC0GnASEeDAMLQagBIR4MAgtBqQEhHgwBC0GvASEeCwNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIB4OsAEAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGhweHyAjJCUmJygpKiwtLi8w+wI0Njg5PD9BQkNERUZHSElKS0xNTk9QUVJTVVdZXF1eYGJjZGVmZ2hrbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHaAeAB4QHkAfEBvQK9AgsgASIIIAJHDcIBQbwBIR4MlQMLIAEiHiACRw2xAUGsASEeDJQDCyABIgEgAkcNZ0HiACEeDJMDCyABIgEgAkcNXUHaACEeDJIDCyABIgEgAkcNVkHVACEeDJEDCyABIgEgAkcNUkHTACEeDJADCyABIgEgAkcNT0HRACEeDI8DCyABIgEgAkcNTEHPACEeDI4DCyABIgEgAkcNEEEMIR4MjQMLIAEiASACRw0zQTghHgyMAwsgASIBIAJHDS9BNSEeDIsDCyABIgEgAkcNJkEyIR4MigMLIAEiASACRw0kQS8hHgyJAwsgASIBIAJHDR1BJCEeDIgDCyAALQAuQQFGDf0CDMcBCyAAIAEiASACELSAgIAAQQFHDbQBDLUBCyAAIAEiASACEK2AgIAAIh4NtQEgASEBDLACCwJAIAEiASACRw0AQQYhHgyFAwsgACABQQFqIgEgAhCwgICAACIeDbYBIAEhAQwPCyAAQgA3AyBBEyEeDPMCCyABIh4gAkcNCUEPIR4MggMLAkAgASIBIAJGDQAgAUEBaiEBQREhHgzyAgtBByEeDIEDCyAAQgAgACkDICIfIAIgASIea60iIH0iISAhIB9WGzcDICAfICBWIiJFDbMBQQghHgyAAwsCQCABIgEgAkYNACAAQYmAgIAANgIIIAAgATYCBCABIQFBFSEeDPACC0EJIR4M/wILIAEhASAAKQMgUA2yASABIQEMrQILAkAgASIBIAJHDQBBCyEeDP4CCyAAIAFBAWoiASACEK+AgIAAIh4NsgEgASEBDK0CCwNAAkAgAS0AAEHwnYCAAGotAAAiHkEBRg0AIB5BAkcNtAEgAUEBaiEBDAMLIAFBAWoiASACRw0AC0EMIR4M/AILAkAgASIBIAJHDQBBDSEeDPwCCwJAAkAgAS0AACIeQXNqDhQBtgG2AbYBtgG2AbYBtgG2AbYBtgG2AbYBtgG2AbYBtgG2AbYBALQBCyABQQFqIQEMtAELIAFBAWohAQtBGCEeDOoCCwJAIAEiHiACRw0AQQ4hHgz6AgtCACEfIB4hAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgHi0AAEFQag43yAHHAQABAgMEBQYHvgK+Ar4CvgK+Ar4CvgIICQoLDA2+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CDg8QERITvgILQgIhHwzHAQtCAyEfDMYBC0IEIR8MxQELQgUhHwzEAQtCBiEfDMMBC0IHIR8MwgELQgghHwzBAQtCCSEfDMABC0IKIR8MvwELQgshHwy+AQtCDCEfDL0BC0INIR8MvAELQg4hHwy7AQtCDyEfDLoBC0IKIR8MuQELQgshHwy4AQtCDCEfDLcBC0INIR8MtgELQg4hHwy1AQtCDyEfDLQBC0IAIR8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIB4tAABBUGoON8cBxgEAAQIDBAUGB8gByAHIAcgByAHIAcgBCAkKCwwNyAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAQ4PEBESE8gBC0ICIR8MxgELQgMhHwzFAQtCBCEfDMQBC0IFIR8MwwELQgYhHwzCAQtCByEfDMEBC0IIIR8MwAELQgkhHwy/AQtCCiEfDL4BC0ILIR8MvQELQgwhHwy8AQtCDSEfDLsBC0IOIR8MugELQg8hHwy5AQtCCiEfDLgBC0ILIR8MtwELQgwhHwy2AQtCDSEfDLUBC0IOIR8MtAELQg8hHwyzAQsgAEIAIAApAyAiHyACIAEiHmutIiB9IiEgISAfVhs3AyAgHyAgViIiRQ20AUERIR4M9wILAkAgASIBIAJGDQAgAEGJgICAADYCCCAAIAE2AgQgASEBQRshHgznAgtBEiEeDPYCCyAAIAEiHiACELKAgIAAQX9qDgWmAQCiAgGzAbQBC0ESIR4M5AILIABBAToALyAeIQEM8gILIAEiASACRw20AUEWIR4M8gILIAEiHCACRw0ZQTkhHgzxAgsCQCABIgEgAkcNAEEaIR4M8QILIABBADYCBCAAQYqAgIAANgIIIAAgASABEKqAgIAAIh4NtgEgASEBDLkBCwJAIAEiHiACRw0AQRshHgzwAgsCQCAeLQAAIgFBIEcNACAeQQFqIQEMGgsgAUEJRw22ASAeQQFqIQEMGQsCQCABIgEgAkYNACABQQFqIQEMFAtBHCEeDO4CCwJAIAEiHiACRw0AQR0hHgzuAgsCQCAeLQAAIgFBCUcNACAeIQEM0gILIAFBIEcNtQEgHiEBDNECCwJAIAEiASACRw0AQR4hHgztAgsgAS0AAEEKRw24ASABQQFqIQEMoAILIAEiASACRw24AUEiIR4M6wILA0ACQCABLQAAIh5BIEYNAAJAIB5BdmoOBAC+Ab4BALwBCyABIQEMxAELIAFBAWoiASACRw0AC0EkIR4M6gILQSUhHiABIiMgAkYN6QIgAiAjayAAKAIAIiRqISUgIyEmICQhAQJAA0AgJi0AACIiQSByICIgIkG/f2pB/wFxQRpJG0H/AXEgAUHwn4CAAGotAABHDQEgAUEDRg3WAiABQQFqIQEgJkEBaiImIAJHDQALIAAgJTYCAAzqAgsgAEEANgIAICYhAQy7AQtBJiEeIAEiIyACRg3oAiACICNrIAAoAgAiJGohJSAjISYgJCEBAkADQCAmLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQfSfgIAAai0AAEcNASABQQhGDb0BIAFBAWohASAmQQFqIiYgAkcNAAsgACAlNgIADOkCCyAAQQA2AgAgJiEBDLoBC0EnIR4gASIjIAJGDecCIAIgI2sgACgCACIkaiElICMhJiAkIQECQANAICYtAAAiIkEgciAiICJBv39qQf8BcUEaSRtB/wFxIAFB0KaAgABqLQAARw0BIAFBBUYNvQEgAUEBaiEBICZBAWoiJiACRw0ACyAAICU2AgAM6AILIABBADYCACAmIQEMuQELAkAgASIBIAJGDQADQAJAIAEtAABBgKKAgABqLQAAIh5BAUYNACAeQQJGDQogASEBDMEBCyABQQFqIgEgAkcNAAtBIyEeDOcCC0EjIR4M5gILAkAgASIBIAJGDQADQAJAIAEtAAAiHkEgRg0AIB5BdmoOBL0BvgG+Ab0BvgELIAFBAWoiASACRw0AC0ErIR4M5gILQSshHgzlAgsDQAJAIAEtAAAiHkEgRg0AIB5BCUcNAwsgAUEBaiIBIAJHDQALQS8hHgzkAgsDQAJAIAEtAAAiHkEgRg0AAkACQCAeQXZqDgS+AQEBvgEACyAeQSxGDb8BCyABIQEMBAsgAUEBaiIBIAJHDQALQTIhHgzjAgsgASEBDL8BC0EzIR4gASImIAJGDeECIAIgJmsgACgCACIjaiEkICYhIiAjIQECQANAICItAABBIHIgAUGApICAAGotAABHDQEgAUEGRg3QAiABQQFqIQEgIkEBaiIiIAJHDQALIAAgJDYCAAziAgsgAEEANgIAICIhAQtBKyEeDNACCwJAIAEiHSACRw0AQTQhHgzgAgsgAEGKgICAADYCCCAAIB02AgQgHSEBIAAtACxBf2oOBK8BuQG7Ab0BxwILIAFBAWohAQyuAQsCQCABIgEgAkYNAANAAkAgAS0AACIeQSByIB4gHkG/f2pB/wFxQRpJG0H/AXEiHkEJRg0AIB5BIEYNAAJAAkACQAJAIB5BnX9qDhMAAwMDAwMDAwEDAwMDAwMDAwMCAwsgAUEBaiEBQSYhHgzTAgsgAUEBaiEBQSchHgzSAgsgAUEBaiEBQSghHgzRAgsgASEBDLIBCyABQQFqIgEgAkcNAAtBKCEeDN4CC0EoIR4M3QILAkAgASIBIAJGDQADQAJAIAEtAABBgKCAgABqLQAAQQFGDQAgASEBDLcBCyABQQFqIgEgAkcNAAtBMCEeDN0CC0EwIR4M3AILAkADQAJAIAEtAABBd2oOGAACwQLBAscCwQLBAsECwQLBAsECwQLBAsECwQLBAsECwQLBAsECwQLBAsECAMECCyABQQFqIgEgAkcNAAtBNSEeDNwCCyABQQFqIQELQSEhHgzKAgsgASIBIAJHDbkBQTchHgzZAgsDQAJAIAEtAABBkKSAgABqLQAAQQFGDQAgASEBDJACCyABQQFqIgEgAkcNAAtBOCEeDNgCCyAcLQAAIh5BIEYNmgEgHkE6Rw3GAiAAKAIEIQEgAEEANgIEIAAgASAcEKiAgIAAIgENtgEgHEEBaiEBDLgBCyAAIAEgAhCpgICAABoLQQohHgzFAgtBOiEeIAEiJiACRg3UAiACICZrIAAoAgAiI2ohJCAmIRwgIyEBAkADQCAcLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQZCmgIAAai0AAEcNxAIgAUEFRg0BIAFBAWohASAcQQFqIhwgAkcNAAsgACAkNgIADNUCCyAAQQA2AgAgAEEBOgAsICYgI2tBBmohAQy+AgtBOyEeIAEiJiACRg3TAiACICZrIAAoAgAiI2ohJCAmIRwgIyEBAkADQCAcLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQZamgIAAai0AAEcNwwIgAUEJRg0BIAFBAWohASAcQQFqIhwgAkcNAAsgACAkNgIADNQCCyAAQQA2AgAgAEECOgAsICYgI2tBCmohAQy9AgsCQCABIhwgAkcNAEE8IR4M0wILAkACQCAcLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwDDAsMCwwLDAsMCAcMCCyAcQQFqIQFBMiEeDMMCCyAcQQFqIQFBMyEeDMICC0E9IR4gASImIAJGDdECIAIgJmsgACgCACIjaiEkICYhHCAjIQEDQCAcLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQaCmgIAAai0AAEcNwAIgAUEBRg20AiABQQFqIQEgHEEBaiIcIAJHDQALIAAgJDYCAAzRAgtBPiEeIAEiJiACRg3QAiACICZrIAAoAgAiI2ohJCAmIRwgIyEBAkADQCAcLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQaKmgIAAai0AAEcNwAIgAUEORg0BIAFBAWohASAcQQFqIhwgAkcNAAsgACAkNgIADNECCyAAQQA2AgAgAEEBOgAsICYgI2tBD2ohAQy6AgtBPyEeIAEiJiACRg3PAiACICZrIAAoAgAiI2ohJCAmIRwgIyEBAkADQCAcLQAAIiJBIHIgIiAiQb9/akH/AXFBGkkbQf8BcSABQcCmgIAAai0AAEcNvwIgAUEPRg0BIAFBAWohASAcQQFqIhwgAkcNAAsgACAkNgIADNACCyAAQQA2AgAgAEEDOgAsICYgI2tBEGohAQy5AgtBwAAhHiABIiYgAkYNzgIgAiAmayAAKAIAIiNqISQgJiEcICMhAQJAA0AgHC0AACIiQSByICIgIkG/f2pB/wFxQRpJG0H/AXEgAUHQpoCAAGotAABHDb4CIAFBBUYNASABQQFqIQEgHEEBaiIcIAJHDQALIAAgJDYCAAzPAgsgAEEANgIAIABBBDoALCAmICNrQQZqIQEMuAILAkAgASIcIAJHDQBBwQAhHgzOAgsCQAJAAkACQCAcLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGdf2oOEwDAAsACwALAAsACwALAAsACwALAAsACwAIBwALAAsACAgPAAgsgHEEBaiEBQTUhHgzAAgsgHEEBaiEBQTYhHgy/AgsgHEEBaiEBQTchHgy+AgsgHEEBaiEBQTghHgy9AgsCQCABIgEgAkYNACAAQYuAgIAANgIIIAAgATYCBCABIQFBOSEeDL0CC0HCACEeDMwCCyABIgEgAkcNrwFBxAAhHgzLAgtBxQAhHiABIiYgAkYNygIgAiAmayAAKAIAIiNqISQgJiEiICMhAQJAA0AgIi0AACABQdamgIAAai0AAEcNtAEgAUEBRg0BIAFBAWohASAiQQFqIiIgAkcNAAsgACAkNgIADMsCCyAAQQA2AgAgJiAja0ECaiEBDK8BCwJAIAEiASACRw0AQccAIR4MygILIAEtAABBCkcNswEgAUEBaiEBDK8BCwJAIAEiASACRw0AQcgAIR4MyQILAkACQCABLQAAQXZqDgQBtAG0AQC0AQsgAUEBaiEBQT0hHgy5AgsgAUEBaiEBDK4BCwJAIAEiASACRw0AQckAIR4MyAILQQAhHgJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4KuwG6AQABAgMEBQYHvAELQQIhHgy6AQtBAyEeDLkBC0EEIR4MuAELQQUhHgy3AQtBBiEeDLYBC0EHIR4MtQELQQghHgy0AQtBCSEeDLMBCwJAIAEiASACRw0AQcoAIR4MxwILIAEtAABBLkcNtAEgAUEBaiEBDIACCwJAIAEiASACRw0AQcsAIR4MxgILQQAhHgJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4KvQG8AQABAgMEBQYHvgELQQIhHgy8AQtBAyEeDLsBC0EEIR4MugELQQUhHgy5AQtBBiEeDLgBC0EHIR4MtwELQQghHgy2AQtBCSEeDLUBC0HMACEeIAEiJiACRg3EAiACICZrIAAoAgAiI2ohJCAmIQEgIyEiA0AgAS0AACAiQeKmgIAAai0AAEcNuAEgIkEDRg23ASAiQQFqISIgAUEBaiIBIAJHDQALIAAgJDYCAAzEAgtBzQAhHiABIiYgAkYNwwIgAiAmayAAKAIAIiNqISQgJiEBICMhIgNAIAEtAAAgIkHmpoCAAGotAABHDbcBICJBAkYNuQEgIkEBaiEiIAFBAWoiASACRw0ACyAAICQ2AgAMwwILQc4AIR4gASImIAJGDcICIAIgJmsgACgCACIjaiEkICYhASAjISIDQCABLQAAICJB6aaAgABqLQAARw22ASAiQQNGDbkBICJBAWohIiABQQFqIgEgAkcNAAsgACAkNgIADMICCwNAAkAgAS0AACIeQSBGDQACQAJAAkAgHkG4f2oOCwABugG6AboBugG6AboBugG6AQK6AQsgAUEBaiEBQcIAIR4MtQILIAFBAWohAUHDACEeDLQCCyABQQFqIQFBxAAhHgyzAgsgAUEBaiIBIAJHDQALQc8AIR4MwQILAkAgASIBIAJGDQAgACABQQFqIgEgAhClgICAABogASEBQQchHgyxAgtB0AAhHgzAAgsDQAJAIAEtAABB8KaAgABqLQAAIh5BAUYNACAeQX5qDgO5AboBuwG8AQsgAUEBaiIBIAJHDQALQdEAIR4MvwILAkAgASIBIAJGDQAgAUEBaiEBDAMLQdIAIR4MvgILA0ACQCABLQAAQfCogIAAai0AACIeQQFGDQACQCAeQX5qDgS8Ab0BvgEAvwELIAEhAUHGACEeDK8CCyABQQFqIgEgAkcNAAtB0wAhHgy9AgsCQCABIgEgAkcNAEHUACEeDL0CCwJAIAEtAAAiHkF2ag4apAG/Ab8BpgG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG0Ab8BvwEAvQELIAFBAWohAQtBBiEeDKsCCwNAAkAgAS0AAEHwqoCAAGotAABBAUYNACABIQEM+gELIAFBAWoiASACRw0AC0HVACEeDLoCCwJAIAEiASACRg0AIAFBAWohAQwDC0HWACEeDLkCCwJAIAEiASACRw0AQdcAIR4MuQILIAFBAWohAQwBCwJAIAEiASACRw0AQdgAIR4MuAILIAFBAWohAQtBBCEeDKYCCwJAIAEiIiACRw0AQdkAIR4MtgILICIhAQJAAkACQCAiLQAAQfCsgIAAai0AAEF/ag4HvgG/AcABAPgBAQLBAQsgIkEBaiEBDAoLICJBAWohAQy3AQtBACEeIABBADYCHCAAQfGOgIAANgIQIABBBzYCDCAAICJBAWo2AhQMtQILAkADQAJAIAEtAABB8KyAgABqLQAAIh5BBEYNAAJAAkAgHkF/ag4HvAG9Ab4BwwEABAHDAQsgASEBQckAIR4MqAILIAFBAWohAUHLACEeDKcCCyABQQFqIgEgAkcNAAtB2gAhHgy1AgsgAUEBaiEBDLUBCwJAIAEiIiACRw0AQdsAIR4MtAILICItAABBL0cNvgEgIkEBaiEBDAYLAkAgASIiIAJHDQBB3AAhHgyzAgsCQCAiLQAAIgFBL0cNACAiQQFqIQFBzAAhHgyjAgsgAUF2aiIBQRZLDb0BQQEgAXRBiYCAAnFFDb0BDJMCCwJAIAEiASACRg0AIAFBAWohAUHNACEeDKICC0HdACEeDLECCwJAIAEiIiACRw0AQd8AIR4MsQILICIhAQJAICItAABB8LCAgABqLQAAQX9qDgOSAvABAL4BC0HQACEeDKACCwJAIAEiIiACRg0AA0ACQCAiLQAAQfCugIAAai0AACIBQQNGDQACQCABQX9qDgKUAgC/AQsgIiEBQc4AIR4MogILICJBAWoiIiACRw0AC0HeACEeDLACC0HeACEeDK8CCwJAIAEiASACRg0AIABBjICAgAA2AgggACABNgIEIAEhAUHPACEeDJ8CC0HgACEeDK4CCwJAIAEiASACRw0AQeEAIR4MrgILIABBjICAgAA2AgggACABNgIEIAEhAQtBAyEeDJwCCwNAIAEtAABBIEcNjAIgAUEBaiIBIAJHDQALQeIAIR4MqwILAkAgASIBIAJHDQBB4wAhHgyrAgsgAS0AAEEgRw24ASABQQFqIQEM1AELAkAgASIIIAJHDQBB5AAhHgyqAgsgCC0AAEHMAEcNuwEgCEEBaiEBQRMhHgy5AQtB5QAhHiABIiIgAkYNqAIgAiAiayAAKAIAIiZqISMgIiEIICYhAQNAIAgtAAAgAUHwsoCAAGotAABHDboBIAFBBUYNuAEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMqAILAkAgASIIIAJHDQBB5gAhHgyoAgsCQAJAIAgtAABBvX9qDgwAuwG7AbsBuwG7AbsBuwG7AbsBuwEBuwELIAhBAWohAUHUACEeDJgCCyAIQQFqIQFB1QAhHgyXAgtB5wAhHiABIiIgAkYNpgIgAiAiayAAKAIAIiZqISMgIiEIICYhAQJAA0AgCC0AACABQe2zgIAAai0AAEcNuQEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADKcCCyAAQQA2AgAgIiAma0EDaiEBQRAhHgy2AQtB6AAhHiABIiIgAkYNpQIgAiAiayAAKAIAIiZqISMgIiEIICYhAQJAA0AgCC0AACABQfaygIAAai0AAEcNuAEgAUEFRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADKYCCyAAQQA2AgAgIiAma0EGaiEBQRYhHgy1AQtB6QAhHiABIiIgAkYNpAIgAiAiayAAKAIAIiZqISMgIiEIICYhAQJAA0AgCC0AACABQfyygIAAai0AAEcNtwEgAUEDRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADKUCCyAAQQA2AgAgIiAma0EEaiEBQQUhHgy0AQsCQCABIgggAkcNAEHqACEeDKQCCyAILQAAQdkARw21ASAIQQFqIQFBCCEeDLMBCwJAIAEiCCACRw0AQesAIR4MowILAkACQCAILQAAQbJ/ag4DALYBAbYBCyAIQQFqIQFB2QAhHgyTAgsgCEEBaiEBQdoAIR4MkgILAkAgASIIIAJHDQBB7AAhHgyiAgsCQAJAIAgtAABBuH9qDggAtQG1AbUBtQG1AbUBAbUBCyAIQQFqIQFB2AAhHgySAgsgCEEBaiEBQdsAIR4MkQILQe0AIR4gASIiIAJGDaACIAIgImsgACgCACImaiEjICIhCCAmIQECQANAIAgtAAAgAUGAs4CAAGotAABHDbMBIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIzYCAAyhAgtBACEeIABBADYCACAiICZrQQNqIQEMsAELQe4AIR4gASIiIAJGDZ8CIAIgImsgACgCACImaiEjICIhCCAmIQECQANAIAgtAAAgAUGDs4CAAGotAABHDbIBIAFBBEYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIzYCAAygAgsgAEEANgIAICIgJmtBBWohAUEjIR4MrwELAkAgASIIIAJHDQBB7wAhHgyfAgsCQAJAIAgtAABBtH9qDggAsgGyAbIBsgGyAbIBAbIBCyAIQQFqIQFB3QAhHgyPAgsgCEEBaiEBQd4AIR4MjgILAkAgASIIIAJHDQBB8AAhHgyeAgsgCC0AAEHFAEcNrwEgCEEBaiEBDN4BC0HxACEeIAEiIiACRg2cAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFBiLOAgABqLQAARw2vASABQQNGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMnQILIABBADYCACAiICZrQQRqIQFBLSEeDKwBC0HyACEeIAEiIiACRg2bAiACICJrIAAoAgAiJmohIyAiIQggJiEBAkADQCAILQAAIAFB0LOAgABqLQAARw2uASABQQhGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICM2AgAMnAILIABBADYCACAiICZrQQlqIQFBKSEeDKsBCwJAIAEiASACRw0AQfMAIR4MmwILQQEhHiABLQAAQd8ARw2qASABQQFqIQEM3AELQfQAIR4gASIiIAJGDZkCIAIgImsgACgCACImaiEjICIhCCAmIQEDQCAILQAAIAFBjLOAgABqLQAARw2rASABQQFGDfcBIAFBAWohASAIQQFqIgggAkcNAAsgACAjNgIADJkCCwJAIAEiHiACRw0AQfUAIR4MmQILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGOs4CAAGotAABHDasBIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH1ACEeDJkCCyAAQQA2AgAgHiAia0EDaiEBQQIhHgyoAQsCQCABIh4gAkcNAEH2ACEeDJgCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFB8LOAgABqLQAARw2qASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB9gAhHgyYAgsgAEEANgIAIB4gImtBAmohAUEfIR4MpwELAkAgASIeIAJHDQBB9wAhHgyXAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQfKzgIAAai0AAEcNqQEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQfcAIR4MlwILIABBADYCACAeICJrQQJqIQFBCSEeDKYBCwJAIAEiCCACRw0AQfgAIR4MlgILAkACQCAILQAAQbd/ag4HAKkBqQGpAakBqQEBqQELIAhBAWohAUHmACEeDIYCCyAIQQFqIQFB5wAhHgyFAgsCQCABIh4gAkcNAEH5ACEeDJUCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBkbOAgABqLQAARw2nASABQQVGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB+QAhHgyVAgsgAEEANgIAIB4gImtBBmohAUEYIR4MpAELAkAgASIeIAJHDQBB+gAhHgyUAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQZezgIAAai0AAEcNpgEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQfoAIR4MlAILIABBADYCACAeICJrQQNqIQFBFyEeDKMBCwJAIAEiHiACRw0AQfsAIR4MkwILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGas4CAAGotAABHDaUBIAFBBkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEH7ACEeDJMCCyAAQQA2AgAgHiAia0EHaiEBQRUhHgyiAQsCQCABIh4gAkcNAEH8ACEeDJICCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBobOAgABqLQAARw2kASABQQVGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBB/AAhHgySAgsgAEEANgIAIB4gImtBBmohAUEeIR4MoQELAkAgASIIIAJHDQBB/QAhHgyRAgsgCC0AAEHMAEcNogEgCEEBaiEBQQohHgygAQsCQCABIgggAkcNAEH+ACEeDJACCwJAAkAgCC0AAEG/f2oODwCjAaMBowGjAaMBowGjAaMBowGjAaMBowGjAQGjAQsgCEEBaiEBQewAIR4MgAILIAhBAWohAUHtACEeDP8BCwJAIAEiCCACRw0AQf8AIR4MjwILAkACQCAILQAAQb9/ag4DAKIBAaIBCyAIQQFqIQFB6wAhHgz/AQsgCEEBaiEBQe4AIR4M/gELAkAgASIeIAJHDQBBgAEhHgyOAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQaezgIAAai0AAEcNoAEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYABIR4MjgILIABBADYCACAeICJrQQJqIQFBCyEeDJ0BCwJAIAEiCCACRw0AQYEBIR4MjQILAkACQAJAAkAgCC0AAEFTag4jAKIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogGiAaIBogEBogGiAaIBogGiAQKiAaIBogEDogELIAhBAWohAUHpACEeDP8BCyAIQQFqIQFB6gAhHgz+AQsgCEEBaiEBQe8AIR4M/QELIAhBAWohAUHwACEeDPwBCwJAIAEiHiACRw0AQYIBIR4MjAILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUGps4CAAGotAABHDZ4BIAFBBEYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEGCASEeDIwCCyAAQQA2AgAgHiAia0EFaiEBQRkhHgybAQsCQCABIiIgAkcNAEGDASEeDIsCCyACICJrIAAoAgAiJmohHiAiIQggJiEBAkADQCAILQAAIAFBrrOAgABqLQAARw2dASABQQVGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAIB42AgBBgwEhHgyLAgsgAEEANgIAQQYhHiAiICZrQQZqIQEMmgELAkAgASIeIAJHDQBBhAEhHgyKAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQbSzgIAAai0AAEcNnAEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYQBIR4MigILIABBADYCACAeICJrQQJqIQFBHCEeDJkBCwJAIAEiHiACRw0AQYUBIR4MiQILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUG2s4CAAGotAABHDZsBIAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEGFASEeDIkCCyAAQQA2AgAgHiAia0ECaiEBQSchHgyYAQsCQCABIgggAkcNAEGGASEeDIgCCwJAAkAgCC0AAEGsf2oOAgABmwELIAhBAWohAUH0ACEeDPgBCyAIQQFqIQFB9QAhHgz3AQsCQCABIh4gAkcNAEGHASEeDIcCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBuLOAgABqLQAARw2ZASABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBBhwEhHgyHAgsgAEEANgIAIB4gImtBAmohAUEmIR4MlgELAkAgASIeIAJHDQBBiAEhHgyGAgsgAiAeayAAKAIAIiJqISYgHiEIICIhAQJAA0AgCC0AACABQbqzgIAAai0AAEcNmAEgAUEBRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAmNgIAQYgBIR4MhgILIABBADYCACAeICJrQQJqIQFBAyEeDJUBCwJAIAEiHiACRw0AQYkBIR4MhQILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUHts4CAAGotAABHDZcBIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEGJASEeDIUCCyAAQQA2AgAgHiAia0EDaiEBQQwhHgyUAQsCQCABIh4gAkcNAEGKASEeDIQCCyACIB5rIAAoAgAiImohJiAeIQggIiEBAkADQCAILQAAIAFBvLOAgABqLQAARw2WASABQQNGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICY2AgBBigEhHgyEAgsgAEEANgIAIB4gImtBBGohAUENIR4MkwELAkAgASIIIAJHDQBBiwEhHgyDAgsCQAJAIAgtAABBun9qDgsAlgGWAZYBlgGWAZYBlgGWAZYBAZYBCyAIQQFqIQFB+QAhHgzzAQsgCEEBaiEBQfoAIR4M8gELAkAgASIIIAJHDQBBjAEhHgyCAgsgCC0AAEHQAEcNkwEgCEEBaiEBDMQBCwJAIAEiCCACRw0AQY0BIR4MgQILAkACQCAILQAAQbd/ag4HAZQBlAGUAZQBlAEAlAELIAhBAWohAUH8ACEeDPEBCyAIQQFqIQFBIiEeDJABCwJAIAEiHiACRw0AQY4BIR4MgAILIAIgHmsgACgCACIiaiEmIB4hCCAiIQECQANAIAgtAAAgAUHAs4CAAGotAABHDZIBIAFBAUYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgJjYCAEGOASEeDIACCyAAQQA2AgAgHiAia0ECaiEBQR0hHgyPAQsCQCABIgggAkcNAEGPASEeDP8BCwJAAkAgCC0AAEGuf2oOAwCSAQGSAQsgCEEBaiEBQf4AIR4M7wELIAhBAWohAUEEIR4MjgELAkAgASIIIAJHDQBBkAEhHgz+AQsCQAJAAkACQAJAIAgtAABBv39qDhUAlAGUAZQBlAGUAZQBlAGUAZQBlAEBlAGUAQKUAZQBA5QBlAEElAELIAhBAWohAUH2ACEeDPEBCyAIQQFqIQFB9wAhHgzwAQsgCEEBaiEBQfgAIR4M7wELIAhBAWohAUH9ACEeDO4BCyAIQQFqIQFB/wAhHgztAQsCQCAEIAJHDQBBkQEhHgz9AQsgAiAEayAAKAIAIh5qISIgBCEIIB4hAQJAA0AgCC0AACABQe2zgIAAai0AAEcNjwEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQZEBIR4M/QELIABBADYCACAEIB5rQQNqIQFBESEeDIwBCwJAIAUgAkcNAEGSASEeDPwBCyACIAVrIAAoAgAiHmohIiAFIQggHiEBAkADQCAILQAAIAFBwrOAgABqLQAARw2OASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBkgEhHgz8AQsgAEEANgIAIAUgHmtBA2ohAUEsIR4MiwELAkAgBiACRw0AQZMBIR4M+wELIAIgBmsgACgCACIeaiEiIAYhCCAeIQECQANAIAgtAAAgAUHFs4CAAGotAABHDY0BIAFBBEYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGTASEeDPsBCyAAQQA2AgAgBiAea0EFaiEBQSshHgyKAQsCQCAHIAJHDQBBlAEhHgz6AQsgAiAHayAAKAIAIh5qISIgByEIIB4hAQJAA0AgCC0AACABQcqzgIAAai0AAEcNjAEgAUECRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQZQBIR4M+gELIABBADYCACAHIB5rQQNqIQFBFCEeDIkBCwJAIAggAkcNAEGVASEeDPkBCwJAAkACQAJAIAgtAABBvn9qDg8AAQKOAY4BjgGOAY4BjgGOAY4BjgGOAY4BA44BCyAIQQFqIQRBgQEhHgzrAQsgCEEBaiEFQYIBIR4M6gELIAhBAWohBkGDASEeDOkBCyAIQQFqIQdBhAEhHgzoAQsCQCAIIAJHDQBBlgEhHgz4AQsgCC0AAEHFAEcNiQEgCEEBaiEIDLsBCwJAIAkgAkcNAEGXASEeDPcBCyACIAlrIAAoAgAiHmohIiAJIQggHiEBAkADQCAILQAAIAFBzbOAgABqLQAARw2JASABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBlwEhHgz3AQsgAEEANgIAIAkgHmtBA2ohAUEOIR4MhgELAkAgCCACRw0AQZgBIR4M9gELIAgtAABB0ABHDYcBIAhBAWohAUElIR4MhQELAkAgCiACRw0AQZkBIR4M9QELIAIgCmsgACgCACIeaiEiIAohCCAeIQECQANAIAgtAAAgAUHQs4CAAGotAABHDYcBIAFBCEYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGZASEeDPUBCyAAQQA2AgAgCiAea0EJaiEBQSohHgyEAQsCQCAIIAJHDQBBmgEhHgz0AQsCQAJAIAgtAABBq39qDgsAhwGHAYcBhwGHAYcBhwGHAYcBAYcBCyAIQQFqIQhBiAEhHgzkAQsgCEEBaiEKQYkBIR4M4wELAkAgCCACRw0AQZsBIR4M8wELAkACQCAILQAAQb9/ag4UAIYBhgGGAYYBhgGGAYYBhgGGAYYBhgGGAYYBhgGGAYYBhgGGAQGGAQsgCEEBaiEJQYcBIR4M4wELIAhBAWohCEGKASEeDOIBCwJAIAsgAkcNAEGcASEeDPIBCyACIAtrIAAoAgAiHmohIiALIQggHiEBAkADQCAILQAAIAFB2bOAgABqLQAARw2EASABQQNGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBnAEhHgzyAQsgAEEANgIAIAsgHmtBBGohAUEhIR4MgQELAkAgDCACRw0AQZ0BIR4M8QELIAIgDGsgACgCACIeaiEiIAwhCCAeIQECQANAIAgtAAAgAUHds4CAAGotAABHDYMBIAFBBkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGdASEeDPEBCyAAQQA2AgAgDCAea0EHaiEBQRohHgyAAQsCQCAIIAJHDQBBngEhHgzwAQsCQAJAAkAgCC0AAEG7f2oOEQCEAYQBhAGEAYQBhAGEAYQBhAEBhAGEAYQBhAGEAQKEAQsgCEEBaiEIQYsBIR4M4QELIAhBAWohC0GMASEeDOABCyAIQQFqIQxBjQEhHgzfAQsCQCANIAJHDQBBnwEhHgzvAQsgAiANayAAKAIAIh5qISIgDSEIIB4hAQJAA0AgCC0AACABQeSzgIAAai0AAEcNgQEgAUEFRg0BIAFBAWohASAIQQFqIgggAkcNAAsgACAiNgIAQZ8BIR4M7wELIABBADYCACANIB5rQQZqIQFBKCEeDH4LAkAgDiACRw0AQaABIR4M7gELIAIgDmsgACgCACIeaiEiIA4hCCAeIQECQANAIAgtAAAgAUHqs4CAAGotAABHDYABIAFBAkYNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGgASEeDO4BCyAAQQA2AgAgDiAea0EDaiEBQQchHgx9CwJAIAggAkcNAEGhASEeDO0BCwJAAkAgCC0AAEG7f2oODgCAAYABgAGAAYABgAGAAYABgAGAAYABgAEBgAELIAhBAWohDUGPASEeDN0BCyAIQQFqIQ5BkAEhHgzcAQsCQCAPIAJHDQBBogEhHgzsAQsgAiAPayAAKAIAIh5qISIgDyEIIB4hAQJAA0AgCC0AACABQe2zgIAAai0AAEcNfiABQQJGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBogEhHgzsAQsgAEEANgIAIA8gHmtBA2ohAUESIR4MewsCQCAQIAJHDQBBowEhHgzrAQsgAiAQayAAKAIAIh5qISIgECEIIB4hAQJAA0AgCC0AACABQfCzgIAAai0AAEcNfSABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBowEhHgzrAQsgAEEANgIAIBAgHmtBAmohAUEgIR4MegsCQCARIAJHDQBBpAEhHgzqAQsgAiARayAAKAIAIh5qISIgESEIIB4hAQJAA0AgCC0AACABQfKzgIAAai0AAEcNfCABQQFGDQEgAUEBaiEBIAhBAWoiCCACRw0ACyAAICI2AgBBpAEhHgzqAQsgAEEANgIAIBEgHmtBAmohAUEPIR4MeQsCQCAIIAJHDQBBpQEhHgzpAQsCQAJAIAgtAABBt39qDgcAfHx8fHwBfAsgCEEBaiEQQZMBIR4M2QELIAhBAWohEUGUASEeDNgBCwJAIBIgAkcNAEGmASEeDOgBCyACIBJrIAAoAgAiHmohIiASIQggHiEBAkADQCAILQAAIAFB9LOAgABqLQAARw16IAFBB0YNASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEGmASEeDOgBCyAAQQA2AgAgEiAea0EIaiEBQRshHgx3CwJAIAggAkcNAEGnASEeDOcBCwJAAkACQCAILQAAQb5/ag4SAHt7e3t7e3t7ewF7e3t7e3sCewsgCEEBaiEPQZIBIR4M2AELIAhBAWohCEGVASEeDNcBCyAIQQFqIRJBlgEhHgzWAQsCQCAIIAJHDQBBqAEhHgzmAQsgCC0AAEHOAEcNdyAIQQFqIQgMqgELAkAgCCACRw0AQakBIR4M5QELAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCC0AAEG/f2oOFQABAgOGAQQFBoYBhgGGAQcICQoLhgEMDQ4PhgELIAhBAWohAUHWACEeDOMBCyAIQQFqIQFB1wAhHgziAQsgCEEBaiEBQdwAIR4M4QELIAhBAWohAUHgACEeDOABCyAIQQFqIQFB4QAhHgzfAQsgCEEBaiEBQeQAIR4M3gELIAhBAWohAUHlACEeDN0BCyAIQQFqIQFB6AAhHgzcAQsgCEEBaiEBQfEAIR4M2wELIAhBAWohAUHyACEeDNoBCyAIQQFqIQFB8wAhHgzZAQsgCEEBaiEBQYABIR4M2AELIAhBAWohCEGGASEeDNcBCyAIQQFqIQhBjgEhHgzWAQsgCEEBaiEIQZEBIR4M1QELIAhBAWohCEGYASEeDNQBCwJAIBQgAkcNAEGrASEeDOQBCyAUQQFqIRMMdwsDQAJAIB4tAABBdmoOBHcAAHoACyAeQQFqIh4gAkcNAAtBrAEhHgziAQsCQCAVIAJGDQAgAEGNgICAADYCCCAAIBU2AgQgFSEBQQEhHgzSAQtBrQEhHgzhAQsCQCAVIAJHDQBBrgEhHgzhAQsCQAJAIBUtAABBdmoOBAGrAasBAKsBCyAVQQFqIRQMeAsgFUEBaiETDHQLIAAgEyACEKeAgIAAGiATIQEMRQsCQCAVIAJHDQBBrwEhHgzfAQsCQAJAIBUtAABBdmoOFwF5eQF5eXl5eXl5eXl5eXl5eXl5eXkAeQsgFUEBaiEVC0GcASEeDM4BCwJAIBYgAkcNAEGxASEeDN4BCyAWLQAAQSBHDXcgAEEAOwEyIBZBAWohAUGgASEeDM0BCyABISYCQANAICYiFSACRg0BIBUtAABBUGpB/wFxIh5BCk8NqAECQCAALwEyIiJBmTNLDQAgACAiQQpsIiI7ATIgHkH//wNzICJB/v8DcUkNACAVQQFqISYgACAiIB5qIh47ATIgHkH//wNxQegHSQ0BCwtBACEeIABBADYCHCAAQZ2JgIAANgIQIABBDTYCDCAAIBVBAWo2AhQM3QELQbABIR4M3AELAkAgFyACRw0AQbIBIR4M3AELQQAhHgJAAkACQAJAAkACQAJAAkAgFy0AAEFQag4Kf34AAQIDBAUGB4ABC0ECIR4MfgtBAyEeDH0LQQQhHgx8C0EFIR4MewtBBiEeDHoLQQchHgx5C0EIIR4MeAtBCSEeDHcLAkAgGCACRw0AQbMBIR4M2wELIBgtAABBLkcNeCAYQQFqIRcMpgELAkAgGSACRw0AQbQBIR4M2gELQQAhHgJAAkACQAJAAkACQAJAAkAgGS0AAEFQag4KgQGAAQABAgMEBQYHggELQQIhHgyAAQtBAyEeDH8LQQQhHgx+C0EFIR4MfQtBBiEeDHwLQQchHgx7C0EIIR4MegtBCSEeDHkLAkAgCCACRw0AQbUBIR4M2QELIAIgCGsgACgCACIiaiEmIAghGSAiIR4DQCAZLQAAIB5B/LOAgABqLQAARw17IB5BBEYNtAEgHkEBaiEeIBlBAWoiGSACRw0ACyAAICY2AgBBtQEhHgzYAQsCQCAaIAJHDQBBtgEhHgzYAQsgAiAaayAAKAIAIh5qISIgGiEIIB4hAQNAIAgtAAAgAUGBtICAAGotAABHDXsgAUEBRg22ASABQQFqIQEgCEEBaiIIIAJHDQALIAAgIjYCAEG2ASEeDNcBCwJAIBsgAkcNAEG3ASEeDNcBCyACIBtrIAAoAgAiGWohIiAbIQggGSEeA0AgCC0AACAeQYO0gIAAai0AAEcNeiAeQQJGDXwgHkEBaiEeIAhBAWoiCCACRw0ACyAAICI2AgBBtwEhHgzWAQsCQCAIIAJHDQBBuAEhHgzWAQsCQAJAIAgtAABBu39qDhAAe3t7e3t7e3t7e3t7e3sBewsgCEEBaiEaQaUBIR4MxgELIAhBAWohG0GmASEeDMUBCwJAIAggAkcNAEG5ASEeDNUBCyAILQAAQcgARw14IAhBAWohCAyiAQsCQCAIIAJHDQBBugEhHgzUAQsgCC0AAEHIAEYNogEgAEEBOgAoDJkBCwNAAkAgCC0AAEF2ag4EAHp6AHoLIAhBAWoiCCACRw0AC0G8ASEeDNIBCyAAQQA6AC8gAC0ALUEEcUUNyAELIABBADoALyABIQEMeQsgHkEVRg2pASAAQQA2AhwgACABNgIUIABBq4yAgAA2AhAgAEESNgIMQQAhHgzPAQsCQCAAIB4gAhCtgICAACIBDQAgHiEBDMUBCwJAIAFBFUcNACAAQQM2AhwgACAeNgIUIABB1pKAgAA2AhAgAEEVNgIMQQAhHgzPAQsgAEEANgIcIAAgHjYCFCAAQauMgIAANgIQIABBEjYCDEEAIR4MzgELIB5BFUYNpQEgAEEANgIcIAAgATYCFCAAQYiMgIAANgIQIABBFDYCDEEAIR4MzQELIAAoAgQhJiAAQQA2AgQgHiAfp2oiIyEBIAAgJiAeICMgIhsiHhCugICAACIiRQ16IABBBzYCHCAAIB42AhQgACAiNgIMQQAhHgzMAQsgACAALwEwQYABcjsBMCABIQEMMQsgHkEVRg2hASAAQQA2AhwgACABNgIUIABBxYuAgAA2AhAgAEETNgIMQQAhHgzKAQsgAEEANgIcIAAgATYCFCAAQYuLgIAANgIQIABBAjYCDEEAIR4MyQELIB5BO0cNASABQQFqIQELQQghHgy3AQtBACEeIABBADYCHCAAIAE2AhQgAEGjkICAADYCECAAQQw2AgwMxgELQgEhHwsgHkEBaiEBAkAgACkDICIgQv//////////D1YNACAAICBCBIYgH4Q3AyAgASEBDHcLIABBADYCHCAAIAE2AhQgAEGJiYCAADYCECAAQQw2AgxBACEeDMQBCyAAQQA2AhwgACAeNgIUIABBo5CAgAA2AhAgAEEMNgIMQQAhHgzDAQsgACgCBCEmIABBADYCBCAeIB+naiIjIQEgACAmIB4gIyAiGyIeEK6AgIAAIiJFDW4gAEEFNgIcIAAgHjYCFCAAICI2AgxBACEeDMIBCyAAQQA2AhwgACAeNgIUIABB3ZSAgAA2AhAgAEEPNgIMQQAhHgzBAQsgACAeIAIQrYCAgAAiAQ0BIB4hAQtBDyEeDK8BCwJAIAFBFUcNACAAQQI2AhwgACAeNgIUIABB1pKAgAA2AhAgAEEVNgIMQQAhHgy/AQsgAEEANgIcIAAgHjYCFCAAQauMgIAANgIQIABBEjYCDEEAIR4MvgELIAFBAWohHgJAIAAvATAiAUGAAXFFDQACQCAAIB4gAhCwgICAACIBDQAgHiEBDGsLIAFBFUcNlwEgAEEFNgIcIAAgHjYCFCAAQb6SgIAANgIQIABBFTYCDEEAIR4MvgELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIB42AhQgAEHsj4CAADYCECAAQQQ2AgxBACEeDL4BCyAAIB4gAhCxgICAABogHiEBAkACQAJAAkACQCAAIB4gAhCsgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAeIQELQR0hHgyvAQsgAEEVNgIcIAAgHjYCFCAAQeGRgIAANgIQIABBFTYCDEEAIR4MvgELIABBADYCHCAAIB42AhQgAEGxi4CAADYCECAAQRE2AgxBACEeDL0BCyAALQAtQQFxRQ0BQaoBIR4MrAELAkAgHCACRg0AA0ACQCAcLQAAQSBGDQAgHCEBDKgBCyAcQQFqIhwgAkcNAAtBFyEeDLwBC0EXIR4MuwELIAAoAgQhASAAQQA2AgQgACABIBwQqICAgAAiAUUNkAEgAEEYNgIcIAAgATYCDCAAIBxBAWo2AhRBACEeDLoBCyAAQRk2AhwgACABNgIUIAAgHjYCDEEAIR4MuQELIB4hAUEBISICQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhIgwBC0EEISILIABBAToALCAAIAAvATAgInI7ATALIB4hAQtBICEeDKkBCyAAQQA2AhwgACAeNgIUIABBgY+AgAA2AhAgAEELNgIMQQAhHgy4AQsgHiEBQQEhIgJAAkACQAJAAkAgAC0ALEF7ag4EAgABAwULQQIhIgwBC0EEISILIABBAToALCAAIAAvATAgInI7ATAMAQsgACAALwEwQQhyOwEwCyAeIQELQasBIR4MpgELIAAgASACEKuAgIAAGgwbCwJAIAEiHiACRg0AIB4hAQJAAkAgHi0AAEF2ag4EAWpqAGoLIB5BAWohAQtBHiEeDKUBC0HDACEeDLQBCyAAQQA2AhwgACABNgIUIABBkZGAgAA2AhAgAEEDNgIMQQAhHgyzAQsCQCABLQAAQQ1HDQAgACgCBCEeIABBADYCBAJAIAAgHiABEKqAgIAAIh4NACABQQFqIQEMaQsgAEEeNgIcIAAgHjYCDCAAIAFBAWo2AhRBACEeDLMBCyABIQEgAC0ALUEBcUUNrgFBrQEhHgyiAQsCQCABIgEgAkcNAEEfIR4MsgELAkACQANAAkAgAS0AAEF2ag4EAgAAAwALIAFBAWoiASACRw0AC0EfIR4MswELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCqgICAACIeDQAgASEBDGgLIABBHjYCHCAAIAE2AhQgACAeNgIMQQAhHgyyAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKqAgIAAIh4NACABQQFqIQEMZwsgAEEeNgIcIAAgHjYCDCAAIAFBAWo2AhRBACEeDLEBCyAeQSxHDQEgAUEBaiEeQQEhAQJAAkACQAJAAkAgAC0ALEF7ag4EAwECBAALIB4hAQwEC0ECIQEMAQtBBCEBCyAAQQE6ACwgACAALwEwIAFyOwEwIB4hAQwBCyAAIAAvATBBCHI7ATAgHiEBC0EuIR4MnwELIABBADoALCABIQELQSkhHgydAQsgAEEANgIAICMgJGtBCWohAUEFIR4MmAELIABBADYCACAjICRrQQZqIQFBByEeDJcBCyAAIAAvATBBIHI7ATAgASEBDAILIAAoAgQhCCAAQQA2AgQCQCAAIAggARCqgICAACIIDQAgASEBDJ0BCyAAQSo2AhwgACABNgIUIAAgCDYCDEEAIR4MqQELIABBCDoALCABIQELQSUhHgyXAQsCQCAALQAoQQFGDQAgASEBDAQLIAAtAC1BCHFFDXggASEBDAMLIAAtADBBIHENeUGuASEeDJUBCwJAIB0gAkYNAAJAA0ACQCAdLQAAQVBqIgFB/wFxQQpJDQAgHSEBQSohHgyYAQsgACkDICIfQpmz5syZs+bMGVYNASAAIB9CCn4iHzcDICAfIAGtIiBCf4VCgH6EVg0BIAAgHyAgQv8Bg3w3AyAgHUEBaiIdIAJHDQALQSwhHgymAQsgACgCBCEIIABBADYCBCAAIAggHUEBaiIBEKqAgIAAIggNeiABIQEMmQELQSwhHgykAQsCQCAALwEwIgFBCHFFDQAgAC0AKEEBRw0AIAAtAC1BCHFFDXULIAAgAUH3+wNxQYAEcjsBMCAdIQELQSwhHgySAQsgACAALwEwQRByOwEwDIcBCyAAQTY2AhwgACABNgIMIAAgHEEBajYCFEEAIR4MoAELIAEtAABBOkcNAiAAKAIEIR4gAEEANgIEIAAgHiABEKiAgIAAIh4NASABQQFqIQELQTEhHgyOAQsgAEE2NgIcIAAgHjYCDCAAIAFBAWo2AhRBACEeDJ0BCyAAQQA2AhwgACABNgIUIABBh46AgAA2AhAgAEEKNgIMQQAhHgycAQsgAUEBaiEBCyAAQYASOwEqIAAgASACEKWAgIAAGiABIQELQawBIR4MiQELIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDFALIABBxAA2AhwgACABNgIUIAAgHjYCDEEAIR4MmAELIABBADYCHCAAICI2AhQgAEHlmICAADYCECAAQQc2AgwgAEEANgIAQQAhHgyXAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMTwsgAEHFADYCHCAAIAE2AhQgACAeNgIMQQAhHgyWAQtBACEeIABBADYCHCAAIAE2AhQgAEHrjYCAADYCECAAQQk2AgwMlQELQQEhHgsgACAeOgArIAFBAWohASAALQApQSJGDYsBDEwLIABBADYCHCAAIAE2AhQgAEGijYCAADYCECAAQQk2AgxBACEeDJIBCyAAQQA2AhwgACABNgIUIABBxYqAgAA2AhAgAEEJNgIMQQAhHgyRAQtBASEeCyAAIB46ACogAUEBaiEBDEoLIABBADYCHCAAIAE2AhQgAEG4jYCAADYCECAAQQk2AgxBACEeDI4BCyAAQQA2AgAgJiAja0EEaiEBAkAgAC0AKUEjTw0AIAEhAQxKCyAAQQA2AhwgACABNgIUIABBr4mAgAA2AhAgAEEINgIMQQAhHgyNAQsgAEEANgIAC0EAIR4gAEEANgIcIAAgATYCFCAAQbmbgIAANgIQIABBCDYCDAyLAQsgAEEANgIAICYgI2tBA2ohAQJAIAAtAClBIUcNACABIQEMRwsgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDEEAIR4MigELIABBADYCACAmICNrQQRqIQECQCAALQApIh5BXWpBC08NACABIQEMRgsCQCAeQQZLDQBBASAedEHKAHFFDQAgASEBDEYLQQAhHiAAQQA2AhwgACABNgIUIABB04mAgAA2AhAgAEEINgIMDIkBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQxGCyAAQdAANgIcIAAgATYCFCAAIB42AgxBACEeDIgBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw/CyAAQcQANgIcIAAgATYCFCAAIB42AgxBACEeDIcBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw/CyAAQcUANgIcIAAgATYCFCAAIB42AgxBACEeDIYBCyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQxDCyAAQdAANgIcIAAgATYCFCAAIB42AgxBACEeDIUBCyAAQQA2AhwgACABNgIUIABBooqAgAA2AhAgAEEHNgIMQQAhHgyEAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMOwsgAEHEADYCHCAAIAE2AhQgACAeNgIMQQAhHgyDAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMOwsgAEHFADYCHCAAIAE2AhQgACAeNgIMQQAhHgyCAQsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMPwsgAEHQADYCHCAAIAE2AhQgACAeNgIMQQAhHgyBAQsgAEEANgIcIAAgATYCFCAAQbiIgIAANgIQIABBBzYCDEEAIR4MgAELIB5BP0cNASABQQFqIQELQQUhHgxuC0EAIR4gAEEANgIcIAAgATYCFCAAQdOPgIAANgIQIABBBzYCDAx9CyAAKAIEIR4gAEEANgIEAkAgACAeIAEQpICAgAAiHg0AIAEhAQw0CyAAQcQANgIcIAAgATYCFCAAIB42AgxBACEeDHwLIAAoAgQhHiAAQQA2AgQCQCAAIB4gARCkgICAACIeDQAgASEBDDQLIABBxQA2AhwgACABNgIUIAAgHjYCDEEAIR4MewsgACgCBCEeIABBADYCBAJAIAAgHiABEKSAgIAAIh4NACABIQEMOAsgAEHQADYCHCAAIAE2AhQgACAeNgIMQQAhHgx6CyAAKAIEIQEgAEEANgIEAkAgACABICIQpICAgAAiAQ0AICIhAQwxCyAAQcQANgIcIAAgIjYCFCAAIAE2AgxBACEeDHkLIAAoAgQhASAAQQA2AgQCQCAAIAEgIhCkgICAACIBDQAgIiEBDDELIABBxQA2AhwgACAiNgIUIAAgATYCDEEAIR4MeAsgACgCBCEBIABBADYCBAJAIAAgASAiEKSAgIAAIgENACAiIQEMNQsgAEHQADYCHCAAICI2AhQgACABNgIMQQAhHgx3CyAAQQA2AhwgACAiNgIUIABB0IyAgAA2AhAgAEEHNgIMQQAhHgx2CyAAQQA2AhwgACABNgIUIABB0IyAgAA2AhAgAEEHNgIMQQAhHgx1C0EAIR4gAEEANgIcIAAgIjYCFCAAQb+UgIAANgIQIABBBzYCDAx0CyAAQQA2AhwgACAiNgIUIABBv5SAgAA2AhAgAEEHNgIMQQAhHgxzCyAAQQA2AhwgACAiNgIUIABB1I6AgAA2AhAgAEEHNgIMQQAhHgxyCyAAQQA2AhwgACABNgIUIABBwZOAgAA2AhAgAEEGNgIMQQAhHgxxCyAAQQA2AgAgIiAma0EGaiEBQSQhHgsgACAeOgApIAEhAQxOCyAAQQA2AgALQQAhHiAAQQA2AhwgACAINgIUIABBpJSAgAA2AhAgAEEGNgIMDG0LIAAoAgQhEyAAQQA2AgQgACATIB4QpoCAgAAiEw0BIB5BAWohEwtBnQEhHgxbCyAAQaoBNgIcIAAgEzYCDCAAIB5BAWo2AhRBACEeDGoLIAAoAgQhFCAAQQA2AgQgACAUIB4QpoCAgAAiFA0BIB5BAWohFAtBmgEhHgxYCyAAQasBNgIcIAAgFDYCDCAAIB5BAWo2AhRBACEeDGcLIABBADYCHCAAIBU2AhQgAEHzioCAADYCECAAQQ02AgxBACEeDGYLIABBADYCHCAAIBY2AhQgAEHOjYCAADYCECAAQQk2AgxBACEeDGULQQEhHgsgACAeOgArIBdBAWohFgwuCyAAQQA2AhwgACAXNgIUIABBoo2AgAA2AhAgAEEJNgIMQQAhHgxiCyAAQQA2AhwgACAYNgIUIABBxYqAgAA2AhAgAEEJNgIMQQAhHgxhC0EBIR4LIAAgHjoAKiAZQQFqIRgMLAsgAEEANgIcIAAgGTYCFCAAQbiNgIAANgIQIABBCTYCDEEAIR4MXgsgAEEANgIcIAAgGTYCFCAAQbmbgIAANgIQIABBCDYCDCAAQQA2AgBBACEeDF0LIABBADYCAAtBACEeIABBADYCHCAAIAg2AhQgAEGLlICAADYCECAAQQg2AgwMWwsgAEECOgAoIABBADYCACAbIBlrQQNqIRkMNgsgAEECOgAvIAAgCCACEKOAgIAAIh4NAUGvASEeDEkLIAAtAChBf2oOAh4gHwsgHkEVRw0nIABBuwE2AhwgACAINgIUIABBp5KAgAA2AhAgAEEVNgIMQQAhHgxXC0EAIR4MRgtBAiEeDEULQQ4hHgxEC0EQIR4MQwtBHCEeDEILQRQhHgxBC0EWIR4MQAtBFyEeDD8LQRkhHgw+C0EaIR4MPQtBOiEeDDwLQSMhHgw7C0EkIR4MOgtBMCEeDDkLQTshHgw4C0E8IR4MNwtBPiEeDDYLQT8hHgw1C0HAACEeDDQLQcEAIR4MMwtBxQAhHgwyC0HHACEeDDELQcgAIR4MMAtBygAhHgwvC0HfACEeDC4LQeIAIR4MLQtB+wAhHgwsC0GFASEeDCsLQZcBIR4MKgtBmQEhHgwpC0GpASEeDCgLQaQBIR4MJwtBmwEhHgwmC0GeASEeDCULQZ8BIR4MJAtBoQEhHgwjC0GiASEeDCILQacBIR4MIQtBqAEhHgwgCyAAQQA2AhwgACAINgIUIABB5ouAgAA2AhAgAEEQNgIMQQAhHgwvCyAAQQA2AgQgACAdIB0QqoCAgAAiAUUNASAAQS02AhwgACABNgIMIAAgHUEBajYCFEEAIR4MLgsgACgCBCEIIABBADYCBAJAIAAgCCABEKqAgIAAIghFDQAgAEEuNgIcIAAgCDYCDCAAIAFBAWo2AhRBACEeDC4LIAFBAWohAQweCyAdQQFqIQEMHgsgAEEANgIcIAAgHTYCFCAAQbqPgIAANgIQIABBBDYCDEEAIR4MKwsgAEEpNgIcIAAgATYCFCAAIAg2AgxBACEeDCoLIBxBAWohAQweCyAAQQo2AhwgACABNgIUIABBkZKAgAA2AhAgAEEVNgIMQQAhHgwoCyAAQRA2AhwgACABNgIUIABBvpKAgAA2AhAgAEEVNgIMQQAhHgwnCyAAQQA2AhwgACAeNgIUIABBiIyAgAA2AhAgAEEUNgIMQQAhHgwmCyAAQQQ2AhwgACABNgIUIABB1pKAgAA2AhAgAEEVNgIMQQAhHgwlCyAAQQA2AgAgCCAia0EFaiEZC0GjASEeDBMLIABBADYCACAiICZrQQJqIQFB4wAhHgwSCyAAQQA2AgAgAEGBBDsBKCAaIB5rQQJqIQELQdMAIR4MEAsgASEBAkAgAC0AKUEFRw0AQdIAIR4MEAtB0QAhHgwPC0EAIR4gAEEANgIcIABBuo6AgAA2AhAgAEEHNgIMIAAgIkEBajYCFAweCyAAQQA2AgAgJiAja0ECaiEBQTQhHgwNCyABIQELQS0hHgwLCwJAIAEiHSACRg0AA0ACQCAdLQAAQYCigIAAai0AACIBQQFGDQAgAUECRw0DIB1BAWohAQwECyAdQQFqIh0gAkcNAAtBMSEeDBsLQTEhHgwaCyAAQQA6ACwgHSEBDAELQQwhHgwIC0EvIR4MBwsgAUEBaiEBQSIhHgwGC0EfIR4MBQsgAEEANgIAICMgJGtBBGohAUEGIR4LIAAgHjoALCABIQFBDSEeDAMLIABBADYCACAmICNrQQdqIQFBCyEeDAILIABBADYCAAsgAEEAOgAsIBwhAUEJIR4MAAsLQQAhHiAAQQA2AhwgACABNgIUIABBuJGAgAA2AhAgAEEPNgIMDA4LQQAhHiAAQQA2AhwgACABNgIUIABBuJGAgAA2AhAgAEEPNgIMDA0LQQAhHiAAQQA2AhwgACABNgIUIABBlo+AgAA2AhAgAEELNgIMDAwLQQAhHiAAQQA2AhwgACABNgIUIABB8YiAgAA2AhAgAEELNgIMDAsLQQAhHiAAQQA2AhwgACABNgIUIABBiI2AgAA2AhAgAEEKNgIMDAoLIABBAjYCHCAAIAE2AhQgAEHwkoCAADYCECAAQRY2AgxBACEeDAkLQQEhHgwIC0HGACEeIAEiASACRg0HIANBCGogACABIAJB2KaAgABBChC5gICAACADKAIMIQEgAygCCA4DAQcCAAsQv4CAgAAACyAAQQA2AhwgAEGJk4CAADYCECAAQRc2AgwgACABQQFqNgIUQQAhHgwFCyAAQQA2AhwgACABNgIUIABBnpOAgAA2AhAgAEEJNgIMQQAhHgwECwJAIAEiASACRw0AQSEhHgwECwJAIAEtAABBCkYNACAAQQA2AhwgACABNgIUIABB7oyAgAA2AhAgAEEKNgIMQQAhHgwECyAAKAIEIQggAEEANgIEIAAgCCABEKqAgIAAIggNASABQQFqIQELQQAhHiAAQQA2AhwgACABNgIUIABB6pCAgAA2AhAgAEEZNgIMDAILIABBIDYCHCAAIAg2AgwgACABQQFqNgIUQQAhHgwBCwJAIAEiASACRw0AQRQhHgwBCyAAQYmAgIAANgIIIAAgATYCBEETIR4LIANBEGokgICAgAAgHguvAQECfyABKAIAIQYCQAJAIAIgA0YNACAEIAZqIQQgBiADaiACayEHIAIgBkF/cyAFaiIGaiEFA0ACQCACLQAAIAQtAABGDQBBAiEEDAMLAkAgBg0AQQAhBCAFIQIMAwsgBkF/aiEGIARBAWohBCACQQFqIgIgA0cNAAsgByEGIAMhAgsgAEEBNgIAIAEgBjYCACAAIAI2AgQPCyABQQA2AgAgACAENgIAIAAgAjYCBAsKACAAELuAgIAAC5U3AQt/I4CAgIAAQRBrIgEkgICAgAACQEEAKAKgtICAAA0AQQAQvoCAgABBgLiEgABrIgJB2QBJDQBBACEDAkBBACgC4LeAgAAiBA0AQQBCfzcC7LeAgABBAEKAgISAgIDAADcC5LeAgABBACABQQhqQXBxQdiq1aoFcyIENgLgt4CAAEEAQQA2AvS3gIAAQQBBADYCxLeAgAALQQAgAjYCzLeAgABBAEGAuISAADYCyLeAgABBAEGAuISAADYCmLSAgABBACAENgKstICAAEEAQX82Aqi0gIAAA0AgA0HEtICAAGogA0G4tICAAGoiBDYCACAEIANBsLSAgABqIgU2AgAgA0G8tICAAGogBTYCACADQcy0gIAAaiADQcC0gIAAaiIFNgIAIAUgBDYCACADQdS0gIAAaiADQci0gIAAaiIENgIAIAQgBTYCACADQdC0gIAAaiAENgIAIANBIGoiA0GAAkcNAAtBgLiEgABBeEGAuISAAGtBD3FBAEGAuISAAEEIakEPcRsiA2oiBEEEaiACIANrQUhqIgNBAXI2AgBBAEEAKALwt4CAADYCpLSAgABBACAENgKgtICAAEEAIAM2ApS0gIAAIAJBgLiEgABqQUxqQTg2AgALAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKItICAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQAgA0EBcSAEckEBcyIFQQN0IgBBuLSAgABqKAIAIgRBCGohAwJAAkAgBCgCCCICIABBsLSAgABqIgBHDQBBACAGQX4gBXdxNgKItICAAAwBCyAAIAI2AgggAiAANgIMCyAEIAVBA3QiBUEDcjYCBCAEIAVqQQRqIgQgBCgCAEEBcjYCAAwMCyACQQAoApC0gIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgVBA3QiAEG4tICAAGooAgAiBCgCCCIDIABBsLSAgABqIgBHDQBBACAGQX4gBXdxIgY2Aoi0gIAADAELIAAgAzYCCCADIAA2AgwLIARBCGohAyAEIAJBA3I2AgQgBCAFQQN0IgVqIAUgAmsiBTYCACAEIAJqIgAgBUEBcjYCBAJAIAdFDQAgB0EDdiIIQQN0QbC0gIAAaiECQQAoApy0gIAAIQQCQAJAIAZBASAIdCIIcQ0AQQAgBiAIcjYCiLSAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIIC0EAIAA2Apy0gIAAQQAgBTYCkLSAgAAMDAtBACgCjLSAgAAiCUUNASAJQQAgCWtxQX9qIgMgA0EMdkEQcSIDdiIEQQV2QQhxIgUgA3IgBCAFdiIDQQJ2QQRxIgRyIAMgBHYiA0EBdkECcSIEciADIAR2IgNBAXZBAXEiBHIgAyAEdmpBAnRBuLaAgABqKAIAIgAoAgRBeHEgAmshBCAAIQUCQANAAkAgBSgCECIDDQAgBUEUaigCACIDRQ0CCyADKAIEQXhxIAJrIgUgBCAFIARJIgUbIQQgAyAAIAUbIQAgAyEFDAALCyAAKAIYIQoCQCAAKAIMIgggAEYNAEEAKAKYtICAACAAKAIIIgNLGiAIIAM2AgggAyAINgIMDAsLAkAgAEEUaiIFKAIAIgMNACAAKAIQIgNFDQMgAEEQaiEFCwNAIAUhCyADIghBFGoiBSgCACIDDQAgCEEQaiEFIAgoAhAiAw0ACyALQQA2AgAMCgtBfyECIABBv39LDQAgAEETaiIDQXBxIQJBACgCjLSAgAAiB0UNAEEAIQsCQCACQYACSQ0AQR8hCyACQf///wdLDQAgA0EIdiIDIANBgP4/akEQdkEIcSIDdCIEIARBgOAfakEQdkEEcSIEdCIFIAVBgIAPakEQdkECcSIFdEEPdiADIARyIAVyayIDQQF0IAIgA0EVanZBAXFyQRxqIQsLQQAgAmshBAJAAkACQAJAIAtBAnRBuLaAgABqKAIAIgUNAEEAIQNBACEIDAELQQAhAyACQQBBGSALQQF2ayALQR9GG3QhAEEAIQgDQAJAIAUoAgRBeHEgAmsiBiAETw0AIAYhBCAFIQggBg0AQQAhBCAFIQggBSEDDAMLIAMgBUEUaigCACIGIAYgBSAAQR12QQRxakEQaigCACIFRhsgAyAGGyEDIABBAXQhACAFDQALCwJAIAMgCHINAEEAIQhBAiALdCIDQQAgA2tyIAdxIgNFDQMgA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBUEFdkEIcSIAIANyIAUgAHYiA0ECdkEEcSIFciADIAV2IgNBAXZBAnEiBXIgAyAFdiIDQQF2QQFxIgVyIAMgBXZqQQJ0Qbi2gIAAaigCACEDCyADRQ0BCwNAIAMoAgRBeHEgAmsiBiAESSEAAkAgAygCECIFDQAgA0EUaigCACEFCyAGIAQgABshBCADIAggABshCCAFIQMgBQ0ACwsgCEUNACAEQQAoApC0gIAAIAJrTw0AIAgoAhghCwJAIAgoAgwiACAIRg0AQQAoApi0gIAAIAgoAggiA0saIAAgAzYCCCADIAA2AgwMCQsCQCAIQRRqIgUoAgAiAw0AIAgoAhAiA0UNAyAIQRBqIQULA0AgBSEGIAMiAEEUaiIFKAIAIgMNACAAQRBqIQUgACgCECIDDQALIAZBADYCAAwICwJAQQAoApC0gIAAIgMgAkkNAEEAKAKctICAACEEAkACQCADIAJrIgVBEEkNACAEIAJqIgAgBUEBcjYCBEEAIAU2ApC0gIAAQQAgADYCnLSAgAAgBCADaiAFNgIAIAQgAkEDcjYCBAwBCyAEIANBA3I2AgQgAyAEakEEaiIDIAMoAgBBAXI2AgBBAEEANgKctICAAEEAQQA2ApC0gIAACyAEQQhqIQMMCgsCQEEAKAKUtICAACIAIAJNDQBBACgCoLSAgAAiAyACaiIEIAAgAmsiBUEBcjYCBEEAIAU2ApS0gIAAQQAgBDYCoLSAgAAgAyACQQNyNgIEIANBCGohAwwKCwJAAkBBACgC4LeAgABFDQBBACgC6LeAgAAhBAwBC0EAQn83Auy3gIAAQQBCgICEgICAwAA3AuS3gIAAQQAgAUEMakFwcUHYqtWqBXM2AuC3gIAAQQBBADYC9LeAgABBAEEANgLEt4CAAEGAgAQhBAtBACEDAkAgBCACQccAaiIHaiIGQQAgBGsiC3EiCCACSw0AQQBBMDYC+LeAgAAMCgsCQEEAKALAt4CAACIDRQ0AAkBBACgCuLeAgAAiBCAIaiIFIARNDQAgBSADTQ0BC0EAIQNBAEEwNgL4t4CAAAwKC0EALQDEt4CAAEEEcQ0EAkACQAJAQQAoAqC0gIAAIgRFDQBByLeAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiAESw0DCyADKAIIIgMNAAsLQQAQvoCAgAAiAEF/Rg0FIAghBgJAQQAoAuS3gIAAIgNBf2oiBCAAcUUNACAIIABrIAQgAGpBACADa3FqIQYLIAYgAk0NBSAGQf7///8HSw0FAkBBACgCwLeAgAAiA0UNAEEAKAK4t4CAACIEIAZqIgUgBE0NBiAFIANLDQYLIAYQvoCAgAAiAyAARw0BDAcLIAYgAGsgC3EiBkH+////B0sNBCAGEL6AgIAAIgAgAygCACADKAIEakYNAyAAIQMLAkAgA0F/Rg0AIAJByABqIAZNDQACQCAHIAZrQQAoAui3gIAAIgRqQQAgBGtxIgRB/v///wdNDQAgAyEADAcLAkAgBBC+gICAAEF/Rg0AIAQgBmohBiADIQAMBwtBACAGaxC+gICAABoMBAsgAyEAIANBf0cNBQwDC0EAIQgMBwtBACEADAULIABBf0cNAgtBAEEAKALEt4CAAEEEcjYCxLeAgAALIAhB/v///wdLDQEgCBC+gICAACEAQQAQvoCAgAAhAyAAQX9GDQEgA0F/Rg0BIAAgA08NASADIABrIgYgAkE4ak0NAQtBAEEAKAK4t4CAACAGaiIDNgK4t4CAAAJAIANBACgCvLeAgABNDQBBACADNgK8t4CAAAsCQAJAAkACQEEAKAKgtICAACIERQ0AQci3gIAAIQMDQCAAIAMoAgAiBSADKAIEIghqRg0CIAMoAggiAw0ADAMLCwJAAkBBACgCmLSAgAAiA0UNACAAIANPDQELQQAgADYCmLSAgAALQQAhA0EAIAY2Asy3gIAAQQAgADYCyLeAgABBAEF/NgKotICAAEEAQQAoAuC3gIAANgKstICAAEEAQQA2AtS3gIAAA0AgA0HEtICAAGogA0G4tICAAGoiBDYCACAEIANBsLSAgABqIgU2AgAgA0G8tICAAGogBTYCACADQcy0gIAAaiADQcC0gIAAaiIFNgIAIAUgBDYCACADQdS0gIAAaiADQci0gIAAaiIENgIAIAQgBTYCACADQdC0gIAAaiAENgIAIANBIGoiA0GAAkcNAAsgAEF4IABrQQ9xQQAgAEEIakEPcRsiA2oiBCAGIANrQUhqIgNBAXI2AgRBAEEAKALwt4CAADYCpLSAgABBACAENgKgtICAAEEAIAM2ApS0gIAAIAYgAGpBTGpBODYCAAwCCyADLQAMQQhxDQAgBSAESw0AIAAgBE0NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoApS0gIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKALwt4CAADYCpLSAgABBACAFNgKUtICAAEEAIAA2AqC0gIAAIAsgBGpBBGpBODYCAAwBCwJAIABBACgCmLSAgAAiC08NAEEAIAA2Api0gIAAIAAhCwsgACAGaiEIQci3gIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgCEYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtByLeAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiBiACQQNyNgIEIAhBeCAIa0EPcUEAIAhBCGpBD3EbaiIIIAYgAmoiAmshBQJAIAQgCEcNAEEAIAI2AqC0gIAAQQBBACgClLSAgAAgBWoiAzYClLSAgAAgAiADQQFyNgIEDAMLAkBBACgCnLSAgAAgCEcNAEEAIAI2Apy0gIAAQQBBACgCkLSAgAAgBWoiAzYCkLSAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAgoAgQiA0EDcUEBRw0AIANBeHEhBwJAAkAgA0H/AUsNACAIKAIIIgQgA0EDdiILQQN0QbC0gIAAaiIARhoCQCAIKAIMIgMgBEcNAEEAQQAoAoi0gIAAQX4gC3dxNgKItICAAAwCCyADIABGGiADIAQ2AgggBCADNgIMDAELIAgoAhghCQJAAkAgCCgCDCIAIAhGDQAgCyAIKAIIIgNLGiAAIAM2AgggAyAANgIMDAELAkAgCEEUaiIDKAIAIgQNACAIQRBqIgMoAgAiBA0AQQAhAAwBCwNAIAMhCyAEIgBBFGoiAygCACIEDQAgAEEQaiEDIAAoAhAiBA0ACyALQQA2AgALIAlFDQACQAJAIAgoAhwiBEECdEG4toCAAGoiAygCACAIRw0AIAMgADYCACAADQFBAEEAKAKMtICAAEF+IAR3cTYCjLSAgAAMAgsgCUEQQRQgCSgCECAIRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgCCgCECIDRQ0AIAAgAzYCECADIAA2AhgLIAgoAhQiA0UNACAAQRRqIAM2AgAgAyAANgIYCyAHIAVqIQUgCCAHaiEICyAIIAgoAgRBfnE2AgQgAiAFaiAFNgIAIAIgBUEBcjYCBAJAIAVB/wFLDQAgBUEDdiIEQQN0QbC0gIAAaiEDAkACQEEAKAKItICAACIFQQEgBHQiBHENAEEAIAUgBHI2Aoi0gIAAIAMhBAwBCyADKAIIIQQLIAQgAjYCDCADIAI2AgggAiADNgIMIAIgBDYCCAwDC0EfIQMCQCAFQf///wdLDQAgBUEIdiIDIANBgP4/akEQdkEIcSIDdCIEIARBgOAfakEQdkEEcSIEdCIAIABBgIAPakEQdkECcSIAdEEPdiADIARyIAByayIDQQF0IAUgA0EVanZBAXFyQRxqIQMLIAIgAzYCHCACQgA3AhAgA0ECdEG4toCAAGohBAJAQQAoAoy0gIAAIgBBASADdCIIcQ0AIAQgAjYCAEEAIAAgCHI2Aoy0gIAAIAIgBDYCGCACIAI2AgggAiACNgIMDAMLIAVBAEEZIANBAXZrIANBH0YbdCEDIAQoAgAhAANAIAAiBCgCBEF4cSAFRg0CIANBHXYhACADQQF0IQMgBCAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBDYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBiADa0FIaiIDQQFyNgIEIAhBTGpBODYCACAEIAVBNyAFa0EPcUEAIAVBSWpBD3EbakFBaiIIIAggBEEQakkbIghBIzYCBEEAQQAoAvC3gIAANgKktICAAEEAIAs2AqC0gIAAQQAgAzYClLSAgAAgCEEQakEAKQLQt4CAADcCACAIQQApAsi3gIAANwIIQQAgCEEIajYC0LeAgABBACAGNgLMt4CAAEEAIAA2Asi3gIAAQQBBADYC1LeAgAAgCEEkaiEDA0AgA0EHNgIAIAUgA0EEaiIDSw0ACyAIIARGDQMgCCAIKAIEQX5xNgIEIAggCCAEayIGNgIAIAQgBkEBcjYCBAJAIAZB/wFLDQAgBkEDdiIFQQN0QbC0gIAAaiEDAkACQEEAKAKItICAACIAQQEgBXQiBXENAEEAIAAgBXI2Aoi0gIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAGQf///wdLDQAgBkEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiADIAVyIAByayIDQQF0IAYgA0EVanZBAXFyQRxqIQMLIARCADcCECAEQRxqIAM2AgAgA0ECdEG4toCAAGohBQJAQQAoAoy0gIAAIgBBASADdCIIcQ0AIAUgBDYCAEEAIAAgCHI2Aoy0gIAAIARBGGogBTYCACAEIAQ2AgggBCAENgIMDAQLIAZBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhAANAIAAiBSgCBEF4cSAGRg0DIANBHXYhACADQQF0IQMgBSAAQQRxakEQaiIIKAIAIgANAAsgCCAENgIAIARBGGogBTYCACAEIAQ2AgwgBCAENgIIDAMLIAQoAggiAyACNgIMIAQgAjYCCCACQQA2AhggAiAENgIMIAIgAzYCCAsgBkEIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQRhqQQA2AgAgBCAFNgIMIAQgAzYCCAtBACgClLSAgAAiAyACTQ0AQQAoAqC0gIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgKUtICAAEEAIAU2AqC0gIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYC+LeAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEG4toCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKMtICAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgAyAIakEEaiIDIAMoAgBBAXI2AgAMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEEDdiIEQQN0QbC0gIAAaiEDAkACQEEAKAKItICAACIFQQEgBHQiBHENAEEAIAUgBHI2Aoi0gIAAIAMhBAwBCyADKAIIIQQLIAQgADYCDCADIAA2AgggACADNgIMIAAgBDYCCAwBC0EfIQMCQCAEQf///wdLDQAgBEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCICIAJBgIAPakEQdkECcSICdEEPdiADIAVyIAJyayIDQQF0IAQgA0EVanZBAXFyQRxqIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEG4toCAAGohBQJAIAdBASADdCICcQ0AIAUgADYCAEEAIAcgAnI2Aoy0gIAAIAAgBTYCGCAAIAA2AgggACAANgIMDAELIARBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhAgJAA0AgAiIFKAIEQXhxIARGDQEgA0EddiECIANBAXQhAyAFIAJBBHFqQRBqIgYoAgAiAg0ACyAGIAA2AgAgACAFNgIYIAAgADYCDCAAIAA2AggMAQsgBSgCCCIDIAA2AgwgBSAANgIIIABBADYCGCAAIAU2AgwgACADNgIICyAIQQhqIQMMAQsCQCAKRQ0AAkACQCAAIAAoAhwiBUECdEG4toCAAGoiAygCAEcNACADIAg2AgAgCA0BQQAgCUF+IAV3cTYCjLSAgAAMAgsgCkEQQRQgCigCECAARhtqIAg2AgAgCEUNAQsgCCAKNgIYAkAgACgCECIDRQ0AIAggAzYCECADIAg2AhgLIABBFGooAgAiA0UNACAIQRRqIAM2AgAgAyAINgIYCwJAAkAgBEEPSw0AIAAgBCACaiIDQQNyNgIEIAMgAGpBBGoiAyADKAIAQQFyNgIADAELIAAgAmoiBSAEQQFyNgIEIAAgAkEDcjYCBCAFIARqIAQ2AgACQCAHRQ0AIAdBA3YiCEEDdEGwtICAAGohAkEAKAKctICAACEDAkACQEEBIAh0IgggBnENAEEAIAggBnI2Aoi0gIAAIAIhCAwBCyACKAIIIQgLIAggAzYCDCACIAM2AgggAyACNgIMIAMgCDYCCAtBACAFNgKctICAAEEAIAQ2ApC0gIAACyAAQQhqIQMLIAFBEGokgICAgAAgAwsKACAAEL2AgIAAC/ANAQd/AkAgAEUNACAAQXhqIgEgAEF8aigCACICQXhxIgBqIQMCQCACQQFxDQAgAkEDcUUNASABIAEoAgAiAmsiAUEAKAKYtICAACIESQ0BIAIgAGohAAJAQQAoApy0gIAAIAFGDQACQCACQf8BSw0AIAEoAggiBCACQQN2IgVBA3RBsLSAgABqIgZGGgJAIAEoAgwiAiAERw0AQQBBACgCiLSAgABBfiAFd3E2Aoi0gIAADAMLIAIgBkYaIAIgBDYCCCAEIAI2AgwMAgsgASgCGCEHAkACQCABKAIMIgYgAUYNACAEIAEoAggiAksaIAYgAjYCCCACIAY2AgwMAQsCQCABQRRqIgIoAgAiBA0AIAFBEGoiAigCACIEDQBBACEGDAELA0AgAiEFIAQiBkEUaiICKAIAIgQNACAGQRBqIQIgBigCECIEDQALIAVBADYCAAsgB0UNAQJAAkAgASgCHCIEQQJ0Qbi2gIAAaiICKAIAIAFHDQAgAiAGNgIAIAYNAUEAQQAoAoy0gIAAQX4gBHdxNgKMtICAAAwDCyAHQRBBFCAHKAIQIAFGG2ogBjYCACAGRQ0CCyAGIAc2AhgCQCABKAIQIgJFDQAgBiACNgIQIAIgBjYCGAsgASgCFCICRQ0BIAZBFGogAjYCACACIAY2AhgMAQsgAygCBCICQQNxQQNHDQAgAyACQX5xNgIEQQAgADYCkLSAgAAgASAAaiAANgIAIAEgAEEBcjYCBA8LIAMgAU0NACADKAIEIgJBAXFFDQACQAJAIAJBAnENAAJAQQAoAqC0gIAAIANHDQBBACABNgKgtICAAEEAQQAoApS0gIAAIABqIgA2ApS0gIAAIAEgAEEBcjYCBCABQQAoApy0gIAARw0DQQBBADYCkLSAgABBAEEANgKctICAAA8LAkBBACgCnLSAgAAgA0cNAEEAIAE2Apy0gIAAQQBBACgCkLSAgAAgAGoiADYCkLSAgAAgASAAQQFyNgIEIAEgAGogADYCAA8LIAJBeHEgAGohAAJAAkAgAkH/AUsNACADKAIIIgQgAkEDdiIFQQN0QbC0gIAAaiIGRhoCQCADKAIMIgIgBEcNAEEAQQAoAoi0gIAAQX4gBXdxNgKItICAAAwCCyACIAZGGiACIAQ2AgggBCACNgIMDAELIAMoAhghBwJAAkAgAygCDCIGIANGDQBBACgCmLSAgAAgAygCCCICSxogBiACNgIIIAIgBjYCDAwBCwJAIANBFGoiAigCACIEDQAgA0EQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0AAkACQCADKAIcIgRBAnRBuLaAgABqIgIoAgAgA0cNACACIAY2AgAgBg0BQQBBACgCjLSAgABBfiAEd3E2Aoy0gIAADAILIAdBEEEUIAcoAhAgA0YbaiAGNgIAIAZFDQELIAYgBzYCGAJAIAMoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyADKAIUIgJFDQAgBkEUaiACNgIAIAIgBjYCGAsgASAAaiAANgIAIAEgAEEBcjYCBCABQQAoApy0gIAARw0BQQAgADYCkLSAgAAPCyADIAJBfnE2AgQgASAAaiAANgIAIAEgAEEBcjYCBAsCQCAAQf8BSw0AIABBA3YiAkEDdEGwtICAAGohAAJAAkBBACgCiLSAgAAiBEEBIAJ0IgJxDQBBACAEIAJyNgKItICAACAAIQIMAQsgACgCCCECCyACIAE2AgwgACABNgIIIAEgADYCDCABIAI2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAFCADcCECABQRxqIAI2AgAgAkECdEG4toCAAGohBAJAAkBBACgCjLSAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCjLSAgAAgAUEYaiAENgIAIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABQRhqIAQ2AgAgASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEYakEANgIAIAEgBDYCDCABIAA2AggLQQBBACgCqLSAgABBf2oiAUF/IAEbNgKotICAAAsLTgACQCAADQA/AEEQdA8LAkAgAEH//wNxDQAgAEF/TA0AAkAgAEEQdkAAIgBBf0cNAEEAQTA2Avi3gIAAQX8PCyAAQRB0DwsQv4CAgAAACwQAAAALC44sAQBBgAgLhiwBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHBhcmFtZXRlcnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AATUtBQ1RJVklUWQBDT1BZAE5PVElGWQBQTEFZAFBVVABDSEVDS09VVABQT1NUAFJFUE9SVABIUEVfSU5WQUxJRF9DT05TVEFOVABHRVQASFBFX1NUUklDVABSRURJUkVDVABDT05ORUNUAEhQRV9JTlZBTElEX1NUQVRVUwBPUFRJT05TAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAEhQRV9JTlZBTElEX1VSTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUAUEFVU0UAUFVSR0UATUVSR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABQUk9QRklORABVTkJJTkQAUkVCSU5EAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQASFBFX1BBVVNFRABIRUFEAEV4cGVjdGVkIEhUVFAvANwLAADPCwAA0woAAJkNAAAQDAAAXQsAAF8NAAC1CwAAugoAAHMLAACcCwAA9QsAAHMMAADvCgAA3AwAAEcMAACHCwAAjwwAAL0MAAAvCwAApwwAAKkNAAAEDQAAFw0AACYLAACJDQAA1QwAAM8KAAC0DQAArgoAAKEKAADnCgAAAgsAAD0NAACQCgAA7AsAAMULAACKDAAAcg0AADQMAABADAAA6gsAAIQNAACCDQAAew0AAMsLAACzCgAAhQoAAKUKAAD+DAAAPgwAAJUKAABODQAATA0AADgMAAD4DAAAQwsAAOULAADjCwAALQ0AAPELAABDDQAANA0AAE4LAACcCgAA8gwAAFQLAAAYCwAACgsAAN4KAABYDQAALgwAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWxvc2VlZXAtYWxpdmUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZWN0aW9uZW50LWxlbmd0aG9ucm94eS1jb25uZWN0aW9uAAAAAAAAAAAAAAAAAAAAcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAAAAAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAEAAAIAAAAAAAAAAAAAAAAAAAAAAAADBAAABAQEBAQEBAQEBAQFBAQEBAQEBAQEBAQEAAQABgcEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAACAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv"; } }); -// lib/api/api-stream.js -var require_api_stream = __commonJS({ - "lib/api/api-stream.js"(exports2, module2) { +// lib/client.js +var require_client = __commonJS({ + "lib/client.js"(exports2, module2) { "use strict"; - var { finished } = require("stream"); + var assert = require("assert"); + var net = require("net"); + var util = require_util(); + var Request = require_request(); + var DispatcherBase = require_dispatcher_base(); + var RedirectHandler = require_redirect(); var { - InvalidArgumentError: InvalidArgumentError2, - InvalidReturnValueError, - RequestAbortedError + RequestContentLengthMismatchError, + ResponseContentLengthMismatchError, + InvalidArgumentError, + RequestAbortedError, + HeadersTimeoutError, + HeadersOverflowError, + SocketError, + InformationalError, + BodyTimeoutError, + HTTPParserError } = require_errors(); - var util2 = require_util(); - var { AsyncResource } = require("async_hooks"); - var { addSignal, removeSignal } = require_abort_signal(); - var StreamHandler = class extends AsyncResource { - constructor(opts, factory, callback) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError2("invalid opts"); - } - const { signal, method, opaque, body, onInfo, responseHeaders } = opts; - try { - if (typeof callback !== "function") { - throw new InvalidArgumentError2("invalid callback"); - } - if (typeof factory !== "function") { - throw new InvalidArgumentError2("invalid factory"); - } - if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { - throw new InvalidArgumentError2("signal must be an EventEmitter or EventTarget"); - } - if (method === "CONNECT") { - throw new InvalidArgumentError2("invalid method"); - } - if (onInfo && typeof onInfo !== "function") { - throw new InvalidArgumentError2("invalid onInfo callback"); - } - super("UNDICI_STREAM"); - } catch (err) { - if (util2.isStream(body)) { - util2.destroy(body.on("error", util2.nop), err); - } - throw err; - } - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.factory = factory; - this.callback = callback; - this.res = null; - this.abort = null; - this.context = null; - this.trailers = null; - this.body = body; - this.onInfo = onInfo || null; - if (util2.isStream(body)) { - body.on("error", (err) => { - this.onError(err); - }); + var buildConnector = require_connect(); + var { + kUrl, + kReset, + kServerName, + kClient, + kBusy, + kParser, + kConnect, + kBlocking, + kResuming, + kRunning, + kPending, + kSize, + kWriting, + kQueue, + kConnected, + kConnecting, + kNeedDrain, + kNoRef, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kSocket, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kConnector, + kMaxRedirections, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch + } = require_symbols(); + var kClosedResolve = Symbol("kClosedResolve"); + var channels = {}; + try { + const diagnosticsChannel = require("diagnostics_channel"); + channels.sendHeaders = diagnosticsChannel.channel("undici:client:sendHeaders"); + channels.beforeConnect = diagnosticsChannel.channel("undici:client:beforeConnect"); + channels.connectError = diagnosticsChannel.channel("undici:client:connectError"); + channels.connected = diagnosticsChannel.channel("undici:client:connected"); + } catch { + channels.sendHeaders = { hasSubscribers: false }; + channels.beforeConnect = { hasSubscribers: false }; + channels.connectError = { hasSubscribers: false }; + channels.connected = { hasSubscribers: false }; + } + var Client = class extends DispatcherBase { + constructor(url, { + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + maxRedirections, + connect: connect2, + maxRequestsPerClient + } = {}) { + super(); + if (keepAlive !== void 0) { + throw new InvalidArgumentError("unsupported keepAlive, use pipelining=0 instead"); } - addSignal(this, signal); - } - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); + if (socketTimeout !== void 0) { + throw new InvalidArgumentError("unsupported socketTimeout, use headersTimeout & bodyTimeout instead"); } - this.abort = abort; - this.context = context; - } - onHeaders(statusCode, rawHeaders, resume) { - const { factory, opaque, context } = this; - if (statusCode < 200) { - if (this.onInfo) { - const headers2 = this.responseHeaders === "raw" ? util2.parseRawHeaders(rawHeaders) : util2.parseHeaders(rawHeaders); - this.onInfo({ statusCode, headers: headers2 }); - } - return; + if (requestTimeout !== void 0) { + throw new InvalidArgumentError("unsupported requestTimeout, use headersTimeout & bodyTimeout instead"); } - this.factory = null; - const headers = this.responseHeaders === "raw" ? util2.parseRawHeaders(rawHeaders) : util2.parseHeaders(rawHeaders); - const res = this.runInAsyncScope(factory, null, { - statusCode, - headers, - opaque, - context - }); - if (!res || typeof res.write !== "function" || typeof res.end !== "function" || typeof res.on !== "function") { - throw new InvalidReturnValueError("expected Writable"); + if (idleTimeout !== void 0) { + throw new InvalidArgumentError("unsupported idleTimeout, use keepAliveTimeout instead"); } - res.on("drain", resume); - finished(res, { readable: false }, (err) => { - const { callback, res: res2, opaque: opaque2, trailers, abort } = this; - this.res = null; - if (err || !res2.readable) { - util2.destroy(res2, err); - } - this.callback = null; - this.runInAsyncScope(callback, null, err || null, { opaque: opaque2, trailers }); - if (err) { - abort(); - } - }); - this.res = res; - const needDrain = res.writableNeedDrain !== void 0 ? res.writableNeedDrain : res._writableState && res._writableState.needDrain; - return needDrain !== true; - } - onData(chunk) { - const { res } = this; - return res.write(chunk); - } - onComplete(trailers) { - const { res } = this; - removeSignal(this); - this.trailers = util2.parseHeaders(trailers); - res.end(); - } - onError(err) { - const { res, callback, opaque, body } = this; - removeSignal(this); - this.factory = null; - if (res) { - this.res = null; - util2.destroy(res, err); - } else if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); + if (maxKeepAliveTimeout !== void 0) { + throw new InvalidArgumentError("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead"); } - if (body) { - this.body = null; - util2.destroy(body, err); + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError("invalid maxHeaderSize"); } - } - }; - function stream(opts, factory, callback) { - if (callback === void 0) { - return new Promise((resolve, reject) => { - stream.call(this, opts, factory, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - try { - this.dispatch(opts, new StreamHandler(opts, factory, callback)); - } catch (err) { - if (typeof callback !== "function") { - throw err; + if (socketPath != null && typeof socketPath !== "string") { + throw new InvalidArgumentError("invalid socketPath"); } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } - module2.exports = stream; - } -}); - -// lib/api/api-pipeline.js -var require_api_pipeline = __commonJS({ - "lib/api/api-pipeline.js"(exports2, module2) { - "use strict"; - var { - Readable, - Duplex, - PassThrough - } = require("stream"); - var { - InvalidArgumentError: InvalidArgumentError2, - InvalidReturnValueError, - RequestAbortedError - } = require_errors(); - var util2 = require_util(); - var { AsyncResource } = require("async_hooks"); - var { addSignal, removeSignal } = require_abort_signal(); - var assert = require("assert"); - var kResume = Symbol("resume"); - var PipelineRequest = class extends Readable { - constructor() { - super({ autoDestroy: true }); - this[kResume] = null; - } - _read() { - const { [kResume]: resume } = this; - if (resume) { - this[kResume] = null; - resume(); + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError("invalid connectTimeout"); } - } - _destroy(err, callback) { - this._read(); - callback(err); - } - }; - var PipelineResponse = class extends Readable { - constructor(resume) { - super({ autoDestroy: true }); - this[kResume] = resume; - } - _read() { - this[kResume](); - } - _destroy(err, callback) { - if (!err && !this._readableState.endEmitted) { - err = new RequestAbortedError(); + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError("invalid keepAliveTimeout"); } - callback(err); - } - }; - var PipelineHandler = class extends AsyncResource { - constructor(opts, handler) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError2("invalid opts"); + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError("invalid keepAliveMaxTimeout"); } - if (typeof handler !== "function") { - throw new InvalidArgumentError2("invalid handler"); + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError("invalid keepAliveTimeoutThreshold"); } - const { signal, method, opaque, onInfo, responseHeaders } = opts; - if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { - throw new InvalidArgumentError2("signal must be an EventEmitter or EventTarget"); + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError("headersTimeout must be a positive integer or zero"); } - if (method === "CONNECT") { - throw new InvalidArgumentError2("invalid method"); + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError("bodyTimeout must be a positive integer or zero"); } - if (onInfo && typeof onInfo !== "function") { - throw new InvalidArgumentError2("invalid onInfo callback"); + if (connect2 != null && typeof connect2 !== "function" && typeof connect2 !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); } - super("UNDICI_PIPELINE"); - this.opaque = opaque || null; - this.responseHeaders = responseHeaders || null; - this.handler = handler; - this.abort = null; - this.context = null; - this.onInfo = onInfo || null; - this.req = new PipelineRequest().on("error", util2.nop); - this.ret = new Duplex({ - readableObjectMode: opts.objectMode, - autoDestroy: true, - read: () => { - const { body } = this; - if (body && body.resume) { - body.resume(); - } - }, - write: (chunk, encoding, callback) => { - const { req } = this; - if (req.push(chunk, encoding) || req._readableState.destroyed) { - callback(); - } else { - req[kResume] = callback; - } - }, - destroy: (err, callback) => { - const { body, req, res, ret, abort } = this; - if (!err && !ret._readableState.endEmitted) { - err = new RequestAbortedError(); - } - if (abort && err) { - abort(); - } - util2.destroy(body, err); - util2.destroy(req, err); - util2.destroy(res, err); - removeSignal(this); - callback(err); - } - }).on("prefinish", () => { - const { req } = this; - req.push(null); - }); - this.res = null; - addSignal(this, signal); - } - onConnect(abort, context) { - const { ret, res } = this; - assert(!res, "pipeline cannot be retried"); - if (ret.destroyed) { - throw new RequestAbortedError(); + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); } - this.abort = abort; - this.context = context; - } - onHeaders(statusCode, rawHeaders, resume) { - const { opaque, handler, context } = this; - if (statusCode < 200) { - if (this.onInfo) { - const headers = this.responseHeaders === "raw" ? util2.parseRawHeaders(rawHeaders) : util2.parseHeaders(rawHeaders); - this.onInfo({ statusCode, headers }); - } - return; + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError("maxRequestsPerClient must be a positive number"); } - this.res = new PipelineResponse(resume); - let body; - try { - this.handler = null; - const headers = this.responseHeaders === "raw" ? util2.parseRawHeaders(rawHeaders) : util2.parseHeaders(rawHeaders); - body = this.runInAsyncScope(handler, null, { - statusCode, - headers, - opaque, - body: this.res, - context + if (typeof connect2 !== "function") { + connect2 = buildConnector({ + ...tls, + maxCachedSessions, + socketPath, + timeout: connectTimeout, + ...connect2 }); - } catch (err) { - this.res.on("error", util2.nop); - throw err; } - if (!body || typeof body.on !== "function") { - throw new InvalidReturnValueError("expected Readable"); - } - body.on("data", (chunk) => { - const { ret, body: body2 } = this; - if (!ret.push(chunk) && body2.pause) { - body2.pause(); - } - }).on("error", (err) => { - const { ret } = this; - util2.destroy(ret, err); - }).on("end", () => { - const { ret } = this; - ret.push(null); - }).on("close", () => { - const { ret } = this; - if (!ret._readableState.ended) { - util2.destroy(ret, new RequestAbortedError()); - } - }); - this.body = body; - } - onData(chunk) { - const { res } = this; - return res.push(chunk); - } - onComplete(trailers) { - const { res } = this; - res.push(null); - } - onError(err) { - const { ret } = this; - this.handler = null; - util2.destroy(ret, err); - } - }; - function pipeline(opts, handler) { - try { - const pipelineHandler = new PipelineHandler(opts, handler); - this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler); - return pipelineHandler.ret; - } catch (err) { - return new PassThrough().destroy(err); + this[kUrl] = util.parseOrigin(url); + this[kConnector] = connect2; + this[kSocket] = null; + this[kPipelining] = pipelining != null ? pipelining : 1; + this[kMaxHeadersSize] = maxHeaderSize || 16384; + this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; + this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout; + this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold; + this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]; + this[kServerName] = null; + this[kResuming] = 0; + this[kNeedDrain] = 0; + this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}\r +`; + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e4; + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e4; + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; + this[kMaxRedirections] = maxRedirections; + this[kMaxRequests] = maxRequestsPerClient; + this[kClosedResolve] = null; + this[kQueue] = []; + this[kRunningIdx] = 0; + this[kPendingIdx] = 0; } - } - module2.exports = pipeline; - } -}); - -// lib/api/api-upgrade.js -var require_api_upgrade = __commonJS({ - "lib/api/api-upgrade.js"(exports2, module2) { - "use strict"; - var { InvalidArgumentError: InvalidArgumentError2, RequestAbortedError, SocketError } = require_errors(); - var { AsyncResource } = require("async_hooks"); - var util2 = require_util(); - var { addSignal, removeSignal } = require_abort_signal(); - var assert = require("assert"); - var UpgradeHandler = class extends AsyncResource { - constructor(opts, callback) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError2("invalid opts"); - } - if (typeof callback !== "function") { - throw new InvalidArgumentError2("invalid callback"); - } - const { signal, opaque, responseHeaders } = opts; - if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { - throw new InvalidArgumentError2("signal must be an EventEmitter or EventTarget"); - } - super("UNDICI_UPGRADE"); - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.callback = callback; - this.abort = null; - this.context = null; - addSignal(this, signal); + get pipelining() { + return this[kPipelining]; } - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); - } - this.abort = abort; - this.context = null; - } - onHeaders() { - throw new SocketError("bad upgrade", null); - } - onUpgrade(statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this; - assert.strictEqual(statusCode, 101); - removeSignal(this); - this.callback = null; - const headers = this.responseHeaders === "raw" ? util2.parseRawHeaders(rawHeaders) : util2.parseHeaders(rawHeaders); - this.runInAsyncScope(callback, null, null, { - headers, - socket, - opaque, - context - }); + set pipelining(value) { + this[kPipelining] = value; + resume(this, true); } - onError(err) { - const { callback, opaque } = this; - removeSignal(this); - if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } + get [kPending]() { + return this[kQueue].length - this[kPendingIdx]; } - }; - function upgrade(opts, callback) { - if (callback === void 0) { - return new Promise((resolve, reject) => { - upgrade.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); + get [kRunning]() { + return this[kPendingIdx] - this[kRunningIdx]; } - try { - const upgradeHandler = new UpgradeHandler(opts, callback); - this.dispatch({ - ...opts, - method: opts.method || "GET", - upgrade: opts.protocol || "Websocket" - }, upgradeHandler); - } catch (err) { - if (typeof callback !== "function") { - throw err; - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); + get [kSize]() { + return this[kQueue].length - this[kRunningIdx]; } - } - module2.exports = upgrade; - } -}); - -// lib/api/api-connect.js -var require_api_connect = __commonJS({ - "lib/api/api-connect.js"(exports2, module2) { - "use strict"; - var { InvalidArgumentError: InvalidArgumentError2, RequestAbortedError, SocketError } = require_errors(); - var { AsyncResource } = require("async_hooks"); - var util2 = require_util(); - var { addSignal, removeSignal } = require_abort_signal(); - var ConnectHandler = class extends AsyncResource { - constructor(opts, callback) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError2("invalid opts"); + get [kConnected]() { + return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed; + } + get [kBusy]() { + const socket = this[kSocket]; + return socket && (socket[kReset] || socket[kWriting] || socket[kBlocking]) || this[kSize] >= (this[kPipelining] || 1) || this[kPending] > 0; + } + [kConnect](cb) { + connect(this); + this.once("connect", cb); + } + [kDispatch](opts, handler) { + const { maxRedirections = this[kMaxRedirections] } = opts; + if (maxRedirections) { + handler = new RedirectHandler(this, maxRedirections, opts, handler); } - if (typeof callback !== "function") { - throw new InvalidArgumentError2("invalid callback"); + const origin = opts.origin || this[kUrl].origin; + const request = new Request(origin, opts, handler); + this[kQueue].push(request); + if (this[kResuming]) { + } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { + this[kResuming] = 1; + process.nextTick(resume, this); + } else { + resume(this, true); } - const { signal, opaque, responseHeaders } = opts; - if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { - throw new InvalidArgumentError2("signal must be an EventEmitter or EventTarget"); + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2; } - super("UNDICI_CONNECT"); - this.opaque = opaque || null; - this.responseHeaders = responseHeaders || null; - this.callback = callback; - this.abort = null; - addSignal(this, signal); + return this[kNeedDrain] < 2; } - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); - } - this.abort = abort; - this.context = context; - } - onHeaders() { - throw new SocketError("bad connect", null); - } - onUpgrade(statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this; - removeSignal(this); - this.callback = null; - const headers = this.responseHeaders === "raw" ? util2.parseRawHeaders(rawHeaders) : util2.parseHeaders(rawHeaders); - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - socket, - opaque, - context + async [kClose]() { + return new Promise((resolve) => { + if (!this[kSize]) { + this.destroy(resolve); + } else { + this[kClosedResolve] = resolve; + } }); } - onError(err) { - const { callback, opaque } = this; - removeSignal(this); - if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - } - }; - function connect(opts, callback) { - if (callback === void 0) { - return new Promise((resolve, reject) => { - connect.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data); - }); + async [kDestroy](err) { + return new Promise((resolve) => { + const requests = this[kQueue].splice(this[kPendingIdx]); + for (let i = 0; i < requests.length; i++) { + const request = requests[i]; + errorRequest(this, request, err); + } + const callback = () => { + if (this[kClosedResolve]) { + this[kClosedResolve](); + this[kClosedResolve] = null; + } + resolve(); + }; + if (!this[kSocket]) { + queueMicrotask(callback); + } else { + util.destroy(this[kSocket].on("close", callback), err); + } + resume(this); }); } - try { - const connectHandler = new ConnectHandler(opts, callback); - this.dispatch({ ...opts, method: "CONNECT" }, connectHandler); - } catch (err) { - if (typeof callback !== "function") { - throw err; - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } - module2.exports = connect; - } -}); - -// lib/api/index.js -var require_api = __commonJS({ - "lib/api/index.js"(exports2, module2) { - "use strict"; - module2.exports.request = require_api_request(); - module2.exports.stream = require_api_stream(); - module2.exports.pipeline = require_api_pipeline(); - module2.exports.upgrade = require_api_upgrade(); - module2.exports.connect = require_api_connect(); - } -}); - -// lib/mock/mock-errors.js -var require_mock_errors = __commonJS({ - "lib/mock/mock-errors.js"(exports2, module2) { - "use strict"; - var { UndiciError } = require_errors(); - var MockNotMatchedError = class extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, MockNotMatchedError); - this.name = "MockNotMatchedError"; - this.message = message || "The request does not match any registered mock dispatches"; - this.code = "UND_MOCK_ERR_MOCK_NOT_MATCHED"; - } - }; - module2.exports = { - MockNotMatchedError - }; - } -}); - -// lib/mock/mock-symbols.js -var require_mock_symbols = __commonJS({ - "lib/mock/mock-symbols.js"(exports2, module2) { - "use strict"; - module2.exports = { - kAgent: Symbol("agent"), - kOptions: Symbol("options"), - kFactory: Symbol("factory"), - kDispatches: Symbol("dispatches"), - kDispatchKey: Symbol("dispatch key"), - kDefaultHeaders: Symbol("default headers"), - kDefaultTrailers: Symbol("default trailers"), - kContentLength: Symbol("content length"), - kMockAgent: Symbol("mock agent"), - kMockAgentSet: Symbol("mock agent set"), - kMockAgentGet: Symbol("mock agent get"), - kMockDispatch: Symbol("mock dispatch"), - kClose: Symbol("close"), - kOriginalClose: Symbol("original agent close"), - kOrigin: Symbol("origin"), - kIsMockActive: Symbol("is mock active"), - kNetConnect: Symbol("net connect"), - kGetNetConnect: Symbol("get net connect"), - kConnected: Symbol("connected") }; - } -}); - -// lib/mock/mock-utils.js -var require_mock_utils = __commonJS({ - "lib/mock/mock-utils.js"(exports2, module2) { - "use strict"; - var { MockNotMatchedError } = require_mock_errors(); - var { - kDispatches, - kMockAgent, - kOriginalDispatch, - kOrigin, - kIsMockActive, - kGetNetConnect - } = require_mock_symbols(); - function matchValue(match, value) { - if (typeof match === "string") { - return match === value; - } - if (match instanceof RegExp) { - return match.test(value); - } - if (typeof match === "function") { - return match(value) === true; + var constants = require_constants2(); + var EMPTY_BUF = Buffer.alloc(0); + async function lazyllhttp() { + const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0; + let mod; + try { + mod = await WebAssembly.compile(Buffer.from(require_llhttp_simd_wasm(), "base64")); + } catch (e) { + mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require_llhttp_wasm(), "base64")); } - return false; - } - function lowerCaseEntries(headers) { - return Object.fromEntries(Object.entries(headers).map(([headerName, headerValue]) => { - return [headerName.toLocaleLowerCase(), headerValue]; - })); - } - function matchHeaders(mockDispatch2, headers) { - if (typeof mockDispatch2.headers === "function") { - if (Array.isArray(headers)) { - const clone = headers.slice(); - const entries = []; - for (let index = 0; index < clone.length; index += 2) { - entries.push([clone[index], clone[index + 1]]); + return await WebAssembly.instantiate(mod, { + env: { + wasm_on_url: (p, at, len) => { + return 0; + }, + wasm_on_status: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr; + const end = start + len; + return currentParser.onStatus(currentBufferRef.slice(start, end)) || 0; + }, + wasm_on_message_begin: (p) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onMessageBegin() || 0; + }, + wasm_on_header_field: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr; + const end = start + len; + return currentParser.onHeaderField(currentBufferRef.slice(start, end)) || 0; + }, + wasm_on_header_value: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr; + const end = start + len; + return currentParser.onHeaderValue(currentBufferRef.slice(start, end)) || 0; + }, + wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0; + }, + wasm_on_body: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p); + const start = at - currentBufferPtr; + const end = start + len; + return currentParser.onBody(currentBufferRef.slice(start, end)) || 0; + }, + wasm_on_message_complete: (p) => { + assert.strictEqual(currentParser.ptr, p); + return currentParser.onMessageComplete() || 0; } - headers = Object.fromEntries(entries); - } - return mockDispatch2.headers(headers ? lowerCaseEntries(headers) : {}); - } - if (typeof mockDispatch2.headers === "undefined") { - return true; - } - if (typeof headers !== "object" || typeof mockDispatch2.headers !== "object") { - return false; - } - for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch2.headers)) { - const header = typeof headers.get === "function" ? headers.get(matchHeaderName) : headers[matchHeaderName]; - if (!matchValue(matchHeaderValue, header)) { - return false; - } - } - return true; - } - function matchKey(mockDispatch2, { path, method, body, headers }) { - const pathMatch = matchValue(mockDispatch2.path, path); - const methodMatch = matchValue(mockDispatch2.method, method); - const bodyMatch = typeof mockDispatch2.body !== "undefined" ? matchValue(mockDispatch2.body, body) : true; - const headersMatch = matchHeaders(mockDispatch2, headers); - return pathMatch && methodMatch && bodyMatch && headersMatch; - } - function getResponseData(data) { - if (Buffer.isBuffer(data)) { - return data; - } else if (typeof data === "object") { - return JSON.stringify(data); - } else { - return data.toString(); - } - } - function getMockDispatch(mockDispatches, key) { - let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(path, key.path)); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for path '${key.path}'`); - } - matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`); - } - matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== "undefined" ? matchValue(body, key.body) : true); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`); - } - matchedMockDispatches = matchedMockDispatches.filter((mockDispatch2) => matchHeaders(mockDispatch2, key.headers)); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === "object" ? JSON.stringify(key.headers) : key.headers}'`); - } - return matchedMockDispatches[0]; - } - function addMockDispatch(mockDispatches, key, data) { - const baseData = { times: null, persist: false, consumed: false }; - const replyData = typeof data === "function" ? { callback: data } : { ...data }; - const newMockDispatch = { ...baseData, ...key, data: { error: null, ...replyData } }; - mockDispatches.push(newMockDispatch); - return newMockDispatch; - } - function deleteMockDispatch(mockDispatches, key) { - const index = mockDispatches.findIndex((dispatch) => { - if (!dispatch.consumed) { - return false; } - return matchKey(dispatch, key); }); - if (index !== -1) { - mockDispatches.splice(index, 1); - } - } - function buildKey(opts) { - const { path, method, body, headers } = opts; - return { - path, - method, - body, - headers - }; - } - function generateKeyValues(data) { - return Object.entries(data).reduce((keyValuePairs, [key, value]) => [...keyValuePairs, key, value], []); - } - async function getResponse(body) { - const buffers = []; - for await (const data of body) { - buffers.push(data); - } - return Buffer.concat(buffers).toString("utf8"); } - function mockDispatch(opts, handler) { - const key = buildKey(opts); - const mockDispatch2 = getMockDispatch(this[kDispatches], key); - if (mockDispatch2.data.callback) { - mockDispatch2.data = { ...mockDispatch2.data, ...mockDispatch2.data.callback(opts) }; - } - const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch2; - let { times } = mockDispatch2; - if (typeof times === "number" && times > 0) { - times = --mockDispatch2.times; - } - if (!(persist === true || typeof times === "number" && times > 0)) { - mockDispatch2.consumed = true; - } - if (error !== null) { - deleteMockDispatch(this[kDispatches], key); - handler.onError(error); - return true; + var llhttpInstance = null; + var llhttpPromise = lazyllhttp().catch(() => { + }); + var currentParser = null; + var currentBufferRef = null; + var currentBufferSize = 0; + var currentBufferPtr = null; + var TIMEOUT_HEADERS = 1; + var TIMEOUT_BODY = 2; + var TIMEOUT_IDLE = 3; + var Parser = class { + constructor(client, socket, { exports: exports3 }) { + assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0); + this.llhttp = exports3; + this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE); + this.client = client; + this.socket = socket; + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.statusCode = null; + this.statusText = ""; + this.upgrade = false; + this.headers = []; + this.headersSize = 0; + this.headersMaxSize = client[kMaxHeadersSize]; + this.shouldKeepAlive = false; + this.paused = false; + this.resume = this.resume.bind(this); + this.bytesRead = 0; + this.keepAlive = ""; + this.contentLength = ""; } - if (typeof delay === "number" && delay > 0) { - setTimeout(() => { - handleReply(this[kDispatches]); - }, delay); - } else { - handleReply(this[kDispatches]); + setTimeout(value, type) { + this.timeoutType = type; + if (value !== this.timeoutValue) { + clearTimeout(this.timeout); + if (value) { + this.timeout = setTimeout(onParserTimeout, value, this); + if (this.timeout.unref) { + this.timeout.unref(); + } + } else { + this.timeout = null; + } + this.timeoutValue = value; + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } } - function handleReply(mockDispatches) { - const responseData = getResponseData(typeof data === "function" ? data(opts) : data); - const responseHeaders = generateKeyValues(headers); - const responseTrailers = generateKeyValues(trailers); - handler.onHeaders(statusCode, responseHeaders, resume); - handler.onData(Buffer.from(responseData)); - handler.onComplete(responseTrailers); - deleteMockDispatch(mockDispatches, key); + resume() { + if (this.socket.destroyed || !this.paused) { + return; + } + assert(this.ptr != null); + assert(currentParser == null); + this.llhttp.llhttp_resume(this.ptr); + assert(this.timeoutType === TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + this.paused = false; + this.execute(this.socket.read() || EMPTY_BUF); + this.readMore(); } - function resume() { + readMore() { + while (!this.paused && this.ptr) { + const chunk = this.socket.read(); + if (chunk === null) { + break; + } + this.execute(chunk); + } } - return true; - } - function buildMockDispatch() { - const agent = this[kMockAgent]; - const origin = this[kOrigin]; - const originalDispatch = this[kOriginalDispatch]; - return function dispatch(opts, handler) { - if (agent[kIsMockActive]) { + execute(data) { + assert(this.ptr != null); + assert(currentParser == null); + assert(!this.paused); + const { socket, llhttp } = this; + if (data.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr); + } + currentBufferSize = Math.ceil(data.length / 4096) * 4096; + currentBufferPtr = llhttp.malloc(currentBufferSize); + } + new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data); + try { + let ret; try { - mockDispatch.call(this, opts, handler); - } catch (error) { - if (error instanceof MockNotMatchedError) { - const netConnect = agent[kGetNetConnect](); - if (netConnect === false) { - throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`); - } - if (checkNetConnect(netConnect, origin)) { - originalDispatch.call(this, opts, handler); - } else { - throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`); - } - } else { - throw error; + currentBufferRef = data; + currentParser = this; + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length); + } catch (err) { + throw err; + } finally { + currentParser = null; + currentBufferRef = null; + } + const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr; + if (ret === constants.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(data.slice(offset)); + } else if (ret === constants.ERROR.PAUSED) { + this.paused = true; + socket.unshift(data.slice(offset)); + } else if (ret !== constants.ERROR.OK) { + const ptr = llhttp.llhttp_get_error_reason(this.ptr); + let message = ""; + if (ptr) { + const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0); + message = Buffer.from(llhttp.memory.buffer, ptr, len).toString(); } + throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)); } - } else { - originalDispatch.call(this, opts, handler); + } catch (err) { + util.destroy(socket, err); } - }; - } - function checkNetConnect(netConnect, origin) { - const url = new URL(origin); - if (netConnect === true) { - return true; - } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) { - return true; } - return false; - } - function buildMockOptions(opts) { - if (opts) { - const { agent, ...mockOptions } = opts; - return mockOptions; + finish() { + try { + try { + currentParser = this; + } finally { + currentParser = null; + } + } catch (err) { + util.destroy(this.socket, err); + } } - } - module2.exports = { - getResponseData, - getMockDispatch, - addMockDispatch, - deleteMockDispatch, - buildKey, - generateKeyValues, - matchValue, - getResponse, - mockDispatch, - buildMockDispatch, - checkNetConnect, - buildMockOptions - }; - } -}); - -// lib/mock/mock-interceptor.js -var require_mock_interceptor = __commonJS({ - "lib/mock/mock-interceptor.js"(exports2, module2) { - "use strict"; - var { getResponseData, buildKey, addMockDispatch } = require_mock_utils(); - var { - kDispatches, - kDispatchKey, - kDefaultHeaders, - kDefaultTrailers, - kContentLength, - kMockDispatch - } = require_mock_symbols(); - var { InvalidArgumentError: InvalidArgumentError2 } = require_errors(); - var MockScope = class { - constructor(mockDispatch) { - this[kMockDispatch] = mockDispatch; - } - delay(waitInMs) { - if (typeof waitInMs !== "number" || !Number.isInteger(waitInMs) || waitInMs <= 0) { - throw new InvalidArgumentError2("waitInMs must be a valid integer > 0"); - } - this[kMockDispatch].delay = waitInMs; - return this; + destroy() { + assert(this.ptr != null); + assert(currentParser == null); + this.llhttp.llhttp_free(this.ptr); + this.ptr = null; + clearTimeout(this.timeout); + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.paused = false; } - persist() { - this[kMockDispatch].persist = true; - return this; + onStatus(buf) { + this.statusText = buf.toString(); } - times(repeatTimes) { - if (typeof repeatTimes !== "number" || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { - throw new InvalidArgumentError2("repeatTimes must be a valid integer > 0"); + onMessageBegin() { + const { socket, client } = this; + if (socket.destroyed) { + return -1; } - this[kMockDispatch].times = repeatTimes; - return this; - } - }; - var MockInterceptor = class { - constructor(opts, mockDispatches) { - if (typeof opts !== "object") { - throw new InvalidArgumentError2("opts must be an object"); - } - if (typeof opts.path === "undefined") { - throw new InvalidArgumentError2("opts.path must be defined"); - } - if (typeof opts.method === "undefined") { - opts.method = "GET"; - } - if (typeof opts.path === "string") { - const parsedURL = new URL(opts.path, "data://"); - opts.path = parsedURL.pathname + parsedURL.search; - } - this[kDispatchKey] = buildKey(opts); - this[kDispatches] = mockDispatches; - this[kDefaultHeaders] = {}; - this[kDefaultTrailers] = {}; - this[kContentLength] = false; - } - createMockScopeDispatchData(statusCode, data, responseOptions = {}) { - const responseData = getResponseData(data); - const contentLength = this[kContentLength] ? { "content-length": responseData.length } : {}; - const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }; - const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }; - return { statusCode, data, headers, trailers }; - } - validateReplyParameters(statusCode, data, responseOptions) { - if (typeof statusCode === "undefined") { - throw new InvalidArgumentError2("statusCode must be defined"); - } - if (typeof data === "undefined") { - throw new InvalidArgumentError2("data must be defined"); - } - if (typeof responseOptions !== "object") { - throw new InvalidArgumentError2("responseOptions must be an object"); - } - } - reply(replyData) { - if (typeof replyData === "function") { - const wrappedDefaultsCallback = (opts) => { - const resolvedData = replyData(opts); - if (typeof resolvedData !== "object") { - throw new InvalidArgumentError2("reply options callback must return an object"); - } - const { statusCode: statusCode2, data: data2, responseOptions: responseOptions2 = {} } = resolvedData; - this.validateReplyParameters(statusCode2, data2, responseOptions2); - return { - ...this.createMockScopeDispatchData(statusCode2, data2, responseOptions2) - }; - }; - const newMockDispatch2 = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback); - return new MockScope(newMockDispatch2); + const request = client[kQueue][client[kRunningIdx]]; + if (!request) { + return -1; } - const [statusCode, data, responseOptions = {}] = [...arguments]; - this.validateReplyParameters(statusCode, data, responseOptions); - const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions); - const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData); - return new MockScope(newMockDispatch); } - replyWithError(error) { - if (typeof error === "undefined") { - throw new InvalidArgumentError2("error must be defined"); + onHeaderField(buf) { + const len = this.headers.length; + if ((len & 1) === 0) { + this.headers.push(buf); + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); } - const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }); - return new MockScope(newMockDispatch); + this.trackHeader(buf.length); } - defaultReplyHeaders(headers) { - if (typeof headers === "undefined") { - throw new InvalidArgumentError2("headers must be defined"); + onHeaderValue(buf) { + let len = this.headers.length; + if ((len & 1) === 1) { + this.headers.push(buf); + len += 1; + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); } - this[kDefaultHeaders] = headers; - return this; - } - defaultReplyTrailers(trailers) { - if (typeof trailers === "undefined") { - throw new InvalidArgumentError2("trailers must be defined"); + const key = this.headers[len - 2]; + if (key.length === 10 && key.toString().toLowerCase() === "keep-alive") { + this.keepAlive += buf.toString(); + } else if (key.length === 14 && key.toString().toLowerCase() === "content-length") { + this.contentLength += buf.toString(); } - this[kDefaultTrailers] = trailers; - return this; - } - replyContentLength() { - this[kContentLength] = true; - return this; - } - }; - module2.exports.MockInterceptor = MockInterceptor; - module2.exports.MockScope = MockScope; - } -}); - -// lib/mock/mock-client.js -var require_mock_client = __commonJS({ - "lib/mock/mock-client.js"(exports2, module2) { - "use strict"; - var { promisify } = require("util"); - var Client2 = require_client(); - var { buildMockDispatch } = require_mock_utils(); - var { - kDispatches, - kMockAgent, - kClose, - kOriginalClose, - kOrigin, - kOriginalDispatch, - kConnected - } = require_mock_symbols(); - var { MockInterceptor } = require_mock_interceptor(); - var Symbols = require_symbols(); - var { InvalidArgumentError: InvalidArgumentError2 } = require_errors(); - var MockClient2 = class extends Client2 { - constructor(origin, opts) { - super(origin, opts); - if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { - throw new InvalidArgumentError2("Argument opts.agent must implement Agent"); - } - this[kMockAgent] = opts.agent; - this[kOrigin] = origin; - this[kDispatches] = []; - this[kConnected] = 1; - this[kOriginalDispatch] = this.dispatch; - this[kOriginalClose] = this.close.bind(this); - this.dispatch = buildMockDispatch.call(this); - this.close = this[kClose]; - } - get [Symbols.kConnected]() { - return this[kConnected]; - } - intercept(opts) { - return new MockInterceptor(opts, this[kDispatches]); - } - async [kClose]() { - await promisify(this[kOriginalClose])(); - this[kConnected] = 0; - this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); - } - }; - module2.exports = MockClient2; - } -}); - -// lib/mock/mock-pool.js -var require_mock_pool = __commonJS({ - "lib/mock/mock-pool.js"(exports2, module2) { - "use strict"; - var { promisify } = require("util"); - var Pool2 = require_pool(); - var { buildMockDispatch } = require_mock_utils(); - var { - kDispatches, - kMockAgent, - kClose, - kOriginalClose, - kOrigin, - kOriginalDispatch, - kConnected - } = require_mock_symbols(); - var { MockInterceptor } = require_mock_interceptor(); - var Symbols = require_symbols(); - var { InvalidArgumentError: InvalidArgumentError2 } = require_errors(); - var MockPool2 = class extends Pool2 { - constructor(origin, opts) { - super(origin, opts); - if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { - throw new InvalidArgumentError2("Argument opts.agent must implement Agent"); - } - this[kMockAgent] = opts.agent; - this[kOrigin] = origin; - this[kDispatches] = []; - this[kConnected] = 1; - this[kOriginalDispatch] = this.dispatch; - this[kOriginalClose] = this.close.bind(this); - this.dispatch = buildMockDispatch.call(this); - this.close = this[kClose]; - } - get [Symbols.kConnected]() { - return this[kConnected]; - } - intercept(opts) { - return new MockInterceptor(opts, this[kDispatches]); - } - async [kClose]() { - await promisify(this[kOriginalClose])(); - this[kConnected] = 0; - this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); - } - }; - module2.exports = MockPool2; - } -}); - -// lib/mock/mock-agent.js -var require_mock_agent = __commonJS({ - "lib/mock/mock-agent.js"(exports2, module2) { - "use strict"; - var { kClients } = require_symbols(); - var Agent2 = require_agent(); - var { - kAgent, - kMockAgentSet, - kMockAgentGet, - kDispatches, - kIsMockActive, - kNetConnect, - kGetNetConnect, - kOptions, - kFactory - } = require_mock_symbols(); - var MockClient2 = require_mock_client(); - var MockPool2 = require_mock_pool(); - var { matchValue, buildMockOptions } = require_mock_utils(); - var { InvalidArgumentError: InvalidArgumentError2 } = require_errors(); - var Dispatcher2 = require_dispatcher(); - var FakeWeakRef = class { - constructor(value) { - this.value = value; - } - deref() { - return this.value; + this.trackHeader(buf.length); } - }; - var MockAgent2 = class extends Dispatcher2 { - constructor(opts) { - super(opts); - this[kNetConnect] = true; - this[kIsMockActive] = true; - if (opts && opts.agent && typeof opts.agent.dispatch !== "function") { - throw new InvalidArgumentError2("Argument opts.agent must implement Agent"); - } - const agent = opts && opts.agent ? opts.agent : new Agent2(opts); - this[kAgent] = agent; - this[kClients] = agent[kClients]; - this[kOptions] = buildMockOptions(opts); - } - get(origin) { - let dispatcher = this[kMockAgentGet](origin); - if (!dispatcher) { - dispatcher = this[kFactory](origin); - this[kMockAgentSet](origin, dispatcher); + trackHeader(len) { + this.headersSize += len; + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()); } - return dispatcher; - } - dispatch(opts, handler) { - this.get(opts.origin); - return this[kAgent].dispatch(opts, handler); - } - async close() { - await this[kAgent].close(); - this[kClients].clear(); } - deactivate() { - this[kIsMockActive] = false; - } - activate() { - this[kIsMockActive] = true; + onUpgrade(head) { + const { upgrade, client, socket, headers, statusCode } = this; + assert(upgrade); + const request = client[kQueue][client[kRunningIdx]]; + assert(request); + assert(!socket.destroyed); + assert(socket === client[kSocket]); + assert(!this.paused); + assert(request.upgrade || request.method === "CONNECT"); + this.statusCode = null; + this.statusText = ""; + this.shouldKeepAlive = null; + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + socket.unshift(head); + socket[kParser].destroy(); + socket[kParser] = null; + socket[kClient] = null; + socket[kError] = null; + socket.removeListener("error", onSocketError).removeListener("readable", onSocketReadable).removeListener("end", onSocketEnd).removeListener("close", onSocketClose); + client[kSocket] = null; + client[kQueue][client[kRunningIdx]++] = null; + client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade")); + try { + request.onUpgrade(statusCode, headers, socket); + } catch (err) { + util.destroy(socket, err); + } + resume(client); } - enableNetConnect(matcher) { - if (typeof matcher === "string" || typeof matcher === "function" || matcher instanceof RegExp) { - if (Array.isArray(this[kNetConnect])) { - this[kNetConnect].push(matcher); + onHeadersComplete(statusCode, upgrade, shouldKeepAlive) { + const { client, socket, headers, statusText } = this; + if (socket.destroyed) { + return -1; + } + const request = client[kQueue][client[kRunningIdx]]; + if (!request) { + return -1; + } + assert(!this.upgrade); + assert(this.statusCode < 200); + if (statusCode === 100) { + util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket))); + return -1; + } + if (upgrade && !request.upgrade) { + util.destroy(socket, new SocketError("bad upgrade", util.getSocketInfo(socket))); + return -1; + } + assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS); + this.statusCode = statusCode; + this.shouldKeepAlive = shouldKeepAlive; + if (this.statusCode >= 200) { + const bodyTimeout = request.bodyTimeout != null ? request.bodyTimeout : client[kBodyTimeout]; + this.setTimeout(bodyTimeout, TIMEOUT_BODY); + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + if (request.method === "CONNECT") { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + if (upgrade) { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + if (shouldKeepAlive && client[kPipelining]) { + const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null; + if (keepAliveTimeout != null) { + const timeout = Math.min(keepAliveTimeout - client[kKeepAliveTimeoutThreshold], client[kKeepAliveMaxTimeout]); + if (timeout <= 0) { + socket[kReset] = true; + } else { + client[kKeepAliveTimeoutValue] = timeout; + } } else { - this[kNetConnect] = [matcher]; + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]; } - } else if (typeof matcher === "undefined") { - this[kNetConnect] = true; } else { - throw new InvalidArgumentError2("Unsupported matcher. Must be one of String|Function|RegExp."); + socket[kReset] = true; } + let pause; + try { + pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false; + } catch (err) { + util.destroy(socket, err); + return -1; + } + if (request.method === "HEAD") { + assert(socket[kReset]); + return 1; + } + if (statusCode < 200) { + return 1; + } + if (socket[kBlocking]) { + socket[kBlocking] = false; + resume(client); + } + return pause ? constants.ERROR.PAUSED : 0; } - disableNetConnect() { - this[kNetConnect] = false; - } - [kMockAgentSet](origin, dispatcher) { - this[kClients].set(origin, new FakeWeakRef(dispatcher)); - } - [kFactory](origin) { - const mockOptions = Object.assign({ agent: this }, this[kOptions]); - return this[kOptions] && this[kOptions].connections === 1 ? new MockClient2(origin, mockOptions) : new MockPool2(origin, mockOptions); - } - [kMockAgentGet](origin) { - const ref = this[kClients].get(origin); - if (ref) { - return ref.deref(); + onBody(buf) { + const { client, socket, statusCode } = this; + if (socket.destroyed) { + return -1; } - if (typeof origin !== "string") { - const dispatcher = this[kFactory]("http://localhost:9999"); - this[kMockAgentSet](origin, dispatcher); - return dispatcher; + const request = client[kQueue][client[kRunningIdx]]; + assert(request); + assert.strictEqual(this.timeoutType, TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } } - for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { - const nonExplicitDispatcher = nonExplicitRef.deref(); - if (nonExplicitDispatcher && typeof keyMatcher !== "string" && matchValue(keyMatcher, origin)) { - const dispatcher = this[kFactory](origin); - this[kMockAgentSet](origin, dispatcher); - dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]; - return dispatcher; + assert(statusCode >= 200); + this.bytesRead += buf.length; + try { + if (request.onData(buf) === false) { + return constants.ERROR.PAUSED; } + } catch (err) { + util.destroy(socket, err); + return -1; } } - [kGetNetConnect]() { - return this[kNetConnect]; + onMessageComplete() { + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this; + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1; + } + if (upgrade) { + return; + } + const request = client[kQueue][client[kRunningIdx]]; + assert(request); + assert(statusCode >= 100); + this.statusCode = null; + this.statusText = ""; + this.bytesRead = 0; + this.contentLength = ""; + this.keepAlive = ""; + assert(this.headers.length % 2 === 0); + this.headers = []; + this.headersSize = 0; + if (statusCode < 200) { + return; + } + if (request.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) { + util.destroy(socket, new ResponseContentLengthMismatchError()); + return -1; + } + try { + request.onComplete(headers); + } catch (err) { + errorRequest(client, request, err); + } + client[kQueue][client[kRunningIdx]++] = null; + if (socket[kWriting]) { + assert.strictEqual(client[kRunning], 0); + util.destroy(socket, new InformationalError("reset")); + return constants.ERROR.PAUSED; + } else if (!shouldKeepAlive) { + util.destroy(socket, new InformationalError("reset")); + return constants.ERROR.PAUSED; + } else if (socket[kReset] && client[kRunning] === 0) { + util.destroy(socket, new InformationalError("reset")); + return constants.ERROR.PAUSED; + } else if (client[kPipelining] === 1) { + setImmediate(resume, client); + } else { + resume(client); + } } }; - module2.exports = MockAgent2; - } -}); - -// lib/proxy-agent.js -var require_proxy_agent = __commonJS({ - "lib/proxy-agent.js"(exports2, module2) { - "use strict"; - var { kProxy, kClose, kDestroy } = require_symbols(); - var { URL: URL2 } = require("url"); - var Agent2 = require_agent(); - var DispatcherBase = require_dispatcher_base(); - var { InvalidArgumentError: InvalidArgumentError2 } = require_errors(); - var kAgent = Symbol("proxy agent"); - var ProxyAgent2 = class extends DispatcherBase { - constructor(opts) { - super(opts); - this[kProxy] = buildProxyOptions(opts); - this[kAgent] = new Agent2(opts); - } - dispatch(opts, handler) { - const { host } = new URL2(opts.origin); - return this[kAgent].dispatch({ - ...opts, - origin: this[kProxy].uri, - path: opts.origin + opts.path, - headers: { - ...opts.headers, - host - } - }, handler); - } - async [kClose]() { - await this[kAgent].close(); + function onParserTimeout(parser) { + const { socket, timeoutType, client } = parser; + if (timeoutType === TIMEOUT_HEADERS) { + assert(!parser.paused, "cannot be paused while waiting for headers"); + util.destroy(socket, new HeadersTimeoutError()); + } else if (timeoutType === TIMEOUT_BODY) { + if (!parser.paused) { + util.destroy(socket, new BodyTimeoutError()); + } + } else if (timeoutType === TIMEOUT_IDLE) { + assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); + util.destroy(socket, new InformationalError("socket idle timeout")); } - async [kDestroy]() { - await this[kAgent].destroy(); + } + function onSocketReadable() { + const { [kParser]: parser } = this; + parser.readMore(); + } + function onSocketError(err) { + const { [kParser]: parser } = this; + assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); + if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) { + parser.finish(); + return; } - }; - function buildProxyOptions(opts) { - if (typeof opts === "string") { - opts = { uri: opts }; + this[kError] = err; + onError(this[kClient], err); + } + function onError(client, err) { + if (client[kRunning] === 0 && err.code !== "UND_ERR_INFO" && err.code !== "UND_ERR_SOCKET") { + assert(client[kPendingIdx] === client[kRunningIdx]); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request = requests[i]; + errorRequest(client, request, err); + } + assert(client[kSize] === 0); } - if (!opts || !opts.uri) { - throw new InvalidArgumentError2("Proxy opts.uri is mandatory"); + } + function onSocketEnd() { + const { [kParser]: parser } = this; + if (parser.statusCode && !parser.shouldKeepAlive) { + parser.finish(); + return; } - return { - uri: opts.uri, - protocol: opts.protocol || "https" - }; + util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this))); } - module2.exports = ProxyAgent2; - } -}); - -// lib/fetch/symbols.js -var require_symbols2 = __commonJS({ - "lib/fetch/symbols.js"(exports2, module2) { - "use strict"; - module2.exports = { - kUrl: Symbol("url"), - kHeaders: Symbol("headers"), - kSignal: Symbol("signal"), - kState: Symbol("state"), - kGuard: Symbol("guard"), - kRealm: Symbol("realm") - }; - } -}); - -// lib/fetch/constants.js -var require_constants2 = __commonJS({ - "lib/fetch/constants.js"(exports2, module2) { - "use strict"; - var forbiddenHeaderNames = [ - "accept-charset", - "accept-encoding", - "access-control-request-headers", - "access-control-request-method", - "connection", - "content-length", - "cookie", - "cookie2", - "date", - "dnt", - "expect", - "host", - "keep-alive", - "origin", - "referer", - "te", - "trailer", - "transfer-encoding", - "upgrade", - "via" - ]; - var corsSafeListedMethods = ["GET", "HEAD", "POST"]; - var nullBodyStatus = [101, 204, 205, 304]; - var redirectStatus = [301, 302, 303, 307, 308]; - var referrerPolicy = [ - "", - "no-referrer", - "no-referrer-when-downgrade", - "same-origin", - "origin", - "strict-origin", - "origin-when-cross-origin", - "strict-origin-when-cross-origin", - "unsafe-url" - ]; - var requestRedirect = ["follow", "manual", "error"]; - var safeMethods = ["GET", "HEAD", "OPTIONS", "TRACE"]; - var requestMode = ["navigate", "same-origin", "no-cors", "cors"]; - var requestCredentials = ["omit", "same-origin", "include"]; - var requestCache = [ - "default", - "no-store", - "reload", - "no-cache", - "force-cache", - "only-if-cached" - ]; - var forbiddenResponseHeaderNames = ["set-cookie", "set-cookie2"]; - var requestBodyHeader = [ - "content-encoding", - "content-language", - "content-location", - "content-type" - ]; - var forbiddenMethods = ["CONNECT", "TRACE", "TRACK"]; - var subresource = [ - "audio", - "audioworklet", - "font", - "image", - "manifest", - "paintworklet", - "script", - "style", - "track", - "video", - "xslt", - "" - ]; - var corsSafeListedResponseHeaderNames = []; - module2.exports = { - subresource, - forbiddenResponseHeaderNames, - corsSafeListedResponseHeaderNames, - forbiddenMethods, - requestBodyHeader, - referrerPolicy, - requestRedirect, - requestMode, - requestCredentials, - requestCache, - forbiddenHeaderNames, - redirectStatus, - corsSafeListedMethods, - nullBodyStatus, - safeMethods - }; - } -}); - -// lib/fetch/headers.js -var require_headers = __commonJS({ - "lib/fetch/headers.js"(exports2, module2) { - "use strict"; - var { validateHeaderName, validateHeaderValue } = require("http"); - var { kHeadersList } = require_symbols(); - var { kGuard } = require_symbols2(); - var { kEnumerableProperty } = require_util(); - var { - forbiddenHeaderNames, - forbiddenResponseHeaderNames - } = require_constants2(); - function binarySearch(arr, val) { - let low = 0; - let high = Math.floor(arr.length / 2); - while (high > low) { - const mid = high + low >>> 1; - if (val.localeCompare(arr[mid * 2]) > 0) { - low = mid + 1; + function onSocketClose() { + const { [kClient]: client } = this; + this[kParser].destroy(); + this[kParser] = null; + const err = this[kError] || new SocketError("closed", util.getSocketInfo(this)); + client[kSocket] = null; + if (client.destroyed) { + assert(client[kPending] === 0); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request = requests[i]; + errorRequest(client, request, err); + } + } else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") { + const request = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + errorRequest(client, request, err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + resume(client); + } + async function connect(client) { + assert(!client[kConnecting]); + assert(!client[kSocket]); + let { host, hostname, protocol, port } = client[kUrl]; + if (hostname[0] === "[") { + const idx = hostname.indexOf("]"); + assert(idx !== -1); + const ip = hostname.substr(1, idx - 1); + assert(net.isIP(ip)); + hostname = ip; + } + client[kConnecting] = true; + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName] + }, + connector: client[kConnector] + }); + } + try { + const socket = await new Promise((resolve, reject) => { + client[kConnector]({ + host, + hostname, + protocol, + port, + servername: client[kServerName] + }, (err, socket2) => { + if (err) { + reject(err); + } else { + resolve(socket2); + } + }); + }); + if (!llhttpInstance) { + llhttpInstance = await llhttpPromise; + llhttpPromise = null; + } + client[kConnecting] = false; + assert(socket); + client[kSocket] = socket; + socket[kNoRef] = false; + socket[kWriting] = false; + socket[kReset] = false; + socket[kBlocking] = false; + socket[kError] = null; + socket[kParser] = new Parser(client, socket, llhttpInstance); + socket[kClient] = client; + socket[kCounter] = 0; + socket[kMaxRequests] = client[kMaxRequests]; + socket.on("error", onSocketError).on("readable", onSocketReadable).on("end", onSocketEnd).on("close", onSocketClose); + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName] + }, + connector: client[kConnector], + socket + }); + } + client.emit("connect", client[kUrl], [client]); + } catch (err) { + client[kConnecting] = false; + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName] + }, + connector: client[kConnector], + error: err + }); + } + if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") { + assert(client[kRunning] === 0); + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request = client[kQueue][client[kPendingIdx]++]; + errorRequest(client, request, err); + } } else { - high = mid; + onError(client, err); } + client.emit("connectionError", client[kUrl], [client], err); } - return low * 2; + resume(client); } - function normalizeAndValidateHeaderName(name) { - if (name === void 0) { - throw new TypeError(`Header name ${name}`); - } - const normalizedHeaderName = name.toLocaleLowerCase(); - validateHeaderName(normalizedHeaderName); - return normalizedHeaderName; + function emitDrain(client) { + client[kNeedDrain] = 0; + client.emit("drain", client[kUrl], [client]); } - function normalizeAndValidateHeaderValue(name, value) { - if (value === void 0) { - throw new TypeError(value, name); + function resume(client, sync) { + if (client[kResuming] === 2) { + return; + } + client[kResuming] = 2; + _resume(client, sync); + client[kResuming] = 0; + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]); + client[kPendingIdx] -= client[kRunningIdx]; + client[kRunningIdx] = 0; } - const normalizedHeaderValue = `${value}`.replace(/^[\n\t\r\x20]+|[\n\t\r\x20]+$/g, ""); - validateHeaderValue(name, normalizedHeaderValue); - return normalizedHeaderValue; } - function fill(headers, object) { - if (object[Symbol.iterator]) { - for (let header of object) { - if (!header[Symbol.iterator]) { - throw new TypeError(); + function _resume(client, sync) { + while (true) { + if (client.destroyed) { + assert(client[kPending] === 0); + return; + } + if (client.closed && !client[kSize]) { + client.destroy(); + return; + } + const socket = client[kSocket]; + if (socket) { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref(); + socket[kNoRef] = true; + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref(); + socket[kNoRef] = false; } - if (typeof header === "string") { - throw new TypeError(); + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE); + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + const request2 = client[kQueue][client[kRunningIdx]]; + const headersTimeout = request2.headersTimeout != null ? request2.headersTimeout : client[kHeadersTimeout]; + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); + } } - if (!Array.isArray(header)) { - header = [...header]; + } + if (client[kBusy]) { + client[kNeedDrain] = 2; + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1; + process.nextTick(emitDrain, client); + } else { + emitDrain(client); } - if (header.length !== 2) { - throw new TypeError(); + continue; + } + if (client[kPending] === 0) { + return; + } + if (client[kRunning] >= (client[kPipelining] || 1)) { + return; + } + const request = client[kQueue][client[kPendingIdx]]; + if (client[kUrl].protocol === "https:" && client[kServerName] !== request.servername) { + if (client[kRunning] > 0) { + return; + } + client[kServerName] = request.servername; + if (socket && socket.servername !== request.servername) { + util.destroy(socket, new InformationalError("servername changed")); + return; } - headers.append(header[0], header[1]); } - } else if (object && typeof object === "object") { - for (const header of Object.entries(object)) { - headers.append(header[0], header[1]); + if (client[kConnecting]) { + return; } - } else { - throw TypeError(); - } - } - var HeadersList = class extends Array { - append(name, value) { - const normalizedName = normalizeAndValidateHeaderName(name); - const normalizedValue = normalizeAndValidateHeaderValue(name, value); - const index = binarySearch(this, normalizedName); - if (this[index] === normalizedName) { - this[index + 1] += `, ${normalizedValue}`; + if (!socket) { + connect(client); + continue; + } + if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { + return; + } + if (client[kRunning] > 0 && !request.idempotent) { + return; + } + if (client[kRunning] > 0 && (request.upgrade || request.method === "CONNECT")) { + return; + } + if (util.isStream(request.body) && util.bodyLength(request.body) === 0) { + request.body.on("data", function() { + assert(false); + }).on("error", function(err) { + errorRequest(client, request, err); + }).on("end", function() { + util.destroy(this); + }); + request.body = null; + } + if (client[kRunning] > 0 && (util.isStream(request.body) || util.isAsyncIterable(request.body))) { + return; + } + if (!request.aborted && write(client, request)) { + client[kPendingIdx]++; } else { - this.splice(index, 0, normalizedName, normalizedValue); + client[kQueue].splice(client[kPendingIdx], 1); } } - delete(name) { - const normalizedName = normalizeAndValidateHeaderName(name); - const index = binarySearch(this, normalizedName); - if (this[index] === normalizedName) { - this.splice(index, 2); - } + } + function write(client, request) { + const { body, method, path, host, upgrade, headers, blocking } = request; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + if (body && typeof body.read === "function") { + body.read(0); } - get(name) { - const normalizedName = normalizeAndValidateHeaderName(name); - const index = binarySearch(this, normalizedName); - if (this[index] === normalizedName) { - return this[index + 1]; - } - return null; + let contentLength = util.bodyLength(body); + if (contentLength === null) { + contentLength = request.contentLength; } - has(name) { - const normalizedName = normalizeAndValidateHeaderName(name); - const index = binarySearch(this, normalizedName); - return this[index] === normalizedName; + if (contentLength === 0 && !expectsPayload) { + contentLength = null; } - set(name, value) { - const normalizedName = normalizeAndValidateHeaderName(name); - const normalizedValue = normalizeAndValidateHeaderValue(name, value); - const index = binarySearch(this, normalizedName); - if (this[index] === normalizedName) { - this[index + 1] = normalizedValue; - } else { - this.splice(index, 0, normalizedName, normalizedValue); + if (request.contentLength !== null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()); + return false; } + process.emitWarning(new RequestContentLengthMismatchError()); } - }; - var Headers = class { - constructor(...args) { - if (args[0] !== void 0 && !(typeof args[0] === "object" && args[0] != null) && !Array.isArray(args[0])) { - throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(record or sequence>"); - } - const init = args.length >= 1 ? args[0] ?? {} : {}; - this[kHeadersList] = new HeadersList(); - this[kGuard] = "none"; - fill(this, init); + const socket = client[kSocket]; + try { + request.onConnect((err) => { + if (request.aborted || request.completed) { + return; + } + errorRequest(client, request, err || new RequestAbortedError()); + util.destroy(socket, new InformationalError("aborted")); + }); + } catch (err) { + errorRequest(client, request, err); + } + if (request.aborted) { + return false; + } + if (method === "HEAD") { + socket[kReset] = true; + } + if (upgrade || method === "CONNECT") { + socket[kReset] = true; + } + if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { + socket[kReset] = true; + } + if (blocking) { + socket[kBlocking] = true; } - get [Symbol.toStringTag]() { - if (!(this instanceof Headers)) { - throw new TypeError("Illegal invocation"); - } - return this.constructor.name; + let header = `${method} ${path} HTTP/1.1\r +`; + if (typeof host === "string") { + header += `host: ${host}\r +`; + } else { + header += client[kHostHeader]; } - toString() { - if (!(this instanceof Headers)) { - throw new TypeError("Illegal invocation"); - } - return Object.prototype.toString.call(this); + if (upgrade) { + header += `connection: upgrade\r +upgrade: ${upgrade}\r +`; + } else if (client[kPipelining]) { + header += "connection: keep-alive\r\n"; + } else { + header += "connection: close\r\n"; } - append(...args) { - if (!(this instanceof Headers)) { - throw new TypeError("Illegal invocation"); - } - if (args.length < 2) { - throw new TypeError(`Failed to execute 'append' on 'Headers': 2 arguments required, but only ${args.length} present.`); - } - const normalizedName = normalizeAndValidateHeaderName(String(args[0])); - if (this[kGuard] === "immutable") { - throw new TypeError("immutable"); - } else if (this[kGuard] === "request" && forbiddenHeaderNames.includes(normalizedName)) { - return; - } else if (this[kGuard] === "request-no-cors") { - } else if (this[kGuard] === "response" && forbiddenResponseHeaderNames.includes(normalizedName)) { - return; - } - return this[kHeadersList].append(String(args[0]), String(args[1])); + if (headers) { + header += headers; } - delete(...args) { - if (!(this instanceof Headers)) { - throw new TypeError("Illegal invocation"); - } - if (args.length < 1) { - throw new TypeError(`Failed to execute 'delete' on 'Headers': 1 argument required, but only ${args.length} present.`); - } - const normalizedName = normalizeAndValidateHeaderName(String(args[0])); - if (this[kGuard] === "immutable") { - throw new TypeError("immutable"); - } else if (this[kGuard] === "request" && forbiddenHeaderNames.includes(normalizedName)) { - return; - } else if (this[kGuard] === "request-no-cors") { - } else if (this[kGuard] === "response" && forbiddenResponseHeaderNames.includes(normalizedName)) { - return; - } - return this[kHeadersList].delete(String(args[0])); + if (channels.sendHeaders.hasSubscribers) { + channels.sendHeaders.publish({ request, headers: header, socket }); } - get(...args) { - if (!(this instanceof Headers)) { - throw new TypeError("Illegal invocation"); - } - if (args.length < 1) { - throw new TypeError(`Failed to execute 'get' on 'Headers': 1 argument required, but only ${args.length} present.`); + if (!body) { + if (contentLength === 0) { + socket.write(`${header}content-length: 0\r +\r +`, "ascii"); + } else { + assert(contentLength === null, "no body must not have content length"); + socket.write(`${header}\r +`, "ascii"); } - return this[kHeadersList].get(String(args[0])); - } - has(...args) { - if (!(this instanceof Headers)) { - throw new TypeError("Illegal invocation"); + request.onRequestSent(); + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, "buffer body must have content length"); + socket.cork(); + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "ascii"); + socket.write(body); + socket.uncork(); + request.onBodySent(body); + request.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; } - if (args.length < 1) { - throw new TypeError(`Failed to execute 'has' on 'Headers': 1 argument required, but only ${args.length} present.`); + } else if (util.isBlobLike(body)) { + if (typeof body.stream === "function") { + writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload }); + } else { + writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }); } - return this[kHeadersList].has(String(args[0])); + } else if (util.isStream(body)) { + writeStream({ body, client, request, socket, contentLength, header, expectsPayload }); + } else if (util.isIterable(body)) { + writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }); + } else { + assert(false); } - set(...args) { - if (!(this instanceof Headers)) { - throw new TypeError("Illegal invocation"); + return true; + } + function writeStream({ body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined"); + let finished = false; + const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }); + const onData = function(chunk) { + try { + assert(!finished); + if (!writer.write(chunk) && this.pause) { + this.pause(); + } + } catch (err) { + util.destroy(this, err); } - if (args.length < 2) { - throw new TypeError(`Failed to execute 'set' on 'Headers': 2 arguments required, but only ${args.length} present.`); + }; + const onDrain = function() { + assert(!finished); + if (body.resume) { + body.resume(); } - const normalizedName = normalizeAndValidateHeaderName(String(args[0])); - if (this[kGuard] === "immutable") { - throw new TypeError("immutable"); - } else if (this[kGuard] === "request" && forbiddenHeaderNames.includes(normalizedName)) { - return; - } else if (this[kGuard] === "request-no-cors") { - } else if (this[kGuard] === "response" && forbiddenResponseHeaderNames.includes(normalizedName)) { + }; + const onAbort = function() { + onFinished(new RequestAbortedError()); + }; + const onFinished = function(err) { + if (finished) { return; } - return this[kHeadersList].set(String(args[0]), String(args[1])); - } - *keys() { - const clone = this[kHeadersList].slice(); - for (let index = 0; index < clone.length; index += 2) { - yield clone[index]; - } - } - *values() { - const clone = this[kHeadersList].slice(); - for (let index = 1; index < clone.length; index += 2) { - yield clone[index]; + finished = true; + assert(socket.destroyed || socket[kWriting] && client[kRunning] <= 1); + socket.off("drain", onDrain).off("error", onFinished); + body.removeListener("data", onData).removeListener("end", onFinished).removeListener("error", onFinished).removeListener("close", onAbort); + if (!err) { + try { + writer.end(); + } catch (er) { + err = er; + } } - } - *entries() { - const clone = this[kHeadersList].slice(); - for (let index = 0; index < clone.length; index += 2) { - yield [clone[index], clone[index + 1]]; + writer.destroy(err); + if (err && (err.code !== "UND_ERR_INFO" || err.message !== "reset")) { + util.destroy(body, err); + } else { + util.destroy(body); } + }; + body.on("data", onData).on("end", onFinished).on("error", onFinished).on("close", onAbort); + if (body.resume) { + body.resume(); } - forEach(...args) { - if (!(this instanceof Headers)) { - throw new TypeError("Illegal invocation"); - } - if (args.length < 1) { - throw new TypeError(`Failed to execute 'forEach' on 'Headers': 1 argument required, but only ${args.length} present.`); - } - if (typeof args[0] !== "function") { - throw new TypeError("Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'."); - } - const callback = args[0]; - const thisArg = args[1]; - const clone = this[kHeadersList].slice(); - for (let index = 0; index < clone.length; index += 2) { - callback.call(thisArg, clone[index + 1], clone[index], this); + socket.on("drain", onDrain).on("error", onFinished); + } + async function writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength === body.size, "blob body must have content length"); + try { + if (contentLength != null && contentLength !== body.size) { + throw new RequestContentLengthMismatchError(); } - } - [Symbol.for("nodejs.util.inspect.custom")]() { - if (!(this instanceof Headers)) { - throw new TypeError("Illegal invocation"); + const buffer = Buffer.from(await body.arrayBuffer()); + socket.cork(); + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "ascii"); + socket.write(buffer); + socket.uncork(); + request.onBodySent(buffer); + request.onRequestSent(); + if (!expectsPayload) { + socket[kReset] = true; } - return this[kHeadersList]; - } - }; - Headers.prototype[Symbol.iterator] = Headers.prototype.entries; - Object.defineProperties(Headers.prototype, { - append: kEnumerableProperty, - delete: kEnumerableProperty, - get: kEnumerableProperty, - has: kEnumerableProperty, - set: kEnumerableProperty, - keys: kEnumerableProperty, - values: kEnumerableProperty, - entries: kEnumerableProperty, - forEach: kEnumerableProperty - }); - module2.exports = { - fill, - Headers, - HeadersList, - binarySearch, - normalizeAndValidateHeaderName, - normalizeAndValidateHeaderValue - }; - } -}); - -// lib/fetch/file.js -var require_file = __commonJS({ - "lib/fetch/file.js"(exports2, module2) { - "use strict"; - var { Blob } = require("buffer"); - var { kState } = require_symbols2(); - var File = class extends Blob { - constructor(fileBits, fileName, options = {}) { - const n = fileName; - const t = options.type; - const d = options.lastModified ?? Date.now(); - super(fileBits, { type: t }); - this[kState] = { - name: n, - lastModified: d - }; + resume(client); + } catch (err) { + util.destroy(socket, err); } - get name() { - if (!(this instanceof File)) { - throw new TypeError("Illegal invocation"); + } + async function writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined"); + let callback = null; + function onDrain() { + if (callback) { + const cb = callback; + callback = null; + cb(); } - return this[kState].name; } - get lastModified() { - if (!(this instanceof File)) { - throw new TypeError("Illegal invocation"); + const waitForDrain = () => new Promise((resolve, reject) => { + assert(callback === null); + if (socket[kError]) { + reject(socket[kError]); + } else { + callback = resolve; } - return this[kState].lastModified; - } - get [Symbol.toStringTag]() { - if (!(this instanceof File)) { - throw new TypeError("Illegal invocation"); + }); + socket.on("close", onDrain).on("drain", onDrain); + const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }); + try { + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError]; + } + if (!writer.write(chunk)) { + await waitForDrain(); + } } - return this.constructor.name; + writer.end(); + } catch (err) { + writer.destroy(err); + } finally { + socket.off("close", onDrain).off("drain", onDrain); } - }; - var FileLike = class { - constructor(blobLike, fileName, options = {}) { - const n = fileName; - const t = options.type; - const d = options.lastModified ?? Date.now(); - this[kState] = { - blobLike, - name: n, - type: t, - lastModified: d - }; + } + var AsyncWriter = class { + constructor({ socket, request, contentLength, client, expectsPayload, header }) { + this.socket = socket; + this.request = request; + this.contentLength = contentLength; + this.client = client; + this.bytesWritten = 0; + this.expectsPayload = expectsPayload; + this.header = header; + socket[kWriting] = true; } - stream(...args) { - if (!(this instanceof FileLike)) { - throw new TypeError("Illegal invocation"); + write(chunk) { + const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this; + if (socket[kError]) { + throw socket[kError]; } - return this[kState].blobLike.stream(...args); - } - arrayBuffer(...args) { - if (!(this instanceof FileLike)) { - throw new TypeError("Illegal invocation"); + if (socket.destroyed) { + return false; } - return this[kState].blobLike.arrayBuffer(...args); - } - slice(...args) { - if (!(this instanceof FileLike)) { - throw new TypeError("Illegal invocation"); + const len = Buffer.byteLength(chunk); + if (!len) { + return true; } - return this[kState].blobLike.slice(...args); - } - text(...args) { - if (!(this instanceof FileLike)) { - throw new TypeError("Illegal invocation"); + if (contentLength !== null && bytesWritten + len > contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } + process.emitWarning(new RequestContentLengthMismatchError()); } - return this[kState].blobLike.text(...args); - } - get size() { - if (!(this instanceof FileLike)) { - throw new TypeError("Illegal invocation"); + if (bytesWritten === 0) { + if (!expectsPayload) { + socket[kReset] = true; + } + if (contentLength === null) { + socket.write(`${header}transfer-encoding: chunked\r +`, "ascii"); + } else { + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "ascii"); + } } - return this[kState].blobLike.size; - } - get type() { - if (!(this instanceof FileLike)) { - throw new TypeError("Illegal invocation"); + if (contentLength === null) { + socket.write(`\r +${len.toString(16)}\r +`, "ascii"); } - return this[kState].blobLike.type; + this.bytesWritten += len; + const ret = socket.write(chunk); + request.onBodySent(chunk); + return ret; } - get name() { - if (!(this instanceof FileLike)) { - throw new TypeError("Illegal invocation"); + end() { + const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this; + request.onRequestSent(); + socket[kWriting] = false; + if (socket[kError]) { + throw socket[kError]; } - return this[kState].name; - } - get lastModified() { - if (!(this instanceof FileLike)) { - throw new TypeError("Illegal invocation"); + if (socket.destroyed) { + return; } - return this[kState].lastModified; - } - get [Symbol.toStringTag]() { - if (!(this instanceof FileLike)) { - throw new TypeError("Illegal invocation"); + if (bytesWritten === 0) { + if (expectsPayload) { + socket.write(`${header}content-length: 0\r +\r +`, "ascii"); + } else { + socket.write(`${header}\r +`, "ascii"); + } + } else if (contentLength === null) { + socket.write("\r\n0\r\n\r\n", "ascii"); } - return "File"; - } - }; - module2.exports = { File: globalThis.File ?? File, FileLike }; - } -}); - -// lib/fetch/util.js -var require_util2 = __commonJS({ - "lib/fetch/util.js"(exports2, module2) { - "use strict"; - var { redirectStatus } = require_constants2(); - var { performance } = require("perf_hooks"); - var { isBlobLike, toUSVString, ReadableStreamFrom } = require_util(); - var File; - var badPorts = [ - "1", - "7", - "9", - "11", - "13", - "15", - "17", - "19", - "20", - "21", - "22", - "23", - "25", - "37", - "42", - "43", - "53", - "69", - "77", - "79", - "87", - "95", - "101", - "102", - "103", - "104", - "109", - "110", - "111", - "113", - "115", - "117", - "119", - "123", - "135", - "137", - "139", - "143", - "161", - "179", - "389", - "427", - "465", - "512", - "513", - "514", - "515", - "526", - "530", - "531", - "532", - "540", - "548", - "554", - "556", - "563", - "587", - "601", - "636", - "989", - "990", - "993", - "995", - "1719", - "1720", - "1723", - "2049", - "3659", - "4045", - "5060", - "5061", - "6000", - "6566", - "6665", - "6666", - "6667", - "6668", - "6669", - "6697", - "10080" - ]; - function responseURL(response) { - const urlList = response.urlList; - const length = urlList.length; - return length === 0 ? null : urlList[length - 1].toString(); - } - function responseLocationURL(response, requestFragment) { - if (!redirectStatus.includes(response.status)) { - return null; - } - let location = response.headersList.get("location"); - location = location ? new URL(location, responseURL(response)) : null; - if (location && !location.hash) { - location.hash = requestFragment; - } - return location; - } - function requestCurrentURL(request) { - return request.urlList[request.urlList.length - 1]; - } - function requestBadPort(request) { - const url = requestCurrentURL(request); - if (/^https?:/.test(url.protocol) && badPorts.includes(url.port)) { - return "blocked"; - } - return "allowed"; - } - function isFileLike(object) { - if (!File) { - File = require_file().File; - } - return object instanceof File || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && /^(File)$/.test(object[Symbol.toStringTag]); - } - function isValidReasonPhrase(statusText) { - for (let i = 0; i < statusText.length; ++i) { - const c = statusText.charCodeAt(i); - if (!(c === 9 || c >= 32 && c <= 126 || c >= 128 && c <= 255)) { - return false; + if (contentLength !== null && bytesWritten !== contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } else { + process.emitWarning(new RequestContentLengthMismatchError()); + } } + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + resume(client); } - return true; - } - function isTokenChar(c) { - return !(c >= 127 || c <= 32 || c === "(" || c === ")" || c === "<" || c === ">" || c === "@" || c === "," || c === ";" || c === ":" || c === "\\" || c === '"' || c === "/" || c === "[" || c === "]" || c === "?" || c === "=" || c === "{" || c === "}"); - } - function isValidHTTPToken(characters) { - if (!characters || typeof characters !== "string") { - return false; - } - for (let i = 0; i < characters.length; ++i) { - const c = characters.charCodeAt(i); - if (c > 127 || !isTokenChar(c)) { - return false; + destroy(err) { + const { socket, client } = this; + socket[kWriting] = false; + if (err) { + assert(client[kRunning] <= 1, "pipeline should only contain this request"); + util.destroy(socket, err); } } - return true; - } - function setRequestReferrerPolicyOnRedirect(request, actualResponse) { - const policy = ""; - if (policy !== "") { - request.referrerPolicy = policy; + }; + function errorRequest(client, request, err) { + try { + request.onError(err); + assert(request.aborted); + } catch (err2) { + client.emit("error", err2); } } - function crossOriginResourcePolicyCheck() { - return "allowed"; - } - function corsCheck() { - return "success"; - } - function TAOCheck() { - return "success"; - } - function appendFetchMetadata(httpRequest) { - let header = null; - header = httpRequest.mode; - httpRequest.headersList.set("sec-fetch-mode", header); + module2.exports = Client; + } +}); + +// lib/pool.js +var require_pool = __commonJS({ + "lib/pool.js"(exports2, module2) { + "use strict"; + var { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kGetDispatcher + } = require_pool_base(); + var Client = require_client(); + var { + InvalidArgumentError + } = require_errors(); + var util = require_util(); + var { kUrl } = require_symbols(); + var buildConnector = require_connect(); + var kOptions = Symbol("options"); + var kConnections = Symbol("connections"); + var kFactory = Symbol("factory"); + function defaultFactory(origin, opts) { + return new Client(origin, opts); } - function appendRequestOriginHeader(request) { - let serializedOrigin = request.origin; - if (request.responseTainting === "cors" || request.mode === "websocket") { - if (serializedOrigin) { - request.headersList.append("Origin", serializedOrigin); + var Pool = class extends PoolBase { + constructor(origin, { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + ...options + } = {}) { + super(); + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError("invalid connections"); } - } else if (request.method !== "GET" && request.method !== "HEAD") { - switch (request.referrerPolicy) { - case "no-referrer": - serializedOrigin = null; - break; - case "no-referrer-when-downgrade": - case "strict-origin": - case "strict-origin-when-cross-origin": - if (/^https:/.test(request.origin) && !/^https:/.test(requestCurrentURL(request))) { - serializedOrigin = null; - } - break; - case "same-origin": - if (!sameOrigin(request, requestCurrentURL(request))) { - serializedOrigin = null; - } - break; - default: + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); } - if (serializedOrigin) { - request.headersList.append("Origin", serializedOrigin); + if (connect != null && typeof connect !== "function" && typeof connect !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (typeof connect !== "function") { + connect = buildConnector({ + ...tls, + maxCachedSessions, + socketPath, + timeout: connectTimeout == null ? 1e4 : connectTimeout, + ...connect + }); } + this[kConnections] = connections || null; + this[kUrl] = util.parseOrigin(origin); + this[kOptions] = { ...util.deepClone(options), connect }; + this[kFactory] = factory; } - } - function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { - return performance.now(); - } - function createOpaqueTimingInfo(timingInfo) { + [kGetDispatcher]() { + let dispatcher = this[kClients].find((dispatcher2) => !dispatcher2[kNeedDrain]); + if (dispatcher) { + return dispatcher; + } + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + dispatcher = this[kFactory](this[kUrl], this[kOptions]); + this[kAddClient](dispatcher); + } + return dispatcher; + } + }; + module2.exports = Pool; + } +}); + +// lib/compat/dispatcher-weakref.js +var require_dispatcher_weakref = __commonJS({ + "lib/compat/dispatcher-weakref.js"(exports2, module2) { + "use strict"; + var { kConnected, kSize } = require_symbols(); + var CompatWeakRef = class { + constructor(value) { + this.value = value; + } + deref() { + return this.value[kConnected] === 0 && this.value[kSize] === 0 ? void 0 : this.value; + } + }; + var CompatFinalizer = class { + constructor(finalizer) { + this.finalizer = finalizer; + } + register(dispatcher, key) { + dispatcher.on("disconnect", () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key); + } + }); + } + }; + module2.exports = function() { return { - startTime: timingInfo.startTime ?? 0, - redirectStartTime: 0, - redirectEndTime: 0, - postRedirectStartTime: timingInfo.startTime ?? 0, - finalServiceWorkerStartTime: 0, - finalNetworkResponseStartTime: 0, - finalNetworkRequestStartTime: 0, - endTime: 0, - encodedBodySize: 0, - decodedBodySize: 0, - finalConnectionTimingInfo: null + WeakRef: global.WeakRef || CompatWeakRef, + FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer }; - } - function makePolicyContainer() { - return {}; - } - function clonePolicyContainer() { - return {}; - } - function determineRequestsReferrer(request) { - return "no-referrer"; - } - function matchRequestIntegrity(request, bytes) { - return false; - } - function tryUpgradeRequestToAPotentiallyTrustworthyURL(request) { - } - function sameOrigin(A, B) { - if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { - return true; - } - return false; - } - function CORBCheck(request, response) { - return "allowed"; - } - function createDeferredPromise() { - let res; - let rej; - const promise = new Promise((resolve, reject) => { - res = resolve; - rej = reject; - }); - return { promise, resolve: res, reject: rej }; - } - function isAborted(fetchParams) { - return fetchParams.controller.state === "aborted"; - } - function isCancelled(fetchParams) { - return fetchParams.controller.state === "aborted" || fetchParams.controller.state === "terminated"; - } - function normalizeMethod(method) { - return /^(DELETE|GET|HEAD|OPTIONS|POST|PUT)$/i.test(method) ? method.toUpperCase() : method; - } - module2.exports = { - isAborted, - isCancelled, - createDeferredPromise, - ReadableStreamFrom, - toUSVString, - tryUpgradeRequestToAPotentiallyTrustworthyURL, - coarsenedSharedCurrentTime, - matchRequestIntegrity, - determineRequestsReferrer, - makePolicyContainer, - clonePolicyContainer, - appendFetchMetadata, - appendRequestOriginHeader, - TAOCheck, - corsCheck, - crossOriginResourcePolicyCheck, - createOpaqueTimingInfo, - setRequestReferrerPolicyOnRedirect, - isValidHTTPToken, - requestBadPort, - requestCurrentURL, - responseURL, - responseLocationURL, - isBlobLike, - isFileLike, - isValidReasonPhrase, - sameOrigin, - CORBCheck, - normalizeMethod }; } }); -// lib/fetch/formdata.js -var require_formdata = __commonJS({ - "lib/fetch/formdata.js"(exports2, module2) { +// lib/agent.js +var require_agent = __commonJS({ + "lib/agent.js"(exports2, module2) { "use strict"; - var { isBlobLike, isFileLike, toUSVString } = require_util2(); - var { kState } = require_symbols2(); - var { File, FileLike } = require_file(); - var { Blob } = require("buffer"); - var FormData = class { - constructor(...args) { - if (args.length > 0 && !(args[0]?.constructor?.name === "HTMLFormElement")) { - throw new TypeError("Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'"); + var { InvalidArgumentError } = require_errors(); + var { kClients, kRunning, kClose, kDestroy, kDispatch } = require_symbols(); + var DispatcherBase = require_dispatcher_base(); + var Pool = require_pool(); + var Client = require_client(); + var util = require_util(); + var RedirectHandler = require_redirect(); + var { WeakRef, FinalizationRegistry: FinalizationRegistry2 } = require_dispatcher_weakref()(); + var kOnConnect = Symbol("onConnect"); + var kOnDisconnect = Symbol("onDisconnect"); + var kOnConnectionError = Symbol("onConnectionError"); + var kMaxRedirections = Symbol("maxRedirections"); + var kOnDrain = Symbol("onDrain"); + var kFactory = Symbol("factory"); + var kFinalizer = Symbol("finalizer"); + var kOptions = Symbol("options"); + function defaultFactory(origin, opts) { + return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); + } + var Agent = class extends DispatcherBase { + constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { + super(); + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); } - this[kState] = []; - } - append(...args) { - if (!(this instanceof FormData)) { - throw new TypeError("Illegal invocation"); + if (connect != null && typeof connect !== "function" && typeof connect !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); } - if (args.length < 2) { - throw new TypeError(`Failed to execute 'append' on 'FormData': 2 arguments required, but only ${args.length} present.`); + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); } - if (args.length === 3 && !isBlobLike(args[1])) { - throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'"); + if (connect && typeof connect !== "function") { + connect = { ...connect }; } - const name = toUSVString(args[0]); - const filename = args.length === 3 ? toUSVString(args[2]) : void 0; - const value = isBlobLike(args[1]) ? args[1] : toUSVString(args[1]); - const entry = makeEntry(name, value, filename); - this[kState].push(entry); + this[kOptions] = { ...util.deepClone(options), connect }; + this[kMaxRedirections] = maxRedirections; + this[kFactory] = factory; + this[kClients] = /* @__PURE__ */ new Map(); + this[kFinalizer] = new FinalizationRegistry2((key) => { + const ref = this[kClients].get(key); + if (ref !== void 0 && ref.deref() === void 0) { + this[kClients].delete(key); + } + }); + const agent = this; + this[kOnDrain] = (origin, targets) => { + agent.emit("drain", origin, [agent, ...targets]); + }; + this[kOnConnect] = (origin, targets) => { + agent.emit("connect", origin, [agent, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + agent.emit("disconnect", origin, [agent, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + agent.emit("connectionError", origin, [agent, ...targets], err); + }; } - delete(...args) { - if (!(this instanceof FormData)) { - throw new TypeError("Illegal invocation"); - } - if (args.length < 1) { - throw new TypeError(`Failed to execute 'delete' on 'FormData': 1 arguments required, but only ${args.length} present.`); - } - const name = toUSVString(args[0]); - const next = []; - for (const entry of this[kState]) { - if (entry.name !== name) { - next.push(entry); + get [kRunning]() { + let ret = 0; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + ret += client[kRunning]; } } - this[kState] = next; + return ret; } - get(...args) { - if (!(this instanceof FormData)) { - throw new TypeError("Illegal invocation"); + [kDispatch](opts, handler) { + let key; + if (opts.origin && (typeof opts.origin === "string" || opts.origin instanceof URL)) { + key = String(opts.origin); + } else { + throw new InvalidArgumentError("opts.origin must be a non-empty string or URL."); } - if (args.length < 1) { - throw new TypeError(`Failed to execute 'get' on 'FormData': 1 arguments required, but only ${args.length} present.`); + const ref = this[kClients].get(key); + let dispatcher = ref ? ref.deref() : null; + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]).on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]); + this[kClients].set(key, new WeakRef(dispatcher)); + this[kFinalizer].register(dispatcher, key); } - const name = toUSVString(args[0]); - const idx = this[kState].findIndex((entry) => entry.name === name); - if (idx === -1) { - return null; + const { maxRedirections = this[kMaxRedirections] } = opts; + if (maxRedirections != null && maxRedirections !== 0) { + opts = { ...opts, maxRedirections: 0 }; + handler = new RedirectHandler(this, maxRedirections, opts, handler); } - return this[kState][idx].value; + return dispatcher.dispatch(opts, handler); } - getAll(...args) { - if (!(this instanceof FormData)) { - throw new TypeError("Illegal invocation"); + async [kClose]() { + const closePromises = []; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + closePromises.push(client.close()); + } } - if (args.length < 1) { - throw new TypeError(`Failed to execute 'getAll' on 'FormData': 1 arguments required, but only ${args.length} present.`); + await Promise.all(closePromises); + } + async [kDestroy](err) { + const destroyPromises = []; + for (const ref of this[kClients].values()) { + const client = ref.deref(); + if (client) { + destroyPromises.push(client.destroy(err)); + } } - const name = toUSVString(args[0]); - return this[kState].filter((entry) => entry.name === name).map((entry) => entry.value); + await Promise.all(destroyPromises); } - has(...args) { - if (!(this instanceof FormData)) { - throw new TypeError("Illegal invocation"); + }; + module2.exports = Agent; + } +}); + +// lib/global.js +var require_global = __commonJS({ + "lib/global.js"(exports2, module2) { + "use strict"; + var globalDispatcher = Symbol.for("undici.globalDispatcher.1"); + var { InvalidArgumentError } = require_errors(); + var Agent = require_agent(); + if (getGlobalDispatcher2() === void 0) { + setGlobalDispatcher(new Agent()); + } + function setGlobalDispatcher(agent) { + if (!agent || typeof agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument agent must implement Agent"); + } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }); + } + function getGlobalDispatcher2() { + return globalThis[globalDispatcher]; + } + module2.exports = { + setGlobalDispatcher, + getGlobalDispatcher: getGlobalDispatcher2 + }; + } +}); + +// lib/fetch/headers.js +var require_headers = __commonJS({ + "lib/fetch/headers.js"(exports2, module2) { + "use strict"; + var { kHeadersList } = require_symbols(); + var { kGuard } = require_symbols2(); + var { kEnumerableProperty } = require_util(); + var { + makeIterator, + isValidHeaderName, + isValidHeaderValue + } = require_util2(); + var { webidl } = require_webidl(); + var kHeadersMap = Symbol("headers map"); + var kHeadersSortedMap = Symbol("headers map sorted"); + function headerValueNormalize(potentialValue) { + return potentialValue.replace(/^[\r\n\t ]+|[\r\n\t ]+$/g, ""); + } + function fill(headers, object) { + if (Array.isArray(object)) { + for (const header of object) { + if (header.length !== 2) { + webidl.errors.exception({ + header: "Headers constructor", + message: `expected name/value pair to be length 2, found ${header.length}.` + }); + } + headers.append(header[0], header[1]); } - if (args.length < 1) { - throw new TypeError(`Failed to execute 'has' on 'FormData': 1 arguments required, but only ${args.length} present.`); + } else if (typeof object === "object" && object !== null) { + for (const [key, value] of Object.entries(object)) { + headers.append(key, value); } - const name = toUSVString(args[0]); - return this[kState].findIndex((entry) => entry.name === name) !== -1; + } else { + webidl.errors.conversionFailed({ + prefix: "Headers constructor", + argument: "Argument 1", + types: ["sequence>", "record"] + }); } - set(...args) { - if (!(this instanceof FormData)) { - throw new TypeError("Illegal invocation"); + } + var HeadersList = class { + constructor(init) { + if (init instanceof HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]); + this[kHeadersSortedMap] = init[kHeadersSortedMap]; + } else { + this[kHeadersMap] = new Map(init); + this[kHeadersSortedMap] = null; } - if (args.length < 2) { - throw new TypeError(`Failed to execute 'set' on 'FormData': 2 arguments required, but only ${args.length} present.`); + } + contains(name) { + name = name.toLowerCase(); + return this[kHeadersMap].has(name); + } + clear() { + this[kHeadersMap].clear(); + this[kHeadersSortedMap] = null; + } + append(name, value) { + this[kHeadersSortedMap] = null; + name = name.toLowerCase(); + const exists = this[kHeadersMap].get(name); + if (exists) { + this[kHeadersMap].set(name, `${exists}, ${value}`); + } else { + this[kHeadersMap].set(name, `${value}`); } - if (args.length === 3 && !isBlobLike(args[1])) { - throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'"); + } + set(name, value) { + this[kHeadersSortedMap] = null; + name = name.toLowerCase(); + return this[kHeadersMap].set(name, value); + } + delete(name) { + this[kHeadersSortedMap] = null; + name = name.toLowerCase(); + return this[kHeadersMap].delete(name); + } + get(name) { + name = name.toLowerCase(); + if (!this.contains(name)) { + return null; } - const name = toUSVString(args[0]); - const filename = args.length === 3 ? toUSVString(args[2]) : void 0; - const value = isBlobLike(args[1]) ? args[1] : toUSVString(args[1]); - const entry = makeEntry(name, value, filename); - const idx = this[kState].findIndex((entry2) => entry2.name === name); - if (idx !== -1) { - this[kState] = [ - ...this[kState].slice(0, idx), - entry, - ...this[kState].slice(idx + 1).filter((entry2) => entry2.name !== name) - ]; - } else { - this[kState].push(entry); + return this[kHeadersMap].get(name) ?? null; + } + has(name) { + name = name.toLowerCase(); + return this[kHeadersMap].has(name); + } + keys() { + return this[kHeadersMap].keys(); + } + values() { + return this[kHeadersMap].values(); + } + entries() { + return this[kHeadersMap].entries(); + } + [Symbol.iterator]() { + return this[kHeadersMap][Symbol.iterator](); + } + }; + var Headers = class { + constructor(init = void 0) { + this[kHeadersList] = new HeadersList(); + this[kGuard] = "none"; + if (init !== void 0) { + init = webidl.converters.HeadersInit(init); + fill(this, init); } } get [Symbol.toStringTag]() { - if (!(this instanceof FormData)) { - throw new TypeError("Illegal invocation"); - } return this.constructor.name; } - *entries() { - if (!(this instanceof FormData)) { + append(name, value) { + if (!(this instanceof Headers)) { throw new TypeError("Illegal invocation"); } - for (const pair of this) { - yield pair; - } - } - *keys() { - if (!(this instanceof FormData)) { - throw new TypeError("Illegal invocation"); + if (arguments.length < 2) { + throw new TypeError(`Failed to execute 'append' on 'Headers': 2 arguments required, but only ${arguments.length} present.`); + } + name = webidl.converters.ByteString(name); + value = webidl.converters.ByteString(value); + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + webidl.errors.invalidArgument({ + prefix: "Headers.append", + value: name, + type: "header name" + }); + } else if (!isValidHeaderValue(value)) { + webidl.errors.invalidArgument({ + prefix: "Headers.append", + value, + type: "header value" + }); } - for (const [key] of this) { - yield key; + if (this[kGuard] === "immutable") { + throw new TypeError("immutable"); + } else if (this[kGuard] === "request-no-cors") { } + return this[kHeadersList].append(name, value); } - *values() { - if (!(this instanceof FormData)) { + delete(name) { + if (!(this instanceof Headers)) { throw new TypeError("Illegal invocation"); } - for (const [, value] of this) { - yield value; - } - } - *[Symbol.iterator]() { - for (const { name, value } of this[kState]) { - yield [name, value]; - } - } - }; - function makeEntry(name, value, filename) { - const entry = { - name: null, - value: null - }; - entry.name = name; - if (isBlobLike(value) && !isFileLike(value)) { - value = value instanceof Blob ? new File([value], "blob") : new FileLike(value, "blob"); - } - if (isFileLike(value) && filename != null) { - value = value instanceof File ? new File([value], filename) : new FileLike(value, filename); - } - entry.value = value; - return entry; - } - module2.exports = { FormData: globalThis.FormData ?? FormData }; - } -}); - -// lib/fetch/body.js -var require_body = __commonJS({ - "lib/fetch/body.js"(exports2, module2) { - "use strict"; - var util2 = require_util(); - var { ReadableStreamFrom, toUSVString, isBlobLike } = require_util2(); - var { FormData } = require_formdata(); - var { kState } = require_symbols2(); - var { Blob } = require("buffer"); - var { kBodyUsed } = require_symbols(); - var assert = require("assert"); - var { NotSupportedError } = require_errors(); - var { isErrored } = require_util(); - var { isUint8Array } = require("util/types"); - var ReadableStream; - async function* blobGen(blob) { - if (blob.stream) { - yield* blob.stream(); - } else { - yield await blob.arrayBuffer(); - } - } - function extractBody(object, keepalive = false) { - if (!ReadableStream) { - ReadableStream = require("stream/web").ReadableStream; - } - let stream = null; - let action = null; - let source = null; - let length = null; - let contentType = null; - if (object == null) { - } else if (object instanceof URLSearchParams) { - source = object.toString(); - contentType = "application/x-www-form-urlencoded;charset=UTF-8"; - } else if (object instanceof ArrayBuffer || ArrayBuffer.isView(object)) { - if (object instanceof DataView) { - object = object.buffer; + if (arguments.length < 1) { + throw new TypeError(`Failed to execute 'delete' on 'Headers': 1 argument required, but only ${arguments.length} present.`); } - source = new Uint8Array(object); - } else if (object instanceof FormData) { - const boundary = "----formdata-undici-" + Math.random(); - const prefix = `--${boundary}\r -Content-Disposition: form-data`; - const escape = (str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22"); - const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, "\r\n"); - action = async function* (object2) { - const enc = new TextEncoder(); - for (const [name, value] of object2) { - if (typeof value === "string") { - yield enc.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"\r -\r -${normalizeLinefeeds(value)}\r -`); - } else { - yield enc.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape(value.name)}"` : "") + `\r -Content-Type: ${value.type || "application/octet-stream"}\r -\r -`); - yield* blobGen(value); - yield enc.encode("\r\n"); - } - } - yield enc.encode(`--${boundary}--`); - }; - source = object; - contentType = "multipart/form-data; boundary=" + boundary; - } else if (isBlobLike(object)) { - action = blobGen; - source = object; - length = object.size; - if (object.type) { - contentType = object.type; + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + webidl.errors.invalidArgument({ + prefix: "Headers.delete", + value: name, + type: "header name" + }); } - } else if (typeof object[Symbol.asyncIterator] === "function") { - if (keepalive) { - throw new TypeError("keepalive"); + if (this[kGuard] === "immutable") { + throw new TypeError("immutable"); + } else if (this[kGuard] === "request-no-cors") { } - if (util2.isDisturbed(object) || object.locked) { - throw new TypeError("Response body object should not be disturbed or locked"); + if (!this[kHeadersList].contains(name)) { + return; } - stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); - } else { - source = toUSVString(object); - contentType = "text/plain;charset=UTF-8"; + return this[kHeadersList].delete(name); } - if (typeof source === "string" || util2.isBuffer(source)) { - length = Buffer.byteLength(source); + get(name) { + if (!(this instanceof Headers)) { + throw new TypeError("Illegal invocation"); + } + if (arguments.length < 1) { + throw new TypeError(`Failed to execute 'get' on 'Headers': 1 argument required, but only ${arguments.length} present.`); + } + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + webidl.errors.invalidArgument({ + prefix: "Headers.get", + value: name, + type: "header name" + }); + } + return this[kHeadersList].get(name); } - if (action != null) { - let iterator; - stream = new ReadableStream({ - async start() { - iterator = action(object)[Symbol.asyncIterator](); - }, - async pull(controller) { - const { value, done } = await iterator.next(); - if (done) { - queueMicrotask(() => { - controller.close(); - }); - } else { - if (!isErrored(stream)) { - controller.enqueue(new Uint8Array(value)); - } - } - return controller.desiredSize > 0; - }, - async cancel(reason) { - await iterator.return(); - } - }); - } else if (!stream) { - stream = new ReadableStream({ - async pull(controller) { - controller.enqueue(typeof source === "string" ? new TextEncoder().encode(source) : source); - queueMicrotask(() => { - controller.close(); - }); - } - }); + has(name) { + if (!(this instanceof Headers)) { + throw new TypeError("Illegal invocation"); + } + if (arguments.length < 1) { + throw new TypeError(`Failed to execute 'has' on 'Headers': 1 argument required, but only ${arguments.length} present.`); + } + name = webidl.converters.ByteString(name); + if (!isValidHeaderName(name)) { + webidl.errors.invalidArgument({ + prefix: "Headers.has", + value: name, + type: "header name" + }); + } + return this[kHeadersList].contains(name); } - const body = { stream, source, length }; - return [body, contentType]; - } - function safelyExtractBody(object, keepalive = false) { - if (!ReadableStream) { - ReadableStream = require("stream/web").ReadableStream; + set(name, value) { + if (!(this instanceof Headers)) { + throw new TypeError("Illegal invocation"); + } + if (arguments.length < 2) { + throw new TypeError(`Failed to execute 'set' on 'Headers': 2 arguments required, but only ${arguments.length} present.`); + } + name = webidl.converters.ByteString(name); + value = webidl.converters.ByteString(value); + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + webidl.errors.invalidArgument({ + prefix: "Headers.set", + value: name, + type: "header name" + }); + } else if (!isValidHeaderValue(value)) { + webidl.errors.invalidArgument({ + prefix: "Headers.set", + value, + type: "header value" + }); + } + if (this[kGuard] === "immutable") { + throw new TypeError("immutable"); + } else if (this[kGuard] === "request-no-cors") { + } + return this[kHeadersList].set(name, value); } - if (object instanceof ReadableStream) { - assert(!util2.isDisturbed(object), "disturbed"); - assert(!object.locked, "locked"); + get [kHeadersSortedMap]() { + this[kHeadersList][kHeadersSortedMap] ??= new Map([...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1)); + return this[kHeadersList][kHeadersSortedMap]; } - return extractBody(object, keepalive); - } - function cloneBody(body) { - const [out1, out2] = body.stream.tee(); - body.stream = out1; - return { - stream: out2, - length: body.length, - source: body.source - }; - } - var methods = { - async blob() { - const chunks = []; - if (this[kState].body) { - if (isUint8Array(this[kState].body)) { - chunks.push(this[kState].body); - } else { - const stream = this[kState].body.stream; - if (util2.isDisturbed(stream)) { - throw new TypeError("disturbed"); - } - if (stream.locked) { - throw new TypeError("locked"); - } - stream[kBodyUsed] = true; - for await (const chunk of stream) { - chunks.push(chunk); - } - } + keys() { + if (!(this instanceof Headers)) { + throw new TypeError("Illegal invocation"); } - return new Blob(chunks, { type: this.headers.get("Content-Type") || "" }); - }, - async arrayBuffer() { - const blob = await this.blob(); - return await blob.arrayBuffer(); - }, - async text() { - const blob = await this.blob(); - return toUSVString(await blob.text()); - }, - async json() { - return JSON.parse(await this.text()); - }, - async formData() { - const contentType = this.headers.get("Content-Type"); - if (/multipart\/form-data/.test(contentType)) { - throw new NotSupportedError("multipart/form-data not supported"); - } else if (/application\/x-www-form-urlencoded/.test(contentType)) { - let entries; - try { - entries = new URLSearchParams(await this.text()); - } catch (err) { - throw Object.assign(new TypeError(), { cause: err }); - } - const formData = new FormData(); - for (const [name, value] of entries) { - formData.append(name, value); - } - return formData; - } else { - throw new TypeError(); + return makeIterator(this[kHeadersSortedMap].keys(), "Headers"); + } + values() { + if (!(this instanceof Headers)) { + throw new TypeError("Illegal invocation"); } + return makeIterator(this[kHeadersSortedMap].values(), "Headers"); } - }; - var properties = { - body: { - enumerable: true, - get() { - return this[kState].body ? this[kState].body.stream : null; + entries() { + if (!(this instanceof Headers)) { + throw new TypeError("Illegal invocation"); } - }, - bodyUsed: { - enumerable: true, - get() { - return this[kState].body && util2.isDisturbed(this[kState].body.stream); + return makeIterator(this[kHeadersSortedMap].entries(), "Headers"); + } + forEach(callbackFn, thisArg = globalThis) { + if (!(this instanceof Headers)) { + throw new TypeError("Illegal invocation"); + } + if (arguments.length < 1) { + throw new TypeError(`Failed to execute 'forEach' on 'Headers': 1 argument required, but only ${arguments.length} present.`); + } + if (typeof callbackFn !== "function") { + throw new TypeError("Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'."); + } + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]); + } + } + [Symbol.for("nodejs.util.inspect.custom")]() { + if (!(this instanceof Headers)) { + throw new TypeError("Illegal invocation"); } + return this[kHeadersList]; } }; - function mixinBody(prototype) { - Object.assign(prototype, methods); - Object.defineProperties(prototype, properties); - } + Headers.prototype[Symbol.iterator] = Headers.prototype.entries; + Object.defineProperties(Headers.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + keys: kEnumerableProperty, + values: kEnumerableProperty, + entries: kEnumerableProperty, + forEach: kEnumerableProperty + }); + webidl.converters.HeadersInit = function(V) { + if (webidl.util.Type(V) === "Object") { + if (V[Symbol.iterator]) { + return webidl.converters["sequence>"](V); + } + return webidl.converters["record"](V); + } + webidl.errors.conversionFailed({ + prefix: "Headers constructor", + argument: "Argument 1", + types: ["sequence>", "record"] + }); + }; module2.exports = { - extractBody, - safelyExtractBody, - cloneBody, - mixinBody + fill, + Headers, + HeadersList }; } }); @@ -6103,20 +5038,29 @@ var require_response = __commonJS({ "lib/fetch/response.js"(exports2, module2) { "use strict"; var { Headers, HeadersList, fill } = require_headers(); - var { AbortError } = require_errors(); var { extractBody, cloneBody, mixinBody } = require_body(); - var util2 = require_util(); - var { kEnumerableProperty } = util2; - var { responseURL, isValidReasonPhrase, toUSVString, isCancelled, isAborted } = require_util2(); + var util = require_util(); + var { kEnumerableProperty } = util; + var { + responseURL, + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString + } = require_util2(); var { redirectStatus, nullBodyStatus, - forbiddenResponseHeaderNames, - corsSafeListedResponseHeaderNames - } = require_constants2(); + DOMException + } = require_constants(); var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); + var { webidl } = require_webidl(); + var { FormData } = require_formdata(); var { kHeadersList } = require_symbols(); var assert = require("assert"); + var { types } = require("util"); + var ReadableStream = globalThis.ReadableStream || require("stream/web").ReadableStream; var Response = class { static error() { const relevantRealm = { settingsObject: {} }; @@ -6128,13 +5072,30 @@ var require_response = __commonJS({ responseObject[kHeaders][kRealm] = relevantRealm; return responseObject; } - static redirect(...args) { + static json(data, init = {}) { + if (arguments.length === 0) { + throw new TypeError("Failed to execute 'json' on 'Response': 1 argument required, but 0 present."); + } + if (init !== null) { + init = webidl.converters.ResponseInit(init); + } + const bytes = new TextEncoder("utf-8").encode(serializeJavascriptValueToJSONString(data)); + const body = extractBody(bytes); + const relevantRealm = { settingsObject: {} }; + const responseObject = new Response(); + responseObject[kRealm] = relevantRealm; + responseObject[kHeaders][kGuard] = "response"; + responseObject[kHeaders][kRealm] = relevantRealm; + initializeResponse(responseObject, init, { body: body[0], type: "application/json" }); + return responseObject; + } + static redirect(url, status = 302) { const relevantRealm = { settingsObject: {} }; - if (args.length < 1) { - throw new TypeError(`Failed to execute 'redirect' on 'Response': 1 argument required, but only ${args.length} present.`); + if (arguments.length < 1) { + throw new TypeError(`Failed to execute 'redirect' on 'Response': 1 argument required, but only ${arguments.length} present.`); } - const status = args.length >= 2 ? args[1] : 302; - const url = toUSVString(args[0]); + url = webidl.converters.USVString(url); + status = webidl.converters["unsigned short"](status); let parsedURL; try { parsedURL = new URL(url); @@ -6152,58 +5113,28 @@ var require_response = __commonJS({ responseObject[kHeaders][kRealm] = relevantRealm; responseObject[kState].status = status; const value = parsedURL.toString(); - responseObject[kState].headersList.push("location", value); + responseObject[kState].headersList.append("location", value); return responseObject; } - constructor(...args) { - if (args.length >= 1 && typeof args[1] !== "object" && args[1] !== void 0) { - throw new TypeError("Failed to construct 'Request': cannot convert to dictionary."); + constructor(body = null, init = {}) { + if (body !== null) { + body = webidl.converters.BodyInit(body); } - const body = args.length >= 1 ? args[0] : null; - const init = args.length >= 2 ? args[1] ?? {} : {}; + init = webidl.converters.ResponseInit(init); this[kRealm] = { settingsObject: {} }; - if ("status" in init && init.status !== void 0) { - if (!Number.isFinite(init.status)) { - throw new TypeError(); - } - if (init.status < 200 || init.status > 599) { - throw new RangeError(`Failed to construct 'Response': The status provided (${init.status}) is outside the range [200, 599].`); - } - } - if ("statusText" in init && init.statusText !== void 0) { - if (!isValidReasonPhrase(String(init.statusText))) { - throw new TypeError("Invalid statusText"); - } - } this[kState] = makeResponse({}); this[kHeaders] = new Headers(); this[kHeaders][kGuard] = "response"; this[kHeaders][kHeadersList] = this[kState].headersList; this[kHeaders][kRealm] = this[kRealm]; - if ("status" in init && init.status !== void 0) { - this[kState].status = init.status; - } - if ("statusText" in init && init.statusText !== void 0) { - this[kState].statusText = String(init.statusText); - } - if ("headers" in init) { - fill(this[kState].headersList, init.headers); - } + let bodyWithType = null; if (body != null) { - if (nullBodyStatus.includes(init.status)) { - throw new TypeError("Response with null body status cannot have body"); - } - const [extractedBody, contentType] = extractBody(body); - this[kState].body = extractedBody; - if (contentType && !this.headers.has("content-type")) { - this.headers.set("content-type", contentType); - } + const [extractedBody, type] = extractBody(body); + bodyWithType = { body: extractedBody, type }; } + initializeResponse(this, init, bodyWithType); } get [Symbol.toStringTag]() { - if (!(this instanceof Response)) { - throw new TypeError("Illegal invocation"); - } return this.constructor.name; } get type() { @@ -6261,7 +5192,10 @@ var require_response = __commonJS({ throw new TypeError("Illegal invocation"); } if (this.bodyUsed || this.body && this.body.locked) { - throw new TypeError(); + webidl.errors.exception({ + header: "Response.clone", + message: "Body has already been consumed." + }); } const clonedResponse = cloneResponse(this[kState]); const clonedResponseObject = new Response(); @@ -6273,7 +5207,7 @@ var require_response = __commonJS({ return clonedResponseObject; } }; - mixinBody(Response.prototype); + mixinBody(Response); Object.defineProperties(Response.prototype, { type: kEnumerableProperty, url: kEnumerableProperty, @@ -6306,7 +5240,7 @@ var require_response = __commonJS({ cacheState: "", statusText: "", ...init, - headersList: init.headersList ? new HeadersList(...init.headersList) : new HeadersList(), + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList(), urlList: init.urlList ? [...init.urlList] : [] }; } @@ -6336,38 +5270,16 @@ var require_response = __commonJS({ } }); } - function makeFilteredHeadersList(headersList, filter) { - return new Proxy(headersList, { - get(target, prop) { - if (prop === "get" || prop === "has") { - return (name) => filter(name) ? target[prop](name) : void 0; - } else if (prop === "slice") { - return (...args) => { - assert(args.length === 0); - const arr = []; - for (let index = 0; index < target.length; index += 2) { - if (filter(target[index])) { - arr.push(target[index], target[index + 1]); - } - } - return arr; - }; - } else { - return target[prop]; - } - } - }); - } function filterResponse(response, type) { if (type === "basic") { return makeFilteredResponse(response, { type: "basic", - headersList: makeFilteredHeadersList(response.headersList, (name) => !forbiddenResponseHeaderNames.includes(name)) + headersList: response.headersList }); } else if (type === "cors") { return makeFilteredResponse(response, { type: "cors", - headersList: makeFilteredHeadersList(response.headersList, (name) => !corsSafeListedResponseHeaderNames.includes(name)) + headersList: response.headersList }); } else if (type === "opaque") { return makeFilteredResponse(response, { @@ -6382,7 +5294,7 @@ var require_response = __commonJS({ type: "opaqueredirect", status: 0, statusText: "", - headersList: makeFilteredHeadersList(response.headersList, () => false), + headersList: [], body: null }); } else { @@ -6391,8 +5303,85 @@ var require_response = __commonJS({ } function makeAppropriateNetworkError(fetchParams) { assert(isCancelled(fetchParams)); - return isAborted(fetchParams) ? makeNetworkError(new AbortError()) : makeNetworkError(fetchParams.controller.terminated.reason); + return isAborted(fetchParams) ? makeNetworkError(new DOMException("The operation was aborted.", "AbortError")) : makeNetworkError(fetchParams.controller.terminated.reason); + } + function initializeResponse(response, init, body) { + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.'); + } + if ("statusText" in init && init.statusText != null) { + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError("Invalid statusText"); + } + } + if ("status" in init && init.status != null) { + response[kState].status = init.status; + } + if ("statusText" in init && init.statusText != null) { + response[kState].statusText = init.statusText; + } + if ("headers" in init && init.headers != null) { + fill(response[kState].headersList, init.headers); + } + if (body) { + if (nullBodyStatus.includes(response.status)) { + webidl.errors.exception({ + header: "Response constructor", + message: "Invalid response status code." + }); + } + response[kState].body = body.body; + if (body.type != null && !response[kState].headersList.has("Content-Type")) { + response[kState].headersList.append("content-type", body.type); + } + } } + webidl.converters.ReadableStream = webidl.interfaceConverter(ReadableStream); + webidl.converters.FormData = webidl.interfaceConverter(FormData); + webidl.converters.URLSearchParams = webidl.interfaceConverter(URLSearchParams); + webidl.converters.XMLHttpRequestBodyInit = function(V) { + if (typeof V === "string") { + return webidl.converters.USVString(V); + } + if (isBlobLike(V)) { + return webidl.converters.Blob(V); + } + if (types.isAnyArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { + return webidl.converters.BufferSource(V); + } + if (V instanceof FormData) { + return webidl.converters.FormData(V); + } + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V); + } + return webidl.converters.DOMString(V); + }; + webidl.converters.BodyInit = function(V) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V); + } + if (V?.[Symbol.asyncIterator]) { + return V; + } + return webidl.converters.XMLHttpRequestBodyInit(V); + }; + webidl.converters.ResponseInit = webidl.dictionaryConverter([ + { + key: "status", + converter: webidl.converters["unsigned short"], + defaultValue: 200 + }, + { + key: "statusText", + converter: webidl.converters.ByteString, + defaultValue: "" + }, + { + key: "headers", + converter: webidl.converters.HeadersInit + } + ]); module2.exports = { makeNetworkError, makeResponse, @@ -6409,11 +5398,10 @@ var require_request2 = __commonJS({ "use strict"; var { extractBody, mixinBody, cloneBody } = require_body(); var { Headers, fill: fillHeaders, HeadersList } = require_headers(); - var util2 = require_util(); + var util = require_util(); var { isValidHTTPToken, sameOrigin, - toUSVString, normalizeMethod } = require_util2(); var { @@ -6424,9 +5412,10 @@ var require_request2 = __commonJS({ requestMode, requestCredentials, requestCache - } = require_constants2(); - var { kEnumerableProperty } = util2; + } = require_constants(); + var { kEnumerableProperty } = util; var { kHeaders, kSignal, kState, kGuard, kRealm } = require_symbols2(); + var { webidl } = require_webidl(); var { kHeadersList } = require_symbols(); var assert = require("assert"); var TransformStream; @@ -6435,18 +5424,15 @@ var require_request2 = __commonJS({ signal.removeEventListener("abort", abort); }); var Request = class { - constructor(...args) { - if (args[0] === kInit) { + constructor(input, init = {}) { + if (input === kInit) { return; } - if (args.length < 1) { - throw new TypeError(`Failed to construct 'Request': 1 argument required, but only ${args.length} present.`); + if (arguments.length < 1) { + throw new TypeError(`Failed to construct 'Request': 1 argument required, but only ${arguments.length} present.`); } - if (args.length >= 1 && typeof args[1] !== "object" && args[1] !== void 0) { - throw new TypeError("Failed to construct 'Request': cannot convert to dictionary."); - } - const input = args[0] instanceof Request ? args[0] : toUSVString(args[0]); - const init = args.length >= 1 ? args[1] ?? {} : {}; + input = webidl.converters.RequestInfo(input); + init = webidl.converters.RequestInit(init); this[kRealm] = { settingsObject: {} }; let request = null; let fallbackMode = null; @@ -6542,7 +5528,10 @@ var require_request2 = __commonJS({ mode = fallbackMode; } if (mode === "navigate") { - throw new TypeError(); + webidl.errors.exception({ + header: "Request constructor", + message: "invalid request mode navigate." + }); } if (mode != null) { request.mode = mode; @@ -6605,8 +5594,8 @@ var require_request2 = __commonJS({ } } this[kHeaders] = new Headers(); - this[kHeaders][kGuard] = "request"; this[kHeaders][kHeadersList] = request.headersList; + this[kHeaders][kGuard] = "request"; this[kHeaders][kRealm] = this[kRealm]; if (mode === "no-cors") { if (!corsSafeListedMethods.includes(request.method)) { @@ -6615,16 +5604,17 @@ var require_request2 = __commonJS({ this[kHeaders][kGuard] = "request-no-cors"; } if (Object.keys(init).length !== 0) { - let headers = new Headers(this.headers); + let headers = new Headers(this[kHeaders]); if (init.headers !== void 0) { headers = init.headers; } - this[kState].headersList = new HeadersList(); - this[kHeaders][kHeadersList] = this[kState].headersList; - if (headers instanceof Headers) { - this[kState].headersList.push(...headers[kHeadersList]); + this[kHeaders][kHeadersList].clear(); + if (headers.constructor.name === "Headers") { + for (const [key, val] of headers) { + this[kHeaders].append(key, val); + } } else { - fillHeaders(this[kState].headersList, headers); + fillHeaders(this[kHeaders], headers); } } const inputBody = input instanceof Request ? input[kState].body : null; @@ -6648,7 +5638,7 @@ var require_request2 = __commonJS({ } let finalBody = inputOrInitBody; if (initBody == null && inputBody != null) { - if (util2.isDisturbed(inputBody.stream) || inputBody.stream.locked) { + if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { throw new TypeError("Cannot construct a Request with a Request object that has already been used."); } if (!TransformStream) { @@ -6665,9 +5655,6 @@ var require_request2 = __commonJS({ this[kState].body = finalBody; } get [Symbol.toStringTag]() { - if (!(this instanceof Request)) { - throw new TypeError("Illegal invocation"); - } return this.constructor.name; } get method() { @@ -6790,7 +5777,7 @@ var require_request2 = __commonJS({ return clonedRequestObject; } }; - mixinBody(Request.prototype); + mixinBody(Request); function makeRequest(init) { const request = { method: "GET", @@ -6829,8 +5816,7 @@ var require_request2 = __commonJS({ done: false, timingAllowFailed: false, ...init, - headersList: init.headersList ? new HeadersList(...init.headersList) : new HeadersList(), - urlList: init.urlList ? [...init.urlList.map((url) => new URL(url))] : [] + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList() }; request.url = request.urlList[0]; return request; @@ -6850,6 +5836,107 @@ var require_request2 = __commonJS({ clone: kEnumerableProperty, signal: kEnumerableProperty }); + webidl.converters.Request = webidl.interfaceConverter(Request); + webidl.converters.RequestInfo = function(V) { + if (typeof V === "string") { + return webidl.converters.USVString(V); + } + if (V instanceof Request) { + return webidl.converters.Request(V); + } + return webidl.converters.USVString(V); + }; + webidl.converters.AbortSignal = webidl.interfaceConverter(AbortSignal); + webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: "method", + converter: webidl.converters.ByteString + }, + { + key: "headers", + converter: webidl.converters.HeadersInit + }, + { + key: "body", + converter: webidl.nullableConverter(webidl.converters.BodyInit) + }, + { + key: "referrer", + converter: webidl.converters.USVString + }, + { + key: "referrerPolicy", + converter: webidl.converters.DOMString, + allowedValues: [ + "", + "no-referrer", + "no-referrer-when-downgrade", + "same-origin", + "origin", + "strict-origin", + "origin-when-cross-origin", + "strict-origin-when-cross-origin", + "unsafe-url" + ] + }, + { + key: "mode", + converter: webidl.converters.DOMString, + allowedValues: [ + "same-origin", + "cors", + "no-cors", + "navigate", + "websocket" + ] + }, + { + key: "credentials", + converter: webidl.converters.DOMString, + allowedValues: [ + "omit", + "same-origin", + "include" + ] + }, + { + key: "cache", + converter: webidl.converters.DOMString, + allowedValues: [ + "default", + "no-store", + "reload", + "no-cache", + "force-cache", + "only-if-cached" + ] + }, + { + key: "redirect", + converter: webidl.converters.DOMString, + allowedValues: [ + "follow", + "error", + "manual" + ] + }, + { + key: "integrity", + converter: webidl.converters.DOMString + }, + { + key: "keepalive", + converter: webidl.converters.boolean + }, + { + key: "signal", + converter: webidl.nullableConverter(webidl.converters.AbortSignal) + }, + { + key: "window", + converter: webidl.converters.any + } + ]); module2.exports = { Request, makeRequest }; } }); @@ -6858,7 +5945,7 @@ var require_request2 = __commonJS({ var require_dataURL = __commonJS({ "lib/fetch/dataURL.js"(exports2, module2) { var assert = require("assert"); - var { atob } = require("buffer"); + var { atob: atob2 } = require("buffer"); var encoder = new TextEncoder(); function dataURLProcessor(dataURL) { assert(dataURL.protocol === "data:"); @@ -7013,7 +6100,7 @@ var require_dataURL = __commonJS({ if (/[^+/0-9A-Za-z]/.test(data)) { return "failure"; } - const binary = atob(data); + const binary = atob2(data); const bytes = new Uint8Array(binary.length); for (let byte = 0; byte < binary.length; byte++) { bytes[byte] = binary.charCodeAt(byte); @@ -7093,13 +6180,11 @@ var require_fetch = __commonJS({ coarsenedSharedCurrentTime, createDeferredPromise, isBlobLike, - CORBCheck, sameOrigin, isCancelled, isAborted } = require_util2(); var { kState, kHeaders, kGuard, kRealm } = require_symbols2(); - var { AbortError } = require_errors(); var assert = require("assert"); var { safelyExtractBody, extractBody } = require_body(); var { @@ -7107,17 +6192,20 @@ var require_fetch = __commonJS({ nullBodyStatus, safeMethods, requestBodyHeader, - subresource - } = require_constants2(); + subresource, + DOMException + } = require_constants(); var { kHeadersList } = require_symbols(); var EE = require("events"); var { Readable, pipeline } = require("stream"); var { isErrored, isReadable } = require_util(); var { dataURLProcessor } = require_dataURL(); - var { kIsMockActive } = require_mock_symbols(); var { TransformStream } = require("stream/web"); var resolveObjectURL; var ReadableStream; + var nodeVersion = process.versions.node.split("."); + var nodeMajor = Number(nodeVersion[0]); + var nodeMinor = Number(nodeVersion[1]); var Fetch = class extends EE { constructor(dispatcher) { super(); @@ -7138,23 +6226,24 @@ var require_fetch = __commonJS({ if (this.state !== "ongoing") { return; } - const reason = new AbortError(); + const reason = new DOMException("The operation was aborted.", "AbortError"); this.state = "aborted"; this.connection?.destroy(reason); this.emit("terminated", reason); } }; - async function fetch(...args) { - if (args.length < 1) { - throw new TypeError(`Failed to execute 'fetch' on 'Window': 1 argument required, but only ${args.length} present.`); - } - if (args.length >= 1 && typeof args[1] !== "object" && args[1] !== void 0) { - throw new TypeError("Failed to execute 'fetch' on 'Window': cannot convert to dictionary."); + async function fetch2(input, init = {}) { + if (arguments.length < 1) { + throw new TypeError(`Failed to execute 'fetch' on 'Window': 1 argument required, but only ${arguments.length} present.`); } - const resource = args[0]; - const init = args.length >= 1 ? args[1] ?? {} : {}; const p = createDeferredPromise(); - const requestObject = new Request(resource, init); + let requestObject; + try { + requestObject = new Request(input, init); + } catch (e) { + p.reject(e); + return p.promise; + } const request = requestObject[kState]; if (requestObject.signal.aborted) { abortFetch(p, request, null); @@ -7230,10 +6319,13 @@ var require_fetch = __commonJS({ response.timingInfo = timingInfo; markResourceTiming(timingInfo, originalURL, initiatorType, globalThis, cacheState); } - function markResourceTiming() { + function markResourceTiming(timingInfo, originalURL, initiatorType, globalThis2, cacheState) { + if (nodeMajor >= 18 && nodeMinor >= 2) { + performance.markResourceTiming(timingInfo, originalURL, initiatorType, globalThis2, cacheState); + } } function abortFetch(p, request, responseObject) { - const error = new AbortError(); + const error = new DOMException("The operation was aborted.", "AbortError"); p.reject(error); if (request.body != null && isReadable(request.body?.stream)) { request.body.stream.cancel(error).catch((err) => { @@ -7349,11 +6441,7 @@ var require_fetch = __commonJS({ return makeNetworkError('redirect mode cannot be "follow" for "no-cors" request'); } request.responseTainting = "opaque"; - const noCorsResponse = await schemeFetch(fetchParams); - if (noCorsResponse.status === 0 || CORBCheck(request, noCorsResponse) === "allowed") { - return noCorsResponse; - } - return makeResponse({ status: noCorsResponse.status }); + return await schemeFetch(fetchParams); } if (!/^https?:/.test(requestCurrentURL(request).protocol)) { return makeNetworkError("URL scheme must be a HTTP(S) scheme"); @@ -7420,15 +6508,14 @@ var require_fetch = __commonJS({ const { protocol: scheme, pathname: path - } = new URL(requestCurrentURL(request)); + } = requestCurrentURL(request); switch (scheme) { case "about:": { if (path === "blank") { const resp = makeResponse({ statusText: "OK", headersList: [ - "content-type", - "text/html;charset=utf-8" + ["content-type", "text/html;charset=utf-8"] ] }); resp.urlList = [new URL("about:blank")]; @@ -7437,7 +6524,7 @@ var require_fetch = __commonJS({ return makeNetworkError("invalid path called"); } case "blob:": { - resolveObjectURL ??= require("buffer").resolveObjectURL; + resolveObjectURL = resolveObjectURL || require("buffer").resolveObjectURL; const currentURL = requestCurrentURL(request); if (currentURL.search.length !== 0) { return makeNetworkError("NetworkError when attempting to fetch resource."); @@ -7475,8 +6562,7 @@ var require_fetch = __commonJS({ return makeResponse({ statusText: "OK", headersList: [ - "content-type", - contentType + ["content-type", contentType] ], body: extractBody(dataURLStruct.body)[0] }); @@ -7568,7 +6654,7 @@ var require_fetch = __commonJS({ if (redirectStatus.includes(actualResponse.status)) { fetchParams.controller.connection.destroy(); if (request.redirect === "error") { - response = makeNetworkError(); + response = makeNetworkError("unexpected redirect"); } else if (request.redirect === "manual") { response = actualResponse; } else if (request.redirect === "follow") { @@ -7608,7 +6694,7 @@ var require_fetch = __commonJS({ if (actualResponse.status !== 303 && request.body != null && request.body.source == null) { return makeNetworkError(); } - if ([301, 302].includes(actualResponse.status) && request.method === "POST" || actualResponse.status === 303 && !["GET", "HEADER"].includes(request.method)) { + if ([301, 302].includes(actualResponse.status) && request.method === "POST" || actualResponse.status === 303 && !["GET", "HEAD"].includes(request.method)) { request.method = "GET"; request.body = null; for (const headerName of requestBodyHeader) { @@ -7742,7 +6828,7 @@ var require_fetch = __commonJS({ destroy(err) { if (!this.destroyed) { this.destroyed = true; - this.abort?.(err ?? new AbortError()); + this.abort?.(err ?? new DOMException("The operation was aborted.", "AbortError")); } } }; @@ -7836,6 +6922,9 @@ var require_fetch = __commonJS({ let bytes; try { const { done, value } = await fetchParams.controller.next(); + if (isAborted(fetchParams)) { + break; + } bytes = done ? void 0 : value; } catch (err) { if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { @@ -7874,7 +6963,7 @@ var require_fetch = __commonJS({ if (isAborted(fetchParams)) { response.aborted = true; if (isReadable(stream)) { - fetchParams.controller.controller.error(new AbortError()); + fetchParams.controller.controller.error(new DOMException("The operation was aborted.", "AbortError")); } } else { if (isReadable(stream)) { @@ -7892,16 +6981,18 @@ var require_fetch = __commonJS({ path: url.pathname + url.search, origin: url.origin, method: request.method, - body: fetchParams.controller.dispatcher[kIsMockActive] ? request.body && request.body.source : body, - headers: request.headersList, - maxRedirections: 0 + body: fetchParams.controller.dispatcher.isMockActive ? request.body && request.body.source : body, + headers: [...request.headersList].flat(), + maxRedirections: 0, + bodyTimeout: 3e5, + headersTimeout: 3e5 }, { body: null, abort: null, onConnect(abort) { const { connection } = fetchParams.controller; if (connection.destroyed) { - abort(new AbortError()); + abort(new DOMException("The operation was aborted.", "AbortError")); } else { fetchParams.controller.on("terminated", abort); this.abort = connection.abort = abort; @@ -7923,16 +7014,18 @@ var require_fetch = __commonJS({ } this.body = new Readable({ read: resume }); const decoders = []; - for (const coding of codings) { - if (/(x-)?gzip/.test(coding)) { - decoders.push(zlib.createGunzip()); - } else if (/(x-)?deflate/.test(coding)) { - decoders.push(zlib.createInflate()); - } else if (coding === "br") { - decoders.push(zlib.createBrotliDecompress()); - } else { - decoders.length = 0; - break; + if (request.method !== "HEAD" && request.method !== "CONNECT" && !nullBodyStatus.includes(status)) { + for (const coding of codings) { + if (/(x-)?gzip/.test(coding)) { + decoders.push(zlib.createGunzip()); + } else if (/(x-)?deflate/.test(coding)) { + decoders.push(zlib.createInflate()); + } else if (coding === "br") { + decoders.push(zlib.createBrotliDecompress()); + } else { + decoders.length = 0; + break; + } } } resolve({ @@ -7966,112 +7059,24 @@ var require_fetch = __commonJS({ } this.body?.destroy(error); fetchParams.controller.terminate(error); - reject(makeNetworkError(error)); + reject(error); } })); } } - module2.exports = fetch; + module2.exports = fetch2; } }); -// index.js -var Client = require_client(); -var Dispatcher = require_dispatcher(); -var errors = require_errors(); -var Pool = require_pool(); -var BalancedPool = require_balanced_pool(); -var Agent = require_agent(); -var util = require_util(); -var { InvalidArgumentError } = errors; -var api = require_api(); -var buildConnector = require_connect(); -var MockClient = require_mock_client(); -var MockAgent = require_mock_agent(); -var MockPool = require_mock_pool(); -var mockErrors = require_mock_errors(); -var ProxyAgent = require_proxy_agent(); -var nodeVersion = process.versions.node.split("."); -var nodeMajor = Number(nodeVersion[0]); -var nodeMinor = Number(nodeVersion[1]); -Object.assign(Dispatcher.prototype, api); -module.exports.Dispatcher = Dispatcher; -module.exports.Client = Client; -module.exports.Pool = Pool; -module.exports.BalancedPool = BalancedPool; -module.exports.Agent = Agent; -module.exports.ProxyAgent = ProxyAgent; -module.exports.buildConnector = buildConnector; -module.exports.errors = errors; -var globalDispatcher = new Agent(); -function setGlobalDispatcher(agent) { - if (!agent || typeof agent.dispatch !== "function") { - throw new InvalidArgumentError("Argument agent must implement Agent"); - } - globalDispatcher = agent; -} -function getGlobalDispatcher() { - return globalDispatcher; -} -function makeDispatcher(fn) { - return (url, opts, handler) => { - if (typeof opts === "function") { - handler = opts; - opts = null; - } - if (!url || typeof url !== "string" && typeof url !== "object" && !(url instanceof URL)) { - throw new InvalidArgumentError("invalid url"); - } - if (opts != null && typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - if (opts && opts.path != null) { - if (typeof opts.path !== "string") { - throw new InvalidArgumentError("invalid opts.path"); - } - url = new URL(opts.path, util.parseOrigin(url)); - } else { - if (!opts) { - opts = typeof url === "object" ? url : {}; - } - url = util.parseURL(url); - } - const { agent, dispatcher = getGlobalDispatcher() } = opts; - if (agent) { - throw new InvalidArgumentError("unsupported opts.agent. Did you mean opts.client?"); - } - return fn.call(dispatcher, { - ...opts, - origin: url.origin, - path: url.search ? `${url.pathname}${url.search}` : url.pathname, - method: opts.method || (opts.body ? "PUT" : "GET") - }, handler); - }; -} -module.exports.setGlobalDispatcher = setGlobalDispatcher; -module.exports.getGlobalDispatcher = getGlobalDispatcher; -if (nodeMajor > 16 || nodeMajor === 16 && nodeMinor >= 5) { - let fetchImpl = null; - module.exports.fetch = async function fetch(resource) { - if (!fetchImpl) { - fetchImpl = require_fetch(); - } - const dispatcher = getGlobalDispatcher(); - return fetchImpl.apply(dispatcher, arguments); - }; - module.exports.Headers = require_headers().Headers; - module.exports.Response = require_response().Response; - module.exports.Request = require_request2().Request; - module.exports.FormData = require_formdata().FormData; - module.exports.File = require_file().File; -} -module.exports.request = makeDispatcher(api.request); -module.exports.stream = makeDispatcher(api.stream); -module.exports.pipeline = makeDispatcher(api.pipeline); -module.exports.connect = makeDispatcher(api.connect); -module.exports.upgrade = makeDispatcher(api.upgrade); -module.exports.MockClient = MockClient; -module.exports.MockPool = MockPool; -module.exports.MockAgent = MockAgent; -module.exports.mockErrors = mockErrors; +// index-fetch.js +var { getGlobalDispatcher } = require_global(); +var fetchImpl = require_fetch(); +module.exports.fetch = async function fetch(resource) { + const dispatcher = arguments[1] && arguments[1].dispatcher || getGlobalDispatcher(); + return fetchImpl.apply(dispatcher, arguments); +}; +module.exports.FormData = require_formdata().FormData; +module.exports.Headers = require_headers().Headers; +module.exports.Response = require_response().Response; +module.exports.Request = require_request2().Request; /*! formdata-polyfill. MIT License. Jimmy Wärting */ diff --git a/deps/uv/src/unix/stream.c b/deps/uv/src/unix/stream.c index 5858258d2868c3..b5b05a6a4a737f 100644 --- a/deps/uv/src/unix/stream.c +++ b/deps/uv/src/unix/stream.c @@ -58,20 +58,6 @@ struct uv__stream_select_s { fd_set* swrite; size_t swrite_sz; }; - -/* Due to a possible kernel bug at least in OS X 10.10 "Yosemite", - * EPROTOTYPE can be returned while trying to write to a socket that is - * shutting down. If we retry the write, we should get the expected EPIPE - * instead. - */ -# define RETRY_ON_WRITE_ERROR(errno) (errno == EINTR || errno == EPROTOTYPE) -# define IS_TRANSIENT_WRITE_ERROR(errno, send_handle) \ - (errno == EAGAIN || errno == EWOULDBLOCK || errno == ENOBUFS || \ - (errno == EMSGSIZE && send_handle != NULL)) -#else -# define RETRY_ON_WRITE_ERROR(errno) (errno == EINTR) -# define IS_TRANSIENT_WRITE_ERROR(errno, send_handle) \ - (errno == EAGAIN || errno == EWOULDBLOCK || errno == ENOBUFS) #endif /* defined(__APPLE__) */ static void uv__stream_connect(uv_stream_t*); @@ -866,19 +852,33 @@ static int uv__try_write(uv_stream_t* stream, do n = sendmsg(uv__stream_fd(stream), &msg, 0); - while (n == -1 && RETRY_ON_WRITE_ERROR(errno)); + while (n == -1 && errno == EINTR); } else { do n = uv__writev(uv__stream_fd(stream), iov, iovcnt); - while (n == -1 && RETRY_ON_WRITE_ERROR(errno)); + while (n == -1 && errno == EINTR); } if (n >= 0) return n; - if (IS_TRANSIENT_WRITE_ERROR(errno, send_handle)) + if (errno == EAGAIN || errno == EWOULDBLOCK || errno == ENOBUFS) return UV_EAGAIN; +#ifdef __APPLE__ + /* macOS versions 10.10 and 10.15 - and presumbaly 10.11 to 10.14, too - + * have a bug where a race condition causes the kernel to return EPROTOTYPE + * because the socket isn't fully constructed. It's probably the result of + * the peer closing the connection and that is why libuv translates it to + * ECONNRESET. Previously, libuv retried until the EPROTOTYPE error went + * away but some VPN software causes the same behavior except the error is + * permanent, not transient, turning the retry mechanism into an infinite + * loop. See https://github.com/libuv/libuv/pull/482. + */ + if (errno == EPROTOTYPE) + return UV_ECONNRESET; +#endif /* __APPLE__ */ + return UV__ERR(errno); } diff --git a/deps/v8/BUILD.bazel b/deps/v8/BUILD.bazel index c5b4a94f911a7b..b8040db86f0ee5 100644 --- a/deps/v8/BUILD.bazel +++ b/deps/v8/BUILD.bazel @@ -150,7 +150,6 @@ config_setting( # v8_can_use_fpu_instructions # v8_use_mips_abi_hardfloat # v8_enable_gdbjit -# v8_untrusted_code_mitigations # v8_enable_minor_mc # v8_check_header_includes # v8_enable_shared_ro_heap @@ -305,9 +304,6 @@ v8_config( "V8_HAVE_TARGET_OS", "V8_TARGET_OS_MACOSX", ], - }) + select({ - ":is_android_x86": [ "DISABLE_UNTRUSTED_CODE_MITIGATIONS" ], - "//conditions:default": [], }) + select({ ":is_v8_enable_pointer_compression": [ "V8_COMPRESS_POINTERS", diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 3e48fb11bff9f9..727c4f8da6c97c 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -228,11 +228,6 @@ declare_args() { (is_linux || is_chromeos || is_mac)) || (v8_current_cpu == "ppc64" && (is_linux || is_chromeos)) - # Enable mitigations for executing untrusted code. - # Disabled by default on ia32 due to conflicting requirements with embedded - # builtins. - v8_untrusted_code_mitigations = false - # Enable minor mark compact. v8_enable_minor_mc = true @@ -461,9 +456,6 @@ if (build_with_chromium && v8_current_cpu == "arm64" && assert(!v8_disable_write_barriers || v8_enable_single_generation, "Disabling write barriers works only with single generation") -assert(v8_current_cpu != "x86" || !v8_untrusted_code_mitigations, - "Untrusted code mitigations are unsupported on ia32") - assert(v8_current_cpu == "arm64" || !v8_control_flow_integrity, "Control-flow integrity is only supported on arm64") @@ -480,9 +472,6 @@ assert(!v8_enable_map_packing || !v8_enable_pointer_compression, assert(!v8_enable_map_packing || v8_current_cpu == "x64", "Map packing is only supported on x64") -assert(!v8_use_multi_snapshots || !v8_control_flow_integrity, - "Control-flow integrity does not support multisnapshots") - assert(!v8_enable_heap_sandbox || v8_enable_pointer_compression, "V8 Heap Sandbox requires pointer compression") @@ -872,9 +861,6 @@ config("features") { if (v8_enable_lazy_source_positions) { defines += [ "V8_ENABLE_LAZY_SOURCE_POSITIONS" ] } - if (v8_use_multi_snapshots) { - defines += [ "V8_MULTI_SNAPSHOTS" ] - } if (v8_use_siphash) { defines += [ "V8_USE_SIPHASH" ] } @@ -1170,10 +1156,6 @@ config("toolchain") { defines += [ "V8_RUNTIME_CALL_STATS" ] } - if (!v8_untrusted_code_mitigations) { - defines += [ "DISABLE_UNTRUSTED_CODE_MITIGATIONS" ] - } - if (v8_no_inline) { if (is_win) { cflags += [ "/Ob0" ] @@ -1309,8 +1291,6 @@ template("asm_to_inline_asm") { if (is_android && enable_java_templates) { android_assets("v8_external_startup_data_assets") { if (v8_use_external_startup_data) { - # We don't support side-by-side snapshots on Android within Chromium. - assert(!v8_use_multi_snapshots) deps = [ "//v8" ] renaming_sources = [ "$root_out_dir/snapshot_blob.bin" ] if (current_cpu == "arm" || current_cpu == "x86" || @@ -1987,17 +1967,6 @@ if (emit_builtins_as_inline_asm) { args = [] } } -if (v8_use_multi_snapshots) { - run_mksnapshot("trusted") { - args = [ "--no-untrusted-code-mitigations" ] - embedded_variant = "Trusted" - } - if (emit_builtins_as_inline_asm) { - asm_to_inline_asm("trusted") { - args = [] - } - } -} action("v8_dump_build_config") { script = "tools/testrunner/utils/dump_build_config.py" @@ -2086,16 +2055,6 @@ v8_source_set("v8_snapshot") { deps += [ ":v8_base" ] sources += [ "src/snapshot/snapshot-external.cc" ] - - if (v8_use_multi_snapshots) { - public_deps += [ ":run_mksnapshot_trusted" ] - if (emit_builtins_as_inline_asm) { - deps += [ ":asm_to_inline_asm_trusted" ] - sources += [ "$target_gen_dir/embedded_trusted.cc" ] - } else { - sources += [ "$target_gen_dir/embedded_trusted.S" ] - } - } } else { # Also top-level visibility targets can depend on this. visibility += [ "//:gn_visibility" ] diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index a3346517978b32..0c22a858da0c6c 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -35,7 +35,8 @@ declare_args() { # as an argument to profiler's method `takeHeapSnapshot`. v8_enable_raw_heap_snapshots = false - # Enable several snapshots side-by-side (e.g. default and for trusted code). + # Deprecated flag that no longer does anything. + # TODO(rmcilroy): Remove this gn arg once it's no longer used by the bots. v8_use_multi_snapshots = false # Use external files for startup data blobs: @@ -99,13 +100,6 @@ if (v8_use_external_startup_data == "") { v8_use_external_startup_data = !is_ios } -if (v8_use_multi_snapshots) { - # Silently disable multi snapshots if they're incompatible with the current - # build configuration. This allows us to set v8_use_multi_snapshots=true on - # all bots, and e.g. no-snapshot bots will automatically do the right thing. - v8_use_multi_snapshots = v8_use_external_startup_data && !build_with_chromium -} - if (v8_enable_backtrace == "") { v8_enable_backtrace = is_debug && !v8_optimized_debug } diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index a4ef2015e02a3d..7f77900fb9bba6 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -11,7 +11,7 @@ #define V8_MAJOR_VERSION 9 #define V8_MINOR_VERSION 4 #define V8_BUILD_NUMBER 146 -#define V8_PATCH_LEVEL 24 +#define V8_PATCH_LEVEL 26 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/src/builtins/arm/builtins-arm.cc b/deps/v8/src/builtins/arm/builtins-arm.cc index f45c927e67546e..6c0de814872d92 100644 --- a/deps/v8/src/builtins/arm/builtins-arm.cc +++ b/deps/v8/src/builtins/arm/builtins-arm.cc @@ -2777,12 +2777,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ cmp(cp, Operand(0)); __ str(cp, MemOperand(fp, StandardFrameConstants::kContextOffset), ne); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Clear c_entry_fp, like we do in `LeaveExitFrame`. { UseScratchRegisterScope temps(masm); diff --git a/deps/v8/src/builtins/arm64/builtins-arm64.cc b/deps/v8/src/builtins/arm64/builtins-arm64.cc index b1f9a63e3c7e9c..db8a198c7a2f9f 100644 --- a/deps/v8/src/builtins/arm64/builtins-arm64.cc +++ b/deps/v8/src/builtins/arm64/builtins-arm64.cc @@ -3250,12 +3250,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ Str(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); __ Bind(¬_js_frame); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - { // Clear c_entry_fp, like we do in `LeaveExitFrame`. UseScratchRegisterScope temps(masm); diff --git a/deps/v8/src/builtins/builtins-async-module.cc b/deps/v8/src/builtins/builtins-async-module.cc index 7128ad7e9d35bf..180bbd5df898e7 100644 --- a/deps/v8/src/builtins/builtins-async-module.cc +++ b/deps/v8/src/builtins/builtins-async-module.cc @@ -12,7 +12,15 @@ namespace internal { BUILTIN(CallAsyncModuleFulfilled) { HandleScope handle_scope(isolate); Handle module(args.at(0)); - SourceTextModule::AsyncModuleExecutionFulfilled(isolate, module); + if (SourceTextModule::AsyncModuleExecutionFulfilled(isolate, module) + .IsNothing()) { + // The evaluation of async module can not throwing a JavaScript observable + // exception. + DCHECK(isolate->has_pending_exception()); + DCHECK_EQ(isolate->pending_exception(), + ReadOnlyRoots(isolate).termination_exception()); + return ReadOnlyRoots(isolate).exception(); + } return ReadOnlyRoots(isolate).undefined_value(); } diff --git a/deps/v8/src/builtins/mips/builtins-mips.cc b/deps/v8/src/builtins/mips/builtins-mips.cc index 8f4bf4d06bd13f..a07c786c57984d 100644 --- a/deps/v8/src/builtins/mips/builtins-mips.cc +++ b/deps/v8/src/builtins/mips/builtins-mips.cc @@ -2723,12 +2723,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ sw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); __ bind(&zero); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Clear c_entry_fp, like we do in `LeaveExitFrame`. { UseScratchRegisterScope temps(masm); diff --git a/deps/v8/src/builtins/mips64/builtins-mips64.cc b/deps/v8/src/builtins/mips64/builtins-mips64.cc index 45e1c32f82f990..70176b37702e82 100644 --- a/deps/v8/src/builtins/mips64/builtins-mips64.cc +++ b/deps/v8/src/builtins/mips64/builtins-mips64.cc @@ -2814,12 +2814,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ Sd(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); __ bind(&zero); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Clear c_entry_fp, like we do in `LeaveExitFrame`. { UseScratchRegisterScope temps(masm); diff --git a/deps/v8/src/builtins/ppc/builtins-ppc.cc b/deps/v8/src/builtins/ppc/builtins-ppc.cc index 02b76175ec128f..888daf0b73d152 100644 --- a/deps/v8/src/builtins/ppc/builtins-ppc.cc +++ b/deps/v8/src/builtins/ppc/builtins-ppc.cc @@ -2646,12 +2646,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ StoreU64(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); __ bind(&skip); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Clear c_entry_fp, like we do in `LeaveExitFrame`. { UseScratchRegisterScope temps(masm); diff --git a/deps/v8/src/builtins/riscv64/builtins-riscv64.cc b/deps/v8/src/builtins/riscv64/builtins-riscv64.cc index 764ef97952cf13..4b5ec97448d358 100644 --- a/deps/v8/src/builtins/riscv64/builtins-riscv64.cc +++ b/deps/v8/src/builtins/riscv64/builtins-riscv64.cc @@ -2903,12 +2903,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ Sd(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); __ bind(&zero); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Compute the handler entry address and jump to it. UseScratchRegisterScope temp(masm); Register scratch = temp.Acquire(); diff --git a/deps/v8/src/builtins/s390/builtins-s390.cc b/deps/v8/src/builtins/s390/builtins-s390.cc index 5129cc6ee31550..879c1ed4059e0b 100644 --- a/deps/v8/src/builtins/s390/builtins-s390.cc +++ b/deps/v8/src/builtins/s390/builtins-s390.cc @@ -2679,12 +2679,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ StoreU64(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); __ bind(&skip); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Clear c_entry_fp, like we do in `LeaveExitFrame`. { UseScratchRegisterScope temps(masm); diff --git a/deps/v8/src/builtins/setup-builtins-internal.cc b/deps/v8/src/builtins/setup-builtins-internal.cc index 2724f9a2001e4e..c51020119f5213 100644 --- a/deps/v8/src/builtins/setup-builtins-internal.cc +++ b/deps/v8/src/builtins/setup-builtins-internal.cc @@ -158,9 +158,8 @@ Code BuildWithCodeStubAssemblerJS(Isolate* isolate, Builtin builtin, Zone zone(isolate->allocator(), ZONE_NAME, kCompressGraphZone); const int argc_with_recv = (argc == kDontAdaptArgumentsSentinel) ? 0 : argc + 1; - compiler::CodeAssemblerState state( - isolate, &zone, argc_with_recv, CodeKind::BUILTIN, name, - PoisoningMitigationLevel::kDontPoison, builtin); + compiler::CodeAssemblerState state(isolate, &zone, argc_with_recv, + CodeKind::BUILTIN, name, builtin); generator(&state); Handle code = compiler::CodeAssembler::GenerateCode( &state, BuiltinAssemblerOptions(isolate, builtin), @@ -183,9 +182,8 @@ Code BuildWithCodeStubAssemblerCS(Isolate* isolate, Builtin builtin, CallInterfaceDescriptor descriptor(interface_descriptor); // Ensure descriptor is already initialized. DCHECK_LE(0, descriptor.GetRegisterParameterCount()); - compiler::CodeAssemblerState state( - isolate, &zone, descriptor, CodeKind::BUILTIN, name, - PoisoningMitigationLevel::kDontPoison, builtin); + compiler::CodeAssemblerState state(isolate, &zone, descriptor, + CodeKind::BUILTIN, name, builtin); generator(&state); Handle code = compiler::CodeAssembler::GenerateCode( &state, BuiltinAssemblerOptions(isolate, builtin), diff --git a/deps/v8/src/builtins/x64/builtins-x64.cc b/deps/v8/src/builtins/x64/builtins-x64.cc index 14186e3be6d1eb..a3fc113b899834 100644 --- a/deps/v8/src/builtins/x64/builtins-x64.cc +++ b/deps/v8/src/builtins/x64/builtins-x64.cc @@ -3691,12 +3691,6 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, __ movq(Operand(rbp, StandardFrameConstants::kContextOffset), rsi); __ bind(&skip); - // Reset the masking register. This is done independent of the underlying - // feature flag {FLAG_untrusted_code_mitigations} to make the snapshot work - // with both configurations. It is safe to always do this, because the - // underlying register is caller-saved and can be arbitrarily clobbered. - __ ResetSpeculationPoisonRegister(); - // Clear c_entry_fp, like we do in `LeaveExitFrame`. ExternalReference c_entry_fp_address = ExternalReference::Create( IsolateAddressId::kCEntryFPAddress, masm->isolate()); diff --git a/deps/v8/src/codegen/arm/macro-assembler-arm.cc b/deps/v8/src/codegen/arm/macro-assembler-arm.cc index 26d16406a6277e..5d6512fc6b71e9 100644 --- a/deps/v8/src/codegen/arm/macro-assembler-arm.cc +++ b/deps/v8/src/codegen/arm/macro-assembler-arm.cc @@ -2660,10 +2660,6 @@ void TurboAssembler::ComputeCodeStartAddress(Register dst) { sub(dst, pc, Operand(pc_offset() + Instruction::kPcLoadDelta)); } -void TurboAssembler::ResetSpeculationPoisonRegister() { - mov(kSpeculationPoisonRegister, Operand(-1)); -} - void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit, DeoptimizeKind kind, Label* ret, Label*) { diff --git a/deps/v8/src/codegen/arm/macro-assembler-arm.h b/deps/v8/src/codegen/arm/macro-assembler-arm.h index 41bc5ec54432a7..bcecaec42928fc 100644 --- a/deps/v8/src/codegen/arm/macro-assembler-arm.h +++ b/deps/v8/src/codegen/arm/macro-assembler-arm.h @@ -560,8 +560,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(Register dst); - void ResetSpeculationPoisonRegister(); - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/arm/register-arm.h b/deps/v8/src/codegen/arm/register-arm.h index 6608ad4edebb49..8cc838945d25bc 100644 --- a/deps/v8/src/codegen/arm/register-arm.h +++ b/deps/v8/src/codegen/arm/register-arm.h @@ -336,7 +336,6 @@ constexpr Register kReturnRegister2 = r2; constexpr Register kJSFunctionRegister = r1; constexpr Register kContextRegister = r7; constexpr Register kAllocateSizeRegister = r1; -constexpr Register kSpeculationPoisonRegister = r9; constexpr Register kInterpreterAccumulatorRegister = r0; constexpr Register kInterpreterBytecodeOffsetRegister = r5; constexpr Register kInterpreterBytecodeArrayRegister = r6; diff --git a/deps/v8/src/codegen/arm64/macro-assembler-arm64.cc b/deps/v8/src/codegen/arm64/macro-assembler-arm64.cc index ef95b4e8132400..be26ddb7e21290 100644 --- a/deps/v8/src/codegen/arm64/macro-assembler-arm64.cc +++ b/deps/v8/src/codegen/arm64/macro-assembler-arm64.cc @@ -3540,10 +3540,6 @@ void TurboAssembler::ComputeCodeStartAddress(const Register& rd) { adr(rd, -pc_offset()); } -void TurboAssembler::ResetSpeculationPoisonRegister() { - Mov(kSpeculationPoisonRegister, -1); -} - void TurboAssembler::RestoreFPAndLR() { static_assert(StandardFrameConstants::kCallerFPOffset + kSystemPointerSize == StandardFrameConstants::kCallerPCOffset, diff --git a/deps/v8/src/codegen/arm64/macro-assembler-arm64.h b/deps/v8/src/codegen/arm64/macro-assembler-arm64.h index 9128ba2c18edb7..b2a0f91d8c76de 100644 --- a/deps/v8/src/codegen/arm64/macro-assembler-arm64.h +++ b/deps/v8/src/codegen/arm64/macro-assembler-arm64.h @@ -1347,8 +1347,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(const Register& rd); - void ResetSpeculationPoisonRegister(); - // --------------------------------------------------------------------------- // Pointer compression Support diff --git a/deps/v8/src/codegen/arm64/register-arm64.h b/deps/v8/src/codegen/arm64/register-arm64.h index 5b234526a4361a..ae6c4c920037c0 100644 --- a/deps/v8/src/codegen/arm64/register-arm64.h +++ b/deps/v8/src/codegen/arm64/register-arm64.h @@ -701,8 +701,6 @@ constexpr Register kJSFunctionRegister = x1; constexpr Register kContextRegister = cp; constexpr Register kAllocateSizeRegister = x1; -constexpr Register kSpeculationPoisonRegister = x23; - constexpr Register kInterpreterAccumulatorRegister = x0; constexpr Register kInterpreterBytecodeOffsetRegister = x19; constexpr Register kInterpreterBytecodeArrayRegister = x20; diff --git a/deps/v8/src/codegen/code-stub-assembler.cc b/deps/v8/src/codegen/code-stub-assembler.cc index e25135decee421..7ad013e2fca6a9 100644 --- a/deps/v8/src/codegen/code-stub-assembler.cc +++ b/deps/v8/src/codegen/code-stub-assembler.cc @@ -2193,9 +2193,10 @@ TNode CodeStubAssembler::LoadArrayLength( } template -TNode CodeStubAssembler::LoadArrayElement( - TNode array, int array_header_size, TNode index_node, - int additional_offset, LoadSensitivity needs_poisoning) { +TNode CodeStubAssembler::LoadArrayElement(TNode array, + int array_header_size, + TNode index_node, + int additional_offset) { // TODO(v8:9708): Do we want to keep both IntPtrT and UintPtrT variants? static_assert(std::is_same::value || std::is_same::value || @@ -2210,23 +2211,17 @@ TNode CodeStubAssembler::LoadArrayElement( CSA_ASSERT(this, IsOffsetInBounds(offset, LoadArrayLength(array), array_header_size)); constexpr MachineType machine_type = MachineTypeOf::value; - // TODO(gsps): Remove the Load case once LoadFromObject supports poisoning - if (needs_poisoning == LoadSensitivity::kSafe) { - return UncheckedCast(LoadFromObject(machine_type, array, offset)); - } else { - return UncheckedCast( - Load(machine_type, array, offset, needs_poisoning)); - } + return UncheckedCast(LoadFromObject(machine_type, array, offset)); } template V8_EXPORT_PRIVATE TNode CodeStubAssembler::LoadArrayElement( - TNode, int, TNode, int, LoadSensitivity); + TNode, int, TNode, int); template TNode CodeStubAssembler::LoadFixedArrayElement( TNode object, TNode index, int additional_offset, - LoadSensitivity needs_poisoning, CheckBounds check_bounds) { + CheckBounds check_bounds) { // TODO(v8:9708): Do we want to keep both IntPtrT and UintPtrT variants? static_assert(std::is_same::value || std::is_same::value || @@ -2238,25 +2233,22 @@ TNode CodeStubAssembler::LoadFixedArrayElement( if (NeedsBoundsCheck(check_bounds)) { FixedArrayBoundsCheck(object, index, additional_offset); } - TNode element = - LoadArrayElement(object, FixedArray::kHeaderSize, index, - additional_offset, needs_poisoning); + TNode element = LoadArrayElement(object, FixedArray::kHeaderSize, + index, additional_offset); return CAST(element); } template V8_EXPORT_PRIVATE TNode CodeStubAssembler::LoadFixedArrayElement(TNode, TNode, - int, LoadSensitivity, - CheckBounds); + int, CheckBounds); template V8_EXPORT_PRIVATE TNode CodeStubAssembler::LoadFixedArrayElement(TNode, TNode, int, - LoadSensitivity, CheckBounds); template V8_EXPORT_PRIVATE TNode CodeStubAssembler::LoadFixedArrayElement(TNode, TNode, int, - LoadSensitivity, CheckBounds); + CheckBounds); void CodeStubAssembler::FixedArrayBoundsCheck(TNode array, TNode index, @@ -2291,9 +2283,8 @@ void CodeStubAssembler::FixedArrayBoundsCheck(TNode array, TNode CodeStubAssembler::LoadPropertyArrayElement( TNode object, TNode index) { int additional_offset = 0; - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe; return CAST(LoadArrayElement(object, PropertyArray::kHeaderSize, index, - additional_offset, needs_poisoning)); + additional_offset)); } TNode CodeStubAssembler::LoadPropertyArrayLength( @@ -2648,7 +2639,7 @@ TNode CodeStubAssembler::LoadAndUntagToWord32FixedArrayElement( TNode CodeStubAssembler::LoadWeakFixedArrayElement( TNode object, TNode index, int additional_offset) { return LoadArrayElement(object, WeakFixedArray::kHeaderSize, index, - additional_offset, LoadSensitivity::kSafe); + additional_offset); } TNode CodeStubAssembler::LoadFixedDoubleArrayElement( diff --git a/deps/v8/src/codegen/code-stub-assembler.h b/deps/v8/src/codegen/code-stub-assembler.h index 008af6006f5b63..b3930c0a5231d7 100644 --- a/deps/v8/src/codegen/code-stub-assembler.h +++ b/deps/v8/src/codegen/code-stub-assembler.h @@ -1448,40 +1448,35 @@ class V8_EXPORT_PRIVATE CodeStubAssembler // Array is any array-like type that has a fixed header followed by // tagged elements. template - TNode LoadArrayElement( - TNode array, int array_header_size, TNode index, - int additional_offset = 0, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe); + TNode LoadArrayElement(TNode array, int array_header_size, + TNode index, + int additional_offset = 0); template TNode LoadFixedArrayElement( TNode object, TNode index, int additional_offset = 0, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe, CheckBounds check_bounds = CheckBounds::kAlways); // This doesn't emit a bounds-check. As part of the security-performance // tradeoff, only use it if it is performance critical. - TNode UnsafeLoadFixedArrayElement( - TNode object, TNode index, int additional_offset = 0, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { + TNode UnsafeLoadFixedArrayElement(TNode object, + TNode index, + int additional_offset = 0) { return LoadFixedArrayElement(object, index, additional_offset, - needs_poisoning, CheckBounds::kDebugOnly); + CheckBounds::kDebugOnly); } - TNode LoadFixedArrayElement( - TNode object, int index, int additional_offset = 0, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { + TNode LoadFixedArrayElement(TNode object, int index, + int additional_offset = 0) { return LoadFixedArrayElement(object, IntPtrConstant(index), - additional_offset, needs_poisoning); + additional_offset); } // This doesn't emit a bounds-check. As part of the security-performance // tradeoff, only use it if it is performance critical. - TNode UnsafeLoadFixedArrayElement( - TNode object, int index, int additional_offset = 0, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { + TNode UnsafeLoadFixedArrayElement(TNode object, int index, + int additional_offset = 0) { return LoadFixedArrayElement(object, IntPtrConstant(index), - additional_offset, needs_poisoning, - CheckBounds::kDebugOnly); + additional_offset, CheckBounds::kDebugOnly); } TNode LoadPropertyArrayElement(TNode object, diff --git a/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc b/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc index c95ea8ad2c6d21..09fb17a6cea109 100644 --- a/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc +++ b/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc @@ -2385,63 +2385,6 @@ void TurboAssembler::Jump(Handle code_object, RelocInfo::Mode rmode) { jmp(code_object, rmode); } -void TurboAssembler::RetpolineCall(Register reg) { - ASM_CODE_COMMENT(this); - Label setup_return, setup_target, inner_indirect_branch, capture_spec; - - jmp(&setup_return); // Jump past the entire retpoline below. - - bind(&inner_indirect_branch); - call(&setup_target); - - bind(&capture_spec); - pause(); - jmp(&capture_spec); - - bind(&setup_target); - mov(Operand(esp, 0), reg); - ret(0); - - bind(&setup_return); - call(&inner_indirect_branch); // Callee will return after this instruction. -} - -void TurboAssembler::RetpolineCall(Address destination, RelocInfo::Mode rmode) { - ASM_CODE_COMMENT(this); - Label setup_return, setup_target, inner_indirect_branch, capture_spec; - - jmp(&setup_return); // Jump past the entire retpoline below. - - bind(&inner_indirect_branch); - call(&setup_target); - - bind(&capture_spec); - pause(); - jmp(&capture_spec); - - bind(&setup_target); - mov(Operand(esp, 0), destination, rmode); - ret(0); - - bind(&setup_return); - call(&inner_indirect_branch); // Callee will return after this instruction. -} - -void TurboAssembler::RetpolineJump(Register reg) { - ASM_CODE_COMMENT(this); - Label setup_target, capture_spec; - - call(&setup_target); - - bind(&capture_spec); - pause(); - jmp(&capture_spec); - - bind(&setup_target); - mov(Operand(esp, 0), reg); - ret(0); -} - void TurboAssembler::CheckPageFlag(Register object, Register scratch, int mask, Condition cc, Label* condition_met, Label::Distance condition_met_distance) { diff --git a/deps/v8/src/codegen/ia32/macro-assembler-ia32.h b/deps/v8/src/codegen/ia32/macro-assembler-ia32.h index 527c3570470626..1d5243f51815d4 100644 --- a/deps/v8/src/codegen/ia32/macro-assembler-ia32.h +++ b/deps/v8/src/codegen/ia32/macro-assembler-ia32.h @@ -158,15 +158,10 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler { JumpMode jump_mode = JumpMode::kJump); void Jump(const ExternalReference& reference); - void RetpolineCall(Register reg); - void RetpolineCall(Address destination, RelocInfo::Mode rmode); - void Jump(Handle code_object, RelocInfo::Mode rmode); void LoadMap(Register destination, Register object); - void RetpolineJump(Register reg); - void Trap(); void DebugBreak(); @@ -480,9 +475,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(Register dst); - // TODO(860429): Remove remaining poisoning infrastructure on ia32. - void ResetSpeculationPoisonRegister() { UNREACHABLE(); } - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/ia32/register-ia32.h b/deps/v8/src/codegen/ia32/register-ia32.h index 5dc035d96690e4..37a5783deda0d9 100644 --- a/deps/v8/src/codegen/ia32/register-ia32.h +++ b/deps/v8/src/codegen/ia32/register-ia32.h @@ -161,9 +161,6 @@ constexpr Register kWasmCompileLazyFuncIndexRegister = edi; constexpr Register kRootRegister = ebx; -// TODO(860429): Remove remaining poisoning infrastructure on ia32. -constexpr Register kSpeculationPoisonRegister = no_reg; - constexpr DoubleRegister kFPReturnRegister0 = xmm1; // xmm0 isn't allocatable. } // namespace internal diff --git a/deps/v8/src/codegen/mips/macro-assembler-mips.cc b/deps/v8/src/codegen/mips/macro-assembler-mips.cc index 9c1af1cb056c7f..72166769eb6ca2 100644 --- a/deps/v8/src/codegen/mips/macro-assembler-mips.cc +++ b/deps/v8/src/codegen/mips/macro-assembler-mips.cc @@ -5519,10 +5519,6 @@ void TurboAssembler::ComputeCodeStartAddress(Register dst) { pop(ra); // Restore ra } -void TurboAssembler::ResetSpeculationPoisonRegister() { - li(kSpeculationPoisonRegister, -1); -} - void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit, DeoptimizeKind kind, Label* ret, Label*) { diff --git a/deps/v8/src/codegen/mips/macro-assembler-mips.h b/deps/v8/src/codegen/mips/macro-assembler-mips.h index ffa5f5820d2d8e..365640a617ab7a 100644 --- a/deps/v8/src/codegen/mips/macro-assembler-mips.h +++ b/deps/v8/src/codegen/mips/macro-assembler-mips.h @@ -817,8 +817,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(Register dst); - void ResetSpeculationPoisonRegister(); - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/mips/register-mips.h b/deps/v8/src/codegen/mips/register-mips.h index 95164a86c1c3a7..7fd259bf9ba328 100644 --- a/deps/v8/src/codegen/mips/register-mips.h +++ b/deps/v8/src/codegen/mips/register-mips.h @@ -362,7 +362,6 @@ constexpr Register kReturnRegister2 = a0; constexpr Register kJSFunctionRegister = a1; constexpr Register kContextRegister = s7; constexpr Register kAllocateSizeRegister = a0; -constexpr Register kSpeculationPoisonRegister = t3; constexpr Register kInterpreterAccumulatorRegister = v0; constexpr Register kInterpreterBytecodeOffsetRegister = t4; constexpr Register kInterpreterBytecodeArrayRegister = t5; diff --git a/deps/v8/src/codegen/mips64/macro-assembler-mips64.cc b/deps/v8/src/codegen/mips64/macro-assembler-mips64.cc index 708cf4baa6736a..2d684b9087ff4a 100644 --- a/deps/v8/src/codegen/mips64/macro-assembler-mips64.cc +++ b/deps/v8/src/codegen/mips64/macro-assembler-mips64.cc @@ -6059,10 +6059,6 @@ void TurboAssembler::ComputeCodeStartAddress(Register dst) { pop(ra); // Restore ra } -void TurboAssembler::ResetSpeculationPoisonRegister() { - li(kSpeculationPoisonRegister, -1); -} - void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit, DeoptimizeKind kind, Label* ret, Label*) { diff --git a/deps/v8/src/codegen/mips64/macro-assembler-mips64.h b/deps/v8/src/codegen/mips64/macro-assembler-mips64.h index a4991bcb1e642d..1ad5f4fdae64df 100644 --- a/deps/v8/src/codegen/mips64/macro-assembler-mips64.h +++ b/deps/v8/src/codegen/mips64/macro-assembler-mips64.h @@ -836,8 +836,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(Register dst); - void ResetSpeculationPoisonRegister(); - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/mips64/register-mips64.h b/deps/v8/src/codegen/mips64/register-mips64.h index 51b03aba1fa27a..1fbe3ec7ac2c7c 100644 --- a/deps/v8/src/codegen/mips64/register-mips64.h +++ b/deps/v8/src/codegen/mips64/register-mips64.h @@ -373,7 +373,6 @@ constexpr Register kReturnRegister2 = a0; constexpr Register kJSFunctionRegister = a1; constexpr Register kContextRegister = s7; constexpr Register kAllocateSizeRegister = a0; -constexpr Register kSpeculationPoisonRegister = t3; constexpr Register kInterpreterAccumulatorRegister = v0; constexpr Register kInterpreterBytecodeOffsetRegister = t0; constexpr Register kInterpreterBytecodeArrayRegister = t1; diff --git a/deps/v8/src/codegen/optimized-compilation-info.cc b/deps/v8/src/codegen/optimized-compilation-info.cc index e3ca07a3c9d015..b8eb5e62fe4cf7 100644 --- a/deps/v8/src/codegen/optimized-compilation-info.cc +++ b/deps/v8/src/codegen/optimized-compilation-info.cc @@ -63,31 +63,7 @@ OptimizedCompilationInfo::OptimizedCompilationInfo( ConfigureFlags(); } -#ifdef DEBUG -bool OptimizedCompilationInfo::FlagSetIsValid(Flag flag) const { - switch (flag) { - case kPoisonRegisterArguments: - return untrusted_code_mitigations(); - default: - return true; - } - UNREACHABLE(); -} - -bool OptimizedCompilationInfo::FlagGetIsValid(Flag flag) const { - switch (flag) { - case kPoisonRegisterArguments: - if (!GetFlag(kPoisonRegisterArguments)) return true; - return untrusted_code_mitigations() && called_with_code_start_register(); - default: - return true; - } - UNREACHABLE(); -} -#endif // DEBUG - void OptimizedCompilationInfo::ConfigureFlags() { - if (FLAG_untrusted_code_mitigations) set_untrusted_code_mitigations(); if (FLAG_turbo_inline_js_wasm_calls) set_inline_js_wasm_calls(); if (!is_osr() && (IsTurboprop() || FLAG_concurrent_inlining)) { @@ -104,7 +80,6 @@ void OptimizedCompilationInfo::ConfigureFlags() { case CodeKind::TURBOPROP: set_called_with_code_start_register(); set_switch_jump_table(); - if (FLAG_untrusted_code_mitigations) set_poison_register_arguments(); // TODO(yangguo): Disable this in case of debugging for crbug.com/826613 if (FLAG_analyze_environment_liveness) set_analyze_environment_liveness(); break; diff --git a/deps/v8/src/codegen/optimized-compilation-info.h b/deps/v8/src/codegen/optimized-compilation-info.h index b7ed0d29c4f477..d92964c79613d9 100644 --- a/deps/v8/src/codegen/optimized-compilation-info.h +++ b/deps/v8/src/codegen/optimized-compilation-info.h @@ -58,21 +58,19 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { V(SourcePositions, source_positions, 4) \ V(BailoutOnUninitialized, bailout_on_uninitialized, 5) \ V(LoopPeeling, loop_peeling, 6) \ - V(UntrustedCodeMitigations, untrusted_code_mitigations, 7) \ - V(SwitchJumpTable, switch_jump_table, 8) \ - V(CalledWithCodeStartRegister, called_with_code_start_register, 9) \ - V(PoisonRegisterArguments, poison_register_arguments, 10) \ - V(AllocationFolding, allocation_folding, 11) \ - V(AnalyzeEnvironmentLiveness, analyze_environment_liveness, 12) \ - V(TraceTurboJson, trace_turbo_json, 13) \ - V(TraceTurboGraph, trace_turbo_graph, 14) \ - V(TraceTurboScheduled, trace_turbo_scheduled, 15) \ - V(TraceTurboAllocation, trace_turbo_allocation, 16) \ - V(TraceHeapBroker, trace_heap_broker, 17) \ - V(WasmRuntimeExceptionSupport, wasm_runtime_exception_support, 18) \ - V(ConcurrentInlining, concurrent_inlining, 19) \ - V(DiscardResultForTesting, discard_result_for_testing, 20) \ - V(InlineJSWasmCalls, inline_js_wasm_calls, 21) + V(SwitchJumpTable, switch_jump_table, 7) \ + V(CalledWithCodeStartRegister, called_with_code_start_register, 8) \ + V(AllocationFolding, allocation_folding, 9) \ + V(AnalyzeEnvironmentLiveness, analyze_environment_liveness, 10) \ + V(TraceTurboJson, trace_turbo_json, 11) \ + V(TraceTurboGraph, trace_turbo_graph, 12) \ + V(TraceTurboScheduled, trace_turbo_scheduled, 13) \ + V(TraceTurboAllocation, trace_turbo_allocation, 14) \ + V(TraceHeapBroker, trace_heap_broker, 15) \ + V(WasmRuntimeExceptionSupport, wasm_runtime_exception_support, 16) \ + V(ConcurrentInlining, concurrent_inlining, 17) \ + V(DiscardResultForTesting, discard_result_for_testing, 18) \ + V(InlineJSWasmCalls, inline_js_wasm_calls, 19) enum Flag { #define DEF_ENUM(Camel, Lower, Bit) k##Camel = 1 << Bit, @@ -82,7 +80,6 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { #define DEF_GETTER(Camel, Lower, Bit) \ bool Lower() const { \ - DCHECK(FlagGetIsValid(k##Camel)); \ return GetFlag(k##Camel); \ } FLAGS(DEF_GETTER) @@ -90,17 +87,11 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { #define DEF_SETTER(Camel, Lower, Bit) \ void set_##Lower() { \ - DCHECK(FlagSetIsValid(k##Camel)); \ SetFlag(k##Camel); \ } FLAGS(DEF_SETTER) #undef DEF_SETTER -#ifdef DEBUG - bool FlagGetIsValid(Flag flag) const; - bool FlagSetIsValid(Flag flag) const; -#endif // DEBUG - // Construct a compilation info for optimized compilation. OptimizedCompilationInfo(Zone* zone, Isolate* isolate, Handle shared, @@ -141,13 +132,6 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { } compiler::NodeObserver* node_observer() const { return node_observer_; } - void SetPoisoningMitigationLevel(PoisoningMitigationLevel poisoning_level) { - poisoning_level_ = poisoning_level; - } - PoisoningMitigationLevel GetPoisoningMitigationLevel() const { - return poisoning_level_; - } - // Code getters and setters. void SetCode(Handle code); @@ -269,8 +253,6 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { // Compilation flags. unsigned flags_ = 0; - PoisoningMitigationLevel poisoning_level_ = - PoisoningMitigationLevel::kDontPoison; const CodeKind code_kind_; Builtin builtin_ = Builtin::kNoBuiltinId; diff --git a/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc b/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc index f243055490cfa5..447cc8e4dbc314 100644 --- a/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc +++ b/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc @@ -3453,10 +3453,6 @@ void TurboAssembler::SwapSimd128(MemOperand src, MemOperand dst, addi(sp, sp, Operand(2 * kSimd128Size)); } -void TurboAssembler::ResetSpeculationPoisonRegister() { - mov(kSpeculationPoisonRegister, Operand(-1)); -} - void TurboAssembler::JumpIfEqual(Register x, int32_t y, Label* dest) { CmpS64(x, Operand(y), r0); beq(dest); diff --git a/deps/v8/src/codegen/ppc/macro-assembler-ppc.h b/deps/v8/src/codegen/ppc/macro-assembler-ppc.h index 035c29b1e5266e..95290af5aa8120 100644 --- a/deps/v8/src/codegen/ppc/macro-assembler-ppc.h +++ b/deps/v8/src/codegen/ppc/macro-assembler-ppc.h @@ -735,8 +735,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // The return address on the stack is used by frame iteration. void StoreReturnAddressAndCall(Register target); - void ResetSpeculationPoisonRegister(); - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/ppc/register-ppc.h b/deps/v8/src/codegen/ppc/register-ppc.h index ffeb327055fb55..68adfdb1557bce 100644 --- a/deps/v8/src/codegen/ppc/register-ppc.h +++ b/deps/v8/src/codegen/ppc/register-ppc.h @@ -349,7 +349,6 @@ constexpr Register kReturnRegister2 = r5; constexpr Register kJSFunctionRegister = r4; constexpr Register kContextRegister = r30; constexpr Register kAllocateSizeRegister = r4; -constexpr Register kSpeculationPoisonRegister = r14; constexpr Register kInterpreterAccumulatorRegister = r3; constexpr Register kInterpreterBytecodeOffsetRegister = r15; constexpr Register kInterpreterBytecodeArrayRegister = r16; diff --git a/deps/v8/src/codegen/register-configuration.cc b/deps/v8/src/codegen/register-configuration.cc index aca5295c11929e..17dddcd88278ae 100644 --- a/deps/v8/src/codegen/register-configuration.cc +++ b/deps/v8/src/codegen/register-configuration.cc @@ -102,42 +102,6 @@ class ArchDefaultRegisterConfiguration : public RegisterConfiguration { DEFINE_LAZY_LEAKY_OBJECT_GETTER(ArchDefaultRegisterConfiguration, GetDefaultRegisterConfiguration) -// Allocatable registers with the masking register removed. -class ArchDefaultPoisoningRegisterConfiguration : public RegisterConfiguration { - public: - ArchDefaultPoisoningRegisterConfiguration() - : RegisterConfiguration( - Register::kNumRegisters, DoubleRegister::kNumRegisters, - kMaxAllocatableGeneralRegisterCount - 1, - get_num_allocatable_double_registers(), - InitializeGeneralRegisterCodes(), get_allocatable_double_codes(), - kSimpleFPAliasing ? AliasingKind::OVERLAP : AliasingKind::COMBINE) { - } - - private: - static const int* InitializeGeneralRegisterCodes() { - int filtered_index = 0; - for (int i = 0; i < kMaxAllocatableGeneralRegisterCount; ++i) { - if (kAllocatableGeneralCodes[i] != kSpeculationPoisonRegister.code()) { - allocatable_general_codes_[filtered_index] = - kAllocatableGeneralCodes[i]; - filtered_index++; - } - } - DCHECK_EQ(filtered_index, kMaxAllocatableGeneralRegisterCount - 1); - return allocatable_general_codes_; - } - - static int - allocatable_general_codes_[kMaxAllocatableGeneralRegisterCount - 1]; -}; - -int ArchDefaultPoisoningRegisterConfiguration::allocatable_general_codes_ - [kMaxAllocatableGeneralRegisterCount - 1]; - -DEFINE_LAZY_LEAKY_OBJECT_GETTER(ArchDefaultPoisoningRegisterConfiguration, - GetDefaultPoisoningRegisterConfiguration) - // RestrictedRegisterConfiguration uses the subset of allocatable general // registers the architecture support, which results into generating assembly // to use less registers. Currently, it's only used by RecordWrite code stub. @@ -184,10 +148,6 @@ const RegisterConfiguration* RegisterConfiguration::Default() { return GetDefaultRegisterConfiguration(); } -const RegisterConfiguration* RegisterConfiguration::Poisoning() { - return GetDefaultPoisoningRegisterConfiguration(); -} - const RegisterConfiguration* RegisterConfiguration::RestrictGeneralRegisters( RegList registers) { int num = NumRegs(registers); diff --git a/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc b/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc index 4d231adfb4823e..b49cd669441080 100644 --- a/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc +++ b/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc @@ -4744,10 +4744,6 @@ void TurboAssembler::ComputeCodeStartAddress(Register dst) { pop(ra); // Restore ra } -void TurboAssembler::ResetSpeculationPoisonRegister() { - li(kSpeculationPoisonRegister, -1); -} - void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit, DeoptimizeKind kind, Label* ret, Label*) { diff --git a/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h b/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h index 75d99a34059b1b..cd7310e00aa671 100644 --- a/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h +++ b/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h @@ -858,8 +858,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(Register dst); - void ResetSpeculationPoisonRegister(); - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/riscv64/register-riscv64.h b/deps/v8/src/codegen/riscv64/register-riscv64.h index 69654a4f54d156..af652f0e61a86e 100644 --- a/deps/v8/src/codegen/riscv64/register-riscv64.h +++ b/deps/v8/src/codegen/riscv64/register-riscv64.h @@ -344,7 +344,6 @@ constexpr Register kReturnRegister2 = a2; constexpr Register kJSFunctionRegister = a1; constexpr Register kContextRegister = s7; constexpr Register kAllocateSizeRegister = a1; -constexpr Register kSpeculationPoisonRegister = a7; constexpr Register kInterpreterAccumulatorRegister = a0; constexpr Register kInterpreterBytecodeOffsetRegister = t0; constexpr Register kInterpreterBytecodeArrayRegister = t1; diff --git a/deps/v8/src/codegen/s390/macro-assembler-s390.cc b/deps/v8/src/codegen/s390/macro-assembler-s390.cc index 4de7f2cf4bb292..481105cdd36b3d 100644 --- a/deps/v8/src/codegen/s390/macro-assembler-s390.cc +++ b/deps/v8/src/codegen/s390/macro-assembler-s390.cc @@ -4670,10 +4670,6 @@ void TurboAssembler::SwapSimd128(MemOperand src, MemOperand dst, lay(sp, MemOperand(sp, kSimd128Size)); } -void TurboAssembler::ResetSpeculationPoisonRegister() { - mov(kSpeculationPoisonRegister, Operand(-1)); -} - void TurboAssembler::ComputeCodeStartAddress(Register dst) { larl(dst, Operand(-pc_offset() / 2)); } diff --git a/deps/v8/src/codegen/s390/macro-assembler-s390.h b/deps/v8/src/codegen/s390/macro-assembler-s390.h index 51cdb48326380e..1e3567cf9cf222 100644 --- a/deps/v8/src/codegen/s390/macro-assembler-s390.h +++ b/deps/v8/src/codegen/s390/macro-assembler-s390.h @@ -1015,7 +1015,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { void CheckPageFlag(Register object, Register scratch, int mask, Condition cc, Label* condition_met); - void ResetSpeculationPoisonRegister(); void ComputeCodeStartAddress(Register dst); void LoadPC(Register dst); diff --git a/deps/v8/src/codegen/s390/register-s390.h b/deps/v8/src/codegen/s390/register-s390.h index 48accf08c5d0c4..6e3b6a3e2b226a 100644 --- a/deps/v8/src/codegen/s390/register-s390.h +++ b/deps/v8/src/codegen/s390/register-s390.h @@ -253,7 +253,6 @@ constexpr Register kReturnRegister2 = r4; constexpr Register kJSFunctionRegister = r3; constexpr Register kContextRegister = r13; constexpr Register kAllocateSizeRegister = r3; -constexpr Register kSpeculationPoisonRegister = r9; constexpr Register kInterpreterAccumulatorRegister = r2; constexpr Register kInterpreterBytecodeOffsetRegister = r6; constexpr Register kInterpreterBytecodeArrayRegister = r7; diff --git a/deps/v8/src/codegen/x64/macro-assembler-x64.cc b/deps/v8/src/codegen/x64/macro-assembler-x64.cc index 5a8dc356b8f45e..0ac3b3697914da 100644 --- a/deps/v8/src/codegen/x64/macro-assembler-x64.cc +++ b/deps/v8/src/codegen/x64/macro-assembler-x64.cc @@ -1993,47 +1993,6 @@ void TurboAssembler::JumpCodeTObject(Register code, JumpMode jump_mode) { } } -void TurboAssembler::RetpolineCall(Register reg) { - ASM_CODE_COMMENT(this); - Label setup_return, setup_target, inner_indirect_branch, capture_spec; - - jmp(&setup_return); // Jump past the entire retpoline below. - - bind(&inner_indirect_branch); - call(&setup_target); - - bind(&capture_spec); - pause(); - jmp(&capture_spec); - - bind(&setup_target); - movq(Operand(rsp, 0), reg); - ret(0); - - bind(&setup_return); - call(&inner_indirect_branch); // Callee will return after this instruction. -} - -void TurboAssembler::RetpolineCall(Address destination, RelocInfo::Mode rmode) { - Move(kScratchRegister, destination, rmode); - RetpolineCall(kScratchRegister); -} - -void TurboAssembler::RetpolineJump(Register reg) { - ASM_CODE_COMMENT(this); - Label setup_target, capture_spec; - - call(&setup_target); - - bind(&capture_spec); - pause(); - jmp(&capture_spec); - - bind(&setup_target); - movq(Operand(rsp, 0), reg); - ret(0); -} - void TurboAssembler::Pmaddwd(XMMRegister dst, XMMRegister src1, Operand src2) { if (CpuFeatures::IsSupported(AVX)) { CpuFeatureScope avx_scope(this, AVX); @@ -3523,11 +3482,6 @@ void TurboAssembler::ComputeCodeStartAddress(Register dst) { leaq(dst, Operand(¤t, -pc)); } -void TurboAssembler::ResetSpeculationPoisonRegister() { - // TODO(turbofan): Perhaps, we want to put an lfence here. - Move(kSpeculationPoisonRegister, -1); -} - void TurboAssembler::CallForDeoptimization(Builtin target, int, Label* exit, DeoptimizeKind kind, Label* ret, Label*) { diff --git a/deps/v8/src/codegen/x64/macro-assembler-x64.h b/deps/v8/src/codegen/x64/macro-assembler-x64.h index 02b9eb410ec837..25689b01d970a9 100644 --- a/deps/v8/src/codegen/x64/macro-assembler-x64.h +++ b/deps/v8/src/codegen/x64/macro-assembler-x64.h @@ -432,17 +432,12 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler { void CallCodeTObject(Register code); void JumpCodeTObject(Register code, JumpMode jump_mode = JumpMode::kJump); - void RetpolineCall(Register reg); - void RetpolineCall(Address destination, RelocInfo::Mode rmode); - void Jump(Address destination, RelocInfo::Mode rmode); void Jump(const ExternalReference& reference); void Jump(Operand op); void Jump(Handle code_object, RelocInfo::Mode rmode, Condition cc = always); - void RetpolineJump(Register reg); - void CallForDeoptimization(Builtin target, int deopt_id, Label* exit, DeoptimizeKind kind, Label* ret, Label* jump_deoptimization_entry_label); @@ -632,8 +627,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler { // This is an alternative to embedding the {CodeObject} handle as a reference. void ComputeCodeStartAddress(Register dst); - void ResetSpeculationPoisonRegister(); - // Control-flow integrity: // Define a function entrypoint. This doesn't emit any code for this diff --git a/deps/v8/src/codegen/x64/register-x64.h b/deps/v8/src/codegen/x64/register-x64.h index 61e7ccf396a3e1..b8d97e104b0a73 100644 --- a/deps/v8/src/codegen/x64/register-x64.h +++ b/deps/v8/src/codegen/x64/register-x64.h @@ -212,7 +212,6 @@ constexpr Register kReturnRegister2 = r8; constexpr Register kJSFunctionRegister = rdi; constexpr Register kContextRegister = rsi; constexpr Register kAllocateSizeRegister = rdx; -constexpr Register kSpeculationPoisonRegister = r11; constexpr Register kInterpreterAccumulatorRegister = rax; constexpr Register kInterpreterBytecodeOffsetRegister = r9; constexpr Register kInterpreterBytecodeArrayRegister = r12; diff --git a/deps/v8/src/common/globals.h b/deps/v8/src/common/globals.h index 6aee59eb83fd54..a2506ef63c7124 100644 --- a/deps/v8/src/common/globals.h +++ b/deps/v8/src/common/globals.h @@ -1701,20 +1701,6 @@ enum IsolateAddressId { kIsolateAddressCount }; -enum class PoisoningMitigationLevel { - kPoisonAll, - kDontPoison, - kPoisonCriticalOnly -}; - -enum class LoadSensitivity { - kCritical, // Critical loads are poisoned whenever we can run untrusted - // code (i.e., when --untrusted-code-mitigations is on). - kUnsafe, // Unsafe loads are poisoned when full poisoning is on - // (--branch-load-poisoning). - kSafe // Safe loads are never poisoned. -}; - // The reason for a WebAssembly trap. #define FOREACH_WASM_TRAPREASON(V) \ V(TrapUnreachable) \ diff --git a/deps/v8/src/compiler/access-builder.cc b/deps/v8/src/compiler/access-builder.cc index 675371df57a99b..ea2c35d9537951 100644 --- a/deps/v8/src/compiler/access-builder.cc +++ b/deps/v8/src/compiler/access-builder.cc @@ -82,25 +82,25 @@ FieldAccess AccessBuilder::ForJSObjectPropertiesOrHash() { FieldAccess access = {kTaggedBase, JSObject::kPropertiesOrHashOffset, MaybeHandle(), MaybeHandle(), Type::Any(), MachineType::AnyTagged(), - kFullWriteBarrier, LoadSensitivity::kCritical}; + kFullWriteBarrier}; return access; } // static FieldAccess AccessBuilder::ForJSObjectPropertiesOrHashKnownPointer() { - FieldAccess access = {kTaggedBase, JSObject::kPropertiesOrHashOffset, - MaybeHandle(), MaybeHandle(), - Type::Any(), MachineType::TaggedPointer(), - kPointerWriteBarrier, LoadSensitivity::kCritical}; + FieldAccess access = {kTaggedBase, JSObject::kPropertiesOrHashOffset, + MaybeHandle(), MaybeHandle(), + Type::Any(), MachineType::TaggedPointer(), + kPointerWriteBarrier}; return access; } // static FieldAccess AccessBuilder::ForJSObjectElements() { - FieldAccess access = {kTaggedBase, JSObject::kElementsOffset, - MaybeHandle(), MaybeHandle(), - Type::Internal(), MachineType::TaggedPointer(), - kPointerWriteBarrier, LoadSensitivity::kCritical}; + FieldAccess access = {kTaggedBase, JSObject::kElementsOffset, + MaybeHandle(), MaybeHandle(), + Type::Internal(), MachineType::TaggedPointer(), + kPointerWriteBarrier}; return access; } @@ -410,7 +410,7 @@ FieldAccess AccessBuilder::ForJSTypedArrayBasePointer() { FieldAccess access = {kTaggedBase, JSTypedArray::kBasePointerOffset, MaybeHandle(), MaybeHandle(), Type::OtherInternal(), MachineType::AnyTagged(), - kFullWriteBarrier, LoadSensitivity::kCritical}; + kFullWriteBarrier}; return access; } @@ -424,7 +424,6 @@ FieldAccess AccessBuilder::ForJSTypedArrayExternalPointer() { : Type::ExternalPointer(), MachineType::Pointer(), kNoWriteBarrier, - LoadSensitivity::kCritical, ConstFieldInfo::None(), false, #ifdef V8_HEAP_SANDBOX @@ -445,7 +444,6 @@ FieldAccess AccessBuilder::ForJSDataViewDataPointer() { : Type::ExternalPointer(), MachineType::Pointer(), kNoWriteBarrier, - LoadSensitivity::kUnsafe, ConstFieldInfo::None(), false, #ifdef V8_HEAP_SANDBOX @@ -756,7 +754,6 @@ FieldAccess AccessBuilder::ForExternalStringResourceData() { : Type::ExternalPointer(), MachineType::Pointer(), kNoWriteBarrier, - LoadSensitivity::kUnsafe, ConstFieldInfo::None(), false, #ifdef V8_HEAP_SANDBOX @@ -902,10 +899,10 @@ FieldAccess AccessBuilder::ForWeakFixedArraySlot(int index) { } // static FieldAccess AccessBuilder::ForCellValue() { - FieldAccess access = {kTaggedBase, Cell::kValueOffset, - Handle(), MaybeHandle(), - Type::Any(), MachineType::AnyTagged(), - kFullWriteBarrier, LoadSensitivity::kCritical}; + FieldAccess access = {kTaggedBase, Cell::kValueOffset, + Handle(), MaybeHandle(), + Type::Any(), MachineType::AnyTagged(), + kFullWriteBarrier}; return access; } @@ -966,11 +963,9 @@ ElementAccess AccessBuilder::ForSloppyArgumentsElementsMappedEntry() { } // statics -ElementAccess AccessBuilder::ForFixedArrayElement( - ElementsKind kind, LoadSensitivity load_sensitivity) { - ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, - Type::Any(), MachineType::AnyTagged(), - kFullWriteBarrier, load_sensitivity}; +ElementAccess AccessBuilder::ForFixedArrayElement(ElementsKind kind) { + ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Any(), + MachineType::AnyTagged(), kFullWriteBarrier}; switch (kind) { case PACKED_SMI_ELEMENTS: access.type = Type::SignedSmall(); @@ -1038,59 +1033,50 @@ FieldAccess AccessBuilder::ForEnumCacheIndices() { } // static -ElementAccess AccessBuilder::ForTypedArrayElement( - ExternalArrayType type, bool is_external, - LoadSensitivity load_sensitivity) { +ElementAccess AccessBuilder::ForTypedArrayElement(ExternalArrayType type, + bool is_external) { BaseTaggedness taggedness = is_external ? kUntaggedBase : kTaggedBase; int header_size = is_external ? 0 : ByteArray::kHeaderSize; switch (type) { case kExternalInt8Array: { - ElementAccess access = {taggedness, header_size, - Type::Signed32(), MachineType::Int8(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Signed32(), + MachineType::Int8(), kNoWriteBarrier}; return access; } case kExternalUint8Array: case kExternalUint8ClampedArray: { - ElementAccess access = {taggedness, header_size, - Type::Unsigned32(), MachineType::Uint8(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Unsigned32(), + MachineType::Uint8(), kNoWriteBarrier}; return access; } case kExternalInt16Array: { - ElementAccess access = {taggedness, header_size, - Type::Signed32(), MachineType::Int16(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Signed32(), + MachineType::Int16(), kNoWriteBarrier}; return access; } case kExternalUint16Array: { - ElementAccess access = {taggedness, header_size, - Type::Unsigned32(), MachineType::Uint16(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Unsigned32(), + MachineType::Uint16(), kNoWriteBarrier}; return access; } case kExternalInt32Array: { - ElementAccess access = {taggedness, header_size, - Type::Signed32(), MachineType::Int32(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Signed32(), + MachineType::Int32(), kNoWriteBarrier}; return access; } case kExternalUint32Array: { - ElementAccess access = {taggedness, header_size, - Type::Unsigned32(), MachineType::Uint32(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Unsigned32(), + MachineType::Uint32(), kNoWriteBarrier}; return access; } case kExternalFloat32Array: { - ElementAccess access = {taggedness, header_size, - Type::Number(), MachineType::Float32(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Number(), + MachineType::Float32(), kNoWriteBarrier}; return access; } case kExternalFloat64Array: { - ElementAccess access = {taggedness, header_size, - Type::Number(), MachineType::Float64(), - kNoWriteBarrier, load_sensitivity}; + ElementAccess access = {taggedness, header_size, Type::Number(), + MachineType::Float64(), kNoWriteBarrier}; return access; } case kExternalBigInt64Array: diff --git a/deps/v8/src/compiler/access-builder.h b/deps/v8/src/compiler/access-builder.h index fa68628cf80007..3aa29a2d55a115 100644 --- a/deps/v8/src/compiler/access-builder.h +++ b/deps/v8/src/compiler/access-builder.h @@ -299,9 +299,7 @@ class V8_EXPORT_PRIVATE AccessBuilder final // Provides access to FixedArray elements. static ElementAccess ForFixedArrayElement(); - static ElementAccess ForFixedArrayElement( - ElementsKind kind, - LoadSensitivity load_sensitivity = LoadSensitivity::kUnsafe); + static ElementAccess ForFixedArrayElement(ElementsKind kind); // Provides access to SloppyArgumentsElements elements. static ElementAccess ForSloppyArgumentsElementsMappedEntry(); @@ -319,9 +317,8 @@ class V8_EXPORT_PRIVATE AccessBuilder final static FieldAccess ForEnumCacheIndices(); // Provides access to Fixed{type}TypedArray and External{type}Array elements. - static ElementAccess ForTypedArrayElement( - ExternalArrayType type, bool is_external, - LoadSensitivity load_sensitivity = LoadSensitivity::kUnsafe); + static ElementAccess ForTypedArrayElement(ExternalArrayType type, + bool is_external); // Provides access to HashTable fields. static FieldAccess ForHashTableBaseNumberOfElements(); diff --git a/deps/v8/src/compiler/backend/arm/code-generator-arm.cc b/deps/v8/src/compiler/backend/arm/code-generator-arm.cc index 29c7897ec9ef60..9617003880eed5 100644 --- a/deps/v8/src/compiler/backend/arm/code-generator-arm.cc +++ b/deps/v8/src/compiler/backend/arm/code-generator-arm.cc @@ -36,9 +36,7 @@ class ArmOperandConverter final : public InstructionOperandConverter { SBit OutputSBit() const { switch (instr_->flags_mode()) { case kFlags_branch: - case kFlags_branch_and_poison: case kFlags_deoptimize: - case kFlags_deoptimize_and_poison: case kFlags_set: case kFlags_trap: case kFlags_select: @@ -322,35 +320,6 @@ Condition FlagsConditionToCondition(FlagsCondition condition) { UNREACHABLE(); } -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, - InstructionCode opcode, - ArmOperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->and_(value, value, Operand(kSpeculationPoisonRegister)); - } -} - -void ComputePoisonedAddressForLoad(CodeGenerator* codegen, - InstructionCode opcode, - ArmOperandConverter const& i, - Register address) { - DCHECK_EQ(kMemoryAccessPoisoned, AccessModeField::decode(opcode)); - switch (AddressingModeField::decode(opcode)) { - case kMode_Offset_RI: - codegen->tasm()->mov(address, i.InputImmediate(1)); - codegen->tasm()->add(address, address, i.InputRegister(0)); - break; - case kMode_Offset_RR: - codegen->tasm()->add(address, i.InputRegister(0), i.InputRegister(1)); - break; - default: - UNREACHABLE(); - } - codegen->tasm()->and_(address, address, Operand(kSpeculationPoisonRegister)); -} - } // namespace #define ASSEMBLE_ATOMIC_LOAD_INTEGER(asm_instr) \ @@ -691,25 +660,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, ne); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - UseScratchRegisterScope temps(tasm()); - Register scratch = temps.Acquire(); - - // Set a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - __ ComputeCodeStartAddress(scratch); - __ cmp(kJavaScriptCallCodeStartRegister, scratch); - __ mov(kSpeculationPoisonRegister, Operand(-1), SBit::LeaveCC, eq); - __ mov(kSpeculationPoisonRegister, Operand(0), SBit::LeaveCC, ne); - __ csdb(); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ and_(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ and_(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ and_(sp, sp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -1619,12 +1569,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kArmLdrb: __ ldrb(i.OutputRegister(), i.InputOffset()); DCHECK_EQ(LeaveCC, i.OutputSBit()); - EmitWordLoadPoisoningIfNeeded(this, opcode, i); break; case kArmLdrsb: __ ldrsb(i.OutputRegister(), i.InputOffset()); DCHECK_EQ(LeaveCC, i.OutputSBit()); - EmitWordLoadPoisoningIfNeeded(this, opcode, i); break; case kArmStrb: __ strb(i.InputRegister(0), i.InputOffset(1)); @@ -1632,11 +1580,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kArmLdrh: __ ldrh(i.OutputRegister(), i.InputOffset()); - EmitWordLoadPoisoningIfNeeded(this, opcode, i); break; case kArmLdrsh: __ ldrsh(i.OutputRegister(), i.InputOffset()); - EmitWordLoadPoisoningIfNeeded(this, opcode, i); break; case kArmStrh: __ strh(i.InputRegister(0), i.InputOffset(1)); @@ -1644,22 +1590,13 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kArmLdr: __ ldr(i.OutputRegister(), i.InputOffset()); - EmitWordLoadPoisoningIfNeeded(this, opcode, i); break; case kArmStr: __ str(i.InputRegister(0), i.InputOffset(1)); DCHECK_EQ(LeaveCC, i.OutputSBit()); break; case kArmVldrF32: { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - UseScratchRegisterScope temps(tasm()); - Register address = temps.Acquire(); - ComputePoisonedAddressForLoad(this, opcode, i, address); - __ vldr(i.OutputFloatRegister(), address, 0); - } else { - __ vldr(i.OutputFloatRegister(), i.InputOffset()); - } + __ vldr(i.OutputFloatRegister(), i.InputOffset()); DCHECK_EQ(LeaveCC, i.OutputSBit()); break; } @@ -1688,15 +1625,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; } case kArmVldrF64: { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - UseScratchRegisterScope temps(tasm()); - Register address = temps.Acquire(); - ComputePoisonedAddressForLoad(this, opcode, i, address); - __ vldr(i.OutputDoubleRegister(), address, 0); - } else { - __ vldr(i.OutputDoubleRegister(), i.InputOffset()); - } + __ vldr(i.OutputDoubleRegister(), i.InputOffset()); DCHECK_EQ(LeaveCC, i.OutputSBit()); break; } @@ -1832,10 +1761,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( __ isb(SY); break; } - case kArchWordPoisonOnSpeculation: - __ and_(i.OutputRegister(0), i.InputRegister(0), - Operand(kSpeculationPoisonRegister)); - break; case kArmVmullLow: { auto dt = static_cast(MiscField::decode(instr->opcode())); __ vmull(dt, i.OutputSimd128Register(), i.InputSimd128Register(0).low(), @@ -3597,20 +3522,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { if (!branch->fallthru) __ b(flabel); // no fallthru to flabel. } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(jarin) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual) { - return; - } - - condition = NegateFlagsCondition(condition); - __ eor(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - Operand(kSpeculationPoisonRegister), SBit::LeaveCC, - FlagsConditionToCondition(condition)); - __ csdb(); -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { AssembleArchBranch(instr, branch); @@ -3805,7 +3716,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= osr_helper()->UnoptimizedFrameSlots(); - ResetSpeculationPoison(); } const RegList saves = call_descriptor->CalleeSavedRegisters(); diff --git a/deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc b/deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc index 2698d45ae7f4de..a624b1864064f1 100644 --- a/deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc +++ b/deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc @@ -630,17 +630,11 @@ void InstructionSelector::VisitLoad(Node* node) { case MachineRepresentation::kNone: UNREACHABLE(); } - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - opcode |= AccessModeField::encode(kMemoryAccessPoisoned); - } InstructionOperand output = g.DefineAsRegister(node); EmitLoad(this, opcode, &output, base, index); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); diff --git a/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc b/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc index c1213834269645..ff88c93cdcf80e 100644 --- a/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc +++ b/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc @@ -460,47 +460,6 @@ void EmitOOLTrapIfNeeded(Zone* zone, CodeGenerator* codegen, } #endif // V8_ENABLE_WEBASSEMBLY -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, - InstructionCode opcode, Instruction* instr, - Arm64OperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - Register poison = value.Is64Bits() ? kSpeculationPoisonRegister - : kSpeculationPoisonRegister.W(); - codegen->tasm()->And(value, value, Operand(poison)); - } -} - -void EmitMaybePoisonedFPLoad(CodeGenerator* codegen, InstructionCode opcode, - Arm64OperandConverter* i, VRegister output_reg) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - AddressingMode address_mode = AddressingModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned && address_mode != kMode_Root) { - UseScratchRegisterScope temps(codegen->tasm()); - Register address = temps.AcquireX(); - switch (address_mode) { - case kMode_MRI: // Fall through. - case kMode_MRR: - codegen->tasm()->Add(address, i->InputRegister(0), i->InputOperand(1)); - break; - case kMode_Operand2_R_LSL_I: - codegen->tasm()->Add(address, i->InputRegister(0), - i->InputOperand2_64(1)); - break; - default: - // Note: we don't need poisoning for kMode_Root loads as those loads - // target a fixed offset from root register which is set once when - // initializing the vm. - UNREACHABLE(); - } - codegen->tasm()->And(address, address, Operand(kSpeculationPoisonRegister)); - codegen->tasm()->Ldr(output_reg, MemOperand(address)); - } else { - codegen->tasm()->Ldr(output_reg, i->MemoryOperand()); - } -} - // Handles unary ops that work for float (scalar), double (scalar), or NEON. template void EmitFpOrNeonUnop(TurboAssembler* tasm, Fn fn, Instruction* instr, @@ -714,29 +673,6 @@ void CodeGenerator::BailoutIfDeoptimized() { __ Bind(¬_deoptimized); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - UseScratchRegisterScope temps(tasm()); - Register scratch = temps.AcquireX(); - - // Set a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - __ ComputeCodeStartAddress(scratch); - __ Cmp(kJavaScriptCallCodeStartRegister, scratch); - __ Csetm(kSpeculationPoisonRegister, eq); - __ Csdb(); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - UseScratchRegisterScope temps(tasm()); - Register scratch = temps.AcquireX(); - - __ Mov(scratch, sp); - __ And(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ And(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ And(scratch, scratch, kSpeculationPoisonRegister); - __ Mov(sp, scratch); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -1814,12 +1750,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kArm64Ldrb: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldrb(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64Ldrsb: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldrsb(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64LdrsbW: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -1832,12 +1766,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kArm64Ldrh: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldrh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64Ldrsh: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldrsh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64LdrshW: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -1850,12 +1782,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kArm64Ldrsw: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldrsw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64LdrW: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldr(i.OutputRegister32(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64StrW: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -1864,19 +1794,15 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kArm64Ldr: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); __ Ldr(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64LdrDecompressTaggedSigned: __ DecompressTaggedSigned(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64LdrDecompressTaggedPointer: __ DecompressTaggedPointer(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64LdrDecompressAnyTagged: __ DecompressAnyTagged(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kArm64Str: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -1887,7 +1813,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kArm64LdrS: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); - EmitMaybePoisonedFPLoad(this, opcode, &i, i.OutputDoubleRegister().S()); + __ Ldr(i.OutputDoubleRegister().S(), i.MemoryOperand()); break; case kArm64StrS: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -1895,7 +1821,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kArm64LdrD: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); - EmitMaybePoisonedFPLoad(this, opcode, &i, i.OutputDoubleRegister()); + __ Ldr(i.OutputDoubleRegister(), i.MemoryOperand()); break; case kArm64StrD: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -1916,10 +1842,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( __ Dsb(FullSystem, BarrierAll); __ Isb(); break; - case kArchWordPoisonOnSpeculation: - __ And(i.OutputRegister(0), i.InputRegister(0), - Operand(kSpeculationPoisonRegister)); - break; case kWord32AtomicLoadInt8: ASSEMBLE_ATOMIC_LOAD_INTEGER(Ldarb, Register32); __ Sxtb(i.OutputRegister(0), i.OutputRegister(0)); @@ -2907,7 +2829,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { ArchOpcode opcode = instr->arch_opcode(); if (opcode == kArm64CompareAndBranch32) { - DCHECK(FlagsModeField::decode(instr->opcode()) != kFlags_branch_and_poison); switch (condition) { case kEqual: __ Cbz(i.InputRegister32(0), tlabel); @@ -2919,7 +2840,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { UNREACHABLE(); } } else if (opcode == kArm64CompareAndBranch) { - DCHECK(FlagsModeField::decode(instr->opcode()) != kFlags_branch_and_poison); switch (condition) { case kEqual: __ Cbz(i.InputRegister64(0), tlabel); @@ -2931,7 +2851,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { UNREACHABLE(); } } else if (opcode == kArm64TestAndBranch32) { - DCHECK(FlagsModeField::decode(instr->opcode()) != kFlags_branch_and_poison); switch (condition) { case kEqual: __ Tbz(i.InputRegister32(0), i.InputInt5(1), tlabel); @@ -2943,7 +2862,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { UNREACHABLE(); } } else if (opcode == kArm64TestAndBranch) { - DCHECK(FlagsModeField::decode(instr->opcode()) != kFlags_branch_and_poison); switch (condition) { case kEqual: __ Tbz(i.InputRegister64(0), i.InputInt6(1), tlabel); @@ -2961,19 +2879,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { if (!branch->fallthru) __ B(flabel); // no fallthru to flabel. } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(jarin) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual) { - return; - } - - condition = NegateFlagsCondition(condition); - __ CmovX(kSpeculationPoisonRegister, xzr, - FlagsConditionToCondition(condition)); - __ Csdb(); -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { AssembleArchBranch(instr, branch); @@ -3143,7 +3048,6 @@ void CodeGenerator::AssembleConstructFrame() { // arguments count was pushed. required_slots -= unoptimized_frame_slots - TurboAssembler::kExtraSlotClaimedByPrologue; - ResetSpeculationPoison(); } #if V8_ENABLE_WEBASSEMBLY diff --git a/deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc b/deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc index 6a1a101e35baaa..c8bada6ab20d2e 100644 --- a/deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc +++ b/deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc @@ -845,10 +845,6 @@ void InstructionSelector::VisitLoad(Node* node) { case MachineRepresentation::kNone: UNREACHABLE(); } - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - opcode |= AccessModeField::encode(kMemoryAccessPoisoned); - } if (node->opcode() == IrOpcode::kProtectedLoad) { opcode |= AccessModeField::encode(kMemoryAccessProtected); } @@ -856,8 +852,6 @@ void InstructionSelector::VisitLoad(Node* node) { EmitLoad(this, node, opcode, immediate_mode, rep); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { VisitLoad(node); } void InstructionSelector::VisitStore(Node* node) { @@ -2324,9 +2318,6 @@ template bool TryEmitCbzOrTbz(InstructionSelector* selector, Node* node, typename CbzOrTbzMatchTrait::IntegralType value, Node* user, FlagsCondition cond, FlagsContinuation* cont) { - // Branch poisoning requires flags to be set, so when it's enabled for - // a particular branch, we shouldn't be applying the cbz/tbz optimization. - DCHECK(!cont->IsPoisoned()); // Only handle branches and deoptimisations. if (!cont->IsBranch() && !cont->IsDeoptimize()) return false; @@ -2414,7 +2405,7 @@ void VisitWordCompare(InstructionSelector* selector, Node* node, std::swap(left, right); } - if (opcode == kArm64Cmp && !cont->IsPoisoned()) { + if (opcode == kArm64Cmp) { Int64Matcher m(right); if (m.HasResolvedValue()) { if (TryEmitCbzOrTbz<64>(selector, left, m.ResolvedValue(), node, @@ -2432,19 +2423,17 @@ void VisitWord32Compare(InstructionSelector* selector, Node* node, FlagsContinuation* cont) { Int32BinopMatcher m(node); FlagsCondition cond = cont->condition(); - if (!cont->IsPoisoned()) { - if (m.right().HasResolvedValue()) { - if (TryEmitCbzOrTbz<32>(selector, m.left().node(), - m.right().ResolvedValue(), node, cond, cont)) { - return; - } - } else if (m.left().HasResolvedValue()) { - FlagsCondition commuted_cond = CommuteFlagsCondition(cond); - if (TryEmitCbzOrTbz<32>(selector, m.right().node(), - m.left().ResolvedValue(), node, commuted_cond, - cont)) { - return; - } + if (m.right().HasResolvedValue()) { + if (TryEmitCbzOrTbz<32>(selector, m.left().node(), + m.right().ResolvedValue(), node, cond, cont)) { + return; + } + } else if (m.left().HasResolvedValue()) { + FlagsCondition commuted_cond = CommuteFlagsCondition(cond); + if (TryEmitCbzOrTbz<32>(selector, m.right().node(), + m.left().ResolvedValue(), node, commuted_cond, + cont)) { + return; } } ArchOpcode opcode = kArm64Cmp32; @@ -2533,8 +2522,7 @@ struct TestAndBranchMatcher { Matcher matcher_; void Initialize() { - if (cont_->IsBranch() && !cont_->IsPoisoned() && - matcher_.right().HasResolvedValue() && + if (cont_->IsBranch() && matcher_.right().HasResolvedValue() && base::bits::IsPowerOfTwo(matcher_.right().ResolvedValue())) { // If the mask has only one bit set, we can use tbz/tbnz. DCHECK((cont_->condition() == kEqual) || @@ -2842,7 +2830,7 @@ void InstructionSelector::VisitWordCompareZero(Node* user, Node* value, } // Branch could not be combined with a compare, compare against 0 and branch. - if (!cont->IsPoisoned() && cont->IsBranch()) { + if (cont->IsBranch()) { Emit(cont->Encode(kArm64CompareAndBranch32), g.NoOutput(), g.UseRegister(value), g.Label(cont->true_block()), g.Label(cont->false_block())); diff --git a/deps/v8/src/compiler/backend/code-generator.cc b/deps/v8/src/compiler/backend/code-generator.cc index 9e378b84584cdd..ed25a1f1ff72ed 100644 --- a/deps/v8/src/compiler/backend/code-generator.cc +++ b/deps/v8/src/compiler/backend/code-generator.cc @@ -41,14 +41,16 @@ class CodeGenerator::JumpTable final : public ZoneObject { size_t const target_count_; }; -CodeGenerator::CodeGenerator( - Zone* codegen_zone, Frame* frame, Linkage* linkage, - InstructionSequence* instructions, OptimizedCompilationInfo* info, - Isolate* isolate, base::Optional osr_helper, - int start_source_position, JumpOptimizationInfo* jump_opt, - PoisoningMitigationLevel poisoning_level, const AssemblerOptions& options, - Builtin builtin, size_t max_unoptimized_frame_height, - size_t max_pushed_argument_count, const char* debug_name) +CodeGenerator::CodeGenerator(Zone* codegen_zone, Frame* frame, Linkage* linkage, + InstructionSequence* instructions, + OptimizedCompilationInfo* info, Isolate* isolate, + base::Optional osr_helper, + int start_source_position, + JumpOptimizationInfo* jump_opt, + const AssemblerOptions& options, Builtin builtin, + size_t max_unoptimized_frame_height, + size_t max_pushed_argument_count, + const char* debug_name) : zone_(codegen_zone), isolate_(isolate), frame_access_state_(nullptr), @@ -80,7 +82,6 @@ CodeGenerator::CodeGenerator( codegen_zone, SourcePositionTableBuilder::RECORD_SOURCE_POSITIONS), protected_instructions_(codegen_zone), result_(kSuccess), - poisoning_level_(poisoning_level), block_starts_(codegen_zone), instr_starts_(codegen_zone), debug_name_(debug_name) { @@ -284,9 +285,6 @@ void CodeGenerator::AssembleCode() { BailoutIfDeoptimized(); } - offsets_info_.init_poison = tasm()->pc_offset(); - InitializeSpeculationPoison(); - // Define deoptimization literals for all inlined functions. DCHECK_EQ(0u, deoptimization_literals_.size()); for (OptimizedCompilationInfo::InlinedFunctionHolder& inlined : @@ -355,8 +353,6 @@ void CodeGenerator::AssembleCode() { tasm()->bind(GetLabel(current_block_)); - TryInsertBranchPoisoning(block); - if (block->must_construct_frame()) { AssembleConstructFrame(); // We need to setup the root register after we assemble the prologue, to @@ -494,37 +490,6 @@ void CodeGenerator::AssembleCode() { result_ = kSuccess; } -void CodeGenerator::TryInsertBranchPoisoning(const InstructionBlock* block) { - // See if our predecessor was a basic block terminated by a branch_and_poison - // instruction. If yes, then perform the masking based on the flags. - if (block->PredecessorCount() != 1) return; - RpoNumber pred_rpo = (block->predecessors())[0]; - const InstructionBlock* pred = instructions()->InstructionBlockAt(pred_rpo); - if (pred->code_start() == pred->code_end()) return; - Instruction* instr = instructions()->InstructionAt(pred->code_end() - 1); - FlagsMode mode = FlagsModeField::decode(instr->opcode()); - switch (mode) { - case kFlags_branch_and_poison: { - BranchInfo branch; - RpoNumber target = ComputeBranchInfo(&branch, instr); - if (!target.IsValid()) { - // Non-trivial branch, add the masking code. - FlagsCondition condition = branch.condition; - if (branch.false_label == GetLabel(block->rpo_number())) { - condition = NegateFlagsCondition(condition); - } - AssembleBranchPoisoning(condition, instr); - } - break; - } - case kFlags_deoptimize_and_poison: { - UNREACHABLE(); - } - default: - break; - } -} - void CodeGenerator::AssembleArchBinarySearchSwitchRange( Register input, RpoNumber def_block, std::pair* begin, std::pair* end) { @@ -839,8 +804,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleInstruction( FlagsCondition condition = FlagsConditionField::decode(instr->opcode()); switch (mode) { - case kFlags_branch: - case kFlags_branch_and_poison: { + case kFlags_branch: { BranchInfo branch; RpoNumber target = ComputeBranchInfo(&branch, instr); if (target.IsValid()) { @@ -854,8 +818,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleInstruction( AssembleArchBranch(instr, &branch); break; } - case kFlags_deoptimize: - case kFlags_deoptimize_and_poison: { + case kFlags_deoptimize: { // Assemble a conditional eager deoptimization after this instruction. InstructionOperandConverter i(this, instr); size_t frame_state_offset = @@ -864,17 +827,12 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleInstruction( DeoptImmedArgsCountField::decode(instr->opcode()); DeoptimizationExit* const exit = AddDeoptimizationExit( instr, frame_state_offset, immediate_args_count); - Label continue_label; BranchInfo branch; branch.condition = condition; branch.true_label = exit->label(); - branch.false_label = &continue_label; + branch.false_label = exit->continue_label(); branch.fallthru = true; AssembleArchDeoptBranch(instr, &branch); - tasm()->bind(&continue_label); - if (mode == kFlags_deoptimize_and_poison) { - AssembleBranchPoisoning(NegateFlagsCondition(branch.condition), instr); - } tasm()->bind(exit->continue_label()); break; } @@ -900,11 +858,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleInstruction( } } - // TODO(jarin) We should thread the flag through rather than set it. - if (instr->IsCall()) { - ResetSpeculationPoison(); - } - return kSuccess; } @@ -1087,9 +1040,9 @@ void CodeGenerator::RecordCallPosition(Instruction* instr) { if (needs_frame_state) { MarkLazyDeoptSite(); - // If the frame state is present, it starts at argument 2 - after - // the code address and the poison-alias index. - size_t frame_state_offset = 2; + // If the frame state is present, it starts at argument 1 - after + // the code address. + size_t frame_state_offset = 1; FrameStateDescriptor* descriptor = GetDeoptimizationEntry(instr, frame_state_offset).descriptor(); int pc_offset = tasm()->pc_offset_for_safepoint(); @@ -1428,29 +1381,6 @@ DeoptimizationExit* CodeGenerator::AddDeoptimizationExit( OutputFrameStateCombine::Ignore()); } -void CodeGenerator::InitializeSpeculationPoison() { - if (poisoning_level_ == PoisoningMitigationLevel::kDontPoison) return; - - // Initialize {kSpeculationPoisonRegister} either by comparing the expected - // with the actual call target, or by unconditionally using {-1} initially. - // Masking register arguments with it only makes sense in the first case. - if (info()->called_with_code_start_register()) { - tasm()->RecordComment("-- Prologue: generate speculation poison --"); - GenerateSpeculationPoisonFromCodeStartRegister(); - if (info()->poison_register_arguments()) { - AssembleRegisterArgumentPoisoning(); - } - } else { - ResetSpeculationPoison(); - } -} - -void CodeGenerator::ResetSpeculationPoison() { - if (poisoning_level_ != PoisoningMitigationLevel::kDontPoison) { - tasm()->ResetSpeculationPoisonRegister(); - } -} - OutOfLineCode::OutOfLineCode(CodeGenerator* gen) : frame_(gen->frame()), tasm_(gen->tasm()), next_(gen->ools_) { gen->ools_ = this; diff --git a/deps/v8/src/compiler/backend/code-generator.h b/deps/v8/src/compiler/backend/code-generator.h index 7ccb09d5ac3ed2..18de20f92c8e4b 100644 --- a/deps/v8/src/compiler/backend/code-generator.h +++ b/deps/v8/src/compiler/backend/code-generator.h @@ -103,7 +103,6 @@ class DeoptimizationLiteral { struct TurbolizerCodeOffsetsInfo { int code_start_register_check = -1; int deopt_check = -1; - int init_poison = -1; int blocks_start = -1; int out_of_line_code = -1; int deoptimization_exits = -1; @@ -120,14 +119,16 @@ struct TurbolizerInstructionStartInfo { // Generates native code for a sequence of instructions. class V8_EXPORT_PRIVATE CodeGenerator final : public GapResolver::Assembler { public: - explicit CodeGenerator( - Zone* codegen_zone, Frame* frame, Linkage* linkage, - InstructionSequence* instructions, OptimizedCompilationInfo* info, - Isolate* isolate, base::Optional osr_helper, - int start_source_position, JumpOptimizationInfo* jump_opt, - PoisoningMitigationLevel poisoning_level, const AssemblerOptions& options, - Builtin builtin, size_t max_unoptimized_frame_height, - size_t max_pushed_argument_count, const char* debug_name = nullptr); + explicit CodeGenerator(Zone* codegen_zone, Frame* frame, Linkage* linkage, + InstructionSequence* instructions, + OptimizedCompilationInfo* info, Isolate* isolate, + base::Optional osr_helper, + int start_source_position, + JumpOptimizationInfo* jump_opt, + const AssemblerOptions& options, Builtin builtin, + size_t max_unoptimized_frame_height, + size_t max_pushed_argument_count, + const char* debug_name = nullptr); // Generate native code. After calling AssembleCode, call FinalizeCode to // produce the actual code object. If an error occurs during either phase, @@ -216,17 +217,6 @@ class V8_EXPORT_PRIVATE CodeGenerator final : public GapResolver::Assembler { // Assemble instructions for the specified block. CodeGenResult AssembleBlock(const InstructionBlock* block); - // Inserts mask update at the beginning of an instruction block if the - // predecessor blocks ends with a masking branch. - void TryInsertBranchPoisoning(const InstructionBlock* block); - - // Initializes the masking register in the prologue of a function. - void InitializeSpeculationPoison(); - // Reset the masking register during execution of a function. - void ResetSpeculationPoison(); - // Generates a mask from the pc passed in {kJavaScriptCallCodeStartRegister}. - void GenerateSpeculationPoisonFromCodeStartRegister(); - // Assemble code for the specified instruction. CodeGenResult AssembleInstruction(int instruction_index, const InstructionBlock* block); @@ -276,18 +266,12 @@ class V8_EXPORT_PRIVATE CodeGenerator final : public GapResolver::Assembler { // contains the expected pointer to the start of the instruction stream. void AssembleCodeStartRegisterCheck(); - void AssembleBranchPoisoning(FlagsCondition condition, Instruction* instr); - // When entering a code that is marked for deoptimization, rather continuing // with its execution, we jump to a lazy compiled code. We need to do this // because this code has already been deoptimized and needs to be unlinked // from the JS functions referring it. void BailoutIfDeoptimized(); - // Generates code to poison the stack pointer and implicit register arguments - // like the context register and the function register. - void AssembleRegisterArgumentPoisoning(); - // Generates an architecture-specific, descriptor-specific prologue // to set up a stack frame. void AssembleConstructFrame(); @@ -484,7 +468,6 @@ class V8_EXPORT_PRIVATE CodeGenerator final : public GapResolver::Assembler { SourcePositionTableBuilder source_position_table_builder_; ZoneVector protected_instructions_; CodeGenResult result_; - PoisoningMitigationLevel poisoning_level_; ZoneVector block_starts_; TurbolizerCodeOffsetsInfo offsets_info_; ZoneVector instr_starts_; diff --git a/deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc b/deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc index 5db3f20fa4f4e3..c8180d3e5bfb44 100644 --- a/deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc +++ b/deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc @@ -684,16 +684,6 @@ void CodeGenerator::BailoutIfDeoptimized() { __ bind(&skip); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - // TODO(860429): Remove remaining poisoning infrastructure on ia32. - UNREACHABLE(); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - // TODO(860429): Remove remaining poisoning infrastructure on ia32. - UNREACHABLE(); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -712,11 +702,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), reg == kJavaScriptCallCodeStartRegister); __ LoadCodeObjectEntry(reg, reg); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineCall(reg); - } else { - __ call(reg); - } + __ call(reg); } RecordCallPosition(instr); frame_access_state()->ClearSPDelta(); @@ -738,19 +724,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( if (DetermineStubCallMode() == StubCallMode::kCallWasmRuntimeStub) { __ wasm_call(wasm_code, constant.rmode()); } else { - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineCall(wasm_code, constant.rmode()); - } else { - __ call(wasm_code, constant.rmode()); - } + __ call(wasm_code, constant.rmode()); } } else { - Register reg = i.InputRegister(0); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineCall(reg); - } else { - __ call(reg); - } + __ call(i.InputRegister(0)); } RecordCallPosition(instr); frame_access_state()->ClearSPDelta(); @@ -762,12 +739,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Address wasm_code = static_cast
                  (constant.ToInt32()); __ jmp(wasm_code, constant.rmode()); } else { - Register reg = i.InputRegister(0); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineJump(reg); - } else { - __ jmp(reg); - } + __ jmp(i.InputRegister(0)); } frame_access_state()->ClearSPDelta(); frame_access_state()->SetFrameAccessToDefault(); @@ -784,11 +756,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), reg == kJavaScriptCallCodeStartRegister); __ LoadCodeObjectEntry(reg, reg); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineJump(reg); - } else { - __ jmp(reg); - } + __ jmp(reg); } frame_access_state()->ClearSPDelta(); frame_access_state()->SetFrameAccessToDefault(); @@ -800,11 +768,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( DCHECK_IMPLIES( instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), reg == kJavaScriptCallCodeStartRegister); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineJump(reg); - } else { - __ jmp(reg); - } + __ jmp(reg); frame_access_state()->ClearSPDelta(); frame_access_state()->SetFrameAccessToDefault(); break; @@ -1278,9 +1242,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kIA32Bswap: __ bswap(i.OutputRegister()); break; - case kArchWordPoisonOnSpeculation: - // TODO(860429): Remove remaining poisoning infrastructure on ia32. - UNREACHABLE(); case kIA32MFence: __ mfence(); break; @@ -4183,12 +4144,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { if (!branch->fallthru) __ jmp(flabel); } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(860429): Remove remaining poisoning infrastructure on ia32. - UNREACHABLE(); -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { AssembleArchBranch(instr, branch); diff --git a/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc b/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc index f36fdb293564ed..5d45fcd46b4b84 100644 --- a/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc +++ b/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc @@ -99,11 +99,14 @@ class IA32OperandGenerator final : public OperandGenerator { bool CanBeImmediate(Node* node) { switch (node->opcode()) { case IrOpcode::kInt32Constant: - case IrOpcode::kNumberConstant: case IrOpcode::kExternalConstant: case IrOpcode::kRelocatableInt32Constant: case IrOpcode::kRelocatableInt64Constant: return true; + case IrOpcode::kNumberConstant: { + const double value = OpParameter(node->op()); + return bit_cast(value) == 0; + } case IrOpcode::kHeapConstant: { // TODO(bmeurer): We must not dereference handles concurrently. If we // really have to this here, then we need to find a way to put this @@ -564,15 +567,9 @@ void InstructionSelector::VisitLoad(Node* node) { AddressingMode mode = g.GetEffectiveAddressMemoryOperand(node, inputs, &input_count); InstructionCode code = opcode | AddressingModeField::encode(mode); - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - code |= AccessModeField::encode(kMemoryAccessPoisoned); - } Emit(code, 1, outputs, input_count, inputs); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); diff --git a/deps/v8/src/compiler/backend/instruction-codes.h b/deps/v8/src/compiler/backend/instruction-codes.h index 31d669813e2862..448c9e7148a4ad 100644 --- a/deps/v8/src/compiler/backend/instruction-codes.h +++ b/deps/v8/src/compiler/backend/instruction-codes.h @@ -100,7 +100,6 @@ inline RecordWriteMode WriteBarrierKindToRecordWriteMode( V(ArchTruncateDoubleToI) \ V(ArchStoreWithWriteBarrier) \ V(ArchStackSlot) \ - V(ArchWordPoisonOnSpeculation) \ V(ArchStackPointerGreaterThan) \ V(ArchStackCheckOffset) \ V(Word32AtomicLoadInt8) \ @@ -208,12 +207,10 @@ V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, enum FlagsMode { kFlags_none = 0, kFlags_branch = 1, - kFlags_branch_and_poison = 2, - kFlags_deoptimize = 3, - kFlags_deoptimize_and_poison = 4, - kFlags_set = 5, - kFlags_trap = 6, - kFlags_select = 7, + kFlags_deoptimize = 2, + kFlags_set = 3, + kFlags_trap = 4, + kFlags_select = 5, }; V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, @@ -262,7 +259,6 @@ V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, enum MemoryAccessMode { kMemoryAccessDirect = 0, kMemoryAccessProtected = 1, - kMemoryAccessPoisoned = 2 }; // The InstructionCode is an opaque, target-specific integer that encodes diff --git a/deps/v8/src/compiler/backend/instruction-scheduler.cc b/deps/v8/src/compiler/backend/instruction-scheduler.cc index c46d263bae26c8..291b4def9279b0 100644 --- a/deps/v8/src/compiler/backend/instruction-scheduler.cc +++ b/deps/v8/src/compiler/backend/instruction-scheduler.cc @@ -132,7 +132,6 @@ void InstructionScheduler::AddInstruction(Instruction* instr) { // We should not have branches in the middle of a block. DCHECK_NE(instr->flags_mode(), kFlags_branch); - DCHECK_NE(instr->flags_mode(), kFlags_branch_and_poison); if (IsFixedRegisterParameter(instr)) { if (last_live_in_reg_marker_ != nullptr) { @@ -298,11 +297,6 @@ int InstructionScheduler::GetInstructionFlags(const Instruction* instr) const { // effects. return kIsLoadOperation; - case kArchWordPoisonOnSpeculation: - // While poisoning operations have no side effect, they must not be - // reordered relative to branches. - return kHasSideEffect; - case kArchPrepareCallCFunction: case kArchPrepareTailCall: case kArchTailCallCodeObject: diff --git a/deps/v8/src/compiler/backend/instruction-selector.cc b/deps/v8/src/compiler/backend/instruction-selector.cc index f279ea15900976..7bcb5f806948a4 100644 --- a/deps/v8/src/compiler/backend/instruction-selector.cc +++ b/deps/v8/src/compiler/backend/instruction-selector.cc @@ -39,7 +39,7 @@ InstructionSelector::InstructionSelector( size_t* max_pushed_argument_count, SourcePositionMode source_position_mode, Features features, EnableScheduling enable_scheduling, EnableRootsRelativeAddressing enable_roots_relative_addressing, - PoisoningMitigationLevel poisoning_level, EnableTraceTurboJson trace_turbo) + EnableTraceTurboJson trace_turbo) : zone_(zone), linkage_(linkage), sequence_(sequence), @@ -63,7 +63,6 @@ InstructionSelector::InstructionSelector( enable_roots_relative_addressing_(enable_roots_relative_addressing), enable_switch_jump_table_(enable_switch_jump_table), state_values_cache_(zone), - poisoning_level_(poisoning_level), frame_(frame), instruction_selection_failed_(false), instr_origins_(sequence->zone()), @@ -1076,17 +1075,10 @@ void InstructionSelector::InitializeCallBuffer(Node* call, CallBuffer* buffer, } DCHECK_EQ(1u, buffer->instruction_args.size()); - // Argument 1 is used for poison-alias index (encoded in a word-sized - // immediate. This an index of the operand that aliases with poison register - // or -1 if there is no aliasing. - buffer->instruction_args.push_back(g.TempImmediate(-1)); - const size_t poison_alias_index = 1; - DCHECK_EQ(buffer->instruction_args.size() - 1, poison_alias_index); - // If the call needs a frame state, we insert the state information as // follows (n is the number of value inputs to the frame state): - // arg 2 : deoptimization id. - // arg 3 - arg (n + 2) : value inputs to the frame state. + // arg 1 : deoptimization id. + // arg 2 - arg (n + 2) : value inputs to the frame state. size_t frame_state_entries = 0; USE(frame_state_entries); // frame_state_entries is only used for debug. if (buffer->frame_state_descriptor != nullptr) { @@ -1123,7 +1115,7 @@ void InstructionSelector::InitializeCallBuffer(Node* call, CallBuffer* buffer, &buffer->instruction_args, FrameStateInputKind::kStackSlot, instruction_zone()); - DCHECK_EQ(2 + frame_state_entries, buffer->instruction_args.size()); + DCHECK_EQ(1 + frame_state_entries, buffer->instruction_args.size()); } size_t input_count = static_cast(buffer->input_count()); @@ -1159,23 +1151,11 @@ void InstructionSelector::InitializeCallBuffer(Node* call, CallBuffer* buffer, buffer->pushed_nodes[stack_index] = param; pushed_count++; } else { - // If we do load poisoning and the linkage uses the poisoning register, - // then we request the input in memory location, and during code - // generation, we move the input to the register. - if (poisoning_level_ != PoisoningMitigationLevel::kDontPoison && - unallocated.HasFixedRegisterPolicy()) { - int reg = unallocated.fixed_register_index(); - if (Register::from_code(reg) == kSpeculationPoisonRegister) { - buffer->instruction_args[poison_alias_index] = g.TempImmediate( - static_cast(buffer->instruction_args.size())); - op = g.UseRegisterOrSlotOrConstant(*iter); - } - } buffer->instruction_args.push_back(op); } } DCHECK_EQ(input_count, buffer->instruction_args.size() + pushed_count - - frame_state_entries - 1); + frame_state_entries); if (V8_TARGET_ARCH_STORES_RETURN_ADDRESS_ON_STACK && is_tail_call && stack_param_delta != 0) { // For tail calls that change the size of their parameter list and keep @@ -1509,11 +1489,6 @@ void InstructionSelector::VisitNode(Node* node) { MarkAsRepresentation(MachineRepresentation::kSimd128, node); return VisitLoadLane(node); } - case IrOpcode::kPoisonedLoad: { - LoadRepresentation type = LoadRepresentationOf(node->op()); - MarkAsRepresentation(type.representation(), node); - return VisitPoisonedLoad(node); - } case IrOpcode::kStore: return VisitStore(node); case IrOpcode::kProtectedStore: @@ -1850,12 +1825,6 @@ void InstructionSelector::VisitNode(Node* node) { return MarkAsFloat64(node), VisitFloat64InsertLowWord32(node); case IrOpcode::kFloat64InsertHighWord32: return MarkAsFloat64(node), VisitFloat64InsertHighWord32(node); - case IrOpcode::kTaggedPoisonOnSpeculation: - return MarkAsTagged(node), VisitTaggedPoisonOnSpeculation(node); - case IrOpcode::kWord32PoisonOnSpeculation: - return MarkAsWord32(node), VisitWord32PoisonOnSpeculation(node); - case IrOpcode::kWord64PoisonOnSpeculation: - return MarkAsWord64(node), VisitWord64PoisonOnSpeculation(node); case IrOpcode::kStackSlot: return VisitStackSlot(node); case IrOpcode::kStackPointerGreaterThan: @@ -2389,30 +2358,6 @@ void InstructionSelector::VisitNode(Node* node) { } } -void InstructionSelector::EmitWordPoisonOnSpeculation(Node* node) { - if (poisoning_level_ != PoisoningMitigationLevel::kDontPoison) { - OperandGenerator g(this); - Node* input_node = NodeProperties::GetValueInput(node, 0); - InstructionOperand input = g.UseRegister(input_node); - InstructionOperand output = g.DefineSameAsFirst(node); - Emit(kArchWordPoisonOnSpeculation, output, input); - } else { - EmitIdentity(node); - } -} - -void InstructionSelector::VisitWord32PoisonOnSpeculation(Node* node) { - EmitWordPoisonOnSpeculation(node); -} - -void InstructionSelector::VisitWord64PoisonOnSpeculation(Node* node) { - EmitWordPoisonOnSpeculation(node); -} - -void InstructionSelector::VisitTaggedPoisonOnSpeculation(Node* node) { - EmitWordPoisonOnSpeculation(node); -} - void InstructionSelector::VisitStackPointerGreaterThan(Node* node) { FlagsContinuation cont = FlagsContinuation::ForSet(kStackPointerGreaterThanCondition, node); @@ -3104,45 +3049,24 @@ void InstructionSelector::VisitReturn(Node* ret) { void InstructionSelector::VisitBranch(Node* branch, BasicBlock* tbranch, BasicBlock* fbranch) { - if (NeedsPoisoning(IsSafetyCheckOf(branch->op()))) { - FlagsContinuation cont = - FlagsContinuation::ForBranchAndPoison(kNotEqual, tbranch, fbranch); - VisitWordCompareZero(branch, branch->InputAt(0), &cont); - } else { - FlagsContinuation cont = - FlagsContinuation::ForBranch(kNotEqual, tbranch, fbranch); - VisitWordCompareZero(branch, branch->InputAt(0), &cont); - } + FlagsContinuation cont = + FlagsContinuation::ForBranch(kNotEqual, tbranch, fbranch); + VisitWordCompareZero(branch, branch->InputAt(0), &cont); } void InstructionSelector::VisitDeoptimizeIf(Node* node) { DeoptimizeParameters p = DeoptimizeParametersOf(node->op()); - if (NeedsPoisoning(p.is_safety_check())) { - FlagsContinuation cont = FlagsContinuation::ForDeoptimizeAndPoison( - kNotEqual, p.kind(), p.reason(), node->id(), p.feedback(), - node->InputAt(1)); - VisitWordCompareZero(node, node->InputAt(0), &cont); - } else { - FlagsContinuation cont = FlagsContinuation::ForDeoptimize( - kNotEqual, p.kind(), p.reason(), node->id(), p.feedback(), - node->InputAt(1)); - VisitWordCompareZero(node, node->InputAt(0), &cont); - } + FlagsContinuation cont = FlagsContinuation::ForDeoptimize( + kNotEqual, p.kind(), p.reason(), node->id(), p.feedback(), + node->InputAt(1)); + VisitWordCompareZero(node, node->InputAt(0), &cont); } void InstructionSelector::VisitDeoptimizeUnless(Node* node) { DeoptimizeParameters p = DeoptimizeParametersOf(node->op()); - if (NeedsPoisoning(p.is_safety_check())) { - FlagsContinuation cont = FlagsContinuation::ForDeoptimizeAndPoison( - kEqual, p.kind(), p.reason(), node->id(), p.feedback(), - node->InputAt(1)); - VisitWordCompareZero(node, node->InputAt(0), &cont); - } else { - FlagsContinuation cont = FlagsContinuation::ForDeoptimize( - kEqual, p.kind(), p.reason(), node->id(), p.feedback(), - node->InputAt(1)); - VisitWordCompareZero(node, node->InputAt(0), &cont); - } + FlagsContinuation cont = FlagsContinuation::ForDeoptimize( + kEqual, p.kind(), p.reason(), node->id(), p.feedback(), node->InputAt(1)); + VisitWordCompareZero(node, node->InputAt(0), &cont); } void InstructionSelector::VisitSelect(Node* node) { @@ -3186,17 +3110,10 @@ void InstructionSelector::VisitDynamicCheckMapsWithDeoptUnless(Node* node) { g.UseImmediate(n.slot()), g.UseImmediate(n.handler())}); } - if (NeedsPoisoning(IsSafetyCheck::kCriticalSafetyCheck)) { - FlagsContinuation cont = FlagsContinuation::ForDeoptimizeAndPoison( - kEqual, p.kind(), p.reason(), node->id(), p.feedback(), n.frame_state(), - dynamic_check_args.data(), static_cast(dynamic_check_args.size())); - VisitWordCompareZero(node, n.condition(), &cont); - } else { - FlagsContinuation cont = FlagsContinuation::ForDeoptimize( - kEqual, p.kind(), p.reason(), node->id(), p.feedback(), n.frame_state(), - dynamic_check_args.data(), static_cast(dynamic_check_args.size())); - VisitWordCompareZero(node, n.condition(), &cont); - } + FlagsContinuation cont = FlagsContinuation::ForDeoptimize( + kEqual, p.kind(), p.reason(), node->id(), p.feedback(), n.frame_state(), + dynamic_check_args.data(), static_cast(dynamic_check_args.size())); + VisitWordCompareZero(node, n.condition(), &cont); } void InstructionSelector::VisitTrapIf(Node* node, TrapId trap_id) { @@ -3409,18 +3326,6 @@ void InstructionSelector::SwapShuffleInputs(Node* node) { } #endif // V8_ENABLE_WEBASSEMBLY -// static -bool InstructionSelector::NeedsPoisoning(IsSafetyCheck safety_check) const { - switch (poisoning_level_) { - case PoisoningMitigationLevel::kDontPoison: - return false; - case PoisoningMitigationLevel::kPoisonAll: - return safety_check != IsSafetyCheck::kNoSafetyCheck; - case PoisoningMitigationLevel::kPoisonCriticalOnly: - return safety_check == IsSafetyCheck::kCriticalSafetyCheck; - } - UNREACHABLE(); -} } // namespace compiler } // namespace internal } // namespace v8 diff --git a/deps/v8/src/compiler/backend/instruction-selector.h b/deps/v8/src/compiler/backend/instruction-selector.h index 11a329d1d6e410..b33de8e8569ebc 100644 --- a/deps/v8/src/compiler/backend/instruction-selector.h +++ b/deps/v8/src/compiler/backend/instruction-selector.h @@ -54,13 +54,6 @@ class FlagsContinuation final { return FlagsContinuation(kFlags_branch, condition, true_block, false_block); } - static FlagsContinuation ForBranchAndPoison(FlagsCondition condition, - BasicBlock* true_block, - BasicBlock* false_block) { - return FlagsContinuation(kFlags_branch_and_poison, condition, true_block, - false_block); - } - // Creates a new flags continuation for an eager deoptimization exit. static FlagsContinuation ForDeoptimize( FlagsCondition condition, DeoptimizeKind kind, DeoptimizeReason reason, @@ -71,16 +64,6 @@ class FlagsContinuation final { extra_args_count); } - // Creates a new flags continuation for an eager deoptimization exit. - static FlagsContinuation ForDeoptimizeAndPoison( - FlagsCondition condition, DeoptimizeKind kind, DeoptimizeReason reason, - NodeId node_id, FeedbackSource const& feedback, Node* frame_state, - InstructionOperand* extra_args = nullptr, int extra_args_count = 0) { - return FlagsContinuation(kFlags_deoptimize_and_poison, condition, kind, - reason, node_id, feedback, frame_state, extra_args, - extra_args_count); - } - // Creates a new flags continuation for a boolean value. static FlagsContinuation ForSet(FlagsCondition condition, Node* result) { return FlagsContinuation(condition, result); @@ -98,16 +81,8 @@ class FlagsContinuation final { } bool IsNone() const { return mode_ == kFlags_none; } - bool IsBranch() const { - return mode_ == kFlags_branch || mode_ == kFlags_branch_and_poison; - } - bool IsDeoptimize() const { - return mode_ == kFlags_deoptimize || mode_ == kFlags_deoptimize_and_poison; - } - bool IsPoisoned() const { - return mode_ == kFlags_branch_and_poison || - mode_ == kFlags_deoptimize_and_poison; - } + bool IsBranch() const { return mode_ == kFlags_branch; } + bool IsDeoptimize() const { return mode_ == kFlags_deoptimize; } bool IsSet() const { return mode_ == kFlags_set; } bool IsTrap() const { return mode_ == kFlags_trap; } bool IsSelect() const { return mode_ == kFlags_select; } @@ -226,7 +201,7 @@ class FlagsContinuation final { condition_(condition), true_block_(true_block), false_block_(false_block) { - DCHECK(mode == kFlags_branch || mode == kFlags_branch_and_poison); + DCHECK(mode == kFlags_branch); DCHECK_NOT_NULL(true_block); DCHECK_NOT_NULL(false_block); } @@ -245,7 +220,7 @@ class FlagsContinuation final { frame_state_or_result_(frame_state), extra_args_(extra_args), extra_args_count_(extra_args_count) { - DCHECK(mode == kFlags_deoptimize || mode == kFlags_deoptimize_and_poison); + DCHECK(mode == kFlags_deoptimize); DCHECK_NOT_NULL(frame_state); } @@ -338,8 +313,6 @@ class V8_EXPORT_PRIVATE InstructionSelector final { : kDisableScheduling, EnableRootsRelativeAddressing enable_roots_relative_addressing = kDisableRootsRelativeAddressing, - PoisoningMitigationLevel poisoning_level = - PoisoningMitigationLevel::kDontPoison, EnableTraceTurboJson trace_turbo = kDisableTraceTurboJson); // Visit code for the entire graph with the included schedule. @@ -443,8 +416,6 @@ class V8_EXPORT_PRIVATE InstructionSelector final { static MachineOperatorBuilder::AlignmentRequirements AlignmentRequirements(); - bool NeedsPoisoning(IsSafetyCheck safety_check) const; - // =========================================================================== // ============ Architecture-independent graph covering methods. ============= // =========================================================================== @@ -681,8 +652,6 @@ class V8_EXPORT_PRIVATE InstructionSelector final { void VisitWordCompareZero(Node* user, Node* value, FlagsContinuation* cont); - void EmitWordPoisonOnSpeculation(Node* node); - void EmitPrepareArguments(ZoneVector* arguments, const CallDescriptor* call_descriptor, Node* node); void EmitPrepareResults(ZoneVector* results, @@ -797,7 +766,6 @@ class V8_EXPORT_PRIVATE InstructionSelector final { FrameStateInput::Equal> state_values_cache_; - PoisoningMitigationLevel poisoning_level_; Frame* frame_; bool instruction_selection_failed_; ZoneVector> instr_origins_; diff --git a/deps/v8/src/compiler/backend/instruction.cc b/deps/v8/src/compiler/backend/instruction.cc index 63ca78e06000c4..0da8e054ae33ca 100644 --- a/deps/v8/src/compiler/backend/instruction.cc +++ b/deps/v8/src/compiler/backend/instruction.cc @@ -410,12 +410,8 @@ std::ostream& operator<<(std::ostream& os, const FlagsMode& fm) { return os; case kFlags_branch: return os << "branch"; - case kFlags_branch_and_poison: - return os << "branch_and_poison"; case kFlags_deoptimize: return os << "deoptimize"; - case kFlags_deoptimize_and_poison: - return os << "deoptimize_and_poison"; case kFlags_set: return os << "set"; case kFlags_trap: diff --git a/deps/v8/src/compiler/backend/instruction.h b/deps/v8/src/compiler/backend/instruction.h index 204683c973567c..8698ed8a98b617 100644 --- a/deps/v8/src/compiler/backend/instruction.h +++ b/deps/v8/src/compiler/backend/instruction.h @@ -935,8 +935,7 @@ class V8_EXPORT_PRIVATE Instruction final { bool IsDeoptimizeCall() const { return arch_opcode() == ArchOpcode::kArchDeoptimize || - FlagsModeField::decode(opcode()) == kFlags_deoptimize || - FlagsModeField::decode(opcode()) == kFlags_deoptimize_and_poison; + FlagsModeField::decode(opcode()) == kFlags_deoptimize; } bool IsTrap() const { diff --git a/deps/v8/src/compiler/backend/jump-threading.cc b/deps/v8/src/compiler/backend/jump-threading.cc index e91b7e17d2b730..258d05955e5bec 100644 --- a/deps/v8/src/compiler/backend/jump-threading.cc +++ b/deps/v8/src/compiler/backend/jump-threading.cc @@ -55,17 +55,6 @@ struct JumpThreadingState { RpoNumber onstack() { return RpoNumber::FromInt(-2); } }; -bool IsBlockWithBranchPoisoning(InstructionSequence* code, - InstructionBlock* block) { - if (block->PredecessorCount() != 1) return false; - RpoNumber pred_rpo = (block->predecessors())[0]; - const InstructionBlock* pred = code->InstructionBlockAt(pred_rpo); - if (pred->code_start() == pred->code_end()) return false; - Instruction* instr = code->InstructionAt(pred->code_end() - 1); - FlagsMode mode = FlagsModeField::decode(instr->opcode()); - return mode == kFlags_branch_and_poison; -} - } // namespace bool JumpThreading::ComputeForwarding(Zone* local_zone, @@ -92,85 +81,80 @@ bool JumpThreading::ComputeForwarding(Zone* local_zone, TRACE("jt [%d] B%d\n", static_cast(stack.size()), block->rpo_number().ToInt()); RpoNumber fw = block->rpo_number(); - if (!IsBlockWithBranchPoisoning(code, block)) { - bool fallthru = true; - for (int i = block->code_start(); i < block->code_end(); ++i) { - Instruction* instr = code->InstructionAt(i); - if (!instr->AreMovesRedundant()) { - // can't skip instructions with non redundant moves. - TRACE(" parallel move\n"); - fallthru = false; - } else if (FlagsModeField::decode(instr->opcode()) != kFlags_none) { - // can't skip instructions with flags continuations. - TRACE(" flags\n"); - fallthru = false; - } else if (instr->IsNop()) { - // skip nops. - TRACE(" nop\n"); - continue; - } else if (instr->arch_opcode() == kArchJmp) { - // try to forward the jump instruction. - TRACE(" jmp\n"); - // if this block deconstructs the frame, we can't forward it. - // TODO(mtrofin): we can still forward if we end up building - // the frame at start. So we should move the decision of whether - // to build a frame or not in the register allocator, and trickle it - // here and to the code generator. - if (frame_at_start || !(block->must_deconstruct_frame() || - block->must_construct_frame())) { - fw = code->InputRpo(instr, 0); - } - fallthru = false; - } else if (instr->IsRet()) { - TRACE(" ret\n"); - if (fallthru) { - CHECK_IMPLIES(block->must_construct_frame(), - block->must_deconstruct_frame()); - // Only handle returns with immediate/constant operands, since - // they must always be the same for all returns in a function. - // Dynamic return values might use different registers at - // different return sites and therefore cannot be shared. - if (instr->InputAt(0)->IsImmediate()) { - int32_t return_size = ImmediateOperand::cast(instr->InputAt(0)) - ->inline_int32_value(); - // Instructions can be shared only for blocks that share - // the same |must_deconstruct_frame| attribute. - if (block->must_deconstruct_frame()) { - if (empty_deconstruct_frame_return_block == - RpoNumber::Invalid()) { - empty_deconstruct_frame_return_block = block->rpo_number(); - empty_deconstruct_frame_return_size = return_size; - } else if (empty_deconstruct_frame_return_size == - return_size) { - fw = empty_deconstruct_frame_return_block; - block->clear_must_deconstruct_frame(); - } - } else { - if (empty_no_deconstruct_frame_return_block == - RpoNumber::Invalid()) { - empty_no_deconstruct_frame_return_block = - block->rpo_number(); - empty_no_deconstruct_frame_return_size = return_size; - } else if (empty_no_deconstruct_frame_return_size == - return_size) { - fw = empty_no_deconstruct_frame_return_block; - } + bool fallthru = true; + for (int i = block->code_start(); i < block->code_end(); ++i) { + Instruction* instr = code->InstructionAt(i); + if (!instr->AreMovesRedundant()) { + // can't skip instructions with non redundant moves. + TRACE(" parallel move\n"); + fallthru = false; + } else if (FlagsModeField::decode(instr->opcode()) != kFlags_none) { + // can't skip instructions with flags continuations. + TRACE(" flags\n"); + fallthru = false; + } else if (instr->IsNop()) { + // skip nops. + TRACE(" nop\n"); + continue; + } else if (instr->arch_opcode() == kArchJmp) { + // try to forward the jump instruction. + TRACE(" jmp\n"); + // if this block deconstructs the frame, we can't forward it. + // TODO(mtrofin): we can still forward if we end up building + // the frame at start. So we should move the decision of whether + // to build a frame or not in the register allocator, and trickle it + // here and to the code generator. + if (frame_at_start || !(block->must_deconstruct_frame() || + block->must_construct_frame())) { + fw = code->InputRpo(instr, 0); + } + fallthru = false; + } else if (instr->IsRet()) { + TRACE(" ret\n"); + if (fallthru) { + CHECK_IMPLIES(block->must_construct_frame(), + block->must_deconstruct_frame()); + // Only handle returns with immediate/constant operands, since + // they must always be the same for all returns in a function. + // Dynamic return values might use different registers at + // different return sites and therefore cannot be shared. + if (instr->InputAt(0)->IsImmediate()) { + int32_t return_size = ImmediateOperand::cast(instr->InputAt(0)) + ->inline_int32_value(); + // Instructions can be shared only for blocks that share + // the same |must_deconstruct_frame| attribute. + if (block->must_deconstruct_frame()) { + if (empty_deconstruct_frame_return_block == + RpoNumber::Invalid()) { + empty_deconstruct_frame_return_block = block->rpo_number(); + empty_deconstruct_frame_return_size = return_size; + } else if (empty_deconstruct_frame_return_size == return_size) { + fw = empty_deconstruct_frame_return_block; + block->clear_must_deconstruct_frame(); + } + } else { + if (empty_no_deconstruct_frame_return_block == + RpoNumber::Invalid()) { + empty_no_deconstruct_frame_return_block = block->rpo_number(); + empty_no_deconstruct_frame_return_size = return_size; + } else if (empty_no_deconstruct_frame_return_size == + return_size) { + fw = empty_no_deconstruct_frame_return_block; } } } - fallthru = false; - } else { - // can't skip other instructions. - TRACE(" other\n"); - fallthru = false; } - break; - } - if (fallthru) { - int next = 1 + block->rpo_number().ToInt(); - if (next < code->InstructionBlockCount()) - fw = RpoNumber::FromInt(next); + fallthru = false; + } else { + // can't skip other instructions. + TRACE(" other\n"); + fallthru = false; } + break; + } + if (fallthru) { + int next = 1 + block->rpo_number().ToInt(); + if (next < code->InstructionBlockCount()) fw = RpoNumber::FromInt(next); } state.Forward(fw); } @@ -225,7 +209,7 @@ void JumpThreading::ApplyForwarding(Zone* local_zone, for (int i = block->code_start(); i < block->code_end(); ++i) { Instruction* instr = code->InstructionAt(i); FlagsMode mode = FlagsModeField::decode(instr->opcode()); - if (mode == kFlags_branch || mode == kFlags_branch_and_poison) { + if (mode == kFlags_branch) { fallthru = false; // branches don't fall through to the next block. } else if (instr->arch_opcode() == kArchJmp || instr->arch_opcode() == kArchRet) { diff --git a/deps/v8/src/compiler/backend/mips/code-generator-mips.cc b/deps/v8/src/compiler/backend/mips/code-generator-mips.cc index 2b8197e7e64a06..e7ba9ab933811e 100644 --- a/deps/v8/src/compiler/backend/mips/code-generator-mips.cc +++ b/deps/v8/src/compiler/backend/mips/code-generator-mips.cc @@ -313,16 +313,6 @@ FPUCondition FlagsConditionToConditionCmpFPU(bool* predicate, << "\""; \ UNIMPLEMENTED(); -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, - InstructionCode opcode, Instruction* instr, - MipsOperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->And(value, value, kSpeculationPoisonRegister); - } -} - } // namespace #define ASSEMBLE_ATOMIC_LOAD_INTEGER(asm_instr) \ @@ -614,31 +604,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, ne, kScratchReg, Operand(zero_reg)); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - // Calculate a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - // difference = (current - expected) | (expected - current) - // poison = ~(difference >> (kBitsPerSystemPointer - 1)) - __ ComputeCodeStartAddress(kScratchReg); - __ Move(kSpeculationPoisonRegister, kScratchReg); - __ subu(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kJavaScriptCallCodeStartRegister); - __ subu(kJavaScriptCallCodeStartRegister, kJavaScriptCallCodeStartRegister, - kScratchReg); - __ or_(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kJavaScriptCallCodeStartRegister); - __ sra(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kBitsPerSystemPointer - 1); - __ nor(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kSpeculationPoisonRegister); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ And(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ And(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ And(sp, sp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -938,10 +903,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( } break; } - case kArchWordPoisonOnSpeculation: - __ And(i.OutputRegister(), i.InputRegister(0), - kSpeculationPoisonRegister); - break; case kIeee754Float64Acos: ASSEMBLE_IEEE754_UNOP(acos); break; @@ -1541,30 +1502,24 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kMipsLbu: __ lbu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsLb: __ lb(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsSb: __ sb(i.InputOrZeroRegister(2), i.MemoryOperand()); break; case kMipsLhu: __ lhu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsUlhu: __ Ulhu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsLh: __ lh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsUlh: __ Ulh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsSh: __ sh(i.InputOrZeroRegister(2), i.MemoryOperand()); @@ -1574,11 +1529,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kMipsLw: __ lw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsUlw: __ Ulw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMipsSw: __ sw(i.InputOrZeroRegister(2), i.MemoryOperand()); @@ -3727,85 +3680,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { branch->fallthru); } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(jarin) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual) { - return; - } - - MipsOperandConverter i(this, instr); - condition = NegateFlagsCondition(condition); - - switch (instr->arch_opcode()) { - case kMipsCmp: { - __ LoadZeroOnCondition(kSpeculationPoisonRegister, i.InputRegister(0), - i.InputOperand(1), - FlagsConditionToConditionCmp(condition)); - } - return; - case kMipsTst: { - switch (condition) { - case kEqual: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - break; - case kNotEqual: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg); - break; - default: - UNREACHABLE(); - } - } - return; - case kMipsAddOvf: - case kMipsSubOvf: { - // Overflow occurs if overflow register is negative - __ Slt(kScratchReg2, kScratchReg, zero_reg); - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg2); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg2); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kMipsMulOvf: { - // Overflow occurs if overflow register is not zero - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kMipsCmpS: - case kMipsCmpD: { - bool predicate; - FlagsConditionToConditionCmpFPU(&predicate, condition); - if (predicate) { - __ LoadZeroIfFPUCondition(kSpeculationPoisonRegister); - } else { - __ LoadZeroIfNotFPUCondition(kSpeculationPoisonRegister); - } - } - return; - default: - UNREACHABLE(); - } -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { AssembleArchBranch(instr, branch); @@ -4130,7 +4004,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= osr_helper()->UnoptimizedFrameSlots(); - ResetSpeculationPoison(); } const RegList saves = call_descriptor->CalleeSavedRegisters(); diff --git a/deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc b/deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc index 48635c9c15b519..6d56892f30ca2f 100644 --- a/deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc +++ b/deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc @@ -1444,8 +1444,6 @@ int InstructionScheduler::GetInstructionLatency(const Instruction* instr) { AdduLatency(false) + AndLatency(false) + BranchShortLatency() + 1 + SubuLatency() + AdduLatency(); } - case kArchWordPoisonOnSpeculation: - return AndLatency(); case kIeee754Float64Acos: case kIeee754Float64Acosh: case kIeee754Float64Asin: diff --git a/deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc b/deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc index c8236122461d65..f22278e240b0ae 100644 --- a/deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc +++ b/deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc @@ -375,10 +375,6 @@ void InstructionSelector::VisitLoad(Node* node) { case MachineRepresentation::kNone: UNREACHABLE(); } - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - opcode |= AccessModeField::encode(kMemoryAccessPoisoned); - } if (g.CanBeImmediate(index, opcode)) { Emit(opcode | AddressingModeField::encode(kMode_MRI), @@ -393,8 +389,6 @@ void InstructionSelector::VisitLoad(Node* node) { } } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); diff --git a/deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc b/deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc index 6fce103d247f2e..cd5365b1eefebc 100644 --- a/deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc +++ b/deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc @@ -321,16 +321,6 @@ FPUCondition FlagsConditionToConditionCmpFPU(bool* predicate, UNREACHABLE(); } -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, - InstructionCode opcode, Instruction* instr, - MipsOperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->And(value, value, kSpeculationPoisonRegister); - } -} - } // namespace #define ASSEMBLE_ATOMIC_LOAD_INTEGER(asm_instr) \ @@ -577,31 +567,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, ne, kScratchReg, Operand(zero_reg)); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - // Calculate a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - // difference = (current - expected) | (expected - current) - // poison = ~(difference >> (kBitsPerSystemPointer - 1)) - __ ComputeCodeStartAddress(kScratchReg); - __ Move(kSpeculationPoisonRegister, kScratchReg); - __ subu(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kJavaScriptCallCodeStartRegister); - __ subu(kJavaScriptCallCodeStartRegister, kJavaScriptCallCodeStartRegister, - kScratchReg); - __ or_(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kJavaScriptCallCodeStartRegister); - __ sra(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kBitsPerSystemPointer - 1); - __ nor(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kSpeculationPoisonRegister); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ And(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ And(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ And(sp, sp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -900,10 +865,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( } break; } - case kArchWordPoisonOnSpeculation: - __ And(i.OutputRegister(), i.InputRegister(0), - kSpeculationPoisonRegister); - break; case kIeee754Float64Acos: ASSEMBLE_IEEE754_UNOP(acos); break; @@ -1646,30 +1607,24 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kMips64Lbu: __ Lbu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Lb: __ Lb(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Sb: __ Sb(i.InputOrZeroRegister(2), i.MemoryOperand()); break; case kMips64Lhu: __ Lhu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Ulhu: __ Ulhu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Lh: __ Lh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Ulh: __ Ulh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Sh: __ Sh(i.InputOrZeroRegister(2), i.MemoryOperand()); @@ -1679,27 +1634,21 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kMips64Lw: __ Lw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Ulw: __ Ulw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Lwu: __ Lwu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Ulwu: __ Ulwu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Ld: __ Ld(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Uld: __ Uld(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kMips64Sw: __ Sw(i.InputOrZeroRegister(2), i.MemoryOperand()); @@ -3904,104 +3853,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { branch->fallthru); } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(jarin) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual) { - return; - } - - MipsOperandConverter i(this, instr); - condition = NegateFlagsCondition(condition); - - switch (instr->arch_opcode()) { - case kMips64Cmp: { - __ LoadZeroOnCondition(kSpeculationPoisonRegister, i.InputRegister(0), - i.InputOperand(1), - FlagsConditionToConditionCmp(condition)); - } - return; - case kMips64Tst: { - switch (condition) { - case kEqual: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - break; - case kNotEqual: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg); - break; - default: - UNREACHABLE(); - } - } - return; - case kMips64Dadd: - case kMips64Dsub: { - // Check for overflow creates 1 or 0 for result. - __ dsrl32(kScratchReg, i.OutputRegister(), 31); - __ srl(kScratchReg2, i.OutputRegister(), 31); - __ xor_(kScratchReg2, kScratchReg, kScratchReg2); - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg2); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg2); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kMips64DaddOvf: - case kMips64DsubOvf: { - // Overflow occurs if overflow register is negative - __ Slt(kScratchReg2, kScratchReg, zero_reg); - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg2); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg2); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kMips64MulOvf: { - // Overflow occurs if overflow register is not zero - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kMips64CmpS: - case kMips64CmpD: { - bool predicate; - FlagsConditionToConditionCmpFPU(&predicate, condition); - if (predicate) { - __ LoadZeroIfFPUCondition(kSpeculationPoisonRegister); - } else { - __ LoadZeroIfNotFPUCondition(kSpeculationPoisonRegister); - } - } - return; - default: - UNREACHABLE(); - } -} - #undef UNSUPPORTED_COND void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, @@ -4340,7 +4191,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= osr_helper()->UnoptimizedFrameSlots(); - ResetSpeculationPoison(); } const RegList saves = call_descriptor->CalleeSavedRegisters(); diff --git a/deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc b/deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc index c63e0aa3d36d55..d6016f2b97d559 100644 --- a/deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc +++ b/deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc @@ -1352,8 +1352,6 @@ int InstructionScheduler::GetInstructionLatency(const Instruction* instr) { return DadduLatency(false) + AndLatency(false) + AssertLatency() + DadduLatency(false) + AndLatency(false) + BranchShortLatency() + 1 + DsubuLatency() + DadduLatency(); - case kArchWordPoisonOnSpeculation: - return AndLatency(); case kIeee754Float64Acos: case kIeee754Float64Acosh: case kIeee754Float64Asin: diff --git a/deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc b/deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc index bec7bbefdcbce6..942d918dce73c6 100644 --- a/deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc +++ b/deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc @@ -515,16 +515,10 @@ void InstructionSelector::VisitLoad(Node* node) { case MachineRepresentation::kNone: UNREACHABLE(); } - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - opcode |= AccessModeField::encode(kMemoryAccessPoisoned); - } EmitLoad(this, node, opcode); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); @@ -2041,8 +2035,8 @@ void VisitWordCompare(InstructionSelector* selector, Node* node, bool IsNodeUnsigned(Node* n) { NodeMatcher m(n); - if (m.IsLoad() || m.IsUnalignedLoad() || m.IsPoisonedLoad() || - m.IsProtectedLoad() || m.IsWord32AtomicLoad() || m.IsWord64AtomicLoad()) { + if (m.IsLoad() || m.IsUnalignedLoad() || m.IsProtectedLoad() || + m.IsWord32AtomicLoad() || m.IsWord64AtomicLoad()) { LoadRepresentation load_rep = LoadRepresentationOf(n->op()); return load_rep.IsUnsigned(); } else { diff --git a/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc b/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc index cf324353f2c43c..838ef4b4c07ce4 100644 --- a/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc +++ b/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc @@ -38,9 +38,7 @@ class PPCOperandConverter final : public InstructionOperandConverter { RCBit OutputRCBit() const { switch (instr_->flags_mode()) { case kFlags_branch: - case kFlags_branch_and_poison: case kFlags_deoptimize: - case kFlags_deoptimize_and_poison: case kFlags_set: case kFlags_trap: case kFlags_select: @@ -289,15 +287,6 @@ Condition FlagsConditionToCondition(FlagsCondition condition, ArchOpcode op) { UNREACHABLE(); } -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, Instruction* instr, - PPCOperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(instr->opcode()); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->and_(value, value, kSpeculationPoisonRegister); - } -} - } // namespace #define ASSEMBLE_FLOAT_UNOP_RC(asm_instr, round) \ @@ -777,25 +766,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, ne, cr0); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - Register scratch = kScratchReg; - - __ ComputeCodeStartAddress(scratch); - - // Calculate a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - __ CmpS64(kJavaScriptCallCodeStartRegister, scratch); - __ li(scratch, Operand::Zero()); - __ notx(kSpeculationPoisonRegister, scratch); - __ isel(eq, kSpeculationPoisonRegister, kSpeculationPoisonRegister, scratch); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ and_(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ and_(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ and_(sp, sp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -1164,10 +1134,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Operand(offset.offset()), r0); break; } - case kArchWordPoisonOnSpeculation: - __ and_(i.OutputRegister(), i.InputRegister(0), - kSpeculationPoisonRegister); - break; case kPPC_Peek: { int reverse_slot = i.InputInt32(0); int offset = @@ -1968,33 +1934,26 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( #endif case kPPC_LoadWordU8: ASSEMBLE_LOAD_INTEGER(lbz, lbzx); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kPPC_LoadWordS8: ASSEMBLE_LOAD_INTEGER(lbz, lbzx); __ extsb(i.OutputRegister(), i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kPPC_LoadWordU16: ASSEMBLE_LOAD_INTEGER(lhz, lhzx); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kPPC_LoadWordS16: ASSEMBLE_LOAD_INTEGER(lha, lhax); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kPPC_LoadWordU32: ASSEMBLE_LOAD_INTEGER(lwz, lwzx); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kPPC_LoadWordS32: ASSEMBLE_LOAD_INTEGER(lwa, lwax); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; #if V8_TARGET_ARCH_PPC64 case kPPC_LoadWord64: ASSEMBLE_LOAD_INTEGER(ld, ldx); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; #endif case kPPC_LoadFloat32: @@ -2143,7 +2102,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( } case kPPC_LoadByteRev32: { ASSEMBLE_LOAD_INTEGER_RR(lwbrx); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; } case kPPC_StoreByteRev32: { @@ -2169,7 +2127,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( } case kPPC_LoadByteRev64: { ASSEMBLE_LOAD_INTEGER_RR(ldbrx); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; } case kPPC_StoreByteRev64: { @@ -3799,21 +3756,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { if (!branch->fallthru) __ b(flabel); // no fallthru to flabel. } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(John) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual || - condition == kOverflow || condition == kNotOverflow) { - return; - } - - ArchOpcode op = instr->arch_opcode(); - condition = NegateFlagsCondition(condition); - __ li(kScratchReg, Operand::Zero()); - __ isel(FlagsConditionToCondition(condition, op), kSpeculationPoisonRegister, - kScratchReg, kSpeculationPoisonRegister, cr0); -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { AssembleArchBranch(instr, branch); @@ -4079,7 +4021,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= osr_helper()->UnoptimizedFrameSlots(); - ResetSpeculationPoison(); } const RegList saves_fp = call_descriptor->CalleeSavedFPRegisters(); diff --git a/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc b/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc index c74211aa3895f1..ab2b0a3338f7d9 100644 --- a/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc +++ b/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc @@ -229,11 +229,6 @@ void InstructionSelector::VisitLoad(Node* node) { UNREACHABLE(); } - if (node->opcode() == IrOpcode::kPoisonedLoad && - poisoning_level_ != PoisoningMitigationLevel::kDontPoison) { - opcode |= AccessModeField::encode(kMemoryAccessPoisoned); - } - bool is_atomic = (node->opcode() == IrOpcode::kWord32AtomicLoad || node->opcode() == IrOpcode::kWord64AtomicLoad); @@ -252,8 +247,6 @@ void InstructionSelector::VisitLoad(Node* node) { } } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); diff --git a/deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc b/deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc index 2d92ae1567e1e8..3bd288ae1d9b04 100644 --- a/deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc +++ b/deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc @@ -307,17 +307,6 @@ FPUCondition FlagsConditionToConditionCmpFPU(bool* predicate, UNREACHABLE(); } -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, - InstructionCode opcode, Instruction* instr, - RiscvOperandConverter const& i) { - const MemoryAccessMode access_mode = - static_cast(MiscField::decode(opcode)); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->And(value, value, kSpeculationPoisonRegister); - } -} - } // namespace #define ASSEMBLE_ATOMIC_LOAD_INTEGER(asm_instr) \ @@ -570,31 +559,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, ne, kScratchReg, Operand(zero_reg)); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - // Calculate a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - // difference = (current - expected) | (expected - current) - // poison = ~(difference >> (kBitsPerSystemPointer - 1)) - __ ComputeCodeStartAddress(kScratchReg); - __ Move(kSpeculationPoisonRegister, kScratchReg); - __ Sub32(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kJavaScriptCallCodeStartRegister); - __ Sub32(kJavaScriptCallCodeStartRegister, kJavaScriptCallCodeStartRegister, - kScratchReg); - __ or_(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kJavaScriptCallCodeStartRegister); - __ Sra64(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kBitsPerSystemPointer - 1); - __ Nor(kSpeculationPoisonRegister, kSpeculationPoisonRegister, - kSpeculationPoisonRegister); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ And(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ And(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ And(sp, sp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -887,10 +851,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; } - case kArchWordPoisonOnSpeculation: - __ And(i.OutputRegister(), i.InputRegister(0), - kSpeculationPoisonRegister); - break; case kIeee754Float64Acos: ASSEMBLE_IEEE754_UNOP(acos); break; @@ -1553,30 +1513,24 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kRiscvLbu: __ Lbu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvLb: __ Lb(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvSb: __ Sb(i.InputOrZeroRegister(2), i.MemoryOperand()); break; case kRiscvLhu: __ Lhu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvUlhu: __ Ulhu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvLh: __ Lh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvUlh: __ Ulh(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvSh: __ Sh(i.InputOrZeroRegister(2), i.MemoryOperand()); @@ -1586,27 +1540,21 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kRiscvLw: __ Lw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvUlw: __ Ulw(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvLwu: __ Lwu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvUlwu: __ Ulwu(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvLd: __ Ld(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvUld: __ Uld(i.OutputRegister(), i.MemoryOperand()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kRiscvSw: __ Sw(i.InputOrZeroRegister(2), i.MemoryOperand()); @@ -2011,110 +1959,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { branch->fallthru); } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(jarin) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual) { - return; - } - - RiscvOperandConverter i(this, instr); - condition = NegateFlagsCondition(condition); - - switch (instr->arch_opcode()) { - case kRiscvCmp: { - __ CompareI(kScratchReg, i.InputRegister(0), i.InputOperand(1), - FlagsConditionToConditionCmp(condition)); - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, kScratchReg); - } - return; - case kRiscvCmpZero: { - __ CompareI(kScratchReg, i.InputRegister(0), Operand(zero_reg), - FlagsConditionToConditionCmp(condition)); - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, kScratchReg); - } - return; - case kRiscvTst: { - switch (condition) { - case kEqual: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - break; - case kNotEqual: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg); - break; - default: - UNREACHABLE(); - } - } - return; - case kRiscvAdd64: - case kRiscvSub64: { - // Check for overflow creates 1 or 0 for result. - __ Srl64(kScratchReg, i.OutputRegister(), 63); - __ Srl32(kScratchReg2, i.OutputRegister(), 31); - __ Xor(kScratchReg2, kScratchReg, kScratchReg2); - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg2); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg2); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kRiscvAddOvf64: - case kRiscvSubOvf64: { - // Overflow occurs if overflow register is negative - __ Slt(kScratchReg2, kScratchReg, zero_reg); - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg2); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg2); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kRiscvMulOvf32: { - // Overflow occurs if overflow register is not zero - switch (condition) { - case kOverflow: - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, - kScratchReg); - break; - case kNotOverflow: - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - break; - default: - UNSUPPORTED_COND(instr->arch_opcode(), condition); - } - } - return; - case kRiscvCmpS: - case kRiscvCmpD: { - bool predicate; - FlagsConditionToConditionCmpFPU(&predicate, condition); - if (predicate) { - __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, kScratchReg); - } else { - __ LoadZeroIfConditionZero(kSpeculationPoisonRegister, kScratchReg); - } - } - return; - default: - UNREACHABLE(); - } -} - #undef UNSUPPORTED_COND void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, @@ -2489,7 +2333,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= osr_helper()->UnoptimizedFrameSlots(); - ResetSpeculationPoison(); } const RegList saves = call_descriptor->CalleeSavedRegisters(); diff --git a/deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc b/deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc index 157b11c9308a6f..91ceae622bb037 100644 --- a/deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc +++ b/deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc @@ -1169,8 +1169,6 @@ int InstructionScheduler::GetInstructionLatency(const Instruction* instr) { return Add64Latency(false) + AndLatency(false) + AssertLatency() + Add64Latency(false) + AndLatency(false) + BranchShortLatency() + 1 + Sub64Latency() + Add64Latency(); - case kArchWordPoisonOnSpeculation: - return AndLatency(); case kIeee754Float64Acos: case kIeee754Float64Acosh: case kIeee754Float64Asin: diff --git a/deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc b/deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc index 72706201e2a78b..dea4ed9fe6fc24 100644 --- a/deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc +++ b/deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc @@ -489,16 +489,10 @@ void InstructionSelector::VisitLoad(Node* node) { case MachineRepresentation::kNone: UNREACHABLE(); } - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - opcode |= MiscField::encode(kMemoryAccessPoisoned); - } EmitLoad(this, node, opcode); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); @@ -1827,8 +1821,8 @@ void VisitWordCompare(InstructionSelector* selector, Node* node, bool IsNodeUnsigned(Node* n) { NodeMatcher m(n); - if (m.IsLoad() || m.IsUnalignedLoad() || m.IsPoisonedLoad() || - m.IsProtectedLoad() || m.IsWord32AtomicLoad() || m.IsWord64AtomicLoad()) { + if (m.IsLoad() || m.IsUnalignedLoad() || m.IsProtectedLoad() || + m.IsWord32AtomicLoad() || m.IsWord64AtomicLoad()) { LoadRepresentation load_rep = LoadRepresentationOf(n->op()); return load_rep.IsUnsigned(); } else { diff --git a/deps/v8/src/compiler/backend/s390/code-generator-s390.cc b/deps/v8/src/compiler/backend/s390/code-generator-s390.cc index 685293169d7fd7..2cd3244a1fb7c7 100644 --- a/deps/v8/src/compiler/backend/s390/code-generator-s390.cc +++ b/deps/v8/src/compiler/backend/s390/code-generator-s390.cc @@ -985,15 +985,6 @@ void AdjustStackPointerForTailCall( } } -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, Instruction* instr, - S390OperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(instr->opcode()); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->AndP(value, kSpeculationPoisonRegister); - } -} - } // namespace void CodeGenerator::AssembleTailCallBeforeGap(Instruction* instr, @@ -1071,25 +1062,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, ne); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - Register scratch = r1; - - __ ComputeCodeStartAddress(scratch); - - // Calculate a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - __ mov(kSpeculationPoisonRegister, Operand::Zero()); - __ mov(r0, Operand(-1)); - __ CmpS64(kJavaScriptCallCodeStartRegister, scratch); - __ LoadOnConditionP(eq, kSpeculationPoisonRegister, r0); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ AndP(kJSFunctionRegister, kJSFunctionRegister, kSpeculationPoisonRegister); - __ AndP(kContextRegister, kContextRegister, kSpeculationPoisonRegister); - __ AndP(sp, sp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -1395,10 +1367,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Operand(offset.offset())); break; } - case kArchWordPoisonOnSpeculation: - DCHECK_EQ(i.OutputRegister(), i.InputRegister(0)); - __ AndP(i.InputRegister(0), kSpeculationPoisonRegister); - break; case kS390_Peek: { int reverse_slot = i.InputInt32(0); int offset = @@ -2155,7 +2123,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( break; case kS390_LoadWordS8: ASSEMBLE_LOAD_INTEGER(LoadS8); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_BitcastFloat32ToInt32: ASSEMBLE_UNARY_OP(R_DInstr(MovFloatToInt), R_MInstr(LoadU32), nullInstr); @@ -2173,35 +2140,27 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( #endif case kS390_LoadWordU8: ASSEMBLE_LOAD_INTEGER(LoadU8); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadWordU16: ASSEMBLE_LOAD_INTEGER(LoadU16); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadWordS16: ASSEMBLE_LOAD_INTEGER(LoadS16); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadWordU32: ASSEMBLE_LOAD_INTEGER(LoadU32); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadWordS32: ASSEMBLE_LOAD_INTEGER(LoadS32); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadReverse16: ASSEMBLE_LOAD_INTEGER(lrvh); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadReverse32: ASSEMBLE_LOAD_INTEGER(lrv); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadReverse64: ASSEMBLE_LOAD_INTEGER(lrvg); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadReverse16RR: __ lrvr(i.OutputRegister(), i.InputRegister(0)); @@ -2238,7 +2197,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( } case kS390_LoadWord64: ASSEMBLE_LOAD_INTEGER(lg); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; case kS390_LoadAndTestWord32: { ASSEMBLE_LOADANDTEST32(ltr, lt_z); @@ -2258,7 +2216,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( AddressingMode mode = kMode_None; MemOperand operand = i.MemoryOperand(&mode); __ vl(i.OutputSimd128Register(), operand, Condition(0)); - EmitWordLoadPoisoningIfNeeded(this, instr, i); break; } case kS390_StoreWord8: @@ -3541,20 +3498,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { if (!branch->fallthru) __ b(flabel); // no fallthru to flabel. } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(John) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual || - condition == kOverflow || condition == kNotOverflow) { - return; - } - - condition = NegateFlagsCondition(condition); - __ mov(r0, Operand::Zero()); - __ LoadOnConditionP(FlagsConditionToCondition(condition, kArchNop), - kSpeculationPoisonRegister, r0); -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { AssembleArchBranch(instr, branch); @@ -3781,7 +3724,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= osr_helper()->UnoptimizedFrameSlots(); - ResetSpeculationPoison(); } const RegList saves_fp = call_descriptor->CalleeSavedFPRegisters(); diff --git a/deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc b/deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc index bcf5a8dfff8ff0..27a0218b8513ba 100644 --- a/deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc +++ b/deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc @@ -704,15 +704,9 @@ void InstructionSelector::VisitLoad(Node* node) { AddressingMode mode = g.GetEffectiveAddressMemoryOperand(node, inputs, &input_count); opcode |= AddressingModeField::encode(mode); - if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - opcode |= AccessModeField::encode(kMemoryAccessPoisoned); - } Emit(opcode, 1, outputs, input_count, inputs); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { // TODO(eholk) UNIMPLEMENTED(); diff --git a/deps/v8/src/compiler/backend/x64/code-generator-x64.cc b/deps/v8/src/compiler/backend/x64/code-generator-x64.cc index 60a40fb4893bea..bb0bc293610013 100644 --- a/deps/v8/src/compiler/backend/x64/code-generator-x64.cc +++ b/deps/v8/src/compiler/backend/x64/code-generator-x64.cc @@ -569,16 +569,6 @@ void EmitOOLTrapIfNeeded(Zone* zone, CodeGenerator* codegen, #endif // V8_ENABLE_WEBASSEMBLY -void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, - InstructionCode opcode, Instruction* instr, - X64OperandConverter const& i) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - Register value = i.OutputRegister(); - codegen->tasm()->andq(value, kSpeculationPoisonRegister); - } -} - } // namespace #define ASSEMBLE_UNOP(asm_instr) \ @@ -1019,22 +1009,6 @@ void CodeGenerator::BailoutIfDeoptimized() { RelocInfo::CODE_TARGET, not_zero); } -void CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister() { - // Set a mask which has all bits set in the normal case, but has all - // bits cleared if we are speculatively executing the wrong PC. - __ ComputeCodeStartAddress(rbx); - __ xorq(kSpeculationPoisonRegister, kSpeculationPoisonRegister); - __ cmpq(kJavaScriptCallCodeStartRegister, rbx); - __ Move(rbx, -1); - __ cmovq(equal, kSpeculationPoisonRegister, rbx); -} - -void CodeGenerator::AssembleRegisterArgumentPoisoning() { - __ andq(kJSFunctionRegister, kSpeculationPoisonRegister); - __ andq(kContextRegister, kSpeculationPoisonRegister); - __ andq(rsp, kSpeculationPoisonRegister); -} - // Assembles an instruction after register allocation, producing machine code. CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( Instruction* instr) { @@ -1052,11 +1026,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), reg == kJavaScriptCallCodeStartRegister); __ LoadCodeObjectEntry(reg, reg); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineCall(reg); - } else { - __ call(reg); - } + __ call(reg); } RecordCallPosition(instr); frame_access_state()->ClearSPDelta(); @@ -1078,19 +1048,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( if (DetermineStubCallMode() == StubCallMode::kCallWasmRuntimeStub) { __ near_call(wasm_code, constant.rmode()); } else { - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineCall(wasm_code, constant.rmode()); - } else { - __ Call(wasm_code, constant.rmode()); - } + __ Call(wasm_code, constant.rmode()); } } else { - Register reg = i.InputRegister(0); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineCall(reg); - } else { - __ call(reg); - } + __ call(i.InputRegister(0)); } RecordCallPosition(instr); frame_access_state()->ClearSPDelta(); @@ -1107,12 +1068,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( __ jmp(kScratchRegister); } } else { - Register reg = i.InputRegister(0); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineJump(reg); - } else { - __ jmp(reg); - } + __ jmp(i.InputRegister(0)); } unwinding_info_writer_.MarkBlockWillExit(); frame_access_state()->ClearSPDelta(); @@ -1130,11 +1086,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), reg == kJavaScriptCallCodeStartRegister); __ LoadCodeObjectEntry(reg, reg); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineJump(reg); - } else { - __ jmp(reg); - } + __ jmp(reg); } unwinding_info_writer_.MarkBlockWillExit(); frame_access_state()->ClearSPDelta(); @@ -1147,11 +1099,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( DCHECK_IMPLIES( instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), reg == kJavaScriptCallCodeStartRegister); - if (instr->HasCallDescriptorFlag(CallDescriptor::kRetpoline)) { - __ RetpolineJump(reg); - } else { - __ jmp(reg); - } + __ jmp(reg); unwinding_info_writer_.MarkBlockWillExit(); frame_access_state()->ClearSPDelta(); frame_access_state()->SetFrameAccessToDefault(); @@ -1368,10 +1316,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( DetermineStubCallMode(), kTaggedSize); break; } - case kArchWordPoisonOnSpeculation: - DCHECK_EQ(i.OutputRegister(), i.InputRegister(0)); - __ andq(i.InputRegister(0), kSpeculationPoisonRegister); - break; case kX64MFence: __ mfence(); break; @@ -2180,24 +2124,20 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movsxbl); __ AssertZeroExtended(i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movzxbl: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movzxbl); __ AssertZeroExtended(i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movsxbq: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movsxbq); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movzxbq: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movzxbq); __ AssertZeroExtended(i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movb: { EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -2214,20 +2154,17 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( EmitTSANStoreOOLIfNeeded(zone(), this, tasm(), operand, value, i, DetermineStubCallMode(), kInt8Size); } - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; } case kX64Movsxwl: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movsxwl); __ AssertZeroExtended(i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movzxwl: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movzxwl); __ AssertZeroExtended(i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movsxwq: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -2237,7 +2174,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movzxwq); __ AssertZeroExtended(i.OutputRegister()); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movw: { EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -2254,7 +2190,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( EmitTSANStoreOOLIfNeeded(zone(), this, tasm(), operand, value, i, DetermineStubCallMode(), kInt16Size); } - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; } case kX64Movl: @@ -2288,12 +2223,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( DetermineStubCallMode(), kInt32Size); } } - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movsxlq: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); ASSEMBLE_MOVX(movsxlq); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64MovqDecompressTaggedSigned: { CHECK(instr->HasOutput()); @@ -2301,7 +2234,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( __ DecompressTaggedSigned(i.OutputRegister(), address); EmitTSANLoadOOLIfNeeded(zone(), this, tasm(), address, i, DetermineStubCallMode(), kTaggedSize); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; } case kX64MovqDecompressTaggedPointer: { @@ -2310,7 +2242,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( __ DecompressTaggedPointer(i.OutputRegister(), address); EmitTSANLoadOOLIfNeeded(zone(), this, tasm(), address, i, DetermineStubCallMode(), kTaggedSize); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; } case kX64MovqDecompressAnyTagged: { @@ -2319,7 +2250,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( __ DecompressAnyTagged(i.OutputRegister(), address); EmitTSANLoadOOLIfNeeded(zone(), this, tasm(), address, i, DetermineStubCallMode(), kTaggedSize); - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; } case kX64MovqCompressTagged: { @@ -2361,7 +2291,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( DetermineStubCallMode(), kInt64Size); } } - EmitWordLoadPoisoningIfNeeded(this, opcode, instr, i); break; case kX64Movss: EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); @@ -2376,17 +2305,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( case kX64Movsd: { EmitOOLTrapIfNeeded(zone(), this, opcode, instr, __ pc_offset()); if (instr->HasOutput()) { - const MemoryAccessMode access_mode = AccessModeField::decode(opcode); - if (access_mode == kMemoryAccessPoisoned) { - // If we have to poison the loaded value, we load into a general - // purpose register first, mask it with the poison, and move the - // value from the general purpose register into the double register. - __ movq(kScratchRegister, i.MemoryOperand()); - __ andq(kScratchRegister, kSpeculationPoisonRegister); - __ Movq(i.OutputDoubleRegister(), kScratchRegister); - } else { - __ Movsd(i.OutputDoubleRegister(), i.MemoryOperand()); - } + __ Movsd(i.OutputDoubleRegister(), i.MemoryOperand()); } else { size_t index = 0; Operand operand = i.MemoryOperand(&index); @@ -4462,19 +4381,6 @@ void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { if (!branch->fallthru) __ jmp(flabel, flabel_distance); } -void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition, - Instruction* instr) { - // TODO(jarin) Handle float comparisons (kUnordered[Not]Equal). - if (condition == kUnorderedEqual || condition == kUnorderedNotEqual) { - return; - } - - condition = NegateFlagsCondition(condition); - __ Move(kScratchRegister, 0); - __ cmovq(FlagsConditionToCondition(condition), kSpeculationPoisonRegister, - kScratchRegister); -} - void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, BranchInfo* branch) { Label::Distance flabel_distance = @@ -4716,7 +4622,6 @@ void CodeGenerator::AssembleConstructFrame() { __ RecordComment("-- OSR entrypoint --"); osr_pc_offset_ = __ pc_offset(); required_slots -= static_cast(osr_helper()->UnoptimizedFrameSlots()); - ResetSpeculationPoison(); } const RegList saves = call_descriptor->CalleeSavedRegisters(); diff --git a/deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc b/deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc index 53ee75064bb97c..5a5acb746e5c3d 100644 --- a/deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc +++ b/deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc @@ -471,9 +471,6 @@ void InstructionSelector::VisitLoad(Node* node, Node* value, InstructionCode code = opcode | AddressingModeField::encode(mode); if (node->opcode() == IrOpcode::kProtectedLoad) { code |= AccessModeField::encode(kMemoryAccessProtected); - } else if (node->opcode() == IrOpcode::kPoisonedLoad) { - CHECK_NE(poisoning_level_, PoisoningMitigationLevel::kDontPoison); - code |= AccessModeField::encode(kMemoryAccessPoisoned); } Emit(code, 1, outputs, input_count, inputs, temp_count, temps); } @@ -484,8 +481,6 @@ void InstructionSelector::VisitLoad(Node* node) { VisitLoad(node, node, GetLoadOpcode(load_rep)); } -void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } - void InstructionSelector::VisitProtectedLoad(Node* node) { VisitLoad(node); } void InstructionSelector::VisitStore(Node* node) { @@ -1502,8 +1497,7 @@ bool InstructionSelector::ZeroExtendsWord32ToWord64NoPhis(Node* node) { } case IrOpcode::kLoad: case IrOpcode::kLoadImmutable: - case IrOpcode::kProtectedLoad: - case IrOpcode::kPoisonedLoad: { + case IrOpcode::kProtectedLoad: { // The movzxbl/movsxbl/movzxwl/movsxwl/movl operations implicitly // zero-extend to 64-bit on x64, so the zero-extension is a no-op. LoadRepresentation load_rep = LoadRepresentationOf(node->op()); diff --git a/deps/v8/src/compiler/branch-elimination.cc b/deps/v8/src/compiler/branch-elimination.cc index a864012a7a662a..151534050391ec 100644 --- a/deps/v8/src/compiler/branch-elimination.cc +++ b/deps/v8/src/compiler/branch-elimination.cc @@ -135,7 +135,6 @@ Reduction BranchElimination::ReduceBranch(Node* node) { bool condition_value; // If we know the condition we can discard the branch. if (from_input.LookupCondition(condition, &branch, &condition_value)) { - MarkAsSafetyCheckIfNeeded(branch, node); for (Node* const use : node->uses()) { switch (use->opcode()) { case IrOpcode::kIfTrue: @@ -215,7 +214,6 @@ Reduction BranchElimination::ReduceDeoptimizeConditional(Node* node) { Node* branch; // If we know the condition we can discard the branch. if (conditions.LookupCondition(condition, &branch, &condition_value)) { - MarkAsSafetyCheckIfNeeded(branch, node); if (condition_is_true == condition_value) { // We don't update the conditions here, because we're replacing {node} // with the {control} node that already contains the right information. @@ -410,21 +408,6 @@ bool BranchElimination::ControlPathConditions::BlocksAndConditionsInvariant() { } #endif -void BranchElimination::MarkAsSafetyCheckIfNeeded(Node* branch, Node* node) { - // Check if {branch} is dead because we might have a stale side-table entry. - if (!branch->IsDead() && branch->opcode() != IrOpcode::kDead && - branch->opcode() != IrOpcode::kTrapIf && - branch->opcode() != IrOpcode::kTrapUnless) { - IsSafetyCheck branch_safety = IsSafetyCheckOf(branch->op()); - IsSafetyCheck combined_safety = - CombineSafetyChecks(branch_safety, IsSafetyCheckOf(node->op())); - if (branch_safety != combined_safety) { - NodeProperties::ChangeOp( - branch, common()->MarkAsSafetyCheck(branch->op(), combined_safety)); - } - } -} - Graph* BranchElimination::graph() const { return jsgraph()->graph(); } Isolate* BranchElimination::isolate() const { return jsgraph()->isolate(); } diff --git a/deps/v8/src/compiler/branch-elimination.h b/deps/v8/src/compiler/branch-elimination.h index 9078c3903814cb..93bacbff7b30cd 100644 --- a/deps/v8/src/compiler/branch-elimination.h +++ b/deps/v8/src/compiler/branch-elimination.h @@ -114,7 +114,6 @@ class V8_EXPORT_PRIVATE BranchElimination final Reduction UpdateConditions(Node* node, ControlPathConditions prev_conditions, Node* current_condition, Node* current_branch, bool is_true_branch, bool in_new_block); - void MarkAsSafetyCheckIfNeeded(Node* branch, Node* node); Node* dead() const { return dead_; } Graph* graph() const; diff --git a/deps/v8/src/compiler/bytecode-graph-builder.cc b/deps/v8/src/compiler/bytecode-graph-builder.cc index 985a256c57dd99..3a28b33b52b86e 100644 --- a/deps/v8/src/compiler/bytecode-graph-builder.cc +++ b/deps/v8/src/compiler/bytecode-graph-builder.cc @@ -141,9 +141,8 @@ class BytecodeGraphBuilder { Node* NewIfDefault() { return NewNode(common()->IfDefault()); } Node* NewMerge() { return NewNode(common()->Merge(1), true); } Node* NewLoop() { return NewNode(common()->Loop(1), true); } - Node* NewBranch(Node* condition, BranchHint hint = BranchHint::kNone, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck) { - return NewNode(common()->Branch(hint, is_safety_check), condition); + Node* NewBranch(Node* condition, BranchHint hint = BranchHint::kNone) { + return NewNode(common()->Branch(hint), condition); } Node* NewSwitch(Node* condition, int control_output_count) { return NewNode(common()->Switch(control_output_count), condition); @@ -3959,7 +3958,7 @@ void BytecodeGraphBuilder::BuildJump() { } void BytecodeGraphBuilder::BuildJumpIf(Node* condition) { - NewBranch(condition, BranchHint::kNone, IsSafetyCheck::kNoSafetyCheck); + NewBranch(condition, BranchHint::kNone); { SubEnvironment sub_environment(this); NewIfTrue(); @@ -3971,7 +3970,7 @@ void BytecodeGraphBuilder::BuildJumpIf(Node* condition) { } void BytecodeGraphBuilder::BuildJumpIfNot(Node* condition) { - NewBranch(condition, BranchHint::kNone, IsSafetyCheck::kNoSafetyCheck); + NewBranch(condition, BranchHint::kNone); { SubEnvironment sub_environment(this); NewIfFalse(); @@ -3997,8 +3996,7 @@ void BytecodeGraphBuilder::BuildJumpIfNotEqual(Node* comperand) { } void BytecodeGraphBuilder::BuildJumpIfFalse() { - NewBranch(environment()->LookupAccumulator(), BranchHint::kNone, - IsSafetyCheck::kNoSafetyCheck); + NewBranch(environment()->LookupAccumulator(), BranchHint::kNone); { SubEnvironment sub_environment(this); NewIfFalse(); @@ -4012,8 +4010,7 @@ void BytecodeGraphBuilder::BuildJumpIfFalse() { } void BytecodeGraphBuilder::BuildJumpIfTrue() { - NewBranch(environment()->LookupAccumulator(), BranchHint::kNone, - IsSafetyCheck::kNoSafetyCheck); + NewBranch(environment()->LookupAccumulator(), BranchHint::kNone); { SubEnvironment sub_environment(this); NewIfTrue(); diff --git a/deps/v8/src/compiler/code-assembler.cc b/deps/v8/src/compiler/code-assembler.cc index 2cbcce236fa1e0..63154ea6a064b9 100644 --- a/deps/v8/src/compiler/code-assembler.cc +++ b/deps/v8/src/compiler/code-assembler.cc @@ -48,8 +48,7 @@ static_assert( CodeAssemblerState::CodeAssemblerState( Isolate* isolate, Zone* zone, const CallInterfaceDescriptor& descriptor, - CodeKind kind, const char* name, PoisoningMitigationLevel poisoning_level, - Builtin builtin) + CodeKind kind, const char* name, Builtin builtin) // TODO(rmcilroy): Should we use Linkage::GetBytecodeDispatchDescriptor for // bytecode handlers? : CodeAssemblerState( @@ -57,29 +56,26 @@ CodeAssemblerState::CodeAssemblerState( Linkage::GetStubCallDescriptor( zone, descriptor, descriptor.GetStackParameterCount(), CallDescriptor::kNoFlags, Operator::kNoProperties), - kind, name, poisoning_level, builtin) {} + kind, name, builtin) {} CodeAssemblerState::CodeAssemblerState(Isolate* isolate, Zone* zone, int parameter_count, CodeKind kind, - const char* name, - PoisoningMitigationLevel poisoning_level, - Builtin builtin) + const char* name, Builtin builtin) : CodeAssemblerState( isolate, zone, Linkage::GetJSCallDescriptor(zone, false, parameter_count, CallDescriptor::kCanUseRoots), - kind, name, poisoning_level, builtin) {} + kind, name, builtin) {} CodeAssemblerState::CodeAssemblerState(Isolate* isolate, Zone* zone, CallDescriptor* call_descriptor, CodeKind kind, const char* name, - PoisoningMitigationLevel poisoning_level, Builtin builtin) : raw_assembler_(new RawMachineAssembler( isolate, zone->New(zone), call_descriptor, MachineType::PointerRepresentation(), InstructionSelector::SupportedMachineOperatorFlags(), - InstructionSelector::AlignmentRequirements(), poisoning_level)), + InstructionSelector::AlignmentRequirements())), kind_(kind), name_(name), builtin_(builtin), @@ -169,10 +165,6 @@ bool CodeAssembler::Word32ShiftIsSafe() const { return raw_assembler()->machine()->Word32ShiftIsSafe(); } -PoisoningMitigationLevel CodeAssembler::poisoning_level() const { - return raw_assembler()->poisoning_level(); -} - // static Handle CodeAssembler::GenerateCode( CodeAssemblerState* state, const AssemblerOptions& options, @@ -187,7 +179,7 @@ Handle CodeAssembler::GenerateCode( code = Pipeline::GenerateCodeForCodeStub( rasm->isolate(), rasm->call_descriptor(), graph, state->jsgraph_, rasm->source_positions(), state->kind_, state->name_, - state->builtin_, rasm->poisoning_level(), options, profile_data) + state->builtin_, options, profile_data) .ToHandleChecked(); state->code_generated_ = true; @@ -565,15 +557,6 @@ TNode CodeAssembler::LoadParentFramePointer() { return UncheckedCast(raw_assembler()->LoadParentFramePointer()); } -TNode CodeAssembler::TaggedPoisonOnSpeculation(TNode value) { - return UncheckedCast( - raw_assembler()->TaggedPoisonOnSpeculation(value)); -} - -TNode CodeAssembler::WordPoisonOnSpeculation(TNode value) { - return UncheckedCast(raw_assembler()->WordPoisonOnSpeculation(value)); -} - #define DEFINE_CODE_ASSEMBLER_BINARY_OP(name, ResType, Arg1Type, Arg2Type) \ TNode CodeAssembler::name(TNode a, TNode b) { \ return UncheckedCast(raw_assembler()->name(a, b)); \ @@ -677,27 +660,23 @@ TNode CodeAssembler::TruncateFloat32ToInt32(TNode value) { CODE_ASSEMBLER_UNARY_OP_LIST(DEFINE_CODE_ASSEMBLER_UNARY_OP) #undef DEFINE_CODE_ASSEMBLER_UNARY_OP -Node* CodeAssembler::Load(MachineType type, Node* base, - LoadSensitivity needs_poisoning) { - return raw_assembler()->Load(type, base, needs_poisoning); +Node* CodeAssembler::Load(MachineType type, Node* base) { + return raw_assembler()->Load(type, base); } -Node* CodeAssembler::Load(MachineType type, Node* base, Node* offset, - LoadSensitivity needs_poisoning) { - return raw_assembler()->Load(type, base, offset, needs_poisoning); +Node* CodeAssembler::Load(MachineType type, Node* base, Node* offset) { + return raw_assembler()->Load(type, base, offset); } -TNode CodeAssembler::LoadFullTagged(Node* base, - LoadSensitivity needs_poisoning) { - return BitcastWordToTagged(Load(base, needs_poisoning)); +TNode CodeAssembler::LoadFullTagged(Node* base) { + return BitcastWordToTagged(Load(base)); } -TNode CodeAssembler::LoadFullTagged(Node* base, TNode offset, - LoadSensitivity needs_poisoning) { +TNode CodeAssembler::LoadFullTagged(Node* base, TNode offset) { // Please use LoadFromObject(MachineType::MapInHeader(), object, // IntPtrConstant(-kHeapObjectTag)) instead. DCHECK(!raw_assembler()->IsMapOffsetConstantMinusTag(offset)); - return BitcastWordToTagged(Load(base, offset, needs_poisoning)); + return BitcastWordToTagged(Load(base, offset)); } Node* CodeAssembler::AtomicLoad(MachineType type, TNode base, diff --git a/deps/v8/src/compiler/code-assembler.h b/deps/v8/src/compiler/code-assembler.h index 0e6872aa66e22f..35d860db22c82d 100644 --- a/deps/v8/src/compiler/code-assembler.h +++ b/deps/v8/src/compiler/code-assembler.h @@ -725,32 +725,22 @@ class V8_EXPORT_PRIVATE CodeAssembler { TNode LoadFramePointer(); TNode LoadParentFramePointer(); - // Poison |value| on speculative paths. - TNode TaggedPoisonOnSpeculation(TNode value); - TNode WordPoisonOnSpeculation(TNode value); - // Load raw memory location. - Node* Load(MachineType type, Node* base, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe); + Node* Load(MachineType type, Node* base); template TNode Load(MachineType type, TNode> base) { DCHECK( IsSubtype(type.representation(), MachineRepresentationOf::value)); return UncheckedCast(Load(type, static_cast(base))); } - Node* Load(MachineType type, Node* base, Node* offset, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe); + Node* Load(MachineType type, Node* base, Node* offset); template - TNode Load(Node* base, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { - return UncheckedCast( - Load(MachineTypeOf::value, base, needs_poisoning)); + TNode Load(Node* base) { + return UncheckedCast(Load(MachineTypeOf::value, base)); } template - TNode Load(Node* base, TNode offset, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { - return UncheckedCast( - Load(MachineTypeOf::value, base, offset, needs_poisoning)); + TNode Load(Node* base, TNode offset) { + return UncheckedCast(Load(MachineTypeOf::value, base, offset)); } template TNode AtomicLoad(TNode base, TNode offset) { @@ -761,11 +751,8 @@ class V8_EXPORT_PRIVATE CodeAssembler { TNode AtomicLoad64(TNode base, TNode offset); // Load uncompressed tagged value from (most likely off JS heap) memory // location. - TNode LoadFullTagged( - Node* base, LoadSensitivity needs_poisoning = LoadSensitivity::kSafe); - TNode LoadFullTagged( - Node* base, TNode offset, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe); + TNode LoadFullTagged(Node* base); + TNode LoadFullTagged(Node* base, TNode offset); Node* LoadFromObject(MachineType type, TNode object, TNode offset); @@ -1312,7 +1299,6 @@ class V8_EXPORT_PRIVATE CodeAssembler { void UnregisterCallGenerationCallbacks(); bool Word32ShiftIsSafe() const; - PoisoningMitigationLevel poisoning_level() const; bool IsJSFunctionCall() const; @@ -1595,13 +1581,11 @@ class V8_EXPORT_PRIVATE CodeAssemblerState { // TODO(rmcilroy): move result_size to the CallInterfaceDescriptor. CodeAssemblerState(Isolate* isolate, Zone* zone, const CallInterfaceDescriptor& descriptor, CodeKind kind, - const char* name, PoisoningMitigationLevel poisoning_level, - Builtin builtin = Builtin::kNoBuiltinId); + const char* name, Builtin builtin = Builtin::kNoBuiltinId); // Create with JSCall linkage. CodeAssemblerState(Isolate* isolate, Zone* zone, int parameter_count, CodeKind kind, const char* name, - PoisoningMitigationLevel poisoning_level, Builtin builtin = Builtin::kNoBuiltinId); ~CodeAssemblerState(); @@ -1628,8 +1612,7 @@ class V8_EXPORT_PRIVATE CodeAssemblerState { CodeAssemblerState(Isolate* isolate, Zone* zone, CallDescriptor* call_descriptor, CodeKind kind, - const char* name, PoisoningMitigationLevel poisoning_level, - Builtin builtin); + const char* name, Builtin builtin); void PushExceptionHandler(CodeAssemblerExceptionHandlerLabel* label); void PopExceptionHandler(); diff --git a/deps/v8/src/compiler/common-operator.cc b/deps/v8/src/compiler/common-operator.cc index b370a673b96850..329ccc7e86ddae 100644 --- a/deps/v8/src/compiler/common-operator.cc +++ b/deps/v8/src/compiler/common-operator.cc @@ -28,18 +28,6 @@ std::ostream& operator<<(std::ostream& os, BranchHint hint) { UNREACHABLE(); } -std::ostream& operator<<(std::ostream& os, IsSafetyCheck is_safety_check) { - switch (is_safety_check) { - case IsSafetyCheck::kCriticalSafetyCheck: - return os << "CriticalSafetyCheck"; - case IsSafetyCheck::kSafetyCheck: - return os << "SafetyCheck"; - case IsSafetyCheck::kNoSafetyCheck: - return os << "NoSafetyCheck"; - } - UNREACHABLE(); -} - std::ostream& operator<<(std::ostream& os, TrapId trap_id) { switch (trap_id) { #define TRAP_CASE(Name) \ @@ -59,22 +47,12 @@ TrapId TrapIdOf(const Operator* const op) { return OpParameter(op); } -std::ostream& operator<<(std::ostream& os, BranchOperatorInfo info) { - return os << info.hint << ", " << info.is_safety_check; -} - -const BranchOperatorInfo& BranchOperatorInfoOf(const Operator* const op) { - DCHECK_EQ(IrOpcode::kBranch, op->opcode()); - return OpParameter(op); -} - BranchHint BranchHintOf(const Operator* const op) { switch (op->opcode()) { - case IrOpcode::kBranch: - return BranchOperatorInfoOf(op).hint; case IrOpcode::kIfValue: return IfValueParametersOf(op).hint(); case IrOpcode::kIfDefault: + case IrOpcode::kBranch: return OpParameter(op); default: UNREACHABLE(); @@ -90,8 +68,7 @@ int ValueInputCountOfReturn(Operator const* const op) { bool operator==(DeoptimizeParameters lhs, DeoptimizeParameters rhs) { return lhs.kind() == rhs.kind() && lhs.reason() == rhs.reason() && - lhs.feedback() == rhs.feedback() && - lhs.is_safety_check() == rhs.is_safety_check(); + lhs.feedback() == rhs.feedback(); } bool operator!=(DeoptimizeParameters lhs, DeoptimizeParameters rhs) { @@ -100,13 +77,11 @@ bool operator!=(DeoptimizeParameters lhs, DeoptimizeParameters rhs) { size_t hash_value(DeoptimizeParameters p) { FeedbackSource::Hash feebdack_hash; - return base::hash_combine(p.kind(), p.reason(), feebdack_hash(p.feedback()), - p.is_safety_check()); + return base::hash_combine(p.kind(), p.reason(), feebdack_hash(p.feedback())); } std::ostream& operator<<(std::ostream& os, DeoptimizeParameters p) { - return os << p.kind() << ", " << p.reason() << ", " << p.is_safety_check() - << ", " << p.feedback(); + return os << p.kind() << ", " << p.reason() << ", " << p.feedback(); } DeoptimizeParameters const& DeoptimizeParametersOf(Operator const* const op) { @@ -117,32 +92,6 @@ DeoptimizeParameters const& DeoptimizeParametersOf(Operator const* const op) { return OpParameter(op); } -IsSafetyCheck IsSafetyCheckOf(const Operator* op) { - if (op->opcode() == IrOpcode::kBranch) { - return BranchOperatorInfoOf(op).is_safety_check; - } - return DeoptimizeParametersOf(op).is_safety_check(); -} - -const Operator* CommonOperatorBuilder::MarkAsSafetyCheck( - const Operator* op, IsSafetyCheck safety_check) { - if (op->opcode() == IrOpcode::kBranch) { - BranchOperatorInfo info = BranchOperatorInfoOf(op); - if (info.is_safety_check == safety_check) return op; - return Branch(info.hint, safety_check); - } - DeoptimizeParameters p = DeoptimizeParametersOf(op); - if (p.is_safety_check() == safety_check) return op; - switch (op->opcode()) { - case IrOpcode::kDeoptimizeIf: - return DeoptimizeIf(p.kind(), p.reason(), p.feedback(), safety_check); - case IrOpcode::kDeoptimizeUnless: - return DeoptimizeUnless(p.kind(), p.reason(), p.feedback(), safety_check); - default: - UNREACHABLE(); - } -} - const Operator* CommonOperatorBuilder::DelayedStringConstant( const StringConstantBase* str) { return zone()->New>( @@ -478,16 +427,10 @@ IfValueParameters const& IfValueParametersOf(const Operator* op) { #define CACHED_LOOP_EXIT_VALUE_LIST(V) V(kTagged) -#define CACHED_BRANCH_LIST(V) \ - V(None, CriticalSafetyCheck) \ - V(True, CriticalSafetyCheck) \ - V(False, CriticalSafetyCheck) \ - V(None, SafetyCheck) \ - V(True, SafetyCheck) \ - V(False, SafetyCheck) \ - V(None, NoSafetyCheck) \ - V(True, NoSafetyCheck) \ - V(False, NoSafetyCheck) +#define CACHED_BRANCH_LIST(V) \ + V(None) \ + V(True) \ + V(False) #define CACHED_RETURN_LIST(V) \ V(1) \ @@ -541,28 +484,22 @@ IfValueParameters const& IfValueParametersOf(const Operator* op) { V(Soft, InsufficientTypeFeedbackForGenericKeyedAccess) \ V(Soft, InsufficientTypeFeedbackForGenericNamedAccess) -#define CACHED_DEOPTIMIZE_IF_LIST(V) \ - V(Eager, DivisionByZero, NoSafetyCheck) \ - V(Eager, DivisionByZero, SafetyCheck) \ - V(Eager, Hole, NoSafetyCheck) \ - V(Eager, Hole, SafetyCheck) \ - V(Eager, MinusZero, NoSafetyCheck) \ - V(Eager, MinusZero, SafetyCheck) \ - V(Eager, Overflow, NoSafetyCheck) \ - V(Eager, Overflow, SafetyCheck) \ - V(Eager, Smi, SafetyCheck) - -#define CACHED_DEOPTIMIZE_UNLESS_LIST(V) \ - V(Eager, LostPrecision, NoSafetyCheck) \ - V(Eager, LostPrecision, SafetyCheck) \ - V(Eager, LostPrecisionOrNaN, NoSafetyCheck) \ - V(Eager, LostPrecisionOrNaN, SafetyCheck) \ - V(Eager, NotAHeapNumber, SafetyCheck) \ - V(Eager, NotANumberOrOddball, SafetyCheck) \ - V(Eager, NotASmi, SafetyCheck) \ - V(Eager, OutOfBounds, SafetyCheck) \ - V(Eager, WrongInstanceType, SafetyCheck) \ - V(Eager, WrongMap, SafetyCheck) +#define CACHED_DEOPTIMIZE_IF_LIST(V) \ + V(Eager, DivisionByZero) \ + V(Eager, Hole) \ + V(Eager, MinusZero) \ + V(Eager, Overflow) \ + V(Eager, Smi) + +#define CACHED_DEOPTIMIZE_UNLESS_LIST(V) \ + V(Eager, LostPrecision) \ + V(Eager, LostPrecisionOrNaN) \ + V(Eager, NotAHeapNumber) \ + V(Eager, NotANumberOrOddball) \ + V(Eager, NotASmi) \ + V(Eager, OutOfBounds) \ + V(Eager, WrongInstanceType) \ + V(Eager, WrongMap) #define CACHED_DYNAMIC_CHECK_MAPS_LIST(V) \ V(DynamicCheckMaps) \ @@ -668,18 +605,17 @@ struct CommonOperatorGlobalCache final { CACHED_RETURN_LIST(CACHED_RETURN) #undef CACHED_RETURN - template - struct BranchOperator final : public Operator1 { + template + struct BranchOperator final : public Operator1 { BranchOperator() - : Operator1( // -- - IrOpcode::kBranch, Operator::kKontrol, // opcode - "Branch", // name - 1, 0, 1, 0, 0, 2, // counts - BranchOperatorInfo{hint, is_safety_check}) {} // parameter + : Operator1( // -- + IrOpcode::kBranch, Operator::kKontrol, // opcode + "Branch", // name + 1, 0, 1, 0, 0, 2, // counts + hint) {} // parameter }; -#define CACHED_BRANCH(Hint, IsCheck) \ - BranchOperator \ - kBranch##Hint##IsCheck##Operator; +#define CACHED_BRANCH(Hint) \ + BranchOperator kBranch##Hint##Operator; CACHED_BRANCH_LIST(CACHED_BRANCH) #undef CACHED_BRANCH @@ -757,8 +693,7 @@ struct CommonOperatorGlobalCache final { Operator::kFoldable | Operator::kNoThrow, // properties "Deoptimize", // name 1, 1, 1, 0, 0, 1, // counts - DeoptimizeParameters(kKind, kReason, FeedbackSource(), - IsSafetyCheck::kNoSafetyCheck)) {} + DeoptimizeParameters(kKind, kReason, FeedbackSource())) {} }; #define CACHED_DEOPTIMIZE(Kind, Reason) \ DeoptimizeOperator \ @@ -766,8 +701,7 @@ struct CommonOperatorGlobalCache final { CACHED_DEOPTIMIZE_LIST(CACHED_DEOPTIMIZE) #undef CACHED_DEOPTIMIZE - template + template struct DeoptimizeIfOperator final : public Operator1 { DeoptimizeIfOperator() : Operator1( // -- @@ -775,18 +709,15 @@ struct CommonOperatorGlobalCache final { Operator::kFoldable | Operator::kNoThrow, // properties "DeoptimizeIf", // name 2, 1, 1, 0, 1, 1, // counts - DeoptimizeParameters(kKind, kReason, FeedbackSource(), - is_safety_check)) {} + DeoptimizeParameters(kKind, kReason, FeedbackSource())) {} }; -#define CACHED_DEOPTIMIZE_IF(Kind, Reason, IsCheck) \ - DeoptimizeIfOperator \ - kDeoptimizeIf##Kind##Reason##IsCheck##Operator; +#define CACHED_DEOPTIMIZE_IF(Kind, Reason) \ + DeoptimizeIfOperator \ + kDeoptimizeIf##Kind##Reason##Operator; CACHED_DEOPTIMIZE_IF_LIST(CACHED_DEOPTIMIZE_IF) #undef CACHED_DEOPTIMIZE_IF - template + template struct DeoptimizeUnlessOperator final : public Operator1 { DeoptimizeUnlessOperator() @@ -795,14 +726,12 @@ struct CommonOperatorGlobalCache final { Operator::kFoldable | Operator::kNoThrow, // properties "DeoptimizeUnless", // name 2, 1, 1, 0, 1, 1, // counts - DeoptimizeParameters(kKind, kReason, FeedbackSource(), - is_safety_check)) {} + DeoptimizeParameters(kKind, kReason, FeedbackSource())) {} }; -#define CACHED_DEOPTIMIZE_UNLESS(Kind, Reason, IsCheck) \ +#define CACHED_DEOPTIMIZE_UNLESS(Kind, Reason) \ DeoptimizeUnlessOperator \ - kDeoptimizeUnless##Kind##Reason##IsCheck##Operator; + DeoptimizeReason::k##Reason> \ + kDeoptimizeUnless##Kind##Reason##Operator; CACHED_DEOPTIMIZE_UNLESS_LIST(CACHED_DEOPTIMIZE_UNLESS) #undef CACHED_DEOPTIMIZE_UNLESS @@ -815,8 +744,7 @@ struct CommonOperatorGlobalCache final { "DynamicCheckMapsWithDeoptUnless", // name 6, 1, 1, 0, 1, 1, // counts DeoptimizeParameters(DeoptimizeKind::kEagerWithResume, kReason, - FeedbackSource(), - IsSafetyCheck::kCriticalSafetyCheck)) {} + FeedbackSource())) {} }; #define CACHED_DYNAMIC_CHECK_MAPS(Reason) \ DynamicMapCheckOperator k##Reason##Operator; @@ -985,12 +913,10 @@ const Operator* CommonOperatorBuilder::StaticAssert(const char* source) { 1, 0, source); } -const Operator* CommonOperatorBuilder::Branch(BranchHint hint, - IsSafetyCheck is_safety_check) { -#define CACHED_BRANCH(Hint, IsCheck) \ - if (hint == BranchHint::k##Hint && \ - is_safety_check == IsSafetyCheck::k##IsCheck) { \ - return &cache_.kBranch##Hint##IsCheck##Operator; \ +const Operator* CommonOperatorBuilder::Branch(BranchHint hint) { +#define CACHED_BRANCH(Hint) \ + if (hint == BranchHint::k##Hint) { \ + return &cache_.kBranch##Hint##Operator; \ } CACHED_BRANCH_LIST(CACHED_BRANCH) #undef CACHED_BRANCH @@ -1008,8 +934,7 @@ const Operator* CommonOperatorBuilder::Deoptimize( CACHED_DEOPTIMIZE_LIST(CACHED_DEOPTIMIZE) #undef CACHED_DEOPTIMIZE // Uncached - DeoptimizeParameters parameter(kind, reason, feedback, - IsSafetyCheck::kNoSafetyCheck); + DeoptimizeParameters parameter(kind, reason, feedback); return zone()->New>( // -- IrOpcode::kDeoptimize, // opcodes Operator::kFoldable | Operator::kNoThrow, // properties @@ -1020,17 +945,16 @@ const Operator* CommonOperatorBuilder::Deoptimize( const Operator* CommonOperatorBuilder::DeoptimizeIf( DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, IsSafetyCheck is_safety_check) { -#define CACHED_DEOPTIMIZE_IF(Kind, Reason, IsCheck) \ - if (kind == DeoptimizeKind::k##Kind && \ - reason == DeoptimizeReason::k##Reason && \ - is_safety_check == IsSafetyCheck::k##IsCheck && !feedback.IsValid()) { \ - return &cache_.kDeoptimizeIf##Kind##Reason##IsCheck##Operator; \ + FeedbackSource const& feedback) { +#define CACHED_DEOPTIMIZE_IF(Kind, Reason) \ + if (kind == DeoptimizeKind::k##Kind && \ + reason == DeoptimizeReason::k##Reason && !feedback.IsValid()) { \ + return &cache_.kDeoptimizeIf##Kind##Reason##Operator; \ } CACHED_DEOPTIMIZE_IF_LIST(CACHED_DEOPTIMIZE_IF) #undef CACHED_DEOPTIMIZE_IF // Uncached - DeoptimizeParameters parameter(kind, reason, feedback, is_safety_check); + DeoptimizeParameters parameter(kind, reason, feedback); return zone()->New>( // -- IrOpcode::kDeoptimizeIf, // opcode Operator::kFoldable | Operator::kNoThrow, // properties @@ -1041,17 +965,16 @@ const Operator* CommonOperatorBuilder::DeoptimizeIf( const Operator* CommonOperatorBuilder::DeoptimizeUnless( DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, IsSafetyCheck is_safety_check) { -#define CACHED_DEOPTIMIZE_UNLESS(Kind, Reason, IsCheck) \ - if (kind == DeoptimizeKind::k##Kind && \ - reason == DeoptimizeReason::k##Reason && \ - is_safety_check == IsSafetyCheck::k##IsCheck && !feedback.IsValid()) { \ - return &cache_.kDeoptimizeUnless##Kind##Reason##IsCheck##Operator; \ + FeedbackSource const& feedback) { +#define CACHED_DEOPTIMIZE_UNLESS(Kind, Reason) \ + if (kind == DeoptimizeKind::k##Kind && \ + reason == DeoptimizeReason::k##Reason && !feedback.IsValid()) { \ + return &cache_.kDeoptimizeUnless##Kind##Reason##Operator; \ } CACHED_DEOPTIMIZE_UNLESS_LIST(CACHED_DEOPTIMIZE_UNLESS) #undef CACHED_DEOPTIMIZE_UNLESS // Uncached - DeoptimizeParameters parameter(kind, reason, feedback, is_safety_check); + DeoptimizeParameters parameter(kind, reason, feedback); return zone()->New>( // -- IrOpcode::kDeoptimizeUnless, // opcode Operator::kFoldable | Operator::kNoThrow, // properties @@ -1664,17 +1587,6 @@ const FrameStateInfo& FrameStateInfoOf(const Operator* op) { return OpParameter(op); } -IsSafetyCheck CombineSafetyChecks(IsSafetyCheck a, IsSafetyCheck b) { - if (a == IsSafetyCheck::kCriticalSafetyCheck || - b == IsSafetyCheck::kCriticalSafetyCheck) { - return IsSafetyCheck::kCriticalSafetyCheck; - } - if (a == IsSafetyCheck::kSafetyCheck || b == IsSafetyCheck::kSafetyCheck) { - return IsSafetyCheck::kSafetyCheck; - } - return IsSafetyCheck::kNoSafetyCheck; -} - #undef COMMON_CACHED_OP_LIST #undef CACHED_BRANCH_LIST #undef CACHED_RETURN_LIST diff --git a/deps/v8/src/compiler/common-operator.h b/deps/v8/src/compiler/common-operator.h index fa49d3b9920157..f691c1fbf46921 100644 --- a/deps/v8/src/compiler/common-operator.h +++ b/deps/v8/src/compiler/common-operator.h @@ -51,20 +51,6 @@ inline size_t hash_value(BranchHint hint) { return static_cast(hint); } V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, BranchHint); -enum class IsSafetyCheck : uint8_t { - kCriticalSafetyCheck, - kSafetyCheck, - kNoSafetyCheck -}; - -// Get the more critical safety check of the two arguments. -IsSafetyCheck CombineSafetyChecks(IsSafetyCheck, IsSafetyCheck); - -V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, IsSafetyCheck); -inline size_t hash_value(IsSafetyCheck is_safety_check) { - return static_cast(is_safety_check); -} - enum class TrapId : uint32_t { #define DEF_ENUM(Name, ...) k##Name, FOREACH_WASM_TRAPREASON(DEF_ENUM) @@ -78,24 +64,6 @@ std::ostream& operator<<(std::ostream&, TrapId trap_id); TrapId TrapIdOf(const Operator* const op); -struct BranchOperatorInfo { - BranchHint hint; - IsSafetyCheck is_safety_check; -}; - -inline size_t hash_value(const BranchOperatorInfo& info) { - return base::hash_combine(info.hint, info.is_safety_check); -} - -V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, BranchOperatorInfo); - -inline bool operator==(const BranchOperatorInfo& a, - const BranchOperatorInfo& b) { - return a.hint == b.hint && a.is_safety_check == b.is_safety_check; -} - -V8_EXPORT_PRIVATE const BranchOperatorInfo& BranchOperatorInfoOf( - const Operator* const) V8_WARN_UNUSED_RESULT; V8_EXPORT_PRIVATE BranchHint BranchHintOf(const Operator* const) V8_WARN_UNUSED_RESULT; @@ -106,23 +74,17 @@ int ValueInputCountOfReturn(Operator const* const op); class DeoptimizeParameters final { public: DeoptimizeParameters(DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, - IsSafetyCheck is_safety_check) - : kind_(kind), - reason_(reason), - feedback_(feedback), - is_safety_check_(is_safety_check) {} + FeedbackSource const& feedback) + : kind_(kind), reason_(reason), feedback_(feedback) {} DeoptimizeKind kind() const { return kind_; } DeoptimizeReason reason() const { return reason_; } const FeedbackSource& feedback() const { return feedback_; } - IsSafetyCheck is_safety_check() const { return is_safety_check_; } private: DeoptimizeKind const kind_; DeoptimizeReason const reason_; FeedbackSource const feedback_; - IsSafetyCheck is_safety_check_; }; bool operator==(DeoptimizeParameters, DeoptimizeParameters); @@ -135,8 +97,6 @@ std::ostream& operator<<(std::ostream&, DeoptimizeParameters p); DeoptimizeParameters const& DeoptimizeParametersOf(Operator const* const) V8_WARN_UNUSED_RESULT; -IsSafetyCheck IsSafetyCheckOf(const Operator* op) V8_WARN_UNUSED_RESULT; - class SelectParameters final { public: explicit SelectParameters(MachineRepresentation representation, @@ -479,8 +439,7 @@ class V8_EXPORT_PRIVATE CommonOperatorBuilder final const Operator* Unreachable(); const Operator* StaticAssert(const char* source); const Operator* End(size_t control_input_count); - const Operator* Branch(BranchHint = BranchHint::kNone, - IsSafetyCheck = IsSafetyCheck::kSafetyCheck); + const Operator* Branch(BranchHint = BranchHint::kNone); const Operator* IfTrue(); const Operator* IfFalse(); const Operator* IfSuccess(); @@ -492,14 +451,10 @@ class V8_EXPORT_PRIVATE CommonOperatorBuilder final const Operator* Throw(); const Operator* Deoptimize(DeoptimizeKind kind, DeoptimizeReason reason, FeedbackSource const& feedback); - const Operator* DeoptimizeIf( - DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck); - const Operator* DeoptimizeUnless( - DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck); + const Operator* DeoptimizeIf(DeoptimizeKind kind, DeoptimizeReason reason, + FeedbackSource const& feedback); + const Operator* DeoptimizeUnless(DeoptimizeKind kind, DeoptimizeReason reason, + FeedbackSource const& feedback); // DynamicCheckMapsWithDeoptUnless will call the dynamic map check builtin if // the condition is false, which may then either deoptimize or resume // execution. @@ -577,9 +532,6 @@ class V8_EXPORT_PRIVATE CommonOperatorBuilder final const wasm::FunctionSig* signature); #endif // V8_ENABLE_WEBASSEMBLY - const Operator* MarkAsSafetyCheck(const Operator* op, - IsSafetyCheck safety_check); - const Operator* DelayedStringConstant(const StringConstantBase* str); private: diff --git a/deps/v8/src/compiler/decompression-optimizer.cc b/deps/v8/src/compiler/decompression-optimizer.cc index 79e77fcee65e73..c0068489f75fc1 100644 --- a/deps/v8/src/compiler/decompression-optimizer.cc +++ b/deps/v8/src/compiler/decompression-optimizer.cc @@ -15,8 +15,7 @@ namespace { bool IsMachineLoad(Node* const node) { const IrOpcode::Value opcode = node->opcode(); - return opcode == IrOpcode::kLoad || opcode == IrOpcode::kPoisonedLoad || - opcode == IrOpcode::kProtectedLoad || + return opcode == IrOpcode::kLoad || opcode == IrOpcode::kProtectedLoad || opcode == IrOpcode::kUnalignedLoad || opcode == IrOpcode::kLoadImmutable; } @@ -212,10 +211,6 @@ void DecompressionOptimizer::ChangeLoad(Node* const node) { NodeProperties::ChangeOp(node, machine()->LoadImmutable(compressed_load_rep)); break; - case IrOpcode::kPoisonedLoad: - NodeProperties::ChangeOp(node, - machine()->PoisonedLoad(compressed_load_rep)); - break; case IrOpcode::kProtectedLoad: NodeProperties::ChangeOp(node, machine()->ProtectedLoad(compressed_load_rep)); diff --git a/deps/v8/src/compiler/effect-control-linearizer.cc b/deps/v8/src/compiler/effect-control-linearizer.cc index d7a0ca62dd2110..a6bb7074b033f8 100644 --- a/deps/v8/src/compiler/effect-control-linearizer.cc +++ b/deps/v8/src/compiler/effect-control-linearizer.cc @@ -36,7 +36,6 @@ namespace internal { namespace compiler { enum class MaintainSchedule { kMaintain, kDiscard }; -enum class MaskArrayIndexEnable { kDoNotMaskArrayIndex, kMaskArrayIndex }; class EffectControlLinearizer { public: @@ -44,13 +43,11 @@ class EffectControlLinearizer { JSGraphAssembler* graph_assembler, Zone* temp_zone, SourcePositionTable* source_positions, NodeOriginTable* node_origins, - MaskArrayIndexEnable mask_array_index, MaintainSchedule maintain_schedule, JSHeapBroker* broker) : js_graph_(js_graph), schedule_(schedule), temp_zone_(temp_zone), - mask_array_index_(mask_array_index), maintain_schedule_(maintain_schedule), source_positions_(source_positions), node_origins_(node_origins), @@ -80,7 +77,6 @@ class EffectControlLinearizer { Node* LowerChangeTaggedToUint32(Node* node); Node* LowerChangeTaggedToInt64(Node* node); Node* LowerChangeTaggedToTaggedSigned(Node* node); - Node* LowerPoisonIndex(Node* node); Node* LowerCheckInternalizedString(Node* node, Node* frame_state); void LowerCheckMaps(Node* node, Node* frame_state); void LowerDynamicCheckMaps(Node* node, Node* frame_state); @@ -338,7 +334,6 @@ class EffectControlLinearizer { JSGraph* js_graph_; Schedule* schedule_; Zone* temp_zone_; - MaskArrayIndexEnable mask_array_index_; MaintainSchedule maintain_schedule_; RegionObservability region_observability_ = RegionObservability::kObservable; SourcePositionTable* source_positions_; @@ -966,9 +961,6 @@ bool EffectControlLinearizer::TryWireInStateEffect(Node* node, case IrOpcode::kTruncateTaggedToFloat64: result = LowerTruncateTaggedToFloat64(node); break; - case IrOpcode::kPoisonIndex: - result = LowerPoisonIndex(node); - break; case IrOpcode::kCheckClosure: result = LowerCheckClosure(node, frame_state); break; @@ -1788,14 +1780,6 @@ Node* EffectControlLinearizer::LowerTruncateTaggedToFloat64(Node* node) { return done.PhiAt(0); } -Node* EffectControlLinearizer::LowerPoisonIndex(Node* node) { - Node* index = node->InputAt(0); - if (mask_array_index_ == MaskArrayIndexEnable::kMaskArrayIndex) { - index = __ Word32PoisonOnSpeculation(index); - } - return index; -} - Node* EffectControlLinearizer::LowerCheckClosure(Node* node, Node* frame_state) { Handle feedback_cell = FeedbackCellOf(node->op()); @@ -1831,8 +1815,7 @@ void EffectControlLinearizer::MigrateInstanceOrDeopt( __ Word32And(bitfield3, __ Int32Constant(Map::Bits3::IsDeprecatedBit::kMask)), __ Int32Constant(0)); - __ DeoptimizeIf(reason, feedback_source, is_not_deprecated, frame_state, - IsSafetyCheck::kCriticalSafetyCheck); + __ DeoptimizeIf(reason, feedback_source, is_not_deprecated, frame_state); Operator::Properties properties = Operator::kNoDeopt | Operator::kNoThrow; Runtime::FunctionId id = Runtime::kTryMigrateInstance; auto call_descriptor = Linkage::GetRuntimeCallDescriptor( @@ -1842,7 +1825,7 @@ void EffectControlLinearizer::MigrateInstanceOrDeopt( __ Int32Constant(1), __ NoContextConstant()); Node* check = ObjectIsSmi(result); __ DeoptimizeIf(DeoptimizeReason::kInstanceMigrationFailed, feedback_source, - check, frame_state, IsSafetyCheck::kCriticalSafetyCheck); + check, frame_state); } void EffectControlLinearizer::LowerCheckMaps(Node* node, Node* frame_state) { @@ -1886,7 +1869,7 @@ void EffectControlLinearizer::LowerCheckMaps(Node* node, Node* frame_state) { Node* check = __ TaggedEqual(value_map, map); if (i == map_count - 1) { __ DeoptimizeIfNot(DeoptimizeReason::kWrongMap, p.feedback(), check, - frame_state, IsSafetyCheck::kCriticalSafetyCheck); + frame_state); } else { auto next_map = __ MakeLabel(); __ BranchWithCriticalSafetyCheck(check, &done, &next_map); @@ -1908,7 +1891,7 @@ void EffectControlLinearizer::LowerCheckMaps(Node* node, Node* frame_state) { if (i == map_count - 1) { __ DeoptimizeIfNot(DeoptimizeReason::kWrongMap, p.feedback(), check, - frame_state, IsSafetyCheck::kCriticalSafetyCheck); + frame_state); } else { auto next_map = __ MakeLabel(); __ BranchWithCriticalSafetyCheck(check, &done, &next_map); @@ -2528,8 +2511,8 @@ Node* EffectControlLinearizer::LowerCheckedUint32Bounds(Node* node, Node* check = __ Uint32LessThan(index, limit); if (!(params.flags() & CheckBoundsFlag::kAbortOnOutOfBounds)) { __ DeoptimizeIfNot(DeoptimizeReason::kOutOfBounds, - params.check_parameters().feedback(), check, frame_state, - IsSafetyCheck::kCriticalSafetyCheck); + params.check_parameters().feedback(), check, + frame_state); } else { auto if_abort = __ MakeDeferredLabel(); auto done = __ MakeLabel(); @@ -2574,8 +2557,8 @@ Node* EffectControlLinearizer::LowerCheckedUint64Bounds(Node* node, Node* check = __ Uint64LessThan(index, limit); if (!(params.flags() & CheckBoundsFlag::kAbortOnOutOfBounds)) { __ DeoptimizeIfNot(DeoptimizeReason::kOutOfBounds, - params.check_parameters().feedback(), check, frame_state, - IsSafetyCheck::kCriticalSafetyCheck); + params.check_parameters().feedback(), check, + frame_state); } else { auto if_abort = __ MakeDeferredLabel(); auto done = __ MakeLabel(); @@ -5776,8 +5759,7 @@ Node* EffectControlLinearizer::LowerLoadTypedElement(Node* node) { Node* data_ptr = BuildTypedArrayDataPointer(base, external); // Perform the actual typed element access. - return __ LoadElement(AccessBuilder::ForTypedArrayElement( - array_type, true, LoadSensitivity::kCritical), + return __ LoadElement(AccessBuilder::ForTypedArrayElement(array_type, true), data_ptr, index); } @@ -6796,26 +6778,13 @@ Node* EffectControlLinearizer::BuildIsClearedWeakReference(Node* maybe_object) { #undef __ -namespace { - -MaskArrayIndexEnable MaskArrayForPoisonLevel( - PoisoningMitigationLevel poison_level) { - return (poison_level != PoisoningMitigationLevel::kDontPoison) - ? MaskArrayIndexEnable::kMaskArrayIndex - : MaskArrayIndexEnable::kDoNotMaskArrayIndex; -} - -} // namespace - void LinearizeEffectControl(JSGraph* graph, Schedule* schedule, Zone* temp_zone, SourcePositionTable* source_positions, NodeOriginTable* node_origins, - PoisoningMitigationLevel poison_level, JSHeapBroker* broker) { JSGraphAssembler graph_assembler_(graph, temp_zone, base::nullopt, nullptr); EffectControlLinearizer linearizer(graph, schedule, &graph_assembler_, temp_zone, source_positions, node_origins, - MaskArrayForPoisonLevel(poison_level), MaintainSchedule::kDiscard, broker); linearizer.Run(); } @@ -6824,16 +6793,13 @@ void LowerToMachineSchedule(JSGraph* js_graph, Schedule* schedule, Zone* temp_zone, SourcePositionTable* source_positions, NodeOriginTable* node_origins, - PoisoningMitigationLevel poison_level, JSHeapBroker* broker) { JSGraphAssembler graph_assembler(js_graph, temp_zone, base::nullopt, schedule); EffectControlLinearizer linearizer(js_graph, schedule, &graph_assembler, temp_zone, source_positions, node_origins, - MaskArrayForPoisonLevel(poison_level), MaintainSchedule::kMaintain, broker); - MemoryLowering memory_lowering(js_graph, temp_zone, &graph_assembler, - poison_level); + MemoryLowering memory_lowering(js_graph, temp_zone, &graph_assembler); SelectLowering select_lowering(&graph_assembler, js_graph->graph()); graph_assembler.AddInlineReducer(&memory_lowering); graph_assembler.AddInlineReducer(&select_lowering); diff --git a/deps/v8/src/compiler/effect-control-linearizer.h b/deps/v8/src/compiler/effect-control-linearizer.h index fca4899263cd43..97467391e2af71 100644 --- a/deps/v8/src/compiler/effect-control-linearizer.h +++ b/deps/v8/src/compiler/effect-control-linearizer.h @@ -26,7 +26,7 @@ class JSHeapBroker; V8_EXPORT_PRIVATE void LinearizeEffectControl( JSGraph* graph, Schedule* schedule, Zone* temp_zone, SourcePositionTable* source_positions, NodeOriginTable* node_origins, - PoisoningMitigationLevel poison_level, JSHeapBroker* broker); + JSHeapBroker* broker); // Performs effect control linearization lowering in addition to machine // lowering, producing a scheduled graph that is ready for instruction @@ -34,7 +34,7 @@ V8_EXPORT_PRIVATE void LinearizeEffectControl( V8_EXPORT_PRIVATE void LowerToMachineSchedule( JSGraph* graph, Schedule* schedule, Zone* temp_zone, SourcePositionTable* source_positions, NodeOriginTable* node_origins, - PoisoningMitigationLevel poison_level, JSHeapBroker* broker); + JSHeapBroker* broker); } // namespace compiler } // namespace internal diff --git a/deps/v8/src/compiler/graph-assembler.cc b/deps/v8/src/compiler/graph-assembler.cc index 26ae88362d8067..6bfd6f8c22356c 100644 --- a/deps/v8/src/compiler/graph-assembler.cc +++ b/deps/v8/src/compiler/graph-assembler.cc @@ -829,46 +829,36 @@ Node* GraphAssembler::BitcastMaybeObjectToWord(Node* value) { effect(), control())); } -Node* GraphAssembler::Word32PoisonOnSpeculation(Node* value) { - return AddNode(graph()->NewNode(machine()->Word32PoisonOnSpeculation(), value, - effect(), control())); -} - Node* GraphAssembler::DeoptimizeIf(DeoptimizeReason reason, FeedbackSource const& feedback, - Node* condition, Node* frame_state, - IsSafetyCheck is_safety_check) { - return AddNode( - graph()->NewNode(common()->DeoptimizeIf(DeoptimizeKind::kEager, reason, - feedback, is_safety_check), - condition, frame_state, effect(), control())); + Node* condition, Node* frame_state) { + return AddNode(graph()->NewNode( + common()->DeoptimizeIf(DeoptimizeKind::kEager, reason, feedback), + condition, frame_state, effect(), control())); } Node* GraphAssembler::DeoptimizeIf(DeoptimizeKind kind, DeoptimizeReason reason, FeedbackSource const& feedback, - Node* condition, Node* frame_state, - IsSafetyCheck is_safety_check) { - return AddNode(graph()->NewNode( - common()->DeoptimizeIf(kind, reason, feedback, is_safety_check), - condition, frame_state, effect(), control())); + Node* condition, Node* frame_state) { + return AddNode( + graph()->NewNode(common()->DeoptimizeIf(kind, reason, feedback), + condition, frame_state, effect(), control())); } Node* GraphAssembler::DeoptimizeIfNot(DeoptimizeKind kind, DeoptimizeReason reason, FeedbackSource const& feedback, - Node* condition, Node* frame_state, - IsSafetyCheck is_safety_check) { - return AddNode(graph()->NewNode( - common()->DeoptimizeUnless(kind, reason, feedback, is_safety_check), - condition, frame_state, effect(), control())); + Node* condition, Node* frame_state) { + return AddNode( + graph()->NewNode(common()->DeoptimizeUnless(kind, reason, feedback), + condition, frame_state, effect(), control())); } Node* GraphAssembler::DeoptimizeIfNot(DeoptimizeReason reason, FeedbackSource const& feedback, - Node* condition, Node* frame_state, - IsSafetyCheck is_safety_check) { + Node* condition, Node* frame_state) { return DeoptimizeIfNot(DeoptimizeKind::kEager, reason, feedback, condition, - frame_state, is_safety_check); + frame_state); } Node* GraphAssembler::DynamicCheckMapsWithDeoptUnless(Node* condition, @@ -924,8 +914,7 @@ void GraphAssembler::BranchWithCriticalSafetyCheck( hint = if_false->IsDeferred() ? BranchHint::kTrue : BranchHint::kFalse; } - BranchImpl(condition, if_true, if_false, hint, - IsSafetyCheck::kCriticalSafetyCheck); + BranchImpl(condition, if_true, if_false, hint); } void GraphAssembler::RecordBranchInBlockUpdater(Node* branch, diff --git a/deps/v8/src/compiler/graph-assembler.h b/deps/v8/src/compiler/graph-assembler.h index 5efe6dd9c3c3dd..c9ddd63e719254 100644 --- a/deps/v8/src/compiler/graph-assembler.h +++ b/deps/v8/src/compiler/graph-assembler.h @@ -330,24 +330,16 @@ class V8_EXPORT_PRIVATE GraphAssembler { Node* Retain(Node* buffer); Node* UnsafePointerAdd(Node* base, Node* external); - Node* Word32PoisonOnSpeculation(Node* value); - - Node* DeoptimizeIf( - DeoptimizeReason reason, FeedbackSource const& feedback, Node* condition, - Node* frame_state, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck); - Node* DeoptimizeIf( - DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, Node* condition, Node* frame_state, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck); - Node* DeoptimizeIfNot( - DeoptimizeKind kind, DeoptimizeReason reason, - FeedbackSource const& feedback, Node* condition, Node* frame_state, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck); - Node* DeoptimizeIfNot( - DeoptimizeReason reason, FeedbackSource const& feedback, Node* condition, - Node* frame_state, - IsSafetyCheck is_safety_check = IsSafetyCheck::kSafetyCheck); + Node* DeoptimizeIf(DeoptimizeReason reason, FeedbackSource const& feedback, + Node* condition, Node* frame_state); + Node* DeoptimizeIf(DeoptimizeKind kind, DeoptimizeReason reason, + FeedbackSource const& feedback, Node* condition, + Node* frame_state); + Node* DeoptimizeIfNot(DeoptimizeKind kind, DeoptimizeReason reason, + FeedbackSource const& feedback, Node* condition, + Node* frame_state); + Node* DeoptimizeIfNot(DeoptimizeReason reason, FeedbackSource const& feedback, + Node* condition, Node* frame_state); Node* DynamicCheckMapsWithDeoptUnless(Node* condition, Node* slot_index, Node* map, Node* handler, Node* feedback_vector, @@ -557,7 +549,7 @@ class V8_EXPORT_PRIVATE GraphAssembler { void BranchImpl(Node* condition, GraphAssemblerLabel* if_true, GraphAssemblerLabel* if_false, - BranchHint hint, IsSafetyCheck is_safety_check, Vars...); + BranchHint hint, Vars...); void RecordBranchInBlockUpdater(Node* branch, Node* if_true_control, Node* if_false_control, BasicBlock* if_true_block, @@ -742,8 +734,7 @@ void GraphAssembler::Branch(Node* condition, hint = if_false->IsDeferred() ? BranchHint::kTrue : BranchHint::kFalse; } - BranchImpl(condition, if_true, if_false, hint, IsSafetyCheck::kNoSafetyCheck, - vars...); + BranchImpl(condition, if_true, if_false, hint, vars...); } template @@ -751,20 +742,17 @@ void GraphAssembler::BranchWithHint( Node* condition, GraphAssemblerLabel* if_true, GraphAssemblerLabel* if_false, BranchHint hint, Vars... vars) { - BranchImpl(condition, if_true, if_false, hint, IsSafetyCheck::kNoSafetyCheck, - vars...); + BranchImpl(condition, if_true, if_false, hint, vars...); } template void GraphAssembler::BranchImpl(Node* condition, GraphAssemblerLabel* if_true, GraphAssemblerLabel* if_false, - BranchHint hint, IsSafetyCheck is_safety_check, - Vars... vars) { + BranchHint hint, Vars... vars) { DCHECK_NOT_NULL(control()); - Node* branch = graph()->NewNode(common()->Branch(hint, is_safety_check), - condition, control()); + Node* branch = graph()->NewNode(common()->Branch(hint), condition, control()); Node* if_true_control = control_ = graph()->NewNode(common()->IfTrue(), branch); diff --git a/deps/v8/src/compiler/js-call-reducer.cc b/deps/v8/src/compiler/js-call-reducer.cc index 3dcdc6a33ee2ed..32bdebad493a38 100644 --- a/deps/v8/src/compiler/js-call-reducer.cc +++ b/deps/v8/src/compiler/js-call-reducer.cc @@ -728,8 +728,7 @@ class IteratingArrayBuiltinReducerAssembler : public JSCallReducerAssembler { TNode elements = LoadField(AccessBuilder::ForJSObjectElements(), o); TNode value = LoadElement( - AccessBuilder::ForFixedArrayElement(kind, LoadSensitivity::kCritical), - elements, index); + AccessBuilder::ForFixedArrayElement(kind), elements, index); return std::make_pair(index, value); } @@ -6373,9 +6372,8 @@ Reduction JSCallReducer::ReduceStringPrototypeStringAt( index, receiver_length, effect, control); // Return the character from the {receiver} as single character string. - Node* masked_index = graph()->NewNode(simplified()->PoisonIndex(), index); Node* value = effect = graph()->NewNode(string_access_operator, receiver, - masked_index, effect, control); + index, effect, control); ReplaceWithValue(node, value, effect, control); return Replace(value); @@ -6433,11 +6431,9 @@ Reduction JSCallReducer::ReduceStringPrototypeStartsWith(Node* node) { Node* etrue = effect; Node* vtrue; { - Node* masked_position = graph()->NewNode( - simplified()->PoisonIndex(), unsigned_position); Node* string_first = etrue = graph()->NewNode(simplified()->StringCharCodeAt(), receiver, - masked_position, etrue, if_true); + unsigned_position, etrue, if_true); Node* search_first = jsgraph()->Constant(str.GetFirstChar().value()); @@ -6488,10 +6484,8 @@ Reduction JSCallReducer::ReduceStringPrototypeCharAt(Node* node) { index, receiver_length, effect, control); // Return the character from the {receiver} as single character string. - Node* masked_index = graph()->NewNode(simplified()->PoisonIndex(), index); - Node* value = effect = - graph()->NewNode(simplified()->StringCharCodeAt(), receiver, masked_index, - effect, control); + Node* value = effect = graph()->NewNode(simplified()->StringCharCodeAt(), + receiver, index, effect, control); value = graph()->NewNode(simplified()->StringFromSingleCharCode(), value); ReplaceWithValue(node, value, effect, control); diff --git a/deps/v8/src/compiler/js-create-lowering.cc b/deps/v8/src/compiler/js-create-lowering.cc index 414977eb7db985..2d69b8dfca3f2d 100644 --- a/deps/v8/src/compiler/js-create-lowering.cc +++ b/deps/v8/src/compiler/js-create-lowering.cc @@ -1713,7 +1713,6 @@ base::Optional JSCreateLowering::TryAllocateFastLiteral( Type::Any(), MachineType::AnyTagged(), kFullWriteBarrier, - LoadSensitivity::kUnsafe, const_field_info}; // Note: the use of RawInobjectPropertyAt (vs. the higher-level diff --git a/deps/v8/src/compiler/js-native-context-specialization.cc b/deps/v8/src/compiler/js-native-context-specialization.cc index e03e0d41a31437..49edcc783a221d 100644 --- a/deps/v8/src/compiler/js-native-context-specialization.cc +++ b/deps/v8/src/compiler/js-native-context-specialization.cc @@ -2449,7 +2449,6 @@ JSNativeContextSpecialization::BuildPropertyStore( field_type, MachineType::TypeForRepresentation(field_representation), kFullWriteBarrier, - LoadSensitivity::kUnsafe, access_info.GetConstFieldInfo(), access_mode == AccessMode::kStoreInLiteral}; @@ -2483,7 +2482,6 @@ JSNativeContextSpecialization::BuildPropertyStore( Type::OtherInternal(), MachineType::TaggedPointer(), kPointerWriteBarrier, - LoadSensitivity::kUnsafe, access_info.GetConstFieldInfo(), access_mode == AccessMode::kStoreInLiteral}; storage = effect = @@ -2789,10 +2787,8 @@ JSNativeContextSpecialization::BuildElementAccess( if (situation == kHandleOOB_SmiCheckDone) { Node* check = graph()->NewNode(simplified()->NumberLessThan(), index, length); - Node* branch = graph()->NewNode( - common()->Branch(BranchHint::kTrue, - IsSafetyCheck::kCriticalSafetyCheck), - check, control); + Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue), + check, control); Node* if_true = graph()->NewNode(common()->IfTrue(), branch); Node* etrue = effect; @@ -2980,10 +2976,9 @@ JSNativeContextSpecialization::BuildElementAccess( element_type = Type::SignedSmall(); element_machine_type = MachineType::TaggedSigned(); } - ElementAccess element_access = { - kTaggedBase, FixedArray::kHeaderSize, - element_type, element_machine_type, - kFullWriteBarrier, LoadSensitivity::kCritical}; + ElementAccess element_access = {kTaggedBase, FixedArray::kHeaderSize, + element_type, element_machine_type, + kFullWriteBarrier}; // Access the actual element. if (keyed_mode.access_mode() == AccessMode::kLoad) { @@ -3003,10 +2998,8 @@ JSNativeContextSpecialization::BuildElementAccess( CanTreatHoleAsUndefined(receiver_maps)) { Node* check = graph()->NewNode(simplified()->NumberLessThan(), index, length); - Node* branch = graph()->NewNode( - common()->Branch(BranchHint::kTrue, - IsSafetyCheck::kCriticalSafetyCheck), - check, control); + Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue), + check, control); Node* if_true = graph()->NewNode(common()->IfTrue(), branch); Node* etrue = effect; @@ -3289,9 +3282,7 @@ Node* JSNativeContextSpecialization::BuildIndexedStringLoad( Node* check = graph()->NewNode(simplified()->NumberLessThan(), index, length); Node* branch = - graph()->NewNode(common()->Branch(BranchHint::kTrue, - IsSafetyCheck::kCriticalSafetyCheck), - check, *control); + graph()->NewNode(common()->Branch(BranchHint::kTrue), check, *control); Node* if_true = graph()->NewNode(common()->IfTrue(), branch); // Do a real bounds check against {length}. This is in order to protect @@ -3302,10 +3293,8 @@ Node* JSNativeContextSpecialization::BuildIndexedStringLoad( CheckBoundsFlag::kConvertStringAndMinusZero | CheckBoundsFlag::kAbortOnOutOfBounds), index, length, *effect, if_true); - Node* masked_index = graph()->NewNode(simplified()->PoisonIndex(), index); - Node* vtrue = etrue = - graph()->NewNode(simplified()->StringCharCodeAt(), receiver, - masked_index, etrue, if_true); + Node* vtrue = etrue = graph()->NewNode(simplified()->StringCharCodeAt(), + receiver, index, etrue, if_true); vtrue = graph()->NewNode(simplified()->StringFromSingleCharCode(), vtrue); Node* if_false = graph()->NewNode(common()->IfFalse(), branch); @@ -3323,12 +3312,9 @@ Node* JSNativeContextSpecialization::BuildIndexedStringLoad( CheckBoundsFlag::kConvertStringAndMinusZero), index, length, *effect, *control); - Node* masked_index = graph()->NewNode(simplified()->PoisonIndex(), index); - // Return the character from the {receiver} as single character string. - Node* value = *effect = - graph()->NewNode(simplified()->StringCharCodeAt(), receiver, - masked_index, *effect, *control); + Node* value = *effect = graph()->NewNode( + simplified()->StringCharCodeAt(), receiver, index, *effect, *control); value = graph()->NewNode(simplified()->StringFromSingleCharCode(), value); return value; } diff --git a/deps/v8/src/compiler/linkage.h b/deps/v8/src/compiler/linkage.h index 8b33444b294bf2..707c7d98ab8b04 100644 --- a/deps/v8/src/compiler/linkage.h +++ b/deps/v8/src/compiler/linkage.h @@ -214,15 +214,13 @@ class V8_EXPORT_PRIVATE CallDescriptor final kInitializeRootRegister = 1u << 3, // Does not ever try to allocate space on our heap. kNoAllocate = 1u << 4, - // Use retpoline for this call if indirect. - kRetpoline = 1u << 5, // Use the kJavaScriptCallCodeStartRegister (fixed) register for the // indirect target address when calling. - kFixedTargetRegister = 1u << 6, - kCallerSavedRegisters = 1u << 7, + kFixedTargetRegister = 1u << 5, + kCallerSavedRegisters = 1u << 6, // The kCallerSavedFPRegisters only matters (and set) when the more general // flag for kCallerSavedRegisters above is also set. - kCallerSavedFPRegisters = 1u << 8, + kCallerSavedFPRegisters = 1u << 7, // Tail calls for tier up are special (in fact they are different enough // from normal tail calls to warrant a dedicated opcode; but they also have // enough similar aspects that reusing the TailCall opcode is pragmatic). @@ -238,15 +236,15 @@ class V8_EXPORT_PRIVATE CallDescriptor final // // In other words, behavior is identical to a jmp instruction prior caller // frame construction. - kIsTailCallForTierUp = 1u << 9, + kIsTailCallForTierUp = 1u << 8, + + // AIX has a function descriptor by default but it can be disabled for a + // certain CFunction call (only used for Kind::kCallAddress). + kNoFunctionDescriptor = 1u << 9, // Flags past here are *not* encoded in InstructionCode and are thus not // accessible from the code generator. See also // kFlagsBitsEncodedInInstructionCode. - - // AIX has a function descriptor by default but it can be disabled for a - // certain CFunction call (only used for Kind::kCallAddress). - kNoFunctionDescriptor = 1u << 10, }; using Flags = base::Flags; diff --git a/deps/v8/src/compiler/machine-graph-verifier.cc b/deps/v8/src/compiler/machine-graph-verifier.cc index 88679283d94877..eb4918cfd762ea 100644 --- a/deps/v8/src/compiler/machine-graph-verifier.cc +++ b/deps/v8/src/compiler/machine-graph-verifier.cc @@ -124,7 +124,6 @@ class MachineRepresentationInferrer { case IrOpcode::kLoad: case IrOpcode::kLoadImmutable: case IrOpcode::kProtectedLoad: - case IrOpcode::kPoisonedLoad: representation_vector_[node->id()] = PromoteRepresentation( LoadRepresentationOf(node->op()).representation()); break; @@ -206,15 +205,8 @@ class MachineRepresentationInferrer { case IrOpcode::kChangeInt32ToTagged: case IrOpcode::kChangeUint32ToTagged: case IrOpcode::kBitcastWordToTagged: - case IrOpcode::kTaggedPoisonOnSpeculation: representation_vector_[node->id()] = MachineRepresentation::kTagged; break; - case IrOpcode::kWord32PoisonOnSpeculation: - representation_vector_[node->id()] = MachineRepresentation::kWord32; - break; - case IrOpcode::kWord64PoisonOnSpeculation: - representation_vector_[node->id()] = MachineRepresentation::kWord64; - break; case IrOpcode::kCompressedHeapConstant: representation_vector_[node->id()] = MachineRepresentation::kCompressedPointer; @@ -394,14 +386,6 @@ class MachineRepresentationChecker { CheckValueInputRepresentationIs( node, 0, MachineType::PointerRepresentation()); break; - case IrOpcode::kWord32PoisonOnSpeculation: - CheckValueInputRepresentationIs(node, 0, - MachineRepresentation::kWord32); - break; - case IrOpcode::kWord64PoisonOnSpeculation: - CheckValueInputRepresentationIs(node, 0, - MachineRepresentation::kWord64); - break; case IrOpcode::kBitcastTaggedToWord: case IrOpcode::kBitcastTaggedToWordForTagAndSmiBits: if (COMPRESS_POINTERS_BOOL) { @@ -410,9 +394,6 @@ class MachineRepresentationChecker { CheckValueInputIsTagged(node, 0); } break; - case IrOpcode::kTaggedPoisonOnSpeculation: - CheckValueInputIsTagged(node, 0); - break; case IrOpcode::kTruncateFloat64ToWord32: case IrOpcode::kTruncateFloat64ToUint32: case IrOpcode::kTruncateFloat64ToFloat32: @@ -566,7 +547,6 @@ class MachineRepresentationChecker { case IrOpcode::kWord32AtomicLoad: case IrOpcode::kWord32AtomicPairLoad: case IrOpcode::kWord64AtomicLoad: - case IrOpcode::kPoisonedLoad: CheckValueInputIsTaggedOrPointer(node, 0); CheckValueInputRepresentationIs( node, 1, MachineType::PointerRepresentation()); diff --git a/deps/v8/src/compiler/machine-operator.cc b/deps/v8/src/compiler/machine-operator.cc index 411c6d4cb32d35..3dd695339015e6 100644 --- a/deps/v8/src/compiler/machine-operator.cc +++ b/deps/v8/src/compiler/machine-operator.cc @@ -124,7 +124,6 @@ LoadRepresentation LoadRepresentationOf(Operator const* op) { IrOpcode::kWord32AtomicLoad == op->opcode() || IrOpcode::kWord64AtomicLoad == op->opcode() || IrOpcode::kWord32AtomicPairLoad == op->opcode() || - IrOpcode::kPoisonedLoad == op->opcode() || IrOpcode::kUnalignedLoad == op->opcode() || IrOpcode::kLoadImmutable == op->opcode()); return OpParameter(op); @@ -831,13 +830,6 @@ struct MachineOperatorGlobalCache { Operator::kEliminatable, "Load", 2, 1, \ 1, 1, 1, 0, MachineType::Type()) {} \ }; \ - struct PoisonedLoad##Type##Operator final \ - : public Operator1 { \ - PoisonedLoad##Type##Operator() \ - : Operator1( \ - IrOpcode::kPoisonedLoad, Operator::kEliminatable, \ - "PoisonedLoad", 2, 1, 1, 1, 1, 0, MachineType::Type()) {} \ - }; \ struct UnalignedLoad##Type##Operator final \ : public Operator1 { \ UnalignedLoad##Type##Operator() \ @@ -861,7 +853,6 @@ struct MachineOperatorGlobalCache { 0, 0, 1, 0, 0, MachineType::Type()) {} \ }; \ Load##Type##Operator kLoad##Type; \ - PoisonedLoad##Type##Operator kPoisonedLoad##Type; \ UnalignedLoad##Type##Operator kUnalignedLoad##Type; \ ProtectedLoad##Type##Operator kProtectedLoad##Type; \ LoadImmutable##Type##Operator kLoadImmutable##Type; @@ -1157,30 +1148,6 @@ struct MachineOperatorGlobalCache { }; BitcastMaybeObjectToWordOperator kBitcastMaybeObjectToWord; - struct TaggedPoisonOnSpeculation : public Operator { - TaggedPoisonOnSpeculation() - : Operator(IrOpcode::kTaggedPoisonOnSpeculation, - Operator::kEliminatable | Operator::kNoWrite, - "TaggedPoisonOnSpeculation", 1, 1, 1, 1, 1, 0) {} - }; - TaggedPoisonOnSpeculation kTaggedPoisonOnSpeculation; - - struct Word32PoisonOnSpeculation : public Operator { - Word32PoisonOnSpeculation() - : Operator(IrOpcode::kWord32PoisonOnSpeculation, - Operator::kEliminatable | Operator::kNoWrite, - "Word32PoisonOnSpeculation", 1, 1, 1, 1, 1, 0) {} - }; - Word32PoisonOnSpeculation kWord32PoisonOnSpeculation; - - struct Word64PoisonOnSpeculation : public Operator { - Word64PoisonOnSpeculation() - : Operator(IrOpcode::kWord64PoisonOnSpeculation, - Operator::kEliminatable | Operator::kNoWrite, - "Word64PoisonOnSpeculation", 1, 1, 1, 1, 1, 0) {} - }; - Word64PoisonOnSpeculation kWord64PoisonOnSpeculation; - struct AbortCSAAssertOperator : public Operator { AbortCSAAssertOperator() : Operator(IrOpcode::kAbortCSAAssert, Operator::kNoThrow, @@ -1366,16 +1333,6 @@ const Operator* MachineOperatorBuilder::LoadImmutable(LoadRepresentation rep) { UNREACHABLE(); } -const Operator* MachineOperatorBuilder::PoisonedLoad(LoadRepresentation rep) { -#define LOAD(Type) \ - if (rep == MachineType::Type()) { \ - return &cache_.kPoisonedLoad##Type; \ - } - MACHINE_TYPE_LIST(LOAD) -#undef LOAD - UNREACHABLE(); -} - const Operator* MachineOperatorBuilder::ProtectedLoad(LoadRepresentation rep) { #define LOAD(Type) \ if (rep == MachineType::Type()) { \ @@ -1813,18 +1770,6 @@ const Operator* MachineOperatorBuilder::Word32AtomicPairCompareExchange() { return &cache_.kWord32AtomicPairCompareExchange; } -const Operator* MachineOperatorBuilder::TaggedPoisonOnSpeculation() { - return &cache_.kTaggedPoisonOnSpeculation; -} - -const Operator* MachineOperatorBuilder::Word32PoisonOnSpeculation() { - return &cache_.kWord32PoisonOnSpeculation; -} - -const Operator* MachineOperatorBuilder::Word64PoisonOnSpeculation() { - return &cache_.kWord64PoisonOnSpeculation; -} - #define EXTRACT_LANE_OP(Type, Sign, lane_count) \ const Operator* MachineOperatorBuilder::Type##ExtractLane##Sign( \ int32_t lane_index) { \ diff --git a/deps/v8/src/compiler/machine-operator.h b/deps/v8/src/compiler/machine-operator.h index 0ee3649ad0cd78..80a5b991a5b838 100644 --- a/deps/v8/src/compiler/machine-operator.h +++ b/deps/v8/src/compiler/machine-operator.h @@ -852,7 +852,6 @@ class V8_EXPORT_PRIVATE MachineOperatorBuilder final // load [base + index] const Operator* Load(LoadRepresentation rep); const Operator* LoadImmutable(LoadRepresentation rep); - const Operator* PoisonedLoad(LoadRepresentation rep); const Operator* ProtectedLoad(LoadRepresentation rep); const Operator* LoadTransform(MemoryAccessKind kind, @@ -879,11 +878,6 @@ class V8_EXPORT_PRIVATE MachineOperatorBuilder final const Operator* StackSlot(int size, int alignment = 0); const Operator* StackSlot(MachineRepresentation rep, int alignment = 0); - // Destroy value by masking when misspeculating. - const Operator* TaggedPoisonOnSpeculation(); - const Operator* Word32PoisonOnSpeculation(); - const Operator* Word64PoisonOnSpeculation(); - // Access to the machine stack. const Operator* LoadFramePointer(); const Operator* LoadParentFramePointer(); @@ -980,7 +974,6 @@ class V8_EXPORT_PRIVATE MachineOperatorBuilder final V(Word, Ror) \ V(Word, Clz) \ V(Word, Equal) \ - V(Word, PoisonOnSpeculation) \ V(Int, Add) \ V(Int, Sub) \ V(Int, Mul) \ diff --git a/deps/v8/src/compiler/memory-lowering.cc b/deps/v8/src/compiler/memory-lowering.cc index 9673a51844ecc1..27ad71c07a62b2 100644 --- a/deps/v8/src/compiler/memory-lowering.cc +++ b/deps/v8/src/compiler/memory-lowering.cc @@ -60,7 +60,6 @@ class MemoryLowering::AllocationGroup final : public ZoneObject { MemoryLowering::MemoryLowering(JSGraph* jsgraph, Zone* zone, JSGraphAssembler* graph_assembler, - PoisoningMitigationLevel poisoning_level, AllocationFolding allocation_folding, WriteBarrierAssertFailedCallback callback, const char* function_debug_name) @@ -71,7 +70,6 @@ MemoryLowering::MemoryLowering(JSGraph* jsgraph, Zone* zone, machine_(jsgraph->machine()), graph_assembler_(graph_assembler), allocation_folding_(allocation_folding), - poisoning_level_(poisoning_level), write_barrier_assert_failed_(callback), function_debug_name_(function_debug_name) {} @@ -401,11 +399,7 @@ Reduction MemoryLowering::ReduceLoadElement(Node* node) { node->ReplaceInput(1, ComputeIndex(access, index)); MachineType type = access.machine_type; DCHECK(!type.IsMapWord()); - if (NeedsPoisoning(access.load_sensitivity)) { - NodeProperties::ChangeOp(node, machine()->PoisonedLoad(type)); - } else { - NodeProperties::ChangeOp(node, machine()->Load(type)); - } + NodeProperties::ChangeOp(node, machine()->Load(type)); return Changed(node); } @@ -413,8 +407,7 @@ Node* MemoryLowering::DecodeExternalPointer( Node* node, ExternalPointerTag external_pointer_tag) { #ifdef V8_HEAP_SANDBOX DCHECK(V8_HEAP_SANDBOX_BOOL); - DCHECK(node->opcode() == IrOpcode::kLoad || - node->opcode() == IrOpcode::kPoisonedLoad); + DCHECK(node->opcode() == IrOpcode::kLoad); Node* effect = NodeProperties::GetEffectInput(node); Node* control = NodeProperties::GetControlInput(node); __ InitializeEffectControl(effect, control); @@ -476,16 +469,11 @@ Reduction MemoryLowering::ReduceLoadField(Node* node) { } if (type.IsMapWord()) { - DCHECK(!NeedsPoisoning(access.load_sensitivity)); DCHECK(!access.type.Is(Type::SandboxedExternalPointer())); return ReduceLoadMap(node); } - if (NeedsPoisoning(access.load_sensitivity)) { - NodeProperties::ChangeOp(node, machine()->PoisonedLoad(type)); - } else { - NodeProperties::ChangeOp(node, machine()->Load(type)); - } + NodeProperties::ChangeOp(node, machine()->Load(type)); if (V8_HEAP_SANDBOX_BOOL && access.type.Is(Type::SandboxedExternalPointer())) { @@ -655,21 +643,6 @@ WriteBarrierKind MemoryLowering::ComputeWriteBarrierKind( return write_barrier_kind; } -bool MemoryLowering::NeedsPoisoning(LoadSensitivity load_sensitivity) const { - // Safe loads do not need poisoning. - if (load_sensitivity == LoadSensitivity::kSafe) return false; - - switch (poisoning_level_) { - case PoisoningMitigationLevel::kDontPoison: - return false; - case PoisoningMitigationLevel::kPoisonAll: - return true; - case PoisoningMitigationLevel::kPoisonCriticalOnly: - return load_sensitivity == LoadSensitivity::kCritical; - } - UNREACHABLE(); -} - MemoryLowering::AllocationGroup::AllocationGroup(Node* node, AllocationType allocation, Zone* zone) diff --git a/deps/v8/src/compiler/memory-lowering.h b/deps/v8/src/compiler/memory-lowering.h index 1fbe18abff329f..9edb880e6fd3ff 100644 --- a/deps/v8/src/compiler/memory-lowering.h +++ b/deps/v8/src/compiler/memory-lowering.h @@ -75,7 +75,6 @@ class MemoryLowering final : public Reducer { MemoryLowering( JSGraph* jsgraph, Zone* zone, JSGraphAssembler* graph_assembler, - PoisoningMitigationLevel poisoning_level, AllocationFolding allocation_folding = AllocationFolding::kDontAllocationFolding, WriteBarrierAssertFailedCallback callback = [](Node*, Node*, const char*, @@ -112,7 +111,6 @@ class MemoryLowering final : public Reducer { Node* DecodeExternalPointer(Node* encoded_pointer, ExternalPointerTag tag); Reduction ReduceLoadMap(Node* encoded_pointer); Node* ComputeIndex(ElementAccess const& access, Node* node); - bool NeedsPoisoning(LoadSensitivity load_sensitivity) const; void EnsureAllocateOperator(); Node* GetWasmInstanceNode(); @@ -133,7 +131,6 @@ class MemoryLowering final : public Reducer { MachineOperatorBuilder* machine_; JSGraphAssembler* graph_assembler_; AllocationFolding allocation_folding_; - PoisoningMitigationLevel poisoning_level_; WriteBarrierAssertFailedCallback write_barrier_assert_failed_; const char* function_debug_name_; diff --git a/deps/v8/src/compiler/memory-optimizer.cc b/deps/v8/src/compiler/memory-optimizer.cc index 860ea1fae18ce9..ba4a5c1f675e2a 100644 --- a/deps/v8/src/compiler/memory-optimizer.cc +++ b/deps/v8/src/compiler/memory-optimizer.cc @@ -40,7 +40,6 @@ bool CanAllocate(const Node* node) { case IrOpcode::kLoadLane: case IrOpcode::kLoadTransform: case IrOpcode::kMemoryBarrier: - case IrOpcode::kPoisonedLoad: case IrOpcode::kProtectedLoad: case IrOpcode::kProtectedStore: case IrOpcode::kRetain: @@ -54,7 +53,6 @@ bool CanAllocate(const Node* node) { case IrOpcode::kStoreField: case IrOpcode::kStoreLane: case IrOpcode::kStoreToObject: - case IrOpcode::kTaggedPoisonOnSpeculation: case IrOpcode::kUnalignedLoad: case IrOpcode::kUnalignedStore: case IrOpcode::kUnreachable: @@ -77,7 +75,6 @@ bool CanAllocate(const Node* node) { case IrOpcode::kWord32AtomicStore: case IrOpcode::kWord32AtomicSub: case IrOpcode::kWord32AtomicXor: - case IrOpcode::kWord32PoisonOnSpeculation: case IrOpcode::kWord64AtomicAdd: case IrOpcode::kWord64AtomicAnd: case IrOpcode::kWord64AtomicCompareExchange: @@ -87,7 +84,6 @@ bool CanAllocate(const Node* node) { case IrOpcode::kWord64AtomicStore: case IrOpcode::kWord64AtomicSub: case IrOpcode::kWord64AtomicXor: - case IrOpcode::kWord64PoisonOnSpeculation: return false; case IrOpcode::kCall: @@ -183,13 +179,12 @@ void WriteBarrierAssertFailed(Node* node, Node* object, const char* name, } // namespace MemoryOptimizer::MemoryOptimizer( - JSGraph* jsgraph, Zone* zone, PoisoningMitigationLevel poisoning_level, + JSGraph* jsgraph, Zone* zone, MemoryLowering::AllocationFolding allocation_folding, const char* function_debug_name, TickCounter* tick_counter) : graph_assembler_(jsgraph, zone), - memory_lowering_(jsgraph, zone, &graph_assembler_, poisoning_level, - allocation_folding, WriteBarrierAssertFailed, - function_debug_name), + memory_lowering_(jsgraph, zone, &graph_assembler_, allocation_folding, + WriteBarrierAssertFailed, function_debug_name), jsgraph_(jsgraph), empty_state_(AllocationState::Empty(zone)), pending_(zone), diff --git a/deps/v8/src/compiler/memory-optimizer.h b/deps/v8/src/compiler/memory-optimizer.h index 3845304fdd6b98..7d8bca44d455e0 100644 --- a/deps/v8/src/compiler/memory-optimizer.h +++ b/deps/v8/src/compiler/memory-optimizer.h @@ -30,7 +30,6 @@ using NodeId = uint32_t; class MemoryOptimizer final { public: MemoryOptimizer(JSGraph* jsgraph, Zone* zone, - PoisoningMitigationLevel poisoning_level, MemoryLowering::AllocationFolding allocation_folding, const char* function_debug_name, TickCounter* tick_counter); ~MemoryOptimizer() = default; diff --git a/deps/v8/src/compiler/node-matchers.h b/deps/v8/src/compiler/node-matchers.h index 1ce402342431d2..52dc476dc45328 100644 --- a/deps/v8/src/compiler/node-matchers.h +++ b/deps/v8/src/compiler/node-matchers.h @@ -743,7 +743,6 @@ struct BaseWithIndexAndDisplacementMatcher { switch (from->opcode()) { case IrOpcode::kLoad: case IrOpcode::kLoadImmutable: - case IrOpcode::kPoisonedLoad: case IrOpcode::kProtectedLoad: case IrOpcode::kInt32Add: case IrOpcode::kInt64Add: diff --git a/deps/v8/src/compiler/opcodes.h b/deps/v8/src/compiler/opcodes.h index 912bd7b5cecc71..b956f148cc0852 100644 --- a/deps/v8/src/compiler/opcodes.h +++ b/deps/v8/src/compiler/opcodes.h @@ -463,7 +463,6 @@ V(PlainPrimitiveToFloat64) \ V(PlainPrimitiveToNumber) \ V(PlainPrimitiveToWord32) \ - V(PoisonIndex) \ V(RestLength) \ V(RuntimeAbort) \ V(StoreDataViewElement) \ @@ -686,7 +685,6 @@ V(DebugBreak) \ V(Comment) \ V(Load) \ - V(PoisonedLoad) \ V(LoadImmutable) \ V(Store) \ V(StackSlot) \ @@ -746,9 +744,6 @@ V(Word64Select) \ V(Float32Select) \ V(Float64Select) \ - V(TaggedPoisonOnSpeculation) \ - V(Word32PoisonOnSpeculation) \ - V(Word64PoisonOnSpeculation) \ V(LoadStackCheckOffset) \ V(LoadFramePointer) \ V(LoadParentFramePointer) \ diff --git a/deps/v8/src/compiler/pipeline.cc b/deps/v8/src/compiler/pipeline.cc index e802cd72682345..09fb15fb17229f 100644 --- a/deps/v8/src/compiler/pipeline.cc +++ b/deps/v8/src/compiler/pipeline.cc @@ -547,8 +547,7 @@ class PipelineData { code_generator_ = new CodeGenerator( codegen_zone(), frame(), linkage, sequence(), info(), isolate(), osr_helper_, start_source_position_, jump_optimization_info_, - info()->GetPoisoningMitigationLevel(), assembler_options(), - info_->builtin(), max_unoptimized_frame_height(), + assembler_options(), info_->builtin(), max_unoptimized_frame_height(), max_pushed_argument_count(), FLAG_trace_turbo_stack_accesses ? debug_name_.get() : nullptr); } @@ -1161,18 +1160,6 @@ PipelineCompilationJob::Status PipelineCompilationJob::PrepareJobImpl( if (FLAG_turbo_inlining) { compilation_info()->set_inlining(); } - - // This is the bottleneck for computing and setting poisoning level in the - // optimizing compiler. - PoisoningMitigationLevel load_poisoning = - PoisoningMitigationLevel::kDontPoison; - if (FLAG_untrusted_code_mitigations) { - // For full mitigations, this can be changed to - // PoisoningMitigationLevel::kPoisonAll. - load_poisoning = PoisoningMitigationLevel::kPoisonCriticalOnly; - } - compilation_info()->SetPoisoningMitigationLevel(load_poisoning); - if (FLAG_turbo_allocation_folding) { compilation_info()->set_allocation_folding(); } @@ -1629,10 +1616,10 @@ struct SimplifiedLoweringPhase { DECL_PIPELINE_PHASE_CONSTANTS(SimplifiedLowering) void Run(PipelineData* data, Zone* temp_zone, Linkage* linkage) { - SimplifiedLowering lowering( - data->jsgraph(), data->broker(), temp_zone, data->source_positions(), - data->node_origins(), data->info()->GetPoisoningMitigationLevel(), - &data->info()->tick_counter(), linkage, data->observe_node_manager()); + SimplifiedLowering lowering(data->jsgraph(), data->broker(), temp_zone, + data->source_positions(), data->node_origins(), + &data->info()->tick_counter(), linkage, + data->observe_node_manager()); // RepresentationChanger accesses the heap. UnparkedScopeIfNeeded scope(data->broker()); @@ -1797,7 +1784,6 @@ struct EffectControlLinearizationPhase { // - introduce effect phis and rewire effects to get SSA again. LinearizeEffectControl(data->jsgraph(), schedule, temp_zone, data->source_positions(), data->node_origins(), - data->info()->GetPoisoningMitigationLevel(), data->broker()); } { @@ -1899,7 +1885,7 @@ struct MemoryOptimizationPhase { // Optimize allocations and load/store operations. MemoryOptimizer optimizer( - data->jsgraph(), temp_zone, data->info()->GetPoisoningMitigationLevel(), + data->jsgraph(), temp_zone, data->info()->allocation_folding() ? MemoryLowering::AllocationFolding::kDoAllocationFolding : MemoryLowering::AllocationFolding::kDontAllocationFolding, @@ -1989,7 +1975,6 @@ struct ScheduledEffectControlLinearizationPhase { // - lower simplified memory and select nodes to machine level nodes. LowerToMachineSchedule(data->jsgraph(), data->schedule(), temp_zone, data->source_positions(), data->node_origins(), - data->info()->GetPoisoningMitigationLevel(), data->broker()); // TODO(rmcilroy) Avoid having to rebuild rpo_order on schedule each time. @@ -2205,7 +2190,6 @@ struct InstructionSelectionPhase { data->assembler_options().enable_root_relative_access ? InstructionSelector::kEnableRootsRelativeAddressing : InstructionSelector::kDisableRootsRelativeAddressing, - data->info()->GetPoisoningMitigationLevel(), data->info()->trace_turbo_json() ? InstructionSelector::kEnableTraceTurboJson : InstructionSelector::kDisableTraceTurboJson); @@ -2969,17 +2953,12 @@ int HashGraphForPGO(Graph* graph) { MaybeHandle Pipeline::GenerateCodeForCodeStub( Isolate* isolate, CallDescriptor* call_descriptor, Graph* graph, JSGraph* jsgraph, SourcePositionTable* source_positions, CodeKind kind, - const char* debug_name, Builtin builtin, - PoisoningMitigationLevel poisoning_level, const AssemblerOptions& options, + const char* debug_name, Builtin builtin, const AssemblerOptions& options, const ProfileDataFromFile* profile_data) { OptimizedCompilationInfo info(base::CStrVector(debug_name), graph->zone(), kind); info.set_builtin(builtin); - if (poisoning_level != PoisoningMitigationLevel::kDontPoison) { - info.SetPoisoningMitigationLevel(poisoning_level); - } - // Construct a pipeline for scheduling and code generation. ZoneStats zone_stats(isolate->allocator()); NodeOriginTable node_origins(graph); @@ -3546,18 +3525,7 @@ bool PipelineImpl::SelectInstructions(Linkage* linkage) { config.reset(RegisterConfiguration::RestrictGeneralRegisters(registers)); AllocateRegistersForTopTier(config.get(), call_descriptor, run_verifier); } else { - const RegisterConfiguration* config; - if (data->info()->GetPoisoningMitigationLevel() != - PoisoningMitigationLevel::kDontPoison) { -#ifdef V8_TARGET_ARCH_IA32 - FATAL("Poisoning is not supported on ia32."); -#else - config = RegisterConfiguration::Poisoning(); -#endif // V8_TARGET_ARCH_IA32 - } else { - config = RegisterConfiguration::Default(); - } - + const RegisterConfiguration* config = RegisterConfiguration::Default(); if (data->info()->IsTurboprop() && FLAG_turboprop_mid_tier_reg_alloc) { AllocateRegistersForMidTier(config, call_descriptor, run_verifier); } else { @@ -3643,7 +3611,6 @@ std::ostream& operator<<(std::ostream& out, out << "\"codeStartRegisterCheck\": " << s.offsets_info->code_start_register_check << ", "; out << "\"deoptCheck\": " << s.offsets_info->deopt_check << ", "; - out << "\"initPoison\": " << s.offsets_info->init_poison << ", "; out << "\"blocksStart\": " << s.offsets_info->blocks_start << ", "; out << "\"outOfLineCode\": " << s.offsets_info->out_of_line_code << ", "; out << "\"deoptimizationExits\": " << s.offsets_info->deoptimization_exits diff --git a/deps/v8/src/compiler/pipeline.h b/deps/v8/src/compiler/pipeline.h index ea67b31e06cbf5..cd4c6b9e16c8c3 100644 --- a/deps/v8/src/compiler/pipeline.h +++ b/deps/v8/src/compiler/pipeline.h @@ -78,8 +78,7 @@ class Pipeline : public AllStatic { static MaybeHandle GenerateCodeForCodeStub( Isolate* isolate, CallDescriptor* call_descriptor, Graph* graph, JSGraph* jsgraph, SourcePositionTable* source_positions, CodeKind kind, - const char* debug_name, Builtin builtin, - PoisoningMitigationLevel poisoning_level, const AssemblerOptions& options, + const char* debug_name, Builtin builtin, const AssemblerOptions& options, const ProfileDataFromFile* profile_data); // --------------------------------------------------------------------------- diff --git a/deps/v8/src/compiler/property-access-builder.cc b/deps/v8/src/compiler/property-access-builder.cc index a64521d6f66dcb..9abaf45b261e12 100644 --- a/deps/v8/src/compiler/property-access-builder.cc +++ b/deps/v8/src/compiler/property-access-builder.cc @@ -235,7 +235,6 @@ Node* PropertyAccessBuilder::BuildLoadDataField(NameRef const& name, Type::Any(), MachineType::AnyTagged(), kPointerWriteBarrier, - LoadSensitivity::kCritical, field_access.const_field_info}; storage = *effect = graph()->NewNode( simplified()->LoadField(storage_access), storage, *effect, *control); @@ -263,7 +262,6 @@ Node* PropertyAccessBuilder::BuildLoadDataField(NameRef const& name, Type::OtherInternal(), MachineType::TaggedPointer(), kPointerWriteBarrier, - LoadSensitivity::kCritical, field_access.const_field_info}; storage = *effect = graph()->NewNode( simplified()->LoadField(storage_access), storage, *effect, *control); @@ -291,7 +289,6 @@ Node* PropertyAccessBuilder::BuildMinimorphicLoadDataField( access_info.field_type(), MachineType::TypeForRepresentation(field_representation), kFullWriteBarrier, - LoadSensitivity::kCritical, ConstFieldInfo::None()}; return BuildLoadDataField(name, lookup_start_object, field_access, access_info.is_inobject(), effect, control); @@ -319,7 +316,6 @@ Node* PropertyAccessBuilder::BuildLoadDataField( access_info.field_type(), MachineType::TypeForRepresentation(field_representation), kFullWriteBarrier, - LoadSensitivity::kCritical, access_info.GetConstFieldInfo()}; if (field_representation == MachineRepresentation::kTaggedPointer || field_representation == MachineRepresentation::kCompressedPointer) { diff --git a/deps/v8/src/compiler/raw-machine-assembler.cc b/deps/v8/src/compiler/raw-machine-assembler.cc index 7ed217d4e36dd9..383d63dd69fdc5 100644 --- a/deps/v8/src/compiler/raw-machine-assembler.cc +++ b/deps/v8/src/compiler/raw-machine-assembler.cc @@ -18,8 +18,7 @@ namespace compiler { RawMachineAssembler::RawMachineAssembler( Isolate* isolate, Graph* graph, CallDescriptor* call_descriptor, MachineRepresentation word, MachineOperatorBuilder::Flags flags, - MachineOperatorBuilder::AlignmentRequirements alignment_requirements, - PoisoningMitigationLevel poisoning_level) + MachineOperatorBuilder::AlignmentRequirements alignment_requirements) : isolate_(isolate), graph_(graph), schedule_(zone()->New(zone())), @@ -30,8 +29,7 @@ RawMachineAssembler::RawMachineAssembler( call_descriptor_(call_descriptor), target_parameter_(nullptr), parameters_(parameter_count(), zone()), - current_block_(schedule()->start()), - poisoning_level_(poisoning_level) { + current_block_(schedule()->start()) { int param_count = static_cast(parameter_count()); // Add an extra input for the JSFunction parameter to the start node. graph->SetStart(graph->NewNode(common_.Start(param_count + 1))); @@ -472,7 +470,7 @@ void RawMachineAssembler::MarkControlDeferred(Node* control_node) { return; case IrOpcode::kIfTrue: { Node* branch = NodeProperties::GetControlInput(control_node); - BranchHint hint = BranchOperatorInfoOf(branch->op()).hint; + BranchHint hint = BranchHintOf(branch->op()); if (hint == BranchHint::kTrue) { // The other possibility is also deferred, so the responsible branch // has to be before. @@ -485,7 +483,7 @@ void RawMachineAssembler::MarkControlDeferred(Node* control_node) { } case IrOpcode::kIfFalse: { Node* branch = NodeProperties::GetControlInput(control_node); - BranchHint hint = BranchOperatorInfoOf(branch->op()).hint; + BranchHint hint = BranchHintOf(branch->op()); if (hint == BranchHint::kFalse) { // The other possibility is also deferred, so the responsible branch // has to be before. @@ -516,11 +514,10 @@ void RawMachineAssembler::MarkControlDeferred(Node* control_node) { } } - BranchOperatorInfo info = BranchOperatorInfoOf(responsible_branch->op()); - if (info.hint == new_branch_hint) return; - NodeProperties::ChangeOp( - responsible_branch, - common()->Branch(new_branch_hint, info.is_safety_check)); + BranchHint hint = BranchHintOf(responsible_branch->op()); + if (hint == new_branch_hint) return; + NodeProperties::ChangeOp(responsible_branch, + common()->Branch(new_branch_hint)); } Node* RawMachineAssembler::TargetParameter() { @@ -544,9 +541,7 @@ void RawMachineAssembler::Goto(RawMachineLabel* label) { void RawMachineAssembler::Branch(Node* condition, RawMachineLabel* true_val, RawMachineLabel* false_val) { DCHECK(current_block_ != schedule()->end()); - Node* branch = MakeNode( - common()->Branch(BranchHint::kNone, IsSafetyCheck::kNoSafetyCheck), 1, - &condition); + Node* branch = MakeNode(common()->Branch(BranchHint::kNone), 1, &condition); BasicBlock* true_block = schedule()->NewBasicBlock(); BasicBlock* false_block = schedule()->NewBasicBlock(); schedule()->AddBranch(CurrentBlock(), branch, true_block, false_block); diff --git a/deps/v8/src/compiler/raw-machine-assembler.h b/deps/v8/src/compiler/raw-machine-assembler.h index a811fa7bf9c9bb..bff7bda0a37a87 100644 --- a/deps/v8/src/compiler/raw-machine-assembler.h +++ b/deps/v8/src/compiler/raw-machine-assembler.h @@ -52,9 +52,7 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { MachineOperatorBuilder::Flag::kNoFlags, MachineOperatorBuilder::AlignmentRequirements alignment_requirements = MachineOperatorBuilder::AlignmentRequirements:: - FullUnalignedAccessSupport(), - PoisoningMitigationLevel poisoning_level = - PoisoningMitigationLevel::kPoisonCriticalOnly); + FullUnalignedAccessSupport()); ~RawMachineAssembler() = default; RawMachineAssembler(const RawMachineAssembler&) = delete; @@ -67,7 +65,6 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { CommonOperatorBuilder* common() { return &common_; } SimplifiedOperatorBuilder* simplified() { return &simplified_; } CallDescriptor* call_descriptor() const { return call_descriptor_; } - PoisoningMitigationLevel poisoning_level() const { return poisoning_level_; } // Only used for tests: Finalizes the schedule and exports it to be used for // code generation. Note that this RawMachineAssembler becomes invalid after @@ -132,19 +129,11 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { } // Memory Operations. - Node* Load(MachineType type, Node* base, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { - return Load(type, base, IntPtrConstant(0), needs_poisoning); + Node* Load(MachineType type, Node* base) { + return Load(type, base, IntPtrConstant(0)); } - Node* Load(MachineType type, Node* base, Node* index, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { + Node* Load(MachineType type, Node* base, Node* index) { const Operator* op = machine()->Load(type); - CHECK_NE(PoisoningMitigationLevel::kPoisonAll, poisoning_level_); - if (needs_poisoning == LoadSensitivity::kCritical && - poisoning_level_ == PoisoningMitigationLevel::kPoisonCriticalOnly) { - op = machine()->PoisonedLoad(type); - } - Node* load = AddNode(op, base, index); return load; } @@ -174,10 +163,7 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { bool IsMapOffsetConstantMinusTag(int offset) { return offset == HeapObject::kMapOffset - kHeapObjectTag; } - Node* LoadFromObject( - MachineType type, Node* base, Node* offset, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) { - CHECK_EQ(needs_poisoning, LoadSensitivity::kSafe); + Node* LoadFromObject(MachineType type, Node* base, Node* offset) { DCHECK_IMPLIES(V8_MAP_PACKING_BOOL && IsMapOffsetConstantMinusTag(offset), type == MachineType::MapInHeader()); ObjectAccess access = {type, WriteBarrierKind::kNoWriteBarrier}; @@ -959,20 +945,6 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { return HeapConstant(isolate()->factory()->InternalizeUtf8String(string)); } - Node* TaggedPoisonOnSpeculation(Node* value) { - if (poisoning_level_ != PoisoningMitigationLevel::kDontPoison) { - return AddNode(machine()->TaggedPoisonOnSpeculation(), value); - } - return value; - } - - Node* WordPoisonOnSpeculation(Node* value) { - if (poisoning_level_ != PoisoningMitigationLevel::kDontPoison) { - return AddNode(machine()->WordPoisonOnSpeculation(), value); - } - return value; - } - // Call a given call descriptor and the given arguments. // The call target is passed as part of the {inputs} array. Node* CallN(CallDescriptor* call_descriptor, int input_count, @@ -1136,6 +1108,7 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { CommonOperatorBuilder* common); Isolate* isolate_; + Graph* graph_; Schedule* schedule_; SourcePositionTable* source_positions_; @@ -1146,7 +1119,6 @@ class V8_EXPORT_PRIVATE RawMachineAssembler { Node* target_parameter_; NodeVector parameters_; BasicBlock* current_block_; - PoisoningMitigationLevel poisoning_level_; }; class V8_EXPORT_PRIVATE RawMachineLabel final { diff --git a/deps/v8/src/compiler/simplified-lowering.cc b/deps/v8/src/compiler/simplified-lowering.cc index 1c07a23dded32a..0a8332b775720d 100644 --- a/deps/v8/src/compiler/simplified-lowering.cc +++ b/deps/v8/src/compiler/simplified-lowering.cc @@ -1735,11 +1735,9 @@ class RepresentationSelector { VisitBinop(node, UseInfo::TruncatingWord32(), MachineRepresentation::kWord32); if (lower()) { - if (lowering->poisoning_level_ == - PoisoningMitigationLevel::kDontPoison && - (index_type.IsNone() || length_type.IsNone() || - (index_type.Min() >= 0.0 && - index_type.Max() < length_type.Min()))) { + if (index_type.IsNone() || length_type.IsNone() || + (index_type.Min() >= 0.0 && + index_type.Max() < length_type.Min())) { // The bounds check is redundant if we already know that // the index is within the bounds of [0.0, length[. // TODO(neis): Move this into TypedOptimization? @@ -3181,11 +3179,6 @@ class RepresentationSelector { } case IrOpcode::kCheckBounds: return VisitCheckBounds(node, lowering); - case IrOpcode::kPoisonIndex: { - VisitUnop(node, UseInfo::TruncatingWord32(), - MachineRepresentation::kWord32); - return; - } case IrOpcode::kCheckHeapObject: { if (InputCannotBe(node, Type::SignedSmall())) { VisitUnop(node, UseInfo::AnyTagged(), @@ -4225,18 +4218,19 @@ void RepresentationSelector::InsertUnreachableIfNecessary(Node* node) { } } -SimplifiedLowering::SimplifiedLowering( - JSGraph* jsgraph, JSHeapBroker* broker, Zone* zone, - SourcePositionTable* source_positions, NodeOriginTable* node_origins, - PoisoningMitigationLevel poisoning_level, TickCounter* tick_counter, - Linkage* linkage, ObserveNodeManager* observe_node_manager) +SimplifiedLowering::SimplifiedLowering(JSGraph* jsgraph, JSHeapBroker* broker, + Zone* zone, + SourcePositionTable* source_positions, + NodeOriginTable* node_origins, + TickCounter* tick_counter, + Linkage* linkage, + ObserveNodeManager* observe_node_manager) : jsgraph_(jsgraph), broker_(broker), zone_(zone), type_cache_(TypeCache::Get()), source_positions_(source_positions), node_origins_(node_origins), - poisoning_level_(poisoning_level), tick_counter_(tick_counter), linkage_(linkage), observe_node_manager_(observe_node_manager) {} diff --git a/deps/v8/src/compiler/simplified-lowering.h b/deps/v8/src/compiler/simplified-lowering.h index 54017b34f7a936..f60bc1a7e3ef89 100644 --- a/deps/v8/src/compiler/simplified-lowering.h +++ b/deps/v8/src/compiler/simplified-lowering.h @@ -31,7 +31,6 @@ class V8_EXPORT_PRIVATE SimplifiedLowering final { SimplifiedLowering(JSGraph* jsgraph, JSHeapBroker* broker, Zone* zone, SourcePositionTable* source_position, NodeOriginTable* node_origins, - PoisoningMitigationLevel poisoning_level, TickCounter* tick_counter, Linkage* linkage, ObserveNodeManager* observe_node_manager = nullptr); ~SimplifiedLowering() = default; @@ -83,8 +82,6 @@ class V8_EXPORT_PRIVATE SimplifiedLowering final { SourcePositionTable* source_positions_; NodeOriginTable* node_origins_; - PoisoningMitigationLevel poisoning_level_; - TickCounter* const tick_counter_; Linkage* const linkage_; diff --git a/deps/v8/src/compiler/simplified-operator-reducer.cc b/deps/v8/src/compiler/simplified-operator-reducer.cc index ea9e9f4ba5dbc8..33edd66b4ff43e 100644 --- a/deps/v8/src/compiler/simplified-operator-reducer.cc +++ b/deps/v8/src/compiler/simplified-operator-reducer.cc @@ -77,7 +77,7 @@ Reduction SimplifiedOperatorReducer::Reduce(Node* node) { case IrOpcode::kChangeInt32ToTagged: { Int32Matcher m(node->InputAt(0)); if (m.HasResolvedValue()) return ReplaceNumber(m.ResolvedValue()); - if (m.IsChangeTaggedToInt32() || m.IsChangeTaggedSignedToInt32()) { + if (m.IsChangeTaggedSignedToInt32()) { return Replace(m.InputAt(0)); } break; diff --git a/deps/v8/src/compiler/simplified-operator.cc b/deps/v8/src/compiler/simplified-operator.cc index 9c4f8f083ac3a4..9461194b559480 100644 --- a/deps/v8/src/compiler/simplified-operator.cc +++ b/deps/v8/src/compiler/simplified-operator.cc @@ -73,22 +73,6 @@ size_t hash_value(FieldAccess const& access) { access.is_store_in_literal); } -size_t hash_value(LoadSensitivity load_sensitivity) { - return static_cast(load_sensitivity); -} - -std::ostream& operator<<(std::ostream& os, LoadSensitivity load_sensitivity) { - switch (load_sensitivity) { - case LoadSensitivity::kCritical: - return os << "Critical"; - case LoadSensitivity::kSafe: - return os << "Safe"; - case LoadSensitivity::kUnsafe: - return os << "Unsafe"; - } - UNREACHABLE(); -} - std::ostream& operator<<(std::ostream& os, FieldAccess const& access) { os << "[" << access.base_is_tagged << ", " << access.offset << ", "; #ifdef OBJECT_PRINT @@ -107,9 +91,6 @@ std::ostream& operator<<(std::ostream& os, FieldAccess const& access) { if (access.is_store_in_literal) { os << " (store in literal)"; } - if (FLAG_untrusted_code_mitigations) { - os << ", " << access.load_sensitivity; - } os << "]"; return os; } @@ -145,9 +126,6 @@ std::ostream& operator<<(std::ostream& os, ElementAccess const& access) { os << access.base_is_tagged << ", " << access.header_size << ", " << access.type << ", " << access.machine_type << ", " << access.write_barrier_kind; - if (FLAG_untrusted_code_mitigations) { - os << ", " << access.load_sensitivity; - } return os; } @@ -719,129 +697,128 @@ bool operator==(CheckMinusZeroParameters const& lhs, return lhs.mode() == rhs.mode() && lhs.feedback() == rhs.feedback(); } -#define PURE_OP_LIST(V) \ - V(BooleanNot, Operator::kNoProperties, 1, 0) \ - V(NumberEqual, Operator::kCommutative, 2, 0) \ - V(NumberLessThan, Operator::kNoProperties, 2, 0) \ - V(NumberLessThanOrEqual, Operator::kNoProperties, 2, 0) \ - V(NumberAdd, Operator::kCommutative, 2, 0) \ - V(NumberSubtract, Operator::kNoProperties, 2, 0) \ - V(NumberMultiply, Operator::kCommutative, 2, 0) \ - V(NumberDivide, Operator::kNoProperties, 2, 0) \ - V(NumberModulus, Operator::kNoProperties, 2, 0) \ - V(NumberBitwiseOr, Operator::kCommutative, 2, 0) \ - V(NumberBitwiseXor, Operator::kCommutative, 2, 0) \ - V(NumberBitwiseAnd, Operator::kCommutative, 2, 0) \ - V(NumberShiftLeft, Operator::kNoProperties, 2, 0) \ - V(NumberShiftRight, Operator::kNoProperties, 2, 0) \ - V(NumberShiftRightLogical, Operator::kNoProperties, 2, 0) \ - V(NumberImul, Operator::kCommutative, 2, 0) \ - V(NumberAbs, Operator::kNoProperties, 1, 0) \ - V(NumberClz32, Operator::kNoProperties, 1, 0) \ - V(NumberCeil, Operator::kNoProperties, 1, 0) \ - V(NumberFloor, Operator::kNoProperties, 1, 0) \ - V(NumberFround, Operator::kNoProperties, 1, 0) \ - V(NumberAcos, Operator::kNoProperties, 1, 0) \ - V(NumberAcosh, Operator::kNoProperties, 1, 0) \ - V(NumberAsin, Operator::kNoProperties, 1, 0) \ - V(NumberAsinh, Operator::kNoProperties, 1, 0) \ - V(NumberAtan, Operator::kNoProperties, 1, 0) \ - V(NumberAtan2, Operator::kNoProperties, 2, 0) \ - V(NumberAtanh, Operator::kNoProperties, 1, 0) \ - V(NumberCbrt, Operator::kNoProperties, 1, 0) \ - V(NumberCos, Operator::kNoProperties, 1, 0) \ - V(NumberCosh, Operator::kNoProperties, 1, 0) \ - V(NumberExp, Operator::kNoProperties, 1, 0) \ - V(NumberExpm1, Operator::kNoProperties, 1, 0) \ - V(NumberLog, Operator::kNoProperties, 1, 0) \ - V(NumberLog1p, Operator::kNoProperties, 1, 0) \ - V(NumberLog10, Operator::kNoProperties, 1, 0) \ - V(NumberLog2, Operator::kNoProperties, 1, 0) \ - V(NumberMax, Operator::kNoProperties, 2, 0) \ - V(NumberMin, Operator::kNoProperties, 2, 0) \ - V(NumberPow, Operator::kNoProperties, 2, 0) \ - V(NumberRound, Operator::kNoProperties, 1, 0) \ - V(NumberSign, Operator::kNoProperties, 1, 0) \ - V(NumberSin, Operator::kNoProperties, 1, 0) \ - V(NumberSinh, Operator::kNoProperties, 1, 0) \ - V(NumberSqrt, Operator::kNoProperties, 1, 0) \ - V(NumberTan, Operator::kNoProperties, 1, 0) \ - V(NumberTanh, Operator::kNoProperties, 1, 0) \ - V(NumberTrunc, Operator::kNoProperties, 1, 0) \ - V(NumberToBoolean, Operator::kNoProperties, 1, 0) \ - V(NumberToInt32, Operator::kNoProperties, 1, 0) \ - V(NumberToString, Operator::kNoProperties, 1, 0) \ - V(NumberToUint32, Operator::kNoProperties, 1, 0) \ - V(NumberToUint8Clamped, Operator::kNoProperties, 1, 0) \ - V(NumberSilenceNaN, Operator::kNoProperties, 1, 0) \ - V(BigIntNegate, Operator::kNoProperties, 1, 0) \ - V(StringConcat, Operator::kNoProperties, 3, 0) \ - V(StringToNumber, Operator::kNoProperties, 1, 0) \ - V(StringFromSingleCharCode, Operator::kNoProperties, 1, 0) \ - V(StringFromSingleCodePoint, Operator::kNoProperties, 1, 0) \ - V(StringIndexOf, Operator::kNoProperties, 3, 0) \ - V(StringLength, Operator::kNoProperties, 1, 0) \ - V(StringToLowerCaseIntl, Operator::kNoProperties, 1, 0) \ - V(StringToUpperCaseIntl, Operator::kNoProperties, 1, 0) \ - V(TypeOf, Operator::kNoProperties, 1, 1) \ - V(PlainPrimitiveToNumber, Operator::kNoProperties, 1, 0) \ - V(PlainPrimitiveToWord32, Operator::kNoProperties, 1, 0) \ - V(PlainPrimitiveToFloat64, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedSignedToInt32, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedSignedToInt64, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedToInt32, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedToInt64, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedToUint32, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedToFloat64, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedToTaggedSigned, Operator::kNoProperties, 1, 0) \ - V(ChangeFloat64ToTaggedPointer, Operator::kNoProperties, 1, 0) \ - V(ChangeInt31ToTaggedSigned, Operator::kNoProperties, 1, 0) \ - V(ChangeInt32ToTagged, Operator::kNoProperties, 1, 0) \ - V(ChangeInt64ToTagged, Operator::kNoProperties, 1, 0) \ - V(ChangeUint32ToTagged, Operator::kNoProperties, 1, 0) \ - V(ChangeUint64ToTagged, Operator::kNoProperties, 1, 0) \ - V(ChangeTaggedToBit, Operator::kNoProperties, 1, 0) \ - V(ChangeBitToTagged, Operator::kNoProperties, 1, 0) \ - V(TruncateBigIntToUint64, Operator::kNoProperties, 1, 0) \ - V(ChangeUint64ToBigInt, Operator::kNoProperties, 1, 0) \ - V(TruncateTaggedToBit, Operator::kNoProperties, 1, 0) \ - V(TruncateTaggedPointerToBit, Operator::kNoProperties, 1, 0) \ - V(TruncateTaggedToWord32, Operator::kNoProperties, 1, 0) \ - V(TruncateTaggedToFloat64, Operator::kNoProperties, 1, 0) \ - V(ObjectIsArrayBufferView, Operator::kNoProperties, 1, 0) \ - V(ObjectIsBigInt, Operator::kNoProperties, 1, 0) \ - V(ObjectIsCallable, Operator::kNoProperties, 1, 0) \ - V(ObjectIsConstructor, Operator::kNoProperties, 1, 0) \ - V(ObjectIsDetectableCallable, Operator::kNoProperties, 1, 0) \ - V(ObjectIsMinusZero, Operator::kNoProperties, 1, 0) \ - V(NumberIsMinusZero, Operator::kNoProperties, 1, 0) \ - V(ObjectIsNaN, Operator::kNoProperties, 1, 0) \ - V(NumberIsNaN, Operator::kNoProperties, 1, 0) \ - V(ObjectIsNonCallable, Operator::kNoProperties, 1, 0) \ - V(ObjectIsNumber, Operator::kNoProperties, 1, 0) \ - V(ObjectIsReceiver, Operator::kNoProperties, 1, 0) \ - V(ObjectIsSmi, Operator::kNoProperties, 1, 0) \ - V(ObjectIsString, Operator::kNoProperties, 1, 0) \ - V(ObjectIsSymbol, Operator::kNoProperties, 1, 0) \ - V(ObjectIsUndetectable, Operator::kNoProperties, 1, 0) \ - V(NumberIsFloat64Hole, Operator::kNoProperties, 1, 0) \ - V(NumberIsFinite, Operator::kNoProperties, 1, 0) \ - V(ObjectIsFiniteNumber, Operator::kNoProperties, 1, 0) \ - V(NumberIsInteger, Operator::kNoProperties, 1, 0) \ - V(ObjectIsSafeInteger, Operator::kNoProperties, 1, 0) \ - V(NumberIsSafeInteger, Operator::kNoProperties, 1, 0) \ - V(ObjectIsInteger, Operator::kNoProperties, 1, 0) \ - V(ConvertTaggedHoleToUndefined, Operator::kNoProperties, 1, 0) \ - V(SameValue, Operator::kCommutative, 2, 0) \ - V(SameValueNumbersOnly, Operator::kCommutative, 2, 0) \ - V(NumberSameValue, Operator::kCommutative, 2, 0) \ - V(ReferenceEqual, Operator::kCommutative, 2, 0) \ - V(StringEqual, Operator::kCommutative, 2, 0) \ - V(StringLessThan, Operator::kNoProperties, 2, 0) \ - V(StringLessThanOrEqual, Operator::kNoProperties, 2, 0) \ - V(ToBoolean, Operator::kNoProperties, 1, 0) \ - V(NewConsString, Operator::kNoProperties, 3, 0) \ - V(PoisonIndex, Operator::kNoProperties, 1, 0) +#define PURE_OP_LIST(V) \ + V(BooleanNot, Operator::kNoProperties, 1, 0) \ + V(NumberEqual, Operator::kCommutative, 2, 0) \ + V(NumberLessThan, Operator::kNoProperties, 2, 0) \ + V(NumberLessThanOrEqual, Operator::kNoProperties, 2, 0) \ + V(NumberAdd, Operator::kCommutative, 2, 0) \ + V(NumberSubtract, Operator::kNoProperties, 2, 0) \ + V(NumberMultiply, Operator::kCommutative, 2, 0) \ + V(NumberDivide, Operator::kNoProperties, 2, 0) \ + V(NumberModulus, Operator::kNoProperties, 2, 0) \ + V(NumberBitwiseOr, Operator::kCommutative, 2, 0) \ + V(NumberBitwiseXor, Operator::kCommutative, 2, 0) \ + V(NumberBitwiseAnd, Operator::kCommutative, 2, 0) \ + V(NumberShiftLeft, Operator::kNoProperties, 2, 0) \ + V(NumberShiftRight, Operator::kNoProperties, 2, 0) \ + V(NumberShiftRightLogical, Operator::kNoProperties, 2, 0) \ + V(NumberImul, Operator::kCommutative, 2, 0) \ + V(NumberAbs, Operator::kNoProperties, 1, 0) \ + V(NumberClz32, Operator::kNoProperties, 1, 0) \ + V(NumberCeil, Operator::kNoProperties, 1, 0) \ + V(NumberFloor, Operator::kNoProperties, 1, 0) \ + V(NumberFround, Operator::kNoProperties, 1, 0) \ + V(NumberAcos, Operator::kNoProperties, 1, 0) \ + V(NumberAcosh, Operator::kNoProperties, 1, 0) \ + V(NumberAsin, Operator::kNoProperties, 1, 0) \ + V(NumberAsinh, Operator::kNoProperties, 1, 0) \ + V(NumberAtan, Operator::kNoProperties, 1, 0) \ + V(NumberAtan2, Operator::kNoProperties, 2, 0) \ + V(NumberAtanh, Operator::kNoProperties, 1, 0) \ + V(NumberCbrt, Operator::kNoProperties, 1, 0) \ + V(NumberCos, Operator::kNoProperties, 1, 0) \ + V(NumberCosh, Operator::kNoProperties, 1, 0) \ + V(NumberExp, Operator::kNoProperties, 1, 0) \ + V(NumberExpm1, Operator::kNoProperties, 1, 0) \ + V(NumberLog, Operator::kNoProperties, 1, 0) \ + V(NumberLog1p, Operator::kNoProperties, 1, 0) \ + V(NumberLog10, Operator::kNoProperties, 1, 0) \ + V(NumberLog2, Operator::kNoProperties, 1, 0) \ + V(NumberMax, Operator::kNoProperties, 2, 0) \ + V(NumberMin, Operator::kNoProperties, 2, 0) \ + V(NumberPow, Operator::kNoProperties, 2, 0) \ + V(NumberRound, Operator::kNoProperties, 1, 0) \ + V(NumberSign, Operator::kNoProperties, 1, 0) \ + V(NumberSin, Operator::kNoProperties, 1, 0) \ + V(NumberSinh, Operator::kNoProperties, 1, 0) \ + V(NumberSqrt, Operator::kNoProperties, 1, 0) \ + V(NumberTan, Operator::kNoProperties, 1, 0) \ + V(NumberTanh, Operator::kNoProperties, 1, 0) \ + V(NumberTrunc, Operator::kNoProperties, 1, 0) \ + V(NumberToBoolean, Operator::kNoProperties, 1, 0) \ + V(NumberToInt32, Operator::kNoProperties, 1, 0) \ + V(NumberToString, Operator::kNoProperties, 1, 0) \ + V(NumberToUint32, Operator::kNoProperties, 1, 0) \ + V(NumberToUint8Clamped, Operator::kNoProperties, 1, 0) \ + V(NumberSilenceNaN, Operator::kNoProperties, 1, 0) \ + V(BigIntNegate, Operator::kNoProperties, 1, 0) \ + V(StringConcat, Operator::kNoProperties, 3, 0) \ + V(StringToNumber, Operator::kNoProperties, 1, 0) \ + V(StringFromSingleCharCode, Operator::kNoProperties, 1, 0) \ + V(StringFromSingleCodePoint, Operator::kNoProperties, 1, 0) \ + V(StringIndexOf, Operator::kNoProperties, 3, 0) \ + V(StringLength, Operator::kNoProperties, 1, 0) \ + V(StringToLowerCaseIntl, Operator::kNoProperties, 1, 0) \ + V(StringToUpperCaseIntl, Operator::kNoProperties, 1, 0) \ + V(TypeOf, Operator::kNoProperties, 1, 1) \ + V(PlainPrimitiveToNumber, Operator::kNoProperties, 1, 0) \ + V(PlainPrimitiveToWord32, Operator::kNoProperties, 1, 0) \ + V(PlainPrimitiveToFloat64, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedSignedToInt32, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedSignedToInt64, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedToInt32, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedToInt64, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedToUint32, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedToFloat64, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedToTaggedSigned, Operator::kNoProperties, 1, 0) \ + V(ChangeFloat64ToTaggedPointer, Operator::kNoProperties, 1, 0) \ + V(ChangeInt31ToTaggedSigned, Operator::kNoProperties, 1, 0) \ + V(ChangeInt32ToTagged, Operator::kNoProperties, 1, 0) \ + V(ChangeInt64ToTagged, Operator::kNoProperties, 1, 0) \ + V(ChangeUint32ToTagged, Operator::kNoProperties, 1, 0) \ + V(ChangeUint64ToTagged, Operator::kNoProperties, 1, 0) \ + V(ChangeTaggedToBit, Operator::kNoProperties, 1, 0) \ + V(ChangeBitToTagged, Operator::kNoProperties, 1, 0) \ + V(TruncateBigIntToUint64, Operator::kNoProperties, 1, 0) \ + V(ChangeUint64ToBigInt, Operator::kNoProperties, 1, 0) \ + V(TruncateTaggedToBit, Operator::kNoProperties, 1, 0) \ + V(TruncateTaggedPointerToBit, Operator::kNoProperties, 1, 0) \ + V(TruncateTaggedToWord32, Operator::kNoProperties, 1, 0) \ + V(TruncateTaggedToFloat64, Operator::kNoProperties, 1, 0) \ + V(ObjectIsArrayBufferView, Operator::kNoProperties, 1, 0) \ + V(ObjectIsBigInt, Operator::kNoProperties, 1, 0) \ + V(ObjectIsCallable, Operator::kNoProperties, 1, 0) \ + V(ObjectIsConstructor, Operator::kNoProperties, 1, 0) \ + V(ObjectIsDetectableCallable, Operator::kNoProperties, 1, 0) \ + V(ObjectIsMinusZero, Operator::kNoProperties, 1, 0) \ + V(NumberIsMinusZero, Operator::kNoProperties, 1, 0) \ + V(ObjectIsNaN, Operator::kNoProperties, 1, 0) \ + V(NumberIsNaN, Operator::kNoProperties, 1, 0) \ + V(ObjectIsNonCallable, Operator::kNoProperties, 1, 0) \ + V(ObjectIsNumber, Operator::kNoProperties, 1, 0) \ + V(ObjectIsReceiver, Operator::kNoProperties, 1, 0) \ + V(ObjectIsSmi, Operator::kNoProperties, 1, 0) \ + V(ObjectIsString, Operator::kNoProperties, 1, 0) \ + V(ObjectIsSymbol, Operator::kNoProperties, 1, 0) \ + V(ObjectIsUndetectable, Operator::kNoProperties, 1, 0) \ + V(NumberIsFloat64Hole, Operator::kNoProperties, 1, 0) \ + V(NumberIsFinite, Operator::kNoProperties, 1, 0) \ + V(ObjectIsFiniteNumber, Operator::kNoProperties, 1, 0) \ + V(NumberIsInteger, Operator::kNoProperties, 1, 0) \ + V(ObjectIsSafeInteger, Operator::kNoProperties, 1, 0) \ + V(NumberIsSafeInteger, Operator::kNoProperties, 1, 0) \ + V(ObjectIsInteger, Operator::kNoProperties, 1, 0) \ + V(ConvertTaggedHoleToUndefined, Operator::kNoProperties, 1, 0) \ + V(SameValue, Operator::kCommutative, 2, 0) \ + V(SameValueNumbersOnly, Operator::kCommutative, 2, 0) \ + V(NumberSameValue, Operator::kCommutative, 2, 0) \ + V(ReferenceEqual, Operator::kCommutative, 2, 0) \ + V(StringEqual, Operator::kCommutative, 2, 0) \ + V(StringLessThan, Operator::kNoProperties, 2, 0) \ + V(StringLessThanOrEqual, Operator::kNoProperties, 2, 0) \ + V(ToBoolean, Operator::kNoProperties, 1, 0) \ + V(NewConsString, Operator::kNoProperties, 3, 0) #define EFFECT_DEPENDENT_OP_LIST(V) \ V(BigIntAdd, Operator::kNoProperties, 2, 1) \ diff --git a/deps/v8/src/compiler/simplified-operator.h b/deps/v8/src/compiler/simplified-operator.h index d7a5901448624b..0602b795a93477 100644 --- a/deps/v8/src/compiler/simplified-operator.h +++ b/deps/v8/src/compiler/simplified-operator.h @@ -46,10 +46,6 @@ size_t hash_value(BaseTaggedness); std::ostream& operator<<(std::ostream&, BaseTaggedness); -size_t hash_value(LoadSensitivity); - -std::ostream& operator<<(std::ostream&, LoadSensitivity); - struct ConstFieldInfo { // the map that introduced the const field, if any. An access is considered // mutable iff the handle is null. @@ -82,7 +78,6 @@ struct FieldAccess { Type type; // type of the field. MachineType machine_type; // machine type of the field. WriteBarrierKind write_barrier_kind; // write barrier hint. - LoadSensitivity load_sensitivity; // load safety for poisoning. ConstFieldInfo const_field_info; // the constness of this access, and the // field owner map, if the access is const bool is_store_in_literal; // originates from a kStoreInLiteral access @@ -96,14 +91,12 @@ struct FieldAccess { type(Type::None()), machine_type(MachineType::None()), write_barrier_kind(kFullWriteBarrier), - load_sensitivity(LoadSensitivity::kUnsafe), const_field_info(ConstFieldInfo::None()), is_store_in_literal(false) {} FieldAccess(BaseTaggedness base_is_tagged, int offset, MaybeHandle name, MaybeHandle map, Type type, MachineType machine_type, WriteBarrierKind write_barrier_kind, - LoadSensitivity load_sensitivity = LoadSensitivity::kUnsafe, ConstFieldInfo const_field_info = ConstFieldInfo::None(), bool is_store_in_literal = false #ifdef V8_HEAP_SANDBOX @@ -118,7 +111,6 @@ struct FieldAccess { type(type), machine_type(machine_type), write_barrier_kind(write_barrier_kind), - load_sensitivity(load_sensitivity), const_field_info(const_field_info), is_store_in_literal(is_store_in_literal) #ifdef V8_HEAP_SANDBOX @@ -162,25 +154,21 @@ struct ElementAccess { Type type; // type of the element. MachineType machine_type; // machine type of the element. WriteBarrierKind write_barrier_kind; // write barrier hint. - LoadSensitivity load_sensitivity; // load safety for poisoning. ElementAccess() : base_is_tagged(kTaggedBase), header_size(0), type(Type::None()), machine_type(MachineType::None()), - write_barrier_kind(kFullWriteBarrier), - load_sensitivity(LoadSensitivity::kUnsafe) {} + write_barrier_kind(kFullWriteBarrier) {} ElementAccess(BaseTaggedness base_is_tagged, int header_size, Type type, - MachineType machine_type, WriteBarrierKind write_barrier_kind, - LoadSensitivity load_sensitivity = LoadSensitivity::kUnsafe) + MachineType machine_type, WriteBarrierKind write_barrier_kind) : base_is_tagged(base_is_tagged), header_size(header_size), type(type), machine_type(machine_type), - write_barrier_kind(write_barrier_kind), - load_sensitivity(load_sensitivity) {} + write_barrier_kind(write_barrier_kind) {} int tag() const { return base_is_tagged == kTaggedBase ? kHeapObjectTag : 0; } }; @@ -926,7 +914,6 @@ class V8_EXPORT_PRIVATE SimplifiedOperatorBuilder final const Operator* TruncateTaggedToBit(); const Operator* TruncateTaggedPointerToBit(); - const Operator* PoisonIndex(); const Operator* CompareMaps(ZoneHandleSet); const Operator* MapGuard(ZoneHandleSet maps); diff --git a/deps/v8/src/compiler/typer.cc b/deps/v8/src/compiler/typer.cc index 529f1cc7bba2eb..3aaf5d2c8d440b 100644 --- a/deps/v8/src/compiler/typer.cc +++ b/deps/v8/src/compiler/typer.cc @@ -2065,10 +2065,6 @@ Type Typer::Visitor::TypeStringLength(Node* node) { Type Typer::Visitor::TypeStringSubstring(Node* node) { return Type::String(); } -Type Typer::Visitor::TypePoisonIndex(Node* node) { - return Type::Union(Operand(node, 0), typer_->cache_->kSingletonZero, zone()); -} - Type Typer::Visitor::TypeCheckBounds(Node* node) { return typer_->operation_typer_.CheckBounds(Operand(node, 0), Operand(node, 1)); diff --git a/deps/v8/src/compiler/verifier.cc b/deps/v8/src/compiler/verifier.cc index f33edaa6c0d4aa..a0f2aa569dc985 100644 --- a/deps/v8/src/compiler/verifier.cc +++ b/deps/v8/src/compiler/verifier.cc @@ -1422,10 +1422,6 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { CheckValueInputIs(node, 1, TypeCache::Get()->kPositiveSafeInteger); CheckTypeIs(node, TypeCache::Get()->kPositiveSafeInteger); break; - case IrOpcode::kPoisonIndex: - CheckValueInputIs(node, 0, Type::Unsigned32()); - CheckTypeIs(node, Type::Unsigned32()); - break; case IrOpcode::kCheckClosure: // Any -> Function CheckValueInputIs(node, 0, Type::Any()); @@ -1641,7 +1637,6 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { // ----------------------- case IrOpcode::kLoad: case IrOpcode::kLoadImmutable: - case IrOpcode::kPoisonedLoad: case IrOpcode::kProtectedLoad: case IrOpcode::kProtectedStore: case IrOpcode::kStore: @@ -1817,9 +1812,6 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { case IrOpcode::kWord32PairShl: case IrOpcode::kWord32PairShr: case IrOpcode::kWord32PairSar: - case IrOpcode::kTaggedPoisonOnSpeculation: - case IrOpcode::kWord32PoisonOnSpeculation: - case IrOpcode::kWord64PoisonOnSpeculation: case IrOpcode::kLoadStackCheckOffset: case IrOpcode::kLoadFramePointer: case IrOpcode::kLoadParentFramePointer: diff --git a/deps/v8/src/compiler/wasm-compiler.cc b/deps/v8/src/compiler/wasm-compiler.cc index f91c21fd1d4cb0..f2fe3c5e619a64 100644 --- a/deps/v8/src/compiler/wasm-compiler.cc +++ b/deps/v8/src/compiler/wasm-compiler.cc @@ -472,7 +472,6 @@ WasmGraphBuilder::WasmGraphBuilder( mcgraph_(mcgraph), env_(env), has_simd_(ContainsSimd(sig)), - untrusted_code_mitigations_(FLAG_untrusted_code_mitigations), sig_(sig), source_position_table_(source_position_table), isolate_(isolate) { @@ -2901,13 +2900,13 @@ Node* WasmGraphBuilder::BuildCallNode(const wasm::FunctionSig* sig, return call; } -Node* WasmGraphBuilder::BuildWasmCall( - const wasm::FunctionSig* sig, base::Vector args, - base::Vector rets, wasm::WasmCodePosition position, - Node* instance_node, UseRetpoline use_retpoline, Node* frame_state) { - CallDescriptor* call_descriptor = - GetWasmCallDescriptor(mcgraph()->zone(), sig, use_retpoline, - kWasmFunction, frame_state != nullptr); +Node* WasmGraphBuilder::BuildWasmCall(const wasm::FunctionSig* sig, + base::Vector args, + base::Vector rets, + wasm::WasmCodePosition position, + Node* instance_node, Node* frame_state) { + CallDescriptor* call_descriptor = GetWasmCallDescriptor( + mcgraph()->zone(), sig, kWasmFunction, frame_state != nullptr); const Operator* op = mcgraph()->common()->Call(call_descriptor); Node* call = BuildCallNode(sig, args, position, instance_node, op, frame_state); @@ -2935,10 +2934,9 @@ Node* WasmGraphBuilder::BuildWasmCall( Node* WasmGraphBuilder::BuildWasmReturnCall(const wasm::FunctionSig* sig, base::Vector args, wasm::WasmCodePosition position, - Node* instance_node, - UseRetpoline use_retpoline) { + Node* instance_node) { CallDescriptor* call_descriptor = - GetWasmCallDescriptor(mcgraph()->zone(), sig, use_retpoline); + GetWasmCallDescriptor(mcgraph()->zone(), sig); const Operator* op = mcgraph()->common()->TailCall(call_descriptor); Node* call = BuildCallNode(sig, args, position, instance_node, op); @@ -2982,15 +2980,13 @@ Node* WasmGraphBuilder::BuildImportCall(const wasm::FunctionSig* sig, Node* target_node = gasm_->LoadFromObject( MachineType::Pointer(), imported_targets, func_index_times_pointersize); args[0] = target_node; - const UseRetpoline use_retpoline = - untrusted_code_mitigations_ ? kRetpoline : kNoRetpoline; switch (continuation) { case kCallContinues: - return BuildWasmCall(sig, args, rets, position, ref_node, use_retpoline); + return BuildWasmCall(sig, args, rets, position, ref_node); case kReturnCall: DCHECK(rets.empty()); - return BuildWasmReturnCall(sig, args, position, ref_node, use_retpoline); + return BuildWasmReturnCall(sig, args, position, ref_node); } } @@ -3010,7 +3006,7 @@ Node* WasmGraphBuilder::CallDirect(uint32_t index, base::Vector args, Address code = static_cast
                  (index); args[0] = mcgraph()->RelocatableIntPtrConstant(code, RelocInfo::WASM_CALL); - return BuildWasmCall(sig, args, rets, position, nullptr, kNoRetpoline); + return BuildWasmCall(sig, args, rets, position, nullptr); } Node* WasmGraphBuilder::CallIndirect(uint32_t table_index, uint32_t sig_index, @@ -3095,16 +3091,6 @@ Node* WasmGraphBuilder::BuildIndirectCall(uint32_t table_index, Node* in_bounds = gasm_->Uint32LessThan(key, ift_size); TrapIfFalse(wasm::kTrapTableOutOfBounds, in_bounds, position); - // Mask the key to prevent SSCA. - if (untrusted_code_mitigations_) { - // mask = ((key - size) & ~key) >> 31 - Node* neg_key = gasm_->Word32Xor(key, Int32Constant(-1)); - Node* masked_diff = - gasm_->Word32And(gasm_->Int32Sub(key, ift_size), neg_key); - Node* mask = gasm_->Word32Sar(masked_diff, Int32Constant(31)); - key = gasm_->Word32And(key, mask); - } - const wasm::ValueType table_type = env_->module->tables[table_index].type; // Check that the table entry is not null and that the type of the function is // **identical with** the function type declared at the call site (no @@ -3140,16 +3126,12 @@ Node* WasmGraphBuilder::BuildIndirectCall(uint32_t table_index, intptr_scaled_key); args[0] = target; - const UseRetpoline use_retpoline = - untrusted_code_mitigations_ ? kRetpoline : kNoRetpoline; switch (continuation) { case kCallContinues: - return BuildWasmCall(sig, args, rets, position, target_instance, - use_retpoline); + return BuildWasmCall(sig, args, rets, position, target_instance); case kReturnCall: - return BuildWasmReturnCall(sig, args, position, target_instance, - use_retpoline); + return BuildWasmReturnCall(sig, args, position, target_instance); } } @@ -3244,14 +3226,9 @@ Node* WasmGraphBuilder::BuildCallRef(uint32_t sig_index, args[0] = end_label.PhiAt(0); - const UseRetpoline use_retpoline = - untrusted_code_mitigations_ ? kRetpoline : kNoRetpoline; - Node* call = continuation == kCallContinues - ? BuildWasmCall(sig, args, rets, position, instance_node, - use_retpoline) - : BuildWasmReturnCall(sig, args, position, instance_node, - use_retpoline); + ? BuildWasmCall(sig, args, rets, position, instance_node) + : BuildWasmReturnCall(sig, args, position, instance_node); return call; } @@ -3287,7 +3264,7 @@ Node* WasmGraphBuilder::ReturnCall(uint32_t index, base::Vector args, Address code = static_cast
                  (index); args[0] = mcgraph()->RelocatableIntPtrConstant(code, RelocInfo::WASM_CALL); - return BuildWasmReturnCall(sig, args, position, nullptr, kNoRetpoline); + return BuildWasmReturnCall(sig, args, position, nullptr); } Node* WasmGraphBuilder::ReturnCallIndirect(uint32_t table_index, @@ -3416,15 +3393,6 @@ void WasmGraphBuilder::InitInstanceCache( // Load the memory size. instance_cache->mem_size = LOAD_MUTABLE_INSTANCE_FIELD(MemorySize, MachineType::UintPtr()); - - if (untrusted_code_mitigations_) { - // Load the memory mask. - instance_cache->mem_mask = - LOAD_INSTANCE_FIELD(MemoryMask, MachineType::UintPtr()); - } else { - // Explicitly set to nullptr to ensure a SEGV when we try to use it. - instance_cache->mem_mask = nullptr; - } } void WasmGraphBuilder::PrepareInstanceCacheForLoop( @@ -3435,10 +3403,6 @@ void WasmGraphBuilder::PrepareInstanceCacheForLoop( INTRODUCE_PHI(mem_start, MachineType::PointerRepresentation()); INTRODUCE_PHI(mem_size, MachineType::PointerRepresentation()); - if (untrusted_code_mitigations_) { - INTRODUCE_PHI(mem_mask, MachineType::PointerRepresentation()); - } - #undef INTRODUCE_PHI } @@ -3453,10 +3417,6 @@ void WasmGraphBuilder::NewInstanceCacheMerge(WasmInstanceCacheNodes* to, INTRODUCE_PHI(mem_start, MachineType::PointerRepresentation()); INTRODUCE_PHI(mem_size, MachineRepresentation::kWord32); - if (untrusted_code_mitigations_) { - INTRODUCE_PHI(mem_mask, MachineRepresentation::kWord32); - } - #undef INTRODUCE_PHI } @@ -3467,10 +3427,6 @@ void WasmGraphBuilder::MergeInstanceCacheInto(WasmInstanceCacheNodes* to, merge, to->mem_size, from->mem_size); to->mem_start = CreateOrMergeIntoPhi(MachineType::PointerRepresentation(), merge, to->mem_start, from->mem_start); - if (untrusted_code_mitigations_) { - to->mem_mask = CreateOrMergeIntoPhi(MachineType::PointerRepresentation(), - merge, to->mem_mask, from->mem_mask); - } } Node* WasmGraphBuilder::CreateOrMergeIntoPhi(MachineRepresentation rep, @@ -3839,13 +3795,6 @@ WasmGraphBuilder::BoundsCheckMem(uint8_t access_size, Node* index, // Introduce the actual bounds check. Node* cond = gasm_->UintLessThan(index, effective_size); TrapIfFalse(wasm::kTrapMemOutOfBounds, cond, position); - - if (untrusted_code_mitigations_) { - // In the fallthrough case, condition the index with the memory mask. - Node* mem_mask = instance_cache_->mem_mask; - DCHECK_NOT_NULL(mem_mask); - index = gasm_->WordAnd(index, mem_mask); - } return {index, kDynamicallyChecked}; } @@ -4345,13 +4294,6 @@ Node* WasmGraphBuilder::BuildAsmjsLoadMem(MachineType type, Node* index) { gasm_->UintLessThan(index, mem_size), BranchHint::kTrue); bounds_check.Chain(control()); - if (untrusted_code_mitigations_) { - // Condition the index with the memory mask. - Node* mem_mask = instance_cache_->mem_mask; - DCHECK_NOT_NULL(mem_mask); - index = gasm_->WordAnd(index, mem_mask); - } - Node* load = graph()->NewNode(mcgraph()->machine()->Load(type), mem_start, index, effect(), bounds_check.if_true); SetEffectControl(bounds_check.EffectPhi(load, effect()), bounds_check.merge); @@ -4396,13 +4338,6 @@ Node* WasmGraphBuilder::BuildAsmjsStoreMem(MachineType type, Node* index, BranchHint::kTrue); bounds_check.Chain(control()); - if (untrusted_code_mitigations_) { - // Condition the index with the memory mask. - Node* mem_mask = instance_cache_->mem_mask; - DCHECK_NOT_NULL(mem_mask); - index = gasm_->Word32And(index, mem_mask); - } - index = BuildChangeUint32ToUintPtr(index); const Operator* store_op = mcgraph()->machine()->Store(StoreRepresentation( type.representation(), WriteBarrierKind::kNoWriteBarrier)); @@ -6659,8 +6594,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder { // The (cached) call target is the jump table slot for that function. args[0] = BuildLoadCallTargetFromExportedFunctionData(function_data); BuildWasmCall(sig_, base::VectorOf(args), base::VectorOf(rets), - wasm::kNoCodePosition, nullptr, kNoRetpoline, - frame_state); + wasm::kNoCodePosition, nullptr, frame_state); } } @@ -7623,8 +7557,7 @@ wasm::WasmCompilationResult CompileWasmImportCallWrapper( // Schedule and compile to machine code. CallDescriptor* incoming = - GetWasmCallDescriptor(&zone, sig, WasmGraphBuilder::kNoRetpoline, - WasmCallKind::kWasmImportWrapper); + GetWasmCallDescriptor(&zone, sig, WasmCallKind::kWasmImportWrapper); if (machine->Is32()) { incoming = GetI32WasmCallDescriptor(&zone, incoming); } @@ -7665,8 +7598,7 @@ wasm::WasmCode* CompileWasmCapiCallWrapper(wasm::NativeModule* native_module, // Run the compiler pipeline to generate machine code. CallDescriptor* call_descriptor = - GetWasmCallDescriptor(&zone, sig, WasmGraphBuilder::kNoRetpoline, - WasmCallKind::kWasmCapiFunction); + GetWasmCallDescriptor(&zone, sig, WasmCallKind::kWasmCapiFunction); if (mcgraph->machine()->Is32()) { call_descriptor = GetI32WasmCallDescriptor(&zone, call_descriptor); } @@ -7716,8 +7648,7 @@ MaybeHandle CompileWasmToJSWrapper(Isolate* isolate, // Generate the call descriptor. CallDescriptor* incoming = - GetWasmCallDescriptor(zone.get(), sig, WasmGraphBuilder::kNoRetpoline, - WasmCallKind::kWasmImportWrapper); + GetWasmCallDescriptor(zone.get(), sig, WasmCallKind::kWasmImportWrapper); // Run the compilation job synchronously. std::unique_ptr job( @@ -7997,10 +7928,9 @@ class LinkageLocationAllocator { } // namespace // General code uses the above configuration data. -CallDescriptor* GetWasmCallDescriptor( - Zone* zone, const wasm::FunctionSig* fsig, - WasmGraphBuilder::UseRetpoline use_retpoline, WasmCallKind call_kind, - bool need_frame_state) { +CallDescriptor* GetWasmCallDescriptor(Zone* zone, const wasm::FunctionSig* fsig, + WasmCallKind call_kind, + bool need_frame_state) { // The extra here is to accomodate the instance object as first parameter // and, when specified, the additional callable. bool extra_callable_param = @@ -8078,10 +8008,9 @@ CallDescriptor* GetWasmCallDescriptor( descriptor_kind = CallDescriptor::kCallWasmCapiFunction; } - CallDescriptor::Flags flags = - use_retpoline ? CallDescriptor::kRetpoline - : need_frame_state ? CallDescriptor::kNeedsFrameState - : CallDescriptor::kNoFlags; + CallDescriptor::Flags flags = need_frame_state + ? CallDescriptor::kNeedsFrameState + : CallDescriptor::kNoFlags; return zone->New( // -- descriptor_kind, // kind target_type, // target MachineType diff --git a/deps/v8/src/compiler/wasm-compiler.h b/deps/v8/src/compiler/wasm-compiler.h index 71e3111c8c6a4f..4cbf6baa67a23a 100644 --- a/deps/v8/src/compiler/wasm-compiler.h +++ b/deps/v8/src/compiler/wasm-compiler.h @@ -176,7 +176,6 @@ class JSWasmCallData { struct WasmInstanceCacheNodes { Node* mem_start; Node* mem_size; - Node* mem_mask; }; struct WasmLoopInfo { @@ -207,10 +206,6 @@ class WasmGraphBuilder { kNeedsBoundsCheck = true, kCanOmitBoundsCheck = false }; - enum UseRetpoline : bool { // -- - kRetpoline = true, - kNoRetpoline = false - }; enum CheckForNull : bool { // -- kWithNullCheck = true, kWithoutNullCheck = false @@ -576,12 +571,11 @@ class WasmGraphBuilder { IsReturnCall continuation); Node* BuildWasmCall(const wasm::FunctionSig* sig, base::Vector args, base::Vector rets, wasm::WasmCodePosition position, - Node* instance_node, UseRetpoline use_retpoline, - Node* frame_state = nullptr); + Node* instance_node, Node* frame_state = nullptr); Node* BuildWasmReturnCall(const wasm::FunctionSig* sig, base::Vector args, wasm::WasmCodePosition position, - Node* instance_node, UseRetpoline use_retpoline); + Node* instance_node); Node* BuildImportCall(const wasm::FunctionSig* sig, base::Vector args, base::Vector rets, wasm::WasmCodePosition position, int func_index, @@ -765,7 +759,6 @@ class WasmGraphBuilder { bool use_js_isolate_and_params() const { return isolate_ != nullptr; } bool has_simd_ = false; bool needs_stack_check_ = false; - const bool untrusted_code_mitigations_ = true; const wasm::FunctionSig* const sig_; @@ -791,8 +784,6 @@ V8_EXPORT_PRIVATE void BuildInlinedJSToWasmWrapper( V8_EXPORT_PRIVATE CallDescriptor* GetWasmCallDescriptor( Zone* zone, const wasm::FunctionSig* signature, - WasmGraphBuilder::UseRetpoline use_retpoline = - WasmGraphBuilder::kNoRetpoline, WasmCallKind kind = kWasmFunction, bool need_frame_state = false); V8_EXPORT_PRIVATE CallDescriptor* GetI32WasmCallDescriptor( diff --git a/deps/v8/src/diagnostics/objects-printer.cc b/deps/v8/src/diagnostics/objects-printer.cc index b18b9ee8ca6cfa..0d18118101d82a 100644 --- a/deps/v8/src/diagnostics/objects-printer.cc +++ b/deps/v8/src/diagnostics/objects-printer.cc @@ -1984,7 +1984,6 @@ void WasmInstanceObject::WasmInstanceObjectPrint(std::ostream& os) { } os << "\n - memory_start: " << static_cast(memory_start()); os << "\n - memory_size: " << memory_size(); - os << "\n - memory_mask: " << AsHex(memory_mask()); os << "\n - imported_function_targets: " << static_cast(imported_function_targets()); os << "\n - globals_start: " << static_cast(globals_start()); diff --git a/deps/v8/src/execution/isolate.cc b/deps/v8/src/execution/isolate.cc index 7ee5f40d3d927c..a95a485d3f379c 100644 --- a/deps/v8/src/execution/isolate.cc +++ b/deps/v8/src/execution/isolate.cc @@ -151,26 +151,6 @@ uint32_t DefaultEmbeddedBlobDataSize() { return v8_Default_embedded_blob_data_size_; } -#ifdef V8_MULTI_SNAPSHOTS -extern "C" const uint8_t* v8_Trusted_embedded_blob_code_; -extern "C" uint32_t v8_Trusted_embedded_blob_code_size_; -extern "C" const uint8_t* v8_Trusted_embedded_blob_data_; -extern "C" uint32_t v8_Trusted_embedded_blob_data_size_; - -const uint8_t* TrustedEmbeddedBlobCode() { - return v8_Trusted_embedded_blob_code_; -} -uint32_t TrustedEmbeddedBlobCodeSize() { - return v8_Trusted_embedded_blob_code_size_; -} -const uint8_t* TrustedEmbeddedBlobData() { - return v8_Trusted_embedded_blob_data_; -} -uint32_t TrustedEmbeddedBlobDataSize() { - return v8_Trusted_embedded_blob_data_size_; -} -#endif - namespace { // These variables provide access to the current embedded blob without requiring // an isolate instance. This is needed e.g. by Code::InstructionStart, which may @@ -282,9 +262,6 @@ bool Isolate::CurrentEmbeddedBlobIsBinaryEmbedded() { const uint8_t* code = current_embedded_blob_code_.load(std::memory_order::memory_order_relaxed); if (code == nullptr) return false; -#ifdef V8_MULTI_SNAPSHOTS - if (code == TrustedEmbeddedBlobCode()) return true; -#endif return code == DefaultEmbeddedBlobCode(); } @@ -3407,15 +3384,6 @@ void Isolate::InitializeDefaultEmbeddedBlob() { const uint8_t* data = DefaultEmbeddedBlobData(); uint32_t data_size = DefaultEmbeddedBlobDataSize(); -#ifdef V8_MULTI_SNAPSHOTS - if (!FLAG_untrusted_code_mitigations) { - code = TrustedEmbeddedBlobCode(); - code_size = TrustedEmbeddedBlobCodeSize(); - data = TrustedEmbeddedBlobData(); - data_size = TrustedEmbeddedBlobDataSize(); - } -#endif - if (StickyEmbeddedBlobCode() != nullptr) { base::MutexGuard guard(current_embedded_blob_refcount_mutex_.Pointer()); // Check again now that we hold the lock. diff --git a/deps/v8/src/flags/flag-definitions.h b/deps/v8/src/flags/flag-definitions.h index 5daf17566f8087..d8e1dd6b9c133a 100644 --- a/deps/v8/src/flags/flag-definitions.h +++ b/deps/v8/src/flags/flag-definitions.h @@ -882,15 +882,6 @@ DEFINE_BOOL(optimize_for_size, false, "speed") DEFINE_VALUE_IMPLICATION(optimize_for_size, max_semi_space_size, 1) -#ifdef DISABLE_UNTRUSTED_CODE_MITIGATIONS -#define V8_DEFAULT_UNTRUSTED_CODE_MITIGATIONS false -#else -#define V8_DEFAULT_UNTRUSTED_CODE_MITIGATIONS true -#endif -DEFINE_BOOL(untrusted_code_mitigations, V8_DEFAULT_UNTRUSTED_CODE_MITIGATIONS, - "Enable mitigations for executing untrusted code") -#undef V8_DEFAULT_UNTRUSTED_CODE_MITIGATIONS - // Flags for WebAssembly. #if V8_ENABLE_WEBASSEMBLY diff --git a/deps/v8/src/init/startup-data-util.cc b/deps/v8/src/init/startup-data-util.cc index d480e3dcc2b0d5..fc880631cdedcd 100644 --- a/deps/v8/src/init/startup-data-util.cc +++ b/deps/v8/src/init/startup-data-util.cc @@ -76,11 +76,6 @@ void LoadFromFile(const char* snapshot_blob) { void InitializeExternalStartupData(const char* directory_path) { #ifdef V8_USE_EXTERNAL_STARTUP_DATA const char* snapshot_name = "snapshot_blob.bin"; -#ifdef V8_MULTI_SNAPSHOTS - if (!FLAG_untrusted_code_mitigations) { - snapshot_name = "snapshot_blob_trusted.bin"; - } -#endif std::unique_ptr snapshot = base::RelativePath(directory_path, snapshot_name); LoadFromFile(snapshot.get()); diff --git a/deps/v8/src/interpreter/interpreter-assembler.cc b/deps/v8/src/interpreter/interpreter-assembler.cc index c6d6e44a2f08c9..090a77b34637a0 100644 --- a/deps/v8/src/interpreter/interpreter-assembler.cc +++ b/deps/v8/src/interpreter/interpreter-assembler.cc @@ -157,7 +157,7 @@ TNode InterpreterAssembler::GetAccumulator() { DCHECK(Bytecodes::ReadsAccumulator(bytecode_)); implicit_register_use_ = implicit_register_use_ | ImplicitRegisterUse::kReadAccumulator; - return TaggedPoisonOnSpeculation(GetAccumulatorUnchecked()); + return GetAccumulatorUnchecked(); } void InterpreterAssembler::SetAccumulator(TNode value) { @@ -204,8 +204,8 @@ TNode InterpreterAssembler::GetContextAtDepth(TNode context, TNode InterpreterAssembler::RegisterLocation( TNode reg_index) { - return Signed(WordPoisonOnSpeculation( - IntPtrAdd(GetInterpretedFramePointer(), RegisterFrameOffset(reg_index)))); + return Signed( + IntPtrAdd(GetInterpretedFramePointer(), RegisterFrameOffset(reg_index))); } TNode InterpreterAssembler::RegisterLocation(Register reg) { @@ -218,8 +218,7 @@ TNode InterpreterAssembler::RegisterFrameOffset(TNode index) { TNode InterpreterAssembler::LoadRegister(TNode reg_index) { return LoadFullTagged(GetInterpretedFramePointer(), - RegisterFrameOffset(reg_index), - LoadSensitivity::kCritical); + RegisterFrameOffset(reg_index)); } TNode InterpreterAssembler::LoadRegister(Register reg) { @@ -242,16 +241,14 @@ TNode InterpreterAssembler::LoadAndUntagRegister(Register reg) { TNode InterpreterAssembler::LoadRegisterAtOperandIndex( int operand_index) { - return LoadRegister( - BytecodeOperandReg(operand_index, LoadSensitivity::kSafe)); + return LoadRegister(BytecodeOperandReg(operand_index)); } std::pair, TNode> InterpreterAssembler::LoadRegisterPairAtOperandIndex(int operand_index) { DCHECK_EQ(OperandType::kRegPair, Bytecodes::GetOperandType(bytecode_, operand_index)); - TNode first_reg_index = - BytecodeOperandReg(operand_index, LoadSensitivity::kSafe); + TNode first_reg_index = BytecodeOperandReg(operand_index); TNode second_reg_index = NextRegister(first_reg_index); return std::make_pair(LoadRegister(first_reg_index), LoadRegister(second_reg_index)); @@ -263,8 +260,7 @@ InterpreterAssembler::GetRegisterListAtOperandIndex(int operand_index) { Bytecodes::GetOperandType(bytecode_, operand_index))); DCHECK_EQ(OperandType::kRegCount, Bytecodes::GetOperandType(bytecode_, operand_index + 1)); - TNode base_reg = RegisterLocation( - BytecodeOperandReg(operand_index, LoadSensitivity::kSafe)); + TNode base_reg = RegisterLocation(BytecodeOperandReg(operand_index)); TNode reg_count = BytecodeOperandCount(operand_index + 1); return RegListNodePair(base_reg, reg_count); } @@ -272,7 +268,6 @@ InterpreterAssembler::GetRegisterListAtOperandIndex(int operand_index) { TNode InterpreterAssembler::LoadRegisterFromRegisterList( const RegListNodePair& reg_list, int index) { TNode location = RegisterLocationInRegisterList(reg_list, index); - // Location is already poisoned on speculation, so no need to poison here. return LoadFullTagged(location); } @@ -329,8 +324,7 @@ void InterpreterAssembler::StoreRegisterForShortStar(TNode value, void InterpreterAssembler::StoreRegisterAtOperandIndex(TNode value, int operand_index) { - StoreRegister(value, - BytecodeOperandReg(operand_index, LoadSensitivity::kSafe)); + StoreRegister(value, BytecodeOperandReg(operand_index)); } void InterpreterAssembler::StoreRegisterPairAtOperandIndex(TNode value1, @@ -338,8 +332,7 @@ void InterpreterAssembler::StoreRegisterPairAtOperandIndex(TNode value1, int operand_index) { DCHECK_EQ(OperandType::kRegOutPair, Bytecodes::GetOperandType(bytecode_, operand_index)); - TNode first_reg_index = - BytecodeOperandReg(operand_index, LoadSensitivity::kSafe); + TNode first_reg_index = BytecodeOperandReg(operand_index); StoreRegister(value1, first_reg_index); TNode second_reg_index = NextRegister(first_reg_index); StoreRegister(value2, second_reg_index); @@ -350,8 +343,7 @@ void InterpreterAssembler::StoreRegisterTripleAtOperandIndex( int operand_index) { DCHECK_EQ(OperandType::kRegOutTriple, Bytecodes::GetOperandType(bytecode_, operand_index)); - TNode first_reg_index = - BytecodeOperandReg(operand_index, LoadSensitivity::kSafe); + TNode first_reg_index = BytecodeOperandReg(operand_index); StoreRegister(value1, first_reg_index); TNode second_reg_index = NextRegister(first_reg_index); StoreRegister(value2, second_reg_index); @@ -370,30 +362,27 @@ TNode InterpreterAssembler::OperandOffset(int operand_index) { } TNode InterpreterAssembler::BytecodeOperandUnsignedByte( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_LT(operand_index, Bytecodes::NumberOfOperands(bytecode_)); DCHECK_EQ(OperandSize::kByte, Bytecodes::GetOperandSize( bytecode_, operand_index, operand_scale())); TNode operand_offset = OperandOffset(operand_index); return Load(BytecodeArrayTaggedPointer(), - IntPtrAdd(BytecodeOffset(), operand_offset), - needs_poisoning); + IntPtrAdd(BytecodeOffset(), operand_offset)); } TNode InterpreterAssembler::BytecodeOperandSignedByte( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_LT(operand_index, Bytecodes::NumberOfOperands(bytecode_)); DCHECK_EQ(OperandSize::kByte, Bytecodes::GetOperandSize( bytecode_, operand_index, operand_scale())); TNode operand_offset = OperandOffset(operand_index); return Load(BytecodeArrayTaggedPointer(), - IntPtrAdd(BytecodeOffset(), operand_offset), - needs_poisoning); + IntPtrAdd(BytecodeOffset(), operand_offset)); } TNode InterpreterAssembler::BytecodeOperandReadUnaligned( - int relative_offset, MachineType result_type, - LoadSensitivity needs_poisoning) { + int relative_offset, MachineType result_type) { static const int kMaxCount = 4; DCHECK(!TargetSupportsUnalignedAccess()); @@ -430,9 +419,8 @@ TNode InterpreterAssembler::BytecodeOperandReadUnaligned( TNode offset = IntPtrConstant(relative_offset + msb_offset + i * kStep); TNode array_offset = IntPtrAdd(BytecodeOffset(), offset); - bytes[i] = - UncheckedCast(Load(machine_type, BytecodeArrayTaggedPointer(), - array_offset, needs_poisoning)); + bytes[i] = UncheckedCast( + Load(machine_type, BytecodeArrayTaggedPointer(), array_offset)); } // Pack LSB to MSB. @@ -446,7 +434,7 @@ TNode InterpreterAssembler::BytecodeOperandReadUnaligned( } TNode InterpreterAssembler::BytecodeOperandUnsignedShort( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_LT(operand_index, Bytecodes::NumberOfOperands(bytecode_)); DCHECK_EQ( OperandSize::kShort, @@ -456,16 +444,15 @@ TNode InterpreterAssembler::BytecodeOperandUnsignedShort( if (TargetSupportsUnalignedAccess()) { return Load( BytecodeArrayTaggedPointer(), - IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset)), - needs_poisoning); + IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset))); } else { - return UncheckedCast(BytecodeOperandReadUnaligned( - operand_offset, MachineType::Uint16(), needs_poisoning)); + return UncheckedCast( + BytecodeOperandReadUnaligned(operand_offset, MachineType::Uint16())); } } TNode InterpreterAssembler::BytecodeOperandSignedShort( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_LT(operand_index, Bytecodes::NumberOfOperands(bytecode_)); DCHECK_EQ( OperandSize::kShort, @@ -475,16 +462,15 @@ TNode InterpreterAssembler::BytecodeOperandSignedShort( if (TargetSupportsUnalignedAccess()) { return Load( BytecodeArrayTaggedPointer(), - IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset)), - needs_poisoning); + IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset))); } else { - return UncheckedCast(BytecodeOperandReadUnaligned( - operand_offset, MachineType::Int16(), needs_poisoning)); + return UncheckedCast( + BytecodeOperandReadUnaligned(operand_offset, MachineType::Int16())); } } TNode InterpreterAssembler::BytecodeOperandUnsignedQuad( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_LT(operand_index, Bytecodes::NumberOfOperands(bytecode_)); DCHECK_EQ(OperandSize::kQuad, Bytecodes::GetOperandSize( bytecode_, operand_index, operand_scale())); @@ -493,16 +479,15 @@ TNode InterpreterAssembler::BytecodeOperandUnsignedQuad( if (TargetSupportsUnalignedAccess()) { return Load( BytecodeArrayTaggedPointer(), - IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset)), - needs_poisoning); + IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset))); } else { - return UncheckedCast(BytecodeOperandReadUnaligned( - operand_offset, MachineType::Uint32(), needs_poisoning)); + return UncheckedCast( + BytecodeOperandReadUnaligned(operand_offset, MachineType::Uint32())); } } TNode InterpreterAssembler::BytecodeOperandSignedQuad( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_LT(operand_index, Bytecodes::NumberOfOperands(bytecode_)); DCHECK_EQ(OperandSize::kQuad, Bytecodes::GetOperandSize( bytecode_, operand_index, operand_scale())); @@ -511,43 +496,40 @@ TNode InterpreterAssembler::BytecodeOperandSignedQuad( if (TargetSupportsUnalignedAccess()) { return Load( BytecodeArrayTaggedPointer(), - IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset)), - needs_poisoning); + IntPtrAdd(BytecodeOffset(), IntPtrConstant(operand_offset))); } else { - return UncheckedCast(BytecodeOperandReadUnaligned( - operand_offset, MachineType::Int32(), needs_poisoning)); + return UncheckedCast( + BytecodeOperandReadUnaligned(operand_offset, MachineType::Int32())); } } TNode InterpreterAssembler::BytecodeSignedOperand( - int operand_index, OperandSize operand_size, - LoadSensitivity needs_poisoning) { + int operand_index, OperandSize operand_size) { DCHECK(!Bytecodes::IsUnsignedOperandType( Bytecodes::GetOperandType(bytecode_, operand_index))); switch (operand_size) { case OperandSize::kByte: - return BytecodeOperandSignedByte(operand_index, needs_poisoning); + return BytecodeOperandSignedByte(operand_index); case OperandSize::kShort: - return BytecodeOperandSignedShort(operand_index, needs_poisoning); + return BytecodeOperandSignedShort(operand_index); case OperandSize::kQuad: - return BytecodeOperandSignedQuad(operand_index, needs_poisoning); + return BytecodeOperandSignedQuad(operand_index); case OperandSize::kNone: UNREACHABLE(); } } TNode InterpreterAssembler::BytecodeUnsignedOperand( - int operand_index, OperandSize operand_size, - LoadSensitivity needs_poisoning) { + int operand_index, OperandSize operand_size) { DCHECK(Bytecodes::IsUnsignedOperandType( Bytecodes::GetOperandType(bytecode_, operand_index))); switch (operand_size) { case OperandSize::kByte: - return BytecodeOperandUnsignedByte(operand_index, needs_poisoning); + return BytecodeOperandUnsignedByte(operand_index); case OperandSize::kShort: - return BytecodeOperandUnsignedShort(operand_index, needs_poisoning); + return BytecodeOperandUnsignedShort(operand_index); case OperandSize::kQuad: - return BytecodeOperandUnsignedQuad(operand_index, needs_poisoning); + return BytecodeOperandUnsignedQuad(operand_index); case OperandSize::kNone: UNREACHABLE(); } @@ -629,23 +611,22 @@ TNode InterpreterAssembler::BytecodeOperandIdxTaggedIndex( } TNode InterpreterAssembler::BytecodeOperandConstantPoolIdx( - int operand_index, LoadSensitivity needs_poisoning) { + int operand_index) { DCHECK_EQ(OperandType::kIdx, Bytecodes::GetOperandType(bytecode_, operand_index)); OperandSize operand_size = Bytecodes::GetOperandSize(bytecode_, operand_index, operand_scale()); return ChangeUint32ToWord( - BytecodeUnsignedOperand(operand_index, operand_size, needs_poisoning)); + BytecodeUnsignedOperand(operand_index, operand_size)); } -TNode InterpreterAssembler::BytecodeOperandReg( - int operand_index, LoadSensitivity needs_poisoning) { +TNode InterpreterAssembler::BytecodeOperandReg(int operand_index) { DCHECK(Bytecodes::IsRegisterOperandType( Bytecodes::GetOperandType(bytecode_, operand_index))); OperandSize operand_size = Bytecodes::GetOperandSize(bytecode_, operand_index, operand_scale()); return ChangeInt32ToIntPtr( - BytecodeSignedOperand(operand_index, operand_size, needs_poisoning)); + BytecodeSignedOperand(operand_index, operand_size)); } TNode InterpreterAssembler::BytecodeOperandRuntimeId( @@ -682,8 +663,7 @@ TNode InterpreterAssembler::LoadConstantPoolEntry(TNode index) { TNode constant_pool = CAST(LoadObjectField( BytecodeArrayTaggedPointer(), BytecodeArray::kConstantPoolOffset)); return UnsafeLoadFixedArrayElement(constant_pool, - UncheckedCast(index), 0, - LoadSensitivity::kCritical); + UncheckedCast(index), 0); } TNode InterpreterAssembler::LoadAndUntagConstantPoolEntry( @@ -693,8 +673,7 @@ TNode InterpreterAssembler::LoadAndUntagConstantPoolEntry( TNode InterpreterAssembler::LoadConstantPoolEntryAtOperandIndex( int operand_index) { - TNode index = - BytecodeOperandConstantPoolIdx(operand_index, LoadSensitivity::kSafe); + TNode index = BytecodeOperandConstantPoolIdx(operand_index); return LoadConstantPoolEntry(index); } @@ -1224,13 +1203,9 @@ void InterpreterAssembler::DispatchToBytecode( void InterpreterAssembler::DispatchToBytecodeHandlerEntry( TNode handler_entry, TNode bytecode_offset) { - // Propagate speculation poisoning. - TNode poisoned_handler_entry = - UncheckedCast(WordPoisonOnSpeculation(handler_entry)); - TailCallBytecodeDispatch(InterpreterDispatchDescriptor{}, - poisoned_handler_entry, GetAccumulatorUnchecked(), - bytecode_offset, BytecodeArrayTaggedPointer(), - DispatchTablePointer()); + TailCallBytecodeDispatch( + InterpreterDispatchDescriptor{}, handler_entry, GetAccumulatorUnchecked(), + bytecode_offset, BytecodeArrayTaggedPointer(), DispatchTablePointer()); } void InterpreterAssembler::DispatchWide(OperandScale operand_scale) { diff --git a/deps/v8/src/interpreter/interpreter-assembler.h b/deps/v8/src/interpreter/interpreter-assembler.h index bf4641200bbd12..d89c05e2d389a4 100644 --- a/deps/v8/src/interpreter/interpreter-assembler.h +++ b/deps/v8/src/interpreter/interpreter-assembler.h @@ -308,51 +308,32 @@ class V8_EXPORT_PRIVATE InterpreterAssembler : public CodeStubAssembler { // The |result_type| determines the size and signedness. of the // value read. This method should only be used on architectures that // do not support unaligned memory accesses. - TNode BytecodeOperandReadUnaligned( - int relative_offset, MachineType result_type, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); + TNode BytecodeOperandReadUnaligned(int relative_offset, + MachineType result_type); // Returns zero- or sign-extended to word32 value of the operand. - TNode BytecodeOperandUnsignedByte( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); - TNode BytecodeOperandSignedByte( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); - TNode BytecodeOperandUnsignedShort( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); - TNode BytecodeOperandSignedShort( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); - TNode BytecodeOperandUnsignedQuad( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); - TNode BytecodeOperandSignedQuad( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); + TNode BytecodeOperandUnsignedByte(int operand_index); + TNode BytecodeOperandSignedByte(int operand_index); + TNode BytecodeOperandUnsignedShort(int operand_index); + TNode BytecodeOperandSignedShort(int operand_index); + TNode BytecodeOperandUnsignedQuad(int operand_index); + TNode BytecodeOperandSignedQuad(int operand_index); // Returns zero- or sign-extended to word32 value of the operand of // given size. - TNode BytecodeSignedOperand( - int operand_index, OperandSize operand_size, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); - TNode BytecodeUnsignedOperand( - int operand_index, OperandSize operand_size, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); + TNode BytecodeSignedOperand(int operand_index, + OperandSize operand_size); + TNode BytecodeUnsignedOperand(int operand_index, + OperandSize operand_size); // Returns the word-size sign-extended register index for bytecode operand - // |operand_index| in the current bytecode. Value is not poisoned on - // speculation since the value loaded from the register is poisoned instead. - TNode BytecodeOperandReg( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); + // |operand_index| in the current bytecode. + TNode BytecodeOperandReg(int operand_index); // Returns the word zero-extended index immediate for bytecode operand - // |operand_index| in the current bytecode for use when loading a . - TNode BytecodeOperandConstantPoolIdx( - int operand_index, - LoadSensitivity needs_poisoning = LoadSensitivity::kCritical); + // |operand_index| in the current bytecode for use when loading a constant + // pool element. + TNode BytecodeOperandConstantPoolIdx(int operand_index); // Jump relative to the current bytecode by the |jump_offset|. If |backward|, // then jump backward (subtract the offset), otherwise jump forward (add the diff --git a/deps/v8/src/interpreter/interpreter-generator.cc b/deps/v8/src/interpreter/interpreter-generator.cc index e010ab2f640607..5508c07e3f4708 100644 --- a/deps/v8/src/interpreter/interpreter-generator.cc +++ b/deps/v8/src/interpreter/interpreter-generator.cc @@ -3074,9 +3074,6 @@ Handle GenerateBytecodeHandler(Isolate* isolate, const char* debug_name, compiler::CodeAssemblerState state( isolate, &zone, InterpreterDispatchDescriptor{}, CodeKind::BYTECODE_HANDLER, debug_name, - FLAG_untrusted_code_mitigations - ? PoisoningMitigationLevel::kPoisonCriticalOnly - : PoisoningMitigationLevel::kDontPoison, builtin); switch (bytecode) { diff --git a/deps/v8/src/objects/source-text-module.cc b/deps/v8/src/objects/source-text-module.cc index cf1773f2d60e1d..c7764c365a4025 100644 --- a/deps/v8/src/objects/source-text-module.cc +++ b/deps/v8/src/objects/source-text-module.cc @@ -766,14 +766,14 @@ MaybeHandle SourceTextModule::Evaluate( return result; } -void SourceTextModule::AsyncModuleExecutionFulfilled( +Maybe SourceTextModule::AsyncModuleExecutionFulfilled( Isolate* isolate, Handle module) { // 1. If module.[[Status]] is evaluated, then if (module->status() == kErrored) { // a. Assert: module.[[EvaluationError]] is not empty. DCHECK(!module->exception().IsTheHole(isolate)); // b. Return. - return; + return Just(true); } // 3. Assert: module.[[AsyncEvaluating]] is true. DCHECK(module->IsAsyncEvaluating()); @@ -829,7 +829,9 @@ void SourceTextModule::AsyncModuleExecutionFulfilled( } else if (m->async()) { // ii. Otherwise, if m.[[Async]] is *true*, then // a. Perform ! ExecuteAsyncModule(m). - ExecuteAsyncModule(isolate, m); + // The execution may have been terminated and can not be resumed, so just + // raise the exception. + MAYBE_RETURN(ExecuteAsyncModule(isolate, m), Nothing()); } else { // iii. Otherwise, // a. Let _result_ be m.ExecuteModule(). @@ -863,6 +865,7 @@ void SourceTextModule::AsyncModuleExecutionFulfilled( } // 10. Return undefined. + return Just(true); } void SourceTextModule::AsyncModuleExecutionRejected( @@ -922,8 +925,9 @@ void SourceTextModule::AsyncModuleExecutionRejected( } } -void SourceTextModule::ExecuteAsyncModule(Isolate* isolate, - Handle module) { +// static +Maybe SourceTextModule::ExecuteAsyncModule( + Isolate* isolate, Handle module) { // 1. Assert: module.[[Status]] is "evaluating" or "evaluated". CHECK(module->status() == kEvaluating || module->status() == kEvaluated); @@ -973,9 +977,19 @@ void SourceTextModule::ExecuteAsyncModule(Isolate* isolate, // Note: In V8 we have broken module.ExecuteModule into // ExecuteModule for synchronous module execution and // InnerExecuteAsyncModule for asynchronous execution. - InnerExecuteAsyncModule(isolate, module, capability).ToHandleChecked(); + MaybeHandle ret = + InnerExecuteAsyncModule(isolate, module, capability); + if (ret.is_null()) { + // The evaluation of async module can not throwing a JavaScript observable + // exception. + DCHECK(isolate->has_pending_exception()); + DCHECK_EQ(isolate->pending_exception(), + ReadOnlyRoots(isolate).termination_exception()); + return Nothing(); + } // 13. Return. + return Just(true); } MaybeHandle SourceTextModule::InnerExecuteAsyncModule( @@ -1171,8 +1185,11 @@ MaybeHandle SourceTextModule::InnerModuleEvaluation( // c. If module.[[PendingAsyncDependencies]] is 0, // perform ! ExecuteAsyncModule(_module_). + // The execution may have been terminated and can not be resumed, so just + // raise the exception. if (!module->HasPendingAsyncDependencies()) { - SourceTextModule::ExecuteAsyncModule(isolate, module); + MAYBE_RETURN(SourceTextModule::ExecuteAsyncModule(isolate, module), + MaybeHandle()); } } else { // 15. Otherwise, perform ? module.ExecuteModule(). diff --git a/deps/v8/src/objects/source-text-module.h b/deps/v8/src/objects/source-text-module.h index 6f2a3cd0f72f72..4bb54b90e17be7 100644 --- a/deps/v8/src/objects/source-text-module.h +++ b/deps/v8/src/objects/source-text-module.h @@ -53,9 +53,10 @@ class SourceTextModule static int ExportIndex(int cell_index); // Used by builtins to fulfill or reject the promise associated - // with async SourceTextModules. - static void AsyncModuleExecutionFulfilled(Isolate* isolate, - Handle module); + // with async SourceTextModules. Return Nothing if the execution is + // terminated. + static Maybe AsyncModuleExecutionFulfilled( + Isolate* isolate, Handle module); static void AsyncModuleExecutionRejected(Isolate* isolate, Handle module, Handle exception); @@ -204,9 +205,10 @@ class SourceTextModule static V8_WARN_UNUSED_RESULT MaybeHandle ExecuteModule( Isolate* isolate, Handle module); - // Implementation of spec ExecuteAsyncModule. - static void ExecuteAsyncModule(Isolate* isolate, - Handle module); + // Implementation of spec ExecuteAsyncModule. Return Nothing if the execution + // is been terminated. + static V8_WARN_UNUSED_RESULT Maybe ExecuteAsyncModule( + Isolate* isolate, Handle module); static void Reset(Isolate* isolate, Handle module); diff --git a/deps/v8/src/snapshot/embedded/embedded-empty.cc b/deps/v8/src/snapshot/embedded/embedded-empty.cc index c32b459d9d7bfa..e5355215f252cc 100644 --- a/deps/v8/src/snapshot/embedded/embedded-empty.cc +++ b/deps/v8/src/snapshot/embedded/embedded-empty.cc @@ -17,15 +17,3 @@ const uint8_t* v8_Default_embedded_blob_code_ = nullptr; uint32_t v8_Default_embedded_blob_code_size_ = 0; const uint8_t* v8_Default_embedded_blob_data_ = nullptr; uint32_t v8_Default_embedded_blob_data_size_ = 0; - -#ifdef V8_MULTI_SNAPSHOTS -extern "C" const uint8_t* v8_Trusted_embedded_blob_code_; -extern "C" uint32_t v8_Trusted_embedded_blob_code_size_; -extern "C" const uint8_t* v8_Trusted_embedded_blob_data_; -extern "C" uint32_t v8_Trusted_embedded_blob_data_size_; - -const uint8_t* v8_Trusted_embedded_blob_code_ = nullptr; -uint32_t v8_Trusted_embedded_blob_code_size_ = 0; -const uint8_t* v8_Trusted_embedded_blob_data_ = nullptr; -uint32_t v8_Trusted_embedded_blob_data_size_ = 0; -#endif diff --git a/deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h b/deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h index bb2fed83c6566f..4a0d4a72552200 100644 --- a/deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h +++ b/deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h @@ -4787,22 +4787,14 @@ void LiftoffAssembler::CallIndirect(const ValueKindSig* sig, // Since we have more cache registers than parameter registers, the // {LiftoffCompiler} should always be able to place {target} in a register. DCHECK(target.is_valid()); - if (FLAG_untrusted_code_mitigations) { - RetpolineCall(target); - } else { - call(target); - } + call(target); } void LiftoffAssembler::TailCallIndirect(Register target) { // Since we have more cache registers than parameter registers, the // {LiftoffCompiler} should always be able to place {target} in a register. DCHECK(target.is_valid()); - if (FLAG_untrusted_code_mitigations) { - RetpolineJump(target); - } else { - jmp(target); - } + jmp(target); } void LiftoffAssembler::CallRuntimeStub(WasmCode::RuntimeStubId sid) { diff --git a/deps/v8/src/wasm/baseline/liftoff-compiler.cc b/deps/v8/src/wasm/baseline/liftoff-compiler.cc index 92ee9efd67ae3a..c19a351b3c92a3 100644 --- a/deps/v8/src/wasm/baseline/liftoff-compiler.cc +++ b/deps/v8/src/wasm/baseline/liftoff-compiler.cc @@ -2815,30 +2815,6 @@ class LiftoffCompiler { __ DeallocateStackSlot(sizeof(MemoryTracingInfo)); } - Register AddMemoryMasking(Register index, uintptr_t* offset, - LiftoffRegList* pinned) { - if (!FLAG_untrusted_code_mitigations || - env_->bounds_checks == kTrapHandler) { - return index; - } - CODE_COMMENT("mask memory index"); - // Make sure that we can overwrite {index}. - if (__ cache_state()->is_used(LiftoffRegister(index))) { - Register old_index = index; - pinned->clear(LiftoffRegister{old_index}); - index = pinned->set(__ GetUnusedRegister(kGpReg, *pinned)).gp(); - if (index != old_index) { - __ Move(index, old_index, kPointerKind); - } - } - Register tmp = __ GetUnusedRegister(kGpReg, *pinned).gp(); - LOAD_INSTANCE_FIELD(tmp, MemoryMask, kSystemPointerSize, *pinned); - if (*offset) __ emit_ptrsize_addi(index, index, *offset); - __ emit_ptrsize_and(index, index, tmp); - *offset = 0; - return index; - } - bool IndexStaticallyInBounds(const LiftoffAssembler::VarState& index_slot, int access_size, uintptr_t* offset) { if (!index_slot.is_const()) return false; @@ -2899,7 +2875,6 @@ class LiftoffCompiler { CODE_COMMENT("load from memory"); LiftoffRegList pinned = LiftoffRegList::ForRegs(index); - index = AddMemoryMasking(index, &offset, &pinned); // Load the memory start address only now to reduce register pressure // (important on ia32). @@ -2944,7 +2919,6 @@ class LiftoffCompiler { uintptr_t offset = imm.offset; LiftoffRegList pinned = LiftoffRegList::ForRegs(index); - index = AddMemoryMasking(index, &offset, &pinned); CODE_COMMENT("load with transformation"); Register addr = GetMemoryStart(pinned); LiftoffRegister value = __ GetUnusedRegister(reg_class_for(kS128), {}); @@ -2984,7 +2958,6 @@ class LiftoffCompiler { uintptr_t offset = imm.offset; pinned.set(index); - index = AddMemoryMasking(index, &offset, &pinned); CODE_COMMENT("load lane"); Register addr = GetMemoryStart(pinned); LiftoffRegister result = __ GetUnusedRegister(reg_class_for(kS128), {}); @@ -3030,7 +3003,6 @@ class LiftoffCompiler { if (index == no_reg) return; pinned.set(index); - index = AddMemoryMasking(index, &offset, &pinned); CODE_COMMENT("store to memory"); uint32_t protected_store_pc = 0; // Load the memory start address only now to reduce register pressure @@ -3065,7 +3037,6 @@ class LiftoffCompiler { uintptr_t offset = imm.offset; pinned.set(index); - index = AddMemoryMasking(index, &offset, &pinned); CODE_COMMENT("store lane to memory"); Register addr = pinned.set(GetMemoryStart(pinned)); uint32_t protected_store_pc = 0; @@ -4347,7 +4318,6 @@ class LiftoffCompiler { pinned.set(index); AlignmentCheckMem(decoder, type.size(), imm.offset, index, pinned); uintptr_t offset = imm.offset; - index = AddMemoryMasking(index, &offset, &pinned); CODE_COMMENT("atomic store to memory"); Register addr = pinned.set(GetMemoryStart(pinned)); LiftoffRegList outer_pinned; @@ -4370,7 +4340,6 @@ class LiftoffCompiler { LiftoffRegList pinned = LiftoffRegList::ForRegs(index); AlignmentCheckMem(decoder, type.size(), imm.offset, index, pinned); uintptr_t offset = imm.offset; - index = AddMemoryMasking(index, &offset, &pinned); CODE_COMMENT("atomic load from memory"); Register addr = pinned.set(GetMemoryStart(pinned)); RegClass rc = reg_class_for(kind); @@ -4418,7 +4387,6 @@ class LiftoffCompiler { AlignmentCheckMem(decoder, type.size(), imm.offset, index, pinned); uintptr_t offset = imm.offset; - index = AddMemoryMasking(index, &offset, &pinned); Register addr = pinned.set(GetMemoryStart(pinned)); (asm_.*emit_fn)(addr, index, offset, value, result, type); @@ -4441,7 +4409,6 @@ class LiftoffCompiler { AlignmentCheckMem(decoder, type.size(), imm.offset, index, pinned); uintptr_t offset = imm.offset; - index = AddMemoryMasking(index, &offset, &pinned); Register addr = pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp(); LOAD_INSTANCE_FIELD(addr, MemoryStart, kSystemPointerSize, pinned); __ emit_i32_add(addr, addr, index); @@ -4474,7 +4441,6 @@ class LiftoffCompiler { AlignmentCheckMem(decoder, type.size(), imm.offset, index, pinned); uintptr_t offset = imm.offset; - index = AddMemoryMasking(index, &offset, &pinned); Register addr = pinned.set(GetMemoryStart(pinned)); LiftoffRegister result = pinned.set(__ GetUnusedRegister(reg_class_for(result_kind), pinned)); @@ -4521,7 +4487,6 @@ class LiftoffCompiler { pinned); uintptr_t offset = imm.offset; - index_reg = AddMemoryMasking(index_reg, &offset, &pinned); Register index_plus_offset = __ cache_state()->is_used(LiftoffRegister(index_reg)) ? pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp() @@ -4538,8 +4503,7 @@ class LiftoffCompiler { __ cache_state()->stack_state.end()[-2]; LiftoffAssembler::VarState index = __ cache_state()->stack_state.end()[-3]; - // We have to set the correct register for the index. It may have changed - // above in {AddMemoryMasking}. + // We have to set the correct register for the index. index.MakeRegister(LiftoffRegister(index_plus_offset)); static constexpr WasmCode::RuntimeStubId kTargets[2][2]{ @@ -4569,7 +4533,6 @@ class LiftoffCompiler { AlignmentCheckMem(decoder, kInt32Size, imm.offset, index_reg, pinned); uintptr_t offset = imm.offset; - index_reg = AddMemoryMasking(index_reg, &offset, &pinned); Register index_plus_offset = __ cache_state()->is_used(LiftoffRegister(index_reg)) ? pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp() @@ -5785,28 +5748,6 @@ class LiftoffCompiler { __ emit_cond_jump(kUnsignedGreaterEqual, invalid_func_label, kI32, index, tmp_const); - // Mask the index to prevent SSCA. - if (FLAG_untrusted_code_mitigations) { - CODE_COMMENT("Mask indirect call index"); - // mask = ((index - size) & ~index) >> 31 - // Reuse allocated registers; note: size is still stored in {tmp_const}. - Register diff = table; - Register neg_index = tmp_const; - Register mask = scratch; - // 1) diff = index - size - __ emit_i32_sub(diff, index, tmp_const); - // 2) neg_index = ~index - __ LoadConstant(LiftoffRegister(neg_index), WasmValue(int32_t{-1})); - __ emit_i32_xor(neg_index, neg_index, index); - // 3) mask = diff & neg_index - __ emit_i32_and(mask, diff, neg_index); - // 4) mask = mask >> 31 - __ emit_i32_sari(mask, mask, 31); - - // Apply mask. - __ emit_i32_and(index, index, mask); - } - CODE_COMMENT("Check indirect call signature"); // Load the signature from {instance->ift_sig_ids[key]} if (imm.table_imm.index == 0) { diff --git a/deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h b/deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h index d5cda7b3c482a7..daee2964c51eef 100644 --- a/deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h +++ b/deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h @@ -4322,11 +4322,7 @@ void LiftoffAssembler::CallIndirect(const ValueKindSig* sig, popq(kScratchRegister); target = kScratchRegister; } - if (FLAG_untrusted_code_mitigations) { - RetpolineCall(target); - } else { - call(target); - } + call(target); } void LiftoffAssembler::TailCallIndirect(Register target) { @@ -4334,11 +4330,7 @@ void LiftoffAssembler::TailCallIndirect(Register target) { popq(kScratchRegister); target = kScratchRegister; } - if (FLAG_untrusted_code_mitigations) { - RetpolineJump(target); - } else { - jmp(target); - } + jmp(target); } void LiftoffAssembler::CallRuntimeStub(WasmCode::RuntimeStubId sid) { diff --git a/deps/v8/src/wasm/graph-builder-interface.cc b/deps/v8/src/wasm/graph-builder-interface.cc index 84f34cc0ed8d30..5e85cb0d27f0bc 100644 --- a/deps/v8/src/wasm/graph-builder-interface.cc +++ b/deps/v8/src/wasm/graph-builder-interface.cc @@ -1547,7 +1547,6 @@ class WasmGraphBuildingInterface { WRAP_CACHE_FIELD(mem_start); WRAP_CACHE_FIELD(mem_size); - WRAP_CACHE_FIELD(mem_mask); #undef WRAP_CACHE_FIELD } } diff --git a/deps/v8/src/wasm/wasm-external-refs.cc b/deps/v8/src/wasm/wasm-external-refs.cc index 101d5638765538..a95a0d40cc8441 100644 --- a/deps/v8/src/wasm/wasm-external-refs.cc +++ b/deps/v8/src/wasm/wasm-external-refs.cc @@ -451,7 +451,6 @@ class V8_NODISCARD ThreadNotInWasmScope { #endif }; -#ifdef DISABLE_UNTRUSTED_CODE_MITIGATIONS inline byte* EffectiveAddress(WasmInstanceObject instance, uint32_t index) { return instance.memory_start() + index; } @@ -460,19 +459,6 @@ inline byte* EffectiveAddress(byte* base, size_t size, uint32_t index) { return base + index; } -#else -inline byte* EffectiveAddress(WasmInstanceObject instance, uint32_t index) { - // Compute the effective address of the access, making sure to condition - // the index even in the in-bounds case. - return instance.memory_start() + (index & instance.memory_mask()); -} - -inline byte* EffectiveAddress(byte* base, size_t size, uint32_t index) { - size_t mem_mask = base::bits::RoundUpToPowerOfTwo(size) - 1; - return base + (index & mem_mask); -} -#endif - template V ReadAndIncrementOffset(Address data, size_t* offset) { V result = ReadUnalignedValue(data + *offset); diff --git a/deps/v8/src/wasm/wasm-objects-inl.h b/deps/v8/src/wasm/wasm-objects-inl.h index a75d83df027b25..00d075b83e1dd2 100644 --- a/deps/v8/src/wasm/wasm-objects-inl.h +++ b/deps/v8/src/wasm/wasm-objects-inl.h @@ -186,7 +186,6 @@ bool WasmGlobalObject::SetFuncRef(Isolate* isolate, Handle value) { // WasmInstanceObject PRIMITIVE_ACCESSORS(WasmInstanceObject, memory_start, byte*, kMemoryStartOffset) PRIMITIVE_ACCESSORS(WasmInstanceObject, memory_size, size_t, kMemorySizeOffset) -PRIMITIVE_ACCESSORS(WasmInstanceObject, memory_mask, size_t, kMemoryMaskOffset) PRIMITIVE_ACCESSORS(WasmInstanceObject, isolate_root, Address, kIsolateRootOffset) PRIMITIVE_ACCESSORS(WasmInstanceObject, stack_limit_address, Address, diff --git a/deps/v8/src/wasm/wasm-objects.cc b/deps/v8/src/wasm/wasm-objects.cc index a6ff80f624231e..fa15ab24c21a50 100644 --- a/deps/v8/src/wasm/wasm-objects.cc +++ b/deps/v8/src/wasm/wasm-objects.cc @@ -1242,21 +1242,13 @@ bool WasmInstanceObject::EnsureIndirectFunctionTableWithMinimumSize( void WasmInstanceObject::SetRawMemory(byte* mem_start, size_t mem_size) { CHECK_LE(mem_size, wasm::max_mem_bytes()); #if V8_HOST_ARCH_64_BIT - uint64_t mem_mask64 = base::bits::RoundUpToPowerOfTwo64(mem_size) - 1; set_memory_start(mem_start); set_memory_size(mem_size); - set_memory_mask(mem_mask64); #else // Must handle memory > 2GiB specially. CHECK_LE(mem_size, size_t{kMaxUInt32}); - uint32_t mem_mask32 = - (mem_size > 2 * size_t{GB}) - ? 0xFFFFFFFFu - : base::bits::RoundUpToPowerOfTwo32(static_cast(mem_size)) - - 1; set_memory_start(mem_start); set_memory_size(mem_size); - set_memory_mask(mem_mask32); #endif } diff --git a/deps/v8/src/wasm/wasm-objects.h b/deps/v8/src/wasm/wasm-objects.h index 11d5c265ed5feb..f0795322bba03e 100644 --- a/deps/v8/src/wasm/wasm-objects.h +++ b/deps/v8/src/wasm/wasm-objects.h @@ -356,7 +356,6 @@ class V8_EXPORT_PRIVATE WasmInstanceObject : public JSObject { DECL_ACCESSORS(managed_object_maps, FixedArray) DECL_PRIMITIVE_ACCESSORS(memory_start, byte*) DECL_PRIMITIVE_ACCESSORS(memory_size, size_t) - DECL_PRIMITIVE_ACCESSORS(memory_mask, size_t) DECL_PRIMITIVE_ACCESSORS(isolate_root, Address) DECL_PRIMITIVE_ACCESSORS(stack_limit_address, Address) DECL_PRIMITIVE_ACCESSORS(real_stack_limit_address, Address) @@ -397,7 +396,6 @@ class V8_EXPORT_PRIVATE WasmInstanceObject : public JSObject { V(kOptionalPaddingOffset, POINTER_SIZE_PADDING(kOptionalPaddingOffset)) \ V(kMemoryStartOffset, kSystemPointerSize) \ V(kMemorySizeOffset, kSizetSize) \ - V(kMemoryMaskOffset, kSizetSize) \ V(kStackLimitAddressOffset, kSystemPointerSize) \ V(kImportedFunctionTargetsOffset, kSystemPointerSize) \ V(kIndirectFunctionTableTargetsOffset, kSystemPointerSize) \ diff --git a/deps/v8/test/cctest/BUILD.gn b/deps/v8/test/cctest/BUILD.gn index e7f011df74dcdf..2c84d21258f119 100644 --- a/deps/v8/test/cctest/BUILD.gn +++ b/deps/v8/test/cctest/BUILD.gn @@ -119,7 +119,6 @@ v8_source_set("cctest_sources") { "compiler/test-run-jsops.cc", "compiler/test-run-load-store.cc", "compiler/test-run-machops.cc", - "compiler/test-run-retpoline.cc", "compiler/test-run-stackcheck.cc", "compiler/test-run-tail-calls.cc", "compiler/test-run-unwinding-info.cc", @@ -307,7 +306,6 @@ v8_source_set("cctest_sources") { "test-assembler-arm.cc", "test-disasm-arm.cc", "test-macro-assembler-arm.cc", - "test-poison-disasm-arm.cc", "test-sync-primitives-arm.cc", ] } else if (v8_current_cpu == "arm64") { @@ -319,7 +317,6 @@ v8_source_set("cctest_sources") { "test-js-arm64-variables.cc", "test-macro-assembler-arm64.cc", "test-pointer-auth-arm64.cc", - "test-poison-disasm-arm64.cc", "test-sync-primitives-arm64.cc", "test-utils-arm64.cc", "test-utils-arm64.h", diff --git a/deps/v8/test/cctest/cctest.status b/deps/v8/test/cctest/cctest.status index 9b369044754443..1401395f2ebadf 100644 --- a/deps/v8/test/cctest/cctest.status +++ b/deps/v8/test/cctest/cctest.status @@ -649,7 +649,6 @@ 'test-run-load-store/*': [SKIP], 'test-run-machops/*': [SKIP], 'test-run-native-calls/*': [SKIP], - 'test-run-retpoline/*': [SKIP], 'test-run-stackcheck/*': [SKIP], 'test-run-tail-calls/*': [SKIP], 'test-run-unwinding-info/*': [SKIP], diff --git a/deps/v8/test/cctest/compiler/code-assembler-tester.h b/deps/v8/test/cctest/compiler/code-assembler-tester.h index 6dc343fa08de93..d1e904a6a86b2b 100644 --- a/deps/v8/test/cctest/compiler/code-assembler-tester.h +++ b/deps/v8/test/cctest/compiler/code-assembler-tester.h @@ -24,7 +24,7 @@ class CodeAssemblerTester { : zone_(isolate->allocator(), ZONE_NAME, kCompressGraphZone), scope_(isolate), state_(isolate, &zone_, descriptor, CodeKind::FOR_TESTING, name, - PoisoningMitigationLevel::kDontPoison, Builtin::kNoBuiltinId) {} + Builtin::kNoBuiltinId) {} // Test generating code for a stub. Assumes VoidDescriptor call interface. explicit CodeAssemblerTester(Isolate* isolate, const char* name = "test") @@ -36,8 +36,7 @@ class CodeAssemblerTester { const char* name = "test") : zone_(isolate->allocator(), ZONE_NAME, kCompressGraphZone), scope_(isolate), - state_(isolate, &zone_, parameter_count, kind, name, - PoisoningMitigationLevel::kDontPoison) {} + state_(isolate, &zone_, parameter_count, kind, name) {} CodeAssemblerTester(Isolate* isolate, CodeKind kind, const char* name = "test") @@ -48,7 +47,7 @@ class CodeAssemblerTester { : zone_(isolate->allocator(), ZONE_NAME, kCompressGraphZone), scope_(isolate), state_(isolate, &zone_, call_descriptor, CodeKind::FOR_TESTING, name, - PoisoningMitigationLevel::kDontPoison, Builtin::kNoBuiltinId) {} + Builtin::kNoBuiltinId) {} CodeAssemblerState* state() { return &state_; } diff --git a/deps/v8/test/cctest/compiler/test-code-generator.cc b/deps/v8/test/cctest/compiler/test-code-generator.cc index 997d7ade73fece..6df1820b3a50cd 100644 --- a/deps/v8/test/cctest/compiler/test-code-generator.cc +++ b/deps/v8/test/cctest/compiler/test-code-generator.cc @@ -1002,7 +1002,6 @@ class CodeGeneratorTester { environment->main_zone(), &frame_, &linkage_, environment->instructions(), &info_, environment->main_isolate(), base::Optional(), kNoSourcePosition, nullptr, - PoisoningMitigationLevel::kDontPoison, AssemblerOptions::Default(environment->main_isolate()), Builtin::kNoBuiltinId, kMaxUnoptimizedFrameHeight, kMaxPushedArgumentCount); @@ -1056,7 +1055,6 @@ class CodeGeneratorTester { AllocatedOperand(LocationOperand::REGISTER, MachineRepresentation::kTagged, kReturnRegister0.code()), - ImmediateOperand(ImmediateOperand::INLINE_INT32, -1), // poison index. ImmediateOperand(ImmediateOperand::INLINE_INT32, optional_padding_slot), ImmediateOperand(ImmediateOperand::INLINE_INT32, stack_slot_delta)}; Instruction* tail_call = @@ -1145,7 +1143,6 @@ class CodeGeneratorTester { AllocatedOperand(LocationOperand::REGISTER, MachineRepresentation::kTagged, kReturnRegister0.code()), - ImmediateOperand(ImmediateOperand::INLINE_INT32, -1), // poison index. ImmediateOperand(ImmediateOperand::INLINE_INT32, optional_padding_slot), ImmediateOperand(ImmediateOperand::INLINE_INT32, first_unused_stack_slot)}; diff --git a/deps/v8/test/cctest/test-api.cc b/deps/v8/test/cctest/test-api.cc index 6e616c80688865..f200cf8e576dd2 100644 --- a/deps/v8/test/cctest/test-api.cc +++ b/deps/v8/test/cctest/test-api.cc @@ -24715,6 +24715,122 @@ TEST(ImportFromSyntheticModuleThrow) { CHECK(try_catch.HasCaught()); } +namespace { + +v8::MaybeLocal ModuleEvaluateTerminateExecutionResolveCallback( + Local context, Local specifier, + Local import_assertions, Local referrer) { + v8::Isolate* isolate = context->GetIsolate(); + + Local url = v8_str("www.test.com"); + Local source_text = v8_str("await Promise.resolve();"); + v8::ScriptOrigin origin(isolate, url, 0, 0, false, -1, Local(), + false, false, true); + v8::ScriptCompiler::Source source(source_text, origin); + Local module = + v8::ScriptCompiler::CompileModule(isolate, &source).ToLocalChecked(); + module + ->InstantiateModule(context, + ModuleEvaluateTerminateExecutionResolveCallback) + .ToChecked(); + + CHECK_EQ(module->GetStatus(), Module::kInstantiated); + return module; +} + +void ModuleEvaluateTerminateExecution( + const v8::FunctionCallbackInfo& args) { + v8::Isolate::GetCurrent()->TerminateExecution(); +} +} // namespace + +TEST(ModuleEvaluateTerminateExecution) { + LocalContext env; + v8::Isolate* isolate = env->GetIsolate(); + v8::Isolate::Scope iscope(isolate); + v8::HandleScope scope(isolate); + v8::Local context = v8::Context::New(isolate); + v8::Context::Scope cscope(context); + + v8::Local terminate_execution = + v8::Function::New(context, ModuleEvaluateTerminateExecution, + v8_str("terminate_execution")) + .ToLocalChecked(); + context->Global() + ->Set(context, v8_str("terminate_execution"), terminate_execution) + .FromJust(); + + Local url = v8_str("www.test.com"); + Local source_text = v8_str( + "terminate_execution();" + "await Promise.resolve();"); + v8::ScriptOrigin origin(isolate, url, 0, 0, false, -1, Local(), + false, false, true); + v8::ScriptCompiler::Source source(source_text, origin); + Local module = + v8::ScriptCompiler::CompileModule(isolate, &source).ToLocalChecked(); + module + ->InstantiateModule(context, + ModuleEvaluateTerminateExecutionResolveCallback) + .ToChecked(); + + CHECK_EQ(module->GetStatus(), Module::kInstantiated); + TryCatch try_catch(isolate); + v8::MaybeLocal completion_value = module->Evaluate(context); + CHECK(completion_value.IsEmpty()); + + CHECK_EQ(module->GetStatus(), Module::kErrored); + CHECK(try_catch.HasCaught()); + CHECK(try_catch.HasTerminated()); +} + +TEST(ModuleEvaluateImportTerminateExecution) { + LocalContext env; + v8::Isolate* isolate = env->GetIsolate(); + v8::Isolate::Scope iscope(isolate); + v8::HandleScope scope(isolate); + v8::Local context = v8::Context::New(isolate); + v8::Context::Scope cscope(context); + + v8::Local terminate_execution = + v8::Function::New(context, ModuleEvaluateTerminateExecution, + v8_str("terminate_execution")) + .ToLocalChecked(); + context->Global() + ->Set(context, v8_str("terminate_execution"), terminate_execution) + .FromJust(); + + Local url = v8_str("www.test.com"); + Local source_text = v8_str( + "import './synthetic.module';" + "terminate_execution();" + "await Promise.resolve();"); + v8::ScriptOrigin origin(isolate, url, 0, 0, false, -1, Local(), + false, false, true); + v8::ScriptCompiler::Source source(source_text, origin); + Local module = + v8::ScriptCompiler::CompileModule(isolate, &source).ToLocalChecked(); + module + ->InstantiateModule(context, + ModuleEvaluateTerminateExecutionResolveCallback) + .ToChecked(); + + CHECK_EQ(module->GetStatus(), Module::kInstantiated); + TryCatch try_catch(isolate); + v8::MaybeLocal completion_value = module->Evaluate(context); + Local promise( + Local::Cast(completion_value.ToLocalChecked())); + CHECK_EQ(promise->State(), v8::Promise::kPending); + isolate->PerformMicrotaskCheckpoint(); + + // The exception thrown by terminate execution is not catchable by JavaScript + // so the promise can not be settled. + CHECK_EQ(promise->State(), v8::Promise::kPending); + CHECK_EQ(module->GetStatus(), Module::kEvaluated); + CHECK(try_catch.HasCaught()); + CHECK(try_catch.HasTerminated()); +} + // Tests that the code cache does not confuse the same source code compiled as a // script and as a module. TEST(CodeCacheModuleScriptMismatch) { diff --git a/deps/v8/test/common/wasm/wasm-interpreter.cc b/deps/v8/test/common/wasm/wasm-interpreter.cc index 84871cccb6319b..0d3364169f1c2f 100644 --- a/deps/v8/test/common/wasm/wasm-interpreter.cc +++ b/deps/v8/test/common/wasm/wasm-interpreter.cc @@ -1621,8 +1621,7 @@ class WasmInterpreterInternals { DCHECK_GE(instance_object_->memory_size(), index); // Compute the effective address of the access, making sure to condition // the index even in the in-bounds case. - return reinterpret_cast
                  (instance_object_->memory_start()) + - (index & instance_object_->memory_mask()); + return reinterpret_cast
                  (instance_object_->memory_start()) + index; } template diff --git a/deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc b/deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc index 121190bdb8ca53..b53461b8b01289 100644 --- a/deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc +++ b/deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc @@ -21,10 +21,9 @@ namespace internal { CodeStubAssemblerTestState::CodeStubAssemblerTestState( CodeStubAssemblerTest* test) - : compiler::CodeAssemblerState( - test->isolate(), test->zone(), VoidDescriptor{}, - CodeKind::FOR_TESTING, "test", - PoisoningMitigationLevel::kPoisonCriticalOnly) {} + : compiler::CodeAssemblerState(test->isolate(), test->zone(), + VoidDescriptor{}, CodeKind::FOR_TESTING, + "test") {} TARGET_TEST_F(CodeStubAssemblerTest, SmiTag) { CodeStubAssemblerTestState state(this); diff --git a/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc b/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc index f4e3ea07b1c28f..e52661fae260ef 100644 --- a/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc +++ b/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc @@ -50,8 +50,7 @@ InstructionSelectorTest::Stream InstructionSelectorTest::StreamBuilder::Build( InstructionSelector::kEnableSwitchJumpTable, &tick_counter, nullptr, &max_unoptimized_frame_height, &max_pushed_argument_count, source_position_mode, features, InstructionSelector::kDisableScheduling, - InstructionSelector::kEnableRootsRelativeAddressing, - PoisoningMitigationLevel::kPoisonAll); + InstructionSelector::kEnableRootsRelativeAddressing); selector.SelectInstructions(); if (FLAG_trace_turbo) { StdoutStream{} << "=== Code sequence after instruction selection ===" @@ -452,7 +451,6 @@ TARGET_TEST_F(InstructionSelectorTest, CallStubWithDeopt) { EXPECT_EQ(kArchCallCodeObject, call_instr->arch_opcode()); size_t num_operands = 1 + // Code object. - 1 + // Poison index 6 + // Frame state deopt id + one input for each value in frame state. 1 + // Function. 1; // Context. @@ -462,23 +460,23 @@ TARGET_TEST_F(InstructionSelectorTest, CallStubWithDeopt) { EXPECT_TRUE(call_instr->InputAt(0)->IsImmediate()); // Deoptimization id. - int32_t deopt_id_before = s.ToInt32(call_instr->InputAt(2)); + int32_t deopt_id_before = s.ToInt32(call_instr->InputAt(1)); FrameStateDescriptor* desc_before = s.GetFrameStateDescriptor(deopt_id_before); EXPECT_EQ(bailout_id_before, desc_before->bailout_id()); EXPECT_EQ(1u, desc_before->parameters_count()); EXPECT_EQ(1u, desc_before->locals_count()); EXPECT_EQ(1u, desc_before->stack_count()); - EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(4))); - EXPECT_EQ(0, s.ToInt32(call_instr->InputAt(5))); // This should be a context. + EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(3))); + EXPECT_EQ(0, s.ToInt32(call_instr->InputAt(4))); // This should be a context. // We inserted 0 here. - EXPECT_EQ(0.5, s.ToFloat64(call_instr->InputAt(6))); - EXPECT_TRUE(s.ToHeapObject(call_instr->InputAt(7))->IsUndefined(isolate())); + EXPECT_EQ(0.5, s.ToFloat64(call_instr->InputAt(5))); + EXPECT_TRUE(s.ToHeapObject(call_instr->InputAt(6))->IsUndefined(isolate())); // Function. - EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(8))); + EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(7))); // Context. - EXPECT_EQ(s.ToVreg(context), s.ToVreg(call_instr->InputAt(9))); + EXPECT_EQ(s.ToVreg(context), s.ToVreg(call_instr->InputAt(8))); EXPECT_EQ(kArchRet, s[index++]->arch_opcode()); @@ -559,7 +557,6 @@ TARGET_TEST_F(InstructionSelectorTest, CallStubWithDeoptRecursiveFrameState) { EXPECT_EQ(kArchCallCodeObject, call_instr->arch_opcode()); size_t num_operands = 1 + // Code object. - 1 + // Poison index. 1 + // Frame state deopt id 5 + // One input for each value in frame state + context. 5 + // One input for each value in the parent frame state + context. @@ -570,7 +567,7 @@ TARGET_TEST_F(InstructionSelectorTest, CallStubWithDeoptRecursiveFrameState) { EXPECT_TRUE(call_instr->InputAt(0)->IsImmediate()); // Deoptimization id. - int32_t deopt_id_before = s.ToInt32(call_instr->InputAt(2)); + int32_t deopt_id_before = s.ToInt32(call_instr->InputAt(1)); FrameStateDescriptor* desc_before = s.GetFrameStateDescriptor(deopt_id_before); FrameStateDescriptor* desc_before_outer = desc_before->outer_state(); @@ -579,24 +576,24 @@ TARGET_TEST_F(InstructionSelectorTest, CallStubWithDeoptRecursiveFrameState) { EXPECT_EQ(1u, desc_before_outer->locals_count()); EXPECT_EQ(1u, desc_before_outer->stack_count()); // Values from parent environment. - EXPECT_EQ(63, s.ToInt32(call_instr->InputAt(4))); + EXPECT_EQ(63, s.ToInt32(call_instr->InputAt(3))); // Context: - EXPECT_EQ(66, s.ToInt32(call_instr->InputAt(5))); - EXPECT_EQ(64, s.ToInt32(call_instr->InputAt(6))); - EXPECT_EQ(65, s.ToInt32(call_instr->InputAt(7))); + EXPECT_EQ(66, s.ToInt32(call_instr->InputAt(4))); + EXPECT_EQ(64, s.ToInt32(call_instr->InputAt(5))); + EXPECT_EQ(65, s.ToInt32(call_instr->InputAt(6))); // Values from the nested frame. EXPECT_EQ(1u, desc_before->parameters_count()); EXPECT_EQ(1u, desc_before->locals_count()); EXPECT_EQ(1u, desc_before->stack_count()); - EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(9))); - EXPECT_EQ(46, s.ToInt32(call_instr->InputAt(10))); - EXPECT_EQ(0.25, s.ToFloat64(call_instr->InputAt(11))); - EXPECT_EQ(44, s.ToInt32(call_instr->InputAt(12))); + EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(8))); + EXPECT_EQ(46, s.ToInt32(call_instr->InputAt(9))); + EXPECT_EQ(0.25, s.ToFloat64(call_instr->InputAt(10))); + EXPECT_EQ(44, s.ToInt32(call_instr->InputAt(11))); // Function. - EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(13))); + EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(12))); // Context. - EXPECT_EQ(s.ToVreg(context2), s.ToVreg(call_instr->InputAt(14))); + EXPECT_EQ(s.ToVreg(context2), s.ToVreg(call_instr->InputAt(13))); // Continuation. EXPECT_EQ(kArchRet, s[index++]->arch_opcode()); diff --git a/deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc b/deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc index 2b76e5289f227b..03960705e1a571 100644 --- a/deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc +++ b/deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc @@ -86,8 +86,7 @@ TEST_F(EffectControlLinearizerTest, SimpleLoad) { // Run the state effect introducer. LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); EXPECT_THAT(load, IsLoadField(AccessBuilder::ForHeapNumberValue(), heap_number, @@ -148,8 +147,7 @@ TEST_F(EffectControlLinearizerTest, DiamondLoad) { // Run the state effect introducer. LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); // The effect input to the return should be an effect phi with the // newly introduced effectful change operators. @@ -215,8 +213,7 @@ TEST_F(EffectControlLinearizerTest, LoopLoad) { // Run the state effect introducer. LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); ASSERT_THAT(ret, IsReturn(load, load, if_true)); EXPECT_THAT(load, IsLoadField(AccessBuilder::ForHeapNumberValue(), @@ -278,8 +275,7 @@ TEST_F(EffectControlLinearizerTest, CloneBranch) { schedule.AddNode(mblock, graph()->end()); LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); Capture branch1_capture, branch2_capture; EXPECT_THAT( @@ -337,8 +333,7 @@ TEST_F(EffectControlLinearizerTest, UnreachableThenBranch) { // Run the state effect linearizer and machine lowering, maintaining the // schedule. LowerToMachineSchedule(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); ASSERT_THAT(end(), IsEnd(IsThrow())); } @@ -390,8 +385,7 @@ TEST_F(EffectControlLinearizerTest, UnreachableThenDiamond) { // Run the state effect linearizer and machine lowering, maintaining the // schedule. LowerToMachineSchedule(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); ASSERT_THAT(end(), IsEnd(IsThrow())); } @@ -448,8 +442,7 @@ TEST_F(EffectControlLinearizerTest, UnreachableThenLoop) { // Run the state effect linearizer and machine lowering, maintaining the // schedule. LowerToMachineSchedule(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); ASSERT_THAT(end(), IsEnd(IsThrow())); } @@ -502,8 +495,7 @@ TEST_F(EffectControlLinearizerTest, UnreachableInChangedBlockThenBranch) { // Run the state effect linearizer and machine lowering, maintaining the // schedule. LowerToMachineSchedule(jsgraph(), &schedule, zone(), source_positions(), - node_origins(), PoisoningMitigationLevel::kDontPoison, - broker()); + node_origins(), broker()); ASSERT_THAT(end(), IsEnd(IsThrow())); } diff --git a/deps/v8/test/unittests/compiler/node-test-utils.cc b/deps/v8/test/unittests/compiler/node-test-utils.cc index 5305fef5741be3..b449faee8db871 100644 --- a/deps/v8/test/unittests/compiler/node-test-utils.cc +++ b/deps/v8/test/unittests/compiler/node-test-utils.cc @@ -1150,7 +1150,6 @@ class IsStoreElementMatcher final : public TestNodeMatcher { LOAD_MATCHER(Load) LOAD_MATCHER(UnalignedLoad) -LOAD_MATCHER(PoisonedLoad) LOAD_MATCHER(LoadFromObject) class IsLoadImmutableMatcher final : public TestNodeMatcher { @@ -2103,16 +2102,6 @@ Matcher IsLoad(const Matcher& rep_matcher, effect_matcher, control_matcher)); } -Matcher IsPoisonedLoad(const Matcher& rep_matcher, - const Matcher& base_matcher, - const Matcher& index_matcher, - const Matcher& effect_matcher, - const Matcher& control_matcher) { - return MakeMatcher(new IsPoisonedLoadMatcher(rep_matcher, base_matcher, - index_matcher, effect_matcher, - control_matcher)); -} - Matcher IsUnalignedLoad(const Matcher& rep_matcher, const Matcher& base_matcher, const Matcher& index_matcher, @@ -2366,7 +2355,6 @@ IS_UNOP_MATCHER(Word32Ctz) IS_UNOP_MATCHER(Word32Popcnt) IS_UNOP_MATCHER(Word32ReverseBytes) IS_UNOP_MATCHER(SpeculativeToNumber) -IS_UNOP_MATCHER(TaggedPoisonOnSpeculation) #undef IS_UNOP_MATCHER // Special-case Bitcast operators which are disabled when ENABLE_VERIFY_CSA is diff --git a/deps/v8/test/unittests/compiler/node-test-utils.h b/deps/v8/test/unittests/compiler/node-test-utils.h index 0e5e99679c9a70..f727a14c34d350 100644 --- a/deps/v8/test/unittests/compiler/node-test-utils.h +++ b/deps/v8/test/unittests/compiler/node-test-utils.h @@ -328,11 +328,6 @@ Matcher IsLoad(const Matcher& rep_matcher, const Matcher& index_matcher, const Matcher& effect_matcher, const Matcher& control_matcher); -Matcher IsPoisonedLoad(const Matcher& rep_matcher, - const Matcher& base_matcher, - const Matcher& index_matcher, - const Matcher& effect_matcher, - const Matcher& control_matcher); Matcher IsUnalignedLoad(const Matcher& rep_matcher, const Matcher& base_matcher, const Matcher& index_matcher, @@ -486,7 +481,6 @@ Matcher IsNumberToBoolean(const Matcher& input_matcher); Matcher IsNumberToInt32(const Matcher& input_matcher); Matcher IsNumberToUint32(const Matcher& input_matcher); Matcher IsParameter(const Matcher index_matcher); -Matcher IsSpeculationPoison(); Matcher IsLoadFramePointer(); Matcher IsLoadParentFramePointer(); Matcher IsPlainPrimitiveToNumber(const Matcher& input_matcher); diff --git a/deps/v8/test/unittests/compiler/simplified-lowering-unittest.cc b/deps/v8/test/unittests/compiler/simplified-lowering-unittest.cc index 6387f814e1b19f..6eddb961cad0fc 100644 --- a/deps/v8/test/unittests/compiler/simplified-lowering-unittest.cc +++ b/deps/v8/test/unittests/compiler/simplified-lowering-unittest.cc @@ -49,9 +49,8 @@ class SimplifiedLoweringTest : public GraphTest { Linkage* linkage = zone()->New(Linkage::GetJSCallDescriptor( zone(), false, num_parameters_ + 1, CallDescriptor::kCanUseRoots)); - SimplifiedLowering lowering( - jsgraph(), broker(), zone(), source_positions(), node_origins(), - PoisoningMitigationLevel::kDontPoison, tick_counter(), linkage); + SimplifiedLowering lowering(jsgraph(), broker(), zone(), source_positions(), + node_origins(), tick_counter(), linkage); lowering.LowerAllNodes(); } diff --git a/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.cc b/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.cc index 63ccfc5b76affb..3eddc5c99c7ec9 100644 --- a/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.cc +++ b/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.cc @@ -27,8 +27,7 @@ InterpreterAssemblerTestState::InterpreterAssemblerTestState( InterpreterAssemblerTest* test, Bytecode bytecode) : compiler::CodeAssemblerState( test->isolate(), test->zone(), InterpreterDispatchDescriptor{}, - CodeKind::BYTECODE_HANDLER, Bytecodes::ToString(bytecode), - PoisoningMitigationLevel::kPoisonCriticalOnly) {} + CodeKind::BYTECODE_HANDLER, Bytecodes::ToString(bytecode)) {} const interpreter::Bytecode kBytecodes[] = { #define DEFINE_BYTECODE(Name, ...) interpreter::Bytecode::k##Name, @@ -55,14 +54,7 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest:: Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsLoad( const Matcher& rep_matcher, const Matcher& base_matcher, - const Matcher& index_matcher, LoadSensitivity needs_poisoning) { - CHECK_NE(LoadSensitivity::kUnsafe, needs_poisoning); - CHECK_NE(PoisoningMitigationLevel::kPoisonAll, poisoning_level()); - if (poisoning_level() == PoisoningMitigationLevel::kPoisonCriticalOnly && - needs_poisoning == LoadSensitivity::kCritical) { - return ::i::compiler::IsPoisonedLoad(rep_matcher, base_matcher, - index_matcher, _, _); - } + const Matcher& index_matcher) { return ::i::compiler::IsLoad(rep_matcher, base_matcher, index_matcher, _, _); } @@ -71,7 +63,6 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsLoadFromObject( const Matcher& rep_matcher, const Matcher& base_matcher, const Matcher& index_matcher) { - CHECK_NE(PoisoningMitigationLevel::kPoisonAll, poisoning_level()); return ::i::compiler::IsLoadFromObject(rep_matcher, base_matcher, index_matcher, _, _); } @@ -96,39 +87,36 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsWordNot( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedByteOperand( - int offset, LoadSensitivity needs_poisoning) { + int offset) { return IsLoad( MachineType::Uint8(), c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset)), - needs_poisoning); + c::IsIntPtrConstant(offset))); } Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedByteOperand( - int offset, LoadSensitivity needs_poisoning) { + int offset) { return IsLoad( MachineType::Int8(), c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset)), - needs_poisoning); + c::IsIntPtrConstant(offset))); } Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedShortOperand( - int offset, LoadSensitivity needs_poisoning) { + int offset) { if (TargetSupportsUnalignedAccess()) { return IsLoad( MachineType::Uint16(), c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset)), - needs_poisoning); + c::IsIntPtrConstant(offset))); } else { #if V8_TARGET_LITTLE_ENDIAN const int kStep = -1; @@ -146,8 +134,7 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedShortOperand( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset + kMsbOffset + kStep * i)), - needs_poisoning); + c::IsIntPtrConstant(offset + kMsbOffset + kStep * i))); } return c::IsWord32Or( c::IsWord32Shl(bytes[0], c::IsInt32Constant(kBitsPerByte)), bytes[1]); @@ -156,15 +143,14 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedShortOperand( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedShortOperand( - int offset, LoadSensitivity needs_poisoning) { + int offset) { if (TargetSupportsUnalignedAccess()) { return IsLoad( MachineType::Int16(), c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset)), - needs_poisoning); + c::IsIntPtrConstant(offset))); } else { #if V8_TARGET_LITTLE_ENDIAN const int kStep = -1; @@ -182,8 +168,7 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedShortOperand( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset + kMsbOffset + kStep * i)), - needs_poisoning); + c::IsIntPtrConstant(offset + kMsbOffset + kStep * i))); } return c::IsWord32Or( c::IsWord32Shl(bytes[0], c::IsInt32Constant(kBitsPerByte)), bytes[1]); @@ -192,15 +177,14 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedShortOperand( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedQuadOperand( - int offset, LoadSensitivity needs_poisoning) { + int offset) { if (TargetSupportsUnalignedAccess()) { return IsLoad( MachineType::Uint32(), c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset)), - needs_poisoning); + c::IsIntPtrConstant(offset))); } else { #if V8_TARGET_LITTLE_ENDIAN const int kStep = -1; @@ -218,8 +202,7 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedQuadOperand( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset + kMsbOffset + kStep * i)), - needs_poisoning); + c::IsIntPtrConstant(offset + kMsbOffset + kStep * i))); } return c::IsWord32Or( c::IsWord32Shl(bytes[0], c::IsInt32Constant(3 * kBitsPerByte)), @@ -233,15 +216,14 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedQuadOperand( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedQuadOperand( - int offset, LoadSensitivity needs_poisoning) { + int offset) { if (TargetSupportsUnalignedAccess()) { return IsLoad( MachineType::Int32(), c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset)), - needs_poisoning); + c::IsIntPtrConstant(offset))); } else { #if V8_TARGET_LITTLE_ENDIAN const int kStep = -1; @@ -259,8 +241,7 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedQuadOperand( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrAdd( c::IsParameter(InterpreterDispatchDescriptor::kBytecodeOffset), - c::IsIntPtrConstant(offset + kMsbOffset + kStep * i)), - needs_poisoning); + c::IsIntPtrConstant(offset + kMsbOffset + kStep * i))); } return c::IsWord32Or( c::IsWord32Shl(bytes[0], c::IsInt32Constant(3 * kBitsPerByte)), @@ -274,14 +255,14 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedQuadOperand( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedOperand( - int offset, OperandSize operand_size, LoadSensitivity needs_poisoning) { + int offset, OperandSize operand_size) { switch (operand_size) { case OperandSize::kByte: - return IsSignedByteOperand(offset, needs_poisoning); + return IsSignedByteOperand(offset); case OperandSize::kShort: - return IsSignedShortOperand(offset, needs_poisoning); + return IsSignedShortOperand(offset); case OperandSize::kQuad: - return IsSignedQuadOperand(offset, needs_poisoning); + return IsSignedQuadOperand(offset); case OperandSize::kNone: UNREACHABLE(); } @@ -290,14 +271,14 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedOperand( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedOperand( - int offset, OperandSize operand_size, LoadSensitivity needs_poisoning) { + int offset, OperandSize operand_size) { switch (operand_size) { case OperandSize::kByte: - return IsUnsignedByteOperand(offset, needs_poisoning); + return IsUnsignedByteOperand(offset); case OperandSize::kShort: - return IsUnsignedShortOperand(offset, needs_poisoning); + return IsUnsignedShortOperand(offset); case OperandSize::kQuad: - return IsUnsignedQuadOperand(offset, needs_poisoning); + return IsUnsignedQuadOperand(offset); case OperandSize::kNone: UNREACHABLE(); } @@ -307,12 +288,11 @@ InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedOperand( Matcher InterpreterAssemblerTest::InterpreterAssemblerForTest::IsLoadRegisterOperand( int offset, OperandSize operand_size) { - Matcher reg_operand = IsChangeInt32ToIntPtr( - IsSignedOperand(offset, operand_size, LoadSensitivity::kSafe)); + Matcher reg_operand = + IsChangeInt32ToIntPtr(IsSignedOperand(offset, operand_size)); return IsBitcastWordToTagged(IsLoad( MachineType::Pointer(), c::IsLoadParentFramePointer(), - c::IsWordShl(reg_operand, c::IsIntPtrConstant(kSystemPointerSizeLog2)), - LoadSensitivity::kCritical)); + c::IsWordShl(reg_operand, c::IsIntPtrConstant(kSystemPointerSizeLog2)))); } TARGET_TEST_F(InterpreterAssemblerTest, BytecodeOperand) { @@ -334,44 +314,38 @@ TARGET_TEST_F(InterpreterAssemblerTest, BytecodeOperand) { switch (interpreter::Bytecodes::GetOperandType(bytecode, i)) { case interpreter::OperandType::kRegCount: EXPECT_THAT(m.BytecodeOperandCount(i), - m.IsUnsignedOperand(offset, operand_size, - LoadSensitivity::kCritical)); + m.IsUnsignedOperand(offset, operand_size)); break; case interpreter::OperandType::kFlag8: EXPECT_THAT(m.BytecodeOperandFlag(i), - m.IsUnsignedOperand(offset, operand_size, - LoadSensitivity::kCritical)); + m.IsUnsignedOperand(offset, operand_size)); break; case interpreter::OperandType::kIdx: EXPECT_THAT(m.BytecodeOperandIdx(i), - c::IsChangeUint32ToWord(m.IsUnsignedOperand( - offset, operand_size, LoadSensitivity::kCritical))); + c::IsChangeUint32ToWord( + m.IsUnsignedOperand(offset, operand_size))); break; case interpreter::OperandType::kNativeContextIndex: EXPECT_THAT(m.BytecodeOperandNativeContextIndex(i), - c::IsChangeUint32ToWord(m.IsUnsignedOperand( - offset, operand_size, LoadSensitivity::kCritical))); + c::IsChangeUint32ToWord( + m.IsUnsignedOperand(offset, operand_size))); break; case interpreter::OperandType::kUImm: EXPECT_THAT(m.BytecodeOperandUImm(i), - m.IsUnsignedOperand(offset, operand_size, - LoadSensitivity::kCritical)); + m.IsUnsignedOperand(offset, operand_size)); break; case interpreter::OperandType::kImm: { EXPECT_THAT(m.BytecodeOperandImm(i), - m.IsSignedOperand(offset, operand_size, - LoadSensitivity::kCritical)); + m.IsSignedOperand(offset, operand_size)); break; } case interpreter::OperandType::kRuntimeId: EXPECT_THAT(m.BytecodeOperandRuntimeId(i), - m.IsUnsignedOperand(offset, operand_size, - LoadSensitivity::kCritical)); + m.IsUnsignedOperand(offset, operand_size)); break; case interpreter::OperandType::kIntrinsicId: EXPECT_THAT(m.BytecodeOperandIntrinsicId(i), - m.IsUnsignedOperand(offset, operand_size, - LoadSensitivity::kCritical)); + m.IsUnsignedOperand(offset, operand_size)); break; case interpreter::OperandType::kRegList: case interpreter::OperandType::kReg: @@ -416,12 +390,11 @@ TARGET_TEST_F(InterpreterAssemblerTest, LoadConstantPoolEntry) { c::IsParameter(InterpreterDispatchDescriptor::kBytecodeArray), c::IsIntPtrConstant(BytecodeArray::kConstantPoolOffset - kHeapObjectTag)); - EXPECT_THAT( - load_constant, - m.IsLoad(MachineType::AnyTagged(), constant_pool_matcher, - c::IsIntPtrConstant(FixedArray::OffsetOfElementAt(2) - - kHeapObjectTag), - LoadSensitivity::kCritical)); + EXPECT_THAT(load_constant, + m.IsLoadFromObject( + MachineType::AnyTagged(), constant_pool_matcher, + c::IsIntPtrConstant(FixedArray::OffsetOfElementAt(2) - + kHeapObjectTag))); } { c::Node* index = m.UntypedParameter(2); @@ -434,12 +407,11 @@ TARGET_TEST_F(InterpreterAssemblerTest, LoadConstantPoolEntry) { kHeapObjectTag)); EXPECT_THAT( load_constant, - m.IsLoad( + m.IsLoadFromObject( MachineType::AnyTagged(), constant_pool_matcher, c::IsIntPtrAdd( c::IsIntPtrConstant(FixedArray::kHeaderSize - kHeapObjectTag), - c::IsWordShl(index, c::IsIntPtrConstant(kTaggedSizeLog2))), - LoadSensitivity::kCritical)); + c::IsWordShl(index, c::IsIntPtrConstant(kTaggedSizeLog2))))); } } } diff --git a/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.h b/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.h index c2539d8a2819fd..d02b80698a8886 100644 --- a/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.h +++ b/deps/v8/test/unittests/interpreter/interpreter-assembler-unittest.h @@ -45,8 +45,7 @@ class InterpreterAssemblerTest : public TestWithIsolateAndZone { Matcher IsLoad( const Matcher& rep_matcher, const Matcher& base_matcher, - const Matcher& index_matcher, - LoadSensitivity needs_poisoning = LoadSensitivity::kSafe); + const Matcher& index_matcher); Matcher IsLoadFromObject( const Matcher& rep_matcher, const Matcher& base_matcher, @@ -60,30 +59,17 @@ class InterpreterAssemblerTest : public TestWithIsolateAndZone { Matcher IsWordNot( const Matcher& value_matcher); - Matcher IsUnsignedByteOperand( - int offset, LoadSensitivity needs_poisoning); - Matcher IsSignedByteOperand( - int offset, LoadSensitivity needs_poisoning); - Matcher IsUnsignedShortOperand( - int offset, LoadSensitivity needs_poisoning); - Matcher IsSignedShortOperand( - int offset, LoadSensitivity needs_poisoning); - Matcher IsUnsignedQuadOperand( - int offset, LoadSensitivity needs_poisoning); - Matcher IsSignedQuadOperand( - int offset, LoadSensitivity needs_poisoning); - - Matcher IsUnpoisonedSignedOperand( - int offset, OperandSize operand_size, LoadSensitivity needs_poisoning); - Matcher IsUnpoisonedUnsignedOperand( - int offset, OperandSize operand_size, LoadSensitivity needs_poisoning); + Matcher IsUnsignedByteOperand(int offset); + Matcher IsSignedByteOperand(int offset); + Matcher IsUnsignedShortOperand(int offset); + Matcher IsSignedShortOperand(int offset); + Matcher IsUnsignedQuadOperand(int offset); + Matcher IsSignedQuadOperand(int offset); Matcher IsSignedOperand(int offset, - OperandSize operand_size, - LoadSensitivity needs_poisoning); + OperandSize operand_size); Matcher IsUnsignedOperand(int offset, - OperandSize operand_size, - LoadSensitivity needs_poisoning); + OperandSize operand_size); Matcher IsLoadRegisterOperand(int offset, OperandSize operand_size); diff --git a/deps/v8/tools/clusterfuzz/v8_foozzie.py b/deps/v8/tools/clusterfuzz/v8_foozzie.py index 52b7954093919c..d9009bfb7c8a3a 100755 --- a/deps/v8/tools/clusterfuzz/v8_foozzie.py +++ b/deps/v8/tools/clusterfuzz/v8_foozzie.py @@ -78,13 +78,6 @@ '--always-opt', '--force-slow-path', ], - trusted=[ - '--no-untrusted-code-mitigations', - ], - trusted_opt=[ - '--always-opt', - '--no-untrusted-code-mitigations', - ], ) BASELINE_CONFIG = 'ignition' diff --git a/deps/v8/tools/testrunner/local/android.py b/deps/v8/tools/testrunner/local/android.py index ebf04afad61de0..cfc4e537f57fef 100644 --- a/deps/v8/tools/testrunner/local/android.py +++ b/deps/v8/tools/testrunner/local/android.py @@ -126,12 +126,6 @@ def push_executable(self, shell_dir, target_dir, binary): target_dir, skip_if_missing=True, ) - self.push_file( - shell_dir, - 'snapshot_blob_trusted.bin', - target_dir, - skip_if_missing=True, - ) self.push_file( shell_dir, 'icudtl.dat', diff --git a/deps/v8/tools/testrunner/local/variants.py b/deps/v8/tools/testrunner/local/variants.py index ba4eff451adeaa..c34b957cb27990 100644 --- a/deps/v8/tools/testrunner/local/variants.py +++ b/deps/v8/tools/testrunner/local/variants.py @@ -38,7 +38,8 @@ "stress_snapshot": [["--stress-snapshot"]], # Trigger stress sampling allocation profiler with sample interval = 2^14 "stress_sampling": [["--stress-sampling-allocation-profiler=16384"]], - "trusted": [["--no-untrusted-code-mitigations"]], + # TODO(rmcilroy): Remove trusted variant once bots don't use it. + "trusted": [[]], "no_wasm_traps": [["--no-wasm-trap-handler"]], "turboprop": [["--turboprop"]], "turboprop_as_toptier": [["--turboprop-as-toptier", "--turboprop"]], diff --git a/doc/.eslintrc.yaml b/doc/.eslintrc.yaml index fbc115669a7166..e8d24adb6e00aa 100644 --- a/doc/.eslintrc.yaml +++ b/doc/.eslintrc.yaml @@ -9,7 +9,6 @@ rules: symbol-description: off # Add new ECMAScript features gradually - no-var: error prefer-const: error prefer-rest-params: error prefer-template: error diff --git a/doc/api/assert.md b/doc/api/assert.md index 11ee21c0ea2d11..a01b82a930bf4e 100644 --- a/doc/api/assert.md +++ b/doc/api/assert.md @@ -6,7 +6,7 @@ -The `assert` module provides a set of assertion functions for verifying +The `node:assert` module provides a set of assertion functions for verifying invariants. ## Strict assertion mode @@ -16,7 +16,7 @@ added: v9.9.0 changes: - version: v15.0.0 pr-url: https://github.com/nodejs/node/pull/34001 - description: Exposed as `require('assert/strict')`. + description: Exposed as `require('node:assert/strict')`. - version: - v13.9.0 - v12.16.2 @@ -42,25 +42,25 @@ assertion mode, error messages for objects display the objects, often truncated. To use strict assertion mode: ```mjs -import { strict as assert } from 'assert'; +import { strict as assert } from 'node:assert'; ``` ```cjs -const assert = require('assert').strict; +const assert = require('node:assert').strict; ``` ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); ``` Example error diff: ```mjs -import { strict as assert } from 'assert'; +import { strict as assert } from 'node:assert'; assert.deepEqual([[[1, 2, 3]], 4, 5], [[[1, 2, '3']], 4, 5]); // AssertionError: Expected inputs to be strictly deep-equal: @@ -79,7 +79,7 @@ assert.deepEqual([[[1, 2, 3]], 4, 5], [[[1, 2, '3']], 4, 5]); ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.deepEqual([[[1, 2, 3]], 4, 5], [[[1, 2, '3']], 4, 5]); // AssertionError: Expected inputs to be strictly deep-equal: @@ -114,11 +114,11 @@ Legacy assertion mode uses the [`==` operator][] in: To use legacy assertion mode: ```mjs -import assert from 'assert'; +import assert from 'node:assert'; ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); ``` Legacy assertion mode may have surprising results, especially when using @@ -133,8 +133,8 @@ assert.deepEqual(/a/gi, new Date()); * Extends: {errors.Error} -Indicates the failure of an assertion. All errors thrown by the `assert` module -will be instances of the `AssertionError` class. +Indicates the failure of an assertion. All errors thrown by the `node:assert` +module will be instances of the `AssertionError` class. ### `new assert.AssertionError(options)` @@ -166,7 +166,7 @@ and: * `operator` {string} Set to the passed in operator value. ```mjs -import assert from 'assert'; +import assert from 'node:assert'; // Generate an AssertionError to compare the error message later: const { message } = new assert.AssertionError({ @@ -191,7 +191,7 @@ try { ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); // Generate an AssertionError to compare the error message later: const { message } = new assert.AssertionError({ @@ -241,8 +241,8 @@ for the verification to take place. The usual pattern would be to call it in a [`process.on('exit')`][] handler. ```mjs -import assert from 'assert'; -import process from 'process'; +import assert from 'node:assert'; +import process from 'node:process'; const tracker = new assert.CallTracker(); @@ -261,7 +261,7 @@ process.on('exit', () => { ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); const tracker = new assert.CallTracker(); @@ -297,7 +297,7 @@ function has not been called exactly `exact` times when error. ```mjs -import assert from 'assert'; +import assert from 'node:assert'; // Creates call tracker. const tracker = new assert.CallTracker(); @@ -310,7 +310,7 @@ const callsfunc = tracker.calls(func); ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); // Creates call tracker. const tracker = new assert.CallTracker(); @@ -344,7 +344,7 @@ The arrays contains information about the expected and actual number of calls of the functions that have not been called the expected number of times. ```mjs -import assert from 'assert'; +import assert from 'node:assert'; // Creates call tracker. const tracker = new assert.CallTracker(); @@ -372,7 +372,7 @@ tracker.report(); ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); // Creates call tracker. const tracker = new assert.CallTracker(); @@ -412,7 +412,7 @@ Iterates through the list of functions passed to have not been called the expected number of times. ```mjs -import assert from 'assert'; +import assert from 'node:assert'; // Creates call tracker. const tracker = new assert.CallTracker(); @@ -430,7 +430,7 @@ tracker.verify(); ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); // Creates call tracker. const tracker = new assert.CallTracker(); @@ -540,14 +540,14 @@ The following example does not throw an [`AssertionError`][] because the primitives are compared using the [`==` operator][]. ```mjs -import assert from 'assert'; +import assert from 'node:assert'; // WARNING: This does not throw an AssertionError! assert.deepEqual('+00000000', false); ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); // WARNING: This does not throw an AssertionError! assert.deepEqual('+00000000', false); @@ -557,7 +557,7 @@ assert.deepEqual('+00000000', false); are evaluated also: ```mjs -import assert from 'assert'; +import assert from 'node:assert'; const obj1 = { a: { @@ -592,7 +592,7 @@ assert.deepEqual(obj1, obj4); ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); const obj1 = { a: { @@ -693,7 +693,7 @@ are recursively evaluated also by the following rules. below for further details. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; // This fails because 1 !== '1'. assert.deepStrictEqual({ a: 1 }, { a: '1' }); @@ -785,7 +785,7 @@ assert.deepStrictEqual(weakMap1, weakMap3); ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); // This fails because 1 !== '1'. assert.deepStrictEqual({ a: 1 }, { a: '1' }); @@ -901,7 +901,7 @@ changes: Expects the `string` input not to match the regular expression. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.doesNotMatch('I will fail', /fail/); // AssertionError [ERR_ASSERTION]: The input was expected to not match the ... @@ -914,7 +914,7 @@ assert.doesNotMatch('I will pass', /different/); ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.doesNotMatch('I will fail', /fail/); // AssertionError [ERR_ASSERTION]: The input was expected to not match the ... @@ -958,14 +958,14 @@ benefit in catching a rejection and then rejecting it again. Instead, consider adding a comment next to the specific code path that should not reject and keep error messages as expressive as possible. -If specified, `error` can be a [`Class`][], [`RegExp`][] or a validation +If specified, `error` can be a [`Class`][], [`RegExp`][], or a validation function. See [`assert.throws()`][] for more details. Besides the async nature to await the completion behaves identically to [`assert.doesNotThrow()`][]. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; await assert.doesNotReject( async () => { @@ -976,7 +976,7 @@ await assert.doesNotReject( ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); (async () => { await assert.doesNotReject( @@ -989,7 +989,7 @@ const assert = require('assert/strict'); ``` ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.doesNotReject(Promise.reject(new TypeError('Wrong value'))) .then(() => { @@ -998,7 +998,7 @@ assert.doesNotReject(Promise.reject(new TypeError('Wrong value'))) ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.doesNotReject(Promise.reject(new TypeError('Wrong value'))) .then(() => { @@ -1040,14 +1040,14 @@ parameter, then an [`AssertionError`][] is thrown. If the error is of a different type, or if the `error` parameter is undefined, the error is propagated back to the caller. -If specified, `error` can be a [`Class`][], [`RegExp`][] or a validation +If specified, `error` can be a [`Class`][], [`RegExp`][], or a validation function. See [`assert.throws()`][] for more details. The following, for instance, will throw the [`TypeError`][] because there is no matching error type in the assertion: ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.doesNotThrow( () => { @@ -1058,7 +1058,7 @@ assert.doesNotThrow( ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.doesNotThrow( () => { @@ -1072,7 +1072,7 @@ However, the following will result in an [`AssertionError`][] with the message 'Got unwanted exception...': ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.doesNotThrow( () => { @@ -1083,7 +1083,7 @@ assert.doesNotThrow( ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.doesNotThrow( () => { @@ -1098,7 +1098,7 @@ parameter, the value of `message` will be appended to the [`AssertionError`][] message: ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.doesNotThrow( () => { @@ -1111,7 +1111,7 @@ assert.doesNotThrow( ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.doesNotThrow( () => { @@ -1155,7 +1155,7 @@ using the [`==` operator][]. `NaN` is specially handled and treated as being identical if both sides are `NaN`. ```mjs -import assert from 'assert'; +import assert from 'node:assert'; assert.equal(1, 1); // OK, 1 == 1 @@ -1171,7 +1171,7 @@ assert.equal({ a: { b: 1 } }, { a: { b: 1 } }); ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); assert.equal(1, 1); // OK, 1 == 1 @@ -1205,7 +1205,7 @@ error message. If the `message` parameter is an instance of an [`Error`][] then it will be thrown instead of the [`AssertionError`][]. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.fail(); // AssertionError [ERR_ASSERTION]: Failed @@ -1218,7 +1218,7 @@ assert.fail(new TypeError('need array')); ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.fail(); // AssertionError [ERR_ASSERTION]: Failed @@ -1263,7 +1263,7 @@ removed from stacktrace (see [`Error.captureStackTrace`][]). If no arguments are given, the default message `Failed` will be used. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.fail('a', 'b'); // AssertionError [ERR_ASSERTION]: 'a' != 'b' @@ -1282,7 +1282,7 @@ assert.fail(1, 2, new TypeError('need array')); ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.fail('a', 'b'); // AssertionError [ERR_ASSERTION]: 'a' != 'b' @@ -1306,7 +1306,7 @@ influence on the error message. Example use of `stackStartFn` for truncating the exception's stacktrace: ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; function suppressFrame() { assert.fail('a', 'b', undefined, '!==', suppressFrame); @@ -1319,7 +1319,7 @@ suppressFrame(); ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); function suppressFrame() { assert.fail('a', 'b', undefined, '!==', suppressFrame); @@ -1354,7 +1354,7 @@ from the error passed to `ifError()` including the potential new frames for `ifError()` itself. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.ifError(null); // OK @@ -1380,7 +1380,7 @@ let err; ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.ifError(null); // OK @@ -1424,7 +1424,7 @@ changes: Expects the `string` input to match the regular expression. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.match('I will fail', /pass/); // AssertionError [ERR_ASSERTION]: The input did not match the regular ... @@ -1437,7 +1437,7 @@ assert.match('I will pass', /pass/); ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.match('I will fail', /pass/); // AssertionError [ERR_ASSERTION]: The input did not match the regular ... @@ -1507,7 +1507,7 @@ An alias of [`assert.notDeepStrictEqual()`][]. Tests for any deep inequality. Opposite of [`assert.deepEqual()`][]. ```mjs -import assert from 'assert'; +import assert from 'node:assert'; const obj1 = { a: { @@ -1540,7 +1540,7 @@ assert.notDeepEqual(obj1, obj4); ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); const obj1 = { a: { @@ -1619,14 +1619,14 @@ changes: Tests for deep strict inequality. Opposite of [`assert.deepStrictEqual()`][]. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.notDeepStrictEqual({ a: 1 }, { a: '1' }); // OK ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.notDeepStrictEqual({ a: 1 }, { a: '1' }); // OK @@ -1669,7 +1669,7 @@ Tests shallow, coercive inequality with the [`!=` operator][]. `NaN` is specially handled and treated as being identical if both sides are `NaN`. ```mjs -import assert from 'assert'; +import assert from 'node:assert'; assert.notEqual(1, 2); // OK @@ -1682,7 +1682,7 @@ assert.notEqual(1, '1'); ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); assert.notEqual(1, 2); // OK @@ -1718,7 +1718,7 @@ Tests strict inequality between the `actual` and `expected` parameters as determined by [`Object.is()`][]. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.notStrictEqual(1, 2); // OK @@ -1733,7 +1733,7 @@ assert.notStrictEqual(1, '1'); ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.notStrictEqual(1, 2); // OK @@ -1782,7 +1782,7 @@ Be aware that in the `repl` the error message will be different to the one thrown in a file! See below for further details. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.ok(true); // OK @@ -1817,7 +1817,7 @@ assert.ok(0); ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.ok(true); // OK @@ -1852,7 +1852,7 @@ assert.ok(0); ``` ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; // Using `assert()` works the same: assert(0); @@ -1862,7 +1862,7 @@ assert(0); ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); // Using `assert()` works the same: assert(0); @@ -1903,7 +1903,7 @@ If specified, `message` will be the message provided by the [`AssertionError`][] if the `asyncFn` fails to reject. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; await assert.rejects( async () => { @@ -1917,7 +1917,7 @@ await assert.rejects( ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); (async () => { await assert.rejects( @@ -1933,7 +1933,7 @@ const assert = require('assert/strict'); ``` ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; await assert.rejects( async () => { @@ -1948,7 +1948,7 @@ await assert.rejects( ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); (async () => { await assert.rejects( @@ -1965,7 +1965,7 @@ const assert = require('assert/strict'); ``` ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.rejects( Promise.reject(new Error('Wrong value')), @@ -1976,7 +1976,7 @@ assert.rejects( ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.rejects( Promise.reject(new Error('Wrong value')), @@ -2010,7 +2010,7 @@ Tests strict equality between the `actual` and `expected` parameters as determined by [`Object.is()`][]. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.strictEqual(1, 2); // AssertionError [ERR_ASSERTION]: Expected inputs to be strictly equal: @@ -2038,7 +2038,7 @@ assert.strictEqual(1, '1', new TypeError('Inputs are not identical')); ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.strictEqual(1, 2); // AssertionError [ERR_ASSERTION]: Expected inputs to be strictly equal: @@ -2108,7 +2108,7 @@ fails. Custom validation object/error instance: ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; const err = new TypeError('Wrong value'); err.code = 404; @@ -2137,7 +2137,7 @@ assert.throws( ); // Using regular expressions to validate error properties: -throws( +assert.throws( () => { throw err; }, @@ -2161,7 +2161,7 @@ throws( ); // Fails due to the different `message` and `name` properties: -throws( +assert.throws( () => { const otherErr = new Error('Not found'); // Copy all enumerable properties from `err` to `otherErr`. @@ -2177,7 +2177,7 @@ throws( ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); const err = new TypeError('Wrong value'); err.code = 404; @@ -2206,7 +2206,7 @@ assert.throws( ); // Using regular expressions to validate error properties: -throws( +assert.throws( () => { throw err; }, @@ -2230,7 +2230,7 @@ throws( ); // Fails due to the different `message` and `name` properties: -throws( +assert.throws( () => { const otherErr = new Error('Not found'); // Copy all enumerable properties from `err` to `otherErr`. @@ -2248,7 +2248,7 @@ throws( Validate instanceof using constructor: ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.throws( () => { @@ -2259,7 +2259,7 @@ assert.throws( ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.throws( () => { @@ -2275,7 +2275,7 @@ Using a regular expression runs `.toString` on the error object, and will therefore also include the error name. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.throws( () => { @@ -2286,7 +2286,7 @@ assert.throws( ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.throws( () => { @@ -2302,7 +2302,7 @@ The function must return `true` to indicate all internal validations passed. It will otherwise fail with an [`AssertionError`][]. ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; assert.throws( () => { @@ -2323,7 +2323,7 @@ assert.throws( ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); assert.throws( () => { @@ -2351,7 +2351,7 @@ message as the thrown error message is going to result in an a string as the second argument gets considered: ```mjs -import assert from 'assert/strict'; +import assert from 'node:assert/strict'; function throwingFirst() { throw new Error('First'); @@ -2387,7 +2387,7 @@ assert.throws(throwingFirst, /Second$/); ``` ```cjs -const assert = require('assert/strict'); +const assert = require('node:assert/strict'); function throwingFirst() { throw new Error('First'); diff --git a/doc/api/async_context.md b/doc/api/async_context.md index 58ee892e51dd92..342788bf2f58c9 100644 --- a/doc/api/async_context.md +++ b/doc/api/async_context.md @@ -15,14 +15,14 @@ or any other asynchronous duration. It is similar to thread-local storage in other languages. The `AsyncLocalStorage` and `AsyncResource` classes are part of the -`async_hooks` module: +`node:async_hooks` module: ```mjs -import { AsyncLocalStorage, AsyncResource } from 'async_hooks'; +import { AsyncLocalStorage, AsyncResource } from 'node:async_hooks'; ``` ```cjs -const { AsyncLocalStorage, AsyncResource } = require('async_hooks'); +const { AsyncLocalStorage, AsyncResource } = require('node:async_hooks'); ``` ## Class: `AsyncLocalStorage` @@ -39,18 +39,18 @@ changes: This class creates stores that stay coherent through asynchronous operations. -While you can create your own implementation on top of the `async_hooks` module, -`AsyncLocalStorage` should be preferred as it is a performant and memory safe -implementation that involves significant optimizations that are non-obvious to -implement. +While you can create your own implementation on top of the `node:async_hooks` +module, `AsyncLocalStorage` should be preferred as it is a performant and memory +safe implementation that involves significant optimizations that are non-obvious +to implement. The following example uses `AsyncLocalStorage` to build a simple logger that assigns IDs to incoming HTTP requests and includes them in messages logged within each request. ```mjs -import http from 'http'; -import { AsyncLocalStorage } from 'async_hooks'; +import http from 'node:http'; +import { AsyncLocalStorage } from 'node:async_hooks'; const asyncLocalStorage = new AsyncLocalStorage(); @@ -81,8 +81,8 @@ http.get('http://localhost:8080'); ``` ```cjs -const http = require('http'); -const { AsyncLocalStorage } = require('async_hooks'); +const http = require('node:http'); +const { AsyncLocalStorage } = require('node:async_hooks'); const asyncLocalStorage = new AsyncLocalStorage(); @@ -114,7 +114,7 @@ http.get('http://localhost:8080'); Each instance of `AsyncLocalStorage` maintains an independent storage context. Multiple instances can safely exist simultaneously without risk of interfering -with each other data. +with each other's data. ### `new AsyncLocalStorage()` @@ -348,7 +348,7 @@ The `init` hook will trigger when an `AsyncResource` is instantiated. The following is an overview of the `AsyncResource` API. ```mjs -import { AsyncResource, executionAsyncId } from 'async_hooks'; +import { AsyncResource, executionAsyncId } from 'node:async_hooks'; // AsyncResource() is meant to be extended. Instantiating a // new AsyncResource() also triggers init. If triggerAsyncId is omitted then @@ -376,7 +376,7 @@ asyncResource.triggerAsyncId(); ``` ```cjs -const { AsyncResource, executionAsyncId } = require('async_hooks'); +const { AsyncResource, executionAsyncId } = require('node:async_hooks'); // AsyncResource() is meant to be extended. Instantiating a // new AsyncResource() also triggers init. If triggerAsyncId is omitted then @@ -439,7 +439,7 @@ class DBQuery extends AsyncResource { } ``` -### Static method: `AsyncResource.bind(fn[, type, [thisArg]])` +### Static method: `AsyncResource.bind(fn[, type[, thisArg]])` -The `async_hooks` module provides an API to track asynchronous resources. It -can be accessed using: +The `node:async_hooks` module provides an API to track asynchronous resources. +It can be accessed using: ```mjs -import async_hooks from 'async_hooks'; +import async_hooks from 'node:async_hooks'; ``` ```cjs -const async_hooks = require('async_hooks'); +const async_hooks = require('node:async_hooks'); ``` ## Terminology @@ -34,7 +34,7 @@ interface, and each thread will use a new set of async IDs. Following is a simple overview of the public API. ```mjs -import async_hooks from 'async_hooks'; +import async_hooks from 'node:async_hooks'; // Return the ID of the current execution context. const eid = async_hooks.executionAsyncId(); @@ -59,30 +59,30 @@ asyncHook.disable(); // The following are the callbacks that can be passed to createHook(). // -// init is called during object construction. The resource may not have -// completed construction when this callback runs, therefore all fields of the +// init() is called during object construction. The resource may not have +// completed construction when this callback runs. Therefore, all fields of the // resource referenced by "asyncId" may not have been populated. function init(asyncId, type, triggerAsyncId, resource) { } -// Before is called just before the resource's callback is called. It can be +// before() is called just before the resource's callback is called. It can be // called 0-N times for handles (such as TCPWrap), and will be called exactly 1 // time for requests (such as FSReqCallback). function before(asyncId) { } -// After is called just after the resource's callback has finished. +// after() is called just after the resource's callback has finished. function after(asyncId) { } -// Destroy is called when the resource is destroyed. +// destroy() is called when the resource is destroyed. function destroy(asyncId) { } -// promiseResolve is called only for promise resources, when the -// `resolve` function passed to the `Promise` constructor is invoked +// promiseResolve() is called only for promise resources, when the +// resolve() function passed to the Promise constructor is invoked // (either directly or through other means of resolving a promise). function promiseResolve(asyncId) { } ``` ```cjs -const async_hooks = require('async_hooks'); +const async_hooks = require('node:async_hooks'); // Return the ID of the current execution context. const eid = async_hooks.executionAsyncId(); @@ -107,24 +107,24 @@ asyncHook.disable(); // The following are the callbacks that can be passed to createHook(). // -// init is called during object construction. The resource may not have -// completed construction when this callback runs, therefore all fields of the +// init() is called during object construction. The resource may not have +// completed construction when this callback runs. Therefore, all fields of the // resource referenced by "asyncId" may not have been populated. function init(asyncId, type, triggerAsyncId, resource) { } -// Before is called just before the resource's callback is called. It can be +// before() is called just before the resource's callback is called. It can be // called 0-N times for handles (such as TCPWrap), and will be called exactly 1 // time for requests (such as FSReqCallback). function before(asyncId) { } -// After is called just after the resource's callback has finished. +// after() is called just after the resource's callback has finished. function after(asyncId) { } -// Destroy is called when the resource is destroyed. +// destroy() is called when the resource is destroyed. function destroy(asyncId) { } -// promiseResolve is called only for promise resources, when the -// `resolve` function passed to the `Promise` constructor is invoked +// promiseResolve() is called only for promise resources, when the +// resolve() function passed to the Promise constructor is invoked // (either directly or through other means of resolving a promise). function promiseResolve(asyncId) { } ``` @@ -155,7 +155,7 @@ specifics of all functions that can be passed to `callbacks` is in the [Hook Callbacks][] section. ```mjs -import { createHook } from 'async_hooks'; +import { createHook } from 'node:async_hooks'; const asyncHook = createHook({ init(asyncId, type, triggerAsyncId, resource) { }, @@ -164,7 +164,7 @@ const asyncHook = createHook({ ``` ```cjs -const async_hooks = require('async_hooks'); +const async_hooks = require('node:async_hooks'); const asyncHook = async_hooks.createHook({ init(asyncId, type, triggerAsyncId, resource) { }, @@ -220,8 +220,8 @@ This will print to the file and will not invoke `AsyncHook` recursively because it is synchronous. ```mjs -import { writeFileSync } from 'fs'; -import { format } from 'util'; +import { writeFileSync } from 'node:fs'; +import { format } from 'node:util'; function debug(...args) { // Use a function like this one when debugging inside an AsyncHook callback @@ -230,8 +230,8 @@ function debug(...args) { ``` ```cjs -const fs = require('fs'); -const util = require('util'); +const fs = require('node:fs'); +const util = require('node:util'); function debug(...args) { // Use a function like this one when debugging inside an AsyncHook callback @@ -261,13 +261,13 @@ The `AsyncHook` instance is disabled by default. If the `AsyncHook` instance should be enabled immediately after creation, the following pattern can be used. ```mjs -import { createHook } from 'async_hooks'; +import { createHook } from 'node:async_hooks'; const hook = createHook(callbacks).enable(); ``` ```cjs -const async_hooks = require('async_hooks'); +const async_hooks = require('node:async_hooks'); const hook = async_hooks.createHook(callbacks).enable(); ``` @@ -307,7 +307,7 @@ closing it before the resource can be used. The following snippet demonstrates this. ```mjs -import { createServer } from 'net'; +import { createServer } from 'node:net'; createServer().listen(function() { this.close(); }); // OR @@ -315,7 +315,7 @@ clearTimeout(setTimeout(() => {}, 10)); ``` ```cjs -require('net').createServer().listen(function() { this.close(); }); +require('node:net').createServer().listen(function() { this.close(); }); // OR clearTimeout(setTimeout(() => {}, 10)); ``` @@ -361,9 +361,9 @@ created, while `triggerAsyncId` shows _why_ a resource was created. The following is a simple demonstration of `triggerAsyncId`: ```mjs -import { createHook, executionAsyncId } from 'async_hooks'; -import { stdout } from 'process'; -import net from 'net'; +import { createHook, executionAsyncId } from 'node:async_hooks'; +import { stdout } from 'node:process'; +import net from 'node:net'; createHook({ init(asyncId, type, triggerAsyncId) { @@ -378,9 +378,9 @@ net.createServer((conn) => {}).listen(8080); ``` ```cjs -const { createHook, executionAsyncId } = require('async_hooks'); -const { stdout } = require('process'); -const net = require('net'); +const { createHook, executionAsyncId } = require('node:async_hooks'); +const { stdout } = require('node:process'); +const net = require('node:net'); createHook({ init(asyncId, type, triggerAsyncId) { @@ -433,9 +433,9 @@ callback to `listen()` will look like. The output formatting is slightly more elaborate to make calling context easier to see. ```js -const async_hooks = require('async_hooks'); -const fs = require('fs'); -const net = require('net'); +const async_hooks = require('node:async_hooks'); +const fs = require('node:fs'); +const net = require('node:net'); const { fd } = process.stdout; let indent = 0; @@ -619,8 +619,8 @@ return an empty object as there is no handle or request object to use, but having an object representing the top-level can be helpful. ```mjs -import { open } from 'fs'; -import { executionAsyncId, executionAsyncResource } from 'async_hooks'; +import { open } from 'node:fs'; +import { executionAsyncId, executionAsyncResource } from 'node:async_hooks'; console.log(executionAsyncId(), executionAsyncResource()); // 1 {} open(new URL(import.meta.url), 'r', (err, fd) => { @@ -629,8 +629,8 @@ open(new URL(import.meta.url), 'r', (err, fd) => { ``` ```cjs -const { open } = require('fs'); -const { executionAsyncId, executionAsyncResource } = require('async_hooks'); +const { open } = require('node:fs'); +const { executionAsyncId, executionAsyncResource } = require('node:async_hooks'); console.log(executionAsyncId(), executionAsyncResource()); // 1 {} open(__filename, 'r', (err, fd) => { @@ -642,7 +642,7 @@ This can be used to implement continuation local storage without the use of a tracking `Map` to store the metadata: ```mjs -import { createServer } from 'http'; +import { createServer } from 'node:http'; import { executionAsyncId, executionAsyncResource, @@ -668,12 +668,12 @@ const server = createServer((req, res) => { ``` ```cjs -const { createServer } = require('http'); +const { createServer } = require('node:http'); const { executionAsyncId, executionAsyncResource, createHook -} = require('async_hooks'); +} = require('node:async_hooks'); const sym = Symbol('state'); // Private symbol to avoid pollution createHook({ @@ -707,7 +707,7 @@ changes: track when something calls. ```mjs -import { executionAsyncId } from 'async_hooks'; +import { executionAsyncId } from 'node:async_hooks'; console.log(executionAsyncId()); // 1 - bootstrap fs.open(path, 'r', (err, fd) => { @@ -716,7 +716,7 @@ fs.open(path, 'r', (err, fd) => { ``` ```cjs -const async_hooks = require('async_hooks'); +const async_hooks = require('node:async_hooks'); console.log(async_hooks.executionAsyncId()); // 1 - bootstrap fs.open(path, 'r', (err, fd) => { @@ -786,7 +786,7 @@ V8. This means that programs using promises or `async`/`await` will not get correct execution and trigger ids for promise callback contexts by default. ```mjs -import { executionAsyncId, triggerAsyncId } from 'async_hooks'; +import { executionAsyncId, triggerAsyncId } from 'node:async_hooks'; Promise.resolve(1729).then(() => { console.log(`eid ${executionAsyncId()} tid ${triggerAsyncId()}`); @@ -796,7 +796,7 @@ Promise.resolve(1729).then(() => { ``` ```cjs -const { executionAsyncId, triggerAsyncId } = require('async_hooks'); +const { executionAsyncId, triggerAsyncId } = require('node:async_hooks'); Promise.resolve(1729).then(() => { console.log(`eid ${executionAsyncId()} tid ${triggerAsyncId()}`); @@ -814,7 +814,7 @@ Installing async hooks via `async_hooks.createHook` enables promise execution tracking: ```mjs -import { createHook, executionAsyncId, triggerAsyncId } from 'async_hooks'; +import { createHook, executionAsyncId, triggerAsyncId } from 'node:async_hooks'; createHook({ init() {} }).enable(); // forces PromiseHooks to be enabled. Promise.resolve(1729).then(() => { console.log(`eid ${executionAsyncId()} tid ${triggerAsyncId()}`); @@ -824,7 +824,7 @@ Promise.resolve(1729).then(() => { ``` ```cjs -const { createHook, executionAsyncId, triggerAsyncId } = require('async_hooks'); +const { createHook, executionAsyncId, triggerAsyncId } = require('node:async_hooks'); createHook({ init() {} }).enable(); // forces PromiseHooks to be enabled. Promise.resolve(1729).then(() => { diff --git a/doc/api/buffer.md b/doc/api/buffer.md index f27ab14dcc9884..3a93b9d153e899 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -17,7 +17,7 @@ While the `Buffer` class is available within the global scope, it is still recommended to explicitly reference it via an import or require statement. ```mjs -import { Buffer } from 'buffer'; +import { Buffer } from 'node:buffer'; // Creates a zero-filled Buffer of length 10. const buf1 = Buffer.alloc(10); @@ -50,7 +50,7 @@ const buf7 = Buffer.from('tést', 'latin1'); ``` ```cjs -const { Buffer } = require('buffer'); +const { Buffer } = require('node:buffer'); // Creates a zero-filled Buffer of length 10. const buf1 = Buffer.alloc(10); @@ -102,7 +102,7 @@ specified. If no character encoding is specified, UTF-8 will be used as the default. ```mjs -import { Buffer } from 'buffer'; +import { Buffer } from 'node:buffer'; const buf = Buffer.from('hello world', 'utf8'); @@ -118,7 +118,7 @@ console.log(Buffer.from('fhqwhgads', 'utf16le')); ``` ```cjs -const { Buffer } = require('buffer'); +const { Buffer } = require('node:buffer'); const buf = Buffer.from('hello world', 'utf8'); @@ -134,7 +134,7 @@ console.log(Buffer.from('fhqwhgads', 'utf16le')); ``` Node.js buffers accept all case variations of encoding strings that they -receive. For example, UTF-8 can be specified as `'utf8'`, `'UTF8'` or `'uTf8'`. +receive. For example, UTF-8 can be specified as `'utf8'`, `'UTF8'`, or `'uTf8'`. The character encodings currently supported by Node.js are the following: @@ -197,7 +197,7 @@ The following legacy character encodings are also supported: U+FFFF. In Node.js, these code points are always supported. ```mjs -import { Buffer } from 'buffer'; +import { Buffer } from 'node:buffer'; Buffer.from('1ag123', 'hex'); // Prints , data truncated when first non-hexadecimal value @@ -211,7 +211,7 @@ Buffer.from('1634', 'hex'); ``` ```cjs -const { Buffer } = require('buffer'); +const { Buffer } = require('node:buffer'); Buffer.from('1ag123', 'hex'); // Prints , data truncated when first non-hexadecimal value @@ -263,7 +263,7 @@ There are two ways to create new [`TypedArray`][] instances from a `Buffer`: of the target type. ```mjs -import { Buffer } from 'buffer'; +import { Buffer } from 'node:buffer'; const buf = Buffer.from([1, 2, 3, 4]); const uint32array = new Uint32Array(buf); @@ -274,7 +274,7 @@ console.log(uint32array); ``` ```cjs -const { Buffer } = require('buffer'); +const { Buffer } = require('node:buffer'); const buf = Buffer.from([1, 2, 3, 4]); const uint32array = new Uint32Array(buf); @@ -288,7 +288,7 @@ console.log(uint32array); [`TypedArray`][] that shares its memory with the `Buffer`. ```mjs -import { Buffer } from 'buffer'; +import { Buffer } from 'node:buffer'; const buf = Buffer.from('hello', 'utf16le'); const uint16array = new Uint16Array( @@ -302,7 +302,7 @@ console.log(uint16array); ``` ```cjs -const { Buffer } = require('buffer'); +const { Buffer } = require('node:buffer'); const buf = Buffer.from('hello', 'utf16le'); const uint16array = new Uint16Array( @@ -316,12 +316,12 @@ console.log(uint16array); ``` It is possible to create a new `Buffer` that shares the same allocated -memory as a [`TypedArray`][] instance by using the `TypedArray` object’s +memory as a [`TypedArray`][] instance by using the `TypedArray` object's `.buffer` property in the same way. [`Buffer.from()`][`Buffer.from(arrayBuf)`] behaves like `new Uint8Array()` in this context. ```mjs -import { Buffer } from 'buffer'; +import { Buffer } from 'node:buffer'; const arr = new Uint16Array(2); @@ -348,7 +348,7 @@ console.log(buf2); ``` ```cjs -const { Buffer } = require('buffer'); +const { Buffer } = require('node:buffer'); const arr = new Uint16Array(2); @@ -379,7 +379,7 @@ possible to use only a portion of the underlying [`ArrayBuffer`][] by passing in `byteOffset` and `length` parameters. ```mjs -import { Buffer } from 'buffer'; +import { Buffer } from 'node:buffer'; const arr = new Uint16Array(20); const buf = Buffer.from(arr.buffer, 0, 16); @@ -389,7 +389,7 @@ console.log(buf.length); ``` ```cjs -const { Buffer } = require('buffer'); +const { Buffer } = require('node:buffer'); const arr = new Uint16Array(20); const buf = Buffer.from(arr.buffer, 0, 16); @@ -418,7 +418,7 @@ function: `Buffer` instances can be iterated over using `for..of` syntax: ```mjs -import { Buffer } from 'buffer'; +import { Buffer } from 'node:buffer'; const buf = Buffer.from([1, 2, 3]); @@ -432,7 +432,7 @@ for (const b of buf) { ``` ```cjs -const { Buffer } = require('buffer'); +const { Buffer } = require('node:buffer'); const buf = Buffer.from([1, 2, 3]); @@ -451,11 +451,15 @@ Additionally, the [`buf.values()`][], [`buf.keys()`][], and ## Class: `Blob` -> Stability: 1 - Experimental - A [`Blob`][] encapsulates immutable, raw data that can be safely shared across multiple worker threads. @@ -476,7 +480,7 @@ changes: * `options` {Object} * `endings` {string} One of either `'transparent'` or `'native'`. When set to `'native'`, line endings in string source parts will be converted to - the platform native line-ending as specified by `require('os').EOL`. + the platform native line-ending as specified by `require('node:os').EOL`. * `type` {string} The Blob content-type. The intent is for `type` to convey the MIME media type of the data, however no validation of the type format is performed. @@ -509,7 +513,7 @@ added: v15.7.0 The total size of the `Blob` in bytes. -### `blob.slice([start, [end, [type]]])` +### `blob.slice([start[, end[, type]]])` -The `child_process` module provides the ability to spawn subprocesses in +The `node:child_process` module provides the ability to spawn subprocesses in a manner that is similar, but not identical, to popen(3). This capability is primarily provided by the [`child_process.spawn()`][] function: ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const ls = spawn('ls', ['-lh', '/usr']); ls.stdout.on('data', (data) => { @@ -54,8 +54,8 @@ without blocking the Node.js event loop. The [`child_process.spawnSync()`][] function provides equivalent functionality in a synchronous manner that blocks the event loop until the spawned process either exits or is terminated. -For convenience, the `child_process` module provides a handful of synchronous -and asynchronous alternatives to [`child_process.spawn()`][] and +For convenience, the `node:child_process` module provides a handful of +synchronous and asynchronous alternatives to [`child_process.spawn()`][] and [`child_process.spawnSync()`][]. Each of these alternatives are implemented on top of [`child_process.spawn()`][] or [`child_process.spawnSync()`][]. @@ -110,7 +110,7 @@ spaces it needs to be quoted. ```js // On Windows Only... -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const bat = spawn('cmd.exe', ['/c', 'my.bat']); bat.stdout.on('data', (data) => { @@ -128,7 +128,7 @@ bat.on('exit', (code) => { ```js // OR... -const { exec, spawn } = require('child_process'); +const { exec, spawn } = require('node:child_process'); exec('my.bat', (err, stdout, stderr) => { if (err) { console.error(err); @@ -196,7 +196,7 @@ directly by the shell and special characters (vary based on need to be dealt with accordingly: ```js -const { exec } = require('child_process'); +const { exec } = require('node:child_process'); exec('"/path/to/test file/test.sh" arg1 arg2'); // Double quotes are used so that the space in the path is not interpreted as @@ -224,7 +224,7 @@ stderr output. If `encoding` is `'buffer'`, or an unrecognized character encoding, `Buffer` objects will be passed to the callback instead. ```js -const { exec } = require('child_process'); +const { exec } = require('node:child_process'); exec('cat *.js missing_file | wc -l', (error, stdout, stderr) => { if (error) { console.error(`exec error: ${error}`); @@ -250,8 +250,8 @@ rejected promise is returned, with the same `error` object given in the callback, but with two additional properties `stdout` and `stderr`. ```js -const util = require('util'); -const exec = util.promisify(require('child_process').exec); +const util = require('node:util'); +const exec = util.promisify(require('node:child_process').exec); async function lsExample() { const { stdout, stderr } = await exec('ls'); @@ -266,7 +266,7 @@ If the `signal` option is enabled, calling `.abort()` on the corresponding the error passed to the callback will be an `AbortError`: ```js -const { exec } = require('child_process'); +const { exec } = require('node:child_process'); const controller = new AbortController(); const { signal } = controller; const child = exec('grep ssh', { signal }, (error) => { @@ -332,7 +332,7 @@ not spawned, behaviors such as I/O redirection and file globbing are not supported. ```js -const { execFile } = require('child_process'); +const { execFile } = require('node:child_process'); const child = execFile('node', ['--version'], (error, stdout, stderr) => { if (error) { throw error; @@ -356,8 +356,8 @@ rejected promise is returned, with the same `error` object given in the callback, but with two additional properties `stdout` and `stderr`. ```js -const util = require('util'); -const execFile = util.promisify(require('child_process').execFile); +const util = require('node:util'); +const execFile = util.promisify(require('node:child_process').execFile); async function getVersion() { const { stdout } = await execFile('node', ['--version']); console.log(stdout); @@ -374,7 +374,7 @@ If the `signal` option is enabled, calling `.abort()` on the corresponding the error passed to the callback will be an `AbortError`: ```js -const { execFile } = require('child_process'); +const { execFile } = require('node:child_process'); const controller = new AbortController(); const { signal } = controller; const child = execFile('node', ['--version'], { signal }, (error) => { @@ -493,7 +493,7 @@ if (process.argv[2] === 'child') { console.log(`Hello from ${process.argv[2]}!`); }, 1_000); } else { - const { fork } = require('child_process'); + const { fork } = require('node:child_process'); const controller = new AbortController(); const { signal } = controller; const child = fork(__filename, ['child'], { signal }); @@ -604,7 +604,7 @@ Example of running `ls -lh /usr`, capturing `stdout`, `stderr`, and the exit code: ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const ls = spawn('ls', ['-lh', '/usr']); ls.stdout.on('data', (data) => { @@ -623,7 +623,7 @@ ls.on('close', (code) => { Example: A very elaborate way to run `ps ax | grep ssh` ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const ps = spawn('ps', ['ax']); const grep = spawn('grep', ['ssh']); @@ -660,7 +660,7 @@ grep.on('close', (code) => { Example of checking for failed `spawn`: ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const subprocess = spawn('bad_command'); subprocess.on('error', (err) => { @@ -681,7 +681,7 @@ If the `signal` option is enabled, calling `.abort()` on the corresponding the error passed to the callback will be an `AbortError`: ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const controller = new AbortController(); const { signal } = controller; const grep = spawn('grep', ['ssh'], { signal }); @@ -724,7 +724,7 @@ Example of a long-running process, by detaching and also ignoring its parent `stdio` file descriptors, in order to ignore the parent's termination: ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const subprocess = spawn(process.argv[0], ['child_program.js'], { detached: true, @@ -737,8 +737,8 @@ subprocess.unref(); Alternatively one can redirect the child process' output into files: ```js -const fs = require('fs'); -const { spawn } = require('child_process'); +const fs = require('node:fs'); +const { spawn } = require('node:child_process'); const out = fs.openSync('./out.log', 'a'); const err = fs.openSync('./out.log', 'a'); @@ -830,7 +830,7 @@ pipes between the parent and child. The value is one of the following: default is `'ignore'`. ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); // Child will use parent's stdios. spawn('prg', [], { stdio: 'inherit' }); @@ -1123,7 +1123,7 @@ streams. The `'close'` event will always emit after [`'exit'`][] was already emitted, or [`'error'`][] if the child failed to spawn. ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const ls = spawn('ls', ['-lh', '/usr']); ls.stdout.on('data', (data) => { @@ -1317,7 +1317,7 @@ signal(7) for a list of available signals. This function returns `true` if kill(2) succeeds, and `false` otherwise. ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const grep = spawn('grep', ['ssh']); grep.on('close', (code, signal) => { @@ -1351,7 +1351,7 @@ new process in a shell or with the use of the `shell` option of `ChildProcess`: ```js 'use strict'; -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const subprocess = spawn( 'sh', @@ -1396,7 +1396,7 @@ fails to spawn due to errors, then the value is `undefined` and `error` is emitted. ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const grep = spawn('grep', ['ssh']); console.log(`Spawned child pid: ${grep.pid}`); @@ -1414,7 +1414,7 @@ restore the removed reference count for the child process, forcing the parent to wait for the child to exit before exiting itself. ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const subprocess = spawn(process.argv[0], ['child_program.js'], { detached: true, @@ -1464,7 +1464,7 @@ message might not be the same as what is originally sent. For example, in the parent script: ```js -const cp = require('child_process'); +const cp = require('node:child_process'); const n = cp.fork(`${__dirname}/sub.js`); n.on('message', (m) => { @@ -1522,10 +1522,10 @@ The `sendHandle` argument can be used, for instance, to pass the handle of a TCP server object to the child process as illustrated in the example below: ```js -const subprocess = require('child_process').fork('subprocess.js'); +const subprocess = require('node:child_process').fork('subprocess.js'); // Open up the server object and send the handle. -const server = require('net').createServer(); +const server = require('node:net').createServer(); server.on('connection', (socket) => { socket.end('handled by parent'); }); @@ -1549,11 +1549,11 @@ process.on('message', (m, server) => { Once the server is now shared between the parent and child, some connections can be handled by the parent and some by the child. -While the example above uses a server created using the `net` module, `dgram` -module servers use exactly the same workflow with the exceptions of listening on -a `'message'` event instead of `'connection'` and using `server.bind()` instead -of `server.listen()`. This is, however, currently only supported on Unix -platforms. +While the example above uses a server created using the `node:net` module, +`node:dgram` module servers use exactly the same workflow with the exceptions of +listening on a `'message'` event instead of `'connection'` and using +`server.bind()` instead of `server.listen()`. This is, however, currently only +supported on Unix platforms. #### Example: sending a socket object @@ -1562,13 +1562,13 @@ socket to the child process. The example below spawns two children that each handle connections with "normal" or "special" priority: ```js -const { fork } = require('child_process'); +const { fork } = require('node:child_process'); const normal = fork('subprocess.js', ['normal']); const special = fork('subprocess.js', ['special']); // Open up the server and send sockets to child. Use pauseOnConnect to prevent // the sockets from being read before they are sent to the child process. -const server = require('net').createServer({ pauseOnConnect: true }); +const server = require('node:net').createServer({ pauseOnConnect: true }); server.on('connection', (socket) => { // If this is special priority... @@ -1639,7 +1639,7 @@ in which the child process is launched. added: v0.1.90 --> -* {stream.Readable} +* {stream.Readable|null|undefined} A `Readable Stream` that represents the child process's `stderr`. @@ -1649,8 +1649,8 @@ then this will be `null`. `subprocess.stderr` is an alias for `subprocess.stdio[2]`. Both properties will refer to the same value. -The `subprocess.stderr` property can be `null` if the child process could -not be successfully spawned. +The `subprocess.stderr` property can be `null` or `undefined` +if the child process could not be successfully spawned. ### `subprocess.stdin` @@ -1658,7 +1658,7 @@ not be successfully spawned. added: v0.1.90 --> -* {stream.Writable} +* {stream.Writable|null|undefined} A `Writable Stream` that represents the child process's `stdin`. @@ -1671,8 +1671,8 @@ then this will be `null`. `subprocess.stdin` is an alias for `subprocess.stdio[0]`. Both properties will refer to the same value. -The `subprocess.stdin` property can be `undefined` if the child process could -not be successfully spawned. +The `subprocess.stdin` property can be `null` or `undefined` +if the child process could not be successfully spawned. ### `subprocess.stdio` @@ -1693,9 +1693,9 @@ pipe, so only the parent's `subprocess.stdio[1]` is a stream, all other values in the array are `null`. ```js -const assert = require('assert'); -const fs = require('fs'); -const child_process = require('child_process'); +const assert = require('node:assert'); +const fs = require('node:fs'); +const child_process = require('node:child_process'); const subprocess = child_process.spawn('ls', { stdio: [ @@ -1724,7 +1724,7 @@ not be successfully spawned. added: v0.1.90 --> -* {stream.Readable} +* {stream.Readable|null|undefined} A `Readable Stream` that represents the child process's `stdout`. @@ -1735,7 +1735,7 @@ then this will be `null`. refer to the same value. ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const subprocess = spawn('ls'); @@ -1744,8 +1744,8 @@ subprocess.stdout.on('data', (data) => { }); ``` -The `subprocess.stdout` property can be `null` if the child process could -not be successfully spawned. +The `subprocess.stdout` property can be `null` or `undefined` +if the child process could not be successfully spawned. ### `subprocess.unref()` @@ -1761,7 +1761,7 @@ independently of the child, unless there is an established IPC channel between the child and the parent. ```js -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); const subprocess = spawn(process.argv[0], ['child_program.js'], { detached: true, @@ -1802,7 +1802,7 @@ added: --> Child processes support a serialization mechanism for IPC that is based on the -[serialization API of the `v8` module][v8.serdes], based on the +[serialization API of the `node:v8` module][v8.serdes], based on the [HTML structured clone algorithm][]. This is generally more powerful and supports more built-in JavaScript object types, such as `BigInt`, `Map` and `Set`, `ArrayBuffer` and `TypedArray`, `Buffer`, `Error`, `RegExp` etc. diff --git a/doc/api/cli.md b/doc/api/cli.md index 475894d7c0e466..c61cb96f231ece 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -98,7 +98,7 @@ analysis using a debugger (such as `lldb`, `gdb`, and `mdb`). If this flag is passed, the behavior can still be set to not abort through [`process.setUncaughtExceptionCaptureCallback()`][] (and through usage of the -`domain` module that uses it). +`node:domain` module that uses it). ### `--completion-bash` @@ -226,7 +226,7 @@ added: v9.8.0 Make built-in language features like `eval` and `new Function` that generate code from strings throw an exception instead. This does not affect the Node.js -`vm` module. +`node:vm` module. ### `--dns-result-order=order` @@ -280,6 +280,14 @@ added: v16.15.0 Enable experimental support for the [Fetch API][]. +### `--experimental-global-customevent` + + + +Expose the [CustomEvent Web API][] on the global scope. + ### `--experimental-global-webcrypto` Specify the `module` of a custom experimental [ECMAScript module loader][]. @@ -356,7 +369,7 @@ See [customizing ESM specifier resolution][] for example usage. added: v9.6.0 --> -Enable experimental ES Module support in the `vm` module. +Enable experimental ES Module support in the `node:vm` module. ### `--experimental-wasi-unstable-preview1` @@ -414,6 +427,18 @@ under this flag. To allow polyfills to be added, `--require` runs before freezing intrinsics. +### `--force-node-api-uncaught-exceptions-policy` + + + +Enforces `uncaughtException` event on Node-API asynchronous callbacks. + +To prevent from an existing add-on from crashing the process, this flag is not +enabled by default. In the future, this flag will be enabled by default to +enforce the correct behavior. + ### `--heapsnapshot-near-heap-limit=max_count` -Specify the maximum size, in bytes, of HTTP headers. Defaults to 16 KB. +Specify the maximum size, in bytes, of HTTP headers. Defaults to 16 KiB. ### `--napi-modules` @@ -732,6 +759,30 @@ Load an OpenSSL configuration file on startup. Among other uses, this can be used to enable FIPS-compliant crypto if Node.js is built against FIPS-enabled OpenSSL. +### `--openssl-shared-config` + + + +Enable OpenSSL default configuration section, `openssl_conf` to be read from +the OpenSSL configuration file. The default configuration file is named +`openssl.cnf` but this can be changed using the environment variable +`OPENSSL_CONF`, or by using the command line option `--openssl-config`. +The location of the default OpenSSL configuration file depends on how OpenSSL +is being linked to Node.js. Sharing the OpenSSL configuration may have unwanted +implications and it is recommended to use a configuration section specific to +Node.js which is `nodejs_conf` and is default when this option is not used. + +### `--openssl-legacy-provider` + + + +Enable OpenSSL 3.0 legacy provider when dynamically linking to OpenSSL 3.x. +For more information please see [OSSL\_PROVIDER-legacy][OSSL_PROVIDER-legacy]. + ### `--pending-deprecation` + +Starts the Node.js command line test runner. This flag cannot be combined with +`--check`, `--eval`, `--interactive`, or the inspector. See the documentation +on [running tests from the command line][] for more details. + +### `--test-only` + + + +Configures the test runner to only execute top level tests that have the `only` +option set. + ### `--throw-deprecation` -* {number} +* {integer} Each new worker is given its own unique id, this id is stored in the `id`. @@ -505,10 +505,10 @@ This function returns `true` if the worker's process has terminated (either because of exiting or being signaled). Otherwise, it returns `false`. ```mjs -import cluster from 'cluster'; -import http from 'http'; -import { cpus } from 'os'; -import process from 'process'; +import cluster from 'node:cluster'; +import http from 'node:http'; +import { cpus } from 'node:os'; +import process from 'node:process'; const numCPUs = cpus().length; @@ -538,10 +538,10 @@ if (cluster.isPrimary) { ``` ```cjs -const cluster = require('cluster'); -const http = require('http'); -const numCPUs = require('os').cpus().length; -const process = require('process'); +const cluster = require('node:cluster'); +const http = require('node:http'); +const numCPUs = require('node:os').cpus().length; +const process = require('node:process'); if (cluster.isPrimary) { console.log(`Primary ${process.pid} is running`); @@ -746,7 +746,7 @@ primary. The event handler is executed with two arguments, the `worker` contains the worker object and the `address` object contains the following connection -properties: `address`, `port` and `addressType`. This is very useful if the +properties: `address`, `port`, and `addressType`. This is very useful if the worker is listening on more than one address. ```js @@ -987,7 +987,7 @@ The defaults above apply to the first call only; the defaults for later calls are the current values at the time of `cluster.setupPrimary()` is called. ```mjs -import cluster from 'cluster'; +import cluster from 'node:cluster'; cluster.setupPrimary({ exec: 'worker.js', @@ -1003,7 +1003,7 @@ cluster.fork(); // http worker ``` ```cjs -const cluster = require('cluster'); +const cluster = require('node:cluster'); cluster.setupPrimary({ exec: 'worker.js', @@ -1031,7 +1031,7 @@ added: v0.7.0 A reference to the current worker object. Not available in the primary process. ```mjs -import cluster from 'cluster'; +import cluster from 'node:cluster'; if (cluster.isPrimary) { console.log('I am primary'); @@ -1043,7 +1043,7 @@ if (cluster.isPrimary) { ``` ```cjs -const cluster = require('cluster'); +const cluster = require('node:cluster'); if (cluster.isPrimary) { console.log('I am primary'); @@ -1072,7 +1072,7 @@ advance. However, it is guaranteed that the removal from the `cluster.workers` list happens before the last `'disconnect'` or `'exit'` event is emitted. ```mjs -import cluster from 'cluster'; +import cluster from 'node:cluster'; for (const worker of Object.values(cluster.workers)) { worker.send('big announcement to all workers'); @@ -1080,7 +1080,7 @@ for (const worker of Object.values(cluster.workers)) { ``` ```cjs -const cluster = require('cluster'); +const cluster = require('node:cluster'); for (const worker of Object.values(cluster.workers)) { worker.send('big announcement to all workers'); diff --git a/doc/api/console.md b/doc/api/console.md index bd890e20a79a59..1818d6f776b9f5 100644 --- a/doc/api/console.md +++ b/doc/api/console.md @@ -6,16 +6,16 @@ -The `console` module provides a simple debugging console that is similar to the -JavaScript console mechanism provided by web browsers. +The `node:console` module provides a simple debugging console that is similar to +the JavaScript console mechanism provided by web browsers. The module exports two specific components: -* A `Console` class with methods such as `console.log()`, `console.error()` and +* A `Console` class with methods such as `console.log()`, `console.error()`, and `console.warn()` that can be used to write to any Node.js stream. * A global `console` instance configured to write to [`process.stdout`][] and [`process.stderr`][]. The global `console` can be used without calling - `require('console')`. + `require('node:console')`. _**Warning**_: The global console object's methods are neither consistently synchronous like the browser APIs they resemble, nor are they consistently @@ -77,11 +77,11 @@ changes: The `Console` class can be used to create a simple logger with configurable -output streams and can be accessed using either `require('console').Console` +output streams and can be accessed using either `require('node:console').Console` or `console.Console` (or their destructured counterparts): ```js -const { Console } = require('console'); +const { Console } = require('node:console'); ``` ```js @@ -408,7 +408,7 @@ added: v10.0.0 Try to construct a table with the columns of the properties of `tabularData` (or use `properties`) and rows of `tabularData` and log it. Falls back to just -logging the argument if it can’t be parsed as tabular. +logging the argument if it can't be parsed as tabular. ```js // These can't be parsed as tabular data @@ -459,7 +459,7 @@ changes: description: The elapsed time is displayed with a suitable time unit. - version: v6.0.0 pr-url: https://github.com/nodejs/node/pull/5901 - description: This method no longer supports multiple calls that don’t map + description: This method no longer supports multiple calls that don't map to individual `console.time()` calls; see below for details. --> diff --git a/doc/api/corepack.md b/doc/api/corepack.md index fc13f21508b5b8..a6058e42ba1692 100644 --- a/doc/api/corepack.md +++ b/doc/api/corepack.md @@ -33,14 +33,14 @@ This feature simplifies two core workflows: ### Enabling the feature Due to its experimental status, Corepack currently needs to be explicitly -enabled to have any effect. To do that simply run [`corepack enable`][], which -will set up the symlinks in your environment, next to the `node` binary +enabled to have any effect. To do that, run [`corepack enable`][], which +will set up the symlinks in your environment next to the `node` binary (and overwrite the existing symlinks if necessary). From this point forward, any call to the [supported binaries][] will work -without further setup. Should you experience a problem, just run +without further setup. Should you experience a problem, run [`corepack disable`][] to remove the proxies from your system (and consider -opening up an issue on the [Corepack repository][] to let us know). +opening an issue on the [Corepack repository][] to let us know). ### Configuring a package @@ -57,7 +57,7 @@ successfully retrieved. When running outside of an existing project (for example when running `yarn init`), Corepack will by default use predefined versions roughly corresponding to the latest stable releases from each tool. Those versions can -be easily overriden by running the [`corepack prepare`][] command along with the +be overridden by running the [`corepack prepare`][] command along with the package manager version you wish to set: ```bash @@ -73,8 +73,8 @@ it can conflict with such environments. To avoid that happening, call the the same time you're preparing your deploy image). This will ensure that the required package managers are available even without network access. -The `prepare` command has [various flags][], consult the detailed -[Corepack documentation][] for more information on the matter. +The `prepare` command has [various flags][]. Consult the detailed +[Corepack documentation][] for more information. ## Supported package managers @@ -87,10 +87,10 @@ The following binaries are provided through Corepack: ## Common questions -### How does Corepack currently interact with npm? +### How does Corepack interact with npm? -While Corepack could easily support npm like any other package manager, its -shims aren't currently enabled by default. This has a few consequences: +While Corepack could support npm like any other package manager, its +shims aren't enabled by default. This has a few consequences: * It's always possible to run a `npm` command within a project configured to be used with another package manager, since Corepack cannot intercept it. @@ -103,13 +103,13 @@ shims aren't currently enabled by default. This has a few consequences: npm prevents accidentally overriding the Corepack binaries when doing a global install. To avoid this problem, consider one of the following options: -* Don't run this command anymore; Corepack will provide the package manager +* Don't run this command; Corepack will provide the package manager binaries anyway and will ensure that the requested versions are always - available, so installing the package managers explicitly isn't needed anymore. + available, so installing the package managers explicitly isn't needed. * Add the `--force` flag to `npm install`; this will tell npm that it's fine to - override binaries, but you'll erase the Corepack ones in the process (should - that happen, run [`corepack enable`][] again to add them back). + override binaries, but you'll erase the Corepack ones in the process. (Run + [`corepack enable`][] to add them back.) [Corepack]: https://github.com/nodejs/corepack [Corepack documentation]: https://github.com/nodejs/corepack#readme diff --git a/doc/api/crypto.md b/doc/api/crypto.md index dff4142fd4a5e2..27e57141e2d5b9 100644 --- a/doc/api/crypto.md +++ b/doc/api/crypto.md @@ -6,11 +6,12 @@ -The `crypto` module provides cryptographic functionality that includes a set of -wrappers for OpenSSL's hash, HMAC, cipher, decipher, sign, and verify functions. +The `node:crypto` module provides cryptographic functionality that includes a +set of wrappers for OpenSSL's hash, HMAC, cipher, decipher, sign, and verify +functions. ```mjs -const { createHmac } = await import('crypto'); +const { createHmac } = await import('node:crypto'); const secret = 'abcdefg'; const hash = createHmac('sha256', secret) @@ -22,7 +23,7 @@ console.log(hash); ``` ```cjs -const crypto = require('crypto'); +const crypto = require('node:crypto'); const secret = 'abcdefg'; const hash = crypto.createHmac('sha256', secret) @@ -36,8 +37,8 @@ console.log(hash); ## Determining if crypto support is unavailable It is possible for Node.js to be built without including support for the -`crypto` module. In such cases, attempting to `import` from `crypto` or -calling `require('crypto')` will result in an error being thrown. +`node:crypto` module. In such cases, attempting to `import` from `crypto` or +calling `require('node:crypto')` will result in an error being thrown. When using CommonJS, the error thrown can be caught using try/catch: @@ -46,7 +47,7 @@ When using CommonJS, the error thrown can be caught using try/catch: ```cjs let crypto; try { - crypto = require('crypto'); + crypto = require('node:crypto'); } catch (err) { console.log('crypto support is disabled!'); } @@ -59,12 +60,12 @@ a preload module). When using ESM, if there is a chance that the code may be run on a build of Node.js where crypto support is not enabled, consider using the -`import()` function instead of the lexical `import` keyword: +[`import()`][] function instead of the lexical `import` keyword: ```mjs let crypto; try { - crypto = await import('crypto'); + crypto = await import('node:crypto'); } catch (err) { console.log('crypto support is disabled!'); } @@ -82,7 +83,7 @@ Netscape and was specified formally as part of [HTML5's `keygen` element][]. `` is deprecated since [HTML 5.2][] and new projects should not use this element anymore. -The `crypto` module provides the `Certificate` class for working with SPKAC +The `node:crypto` module provides the `Certificate` class for working with SPKAC data. The most common usage is handling output generated by the HTML5 `` element. Node.js uses [OpenSSL's SPKAC implementation][] internally. @@ -103,7 +104,7 @@ changes: includes a public key and a challenge. ```mjs -const { Certificate } = await import('crypto'); +const { Certificate } = await import('node:crypto'); const spkac = getSpkacSomehow(); const challenge = Certificate.exportChallenge(spkac); console.log(challenge.toString('utf8')); @@ -111,7 +112,7 @@ console.log(challenge.toString('utf8')); ``` ```cjs -const { Certificate } = require('crypto'); +const { Certificate } = require('node:crypto'); const spkac = getSpkacSomehow(); const challenge = Certificate.exportChallenge(spkac); console.log(challenge.toString('utf8')); @@ -135,7 +136,7 @@ changes: which includes a public key and a challenge. ```mjs -const { Certificate } = await import('crypto'); +const { Certificate } = await import('node:crypto'); const spkac = getSpkacSomehow(); const publicKey = Certificate.exportPublicKey(spkac); console.log(publicKey); @@ -143,7 +144,7 @@ console.log(publicKey); ``` ```cjs -const { Certificate } = require('crypto'); +const { Certificate } = require('node:crypto'); const spkac = getSpkacSomehow(); const publicKey = Certificate.exportPublicKey(spkac); console.log(publicKey); @@ -168,8 +169,8 @@ changes: `false` otherwise. ```mjs -import { Buffer } from 'buffer'; -const { Certificate } = await import('crypto'); +import { Buffer } from 'node:buffer'; +const { Certificate } = await import('node:crypto'); const spkac = getSpkacSomehow(); console.log(Certificate.verifySpkac(Buffer.from(spkac))); @@ -177,8 +178,8 @@ console.log(Certificate.verifySpkac(Buffer.from(spkac))); ``` ```cjs -const { Certificate } = require('crypto'); -const { Buffer } = require('buffer'); +const { Certificate } = require('node:crypto'); +const { Buffer } = require('node:buffer'); const spkac = getSpkacSomehow(); console.log(Certificate.verifySpkac(Buffer.from(spkac))); @@ -198,14 +199,14 @@ Instances of the `Certificate` class can be created using the `new` keyword or by calling `crypto.Certificate()` as a function: ```mjs -const { Certificate } = await import('crypto'); +const { Certificate } = await import('node:crypto'); const cert1 = new Certificate(); const cert2 = Certificate(); ``` ```cjs -const { Certificate } = require('crypto'); +const { Certificate } = require('node:crypto'); const cert1 = new Certificate(); const cert2 = Certificate(); @@ -223,7 +224,7 @@ added: v0.11.8 includes a public key and a challenge. ```mjs -const { Certificate } = await import('crypto'); +const { Certificate } = await import('node:crypto'); const cert = Certificate(); const spkac = getSpkacSomehow(); const challenge = cert.exportChallenge(spkac); @@ -232,7 +233,7 @@ console.log(challenge.toString('utf8')); ``` ```cjs -const { Certificate } = require('crypto'); +const { Certificate } = require('node:crypto'); const cert = Certificate(); const spkac = getSpkacSomehow(); const challenge = cert.exportChallenge(spkac); @@ -252,7 +253,7 @@ added: v0.11.8 which includes a public key and a challenge. ```mjs -const { Certificate } = await import('crypto'); +const { Certificate } = await import('node:crypto'); const cert = Certificate(); const spkac = getSpkacSomehow(); const publicKey = cert.exportPublicKey(spkac); @@ -261,7 +262,7 @@ console.log(publicKey); ``` ```cjs -const { Certificate } = require('crypto'); +const { Certificate } = require('node:crypto'); const cert = Certificate(); const spkac = getSpkacSomehow(); const publicKey = cert.exportPublicKey(spkac); @@ -281,8 +282,8 @@ added: v0.11.8 `false` otherwise. ```mjs -import { Buffer } from 'buffer'; -const { Certificate } = await import('crypto'); +import { Buffer } from 'node:buffer'; +const { Certificate } = await import('node:crypto'); const cert = Certificate(); const spkac = getSpkacSomehow(); @@ -291,8 +292,8 @@ console.log(cert.verifySpkac(Buffer.from(spkac))); ``` ```cjs -const { Certificate } = require('crypto'); -const { Buffer } = require('buffer'); +const { Certificate } = require('node:crypto'); +const { Buffer } = require('node:buffer'); const cert = Certificate(); const spkac = getSpkacSomehow(); @@ -327,7 +328,7 @@ const { scrypt, randomFill, createCipheriv -} = await import('crypto'); +} = await import('node:crypto'); const algorithm = 'aes-192-cbc'; const password = 'Password used to generate key'; @@ -360,7 +361,7 @@ const { scrypt, randomFill, createCipheriv -} = require('crypto'); +} = require('node:crypto'); const algorithm = 'aes-192-cbc'; const password = 'Password used to generate key'; @@ -404,7 +405,7 @@ const { scrypt, randomFill, createCipheriv -} = await import('crypto'); +} = await import('node:crypto'); const algorithm = 'aes-192-cbc'; const password = 'Password used to generate key'; @@ -433,17 +434,17 @@ scrypt(password, 'salt', 24, (err, key) => { const { createReadStream, createWriteStream, -} = require('fs'); +} = require('node:fs'); const { pipeline -} = require('stream'); +} = require('node:stream'); const { scrypt, randomFill, createCipheriv, -} = require('crypto'); +} = require('node:crypto'); const algorithm = 'aes-192-cbc'; const password = 'Password used to generate key'; @@ -475,7 +476,7 @@ const { scrypt, randomFill, createCipheriv -} = await import('crypto'); +} = await import('node:crypto'); const algorithm = 'aes-192-cbc'; const password = 'Password used to generate key'; @@ -502,7 +503,7 @@ const { scrypt, randomFill, createCipheriv, -} = require('crypto'); +} = require('node:crypto'); const algorithm = 'aes-192-cbc'; const password = 'Password used to generate key'; @@ -546,7 +547,8 @@ added: v1.0.0 --> * Returns: {Buffer} When using an authenticated encryption mode (`GCM`, `CCM`, - and `OCB` are currently supported), the `cipher.getAuthTag()` method returns a + `OCB`, and `chacha20-poly1305` are currently supported), the + `cipher.getAuthTag()` method returns a [`Buffer`][] containing the _authentication tag_ that has been computed from the given data. @@ -568,7 +570,8 @@ added: v1.0.0 * `encoding` {string} The string encoding to use when `buffer` is a string. * Returns: {Cipher} for method chaining. -When using an authenticated encryption mode (`GCM`, `CCM`, and `OCB` are +When using an authenticated encryption mode (`GCM`, `CCM`, `OCB`, and +`chacha20-poly1305` are currently supported), the `cipher.setAAD()` method sets the value used for the _additional authenticated data_ (AAD) input parameter. @@ -653,11 +656,11 @@ directly using the `new` keyword. Example: Using `Decipher` objects as streams: ```mjs -import { Buffer } from 'buffer'; +import { Buffer } from 'node:buffer'; const { scryptSync, createDecipheriv -} = await import('crypto'); +} = await import('node:crypto'); const algorithm = 'aes-192-cbc'; const password = 'Password used to generate key'; @@ -692,8 +695,8 @@ decipher.end(); const { scryptSync, createDecipheriv, -} = require('crypto'); -const { Buffer } = require('buffer'); +} = require('node:crypto'); +const { Buffer } = require('node:buffer'); const algorithm = 'aes-192-cbc'; const password = 'Password used to generate key'; @@ -731,11 +734,11 @@ import { createReadStream, createWriteStream, } from 'fs'; -import { Buffer } from 'buffer'; +import { Buffer } from 'node:buffer'; const { scryptSync, createDecipheriv -} = await import('crypto'); +} = await import('node:crypto'); const algorithm = 'aes-192-cbc'; const password = 'Password used to generate key'; @@ -756,12 +759,12 @@ input.pipe(decipher).pipe(output); const { createReadStream, createWriteStream, -} = require('fs'); +} = require('node:fs'); const { scryptSync, createDecipheriv, -} = require('crypto'); -const { Buffer } = require('buffer'); +} = require('node:crypto'); +const { Buffer } = require('node:buffer'); const algorithm = 'aes-192-cbc'; const password = 'Password used to generate key'; @@ -781,11 +784,11 @@ input.pipe(decipher).pipe(output); Example: Using the [`decipher.update()`][] and [`decipher.final()`][] methods: ```mjs -import { Buffer } from 'buffer'; +import { Buffer } from 'node:buffer'; const { scryptSync, createDecipheriv -} = await import('crypto'); +} = await import('node:crypto'); const algorithm = 'aes-192-cbc'; const password = 'Password used to generate key'; @@ -809,8 +812,8 @@ console.log(decrypted); const { scryptSync, createDecipheriv, -} = require('crypto'); -const { Buffer } = require('buffer'); +} = require('node:crypto'); +const { Buffer } = require('node:buffer'); const algorithm = 'aes-192-cbc'; const password = 'Password used to generate key'; @@ -865,7 +868,8 @@ changes: * `encoding` {string} String encoding to use when `buffer` is a string. * Returns: {Decipher} for method chaining. -When using an authenticated encryption mode (`GCM`, `CCM`, and `OCB` are +When using an authenticated encryption mode (`GCM`, `CCM`, `OCB`, and +`chacha20-poly1305` are currently supported), the `decipher.setAAD()` method sets the value used for the _additional authenticated data_ (AAD) input parameter. @@ -899,7 +903,8 @@ changes: * `encoding` {string} String encoding to use when `buffer` is a string. * Returns: {Decipher} for method chaining. -When using an authenticated encryption mode (`GCM`, `CCM`, and `OCB` are +When using an authenticated encryption mode (`GCM`, `CCM`, `OCB`, and +`chacha20-poly1305` are currently supported), the `decipher.setAuthTag()` method is used to pass in the received _authentication tag_. If no tag is provided, or if the cipher text has been tampered with, [`decipher.final()`][] will throw, indicating that the @@ -908,7 +913,8 @@ is invalid according to [NIST SP 800-38D][] or does not match the value of the `authTagLength` option, `decipher.setAuthTag()` will throw an error. The `decipher.setAuthTag()` method must be called before [`decipher.update()`][] -for `CCM` mode or before [`decipher.final()`][] for `GCM` and `OCB` modes. +for `CCM` mode or before [`decipher.final()`][] for `GCM` and `OCB` modes and +`chacha20-poly1305`. `decipher.setAuthTag()` can only be called once. When passing a string as the authentication tag, please consider @@ -976,11 +982,11 @@ Instances of the `DiffieHellman` class can be created using the [`crypto.createDiffieHellman()`][] function. ```mjs -import assert from 'assert'; +import assert from 'node:assert'; const { createDiffieHellman -} = await import('crypto'); +} = await import('node:crypto'); // Generate Alice's keys... const alice = createDiffieHellman(2048); @@ -999,11 +1005,11 @@ assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex')); ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); const { createDiffieHellman, -} = require('crypto'); +} = require('node:crypto'); // Generate Alice's keys... const alice = createDiffieHellman(2048); @@ -1147,8 +1153,7 @@ added: v0.11.12 A bit field containing any warnings and/or errors resulting from a check performed during initialization of the `DiffieHellman` object. -The following values are valid for this property (as defined in `constants` -module): +The following values are valid for this property (as defined in `node:constants` module): * `DH_CHECK_P_NOT_SAFE_PRIME` * `DH_CHECK_P_NOT_PRIME` @@ -1167,12 +1172,12 @@ its keys after creation. In other words, it does not implement `setPublicKey()` or `setPrivateKey()` methods. ```mjs -const { createDiffieHellmanGroup } = await import('crypto'); +const { createDiffieHellmanGroup } = await import('node:crypto'); const dh = createDiffieHellmanGroup('modp1'); ``` ```cjs -const { createDiffieHellmanGroup } = require('crypto'); +const { createDiffieHellmanGroup } = require('node:crypto'); const dh = createDiffieHellmanGroup('modp1'); ``` @@ -1204,11 +1209,11 @@ Instances of the `ECDH` class can be created using the [`crypto.createECDH()`][] function. ```mjs -import assert from 'assert'; +import assert from 'node:assert'; const { createECDH -} = await import('crypto'); +} = await import('node:crypto'); // Generate Alice's keys... const alice = createECDH('secp521r1'); @@ -1227,11 +1232,11 @@ assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex')); ``` ```cjs -const assert = require('assert'); +const assert = require('node:assert'); const { createECDH, -} = require('crypto'); +} = require('node:crypto'); // Generate Alice's keys... const alice = createECDH('secp521r1'); @@ -1284,7 +1289,7 @@ Example (uncompressing a key): const { createECDH, ECDH -} = await import('crypto'); +} = await import('node:crypto'); const ecdh = createECDH('secp256k1'); ecdh.generateKeys(); @@ -1305,7 +1310,7 @@ console.log(uncompressedKey === ecdh.getPublicKey('hex')); const { createECDH, ECDH, -} = require('crypto'); +} = require('node:crypto'); const ecdh = createECDH('secp256k1'); ecdh.generateKeys(); @@ -1456,7 +1461,7 @@ Example (obtaining a shared secret): const { createECDH, createHash -} = await import('crypto'); +} = await import('node:crypto'); const alice = createECDH('secp256k1'); const bob = createECDH('secp256k1'); @@ -1483,7 +1488,7 @@ console.log(aliceSecret === bobSecret); const { createECDH, createHash, -} = require('crypto'); +} = require('node:crypto'); const alice = createECDH('secp256k1'); const bob = createECDH('secp256k1'); @@ -1530,7 +1535,7 @@ Example: Using `Hash` objects as streams: ```mjs const { createHash -} = await import('crypto'); +} = await import('node:crypto'); const hash = createHash('sha256'); @@ -1552,7 +1557,7 @@ hash.end(); ```cjs const { createHash, -} = require('crypto'); +} = require('node:crypto'); const hash = createHash('sha256'); @@ -1574,9 +1579,9 @@ hash.end(); Example: Using `Hash` and piped streams: ```mjs -import { createReadStream } from 'fs'; -import { stdout } from 'process'; -const { createHash } = await import('crypto'); +import { createReadStream } from 'node:fs'; +import { stdout } from 'node:process'; +const { createHash } = await import('node:crypto'); const hash = createHash('sha256'); @@ -1585,9 +1590,9 @@ input.pipe(hash).setEncoding('hex').pipe(stdout); ``` ```cjs -const { createReadStream } = require('fs'); -const { createHash } = require('crypto'); -const { stdout } = require('process'); +const { createReadStream } = require('node:fs'); +const { createHash } = require('node:crypto'); +const { stdout } = require('node:process'); const hash = createHash('sha256'); @@ -1600,7 +1605,7 @@ Example: Using the [`hash.update()`][] and [`hash.digest()`][] methods: ```mjs const { createHash -} = await import('crypto'); +} = await import('node:crypto'); const hash = createHash('sha256'); @@ -1613,7 +1618,7 @@ console.log(hash.digest('hex')); ```cjs const { createHash, -} = require('crypto'); +} = require('node:crypto'); const hash = createHash('sha256'); @@ -1646,7 +1651,7 @@ its [`hash.digest()`][] method has been called. // Calculate a rolling hash. const { createHash -} = await import('crypto'); +} = await import('node:crypto'); const hash = createHash('sha256'); @@ -1666,7 +1671,7 @@ console.log(hash.copy().digest('hex')); // Calculate a rolling hash. const { createHash, -} = require('crypto'); +} = require('node:crypto'); const hash = createHash('sha256'); @@ -1744,7 +1749,7 @@ Example: Using `Hmac` objects as streams: ```mjs const { createHmac -} = await import('crypto'); +} = await import('node:crypto'); const hmac = createHmac('sha256', 'a secret'); @@ -1766,7 +1771,7 @@ hmac.end(); ```cjs const { createHmac, -} = require('crypto'); +} = require('node:crypto'); const hmac = createHmac('sha256', 'a secret'); @@ -1788,11 +1793,11 @@ hmac.end(); Example: Using `Hmac` and piped streams: ```mjs -import { createReadStream } from 'fs'; -import { stdout } from 'process'; +import { createReadStream } from 'node:fs'; +import { stdout } from 'node:process'; const { createHmac -} = await import('crypto'); +} = await import('node:crypto'); const hmac = createHmac('sha256', 'a secret'); @@ -1803,11 +1808,11 @@ input.pipe(hmac).pipe(stdout); ```cjs const { createReadStream, -} = require('fs'); +} = require('node:fs'); const { createHmac, -} = require('crypto'); -const { stdout } = require('process'); +} = require('node:crypto'); +const { stdout } = require('node:process'); const hmac = createHmac('sha256', 'a secret'); @@ -1820,7 +1825,7 @@ Example: Using the [`hmac.update()`][] and [`hmac.digest()`][] methods: ```mjs const { createHmac -} = await import('crypto'); +} = await import('node:crypto'); const hmac = createHmac('sha256', 'a secret'); @@ -1833,7 +1838,7 @@ console.log(hmac.digest('hex')); ```cjs const { createHmac, -} = require('crypto'); +} = require('node:crypto'); const hmac = createHmac('sha256', 'a secret'); @@ -1922,7 +1927,7 @@ added: v15.0.0 Example: Converting a `CryptoKey` instance to a `KeyObject`: ```mjs -const { webcrypto, KeyObject } = await import('crypto'); +const { webcrypto, KeyObject } = await import('node:crypto'); const { subtle } = webcrypto; const key = await subtle.generateKey({ @@ -1942,7 +1947,7 @@ const { subtle, }, KeyObject, -} = require('crypto'); +} = require('node:crypto'); (async function() { const key = await subtle.generateKey({ @@ -2146,7 +2151,7 @@ const { generateKeyPairSync, createSign, createVerify -} = await import('crypto'); +} = await import('node:crypto'); const { privateKey, publicKey } = generateKeyPairSync('ec', { namedCurve: 'sect239k1' @@ -2169,7 +2174,7 @@ const { generateKeyPairSync, createSign, createVerify, -} = require('crypto'); +} = require('node:crypto'); const { privateKey, publicKey } = generateKeyPairSync('ec', { namedCurve: 'sect239k1' @@ -2194,7 +2199,7 @@ const { generateKeyPairSync, createSign, createVerify -} = await import('crypto'); +} = await import('node:crypto'); const { privateKey, publicKey } = generateKeyPairSync('rsa', { modulusLength: 2048, @@ -2217,7 +2222,7 @@ const { generateKeyPairSync, createSign, createVerify, -} = require('crypto'); +} = require('node:crypto'); const { privateKey, publicKey } = generateKeyPairSync('rsa', { modulusLength: 2048, @@ -2450,7 +2455,7 @@ Encapsulates an X509 certificate and provides read-only access to its information. ```mjs -const { X509Certificate } = await import('crypto'); +const { X509Certificate } = await import('node:crypto'); const x509 = new X509Certificate('{... pem encoded cert ...}'); @@ -2458,7 +2463,7 @@ console.log(x509.subject); ``` ```cjs -const { X509Certificate } = require('crypto'); +const { X509Certificate } = require('node:crypto'); const x509 = new X509Certificate('{... pem encoded cert ...}'); @@ -2616,6 +2621,10 @@ added: v15.6.0 The SHA-1 fingerprint of this certificate. +Because SHA-1 is cryptographically broken and because the security of SHA-1 is +significantly worse than that of algorithms that are commonly used to sign +certificates, consider using [`x509.fingerprint256`][] instead. + ### `x509.fingerprint256` -### DEP0089: `require('assert')` +### DEP0089: `require('node:assert')` + +Type: Documentation-only + +These methods were deprecated because they can be used in a way which does not +hold the channel reference alive long enough to receive the events. + +Use [`diagnostics_channel.subscribe(name, onMessage)`][] or +[`diagnostics_channel.unsubscribe(name, onMessage)`][] which does the same +thing instead. + +### DEP0164: `process.exit([code])` coercion to integer + + + +Type: Documentation-only + +`code` values other than `undefined`, `null`, integer numbers and integer +strings (e.g., '1') are deprecated as parameter in [`process.exit()`][]. + [Legacy URL API]: url.md#legacy-url-api [NIST SP 800-38D]: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf [RFC 6066]: https://tools.ietf.org/html/rfc6066#section-3 @@ -3141,6 +3174,8 @@ Convert them to primitive strings. [`crypto.scrypt()`]: crypto.md#cryptoscryptpassword-salt-keylen-options-callback [`decipher.final()`]: crypto.md#decipherfinaloutputencoding [`decipher.setAuthTag()`]: crypto.md#deciphersetauthtagbuffer-encoding +[`diagnostics_channel.subscribe(name, onMessage)`]: diagnostics_channel.md#diagnostics_channelsubscribename-onmessage +[`diagnostics_channel.unsubscribe(name, onMessage)`]: diagnostics_channel.md#diagnostics_channelunsubscribename-onmessage [`dns.lookup()`]: dns.md#dnslookuphostname-options-callback [`dnsPromises.lookup()`]: dns.md#dnspromiseslookuphostname-options [`domain`]: domain.md @@ -3177,6 +3212,7 @@ Convert them to primitive strings. [`os.networkInterfaces()`]: os.md#osnetworkinterfaces [`os.tmpdir()`]: os.md#ostmpdir [`process.env`]: process.md#processenv +[`process.exit()`]: process.md#processexitcode [`process.getActiveResourcesInfo()`]: process.md#processgetactiveresourcesinfo [`process.mainModule`]: process.md#processmainmodule [`punycode`]: punycode.md diff --git a/doc/api/dgram.md b/doc/api/dgram.md index 09c3a15f1bd40e..ea26785b570b7e 100644 --- a/doc/api/dgram.md +++ b/doc/api/dgram.md @@ -8,10 +8,10 @@ -The `dgram` module provides an implementation of UDP datagram sockets. +The `node:dgram` module provides an implementation of UDP datagram sockets. ```mjs -import dgram from 'dgram'; +import dgram from 'node:dgram'; const server = dgram.createSocket('udp4'); @@ -34,7 +34,7 @@ server.bind(41234); ``` ```cjs -const dgram = require('dgram'); +const dgram = require('node:dgram'); const server = dgram.createSocket('udp4'); server.on('error', (err) => { @@ -154,8 +154,8 @@ When sharing a UDP socket across multiple `cluster` workers, the `EADDRINUSE` error will occur: ```mjs -import cluster from 'cluster'; -import dgram from 'dgram'; +import cluster from 'node:cluster'; +import dgram from 'node:dgram'; if (cluster.isPrimary) { cluster.fork(); // Works ok. @@ -169,8 +169,8 @@ if (cluster.isPrimary) { ``` ```cjs -const cluster = require('cluster'); -const dgram = require('dgram'); +const cluster = require('node:cluster'); +const dgram = require('node:dgram'); if (cluster.isPrimary) { cluster.fork(); // Works ok. @@ -214,7 +214,7 @@ added: v0.1.99 * Returns: {Object} Returns an object containing the address information for a socket. -For UDP sockets, this object will contain `address`, `family` and `port` +For UDP sockets, this object will contain `address`, `family`, and `port` properties. This method throws `EBADF` if called on an unbound socket. @@ -256,7 +256,7 @@ attempting to bind with a closed socket), an [`Error`][] may be thrown. Example of a UDP server listening on port 41234: ```mjs -import dgram from 'dgram'; +import dgram from 'node:dgram'; const server = dgram.createSocket('udp4'); @@ -279,7 +279,7 @@ server.bind(41234); ``` ```cjs -const dgram = require('dgram'); +const dgram = require('node:dgram'); const server = dgram.createSocket('udp4'); server.on('error', (err) => { @@ -565,8 +565,8 @@ This method throws [`ERR_SOCKET_BAD_PORT`][] if called on an unbound socket. Example of sending a UDP packet to a port on `localhost`; ```mjs -import dgram from 'dgram'; -import { Buffer } from 'buffer'; +import dgram from 'node:dgram'; +import { Buffer } from 'node:buffer'; const message = Buffer.from('Some bytes'); const client = dgram.createSocket('udp4'); @@ -576,8 +576,8 @@ client.send(message, 41234, 'localhost', (err) => { ``` ```cjs -const dgram = require('dgram'); -const { Buffer } = require('buffer'); +const dgram = require('node:dgram'); +const { Buffer } = require('node:buffer'); const message = Buffer.from('Some bytes'); const client = dgram.createSocket('udp4'); @@ -590,8 +590,8 @@ Example of sending a UDP packet composed of multiple buffers to a port on `127.0.0.1`; ```mjs -import dgram from 'dgram'; -import { Buffer } from 'buffer'; +import dgram from 'node:dgram'; +import { Buffer } from 'node:buffer'; const buf1 = Buffer.from('Some '); const buf2 = Buffer.from('bytes'); @@ -602,8 +602,8 @@ client.send([buf1, buf2], 41234, (err) => { ``` ```cjs -const dgram = require('dgram'); -const { Buffer } = require('buffer'); +const dgram = require('node:dgram'); +const { Buffer } = require('node:buffer'); const buf1 = Buffer.from('Some '); const buf2 = Buffer.from('bytes'); @@ -622,8 +622,8 @@ Example of sending a UDP packet using a socket connected to a port on `localhost`: ```mjs -import dgram from 'dgram'; -import { Buffer } from 'buffer'; +import dgram from 'node:dgram'; +import { Buffer } from 'node:buffer'; const message = Buffer.from('Some bytes'); const client = dgram.createSocket('udp4'); @@ -635,8 +635,8 @@ client.connect(41234, 'localhost', (err) => { ``` ```cjs -const dgram = require('dgram'); -const { Buffer } = require('buffer'); +const dgram = require('node:dgram'); +const { Buffer } = require('node:buffer'); const message = Buffer.from('Some bytes'); const client = dgram.createSocket('udp4'); @@ -864,7 +864,7 @@ Calling `socket.unref()` multiple times will have no addition effect. The `socket.unref()` method returns a reference to the socket so calls can be chained. -## `dgram` module functions +## `node:dgram` module functions ### `dgram.createSocket(options[, callback])` diff --git a/doc/api/diagnostics_channel.md b/doc/api/diagnostics_channel.md index b6ba9ce5b9874b..af31d692a5cc70 100644 --- a/doc/api/diagnostics_channel.md +++ b/doc/api/diagnostics_channel.md @@ -6,17 +6,17 @@ -The `diagnostics_channel` module provides an API to create named channels +The `node:diagnostics_channel` module provides an API to create named channels to report arbitrary message data for diagnostics purposes. It can be accessed using: ```mjs -import diagnostics_channel from 'diagnostics_channel'; +import diagnostics_channel from 'node:diagnostics_channel'; ``` ```cjs -const diagnostics_channel = require('diagnostics_channel'); +const diagnostics_channel = require('node:diagnostics_channel'); ``` It is intended that a module writer wanting to report diagnostics messages @@ -38,15 +38,17 @@ other modules. Following is a simple overview of the public API. ```mjs -import diagnostics_channel from 'diagnostics_channel'; +import diagnostics_channel from 'node:diagnostics_channel'; // Get a reusable channel object const channel = diagnostics_channel.channel('my-channel'); -// Subscribe to the channel -channel.subscribe((message, name) => { +function onMessage(message, name) { // Received data -}); +} + +// Subscribe to the channel +diagnostics_channel.subscribe('my-channel', onMessage); // Check if the channel has an active subscriber if (channel.hasSubscribers) { @@ -55,18 +57,23 @@ if (channel.hasSubscribers) { some: 'data' }); } + +// Unsubscribe from the channel +diagnostics_channel.unsubscribe('my-channel', onMessage); ``` ```cjs -const diagnostics_channel = require('diagnostics_channel'); +const diagnostics_channel = require('node:diagnostics_channel'); // Get a reusable channel object const channel = diagnostics_channel.channel('my-channel'); -// Subscribe to the channel -channel.subscribe((message, name) => { +function onMessage(message, name) { // Received data -}); +} + +// Subscribe to the channel +diagnostics_channel.subscribe('my-channel', onMessage); // Check if the channel has an active subscriber if (channel.hasSubscribers) { @@ -75,6 +82,9 @@ if (channel.hasSubscribers) { some: 'data' }); } + +// Unsubscribe from the channel +diagnostics_channel.unsubscribe('my-channel', onMessage); ``` #### `diagnostics_channel.hasSubscribers(name)` @@ -95,7 +105,7 @@ This API is optional but helpful when trying to publish messages from very performance-sensitive code. ```mjs -import diagnostics_channel from 'diagnostics_channel'; +import diagnostics_channel from 'node:diagnostics_channel'; if (diagnostics_channel.hasSubscribers('my-channel')) { // There are subscribers, prepare and publish message @@ -103,7 +113,7 @@ if (diagnostics_channel.hasSubscribers('my-channel')) { ``` ```cjs -const diagnostics_channel = require('diagnostics_channel'); +const diagnostics_channel = require('node:diagnostics_channel'); if (diagnostics_channel.hasSubscribers('my-channel')) { // There are subscribers, prepare and publish message @@ -121,22 +131,92 @@ added: * `name` {string|symbol} The channel name * Returns: {Channel} The named channel object -This is the primary entry-point for anyone wanting to interact with a named +This is the primary entry-point for anyone wanting to publish to a named channel. It produces a channel object which is optimized to reduce overhead at publish time as much as possible. ```mjs -import diagnostics_channel from 'diagnostics_channel'; +import diagnostics_channel from 'node:diagnostics_channel'; const channel = diagnostics_channel.channel('my-channel'); ``` ```cjs -const diagnostics_channel = require('diagnostics_channel'); +const diagnostics_channel = require('node:diagnostics_channel'); const channel = diagnostics_channel.channel('my-channel'); ``` +#### `diagnostics_channel.subscribe(name, onMessage)` + + + +* `name` {string|symbol} The channel name +* `onMessage` {Function} The handler to receive channel messages + * `message` {any} The message data + * `name` {string|symbol} The name of the channel + +Register a message handler to subscribe to this channel. This message handler +will be run synchronously whenever a message is published to the channel. Any +errors thrown in the message handler will trigger an [`'uncaughtException'`][]. + +```mjs +import diagnostics_channel from 'diagnostics_channel'; + +diagnostics_channel.subscribe('my-channel', (message, name) => { + // Received data +}); +``` + +```cjs +const diagnostics_channel = require('diagnostics_channel'); + +diagnostics_channel.subscribe('my-channel', (message, name) => { + // Received data +}); +``` + +#### `diagnostics_channel.unsubscribe(name, onMessage)` + + + +* `name` {string|symbol} The channel name +* `onMessage` {Function} The previous subscribed handler to remove +* Returns: {boolean} `true` if the handler was found, `false` otherwise. + +Remove a message handler previously registered to this channel with +[`diagnostics_channel.subscribe(name, onMessage)`][]. + +```mjs +import diagnostics_channel from 'diagnostics_channel'; + +function onMessage(message, name) { + // Received data +} + +diagnostics_channel.subscribe('my-channel', onMessage); + +diagnostics_channel.unsubscribe('my-channel', onMessage); +``` + +```cjs +const diagnostics_channel = require('diagnostics_channel'); + +function onMessage(message, name) { + // Received data +} + +diagnostics_channel.subscribe('my-channel', onMessage); + +diagnostics_channel.unsubscribe('my-channel', onMessage); +``` + ### Class: `Channel` +> Stability: 0 - Deprecated: Use [`diagnostics_channel.subscribe(name, onMessage)`][] + * `onMessage` {Function} The handler to receive channel messages * `message` {any} The message data * `name` {string|symbol} The name of the channel @@ -239,7 +322,7 @@ will be run synchronously whenever a message is published to the channel. Any errors thrown in the message handler will trigger an [`'uncaughtException'`][]. ```mjs -import diagnostics_channel from 'diagnostics_channel'; +import diagnostics_channel from 'node:diagnostics_channel'; const channel = diagnostics_channel.channel('my-channel'); @@ -249,7 +332,7 @@ channel.subscribe((message, name) => { ``` ```cjs -const diagnostics_channel = require('diagnostics_channel'); +const diagnostics_channel = require('node:diagnostics_channel'); const channel = diagnostics_channel.channel('my-channel'); @@ -264,12 +347,15 @@ channel.subscribe((message, name) => { added: - v15.1.0 - v14.17.0 +deprecated: v16.17.0 changes: - version: v16.14.0 pr-url: https://github.com/nodejs/node/pull/40433 description: Added return value. Added to channels without subscribers. --> +> Stability: 0 - Deprecated: Use [`diagnostics_channel.unsubscribe(name, onMessage)`][] + * `onMessage` {Function} The previous subscribed handler to remove * Returns: {boolean} `true` if the handler was found, `false` otherwise. @@ -277,7 +363,7 @@ Remove a message handler previously registered to this channel with [`channel.subscribe(onMessage)`][]. ```mjs -import diagnostics_channel from 'diagnostics_channel'; +import diagnostics_channel from 'node:diagnostics_channel'; const channel = diagnostics_channel.channel('my-channel'); @@ -291,7 +377,7 @@ channel.unsubscribe(onMessage); ``` ```cjs -const diagnostics_channel = require('diagnostics_channel'); +const diagnostics_channel = require('node:diagnostics_channel'); const channel = diagnostics_channel.channel('my-channel'); @@ -304,6 +390,43 @@ channel.subscribe(onMessage); channel.unsubscribe(onMessage); ``` +### Built-in Channels + +#### HTTP + +`http.client.request.start` + +* `request` {http.ClientRequest} + +Emitted when client starts a request. + +`http.client.response.finish` + +* `request` {http.ClientRequest} +* `response` {http.IncomingMessage} + +Emitted when client receives a response. + +`http.server.request.start` + +* `request` {http.IncomingMessage} +* `response` {http.ServerResponse} +* `socket` {net.Socket} +* `server` {http.Server} + +Emitted when server receives a request. + +`http.server.response.finish` + +* `request` {http.IncomingMessage} +* `response` {http.ServerResponse} +* `socket` {net.Socket} +* `server` {http.Server} + +Emitted when server sends a response. + [`'uncaughtException'`]: process.md#event-uncaughtexception [`channel.subscribe(onMessage)`]: #channelsubscribeonmessage [`diagnostics_channel.channel(name)`]: #diagnostics_channelchannelname +[`diagnostics_channel.subscribe(name, onMessage)`]: #diagnostics_channelsubscribename-onmessage +[`diagnostics_channel.unsubscribe(name, onMessage)`]: #diagnostics_channelunsubscribename-onmessage diff --git a/doc/api/dns.md b/doc/api/dns.md index 705c654d9e2656..5cc9a7b2d07cbc 100644 --- a/doc/api/dns.md +++ b/doc/api/dns.md @@ -6,7 +6,7 @@ -The `dns` module enables name resolution. For example, use it to look up IP +The `node:dns` module enables name resolution. For example, use it to look up IP addresses of host names. Although named for the [Domain Name System (DNS)][], it does not always use the @@ -16,7 +16,7 @@ communication. To perform name resolution the way other applications on the same system do, use [`dns.lookup()`][]. ```js -const dns = require('dns'); +const dns = require('node:dns'); dns.lookup('example.org', (err, address, family) => { console.log('address: %j family: IPv%s', address, family); @@ -24,14 +24,14 @@ dns.lookup('example.org', (err, address, family) => { // address: "93.184.216.34" family: IPv4 ``` -All other functions in the `dns` module connect to an actual DNS server to +All other functions in the `node:dns` module connect to an actual DNS server to perform name resolution. They will always use the network to perform DNS queries. These functions do not use the same set of configuration files used by [`dns.lookup()`][] (e.g. `/etc/hosts`). Use these functions to always perform DNS queries, bypassing other name-resolution facilities. ```js -const dns = require('dns'); +const dns = require('node:dns'); dns.resolve4('archive.org', (err, addresses) => { if (err) throw err; @@ -65,7 +65,7 @@ the servers used for a resolver using other resolvers: ```js -const { Resolver } = require('dns'); +const { Resolver } = require('node:dns'); const resolver = new Resolver(); resolver.setServers(['4.4.4.4']); @@ -75,7 +75,7 @@ resolver.resolve4('example.org', (err, addresses) => { }); ``` -The following methods from the `dns` module are available: +The following methods from the `node:dns` module are available: * [`resolver.getServers()`][`dns.getServers()`] * [`resolver.resolve()`][`dns.resolve()`] @@ -140,7 +140,7 @@ The resolver instance will send its requests from the specified IP address. This allows programs to specify outbound interfaces when used on multi-homed systems. -If a v4 or v6 address is not specified, it is set to the default, and the +If a v4 or v6 address is not specified, it is set to the default and the operating system will choose a local address automatically. The resolver will use the v4 local address when making requests to IPv4 DNS @@ -222,7 +222,7 @@ such as no available file descriptors. `dns.lookup()` does not necessarily have anything to do with the DNS protocol. The implementation uses an operating system facility that can associate names -with addresses, and vice versa. This implementation can have subtle but +with addresses and vice versa. This implementation can have subtle but important consequences on the behavior of any Node.js program. Please take some time to consult the [Implementation considerations section][] before using `dns.lookup()`. @@ -230,7 +230,7 @@ time to consult the [Implementation considerations section][] before using Example usage: ```js -const dns = require('dns'); +const dns = require('node:dns'); const options = { family: 6, hints: dns.ADDRCONFIG | dns.V4MAPPED, @@ -268,7 +268,7 @@ The following flags can be passed as hints to [`dns.lookup()`][]. returned if the current system has at least one IPv4 address configured. * `dns.V4MAPPED`: If the IPv6 family was specified, but no IPv6 addresses were found, then return IPv4 mapped IPv6 addresses. It is not supported - on some operating systems (e.g FreeBSD 10.1). + on some operating systems (e.g. FreeBSD 10.1). * `dns.ALL`: If `dns.V4MAPPED` is specified, return resolved IPv6 addresses as well as IPv4 mapped IPv6 addresses. @@ -295,7 +295,7 @@ will be thrown. On an error, `err` is an [`Error`][] object, where `err.code` is the error code. ```js -const dns = require('dns'); +const dns = require('node:dns'); dns.lookupService('127.0.0.1', 22, (err, hostname, service) => { console.log(hostname, service); // Prints: localhost ssh @@ -353,7 +353,7 @@ changes: * `hostname` {string} Host name to resolve. * `options` {Object} - * `ttl` {boolean} Retrieve the Time-To-Live value (TTL) of each record. + * `ttl` {boolean} Retrieves the Time-To-Live value (TTL) of each record. When `true`, the callback receives an array of `{ address: '1.2.3.4', ttl: 60 }` objects rather than an array of strings, with the TTL expressed in seconds. @@ -387,7 +387,7 @@ changes: * `err` {Error} * `addresses` {string\[] | Object\[]} -Uses the DNS protocol to resolve a IPv6 addresses (`AAAA` records) for the +Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the `hostname`. The `addresses` argument passed to the `callback` function will contain an array of IPv6 addresses. @@ -501,7 +501,7 @@ added: v0.9.12 * `err` {Error} * `addresses` {Object\[]} -Uses the DNS protocol to resolve regular expression based records (`NAPTR` +Uses the DNS protocol to resolve regular expression-based records (`NAPTR` records) for the `hostname`. The `addresses` argument passed to the `callback` function will contain an array of objects with the following properties: @@ -736,7 +736,7 @@ changes: The `dns.promises` API provides an alternative set of asynchronous DNS methods that return `Promise` objects rather than using callbacks. The API is accessible -via `require('dns').promises` or `require('dns/promises')`. +via `require('node:dns').promises` or `require('node:dns/promises')`. ### Class: `dnsPromises.Resolver` @@ -752,7 +752,7 @@ the servers used for a resolver using other resolvers: ```js -const { Resolver } = require('dns').promises; +const { Resolver } = require('node:dns').promises; const resolver = new Resolver(); resolver.setServers(['4.4.4.4']); @@ -793,7 +793,7 @@ added: v15.3.0 --> Cancel all outstanding DNS queries made by this resolver. The corresponding -promises will be rejected with an error with code `ECANCELLED`. +promises will be rejected with an error with the code `ECANCELLED`. ### `dnsPromises.getServers()` @@ -857,7 +857,7 @@ such as no available file descriptors. [`dnsPromises.lookup()`][] does not necessarily have anything to do with the DNS protocol. The implementation uses an operating system facility that can -associate names with addresses, and vice versa. This implementation can have +associate names with addresses and vice versa. This implementation can have subtle but important consequences on the behavior of any Node.js program. Please take some time to consult the [Implementation considerations section][] before using `dnsPromises.lookup()`. @@ -865,7 +865,7 @@ using `dnsPromises.lookup()`. Example usage: ```js -const dns = require('dns'); +const dns = require('node:dns'); const dnsPromises = dns.promises; const options = { family: 6, @@ -905,7 +905,7 @@ On error, the `Promise` is rejected with an [`Error`][] object, where `err.code` is the error code. ```js -const dnsPromises = require('dns').promises; +const dnsPromises = require('node:dns').promises; dnsPromises.lookupService('127.0.0.1', 22).then((result) => { console.log(result.hostname, result.service); // Prints: localhost ssh @@ -1072,7 +1072,7 @@ added: v10.6.0 * `hostname` {string} -Uses the DNS protocol to resolve regular expression based records (`NAPTR` +Uses the DNS protocol to resolve regular expression-based records (`NAPTR` records) for the `hostname`. On success, the `Promise` is resolved with an array of objects with the following properties: @@ -1268,11 +1268,11 @@ earlier ones time out or result in some other error. Each DNS query can return one of the following error codes: -* `dns.NODATA`: DNS server returned answer with no data. +* `dns.NODATA`: DNS server returned an answer with no data. * `dns.FORMERR`: DNS server claims query was misformatted. * `dns.SERVFAIL`: DNS server returned general failure. * `dns.NOTFOUND`: Domain name not found. -* `dns.NOTIMP`: DNS server does not implement requested operation. +* `dns.NOTIMP`: DNS server does not implement the requested operation. * `dns.REFUSED`: DNS server refused query. * `dns.BADQUERY`: Misformatted DNS query. * `dns.BADNAME`: Misformatted host name. @@ -1293,6 +1293,8 @@ Each DNS query can return one of the following error codes: * `dns.ADDRGETNETWORKPARAMS`: Could not find `GetNetworkParams` function. * `dns.CANCELLED`: DNS query cancelled. +The `dnsPromises` API also exports the above error codes, e.g., `dnsPromises.NODATA`. + ## Implementation considerations Although [`dns.lookup()`][] and the various `dns.resolve*()/dns.reverse()` @@ -1323,11 +1325,11 @@ using `dns.resolve()` and using the address instead of a host name. Also, some networking APIs (such as [`socket.connect()`][] and [`dgram.createSocket()`][]) allow the default resolver, `dns.lookup()`, to be replaced. -### `dns.resolve()`, `dns.resolve*()` and `dns.reverse()` +### `dns.resolve()`, `dns.resolve*()`, and `dns.reverse()` These functions are implemented quite differently than [`dns.lookup()`][]. They do not use getaddrinfo(3) and they _always_ perform a DNS query on the -network. This network communication is always done asynchronously, and does not +network. This network communication is always done asynchronously and does not use libuv's threadpool. As a result, these functions cannot have the same negative impact on other diff --git a/doc/api/documentation.md b/doc/api/documentation.md index 71e0b49206e23c..008bdb82f48735 100644 --- a/doc/api/documentation.md +++ b/doc/api/documentation.md @@ -29,7 +29,7 @@ The stability indices are as follows: > Stability: 1 - Experimental. The feature is not subject to -> [Semantic Versioning][] rules. Non-backward compatible changes or removal may +> [semantic versioning][] rules. Non-backward compatible changes or removal may > occur in any future release. Use of the feature is not recommended in > production environments. @@ -40,8 +40,8 @@ The stability indices are as follows: -> Stability 3 - Legacy. Although this feature is unlikely to be removed and is -> still covered by semantic-versioning guarantees, it is no longer actively +> Stability: 3 - Legacy. Although this feature is unlikely to be removed and is +> still covered by semantic versioning guarantees, it is no longer actively > maintained, and other alternatives are available. Features are marked as legacy rather than being deprecated if their use does no @@ -77,8 +77,8 @@ to the corresponding man pages which describe how the system call works. Most Unix system calls have Windows analogues. Still, behavior differences may be unavoidable. -[Semantic Versioning]: https://semver.org/ [V8 JavaScript engine]: https://v8.dev/ +[semantic versioning]: https://semver.org/ [the contributing guide]: https://github.com/nodejs/node/blob/HEAD/CONTRIBUTING.md [the issue tracker]: https://github.com/nodejs/node/issues/new [warning]: process.md#event-warning diff --git a/doc/api/domain.md b/doc/api/domain.md index 9552b3bbcd478c..d88eeef7419d8f 100644 --- a/doc/api/domain.md +++ b/doc/api/domain.md @@ -66,7 +66,7 @@ For example, this is not a good idea: ```js // XXX WARNING! BAD IDEA! -const d = require('domain').create(); +const d = require('node:domain').create(); d.on('error', (er) => { // The error won't crash the process, but what it does is worse! // Though we've prevented abrupt process restarting, we are leaking @@ -75,7 +75,7 @@ d.on('error', (er) => { console.log(`error, but oh well ${er.message}`); }); d.run(() => { - require('http').createServer((req, res) => { + require('node:http').createServer((req, res) => { handleRequest(req, res); }).listen(PORT); }); @@ -88,7 +88,7 @@ appropriately, and handle errors with much greater safety. ```js // Much better! -const cluster = require('cluster'); +const cluster = require('node:cluster'); const PORT = +process.env.PORT || 1337; if (cluster.isPrimary) { @@ -117,12 +117,12 @@ if (cluster.isPrimary) { // // This is where we put our bugs! - const domain = require('domain'); + const domain = require('node:domain'); // See the cluster documentation for more details about using // worker processes to serve requests. How it works, caveats, etc. - const server = require('http').createServer((req, res) => { + const server = require('node:http').createServer((req, res) => { const d = domain.create(); d.on('error', (er) => { console.error(`error ${er.stack}`); @@ -246,8 +246,8 @@ That is possible via explicit binding. ```js // Create a top-level domain for the server -const domain = require('domain'); -const http = require('http'); +const domain = require('node:domain'); +const http = require('node:http'); const serverDomain = domain.create(); serverDomain.run(() => { @@ -416,8 +416,8 @@ the function. This is the most basic way to use a domain. ```js -const domain = require('domain'); -const fs = require('fs'); +const domain = require('node:domain'); +const fs = require('node:fs'); const d = domain.create(); d.on('error', (er) => { console.error('Caught error!', er); diff --git a/doc/api/embedding.md b/doc/api/embedding.md index ec6af9180de236..1aabd0179e1e15 100644 --- a/doc/api/embedding.md +++ b/doc/api/embedding.md @@ -124,6 +124,7 @@ int RunNodeInstance(MultiIsolatePlatform* platform, { Locker locker(isolate); Isolate::Scope isolate_scope(isolate); + HandleScope handle_scope(isolate); // The v8::Context needs to be entered when node::CreateEnvironment() and // node::LoadEnvironment() are being called. Context::Scope context_scope(setup->context()); @@ -140,9 +141,9 @@ int RunNodeInstance(MultiIsolatePlatform* platform, MaybeLocal loadenv_ret = node::LoadEnvironment( env, "const publicRequire =" - " require('module').createRequire(process.cwd() + '/');" + " require('node:module').createRequire(process.cwd() + '/');" "globalThis.require = publicRequire;" - "require('vm').runInThisContext(process.argv[1]);"); + "require('node:vm').runInThisContext(process.argv[1]);"); if (loadenv_ret.IsEmpty()) // There has been a JS exception. return 1; diff --git a/doc/api/errors.md b/doc/api/errors.md index d4f7c9656956a4..edcb876e427b9b 100644 --- a/doc/api/errors.md +++ b/doc/api/errors.md @@ -15,7 +15,7 @@ errors: * User-specified errors triggered by application code. * `AssertionError`s are a special class of error that can be triggered when Node.js detects an exceptional logic violation that should never occur. These - are raised typically by the `assert` module. + are raised typically by the `node:assert` module. All JavaScript and system errors raised by Node.js inherit from, or are instances of, the standard JavaScript {Error} class and are guaranteed @@ -63,7 +63,7 @@ Errors that occur within _Asynchronous APIs_ may be reported in multiple ways: ```js - const fs = require('fs'); + const fs = require('node:fs'); fs.readFile('a file that does not exist', (err, data) => { if (err) { console.error('There was an error reading the file!', err); @@ -77,7 +77,7 @@ Errors that occur within _Asynchronous APIs_ may be reported in multiple ways: [`EventEmitter`][], errors can be routed to that object's `'error'` event. ```js - const net = require('net'); + const net = require('node:net'); const connection = net.connect('localhost'); // Adding an 'error' event handler to a stream: @@ -109,7 +109,7 @@ used appropriately or a handler has been registered for the [`'uncaughtException'`][] event. ```js -const EventEmitter = require('events'); +const EventEmitter = require('node:events'); const ee = new EventEmitter(); setImmediate(() => { @@ -137,7 +137,7 @@ completes or an error is raised, the callback function is called with the the first argument will be passed as `null`. ```js -const fs = require('fs'); +const fs = require('node:fs'); function errorFirstCallback(err, data) { if (err) { @@ -157,7 +157,7 @@ use `throw` inside an error-first callback: ```js // THIS WILL NOT WORK: -const fs = require('fs'); +const fs = require('node:fs'); try { fs.readFile('/some/file/that/does-not-exist', (err, data) => { @@ -191,13 +191,16 @@ provide a text description of the error. All errors generated by Node.js, including all system and JavaScript errors, will either be instances of, or inherit from, the `Error` class. -### `new Error(message)` +### `new Error(message[, options])` * `message` {string} +* `options` {Object} + * `cause` {any} The error that caused the newly created error. Creates a new `Error` object and sets the `error.message` property to the provided text message. If an object is passed as `message`, the text message -is generated by calling `message.toString()`. The `error.stack` property will +is generated by calling `String(message)`. If the `cause` option is provided, +it is assigned to the `error.cause` property. The `error.stack` property will represent the point in the code at which `new Error()` was called. Stack traces are dependent on [V8's stack trace API][]. Stack traces extend only to either (a) the beginning of _synchronous code execution_, or (b) the number of frames @@ -253,6 +256,49 @@ will affect any stack trace captured _after_ the value has been changed. If set to a non-number value, or set to a negative number, stack traces will not capture any frames. +### `error.cause` + + + +* {any} + +If present, the `error.cause` property is the underlying cause of the `Error`. +It is used when catching an error and throwing a new one with a different +message or code in order to still have access to the original error. + +The `error.cause` property is typically set by calling +`new Error(message, { cause })`. It is not set by the constructor if the +`cause` option is not provided. + +This property allows errors to be chained. When serializing `Error` objects, +[`util.inspect()`][] recursively serializes `error.cause` if it is set. + +```js +const cause = new Error('The remote HTTP server responded with a 500 status'); +const symptom = new Error('The message failed to send', { cause }); + +console.log(symptom); +// Prints: +// Error: The message failed to send +// at REPL2:1:17 +// at Script.runInThisContext (node:vm:130:12) +// ... 7 lines matching cause stack trace ... +// at [_line] [as _line] (node:internal/readline/interface:886:18) { +// [cause]: Error: The remote HTTP server responded with a 500 status +// at REPL1:1:15 +// at Script.runInThisContext (node:vm:130:12) +// at REPLServer.defaultEval (node:repl:574:29) +// at bound (node:domain:426:15) +// at REPLServer.runBound [as eval] (node:domain:437:12) +// at REPLServer.onLine (node:repl:902:10) +// at REPLServer.emit (node:events:549:35) +// at REPLServer.emit (node:domain:482:12) +// at [_onLine] [as _onLine] (node:internal/readline/interface:425:12) +// at [_line] [as _line] (node:internal/readline/interface:886:18) +``` + ### `error.code` * {string} @@ -372,7 +418,7 @@ acceptable values for a function; whether that is a numeric range, or outside the set of options for a given function parameter. ```js -require('net').connect(-1); +require('node:net').connect(-1); // Throws "RangeError: "port" option should be >= 0 and < 65536: -1" ``` @@ -409,7 +455,7 @@ are almost always indicative of a broken program. ```js try { - require('vm').runInThisContext('binary ! isNotOk'); + require('node:vm').runInThisContext('binary ! isNotOk'); } catch (err) { // 'err' will be a SyntaxError. } @@ -570,7 +616,7 @@ Indicates that a provided argument is not an allowable type. For example, passing a function to a parameter which expects a string would be a `TypeError`. ```js -require('url').parse(() => { }); +require('node:url').parse(() => { }); // Throws TypeError, since it expected a string. ``` @@ -638,11 +684,11 @@ order to be compatible with the web platform's `AbortError`. ### `ERR_AMBIGUOUS_ARGUMENT` A function argument is being used in a way that suggests that the function -signature may be misunderstood. This is thrown by the `assert` module when the -`message` parameter in `assert.throws(block, message)` matches the error message -thrown by `block` because that usage suggests that the user believes `message` -is the expected message rather than the message the `AssertionError` will -display if `block` does not throw. +signature may be misunderstood. This is thrown by the `node:assert` module when +the `message` parameter in `assert.throws(block, message)` matches the error +message thrown by `block` because that usage suggests that the user believes +`message` is the expected message rather than the message the `AssertionError` +will display if `block` does not throw. @@ -657,7 +703,7 @@ required, but not provided to a Node.js API. A special type of error that can be triggered whenever Node.js detects an exceptional logic violation that should never occur. These are raised typically -by the `assert` module. +by the `node:assert` module. @@ -814,14 +860,14 @@ key lies outside of the elliptic curve. ### `ERR_CRYPTO_ENGINE_UNKNOWN` An invalid crypto engine identifier was passed to -[`require('crypto').setEngine()`][]. +[`require('node:crypto').setEngine()`][]. ### `ERR_CRYPTO_FIPS_FORCED` The [`--force-fips`][] command-line argument was used but there was an attempt -to enable or disable FIPS mode in the `crypto` module. +to enable or disable FIPS mode in the `node:crypto` module. @@ -1152,8 +1198,8 @@ ongoing asynchronous operations. ### `ERR_DOMAIN_CALLBACK_NOT_AVAILABLE` -The `domain` module was not usable since it could not establish the required -error handling hooks, because +The `node:domain` module was not usable since it could not establish the +required error handling hooks, because [`process.setUncaughtExceptionCaptureCallback()`][] had been called at an earlier point in time. @@ -1162,10 +1208,17 @@ earlier point in time. ### `ERR_DOMAIN_CANNOT_SET_UNCAUGHT_EXCEPTION_CAPTURE` [`process.setUncaughtExceptionCaptureCallback()`][] could not be called -because the `domain` module has been loaded at an earlier point in time. +because the `node:domain` module has been loaded at an earlier point in time. The stack trace is extended to include the point in time at which the -`domain` module had been loaded. +`node:domain` module had been loaded. + + + +### `ERR_DUPLICATE_STARTUP_SNAPSHOT_MAIN_FUNCTION` + +[`v8.startupSnapshot.setDeserializeMainFunction()`][] could not be called +because it had already been called before. @@ -1726,13 +1779,13 @@ time. > Stability: 1 - Experimental The `--input-type` flag was used to attempt to execute a file. This flag can -only be used with input via `--eval`, `--print` or `STDIN`. +only be used with input via `--eval`, `--print`, or `STDIN`. ### `ERR_INSPECTOR_ALREADY_ACTIVATED` -While using the `inspector` module, an attempt was made to activate the +While using the `node:inspector` module, an attempt was made to activate the inspector when it already started to listen on a port. Use `inspector.close()` before activating it on a different address. @@ -1740,21 +1793,21 @@ before activating it on a different address. ### `ERR_INSPECTOR_ALREADY_CONNECTED` -While using the `inspector` module, an attempt was made to connect when the +While using the `node:inspector` module, an attempt was made to connect when the inspector was already connected. ### `ERR_INSPECTOR_CLOSED` -While using the `inspector` module, an attempt was made to use the inspector -after the session had already closed. +While using the `node:inspector` module, an attempt was made to use the +inspector after the session had already closed. ### `ERR_INSPECTOR_COMMAND` -An error occurred while issuing a command via the `inspector` module. +An error occurred while issuing a command via the `node:inspector` module. @@ -1766,14 +1819,14 @@ The `inspector` is not active when `inspector.waitForDebugger()` is called. ### `ERR_INSPECTOR_NOT_AVAILABLE` -The `inspector` module is not available for use. +The `node:inspector` module is not available for use. ### `ERR_INSPECTOR_NOT_CONNECTED` -While using the `inspector` module, an attempt was made to use the inspector -before it was connected. +While using the `node:inspector` module, an attempt was made to use the +inspector before it was connected. @@ -1984,7 +2037,7 @@ performing another operation. ### `ERR_INVALID_SYNC_FORK_INPUT` -A `Buffer`, `TypedArray`, `DataView` or `string` was provided as stdio input to +A `Buffer`, `TypedArray`, `DataView`, or `string` was provided as stdio input to an asynchronous fork. See the documentation for the [`child_process`][] module for more information. @@ -2071,6 +2124,17 @@ An attempt was made to open an IPC communication channel with a synchronously forked Node.js process. See the documentation for the [`child_process`][] module for more information. + + +### `ERR_LOADER_CHAIN_INCOMPLETE` + + + +An ESM loader hook returned without calling `next()` and without explicitly +signaling a short circuit. + ### `ERR_MANIFEST_ASSERT_INTEGRITY` @@ -2282,6 +2346,13 @@ has occurred when attempting to start the loop. Once no more items are left in the queue, the idle loop must be suspended. This error indicates that the idle loop has failed to stop. + + +### `ERR_NOT_BUILDING_SNAPSHOT` + +An attempt was made to use operations that can only be used when building +V8 startup snapshot even though Node.js isn't building one. + ### `ERR_NO_CRYPTO` @@ -2323,6 +2394,40 @@ The `package.json` [`"exports"`][] field does not export the requested subpath. Because exports are encapsulated, private internal modules that are not exported cannot be imported through the package resolution, unless using an absolute URL. + + +### `ERR_PARSE_ARGS_INVALID_OPTION_VALUE` + + + +When `strict` set to `true`, thrown by [`util.parseArgs()`][] if a {boolean} +value is provided for an option of type {string}, or if a {string} +value is provided for an option of type {boolean}. + + + +### `ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL` + + + +Thrown by [`util.parseArgs()`][], when a positional argument is provided and +`allowPositionals` is set to `false`. + + + +### `ERR_PARSE_ARGS_UNKNOWN_OPTION` + + + +When `strict` set to `true`, thrown by [`util.parseArgs()`][] if an argument +is not configured in `options`. + ### `ERR_PERFORMANCE_INVALID_TIMESTAMP` @@ -2502,7 +2607,7 @@ Prevents an abort if a string decoder was set on the Socket or if the decoder is in `objectMode`. ```js -const Socket = require('net').Socket; +const Socket = require('node:net').Socket; const instance = new Socket(); instance.setEncoding('utf8'); @@ -2537,6 +2642,14 @@ An unspecified or non-specific system error has occurred within the Node.js process. The error object will have an `err.info` object property with additional details. + + +### `ERR_TEST_FAILURE` + +This error represents a failed test. Additional information about the failure +is available via the `cause` property. The `failureType` property specifies +what the test was doing when the failure occurred. + ### `ERR_TLS_CERT_ALTNAME_FORMAT` @@ -2602,7 +2715,7 @@ added: - v12.17.0 --> -The TLS socket must be connected and securily established. Ensure the 'secure' +The TLS socket must be connected and securely established. Ensure the 'secure' event is emitted before continuing. @@ -2656,8 +2769,8 @@ category. ### `ERR_TRACE_EVENTS_UNAVAILABLE` -The `trace_events` module could not be loaded because Node.js was compiled with -the `--without-v8-platform` flag. +The `node:trace_events` module could not be loaded because Node.js was compiled +with the `--without-v8-platform` flag. @@ -2816,12 +2929,6 @@ Cached data cannot be created for modules which have already been evaluated. The module being returned from the linker function is from a different context than the parent module. Linked modules must share the same context. - - -### `ERR_VM_MODULE_LINKING_ERRORED` - -The linker function returned a module for which linking has failed. - ### `ERR_VM_MODULE_LINK_FAILURE` @@ -2914,11 +3021,11 @@ changes: - v10.15.0 commit: 186035243fad247e3955f pr-url: https://github.com/nodejs-private/node-private/pull/143 - description: Max header size in `http_parser` was set to 8 KB. + description: Max header size in `http_parser` was set to 8 KiB. --> Too much HTTP header data was received. In order to protect against malicious or -malconfigured clients, if more than 8 KB of HTTP header data is received then +malconfigured clients, if more than 8 KiB of HTTP header data is received then HTTP parsing will abort without a request or response object being created, and an `Error` with this code will be emitted. @@ -3161,7 +3268,7 @@ added: v9.0.0 removed: v10.0.0 --> -The `repl` module was unable to parse data from the REPL history file. +The `node:repl` module was unable to parse data from the REPL history file. @@ -3296,6 +3403,17 @@ Used when a given value is out of the accepted range. The module must be successfully linked before instantiation. + + +### `ERR_VM_MODULE_LINKING_ERRORED` + + + +The linker function returned a module for which linking has failed. + ### `ERR_WORKER_UNSUPPORTED_EXTENSION` @@ -3337,7 +3455,7 @@ The native call from `process.cpuUsage` could not be processed. [Node.js error codes]: #nodejs-error-codes [RFC 7230 Section 3]: https://tools.ietf.org/html/rfc7230#section-3 [Subresource Integrity specification]: https://www.w3.org/TR/SRI/#the-integrity-attribute -[V8's stack trace API]: https://github.com/v8/v8/wiki/Stack-Trace-API +[V8's stack trace API]: https://v8.dev/docs/stack-trace-api [WHATWG Supported Encodings]: util.md#whatwg-supported-encodings [WHATWG URL API]: url.md#the-whatwg-url-api [`"exports"`]: packages.md#exports @@ -3389,7 +3507,7 @@ The native call from `process.cpuUsage` could not be processed. [`process.send()`]: process.md#processsendmessage-sendhandle-options-callback [`process.setUncaughtExceptionCaptureCallback()`]: process.md#processsetuncaughtexceptioncapturecallbackfn [`readable._read()`]: stream.md#readable_readsize -[`require('crypto').setEngine()`]: crypto.md#cryptosetengineengine-flags +[`require('node:crypto').setEngine()`]: crypto.md#cryptosetengineengine-flags [`require()`]: modules.md#requireid [`server.close()`]: net.md#serverclosecallback [`server.listen()`]: net.md#serverlisten @@ -3401,6 +3519,9 @@ The native call from `process.cpuUsage` could not be processed. [`subprocess.kill()`]: child_process.md#subprocesskillsignal [`subprocess.send()`]: child_process.md#subprocesssendmessage-sendhandle-options-callback [`util.getSystemErrorName(error.errno)`]: util.md#utilgetsystemerrornameerr +[`util.inspect()`]: util.md#utilinspectobject-options +[`util.parseArgs()`]: util.md#utilparseargsconfig +[`v8.startupSnapshot.setDeserializeMainFunction()`]: v8.md#v8startupsnapshotsetdeserializemainfunctioncallback-data [`zlib`]: zlib.md [crypto digest algorithm]: crypto.md#cryptogethashes [debugger]: debugger.md diff --git a/doc/api/esm.md b/doc/api/esm.md index a45ec7927264f1..7018f3667d5324 100644 --- a/doc/api/esm.md +++ b/doc/api/esm.md @@ -7,7 +7,12 @@ -> Stability: 1 - Experimental - The `await` keyword may be used in the top level body of an ECMAScript module. Assuming an `a.mjs` with @@ -583,8 +586,8 @@ If a top level `await` expression never resolves, the `node` process will exit with a `13` [status code][]. ```js -import { spawn } from 'child_process'; -import { execPath } from 'process'; +import { spawn } from 'node:child_process'; +import { execPath } from 'node:process'; spawn(execPath, [ '--input-type=module', @@ -637,7 +640,7 @@ references to the local dependencies: ```mjs // file.mjs -import worker_threads from 'worker_threads'; +import worker_threads from 'node:worker_threads'; import { configure, resize } from 'https://example.com/imagelib.mjs'; configure({ worker_threads }); ``` @@ -665,6 +668,19 @@ of Node.js applications. ## Loaders + + > Stability: 1 - Experimental > This API is currently being redesigned and will still change. @@ -677,13 +693,43 @@ provided via a `--experimental-loader ./loader-name.mjs` argument to Node.js. When hooks are used they apply to the entry point and all `import` calls. They won't apply to `require` calls; those still follow [CommonJS][] rules. +Loaders follow the pattern of `--require`: + +```console +node \ + --experimental-loader unpkg \ + --experimental-loader http-to-https \ + --experimental-loader cache-buster +``` + +These are called in the following sequence: `cache-buster` calls +`http-to-https` which calls `unpkg`. + ### Hooks -#### `resolve(specifier, context, defaultResolve)` +Hooks are part of a chain, even if that chain consists of only one custom +(user-provided) hook and the default hook, which is always present. Hook +functions nest: each one must always return a plain object, and chaining happens +as a result of each function calling `next()`, which is a reference +to the subsequent loader’s hook. + +A hook that returns a value lacking a required property triggers an exception. +A hook that returns without calling `next()` _and_ without returning +`shortCircuit: true` also triggers an exception. These errors are to help +prevent unintentional breaks in the chain. + +#### `resolve(specifier, context, nextResolve)` @@ -693,26 +739,35 @@ changes: * `specifier` {string} * `context` {Object} - * `conditions` {string\[]} + * `conditions` {string\[]} Export conditions of the relevant `package.json` * `importAssertions` {Object} - * `parentURL` {string|undefined} -* `defaultResolve` {Function} The Node.js default resolver. + * `parentURL` {string|undefined} The module importing this one, or undefined + if this is the Node.js entry point +* `nextResolve` {Function} The subsequent `resolve` hook in the chain, or the + Node.js default `resolve` hook after the last user-supplied `resolve` hook + * `specifier` {string} + * `context` {Object} * Returns: {Object} - * `format` {string|null|undefined} + * `format` {string|null|undefined} A hint to the load hook (it might be + ignored) `'builtin' | 'commonjs' | 'json' | 'module' | 'wasm'` - * `url` {string} The absolute url to the import target (such as `file://…`) - -The `resolve` hook returns the resolved file URL for a given module specifier -and parent URL, and optionally its format (such as `'module'`) as a hint to the -`load` hook. If a format is specified, the `load` hook is ultimately responsible -for providing the final `format` value (and it is free to ignore the hint -provided by `resolve`); if `resolve` provides a `format`, a custom `load` -hook is required even if only to pass the value to the Node.js default `load` -hook. + * `shortCircuit` {undefined|boolean} A signal that this hook intends to + terminate the chain of `resolve` hooks. **Default:** `false` + * `url` {string} The absolute URL to which this input resolves + +The `resolve` hook chain is responsible for resolving file URL for a given +module specifier and parent URL, and optionally its format (such as `'module'`) +as a hint to the `load` hook. If a format is specified, the `load` hook is +ultimately responsible for providing the final `format` value (and it is free to +ignore the hint provided by `resolve`); if `resolve` provides a `format`, a +custom `load` hook is required even if only to pass the value to the Node.js +default `load` hook. The module specifier is the string in an `import` statement or -`import()` expression, and the parent URL is the URL of the module that imported -this one, or `undefined` if this is the main entry point for the application. +`import()` expression. + +The parent URL is the URL of the module that imported this one, or `undefined` +if this is the main entry point for the application. The `conditions` property in `context` is an array of conditions for [package exports conditions][Conditional Exports] that apply to this resolution @@ -726,40 +781,45 @@ Node.js module specifier resolution behavior_ when calling `defaultResolve`, the `context.conditions` array originally passed into the `resolve` hook. ```js -/** - * @param {string} specifier - * @param {{ - * conditions: string[], - * parentURL: string | undefined, - * }} context - * @param {Function} defaultResolve - * @returns {Promise<{ url: string }>} - */ -export async function resolve(specifier, context, defaultResolve) { +export async function resolve(specifier, context, nextResolve) { const { parentURL = null } = context; + if (Math.random() > 0.5) { // Some condition. // For some or all specifiers, do some custom logic for resolving. // Always return an object of the form {url: }. return { + shortCircuit: true, url: parentURL ? new URL(specifier, parentURL).href : new URL(specifier).href, }; } + if (Math.random() < 0.5) { // Another condition. // When calling `defaultResolve`, the arguments can be modified. In this // case it's adding another value for matching conditional exports. - return defaultResolve(specifier, { + return nextResolve(specifier, { ...context, conditions: [...context.conditions, 'another-condition'], }); } - // Defer to Node.js for all other specifiers. - return defaultResolve(specifier, context, defaultResolve); + + // Defer to the next hook in the chain, which would be the + // Node.js default resolve if this is the last user-specified loader. + return nextResolve(specifier); } ``` -#### `load(url, context, defaultLoad)` +#### `load(url, context, nextLoad)` + + > The loaders API is being redesigned. This hook may disappear or its > signature may change. Do not rely on the API described below. @@ -767,15 +827,21 @@ export async function resolve(specifier, context, defaultResolve) { > In a previous version of this API, this was split across 3 separate, now > deprecated, hooks (`getFormat`, `getSource`, and `transformSource`). -* `url` {string} +* `url` {string} The URL returned by the `resolve` chain * `context` {Object} + * `conditions` {string\[]} Export conditions of the relevant `package.json` * `format` {string|null|undefined} The format optionally supplied by the - `resolve` hook. + `resolve` hook chain * `importAssertions` {Object} -* `defaultLoad` {Function} +* `nextLoad` {Function} The subsequent `load` hook in the chain, or the + Node.js default `load` hook after the last user-supplied `load` hook + * `specifier` {string} + * `context` {Object} * Returns: {Object} * `format` {string} - * `source` {string|ArrayBuffer|TypedArray} + * `shortCircuit` {undefined|boolean} A signal that this hook intends to + terminate the chain of `resolve` hooks. **Default:** `false` + * `source` {string|ArrayBuffer|TypedArray} The source for Node.js to evaluate The `load` hook provides a way to define a custom method of determining how a URL should be interpreted, retrieved, and parsed. It is also in charge of @@ -816,20 +882,10 @@ avoid reading files from disk. It could also be used to map an unrecognized format to a supported one, for example `yaml` to `module`. ```js -/** - * @param {string} url - * @param {{ - format: string, - }} context If resolve settled with a `format`, that value is included here. - * @param {Function} defaultLoad - * @returns {Promise<{ - format: string, - source: string | ArrayBuffer | SharedArrayBuffer | Uint8Array, - }>} - */ -export async function load(url, context, defaultLoad) { +export async function load(url, context, nextLoad) { const { format } = context; - if (Math.random() > 0.5) { // Some condition. + + if (Math.random() > 0.5) { // Some condition /* For some or all URLs, do some custom logic for retrieving the source. Always return an object of the form { @@ -839,11 +895,13 @@ export async function load(url, context, defaultLoad) { */ return { format, + shortCircuit: true, source: '...', }; } - // Defer to Node.js for all other URLs. - return defaultLoad(url, context, defaultLoad); + + // Defer to the next hook in the chain. + return nextLoad(url); } ``` @@ -852,13 +910,22 @@ source to a supported one (see [Examples](#examples) below). #### `globalPreload()` + + > The loaders API is being redesigned. This hook may disappear or its > signature may change. Do not rely on the API described below. > In a previous version of this API, this hook was named > `getGlobalPreloadCode`. -* Returns: {string} +* `context` {Object} Information to assist the preload code + * `port` {MessagePort} +* Returns: {string} Code to run before application startup Sometimes it might be necessary to run some code inside of the same global scope that the application runs in. This hook allows the return of a string @@ -872,13 +939,7 @@ If the code needs more advanced `require` features, it has to construct its own `require` using `module.createRequire()`. ```js -/** - * @param {{ - port: MessagePort, - }} utilities Things that preload code might find useful - * @returns {string} Code to run before application startup - */ -export function globalPreload(utilities) { +export function globalPreload(context) { return `\ globalThis.someInjectedProperty = 42; console.log('I just set some globals!'); @@ -903,10 +964,6 @@ close normally. /** * This example has the application context send a message to the loader * and sends the message back to the application context - * @param {{ - port: MessagePort, - }} utilities Things that preload code might find useful - * @returns {string} Code to run before application startup */ export function globalPreload({ port }) { port.onmessage = (evt) => { @@ -924,22 +981,24 @@ export function globalPreload({ port }) { ### Examples The various loader hooks can be used together to accomplish wide-ranging -customizations of Node.js’ code loading and evaluation behaviors. +customizations of the Node.js code loading and evaluation behaviors. #### HTTPS loader -In current Node.js, specifiers starting with `https://` are unsupported. The -loader below registers hooks to enable rudimentary support for such specifiers. -While this may seem like a significant improvement to Node.js core +In current Node.js, specifiers starting with `https://` are experimental (see +[HTTPS and HTTP imports][]). + +The loader below registers hooks to enable rudimentary support for such +specifiers. While this may seem like a significant improvement to Node.js core functionality, there are substantial downsides to actually using this loader: performance is much slower than loading files from disk, there is no caching, and there is no security. ```js // https-loader.mjs -import { get } from 'https'; +import { get } from 'node:https'; -export function resolve(specifier, context, defaultResolve) { +export function resolve(specifier, context, nextResolve) { const { parentURL = null } = context; // Normally Node.js would error on specifiers starting with 'https://', so @@ -947,19 +1006,21 @@ export function resolve(specifier, context, defaultResolve) { // passed along to the later hooks below. if (specifier.startsWith('https://')) { return { + shortCircuit: true, url: specifier }; } else if (parentURL && parentURL.startsWith('https://')) { return { - url: new URL(specifier, parentURL).href + shortCircuit: true, + url: new URL(specifier, parentURL).href, }; } // Let Node.js handle all other specifiers. - return defaultResolve(specifier, context, defaultResolve); + return nextResolve(specifier); } -export function load(url, context, defaultLoad) { +export function load(url, context, nextLoad) { // For JavaScript to be loaded over the network, we need to fetch and // return it. if (url.startsWith('https://')) { @@ -971,6 +1032,7 @@ export function load(url, context, defaultLoad) { // This example assumes all network-provided JavaScript is ES module // code. format: 'module', + shortCircuit: true, source: data, })); }).on('error', (err) => reject(err)); @@ -978,7 +1040,7 @@ export function load(url, context, defaultLoad) { } // Let Node.js handle all other URLs. - return defaultLoad(url, context, defaultLoad); + return nextLoad(url); } ``` @@ -996,7 +1058,7 @@ prints the current version of CoffeeScript per the module at the URL in #### Transpiler loader -Sources that are in formats Node.js doesn’t understand can be converted into +Sources that are in formats Node.js doesn't understand can be converted into JavaScript using the [`load` hook][load hook]. Before that hook gets called, however, a [`resolve` hook][resolve hook] needs to tell Node.js not to throw an error on unknown file types. @@ -1015,30 +1077,32 @@ import CoffeeScript from 'coffeescript'; const baseURL = pathToFileURL(`${cwd()}/`).href; -// CoffeeScript files end in .coffee, .litcoffee or .coffee.md. +// CoffeeScript files end in .coffee, .litcoffee, or .coffee.md. const extensionsRegex = /\.coffee$|\.litcoffee$|\.coffee\.md$/; -export async function resolve(specifier, context, defaultResolve) { - const { parentURL = baseURL } = context; - - // Node.js normally errors on unknown file extensions, so return a URL for - // specifiers ending in the CoffeeScript file extensions. +export async function resolve(specifier, context, nextResolve) { if (extensionsRegex.test(specifier)) { + const { parentURL = baseURL } = context; + + // Node.js normally errors on unknown file extensions, so return a URL for + // specifiers ending in the CoffeeScript file extensions. return { + shortCircuit: true, url: new URL(specifier, parentURL).href }; } // Let Node.js handle all other specifiers. - return defaultResolve(specifier, context, defaultResolve); + return nextResolve(specifier); } -export async function load(url, context, defaultLoad) { - // Now that we patched resolve to let CoffeeScript URLs through, we need to - // tell Node.js what format such URLs should be interpreted as. Because - // CoffeeScript transpiles into JavaScript, it should be one of the two - // JavaScript formats: 'commonjs' or 'module'. +export async function load(url, context, nextLoad) { if (extensionsRegex.test(url)) { + // Now that we patched resolve to let CoffeeScript URLs through, we need to + // tell Node.js what format such URLs should be interpreted as. Because + // CoffeeScript transpiles into JavaScript, it should be one of the two + // JavaScript formats: 'commonjs' or 'module'. + // CoffeeScript files can be either CommonJS or ES modules, so we want any // CoffeeScript file to be treated by Node.js the same as a .js file at the // same location. To determine how Node.js would interpret an arbitrary .js @@ -1051,25 +1115,26 @@ export async function load(url, context, defaultLoad) { // loader. Avoiding the need for a separate CommonJS handler is a future // enhancement planned for ES module loaders. if (format === 'commonjs') { - return { format }; + return { + format, + shortCircuit: true, + }; } - const { source: rawSource } = await defaultLoad(url, { format }); + const { source: rawSource } = await nextLoad(url, { ...context, format }); // This hook converts CoffeeScript source code into JavaScript source code // for all imported CoffeeScript files. - const transformedSource = CoffeeScript.compile(rawSource.toString(), { - bare: true, - filename: url, - }); + const transformedSource = coffeeCompile(rawSource.toString(), url); return { format, + shortCircuit: true, source: transformedSource, }; } // Let Node.js handle all other URLs. - return defaultLoad(url, context, defaultLoad); + return nextLoad(url); } async function getPackageType(url) { @@ -1107,7 +1172,7 @@ async function getPackageType(url) { import { scream } from './scream.coffee' console.log scream 'hello, world' -import { version } from 'process' +import { version } from 'node:process' console.log "Brought to you by Node.js version #{version}" ``` @@ -1178,7 +1243,7 @@ The resolver can throw the following errors: > 2. If _specifier_ is a valid URL, then > 1. Set _resolved_ to the result of parsing and reserializing > _specifier_ as a URL. -> 3. Otherwise, if _specifier_ starts with _"/"_, _"./"_ or _"../"_, then +> 3. Otherwise, if _specifier_ starts with _"/"_, _"./"_, or _"../"_, then > 1. Set _resolved_ to the URL resolution of _specifier_ relative to > _parentURL_. > 4. Otherwise, if _specifier_ starts with _"#"_, then @@ -1380,14 +1445,14 @@ _internal_, _conditions_) > 2. Return **PACKAGE\_RESOLVE**(_target_ + _subpath_, > _packageURL_ + _"/"_). > 2. Otherwise, throw an _Invalid Package Target_ error. -> 3. If _target_ split on _"/"_ or _"\\"_ contains any _"."_, _".."_ or +> 3. If _target_ split on _"/"_ or _"\\"_ contains any _"."_, _".."_, or > _"node\_modules"_ segments after the first segment, case insensitive and > including percent encoded variants, throw an _Invalid Package Target_ > error. > 4. Let _resolvedTarget_ be the URL resolution of the concatenation of > _packageURL_ and _target_. > 5. Assert: _resolvedTarget_ is contained in _packageURL_. -> 6. If _subpath_ split on _"/"_ or _"\\"_ contains any _"."_, _".."_ or +> 6. If _subpath_ split on _"/"_ or _"\\"_ contains any _"."_, _".."_, or > _"node\_modules"_ segments, case insensitive and including percent > encoded variants, throw an _Invalid Module Specifier_ error. > 7. If _pattern_ is **true**, then @@ -1496,8 +1561,9 @@ success! [Conditional exports]: packages.md#conditional-exports [Core modules]: modules.md#core-modules [Determining module system]: packages.md#determining-module-system -[Dynamic `import()`]: https://wiki.developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Dynamic_Imports +[Dynamic `import()`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import [ES Module Integration Proposal for WebAssembly]: https://github.com/webassembly/esm-integration +[HTTPS and HTTP imports]: #https-and-http-imports [Import Assertions]: #import-assertions [Import Assertions proposal]: https://github.com/tc39/proposal-import-assertions [JSON modules]: #json-modules @@ -1528,9 +1594,9 @@ success! [`util.TextDecoder`]: util.md#class-utiltextdecoder [cjs-module-lexer]: https://github.com/nodejs/cjs-module-lexer/tree/1.2.2 [custom https loader]: #https-loader -[load hook]: #loadurl-context-defaultload +[load hook]: #loadurl-context-nextload [percent-encoded]: url.md#percent-encoding-in-urls -[resolve hook]: #resolvespecifier-context-defaultresolve +[resolve hook]: #resolvespecifier-context-nextresolve [special scheme]: https://url.spec.whatwg.org/#special-scheme [status code]: process.md#exit-codes [the official standard format]: https://tc39.github.io/ecma262/#sec-modules diff --git a/doc/api/events.md b/doc/api/events.md index 56dee20838cb9d..c087c1a7c00273 100644 --- a/doc/api/events.md +++ b/doc/api/events.md @@ -30,8 +30,20 @@ The following example shows a simple `EventEmitter` instance with a single listener. The `eventEmitter.on()` method is used to register listeners, while the `eventEmitter.emit()` method is used to trigger the event. -```js -const EventEmitter = require('events'); +```mjs +import { EventEmitter } from 'node:events'; + +class MyEmitter extends EventEmitter {} + +const myEmitter = new MyEmitter(); +myEmitter.on('event', () => { + console.log('an event occurred!'); +}); +myEmitter.emit('event'); +``` + +```cjs +const EventEmitter = require('node:events'); class MyEmitter extends EventEmitter {} @@ -144,7 +156,7 @@ myEmitter.emit('error', new Error('whoops!')); ``` To guard against crashing the Node.js process the [`domain`][] module can be -used. (Note, however, that the `domain` module is deprecated.) +used. (Note, however, that the `node:domain` module is deprecated.) As a best practice, listeners should always be added for the `'error'` events. @@ -160,8 +172,19 @@ myEmitter.emit('error', new Error('whoops!')); It is possible to monitor `'error'` events without consuming the emitted error by installing a listener using the symbol `events.errorMonitor`. -```js -const { EventEmitter, errorMonitor } = require('events'); +```mjs +import { EventEmitter, errorMonitor } from 'node:events'; + +const myEmitter = new EventEmitter(); +myEmitter.on(errorMonitor, (err) => { + MyMonitoringTool.log(err); +}); +myEmitter.emit('error', new Error('whoops!')); +// Still throws and crashes Node.js +``` + +```cjs +const { EventEmitter, errorMonitor } = require('node:events'); const myEmitter = new EventEmitter(); myEmitter.on(errorMonitor, (err) => { @@ -208,8 +231,20 @@ ee2[Symbol.for('nodejs.rejection')] = console.log; Setting `events.captureRejections = true` will change the default for all new instances of `EventEmitter`. -```js -const events = require('events'); +```mjs +import { EventEmitter } from 'node:events'; + +EventEmitter.captureRejections = true; +const ee1 = new EventEmitter(); +ee1.on('something', async (value) => { + throw new Error('kaboom'); +}); + +ee1.on('error', console.log); +``` + +```cjs +const events = require('node:events'); events.captureRejections = true; const ee1 = new events.EventEmitter(); ee1.on('something', async (value) => { @@ -235,10 +270,14 @@ changes: description: Added captureRejections option. --> -The `EventEmitter` class is defined and exposed by the `events` module: +The `EventEmitter` class is defined and exposed by the `node:events` module: -```js -const EventEmitter = require('events'); +```mjs +import { EventEmitter } from 'node:events'; +``` + +```cjs +const EventEmitter = require('node:events'); ``` All `EventEmitter`s emit the event `'newListener'` when new listeners are @@ -337,8 +376,41 @@ to each. Returns `true` if the event had listeners, `false` otherwise. -```js -const EventEmitter = require('events'); +```mjs +import { EventEmitter } from 'node:events'; +const myEmitter = new EventEmitter(); + +// First listener +myEmitter.on('event', function firstListener() { + console.log('Helloooo! first listener'); +}); +// Second listener +myEmitter.on('event', function secondListener(arg1, arg2) { + console.log(`event with parameters ${arg1}, ${arg2} in second listener`); +}); +// Third listener +myEmitter.on('event', function thirdListener(...args) { + const parameters = args.join(', '); + console.log(`event with parameters ${parameters} in third listener`); +}); + +console.log(myEmitter.listeners('event')); + +myEmitter.emit('event', 1, 2, 3, 4, 5); + +// Prints: +// [ +// [Function: firstListener], +// [Function: secondListener], +// [Function: thirdListener] +// ] +// Helloooo! first listener +// event with parameters 1, 2 in second listener +// event with parameters 1, 2, 3, 4, 5 in third listener +``` + +```cjs +const EventEmitter = require('node:events'); const myEmitter = new EventEmitter(); // First listener @@ -381,8 +453,23 @@ added: v6.0.0 Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or `Symbol`s. -```js -const EventEmitter = require('events'); +```mjs +import { EventEmitter } from 'node:events'; + +const myEE = new EventEmitter(); +myEE.on('foo', () => {}); +myEE.on('bar', () => {}); + +const sym = Symbol('symbol'); +myEE.on(sym, () => {}); + +console.log(myEE.eventNames()); +// Prints: [ 'foo', 'bar', Symbol(symbol) ] +``` + +```cjs +const EventEmitter = require('node:events'); + const myEE = new EventEmitter(); myEE.on('foo', () => {}); myEE.on('bar', () => {}); @@ -755,8 +842,27 @@ promise rejection happens when emitting an event and It is possible to use [`events.captureRejectionSymbol`][rejectionsymbol] in place of `Symbol.for('nodejs.rejection')`. -```js -const { EventEmitter, captureRejectionSymbol } = require('events'); +```mjs +import { EventEmitter, captureRejectionSymbol } from 'node:events'; + +class MyClass extends EventEmitter { + constructor() { + super({ captureRejections: true }); + } + + [captureRejectionSymbol](err, event, ...args) { + console.log('rejection happened for', event, 'with', err, ...args); + this.destroy(err); + } + + destroy(err) { + // Tear the resource down here. + } +} +``` + +```cjs +const { EventEmitter, captureRejectionSymbol } = require('node:events'); class MyClass extends EventEmitter { constructor() { @@ -810,8 +916,8 @@ The [`--trace-warnings`][] command-line flag can be used to display the stack trace for such warnings. The emitted warning can be inspected with [`process.on('warning')`][] and will -have the additional `emitter`, `type` and `count` properties, referring to -the event emitter instance, the event’s name and the number of attached +have the additional `emitter`, `type`, and `count` properties, referring to +the event emitter instance, the event's name and the number of attached listeners, respectively. Its `name` property is set to `'MaxListenersExceededWarning'`. @@ -828,7 +934,7 @@ events. Listeners installed using this symbol are called before the regular `'error'` listeners are called. Installing a listener using this symbol does not change the behavior once an -`'error'` event is emitted, therefore the process will still crash if no +`'error'` event is emitted. Therefore, the process will still crash if no regular `'error'` listener is installed. ## `events.getEventListeners(emitterOrTarget, eventName)` @@ -850,8 +956,25 @@ the emitter. For `EventTarget`s this is the only way to get the event listeners for the event target. This is useful for debugging and diagnostic purposes. -```js -const { getEventListeners, EventEmitter } = require('events'); +```mjs +import { getEventListeners, EventEmitter } from 'node:events'; + +{ + const ee = new EventEmitter(); + const listener = () => console.log('Events are fun'); + ee.on('foo', listener); + getEventListeners(ee, 'foo'); // [listener] +} +{ + const et = new EventTarget(); + const listener = () => console.log('Events are fun'); + et.addEventListener('foo', listener); + getEventListeners(et, 'foo'); // [listener] +} +``` + +```cjs +const { getEventListeners, EventEmitter } = require('node:events'); { const ee = new EventEmitter(); @@ -894,8 +1017,33 @@ This method is intentionally generic and works with the web platform [EventTarget][WHATWG-EventTarget] interface, which has no special `'error'` event semantics and does not listen to the `'error'` event. -```js -const { once, EventEmitter } = require('events'); +```mjs +import { once, EventEmitter } from 'node:events'; +import process from 'node:process'; + +const ee = new EventEmitter(); + +process.nextTick(() => { + ee.emit('myevent', 42); +}); + +const [value] = await once(ee, 'myevent'); +console.log(value); + +const err = new Error('kaboom'); +process.nextTick(() => { + ee.emit('error', err); +}); + +try { + await once(ee, 'myevent'); +} catch (err) { + console.log('error happened', err); +} +``` + +```cjs +const { once, EventEmitter } = require('node:events'); async function run() { const ee = new EventEmitter(); @@ -927,8 +1075,22 @@ is used to wait for another event. If `events.once()` is used to wait for the '`error'` event itself, then it is treated as any other kind of event without special handling: -```js -const { EventEmitter, once } = require('events'); +```mjs +import { EventEmitter, once } from 'node:events'; + +const ee = new EventEmitter(); + +once(ee, 'error') + .then(([err]) => console.log('ok', err.message)) + .catch((err) => console.log('error', err.message)); + +ee.emit('error', new Error('boom')); + +// Prints: ok boom +``` + +```cjs +const { EventEmitter, once } = require('node:events'); const ee = new EventEmitter(); @@ -943,8 +1105,32 @@ ee.emit('error', new Error('boom')); An {AbortSignal} can be used to cancel waiting for the event: -```js -const { EventEmitter, once } = require('events'); +```mjs +import { EventEmitter, once } from 'node:events'; + +const ee = new EventEmitter(); +const ac = new AbortController(); + +async function foo(emitter, event, signal) { + try { + await once(emitter, event, { signal }); + console.log('event emitted!'); + } catch (error) { + if (error.name === 'AbortError') { + console.error('Waiting for the event was canceled!'); + } else { + console.error('There was an error', error.message); + } + } +} + +foo(ee, 'foo', ac.signal); +ac.abort(); // Abort waiting for the event +ee.emit('foo'); // Prints: Waiting for the event was canceled! +``` + +```cjs +const { EventEmitter, once } = require('node:events'); const ee = new EventEmitter(); const ac = new AbortController(); @@ -976,8 +1162,32 @@ because the `process.nextTick()` queue is drained before the `Promise` microtask queue, and because `EventEmitter` emits all events synchronously, it is possible for `events.once()` to miss an event. -```js -const { EventEmitter, once } = require('events'); +```mjs +import { EventEmitter, once } from 'node:events'; +import process from 'node:process'; + +const myEE = new EventEmitter(); + +async function foo() { + await once(myEE, 'bar'); + console.log('bar'); + + // This Promise will never resolve because the 'foo' event will + // have already been emitted before the Promise is created. + await once(myEE, 'foo'); + console.log('foo'); +} + +process.nextTick(() => { + myEE.emit('bar'); + myEE.emit('foo'); +}); + +foo().then(() => console.log('done')); +``` + +```cjs +const { EventEmitter, once } = require('node:events'); const myEE = new EventEmitter(); @@ -1003,8 +1213,27 @@ To catch both events, create each of the Promises _before_ awaiting either of them, then it becomes possible to use `Promise.all()`, `Promise.race()`, or `Promise.allSettled()`: -```js -const { EventEmitter, once } = require('events'); +```mjs +import { EventEmitter, once } from 'node:events'; +import process from 'node:process'; + +const myEE = new EventEmitter(); + +async function foo() { + await Promise.all([once(myEE, 'bar'), once(myEE, 'foo')]); + console.log('foo', 'bar'); +} + +process.nextTick(() => { + myEE.emit('bar'); + myEE.emit('foo'); +}); + +foo().then(() => console.log('done')); +``` + +```cjs +const { EventEmitter, once } = require('node:events'); const myEE = new EventEmitter(); @@ -1068,8 +1297,19 @@ deprecated: v3.2.0 A class method that returns the number of listeners for the given `eventName` registered on the given `emitter`. -```js -const { EventEmitter, listenerCount } = require('events'); +```mjs +import { EventEmitter, listenerCount } from 'node:events'; + +const myEmitter = new EventEmitter(); +myEmitter.on('event', () => {}); +myEmitter.on('event', () => {}); +console.log(listenerCount(myEmitter, 'event')); +// Prints: 2 +``` + +```cjs +const { EventEmitter, listenerCount } = require('node:events'); + const myEmitter = new EventEmitter(); myEmitter.on('event', () => {}); myEmitter.on('event', () => {}); @@ -1091,8 +1331,29 @@ added: * `signal` {AbortSignal} Can be used to cancel awaiting events. * Returns: {AsyncIterator} that iterates `eventName` events emitted by the `emitter` -```js -const { on, EventEmitter } = require('events'); +```mjs +import { on, EventEmitter } from 'node:events'; +import process from 'node:process'; + +const ee = new EventEmitter(); + +// Emit later on +process.nextTick(() => { + ee.emit('foo', 'bar'); + ee.emit('foo', 42); +}); + +for await (const event of on(ee, 'foo')) { + // The execution of this inner block is synchronous and it + // processes one event at a time (even with await). Do not use + // if concurrent execution is required. + console.log(event); // prints ['bar'] [42] +} +// Unreachable here +``` + +```cjs +const { on, EventEmitter } = require('node:events'); (async () => { const ee = new EventEmitter(); @@ -1120,8 +1381,36 @@ composed of the emitted event arguments. An {AbortSignal} can be used to cancel waiting on events: -```js -const { on, EventEmitter } = require('events'); +```mjs +import { on, EventEmitter } from 'node:events'; +import process from 'node:process'; + +const ac = new AbortController(); + +(async () => { + const ee = new EventEmitter(); + + // Emit later on + process.nextTick(() => { + ee.emit('foo', 'bar'); + ee.emit('foo', 42); + }); + + for await (const event of on(ee, 'foo', { signal: ac.signal })) { + // The execution of this inner block is synchronous and it + // processes one event at a time (even with await). Do not use + // if concurrent execution is required. + console.log(event); // prints ['bar'] [42] + } + // Unreachable here +})(); + +process.nextTick(() => ac.abort()); +``` + +```cjs +const { on, EventEmitter } = require('node:events'); + const ac = new AbortController(); (async () => { @@ -1157,11 +1446,20 @@ added: v15.4.0 or {EventEmitter} instances. If none are specified, `n` is set as the default max for all newly created {EventTarget} and {EventEmitter} objects. -```js +```mjs +import { setMaxListeners, EventEmitter } from 'node:events'; + +const target = new EventTarget(); +const emitter = new EventEmitter(); + +setMaxListeners(5, target, emitter); +``` + +```cjs const { setMaxListeners, EventEmitter -} = require('events'); +} = require('node:events'); const target = new EventTarget(); const emitter = new EventEmitter(); @@ -1179,10 +1477,39 @@ Integrates `EventEmitter` with {AsyncResource} for `EventEmitter`s that require manual async tracking. Specifically, all events emitted by instances of `events.EventEmitterAsyncResource` will run within its [async context][]. -```js -const { EventEmitterAsyncResource } = require('events'); -const { notStrictEqual, strictEqual } = require('assert'); -const { executionAsyncId } = require('async_hooks'); +```mjs +import { EventEmitterAsyncResource } from 'node:events'; +import { notStrictEqual, strictEqual } from 'node:assert'; +import { executionAsyncId } from 'node:async_hooks'; + +// Async tracking tooling will identify this as 'Q'. +const ee1 = new EventEmitterAsyncResource({ name: 'Q' }); + +// 'foo' listeners will run in the EventEmitters async context. +ee1.on('foo', () => { + strictEqual(executionAsyncId(), ee1.asyncId); + strictEqual(triggerAsyncId(), ee1.triggerAsyncId); +}); + +const ee2 = new EventEmitter(); + +// 'foo' listeners on ordinary EventEmitters that do not track async +// context, however, run in the same async context as the emit(). +ee2.on('foo', () => { + notStrictEqual(executionAsyncId(), ee2.asyncId); + notStrictEqual(triggerAsyncId(), ee2.triggerAsyncId); +}); + +Promise.resolve().then(() => { + ee1.emit('foo'); + ee2.emit('foo'); +}); +``` + +```cjs +const { EventEmitterAsyncResource } = require('node:events'); +const { notStrictEqual, strictEqual } = require('node:assert'); +const { executionAsyncId } = require('node:async_hooks'); // Async tracking tooling will identify this as 'Q'. const ee1 = new EventEmitterAsyncResource({ name: 'Q' }); @@ -1578,6 +1905,10 @@ changes: * `type` {string} @@ -1590,6 +1921,8 @@ added: v14.5.0 **Default:** `false`. * `capture` {boolean} Not directly used by Node.js. Added for API completeness. **Default:** `false`. + * `signal` {AbortSignal} The listener will be removed when the given + AbortSignal object's `abort()` method is called. Adds a new handler for the `type` event. Any given `listener` is added only once per `type` and per `capture` option value. @@ -1624,7 +1957,7 @@ added: v14.5.0 --> * `event` {Event} -* Returns: {boolean} `true` if either event’s `cancelable` attribute value is +* Returns: {boolean} `true` if either event's `cancelable` attribute value is false or its `preventDefault()` method was not invoked, otherwise `false`. Dispatches the `event` to the list of handlers for `event.type`. @@ -1645,6 +1978,31 @@ added: v14.5.0 Removes the `listener` from the list of handlers for event `type`. +### Class: `CustomEvent` + + + +> Stability: 1 - Experimental. + +* Extends: {Event} + +The `CustomEvent` object is an adaptation of the [`CustomEvent` Web API][]. +Instances are created internally by Node.js. + +#### `event.detail` + + + +> Stability: 1 - Experimental. + +* Type: {any} Returns custom data passed when initializing. + +Read-only. + ### Class: `NodeEventTarget` -The `fs` module enables interacting with the file system in a +The `node:fs` module enables interacting with the file system in a way modeled on standard POSIX functions. To use the promise-based APIs: ```mjs -import * as fs from 'fs/promises'; +import * as fs from 'node:fs/promises'; ``` ```cjs -const fs = require('fs/promises'); +const fs = require('node:fs/promises'); ``` To use the callback and sync APIs: ```mjs -import * as fs from 'fs'; +import * as fs from 'node:fs'; ``` ```cjs -const fs = require('fs'); +const fs = require('node:fs'); ``` All file system operations have synchronous, callback, and promise-based @@ -40,7 +40,7 @@ Promise-based operations return a promise that is fulfilled when the asynchronous operation is complete. ```mjs -import { unlink } from 'fs/promises'; +import { unlink } from 'node:fs/promises'; try { await unlink('/tmp/hello'); @@ -51,7 +51,7 @@ try { ``` ```cjs -const { unlink } = require('fs/promises'); +const { unlink } = require('node:fs/promises'); (async function(path) { try { @@ -72,7 +72,7 @@ reserved for an exception. If the operation is completed successfully, then the first argument is `null` or `undefined`. ```mjs -import { unlink } from 'fs'; +import { unlink } from 'node:fs'; unlink('/tmp/hello', (err) => { if (err) throw err; @@ -81,7 +81,7 @@ unlink('/tmp/hello', (err) => { ``` ```cjs -const { unlink } = require('fs'); +const { unlink } = require('node:fs'); unlink('/tmp/hello', (err) => { if (err) throw err; @@ -89,7 +89,7 @@ unlink('/tmp/hello', (err) => { }); ``` -The callback-based versions of the `fs` module APIs are preferable over +The callback-based versions of the `node:fs` module APIs are preferable over the use of the promise APIs when maximal performance (both in terms of execution time and memory allocation) is required. @@ -100,7 +100,7 @@ execution until the operation is complete. Exceptions are thrown immediately and can be handled using `try…catch`, or can be allowed to bubble up. ```mjs -import { unlinkSync } from 'fs'; +import { unlinkSync } from 'node:fs'; try { unlinkSync('/tmp/hello'); @@ -111,7 +111,7 @@ try { ``` ```cjs -const { unlinkSync } = require('fs'); +const { unlinkSync } = require('node:fs'); try { unlinkSync('/tmp/hello'); @@ -179,9 +179,19 @@ longer be used. -* `data` {string|Buffer|TypedArray|DataView} +* `data` {string|Buffer|TypedArray|DataView|AsyncIterable|Iterable|Stream} * `options` {Object|string} * `encoding` {string|null} **Default:** `'utf8'` * Returns: {Promise} Fulfills with `undefined` upon success. @@ -227,7 +237,7 @@ Closes the file handle after waiting for any pending operation on the handle to complete. ```mjs -import { open } from 'fs/promises'; +import { open } from 'node:fs/promises'; let filehandle; try { @@ -252,8 +262,8 @@ added: v16.11.0 * `highWaterMark` {integer} **Default:** `64 * 1024` * Returns: {fs.ReadStream} -Unlike the 16 kb default `highWaterMark` for a {stream.Readable}, the stream -returned by this method has a default `highWaterMark` of 64 kb. +Unlike the 16 KiB default `highWaterMark` for a {stream.Readable}, the stream +returned by this method has a default `highWaterMark` of 64 KiB. `options` can include `start` and `end` values to read a range of bytes from the file instead of the entire file. Both `start` and `end` are inclusive and @@ -272,7 +282,7 @@ By default, the stream will emit a `'close'` event after it has been destroyed. Set the `emitClose` option to `false` to change this behavior. ```mjs -import { open } from 'fs/promises'; +import { open } from 'node:fs/promises'; const fd = await open('/dev/input/event0'); // Create a stream from some character device. @@ -298,7 +308,7 @@ automatically. An example to read the last 10 bytes of a file which is 100 bytes long: ```mjs -import { open } from 'fs/promises'; +import { open } from 'node:fs/promises'; const fd = await open('sample.txt'); fd.createReadStream({ start: 90, end: 99 }); @@ -364,7 +374,7 @@ added: v10.0.0 file data read. * `offset` {integer} The location in the buffer at which to start filling. * `length` {integer} The number of bytes to read. -* `position` {integer} The location where to begin reading data from the +* `position` {integer|null} The location where to begin reading data from the file. If `null`, data will be read from the current file position, and the position will be updated. If `position` is an integer, the current file position will remain unchanged. @@ -389,6 +399,33 @@ added: * `options` {Object} * `buffer` {Buffer|TypedArray|DataView} A buffer that will be filled with the file data read. **Default:** `Buffer.alloc(16384)` + * `offset` {integer} The location in the buffer at which to start filling. + **Default:** `0` + * `length` {integer} The number of bytes to read. **Default:** + `buffer.byteLength - offset` + * `position` {integer|null} The location where to begin reading data from the + file. If `null`, data will be read from the current file position, and + the position will be updated. If `position` is an integer, the current + file position will remain unchanged. **Default:**: `null` +* Returns: {Promise} Fulfills upon success with an object with two properties: + * `bytesRead` {integer} The number of bytes read + * `buffer` {Buffer|TypedArray|DataView} A reference to the passed in `buffer` + argument. + +Reads data from the file and stores that in the given buffer. + +If the file is not modified concurrently, the end-of-file is reached when the +number of bytes read is zero. + +#### `filehandle.read(buffer[, options])` + + + +* `buffer` {Buffer|TypedArray|DataView} A buffer that will be filled with the + file data read. +* `options` {Object} * `offset` {integer} The location in the buffer at which to start filling. **Default:** `0` * `length` {integer} The number of bytes to read. **Default:** @@ -440,9 +477,9 @@ added: --> * `buffers` {Buffer\[]|TypedArray\[]|DataView\[]} -* `position` {integer} The offset from the beginning of the file where the data - should be read from. If `position` is not a `number`, the data will be read - from the current position. +* `position` {integer|null} The offset from the beginning of the file where + the data should be read from. If `position` is not a `number`, the data will + be read from the current position. **Default:** `null` * Returns: {Promise} Fulfills upon success an object containing two properties: * `bytesRead` {integer} the number of bytes read * `buffers` {Buffer\[]|TypedArray\[]|DataView\[]} property containing @@ -472,7 +509,7 @@ changes: added: v10.0.0 --> -* Returns: {Promise} Fufills with `undefined` upon success. +* Returns: {Promise} Fulfills with `undefined` upon success. Request that all data for the open file descriptor is flushed to the storage device. The specific implementation is operating system and device specific. @@ -495,7 +532,7 @@ retained in the file. The following example retains only the first four bytes of the file: ```mjs -import { open } from 'fs/promises'; +import { open } from 'node:fs/promises'; let filehandle = null; try { @@ -524,85 +561,93 @@ added: v10.0.0 Change the file system timestamps of the object referenced by the {FileHandle} then resolves the promise with no arguments upon success. -#### `filehandle.write(buffer[, offset[, length[, position]]])` +#### `filehandle.write(buffer, offset[, length[, position]])` -* `buffer` {Buffer|TypedArray|DataView|string|Object} +* `buffer` {Buffer|TypedArray|DataView} * `offset` {integer} The start position from within `buffer` where the data - to write begins. **Default:** `0` + to write begins. * `length` {integer} The number of bytes from `buffer` to write. **Default:** - `buffer.byteLength` -* `position` {integer} The offset from the beginning of the file where the + `buffer.byteLength - offset` +* `position` {integer|null} The offset from the beginning of the file where the data from `buffer` should be written. If `position` is not a `number`, the data will be written at the current position. See the POSIX pwrite(2) - documentation for more detail. + documentation for more detail. **Default:** `null` * Returns: {Promise} Write `buffer` to the file. -If `buffer` is a plain object, it must have an own (not inherited) `toString` -function property. - The promise is resolved with an object containing two properties: * `bytesWritten` {integer} the number of bytes written -* `buffer` {Buffer|TypedArray|DataView|string|Object} a reference to the +* `buffer` {Buffer|TypedArray|DataView} a reference to the `buffer` written. It is unsafe to use `filehandle.write()` multiple times on the same file without waiting for the promise to be resolved (or rejected). For this -scenario, use [`fs.createWriteStream()`][]. +scenario, use [`filehandle.createWriteStream()`][]. On Linux, positional writes do not work when the file is opened in append mode. The kernel ignores the position argument and always appends the data to the end of the file. +#### `filehandle.write(buffer[, options])` + + + +* `buffer` {Buffer|TypedArray|DataView} +* `options` {Object} + * `offset` {integer} **Default:** `0` + * `length` {integer} **Default:** `buffer.byteLength - offset` + * `position` {integer} **Default:** `null` +* Returns: {Promise} + +Write `buffer` to the file. + +Similar to the above `filehandle.write` function, this version takes an +optional `options` object. If no `options` object is specified, it will +default with the above values. + #### `filehandle.write(string[, position[, encoding]])` -* `string` {string|Object} -* `position` {integer} The offset from the beginning of the file where the +* `string` {string} +* `position` {integer|null} The offset from the beginning of the file where the data from `string` should be written. If `position` is not a `number` the data will be written at the current position. See the POSIX pwrite(2) - documentation for more detail. + documentation for more detail. **Default:** `null` * `encoding` {string} The expected string encoding. **Default:** `'utf8'` * Returns: {Promise} -Write `string` to the file. If `string` is not a string, or an object with an -own `toString` function property, the promise is rejected with an error. +Write `string` to the file. If `string` is not a string, the promise is +rejected with an error. The promise is resolved with an object containing two properties: * `bytesWritten` {integer} the number of bytes written -* `buffer` {string|Object} a reference to the `string` written. +* `buffer` {string} a reference to the `string` written. It is unsafe to use `filehandle.write()` multiple times on the same file without waiting for the promise to be resolved (or rejected). For this -scenario, use [`fs.createWriteStream()`][]. +scenario, use [`filehandle.createWriteStream()`][]. On Linux, positional writes do not work when the file is opened in append mode. The kernel ignores the position argument and always appends the data to @@ -615,28 +660,22 @@ added: v10.0.0 changes: - version: v15.14.0 pr-url: https://github.com/nodejs/node/pull/37490 - description: The `data` argument supports `AsyncIterable`, `Iterable` and `Stream`. - - version: v14.12.0 - pr-url: https://github.com/nodejs/node/pull/34993 - description: The `data` parameter will stringify an object with an - explicit `toString` function. + description: The `data` argument supports `AsyncIterable`, `Iterable`, and `Stream`. - version: v14.0.0 pr-url: https://github.com/nodejs/node/pull/31030 description: The `data` parameter won't coerce unsupported input to strings anymore. --> -* `data` {string|Buffer|TypedArray|DataView|Object|AsyncIterable|Iterable - |Stream} +* `data` {string|Buffer|TypedArray|DataView|AsyncIterable|Iterable|Stream} * `options` {Object|string} * `encoding` {string|null} The expected character encoding when `data` is a string. **Default:** `'utf8'` * Returns: {Promise} Asynchronously writes data to a file, replacing the file if it already exists. -`data` can be a string, a buffer, an {AsyncIterable} or {Iterable} object, or an -object with an own `toString` function -property. The promise is resolved with no arguments upon success. +`data` can be a string, a buffer, an {AsyncIterable}, or an {Iterable} object. +The promise is resolved with no arguments upon success. If `options` is a string, then it specifies the `encoding`. @@ -657,9 +696,9 @@ added: v12.9.0 --> * `buffers` {Buffer\[]|TypedArray\[]|DataView\[]} -* `position` {integer} The offset from the beginning of the file where the +* `position` {integer|null} The offset from the beginning of the file where the data from `buffers` should be written. If `position` is not a `number`, - the data will be written at the current position. + the data will be written at the current position. **Default:** `null` * Returns: {Promise} Write an array of {ArrayBufferView}s to the file. @@ -701,8 +740,7 @@ with an {Error} object. The following example checks if the file `/etc/passwd` can be read and written by the current process. ```mjs -import { access } from 'fs/promises'; -import { constants } from 'fs'; +import { access, constants } from 'node:fs/promises'; try { await access('/etc/passwd', constants.R_OK | constants.W_OK); @@ -804,8 +842,7 @@ error occurs after the destination file has been opened for writing, an attempt will be made to remove the destination. ```mjs -import { constants } from 'fs'; -import { copyFile } from 'fs/promises'; +import { copyFile, constants } from 'node:fs/promises'; try { await copyFile('source.txt', 'destination.txt'); @@ -967,6 +1004,34 @@ property indicating whether parent directories should be created. Calling `fsPromises.mkdir()` when `path` is a directory that exists results in a rejection only when `recursive` is false. +```mjs +import { mkdir } from 'node:fs/promises'; + +try { + const projectFolder = new URL('./test/project/', import.meta.url); + const createDir = await mkdir(path, { recursive: true }); + + console.log(`created ${createDir}`); +} catch (err) { + console.error(err.message); +} +``` + +```cjs +const { mkdir } = require('node:fs/promises'); +const { resolve, join } = require('node:path'); + +async function makeDirectory() { + const projectFolder = join(__dirname, 'test', 'project'); + const dirCreation = await mkdir(projectFolder, { recursive: true }); + + console.log(dirCreation); + return dirCreation; +} + +makeDirectory().catch(console.error); +``` + ### `fsPromises.mkdtemp(prefix[, options])` * `file` {string|Buffer|URL|FileHandle} filename or `FileHandle` -* `data` {string|Buffer|TypedArray|DataView|Object|AsyncIterable|Iterable - |Stream} +* `data` {string|Buffer|TypedArray|DataView|AsyncIterable|Iterable|Stream} * `options` {Object|string} * `encoding` {string|null} **Default:** `'utf8'` * `mode` {integer} **Default:** `0o666` @@ -1487,8 +1547,7 @@ changes: * Returns: {Promise} Fulfills with `undefined` upon success. Asynchronously writes data to a file, replacing the file if it already exists. -`data` can be a string, a {Buffer}, or, an object with an own (not inherited) -`toString` function property. +`data` can be a string, a buffer, an {AsyncIterable}, or an {Iterable} object. The `encoding` option is ignored if `data` is a buffer. @@ -1505,15 +1564,15 @@ without waiting for the promise to be settled. Similarly to `fsPromises.readFile` - `fsPromises.writeFile` is a convenience method that performs multiple `write` calls internally to write the buffer passed to it. For performance sensitive code consider using -[`fs.createWriteStream()`][]. +[`fs.createWriteStream()`][] or [`filehandle.createWriteStream()`][]. It is possible to use an {AbortSignal} to cancel an `fsPromises.writeFile()`. Cancelation is "best effort", and some amount of data is likely still to be written. ```mjs -import { writeFile } from 'fs/promises'; -import { Buffer } from 'buffer'; +import { writeFile } from 'node:fs/promises'; +import { Buffer } from 'node:buffer'; try { const controller = new AbortController(); @@ -1534,6 +1593,14 @@ try { Aborting an ongoing request does not abort individual operating system requests but rather the internal buffering `fs.writeFile` performs. +### `fsPromises.constants` + +* {Object} + +Returns an object containing commonly used constants for file system +operations. The object is the same as `fs.constants`. See [FS constants][] +for more details. + ## Callback API The callback APIs perform all operations asynchronously, without blocking the @@ -1582,7 +1649,7 @@ argument will be an `Error` object. The following examples check if `package.json` exists, and if it is readable or writable. ```mjs -import { access, constants } from 'fs'; +import { access, constants } from 'node:fs'; const file = 'package.json'; @@ -1608,7 +1675,7 @@ access(file, constants.R_OK | constants.W_OK, (err) => { ``` Do not use `fs.access()` to check for the accessibility of a file before calling -`fs.open()`, `fs.readFile()` or `fs.writeFile()`. Doing +`fs.open()`, `fs.readFile()`, or `fs.writeFile()`. Doing so introduces a race condition, since other processes may change the file's state between the two calls. Instead, user code should open/read/write the file directly and handle the error raised if the file is not accessible. @@ -1616,7 +1683,7 @@ file directly and handle the error raised if the file is not accessible. **write (NOT RECOMMENDED)** ```mjs -import { access, open, close } from 'fs'; +import { access, open, close } from 'node:fs'; access('myfile', (err) => { if (!err) { @@ -1641,7 +1708,7 @@ access('myfile', (err) => { **write (RECOMMENDED)** ```mjs -import { open, close } from 'fs'; +import { open, close } from 'node:fs'; open('myfile', 'wx', (err, fd) => { if (err) { @@ -1666,7 +1733,7 @@ open('myfile', 'wx', (err, fd) => { **read (NOT RECOMMENDED)** ```mjs -import { access, open, close } from 'fs'; +import { access, open, close } from 'node:fs'; access('myfile', (err) => { if (err) { if (err.code === 'ENOENT') { @@ -1694,7 +1761,7 @@ access('myfile', (err) => { **read (RECOMMENDED)** ```mjs -import { open, close } from 'fs'; +import { open, close } from 'node:fs'; open('myfile', 'r', (err, fd) => { if (err) { @@ -1766,7 +1833,7 @@ The `mode` option only affects the newly created file. See [`fs.open()`][] for more details. ```mjs -import { appendFile } from 'fs'; +import { appendFile } from 'node:fs'; appendFile('message.txt', 'data to append', (err) => { if (err) throw err; @@ -1777,7 +1844,7 @@ appendFile('message.txt', 'data to append', (err) => { If `options` is a string, then it specifies the encoding: ```mjs -import { appendFile } from 'fs'; +import { appendFile } from 'node:fs'; appendFile('message.txt', 'data to append', 'utf8', callback); ``` @@ -1787,7 +1854,7 @@ for appending (using `fs.open()` or `fs.openSync()`). The file descriptor will not be closed automatically. ```mjs -import { open, close, appendFile } from 'fs'; +import { open, close, appendFile } from 'node:fs'; function closeFd(fd) { close(fd, (err) => { @@ -1840,7 +1907,7 @@ possible exception are given to the completion callback. See the POSIX chmod(2) documentation for more detail. ```mjs -import { chmod } from 'fs'; +import { chmod } from 'node:fs'; chmod('my_file.txt', 0o775, (err) => { if (err) throw err; @@ -1885,17 +1952,17 @@ specifies the permissions for others. For example, the octal value `0o765` means: -* The owner may read, write and execute the file. +* The owner may read, write, and execute the file. * The group may read and write the file. * Others may read and execute the file. When using raw numbers where file modes are expected, any value larger than `0o777` may result in platform-specific behaviors that are not supported to work -consistently. Therefore constants like `S_ISVTX`, `S_ISGID` or `S_ISUID` are not -exposed in `fs.constants`. +consistently. Therefore constants like `S_ISVTX`, `S_ISGID`, or `S_ISUID` are +not exposed in `fs.constants`. Caveats: on Windows only the write permission can be changed, and the -distinction among the permissions of group, owner or others is not +distinction among the permissions of group, owner, or others is not implemented. ### `fs.chown(path, uid, gid, callback)` @@ -1995,7 +2062,7 @@ OR of two or more values (e.g. copy-on-write, then the operation will fail. ```mjs -import { copyFile, constants } from 'fs'; +import { copyFile, constants } from 'node:fs'; function callback(err) { if (err) throw err; @@ -2107,8 +2174,8 @@ changes: * `fs` {Object|null} **Default:** `null` * Returns: {fs.ReadStream} -Unlike the 16 kb default `highWaterMark` for a {stream.Readable}, the stream -returned by this method has a default `highWaterMark` of 64 kb. +Unlike the 16 KiB default `highWaterMark` for a {stream.Readable}, the stream +returned by this method has a default `highWaterMark` of 64 KiB. `options` can include `start` and `end` values to read a range of bytes from the file instead of the entire file. Both `start` and `end` are inclusive and @@ -2138,7 +2205,7 @@ an override for `read` is required. If no `fd` is provided, an override for also required. ```mjs -import { createReadStream } from 'fs'; +import { createReadStream } from 'node:fs'; // Create a stream from some character device. const stream = createReadStream('/dev/input/event0'); @@ -2166,7 +2233,7 @@ file was created. An example to read the last 10 bytes of a file which is 100 bytes long: ```mjs -import { createReadStream } from 'fs'; +import { createReadStream } from 'node:fs'; createReadStream('sample.txt', { start: 90, end: 99 }); ``` @@ -2244,7 +2311,7 @@ By default, the stream will emit a `'close'` event after it has been destroyed. Set the `emitClose` option to `false` to change this behavior. By providing the `fs` option it is possible to override the corresponding `fs` -implementations for `open`, `write`, `writev` and `close`. Overriding `write()` +implementations for `open`, `write`, `writev`, and `close`. Overriding `write()` without `writev()` can reduce performance as some optimizations (`_writev()`) will be disabled. When providing the `fs` option, overrides for at least one of `write` and `writev` are required. If no `fd` option is supplied, an override @@ -2280,7 +2347,7 @@ Test whether or not the given path exists by checking with the file system. Then call the `callback` argument with either true or false: ```mjs -import { exists } from 'fs'; +import { exists } from 'node:fs'; exists('/etc/passwd', (e) => { console.log(e ? 'it exists' : 'no passwd!'); @@ -2294,7 +2361,7 @@ has only one boolean parameter. This is one reason `fs.access()` is recommended instead of `fs.exists()`. Using `fs.exists()` to check for the existence of a file before calling -`fs.open()`, `fs.readFile()` or `fs.writeFile()` is not recommended. Doing +`fs.open()`, `fs.readFile()`, or `fs.writeFile()` is not recommended. Doing so introduces a race condition, since other processes may change the file's state between the two calls. Instead, user code should open/read/write the file directly and handle the error raised if the file does not exist. @@ -2302,7 +2369,7 @@ file directly and handle the error raised if the file does not exist. **write (NOT RECOMMENDED)** ```mjs -import { exists, open, close } from 'fs'; +import { exists, open, close } from 'node:fs'; exists('myfile', (e) => { if (e) { @@ -2326,7 +2393,7 @@ exists('myfile', (e) => { **write (RECOMMENDED)** ```mjs -import { open, close } from 'fs'; +import { open, close } from 'node:fs'; open('myfile', 'wx', (err, fd) => { if (err) { if (err.code === 'EEXIST') { @@ -2350,7 +2417,7 @@ open('myfile', 'wx', (err, fd) => { **read (NOT RECOMMENDED)** ```mjs -import { open, close, exists } from 'fs'; +import { open, close, exists } from 'node:fs'; exists('myfile', (e) => { if (e) { @@ -2374,7 +2441,7 @@ exists('myfile', (e) => { **read (RECOMMENDED)** ```mjs -import { open, close } from 'fs'; +import { open, close } from 'node:fs'; open('myfile', 'r', (err, fd) => { if (err) { @@ -2400,7 +2467,7 @@ The "not recommended" examples above check for existence and then use the file; the "recommended" examples are better because they use the file directly and handle the error, if any. -In general, check for the existence of a file only if the file won’t be +In general, check for the existence of a file only if the file won't be used directly, for example when its existence is a signal from another process. @@ -2566,7 +2633,7 @@ For example, the following program retains only the first four bytes of the file: ```mjs -import { open, close, ftruncate } from 'fs'; +import { open, close, ftruncate } from 'node:fs'; function closeFd(fd) { close(fd, (err) => { @@ -2609,7 +2676,7 @@ changes: it will emit a deprecation warning with id DEP0013. - version: v4.1.0 pr-url: https://github.com/nodejs/node/pull/2387 - description: Numeric strings, `NaN` and `Infinity` are now allowed + description: Numeric strings, `NaN`, and `Infinity` are now allowed time specifiers. --> @@ -2807,6 +2874,8 @@ changes: * `mode` {string|integer} Not supported on Windows. **Default:** `0o777`. * `callback` {Function} * `err` {Error} + * `path` {string|undefined} Present only if a directory is created with + `recursive` set to `true`. Asynchronously creates a directory. @@ -2822,7 +2891,7 @@ property indicating whether parent directories should be created. Calling when `recursive` is false. ```mjs -import { mkdir } from 'fs'; +import { mkdir } from 'node:fs'; // Creates /tmp/a/apple, regardless of whether `/tmp` and /tmp/a exist. mkdir('/tmp/a/apple', { recursive: true }, (err) => { @@ -2834,7 +2903,7 @@ On Windows, using `fs.mkdir()` on the root directory even with recursion will result in an error: ```mjs -import { mkdir } from 'fs'; +import { mkdir } from 'node:fs'; mkdir('/', { recursive: true }, (err) => { // => [Error: EPERM: operation not permitted, mkdir 'C:\'] @@ -2886,7 +2955,7 @@ The optional `options` argument can be a string specifying an encoding, or an object with an `encoding` property specifying the character encoding to use. ```mjs -import { mkdtemp } from 'fs'; +import { mkdtemp } from 'node:fs'; mkdtemp(path.join(os.tmpdir(), 'foo-'), (err, directory) => { if (err) throw err; @@ -2899,11 +2968,11 @@ The `fs.mkdtemp()` method will append the six randomly selected characters directly to the `prefix` string. For instance, given a directory `/tmp`, if the intention is to create a temporary directory _within_ `/tmp`, the `prefix` must end with a trailing platform-specific path separator -(`require('path').sep`). +(`require('node:path').sep`). ```mjs -import { tmpdir } from 'os'; -import { mkdtemp } from 'fs'; +import { tmpdir } from 'node:os'; +import { mkdtemp } from 'node:fs'; // The parent directory for the new temporary directory const tmpDir = tmpdir(); @@ -2918,7 +2987,7 @@ mkdtemp(tmpDir, (err, directory) => { }); // This method is *CORRECT*: -import { sep } from 'path'; +import { sep } from 'node:path'; mkdtemp(`${tmpDir}${sep}`, (err, directory) => { if (err) throw err; console.log(directory); @@ -3022,7 +3091,7 @@ changes: written to. * `offset` {integer} The position in `buffer` to write the data to. * `length` {integer} The number of bytes to read. -* `position` {integer|bigint} Specifies where to begin reading from in the +* `position` {integer|bigint|null} Specifies where to begin reading from in the file. If `position` is `null` or `-1 `, data will be read from the current file position, and the file position will be updated. If `position` is an integer, the file position will be unchanged. @@ -3041,7 +3110,7 @@ number of bytes read is zero. If this method is invoked as its [`util.promisify()`][]ed version, it returns a promise for an `Object` with `bytesRead` and `buffer` properties. -### `fs.read(fd, [options,] callback)` +### `fs.read(fd[, options], callback)` * `fd` {integer} * `options` {Object} * `buffer` {Buffer|TypedArray|DataView} **Default:** `Buffer.alloc(16384)` + * `offset` {integer} **Default:** `0` + * `length` {integer} **Default:** `buffer.byteLength - offset` + * `position` {integer|bigint|null} **Default:** `null` +* `callback` {Function} + * `err` {Error} + * `bytesRead` {integer} + * `buffer` {Buffer} + +Similar to the [`fs.read()`][] function, this version takes an optional +`options` object. If no `options` object is specified, it will default with the +above values. + +### `fs.read(fd, buffer[, options], callback)` + + + +* `fd` {integer} +* `buffer` {Buffer|TypedArray|DataView} The buffer that the data will be + written to. +* `options` {Object} * `offset` {integer} **Default:** `0` * `length` {integer} **Default:** `buffer.byteLength - offset` * `position` {integer|bigint} **Default:** `null` @@ -3164,7 +3255,7 @@ changes: Asynchronously reads the entire contents of a file. ```mjs -import { readFile } from 'fs'; +import { readFile } from 'node:fs'; readFile('/etc/passwd', (err, data) => { if (err) throw err; @@ -3180,7 +3271,7 @@ If no encoding is specified, then the raw buffer is returned. If `options` is a string, then it specifies the encoding: ```mjs -import { readFile } from 'fs'; +import { readFile } from 'node:fs'; readFile('/etc/passwd', 'utf8', callback); ``` @@ -3191,7 +3282,7 @@ error will be returned. On FreeBSD, a representation of the directory's contents will be returned. ```mjs -import { readFile } from 'fs'; +import { readFile } from 'node:fs'; // macOS, Linux, and Windows readFile('', (err, data) => { @@ -3208,7 +3299,7 @@ It is possible to abort an ongoing request using an `AbortSignal`. If a request is aborted the callback is called with an `AbortError`: ```mjs -import { readFile } from 'fs'; +import { readFile } from 'node:fs'; const controller = new AbortController(); const signal = controller.signal; @@ -3246,8 +3337,8 @@ to read a complete file into memory. The additional read overhead can vary broadly on different systems and depends on the type of file being read. If the file type is not a regular file (a pipe for instance) and Node.js is unable to determine an actual file size, each read -operation will load on 64 KB of data. For regular files, each read will process -512 KB of data. +operation will load on 64 KiB of data. For regular files, each read will process +512 KiB of data. For applications that require as-fast-as-possible reading of file contents, it is better to use `fs.read()` directly and for application code to manage @@ -3303,7 +3394,7 @@ added: * `fd` {integer} * `buffers` {ArrayBufferView\[]} -* `position` {integer} +* `position` {integer|null} **Default:** `null` * `callback` {Function} * `err` {Error} * `bytesRead` {integer} @@ -3358,7 +3449,7 @@ changes: * `err` {Error} * `resolvedPath` {string|Buffer} -Asynchronously computes the canonical pathname by resolving `.`, `..` and +Asynchronously computes the canonical pathname by resolving `.`, `..`, and symbolic links. A canonical pathname is not necessarily unique. Hard links and bind mounts can @@ -3446,7 +3537,7 @@ given to the completion callback. See also: rename(2). ```mjs -import { rename } from 'fs'; +import { rename } from 'node:fs'; rename('oldFile.txt', 'newFile.txt', (err) => { if (err) throw err; @@ -3597,7 +3688,7 @@ Asynchronous stat(2). The callback gets two arguments `(err, stats)` where In case of an error, the `err.code` will be one of [Common System Errors][]. Using `fs.stat()` to check for the existence of a file before calling -`fs.open()`, `fs.readFile()` or `fs.writeFile()` is not recommended. +`fs.open()`, `fs.readFile()`, or `fs.writeFile()` is not recommended. Instead, user code should open/read/write the file directly and handle the error raised if the file is not available. @@ -3615,7 +3706,7 @@ For example, given the following directory structure: The next program will check for the stats of the given paths: ```mjs -import { stat } from 'fs'; +import { stat } from 'node:fs'; const pathsToCheck = ['./txtDir', './txtDir/file.txt']; @@ -3692,7 +3783,7 @@ changes: * `target` {string|Buffer|URL} * `path` {string|Buffer|URL} -* `type` {string} +* `type` {string|null} **Default:** `null` * `callback` {Function} * `err` {Error} @@ -3703,15 +3794,15 @@ See the POSIX symlink(2) documentation for more details. The `type` argument is only available on Windows and ignored on other platforms. It can be set to `'dir'`, `'file'`, or `'junction'`. If the `type` argument is -not set, Node.js will autodetect `target` type and use `'file'` or `'dir'`. If -the `target` does not exist, `'file'` will be used. Windows junction points +not a string, Node.js will autodetect `target` type and use `'file'` or `'dir'`. +If the `target` does not exist, `'file'` will be used. Windows junction points require the destination path to be absolute. When using `'junction'`, the `target` argument will automatically be normalized to absolute path. -Relative targets are relative to the link’s parent directory. +Relative targets are relative to the link's parent directory. ```mjs -import { symlink } from 'fs'; +import { symlink } from 'node:fs'; symlink('./mew', './mewtwo', callback); ``` @@ -3755,7 +3846,7 @@ given to the completion callback. A file descriptor can also be passed as the first argument. In this case, `fs.ftruncate()` is called. ```mjs -import { truncate } from 'fs'; +import { truncate } from 'node:fs'; // Assuming that 'path/file.txt' is a regular file. truncate('path/file.txt', (err) => { if (err) throw err; @@ -3764,7 +3855,7 @@ truncate('path/file.txt', (err) => { ``` ```cjs -const { truncate } = require('fs'); +const { truncate } = require('node:fs'); // Assuming that 'path/file.txt' is a regular file. truncate('path/file.txt', (err) => { if (err) throw err; @@ -3804,7 +3895,7 @@ Asynchronously removes a file or symbolic link. No arguments other than a possible exception are given to the completion callback. ```mjs -import { unlink } from 'fs'; +import { unlink } from 'node:fs'; // Assuming that 'path/file.txt' is a regular file. unlink('path/file.txt', (err) => { if (err) throw err; @@ -3861,7 +3952,7 @@ changes: it will emit a deprecation warning with id DEP0013. - version: v4.1.0 pr-url: https://github.com/nodejs/node/pull/2387 - description: Numeric strings, `NaN` and `Infinity` are now allowed + description: Numeric strings, `NaN`, and `Infinity` are now allowed time specifiers. --> @@ -3877,7 +3968,7 @@ The `atime` and `mtime` arguments follow these rules: * Values can be either numbers representing Unix epoch time in seconds, `Date`s, or a numeric string like `'123456789.0'`. -* If the value can not be converted to a number, or is `NaN`, `Infinity` or +* If the value can not be converted to a number, or is `NaN`, `Infinity`, or `-Infinity`, an `Error` will be thrown. ### `fs.watch(filename[, options][, listener])` @@ -3996,7 +4087,7 @@ guaranteed to be provided. Therefore, don't assume that `filename` argument is always provided in the callback, and have some fallback logic if it is `null`. ```mjs -import { watch } from 'fs'; +import { watch } from 'node:fs'; watch('somedir', (eventType, filename) => { console.log(`event type is: ${eventType}`); if (filename) { @@ -4044,7 +4135,7 @@ The `listener` gets two arguments the current stat object and the previous stat object: ```mjs -import { watchFile } from 'fs'; +import { watchFile } from 'node:fs'; watchFile('message.text', (curr, prev) => { console.log(`the current mtime is: ${curr.mtime}`); @@ -4078,15 +4169,11 @@ This happens when: * the file is deleted, followed by a restore * the file is renamed and then renamed a second time back to its original name -### `fs.write(fd, buffer[, offset[, length[, position]]], callback)` +### `fs.write(fd, buffer, offset[, length[, position]], callback)` * `fd` {integer} -* `buffer` {Buffer|TypedArray|DataView|string|Object} -* `offset` {integer} -* `length` {integer} -* `position` {integer} +* `buffer` {Buffer|TypedArray|DataView} +* `offset` {integer} **Default:** `0` +* `length` {integer} **Default:** `buffer.byteLength - offset` +* `position` {integer|null} **Default:** `null` * `callback` {Function} * `err` {Error} * `bytesWritten` {integer} * `buffer` {Buffer|TypedArray|DataView} -Write `buffer` to the file specified by `fd`. If `buffer` is a normal object, it -must have an own `toString` function property. +Write `buffer` to the file specified by `fd`. `offset` determines the part of the buffer to be written, and `length` is an integer specifying the number of bytes to write. @@ -4145,6 +4231,29 @@ On Linux, positional writes don't work when the file is opened in append mode. The kernel ignores the position argument and always appends the data to the end of the file. +### `fs.write(fd, buffer[, options], callback)` + + + +* `fd` {integer} +* `buffer` {Buffer|TypedArray|DataView} +* `options` {Object} + * `offset` {integer} **Default:** `0` + * `length` {integer} **Default:** `buffer.byteLength - offset` + * `position` {integer} **Default:** `null` +* `callback` {Function} + * `err` {Error} + * `bytesWritten` {integer} + * `buffer` {Buffer|TypedArray|DataView} + +Write `buffer` to the file specified by `fd`. + +Similar to the above `fs.write` function, this version takes an +optional `options` object. If no `options` object is specified, it will +default with the above values. + ### `fs.write(fd, string[, position[, encoding]], callback)` @@ -5038,7 +5147,7 @@ Similar to [`fs.readFile()`][], when the path is a directory, the behavior of `fs.readFileSync()` is platform-specific. ```mjs -import { readFileSync } from 'fs'; +import { readFileSync } from 'node:fs'; // macOS, Linux, and Windows readFileSync(''); @@ -5073,7 +5182,7 @@ object with an `encoding` property specifying the character encoding to use for the link path returned. If the `encoding` is set to `'buffer'`, the link path returned will be passed as a {Buffer} object. -### `fs.readSync(fd, buffer, offset, length, position)` +### `fs.readSync(fd, buffer, offset, length[, position])` * `fd` {integer} @@ -5119,7 +5228,7 @@ changes: * `options` {Object} * `offset` {integer} **Default:** `0` * `length` {integer} **Default:** `buffer.byteLength - offset` - * `position` {integer|bigint} **Default:** `null` + * `position` {integer|bigint|null} **Default:** `null` * Returns: {number} Returns the number of `bytesRead`. @@ -5140,7 +5249,7 @@ added: * `fd` {integer} * `buffers` {ArrayBufferView\[]} -* `position` {integer} +* `position` {integer|null} **Default:** `null` * Returns: {number} The number of bytes read. For detailed information, see the documentation of the asynchronous version of @@ -5362,7 +5471,7 @@ changes: * `target` {string|Buffer|URL} * `path` {string|Buffer|URL} -* `type` {string} +* `type` {string|null} **Default:** `null` Returns `undefined`. @@ -5414,7 +5523,7 @@ changes: protocol. - version: v4.1.0 pr-url: https://github.com/nodejs/node/pull/2387 - description: Numeric strings, `NaN` and `Infinity` are now allowed + description: Numeric strings, `NaN`, and `Infinity` are now allowed time specifiers. --> @@ -5470,15 +5579,11 @@ for more details. For detailed information, see the documentation of the asynchronous version of this API: [`fs.writeFile()`][]. -### `fs.writeSync(fd, buffer[, offset[, length[, position]]])` +### `fs.writeSync(fd, buffer, offset[, length[, position]])` * `fd` {integer} -* `buffer` {Buffer|TypedArray|DataView|string|Object} -* `offset` {integer} -* `length` {integer} -* `position` {integer} +* `buffer` {Buffer|TypedArray|DataView} +* `offset` {integer} **Default:** `0` +* `length` {integer} **Default:** `buffer.byteLength - offset` +* `position` {integer|null} **Default:** `null` * Returns: {number} The number of bytes written. -If `buffer` is a plain object, it must have an own (not inherited) `toString` -function property. +For detailed information, see the documentation of the asynchronous version of +this API: [`fs.write(fd, buffer...)`][]. + +### `fs.writeSync(fd, buffer[, options])` + + + +* `fd` {integer} +* `buffer` {Buffer|TypedArray|DataView} +* `options` {Object} + * `offset` {integer} **Default:** `0` + * `length` {integer} **Default:** `buffer.byteLength - offset` + * `position` {integer} **Default:** `null` +* Returns: {number} The number of bytes written. For detailed information, see the documentation of the asynchronous version of this API: [`fs.write(fd, buffer...)`][]. @@ -5513,10 +5632,6 @@ this API: [`fs.write(fd, buffer...)`][]. * `fd` {integer} -* `string` {string|Object} -* `position` {integer} -* `encoding` {string} +* `string` {string} +* `position` {integer|null} **Default:** `null` +* `encoding` {string} **Default:** `'utf8'` * Returns: {number} The number of bytes written. -If `string` is a plain object, it must have an own (not inherited) `toString` -function property. - For detailed information, see the documentation of the asynchronous version of this API: [`fs.write(fd, string...)`][]. @@ -5546,7 +5658,7 @@ added: v12.9.0 * `fd` {integer} * `buffers` {ArrayBufferView\[]} -* `position` {integer} +* `position` {integer|null} **Default:** `null` * Returns: {number} The number of bytes written. For detailed information, see the documentation of the asynchronous version of @@ -5569,7 +5681,7 @@ Created by [`fs.opendir()`][], [`fs.opendirSync()`][], or [`fsPromises.opendir()`][]. ```mjs -import { opendir } from 'fs/promises'; +import { opendir } from 'node:fs/promises'; try { const dir = await opendir('./'); @@ -5840,7 +5952,7 @@ support. If `filename` is provided, it will be provided as a {Buffer} if `filename` will be a UTF-8 string. ```mjs -import { watch } from 'fs'; +import { watch } from 'node:fs'; // Example when handled through fs.watch() listener watch('./tmp', { encoding: 'buffer' }, (eventType, filename) => { if (filename) { @@ -6048,7 +6160,7 @@ changes: A {fs.Stats} object provides information about a file. -Objects returned from [`fs.stat()`][], [`fs.lstat()`][] and [`fs.fstat()`][] and +Objects returned from [`fs.stat()`][], [`fs.lstat()`][], [`fs.fstat()`][], and their synchronous counterparts are of this type. If `bigint` in the `options` passed to those methods is true, the numeric values will be `bigint` instead of `number`, and the object will contain additional @@ -6229,6 +6341,9 @@ A numeric device identifier if the file represents a device. The size of the file in bytes. +If the underlying file system does not support getting the size of the file, +this will be `0`. + #### `stats.blksize` * {number|bigint} @@ -6509,16 +6624,20 @@ operations. #### FS constants -The following constants are exported by `fs.constants`. +The following constants are exported by `fs.constants` and `fsPromises.constants`. -Not every constant will be available on every operating system. +Not every constant will be available on every operating system; +this is especially important for Windows, where many of the POSIX specific +definitions are not available. +For portable applications it is recommended to check for their presence +before use. To use more than one constant, use the bitwise OR `|` operator. Example: ```mjs -import { open, constants } from 'fs'; +import { open, constants } from 'node:fs'; const { O_RDWR, @@ -6564,6 +6683,8 @@ The following constants are meant for use as the `mode` parameter passed to +The definitions are also available on Windows. + ##### File copy constants The following constants are meant for use with [`fs.copyFile()`][]. @@ -6592,6 +6713,8 @@ The following constants are meant for use with [`fs.copyFile()`][]. +The definitions are also available on Windows. + ##### File open constants The following constants are meant for use with `fs.open()`. @@ -6686,6 +6809,9 @@ The following constants are meant for use with `fs.open()`. +On Windows, only `O_APPEND`, `O_CREAT`, `O_EXCL`, `O_RDONLY`, `O_RDWR`, +`O_TRUNC`, `O_WRONLY`, and `UV_FS_O_FILEMAP` are available. + ##### File type constants The following constants are meant for use with the {fs.Stats} object's @@ -6730,6 +6856,9 @@ The following constants are meant for use with the {fs.Stats} object's +On Windows, only `S_IFCHR`, `S_IFDIR`, `S_IFLNK`, `S_IFMT`, and `S_IFREG`, +are available. + ##### File mode constants The following constants are meant for use with the {fs.Stats} object's @@ -6790,6 +6919,8 @@ The following constants are meant for use with the {fs.Stats} object's +On Windows, only `S_IRUSR` and `S_IWUSR` are available. + ## Notes ### Ordering of callback and promise-based operations @@ -6816,7 +6947,7 @@ It is important to correctly order the operations by awaiting the results of one before invoking the other: ```mjs -import { rename, stat } from 'fs/promises'; +import { rename, stat } from 'node:fs/promises'; const from = '/tmp/hello'; const to = '/tmp/world'; @@ -6831,7 +6962,7 @@ try { ``` ```cjs -const { rename, stat } = require('fs/promises'); +const { rename, stat } = require('node:fs/promises'); (async function(from, to) { try { @@ -6848,7 +6979,7 @@ Or, when using the callback APIs, move the `fs.stat()` call into the callback of the `fs.rename()` operation: ```mjs -import { rename, stat } from 'fs'; +import { rename, stat } from 'node:fs'; rename('/tmp/hello', '/tmp/world', (err) => { if (err) throw err; @@ -6860,7 +6991,7 @@ rename('/tmp/hello', '/tmp/world', (err) => { ``` ```cjs -const { rename, stat } = require('fs/promises'); +const { rename, stat } = require('node:fs/promises'); rename('/tmp/hello', '/tmp/world', (err) => { if (err) throw err; @@ -6885,7 +7016,7 @@ to the current working directory as determined by calling `process.cwd()`. Example using an absolute path on POSIX: ```mjs -import { open } from 'fs/promises'; +import { open } from 'node:fs/promises'; let fd; try { @@ -6899,7 +7030,7 @@ try { Example using a relative path on POSIX (relative to `process.cwd()`): ```mjs -import { open } from 'fs/promises'; +import { open } from 'node:fs/promises'; let fd; try { @@ -6916,11 +7047,11 @@ try { added: v7.6.0 --> -For most `fs` module functions, the `path` or `filename` argument may be passed -as a {URL} object using the `file:` protocol. +For most `node:fs` module functions, the `path` or `filename` argument may be +passed as a {URL} object using the `file:` protocol. ```mjs -import { readFileSync } from 'fs'; +import { readFileSync } from 'node:fs'; readFileSync(new URL('file:///tmp/hello')); ``` @@ -6934,7 +7065,7 @@ On Windows, `file:` {URL}s with a host name convert to UNC paths, while `file:` with no host name and no drive letter will result in an error: ```mjs -import { readFileSync } from 'fs'; +import { readFileSync } from 'node:fs'; // On Windows : // - WHATWG file URLs with hostname convert to UNC path @@ -6958,7 +7089,7 @@ On all other platforms, `file:` {URL}s with a host name are unsupported and will result in an error: ```mjs -import { readFileSync } from 'fs'; +import { readFileSync } from 'node:fs'; // On other platforms: // - WHATWG file URLs with hostname are unsupported @@ -6975,7 +7106,7 @@ A `file:` {URL} having encoded slash characters will result in an error on all platforms: ```mjs -import { readFileSync } from 'fs'; +import { readFileSync } from 'node:fs'; // On Windows readFileSync(new URL('file:///C:/p/a/t/h/%2F')); @@ -6993,7 +7124,7 @@ readFileSync(new URL('file:///p/a/t/h/%2f')); On Windows, `file:` {URL}s having encoded backslash will result in an error: ```mjs -import { readFileSync } from 'fs'; +import { readFileSync } from 'node:fs'; // On Windows readFileSync(new URL('file:///C:/path/%5C')); @@ -7013,8 +7144,8 @@ be relative or absolute: Example using an absolute path on POSIX: ```mjs -import { open } from 'fs/promises'; -import { Buffer } from 'buffer'; +import { open } from 'node:fs/promises'; +import { Buffer } from 'node:buffer'; let fd; try { @@ -7054,7 +7185,7 @@ are completed. Failure to do so will result in a memory leak that will eventually cause an application to crash. ```mjs -import { open, close, fstat } from 'fs'; +import { open, close, fstat } from 'node:fs'; function closeFd(fd) { close(fd, (err) => { @@ -7088,7 +7219,7 @@ that resources are not leaked. However, it is still required that they are closed when operations are completed: ```mjs -import { open } from 'fs/promises'; +import { open } from 'node:fs/promises'; let file; try { @@ -7190,7 +7321,7 @@ fs.open('', 'a+', (err, fd) => { ``` On Windows, opening an existing hidden file using the `'w'` flag (either -through `fs.open()` or `fs.writeFile()` or `fsPromises.open()`) will fail with +through `fs.open()`, `fs.writeFile()`, or `fsPromises.open()`) will fail with `EPERM`. Existing hidden files can be opened for writing with the `'r+'` flag. A call to `fs.ftruncate()` or `filehandle.truncate()` can be used to reset @@ -7198,6 +7329,7 @@ the file contents. [#25741]: https://github.com/nodejs/node/issues/25741 [Common System Errors]: errors.md#common-system-errors +[FS constants]: #fs-constants [File access constants]: #file-access-constants [MDN-Date]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date [MDN-Number]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type @@ -7211,6 +7343,7 @@ the file contents. [`ReadDirectoryChangesW`]: https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-readdirectorychangesw [`UV_THREADPOOL_SIZE`]: cli.md#uv_threadpool_sizesize [`event ports`]: https://illumos.org/man/port_create +[`filehandle.createWriteStream()`]: #filehandlecreatewritestreamoptions [`filehandle.writeFile()`]: #filehandlewritefiledata-options [`fs.access()`]: #fsaccesspath-mode-callback [`fs.accessSync()`]: #fsaccesssyncpath-mode diff --git a/doc/api/globals.md b/doc/api/globals.md index 44984767ec559f..1c621890d35f16 100644 --- a/doc/api/globals.md +++ b/doc/api/globals.md @@ -56,7 +56,7 @@ changes: description: Added the new optional reason argument. --> -* `reason` {any} An optional reason, retrievable on the `AbortSignal`s +* `reason` {any} An optional reason, retrievable on the `AbortSignal`'s `reason` property. Triggers the abort signal, causing the `abortController.signal` to emit @@ -179,6 +179,14 @@ ac.abort(new Error('boom!')); console.log(ac.signal.reason); // Error('boom!'); ``` +#### `abortSignal.throwIfAborted()` + + + +If `abortSignal.aborted` is `true`, throws `abortSignal.reason`. + ## Class: `Buffer` + +> Stability: 1 - Experimental. Enable this API with the +> [`--experimental-global-customevent`][] CLI flag. + + + +A browser-compatible implementation of the [`CustomEvent` Web API][]. ## `Event` @@ -416,6 +437,10 @@ This variable may appear to be global but is not. See [`module`][]. ## `performance` + + The [`perf_hooks.performance`][] object. ## `process` @@ -537,7 +562,7 @@ added: v16.15.0 A browser-compatible implementation of {SubtleCrypto}. This global is available only if the Node.js binary was compiled with including support for the -`crypto` module. +`node:crypto` module. ## `TextDecoder` @@ -595,8 +620,10 @@ The object that acts as the namespace for all W3C [Web Crypto API]: webcrypto.md [`--experimental-fetch`]: cli.md#--experimental-fetch +[`--experimental-global-customevent`]: cli.md#--experimental-global-customevent [`--experimental-global-webcrypto`]: cli.md#--experimental-global-webcrypto [`AbortController`]: https://developer.mozilla.org/en-US/docs/Web/API/AbortController +[`CustomEvent` Web API]: https://dom.spec.whatwg.org/#customevent [`EventTarget` and `Event` API]: events.md#eventtarget-and-event-api [`MessageChannel`]: worker_threads.md#class-messagechannel [`MessageEvent`]: https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent/MessageEvent diff --git a/doc/api/http.md b/doc/api/http.md index 8d2fb5b0eb2348..fdd9688ea3a82b 100644 --- a/doc/api/http.md +++ b/doc/api/http.md @@ -6,7 +6,7 @@ -To use the HTTP server and client one must `require('http')`. +To use the HTTP server and client one must `require('node:http')`. The HTTP interfaces in Node.js are designed to support many features of the protocol which have been traditionally difficult to use. @@ -186,7 +186,7 @@ of these values set to their respective defaults. To configure any of them, a custom [`http.Agent`][] instance must be created. ```js -const http = require('http'); +const http = require('node:http'); const keepAliveAgent = new http.Agent({ keepAlive: true }); options.agent = keepAliveAgent; http.request(options, onResponseCallback); @@ -391,7 +391,7 @@ agent. Do not modify. added: v0.1.17 --> -* Extends: {Stream} +* Extends: {http.OutgoingMessage} This object is created internally and returned from [`http.request()`][]. It represents an _in-progress_ request whose header has already been queued. The @@ -434,6 +434,15 @@ deprecated: v16.12.0 Emitted when the request has been aborted by the client. This event is only emitted on the first call to `abort()`. +### Event: `'close'` + + + +Indicates that the request is completed, or its underlying connection was +terminated prematurely (before the response completion). + ### Event: `'connect'` + +Emitted when the request has been sent. More specifically, this event is emitted +when the last segment of the response headers and body have been handed off to +the operating system for transmission over the network. It does not imply that +the server has received anything yet. + ### Event: `'information'` + +See [`writable.cork()`][]. + ### `request.end([data[, encoding]][, callback])` + +* Returns: {string\[]} + +Returns an array containing the unique names of the current outgoing headers. +All header names are lowercase. + +```js +request.setHeader('Foo', 'bar'); +request.setHeader('Cookie', ['foo=bar', 'bar=baz']); + +const headerNames = request.getHeaderNames(); +// headerNames === ['foo', 'cookie'] +``` + +### `request.getHeaders()` + + + +* Returns: {Object} + +Returns a shallow copy of the current outgoing headers. Since a shallow copy +is used, array values may be mutated without additional calls to various +header-related http module methods. The keys of the returned object are the +header names and the values are the respective header values. All header names +are lowercase. + +The object returned by the `response.getHeaders()` method _does not_ +prototypically inherit from the JavaScript `Object`. This means that typical +`Object` methods such as `obj.toString()`, `obj.hasOwnProperty()`, and others +are not defined and _will not work_. + +```js +request.setHeader('Foo', 'bar'); +request.setHeader('Cookie', ['foo=bar', 'bar=baz']); + +const headers = response.getHeaders(); +// headers === { foo: 'bar', 'cookie': ['foo=bar', 'bar=baz'] } +``` + ### `request.getRawHeaderNames()` + +* `name` {string} +* Returns: {boolean} + +Returns `true` if the header identified by `name` is currently set in the +outgoing headers. The header name matching is case-insensitive. + +```js +const hasContentType = request.hasHeader('content-type'); +``` + ### `request.maxHeadersCount` * {number} **Default:** `2000` @@ -910,7 +1002,7 @@ might be reused. But if server closes connection at unfortunate time, client may run into a 'ECONNRESET' error. ```js -const http = require('http'); +const http = require('node:http'); // Server has a 5 seconds keep-alive timeout by default http @@ -934,7 +1026,7 @@ By marking a request whether it reused socket or not, we can do automatic error retry base on it. ```js -const http = require('http'); +const http = require('node:http'); const agent = new http.Agent({ keepAlive: true }); function retriableRequest() { @@ -979,6 +1071,17 @@ or request.setHeader('Cookie', ['type=ninja', 'language=javascript']); ``` +When the value is a string an exception will be thrown if it contains +characters outside the `latin1` encoding. + +If you need to pass UTF-8 characters in the value please encode the value +using the [RFC 8187][] standard. + +```js +const filename = 'Rock 🎵.txt'; +request.setHeader('Content-Disposition', `attachment; filename*=utf-8''${encodeURIComponent(filename)}`); +``` + ### `request.setNoDelay([noDelay])` + +See [`writable.uncork()`][]. + ### `request.writableEnded` + +* `request` {http.IncomingMessage} Arguments for the HTTP request, as it is in + the [`'request'`][] event +* `socket` {stream.Duplex} Network socket between the server and client + +When the number of requests on a socket reaches the threshold of +`server.maxRequestsPerSocket`, the server will drop new requests +and emit `'dropRequest'` event instead, then send `503` to client. + ### Event: `'request'` -* Extends: {Stream} +* Extends: {http.OutgoingMessage} This object is created internally by an HTTP server, not by the user. It is passed as the second parameter to the [`'request'`][] event. @@ -1834,7 +1961,7 @@ because of how the protocol parser attaches to the socket. After `response.end()`, the property is nulled. ```js -const http = require('http'); +const http = require('node:http'); const server = http.createServer((req, res) => { const ip = res.socket.remoteAddress; const port = res.socket.remotePort; @@ -1935,7 +2062,7 @@ it will switch to implicit header mode and flush the implicit headers. This sends a chunk of the response body. This method may be called multiple times to provide successive parts of the body. -In the `http` module, the response body is omitted when the +In the `node:http` module, the response body is omitted when the request is a HEAD request. Similarly, the `204` and `304` responses _must not_ include a message body. @@ -2080,7 +2207,7 @@ changes: An `IncomingMessage` object is created by [`http.Server`][] or [`http.ClientRequest`][] and passed as the first argument to the [`'request'`][] and [`'response'`][] event respectively. It may be used to access response -status, headers and data. +status, headers, and data. Different from its `socket` value which is a subclass of {stream.Duplex}, the `IncomingMessage` itself extends {stream.Readable} and is created separately to @@ -2102,9 +2229,14 @@ Emitted when the request has been aborted. -Indicates that the underlying connection was closed. +Emitted when the request has been completed. ### `message.aborted` @@ -2204,7 +2336,7 @@ Key-value pairs of header names and values. Header names are lower-cased. // { 'user-agent': 'curl/7.22.0', // host: '127.0.0.1:8000', // accept: '*/*' } -console.log(request.headers); +console.log(request.getHeaders()); ``` Duplicates in raw headers are handled in the following ways, depending on the @@ -2215,8 +2347,28 @@ header name: `last-modified`, `location`, `max-forwards`, `proxy-authorization`, `referer`, `retry-after`, `server`, or `user-agent` are discarded. * `set-cookie` is always an array. Duplicates are added to the array. -* For duplicate `cookie` headers, the values are joined together with '; '. -* For all other headers, the values are joined together with ', '. +* For duplicate `cookie` headers, the values are joined together with `; `. +* For all other headers, the values are joined together with `, `. + +### `message.headersDistinct` + + + +* {Object} + +Similar to [`message.headers`][], but there is no join logic and the values are +always arrays of strings, even for headers received just once. + +```js +// Prints something like: +// +// { 'user-agent': ['curl/7.22.0'], +// host: ['127.0.0.1:8000'], +// accept: ['*/*'] } +console.log(request.headersDistinct); +``` ### `message.httpVersion` @@ -2350,6 +2502,18 @@ added: v0.3.0 The request/response trailers object. Only populated at the `'end'` event. +### `message.trailersDistinct` + + + +* {Object} + +Similar to [`message.trailers`][], but there is no join logic and the values are +always arrays of strings, even for headers received just once. +Only populated at the `'end'` event. + ### `message.url` -Emitted when `outgoingMessage.end` was called. +Emitted after `outgoingMessage.end()` is called. When the event is emitted, all data has been processed but not necessarily completely flushed. @@ -2444,11 +2608,11 @@ added: v0.3.0 Adds HTTP trailers (headers but at the end of the message) to the message. -Trailers are **only** be emitted if the message is chunked encoded. If not, -the trailer will be silently discarded. +Trailers will **only** be emitted if the message is chunked encoded. If not, +the trailers will be silently discarded. -HTTP requires the `Trailer` header to be sent to emit trailers, -with a list of header fields in its value, e.g. +HTTP requires the `Trailer` header to be sent to emit trailers, +with a list of header field names in its value, e.g. ```js message.writeHead(200, { 'Content-Type': 'text/plain', @@ -2461,6 +2625,28 @@ message.end(); Attempting to set a header field name or value that contains invalid characters will result in a `TypeError` being thrown. +### `outgoingMessage.appendHeader(name, value)` + + + +* `name` {string} Header name +* `value` {string|string\[]} Header value +* Returns: {this} + +Append a single header value for the header object. + +If the value is an array, this is equivalent of calling this method multiple +times. + +If there were no previous value for the header, this is equivalent of calling +[`outgoingMessage.setHeader(name, value)`][]. + +Depending of the value of `options.uniqueHeaders` when the client request or the +server were created, this will end up in the header being sent multiple times or +a single time with values joined using `; `. + ### `outgoingMessage.connection` See [`writable.cork()`][]. @@ -2508,14 +2696,14 @@ changes: Finishes the outgoing message. If any parts of the body are unsent, it will flush them to the underlying system. If the message is chunked, it will -send the terminating chunk `0\r\n\r\n`, and send the trailer (if any). +send the terminating chunk `0\r\n\r\n`, and send the trailers (if any). -If `chunk` is specified, it is equivalent to call +If `chunk` is specified, it is equivalent to calling `outgoingMessage.write(chunk, encoding)`, followed by `outgoingMessage.end(callback)`. -If `callback` is provided, it will be called when the message is finished. -(equivalent to the callback to event `finish`) +If `callback` is provided, it will be called when the message is finished +(equivalent to a listener of the `'finish'` event). ### `outgoingMessage.flushHeaders()` @@ -2523,7 +2711,7 @@ If `callback` is provided, it will be called when the message is finished. added: v1.6.0 --> -Compulsorily flushes the message headers +Flushes the message headers. For efficiency reason, Node.js normally buffers the message headers until `outgoingMessage.end()` is called or the first chunk of message data @@ -2532,7 +2720,7 @@ packet. It is usually desired (it saves a TCP round-trip), but not when the first data is not sent until possibly much later. `outgoingMessage.flushHeaders()` -bypasses the optimization and kickstarts the request. +bypasses the optimization and kickstarts the message. ### `outgoingMessage.getHeader(name)` @@ -2543,24 +2731,24 @@ added: v0.4.0 * `name` {string} Name of header * Returns {string | undefined} -Gets the value of HTTP header with the given name. If such a name doesn't -exist in message, it will be `undefined`. +Gets the value of the HTTP header with the given name. If that header is not +set, the returned value will be `undefined`. ### `outgoingMessage.getHeaderNames()` * Returns {string\[]} -Returns an array of names of headers of the outgoing outgoingMessage. All -names are lowercase. +Returns an array containing the unique names of the current outgoing headers. +All names are lowercase. ### `outgoingMessage.getHeaders()` * Returns: {Object} @@ -2572,8 +2760,8 @@ object are the header names and the values are the respective header values. All header names are lowercase. The object returned by the `outgoingMessage.getHeaders()` method does -not prototypically inherit from the JavaScript Object. This means that -typical Object methods such as `obj.toString()`, `obj.hasOwnProperty()`, +not prototypically inherit from the JavaScript `Object`. This means that +typical `Object` methods such as `obj.toString()`, `obj.hasOwnProperty()`, and others are not defined and will not work. ```js @@ -2587,7 +2775,7 @@ const headers = outgoingMessage.getHeaders(); ### `outgoingMessage.hasHeader(name)` * `name` {string} @@ -2616,21 +2804,20 @@ Read-only. `true` if the headers were sent, otherwise `false`. added: v9.0.0 --> -Overrides the pipe method of legacy `Stream` which is the parent class of -`http.outgoingMessage`. - -Since `OutgoingMessage` should be a write-only stream, -call this function will throw an `Error`. Thus, it disabled the pipe method -it inherits from `Stream`. +Overrides the `stream.pipe()` method inherited from the legacy `Stream` class +which is the parent class of `http.OutgoingMessage`. -The User should not call this function directly. +Calling this method will throw an `Error` because `outgoingMessage` is a +write-only stream. -### `outgoingMessage.removeHeader()` +### `outgoingMessage.removeHeader(name)` +* `name` {string} Header name + Removes a header that is queued for implicit sending. ```js @@ -2644,10 +2831,12 @@ added: v0.4.0 --> * `name` {string} Header name -* `value` {string} Header value +* `value` {any} Header value * Returns: {this} -Sets a single header value for the header object. +Sets a single header value. If the header already exists in the to-be-sent +headers, its value will be replaced. Use an array of strings to send multiple +headers with the same name. ### `outgoingMessage.setTimeout(msesc[, callback])` @@ -2679,7 +2868,9 @@ After calling `outgoingMessage.end()`, this property will be nulled. ### `outgoingMessage.uncork()` See [`writable.uncork()`][] @@ -2687,71 +2878,67 @@ See [`writable.uncork()`][] ### `outgoingMessage.writableCorked` * {number} -This `outgoingMessage.writableCorked` will return the time how many -`outgoingMessage.cork()` have been called. +The number of times `outgoingMessage.cork()` has been called. ### `outgoingMessage.writableEnded` * {boolean} -Readonly, `true` if `outgoingMessage.end()` has been called. Noted that -this property does not reflect whether the data has been flush. For that -purpose, use `message.writableFinished` instead. +Is `true` if `outgoingMessage.end()` has been called. This property does +not indicate whether the data has been flushed. For that purpose, use +`message.writableFinished` instead. ### `outgoingMessage.writableFinished` * {boolean} -Readonly. `true` if all data has been flushed to the underlying system. +Is `true` if all data has been flushed to the underlying system. ### `outgoingMessage.writableHighWaterMark` * {number} -This `outgoingMessage.writableHighWaterMark` will be the `highWaterMark` of -underlying socket if socket exists. Else, it would be the default -`highWaterMark`. - -`highWaterMark` is the maximum amount of data that can be potentially -buffered by the socket. +The `highWaterMark` of the underlying socket if assigned. Otherwise, the default +buffer level when [`writable.write()`][] starts returning false (`16384`). ### `outgoingMessage.writableLength` * {number} -Readonly, This `outgoingMessage.writableLength` contains the number of -bytes (or objects) in the buffer ready to send. +The number of buffered bytes. ### `outgoingMessage.writableObjectMode` * {boolean} -Readonly, always returns `false`. +Always `false`. ### `outgoingMessage.write(chunk[, encoding][, callback])` @@ -2759,7 +2946,7 @@ Readonly, always returns `false`. added: v0.1.29 changes: - version: v0.11.6 - description: add `callback` argument. + description: The `callback` argument was added. --> * `chunk` {string | Buffer} @@ -2767,35 +2954,17 @@ changes: * `callback` {Function} * Returns {boolean} -If this method is called and the header is not sent, it will call -`this._implicitHeader` to flush implicit header. -If the message should not have a body (indicated by `this._hasBody`), -the call is ignored and `chunk` will not be sent. It could be useful -when handling a particular message which must not include a body. -e.g. response to `HEAD` request, `204` and `304` response. - -`chunk` can be a string or a buffer. When `chunk` is a string, the -`encoding` parameter specifies how to encode `chunk` into a byte stream. -`callback` will be called when the `chunk` is flushed. - -If the message is transferred in chucked encoding -(indicated by `this.chunkedEncoding`), `chunk` will be flushed as -one chunk among a stream of chunks. Otherwise, it will be flushed as the -body of message. - -This method handles the raw body of the HTTP message and has nothing to do -with higher-level multi-part body encodings that may be used. +Sends a chunk of the body. This method can be called multiple times. -If it is the first call to this method of a message, it will send the -buffered header first, then flush the `chunk` as described above. +The `encoding` argument is only relevant when `chunk` is a string. Defaults to +`'utf8'`. -The second and successive calls to this method will assume the data -will be streamed and send the new data separately. It means that the response -is buffered up to the first chunk of the body. +The `callback` argument is optional and will be called when this chunk of data +is flushed. Returns `true` if the entire data was flushed successfully to the kernel buffer. Returns `false` if all or part of the data was queued in the user -memory. Event `drain` will be emitted when the buffer is free again. +memory. The `'drain'` event will be emitted when the buffer is free again. ## `http.METHODS` @@ -2858,7 +3027,7 @@ changes: * `maxHeaderSize` {number} Optionally overrides the value of [`--max-http-header-size`][] for requests received by this server, i.e. the maximum length of request headers in bytes. - **Default:** 16384 (16 KB). + **Default:** 16384 (16 KiB). * `noDelay` {boolean} If set to `true`, it disables the use of Nagle's algorithm immediately after a new incoming connection is received. **Default:** `false`. @@ -2869,6 +3038,9 @@ changes: * `keepAliveInitialDelay` {number} If set to a positive number, it sets the initial delay before the first keepalive probe is sent on an idle socket. **Default:** `0`. + * `uniqueHeaders` {Array} A list of response headers that should be sent only + once. If the header's value is an array, the items will be joined + using `; `. * `requestListener` {Function} @@ -2880,7 +3052,7 @@ The `requestListener` is a function which is automatically added to the [`'request'`][] event. ```cjs -const http = require('http'); +const http = require('node:http'); // Create a local server to receive data from const server = http.createServer((req, res) => { @@ -2894,7 +3066,7 @@ server.listen(8000); ``` ```cjs -const http = require('http'); +const http = require('node:http'); // Create a local server to receive data from const server = http.createServer(); @@ -3014,7 +3186,7 @@ added: * {number} Read-only property specifying the maximum allowed size of HTTP headers in bytes. -Defaults to 16 KB. Configurable using the [`--max-http-header-size`][] CLI +Defaults to 16 KiB. Configurable using the [`--max-http-header-size`][] CLI option. This can be overridden for servers and client requests by passing the @@ -3089,7 +3261,7 @@ changes: * `maxHeaderSize` {number} Optionally overrides the value of [`--max-http-header-size`][] (the maximum length of response headers in bytes) for responses received from the server. - **Default:** 16384 (16 KB). + **Default:** 16384 (16 KiB). * `method` {string} A string specifying the HTTP request method. **Default:** `'GET'`. * `path` {string} Request path. Should include query string if any. @@ -3101,12 +3273,15 @@ changes: * `protocol` {string} Protocol to use. **Default:** `'http:'`. * `setHost` {boolean}: Specifies whether or not to automatically add the `Host` header. Defaults to `true`. + * `signal` {AbortSignal}: An AbortSignal that may be used to abort an ongoing + request. * `socketPath` {string} Unix domain socket. Cannot be used if one of `host` or `port` is specified, as those specify a TCP Socket. * `timeout` {number}: A number specifying the socket timeout in milliseconds. This will set the timeout before the socket is connected. - * `signal` {AbortSignal}: An AbortSignal that may be used to abort an ongoing - request. + * `uniqueHeaders` {Array} A list of request headers that should be sent + only once. If the header's value is an array, the items will be joined + using `; `. * `callback` {Function} * Returns: {http.ClientRequest} @@ -3130,7 +3305,7 @@ class. The `ClientRequest` instance is a writable stream. If one needs to upload a file with a POST request, then write to the `ClientRequest` object. ```js -const http = require('http'); +const http = require('node:http'); const postData = JSON.stringify({ 'msg': 'Hello World!' @@ -3329,7 +3504,7 @@ Examples: Example: ```js -const { validateHeaderName } = require('http'); +const { validateHeaderName } = require('node:http'); try { validateHeaderName(''); @@ -3363,7 +3538,7 @@ or response. The HTTP module will automatically validate such headers. Examples: ```js -const { validateHeaderValue } = require('http'); +const { validateHeaderValue } = require('node:http'); try { validateHeaderValue('x-my-header', undefined); @@ -3382,6 +3557,7 @@ try { } ``` +[RFC 8187]: https://www.rfc-editor.org/rfc/rfc8187.txt [`'checkContinue'`]: #event-checkcontinue [`'finish'`]: #event-finish [`'request'`]: #event-request @@ -3411,11 +3587,13 @@ try { [`http.request()`]: #httprequestoptions-callback [`message.headers`]: #messageheaders [`message.socket`]: #messagesocket +[`message.trailers`]: #messagetrailers [`net.Server.close()`]: net.md#serverclosecallback [`net.Server`]: net.md#class-netserver [`net.Socket`]: net.md#class-netsocket [`net.createConnection()`]: net.md#netcreateconnectionoptions-connectlistener [`new URL()`]: url.md#new-urlinput-base +[`outgoingMessage.setHeader(name, value)`]: #outgoingmessagesetheadername-value [`outgoingMessage.socket`]: #outgoingmessagesocket [`removeHeader(name)`]: #requestremoveheadername [`request.destroy()`]: #requestdestroyerror @@ -3453,4 +3631,5 @@ try { [`writable.destroy()`]: stream.md#writabledestroyerror [`writable.destroyed`]: stream.md#writabledestroyed [`writable.uncork()`]: stream.md#writableuncork +[`writable.write()`]: stream.md#writablewritechunk-encoding-callback [initial delay]: net.md#socketsetkeepaliveenable-initialdelay diff --git a/doc/api/http2.md b/doc/api/http2.md index d213572f873561..be347b3d6b13d7 100644 --- a/doc/api/http2.md +++ b/doc/api/http2.md @@ -21,25 +21,25 @@ changes: -The `http2` module provides an implementation of the [HTTP/2][] protocol. It -can be accessed using: +The `node:http2` module provides an implementation of the [HTTP/2][] protocol. +It can be accessed using: ```js -const http2 = require('http2'); +const http2 = require('node:http2'); ``` ## Determining if crypto support is unavailable It is possible for Node.js to be built without including support for the -`crypto` module. In such cases, attempting to `import` from `http2` or -calling `require('http2')` will result in an error being thrown. +`node:crypto` module. In such cases, attempting to `import` from `node:http2` or +calling `require('node:http2')` will result in an error being thrown. When using CommonJS, the error thrown can be caught using try/catch: ```cjs let http2; try { - http2 = require('http2'); + http2 = require('node:http2'); } catch (err) { console.log('http2 support is disabled!'); } @@ -52,12 +52,12 @@ a preload module). When using ESM, if there is a chance that the code may be run on a build of Node.js where crypto support is not enabled, consider using the -`import()` function instead of the lexical `import` keyword: +[`import()`][] function instead of the lexical `import` keyword: ```mjs let http2; try { - http2 = await import('http2'); + http2 = await import('node:http2'); } catch (err) { console.log('http2 support is disabled!'); } @@ -83,8 +83,8 @@ Since there are no browsers known that support with browser clients. ```js -const http2 = require('http2'); -const fs = require('fs'); +const http2 = require('node:http2'); +const fs = require('node:fs'); const server = http2.createSecureServer({ key: fs.readFileSync('localhost-privkey.pem'), @@ -116,8 +116,8 @@ openssl req -x509 -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' \ The following illustrates an HTTP/2 client: ```js -const http2 = require('http2'); -const fs = require('fs'); +const http2 = require('node:http2'); +const fs = require('node:fs'); const client = http2.connect('https://localhost:8443', { ca: fs.readFileSync('localhost-cert.pem') }); @@ -318,7 +318,7 @@ added: v8.4.0 The `'stream'` event is emitted when a new `Http2Stream` is created. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); session.on('stream', (stream, headers, flags) => { const method = headers[':method']; const path = headers[':path']; @@ -338,7 +338,7 @@ and would instead register a handler for the `'stream'` event emitted by the `http2.createSecureServer()`, respectively, as in the example below: ```js -const http2 = require('http2'); +const http2 = require('node:http2'); // Create an unencrypted HTTP/2 server const server = http2.createServer(); @@ -597,7 +597,7 @@ The `windowSize` is the total window size to set, not the delta. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const server = http2.createServer(); const expectedWindowSize = 2 ** 20; @@ -741,7 +741,7 @@ added: v9.4.0 Submits an `ALTSVC` frame (as defined by [RFC 7838][]) to the connected client. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const server = http2.createServer(); server.on('session', (session) => { @@ -807,7 +807,7 @@ to advertise the set of origins for which the server is capable of providing authoritative responses. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const options = getSecureOptionsSomehow(); const server = http2.createSecureServer(options); server.on('stream', (stream) => { @@ -834,7 +834,7 @@ Alternatively, the `origins` option may be used when creating a new HTTP/2 server using the `http2.createSecureServer()` method: ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const options = getSecureOptionsSomehow(); options.origins = ['https://example.com', 'https://example.org']; const server = http2.createSecureServer(options); @@ -868,7 +868,7 @@ ID. If no `origin` is provided in the `ALTSVC` frame, `origin` will be an empty string. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const client = http2.connect('https://example.org'); client.on('altsvc', (alt, origin, streamId) => { @@ -892,7 +892,7 @@ the client. The event is emitted with an array of `origin` strings. The origins. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const client = http2.connect('https://example.org'); client.on('origin', (origins) => { @@ -945,7 +945,7 @@ This method is only available if `http2session.type` is equal to `http2.constants.NGHTTP2_SESSION_CLIENT`. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const clientSession = http2.connect('https://localhost:1234'); const { HTTP2_HEADER_PATH, @@ -1009,10 +1009,9 @@ All `Http2Stream` instances are [`Duplex`][] streams. The `Writable` side of the `Duplex` is used to send data to the connected peer, while the `Readable` side is used to receive data sent by the connected peer. -The default text character encoding for all `Http2Stream`s is UTF-8. As a best -practice, it is recommended that when using an `Http2Stream` to send text, -the `'content-type'` header should be set and should identify the character -encoding used. +The default text character encoding for an `Http2Stream` is UTF-8. When using an +`Http2Stream` to send text, use the `'content-type'` header to set the character +encoding. ```js stream.respond({ @@ -1354,7 +1353,7 @@ added: v8.4.0 * `callback` {Function} ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const client = http2.connect('http://example.org:8000'); const { NGHTTP2_CANCEL } = http2.constants; const req = client.request({ ':path': '/' }); @@ -1403,7 +1402,7 @@ in order to keep the `Http2Stream` open after the final `DATA` frame so that trailers can be sent. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const server = http2.createServer(); server.on('stream', (stream) => { stream.respond(undefined, { waitForTrailers: true }); @@ -1446,6 +1445,9 @@ the client should send the request body. added: v8.4.0 --> +* `headers` {HTTP/2 Headers Object} +* `flags` {number} + The `'headers'` event is emitted when an additional block of headers is received for a stream, such as when a block of `1xx` informational headers is received. The listener callback is passed the [HTTP/2 Headers Object][] and flags @@ -1463,6 +1465,9 @@ stream.on('headers', (headers, flags) => { added: v8.4.0 --> +* `headers` {HTTP/2 Headers Object} +* `flags` {number} + The `'push'` event is emitted when response headers for a Server Push stream are received. The listener callback is passed the [HTTP/2 Headers Object][] and flags associated with the headers. @@ -1479,13 +1484,16 @@ stream.on('push', (headers, flags) => { added: v8.4.0 --> +* `headers` {HTTP/2 Headers Object} +* `flags` {number} + The `'response'` event is emitted when a response `HEADERS` frame has been received for this stream from the connected HTTP/2 server. The listener is invoked with two arguments: an `Object` containing the received [HTTP/2 Headers Object][], and flags associated with the headers. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const client = http2.connect('https://localhost'); const req = client.request({ ':path': '/' }); req.on('response', (headers, flags) => { @@ -1565,7 +1573,7 @@ instance created for the push stream passed as the second argument, or an `Error` passed as the first argument. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const server = http2.createServer(); server.on('stream', (stream) => { stream.respond({ ':status': 200 }); @@ -1605,7 +1613,7 @@ changes: `'wantTrailers'` event after the final `DATA` frame has been sent. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const server = http2.createServer(); server.on('stream', (stream) => { stream.respond({ ':status': 200 }); @@ -1613,10 +1621,10 @@ server.on('stream', (stream) => { }); ``` -When the `options.waitForTrailers` option is set, the `'wantTrailers'` event -will be emitted immediately after queuing the last chunk of payload data to be -sent. The `http2stream.sendTrailers()` method can then be used to sent trailing -header fields to the peer. +Initiates a response. When the `options.waitForTrailers` option is set, the +`'wantTrailers'` event will be emitted immediately after queuing the last chunk +of payload data to be sent. The `http2stream.sendTrailers()` method can then be +used to sent trailing header fields to the peer. When `options.waitForTrailers` is set, the `Http2Stream` will not automatically close when the final `DATA` frame is transmitted. User code must call either @@ -1624,7 +1632,7 @@ close when the final `DATA` frame is transmitted. User code must call either `Http2Stream`. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const server = http2.createServer(); server.on('stream', (stream) => { stream.respond({ ':status': 200 }, { waitForTrailers: true }); @@ -1672,8 +1680,8 @@ When used, the `Http2Stream` object's `Duplex` interface will be closed automatically. ```js -const http2 = require('http2'); -const fs = require('fs'); +const http2 = require('node:http2'); +const fs = require('node:fs'); const server = http2.createServer(); server.on('stream', (stream) => { @@ -1717,8 +1725,8 @@ close when the final `DATA` frame is transmitted. User code _must_ call either `Http2Stream`. ```js -const http2 = require('http2'); -const fs = require('fs'); +const http2 = require('node:http2'); +const fs = require('node:fs'); const server = http2.createServer(); server.on('stream', (stream) => { @@ -1784,7 +1792,7 @@ the stream will be destroyed. Example using a file path: ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const server = http2.createServer(); server.on('stream', (stream) => { function statCheck(stat, headers) { @@ -1819,7 +1827,7 @@ results to determine if the file has been modified to return an appropriate `304` response: ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const server = http2.createServer(); server.on('stream', (stream) => { function statCheck(stat, headers) { @@ -1854,7 +1862,7 @@ close when the final `DATA` frame is transmitted. User code must call either `Http2Stream`. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const server = http2.createServer(); server.on('stream', (stream) => { stream.respondWithFile('/some/file', @@ -1875,8 +1883,8 @@ added: v8.4.0 * Extends: {net.Server} Instances of `Http2Server` are created using the `http2.createServer()` -function. The `Http2Server` class is not exported directly by the `http2` -module. +function. The `Http2Server` class is not exported directly by the +`node:http2` module. #### Event: `'checkContinue'` @@ -1934,6 +1942,8 @@ per session. See the [Compatibility API][]. added: v8.4.0 --> +* `session` {ServerHttp2Session} + The `'session'` event is emitted when a new `Http2Session` is created by the `Http2Server`. @@ -1943,6 +1953,9 @@ The `'session'` event is emitted when a new `Http2Session` is created by the added: v8.4.0 --> +* `error` {Error} +* `session` {ServerHttp2Session} + The `'sessionError'` event is emitted when an `'error'` event is emitted by an `Http2Session` object associated with the `Http2Server`. @@ -1964,7 +1977,7 @@ an `Http2Session` associated with the server. See also [`Http2Session`'s `'stream'` event][]. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const { HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, @@ -2084,7 +2097,7 @@ added: v8.4.0 Instances of `Http2SecureServer` are created using the `http2.createSecureServer()` function. The `Http2SecureServer` class is not -exported directly by the `http2` module. +exported directly by the `node:http2` module. #### Event: `'checkContinue'` @@ -2142,6 +2155,8 @@ per session. See the [Compatibility API][]. added: v8.4.0 --> +* `session` {ServerHttp2Session} + The `'session'` event is emitted when a new `Http2Session` is created by the `Http2SecureServer`. @@ -2151,6 +2166,9 @@ The `'session'` event is emitted when a new `Http2Session` is created by the added: v8.4.0 --> +* `error` {Error} +* `session` {ServerHttp2Session} + The `'sessionError'` event is emitted when an `'error'` event is emitted by an `Http2Session` object associated with the `Http2SecureServer`. @@ -2172,7 +2190,7 @@ an `Http2Session` associated with the server. See also [`Http2Session`'s `'stream'` event][]. ```js -const http2 = require('http2'); +const http2 = require('node:http2'); const { HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, @@ -2212,6 +2230,8 @@ a given number of milliseconds set using `http2secureServer.setTimeout()`. added: v8.4.0 --> +* `socket` {stream.Duplex} + The `'unknownProtocol'` event is emitted when a connecting client fails to negotiate an allowed protocol (i.e. HTTP/2 or HTTP/1.1). The event handler receives the socket for handling. If no listener is registered for this event, @@ -2289,7 +2309,7 @@ Throws `ERR_HTTP2_INVALID_SETTING_VALUE` for invalid `settings` values. Throws `ERR_INVALID_ARG_TYPE` for invalid `settings` argument. -### `http2.createServer(options[, onRequestHandler])` +### `http2.createServer([options][, onRequestHandler])` -The `inspector` module provides an API for interacting with the V8 inspector. +The `node:inspector` module provides an API for interacting with the V8 +inspector. It can be accessed using: ```js -const inspector = require('inspector'); +const inspector = require('node:inspector'); ``` ## `inspector.close()` Deactivate the inspector. Blocks until there are no active connections. +This function is not available in [worker threads][]. + ## `inspector.console` * {Object} An object to send messages to the remote inspector console. ```js -require('inspector').console.log('a message'); +require('node:inspector').console.log('a message'); ``` The inspector console does not have API parity with Node.js @@ -203,8 +206,8 @@ protocol. Here's an example showing how to use the [CPU Profiler][]: ```js -const inspector = require('inspector'); -const fs = require('fs'); +const inspector = require('node:inspector'); +const fs = require('node:fs'); const session = new inspector.Session(); session.connect(); @@ -228,8 +231,8 @@ session.post('Profiler.enable', () => { Here's an example showing how to use the [Heap Profiler][]: ```js -const inspector = require('inspector'); -const fs = require('fs'); +const inspector = require('node:inspector'); +const fs = require('node:fs'); const session = new inspector.Session(); const fd = fs.openSync('profile.heapsnapshot', 'w'); @@ -253,3 +256,4 @@ session.post('HeapProfiler.takeHeapSnapshot', null, (err, r) => { [`'Debugger.paused'`]: https://chromedevtools.github.io/devtools-protocol/v8/Debugger#event-paused [`session.connect()`]: #sessionconnect [security warning]: cli.md#warning-binding-inspector-to-a-public-ipport-combination-is-insecure +[worker threads]: worker_threads.md diff --git a/doc/api/intl.md b/doc/api/intl.md index cf4a852035d4e1..3af63ae8a19bd7 100644 --- a/doc/api/intl.md +++ b/doc/api/intl.md @@ -18,9 +18,9 @@ programs. Some of them are: * Locale-sensitive methods like [`String.prototype.localeCompare()`][] and [`Date.prototype.toLocaleString()`][] * The [WHATWG URL parser][]'s [internationalized domain names][] (IDNs) support -* [`require('buffer').transcode()`][] +* [`require('node:buffer').transcode()`][] * More accurate [REPL][] line editing -* [`require('util').TextDecoder`][] +* [`require('node:util').TextDecoder`][] * [`RegExp` Unicode Property Escapes][] Node.js and the underlying V8 engine use @@ -44,21 +44,21 @@ in [BUILDING.md][]. An overview of available Node.js and JavaScript features for each `configure` option: -| Feature | `none` | `system-icu` | `small-icu` | `full-icu` | -| --------------------------------------- | --------------------------------- | ---------------------------- | ---------------------- | ---------- | -| [`String.prototype.normalize()`][] | none (function is no-op) | full | full | full | -| `String.prototype.to*Case()` | full | full | full | full | -| [`Intl`][] | none (object does not exist) | partial/full (depends on OS) | partial (English-only) | full | -| [`String.prototype.localeCompare()`][] | partial (not locale-aware) | full | full | full | -| `String.prototype.toLocale*Case()` | partial (not locale-aware) | full | full | full | -| [`Number.prototype.toLocaleString()`][] | partial (not locale-aware) | partial/full (depends on OS) | partial (English-only) | full | -| `Date.prototype.toLocale*String()` | partial (not locale-aware) | partial/full (depends on OS) | partial (English-only) | full | -| [Legacy URL Parser][] | partial (no IDN support) | full | full | full | -| [WHATWG URL Parser][] | partial (no IDN support) | full | full | full | -| [`require('buffer').transcode()`][] | none (function does not exist) | full | full | full | -| [REPL][] | partial (inaccurate line editing) | full | full | full | -| [`require('util').TextDecoder`][] | partial (basic encodings support) | partial/full (depends on OS) | partial (Unicode-only) | full | -| [`RegExp` Unicode Property Escapes][] | none (invalid `RegExp` error) | full | full | full | +| Feature | `none` | `system-icu` | `small-icu` | `full-icu` | +| ---------------------------------------- | --------------------------------- | ---------------------------- | ---------------------- | ---------- | +| [`String.prototype.normalize()`][] | none (function is no-op) | full | full | full | +| `String.prototype.to*Case()` | full | full | full | full | +| [`Intl`][] | none (object does not exist) | partial/full (depends on OS) | partial (English-only) | full | +| [`String.prototype.localeCompare()`][] | partial (not locale-aware) | full | full | full | +| `String.prototype.toLocale*Case()` | partial (not locale-aware) | full | full | full | +| [`Number.prototype.toLocaleString()`][] | partial (not locale-aware) | partial/full (depends on OS) | partial (English-only) | full | +| `Date.prototype.toLocale*String()` | partial (not locale-aware) | partial/full (depends on OS) | partial (English-only) | full | +| [Legacy URL Parser][] | partial (no IDN support) | full | full | full | +| [WHATWG URL Parser][] | partial (no IDN support) | full | full | full | +| [`require('node:buffer').transcode()`][] | none (function does not exist) | full | full | full | +| [REPL][] | partial (inaccurate line editing) | full | full | full | +| [`require('node:util').TextDecoder`][] | partial (basic encodings support) | partial/full (depends on OS) | partial (Unicode-only) | full | +| [`RegExp` Unicode Property Escapes][] | none (invalid `RegExp` error) | full | full | full | The "(not locale-aware)" designation denotes that the function carries out its operation just like the non-`Locale` version of the function, if one @@ -103,7 +103,7 @@ const spanish = new Intl.DateTimeFormat('es', { month: 'long' }); console.log(english.format(january)); // Prints "January" console.log(spanish.format(january)); -// Prints "M01" on small-icu +// Prints either "M01" or "January" on small-icu, depending on the user’s default locale // Should print "enero" ``` @@ -211,8 +211,8 @@ to be helpful: [`String.prototype.normalize()`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize [`String.prototype.toLowerCase()`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase [`String.prototype.toUpperCase()`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase -[`require('buffer').transcode()`]: buffer.md#buffertranscodesource-fromenc-toenc -[`require('util').TextDecoder`]: util.md#class-utiltextdecoder +[`require('node:buffer').transcode()`]: buffer.md#buffertranscodesource-fromenc-toenc +[`require('node:util').TextDecoder`]: util.md#class-utiltextdecoder [btest402]: https://github.com/srl295/btest402 [full-icu]: https://www.npmjs.com/package/full-icu [internationalized domain names]: https://en.wikipedia.org/wiki/Internationalized_domain_name diff --git a/doc/api/module.md b/doc/api/module.md index 749bd350ba9c42..fe9d30a7b6f29c 100644 --- a/doc/api/module.md +++ b/doc/api/module.md @@ -1,4 +1,4 @@ -# Modules: `module` API +# Modules: `node:module` API @@ -12,7 +12,7 @@ added: v0.3.7 Provides general utility methods when interacting with instances of `Module`, the [`module`][] variable often seen in [CommonJS][] modules. Accessed -via `import 'module'` or `require('module')`. +via `import 'node:module'` or `require('node:module')`. ### `module.builtinModules` @@ -34,13 +34,13 @@ by the [module wrapper][]. To access it, require the `Module` module: ```mjs // module.mjs // In an ECMAScript module -import { builtinModules as builtin } from 'module'; +import { builtinModules as builtin } from 'node:module'; ``` ```cjs // module.cjs // In a CommonJS module -const builtin = require('module').builtinModules; +const builtin = require('node:module').builtinModules; ``` ### `module.createRequire(filename)` @@ -55,13 +55,29 @@ added: v12.2.0 * Returns: {require} Require function ```mjs -import { createRequire } from 'module'; +import { createRequire } from 'node:module'; const require = createRequire(import.meta.url); // sibling-module.js is a CommonJS module. const siblingModule = require('./sibling-module'); ``` +### `module.isBuiltin(moduleName)` + + + +* `moduleName` {string} name of the module +* Returns: {boolean} returns true if the module is builtin else returns false + +```mjs +import { isBuiltin } from 'node:module'; +isBuiltin('node:fs'); // true +isBuiltin('fs'); // true +isBuiltin('wss'); // false +``` + ### `module.syncBuiltinESMExports()` diff --git a/doc/api/modules.md b/doc/api/modules.md index 030c963f5764cf..7f42c287bbb8dc 100644 --- a/doc/api/modules.md +++ b/doc/api/modules.md @@ -6,7 +6,11 @@ -In the Node.js module system, each file is treated as a separate module. For +CommonJS modules are the original way to package JavaScript code for Node.js. +Node.js also supports the [ECMAScript modules][] standard used by browsers +and other JavaScript runtimes. + +In Node.js, each file is treated as a separate module. For example, consider a file named `foo.js`: ```js @@ -327,15 +331,17 @@ described in greater detail elsewhere in this documentation. The core modules are defined within the Node.js source and are located in the `lib/` folder. -Core modules are always preferentially loaded if their identifier is -passed to `require()`. For instance, `require('http')` will always -return the built in HTTP module, even if there is a file by that name. - -Core modules can also be identified using the `node:` prefix, in which case +Core modules can be identified using the `node:` prefix, in which case it bypasses the `require` cache. For instance, `require('node:http')` will always return the built in HTTP module, even if there is `require.cache` entry by that name. +Some core modules are always preferentially loaded if their identifier is +passed to `require()`. For instance, `require('http')` will always +return the built-in HTTP module, even if there is a file by that name. The list +of core modules that can be loaded without using the `node:` prefix is exposed +as [`module.builtinModules`][]. + ## Cycles @@ -554,7 +560,7 @@ wrapper that looks like the following: By doing this, Node.js achieves a few things: -* It keeps top-level variables (defined with `var`, `const` or `let`) scoped to +* It keeps top-level variables (defined with `var`, `const`, or `let`) scoped to the module rather than the global object. * It helps to provide some global-looking variables that are actually specific to the module, such as: @@ -682,7 +688,7 @@ const myLocalModule = require('./path/myLocalModule'); const jsonData = require('./path/filename.json'); // Importing a module from node_modules or Node.js built-in module: -const crypto = require('crypto'); +const crypto = require('node:crypto'); ``` #### `require.cache` @@ -706,13 +712,13 @@ Use with care! ```js -const assert = require('assert'); -const realFs = require('fs'); +const assert = require('node:assert'); +const realFs = require('node:fs'); const fakeFs = {}; require.cache.fs = { exports: fakeFs }; -assert.strictEqual(require('fs'), fakeFs); +assert.strictEqual(require('node:fs'), fakeFs); assert.strictEqual(require('node:fs'), realFs); ``` @@ -865,7 +871,7 @@ which is probably not what is desired. For example, suppose we were making a module called `a.js`: ```js -const EventEmitter = require('events'); +const EventEmitter = require('node:events'); module.exports = new EventEmitter(); @@ -1083,7 +1089,8 @@ This section was moved to [`MODULE_NOT_FOUND`]: errors.md#module_not_found [`__dirname`]: #__dirname [`__filename`]: #__filename -[`import()`]: https://wiki.developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Dynamic_Imports +[`import()`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import +[`module.builtinModules`]: module.md#modulebuiltinmodules [`module.children`]: #modulechildren [`module.id`]: #moduleid [`module` core module]: module.md diff --git a/doc/api/n-api.md b/doc/api/n-api.md index 3d1741bad82359..71a0081352d349 100644 --- a/doc/api/n-api.md +++ b/doc/api/n-api.md @@ -1185,10 +1185,13 @@ This API throws a JavaScript `RangeError` with the text provided. added: v16.14.0 --> +> Stability: 1 - Experimental + ````c NAPI_EXTERN napi_status node_api_throw_syntax_error(napi_env env, const char* code, const char* msg); +``` * `[in] env`: The environment that the API is invoked under. * `[in] code`: Optional error code to be set on the error. @@ -1301,6 +1304,8 @@ This API returns a JavaScript `RangeError` with the text provided. added: v16.14.0 --> +> Stability: 1 - Experimental + ```c NAPI_EXTERN napi_status node_api_create_syntax_error(napi_env env, napi_value code, @@ -2503,7 +2508,6 @@ of the ECMAScript Language Specification. > Stability: 1 - Experimental @@ -5119,6 +5123,11 @@ invocation. If it is deleted before then, then the finalize callback may never be invoked. Therefore, when obtaining a reference a finalize callback is also required in order to enable correct disposal of the reference. +Finalizer callbacks may be deferred, leaving a window where the object has +been garbage collected (and the weak reference is invalid) but the finalizer +hasn't been called yet. When using `napi_get_reference_value()` on weak +references returned by `napi_wrap()`, you should still handle an empty result. + Calling `napi_wrap()` a second time on an object will return an error. To associate another native instance with the object, use `napi_remove_wrap()` first. diff --git a/doc/api/net.md b/doc/api/net.md index 869b1e98379893..c75e50de368476 100644 --- a/doc/api/net.md +++ b/doc/api/net.md @@ -8,24 +8,24 @@ -The `net` module provides an asynchronous network API for creating stream-based +The `node:net` module provides an asynchronous network API for creating stream-based TCP or [IPC][] servers ([`net.createServer()`][]) and clients ([`net.createConnection()`][]). It can be accessed using: ```js -const net = require('net'); +const net = require('node:net'); ``` ## IPC support -The `net` module supports IPC with named pipes on Windows, and Unix domain +The `node:net` module supports IPC with named pipes on Windows, and Unix domain sockets on other operating systems. ### Identifying paths for IPC connections -[`net.connect()`][], [`net.createConnection()`][], [`server.listen()`][] and +[`net.connect()`][], [`net.createConnection()`][], [`server.listen()`][], and [`socket.connect()`][] take a `path` parameter to identify IPC endpoints. On Unix, the local domain is also known as the Unix domain. The path is a @@ -257,6 +257,23 @@ added: v0.1.90 Emitted when the server has been bound after calling [`server.listen()`][]. +### Event: `'drop'` + + + +When the number of connections reaches the threshold of `server.maxConnections`, +the server will drop new connections and emit `'drop'` event instead. If it is a +TCP server, the argument is as follows, otherwise the argument is `undefined`. + +* `data` {Object} The argument passed to event listener. + * `localAddress` {string} Local address. + * `localPort` {number} Local port. + * `remoteAddress` {string} Remote address. + * `remotePort` {number} Remote port. + * `remoteFamily` {string} Remote IP family. `'IPv4'` or `'IPv6'`. + ### `server.address()` + +* Returns: {net.Socket} + +Close the TCP connection by sending an RST packet and destroy the stream. +If this TCP socket is in connecting status, it will send an RST packet and destroy this TCP socket once it is connected. +Otherwise, it will call `socket.destroy` with an `ERR_SOCKET_CLOSED` Error. +If this is not a TCP socket (for example, a pipe), calling this method will immediately throw an `ERR_INVALID_HANDLE_TYPE` Error. + ### `socket.resume()` * Returns: {net.Socket} The socket itself. @@ -1318,7 +1348,7 @@ Following is an example of a client of the echo server described in the [`net.createServer()`][] section: ```js -const net = require('net'); +const net = require('node:net'); const client = net.createConnection({ port: 8124 }, () => { // 'connect' listener. console.log('connected to server!'); @@ -1434,7 +1464,7 @@ Here is an example of a TCP echo server which listens for connections on port 8124: ```js -const net = require('net'); +const net = require('node:net'); const server = net.createServer((c) => { // 'connection' listener. console.log('client connected'); diff --git a/doc/api/os.md b/doc/api/os.md index 15729f8af98c5e..23467112487f57 100644 --- a/doc/api/os.md +++ b/doc/api/os.md @@ -6,11 +6,11 @@ -The `os` module provides operating system-related utility methods and +The `node:os` module provides operating system-related utility methods and properties. It can be accessed using: ```js -const os = require('os'); +const os = require('node:os'); ``` ## `os.EOL` diff --git a/doc/api/packages.md b/doc/api/packages.md index 1e93fb4de624a1..02a9091206ab06 100644 --- a/doc/api/packages.md +++ b/doc/api/packages.md @@ -16,11 +16,16 @@ changes: - v12.19.0 pr-url: https://github.com/nodejs/node/pull/34117 description: Add package `"imports"` field. + - version: + - v13.7.0 + - v12.17.0 + pr-url: https://github.com/nodejs/node/pull/29866 + description: Unflag conditional exports. - version: - v13.7.0 - v12.16.0 pr-url: https://github.com/nodejs/node/pull/31001 - description: Unflag conditional exports. + description: Remove the `--experimental-conditional-exports` option. In 12.16.0, conditional exports are still behind `--experimental-modules`. - version: - v13.6.0 - v12.16.0 @@ -193,9 +198,9 @@ Strings passed in as an argument to `--eval` (or `-e`), or piped to `node` via is set. ```bash -node --input-type=module --eval "import { sep } from 'path'; console.log(sep);" +node --input-type=module --eval "import { sep } from 'node:path'; console.log(sep);" -echo "import { sep } from 'path'; console.log(sep);" | node --input-type=module +echo "import { sep } from 'node:path'; console.log(sep);" | node --input-type=module ``` For completeness there is also `--input-type=commonjs`, for explicitly running @@ -219,91 +224,99 @@ in your project's `package.json`. ## Package entry points -In a package’s `package.json` file, two fields can define entry points for a -package: [`"main"`][] and [`"exports"`][]. The [`"main"`][] field is supported -in all versions of Node.js, but its capabilities are limited: it only defines -the main entry point of the package. +In a package's `package.json` file, two fields can define entry points for a +package: [`"main"`][] and [`"exports"`][]. Both fields apply to both ES module +and CommonJS module entry points. -The [`"exports"`][] field provides an alternative to [`"main"`][] where the -package main entry point can be defined while also encapsulating the package, -**preventing any other entry points besides those defined in [`"exports"`][]**. -This encapsulation allows module authors to define a public interface for -their package. +The [`"main"`][] field is supported in all versions of Node.js, but its +capabilities are limited: it only defines the main entry point of the package. -If both [`"exports"`][] and [`"main"`][] are defined, the [`"exports"`][] field -takes precedence over [`"main"`][]. [`"exports"`][] are not specific to ES -modules or CommonJS; [`"main"`][] is overridden by [`"exports"`][] if it -exists. As such [`"main"`][] cannot be used as a fallback for CommonJS but it -can be used as a fallback for legacy versions of Node.js that do not support the -[`"exports"`][] field. +The [`"exports"`][] provides a modern alternative to [`"main"`][] allowing +multiple entry points to be defined, conditional entry resolution support +between environments, and **preventing any other entry points besides those +defined in [`"exports"`][]**. This encapsulation allows module authors to +clearly define the public interface for their package. + +For new packages targeting the currently supported versions of Node.js, the +[`"exports"`][] field is recommended. For packages supporting Node.js 10 and +below, the [`"main"`][] field is required. If both [`"exports"`][] and +[`"main"`][] are defined, the [`"exports"`][] field takes precedence over +[`"main"`][] in supported versions of Node.js. [Conditional exports][] can be used within [`"exports"`][] to define different package entry points per environment, including whether the package is referenced via `require` or via `import`. For more information about supporting -both CommonJS and ES Modules in a single package please consult +both CommonJS and ES modules in a single package please consult [the dual CommonJS/ES module packages section][]. -**Warning**: Introducing the [`"exports"`][] field prevents consumers of a -package from using any entry points that are not defined, including the +Existing packages introducing the [`"exports"`][] field will prevent consumers +of the package from using any entry points that are not defined, including the [`package.json`][] (e.g. `require('your-package/package.json')`. **This will likely be a breaking change.** To make the introduction of [`"exports"`][] non-breaking, ensure that every previously supported entry point is exported. It is best to explicitly specify -entry points so that the package’s public API is well-defined. For example, +entry points so that the package's public API is well-defined. For example, a project that previous exported `main`, `lib`, `feature`, and the `package.json` could use the following `package.exports`: ```json { - "name": "my-mod", + "name": "my-package", "exports": { ".": "./lib/index.js", "./lib": "./lib/index.js", "./lib/index": "./lib/index.js", "./lib/index.js": "./lib/index.js", "./feature": "./feature/index.js", + "./feature/index": "./feature/index.js", "./feature/index.js": "./feature/index.js", "./package.json": "./package.json" } } ``` -Alternatively a project could choose to export entire folders: +Alternatively a project could choose to export entire folders both with and +without extensioned subpaths using export patterns: ```json { - "name": "my-mod", + "name": "my-package", "exports": { ".": "./lib/index.js", "./lib": "./lib/index.js", "./lib/*": "./lib/*.js", + "./lib/*.js": "./lib/*.js", "./feature": "./feature/index.js", "./feature/*": "./feature/*.js", + "./feature/*.js": "./feature/*.js", "./package.json": "./package.json" } } ``` -As a last resort, package encapsulation can be disabled entirely by creating an -export for the root of the package `"./*": "./*"`. This exposes every file -in the package at the cost of disabling the encapsulation and potential tooling -benefits this provides. As the ES Module loader in Node.js enforces the use of -[the full specifier path][], exporting the root rather than being explicit -about entry is less expressive than either of the prior examples. Not only -is encapsulation lost but module consumers are unable to -`import feature from 'my-mod/feature'` as they need to provide the full -path `import feature from 'my-mod/feature/index.js`. +With the above providing backwards-compatibility for any minor package versions, +a future major change for the package can then properly restrict the exports +to only the specific feature exports exposed: + +```json +{ + "name": "my-package", + "exports": { + ".": "./lib/index.js", + "./feature/*.js": "./feature/*.js", + "./feature/internal/*": null + } +} +``` ### Main entry point export -To set the main entry point for a package, it is advisable to define both -[`"exports"`][] and [`"main"`][] in the package’s [`package.json`][] file: +When writing a new package, it is recommended to use the [`"exports"`][] field: ```json { - "main": "./main.js", - "exports": "./main.js" + "exports": "./index.js" } ``` @@ -318,6 +331,18 @@ package. It is not a strong encapsulation since a direct require of any absolute subpath of the package such as `require('/path/to/node_modules/pkg/subpath.js')` will still load `subpath.js`. +All currently supported versions of Node.js and modern build tools support the +`"exports"` field. For projects using an older version of Node.js or a related +build tool, compatibility can be achieved by including the `"main"` field +alongside `"exports"` pointing to the same module: + +```json +{ + "main": "./index.js", + "exports": "./index.js" +} +``` + ### Subpath exports + +If the `"."` export is the only export, the [`"exports"`][] field provides sugar +for this case being the direct [`"exports"`][] field value. + +```json +{ + "exports": { + ".": "./index.js" + } +} +``` + +can be written: + +```json +{ + "exports": "./index.js" +} +``` + ### Subpath imports -In addition to the [`"exports"`][] field, it is possible to define internal -package import maps that only apply to import specifiers from within the package -itself. +In addition to the [`"exports"`][] field, there is a package `"imports"` field +to create private mappings that only apply to import specifiers from within the +package itself. -Entries in the imports field must always start with `#` to ensure they are -disambiguated from package specifiers. +Entries in the `"imports"` field must always start with `#` to ensure they are +disambiguated from external package specifiers. For example, the imports field can be used to gain the benefits of conditional exports for internal modules: @@ -392,8 +461,8 @@ file `./dep-polyfill.js` relative to the package in other environments. Unlike the `"exports"` field, the `"imports"` field permits mapping to external packages. -The resolution rules for the imports field are otherwise -analogous to the exports field. +The resolution rules for the imports field are otherwise analogous to the +exports field. ### Subpath patterns @@ -401,6 +470,17 @@ analogous to the exports field. added: - v14.13.0 - v12.20.0 +changes: + - version: + - v16.10.0 + - v14.19.0 + pr-url: https://github.com/nodejs/node/pull/40041 + description: Support pattern trailers in "imports" field. + - version: + - v16.9.0 + - v14.19.0 + pr-url: https://github.com/nodejs/node/pull/39635 + description: Support pattern trailers. --> For packages with a small number of exports or imports, we recommend @@ -414,10 +494,10 @@ For these use cases, subpath export patterns can be used instead: // ./node_modules/es-module-package/package.json { "exports": { - "./features/*": "./src/features/*.js" + "./features/*.js": "./src/features/*.js" }, "imports": { - "#internal/*": "./src/internal/*.js" + "#internal/*.js": "./src/internal/*.js" } } ``` @@ -429,19 +509,19 @@ All instances of `*` on the right hand side will then be replaced with this value, including if it contains any `/` separators. ```js -import featureX from 'es-module-package/features/x'; +import featureX from 'es-module-package/features/x.js'; // Loads ./node_modules/es-module-package/src/features/x.js -import featureY from 'es-module-package/features/y/y'; +import featureY from 'es-module-package/features/y/y.js'; // Loads ./node_modules/es-module-package/src/features/y/y.js -import internalZ from '#internal/z'; +import internalZ from '#internal/z.js'; // Loads ./node_modules/es-module-package/src/internal/z.js ``` -This is a direct static replacement without any special handling for file -extensions. In the previous example, `pkg/features/x.json` would be resolved to -`./src/features/x.json.js` in the mapping. +This is a direct static matching and replacement without any special handling +for file extensions. Including the `"*.js"` on both sides of the mapping +restricts the exposed package exports to only JS files. The property of exports being statically enumerable is maintained with exports patterns since the individual exports for a package can be determined by @@ -455,93 +535,20 @@ To exclude private subfolders from patterns, `null` targets can be used: // ./node_modules/es-module-package/package.json { "exports": { - "./features/*": "./src/features/*.js", + "./features/*.js": "./src/features/*.js", "./features/private-internal/*": null } } ``` ```js -import featureInternal from 'es-module-package/features/private-internal/m'; +import featureInternal from 'es-module-package/features/private-internal/m.js'; // Throws: ERR_PACKAGE_PATH_NOT_EXPORTED -import featureX from 'es-module-package/features/x'; +import featureX from 'es-module-package/features/x.js'; // Loads ./node_modules/es-module-package/src/features/x.js ``` -### Subpath folder mappings - - - -> Stability: 0 - Deprecated: Use subpath patterns instead. - -Before subpath patterns were supported, a trailing `"/"` suffix was used to -support folder mappings: - -```json -{ - "exports": { - "./features/": "./features/" - } -} -``` - -_This feature will be removed in a future release._ - -Instead, use direct [subpath patterns][]: - -```json -{ - "exports": { - "./features/*": "./features/*.js" - } -} -``` - -The benefit of patterns over folder exports is that packages can always be -imported by consumers without subpath file extensions being necessary. - -### Exports sugar - - - -If the `"."` export is the only export, the [`"exports"`][] field provides sugar -for this case being the direct [`"exports"`][] field value. - -If the `"."` export has a fallback array or string value, then the -[`"exports"`][] field can be set to this value directly. - -```json -{ - "exports": { - ".": "./main.js" - } -} -``` - -can be written: - -```json -{ - "exports": "./main.js" -} -``` - ### Conditional exports -Within a package, the values defined in the package’s -`package.json` [`"exports"`][] field can be referenced via the package’s name. +Within a package, the values defined in the package's +`package.json` [`"exports"`][] field can be referenced via the package's name. For example, assuming the `package.json` is: ```json @@ -749,8 +753,8 @@ For example, assuming the `package.json` is: { "name": "a-package", "exports": { - ".": "./main.mjs", - "./foo": "./foo.js" + ".": "./index.mjs", + "./foo.js": "./foo.js" } } ``` @@ -759,7 +763,7 @@ Then any module _in that package_ can reference an export in the package itself: ```js // ./a-module.mjs -import { something } from 'a-package'; // Imports "something" from ./main.mjs. +import { something } from 'a-package'; // Imports "something" from ./index.mjs. ``` Self-referencing is available only if `package.json` has [`"exports"`][], and @@ -781,7 +785,7 @@ and in a CommonJS one. For example, this code will also work: ```cjs // ./a-module.js -const { something } = require('a-package/foo'); // Loads from ./foo.js. +const { something } = require('a-package/foo.js'); // Loads from ./foo.js. ``` Finally, self-referencing also works with scoped packages. For example, this @@ -810,6 +814,51 @@ $ node other.js 42 ``` +### Subpath folder mappings + + + +> Stability: 0 - Deprecated: Use subpath patterns instead. + +Before subpath patterns were supported, a trailing `"/"` suffix was used to +support folder mappings: + +```json +{ + "exports": { + "./features/": "./features/" + } +} +``` + +_This feature will be removed in a future release._ + +Instead, use direct [subpath patterns][]: + +```json +{ + "exports": { + "./features/*": "./features/*.js" + } +} +``` + +The benefit of patterns over folder exports is that packages can always be +imported by consumers without subpath file extensions being necessary. + ## Dual CommonJS/ES module packages Prior to the introduction of support for ES modules in Node.js, it was a common @@ -894,7 +943,6 @@ CommonJS entry point for `require`. // ./node_modules/pkg/package.json { "type": "module", - "main": "./index.cjs", "exports": { "import": "./wrapper.mjs", "require": "./index.cjs" @@ -945,7 +993,7 @@ This approach is appropriate for any of the following use cases: install both this package and those other packages. For example a `utilities` package is used directly in an application, and a `utilities-plus` package adds a few more functions to `utilities`. Because the wrapper exports - underlying CommonJS files, it doesn’t matter if `utilities-plus` is written in + underlying CommonJS files, it doesn't matter if `utilities-plus` is written in CommonJS or ES module syntax; it will work either way. * The package stores internal state, and the package author would prefer not to refactor the package to isolate its state management. See the next section. @@ -955,14 +1003,13 @@ be to add an export, e.g. `"./module"`, to point to an all-ES module-syntax version of the package. This could be used via `import 'pkg/module'` by users who are certain that the CommonJS version will not be loaded anywhere in the application, such as by dependencies; or if the CommonJS version can be loaded -but doesn’t affect the ES module version (for example, because the package is +but doesn't affect the ES module version (for example, because the package is stateless): ```json // ./node_modules/pkg/package.json { "type": "module", - "main": "./index.cjs", "exports": { ".": "./index.cjs", "./module": "./wrapper.mjs" @@ -979,7 +1026,6 @@ points directly: // ./node_modules/pkg/package.json { "type": "module", - "main": "./index.cjs", "exports": { "import": "./index.mjs", "require": "./index.cjs" @@ -989,22 +1035,22 @@ points directly: This can be done if both the CommonJS and ES module versions of the package are equivalent, for example because one is the transpiled output of the other; and -the package’s management of state is carefully isolated (or the package is +the package's management of state is carefully isolated (or the package is stateless). The reason that state is an issue is because both the CommonJS and ES module versions of the package might get used within an application; for example, the -user’s application code could `import` the ES module version while a dependency +user's application code could `import` the ES module version while a dependency `require`s the CommonJS version. If that were to occur, two copies of the package would be loaded in memory and therefore two separate states would be present. This would likely cause hard-to-troubleshoot bugs. -Aside from writing a stateless package (if JavaScript’s `Math` were a package, +Aside from writing a stateless package (if JavaScript's `Math` were a package, for example, it would be stateless as all of its methods are static), there are -some ways to isolate state so that it’s shared between the potentially loaded +some ways to isolate state so that it's shared between the potentially loaded CommonJS and ES module instances of the package: -1. If possible, contain all state within an instantiated object. JavaScript’s +1. If possible, contain all state within an instantiated object. JavaScript's `Date`, for example, needs to be instantiated to contain state; if it were a package, it would be used like this: @@ -1014,7 +1060,7 @@ CommonJS and ES module instances of the package: // someDate contains state; Date does not ``` - The `new` keyword isn’t required; a package’s function can return a new + The `new` keyword isn't required; a package's function can return a new object, or modify a passed-in object, to keep the state external to the package. @@ -1041,7 +1087,7 @@ CommonJS and ES module instances of the package: each reference of `pkg` will contain the same state; and modifying that state from either module system will apply to both. -Any plugins that attach to the package’s singleton would need to separately +Any plugins that attach to the package's singleton would need to separately attach to both the CommonJS and ES module singletons. This approach is appropriate for any of the following use cases: @@ -1065,7 +1111,6 @@ conditional exports for consumers could be to add an export, e.g. // ./node_modules/pkg/package.json { "type": "module", - "main": "./index.cjs", "exports": { ".": "./index.cjs", "./module": "./index.mjs" @@ -1116,7 +1161,7 @@ changes: } ``` -The `"name"` field defines your package’s name. Publishing to the +The `"name"` field defines your package's name. Publishing to the _npm_ registry requires a name that satisfies [certain requirements](https://docs.npmjs.com/files/package.json#name). @@ -1133,7 +1178,7 @@ added: v0.4.0 ```json { - "main": "./main.js" + "main": "./index.js" } ``` @@ -1147,7 +1192,8 @@ It also defines the script that is used when the [package directory is loaded via `require()`](modules.md#folders-as-modules). ```cjs -require('./path/to/directory'); // This resolves to ./path/to/directory/main.js. +// This resolves to ./path/to/directory/index.js. +require('./path/to/directory'); ``` ### `"packageManager"` @@ -1197,7 +1243,7 @@ Files ending with `.js` are loaded as ES modules when the nearest parent `"module"`. The nearest parent `package.json` is defined as the first `package.json` found -when searching in the current folder, that folder’s parent, and so on up +when searching in the current folder, that folder's parent, and so on up until a node\_modules folder or the volume root is reached. ```json @@ -1238,6 +1284,11 @@ changes: - v12.20.0 pr-url: https://github.com/nodejs/node/pull/34718 description: Add support for `"exports"` patterns. + - version: + - v13.7.0 + - v12.17.0 + pr-url: https://github.com/nodejs/node/pull/29866 + description: Unflag conditional exports. - version: - v13.7.0 - v12.16.0 @@ -1247,7 +1298,7 @@ changes: - v13.7.0 - v12.16.0 pr-url: https://github.com/nodejs/node/pull/31001 - description: Remove the `--experimental-conditional-exports` option. + description: Remove the `--experimental-conditional-exports` option. In 12.16.0, conditional exports are still behind `--experimental-modules`. - version: - v13.2.0 - v12.16.0 @@ -1303,7 +1354,7 @@ added: Entries in the imports field must be strings starting with `#`. -Import maps permit mapping to external packages. +Package imports permit mapping to external packages. This field defines [subpath imports][] for the current package. @@ -1327,8 +1378,10 @@ This field defines [subpath imports][] for the current package. [`package.json`]: #nodejs-packagejson-field-definitions [entry points]: #package-entry-points [folders as modules]: modules.md#folders-as-modules +[import maps]: https://github.com/WICG/import-maps [load ECMASCript modules from CommonJS modules]: modules.md#the-mjs-extension [loader hooks]: esm.md#loaders +[packages folder mapping]: https://github.com/WICG/import-maps#packages-via-trailing-slashes [self-reference]: #self-referencing-a-package-using-its-name [subpath exports]: #subpath-exports [subpath imports]: #subpath-imports diff --git a/doc/api/path.md b/doc/api/path.md index cc2bb4d1a8a3e3..0bbb5b80c57ef3 100644 --- a/doc/api/path.md +++ b/doc/api/path.md @@ -6,19 +6,19 @@ -The `path` module provides utilities for working with file and directory paths. -It can be accessed using: +The `node:path` module provides utilities for working with file and directory +paths. It can be accessed using: ```js -const path = require('path'); +const path = require('node:path'); ``` ## Windows vs. POSIX -The default operation of the `path` module varies based on the operating system -on which a Node.js application is running. Specifically, when running on a -Windows operating system, the `path` module will assume that Windows-style -paths are being used. +The default operation of the `node:path` module varies based on the operating +system on which a Node.js application is running. Specifically, when running on +a Windows operating system, the `node:path` module will assume that +Windows-style paths are being used. So using `path.basename()` might yield different results on POSIX and Windows: @@ -455,7 +455,7 @@ changes: The `path.posix` property provides access to POSIX specific implementations of the `path` methods. -The API is accessible via `require('path').posix` or `require('path/posix')`. +The API is accessible via `require('node:path').posix` or `require('node:path/posix')`. ## `path.relative(from, to)` @@ -600,7 +600,7 @@ changes: The `path.win32` property provides access to Windows-specific implementations of the `path` methods. -The API is accessible via `require('path').win32` or `require('path/win32')`. +The API is accessible via `require('node:path').win32` or `require('node:path/win32')`. [MSDN-Rel-Path]: https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#fully-qualified-vs-relative-paths [`TypeError`]: errors.md#class-typeerror diff --git a/doc/api/perf_hooks.md b/doc/api/perf_hooks.md index 8c2a128861f590..3ded7e3be9c9ad 100644 --- a/doc/api/perf_hooks.md +++ b/doc/api/perf_hooks.md @@ -15,9 +15,10 @@ Node.js supports the following [Web Performance APIs][]: * [High Resolution Time][] * [Performance Timeline][] * [User Timing][] +* [Resource Timing][] ```js -const { PerformanceObserver, performance } = require('perf_hooks'); +const { PerformanceObserver, performance } = require('node:perf_hooks'); const obs = new PerformanceObserver((items) => { console.log(items.getEntries()[0].duration); @@ -64,7 +65,18 @@ added: v16.7.0 * `name` {string} If `name` is not provided, removes all `PerformanceMeasure` objects from the -Performance Timeline. If `name` is provided, removes only the named mark. +Performance Timeline. If `name` is provided, removes only the named measure. + +### `performance.clearResourceTimings([name])` + + + +* `name` {string} + +If `name` is not provided, removes all `PerformanceResourceTiming` objects from +the Resource Timeline. If `name` is provided, removes only the named resource. ### `performance.eventLoopUtilization([utilization1[, utilization2]])` @@ -111,8 +123,8 @@ of how a mostly idle process will have a high ELU. ```js 'use strict'; -const { eventLoopUtilization } = require('perf_hooks').performance; -const { spawnSync } = require('child_process'); +const { eventLoopUtilization } = require('node:perf_hooks').performance; +const { spawnSync } = require('node:child_process'); setImmediate(() => { const elu = eventLoopUtilization(); @@ -184,7 +196,7 @@ changes: * `options` {Object} * `detail` {any} Additional optional detail to include with the mark. * `startTime` {number} An optional timestamp to be used as the mark time. - **Defaults**: `performance.now()`. + **Default**: `performance.now()`. Creates a new `PerformanceMark` entry in the Performance Timeline. A `PerformanceMark` is a subclass of `PerformanceEntry` whose @@ -198,6 +210,31 @@ and can be queried with `performance.getEntries`, observation is performed, the entries should be cleared from the global Performance Timeline manually with `performance.clearMarks`. +### `performance.markResourceTiming(timingInfo, requestedUrl, initiatorType, global, cacheMode)` + + + +* `timingInfo` {Object} [Fetch Timing Info][] +* `requestedUrl` {string} The resource url +* `initiatorType` {string} The initiator name, e.g: 'fetch' +* `global` {Object} +* `cacheMode` {string} The cache mode must be an empty string ('') or 'local' + +_This property is an extension by Node.js. It is not available in Web browsers._ + +Creates a new `PerformanceResourceTiming` entry in the Resource Timeline. A +`PerformanceResourceTiming` is a subclass of `PerformanceEntry` whose +`performanceEntry.entryType` is always `'resource'`. Performance resources +are used to mark moments in the Resource Timeline. + +The created `PerformanceMark` entry is put in the global Resource Timeline +and can be queried with `performance.getEntries`, +`performance.getEntriesByName`, and `performance.getEntriesByType`. When the +observation is performed, the entries should be cleared from the global +Performance Timeline manually with `performance.clearResourceTimings`. + ### `performance.measure(name[, startMarkOrOptions[, endMark]])` + +* Extends: {PerformanceEntry} + +Provides detailed network timing data regarding the loading of an application's +resources. + +The constructor of this class is not exposed to users directly. + +### `performanceResourceTiming.workerStart` + + + +* {number} + +The high resolution millisecond timestamp at immediately before dispatching +the `fetch` request. If the resource is not intercepted by a worker the property +will always return 0. + +### `performanceResourceTiming.redirectStart` + + + +* {number} + +The high resolution millisecond timestamp that represents the start time +of the fetch which initiates the redirect. + +### `performanceResourceTiming.redirectEnd` + + + +* {number} + +The high resolution millisecond timestamp that will be created immediately after +receiving the last byte of the response of the last redirect. + +### `performanceResourceTiming.fetchStart` + + + +* {number} + +The high resolution millisecond timestamp immediately before the Node.js starts +to fetch the resource. + +### `performanceResourceTiming.domainLookupStart` + + + +* {number} + +The high resolution millisecond timestamp immediately before the Node.js starts +the domain name lookup for the resource. + +### `performanceResourceTiming.domainLookupEnd` + + + +* {number} + +The high resolution millisecond timestamp representing the time immediately +after the Node.js finished the domain name lookup for the resource. + +### `performanceResourceTiming.connectStart` + + + +* {number} + +The high resolution millisecond timestamp representing the time immediately +before Node.js starts to establish the connection to the server to retrieve +the resource. + +### `performanceResourceTiming.connectEnd` + + + +* {number} + +The high resolution millisecond timestamp representing the time immediately +after Node.js finishes establishing the connection to the server to retrieve +the resource. + +### `performanceResourceTiming.secureConnectionStart` + + + +* {number} + +The high resolution millisecond timestamp representing the time immediately +before Node.js starts the handshake process to secure the current connection. + +### `performanceResourceTiming.requestStart` + + + +* {number} + +The high resolution millisecond timestamp representing the time immediately +before Node.js receives the first byte of the response from the server. + +### `performanceResourceTiming.responseEnd` + + + +* {number} + +The high resolution millisecond timestamp representing the time immediately +after Node.js receives the last byte of the resource or immediately before +the transport connection is closed, whichever comes first. + +### `performanceResourceTiming.transferSize` + + + +* {number} + +A number representing the size (in octets) of the fetched resource. The size +includes the response header fields plus the response payload body. + +### `performanceResourceTiming.encodedBodySize` + + + +* {number} + +A number representing the size (in octets) received from the fetch +(HTTP or cache), of the payload body, before removing any applied +content-codings. + +### `performanceResourceTiming.decodedBodySize` + + + +* {number} + +A number representing the size (in octets) received from the fetch +(HTTP or cache), of the message body, after removing any applied +content-codings. + +### `performanceResourceTiming.toJSON()` + + + +Returns a `object` that is the JSON representation of the +`PerformanceResourceTiming` object + ## Class: `perf_hooks.PerformanceObserver` ### `new PerformanceObserver(callback)` @@ -648,7 +909,7 @@ added: v8.5.0 const { performance, PerformanceObserver -} = require('perf_hooks'); +} = require('node:perf_hooks'); const obs = new PerformanceObserver((list, observer) => { console.log(list.getEntries()); @@ -714,7 +975,7 @@ or `options.type`: const { performance, PerformanceObserver -} = require('perf_hooks'); +} = require('node:perf_hooks'); const obs = new PerformanceObserver((list, observer) => { // Called once asynchronously. `list` contains three items. @@ -750,7 +1011,7 @@ with respect to `performanceEntry.startTime`. const { performance, PerformanceObserver -} = require('perf_hooks'); +} = require('node:perf_hooks'); const obs = new PerformanceObserver((perfObserverList, observer) => { console.log(perfObserverList.getEntries()); @@ -800,7 +1061,7 @@ equal to `name`, and optionally, whose `performanceEntry.entryType` is equal to const { performance, PerformanceObserver -} = require('perf_hooks'); +} = require('node:perf_hooks'); const obs = new PerformanceObserver((perfObserverList, observer) => { console.log(perfObserverList.getEntriesByName('meow')); @@ -856,7 +1117,7 @@ is equal to `type`. const { performance, PerformanceObserver -} = require('perf_hooks'); +} = require('node:perf_hooks'); const obs = new PerformanceObserver((perfObserverList, observer) => { console.log(perfObserverList.getEntriesByType('mark')); @@ -896,7 +1157,7 @@ added: v15.9.0 * `lowest` {number|bigint} The lowest discernible value. Must be an integer value greater than 0. **Default:** `1`. * `highest` {number|bigint} The highest recordable value. Must be an integer - value that is equal to or greater than two times `min`. + value that is equal to or greater than two times `lowest`. **Default:** `Number.MAX_SAFE_INTEGER`. * `figures` {number} The number of accuracy digits. Must be a number between `1` and `5`. **Default:** `3`. @@ -927,7 +1188,7 @@ of the timer, and those delays are specifically what this API is intended to detect. ```js -const { monitorEventLoopDelay } = require('perf_hooks'); +const { monitorEventLoopDelay } = require('node:perf_hooks'); const h = monitorEventLoopDelay({ resolution: 20 }); h.enable(); // Do something. @@ -1174,11 +1435,11 @@ to execute the callback). ```js 'use strict'; -const async_hooks = require('async_hooks'); +const async_hooks = require('node:async_hooks'); const { performance, PerformanceObserver -} = require('perf_hooks'); +} = require('node:perf_hooks'); const set = new Set(); const hook = async_hooks.createHook({ @@ -1223,8 +1484,8 @@ dependencies: const { performance, PerformanceObserver -} = require('perf_hooks'); -const mod = require('module'); +} = require('node:perf_hooks'); +const mod = require('node:module'); // Monkey patch the require function mod.Module.prototype.require = @@ -1256,8 +1517,8 @@ the request and sending the response: ```js 'use strict'; -const { PerformanceObserver } = require('perf_hooks'); -const http = require('http'); +const { PerformanceObserver } = require('node:perf_hooks'); +const http = require('node:http'); const obs = new PerformanceObserver((items) => { items.getEntries().forEach((item) => { @@ -1276,9 +1537,47 @@ http.createServer((req, res) => { }); ``` +### Measuring how long the `net.connect` (only for TCP) takes when the connection is successful + +```js +'use strict'; +const { PerformanceObserver } = require('node:perf_hooks'); +const net = require('node:net'); +const obs = new PerformanceObserver((items) => { + items.getEntries().forEach((item) => { + console.log(item); + }); +}); +obs.observe({ entryTypes: ['net'] }); +const PORT = 8080; +net.createServer((socket) => { + socket.destroy(); +}).listen(PORT, () => { + net.connect(PORT); +}); +``` + +### Measuring how long the DNS takes when the request is successful + +```js +'use strict'; +const { PerformanceObserver } = require('node:perf_hooks'); +const dns = require('node:dns'); +const obs = new PerformanceObserver((items) => { + items.getEntries().forEach((item) => { + console.log(item); + }); +}); +obs.observe({ entryTypes: ['dns'] }); +dns.lookup('localhost', () => {}); +dns.promises.resolve('localhost'); +``` + [Async Hooks]: async_hooks.md +[Fetch Timing Info]: https://fetch.spec.whatwg.org/#fetch-timing-info [High Resolution Time]: https://www.w3.org/TR/hr-time-2 [Performance Timeline]: https://w3c.github.io/performance-timeline/ +[Resource Timing]: https://www.w3.org/TR/resource-timing-2/ [User Timing]: https://www.w3.org/TR/user-timing/ [Web Performance APIs]: https://w3c.github.io/perf-timing-primer/ [Worker threads]: worker_threads.md#worker-threads diff --git a/doc/api/policy.md b/doc/api/policy.md index 0d53352788a32c..233d6c94640790 100644 --- a/doc/api/policy.md +++ b/doc/api/policy.md @@ -350,7 +350,7 @@ The following example, would allow access to `fs` for all `data:` resources: ```json { "resources": { - "data:text/javascript,import('fs');": { + "data:text/javascript,import('node:fs');": { "cascade": true, "integrity": true } diff --git a/doc/api/process.md b/doc/api/process.md index 375867dcec7205..6fba25a014a7e3 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -7,15 +7,14 @@ The `process` object provides information about, and control over, the current -Node.js process. While it is available as a global, it is recommended to -explicitly access it via require or import: +Node.js process. ```mjs -import process from 'process'; +import process from 'node:process'; ``` ```cjs -const process = require('process'); +const process = require('node:process'); ``` ## Process events @@ -44,7 +43,7 @@ The `'beforeExit'` should _not_ be used as an alternative to the `'exit'` event unless the intention is to schedule additional work. ```mjs -import process from 'process'; +import process from 'node:process'; process.on('beforeExit', (code) => { console.log('Process beforeExit event with code: ', code); @@ -63,7 +62,7 @@ console.log('This message is displayed first.'); ``` ```cjs -const process = require('process'); +const process = require('node:process'); process.on('beforeExit', (code) => { console.log('Process beforeExit event with code: ', code); @@ -113,7 +112,7 @@ by the [`process.exitCode`][] property, or the `exitCode` argument passed to the [`process.exit()`][] method. ```mjs -import process from 'process'; +import process from 'node:process'; process.on('exit', (code) => { console.log(`About to exit with code: ${code}`); @@ -121,7 +120,7 @@ process.on('exit', (code) => { ``` ```cjs -const process = require('process'); +const process = require('node:process'); process.on('exit', (code) => { console.log(`About to exit with code: ${code}`); @@ -134,7 +133,7 @@ causing any additional work still queued in the event loop to be abandoned. In the following example, for instance, the timeout will never occur: ```mjs -import process from 'process'; +import process from 'node:process'; process.on('exit', (code) => { setTimeout(() => { @@ -144,7 +143,7 @@ process.on('exit', (code) => { ``` ```cjs -const process = require('process'); +const process = require('node:process'); process.on('exit', (code) => { setTimeout(() => { @@ -207,7 +206,7 @@ Because of the unreliability of the event in cases like the [`Promise.race()`][] example above it has been deprecated. ```mjs -import process from 'process'; +import process from 'node:process'; process.on('multipleResolves', (type, promise, reason) => { console.error(type, promise, reason); @@ -236,7 +235,7 @@ main().then(console.log); ``` ```cjs -const process = require('process'); +const process = require('node:process'); process.on('multipleResolves', (type, promise, reason) => { console.error(type, promise, reason); @@ -297,7 +296,7 @@ of unhandled rejections grows, and the `'rejectionHandled'` event is emitted when the list of unhandled rejections shrinks. ```mjs -import process from 'process'; +import process from 'node:process'; const unhandledRejections = new Map(); process.on('unhandledRejection', (reason, promise) => { @@ -309,7 +308,7 @@ process.on('rejectionHandled', (promise) => { ``` ```cjs -const process = require('process'); +const process = require('node:process'); const unhandledRejections = new Map(); process.on('unhandledRejection', (reason, promise) => { @@ -341,7 +340,7 @@ changes: * `err` {Error} The uncaught exception. * `origin` {string} Indicates if the exception originates from an unhandled rejection or from a synchronous error. Can either be `'uncaughtException'` or - `'unhandledRejection'`. The latter is used when in an exception happens in a + `'unhandledRejection'`. The latter is used when an exception happens in a `Promise` based async context (or if a `Promise` is rejected) and [`--unhandled-rejections`][] flag set to `strict` or `throw` (which is the default) and the rejection is not handled, or when a rejection happens during @@ -358,7 +357,7 @@ provided exit code. Otherwise, in the presence of such handler the process will exit with 0. ```mjs -import process from 'process'; +import process from 'node:process'; process.on('uncaughtException', (err, origin) => { fs.writeSync( @@ -378,7 +377,7 @@ console.log('This will not run.'); ``` ```cjs -const process = require('process'); +const process = require('node:process'); process.on('uncaughtException', (err, origin) => { fs.writeSync( @@ -439,7 +438,7 @@ added: * `err` {Error} The uncaught exception. * `origin` {string} Indicates if the exception originates from an unhandled rejection or from synchronous errors. Can either be `'uncaughtException'` or - `'unhandledRejection'`. The latter is used when in an exception happens in a + `'unhandledRejection'`. The latter is used when an exception happens in a `Promise` based async context (or if a `Promise` is rejected) and [`--unhandled-rejections`][] flag set to `strict` or `throw` (which is the default) and the rejection is not handled, or when a rejection happens during @@ -454,7 +453,7 @@ once an `'uncaughtException'` event is emitted. The process will still crash if no `'uncaughtException'` listener is installed. ```mjs -import process from 'process'; +import process from 'node:process'; process.on('uncaughtExceptionMonitor', (err, origin) => { MyMonitoringTool.logSync(err, origin); @@ -466,7 +465,7 @@ nonexistentFunc(); ``` ```cjs -const process = require('process'); +const process = require('node:process'); process.on('uncaughtExceptionMonitor', (err, origin) => { MyMonitoringTool.logSync(err, origin); @@ -504,7 +503,7 @@ useful for detecting and keeping track of promises that were rejected whose rejections have not yet been handled. ```mjs -import process from 'process'; +import process from 'node:process'; process.on('unhandledRejection', (reason, promise) => { console.log('Unhandled Rejection at:', promise, 'reason:', reason); @@ -517,7 +516,7 @@ somePromise.then((res) => { ``` ```cjs -const process = require('process'); +const process = require('node:process'); process.on('unhandledRejection', (reason, promise) => { console.log('Unhandled Rejection at:', promise, 'reason:', reason); @@ -533,7 +532,7 @@ The following will also trigger the `'unhandledRejection'` event to be emitted: ```mjs -import process from 'process'; +import process from 'node:process'; function SomeResource() { // Initially set the loaded status to a rejected promise @@ -545,7 +544,7 @@ const resource = new SomeResource(); ``` ```cjs -const process = require('process'); +const process = require('node:process'); function SomeResource() { // Initially set the loaded status to a rejected promise @@ -584,7 +583,7 @@ Node.js can emit warnings whenever it detects bad coding practices that could lead to sub-optimal application performance, bugs, or security vulnerabilities. ```mjs -import process from 'process'; +import process from 'node:process'; process.on('warning', (warning) => { console.warn(warning.name); // Print the warning name @@ -594,7 +593,7 @@ process.on('warning', (warning) => { ``` ```cjs -const process = require('process'); +const process = require('node:process'); process.on('warning', (warning) => { console.warn(warning.name); // Print the warning name @@ -703,7 +702,7 @@ The name of each event will be the uppercase common name for the signal (e.g. `'SIGINT'` for `SIGINT` signals). ```mjs -import process from 'process'; +import process from 'node:process'; // Begin reading from stdin so the process does not exit. process.stdin.resume(); @@ -722,7 +721,7 @@ process.on('SIGTERM', handle); ``` ```cjs -const process = require('process'); +const process = require('node:process'); // Begin reading from stdin so the process does not exit. process.stdin.resume(); @@ -767,7 +766,7 @@ process.on('SIGTERM', handle); * `'SIGKILL'` cannot have a listener installed, it will unconditionally terminate Node.js on all platforms. * `'SIGSTOP'` cannot have a listener installed. -* `'SIGBUS'`, `'SIGFPE'`, `'SIGSEGV'` and `'SIGILL'`, when not raised +* `'SIGBUS'`, `'SIGFPE'`, `'SIGSEGV'`, and `'SIGILL'`, when not raised artificially using kill(2), inherently leave the process in a state from which it is not safe to call JS listeners. Doing so might cause the process to stop responding. @@ -829,7 +828,7 @@ passed through to V8 will contain underscores instead of non-leading dashes: ```mjs -import { allowedNodeEnvironmentFlags } from 'process'; +import { allowedNodeEnvironmentFlags } from 'node:process'; allowedNodeEnvironmentFlags.forEach((flag) => { // -r @@ -840,7 +839,7 @@ allowedNodeEnvironmentFlags.forEach((flag) => { ``` ```cjs -const { allowedNodeEnvironmentFlags } = require('process'); +const { allowedNodeEnvironmentFlags } = require('node:process'); allowedNodeEnvironmentFlags.forEach((flag) => { // -r @@ -871,13 +870,13 @@ Possible values are: `'arm'`, `'arm64'`, `'ia32'`, `'mips'`,`'mipsel'`, `'ppc'`, `'ppc64'`, `'s390'`, `'s390x'`, and `'x64'`. ```mjs -import { arch } from 'process'; +import { arch } from 'node:process'; console.log(`This processor architecture is ${arch}`); ``` ```cjs -const { arch } = require('process'); +const { arch } = require('node:process'); console.log(`This processor architecture is ${arch}`); ``` @@ -900,7 +899,7 @@ arguments. For example, assuming the following script for `process-args.js`: ```mjs -import { argv } from 'process'; +import { argv } from 'node:process'; // print process.argv argv.forEach((val, index) => { @@ -909,7 +908,7 @@ argv.forEach((val, index) => { ``` ```cjs -const { argv } = require('process'); +const { argv } = require('node:process'); // print process.argv argv.forEach((val, index) => { @@ -1008,7 +1007,7 @@ Node.js process or throws an exception if doing so fails (for instance, if the specified `directory` does not exist). ```mjs -import { chdir, cwd } from 'process'; +import { chdir, cwd } from 'node:process'; console.log(`Starting directory: ${cwd()}`); try { @@ -1020,7 +1019,7 @@ try { ``` ```cjs -const { chdir, cwd } = require('process'); +const { chdir, cwd } = require('node:process'); console.log(`Starting directory: ${cwd()}`); try { @@ -1128,7 +1127,7 @@ The result of a previous call to `process.cpuUsage()` can be passed as the argument to the function, to get a diff reading. ```mjs -import { cpuUsage } from 'process'; +import { cpuUsage } from 'node:process'; const startUsage = cpuUsage(); // { user: 38579, system: 6986 } @@ -1142,7 +1141,7 @@ console.log(cpuUsage(startUsage)); ``` ```cjs -const { cpuUsage } = require('process'); +const { cpuUsage } = require('node:process'); const startUsage = cpuUsage(); // { user: 38579, system: 6986 } @@ -1167,13 +1166,13 @@ The `process.cwd()` method returns the current working directory of the Node.js process. ```mjs -import { cwd } from 'process'; +import { cwd } from 'node:process'; console.log(`Current directory: ${cwd()}`); ``` ```cjs -const { cwd } = require('process'); +const { cwd } = require('node:process'); console.log(`Current directory: ${cwd()}`); ``` @@ -1189,13 +1188,13 @@ added: v0.7.2 The port used by the Node.js debugger when enabled. ```mjs -import process from 'process'; +import process from 'node:process'; process.debugPort = 5858; ``` ```cjs -const process = require('process'); +const process = require('node:process'); process.debugPort = 5858; ``` @@ -1250,9 +1249,9 @@ the call returns, by passing the `RTLD_NOW` constant. In this example the constant is assumed to be available. ```mjs -import { dlopen } from 'process'; -import { constants } from 'os'; -import { fileURLToPath } from 'url'; +import { dlopen } from 'node:process'; +import { constants } from 'node:os'; +import { fileURLToPath } from 'node:url'; const module = { exports: {} }; dlopen(module, fileURLToPath(new URL('local.node', import.meta.url)), @@ -1261,9 +1260,9 @@ module.exports.foo(); ``` ```cjs -const { dlopen } = require('process'); -const { constants } = require('os'); -const { join } = require('path'); +const { dlopen } = require('node:process'); +const { constants } = require('node:os'); +const { join } = require('node:path'); const module = { exports: {} }; dlopen(module, join(__dirname, 'local.node'), constants.dlopen.RTLD_NOW); @@ -1291,7 +1290,7 @@ specific process warnings. These can be listened for by adding a handler to the [`'warning'`][process_warning] event. ```mjs -import { emitWarning } from 'process'; +import { emitWarning } from 'node:process'; // Emit a warning with a code and additional detail. emitWarning('Something happened!', { @@ -1304,7 +1303,7 @@ emitWarning('Something happened!', { ``` ```cjs -const { emitWarning } = require('process'); +const { emitWarning } = require('node:process'); // Emit a warning with a code and additional detail. emitWarning('Something happened!', { @@ -1321,7 +1320,7 @@ In this example, an `Error` object is generated internally by [`'warning'`][process_warning] handler. ```mjs -import process from 'process'; +import process from 'node:process'; process.on('warning', (warning) => { console.warn(warning.name); // 'Warning' @@ -1333,7 +1332,7 @@ process.on('warning', (warning) => { ``` ```cjs -const process = require('process'); +const process = require('node:process'); process.on('warning', (warning) => { console.warn(warning.name); // 'Warning' @@ -1365,7 +1364,7 @@ specific process warnings. These can be listened for by adding a handler to the [`'warning'`][process_warning] event. ```mjs -import { emitWarning } from 'process'; +import { emitWarning } from 'node:process'; // Emit a warning using a string. emitWarning('Something happened!'); @@ -1373,7 +1372,7 @@ emitWarning('Something happened!'); ``` ```cjs -const { emitWarning } = require('process'); +const { emitWarning } = require('node:process'); // Emit a warning using a string. emitWarning('Something happened!'); @@ -1381,7 +1380,7 @@ emitWarning('Something happened!'); ``` ```mjs -import { emitWarning } from 'process'; +import { emitWarning } from 'node:process'; // Emit a warning using a string and a type. emitWarning('Something Happened!', 'CustomWarning'); @@ -1389,7 +1388,7 @@ emitWarning('Something Happened!', 'CustomWarning'); ``` ```cjs -const { emitWarning } = require('process'); +const { emitWarning } = require('node:process'); // Emit a warning using a string and a type. emitWarning('Something Happened!', 'CustomWarning'); @@ -1397,14 +1396,14 @@ emitWarning('Something Happened!', 'CustomWarning'); ``` ```mjs -import { emitWarning } from 'process'; +import { emitWarning } from 'node:process'; emitWarning('Something happened!', 'CustomWarning', 'WARN001'); // Emits: (node:56338) [WARN001] CustomWarning: Something happened! ``` ```cjs -const { emitWarning } = require('process'); +const { emitWarning } = require('node:process'); process.emitWarning('Something happened!', 'CustomWarning', 'WARN001'); // Emits: (node:56338) [WARN001] CustomWarning: Something happened! @@ -1415,7 +1414,7 @@ In each of the previous examples, an `Error` object is generated internally by handler. ```mjs -import process from 'process'; +import process from 'node:process'; process.on('warning', (warning) => { console.warn(warning.name); @@ -1426,7 +1425,7 @@ process.on('warning', (warning) => { ``` ```cjs -const process = require('process'); +const process = require('node:process'); process.on('warning', (warning) => { console.warn(warning.name); @@ -1441,7 +1440,7 @@ If `warning` is passed as an `Error` object, it will be passed through to the `code` and `ctor` arguments will be ignored): ```mjs -import { emitWarning } from 'process'; +import { emitWarning } from 'node:process'; // Emit a warning using an Error object. const myWarning = new Error('Something happened!'); @@ -1454,7 +1453,7 @@ emitWarning(myWarning); ``` ```cjs -const { emitWarning } = require('process'); +const { emitWarning } = require('node:process'); // Emit a warning using an Error object. const myWarning = new Error('Something happened!'); @@ -1485,11 +1484,10 @@ The following additional handling is implemented if the warning `type` is ### Avoiding duplicate warnings As a best practice, warnings should be emitted only once per process. To do -so, it is recommended to place the `emitWarning()` behind a simple boolean -flag as illustrated in the example below: +so, place the `emitWarning()` behind a boolean. ```mjs -import { emitWarning } from 'process'; +import { emitWarning } from 'node:process'; function emitMyWarning() { if (!emitMyWarning.warned) { @@ -1504,7 +1502,7 @@ emitMyWarning(); ``` ```cjs -const { emitWarning } = require('process'); +const { emitWarning } = require('node:process'); function emitMyWarning() { if (!emitMyWarning.warned) { @@ -1525,7 +1523,7 @@ added: v0.1.27 changes: - version: v11.14.0 pr-url: https://github.com/nodejs/node/pull/26544 - description: Worker threads will now use a copy of the parent thread’s + description: Worker threads will now use a copy of the parent thread's `process.env` by default, configurable through the `env` option of the `Worker` constructor. - version: v10.0.0 @@ -1569,14 +1567,14 @@ $ node -e 'process.env.foo = "bar"' && echo $foo While the following will: ```mjs -import { env } from 'process'; +import { env } from 'node:process'; env.foo = 'bar'; console.log(env.foo); ``` ```cjs -const { env } = require('process'); +const { env } = require('node:process'); env.foo = 'bar'; console.log(env.foo); @@ -1587,7 +1585,7 @@ to a string. **This behavior is deprecated.** Future versions of Node.js may throw an error when the value is not a string, number, or boolean. ```mjs -import { env } from 'process'; +import { env } from 'node:process'; env.test = null; console.log(env.test); @@ -1598,7 +1596,7 @@ console.log(env.test); ``` ```cjs -const { env } = require('process'); +const { env } = require('node:process'); env.test = null; console.log(env.test); @@ -1611,7 +1609,7 @@ console.log(env.test); Use `delete` to delete a property from `process.env`. ```mjs -import { env } from 'process'; +import { env } from 'node:process'; env.TEST = 1; delete env.TEST; @@ -1620,7 +1618,7 @@ console.log(env.TEST); ``` ```cjs -const { env } = require('process'); +const { env } = require('node:process'); env.TEST = 1; delete env.TEST; @@ -1631,7 +1629,7 @@ console.log(env.TEST); On Windows operating systems, environment variables are case-insensitive. ```mjs -import { env } from 'process'; +import { env } from 'node:process'; env.TEST = 1; console.log(env.test); @@ -1639,7 +1637,7 @@ console.log(env.test); ``` ```cjs -const { env } = require('process'); +const { env } = require('node:process'); env.TEST = 1; console.log(env.test); @@ -1648,7 +1646,7 @@ console.log(env.test); Unless explicitly specified when creating a [`Worker`][] instance, each [`Worker`][] thread has its own copy of `process.env`, based on its -parent thread’s `process.env`, or whatever was specified as the `env` option +parent thread's `process.env`, or whatever was specified as the `env` option to the [`Worker`][] constructor. Changes to `process.env` will not be visible across [`Worker`][] threads, and only the main thread can make changes that are visible to the operating system or to native add-ons. @@ -1725,13 +1723,13 @@ called. To exit with a 'failure' code: ```mjs -import { exit } from 'process'; +import { exit } from 'node:process'; exit(1); ``` ```cjs -const { exit } = require('process'); +const { exit } = require('node:process'); exit(1); ``` @@ -1753,7 +1751,7 @@ For instance, the following example illustrates a _misuse_ of the truncated and lost: ```mjs -import { exit } from 'process'; +import { exit } from 'node:process'; // This is an example of what *not* to do: if (someConditionNotMet()) { @@ -1763,7 +1761,7 @@ if (someConditionNotMet()) { ``` ```cjs -const { exit } = require('process'); +const { exit } = require('node:process'); // This is an example of what *not* to do: if (someConditionNotMet()) { @@ -1782,7 +1780,7 @@ Rather than calling `process.exit()` directly, the code _should_ set the scheduling any additional work for the event loop: ```mjs -import process from 'process'; +import process from 'node:process'; // How to properly set the exit code while letting // the process exit gracefully. @@ -1793,7 +1791,7 @@ if (someConditionNotMet()) { ``` ```cjs -const process = require('process'); +const process = require('node:process'); // How to properly set the exit code while letting // the process exit gracefully. @@ -1840,8 +1838,8 @@ containing the types of the active resources that are currently keeping the event loop alive. ```mjs -import { getActiveResourcesInfo } from 'process'; -import { setTimeout } from 'timers'; +import { getActiveResourcesInfo } from 'node:process'; +import { setTimeout } from 'node:timers'; console.log('Before:', getActiveResourcesInfo()); setTimeout(() => {}, 1000); @@ -1852,8 +1850,8 @@ console.log('After:', getActiveResourcesInfo()); ``` ```cjs -const { getActiveResourcesInfo } = require('process'); -const { setTimeout } = require('timers'); +const { getActiveResourcesInfo } = require('node:process'); +const { setTimeout } = require('node:timers'); console.log('Before:', getActiveResourcesInfo()); setTimeout(() => {}, 1000); @@ -1873,7 +1871,7 @@ The `process.getegid()` method returns the numerical effective group identity of the Node.js process. (See getegid(2).) ```mjs -import process from 'process'; +import process from 'node:process'; if (process.getegid) { console.log(`Current gid: ${process.getegid()}`); @@ -1881,7 +1879,7 @@ if (process.getegid) { ``` ```cjs -const process = require('process'); +const process = require('node:process'); if (process.getegid) { console.log(`Current gid: ${process.getegid()}`); @@ -1903,7 +1901,7 @@ The `process.geteuid()` method returns the numerical effective user identity of the process. (See geteuid(2).) ```mjs -import process from 'process'; +import process from 'node:process'; if (process.geteuid) { console.log(`Current uid: ${process.geteuid()}`); @@ -1911,7 +1909,7 @@ if (process.geteuid) { ``` ```cjs -const process = require('process'); +const process = require('node:process'); if (process.geteuid) { console.log(`Current uid: ${process.geteuid()}`); @@ -1933,7 +1931,7 @@ The `process.getgid()` method returns the numerical group identity of the process. (See getgid(2).) ```mjs -import process from 'process'; +import process from 'node:process'; if (process.getgid) { console.log(`Current gid: ${process.getgid()}`); @@ -1941,7 +1939,7 @@ if (process.getgid) { ``` ```cjs -const process = require('process'); +const process = require('node:process'); if (process.getgid) { console.log(`Current gid: ${process.getgid()}`); @@ -1964,7 +1962,7 @@ IDs. POSIX leaves it unspecified if the effective group ID is included but Node.js ensures it always is. ```mjs -import process from 'process'; +import process from 'node:process'; if (process.getgroups) { console.log(process.getgroups()); // [ 16, 21, 297 ] @@ -1972,7 +1970,7 @@ if (process.getgroups) { ``` ```cjs -const process = require('process'); +const process = require('node:process'); if (process.getgroups) { console.log(process.getgroups()); // [ 16, 21, 297 ] @@ -1994,7 +1992,7 @@ The `process.getuid()` method returns the numeric user identity of the process. (See getuid(2).) ```mjs -import process from 'process'; +import process from 'node:process'; if (process.getuid) { console.log(`Current uid: ${process.getuid()}`); @@ -2002,7 +2000,7 @@ if (process.getuid) { ``` ```cjs -const process = require('process'); +const process = require('node:process'); if (process.getuid) { console.log(`Current uid: ${process.getuid()}`); @@ -2052,7 +2050,7 @@ past, and not related to the time of day and therefore not subject to clock drift. The primary use is for measuring performance between intervals: ```mjs -import { hrtime } from 'process'; +import { hrtime } from 'node:process'; const NS_PER_SEC = 1e9; const time = hrtime(); @@ -2068,7 +2066,7 @@ setTimeout(() => { ``` ```cjs -const { hrtime } = require('process'); +const { hrtime } = require('node:process'); const NS_PER_SEC = 1e9; const time = hrtime(); @@ -2099,7 +2097,7 @@ argument since the difference can just be computed directly by subtraction of the two `bigint`s. ```mjs -import { hrtime } from 'process'; +import { hrtime } from 'node:process'; const start = hrtime.bigint(); // 191051479007711n @@ -2114,7 +2112,7 @@ setTimeout(() => { ``` ```cjs -const { hrtime } = require('process'); +const { hrtime } = require('node:process'); const start = hrtime.bigint(); // 191051479007711n @@ -2145,7 +2143,7 @@ access or the `CAP_SETGID` capability. Use care when dropping privileges: ```mjs -import { getgroups, initgroups, setgid } from 'process'; +import { getgroups, initgroups, setgid } from 'node:process'; console.log(getgroups()); // [ 0 ] initgroups('nodeuser', 1000); // switch user @@ -2155,7 +2153,7 @@ console.log(getgroups()); // [ 27, 30, 46, 1000 ] ``` ```cjs -const { getgroups, initgroups, setgid } = require('process'); +const { getgroups, initgroups, setgid } = require('node:process'); console.log(getgroups()); // [ 0 ] initgroups('nodeuser', 1000); // switch user @@ -2194,7 +2192,7 @@ signal sender, like the `kill` system call. The signal sent may do something other than kill the target process. ```mjs -import process, { kill } from 'process'; +import process, { kill } from 'node:process'; process.on('SIGHUP', () => { console.log('Got SIGHUP signal.'); @@ -2209,7 +2207,7 @@ kill(process.pid, 'SIGHUP'); ``` ```cjs -const process = require('process'); +const process = require('node:process'); process.on('SIGHUP', () => { console.log('Got SIGHUP signal.'); @@ -2272,7 +2270,7 @@ Returns an object describing the memory usage of the Node.js process measured in bytes. ```mjs -import { memoryUsage } from 'process'; +import { memoryUsage } from 'node:process'; console.log(memoryUsage()); // Prints: @@ -2286,7 +2284,7 @@ console.log(memoryUsage()); ``` ```cjs -const { memoryUsage } = require('process'); +const { memoryUsage } = require('node:process'); console.log(memoryUsage()); // Prints: @@ -2337,14 +2335,14 @@ This is the same value as the `rss` property provided by `process.memoryUsage()` but `process.memoryUsage.rss()` is faster. ```mjs -import { memoryUsage } from 'process'; +import { memoryUsage } from 'node:process'; console.log(memoryUsage.rss()); // 35655680 ``` ```cjs -const { rss } = require('process'); +const { rss } = require('node:process'); console.log(memoryUsage.rss()); // 35655680 @@ -2370,7 +2368,7 @@ create an infinite loop if one were to recursively call `process.nextTick()`. See the [Event Loop][] guide for more background. ```mjs -import { nextTick } from 'process'; +import { nextTick } from 'node:process'; console.log('start'); nextTick(() => { @@ -2384,7 +2382,7 @@ console.log('scheduled'); ``` ```cjs -const { nextTick } = require('process'); +const { nextTick } = require('node:process'); console.log('start'); nextTick(() => { @@ -2402,7 +2400,7 @@ to assign event handlers _after_ an object has been constructed but before any I/O has occurred: ```mjs -import { nextTick } from 'process'; +import { nextTick } from 'node:process'; function MyThing(options) { this.setupOptions(options); @@ -2419,7 +2417,7 @@ thing.getReadyForStuff(); ``` ```cjs -const { nextTick } = require('process'); +const { nextTick } = require('node:process'); function MyThing(options) { this.setupOptions(options); @@ -2467,7 +2465,7 @@ It is not clear whether `foo()` or `bar()` will be called first. The following approach is much better: ```mjs -import { nextTick } from 'process'; +import { nextTick } from 'node:process'; function definitelyAsync(arg, cb) { if (arg) { @@ -2480,7 +2478,7 @@ function definitelyAsync(arg, cb) { ``` ```cjs -const { nextTick } = require('process'); +const { nextTick } = require('node:process'); function definitelyAsync(arg, cb) { if (arg) { @@ -2501,7 +2499,7 @@ Node.js, every time the "next tick queue" is drained, the microtask queue is drained immediately after. ```mjs -import { nextTick } from 'process'; +import { nextTick } from 'node:process'; Promise.resolve().then(() => console.log(2)); queueMicrotask(() => console.log(3)); @@ -2513,7 +2511,7 @@ nextTick(() => console.log(1)); ``` ```cjs -const { nextTick } = require('process'); +const { nextTick } = require('node:process'); Promise.resolve().then(() => console.log(2)); queueMicrotask(() => console.log(3)); @@ -2595,13 +2593,13 @@ added: v0.1.15 The `process.pid` property returns the PID of the process. ```mjs -import { pid } from 'process'; +import { pid } from 'node:process'; console.log(`This process is pid ${pid}`); ``` ```cjs -const { pid } = require('process'); +const { pid } = require('node:process'); console.log(`This process is pid ${pid}`); ``` @@ -2628,13 +2626,13 @@ Currently possible values are: * `'win32'` ```mjs -import { platform } from 'process'; +import { platform } from 'node:process'; console.log(`This platform is ${platform}`); ``` ```cjs -const { platform } = require('process'); +const { platform } = require('node:process'); console.log(`This platform is ${platform}`); ``` @@ -2658,13 +2656,13 @@ The `process.ppid` property returns the PID of the parent of the current process. ```mjs -import { ppid } from 'process'; +import { ppid } from 'node:process'; console.log(`The parent process is pid ${ppid}`); ``` ```cjs -const { ppid } = require('process'); +const { ppid } = require('node:process'); console.log(`The parent process is pid ${ppid}`); ``` @@ -2756,13 +2754,13 @@ by log processing systems than the default multi-line format designed for human consumption. ```mjs -import { report } from 'process'; +import { report } from 'node:process'; console.log(`Reports are compact? ${report.compact}`); ``` ```cjs -const { report } = require('process'); +const { report } = require('node:process'); console.log(`Reports are compact? ${report.compact}`); ``` @@ -2786,13 +2784,13 @@ indicating that reports are written to the current working directory of the Node.js process. ```mjs -import { report } from 'process'; +import { report } from 'node:process'; console.log(`Report directory is ${report.directory}`); ``` ```cjs -const { report } = require('process'); +const { report } = require('node:process'); console.log(`Report directory is ${report.directory}`); ``` @@ -2816,13 +2814,13 @@ filename will be comprised of a timestamp, PID, and sequence number. The default value is the empty string. ```mjs -import { report } from 'process'; +import { report } from 'node:process'; console.log(`Report filename is ${report.filename}`); ``` ```cjs -const { report } = require('process'); +const { report } = require('node:process'); console.log(`Report filename is ${report.filename}`); ``` @@ -2847,24 +2845,24 @@ running process. The report's JavaScript stack trace is taken from `err`, if present. ```mjs -import { report } from 'process'; +import { report } from 'node:process'; const data = report.getReport(); console.log(data.header.nodejsVersion); // Similar to process.report.writeReport() -import fs from 'fs'; +import fs from 'node:fs'; fs.writeFileSync('my-report.log', util.inspect(data), 'utf8'); ``` ```cjs -const { report } = require('process'); +const { report } = require('node:process'); const data = report.getReport(); console.log(data.header.nodejsVersion); // Similar to process.report.writeReport() -const fs = require('fs'); +const fs = require('node:fs'); fs.writeFileSync('my-report.log', util.inspect(data), 'utf8'); ``` @@ -2887,13 +2885,13 @@ If `true`, a diagnostic report is generated on fatal errors, such as out of memory errors or failed C++ assertions. ```mjs -import { report } from 'process'; +import { report } from 'node:process'; console.log(`Report on fatal error: ${report.reportOnFatalError}`); ``` ```cjs -const { report } = require('process'); +const { report } = require('node:process'); console.log(`Report on fatal error: ${report.reportOnFatalError}`); ``` @@ -2916,13 +2914,13 @@ If `true`, a diagnostic report is generated when the process receives the signal specified by `process.report.signal`. ```mjs -import { report } from 'process'; +import { report } from 'node:process'; console.log(`Report on signal: ${report.reportOnSignal}`); ``` ```cjs -const { report } = require('process'); +const { report } = require('node:process'); console.log(`Report on signal: ${report.reportOnSignal}`); ``` @@ -2944,13 +2942,13 @@ changes: If `true`, a diagnostic report is generated on uncaught exception. ```mjs -import { report } from 'process'; +import { report } from 'node:process'; console.log(`Report on exception: ${report.reportOnUncaughtException}`); ``` ```cjs -const { report } = require('process'); +const { report } = require('node:process'); console.log(`Report on exception: ${report.reportOnUncaughtException}`); ``` @@ -2973,13 +2971,13 @@ The signal used to trigger the creation of a diagnostic report. Defaults to `'SIGUSR2'`. ```mjs -import { report } from 'process'; +import { report } from 'node:process'; console.log(`Report signal: ${report.signal}`); ``` ```cjs -const { report } = require('process'); +const { report } = require('node:process'); console.log(`Report signal: ${report.signal}`); ``` @@ -3010,13 +3008,13 @@ filename includes the date, time, PID, and a sequence number. The report's JavaScript stack trace is taken from `err`, if present. ```mjs -import { report } from 'process'; +import { report } from 'node:process'; report.writeReport(); ``` ```cjs -const { report } = require('process'); +const { report } = require('node:process'); report.writeReport(); ``` @@ -3073,7 +3071,7 @@ added: v12.6.0 time slice. This field is not supported on Windows. ```mjs -import { resourceUsage } from 'process'; +import { resourceUsage } from 'node:process'; console.log(resourceUsage()); /* @@ -3100,7 +3098,7 @@ console.log(resourceUsage()); ``` ```cjs -const { resourceUsage } = require('process'); +const { resourceUsage } = require('node:process'); console.log(resourceUsage()); /* @@ -3166,7 +3164,7 @@ name string. If a group name is specified, this method blocks while resolving the associated a numeric ID. ```mjs -import process from 'process'; +import process from 'node:process'; if (process.getegid && process.setegid) { console.log(`Current gid: ${process.getegid()}`); @@ -3180,7 +3178,7 @@ if (process.getegid && process.setegid) { ``` ```cjs -const process = require('process'); +const process = require('node:process'); if (process.getegid && process.setegid) { console.log(`Current gid: ${process.getegid()}`); @@ -3211,7 +3209,7 @@ string. If a username is specified, the method blocks while resolving the associated numeric ID. ```mjs -import process from 'process'; +import process from 'node:process'; if (process.geteuid && process.seteuid) { console.log(`Current uid: ${process.geteuid()}`); @@ -3225,7 +3223,7 @@ if (process.geteuid && process.seteuid) { ``` ```cjs -const process = require('process'); +const process = require('node:process'); if (process.geteuid && process.seteuid) { console.log(`Current uid: ${process.geteuid()}`); @@ -3256,7 +3254,7 @@ string. If a group name is specified, this method blocks while resolving the associated numeric ID. ```mjs -import process from 'process'; +import process from 'node:process'; if (process.getgid && process.setgid) { console.log(`Current gid: ${process.getgid()}`); @@ -3270,7 +3268,7 @@ if (process.getgid && process.setgid) { ``` ```cjs -const process = require('process'); +const process = require('node:process'); if (process.getgid && process.setgid) { console.log(`Current gid: ${process.getgid()}`); @@ -3302,7 +3300,7 @@ process to have `root` or the `CAP_SETGID` capability. The `groups` array can contain numeric group IDs, group names, or both. ```mjs -import process from 'process'; +import process from 'node:process'; if (process.getgroups && process.setgroups) { try { @@ -3315,7 +3313,7 @@ if (process.getgroups && process.setgroups) { ``` ```cjs -const process = require('process'); +const process = require('node:process'); if (process.getgroups && process.setgroups) { try { @@ -3345,7 +3343,7 @@ If a username is specified, the method blocks while resolving the associated numeric ID. ```mjs -import process from 'process'; +import process from 'node:process'; if (process.getuid && process.setuid) { console.log(`Current uid: ${process.getuid()}`); @@ -3359,7 +3357,7 @@ if (process.getuid && process.setuid) { ``` ```cjs -const process = require('process'); +const process = require('node:process'); if (process.getuid && process.setuid) { console.log(`Current uid: ${process.getuid()}`); @@ -3480,13 +3478,13 @@ a [Writable][] stream. For example, to copy `process.stdin` to `process.stdout`: ```mjs -import { stdin, stdout } from 'process'; +import { stdin, stdout } from 'node:process'; stdin.pipe(stdout); ``` ```cjs -const { stdin, stdout } = require('process'); +const { stdin, stdout } = require('node:process'); stdin.pipe(stdout); ``` @@ -3653,7 +3651,7 @@ added: v0.1.19 processes inherit the mask from the parent process. Returns the previous mask. ```mjs -import { umask } from 'process'; +import { umask } from 'node:process'; const newmask = 0o022; const oldmask = umask(newmask); @@ -3663,7 +3661,7 @@ console.log( ``` ```cjs -const { umask } = require('process'); +const { umask } = require('node:process'); const newmask = 0o022; const oldmask = umask(newmask); @@ -3699,14 +3697,14 @@ added: v0.1.3 The `process.version` property contains the Node.js version string. ```mjs -import { version } from 'process'; +import { version } from 'node:process'; console.log(`Version: ${version}`); // Version: v14.8.0 ``` ```cjs -const { version } = require('process'); +const { version } = require('node:process'); console.log(`Version: ${version}`); // Version: v14.8.0 @@ -3736,13 +3734,13 @@ ABI version, which is increased whenever a C++ API changes. Node.js will refuse to load modules that were compiled against a different module ABI version. ```mjs -import { versions } from 'process'; +import { versions } from 'node:process'; console.log(versions); ``` ```cjs -const { versions } = require('process'); +const { versions } = require('node:process'); console.log(versions); ``` diff --git a/doc/api/querystring.md b/doc/api/querystring.md index 32e9904553d568..a3db3c13a80a3d 100644 --- a/doc/api/querystring.md +++ b/doc/api/querystring.md @@ -8,11 +8,11 @@ -The `querystring` module provides utilities for parsing and formatting URL +The `node:querystring` module provides utilities for parsing and formatting URL query strings. It can be accessed using: ```js -const querystring = require('querystring'); +const querystring = require('node:querystring'); ``` The `querystring` API is considered Legacy. While it is still maintained, diff --git a/doc/api/readline.md b/doc/api/readline.md index a6751441010f94..816a0a2d1c52f7 100644 --- a/doc/api/readline.md +++ b/doc/api/readline.md @@ -6,18 +6,19 @@ -The `readline` module provides an interface for reading data from a [Readable][] -stream (such as [`process.stdin`][]) one line at a time. It can be accessed -using: +The `node:readline` module provides an interface for reading data from a +[Readable][] stream (such as [`process.stdin`][]) one line at a time. +It can be accessed using: ```js -const readline = require('readline'); +const readline = require('node:readline'); ``` -The following simple example illustrates the basic use of the `readline` module. +The following simple example illustrates the basic use of the `node:readline` +module. ```js -const readline = require('readline'); +const readline = require('node:readline'); const rl = readline.createInterface({ input: process.stdin, @@ -329,7 +330,7 @@ Promise that fulfills with the answer. If the question is canceled using an `AbortController` it will reject with an `AbortError`. ```js -const util = require('util'); +const util = require('node:util'); const question = util.promisify(rl.question).bind(rl); async function questionExample() { @@ -639,7 +640,7 @@ The `readline.createInterface()` method creates a new `readline.Interface` instance. ```js -const readline = require('readline'); +const readline = require('node:readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout @@ -767,7 +768,7 @@ The following example illustrates the use of `readline.Interface` class to implement a small command-line interface: ```js -const readline = require('readline'); +const readline = require('node:readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, @@ -794,13 +795,13 @@ rl.on('line', (line) => { ## Example: Read file stream line-by-Line -A common use case for `readline` is to consume an input file one line at a +A common use case for `node:readline` is to consume an input file one line at a time. The easiest way to do so is leveraging the [`fs.ReadStream`][] API as well as a `for await...of` loop: ```js -const fs = require('fs'); -const readline = require('readline'); +const fs = require('node:fs'); +const readline = require('node:readline'); async function processLineByLine() { const fileStream = fs.createReadStream('input.txt'); @@ -824,8 +825,8 @@ processLineByLine(); Alternatively, one could use the [`'line'`][] event: ```js -const fs = require('fs'); -const readline = require('readline'); +const fs = require('node:fs'); +const readline = require('node:readline'); const rl = readline.createInterface({ input: fs.createReadStream('sample.txt'), @@ -841,9 +842,9 @@ Currently, `for await...of` loop can be a bit slower. If `async` / `await` flow and speed are both essential, a mixed approach can be applied: ```js -const { once } = require('events'); -const { createReadStream } = require('fs'); -const { createInterface } = require('readline'); +const { once } = require('node:events'); +const { createReadStream } = require('node:fs'); +const { createInterface } = require('node:readline'); (async function processLineByLine() { try { diff --git a/doc/api/repl.md b/doc/api/repl.md index 4c75bdec2c4dbf..28dc5ecce55f51 100644 --- a/doc/api/repl.md +++ b/doc/api/repl.md @@ -6,17 +6,17 @@ -The `repl` module provides a Read-Eval-Print-Loop (REPL) implementation that -is available both as a standalone program or includible in other applications. -It can be accessed using: +The `node:repl` module provides a Read-Eval-Print-Loop (REPL) implementation +that is available both as a standalone program or includible in other +applications. It can be accessed using: ```js -const repl = require('repl'); +const repl = require('node:repl'); ``` ## Design and features -The `repl` module exports the [`repl.REPLServer`][] class. While running, +The `node:repl` module exports the [`repl.REPLServer`][] class. While running, instances of [`repl.REPLServer`][] will accept individual lines of user input, evaluate those according to a user-defined evaluation function, then output the result. Input and output may be from `stdin` and `stdout`, respectively, or may @@ -107,7 +107,7 @@ scope. It is possible to expose a variable to the REPL explicitly by assigning it to the `context` object associated with each `REPLServer`: ```js -const repl = require('repl'); +const repl = require('node:repl'); const msg = 'message'; repl.start('> ').context.m = msg; @@ -125,7 +125,7 @@ Context properties are not read-only by default. To specify read-only globals, context properties must be defined using `Object.defineProperty()`: ```js -const repl = require('repl'); +const repl = require('node:repl'); const msg = 'message'; const r = repl.start('> '); @@ -141,7 +141,7 @@ Object.defineProperty(r.context, 'm', { The default evaluator will automatically load Node.js core modules into the REPL environment when used. For instance, unless otherwise declared as a global or scoped variable, the input `fs` will be evaluated on-demand as -`global.fs = require('fs')`. +`global.fs = require('node:fs')`. ```console > fs.createReadStream('./some/file'); @@ -284,7 +284,7 @@ The following illustrates a hypothetical example of a REPL that performs translation of text from one language to another: ```js -const repl = require('repl'); +const repl = require('node:repl'); const { Translator } = require('translator'); const myTranslator = new Translator('en', 'fr'); @@ -355,7 +355,7 @@ function for the `writer` option on construction. The following example, for instance, simply converts any input text to upper case: ```js -const repl = require('repl'); +const repl = require('node:repl'); const r = repl.start({ prompt: '> ', eval: myEval, writer: myWriter }); @@ -381,7 +381,7 @@ Instances of `repl.REPLServer` are created using the [`repl.start()`][] method or directly using the JavaScript `new` keyword. ```js -const repl = require('repl'); +const repl = require('node:repl'); const options = { useColors: true }; @@ -425,7 +425,7 @@ This can be used primarily to re-initialize REPL context to some pre-defined state: ```js -const repl = require('repl'); +const repl = require('node:repl'); function initializeContext(context) { context.m = 'test'; @@ -476,7 +476,7 @@ properties: The following example shows two new commands added to the REPL instance: ```js -const repl = require('repl'); +const repl = require('node:repl'); const replServer = repl.start({ prompt: '> ' }); replServer.defineCommand('sayhello', { @@ -654,7 +654,7 @@ The `repl.start()` method creates and starts a [`repl.REPLServer`][] instance. If `options` is a string, then it specifies the input prompt: ```js -const repl = require('repl'); +const repl = require('node:repl'); // a Unix style prompt repl.start('$ '); @@ -662,9 +662,9 @@ repl.start('$ '); ## The Node.js REPL -Node.js itself uses the `repl` module to provide its own interactive interface -for executing JavaScript. This can be used by executing the Node.js binary -without passing any arguments (or by passing the `-i` argument): +Node.js itself uses the `node:repl` module to provide its own interactive +interface for executing JavaScript. This can be used by executing the Node.js +binary without passing any arguments (or by passing the `-i` argument): ```console $ node @@ -726,8 +726,8 @@ The following example, for instance, provides separate REPLs on `stdin`, a Unix socket, and a TCP socket: ```js -const net = require('net'); -const repl = require('repl'); +const net = require('node:net'); +const repl = require('node:repl'); let connections = 0; repl.start({ diff --git a/doc/api/report.md b/doc/api/report.md index cee349d00736fb..ecfd666775506c 100644 --- a/doc/api/report.md +++ b/doc/api/report.md @@ -131,11 +131,20 @@ is provided below for reference. } ], "javascriptHeap": { - "totalMemory": 6127616, - "totalCommittedMemory": 4357352, - "usedMemory": 3221136, - "availableMemory": 1521370240, - "memoryLimit": 1526909922, + "totalMemory": 5660672, + "executableMemory": 524288, + "totalCommittedMemory": 5488640, + "availableMemory": 4341379928, + "totalGlobalHandlesMemory": 8192, + "usedGlobalHandlesMemory": 3136, + "usedMemory": 4816432, + "memoryLimit": 4345298944, + "mallocedMemory": 254128, + "externalMemory": 315644, + "peakMallocedMemory": 98752, + "nativeContextCount": 1, + "detachedContextCount": 0, + "doesZapGarbage": 0, "heapSpaces": { "read_only_space": { "memorySize": 524288, @@ -515,7 +524,7 @@ Node.js report completed When a report is written, start and end messages are issued to stderr and the filename of the report is returned to the caller. The default filename -includes the date, time, PID and a sequence number. The sequence number helps +includes the date, time, PID, and a sequence number. The sequence number helps in associating the report dump with the runtime state if generated multiple times for the same Node.js process. @@ -542,7 +551,7 @@ Special meaning is attached to `stdout` and `stderr`. Usage of these will result in report being written to the associated standard streams. In cases where standard streams are used, the value in `directory` is ignored. URLs are not supported. Defaults to a composite filename that contains -timestamp, PID and sequence number. +timestamp, PID, and sequence number. `directory` specifies the filesystem directory where the report will be written. URLs are not supported. Defaults to the current working directory of the diff --git a/doc/api/stream.md b/doc/api/stream.md index 3771b66f4e8375..c0f6ec9e169c33 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -7,7 +7,7 @@ A stream is an abstract interface for working with streaming data in Node.js. -The `stream` module provides an API for implementing the stream interface. +The `node:stream` module provides an API for implementing the stream interface. There are many stream objects provided by Node.js. For instance, a [request to an HTTP server][http-incoming-message] and [`process.stdout`][] @@ -16,14 +16,14 @@ are both stream instances. Streams can be readable, writable, or both. All streams are instances of [`EventEmitter`][]. -To access the `stream` module: +To access the `node:stream` module: ```js -const stream = require('stream'); +const stream = require('node:stream'); ``` -The `stream` module is useful for creating new types of stream instances. It is -usually not necessary to use the `stream` module to consume streams. +The `node:stream` module is useful for creating new types of stream instances. +It is usually not necessary to use the `node:stream` module to consume streams. ## Organization of this document @@ -56,8 +56,8 @@ added: v15.0.0 The `stream/promises` API provides an alternative set of asynchronous utility functions for streams that return `Promise` objects rather than using -callbacks. The API is accessible via `require('stream/promises')` -or `require('stream').promises`. +callbacks. The API is accessible via `require('node:stream/promises')` +or `require('node:stream').promises`. ### Object mode @@ -134,7 +134,7 @@ manner. The following is an example of using streams in a Node.js application that implements an HTTP server: ```js -const http = require('http'); +const http = require('node:http'); const server = http.createServer((req, res) => { // `req` is an http.IncomingMessage, which is a readable stream. @@ -190,7 +190,7 @@ various ways to communicate the current state of the stream. Applications that are either writing data to or consuming data from a stream are not required to implement the stream interfaces directly and will generally -have no reason to call `require('stream')`. +have no reason to call `require('node:stream')`. Developers wishing to implement new types of streams should refer to the section [API for stream implementers][]. @@ -422,7 +422,7 @@ Use `end()` instead of destroy if data should flush before close, or wait for the `'drain'` event before destroying the stream. ```cjs -const { Writable } = require('stream'); +const { Writable } = require('node:stream'); const myStream = new Writable(); @@ -432,7 +432,7 @@ myStream.on('error', (fooErr) => console.error(fooErr.message)); // foo error ``` ```cjs -const { Writable } = require('stream'); +const { Writable } = require('node:stream'); const myStream = new Writable(); @@ -441,7 +441,7 @@ myStream.on('error', function wontHappen() {}); ``` ```cjs -const { Writable } = require('stream'); +const { Writable } = require('node:stream'); const myStream = new Writable(); myStream.destroy(); @@ -467,7 +467,7 @@ added: v8.0.0 Is `true` after [`writable.destroy()`][writable-destroy] has been called. ```cjs -const { Writable } = require('stream'); +const { Writable } = require('node:stream'); const myStream = new Writable(); @@ -513,7 +513,7 @@ Calling the [`stream.write()`][stream-write] method after calling ```js // Write 'hello, ' and then end with 'world!'. -const fs = require('fs'); +const fs = require('node:fs'); const file = fs.createWriteStream('example.txt'); file.write('hello, '); file.end('world!'); @@ -546,8 +546,8 @@ The `writable.uncork()` method flushes all data buffered since [`stream.cork()`][] was called. When using [`writable.cork()`][] and `writable.uncork()` to manage the buffering -of writes to a stream, it is recommended that calls to `writable.uncork()` be -deferred using `process.nextTick()`. Doing so allows batching of all +of writes to a stream, defer calls to `writable.uncork()` using +`process.nextTick()`. Doing so allows batching of all `writable.write()` calls that occur within a given Node.js event loop phase. ```js @@ -586,6 +586,18 @@ added: v11.4.0 Is `true` if it is safe to call [`writable.write()`][stream-write], which means the stream has not been destroyed, errored or ended. +##### `writable.writableAborted` + + + +> Stability: 1 - Experimental + +* {boolean} + +Returns whether the stream was destroyed or errored before emitting `'finish'`. + ##### `writable.writableEnded` + +> Stability: 1 - Experimental + +* `fn` {Function|AsyncFunction} a function to call on each chunk of the stream. + * `data` {any} a chunk of data from the stream. + * `options` {Object} + * `signal` {AbortSignal} aborted if the stream is destroyed allowing to + abort the `fn` call early. +* `options` {Object} + * `concurrency` {number} the maximum concurrent invocation of `fn` to call + on the stream at once. **Default:** `1`. + * `signal` {AbortSignal} allows destroying the stream if the signal is + aborted. +* Returns: {Promise} a promise evaluating to the first chunk for which `fn` + evaluated with a truthy value, or `undefined` if no element was found. + +This method is similar to `Array.prototype.find` and calls `fn` on each chunk +in the stream to find a chunk with a truthy value for `fn`. Once an `fn` call's +awaited return value is truthy, the stream is destroyed and the promise is +fulfilled with value for which `fn` returned a truthy value. If all of the +`fn` calls on the chunks return a falsy value, the promise is fulfilled with +`undefined`. + +```mjs +import { Readable } from 'node:stream'; +import { stat } from 'node:fs/promises'; + +// With a synchronous predicate. +await Readable.from([1, 2, 3, 4]).find((x) => x > 2); // 3 +await Readable.from([1, 2, 3, 4]).find((x) => x > 0); // 1 +await Readable.from([1, 2, 3, 4]).find((x) => x > 10); // undefined + +// With an asynchronous predicate, making at most 2 file checks at a time. +const foundBigFile = await Readable.from([ + 'file1', + 'file2', + 'file3', +]).find(async (fileName) => { + const stats = await stat(fileName); + return stat.size > 1024 * 1024; +}, { concurrency: 2 }); +console.log(foundBigFile); // File name of large file, if any file in the list is bigger than 1MB +console.log('done'); // Stream has finished +``` + ##### `readable.every(fn[, options])` -The `stream` module API has been designed to make it possible to easily +The `node:stream` module API has been designed to make it possible to easily implement streams using JavaScript's prototypal inheritance model. First, a stream developer would declare a new JavaScript class that extends one @@ -2786,7 +2849,7 @@ parent class constructor: ```js -const { Writable } = require('stream'); +const { Writable } = require('node:stream'); class MyWritable extends Writable { constructor({ highWaterMark, ...options }) { @@ -2837,7 +2900,7 @@ inheritance. This can be accomplished by directly creating instances of the objects and passing appropriate methods as constructor options. ```js -const { Writable } = require('stream'); +const { Writable } = require('node:stream'); const myWritable = new Writable({ construct(callback) { @@ -2885,7 +2948,7 @@ changes: * `options` {Object} * `highWaterMark` {number} Buffer level when [`stream.write()`][stream-write] starts returning `false`. **Default:** - `16384` (16 KB), or `16` for `objectMode` streams. + `16384` (16 KiB), or `16` for `objectMode` streams. * `decodeStrings` {boolean} Whether to encode `string`s passed to [`stream.write()`][stream-write] to `Buffer`s (with the encoding specified in the [`stream.write()`][stream-write] call) before passing @@ -2919,7 +2982,7 @@ changes: ```js -const { Writable } = require('stream'); +const { Writable } = require('node:stream'); class MyWritable extends Writable { constructor(options) { @@ -2933,8 +2996,8 @@ class MyWritable extends Writable { Or, when using pre-ES6 style constructors: ```js -const { Writable } = require('stream'); -const util = require('util'); +const { Writable } = require('node:stream'); +const util = require('node:util'); function MyWritable(options) { if (!(this instanceof MyWritable)) @@ -2947,7 +3010,7 @@ util.inherits(MyWritable, Writable); Or, using the simplified constructor approach: ```js -const { Writable } = require('stream'); +const { Writable } = require('node:stream'); const myWritable = new Writable({ write(chunk, encoding, callback) { @@ -2964,7 +3027,7 @@ Calling `abort` on the `AbortController` corresponding to the passed on the writeable stream. ```js -const { Writable } = require('stream'); +const { Writable } = require('node:stream'); const controller = new AbortController(); const myWritable = new Writable({ @@ -2999,8 +3062,8 @@ has returned, delaying any `_write()`, `_final()` and `_destroy()` calls until initialize resources before the stream can be used. ```js -const { Writable } = require('stream'); -const fs = require('fs'); +const { Writable } = require('node:stream'); +const fs = require('node:fs'); class WriteStream extends Writable { constructor(filename) { @@ -3156,7 +3219,7 @@ If a `Readable` stream pipes into a `Writable` stream when `Writable` emits an error, the `Readable` stream will be unpiped. ```js -const { Writable } = require('stream'); +const { Writable } = require('node:stream'); const myWritable = new Writable({ write(chunk, encoding, callback) { @@ -3177,7 +3240,7 @@ is not of any real particular usefulness, the example illustrates each of the required elements of a custom [`Writable`][] stream instance: ```js -const { Writable } = require('stream'); +const { Writable } = require('node:stream'); class MyWritable extends Writable { _write(chunk, encoding, callback) { @@ -3198,8 +3261,8 @@ characters encoding, such as UTF-8. The following example shows how to decode multi-byte strings using `StringDecoder` and [`Writable`][]. ```js -const { Writable } = require('stream'); -const { StringDecoder } = require('string_decoder'); +const { Writable } = require('node:stream'); +const { StringDecoder } = require('node:string_decoder'); class StringWritable extends Writable { constructor(options) { @@ -3258,7 +3321,7 @@ changes: * `options` {Object} * `highWaterMark` {number} The maximum [number of bytes][hwm-gotcha] to store in the internal buffer before ceasing to read from the underlying resource. - **Default:** `16384` (16 KB), or `16` for `objectMode` streams. + **Default:** `16384` (16 KiB), or `16` for `objectMode` streams. * `encoding` {string} If specified, then buffers will be decoded to strings using the specified encoding. **Default:** `null`. * `objectMode` {boolean} Whether this stream should behave @@ -3279,7 +3342,7 @@ changes: ```js -const { Readable } = require('stream'); +const { Readable } = require('node:stream'); class MyReadable extends Readable { constructor(options) { @@ -3293,8 +3356,8 @@ class MyReadable extends Readable { Or, when using pre-ES6 style constructors: ```js -const { Readable } = require('stream'); -const util = require('util'); +const { Readable } = require('node:stream'); +const util = require('node:util'); function MyReadable(options) { if (!(this instanceof MyReadable)) @@ -3307,7 +3370,7 @@ util.inherits(MyReadable, Readable); Or, using the simplified constructor approach: ```js -const { Readable } = require('stream'); +const { Readable } = require('node:stream'); const myReadable = new Readable({ read(size) { @@ -3321,7 +3384,7 @@ Calling `abort` on the `AbortController` corresponding to the passed on the readable created. ```js -const { Readable } = require('stream'); +const { Readable } = require('node:stream'); const controller = new AbortController(); const read = new Readable({ read(size) { @@ -3352,8 +3415,8 @@ called. This is useful to initialize state or asynchronously initialize resources before the stream can be used. ```js -const { Readable } = require('stream'); -const fs = require('fs'); +const { Readable } = require('node:stream'); +const fs = require('node:fs'); class ReadStream extends Readable { constructor(filename) { @@ -3525,7 +3588,7 @@ Throwing an `Error` from within [`readable._read()`][] or manually emitting an `'error'` event results in undefined behavior. ```js -const { Readable } = require('stream'); +const { Readable } = require('node:stream'); const myReadable = new Readable({ read(size) { @@ -3547,7 +3610,7 @@ The following is a basic example of a `Readable` stream that emits the numerals from 1 to 1,000,000 in ascending order, and then ends. ```js -const { Readable } = require('stream'); +const { Readable } = require('node:stream'); class Counter extends Readable { constructor(opt) { @@ -3618,7 +3681,7 @@ changes: ```js -const { Duplex } = require('stream'); +const { Duplex } = require('node:stream'); class MyDuplex extends Duplex { constructor(options) { @@ -3631,8 +3694,8 @@ class MyDuplex extends Duplex { Or, when using pre-ES6 style constructors: ```js -const { Duplex } = require('stream'); -const util = require('util'); +const { Duplex } = require('node:stream'); +const util = require('node:util'); function MyDuplex(options) { if (!(this instanceof MyDuplex)) @@ -3645,7 +3708,7 @@ util.inherits(MyDuplex, Duplex); Or, using the simplified constructor approach: ```js -const { Duplex } = require('stream'); +const { Duplex } = require('node:stream'); const myDuplex = new Duplex({ read(size) { @@ -3660,8 +3723,8 @@ const myDuplex = new Duplex({ When using pipeline: ```js -const { Transform, pipeline } = require('stream'); -const fs = require('fs'); +const { Transform, pipeline } = require('node:stream'); +const fs = require('node:fs'); pipeline( fs.createReadStream('object.json') @@ -3709,7 +3772,7 @@ incoming written data via the [`Writable`][] interface that is read back out via the [`Readable`][] interface. ```js -const { Duplex } = require('stream'); +const { Duplex } = require('node:stream'); const kSource = Symbol('source'); class MyDuplex extends Duplex { @@ -3750,7 +3813,7 @@ that accepts JavaScript numbers that are converted to hexadecimal strings on the `Readable` side. ```js -const { Transform } = require('stream'); +const { Transform } = require('node:stream'); // All Transform streams are also Duplex Streams. const myTransform = new Transform({ @@ -3815,7 +3878,7 @@ output on the `Readable` side is not consumed. ```js -const { Transform } = require('stream'); +const { Transform } = require('node:stream'); class MyTransform extends Transform { constructor(options) { @@ -3828,8 +3891,8 @@ class MyTransform extends Transform { Or, when using pre-ES6 style constructors: ```js -const { Transform } = require('stream'); -const util = require('util'); +const { Transform } = require('node:stream'); +const util = require('node:util'); function MyTransform(options) { if (!(this instanceof MyTransform)) @@ -3842,7 +3905,7 @@ util.inherits(MyTransform, Transform); Or, using the simplified constructor approach: ```js -const { Transform } = require('stream'); +const { Transform } = require('node:stream'); const myTransform = new Transform({ transform(chunk, encoding, callback) { @@ -3986,7 +4049,7 @@ A Node.js readable stream can be created from an asynchronous generator using the `Readable.from()` utility method: ```js -const { Readable } = require('stream'); +const { Readable } = require('node:stream'); const ac = new AbortController(); const signal = ac.signal; @@ -4015,9 +4078,9 @@ handling of backpressure and errors. [`stream.pipeline()`][] abstracts away the handling of backpressure and backpressure-related errors: ```js -const fs = require('fs'); -const { pipeline } = require('stream'); -const { pipeline: pipelinePromise } = require('stream/promises'); +const fs = require('node:fs'); +const { pipeline } = require('node:stream'); +const { pipeline: pipelinePromise } = require('node:stream/promises'); const writable = fs.createWriteStream('./file'); diff --git a/doc/api/string_decoder.md b/doc/api/string_decoder.md index a628a5a8a14cf4..70387d2edba696 100644 --- a/doc/api/string_decoder.md +++ b/doc/api/string_decoder.md @@ -6,18 +6,18 @@ -The `string_decoder` module provides an API for decoding `Buffer` objects into -strings in a manner that preserves encoded multi-byte UTF-8 and UTF-16 +The `node:string_decoder` module provides an API for decoding `Buffer` objects +into strings in a manner that preserves encoded multi-byte UTF-8 and UTF-16 characters. It can be accessed using: ```js -const { StringDecoder } = require('string_decoder'); +const { StringDecoder } = require('node:string_decoder'); ``` The following example shows the basic use of the `StringDecoder` class. ```js -const { StringDecoder } = require('string_decoder'); +const { StringDecoder } = require('node:string_decoder'); const decoder = new StringDecoder('utf8'); const cent = Buffer.from([0xC2, 0xA2]); @@ -36,7 +36,7 @@ In the following example, the three UTF-8 encoded bytes of the European Euro symbol (`€`) are written over three separate operations: ```js -const { StringDecoder } = require('string_decoder'); +const { StringDecoder } = require('node:string_decoder'); const decoder = new StringDecoder('utf8'); decoder.write(Buffer.from([0xE2])); diff --git a/doc/api/synopsis.md b/doc/api/synopsis.md index 79b881952475f6..78d17ad685bd26 100644 --- a/doc/api/synopsis.md +++ b/doc/api/synopsis.md @@ -19,7 +19,7 @@ Commands in this document start with `$` or `>` to replicate how they would appear in a user's terminal. Do not include the `$` and `>` characters. They are there to show the start of each command. -Lines that don’t start with `$` or `>` character show the output of the previous +Lines that don't start with `$` or `>` character show the output of the previous command. First, make sure to have downloaded and installed Node.js. See @@ -55,7 +55,7 @@ Open `hello-world.js` in any preferred text editor and paste in the following content: ```js -const http = require('http'); +const http = require('node:http'); const hostname = '127.0.0.1'; const port = 3000; diff --git a/doc/api/test.md b/doc/api/test.md new file mode 100644 index 00000000000000..0d822df2665799 --- /dev/null +++ b/doc/api/test.md @@ -0,0 +1,628 @@ +# Test runner + + + +> Stability: 1 - Experimental + + + +The `node:test` module facilitates the creation of JavaScript tests that +report results in [TAP][] format. To access it: + +```mjs +import test from 'node:test'; +``` + +```cjs +const test = require('node:test'); +``` + +This module is only available under the `node:` scheme. The following will not +work: + +```mjs +import test from 'test'; +``` + +```cjs +const test = require('test'); +``` + +Tests created via the `test` module consist of a single function that is +processed in one of three ways: + +1. A synchronous function that is considered failing if it throws an exception, + and is considered passing otherwise. +2. A function that returns a `Promise` that is considered failing if the + `Promise` rejects, and is considered passing if the `Promise` resolves. +3. A function that receives a callback function. If the callback receives any + truthy value as its first argument, the test is considered failing. If a + falsy value is passed as the first argument to the callback, the test is + considered passing. If the test function receives a callback function and + also returns a `Promise`, the test will fail. + +The following example illustrates how tests are written using the +`test` module. + +```js +test('synchronous passing test', (t) => { + // This test passes because it does not throw an exception. + assert.strictEqual(1, 1); +}); + +test('synchronous failing test', (t) => { + // This test fails because it throws an exception. + assert.strictEqual(1, 2); +}); + +test('asynchronous passing test', async (t) => { + // This test passes because the Promise returned by the async + // function is not rejected. + assert.strictEqual(1, 1); +}); + +test('asynchronous failing test', async (t) => { + // This test fails because the Promise returned by the async + // function is rejected. + assert.strictEqual(1, 2); +}); + +test('failing test using Promises', (t) => { + // Promises can be used directly as well. + return new Promise((resolve, reject) => { + setImmediate(() => { + reject(new Error('this will cause the test to fail')); + }); + }); +}); + +test('callback passing test', (t, done) => { + // done() is the callback function. When the setImmediate() runs, it invokes + // done() with no arguments. + setImmediate(done); +}); + +test('callback failing test', (t, done) => { + // When the setImmediate() runs, done() is invoked with an Error object and + // the test fails. + setImmediate(() => { + done(new Error('callback failure')); + }); +}); +``` + +As a test file executes, TAP is written to the standard output of the Node.js +process. This output can be interpreted by any test harness that understands +the TAP format. If any tests fail, the process exit code is set to `1`. + +## Subtests + +The test context's `test()` method allows subtests to be created. This method +behaves identically to the top level `test()` function. The following example +demonstrates the creation of a top level test with two subtests. + +```js +test('top level test', async (t) => { + await t.test('subtest 1', (t) => { + assert.strictEqual(1, 1); + }); + + await t.test('subtest 2', (t) => { + assert.strictEqual(2, 2); + }); +}); +``` + +In this example, `await` is used to ensure that both subtests have completed. +This is necessary because parent tests do not wait for their subtests to +complete. Any subtests that are still outstanding when their parent finishes +are cancelled and treated as failures. Any subtest failures cause the parent +test to fail. + +## Skipping tests + +Individual tests can be skipped by passing the `skip` option to the test, or by +calling the test context's `skip()` method. Both of these options support +including a message that is displayed in the TAP output as shown in the +following example. + +```js +// The skip option is used, but no message is provided. +test('skip option', { skip: true }, (t) => { + // This code is never executed. +}); + +// The skip option is used, and a message is provided. +test('skip option with message', { skip: 'this is skipped' }, (t) => { + // This code is never executed. +}); + +test('skip() method', (t) => { + // Make sure to return here as well if the test contains additional logic. + t.skip(); +}); + +test('skip() method with message', (t) => { + // Make sure to return here as well if the test contains additional logic. + t.skip('this is skipped'); +}); +``` + +## `describe`/`it` syntax + +Running tests can also be done using `describe` to declare a suite +and `it` to declare a test. +A suite is used to organize and group related tests together. +`it` is an alias for `test`, except there is no test context passed, +since nesting is done using suites, as demonstrated in this example + +```js +describe('A thing', () => { + it('should work', () => { + assert.strictEqual(1, 1); + }); + + it('should be ok', () => { + assert.strictEqual(2, 2); + }); + + describe('a nested thing', () => { + it('should work', () => { + assert.strictEqual(3, 3); + }); + }); +}); +``` + +`describe` and `it` are imported from the `node:test` module + +```mjs +import { describe, it } from 'node:test'; +``` + +```cjs +const { describe, it } = require('node:test'); +``` + +### `only` tests + +If Node.js is started with the [`--test-only`][] command-line option, it is +possible to skip all top level tests except for a selected subset by passing +the `only` option to the tests that should be run. When a test with the `only` +option set is run, all subtests are also run. The test context's `runOnly()` +method can be used to implement the same behavior at the subtest level. + +```js +// Assume Node.js is run with the --test-only command-line option. +// The 'only' option is set, so this test is run. +test('this test is run', { only: true }, async (t) => { + // Within this test, all subtests are run by default. + await t.test('running subtest'); + + // The test context can be updated to run subtests with the 'only' option. + t.runOnly(true); + await t.test('this subtest is now skipped'); + await t.test('this subtest is run', { only: true }); + + // Switch the context back to execute all tests. + t.runOnly(false); + await t.test('this subtest is now run'); + + // Explicitly do not run these tests. + await t.test('skipped subtest 3', { only: false }); + await t.test('skipped subtest 4', { skip: true }); +}); + +// The 'only' option is not set, so this test is skipped. +test('this test is not run', () => { + // This code is not run. + throw new Error('fail'); +}); +``` + +## Extraneous asynchronous activity + +Once a test function finishes executing, the TAP results are output as quickly +as possible while maintaining the order of the tests. However, it is possible +for the test function to generate asynchronous activity that outlives the test +itself. The test runner handles this type of activity, but does not delay the +reporting of test results in order to accommodate it. + +In the following example, a test completes with two `setImmediate()` +operations still outstanding. The first `setImmediate()` attempts to create a +new subtest. Because the parent test has already finished and output its +results, the new subtest is immediately marked as failed, and reported in the +top level of the file's TAP output. + +The second `setImmediate()` creates an `uncaughtException` event. +`uncaughtException` and `unhandledRejection` events originating from a completed +test are handled by the `test` module and reported as diagnostic warnings in +the top level of the file's TAP output. + +```js +test('a test that creates asynchronous activity', (t) => { + setImmediate(() => { + t.test('subtest that is created too late', (t) => { + throw new Error('error1'); + }); + }); + + setImmediate(() => { + throw new Error('error2'); + }); + + // The test finishes after this line. +}); +``` + +## Running tests from the command line + +The Node.js test runner can be invoked from the command line by passing the +[`--test`][] flag: + +```bash +node --test +``` + +By default, Node.js will recursively search the current directory for +JavaScript source files matching a specific naming convention. Matching files +are executed as test files. More information on the expected test file naming +convention and behavior can be found in the [test runner execution model][] +section. + +Alternatively, one or more paths can be provided as the final argument(s) to +the Node.js command, as shown below. + +```bash +node --test test1.js test2.mjs custom_test_dir/ +``` + +In this example, the test runner will execute the files `test1.js` and +`test2.mjs`. The test runner will also recursively search the +`custom_test_dir/` directory for test files to execute. + +### Test runner execution model + +When searching for test files to execute, the test runner behaves as follows: + +* Any files explicitly provided by the user are executed. +* If the user did not explicitly specify any paths, the current working + directory is recursively searched for files as specified in the following + steps. +* `node_modules` directories are skipped unless explicitly provided by the + user. +* If a directory named `test` is encountered, the test runner will search it + recursively for all all `.js`, `.cjs`, and `.mjs` files. All of these files + are treated as test files, and do not need to match the specific naming + convention detailed below. This is to accommodate projects that place all of + their tests in a single `test` directory. +* In all other directories, `.js`, `.cjs`, and `.mjs` files matching the + following patterns are treated as test files: + * `^test$` - Files whose basename is the string `'test'`. Examples: + `test.js`, `test.cjs`, `test.mjs`. + * `^test-.+` - Files whose basename starts with the string `'test-'` + followed by one or more characters. Examples: `test-example.js`, + `test-another-example.mjs`. + * `.+[\.\-\_]test$` - Files whose basename ends with `.test`, `-test`, or + `_test`, preceded by one or more characters. Examples: `example.test.js`, + `example-test.cjs`, `example_test.mjs`. + * Other file types understood by Node.js such as `.node` and `.json` are not + automatically executed by the test runner, but are supported if explicitly + provided on the command line. + +Each matching test file is executed in a separate child process. If the child +process finishes with an exit code of 0, the test is considered passing. +Otherwise, the test is considered to be a failure. Test files must be +executable by Node.js, but are not required to use the `node:test` module +internally. + +## `test([name][, options][, fn])` + + + +* `name` {string} The name of the test, which is displayed when reporting test + results. **Default:** The `name` property of `fn`, or `''` if `fn` + does not have a name. +* `options` {Object} Configuration options for the test. The following + properties are supported: + * `concurrency` {number|boolean} If a number is provided, + then that many tests would run in parallel. + If truthy, it would run (number of cpu cores - 1) + tests in parallel. + For subtests, it will be `Infinity` tests in parallel. + If falsy, it would only run one test at a time. + If unspecified, subtests inherit this value from their parent. + **Default:** `false`. + * `only` {boolean} If truthy, and the test context is configured to run + `only` tests, then this test will be run. Otherwise, the test is skipped. + **Default:** `false`. + * `signal` {AbortSignal} Allows aborting an in-progress test + * `skip` {boolean|string} If truthy, the test is skipped. If a string is + provided, that string is displayed in the test results as the reason for + skipping the test. **Default:** `false`. + * `todo` {boolean|string} If truthy, the test marked as `TODO`. If a string + is provided, that string is displayed in the test results as the reason why + the test is `TODO`. **Default:** `false`. + * `timeout` {number} A number of milliseconds the test will fail after. + If unspecified, subtests inherit this value from their parent. + **Default:** `Infinity`. +* `fn` {Function|AsyncFunction} The function under test. The first argument + to this function is a [`TestContext`][] object. If the test uses callbacks, + the callback function is passed as the second argument. **Default:** A no-op + function. +* Returns: {Promise} Resolved with `undefined` once the test completes. + +The `test()` function is the value imported from the `test` module. Each +invocation of this function results in the creation of a test point in the TAP +output. + +The `TestContext` object passed to the `fn` argument can be used to perform +actions related to the current test. Examples include skipping the test, adding +additional TAP diagnostic information, or creating subtests. + +`test()` returns a `Promise` that resolves once the test completes. The return +value can usually be discarded for top level tests. However, the return value +from subtests should be used to prevent the parent test from finishing first +and cancelling the subtest as shown in the following example. + +```js +test('top level test', async (t) => { + // The setTimeout() in the following subtest would cause it to outlive its + // parent test if 'await' is removed on the next line. Once the parent test + // completes, it will cancel any outstanding subtests. + await t.test('longer running subtest', async (t) => { + return new Promise((resolve, reject) => { + setTimeout(resolve, 1000); + }); + }); +}); +``` + +The `timeout` option can be used to fail the test if it takes longer than +`timeout` milliseconds to complete. However, it is not a reliable mechanism for +canceling tests because a running test might block the application thread and +thus prevent the scheduled cancellation. + +## `describe([name][, options][, fn])` + +* `name` {string} The name of the suite, which is displayed when reporting test + results. **Default:** The `name` property of `fn`, or `''` if `fn` + does not have a name. +* `options` {Object} Configuration options for the suite. + supports the same options as `test([name][, options][, fn])` +* `fn` {Function|AsyncFunction} The function under suite + declaring all subtests and subsuites. + The first argument to this function is a [`SuiteContext`][] object. + **Default:** A no-op function. +* Returns: `undefined`. + +The `describe()` function imported from the `node:test` module. Each +invocation of this function results in the creation of a Subtest +and a test point in the TAP output. +After invocation of top level `describe` functions, +all top level tests and suites will execute + +## `describe.skip([name][, options][, fn])` + +Shorthand for skipping a suite, same as [`describe([name], { skip: true }[, fn])`][describe options]. + +## `describe.todo([name][, options][, fn])` + +Shorthand for marking a suite as `TODO`, same as +[`describe([name], { todo: true }[, fn])`][describe options]. + +## `it([name][, options][, fn])` + +* `name` {string} The name of the test, which is displayed when reporting test + results. **Default:** The `name` property of `fn`, or `''` if `fn` + does not have a name. +* `options` {Object} Configuration options for the suite. + supports the same options as `test([name][, options][, fn])`. +* `fn` {Function|AsyncFunction} The function under test. + If the test uses callbacks, the callback function is passed as an argument. + **Default:** A no-op function. +* Returns: `undefined`. + +The `it()` function is the value imported from the `node:test` module. +Each invocation of this function results in the creation of a test point in the +TAP output. + +## `it.skip([name][, options][, fn])` + +Shorthand for skipping a test, +same as [`it([name], { skip: true }[, fn])`][it options]. + +## `it.todo([name][, options][, fn])` + +Shorthand for marking a test as `TODO`, +same as [`it([name], { todo: true }[, fn])`][it options]. + +## Class: `TestContext` + + + +An instance of `TestContext` is passed to each test function in order to +interact with the test runner. However, the `TestContext` constructor is not +exposed as part of the API. + +### `context.diagnostic(message)` + + + +* `message` {string} Message to be displayed as a TAP diagnostic. + +This function is used to write TAP diagnostics to the output. Any diagnostic +information is included at the end of the test's results. This function does +not return a value. + +```js +test('top level test', (t) => { + t.diagnostic('A diagnostic message'); +}); +``` + +### `context.runOnly(shouldRunOnlyTests)` + + + +* `shouldRunOnlyTests` {boolean} Whether or not to run `only` tests. + +If `shouldRunOnlyTests` is truthy, the test context will only run tests that +have the `only` option set. Otherwise, all tests are run. If Node.js was not +started with the [`--test-only`][] command-line option, this function is a +no-op. + +```js +test('top level test', (t) => { + // The test context can be set to run subtests with the 'only' option. + t.runOnly(true); + return Promise.all([ + t.test('this subtest is now skipped'), + t.test('this subtest is run', { only: true }), + ]); +}); +``` + +### `context.signal` + + + +* Can be used to abort test subtasks when the test has been aborted. + +```js +test('top level test', async (t) => { + await fetch('some/uri', { signal: t.signal }); +}); +``` + +### `context.skip([message])` + + + +* `message` {string} Optional skip message to be displayed in TAP output. + +This function causes the test's output to indicate the test as skipped. If +`message` is provided, it is included in the TAP output. Calling `skip()` does +not terminate execution of the test function. This function does not return a +value. + +```js +test('top level test', (t) => { + // Make sure to return here as well if the test contains additional logic. + t.skip('this is skipped'); +}); +``` + +### `context.todo([message])` + + + +* `message` {string} Optional `TODO` message to be displayed in TAP output. + +This function adds a `TODO` directive to the test's output. If `message` is +provided, it is included in the TAP output. Calling `todo()` does not terminate +execution of the test function. This function does not return a value. + +```js +test('top level test', (t) => { + // This test is marked as `TODO` + t.todo('this is a todo'); +}); +``` + +### `context.test([name][, options][, fn])` + + + +* `name` {string} The name of the subtest, which is displayed when reporting + test results. **Default:** The `name` property of `fn`, or `''` if + `fn` does not have a name. +* `options` {Object} Configuration options for the subtest. The following + properties are supported: + * `concurrency` {number} The number of tests that can be run at the same time. + If unspecified, subtests inherit this value from their parent. + **Default:** `1`. + * `only` {boolean} If truthy, and the test context is configured to run + `only` tests, then this test will be run. Otherwise, the test is skipped. + **Default:** `false`. + * `skip` {boolean|string} If truthy, the test is skipped. If a string is + provided, that string is displayed in the test results as the reason for + skipping the test. **Default:** `false`. + * `todo` {boolean|string} If truthy, the test marked as `TODO`. If a string + is provided, that string is displayed in the test results as the reason why + the test is `TODO`. **Default:** `false`. + * `timeout` {number} A number of milliseconds the test will fail after. + If unspecified, subtests inherit this value from their parent. + **Default:** `Infinity`. +* `fn` {Function|AsyncFunction} The function under test. The first argument + to this function is a [`TestContext`][] object. If the test uses callbacks, + the callback function is passed as the second argument. **Default:** A no-op + function. +* Returns: {Promise} Resolved with `undefined` once the test completes. + +This function is used to create subtests under the current test. This function +behaves in the same fashion as the top level [`test()`][] function. + +```js +test('top level test', async (t) => { + await t.test( + 'This is a subtest', + { only: false, skip: false, concurrency: 1, todo: false }, + (t) => { + assert.ok('some relevant assertion here'); + } + ); +}); +``` + +## Class: `SuiteContext` + + + +An instance of `SuiteContext` is passed to each suite function in order to +interact with the test runner. However, the `SuiteContext` constructor is not +exposed as part of the API. + +### `context.signal` + + + +* Can be used to abort test subtasks when the test has been aborted. + +[TAP]: https://testanything.org/ +[`--test-only`]: cli.md#--test-only +[`--test`]: cli.md#--test +[`SuiteContext`]: #class-suitecontext +[`TestContext`]: #class-testcontext +[`test()`]: #testname-options-fn +[describe options]: #describename-options-fn +[it options]: #testname-options-fn +[test runner execution model]: #test-runner-execution-model diff --git a/doc/api/timers.md b/doc/api/timers.md index decb2c1561645a..21878a8b8a83f4 100644 --- a/doc/api/timers.md +++ b/doc/api/timers.md @@ -8,7 +8,7 @@ The `timer` module exposes a global API for scheduling functions to be called at some future period of time. Because the timer functions are -globals, there is no need to call `require('timers')` to use the API. +globals, there is no need to call `require('node:timers')` to use the API. The timer functions within Node.js implement a similar API as the timers API provided by Web Browsers but use a different internal implementation that is @@ -251,7 +251,7 @@ returned Promises will be rejected with an `'AbortError'`. For `setImmediate()`: ```js -const { setImmediate: setImmediatePromise } = require('timers/promises'); +const { setImmediate: setImmediatePromise } = require('node:timers/promises'); const ac = new AbortController(); const signal = ac.signal; @@ -269,7 +269,7 @@ ac.abort(); For `setTimeout()`: ```js -const { setTimeout: setTimeoutPromise } = require('timers/promises'); +const { setTimeout: setTimeoutPromise } = require('node:timers/promises'); const ac = new AbortController(); const signal = ac.signal; @@ -329,7 +329,7 @@ changes: The `timers/promises` API provides an alternative set of timer functions that return `Promise` objects. The API is accessible via -`require('timers/promises')`. +`require('node:timers/promises')`. ```mjs import { @@ -344,7 +344,7 @@ const { setTimeout, setImmediate, setInterval, -} = require('timers/promises'); +} = require('node:timers/promises'); ``` ### `timersPromises.setTimeout([delay[, value[, options]]])` @@ -376,7 +376,7 @@ console.log(res); // Prints 'result' ```cjs const { setTimeout, -} = require('timers/promises'); +} = require('node:timers/promises'); setTimeout(100, 'result').then((res) => { console.log(res); // Prints 'result' @@ -410,7 +410,7 @@ console.log(res); // Prints 'result' ```cjs const { setImmediate, -} = require('timers/promises'); +} = require('node:timers/promises'); setImmediate('result').then((res) => { console.log(res); // Prints 'result' @@ -454,7 +454,7 @@ console.log(Date.now()); ```cjs const { setInterval, -} = require('timers/promises'); +} = require('node:timers/promises'); const interval = 100; (async function() { @@ -491,7 +491,7 @@ to calling `timersPromises.setTimeout(delay, undefined, options)` except that the `ref` option is not supported. ```mjs -import { scheduler } from 'timers/promises'; +import { scheduler } from 'node:timers/promises'; await scheduler.wait(1000); // Wait one second before continuing ``` diff --git a/doc/api/tls.md b/doc/api/tls.md index 3fd965ca0567eb..8ce894b9d9e4da 100644 --- a/doc/api/tls.md +++ b/doc/api/tls.md @@ -6,19 +6,19 @@ -The `tls` module provides an implementation of the Transport Layer Security +The `node:tls` module provides an implementation of the Transport Layer Security (TLS) and Secure Socket Layer (SSL) protocols that is built on top of OpenSSL. The module can be accessed using: ```js -const tls = require('tls'); +const tls = require('node:tls'); ``` ## Determining if crypto support is unavailable It is possible for Node.js to be built without including support for the -`crypto` module. In such cases, attempting to `import` from `tls` or -calling `require('tls')` will result in an error being thrown. +`node:crypto` module. In such cases, attempting to `import` from `tls` or +calling `require('node:tls')` will result in an error being thrown. When using CommonJS, the error thrown can be caught using try/catch: @@ -27,7 +27,7 @@ When using CommonJS, the error thrown can be caught using try/catch: ```cjs let tls; try { - tls = require('tls'); + tls = require('node:tls'); } catch (err) { console.log('tls support is disabled!'); } @@ -40,12 +40,12 @@ a preload module). When using ESM, if there is a chance that the code may be run on a build of Node.js where crypto support is not enabled, consider using the -`import()` function instead of the lexical `import` keyword: +[`import()`][] function instead of the lexical `import` keyword: ```mjs let tls; try { - tls = await import('tls'); + tls = await import('node:tls'); } catch (err) { console.log('tls support is disabled!'); } @@ -127,10 +127,10 @@ the character "E" appended to the traditional abbreviations): * [ECDHE][]: An ephemeral version of the Elliptic Curve Diffie-Hellman key-agreement protocol. -To use perfect forward secrecy using `DHE` with the `tls` module, it is required -to generate Diffie-Hellman parameters and specify them with the `dhparam` -option to [`tls.createSecureContext()`][]. The following illustrates the use of -the OpenSSL command-line interface to generate such parameters: +To use perfect forward secrecy using `DHE` with the `node:tls` module, it is +required to generate Diffie-Hellman parameters and specify them with the +`dhparam` option to [`tls.createSecureContext()`][]. The following illustrates +the use of the OpenSSL command-line interface to generate such parameters: ```bash openssl dhparam -outform PEM -out dhparam.pem 2048 @@ -243,7 +243,7 @@ handlers. The servers encrypt the entire session state and send it to the client as a "ticket". When reconnecting, the state is sent to the server -in the initial connection. This mechanism avoids the need for server-side +in the initial connection. This mechanism avoids the need for a server-side session cache. If the server doesn't use the ticket, for any reason (failure to decrypt it, it's too old, etc.), it will create a new session and send a new ticket. See [RFC 5077][] for more information. @@ -279,7 +279,7 @@ on disk, and they should be regenerated regularly. If clients advertise support for tickets, the server will send them. The server can disable tickets by supplying -`require('constants').SSL_OP_NO_TICKET` in `secureOptions`. +`require('node:constants').SSL_OP_NO_TICKET` in `secureOptions`. Both session identifiers and session tickets timeout, causing the server to create new sessions. The timeout can be configured with the `sessionTimeout` @@ -385,9 +385,6 @@ The default cipher suite prefers GCM ciphers for [Chrome's 'modern cryptography' setting][] and also prefers ECDHE and DHE ciphers for perfect forward secrecy, while offering _some_ backward compatibility. -128 bit AES is preferred over 192 and 256 bit AES in light of [specific -attacks affecting larger AES key sizes][]. - Old clients that rely on insecure and deprecated RC4 or DES-based ciphers (like Internet Explorer 6) cannot complete the handshaking process with the default configuration. If these clients _must_ be supported, the @@ -605,7 +602,7 @@ no OCSP response. Calling `callback(err)` will result in a `socket.destroy(err)` call. -The typical flow of an OCSP Request is as follows: +The typical flow of an OCSP request is as follows: 1. Client connects to the server and sends an `'OCSPRequest'` (via the status info extension in ClientHello). @@ -981,10 +978,10 @@ property is set only when `tlsSocket.authorized === false`. added: v0.11.4 --> -* Returns: {boolean} +* {boolean} -Returns `true` if the peer certificate was signed by one of the CAs specified -when creating the `tls.TLSSocket` instance, otherwise `false`. +This property is `true` if the peer certificate was signed by one of the CAs +specified when creating the `tls.TLSSocket` instance, otherwise `false`. ### `tlsSocket.disableRenegotiation()` @@ -1513,6 +1510,11 @@ Verifies the certificate `cert` is issued to `hostname`. Returns {Error} object, populating it with `reason`, `host`, and `cert` on failure. On success, returns {undefined}. +This function is intended to be used in combination with the +`checkServerIdentity` option that can be passed to [`tls.connect()`][] and as +such operates on a [certificate object][]. For other purposes, consider using +[`x509.checkHost()`][] instead. + This function can be overwritten by providing an alternative function as the `options.checkServerIdentity` option that is passed to `tls.connect()`. The overwriting function can call `tls.checkServerIdentity()` of course, to augment @@ -1586,7 +1588,7 @@ changes: * `socket` {stream.Duplex} Establish secure connection on a given socket rather than creating a new socket. Typically, this is an instance of [`net.Socket`][], but any `Duplex` stream is allowed. - If this option is specified, `path`, `host` and `port` are ignored, + If this option is specified, `path`, `host`, and `port` are ignored, except for certificate validation. Usually, a socket is already connected when passed to `tls.connect()`, but it can be connected later. Connection/disconnection/destruction of `socket` is the user's @@ -1621,8 +1623,8 @@ changes: More information can be found in the [RFC 4279][]. * `ALPNProtocols`: {string\[]|Buffer\[]|TypedArray\[]|DataView\[]|Buffer| TypedArray|DataView} - An array of strings, `Buffer`s or `TypedArray`s or `DataView`s, or a - single `Buffer` or `TypedArray` or `DataView` containing the supported ALPN + An array of strings, `Buffer`s, `TypedArray`s, or `DataView`s, or a + single `Buffer`, `TypedArray`, or `DataView` containing the supported ALPN protocols. `Buffer`s should have the format `[len][name][len][name]...` e.g. `'\x08http/1.1\x08http/1.0'`, where the `len` byte is the length of the next protocol name. Passing an array is usually much simpler, e.g. @@ -1676,8 +1678,8 @@ The following illustrates a client for the echo server example from ```js // Assumes an echo server that is listening on port 8000. -const tls = require('tls'); -const fs = require('fs'); +const tls = require('node:tls'); +const fs = require('node:fs'); const options = { // Necessary only if the server requires client certificate authentication. @@ -2008,8 +2010,8 @@ changes: * `options` {Object} * `ALPNProtocols`: {string\[]|Buffer\[]|TypedArray\[]|DataView\[]|Buffer| TypedArray|DataView} - An array of strings, `Buffer`s or `TypedArray`s or `DataView`s, or a single - `Buffer` or `TypedArray` or `DataView` containing the supported ALPN + An array of strings, `Buffer`s, `TypedArray`s, or `DataView`s, or a single + `Buffer`, `TypedArray`, or `DataView` containing the supported ALPN protocols. `Buffer`s should have the format `[len][name][len][name]...` e.g. `0x05hello0x05world`, where the first byte is the length of the next protocol name. Passing an array is usually much simpler, e.g. @@ -2068,7 +2070,7 @@ changes: in TLS 1.3. Upon failing to set pskIdentityHint `'tlsClientError'` will be emitted with `'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED'` code. * ...: Any [`tls.createSecureContext()`][] option can be provided. For - servers, the identity options (`pfx`, `key`/`cert` or `pskCallback`) + servers, the identity options (`pfx`, `key`/`cert`, or `pskCallback`) are usually required. * ...: Any [`net.createServer()`][] option can be provided. * `secureConnectionListener` {Function} @@ -2077,14 +2079,14 @@ changes: Creates a new [`tls.Server`][]. The `secureConnectionListener`, if provided, is automatically set as a listener for the [`'secureConnection'`][] event. -The `ticketKeys` options is automatically shared between `cluster` module +The `ticketKeys` options is automatically shared between `node:cluster` module workers. The following illustrates a simple echo server: ```js -const tls = require('tls'); -const fs = require('fs'); +const tls = require('node:tls'); +const fs = require('node:fs'); const options = { key: fs.readFileSync('server-key.pem'), @@ -2143,7 +2145,7 @@ added: v12.3.0 * {string\[]} An immutable array of strings representing the root certificates (in PEM format) -from the bundled Mozilla CA store as supplied by current Node.js version. +from the bundled Mozilla CA store as supplied by the current Node.js version. The bundled CA store, as supplied by Node.js, is a snapshot of Mozilla CA store that is fixed at release time. It is identical on all supported platforms. @@ -2219,6 +2221,7 @@ added: v11.4.0 [`SSL_export_keying_material`]: https://www.openssl.org/docs/man1.1.1/man3/SSL_export_keying_material.html [`SSL_get_version`]: https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html [`crypto.getCurves()`]: crypto.md#cryptogetcurves +[`import()`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import [`net.Server.address()`]: net.md#serveraddress [`net.Server`]: net.md#class-netserver [`net.Socket`]: net.md#class-netsocket @@ -2243,9 +2246,9 @@ added: v11.4.0 [`tls.createServer()`]: #tlscreateserveroptions-secureconnectionlistener [`tls.getCiphers()`]: #tlsgetciphers [`tls.rootCertificates`]: #tlsrootcertificates +[`x509.checkHost()`]: crypto.md#x509checkhostname-options [asn1.js]: https://www.npmjs.com/package/asn1.js [certificate object]: #certificate-object [cipher list format]: https://www.openssl.org/docs/man1.1.1/man1/ciphers.html#CIPHER-LIST-FORMAT [forward secrecy]: https://en.wikipedia.org/wiki/Perfect_forward_secrecy [perfect forward secrecy]: #perfect-forward-secrecy -[specific attacks affecting larger AES key sizes]: https://www.schneier.com/blog/archives/2009/07/another_new_aes.html diff --git a/doc/api/tracing.md b/doc/api/tracing.md index df76d985f71dbe..7766412ed0b75a 100644 --- a/doc/api/tracing.md +++ b/doc/api/tracing.md @@ -6,11 +6,11 @@ -The `trace_events` module provides a mechanism to centralize tracing information -generated by V8, Node.js core, and userspace code. +The `node:trace_events` module provides a mechanism to centralize tracing +information generated by V8, Node.js core, and userspace code. Tracing can be enabled with the `--trace-event-categories` command-line flag -or by using the `trace_events` module. The `--trace-event-categories` flag +or by using the `node:trace_events` module. The `--trace-event-categories` flag accepts a list of comma-separated category names. The available categories are: @@ -23,6 +23,7 @@ The available categories are: * `node.console`: Enables capture of `console.time()` and `console.count()` output. * `node.dns.native`: Enables capture of trace data for DNS queries. +* `node.net.native`: Enables capture of trace data for network. * `node.environment`: Enables capture of Node.js Environment milestones. * `node.fs.sync`: Enables capture of trace data for file system sync methods. * `node.perf`: Enables capture of [Performance API][] measurements. @@ -32,7 +33,7 @@ The available categories are: measurements. * `node.promises.rejections`: Enables capture of trace data tracking the number of unhandled Promise rejections and handled-after-rejections. -* `node.vm.script`: Enables capture of trace data for the `vm` module's +* `node.vm.script`: Enables capture of trace data for the `node:vm` module's `runInNewContext()`, `runInContext()`, and `runInThisContext()` methods. * `v8`: The [V8][] events are GC, compiling, and execution related. @@ -55,10 +56,10 @@ node --trace-events-enabled node --trace-event-categories v8,node,node.async_hooks ``` -Alternatively, trace events may be enabled using the `trace_events` module: +Alternatively, trace events may be enabled using the `node:trace_events` module: ```js -const trace_events = require('trace_events'); +const trace_events = require('node:trace_events'); const tracing = trace_events.createTracing({ categories: ['node.perf'] }); tracing.enable(); // Enable trace event capture for the 'node.perf' category @@ -98,7 +99,7 @@ unlike `process.hrtime()` which returns nanoseconds. The features from this module are not available in [`Worker`][] threads. -## The `trace_events` module +## The `node:trace_events` module -The `tty` module provides the `tty.ReadStream` and `tty.WriteStream` classes. -In most cases, it will not be necessary or possible to use this module directly. -However, it can be accessed using: +The `node:tty` module provides the `tty.ReadStream` and `tty.WriteStream` +classes. In most cases, it will not be necessary or possible to use this module +directly. However, it can be accessed using: ```js -const tty = require('tty'); +const tty = require('node:tty'); ``` When Node.js detects that it is being run with a text terminal ("TTY") diff --git a/doc/api/url.md b/doc/api/url.md index e6171bb6c29729..e4018dc6ba82f9 100644 --- a/doc/api/url.md +++ b/doc/api/url.md @@ -6,15 +6,15 @@ -The `url` module provides utilities for URL resolution and parsing. It can be -accessed using: +The `node:url` module provides utilities for URL resolution and parsing. It can +be accessed using: ```mjs -import url from 'url'; +import url from 'node:url'; ``` ```cjs -const url = require('url'); +const url = require('node:url'); ``` ## URL strings and URL objects @@ -23,8 +23,8 @@ A URL string is a structured string containing multiple meaningful components. When parsed, a URL object is returned containing properties for each of these components. -The `url` module provides two APIs for working with URLs: a legacy API that is -Node.js specific, and a newer API that implements the same +The `node:url` module provides two APIs for working with URLs: a legacy API that +is Node.js specific, and a newer API that implements the same [WHATWG URL Standard][] used by web browsers. A comparison between the WHATWG and Legacy APIs is provided below. Above the URL @@ -66,13 +66,13 @@ const myURL = Parsing the URL string using the Legacy API: ```mjs -import url from 'url'; +import url from 'node:url'; const myURL = url.parse('https://user:pass@sub.example.com:8080/p/a/t/h?query=string#hash'); ``` ```cjs -const url = require('url'); +const url = require('node:url'); const myURL = url.parse('https://user:pass@sub.example.com:8080/p/a/t/h?query=string#hash'); ``` @@ -147,12 +147,12 @@ The URL constructor is accessible as a property on the global object. It can also be imported from the built-in url module: ```mjs -import { URL } from 'url'; +import { URL } from 'node:url'; console.log(URL === globalThis.URL); // Prints 'true'. ``` ```cjs -console.log(URL === require('url').URL); // Prints 'true'. +console.log(URL === require('node:url').URL); // Prints 'true'. ``` A `TypeError` will be thrown if the `input` or `base` are not valid URLs. Note @@ -630,7 +630,7 @@ object and can be used to retrieve the `Blob` later. const { Blob, resolveObjectURL, -} = require('buffer'); +} = require('node:buffer'); const blob = new Blob(['hello']); const id = URL.createObjectURL(blob); @@ -660,7 +660,7 @@ added: v16.7.0 `URL.createObjectURL()`. Removes the stored {Blob} identified by the given ID. Attempting to revoke a -ID that isn’t registered will silently fail. +ID that isn't registered will silently fail. ### Class: `URLSearchParams` @@ -1005,7 +1005,7 @@ This feature is only available if the `node` executable was compiled with [ICU][] enabled. If not, the domain names are passed through unchanged. ```mjs -import url from 'url'; +import url from 'node:url'; console.log(url.domainToASCII('español.com')); // Prints xn--espaol-zwa.com @@ -1016,7 +1016,7 @@ console.log(url.domainToASCII('xn--iñvalid.com')); ``` ```cjs -const url = require('url'); +const url = require('node:url'); console.log(url.domainToASCII('español.com')); // Prints xn--espaol-zwa.com @@ -1046,7 +1046,7 @@ This feature is only available if the `node` executable was compiled with [ICU][] enabled. If not, the domain names are passed through unchanged. ```mjs -import url from 'url'; +import url from 'node:url'; console.log(url.domainToUnicode('xn--espaol-zwa.com')); // Prints español.com @@ -1057,7 +1057,7 @@ console.log(url.domainToUnicode('xn--iñvalid.com')); ``` ```cjs -const url = require('url'); +const url = require('node:url'); console.log(url.domainToUnicode('xn--espaol-zwa.com')); // Prints español.com @@ -1080,7 +1080,7 @@ This function ensures the correct decodings of percent-encoded characters as well as ensuring a cross-platform valid absolute path string. ```mjs -import { fileURLToPath } from 'url'; +import { fileURLToPath } from 'node:url'; const __filename = fileURLToPath(import.meta.url); @@ -1098,7 +1098,7 @@ fileURLToPath('file:///hello world'); // Correct: /hello world (POSIX) ``` ```cjs -const { fileURLToPath } = require('url'); +const { fileURLToPath } = require('node:url'); new URL('file:///C:/path/').pathname; // Incorrect: /C:/path/ fileURLToPath('file:///C:/path/'); // Correct: C:\path\ (Windows) @@ -1140,7 +1140,7 @@ any way. The `url.format(URL[, options])` method allows for basic customization of the output. ```mjs -import url from 'url'; +import url from 'node:url'; const myURL = new URL('https://a:b@測試?abc#foo'); console.log(myURL.href); @@ -1154,7 +1154,7 @@ console.log(url.format(myURL, { fragment: false, unicode: true, auth: false })); ``` ```cjs -const url = require('url'); +const url = require('node:url'); const myURL = new URL('https://a:b@測試?abc#foo'); console.log(myURL.href); @@ -1180,7 +1180,7 @@ This function ensures that `path` is resolved absolutely, and that the URL control characters are correctly encoded when converting into a File URL. ```mjs -import { pathToFileURL } from 'url'; +import { pathToFileURL } from 'node:url'; new URL('/foo#1', 'file:'); // Incorrect: file:///foo#1 pathToFileURL('/foo#1'); // Correct: file:///foo%231 (POSIX) @@ -1190,7 +1190,7 @@ pathToFileURL('/some/path%.c'); // Correct: file:///some/path%25.c (POSI ``` ```cjs -const { pathToFileURL } = require('url'); +const { pathToFileURL } = require('node:url'); new URL(__filename); // Incorrect: throws (POSIX) new URL(__filename); // Incorrect: C:\... (Windows) pathToFileURL(__filename); // Correct: file:///... (POSIX) @@ -1230,7 +1230,7 @@ This utility function converts a URL object into an ordinary options object as expected by the [`http.request()`][] and [`https.request()`][] APIs. ```mjs -import { urlToHttpOptions } from 'url'; +import { urlToHttpOptions } from 'node:url'; const myURL = new URL('https://a:b@測試?abc#foo'); console.log(urlToHttpOptions(myURL)); @@ -1249,7 +1249,7 @@ console.log(urlToHttpOptions(myURL)); ``` ```cjs -const { urlToHttpOptions } = require('url'); +const { urlToHttpOptions } = require('node:url'); const myURL = new URL('https://a:b@測試?abc#foo'); console.log(urlToHttpOptions(myUrl)); @@ -1295,7 +1295,8 @@ changes: > Stability: 3 - Legacy: Use the WHATWG URL API instead. -The legacy `urlObject` (`require('url').Url` or `import { Url } from 'url'`) is +The legacy `urlObject` (`require('node:url').Url` or +`import { Url } from 'node:url'`) is created and returned by the `url.parse()` function. #### `urlObject.auth` @@ -1424,7 +1425,7 @@ The `url.format()` method returns a formatted URL string derived from `urlObject`. ```js -const url = require('url'); +const url = require('node:url'); url.format({ protocol: 'https', hostname: 'example.com', @@ -1583,7 +1584,7 @@ The `url.resolve()` method resolves a target URL relative to a base URL in a manner similar to that of a web browser resolving an anchor tag. ```js -const url = require('url'); +const url = require('node:url'); url.resolve('/one/two/three', 'four'); // '/one/two/four' url.resolve('http://example.com/', '/one'); // 'http://example.com/one' url.resolve('http://example.com/one', '/two'); // 'http://example.com/two' diff --git a/doc/api/util.md b/doc/api/util.md index 6f320127d3e122..56bbd0d273005c 100644 --- a/doc/api/util.md +++ b/doc/api/util.md @@ -6,12 +6,12 @@ -The `util` module supports the needs of Node.js internal APIs. Many of the +The `node:util` module supports the needs of Node.js internal APIs. Many of the utilities are useful for application and module developers as well. To access it: ```js -const util = require('util'); +const util = require('node:util'); ``` ## `util.callbackify(original)` @@ -30,7 +30,7 @@ first argument will be the rejection reason (or `null` if the `Promise` resolved), and the second argument will be the resolved value. ```js -const util = require('util'); +const util = require('node:util'); async function fn() { return 'hello world'; @@ -90,7 +90,7 @@ environment variable, then the returned function operates similar to [`console.error()`][]. If not, then the returned function is a no-op. ```js -const util = require('util'); +const util = require('node:util'); const debuglog = util.debuglog('foo'); debuglog('hello from foo [%d]', 123); @@ -109,7 +109,7 @@ environment variable set, then it will not print anything. The `section` supports wildcard also: ```js -const util = require('util'); +const util = require('node:util'); const debuglog = util.debuglog('foo-bar'); debuglog('hi there, it\'s foo-bar [%d]', 2333); @@ -130,7 +130,7 @@ with a different function that doesn't have any initialization or unnecessary wrapping. ```js -const util = require('util'); +const util = require('node:util'); let debuglog = util.debuglog('internals', (debug) => { // Replace with a logging function that optimizes out // testing if the section is enabled @@ -153,7 +153,7 @@ then the returned value will be `true`. If not, then the returned value will be `false`. ```js -const util = require('util'); +const util = require('node:util'); const enabled = util.debuglog('foo').enabled; if (enabled) { console.log('hello from foo [%d]', 123); @@ -197,7 +197,7 @@ The `util.deprecate()` method wraps `fn` (which may be a function or class) in such a way that it is marked as deprecated. ```js -const util = require('util'); +const util = require('node:util'); exports.obsoleteFunction = util.deprecate(() => { // Do something here. @@ -214,7 +214,7 @@ If the same optional `code` is supplied in multiple calls to `util.deprecate()`, the warning will be emitted only once for that `code`. ```js -const util = require('util'); +const util = require('node:util'); const fn1 = util.deprecate(someFunction, someMessage, 'DEP0001'); const fn2 = util.deprecate(someOtherFunction, someOtherMessage, 'DEP0001'); @@ -260,7 +260,7 @@ changes: was not a string. - version: v11.4.0 pr-url: https://github.com/nodejs/node/pull/23708 - description: The `%d`, `%f` and `%i` specifiers now support Symbols + description: The `%d`, `%f`, and `%i` specifiers now support Symbols properly. - version: v11.4.0 pr-url: https://github.com/nodejs/node/pull/24806 @@ -433,8 +433,8 @@ As an additional convenience, `superConstructor` will be accessible through the `constructor.super_` property. ```js -const util = require('util'); -const EventEmitter = require('events'); +const util = require('node:util'); +const EventEmitter = require('node:events'); function MyStream() { EventEmitter.call(this); @@ -460,7 +460,7 @@ stream.write('It works!'); // Received data: "It works!" ES6 example using `class` and `extends`: ```js -const EventEmitter = require('events'); +const EventEmitter = require('node:events'); class MyStream extends EventEmitter { write(data) { @@ -532,7 +532,7 @@ changes: description: The `depth` default changed to `20`. - version: v11.0.0 pr-url: https://github.com/nodejs/node/pull/22756 - description: The inspection output is now limited to about 128 MB. Data + description: The inspection output is now limited to about 128 MiB. Data above that size will not be fully inspected. - version: v10.12.0 pr-url: https://github.com/nodejs/node/pull/22788 @@ -582,7 +582,7 @@ changes: * `showProxy` {boolean} If `true`, `Proxy` inspection includes the [`target` and `handler`][] objects. **Default:** `false`. * `maxArrayLength` {integer} Specifies the maximum number of `Array`, - [`TypedArray`][], [`WeakMap`][] and [`WeakSet`][] elements to include when + [`TypedArray`][], [`WeakMap`][], and [`WeakSet`][] elements to include when formatting. Set to `null` or `Infinity` to show all elements. Set to `0` or negative to show no elements. **Default:** `100`. * `maxStringLength` {integer} Specifies the maximum number of characters to @@ -638,7 +638,7 @@ util.inspect(baz); // '[foo] {}' Circular references point to their anchor by using a reference index: ```js -const { inspect } = require('util'); +const { inspect } = require('node:util'); const obj = {}; obj.a = [obj]; @@ -656,7 +656,7 @@ console.log(inspect(obj)); The following example inspects all properties of the `util` object: ```js -const util = require('util'); +const util = require('node:util'); console.log(util.inspect(util, { showHidden: true, depth: null })); ``` @@ -664,7 +664,7 @@ console.log(util.inspect(util, { showHidden: true, depth: null })); The following example highlights the effect of the `compact` option: ```js -const util = require('util'); +const util = require('node:util'); const o = { a: [1, 2, [[ @@ -720,7 +720,7 @@ guarantee which entries are displayed. That means retrieving the same with no remaining strong references may be garbage collected at any time. ```js -const { inspect } = require('util'); +const { inspect } = require('node:util'); const obj = { a: 1 }; const obj2 = { b: 2 }; @@ -734,8 +734,8 @@ The `sorted` option ensures that an object's property insertion order does not impact the result of `util.inspect()`. ```js -const { inspect } = require('util'); -const assert = require('assert'); +const { inspect } = require('node:util'); +const assert = require('node:assert'); const o1 = { b: [2, 3, 1], @@ -762,7 +762,7 @@ The `numericSeparator` option adds an underscore every three digits to all numbers. ```js -const { inspect } = require('util'); +const { inspect } = require('node:util'); const thousand = 1_000; const million = 1_000_000; @@ -774,7 +774,7 @@ console.log(thousand, million, bigNumber, bigDecimal); ``` `util.inspect()` is a synchronous method intended for debugging. Its maximum -output length is approximately 128 MB. Inputs that result in longer output will +output length is approximately 128 MiB. Inputs that result in longer output will be truncated. ### Customizing `util.inspect` colors @@ -886,7 +886,7 @@ which `util.inspect()` will invoke and use the result of when inspecting the object. ```js -const util = require('util'); +const util = require('node:util'); class Box { constructor(value) { @@ -921,7 +921,7 @@ a string but may return a value of any type that will be formatted accordingly by `util.inspect()`. ```js -const util = require('util'); +const util = require('node:util'); const obj = { foo: 'this will not show up in the inspect() output' }; obj[util.inspect.custom] = (depth) => { @@ -990,7 +990,7 @@ object containing one or more valid [`util.inspect()`][] options. Setting option properties directly is also supported. ```js -const util = require('util'); +const util = require('node:util'); const arr = Array(101).fill(0); console.log(arr); // Logs the truncated array @@ -1014,6 +1014,205 @@ Otherwise, returns `false`. See [`assert.deepStrictEqual()`][] for more information about deep strict equality. +## `util.parseArgs([config])` + + + +> Stability: 1 - Experimental + +* `config` {Object} Used to provide arguments for parsing and to configure + the parser. `config` supports the following properties: + * `args` {string\[]} array of argument strings. **Default:** `process.argv` + with `execPath` and `filename` removed. + * `options` {Object} Used to describe arguments known to the parser. + Keys of `options` are the long names of options and values are an + {Object} accepting the following properties: + * `type` {string} Type of argument, which must be either `boolean` or `string`. + * `multiple` {boolean} Whether this option can be provided multiple + times. If `true`, all values will be collected in an array. If + `false`, values for the option are last-wins. **Default:** `false`. + * `short` {string} A single character alias for the option. + * `strict` {boolean} Should an error be thrown when unknown arguments + are encountered, or when arguments are passed that do not match the + `type` configured in `options`. + **Default:** `true`. + * `allowPositionals` {boolean} Whether this command accepts positional + arguments. + **Default:** `false` if `strict` is `true`, otherwise `true`. + * `tokens` {boolean} Return the parsed tokens. This is useful for extending + the built-in behavior, from adding additional checks through to reprocessing + the tokens in different ways. + **Default:** `false`. + +* Returns: {Object} The parsed command line arguments: + * `values` {Object} A mapping of parsed option names with their {string} + or {boolean} values. + * `positionals` {string\[]} Positional arguments. + * `tokens` {Object\[] | undefined} See [parseArgs tokens](#parseargs-tokens) + section. Only returned if `config` includes `tokens: true`. + +Provides a higher level API for command-line argument parsing than interacting +with `process.argv` directly. Takes a specification for the expected arguments +and returns a structured object with the parsed options and positionals. + +```mjs +import { parseArgs } from 'node:util'; +const args = ['-f', '--bar', 'b']; +const options = { + foo: { + type: 'boolean', + short: 'f' + }, + bar: { + type: 'string' + } +}; +const { + values, + positionals +} = parseArgs({ args, options }); +console.log(values, positionals); +// Prints: [Object: null prototype] { foo: true, bar: 'b' } [] +``` + +```cjs +const { parseArgs } = require('node:util'); +const args = ['-f', '--bar', 'b']; +const options = { + foo: { + type: 'boolean', + short: 'f' + }, + bar: { + type: 'string' + } +}; +const { + values, + positionals +} = parseArgs({ args, options }); +console.log(values, positionals); +// Prints: [Object: null prototype] { foo: true, bar: 'b' } [] +``` + +`util.parseArgs` is experimental and behavior may change. Join the +conversation in [pkgjs/parseargs][] to contribute to the design. + +### `parseArgs` `tokens` + +Detailed parse information is available for adding custom behaviours by +specifying `tokens: true` in the configuration. +The returned tokens have properties describing: + +* all tokens + * `kind` {string} One of 'option', 'positional', or 'option-terminator'. + * `index` {number} Index of element in `args` containing token. So the + source argument for a token is `args[token.index]`. +* option tokens + * `name` {string} Long name of option. + * `rawName` {string} How option used in args, like `-f` of `--foo`. + * `value` {string | undefined} Option value specified in args. + Undefined for boolean options. + * `inlineValue` {boolean | undefined} Whether option value specified inline, + like `--foo=bar`. +* positional tokens + * `value` {string} The value of the positional argument in args (i.e. `args[index]`). +* option-terminator token + +The returned tokens are in the order encountered in the input args. Options +that appear more than once in args produce a token for each use. Short option +groups like `-xy` expand to a token for each option. So `-xxx` produces +three tokens. + +For example to use the returned tokens to add support for a negated option +like `--no-color`, the tokens can be reprocessed to change the value stored +for the negated option. + +```mjs +import { parseArgs } from 'node:util'; + +const options = { + 'color': { type: 'boolean' }, + 'no-color': { type: 'boolean' }, + 'logfile': { type: 'string' }, + 'no-logfile': { type: 'boolean' }, +}; +const { values, tokens } = parseArgs({ options, tokens: true }); + +// Reprocess the option tokens and overwrite the returned values. +tokens + .filter((token) => token.kind === 'option') + .forEach((token) => { + if (token.name.startsWith('no-')) { + // Store foo:false for --no-foo + const positiveName = token.name.slice(3); + values[positiveName] = false; + delete values[token.name]; + } else { + // Resave value so last one wins if both --foo and --no-foo. + values[token.name] = token.value ?? true; + } + }); + +const color = values.color; +const logfile = values.logfile ?? 'default.log'; + +console.log({ logfile, color }); +``` + +```cjs +const { parseArgs } = require('node:util'); + +const options = { + 'color': { type: 'boolean' }, + 'no-color': { type: 'boolean' }, + 'logfile': { type: 'string' }, + 'no-logfile': { type: 'boolean' }, +}; +const { values, tokens } = parseArgs({ options, tokens: true }); + +// Reprocess the option tokens and overwrite the returned values. +tokens + .filter((token) => token.kind === 'option') + .forEach((token) => { + if (token.name.startsWith('no-')) { + // Store foo:false for --no-foo + const positiveName = token.name.slice(3); + values[positiveName] = false; + delete values[token.name]; + } else { + // Resave value so last one wins if both --foo and --no-foo. + values[token.name] = token.value ?? true; + } + }); + +const color = values.color; +const logfile = values.logfile ?? 'default.log'; + +console.log({ logfile, color }); +``` + +Example usage showing negated options, and when an option is used +multiple ways then last one wins. + +```console +$ node negate.js +{ logfile: 'default.log', color: undefined } +$ node negate.js --no-logfile --no-color +{ logfile: false, color: false } +$ node negate.js --logfile=test.log --color +{ logfile: 'test.log', color: true } +$ node negate.js --no-logfile --logfile=test.log --color --no-color +{ logfile: 'test.log', color: false } +``` + ## `util.promisify(original)` -The `v8` module exposes APIs that are specific to the version of [V8][] +The `node:v8` module exposes APIs that are specific to the version of [V8][] built into the Node.js binary. It can be accessed using: ```js -const v8 = require('v8'); +const v8 = require('node:v8'); ``` ## `v8.cachedDataVersionTag()` @@ -80,7 +80,7 @@ for a duration depending on the heap size. ```js // Print heap snapshot to the console -const v8 = require('v8'); +const v8 = require('node:v8'); const stream = v8.getHeapSnapshot(); stream.pipe(process.stdout); ``` @@ -180,6 +180,9 @@ Returns an object with the following properties: * `does_zap_garbage` {number} * `number_of_native_contexts` {number} * `number_of_detached_contexts` {number} +* `total_global_handles_size` {number} +* `used_global_handles_size` {number} +* `external_memory` {number} `does_zap_garbage` is a 0/1 boolean, which signifies whether the `--zap_code_space` option is enabled or not. This makes V8 overwrite heap @@ -195,6 +198,15 @@ a memory leak. of contexts that were detached and not yet garbage collected. This number being non-zero indicates a potential memory leak. +`total_global_handles_size` The value of total\_global\_handles\_size is the +total memory size of V8 global handles. + +`used_global_handles_size` The value of used\_global\_handles\_size is the +used memory size of V8 global handles. + +`external_memory` The value of external\_memory is the memory size of array +buffers and external strings. + ```js @@ -209,7 +221,10 @@ being non-zero indicates a potential memory leak. peak_malloced_memory: 1127496, does_zap_garbage: 0, number_of_native_contexts: 1, - number_of_detached_contexts: 0 + number_of_detached_contexts: 0, + total_global_handles_size: 8192, + used_global_handles_size: 3296, + external_memory: 318824 } ``` @@ -233,7 +248,7 @@ Usage: ```js // Print GC events to stdout for one minute. -const v8 = require('v8'); +const v8 = require('node:v8'); v8.setFlagsFromString('--trace_gc'); setTimeout(() => { v8.setFlagsFromString('--notrace_gc'); }, 60e3); ``` @@ -299,12 +314,12 @@ Generating a snapshot is a synchronous operation which blocks the event loop for a duration depending on the heap size. ```js -const { writeHeapSnapshot } = require('v8'); +const { writeHeapSnapshot } = require('node:v8'); const { Worker, isMainThread, parentPort -} = require('worker_threads'); +} = require('node:worker_threads'); if (isMainThread) { const worker = new Worker(__filename); @@ -428,7 +443,7 @@ For use inside of a custom [`serializer._writeHostObject()`][]. * `buffer` {Buffer|TypedArray|DataView} -Write raw bytes into the serializer’s internal buffer. The deserializer +Write raw bytes into the serializer's internal buffer. The deserializer will require a way to compute the length of the buffer. For use inside of a custom [`serializer._writeHostObject()`][]. @@ -543,7 +558,7 @@ For use inside of a custom [`deserializer._readHostObject()`][]. * `length` {integer} * Returns: {Buffer} -Read raw bytes from the deserializer’s internal buffer. The `length` parameter +Read raw bytes from the deserializer's internal buffer. The `length` parameter must correspond to the length of the buffer that was passed to [`serializer.writeRawBytes()`][]. For use inside of a custom [`deserializer._readHostObject()`][]. @@ -584,7 +599,7 @@ module to produce promise lifecycle events in addition to events for other async resources. For request context management, see [`AsyncLocalStorage`][]. ```mjs -import { promiseHooks } from 'v8'; +import { promiseHooks } from 'node:v8'; // There are four lifecycle events produced by promises: @@ -651,13 +666,13 @@ added: v16.14.0 throw as it would produce an infinite microtask loop.** ```mjs -import { promiseHooks } from 'v8'; +import { promiseHooks } from 'node:v8'; const stop = promiseHooks.onInit((promise, parent) => {}); ``` ```cjs -const { promiseHooks } = require('v8'); +const { promiseHooks } = require('node:v8'); const stop = promiseHooks.onInit((promise, parent) => {}); ``` @@ -676,13 +691,13 @@ added: v16.14.0 throw as it would produce an infinite microtask loop.** ```mjs -import { promiseHooks } from 'v8'; +import { promiseHooks } from 'node:v8'; const stop = promiseHooks.onSettled((promise) => {}); ``` ```cjs -const { promiseHooks } = require('v8'); +const { promiseHooks } = require('node:v8'); const stop = promiseHooks.onSettled((promise) => {}); ``` @@ -701,13 +716,13 @@ added: v16.14.0 throw as it would produce an infinite microtask loop.** ```mjs -import { promiseHooks } from 'v8'; +import { promiseHooks } from 'node:v8'; const stop = promiseHooks.onBefore((promise) => {}); ``` ```cjs -const { promiseHooks } = require('v8'); +const { promiseHooks } = require('node:v8'); const stop = promiseHooks.onBefore((promise) => {}); ``` @@ -726,13 +741,13 @@ added: v16.14.0 throw as it would produce an infinite microtask loop.** ```mjs -import { promiseHooks } from 'v8'; +import { promiseHooks } from 'node:v8'; const stop = promiseHooks.onAfter((promise) => {}); ``` ```cjs -const { promiseHooks } = require('v8'); +const { promiseHooks } = require('node:v8'); const stop = promiseHooks.onAfter((promise) => {}); ``` @@ -764,7 +779,7 @@ specifics of all functions that can be passed to `callbacks` is in the [Hook Callbacks][] section. ```mjs -import { promiseHooks } from 'v8'; +import { promiseHooks } from 'node:v8'; const stopAll = promiseHooks.createHook({ init(promise, parent) {} @@ -772,7 +787,7 @@ const stopAll = promiseHooks.createHook({ ``` ```cjs -const { promiseHooks } = require('v8'); +const { promiseHooks } = require('node:v8'); const stopAll = promiseHooks.createHook({ init(promise, parent) {} @@ -838,6 +853,137 @@ Called immediately after a promise continuation executes. This may be after a Called when the promise receives a resolution or rejection value. This may occur synchronously in the case of `Promise.resolve()` or `Promise.reject()`. +## Startup Snapshot API + + + +> Stability: 1 - Experimental + +The `v8.startupSnapshot` interface can be used to add serialization and +deserialization hooks for custom startup snapshots. Currently the startup +snapshots can only be built into the Node.js binary from source. + +```console +$ cd /path/to/node +$ ./configure --node-snapshot-main=entry.js +$ make node +# This binary contains the result of the execution of entry.js +$ out/Release/node +``` + +In the example above, `entry.js` can use methods from the `v8.startupSnapshot` +interface to specify how to save information for custom objects in the snapshot +during serialization and how the information can be used to synchronize these +objects during deserialization of the snapshot. For example, if the `entry.js` +contains the following script: + +```cjs +'use strict'; + +const fs = require('fs'); +const zlib = require('zlib'); +const path = require('path'); +const assert = require('assert'); + +const { + isBuildingSnapshot, + addSerializeCallback, + addDeserializeCallback, + setDeserializeMainFunction +} = require('v8').startupSnapshot; + +const filePath = path.resolve(__dirname, '../x1024.txt'); +const storage = {}; + +assert(isBuildingSnapshot()); + +addSerializeCallback(({ filePath }) => { + storage[filePath] = zlib.gzipSync(fs.readFileSync(filePath)); +}, { filePath }); + +addDeserializeCallback(({ filePath }) => { + storage[filePath] = zlib.gunzipSync(storage[filePath]); +}, { filePath }); + +setDeserializeMainFunction(({ filePath }) => { + console.log(storage[filePath].toString()); +}, { filePath }); +``` + +The resulted binary will simply print the data deserialized from the snapshot +during start up: + +```console +$ out/Release/node +# Prints content of ./test/fixtures/x1024.txt +``` + +Currently the API is only available to a Node.js instance launched from the +default snapshot, that is, the application deserialized from a user-land +snapshot cannot use these APIs again. + +### `v8.startupSnapshot.addSerializeCallback(callback[, data])` + + + +* `callback` {Function} Callback to be invoked before serialization. +* `data` {any} Optional data that will be passed to the `callback` when it + gets called. + +Add a callback that will be called when the Node.js instance is about to +get serialized into a snapshot and exit. This can be used to release +resources that should not or cannot be serialized or to convert user data +into a form more suitable for serialization. + +### `v8.startupSnapshot.addDeserializeCallback(callback[, data])` + + + +* `callback` {Function} Callback to be invoked after the snapshot is + deserialized. +* `data` {any} Optional data that will be passed to the `callback` when it + gets called. + +Add a callback that will be called when the Node.js instance is deserialized +from a snapshot. The `callback` and the `data` (if provided) will be +serialized into the snapshot, they can be used to re-initialize the state +of the application or to re-acquire resources that the application needs +when the application is restarted from the snapshot. + +### `v8.startupSnapshot.setDeserializeMainFunction(callback[, data])` + + + +* `callback` {Function} Callback to be invoked as the entry point after the + snapshot is deserialized. +* `data` {any} Optional data that will be passed to the `callback` when it + gets called. + +This sets the entry point of the Node.js application when it is deserialized +from a snapshot. This can be called only once in the snapshot building +script. If called, the deserialized application no longer needs an additional +entry point script to start up and will simply invoke the callback along with +the deserialized data (if provided), otherwise an entry point script still +needs to be provided to the deserialized application. + +### `v8.startupSnapshot.isBuildingSnapshot()` + + + +* Returns: {boolean} + +Returns true if the Node.js instance is run to build a snapshot. + [HTML structured clone algorithm]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm [Hook Callbacks]: #hook-callbacks [V8]: https://developers.google.com/v8/ diff --git a/doc/api/vm.md b/doc/api/vm.md index 99a0b8ad068e80..c8a0a27c991f0d 100644 --- a/doc/api/vm.md +++ b/doc/api/vm.md @@ -8,10 +8,10 @@ -The `vm` module enables compiling and running code within V8 Virtual +The `node:vm` module enables compiling and running code within V8 Virtual Machine contexts. -The `vm` module is not a security +The `node:vm` module is not a security mechanism. Do not use it to run untrusted code. JavaScript code can be compiled and run immediately or @@ -26,7 +26,7 @@ global variable. Any changes to global variables caused by the invoked code are reflected in the context object. ```js -const vm = require('vm'); +const vm = require('node:vm'); const x = 1; @@ -175,7 +175,7 @@ the value of another global variable, then execute the code multiple times. The globals are contained in the `context` object. ```js -const vm = require('vm'); +const vm = require('node:vm'); const context = { animal: 'cat', @@ -257,7 +257,7 @@ the code multiple times in different contexts. The globals are set on and contained within each individual `context`. ```js -const vm = require('vm'); +const vm = require('node:vm'); const script = new vm.Script('globalVar = "set"'); @@ -302,7 +302,7 @@ The following example compiles code that increments a `global` variable then executes that code multiple times: ```js -const vm = require('vm'); +const vm = require('node:vm'); global.globalVar = 0; @@ -349,7 +349,7 @@ loader][]. There is also no way to interact with the Loader yet, though support is planned. ```mjs -import vm from 'vm'; +import vm from 'node:vm'; const contextifiedObject = vm.createContext({ secret: 42, @@ -420,7 +420,7 @@ await bar.evaluate(); ``` ```cjs -const vm = require('vm'); +const vm = require('node:vm'); const contextifiedObject = vm.createContext({ secret: 42, @@ -558,6 +558,8 @@ The identifier of the current module, as set in the constructor. // ^^^^^ the module specifier ``` + * `referencingModule` {vm.Module} The `Module` object `link()` is called on. + * `extra` {Object} * `assert` {Object} The data from the assertion: @@ -569,8 +571,6 @@ The identifier of the current module, as set in the constructor. support, as opposed to, for example, triggering an error if an unsupported assertion is present. - * `referencingModule` {vm.Module} The `Module` object `link()` is called on. - * Returns: {vm.Module|Promise} * Returns: {Promise} @@ -708,7 +708,7 @@ allow the module to access information outside the specified `context`. Use `vm.runInContext()` to create objects in a specific context. ```mjs -import vm from 'vm'; +import vm from 'node:vm'; const contextifiedObject = vm.createContext({ secret: 42 }); @@ -736,7 +736,7 @@ await module.evaluate(); ``` ```cjs -const vm = require('vm'); +const vm = require('node:vm'); const contextifiedObject = vm.createContext({ secret: 42 }); (async () => { const module = new vm.SourceTextModule( @@ -808,7 +808,7 @@ provide a generic interface for exposing non-JavaScript sources to ECMAScript module graphs. ```js -const vm = require('vm'); +const vm = require('node:vm'); const source = '{ "a": 1 }'; const module = new vm.SyntheticModule(['default'], function() { @@ -859,7 +859,7 @@ it is called before the module is linked, an [`ERR_VM_MODULE_STATUS`][] error will be thrown. ```mjs -import vm from 'vm'; +import vm from 'node:vm'; const m = new vm.SyntheticModule(['x'], () => { m.setExport('x', 1); @@ -872,7 +872,7 @@ assert.strictEqual(m.namespace.x, 1); ``` ```cjs -const vm = require('vm'); +const vm = require('node:vm'); (async () => { const m = new vm.SyntheticModule(['x'], () => { m.setExport('x', 1); @@ -993,7 +993,7 @@ properties but also having the built-in objects and functions any standard will remain unchanged. ```js -const vm = require('vm'); +const vm = require('node:vm'); global.globalVar = 3; @@ -1069,7 +1069,7 @@ the V8 engine, while the result of `v8.getHeapSpaceStatistics()` measure the memory occupied by each heap space in the current V8 instance. ```js -const vm = require('vm'); +const vm = require('node:vm'); // Measure the memory used by the main context. vm.measureMemory({ mode: 'summary' }) // This is the same as vm.measureMemory() @@ -1182,7 +1182,7 @@ The following example compiles and executes different scripts using a single [contextified][] object: ```js -const vm = require('vm'); +const vm = require('node:vm'); const contextObject = { globalVar: 1 }; vm.createContext(contextObject); @@ -1292,7 +1292,7 @@ The following example compiles and executes code that increments a global variable and sets a new one. These globals are contained in the `contextObject`. ```js -const vm = require('vm'); +const vm = require('node:vm'); const contextObject = { animal: 'cat', @@ -1376,7 +1376,7 @@ the JavaScript [`eval()`][] function to run the same code: ```js -const vm = require('vm'); +const vm = require('node:vm'); let localVar = 'initial value'; const vmResult = vm.runInThisContext('localVar = "vm";'); @@ -1400,17 +1400,17 @@ When using either [`script.runInThisContext()`][] or [`vm.runInThisContext()`][], the code is executed within the current V8 global context. The code passed to this VM context will have its own isolated scope. -In order to run a simple web server using the `http` module the code passed to -the context must either call `require('http')` on its own, or have a reference -to the `http` module passed to it. For instance: +In order to run a simple web server using the `node:http` module the code passed +to the context must either call `require('node:http')` on its own, or have a +reference to the `node:http` module passed to it. For instance: ```js 'use strict'; -const vm = require('vm'); +const vm = require('node:vm'); const code = ` ((require) => { - const http = require('http'); + const http = require('node:http'); http.createServer((request, response) => { response.writeHead(200, { 'Content-Type': 'text/plain' }); @@ -1439,9 +1439,9 @@ According to the [V8 Embedder's Guide][]: When the method `vm.createContext()` is called, the `contextObject` argument (or a newly-created object if `contextObject` is `undefined`) is associated internally with a new instance of a V8 Context. This V8 Context provides the -`code` run using the `vm` module's methods with an isolated global environment -within which it can operate. The process of creating the V8 Context and -associating it with the `contextObject` is what this document refers to as +`code` run using the `node:vm` module's methods with an isolated global +environment within which it can operate. The process of creating the V8 Context +and associating it with the `contextObject` is what this document refers to as "contextifying" the object. ## Timeout interactions with asynchronous tasks and Promises @@ -1457,7 +1457,7 @@ timeout of 5 milliseconds schedules an infinite loop to run after a promise resolves. The scheduled loop is never interrupted by the timeout: ```js -const vm = require('vm'); +const vm = require('node:vm'); function loop() { console.log('entering loop'); @@ -1477,7 +1477,7 @@ This can be addressed by passing `microtaskMode: 'afterEvaluate'` to the code that creates the `Context`: ```js -const vm = require('vm'); +const vm = require('node:vm'); function loop() { while (1) console.log(Date.now()); diff --git a/doc/api/wasi.md b/doc/api/wasi.md index 644daa217e900e..1b457201345ff0 100644 --- a/doc/api/wasi.md +++ b/doc/api/wasi.md @@ -11,9 +11,9 @@ specification. WASI gives sandboxed WebAssembly applications access to the underlying operating system via a collection of POSIX-like functions. ```mjs -import { readFile } from 'fs/promises'; +import { readFile } from 'node:fs/promises'; import { WASI } from 'wasi'; -import { argv, env } from 'process'; +import { argv, env } from 'node:process'; const wasi = new WASI({ args: argv, @@ -37,10 +37,10 @@ wasi.start(instance); ```cjs 'use strict'; -const { readFile } = require('fs/promises'); +const { readFile } = require('node:fs/promises'); const { WASI } = require('wasi'); -const { argv, env } = require('process'); -const { join } = require('path'); +const { argv, env } = require('node:process'); +const { join } = require('node:path'); const wasi = new WASI({ args: argv, diff --git a/doc/api/webcrypto.md b/doc/api/webcrypto.md index dc046e846c4a85..2188edd8523154 100644 --- a/doc/api/webcrypto.md +++ b/doc/api/webcrypto.md @@ -1,15 +1,38 @@ # Web Crypto API + + > Stability: 1 - Experimental Node.js provides an implementation of the standard [Web Crypto API][]. -Use `require('crypto').webcrypto` to access this module. +Use `require('node:crypto').webcrypto` to access this module. ```js -const { subtle } = require('crypto').webcrypto; +const { subtle } = require('node:crypto').webcrypto; (async function() { @@ -39,7 +62,7 @@ or asymmetric key pairs (public key and private key). #### AES keys ```js -const { subtle } = require('crypto').webcrypto; +const { subtle } = require('node:crypto').webcrypto; async function generateAesKey(length = 256) { const key = await subtle.generateKey({ @@ -54,7 +77,7 @@ async function generateAesKey(length = 256) { #### ECDSA key pairs ```js -const { subtle } = require('crypto').webcrypto; +const { subtle } = require('node:crypto').webcrypto; async function generateEcKey(namedCurve = 'P-521') { const { @@ -69,22 +92,22 @@ async function generateEcKey(namedCurve = 'P-521') { } ``` -#### ED25519/ED448/X25519/X448 key pairs +#### Ed25519/Ed448/X25519/X448 key pairs + +> Stability: 1 - Experimental ```js -const { subtle } = require('crypto').webcrypto; +const { subtle } = require('node:crypto').webcrypto; async function generateEd25519Key() { return subtle.generateKey({ - name: 'NODE-ED25519', - namedCurve: 'NODE-ED25519', + name: 'Ed25519', }, true, ['sign', 'verify']); } async function generateX25519Key() { return subtle.generateKey({ - name: 'ECDH', - namedCurve: 'NODE-X25519', + name: 'X25519', }, true, ['deriveKey']); } ``` @@ -92,7 +115,7 @@ async function generateX25519Key() { #### HMAC keys ```js -const { subtle } = require('crypto').webcrypto; +const { subtle } = require('node:crypto').webcrypto; async function generateHmacKey(hash = 'SHA-256') { const key = await subtle.generateKey({ @@ -107,7 +130,7 @@ async function generateHmacKey(hash = 'SHA-256') { #### RSA key pairs ```js -const { subtle } = require('crypto').webcrypto; +const { subtle } = require('node:crypto').webcrypto; const publicExponent = new Uint8Array([1, 0, 1]); async function generateRsaKey(modulusLength = 2048, hash = 'SHA-256') { @@ -128,7 +151,7 @@ async function generateRsaKey(modulusLength = 2048, hash = 'SHA-256') { ### Encryption and decryption ```js -const crypto = require('crypto').webcrypto; +const crypto = require('node:crypto').webcrypto; async function aesEncrypt(plaintext) { const ec = new TextEncoder(); @@ -161,7 +184,7 @@ async function aesDecrypt(ciphertext, key, iv) { ### Exporting and importing keys ```js -const { subtle } = require('crypto').webcrypto; +const { subtle } = require('node:crypto').webcrypto; async function generateAndExportHmacKey(format = 'jwk', hash = 'SHA-512') { const key = await subtle.generateKey({ @@ -185,7 +208,7 @@ async function importHmacKey(keyData, format = 'jwk', hash = 'SHA-512') { ### Wrapping and unwrapping keys ```js -const { subtle } = require('crypto').webcrypto; +const { subtle } = require('node:crypto').webcrypto; async function generateAndWrapHmacKey(format = 'jwk', hash = 'SHA-512') { const [ @@ -203,7 +226,7 @@ async function generateAndWrapHmacKey(format = 'jwk', hash = 'SHA-512') { const wrappedKey = await subtle.wrapKey(format, key, wrappingKey, 'AES-KW'); - return wrappedKey; + return { wrappedKey, wrappingKey }; } async function unwrapHmacKey( @@ -215,7 +238,7 @@ async function unwrapHmacKey( const key = await subtle.unwrapKey( format, wrappedKey, - unwrappingKey, + wrappingKey, 'AES-KW', { name: 'HMAC', hash }, true, @@ -228,7 +251,7 @@ async function unwrapHmacKey( ### Sign and verify ```js -const { subtle } = require('crypto').webcrypto; +const { subtle } = require('node:crypto').webcrypto; async function sign(key, data) { const ec = new TextEncoder(); @@ -252,7 +275,7 @@ async function verify(key, signature, data) { ### Deriving bits and keys ```js -const { subtle } = require('crypto').webcrypto; +const { subtle } = require('node:crypto').webcrypto; async function pbkdf2(pass, salt, iterations = 1000, length = 256) { const ec = new TextEncoder(); @@ -295,7 +318,7 @@ async function pbkdf2Key(pass, salt, iterations = 1000, length = 256) { ### Digest ```js -const { subtle } = require('crypto').webcrypto; +const { subtle } = require('node:crypto').webcrypto; async function digest(data, algorithm = 'SHA-512') { const ec = new TextEncoder(); @@ -315,7 +338,11 @@ implementation and the APIs supported for each: | `'RSA-PSS'` | ✔ | ✔ | ✔ | | | | | | | ✔ | ✔ | | | `'RSA-OAEP'` | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | | | | | | `'ECDSA'` | ✔ | ✔ | ✔ | | | | | | | ✔ | ✔ | | +| `'Ed25519'`[^1] | ✔ | ✔ | ✔ | | | | | | | ✔ | ✔ | | +| `'Ed448'`[^1] | ✔ | ✔ | ✔ | | | | | | | ✔ | ✔ | | | `'ECDH'` | ✔ | ✔ | ✔ | | | | | ✔ | ✔ | | | | +| `'X25519'`[^1] | ✔ | ✔ | ✔ | | | | | ✔ | ✔ | | | | +| `'X448'`[^1] | ✔ | ✔ | ✔ | | | | | ✔ | ✔ | | | | | `'AES-CTR'` | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | | | | | | `'AES-CBC'` | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | | | | | | `'AES-GCM'` | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | | | | | @@ -327,10 +354,6 @@ implementation and the APIs supported for each: | `'SHA-256'` | | | | | | | | | | | | ✔ | | `'SHA-384'` | | | | | | | | | | | | ✔ | | `'SHA-512'` | | | | | | | | | | | | ✔ | -| `'NODE-DSA'`[^1] | ✔ | ✔ | ✔ | | | | | | | ✔ | ✔ | | -| `'NODE-DH'`[^1] | ✔ | ✔ | ✔ | | | | | ✔ | ✔ | | | | -| `'NODE-ED25519'`[^1] | ✔ | ✔ | ✔ | | | | | | | ✔ | ✔ | | -| `'NODE-ED448'`[^1] | ✔ | ✔ | ✔ | | | | | | | ✔ | ✔ | | ## Class: `Crypto` @@ -338,8 +361,9 @@ implementation and the APIs supported for each: added: v15.0.0 --> -Calling `require('crypto').webcrypto` returns an instance of the `Crypto` class. -`Crypto` is a singleton that provides access to the remainder of the crypto API. +Calling `require('node:crypto').webcrypto` returns an instance of the `Crypto` +class. `Crypto` is a singleton that provides access to the remainder of the +crypto API. ### `crypto.subtle` @@ -393,7 +417,7 @@ added: v15.0.0 -* Type: {AesKeyGenParams|RsaHashedKeyGenParams|EcKeyGenParams|HmacKeyGenParams|NodeDsaKeyGenParams|NodeDhKeyGenParams} +* Type: {AesKeyGenParams|RsaHashedKeyGenParams|EcKeyGenParams|HmacKeyGenParams} @@ -458,18 +482,17 @@ Valid key usages depend on the key algorithm (identified by | `'AES-GCM'` | ✔ | ✔ | | | | | ✔ | ✔ | | `'AES-KW'` | | | | | | | ✔ | ✔ | | `'ECDH'` | | | | | ✔ | ✔ | | | +| `'X25519'`[^1] | | | | | ✔ | ✔ | | | +| `'X448'`[^1] | | | | | ✔ | ✔ | | | | `'ECDSA'` | | | ✔ | ✔ | | | | | +| `'Ed25519'`[^1] | | | ✔ | ✔ | | | | | +| `'Ed448'`[^1] | | | ✔ | ✔ | | | | | | `'HDKF'` | | | | | ✔ | ✔ | | | | `'HMAC'` | | | ✔ | ✔ | | | | | | `'PBKDF2'` | | | | | ✔ | ✔ | | | | `'RSA-OAEP'` | ✔ | ✔ | | | | | ✔ | ✔ | | `'RSA-PSS'` | | | ✔ | ✔ | | | | | | `'RSASSA-PKCS1-v1_5'` | | | ✔ | ✔ | | | | | -| `'NODE-DSA'`[^1] | | | ✔ | ✔ | | | | | -| `'NODE-DH'`[^1] | | | | | ✔ | ✔ | | | -| `'NODE-SCRYPT'`[^1] | | | | | ✔ | ✔ | | | -| `'NODE-ED25519'`[^1] | | | ✔ | ✔ | | | | | -| `'NODE-ED448'`[^1] | | | ✔ | ✔ | | | | | ## Class: `CryptoKeyPair` @@ -529,11 +552,15 @@ The algorithms currently supported include: -* `algorithm`: {EcdhKeyDeriveParams|HkdfParams|Pbkdf2Params|NodeDhDeriveBitsParams|NodeScryptParams} +* `algorithm`: {AlgorithmIdentifier|EcdhKeyDeriveParams|HkdfParams|Pbkdf2Params} * `baseKey`: {CryptoKey} * `length`: {number} * Returns: {Promise} containing {ArrayBuffer} @@ -551,18 +578,20 @@ The algorithms currently supported include: * `'ECDH'` * `'HKDF'` * `'PBKDF2'` -* `'NODE-DH'`[^1] -* `'NODE-SCRYPT'`[^1] ### `subtle.deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages)` -* `algorithm`: {EcdhKeyDeriveParams|HkdfParams|Pbkdf2Params|NodeDhDeriveBitsParams|NodeScryptParams} +* `algorithm`: {AlgorithmIdentifier|EcdhKeyDeriveParams|HkdfParams|Pbkdf2Params} * `baseKey`: {CryptoKey} * `derivedKeyAlgorithm`: {HmacKeyGenParams|AesKeyGenParams} * `extractable`: {boolean} @@ -585,8 +614,6 @@ The algorithms currently supported include: * `'ECDH'` * `'HKDF'` * `'PBKDF2'` -* `'NODE-DH'`[^1] -* '`NODE-SCRYPT'`[^1] ### `subtle.digest(algorithm, data)` @@ -639,16 +666,18 @@ The algorithms currently supported include: -* `format`: {string} Must be one of `'raw'`, `'pkcs8'`, `'spki'`, `'jwk'`, or - `'node.keyObject'`. +* `format`: {string} Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. * `key`: {CryptoKey} -* Returns: {Promise} containing {ArrayBuffer}, or, if `format` is - `'node.keyObject'`, a {KeyObject}. +* Returns: {Promise} containing {ArrayBuffer}. Exports the given key into the specified format, if supported. @@ -662,9 +691,6 @@ When `format` is `'jwk'` and the export is successful, the returned promise will be resolved with a JavaScript object conforming to the [JSON Web Key][] specification. -The special `'node.keyObject'` value for `format` is a Node.js-specific -extension that allows converting a {CryptoKey} into a Node.js {KeyObject}. - | Key Type | `'spki'` | `'pkcs8'` | `'jwk'` | `'raw'` | | --------------------- | -------- | --------- | ------- | ------- | | `'AES-CBC'` | | | ✔ | ✔ | @@ -673,17 +699,14 @@ extension that allows converting a {CryptoKey} into a Node.js {KeyObject}. | `'AES-KW'` | | | ✔ | ✔ | | `'ECDH'` | ✔ | ✔ | ✔ | ✔ | | `'ECDSA'` | ✔ | ✔ | ✔ | ✔ | +| `'Ed25519'`[^1] | ✔ | ✔ | ✔ | ✔ | +| `'Ed448'`[^1] | ✔ | ✔ | ✔ | ✔ | | `'HDKF'` | | | | | | `'HMAC'` | | | ✔ | ✔ | | `'PBKDF2'` | | | | | | `'RSA-OAEP'` | ✔ | ✔ | ✔ | | | `'RSA-PSS'` | ✔ | ✔ | ✔ | | | `'RSASSA-PKCS1-v1_5'` | ✔ | ✔ | ✔ | | -| `'NODE-DSA'`[^1] | ✔ | ✔ | | | -| `'NODE-DH'`[^1] | ✔ | ✔ | | | -| `'NODE-SCRYPT'`[^1] | | | | | -| `'NODE-ED25519'`[^1] | ✔ | ✔ | ✔ | ✔ | -| `'NODE-ED448'`[^1] | ✔ | ✔ | ✔ | ✔ | ### `subtle.generateKey(algorithm, extractable, keyUsages)` @@ -693,7 +716,7 @@ added: v15.0.0 -* `algorithm`: {RsaHashedKeyGenParams|EcKeyGenParams|HmacKeyGenParams|AesKeyGenParams|NodeDsaKeyGenParams|NodeDhKeyGenParams|NodeEdKeyGenParams} +* `algorithm`: {AlgorithmIdentifier|RsaHashedKeyGenParams|EcKeyGenParams|HmacKeyGenParams|AesKeyGenParams} @@ -712,11 +735,11 @@ include: * `'RSA-PSS'` * `'RSA-OAEP'` * `'ECDSA'` +* `'Ed25519'`[^1] +* `'Ed448'`[^1] * `'ECDH'` -* `'NODE-DSA'`[^1] -* `'NODE-DH'`[^1] -* `'NODE-ED25519'`[^1] -* `'NODE-ED448'`[^1] +* `'X25519'`[^1] +* `'X448'`[^1] The {CryptoKey} (secret key) generating algorithms supported include: @@ -731,18 +754,21 @@ The {CryptoKey} (secret key) generating algorithms supported include: -* `format`: {string} Must be one of `'raw'`, `'pkcs8'`, `'spki'`, `'jwk'`, or - `'node.keyObject'`. +* `format`: {string} Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. * `keyData`: {ArrayBuffer|TypedArray|DataView|Buffer|KeyObject} -* `algorithm`: {RsaHashedImportParams|EcKeyImportParams|HmacImportParams|AesImportParams|Pbkdf2ImportParams|NodeDsaImportParams|NodeDhImportParams|NodeScryptImportParams|NodeEdKeyImportParams} +* `algorithm`: {AlgorithmIdentifier|RsaHashedImportParams|EcKeyImportParams|HmacImportParams} @@ -755,9 +781,6 @@ as the given `format` to create a {CryptoKey} instance using the provided `algorithm`, `extractable`, and `keyUsages` arguments. If the import is successful, the returned promise will be resolved with the created {CryptoKey}. -The special `'node.keyObject'` value for `format` is a Node.js-specific -extension that allows converting a Node.js {KeyObject} into a {CryptoKey}. - If importing a `'PBKDF2'` key, `extractable` must be `false`. The algorithms currently supported include: @@ -769,28 +792,31 @@ The algorithms currently supported include: | `'AES-GCM'` | | | ✔ | ✔ | | `'AES-KW'` | | | ✔ | ✔ | | `'ECDH'` | ✔ | ✔ | ✔ | ✔ | +| `'X25519'`[^1] | ✔ | ✔ | ✔ | ✔ | +| `'X448'`[^1] | ✔ | ✔ | ✔ | ✔ | | `'ECDSA'` | ✔ | ✔ | ✔ | ✔ | +| `'Ed25519'`[^1] | ✔ | ✔ | ✔ | ✔ | +| `'Ed448'`[^1] | ✔ | ✔ | ✔ | ✔ | | `'HDKF'` | | | | ✔ | | `'HMAC'` | | | ✔ | ✔ | | `'PBKDF2'` | | | | ✔ | | `'RSA-OAEP'` | ✔ | ✔ | ✔ | | | `'RSA-PSS'` | ✔ | ✔ | ✔ | | | `'RSASSA-PKCS1-v1_5'` | ✔ | ✔ | ✔ | | -| `'NODE-DSA'`[^1] | ✔ | ✔ | | | -| `'NODE-DH'`[^1] | ✔ | ✔ | | | -| `'NODE-SCRYPT'`[^1] | | | | ✔ | -| `'NODE-ED25519'`[^1] | ✔ | ✔ | ✔ | ✔ | -| `'NODE-ED448'`[^1] | ✔ | ✔ | ✔ | ✔ | ### `subtle.sign(algorithm, key, data)` -* `algorithm`: {RsaSignParams|RsaPssParams|EcdsaParams|HmacParams|NodeDsaSignParams} +* `algorithm`: {AlgorithmIdentifier|RsaPssParams|EcdsaParams|Ed448Params} * `key`: {CryptoKey} * `data`: {ArrayBuffer|TypedArray|DataView|Buffer} * Returns: {Promise} containing {ArrayBuffer} @@ -807,10 +833,9 @@ The algorithms currently supported include: * `'RSASSA-PKCS1-v1_5'` * `'RSA-PSS'` * `'ECDSA'` +* `'Ed25519'`[^1] +* `'Ed448'`[^1] * `'HMAC'` -* `'NODE-DSA'`[^1] -* `'NODE-ED25519'`[^1] -* `'NODE-ED448'`[^1] ### `subtle.unwrapKey(format, wrappedKey, unwrappingKey, unwrapAlgo, unwrappedKeyAlgo, extractable, keyUsages)` @@ -824,8 +849,8 @@ added: v15.0.0 -* `unwrapAlgo`: {RsaOaepParams|AesCtrParams|AesCbcParams|AesGcmParams|AesKwParams} -* `unwrappedKeyAlgo`: {RsaHashedImportParams|EcKeyImportParams|HmacImportParams|AesImportParams} +* `unwrapAlgo`: {AlgorithmIdentifier|RsaOaepParams|AesCtrParams|AesCbcParams|AesGcmParams} +* `unwrappedKeyAlgo`: {AlgorithmIdentifier|RsaHashedImportParams|EcKeyImportParams|HmacImportParams} @@ -845,10 +870,10 @@ promise is resolved with a {CryptoKey} object. The wrapping algorithms currently supported include: * `'RSA-OAEP'` -* `'AES-CTR'`[^1] -* `'AES-CBC'`[^1] -* `'AES-GCM'`[^1] -* `'AES-KW'`[^1] +* `'AES-CTR'` +* `'AES-CBC'` +* `'AES-GCM'` +* `'AES-KW'` The unwrapped key algorithms supported include: @@ -862,18 +887,20 @@ The unwrapped key algorithms supported include: * `'AES-CBC'` * `'AES-GCM'` * `'AES-KW'` -* `'NODE-DSA'`[^1] -* `'NODE-DH'`[^1] ### `subtle.verify(algorithm, key, signature, data)` -* `algorithm`: {RsaSignParams|RsaPssParams|EcdsaParams|HmacParams|NodeDsaSignParams} +* `algorithm`: {AlgorithmIdentifier|RsaPssParams|EcdsaParams|Ed448Params} * `key`: {CryptoKey} * `signature`: {ArrayBuffer|TypedArray|DataView|Buffer} * `data`: {ArrayBuffer|TypedArray|DataView|Buffer} @@ -891,10 +918,9 @@ The algorithms currently supported include: * `'RSASSA-PKCS1-v1_5'` * `'RSA-PSS'` * `'ECDSA'` +* `'Ed25519'`[^1] +* `'Ed448'`[^1] * `'HMAC'` -* `'NODE-DSA'`[^1] -* `'NODE-ED25519'`[^1] -* `'NODE-ED448'`[^1] ### `subtle.wrapKey(format, key, wrappingKey, wrapAlgo)` @@ -902,12 +928,16 @@ The algorithms currently supported include: added: v15.0.0 --> + + * `format`: {string} Must be one of `'raw'`, `'pkcs8'`, `'spki'`, or `'jwk'`. * `key`: {CryptoKey} * `wrappingKey`: {CryptoKey} -* `wrapAlgo`: {RsaOaepParams|AesCtrParams|AesCbcParams|AesGcmParams|AesKwParams} +* `wrapAlgo`: {AlgorithmIdentifier|RsaOaepParams|AesCtrParams|AesCbcParams|AesGcmParams} * Returns: {Promise} containing {ArrayBuffer} + + In cryptography, "wrapping a key" refers to exporting and then encrypting the keying material. The `subtle.wrapKey()` method exports the keying material into the format identified by `format`, then encrypts it using the method and @@ -932,6 +962,20 @@ The algorithm parameter objects define the methods and parameters used by the various {SubtleCrypto} methods. While described here as "classes", they are simple JavaScript dictionary objects. +### Class: `AlgorithmIdentifier` + + + +#### `algorithmIdentifier.name` + + + +* Type: {string} + ### Class: `AesCbcParams` - -#### `aesImportParams.name` - - - -* Type: {string} Must be one of `'AES-CTR'`, `'AES-CBC'`, `'AES-GCM'`, or - `'AES-KW'`. - ### Class: `AesKeyGenParams` - -#### `aesKwParams.name` - - - -* Type: {string} Must be `'AES-KW'`. - ### Class: `EcdhKeyDeriveParams` -* Type: {string} Must be `'ECDH'`. +* Type: {string} Must be `'ECDH'`, `'X25519'`, or `'X448'`. #### `ecdhKeyDeriveParams.public` @@ -1175,8 +1195,7 @@ added: v15.0.0 added: v15.0.0 --> -* Type: {string} Must be one of `'P-256'`, `'P-384'`, `'P-521'`, - `'NODE-ED25519'`, `'NODE-ED448'`, `'NODE-X25519'`, or `'NODE-X448'`. +* Type: {string} Must be one of `'P-256'`, `'P-384'`, `'P-521'`. ### Class: `EcKeyImportParams` @@ -1198,8 +1217,34 @@ added: v15.0.0 added: v15.0.0 --> -* Type: {string} Must be one of `'P-256'`, `'P-384'`, `'P-521'`, - `'NODE-ED25519'`, `'NODE-ED448'`, `'NODE-X25519'`, or `'NODE-X448'`. +* Type: {string} Must be one of `'P-256'`, `'P-384'`, `'P-521'`. + +### Class: `Ed448Params` + + + +#### `ed448Params.name` + + + +* Type: {string} Must be `'Ed448'`. + +#### `ed448Params.context` + + + +* Type: {ArrayBuffer|TypedArray|DataView|Buffer|undefined} + +The `context` member represents the optional context data to associate with +the message. +The Node.js Web Crypto API implementation only supports zero-length context +which is equivalent to not providing context at all. ### Class: `HkdfParams` @@ -1344,34 +1389,6 @@ added: v15.0.0 * Type: {string} Must be `'HMAC'`. -### Class: `HmacParams` - - - -#### `hmacParams.name` - - - -* Type: {string} Must be `'HMAC'`. - -### Class: `Pbkdf2ImportParams` - - - -#### `pbkdf2ImportParams.name` - - - -* Type: {string} Must be `'PBKDF2'` - ### Class: `Pbkdf2Params` - -#### `rsaSignParams.name` - - - -* Type: {string} Must be `'RSASSA-PKCS1-v1_5'` - -## Node.js-specific extensions - -The Node.js Web Crypto API extends various aspects of the Web Crypto API. -These extensions are consistently identified by prepending names with the -`node.` prefix. For instance, the `'node.keyObject'` key format can be -used with the `subtle.exportKey()` and `subtle.importKey()` methods to -convert between a WebCrypto {CryptoKey} object and a Node.js {KeyObject}. - -Care should be taken when using Node.js-specific extensions as they are -not supported by other WebCrypto implementations and reduce the portability -of code to other environments. - -### `NODE-DH` Algorithm - - - -The `NODE-DH` algorithm is the common implementation of Diffie-Hellman -key agreement. - -#### Class: `NodeDhImportParams` - - - -##### `nodeDhImportParams.name` - - - -* Type: {string} Must be `'NODE-DH'`. - -#### Class: `NodeDhKeyGenParams` - - - -##### `nodeDhKeyGenParams.generator` - - - -* Type: {number} A custom generator. - -##### `nodeDhKeyGenParams.group` - - - -* Type: {string} The Diffie-Hellman group name. - -##### `nodeDhKeyGenParams.prime` - - - -* Type: {Buffer} The prime parameter. - -##### `nodeDhKeyGenParams.primeLength` - - - -* Type: {number} The length in bits of the prime. - -#### Class: NodeDhDeriveBitsParams - - - -##### `nodeDhDeriveBitsParams.public` - - - -* Type: {CryptoKey} The other parties public key. - -### `NODE-DSA` Algorithm - - - -The `NODE-DSA` algorithm is the common implementation of the DSA digital -signature algorithm. - -#### Class: `NodeDsaImportParams` - - - -##### `nodeDsaImportParams.hash` - - - -* Type: {string|Object} - -If represented as a {string}, the value must be one of: - -* `'SHA-1'` -* `'SHA-256'` -* `'SHA-384'` -* `'SHA-512'` - -If represented as an {Object}, the object must have a `name` property -whose value is one of the above listed values. - -##### `nodeDsaImportParams.name` - - - -* Type: {string} Must be `'NODE-DSA'`. - -#### Class: `NodeDsaKeyGenParams` - - - -##### `nodeDsaKeyGenParams.divisorLength` - - - -* Type: {number} - -The optional length in bits of the DSA divisor. - -##### `nodeDsaKeyGenParams.hash` - - - -* Type: {string|Object} - -If represented as a {string}, the value must be one of: - -* `'SHA-1'` -* `'SHA-256'` -* `'SHA-384'` -* `'SHA-512'` - -If represented as an {Object}, the object must have a `name` property -whose value is one of the above listed values. - -##### `nodeDsaKeyGenParams.modulusLength` - - - -* Type: {number} - -The length in bits of the DSA modulus. As a best practice, this should be -at least `2048`. - -##### `nodeDsaKeyGenParams.name` - - - -* Type: {string} Must be `'NODE-DSA'`. - -#### Class: `NodeDsaSignParams` - - - -##### `nodeDsaSignParams.name` - - - -* Type: {string} Must be `'NODE-DSA'` - -### `NODE-ED25519` and `NODE-ED448` Algorithms - - - -#### Class: `NodeEdKeyGenParams` - - - -##### `nodeEdKeyGenParams.name` - - - -* Type: {string} Must be one of `'NODE-ED25519'`, `'NODE-ED448'` or `'ECDH'`. - -##### `nodeEdKeyGenParams.namedCurve` - - - -* Type: {string} Must be one of `'NODE-ED25519'`, `'NODE-ED448'`, - `'NODE-X25519'`, or `'NODE-X448'`. - -#### Class: `NodeEdKeyImportParams` - - - -##### `nodeEdKeyImportParams.name` - - - -* Type: {string} Must be one of `'NODE-ED25519'` or `'NODE-ED448'` - if importing an `Ed25519` or `Ed448` key, or `'ECDH'` if importing - an `X25519` or `X448` key. - -##### `nodeEdKeyImportParams.namedCurve` - - - -* Type: {string} Must be one of `'NODE-ED25519'`, `'NODE-ED448'`, - `'NODE-X25519'`, or `'NODE-X448'`. - -##### `nodeEdKeyImportParams.public` - - - -* Type: {boolean} - -The `public` parameter is used to specify that the `'raw'` format key is to be -interpreted as a public key. **Default:** `false`. - -### `NODE-SCRYPT` Algorithm - - - -The `NODE-SCRYPT` algorithm is the common implementation of the scrypt key -derivation algorithm. - -#### Class: `NodeScryptImportParams` - - - -##### `nodeScryptImportParams.name` - - - -* Type: {string} Must be `'NODE-SCRYPT'`. - -#### Class: `NodeScryptParams` - - - -##### `nodeScryptParams.encoding` - - - -* Type: {string} The string encoding when `salt` is a string. - -##### `nodeScryptParams.maxmem` - - - -* Type: {number} Memory upper bound. It is an error when (approximately) - `127 * N * r > maxmem`. **Default:** `32 * 1024 * 1024`. - -##### `nodeScryptParams.N` - - - -* Type: {number} The CPU/memory cost parameter. Must e a power of two - greater than 1. **Default:** `16384`. - -##### `nodeScryptParams.p` - - - -* Type: {number} Parallelization parameter. **Default:** `1`. - -##### `nodeScryptParams.r` - - - -* Type: {number} Block size parameter. **Default:** `8`. - -##### `nodeScryptParams.salt` - - - -* Type: {string|ArrayBuffer|Buffer|TypedArray|DataView} - -[^1]: Non-standard Node.js-specific extension +[^1]: An experimental implementation of + [Secure Curves in the Web Cryptography API][] as of 05 May 2022 [JSON Web Key]: https://tools.ietf.org/html/rfc7517 [Key usages]: #cryptokeyusages +[NIST SP 800-38D]: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf [RFC 4122]: https://www.rfc-editor.org/rfc/rfc4122.txt +[Secure Curves in the Web Cryptography API]: https://wicg.github.io/webcrypto-secure-curves/ [Web Crypto API]: https://www.w3.org/TR/WebCryptoAPI/ diff --git a/doc/api/webstreams.md b/doc/api/webstreams.md index ba61630ec979d7..0fe9aeeba93383 100644 --- a/doc/api/webstreams.md +++ b/doc/api/webstreams.md @@ -29,7 +29,7 @@ streaming data. It is similar to the Node.js [Streams][] API but emerged later and has become the "standard" API for streaming data across many JavaScript environments. -There are three primary types of objects +There are three primary types of objects: * `ReadableStream` - Represents a source of streaming data. * `WritableStream` - Represents a destination for streaming data. @@ -70,15 +70,15 @@ for await (const value of stream) ```cjs const { ReadableStream -} = require('stream/web'); +} = require('node:stream/web'); const { setInterval: every -} = require('timers/promises'); +} = require('node:timers/promises'); const { performance -} = require('perf_hooks'); +} = require('node:perf_hooks'); const SECOND = 1000; @@ -183,7 +183,7 @@ console.log(await reader.read()); ``` ```cjs -const { ReadableStream } = require('stream/web'); +const { ReadableStream } = require('node:stream/web'); const stream = new ReadableStream(); @@ -210,10 +210,10 @@ added: v16.5.0 * `preventAbort` {boolean} When `true`, errors in this `ReadableStream` will not cause `transform.writable` to be aborted. * `preventCancel` {boolean} When `true`, errors in the destination - `transform.writable` is not cause this `ReadableStream` to be + `transform.writable` do not cause this `ReadableStream` to be canceled. * `preventClose` {boolean} When `true`, closing this `ReadableStream` - will no cause `transform.writable` to be closed. + does not cause `transform.writable` to be closed. * `signal` {AbortSignal} Allows the transfer of data to be canceled using an {AbortController}. * Returns: {ReadableStream} From `transform.readable`. @@ -255,7 +255,7 @@ for await (const chunk of transformedStream) const { ReadableStream, TransformStream, -} = require('stream/web'); +} = require('node:stream/web'); const stream = new ReadableStream({ start(controller) { @@ -287,12 +287,11 @@ added: v16.5.0 `ReadableStream`'s data will be written. * `options` {Object} * `preventAbort` {boolean} When `true`, errors in this `ReadableStream` - will not cause `transform.writable` to be aborted. - * `preventCancel` {boolean} When `true`, errors in the destination - `transform.writable` is not cause this `ReadableStream` to be - canceled. + will not cause `destination` to be aborted. + * `preventCancel` {boolean} When `true`, errors in the `destination` + will not cause this `ReadableStream` to be canceled. * `preventClose` {boolean} When `true`, closing this `ReadableStream` - will no cause `transform.writable` to be closed. + does not cause `destination` to be closed. * `signal` {AbortSignal} Allows the transfer of data to be canceled using an {AbortController}. * Returns: A promise fulfilled with `undefined` @@ -323,7 +322,7 @@ added: v16.5.0 * `options` {Object} * `preventCancel` {boolean} When `true`, prevents the {ReadableStream} from being closed when the async iterator abruptly terminates. - **Defaults**: `false` + **Default**: `false`. Creates and returns an async iterator usable for consuming this `ReadableStream`'s data. @@ -346,7 +345,7 @@ The {ReadableStream} object supports the async iterator protocol using `for await` syntax. ```mjs -import { Buffer } from 'buffer'; +import { Buffer } from 'node:buffer'; const stream = new ReadableStream(getSomeSource()); @@ -457,7 +456,7 @@ added: v16.5.0 --> The `ReadableStreamBYOBReader` is an alternative consumer for -byte-oriented {ReadableStream}'s (those that are created with +byte-oriented {ReadableStream}s (those that are created with `underlyingSource.type` set equal to `'bytes'` when the `ReadableStream` was created). @@ -573,7 +572,7 @@ available. Do not pass a pooled {Buffer} object instance in to this method. Pooled `Buffer` objects are created using `Buffer.allocUnsafe()`, -or `Buffer.from()`, or are often returned by various `fs` module +or `Buffer.from()`, or are often returned by various `node:fs` module callbacks. These types of `Buffer`s use a shared underlying {ArrayBuffer} object that contains all of the data from all of the pooled `Buffer` instances. When a `Buffer`, {TypedArray}, @@ -1253,7 +1252,7 @@ added: v16.6.0 * `ignoreBOM` {boolean} When `true`, the `TextDecoderStream` will include the byte order mark in the decoded result. When `false`, the byte order mark will be removed from the output. This option is only used when `encoding` is - `'utf-8'`, `'utf-16be'` or `'utf-16le'`. **Default:** `false`. + `'utf-8'`, `'utf-16be'`, or `'utf-16le'`. **Default:** `false`. Creates a new `TextDecoderStream` instance. @@ -1333,7 +1332,7 @@ const { buffer, json, text, -} = require('stream/consumers'); +} = require('node:stream/consumers'); ``` #### `streamConsumers.arrayBuffer(stream)` diff --git a/doc/api/worker_threads.md b/doc/api/worker_threads.md index 5cc4050a9a9c84..58a4dade197fd6 100644 --- a/doc/api/worker_threads.md +++ b/doc/api/worker_threads.md @@ -6,11 +6,11 @@ -The `worker_threads` module enables the use of threads that execute JavaScript -in parallel. To access it: +The `node:worker_threads` module enables the use of threads that execute +JavaScript in parallel. To access it: ```js -const worker = require('worker_threads'); +const worker = require('node:worker_threads'); ``` Workers (threads) are useful for performing CPU-intensive JavaScript operations. @@ -24,7 +24,7 @@ instances. ```js const { Worker, isMainThread, parentPort, workerData -} = require('worker_threads'); +} = require('node:worker_threads'); if (isMainThread) { module.exports = function parseJSAsync(script) { @@ -88,7 +88,7 @@ const { isMainThread, setEnvironmentData, getEnvironmentData, -} = require('worker_threads'); +} = require('node:worker_threads'); if (isMainThread) { setEnvironmentData('Hello', 'World!'); @@ -109,7 +109,7 @@ added: v10.5.0 Is `true` if this code is not running inside of a [`Worker`][] thread. ```js -const { Worker, isMainThread } = require('worker_threads'); +const { Worker, isMainThread } = require('node:worker_threads'); if (isMainThread) { // This re-loads the current file inside a Worker instance. @@ -139,7 +139,7 @@ For example, Node.js marks the `ArrayBuffer`s it uses for its This operation cannot be undone. ```js -const { MessageChannel, markAsUntransferable } = require('worker_threads'); +const { MessageChannel, markAsUntransferable } = require('node:worker_threads'); const pooledBuffer = new ArrayBuffer(8); const typedArray1 = new Uint8Array(pooledBuffer); @@ -202,7 +202,7 @@ using `worker.postMessage()` are available in this thread using `parentPort.on('message')`. ```js -const { Worker, isMainThread, parentPort } = require('worker_threads'); +const { Worker, isMainThread, parentPort } = require('node:worker_threads'); if (isMainThread) { const worker = new Worker(__filename); @@ -235,10 +235,10 @@ changes: Receive a single message from a given `MessagePort`. If no message is available, `undefined` is returned, otherwise an object with a single `message` property that contains the message payload, corresponding to the oldest message in the -`MessagePort`’s queue. +`MessagePort`'s queue. ```js -const { MessageChannel, receiveMessageOnPort } = require('worker_threads'); +const { MessageChannel, receiveMessageOnPort } = require('node:worker_threads'); const { port1, port2 } = new MessageChannel(); port1.postMessage({ hello: 'world' }); @@ -284,7 +284,7 @@ constructor, to indicate that the current thread and the Worker thread should share read and write access to the same set of environment variables. ```js -const { Worker, SHARE_ENV } = require('worker_threads'); +const { Worker, SHARE_ENV } = require('node:worker_threads'); new Worker('process.env.SET_IN_WORKER = "foo"', { eval: true, env: SHARE_ENV }) .on('exit', () => { console.log(process.env.SET_IN_WORKER); // Prints 'foo'. @@ -332,13 +332,13 @@ added: v10.5.0 --> An arbitrary JavaScript value that contains a clone of the data passed -to this thread’s `Worker` constructor. +to this thread's `Worker` constructor. The data is cloned as if using [`postMessage()`][`port.postMessage()`], according to the [HTML structured clone algorithm][]. ```js -const { Worker, isMainThread, workerData } = require('worker_threads'); +const { Worker, isMainThread, workerData } = require('node:worker_threads'); if (isMainThread) { const worker = new Worker(__filename, { workerData: 'Hello, world!' }); @@ -365,7 +365,7 @@ const { isMainThread, BroadcastChannel, Worker -} = require('worker_threads'); +} = require('node:worker_threads'); const bc = new BroadcastChannel('hello'); @@ -460,7 +460,7 @@ yields an object with `port1` and `port2` properties, which refer to linked [`MessagePort`][] instances. ```js -const { MessageChannel } = require('worker_threads'); +const { MessageChannel } = require('node:worker_threads'); const { port1, port2 } = new MessageChannel(); port1.on('message', (message) => console.log('received', message)); @@ -499,7 +499,7 @@ The `'close'` event is emitted once either side of the channel has been disconnected. ```js -const { MessageChannel } = require('worker_threads'); +const { MessageChannel } = require('node:worker_threads'); const { port1, port2 } = new MessageChannel(); // Prints: @@ -612,7 +612,7 @@ In particular, the significant differences to `JSON` are: * {X509Certificate}s. ```js -const { MessageChannel } = require('worker_threads'); +const { MessageChannel } = require('node:worker_threads'); const { port1, port2 } = new MessageChannel(); port1.on('message', (message) => console.log(message)); @@ -623,7 +623,7 @@ circularData.foo = circularData; port2.postMessage(circularData); ``` -`transferList` may be a list of [`ArrayBuffer`][], [`MessagePort`][] and +`transferList` may be a list of [`ArrayBuffer`][], [`MessagePort`][], and [`FileHandle`][] objects. After transferring, they are not usable on the sending side of the channel anymore (even if they are not contained in `value`). Unlike with @@ -637,7 +637,7 @@ from either thread. They cannot be listed in `transferList`. `transferList`; in that case, the underlying memory is copied rather than moved. ```js -const { MessageChannel } = require('worker_threads'); +const { MessageChannel } = require('node:worker_threads'); const { port1, port2 } = new MessageChannel(); port1.on('message', (message) => console.log(message)); @@ -664,7 +664,7 @@ The message object is cloned immediately, and can be modified after posting without having side effects. For more information on the serialization and deserialization mechanisms -behind this API, see the [serialization API of the `v8` module][v8.serdes]. +behind this API, see the [serialization API of the `node:v8` module][v8.serdes]. #### Considerations when transferring TypedArrays and Buffers @@ -757,6 +757,18 @@ port2.postMessage(new URL('https://example.org')); // Prints: { } ``` +### `port.hasRef()` + + + +> Stability: 1 - Experimental + +* Returns: {boolean} + +If true, the `MessagePort` object will keep the Node.js event loop active. + ### `port.ref()` -* `filename` {string|URL} The path to the Worker’s main script or module. Must +* `filename` {string|URL} The path to the Worker's main script or module. Must be either an absolute path or a relative path (i.e. relative to the current working directory) starting with `./` or `../`, or a WHATWG `URL` object using `file:` or `data:` protocol. @@ -933,7 +945,7 @@ changes: * `env` {Object} If set, specifies the initial value of `process.env` inside the Worker thread. As a special value, [`worker.SHARE_ENV`][] may be used to specify that the parent thread and the child thread should share their - environment variables; in that case, changes to one thread’s `process.env` + environment variables; in that case, changes to one thread's `process.env` object affect the other thread as well. **Default:** `process.env`. * `eval` {boolean} If `true` and the first argument is a `string`, interpret the first argument to the constructor as a script that is executed once the @@ -951,7 +963,7 @@ changes: * `stderr` {boolean} If this is set to `true`, then `worker.stderr` is not automatically piped through to `process.stderr` in the parent. * `workerData` {any} Any JavaScript value that is cloned and made - available as [`require('worker_threads').workerData`][]. The cloning + available as [`require('node:worker_threads').workerData`][]. The cloning occurs as described in the [HTML structured clone algorithm][], and an error is thrown if the object cannot be cloned (e.g. because it contains `function`s). @@ -1013,7 +1025,7 @@ added: v10.5.0 * `value` {any} The transmitted value The `'message'` event is emitted when the worker thread has invoked -[`require('worker_threads').parentPort.postMessage()`][]. +[`require('node:worker_threads').parentPort.postMessage()`][]. See the [`port.on('message')`][] event for more details. All messages sent from the worker thread are emitted before the @@ -1099,7 +1111,7 @@ lifetime never accumulates any `idle` time, but is still be able to process messages. ```js -const { Worker, isMainThread, parentPort } = require('worker_threads'); +const { Worker, isMainThread, parentPort } = require('node:worker_threads'); if (isMainThread) { const worker = new Worker(__filename); @@ -1133,7 +1145,7 @@ added: v10.5.0 * `transferList` {Object\[]} Send a message to the worker that is received via -[`require('worker_threads').parentPort.on('message')`][]. +[`require('node:worker_threads').parentPort.on('message')`][]. See [`port.postMessage()`][] for more details. ### `worker.ref()` @@ -1233,7 +1245,7 @@ added: v10.5.0 * {integer} An integer identifier for the referenced thread. Inside the worker thread, -it is available as [`require('worker_threads').threadId`][]. +it is available as [`require('node:worker_threads').threadId`][]. This value is unique for each `Worker` instance inside a single process. ### `worker.unref()` @@ -1278,7 +1290,7 @@ if (isMainThread) { const { Worker, isMainThread, -} = require('worker_threads'); +} = require('node:worker_threads'); if (isMainThread) { new Worker(__filename); @@ -1322,11 +1334,11 @@ thread spawned will spawn another until the application crashes. [`WebAssembly.Module`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module [`Worker constructor options`]: #new-workerfilename-options [`Worker`]: #class-worker -[`cluster` module]: cluster.md [`data:` URL]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs [`fs.close()`]: fs.md#fsclosefd-callback [`fs.open()`]: fs.md#fsopenpath-flags-mode-callback [`markAsUntransferable()`]: #workermarkasuntransferableobject +[`node:cluster` module]: cluster.md [`perf_hooks.performance`]: perf_hooks.md#perf_hooksperformance [`perf_hooks` `eventLoopUtilization()`]: perf_hooks.md#performanceeventlooputilizationutilization1-utilization2 [`port.on('message')`]: #event-message @@ -1341,12 +1353,12 @@ thread spawned will spawn another until the application crashes. [`process.stdin`]: process.md#processstdin [`process.stdout`]: process.md#processstdout [`process.title`]: process.md#processtitle -[`require('worker_threads').isMainThread`]: #workerismainthread -[`require('worker_threads').parentPort.on('message')`]: #event-message -[`require('worker_threads').parentPort.postMessage()`]: #workerpostmessagevalue-transferlist -[`require('worker_threads').parentPort`]: #workerparentport -[`require('worker_threads').threadId`]: #workerthreadid -[`require('worker_threads').workerData`]: #workerworkerdata +[`require('node:worker_threads').isMainThread`]: #workerismainthread +[`require('node:worker_threads').parentPort.on('message')`]: #event-message +[`require('node:worker_threads').parentPort.postMessage()`]: #workerpostmessagevalue-transferlist +[`require('node:worker_threads').parentPort`]: #workerparentport +[`require('node:worker_threads').threadId`]: #workerthreadid +[`require('node:worker_threads').workerData`]: #workerworkerdata [`trace_events`]: tracing.md [`v8.getHeapSnapshot()`]: v8.md#v8getheapsnapshot [`vm`]: vm.md diff --git a/doc/api/zlib.md b/doc/api/zlib.md index 0b1a7cc7ca47ba..83a767a07e0253 100644 --- a/doc/api/zlib.md +++ b/doc/api/zlib.md @@ -6,13 +6,13 @@ -The `zlib` module provides compression functionality implemented using Gzip, -Deflate/Inflate, and Brotli. +The `node:zlib` module provides compression functionality implemented using +Gzip, Deflate/Inflate, and Brotli. To access it: ```js -const zlib = require('zlib'); +const zlib = require('node:zlib'); ``` Compression and decompression are built around the Node.js [Streams API][]. @@ -22,12 +22,12 @@ piping the source stream through a `zlib` `Transform` stream into a destination stream: ```js -const { createGzip } = require('zlib'); -const { pipeline } = require('stream'); +const { createGzip } = require('node:zlib'); +const { pipeline } = require('node:stream'); const { createReadStream, createWriteStream -} = require('fs'); +} = require('node:fs'); const gzip = createGzip(); const source = createReadStream('input.txt'); @@ -42,7 +42,7 @@ pipeline(source, gzip, destination, (err) => { // Or, Promisified -const { promisify } = require('util'); +const { promisify } = require('node:util'); const pipe = promisify(pipeline); async function do_gzip(input, output) { @@ -62,7 +62,7 @@ do_gzip('input.txt', 'input.txt.gz') It is also possible to compress or decompress data in a single step: ```js -const { deflate, unzip } = require('zlib'); +const { deflate, unzip } = require('node:zlib'); const input = '.................................'; deflate(input, (err, buffer) => { @@ -84,7 +84,7 @@ unzip(buffer, (err, buffer) => { // Or, Promisified -const { promisify } = require('util'); +const { promisify } = require('node:util'); const do_unzip = promisify(unzip); do_unzip(buffer) @@ -105,7 +105,7 @@ Creating and using a large number of zlib objects simultaneously can cause significant memory fragmentation. ```js -const zlib = require('zlib'); +const zlib = require('node:zlib'); const payload = Buffer.from('This is some data'); @@ -124,7 +124,7 @@ operations be cached to avoid duplication of effort. ## Compressing HTTP requests and responses -The `zlib` module can be used to implement support for the `gzip`, `deflate` +The `node:zlib` module can be used to implement support for the `gzip`, `deflate` and `br` content-encoding mechanisms defined by [HTTP](https://tools.ietf.org/html/rfc7230#section-4.2). @@ -140,10 +140,10 @@ tradeoffs involved in `zlib` usage. ```js // Client request example -const zlib = require('zlib'); -const http = require('http'); -const fs = require('fs'); -const { pipeline } = require('stream'); +const zlib = require('node:zlib'); +const http = require('node:http'); +const fs = require('node:fs'); +const { pipeline } = require('node:stream'); const request = http.get({ host: 'example.com', path: '/', @@ -181,10 +181,10 @@ request.on('response', (response) => { // server example // Running a gzip operation on every request is quite expensive. // It would be much more efficient to cache the compressed buffer. -const zlib = require('zlib'); -const http = require('http'); -const fs = require('fs'); -const { pipeline } = require('stream'); +const zlib = require('node:zlib'); +const http = require('node:http'); +const fs = require('node:fs'); +const { pipeline } = require('node:stream'); http.createServer((request, response) => { const raw = fs.createReadStream('index.html'); @@ -304,8 +304,8 @@ speed, at the cost of memory usage. There are equivalents to the zlib options for Brotli-based streams, although these options have different ranges than the zlib ones: -* zlib’s `level` option matches Brotli’s `BROTLI_PARAM_QUALITY` option. -* zlib’s `windowBits` option matches Brotli’s `BROTLI_PARAM_LGWIN` option. +* zlib's `level` option matches Brotli's `BROTLI_PARAM_QUALITY` option. +* zlib's `windowBits` option matches Brotli's `BROTLI_PARAM_LGWIN` option. See [below][Brotli parameters] for more details on Brotli-specific options. @@ -319,9 +319,9 @@ In the following example, `flush()` is used to write a compressed partial HTTP response to the client: ```js -const zlib = require('zlib'); -const http = require('http'); -const { pipeline } = require('stream'); +const zlib = require('node:zlib'); +const http = require('node:http'); +const { pipeline } = require('node:stream'); http.createServer((request, response) => { // For the sake of simplicity, the Accept-Encoding checks are omitted. @@ -365,14 +365,14 @@ added: v0.5.8 ### zlib constants All of the constants defined in `zlib.h` are also defined on -`require('zlib').constants`. In the normal course of operations, it will not be -necessary to use these constants. They are documented so that their presence is -not surprising. This section is taken almost directly from the +`require('node:zlib').constants`. In the normal course of operations, it will +not be necessary to use these constants. They are documented so that their +presence is not surprising. This section is taken almost directly from the [zlib documentation][]. -Previously, the constants were available directly from `require('zlib')`, for -instance `zlib.Z_NO_FLUSH`. Accessing the constants directly from the module is -currently still possible but is deprecated. +Previously, the constants were available directly from `require('node:zlib')`, +for instance `zlib.Z_NO_FLUSH`. Accessing the constants directly from the module +is currently still possible but is deprecated. Allowed flush values. @@ -678,11 +678,11 @@ changes: description: This class was renamed from `Zlib` to `ZlibBase`. --> -Not exported by the `zlib` module. It is documented here because it is the base -class of the compressor/decompressor classes. +Not exported by the `node:zlib` module. It is documented here because it is the +base class of the compressor/decompressor classes. -This class inherits from [`stream.Transform`][], allowing `zlib` objects to be -used in pipes and similar stream operations. +This class inherits from [`stream.Transform`][], allowing `node:zlib` objects to +be used in pipes and similar stream operations. ### `zlib.bytesRead` diff --git a/doc/api_assets/README.md b/doc/api_assets/README.md index 07262bba4ce01a..e2c1d90cd0953f 100644 --- a/doc/api_assets/README.md +++ b/doc/api_assets/README.md @@ -1,5 +1,9 @@ # API Reference Document Assets +## api.js + +The main script for API reference documents. + ## hljs.css The syntax theme for code snippets in API reference documents. diff --git a/doc/api_assets/api.js b/doc/api_assets/api.js new file mode 100644 index 00000000000000..8854182c4c56f0 --- /dev/null +++ b/doc/api_assets/api.js @@ -0,0 +1,161 @@ +'use strict'; + +{ + function setupTheme() { + const kCustomPreference = 'customDarkTheme'; + const userSettings = sessionStorage.getItem(kCustomPreference); + const themeToggleButton = document.getElementById('theme-toggle-btn'); + + if (userSettings === null && window.matchMedia) { + const mq = window.matchMedia('(prefers-color-scheme: dark)'); + + if ('onchange' in mq) { + function mqChangeListener(e) { + document.documentElement.classList.toggle('dark-mode', e.matches); + } + mq.addEventListener('change', mqChangeListener); + if (themeToggleButton) { + themeToggleButton.addEventListener( + 'click', + function() { + mq.removeEventListener('change', mqChangeListener); + }, + { once: true } + ); + } + } + + if (mq.matches) { + document.documentElement.classList.add('dark-mode'); + } + } else if (userSettings === 'true') { + document.documentElement.classList.add('dark-mode'); + } + + if (themeToggleButton) { + themeToggleButton.hidden = false; + themeToggleButton.addEventListener('click', function() { + sessionStorage.setItem( + kCustomPreference, + document.documentElement.classList.toggle('dark-mode') + ); + }); + } + } + + function setupPickers() { + function closeAllPickers() { + for (const picker of pickers) { + picker.parentNode.classList.remove('expanded'); + } + + window.removeEventListener('click', closeAllPickers); + window.removeEventListener('keydown', onKeyDown); + } + + function onKeyDown(e) { + if (e.key === 'Escape') { + closeAllPickers(); + } + } + + const pickers = document.querySelectorAll('.picker-header > a'); + + for (const picker of pickers) { + const parentNode = picker.parentNode; + + picker.addEventListener('click', function(e) { + e.preventDefault(); + + /* + closeAllPickers as window event trigger already closed all the pickers, + if it already closed there is nothing else to do here + */ + if (parentNode.classList.contains('expanded')) { + return; + } + + /* + In the next frame reopen the picker if needed and also setup events + to close pickers if needed. + */ + + requestAnimationFrame(function() { + parentNode.classList.add('expanded'); + window.addEventListener('click', closeAllPickers); + window.addEventListener('keydown', onKeyDown); + }); + }); + } + } + + function setupStickyHeaders() { + const header = document.querySelector('.header'); + let ignoreNextIntersection = false; + + new IntersectionObserver( + function(e) { + const currentStatus = header.classList.contains('is-pinned'); + const newStatus = e[0].intersectionRatio < 1; + + // Same status, do nothing + if (currentStatus === newStatus) { + return; + } else if (ignoreNextIntersection) { + ignoreNextIntersection = false; + return; + } + + /* + To avoid flickering, ignore the next changes event that is triggered + as the visible elements in the header change once we pin it. + + The timer is reset anyway after few milliseconds. + */ + ignoreNextIntersection = true; + setTimeout(function() { + ignoreNextIntersection = false; + }, 50); + + header.classList.toggle('is-pinned', newStatus); + }, + { threshold: [1] } + ).observe(header); + } + + function setupAltDocsLink() { + const linkWrapper = document.getElementById('alt-docs'); + + function updateHashes() { + for (const link of linkWrapper.querySelectorAll('a')) { + link.hash = location.hash; + } + } + + addEventListener('hashchange', updateHashes); + updateHashes(); + } + + function bootstrap() { + // Check if we have JavaScript support. + document.documentElement.classList.add('has-js'); + + // Restore user mode preferences. + setupTheme(); + + // Handle pickers with click/taps rather than hovers. + setupPickers(); + + // Track when the header is in sticky position. + setupStickyHeaders(); + + // Make link to other versions of the doc open to the same hash target (if it exists). + setupAltDocsLink(); + } + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', bootstrap, { once: true }); + } else { + bootstrap(); + } +} diff --git a/doc/api_assets/style.css b/doc/api_assets/style.css index fa12c02ce7dfbb..663025e1c27ef5 100644 --- a/doc/api_assets/style.css +++ b/doc/api_assets/style.css @@ -40,6 +40,17 @@ --color-text-secondary: var(--green2); } +h4 :target, +h5 :target { + scroll-margin-top: 55px; +} + +@supports not (content-visibility: auto) { + h3 :target { + scroll-margin-top: 55px; + } +} + .dark-mode { --background-color-highlight: var(--black2); --color-critical: var(--red4); @@ -189,19 +200,23 @@ li.picker-header .expanded-arrow { display: none; } -li.picker-header:hover .collapsed-arrow { +li.picker-header.expanded .collapsed-arrow, +:root:not(.has-js) li.picker-header:hover .collapsed-arrow { display: none; } -li.picker-header:hover .expanded-arrow { +li.picker-header.expanded .expanded-arrow, +:root:not(.has-js) li.picker-header:hover .expanded-arrow { display: inline-block; } -li.picker-header:hover > a { +li.picker-header.expanded > a, +:root:not(.has-js) li.picker-header:hover > a { border-radius: 2px 2px 0 0; } -li.picker-header:hover > .picker { +li.picker-header.expanded > .picker, +:root:not(.has-js) li.picker-header:hover > .picker { display: block; z-index: 1; } @@ -807,13 +822,38 @@ kbd { background-color: var(--color-fill-app); } -@media not screen, (max-height: 1000px) { +@media not screen, (max-width: 600px) { .header { position: relative; top: 0; } } +@media not screen, (max-height: 1000px) { + :root:not(.has-js) .header { + position: relative; + top: 0; + } +} + +.header .pinned-header { + display: none; + margin-right: 0.4rem; + font-weight: 700; +} + +.header.is-pinned .header-container { + display: none; +} + +.header.is-pinned .pinned-header { + display: inline; +} + +.header.is-pinned #gtoc { + margin: 0; +} + .header-container { display: flex; align-items: center; @@ -845,6 +885,14 @@ kbd { padding-right: 0; } + .header #gtoc > ul > li.pinned-header { + display: none; + } + + .header.is-pinned #gtoc > ul > li.pinned-header { + display: inline; + } + #gtoc > ul > li.gtoc-picker-header { display: none; } @@ -905,6 +953,9 @@ kbd { background-repeat: no-repeat; width: 142px; height: 20px; + display: block; + cursor: pointer; + margin: 0; } .js-flavor-selector:checked { background-image: url(./js-flavor-esm.svg); diff --git a/doc/changelogs/CHANGELOG_V16.md b/doc/changelogs/CHANGELOG_V16.md index 95e423070cb442..f26c405068d7fc 100644 --- a/doc/changelogs/CHANGELOG_V16.md +++ b/doc/changelogs/CHANGELOG_V16.md @@ -9,6 +9,7 @@ +16.17.0
                  16.16.0
                  16.15.1
                  16.15.0
                  @@ -62,6 +63,805 @@ * [io.js](CHANGELOG_IOJS.md) * [Archive](CHANGELOG_ARCHIVE.md) + + +## 2022-08-16, Version 16.17.0 'Gallium' (LTS), @targos + +### Notable Changes + +#### Experimental command-line argument parser API + +Adds [`util.parseArgs`](https://nodejs.org/dist/latest-v16.x/docs/api/util.html#utilparseargsconfig) helper for higher level command-line argument parsing. + +Contributed by Benjamin Coe, John Gee, Darcy Clarke, Joe Sepi, Kevin Gibbons, Aaron Casanova, Jessica Nahulan, and Jordan Harband - [#42675](https://github.com/nodejs/node/pull/42675) + +#### Experimental ESM Loader Hooks API + +Node.js ESM Loader hooks now support multiple custom loaders, and composition is +achieved via "chaining": `foo-loader` calls `bar-loader` calls `qux-loader` +(a custom loader _must_ now signal a short circuit when intentionally not +calling the next). See the [ESM docs](https://nodejs.org/dist/latest-v16.x/docs/api/esm.html) for details. + +Real-world use-cases are laid out for end-users with working examples in the +article [Custom ESM loaders: Who, what, when, where, why, how](https://dev.to/jakobjingleheimer/custom-esm-loaders-who-what-when-where-why-how-4i1o). + +Contributed by Jacob Smith, Geoffrey Booth, and Bradley Farias - [#42623](https://github.com/nodejs/node/pull/42623) + +#### Experimental test runner + +The [`node:test`](https://nodejs.org/dist/latest-v16.x/docs/api/test.html) module, which was initially introduced in Node.js v18.0.0, +is now available with all the changes done to it up to Node.js v18.7.0. + +#### Improved interoperability of the Web Crypto API + +To better align Node.js' experimental implementation of the Web Crypto API with other runtimes, several changes were made: + +* Support for CFRG curves was added, with the `'Ed25519'`, `'Ed448'`, `'X25519'`, and `'X448'` algorithms. +* The proprietary `'NODE-DSA'`, `'NODE-DH'`, `'NODE-SCRYPT'`, `'NODE-ED25519'`, `'NODE-ED448'`, `'NODE-X25519'`, and `'NODE-X448'` algorithms were removed. +* The proprietary `'node.keyObject'` import/export format was removed. + +Contributed by Filip Skokan - [#42507](https://github.com/nodejs/node/pull/42507), [#43310](https://github.com/nodejs/node/pull/43310) + +#### Dependency updates + +* Updated Corepack to 0.12.1 - [#43965](https://github.com/nodejs/node/pull/43965) +* Updated ICU to 71.1 - [#42655](https://github.com/nodejs/node/pull/42655) +* Updated npm to 8.15.0 - [#43917](https://github.com/nodejs/node/pull/43917) +* Updated Undici to 5.8.0 - [#43886](https://github.com/nodejs/node/pull/43886) + +#### Other notable changes + +* \[[`5f1e9e2030`](https://github.com/nodejs/node/commit/5f1e9e2030)] - **(SEMVER-MINOR)** **crypto**: make authTagLength optional for CC20P1305 (Tobias Nießen) [#42427](https://github.com/nodejs/node/pull/42427) +* \[[`934077a137`](https://github.com/nodejs/node/commit/934077a137)] - **(SEMVER-MINOR)** **crypto**: align webcrypto RSA key import/export with other implementations (Filip Skokan) [#42816](https://github.com/nodejs/node/pull/42816) +* \[[`7683e9623c`](https://github.com/nodejs/node/commit/7683e9623c)] - **(SEMVER-MINOR)** **dns**: export error code constants from `dns/promises` (Feng Yu) [#43176](https://github.com/nodejs/node/pull/43176) +* \[[`302a134b83`](https://github.com/nodejs/node/commit/302a134b83)] - **doc**: deprecate coercion to integer in process.exit (Daeyeon Jeong) [#43738](https://github.com/nodejs/node/pull/43738) +* \[[`4884f18ce5`](https://github.com/nodejs/node/commit/4884f18ce5)] - **(SEMVER-MINOR)** **doc**: deprecate diagnostics\_channel object subscribe method (Stephen Belanger) [#42714](https://github.com/nodejs/node/pull/42714) +* \[[`90f395dda9`](https://github.com/nodejs/node/commit/90f395dda9)] - **(SEMVER-MINOR)** **errors**: add support for cause in aborterror (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`7a5de2cc0c`](https://github.com/nodejs/node/commit/7a5de2cc0c)] - **(SEMVER-MINOR)** **events**: expose CustomEvent on global with CLI flag (Daeyeon Jeong) [#43885](https://github.com/nodejs/node/pull/43885) +* \[[`087adbb7a3`](https://github.com/nodejs/node/commit/087adbb7a3)] - **(SEMVER-MINOR)** **events**: add `CustomEvent` (Daeyeon Jeong) [#43514](https://github.com/nodejs/node/pull/43514) +* \[[`979c98a3cb`](https://github.com/nodejs/node/commit/979c98a3cb)] - **(SEMVER-MINOR)** **events**: propagate abortsignal reason in new AbortError ctor in events (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`e04c8a4921`](https://github.com/nodejs/node/commit/e04c8a4921)] - **(SEMVER-MINOR)** **fs**: propagate abortsignal reason in new AbortSignal constructors (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`464830993e`](https://github.com/nodejs/node/commit/464830993e)] - **(SEMVER-MINOR)** **fs**: make params in writing methods optional (LiviaMedeiros) [#42601](https://github.com/nodejs/node/pull/42601) +* \[[`3d7808ec3f`](https://github.com/nodejs/node/commit/3d7808ec3f)] - **(SEMVER-MINOR)** **fs**: add `read(buffer[, options])` versions (LiviaMedeiros) [#42768](https://github.com/nodejs/node/pull/42768) +* \[[`082a2630fd`](https://github.com/nodejs/node/commit/082a2630fd)] - **(SEMVER-MINOR)** **http**: add drop request event for http server (theanarkh) [#43806](https://github.com/nodejs/node/pull/43806) +* \[[`5a74939770`](https://github.com/nodejs/node/commit/5a74939770)] - **(SEMVER-MINOR)** **http**: add diagnostics channel for http client (theanarkh) [#43580](https://github.com/nodejs/node/pull/43580) +* \[[`f05fd1a423`](https://github.com/nodejs/node/commit/f05fd1a423)] - **(SEMVER-MINOR)** **http**: add perf\_hooks detail for http request and client (theanarkh) [#43361](https://github.com/nodejs/node/pull/43361) +* \[[`9d1b4b7e29`](https://github.com/nodejs/node/commit/9d1b4b7e29)] - **(SEMVER-MINOR)** **http**: add uniqueHeaders option to request and createServer (Paolo Insogna) [#41397](https://github.com/nodejs/node/pull/41397) +* \[[`fa5ac5a2eb`](https://github.com/nodejs/node/commit/fa5ac5a2eb)] - **(SEMVER-MINOR)** **http2**: propagate abortsignal reason in new AbortError constructor (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`94070f152e`](https://github.com/nodejs/node/commit/94070f152e)] - **(SEMVER-MINOR)** **http2**: compat support for array headers (OneNail) [#42901](https://github.com/nodejs/node/pull/42901) +* \[[`36dd39dec0`](https://github.com/nodejs/node/commit/36dd39dec0)] - **(SEMVER-MINOR)** **lib**: propagate abortsignal reason in new AbortError constructor in blob (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`8adf7d5e91`](https://github.com/nodejs/node/commit/8adf7d5e91)] - **(SEMVER-MINOR)** **lib**: add abortSignal.throwIfAborted() (James M Snell) [#40951](https://github.com/nodejs/node/pull/40951) +* \[[`3c1ed86840`](https://github.com/nodejs/node/commit/3c1ed86840)] - **(SEMVER-MINOR)** **lib**: improved diagnostics\_channel subscribe/unsubscribe (Stephen Belanger) [#42714](https://github.com/nodejs/node/pull/42714) +* \[[`e6186af5cc`](https://github.com/nodejs/node/commit/e6186af5cc)] - **(SEMVER-MINOR)** **module**: add isBuiltIn method (hemanth.hm) [#43396](https://github.com/nodejs/node/pull/43396) +* \[[`3d851d6d6b`](https://github.com/nodejs/node/commit/3d851d6d6b)] - **(SEMVER-MINOR)** **module,repl**: support 'node:'-only core modules (Colin Ihrig) [#42325](https://github.com/nodejs/node/pull/42325) +* \[[`303bd08d88`](https://github.com/nodejs/node/commit/303bd08d88)] - **(SEMVER-MINOR)** **net**: add drop event for net server (theanarkh) [#43582](https://github.com/nodejs/node/pull/43582) +* \[[`da03e9f484`](https://github.com/nodejs/node/commit/da03e9f484)] - **(SEMVER-MINOR)** **net**: add ability to reset a tcp socket (pupilTong) [#43112](https://github.com/nodejs/node/pull/43112) +* \[[`73f852e1e3`](https://github.com/nodejs/node/commit/73f852e1e3)] - **(SEMVER-MINOR)** **node-api**: emit uncaught-exception on unhandled tsfn callbacks (Chengzhong Wu) [#36510](https://github.com/nodejs/node/pull/36510) +* \[[`6dcdcd7f50`](https://github.com/nodejs/node/commit/6dcdcd7f50)] - **(SEMVER-MINOR)** **perf\_hooks**: add PerformanceResourceTiming (RafaelGSS) [#42725](https://github.com/nodejs/node/pull/42725) +* \[[`5750358872`](https://github.com/nodejs/node/commit/5750358872)] - **(SEMVER-MINOR)** **report**: add more heap infos in process report (theanarkh) [#43116](https://github.com/nodejs/node/pull/43116) +* \[[`e7b99e8c8d`](https://github.com/nodejs/node/commit/e7b99e8c8d)] - **(SEMVER-MINOR)** **src**: add --openssl-legacy-provider option (Daniel Bevenius) [#40478](https://github.com/nodejs/node/pull/40478) +* \[[`1281a48b89`](https://github.com/nodejs/node/commit/1281a48b89)] - **(SEMVER-MINOR)** **src**: define fs.constants.S\_IWUSR & S\_IRUSR for Win (Liviu Ionescu) [#42757](https://github.com/nodejs/node/pull/42757) +* \[[`9ea9797d34`](https://github.com/nodejs/node/commit/9ea9797d34)] - **(SEMVER-MINOR)** **src,doc,test**: add --openssl-shared-config option (Daniel Bevenius) [#43124](https://github.com/nodejs/node/pull/43124) +* \[[`046debaee0`](https://github.com/nodejs/node/commit/046debaee0)] - **(SEMVER-MINOR)** **stream**: use cause options in AbortError constructors (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`6641fda10a`](https://github.com/nodejs/node/commit/6641fda10a)] - **(SEMVER-MINOR)** **stream**: add iterator helper find (Nitzan Uziely) [#41849](https://github.com/nodejs/node/pull/41849) +* \[[`edec73032c`](https://github.com/nodejs/node/commit/edec73032c)] - **(SEMVER-MINOR)** **stream**: add writableAborted (Robert Nagy) [#40802](https://github.com/nodejs/node/pull/40802) +* \[[`2aae868fa2`](https://github.com/nodejs/node/commit/2aae868fa2)] - **(SEMVER-MINOR)** **timers**: propagate signal.reason in awaitable timers (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`513f52445b`](https://github.com/nodejs/node/commit/513f52445b)] - **(SEMVER-MINOR)** **v8**: add v8.startupSnapshot utils (Joyee Cheung) [#43329](https://github.com/nodejs/node/pull/43329) +* \[[`a8eca74450`](https://github.com/nodejs/node/commit/a8eca74450)] - **(SEMVER-MINOR)** **v8**: export more fields in getHeapStatistics (theanarkh) [#42784](https://github.com/nodejs/node/pull/42784) +* \[[`845279e331`](https://github.com/nodejs/node/commit/845279e331)] - **(SEMVER-MINOR)** **worker**: add hasRef() to MessagePort (Darshan Sen) [#42849](https://github.com/nodejs/node/pull/42849) + +### Commits + +#### Semver-minor commits + +* \[[`58279d5b76`](https://github.com/nodejs/node/commit/58279d5b76)] - **(SEMVER-MINOR)** **buffer**: graduate Blob from experimental (James M Snell) [#41270](https://github.com/nodejs/node/pull/41270) +* \[[`72a0c5c743`](https://github.com/nodejs/node/commit/72a0c5c743)] - **(SEMVER-MINOR)** **crypto**: remove Node.js-specific webcrypto extensions (Filip Skokan) [#43310](https://github.com/nodejs/node/pull/43310) +* \[[`2e3a69a2ba`](https://github.com/nodejs/node/commit/2e3a69a2ba)] - **(SEMVER-MINOR)** **crypto**: add CFRG curves to Web Crypto API (Filip Skokan) [#42507](https://github.com/nodejs/node/pull/42507) +* \[[`5f1e9e2030`](https://github.com/nodejs/node/commit/5f1e9e2030)] - **(SEMVER-MINOR)** **crypto**: make authTagLength optional for CC20P1305 (Tobias Nießen) [#42427](https://github.com/nodejs/node/pull/42427) +* \[[`934077a137`](https://github.com/nodejs/node/commit/934077a137)] - **(SEMVER-MINOR)** **crypto**: align webcrypto RSA key import/export with other implementations (Filip Skokan) [#42816](https://github.com/nodejs/node/pull/42816) +* \[[`7683e9623c`](https://github.com/nodejs/node/commit/7683e9623c)] - **(SEMVER-MINOR)** **dns**: export error code constants from `dns/promises` (Feng Yu) [#43176](https://github.com/nodejs/node/pull/43176) +* \[[`4884f18ce5`](https://github.com/nodejs/node/commit/4884f18ce5)] - **(SEMVER-MINOR)** **doc**: deprecate diagnostics\_channel object subscribe method (Stephen Belanger) [#42714](https://github.com/nodejs/node/pull/42714) +* \[[`90f395dda9`](https://github.com/nodejs/node/commit/90f395dda9)] - **(SEMVER-MINOR)** **errors**: add support for cause in aborterror (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`247a6f6e85`](https://github.com/nodejs/node/commit/247a6f6e85)] - **(SEMVER-MINOR)** **esm**: add chaining to loaders (Jacob Smith) [#42623](https://github.com/nodejs/node/pull/42623) +* \[[`7a5de2cc0c`](https://github.com/nodejs/node/commit/7a5de2cc0c)] - **(SEMVER-MINOR)** **events**: expose CustomEvent on global with CLI flag (Daeyeon Jeong) [#43885](https://github.com/nodejs/node/pull/43885) +* \[[`087adbb7a3`](https://github.com/nodejs/node/commit/087adbb7a3)] - **(SEMVER-MINOR)** **events**: add `CustomEvent` (Daeyeon Jeong) [#43514](https://github.com/nodejs/node/pull/43514) +* \[[`979c98a3cb`](https://github.com/nodejs/node/commit/979c98a3cb)] - **(SEMVER-MINOR)** **events**: propagate abortsignal reason in new AbortError ctor in events (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`e04c8a4921`](https://github.com/nodejs/node/commit/e04c8a4921)] - **(SEMVER-MINOR)** **fs**: propagate abortsignal reason in new AbortSignal constructors (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`464830993e`](https://github.com/nodejs/node/commit/464830993e)] - **(SEMVER-MINOR)** **fs**: make params in writing methods optional (LiviaMedeiros) [#42601](https://github.com/nodejs/node/pull/42601) +* \[[`3d7808ec3f`](https://github.com/nodejs/node/commit/3d7808ec3f)] - **(SEMVER-MINOR)** **fs**: add `read(buffer[, options])` versions (LiviaMedeiros) [#42768](https://github.com/nodejs/node/pull/42768) +* \[[`082a2630fd`](https://github.com/nodejs/node/commit/082a2630fd)] - **(SEMVER-MINOR)** **http**: add drop request event for http server (theanarkh) [#43806](https://github.com/nodejs/node/pull/43806) +* \[[`5a74939770`](https://github.com/nodejs/node/commit/5a74939770)] - **(SEMVER-MINOR)** **http**: add diagnostics channel for http client (theanarkh) [#43580](https://github.com/nodejs/node/pull/43580) +* \[[`f05fd1a423`](https://github.com/nodejs/node/commit/f05fd1a423)] - **(SEMVER-MINOR)** **http**: add perf\_hooks detail for http request and client (theanarkh) [#43361](https://github.com/nodejs/node/pull/43361) +* \[[`9d1b4b7e29`](https://github.com/nodejs/node/commit/9d1b4b7e29)] - **(SEMVER-MINOR)** **http**: add uniqueHeaders option to request and createServer (Paolo Insogna) [#41397](https://github.com/nodejs/node/pull/41397) +* \[[`fa5ac5a2eb`](https://github.com/nodejs/node/commit/fa5ac5a2eb)] - **(SEMVER-MINOR)** **http2**: propagate abortsignal reason in new AbortError constructor (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`94070f152e`](https://github.com/nodejs/node/commit/94070f152e)] - **(SEMVER-MINOR)** **http2**: compat support for array headers (OneNail) [#42901](https://github.com/nodejs/node/pull/42901) +* \[[`36dd39dec0`](https://github.com/nodejs/node/commit/36dd39dec0)] - **(SEMVER-MINOR)** **lib**: propagate abortsignal reason in new AbortError constructor in blob (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`8adf7d5e91`](https://github.com/nodejs/node/commit/8adf7d5e91)] - **(SEMVER-MINOR)** **lib**: add abortSignal.throwIfAborted() (James M Snell) [#40951](https://github.com/nodejs/node/pull/40951) +* \[[`3c1ed86840`](https://github.com/nodejs/node/commit/3c1ed86840)] - **(SEMVER-MINOR)** **lib**: improved diagnostics\_channel subscribe/unsubscribe (Stephen Belanger) [#42714](https://github.com/nodejs/node/pull/42714) +* \[[`e6186af5cc`](https://github.com/nodejs/node/commit/e6186af5cc)] - **(SEMVER-MINOR)** **module**: add isBuiltIn method (hemanth.hm) [#43396](https://github.com/nodejs/node/pull/43396) +* \[[`3d851d6d6b`](https://github.com/nodejs/node/commit/3d851d6d6b)] - **(SEMVER-MINOR)** **module,repl**: support 'node:'-only core modules (Colin Ihrig) [#42325](https://github.com/nodejs/node/pull/42325) +* \[[`303bd08d88`](https://github.com/nodejs/node/commit/303bd08d88)] - **(SEMVER-MINOR)** **net**: add drop event for net server (theanarkh) [#43582](https://github.com/nodejs/node/pull/43582) +* \[[`da03e9f484`](https://github.com/nodejs/node/commit/da03e9f484)] - **(SEMVER-MINOR)** **net**: add ability to reset a tcp socket (pupilTong) [#43112](https://github.com/nodejs/node/pull/43112) +* \[[`73f852e1e3`](https://github.com/nodejs/node/commit/73f852e1e3)] - **(SEMVER-MINOR)** **node-api**: emit uncaught-exception on unhandled tsfn callbacks (Chengzhong Wu) [#36510](https://github.com/nodejs/node/pull/36510) +* \[[`6dcdcd7f50`](https://github.com/nodejs/node/commit/6dcdcd7f50)] - **(SEMVER-MINOR)** **perf\_hooks**: add PerformanceResourceTiming (RafaelGSS) [#42725](https://github.com/nodejs/node/pull/42725) +* \[[`5750358872`](https://github.com/nodejs/node/commit/5750358872)] - **(SEMVER-MINOR)** **report**: add more heap infos in process report (theanarkh) [#43116](https://github.com/nodejs/node/pull/43116) +* \[[`e7b99e8c8d`](https://github.com/nodejs/node/commit/e7b99e8c8d)] - **(SEMVER-MINOR)** **src**: add --openssl-legacy-provider option (Daniel Bevenius) [#40478](https://github.com/nodejs/node/pull/40478) +* \[[`1281a48b89`](https://github.com/nodejs/node/commit/1281a48b89)] - **(SEMVER-MINOR)** **src**: define fs.constants.S\_IWUSR & S\_IRUSR for Win (Liviu Ionescu) [#42757](https://github.com/nodejs/node/pull/42757) +* \[[`9ea9797d34`](https://github.com/nodejs/node/commit/9ea9797d34)] - **(SEMVER-MINOR)** **src,doc,test**: add --openssl-shared-config option (Daniel Bevenius) [#43124](https://github.com/nodejs/node/pull/43124) +* \[[`046debaee0`](https://github.com/nodejs/node/commit/046debaee0)] - **(SEMVER-MINOR)** **stream**: use cause options in AbortError constructors (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`6641fda10a`](https://github.com/nodejs/node/commit/6641fda10a)] - **(SEMVER-MINOR)** **stream**: add iterator helper find (Nitzan Uziely) [#41849](https://github.com/nodejs/node/pull/41849) +* \[[`edec73032c`](https://github.com/nodejs/node/commit/edec73032c)] - **(SEMVER-MINOR)** **stream**: add writableAborted (Robert Nagy) [#40802](https://github.com/nodejs/node/pull/40802) +* \[[`9a530832cb`](https://github.com/nodejs/node/commit/9a530832cb)] - **(SEMVER-MINOR)** **test**: add initial test module (Colin Ihrig) [#42325](https://github.com/nodejs/node/pull/42325) +* \[[`61a2ddc597`](https://github.com/nodejs/node/commit/61a2ddc597)] - **(SEMVER-MINOR)** **test\_runner**: expose `describe` and `it` (Moshe Atlow) [#43420](https://github.com/nodejs/node/pull/43420) +* \[[`cd6f24be4c`](https://github.com/nodejs/node/commit/cd6f24be4c)] - **(SEMVER-MINOR)** **test\_runner**: add initial CLI runner (Colin Ihrig) [#42658](https://github.com/nodejs/node/pull/42658) +* \[[`a4b277cb4d`](https://github.com/nodejs/node/commit/a4b277cb4d)] - **(SEMVER-MINOR)** **test\_runner**: support 'only' tests (Colin Ihrig) [#42514](https://github.com/nodejs/node/pull/42514) +* \[[`2aae868fa2`](https://github.com/nodejs/node/commit/2aae868fa2)] - **(SEMVER-MINOR)** **timers**: propagate signal.reason in awaitable timers (James M Snell) [#41008](https://github.com/nodejs/node/pull/41008) +* \[[`432e3054be`](https://github.com/nodejs/node/commit/432e3054be)] - **(SEMVER-MINOR)** **util**: add tokens to parseArgs (John Gee) [#43459](https://github.com/nodejs/node/pull/43459) +* \[[`a1e122be62`](https://github.com/nodejs/node/commit/a1e122be62)] - **(SEMVER-MINOR)** **util**: add parseArgs module (Benjamin Coe) [#42675](https://github.com/nodejs/node/pull/42675) +* \[[`513f52445b`](https://github.com/nodejs/node/commit/513f52445b)] - **(SEMVER-MINOR)** **v8**: add v8.startupSnapshot utils (Joyee Cheung) [#43329](https://github.com/nodejs/node/pull/43329) +* \[[`a8eca74450`](https://github.com/nodejs/node/commit/a8eca74450)] - **(SEMVER-MINOR)** **v8**: export more fields in getHeapStatistics (theanarkh) [#42784](https://github.com/nodejs/node/pull/42784) +* \[[`845279e331`](https://github.com/nodejs/node/commit/845279e331)] - **(SEMVER-MINOR)** **worker**: add hasRef() to MessagePort (Darshan Sen) [#42849](https://github.com/nodejs/node/pull/42849) + +#### Semver-patch commits + +* \[[`480a754ddc`](https://github.com/nodejs/node/commit/480a754ddc)] - **assert**: callTracker throw a specific error message when possible (Moshe Atlow) [#43640](https://github.com/nodejs/node/pull/43640) +* \[[`ebb334b124`](https://github.com/nodejs/node/commit/ebb334b124)] - **assert**: fix CallTracker wraps the function causes the length to be lost (OneNail) [#42909](https://github.com/nodejs/node/pull/42909) +* \[[`7f8f83d4d0`](https://github.com/nodejs/node/commit/7f8f83d4d0)] - **assert**: make `assert.fail` less affected by prototype tampering (Antoine du Hamel) [#42918](https://github.com/nodejs/node/pull/42918) +* \[[`a6a46f9578`](https://github.com/nodejs/node/commit/a6a46f9578)] - **async\_hooks**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`84075821be`](https://github.com/nodejs/node/commit/84075821be)] - **async\_hooks**: remove destroyed symbol on Promises (Gerhard Stöbich) [#42402](https://github.com/nodejs/node/pull/42402) +* \[[`b69396a41a`](https://github.com/nodejs/node/commit/b69396a41a)] - **async\_hooks**: avoid decrementing iterator after erase (Gabriel Bota) [#42749](https://github.com/nodejs/node/pull/42749) +* \[[`6b7c6192ff`](https://github.com/nodejs/node/commit/6b7c6192ff)] - **bootstrap**: move global initialization to js (Alena Khineika) [#43625](https://github.com/nodejs/node/pull/43625) +* \[[`4fbe24588a`](https://github.com/nodejs/node/commit/4fbe24588a)] - **bootstrap**: use the isolate snapshot in workers (Joyee Cheung) [#42702](https://github.com/nodejs/node/pull/42702) +* \[[`3a83e5cfd9`](https://github.com/nodejs/node/commit/3a83e5cfd9)] - **bootstrap**: move embedded snapshot to SnapshotBuilder (Joyee Cheung) [#42702](https://github.com/nodejs/node/pull/42702) +* \[[`b4201ace9b`](https://github.com/nodejs/node/commit/b4201ace9b)] - **bootstrap**: reset process.\_exit and process.exitCode in pre-execution (Joyee Cheung) [#42466](https://github.com/nodejs/node/pull/42466) +* \[[`f8f7c1e5bd`](https://github.com/nodejs/node/commit/f8f7c1e5bd)] - **bootstrap**: run inspector and event loop in snapshot builder (Joyee Cheung) [#42466](https://github.com/nodejs/node/pull/42466) +* \[[`2d79480fcb`](https://github.com/nodejs/node/commit/2d79480fcb)] - **bootstrap**: make I/O streams work with user-land snapshot (Joyee Cheung) [#42466](https://github.com/nodejs/node/pull/42466) +* \[[`1b2946b1a4`](https://github.com/nodejs/node/commit/1b2946b1a4)] - **bootstrap**: refresh options in pre-execution (Joyee Cheung) [#42466](https://github.com/nodejs/node/pull/42466) +* \[[`ca57563522`](https://github.com/nodejs/node/commit/ca57563522)] - **bootstrap**: use SnapshotData to pass snapshot data around (Joyee Cheung) [#42360](https://github.com/nodejs/node/pull/42360) +* \[[`60d032b89c`](https://github.com/nodejs/node/commit/60d032b89c)] - **buffer**: do not leak memory if buffer is too big (Keyhan Vakil) [#43938](https://github.com/nodejs/node/pull/43938) +* \[[`5ddd367bec`](https://github.com/nodejs/node/commit/5ddd367bec)] - **buffer**: improve Blob constructor error message when passing a string (Xuguang Mei) [#42338](https://github.com/nodejs/node/pull/42338) +* \[[`691e5d8bf3`](https://github.com/nodejs/node/commit/691e5d8bf3)] - **buffer**: fix `atob` input validation (Antoine du Hamel) [#42539](https://github.com/nodejs/node/pull/42539) +* \[[`a948fb8b56`](https://github.com/nodejs/node/commit/a948fb8b56)] - **build**: add .gitattributes for npm and other shims (Hrishikesh Kadam) [#43879](https://github.com/nodejs/node/pull/43879) +* \[[`623dd2a70b`](https://github.com/nodejs/node/commit/623dd2a70b)] - **build**: remove precompiled header and debug information for host builds (Niyas Sait) [#42538](https://github.com/nodejs/node/pull/42538) +* \[[`129b05e0c5`](https://github.com/nodejs/node/commit/129b05e0c5)] - **build**: fix various shared library build issues (William Marlow) [#41850](https://github.com/nodejs/node/pull/41850) +* \[[`fba6e96326`](https://github.com/nodejs/node/commit/fba6e96326)] - **build**: fix indeterminacy of icu\_locales value (Sergey Nazaryev) [#42865](https://github.com/nodejs/node/pull/42865) +* \[[`74bce1c448`](https://github.com/nodejs/node/commit/74bce1c448)] - **build**: improve reliability of find\_python.cmd script (Luigi Pinca) [#42810](https://github.com/nodejs/node/pull/42810) +* \[[`637af6c068`](https://github.com/nodejs/node/commit/637af6c068)] - **build**: windows/arm64 native compilation support (Niyas Sait) [#42408](https://github.com/nodejs/node/pull/42408) +* \[[`fe661fadad`](https://github.com/nodejs/node/commit/fe661fadad)] - **build**: add --node-snapshot-main configure option (Joyee Cheung) [#42466](https://github.com/nodejs/node/pull/42466) +* \[[`daadd58baa`](https://github.com/nodejs/node/commit/daadd58baa)] - **build,test**: increase stack size limit on Windows (Tobias Nießen) [#43632](https://github.com/nodejs/node/pull/43632) +* \[[`1e1634ae99`](https://github.com/nodejs/node/commit/1e1634ae99)] - **child\_process**: do not need to count length when maxBuffer is Infinity (theanarkh) [#43822](https://github.com/nodejs/node/pull/43822) +* \[[`2b6e98b6b2`](https://github.com/nodejs/node/commit/2b6e98b6b2)] - **child\_process**: improve ipc write performance (rubikscraft) [#42931](https://github.com/nodejs/node/pull/42931) +* \[[`7aac430b3f`](https://github.com/nodejs/node/commit/7aac430b3f)] - **child\_process**: speed up 'advanced' ipc receiving (rubikscraft) [#42931](https://github.com/nodejs/node/pull/42931) +* \[[`6844930290`](https://github.com/nodejs/node/commit/6844930290)] - **child\_process**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`72400b7a7b`](https://github.com/nodejs/node/commit/72400b7a7b)] - **child\_process**: add env contents types in JSDoc (Rich Trott) [#42494](https://github.com/nodejs/node/pull/42494) +* \[[`fe57e5685d`](https://github.com/nodejs/node/commit/fe57e5685d)] - **cluster**: send connection to other server when worker drop it (theanarkh) [#43747](https://github.com/nodejs/node/pull/43747) +* \[[`61b5d4a999`](https://github.com/nodejs/node/commit/61b5d4a999)] - **cluster**: fix closing dgram sockets in cluster workers throws errors (Ouyang Yadong) [#43709](https://github.com/nodejs/node/pull/43709) +* \[[`97f4cc7766`](https://github.com/nodejs/node/commit/97f4cc7766)] - **cluster**: fix fd leak (theanarkh) [#43650](https://github.com/nodejs/node/pull/43650) +* \[[`1cb19ec96a`](https://github.com/nodejs/node/commit/1cb19ec96a)] - **cluster**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`c8706f3a7f`](https://github.com/nodejs/node/commit/c8706f3a7f)] - **cluster, net**: fix listen pipe with readable and writable in cluster (theanarkh) [#43634](https://github.com/nodejs/node/pull/43634) +* \[[`35fc1c205e`](https://github.com/nodejs/node/commit/35fc1c205e)] - **console**: fix console.dir crash on a revoked proxy (Daeyeon Jeong) [#43100](https://github.com/nodejs/node/pull/43100) +* \[[`3449472f3d`](https://github.com/nodejs/node/commit/3449472f3d)] - **crypto**: remove unneeded guard (Rich Trott) [#43856](https://github.com/nodejs/node/pull/43856) +* \[[`a3a845b8ba`](https://github.com/nodejs/node/commit/a3a845b8ba)] - **crypto**: don't disable TLS 1.3 without suites (Adam Majer) [#43427](https://github.com/nodejs/node/pull/43427) +* \[[`588a84e11d`](https://github.com/nodejs/node/commit/588a84e11d)] - **crypto**: handle webcrypto generateKey() usages edge case (Filip Skokan) [#43454](https://github.com/nodejs/node/pull/43454) +* \[[`224d3f40dc`](https://github.com/nodejs/node/commit/224d3f40dc)] - **crypto**: update Wrapping and unwrapping keys webcrypto example (Filip Skokan) [#43452](https://github.com/nodejs/node/pull/43452) +* \[[`8dca8d7805`](https://github.com/nodejs/node/commit/8dca8d7805)] - **crypto**: fix webcrypto generateKey() with empty usages (Filip Skokan) [#43431](https://github.com/nodejs/node/pull/43431) +* \[[`bef600e787`](https://github.com/nodejs/node/commit/bef600e787)] - **crypto**: fix webcrypto digest() invalid algorithm (Filip Skokan) [#43431](https://github.com/nodejs/node/pull/43431) +* \[[`077ad7e90d`](https://github.com/nodejs/node/commit/077ad7e90d)] - **crypto**: fix webcrypto RSA generateKey() use of publicExponent (Filip Skokan) [#43431](https://github.com/nodejs/node/pull/43431) +* \[[`04572ec914`](https://github.com/nodejs/node/commit/04572ec914)] - **crypto**: fix webcrypto AES-KW keys accepting encrypt/decrypt usages (Filip Skokan) [#43431](https://github.com/nodejs/node/pull/43431) +* \[[`52ea86908d`](https://github.com/nodejs/node/commit/52ea86908d)] - **crypto**: fix webcrypto deriveBits for non-byte lengths (Filip Skokan) [#43431](https://github.com/nodejs/node/pull/43431) +* \[[`97b2fef24a`](https://github.com/nodejs/node/commit/97b2fef24a)] - **crypto**: fix webcrypto import of cfrg raw public keys (Filip Skokan) [#43404](https://github.com/nodejs/node/pull/43404) +* \[[`a57149d14e`](https://github.com/nodejs/node/commit/a57149d14e)] - **crypto**: fix webcrypto JWK EC and OKP import crv check (Filip Skokan) [#43346](https://github.com/nodejs/node/pull/43346) +* \[[`1cb267261c`](https://github.com/nodejs/node/commit/1cb267261c)] - **crypto**: test webcrypto ec raw public key import (Filip Skokan) [#43405](https://github.com/nodejs/node/pull/43405) +* \[[`02cf57b8d6`](https://github.com/nodejs/node/commit/02cf57b8d6)] - **crypto**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`4600892a45`](https://github.com/nodejs/node/commit/4600892a45)] - **crypto**: adjust minimum length in generateKey('hmac', ...) (LiviaMedeiros) [#42944](https://github.com/nodejs/node/pull/42944) +* \[[`baaf77898b`](https://github.com/nodejs/node/commit/baaf77898b)] - **crypto**: clean up parameter validation in HKDF (Tobias Nießen) [#42924](https://github.com/nodejs/node/pull/42924) +* \[[`3f43dadeda`](https://github.com/nodejs/node/commit/3f43dadeda)] - **crypto**: validate `this` in all webcrypto methods and getters (Filip Skokan) [#42815](https://github.com/nodejs/node/pull/42815) +* \[[`297e374565`](https://github.com/nodejs/node/commit/297e374565)] - **crypto**: do not add undefined hash in webcrypto normalizeAlgorithm (Filip Skokan) [#42559](https://github.com/nodejs/node/pull/42559) +* \[[`c764e81a69`](https://github.com/nodejs/node/commit/c764e81a69)] - **crypto**: cleanup webcrypto jwk code (Filip Skokan) [#42562](https://github.com/nodejs/node/pull/42562) +* \[[`c605ad1343`](https://github.com/nodejs/node/commit/c605ad1343)] - **crypto**: fix webcrypto derive key lengths (Filip Skokan) [#42542](https://github.com/nodejs/node/pull/42542) +* \[[`0b1b616a9c`](https://github.com/nodejs/node/commit/0b1b616a9c)] - **crypto**: improve prime size argument validation (Tobias Nießen) [#42234](https://github.com/nodejs/node/pull/42234) +* \[[`f1c12aa6df`](https://github.com/nodejs/node/commit/f1c12aa6df)] - **debugger**: throw a more useful error when the frame is missing (Kohei Ueno) [#42776](https://github.com/nodejs/node/pull/42776) +* \[[`f75a5a92ec`](https://github.com/nodejs/node/commit/f75a5a92ec)] - **debugger**: fix inconsistent inspector output of exec new Map() (Kohei Ueno) [#42423](https://github.com/nodejs/node/pull/42423) +* \[[`e3d8893265`](https://github.com/nodejs/node/commit/e3d8893265)] - **deps**: V8: backport 22698d267667 (Chengzhong Wu) [#43751](https://github.com/nodejs/node/pull/43751) +* \[[`06a6bdaf7a`](https://github.com/nodejs/node/commit/06a6bdaf7a)] - **deps**: update corepack to 0.12.1 (Node.js GitHub Bot) [#43965](https://github.com/nodejs/node/pull/43965) +* \[[`c7be356dd7`](https://github.com/nodejs/node/commit/c7be356dd7)] - **deps**: update hast-util-raw (Moshe Atlow) [#43927](https://github.com/nodejs/node/pull/43927) +* \[[`62c27d0d84`](https://github.com/nodejs/node/commit/62c27d0d84)] - **deps**: update undici to 5.8.0 (Node.js GitHub Bot) [#43886](https://github.com/nodejs/node/pull/43886) +* \[[`92051cb4a1`](https://github.com/nodejs/node/commit/92051cb4a1)] - **deps**: cherry-pick libuv/libuv\@3a7b955 (Ben Noordhuis) [#43950](https://github.com/nodejs/node/pull/43950) +* \[[`8835898e43`](https://github.com/nodejs/node/commit/8835898e43)] - **deps**: cherry-pick libuv/libuv\@abb109f (Ben Noordhuis) [#43950](https://github.com/nodejs/node/pull/43950) +* \[[`1566854218`](https://github.com/nodejs/node/commit/1566854218)] - **deps**: upgrade npm to 8.15.0 (npm team) [#43917](https://github.com/nodejs/node/pull/43917) +* \[[`e6baa8a113`](https://github.com/nodejs/node/commit/e6baa8a113)] - **deps**: upgrade npm to 8.14.0 (npm team) [#43826](https://github.com/nodejs/node/pull/43826) +* \[[`aa137caac3`](https://github.com/nodejs/node/commit/aa137caac3)] - **deps**: update corepack to 0.12.0 (Node.js GitHub Bot) [#43748](https://github.com/nodejs/node/pull/43748) +* \[[`04188e54f5`](https://github.com/nodejs/node/commit/04188e54f5)] - **deps**: update undici to 5.7.0 (Node.js GitHub Bot) [#43790](https://github.com/nodejs/node/pull/43790) +* \[[`09f9060f7d`](https://github.com/nodejs/node/commit/09f9060f7d)] - **deps**: upgrade npm to 8.13.2 (npm team) [#43622](https://github.com/nodejs/node/pull/43622) +* \[[`1343615224`](https://github.com/nodejs/node/commit/1343615224)] - **deps**: upgrade npm to 8.13.1 (npm team) [#43552](https://github.com/nodejs/node/pull/43552) +* \[[`49080bc42f`](https://github.com/nodejs/node/commit/49080bc42f)] - **deps**: patch V8 to 9.4.146.26 (Michaël Zasso) [#43778](https://github.com/nodejs/node/pull/43778) +* \[[`705a8afd81`](https://github.com/nodejs/node/commit/705a8afd81)] - **deps**: update Corepack to 0.11.2 (Maël Nison) [#43402](https://github.com/nodejs/node/pull/43402) +* \[[`552e91121b`](https://github.com/nodejs/node/commit/552e91121b)] - **deps**: update undici to 5.5.1 (Node.js GitHub Bot) [#43412](https://github.com/nodejs/node/pull/43412) +* \[[`0ff00945d5`](https://github.com/nodejs/node/commit/0ff00945d5)] - **deps**: update undici to 5.4.0 (Node.js GitHub Bot) [#43262](https://github.com/nodejs/node/pull/43262) +* \[[`170bec811b`](https://github.com/nodejs/node/commit/170bec811b)] - **deps**: update undici to 5.3.0 (Node.js GitHub Bot) [#43197](https://github.com/nodejs/node/pull/43197) +* \[[`b97075dfec`](https://github.com/nodejs/node/commit/b97075dfec)] - **deps**: update undici to 5.2.0 (Node.js GitHub Bot) [#43059](https://github.com/nodejs/node/pull/43059) +* \[[`4d4e00a6b0`](https://github.com/nodejs/node/commit/4d4e00a6b0)] - **deps**: update undici to 5.1.1 (Michaël Zasso) [#42939](https://github.com/nodejs/node/pull/42939) +* \[[`cba4f6c8a0`](https://github.com/nodejs/node/commit/cba4f6c8a0)] - **deps**: update Acorn to v8.7.0 (Michaël Zasso) [#42667](https://github.com/nodejs/node/pull/42667) +* \[[`a5507fd409`](https://github.com/nodejs/node/commit/a5507fd409)] - **deps**: update ICU to 71.1 (Michaël Zasso) [#42655](https://github.com/nodejs/node/pull/42655) +* \[[`cbb253e61e`](https://github.com/nodejs/node/commit/cbb253e61e)] - **deps**: upgrade npm to 8.12.1 (npm team) [#43301](https://github.com/nodejs/node/pull/43301) +* \[[`01e7d1f349`](https://github.com/nodejs/node/commit/01e7d1f349)] - **deps**: cherry-pick 4ab70f6 from V8 upstream (Khaidi Chu) [#43328](https://github.com/nodejs/node/pull/43328) +* \[[`fea892a168`](https://github.com/nodejs/node/commit/fea892a168)] - **dns**: fix getServers return undefined (jiahao.si) [#43922](https://github.com/nodejs/node/pull/43922) +* \[[`43a3239d85`](https://github.com/nodejs/node/commit/43a3239d85)] - **dns**: fix cares memory leak (theanarkh) [#43912](https://github.com/nodejs/node/pull/43912) +* \[[`8d2a256bf4`](https://github.com/nodejs/node/commit/8d2a256bf4)] - **dns**: make promise API fully constructed from `lib/internal/dns/promises` (Feng Yu) [#43227](https://github.com/nodejs/node/pull/43227) +* \[[`71f7b00fca`](https://github.com/nodejs/node/commit/71f7b00fca)] - **domain**: fix vm promise tracking while keeping isolation (Stephen Belanger) [#43556](https://github.com/nodejs/node/pull/43556) +* \[[`9f75f26ad9`](https://github.com/nodejs/node/commit/9f75f26ad9)] - **errors**: extract type detection & use in `ERR_INVALID_RETURN_VALUE` (Jacob Smith) [#43558](https://github.com/nodejs/node/pull/43558) +* \[[`f5115b4abc`](https://github.com/nodejs/node/commit/f5115b4abc)] - **errors,console**: refactor to use ES2021 syntax (小菜) [#42872](https://github.com/nodejs/node/pull/42872) +* \[[`85ba4e069d`](https://github.com/nodejs/node/commit/85ba4e069d)] - **errors,vm**: update error and use cause (Gus Caplan) [#42820](https://github.com/nodejs/node/pull/42820) +* \[[`ae157d9098`](https://github.com/nodejs/node/commit/ae157d9098)] - **esm**: fix loader hooks accepting too many arguments (Jacob Smith) [#44109](https://github.com/nodejs/node/pull/44109) +* \[[`3139c110dc`](https://github.com/nodejs/node/commit/3139c110dc)] - **esm**: remove superfluous argument (Rich Trott) [#43884](https://github.com/nodejs/node/pull/43884) +* \[[`63228efe08`](https://github.com/nodejs/node/commit/63228efe08)] - **esm**: throw on any non-2xx response (LiviaMedeiros) [#43742](https://github.com/nodejs/node/pull/43742) +* \[[`a6d4d31da5`](https://github.com/nodejs/node/commit/a6d4d31da5)] - **esm**: fix erroneous re-initialization of ESMLoader (Jacob Smith) [#43763](https://github.com/nodejs/node/pull/43763) +* \[[`953e663e58`](https://github.com/nodejs/node/commit/953e663e58)] - **esm**: treat `307` and `308` as redirects in HTTPS imports (Kid) [#43689](https://github.com/nodejs/node/pull/43689) +* \[[`33a2902a33`](https://github.com/nodejs/node/commit/33a2902a33)] - **esm**: restore `next`'s `context` as optional arg (Jacob Smith) [#43553](https://github.com/nodejs/node/pull/43553) +* \[[`df3f5cb93e`](https://github.com/nodejs/node/commit/df3f5cb93e)] - **esm**: fix chain advances when loader calls next\ multiple times (Jacob Smith) [#43303](https://github.com/nodejs/node/pull/43303) +* \[[`eac4e20525`](https://github.com/nodejs/node/commit/eac4e20525)] - **esm**: refactor responseURL handling (Guy Bedford) [#43164](https://github.com/nodejs/node/pull/43164) +* \[[`e114ed0cda`](https://github.com/nodejs/node/commit/e114ed0cda)] - **esm**: fix http(s) import via custom loader (Jacob Smith) [#43130](https://github.com/nodejs/node/pull/43130) +* \[[`6564e69c78`](https://github.com/nodejs/node/commit/6564e69c78)] - **esm**: fix imports from non-file module (Antoine du Hamel) [#42881](https://github.com/nodejs/node/pull/42881) +* \[[`e1bc88764d`](https://github.com/nodejs/node/commit/e1bc88764d)] - **esm**: graduate top-level-await to stable (Antoine du Hamel) [#42875](https://github.com/nodejs/node/pull/42875) +* \[[`14a929b0b0`](https://github.com/nodejs/node/commit/14a929b0b0)] - **esm**: emit experimental warnings in common place (Jacob Smith) [#42314](https://github.com/nodejs/node/pull/42314) +* \[[`0167988ce3`](https://github.com/nodejs/node/commit/0167988ce3)] - **events**: improve `Event` compatibility (Daeyeon Jeong) [#43461](https://github.com/nodejs/node/pull/43461) +* \[[`e51c0e9939`](https://github.com/nodejs/node/commit/e51c0e9939)] - **events**: improve `EventListener` validation (Daeyeon Jeong) [#43491](https://github.com/nodejs/node/pull/43491) +* \[[`393c021d7f`](https://github.com/nodejs/node/commit/393c021d7f)] - **events**: fix adding abort listener in `events.once` (Daeyeon Jeong) [#43373](https://github.com/nodejs/node/pull/43373) +* \[[`a7eaf3981d`](https://github.com/nodejs/node/commit/a7eaf3981d)] - **events**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`fcf74c53d8`](https://github.com/nodejs/node/commit/fcf74c53d8)] - **fs**: refactor realpath with Map and Set (LiviaMedeiros) [#43569](https://github.com/nodejs/node/pull/43569) +* \[[`bfb8a0bfac`](https://github.com/nodejs/node/commit/bfb8a0bfac)] - **fs**: don't end fs promises on Isolate termination (Santiago Gimeno) [#42910](https://github.com/nodejs/node/pull/42910) +* \[[`ca4157ea40`](https://github.com/nodejs/node/commit/ca4157ea40)] - **fs**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`835056cbcb`](https://github.com/nodejs/node/commit/835056cbcb)] - **fs**: remove unnecessary ?? operator (Morgan Roderick) [#43073](https://github.com/nodejs/node/pull/43073) +* \[[`8b89c7fbab`](https://github.com/nodejs/node/commit/8b89c7fbab)] - **fs**: export constants from `fs/promises` (Feng Yu) [#43177](https://github.com/nodejs/node/pull/43177) +* \[[`b0d9915bc6`](https://github.com/nodejs/node/commit/b0d9915bc6)] - **fs**: add trailing commas (LiviaMedeiros) [#43127](https://github.com/nodejs/node/pull/43127) +* \[[`637820d1e3`](https://github.com/nodejs/node/commit/637820d1e3)] - **fs**: fix write methods param validation and docs (LiviaMedeiros) [#41677](https://github.com/nodejs/node/pull/41677) +* \[[`5d8b2cb51d`](https://github.com/nodejs/node/commit/5d8b2cb51d)] - **fs**: fix mkdirSync so ENOSPC is correctly reported (Santiago Gimeno) [#42811](https://github.com/nodejs/node/pull/42811) +* \[[`58eebaf717`](https://github.com/nodejs/node/commit/58eebaf717)] - **http**: defer reentrant execution of Parser::Execute (Paolo Insogna) [#43369](https://github.com/nodejs/node/pull/43369) +* \[[`ea3ca874da`](https://github.com/nodejs/node/commit/ea3ca874da)] - **http**: fix http agent keep alive (theanarkh) [#43380](https://github.com/nodejs/node/pull/43380) +* \[[`85d93f0bf6`](https://github.com/nodejs/node/commit/85d93f0bf6)] - **http**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`1bfff396ac`](https://github.com/nodejs/node/commit/1bfff396ac)] - **http**: document that ClientRequest inherits from OutgoingMessage (K.C.Ashish Kumar) [#42642](https://github.com/nodejs/node/pull/42642) +* \[[`db53e9b387`](https://github.com/nodejs/node/commit/db53e9b387)] - **http2**: log debug only when in debug mode (Basit) [#43626](https://github.com/nodejs/node/pull/43626) +* \[[`95083cb0ad`](https://github.com/nodejs/node/commit/95083cb0ad)] - **http2**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`367454205d`](https://github.com/nodejs/node/commit/367454205d)] - **http2**: set origin name correctly when servername is empty (ofirbarak) [#42838](https://github.com/nodejs/node/pull/42838) +* \[[`c73f739acd`](https://github.com/nodejs/node/commit/c73f739acd)] - **http2**: improve tests and docs (Daeyeon Jeong) [#42858](https://github.com/nodejs/node/pull/42858) +* \[[`4fbedffb55`](https://github.com/nodejs/node/commit/4fbedffb55)] - **https**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`5879642260`](https://github.com/nodejs/node/commit/5879642260)] - **inspector**: set sampling interval before start (Shelley Vohr) [#43779](https://github.com/nodejs/node/pull/43779) +* \[[`096f7fc59a`](https://github.com/nodejs/node/commit/096f7fc59a)] - **inspector**: add missing initialization (Michael Dawson) [#43254](https://github.com/nodejs/node/pull/43254) +* \[[`a8c24185f8`](https://github.com/nodejs/node/commit/a8c24185f8)] - **lib**: refactor to avoid unsafe regex primordials (Antoine du Hamel) [#43475](https://github.com/nodejs/node/pull/43475) +* \[[`2a5d5e0726`](https://github.com/nodejs/node/commit/2a5d5e0726)] - **lib**: modify `DOMException` to pass WPT (Khaidi Chu) [#41517](https://github.com/nodejs/node/pull/41517) +* \[[`26d63f004f`](https://github.com/nodejs/node/commit/26d63f004f)] - **lib**: implement safe alternatives to `Promise` static methods (Antoine du Hamel) [#43728](https://github.com/nodejs/node/pull/43728) +* \[[`aab5adbcbe`](https://github.com/nodejs/node/commit/aab5adbcbe)] - **lib**: use null-prototype objects for property descriptors (Antoine du Hamel) [#43473](https://github.com/nodejs/node/pull/43473) +* \[[`a97d0ba3af`](https://github.com/nodejs/node/commit/a97d0ba3af)] - **lib**: fix TODO in `freeze_intrinsics` (Antoine du Hamel) [#43472](https://github.com/nodejs/node/pull/43472) +* \[[`519cdd94c0`](https://github.com/nodejs/node/commit/519cdd94c0)] - **lib**: use `kEmptyObject` in various places (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`7d5e7b43f6`](https://github.com/nodejs/node/commit/7d5e7b43f6)] - **lib**: give names to promisified methods (LiviaMedeiros) [#43218](https://github.com/nodejs/node/pull/43218) +* \[[`cd55e221b5`](https://github.com/nodejs/node/commit/cd55e221b5)] - **lib**: use null-prototype objects for property descriptors (Antoine du Hamel) [#43270](https://github.com/nodejs/node/pull/43270) +* \[[`9e613f7f3d`](https://github.com/nodejs/node/commit/9e613f7f3d)] - **lib**: prepare files for no-var lint rule (Rich Trott) [#42573](https://github.com/nodejs/node/pull/42573) +* \[[`327da6acde`](https://github.com/nodejs/node/commit/327da6acde)] - **lib**: source maps filter null prefix (Fabian Cook) [#42522](https://github.com/nodejs/node/pull/42522) +* \[[`58f80b0dcc`](https://github.com/nodejs/node/commit/58f80b0dcc)] - **lib**: improve the coverage of the validator (mawaregetsuka) [#42443](https://github.com/nodejs/node/pull/42443) +* \[[`e48ccf5934`](https://github.com/nodejs/node/commit/e48ccf5934)] - **lib**: update JSDoc for linting (Rich Trott) [#42489](https://github.com/nodejs/node/pull/42489) +* \[[`abc134cacc`](https://github.com/nodejs/node/commit/abc134cacc)] - **lib,src**: add source map support for global eval (Chengzhong Wu) [#43428](https://github.com/nodejs/node/pull/43428) +* \[[`288d9fbe5a`](https://github.com/nodejs/node/commit/288d9fbe5a)] - **loader**: make `require.resolve` throw for unknown builtin modules (木杉) [#43336](https://github.com/nodejs/node/pull/43336) +* \[[`7c4e1ad1ed`](https://github.com/nodejs/node/commit/7c4e1ad1ed)] - **module**: also enable subpath imports in REPL (Ray) [#43450](https://github.com/nodejs/node/pull/43450) +* \[[`c284eb3745`](https://github.com/nodejs/node/commit/c284eb3745)] - **module**: ensure 'node:'-only modules can access node\_modules (Colin Ihrig) [#42430](https://github.com/nodejs/node/pull/42430) +* \[[`70a4033841`](https://github.com/nodejs/node/commit/70a4033841)] - **module**: cjs-module-lexer WebAssembly fallback (Guy Bedford) [#43612](https://github.com/nodejs/node/pull/43612) +* \[[`abda05a3a7`](https://github.com/nodejs/node/commit/abda05a3a7)] - **module**: prefer async/await in https imports (Benjamin Gruenbaum) [#41950](https://github.com/nodejs/node/pull/41950) +* \[[`f66872e36c`](https://github.com/nodejs/node/commit/f66872e36c)] - **net**: fix socket.\_getpeername (Daeyeon Jeong) [#43010](https://github.com/nodejs/node/pull/43010) +* \[[`b2d02bc2c0`](https://github.com/nodejs/node/commit/b2d02bc2c0)] - **net**: remove redundant connecting assignment (Ouyang Yadong) [#43710](https://github.com/nodejs/node/pull/43710) +* \[[`ff5310a9c7`](https://github.com/nodejs/node/commit/ff5310a9c7)] - **net**: fix net keepalive and noDelay (theanarkh) [#43561](https://github.com/nodejs/node/pull/43561) +* \[[`265810a1e5`](https://github.com/nodejs/node/commit/265810a1e5)] - **net**: prevent /32 ipv4 mask from matching all ips (supriyo-biswas) [#43381](https://github.com/nodejs/node/pull/43381) +* \[[`e4a5bd1cf8`](https://github.com/nodejs/node/commit/e4a5bd1cf8)] - **net**: fix net.Server keepalive and noDelay (theanarkh) [#43497](https://github.com/nodejs/node/pull/43497) +* \[[`d766cfaca9`](https://github.com/nodejs/node/commit/d766cfaca9)] - **net,dns**: move hasObserver out of perf function (theanarkh) [#43217](https://github.com/nodejs/node/pull/43217) +* \[[`b240868960`](https://github.com/nodejs/node/commit/b240868960)] - **net,dns**: trace tcp connection and dns by perf\_hooks (theanarkh) [#42390](https://github.com/nodejs/node/pull/42390) +* \[[`112bce394d`](https://github.com/nodejs/node/commit/112bce394d)] - **node-api**: explicitly set \_\_cdecl for API functions (Vladimir Morozov) [#42780](https://github.com/nodejs/node/pull/42780) +* \[[`49103e3240`](https://github.com/nodejs/node/commit/49103e3240)] - **node-api**: fix napi\_get\_all\_property\_names (Vladimir Morozov) [#42463](https://github.com/nodejs/node/pull/42463) +* \[[`5a1e1b3f33`](https://github.com/nodejs/node/commit/5a1e1b3f33)] - **node-api**: format Node-API related code (Vladimir Morozov) [#42396](https://github.com/nodejs/node/pull/42396) +* \[[`31ee218eff`](https://github.com/nodejs/node/commit/31ee218eff)] - **node-api,src**: fix module registration in MSVC C++ (Vladimir Morozov) [#42459](https://github.com/nodejs/node/pull/42459) +* \[[`e7899ba1f7`](https://github.com/nodejs/node/commit/e7899ba1f7)] - **os**: avoid unnecessary usage of var (Mohammed Keyvanzadeh) [#42563](https://github.com/nodejs/node/pull/42563) +* \[[`463f9a6c4f`](https://github.com/nodejs/node/commit/463f9a6c4f)] - **perf\_hooks**: add initiatorType getter (Rafael Gonzaga) [#43593](https://github.com/nodejs/node/pull/43593) +* \[[`096a2d9434`](https://github.com/nodejs/node/commit/096a2d9434)] - **perf\_hooks**: fix miscounted gc performance entry starttime (#43066) (Xuguang Mei) [#43066](https://github.com/nodejs/node/pull/43066) +* \[[`f08a282098`](https://github.com/nodejs/node/commit/f08a282098)] - **perf\_hooks**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`8b0ae63316`](https://github.com/nodejs/node/commit/8b0ae63316)] - **perf\_hooks**: fix start\_time of perf\_hooks (theanarkh) [#43069](https://github.com/nodejs/node/pull/43069) +* \[[`7a5972fe9e`](https://github.com/nodejs/node/commit/7a5972fe9e)] - **perf\_hooks**: fix function wrapped by `timerify` to work correctly (Kohei Ueno) [#43330](https://github.com/nodejs/node/pull/43330) +* \[[`5ab3da3f26`](https://github.com/nodejs/node/commit/5ab3da3f26)] - **perf\_hooks**: return different functions in timerify (Himself65) [#42854](https://github.com/nodejs/node/pull/42854) +* \[[`15da462cea`](https://github.com/nodejs/node/commit/15da462cea)] - **process**: use `defineProperty` instead of assignment (Mark S. Miller) [#43907](https://github.com/nodejs/node/pull/43907) +* \[[`67e91aa20f`](https://github.com/nodejs/node/commit/67e91aa20f)] - **readline**: fix to not access a property on an undefined value (Kohei Ueno) [#43543](https://github.com/nodejs/node/pull/43543) +* \[[`37066f0319`](https://github.com/nodejs/node/commit/37066f0319)] - **readline**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`d260569b85`](https://github.com/nodejs/node/commit/d260569b85)] - **repl**: fix overzealous top-level await (Tobias Nießen) [#43827](https://github.com/nodejs/node/pull/43827) +* \[[`0bd4a04c42`](https://github.com/nodejs/node/commit/0bd4a04c42)] - **repl**: use `SafePromiseAll` and `SafePromiseRace` (Antoine du Hamel) [#43758](https://github.com/nodejs/node/pull/43758) +* \[[`bef9a36024`](https://github.com/nodejs/node/commit/bef9a36024)] - **repl**: make autocomplete case-insensitive (Sergey Petushkov) [#41632](https://github.com/nodejs/node/pull/41632) +* \[[`0dc96e4474`](https://github.com/nodejs/node/commit/0dc96e4474)] - **src**: pass only Isolate\* and env\_vars to EnabledDebugList::Parse() (Darshan Sen) [#43668](https://github.com/nodejs/node/pull/43668) +* \[[`be3343aed3`](https://github.com/nodejs/node/commit/be3343aed3)] - **src**: use named struct instead of typedef (Tobias Nießen) [#43881](https://github.com/nodejs/node/pull/43881) +* \[[`eaa611c53a`](https://github.com/nodejs/node/commit/eaa611c53a)] - **src**: use named enum instead of typedef (Tobias Nießen) [#43880](https://github.com/nodejs/node/pull/43880) +* \[[`3a32f0ecb2`](https://github.com/nodejs/node/commit/3a32f0ecb2)] - **src**: fix node watchdog race condition (theanarkh) [#43780](https://github.com/nodejs/node/pull/43780) +* \[[`67ecd274b7`](https://github.com/nodejs/node/commit/67ecd274b7)] - **src**: fix `napi_check_object_type_tag()` (Daeyeon Jeong) [#43788](https://github.com/nodejs/node/pull/43788) +* \[[`364b67cf7e`](https://github.com/nodejs/node/commit/364b67cf7e)] - **src**: slim down env-inl.h (Ben Noordhuis) [#43745](https://github.com/nodejs/node/pull/43745) +* \[[`ccac1fc2e7`](https://github.com/nodejs/node/commit/ccac1fc2e7)] - **src**: improve and update ByteSource description (Tobias Nießen) [#43478](https://github.com/nodejs/node/pull/43478) +* \[[`a1f1ff197e`](https://github.com/nodejs/node/commit/a1f1ff197e)] - **src**: merge RunInThisContext() with RunInContext() (Daeyeon Jeong) [#43225](https://github.com/nodejs/node/pull/43225) +* \[[`3e21ae8733`](https://github.com/nodejs/node/commit/3e21ae8733)] - **src**: fix crash on FSReqPromise destructor (Santiago Gimeno) [#43533](https://github.com/nodejs/node/pull/43533) +* \[[`b9649a4959`](https://github.com/nodejs/node/commit/b9649a4959)] - **src**: delegate NodeArrayBufferAllocator to v8's allocator (Jeremy Rose) [#43594](https://github.com/nodejs/node/pull/43594) +* \[[`26e4dc83a8`](https://github.com/nodejs/node/commit/26e4dc83a8)] - **src**: remove a stale comment in `async_hooks` (Daeyeon Jeong) [#43317](https://github.com/nodejs/node/pull/43317) +* \[[`733739dd3f`](https://github.com/nodejs/node/commit/733739dd3f)] - **src**: remove CopyBuffer (Tobias Nießen) [#43463](https://github.com/nodejs/node/pull/43463) +* \[[`bf553fd26a`](https://github.com/nodejs/node/commit/bf553fd26a)] - **src**: register StreamBase while registering LibuvStreamWrap (Darshan Sen) [#43321](https://github.com/nodejs/node/pull/43321) +* \[[`f18867b2c0`](https://github.com/nodejs/node/commit/f18867b2c0)] - **src**: fix static analysis warning and use smart ptr (Tobias Nießen) [#43117](https://github.com/nodejs/node/pull/43117) +* \[[`094d5fc31a`](https://github.com/nodejs/node/commit/094d5fc31a)] - **src**: fix json utils escapes for U+000B (Chengzhong Wu) [#43206](https://github.com/nodejs/node/pull/43206) +* \[[`c82d992b77`](https://github.com/nodejs/node/commit/c82d992b77)] - **src**: convey potential exceptions during StreamPipe construction (Darshan Sen) [#43240](https://github.com/nodejs/node/pull/43240) +* \[[`07b7f8375e`](https://github.com/nodejs/node/commit/07b7f8375e)] - **src**: make SecureContext fields private (Tobias Nießen) [#43173](https://github.com/nodejs/node/pull/43173) +* \[[`eb2c504542`](https://github.com/nodejs/node/commit/eb2c504542)] - **src**: reuse GetServerName (Tobias Nießen) [#43168](https://github.com/nodejs/node/pull/43168) +* \[[`7bdd31929c`](https://github.com/nodejs/node/commit/7bdd31929c)] - **src**: remove SecureContext::operator\* (Tobias Nießen) [#43121](https://github.com/nodejs/node/pull/43121) +* \[[`438c4723f6`](https://github.com/nodejs/node/commit/438c4723f6)] - **src**: replace TraceEventScope with sync events (Chengzhong Wu) [#42977](https://github.com/nodejs/node/pull/42977) +* \[[`32446d8c8a`](https://github.com/nodejs/node/commit/32446d8c8a)] - **src**: delete AllocatedBuffer (Darshan Sen) [#43008](https://github.com/nodejs/node/pull/43008) +* \[[`4cfcb6f883`](https://github.com/nodejs/node/commit/4cfcb6f883)] - **src**: remove unnecessary comment (Kohei Ueno) [#42952](https://github.com/nodejs/node/pull/42952) +* \[[`6adbb062e6`](https://github.com/nodejs/node/commit/6adbb062e6)] - **src**: fix memory leak for v8.serialize (liuxingbaoyu) [#42695](https://github.com/nodejs/node/pull/42695) +* \[[`e769a0f19b`](https://github.com/nodejs/node/commit/e769a0f19b)] - **src**: use `node:` prefix in example (Antoine du Hamel) [#42794](https://github.com/nodejs/node/pull/42794) +* \[[`b19018468c`](https://github.com/nodejs/node/commit/b19018468c)] - **src**: large page attributing an id on Linux (David CARLIER) [#42644](https://github.com/nodejs/node/pull/42644) +* \[[`a26fd031bf`](https://github.com/nodejs/node/commit/a26fd031bf)] - **src**: fix coverity report (Michael Dawson) [#42663](https://github.com/nodejs/node/pull/42663) +* \[[`8687ba8732`](https://github.com/nodejs/node/commit/8687ba8732)] - **src**: fix alphabetically sorted binding list (Tobias Nießen) [#42687](https://github.com/nodejs/node/pull/42687) +* \[[`4e1378b2d6`](https://github.com/nodejs/node/commit/4e1378b2d6)] - **src**: fix typo in InspectorIoDelegate constructor (Kohei Ueno) [#42520](https://github.com/nodejs/node/pull/42520) +* \[[`1dc912ebdc`](https://github.com/nodejs/node/commit/1dc912ebdc)] - **src**: remove unnecessary static qualifier in crypto\_dh.cc (Darshan Sen) [#42492](https://github.com/nodejs/node/pull/42492) +* \[[`a280f88266`](https://github.com/nodejs/node/commit/a280f88266)] - **src**: address 3 useless call coverity warnings (Michael Dawson) [#42426](https://github.com/nodejs/node/pull/42426) +* \[[`5195ea3cd2`](https://github.com/nodejs/node/commit/5195ea3cd2)] - **src**: properly report exceptions from AddressToJS() (Darshan Sen) [#42054](https://github.com/nodejs/node/pull/42054) +* \[[`a8553151ee`](https://github.com/nodejs/node/commit/a8553151ee)] - **src**: suppress false coverity warning (Michael Dawson) [#42284](https://github.com/nodejs/node/pull/42284) +* \[[`1e8611f048`](https://github.com/nodejs/node/commit/1e8611f048)] - **src**: refactor IsSupportedAuthenticatedMode (Tobias Nießen) [#42368](https://github.com/nodejs/node/pull/42368) +* \[[`7778ebecaa`](https://github.com/nodejs/node/commit/7778ebecaa)] - **src**: turn SSL\_CTX\_new CHECK/segfault into JS exception (Anna Henningsen) [#42799](https://github.com/nodejs/node/pull/42799) +* \[[`4ffc08861a`](https://github.com/nodejs/node/commit/4ffc08861a)] - **src**: add proper mutexes for accessing FIPS state (Anna Henningsen) [#42278](https://github.com/nodejs/node/pull/42278) +* \[[`6353a4dc8a`](https://github.com/nodejs/node/commit/6353a4dc8a)] - **src,bootstrap**: remove NodeMainInstance::registry\_ (Darshan Sen) [#43392](https://github.com/nodejs/node/pull/43392) +* \[[`1a98f166bf`](https://github.com/nodejs/node/commit/1a98f166bf)] - **src,crypto**: remove uses of AllocatedBuffer from crypto\_rsa.cc (Darshan Sen) [#42852](https://github.com/nodejs/node/pull/42852) +* \[[`c336ffc059`](https://github.com/nodejs/node/commit/c336ffc059)] - **src,crypto**: remove uses of AllocatedBuffer from crypto\_ec.cc (Darshan Sen) [#42766](https://github.com/nodejs/node/pull/42766) +* \[[`1669b94cd6`](https://github.com/nodejs/node/commit/1669b94cd6)] - **src,crypto**: remove uses of AllocatedBuffer from crypto\_tls.cc (Darshan Sen) [#42589](https://github.com/nodejs/node/pull/42589) +* \[[`6d98a51970`](https://github.com/nodejs/node/commit/6d98a51970)] - **src,crypto**: handle empty maybe correctly in crypto\_dh.cc (Darshan Sen) [#42492](https://github.com/nodejs/node/pull/42492) +* \[[`5a2e277f93`](https://github.com/nodejs/node/commit/5a2e277f93)] - **src,crypto**: remove uses of AllocatedBuffer from crypto\_dh.cc (Darshan Sen) [#42492](https://github.com/nodejs/node/pull/42492) +* \[[`4a6649cb28`](https://github.com/nodejs/node/commit/4a6649cb28)] - **src,stream**: change return type to `Maybe` (Daeyeon Jeong) [#43575](https://github.com/nodejs/node/pull/43575) +* \[[`99a3b19974`](https://github.com/nodejs/node/commit/99a3b19974)] - **stream**: fix 0 transform hwm backpressure (Robert Nagy) [#43685](https://github.com/nodejs/node/pull/43685) +* \[[`c4dc8b6297`](https://github.com/nodejs/node/commit/c4dc8b6297)] - **stream**: add more filter tests (Benjamin Gruenbaum) [#41936](https://github.com/nodejs/node/pull/41936) +* \[[`4b17a94b67`](https://github.com/nodejs/node/commit/4b17a94b67)] - **stream**: port more test262 tests (Benjamin Gruenbaum) [#41974](https://github.com/nodejs/node/pull/41974) +* \[[`3bc12c69a4`](https://github.com/nodejs/node/commit/3bc12c69a4)] - **stream**: avoid usage of deprecated APIs (Mohammed Keyvanzadeh) [#41871](https://github.com/nodejs/node/pull/41871) +* \[[`4ad5a28b54`](https://github.com/nodejs/node/commit/4ad5a28b54)] - **stream**: refactor to use more validators (Mohammed Keyvanzadeh) [#41871](https://github.com/nodejs/node/pull/41871) +* \[[`545b2cd4c2`](https://github.com/nodejs/node/commit/545b2cd4c2)] - **stream**: use standard for loop instead of for..of (Mohammed Keyvanzadeh) [#41871](https://github.com/nodejs/node/pull/41871) +* \[[`3ef9f8da30`](https://github.com/nodejs/node/commit/3ef9f8da30)] - **stream**: initial port of test262 tests (Benjamin Gruenbaum) [#41775](https://github.com/nodejs/node/pull/41775) +* \[[`f793ed550a`](https://github.com/nodejs/node/commit/f793ed550a)] - **stream**: use synchronous error validation & validate abort signal option (iMoses) [#41777](https://github.com/nodejs/node/pull/41777) +* \[[`31cee4f914`](https://github.com/nodejs/node/commit/31cee4f914)] - **stream**: never flatten on toArray (Benjamin Gruenbaum) [#41615](https://github.com/nodejs/node/pull/41615) +* \[[`d63c4c68a0`](https://github.com/nodejs/node/commit/d63c4c68a0)] - **stream**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`6f9c62206b`](https://github.com/nodejs/node/commit/6f9c62206b)] - **test\_runner**: add support for boolean values for `concurrency` option (Lenvin Gonsalves) [#43887](https://github.com/nodejs/node/pull/43887) +* \[[`e33f6bd384`](https://github.com/nodejs/node/commit/e33f6bd384)] - **test\_runner**: validate `timeout` option (Antoine du Hamel) [#43843](https://github.com/nodejs/node/pull/43843) +* \[[`a167daa311`](https://github.com/nodejs/node/commit/a167daa311)] - **test\_runner**: pass signal on timeout (Moshe Atlow) [#43911](https://github.com/nodejs/node/pull/43911) +* \[[`b1db85023e`](https://github.com/nodejs/node/commit/b1db85023e)] - **test\_runner**: do not report an error when tests are passing (Antoine du Hamel) [#43919](https://github.com/nodejs/node/pull/43919) +* \[[`f193ac6cd5`](https://github.com/nodejs/node/commit/f193ac6cd5)] - **test\_runner**: recieve and pass AbortSignal (Moshe Atlow) [#43554](https://github.com/nodejs/node/pull/43554) +* \[[`f8f1d16097`](https://github.com/nodejs/node/commit/f8f1d16097)] - **test\_runner**: fix `it` concurrency (Moshe Atlow) [#43757](https://github.com/nodejs/node/pull/43757) +* \[[`e9ca1efe67`](https://github.com/nodejs/node/commit/e9ca1efe67)] - **test\_runner**: support timeout for tests (Moshe Atlow) [#43505](https://github.com/nodejs/node/pull/43505) +* \[[`5dca44d5eb`](https://github.com/nodejs/node/commit/5dca44d5eb)] - **test\_runner**: catch errors thrown within `describe` (Moshe Atlow) [#43729](https://github.com/nodejs/node/pull/43729) +* \[[`0bdc141dd0`](https://github.com/nodejs/node/commit/0bdc141dd0)] - **test\_runner**: protect internals against prototype tampering (Antoine du Hamel) [#43578](https://github.com/nodejs/node/pull/43578) +* \[[`4d4dcade90`](https://github.com/nodejs/node/commit/4d4dcade90)] - **test\_runner**: cancel on termination (Moshe Atlow) [#43549](https://github.com/nodejs/node/pull/43549) +* \[[`dccbd9ee95`](https://github.com/nodejs/node/commit/dccbd9ee95)] - **test\_runner**: wait for stderr and stdout to complete (Moshe Atlow) [#43666](https://github.com/nodejs/node/pull/43666) +* \[[`27841bee3d`](https://github.com/nodejs/node/commit/27841bee3d)] - **test\_runner**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`1a4235961e`](https://github.com/nodejs/node/commit/1a4235961e)] - **test\_runner**: add Subtest to tap protocol output (Moshe Atlow) [#43417](https://github.com/nodejs/node/pull/43417) +* \[[`3fbc5e441c`](https://github.com/nodejs/node/commit/3fbc5e441c)] - **timers**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`444d77391c`](https://github.com/nodejs/node/commit/444d77391c)] - **tls**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`ba3cf5d59e`](https://github.com/nodejs/node/commit/ba3cf5d59e)] - **tls**: fix performance regression in `convertALPNProtocols()` (LiviaMedeiros) [#43250](https://github.com/nodejs/node/pull/43250) +* \[[`4a3a8a6164`](https://github.com/nodejs/node/commit/4a3a8a6164)] - **tls**: fix convertALPNProtocols accepting ArrayBufferViews (LiviaMedeiros) [#43211](https://github.com/nodejs/node/pull/43211) +* \[[`a6710f50c4`](https://github.com/nodejs/node/commit/a6710f50c4)] - **trace\_events**: trace net connect event (theanarkh) [#43903](https://github.com/nodejs/node/pull/43903) +* \[[`8cda4156a5`](https://github.com/nodejs/node/commit/8cda4156a5)] - **url**: update WHATWG URL parser to align with latest spec (Feng Yu) [#43190](https://github.com/nodejs/node/pull/43190) +* \[[`69f9a3a78e`](https://github.com/nodejs/node/commit/69f9a3a78e)] - **url,lib**: pass urlsearchparams-constructor.any.js (Khaidi Chu) [#41197](https://github.com/nodejs/node/pull/41197) +* \[[`24cabbf32f`](https://github.com/nodejs/node/commit/24cabbf32f)] - **util**: remove unicode support todo for perf implications (Rhys) [#43762](https://github.com/nodejs/node/pull/43762) +* \[[`0f9d5ac0b0`](https://github.com/nodejs/node/commit/0f9d5ac0b0)] - **util**: refactor to use validateObject (Kohei Ueno) [#43769](https://github.com/nodejs/node/pull/43769) +* \[[`5edfccfc4c`](https://github.com/nodejs/node/commit/5edfccfc4c)] - **util**: add `AggregateError.prototype.errors` to inspect output (LiviaMedeiros) [#43646](https://github.com/nodejs/node/pull/43646) +* \[[`fa89a617bc`](https://github.com/nodejs/node/commit/fa89a617bc)] - **util**: remove unnecessary template string (Ruben Bridgewater) [#41082](https://github.com/nodejs/node/pull/41082) +* \[[`fa74d45e09`](https://github.com/nodejs/node/commit/fa74d45e09)] - **util**: mark cwd grey while inspecting errors (Ruben Bridgewater) [#41082](https://github.com/nodejs/node/pull/41082) +* \[[`053368c3d0`](https://github.com/nodejs/node/commit/053368c3d0)] - **util**: avoid inline access to Symbol.iterator (Kohei Ueno) [#43683](https://github.com/nodejs/node/pull/43683) +* \[[`3959dffc7d`](https://github.com/nodejs/node/commit/3959dffc7d)] - **util**: fix TypeError of symbol in template literals (cola119) [#42790](https://github.com/nodejs/node/pull/42790) +* \[[`053347ca55`](https://github.com/nodejs/node/commit/053347ca55)] - **util**: freeze `kEnumerableProperty` (LiviaMedeiros) [#43390](https://github.com/nodejs/node/pull/43390) +* \[[`2cdae4332d`](https://github.com/nodejs/node/commit/2cdae4332d)] - **util**: add `kEmptyObject` to internal/util (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`49cbed6ced`](https://github.com/nodejs/node/commit/49cbed6ced)] - **v8**: serialize BigInt64Array and BigUint64Array (Ben Noordhuis) [#43571](https://github.com/nodejs/node/pull/43571) +* \[[`ca8da5f3f8`](https://github.com/nodejs/node/commit/ca8da5f3f8)] - **vm**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`3ccf5acd23`](https://github.com/nodejs/node/commit/3ccf5acd23)] - **wasi**: use WasmMemoryObject handle for perf (#43544) (snek) [#43544](https://github.com/nodejs/node/pull/43544) +* \[[`4ff19daf54`](https://github.com/nodejs/node/commit/4ff19daf54)] - **wasi**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`bbbc54f8d4`](https://github.com/nodejs/node/commit/bbbc54f8d4)] - **wasi**: remove unecessary null check (Michael Dawson) [#42819](https://github.com/nodejs/node/pull/42819) +* \[[`51633a23c7`](https://github.com/nodejs/node/commit/51633a23c7)] - **worker**: use `kEmptyObject` (LiviaMedeiros) [#43159](https://github.com/nodejs/node/pull/43159) +* \[[`c4caf20ec3`](https://github.com/nodejs/node/commit/c4caf20ec3)] - **worker**: fix heap snapshot crash on exit (Chengzhong Wu) [#43123](https://github.com/nodejs/node/pull/43123) +* \[[`c583508324`](https://github.com/nodejs/node/commit/c583508324)] - **worker**: fix stream racing with terminate (Keyhan Vakil) [#42874](https://github.com/nodejs/node/pull/42874) +* \[[`293bab7684`](https://github.com/nodejs/node/commit/293bab7684)] - **worker**: add hasRef() to the handle object (Darshan Sen) [#42756](https://github.com/nodejs/node/pull/42756) + +#### Documentation commits + +* \[[`1bd581678c`](https://github.com/nodejs/node/commit/1bd581678c)] - **doc**: update email and mailmap for BethGriggs (Beth Griggs) [#43985](https://github.com/nodejs/node/pull/43985) +* \[[`c37f90415b`](https://github.com/nodejs/node/commit/c37f90415b)] - **doc**: inspector.close undefined in worker threads (Keyhan Vakil) [#43867](https://github.com/nodejs/node/pull/43867) +* \[[`bd0e463d27`](https://github.com/nodejs/node/commit/bd0e463d27)] - **doc**: improve documentation for safe `Promise` statics alternatives (Antoine du Hamel) [#43759](https://github.com/nodejs/node/pull/43759) +* \[[`3022958abd`](https://github.com/nodejs/node/commit/3022958abd)] - **doc**: recommend git-node-v8 (Keyhan Vakil) [#43934](https://github.com/nodejs/node/pull/43934) +* \[[`d528c55c13`](https://github.com/nodejs/node/commit/d528c55c13)] - **doc**: clarify subprocess.stdout/in/err property (Kohei Ueno) [#43910](https://github.com/nodejs/node/pull/43910) +* \[[`067d69f051`](https://github.com/nodejs/node/commit/067d69f051)] - **doc**: fix typo in `src/crypto/README.md` (Jianru Lin) [#43968](https://github.com/nodejs/node/pull/43968) +* \[[`3c85e0c88b`](https://github.com/nodejs/node/commit/3c85e0c88b)] - **doc**: remind backporter about v8\_embedder\_string (Keyhan Vakil) [#43924](https://github.com/nodejs/node/pull/43924) +* \[[`86fb313fe8`](https://github.com/nodejs/node/commit/86fb313fe8)] - **doc**: fix typo in http.md (Airing) [#43933](https://github.com/nodejs/node/pull/43933) +* \[[`37cf3b9551`](https://github.com/nodejs/node/commit/37cf3b9551)] - **doc**: add F3n67u to collaborators (Feng Yu) [#43953](https://github.com/nodejs/node/pull/43953) +* \[[`da6041c89f`](https://github.com/nodejs/node/commit/da6041c89f)] - **doc**: mention Win 32-bit openssl build issue (RafaelGSS) [#43853](https://github.com/nodejs/node/pull/43853) +* \[[`c6e2eaec2b`](https://github.com/nodejs/node/commit/c6e2eaec2b)] - **doc**: add security release specifics to releases.md (Beth Griggs) [#43835](https://github.com/nodejs/node/pull/43835) +* \[[`7a44613819`](https://github.com/nodejs/node/commit/7a44613819)] - **doc**: add history info for `global.performance` (Antoine du Hamel) [#43841](https://github.com/nodejs/node/pull/43841) +* \[[`1685332371`](https://github.com/nodejs/node/commit/1685332371)] - **doc**: add platform-windows-arm to who to CC (Michael Dawson) [#43808](https://github.com/nodejs/node/pull/43808) +* \[[`fcfb2c95c1`](https://github.com/nodejs/node/commit/fcfb2c95c1)] - **doc**: document ES2022's Error "cause" property (James Ide) [#43830](https://github.com/nodejs/node/pull/43830) +* \[[`a0d055e945`](https://github.com/nodejs/node/commit/a0d055e945)] - **doc**: add link to diagnostic tools (Rafael Gonzaga) [#43736](https://github.com/nodejs/node/pull/43736) +* \[[`8c4cf710a5`](https://github.com/nodejs/node/commit/8c4cf710a5)] - **doc**: update links to MDN page about dynamic imports (Jannis R) [#43847](https://github.com/nodejs/node/pull/43847) +* \[[`302a134b83`](https://github.com/nodejs/node/commit/302a134b83)] - **doc**: deprecate coercion to integer in process.exit (Daeyeon Jeong) [#43738](https://github.com/nodejs/node/pull/43738) +* \[[`2a410975c6`](https://github.com/nodejs/node/commit/2a410975c6)] - **doc**: add MoLow to triagers (Moshe Atlow) [#43799](https://github.com/nodejs/node/pull/43799) +* \[[`44291afca4`](https://github.com/nodejs/node/commit/44291afca4)] - **doc**: revert anachronistic 'node:' module require()s in API history notes (DeeDeeG) [#43768](https://github.com/nodejs/node/pull/43768) +* \[[`97bda1fa57`](https://github.com/nodejs/node/commit/97bda1fa57)] - **doc**: clarify release process for new releasers (Rafael Gonzaga) [#43739](https://github.com/nodejs/node/pull/43739) +* \[[`f7b8340efe`](https://github.com/nodejs/node/commit/f7b8340efe)] - **doc**: fix typo in ngtcp2 readme (Dan Castillo) [#43767](https://github.com/nodejs/node/pull/43767) +* \[[`c6bdb5cb22`](https://github.com/nodejs/node/commit/c6bdb5cb22)] - **doc**: fix typo in errors.md (Kazuma Ohashi) [#43677](https://github.com/nodejs/node/pull/43677) +* \[[`20fa30c871`](https://github.com/nodejs/node/commit/20fa30c871)] - **doc**: add new useful V8 option (JialuZhang-intel) [#42575](https://github.com/nodejs/node/pull/42575) +* \[[`2b498fe7f5`](https://github.com/nodejs/node/commit/2b498fe7f5)] - **doc**: fix typo in util.parseArgs usage example (Michael Ficarra) [#43332](https://github.com/nodejs/node/pull/43332) +* \[[`3244217e9a`](https://github.com/nodejs/node/commit/3244217e9a)] - **doc**: improve test runner timeout docs (Tobias Nießen) [#43836](https://github.com/nodejs/node/pull/43836) +* \[[`65699a2132`](https://github.com/nodejs/node/commit/65699a2132)] - **doc**: add code examples to node test runner (Wassim Chegham) [#43359](https://github.com/nodejs/node/pull/43359) +* \[[`c7c769fe67`](https://github.com/nodejs/node/commit/c7c769fe67)] - **doc**: include last security release date (Rafael Gonzaga) [#43774](https://github.com/nodejs/node/pull/43774) +* \[[`3cda9686bd`](https://github.com/nodejs/node/commit/3cda9686bd)] - **doc**: remove node-report from support tiers (RafaelGSS) [#43737](https://github.com/nodejs/node/pull/43737) +* \[[`ae70ada8cb`](https://github.com/nodejs/node/commit/ae70ada8cb)] - **doc**: update changelog-maker to the new flags (RafaelGSS) [#43696](https://github.com/nodejs/node/pull/43696) +* \[[`f42d674225`](https://github.com/nodejs/node/commit/f42d674225)] - **doc**: remove extra 'in's (Colin Ihrig) [#43705](https://github.com/nodejs/node/pull/43705) +* \[[`cfb236e6ba`](https://github.com/nodejs/node/commit/cfb236e6ba)] - **doc**: add Geoffrey Booth to TSC (Rich Trott) [#43706](https://github.com/nodejs/node/pull/43706) +* \[[`c941798e88`](https://github.com/nodejs/node/commit/c941798e88)] - **doc**: improve readability of `dns.md` (0xSanyam) [#43694](https://github.com/nodejs/node/pull/43694) +* \[[`a8980b2468`](https://github.com/nodejs/node/commit/a8980b2468)] - **doc**: add note regarding special case of 0 stat.size (Douglas Wilson) [#43690](https://github.com/nodejs/node/pull/43690) +* \[[`26cd4e2ae6`](https://github.com/nodejs/node/commit/26cd4e2ae6)] - **doc**: fix default of duplex.allowHalfOpen (Vincent Weevers) [#43665](https://github.com/nodejs/node/pull/43665) +* \[[`a8d1670ffa`](https://github.com/nodejs/node/commit/a8d1670ffa)] - **doc**: improve description of --input-type (cola119) [#43507](https://github.com/nodejs/node/pull/43507) +* \[[`50a1b26605`](https://github.com/nodejs/node/commit/50a1b26605)] - **doc**: add daeyeon to triagers (Daeyeon Jeong) [#43637](https://github.com/nodejs/node/pull/43637) +* \[[`ee10320c9e`](https://github.com/nodejs/node/commit/ee10320c9e)] - **doc**: remove appmetrics from tierlist (Tony Gorez) [#43608](https://github.com/nodejs/node/pull/43608) +* \[[`352628244b`](https://github.com/nodejs/node/commit/352628244b)] - **doc**: remove systemtap from tierlist (Tony Gorez) [#43605](https://github.com/nodejs/node/pull/43605) +* \[[`407beb2bc6`](https://github.com/nodejs/node/commit/407beb2bc6)] - **doc**: add single executable application initiative (Michael Dawson) [#43611](https://github.com/nodejs/node/pull/43611) +* \[[`e5a7b0ff7c`](https://github.com/nodejs/node/commit/e5a7b0ff7c)] - **doc**: remove windows xperf from tierlist (Tony Gorez) [#43607](https://github.com/nodejs/node/pull/43607) +* \[[`d514ee763f`](https://github.com/nodejs/node/commit/d514ee763f)] - **doc**: remove lttng from tierlist (Tony Gorez) [#43604](https://github.com/nodejs/node/pull/43604) +* \[[`8f475e6d00`](https://github.com/nodejs/node/commit/8f475e6d00)] - **doc**: remove dtrace from tierlist (Tony Gorez) [#43606](https://github.com/nodejs/node/pull/43606) +* \[[`31f45288f5`](https://github.com/nodejs/node/commit/31f45288f5)] - **doc**: promote 0x to tier 4 (Tony Gorez) [#43609](https://github.com/nodejs/node/pull/43609) +* \[[`78bedcd158`](https://github.com/nodejs/node/commit/78bedcd158)] - **doc**: include CVSS mention (Rafael Gonzaga) [#43602](https://github.com/nodejs/node/pull/43602) +* \[[`c1ea44db51`](https://github.com/nodejs/node/commit/c1ea44db51)] - **doc**: fix icu-small example (Michael Dawson) [#43591](https://github.com/nodejs/node/pull/43591) +* \[[`a649d0175d`](https://github.com/nodejs/node/commit/a649d0175d)] - **doc**: add `backport-open-vN.x` step to backporting guide (LiviaMedeiros) [#43590](https://github.com/nodejs/node/pull/43590) +* \[[`267e493448`](https://github.com/nodejs/node/commit/267e493448)] - **doc**: move MylesBorins to TSC Emeritus (Myles Borins) [#43524](https://github.com/nodejs/node/pull/43524) +* \[[`444c1a6dcd`](https://github.com/nodejs/node/commit/444c1a6dcd)] - **doc**: add Juan as a security steward (Michael Dawson) [#43512](https://github.com/nodejs/node/pull/43512) +* \[[`1da1722be8`](https://github.com/nodejs/node/commit/1da1722be8)] - **doc**: update link to MDN page about dynamic imports (James Scott-Brown) [#43530](https://github.com/nodejs/node/pull/43530) +* \[[`70ab660107`](https://github.com/nodejs/node/commit/70ab660107)] - **doc**: fix Visual Studio 2019 download link (Feng Yu) [#43236](https://github.com/nodejs/node/pull/43236) +* \[[`23ec1a8727`](https://github.com/nodejs/node/commit/23ec1a8727)] - **doc**: update link of `ICU data slicer` (Feng Yu) [#43483](https://github.com/nodejs/node/pull/43483) +* \[[`cda04013a0`](https://github.com/nodejs/node/commit/cda04013a0)] - **doc**: update v8 doc link to v8.dev (Feng Yu) [#43482](https://github.com/nodejs/node/pull/43482) +* \[[`982e99eb6c`](https://github.com/nodejs/node/commit/982e99eb6c)] - **doc**: add ESM version examples to events api doc (Feng Yu) [#43226](https://github.com/nodejs/node/pull/43226) +* \[[`3d271f16b4`](https://github.com/nodejs/node/commit/3d271f16b4)] - **doc**: update default branch name in `test/**` (Luigi Pinca) [#43445](https://github.com/nodejs/node/pull/43445) +* \[[`18789d5b4a`](https://github.com/nodejs/node/commit/18789d5b4a)] - **doc**: remove branch name mention in `src/README.md` (Feng Yu) [#43442](https://github.com/nodejs/node/pull/43442) +* \[[`f2dfe9b708`](https://github.com/nodejs/node/commit/f2dfe9b708)] - **doc**: update default branch name in `Makefile` (Feng Yu) [#43441](https://github.com/nodejs/node/pull/43441) +* \[[`8d0bca586f`](https://github.com/nodejs/node/commit/8d0bca586f)] - **doc**: update main branch name in release guide (Richard Lau) [#43437](https://github.com/nodejs/node/pull/43437) +* \[[`1945e9ba4a`](https://github.com/nodejs/node/commit/1945e9ba4a)] - **doc**: update main branch name in onboarding.md (Feng Yu) [#43443](https://github.com/nodejs/node/pull/43443) +* \[[`98b27e7f4d`](https://github.com/nodejs/node/commit/98b27e7f4d)] - **doc**: fixup after rename of primary nodejs branch (Michael Dawson) [#43453](https://github.com/nodejs/node/pull/43453) +* \[[`d5832e29b6`](https://github.com/nodejs/node/commit/d5832e29b6)] - **doc**: update main branch name in doc/contributing/\* (Luigi Pinca) [#43438](https://github.com/nodejs/node/pull/43438) +* \[[`3f1ec10a66`](https://github.com/nodejs/node/commit/3f1ec10a66)] - **doc**: packages documentation updates for 12 EOL (Guy Bedford) [#43375](https://github.com/nodejs/node/pull/43375) +* \[[`82dc48d36c`](https://github.com/nodejs/node/commit/82dc48d36c)] - **doc**: fix specifier example in `esm.md` (hiroki osame) [#43351](https://github.com/nodejs/node/pull/43351) +* \[[`143186145c`](https://github.com/nodejs/node/commit/143186145c)] - **doc**: add missing require to stream api doc (Feng Yu) [#43237](https://github.com/nodejs/node/pull/43237) +* \[[`7feff014c4`](https://github.com/nodejs/node/commit/7feff014c4)] - **doc**: use serial comma in worker\_threads docs (Tobias Nießen) [#43220](https://github.com/nodejs/node/pull/43220) +* \[[`c41bf4dc59`](https://github.com/nodejs/node/commit/c41bf4dc59)] - **doc**: use serial comma in assert docs (Tobias Nießen) [#43154](https://github.com/nodejs/node/pull/43154) +* \[[`b6469537e4`](https://github.com/nodejs/node/commit/b6469537e4)] - **doc**: use consistent method symbol (Paolo Insogna) [#42974](https://github.com/nodejs/node/pull/42974) +* \[[`a61b7fabc3`](https://github.com/nodejs/node/commit/a61b7fabc3)] - **doc**: use serial comma in fs docs (Tobias Nießen) [#43104](https://github.com/nodejs/node/pull/43104) +* \[[`14c8f46091`](https://github.com/nodejs/node/commit/14c8f46091)] - **doc**: use serial comma in http docs (Tobias Nießen) [#43026](https://github.com/nodejs/node/pull/43026) +* \[[`751f09eb28`](https://github.com/nodejs/node/commit/751f09eb28)] - **doc**: fix examples in cluster.md (OneNail) [#42889](https://github.com/nodejs/node/pull/42889) +* \[[`cc398a829b`](https://github.com/nodejs/node/commit/cc398a829b)] - **doc**: add `node:` prefix for all core modules (Antoine du Hamel) [#42752](https://github.com/nodejs/node/pull/42752) +* \[[`2922fbb9b2`](https://github.com/nodejs/node/commit/2922fbb9b2)] - **doc**: clarify some default values in `fs.md` (LiviaMedeiros) [#42892](https://github.com/nodejs/node/pull/42892) +* \[[`10e9868cbb`](https://github.com/nodejs/node/commit/10e9868cbb)] - **doc**: fix napi version for node\_api\_symbol\_for (Danielle Adams) [#42878](https://github.com/nodejs/node/pull/42878) +* \[[`3ccb5b4f3f`](https://github.com/nodejs/node/commit/3ccb5b4f3f)] - **doc**: add initial doc on how to update cjs-module-lexer (Michael Dawson) [#43255](https://github.com/nodejs/node/pull/43255) +* \[[`9515ca6f0a`](https://github.com/nodejs/node/commit/9515ca6f0a)] - **doc**: clarify use of deps/icu-small (Michael Dawson) [#43287](https://github.com/nodejs/node/pull/43287) +* \[[`7de20b518a`](https://github.com/nodejs/node/commit/7de20b518a)] - **doc**: remove llnode from diag tierlist (Tony Gorez) [#43289](https://github.com/nodejs/node/pull/43289) +* \[[`5b0ad85fde`](https://github.com/nodejs/node/commit/5b0ad85fde)] - **doc**: remove ETW from diag tierlist (Tony Gorez) [#43295](https://github.com/nodejs/node/pull/43295) +* \[[`5d2a4bd886`](https://github.com/nodejs/node/commit/5d2a4bd886)] - **doc**: use serial comma in report docs (Tobias Nießen) [#43394](https://github.com/nodejs/node/pull/43394) +* \[[`18c6d17f4f`](https://github.com/nodejs/node/commit/18c6d17f4f)] - **doc**: add fspromises mkdir example (Tierney Cyren) [#40843](https://github.com/nodejs/node/pull/40843) +* \[[`e44427954f`](https://github.com/nodejs/node/commit/e44427954f)] - **doc**: add F3n67u to triagers (Feng Yu) [#43350](https://github.com/nodejs/node/pull/43350) +* \[[`fb1566101c`](https://github.com/nodejs/node/commit/fb1566101c)] - **doc**: fix typo in globals.md (Daeyeon Jeong) [#43365](https://github.com/nodejs/node/pull/43365) +* \[[`12e7a24b48`](https://github.com/nodejs/node/commit/12e7a24b48)] - **doc**: use serial comma in webstreams docs (Tobias Nießen) [#43353](https://github.com/nodejs/node/pull/43353) +* \[[`f7bfa10a29`](https://github.com/nodejs/node/commit/f7bfa10a29)] - **doc**: add undici to glossary (F3n67u) [#43327](https://github.com/nodejs/node/pull/43327) +* \[[`961aeffffd`](https://github.com/nodejs/node/commit/961aeffffd)] - **doc**: change glossary link in pull request guide to node's glossary doc (Feng Yu) [#43318](https://github.com/nodejs/node/pull/43318) +* \[[`759861d0d4`](https://github.com/nodejs/node/commit/759861d0d4)] - **doc**: improve description of TZ (Tobias Nießen) [#43334](https://github.com/nodejs/node/pull/43334) +* \[[`288f6c0c04`](https://github.com/nodejs/node/commit/288f6c0c04)] - **doc**: use serial comma in net docs (Tobias Nießen) [#43335](https://github.com/nodejs/node/pull/43335) +* \[[`3d47c6655b`](https://github.com/nodejs/node/commit/3d47c6655b)] - **doc**: make clear the result of comparison between Symbol.for (Kohei Ueno) [#43309](https://github.com/nodejs/node/pull/43309) +* \[[`5029fc3beb`](https://github.com/nodejs/node/commit/5029fc3beb)] - **doc**: add CIGTM to `glossary.md` (Feng Yu) [#43316](https://github.com/nodejs/node/pull/43316) +* \[[`7e4dab6ad9`](https://github.com/nodejs/node/commit/7e4dab6ad9)] - **doc**: use serial comma in pull request doc (Feng Yu) [#43319](https://github.com/nodejs/node/pull/43319) +* \[[`f94d4ea73b`](https://github.com/nodejs/node/commit/f94d4ea73b)] - **doc**: use serial comma in ESM docs (Tobias Nießen) [#43322](https://github.com/nodejs/node/pull/43322) +* \[[`2f831105a3`](https://github.com/nodejs/node/commit/2f831105a3)] - **doc**: promote cdt to tier 3 (Tony Gorez) [#43290](https://github.com/nodejs/node/pull/43290) +* \[[`3e50a1a9e5`](https://github.com/nodejs/node/commit/3e50a1a9e5)] - **doc**: fix chromium document link in pull-requests.md (rikapo) [#43265](https://github.com/nodejs/node/pull/43265) +* \[[`b20cd1b756`](https://github.com/nodejs/node/commit/b20cd1b756)] - **doc**: fix 404 link of BUILDING.md (Feng Yu) [#43234](https://github.com/nodejs/node/pull/43234) +* \[[`b34fce7ad5`](https://github.com/nodejs/node/commit/b34fce7ad5)] - **doc**: add src/crypto to CC list for nodejs/crypto (Tobias Nießen) [#43286](https://github.com/nodejs/node/pull/43286) +* \[[`d50c5585b6`](https://github.com/nodejs/node/commit/d50c5585b6)] - **doc**: use serial comma in console docs (Tobias Nießen) [#43257](https://github.com/nodejs/node/pull/43257) +* \[[`f453918086`](https://github.com/nodejs/node/commit/f453918086)] - **doc**: use serial comma in errors docs (Tobias Nießen) [#43242](https://github.com/nodejs/node/pull/43242) +* \[[`ed9e3b7007`](https://github.com/nodejs/node/commit/ed9e3b7007)] - **doc**: add note regarding `%Array.prototype.concat%` in `primordials.md` (Antoine du Hamel) [#43166](https://github.com/nodejs/node/pull/43166) +* \[[`1867462f15`](https://github.com/nodejs/node/commit/1867462f15)] - **doc**: document `signal` option for `EventTarget#addEventListener` (Antoine du Hamel) [#43170](https://github.com/nodejs/node/pull/43170) +* \[[`ffee27216f`](https://github.com/nodejs/node/commit/ffee27216f)] - **doc**: make minor adjustments (LiviaMedeiros) [#43175](https://github.com/nodejs/node/pull/43175) +* \[[`1b97800c2c`](https://github.com/nodejs/node/commit/1b97800c2c)] - **doc**: use serial comma in dgram docs (Tobias Nießen) [#43191](https://github.com/nodejs/node/pull/43191) +* \[[`a51bdf6f91`](https://github.com/nodejs/node/commit/a51bdf6f91)] - **doc**: use serial comma in process docs (Tobias Nießen) [#43179](https://github.com/nodejs/node/pull/43179) +* \[[`4b4ce99b63`](https://github.com/nodejs/node/commit/4b4ce99b63)] - **doc**: improved parallel specification (mawaregetsuka) [#42679](https://github.com/nodejs/node/pull/42679) +* \[[`c591a2964c`](https://github.com/nodejs/node/commit/c591a2964c)] - **doc**: improve callback params for `fs.mkdir` (Daeyeon Jeong) [#43016](https://github.com/nodejs/node/pull/43016) +* \[[`086f8f426a`](https://github.com/nodejs/node/commit/086f8f426a)] - **doc**: fix errors in Performance hooks doc (OneNail) [#43152](https://github.com/nodejs/node/pull/43152) +* \[[`fb18ade83b`](https://github.com/nodejs/node/commit/fb18ade83b)] - **doc**: use serial comma in dns docs (Tobias Nießen) [#43145](https://github.com/nodejs/node/pull/43145) +* \[[`2071b57666`](https://github.com/nodejs/node/commit/2071b57666)] - **doc**: use ASCII apostrophes consistently (Tobias Nießen) [#43114](https://github.com/nodejs/node/pull/43114) +* \[[`ae2ec73a69`](https://github.com/nodejs/node/commit/ae2ec73a69)] - **doc**: add strategic initiative for shadow realm (Chengzhong Wu) [#43037](https://github.com/nodejs/node/pull/43037) +* \[[`cccc45653a`](https://github.com/nodejs/node/commit/cccc45653a)] - **doc**: use serial comma in events docs (Tobias Nießen) [#43113](https://github.com/nodejs/node/pull/43113) +* \[[`6f3d6596b7`](https://github.com/nodejs/node/commit/6f3d6596b7)] - **doc**: use serial comma in modules docs (Tobias Nießen) [#43103](https://github.com/nodejs/node/pull/43103) +* \[[`0eb8c46db6`](https://github.com/nodejs/node/commit/0eb8c46db6)] - **doc**: use serial comma in util docs (Tobias Nießen) [#43063](https://github.com/nodejs/node/pull/43063) +* \[[`2a72a8ae66`](https://github.com/nodejs/node/commit/2a72a8ae66)] - **doc**: remove git:// protocol, adjust nits in onboarding.md (LiviaMedeiros) [#43045](https://github.com/nodejs/node/pull/43045) +* \[[`b559dfe177`](https://github.com/nodejs/node/commit/b559dfe177)] - **doc**: add maintaining info for shared libary option (Michael Dawson) [#42517](https://github.com/nodejs/node/pull/42517) +* \[[`9101aa89ce`](https://github.com/nodejs/node/commit/9101aa89ce)] - **doc**: add detail for how to update llhttp (Michael Dawson) [#43028](https://github.com/nodejs/node/pull/43028) +* \[[`c6f87e7987`](https://github.com/nodejs/node/commit/c6f87e7987)] - **doc**: use serial comma in buffer docs (Tobias Nießen) [#43048](https://github.com/nodejs/node/pull/43048) +* \[[`f0f3f1c1ec`](https://github.com/nodejs/node/commit/f0f3f1c1ec)] - **doc**: add Rafael to the security steward for NearForm (Matteo Collina) [#42966](https://github.com/nodejs/node/pull/42966) +* \[[`e913dbf9e7`](https://github.com/nodejs/node/commit/e913dbf9e7)] - **doc**: mark some node-api functions as experimental (NickNaso) [#42987](https://github.com/nodejs/node/pull/42987) +* \[[`65a5d49268`](https://github.com/nodejs/node/commit/65a5d49268)] - **doc**: add LiviaMedeiros to collaborators (LiviaMedeiros) [#43039](https://github.com/nodejs/node/pull/43039) +* \[[`5129127db5`](https://github.com/nodejs/node/commit/5129127db5)] - **doc**: add the preferred name for @himself65 (Himself65) [#43024](https://github.com/nodejs/node/pull/43024) +* \[[`d0a95c97b5`](https://github.com/nodejs/node/commit/d0a95c97b5)] - **doc**: rename N-API to Node-API in test/README.md (Daeyeon Jeong) [#42946](https://github.com/nodejs/node/pull/42946) +* \[[`48f6d0b19b`](https://github.com/nodejs/node/commit/48f6d0b19b)] - **doc**: use serial comma in tls docs (Tobias Nießen) [#43001](https://github.com/nodejs/node/pull/43001) +* \[[`14569c7e9d`](https://github.com/nodejs/node/commit/14569c7e9d)] - **doc**: improve commit message example for releases (Juan José) [#42954](https://github.com/nodejs/node/pull/42954) +* \[[`78a08ab4c0`](https://github.com/nodejs/node/commit/78a08ab4c0)] - **doc**: use serial comma in cluster docs (Tobias Nießen) [#42989](https://github.com/nodejs/node/pull/42989) +* \[[`42783cc205`](https://github.com/nodejs/node/commit/42783cc205)] - **doc**: fix errors in Web Streams doc (OneNail) [#42862](https://github.com/nodejs/node/pull/42862) +* \[[`40f552c4d8`](https://github.com/nodejs/node/commit/40f552c4d8)] - **doc**: add additional step to security release process (Michael Dawson) [#42916](https://github.com/nodejs/node/pull/42916) +* \[[`cbb20bea42`](https://github.com/nodejs/node/commit/cbb20bea42)] - **doc**: add section regarding property definition in `primordials.md` (Antoine du Hamel) [#42921](https://github.com/nodejs/node/pull/42921) +* \[[`841b690359`](https://github.com/nodejs/node/commit/841b690359)] - **doc**: reword "test directory" (LiviaMedeiros) [#42817](https://github.com/nodejs/node/pull/42817) +* \[[`e1127b6154`](https://github.com/nodejs/node/commit/e1127b6154)] - **doc**: remove legacy `-J` test.py option from BUILDING.md (LiviaMedeiros) [#42817](https://github.com/nodejs/node/pull/42817) +* \[[`64919a59b5`](https://github.com/nodejs/node/commit/64919a59b5)] - **doc**: http2.createServer `options` as optional (Daeyeon Jeong) [#42832](https://github.com/nodejs/node/pull/42832) +* \[[`54ac0102c1`](https://github.com/nodejs/node/commit/54ac0102c1)] - **doc**: record March 2022 security release steward (Richard Lau) [#42876](https://github.com/nodejs/node/pull/42876) +* \[[`ca117b2fb0`](https://github.com/nodejs/node/commit/ca117b2fb0)] - **doc**: initial version of security-model-strategy.md (Michael Dawson) [#42709](https://github.com/nodejs/node/pull/42709) +* \[[`e45861ff36`](https://github.com/nodejs/node/commit/e45861ff36)] - **doc**: clarify guide on testing internal errors (LiviaMedeiros) [#42813](https://github.com/nodejs/node/pull/42813) +* \[[`cf8620394d`](https://github.com/nodejs/node/commit/cf8620394d)] - **doc**: fix markdown formatting in primordials.md (Tobias Nießen) [#42877](https://github.com/nodejs/node/pull/42877) +* \[[`619414567f`](https://github.com/nodejs/node/commit/619414567f)] - **doc**: add primordials guidelines (Antoine du Hamel) [#38635](https://github.com/nodejs/node/pull/38635) +* \[[`92d7214eb2`](https://github.com/nodejs/node/commit/92d7214eb2)] - **doc**: elevate node-clinic diagnostic tier (RafaelGSS) [#42802](https://github.com/nodejs/node/pull/42802) +* \[[`9ab641ee26`](https://github.com/nodejs/node/commit/9ab641ee26)] - **doc**: update WebAssembly strategy with Wasm Web API (Tobias Nießen) [#42836](https://github.com/nodejs/node/pull/42836) +* \[[`2c447b4f30`](https://github.com/nodejs/node/commit/2c447b4f30)] - **doc**: order `vm.Module` linker arguments correctly (Simen Bekkhus) [#42797](https://github.com/nodejs/node/pull/42797) +* \[[`2974f4042e`](https://github.com/nodejs/node/commit/2974f4042e)] - **doc**: add @kuriyosh to collaborators (Yoshiki Kurihara) [#42824](https://github.com/nodejs/node/pull/42824) +* \[[`da97b86a99`](https://github.com/nodejs/node/commit/da97b86a99)] - **doc**: add maintaining-webassembly.md (Michael Dawson) [#42660](https://github.com/nodejs/node/pull/42660) +* \[[`2178ccfd77`](https://github.com/nodejs/node/commit/2178ccfd77)] - **doc**: delete heapdump from diagnostic tooling support tiers (Tony Gorez) [#42783](https://github.com/nodejs/node/pull/42783) +* \[[`b5cac3a4b7`](https://github.com/nodejs/node/commit/b5cac3a4b7)] - **doc**: fix example in assert.md (LiviaMedeiros) [#42786](https://github.com/nodejs/node/pull/42786) +* \[[`6e8285a27b`](https://github.com/nodejs/node/commit/6e8285a27b)] - **doc**: fix version history for Loaders API (Antoine du Hamel) [#42778](https://github.com/nodejs/node/pull/42778) +* \[[`b5a3c0499b`](https://github.com/nodejs/node/commit/b5a3c0499b)] - **doc**: clarify core modules that can be loaded without a prefix (Antoine du Hamel) [#42753](https://github.com/nodejs/node/pull/42753) +* \[[`41ad6fa020`](https://github.com/nodejs/node/commit/41ad6fa020)] - **doc**: consolidate use of multiple-byte units (Antoine du Hamel) [#42587](https://github.com/nodejs/node/pull/42587) +* \[[`36c0e47bf5`](https://github.com/nodejs/node/commit/36c0e47bf5)] - **doc**: add documentation for inherited methods (Luigi Pinca) [#42691](https://github.com/nodejs/node/pull/42691) +* \[[`665fb3d269`](https://github.com/nodejs/node/commit/665fb3d269)] - **doc**: close tag in n-api.md (LiviaMedeiros) [#42751](https://github.com/nodejs/node/pull/42751) +* \[[`3c97384527`](https://github.com/nodejs/node/commit/3c97384527)] - **doc**: copyedit http.OutgoingMessage documentation (Luigi Pinca) [#42733](https://github.com/nodejs/node/pull/42733) +* \[[`2f319825cc`](https://github.com/nodejs/node/commit/2f319825cc)] - **doc**: improve fragment (`:target`) anchors behavior on HTML version (Antoine du Hamel) [#42739](https://github.com/nodejs/node/pull/42739) +* \[[`1b88868adc`](https://github.com/nodejs/node/commit/1b88868adc)] - **doc**: fix `added:` info for `outgoingMessage.writable*` (Luigi Pinca) [#42737](https://github.com/nodejs/node/pull/42737) +* \[[`0238239de0`](https://github.com/nodejs/node/commit/0238239de0)] - **doc**: delete mdb\_v8 from diagnostic tooling support tiers (Tony Gorez) [#42626](https://github.com/nodejs/node/pull/42626) +* \[[`b4b2a0f8b7`](https://github.com/nodejs/node/commit/b4b2a0f8b7)] - **doc**: document the 'close' and 'finish' events (Luigi Pinca) [#42704](https://github.com/nodejs/node/pull/42704) +* \[[`d7265d8ae4`](https://github.com/nodejs/node/commit/d7265d8ae4)] - **doc**: fix `added:` info for `outgoingMessage.{,un}cork()` (Luigi Pinca) [#42711](https://github.com/nodejs/node/pull/42711) +* \[[`1b668d4be6`](https://github.com/nodejs/node/commit/1b668d4be6)] - **doc**: revise data imports and node: imports sections (Rich Trott) [#42734](https://github.com/nodejs/node/pull/42734) +* \[[`b6c23b0312`](https://github.com/nodejs/node/commit/b6c23b0312)] - **doc**: fix ESM JSON/data URL import example (Rich Trott) [#42728](https://github.com/nodejs/node/pull/42728) +* \[[`806711346d`](https://github.com/nodejs/node/commit/806711346d)] - **doc**: improve doc for http.ServerResponse inheritance (Luigi Pinca) [#42693](https://github.com/nodejs/node/pull/42693) +* \[[`7c881b218f`](https://github.com/nodejs/node/commit/7c881b218f)] - **doc**: add RafaelGSS to collaborators (RafaelGSS) [#42718](https://github.com/nodejs/node/pull/42718) +* \[[`654e71c29c`](https://github.com/nodejs/node/commit/654e71c29c)] - **doc**: add NodeEdKeyGenParams to CryptoKey.algorithm (Tobias Nießen) [#42629](https://github.com/nodejs/node/pull/42629) +* \[[`e566e5c3e4`](https://github.com/nodejs/node/commit/e566e5c3e4)] - **doc**: fix the example for embedders (Momtchil Momtchev) [#42671](https://github.com/nodejs/node/pull/42671) +* \[[`47f7b34831`](https://github.com/nodejs/node/commit/47f7b34831)] - **doc**: change AES-GCM IV recommendation in WebCrypto (Tobias Nießen) [#42611](https://github.com/nodejs/node/pull/42611) +* \[[`0a64b14343`](https://github.com/nodejs/node/commit/0a64b14343)] - **doc**: fix `added:` info for some methods (Luigi Pinca) [#42661](https://github.com/nodejs/node/pull/42661) +* \[[`0c9038020a`](https://github.com/nodejs/node/commit/0c9038020a)] - **doc**: remove unneeded new in Buffer example (Niklas Mischkulnig) [#42682](https://github.com/nodejs/node/pull/42682) +* \[[`06f7aeb2d2`](https://github.com/nodejs/node/commit/06f7aeb2d2)] - **doc**: mark worker.id as integer in cluster docs (Tobias Nießen) [#42684](https://github.com/nodejs/node/pull/42684) +* \[[`1c579ecb78`](https://github.com/nodejs/node/commit/1c579ecb78)] - **doc**: recommend `fh.createWriteStream` for fsPromises methods (Antoine du Hamel) [#42653](https://github.com/nodejs/node/pull/42653) +* \[[`3ba17b184d`](https://github.com/nodejs/node/commit/3ba17b184d)] - **doc**: fix outgoingMessage.removeHeader() signature (Luigi Pinca) [#42652](https://github.com/nodejs/node/pull/42652) +* \[[`ba1f864159`](https://github.com/nodejs/node/commit/ba1f864159)] - **doc**: mark tlsSocket.authorized as boolean property (Tobias Nießen) [#42647](https://github.com/nodejs/node/pull/42647) +* \[[`85aeae2cd2`](https://github.com/nodejs/node/commit/85aeae2cd2)] - **doc**: add missing punctuation in Web Streams doc (Tobias Nießen) [#42672](https://github.com/nodejs/node/pull/42672) +* \[[`630cadbc3f`](https://github.com/nodejs/node/commit/630cadbc3f)] - **doc**: add missing article in session ticket section (Tobias Nießen) [#42632](https://github.com/nodejs/node/pull/42632) +* \[[`b636996499`](https://github.com/nodejs/node/commit/b636996499)] - **doc**: link to dynamic import function (Tobias Nießen) [#42634](https://github.com/nodejs/node/pull/42634) +* \[[`70f61a57d0`](https://github.com/nodejs/node/commit/70f61a57d0)] - **doc**: add note about header values encoding (Paolo Insogna) [#42624](https://github.com/nodejs/node/pull/42624) +* \[[`608d777cf8`](https://github.com/nodejs/node/commit/608d777cf8)] - **doc**: add missing word in rootCertificates section (Tobias Nießen) [#42633](https://github.com/nodejs/node/pull/42633) +* \[[`dbc993294f`](https://github.com/nodejs/node/commit/dbc993294f)] - **doc**: fix brackets position (LiviaMedeiros) [#42649](https://github.com/nodejs/node/pull/42649) +* \[[`a9e97fcc3f`](https://github.com/nodejs/node/commit/a9e97fcc3f)] - **doc**: copyedit corepack.md (Rich Trott) [#42620](https://github.com/nodejs/node/pull/42620) +* \[[`6209e295bb`](https://github.com/nodejs/node/commit/6209e295bb)] - **doc**: delete chakra tt from diagnostic tooling support tiers (Tony Gorez) [#42627](https://github.com/nodejs/node/pull/42627) +* \[[`198f22d3da`](https://github.com/nodejs/node/commit/198f22d3da)] - **doc**: simplify Http2Stream encoding text (Rich Trott) [#42597](https://github.com/nodejs/node/pull/42597) +* \[[`9129f024dc`](https://github.com/nodejs/node/commit/9129f024dc)] - **doc**: remove obsolete stream API selection text (Rich Trott) [#42586](https://github.com/nodejs/node/pull/42586) +* \[[`88108da2c1`](https://github.com/nodejs/node/commit/88108da2c1)] - **doc**: remove faulty justification for 128-bit AES (Tobias Nießen) [#42578](https://github.com/nodejs/node/pull/42578) +* \[[`8072adf41e`](https://github.com/nodejs/node/commit/8072adf41e)] - **doc**: fix documentation of `FileHandle.prototype.appendFile` (Antoine du Hamel) [#42588](https://github.com/nodejs/node/pull/42588) +* \[[`300b9d15ea`](https://github.com/nodejs/node/commit/300b9d15ea)] - **doc**: change "OCSP Request" to "OCSP request" (Tobias Nießen) [#42582](https://github.com/nodejs/node/pull/42582) +* \[[`5ee6b07a6b`](https://github.com/nodejs/node/commit/5ee6b07a6b)] - **doc**: aes webcrypto unwrap is not a node-specific extensions (Filip Skokan) [#42561](https://github.com/nodejs/node/pull/42561) +* \[[`8850cf99f7`](https://github.com/nodejs/node/commit/8850cf99f7)] - **doc**: simplify recommendations in process.md (Rich Trott) [#42556](https://github.com/nodejs/node/pull/42556) +* \[[`c361129d7b`](https://github.com/nodejs/node/commit/c361129d7b)] - **doc**: clarify recommendations in stream.md (Rich Trott) [#42555](https://github.com/nodejs/node/pull/42555) +* \[[`3bec01f1b9`](https://github.com/nodejs/node/commit/3bec01f1b9)] - **doc**: simplify recommendation in webcrypto.md (Rich Trott) [#42554](https://github.com/nodejs/node/pull/42554) +* \[[`9c307937b4`](https://github.com/nodejs/node/commit/9c307937b4)] - **doc**: update DEP0102 text (Rich Trott) [#42553](https://github.com/nodejs/node/pull/42553) +* \[[`73ce20162b`](https://github.com/nodejs/node/commit/73ce20162b)] - **doc**: add introduction sentence for CJS (Antoine du Hamel) [#42491](https://github.com/nodejs/node/pull/42491) +* \[[`5783865894`](https://github.com/nodejs/node/commit/5783865894)] - **doc**: add @meixg to collaborators (Xuguang Mei) [#42576](https://github.com/nodejs/node/pull/42576) +* \[[`a8a075b48b`](https://github.com/nodejs/node/commit/a8a075b48b)] - **doc**: consolidate CI sections (Rich Trott) [#42534](https://github.com/nodejs/node/pull/42534) +* \[[`816cc5ed8a`](https://github.com/nodejs/node/commit/816cc5ed8a)] - **doc**: remove extraneous comma (Rich Trott) [#42548](https://github.com/nodejs/node/pull/42548) +* \[[`7476fe9431`](https://github.com/nodejs/node/commit/7476fe9431)] - **doc**: guide towards x509.fingerprint256 (Tobias Nießen) [#42516](https://github.com/nodejs/node/pull/42516) +* \[[`a6af500919`](https://github.com/nodejs/node/commit/a6af500919)] - **doc**: fix internal link in collaborator-guide.md (Daeyeon Jeong) [#42551](https://github.com/nodejs/node/pull/42551) +* \[[`9a70c3b843`](https://github.com/nodejs/node/commit/9a70c3b843)] - **doc**: add suggestion for OpenSSL only sec releases (Michael Dawson) [#42456](https://github.com/nodejs/node/pull/42456) +* \[[`28208311bf`](https://github.com/nodejs/node/commit/28208311bf)] - **doc**: fix comment text in async\_hooks example (Rich Trott) [#42499](https://github.com/nodejs/node/pull/42499) +* \[[`8fd7ab5d1f`](https://github.com/nodejs/node/commit/8fd7ab5d1f)] - **doc**: add `stability` class to legacy status description (Daniel Roe) [#42525](https://github.com/nodejs/node/pull/42525) +* \[[`37366d4ec4`](https://github.com/nodejs/node/commit/37366d4ec4)] - **doc**: suggest checkHost in checkServerIdentity docs (Tobias Nießen) [#42495](https://github.com/nodejs/node/pull/42495) +* \[[`981d602d8c`](https://github.com/nodejs/node/commit/981d602d8c)] - **doc**: update security release onboarding (Joe Sepi) [#42333](https://github.com/nodejs/node/pull/42333) +* \[[`33b14263e9`](https://github.com/nodejs/node/commit/33b14263e9)] - **doc**: remove comma splice in events.md (Rich Trott) [#42484](https://github.com/nodejs/node/pull/42484) +* \[[`89e3cedb1a`](https://github.com/nodejs/node/commit/89e3cedb1a)] - **doc**: clarify napi\_finalize behavior (Alba Mendez) [#42461](https://github.com/nodejs/node/pull/42461) +* \[[`40b61dbf1b`](https://github.com/nodejs/node/commit/40b61dbf1b)] - **doc**: expand history for conditional exports changes in v12 (Greg Poole) [#42339](https://github.com/nodejs/node/pull/42339) +* \[[`70f982a8fe`](https://github.com/nodejs/node/commit/70f982a8fe)] - **doc**: change comma-splice to two sentences (Rich Trott) [#42455](https://github.com/nodejs/node/pull/42455) +* \[[`69a4daaa09`](https://github.com/nodejs/node/commit/69a4daaa09)] - **doc**: add link to section (Rich Trott) [#42428](https://github.com/nodejs/node/pull/42428) +* \[[`7a7030af79`](https://github.com/nodejs/node/commit/7a7030af79)] - **doc**: fix typo in async\_context.md (Anupama Codippily) [#42444](https://github.com/nodejs/node/pull/42444) +* \[[`3cf80254c7`](https://github.com/nodejs/node/commit/3cf80254c7)] - **doc**: add `trace_gc` to diagnostic tooling support document (Tony Gorez) [#42346](https://github.com/nodejs/node/pull/42346) +* \[[`d9ae6c7829`](https://github.com/nodejs/node/commit/d9ae6c7829)] - **doc**: make header smaller and dropdown click-driven when JS is on (Paolo Insogna) [#42165](https://github.com/nodejs/node/pull/42165) +* \[[`01eb1dc8eb`](https://github.com/nodejs/node/commit/01eb1dc8eb)] - **doc**: standardize typography for \_semantic versioning\_ (Rich Trott) [#42401](https://github.com/nodejs/node/pull/42401) +* \[[`d70f9cb2a3`](https://github.com/nodejs/node/commit/d70f9cb2a3)] - **doc**: unify import order in CCM example (Tobias Nießen) [#42394](https://github.com/nodejs/node/pull/42394) +* \[[`165ee28853`](https://github.com/nodejs/node/commit/165ee28853)] - **doc**: update property name (Rich Trott) [#42398](https://github.com/nodejs/node/pull/42398) +* \[[`b3a7a689f9`](https://github.com/nodejs/node/commit/b3a7a689f9)] - **doc**: document breaking change in `http.IncomingMessage` `'close'` event (Paolo Insogna) [#42521](https://github.com/nodejs/node/pull/42521) +* \[[`7be07c719c`](https://github.com/nodejs/node/commit/7be07c719c)] - **doc,test**: clarify timingSafeEqual semantics (Tobias Nießen) [#43228](https://github.com/nodejs/node/pull/43228) +* \[[`6c00369083`](https://github.com/nodejs/node/commit/6c00369083)] - **doc,test**: clarify ChaCha20-Poly1305 usage (Tobias Nießen) [#42323](https://github.com/nodejs/node/pull/42323) + +#### Other commits + +* \[[`3b10a94a95`](https://github.com/nodejs/node/commit/3b10a94a95)] - **benchmark**: fix output regression (Brian White) [#43635](https://github.com/nodejs/node/pull/43635) +* \[[`f4c4113434`](https://github.com/nodejs/node/commit/f4c4113434)] - **benchmark**: fix fork detection (Paolo Insogna) [#43601](https://github.com/nodejs/node/pull/43601) +* \[[`04f651186d`](https://github.com/nodejs/node/commit/04f651186d)] - **benchmark**: forcefully close processes (Paolo Insogna) [#43557](https://github.com/nodejs/node/pull/43557) +* \[[`986fb3e9ae`](https://github.com/nodejs/node/commit/986fb3e9ae)] - **benchmark**: add node-error benchmark (RafaelGSS) [#43077](https://github.com/nodejs/node/pull/43077) +* \[[`c36b02f666`](https://github.com/nodejs/node/commit/c36b02f666)] - **benchmark**: fix misc/startup failure (Antoine du Hamel) [#42746](https://github.com/nodejs/node/pull/42746) +* \[[`391e16235c`](https://github.com/nodejs/node/commit/391e16235c)] - **build**: make GitPod less noisy (Rich Trott) [#43829](https://github.com/nodejs/node/pull/43829) +* \[[`5315d9741c`](https://github.com/nodejs/node/commit/5315d9741c)] - **build**: add GitHub token permissions for workflows (Varun Sharma) [#43743](https://github.com/nodejs/node/pull/43743) +* \[[`025248bfb0`](https://github.com/nodejs/node/commit/025248bfb0)] - **build**: enable GitPod prebuilds (Rich Trott) [#43698](https://github.com/nodejs/node/pull/43698) +* \[[`d9664c3040`](https://github.com/nodejs/node/commit/d9664c3040)] - **build**: clarify missing clang-format tool (Tobias Nießen) [#42762](https://github.com/nodejs/node/pull/42762) +* \[[`600505ee71`](https://github.com/nodejs/node/commit/600505ee71)] - **build**: update main branch name in GH workflow (Feng Yu) [#43481](https://github.com/nodejs/node/pull/43481) +* \[[`ab55ff4a52`](https://github.com/nodejs/node/commit/ab55ff4a52)] - **build**: add nonpm and nocorepack to vcbuild.bat (Darshan Sen) [#43219](https://github.com/nodejs/node/pull/43219) +* \[[`cf68280548`](https://github.com/nodejs/node/commit/cf68280548)] - **build**: set ASAN workaround (Richard Lau) [#43085](https://github.com/nodejs/node/pull/43085) +* \[[`c4f7e93964`](https://github.com/nodejs/node/commit/c4f7e93964)] - **build**: fix format-cpp (Darshan Sen) [#42764](https://github.com/nodejs/node/pull/42764) +* \[[`dd97a9d1fa`](https://github.com/nodejs/node/commit/dd97a9d1fa)] - **build**: improve the format-cpp error message (Darshan Sen) [#42765](https://github.com/nodejs/node/pull/42765) +* \[[`fc55a6798f`](https://github.com/nodejs/node/commit/fc55a6798f)] - **build**: run clang-format on CI (Darshan Sen) [#42681](https://github.com/nodejs/node/pull/42681) +* \[[`46bc3c1af1`](https://github.com/nodejs/node/commit/46bc3c1af1)] - **build**: consolidate JS and md linting GitHub Actions (Rich Trott) [#42572](https://github.com/nodejs/node/pull/42572) +* \[[`dd7aa2d51f`](https://github.com/nodejs/node/commit/dd7aa2d51f)] - **build**: set stale action back to running nightly (Michael Dawson) [#42549](https://github.com/nodejs/node/pull/42549) +* \[[`dda77aa63b`](https://github.com/nodejs/node/commit/dda77aa63b)] - **build**: bump actions/checkout (Eliaz Bobadilla) [#42460](https://github.com/nodejs/node/pull/42460) +* \[[`0d93b425cf`](https://github.com/nodejs/node/commit/0d93b425cf)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#43966](https://github.com/nodejs/node/pull/43966) +* \[[`7a974457df`](https://github.com/nodejs/node/commit/7a974457df)] - **meta**: update `node-api` in label-pr-config (Daeyeon Jeong) [#43794](https://github.com/nodejs/node/pull/43794) +* \[[`dff6068c9a`](https://github.com/nodejs/node/commit/dff6068c9a)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#43872](https://github.com/nodejs/node/pull/43872) +* \[[`80d562b051`](https://github.com/nodejs/node/commit/80d562b051)] - **meta**: use platform dropdown on flaky template (Rafael Gonzaga) [#43855](https://github.com/nodejs/node/pull/43855) +* \[[`162c7cbb54`](https://github.com/nodejs/node/commit/162c7cbb54)] - **meta**: enable blank issues (Matteo Collina) [#43775](https://github.com/nodejs/node/pull/43775) +* \[[`becfcb4d97`](https://github.com/nodejs/node/commit/becfcb4d97)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#43770](https://github.com/nodejs/node/pull/43770) +* \[[`78bb3ab8e8`](https://github.com/nodejs/node/commit/78bb3ab8e8)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#43750](https://github.com/nodejs/node/pull/43750) +* \[[`b62574c4bd`](https://github.com/nodejs/node/commit/b62574c4bd)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#43660](https://github.com/nodejs/node/pull/43660) +* \[[`965367f586`](https://github.com/nodejs/node/commit/965367f586)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#43573](https://github.com/nodejs/node/pull/43573) +* \[[`3760490c3a`](https://github.com/nodejs/node/commit/3760490c3a)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#43480](https://github.com/nodejs/node/pull/43480) +* \[[`5c6021772f`](https://github.com/nodejs/node/commit/5c6021772f)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#43399](https://github.com/nodejs/node/pull/43399) +* \[[`a544a09662`](https://github.com/nodejs/node/commit/a544a09662)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#43387](https://github.com/nodejs/node/pull/43387) +* \[[`d0084daa8a`](https://github.com/nodejs/node/commit/d0084daa8a)] - **meta**: move one or more collaborators to emeritus (#43183) (Node.js GitHub Bot) [#43183](https://github.com/nodejs/node/pull/43183) +* \[[`bb7b1dcb7a`](https://github.com/nodejs/node/commit/bb7b1dcb7a)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#43312](https://github.com/nodejs/node/pull/43312) +* \[[`aa868efe15`](https://github.com/nodejs/node/commit/aa868efe15)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#43231](https://github.com/nodejs/node/pull/43231) +* \[[`fb5d9b7fb5`](https://github.com/nodejs/node/commit/fb5d9b7fb5)] - **meta**: add mailmap entry for legendecas (Chengzhong Wu) [#43156](https://github.com/nodejs/node/pull/43156) +* \[[`06578724bd`](https://github.com/nodejs/node/commit/06578724bd)] - **meta**: add mailmap entry for npm team (Luigi Pinca) [#43143](https://github.com/nodejs/node/pull/43143) +* \[[`bd6912def5`](https://github.com/nodejs/node/commit/bd6912def5)] - **meta**: add mailmap entry for Morgan Roderick (Luigi Pinca) [#43144](https://github.com/nodejs/node/pull/43144) +* \[[`3db25bfc63`](https://github.com/nodejs/node/commit/3db25bfc63)] - **meta**: add mailmap entry for ShogunPanda (Paolo Insogna) [#43094](https://github.com/nodejs/node/pull/43094) +* \[[`0ce67e22fb`](https://github.com/nodejs/node/commit/0ce67e22fb)] - **meta**: update .mailmap for recent README name change (Rich Trott) [#43027](https://github.com/nodejs/node/pull/43027) +* \[[`74ed25ddf5`](https://github.com/nodejs/node/commit/74ed25ddf5)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#43004](https://github.com/nodejs/node/pull/43004) +* \[[`72e9ca1a45`](https://github.com/nodejs/node/commit/72e9ca1a45)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#42937](https://github.com/nodejs/node/pull/42937) +* \[[`c351bf682a`](https://github.com/nodejs/node/commit/c351bf682a)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#42848](https://github.com/nodejs/node/pull/42848) +* \[[`54d94d04ca`](https://github.com/nodejs/node/commit/54d94d04ca)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#42769](https://github.com/nodejs/node/pull/42769) +* \[[`412b3313c9`](https://github.com/nodejs/node/commit/412b3313c9)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#42760](https://github.com/nodejs/node/pull/42760) +* \[[`499d0100a6`](https://github.com/nodejs/node/commit/499d0100a6)] - **meta**: move mmarchini to emeritus (mary marchini) [#42750](https://github.com/nodejs/node/pull/42750) +* \[[`7f857d16b8`](https://github.com/nodejs/node/commit/7f857d16b8)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#42677](https://github.com/nodejs/node/pull/42677) +* \[[`0994001a51`](https://github.com/nodejs/node/commit/0994001a51)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#42599](https://github.com/nodejs/node/pull/42599) +* \[[`ac1c0122e4`](https://github.com/nodejs/node/commit/ac1c0122e4)] - **meta**: update .mailmap and AUTHORS (Rich Trott) [#42602](https://github.com/nodejs/node/pull/42602) +* \[[`c7264b712b`](https://github.com/nodejs/node/commit/c7264b712b)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#42500](https://github.com/nodejs/node/pull/42500) +* \[[`bc4bd92bb8`](https://github.com/nodejs/node/commit/bc4bd92bb8)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#42585](https://github.com/nodejs/node/pull/42585) +* \[[`bcd8a55f37`](https://github.com/nodejs/node/commit/bcd8a55f37)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#42488](https://github.com/nodejs/node/pull/42488) +* \[[`e6db8099f8`](https://github.com/nodejs/node/commit/e6db8099f8)] - **test**: refactor ESM tests to improve performance (Jacob Smith) [#43784](https://github.com/nodejs/node/pull/43784) +* \[[`0046b9a478`](https://github.com/nodejs/node/commit/0046b9a478)] - **test**: add test on worker process.exit in async modules (Chengzhong Wu) [#43751](https://github.com/nodejs/node/pull/43751) +* \[[`3a6df62cfd`](https://github.com/nodejs/node/commit/3a6df62cfd)] - **test**: update WPT encoding tests (Kohei Ueno) [#43958](https://github.com/nodejs/node/pull/43958) +* \[[`ca747ccb7e`](https://github.com/nodejs/node/commit/ca747ccb7e)] - **test**: remove test-whatwg-events-add-event-listener-options-once.js (Feng Yu) [#43877](https://github.com/nodejs/node/pull/43877) +* \[[`e22041734a`](https://github.com/nodejs/node/commit/e22041734a)] - **test**: work scheduled in process.nextTick can keep the event loop alive (Andreu Botella) [#43787](https://github.com/nodejs/node/pull/43787) +* \[[`2730a10a58`](https://github.com/nodejs/node/commit/2730a10a58)] - **test**: simplify test-tls-set-secure-context (Tobias Nießen) [#43878](https://github.com/nodejs/node/pull/43878) +* \[[`ec3c331c73`](https://github.com/nodejs/node/commit/ec3c331c73)] - **test**: fix test http upload timeout (theanarkh) [#43935](https://github.com/nodejs/node/pull/43935) +* \[[`19397a0488`](https://github.com/nodejs/node/commit/19397a0488)] - **test**: simplify ReplStream.wait() (Tobias Nießen) [#43857](https://github.com/nodejs/node/pull/43857) +* \[[`918448e239`](https://github.com/nodejs/node/commit/918448e239)] - **test**: ensure NODE\_EXTRA\_CA\_CERTS not set before tests (KrayzeeKev) [#43858](https://github.com/nodejs/node/pull/43858) +* \[[`f4cd579ae1`](https://github.com/nodejs/node/commit/f4cd579ae1)] - **test**: add check to test-fs-readfile-tostring-fail (Richard Lau) [#43850](https://github.com/nodejs/node/pull/43850) +* \[[`e271e3403e`](https://github.com/nodejs/node/commit/e271e3403e)] - **test**: use `common.mustNotMutateObjectDeep()` in immutability tests (LiviaMedeiros) [#43196](https://github.com/nodejs/node/pull/43196) +* \[[`409158c919`](https://github.com/nodejs/node/commit/409158c919)] - **test**: add `common.mustNotMutateObjectDeep()` (LiviaMedeiros) [#43196](https://github.com/nodejs/node/pull/43196) +* \[[`75e6933a39`](https://github.com/nodejs/node/commit/75e6933a39)] - **test**: fix coverity warning in test (Michael Dawson) [#43631](https://github.com/nodejs/node/pull/43631) +* \[[`087fc8dddf`](https://github.com/nodejs/node/commit/087fc8dddf)] - **test**: mark test-http-client-response-timeout flaky (Tobias Nießen) [#43792](https://github.com/nodejs/node/pull/43792) +* \[[`993bf7b671`](https://github.com/nodejs/node/commit/993bf7b671)] - **test**: mark flaky tests on smartos (Feng Yu) [#43596](https://github.com/nodejs/node/pull/43596) +* \[[`a3a2a9ede5`](https://github.com/nodejs/node/commit/a3a2a9ede5)] - **test**: mark test-http-server-request-timeouts-mixed flaky on macOS (F3n67u) [#43597](https://github.com/nodejs/node/pull/43597) +* \[[`7cb71c0c7e`](https://github.com/nodejs/node/commit/7cb71c0c7e)] - **test**: skip test-net-connect-reset-until-connected on SmartOS (Filip Skokan) [#43449](https://github.com/nodejs/node/pull/43449) +* \[[`b5eb55646f`](https://github.com/nodejs/node/commit/b5eb55646f)] - **test**: add test for short-option followed by its value (Kohei Ueno) [#43358](https://github.com/nodejs/node/pull/43358) +* \[[`8bd2f4e2b8`](https://github.com/nodejs/node/commit/8bd2f4e2b8)] - **test**: use `assert.match()` instead of `assert(regex.test())` (Antoine du Hamel) [#42803](https://github.com/nodejs/node/pull/42803) +* \[[`f99b0d02e7`](https://github.com/nodejs/node/commit/f99b0d02e7)] - **test**: fix typo in test-stream-toArray (Tobias Nießen) [#41634](https://github.com/nodejs/node/pull/41634) +* \[[`95a823dc26`](https://github.com/nodejs/node/commit/95a823dc26)] - **test**: fix typo in file name (Antoine du Hamel) [#43764](https://github.com/nodejs/node/pull/43764) +* \[[`c291233955`](https://github.com/nodejs/node/commit/c291233955)] - **test**: improve lib/internal/test\_runner/test.js coverage (MURAKAMI Masahiko) [#42745](https://github.com/nodejs/node/pull/42745) +* \[[`a5e16203a3`](https://github.com/nodejs/node/commit/a5e16203a3)] - **test**: mark test-net-connect-reset-until-connected flaky on freebsd (Feng Yu) [#43613](https://github.com/nodejs/node/pull/43613) +* \[[`42610cc8e2`](https://github.com/nodejs/node/commit/42610cc8e2)] - **test**: mark test-gc-http-client-timeout as flaky on arm (Chengzhong Wu) [#43754](https://github.com/nodejs/node/pull/43754) +* \[[`cc5f17f128`](https://github.com/nodejs/node/commit/cc5f17f128)] - **test**: add test for profile command of node inspect (Kohei Ueno) [#43058](https://github.com/nodejs/node/pull/43058) +* \[[`11df17c2f9`](https://github.com/nodejs/node/commit/11df17c2f9)] - **test**: use Object for `tests` variable in fs trace test (Feng Yu) [#43585](https://github.com/nodejs/node/pull/43585) +* \[[`61ddd50c38`](https://github.com/nodejs/node/commit/61ddd50c38)] - **test**: improve code coverage for performance\_entry (Kohei Ueno) [#43434](https://github.com/nodejs/node/pull/43434) +* \[[`341799a0c3`](https://github.com/nodejs/node/commit/341799a0c3)] - **test**: add test to ensure repl doesn't support --input-type (cola119) [#43507](https://github.com/nodejs/node/pull/43507) +* \[[`9bc4ad0483`](https://github.com/nodejs/node/commit/9bc4ad0483)] - **test**: fix flaky test-perf-hooks-histogram (Santiago Gimeno) [#43567](https://github.com/nodejs/node/pull/43567) +* \[[`4d8daae236`](https://github.com/nodejs/node/commit/4d8daae236)] - **test**: fix Buffer.from(ArrayBufferView) call (LiviaMedeiros) [#43614](https://github.com/nodejs/node/pull/43614) +* \[[`8c7597373f`](https://github.com/nodejs/node/commit/8c7597373f)] - **test**: mark test-worker-http2-stream-terminate flaky on all platforms (Finn Yu) [#43620](https://github.com/nodejs/node/pull/43620) +* \[[`e8754f3557`](https://github.com/nodejs/node/commit/e8754f3557)] - **test**: improve code coverage for SourceMap class (italo jose) [#43285](https://github.com/nodejs/node/pull/43285) +* \[[`93de96f844`](https://github.com/nodejs/node/commit/93de96f844)] - **test**: refactor to top-level await (Meek Simbule) [#43500](https://github.com/nodejs/node/pull/43500) +* \[[`f3e9fd7a00`](https://github.com/nodejs/node/commit/f3e9fd7a00)] - **test**: skip test-v8-serialize-leak on IBM i (Richard Lau) [#43511](https://github.com/nodejs/node/pull/43511) +* \[[`65c3e901eb`](https://github.com/nodejs/node/commit/65c3e901eb)] - **test**: use unique file names in fs trace test (Ben Noordhuis) [#43504](https://github.com/nodejs/node/pull/43504) +* \[[`7ce80d81ed`](https://github.com/nodejs/node/commit/7ce80d81ed)] - **test**: allow EOVERFLOW errors in fs position tests (Richard Lau) [#43510](https://github.com/nodejs/node/pull/43510) +* \[[`bf5adf37f3`](https://github.com/nodejs/node/commit/bf5adf37f3)] - **test**: add WPT tests for dom/events (Daiki Nishikawa) [#43151](https://github.com/nodejs/node/pull/43151) +* \[[`a5df207c2b`](https://github.com/nodejs/node/commit/a5df207c2b)] - **test**: replace gc(true) with gc({ type: 'minor' }) (Tobias Nießen) [#43493](https://github.com/nodejs/node/pull/43493) +* \[[`222a6e94ed`](https://github.com/nodejs/node/commit/222a6e94ed)] - **test**: improve coverage for load hooks (Antoine du Hamel) [#43374](https://github.com/nodejs/node/pull/43374) +* \[[`9c1fffc93e`](https://github.com/nodejs/node/commit/9c1fffc93e)] - **test**: refactor to top-level await (Meek Simbule) [#43366](https://github.com/nodejs/node/pull/43366) +* \[[`4ff1c32f44`](https://github.com/nodejs/node/commit/4ff1c32f44)] - **test**: rename `test-eventtarget-whatwg-*.js` (Daeyeon Jeong) [#43467](https://github.com/nodejs/node/pull/43467) +* \[[`68a138333b`](https://github.com/nodejs/node/commit/68a138333b)] - **test**: mark test-worker-http2-stream-terminate flaky on Windows (Darshan Sen) [#43425](https://github.com/nodejs/node/pull/43425) +* \[[`6fcb349fda`](https://github.com/nodejs/node/commit/6fcb349fda)] - _**Revert**_ "**test**: mark test\_buffer/test\_finalizer flaky" (Matteo Collina) [#43418](https://github.com/nodejs/node/pull/43418) +* \[[`38336403d2`](https://github.com/nodejs/node/commit/38336403d2)] - **test**: make node-api/test\_buffer/test\_finalizer not flaky (Matteo Collina) [#43418](https://github.com/nodejs/node/pull/43418) +* \[[`8e5e5a10c1`](https://github.com/nodejs/node/commit/8e5e5a10c1)] - **test**: reduce flakiness of `test-fs-read-position-validation.mjs` (LiviaMedeiros) [#42999](https://github.com/nodejs/node/pull/42999) +* \[[`b750ff1452`](https://github.com/nodejs/node/commit/b750ff1452)] - **test**: remove the legacy url parser function (Kohei Ueno) [#42656](https://github.com/nodejs/node/pull/42656) +* \[[`01c9f5b2ae`](https://github.com/nodejs/node/commit/01c9f5b2ae)] - **test**: only skip slow tests on Raspberry Pi devices (Richard Lau) [#42645](https://github.com/nodejs/node/pull/42645) +* \[[`d2a615f31d`](https://github.com/nodejs/node/commit/d2a615f31d)] - **test**: fix typos in test/parallel (Daeyeon Jeong) [#42502](https://github.com/nodejs/node/pull/42502) +* \[[`147f99c42c`](https://github.com/nodejs/node/commit/147f99c42c)] - **test**: improve code coverage for streams/duplexify (Erick Wendel) [#41862](https://github.com/nodejs/node/pull/41862) +* \[[`339d2e1282`](https://github.com/nodejs/node/commit/339d2e1282)] - **test**: remove unused argument in test-util-inspect.js (Colin Ihrig) [#43395](https://github.com/nodejs/node/pull/43395) +* \[[`f49d66be2e`](https://github.com/nodejs/node/commit/f49d66be2e)] - **test**: mark test\_buffer/test\_finalizer flaky (Michael Dawson) [#43414](https://github.com/nodejs/node/pull/43414) +* \[[`36f16728a5`](https://github.com/nodejs/node/commit/36f16728a5)] - **test**: fix address in use error (Caleb Everett) [#43199](https://github.com/nodejs/node/pull/43199) +* \[[`cd1c1d53e8`](https://github.com/nodejs/node/commit/cd1c1d53e8)] - **test**: fix `common.mustNotCall` error message (Antoine du Hamel) [#42917](https://github.com/nodejs/node/pull/42917) +* \[[`b72b217dec`](https://github.com/nodejs/node/commit/b72b217dec)] - **test**: convert then to async/await (Meek Simbule) [#43292](https://github.com/nodejs/node/pull/43292) +* \[[`94f60ec0f3`](https://github.com/nodejs/node/commit/94f60ec0f3)] - **test**: add `BigInt`s to `common.getArrayBufferViews()` (LiviaMedeiros) [#43235](https://github.com/nodejs/node/pull/43235) +* \[[`fa70c99564`](https://github.com/nodejs/node/commit/fa70c99564)] - **test**: improve code coverage for inspector connection errors (Kohei Ueno) [#42310](https://github.com/nodejs/node/pull/42310) +* \[[`43e55c6380`](https://github.com/nodejs/node/commit/43e55c6380)] - **test**: use mustSucceed instead of mustCall with assert.ifError (MURAKAMI Masahiko) [#43188](https://github.com/nodejs/node/pull/43188) +* \[[`79b6a8cc4a`](https://github.com/nodejs/node/commit/79b6a8cc4a)] - **test**: improve readline/emitKeypressEvents.js coverage (OneNail) [#42908](https://github.com/nodejs/node/pull/42908) +* \[[`c37c8723b0`](https://github.com/nodejs/node/commit/c37c8723b0)] - **test**: fix dangerous .map in `test/parallel/test-http-set-trailers.js` (LiviaMedeiros) [#43087](https://github.com/nodejs/node/pull/43087) +* \[[`c4d35b0941`](https://github.com/nodejs/node/commit/c4d35b0941)] - **test**: rename handlewrap.hasref tests (Daeyeon Jeong) [#42754](https://github.com/nodejs/node/pull/42754) +* \[[`41028fb0d6`](https://github.com/nodejs/node/commit/41028fb0d6)] - **test**: improve observable ICU behaviour coverage (LiviaMedeiros) [#42683](https://github.com/nodejs/node/pull/42683) +* \[[`53cbcf0202`](https://github.com/nodejs/node/commit/53cbcf0202)] - **test**: validate webstream encoder/decoder inspector (Yoshiki Kurihara) [#42747](https://github.com/nodejs/node/pull/42747) +* \[[`fc6456ed54`](https://github.com/nodejs/node/commit/fc6456ed54)] - **test**: use`mustSucceed` instead of `mustCall` with `assert.ifError` (MURAKAMI Masahiko) [#42806](https://github.com/nodejs/node/pull/42806) +* \[[`24c4f76873`](https://github.com/nodejs/node/commit/24c4f76873)] - **test**: improve `lib/internal/webstreams/readablestream.js` coverage (MURAKAMI Masahiko) [#42823](https://github.com/nodejs/node/pull/42823) +* \[[`eceb318796`](https://github.com/nodejs/node/commit/eceb318796)] - **test**: add test for position validation in fs.read() and fs.readSync() (LiviaMedeiros) [#42837](https://github.com/nodejs/node/pull/42837) +* \[[`1e473de619`](https://github.com/nodejs/node/commit/1e473de619)] - **test**: add tests for extracting function name (Kohei Ueno) [#42399](https://github.com/nodejs/node/pull/42399) +* \[[`4a68984fa6`](https://github.com/nodejs/node/commit/4a68984fa6)] - **test**: simplify test-gc-{http-client,net}-\* (Luigi Pinca) [#42782](https://github.com/nodejs/node/pull/42782) +* \[[`64097a4fdd`](https://github.com/nodejs/node/commit/64097a4fdd)] - **test**: check ecdsa psychic signature (Filip Skokan) [#42863](https://github.com/nodejs/node/pull/42863) +* \[[`53fb735bfa`](https://github.com/nodejs/node/commit/53fb735bfa)] - **test**: fix port in net-perf\_hooks (LiviaMedeiros) [#42761](https://github.com/nodejs/node/pull/42761) +* \[[`3d9975e932`](https://github.com/nodejs/node/commit/3d9975e932)] - **test**: skip test that cannot pass under --node-builtin-modules-path (Geoffrey Booth) [#42834](https://github.com/nodejs/node/pull/42834) +* \[[`6e0c0768de`](https://github.com/nodejs/node/commit/6e0c0768de)] - **test**: fix calculations in test-worker-resource-limits (Joyee Cheung) [#42702](https://github.com/nodejs/node/pull/42702) +* \[[`f67c53f778`](https://github.com/nodejs/node/commit/f67c53f778)] - **test**: improve test coverage of internal/blob (Yoshiki Kurihara) [#41513](https://github.com/nodejs/node/pull/41513) +* \[[`2db988a20e`](https://github.com/nodejs/node/commit/2db988a20e)] - **test**: improve `internal/url.js` coverage (Yoshiki Kurihara) [#42650](https://github.com/nodejs/node/pull/42650) +* \[[`a38c122685`](https://github.com/nodejs/node/commit/a38c122685)] - **test**: allow numeric string for lookupService test (Daeyeon Jeong) [#42596](https://github.com/nodejs/node/pull/42596) +* \[[`11650df453`](https://github.com/nodejs/node/commit/11650df453)] - **test**: remove an unnecessary `undefined` in wpt (Khaidi Chu) [#41470](https://github.com/nodejs/node/pull/41470) +* \[[`faebca4459`](https://github.com/nodejs/node/commit/faebca4459)] - **test**: simplify test-http-write-callbacks.js (Tobias Nießen) [#42628](https://github.com/nodejs/node/pull/42628) +* \[[`9e945439a5`](https://github.com/nodejs/node/commit/9e945439a5)] - **test**: pass data into napi\_create\_external (Joyee Cheung) [#42532](https://github.com/nodejs/node/pull/42532) +* \[[`a7b865ca8d`](https://github.com/nodejs/node/commit/a7b865ca8d)] - **test**: improve `FileHandle.prototype.write` coverage (Antoine du Hamel) [#42541](https://github.com/nodejs/node/pull/42541) +* \[[`82d5e57ac0`](https://github.com/nodejs/node/commit/82d5e57ac0)] - **test**: add test for exception handlings in debugger (Kohei Ueno) [#42327](https://github.com/nodejs/node/pull/42327) +* \[[`b51e5fe06f`](https://github.com/nodejs/node/commit/b51e5fe06f)] - **test**: fix typo in common/wpt.js (Ikko Ashimine) [#42567](https://github.com/nodejs/node/pull/42567) +* \[[`bc60c5d902`](https://github.com/nodejs/node/commit/bc60c5d902)] - **test**: add trace-gc flag test (Tony Gorez) [#42471](https://github.com/nodejs/node/pull/42471) +* \[[`1641ff5db7`](https://github.com/nodejs/node/commit/1641ff5db7)] - **test,fs**: add fs.rm() tests for .git directories (Darshan Sen) [#42410](https://github.com/nodejs/node/pull/42410) +* \[[`3e33e905a8`](https://github.com/nodejs/node/commit/3e33e905a8)] - **tools**: report unsafe string and regex primordials as lint errors (Antoine du Hamel) [#43393](https://github.com/nodejs/node/pull/43393) +* \[[`1d09407840`](https://github.com/nodejs/node/commit/1d09407840)] - **tools**: add `avoid-prototype-pollution` lint rule (Antoine du Hamel) [#43308](https://github.com/nodejs/node/pull/43308) +* \[[`e9b647a288`](https://github.com/nodejs/node/commit/e9b647a288)] - **tools**: add more options to track flaky tests (Antoine du Hamel) [#43954](https://github.com/nodejs/node/pull/43954) +* \[[`01a44348e0`](https://github.com/nodejs/node/commit/01a44348e0)] - **tools**: add verbose flag to inactive TSC finder (Rich Trott) [#43913](https://github.com/nodejs/node/pull/43913) +* \[[`420c9bb084`](https://github.com/nodejs/node/commit/420c9bb084)] - **tools**: add support for using API key to vuln checking script (Facundo Tuesca) [#43909](https://github.com/nodejs/node/pull/43909) +* \[[`7145125051`](https://github.com/nodejs/node/commit/7145125051)] - **tools**: support versioned node shared libs on z/OS (alexcfyung) [#42256](https://github.com/nodejs/node/pull/42256) +* \[[`ff20308475`](https://github.com/nodejs/node/commit/ff20308475)] - **tools**: update doc to highlight.js\@11.6.0 (Node.js GitHub Bot) [#43870](https://github.com/nodejs/node/pull/43870) +* \[[`51643323ba`](https://github.com/nodejs/node/commit/51643323ba)] - **tools**: update lint-md-dependencies to rollup\@2.77.0 (Node.js GitHub Bot) [#43871](https://github.com/nodejs/node/pull/43871) +* \[[`b57758b710`](https://github.com/nodejs/node/commit/b57758b710)] - **tools**: update eslint to 8.20.0 (Node.js GitHub Bot) [#43873](https://github.com/nodejs/node/pull/43873) +* \[[`5fd26da477`](https://github.com/nodejs/node/commit/5fd26da477)] - **tools**: add script for vulnerability checking (Facundo Tuesca) [#43362](https://github.com/nodejs/node/pull/43362) +* \[[`987efcb504`](https://github.com/nodejs/node/commit/987efcb504)] - **tools**: remove rpm build scripts (Ben Noordhuis) [#43647](https://github.com/nodejs/node/pull/43647) +* \[[`4a2422ae38`](https://github.com/nodejs/node/commit/4a2422ae38)] - **tools**: update lint-md-dependencies to rollup\@2.76.0 (Node.js GitHub Bot) [#43749](https://github.com/nodejs/node/pull/43749) +* \[[`8a69cdaa65`](https://github.com/nodejs/node/commit/8a69cdaa65)] - **tools**: refactor `tools/license2rtf` to ESM (Feng Yu) [#43232](https://github.com/nodejs/node/pull/43232) +* \[[`d39fd4e5ce`](https://github.com/nodejs/node/commit/d39fd4e5ce)] - **tools**: update eslint to 8.19.0 (Node.js GitHub Bot) [#43662](https://github.com/nodejs/node/pull/43662) +* \[[`d615f3b181`](https://github.com/nodejs/node/commit/d615f3b181)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#43572](https://github.com/nodejs/node/pull/43572) +* \[[`a5089c9b6d`](https://github.com/nodejs/node/commit/a5089c9b6d)] - **tools**: fix CJS/ESM toggle on small screens (Antoine du Hamel) [#43506](https://github.com/nodejs/node/pull/43506) +* \[[`aeffe5f956`](https://github.com/nodejs/node/commit/aeffe5f956)] - **tools**: update main branch name (Feng Yu) [#43440](https://github.com/nodejs/node/pull/43440) +* \[[`d9a4a8519e`](https://github.com/nodejs/node/commit/d9a4a8519e)] - **tools**: update lint-md-dependencies to rollup\@2.75.6 (Node.js GitHub Bot) [#43386](https://github.com/nodejs/node/pull/43386) +* \[[`29976a356b`](https://github.com/nodejs/node/commit/29976a356b)] - **tools**: update eslint to 8.18.0 (Node.js GitHub Bot) [#43479](https://github.com/nodejs/node/pull/43479) +* \[[`2ceb19dbc2`](https://github.com/nodejs/node/commit/2ceb19dbc2)] - **tools**: fix `create-or-update-pull-request-action` hash on GHA (Antoine du Hamel) [#43378](https://github.com/nodejs/node/pull/43378) +* \[[`ddea965f48`](https://github.com/nodejs/node/commit/ddea965f48)] - **tools**: fix find-inactive actions (LiviaMedeiros) [#43377](https://github.com/nodejs/node/pull/43377) +* \[[`7730f0cb81`](https://github.com/nodejs/node/commit/7730f0cb81)] - **tools**: update lint-md-dependencies to rollup\@2.75.5 (Node.js GitHub Bot) [#43313](https://github.com/nodejs/node/pull/43313) +* \[[`e6dbdb19b5`](https://github.com/nodejs/node/commit/e6dbdb19b5)] - **tools**: update eslint to 8.17.0 (Node.js GitHub Bot) [#43314](https://github.com/nodejs/node/pull/43314) +* \[[`2bd60b1fad`](https://github.com/nodejs/node/commit/2bd60b1fad)] - **tools**: use hashes instead of tags for external actions (#43284) (Antoine du Hamel) [#43284](https://github.com/nodejs/node/pull/43284) +* \[[`ab45ba5f92`](https://github.com/nodejs/node/commit/ab45ba5f92)] - **tools**: update `codecov/codecov-action` version (Antoine du Hamel) [#43297](https://github.com/nodejs/node/pull/43297) +* \[[`276dff1523`](https://github.com/nodejs/node/commit/276dff1523)] - **tools**: update lint-md-dependencies to rollup\@2.75.3 (Node.js GitHub Bot) [#43261](https://github.com/nodejs/node/pull/43261) +* \[[`9c03ddb731`](https://github.com/nodejs/node/commit/9c03ddb731)] - **tools**: update clang-format 1.7.0 to 1.8.0 (Darshan Sen) [#43241](https://github.com/nodejs/node/pull/43241) +* \[[`5a9047eb6b`](https://github.com/nodejs/node/commit/5a9047eb6b)] - **tools**: update lint-md-dependencies to rollup\@2.75.1 (Node.js GitHub Bot) [#43230](https://github.com/nodejs/node/pull/43230) +* \[[`4f7c7d260b`](https://github.com/nodejs/node/commit/4f7c7d260b)] - **tools**: refactor build-addons.js to ESM (Feng Yu) [#43099](https://github.com/nodejs/node/pull/43099) +* \[[`4817b1ff1b`](https://github.com/nodejs/node/commit/4817b1ff1b)] - **tools**: update lint-md-dependencies to rollup\@2.74.1 (Node.js GitHub Bot) [#43172](https://github.com/nodejs/node/pull/43172) +* \[[`c89512a5c7`](https://github.com/nodejs/node/commit/c89512a5c7)] - **tools**: update eslint to 8.16.0 (Node.js GitHub Bot) [#43174](https://github.com/nodejs/node/pull/43174) +* \[[`3bb46f9cd9`](https://github.com/nodejs/node/commit/3bb46f9cd9)] - **tools**: refactor update-authors.js to ESM (Feng Yu) [#43098](https://github.com/nodejs/node/pull/43098) +* \[[`3fa2c3ce85`](https://github.com/nodejs/node/commit/3fa2c3ce85)] - **tools**: update lint-md-dependencies to rollup\@2.73.0 (Node.js GitHub Bot) [#43107](https://github.com/nodejs/node/pull/43107) +* \[[`4b82cb66ed`](https://github.com/nodejs/node/commit/4b82cb66ed)] - **tools**: update eslint to 8.15.0 (Node.js GitHub Bot) [#43005](https://github.com/nodejs/node/pull/43005) +* \[[`54e36f5883`](https://github.com/nodejs/node/commit/54e36f5883)] - **tools**: refactor lint-sh.js to esm module (Feng Yu) [#42942](https://github.com/nodejs/node/pull/42942) +* \[[`1e7d6bd99c`](https://github.com/nodejs/node/commit/1e7d6bd99c)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#43003](https://github.com/nodejs/node/pull/43003) +* \[[`7b6ed2cec9`](https://github.com/nodejs/node/commit/7b6ed2cec9)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#42932](https://github.com/nodejs/node/pull/42932) +* \[[`e8ef4f2b47`](https://github.com/nodejs/node/commit/e8ef4f2b47)] - **tools**: bump jsdoccomment from 0.22.1 to 0.29.0 (Rich Trott) [#42857](https://github.com/nodejs/node/pull/42857) +* \[[`7a7491a8c2`](https://github.com/nodejs/node/commit/7a7491a8c2)] - **tools**: update eslint to 8.14.0 (Node.js GitHub Bot) [#42845](https://github.com/nodejs/node/pull/42845) +* \[[`a3d4579135`](https://github.com/nodejs/node/commit/a3d4579135)] - **tools**: update doc to highlight.js\@11.5.1 (Node.js GitHub Bot) [#42758](https://github.com/nodejs/node/pull/42758) +* \[[`f29a1a04ed`](https://github.com/nodejs/node/commit/f29a1a04ed)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#42759](https://github.com/nodejs/node/pull/42759) +* \[[`534369402c`](https://github.com/nodejs/node/commit/534369402c)] - **tools**: lint osx shell scripts (LiviaMedeiros) [#42712](https://github.com/nodejs/node/pull/42712) +* \[[`3370ef9c85`](https://github.com/nodejs/node/commit/3370ef9c85)] - **tools**: update clang-format 1.6.0 to 1.7.0 (Rich Trott) [#42724](https://github.com/nodejs/node/pull/42724) +* \[[`ed41eb2b0d`](https://github.com/nodejs/node/commit/ed41eb2b0d)] - **tools**: update clang-format from 1.2.3 to 1.6.0 (Rich Trott) [#42685](https://github.com/nodejs/node/pull/42685) +* \[[`9ba37645c3`](https://github.com/nodejs/node/commit/9ba37645c3)] - **tools**: update eslint to 8.13.0 (Node.js GitHub Bot) [#42678](https://github.com/nodejs/node/pull/42678) +* \[[`348876e964`](https://github.com/nodejs/node/commit/348876e964)] - **tools**: update gyp-next to v0.12.1 (Michaël Zasso) [#42625](https://github.com/nodejs/node/pull/42625) +* \[[`ec5548b3aa`](https://github.com/nodejs/node/commit/ec5548b3aa)] - **tools**: update lint-md-dependencies to @rollup/plugin-commonjs\@21.0.3 (Node.js GitHub Bot) [#42584](https://github.com/nodejs/node/pull/42584) +* \[[`36ddc6102f`](https://github.com/nodejs/node/commit/36ddc6102f)] - **tools**: enable no-var ESLint rule for lib (Rich Trott) [#42573](https://github.com/nodejs/node/pull/42573) +* \[[`282b449d90`](https://github.com/nodejs/node/commit/282b449d90)] - **tools**: fixed bug causing JSON format to be broken (mawaregetsuka) [#41565](https://github.com/nodejs/node/pull/41565) +* \[[`3a2aa0a862`](https://github.com/nodejs/node/commit/3a2aa0a862)] - **tools**: update GHA actions version (Antoine du Hamel) [#42498](https://github.com/nodejs/node/pull/42498) +* \[[`a176b81f46`](https://github.com/nodejs/node/commit/a176b81f46)] - **tools**: update eslint to 8.12.0 (Node.js GitHub Bot) [#42489](https://github.com/nodejs/node/pull/42489) +* \[[`5ba38bb1b0`](https://github.com/nodejs/node/commit/5ba38bb1b0)] - **tools**: update lint-md-dependencies to vfile-reporter\@7.0.4 (Node.js GitHub Bot) [#42487](https://github.com/nodejs/node/pull/42487) +* \[[`34386895f3`](https://github.com/nodejs/node/commit/34386895f3)] - **tools**: refloat 7 Node.js patches to cpplint.py (Rich Trott) [#42416](https://github.com/nodejs/node/pull/42416) +* \[[`5849f7628d`](https://github.com/nodejs/node/commit/5849f7628d)] - **tools**: bump cpplint to 1.6.0 (Rich Trott) [#42416](https://github.com/nodejs/node/pull/42416) +* \[[`4c0ddffaeb`](https://github.com/nodejs/node/commit/4c0ddffaeb)] - **tools**: fix skip PR if CI is still running (Xuguang Mei) [#42377](https://github.com/nodejs/node/pull/42377) +* \[[`31a738ffba`](https://github.com/nodejs/node/commit/31a738ffba)] - **tools**: make update-undici script executable (Michaël Zasso) [#42406](https://github.com/nodejs/node/pull/42406) +* \[[`b9ec3b4367`](https://github.com/nodejs/node/commit/b9ec3b4367)] - **tools,doc**: add guards against prototype pollution when creating proxies (Antoine du Hamel) [#43391](https://github.com/nodejs/node/pull/43391) +* \[[`54e7d0d723`](https://github.com/nodejs/node/commit/54e7d0d723)] - **typings**: fix `os.cpus` invalid return type (Himself65) [#43006](https://github.com/nodejs/node/pull/43006) + ## 2022-07-07, Version 16.16.0 'Gallium' (LTS), @danielleadams @@ -2801,6 +3601,7 @@ Contributed by Michaël Zasso - [#37587](https://github.com/nodejs/node/pull/375 * **deps**: update llhttp to 6.0.0 (Fedor Indutny) [#38277](https://github.com/nodejs/node/pull/38277) * **deps**: upgrade npm to 7.10.0 (Ruy Adorno) [#38254](https://github.com/nodejs/node/pull/38254) * **(SEMVER-MINOR)** **http**: add http.ClientRequest.getRawHeaderNames() (simov) [#37660](https://github.com/nodejs/node/pull/37660) +* **(SEMVER-MAJOR)** **http**: use `autoDestroy: true` in incoming message (Daniele Belardi) [#33035](https://github.com/nodejs/node/pull/33035) * **(SEMVER-MAJOR)** **lib,src**: update cluster to use Parent (Michael Dawson) [#36478](https://github.com/nodejs/node/pull/36478) * **(SEMVER-MINOR)** **module**: add support for `node:`‑prefixed `require(…)` calls (ExE Boss) [#37246](https://github.com/nodejs/node/pull/37246) * **(SEMVER-MINOR)** **perf\_hooks**: add histogram option to timerify (James M Snell) [#37475](https://github.com/nodejs/node/pull/37475) diff --git a/doc/contributing/backporting-to-release-lines.md b/doc/contributing/backporting-to-release-lines.md index 389c979e2eea67..d9dea5dbe2b06f 100644 --- a/doc/contributing/backporting-to-release-lines.md +++ b/doc/contributing/backporting-to-release-lines.md @@ -10,7 +10,7 @@ For the active staging branches see the [Release Schedule][]. ## What needs to be backported? -If a cherry-pick from master does not land cleanly on a staging branch, the +If a cherry-pick from `main` does not land cleanly on a staging branch, the releaser will mark the pull request with a particular label for that release line (e.g. `backport-requested-vN.x`), specifying to our tooling that this pull request should not be included. The releaser will then add a comment @@ -54,7 +54,7 @@ replace that with the staging branch for the targeted release line. ```bash # Assuming your fork of Node.js is checked out in $NODE_DIR, # the origin remote points to your fork, and the upstream remote points - # to git://github.com/nodejs/node + # to git@github.com:nodejs/node.git cd $NODE_DIR # If v10.x-staging is checked out `pull` should be used instead of `fetch` git fetch upstream v10.x-staging:v10.x-staging -f @@ -105,11 +105,14 @@ replace that with the staging branch for the targeted release line. 6. Run a [`node-test-pull-request`][] CI job (with `REBASE_ONTO` set to the default ``) -10. If during the review process conflicts arise, use the following to rebase: +10. Replace the `backport-requested-v10.x` label on the original pull request + with `backport-open-v10.x`. + +11. If during the review process conflicts arise, use the following to rebase: `git pull --rebase upstream v10.x-staging` -After the pull request lands, replace the `backport-requested-v10.x` label -on the original pull request with `backported-to-v10.x`. +After the pull request lands, replace the `backport-open-v10.x` label on the +original pull request with `backported-to-v10.x`. [Release Plan]: https://github.com/nodejs/Release#release-plan [Release Schedule]: https://github.com/nodejs/Release#release-schedule diff --git a/doc/contributing/building-node-with-ninja.md b/doc/contributing/building-node-with-ninja.md index 5231b73a8cdd6e..8aae340e227034 100644 --- a/doc/contributing/building-node-with-ninja.md +++ b/doc/contributing/building-node-with-ninja.md @@ -22,14 +22,14 @@ ninja: Entering directory `out/Release` The bottom line will change while building, showing the progress as `[finished/total]` build steps. This is useful output that `make` does not -produce and is one of the benefits of using Ninja. Also, Ninja will likely -compile much faster than even `make -j4` (or -`-j`). You can still pass the -number of processes to run for [Ninja][] using the environment variable `JOBS`. -This will be the equivalent to the `-j` parameter in the regular `make`: +produce and is one of the benefits of using Ninja. When using Ninja, builds +are always run in parallel, based by default on the number of CPUs your +system has. You can use the `-j` parameter to override this behavior, +which is equivalent to the `-j` parameter in the regular `make`: ```bash -JOBS=12 make +make -j4 # With this flag, Ninja will limit itself to 4 parallel jobs, + # regardless of the number of cores on the current machine. ``` ## Producing a debug build diff --git a/doc/contributing/collaborator-guide.md b/doc/contributing/collaborator-guide.md index 77e88f4a4571f6..c145ca8fce03df 100644 --- a/doc/contributing/collaborator-guide.md +++ b/doc/contributing/collaborator-guide.md @@ -22,7 +22,7 @@ * [Unintended breaking changes](#unintended-breaking-changes) * [Reverting commits](#reverting-commits) * [Introducing new modules](#introducing-new-modules) - * [Additions to Node-API](#additions-to-n-api) + * [Additions to Node-API](#additions-to-node-api) * [Deprecations](#deprecations) * [Involving the TSC](#involving-the-tsc) * [Landing pull requests](#landing-pull-requests) @@ -232,13 +232,13 @@ There are some other files that touch the build chain. Changes in the following files also qualify as affecting the `node` binary: * `tools/*.py` -* `tools/build-addons.js` +* `tools/build-addons.mjs` * `*.gyp` * `*.gypi` * `configure` * `configure.py` * `Makefile` -* `vcbuilt.bat` +* `vcbuild.bat` @@ -287,11 +287,11 @@ in the form: * `GIT_REMOTE_REF`: Change to the remote portion of git refspec. To specify the branch this way, `refs/heads/BRANCH` is used - (e.g. for `master` -> `refs/heads/master`). + (e.g. for `main` -> `refs/heads/main`). For pull requests, it will look like `refs/pull/PR_NUMBER/head` (e.g. for pull request #42 -> `refs/pull/42/head`). -* `REBASE_ONTO`: Change that to `origin/master` so the pull request gets rebased - onto master. This can especially be important for pull requests that have been +* `REBASE_ONTO`: Change that to `origin/main` so the pull request gets rebased + onto `main`. This can especially be important for pull requests that have been open a while. Look at the list of jobs on the left hand side under "Build History" and copy @@ -337,7 +337,7 @@ For undocumented APIs that are public, open a pull request documenting the API. ### Breaking changes At least two TSC members must approve backward-incompatible changes to the -master branch. +`main` branch. Examples of breaking changes include: @@ -373,7 +373,7 @@ providing a Public API in such cases. #### Unintended breaking changes Sometimes, a change intended to be non-breaking turns out to be a breaking -change. If such a change lands on the master branch, a collaborator can revert +change. If such a change lands on the `main` branch, a collaborator can revert it. As an alternative to reverting, the TSC can apply the semver-major label after-the-fact. @@ -462,7 +462,7 @@ duration. Communicate pending deprecations and associated mitigations with the ecosystem as soon as possible. If possible, do it before the pull request adding the -deprecation lands on the master branch. +deprecation lands on the `main` branch. Use the `notable-change` label on pull requests that add or change the deprecation level of an API. @@ -554,7 +554,7 @@ $ git rebase --abort Checkout proper target branch: ```text -$ git checkout master +$ git checkout main ``` Update the tree (assumes your repository is set up as detailed in @@ -562,7 +562,7 @@ Update the tree (assumes your repository is set up as detailed in ```text $ git fetch upstream -$ git merge --ff-only upstream/master +$ git merge --ff-only upstream/main ``` Apply external patches: @@ -588,19 +588,19 @@ has landed since the CI run. You will have to ask the author to rebase. Check and re-review the changes: ```text -$ git diff upstream/master +$ git diff upstream/main ``` Check the number of commits and commit messages: ```text -$ git log upstream/master...master +$ git log upstream/main...main ``` Squash commits and add metadata: ```text -$ git rebase -i upstream/master +$ git rebase -i upstream/main ``` This will open a screen like this (in the default shell editor): @@ -670,19 +670,19 @@ for that commit. This is an opportunity to fix commit messages. pull request. * Protects against the assumption that GitHub will be around forever. -Other changes might have landed on master since the successful CI run. As a +Other changes might have landed on `main` since the successful CI run. As a precaution, run tests (`make -j4 test` or `vcbuild test`). Confirm that the commit message format is correct using [core-validate-commit](https://github.com/nodejs/core-validate-commit). ```text -$ git rev-list upstream/master...HEAD | xargs core-validate-commit +$ git rev-list upstream/main...HEAD | xargs core-validate-commit ``` Optional: For your own commits, force push the amended commit to the pull request branch. If your branch name is `bugfix`, then: -`git push --force-with-lease origin master:bugfix`. Don't close the pull +`git push --force-with-lease origin main:bugfix`. Don't close the pull request. It will close after you push it upstream. It will have the purple merged status rather than the red closed status. If you close the pull request before GitHub adjusts its status, it will show up as a 0 commit pull @@ -693,7 +693,7 @@ the issue with the red closed status. Time to push it: ```text -$ git push upstream master +$ git push upstream main ``` Close the pull request with a "Landed in ``" comment. Even if @@ -705,12 +705,12 @@ more than one commit. ### Troubleshooting -Sometimes, when running `git push upstream master`, you might get an error +Sometimes, when running `git push upstream main`, you might get an error message like this: ```console To https://github.com/nodejs/node - ! [rejected] master -> master (fetch first) + ! [rejected] main -> main (fetch first) error: failed to push some refs to 'https://github.com/nodejs/node' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. @@ -718,14 +718,14 @@ hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. ``` -That means a commit has landed since your last rebase against `upstream/master`. +That means a commit has landed since your last rebase against `upstream/main`. To fix this, pull with rebase from upstream, run the tests again, and (if the tests pass) push again: ```bash -git pull upstream master --rebase +git pull upstream main --rebase make -j4 test -git push upstream master +git push upstream main ``` ### I made a mistake @@ -755,7 +755,7 @@ the branch. Each LTS release has a corresponding branch (v10.x, v8.x, etc.). Each also has a corresponding staging branch (v10.x-staging, v8.x-staging, etc.). -Commits that land on master are cherry-picked to each staging branch as +Commits that land on `main` are cherry-picked to each staging branch as appropriate. If a change applies only to the LTS branch, open the pull request against the _staging_ branch. Commits from the staging branch land on the LTS branch only when a release is being prepared. They might land on the LTS branch @@ -790,46 +790,46 @@ might impact an LTS release. ## Who to CC in the issue tracker -| Subsystem | Maintainers | -| -------------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `benchmark/*` | @nodejs/benchmarking, @mscdex | -| `doc/*`, `*.md` | @nodejs/documentation | -| `lib/assert` | @nodejs/assert | -| `lib/async_hooks` | @nodejs/async\_hooks for bugs/reviews (+ @nodejs/diagnostics for API) | -| `lib/buffer` | @nodejs/buffer | -| `lib/child_process` | @nodejs/child\_process | -| `lib/cluster` | @nodejs/cluster | -| `lib/{crypto,tls,https}` | @nodejs/crypto | -| `lib/dgram` | @nodejs/dgram | -| `lib/domains` | @nodejs/domains | -| `lib/fs`, `src/{fs,file}` | @nodejs/fs | -| `lib/{_}http{*}` | @nodejs/http | -| `lib/inspector.js`, `src/inspector_*` | @nodejs/v8-inspector | -| `lib/internal/bootstrap/*` | @nodejs/process | -| `lib/internal/url`, `src/node_url` | @nodejs/url | -| `lib/net` | @bnoordhuis, @indutny, @nodejs/streams | -| `lib/repl` | @nodejs/repl | -| `lib/{_}stream{*}` | @nodejs/streams | -| `lib/timers` | @nodejs/timers | -| `lib/util` | @nodejs/util | -| `lib/zlib` | @nodejs/zlib | -| `src/async_wrap.*` | @nodejs/async\_hooks | -| `src/node_api.*` | @nodejs/node-api | -| `src/node_crypto.*` | @nodejs/crypto | -| `test/*` | @nodejs/testing | -| `tools/node_modules/eslint`, `.eslintrc` | @nodejs/linting | -| build | @nodejs/build | -| `src/module_wrap.*`, `lib/internal/modules/*`, `lib/internal/vm/module.js` | @nodejs/modules | -| GYP | @nodejs/gyp | -| performance | @nodejs/performance | -| platform specific | @nodejs/platform-{aix,arm,freebsd,macos,ppc,smartos,s390,windows} | -| python code | @nodejs/python | -| upgrading c-ares | @rvagg | -| upgrading http-parser | @nodejs/http, @nodejs/http2 | -| upgrading libuv | @nodejs/libuv | -| upgrading npm | @nodejs/npm | -| upgrading V8 | @nodejs/V8, @nodejs/post-mortem | -| Embedded use or delivery of Node.js | @nodejs/delivery-channels | +| Subsystem | Maintainers | +| -------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `benchmark/*` | @nodejs/benchmarking, @mscdex | +| `doc/*`, `*.md` | @nodejs/documentation | +| `lib/assert` | @nodejs/assert | +| `lib/async_hooks` | @nodejs/async\_hooks for bugs/reviews (+ @nodejs/diagnostics for API) | +| `lib/buffer` | @nodejs/buffer | +| `lib/child_process` | @nodejs/child\_process | +| `lib/cluster` | @nodejs/cluster | +| `lib/{crypto,tls,https}` | @nodejs/crypto | +| `lib/dgram` | @nodejs/dgram | +| `lib/domains` | @nodejs/domains | +| `lib/fs`, `src/{fs,file}` | @nodejs/fs | +| `lib/{_}http{*}` | @nodejs/http | +| `lib/inspector.js`, `src/inspector_*` | @nodejs/v8-inspector | +| `lib/internal/bootstrap/*` | @nodejs/process | +| `lib/internal/url`, `src/node_url` | @nodejs/url | +| `lib/net` | @bnoordhuis, @indutny, @nodejs/streams | +| `lib/repl` | @nodejs/repl | +| `lib/{_}stream{*}` | @nodejs/streams | +| `lib/timers` | @nodejs/timers | +| `lib/util` | @nodejs/util | +| `lib/zlib` | @nodejs/zlib | +| `src/async_wrap.*` | @nodejs/async\_hooks | +| `src/node_api.*` | @nodejs/node-api | +| `src/node_crypto.*`, `src/crypto` | @nodejs/crypto | +| `test/*` | @nodejs/testing | +| `tools/node_modules/eslint`, `.eslintrc` | @nodejs/linting | +| build | @nodejs/build | +| `src/module_wrap.*`, `lib/internal/modules/*`, `lib/internal/vm/module.js` | @nodejs/modules | +| GYP | @nodejs/gyp | +| performance | @nodejs/performance | +| platform specific | @nodejs/platform-{aix,arm,freebsd,macos,ppc,smartos,s390,windows,windows-arm} | +| python code | @nodejs/python | +| upgrading c-ares | @rvagg | +| upgrading http-parser | @nodejs/http, @nodejs/http2 | +| upgrading libuv | @nodejs/libuv | +| upgrading npm | @nodejs/npm | +| upgrading V8 | @nodejs/V8, @nodejs/post-mortem | +| Embedded use or delivery of Node.js | @nodejs/delivery-channels | When things need extra attention, are controversial, or `semver-major`: @nodejs/tsc @@ -901,7 +901,7 @@ We use labels to keep track of which branches a commit should land on: * (for example semver-minor changes that need or should go into an LTS release) * `v?.x` - * Automatically applied to changes that do not target `master` but rather the + * Automatically applied to changes that do not target `main` but rather the `v?.x-staging` branch Once a release line enters maintenance mode, the corresponding labels do not diff --git a/doc/contributing/commit-queue.md b/doc/contributing/commit-queue.md index edb9c7ad4a877f..4730d0889e99aa 100644 --- a/doc/contributing/commit-queue.md +++ b/doc/contributing/commit-queue.md @@ -8,7 +8,7 @@ Commit Queue is an experimental feature for the project which simplifies the landing process by automating it via GitHub Actions. With it, collaborators can land pull requests by adding the `commit-queue` label to a PR. All checks will run via node-core-utils, and if the pull request is ready to land, -the Action will rebase it and push to master. +the Action will rebase it and push to `main`. This document gives an overview of how the Commit Queue works, as well as implementation details, reasoning for design choices, and current limitations. @@ -50,7 +50,7 @@ work for more complex pull requests. These are the currently known limitations of the commit queue: 1. All commits in a pull request must either be following commit message - guidelines or be a valid [`fixup!`](https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---fixupltcommitgt) + guidelines or be a valid [`fixup!`](https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---fixupamendrewordltcommitgt) commit that will be correctly handled by the [`--autosquash`](https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt---autosquash) option 2. A CI must've ran and succeeded since the last change on the PR @@ -108,7 +108,7 @@ forwarding stdout and stderr to a file. If any errors happen, to the PR, as well as a comment with the output of `git node land`. If no errors happen during `git node land`, the script will use the -`GITHUB_TOKEN` to push the changes to `master`, and then will leave a +`GITHUB_TOKEN` to push the changes to `main`, and then will leave a `Landed in ...` comment in the PR, and then will close it. Iteration continues until all PRs have done the steps above. diff --git a/doc/contributing/cpp-style-guide.md b/doc/contributing/cpp-style-guide.md index 64d0efee911e9d..ea2a66d34e89b7 100644 --- a/doc/contributing/cpp-style-guide.md +++ b/doc/contributing/cpp-style-guide.md @@ -51,7 +51,7 @@ tools. ## Formatting -Unfortunately, the C++ linter (based on [Google’s `cpplint`][]), which can be +Unfortunately, the C++ linter (based on [Google's `cpplint`][]), which can be run explicitly via `make lint-cpp`, does not currently catch a lot of rules that are specific to the Node.js C++ code base. This document explains the most common of these rules: @@ -117,7 +117,7 @@ void FunctionWithAVeryLongName(int parameter_with_a_very_long_name, ...); ``` -If that doesn’t work, break after the `(` and use 4 spaces of indentation: +If that doesn't work, break after the `(` and use 4 spaces of indentation: ```cpp void FunctionWithAReallyReallyReallyLongNameSeriouslyStopIt( @@ -397,7 +397,7 @@ even `try` and `catch` **will** break. [ES.48]: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-casts [ES.49]: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-casts-named [Google C++ Style Guide]: https://google.github.io/styleguide/cppguide.html -[Google’s `cpplint`]: https://github.com/google/styleguide +[Google's `cpplint`]: https://github.com/google/styleguide [R.20]: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-owner [R.21]: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-unique [Run Time Type Information]: https://en.wikipedia.org/wiki/Run-time_type_information diff --git a/doc/contributing/diagnostic-tooling-support-tiers.md b/doc/contributing/diagnostic-tooling-support-tiers.md index 556c87e6a95493..38039e98d2bfbe 100644 --- a/doc/contributing/diagnostic-tooling-support-tiers.md +++ b/doc/contributing/diagnostic-tooling-support-tiers.md @@ -9,12 +9,12 @@ The Node.js project has assessed the tools and the APIs which support those tools. Each of the tools and APIs has been put into one of the following tiers. -* Tier 1 - Must always be working(CI tests passing) for all +* Tier 1 - Must always be working (CI tests passing) for all Current and LTS Node.js releases. A release will not be shipped if the test suite for the tool/API is not green. To be considered for inclusion in this tier it must have a good test suite and that test suite and a job must exist in the Node.js CI so that it can be run as part of the release - process. Tests on master will be run nightly when possible to provide + process. Tests on `main` will be run nightly when possible to provide early warning of potential issues. No commit to the current and LTS release branches should break this tool/API if the next major release is within 1 month. In addition: @@ -29,7 +29,7 @@ the following tiers. its dependencies; and * The tool must be open source. -* Tier 2 - Must be working(CI tests passing) for all +* Tier 2 - Must be working (CI tests passing) for all LTS releases. An LTS release will not be shipped if the test suite for the tool/API is not green. To be considered for inclusion in this tier it must have a good test suite and that test suite and a job @@ -93,10 +93,10 @@ The tools are currently assigned to Tiers as follows: ## Tier 1 -| Tool Type | Tool/API Name | Regular Testing in Node.js CI | Integrated with Node.js | Target Tier | -| --------- | ----------------- | ----------------------------- | ----------------------- | ----------- | -| FFDC | diagnostic report | Yes | Yes | 1 | -| | | | | | +| Tool Type | Tool/API Name | Regular Testing in Node.js CI | Integrated with Node.js | Target Tier | +| --------- | --------------------- | ----------------------------- | ----------------------- | ----------- | +| FFDC | [diagnostic report][] | Yes | Yes | 1 | +| | | | | | ## Tier 2 @@ -112,37 +112,34 @@ The tools are currently assigned to Tiers as follows: | Profiling | --prof/--prof-process flags | Yes | Yes | 1 | | Profiling | V8 CodeEventHandler API | Partial (V8 Tests) | Yes | 2 | | Profiling | V8 --interpreted-frames-native-stack | Yes | Yes | 2 | -| Profiling | Linux perf | Yes | Partial | 2 | +| Profiling | [Linux perf][] | Yes | Partial | 2 | +| Profiling | [node-clinic][] | No | No | 3 | +| Debugger | [Chrome Dev tools][] | No | No | 3 | ## Tier 4 | Tool Type | Tool/API Name | Regular Testing in Node.js CI | Integrated with Node.js | Target Tier | | --------- | ------------- | ----------------------------- | ----------------------- | ----------- | -| | | | | | +| Profiling | [0x][] | No | No | 3 | ## Not yet classified -| Tool Type | Tool/API Name | Regular Testing in Node.js CI | Integrated with Node.js | Target Tier | -| --------- | ------------------------- | ----------------------------- | ----------------------- | ----------- | -| FFDC | node-report | No | No | 1 | -| Memory | mdb\_V8 | No | No | 4 | -| Memory | node-heapdump | No | No | 2 | -| Memory | V8 heap profiler | No | Yes | 1 | -| Memory | V8 sampling heap profiler | No | Yes | 1 | -| AsyncFlow | Async Hooks (API) | ? | Yes | 1 | -| Debugger | V8 Debug protocol (API) | No | Yes | 1 | -| Debugger | Command line Debug Client | ? | Yes | 1 | -| Debugger | llnode | ? | No | 2 | -| Debugger | Chrome Dev tools | ? | No | 3 | -| Debugger | Chakracore - time-travel | No | Data source only | too early | -| Tracing | trace\_events (API) | No | Yes | 1 | -| Tracing | DTrace | No | Partial | 3 | -| Tracing | LTTng | No | Removed? | N/A | -| Tracing | ETW | No | Partial | 3 | -| Tracing | Systemtap | No | Partial | ? | -| Profiling | DTrace | No | Partial | 3 | -| Profiling | Windows Xperf | No | ? | ? | -| Profiling | 0x | No | No | 4 | -| Profiling | node-clinic | No | No | too early | -| F/P/T | appmetrics | No | No | ? | -| M/T | eBPF tracing tool | No | No | ? | +| Tool Type | Tool/API Name | Regular Testing in Node.js CI | Integrated with Node.js | Target Tier | +| --------- | ----------------------------------------- | ----------------------------- | ----------------------- | ----------- | +| Memory | V8 heap profiler | No | Yes | 1 | +| Memory | V8 sampling heap profiler | No | Yes | 1 | +| AsyncFlow | [Async Hooks (API)][] | ? | Yes | 1 | +| Debugger | V8 Debug protocol (API) | No | Yes | 1 | +| Debugger | [Command line Debug Client][] | ? | Yes | 1 | +| Tracing | [trace\_events (API)][trace_events (API)] | No | Yes | 1 | +| Tracing | trace\_gc | No | Yes | 1 | +| M/T | eBPF tracing tool | No | No | ? | + +[0x]: https://github.com/davidmarkclements/0x +[Async Hooks (API)]: https://nodejs.org/api/async_hooks.html +[Chrome Dev Tools]: https://developer.chrome.com/docs/devtools/ +[Command line Debug Client]: https://nodejs.org/api/inspector.html +[Linux perf]: https://perf.wiki.kernel.org/index.php/Main_Page +[diagnostic report]: https://nodejs.org/api/report.html +[node-clinic]: https://github.com/clinicjs/node-clinic/ +[trace_events (API)]: https://nodejs.org/api/tracing.html diff --git a/doc/contributing/investigating-native-memory-leaks.md b/doc/contributing/investigating-native-memory-leaks.md index f9345b092737fa..17389c6bc91a7e 100644 --- a/doc/contributing/investigating-native-memory-leaks.md +++ b/doc/contributing/investigating-native-memory-leaks.md @@ -101,7 +101,7 @@ Leaks can be introduced in native addons and the following is a simple example leak based on the "Hello world" addon from [node-addon-examples](https://github.com/nodejs/node-addon-examples). -In this example, a loop which allocates approximately 1 MB of memory and never +In this example, a loop which allocates approximately 1 MiB of memory and never frees it has been added: ```cpp diff --git a/doc/contributing/maintaining-V8.md b/doc/contributing/maintaining-V8.md index 339cda49488600..0143cf1c7720f5 100644 --- a/doc/contributing/maintaining-V8.md +++ b/doc/contributing/maintaining-V8.md @@ -208,6 +208,64 @@ backport the fix: Abandoned V8 branches are supported in the Node.js repository. The fix needs to be cherry-picked in the Node.js repository and V8-CI must test the change. +As an example for how to backport changes, consider the bug +[RegExp show inconsistent result with other browsers](https://crbug.com/v8/5199). +From the bug we can see that it was merged by V8 into 5.2 and 5.3, and not into +V8 5.1 (since it was already abandoned). Since Node.js `v6.x` uses V8 5.1, the +fix needed to be backported. + +#### Backporting with `git-node` (recommended) + +You can use [`git-node`][] to help you backport patches. This removes +some manual steps and is recommended. + +Here are the steps for the bug mentioned above: + +1. Install `git-node` by installing [`node-core-utils`][]. +2. Install the prerequisites for [`git-node-v8`][]. +3. Find the commit hash linked-to in the issue (in this case a51f429). +4. Checkout a branch off the appropriate _vY.x-staging_ branch (e.g. + _v6.x-staging_ to fix an issue in V8 5.1). +5. Run `git node v8 backport a51f429`. +6. If there are conflicts, `git-node` will wait for you to resolve them: + +```console +$ git node v8 backport a51f429 +✔ Update local V8 clone +❯ V8 commit backport + ✔ Get current V8 version + ✔ Generate patches + ❯ Apply and commit patches to deps/v8 + ❯ Commit a51f429772d1 + ⠏ Apply patch + ◼ Increment embedder version number + ◼ Commit patch + +? Resolve merge conflicts and enter 'RESOLVED' ‣ +``` + +Resolve conflicts, stage the files (you may need to open another terminal or use +a GUI git client), then return to the terminal running `git-node`, type +`RESOLVED`, and hit Enter. + +7. After you resolve conflicts (or if there are no conflicts), the + output should look like this: + +```console +$ git node v8 backport a51f429 +✔ Update local V8 clone +✔ V8 commit backport +``` + +8. Open a PR against the v6.x-staging branch in the Node.js repository. + Launch the normal and [V8 CI][] using the Node.js CI system. We only + needed to backport to v6.x as the other LTS branches weren't affected + by this bug. + +See [`git-node-v8-backport`][] for more documentation and additional options. + +#### Backporting manually + * For each abandoned V8 branch corresponding to an LTS branch that is affected by the bug: * Checkout a branch off the appropriate _vY.x-staging_ branch (e.g. @@ -224,14 +282,7 @@ to be cherry-picked in the Node.js repository and V8-CI must test the change. `tools/make-v8.sh` to reconstruct a git tree in the `deps/v8` directory to run V8 tests.[^2] -The [`git-node`][] tool can be used to simplify this task. Run -`git node v8 backport ` to cherry-pick a commit. - -An example for workflow how to cherry-pick consider the bug -[RegExp show inconsistent result with other browsers](https://crbug.com/v8/5199). -From the bug we can see that it was merged by V8 into 5.2 and 5.3, and not into -V8 5.1 (since it was already abandoned). Since Node.js `v6.x` uses V8 5.1, the -fix needed to be cherry-picked. To cherry-pick, here's an example workflow: +Here are the steps for the bug mentioned above: * Download and apply the commit linked-to in the issue (in this case a51f429): @@ -270,6 +321,7 @@ Refs: https://github.com/v8/v8/commit/a51f429772d1e796744244128c9feeab4c26a854 PR-URL: https://github.com/nodejs/node/pull/7833 ``` +* Increase the `v8_embedder_string` number in `common.gypi`. * Open a PR against the `v6.x-staging` branch in the Node.js repository. Launch the normal and [V8 CI][] using the Node.js CI system. We only needed to backport to `v6.x` as the other LTS branches weren't affected by this bug. @@ -322,16 +374,26 @@ compute the diff between these tags on the V8 repository, and then apply that patch on the copy of V8 in Node.js. This should preserve the patches/backports that Node.js may be floating (or else cause a merge conflict). +#### Applying minor updates with `git-node` (recommended) + +1. Install [`git-node`][] by installing [`node-core-utils`][]. +2. Install the prerequisites for [`git-node-v8`][]. +3. Run `git node v8 minor` to apply a minor update. + +See [`git-node-v8-minor`][] for more documentation and additional options. + +#### Applying minor updates manually + The rough outline of the process is: ```bash # Assuming your fork of Node.js is checked out in $NODE_DIR -# and you want to update the Node.js master branch. +# and you want to update the Node.js main branch. # Find the current (OLD) version in # $NODE_DIR/deps/v8/include/v8-version.h cd $NODE_DIR -git checkout master -git merge --ff-only origin/master +git checkout main +git merge --ff-only origin/main git checkout -b V8_NEW_VERSION curl -L https://github.com/v8/v8/compare/${V8_OLD_VERSION}...${V8_NEW_VERSION}.patch | git apply --directory=deps/v8 # You may want to amend the commit message to describe the nature of the update @@ -340,18 +402,15 @@ curl -L https://github.com/v8/v8/compare/${V8_OLD_VERSION}...${V8_NEW_VERSION}.p V8 also keeps tags of the form _5.4-lkgr_ which point to the _Last Known Good Revision_ from the 5.4 branch that can be useful in the update process above. -The [`git-node`][] tool can be used to simplify this task. Run `git node v8 minor` -to apply a minor update. - ### Major updates -We upgrade the version of V8 in Node.js master whenever a V8 release goes stable +We upgrade the version of V8 in Node.js `main` whenever a V8 release goes stable upstream, that is, whenever a new release of Chrome comes out. Upgrading major versions would be much harder to do with the patch mechanism above. A better strategy is to -1. Audit the current master branch and look at the patches that have been +1. Audit the current `main` branch and look at the patches that have been floated since the last major V8 update. 2. Replace the copy of V8 in Node.js with a fresh checkout of the latest stable V8 branch. Special care must be taken to recursively update the DEPS that V8 @@ -394,7 +453,7 @@ branches. This has several benefits: * The history of the V8 branch in `nodejs/v8` becomes purer and it would make it easier to pull in the V8 team for help with reviewing. * It would make it simpler to setup an automated build that tracks Node.js - master + V8 lkgr integration build. + `main` + V8 lkgr integration build. This would require some tooling to: @@ -425,8 +484,12 @@ This would require some tooling to: [NodeJS-Backport-Review-V8]: https://bugs.chromium.org/p/v8/issues/list?can=1&q=label%3ANodeJS-Backport-Review [V8 CI]: https://ci.nodejs.org/job/node-test-commit-v8-linux/ [V8ActiveBranches]: https://build.chromium.org/p/client.v8.branches/console -[V8Contributing]: https://github.com/v8/v8/wiki/Contributing -[V8MergingPatching]: https://github.com/v8/v8/wiki/Merging%20&%20Patching +[V8Contributing]: https://v8.dev/docs/contribute +[V8MergingPatching]: https://v8.dev/docs/merge-patch [V8TemplateMergeRequest]: https://bugs.chromium.org/p/v8/issues/entry?template=Node.js%20merge%20request [V8TemplateUpstreamBug]: https://bugs.chromium.org/p/v8/issues/entry?template=Node.js%20upstream%20bug +[`git-node-v8-backport`]: https://github.com/nodejs/node-core-utils/blob/main/docs/git-node.md#git-node-v8-backport-sha +[`git-node-v8-minor`]: https://github.com/nodejs/node-core-utils/blob/main/docs/git-node.md#git-node-v8-minor +[`git-node-v8`]: https://github.com/nodejs/node-core-utils/blob/HEAD/docs/git-node.md#git-node-v8 [`git-node`]: https://github.com/nodejs/node-core-utils/blob/HEAD/docs/git-node.md#git-node-v8 +[`node-core-utils`]: https://github.com/nodejs/node-core-utils#Install diff --git a/doc/contributing/maintaining-cjs-module-lexer.md b/doc/contributing/maintaining-cjs-module-lexer.md new file mode 100644 index 00000000000000..43dcfe0d2316d5 --- /dev/null +++ b/doc/contributing/maintaining-cjs-module-lexer.md @@ -0,0 +1,59 @@ +# Maintaining cjs-module-lexer + +The [cjs-module-lexer](https://github.com/nodejs/node/tree/HEAD/deps/cjs-module-lexer) +dependency is used within the Node.js ESM implementation to detect the +named exports of a CommonJS module. + +It is used within +[`node:internal/modules/esm/translators`](https://github.com/nodejs/node/blob/HEAD/lib/internal/modules/esm/translators.js) +in which both `internal/deps/cjs-module-lexer/lexer` and +`internal/deps/cjs-module-lexer/dist/lexer` are required and used. + +`internal/deps/cjs-module-lexer/lexer` +is a regular JavaScript implementation that is +used when WebAssembly is not available on a platform. +`internal/deps/cjs-module-lexer/dist/lexer` is a faster +implementation using WebAssembly which is generated from a +C based implementation. These two paths +resolve to the files in `deps/cjs-module-lexer` due to their +inclusion in the `deps_files` entry in +[node.gyp](https://github.com/nodejs/node/blob/main/node.gyp). + +The two different versions of lexer.js are maintained in the +[nodejs/cjs-module-lexer][] project. + +In order to update the Node.js dependencies to use to a newer verion +of cjs-module-lexer, complete the following steps: + +* Clone [nodejs/cjs-module-lexer][] + and check out the version that you want Node.js to use. +* Follow the WASM build steps outlined in + [wasm-build-steps](https://github.com/nodejs/cjs-module-lexer#wasm-build-steps). + This will generate the WASM based dist/lexer.js file. +* Preserving the same directory structure, copy the following files over + to `deps/cjs-module-lexer` directory where you have checked out Node.js. + +```text +├── CHANGELOG.md +├── dist +│   ├── lexer.js +│   └── lexer.mjs +├── lexer.js +├── LICENSE +├── package.json +└── README.md +``` + +* Update the link to the cjs-module-lexer in the list at the end of + [doc/api/esm.md](../api/esm.md) + to point to the updated version. + +* Create a PR, adding the files in the deps/cjs-module-lexer that + were modified. + +If updates are needed to cjs-module-lexer for Node.js, first PR +those updates into +[nodejs/cjs-module-lexer][], +request a release and then pull in the updated version once available. + +[nodejs/cjs-module-lexer]: https://github.com/nodejs/cjs-module-lexer diff --git a/doc/contributing/maintaining-http.md b/doc/contributing/maintaining-http.md index 0737b2f9880d66..2888367d861103 100644 --- a/doc/contributing/maintaining-http.md +++ b/doc/contributing/maintaining-http.md @@ -74,9 +74,35 @@ to align them with the APIs built for the client. The low-level implementation of the [HTTP](https://nodejs.org/docs/latest/api/http.html) and [HTTPS](https://nodejs.org/docs/latest/api/https.html) APIs -are maintained in the [llttp](https://github.com/nodejs/llhttp) +are maintained in the [llhttp](https://github.com/nodejs/llhttp) repository. Updates are pulled into Node.js under -[deps/llhttp](https://github.com/nodejs/node/tree/HEAD/deps/llhttp) +[deps/llhttp](https://github.com/nodejs/node/tree/HEAD/deps/llhttp). + +In order to update Node.js with a new version of llhttp: + +* check out the tagged release that you want to update to (a release + should be created in the llhttp repo before updating Node.js). +* run `npm install` in the directory that you checked out llhttp. +* run `make release` in the directory that you checked out llhttp. +* copy the contents of the `release` directory from the directory you + checked llhttp out to + [deps/llhttp](https://github.com/nodejs/node/tree/HEAD/deps/llhttp) + +It should look like the following: + +```console +├── CMakeLists.txt +├── common.gypi +├── include +│ └── llhttp.h +├── LICENSE-MIT +├── llhttp.gyp +├── README.md +└── src + ├── api.c + ├── http.c + └── llhttp.c +``` The low-level implementation is made available in the Node.js API through JavaScript code in the [lib](https://github.com/nodejs/node/tree/HEAD/lib) diff --git a/doc/contributing/maintaining-icu.md b/doc/contributing/maintaining-icu.md index 73801f60ffefc5..a8ce43d3a3b4aa 100644 --- a/doc/contributing/maintaining-icu.md +++ b/doc/contributing/maintaining-icu.md @@ -11,6 +11,12 @@ functionality. To quote from icu-project.org: > widely portable and gives applications the same results on all platforms > and between C/C++ and Java software. +If Node.js is configured to use its built-in ICU, +it uses a strict subset of ICU which is in +[deps/icu-small](https://github.com/nodejs/node/tree/HEAD/deps/icu-small). +A good description of the different ways Node.js can be built with ICU +support is in [api/intl.html](https://nodejs.org/api/intl.html). + ## Data dependencies ICU consumes and includes: @@ -51,7 +57,7 @@ files. #### Example: updating the ICU `.dat` file -* Decompress `deps/icu/source/data/in/icudt##l.dat.bz2`, where `##` is +* Decompress `deps/icu-small/source/data/in/icudt##l.dat.bz2`, where `##` is the ICU major version number. * Clone the icu/icu-data repository and copy the latest `tzdata` release `le` files into the `source/data/in` directory. @@ -193,9 +199,9 @@ Floating patches are applied at `configure` time. The "patch" files are used instead of the original source files. The patch files are complete `.cpp` files replacing the original contents. -Patches are tied to a specific ICU version. They won’t apply to a +Patches are tied to a specific ICU version. They won't apply to a future ICU version. We assume that you filed a bug against [ICU][] and -upstreamed the fix, so the patch won’t be needed in a later ICU +upstreamed the fix, so the patch won't be needed in a later ICU version. ### Example diff --git a/doc/contributing/maintaining-npm.md b/doc/contributing/maintaining-npm.md index 5536fd513f8552..a1b6e170dd1e97 100644 --- a/doc/contributing/maintaining-npm.md +++ b/doc/contributing/maintaining-npm.md @@ -41,7 +41,7 @@ Note: please ensure you are only making the updates that are changed by npm. ## Step 4: Apply whitespace fix ```console -$ git rebase --whitespace=fix master +$ git rebase --whitespace=fix main ``` ## Step 5: Test the build diff --git a/doc/contributing/maintaining-openssl.md b/doc/contributing/maintaining-openssl.md index 9147c94df05891..0c3b38840fdf4d 100644 --- a/doc/contributing/maintaining-openssl.md +++ b/doc/contributing/maintaining-openssl.md @@ -5,8 +5,10 @@ This document describes how to update `deps/openssl/`. If you need to provide updates across all active release lines you will currently need to generate three PRs as follows: -* a PR for master which is generated following the instructions - below. +* a PR for `main` which is generated following the instructions + below for OpenSSL 3.x.x. +* a PR for 16.x following the instructions in the v16.x-staging version + of this guide. * a PR for 14.x following the instructions in the v14.x-staging version of this guide. * a PR which uses the same commit from the second PR to apply the @@ -101,6 +103,16 @@ Use `make` to regenerate all platform dependent files in % make -C deps/openssl/config ``` +**Note**: If the 32-bit Windows is failing to compile run this workflow instead: + +```console +% make -C deps/openssl/config clean +# Edit deps/openssl/openssl/crypto/perlasm/x86asm.pl changing +# #ifdef to %ifdef to make it compatible to nasm on 32-bit Windows. +# See: https://github.com/nodejs/node/pull/43603#issuecomment-1170670844 +# Reference: https://github.com/openssl/openssl/issues/18459 +``` + ## 3. Check diffs Check diffs to ensure updates are right. Even if there are no updates in openssl diff --git a/doc/contributing/maintaining-shared-library-support.md b/doc/contributing/maintaining-shared-library-support.md new file mode 100644 index 00000000000000..a2e0e4d4805d1f --- /dev/null +++ b/doc/contributing/maintaining-shared-library-support.md @@ -0,0 +1,117 @@ +# Maintaining shared library support + +Node.js unofficially supports a build option where Node.js is built as +a shared library. The shared library is called libnode with additional postfixes +as appropriate for the platform (for example libnode.dll on windows). +The shared library provides a way to embed Node.js into other +applications and to have multiple applications use a single copy of +Node.js instead of having to bundle in the full Node.js footprint +into each application. For workloads that require multiple Node.js +instances this can result in a significant footprint savings. + +This document provides an outline of the approach and things to look +out for when maintaining the shared library support. + +Currently, shared library support has only been tested on: + +* Linux +* macOS +* Windows +* AIX + +## Building with shared library option + +On non-Windows platforms, Node.js is built with the shared library +option by adding `--shared` to the configure step. On Windows +platforms Node.js is built with the shared library option by +adding `dll` to the vcbuild command line. + +Once built there are two key components: + +* executable - node +* library - libnode + +The node executable is a thin wrapper around libnode which is +generated so that we can run the standard Node.js test suite +against the shared library. + +The executable and library will have extensions as appropriate +for the platform on which they are built. For +example, node.exe on windows and node on other platforms for +the executable. + +libnode may have additional naming components, as an example +in a build on macOS `libnode.105.dylib`. For non-windows platforms +the additional naming components include the `NODE_MODULE_VERSION` and +the appropriate postfix used for shared libraries on the platform. + +In cases where an application links against the shared +library it is up to the application developer to add options +so that the shared library can be found by the application or +to set the LIBPATH (AIX), LD\_LIBRARY\_PATH (Linux/Unix), etc. +so that it is found at runtime. + +For the node wrapper, on linux and macOS it is built +so that it can find the shared library in one of +the following: + +* the same directory as the node executable +* ../lib with the expectation that the executable is + installed in a `bin` directory at the same level + as a `lib` directory in which the shared library is + installed. This is where the default package that + is build with the shared library option will + place the executable and library. + +For the node wrapper on windows it is built expecting +that both the executable and shared library will +be in the same directory as it common practice on +that platform. + +For the node wrapper on AIX, it is built with +the path to the shared library hardcoded as that +is the only option. + +## Exports + +On windows, functions that may be linked from native +addons or additional Node.js executables need to have +NODE\_EXTERN\_PRIVATE or NODE\_EXTERN otherwise they will +not be exported by the shared library. In the case of +functions used by additional Node.js executables +(ex: `mksnapshot`) a missing NODE\_EXTERN or +NODE\_EXTERN\_PRIVATE will cause the build to fail. +NODE\_EXTERN\_PRIVATE should be used in these cases +unless the intent is to add the function to the +public embedder API. + +## Native addons + +For regular Node.js builds, running native addons relies on symbols +exported by the node executable. As a result any +pre-built binaries expect symbols to be exported from the executable +instead of the shared library itself. + +The node executable and shared library are built and linked +so that the required symbols are exported from the node +executable. This requires some extra work on some platforms +and the process to build the node executable is a good example +of how this can be achieved. Applications that use the shared +library and want to support native addons should employ +a similar technique. + +## Testing + +There is currently no testing in the regular CI run for PRs. There +are some CI jobs that can be used to test the shared library support and +some are run as part of daily testing. These include: + +* [node-test-commit-linux-as-shared-lib](https://ci.nodejs.org/view/Node.js%20Daily/job/node-test-commit-linux-as-shared-lib/) +* +* [node-test-commit-aix-shared-lib](https://ci.nodejs.org/view/Node.js%20Daily/job/node-test-commit-aix-shared-lib/) + +TODO: add a Job for windows + +For code that modifies/affects shared library support these CI jobs should +run and it should be validated that there are no regressions in +the test suite. diff --git a/doc/contributing/maintaining-web-assembly.md b/doc/contributing/maintaining-web-assembly.md new file mode 100644 index 00000000000000..c5df8f7c058a75 --- /dev/null +++ b/doc/contributing/maintaining-web-assembly.md @@ -0,0 +1,97 @@ +# Maintaining WebAssembly + +Support for [WebAssembly](https://webassembly.org/) +has been identified as one of the +[top technical priorities](https://github.com/nodejs/node/blob/main/doc/contributing/technical-priorities.md#webassembly) +for the future success of Node.js. + +This document provides an overview of our high-level strategy for +supporting WebAssembly and information about our current implementation +as a starting point for contributors. + +## High-level approach + +The key elements of our WebAssembly strategy include: + +* Up-to-date core WebAssembly support +* Support for high-level APIs +* Making it easy to load WebAssembly +* Making sure the core Node.js APIs are compatible with WebAssembly + and can be called in an efficient manner from WebAssembly + +### Up-to-date core WebAssembly support + +Node.js gets its core WebAssembly support through V8. We don't need +to do anything specific to support this, all we have to do is keep +the version of V8 as up-to-date as possible. + +### Key API support + +As a runtime, Node.js must implement a number of APIs in addition +to the core WebAssembly support in order to be a good choice to run +WebAssembly. The project has currently identified these additional +APIs as important: + +* WebAssembly System Interface (WASI). This provides the ability for + WebAssembly to interact with the outside world. Node.js currently + has an implementation (see below for more details). +* [WebAssembly Web API](https://www.w3.org/TR/wasm-web-api-1/). Node.js + currently has an implementation of streaming module compilation and + instantiation. As this and other specifications evolve, keeping up with them + will be important. +* [WebAssembly Component Model](https://github.com/WebAssembly/component-model/). + This API is still in the definition stage but the project should + keep track of its development as a way to simplify native code + integration. + +### Making it as easy as possible to load WASM + +The most important thing we can do on this front is to either find and +reference resources or provide resources on how to: + +* Compile your WebAssembly code (outside of Node.js) and integrate that + into an npm workflow. +* Load and run WebAssembly code in your Node.js application. + +It is also important to support and track the ongoing work in ESM to enable +loading of WebAssembly with ESM. + +### Making sure the core Node.js APIs are compatible with WebAssembly + +Use cases for which Node.js will be a good runtime will include code +both in JavaScript and compiled into WebAssembly. It is important +that Node.js APIs are able to be called from WebAssembly in +an efficient manner without extra buffer copies. We need to: + +* Review APIs and identify those that can be called often from + WebAssembly. +* Where appropriate, make additions to identified APIs to allow + a pre-existing buffer to be passed in order to avoid copies. + +## Current implementation and assets + +### WebAssembly System Interface (WASI) + +The Node.js WASI implementation is maintained in the +[uvwasi](https://github.com/nodejs/uvwasi) repository in the +Node.js GitHub organization. As needed, an updated copy +is vendored into the Node.js deps in +[deps/uvwasi](https://github.com/nodejs/node/tree/main/deps/uvwasi). + +To update the copy of uvwasi in the Node.js deps: + +* Copy over the contents of `include` and `src` to the corresponding + directories. +* Check if any additional files have been added and need to be added + to the `sources` list in `deps/uvwasi/uvwasi.gyp`. + +In addition to the code from uvwasi, Node.js includes bindings and +APIs that allow WebAssembly to be run with WASI support from Node.js. +The documentation for this API is in +[WebAssembly System Interface (WASI)](https://nodejs.org/api/wasi.html). + +The implementation of the bindings and the public API is in: + +* [src/node\_wasi.h](https://github.com/nodejs/node/blob/main/src/node_wasi.h) +* [src/node\_wasi.cc](https://github.com/nodejs/node/blob/main/src/node_wasi.cc) +* [lib/wasi.js](https://github.com/nodejs/node/blob/main/lib/wasi.js) diff --git a/doc/contributing/primordials.md b/doc/contributing/primordials.md new file mode 100644 index 00000000000000..7980bd79b3b272 --- /dev/null +++ b/doc/contributing/primordials.md @@ -0,0 +1,764 @@ +# Usage of primordials in core + +The file `lib/internal/per_context/primordials.js` subclasses and stores the JS +built-ins that come from the VM so that Node.js built-in modules do not need to +later look these up from the global proxy, which can be mutated by users. + +Usage of primordials should be preferred for any new code, but replacing current +code with primordials should be +[done with care](#primordials-with-known-performance-issues). It is highly +recommended to ping the relevant team when reviewing a pull request that touches +one of the subsystems they "own". + +## Accessing primordials + +The primordials are meant for internal use only, and are only accessible for +internal core modules. User code cannot use or rely on primordials. It is +usually fine to rely on ECMAScript built-ins and assume that it will behave as +specified. + +If you would like to access the `primordials` object to help you with Node.js +core development or for tinkering, you can expose it on the global scope using +this combination of CLI flags: + +```bash +node --expose-internals -r internal/test/binding +``` + +## Contents of primordials + +### Properties of the global object + +Objects and functions on the global object can be deleted or replaced. Using +them from primordials makes the code more reliable: + +```js +globalThis.Array === primordials.Array; // true + +globalThis.Array = function() { + return [1, 2, 3]; +}; +globalThis.Array === primordials.Array; // false + +primordials.Array(0); // [] +globalThis.Array(0); // [1,2,3] +``` + +### Prototype methods + +ECMAScript provides a group of methods available on built-in objects that are +used to interact with JavaScript objects. + +```js +const array = [1, 2, 3]; +array.push(4); // Here `push` refers to %Array.prototype.push%. +console.log(JSON.stringify(array)); // [1,2,3,4] + +// %Array.prototype%.push is modified in userland. +Array.prototype.push = function push(val) { + return this.unshift(val); +}; + +array.push(5); // Now `push` refers to the modified method. +console.log(JSON.stringify(array)); // [5,1,2,3,4] +``` + +Primordials wrap the original prototype functions with new functions that take +the `this` value as the first argument: + +```js +const { + ArrayPrototypePush, +} = primordials; + +const array = [1, 2, 3]; +ArrayPrototypePush(array, 4); +console.log(JSON.stringify(array)); // [1,2,3,4] + +Array.prototype.push = function push(val) { + return this.unshift(val); +}; + +ArrayPrototypePush(array, 5); +console.log(JSON.stringify(array)); // [1,2,3,4,5] +``` + +### Safe classes + +Safe classes are classes that provide the same API as their equivalent class, +but whose implementation aims to avoid any reliance on user-mutable code. +Safe classes should not be exposed to user-land; use unsafe equivalent when +dealing with objects that are accessible from user-land. + +### Variadic functions + +There are some built-in functions that accept a variable number of arguments +(e.g.: `Math.max`, `%Array.prototype.push%`). It is sometimes useful to provide +the list of arguments as an array. You can use primordial function with the +suffix `Apply` (e.g.: `MathMaxApply`, `ArrayPrototypePushApply`) to do that. + +## Primordials with known performance issues + +One of the reasons why the current Node.js API is not completely tamper-proof is +performance: sometimes the use of primordials can cause performance regressions +with V8, which when in a hot code path, could significantly decrease the +performance of code in Node.js. + +* Methods that mutate the internal state of arrays: + * `ArrayPrototypePush` + * `ArrayPrototypePop` + * `ArrayPrototypeShift` + * `ArrayPrototypeUnshift` +* Methods of the function prototype: + * `FunctionPrototypeBind` + * `FunctionPrototypeCall`: creates performance issues when used to invoke + super constructors. + * `FunctionPrototype`: use `() => {}` instead when referencing a no-op + function. +* `SafeArrayIterator` +* `SafeStringIterator` +* `SafePromiseAll` +* `SafePromiseAllSettled` +* `SafePromiseAny` +* `SafePromiseRace` +* `SafePromisePrototypeFinally`: use `try {} finally {}` block instead. + +In general, when sending or reviewing a PR that makes changes in a hot code +path, use extra caution and run extensive benchmarks. + +## Implicit use of user-mutable methods + +### Unsafe array iteration + +There are many usual practices in JavaScript that rely on iteration. It's useful +to be aware of them when dealing with arrays (or `TypedArray`s) in core as array +iteration typically calls several user-mutable methods. This sections lists the +most common patterns in which ECMAScript code relies non-explicitly on array +iteration and how to avoid it. + +
                  + +Avoid for-of loops on arrays + +```js +for (const item of array) { + console.log(item); +} +``` + +This code is internally expanded into something that looks like: + +```js +{ + // 1. Lookup @@iterator property on `array` (user-mutable if user-provided). + // 2. Lookup @@iterator property on %Array.prototype% (user-mutable). + // 3. Call that function. + const iterator = array[Symbol.iterator](); + // 1. Lookup `next` property on `iterator` (doesn't exist). + // 2. Lookup `next` property on %ArrayIteratorPrototype% (user-mutable). + // 3. Call that function. + let { done, value: item } = iterator.next(); + while (!done) { + console.log(item); + // Repeat. + ({ done, value: item } = iterator.next()); + } +} +``` + +Instead of utilizing iterators, you can use the more traditional but still very +performant `for` loop: + +```js +for (let i = 0; i < array.length; i++) { + console.log(array[i]); +} +``` + +The following code snippet illustrates how user-land code could impact the +behavior of internal modules: + +```js +// User-land +Array.prototype[Symbol.iterator] = () => ({ + next: () => ({ done: true }), +}); + +// Core +let forOfLoopBlockExecuted = false; +let forLoopBlockExecuted = false; +const array = [1, 2, 3]; +for (const item of array) { + forOfLoopBlockExecuted = true; +} +for (let i = 0; i < array.length; i++) { + forLoopBlockExecuted = true; +} +console.log(forOfLoopBlockExecuted); // false +console.log(forLoopBlockExecuted); // true +``` + +This only applies if you are working with a genuine array (or array-like +object). If you are instead expecting an iterator, a for-of loop may be a better +choice. + +
                  + +
                  + +Avoid array destructuring assignment on arrays + +```js +const [first, second] = array; +``` + +This is roughly equivalent to: + +```js +// 1. Lookup @@iterator property on `array` (user-mutable if user-provided). +// 2. Lookup @@iterator property on %Array.prototype% (user-mutable). +// 3. Call that function. +const iterator = array[Symbol.iterator](); +// 1. Lookup `next` property on `iterator` (doesn't exist). +// 2. Lookup `next` property on %ArrayIteratorPrototype% (user-mutable). +// 3. Call that function. +const first = iterator.next().value; +// Repeat. +const second = iterator.next().value; +``` + +Instead you can use object destructuring: + +```js +const { 0: first, 1: second } = array; +``` + +or + +```js +const first = array[0]; +const second = array[1]; +``` + +This only applies if you are working with a genuine array (or array-like +object). If you are instead expecting an iterator, array destructuring is the +best choice. + +
                  + +
                  + +Avoid spread operator on arrays + +```js +// 1. Lookup @@iterator property on `array` (user-mutable if user-provided). +// 2. Lookup @@iterator property on %Array.prototype% (user-mutable). +// 3. Lookup `next` property on %ArrayIteratorPrototype% (user-mutable). +const arrayCopy = [...array]; +func(...array); +``` + +Instead you can use other ECMAScript features to achieve the same result: + +```js +const arrayCopy = ArrayPrototypeSlice(array); +ReflectApply(func, null, array); +``` + +
                  + +
                  + +%Array.prototype.concat% looks up + @@isConcatSpreadable property of the passed + arguments and the this value. + +```js +{ + // Unsafe code example: + // 1. Lookup @@isConcatSpreadable property on `array` (user-mutable if + // user-provided). + // 2. Lookup @@isConcatSpreadable property on `%Array.prototype% + // (user-mutable). + // 2. Lookup @@isConcatSpreadable property on `%Object.prototype% + // (user-mutable). + const array = []; + ArrayPrototypeConcat(array); +} +``` + +```js +// User-land +Object.defineProperty(Object.prototype, Symbol.isConcatSpreadable, { + get() { + this.push(5); + return true; + }, +}); + +// Core +{ + // Using ArrayPrototypeConcat does not produce the expected result: + const a = [1, 2]; + const b = [3, 4]; + console.log(ArrayPrototypeConcat(a, b)); // [1, 2, 5, 3, 4, 5] +} +{ + // Concatenating two arrays can be achieved safely, e.g.: + const a = [1, 2]; + const b = [3, 4]; + // Using %Array.prototype.push% and `SafeArrayIterator` to get the expected + // outcome: + const concatArray = []; + ArrayPrototypePush(concatArray, ...new SafeArrayIterator(a), + ...new SafeArrayIterator(b)); + console.log(concatArray); // [1, 2, 3, 4] + + // Or using `ArrayPrototypePushApply` if it's OK to mutate the first array: + ArrayPrototypePushApply(a, b); + console.log(a); // [1, 2, 3, 4] +} +``` + +
                  + +
                  + +%Object.fromEntries% iterate over an array + +```js +{ + // Unsafe code example: + // 1. Lookup @@iterator property on `array` (user-mutable if user-provided). + // 2. Lookup @@iterator property on %Array.prototype% (user-mutable). + // 3. Lookup `next` property on %ArrayIteratorPrototype% (user-mutable). + const obj = ObjectFromEntries(array); +} + +{ + // Safe example using `SafeArrayIterator`: + const obj = ObjectFromEntries(new SafeArrayIterator(array)); +} + +{ + // Safe example without using `SafeArrayIterator`: + const obj = {}; + for (let i = 0; i < array.length; i++) { + obj[array[i][0]] = array[i][1]; + } + // In a hot code path, this would be the preferred method. +} +``` + +
                  + +
                  + +%Promise.all%, + %Promise.allSettled%, + %Promise.any%, and + %Promise.race% iterate over an array + +```js +// 1. Lookup @@iterator property on `array` (user-mutable if user-provided). +// 2. Lookup @@iterator property on %Array.prototype% (user-mutable). +// 3. Lookup `next` property on %ArrayIteratorPrototype% (user-mutable). +PromiseAll([]); // unsafe + +PromiseAll(new SafeArrayIterator([])); // safe + +const array = [promise]; +const set = new SafeSet().add(promise); +// When running one of these functions on a non-empty iterable, it will also: +// 4. Lookup `then` property on `promise` (user-mutable if user-provided). +// 5. Lookup `then` property on `%Promise.prototype%` (user-mutable). +PromiseAll(new SafeArrayIterator(array)); // unsafe + +PromiseAll(set); // unsafe + +SafePromiseAll(array); // safe + +// Some key differences between `SafePromise[...]` and `Promise[...]` methods: + +// 1. SafePromiseAll, SafePromiseAllSettled, SafePromiseAny, and SafePromiseRace +// support passing a mapperFunction as second argument. +SafePromiseAll(ArrayPrototypeMap(array, someFunction)); +SafePromiseAll(array, someFunction); // Same as the above, but more efficient. + +// 2. SafePromiseAll, SafePromiseAllSettled, SafePromiseAny, and SafePromiseRace +// only support arrays, not iterables. Use ArrayFrom to convert an iterable +// to an array. +SafePromiseAll(set); // ignores set content. +SafePromiseAll(ArrayFrom(set)); // safe +``` + +
                  + +
                  + +%Map%, %Set%, %WeakMap%, and + %WeakSet% constructors iterate over an array + +```js +// User-land +Array.prototype[Symbol.iterator] = () => ({ + next: () => ({ done: true }), +}); + +// Core + +// 1. Lookup @@iterator property on %Array.prototype% (user-mutable). +// 2. Lookup `next` property on %ArrayIteratorPrototype% (user-mutable). +const set = new SafeSet([1, 2, 3]); + +console.log(set.size); // 0 +``` + +```js +// User-land +Array.prototype[Symbol.iterator] = () => ({ + next: () => ({ done: true }), +}); + +// Core +const set = new SafeSet(); +set.add(1).add(2).add(3); +console.log(set.size); // 3 +``` + +
                  + +### Promise objects + +
                  + +%Promise.prototype.finally% looks up then + property of the Promise instance + +```js +// User-land +Promise.prototype.then = function then(a, b) { + return Promise.resolve(); +}; + +// Core +let finallyBlockExecuted = false; +PromisePrototypeFinally(somePromiseThatEventuallySettles, + () => { finallyBlockExecuted = true; }); +process.on('exit', () => console.log(finallyBlockExecuted)); // false +``` + +```js +// User-land +Promise.prototype.then = function then(a, b) { + return Promise.resolve(); +}; + +// Core +let finallyBlockExecuted = false; +(async () => { + try { + return await somePromiseThatEventuallySettles; + } finally { + finallyBlockExecuted = true; + } +})(); +process.on('exit', () => console.log(finallyBlockExecuted)); // true +``` + +
                  + +
                  + +%Promise.all%, + %Promise.allSettled%, + %Promise.any%, and + %Promise.race% look up then + property of the Promise instances + +You can use safe alternatives from primordials that differ slightly from the +original methods: + +* It expects an array (or array-like object) instead of an iterable. +* It wraps each promise in `SafePromise` objects and wraps the result in a new + `Promise` instance – which may come with a performance penalty. +* It accepts a `mapperFunction` as second argument. +* Because it doesn't look up `then` property, it may not be the right tool to + handle user-provided promises (which may be instances of a subclass of + `Promise`). + +```js +// User-land +Promise.prototype.then = function then(a, b) { + return Promise.resolve(); +}; + +// Core +let thenBlockExecuted = false; +PromisePrototypeThen( + PromiseAll(new SafeArrayIterator([PromiseResolve()])), + () => { thenBlockExecuted = true; } +); +process.on('exit', () => console.log(thenBlockExecuted)); // false +``` + +```js +// User-land +Promise.prototype.then = function then(a, b) { + return Promise.resolve(); +}; + +// Core +let thenBlockExecuted = false; +PromisePrototypeThen( + SafePromiseAll([PromiseResolve()]), + () => { thenBlockExecuted = true; } +); +process.on('exit', () => console.log(thenBlockExecuted)); // true +``` + +A common pattern is to map on the array of `Promise`s to apply some +transformations, in that case it can be more efficient to pass a second argument +rather than invoking `%Array.prototype.map%`. + +```js +SafePromiseAll(ArrayPrototypeMap(array, someFunction)); +SafePromiseAll(array, someFunction); // Same as the above, but more efficient. +``` + +
                  + +### (Async) Generator functions + +Generators and async generators returned by generator functions and async +generator functions are relying on user-mutable methods; their use in core +should be avoided. + +
                  + +%GeneratorFunction.prototype.prototype%.next is + user-mutable + +```js +// User-land +Object.getPrototypeOf(function* () {}).prototype.next = function next() { + return { done: true }; +}; + +// Core +function* someGenerator() { + yield 1; + yield 2; + yield 3; +} +let loopCodeExecuted = false; +for (const nb of someGenerator()) { + loopCodeExecuted = true; +} +console.log(loopCodeExecuted); // false +``` + +
                  + +
                  + +%AsyncGeneratorFunction.prototype.prototype%.next is + user-mutable + +```js +// User-land +Object.getPrototypeOf(async function* () {}).prototype.next = function next() { + return new Promise(() => {}); +}; + +// Core +async function* someGenerator() { + yield 1; + yield 2; + yield 3; +} +let finallyBlockExecuted = false; +async () => { + try { + for await (const nb of someGenerator()) { + // some code; + } + } finally { + finallyBlockExecuted = true; + } +}; +process.on('exit', () => console.log(finallyBlockExecuted)); // false +``` + +
                  + +### Text processing + +#### Unsafe string methods + +| The string method | looks up the property | +| ----------------------------- | --------------------- | +| `String.prototype.match` | `Symbol.match` | +| `String.prototype.matchAll` | `Symbol.matchAll` | +| `String.prototype.replace` | `Symbol.replace` | +| `String.prototype.replaceAll` | `Symbol.replace` | +| `String.prototype.search` | `Symbol.search` | +| `String.prototype.split` | `Symbol.split` | + +```js +// User-land +RegExp.prototype[Symbol.replace] = () => 'foo'; +String.prototype[Symbol.replace] = () => 'baz'; + +// Core +console.log(StringPrototypeReplace('ber', /e/, 'a')); // 'foo' +console.log(StringPrototypeReplace('ber', 'e', 'a')); // 'baz' +console.log(RegExpPrototypeSymbolReplace(/e/, 'ber', 'a')); // 'bar' +``` + +#### Unsafe string iteration + +As with arrays, iterating over strings calls several user-mutable methods. Avoid +iterating over strings when possible, or use `SafeStringIterator`. + +#### Unsafe `RegExp` methods + +Functions that lookup the `exec` property on the prototype chain: + +* `RegExp.prototype[Symbol.match]` +* `RegExp.prototype[Symbol.matchAll]` +* `RegExp.prototype[Symbol.replace]` +* `RegExp.prototype[Symbol.search]` +* `RegExp.prototype[Symbol.split]` +* `RegExp.prototype.test` + +```js +// User-land +RegExp.prototype.exec = () => null; + +// Core +console.log(RegExpPrototypeTest(/o/, 'foo')); // false +console.log(RegExpPrototypeExec(/o/, 'foo') !== null); // true +``` + +#### Don't trust `RegExp` flags + +RegExp flags are not own properties of the regex instances, which means flags +can be reset from user-land. + +
                  + +List of RegExp methods that look up properties from + mutable getters + +| `RegExp` method | looks up the following flag-related properties | +| ------------------------------ | ------------------------------------------------------------------ | +| `get RegExp.prototype.flags` | `global`, `ignoreCase`, `multiline`, `dotAll`, `unicode`, `sticky` | +| `RegExp.prototype[@@match]` | `global`, `unicode` | +| `RegExp.prototype[@@matchAll]` | `flags` | +| `RegExp.prototype[@@replace]` | `global`, `unicode` | +| `RegExp.prototype[@@split]` | `flags` | +| `RegExp.prototype.toString` | `flags` | + +
                  + +```js +// User-land +Object.defineProperty(RegExp.prototype, 'global', { value: false }); + +// Core +console.log(RegExpPrototypeSymbolReplace(/o/g, 'foo', 'a')); // 'fao' + +const regex = /o/g; +ObjectDefineProperties(regex, { + dotAll: { value: false }, + exec: { value: undefined }, + flags: { value: 'g' }, + global: { value: true }, + ignoreCase: { value: false }, + multiline: { value: false }, + unicode: { value: false }, + sticky: { value: false }, +}); +console.log(RegExpPrototypeSymbolReplace(regex, 'foo', 'a')); // 'faa' +``` + +### Defining object own properties + +When defining property descriptor (to add or update an own property to a +JavaScript object), be sure to always use a null-prototype object to avoid +prototype pollution. + +```js +// User-land +Object.prototype.get = function get() {}; + +// Core +try { + ObjectDefineProperty({}, 'someProperty', { value: 0 }); +} catch (err) { + console.log(err); // TypeError: Invalid property descriptor. +} +``` + +```js +// User-land +Object.prototype.get = function get() {}; + +// Core +ObjectDefineProperty({}, 'someProperty', { __proto__: null, value: 0 }); +console.log('no errors'); // no errors. +``` + +Same applies when trying to modify an existing property, e.g. trying to make a +read-only property enumerable: + +```js +// User-land +Object.prototype.value = 'Unrelated user-provided data'; + +// Core +class SomeClass { + get readOnlyProperty() { return 'genuine data'; } +} +ObjectDefineProperty(SomeClass.prototype, 'readOnlyProperty', { enumerable: true }); +console.log(new SomeClass().readOnlyProperty); // Unrelated user-provided data +``` + +```js +// User-land +Object.prototype.value = 'Unrelated user-provided data'; + +// Core +const kEnumerableProperty = { __proto__: null, enumerable: true }; +// In core, use const {kEnumerableProperty} = require('internal/util'); +class SomeClass { + get readOnlyProperty() { return 'genuine data'; } +} +ObjectDefineProperty(SomeClass.prototype, 'readOnlyProperty', kEnumerableProperty); +console.log(new SomeClass().readOnlyProperty); // genuine data +``` + +### Defining a `Proxy` handler + +When defining a `Proxy`, the handler object could be at risk of prototype +pollution when using a plain object literal: + +```js +// User-land +Object.prototype.get = () => 'Unrelated user-provided data'; + +// Core +const objectToProxy = { someProperty: 'genuine value' }; + +const proxyWithPlainObjectLiteral = new Proxy(objectToProxy, { + has() { return false; }, +}); +console.log(proxyWithPlainObjectLiteral.someProperty); // Unrelated user-provided data + +const proxyWithNullPrototypeObject = new Proxy(objectToProxy, { + __proto__: null, + has() { return false; }, +}); +console.log(proxyWithNullPrototypeObject.someProperty); // genuine value +``` diff --git a/doc/contributing/pull-requests.md b/doc/contributing/pull-requests.md index 6c54b6eee581c2..403c9aa7daf24f 100644 --- a/doc/contributing/pull-requests.md +++ b/doc/contributing/pull-requests.md @@ -27,7 +27,6 @@ * [Notes](#notes) * [Commit squashing](#commit-squashing) * [Getting approvals for your pull request](#getting-approvals-for-your-pull-request) - * [CI testing](#ci-testing) * [Waiting until the pull request gets landed](#waiting-until-the-pull-request-gets-landed) * [Check out the collaborator guide](#check-out-the-collaborator-guide) * [Appendix: subsystems](#appendix-subsystems) @@ -47,7 +46,7 @@ Node.js has many channels on the [OpenJS Foundation Slack](https://slack-invite.openjsf.org/). Interesting channels are: [#nodejs](https://openjs-foundation.slack.com/archives/CK9Q4MB53) for general -help, questions and discussions. +help, questions, and discussions. [#nodejs-dev](https://openjs-foundation.slack.com/archives/C019Y2T6STH) for development of Node.js core specifically. @@ -191,7 +190,7 @@ A good commit message should describe what changed and why. 5. If your commit introduces a breaking change (`semver-major`), it should contain an explanation about the reason of the breaking change, which - situation would trigger the breaking change and what is the exact change. + situation would trigger the breaking change, and what is the exact change. Sample complete commit message: @@ -320,7 +319,7 @@ There are a number of more advanced mechanisms for managing commits using Feel free to post a comment in the pull request to ping reviewers if you are awaiting an answer on something. If you encounter words or acronyms that seem unfamiliar, refer to this -[glossary](https://sites.google.com/a/chromium.org/dev/glossary). +[glossary](https://github.com/nodejs/node/blob/HEAD/glossary.md). #### Approval and request changes workflow @@ -337,7 +336,7 @@ say so, or contact one of the other contributors in the project and seek their input. Often such comments are the result of the reviewer having only taken a short amount of time to review and are not ill-intended. Such issues can often be resolved with a bit of patience. That said, reviewers should be expected to -be helpful in their feedback, and feedback that is simply vague, dismissive and +be helpful in their feedback, and feedback that is simply vague, dismissive, and unhelpful is likely safe to ignore. ### Step 10: Landing @@ -394,7 +393,7 @@ Focus first on the most significant aspects of the change: When changes are necessary, _request_ them, do not _demand_ them, and do not assume that the submitter already knows how to add a test or run a benchmark. -Specific performance optimization techniques, coding styles and conventions +Specific performance optimization techniques, coding styles, and conventions change over time. The first impression you give to a new contributor never does. Nits (requests for small changes that are not essential) are fine, but try to @@ -511,17 +510,18 @@ feedback. All pull requests that contain changes to code must be run through continuous integration (CI) testing at [https://ci.nodejs.org/][]. -Only Node.js core collaborators with commit rights to the `nodejs/node` -repository may start a CI testing run. The specific details of how to do -this are included in the new collaborator [Onboarding guide][]. +Only Node.js core collaborators and triagers can start a CI testing run. The +specific details of how to do this are included in the new collaborator +[Onboarding guide][]. Usually, a collaborator or triager will start a CI +test run for you as approvals for the pull request come in. +If not, you can ask a collaborator or triager to start a CI run. Ideally, the code change will pass ("be green") on all platform configurations -supported by Node.js (there are over 30 platform configurations currently). -This means that all tests pass and there are no linting errors. In reality, -however, it is not uncommon for the CI infrastructure itself to fail on -specific platforms or for so-called "flaky" tests to fail ("be red"). It is -vital to visually inspect the results of all failed ("red") tests to determine -whether the failure was caused by the changes in the pull request. +supported by Node.js. This means that all tests pass and there are no linting +errors. In reality, however, it is not uncommon for the CI infrastructure itself +to fail on specific platforms or for so-called "flaky" tests to fail ("be red"). +It is vital to visually inspect the results of all failed ("red") tests to +determine whether the failure was caused by the changes in the pull request. ## Notes @@ -553,16 +553,6 @@ After you push new changes to your branch, you need to get approval for these new changes again, even if GitHub shows "Approved" because the reviewers have hit the buttons before. -### CI testing - -Every pull request needs to be tested -to make sure that it works on the platforms that Node.js -supports. This is done by running the code through the CI system. - -Only a collaborator can start a CI run. Usually one of them will do it -for you as approvals for the pull request come in. -If not, you can ask a collaborator to start a CI run. - ### Waiting until the pull request gets landed A pull request needs to stay open for at least 48 hours from when it is @@ -591,7 +581,7 @@ You can find the full list of supported subsystems in the More than one subsystem may be valid for any particular issue or pull request. [Building guide]: ../../BUILDING.md -[CI (Continuous Integration) test run]: #ci-testing +[CI (Continuous Integration) test run]: #continuous-integration-testing [Code of Conduct]: https://github.com/nodejs/admin/blob/HEAD/CODE_OF_CONDUCT.md [Onboarding guide]: ../../onboarding.md [approved]: #getting-approvals-for-your-pull-request diff --git a/doc/contributing/releases.md b/doc/contributing/releases.md index 44a2eba83f1394..eb03be2a07de0e 100644 --- a/doc/contributing/releases.md +++ b/doc/contributing/releases.md @@ -25,7 +25,7 @@ official release builds for Node.js, hosted on . * [10. Test the build](#10-test-the-build) * [11. Tag and sign the release commit](#11-tag-and-sign-the-release-commit) * [12. Set up for the next release](#12-set-up-for-the-next-release) - * [13. Cherry-pick the release commit to `master`](#13-cherry-pick-the-release-commit-to-master) + * [13. Cherry-pick the release commit to `main`](#13-cherry-pick-the-release-commit-to-main) * [14. Push the release tag](#14-push-the-release-tag) * [15. Promote and sign the release builds](#15-promote-and-sign-the-release-builds) * [16. Check the release](#16-check-the-release) @@ -119,6 +119,8 @@ Notes: * Version strings are listed below as _"vx.y.z"_ or _"x.y.z"_. Substitute for the release version. * Examples will use the fictional release version `1.2.3`. +* When preparing a security release, follow the security steps in the details + sections. ### 0. Pre-release steps @@ -132,7 +134,7 @@ tracker][]. When preparing a security release, contact Build at least two weekdays in advance of the expected release. To ensure that the security patch(es) can be -properly tested, run a `node-test-pull-request` job against the `master` branch +properly tested, run a `node-test-pull-request` job against the `main` branch of the `nodejs-private/node-private` repository a day or so before the [CI lockdown procedure][] begins. This is to confirm that Jenkins can properly access the private repository. @@ -147,7 +149,7 @@ $ git checkout v1.x-staging $ git reset --hard upstream/v1.x-staging ``` -If the staging branch is not up to date relative to `master`, bring the +If the staging branch is not up to date relative to `main`, bring the appropriate PRs and commits into it. Go through PRs with the label `vN.x`. e.g. [PRs with the `v8.x` label](https://github.com/nodejs/node/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc+label%3Av8.x). @@ -156,7 +158,7 @@ For each PR: * Run or check that there is a passing CI. * Check approvals (you can approve yourself). -* Check that the commit metadata was not changed from the `master` commit. +* Check that the commit metadata was not changed from the `main` commit. * If there are merge conflicts, ask the PR author to rebase. Simple conflicts can be resolved when landing. @@ -175,7 +177,7 @@ duplicate or not. For a list of commits that could be landed in a patch release on v1.x: ```console -$ branch-diff v1.x-staging master --exclude-label=semver-major,semver-minor,dont-land-on-v1.x,backport-requested-v1.x,backport-blocked-v1.x,backport-open-v1.x,backported-to-v1.x --filter-release --format=simple +$ branch-diff v1.x-staging main --exclude-label=semver-major,semver-minor,dont-land-on-v1.x,backport-requested-v1.x,backport-blocked-v1.x,backport-open-v1.x,backported-to-v1.x --filter-release --format=simple ``` Previously released commits and version bumps do not need to be @@ -195,7 +197,7 @@ command. (For semver-minor releases, make sure to remove the `semver-minor` tag from `exclude-label`.) ```console -$ branch-diff v1.x-staging master --exclude-label=semver-major,semver-minor,dont-land-on-v1.x,backport-requested-v1.x,backport-blocked-v1.x,backport-open-v1.x,backported-to-v1.x --filter-release --format=sha --reverse | xargs git cherry-pick +$ branch-diff v1.x-staging main --exclude-label=semver-major,semver-minor,dont-land-on-v1.x,backport-requested-v1.x,backport-blocked-v1.x,backport-open-v1.x,backported-to-v1.x --filter-release --format=sha --reverse | xargs git cherry-pick ``` When cherry-picking commits, if there are simple conflicts you can resolve @@ -216,6 +218,42 @@ Then, push to the staging branch to keep it up-to-date. $ git push upstream v1.x-staging ``` +
                  +Security release + +Security releases with private patches need to be prepared in the `nodejs-private` +GitHub organisation. + +Add the `nodejs-private` remote: + +```console +$ git remote add private git@github.com:nodejs-private/node-private.git +``` + +For security releases, we generally try to only include the security patches. +As there may already be commits on the `vN.x-staging` branch, it is preferable +to checkout the `vN.x` branch and build up the release directly in a proposal +branch. + +```console +$ git checkout vN.x +$ git reset --hard upstream/vN.x +``` + +The list of patches to include should be listed in the "Next Security Release" +issue in `nodejs-private`. Ask the security release steward if you're unsure. + +The `git node land` tool does not work with the `nodejs-private` +organisation. To land a PR in Node.js private, use `git cherry-pick` to apply +each commit from the PR. You will also need to manually apply the PR +metadata (`PR-URL`, `Reviewed-by`, etc.) by amending the commit messages. If +known, additionally include `CVE-ID: CVE-XXXX-XXXXX` in the commit metadata. + +**Note**: Do not run CI on the PRs in `nodejs-private` until CI is locked down. +You can integrate the PRs into the proposal without running full CI. + +
                  + ### 2. Create a new branch for the release Create a new branch named `vx.y.z-proposal`, off the corresponding staging @@ -251,7 +289,7 @@ Collect a formatted list of commits since the last release. Use [`changelog-maker`](https://github.com/nodejs/changelog-maker) to do this: ```console -$ changelog-maker --group +$ changelog-maker --group --markdown ``` `changelog-maker` counts commits since the last tag and if the last tag @@ -259,7 +297,7 @@ in the repository was not on the current branch you may have to supply a `--start-ref` argument: ```console -$ changelog-maker --group --filter-release --start-ref v1.2.2 +$ changelog-maker --group --markdown --filter-release --start-ref v1.2.2 ``` `--filter-release` will remove the release commit from the previous release. @@ -299,12 +337,49 @@ You can use `branch-diff` to get a list of commits with the `notable-change` label: ```console -$ branch-diff upstream/v1.x v1.2.3-proposal --require-label=notable-change -format=simple +$ branch-diff upstream/v1.x v1.2.3-proposal --require-label=notable-change --plaintext ``` Be sure that the `` tag, as well as the two headings, are not indented at all. +
                  +Security release + +For security releases, it is necessary to include more detailed information +including which vulnerabilities have been fixed, and any revert flags or +workarounds to revert to the old behaviour. + +You can use the following template as a guide: + +```markdown + +## YYYY-MM-DD, Version x.y.z (Release Type), @releaser + +This is a security release. + +### Notable changes + +* (High|Medium|Low)(CVE-XXXX-XXXXX) +* ... + +### Commits + +* Include the full list of commits since the last release here. Do not include "Working on X.Y.Z+1" commits. +``` + +Alternatively, refer to one of the [previous security release changelog entries](https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V17.md#2022-01-10-version-1731-current-bethgriggs) +to get an idea of the structure and level of detail. + +For each fix, use your judgement as to whether a subheading is necessary to +describe the fix in more detail. Much of this information should be able to be +lifted from the "post-release" announcement (should be available in +`nodejs-private`). If the CVE is being fixed in multiple release lines, try to +coordinate the changelog content between the other release so the descriptions +are consistent. + +
                  + At the top of the root `CHANGELOG.md` file, there is a table indexing all releases in each major release line. A link to the new release needs to be added to it. Follow the existing examples and be sure to add the release to the _top_ @@ -359,8 +434,13 @@ YYYY-MM-DD, Version x.y.z (Release Type) Notable changes: * Copy the notable changes list here, reformatted for plain-text + +PR-URL: TBD ``` +
                  +Security release + For security releases, begin the commit message with the phrase `This is a security release.` to allow the [distribution indexer](https://github.com/nodejs/nodejs-dist-indexer) to @@ -374,8 +454,12 @@ This is a security release. Notable changes: * Copy the notable changes list here, reformatted for plain-text + +PR-URL: TBD ``` +
                  + ### 6. Propose release on GitHub Push the release branch to `nodejs/node`, not to your own fork. This allows @@ -383,7 +467,7 @@ release branches to more easily be passed between members of the release team if necessary. Create a pull request targeting the correct release line. For example, a -`v5.3.0-proposal` PR should target `v5.x`, not master. Paste the CHANGELOG +`v5.3.0-proposal` PR should target `v5.x`, not `main`. Paste the CHANGELOG modifications into the body of the PR so that collaborators can see what is changing. These PRs should be left open for at least 24 hours, and can be updated as new commits land. If the CHANGELOG pasted into the pull request @@ -406,6 +490,14 @@ good place to @-mention the relevant contributors. After opening the PR, update the release commit to include `PR-URL` metadata and force-push the proposal. +
                  +Security release + +If there are private security patches, remember to push and open the proposal +in the `nodejs-private` GitHub repository. + +
                  + ### 7. Ensure that the release branch is stable Run a **[`node-test-pull-request`](https://ci.nodejs.org/job/node-test-pull-request/)** @@ -421,6 +513,15 @@ purpose. Run it once with the base `vx.x` branch as a reference and with the proposal branch to check if new regressions could be introduced in the ecosystem. +
                  +Security release + +If there are private security patches, do not run any CI jobs on the proposal +until CI has been locked down. The security steward should be coordinating this +with the Build Working Group. + +
                  + ### 8. Produce a nightly build _(optional)_ If there is a reason to produce a test release for the purpose of having others @@ -433,6 +534,13 @@ enter a proper length commit SHA, enter a date string, and select "nightly" for This is particularly recommended if there has been recent work relating to the macOS or Windows installers as they are not tested in any way by CI. +
                  +Security release + +Do not produce a release candidate build. + +
                  + ### 9. Produce release builds Use **[iojs+release](https://ci-release.nodejs.org/job/iojs+release/)** to @@ -464,7 +572,20 @@ failed build if you start again! Jenkins collects the artifacts from the builds, allowing you to download and install the new build. Make sure that the build appears correct. Check the version numbers, and perform some basic checks to confirm that all is well with -the build before moving forward. +the build before moving forward. Use the following list as a baseline: + +* `process.version` is as expected +* `process.release` is as expected +* `process.versions` is as expected (for example, `openssl` or `llhttp` version + must be in the expected updated version) +* npm version (check it matches what we expect) +* Run the test suite against the built binaries (optional) + +```console +./tools/test.py --shell ~/Downloads/node-v18.5.0-linux-x64/bin/node +``` + +There may be test issues if the branch used to test does not match the Node.js binary. ### 11. Tag and sign the release commit @@ -506,6 +627,8 @@ include the release code name. The tag **must** be signed using the GPG key that's listed for you on the project README. +**Note**: Don't push the tag to remote at this point. + ### 12. Set up for the next release On release proposal branch, edit `src/node_version.h` again and: @@ -536,10 +659,30 @@ $ git rebase v1.x $ git push upstream v1.x-staging ``` -### 13. Cherry-pick the release commit to `master` +
                  +Security release + +For security releases, you can start merging the release in the `nodejs-private` +GitHub organisation in advance by following the same steps: + +```console +$ git checkout v1.x +$ git merge --ff-only v1.2.3-proposal +$ git push private v1.x +$ git checkout v1.x-staging +$ git rebase v1.x +$ git push private v1.x-staging +``` + +Once all releasers are ready, you can push each of the branches to the public +repository. + +
                  + +### 13. Cherry-pick the release commit to `main` ```console -$ git checkout master +$ git checkout main $ git cherry-pick v1.x^ ``` @@ -561,10 +704,31 @@ Then finish cherry-picking and push the commit upstream: $ git add src/node_version.h doc $ git cherry-pick --continue $ make lint -$ git push upstream master +$ git push upstream main ``` -**Do not** cherry-pick the "Working on vx.y.z" commit to `master`. +**Do not** cherry-pick the "Working on vx.y.z" commit to `main`. + +
                  +Security release + +For security releases, you will also need to land the fixes on the `main` +branch (if they apply there). Often, you can just cherry-pick the same commit +that landed in the `current` security release which should already have the +metadata. + +It is useful to first push the patches to `private/main` to check that the +GitHub actions runs pass, before pushing to `upstream/main`: + +```console +$ git checkout main +$ git reset --hard upstream/main +$ git cherry-pick ... # apply the patches which apply to main +$ git push private main # push to private main first run GitHub actions +$ git push upstream main +``` + +
                  ### 14. Push the release tag @@ -725,6 +889,13 @@ announcements. Ping the IRC ops and the other [Partner Communities][] liaisons. +
                  +Security release + +Let the security release steward know the releases are available. + +
                  + ### 21. Celebrate _In whatever form you do this..._ @@ -794,8 +965,8 @@ announced immediately following the release of 12.0.0). Approximately two months before a major release, new `vN.x` and `vN.x-staging` branches (where `N` indicates the major release) should be -created as forks of the `master` branch. Up until one week before the release -date, these must be kept in sync with `master`. +created as forks of the `main` branch. Up until one week before the release +date, these must be kept in sync with `main`. The `vN.x` and `vN.x-staging` branches must be kept in sync with one another up until the date of the release. diff --git a/doc/contributing/security-model-strategy.md b/doc/contributing/security-model-strategy.md new file mode 100644 index 00000000000000..42caadc8deb856 --- /dev/null +++ b/doc/contributing/security-model-strategy.md @@ -0,0 +1,77 @@ +# Security Model Strategy + +A clear security model, with features like permissions and policy enforcement, +is a +[top technical priority](https://github.com/nodejs/node/blob/HEAD/doc/contributing/technical-priorities.md#permissionspoliciessecurity-model) +of Node.js. + +## High-level approach + +* Document the security model +* Document threat models and current state of the art +* Support experimentation on features like permissions and policies +* Add a security component in Node.js certification covering + the Node.js security model + +### Document the security model + +The current security model for Node.js is not yet well documented. +At a high level it is: + +* Node.js does not provide a sandbox, both the JavaScript and + native code which is run is trusted to not be malicious. +* The project works to help code running on top of Node.js to avoid + making mistakes, but not doing so is not considered a + vulnerability in Node.js. Just because you can build something + vulnerable with the APIs does not mean there is a vulnerability + in Node.js itself. + +The project has a goal to better document the security model +and this section will be expanded when that happens. + +Once the security model is documented the project will work +to add a security component in Node.js certification covering +the Node.js security model. + +### Document threat models and current state of the art + +Node.js is used in several different use cases and the +threats may be different in each use case. The project +should document the threat models and use that to +help define the security model in the context of each +of these use cases. + +This section will be expanded as the use case/threat +models are defined. The initial list includes: + +* Server +* Desktop application +* Cli +* Single executable application +* CI/CD pipeline components + +### Support experimentation on features like permissions and policies + +The project is not currently planning to provide supported +sandbox functionality, but wants to support experimentation on +related features like policies and permission enforcement. + +Features in this category should: + +* be opt-in, and additional overhead when not enabled must be low +* limit change in core to just what is needed to enable experimentation + +## Current implementation and assets + +Node.js has an experimental implementation of +[policies](https://nodejs.org/docs/latest/api/policy.html#policies). + +The core implementation is in: + +* [`lib/internal/process/policy.js`](https://github.com/nodejs/node/blob/HEAD/lib/internal/process/policy.js) +* [`lib/internal/policy`](https://github.com/nodejs/node/blob/HEAD/lib/internal/policy) + +along with integration into the CJS and ESM loaders in: + +* [`lib/internal/modules/esm`](https://github.com/nodejs/node/blob/HEAD/lib/internal/modules/esm) +* [`lib/internal/modules/cjs`](https://github.com/nodejs/node/blob/HEAD/lib/internal/modules/cjs) diff --git a/doc/contributing/security-release-process.md b/doc/contributing/security-release-process.md index 6aee4655ad75b8..75a531560ea06b 100644 --- a/doc/contributing/security-release-process.md +++ b/doc/contributing/security-release-process.md @@ -19,14 +19,15 @@ steps listed in the process as outlined in The current security stewards are documented in the main Node.js [README.md](https://github.com/nodejs/node#security-release-stewards). -| Company | Person | Release Date | -| ---------- | -------- | ------------ | -| NearForm | Matteo | 2021-Oct-12 | -| Datadog | Bryan | 2022-Jan-10 | -| RH and IBM | Joe | | -| NearForm | Matteo | | -| Datadog | Vladimir | | -| RH and IBM | Michael | | +| Company | Person | Release Date | +| ---------- | --------------- | ------------ | +| NearForm | Matteo | 2021-Oct-12 | +| Datadog | Bryan | 2022-Jan-10 | +| RH and IBM | Joe | 2022-Mar-18 | +| NearForm | Matteo / Rafael | 2022-Jul-07 | +| Datadog | Vladimir | | +| NodeSource | Juan | | +| RH and IBM | Michael | | ## Planning @@ -41,6 +42,8 @@ The current security stewards are documented in the main Node.js * [ ] PR release announcements in [private](https://github.com/nodejs-private/nodejs.org-private): * (Use previous PRs as templates. Don't forget to update the site banner and the date in the slug so that it will move to the top of the blog list.) + * (Consider using a [Vulnerability Score System](https://www.first.org/cvss/calculator/3.1) + to identify severity of each report) * [ ] pre-release: _**LINK TO PR**_ * [ ] post-release: _**LINK TO PR**_ * List vulnerabilities in order of descending severity @@ -74,6 +77,17 @@ The current security stewards are documented in the main Node.js (Re-PR the pre-approved branch from nodejs-private/nodejs.org-private to nodejs/nodejs.org) + If the security release will only contain an OpenSSL update consider + adding the following to the pre-release announcement: + + ```text + Since this security release will only include updates for OpenSSL, if you're using + a Node.js version which is part of a distribution which uses a system + installed OpenSSL, this Node.js security update might not concern you. You may + instead need to update your system OpenSSL libraries, please check the + security announcements for the distribution. + ``` + * [ ] Pre-release announcement [email][]: _**LINK TO EMAIL**_ * Subject: `Node.js security updates for all active release lines, Month Year` * Body: @@ -172,6 +186,10 @@ out a better way, forward the email you receive to * [ ] Make sure the PRs for the vulnerabilities are closed. +* [ ] PR in that you stewarded the release in + [Security release stewards](https://github.com/nodejs/node/blob/HEAD/doc/contributing/security-release-process.md#security-release-stewards). + If necessary add the next rotation of the steward rotation. + [H1 CVE requests]: https://hackerone.com/nodejs/cve_requests [docker-node]: https://github.com/nodejs/docker-node/issues [email]: https://groups.google.com/forum/#!forum/nodejs-sec diff --git a/doc/contributing/security-steward-on-off-boarding.md b/doc/contributing/security-steward-on-off-boarding.md index 19c058f1696bc8..a689e6f33c03c8 100644 --- a/doc/contributing/security-steward-on-off-boarding.md +++ b/doc/contributing/security-steward-on-off-boarding.md @@ -6,6 +6,7 @@ to the project and not to use/disclose to their employer. * Add them to the security-stewards team in the GitHub nodejs-private organization. +* Add them to the [public website team](https://github.com/orgs/nodejs/teams/website). * Ensure they have 2FA enabled in H1. * Add them to the standard team in H1 using this [page](https://hackerone.com/nodejs/team_members). @@ -16,6 +17,7 @@ * Remove them from security-stewards team in the GitHub nodejs-private organization. +* Remove them from public website team * Unless they have access for another reason, remove them from the standard team in H1 using this [page](https://hackerone.com/nodejs/team_members). diff --git a/doc/contributing/strategic-initiatives.md b/doc/contributing/strategic-initiatives.md index ce9fe28bef8804..01d32f3aa382e1 100644 --- a/doc/contributing/strategic-initiatives.md +++ b/doc/contributing/strategic-initiatives.md @@ -6,14 +6,15 @@ agenda to ensure they are active and have the support they need. ## Current initiatives -| Initiative | Champion | Links | -| ------------------------- | --------------------------- | -------------------------------------------------------------------------------------------- | -| Core Promise APIs | [Antoine du Hamel][aduh95] | | -| Future of Build Toolchain | [Mary Marchini][mmarchini] | , | -| QUIC / HTTP3 | [James M Snell][jasnell] | | -| Startup performance | [Joyee Cheung][joyeecheung] | | -| V8 Currency | [Michaël Zasso][targos] | | -| Next-10 | [Michael Dawson][mhdawson] | | +| Initiative | Champion | Links | +| ---------------------- | --------------------------- | --------------------------------------------- | +| Core Promise APIs | [Antoine du Hamel][aduh95] | | +| QUIC / HTTP3 | [James M Snell][jasnell] | | +| Shadow Realm | [Chengzhong Wu][legendecas] | | +| Startup performance | [Joyee Cheung][joyeecheung] | | +| V8 Currency | [Michaël Zasso][targos] | | +| Next-10 | [Michael Dawson][mhdawson] | | +| Single executable apps | [Jesse Chan][jesec] | |
                  List of completed initiatives @@ -38,7 +39,8 @@ agenda to ensure they are active and have the support they need. [aduh95]: https://github.com/aduh95 [jasnell]: https://github.com/jasnell +[jesec]: https://github.com/jesec [joyeecheung]: https://github.com/joyeecheung +[legendecas]: https://github.com/legendecas [mhdawson]: https://github.com/mhdawson -[mmarchini]: https://github.com/mmarchini [targos]: https://github.com/targos diff --git a/doc/contributing/using-symbols.md b/doc/contributing/using-symbols.md index 2bc32862b7169e..dbdd3aff725a46 100644 --- a/doc/contributing/using-symbols.md +++ b/doc/contributing/using-symbols.md @@ -61,7 +61,7 @@ for different reasons. ```js const s = Symbol.for('hello'); -console.log(s === Symbol.for('hello')); +console.log(s === Symbol.for('hello')); // true ``` In the Node.js runtime we prefix all our global symbols with `nodejs.`, diff --git a/doc/contributing/writing-and-running-benchmarks.md b/doc/contributing/writing-and-running-benchmarks.md index a5c52eafb8a3d7..99325d876928b3 100644 --- a/doc/contributing/writing-and-running-benchmarks.md +++ b/doc/contributing/writing-and-running-benchmarks.md @@ -254,19 +254,19 @@ run `node benchmark/compare.js`. As an example on how to check for a possible performance improvement, the [#5134](https://github.com/nodejs/node/pull/5134) pull request will be used as an example. This pull request _claims_ to improve the performance of the -`string_decoder` module. +`node:string_decoder` module. -First build two versions of Node.js, one from the master branch (here called -`./node-master`) and another with the pull request applied (here called +First build two versions of Node.js, one from the `main` branch (here called +`./node-main`) and another with the pull request applied (here called `./node-pr-5134`). To run multiple compiled versions in parallel you need to copy the output of the -build: `cp ./out/Release/node ./node-master`. Check out the following example: +build: `cp ./out/Release/node ./node-main`. Check out the following example: ```console -$ git checkout master +$ git checkout main $ ./configure && make -j4 -$ cp ./out/Release/node ./node-master +$ cp ./out/Release/node ./node-main $ git checkout pr-5134 $ ./configure && make -j4 @@ -276,7 +276,7 @@ $ cp ./out/Release/node ./node-pr-5134 The `compare.js` tool will then produce a csv file with the benchmark results. ```console -$ node benchmark/compare.js --old ./node-master --new ./node-pr-5134 string_decoder > compare-pr-5134.csv +$ node benchmark/compare.js --old ./node-main --new ./node-pr-5134 string_decoder > compare-pr-5134.csv ``` _Tips: there are some useful options of `benchmark/compare.js`. For example, @@ -479,7 +479,7 @@ the code inside the `main` function if it's more than just declaration. ```js 'use strict'; const common = require('../common.js'); -const { SlowBuffer } = require('buffer'); +const { SlowBuffer } = require('node:buffer'); const configs = { // Number of operations, specified here so they show up in the report. @@ -539,7 +539,7 @@ const bench = common.createBenchmark(main, { }); function main(conf) { - const http = require('http'); + const http = require('node:http'); const len = conf.kb * 1024; const chunk = Buffer.alloc(len, 'x'); const server = http.createServer((req, res) => { @@ -570,5 +570,5 @@ Supported options keys are: [git-for-windows]: https://git-scm.com/download/win [nghttp2.org]: https://nghttp2.org [node-benchmark-compare]: https://github.com/targos/node-benchmark-compare -[t-test]: https://en.wikipedia.org/wiki/Student%27s_t-test#Equal_or_unequal_sample_sizes.2C_unequal_variances +[t-test]: https://en.wikipedia.org/wiki/Student%27s_t-test#Equal_or_unequal_sample_sizes%2C_unequal_variances_%28sX1_%3E_2sX2_or_sX2_%3E_2sX1%29 [wrk]: https://github.com/wg/wrk diff --git a/doc/contributing/writing-tests.md b/doc/contributing/writing-tests.md index 9884408af8553a..cc75191d32027e 100644 --- a/doc/contributing/writing-tests.md +++ b/doc/contributing/writing-tests.md @@ -37,8 +37,8 @@ const fixtures = require('../common/fixtures'); // 3 // This test ensures that the http-parser can handle UTF-8 characters // 5 // in the http header. // 6 -const assert = require('assert'); // 8 -const http = require('http'); // 9 +const assert = require('node:assert'); // 8 +const http = require('node:http'); // 9 const server = http.createServer(common.mustCall((req, res) => { // 11 res.end('ok'); // 12 @@ -95,13 +95,13 @@ designed to test. ### **Lines 8-9** ```js -const assert = require('assert'); -const http = require('http'); +const assert = require('node:assert'); +const http = require('node:http'); ``` -The test checks functionality in the `http` module. +The test checks functionality in the `node:http` module. -Most tests use the `assert` module to confirm expectations of the test. +Most tests use the `node:assert` module to confirm expectations of the test. The require statements are sorted in [ASCII][] order (digits, upper @@ -173,8 +173,8 @@ explain this with a real test from the test suite. ```js 'use strict'; require('../common'); -const assert = require('assert'); -const http = require('http'); +const assert = require('node:assert'); +const http = require('node:http'); let request = 0; let listening = 0; @@ -207,7 +207,7 @@ This test could be greatly simplified by using `common.mustCall` like this: ```js 'use strict'; const common = require('../common'); -const http = require('http'); +const http = require('node:http'); const server = http.createServer(common.mustCall((req, res) => { res.end(); @@ -256,8 +256,8 @@ Node.js automatically crashes - and hence, the test fails - in the case of an ```js const common = require('../common'); -const assert = require('assert'); -const fs = require('fs').promises; +const assert = require('node:assert'); +const fs = require('node:fs').promises; // Wrap the `onFulfilled` handler in `common.mustCall()`. fs.readFile('test-file').then( @@ -280,8 +280,8 @@ A test that would require `internal/freelist` could start like this: // Flags: --expose-internals require('../common'); -const assert = require('assert'); -const freelist = require('internal/freelist'); +const assert = require('node:assert'); +const freelist = require('node:internal/freelist'); ``` In specific scenarios it may be useful to get a hold of `primordials` or @@ -291,7 +291,8 @@ In specific scenarios it may be useful to get a hold of `primordials` or node --expose-internals -r internal/test/binding lib/fs.js ``` -This only works if you preload `internal/test/binding` by command line flag. +This only works if you preload `node:internal/test/binding` by command line +flag. ### Assertions @@ -311,6 +312,18 @@ assert.throws( ); ``` +In the case of internal errors, prefer checking only the `code` property: + +```js +assert.throws( + () => { + throw new ERR_FS_FILE_TOO_LARGE(`${sizeKiB} Kb`); + }, + { code: 'ERR_FS_FILE_TOO_LARGE' } + // Do not include message: /^File size ([0-9]+ Kb) is greater than 2 GiB$/ +); +``` + ### Console output Output written by tests to stdout or stderr, such as with `console.log()` or @@ -456,7 +469,7 @@ will depend on what is being tested if this is required or not. To generate a test coverage report, see the [Test Coverage section of the Building guide][]. -Nightly coverage reports for the Node.js master branch are available at +Nightly coverage reports for the Node.js `main` branch are available at . [ASCII]: https://man7.org/linux/man-pages/man7/ascii.7.html diff --git a/doc/node.1 b/doc/node.1 index 6d1cc282764a0a..1f704fafee94f9 100644 --- a/doc/node.1 +++ b/doc/node.1 @@ -142,6 +142,9 @@ Enable Source Map V3 support for stack traces. .It Fl -experimental-fetch Enable experimental support for the Fetch API. . +.It Fl -experimental-global-customevent +Expose the CustomEvent on the global scope. +. .It Fl -experimental-global-webcrypto Expose the Web Crypto API on the global scope. . @@ -270,7 +273,7 @@ This flag is inherited from V8 and is subject to change upstream. It may disappear in a non-semver-major release. . .It Fl -max-http-header-size Ns = Ns Ar size -Specify the maximum size of HTTP headers in bytes. Defaults to 16 KB. +Specify the maximum size of HTTP headers in bytes. Defaults to 16 KiB. . .It Fl -napi-modules This option is a no-op. @@ -378,6 +381,13 @@ the secure heap. The default is 0. The value must be a power of two. .It Fl -secure-heap-min Ns = Ns Ar n Specify the minimum allocation from the OpenSSL secure heap. The default is 2. The value must be a power of two. . +.It Fl -test +Starts the Node.js command line test runner. +. +.It Fl -test-only +Configures the test runner to only execute top level tests that have the `only` +option set. +. .It Fl -throw-deprecation Throw errors for deprecations. . diff --git a/doc/template.html b/doc/template.html index 89dd2fbeac9e01..a186e4fbded383 100644 --- a/doc/template.html +++ b/doc/template.html @@ -9,6 +9,8 @@ + + __JS_FLAVORED_DYNAMIC_CSS__
                  @@ -39,6 +41,7 @@

                  Node.js __VERSION__ documentation

                    +
                  • Node.js __VERSION__
                  • __TOC_PICKER__ __GTOC_PICKER__ __ALTDOCS__ @@ -73,41 +76,5 @@

                    Node.js __VERSION__ documentation

                  - diff --git a/glossary.md b/glossary.md index ccc1e495dfffe6..12c0ca177eab38 100644 --- a/glossary.md +++ b/glossary.md @@ -1,5 +1,9 @@ You may also need to check . +* CITGM: "The Canary in the Goldmine". CITGM is a simple tool for pulling down + an arbitrary module from npm and testing it using a specific version of the + node runtime. The Node.js project uses CITGM to smoke test our releases and + controversial changes. See more details on the [CITGM repository](https://github.com/nodejs/citgm). * LGTM: "Looks good to me", commonly used to approve a code review. * PTAL: Please take a look. * RSLGTM: "Rubber-stamp looks good to me". The reviewer approving without doing @@ -14,3 +18,5 @@ You may also need to check { @@ -127,7 +140,7 @@ function ClientRequest(input, options, cb) { if (typeof options === 'function') { cb = options; - options = input || {}; + options = input || kEmptyObject; } else { options = ObjectAssign(input || {}, options); } @@ -156,7 +169,7 @@ function ClientRequest(input, options, cb) { if (options.path) { const path = String(options.path); - if (RegExpPrototypeTest(INVALID_PATH_REGEX, path)) + if (RegExpPrototypeExec(INVALID_PATH_REGEX, path) !== null) throw new ERR_UNESCAPED_CHARACTERS('Request path'); } @@ -300,6 +313,8 @@ function ClientRequest(input, options, cb) { options.headers); } + this[kUniqueHeaders] = parseUniqueHeadersOption(options.uniqueHeaders); + let optsWithoutSignal = options; if (optsWithoutSignal.signal) { optsWithoutSignal = ObjectAssign({}, options); @@ -344,10 +359,22 @@ ClientRequest.prototype._finish = function _finish() { DTRACE_HTTP_CLIENT_REQUEST(this, this.socket); FunctionPrototypeCall(OutgoingMessage.prototype._finish, this); if (hasObserver('http')) { - this[kClientRequestStatistics] = { - startTime: process.hrtime(), - type: 'HttpClient', - }; + startPerf(this, kClientRequestStatistics, { + type: 'http', + name: 'HttpClient', + detail: { + req: { + method: this.method, + url: `${this.protocol}//${this.host}${this.path}`, + headers: typeof this.getHeaders === 'function' ? this.getHeaders() : {}, + }, + }, + }); + } + if (onClientRequestStartChannel.hasSubscribers) { + onClientRequestStartChannel.publish({ + request: this, + }); } }; @@ -616,7 +643,23 @@ function parserOnIncomingClient(res, shouldKeepAlive) { } DTRACE_HTTP_CLIENT_RESPONSE(socket, req); - emitStatistics(req[kClientRequestStatistics]); + if (req[kClientRequestStatistics] && hasObserver('http')) { + stopPerf(req, kClientRequestStatistics, { + detail: { + res: { + statusCode: res.statusCode, + statusMessage: res.statusMessage, + headers: res.headers, + }, + }, + }); + } + if (onClientResponseFinishChannel.hasSubscribers) { + onClientResponseFinishChannel.publish({ + request: req, + response: res, + }); + } req.res = res; res.req = req; diff --git a/lib/_http_common.js b/lib/_http_common.js index 796deeff055767..0b324ae231e6ff 100644 --- a/lib/_http_common.js +++ b/lib/_http_common.js @@ -24,7 +24,7 @@ const { MathMin, Symbol, - RegExpPrototypeTest, + RegExpPrototypeExec, } = primordials; const { setImmediate } = require('timers'); @@ -128,7 +128,7 @@ function parserOnHeadersComplete(versionMajor, versionMinor, headers, method, return parser.onIncoming(incoming, shouldKeepAlive); } -function parserOnBody(b, start, len) { +function parserOnBody(b) { const stream = this.incoming; // If the stream has already been removed, then drop it. @@ -136,9 +136,8 @@ function parserOnBody(b, start, len) { return; // Pretend this was the result of a stream._read call. - if (len > 0 && !stream._dumped) { - const slice = b.slice(start, start + len); - const ret = stream.push(slice); + if (!stream._dumped) { + const ret = stream.push(b); if (!ret) readStop(this.socket); } @@ -219,7 +218,7 @@ const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; * See https://tools.ietf.org/html/rfc7230#section-3.2.6 */ function checkIsHttpToken(val) { - return RegExpPrototypeTest(tokenRegExp, val); + return RegExpPrototypeExec(tokenRegExp, val) !== null; } const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; @@ -230,7 +229,7 @@ const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; * field-vchar = VCHAR / obs-text */ function checkInvalidHeaderChar(val) { - return RegExpPrototypeTest(headerCharRegex, val); + return RegExpPrototypeExec(headerCharRegex, val) !== null; } function cleanParser(parser) { diff --git a/lib/_http_incoming.js b/lib/_http_incoming.js index 383d50bb57875e..51ceb96d4c1991 100644 --- a/lib/_http_incoming.js +++ b/lib/_http_incoming.js @@ -33,8 +33,10 @@ const { const { Readable, finished } = require('stream'); const kHeaders = Symbol('kHeaders'); +const kHeadersDistinct = Symbol('kHeadersDistinct'); const kHeadersCount = Symbol('kHeadersCount'); const kTrailers = Symbol('kTrailers'); +const kTrailersDistinct = Symbol('kTrailersDistinct'); const kTrailersCount = Symbol('kTrailersCount'); function readStart(socket) { @@ -96,6 +98,7 @@ ObjectSetPrototypeOf(IncomingMessage.prototype, Readable.prototype); ObjectSetPrototypeOf(IncomingMessage, Readable); ObjectDefineProperty(IncomingMessage.prototype, 'connection', { + __proto__: null, get: function() { return this.socket; }, @@ -105,6 +108,7 @@ ObjectDefineProperty(IncomingMessage.prototype, 'connection', { }); ObjectDefineProperty(IncomingMessage.prototype, 'headers', { + __proto__: null, get: function() { if (!this[kHeaders]) { this[kHeaders] = {}; @@ -123,7 +127,28 @@ ObjectDefineProperty(IncomingMessage.prototype, 'headers', { } }); +ObjectDefineProperty(IncomingMessage.prototype, 'headersDistinct', { + __proto__: null, + get: function() { + if (!this[kHeadersDistinct]) { + this[kHeadersDistinct] = {}; + + const src = this.rawHeaders; + const dst = this[kHeadersDistinct]; + + for (let n = 0; n < this[kHeadersCount]; n += 2) { + this._addHeaderLineDistinct(src[n + 0], src[n + 1], dst); + } + } + return this[kHeadersDistinct]; + }, + set: function(val) { + this[kHeadersDistinct] = val; + } +}); + ObjectDefineProperty(IncomingMessage.prototype, 'trailers', { + __proto__: null, get: function() { if (!this[kTrailers]) { this[kTrailers] = {}; @@ -142,6 +167,26 @@ ObjectDefineProperty(IncomingMessage.prototype, 'trailers', { } }); +ObjectDefineProperty(IncomingMessage.prototype, 'trailersDistinct', { + __proto__: null, + get: function() { + if (!this[kTrailersDistinct]) { + this[kTrailersDistinct] = {}; + + const src = this.rawTrailers; + const dst = this[kTrailersDistinct]; + + for (let n = 0; n < this[kTrailersCount]; n += 2) { + this._addHeaderLineDistinct(src[n + 0], src[n + 1], dst); + } + } + return this[kTrailersDistinct]; + }, + set: function(val) { + this[kTrailersDistinct] = val; + } +}); + IncomingMessage.prototype.setTimeout = function setTimeout(msecs, callback) { if (callback) this.on('timeout', callback); @@ -358,6 +403,16 @@ function _addHeaderLine(field, value, dest) { } } +IncomingMessage.prototype._addHeaderLineDistinct = _addHeaderLineDistinct; +function _addHeaderLineDistinct(field, value, dest) { + field = StringPrototypeToLowerCase(field); + if (!dest[field]) { + dest[field] = [value]; + } else { + dest[field].push(value); + } +} + // Call this instead of resume() if we want to just // dump all the data to /dev/null diff --git a/lib/_http_outgoing.js b/lib/_http_outgoing.js index 71f6e3e72376a5..006ac437a14938 100644 --- a/lib/_http_outgoing.js +++ b/lib/_http_outgoing.js @@ -33,7 +33,8 @@ const { ObjectValues, ObjectPrototypeHasOwnProperty, ObjectSetPrototypeOf, - RegExpPrototypeTest, + RegExpPrototypeExec, + SafeSet, StringPrototypeToLowerCase, Symbol, } = primordials; @@ -82,6 +83,7 @@ let debug = require('internal/util/debuglog').debuglog('http', (fn) => { const HIGH_WATER_MARK = getDefaultHighWaterMark(); const kCorked = Symbol('corked'); +const kUniqueHeaders = Symbol('kUniqueHeaders'); const nop = () => {}; @@ -143,6 +145,7 @@ ObjectSetPrototypeOf(OutgoingMessage.prototype, Stream.prototype); ObjectSetPrototypeOf(OutgoingMessage, Stream); ObjectDefineProperty(OutgoingMessage.prototype, 'writableFinished', { + __proto__: null, get() { return ( this.finished && @@ -153,24 +156,28 @@ ObjectDefineProperty(OutgoingMessage.prototype, 'writableFinished', { }); ObjectDefineProperty(OutgoingMessage.prototype, 'writableObjectMode', { + __proto__: null, get() { return false; } }); ObjectDefineProperty(OutgoingMessage.prototype, 'writableLength', { + __proto__: null, get() { return this.outputSize + (this.socket ? this.socket.writableLength : 0); } }); ObjectDefineProperty(OutgoingMessage.prototype, 'writableHighWaterMark', { + __proto__: null, get() { return this.socket ? this.socket.writableHighWaterMark : HIGH_WATER_MARK; } }); ObjectDefineProperty(OutgoingMessage.prototype, 'writableCorked', { + __proto__: null, get() { const corked = this.socket ? this.socket.writableCorked : 0; return corked + this[kCorked]; @@ -178,6 +185,7 @@ ObjectDefineProperty(OutgoingMessage.prototype, 'writableCorked', { }); ObjectDefineProperty(OutgoingMessage.prototype, '_headers', { + __proto__: null, get: internalUtil.deprecate(function() { return this.getHeaders(); }, 'OutgoingMessage.prototype._headers is deprecated', 'DEP0066'), @@ -198,6 +206,7 @@ ObjectDefineProperty(OutgoingMessage.prototype, '_headers', { }); ObjectDefineProperty(OutgoingMessage.prototype, 'connection', { + __proto__: null, get: function() { return this.socket; }, @@ -207,6 +216,7 @@ ObjectDefineProperty(OutgoingMessage.prototype, 'connection', { }); ObjectDefineProperty(OutgoingMessage.prototype, '_headerNames', { + __proto__: null, get: internalUtil.deprecate(function() { const headers = this[kOutHeaders]; if (headers !== null) { @@ -502,7 +512,10 @@ function processHeader(self, state, key, value, validate) { if (validate) validateHeaderName(key); if (ArrayIsArray(value)) { - if (value.length < 2 || !isCookieField(key)) { + if ( + (value.length < 2 || !isCookieField(key)) && + (!self[kUniqueHeaders] || !self[kUniqueHeaders].has(StringPrototypeToLowerCase(key))) + ) { // Retain for(;;) loop for performance reasons // Refs: https://github.com/nodejs/node/pull/30958 for (let i = 0; i < value.length; i++) @@ -529,7 +542,7 @@ function matchHeader(self, state, field, value) { case 'connection': state.connection = true; self._removedConnection = false; - if (RegExpPrototypeTest(RE_CONN_CLOSE, value)) + if (RegExpPrototypeExec(RE_CONN_CLOSE, value) !== null) self._last = true; else self.shouldKeepAlive = true; @@ -537,7 +550,7 @@ function matchHeader(self, state, field, value) { case 'transfer-encoding': state.te = true; self._removedTE = false; - if (RegExpPrototypeTest(RE_TE_CHUNKED, value)) + if (RegExpPrototypeExec(RE_TE_CHUNKED, value) !== null) self.chunkedEncoding = true; break; case 'content-length': @@ -571,6 +584,20 @@ const validateHeaderValue = hideStackFrames((name, value) => { } }); +function parseUniqueHeadersOption(headers) { + if (!ArrayIsArray(headers)) { + return null; + } + + const unique = new SafeSet(); + const l = headers.length; + for (let i = 0; i < l; i++) { + unique.add(StringPrototypeToLowerCase(headers[i])); + } + + return unique; +} + OutgoingMessage.prototype.setHeader = function setHeader(name, value) { if (this._header) { throw new ERR_HTTP_HEADERS_SENT('set'); @@ -586,6 +613,36 @@ OutgoingMessage.prototype.setHeader = function setHeader(name, value) { return this; }; +OutgoingMessage.prototype.appendHeader = function appendHeader(name, value) { + if (this._header) { + throw new ERR_HTTP_HEADERS_SENT('append'); + } + validateHeaderName(name); + validateHeaderValue(name, value); + + const field = StringPrototypeToLowerCase(name); + const headers = this[kOutHeaders]; + if (headers === null || !headers[field]) { + return this.setHeader(name, value); + } + + // Prepare the field for appending, if required + if (!ArrayIsArray(headers[field][1])) { + headers[field][1] = [headers[field][1]]; + } + + const existingValues = headers[field][1]; + if (ArrayIsArray(value)) { + for (let i = 0, length = value.length; i < length; i++) { + existingValues.push(value[i]); + } + } else { + existingValues.push(value); + } + + return this; +}; + OutgoingMessage.prototype.getHeader = function getHeader(name) { validateString(name, 'name'); @@ -682,16 +739,19 @@ OutgoingMessage.prototype._implicitHeader = function _implicitHeader() { }; ObjectDefineProperty(OutgoingMessage.prototype, 'headersSent', { + __proto__: null, configurable: true, enumerable: true, get: function() { return !!this._header; } }); ObjectDefineProperty(OutgoingMessage.prototype, 'writableEnded', { + __proto__: null, get: function() { return this.finished; } }); ObjectDefineProperty(OutgoingMessage.prototype, 'writableNeedDrain', { + __proto__: null, get: function() { return !this.destroyed && !this.finished && this[kNeedDrain]; } @@ -797,7 +857,6 @@ function connectionCorkNT(conn) { conn.uncork(); } - OutgoingMessage.prototype.addTrailers = function addTrailers(headers) { this._trailer = ''; const keys = ObjectKeys(headers); @@ -817,11 +876,31 @@ OutgoingMessage.prototype.addTrailers = function addTrailers(headers) { if (typeof field !== 'string' || !field || !checkIsHttpToken(field)) { throw new ERR_INVALID_HTTP_TOKEN('Trailer name', field); } - if (checkInvalidHeaderChar(value)) { - debug('Trailer "%s" contains invalid characters', field); - throw new ERR_INVALID_CHAR('trailer content', field); + + // Check if the field must be sent several times + const isArrayValue = ArrayIsArray(value); + if ( + isArrayValue && value.length > 1 && + (!this[kUniqueHeaders] || !this[kUniqueHeaders].has(StringPrototypeToLowerCase(field))) + ) { + for (let j = 0, l = value.length; j < l; j++) { + if (checkInvalidHeaderChar(value[j])) { + debug('Trailer "%s"[%d] contains invalid characters', field, j); + throw new ERR_INVALID_CHAR('trailer content', field); + } + this._trailer += field + ': ' + value[j] + '\r\n'; + } + } else { + if (isArrayValue) { + value = ArrayPrototypeJoin(value, '; '); + } + + if (checkInvalidHeaderChar(value)) { + debug('Trailer "%s" contains invalid characters', field); + throw new ERR_INVALID_CHAR('trailer content', field); + } + this._trailer += field + ': ' + value + '\r\n'; } - this._trailer += field + ': ' + value + '\r\n'; } }; @@ -997,6 +1076,8 @@ function(err, event) { }; module.exports = { + kUniqueHeaders, + parseUniqueHeadersOption, validateHeaderName, validateHeaderValue, OutgoingMessage diff --git a/lib/_http_server.js b/lib/_http_server.js index 2e285f5fd74cb3..80039b3e7a26b6 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -26,7 +26,7 @@ const { Error, ObjectKeys, ObjectSetPrototypeOf, - RegExpPrototypeTest, + RegExpPrototypeExec, Symbol, SymbolFor, } = primordials; @@ -46,11 +46,14 @@ const { _checkInvalidHeaderChar: checkInvalidHeaderChar, prepareError, } = require('_http_common'); -const { OutgoingMessage } = require('_http_outgoing'); +const { + kUniqueHeaders, + parseUniqueHeadersOption, + OutgoingMessage +} = require('_http_outgoing'); const { kOutHeaders, kNeedDrain, - emitStatistics } = require('internal/http'); const { defaultTriggerAsyncIdScope, @@ -94,6 +97,8 @@ const kServerResponseStatistics = Symbol('ServerResponseStatistics'); const { hasObserver, + startPerf, + stopPerf, } = require('internal/perf/observe'); const STATUS_CODES = { @@ -186,16 +191,23 @@ function ServerResponse(req) { this._expect_continue = false; if (req.httpVersionMajor < 1 || req.httpVersionMinor < 1) { - this.useChunkedEncodingByDefault = RegExpPrototypeTest(chunkExpression, - req.headers.te); + this.useChunkedEncodingByDefault = RegExpPrototypeExec(chunkExpression, + req.headers.te) !== null; this.shouldKeepAlive = false; } if (hasObserver('http')) { - this[kServerResponseStatistics] = { - startTime: process.hrtime(), - type: 'HttpRequest', - }; + startPerf(this, kServerResponseStatistics, { + type: 'http', + name: 'HttpRequest', + detail: { + req: { + method: req.method, + url: req.url, + headers: req.headers, + }, + }, + }); } } ObjectSetPrototypeOf(ServerResponse.prototype, OutgoingMessage.prototype); @@ -203,7 +215,17 @@ ObjectSetPrototypeOf(ServerResponse, OutgoingMessage); ServerResponse.prototype._finish = function _finish() { DTRACE_HTTP_SERVER_RESPONSE(this.socket); - emitStatistics(this[kServerResponseStatistics]); + if (this[kServerResponseStatistics] && hasObserver('http')) { + stopPerf(this, kServerResponseStatistics, { + detail: { + res: { + statusCode: this.statusCode, + statusMessage: this.statusMessage, + headers: typeof this.getHeaders === 'function' ? this.getHeaders() : {}, + }, + }, + }); + } OutgoingMessage.prototype._finish.call(this); }; @@ -404,6 +426,7 @@ function Server(options, requestListener) { this.maxRequestsPerSocket = 0; this.headersTimeout = 60 * 1000; // 60 seconds this.requestTimeout = 0; + this[kUniqueHeaders] = parseUniqueHeadersOption(options.uniqueHeaders); } ObjectSetPrototypeOf(Server.prototype, net.Server.prototype); ObjectSetPrototypeOf(Server, net.Server); @@ -886,6 +909,7 @@ function parserOnIncoming(server, socket, state, req, keepAlive) { socket, state); res.shouldKeepAlive = keepAlive; + res[kUniqueHeaders] = server[kUniqueHeaders]; DTRACE_HTTP_SERVER_REQUEST(req, socket); if (onRequestStartChannel.hasSubscribers) { @@ -927,13 +951,13 @@ function parserOnIncoming(server, socket, state, req, keepAlive) { if (isRequestsLimitSet && (server.maxRequestsPerSocket < state.requestsCount)) { handled = true; - + server.emit('dropRequest', req, socket); res.writeHead(503); res.end(); } else if (req.headers.expect !== undefined) { handled = true; - if (RegExpPrototypeTest(continueExpression, req.headers.expect)) { + if (RegExpPrototypeExec(continueExpression, req.headers.expect) !== null) { res._expect_continue = true; if (server.listenerCount('checkContinue') > 0) { diff --git a/lib/_tls_common.js b/lib/_tls_common.js index 533fbe7fd256e3..eac85c16b5e9ec 100644 --- a/lib/_tls_common.js +++ b/lib/_tls_common.js @@ -27,7 +27,7 @@ const { ArrayPrototypePush, JSONParse, ObjectCreate, - StringPrototypeReplace, + RegExpPrototypeSymbolReplace, } = primordials; const { @@ -47,6 +47,10 @@ const { }, } = internalBinding('constants'); +const { + kEmptyObject, +} = require('internal/util'); + const { validateInteger, } = require('internal/validators'); @@ -97,7 +101,7 @@ function SecureContext(secureProtocol, secureOptions, minVersion, maxVersion) { } function createSecureContext(options) { - if (!options) options = {}; + if (!options) options = kEmptyObject; const { honorCipherOrder, @@ -138,21 +142,21 @@ function translatePeerCertificate(c) { c.infoAccess = ObjectCreate(null); // XXX: More key validation? - StringPrototypeReplace(info, /([^\n:]*):([^\n]*)(?:\n|$)/g, - (all, key, val) => { - if (val.charCodeAt(0) === 0x22) { - // The translatePeerCertificate function is only - // used on internally created legacy certificate - // objects, and any value that contains a quote - // will always be a valid JSON string literal, - // so this should never throw. - val = JSONParse(val); - } - if (key in c.infoAccess) - ArrayPrototypePush(c.infoAccess[key], val); - else - c.infoAccess[key] = [val]; - }); + RegExpPrototypeSymbolReplace(/([^\n:]*):([^\n]*)(?:\n|$)/g, info, + (all, key, val) => { + if (val.charCodeAt(0) === 0x22) { + // The translatePeerCertificate function is only + // used on internally created legacy certificate + // objects, and any value that contains a quote + // will always be a valid JSON string literal, + // so this should never throw. + val = JSONParse(val); + } + if (key in c.infoAccess) + ArrayPrototypePush(c.infoAccess[key], val); + else + c.infoAccess[key] = [val]; + }); } return c; } diff --git a/lib/_tls_wrap.js b/lib/_tls_wrap.js index 6db61991f50ef5..eda0c0987f9446 100644 --- a/lib/_tls_wrap.js +++ b/lib/_tls_wrap.js @@ -31,8 +31,9 @@ const { ObjectSetPrototypeOf, ReflectApply, RegExp, - RegExpPrototypeTest, - StringPrototypeReplace, + RegExpPrototypeExec, + RegExpPrototypeSymbolReplace, + StringPrototypeReplaceAll, StringPrototypeSlice, Symbol, SymbolFor, @@ -40,7 +41,8 @@ const { const { assertCrypto, - deprecate + deprecate, + kEmptyObject, } = require('internal/util'); assertCrypto(); @@ -425,8 +427,8 @@ function onerror(err) { owner.destroy(err); } else if (owner._tlsOptions?.isServer && owner._rejectUnauthorized && - RegExpPrototypeTest(/peer did not return a certificate/, - err.message)) { + RegExpPrototypeExec(/peer did not return a certificate/, + err.message) !== null) { // Ignore server's authorization errors owner.destroy(); } else { @@ -632,6 +634,7 @@ TLSSocket.prototype._wrapHandle = function(wrap) { // Ref: https://github.com/nodejs/node/commit/f7620fb96d339f704932f9bb9a0dceb9952df2d4 function defineHandleReading(socket, handle) { ObjectDefineProperty(handle, 'reading', { + __proto__: null, get: () => { return socket[kRes].reading; }, @@ -1182,9 +1185,9 @@ function Server(options, listener) { if (typeof options === 'function') { listener = options; - options = {}; + options = kEmptyObject; } else if (options == null || typeof options === 'object') { - options = options || {}; + options = options ?? kEmptyObject; } else { throw new ERR_INVALID_ARG_TYPE('options', 'Object', options); } @@ -1446,9 +1449,9 @@ Server.prototype.addContext = function(servername, context) { throw new ERR_TLS_REQUIRED_SERVER_NAME(); } - const re = new RegExp('^' + StringPrototypeReplace( - StringPrototypeReplace(servername, /([.^$+?\-\\[\]{}])/g, '\\$1'), - /\*/g, '[^.]*' + const re = new RegExp('^' + StringPrototypeReplaceAll( + RegExpPrototypeSymbolReplace(/([.^$+?\-\\[\]{}])/g, servername, '\\$1'), + '*', '[^.]*' ) + '$'); ArrayPrototypePush(this._contexts, [re, tls.createSecureContext(context).context]); @@ -1472,7 +1475,7 @@ function SNICallback(servername, callback) { for (let i = contexts.length - 1; i >= 0; --i) { const elem = contexts[i]; - if (RegExpPrototypeTest(elem[0], servername)) { + if (RegExpPrototypeExec(elem[0], servername) !== null) { callback(null, elem[1]); return; } diff --git a/lib/assert.js b/lib/assert.js index bbd3c283c5f0e9..fc3127f3bf4214 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -35,7 +35,8 @@ const { ObjectKeys, ObjectPrototypeIsPrototypeOf, ReflectApply, - RegExpPrototypeTest, + RegExpPrototypeExec, + RegExpPrototypeSymbolReplace, SafeMap, String, StringPrototypeCharCodeAt, @@ -213,7 +214,7 @@ function getCode(fd, line, column) { let lines = 0; // Prevent blocking the event loop by limiting the maximum amount of // data that may be read. - let maxReads = 32; // bytesPerRead * maxReads = 512 kb + let maxReads = 32; // bytesPerRead * maxReads = 512 KiB const bytesPerRead = 16384; // Use a single buffer up front that is reused until the call site is found. let buffer = Buffer.allocUnsafe(bytesPerRead); @@ -345,7 +346,7 @@ function getErrMessage(message, fn) { // Always normalize indentation, otherwise the message could look weird. if (StringPrototypeIncludes(message, '\n')) { if (EOL === '\r\n') { - message = StringPrototypeReplace(message, /\r\n/g, '\n'); + message = RegExpPrototypeSymbolReplace(/\r\n/g, message, '\n'); } const frames = StringPrototypeSplit(message, '\n'); message = ArrayPrototypeShift(frames); @@ -606,7 +607,7 @@ class Comparison { if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && - RegExpPrototypeTest(obj[key], actual[key])) { + RegExpPrototypeExec(obj[key], actual[key]) !== null) { this[key] = actual[key]; } else { this[key] = obj[key]; @@ -652,7 +653,7 @@ function expectedException(actual, expected, message, fn) { // Handle regular expressions. if (isRegExp(expected)) { const str = String(actual); - if (RegExpPrototypeTest(expected, str)) + if (RegExpPrototypeExec(expected, str) !== null) return; if (!message) { @@ -687,7 +688,7 @@ function expectedException(actual, expected, message, fn) { for (const key of keys) { if (typeof actual[key] === 'string' && isRegExp(expected[key]) && - RegExpPrototypeTest(expected[key], actual[key])) { + RegExpPrototypeExec(expected[key], actual[key]) !== null) { continue; } compareExceptionKey(actual, expected, key, message, keys, fn); @@ -851,7 +852,7 @@ function hasMatchingError(actual, expected) { if (typeof expected !== 'function') { if (isRegExp(expected)) { const str = String(actual); - return RegExpPrototypeTest(expected, str); + return RegExpPrototypeExec(expected, str) !== null; } throw new ERR_INVALID_ARG_TYPE( 'expected', ['Function', 'RegExp'], expected @@ -1000,7 +1001,7 @@ function internalMatch(string, regexp, message, fn) { } const match = fn === assert.match; if (typeof string !== 'string' || - RegExpPrototypeTest(regexp, string) !== match) { + RegExpPrototypeExec(regexp, string) !== null !== match) { if (message instanceof Error) { throw message; } diff --git a/lib/async_hooks.js b/lib/async_hooks.js index 6cc2052474d9c2..8638bb4d7b3497 100644 --- a/lib/async_hooks.js +++ b/lib/async_hooks.js @@ -20,6 +20,7 @@ const { ERR_ASYNC_TYPE, ERR_INVALID_ASYNC_ID } = require('internal/errors').codes; +const { kEmptyObject } = require('internal/util'); const { validateFunction, validateString, @@ -156,7 +157,7 @@ function createHook(fns) { const destroyedSymbol = Symbol('destroyed'); class AsyncResource { - constructor(type, opts = {}) { + constructor(type, opts = kEmptyObject) { validateString(type, 'type'); let triggerAsyncId = opts; @@ -238,12 +239,14 @@ class AsyncResource { } ObjectDefineProperties(bound, { 'length': { + __proto__: null, configurable: true, enumerable: false, value: fn.length, writable: false, }, 'asyncResource': { + __proto__: null, configurable: true, enumerable: true, value: this, diff --git a/lib/buffer.js b/lib/buffer.js index 57d6cddbaa2e6b..874b9b5595985c 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -23,8 +23,10 @@ const { Array, + ArrayFrom, ArrayIsArray, ArrayPrototypeForEach, + ArrayPrototypeIncludes, MathFloor, MathMin, MathTrunc, @@ -35,8 +37,8 @@ const { ObjectDefineProperties, ObjectDefineProperty, ObjectSetPrototypeOf, + RegExpPrototypeSymbolReplace, StringPrototypeCharCodeAt, - StringPrototypeReplace, StringPrototypeSlice, StringPrototypeToLowerCase, StringPrototypeTrim, @@ -130,11 +132,13 @@ addBufferPrototypeMethods(Buffer.prototype); const constants = ObjectDefineProperties({}, { MAX_LENGTH: { + __proto__: null, value: kMaxLength, writable: false, enumerable: true }, MAX_STRING_LENGTH: { + __proto__: null, value: kStringMaxLength, writable: false, enumerable: true @@ -280,6 +284,7 @@ function Buffer(arg, encodingOrOffset, length) { } ObjectDefineProperty(Buffer, SymbolSpecies, { + __proto__: null, enumerable: false, configurable: true, get() { return FastBuffer; } @@ -755,6 +760,7 @@ Buffer.byteLength = byteLength; // For backwards compatibility. ObjectDefineProperty(Buffer.prototype, 'parent', { + __proto__: null, enumerable: true, get() { if (!(this instanceof Buffer)) @@ -763,6 +769,7 @@ ObjectDefineProperty(Buffer.prototype, 'parent', { } }); ObjectDefineProperty(Buffer.prototype, 'offset', { + __proto__: null, enumerable: true, get() { if (!(this instanceof Buffer)) @@ -833,8 +840,8 @@ Buffer.prototype[customInspectSymbol] = function inspect(recurseTimes, ctx) { const max = INSPECT_MAX_BYTES; const actualMax = MathMin(max, this.length); const remaining = this.length - max; - let str = StringPrototypeTrim(StringPrototypeReplace( - this.hexSlice(0, actualMax), /(.{2})/g, '$1 ')); + let str = StringPrototypeTrim(RegExpPrototypeSymbolReplace( + /(.{2})/g, this.hexSlice(0, actualMax), '$1 ')); if (remaining > 0) str += ` ... ${remaining} more byte${remaining > 1 ? 's' : ''}`; // Inspect special properties as well, if possible. @@ -1231,8 +1238,25 @@ function btoa(input) { return buf.toString('base64'); } -const kBase64Digits = - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; +// Refs: https://infra.spec.whatwg.org/#forgiving-base64-decode +const kForgivingBase64AllowedChars = [ + // ASCII whitespace + // Refs: https://infra.spec.whatwg.org/#ascii-whitespace + 0x09, 0x0A, 0x0C, 0x0D, 0x20, + + // Uppercase letters + ...ArrayFrom({ length: 26 }, (_, i) => StringPrototypeCharCodeAt('A') + i), + + // Lowercase letters + ...ArrayFrom({ length: 26 }, (_, i) => StringPrototypeCharCodeAt('a') + i), + + // Decimal digits + ...ArrayFrom({ length: 10 }, (_, i) => StringPrototypeCharCodeAt('0') + i), + + 0x2B, // + + 0x2F, // / + 0x3D, // = +]; function atob(input) { // The implementation here has not been performance optimized in any way and @@ -1243,7 +1267,8 @@ function atob(input) { } input = `${input}`; for (let n = 0; n < input.length; n++) { - if (!kBase64Digits.includes(input[n])) + if (!ArrayPrototypeIncludes(kForgivingBase64AllowedChars, + StringPrototypeCharCodeAt(input, n))) throw lazyDOMException('Invalid character', 'InvalidCharacterError'); } return Buffer.from(input, 'base64').toString('latin1'); @@ -1264,11 +1289,13 @@ module.exports = { ObjectDefineProperties(module.exports, { constants: { + __proto__: null, configurable: false, enumerable: true, value: constants }, INSPECT_MAX_BYTES: { + __proto__: null, configurable: true, enumerable: true, get() { return INSPECT_MAX_BYTES; }, diff --git a/lib/child_process.js b/lib/child_process.js index 415010241cdaba..77b9ff35ff6ea7 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -36,17 +36,18 @@ const { ObjectAssign, ObjectDefineProperty, ObjectPrototypeHasOwnProperty, - RegExpPrototypeTest, + RegExpPrototypeExec, SafeSet, StringPrototypeSlice, StringPrototypeToUpperCase, } = primordials; const { - promisify, convertToValidSignal, createDeferredPromise, - getSystemErrorName + getSystemErrorName, + kEmptyObject, + promisify, } = require('internal/util'); const { isArrayBufferView } = require('internal/util/types'); let debug = require('internal/util/debuglog').debuglog( @@ -96,7 +97,7 @@ const MAX_BUFFER = 1024 * 1024; * @param {{ * cwd?: string; * detached?: boolean; - * env?: Object; + * env?: Record; * execPath?: string; * execArgv?: string[]; * gid?: number; @@ -202,7 +203,7 @@ function normalizeExecArgs(command, options, callback) { * @param {string} command * @param {{ * cmd?: string; - * env?: Object; + * env?: Record; * encoding?: string; * shell?: string; * signal?: AbortSignal; @@ -246,6 +247,7 @@ const customPromiseExecFunction = (orig) => { }; ObjectDefineProperty(exec, promisify.custom, { + __proto__: null, enumerable: false, value: customPromiseExecFunction(exec) }); @@ -256,7 +258,7 @@ ObjectDefineProperty(exec, promisify.custom, { * @param {string[]} [args] * @param {{ * cwd?: string; - * env?: Object; + * env?: Record; * encoding?: string; * timeout?: number; * maxBuffer?: number; @@ -446,6 +448,11 @@ function execFile(file, args = [], options, callback) { child.stdout.setEncoding(encoding); child.stdout.on('data', function onChildStdout(chunk) { + // Do not need to count the length + if (options.maxBuffer === Infinity) { + ArrayPrototypePush(_stdout, chunk); + return; + } const encoding = child.stdout.readableEncoding; const length = encoding ? Buffer.byteLength(chunk, encoding) : @@ -471,6 +478,11 @@ function execFile(file, args = [], options, callback) { child.stderr.setEncoding(encoding); child.stderr.on('data', function onChildStderr(chunk) { + // Do not need to count the length + if (options.maxBuffer === Infinity) { + ArrayPrototypePush(_stderr, chunk); + return; + } const encoding = child.stderr.readableEncoding; const length = encoding ? Buffer.byteLength(chunk, encoding) : @@ -485,7 +497,7 @@ function execFile(file, args = [], options, callback) { ex = new ERR_CHILD_PROCESS_STDIO_MAXBUFFER('stderr'); kill(); } else { - _stderr.push(chunk); + ArrayPrototypePush(_stderr, chunk); } }); } @@ -497,6 +509,7 @@ function execFile(file, args = [], options, callback) { } ObjectDefineProperty(execFile, promisify.custom, { + __proto__: null, enumerable: false, value: customPromiseExecFunction(execFile) }); @@ -519,7 +532,7 @@ function normalizeSpawnArguments(file, args, options) { } if (options === undefined) - options = {}; + options = kEmptyObject; else validateObject(options, 'options'); @@ -579,7 +592,7 @@ function normalizeSpawnArguments(file, args, options) { else file = process.env.comspec || 'cmd.exe'; // '/d /s /c' is used only for cmd.exe. - if (RegExpPrototypeTest(/^(?:.*\\)?cmd(?:\.exe)?$/i, file)) { + if (RegExpPrototypeExec(/^(?:.*\\)?cmd(?:\.exe)?$/i, file) !== null) { args = ['/d', '/s', '/c', `"${command}"`]; windowsVerbatimArguments = true; } else { @@ -673,7 +686,7 @@ function abortChildProcess(child, killSignal) { * @param {string[]} [args] * @param {{ * cwd?: string; - * env?: Object; + * env?: Record; * argv0?: string; * stdio?: Array | string; * detached?: boolean; @@ -746,7 +759,7 @@ function spawn(file, args, options) { * input?: string | Buffer | TypedArray | DataView; * argv0?: string; * stdio?: string | Array; - * env?: Object; + * env?: Record; * uid?: number; * gid?: number; * timeout?: number; @@ -838,7 +851,7 @@ function checkExecSyncError(ret, args, cmd) { * cwd?: string; * input?: string | Buffer | TypedArray | DataView; * stdio?: string | Array; - * env?: Object; + * env?: Record; * uid?: number; * gid?: number; * timeout?: number; @@ -875,7 +888,7 @@ function execFileSync(command, args, options) { * cwd?: string; * input?: string | Buffer | TypedArray | DataView; * stdio?: string | Array; - * env?: Object; + * env?: Record; * shell?: string; * uid?: number; * gid?: number; diff --git a/lib/crypto.js b/lib/crypto.js index 6e050068b2093d..3ec03cbe73154f 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -248,26 +248,31 @@ function getFipsForced() { } ObjectDefineProperty(constants, 'defaultCipherList', { + __proto__: null, value: getOptionValue('--tls-cipher-list') }); ObjectDefineProperties(module.exports, { createCipher: { + __proto__: null, enumerable: false, value: deprecate(createCipher, 'crypto.createCipher is deprecated.', 'DEP0106') }, createDecipher: { + __proto__: null, enumerable: false, value: deprecate(createDecipher, 'crypto.createDecipher is deprecated.', 'DEP0106') }, // crypto.fips is deprecated. DEP0093. Use crypto.getFips()/crypto.setFips() fips: { + __proto__: null, get: fipsForced ? getFipsForced : getFipsCrypto, set: fipsForced ? setFipsForced : setFipsCrypto }, DEFAULT_ENCODING: { + __proto__: null, enumerable: false, configurable: true, get: deprecate(getDefaultEncoding, @@ -276,12 +281,14 @@ ObjectDefineProperties(module.exports, { 'crypto.DEFAULT_ENCODING is deprecated.', 'DEP0091') }, constants: { + __proto__: null, configurable: false, enumerable: true, value: constants }, webcrypto: { + __proto__: null, configurable: false, enumerable: true, get() { return lazyRequire('internal/crypto/webcrypto').crypto; } @@ -290,6 +297,7 @@ ObjectDefineProperties(module.exports, { // Aliases for randomBytes are deprecated. // The ecosystem needs those to exist for backwards compatibility. prng: { + __proto__: null, enumerable: false, configurable: true, writable: true, @@ -298,6 +306,7 @@ ObjectDefineProperties(module.exports, { randomBytes }, pseudoRandomBytes: { + __proto__: null, enumerable: false, configurable: true, writable: true, @@ -307,6 +316,7 @@ ObjectDefineProperties(module.exports, { randomBytes }, rng: { + __proto__: null, enumerable: false, configurable: true, writable: true, diff --git a/lib/dgram.js b/lib/dgram.js index 8aaafb5f90b211..6125adff0b5a82 100644 --- a/lib/dgram.js +++ b/lib/dgram.js @@ -159,7 +159,7 @@ function startListening(socket) { const state = socket[kStateSymbol]; state.handle.onmessage = onMessage; - // Todo: handle errors + state.handle.onerror = onError; state.handle.recvStart(); state.receiving = true; state.bindState = BIND_STATE_BOUND; @@ -923,6 +923,12 @@ function onMessage(nread, handle, buf, rinfo) { } +function onError(nread, handle, error) { + const self = handle[owner_symbol]; + return self.emit('error', error); +} + + Socket.prototype.ref = function() { const handle = this[kStateSymbol].handle; @@ -965,6 +971,7 @@ Socket.prototype.getSendBufferSize = function() { // Deprecated private APIs. ObjectDefineProperty(Socket.prototype, '_handle', { + __proto__: null, get: deprecate(function() { return this[kStateSymbol].handle; }, 'Socket.prototype._handle is deprecated', 'DEP0112'), @@ -975,6 +982,7 @@ ObjectDefineProperty(Socket.prototype, '_handle', { ObjectDefineProperty(Socket.prototype, '_receiving', { + __proto__: null, get: deprecate(function() { return this[kStateSymbol].receiving; }, 'Socket.prototype._receiving is deprecated', 'DEP0112'), @@ -985,6 +993,7 @@ ObjectDefineProperty(Socket.prototype, '_receiving', { ObjectDefineProperty(Socket.prototype, '_bindState', { + __proto__: null, get: deprecate(function() { return this[kStateSymbol].bindState; }, 'Socket.prototype._bindState is deprecated', 'DEP0112'), @@ -995,6 +1004,7 @@ ObjectDefineProperty(Socket.prototype, '_bindState', { ObjectDefineProperty(Socket.prototype, '_queue', { + __proto__: null, get: deprecate(function() { return this[kStateSymbol].queue; }, 'Socket.prototype._queue is deprecated', 'DEP0112'), @@ -1005,6 +1015,7 @@ ObjectDefineProperty(Socket.prototype, '_queue', { ObjectDefineProperty(Socket.prototype, '_reuseAddr', { + __proto__: null, get: deprecate(function() { return this[kStateSymbol].reuseAddr; }, 'Socket.prototype._reuseAddr is deprecated', 'DEP0112'), @@ -1027,6 +1038,7 @@ Socket.prototype._stopReceiving = deprecate(function() { // Legacy alias on the C++ wrapper object. This is not public API, so we may // want to runtime-deprecate it at some point. There's no hurry, though. ObjectDefineProperty(UDP.prototype, 'owner', { + __proto__: null, get() { return this[owner_symbol]; }, set(v) { return this[owner_symbol] = v; } }); diff --git a/lib/diagnostics_channel.js b/lib/diagnostics_channel.js index c85a9532b4d372..f8c1edb96dfe8a 100644 --- a/lib/diagnostics_channel.js +++ b/lib/diagnostics_channel.js @@ -109,6 +109,22 @@ function channel(name) { return channel; } +function subscribe(name, subscription) { + const chan = channel(name); + channels[name].incRef(); + chan.subscribe(subscription); +} + +function unsubscribe(name, subscription) { + const chan = channel(name); + if (!chan.unsubscribe(subscription)) { + return false; + } + + channels[name].decRef(); + return true; +} + function hasSubscribers(name) { let channel; const ref = channels[name]; @@ -123,5 +139,7 @@ function hasSubscribers(name) { module.exports = { channel, hasSubscribers, + subscribe, + unsubscribe, Channel }; diff --git a/lib/dns.js b/lib/dns.js index 4eadbd04158707..233c551212c56d 100644 --- a/lib/dns.js +++ b/lib/dns.js @@ -27,6 +27,7 @@ const { ObjectDefineProperties, ObjectDefineProperty, ReflectApply, + Symbol, } = primordials; const cares = internalBinding('cares_wrap'); @@ -43,7 +44,34 @@ const { emitInvalidHostnameWarning, getDefaultVerbatim, setDefaultResultOrder, + errorCodes: dnsErrorCodes, } = require('internal/dns/utils'); +const { + NODATA, + FORMERR, + SERVFAIL, + NOTFOUND, + NOTIMP, + REFUSED, + BADQUERY, + BADNAME, + BADFAMILY, + BADRESP, + CONNREFUSED, + TIMEOUT, + EOF, + FILE, + NOMEM, + DESTRUCTION, + BADSTR, + BADFLAGS, + NONAME, + BADHINTS, + NOTINITIALIZED, + LOADIPHLPAPI, + ADDRGETNETWORKPARAMS, + CANCELLED, +} = dnsErrorCodes; const { ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, @@ -62,6 +90,16 @@ const { QueryReqWrap, } = cares; +const kPerfHooksDnsLookupContext = Symbol('kPerfHooksDnsLookupContext'); +const kPerfHooksDnsLookupServiceContext = Symbol('kPerfHooksDnsLookupServiceContext'); +const kPerfHooksDnsLookupResolveContext = Symbol('kPerfHooksDnsLookupResolveContext'); + +const { + hasObserver, + startPerf, + stopPerf, +} = require('internal/perf/observe'); + const dnsException = errors.dnsException; let promises = null; // Lazy loaded @@ -71,6 +109,9 @@ function onlookup(err, addresses) { return this.callback(dnsException(err, 'getaddrinfo', this.hostname)); } this.callback(null, addresses[0], this.family || isIP(addresses[0])); + if (this[kPerfHooksDnsLookupContext] && hasObserver('dns')) { + stopPerf(this, kPerfHooksDnsLookupContext); + } } @@ -89,6 +130,9 @@ function onlookupall(err, addresses) { } this.callback(null, addresses); + if (this[kPerfHooksDnsLookupContext] && hasObserver('dns')) { + stopPerf(this, kPerfHooksDnsLookupContext); + } } @@ -161,11 +205,20 @@ function lookup(hostname, options, callback) { process.nextTick(callback, dnsException(err, 'getaddrinfo', hostname)); return {}; } + if (hasObserver('dns')) { + const detail = { + hostname, + family, + hints, + verbatim, + }; + startPerf(req, kPerfHooksDnsLookupContext, { type: 'dns', name: 'lookup', detail }); + } return req; } ObjectDefineProperty(lookup, customPromisifyArgs, - { value: ['address', 'family'], enumerable: false }); + { __proto__: null, value: ['address', 'family'], enumerable: false }); function onlookupservice(err, hostname, service) { @@ -173,6 +226,9 @@ function onlookupservice(err, hostname, service) { return this.callback(dnsException(err, 'getnameinfo', this.hostname)); this.callback(null, hostname, service); + if (this[kPerfHooksDnsLookupServiceContext] && hasObserver('dns')) { + stopPerf(this, kPerfHooksDnsLookupServiceContext); + } } @@ -197,11 +253,21 @@ function lookupService(address, port, callback) { const err = cares.getnameinfo(req, address, port); if (err) throw dnsException(err, 'getnameinfo', address); + if (hasObserver('dns')) { + startPerf(req, kPerfHooksDnsLookupServiceContext, { + type: 'dns', + name: 'lookupService', + detail: { + host: address, + port, + }, + }); + } return req; } ObjectDefineProperty(lookupService, customPromisifyArgs, - { value: ['hostname', 'service'], enumerable: false }); + { __proto__: null, value: ['hostname', 'service'], enumerable: false }); function onresolve(err, result, ttls) { @@ -211,8 +277,12 @@ function onresolve(err, result, ttls) { if (err) this.callback(dnsException(err, this.bindingName, this.hostname)); - else + else { this.callback(null, result); + if (this[kPerfHooksDnsLookupResolveContext] && hasObserver('dns')) { + stopPerf(this, kPerfHooksDnsLookupResolveContext); + } + } } function resolver(bindingName) { @@ -234,9 +304,19 @@ function resolver(bindingName) { req.ttl = !!(options && options.ttl); const err = this._handle[bindingName](req, toASCII(name)); if (err) throw dnsException(err, bindingName, name); + if (hasObserver('dns')) { + startPerf(req, kPerfHooksDnsLookupResolveContext, { + type: 'dns', + name: bindingName, + detail: { + host: name, + ttl: req.ttl, + }, + }); + } return req; } - ObjectDefineProperty(query, 'name', { value: bindingName }); + ObjectDefineProperty(query, 'name', { __proto__: null, value: bindingName }); return query; } @@ -299,43 +379,42 @@ module.exports = { V4MAPPED: cares.AI_V4MAPPED, // ERROR CODES - NODATA: 'ENODATA', - FORMERR: 'EFORMERR', - SERVFAIL: 'ESERVFAIL', - NOTFOUND: 'ENOTFOUND', - NOTIMP: 'ENOTIMP', - REFUSED: 'EREFUSED', - BADQUERY: 'EBADQUERY', - BADNAME: 'EBADNAME', - BADFAMILY: 'EBADFAMILY', - BADRESP: 'EBADRESP', - CONNREFUSED: 'ECONNREFUSED', - TIMEOUT: 'ETIMEOUT', - EOF: 'EOF', - FILE: 'EFILE', - NOMEM: 'ENOMEM', - DESTRUCTION: 'EDESTRUCTION', - BADSTR: 'EBADSTR', - BADFLAGS: 'EBADFLAGS', - NONAME: 'ENONAME', - BADHINTS: 'EBADHINTS', - NOTINITIALIZED: 'ENOTINITIALIZED', - LOADIPHLPAPI: 'ELOADIPHLPAPI', - ADDRGETNETWORKPARAMS: 'EADDRGETNETWORKPARAMS', - CANCELLED: 'ECANCELLED' + NODATA, + FORMERR, + SERVFAIL, + NOTFOUND, + NOTIMP, + REFUSED, + BADQUERY, + BADNAME, + BADFAMILY, + BADRESP, + CONNREFUSED, + TIMEOUT, + EOF, + FILE, + NOMEM, + DESTRUCTION, + BADSTR, + BADFLAGS, + NONAME, + BADHINTS, + NOTINITIALIZED, + LOADIPHLPAPI, + ADDRGETNETWORKPARAMS, + CANCELLED, }; bindDefaultResolver(module.exports, getDefaultResolver()); ObjectDefineProperties(module.exports, { promises: { + __proto__: null, configurable: true, enumerable: true, get() { if (promises === null) { promises = require('internal/dns/promises'); - promises.setServers = defaultResolverSetServers; - promises.setDefaultResultOrder = setDefaultResultOrder; } return promises; } diff --git a/lib/dns/promises.js b/lib/dns/promises.js index ad8a2561ef51e4..35881e5bb47374 100644 --- a/lib/dns/promises.js +++ b/lib/dns/promises.js @@ -1,5 +1,3 @@ 'use strict'; -const dnsPromises = require('internal/dns/promises'); -dnsPromises.setServers = require('dns').setServers; -module.exports = dnsPromises; +module.exports = require('internal/dns/promises'); diff --git a/lib/domain.js b/lib/domain.js index fbce94bad5fe28..4951c0ae21b0bb 100644 --- a/lib/domain.js +++ b/lib/domain.js @@ -39,6 +39,7 @@ const { Promise, ReflectApply, SafeMap, + SafeWeakMap, Symbol, } = primordials; @@ -59,6 +60,7 @@ const { WeakReference } = internalBinding('util'); // effective optimizations const _domain = [null]; ObjectDefineProperty(process, 'domain', { + __proto__: null, enumerable: true, get: function() { return _domain[0]; @@ -68,6 +70,7 @@ ObjectDefineProperty(process, 'domain', { } }); +const vmPromises = new SafeWeakMap(); const pairing = new SafeMap(); const asyncHook = createHook({ init(asyncId, type, triggerAsyncId, resource) { @@ -78,11 +81,17 @@ const asyncHook = createHook({ // have a domain property as it can be used to escape the sandbox. if (type !== 'PROMISE' || resource instanceof Promise) { ObjectDefineProperty(resource, 'domain', { + __proto__: null, configurable: true, enumerable: false, value: process.domain, writable: true }); + // Because promises from other contexts don't get a domain field, + // the domain needs to be held alive another way. Stuffing it in a + // weakmap connected to the promise lifetime can fix that. + } else { + vmPromises.set(resource, process.domain); } } }, @@ -231,6 +240,7 @@ Domain.prototype._errorHandler = function(er) { if ((typeof er === 'object' && er !== null) || typeof er === 'function') { ObjectDefineProperty(er, 'domain', { + __proto__: null, configurable: true, enumerable: false, value: this, @@ -356,6 +366,7 @@ Domain.prototype.add = function(ee) { } ObjectDefineProperty(ee, 'domain', { + __proto__: null, configurable: true, enumerable: false, value: this, @@ -388,6 +399,7 @@ function intercepted(_this, self, cb, fnargs) { er.domainBound = cb; er.domainThrown = false; ObjectDefineProperty(er, 'domain', { + __proto__: null, configurable: true, enumerable: false, value: self, @@ -433,6 +445,7 @@ Domain.prototype.bind = function(cb) { } ObjectDefineProperty(runBound, 'domain', { + __proto__: null, configurable: true, enumerable: false, value: this, @@ -448,6 +461,7 @@ EventEmitter.usingDomains = true; const eventInit = EventEmitter.init; EventEmitter.init = function(opts) { ObjectDefineProperty(this, 'domain', { + __proto__: null, configurable: true, enumerable: false, value: null, @@ -482,6 +496,7 @@ EventEmitter.prototype.emit = function emit(...args) { if (typeof er === 'object') { er.domainEmitter = this; ObjectDefineProperty(er, 'domain', { + __proto__: null, configurable: true, enumerable: false, value: domain, diff --git a/lib/events.js b/lib/events.js index 9162e8ca8b273c..7abf18f42c0064 100644 --- a/lib/events.js +++ b/lib/events.js @@ -22,7 +22,6 @@ 'use strict'; const { - ArrayPrototypeIndexOf, ArrayPrototypeJoin, ArrayPrototypeShift, ArrayPrototypeSlice, @@ -33,7 +32,6 @@ const { ErrorCaptureStackTrace, FunctionPrototypeBind, FunctionPrototypeCall, - MathMin, NumberIsNaN, ObjectCreate, ObjectDefineProperty, @@ -52,7 +50,13 @@ const { SymbolAsyncIterator, } = primordials; const kRejection = SymbolFor('nodejs.rejection'); -const { inspect } = require('internal/util/inspect'); + +const { kEmptyObject } = require('internal/util'); + +const { + inspect, + identicalSequenceRange, +} = require('internal/util/inspect'); let spliceOne; @@ -219,6 +223,7 @@ EventEmitter.usingDomains = false; EventEmitter.captureRejectionSymbol = kRejection; ObjectDefineProperty(EventEmitter, 'captureRejections', { + __proto__: null, get() { return EventEmitter.prototype[kCapture]; }, @@ -231,6 +236,7 @@ ObjectDefineProperty(EventEmitter, 'captureRejections', { }); ObjectDefineProperty(EventEmitter, 'EventEmitterAsyncResource', { + __proto__: null, enumerable: true, get: lazyEventEmitterAsyncResource, set: undefined, @@ -241,6 +247,7 @@ EventEmitter.errorMonitor = kErrorMonitor; // The default for captureRejections is false ObjectDefineProperty(EventEmitter.prototype, kCapture, { + __proto__: null, value: false, writable: true, enumerable: false @@ -260,6 +267,7 @@ function checkListener(listener) { } ObjectDefineProperty(EventEmitter, 'defaultMaxListeners', { + __proto__: null, enumerable: true, get: function() { return defaultMaxListeners; @@ -276,12 +284,14 @@ ObjectDefineProperty(EventEmitter, 'defaultMaxListeners', { ObjectDefineProperties(EventEmitter, { kMaxEventTargetListeners: { + __proto__: null, value: kMaxEventTargetListeners, enumerable: false, configurable: false, writable: false, }, kMaxEventTargetListenersWarned: { + __proto__: null, value: kMaxEventTargetListenersWarned, enumerable: false, configurable: false, @@ -415,31 +425,6 @@ EventEmitter.prototype.getMaxListeners = function getMaxListeners() { return _getMaxListeners(this); }; -// Returns the length and line number of the first sequence of `a` that fully -// appears in `b` with a length of at least 4. -function identicalSequenceRange(a, b) { - for (let i = 0; i < a.length - 3; i++) { - // Find the first entry of b that matches the current entry of a. - const pos = ArrayPrototypeIndexOf(b, a[i]); - if (pos !== -1) { - const rest = b.length - pos; - if (rest > 3) { - let len = 1; - const maxLen = MathMin(a.length - i, rest); - // Count the number of consecutive entries. - while (maxLen > len && a[i + len] === b[pos + len]) { - len++; - } - if (len > 3) { - return [len, i]; - } - } - } - } - - return [0, 0]; -} - function enhanceStackTrace(err, own) { let ctorInfo = ''; try { @@ -456,9 +441,9 @@ function enhanceStackTrace(err, own) { const ownStack = ArrayPrototypeSlice( StringPrototypeSplit(own.stack, '\n'), 1); - const { 0: len, 1: off } = identicalSequenceRange(ownStack, errStack); + const { len, offset } = identicalSequenceRange(ownStack, errStack); if (len > 0) { - ArrayPrototypeSplice(ownStack, off + 1, len - 2, + ArrayPrototypeSplice(ownStack, offset + 1, len - 2, ' [... lines matching original stack trace ...]'); } @@ -493,6 +478,7 @@ EventEmitter.prototype.emit = function emit(type, ...args) { const capture = {}; ErrorCaptureStackTrace(capture, EventEmitter.prototype.emit); ObjectDefineProperty(er, kEnhanceStackBeforeInspector, { + __proto__: null, value: FunctionPrototypeBind(enhanceStackTrace, this, er, capture), configurable: true }); @@ -938,11 +924,11 @@ function getEventListeners(emitterOrTarget, type) { * @param {{ signal: AbortSignal; }} [options] * @returns {Promise} */ -async function once(emitter, name, options = {}) { +async function once(emitter, name, options = kEmptyObject) { const signal = options?.signal; validateAbortSignal(signal, 'options.signal'); if (signal?.aborted) - throw new AbortError(); + throw new AbortError(undefined, { cause: signal?.reason }); return new Promise((resolve, reject) => { const errorListener = (err) => { emitter.removeListener(name, resolver); @@ -962,12 +948,14 @@ async function once(emitter, name, options = {}) { }; eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); if (name !== 'error' && typeof emitter.once === 'function') { + // EventTarget does not have `error` event semantics like Node + // EventEmitters, we listen to `error` events only on EventEmitters. emitter.once('error', errorListener); } function abortListener() { eventTargetAgnosticRemoveListener(emitter, name, resolver); eventTargetAgnosticRemoveListener(emitter, 'error', errorListener); - reject(new AbortError()); + reject(new AbortError(undefined, { cause: signal?.reason })); } if (signal != null) { eventTargetAgnosticAddListener( @@ -1001,9 +989,7 @@ function eventTargetAgnosticAddListener(emitter, name, listener, flags) { emitter.on(name, listener); } } else if (typeof emitter.addEventListener === 'function') { - // EventTarget does not have `error` event semantics like Node - // EventEmitters, we do not listen to `error` events here. - emitter.addEventListener(name, (arg) => { listener(arg); }, flags); + emitter.addEventListener(name, listener, flags); } else { throw new ERR_INVALID_ARG_TYPE('emitter', 'EventEmitter', emitter); } @@ -1020,7 +1006,7 @@ function on(emitter, event, options) { const signal = options?.signal; validateAbortSignal(signal, 'options.signal'); if (signal?.aborted) - throw new AbortError(); + throw new AbortError(undefined, { cause: signal?.reason }); const unconsumedEvents = []; const unconsumedPromises = []; @@ -1108,7 +1094,7 @@ function on(emitter, event, options) { return iterator; function abortListener() { - errorHandler(new AbortError()); + errorHandler(new AbortError(undefined, { cause: signal?.reason })); } function eventHandler(...args) { diff --git a/lib/fs.js b/lib/fs.js index c33450fce852f4..eb65a810177011 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -33,13 +33,13 @@ const { BigIntPrototypeToString, MathMax, Number, - ObjectCreate, ObjectDefineProperties, ObjectDefineProperty, Promise, ReflectApply, RegExpPrototypeExec, SafeMap, + SafeSet, String, StringPrototypeCharCodeAt, StringPrototypeIndexOf, @@ -83,7 +83,13 @@ const { const { FSReqCallback } = binding; const { toPathIfFileURL } = require('internal/url'); -const internalUtil = require('internal/util'); +const { + customPromisifyArgs: kCustomPromisifyArgsSymbol, + kEmptyObject, + promisify: { + custom: kCustomPromisifiedSymbol, + }, +} = require('internal/util'); const { constants: { kIoMaxLength, @@ -116,6 +122,7 @@ const { validateRmOptionsSync, validateRmdirOptions, validateStringAfterArrayBufferView, + validatePrimitiveStringAfterArrayBufferView, warnOnNonPortableTemplate } = require('internal/fs/utils'); const { @@ -136,6 +143,7 @@ const { validateEncoding, validateFunction, validateInteger, + validateObject, validateString, } = require('internal/validators'); @@ -270,10 +278,11 @@ function exists(path, callback) { } } -ObjectDefineProperty(exists, internalUtil.promisify.custom, { - value: (path) => { +ObjectDefineProperty(exists, kCustomPromisifiedSymbol, { + __proto__: null, + value: function exists(path) { // eslint-disable-line func-name-matching return new Promise((resolve) => fs.exists(path, resolve)); - } + }, }); // fs.existsSync never throws, it only returns true or false. @@ -350,7 +359,7 @@ function readFileAfterStat(err, stats) { function checkAborted(signal, callback) { if (signal?.aborted) { - callback(new AbortError()); + callback(new AbortError(undefined, { cause: signal?.reason })); return true; } return false; @@ -590,9 +599,9 @@ function openSync(path, flags, mode) { * Reads file from the specified `fd` (file descriptor). * @param {number} fd * @param {Buffer | TypedArray | DataView} buffer - * @param {number} offset + * @param {number} offsetOrOptions * @param {number} length - * @param {number | bigint} position + * @param {number | bigint | null} position * @param {( * err?: Error, * bytesRead?: number, @@ -600,30 +609,36 @@ function openSync(path, flags, mode) { * ) => any} callback * @returns {void} */ -function read(fd, buffer, offset, length, position, callback) { +function read(fd, buffer, offsetOrOptions, length, position, callback) { fd = getValidatedFd(fd); - if (arguments.length <= 3) { - // Assume fs.read(fd, options, callback) - let options = ObjectCreate(null); - if (arguments.length < 3) { + let offset = offsetOrOptions; + let params = null; + if (arguments.length <= 4) { + if (arguments.length === 4) { + // This is fs.read(fd, buffer, options, callback) + validateObject(offsetOrOptions, 'options', { nullable: true }); + callback = length; + params = offsetOrOptions; + } else if (arguments.length === 3) { + // This is fs.read(fd, bufferOrParams, callback) + if (!isArrayBufferView(buffer)) { + // This is fs.read(fd, params, callback) + params = buffer; + ({ buffer = Buffer.alloc(16384) } = params ?? kEmptyObject); + } + callback = offsetOrOptions; + } else { // This is fs.read(fd, callback) - // buffer will be the callback callback = buffer; - } else { - // This is fs.read(fd, {}, callback) - // buffer will be the options object - // offset is the callback - options = buffer; - callback = offset; + buffer = Buffer.alloc(16384); } ({ - buffer = Buffer.alloc(16384), offset = 0, length = buffer.byteLength - offset, - position = null - } = options); + position = null, + } = params ?? kEmptyObject); } validateBuffer(buffer); @@ -666,8 +681,8 @@ function read(fd, buffer, offset, length, position, callback) { binding.read(fd, buffer, offset, length, position, req); } -ObjectDefineProperty(read, internalUtil.customPromisifyArgs, - { value: ['bytesRead', 'buffer'], enumerable: false }); +ObjectDefineProperty(read, kCustomPromisifyArgsSymbol, + { __proto__: null, value: ['bytesRead', 'buffer'], enumerable: false }); /** * Synchronously reads the file from the @@ -677,7 +692,7 @@ ObjectDefineProperty(read, internalUtil.customPromisifyArgs, * @param {{ * offset?: number; * length?: number; - * position?: number | bigint; + * position?: number | bigint | null; * }} [offset] * @returns {number} */ @@ -688,12 +703,12 @@ function readSync(fd, buffer, offset, length, position) { if (arguments.length <= 3) { // Assume fs.readSync(fd, buffer, options) - const options = offset || ObjectCreate(null); + const options = offset || kEmptyObject; ({ offset = 0, length = buffer.byteLength - offset, - position = null + position = null, } = options); } @@ -733,7 +748,7 @@ function readSync(fd, buffer, offset, length, position) { * and writes to an array of `ArrayBufferView`s. * @param {number} fd * @param {ArrayBufferView[]} buffers - * @param {number} [position] + * @param {number | null} [position] * @param {( * err?: Error, * bytesRead?: number, @@ -759,8 +774,8 @@ function readv(fd, buffers, position, callback) { return binding.readBuffers(fd, buffers, position, req); } -ObjectDefineProperty(readv, internalUtil.customPromisifyArgs, - { value: ['bytesRead', 'buffers'], enumerable: false }); +ObjectDefineProperty(readv, kCustomPromisifyArgsSymbol, + { __proto__: null, value: ['bytesRead', 'buffers'], enumerable: false }); /** * Synchronously reads file from the @@ -768,7 +783,7 @@ ObjectDefineProperty(readv, internalUtil.customPromisifyArgs, * of `ArrayBufferView`s. * @param {number} fd * @param {ArrayBufferView[]} buffers - * @param {number} [position] + * @param {number | null} [position] * @returns {number} */ function readvSync(fd, buffers, position) { @@ -789,9 +804,9 @@ function readvSync(fd, buffers, position) { * Writes `buffer` to the specified `fd` (file descriptor). * @param {number} fd * @param {Buffer | TypedArray | DataView | string | object} buffer - * @param {number} [offset] + * @param {number | object} [offsetOrOptions] * @param {number} [length] - * @param {number} [position] + * @param {number | null} [position] * @param {( * err?: Error, * bytesWritten?: number; @@ -799,7 +814,7 @@ function readvSync(fd, buffers, position) { * ) => any} callback * @returns {void} */ -function write(fd, buffer, offset, length, position, callback) { +function write(fd, buffer, offsetOrOptions, length, position, callback) { function wrapper(err, written) { // Retain a reference to buffer so that it can't be GC'ed too soon. callback(err, written || 0, buffer); @@ -807,8 +822,18 @@ function write(fd, buffer, offset, length, position, callback) { fd = getValidatedFd(fd); + let offset = offsetOrOptions; if (isArrayBufferView(buffer)) { callback = maybeCallback(callback || position || length || offset); + + if (typeof offset === 'object') { + ({ + offset = 0, + length = buffer.byteLength - offset, + position = null, + } = offsetOrOptions ?? kEmptyObject); + } + if (offset == null || typeof offset === 'function') { offset = 0; } else { @@ -846,24 +871,35 @@ function write(fd, buffer, offset, length, position, callback) { return binding.writeString(fd, str, offset, length, req); } -ObjectDefineProperty(write, internalUtil.customPromisifyArgs, - { value: ['bytesWritten', 'buffer'], enumerable: false }); +ObjectDefineProperty(write, kCustomPromisifyArgsSymbol, + { __proto__: null, value: ['bytesWritten', 'buffer'], enumerable: false }); /** * Synchronously writes `buffer` to the * specified `fd` (file descriptor). * @param {number} fd - * @param {Buffer | TypedArray | DataView | string | object} buffer - * @param {number} [offset] - * @param {number} [length] - * @param {number} [position] + * @param {Buffer | TypedArray | DataView | string} buffer + * @param {{ + * offset?: number; + * length?: number; + * position?: number | null; + * }} [offsetOrOptions] * @returns {number} */ -function writeSync(fd, buffer, offset, length, position) { +function writeSync(fd, buffer, offsetOrOptions, length, position) { fd = getValidatedFd(fd); const ctx = {}; let result; + + let offset = offsetOrOptions; if (isArrayBufferView(buffer)) { + if (typeof offset === 'object') { + ({ + offset = 0, + length = buffer.byteLength - offset, + position = null, + } = offsetOrOptions ?? kEmptyObject); + } if (position === undefined) position = null; if (offset == null) { @@ -877,7 +913,7 @@ function writeSync(fd, buffer, offset, length, position) { result = binding.writeBuffer(fd, buffer, offset, length, position, undefined, ctx); } else { - validateStringAfterArrayBufferView(buffer, 'buffer'); + validatePrimitiveStringAfterArrayBufferView(buffer, 'buffer'); validateEncoding(buffer, length); if (offset === undefined) @@ -894,7 +930,7 @@ function writeSync(fd, buffer, offset, length, position) { * specified `fd` (file descriptor). * @param {number} fd * @param {ArrayBufferView[]} buffers - * @param {number} [position] + * @param {number | null} [position] * @param {( * err?: Error, * bytesWritten?: number, @@ -925,7 +961,8 @@ function writev(fd, buffers, position, callback) { return binding.writeBuffers(fd, buffers, position, req); } -ObjectDefineProperty(writev, internalUtil.customPromisifyArgs, { +ObjectDefineProperty(writev, kCustomPromisifyArgsSymbol, { + __proto__: null, value: ['bytesWritten', 'buffer'], enumerable: false }); @@ -935,7 +972,7 @@ ObjectDefineProperty(writev, internalUtil.customPromisifyArgs, { * to the specified `fd` (file descriptor). * @param {number} fd * @param {ArrayBufferView[]} buffers - * @param {number} [position] + * @param {number | null} [position] * @returns {number} */ function writevSync(fd, buffers, position) { @@ -1367,7 +1404,7 @@ function mkdirSync(path, options) { */ function readdir(path, options, callback) { callback = makeCallback(typeof options === 'function' ? options : callback); - options = getOptions(options, {}); + options = getOptions(options); path = getValidatedPath(path); const req = new FSReqCallback(); @@ -1396,7 +1433,7 @@ function readdir(path, options, callback) { * @returns {string | Buffer[] | Dirent[]} */ function readdirSync(path, options) { - options = getOptions(options, {}); + options = getOptions(options); path = getValidatedPath(path); const ctx = { path }; const result = binding.readdir(pathModule.toNamespacedPath(path), @@ -1420,7 +1457,7 @@ function readdirSync(path, options) { function fstat(fd, options = { bigint: false }, callback) { if (typeof options === 'function') { callback = options; - options = {}; + options = kEmptyObject; } fd = getValidatedFd(fd); callback = makeStatsCallback(callback); @@ -1444,7 +1481,7 @@ function fstat(fd, options = { bigint: false }, callback) { function lstat(path, options = { bigint: false }, callback) { if (typeof options === 'function') { callback = options; - options = {}; + options = kEmptyObject; } callback = makeStatsCallback(callback); path = getValidatedPath(path); @@ -1467,7 +1504,7 @@ function lstat(path, options = { bigint: false }, callback) { function stat(path, options = { bigint: false }, callback) { if (typeof options === 'function') { callback = options; - options = {}; + options = kEmptyObject; } callback = makeStatsCallback(callback); path = getValidatedPath(path); @@ -1565,7 +1602,7 @@ function statSync(path, options = { bigint: false, throwIfNoEntry: true }) { */ function readlink(path, options, callback) { callback = makeCallback(typeof options === 'function' ? options : callback); - options = getOptions(options, {}); + options = getOptions(options); path = getValidatedPath(path, 'oldPath'); const req = new FSReqCallback(); req.oncomplete = callback; @@ -1580,7 +1617,7 @@ function readlink(path, options, callback) { * @returns {string | Buffer} */ function readlinkSync(path, options) { - options = getOptions(options, {}); + options = getOptions(options); path = getValidatedPath(path, 'oldPath'); const ctx = { path }; const result = binding.readlink(pathModule.toNamespacedPath(path), @@ -1593,7 +1630,7 @@ function readlinkSync(path, options) { * Creates the link called `path` pointing to `target`. * @param {string | Buffer | URL} target * @param {string | Buffer | URL} path - * @param {string} [type_] + * @param {string | null} [type_] * @param {(err?: Error) => any} callback_ * @returns {void} */ @@ -1646,7 +1683,7 @@ function symlink(target, path, type_, callback_) { * pointing to `target`. * @param {string | Buffer | URL} target * @param {string | Buffer | URL} path - * @param {string} [type] + * @param {string | null} [type] * @returns {void} */ function symlinkSync(target, path, type) { @@ -2067,7 +2104,7 @@ function lutimesSync(path, atime, mtime) { function writeAll(fd, isUserFd, buffer, offset, length, signal, callback) { if (signal?.aborted) { - const abortError = new AbortError(); + const abortError = new AbortError(undefined, { cause: signal?.reason }); if (isUserFd) { callback(abortError); } else { @@ -2251,7 +2288,7 @@ function watch(filename, options, listener) { if (typeof options === 'function') { listener = options; } - options = getOptions(options, {}); + options = getOptions(options); // Don't make changes directly on options object options = copyObject(options); @@ -2414,8 +2451,6 @@ if (isWindows) { }; } -const emptyObj = ObjectCreate(null); - /** * Returns the resolved pathname. * @param {string | Buffer | URL} p @@ -2423,7 +2458,7 @@ const emptyObj = ObjectCreate(null); * @returns {string | Buffer} */ function realpathSync(p, options) { - options = getOptions(options, emptyObj); + options = getOptions(options); p = toPathIfFileURL(p); if (typeof p !== 'string') { p += ''; @@ -2437,8 +2472,8 @@ function realpathSync(p, options) { return maybeCachedResult; } - const seenLinks = ObjectCreate(null); - const knownHard = ObjectCreate(null); + const seenLinks = new SafeMap(); + const knownHard = new SafeSet(); const original = p; // Current character position in p @@ -2459,7 +2494,7 @@ function realpathSync(p, options) { const ctx = { path: base }; binding.lstat(pathModule.toNamespacedPath(base), false, undefined, ctx); handleErrorFromBinding(ctx); - knownHard[base] = true; + knownHard.add(base); } // Walk down the path, swapping out linked path parts for their real @@ -2481,7 +2516,7 @@ function realpathSync(p, options) { } // Continue if not a symlink, break if a pipe/socket - if (knownHard[base] || cache?.get(base) === base) { + if (knownHard.has(base) || cache?.get(base) === base) { if (isFileType(binding.statValues, S_IFIFO) || isFileType(binding.statValues, S_IFSOCK)) { break; @@ -2503,7 +2538,7 @@ function realpathSync(p, options) { handleErrorFromBinding(ctx); if (!isFileType(stats, S_IFLNK)) { - knownHard[base] = true; + knownHard.add(base); cache?.set(base, base); continue; } @@ -2516,8 +2551,8 @@ function realpathSync(p, options) { const dev = BigIntPrototypeToString(stats[0], 32); const ino = BigIntPrototypeToString(stats[7], 32); id = `${dev}:${ino}`; - if (seenLinks[id]) { - linkTarget = seenLinks[id]; + if (seenLinks.has(id)) { + linkTarget = seenLinks.get(id); } } if (linkTarget === null) { @@ -2530,7 +2565,7 @@ function realpathSync(p, options) { resolvedLink = pathModule.resolve(previous, linkTarget); cache?.set(base, resolvedLink); - if (!isWindows) seenLinks[id] = linkTarget; + if (!isWindows) seenLinks.set(id, linkTarget); } // Resolve the link, then start over @@ -2541,11 +2576,11 @@ function realpathSync(p, options) { pos = current.length; // On windows, check that the root exists. On unix there is no need. - if (isWindows && !knownHard[base]) { + if (isWindows && !knownHard.has(base)) { const ctx = { path: base }; binding.lstat(pathModule.toNamespacedPath(base), false, undefined, ctx); handleErrorFromBinding(ctx); - knownHard[base] = true; + knownHard.add(base); } } @@ -2560,7 +2595,7 @@ function realpathSync(p, options) { * @returns {string | Buffer} */ realpathSync.native = (path, options) => { - options = getOptions(options, {}); + options = getOptions(options); path = getValidatedPath(path); const ctx = { path }; const result = binding.realpath(path, options.encoding, undefined, ctx); @@ -2581,7 +2616,7 @@ realpathSync.native = (path, options) => { */ function realpath(p, options, callback) { callback = typeof options === 'function' ? options : maybeCallback(callback); - options = getOptions(options, {}); + options = getOptions(options); p = toPathIfFileURL(p); if (typeof p !== 'string') { @@ -2590,8 +2625,8 @@ function realpath(p, options, callback) { validatePath(p); p = pathModule.resolve(p); - const seenLinks = ObjectCreate(null); - const knownHard = ObjectCreate(null); + const seenLinks = new SafeMap(); + const knownHard = new SafeSet(); // Current character position in p let pos; @@ -2606,10 +2641,10 @@ function realpath(p, options, callback) { pos = current.length; // On windows, check that the root exists. On unix there is no need. - if (isWindows && !knownHard[base]) { + if (isWindows && !knownHard.has(base)) { fs.lstat(base, (err, stats) => { if (err) return callback(err); - knownHard[base] = true; + knownHard.add(base); LOOP(); }); } else { @@ -2639,7 +2674,7 @@ function realpath(p, options, callback) { } // Continue if not a symlink, break if a pipe/socket - if (knownHard[base]) { + if (knownHard.has(base)) { if (isFileType(binding.statValues, S_IFIFO) || isFileType(binding.statValues, S_IFSOCK)) { return callback(null, encodeRealpathResult(p, options)); @@ -2655,7 +2690,7 @@ function realpath(p, options, callback) { // If not a symlink, skip to the next path part if (!stats.isSymbolicLink()) { - knownHard[base] = true; + knownHard.add(base); return process.nextTick(LOOP); } @@ -2667,15 +2702,15 @@ function realpath(p, options, callback) { const dev = BigIntPrototypeToString(stats.dev, 32); const ino = BigIntPrototypeToString(stats.ino, 32); id = `${dev}:${ino}`; - if (seenLinks[id]) { - return gotTarget(null, seenLinks[id]); + if (seenLinks.has(id)) { + return gotTarget(null, seenLinks.get(id)); } } fs.stat(base, (err) => { if (err) return callback(err); fs.readlink(base, (err, target) => { - if (!isWindows) seenLinks[id] = target; + if (!isWindows) seenLinks.set(id, target); gotTarget(err, target); }); }); @@ -2694,10 +2729,10 @@ function realpath(p, options, callback) { pos = current.length; // On windows, check that the root exists. On unix there is no need. - if (isWindows && !knownHard[base]) { + if (isWindows && !knownHard.has(base)) { fs.lstat(base, (err) => { if (err) return callback(err); - knownHard[base] = true; + knownHard.add(base); LOOP(); }); } else { @@ -2719,7 +2754,7 @@ function realpath(p, options, callback) { */ realpath.native = (path, options, callback) => { callback = makeCallback(callback || options); - options = getOptions(options, {}); + options = getOptions(options); path = getValidatedPath(path); const req = new FSReqCallback(); req.oncomplete = callback; @@ -2738,7 +2773,7 @@ realpath.native = (path, options, callback) => { */ function mkdtemp(prefix, options, callback) { callback = makeCallback(typeof options === 'function' ? options : callback); - options = getOptions(options, {}); + options = getOptions(options); validateString(prefix, 'prefix'); nullCheck(prefix, 'prefix'); @@ -2755,7 +2790,7 @@ function mkdtemp(prefix, options, callback) { * @returns {string} */ function mkdtempSync(prefix, options) { - options = getOptions(options, {}); + options = getOptions(options); validateString(prefix, 'prefix'); nullCheck(prefix, 'prefix'); @@ -2865,7 +2900,7 @@ function lazyLoadStreams() { /** * Creates a readable stream with a default `highWaterMark` - * of 64 kb. + * of 64 KiB. * @param {string | Buffer | URL} path * @param {string | { * flags?: string; @@ -2877,7 +2912,7 @@ function lazyLoadStreams() { * start: number; * end?: number; * highWaterMark?: number; - * fs?: Object | null; + * fs?: object | null; * }} [options] * @returns {ReadStream} */ @@ -2897,7 +2932,7 @@ function createReadStream(path, options) { * autoClose?: boolean; * emitClose?: boolean; * start: number; - * fs?: Object | null; + * fs?: object | null; * }} [options] * @returns {WriteStream} */ @@ -3041,16 +3076,18 @@ module.exports = fs = { }; ObjectDefineProperties(fs, { - F_OK: { enumerable: true, value: F_OK || 0 }, - R_OK: { enumerable: true, value: R_OK || 0 }, - W_OK: { enumerable: true, value: W_OK || 0 }, - X_OK: { enumerable: true, value: X_OK || 0 }, + F_OK: { __proto__: null, enumerable: true, value: F_OK || 0 }, + R_OK: { __proto__: null, enumerable: true, value: R_OK || 0 }, + W_OK: { __proto__: null, enumerable: true, value: W_OK || 0 }, + X_OK: { __proto__: null, enumerable: true, value: X_OK || 0 }, constants: { + __proto__: null, configurable: false, enumerable: true, value: constants }, promises: { + __proto__: null, configurable: true, enumerable: true, get() { diff --git a/lib/http.js b/lib/http.js index 5120ec65e3f25b..1366656e42eb94 100644 --- a/lib/http.js +++ b/lib/http.js @@ -127,6 +127,7 @@ module.exports = { }; ObjectDefineProperty(module.exports, 'maxHeaderSize', { + __proto__: null, configurable: true, enumerable: true, get() { @@ -140,6 +141,7 @@ ObjectDefineProperty(module.exports, 'maxHeaderSize', { }); ObjectDefineProperty(module.exports, 'globalAgent', { + __proto__: null, configurable: true, enumerable: true, get() { diff --git a/lib/https.js b/lib/https.js index 7a9a4243aaae14..e41d79951fb3cd 100644 --- a/lib/https.js +++ b/lib/https.js @@ -34,7 +34,11 @@ const { ReflectConstruct, } = primordials; -require('internal/util').assertCrypto(); +const { + assertCrypto, + kEmptyObject, +} = require('internal/util'); +assertCrypto(); const tls = require('tls'); const { Agent: HttpAgent } = require('_http_agent'); @@ -203,7 +207,7 @@ Agent.prototype.createConnection = createConnection; * }} [options] * @returns {string} */ -Agent.prototype.getName = function getName(options = {}) { +Agent.prototype.getName = function getName(options = kEmptyObject) { let name = FunctionPrototypeCall(HttpAgent.prototype.getName, this, options); name += ':'; @@ -362,7 +366,7 @@ function request(...args) { * createConnection?: Function; * defaultPort?: number; * family?: number; - * headers?: Object; + * headers?: object; * hints?: number; * host?: string; * hostname?: string; diff --git a/lib/internal/abort_controller.js b/lib/internal/abort_controller.js index 3233fb8c0c2ee2..48da6c68d62687 100644 --- a/lib/internal/abort_controller.js +++ b/lib/internal/abort_controller.js @@ -141,6 +141,12 @@ class AbortSignal extends EventTarget { return this[kReason]; } + throwIfAborted() { + if (this.aborted) { + throw this.reason; + } + } + [customInspectSymbol](depth, options) { return customInspect(this, { aborted: this.aborted @@ -151,7 +157,8 @@ class AbortSignal extends EventTarget { * @param {any} reason * @returns {AbortSignal} */ - static abort(reason) { + static abort( + reason = new DOMException('This operation was aborted', 'AbortError')) { return createAbortSignal(true, reason); } @@ -258,6 +265,7 @@ ObjectDefineProperties(AbortSignal.prototype, { }); ObjectDefineProperty(AbortSignal.prototype, SymbolToStringTag, { + __proto__: null, writable: false, enumerable: false, configurable: true, @@ -310,7 +318,7 @@ class AbortController { /** * @param {any} reason */ - abort(reason) { + abort(reason = new DOMException('This operation was aborted', 'AbortError')) { validateAbortController(this); abortSignal(this[kSignal], reason); } @@ -328,6 +336,7 @@ ObjectDefineProperties(AbortController.prototype, { }); ObjectDefineProperty(AbortController.prototype, SymbolToStringTag, { + __proto__: null, writable: false, enumerable: false, configurable: true, diff --git a/lib/internal/assert/assertion_error.js b/lib/internal/assert/assertion_error.js index 837c37b1221540..3deb8185229d7f 100644 --- a/lib/internal/assert/assertion_error.js +++ b/lib/internal/assert/assertion_error.js @@ -55,7 +55,7 @@ function copyError(source) { for (const key of keys) { target[key] = source[key]; } - ObjectDefineProperty(target, 'message', { value: source.message }); + ObjectDefineProperty(target, 'message', { __proto__: null, value: source.message }); return target; } @@ -441,6 +441,7 @@ class AssertionError extends Error { this.generatedMessage = !message; ObjectDefineProperty(this, 'name', { + __proto__: null, value: 'AssertionError [ERR_ASSERTION]', enumerable: false, writable: true, diff --git a/lib/internal/assert/calltracker.js b/lib/internal/assert/calltracker.js index 0fbdf70e5d825c..cf53b1af10fe28 100644 --- a/lib/internal/assert/calltracker.js +++ b/lib/internal/assert/calltracker.js @@ -4,6 +4,7 @@ const { ArrayPrototypePush, Error, FunctionPrototype, + Proxy, ReflectApply, SafeSet, } = primordials; @@ -46,20 +47,23 @@ class CallTracker { const callChecks = this.#callChecks; callChecks.add(context); - return function() { - context.actual++; - if (context.actual === context.exact) { - // Once function has reached its call count remove it from - // callChecks set to prevent memory leaks. - callChecks.delete(context); - } - // If function has been called more than expected times, add back into - // callchecks. - if (context.actual === context.exact + 1) { - callChecks.add(context); - } - return ReflectApply(fn, this, arguments); - }; + return new Proxy(fn, { + __proto__: null, + apply(fn, thisArg, argList) { + context.actual++; + if (context.actual === context.exact) { + // Once function has reached its call count remove it from + // callChecks set to prevent memory leaks. + callChecks.delete(context); + } + // If function has been called more than expected times, add back into + // callchecks. + if (context.actual === context.exact + 1) { + callChecks.add(context); + } + return ReflectApply(fn, thisArg, argList); + }, + }); } report() { @@ -84,12 +88,16 @@ class CallTracker { verify() { const errors = this.report(); - if (errors.length > 0) { - throw new AssertionError({ - message: 'Function(s) were not called the expected number of times', - details: errors, - }); + if (errors.length === 0) { + return; } + const message = errors.length === 1 ? + errors[0].message : + 'Functions were not called the expected number of times'; + throw new AssertionError({ + message, + details: errors, + }); } } diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js index f15fe5cc99b5c4..25f0075bf45a07 100644 --- a/lib/internal/async_hooks.js +++ b/lib/internal/async_hooks.js @@ -196,6 +196,7 @@ function emitInitNative(asyncId, type, triggerAsyncId, resource) { try { // Using var here instead of let because "for (var ...)" is faster than let. // Refs: https://github.com/nodejs/node/pull/30380#issuecomment-552948364 + // eslint-disable-next-line no-var for (var i = 0; i < active_hooks.array.length; i++) { if (typeof active_hooks.array[i][init_symbol] === 'function') { active_hooks.array[i][init_symbol]( @@ -228,6 +229,7 @@ function emitHook(symbol, asyncId) { try { // Using var here instead of let because "for (var ...)" is faster than let. // Refs: https://github.com/nodejs/node/pull/30380#issuecomment-552948364 + // eslint-disable-next-line no-var for (var i = 0; i < active_hooks.array.length; i++) { if (typeof active_hooks.array[i][symbol] === 'function') { active_hooks.array[i][symbol](asyncId); @@ -253,6 +255,7 @@ function emitHookFactory(symbol, name) { // Set the name property of the function as it looks good in the stack trace. ObjectDefineProperty(fn, 'name', { + __proto__: null, value: name }); return fn; @@ -326,14 +329,10 @@ function promiseInitHookWithDestroyTracking(promise, parent) { destroyTracking(promise, parent); } -const destroyedSymbol = Symbol('destroyed'); - function destroyTracking(promise, parent) { trackPromise(promise, parent); const asyncId = promise[async_id_symbol]; - const destroyed = { destroyed: false }; - promise[destroyedSymbol] = destroyed; - registerDestroyHook(promise, asyncId, destroyed); + registerDestroyHook(promise, asyncId); } function promiseBeforeHook(promise) { diff --git a/lib/internal/blob.js b/lib/internal/blob.js index a620552d846051..7070524c6c4659 100644 --- a/lib/internal/blob.js +++ b/lib/internal/blob.js @@ -9,8 +9,8 @@ const { PromiseReject, SafePromisePrototypeFinally, ReflectConstruct, + RegExpPrototypeExec, RegExpPrototypeSymbolReplace, - RegExpPrototypeTest, StringPrototypeToLowerCase, StringPrototypeSplit, Symbol, @@ -44,7 +44,7 @@ const { const { createDeferredPromise, customInspectSymbol: kInspect, - emitExperimentalWarning, + kEmptyObject, } = require('internal/util'); const { inspect } = require('internal/util/inspect'); @@ -134,12 +134,11 @@ class Blob { * }} [options] * @constructs {Blob} */ - constructor(sources = [], options = {}) { - emitExperimentalWarning('buffer.Blob'); + constructor(sources = [], options = kEmptyObject) { if (sources === null || typeof sources[SymbolIterator] !== 'function' || typeof sources === 'string') { - throw new ERR_INVALID_ARG_TYPE('sources', 'Iterable', sources); + throw new ERR_INVALID_ARG_TYPE('sources', 'a sequence', sources); } validateObject(options, 'options'); let { @@ -165,7 +164,7 @@ class Blob { this[kLength] = length; type = `${type}`; - this[kType] = RegExpPrototypeTest(disallowedTypeCharacters, type) ? + this[kType] = RegExpPrototypeExec(disallowedTypeCharacters, type) !== null ? '' : StringPrototypeToLowerCase(type); // eslint-disable-next-line no-constructor-return @@ -247,7 +246,7 @@ class Blob { end |= 0; contentType = `${contentType}`; - if (RegExpPrototypeTest(disallowedTypeCharacters, contentType)) { + if (RegExpPrototypeExec(disallowedTypeCharacters, contentType) !== null) { contentType = ''; } else { contentType = StringPrototypeToLowerCase(contentType); @@ -293,7 +292,7 @@ class Blob { job.ondone = (err, ab) => { if (err !== undefined) - return reject(new AbortError()); + return reject(new AbortError(undefined, { cause: err })); resolve(ab); }; this[kArrayBufferPromise] = @@ -357,6 +356,7 @@ function createBlob(handle, length, type = '') { } ObjectDefineProperty(Blob.prototype, SymbolToStringTag, { + __proto__: null, configurable: true, value: 'Blob', }); diff --git a/lib/internal/bootstrap/loaders.js b/lib/internal/bootstrap/loaders.js index d6869ef6334496..41162fabcbc589 100644 --- a/lib/internal/bootstrap/loaders.js +++ b/lib/internal/bootstrap/loaders.js @@ -44,6 +44,7 @@ /* global process, getLinkedBinding, getInternalBinding, primordials */ const { + ArrayFrom, ArrayPrototypeMap, ArrayPrototypePush, ArrayPrototypeSlice, @@ -63,6 +64,7 @@ const { // Set up process.moduleLoadList. const moduleLoadList = []; ObjectDefineProperty(process, 'moduleLoadList', { + __proto__: null, value: moduleLoadList, configurable: true, enumerable: true, @@ -119,6 +121,11 @@ const legacyWrapperList = new SafeSet([ 'util', ]); +// Modules that can only be imported via the node: scheme. +const schemelessBlockList = new SafeSet([ + 'test', +]); + // Set up process.binding() and process._linkedBinding(). { const bindingObj = ObjectCreate(null); @@ -242,6 +249,16 @@ class NativeModule { return mod && mod.canBeRequiredByUsers; } + // Determine if a core module can be loaded without the node: prefix. This + // function does not validate if the module actually exists. + static canBeRequiredWithoutScheme(id) { + return !schemelessBlockList.has(id); + } + + static getSchemeOnlyModuleNames() { + return ArrayFrom(schemelessBlockList); + } + // Used by user-land module loaders to compile and load builtins. compileForPublicLoader() { if (!this.canBeRequiredByUsers) { diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js index dfae7675e16a6a..67cbdb9db09ca7 100644 --- a/lib/internal/bootstrap/node.js +++ b/lib/internal/bootstrap/node.js @@ -130,6 +130,7 @@ let processConfig = new Proxy( deprecationHandler); ObjectDefineProperty(process, 'config', { + __proto__: null, enumerable: true, configurable: true, get() { return processConfig; }, @@ -275,6 +276,7 @@ setTraceCategoryStateUpdateHandler(perThreadSetup.toggleTraceCategoryState); // process.allowedNodeEnvironmentFlags ObjectDefineProperty(process, 'allowedNodeEnvironmentFlags', { + __proto__: null, get() { const flags = perThreadSetup.buildAllowedFlags(); process.allowedNodeEnvironmentFlags = flags; @@ -284,6 +286,7 @@ ObjectDefineProperty(process, 'allowedNodeEnvironmentFlags', { // this completely to that value. set(value) { ObjectDefineProperty(this, 'allowedNodeEnvironmentFlags', { + __proto__: null, value, configurable: true, enumerable: true, @@ -321,6 +324,7 @@ const features = { }; ObjectDefineProperty(process, 'features', { + __proto__: null, enumerable: true, writable: false, configurable: false, @@ -407,6 +411,7 @@ function setupProcessObject() { ObjectSetPrototypeOf(origProcProto, EventEmitter.prototype); FunctionPrototypeCall(EventEmitter, process); ObjectDefineProperty(process, SymbolToStringTag, { + __proto__: null, enumerable: false, writable: true, configurable: false, @@ -414,6 +419,7 @@ function setupProcessObject() { }); // Make process globally available to users by putting it on the global proxy ObjectDefineProperty(globalThis, 'process', { + __proto__: null, value: process, enumerable: false, writable: true, @@ -423,11 +429,13 @@ function setupProcessObject() { function setupGlobalProxy() { ObjectDefineProperty(globalThis, SymbolToStringTag, { + __proto__: null, value: 'global', writable: false, enumerable: false, configurable: true }); + globalThis.global = globalThis; } function setupBuffer() { @@ -445,18 +453,21 @@ function setupBuffer() { ObjectDefineProperties(globalThis, { 'Buffer': { + __proto__: null, value: Buffer, enumerable: false, writable: true, configurable: true, }, 'atob': { + __proto__: null, value: atob, enumerable: false, writable: true, configurable: true, }, 'btoa': { + __proto__: null, value: btoa, enumerable: false, writable: true, @@ -485,6 +496,7 @@ function createGlobalConsole(consoleFromVM) { // https://heycam.github.io/webidl/#es-namespaces function exposeNamespace(target, name, namespaceObject) { ObjectDefineProperty(target, name, { + __proto__: null, writable: true, enumerable: false, configurable: true, @@ -495,6 +507,7 @@ function exposeNamespace(target, name, namespaceObject) { // https://heycam.github.io/webidl/#es-interfaces function exposeInterface(target, name, interfaceObject) { ObjectDefineProperty(target, name, { + __proto__: null, writable: true, enumerable: false, configurable: true, @@ -505,6 +518,7 @@ function exposeInterface(target, name, interfaceObject) { // https://heycam.github.io/webidl/#define-the-operations function defineOperation(target, name, method) { ObjectDefineProperty(target, name, { + __proto__: null, writable: true, enumerable: true, configurable: true, @@ -515,6 +529,7 @@ function defineOperation(target, name, method) { // https://heycam.github.io/webidl/#Replaceable function defineReplacableAttribute(target, name, value) { ObjectDefineProperty(target, name, { + __proto__: null, writable: true, enumerable: true, configurable: true, diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js index 8de57a5666131f..337b95133bc94e 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js @@ -13,6 +13,7 @@ const { const { getOptionValue, getEmbedderOptions, + refreshOptions, } = require('internal/options'); const { reconnectZeroFillToggle } = require('internal/buffer'); const { @@ -25,7 +26,10 @@ const { Buffer } = require('buffer'); const { ERR_MANIFEST_ASSERT_INTEGRITY } = require('internal/errors').codes; const assert = require('internal/assert'); -function prepareMainThreadExecution(expandArgv1 = false) { +function prepareMainThreadExecution(expandArgv1 = false, + initialzeModules = true) { + refreshRuntimeOptions(); + // TODO(joyeecheung): this is also necessary for workers when they deserialize // this toggle from the snapshot. reconnectZeroFillToggle(); @@ -38,6 +42,7 @@ function prepareMainThreadExecution(expandArgv1 = false) { setupWarningHandler(); setupFetch(); setupWebCrypto(); + setupCustomEvent(); // Resolve the coverage directory to an absolute path, and // overwrite process.env so that the original path gets passed @@ -47,7 +52,6 @@ function prepareMainThreadExecution(expandArgv1 = false) { setupCoverageHooks(process.env.NODE_V8_COVERAGE); } - setupDebugEnv(); // Print stack trace on `SIGINT` if option `--trace-sigint` presents. @@ -77,15 +81,25 @@ function prepareMainThreadExecution(expandArgv1 = false) { initializeSourceMapsHandlers(); initializeDeprecations(); initializeWASI(); + + require('internal/v8/startup_snapshot').runDeserializeCallbacks(); + + if (!initialzeModules) { + return; + } + initializeCJSLoader(); initializeESMLoader(); - const CJSLoader = require('internal/modules/cjs/loader'); assert(!CJSLoader.hasLoadedAnyUserCJSModule); loadPreloadModules(); initializeFrozenIntrinsics(); } +function refreshRuntimeOptions() { + refreshOptions(); +} + function patchProcessObject(expandArgv1) { const binding = internalBinding('process_methods'); binding.patchProcessObject(process); @@ -93,10 +107,15 @@ function patchProcessObject(expandArgv1) { require('internal/process/per_thread').refreshHrtimeBuffer(); ObjectDefineProperty(process, 'argv0', { + __proto__: null, enumerable: true, - configurable: false, + // Only set it to true during snapshot building. + configurable: getOptionValue('--build-snapshot'), value: process.argv[0] }); + + process.exitCode = undefined; + process._exiting = false; process.argv[0] = process.execPath; if (expandArgv1 && process.argv[1] && @@ -110,6 +129,12 @@ function patchProcessObject(expandArgv1) { } } + // We need to initialize the global console here again with process.stdout + // and friends for snapshot deserialization. + const globalConsole = require('internal/console/global'); + const { initializeGlobalConsole } = require('internal/console/constructor'); + initializeGlobalConsole(globalConsole); + // TODO(joyeecheung): most of these should be deprecated and removed, // except some that we need to be able to mutate during run time. addReadOnlyProcessAlias('_eval', '--eval'); @@ -131,6 +156,7 @@ function addReadOnlyProcessAlias(name, option, enumerable = true) { const value = getOptionValue(option); if (value) { ObjectDefineProperty(process, name, { + __proto__: null, writable: false, configurable: true, enumerable, @@ -175,27 +201,30 @@ function setupWebCrypto() { let webcrypto; ObjectDefineProperty(globalThis, 'crypto', - ObjectGetOwnPropertyDescriptor({ + { __proto__: null, ...ObjectGetOwnPropertyDescriptor({ get crypto() { webcrypto ??= require('internal/crypto/webcrypto'); return webcrypto.crypto; } - }, 'crypto')); + }, 'crypto') }); if (internalBinding('config').hasOpenSSL) { webcrypto ??= require('internal/crypto/webcrypto'); ObjectDefineProperty(globalThis, 'Crypto', { + __proto__: null, writable: true, enumerable: false, configurable: true, value: webcrypto.Crypto }); ObjectDefineProperty(globalThis, 'CryptoKey', { + __proto__: null, writable: true, enumerable: false, configurable: true, value: webcrypto.CryptoKey }); ObjectDefineProperty(globalThis, 'SubtleCrypto', { + __proto__: null, writable: true, enumerable: false, configurable: true, @@ -204,6 +233,17 @@ function setupWebCrypto() { } } +// TODO(daeyeon): move this to internal/bootstrap/browser when the CLI flag is +// removed. +function setupCustomEvent() { + if (process.config.variables.node_no_browser_globals || + !getOptionValue('--experimental-global-customevent')) { + return; + } + const { CustomEvent } = require('internal/event_target'); + exposeInterface(globalThis, 'CustomEvent', CustomEvent); +} + // Setup User-facing NODE_V8_COVERAGE environment variable that writes // ScriptCoverage to a specified file. function setupCoverageHooks(dir) { @@ -238,6 +278,7 @@ function setupStacktracePrinterOnSigint() { function initializeReport() { const { report } = require('internal/process/report'); ObjectDefineProperty(process, 'report', { + __proto__: null, enumerable: true, configurable: true, get() { @@ -345,6 +386,7 @@ function initializeDeprecations() { const { noBrowserGlobals } = internalBinding('config'); if (noBrowserGlobals) { ObjectDefineProperty(process, '_noBrowserGlobals', { + __proto__: null, writable: false, enumerable: true, configurable: true, @@ -367,6 +409,7 @@ function initializeDeprecations() { // See https://github.com/nodejs/node/pull/26334. let _process = process; ObjectDefineProperty(globalThis, 'process', { + __proto__: null, get() { return _process; }, @@ -379,6 +422,7 @@ function initializeDeprecations() { let _Buffer = Buffer; ObjectDefineProperty(globalThis, 'Buffer', { + __proto__: null, get() { return _Buffer; }, @@ -541,11 +585,13 @@ function loadPreloadModules() { } module.exports = { + refreshRuntimeOptions, patchProcessObject, setupCoverageHooks, setupWarningHandler, setupFetch, setupWebCrypto, + setupCustomEvent, setupDebugEnv, setupPerfHooks, prepareMainThreadExecution, diff --git a/lib/internal/bootstrap/switches/is_main_thread.js b/lib/internal/bootstrap/switches/is_main_thread.js index 15977f0d57bbf3..a45505b36dba7d 100644 --- a/lib/internal/bootstrap/switches/is_main_thread.js +++ b/lib/internal/bootstrap/switches/is_main_thread.js @@ -2,7 +2,10 @@ const { ObjectDefineProperty } = primordials; const rawMethods = internalBinding('process_methods'); - +const { + addSerializeCallback, + isBuildingSnapshot +} = require('v8').startupSnapshot; // TODO(joyeecheung): deprecate and remove these underscore methods process._debugProcess = rawMethods._debugProcess; process._debugEnd = rawMethods._debugEnd; @@ -15,6 +18,7 @@ process._stopProfilerIdleNotifier = () => {}; function defineStream(name, getter) { ObjectDefineProperty(process, name, { + __proto__: null, configurable: true, enumerable: true, get: getter @@ -122,15 +126,42 @@ let stdin; let stdout; let stderr; +let stdoutDestroy; +let stderrDestroy; + +function refreshStdoutOnSigWinch() { + stdout._refreshSize(); +} + +function refreshStderrOnSigWinch() { + stderr._refreshSize(); +} + +function addCleanup(fn) { + if (isBuildingSnapshot()) { + addSerializeCallback(fn); + } +} + function getStdout() { if (stdout) return stdout; stdout = createWritableStdioStream(1); stdout.destroySoon = stdout.destroy; // Override _destroy so that the fd is never actually closed. + stdoutDestroy = stdout._destroy; stdout._destroy = dummyDestroy; if (stdout.isTTY) { - process.on('SIGWINCH', () => stdout._refreshSize()); + process.on('SIGWINCH', refreshStdoutOnSigWinch); } + + addCleanup(function cleanupStdout() { + stdout._destroy = stdoutDestroy; + stdout.destroy(); + process.removeListener('SIGWINCH', refreshStdoutOnSigWinch); + stdout = undefined; + }); + // No need to add deserialize callback because stdout = undefined above + // causes the stream to be lazily initialized again later. return stdout; } @@ -138,11 +169,20 @@ function getStderr() { if (stderr) return stderr; stderr = createWritableStdioStream(2); stderr.destroySoon = stderr.destroy; + stderrDestroy = stderr._destroy; // Override _destroy so that the fd is never actually closed. stderr._destroy = dummyDestroy; if (stderr.isTTY) { - process.on('SIGWINCH', () => stderr._refreshSize()); + process.on('SIGWINCH', refreshStderrOnSigWinch); } + addCleanup(function cleanupStderr() { + stderr._destroy = stderrDestroy; + stderr.destroy(); + process.removeListener('SIGWINCH', refreshStderrOnSigWinch); + stderr = undefined; + }); + // No need to add deserialize callback because stderr = undefined above + // causes the stream to be lazily initialized again later. return stderr; } @@ -233,6 +273,12 @@ function getStdin() { } } + addCleanup(function cleanupStdin() { + stdin.destroy(); + stdin = undefined; + }); + // No need to add deserialize callback because stdin = undefined above + // causes the stream to be lazily initialized again later. return stdin; } diff --git a/lib/internal/bootstrap/switches/is_not_main_thread.js b/lib/internal/bootstrap/switches/is_not_main_thread.js index 379ad0a587a22a..cb129189b200a3 100644 --- a/lib/internal/bootstrap/switches/is_not_main_thread.js +++ b/lib/internal/bootstrap/switches/is_not_main_thread.js @@ -7,6 +7,7 @@ delete process._debugEnd; function defineStream(name, getter) { ObjectDefineProperty(process, name, { + __proto__: null, configurable: true, enumerable: true, get: getter diff --git a/lib/internal/child_process.js b/lib/internal/child_process.js index 5b212d345d51ac..cba612823d08cc 100644 --- a/lib/internal/child_process.js +++ b/lib/internal/child_process.js @@ -574,6 +574,7 @@ function setupChannel(target, channel, serializationMode) { target[kChannelHandle] = channel; ObjectDefineProperty(target, '_channel', { + __proto__: null, get: deprecate(() => { return target.channel; }, channelDeprecationMsg, 'DEP0129'), diff --git a/lib/internal/child_process/serialization.js b/lib/internal/child_process/serialization.js index ec858f401bea9e..497bf233d77897 100644 --- a/lib/internal/child_process/serialization.js +++ b/lib/internal/child_process/serialization.js @@ -4,6 +4,7 @@ const { JSONParse, JSONStringify, StringPrototypeSplit, + ArrayPrototypePush, Symbol, TypedArrayPrototypeSubarray, } = primordials; @@ -15,6 +16,7 @@ const assert = require('internal/assert'); const { streamBaseState, kLastWriteWasAsync } = internalBinding('stream_wrap'); const kMessageBuffer = Symbol('kMessageBuffer'); +const kMessageBufferSize = Symbol('kMessageBufferSize'); const kJSONBuffer = Symbol('kJSONBuffer'); const kStringDecoder = Symbol('kStringDecoder'); @@ -51,47 +53,77 @@ class ChildProcessDeserializer extends v8.DefaultDeserializer { // (aka 'advanced') const advanced = { initMessageChannel(channel) { - channel[kMessageBuffer] = Buffer.alloc(0); + channel[kMessageBuffer] = []; + channel[kMessageBufferSize] = 0; channel.buffering = false; }, *parseChannelMessages(channel, readData) { if (readData.length === 0) return; - let messageBuffer = Buffer.concat([channel[kMessageBuffer], readData]); - while (messageBuffer.length > 4) { - const size = messageBuffer.readUInt32BE(); - if (messageBuffer.length < 4 + size) { - break; - } + ArrayPrototypePush(channel[kMessageBuffer], readData); + channel[kMessageBufferSize] += readData.length; + + // Index 0 should always be present because we just pushed data into it. + let messageBufferHead = channel[kMessageBuffer][0]; + while (messageBufferHead.length >= 4) { + // We call `readUInt32BE` manually here, because this is faster than first converting + // it to a buffer and using `readUInt32BE` on that. + const fullMessageSize = ( + messageBufferHead[0] << 24 | + messageBufferHead[1] << 16 | + messageBufferHead[2] << 8 | + messageBufferHead[3] + ) + 4; + + if (channel[kMessageBufferSize] < fullMessageSize) break; + + const concatenatedBuffer = channel[kMessageBuffer].length === 1 ? + channel[kMessageBuffer][0] : + Buffer.concat( + channel[kMessageBuffer], + channel[kMessageBufferSize] + ); const deserializer = new ChildProcessDeserializer( - TypedArrayPrototypeSubarray(messageBuffer, 4, 4 + size)); - messageBuffer = TypedArrayPrototypeSubarray(messageBuffer, 4 + size); + TypedArrayPrototypeSubarray(concatenatedBuffer, 4, fullMessageSize) + ); + + messageBufferHead = TypedArrayPrototypeSubarray(concatenatedBuffer, fullMessageSize); + channel[kMessageBufferSize] = messageBufferHead.length; + channel[kMessageBuffer] = + channel[kMessageBufferSize] !== 0 ? [messageBufferHead] : []; deserializer.readHeader(); yield deserializer.readValue(); } - channel[kMessageBuffer] = messageBuffer; - channel.buffering = messageBuffer.length > 0; + + channel.buffering = channel[kMessageBufferSize] > 0; }, writeChannelMessage(channel, req, message, handle) { const ser = new ChildProcessSerializer(); + // Add 4 bytes, to later populate with message length + ser.writeRawBytes(Buffer.allocUnsafe(4)); ser.writeHeader(); ser.writeValue(message); + const serializedMessage = ser.releaseBuffer(); - const sizeBuffer = Buffer.allocUnsafe(4); - sizeBuffer.writeUInt32BE(serializedMessage.length); - - const buffer = Buffer.concat([ - sizeBuffer, - serializedMessage, - ]); - const result = channel.writeBuffer(req, buffer, handle); + const serializedMessageLength = serializedMessage.length - 4; + + serializedMessage.set([ + serializedMessageLength >> 24 & 0xFF, + serializedMessageLength >> 16 & 0xFF, + serializedMessageLength >> 8 & 0xFF, + serializedMessageLength & 0xFF, + ], 0); + + const result = channel.writeBuffer(req, serializedMessage, handle); + // Mirror what stream_base_commons.js does for Buffer retention. if (streamBaseState[kLastWriteWasAsync]) - req.buffer = buffer; + req.buffer = serializedMessage; + return result; }, }; diff --git a/lib/internal/cluster/child.js b/lib/internal/cluster/child.js index 00638e7784550b..f960878a70aca3 100644 --- a/lib/internal/cluster/child.js +++ b/lib/internal/cluster/child.js @@ -111,6 +111,10 @@ cluster._getServer = function(obj, options, cb) { }); obj.once('listening', () => { + // short-lived sockets might have been closed + if (!indexes.has(indexesKey)) { + return; + } cluster.worker.state = 'listening'; const address = obj.address(); message.act = 'listening'; @@ -204,12 +208,21 @@ function rr(message, { indexesKey, index }, cb) { function onconnection(message, handle) { const key = message.key; const server = handles.get(key); - const accepted = server !== undefined; + let accepted = server !== undefined; + + if (accepted && server[owner_symbol]) { + const self = server[owner_symbol]; + if (self.maxConnections && self._connections >= self.maxConnections) { + accepted = false; + } + } send({ ack: message.seq, accepted }); if (accepted) server.onconnection(0, handle); + else + handle.close(); } function send(message, cb) { diff --git a/lib/internal/cluster/primary.js b/lib/internal/cluster/primary.js index 69e97eb8a6837f..3940d094e7b76d 100644 --- a/lib/internal/cluster/primary.js +++ b/lib/internal/cluster/primary.js @@ -6,7 +6,7 @@ const { ArrayPrototypeSome, ObjectKeys, ObjectValues, - RegExpPrototypeTest, + RegExpPrototypeExec, SafeMap, StringPrototypeStartsWith, } = primordials; @@ -121,8 +121,8 @@ function createWorkerProcess(id, env) { const nodeOptions = process.env.NODE_OPTIONS || ''; if (ArrayPrototypeSome(execArgv, - (arg) => RegExpPrototypeTest(debugArgRegex, arg)) || - RegExpPrototypeTest(debugArgRegex, nodeOptions)) { + (arg) => RegExpPrototypeExec(debugArgRegex, arg) !== null) || + RegExpPrototypeExec(debugArgRegex, nodeOptions) !== null) { let inspectPort; if ('inspectPort' in cluster.settings) { if (typeof cluster.settings.inspectPort === 'function') diff --git a/lib/internal/cluster/round_robin_handle.js b/lib/internal/cluster/round_robin_handle.js index 9d242cc60ad7c1..a881ca10bcb9de 100644 --- a/lib/internal/cluster/round_robin_handle.js +++ b/lib/internal/cluster/round_robin_handle.js @@ -15,7 +15,7 @@ const { constants } = internalBinding('tcp_wrap'); module.exports = RoundRobinHandle; -function RoundRobinHandle(key, address, { port, fd, flags, backlog }) { +function RoundRobinHandle(key, address, { port, fd, flags, backlog, readableAll, writableAll }) { this.key = key; this.all = new SafeMap(); this.free = new SafeMap(); @@ -34,8 +34,12 @@ function RoundRobinHandle(key, address, { port, fd, flags, backlog }) { backlog, }); } else - this.server.listen(address, backlog); // UNIX socket path. - + this.server.listen({ + path: address, + backlog, + readableAll, + writableAll, + }); // UNIX socket path. this.server.once('listening', () => { this.handle = this.server._handle; this.handle.onconnection = (err, handle) => this.distribute(err, handle); diff --git a/lib/internal/cluster/worker.js b/lib/internal/cluster/worker.js index 53285413530230..d5dfef4387175f 100644 --- a/lib/internal/cluster/worker.js +++ b/lib/internal/cluster/worker.js @@ -7,6 +7,8 @@ const { const EventEmitter = require('events'); +const { kEmptyObject } = require('internal/util'); + module.exports = Worker; // Common Worker implementation shared between the cluster primary and workers. @@ -17,7 +19,7 @@ function Worker(options) { ReflectApply(EventEmitter, this, []); if (options === null || typeof options !== 'object') - options = {}; + options = kEmptyObject; this.exitedAfterDisconnect = undefined; diff --git a/lib/internal/console/constructor.js b/lib/internal/console/constructor.js index 695a56164b7d84..d8434f2311a375 100644 --- a/lib/internal/console/constructor.js +++ b/lib/internal/console/constructor.js @@ -24,13 +24,13 @@ const { ReflectApply, ReflectConstruct, ReflectOwnKeys, + RegExpPrototypeSymbolReplace, SafeArrayIterator, SafeMap, SafeWeakMap, StringPrototypeIncludes, StringPrototypePadStart, StringPrototypeRepeat, - StringPrototypeReplace, StringPrototypeSlice, StringPrototypeSplit, Symbol, @@ -100,7 +100,7 @@ function Console(options /* or: stdout, stderr, ignoreErrors = true */) { // We have to test new.target here to see if this function is called // with new, because we need to define a custom instanceof to accommodate // the global console. - if (!new.target) { + if (new.target === undefined) { return ReflectConstruct(Console, arguments); } @@ -154,6 +154,7 @@ function Console(options /* or: stdout, stderr, ignoreErrors = true */) { // from the prototype chain of the subclass. this[key] = FunctionPrototypeBind(this[key], this); ObjectDefineProperty(this[key], 'name', { + __proto__: null, value: key }); }); @@ -170,6 +171,7 @@ const consolePropAttributes = { // Fixup global.console instanceof global.console.Console ObjectDefineProperty(Console, SymbolHasInstance, { + __proto__: null, value(instance) { return instance[kIsConsole]; } @@ -180,16 +182,18 @@ const kNoColorInspectOptions = {}; ObjectDefineProperties(Console.prototype, { [kBindStreamsEager]: { + __proto__: null, ...consolePropAttributes, // Eager version for the Console constructor value: function(stdout, stderr) { ObjectDefineProperties(this, { - '_stdout': { ...consolePropAttributes, value: stdout }, - '_stderr': { ...consolePropAttributes, value: stderr } + '_stdout': { __proto__: null, ...consolePropAttributes, value: stdout }, + '_stderr': { __proto__: null, ...consolePropAttributes, value: stderr }, }); } }, [kBindStreamsLazy]: { + __proto__: null, ...consolePropAttributes, // Lazily load the stdout and stderr from an object so we don't // create the stdio streams when they are not even accessed @@ -198,6 +202,7 @@ ObjectDefineProperties(Console.prototype, { let stderr; ObjectDefineProperties(this, { '_stdout': { + __proto__: null, enumerable: false, configurable: true, get() { @@ -207,6 +212,7 @@ ObjectDefineProperties(Console.prototype, { set(value) { stdout = value; } }, '_stderr': { + __proto__: null, enumerable: false, configurable: true, get() { @@ -219,32 +225,38 @@ ObjectDefineProperties(Console.prototype, { } }, [kBindProperties]: { + __proto__: null, ...consolePropAttributes, value: function(ignoreErrors, colorMode, groupIndentation = 2) { ObjectDefineProperties(this, { '_stdoutErrorHandler': { + __proto__: null, ...consolePropAttributes, value: createWriteErrorHandler(this, kUseStdout) }, '_stderrErrorHandler': { ...consolePropAttributes, + __proto__: null, value: createWriteErrorHandler(this, kUseStderr) }, '_ignoreErrors': { + __proto__: null, ...consolePropAttributes, value: Boolean(ignoreErrors) }, - '_times': { ...consolePropAttributes, value: new SafeMap() }, + '_times': { __proto__: null, ...consolePropAttributes, value: new SafeMap() }, // Corresponds to https://console.spec.whatwg.org/#count-map - [kCounts]: { ...consolePropAttributes, value: new SafeMap() }, - [kColorMode]: { ...consolePropAttributes, value: colorMode }, - [kIsConsole]: { ...consolePropAttributes, value: true }, - [kGroupIndent]: { ...consolePropAttributes, value: '' }, + [kCounts]: { __proto__: null, ...consolePropAttributes, value: new SafeMap() }, + [kColorMode]: { __proto__: null, ...consolePropAttributes, value: colorMode }, + [kIsConsole]: { __proto__: null, ...consolePropAttributes, value: true }, + [kGroupIndent]: { __proto__: null, ...consolePropAttributes, value: '' }, [kGroupIndentationWidth]: { + __proto__: null, ...consolePropAttributes, value: groupIndentation }, [SymbolToStringTag]: { + __proto__: null, writable: false, enumerable: false, configurable: true, @@ -254,6 +266,7 @@ ObjectDefineProperties(Console.prototype, { } }, [kWriteToConsole]: { + __proto__: null, ...consolePropAttributes, value: function(streamSymbol, string) { const ignoreErrors = this._ignoreErrors; @@ -266,7 +279,7 @@ ObjectDefineProperties(Console.prototype, { if (groupIndent.length !== 0) { if (StringPrototypeIncludes(string, '\n')) { - string = StringPrototypeReplace(string, /\n/g, `\n${groupIndent}`); + string = RegExpPrototypeSymbolReplace(/\n/g, string, `\n${groupIndent}`); } string = groupIndent + string; } @@ -296,6 +309,7 @@ ObjectDefineProperties(Console.prototype, { } }, [kGetInspectOptions]: { + __proto__: null, ...consolePropAttributes, value: function(stream) { let color = this[kColorMode]; @@ -317,6 +331,7 @@ ObjectDefineProperties(Console.prototype, { } }, [kFormatForStdout]: { + __proto__: null, ...consolePropAttributes, value: function(args) { const opts = this[kGetInspectOptions](this._stdout); @@ -325,6 +340,7 @@ ObjectDefineProperties(Console.prototype, { } }, [kFormatForStderr]: { + __proto__: null, ...consolePropAttributes, value: function(args) { const opts = this[kGetInspectOptions](this._stderr); @@ -486,7 +502,7 @@ const consoleMethods = { if (tabularData === null || typeof tabularData !== 'object') return this.log(tabularData); - if (cliTable === undefined) cliTable = require('internal/cli_table'); + cliTable ??= require('internal/cli_table'); const final = (k, v) => this.log(cliTable(k, v)); const _inspect = (v) => { @@ -570,8 +586,7 @@ const consoleMethods = { } else { const keys = properties || ObjectKeys(item); for (const key of keys) { - if (map[key] === undefined) - map[key] = []; + map[key] ??= []; if ((primitive && properties) || !ObjectPrototypeHasOwnProperty(item, key)) map[key][i] = ''; @@ -669,9 +684,15 @@ Console.prototype.dirxml = Console.prototype.log; Console.prototype.error = Console.prototype.warn; Console.prototype.groupCollapsed = Console.prototype.group; +function initializeGlobalConsole(globalConsole) { + globalConsole[kBindStreamsLazy](process); + globalConsole[kBindProperties](true, 'auto'); +} + module.exports = { Console, kBindStreamsLazy, kBindProperties, + initializeGlobalConsole, formatTime // exported for tests }; diff --git a/lib/internal/console/global.js b/lib/internal/console/global.js index d6c0c24d529dcc..dd293b9f195fe9 100644 --- a/lib/internal/console/global.js +++ b/lib/internal/console/global.js @@ -21,9 +21,7 @@ const { } = primordials; const { - Console, - kBindStreamsLazy, - kBindProperties + Console } = require('internal/console/constructor'); const globalConsole = ObjectCreate({}); @@ -39,14 +37,11 @@ for (const prop of ReflectOwnKeys(Console.prototype)) { if (typeof desc.value === 'function') { // fix the receiver const name = desc.value.name; desc.value = FunctionPrototypeBind(desc.value, globalConsole); - ReflectDefineProperty(desc.value, 'name', { value: name }); + ReflectDefineProperty(desc.value, 'name', { __proto__: null, value: name }); } ReflectDefineProperty(globalConsole, prop, desc); } -globalConsole[kBindStreamsLazy](process); -globalConsole[kBindProperties](true, 'auto'); - // This is a legacy feature - the Console constructor is exposed on // the global console instance. globalConsole.Console = Console; diff --git a/lib/internal/crypto/aes.js b/lib/internal/crypto/aes.js index 9136913b7b9d14..324662e1f8b1b4 100644 --- a/lib/internal/crypto/aes.js +++ b/lib/internal/crypto/aes.js @@ -50,17 +50,10 @@ const { const { PromiseReject } = primordials; -const { - codes: { - ERR_INVALID_ARG_TYPE, - } -} = require('internal/errors'); - const { InternalCryptoKey, SecretKeyObject, createSecretKey, - isKeyObject, } = require('internal/crypto/keys'); const { @@ -237,13 +230,17 @@ async function aesGenerateKey(algorithm, extractable, keyUsages) { validateInteger(length, 'algorithm.length'); validateOneOf(length, 'algorithm.length', kAesKeyLengths); - const usageSet = new SafeSet(keyUsages); + const checkUsages = ['wrapKey', 'unwrapKey']; + if (name !== 'AES-KW') + ArrayPrototypePush(checkUsages, 'encrypt', 'decrypt'); - if (hasAnyNotIn(usageSet, ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'])) { + const usagesSet = new SafeSet(keyUsages); + if (hasAnyNotIn(usagesSet, checkUsages)) { throw lazyDOMException( 'Unsupported key usage for an AES key', 'SyntaxError'); } + return new Promise((resolve, reject) => { generateKey('aes', { length }, (err, key) => { if (err) { @@ -256,7 +253,7 @@ async function aesGenerateKey(algorithm, extractable, keyUsages) { resolve(new InternalCryptoKey( key, { name, length }, - ArrayFrom(usageSet), + ArrayFrom(usagesSet), extractable)); }); }); @@ -283,19 +280,6 @@ async function aesImportKey( let keyObject; let length; switch (format) { - case 'node.keyObject': { - if (!isKeyObject(keyData)) - throw new ERR_INVALID_ARG_TYPE('keyData', 'KeyObject', keyData); - - if (keyData.type !== 'secret') { - throw lazyDOMException( - `Unable to import AES key with format ${format}`, - 'NotSupportedError'); - } - - keyObject = keyData; - break; - } case 'raw': { validateKeyLength(keyData.byteLength * 8); keyObject = createSecretKey(keyData); diff --git a/lib/internal/crypto/cfrg.js b/lib/internal/crypto/cfrg.js new file mode 100644 index 00000000000000..ba39bc117b89ff --- /dev/null +++ b/lib/internal/crypto/cfrg.js @@ -0,0 +1,346 @@ +'use strict'; + +const { + Promise, + SafeSet, +} = primordials; + +const { Buffer } = require('buffer'); + +const { + ECKeyExportJob, + KeyObjectHandle, + SignJob, + kCryptoJobAsync, + kKeyTypePrivate, + kKeyTypePublic, + kSignJobModeSign, + kSignJobModeVerify, +} = internalBinding('crypto'); + +const { + getArrayBufferOrView, + getUsagesUnion, + hasAnyNotIn, + jobPromise, + validateKeyOps, + kHandle, + kKeyObject, +} = require('internal/crypto/util'); + +const { + emitExperimentalWarning, + lazyDOMException, +} = require('internal/util'); + +const { + generateKeyPair, +} = require('internal/crypto/keygen'); + +const { + InternalCryptoKey, + PrivateKeyObject, + PublicKeyObject, + createPrivateKey, + createPublicKey, +} = require('internal/crypto/keys'); + +function verifyAcceptableCfrgKeyUse(name, type, usages) { + let checkSet; + switch (name) { + case 'X25519': + // Fall through + case 'X448': + checkSet = ['deriveKey', 'deriveBits']; + break; + case 'Ed25519': + // Fall through + case 'Ed448': + switch (type) { + case 'private': + checkSet = ['sign']; + break; + case 'public': + checkSet = ['verify']; + break; + } + } + if (hasAnyNotIn(usages, checkSet)) { + throw lazyDOMException( + `Unsupported key usage for a ${name} key`, + 'SyntaxError'); + } +} + +function createCFRGRawKey(name, keyData, isPublic) { + const handle = new KeyObjectHandle(); + keyData = getArrayBufferOrView(keyData, 'keyData'); + + switch (name) { + case 'Ed25519': + case 'X25519': + if (keyData.byteLength !== 32) { + throw lazyDOMException( + `${name} raw keys must be exactly 32-bytes`); + } + break; + case 'Ed448': + if (keyData.byteLength !== 57) { + throw lazyDOMException( + `${name} raw keys must be exactly 57-bytes`); + } + break; + case 'X448': + if (keyData.byteLength !== 56) { + throw lazyDOMException( + `${name} raw keys must be exactly 56-bytes`); + } + break; + } + + const keyType = isPublic ? kKeyTypePublic : kKeyTypePrivate; + if (!handle.initEDRaw(name, keyData, keyType)) { + throw lazyDOMException('Failure to generate key object'); + } + + return isPublic ? new PublicKeyObject(handle) : new PrivateKeyObject(handle); +} + +async function cfrgGenerateKey(algorithm, extractable, keyUsages) { + const { name } = algorithm; + emitExperimentalWarning(`The ${name} Web Crypto API algorithm`); + + const usageSet = new SafeSet(keyUsages); + switch (name) { + case 'Ed25519': + // Fall through + case 'Ed448': + if (hasAnyNotIn(usageSet, ['sign', 'verify'])) { + throw lazyDOMException( + `Unsupported key usage for an ${name} key`, + 'SyntaxError'); + } + break; + case 'X25519': + // Fall through + case 'X448': + if (hasAnyNotIn(usageSet, ['deriveKey', 'deriveBits'])) { + throw lazyDOMException( + `Unsupported key usage for an ${name} key`, + 'SyntaxError'); + } + break; + } + return new Promise((resolve, reject) => { + let genKeyType; + switch (name) { + case 'Ed25519': + genKeyType = 'ed25519'; + break; + case 'Ed448': + genKeyType = 'ed448'; + break; + case 'X25519': + genKeyType = 'x25519'; + break; + case 'X448': + genKeyType = 'x448'; + break; + } + generateKeyPair(genKeyType, undefined, (err, pubKey, privKey) => { + if (err) { + return reject(lazyDOMException( + 'The operation failed for an operation-specific reason', + 'OperationError')); + } + + const algorithm = { name }; + + let publicUsages; + let privateUsages; + switch (name) { + case 'Ed25519': + // Fall through + case 'Ed448': + publicUsages = getUsagesUnion(usageSet, 'verify'); + privateUsages = getUsagesUnion(usageSet, 'sign'); + break; + case 'X25519': + // Fall through + case 'X448': + publicUsages = []; + privateUsages = getUsagesUnion(usageSet, 'deriveKey', 'deriveBits'); + break; + } + + const publicKey = + new InternalCryptoKey( + pubKey, + algorithm, + publicUsages, + true); + + const privateKey = + new InternalCryptoKey( + privKey, + algorithm, + privateUsages, + extractable); + + resolve({ publicKey, privateKey }); + }); + }); +} + +function cfrgExportKey(key, format) { + emitExperimentalWarning(`The ${key.algorithm.name} Web Crypto API algorithm`); + return jobPromise(new ECKeyExportJob( + kCryptoJobAsync, + format, + key[kKeyObject][kHandle])); +} + +async function cfrgImportKey( + format, + keyData, + algorithm, + extractable, + keyUsages) { + + const { name } = algorithm; + emitExperimentalWarning(`The ${name} Web Crypto API algorithm`); + let keyObject; + const usagesSet = new SafeSet(keyUsages); + switch (format) { + case 'spki': { + verifyAcceptableCfrgKeyUse(name, 'public', usagesSet); + keyObject = createPublicKey({ + key: keyData, + format: 'der', + type: 'spki' + }); + break; + } + case 'pkcs8': { + verifyAcceptableCfrgKeyUse(name, 'private', usagesSet); + keyObject = createPrivateKey({ + key: keyData, + format: 'der', + type: 'pkcs8' + }); + break; + } + case 'jwk': { + if (keyData == null || typeof keyData !== 'object') + throw lazyDOMException('Invalid JWK keyData', 'DataError'); + if (keyData.kty !== 'OKP') + throw lazyDOMException('Invalid key type', 'DataError'); + if (keyData.crv !== name) + throw lazyDOMException('Subtype mismatch', 'DataError'); + const isPublic = keyData.d === undefined; + + if (usagesSet.size > 0 && keyData.use !== undefined) { + let checkUse; + switch (name) { + case 'Ed25519': + // Fall through + case 'Ed448': + checkUse = 'sig'; + break; + case 'X25519': + // Fall through + case 'X448': + checkUse = 'enc'; + break; + } + if (keyData.use !== checkUse) + throw lazyDOMException('Invalid use type', 'DataError'); + } + + validateKeyOps(keyData.key_ops, usagesSet); + + if (keyData.ext !== undefined && + keyData.ext === false && + extractable === true) { + throw lazyDOMException('JWK is not extractable', 'DataError'); + } + + if (keyData.alg !== undefined) { + if (typeof keyData.alg !== 'string') + throw lazyDOMException('Invalid alg', 'DataError'); + if ( + (name === 'Ed25519' || name === 'Ed448') && + keyData.alg !== 'EdDSA' + ) { + throw lazyDOMException('Invalid alg', 'DataError'); + } + } + + verifyAcceptableCfrgKeyUse( + name, + isPublic ? 'public' : 'private', + usagesSet); + keyObject = createCFRGRawKey( + name, + Buffer.from( + isPublic ? keyData.x : keyData.d, + 'base64'), + isPublic); + break; + } + case 'raw': { + verifyAcceptableCfrgKeyUse(name, 'public', usagesSet); + keyObject = createCFRGRawKey(name, keyData, true); + break; + } + } + + if (keyObject.asymmetricKeyType !== name.toLowerCase()) { + throw lazyDOMException('Invalid key type', 'DataError'); + } + + return new InternalCryptoKey( + keyObject, + { name }, + keyUsages, + extractable); +} + +function eddsaSignVerify(key, data, { name, context }, signature) { + emitExperimentalWarning(`The ${name} Web Crypto API algorithm`); + const mode = signature === undefined ? kSignJobModeSign : kSignJobModeVerify; + const type = mode === kSignJobModeSign ? 'private' : 'public'; + + if (key.type !== type) + throw lazyDOMException(`Key must be a ${type} key`, 'InvalidAccessError'); + + if (name === 'Ed448' && context !== undefined) { + context = + getArrayBufferOrView(context, 'algorithm.context'); + if (context.byteLength !== 0) { + throw lazyDOMException( + 'Non zero-length context is not yet supported.', 'NotSupportedError'); + } + } + + return jobPromise(new SignJob( + kCryptoJobAsync, + mode, + key[kKeyObject][kHandle], + undefined, + undefined, + undefined, + data, + undefined, + undefined, + undefined, + undefined, + signature)); +} + +module.exports = { + cfrgExportKey, + cfrgImportKey, + cfrgGenerateKey, + eddsaSignVerify, +}; diff --git a/lib/internal/crypto/diffiehellman.js b/lib/internal/crypto/diffiehellman.js index 2efdbdd5bac9d3..62107a31a4f9e8 100644 --- a/lib/internal/crypto/diffiehellman.js +++ b/lib/internal/crypto/diffiehellman.js @@ -3,7 +3,7 @@ const { ArrayBufferPrototypeSlice, FunctionPrototypeCall, - MathFloor, + MathCeil, ObjectDefineProperty, Promise, SafeSet, @@ -12,8 +12,6 @@ const { const { Buffer } = require('buffer'); const { - DHBitsJob, - DHKeyExportJob, DiffieHellman: _DiffieHellman, DiffieHellmanGroup: _DiffieHellmanGroup, ECDH: _ECDH, @@ -53,23 +51,12 @@ const { const { KeyObject, - InternalCryptoKey, - createPrivateKey, - createPublicKey, isCryptoKey, - isKeyObject, } = require('internal/crypto/keys'); -const { - generateKeyPair, -} = require('internal/crypto/keygen'); - const { getArrayBufferOrView, getDefaultEncoding, - getUsagesUnion, - hasAnyNotIn, - jobPromise, toBuf, kHandle, kKeyObject, @@ -138,6 +125,7 @@ function DiffieHellman(sizeOrKey, keyEncoding, generator, genEncoding) { this[kHandle] = new _DiffieHellman(sizeOrKey, generator); ObjectDefineProperty(this, 'verifyError', { + __proto__: null, enumerable: true, value: this[kHandle].verifyError, writable: false @@ -150,6 +138,7 @@ function DiffieHellmanGroup(name) { return new DiffieHellmanGroup(name); this[kHandle] = new _DiffieHellmanGroup(name); ObjectDefineProperty(this, 'verifyError', { + __proto__: null, enumerable: true, value: this[kHandle].verifyError, writable: false @@ -343,89 +332,6 @@ function deriveBitsECDH(name, publicKey, privateKey, callback) { job.run(); } -// The deriveBitsDH function is part of the Web Crypto API and serves both -// deriveKeys and deriveBits functions. -function deriveBitsDH(publicKey, privateKey, callback) { - validateObject(publicKey, 'publicKey'); - validateObject(privateKey, 'privateKey'); - validateCallback(callback); - const job = new DHBitsJob(kCryptoJobAsync, publicKey, privateKey); - job.ondone = (error, bits) => { - if (error) return FunctionPrototypeCall(callback, job, error); - FunctionPrototypeCall(callback, job, null, bits); - }; - job.run(); -} - -function verifyAcceptableDhKeyUse(name, type, usages) { - let checkSet; - switch (type) { - case 'private': - checkSet = ['deriveBits', 'deriveKey']; - break; - case 'public': - checkSet = []; - break; - } - if (hasAnyNotIn(usages, checkSet)) { - throw lazyDOMException( - `Unsupported key usage for an ${name} key`, - 'SyntaxError'); - } -} - -async function dhGenerateKey( - algorithm, - extractable, - keyUsages) { - const usageSet = new SafeSet(keyUsages); - - if (hasAnyNotIn(usageSet, ['deriveKey', 'deriveBits'])) { - throw lazyDOMException( - 'Unsupported key usage for a DH key', - 'SyntaxError'); - } - - const { - name, - primeLength, - generator, - group - } = algorithm; - let { prime } = algorithm; - - if (prime !== undefined) - prime = getArrayBufferOrView(prime); - - return new Promise((resolve, reject) => { - generateKeyPair('dh', { - prime, - primeLength, - generator, - group, - }, (err, pubKey, privKey) => { - if (err) { - return reject(lazyDOMException( - 'The operation failed for an operation-specific reason', - 'OperationError')); - } - - const algorithm = { name, prime, primeLength, generator, group }; - - const publicKey = new InternalCryptoKey(pubKey, algorithm, [], true); - - const privateKey = - new InternalCryptoKey( - privKey, - algorithm, - getUsagesUnion(usageSet, 'deriveBits', 'deriveKey'), - extractable); - - resolve({ publicKey, privateKey }); - }); - }); -} - async function asyncDeriveBitsECDH(algorithm, baseKey, length) { const { 'public': key } = algorithm; @@ -445,8 +351,12 @@ async function asyncDeriveBitsECDH(algorithm, baseKey, length) { 'baseKey must be a private key', 'InvalidAccessError'); } - if (key.algorithm.name !== 'ECDH') { - throw lazyDOMException('Keys must be ECDH keys', 'InvalidAccessError'); + if ( + key.algorithm.name !== 'ECDH' && + key.algorithm.name !== 'X25519' && + key.algorithm.name !== 'X448' + ) { + throw lazyDOMException('Keys must be ECDH, X25519, or X448 keys', 'InvalidAccessError'); } if (key.algorithm.name !== baseKey.algorithm.name) { @@ -455,67 +365,16 @@ async function asyncDeriveBitsECDH(algorithm, baseKey, length) { 'InvalidAccessError'); } - if (key.algorithm.namedCurve !== baseKey.algorithm.namedCurve) + if ( + key.algorithm.name === 'ECDH' && + key.algorithm.namedCurve !== baseKey.algorithm.namedCurve + ) { throw lazyDOMException('Named curve mismatch', 'InvalidAccessError'); - - const bits = await new Promise((resolve, reject) => { - deriveBitsECDH( - baseKey.algorithm.namedCurve, - key[kKeyObject][kHandle], - baseKey[kKeyObject][kHandle], (err, bits) => { - if (err) return reject(err); - resolve(bits); - }); - }); - - // If a length is not specified, return the full derived secret - if (length === null) - return bits; - - // If the length is not a multiple of 8, it will be truncated - // down to the nearest multiple of 8. - length = MathFloor(length / 8); - const { byteLength } = bits; - - // If the length is larger than the derived secret, throw. - // Otherwise, we either return the secret or a truncated - // slice. - if (byteLength < length) - throw lazyDOMException('derived bit length is too small', 'OperationError'); - - return length === byteLength ? - bits : - ArrayBufferPrototypeSlice(bits, 0, length); -} - -async function asyncDeriveBitsDH(algorithm, baseKey, length) { - const { 'public': key } = algorithm; - // Null has a specific meaning for DH - if (length !== null) - validateUint32(length, 'length'); - if (!isCryptoKey(key)) - throw new ERR_INVALID_ARG_TYPE('algorithm.public', 'CryptoKey', key); - - if (key.type !== 'public') { - throw lazyDOMException( - 'algorithm.public must be a public key', 'InvalidAccessError'); - } - if (baseKey.type !== 'private') { - throw lazyDOMException( - 'baseKey must be a private key', 'InvalidAccessError'); - } - - if (key.algorithm.name !== 'NODE-DH') - throw lazyDOMException('Keys must be DH keys', 'InvalidAccessError'); - - if (key.algorithm.name !== baseKey.algorithm.name) { - throw lazyDOMException( - 'The public and private keys must be of the same type', - 'InvalidAccessError'); } const bits = await new Promise((resolve, reject) => { - deriveBitsDH( + deriveBitsECDH( + key.algorithm.name === 'ECDH' ? baseKey.algorithm.namedCurve : baseKey.algorithm.name, key[kKeyObject][kHandle], baseKey[kKeyObject][kHandle], (err, bits) => { if (err) return reject(err); @@ -527,9 +386,9 @@ async function asyncDeriveBitsDH(algorithm, baseKey, length) { if (length === null) return bits; - // If the length is not a multiple of 8, it will be truncated - // down to the nearest multiple of 8. - length = MathFloor(length / 8); + // If the length is not a multiple of 8 the nearest ceiled + // multiple of 8 is sliced. + length = MathCeil(length / 8); const { byteLength } = bits; // If the length is larger than the derived secret, throw. @@ -543,81 +402,11 @@ async function asyncDeriveBitsDH(algorithm, baseKey, length) { ArrayBufferPrototypeSlice(bits, 0, length); } -function dhExportKey(key, format) { - return jobPromise(new DHKeyExportJob( - kCryptoJobAsync, - format, - key[kKeyObject][kHandle])); -} - -async function dhImportKey( - format, - keyData, - algorithm, - extractable, - keyUsages) { - const usagesSet = new SafeSet(keyUsages); - let keyObject; - switch (format) { - case 'node.keyObject': { - if (!isKeyObject(keyData)) - throw new ERR_INVALID_ARG_TYPE('keyData', 'KeyObject', keyData); - if (keyData.type === 'secret') - throw lazyDOMException('Invalid key type', 'InvalidAccessException'); - verifyAcceptableDhKeyUse(algorithm.name, keyData.type, usagesSet); - keyObject = keyData; - break; - } - case 'spki': { - verifyAcceptableDhKeyUse(algorithm.name, 'public', usagesSet); - keyObject = createPublicKey({ - key: keyData, - format: 'der', - type: 'spki' - }); - break; - } - case 'pkcs8': { - verifyAcceptableDhKeyUse(algorithm.name, 'private', usagesSet); - keyObject = createPrivateKey({ - key: keyData, - format: 'der', - type: 'pkcs8' - }); - break; - } - default: - throw lazyDOMException( - `Unable to import DH key with format ${format}`, - 'NotSupportedError'); - } - - const { - prime, - primeLength, - generator, - group, - } = keyObject[kHandle].keyDetail({}); - - return new InternalCryptoKey(keyObject, { - name: algorithm.name, - prime, - primeLength, - generator, - group, - }, keyUsages, extractable); -} - module.exports = { DiffieHellman, DiffieHellmanGroup, ECDH, diffieHellman, deriveBitsECDH, - deriveBitsDH, - dhGenerateKey, asyncDeriveBitsECDH, - asyncDeriveBitsDH, - dhExportKey, - dhImportKey, }; diff --git a/lib/internal/crypto/dsa.js b/lib/internal/crypto/dsa.js deleted file mode 100644 index 12e327c6ed1765..00000000000000 --- a/lib/internal/crypto/dsa.js +++ /dev/null @@ -1,276 +0,0 @@ -'use strict'; - -const { - Promise, - SafeSet, -} = primordials; - -const { - DSAKeyExportJob, - KeyObjectHandle, - SignJob, - kCryptoJobAsync, - kSigEncDER, - kKeyTypePrivate, - kSignJobModeSign, - kSignJobModeVerify, -} = internalBinding('crypto'); - -const { - codes: { - ERR_INVALID_ARG_TYPE, - ERR_MISSING_OPTION, - } -} = require('internal/errors'); - -const { - validateUint32, -} = require('internal/validators'); - -const { - InternalCryptoKey, - PrivateKeyObject, - PublicKeyObject, - createPrivateKey, - createPublicKey, - isKeyObject, -} = require('internal/crypto/keys'); - -const { - generateKeyPair, -} = require('internal/crypto/keygen'); - -const { - getUsagesUnion, - hasAnyNotIn, - jobPromise, - normalizeHashName, - validateKeyOps, - kKeyObject, - kHandle, -} = require('internal/crypto/util'); - -const { - lazyDOMException, -} = require('internal/util'); - -function verifyAcceptableDsaKeyUse(name, type, usages) { - let checkSet; - switch (type) { - case 'private': - checkSet = ['sign']; - break; - case 'public': - checkSet = ['verify']; - break; - } - if (hasAnyNotIn(usages, checkSet)) { - throw lazyDOMException( - `Unsupported key usage for an ${name} key`, - 'SyntaxError'); - } -} - -async function dsaGenerateKey( - algorithm, - extractable, - keyUsages) { - const { - name, - modulusLength, - divisorLength, - hash - } = algorithm; - - if (hash === undefined) - throw new ERR_MISSING_OPTION('algorithm.hash'); - validateUint32(modulusLength, 'algorithm.modulusLength'); - - const usageSet = new SafeSet(keyUsages); - - if (hasAnyNotIn(usageSet, ['sign', 'verify'])) { - throw lazyDOMException( - 'Unsupported key usage for a DSA key', - 'SyntaxError'); - } - - return new Promise((resolve, reject) => { - generateKeyPair('dsa', { - modulusLength, - divisorLength, - }, (err, pubKey, privKey) => { - if (err) { - return reject(lazyDOMException( - 'The operation failed for an operation-specific reason', - 'OperationError')); - } - - const algorithm = { - name, - modulusLength, - divisorLength, - hash: { name: hash.name } - }; - - const publicKey = - new InternalCryptoKey( - pubKey, - algorithm, - getUsagesUnion(usageSet, 'verify'), - true); - - const privateKey = - new InternalCryptoKey( - privKey, - algorithm, - getUsagesUnion(usageSet, 'sign'), - extractable); - - resolve({ publicKey, privateKey }); - }); - }); -} - -function dsaExportKey(key, format) { - return jobPromise(new DSAKeyExportJob( - kCryptoJobAsync, - format, - key[kKeyObject][kHandle])); -} - -async function dsaImportKey( - format, - keyData, - algorithm, - extractable, - keyUsages) { - const { hash } = algorithm; - if (hash === undefined) - throw new ERR_MISSING_OPTION('algorithm.hash'); - - const usagesSet = new SafeSet(keyUsages); - let keyObject; - switch (format) { - case 'node.keyObject': { - if (!isKeyObject(keyData)) - throw new ERR_INVALID_ARG_TYPE('keyData', 'KeyObject', keyData); - if (keyData.type === 'secret') - throw lazyDOMException('Invalid key type', 'InvalidAccessException'); - verifyAcceptableDsaKeyUse(algorithm.name, keyData.type, usagesSet); - keyObject = keyData; - break; - } - case 'spki': { - verifyAcceptableDsaKeyUse(algorithm.name, 'public', usagesSet); - keyObject = createPublicKey({ - key: keyData, - format: 'der', - type: 'spki' - }); - break; - } - case 'pkcs8': { - verifyAcceptableDsaKeyUse(algorithm.name, 'private', usagesSet); - keyObject = createPrivateKey({ - key: keyData, - format: 'der', - type: 'pkcs8' - }); - break; - } - case 'jwk': { - if (keyData == null || typeof keyData !== 'object') - throw lazyDOMException('Invalid JWK keyData', 'DataError'); - - verifyAcceptableDsaKeyUse( - algorithm.name, - keyData.x !== undefined ? 'private' : 'public', - usagesSet); - - if (keyData.kty !== 'DSA') - throw lazyDOMException('Invalid key type', 'DataError'); - - if (usagesSet.size > 0 && - keyData.use !== undefined && - keyData.use !== 'sig') { - throw lazyDOMException('Invalid use type', 'DataError'); - } - - validateKeyOps(keyData.key_ops, usagesSet); - - if (keyData.ext !== undefined && - keyData.ext === false && - extractable === true) { - throw lazyDOMException('JWK is not extractable', 'DataError'); - } - - if (keyData.alg !== undefined) { - if (typeof keyData.alg !== 'string') - throw lazyDOMException('Invalid alg', 'DataError'); - const hash = - normalizeHashName(keyData.alg, normalizeHashName.kContextWebCrypto); - if (hash !== algorithm.hash.name) - throw lazyDOMException('Hash mismatch', 'DataError'); - } - - const handle = new KeyObjectHandle(); - const type = handle.initJwk(keyData); - if (type === undefined) - throw lazyDOMException('Invalid JWK keyData', 'DataError'); - - keyObject = type === kKeyTypePrivate ? - new PrivateKeyObject(handle) : - new PublicKeyObject(handle); - - break; - } - default: - throw lazyDOMException( - `Unable to import DSA key with format ${format}`, - 'NotSupportedError'); - } - - if (keyObject.asymmetricKeyType !== 'dsa') - throw lazyDOMException('Invalid key type', 'DataError'); - - const { - modulusLength, - divisorLength, - } = keyObject[kHandle].keyDetail({}); - - return new InternalCryptoKey(keyObject, { - name: algorithm.name, - modulusLength, - divisorLength, - hash: algorithm.hash - }, keyUsages, extractable); -} - -function dsaSignVerify(key, data, algorithm, signature) { - const mode = signature === undefined ? kSignJobModeSign : kSignJobModeVerify; - const type = mode === kSignJobModeSign ? 'private' : 'public'; - - if (key.type !== type) - throw lazyDOMException(`Key must be a ${type} key`, 'InvalidAccessError'); - - return jobPromise(new SignJob( - kCryptoJobAsync, - signature === undefined ? kSignJobModeSign : kSignJobModeVerify, - key[kKeyObject][kHandle], - undefined, - undefined, - undefined, - data, - normalizeHashName(key.algorithm.hash.name), - undefined, // Salt-length is not used in DSA - undefined, // Padding is not used in DSA - kSigEncDER, - signature)); -} - -module.exports = { - dsaExportKey, - dsaGenerateKey, - dsaImportKey, - dsaSignVerify, -}; diff --git a/lib/internal/crypto/ec.js b/lib/internal/crypto/ec.js index b64922bcdc883f..809f531069bf8b 100644 --- a/lib/internal/crypto/ec.js +++ b/lib/internal/crypto/ec.js @@ -6,29 +6,24 @@ const { SafeSet, } = primordials; -const { Buffer } = require('buffer'); - const { ECKeyExportJob, KeyObjectHandle, SignJob, kCryptoJobAsync, kKeyTypePrivate, - kKeyTypePublic, kSignJobModeSign, kSignJobModeVerify, kSigEncP1363, } = internalBinding('crypto'); const { - validateBoolean, validateOneOf, validateString, } = require('internal/validators'); const { codes: { - ERR_INVALID_ARG_TYPE, ERR_MISSING_OPTION, } } = require('internal/errors'); @@ -59,7 +54,6 @@ const { PublicKeyObject, createPrivateKey, createPublicKey, - isKeyObject, } = require('internal/crypto/keys'); function verifyAcceptableEcKeyUse(name, type, usages) { @@ -68,10 +62,6 @@ function verifyAcceptableEcKeyUse(name, type, usages) { case 'ECDH': checkSet = ['deriveKey', 'deriveBits']; break; - case 'NODE-ED25519': - // Fall through - case 'NODE-ED448': - // Fall through case 'ECDSA': switch (type) { case 'private': @@ -96,40 +86,6 @@ function createECPublicKeyRaw(namedCurve, keyData) { return new PublicKeyObject(handle); } -function createECRawKey(namedCurve, keyData, isPublic) { - const handle = new KeyObjectHandle(); - keyData = getArrayBufferOrView(keyData, 'keyData'); - - switch (namedCurve) { - case 'NODE-ED25519': - case 'NODE-X25519': - if (keyData.byteLength !== 32) { - throw lazyDOMException( - `${namedCurve} raw keys must be exactly 32-bytes`); - } - break; - case 'NODE-ED448': - if (keyData.byteLength !== 57) { - throw lazyDOMException( - `${namedCurve} raw keys must be exactly 57-bytes`); - } - break; - case 'NODE-X448': - if (keyData.byteLength !== 56) { - throw lazyDOMException( - `${namedCurve} raw keys must be exactly 56-bytes`); - } - break; - } - - const keyType = isPublic ? kKeyTypePublic : kKeyTypePrivate; - if (!handle.initEDRaw(namedCurve, keyData, keyType)) { - throw lazyDOMException('Failure to generate key object'); - } - - return isPublic ? new PublicKeyObject(handle) : new PrivateKeyObject(handle); -} - async function ecGenerateKey(algorithm, extractable, keyUsages) { const { name, namedCurve } = algorithm; validateString(namedCurve, 'algorithm.namedCurve'); @@ -141,16 +97,6 @@ async function ecGenerateKey(algorithm, extractable, keyUsages) { const usageSet = new SafeSet(keyUsages); switch (name) { case 'ECDSA': - if (namedCurve === 'NODE-ED25519' || - namedCurve === 'NODE-ED448' || - namedCurve === 'NODE-X25519' || - namedCurve === 'NODE-X448') { - throw lazyDOMException('Unsupported named curves for ECDSA'); - } - // Fall through - case 'NODE-ED25519': - // Fall through - case 'NODE-ED448': if (hasAnyNotIn(usageSet, ['sign', 'verify'])) { throw lazyDOMException( 'Unsupported key usage for an ECDSA key', @@ -163,33 +109,10 @@ async function ecGenerateKey(algorithm, extractable, keyUsages) { 'Unsupported key usage for an ECDH key', 'SyntaxError'); } - if (namedCurve === 'NODE-ED25519' || namedCurve === 'NODE-ED448') { - throw lazyDOMException('Unsupported named curves for ECDH'); - } // Fall through } return new Promise((resolve, reject) => { - let genKeyType; - let genOpts; - switch (namedCurve) { - case 'NODE-ED25519': - genKeyType = 'ed25519'; - break; - case 'NODE-ED448': - genKeyType = 'ed448'; - break; - case 'NODE-X25519': - genKeyType = 'x25519'; - break; - case 'NODE-X448': - genKeyType = 'x448'; - break; - default: - genKeyType = 'ec'; - genOpts = { namedCurve }; - break; - } - generateKeyPair(genKeyType, genOpts, (err, pubKey, privKey) => { + generateKeyPair('ec', { namedCurve }, (err, pubKey, privKey) => { if (err) { return reject(lazyDOMException( 'The operation failed for an operation-specific reason', @@ -201,10 +124,6 @@ async function ecGenerateKey(algorithm, extractable, keyUsages) { let publicUsages; let privateUsages; switch (name) { - case 'NODE-ED25519': - // Fall through - case 'NODE-ED448': - // Fall through case 'ECDSA': publicUsages = getUsagesUnion(usageSet, 'verify'); privateUsages = getUsagesUnion(usageSet, 'sign'); @@ -256,33 +175,7 @@ async function ecImportKey( ObjectKeys(kNamedCurveAliases)); let keyObject; const usagesSet = new SafeSet(keyUsages); - let checkNamedCurve = true; switch (format) { - case 'node.keyObject': { - if (!isKeyObject(keyData)) - throw new ERR_INVALID_ARG_TYPE('keyData', 'KeyObject', keyData); - if (keyData.type === 'secret') - throw lazyDOMException('Invalid key type', 'InvalidAccessException'); - - switch (namedCurve) { - case 'NODE-X25519': - // Fall through - case 'NODE-X448': - if (algorithm.name !== 'ECDH') - throw lazyDOMException('Invalid algorithm name.', 'DataError'); - break; - case 'NODE-ED25519': - // Fall through - case 'NODE-ED448': - if (algorithm.name !== namedCurve) - throw lazyDOMException('Invalid algorithm name.', 'DataError'); - break; - } - - verifyAcceptableEcKeyUse(name, keyData.type, usagesSet); - keyObject = keyData; - break; - } case 'spki': { verifyAcceptableEcKeyUse(name, 'public', usagesSet); keyObject = createPublicKey({ @@ -302,122 +195,59 @@ async function ecImportKey( break; } case 'jwk': { - let curve; if (keyData == null || typeof keyData !== 'object') throw lazyDOMException('Invalid JWK keyData', 'DataError'); - switch (keyData.kty) { - case 'OKP': { - const isPublic = keyData.d === undefined; - - let type; - switch (namedCurve) { - case 'NODE-ED25519': - // Fall through - case 'NODE-ED448': - type = `NODE-${keyData.crv.toUpperCase()}`; - break; - case 'NODE-X25519': - // Fall through - case 'NODE-X448': - type = 'ECDH'; - break; - } - - if (algorithm.name !== type) - throw lazyDOMException('Invalid algorithm name.', 'DataError'); - - verifyAcceptableEcKeyUse( - type, - isPublic ? 'public' : 'private', - usagesSet); - keyObject = createECRawKey( - namedCurve, - Buffer.from( - isPublic ? keyData.x : keyData.d, - 'base64'), - isPublic); - break; - } - default: { - if (keyData.kty !== 'EC') - throw lazyDOMException('Invalid key type', 'DataError'); - - if (keyData.d !== undefined) { - verifyAcceptableEcKeyUse(name, 'private', usagesSet); - } else { - verifyAcceptableEcKeyUse(name, 'public', usagesSet); - } - - if (usagesSet.size > 0 && keyData.use !== undefined) { - if (algorithm.name === 'ECDSA' && keyData.use !== 'sig') - throw lazyDOMException('Invalid use type', 'DataError'); - if (algorithm.name === 'ECDH' && keyData.use !== 'enc') - throw lazyDOMException('Invalid use type', 'DataError'); - } - - validateKeyOps(keyData.key_ops, usagesSet); - - if (keyData.ext !== undefined && - keyData.ext === false && - extractable === true) { - throw lazyDOMException('JWK is not extractable', 'DataError'); - } - - if (algorithm.name === 'ECDSA' && keyData.alg !== undefined) { - if (typeof keyData.alg !== 'string') - throw lazyDOMException('Invalid alg', 'DataError'); - switch (keyData.alg) { - case 'ES256': curve = 'P-256'; break; - case 'ES384': curve = 'P-384'; break; - case 'ES512': curve = 'P-521'; break; - } - if (curve !== namedCurve) - throw lazyDOMException('Named curve mismatch', 'DataError'); - } - - const handle = new KeyObjectHandle(); - const type = handle.initJwk(keyData, namedCurve); - if (type === undefined) - throw lazyDOMException('Invalid JWK keyData', 'DataError'); - keyObject = type === kKeyTypePrivate ? - new PrivateKeyObject(handle) : - new PublicKeyObject(handle); + if (keyData.kty !== 'EC') + throw lazyDOMException('Invalid key type', 'DataError'); + if (keyData.crv !== namedCurve) + throw lazyDOMException('Named curve mismatch', 'DataError'); + + if (keyData.d !== undefined) { + verifyAcceptableEcKeyUse(name, 'private', usagesSet); + } else { + verifyAcceptableEcKeyUse(name, 'public', usagesSet); + } + + if (usagesSet.size > 0 && keyData.use !== undefined) { + if (algorithm.name === 'ECDSA' && keyData.use !== 'sig') + throw lazyDOMException('Invalid use type', 'DataError'); + if (algorithm.name === 'ECDH' && keyData.use !== 'enc') + throw lazyDOMException('Invalid use type', 'DataError'); + } + + validateKeyOps(keyData.key_ops, usagesSet); + + if (keyData.ext !== undefined && + keyData.ext === false && + extractable === true) { + throw lazyDOMException('JWK is not extractable', 'DataError'); + } + + if (algorithm.name === 'ECDSA' && keyData.alg !== undefined) { + if (typeof keyData.alg !== 'string') + throw lazyDOMException('Invalid alg', 'DataError'); + let algNamedCurve; + switch (keyData.alg) { + case 'ES256': algNamedCurve = 'P-256'; break; + case 'ES384': algNamedCurve = 'P-384'; break; + case 'ES512': algNamedCurve = 'P-521'; break; } + if (algNamedCurve !== namedCurve) + throw lazyDOMException('Named curve mismatch', 'DataError'); } + + const handle = new KeyObjectHandle(); + const type = handle.initJwk(keyData, namedCurve); + if (type === undefined) + throw lazyDOMException('Invalid JWK keyData', 'DataError'); + keyObject = type === kKeyTypePrivate ? + new PrivateKeyObject(handle) : + new PublicKeyObject(handle); break; } case 'raw': { - switch (namedCurve) { - case 'NODE-X25519': - // Fall through - case 'NODE-X448': - if (algorithm.public !== undefined) - validateBoolean(algorithm.public, 'algorithm.public'); - if (algorithm.name !== 'ECDH') - throw lazyDOMException('Invalid algorithm name.', 'DataError'); - verifyAcceptableEcKeyUse( - algorithm.name, - algorithm.public === true ? 'public' : 'private', - usagesSet); - keyObject = createECRawKey(namedCurve, keyData, algorithm.public); - break; - case 'NODE-ED25519': - // Fall through - case 'NODE-ED448': - if (algorithm.public !== undefined) - validateBoolean(algorithm.public, 'algorithm.public'); - if (algorithm.name !== namedCurve) - throw lazyDOMException('Invalid algorithm name.', 'DataError'); - verifyAcceptableEcKeyUse( - algorithm.name, - algorithm.public === true ? 'public' : 'private', - usagesSet); - keyObject = createECRawKey(namedCurve, keyData, algorithm.public); - break; - default: - verifyAcceptableEcKeyUse(name, 'public', usagesSet); - keyObject = createECPublicKeyRaw(namedCurve, keyData); - } + verifyAcceptableEcKeyUse(name, 'public', usagesSet); + keyObject = createECPublicKeyRaw(namedCurve, keyData); if (keyObject === undefined) throw lazyDOMException('Unable to import EC key', 'OperationError'); break; @@ -426,41 +256,18 @@ async function ecImportKey( switch (algorithm.name) { case 'ECDSA': - if (keyObject.asymmetricKeyType !== 'ec') - throw lazyDOMException('Invalid key type', 'DataError'); - break; + // Fall through case 'ECDH': - if (algorithm.namedCurve === 'NODE-X25519') { - if (keyObject.asymmetricKeyType !== 'x25519') - throw lazyDOMException('Invalid key type', 'DataError'); - checkNamedCurve = false; - } else if (algorithm.namedCurve === 'NODE-X448') { - if (keyObject.asymmetricKeyType !== 'x448') - throw lazyDOMException('Invalid key type', 'DataError'); - checkNamedCurve = false; - } else if (keyObject.asymmetricKeyType !== 'ec') { - throw lazyDOMException('Invalid key type', 'DataError'); - } - break; - case 'NODE-ED25519': - if (keyObject.asymmetricKeyType !== 'ed25519') - throw lazyDOMException('Invalid key type', 'DataError'); - checkNamedCurve = false; - break; - case 'NODE-ED448': - if (keyObject.asymmetricKeyType !== 'ed448') + if (keyObject.asymmetricKeyType !== 'ec') throw lazyDOMException('Invalid key type', 'DataError'); - checkNamedCurve = false; break; } - if (checkNamedCurve) { - const { - namedCurve: checkNamedCurve - } = keyObject[kHandle].keyDetail({}); - if (kNamedCurveAliases[namedCurve] !== checkNamedCurve) - throw lazyDOMException('Named curve mismatch', 'DataError'); - } + const { + namedCurve: checkNamedCurve + } = keyObject[kHandle].keyDetail({}); + if (kNamedCurveAliases[namedCurve] !== checkNamedCurve) + throw lazyDOMException('Named curve mismatch', 'DataError'); return new InternalCryptoKey( keyObject, @@ -476,19 +283,9 @@ function ecdsaSignVerify(key, data, { name, hash }, signature) { if (key.type !== type) throw lazyDOMException(`Key must be a ${type} key`, 'InvalidAccessError'); - let hashname; - switch (name) { - case 'NODE-ED25519': - // Fall through - case 'NODE-ED448': - if (hash !== undefined) - throw lazyDOMException(`Hash is not permitted for ${name}`); - break; - default: - if (hash === undefined) - throw new ERR_MISSING_OPTION('algorithm.hash'); - hashname = normalizeHashName(hash.name); - } + if (hash === undefined) + throw new ERR_MISSING_OPTION('algorithm.hash'); + const hashname = normalizeHashName(hash.name); return jobPromise(new SignJob( kCryptoJobAsync, diff --git a/lib/internal/crypto/hash.js b/lib/internal/crypto/hash.js index 6c502f52b66503..956053af0a8c2c 100644 --- a/lib/internal/crypto/hash.js +++ b/lib/internal/crypto/hash.js @@ -28,6 +28,10 @@ const { prepareSecretKey, } = require('internal/crypto/keys'); +const { + lazyDOMException, +} = require('internal/util'); + const { Buffer, } = require('buffer'); @@ -171,11 +175,22 @@ async function asyncDigest(algorithm, data) { if (algorithm.length !== undefined) validateUint32(algorithm.length, 'algorithm.length'); - return jobPromise(new HashJob( - kCryptoJobAsync, - normalizeHashName(algorithm.name), - data, - algorithm.length)); + switch (algorithm.name) { + case 'SHA-1': + // Fall through + case 'SHA-256': + // Fall through + case 'SHA-384': + // Fall through + case 'SHA-512': + return jobPromise(new HashJob( + kCryptoJobAsync, + normalizeHashName(algorithm.name), + data, + algorithm.length)); + } + + throw lazyDOMException('Unrecognized name.', 'NotSupportedError'); } module.exports = { diff --git a/lib/internal/crypto/hashnames.js b/lib/internal/crypto/hashnames.js index be5064532c86c9..5c0051e0a8f563 100644 --- a/lib/internal/crypto/hashnames.js +++ b/lib/internal/crypto/hashnames.js @@ -11,7 +11,6 @@ const kHashContextJwkRsa = 3; const kHashContextJwkRsaPss = 4; const kHashContextJwkRsaOaep = 5; const kHashContextJwkHmac = 6; -const kHashContextJwkDsa = 7; // WebCrypto and JWK use a bunch of different names for the // standard set of SHA-* digest algorithms... which is ... fun. @@ -26,7 +25,6 @@ const kHashNames = { [kHashContextJwkRsaPss]: 'PS1', [kHashContextJwkRsaOaep]: 'RSA-OAEP', [kHashContextJwkHmac]: 'HS1', - [kHashContextJwkDsa]: 'NODE-DSA-SHA-1', }, sha256: { [kHashContextNode]: 'sha256', @@ -35,7 +33,6 @@ const kHashNames = { [kHashContextJwkRsaPss]: 'PS256', [kHashContextJwkRsaOaep]: 'RSA-OAEP-256', [kHashContextJwkHmac]: 'HS256', - [kHashContextJwkDsa]: 'NODE-DSA-SHA-256', }, sha384: { [kHashContextNode]: 'sha384', @@ -44,7 +41,6 @@ const kHashNames = { [kHashContextJwkRsaPss]: 'PS384', [kHashContextJwkRsaOaep]: 'RSA-OAEP-384', [kHashContextJwkHmac]: 'HS384', - [kHashContextJwkDsa]: 'NODE-DSA-SHA-384', }, sha512: { [kHashContextNode]: 'sha512', @@ -53,7 +49,6 @@ const kHashNames = { [kHashContextJwkRsaPss]: 'PS512', [kHashContextJwkRsaOaep]: 'RSA-OAEP-512', [kHashContextJwkHmac]: 'HS512', - [kHashContextJwkDsa]: 'NODE-DSA-SHA-512', } }; @@ -85,6 +80,5 @@ normalizeHashName.kContextJwkRsa = kHashContextJwkRsa; normalizeHashName.kContextJwkRsaPss = kHashContextJwkRsaPss; normalizeHashName.kContextJwkRsaOaep = kHashContextJwkRsaOaep; normalizeHashName.kContextJwkHmac = kHashContextJwkHmac; -normalizeHashName.kContextJwkDsa = kHashContextJwkDsa; module.exports = normalizeHashName; diff --git a/lib/internal/crypto/hkdf.js b/lib/internal/crypto/hkdf.js index 1d8251a9245b66..f47a2766e0cf53 100644 --- a/lib/internal/crypto/hkdf.js +++ b/lib/internal/crypto/hkdf.js @@ -53,13 +53,10 @@ const { } = require('internal/errors'); const validateParameters = hideStackFrames((hash, key, salt, info, length) => { - key = prepareKey(key); - salt = toBuf(salt); - info = toBuf(info); - validateString(hash, 'digest'); - validateByteSource(salt, 'salt'); - validateByteSource(info, 'info'); + key = prepareKey(key); + salt = validateByteSource(salt, 'salt'); + info = validateByteSource(info, 'info'); validateInteger(length, 'length', 0, kMaxLength); diff --git a/lib/internal/crypto/keygen.js b/lib/internal/crypto/keygen.js index 1469a01682edda..af9c7eb231a709 100644 --- a/lib/internal/crypto/keygen.js +++ b/lib/internal/crypto/keygen.js @@ -38,7 +38,10 @@ const { kAesKeyLengths, } = require('internal/crypto/util'); -const { customPromisifyArgs } = require('internal/util'); +const { + customPromisifyArgs, + kEmptyObject, +} = require('internal/util'); const { isInt32, @@ -93,6 +96,7 @@ function generateKeyPair(type, options, callback) { } ObjectDefineProperty(generateKeyPair, customPromisifyArgs, { + __proto__: null, value: ['publicKey', 'privateKey'], enumerable: false }); @@ -118,7 +122,7 @@ function handleError(ret) { }; } -function parseKeyEncoding(keyType, options = {}) { +function parseKeyEncoding(keyType, options = kEmptyObject) { const { publicKeyEncoding, privateKeyEncoding } = options; let publicFormat, publicType; @@ -356,7 +360,7 @@ function generateKeyJob(mode, keyType, options) { const { length } = options; switch (keyType) { case 'hmac': - validateInteger(length, 'options.length', 1, 2 ** 31 - 1); + validateInteger(length, 'options.length', 8, 2 ** 31 - 1); break; case 'aes': validateOneOf(length, 'options.length', kAesKeyLengths); diff --git a/lib/internal/crypto/keys.js b/lib/internal/crypto/keys.js index 5c9f1fd0926506..881cf00f051fcd 100644 --- a/lib/internal/crypto/keys.js +++ b/lib/internal/crypto/keys.js @@ -85,7 +85,7 @@ for (const m of [[kKeyEncodingPKCS1, 'pkcs1'], [kKeyEncodingPKCS8, 'pkcs8'], encodingNames[m[0]] = m[1]; // Creating the KeyObject class is a little complicated due to inheritance -// and that fact that KeyObjects should be transferrable between threads, +// and the fact that KeyObjects should be transferrable between threads, // which requires the KeyObject base class to be implemented in C++. // The creation requires a callback to make sure that the NativeKeyObject // base class cannot exist without the other KeyObject implementations. @@ -108,6 +108,7 @@ const { this[kKeyType] = type; ObjectDefineProperty(this, kHandle, { + __proto__: null, value: handle, enumerable: false, configurable: false, @@ -447,7 +448,7 @@ function getKeyObjectHandleFromJwk(key, ctx) { const handle = new KeyObjectHandle(); const keyType = isPublic ? kKeyTypePublic : kKeyTypePrivate; - if (!handle.initEDRaw(`NODE-${key.crv.toUpperCase()}`, keyData, keyType)) { + if (!handle.initEDRaw(key.crv, keyData, keyType)) { throw new ERR_CRYPTO_INVALID_JWK(); } diff --git a/lib/internal/crypto/mac.js b/lib/internal/crypto/mac.js index 61fcc88a923dad..3054f66b27d4f2 100644 --- a/lib/internal/crypto/mac.js +++ b/lib/internal/crypto/mac.js @@ -32,7 +32,6 @@ const { const { codes: { ERR_MISSING_OPTION, - ERR_INVALID_ARG_TYPE, } } = require('internal/errors'); @@ -44,7 +43,6 @@ const { InternalCryptoKey, SecretKeyObject, createSecretKey, - isKeyObject, } = require('internal/crypto/keys'); async function hmacGenerateKey(algorithm, extractable, keyUsages) { @@ -99,18 +97,6 @@ async function hmacImportKey( } let keyObject; switch (format) { - case 'node.keyObject': { - if (!isKeyObject(keyData)) - throw new ERR_INVALID_ARG_TYPE('keyData', 'KeyObject', keyData); - - if (keyData.type !== 'secret') { - throw lazyDOMException( - `Unable to import HMAC key with format ${format}`); - } - - keyObject = keyData; - break; - } case 'raw': { const checkLength = keyData.byteLength * 8; diff --git a/lib/internal/crypto/random.js b/lib/internal/crypto/random.js index 1423ea4295443e..277ddf95eb4de7 100644 --- a/lib/internal/crypto/random.js +++ b/lib/internal/crypto/random.js @@ -26,6 +26,7 @@ const { } = internalBinding('crypto'); const { + kEmptyObject, lazyDOMException, } = require('internal/util'); @@ -43,6 +44,7 @@ const { validateNumber, validateBoolean, validateCallback, + validateInt32, validateObject, validateUint32, } = require('internal/validators'); @@ -398,7 +400,7 @@ function randomUUID(options) { validateObject(options, 'options'); const { disableEntropyCache = false, - } = options || {}; + } = options || kEmptyObject; validateBoolean(disableEntropyCache, 'options.disableEntropyCache'); @@ -460,10 +462,10 @@ function createRandomPrimeJob(type, size, options) { } function generatePrime(size, options, callback) { - validateUint32(size, 'size', true); + validateInt32(size, 'size', 1); if (typeof options === 'function') { callback = options; - options = {}; + options = kEmptyObject; } validateCallback(callback); @@ -481,8 +483,8 @@ function generatePrime(size, options, callback) { job.run(); } -function generatePrimeSync(size, options = {}) { - validateUint32(size, 'size', true); +function generatePrimeSync(size, options = kEmptyObject) { + validateInt32(size, 'size', 1); const job = createRandomPrimeJob(kCryptoJobSync, size, options); const { 0: err, 1: prime } = job.run(); @@ -505,7 +507,7 @@ function unsignedBigIntToBuffer(bigint, name) { return Buffer.from(padded, 'hex'); } -function checkPrime(candidate, options = {}, callback) { +function checkPrime(candidate, options = kEmptyObject, callback) { if (typeof candidate === 'bigint') candidate = unsignedBigIntToBuffer(candidate, 'candidate'); if (!isAnyArrayBuffer(candidate) && !isArrayBufferView(candidate)) { @@ -523,7 +525,7 @@ function checkPrime(candidate, options = {}, callback) { } if (typeof options === 'function') { callback = options; - options = {}; + options = kEmptyObject; } validateCallback(callback); validateObject(options, 'options'); @@ -538,7 +540,7 @@ function checkPrime(candidate, options = {}, callback) { job.run(); } -function checkPrimeSync(candidate, options = {}) { +function checkPrimeSync(candidate, options = kEmptyObject) { if (typeof candidate === 'bigint') candidate = unsignedBigIntToBuffer(candidate, 'candidate'); if (!isAnyArrayBuffer(candidate) && !isArrayBufferView(candidate)) { diff --git a/lib/internal/crypto/rsa.js b/lib/internal/crypto/rsa.js index 8e4b6af571dda3..728e4bd951cdc5 100644 --- a/lib/internal/crypto/rsa.js +++ b/lib/internal/crypto/rsa.js @@ -61,7 +61,6 @@ const { PublicKeyObject, createPublicKey, createPrivateKey, - isKeyObject, } = require('internal/crypto/keys'); const { @@ -177,7 +176,7 @@ async function rsaKeyGenerate( return new Promise((resolve, reject) => { generateKeyPair('rsa', { modulusLength, - publicExponentConverted, + publicExponent: publicExponentConverted, }, (err, pubKey, privKey) => { if (err) { return reject(lazyDOMException( @@ -247,15 +246,6 @@ async function rsaImportKey( const usagesSet = new SafeSet(keyUsages); let keyObject; switch (format) { - case 'node.keyObject': { - if (!isKeyObject(keyData)) - throw new ERR_INVALID_ARG_TYPE('keyData', 'KeyObject', keyData); - if (keyData.type === 'secret') - throw lazyDOMException('Invalid key type', 'InvalidAccessException'); - verifyAcceptableRsaKeyUse(algorithm.name, keyData.type, usagesSet); - keyObject = keyData; - break; - } case 'spki': { verifyAcceptableRsaKeyUse(algorithm.name, 'public', usagesSet); keyObject = createPublicKey({ @@ -326,14 +316,7 @@ async function rsaImportKey( 'NotSupportedError'); } - if (algorithm.name === 'RSA-PSS') { - if ( - keyObject.asymmetricKeyType !== 'rsa' && - keyObject.asymmetricKeyType !== 'rsa-pss' - ) { - throw lazyDOMException('Invalid key type', 'DataError'); - } - } else if (keyObject.asymmetricKeyType !== 'rsa') { + if (keyObject.asymmetricKeyType !== 'rsa') { throw lazyDOMException('Invalid key type', 'DataError'); } diff --git a/lib/internal/crypto/scrypt.js b/lib/internal/crypto/scrypt.js index 49e5b0624e1ae7..781b4823b522c6 100644 --- a/lib/internal/crypto/scrypt.js +++ b/lib/internal/crypto/scrypt.js @@ -2,7 +2,6 @@ const { FunctionPrototypeCall, - Promise, } = primordials; const { Buffer } = require('buffer'); @@ -30,18 +29,13 @@ const { const { getArrayBufferOrView, getDefaultEncoding, - kKeyObject, } = require('internal/crypto/util'); -const { - lazyDOMException, -} = require('internal/util'); - const defaults = { N: 16384, r: 8, p: 1, - maxmem: 32 << 20, // 32 MB, matches SCRYPT_MAX_MEM. + maxmem: 32 << 20, // 32 MiB, matches SCRYPT_MAX_MEM. }; function scrypt(password, salt, keylen, options, callback = defaults) { @@ -141,45 +135,7 @@ function check(password, salt, keylen, options) { return { password, salt, keylen, N, r, p, maxmem }; } -async function scryptDeriveBits(algorithm, baseKey, length) { - validateUint32(length, 'length'); - const { - N = 16384, - r = 8, - p = 1, - maxmem = 32 * 1024 * 1024, - encoding, - } = algorithm; - validateUint32(N, 'algorithm.N'); - validateUint32(r, 'algorithm.r'); - validateUint32(p, 'algorithm.p'); - validateUint32(maxmem, 'algorithm.maxmem'); - const salt = getArrayBufferOrView(algorithm.salt, 'algorithm.salt', encoding); - - const raw = baseKey[kKeyObject].export(); - - let byteLength = 64; // the default - if (length !== undefined) { - if (length === 0) - throw lazyDOMException('length cannot be zero', 'OperationError'); - if (length % 8) { - throw lazyDOMException( - 'length must be a multiple of 8', - 'OperationError'); - } - byteLength = length / 8; - } - - return new Promise((resolve, reject) => { - scrypt(raw, salt, byteLength, { N, r, p, maxmem }, (err, result) => { - if (err) return reject(err); - resolve(result.buffer); - }); - }); -} - module.exports = { scrypt, scryptSync, - scryptDeriveBits, }; diff --git a/lib/internal/crypto/util.js b/lib/internal/crypto/util.js index eafcc3d9669288..40a677606bf3f0 100644 --- a/lib/internal/crypto/util.js +++ b/lib/internal/crypto/util.js @@ -71,7 +71,7 @@ function lazyRequire(name) { return ret; } -var defaultEncoding = 'buffer'; +let defaultEncoding = 'buffer'; function setDefaultEncoding(val) { defaultEncoding = val; @@ -143,10 +143,6 @@ const kNamedCurveAliases = { 'P-256': 'prime256v1', 'P-384': 'secp384r1', 'P-521': 'secp521r1', - 'NODE-ED25519': 'ed25519', - 'NODE-ED448': 'ed448', - 'NODE-X25519': 'x25519', - 'NODE-X448': 'x448', }; const kAesKeyLengths = [128, 192, 256]; @@ -170,13 +166,10 @@ const kAlgorithms = { 'sha-512': 'SHA-512', 'hkdf': 'HKDF', 'pbkdf2': 'PBKDF2', - // Following here are Node.js specific extensions. All - // should be prefixed with 'node-' - 'node-dsa': 'NODE-DSA', - 'node-dh': 'NODE-DH', - 'node-scrypt': 'NODE-SCRYPT', - 'node-ed25519': 'NODE-ED25519', - 'node-ed448': 'NODE-ED448', + 'ed25519': 'Ed25519', + 'ed448': 'Ed448', + 'x25519': 'X25519', + 'x448': 'X448', }; const kAlgorithmsKeys = ObjectKeys(kAlgorithms); @@ -186,8 +179,7 @@ const kExportFormats = [ 'raw', 'pkcs8', 'spki', - 'jwk', - 'node.keyObject']; + 'jwk']; // These are the only hash algorithms we currently support via // the Web Crypto API. @@ -206,30 +198,33 @@ function validateMaxBufferLength(data, name) { } } -function normalizeAlgorithm(algorithm, label = 'algorithm') { +function normalizeAlgorithm(algorithm) { if (algorithm != null) { if (typeof algorithm === 'string') algorithm = { name: algorithm }; if (typeof algorithm === 'object') { const { name } = algorithm; - let hash; if (typeof name !== 'string' || !ArrayPrototypeIncludes( kAlgorithmsKeys, StringPrototypeToLowerCase(name))) { throw lazyDOMException('Unrecognized name.', 'NotSupportedError'); } - if (algorithm.hash !== undefined) { - hash = normalizeAlgorithm(algorithm.hash, 'algorithm.hash'); + let { hash } = algorithm; + if (hash !== undefined) { + hash = normalizeAlgorithm(hash); if (!ArrayPrototypeIncludes(kHashTypes, hash.name)) throw lazyDOMException('Unrecognized name.', 'NotSupportedError'); } - return { + const normalized = { ...algorithm, name: kAlgorithms[StringPrototypeToLowerCase(name)], - hash, }; + if (hash) { + normalized.hash = hash; + } + return normalized; } } throw lazyDOMException('Unrecognized name.', 'NotSupportedError'); @@ -268,7 +263,7 @@ const validateByteSource = hideStackFrames((val, name) => { val = toBuf(val); if (isAnyArrayBuffer(val) || isArrayBufferView(val)) - return; + return val; throw new ERR_INVALID_ARG_TYPE( name, diff --git a/lib/internal/crypto/webcrypto.js b/lib/internal/crypto/webcrypto.js index 63dd03bd00e0f0..b7760efaa234c8 100644 --- a/lib/internal/crypto/webcrypto.js +++ b/lib/internal/crypto/webcrypto.js @@ -6,6 +6,7 @@ const { JSONStringify, ObjectDefineProperties, ReflectApply, + ReflectConstruct, SafeSet, SymbolToStringTag, StringPrototypeRepeat, @@ -31,6 +32,7 @@ const { TextDecoder, TextEncoder } = require('internal/encoding'); const { codes: { + ERR_ILLEGAL_CONSTRUCTOR, ERR_INVALID_ARG_TYPE, ERR_INVALID_THIS, } @@ -41,7 +43,6 @@ const { InternalCryptoKey, createSecretKey, isCryptoKey, - isKeyObject, } = require('internal/crypto/keys'); const { @@ -70,35 +71,59 @@ const { randomUUID: _randomUUID, } = require('internal/crypto/random'); -const randomUUID = () => _randomUUID(); +async function digest(algorithm, data) { + if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto'); + return ReflectApply(asyncDigest, this, arguments); +} + +function randomUUID() { + if (this !== crypto) throw new ERR_INVALID_THIS('Crypto'); + return _randomUUID(); +} async function generateKey( algorithm, extractable, keyUsages) { + if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto'); algorithm = normalizeAlgorithm(algorithm); validateBoolean(extractable, 'extractable'); validateArray(keyUsages, 'keyUsages'); + let result; + let resultType; switch (algorithm.name) { case 'RSASSA-PKCS1-v1_5': // Fall through case 'RSA-PSS': // Fall through case 'RSA-OAEP': - return lazyRequire('internal/crypto/rsa') + resultType = 'CryptoKeyPair'; + result = await lazyRequire('internal/crypto/rsa') .rsaKeyGenerate(algorithm, extractable, keyUsages); - case 'NODE-ED25519': + break; + case 'Ed25519': + // Fall through + case 'Ed448': // Fall through - case 'NODE-ED448': + case 'X25519': // Fall through + case 'X448': + resultType = 'CryptoKeyPair'; + result = await lazyRequire('internal/crypto/cfrg') + .cfrgGenerateKey(algorithm, extractable, keyUsages); + break; case 'ECDSA': // Fall through case 'ECDH': - return lazyRequire('internal/crypto/ec') + resultType = 'CryptoKeyPair'; + result = await lazyRequire('internal/crypto/ec') .ecGenerateKey(algorithm, extractable, keyUsages); + break; case 'HMAC': - return lazyRequire('internal/crypto/mac') + resultType = 'CryptoKey'; + result = await lazyRequire('internal/crypto/mac') .hmacGenerateKey(algorithm, extractable, keyUsages); + break; case 'AES-CTR': // Fall through case 'AES-CBC': @@ -106,23 +131,30 @@ async function generateKey( case 'AES-GCM': // Fall through case 'AES-KW': - return lazyRequire('internal/crypto/aes') + resultType = 'CryptoKey'; + result = await lazyRequire('internal/crypto/aes') .aesGenerateKey(algorithm, extractable, keyUsages); - - // Following are Node.js specific extensions. Names must be prefixed - // with the `NODE-` - case 'NODE-DSA': - return lazyRequire('internal/crypto/dsa') - .dsaGenerateKey(algorithm, extractable, keyUsages); - case 'NODE-DH': - return lazyRequire('internal/crypto/diffiehellman') - .dhGenerateKey(algorithm, extractable, keyUsages); + break; default: throw lazyDOMException('Unrecognized name.'); } + + if ( + (resultType === 'CryptoKey' && + (result.type === 'secret' || result.type === 'private') && + result.usages.length === 0) || + (resultType === 'CryptoKeyPair' && result.privateKey.usages.length === 0) + ) { + throw lazyDOMException( + 'Usages cannot be empty when creating a key.', + 'SyntaxError'); + } + + return result; } async function deriveBits(algorithm, baseKey, length) { + if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto'); algorithm = normalizeAlgorithm(algorithm); if (!isCryptoKey(baseKey)) throw new ERR_INVALID_ARG_TYPE('baseKey', 'CryptoKey', baseKey); @@ -134,6 +166,10 @@ async function deriveBits(algorithm, baseKey, length) { if (baseKey.algorithm.name !== algorithm.name) throw lazyDOMException('Key algorithm mismatch', 'InvalidAccessError'); switch (algorithm.name) { + case 'X25519': + // Fall through + case 'X448': + // Fall through case 'ECDH': return lazyRequire('internal/crypto/diffiehellman') .asyncDeriveBitsECDH(algorithm, baseKey, length); @@ -143,22 +179,52 @@ async function deriveBits(algorithm, baseKey, length) { case 'PBKDF2': return lazyRequire('internal/crypto/pbkdf2') .pbkdf2DeriveBits(algorithm, baseKey, length); - case 'NODE-SCRYPT': - return lazyRequire('internal/crypto/scrypt') - .scryptDeriveBits(algorithm, baseKey, length); - case 'NODE-DH': - return lazyRequire('internal/crypto/diffiehellman') - .asyncDeriveBitsDH(algorithm, baseKey, length); } throw lazyDOMException('Unrecognized name.'); } +function getKeyLength({ name, length, hash }) { + switch (name) { + case 'AES-CTR': + case 'AES-CBC': + case 'AES-GCM': + case 'AES-KW': + if (length !== 128 && length !== 192 && length !== 256) + throw lazyDOMException('Invalid key length', 'OperationError'); + + return length; + case 'HMAC': + if (length === undefined) { + switch (hash?.name) { + case 'SHA-1': + return 160; + case 'SHA-256': + return 256; + case 'SHA-384': + return 384; + case 'SHA-512': + return 512; + } + } + + if (typeof length === 'number' && length !== 0) { + return length; + } + + throw lazyDOMException('Invalid key length', 'OperationError'); + case 'HKDF': + case 'PBKDF2': + return null; + } +} + async function deriveKey( algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages) { + if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto'); algorithm = normalizeAlgorithm(algorithm); derivedKeyAlgorithm = normalizeAlgorithm(derivedKeyAlgorithm); if (!isCryptoKey(baseKey)) @@ -176,9 +242,13 @@ async function deriveKey( validateBoolean(extractable, 'extractable'); validateArray(keyUsages, 'keyUsages'); - const { length } = derivedKeyAlgorithm; + const length = getKeyLength(derivedKeyAlgorithm); let bits; switch (algorithm.name) { + case 'X25519': + // Fall through + case 'X448': + // Fall through case 'ECDH': bits = await lazyRequire('internal/crypto/diffiehellman') .asyncDeriveBitsECDH(algorithm, baseKey, length); @@ -191,19 +261,15 @@ async function deriveKey( bits = await lazyRequire('internal/crypto/pbkdf2') .pbkdf2DeriveBits(algorithm, baseKey, length); break; - case 'NODE-SCRYPT': - bits = await lazyRequire('internal/crypto/scrypt') - .scryptDeriveBits(algorithm, baseKey, length); - break; - case 'NODE-DH': - bits = await lazyRequire('internal/crypto/diffiehellman') - .asyncDeriveBitsDH(algorithm, baseKey, length); - break; default: throw lazyDOMException('Unrecognized name.'); } - return importKey('raw', bits, derivedKeyAlgorithm, extractable, keyUsages); + return ReflectApply( + importKey, + this, + ['raw', bits, derivedKeyAlgorithm, extractable, keyUsages], + ); } async function exportKeySpki(key) { @@ -218,10 +284,6 @@ async function exportKeySpki(key) { .rsaExportKey(key, kWebCryptoKeyFormatSPKI); } break; - case 'NODE-ED25519': - // Fall through - case 'NODE-ED448': - // Fall through case 'ECDSA': // Fall through case 'ECDH': @@ -230,16 +292,16 @@ async function exportKeySpki(key) { .ecExportKey(key, kWebCryptoKeyFormatSPKI); } break; - case 'NODE-DSA': - if (key.type === 'public') { - return lazyRequire('internal/crypto/dsa') - .dsaExportKey(key, kWebCryptoKeyFormatSPKI); - } - break; - case 'NODE-DH': + case 'Ed25519': + // Fall through + case 'Ed448': + // Fall through + case 'X25519': + // Fall through + case 'X448': if (key.type === 'public') { - return lazyRequire('internal/crypto/diffiehellman') - .dhExportKey(key, kWebCryptoKeyFormatSPKI); + return lazyRequire('internal/crypto/cfrg') + .cfrgExportKey(key, kWebCryptoKeyFormatSPKI); } break; } @@ -261,10 +323,6 @@ async function exportKeyPkcs8(key) { .rsaExportKey(key, kWebCryptoKeyFormatPKCS8); } break; - case 'NODE-ED25519': - // Fall through - case 'NODE-ED448': - // Fall through case 'ECDSA': // Fall through case 'ECDH': @@ -273,16 +331,16 @@ async function exportKeyPkcs8(key) { .ecExportKey(key, kWebCryptoKeyFormatPKCS8); } break; - case 'NODE-DSA': - if (key.type === 'private') { - return lazyRequire('internal/crypto/dsa') - .dsaExportKey(key, kWebCryptoKeyFormatPKCS8); - } - break; - case 'NODE-DH': + case 'Ed25519': + // Fall through + case 'Ed448': + // Fall through + case 'X25519': + // Fall through + case 'X448': if (key.type === 'private') { - return lazyRequire('internal/crypto/diffiehellman') - .dhExportKey(key, kWebCryptoKeyFormatPKCS8); + return lazyRequire('internal/crypto/cfrg') + .cfrgExportKey(key, kWebCryptoKeyFormatPKCS8); } break; } @@ -294,20 +352,24 @@ async function exportKeyPkcs8(key) { async function exportKeyRaw(key) { switch (key.algorithm.name) { - case 'NODE-ED25519': + case 'ECDSA': // Fall through - case 'NODE-ED448': + case 'ECDH': if (key.type === 'public') { return lazyRequire('internal/crypto/ec') .ecExportKey(key, kWebCryptoKeyFormatRaw); } break; - case 'ECDSA': + case 'Ed25519': // Fall through - case 'ECDH': + case 'Ed448': + // Fall through + case 'X25519': + // Fall through + case 'X448': if (key.type === 'public') { - return lazyRequire('internal/crypto/ec') - .ecExportKey(key, kWebCryptoKeyFormatRaw); + return lazyRequire('internal/crypto/cfrg') + .cfrgExportKey(key, kWebCryptoKeyFormatRaw); } break; case 'AES-CTR': @@ -353,6 +415,17 @@ async function exportKeyJWK(key) { case 'ECDH': jwk.crv ||= key.algorithm.namedCurve; return jwk; + case 'X25519': + // Fall through + case 'X448': + jwk.crv ||= key.algorithm.name; + return jwk; + case 'Ed25519': + // Fall through + case 'Ed448': + jwk.crv ||= key.algorithm.name; + jwk.alg = 'EdDSA'; + return jwk; case 'AES-CTR': // Fall through case 'AES-CBC': @@ -368,15 +441,6 @@ async function exportKeyJWK(key) { key.algorithm.hash.name, normalizeHashName.kContextJwkHmac); return jwk; - case 'NODE-DSA': - jwk.alg = normalizeHashName( - key.algorithm.hash.name, - normalizeHashName.kContextJwkDsa); - return jwk; - case 'NODE-ED25519': - // Fall through - case 'NODE-ED448': - return jwk; default: // Fall through } @@ -385,6 +449,7 @@ async function exportKeyJWK(key) { } async function exportKey(format, key) { + if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto'); validateString(format, 'format'); validateOneOf(format, 'format', kExportFormats); if (!isCryptoKey(key)) @@ -394,7 +459,6 @@ async function exportKey(format, key) { throw lazyDOMException('key is not extractable', 'InvalidAccessException'); switch (format) { - case 'node.keyObject': return key[kKeyObject]; case 'spki': return exportKeySpki(key); case 'pkcs8': return exportKeyPkcs8(key); case 'jwk': return exportKeyJWK(key); @@ -421,15 +485,6 @@ async function importGenericSecretKey( } switch (format) { - case 'node.keyObject': { - if (!isKeyObject(keyData)) - throw new ERR_INVALID_ARG_TYPE('keyData', 'KeyObject', keyData); - - if (keyData.type === 'secret') - return new InternalCryptoKey(keyData, { name }, keyUsages, extractable); - - break; - } case 'raw': { if (hasAnyNotIn(usagesSet, ['deriveKey', 'deriveBits'])) { throw lazyDOMException( @@ -466,9 +521,10 @@ async function importKey( algorithm, extractable, keyUsages) { + if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto'); validateString(format, 'format'); validateOneOf(format, 'format', kExportFormats); - if (format !== 'node.keyObject' && format !== 'jwk') + if (format !== 'jwk') keyData = getArrayBufferOrView(keyData, 'keyData'); algorithm = normalizeAlgorithm(algorithm); validateBoolean(extractable, 'extractable'); @@ -481,15 +537,20 @@ async function importKey( case 'RSA-OAEP': return lazyRequire('internal/crypto/rsa') .rsaImportKey(format, keyData, algorithm, extractable, keyUsages); - case 'NODE-ED25519': - // Fall through - case 'NODE-ED448': - // Fall through case 'ECDSA': // Fall through case 'ECDH': return lazyRequire('internal/crypto/ec') .ecImportKey(format, keyData, algorithm, extractable, keyUsages); + case 'Ed25519': + // Fall through + case 'Ed448': + // Fall through + case 'X25519': + // Fall through + case 'X448': + return lazyRequire('internal/crypto/cfrg') + .cfrgImportKey(format, keyData, algorithm, extractable, keyUsages); case 'HMAC': return lazyRequire('internal/crypto/mac') .hmacImportKey(format, keyData, algorithm, extractable, keyUsages); @@ -504,8 +565,6 @@ async function importKey( .aesImportKey(algorithm, format, keyData, extractable, keyUsages); case 'HKDF': // Fall through - case 'NODE-SCRYPT': - // Fall through case 'PBKDF2': return importGenericSecretKey( algorithm, @@ -513,12 +572,6 @@ async function importKey( keyData, extractable, keyUsages); - case 'NODE-DSA': - return lazyRequire('internal/crypto/dsa') - .dsaImportKey(format, keyData, algorithm, extractable, keyUsages); - case 'NODE-DH': - return lazyRequire('internal/crypto/diffiehellman') - .dhImportKey(format, keyData, algorithm, extractable, keyUsages); } throw lazyDOMException('Unrecognized name.', 'NotSupportedError'); @@ -527,8 +580,9 @@ async function importKey( // subtle.wrapKey() is essentially a subtle.exportKey() followed // by a subtle.encrypt(). async function wrapKey(format, key, wrappingKey, algorithm) { + if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto'); algorithm = normalizeAlgorithm(algorithm); - let keyData = await exportKey(format, key); + let keyData = await ReflectApply(exportKey, this, [format, key]); if (format === 'jwk') { if (keyData == null || typeof keyData !== 'object') @@ -556,11 +610,12 @@ async function unwrapKey( unwrappedKeyAlgo, extractable, keyUsages) { + if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto'); wrappedKey = getArrayBufferOrView(wrappedKey, 'wrappedKey'); - + unwrapAlgo = normalizeAlgorithm(unwrapAlgo); let keyData = await cipherOrWrap( kWebCryptoCipherDecrypt, - normalizeAlgorithm(unwrapAlgo), + unwrapAlgo, unwrappingKey, wrappedKey, 'unwrapKey'); @@ -577,7 +632,11 @@ async function unwrapKey( } } - return importKey(format, keyData, unwrappedKeyAlgo, extractable, keyUsages); + return ReflectApply( + importKey, + this, + [format, keyData, unwrappedKeyAlgo, extractable, keyUsages], + ); } function signVerify(algorithm, key, data, signature) { @@ -604,30 +663,29 @@ function signVerify(algorithm, key, data, signature) { case 'RSASSA-PKCS1-v1_5': return lazyRequire('internal/crypto/rsa') .rsaSignVerify(key, data, algorithm, signature); - case 'NODE-ED25519': - // Fall through - case 'NODE-ED448': - // Fall through case 'ECDSA': return lazyRequire('internal/crypto/ec') .ecdsaSignVerify(key, data, algorithm, signature); + case 'Ed25519': + // Fall through + case 'Ed448': + // Fall through + return lazyRequire('internal/crypto/cfrg') + .eddsaSignVerify(key, data, algorithm, signature); case 'HMAC': return lazyRequire('internal/crypto/mac') .hmacSignVerify(key, data, algorithm, signature); - // The following are Node.js specific extensions. They must begin with - // the `NODE-` prefix - case 'NODE-DSA': - return lazyRequire('internal/crypto/dsa') - .dsaSignVerify(key, data, algorithm, signature); } throw lazyDOMException('Unrecognized named.', 'NotSupportedError'); } async function sign(algorithm, key, data) { + if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto'); return signVerify(algorithm, key, data); } async function verify(algorithm, key, signature, data) { + if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto'); return signVerify(algorithm, key, data, signature); } @@ -677,36 +735,46 @@ async function cipherOrWrap(mode, algorithm, key, data, op) { } async function encrypt(algorithm, key, data) { + if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto'); return cipherOrWrap(kWebCryptoCipherEncrypt, algorithm, key, data, 'encrypt'); } async function decrypt(algorithm, key, data) { + if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto'); return cipherOrWrap(kWebCryptoCipherDecrypt, algorithm, key, data, 'decrypt'); } // The SubtleCrypto and Crypto classes are defined as part of the // Web Crypto API standard: https://www.w3.org/TR/WebCryptoAPI/ -class SubtleCrypto {} -const subtle = new SubtleCrypto(); +class SubtleCrypto { + constructor() { + throw new ERR_ILLEGAL_CONSTRUCTOR(); + } +} +const subtle = ReflectConstruct(function() {}, [], SubtleCrypto); class Crypto { + constructor() { + throw new ERR_ILLEGAL_CONSTRUCTOR(); + } + get subtle() { + if (this !== crypto) throw new ERR_INVALID_THIS('Crypto'); return subtle; } } -const crypto = new Crypto(); +const crypto = ReflectConstruct(function() {}, [], Crypto); function getRandomValues(array) { - if (!(this instanceof Crypto)) { - throw new ERR_INVALID_THIS('Crypto'); - } + if (this !== crypto) throw new ERR_INVALID_THIS('Crypto'); return ReflectApply(_getRandomValues, this, arguments); } ObjectDefineProperties( Crypto.prototype, { [SymbolToStringTag]: { + __proto__: null, enumerable: false, configurable: true, writable: false, @@ -714,18 +782,21 @@ ObjectDefineProperties( }, subtle: kEnumerableProperty, getRandomValues: { + __proto__: null, enumerable: true, configurable: true, writable: true, value: getRandomValues, }, randomUUID: { + __proto__: null, enumerable: true, configurable: true, writable: true, value: randomUUID, }, CryptoKey: { + __proto__: null, enumerable: true, configurable: true, writable: true, @@ -736,78 +807,91 @@ ObjectDefineProperties( ObjectDefineProperties( SubtleCrypto.prototype, { [SymbolToStringTag]: { + __proto__: null, enumerable: false, configurable: true, writable: false, value: 'SubtleCrypto', }, encrypt: { + __proto__: null, enumerable: true, configurable: true, writable: true, value: encrypt, }, decrypt: { + __proto__: null, enumerable: true, configurable: true, writable: true, value: decrypt, }, sign: { + __proto__: null, enumerable: true, configurable: true, writable: true, value: sign, }, verify: { + __proto__: null, enumerable: true, configurable: true, writable: true, value: verify, }, digest: { + __proto__: null, enumerable: true, configurable: true, writable: true, - value: asyncDigest, + value: digest, }, generateKey: { + __proto__: null, enumerable: true, configurable: true, writable: true, value: generateKey, }, deriveKey: { + __proto__: null, enumerable: true, configurable: true, writable: true, value: deriveKey, }, deriveBits: { + __proto__: null, enumerable: true, configurable: true, writable: true, value: deriveBits, }, importKey: { + __proto__: null, enumerable: true, configurable: true, writable: true, value: importKey, }, exportKey: { + __proto__: null, enumerable: true, configurable: true, writable: true, value: exportKey, }, wrapKey: { + __proto__: null, enumerable: true, configurable: true, writable: true, value: wrapKey, }, unwrapKey: { + __proto__: null, enumerable: true, configurable: true, writable: true, diff --git a/lib/internal/crypto/x509.js b/lib/internal/crypto/x509.js index cd20f6868da72c..c8356dea2b25ce 100644 --- a/lib/internal/crypto/x509.js +++ b/lib/internal/crypto/x509.js @@ -23,6 +23,7 @@ const { const { customInspectSymbol: kInspect, + kEmptyObject, } = require('internal/util'); const { @@ -62,7 +63,7 @@ function isX509Certificate(value) { return value[kInternalState] !== undefined; } -function getFlags(options = {}) { +function getFlags(options = kEmptyObject) { validateObject(options, 'options'); const { // TODO(tniessen): change the default to 'default' diff --git a/lib/internal/debugger/inspect.js b/lib/internal/debugger/inspect.js index 7f1017886f6d6e..e5211c285bd5eb 100644 --- a/lib/internal/debugger/inspect.js +++ b/lib/internal/debugger/inspect.js @@ -15,9 +15,8 @@ const { PromisePrototypeThen, PromiseResolve, Proxy, - RegExpPrototypeSymbolMatch, + RegExpPrototypeExec, RegExpPrototypeSymbolSplit, - RegExpPrototypeTest, StringPrototypeEndsWith, StringPrototypeSplit, } = primordials; @@ -91,7 +90,7 @@ async function runScript(script, scriptArgs, inspectHost, inspectPort, return new Promise((resolve) => { function waitForListenHint(text) { output += text; - const debug = RegExpPrototypeSymbolMatch(debugRegex, output); + const debug = RegExpPrototypeExec(debugRegex, output); if (debug) { const host = debug[1]; const port = Number(debug[2]); @@ -117,6 +116,7 @@ function createAgentProxy(domain, client) { }; return new Proxy(agent, { + __proto__: null, get(target, name) { if (name in target) return target[name]; return function callVirtualMethod(params) { @@ -281,8 +281,8 @@ function parseArgv(args) { let script = target; let scriptArgs = args; - const hostMatch = RegExpPrototypeSymbolMatch(/^([^:]+):(\d+)$/, target); - const portMatch = RegExpPrototypeSymbolMatch(/^--port=(\d+)$/, target); + const hostMatch = RegExpPrototypeExec(/^([^:]+):(\d+)$/, target); + const portMatch = RegExpPrototypeExec(/^--port=(\d+)$/, target); if (hostMatch) { // Connecting to remote debugger @@ -295,7 +295,7 @@ function parseArgv(args) { port = Number(portMatch[1]); script = args[0]; scriptArgs = ArrayPrototypeSlice(args, 1); - } else if (args.length === 1 && RegExpPrototypeTest(/^\d+$/, args[0]) && + } else if (args.length === 1 && RegExpPrototypeExec(/^\d+$/, args[0]) !== null && target === '-p') { // Start debugger against a given pid const pid = Number(args[0]); diff --git a/lib/internal/debugger/inspect_repl.js b/lib/internal/debugger/inspect_repl.js index 4b11023554e268..bfc11990e0ddf0 100644 --- a/lib/internal/debugger/inspect_repl.js +++ b/lib/internal/debugger/inspect_repl.js @@ -23,16 +23,15 @@ const { ObjectKeys, ObjectValues, Promise, - PromiseAll, PromisePrototypeCatch, PromisePrototypeThen, PromiseResolve, ReflectGetOwnPropertyDescriptor, ReflectOwnKeys, - RegExpPrototypeSymbolMatch, + RegExpPrototypeExec, RegExpPrototypeSymbolReplace, - SafeArrayIterator, SafeMap, + SafePromiseAll, String, StringFromCharCode, StringPrototypeEndsWith, @@ -114,7 +113,7 @@ takeHeapSnapshot(filepath = 'node.heapsnapshot') const FUNCTION_NAME_PATTERN = /^(?:function\*? )?([^(\s]+)\(/; function extractFunctionName(description) { const fnNameMatch = - RegExpPrototypeSymbolMatch(FUNCTION_NAME_PATTERN, description); + RegExpPrototypeExec(FUNCTION_NAME_PATTERN, description); return fnNameMatch ? `: ${fnNameMatch[1]}` : ''; } @@ -171,7 +170,7 @@ function markSourceColumn(sourceText, position, useColors) { function extractErrorMessage(stack) { if (!stack) return ''; - const m = RegExpPrototypeSymbolMatch(/^\w+: ([^\n]+)/, stack); + const m = RegExpPrototypeExec(/^\w+: ([^\n]+)/, stack); return m?.[1] ?? stack; } @@ -179,96 +178,142 @@ function convertResultToError(result) { const { className, description } = result; const err = new ERR_DEBUGGER_ERROR(extractErrorMessage(description)); err.stack = description; - ObjectDefineProperty(err, 'name', { value: className }); + ObjectDefineProperty(err, 'name', { __proto__: null, value: className }); return err; } -class RemoteObject { +class PropertyPreview { constructor(attributes) { ObjectAssign(this, attributes); - if (this.type === 'number') { - this.value = - this.unserializableValue ? +this.unserializableValue : +this.value; + } + + [customInspectSymbol](depth, opts) { + switch (this.type) { + case 'string': + case 'undefined': + return utilInspect(this.value, opts); + case 'number': + case 'boolean': + return opts.stylize(this.value, this.type); + case 'object': + case 'symbol': + if (this.subtype === 'date') { + return utilInspect(new Date(this.value), opts); + } + if (this.subtype === 'array') { + return opts.stylize(this.value, 'special'); + } + return opts.stylize(this.value, this.subtype || 'special'); + default: + return this.value; } } +} + +class ObjectPreview { + constructor(attributes) { + ObjectAssign(this, attributes); + } [customInspectSymbol](depth, opts) { - function formatProperty(prop) { - switch (prop.type) { - case 'string': - case 'undefined': - return utilInspect(prop.value, opts); - - case 'number': - case 'boolean': - return opts.stylize(prop.value, prop.type); - - case 'object': - case 'symbol': - if (prop.subtype === 'date') { - return utilInspect(new Date(prop.value), opts); + switch (this.type) { + case 'object': { + switch (this.subtype) { + case 'date': + return utilInspect(new Date(this.description), opts); + case 'null': + return utilInspect(null, opts); + case 'regexp': + return opts.stylize(this.description, 'regexp'); + case 'set': { + if (!this.entries) { + return `${this.description} ${this.overflow ? '{ ... }' : '{}'}`; + } + const values = ArrayPrototypeMap(this.entries, (entry) => + utilInspect(new ObjectPreview(entry.value), opts)); + return `${this.description} { ${ArrayPrototypeJoin(values, ', ')} }`; } - if (prop.subtype === 'array') { - return opts.stylize(prop.value, 'special'); + case 'map': { + if (!this.entries) { + return `${this.description} ${this.overflow ? '{ ... }' : '{}'}`; + } + const mappings = ArrayPrototypeMap(this.entries, (entry) => { + const key = utilInspect(new ObjectPreview(entry.key), opts); + const value = utilInspect(new ObjectPreview(entry.value), opts); + return `${key} => ${value}`; + }); + return `${this.description} { ${ArrayPrototypeJoin(mappings, ', ')} }`; } - return opts.stylize(prop.value, prop.subtype || 'special'); - - default: - return prop.value; + case 'array': + case undefined: { + if (this.properties.length === 0) { + return this.subtype === 'array' ? '[]' : '{}'; + } + const props = ArrayPrototypeMap(this.properties, (prop, idx) => { + const value = utilInspect(new PropertyPreview(prop)); + if (prop.name === `${idx}`) return value; + return `${prop.name}: ${value}`; + }); + if (this.overflow) { + ArrayPrototypePush(props, '...'); + } + const singleLine = ArrayPrototypeJoin(props, ', '); + const propString = singleLine.length > 60 ? ArrayPrototypeJoin(props, ',\n ') : singleLine; + return this.subtype === 'array' ? `[ ${propString} ]` : `{ ${propString} }`; + } + default: + return this.description; + } } + default: + return this.description; } + } +} + +class RemoteObject { + constructor(attributes) { + ObjectAssign(this, attributes); + if (this.type === 'number') { + this.value = + this.unserializableValue ? +this.unserializableValue : +this.value; + } + } + + [customInspectSymbol](depth, opts) { switch (this.type) { case 'boolean': case 'number': case 'string': case 'undefined': return utilInspect(this.value, opts); - case 'symbol': return opts.stylize(this.description, 'special'); - case 'function': { const fnName = extractFunctionName(this.description); const formatted = `[${this.className}${fnName}]`; return opts.stylize(formatted, 'special'); } - case 'object': switch (this.subtype) { case 'date': return utilInspect(new Date(this.description), opts); - case 'null': return utilInspect(null, opts); - case 'regexp': return opts.stylize(this.description, 'regexp'); - + case 'map': + case 'set': { + const preview = utilInspect(new ObjectPreview(this.preview), opts); + return `${this.description} ${preview}`; + } default: break; } if (this.preview) { - const props = ArrayPrototypeMap( - this.preview.properties, - (prop, idx) => { - const value = formatProperty(prop); - if (prop.name === `${idx}`) return value; - return `${prop.name}: ${value}`; - }); - if (this.preview.overflow) { - ArrayPrototypePush(props, '...'); - } - const singleLine = ArrayPrototypeJoin(props, ', '); - const propString = - singleLine.length > 60 ? - ArrayPrototypeJoin(props, ',\n ') : - singleLine; - - return this.subtype === 'array' ? - `[ ${propString} ]` : `{ ${propString} }`; + return utilInspect(new ObjectPreview(this.preview), opts); } return this.description; - default: return this.description; } @@ -473,22 +518,19 @@ function createRepl(inspector) { } loadScopes() { - return PromiseAll( - new SafeArrayIterator(ArrayPrototypeMap( - ArrayPrototypeFilter( - this.scopeChain, - (scope) => scope.type !== 'global' - ), - async (scope) => { - const { objectId } = scope.object; - const { result } = await Runtime.getProperties({ - objectId, - generatePreview: true, - }); - return new ScopeSnapshot(scope, result); - }) - ) - ); + return SafePromiseAll( + ArrayPrototypeFilter( + this.scopeChain, + (scope) => scope.type !== 'global' + ), + async (scope) => { + const { objectId } = scope.object; + const { result } = await Runtime.getProperties({ + objectId, + generatePreview: true, + }); + return new ScopeSnapshot(scope, result); + }); } list(delta = 5) { @@ -532,7 +574,7 @@ function createRepl(inspector) { function prepareControlCode(input) { if (input === '\n') return lastCommand; // Add parentheses: exec process.title => exec("process.title"); - const match = RegExpPrototypeSymbolMatch(/^\s*(?:exec|p)\s+([^\n]*)/, input); + const match = RegExpPrototypeExec(/^\s*(?:exec|p)\s+([^\n]*)/, input); if (match) { lastCommand = `exec(${JSONStringify(match[1])})`; } else { @@ -615,8 +657,7 @@ function createRepl(inspector) { (error) => `<${error.message}>`); const lastIndex = watchedExpressions.length - 1; - const values = await PromiseAll(new SafeArrayIterator( - ArrayPrototypeMap(watchedExpressions, inspectValue))); + const values = await SafePromiseAll(watchedExpressions, inspectValue); const lines = ArrayPrototypeMap(watchedExpressions, (expr, idx) => { const prefix = `${leftPad(idx, ' ', lastIndex)}: ${expr} =`; const value = inspect(values[idx]); @@ -635,6 +676,9 @@ function createRepl(inspector) { // List source code function list(delta = 5) { + if (!selectedFrame) { + throw new ERR_DEBUGGER_ERROR('Requires execution to be paused'); + } return selectedFrame.list(delta).then(null, (error) => { print("You can't list source code right now"); throw error; @@ -817,7 +861,7 @@ function createRepl(inspector) { location.lineNumber + 1)); if (!newBreakpoints.length) return PromiseResolve(); return PromisePrototypeThen( - PromiseAll(new SafeArrayIterator(newBreakpoints)), + SafePromiseAll(newBreakpoints), (results) => { print(`${results.length} breakpoints restored.`); }); @@ -853,8 +897,7 @@ function createRepl(inspector) { inspector.suspendReplWhile(() => PromisePrototypeThen( - PromiseAll(new SafeArrayIterator( - [formatWatchers(true), selectedFrame.list(2)])), + SafePromiseAll([formatWatchers(true), selectedFrame.list(2)]), ({ 0: watcherList, 1: context }) => { const breakContext = watcherList ? `${watcherList}\n${inspect(context)}` : @@ -890,6 +933,7 @@ function createRepl(inspector) { function initializeContext(context) { ArrayPrototypeForEach(inspector.domainNames, (domain) => { ObjectDefineProperty(context, domain, { + __proto__: null, value: inspector[domain], enumerable: true, configurable: true, diff --git a/lib/internal/dns/promises.js b/lib/internal/dns/promises.js index c6f8acba74529f..062753c0430ff2 100644 --- a/lib/internal/dns/promises.js +++ b/lib/internal/dns/promises.js @@ -5,6 +5,7 @@ const { ObjectDefineProperty, Promise, ReflectApply, + Symbol, } = primordials; const { @@ -15,7 +16,36 @@ const { validateTries, emitInvalidHostnameWarning, getDefaultVerbatim, + errorCodes: dnsErrorCodes, + setDefaultResultOrder, + setDefaultResolver, } = require('internal/dns/utils'); +const { + NODATA, + FORMERR, + SERVFAIL, + NOTFOUND, + NOTIMP, + REFUSED, + BADQUERY, + BADNAME, + BADFAMILY, + BADRESP, + CONNREFUSED, + TIMEOUT, + EOF, + FILE, + NOMEM, + DESTRUCTION, + BADSTR, + BADFLAGS, + NONAME, + BADHINTS, + NOTINITIALIZED, + LOADIPHLPAPI, + ADDRGETNETWORKPARAMS, + CANCELLED, +} = dnsErrorCodes; const { codes, dnsException } = require('internal/errors'); const { toASCII } = require('internal/idna'); const { isIP } = require('internal/net'); @@ -37,6 +67,16 @@ const { validateOneOf, } = require('internal/validators'); +const kPerfHooksDnsLookupContext = Symbol('kPerfHooksDnsLookupContext'); +const kPerfHooksDnsLookupServiceContext = Symbol('kPerfHooksDnsLookupServiceContext'); +const kPerfHooksDnsLookupResolveContext = Symbol('kPerfHooksDnsLookupResolveContext'); + +const { + hasObserver, + startPerf, + stopPerf, +} = require('internal/perf/observe'); + function onlookup(err, addresses) { if (err) { this.reject(dnsException(err, 'getaddrinfo', this.hostname)); @@ -45,6 +85,9 @@ function onlookup(err, addresses) { const family = this.family || isIP(addresses[0]); this.resolve({ address: addresses[0], family }); + if (this[kPerfHooksDnsLookupContext] && hasObserver('dns')) { + stopPerf(this, kPerfHooksDnsLookupContext); + } } function onlookupall(err, addresses) { @@ -55,7 +98,7 @@ function onlookupall(err, addresses) { const family = this.family; - for (var i = 0; i < addresses.length; i++) { + for (let i = 0; i < addresses.length; i++) { const address = addresses[i]; addresses[i] = { @@ -65,6 +108,9 @@ function onlookupall(err, addresses) { } this.resolve(addresses); + if (this[kPerfHooksDnsLookupContext] && hasObserver('dns')) { + stopPerf(this, kPerfHooksDnsLookupContext); + } } function createLookupPromise(family, hostname, all, hints, verbatim) { @@ -95,15 +141,23 @@ function createLookupPromise(family, hostname, all, hints, verbatim) { if (err) { reject(dnsException(err, 'getaddrinfo', hostname)); + } else if (hasObserver('dns')) { + const detail = { + hostname, + family, + hints, + verbatim, + }; + startPerf(req, kPerfHooksDnsLookupContext, { type: 'dns', name: 'lookup', detail }); } }); } function lookup(hostname, options) { - var hints = 0; - var family = -1; - var all = false; - var verbatim = getDefaultVerbatim(); + let hints = 0; + let family = -1; + let all = false; + let verbatim = getDefaultVerbatim(); // Parse arguments if (hostname) { @@ -136,6 +190,9 @@ function onlookupservice(err, hostname, service) { } this.resolve({ hostname, service }); + if (this[kPerfHooksDnsLookupServiceContext] && hasObserver('dns')) { + stopPerf(this, kPerfHooksDnsLookupServiceContext); + } } function createLookupServicePromise(hostname, port) { @@ -152,6 +209,16 @@ function createLookupServicePromise(hostname, port) { if (err) reject(dnsException(err, 'getnameinfo', hostname)); + else if (hasObserver('dns')) { + startPerf(req, kPerfHooksDnsLookupServiceContext, { + type: 'dns', + name: 'lookupService', + detail: { + host: hostname, + port + } + }); + } }); } @@ -179,6 +246,9 @@ function onresolve(err, result, ttls) { result, (address, index) => ({ address, ttl: ttls[index] })); this.resolve(result); + if (this[kPerfHooksDnsLookupResolveContext] && hasObserver('dns')) { + stopPerf(this, kPerfHooksDnsLookupResolveContext); + } } function createResolverPromise(resolver, bindingName, hostname, ttl) { @@ -196,6 +266,16 @@ function createResolverPromise(resolver, bindingName, hostname, ttl) { if (err) reject(dnsException(err, bindingName, hostname)); + else if (hasObserver('dns')) { + startPerf(req, kPerfHooksDnsLookupResolveContext, { + type: 'dns', + name: bindingName, + detail: { + host: hostname, + ttl + } + }); + } }); } @@ -207,7 +287,7 @@ function resolver(bindingName) { return createResolverPromise(this, bindingName, name, ttl); } - ObjectDefineProperty(query, 'name', { value: bindingName }); + ObjectDefineProperty(query, 'name', { __proto__: null, value: bindingName }); return query; } @@ -241,7 +321,7 @@ Resolver.prototype.resolveNaptr = resolveMap.NAPTR = resolver('queryNaptr'); Resolver.prototype.resolveSoa = resolveMap.SOA = resolver('querySoa'); Resolver.prototype.reverse = resolver('getHostByAddr'); Resolver.prototype.resolve = function resolve(hostname, rrtype) { - var resolver; + let resolver; if (rrtype !== undefined) { validateString(rrtype, 'rrtype'); @@ -257,6 +337,45 @@ Resolver.prototype.resolve = function resolve(hostname, rrtype) { return ReflectApply(resolver, this, [hostname]); }; +function defaultResolverSetServers(servers) { + const resolver = new Resolver(); -module.exports = { lookup, lookupService, Resolver }; + resolver.setServers(servers); + setDefaultResolver(resolver); + bindDefaultResolver(module.exports, Resolver.prototype); +} + +module.exports = { + lookup, + lookupService, + Resolver, + setDefaultResultOrder, + setServers: defaultResolverSetServers, + + // ERROR CODES + NODATA, + FORMERR, + SERVFAIL, + NOTFOUND, + NOTIMP, + REFUSED, + BADQUERY, + BADNAME, + BADFAMILY, + BADRESP, + CONNREFUSED, + TIMEOUT, + EOF, + FILE, + NOMEM, + DESTRUCTION, + BADSTR, + BADFLAGS, + NONAME, + BADHINTS, + NOTINITIALIZED, + LOADIPHLPAPI, + ADDRGETNETWORKPARAMS, + CANCELLED, +}; bindDefaultResolver(module.exports, Resolver.prototype); diff --git a/lib/internal/dns/utils.js b/lib/internal/dns/utils.js index fa7e19c784789c..06de00174b709e 100644 --- a/lib/internal/dns/utils.js +++ b/lib/internal/dns/utils.js @@ -7,8 +7,8 @@ const { ArrayPrototypePush, FunctionPrototypeBind, NumberParseInt, - StringPrototypeMatch, - StringPrototypeReplace, + RegExpPrototypeExec, + RegExpPrototypeSymbolReplace, } = primordials; const errors = require('internal/errors'); @@ -61,7 +61,7 @@ class Resolver { } getServers() { - return ArrayPrototypeMap(this._handle.getServers(), (val) => { + return ArrayPrototypeMap(this._handle.getServers() || [], (val) => { if (!val[1] || val[1] === IANA_DNS_PORT) return val[0]; @@ -76,7 +76,7 @@ class Resolver { // Cache the original servers because in the event of an error while // setting the servers, c-ares won't have any servers available for // resolution. - const orig = this._handle.getServers(); + const orig = this._handle.getServers() || []; const newSet = []; ArrayPrototypeForEach(servers, (serv, index) => { @@ -86,7 +86,7 @@ class Resolver { if (ipVersion !== 0) return ArrayPrototypePush(newSet, [ipVersion, serv, IANA_DNS_PORT]); - const match = StringPrototypeMatch(serv, IPv6RE); + const match = RegExpPrototypeExec(IPv6RE, serv); // Check for an IPv6 in brackets. if (match) { @@ -94,13 +94,13 @@ class Resolver { if (ipVersion !== 0) { const port = NumberParseInt( - StringPrototypeReplace(serv, addrSplitRE, '$2')) || IANA_DNS_PORT; + RegExpPrototypeSymbolReplace(addrSplitRE, serv, '$2')) || IANA_DNS_PORT; return ArrayPrototypePush(newSet, [ipVersion, match[1], port]); } } // addr::port - const addrSplitMatch = StringPrototypeMatch(serv, addrSplitRE); + const addrSplitMatch = RegExpPrototypeExec(addrSplitRE, serv); if (addrSplitMatch) { const hostIP = addrSplitMatch[1]; @@ -207,6 +207,34 @@ function setDefaultResultOrder(value) { dnsOrder = value; } +// ERROR CODES +const errorCodes = { + NODATA: 'ENODATA', + FORMERR: 'EFORMERR', + SERVFAIL: 'ESERVFAIL', + NOTFOUND: 'ENOTFOUND', + NOTIMP: 'ENOTIMP', + REFUSED: 'EREFUSED', + BADQUERY: 'EBADQUERY', + BADNAME: 'EBADNAME', + BADFAMILY: 'EBADFAMILY', + BADRESP: 'EBADRESP', + CONNREFUSED: 'ECONNREFUSED', + TIMEOUT: 'ETIMEOUT', + EOF: 'EOF', + FILE: 'EFILE', + NOMEM: 'ENOMEM', + DESTRUCTION: 'EDESTRUCTION', + BADSTR: 'EBADSTR', + BADFLAGS: 'EBADFLAGS', + NONAME: 'ENONAME', + BADHINTS: 'EBADHINTS', + NOTINITIALIZED: 'ENOTINITIALIZED', + LOADIPHLPAPI: 'ELOADIPHLPAPI', + ADDRGETNETWORKPARAMS: 'EADDRGETNETWORKPARAMS', + CANCELLED: 'ECANCELLED', +}; + module.exports = { bindDefaultResolver, getDefaultResolver, @@ -218,4 +246,5 @@ module.exports = { emitInvalidHostnameWarning, getDefaultVerbatim, setDefaultResultOrder, + errorCodes, }; diff --git a/lib/internal/encoding.js b/lib/internal/encoding.js index def0e9223b84c7..f9fa43228d5f57 100644 --- a/lib/internal/encoding.js +++ b/lib/internal/encoding.js @@ -7,6 +7,8 @@ const { ObjectCreate, ObjectDefineProperties, ObjectGetOwnPropertyDescriptors, + ObjectSetPrototypeOf, + ObjectValues, SafeMap, StringPrototypeSlice, Symbol, @@ -31,6 +33,7 @@ const kEncoder = Symbol('encoder'); const { getConstructorOf, customInspectSymbol: inspect, + kEmptyObject, kEnumerableProperty, } = require('internal/util'); @@ -362,7 +365,7 @@ ObjectDefineProperties( 'encode': kEnumerableProperty, 'encodeInto': kEnumerableProperty, 'encoding': kEnumerableProperty, - [SymbolToStringTag]: { configurable: true, value: 'TextEncoder' }, + [SymbolToStringTag]: { __proto__: null, configurable: true, value: 'TextEncoder' }, }); const TextDecoder = @@ -377,7 +380,7 @@ function makeTextDecoderICU() { } = internalBinding('icu'); class TextDecoder { - constructor(encoding = 'utf-8', options = {}) { + constructor(encoding = 'utf-8', options = kEmptyObject) { encoding = `${encoding}`; validateObject(options, 'options', { nullable: true, @@ -406,7 +409,7 @@ function makeTextDecoderICU() { } - decode(input = empty, options = {}) { + decode(input = empty, options = kEmptyObject) { validateDecoder(this); if (isAnyArrayBuffer(input)) { input = lazyBuffer().from(input); @@ -451,7 +454,7 @@ function makeTextDecoderJS() { } class TextDecoder { - constructor(encoding = 'utf-8', options = {}) { + constructor(encoding = 'utf-8', options = kEmptyObject) { encoding = `${encoding}`; validateObject(options, 'options', { nullable: true, @@ -479,7 +482,7 @@ function makeTextDecoderJS() { this[kBOMSeen] = false; } - decode(input = empty, options = {}) { + decode(input = empty, options = kEmptyObject) { validateDecoder(this); if (isAnyArrayBuffer(input)) { input = lazyBuffer().from(input); @@ -530,49 +533,54 @@ function makeTextDecoderJS() { } // Mix in some shared properties. -ObjectDefineProperties( - TextDecoder.prototype, - ObjectGetOwnPropertyDescriptors({ - get encoding() { - validateDecoder(this); - return this[kEncoding]; - }, - - get fatal() { - validateDecoder(this); - return (this[kFlags] & CONVERTER_FLAGS_FATAL) === CONVERTER_FLAGS_FATAL; - }, - - get ignoreBOM() { - validateDecoder(this); - return (this[kFlags] & CONVERTER_FLAGS_IGNORE_BOM) === +const sharedProperties = ObjectGetOwnPropertyDescriptors({ + get encoding() { + validateDecoder(this); + return this[kEncoding]; + }, + + get fatal() { + validateDecoder(this); + return (this[kFlags] & CONVERTER_FLAGS_FATAL) === CONVERTER_FLAGS_FATAL; + }, + + get ignoreBOM() { + validateDecoder(this); + return (this[kFlags] & CONVERTER_FLAGS_IGNORE_BOM) === CONVERTER_FLAGS_IGNORE_BOM; - }, + }, - [inspect](depth, opts) { - validateDecoder(this); - if (typeof depth === 'number' && depth < 0) - return this; - const constructor = getConstructorOf(this) || TextDecoder; - const obj = ObjectCreate({ constructor }); - obj.encoding = this.encoding; - obj.fatal = this.fatal; - obj.ignoreBOM = this.ignoreBOM; - if (opts.showHidden) { - obj[kFlags] = this[kFlags]; - obj[kHandle] = this[kHandle]; - } - // Lazy to avoid circular dependency - const { inspect } = require('internal/util/inspect'); - return `${constructor.name} ${inspect(obj)}`; + [inspect](depth, opts) { + validateDecoder(this); + if (typeof depth === 'number' && depth < 0) + return this; + const constructor = getConstructorOf(this) || TextDecoder; + const obj = ObjectCreate({ constructor }); + obj.encoding = this.encoding; + obj.fatal = this.fatal; + obj.ignoreBOM = this.ignoreBOM; + if (opts.showHidden) { + obj[kFlags] = this[kFlags]; + obj[kHandle] = this[kHandle]; } - }) -); + // Lazy to avoid circular dependency + const { inspect } = require('internal/util/inspect'); + return `${constructor.name} ${inspect(obj)}`; + } +}); +const propertiesValues = ObjectValues(sharedProperties); +for (let i = 0; i < propertiesValues.length; i++) { + // We want to use null-prototype objects to not rely on globally mutable + // %Object.prototype%. + ObjectSetPrototypeOf(propertiesValues[i], null); +} +sharedProperties[inspect].enumerable = false; ObjectDefineProperties(TextDecoder.prototype, { decode: kEnumerableProperty, - [inspect]: { enumerable: false }, + ...sharedProperties, [SymbolToStringTag]: { + __proto__: null, configurable: true, value: 'TextDecoder' } diff --git a/lib/internal/error_serdes.js b/lib/internal/error_serdes.js index c364820f60b1aa..68576c1c24d7a7 100644 --- a/lib/internal/error_serdes.js +++ b/lib/internal/error_serdes.js @@ -70,6 +70,7 @@ function GetConstructors(object) { const desc = ObjectGetOwnPropertyDescriptor(current, 'constructor'); if (desc && desc.value) { ObjectDefineProperty(constructors, constructors.length, { + __proto__: null, value: desc.value, enumerable: true }); } @@ -130,6 +131,7 @@ function deserializeError(error) { const { constructor, properties } = deserialize(error.subarray(1)); const ctor = errors[constructor]; ObjectDefineProperty(properties, SymbolToStringTag, { + __proto__: null, value: { value: 'Error', configurable: true }, enumerable: true }); diff --git a/lib/internal/errors.js b/lib/internal/errors.js index 04a752ea6522dc..b3a505aae8d0de 100644 --- a/lib/internal/errors.js +++ b/lib/internal/errors.js @@ -42,14 +42,13 @@ const { ObjectPrototypeHasOwnProperty, RangeError, ReflectApply, - RegExpPrototypeTest, + RegExpPrototypeExec, SafeArrayIterator, SafeMap, SafeWeakMap, String, StringPrototypeEndsWith, StringPrototypeIncludes, - StringPrototypeMatch, StringPrototypeSlice, StringPrototypeSplit, StringPrototypeStartsWith, @@ -175,24 +174,19 @@ let assert; let internalUtil = null; function lazyInternalUtil() { - if (!internalUtil) { - internalUtil = require('internal/util'); - } + internalUtil ??= require('internal/util'); return internalUtil; } let internalUtilInspect = null; function lazyInternalUtilInspect() { - if (!internalUtilInspect) { - internalUtilInspect = require('internal/util/inspect'); - } + internalUtilInspect ??= require('internal/util/inspect'); return internalUtilInspect; } let buffer; function lazyBuffer() { - if (buffer === undefined) - buffer = require('buffer').Buffer; + buffer ??= require('buffer').Buffer; return buffer; } @@ -207,6 +201,16 @@ function isErrorStackTraceLimitWritable() { desc.set !== undefined; } +function inspectWithNoCustomRetry(obj, options) { + const utilInspect = lazyInternalUtilInspect(); + + try { + return utilInspect.inspect(obj, options); + } catch { + return utilInspect.inspect(obj, { ...options, customInspect: false }); + } +} + // A specialized Error that includes an additional info property with // additional information about the error condition. // It has the properties present in a UVException but with a custom error @@ -237,30 +241,35 @@ class SystemError extends Error { ObjectDefineProperties(this, { [kIsNodeError]: { + __proto__: null, value: true, enumerable: false, writable: false, configurable: true, }, name: { + __proto__: null, value: 'SystemError', enumerable: false, writable: true, configurable: true, }, message: { + __proto__: null, value: message, enumerable: false, writable: true, configurable: true, }, info: { + __proto__: null, value: context, enumerable: true, configurable: true, writable: false, }, errno: { + __proto__: null, get() { return context.errno; }, @@ -271,6 +280,7 @@ class SystemError extends Error { configurable: true, }, syscall: { + __proto__: null, get() { return context.syscall; }, @@ -289,6 +299,7 @@ class SystemError extends Error { // `.toString()` and `Buffer.from()` operations and set the value on the // context as the user did. ObjectDefineProperty(this, 'path', { + __proto__: null, get() { return context.path != null ? context.path.toString() : context.path; @@ -304,6 +315,7 @@ class SystemError extends Error { if (context.dest !== undefined) { ObjectDefineProperty(this, 'dest', { + __proto__: null, get() { return context.dest != null ? context.dest.toString() : context.dest; @@ -349,18 +361,21 @@ function makeNodeErrorWithCode(Base, key) { const message = getMessage(key, args, error); ObjectDefineProperties(error, { [kIsNodeError]: { + __proto__: null, value: true, enumerable: false, writable: false, configurable: true, }, message: { + __proto__: null, value: message, enumerable: false, writable: true, configurable: true, }, toString: { + __proto__: null, value() { return `${this.name} [${key}]: ${this.message}`; }, @@ -384,7 +399,7 @@ function hideStackFrames(fn) { // We rename the functions that will be hidden to cut off the stacktrace // at the outermost one const hidden = nodeInternalPrefix + fn.name; - ObjectDefineProperty(fn, 'name', { value: hidden }); + ObjectDefineProperty(fn, 'name', { __proto__: null, value: hidden }); return fn; } @@ -411,7 +426,7 @@ function E(sym, val, def, ...otherClasses) { function getMessage(key, args, self) { const msg = messages.get(key); - if (assert === undefined) assert = require('internal/assert'); + assert ??= require('internal/assert'); if (typeof msg === 'function') { assert( @@ -422,8 +437,9 @@ function getMessage(key, args, self) { return ReflectApply(msg, self, args); } - const expectedLength = - (StringPrototypeMatch(msg, /%[dfijoOs]/g) || []).length; + const regex = /%[dfijoOs]/g; + let expectedLength = 0; + while (RegExpPrototypeExec(regex, msg) !== null) expectedLength++; assert( expectedLength === args.length, `Code: ${key}; The provided arguments length (${args.length}) does not ` + @@ -439,9 +455,7 @@ function getMessage(key, args, self) { let uvBinding; function lazyUv() { - if (!uvBinding) { - uvBinding = internalBinding('uv'); - } + uvBinding ??= internalBinding('uv'); return uvBinding; } @@ -449,9 +463,7 @@ const uvUnmappedError = ['UNKNOWN', 'unknown error']; function uvErrmapGet(name) { uvBinding = lazyUv(); - if (!uvBinding.errmap) { - uvBinding.errmap = uvBinding.getErrorMap(); - } + uvBinding.errmap ??= uvBinding.getErrorMap(); return MapPrototypeGet(uvBinding.errmap, name); } @@ -578,7 +590,7 @@ const errnoException = hideStackFrames( // getSystemErrorName(err) to guard against invalid arguments from users. // This can be replaced with [ code ] = errmap.get(err) when this method // is no longer exposed to user land. - if (util === undefined) util = require('util'); + util ??= require('util'); const code = util.getSystemErrorName(err); const message = original ? `${syscall} ${code} ${original}` : `${syscall} ${code}`; @@ -612,7 +624,7 @@ const exceptionWithHostPort = hideStackFrames( // getSystemErrorName(err) to guard against invalid arguments from users. // This can be replaced with [ code ] = errmap.get(err) when this method // is no longer exposed to user land. - if (util === undefined) util = require('util'); + util ??= require('util'); const code = util.getSystemErrorName(err); let details = ''; if (port && port > 0) { @@ -822,8 +834,11 @@ function hideInternalStackFrames(error) { // to make usage of the error in userland and readable-stream easier. // It is a regular error with `.code` and `.name`. class AbortError extends Error { - constructor() { - super('The operation was aborted'); + constructor(message = 'The operation was aborted', options = undefined) { + if (options !== undefined && typeof options !== 'object') { + throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options); + } + super(message, options); this.code = 'ABORT_ERR'; this.name = 'AbortError'; } @@ -843,6 +858,31 @@ const genericNodeError = hideStackFrames(function genericNodeError(message, erro return err; }); +/** + * Determine the specific type of a value for type-mismatch errors. + * @param {*} value + * @returns {string} + */ +function determineSpecificType(value) { + if (value == null) { + return '' + value; + } + if (typeof value === 'function' && value.name) { + return `function ${value.name}`; + } + if (typeof value === 'object') { + if (value.constructor?.name) { + return `an instance of ${value.constructor.name}`; + } + return `${lazyInternalUtilInspect().inspect(value, { depth: -1 })}`; + } + let inspected = lazyInternalUtilInspect() + .inspect(value, { colors: false }); + if (inspected.length > 28) { inspected = `${StringPrototypeSlice(inspected, 0, 25)}...`; } + + return `type ${typeof value} (${inspected})`; +} + module.exports = { AbortError, aggregateTwoErrors, @@ -851,6 +891,7 @@ module.exports = { connResetException, dnsException, // This is exported only to facilitate testing. + determineSpecificType, E, errnoException, exceptionWithHostPort, @@ -859,6 +900,7 @@ module.exports = { getMessage, hideInternalStackFrames, hideStackFrames, + inspectWithNoCustomRetry, isErrorStackTraceLimitWritable, isStackOverflowError, kEnhanceStackBeforeInspector, @@ -962,6 +1004,8 @@ E('ERR_DOMAIN_CANNOT_SET_UNCAUGHT_EXCEPTION_CAPTURE', 'The `domain` module is in use, which is mutually exclusive with calling ' + 'process.setUncaughtExceptionCaptureCallback()', Error); +E('ERR_DUPLICATE_STARTUP_SNAPSHOT_MAIN_FUNCTION', + 'Deserialize main function is already configured.', Error); E('ERR_ENCODING_INVALID_ENCODED_DATA', function(encoding, ret) { this.errno = ret; return `The encoded data was not valid for encoding ${encoding}`; @@ -990,7 +1034,7 @@ E('ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY', 'Cannot overwrite symlink in subdirectory of self', SystemError); E('ERR_FS_CP_UNKNOWN', 'Cannot copy an unknown file type', SystemError); E('ERR_FS_EISDIR', 'Path is a directory', SystemError); -E('ERR_FS_FILE_TOO_LARGE', 'File size (%s) is greater than 2 GB', RangeError); +E('ERR_FS_FILE_TOO_LARGE', 'File size (%s) is greater than 2 GiB', RangeError); E('ERR_FS_INVALID_SYMLINK_TYPE', 'Symlink type must be one of "dir", "file", or "junction". Received "%s"', Error); // Switch to TypeError. The current implementation does not seem right @@ -1159,7 +1203,7 @@ E('ERR_INVALID_ARG_TYPE', 'All expected entries have to be of type string'); if (ArrayPrototypeIncludes(kTypes, value)) { ArrayPrototypePush(types, StringPrototypeToLowerCase(value)); - } else if (RegExpPrototypeTest(classRegExp, value)) { + } else if (RegExpPrototypeExec(classRegExp, value) !== null) { ArrayPrototypePush(instances, value); } else { assert(value !== 'object', @@ -1219,25 +1263,8 @@ E('ERR_INVALID_ARG_TYPE', } } - if (actual == null) { - msg += `. Received ${actual}`; - } else if (typeof actual === 'function' && actual.name) { - msg += `. Received function ${actual.name}`; - } else if (typeof actual === 'object') { - if (actual.constructor && actual.constructor.name) { - msg += `. Received an instance of ${actual.constructor.name}`; - } else { - const inspected = lazyInternalUtilInspect() - .inspect(actual, { depth: -1 }); - msg += `. Received ${inspected}`; - } - } else { - let inspected = lazyInternalUtilInspect() - .inspect(actual, { colors: false }); - if (inspected.length > 25) - inspected = `${StringPrototypeSlice(inspected, 0, 25)}...`; - msg += `. Received type ${typeof actual} (${inspected})`; - } + msg += `. Received ${determineSpecificType(actual)}`; + return msg; }, TypeError); E('ERR_INVALID_ARG_VALUE', (name, value, reason = 'is invalid') => { @@ -1319,12 +1346,8 @@ E('ERR_INVALID_RETURN_PROPERTY_VALUE', (input, name, prop, value) => { ` "${name}" function but got ${type}.`; }, TypeError); E('ERR_INVALID_RETURN_VALUE', (input, name, value) => { - let type; - if (value && value.constructor && value.constructor.name) { - type = `instance of ${value.constructor.name}`; - } else { - type = `type ${typeof value}`; - } + const type = determineSpecificType(value); + return `Expected ${input} to be returned from the "${name}"` + ` function but got ${type}.`; }, TypeError, RangeError); @@ -1356,6 +1379,13 @@ E('ERR_IPC_CHANNEL_CLOSED', 'Channel closed', Error); E('ERR_IPC_DISCONNECTED', 'IPC channel is already disconnected', Error); E('ERR_IPC_ONE_PIPE', 'Child process can have only one IPC pipe', Error); E('ERR_IPC_SYNC_FORK', 'IPC cannot be used with synchronous forks', Error); +E( + 'ERR_LOADER_CHAIN_INCOMPLETE', + '"%s" did not call the next hook in its chain and did not' + + ' explicitly signal a short circuit. If this is intentional, include' + + ' `shortCircuit: true` in the hook\'s return.', + Error +); E('ERR_MANIFEST_ASSERT_INTEGRITY', (moduleURL, realIntegrities) => { let msg = `The content of "${ @@ -1435,6 +1465,8 @@ E('ERR_NETWORK_IMPORT_BAD_RESPONSE', "import '%s' received a bad response: %s", Error); E('ERR_NETWORK_IMPORT_DISALLOWED', "import of '%s' by %s is not supported: %s", Error); +E('ERR_NOT_BUILDING_SNAPSHOT', + 'Operation cannot be invoked when not building startup snapshot', Error); E('ERR_NO_CRYPTO', 'Node.js is not compiled with OpenSSL crypto support', Error); E('ERR_NO_ICU', @@ -1471,6 +1503,15 @@ E('ERR_PACKAGE_PATH_NOT_EXPORTED', (pkgPath, subpath, base = undefined) => { return `Package subpath '${subpath}' is not defined by "exports" in ${ pkgPath}package.json${base ? ` imported from ${base}` : ''}`; }, Error); +E('ERR_PARSE_ARGS_INVALID_OPTION_VALUE', '%s', TypeError); +E('ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL', "Unexpected argument '%s'. This " + + 'command does not take positional arguments', TypeError); +E('ERR_PARSE_ARGS_UNKNOWN_OPTION', (option, allowPositionals) => { + const suggestDashDash = allowPositionals ? '. To specify a positional ' + + "argument starting with a '-', place it at the end of the command after " + + `'--', as in '-- ${JSONStringify(option)}` : ''; + return `Unknown option '${option}'${suggestDashDash}`; +}, TypeError); E('ERR_PERFORMANCE_INVALID_TIMESTAMP', '%d is not a valid timestamp', TypeError); E('ERR_PERFORMANCE_MEASURE_INVALID_OPTIONS', '%s', TypeError); @@ -1543,6 +1584,21 @@ E('ERR_STREAM_WRAP', 'Stream has StringDecoder set or is in objectMode', Error); E('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error); E('ERR_SYNTHETIC', 'JavaScript Callstack', Error); E('ERR_SYSTEM_ERROR', 'A system error occurred', SystemError); +E('ERR_TEST_FAILURE', function(error, failureType) { + hideInternalStackFrames(this); + assert(typeof failureType === 'string', + "The 'failureType' argument must be of type string."); + + let msg = error?.message ?? error; + + if (typeof msg !== 'string') { + msg = inspectWithNoCustomRetry(msg); + } + + this.failureType = failureType; + this.cause = error; + return msg; +}, Error); E('ERR_TLS_CERT_ALTNAME_FORMAT', 'Invalid subject alternative name string', SyntaxError); E('ERR_TLS_CERT_ALTNAME_INVALID', function(reason, host, cert) { @@ -1625,8 +1681,10 @@ E('ERR_VM_MODULE_CANNOT_CREATE_CACHED_DATA', 'Cached data cannot be created for a module which has been evaluated', Error); E('ERR_VM_MODULE_DIFFERENT_CONTEXT', 'Linked modules must use the same context', Error); -E('ERR_VM_MODULE_LINKING_ERRORED', - 'Linking has already failed for the provided module', Error); +E('ERR_VM_MODULE_LINK_FAILURE', function(message, cause) { + this.cause = cause; + return message; +}, Error); E('ERR_VM_MODULE_NOT_MODULE', 'Provided module is not an instance of Module', Error); E('ERR_VM_MODULE_STATUS', 'Module status %s', Error); diff --git a/lib/internal/event_target.js b/lib/internal/event_target.js index 7c539db2eb3c2a..f1bc8ce0b55073 100644 --- a/lib/internal/event_target.js +++ b/lib/internal/event_target.js @@ -4,7 +4,6 @@ const { ArrayFrom, Boolean, Error, - FunctionPrototypeBind, FunctionPrototypeCall, NumberIsInteger, ObjectAssign, @@ -35,7 +34,11 @@ const { } = require('internal/errors'); const { validateObject, validateString } = require('internal/validators'); -const { customInspectSymbol, kEnumerableProperty } = require('internal/util'); +const { + customInspectSymbol, + kEmptyObject, + kEnumerableProperty, +} = require('internal/util'); const { inspect } = require('util'); const kIsEventTarget = SymbolFor('nodejs.event_target'); @@ -73,6 +76,7 @@ const kTimestamp = Symbol('timestamp'); const kBubbles = Symbol('bubbles'); const kComposed = Symbol('composed'); const kPropagationStopped = Symbol('propagationStopped'); +const kDetail = Symbol('detail'); const isTrustedSet = new SafeWeakSet(); const isTrusted = ObjectGetOwnPropertyDescriptor({ @@ -94,16 +98,15 @@ class Event { * composed?: boolean, * }} [options] */ - constructor(type, options = null) { + constructor(type, options = kEmptyObject) { if (arguments.length === 0) throw new ERR_MISSING_ARGS('type'); - validateObject(options, 'options', { - allowArray: true, allowFunction: true, nullable: true, - }); - const { cancelable, bubbles, composed } = { ...options }; + validateObject(options, 'options'); + const { bubbles, cancelable, composed } = options; this[kCancelable] = !!cancelable; this[kBubbles] = !!bubbles; this[kComposed] = !!composed; + this[kType] = `${type}`; this[kDefaultPrevented] = false; this[kTimestamp] = now(); @@ -114,6 +117,7 @@ class Event { // isTrusted is special (LegacyUnforgeable) ObjectDefineProperty(this, 'isTrusted', { + __proto__: null, get: isTrusted, enumerable: true, configurable: false @@ -300,6 +304,7 @@ class Event { ObjectDefineProperties( Event.prototype, { [SymbolToStringTag]: { + __proto__: null, writable: false, enumerable: false, configurable: true, @@ -323,6 +328,49 @@ ObjectDefineProperties( stopPropagation: kEnumerableProperty, }); +function isCustomEvent(value) { + return isEvent(value) && (value?.[kDetail] !== undefined); +} + +class CustomEvent extends Event { + /** + * @constructor + * @param {string} type + * @param {{ + * bubbles?: boolean, + * cancelable?: boolean, + * composed?: boolean, + * detail?: any, + * }} [options] + */ + constructor(type, options = kEmptyObject) { + if (arguments.length === 0) + throw new ERR_MISSING_ARGS('type'); + super(type, options); + this[kDetail] = options?.detail ?? null; + } + + /** + * @type {any} + */ + get detail() { + if (!isCustomEvent(this)) + throw new ERR_INVALID_THIS('CustomEvent'); + return this[kDetail]; + } +} + +ObjectDefineProperties(CustomEvent.prototype, { + [SymbolToStringTag]: { + __proto__: null, + writable: false, + enumerable: false, + configurable: true, + value: 'CustomEvent', + }, + detail: kEnumerableProperty, +}); + class NodeCustomEvent extends Event { constructor(type, options) { super(type, options); @@ -379,7 +427,10 @@ class Listener { this.callback = listener; this.listener = listener; } else { - this.callback = FunctionPrototypeBind(listener.handleEvent, listener); + this.callback = async (...args) => { + if (listener.handleEvent) + await ReflectApply(listener.handleEvent, listener, args); + }; this.listener = listener; } } @@ -455,13 +506,13 @@ class EventTarget { * signal?: AbortSignal * }} [options] */ - addEventListener(type, listener, options = {}) { + addEventListener(type, listener, options = kEmptyObject) { if (!isEventTarget(this)) throw new ERR_INVALID_THIS('EventTarget'); if (arguments.length < 2) throw new ERR_MISSING_ARGS('type', 'listener'); - // We validateOptions before the shouldAddListeners check because the spec + // We validateOptions before the validateListener check because the spec // requires us to hit getters. const { once, @@ -472,7 +523,7 @@ class EventTarget { weak, } = validateEventListenerOptions(options); - if (!shouldAddListener(listener)) { + if (!validateEventListener(listener)) { // The DOM silently allows passing undefined as a second argument // No error code for this since it is a Warning // eslint-disable-next-line no-restricted-syntax @@ -542,10 +593,10 @@ class EventTarget { * capture?: boolean, * }} [options] */ - removeEventListener(type, listener, options = {}) { + removeEventListener(type, listener, options = kEmptyObject) { if (!isEventTarget(this)) throw new ERR_INVALID_THIS('EventTarget'); - if (!shouldAddListener(listener)) + if (!validateEventListener(listener)) return; type = String(type); @@ -681,6 +732,7 @@ ObjectDefineProperties(EventTarget.prototype, { removeEventListener: kEnumerableProperty, dispatchEvent: kEnumerableProperty, [SymbolToStringTag]: { + __proto__: null, writable: false, enumerable: false, configurable: true, @@ -853,7 +905,7 @@ ObjectDefineProperties(NodeEventTarget.prototype, { // EventTarget API -function shouldAddListener(listener) { +function validateEventListener(listener) { if (typeof listener === 'function' || typeof listener?.handleEvent === 'function') { return true; @@ -862,6 +914,11 @@ function shouldAddListener(listener) { if (listener == null) return false; + if (typeof listener === 'object') { + // Require `handleEvent` lazily. + return true; + } + throw new ERR_INVALID_ARG_TYPE('listener', 'EventListener', listener); } @@ -870,7 +927,7 @@ function validateEventListenerOptions(options) { return { capture: options }; if (options === null) - return {}; + return kEmptyObject; validateObject(options, 'options', { allowArray: true, allowFunction: true, }); @@ -928,6 +985,7 @@ function makeEventHandler(handler) { function defineEventHandler(emitter, name) { // 8.1.5.1 Event handlers - basically `on[eventName]` attributes ObjectDefineProperty(emitter, `on${name}`, { + __proto__: null, get() { return this[kHandlers]?.get(name)?.handler ?? null; }, @@ -975,6 +1033,7 @@ const EventEmitterMixin = (Superclass) => { module.exports = { Event, + CustomEvent, EventEmitterMixin, EventTarget, NodeEventTarget, diff --git a/lib/internal/freeze_intrinsics.js b/lib/internal/freeze_intrinsics.js index 0dcfea1ef2ec28..508b071c7c0f88 100644 --- a/lib/internal/freeze_intrinsics.js +++ b/lib/internal/freeze_intrinsics.js @@ -372,6 +372,7 @@ module.exports = function() { // 19.1 Value Properties of the Global Object ObjectDefineProperty(globalThis, 'globalThis', { + __proto__: null, configurable: false, writable: false, value: globalThis, @@ -427,16 +428,8 @@ module.exports = function() { const descs = ObjectGetOwnPropertyDescriptors(obj); enqueue(proto); ArrayPrototypeForEach(ReflectOwnKeys(descs), (name) => { - // TODO: Uncurried form - // TODO: getOwnPropertyDescriptors is guaranteed to return well-formed - // descriptors, but they still inherit from Object.prototype. If - // someone has poisoned Object.prototype to add 'value' or 'get' - // properties, then a simple 'if ("value" in desc)' or 'desc.value' - // test could be confused. We use hasOwnProperty to be sure about - // whether 'value' is present or not, which tells us for sure that - // this is a data property. const desc = descs[name]; - if ('value' in desc) { + if (ObjectPrototypeHasOwnProperty(desc, 'value')) { // todo uncurried form enqueue(desc.value); } else { @@ -488,7 +481,7 @@ module.exports = function() { * objects succeed if otherwise possible. */ function enableDerivedOverride(obj, prop, desc) { - if ('value' in desc && desc.configurable) { + if (ObjectPrototypeHasOwnProperty(desc, 'value') && desc.configurable) { const value = desc.value; function getter() { @@ -510,6 +503,7 @@ module.exports = function() { this[prop] = newValue; } else { ObjectDefineProperty(this, prop, { + __proto__: null, value: newValue, writable: true, enumerable: true, @@ -519,6 +513,7 @@ module.exports = function() { } ObjectDefineProperty(obj, prop, { + __proto__: null, get: getter, set: setter, enumerable: desc.enumerable, diff --git a/lib/internal/fs/dir.js b/lib/internal/fs/dir.js index 917319661a647d..b6e8d4a4b09c13 100644 --- a/lib/internal/fs/dir.js +++ b/lib/internal/fs/dir.js @@ -226,6 +226,7 @@ class Dir { } ObjectDefineProperty(Dir.prototype, SymbolAsyncIterator, { + __proto__: null, value: Dir.prototype.entries, enumerable: false, writable: true, diff --git a/lib/internal/fs/promises.js b/lib/internal/fs/promises.js index 123656c4b0cac9..2b98adaba3dc04 100644 --- a/lib/internal/fs/promises.js +++ b/lib/internal/fs/promises.js @@ -5,7 +5,6 @@ const { Error, MathMax, MathMin, - ObjectCreate, NumberIsSafeInteger, Promise, PromisePrototypeThen, @@ -16,13 +15,15 @@ const { Uint8Array, } = primordials; +const { fs: constants } = internalBinding('constants'); const { F_OK, O_SYMLINK, O_WRONLY, S_IFMT, S_IFREG -} = internalBinding('constants').fs; +} = constants; + const binding = internalBinding('fs'); const { Buffer } = require('buffer'); @@ -62,7 +63,7 @@ const { validateOffsetLengthWrite, validateRmOptions, validateRmdirOptions, - validateStringAfterArrayBufferView, + validatePrimitiveStringAfterArrayBufferView, warnOnNonPortableTemplate, } = require('internal/fs/utils'); const { opendir } = require('internal/fs/dir'); @@ -76,7 +77,11 @@ const { validateString, } = require('internal/validators'); const pathModule = require('path'); -const { lazyDOMException, promisify } = require('internal/util'); +const { + kEmptyObject, + lazyDOMException, + promisify, +} = require('internal/util'); const { EventEmitterMixin } = require('internal/event_target'); const { watch } = require('internal/fs/watchers'); const { isIterable } = require('internal/streams/utils'); @@ -319,7 +324,7 @@ async function fsCall(fn, handle, ...args) { function checkAborted(signal) { if (signal?.aborted) - throw new AbortError(); + throw new AbortError(undefined, { cause: signal?.reason }); } async function writeFileHandle(filehandle, data, signal, encoding) { @@ -456,20 +461,29 @@ async function open(path, flags, mode) { flagsNumber, mode, kUsePromises)); } -async function read(handle, bufferOrOptions, offset, length, position) { - let buffer = bufferOrOptions; +async function read(handle, bufferOrParams, offset, length, position) { + let buffer = bufferOrParams; if (!isArrayBufferView(buffer)) { - bufferOrOptions ??= ObjectCreate(null); + // This is fh.read(params) ({ buffer = Buffer.alloc(16384), offset = 0, length = buffer.byteLength - offset, - position = null - } = bufferOrOptions); + position = null, + } = bufferOrParams ?? kEmptyObject); validateBuffer(buffer); } + if (offset !== null && typeof offset === 'object') { + // This is fh.read(buffer, options) + ({ + offset = 0, + length = buffer.byteLength - offset, + position = null, + } = offset); + } + if (offset == null) { offset = 0; } else { @@ -508,11 +522,20 @@ async function readv(handle, buffers, position) { return { bytesRead, buffers }; } -async function write(handle, buffer, offset, length, position) { +async function write(handle, buffer, offsetOrOptions, length, position) { if (buffer?.byteLength === 0) return { bytesWritten: 0, buffer }; + let offset = offsetOrOptions; if (isArrayBufferView(buffer)) { + if (typeof offset === 'object') { + ({ + offset = 0, + length = buffer.byteLength - offset, + position = null, + } = offsetOrOptions ?? kEmptyObject); + } + if (offset == null) { offset = 0; } else { @@ -529,7 +552,7 @@ async function write(handle, buffer, offset, length, position) { return { bytesWritten, buffer }; } - validateStringAfterArrayBufferView(buffer, 'buffer'); + validatePrimitiveStringAfterArrayBufferView(buffer, 'buffer'); validateEncoding(buffer, length); const bytesWritten = (await binding.writeString(handle.fd, buffer, offset, length, kUsePromises)) || 0; @@ -606,7 +629,7 @@ async function mkdir(path, options) { const { recursive = false, mode = 0o777 - } = options || {}; + } = options || kEmptyObject; path = getValidatedPath(path); validateBoolean(recursive, 'options.recursive'); @@ -616,7 +639,7 @@ async function mkdir(path, options) { } async function readdir(path, options) { - options = getOptions(options, {}); + options = getOptions(options); path = getValidatedPath(path); const result = await binding.readdir(pathModule.toNamespacedPath(path), options.encoding, @@ -628,7 +651,7 @@ async function readdir(path, options) { } async function readlink(path, options) { - options = getOptions(options, {}); + options = getOptions(options); path = getValidatedPath(path, 'oldPath'); return binding.readlink(pathModule.toNamespacedPath(path), options.encoding, kUsePromises); @@ -740,13 +763,13 @@ async function lutimes(path, atime, mtime) { } async function realpath(path, options) { - options = getOptions(options, {}); + options = getOptions(options); path = getValidatedPath(path); return binding.realpath(path, options.encoding, kUsePromises); } async function mkdtemp(prefix, options) { - options = getOptions(options, {}); + options = getOptions(options); validateString(prefix, 'prefix'); nullCheck(prefix); @@ -759,7 +782,7 @@ async function writeFile(path, data, options) { const flag = options.flag || 'w'; if (!isArrayBufferView(data) && !isCustomIterable(data)) { - validateStringAfterArrayBufferView(data, 'data'); + validatePrimitiveStringAfterArrayBufferView(data, 'data'); data = Buffer.from(data, options.encoding || 'utf8'); } @@ -829,6 +852,7 @@ module.exports = { appendFile, readFile, watch, + constants, }, FileHandle, diff --git a/lib/internal/fs/read_file_context.js b/lib/internal/fs/read_file_context.js index afa4b7852f6790..55ad6d767ecf7d 100644 --- a/lib/internal/fs/read_file_context.js +++ b/lib/internal/fs/read_file_context.js @@ -88,7 +88,8 @@ class ReadFileContext { let length; if (this.signal?.aborted) { - return this.close(new AbortError()); + return this.close( + new AbortError(undefined, { cause: this.signal?.reason })); } if (this.size === 0) { buffer = Buffer.allocUnsafeSlow(kReadFileUnknownBufferLength); diff --git a/lib/internal/fs/streams.js b/lib/internal/fs/streams.js index 5e9e338ab1fcbd..954cf6ae3c4466 100644 --- a/lib/internal/fs/streams.js +++ b/lib/internal/fs/streams.js @@ -16,7 +16,10 @@ const { ERR_OUT_OF_RANGE, ERR_METHOD_NOT_IMPLEMENTED, } = require('internal/errors').codes; -const { deprecate } = require('internal/util'); +const { + deprecate, + kEmptyObject, +} = require('internal/util'); const { validateFunction, validateInteger, @@ -150,7 +153,7 @@ function ReadStream(path, options) { return new ReadStream(path, options); // A little bit bigger buffer and water marks by default - options = copyObject(getOptions(options, {})); + options = copyObject(getOptions(options, kEmptyObject)); if (options.highWaterMark === undefined) options.highWaterMark = 64 * 1024; @@ -216,6 +219,7 @@ ObjectSetPrototypeOf(ReadStream.prototype, Readable.prototype); ObjectSetPrototypeOf(ReadStream, Readable); ObjectDefineProperty(ReadStream.prototype, 'autoClose', { + __proto__: null, get() { return this._readableState.autoDestroy; }, @@ -299,6 +303,7 @@ ReadStream.prototype.close = function(cb) { }; ObjectDefineProperty(ReadStream.prototype, 'pending', { + __proto__: null, get() { return this.fd === null; }, configurable: true }); @@ -307,7 +312,7 @@ function WriteStream(path, options) { if (!(this instanceof WriteStream)) return new WriteStream(path, options); - options = copyObject(getOptions(options, {})); + options = copyObject(getOptions(options, kEmptyObject)); // Only buffers are supported. options.decodeStrings = true; @@ -377,6 +382,7 @@ ObjectSetPrototypeOf(WriteStream.prototype, Writable.prototype); ObjectSetPrototypeOf(WriteStream, Writable); ObjectDefineProperty(WriteStream.prototype, 'autoClose', { + __proto__: null, get() { return this._writableState.autoDestroy; }, @@ -485,6 +491,7 @@ WriteStream.prototype.close = function(cb) { WriteStream.prototype.destroySoon = WriteStream.prototype.end; ObjectDefineProperty(WriteStream.prototype, 'pending', { + __proto__: null, get() { return this.fd === null; }, configurable: true }); diff --git a/lib/internal/fs/sync_write_stream.js b/lib/internal/fs/sync_write_stream.js index df366edce4716b..8fa5c56aaffc62 100644 --- a/lib/internal/fs/sync_write_stream.js +++ b/lib/internal/fs/sync_write_stream.js @@ -4,6 +4,7 @@ const { ObjectSetPrototypeOf, ReflectApply, } = primordials; +const { kEmptyObject } = require('internal/util'); const { Writable } = require('stream'); const { closeSync, writeSync } = require('fs'); @@ -11,7 +12,7 @@ const { closeSync, writeSync } = require('fs'); function SyncWriteStream(fd, options) { ReflectApply(Writable, this, [{ autoDestroy: true }]); - options = options || {}; + options = options || kEmptyObject; this.fd = fd; this.readable = false; diff --git a/lib/internal/fs/utils.js b/lib/internal/fs/utils.js index 481b5292b1d726..cba646942785fe 100644 --- a/lib/internal/fs/utils.js +++ b/lib/internal/fs/utils.js @@ -17,9 +17,9 @@ const { ObjectSetPrototypeOf, ReflectApply, ReflectOwnKeys, + RegExpPrototypeSymbolReplace, StringPrototypeEndsWith, StringPrototypeIncludes, - StringPrototypeReplace, Symbol, TypedArrayPrototypeIncludes, } = primordials; @@ -43,7 +43,10 @@ const { isDate, isBigUint64Array } = require('internal/util/types'); -const { once } = require('internal/util'); +const { + kEmptyObject, + once, +} = require('internal/util'); const { toPathIfFileURL } = require('internal/url'); const { validateAbortSignal, @@ -122,7 +125,7 @@ const kMaximumCopyMode = COPYFILE_EXCL | COPYFILE_FICLONE | COPYFILE_FICLONE_FORCE; -// Most platforms don't allow reads or writes >= 2 GB. +// Most platforms don't allow reads or writes >= 2 GiB. // See https://github.com/libuv/libuv/pull/1501. const kIoMaxLength = 2 ** 31 - 1; @@ -312,9 +315,8 @@ function getDirent(path, name, type, callback) { } } -function getOptions(options, defaultOptions) { - if (options === null || options === undefined || - typeof options === 'function') { +function getOptions(options, defaultOptions = kEmptyObject) { + if (options == null || typeof options === 'function') { return defaultOptions; } @@ -394,7 +396,7 @@ function preprocessSymlinkDestination(path, type, linkPath) { return pathModule.toNamespacedPath(path); } // Windows symlinks don't tolerate forward slashes. - return StringPrototypeReplace(path, /\//g, '\\'); + return RegExpPrototypeSymbolReplace(/\//g, path, '\\'); } // Constructor for file stats. @@ -889,6 +891,16 @@ const validateStringAfterArrayBufferView = hideStackFrames((buffer, name) => { ); }); +const validatePrimitiveStringAfterArrayBufferView = hideStackFrames((buffer, name) => { + if (typeof buffer !== 'string') { + throw new ERR_INVALID_ARG_TYPE( + name, + ['string', 'Buffer', 'TypedArray', 'DataView'], + buffer + ); + } +}); + const validatePosition = hideStackFrames((position, name) => { if (typeof position === 'number') { validateInteger(position, 'position'); @@ -943,5 +955,6 @@ module.exports = { validateRmOptionsSync, validateRmdirOptions, validateStringAfterArrayBufferView, + validatePrimitiveStringAfterArrayBufferView, warnOnNonPortableTemplate }; diff --git a/lib/internal/fs/watchers.js b/lib/internal/fs/watchers.js index b45af42d12ff7d..7b820e70df1613 100644 --- a/lib/internal/fs/watchers.js +++ b/lib/internal/fs/watchers.js @@ -291,6 +291,7 @@ function emitCloseNT(self) { // Legacy alias on the C++ wrapper object. This is not public API, so we may // want to runtime-deprecate it at some point. There's no hurry, though. ObjectDefineProperty(FSEvent.prototype, 'owner', { + __proto__: null, get() { return this[owner_symbol]; }, set(v) { return this[owner_symbol] = v; } }); @@ -316,13 +317,13 @@ async function* watch(filename, options = {}) { } if (signal?.aborted) - throw new AbortError(); + throw new AbortError(undefined, { cause: signal?.reason }); const handle = new FSEvent(); let { promise, resolve, reject } = createDeferredPromise(); const oncancel = () => { handle.close(); - reject(new AbortError()); + reject(new AbortError(undefined, { cause: signal?.reason })); }; try { @@ -361,7 +362,7 @@ async function* watch(filename, options = {}) { yield await promise; ({ promise, resolve, reject } = createDeferredPromise()); } - throw new AbortError(); + throw new AbortError(undefined, { cause: signal?.reason }); } finally { handle.close(); signal?.removeEventListener('abort', oncancel); diff --git a/lib/internal/histogram.js b/lib/internal/histogram.js index 4237e716dc07e4..ca540e555e0160 100644 --- a/lib/internal/histogram.js +++ b/lib/internal/histogram.js @@ -17,6 +17,7 @@ const { const { customInspectSymbol: kInspect, + kEmptyObject, } = require('internal/util'); const { inspect } = require('util'); @@ -352,7 +353,7 @@ internalRecordableHistogram.prototype[kDeserialize] = () => {}; * }} [options] * @returns {RecordableHistogram} */ -function createHistogram(options = {}) { +function createHistogram(options = kEmptyObject) { validateObject(options, 'options'); const { lowest = 1, diff --git a/lib/internal/http.js b/lib/internal/http.js index 375118da49f59b..337d155340f7e6 100644 --- a/lib/internal/http.js +++ b/lib/internal/http.js @@ -9,13 +9,6 @@ const { const { setUnrefTimeout } = require('internal/timers'); -const { InternalPerformanceEntry } = require('internal/perf/performance_entry'); - -const { - enqueue, - hasObserver, -} = require('internal/perf/observe'); - let utcCache; function utcDate() { @@ -33,23 +26,8 @@ function resetCache() { utcCache = undefined; } -function emitStatistics(statistics) { - if (!hasObserver('http') || statistics == null) return; - const startTime = statistics.startTime; - const diff = process.hrtime(startTime); - const entry = new InternalPerformanceEntry( - statistics.type, - 'http', - startTime[0] * 1000 + startTime[1] / 1e6, - diff[0] * 1000 + diff[1] / 1e6, - undefined, - ); - enqueue(entry); -} - module.exports = { kOutHeaders: Symbol('kOutHeaders'), kNeedDrain: Symbol('kNeedDrain'), utcDate, - emitStatistics, }; diff --git a/lib/internal/http2/compat.js b/lib/internal/http2/compat.js index 0c4519dfff5986..c390ccb11a8ccf 100644 --- a/lib/internal/http2/compat.js +++ b/lib/internal/http2/compat.js @@ -682,9 +682,19 @@ class Http2ServerResponse extends Stream { let i; if (ArrayIsArray(headers)) { - for (i = 0; i < headers.length; i++) { - const header = headers[i]; - this[kSetHeader](header[0], header[1]); + if (headers.length && ArrayIsArray(headers[0])) { + for (i = 0; i < headers.length; i++) { + const header = headers[i]; + this[kSetHeader](header[0], header[1]); + } + } else { + if (headers.length % 2 !== 0) { + throw new ERR_INVALID_ARG_VALUE('headers', headers); + } + + for (i = 0; i < headers.length; i += 2) { + this[kSetHeader](headers[i], headers[i + 1]); + } } } else if (typeof headers === 'object') { const keys = ObjectKeys(headers); diff --git a/lib/internal/http2/core.js b/lib/internal/http2/core.js index cc0bfe743fff17..0f4dc9bf9865f5 100644 --- a/lib/internal/http2/core.js +++ b/lib/internal/http2/core.js @@ -23,7 +23,7 @@ const { ReflectGet, ReflectGetPrototypeOf, ReflectSet, - RegExpPrototypeTest, + RegExpPrototypeExec, SafeArrayIterator, SafeMap, SafeSet, @@ -37,7 +37,8 @@ const { const { assertCrypto, customInspectSymbol: kInspect, - promisify + kEmptyObject, + promisify, } = require('internal/util'); assertCrypto(); @@ -189,10 +190,10 @@ let debug = require('internal/util/debuglog').debuglog('http2', (fn) => { debug = fn; }); -// TODO(addaleax): See if this can be made more efficient by figuring out -// whether debugging is enabled before we perform any further steps. Currently, -// this seems pretty fast, though. function debugStream(id, sessionType, message, ...args) { + if (!debug.enabled) { + return; + } debug('Http2Stream %s [Http2Session %s]: ' + message, id, sessionName(sessionType), ...new SafeArrayIterator(args)); } @@ -981,6 +982,7 @@ function trackAssignmentsTypedArray(typedArray) { } return new Proxy(typedArray, { + __proto__: null, get(obj, prop, receiver) { if (prop === 'copyAssigned') { return copyAssigned; @@ -1658,7 +1660,7 @@ class ServerHttp2Session extends Http2Session { } validateString(alt, 'alt'); - if (!RegExpPrototypeTest(kQuotedString, alt)) + if (RegExpPrototypeExec(kQuotedString, alt) === null) throw new ERR_INVALID_CHAR('alt'); // Max length permitted for ALTSVC @@ -1792,7 +1794,9 @@ class ClientHttp2Session extends Http2Session { const { signal } = options; if (signal) { validateAbortSignal(signal, 'options.signal'); - const aborter = () => stream.destroy(new AbortError()); + const aborter = () => { + stream.destroy(new AbortError(undefined, { cause: signal.reason })); + }; if (signal.aborted) { aborter(); } else { @@ -3111,7 +3115,7 @@ function initializeTLSOptions(options, servername) { options.ALPNProtocols = ['h2']; if (options.allowHTTP1 === true) ArrayPrototypePush(options.ALPNProtocols, 'http/1.1'); - if (servername !== undefined && options.servername === undefined) + if (servername !== undefined && !options.servername) options.servername = servername; return options; } @@ -3294,6 +3298,7 @@ function connect(authority, options, listener) { // Support util.promisify ObjectDefineProperty(connect, promisify.custom, { + __proto__: null, value: (authority, options) => { return new Promise((resolve) => { const server = connect(authority, options, () => resolve(server)); @@ -3323,7 +3328,7 @@ function getPackedSettings(settings) { return binding.packSettings(); } -function getUnpackedSettings(buf, options = {}) { +function getUnpackedSettings(buf, options = kEmptyObject) { if (!isArrayBufferView(buf) || buf.length === undefined) { throw new ERR_INVALID_ARG_TYPE('buf', ['Buffer', 'TypedArray'], buf); @@ -3393,6 +3398,7 @@ module.exports = { sensitiveHeaders: kSensitiveHeaders, Http2Session, Http2Stream, + ServerHttp2Session, Http2ServerRequest, Http2ServerResponse }; diff --git a/lib/internal/http2/util.js b/lib/internal/http2/util.js index 38578d2a151c52..ecb943c9b8e37d 100644 --- a/lib/internal/http2/util.js +++ b/lib/internal/http2/util.js @@ -555,6 +555,7 @@ class NghttpError extends Error { this.errno = integerCode; captureLargerStackTrace(this); ObjectDefineProperty(this, kIsNodeError, { + __proto__: null, value: true, enumerable: false, writable: false, @@ -588,7 +589,7 @@ const assertWithinRange = hideStackFrames( function toHeaderObject(headers, sensitiveHeaders) { const obj = ObjectCreate(null); - for (var n = 0; n < headers.length; n += 2) { + for (let n = 0; n < headers.length; n += 2) { const name = headers[n]; let value = headers[n + 1]; if (name === HTTP2_HEADER_STATUS) diff --git a/lib/internal/js_stream_socket.js b/lib/internal/js_stream_socket.js index faad988e820ffa..f2a0ecaa1d8a65 100644 --- a/lib/internal/js_stream_socket.js +++ b/lib/internal/js_stream_socket.js @@ -171,6 +171,7 @@ class JSStreamSocket extends Socket { this.stream.cork(); // Use `var` over `let` for performance optimization. + // eslint-disable-next-line no-var for (var i = 0; i < bufs.length; ++i) this.stream.write(bufs[i], done); this.stream.uncork(); diff --git a/lib/internal/main/mksnapshot.js b/lib/internal/main/mksnapshot.js new file mode 100644 index 00000000000000..616a436e0a9483 --- /dev/null +++ b/lib/internal/main/mksnapshot.js @@ -0,0 +1,139 @@ +'use strict'; + +const { + Error, + SafeSet, + SafeArrayIterator +} = primordials; + +const binding = internalBinding('mksnapshot'); +const { NativeModule } = require('internal/bootstrap/loaders'); +const { + compileSerializeMain, +} = binding; + +const { + getOptionValue +} = require('internal/options'); + +const { + readFileSync +} = require('fs'); + +const supportedModules = new SafeSet(new SafeArrayIterator([ + // '_http_agent', + // '_http_client', + // '_http_common', + // '_http_incoming', + // '_http_outgoing', + // '_http_server', + '_stream_duplex', + '_stream_passthrough', + '_stream_readable', + '_stream_transform', + '_stream_wrap', + '_stream_writable', + // '_tls_common', + // '_tls_wrap', + 'assert', + 'assert/strict', + // 'async_hooks', + 'buffer', + // 'child_process', + // 'cluster', + 'console', + 'constants', + 'crypto', + // 'dgram', + // 'diagnostics_channel', + // 'dns', + // 'dns/promises', + // 'domain', + 'events', + 'fs', + 'fs/promises', + // 'http', + // 'http2', + // 'https', + // 'inspector', + // 'module', + // 'net', + 'os', + 'path', + 'path/posix', + 'path/win32', + // 'perf_hooks', + 'process', + 'punycode', + 'querystring', + // 'readline', + // 'repl', + 'stream', + 'stream/promises', + 'string_decoder', + 'sys', + 'timers', + 'timers/promises', + // 'tls', + // 'trace_events', + // 'tty', + 'url', + 'util', + 'util/types', + 'v8', + // 'vm', + // 'worker_threads', + 'zlib', +])); + +const warnedModules = new SafeSet(); +function supportedInUserSnapshot(id) { + return supportedModules.has(id); +} + +function requireForUserSnapshot(id) { + if (!NativeModule.canBeRequiredByUsers(id)) { + // eslint-disable-next-line no-restricted-syntax + const err = new Error( + `Cannot find module '${id}'. ` + ); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + if (!supportedInUserSnapshot(id)) { + if (!warnedModules.has(id)) { + process.emitWarning( + `built-in module ${id} is not yet supported in user snapshots`); + warnedModules.add(id); + } + } + + return require(id); +} + +function main() { + const { + prepareMainThreadExecution + } = require('internal/bootstrap/pre_execution'); + + prepareMainThreadExecution(true, false); + + const file = process.argv[1]; + const path = require('path'); + const filename = path.resolve(file); + const dirname = path.dirname(filename); + const source = readFileSync(file, 'utf-8'); + const serializeMainFunction = compileSerializeMain(filename, source); + + require('internal/v8/startup_snapshot').initializeCallbacks(); + + if (getOptionValue('--inspect-brk')) { + internalBinding('inspector').callAndPauseOnStart( + serializeMainFunction, undefined, + requireForUserSnapshot, filename, dirname); + } else { + serializeMainFunction(requireForUserSnapshot, filename, dirname); + } +} + +main(); diff --git a/lib/internal/main/print_help.js b/lib/internal/main/print_help.js index 6aa422c657b2d0..a2cee4b0567649 100644 --- a/lib/internal/main/print_help.js +++ b/lib/internal/main/print_help.js @@ -8,11 +8,11 @@ const { MathMax, ObjectKeys, RegExp, + RegExpPrototypeSymbolReplace, StringPrototypeLocaleCompare, StringPrototypeSlice, StringPrototypeTrimLeft, StringPrototypeRepeat, - StringPrototypeReplace, SafeMap, } = primordials; @@ -77,14 +77,15 @@ const envVars = new SafeMap(ArrayPrototypeConcat([ function indent(text, depth) { - return StringPrototypeReplace(text, /^/gm, StringPrototypeRepeat(' ', depth)); + return RegExpPrototypeSymbolReplace(/^/gm, text, StringPrototypeRepeat(' ', depth)); } function fold(text, width) { - return StringPrototypeReplace(text, - new RegExp(`([^\n]{0,${width}})( |$)`, 'g'), - (_, newLine, end) => - newLine + (end === ' ' ? '\n' : '')); + return RegExpPrototypeSymbolReplace( + new RegExp(`([^\n]{0,${width}})( |$)`, 'g'), + text, + (_, newLine, end) => newLine + (end === ' ' ? '\n' : '') + ); } function getArgDescription(type) { diff --git a/lib/internal/main/test_runner.js b/lib/internal/main/test_runner.js new file mode 100644 index 00000000000000..c1066cfca35323 --- /dev/null +++ b/lib/internal/main/test_runner.js @@ -0,0 +1,146 @@ +'use strict'; +const { + ArrayFrom, + ArrayPrototypeFilter, + ArrayPrototypeIncludes, + ArrayPrototypeJoin, + ArrayPrototypePush, + ArrayPrototypeSlice, + ArrayPrototypeSort, + SafePromiseAll, + SafeSet, +} = primordials; +const { + prepareMainThreadExecution, +} = require('internal/bootstrap/pre_execution'); +const { spawn } = require('child_process'); +const { readdirSync, statSync } = require('fs'); +const console = require('internal/console/global'); +const { + codes: { + ERR_TEST_FAILURE, + }, +} = require('internal/errors'); +const { test } = require('internal/test_runner/harness'); +const { kSubtestsFailed } = require('internal/test_runner/test'); +const { + isSupportedFileType, + doesPathMatchFilter, +} = require('internal/test_runner/utils'); +const { basename, join, resolve } = require('path'); +const { once } = require('events'); +const kFilterArgs = ['--test']; + +prepareMainThreadExecution(false); +markBootstrapComplete(); + +// TODO(cjihrig): Replace this with recursive readdir once it lands. +function processPath(path, testFiles, options) { + const stats = statSync(path); + + if (stats.isFile()) { + if (options.userSupplied || + (options.underTestDir && isSupportedFileType(path)) || + doesPathMatchFilter(path)) { + testFiles.add(path); + } + } else if (stats.isDirectory()) { + const name = basename(path); + + if (!options.userSupplied && name === 'node_modules') { + return; + } + + // 'test' directories get special treatment. Recursively add all .js, + // .cjs, and .mjs files in the 'test' directory. + const isTestDir = name === 'test'; + const { underTestDir } = options; + const entries = readdirSync(path); + + if (isTestDir) { + options.underTestDir = true; + } + + options.userSupplied = false; + + for (let i = 0; i < entries.length; i++) { + processPath(join(path, entries[i]), testFiles, options); + } + + options.underTestDir = underTestDir; + } +} + +function createTestFileList() { + const cwd = process.cwd(); + const hasUserSuppliedPaths = process.argv.length > 1; + const testPaths = hasUserSuppliedPaths ? + ArrayPrototypeSlice(process.argv, 1) : [cwd]; + const testFiles = new SafeSet(); + + try { + for (let i = 0; i < testPaths.length; i++) { + const absolutePath = resolve(testPaths[i]); + + processPath(absolutePath, testFiles, { userSupplied: true }); + } + } catch (err) { + if (err?.code === 'ENOENT') { + console.error(`Could not find '${err.path}'`); + process.exit(1); + } + + throw err; + } + + return ArrayPrototypeSort(ArrayFrom(testFiles)); +} + +function filterExecArgv(arg) { + return !ArrayPrototypeIncludes(kFilterArgs, arg); +} + +function runTestFile(path) { + return test(path, async (t) => { + const args = ArrayPrototypeFilter(process.execArgv, filterExecArgv); + ArrayPrototypePush(args, path); + + const child = spawn(process.execPath, args, { signal: t.signal, encoding: 'utf8' }); + // TODO(cjihrig): Implement a TAP parser to read the child's stdout + // instead of just displaying it all if the child fails. + let err; + + child.on('error', (error) => { + err = error; + }); + + const { 0: { 0: code, 1: signal }, 1: stdout, 2: stderr } = await SafePromiseAll([ + once(child, 'exit', { signal: t.signal }), + child.stdout.toArray({ signal: t.signal }), + child.stderr.toArray({ signal: t.signal }), + ]); + + if (code !== 0 || signal !== null) { + if (!err) { + err = new ERR_TEST_FAILURE('test failed', kSubtestsFailed); + err.exitCode = code; + err.signal = signal; + err.stdout = ArrayPrototypeJoin(stdout, ''); + err.stderr = ArrayPrototypeJoin(stderr, ''); + // The stack will not be useful since the failures came from tests + // in a child process. + err.stack = undefined; + } + + throw err; + } + }); +} + +(async function main() { + const testFiles = createTestFileList(); + + for (let i = 0; i < testFiles.length; i++) { + runTestFile(testFiles[i]); + } +})(); diff --git a/lib/internal/main/worker_thread.js b/lib/internal/main/worker_thread.js index a8167b86ca2e5a..e21c1b1fe2cc7f 100644 --- a/lib/internal/main/worker_thread.js +++ b/lib/internal/main/worker_thread.js @@ -19,6 +19,7 @@ const { setupWarningHandler, setupFetch, setupWebCrypto, + setupCustomEvent, setupDebugEnv, setupPerfHooks, initializeDeprecations, @@ -71,6 +72,7 @@ setupDebugEnv(); setupWarningHandler(); setupFetch(); setupWebCrypto(); +setupCustomEvent(); initializeSourceMapsHandlers(); // Since worker threads cannot switch cwd, we do not need to @@ -90,11 +92,13 @@ const port = getEnvMessagePort(); if (process.env.NODE_CHANNEL_FD) { const workerThreadSetup = require('internal/process/worker_thread_only'); ObjectDefineProperty(process, 'channel', { + __proto__: null, enumerable: false, get: workerThreadSetup.unavailable('process.channel') }); ObjectDefineProperty(process, 'connected', { + __proto__: null, enumerable: false, get: workerThreadSetup.unavailable('process.connected') }); @@ -172,6 +176,7 @@ port.on('message', (message) => { // This is necessary for CJS module compilation. // TODO: pass this with something really internal. ObjectDefineProperty(process, '_eval', { + __proto__: null, configurable: true, enumerable: true, value: filename, diff --git a/lib/internal/modules/cjs/helpers.js b/lib/internal/modules/cjs/helpers.js index 3ae63b46195f75..ef4544ca0aaa52 100644 --- a/lib/internal/modules/cjs/helpers.js +++ b/lib/internal/modules/cjs/helpers.js @@ -171,6 +171,7 @@ function addBuiltinLibsToObject(object, dummyModuleName) { }; ObjectDefineProperty(object, name, { + __proto__: null, get: () => { const lib = dummyModule.require(name); @@ -178,6 +179,7 @@ function addBuiltinLibsToObject(object, dummyModuleName) { // non-enumerable property. delete object[name]; ObjectDefineProperty(object, name, { + __proto__: null, get: () => lib, set: setReal, configurable: true, diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index b4902850c7fec5..f1971c40a447b2 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -33,6 +33,7 @@ const { ArrayPrototypeSplice, ArrayPrototypeUnshift, ArrayPrototypeUnshiftApply, + ArrayPrototypeFlatMap, Boolean, Error, JSONParse, @@ -49,8 +50,8 @@ const { ReflectApply, ReflectSet, RegExpPrototypeExec, - RegExpPrototypeTest, SafeMap, + SafeSet, SafeWeakMap, String, StringPrototypeCharAt, @@ -58,7 +59,6 @@ const { StringPrototypeEndsWith, StringPrototypeLastIndexOf, StringPrototypeIndexOf, - StringPrototypeMatch, StringPrototypeRepeat, StringPrototypeSlice, StringPrototypeSplit, @@ -79,7 +79,7 @@ const { maybeCacheSourceMap, } = require('internal/source_map/source_map_cache'); const { pathToFileURL, fileURLToPath, isURLInstance } = require('internal/url'); -const { deprecate } = require('internal/util'); +const { deprecate, kEmptyObject } = require('internal/util'); const vm = require('vm'); const assert = require('internal/assert'); const fs = require('fs'); @@ -182,11 +182,17 @@ function Module(id = '', parent) { const builtinModules = []; for (const { 0: id, 1: mod } of NativeModule.map) { - if (mod.canBeRequiredByUsers) { + if (mod.canBeRequiredByUsers && + NativeModule.canBeRequiredWithoutScheme(id)) { ArrayPrototypePush(builtinModules, id); } } +const allBuiltins = new SafeSet( + ArrayPrototypeFlatMap(builtinModules, (bm) => [bm, `node:${bm}`]) +); +NativeModule.getSchemeOnlyModuleNames().forEach((builtin) => allBuiltins.add(`node:${builtin}`)); + ObjectFreeze(builtinModules); Module.builtinModules = builtinModules; @@ -209,6 +215,8 @@ const wrapper = [ ]; let wrapperProxy = new Proxy(wrapper, { + __proto__: null, + set(target, property, value, receiver) { patched = true; return ReflectSet(target, property, value, receiver); @@ -221,6 +229,7 @@ let wrapperProxy = new Proxy(wrapper, { }); ObjectDefineProperty(Module, 'wrap', { + __proto__: null, get() { return wrap; }, @@ -232,6 +241,7 @@ ObjectDefineProperty(Module, 'wrap', { }); ObjectDefineProperty(Module, 'wrapper', { + __proto__: null, get() { return wrapperProxy; }, @@ -255,6 +265,7 @@ function setModuleParent(value) { } ObjectDefineProperty(Module.prototype, 'parent', { + __proto__: null, get: pendingDeprecation ? deprecate( getModuleParent, 'module.parent is deprecated due to accuracy issues. Please use ' + @@ -472,7 +483,7 @@ const EXPORTS_PATTERN = /^((?:@[^/\\%]+\/)?[^./\\%][^/\\%]*)(\/.*)?$/; function resolveExports(nmPath, request) { // The implementation's behavior is meant to mirror resolution in ESM. const { 1: name, 2: expansion = '' } = - StringPrototypeMatch(request, EXPORTS_PATTERN) || []; + RegExpPrototypeExec(EXPORTS_PATTERN, request) || kEmptyObject; if (!name) return; const pkgPath = path.resolve(nmPath, name); @@ -509,7 +520,7 @@ Module._findPath = function(request, paths, isMain) { StringPrototypeCharCodeAt(request, request.length - 1) === CHAR_FORWARD_SLASH; if (!trailingSlash) { - trailingSlash = RegExpPrototypeTest(trailingSlashRegex, request); + trailingSlash = RegExpPrototypeExec(trailingSlashRegex, request) !== null; } // For each path @@ -665,7 +676,8 @@ if (isWindows) { } Module._resolveLookupPaths = function(request, parent) { - if (NativeModule.canBeRequiredByUsers(request)) { + if (NativeModule.canBeRequiredByUsers(request) && + NativeModule.canBeRequiredWithoutScheme(request)) { debug('looking for %j in []', request); return null; } @@ -713,6 +725,8 @@ function emitCircularRequireWarning(prop) { // A Proxy that can be used as the prototype of a module.exports object and // warns when non-existent properties are accessed. const CircularRequirePrototypeWarningProxy = new Proxy({}, { + __proto__: null, + get(target, prop) { // Allow __esModule access in any case because it is used in the output // of transpiled code to determine whether something comes from an @@ -775,19 +789,19 @@ Module._load = function(request, parent, isMain) { } } - const filename = Module._resolveFilename(request, parent, isMain); - if (StringPrototypeStartsWith(filename, 'node:')) { + if (StringPrototypeStartsWith(request, 'node:')) { // Slice 'node:' prefix - const id = StringPrototypeSlice(filename, 5); + const id = StringPrototypeSlice(request, 5); const module = loadNativeModule(id, request); if (!module?.canBeRequiredByUsers) { - throw new ERR_UNKNOWN_BUILTIN_MODULE(filename); + throw new ERR_UNKNOWN_BUILTIN_MODULE(request); } return module.exports; } + const filename = Module._resolveFilename(request, parent, isMain); const cachedModule = Module._cache[filename]; if (cachedModule !== undefined) { updateChildren(parent, cachedModule, true); @@ -802,7 +816,10 @@ Module._load = function(request, parent, isMain) { } const mod = loadNativeModule(filename, request); - if (mod?.canBeRequiredByUsers) return mod.exports; + if (mod?.canBeRequiredByUsers && + NativeModule.canBeRequiredWithoutScheme(filename)) { + return mod.exports; + } // Don't call updateChildren(), Module constructor already does. const module = cachedModule || new Module(filename, parent); @@ -846,8 +863,15 @@ Module._load = function(request, parent, isMain) { }; Module._resolveFilename = function(request, parent, isMain, options) { - if (StringPrototypeStartsWith(request, 'node:') || - NativeModule.canBeRequiredByUsers(request)) { + if ( + ( + StringPrototypeStartsWith(request, 'node:') && + NativeModule.canBeRequiredByUsers(StringPrototypeSlice(request, 5)) + ) || ( + NativeModule.canBeRequiredByUsers(request) && + NativeModule.canBeRequiredWithoutScheme(request) + ) + ) { return request; } @@ -887,20 +911,19 @@ Module._resolveFilename = function(request, parent, isMain, options) { paths = Module._resolveLookupPaths(request, parent); } - if (parent?.filename) { - if (request[0] === '#') { - const pkg = readPackageScope(parent.filename) || {}; - if (pkg.data?.imports != null) { - try { - return finalizeEsmResolution( - packageImportsResolve(request, pathToFileURL(parent.filename), - cjsConditions), request, parent.filename, - pkg.path); - } catch (e) { - if (e.code === 'ERR_MODULE_NOT_FOUND') - throw createEsmNotFoundErr(request); - throw e; - } + if (request[0] === '#' && (parent?.filename || parent?.id === '')) { + const parentPath = parent?.filename ?? process.cwd() + path.sep; + const pkg = readPackageScope(parentPath) || {}; + if (pkg.data?.imports != null) { + try { + return finalizeEsmResolution( + packageImportsResolve(request, pathToFileURL(parentPath), + cjsConditions), parentPath, request, + pkg.path); + } catch (e) { + if (e.code === 'ERR_MODULE_NOT_FOUND') + throw createEsmNotFoundErr(request); + throw e; } } } @@ -938,7 +961,7 @@ Module._resolveFilename = function(request, parent, isMain, options) { function finalizeEsmResolution(match, request, parentPath, pkgPath) { const { resolved, exact } = match; - if (RegExpPrototypeTest(encodedSepRegEx, resolved)) + if (RegExpPrototypeExec(encodedSepRegEx, resolved) !== null) throw new ERR_INVALID_MODULE_SPECIFIER( resolved, 'must not include encoded "/" or "\\" characters', parentPath); const filename = fileURLToPath(resolved); @@ -1023,8 +1046,7 @@ function wrapSafe(filename, content, cjsModuleInstance) { displayErrors: true, importModuleDynamically: async (specifier, _, importAssertions) => { const loader = asyncESM.esmLoader; - return loader.import(specifier, - loader.getBaseURL(normalizeReferrerURL(filename)), + return loader.import(specifier, normalizeReferrerURL(filename), importAssertions); }, }); @@ -1040,8 +1062,7 @@ function wrapSafe(filename, content, cjsModuleInstance) { filename, importModuleDynamically(specifier, _, importAssertions) { const loader = asyncESM.esmLoader; - return loader.import(specifier, - loader.getBaseURL(normalizeReferrerURL(filename)), + return loader.import(specifier, normalizeReferrerURL(filename), importAssertions); }, }); @@ -1285,11 +1306,16 @@ Module._preloadModules = function(requests) { Module.syncBuiltinESMExports = function syncBuiltinESMExports() { for (const mod of NativeModule.map.values()) { - if (mod.canBeRequiredByUsers) { + if (mod.canBeRequiredByUsers && + NativeModule.canBeRequiredWithoutScheme(mod.id)) { mod.syncExports(); } } }; +Module.isBuiltin = function isBuiltin(moduleName) { + return allBuiltins.has(moduleName); +}; + // Backwards compatibility Module.Module = Module; diff --git a/lib/internal/modules/esm/fetch_module.js b/lib/internal/modules/esm/fetch_module.js index 2cbc6ea72d0934..7638f94b3fe525 100644 --- a/lib/internal/modules/esm/fetch_module.js +++ b/lib/internal/modules/esm/fetch_module.js @@ -1,26 +1,24 @@ 'use strict'; const { - ArrayPrototypePush, - Promise, + ObjectPrototypeHasOwnProperty, PromisePrototypeThen, - PromiseResolve, SafeMap, StringPrototypeEndsWith, StringPrototypeSlice, StringPrototypeStartsWith, } = primordials; const { - Buffer: { - concat: BufferConcat - } + Buffer: { concat: BufferConcat }, } = require('buffer'); const { ERR_NETWORK_IMPORT_DISALLOWED, ERR_NETWORK_IMPORT_BAD_RESPONSE, + ERR_MODULE_NOT_FOUND, } = require('internal/errors').codes; const { URL } = require('internal/url'); const net = require('net'); - +const { once } = require('events'); +const { compose } = require('stream'); /** * @typedef CacheEntry * @property {Promise | string} resolvedHREF @@ -32,6 +30,9 @@ const net = require('net'); * Only for GET requests, other requests would need new Map * HTTP cache semantics keep diff caches * + * It caches either the promise or the cache entry since import.meta.url needs + * the value synchronously for the response location after all redirects. + * * Maps HREF to pending cache entry * @type {Map | CacheEntry>} */ @@ -47,11 +48,11 @@ let HTTPSAgent; function HTTPSGet(url, opts) { const https = require('https'); // [1] HTTPSAgent ??= new https.Agent({ // [2] - keepAlive: true + keepAlive: true, }); return https.get(url, { agent: HTTPSAgent, - ...opts + ...opts, }); } @@ -59,11 +60,11 @@ let HTTPAgent; function HTTPGet(url, opts) { const http = require('http'); // [1] HTTPAgent ??= new http.Agent({ // [2] - keepAlive: true + keepAlive: true, }); return http.get(url, { agent: HTTPAgent, - ...opts + ...opts, }); } @@ -88,6 +89,28 @@ function createUnzip() { return createUnzip(); } +/** + * Redirection status code as per section 6.4 of RFC 7231: + * https://datatracker.ietf.org/doc/html/rfc7231#section-6.4 + * and RFC 7238: + * https://datatracker.ietf.org/doc/html/rfc7238 + * @param {number} statusCode + * @returns {boolean} + */ +function isRedirect(statusCode) { + switch (statusCode) { + case 300: // Multiple Choices + case 301: // Moved Permanently + case 302: // Found + case 303: // See Other + case 307: // Temporary Redirect + case 308: // Permanent Redirect + return true; + default: + return false; + } +} + /** * @param {URL} parsed * @returns {Promise | CacheEntry} @@ -98,59 +121,48 @@ function fetchWithRedirects(parsed) { return existing; } const handler = parsed.protocol === 'http:' ? HTTPGet : HTTPSGet; - const result = new Promise((fulfill, reject) => { + const result = (async () => { const req = handler(parsed, { - headers: { - Accept: '*/*' - } - }) - .on('error', reject) - .on('response', (res) => { - function dispose() { - req.destroy(); - res.destroy(); - } - if (res.statusCode >= 300 && res.statusCode <= 303) { - if (res.headers.location) { - dispose(); - try { - const location = new URL(res.headers.location, parsed); - if (location.protocol !== 'http:' && - location.protocol !== 'https:') { - reject(new ERR_NETWORK_IMPORT_DISALLOWED( - res.headers.location, - parsed.href, - 'cannot redirect to non-network location')); - return; - } - return PromisePrototypeThen( - PromiseResolve(fetchWithRedirects(location)), - (entry) => { - cacheForGET.set(parsed.href, entry); - fulfill(entry); - }); - } catch (e) { - dispose(); - reject(e); - } + headers: { Accept: '*/*' }, + }); + // Note that `once` is used here to handle `error` and that it hits the + // `finally` on network error/timeout. + const { 0: res } = await once(req, 'response'); + try { + const hasLocation = ObjectPrototypeHasOwnProperty(res.headers, 'location'); + if (isRedirect(res.statusCode) && hasLocation) { + const location = new URL(res.headers.location, parsed); + if (location.protocol !== 'http:' && location.protocol !== 'https:') { + throw new ERR_NETWORK_IMPORT_DISALLOWED( + res.headers.location, + parsed.href, + 'cannot redirect to non-network location' + ); } + const entry = await fetchWithRedirects(location); + cacheForGET.set(parsed.href, entry); + return entry; } - if (res.statusCode > 303 || res.statusCode < 200) { - dispose(); - reject( - new ERR_NETWORK_IMPORT_BAD_RESPONSE( - parsed.href, - 'HTTP response returned status code of ' + res.statusCode)); - return; + if (res.statusCode === 404) { + const err = new ERR_MODULE_NOT_FOUND(parsed.href, null); + err.message = `Cannot find module '${parsed.href}', HTTP 404`; + throw err; + } + // This condition catches all unsupported status codes, including + // 3xx redirection codes without `Location` HTTP header. + if (res.statusCode < 200 || res.statusCode >= 300) { + throw new ERR_NETWORK_IMPORT_DISALLOWED( + res.headers.location, + parsed.href, + 'cannot redirect to non-network location'); } const { headers } = res; const contentType = headers['content-type']; if (!contentType) { - dispose(); - reject(new ERR_NETWORK_IMPORT_BAD_RESPONSE( + throw new ERR_NETWORK_IMPORT_BAD_RESPONSE( parsed.href, - 'the \'Content-Type\' header is required')); - return; + "the 'Content-Type' header is required" + ); } /** * @type {CacheEntry} @@ -158,58 +170,31 @@ function fetchWithRedirects(parsed) { const entry = { resolvedHREF: parsed.href, headers: { - 'content-type': res.headers['content-type'] + 'content-type': res.headers['content-type'], }, - body: new Promise((f, r) => { - const buffers = []; - let size = 0; + body: (async () => { let bodyStream = res; - let onError; if (res.headers['content-encoding'] === 'br') { - bodyStream = createBrotliDecompress(); - onError = function onError(error) { - bodyStream.close(); - dispose(); - reject(error); - r(error); - }; - res.on('error', onError); - res.pipe(bodyStream); - } else if (res.headers['content-encoding'] === 'gzip' || - res.headers['content-encoding'] === 'deflate') { - bodyStream = createUnzip(); - onError = function onError(error) { - bodyStream.close(); - dispose(); - reject(error); - r(error); - }; - res.on('error', onError); - res.pipe(bodyStream); - } else { - onError = function onError(error) { - dispose(); - reject(error); - r(error); - }; + bodyStream = compose(res, createBrotliDecompress()); + } else if ( + res.headers['content-encoding'] === 'gzip' || + res.headers['content-encoding'] === 'deflate' + ) { + bodyStream = compose(res, createUnzip()); } - bodyStream.on('error', onError); - bodyStream.on('data', (d) => { - ArrayPrototypePush(buffers, d); - size += d.length; - }); - bodyStream.on('end', () => { - const body = entry.body = /** @type {Buffer} */( - BufferConcat(buffers, size) - ); - f(body); - }); - }), + const buffers = await bodyStream.toArray(); + const body = BufferConcat(buffers); + entry.body = body; + return body; + })(), }; cacheForGET.set(parsed.href, entry); - fulfill(entry); - }); - }); + await entry.body; + return entry; + } finally { + req.destroy(); + } + })(); cacheForGET.set(parsed.href, result); return result; } @@ -226,8 +211,10 @@ allowList.addRange('127.0.0.1', '127.255.255.255'); */ async function isLocalAddress(hostname) { try { - if (StringPrototypeStartsWith(hostname, '[') && - StringPrototypeEndsWith(hostname, ']')) { + if ( + StringPrototypeStartsWith(hostname, '[') && + StringPrototypeEndsWith(hostname, ']') + ) { hostname = StringPrototypeSlice(hostname, 1, -1); } const addr = await dnsLookup(hostname, { verbatim: true }); @@ -275,5 +262,5 @@ function fetchModule(parsed, { parentURL }) { } module.exports = { - fetchModule: fetchModule + fetchModule, }; diff --git a/lib/internal/modules/esm/formats.js b/lib/internal/modules/esm/formats.js index f9da01402e7f62..f71e6ae689c277 100644 --- a/lib/internal/modules/esm/formats.js +++ b/lib/internal/modules/esm/formats.js @@ -1,7 +1,7 @@ 'use strict'; const { - RegExpPrototypeTest, + RegExpPrototypeExec, } = primordials; const { getOptionValue } = require('internal/options'); @@ -35,10 +35,10 @@ if (experimentalWasmModules) { */ function mimeToFormat(mime) { if ( - RegExpPrototypeTest( + RegExpPrototypeExec( /\s*(text|application)\/javascript\s*(;\s*charset=utf-?8\s*)?/i, mime - ) + ) !== null ) return 'module'; if (mime === 'application/json') return 'json'; if (experimentalWasmModules && mime === 'application/wasm') return 'wasm'; diff --git a/lib/internal/modules/esm/get_source.js b/lib/internal/modules/esm/get_source.js deleted file mode 100644 index ab2a9888f76fe7..00000000000000 --- a/lib/internal/modules/esm/get_source.js +++ /dev/null @@ -1,60 +0,0 @@ -'use strict'; - -const { - ArrayPrototypeConcat, - RegExpPrototypeExec, - decodeURIComponent, -} = primordials; -const { getOptionValue } = require('internal/options'); -const { fetchModule } = require('internal/modules/esm/fetch_module'); - -// Do not eagerly grab .manifest, it may be in TDZ -const policy = getOptionValue('--experimental-policy') ? - require('internal/process/policy') : - null; -const experimentalNetworkImports = - getOptionValue('--experimental-network-imports'); - -const { Buffer: { from: BufferFrom } } = require('buffer'); - -const fs = require('internal/fs/promises').exports; -const { URL } = require('internal/url'); -const { - ERR_INVALID_URL, - ERR_UNSUPPORTED_ESM_URL_SCHEME, -} = require('internal/errors').codes; -const readFileAsync = fs.readFile; - -const DATA_URL_PATTERN = /^[^/]+\/[^,;]+(?:[^,]*?)(;base64)?,([\s\S]*)$/; - -async function defaultGetSource(url, context, defaultGetSource) { - const parsed = new URL(url); - let source; - if (parsed.protocol === 'file:') { - source = await readFileAsync(parsed); - } else if (parsed.protocol === 'data:') { - const match = RegExpPrototypeExec(DATA_URL_PATTERN, parsed.pathname); - if (!match) { - throw new ERR_INVALID_URL(url); - } - const { 1: base64, 2: body } = match; - source = BufferFrom(decodeURIComponent(body), base64 ? 'base64' : 'utf8'); - } else if (experimentalNetworkImports && ( - parsed.protocol === 'https:' || - parsed.protocol === 'http:' - )) { - const res = await fetchModule(parsed, context); - source = await res.body; - } else { - throw new ERR_UNSUPPORTED_ESM_URL_SCHEME(parsed, ArrayPrototypeConcat([ - 'file', - 'data', - experimentalNetworkImports ? ['https', 'http'] : [], - ])); - } - if (policy?.manifest) { - policy.manifest.assertIntegrity(parsed, source); - } - return source; -} -exports.defaultGetSource = defaultGetSource; diff --git a/lib/internal/modules/esm/initialize_import_meta.js b/lib/internal/modules/esm/initialize_import_meta.js index f1daabbb6425aa..d6be06f23e1493 100644 --- a/lib/internal/modules/esm/initialize_import_meta.js +++ b/lib/internal/modules/esm/initialize_import_meta.js @@ -26,15 +26,13 @@ function createImportMetaResolve(defaultParentUrl) { * @param {{url: string}} context */ function initializeImportMeta(meta, context) { - let url = context.url; + const { url } = context; // Alphabetical if (experimentalImportMetaResolve) { meta.resolve = createImportMetaResolve(url); } - url = asyncESM.esmLoader.getBaseURL(url); - meta.url = url; } diff --git a/lib/internal/modules/esm/load.js b/lib/internal/modules/esm/load.js index 6defb598a2abf7..86b31830457240 100644 --- a/lib/internal/modules/esm/load.js +++ b/lib/internal/modules/esm/load.js @@ -1,8 +1,67 @@ 'use strict'; +const { + ArrayPrototypePush, + RegExpPrototypeExec, + decodeURIComponent, +} = primordials; + const { defaultGetFormat } = require('internal/modules/esm/get_format'); -const { defaultGetSource } = require('internal/modules/esm/get_source'); const { validateAssertions } = require('internal/modules/esm/assert'); +const { getOptionValue } = require('internal/options'); +const { fetchModule } = require('internal/modules/esm/fetch_module'); + +// Do not eagerly grab .manifest, it may be in TDZ +const policy = getOptionValue('--experimental-policy') ? + require('internal/process/policy') : + null; +const experimentalNetworkImports = + getOptionValue('--experimental-network-imports'); + +const { Buffer: { from: BufferFrom } } = require('buffer'); + +const { readFile: readFileAsync } = require('internal/fs/promises').exports; +const { URL } = require('internal/url'); +const { + ERR_INVALID_URL, + ERR_UNSUPPORTED_ESM_URL_SCHEME, +} = require('internal/errors').codes; + +const DATA_URL_PATTERN = /^[^/]+\/[^,;]+(?:[^,]*?)(;base64)?,([\s\S]*)$/; + +async function getSource(url, context) { + const parsed = new URL(url); + let responseURL = url; + let source; + if (parsed.protocol === 'file:') { + source = await readFileAsync(parsed); + } else if (parsed.protocol === 'data:') { + const match = RegExpPrototypeExec(DATA_URL_PATTERN, parsed.pathname); + if (!match) { + throw new ERR_INVALID_URL(url); + } + const { 1: base64, 2: body } = match; + source = BufferFrom(decodeURIComponent(body), base64 ? 'base64' : 'utf8'); + } else if (experimentalNetworkImports && ( + parsed.protocol === 'https:' || + parsed.protocol === 'http:' + )) { + const res = await fetchModule(parsed, context); + source = await res.body; + responseURL = res.resolvedHREF; + } else { + const supportedSchemes = ['file', 'data']; + if (experimentalNetworkImports) { + ArrayPrototypePush(supportedSchemes, 'http', 'https'); + } + throw new ERR_UNSUPPORTED_ESM_URL_SCHEME(parsed, supportedSchemes); + } + if (policy?.manifest) { + policy.manifest.assertIntegrity(parsed, source); + } + return { responseURL, source }; +} + /** * Node.js default load hook. @@ -11,6 +70,7 @@ const { validateAssertions } = require('internal/modules/esm/assert'); * @returns {object} */ async function defaultLoad(url, context) { + let responseURL = url; const { importAssertions } = context; let { format, @@ -29,11 +89,12 @@ async function defaultLoad(url, context) { ) { source = null; } else if (source == null) { - source = await defaultGetSource(url, context); + ({ responseURL, source } = await getSource(url, context)); } return { format, + responseURL, source, }; } diff --git a/lib/internal/modules/esm/loader.js b/lib/internal/modules/esm/loader.js index 16b832527f7c64..f2d5600fba657c 100644 --- a/lib/internal/modules/esm/loader.js +++ b/lib/internal/modules/esm/loader.js @@ -12,29 +12,37 @@ const { FunctionPrototypeCall, ObjectAssign, ObjectCreate, + ObjectDefineProperty, ObjectSetPrototypeOf, PromiseAll, RegExpPrototypeExec, SafeArrayIterator, SafeWeakMap, - StringPrototypeStartsWith, + StringPrototypeSlice, + StringPrototypeToUpperCase, globalThis, } = primordials; const { MessageChannel } = require('internal/worker/io'); const { + ERR_LOADER_CHAIN_INCOMPLETE, ERR_INTERNAL_ASSERTION, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_INVALID_RETURN_PROPERTY_VALUE, ERR_INVALID_RETURN_VALUE, - ERR_UNKNOWN_MODULE_FORMAT + ERR_UNKNOWN_MODULE_FORMAT, } = require('internal/errors').codes; const { pathToFileURL, isURLInstance, URL } = require('internal/url'); +const { emitExperimentalWarning } = require('internal/util'); const { isAnyArrayBuffer, isArrayBufferView, } = require('internal/util/types'); +const { + validateObject, + validateString, +} = require('internal/validators'); const ModuleMap = require('internal/modules/esm/module_map'); const ModuleJob = require('internal/modules/esm/module_job'); @@ -49,9 +57,123 @@ const { defaultLoad } = require('internal/modules/esm/load'); const { translators } = require( 'internal/modules/esm/translators'); const { getOptionValue } = require('internal/options'); -const { - fetchModule, -} = require('internal/modules/esm/fetch_module'); + +/** + * @typedef {object} ExportedHooks + * @property {Function} globalPreload + * @property {Function} resolve + * @property {Function} load + */ + +/** + * @typedef {Record} ModuleExports + */ + +/** + * @typedef {object} KeyedExports + * @property {ModuleExports} exports + * @property {URL['href']} url + */ + +/** + * @typedef {object} KeyedHook + * @property {Function} fn + * @property {URL['href']} url + */ + +/** + * @typedef {'builtin'|'commonjs'|'json'|'module'|'wasm'} ModuleFormat + */ + +/** + * @typedef {ArrayBuffer|TypedArray|string} ModuleSource + */ + +// [2] `validate...()`s throw the wrong error + +let emittedSpecifierResolutionWarning = false; + +/** + * A utility function to iterate through a hook chain, track advancement in the + * chain, and generate and supply the `next` argument to the custom + * hook. + * @param {KeyedHook[]} chain The whole hook chain. + * @param {object} meta Properties that change as the current hook advances + * along the chain. + * @param {boolean} meta.chainFinished Whether the end of the chain has been + * reached AND invoked. + * @param {string} meta.hookErrIdentifier A user-facing identifier to help + * pinpoint where an error occurred. Ex "file:///foo.mjs 'resolve'". + * @param {number} meta.hookIndex A non-negative integer tracking the current + * position in the hook chain. + * @param {string} meta.hookName The kind of hook the chain is (ex 'resolve') + * @param {boolean} meta.shortCircuited Whether a hook signaled a short-circuit. + * @param {(hookErrIdentifier, hookArgs) => void} validate A wrapper function + * containing all validation of a custom loader hook's intermediary output. Any + * validation within MUST throw. + * @returns {function next(...hookArgs)} The next hook in the chain. + */ +function nextHookFactory(chain, meta, { validateArgs, validateOutput }) { + // First, prepare the current + const { hookName } = meta; + const { + fn: hook, + url: hookFilePath, + } = chain[meta.hookIndex]; + + // ex 'nextResolve' + const nextHookName = `next${ + StringPrototypeToUpperCase(hookName[0]) + + StringPrototypeSlice(hookName, 1) + }`; + + // When hookIndex is 0, it's reached the default, which does not call next() + // so feed it a noop that blows up if called, so the problem is obvious. + const generatedHookIndex = meta.hookIndex; + let nextNextHook; + if (meta.hookIndex > 0) { + // Now, prepare the next: decrement the pointer so the next call to the + // factory generates the next link in the chain. + meta.hookIndex--; + + nextNextHook = nextHookFactory(chain, meta, { validateArgs, validateOutput }); + } else { + // eslint-disable-next-line func-name-matching + nextNextHook = function chainAdvancedTooFar() { + throw new ERR_INTERNAL_ASSERTION( + `ESM custom loader '${hookName}' advanced beyond the end of the chain.` + ); + }; + } + + return ObjectDefineProperty( + async (arg0 = undefined, context) => { + // Update only when hook is invoked to avoid fingering the wrong filePath + meta.hookErrIdentifier = `${hookFilePath} '${hookName}'`; + + validateArgs(`${meta.hookErrIdentifier} hook's ${nextHookName}()`, arg0, context); + + const outputErrIdentifier = `${chain[generatedHookIndex].url} '${hookName}' hook's ${nextHookName}()`; + + // Set when next is actually called, not just generated. + if (generatedHookIndex === 0) { meta.chainFinished = true; } + + if (context) { // `context` has already been validated, so no fancy check needed. + ObjectAssign(meta.context, context); + } + + const output = await hook(arg0, meta.context, nextNextHook); + + validateOutput(outputErrIdentifier, output); + + if (output?.shortCircuit === true) { meta.shortCircuited = true; } + return output; + + }, + 'name', + { __proto__: null, value: nextHookName }, + ); +} /** * An ESMLoader instance is used as the main entry point for loading ES modules. @@ -62,27 +184,35 @@ class ESMLoader { /** * Prior to ESM loading. These are called once before any modules are started. * @private - * @property {Function[]} globalPreloaders First-in-first-out list of - * preload hooks. + * @property {KeyedHook[]} globalPreloaders Last-in-first-out + * list of preload hooks. */ #globalPreloaders = []; /** * Phase 2 of 2 in ESM loading. * @private - * @property {Function[]} loaders First-in-first-out list of loader hooks. + * @property {KeyedHook[]} loaders Last-in-first-out + * collection of loader hooks. */ #loaders = [ - defaultLoad, + { + fn: defaultLoad, + url: 'node:internal/modules/esm/load', + }, ]; /** * Phase 1 of 2 in ESM loading. * @private - * @property {Function[]} resolvers First-in-first-out list of resolver hooks + * @property {KeyedHook[]} resolvers Last-in-first-out + * collection of resolver hooks. */ #resolvers = [ - defaultResolve, + { + fn: defaultResolve, + url: 'node:internal/modules/esm/resolve', + }, ]; #importMetaInitializer = initializeImportMeta; @@ -107,6 +237,30 @@ class ESMLoader { */ translators = translators; + constructor() { + if (getOptionValue('--experimental-loader').length > 0) { + emitExperimentalWarning('Custom ESM Loaders'); + } + if (getOptionValue('--experimental-network-imports')) { + emitExperimentalWarning('Network Imports'); + } + if ( + !emittedSpecifierResolutionWarning && + getOptionValue('--experimental-specifier-resolution') === 'node' + ) { + process.emitWarning( + 'The Node.js specifier resolution flag is experimental. It could change or be removed at any time.', + 'ExperimentalWarning' + ); + emittedSpecifierResolutionWarning = true; + } + } + + /** + * + * @param {ModuleExports} exports + * @returns {ExportedHooks} + */ static pluckHooks({ globalPreload, resolve, @@ -170,34 +324,51 @@ class ESMLoader { /** * Collect custom/user-defined hook(s). After all hooks have been collected, * calls global preload hook(s). - * @param {object | object[]} customLoaders A list of exports from - * user-defined loaders (as returned by ESMLoader.import()). + * @param {KeyedExports} customLoaders + * A list of exports from user-defined loaders (as returned by + * ESMLoader.import()). */ - async addCustomLoaders( + addCustomLoaders( customLoaders = [], ) { - if (!ArrayIsArray(customLoaders)) customLoaders = [customLoaders]; - for (let i = 0; i < customLoaders.length; i++) { - const exports = customLoaders[i]; + const { + exports, + url, + } = customLoaders[i]; const { globalPreloader, resolver, loader, } = ESMLoader.pluckHooks(exports); - if (globalPreloader) ArrayPrototypePush( - this.#globalPreloaders, - FunctionPrototypeBind(globalPreloader, null), // [1] - ); - if (resolver) ArrayPrototypePush( - this.#resolvers, - FunctionPrototypeBind(resolver, null), // [1] - ); - if (loader) ArrayPrototypePush( - this.#loaders, - FunctionPrototypeBind(loader, null), // [1] - ); + if (globalPreloader) { + ArrayPrototypePush( + this.#globalPreloaders, + { + fn: FunctionPrototypeBind(globalPreloader), // [1] + url, + }, + ); + } + if (resolver) { + ArrayPrototypePush( + this.#resolvers, + { + fn: FunctionPrototypeBind(resolver), // [1] + url, + }, + ); + } + if (loader) { + ArrayPrototypePush( + this.#loaders, + { + fn: FunctionPrototypeBind(loader), // [1] + url, + }, + ); + } } // [1] ensure hook function is not bound to ESMLoader instance @@ -214,9 +385,7 @@ class ESMLoader { const module = new ModuleWrap(url, undefined, source, 0, 0); callbackMap.set(module, { importModuleDynamically: (specifier, { url }, importAssertions) => { - return this.import(specifier, - this.getBaseURL(url), - importAssertions); + return this.import(specifier, url, importAssertions); } }); @@ -232,43 +401,6 @@ class ESMLoader { }; } - /** - * Returns the url to use for the resolution of a given cache key url - * These are not guaranteed to be the same. - * - * In WHATWG HTTP spec for ESM the cache key is the non-I/O bound - * synchronous resolution using only string operations - * ~= resolveImportMap(new URL(specifier, importerHREF)) - * - * The url used for subsequent resolution is the response URL after - * all redirects have been resolved. - * - * https://example.com/foo redirecting to https://example.com/bar - * would have a cache key of https://example.com/foo and baseURL - * of https://example.com/bar - * - * MUST BE SYNCHRONOUS for import.meta initialization - * MUST BE CALLED AFTER receiving the url body due to I/O - * @param {string} url - * @returns {string} - */ - getBaseURL(url) { - if ( - StringPrototypeStartsWith(url, 'http:') || - StringPrototypeStartsWith(url, 'https:') - ) { - // The request & response have already settled, so they are in - // fetchModule's cache, in which case, fetchModule returns - // immediately and synchronously - url = fetchModule(new URL(url), { parentURL: url }).resolvedHREF; - // This should only occur if the module hasn't been fetched yet - if (typeof url !== 'string') { - throw new ERR_INTERNAL_ASSERTION(`Base url for module ${url} not loaded.`); - } - } - return url; - } - /** * Get a (possibly still pending) module job from the cache, * or create one and return its Promise. @@ -284,12 +416,17 @@ class ESMLoader { */ async getModuleJob(specifier, parentURL, importAssertions) { let importAssertionsForResolve; + + // By default, `this.#loaders` contains just the Node default load hook if (this.#loaders.length !== 1) { - // We can skip cloning if there are no user provided loaders because + // We can skip cloning if there are no user-provided loaders because // the Node.js default resolve hook does not use import assertions. - importAssertionsForResolve = - ObjectAssign(ObjectCreate(null), importAssertions); + importAssertionsForResolve = ObjectAssign( + ObjectCreate(null), + importAssertions, + ); } + const { format, url } = await this.resolve(specifier, parentURL, importAssertionsForResolve); @@ -322,6 +459,7 @@ class ESMLoader { const moduleProvider = async (url, isMain) => { const { format: finalFormat, + responseURL, source, } = await this.load(url, { format, @@ -331,10 +469,10 @@ class ESMLoader { const translator = translators.get(finalFormat); if (!translator) { - throw new ERR_UNKNOWN_MODULE_FORMAT(finalFormat, url); + throw new ERR_UNKNOWN_MODULE_FORMAT(finalFormat, responseURL); } - return FunctionPrototypeCall(translator, this, url, source, isMain); + return FunctionPrototypeCall(translator, this, responseURL, source, isMain); }; const inspectBrk = ( @@ -367,11 +505,21 @@ class ESMLoader { * @param {string} parentURL Path of the parent importing the module. * @param {Record} importAssertions Validations for the * module import. - * @returns {Promise} A list of module export(s). + * @returns {Promise} + * A collection of module export(s) or a list of collections of module + * export(s). */ async import(specifiers, parentURL, importAssertions) { + // For loaders, `import` is passed multiple things to process, it returns a + // list pairing the url and exports collected. This is especially useful for + // error messaging, to identity from where an export came. But, in most + // cases, only a single url is being "imported" (ex `import()`), so there is + // only 1 possible url from which the exports were collected and it is + // already known to the caller. Nesting that in a list would only ever + // create redundant work for the caller, so it is later popped off the + // internal list. const wasArr = ArrayIsArray(specifiers); - if (!wasArr) specifiers = [specifiers]; + if (!wasArr) { specifiers = [specifiers]; } const count = specifiers.length; const jobs = new Array(count); @@ -384,40 +532,117 @@ class ESMLoader { const namespaces = await PromiseAll(new SafeArrayIterator(jobs)); - return wasArr ? - namespaces : - namespaces[0]; + if (!wasArr) { return namespaces[0]; } // We can skip the pairing below + + for (let i = 0; i < count; i++) { + const namespace = ObjectCreate(null); + namespace.url = specifiers[i]; + namespace.exports = namespaces[i]; + + namespaces[i] = namespace; + } + + return namespaces; } /** * Provide source that is understood by one of Node's translators. * - * The internals of this WILL change when chaining is implemented, - * depending on the resolution/consensus from #36954 - * @param {string} url The URL/path of the module to be loaded + * Internally, this behaves like a backwards iterator, wherein the stack of + * hooks starts at the top and each call to `nextLoad()` moves down 1 step + * until it reaches the bottom or short-circuits. + * + * @param {URL['href']} url The URL/path of the module to be loaded * @param {object} context Metadata about the module - * @returns {object} + * @returns {{ format: ModuleFormat, source: ModuleSource }} */ async load(url, context = {}) { - const defaultLoader = this.#loaders[0]; - - const loader = this.#loaders.length === 1 ? - defaultLoader : - this.#loaders[1]; - const loaded = await loader(url, context, defaultLoader); - - if (typeof loaded !== 'object') { - throw new ERR_INVALID_RETURN_VALUE( - 'object', - 'loader load', - loaded, - ); + const chain = this.#loaders; + const meta = { + chainFinished: null, + context, + hookErrIdentifier: '', + hookIndex: chain.length - 1, + hookName: 'load', + shortCircuited: false, + }; + + const validateArgs = (hookErrIdentifier, nextUrl, ctx) => { + if (typeof nextUrl !== 'string') { + // non-strings can be coerced to a url string + // validateString() throws a less-specific error + throw new ERR_INVALID_ARG_TYPE( + `${hookErrIdentifier} url`, + 'a url string', + nextUrl, + ); + } + + // Try to avoid expensive URL instantiation for known-good urls + if (!this.moduleMap.has(nextUrl)) { + try { + new URL(nextUrl); + } catch { + throw new ERR_INVALID_ARG_VALUE( + `${hookErrIdentifier} url`, + nextUrl, + 'should be a url string', + ); + } + } + + if (ctx) validateObject(ctx, `${hookErrIdentifier} context`); + }; + const validateOutput = (hookErrIdentifier, output) => { + if (typeof output !== 'object' || output === null) { // [2] + throw new ERR_INVALID_RETURN_VALUE( + 'an object', + hookErrIdentifier, + output, + ); + } + }; + + const nextLoad = nextHookFactory(chain, meta, { validateArgs, validateOutput }); + + const loaded = await nextLoad(url, context); + const { hookErrIdentifier } = meta; // Retrieve the value after all settled + + validateOutput(hookErrIdentifier, loaded); + + if (loaded?.shortCircuit === true) { meta.shortCircuited = true; } + + if (!meta.chainFinished && !meta.shortCircuited) { + throw new ERR_LOADER_CHAIN_INCOMPLETE(hookErrIdentifier); } const { format, source, } = loaded; + let responseURL = loaded.responseURL; + + if (responseURL === undefined) { + responseURL = url; + } + + let responseURLObj; + if (typeof responseURL === 'string') { + try { + responseURLObj = new URL(responseURL); + } catch { + // responseURLObj not defined will throw in next branch. + } + } + + if (responseURLObj?.href !== responseURL) { + throw new ERR_INVALID_RETURN_PROPERTY_VALUE( + 'undefined or a fully resolved URL string', + hookErrIdentifier, + 'responseURL', + responseURL, + ); + } if (format == null) { const dataUrl = RegExpPrototypeExec( @@ -430,10 +655,10 @@ class ESMLoader { url); } - if (typeof format !== 'string') { + if (typeof format !== 'string') { // [2] throw new ERR_INVALID_RETURN_PROPERTY_VALUE( - 'string', - 'loader resolve', + 'a string', + hookErrIdentifier, 'format', format, ); @@ -444,24 +669,24 @@ class ESMLoader { typeof source !== 'string' && !isAnyArrayBuffer(source) && !isArrayBufferView(source) - ) throw ERR_INVALID_RETURN_PROPERTY_VALUE( - 'string, an ArrayBuffer, or a TypedArray', - 'loader load', - 'source', - source - ); + ) { + throw ERR_INVALID_RETURN_PROPERTY_VALUE( + 'a string, an ArrayBuffer, or a TypedArray', + hookErrIdentifier, + 'source', + source + ); + } return { format, + responseURL, source, }; } preload() { - const count = this.#globalPreloaders.length; - if (!count) return; - - for (let i = 0; i < count; i++) { + for (let i = this.#globalPreloaders.length - 1; i >= 0; i--) { const channel = new MessageChannel(); const { port1: insidePreload, @@ -471,16 +696,23 @@ class ESMLoader { insidePreload.unref(); insideLoader.unref(); - const preload = this.#globalPreloaders[i]({ - port: insideLoader + const { + fn: preloader, + url: specifier, + } = this.#globalPreloaders[i]; + + const preload = preloader({ + port: insideLoader, }); - if (preload == null) return; + if (preload == null) { return; } + + const hookErrIdentifier = `${specifier} globalPreload`; - if (typeof preload !== 'string') { + if (typeof preload !== 'string') { // [2] throw new ERR_INVALID_RETURN_VALUE( - 'string', - 'loader globalPreloadCode', + 'a string', + hookErrIdentifier, preload, ); } @@ -510,7 +742,8 @@ class ESMLoader { globalThis, // Param getBuiltin (builtinName) => { - if (NativeModule.canBeRequiredByUsers(builtinName)) { + if (NativeModule.canBeRequiredByUsers(builtinName) && + NativeModule.canBeRequiredWithoutScheme(builtinName)) { return require(builtinName); } throw new ERR_INVALID_ARG_VALUE('builtinName', builtinName); @@ -544,14 +777,16 @@ class ESMLoader { /** * Resolve the location of the module. * - * The internals of this WILL change when chaining is implemented, - * depending on the resolution/consensus from #36954. + * Internally, this behaves like a backwards iterator, wherein the stack of + * hooks starts at the top and each call to `nextResolve()` moves down 1 step + * until it reaches the bottom or short-circuits. + * * @param {string} originalSpecifier The specified URL path of the module to * be resolved. * @param {string} [parentURL] The URL path of the module's parent. * @param {ImportAssertions} [importAssertions] Assertions from the import * statement or expression. - * @returns {{ url: string }} + * @returns {{ format: string, url: URL['href'] }} */ async resolve( originalSpecifier, @@ -564,61 +799,100 @@ class ESMLoader { !isMain && typeof parentURL !== 'string' && !isURLInstance(parentURL) - ) throw new ERR_INVALID_ARG_TYPE( - 'parentURL', - ['string', 'URL'], + ) { + throw new ERR_INVALID_ARG_TYPE( + 'parentURL', + ['string', 'URL'], + parentURL, + ); + } + const chain = this.#resolvers; + const context = { + conditions: DEFAULT_CONDITIONS, + importAssertions, parentURL, - ); + }; + const meta = { + chainFinished: null, + context, + hookErrIdentifier: '', + hookIndex: chain.length - 1, + hookName: 'resolve', + shortCircuited: false, + }; - const conditions = DEFAULT_CONDITIONS; + const validateArgs = (hookErrIdentifier, suppliedSpecifier, ctx) => { + validateString( + suppliedSpecifier, + `${hookErrIdentifier} specifier`, + ); // non-strings can be coerced to a url string - const defaultResolver = this.#resolvers[0]; + if (ctx) validateObject(ctx, `${hookErrIdentifier} context`); + }; + const validateOutput = (hookErrIdentifier, output) => { + if (typeof output !== 'object' || output === null) { // [2] + throw new ERR_INVALID_RETURN_VALUE( + 'an object', + hookErrIdentifier, + output, + ); + } + }; - const resolver = this.#resolvers.length === 1 ? - defaultResolver : - this.#resolvers[1]; - const resolution = await resolver( - originalSpecifier, - { - conditions, - importAssertions, - parentURL, - }, - defaultResolver, - ); + const nextResolve = nextHookFactory(chain, meta, { validateArgs, validateOutput }); - if (typeof resolution !== 'object') { - throw new ERR_INVALID_RETURN_VALUE( - 'object', - 'loader resolve', - resolution, - ); + const resolution = await nextResolve(originalSpecifier, context); + const { hookErrIdentifier } = meta; // Retrieve the value after all settled + + validateOutput(hookErrIdentifier, resolution); + + if (resolution?.shortCircuit === true) { meta.shortCircuited = true; } + + if (!meta.chainFinished && !meta.shortCircuited) { + throw new ERR_LOADER_CHAIN_INCOMPLETE(hookErrIdentifier); } - const { format, url } = resolution; + const { + format, + url, + } = resolution; if ( format != null && - typeof format !== 'string' + typeof format !== 'string' // [2] ) { throw new ERR_INVALID_RETURN_PROPERTY_VALUE( - 'string', - 'loader resolve', + 'a string', + hookErrIdentifier, 'format', format, ); } - if (typeof url !== 'string') { // non-strings can be coerced to a url string + if (typeof url !== 'string') { + // non-strings can be coerced to a url string + // validateString() throws a less-specific error throw new ERR_INVALID_RETURN_PROPERTY_VALUE( - 'string', - 'loader resolve', + 'a url string', + hookErrIdentifier, 'url', url, ); } - new URL(url); // Intentionally trigger error if `url` is invalid + // Try to avoid expensive URL instantiation for known-good urls + if (!this.moduleMap.has(url)) { + try { + new URL(url); + } catch { + throw new ERR_INVALID_RETURN_PROPERTY_VALUE( + 'a url string', + hookErrIdentifier, + 'url', + url, + ); + } + } return { format, diff --git a/lib/internal/modules/esm/module_job.js b/lib/internal/modules/esm/module_job.js index e012eebc4ac971..3a2ec7343a1d53 100644 --- a/lib/internal/modules/esm/module_job.js +++ b/lib/internal/modules/esm/module_job.js @@ -2,22 +2,19 @@ const { ArrayPrototypeJoin, - ArrayPrototypeMap, ArrayPrototypePush, ArrayPrototypeSome, FunctionPrototype, ObjectCreate, ObjectSetPrototypeOf, - PromiseAll, PromiseResolve, PromisePrototypeCatch, ReflectApply, - RegExpPrototypeTest, - SafeArrayIterator, + RegExpPrototypeExec, + RegExpPrototypeSymbolReplace, + SafePromiseAll, SafeSet, StringPrototypeIncludes, - StringPrototypeMatch, - StringPrototypeReplace, StringPrototypeSplit, StringPrototypeStartsWith, } = primordials; @@ -76,17 +73,16 @@ class ModuleJob { // these `link` callbacks depending on each other. const dependencyJobs = []; const promises = this.module.link(async (specifier, assertions) => { - const baseURL = this.loader.getBaseURL(url); - const jobPromise = this.loader.getModuleJob(specifier, baseURL, assertions); + const jobPromise = this.loader.getModuleJob(specifier, url, assertions); ArrayPrototypePush(dependencyJobs, jobPromise); const job = await jobPromise; return job.modulePromise; }); if (promises !== undefined) - await PromiseAll(new SafeArrayIterator(promises)); + await SafePromiseAll(promises); - return PromiseAll(new SafeArrayIterator(dependencyJobs)); + return SafePromiseAll(dependencyJobs); }; // Promise for the list of all dependencyJobs. this.linked = link(); @@ -114,8 +110,7 @@ class ModuleJob { } jobsInGraph.add(moduleJob); const dependencyJobs = await moduleJob.linked; - return PromiseAll(new SafeArrayIterator( - ArrayPrototypeMap(dependencyJobs, addJobsToDependencyGraph))); + return SafePromiseAll(dependencyJobs, addJobsToDependencyGraph); }; await addJobsToDependencyGraph(this); @@ -137,14 +132,14 @@ class ModuleJob { StringPrototypeIncludes(e.message, ' does not provide an export named')) { const splitStack = StringPrototypeSplit(e.stack, '\n'); - const parentFileUrl = StringPrototypeReplace( - splitStack[0], + const parentFileUrl = RegExpPrototypeSymbolReplace( /:\d+$/, + splitStack[0], '' ); - const { 1: childSpecifier, 2: name } = StringPrototypeMatch( - e.message, - /module '(.*)' does not provide an export named '(.+)'/); + const { 1: childSpecifier, 2: name } = RegExpPrototypeExec( + /module '(.*)' does not provide an export named '(.+)'/, + e.message); const { url: childFileURL } = await this.loader.resolve( childSpecifier, parentFileUrl, ); @@ -165,9 +160,9 @@ class ModuleJob { // line which causes the error. For multi-line import statements we // cannot generate an equivalent object destructuring assignment by // just parsing the error stack. - const oneLineNamedImports = StringPrototypeMatch(importStatement, /{.*}/); + const oneLineNamedImports = RegExpPrototypeExec(/{.*}/, importStatement); const destructuringAssignment = oneLineNamedImports && - StringPrototypeReplace(oneLineNamedImports, /\s+as\s+/g, ': '); + RegExpPrototypeSymbolReplace(/\s+as\s+/g, oneLineNamedImports, ': '); e.message = `Named export '${name}' not found. The requested module` + ` '${childSpecifier}' is a CommonJS module, which may not support` + ' all module.exports as named exports.\nCommonJS modules can ' + @@ -207,7 +202,7 @@ class ModuleJob { const packageConfig = StringPrototypeStartsWith(this.module.url, 'file://') && - RegExpPrototypeTest(/\.js(\?[^#]*)?(#.*)?$/, this.module.url) && + RegExpPrototypeExec(/\.js(\?[^#]*)?(#.*)?$/, this.module.url) !== null && require('internal/modules/esm/resolve') .getPackageScopeConfig(this.module.url); if (packageConfig.type === 'module') { diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js index 3576f75f0a40a6..fc5dcd6863dc35 100644 --- a/lib/internal/modules/esm/resolve.js +++ b/lib/internal/modules/esm/resolve.js @@ -13,7 +13,6 @@ const { RegExp, RegExpPrototypeExec, RegExpPrototypeSymbolReplace, - RegExpPrototypeTest, SafeMap, SafeSet, String, @@ -21,6 +20,7 @@ const { StringPrototypeIncludes, StringPrototypeIndexOf, StringPrototypeLastIndexOf, + StringPrototypeReplace, StringPrototypeSlice, StringPrototypeSplit, StringPrototypeStartsWith, @@ -387,7 +387,6 @@ function resolveDirectoryEntry(search) { } const encodedSepRegEx = /%2F|%5C/i; -let experimentalSpecifierResolutionWarned = false; /** * @param {URL} resolved * @param {string | URL | undefined} base @@ -395,20 +394,13 @@ let experimentalSpecifierResolutionWarned = false; * @returns {URL | undefined} */ function finalizeResolution(resolved, base, preserveSymlinks) { - if (RegExpPrototypeTest(encodedSepRegEx, resolved.pathname)) + if (RegExpPrototypeExec(encodedSepRegEx, resolved.pathname) !== null) throw new ERR_INVALID_MODULE_SPECIFIER( resolved.pathname, 'must not include encoded "/" or "\\" characters', fileURLToPath(base)); let path = fileURLToPath(resolved); if (getOptionValue('--experimental-specifier-resolution') === 'node') { - if (!experimentalSpecifierResolutionWarned) { - process.emitWarning( - 'The Node.js specifier resolution flag is experimental. It could change or be removed at any time.', - 'ExperimentalWarning'); - experimentalSpecifierResolutionWarned = true; - } - let file = resolveExtensionsWithTryExactName(resolved); // Directory @@ -531,7 +523,7 @@ function resolvePackageTargetString( throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); } - if (RegExpPrototypeTest(invalidSegmentRegEx, StringPrototypeSlice(target, 2))) + if (RegExpPrototypeExec(invalidSegmentRegEx, StringPrototypeSlice(target, 2)) !== null) throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); const resolved = new URL(target, packageJSONUrl); @@ -543,8 +535,11 @@ function resolvePackageTargetString( if (subpath === '') return resolved; - if (RegExpPrototypeTest(invalidSegmentRegEx, subpath)) - throwInvalidSubpath(match + subpath, packageJSONUrl, internal, base); + if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) { + const request = pattern ? + StringPrototypeReplace(match, '*', () => subpath) : match + subpath; + throwInvalidSubpath(request, packageJSONUrl, internal, base); + } if (pattern) { return new URL( @@ -895,8 +890,10 @@ function parsePackageName(specifier, base) { * @returns {URL} */ function packageResolve(specifier, base, conditions) { - if (NativeModule.canBeRequiredByUsers(specifier)) + if (NativeModule.canBeRequiredByUsers(specifier) && + NativeModule.canBeRequiredWithoutScheme(specifier)) { return new URL('node:' + specifier); + } const { packageName, packageSubpath, isScoped } = parsePackageName(specifier, base); @@ -1058,8 +1055,6 @@ function resolveAsCommonJS(specifier, parentURL) { // TODO(@JakobJingleheimer): de-dupe `specifier` & `parsed` function checkIfDisallowedImport(specifier, parsed, parsedParentURL) { if (parsedParentURL) { - const parentURL = fileURLToPath(parsedParentURL?.href); - if ( parsedParentURL.protocol === 'http:' || parsedParentURL.protocol === 'https:' @@ -1073,24 +1068,25 @@ function checkIfDisallowedImport(specifier, parsed, parsedParentURL) { ) { throw new ERR_NETWORK_IMPORT_DISALLOWED( specifier, - parentURL, + parsedParentURL, 'remote imports cannot import from a local location.' ); } return { url: parsed.href }; } - if (NativeModule.canBeRequiredByUsers(specifier)) { + if (NativeModule.canBeRequiredByUsers(specifier) && + NativeModule.canBeRequiredWithoutScheme(specifier)) { throw new ERR_NETWORK_IMPORT_DISALLOWED( specifier, - parentURL, + parsedParentURL, 'remote imports cannot import from a local location.' ); } throw new ERR_NETWORK_IMPORT_DISALLOWED( specifier, - parentURL, + parsedParentURL, 'only relative and absolute specifiers are supported.' ); } @@ -1125,7 +1121,7 @@ function throwIfUnsupportedURLScheme(parsed, experimentalNetworkImports) { } } -async function defaultResolve(specifier, context = {}, defaultResolveUnused) { +async function defaultResolve(specifier, context = {}) { let { parentURL, conditions } = context; if (parentURL && policy?.manifest) { const redirects = policy.manifest.getDependencyMapper(parentURL); @@ -1271,7 +1267,7 @@ if (policy) { specifier, context ) { - const ret = await $defaultResolve(specifier, context, $defaultResolve); + const ret = await $defaultResolve(specifier, context); // This is a preflight check to avoid data exfiltration by query params etc. policy.manifest.mightAllow(ret.url, () => new ERR_MANIFEST_DEPENDENCY_MISSING( diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js index d7f4c7edec63d3..8fb3c96f8dc4c5 100644 --- a/lib/internal/modules/esm/translators.js +++ b/lib/internal/modules/esm/translators.js @@ -61,8 +61,12 @@ async function initCJSParse() { } else { const { parse, init } = require('internal/deps/cjs-module-lexer/dist/lexer'); - await init(); - cjsParse = parse; + try { + await init(); + cjsParse = parse; + } catch { + cjsParse = require('internal/deps/cjs-module-lexer/lexer').parse; + } } } @@ -103,9 +107,7 @@ function errPath(url) { } async function importModuleDynamically(specifier, { url }, assertions) { - return asyncESM.esmLoader.import(specifier, - asyncESM.esmLoader.getBaseURL(url), - assertions); + return asyncESM.esmLoader.import(specifier, url, assertions); } // Strategy for loading a standard JavaScript module. @@ -116,9 +118,7 @@ translators.set('module', async function moduleStrategy(url, source, isMain) { debug(`Translating StandardModule ${url}`); const module = new ModuleWrap(url, undefined, source, 0, 0); moduleWrap.callbackMap.set(module, { - initializeImportMeta: (meta, wrap) => this.importMetaInitialize(meta, { - url: wrap.url - }), + initializeImportMeta: (meta, wrap) => this.importMetaInitialize(meta, { url }), importModuleDynamically, }); return module; diff --git a/lib/internal/modules/run_main.js b/lib/internal/modules/run_main.js index 924c4836bb2aa2..5a50d5d6afab6e 100644 --- a/lib/internal/modules/run_main.js +++ b/lib/internal/modules/run_main.js @@ -28,8 +28,12 @@ function resolveMainPath(main) { } function shouldUseESMLoader(mainPath) { - const userLoader = getOptionValue('--experimental-loader'); - if (userLoader) + /** + * @type {string[]} userLoaders A list of custom loaders registered by the user + * (or an empty list when none have been registered). + */ + const userLoaders = getOptionValue('--experimental-loader'); + if (userLoaders.length > 0) return true; const esModuleSpecifierResolution = getOptionValue('--experimental-specifier-resolution'); diff --git a/lib/internal/options.js b/lib/internal/options.js index 01b334d4ec5614..4d92ad681a1207 100644 --- a/lib/internal/options.js +++ b/lib/internal/options.js @@ -36,6 +36,11 @@ function getEmbedderOptions() { return embedderOptions; } +function refreshOptions() { + optionsMap = undefined; + aliasesMap = undefined; +} + function getOptionValue(optionName) { const options = getCLIOptionsFromBinding(); if (optionName.startsWith('--no-')) { @@ -68,5 +73,6 @@ module.exports = { }, getOptionValue, getAllowUnauthorized, - getEmbedderOptions + getEmbedderOptions, + refreshOptions }; diff --git a/lib/internal/per_context/domexception.js b/lib/internal/per_context/domexception.js index 06bb3fa3053cd5..444e055dc86f74 100644 --- a/lib/internal/per_context/domexception.js +++ b/lib/internal/per_context/domexception.js @@ -1,23 +1,44 @@ 'use strict'; const { - Error, + ErrorCaptureStackTrace, + ErrorPrototype, ObjectDefineProperties, ObjectDefineProperty, + ObjectSetPrototypeOf, SafeWeakMap, SafeMap, + SafeSet, SymbolToStringTag, TypeError, } = primordials; -class ERR_INVALID_THIS extends TypeError { - constructor(type) { - super('Value of "this" must be of ' + type); - } - - get code() { return 'ERR_INVALID_THIS'; } +function throwInvalidThisError(Base, type) { + const err = new Base(); + const key = 'ERR_INVALID_THIS'; + ObjectDefineProperties(err, { + message: { + __proto__: null, + value: `Value of "this" must be of ${type}`, + enumerable: false, + writable: true, + configurable: true, + }, + toString: { + __proto__: null, + value() { + return `${this.name} [${key}]: ${this.message}`; + }, + enumerable: false, + writable: true, + configurable: true, + }, + }); + err.code = key; + throw err; } +let disusedNamesSet; let internalsMap; let nameToCodeMap; let isInitialized = false; @@ -34,13 +55,21 @@ function ensureInitialized() { forEachCode((name, codeName, value) => { nameToCodeMap.set(name, value); }); + + // These were removed from the error names table. + // See https://github.com/heycam/webidl/pull/946. + disusedNamesSet = new SafeSet() + .add('DOMStringSizeError') + .add('NoDataAllowedError') + .add('ValidationError'); + isInitialized = true; } -class DOMException extends Error { +class DOMException { constructor(message = '', name = 'Error') { ensureInitialized(); - super(); + ErrorCaptureStackTrace(this); internalsMap.set(this, { message: `${message}`, name: `${name}` @@ -51,7 +80,7 @@ class DOMException extends Error { ensureInitialized(); const internals = internalsMap.get(this); if (internals === undefined) { - throw new ERR_INVALID_THIS('DOMException'); + throwInvalidThisError(TypeError, 'DOMException'); } return internals.name; } @@ -60,7 +89,7 @@ class DOMException extends Error { ensureInitialized(); const internals = internalsMap.get(this); if (internals === undefined) { - throw new ERR_INVALID_THIS('DOMException'); + throwInvalidThisError(TypeError, 'DOMException'); } return internals.message; } @@ -69,18 +98,24 @@ class DOMException extends Error { ensureInitialized(); const internals = internalsMap.get(this); if (internals === undefined) { - throw new ERR_INVALID_THIS('DOMException'); + throwInvalidThisError(TypeError, 'DOMException'); + } + + if (disusedNamesSet.has(internals.name)) { + return 0; } + const code = nameToCodeMap.get(internals.name); return code === undefined ? 0 : code; } } +ObjectSetPrototypeOf(DOMException.prototype, ErrorPrototype); ObjectDefineProperties(DOMException.prototype, { - [SymbolToStringTag]: { configurable: true, value: 'DOMException' }, - name: { enumerable: true, configurable: true }, - message: { enumerable: true, configurable: true }, - code: { enumerable: true, configurable: true } + [SymbolToStringTag]: { __proto__: null, configurable: true, value: 'DOMException' }, + name: { __proto__: null, enumerable: true, configurable: true }, + message: { __proto__: null, enumerable: true, configurable: true }, + code: { __proto__: null, enumerable: true, configurable: true } }); function forEachCode(fn) { diff --git a/lib/internal/per_context/primordials.js b/lib/internal/per_context/primordials.js index 7d9368e678cc96..7c6f513d9ccebd 100644 --- a/lib/internal/per_context/primordials.js +++ b/lib/internal/per_context/primordials.js @@ -57,11 +57,13 @@ function getNewKey(key) { function copyAccessor(dest, prefix, key, { enumerable, get, set }) { ReflectDefineProperty(dest, `${prefix}Get${key}`, { + __proto__: null, value: uncurryThis(get), enumerable }); if (set !== undefined) { ReflectDefineProperty(dest, `${prefix}Set${key}`, { + __proto__: null, value: uncurryThis(set), enumerable }); @@ -76,9 +78,10 @@ function copyPropsRenamed(src, dest, prefix) { copyAccessor(dest, prefix, newKey, desc); } else { const name = `${prefix}${newKey}`; - ReflectDefineProperty(dest, name, desc); + ReflectDefineProperty(dest, name, { __proto__: null, ...desc }); if (varargsMethods.includes(name)) { ReflectDefineProperty(dest, `${name}Apply`, { + __proto__: null, // `src` is bound as the `this` so that the static `this` points // to the object it was defined on, // e.g.: `ArrayOfApply` gets a `this` of `Array`: @@ -102,9 +105,10 @@ function copyPropsRenamedBound(src, dest, prefix) { } const name = `${prefix}${newKey}`; - ReflectDefineProperty(dest, name, desc); + ReflectDefineProperty(dest, name, { __proto__: null, ...desc }); if (varargsMethods.includes(name)) { ReflectDefineProperty(dest, `${name}Apply`, { + __proto__: null, value: applyBind(value, src), }); } @@ -125,9 +129,10 @@ function copyPrototype(src, dest, prefix) { } const name = `${prefix}${newKey}`; - ReflectDefineProperty(dest, name, desc); + ReflectDefineProperty(dest, name, { __proto__: null, ...desc }); if (varargsMethods.includes(name)) { ReflectDefineProperty(dest, `${name}Apply`, { + __proto__: null, value: applyBind(value), }); } @@ -257,6 +262,7 @@ function copyPrototype(src, dest, prefix) { const { ArrayPrototypeForEach, + ArrayPrototypeMap, FinalizationRegistry, FunctionPrototypeCall, Map, @@ -307,7 +313,7 @@ const copyProps = (src, dest) => { ReflectDefineProperty( dest, key, - ReflectGetOwnPropertyDescriptor(src, key)); + { __proto__: null, ...ReflectGetOwnPropertyDescriptor(src, key) }); } }); }; @@ -335,7 +341,7 @@ const makeSafe = (unsafe, safe) => { return new SafeIterator(this); }; } - ReflectDefineProperty(safe.prototype, key, desc); + ReflectDefineProperty(safe.prototype, key, { __proto__: null, ...desc }); } }); } else { @@ -429,5 +435,63 @@ primordials.AsyncIteratorPrototype = primordials.ReflectGetPrototypeOf( async function* () {}).prototype); +const arrayToSafePromiseIterable = (promises, mapFn) => + new primordials.SafeArrayIterator( + ArrayPrototypeMap( + promises, + (promise, i) => + new SafePromise((a, b) => PromisePrototypeThen(mapFn == null ? promise : mapFn(promise, i), a, b)) + ) + ); + +/** + * @param {Promise[]} promises + * @param {(v: Promise, k: number) => Promise} [mapFn] + * @returns {Promise} + */ +primordials.SafePromiseAll = (promises, mapFn) => + // Wrapping on a new Promise is necessary to not expose the SafePromise + // prototype to user-land. + new Promise((a, b) => + SafePromise.all(arrayToSafePromiseIterable(promises, mapFn)).then(a, b) + ); + +/** + * @param {Promise[]} promises + * @param {(v: Promise, k: number) => Promise} [mapFn] + * @returns {Promise[]>} + */ +primordials.SafePromiseAllSettled = (promises, mapFn) => + // Wrapping on a new Promise is necessary to not expose the SafePromise + // prototype to user-land. + new Promise((a, b) => + SafePromise.allSettled(arrayToSafePromiseIterable(promises, mapFn)).then(a, b) + ); + +/** + * @param {Promise[]} promises + * @param {(v: Promise, k: number) => Promise} [mapFn] + * @returns {Promise} + */ +primordials.SafePromiseAny = (promises, mapFn) => + // Wrapping on a new Promise is necessary to not expose the SafePromise + // prototype to user-land. + new Promise((a, b) => + SafePromise.any(arrayToSafePromiseIterable(promises, mapFn)).then(a, b) + ); + +/** + * @param {Promise[]} promises + * @param {(v: Promise, k: number) => Promise} [mapFn] + * @returns {Promise} + */ +primordials.SafePromiseRace = (promises, mapFn) => + // Wrapping on a new Promise is necessary to not expose the SafePromise + // prototype to user-land. + new Promise((a, b) => + SafePromise.race(arrayToSafePromiseIterable(promises, mapFn)).then(a, b) + ); + + ObjectSetPrototypeOf(primordials, null); ObjectFreeze(primordials); diff --git a/lib/internal/perf/event_loop_delay.js b/lib/internal/perf/event_loop_delay.js index efd45f4ed77349..18d7967477e0e4 100644 --- a/lib/internal/perf/event_loop_delay.js +++ b/lib/internal/perf/event_loop_delay.js @@ -27,6 +27,10 @@ const { kMap, } = require('internal/histogram'); +const { + kEmptyObject, +} = require('internal/util'); + const { makeTransferable, } = require('internal/worker/js_transferable'); @@ -69,7 +73,7 @@ class ELDHistogram extends Histogram { * }} [options] * @returns {ELDHistogram} */ -function monitorEventLoopDelay(options = {}) { +function monitorEventLoopDelay(options = kEmptyObject) { validateObject(options, 'options'); const { resolution = 10 } = options; diff --git a/lib/internal/perf/nodetiming.js b/lib/internal/perf/nodetiming.js index fcbd7efff49099..b0ab9df4473d63 100644 --- a/lib/internal/perf/nodetiming.js +++ b/lib/internal/perf/nodetiming.js @@ -34,30 +34,35 @@ class PerformanceNodeTiming { constructor() { ObjectDefineProperties(this, { name: { + __proto__: null, enumerable: true, configurable: true, value: 'node' }, entryType: { + __proto__: null, enumerable: true, configurable: true, value: 'node' }, startTime: { + __proto__: null, enumerable: true, configurable: true, value: 0 }, duration: { + __proto__: null, enumerable: true, configurable: true, get: now }, nodeStart: { + __proto__: null, enumerable: true, configurable: true, get() { @@ -66,6 +71,7 @@ class PerformanceNodeTiming { }, v8Start: { + __proto__: null, enumerable: true, configurable: true, get() { @@ -74,6 +80,7 @@ class PerformanceNodeTiming { }, environment: { + __proto__: null, enumerable: true, configurable: true, get() { @@ -82,6 +89,7 @@ class PerformanceNodeTiming { }, loopStart: { + __proto__: null, enumerable: true, configurable: true, get() { @@ -90,6 +98,7 @@ class PerformanceNodeTiming { }, loopExit: { + __proto__: null, enumerable: true, configurable: true, get() { @@ -98,6 +107,7 @@ class PerformanceNodeTiming { }, bootstrapComplete: { + __proto__: null, enumerable: true, configurable: true, get() { @@ -107,6 +117,7 @@ class PerformanceNodeTiming { }, idleTime: { + __proto__: null, enumerable: true, configurable: true, get: loopIdleTime, diff --git a/lib/internal/perf/observe.js b/lib/internal/perf/observe.js index 37c389e1497fe4..2404a750c0e12e 100644 --- a/lib/internal/perf/observe.js +++ b/lib/internal/perf/observe.js @@ -24,6 +24,8 @@ const { NODE_PERFORMANCE_ENTRY_TYPE_GC, NODE_PERFORMANCE_ENTRY_TYPE_HTTP2, NODE_PERFORMANCE_ENTRY_TYPE_HTTP, + NODE_PERFORMANCE_ENTRY_TYPE_NET, + NODE_PERFORMANCE_ENTRY_TYPE_DNS, }, installGarbageCollectionTracking, observerCounts, @@ -53,6 +55,7 @@ const { customInspectSymbol: kInspect, deprecate, lazyDOMException, + kEmptyObject, } = require('internal/util'); const { @@ -61,6 +64,8 @@ const { const { inspect } = require('util'); +const { now } = require('internal/perf/utils'); + const kBuffer = Symbol('kBuffer'); const kCallback = Symbol('kCallback'); const kDispatch = Symbol('kDispatch'); @@ -79,21 +84,26 @@ const kTypeMultiple = 1; let gcTrackingInstalled = false; const kSupportedEntryTypes = ObjectFreeze([ + 'dns', 'function', 'gc', 'http', 'http2', 'mark', 'measure', + 'net', + 'resource', ]); // Performance timeline entry Buffers let markEntryBuffer = []; let measureEntryBuffer = []; +let resourceTimingBuffer = []; const kMaxPerformanceEntryBuffers = 1e6; const kClearPerformanceEntryBuffers = ObjectFreeze({ 'mark': 'performance.clearMarks', 'measure': 'performance.clearMeasures', + 'resource': 'performance.clearResourceTimings', }); const kWarnedEntryTypes = new SafeMap(); @@ -118,6 +128,8 @@ function getObserverType(type) { case 'gc': return NODE_PERFORMANCE_ENTRY_TYPE_GC; case 'http2': return NODE_PERFORMANCE_ENTRY_TYPE_HTTP2; case 'http': return NODE_PERFORMANCE_ENTRY_TYPE_HTTP; + case 'net': return NODE_PERFORMANCE_ENTRY_TYPE_NET; + case 'dns': return NODE_PERFORMANCE_ENTRY_TYPE_DNS; } } @@ -204,7 +216,7 @@ class PerformanceObserver { this[kCallback] = callback; } - observe(options = {}) { + observe(options = kEmptyObject) { validateObject(options, 'options'); const { entryTypes, @@ -337,6 +349,8 @@ function enqueue(entry) { buffer = markEntryBuffer; } else if (entryType === 'measure') { buffer = measureEntryBuffer; + } else if (entryType === 'resource') { + buffer = resourceTimingBuffer; } else { return; } @@ -362,16 +376,19 @@ function enqueue(entry) { } function clearEntriesFromBuffer(type, name) { - if (type !== 'mark' && type !== 'measure') { + if (type !== 'mark' && type !== 'measure' && type !== 'resource') { return; } if (type === 'mark') { markEntryBuffer = name === undefined ? [] : ArrayPrototypeFilter(markEntryBuffer, (entry) => entry.name !== name); - } else { + } else if (type === 'measure') { measureEntryBuffer = name === undefined ? [] : ArrayPrototypeFilter(measureEntryBuffer, (entry) => entry.name !== name); + } else { + resourceTimingBuffer = name === undefined ? + [] : ArrayPrototypeFilter(resourceTimingBuffer, (entry) => entry.name !== name); } } @@ -381,11 +398,13 @@ function filterBufferMapByNameAndType(name, type) { bufferList = markEntryBuffer; } else if (type === 'measure') { bufferList = measureEntryBuffer; + } else if (type === 'resource') { + bufferList = resourceTimingBuffer; } else if (type !== undefined) { // Unrecognized type; return []; } else { - bufferList = ArrayPrototypeConcat(markEntryBuffer, measureEntryBuffer); + bufferList = ArrayPrototypeConcat(markEntryBuffer, measureEntryBuffer, resourceTimingBuffer); } if (name !== undefined) { bufferList = ArrayPrototypeFilter(bufferList, (buffer) => buffer.name === name); @@ -443,6 +462,30 @@ function hasObserver(type) { return observerCounts[observerType] > 0; } + +function startPerf(target, key, context = {}) { + target[key] = { + ...context, + startTime: now(), + }; +} + +function stopPerf(target, key, context = {}) { + const ctx = target[key]; + if (!ctx) { + return; + } + const startTime = ctx.startTime; + const entry = new InternalPerformanceEntry( + ctx.name, + ctx.type, + startTime, + now() - startTime, + { ...ctx.detail, ...context.detail }, + ); + enqueue(entry); +} + module.exports = { PerformanceObserver, PerformanceObserverEntryList, @@ -450,4 +493,6 @@ module.exports = { hasObserver, clearEntriesFromBuffer, filterBufferMapByNameAndType, + startPerf, + stopPerf, }; diff --git a/lib/internal/perf/performance.js b/lib/internal/perf/performance.js index 20603fa382e702..26a80f51cf66c4 100644 --- a/lib/internal/perf/performance.js +++ b/lib/internal/perf/performance.js @@ -19,6 +19,8 @@ const { const { now } = require('internal/perf/utils'); +const { markResourceTiming } = require('internal/perf/resource_timing'); + const { mark, measure, @@ -82,6 +84,13 @@ function clearMeasures(name) { clearEntriesFromBuffer('measure', name); } +function clearResourceTimings(name) { + if (name !== undefined) { + name = `${name}`; + } + clearEntriesFromBuffer('resource', name); +} + function getEntries() { return filterBufferMapByNameAndType(); } @@ -108,56 +117,81 @@ ObjectSetPrototypeOf(InternalPerformance.prototype, Performance.prototype); ObjectDefineProperties(Performance.prototype, { clearMarks: { + __proto__: null, configurable: true, enumerable: false, value: clearMarks, }, clearMeasures: { + __proto__: null, configurable: true, enumerable: false, value: clearMeasures, }, + clearResourceTimings: { + __proto__: null, + configurable: true, + enumerable: false, + value: clearResourceTimings, + }, eventLoopUtilization: { + __proto__: null, configurable: true, enumerable: false, value: eventLoopUtilization, }, getEntries: { + __proto__: null, configurable: true, enumerable: false, value: getEntries, }, getEntriesByName: { + __proto__: null, configurable: true, enumerable: false, value: getEntriesByName, }, getEntriesByType: { + __proto__: null, configurable: true, enumerable: false, value: getEntriesByType, }, mark: { + __proto__: null, configurable: true, enumerable: false, value: mark, }, measure: { + __proto__: null, configurable: true, enumerable: false, value: measure, }, nodeTiming: { + __proto__: null, configurable: true, enumerable: false, value: nodeTiming, }, + // In the browser, this function is not public. However, it must be used inside fetch + // which is a Node.js dependency, not a internal module + markResourceTiming: { + __proto__: null, + configurable: true, + enumerable: false, + value: markResourceTiming, + }, now: { + __proto__: null, configurable: true, enumerable: false, value: now, }, timerify: { + __proto__: null, configurable: true, enumerable: false, value: timerify, @@ -167,11 +201,13 @@ ObjectDefineProperties(Performance.prototype, { // TODO(joyeecheung): we may want to warn about access to // this during snapshot building. timeOrigin: { + __proto__: null, configurable: true, enumerable: true, value: getTimeOriginTimestamp(), }, toJSON: { + __proto__: null, configurable: true, enumerable: true, value: toJSON, @@ -180,6 +216,7 @@ ObjectDefineProperties(Performance.prototype, { function refreshTimeOrigin() { ObjectDefineProperty(Performance.prototype, 'timeOrigin', { + __proto__: null, configurable: true, enumerable: true, value: getTimeOriginTimestamp(), diff --git a/lib/internal/perf/resource_timing.js b/lib/internal/perf/resource_timing.js new file mode 100644 index 00000000000000..63403bf0ac405a --- /dev/null +++ b/lib/internal/perf/resource_timing.js @@ -0,0 +1,183 @@ +'use strict'; +// https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming + +const { InternalPerformanceEntry } = require('internal/perf/performance_entry'); +const { SymbolToStringTag } = primordials; +const assert = require('internal/assert'); +const { enqueue } = require('internal/perf/observe'); +const { Symbol, ObjectSetPrototypeOf } = primordials; + +const kCacheMode = Symbol('kCacheMode'); +const kRequestedUrl = Symbol('kRequestedUrl'); +const kTimingInfo = Symbol('kTimingInfo'); +const kInitiatorType = Symbol('kInitiatorType'); + +const { + codes: { + ERR_ILLEGAL_CONSTRUCTOR, + } +} = require('internal/errors'); + +class InternalPerformanceResourceTiming extends InternalPerformanceEntry { + constructor(requestedUrl, initiatorType, timingInfo, cacheMode = '') { + super(requestedUrl, 'resource'); + this[kInitiatorType] = initiatorType; + this[kRequestedUrl] = requestedUrl; + // https://fetch.spec.whatwg.org/#fetch-timing-info + // This class is using timingInfo assuming it's already validated. + // The spec doesn't say to validate it in the class construction. + this[kTimingInfo] = timingInfo; + this[kCacheMode] = cacheMode; + } + + get [SymbolToStringTag]() { + return 'PerformanceResourceTiming'; + } + + get name() { + return this[kRequestedUrl]; + } + + get startTime() { + return this[kTimingInfo].startTime; + } + + get duration() { + return this[kTimingInfo].endTime - this[kTimingInfo].startTime; + } + + get initiatorType() { + return this[kInitiatorType]; + } + + get workerStart() { + return this[kTimingInfo].finalServiceWorkerStartTime; + } + + get redirectStart() { + return this[kTimingInfo].redirectStartTime; + } + + get redirectEnd() { + return this[kTimingInfo].redirectEndTime; + } + + get fetchStart() { + return this[kTimingInfo].postRedirectStartTime; + } + + get domainLookupStart() { + return this[kTimingInfo].finalConnectionTimingInfo?.domainLookupStartTime; + } + + get domainLookupEnd() { + return this[kTimingInfo].finalConnectionTimingInfo?.domainLookupEndTime; + } + + get connectStart() { + return this[kTimingInfo].finalConnectionTimingInfo?.connectionStartTime; + } + + get connectEnd() { + return this[kTimingInfo].finalConnectionTimingInfo?.connectionEndTime; + } + + get secureConnectionStart() { + return this[kTimingInfo] + .finalConnectionTimingInfo?.secureConnectionStartTime; + } + + get nextHopProtocol() { + return this[kTimingInfo] + .finalConnectionTimingInfo?.ALPNNegotiatedProtocol; + } + + get requestStart() { + return this[kTimingInfo].finalNetworkRequestStartTime; + } + + get responseStart() { + return this[kTimingInfo].finalNetworkResponseStartTime; + } + + get responseEnd() { + return this[kTimingInfo].endTime; + } + + get encodedBodySize() { + return this[kTimingInfo].encodedBodySize; + } + + get decodedBodySize() { + return this[kTimingInfo].decodedBodySize; + } + + get transferSize() { + if (this[kCacheMode] === 'local') return 0; + if (this[kCacheMode] === 'validated') return 300; + + return this[kTimingInfo].encodedBodySize + 300; + } + + toJSON() { + return { + name: this.name, + entryType: this.entryType, + startTime: this.startTime, + duration: this.duration, + initiatorType: this[kInitiatorType], + nextHopProtocol: this.nextHopProtocol, + workerStart: this.workerStart, + redirectStart: this.redirectStart, + redirectEnd: this.redirectEnd, + fetchStart: this.fetchStart, + domainLookupStart: this.domainLookupStart, + domainLookupEnd: this.domainLookupEnd, + connectStart: this.connectStart, + connectEnd: this.connectEnd, + secureConnectionStart: this.secureConnectionStart, + requestStart: this.requestStart, + responseStart: this.responseStart, + responseEnd: this.responseEnd, + transferSize: this.transferSize, + encodedBodySize: this.encodedBodySize, + decodedBodySize: this.decodedBodySize, + }; + } +} + +class PerformanceResourceTiming extends InternalPerformanceResourceTiming { + constructor() { + throw new ERR_ILLEGAL_CONSTRUCTOR(); + } +} + +// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing +function markResourceTiming( + timingInfo, + requestedUrl, + initiatorType, + global, + cacheMode, +) { + // https://w3c.github.io/resource-timing/#dfn-setup-the-resource-timing-entry + assert( + cacheMode === '' || cacheMode === 'local', + 'cache must be an empty string or \'local\'', + ); + const resource = new InternalPerformanceResourceTiming( + requestedUrl, + initiatorType, + timingInfo, + cacheMode, + ); + + ObjectSetPrototypeOf(resource, PerformanceResourceTiming.prototype); + enqueue(resource); + return resource; +} + +module.exports = { + PerformanceResourceTiming, + markResourceTiming, +}; diff --git a/lib/internal/perf/timerify.js b/lib/internal/perf/timerify.js index dae0b06bf80c8a..e4c97e70353977 100644 --- a/lib/internal/perf/timerify.js +++ b/lib/internal/perf/timerify.js @@ -6,7 +6,6 @@ const { MathCeil, ReflectApply, ReflectConstruct, - Symbol, } = primordials; const { InternalPerformanceEntry } = require('internal/perf/performance_entry'); @@ -21,10 +20,6 @@ const { isHistogram } = require('internal/histogram'); -const { - isConstructor, -} = internalBinding('util'); - const { codes: { ERR_INVALID_ARG_TYPE, @@ -35,7 +30,9 @@ const { enqueue, } = require('internal/perf/observe'); -const kTimerified = Symbol('kTimerified'); +const { + kEmptyObject, +} = require('internal/util'); function processComplete(name, start, args, histogram) { const duration = now() - start; @@ -55,7 +52,7 @@ function processComplete(name, start, args, histogram) { enqueue(entry); } -function timerify(fn, options = {}) { +function timerify(fn, options = kEmptyObject) { validateFunction(fn, 'fn'); validateObject(options, 'options'); @@ -71,16 +68,13 @@ function timerify(fn, options = {}) { histogram); } - if (fn[kTimerified]) return fn[kTimerified]; - - const constructor = isConstructor(fn); - function timerified(...args) { + const isConstructorCall = new.target !== undefined; const start = now(); - const result = constructor ? + const result = isConstructorCall ? ReflectConstruct(fn, args, fn) : ReflectApply(fn, this, args); - if (!constructor && typeof result?.finally === 'function') { + if (!isConstructorCall && typeof result?.finally === 'function') { return result.finally( FunctionPrototypeBind( processComplete, @@ -95,31 +89,20 @@ function timerify(fn, options = {}) { } ObjectDefineProperties(timerified, { - [kTimerified]: { - configurable: false, - enumerable: false, - value: timerified, - }, length: { + __proto__: null, configurable: false, enumerable: true, value: fn.length, }, name: { + __proto__: null, configurable: false, enumerable: true, value: `timerified ${fn.name}` } }); - ObjectDefineProperties(fn, { - [kTimerified]: { - configurable: false, - enumerable: false, - value: timerified, - } - }); - return timerified; } diff --git a/lib/internal/perf/usertiming.js b/lib/internal/perf/usertiming.js index 496c75deb3b78f..5762d256d97e62 100644 --- a/lib/internal/perf/usertiming.js +++ b/lib/internal/perf/usertiming.js @@ -26,7 +26,11 @@ const { }, } = require('internal/errors'); -const { structuredClone, lazyDOMException } = require('internal/util'); +const { + kEmptyObject, + lazyDOMException, + structuredClone, +} = require('internal/util'); const markTimings = new SafeMap(); @@ -60,7 +64,7 @@ class PerformanceMark extends InternalPerformanceEntry { name = `${name}`; if (nodeTimingReadOnlyAttributes.has(name)) throw new ERR_INVALID_ARG_VALUE('name', name); - options ??= {}; + options ??= kEmptyObject; validateObject(options, 'options'); const startTime = options.startTime ?? now(); validateNumber(startTime, 'startTime'); @@ -90,7 +94,7 @@ class PerformanceMeasure extends InternalPerformanceEntry { } } -function mark(name, options = {}) { +function mark(name, options = kEmptyObject) { const mark = new PerformanceMark(name, options); enqueue(mark); return mark; diff --git a/lib/internal/policy/manifest.js b/lib/internal/policy/manifest.js index a0cd9707a2c7d5..062e1ba219bbe8 100644 --- a/lib/internal/policy/manifest.js +++ b/lib/internal/policy/manifest.js @@ -10,12 +10,11 @@ const { ObjectKeys, ObjectSetPrototypeOf, RegExpPrototypeExec, - RegExpPrototypeTest, SafeMap, SafeSet, + RegExpPrototypeSymbolReplace, StringPrototypeEndsWith, StringPrototypeStartsWith, - StringPrototypeReplace, Symbol, uncurryThis, } = primordials; @@ -202,7 +201,7 @@ class DependencyMapperInstance { let ret; if (parsedURLs && parsedURLs.has(to)) { ret = parsedURLs.get(to); - } else if (RegExpPrototypeTest(kRelativeURLStringPattern, to)) { + } else if (RegExpPrototypeExec(kRelativeURLStringPattern, to) !== null) { ret = resolve(to, manifest.href); } else { ret = resolve(to); @@ -301,7 +300,7 @@ function findScopeHREF(href, scopeStore, allowSame) { if (href !== '') { // default URL parser does some stuff to special urls... skip if this is // just the protocol - if (RegExpPrototypeTest(/^[^:]*[:]$/, href)) { + if (RegExpPrototypeExec(/^[^:]*[:]$/, href) !== null) { protocol = href; } else { let currentURL = new URL(href); @@ -669,7 +668,7 @@ module.exports = ObjectFreeze({ Manifest }); */ function canonicalizeSpecifier(specifier, base) { try { - if (RegExpPrototypeTest(kRelativeURLStringPattern, specifier)) { + if (RegExpPrototypeExec(kRelativeURLStringPattern, specifier) !== null) { return resolve(specifier, base).href; } return resolve(specifier).href; @@ -690,13 +689,13 @@ const emptyOrProtocolOrResolve = (resourceHREF, base) => { if (resourceHREF === '') return ''; if (StringPrototypeEndsWith(resourceHREF, ':')) { // URL parse will trim these anyway, save the compute - resourceHREF = StringPrototypeReplace( - resourceHREF, + resourceHREF = RegExpPrototypeSymbolReplace( // eslint-disable-next-line /^[\x00-\x1F\x20]|\x09\x0A\x0D|[\x00-\x1F\x20]$/g, + resourceHREF, '' ); - if (RegExpPrototypeTest(/^[a-zA-Z][a-zA-Z+\-.]*:$/, resourceHREF)) { + if (RegExpPrototypeExec(/^[a-zA-Z][a-zA-Z+\-.]*:$/, resourceHREF) !== null) { return resourceHREF; } } @@ -718,7 +717,7 @@ const resolve = (originalHREF, base) => { parsedURLs = parsedURLs ?? new SafeMap(); if (parsedURLs.has(originalHREF)) { return parsedURLs.get(originalHREF); - } else if (RegExpPrototypeTest(kRelativeURLStringPattern, originalHREF)) { + } else if (RegExpPrototypeExec(kRelativeURLStringPattern, originalHREF) !== null) { const resourceURL = new URL(originalHREF, base); parsedURLs.set(resourceURL.href, resourceURL); return resourceURL; diff --git a/lib/internal/policy/sri.js b/lib/internal/policy/sri.js index 22704704a310bc..72f7798ce4f333 100644 --- a/lib/internal/policy/sri.js +++ b/lib/internal/policy/sri.js @@ -10,7 +10,6 @@ const { ObjectSetPrototypeOf, RegExp, RegExpPrototypeExec, - RegExpPrototypeTest, StringPrototypeSlice, } = primordials; @@ -48,6 +47,7 @@ const parse = (str) => { // Avoid setters being fired ObjectDefineProperty(entries, entries.length, { + __proto__: null, enumerable: true, configurable: true, value: ObjectFreeze({ @@ -61,7 +61,7 @@ const parse = (str) => { } if (prevIndex !== str.length) { - if (!RegExpPrototypeTest(kAllWSP, StringPrototypeSlice(str, prevIndex))) { + if (RegExpPrototypeExec(kAllWSP, StringPrototypeSlice(str, prevIndex)) === null) { throw new ERR_SRI_PARSE(str, str[prevIndex], prevIndex); } } diff --git a/lib/internal/process/esm_loader.js b/lib/internal/process/esm_loader.js index 73385a85b4e106..eeb6ad77a7ec88 100644 --- a/lib/internal/process/esm_loader.js +++ b/lib/internal/process/esm_loader.js @@ -40,23 +40,24 @@ async function importModuleDynamicallyCallback(wrap, specifier, assertions) { }; const esmLoader = new ESMLoader(); - exports.esmLoader = esmLoader; +// Module.runMain() causes loadESM() to re-run (which it should do); however, this should NOT cause +// ESM to be re-initialised; doing so causes duplicate custom loaders to be added to the public +// esmLoader. +let isESMInitialized = false; + /** * Causes side-effects: user-defined loader hooks are added to esmLoader. * @returns {void} */ async function initializeLoader() { + if (isESMInitialized) { return; } + const { getOptionValue } = require('internal/options'); - // customLoaders CURRENTLY can be only 1 (a string) - // Once chaining is implemented, it will be string[] const customLoaders = getOptionValue('--experimental-loader'); - if (!customLoaders.length) return; - - const { emitExperimentalWarning } = require('internal/util'); - emitExperimentalWarning('--experimental-loader'); + if (customLoaders.length === 0) return; let cwd; try { @@ -71,7 +72,7 @@ async function initializeLoader() { const internalEsmLoader = new ESMLoader(); // Importation must be handled by internal loader to avoid poluting userland - const exports = await internalEsmLoader.import( + const keyedExportsList = await internalEsmLoader.import( customLoaders, pathToFileURL(cwd).href, ObjectCreate(null), @@ -79,7 +80,9 @@ async function initializeLoader() { // Hooks must then be added to external/public loader // (so they're triggered in userland) - await esmLoader.addCustomLoaders(exports); + await esmLoader.addCustomLoaders(keyedExportsList); + + isESMInitialized = true; } exports.loadESM = async function loadESM(callback) { diff --git a/lib/internal/process/per_thread.js b/lib/internal/process/per_thread.js index 709bcb7b137639..c2be274659e6c7 100644 --- a/lib/internal/process/per_thread.js +++ b/lib/internal/process/per_thread.js @@ -15,8 +15,9 @@ const { Float64Array, NumberMAX_SAFE_INTEGER, ObjectFreeze, + ObjectDefineProperty, ReflectApply, - RegExpPrototypeTest, + RegExpPrototypeExec, SafeArrayIterator, Set, SetPrototypeEntries, @@ -339,7 +340,7 @@ function buildAllowedFlags() { // not. if (typeof key === 'string') { key = StringPrototypeReplace(key, replaceUnderscoresRegex, '-'); - if (RegExpPrototypeTest(leadingDashesRegex, key)) { + if (RegExpPrototypeExec(leadingDashesRegex, key) !== null) { key = StringPrototypeReplace(key, trailingValuesRegex, ''); return ArrayPrototypeIncludes(this[kInternal].array, key); } @@ -371,9 +372,15 @@ function buildAllowedFlags() { return SetPrototypeValues(this[kInternal].set); } } - NodeEnvironmentFlagsSet.prototype.keys = - NodeEnvironmentFlagsSet.prototype[SymbolIterator] = - NodeEnvironmentFlagsSet.prototype.values; + const flagSetValues = NodeEnvironmentFlagsSet.prototype.values; + ObjectDefineProperty(NodeEnvironmentFlagsSet.prototype, SymbolIterator, { + __proto__: null, + value: flagSetValues, + }); + ObjectDefineProperty(NodeEnvironmentFlagsSet.prototype, 'keys', { + __proto__: null, + value: flagSetValues, + }); ObjectFreeze(NodeEnvironmentFlagsSet.prototype.constructor); ObjectFreeze(NodeEnvironmentFlagsSet.prototype); diff --git a/lib/internal/process/promises.js b/lib/internal/process/promises.js index fd5cb73fbbe4bb..00a81c014e1353 100644 --- a/lib/internal/process/promises.js +++ b/lib/internal/process/promises.js @@ -311,6 +311,7 @@ function getErrorWithoutStack(name, message) { const err = new Error(message); if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = tmp; ObjectDefineProperty(err, 'name', { + __proto__: null, value: name, enumerable: false, writable: true, diff --git a/lib/internal/promise_hooks.js b/lib/internal/promise_hooks.js index be70879cbcbb93..0938a86d06407b 100644 --- a/lib/internal/promise_hooks.js +++ b/lib/internal/promise_hooks.js @@ -11,6 +11,7 @@ const { const { setPromiseHooks } = internalBinding('async_wrap'); const { triggerUncaughtException } = internalBinding('errors'); +const { kEmptyObject } = require('internal/util'); const { validatePlainFunction } = require('internal/validators'); const hooks = { @@ -101,7 +102,7 @@ const onBefore = makeUseHook('before'); const onAfter = makeUseHook('after'); const onSettled = makeUseHook('settled'); -function createHook({ init, before, after, settled } = {}) { +function createHook({ init, before, after, settled } = kEmptyObject) { const hooks = []; if (init) ArrayPrototypePush(hooks, onInit(init)); diff --git a/lib/internal/readline/interface.js b/lib/internal/readline/interface.js index e50172f5628ccc..1431ae792825cf 100644 --- a/lib/internal/readline/interface.js +++ b/lib/internal/readline/interface.js @@ -19,12 +19,12 @@ const { NumberIsFinite, NumberIsNaN, ObjectSetPrototypeOf, - RegExpPrototypeTest, + RegExpPrototypeExec, + RegExpPrototypeSymbolReplace, + RegExpPrototypeSymbolSplit, StringPrototypeCodePointAt, StringPrototypeEndsWith, - StringPrototypeMatch, StringPrototypeRepeat, - StringPrototypeReplace, StringPrototypeSlice, StringPrototypeSplit, StringPrototypeStartsWith, @@ -43,6 +43,7 @@ const { validateString, validateUint32, } = require('internal/validators'); +const { kEmptyObject } = require('internal/util'); const { inspect, getStringWidth, @@ -550,12 +551,12 @@ class Interface extends InterfaceConstructor { this[kSawReturnAt] && DateNow() - this[kSawReturnAt] <= this.crlfDelay ) { - string = StringPrototypeReplace(string, /^\n/, ''); + string = RegExpPrototypeSymbolReplace(/^\n/, string, ''); this[kSawReturnAt] = 0; } // Run test() on the new string chunk, not on the entire line buffer. - const newPartContainsEnding = RegExpPrototypeTest(lineEnding, string); + const newPartContainsEnding = RegExpPrototypeExec(lineEnding, string) !== null; if (this[kLine_buffer]) { string = this[kLine_buffer] + string; @@ -693,7 +694,7 @@ class Interface extends InterfaceConstructor { ArrayPrototypeReverse(ArrayFrom(leading)), '' ); - const match = StringPrototypeMatch(reversed, /^\s*(?:[^\w\s]+|\w+)?/); + const match = RegExpPrototypeExec(/^\s*(?:[^\w\s]+|\w+)?/, reversed); this[kMoveCursor](-match[0].length); } } @@ -701,7 +702,7 @@ class Interface extends InterfaceConstructor { [kWordRight]() { if (this.cursor < this.line.length) { const trailing = StringPrototypeSlice(this.line, this.cursor); - const match = StringPrototypeMatch(trailing, /^(?:\s+|[^\w\s]+|\w+)\s*/); + const match = RegExpPrototypeExec(/^(?:\s+|[^\w\s]+|\w+)\s*/, trailing); this[kMoveCursor](match[0].length); } } @@ -743,7 +744,7 @@ class Interface extends InterfaceConstructor { ArrayPrototypeReverse(ArrayFrom(leading)), '' ); - const match = StringPrototypeMatch(reversed, /^\s*(?:[^\w\s]+|\w+)?/); + const match = RegExpPrototypeExec(/^\s*(?:[^\w\s]+|\w+)?/, reversed); leading = StringPrototypeSlice( leading, 0, @@ -760,7 +761,7 @@ class Interface extends InterfaceConstructor { [kDeleteWordRight]() { if (this.cursor < this.line.length) { const trailing = StringPrototypeSlice(this.line, this.cursor); - const match = StringPrototypeMatch(trailing, /^(?:\s+|\W+|\w+)\s*/); + const match = RegExpPrototypeExec(/^(?:\s+|\W+|\w+)\s*/, trailing); this.line = StringPrototypeSlice(this.line, 0, this.cursor) + StringPrototypeSlice(trailing, match[0].length); @@ -922,7 +923,7 @@ class Interface extends InterfaceConstructor { // Handle a write from the tty [kTtyWrite](s, key) { const previousKey = this[kPreviousKey]; - key = key || {}; + key = key || kEmptyObject; this[kPreviousKey] = key; // Activate or deactivate substring search. @@ -1163,7 +1164,7 @@ class Interface extends InterfaceConstructor { // falls through default: if (typeof s === 'string' && s) { - const lines = StringPrototypeSplit(s, /\r\n|\n|\r/); + const lines = RegExpPrototypeSymbolSplit(/\r\n|\n|\r/, s); for (let i = 0, len = lines.length; i < len; i++) { if (i > 0) { this[kLine](); diff --git a/lib/internal/readline/utils.js b/lib/internal/readline/utils.js index 55b3e07b4c1782..83609b71fb5974 100644 --- a/lib/internal/readline/utils.js +++ b/lib/internal/readline/utils.js @@ -3,11 +3,10 @@ const { ArrayPrototypeSlice, ArrayPrototypeSort, - RegExpPrototypeTest, + RegExpPrototypeExec, StringFromCharCode, StringPrototypeCharCodeAt, StringPrototypeCodePointAt, - StringPrototypeMatch, StringPrototypeSlice, StringPrototypeToLowerCase, Symbol, @@ -190,11 +189,11 @@ function* emitKeys(stream) { const cmd = StringPrototypeSlice(s, cmdStart); let match; - if ((match = StringPrototypeMatch(cmd, /^(\d\d?)(;(\d))?([~^$])$/))) { + if ((match = RegExpPrototypeExec(/^(\d\d?)(;(\d))?([~^$])$/, cmd))) { code += match[1] + match[4]; modifier = (match[3] || 1) - 1; } else if ( - (match = StringPrototypeMatch(cmd, /^((\d;)?(\d))?([A-Za-z])$/)) + (match = RegExpPrototypeExec(/^((\d;)?(\d))?([A-Za-z])$/, cmd)) ) { code += match[4]; modifier = (match[3] || 1) - 1; @@ -340,10 +339,10 @@ function* emitKeys(stream) { StringPrototypeCharCodeAt(ch) + StringPrototypeCharCodeAt('a') - 1 ); key.ctrl = true; - } else if (RegExpPrototypeTest(/^[0-9A-Za-z]$/, ch)) { + } else if (RegExpPrototypeExec(/^[0-9A-Za-z]$/, ch) !== null) { // Letter, number, shift+letter key.name = StringPrototypeToLowerCase(ch); - key.shift = RegExpPrototypeTest(/^[A-Z]$/, ch); + key.shift = RegExpPrototypeExec(/^[A-Z]$/, ch) !== null; key.meta = escaped; } else if (escaped) { // Escape sequence timeout @@ -366,6 +365,9 @@ function* emitKeys(stream) { // This runs in O(n log n). function commonPrefix(strings) { + if (strings.length === 0) { + return ''; + } if (strings.length === 1) { return strings[0]; } diff --git a/lib/internal/repl/await.js b/lib/internal/repl/await.js index ec1d0c8823e107..c53ffce581e37b 100644 --- a/lib/internal/repl/await.js +++ b/lib/internal/repl/await.js @@ -237,8 +237,16 @@ function processTopLevelAwait(src) { // semicolon. Since there can only be more right parentheses between // node.expression.end and the semicolon, appending one more to // node.expression should be fine. - state.prepend(node, 'return ('); - state.append(node.expression, ')'); + // + // We also create a wrapper object around the result of the expression. + // Consider an expression of the form `(await x).y`. If we just return + // this expression from an async function, the caller will await `y`, too, + // if it evaluates to a Promise. Instead, we return + // `{ value: ((await x).y) }`, which allows the caller to retrieve the + // awaited value correctly. + state.prepend(node.expression, '{ value: ('); + state.prepend(node, 'return '); + state.append(node.expression, ') }'); } break; } diff --git a/lib/internal/repl/history.js b/lib/internal/repl/history.js index 74ef94e81070dc..9300283e0015cc 100644 --- a/lib/internal/repl/history.js +++ b/lib/internal/repl/history.js @@ -4,7 +4,7 @@ const { ArrayPrototypeJoin, Boolean, FunctionPrototype, - StringPrototypeSplit, + RegExpPrototypeSymbolSplit, StringPrototypeTrim, } = primordials; @@ -90,7 +90,7 @@ function setupHistory(repl, historyPath, ready) { } if (data) { - repl.history = StringPrototypeSplit(data, /[\n\r]+/, repl.historySize); + repl.history = RegExpPrototypeSymbolSplit(/[\n\r]+/, data, repl.historySize); } else { repl.history = []; } diff --git a/lib/internal/repl/utils.js b/lib/internal/repl/utils.js index ee8c54be5bb5c3..9e55b79fc7e86c 100644 --- a/lib/internal/repl/utils.js +++ b/lib/internal/repl/utils.js @@ -7,13 +7,13 @@ const { Boolean, FunctionPrototypeBind, MathMin, - RegExpPrototypeTest, + RegExpPrototypeExec, SafeSet, SafeStringIterator, StringPrototypeEndsWith, StringPrototypeIndexOf, StringPrototypeLastIndexOf, - StringPrototypeReplace, + StringPrototypeReplaceAll, StringPrototypeSlice, StringPrototypeStartsWith, StringPrototypeToLowerCase, @@ -68,7 +68,7 @@ function isRecoverableError(e, code) { // curly brace with parenthesis. Note: only the open parenthesis is added // here as the point is to test for potentially valid but incomplete // expressions. - if (RegExpPrototypeTest(/^\s*\{/, code) && + if (RegExpPrototypeExec(/^\s*\{/, code) !== null && isRecoverableError(e, `(${code}`)) return true; @@ -114,8 +114,8 @@ function isRecoverableError(e, code) { const token = StringPrototypeSlice(this.input, this.lastTokStart, this.pos); // See https://www.ecma-international.org/ecma-262/#sec-line-terminators - if (RegExpPrototypeTest(/\\(?:\r\n?|\n|\u2028|\u2029)$/, - token)) { + if (RegExpPrototypeExec(/\\(?:\r\n?|\n|\u2028|\u2029)$/, + token) !== null) { recoverable = true; } } @@ -288,9 +288,9 @@ function setupPreview(repl, contextSymbol, bufferSymbol, active) { function isInStrictMode(repl) { return repl.replMode === REPL_MODE_STRICT || ArrayPrototypeIncludes( ArrayPrototypeMap(process.execArgv, - (e) => StringPrototypeReplace( + (e) => StringPrototypeReplaceAll( StringPrototypeToLowerCase(e), - /_/g, + '_', '-' )), '--use-strict'); diff --git a/lib/internal/source_map/prepare_stack_trace.js b/lib/internal/source_map/prepare_stack_trace.js index 0635ee675418f5..55dc8b344f8be6 100644 --- a/lib/internal/source_map/prepare_stack_trace.js +++ b/lib/internal/source_map/prepare_stack_trace.js @@ -5,9 +5,9 @@ const { ArrayPrototypeJoin, ArrayPrototypeMap, ErrorPrototypeToString, + RegExpPrototypeSymbolSplit, StringPrototypeRepeat, StringPrototypeSlice, - StringPrototypeSplit, StringPrototypeStartsWith, SafeStringIterator, } = primordials; @@ -61,10 +61,15 @@ const prepareStackTrace = (globalThis, error, trace) => { try { // A stack trace will often have several call sites in a row within the // same file, cache the source map and file content accordingly: - const fileName = t.getFileName(); + let fileName = t.getFileName(); + let generated = false; + if (fileName === undefined) { + fileName = t.getEvalOrigin(); + generated = true; + } const sm = fileName === lastFileName ? lastSourceMap : - findSourceMap(fileName); + findSourceMap(fileName, generated); lastSourceMap = sm; lastFileName = fileName; if (sm) { @@ -88,8 +93,9 @@ const prepareStackTrace = (globalThis, error, trace) => { } // Construct call site name based on: v8.dev/docs/stack-trace-api: const fnName = t.getFunctionName() ?? t.getMethodName(); - const originalName = `${t.getTypeName() !== 'global' ? - `${t.getTypeName()}.` : ''}${fnName || ''}`; + const typeName = t.getTypeName(); + const namePrefix = typeName !== null && typeName !== 'global' ? `${typeName}.` : ''; + const originalName = `${namePrefix}${fnName || ''}`; // The original call site may have a different symbol name // associated with it, use it: const prefix = (name && name !== originalName) ? @@ -151,7 +157,7 @@ function getErrorSource( sourceMap.payload, originalSourcePathNoScheme ); - const lines = StringPrototypeSplit(source, /\r?\n/, originalLine + 1); + const lines = RegExpPrototypeSymbolSplit(/\r?\n/, source, originalLine + 1); const line = lines[originalLine]; if (!line) return exceptionLine; diff --git a/lib/internal/source_map/source_map_cache.js b/lib/internal/source_map/source_map_cache.js index e3721d024d9fb1..c7770e7a6c733b 100644 --- a/lib/internal/source_map/source_map_cache.js +++ b/lib/internal/source_map/source_map_cache.js @@ -7,9 +7,9 @@ const { ObjectKeys, ObjectGetOwnPropertyDescriptor, ObjectPrototypeHasOwnProperty, - RegExpPrototypeTest, + RegExpPrototypeExec, + RegExpPrototypeSymbolSplit, SafeMap, - StringPrototypeMatch, StringPrototypeSplit, } = primordials; @@ -30,12 +30,18 @@ const { normalizeReferrerURL, } = require('internal/modules/cjs/helpers'); const { validateBoolean } = require('internal/validators'); +const { setMaybeCacheGeneratedSourceMap } = internalBinding('errors'); + // Since the CJS module cache is mutable, which leads to memory leaks when // modules are deleted, we use a WeakMap so that the source map cache will // be purged automatically: const cjsSourceMapCache = new IterableWeakMap(); // The esm cache is not mutable, so we can use a Map without memory concerns: const esmSourceMapCache = new SafeMap(); +// The generated sources is not mutable, so we can use a Map without memory concerns: +const generatedSourceMapCache = new SafeMap(); +const kLeadingProtocol = /^\w+:\/\//; + const { fileURLToPath, pathToFileURL, URL } = require('internal/url'); let SourceMap; @@ -71,20 +77,19 @@ function setSourceMapsEnabled(val) { sourceMapsEnabled = val; } -function maybeCacheSourceMap(filename, content, cjsModuleInstance) { +function maybeCacheSourceMap(filename, content, cjsModuleInstance, isGeneratedSource) { const sourceMapsEnabled = getSourceMapsEnabled(); if (!(process.env.NODE_V8_COVERAGE || sourceMapsEnabled)) return; try { filename = normalizeReferrerURL(filename); } catch (err) { - // This is most likely an [eval]-wrapper, which is currently not - // supported. + // This is most likely an invalid filename in sourceURL of [eval]-wrapper. debug(err); return; } - const match = StringPrototypeMatch( + const match = RegExpPrototypeExec( + /\/[*/]#\s+sourceMappingURL=(?[^\s]+)/, content, - /\/[*/]#\s+sourceMappingURL=(?[^\s]+)/ ); if (match) { const data = dataFromUrl(filename, match.groups.sourceMappingURL); @@ -96,8 +101,14 @@ function maybeCacheSourceMap(filename, content, cjsModuleInstance) { data, url }); + } else if (isGeneratedSource) { + generatedSourceMapCache.set(filename, { + lineLengths: lineLengths(content), + data, + url + }); } else { - // If there is no cjsModuleInstance assume we are in a + // If there is no cjsModuleInstance and is not generated source assume we are in a // "modules/esm" context. esmSourceMapCache.set(filename, { lineLengths: lineLengths(content), @@ -108,6 +119,31 @@ function maybeCacheSourceMap(filename, content, cjsModuleInstance) { } } +function maybeCacheGeneratedSourceMap(content) { + const sourceMapsEnabled = getSourceMapsEnabled(); + if (!(process.env.NODE_V8_COVERAGE || sourceMapsEnabled)) return; + + const matchSourceURL = RegExpPrototypeExec( + /\/[*/]#\s+sourceURL=(?[^\s]+)/, + content + ); + if (matchSourceURL == null) { + return; + } + let sourceURL = matchSourceURL.groups.sourceURL; + if (RegExpPrototypeExec(kLeadingProtocol, sourceURL) === null) { + sourceURL = pathToFileURL(sourceURL).href; + } + try { + maybeCacheSourceMap(sourceURL, content, null, true); + } catch (err) { + // This can happen if the filename is not a valid URL. + // If we fail to cache the source map, we should not fail the whole process. + debug(err); + } +} +setMaybeCacheGeneratedSourceMap(maybeCacheGeneratedSourceMap); + function dataFromUrl(sourceURL, sourceMappingURL) { try { const url = new URL(sourceMappingURL); @@ -133,7 +169,7 @@ function lineLengths(content) { // We purposefully keep \r as part of the line-length calculation, in // cases where there is a \r\n separator, so that this can be taken into // account in coverage calculations. - return ArrayPrototypeMap(StringPrototypeSplit(content, /\n|\u2028|\u2029/), (line) => { + return ArrayPrototypeMap(RegExpPrototypeSymbolSplit(/\n|\u2028|\u2029/, content), (line) => { return line.length; }); } @@ -218,21 +254,26 @@ function appendCJSCache(obj) { } } -function findSourceMap(sourceURL) { - if (!RegExpPrototypeTest(/^\w+:\/\//, sourceURL)) { +function findSourceMap(sourceURL, isGenerated) { + if (RegExpPrototypeExec(kLeadingProtocol, sourceURL) === null) { sourceURL = pathToFileURL(sourceURL).href; } if (!SourceMap) { SourceMap = require('internal/source_map/source_map').SourceMap; } - let sourceMap = esmSourceMapCache.get(sourceURL); - if (sourceMap === undefined) { - for (const value of cjsSourceMapCache) { - const filename = ObjectGetValueSafe(value, 'filename'); - if (sourceURL === filename) { - sourceMap = { - data: ObjectGetValueSafe(value, 'data') - }; + let sourceMap; + if (isGenerated) { + sourceMap = generatedSourceMapCache.get(sourceURL); + } else { + sourceMap = esmSourceMapCache.get(sourceURL); + if (sourceMap === undefined) { + for (const value of cjsSourceMapCache) { + const filename = ObjectGetValueSafe(value, 'filename'); + if (sourceURL === filename) { + sourceMap = { + data: ObjectGetValueSafe(value, 'data') + }; + } } } } diff --git a/lib/internal/streams/add-abort-signal.js b/lib/internal/streams/add-abort-signal.js index ba0da5e8bc4ac2..37034e7b5d1cac 100644 --- a/lib/internal/streams/add-abort-signal.js +++ b/lib/internal/streams/add-abort-signal.js @@ -34,7 +34,7 @@ module.exports.addAbortSignalNoValidate = function(signal, stream) { return stream; } const onAbort = () => { - stream.destroy(new AbortError()); + stream.destroy(new AbortError(undefined, { cause: signal.reason })); }; if (signal.aborted) { onAbort(); diff --git a/lib/internal/streams/duplex.js b/lib/internal/streams/duplex.js index c7b3056de4a8ec..170690f99c71b8 100644 --- a/lib/internal/streams/duplex.js +++ b/lib/internal/streams/duplex.js @@ -42,8 +42,10 @@ ObjectSetPrototypeOf(Duplex.prototype, Readable.prototype); ObjectSetPrototypeOf(Duplex, Readable); { + const keys = ObjectKeys(Writable.prototype); // Allow the keys array to be GC'ed. - for (const method of ObjectKeys(Writable.prototype)) { + for (let i = 0; i < keys.length; i++) { + const method = keys[i]; if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; } @@ -72,25 +74,26 @@ function Duplex(options) { ObjectDefineProperties(Duplex.prototype, { writable: - ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable'), + { __proto__: null, ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable') }, writableHighWaterMark: - ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark'), + { __proto__: null, ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark') }, writableObjectMode: - ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode'), + { __proto__: null, ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode') }, writableBuffer: - ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer'), + { __proto__: null, ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer') }, writableLength: - ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength'), + { __proto__: null, ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength') }, writableFinished: - ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished'), + { __proto__: null, ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished') }, writableCorked: - ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked'), + { __proto__: null, ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked') }, writableEnded: - ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded'), + { __proto__: null, ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded') }, writableNeedDrain: - ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain'), + { __proto__: null, ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain') }, destroyed: { + __proto__: null, get() { if (this._readableState === undefined || this._writableState === undefined) { diff --git a/lib/internal/streams/duplexify.js b/lib/internal/streams/duplexify.js index 7fd5df9f27938c..ec9358fc9080d2 100644 --- a/lib/internal/streams/duplexify.js +++ b/lib/internal/streams/duplexify.js @@ -214,7 +214,8 @@ function fromAsyncGen(fn) { const { chunk, done, cb } = await _promise; process.nextTick(cb); if (done) return; - if (signal.aborted) throw new AbortError(); + if (signal.aborted) + throw new AbortError(undefined, { cause: signal.reason }); ({ promise, resolve } = createDeferredPromise()); yield chunk; } diff --git a/lib/internal/streams/end-of-stream.js b/lib/internal/streams/end-of-stream.js index 9edd6cc9defafb..e8659939d6e53d 100644 --- a/lib/internal/streams/end-of-stream.js +++ b/lib/internal/streams/end-of-stream.js @@ -10,7 +10,10 @@ const { const { ERR_STREAM_PREMATURE_CLOSE } = codes; -const { once } = require('internal/util'); +const { + kEmptyObject, + once, +} = require('internal/util'); const { validateAbortSignal, validateFunction, @@ -64,9 +67,9 @@ function isReadableEnded(stream) { function eos(stream, options, callback) { if (arguments.length === 2) { callback = options; - options = {}; + options = kEmptyObject; } else if (options == null) { - options = {}; + options = kEmptyObject; } else { validateObject(options, 'options'); } @@ -217,7 +220,9 @@ function eos(stream, options, callback) { // Keep it because cleanup removes it. const endCallback = callback; cleanup(); - endCallback.call(stream, new AbortError()); + endCallback.call( + stream, + new AbortError(undefined, { cause: options.signal.reason })); }; if (options.signal.aborted) { process.nextTick(abort); diff --git a/lib/internal/streams/lazy_transform.js b/lib/internal/streams/lazy_transform.js index 555e6430e33588..fc3e9815a37648 100644 --- a/lib/internal/streams/lazy_transform.js +++ b/lib/internal/streams/lazy_transform.js @@ -39,6 +39,7 @@ function makeGetter(name) { function makeSetter(name) { return function(val) { ObjectDefineProperty(this, name, { + __proto__: null, value: val, enumerable: true, configurable: true, @@ -49,12 +50,14 @@ function makeSetter(name) { ObjectDefineProperties(LazyTransform.prototype, { _readableState: { + __proto__: null, get: makeGetter('_readableState'), set: makeSetter('_readableState'), configurable: true, enumerable: true }, _writableState: { + __proto__: null, get: makeGetter('_writableState'), set: makeSetter('_writableState'), configurable: true, diff --git a/lib/internal/streams/operators.js b/lib/internal/streams/operators.js index 42807edf1c7eca..a450aa78e759ab 100644 --- a/lib/internal/streams/operators.js +++ b/lib/internal/streams/operators.js @@ -1,7 +1,6 @@ 'use strict'; const { AbortController } = require('internal/abort_controller'); -const { Buffer } = require('buffer'); const { codes: { @@ -11,7 +10,11 @@ const { }, AbortError, } = require('internal/errors'); -const { validateInteger } = require('internal/validators'); +const { + validateAbortSignal, + validateInteger, + validateObject, +} = require('internal/validators'); const { kWeakHandler } = require('internal/event_target'); const { finished } = require('internal/streams/end-of-stream'); @@ -34,9 +37,11 @@ function map(fn, options) { throw new ERR_INVALID_ARG_TYPE( 'fn', ['Function', 'AsyncFunction'], fn); } - - if (options != null && typeof options !== 'object') { - throw new ERR_INVALID_ARG_TYPE('options', ['Object']); + if (options != null) { + validateObject(options, 'options'); + } + if (options?.signal != null) { + validateAbortSignal(options.signal, 'options.signal'); } let concurrency = 1; @@ -162,40 +167,33 @@ function map(fn, options) { }.call(this); } -async function* asIndexedPairs(options) { - let index = 0; - for await (const val of this) { - if (options?.signal?.aborted) { - throw new AbortError({ cause: options.signal.reason }); - } - yield [index++, val]; +function asIndexedPairs(options = undefined) { + if (options != null) { + validateObject(options, 'options'); } -} - -async function some(fn, options) { - // https://tc39.es/proposal-iterator-helpers/#sec-iteratorprototype.some - // Note that some does short circuit but also closes the iterator if it does - const ac = new AbortController(); - if (options?.signal) { - if (options.signal.aborted) { - ac.abort(); - } - options.signal.addEventListener('abort', () => ac.abort(), { - [kWeakHandler]: this, - once: true, - }); + if (options?.signal != null) { + validateAbortSignal(options.signal, 'options.signal'); } - const mapped = this.map(fn, { ...options, signal: ac.signal }); - for await (const result of mapped) { - if (result) { - ac.abort(); - return true; + + return async function* asIndexedPairs() { + let index = 0; + for await (const val of this) { + if (options?.signal?.aborted) { + throw new AbortError({ cause: options.signal.reason }); + } + yield [index++, val]; } + }.call(this); +} + +async function some(fn, options = undefined) { + for await (const unused of filter.call(this, fn, options)) { + return true; } return false; } -async function every(fn, options) { +async function every(fn, options = undefined) { if (typeof fn !== 'function') { throw new ERR_INVALID_ARG_TYPE( 'fn', ['Function', 'AsyncFunction'], fn); @@ -206,6 +204,13 @@ async function every(fn, options) { }, options)); } +async function find(fn, options) { + for await (const result of filter.call(this, fn, options)) { + return result; + } + return undefined; +} + async function forEach(fn, options) { if (typeof fn !== 'function') { throw new ERR_INVALID_ARG_TYPE( @@ -216,7 +221,7 @@ async function forEach(fn, options) { return kEmpty; } // eslint-disable-next-line no-unused-vars - for await (const unused of this.map(forEachFn, options)); + for await (const unused of map.call(this, forEachFn, options)); } function filter(fn, options) { @@ -230,7 +235,7 @@ function filter(fn, options) { } return kEmpty; } - return this.map(filterFn, options); + return map.call(this, filterFn, options); } // Specific to provide better error to reduce since the argument is only @@ -247,6 +252,13 @@ async function reduce(reducer, initialValue, options) { throw new ERR_INVALID_ARG_TYPE( 'reducer', ['Function', 'AsyncFunction'], reducer); } + if (options != null) { + validateObject(options, 'options'); + } + if (options?.signal != null) { + validateAbortSignal(options.signal, 'options.signal'); + } + let hasInitialValue = arguments.length > 1; if (options?.signal?.aborted) { const err = new AbortError(undefined, { cause: options.signal.reason }); @@ -284,6 +296,13 @@ async function reduce(reducer, initialValue, options) { } async function toArray(options) { + if (options != null) { + validateObject(options, 'options'); + } + if (options?.signal != null) { + validateAbortSignal(options.signal, 'options.signal'); + } + const result = []; for await (const val of this) { if (options?.signal?.aborted) { @@ -291,14 +310,11 @@ async function toArray(options) { } ArrayPrototypePush(result, val); } - if (!this.readableObjectMode) { - return Buffer.concat(result); - } return result; } function flatMap(fn, options) { - const values = this.map(fn, options); + const values = map.call(this, fn, options); return async function* flatMap() { for await (const val of values) { yield* val; @@ -319,7 +335,14 @@ function toIntegerOrInfinity(number) { return number; } -function drop(number, options) { +function drop(number, options = undefined) { + if (options != null) { + validateObject(options, 'options'); + } + if (options?.signal != null) { + validateAbortSignal(options.signal, 'options.signal'); + } + number = toIntegerOrInfinity(number); return async function* drop() { if (options?.signal?.aborted) { @@ -336,8 +359,14 @@ function drop(number, options) { }.call(this); } +function take(number, options = undefined) { + if (options != null) { + validateObject(options, 'options'); + } + if (options?.signal != null) { + validateAbortSignal(options.signal, 'options.signal'); + } -function take(number, options) { number = toIntegerOrInfinity(number); return async function* take() { if (options?.signal?.aborted) { @@ -371,4 +400,5 @@ module.exports.promiseReturningOperators = { reduce, toArray, some, + find, }; diff --git a/lib/internal/streams/readable.js b/lib/internal/streams/readable.js index 146f712c4a2f7e..c617f6584d3ba5 100644 --- a/lib/internal/streams/readable.js +++ b/lib/internal/streams/readable.js @@ -764,7 +764,7 @@ Readable.prototype.pipe = function(dest, pipeOpts) { debug('onerror', er); unpipe(); dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) { + if (dest.listenerCount('error') === 0) { const s = dest._writableState || dest._readableState; if (s && !s.errorEmitted) { // User incorrectly emitted 'error' directly on the stream. @@ -829,7 +829,7 @@ function pipeOnDrain(src, dest) { } if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && - EE.listenerCount(src, 'data')) { + src.listenerCount('data')) { src.resume(); } }; @@ -1162,6 +1162,7 @@ async function* createAsyncIterator(stream, options) { // userland will fail. ObjectDefineProperties(Readable.prototype, { readable: { + __proto__: null, get() { const r = this._readableState; // r.readable === false means that this is part of a Duplex stream @@ -1180,6 +1181,7 @@ ObjectDefineProperties(Readable.prototype, { }, readableDidRead: { + __proto__: null, enumerable: false, get: function() { return this._readableState.dataEmitted; @@ -1187,6 +1189,7 @@ ObjectDefineProperties(Readable.prototype, { }, readableAborted: { + __proto__: null, enumerable: false, get: function() { return !!( @@ -1198,6 +1201,7 @@ ObjectDefineProperties(Readable.prototype, { }, readableHighWaterMark: { + __proto__: null, enumerable: false, get: function() { return this._readableState.highWaterMark; @@ -1205,6 +1209,7 @@ ObjectDefineProperties(Readable.prototype, { }, readableBuffer: { + __proto__: null, enumerable: false, get: function() { return this._readableState && this._readableState.buffer; @@ -1212,6 +1217,7 @@ ObjectDefineProperties(Readable.prototype, { }, readableFlowing: { + __proto__: null, enumerable: false, get: function() { return this._readableState.flowing; @@ -1224,6 +1230,7 @@ ObjectDefineProperties(Readable.prototype, { }, readableLength: { + __proto__: null, enumerable: false, get() { return this._readableState.length; @@ -1231,6 +1238,7 @@ ObjectDefineProperties(Readable.prototype, { }, readableObjectMode: { + __proto__: null, enumerable: false, get() { return this._readableState ? this._readableState.objectMode : false; @@ -1238,6 +1246,7 @@ ObjectDefineProperties(Readable.prototype, { }, readableEncoding: { + __proto__: null, enumerable: false, get() { return this._readableState ? this._readableState.encoding : null; @@ -1245,6 +1254,7 @@ ObjectDefineProperties(Readable.prototype, { }, destroyed: { + __proto__: null, enumerable: false, get() { if (this._readableState === undefined) { @@ -1266,6 +1276,7 @@ ObjectDefineProperties(Readable.prototype, { }, readableEnded: { + __proto__: null, enumerable: false, get() { return this._readableState ? this._readableState.endEmitted : false; @@ -1277,6 +1288,7 @@ ObjectDefineProperties(Readable.prototype, { ObjectDefineProperties(ReadableState.prototype, { // Legacy getter for `pipesCount`. pipesCount: { + __proto__: null, get() { return this.pipes.length; } @@ -1284,6 +1296,7 @@ ObjectDefineProperties(ReadableState.prototype, { // Legacy property for `paused`. paused: { + __proto__: null, get() { return this[kPaused] !== false; }, diff --git a/lib/internal/streams/transform.js b/lib/internal/streams/transform.js index cbd23185fad291..4a06dcc6256706 100644 --- a/lib/internal/streams/transform.js +++ b/lib/internal/streams/transform.js @@ -65,7 +65,7 @@ const { ObjectSetPrototypeOf, - Symbol + Symbol, } = primordials; module.exports = Transform; @@ -73,6 +73,7 @@ const { ERR_METHOD_NOT_IMPLEMENTED } = require('internal/errors').codes; const Duplex = require('internal/streams/duplex'); +const { getHighWaterMark } = require('internal/streams/state'); ObjectSetPrototypeOf(Transform.prototype, Duplex.prototype); ObjectSetPrototypeOf(Transform, Duplex); @@ -82,6 +83,26 @@ function Transform(options) { if (!(this instanceof Transform)) return new Transform(options); + // TODO (ronag): This should preferably always be + // applied but would be semver-major. Or even better; + // make Transform a Readable with the Writable interface. + const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null; + if (readableHighWaterMark === 0) { + // A Duplex will buffer both on the writable and readable side while + // a Transform just wants to buffer hwm number of elements. To avoid + // buffering twice we disable buffering on the writable side. + options = { + ...options, + highWaterMark: null, + readableHighWaterMark, + // TODO (ronag): 0 is not optimal since we have + // a "bug" where we check needDrain before calling _write and not after. + // Refs: https://github.com/nodejs/node/pull/32887 + // Refs: https://github.com/nodejs/node/pull/35941 + writableHighWaterMark: options.writableHighWaterMark || 0 + }; + } + Duplex.call(this, options); // We have implemented the _read method, and done the other things @@ -195,9 +216,7 @@ Transform.prototype._write = function(chunk, encoding, callback) { if ( wState.ended || // Backwards compat. length === rState.length || // Backwards compat. - rState.length < rState.highWaterMark || - rState.highWaterMark === 0 || - rState.length === 0 + rState.length < rState.highWaterMark ) { callback(); } else { diff --git a/lib/internal/streams/writable.js b/lib/internal/streams/writable.js index 5211a1ce89395e..f5378ce7d05c2d 100644 --- a/lib/internal/streams/writable.js +++ b/lib/internal/streams/writable.js @@ -211,6 +211,7 @@ WritableState.prototype.getBuffer = function getBuffer() { }; ObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', { + __proto__: null, get() { return this.buffered.length - this.bufferedIndex; } @@ -267,6 +268,7 @@ function Writable(options) { } ObjectDefineProperty(Writable, SymbolHasInstance, { + __proto__: null, value: function(object) { if (FunctionPrototypeSymbolHasInstance(this, object)) return true; if (this !== Writable) return false; @@ -772,6 +774,7 @@ function finish(stream, state) { ObjectDefineProperties(Writable.prototype, { destroyed: { + __proto__: null, get() { return this._writableState ? this._writableState.destroyed : false; }, @@ -784,6 +787,7 @@ ObjectDefineProperties(Writable.prototype, { }, writable: { + __proto__: null, get() { const w = this._writableState; // w.writable === false means that this is part of a Duplex stream @@ -802,30 +806,35 @@ ObjectDefineProperties(Writable.prototype, { }, writableFinished: { + __proto__: null, get() { return this._writableState ? this._writableState.finished : false; } }, writableObjectMode: { + __proto__: null, get() { return this._writableState ? this._writableState.objectMode : false; } }, writableBuffer: { + __proto__: null, get() { return this._writableState && this._writableState.getBuffer(); } }, writableEnded: { + __proto__: null, get() { return this._writableState ? this._writableState.ending : false; } }, writableNeedDrain: { + __proto__: null, get() { const wState = this._writableState; if (!wState) return false; @@ -834,22 +843,37 @@ ObjectDefineProperties(Writable.prototype, { }, writableHighWaterMark: { + __proto__: null, get() { return this._writableState && this._writableState.highWaterMark; } }, writableCorked: { + __proto__: null, get() { return this._writableState ? this._writableState.corked : 0; } }, writableLength: { + __proto__: null, get() { return this._writableState && this._writableState.length; } - } + }, + + writableAborted: { + __proto__: null, + enumerable: false, + get: function() { + return !!( + this._writableState.writable !== false && + (this._writableState.destroyed || this._writableState.errored) && + !this._writableState.finished + ); + } + }, }); const destroy = destroyImpl.destroy; diff --git a/lib/internal/test_runner/harness.js b/lib/internal/test_runner/harness.js new file mode 100644 index 00000000000000..1bdd6e99ed1c3b --- /dev/null +++ b/lib/internal/test_runner/harness.js @@ -0,0 +1,177 @@ +'use strict'; +const { + ArrayPrototypeForEach, + FunctionPrototypeBind, + SafeMap, +} = primordials; +const { + createHook, + executionAsyncId, +} = require('async_hooks'); +const { + codes: { + ERR_TEST_FAILURE, + }, +} = require('internal/errors'); +const { Test, ItTest, Suite } = require('internal/test_runner/test'); + + +const testResources = new SafeMap(); +const root = new Test({ __proto__: null, name: '' }); +let wasRootSetup = false; + +function createProcessEventHandler(eventName, rootTest) { + return (err) => { + // Check if this error is coming from a test. If it is, fail the test. + const test = testResources.get(executionAsyncId()); + + if (!test) { + throw err; + } + + if (test.finished) { + // If the test is already finished, report this as a top level + // diagnostic since this is a malformed test. + const msg = `Warning: Test "${test.name}" generated asynchronous ` + + 'activity after the test ended. This activity created the error ' + + `"${err}" and would have caused the test to fail, but instead ` + + `triggered an ${eventName} event.`; + + rootTest.diagnostic(msg); + return; + } + + test.fail(new ERR_TEST_FAILURE(err, eventName)); + test.postRun(); + }; +} + +function setup(root) { + if (wasRootSetup) { + return root; + } + const hook = createHook({ + init(asyncId, type, triggerAsyncId, resource) { + if (resource instanceof Test) { + testResources.set(asyncId, resource); + return; + } + + const parent = testResources.get(triggerAsyncId); + + if (parent !== undefined) { + testResources.set(asyncId, parent); + } + }, + destroy(asyncId) { + testResources.delete(asyncId); + } + }); + + hook.enable(); + + const exceptionHandler = + createProcessEventHandler('uncaughtException', root); + const rejectionHandler = + createProcessEventHandler('unhandledRejection', root); + + const exitHandler = () => { + root.postRun(); + + let passCount = 0; + let failCount = 0; + let skipCount = 0; + let todoCount = 0; + let cancelledCount = 0; + + for (let i = 0; i < root.subtests.length; i++) { + const test = root.subtests[i]; + + // Check SKIP and TODO tests first, as those should not be counted as + // failures. + if (test.skipped) { + skipCount++; + } else if (test.isTodo) { + todoCount++; + } else if (test.cancelled) { + cancelledCount++; + } else if (!test.passed) { + failCount++; + } else { + passCount++; + } + } + + root.reporter.plan(root.indent, root.subtests.length); + + for (let i = 0; i < root.diagnostics.length; i++) { + root.reporter.diagnostic(root.indent, root.diagnostics[i]); + } + + root.reporter.diagnostic(root.indent, `tests ${root.subtests.length}`); + root.reporter.diagnostic(root.indent, `pass ${passCount}`); + root.reporter.diagnostic(root.indent, `fail ${failCount}`); + root.reporter.diagnostic(root.indent, `cancelled ${cancelledCount}`); + root.reporter.diagnostic(root.indent, `skipped ${skipCount}`); + root.reporter.diagnostic(root.indent, `todo ${todoCount}`); + root.reporter.diagnostic(root.indent, `duration_ms ${process.uptime()}`); + + root.reporter.push(null); + hook.disable(); + process.removeListener('unhandledRejection', rejectionHandler); + process.removeListener('uncaughtException', exceptionHandler); + + if (failCount > 0 || cancelledCount > 0) { + process.exitCode = 1; + } + }; + + const terminationHandler = () => { + exitHandler(); + process.exit(); + }; + + process.on('uncaughtException', exceptionHandler); + process.on('unhandledRejection', rejectionHandler); + process.on('beforeExit', exitHandler); + process.on('SIGINT', terminationHandler); + process.on('SIGTERM', terminationHandler); + + root.reporter.pipe(process.stdout); + root.reporter.version(); + + wasRootSetup = true; + return root; +} + +function test(name, options, fn) { + const subtest = setup(root).createSubtest(Test, name, options, fn); + return subtest.start(); +} + +function runInParentContext(Factory) { + function run(name, options, fn, overrides) { + const parent = testResources.get(executionAsyncId()) || setup(root); + const subtest = parent.createSubtest(Factory, name, options, fn, overrides); + if (parent === root) { + subtest.start(); + } + } + + const cb = (name, options, fn) => { + run(name, options, fn); + }; + + ArrayPrototypeForEach(['skip', 'todo'], (keyword) => { + cb[keyword] = (name, options, fn) => { + run(name, options, fn, { [keyword]: true }); + }; + }); + return cb; +} + +module.exports = { + test: FunctionPrototypeBind(test, root), + describe: runInParentContext(Suite), + it: runInParentContext(ItTest), +}; diff --git a/lib/internal/test_runner/tap_stream.js b/lib/internal/test_runner/tap_stream.js new file mode 100644 index 00000000000000..ca0c101aa9260c --- /dev/null +++ b/lib/internal/test_runner/tap_stream.js @@ -0,0 +1,224 @@ +'use strict'; +const { + ArrayPrototypeForEach, + ArrayPrototypeJoin, + ArrayPrototypePush, + ArrayPrototypeShift, + ObjectEntries, + StringPrototypeReplaceAll, + StringPrototypeSplit, + RegExpPrototypeSymbolReplace, +} = primordials; +const { inspectWithNoCustomRetry } = require('internal/errors'); +const Readable = require('internal/streams/readable'); +const { isError } = require('internal/util'); +const kFrameStartRegExp = /^ {4}at /; +const kLineBreakRegExp = /\n|\r\n/; +const inspectOptions = { colors: false, breakLength: Infinity }; +let testModule; // Lazy loaded due to circular dependency. + +function lazyLoadTest() { + testModule ??= require('internal/test_runner/test'); + + return testModule; +} + +class TapStream extends Readable { + #buffer; + #canPush; + + constructor() { + super(); + this.#buffer = []; + this.#canPush = true; + } + + _read() { + this.#canPush = true; + + while (this.#buffer.length > 0) { + const line = ArrayPrototypeShift(this.#buffer); + + if (!this.#tryPush(line)) { + return; + } + } + } + + bail(message) { + this.#tryPush(`Bail out!${message ? ` ${tapEscape(message)}` : ''}\n`); + } + + fail(indent, testNumber, description, directive) { + this.#test(indent, testNumber, 'not ok', description, directive); + } + + ok(indent, testNumber, description, directive) { + this.#test(indent, testNumber, 'ok', description, directive); + } + + plan(indent, count, explanation) { + const exp = `${explanation ? ` # ${tapEscape(explanation)}` : ''}`; + + this.#tryPush(`${indent}1..${count}${exp}\n`); + } + + getSkip(reason) { + return `SKIP${reason ? ` ${tapEscape(reason)}` : ''}`; + } + + getTodo(reason) { + return `TODO${reason ? ` ${tapEscape(reason)}` : ''}`; + } + + subtest(indent, name) { + this.#tryPush(`${indent}# Subtest: ${tapEscape(name)}\n`); + } + + details(indent, duration, error) { + let details = `${indent} ---\n`; + + details += jsToYaml(indent, 'duration_ms', duration); + details += jsToYaml(indent, null, error); + details += `${indent} ...\n`; + this.#tryPush(details); + } + + diagnostic(indent, message) { + this.#tryPush(`${indent}# ${tapEscape(message)}\n`); + } + + version() { + this.#tryPush('TAP version 13\n'); + } + + #test(indent, testNumber, status, description, directive) { + let line = `${indent}${status} ${testNumber}`; + + if (description) { + line += ` ${tapEscape(description)}`; + } + + if (directive) { + line += ` # ${directive}`; + } + + line += '\n'; + this.#tryPush(line); + } + + #tryPush(message) { + if (this.#canPush) { + this.#canPush = this.push(message); + } else { + ArrayPrototypePush(this.#buffer, message); + } + + return this.#canPush; + } +} + +// In certain places, # and \ need to be escaped as \# and \\. +function tapEscape(input) { + return StringPrototypeReplaceAll( + StringPrototypeReplaceAll(input, '\\', '\\\\'), '#', '\\#' + ); +} + +function jsToYaml(indent, name, value) { + if (value === null || value === undefined) { + return ''; + } + + if (typeof value !== 'object') { + const prefix = `${indent} ${name}: `; + + if (typeof value !== 'string') { + return `${prefix}${inspectWithNoCustomRetry(value, inspectOptions)}\n`; + } + + const lines = StringPrototypeSplit(value, kLineBreakRegExp); + + if (lines.length === 1) { + return `${prefix}${inspectWithNoCustomRetry(value, inspectOptions)}\n`; + } + + let str = `${prefix}|-\n`; + + for (let i = 0; i < lines.length; i++) { + str += `${indent} ${lines[i]}\n`; + } + + return str; + } + + const entries = ObjectEntries(value); + const isErrorObj = isError(value); + let result = ''; + + for (let i = 0; i < entries.length; i++) { + const { 0: key, 1: value } = entries[i]; + + if (isErrorObj && (key === 'cause' || key === 'code')) { + continue; + } + + result += jsToYaml(indent, key, value); + } + + if (isErrorObj) { + const { kTestCodeFailure } = lazyLoadTest(); + const { + cause, + code, + failureType, + message, + stack, + } = value; + let errMsg = message ?? ''; + let errStack = stack; + let errCode = code; + + // If the ERR_TEST_FAILURE came from an error provided by user code, + // then try to unwrap the original error message and stack. + if (code === 'ERR_TEST_FAILURE' && failureType === kTestCodeFailure) { + errMsg = cause?.message ?? errMsg; + errStack = cause?.stack ?? errStack; + errCode = cause?.code ?? errCode; + } + + result += jsToYaml(indent, 'error', errMsg); + + if (errCode) { + result += jsToYaml(indent, 'code', errCode); + } + + if (typeof errStack === 'string') { + const frames = []; + + ArrayPrototypeForEach( + StringPrototypeSplit(errStack, kLineBreakRegExp), + (frame) => { + const processed = RegExpPrototypeSymbolReplace( + kFrameStartRegExp, frame, '' + ); + + if (processed.length > 0 && processed.length !== frame.length) { + ArrayPrototypePush(frames, processed); + } + } + ); + + if (frames.length > 0) { + const frameDelimiter = `\n${indent} `; + + result += `${indent} stack: |-${frameDelimiter}`; + result += `${ArrayPrototypeJoin(frames, `${frameDelimiter}`)}\n`; + } + } + } + + return result; +} + +module.exports = { TapStream }; diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js new file mode 100644 index 00000000000000..1663958f9b7c94 --- /dev/null +++ b/lib/internal/test_runner/test.js @@ -0,0 +1,591 @@ +'use strict'; +const { + ArrayPrototypePush, + ArrayPrototypeShift, + ArrayPrototypeUnshift, + FunctionPrototype, + MathMax, + Number, + PromisePrototypeThen, + PromiseResolve, + ReflectApply, + SafeMap, + SafePromiseAll, + SafePromiseRace, + Symbol, +} = primordials; +const { AsyncResource } = require('async_hooks'); +const { once } = require('events'); +const { AbortController } = require('internal/abort_controller'); +const { + codes: { + ERR_TEST_FAILURE, + }, + kIsNodeError, + AbortError, +} = require('internal/errors'); +const { getOptionValue } = require('internal/options'); +const { TapStream } = require('internal/test_runner/tap_stream'); +const { createDeferredCallback } = require('internal/test_runner/utils'); +const { + createDeferredPromise, + kEmptyObject, +} = require('internal/util'); +const { isPromise } = require('internal/util/types'); +const { + isUint32, + validateAbortSignal, + validateNumber, +} = require('internal/validators'); +const { setTimeout } = require('timers/promises'); +const { TIMEOUT_MAX } = require('internal/timers'); +const { cpus } = require('os'); +const { bigint: hrtime } = process.hrtime; +const kCallbackAndPromisePresent = 'callbackAndPromisePresent'; +const kCancelledByParent = 'cancelledByParent'; +const kParentAlreadyFinished = 'parentAlreadyFinished'; +const kSubtestsFailed = 'subtestsFailed'; +const kTestCodeFailure = 'testCodeFailure'; +const kTestTimeoutFailure = 'testTimeoutFailure'; +const kDefaultIndent = ' '; +const kDefaultTimeout = null; +const noop = FunctionPrototype; +const isTestRunner = getOptionValue('--test'); +const testOnlyFlag = !isTestRunner && getOptionValue('--test-only'); +// TODO(cjihrig): Use uv_available_parallelism() once it lands. +const rootConcurrency = isTestRunner ? MathMax(cpus().length - 1, 1) : 1; +const kShouldAbort = Symbol('kShouldAbort'); + + +function stopTest(timeout, signal) { + if (timeout === kDefaultTimeout) { + return once(signal, 'abort'); + } + return PromisePrototypeThen(setTimeout(timeout, null, { ref: false, signal }), () => { + throw new ERR_TEST_FAILURE( + `test timed out after ${timeout}ms`, + kTestTimeoutFailure + ); + }); +} + +class TestContext { + #test; + + constructor(test) { + this.#test = test; + } + + get signal() { + return this.#test.signal; + } + + diagnostic(message) { + this.#test.diagnostic(message); + } + + runOnly(value) { + this.#test.runOnlySubtests = !!value; + } + + skip(message) { + this.#test.skip(message); + } + + todo(message) { + this.#test.todo(message); + } + + test(name, options, fn) { + // eslint-disable-next-line no-use-before-define + const subtest = this.#test.createSubtest(Test, name, options, fn); + + return subtest.start(); + } +} + +class Test extends AsyncResource { + #abortController; + #outerSignal; + + constructor(options) { + super('Test'); + + let { fn, name, parent, skip } = options; + const { concurrency, only, timeout, todo, signal } = options; + + if (typeof fn !== 'function') { + fn = noop; + } + + if (typeof name !== 'string' || name === '') { + name = fn.name || ''; + } + + if (!(parent instanceof Test)) { + parent = null; + } + + if (parent === null) { + this.concurrency = rootConcurrency; + this.indent = ''; + this.indentString = kDefaultIndent; + this.only = testOnlyFlag; + this.reporter = new TapStream(); + this.runOnlySubtests = this.only; + this.testNumber = 0; + this.timeout = kDefaultTimeout; + } else { + const indent = parent.parent === null ? parent.indent : + parent.indent + parent.indentString; + + this.concurrency = parent.concurrency; + this.indent = indent; + this.indentString = parent.indentString; + this.only = only ?? !parent.runOnlySubtests; + this.reporter = parent.reporter; + this.runOnlySubtests = !this.only; + this.testNumber = parent.subtests.length + 1; + this.timeout = parent.timeout; + } + + if (isUint32(concurrency) && concurrency !== 0) { + this.concurrency = concurrency; + } else if (typeof concurrency === 'boolean') { + if (concurrency) { + this.concurrency = isTestRunner ? MathMax(cpus().length - 1, 1) : Infinity; + } else { + this.concurrency = 1; + } + } + + if (timeout != null && timeout !== Infinity) { + validateNumber(timeout, 'options.timeout', 0, TIMEOUT_MAX); + this.timeout = timeout; + } + + if (testOnlyFlag && !this.only) { + skip = '\'only\' option not set'; + } + + if (skip) { + fn = noop; + } + + this.#abortController = new AbortController(); + this.#outerSignal = signal; + this.signal = this.#abortController.signal; + + validateAbortSignal(signal, 'options.signal'); + this.#outerSignal?.addEventListener('abort', this.#abortHandler); + + + this.fn = fn; + this.name = name; + this.parent = parent; + this.cancelled = false; + this.skipped = !!skip; + this.isTodo = !!todo; + this.startTime = null; + this.endTime = null; + this.passed = false; + this.error = null; + this.diagnostics = []; + this.message = typeof skip === 'string' ? skip : + typeof todo === 'string' ? todo : null; + this.activeSubtests = 0; + this.pendingSubtests = []; + this.readySubtests = new SafeMap(); + this.subtests = []; + this.waitingOn = 0; + this.finished = false; + } + + hasConcurrency() { + return this.concurrency > this.activeSubtests; + } + + addPendingSubtest(deferred) { + this.pendingSubtests.push(deferred); + } + + async processPendingSubtests() { + while (this.pendingSubtests.length > 0 && this.hasConcurrency()) { + const deferred = ArrayPrototypeShift(this.pendingSubtests); + await deferred.test.run(); + deferred.resolve(); + } + } + + addReadySubtest(subtest) { + this.readySubtests.set(subtest.testNumber, subtest); + } + + processReadySubtestRange(canSend) { + const start = this.waitingOn; + const end = start + this.readySubtests.size; + + for (let i = start; i < end; i++) { + const subtest = this.readySubtests.get(i); + + // Check if the specified subtest is in the map. If it is not, return + // early to avoid trying to process any more tests since they would be + // out of order. + if (subtest === undefined) { + return; + } + + // Call isClearToSend() in the loop so that it is: + // - Only called if there are results to report in the correct order. + // - Guaranteed to only be called a maximum of once per call to + // processReadySubtestRange(). + canSend = canSend || this.isClearToSend(); + + if (!canSend) { + return; + } + + if (i === 1 && this.parent !== null) { + this.reporter.subtest(this.indent, this.name); + } + + // Report the subtest's results and remove it from the ready map. + subtest.finalize(); + this.readySubtests.delete(i); + } + } + + createSubtest(Factory, name, options, fn, overrides) { + if (typeof name === 'function') { + fn = name; + } else if (name !== null && typeof name === 'object') { + fn = options; + options = name; + } else if (typeof options === 'function') { + fn = options; + } + + if (options === null || typeof options !== 'object') { + options = kEmptyObject; + } + + let parent = this; + + // If this test has already ended, attach this test to the root test so + // that the error can be properly reported. + const preventAddingSubtests = this.finished || this.buildPhaseFinished; + if (preventAddingSubtests) { + while (parent.parent !== null) { + parent = parent.parent; + } + } + + const test = new Factory({ __proto__: null, fn, name, parent, ...options, ...overrides }); + + if (parent.waitingOn === 0) { + parent.waitingOn = test.testNumber; + } + + if (preventAddingSubtests) { + test.startTime = test.startTime || hrtime(); + test.fail( + new ERR_TEST_FAILURE( + 'test could not be started because its parent finished', + kParentAlreadyFinished + ) + ); + } + + ArrayPrototypePush(parent.subtests, test); + return test; + } + + #abortHandler = () => { + this.cancel(this.#outerSignal?.reason || new AbortError('The test was aborted')); + }; + + cancel(error) { + if (this.endTime !== null) { + return; + } + + this.fail(error || + new ERR_TEST_FAILURE( + 'test did not finish before its parent and was cancelled', + kCancelledByParent + ) + ); + this.cancelled = true; + this.#abortController.abort(); + } + + fail(err) { + if (this.error !== null) { + return; + } + + this.endTime = hrtime(); + this.passed = false; + this.error = err; + } + + pass() { + if (this.endTime !== null) { + return; + } + + this.endTime = hrtime(); + this.passed = true; + } + + skip(message) { + this.skipped = true; + this.message = message; + } + + todo(message) { + this.isTodo = true; + this.message = message; + } + + diagnostic(message) { + ArrayPrototypePush(this.diagnostics, message); + } + + start() { + // If there is enough available concurrency to run the test now, then do + // it. Otherwise, return a Promise to the caller and mark the test as + // pending for later execution. + if (!this.parent.hasConcurrency()) { + const deferred = createDeferredPromise(); + + deferred.test = this; + this.parent.addPendingSubtest(deferred); + return deferred.promise; + } + + return this.run(); + } + + [kShouldAbort]() { + if (this.signal.aborted) { + return true; + } + if (this.#outerSignal?.aborted) { + this.cancel(this.#outerSignal.reason || new AbortError('The test was aborted')); + return true; + } + } + + getRunArgs() { + const ctx = new TestContext(this); + return { ctx, args: [ctx] }; + } + + async run() { + this.parent.activeSubtests++; + this.startTime = hrtime(); + + if (this[kShouldAbort]()) { + this.postRun(); + return; + } + + try { + const stopPromise = stopTest(this.timeout, this.signal); + const { args, ctx } = this.getRunArgs(); + ArrayPrototypeUnshift(args, this.fn, ctx); // Note that if it's not OK to mutate args, we need to first clone it. + + if (this.fn.length === args.length - 1) { + // This test is using legacy Node.js error first callbacks. + const { promise, cb } = createDeferredCallback(); + + ArrayPrototypePush(args, cb); + const ret = ReflectApply(this.runInAsyncScope, this, args); + + if (isPromise(ret)) { + this.fail(new ERR_TEST_FAILURE( + 'passed a callback but also returned a Promise', + kCallbackAndPromisePresent + )); + await SafePromiseRace([ret, stopPromise]); + } else { + await SafePromiseRace([PromiseResolve(promise), stopPromise]); + } + } else { + // This test is synchronous or using Promises. + const promise = ReflectApply(this.runInAsyncScope, this, args); + await SafePromiseRace([PromiseResolve(promise), stopPromise]); + } + + if (this[kShouldAbort]()) { + this.postRun(); + return; + } + + this.pass(); + } catch (err) { + if (err?.code === 'ERR_TEST_FAILURE' && kIsNodeError in err) { + if (err.failureType === kTestTimeoutFailure) { + this.cancel(err); + } else { + this.fail(err); + } + } else { + this.fail(new ERR_TEST_FAILURE(err, kTestCodeFailure)); + } + } + + // Clean up the test. Then, try to report the results and execute any + // tests that were pending due to available concurrency. + this.postRun(); + } + + postRun() { + let failedSubtests = 0; + + // If the test was failed before it even started, then the end time will + // be earlier than the start time. Correct that here. + if (this.endTime < this.startTime) { + this.endTime = hrtime(); + } + this.startTime ??= this.endTime; + + // The test has run, so recursively cancel any outstanding subtests and + // mark this test as failed if any subtests failed. + for (let i = 0; i < this.subtests.length; i++) { + const subtest = this.subtests[i]; + + if (!subtest.finished) { + subtest.cancel(); + subtest.postRun(); + } + + if (!subtest.passed) { + failedSubtests++; + } + } + + if (this.passed && failedSubtests > 0) { + const subtestString = `subtest${failedSubtests > 1 ? 's' : ''}`; + const msg = `${failedSubtests} ${subtestString} failed`; + + this.fail(new ERR_TEST_FAILURE(msg, kSubtestsFailed)); + } + + this.#outerSignal?.removeEventListener('abort', this.#abortHandler); + + if (this.parent !== null) { + this.parent.activeSubtests--; + this.parent.addReadySubtest(this); + this.parent.processReadySubtestRange(false); + this.parent.processPendingSubtests(); + } + } + + isClearToSend() { + return this.parent === null || + ( + this.parent.waitingOn === this.testNumber && this.parent.isClearToSend() + ); + } + + finalize() { + // By the time this function is called, the following can be relied on: + // - The current test has completed or been cancelled. + // - All of this test's subtests have completed or been cancelled. + // - It is the current test's turn to report its results. + + // Report any subtests that have not been reported yet. Since all of the + // subtests have finished, it's safe to pass true to + // processReadySubtestRange(), which will finalize all remaining subtests. + this.processReadySubtestRange(true); + + // Output this test's results and update the parent's waiting counter. + if (this.subtests.length > 0) { + this.reporter.plan(this.subtests[0].indent, this.subtests.length); + } else { + this.reporter.subtest(this.indent, this.name); + } + + this.report(); + this.parent.waitingOn++; + this.finished = true; + } + + report() { + // Duration is recorded in BigInt nanoseconds. Convert to seconds. + const duration = Number(this.endTime - this.startTime) / 1_000_000_000; + const message = `- ${this.name}`; + let directive; + + if (this.skipped) { + directive = this.reporter.getSkip(this.message); + } else if (this.isTodo) { + directive = this.reporter.getTodo(this.message); + } + + if (this.passed) { + this.reporter.ok(this.indent, this.testNumber, message, directive); + } else { + this.reporter.fail(this.indent, this.testNumber, message, directive); + } + + this.reporter.details(this.indent, duration, this.error); + + for (let i = 0; i < this.diagnostics.length; i++) { + this.reporter.diagnostic(this.indent, this.diagnostics[i]); + } + } +} + +class ItTest extends Test { + constructor(opt) { super(opt); } // eslint-disable-line no-useless-constructor + getRunArgs() { + return { ctx: { signal: this.signal }, args: [] }; + } +} +class Suite extends Test { + constructor(options) { + super(options); + + try { + const context = { signal: this.signal }; + this.buildSuite = this.runInAsyncScope(this.fn, context, [context]); + } catch (err) { + this.fail(new ERR_TEST_FAILURE(err, kTestCodeFailure)); + } + this.fn = () => {}; + this.buildPhaseFinished = true; + } + + start() { + return this.run(); + } + + async run() { + try { + await this.buildSuite; + } catch (err) { + this.fail(new ERR_TEST_FAILURE(err, kTestCodeFailure)); + } + this.parent.activeSubtests++; + this.startTime = hrtime(); + + if (this[kShouldAbort]()) { + this.subtests = []; + this.postRun(); + return; + } + + const stopPromise = stopTest(this.timeout, this.signal); + const subtests = this.skipped || this.error ? [] : this.subtests; + const promise = SafePromiseAll(subtests, (subtests) => subtests.start()); + + await SafePromiseRace([promise, stopPromise]); + this.pass(); + this.postRun(); + } +} + +module.exports = { kDefaultIndent, kSubtestsFailed, kTestCodeFailure, Test, Suite, ItTest }; diff --git a/lib/internal/test_runner/utils.js b/lib/internal/test_runner/utils.js new file mode 100644 index 00000000000000..d98fa1e59b3610 --- /dev/null +++ b/lib/internal/test_runner/utils.js @@ -0,0 +1,56 @@ +'use strict'; +const { RegExpPrototypeExec } = primordials; +const { basename } = require('path'); +const { createDeferredPromise } = require('internal/util'); +const { + codes: { + ERR_TEST_FAILURE, + }, +} = require('internal/errors'); + +const kMultipleCallbackInvocations = 'multipleCallbackInvocations'; +const kSupportedFileExtensions = /\.[cm]?js$/; +const kTestFilePattern = /((^test(-.+)?)|(.+[.\-_]test))\.[cm]?js$/; + +function doesPathMatchFilter(p) { + return RegExpPrototypeExec(kTestFilePattern, basename(p)) !== null; +} + +function isSupportedFileType(p) { + return RegExpPrototypeExec(kSupportedFileExtensions, p) !== null; +} + +function createDeferredCallback() { + let calledCount = 0; + const { promise, resolve, reject } = createDeferredPromise(); + const cb = (err) => { + calledCount++; + + // If the callback is called a second time, let the user know, but + // don't let them know more than once. + if (calledCount > 1) { + if (calledCount === 2) { + throw new ERR_TEST_FAILURE( + 'callback invoked multiple times', + kMultipleCallbackInvocations + ); + } + + return; + } + + if (err) { + return reject(err); + } + + resolve(); + }; + + return { promise, cb }; +} + +module.exports = { + createDeferredCallback, + doesPathMatchFilter, + isSupportedFileType, +}; diff --git a/lib/internal/tls/secure-context.js b/lib/internal/tls/secure-context.js index 8cb3ae06d2e2e1..a9bf4a1da71eca 100644 --- a/lib/internal/tls/secure-context.js +++ b/lib/internal/tls/secure-context.js @@ -17,6 +17,10 @@ const { }, } = require('internal/errors'); +const { + kEmptyObject, +} = require('internal/util'); + const { isArrayBufferView, } = require('internal/util/types'); @@ -117,7 +121,7 @@ function processCiphers(ciphers, name) { return { cipherList, cipherSuites }; } -function configSecureContext(context, options = {}, name = 'options') { +function configSecureContext(context, options = kEmptyObject, name = 'options') { validateObject(options, name); const { @@ -221,15 +225,10 @@ function configSecureContext(context, options = {}, name = 'options') { cipherSuites, } = processCiphers(ciphers, `${name}.ciphers`); - context.setCipherSuites(cipherSuites); + if (cipherSuites !== '') + context.setCipherSuites(cipherSuites); context.setCiphers(cipherList); - if (cipherSuites === '' && - context.getMaxProto() > TLS1_2_VERSION && - context.getMinProto() < TLS1_3_VERSION) { - context.setMaxProto(TLS1_2_VERSION); - } - if (cipherList === '' && context.getMinProto() < TLS1_3_VERSION && context.getMaxProto() > TLS1_2_VERSION) { diff --git a/lib/internal/tls/secure-pair.js b/lib/internal/tls/secure-pair.js index b3f0930a3c7118..db999d90ccffd9 100644 --- a/lib/internal/tls/secure-pair.js +++ b/lib/internal/tls/secure-pair.js @@ -1,6 +1,7 @@ 'use strict'; const EventEmitter = require('events'); +const { kEmptyObject } = require('internal/util'); const { Duplex } = require('stream'); const _tls_wrap = require('_tls_wrap'); const _tls_common = require('_tls_common'); @@ -57,7 +58,7 @@ class SecurePair extends EventEmitter { isServer = false, requestCert = !isServer, rejectUnauthorized = false, - options = {}) { + options = kEmptyObject) { super(); const { socket1, socket2 } = new DuplexPair(); diff --git a/lib/internal/tty.js b/lib/internal/tty.js index 5abf0b908b02cc..4f285e92829637 100644 --- a/lib/internal/tty.js +++ b/lib/internal/tty.js @@ -24,7 +24,7 @@ const { ArrayPrototypeSome, - RegExpPrototypeTest, + RegExpPrototypeExec, StringPrototypeSplit, StringPrototypeToLowerCase, } = primordials; @@ -174,14 +174,14 @@ function getColorDepth(env = process.env) { } if ('TEAMCITY_VERSION' in env) { - return RegExpPrototypeTest(/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/, env.TEAMCITY_VERSION) ? + return RegExpPrototypeExec(/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/, env.TEAMCITY_VERSION) !== null ? COLORS_16 : COLORS_2; } switch (env.TERM_PROGRAM) { case 'iTerm.app': if (!env.TERM_PROGRAM_VERSION || - RegExpPrototypeTest(/^[0-2]\./, env.TERM_PROGRAM_VERSION) + RegExpPrototypeExec(/^[0-2]\./, env.TERM_PROGRAM_VERSION) !== null ) { return COLORS_256; } @@ -198,7 +198,7 @@ function getColorDepth(env = process.env) { } if (env.TERM) { - if (RegExpPrototypeTest(/^xterm-256/, env.TERM)) { + if (RegExpPrototypeExec(/^xterm-256/, env.TERM) !== null) { return COLORS_256; } @@ -208,7 +208,7 @@ function getColorDepth(env = process.env) { return TERM_ENVS[termEnv]; } if (ArrayPrototypeSome(TERM_ENVS_REG_EXP, - (term) => RegExpPrototypeTest(term, termEnv))) { + (term) => RegExpPrototypeExec(term, termEnv) !== null)) { return COLORS_16; } } diff --git a/lib/internal/url.js b/lib/internal/url.js index 939374a495856c..22bff28595f6f5 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -220,6 +220,7 @@ class URLSearchParams { } else { // Record // Need to use reflection APIs for full spec compliance. + const visited = {}; this[searchParams] = []; const keys = ReflectOwnKeys(init); for (let i = 0; i < keys.length; i++) { @@ -228,7 +229,16 @@ class URLSearchParams { if (desc !== undefined && desc.enumerable) { const typedKey = toUSVString(key); const typedValue = toUSVString(init[key]); - this[searchParams].push(typedKey, typedValue); + + // Two different key may result same after `toUSVString()`, we only + // leave the later one. Refers to WPT. + if (visited[typedKey] !== undefined) { + this[searchParams][visited[typedKey]] = typedValue; + } else { + visited[typedKey] = ArrayPrototypePush(this[searchParams], + typedKey, + typedValue) - 1; + } } } } @@ -520,10 +530,11 @@ ObjectDefineProperties(URLSearchParams.prototype, { keys: kEnumerableProperty, values: kEnumerableProperty, toString: kEnumerableProperty, - [SymbolToStringTag]: { configurable: true, value: 'URLSearchParams' }, + [SymbolToStringTag]: { __proto__: null, configurable: true, value: 'URLSearchParams' }, // https://heycam.github.io/webidl/#es-iterable-entries [SymbolIterator]: { + __proto__: null, configurable: true, writable: true, value: URLSearchParams.prototype.entries, @@ -983,8 +994,8 @@ class URL { } ObjectDefineProperties(URL.prototype, { - [kFormat]: { configurable: false, writable: false }, - [SymbolToStringTag]: { configurable: true, value: 'URL' }, + [kFormat]: { __proto__: null, configurable: false, writable: false }, + [SymbolToStringTag]: { __proto__: null, configurable: true, value: 'URL' }, toString: kEnumerableProperty, href: kEnumerableProperty, origin: kEnumerableProperty, @@ -1167,6 +1178,7 @@ function serializeParams(array) { function defineIDLClass(proto, classStr, obj) { // https://heycam.github.io/webidl/#dfn-class-string ObjectDefineProperty(proto, SymbolToStringTag, { + __proto__: null, writable: false, enumerable: false, configurable: true, @@ -1176,6 +1188,7 @@ function defineIDLClass(proto, classStr, obj) { // https://heycam.github.io/webidl/#es-operations for (const key of ObjectKeys(obj)) { ObjectDefineProperty(proto, key, { + __proto__: null, writable: true, enumerable: true, configurable: true, @@ -1184,6 +1197,7 @@ function defineIDLClass(proto, classStr, obj) { } for (const key of ObjectGetOwnPropertySymbols(obj)) { ObjectDefineProperty(proto, key, { + __proto__: null, writable: true, enumerable: false, configurable: true, diff --git a/lib/internal/util.js b/lib/internal/util.js index d1b82fd69e1089..ea6d19683fed45 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -13,12 +13,12 @@ const { ObjectGetOwnPropertyDescriptor, ObjectGetOwnPropertyDescriptors, ObjectGetPrototypeOf, + ObjectFreeze, ObjectSetPrototypeOf, Promise, ReflectApply, ReflectConstruct, RegExpPrototypeExec, - RegExpPrototypeTest, SafeMap, SafeSet, StringPrototypeReplace, @@ -259,8 +259,8 @@ function createClassWrapper(type) { } // Mask the wrapper function name and length values ObjectDefineProperties(fn, { - name: { value: type.name }, - length: { value: type.length } + name: { __proto__: null, value: type.name }, + length: { __proto__: null, value: type.length }, }); ObjectSetPrototypeOf(fn, type); fn.prototype = type.prototype; @@ -334,6 +334,7 @@ function promisify(original) { validateFunction(fn, 'util.promisify.custom'); return ObjectDefineProperty(fn, kCustomPromisifiedSymbol, { + __proto__: null, value: fn, enumerable: false, writable: false, configurable: true }); } @@ -364,6 +365,7 @@ function promisify(original) { ObjectSetPrototypeOf(fn, ObjectGetPrototypeOf(original)); ObjectDefineProperty(fn, kCustomPromisifiedSymbol, { + __proto__: null, value: fn, enumerable: false, writable: false, configurable: true }); return ObjectDefineProperties( @@ -427,9 +429,9 @@ function isInsideNodeModules() { const filename = frame.getFileName(); // If a filename does not start with / or contain \, // it's likely from Node.js core. - if (!RegExpPrototypeTest(/^\/|\\/, filename)) + if (RegExpPrototypeExec(/^\/|\\/, filename) === null) continue; - return RegExpPrototypeTest(kNodeModulesRE, filename); + return RegExpPrototypeExec(kNodeModulesRE, filename) !== null; } } return false; @@ -469,6 +471,7 @@ function createDeferredPromise() { // https://heycam.github.io/webidl/#define-the-operations function defineOperation(target, name, method) { ObjectDefineProperty(target, name, { + __proto__: null, writable: true, enumerable: true, configurable: true, @@ -479,6 +482,7 @@ function defineOperation(target, name, method) { // https://heycam.github.io/webidl/#es-interfaces function exposeInterface(target, name, interfaceObject) { ObjectDefineProperty(target, name, { + __proto__: null, writable: true, enumerable: false, configurable: true, @@ -510,6 +514,9 @@ function structuredClone(value) { const kEnumerableProperty = ObjectCreate(null); kEnumerableProperty.enumerable = true; +ObjectFreeze(kEnumerableProperty); + +const kEmptyObject = ObjectFreeze(ObjectCreate(null)); module.exports = { assertCrypto, @@ -551,5 +558,6 @@ module.exports = { kIsEncodingSymbol: Symbol('kIsEncodingSymbol'), kVmBreakFirstLineSymbol: Symbol('kVmBreakFirstLineSymbol'), + kEmptyObject, kEnumerableProperty, }; diff --git a/lib/internal/util/debuglog.js b/lib/internal/util/debuglog.js index 4b5c7cab44ad77..de39457db2b47b 100644 --- a/lib/internal/util/debuglog.js +++ b/lib/internal/util/debuglog.js @@ -100,6 +100,7 @@ function debuglog(set, cb) { } }; ObjectDefineProperty(logger, 'enabled', { + __proto__: null, get() { return test(); }, diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index d78a4e97d218a6..f38df74ed6af15 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -49,7 +49,8 @@ const { ObjectSetPrototypeOf, ReflectOwnKeys, RegExp, - RegExpPrototypeTest, + RegExpPrototypeExec, + RegExpPrototypeSymbolReplace, RegExpPrototypeToString, SafeStringIterator, SafeMap, @@ -64,7 +65,6 @@ const { StringPrototypePadEnd, StringPrototypePadStart, StringPrototypeRepeat, - StringPrototypeReplace, StringPrototypeSlice, StringPrototypeSplit, StringPrototypeToLowerCase, @@ -104,9 +104,6 @@ const { } = require('internal/util'); const { - codes: { - ERR_INVALID_ARG_TYPE - }, isStackOverflowError } = require('internal/errors'); @@ -146,11 +143,17 @@ const { } = require('internal/validators'); let hexSlice; +let internalUrl; + +function pathToFileUrlHref(filepath) { + internalUrl ??= require('internal/url'); + return internalUrl.pathToFileURL(filepath).href; +} const builtInObjects = new SafeSet( ArrayPrototypeFilter( ObjectGetOwnPropertyNames(globalThis), - (e) => RegExpPrototypeTest(/^[A-Z][a-zA-Z0-9]+$/, e) + (e) => RegExpPrototypeExec(/^[A-Z][a-zA-Z0-9]+$/, e) !== null ) ); @@ -349,6 +352,7 @@ function inspect(value, opts) { inspect.custom = customInspectSymbol; ObjectDefineProperty(inspect, 'defaultOptions', { + __proto__: null, get() { return inspectDefaultOptions; }, @@ -413,6 +417,7 @@ inspect.colors = ObjectAssign(ObjectCreate(null), { function defineColorAlias(target, alias) { ObjectDefineProperty(inspect.colors, alias, { + __proto__: null, get() { return this[target]; }, @@ -497,10 +502,10 @@ function strEscape(str) { } // Some magic numbers that worked out fine while benchmarking with v8 6.0 - if (str.length < 5000 && !RegExpPrototypeTest(escapeTest, str)) + if (str.length < 5000 && RegExpPrototypeExec(escapeTest, str) === null) return addQuotes(str, singleQuote); if (str.length > 100) { - str = StringPrototypeReplace(str, escapeReplace, escapeFn); + str = RegExpPrototypeSymbolReplace(escapeReplace, str, escapeFn); return addQuotes(str, singleQuote); } @@ -526,7 +531,7 @@ function strEscape(str) { continue; } } - result += `${StringPrototypeSlice(str, last, i)}${`\\u${point.toString(16)}`}`; + result += `${StringPrototypeSlice(str, last, i)}\\u${point.toString(16)}`; last = i + 1; } } @@ -579,7 +584,7 @@ function getConstructorName(obj, ctx, recurseTimes, protoProps) { addPrototypeProperties( ctx, tmp, firstProto || tmp, recurseTimes, protoProps); } - return descriptor.value.name; + return String(descriptor.value.name); } obj = ObjectGetPrototypeOf(obj); @@ -759,6 +764,9 @@ function formatValue(ctx, value, recurseTimes, typedArray) { // any proxy handlers. const proxy = getProxyDetails(value, !!ctx.showProxy); if (proxy !== undefined) { + if (proxy === null || proxy[0] === null) { + return ctx.stylize('', 'special'); + } if (ctx.showProxy) { return formatProxy(ctx, proxy, recurseTimes); } @@ -854,7 +862,7 @@ function formatRaw(ctx, value, recurseTimes, typedArray) { // Iterators and the rest are split to reduce checks. // We have to check all values in case the constructor is set to null. // Otherwise it would not possible to identify all types properly. - if (value[SymbolIterator] || constructor === null) { + if (SymbolIterator in value || constructor === null) { noIterator = false; if (ArrayIsArray(value)) { // Only set the constructor for non ordinary ("Array [...]") arrays. @@ -1278,6 +1286,58 @@ function removeDuplicateErrorKeys(ctx, keys, err, stack) { } } +function markNodeModules(ctx, line) { + let tempLine = ''; + let nodeModule; + let pos = 0; + while ((nodeModule = nodeModulesRegExp.exec(line)) !== null) { + // '/node_modules/'.length === 14 + tempLine += line.slice(pos, nodeModule.index + 14); + tempLine += ctx.stylize(nodeModule[1], 'module'); + pos = nodeModule.index + nodeModule[0].length; + } + if (pos !== 0) { + line = tempLine + line.slice(pos); + } + return line; +} + +function markCwd(ctx, line, workingDirectory) { + let cwdStartPos = line.indexOf(workingDirectory); + let tempLine = ''; + let cwdLength = workingDirectory.length; + if (cwdStartPos !== -1) { + if (line.slice(cwdStartPos - 7, cwdStartPos) === 'file://') { + cwdLength += 7; + cwdStartPos -= 7; + } + const start = line[cwdStartPos - 1] === '(' ? cwdStartPos - 1 : cwdStartPos; + const end = start !== cwdStartPos && line.endsWith(')') ? -1 : line.length; + const workingDirectoryEndPos = cwdStartPos + cwdLength + 1; + const cwdSlice = line.slice(start, workingDirectoryEndPos); + + tempLine += line.slice(0, start); + tempLine += ctx.stylize(cwdSlice, 'undefined'); + tempLine += line.slice(workingDirectoryEndPos, end); + if (end === -1) { + tempLine += ctx.stylize(')', 'undefined'); + } + } else { + tempLine += line; + } + return tempLine; +} + +function safeGetCWD() { + let workingDirectory; + try { + workingDirectory = process.cwd(); + } catch { + return; + } + return workingDirectory; +} + function formatError(err, constructor, tag, ctx, keys) { const name = err.name != null ? String(err.name) : 'Error'; let stack = getStackString(err); @@ -1289,6 +1349,12 @@ function formatError(err, constructor, tag, ctx, keys) { keys.push('cause'); } + // Print errors aggregated into AggregateError + if (ArrayIsArray(err.errors) && + (keys.length === 0 || !keys.includes('errors'))) { + keys.push('errors'); + } + stack = improveStack(stack, constructor, name, tag); // Ignore the error message if it's contained in the stack. @@ -1301,25 +1367,30 @@ function formatError(err, constructor, tag, ctx, keys) { stack = `[${stack}]`; } else { let newStack = stack.slice(0, stackStart); - const lines = getStackFrames(ctx, err, stack.slice(stackStart + 1)); + const stackFramePart = stack.slice(stackStart + 1); + const lines = getStackFrames(ctx, err, stackFramePart); if (ctx.colors) { // Highlight userland code and node modules. - for (const line of lines) { + const workingDirectory = safeGetCWD(); + let esmWorkingDirectory; + for (let line of lines) { const core = line.match(coreModuleRegExp); if (core !== null && NativeModule.exists(core[1])) { newStack += `\n${ctx.stylize(line, 'undefined')}`; } else { - // This adds underscores to all node_modules to quickly identify them. - let nodeModule; newStack += '\n'; - let pos = 0; - while ((nodeModule = nodeModulesRegExp.exec(line)) !== null) { - // '/node_modules/'.length === 14 - newStack += line.slice(pos, nodeModule.index + 14); - newStack += ctx.stylize(nodeModule[1], 'module'); - pos = nodeModule.index + nodeModule[0].length; + + line = markNodeModules(ctx, line); + if (workingDirectory !== undefined) { + let newLine = markCwd(ctx, line, workingDirectory); + if (newLine === line) { + esmWorkingDirectory ??= pathToFileUrlHref(workingDirectory); + newLine = markCwd(ctx, line, esmWorkingDirectory); + } + line = newLine; } - newStack += pos === 0 ? line : line.slice(pos); + + newStack += line; } } } else { @@ -1525,8 +1596,9 @@ function formatPrimitive(fn, value, ctx) { trailer = `... ${remaining} more character${remaining > 1 ? 's' : ''}`; } if (ctx.compact !== true && - // TODO(BridgeAR): Add unicode support. Use the readline getStringWidth - // function. + // We do not support handling unicode characters width with + // the readline getStringWidth function as there are + // performance implications. value.length > kMinLineLength && value.length > ctx.breakLength - ctx.indentationLvl - 4) { return value @@ -1622,9 +1694,10 @@ function formatArrayBuffer(ctx, value) { } if (hexSlice === undefined) hexSlice = uncurryThis(require('buffer').Buffer.prototype.hexSlice); - let str = StringPrototypeTrim(StringPrototypeReplace( + let str = StringPrototypeTrim(RegExpPrototypeSymbolReplace( + /(.{2})/g, hexSlice(buffer, 0, MathMin(ctx.maxArrayLength, buffer.length)), - /(.{2})/g, '$1 ')); + '$1 ')); const remaining = buffer.length - ctx.maxArrayLength; if (remaining > 0) str += ` ... ${remaining} more byte${remaining > 1 ? 's' : ''}`; @@ -1856,18 +1929,19 @@ function formatProperty(ctx, value, recurseTimes, key, type, desc, return str; } if (typeof key === 'symbol') { - const tmp = StringPrototypeReplace( + const tmp = RegExpPrototypeSymbolReplace( + strEscapeSequencesReplacer, SymbolPrototypeToString(key), - strEscapeSequencesReplacer, escapeFn + escapeFn ); name = `[${ctx.stylize(tmp, 'symbol')}]`; } else if (key === '__proto__') { name = "['__proto__']"; } else if (desc.enumerable === false) { - const tmp = StringPrototypeReplace(key, - strEscapeSequencesReplacer, escapeFn); + const tmp = RegExpPrototypeSymbolReplace( + strEscapeSequencesReplacer, key, escapeFn); name = `[${tmp}]`; - } else if (RegExpPrototypeTest(keyStrRegExp, key)) { + } else if (RegExpPrototypeExec(keyStrRegExp, key) !== null) { name = ctx.stylize(key, 'name'); } else { name = ctx.stylize(strEscape(key), 'string'); @@ -1967,6 +2041,9 @@ function hasBuiltInToString(value) { const getFullProxy = false; const proxyTarget = getProxyDetails(value, getFullProxy); if (proxyTarget !== undefined) { + if (proxyTarget === null) { + return true; + } value = proxyTarget; } @@ -2022,10 +2099,7 @@ function format(...args) { } function formatWithOptions(inspectOptions, ...args) { - if (typeof inspectOptions !== 'object' || inspectOptions === null) { - throw new ERR_INVALID_ARG_TYPE( - 'inspectOptions', 'object', inspectOptions); - } + validateObject(inspectOptions, 'inspectOptions', { allowArray: true }); return formatWithOptionsInternal(inspectOptions, args); } @@ -2282,10 +2356,11 @@ function stripVTControlCharacters(str) { } module.exports = { + identicalSequenceRange, inspect, + inspectDefaultOptions, format, formatWithOptions, getStringWidth, - inspectDefaultOptions, - stripVTControlCharacters + stripVTControlCharacters, }; diff --git a/lib/internal/util/inspector.js b/lib/internal/util/inspector.js index a94289b17d012e..95ef370c3c495f 100644 --- a/lib/internal/util/inspector.js +++ b/lib/internal/util/inspector.js @@ -52,6 +52,7 @@ function wrapConsole(consoleFromNode, consoleFromVM) { consoleFromNode[key] ); ObjectDefineProperty(consoleFromNode[key], 'name', { + __proto__: null, value: key }); } else { diff --git a/lib/internal/util/parse_args/parse_args.js b/lib/internal/util/parse_args/parse_args.js new file mode 100644 index 00000000000000..05f4c6cffbdbd7 --- /dev/null +++ b/lib/internal/util/parse_args/parse_args.js @@ -0,0 +1,344 @@ +'use strict'; + +const { + ArrayPrototypeForEach, + ArrayPrototypeIncludes, + ArrayPrototypeMap, + ArrayPrototypePush, + ArrayPrototypePushApply, + ArrayPrototypeShift, + ArrayPrototypeSlice, + ArrayPrototypeUnshiftApply, + ObjectEntries, + ObjectPrototypeHasOwnProperty: ObjectHasOwn, + StringPrototypeCharAt, + StringPrototypeIndexOf, + StringPrototypeSlice, + StringPrototypeStartsWith, +} = primordials; + +const { + validateArray, + validateBoolean, + validateObject, + validateString, + validateUnion, +} = require('internal/validators'); + +const { + findLongOptionForShort, + isLoneLongOption, + isLoneShortOption, + isLongOptionAndValue, + isOptionValue, + isOptionLikeValue, + isShortOptionAndValue, + isShortOptionGroup, + objectGetOwn, + optionsGetOwn, +} = require('internal/util/parse_args/utils'); + +const { + codes: { + ERR_INVALID_ARG_VALUE, + ERR_PARSE_ARGS_INVALID_OPTION_VALUE, + ERR_PARSE_ARGS_UNKNOWN_OPTION, + ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL, + }, +} = require('internal/errors'); + +const { + kEmptyObject, +} = require('internal/util'); + + +function getMainArgs() { + // Work out where to slice process.argv for user supplied arguments. + + // Check node options for scenarios where user CLI args follow executable. + const execArgv = process.execArgv; + if (ArrayPrototypeIncludes(execArgv, '-e') || + ArrayPrototypeIncludes(execArgv, '--eval') || + ArrayPrototypeIncludes(execArgv, '-p') || + ArrayPrototypeIncludes(execArgv, '--print')) { + return ArrayPrototypeSlice(process.argv, 1); + } + + // Normally first two arguments are executable and script, then CLI arguments + return ArrayPrototypeSlice(process.argv, 2); +} + +/** + * In strict mode, throw for possible usage errors like --foo --bar + * + * @param {object} token - from tokens as available from parseArgs + */ +function checkOptionLikeValue(token) { + if (!token.inlineValue && isOptionLikeValue(token.value)) { + // Only show short example if user used short option. + const example = StringPrototypeStartsWith(token.rawName, '--') ? + `'${token.rawName}=-XYZ'` : + `'--${token.name}=-XYZ' or '${token.rawName}-XYZ'`; + const errorMessage = `Option '${token.rawName}' argument is ambiguous. +Did you forget to specify the option argument for '${token.rawName}'? +To specify an option argument starting with a dash use ${example}.`; + throw new ERR_PARSE_ARGS_INVALID_OPTION_VALUE(errorMessage); + } +} + +/** + * In strict mode, throw for usage errors. + * + * @param {object} config - from config passed to parseArgs + * @param {object} token - from tokens as available from parseArgs + */ +function checkOptionUsage(config, token) { + if (!ObjectHasOwn(config.options, token.name)) { + throw new ERR_PARSE_ARGS_UNKNOWN_OPTION( + token.rawName, config.allowPositionals); + } + + const short = optionsGetOwn(config.options, token.name, 'short'); + const shortAndLong = `${short ? `-${short}, ` : ''}--${token.name}`; + const type = optionsGetOwn(config.options, token.name, 'type'); + if (type === 'string' && typeof token.value !== 'string') { + throw new ERR_PARSE_ARGS_INVALID_OPTION_VALUE(`Option '${shortAndLong} ' argument missing`); + } + // (Idiomatic test for undefined||null, expecting undefined.) + if (type === 'boolean' && token.value != null) { + throw new ERR_PARSE_ARGS_INVALID_OPTION_VALUE(`Option '${shortAndLong}' does not take an argument`); + } +} + + +/** + * Store the option value in `values`. + * + * @param {string} longOption - long option name e.g. 'foo' + * @param {string|undefined} optionValue - value from user args + * @param {object} options - option configs, from parseArgs({ options }) + * @param {object} values - option values returned in `values` by parseArgs + */ +function storeOption(longOption, optionValue, options, values) { + if (longOption === '__proto__') { + return; // No. Just no. + } + + // We store based on the option value rather than option type, + // preserving the users intent for author to deal with. + const newValue = optionValue ?? true; + if (optionsGetOwn(options, longOption, 'multiple')) { + // Always store value in array, including for boolean. + // values[longOption] starts out not present, + // first value is added as new array [newValue], + // subsequent values are pushed to existing array. + // (note: values has null prototype, so simpler usage) + if (values[longOption]) { + ArrayPrototypePush(values[longOption], newValue); + } else { + values[longOption] = [newValue]; + } + } else { + values[longOption] = newValue; + } +} + +/** + * Process args and turn into identified tokens: + * - option (along with value, if any) + * - positional + * - option-terminator + * + * @param {string[]} args - from parseArgs({ args }) or mainArgs + * @param {object} options - option configs, from parseArgs({ options }) + */ +function argsToTokens(args, options) { + const tokens = []; + let index = -1; + let groupCount = 0; + + const remainingArgs = ArrayPrototypeSlice(args); + while (remainingArgs.length > 0) { + const arg = ArrayPrototypeShift(remainingArgs); + const nextArg = remainingArgs[0]; + if (groupCount > 0) + groupCount--; + else + index++; + + // Check if `arg` is an options terminator. + // Guideline 10 in https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html + if (arg === '--') { + // Everything after a bare '--' is considered a positional argument. + ArrayPrototypePush(tokens, { kind: 'option-terminator', index }); + ArrayPrototypePushApply( + tokens, ArrayPrototypeMap(remainingArgs, (arg) => { + return { kind: 'positional', index: ++index, value: arg }; + }) + ); + break; // Finished processing args, leave while loop. + } + + if (isLoneShortOption(arg)) { + // e.g. '-f' + const shortOption = StringPrototypeCharAt(arg, 1); + const longOption = findLongOptionForShort(shortOption, options); + let value; + let inlineValue; + if (optionsGetOwn(options, longOption, 'type') === 'string' && + isOptionValue(nextArg)) { + // e.g. '-f', 'bar' + value = ArrayPrototypeShift(remainingArgs); + inlineValue = false; + } + ArrayPrototypePush( + tokens, + { kind: 'option', name: longOption, rawName: arg, + index, value, inlineValue }); + if (value != null) ++index; + continue; + } + + if (isShortOptionGroup(arg, options)) { + // Expand -fXzy to -f -X -z -y + const expanded = []; + for (let index = 1; index < arg.length; index++) { + const shortOption = StringPrototypeCharAt(arg, index); + const longOption = findLongOptionForShort(shortOption, options); + if (optionsGetOwn(options, longOption, 'type') !== 'string' || + index === arg.length - 1) { + // Boolean option, or last short in group. Well formed. + ArrayPrototypePush(expanded, `-${shortOption}`); + } else { + // String option in middle. Yuck. + // Expand -abfFILE to -a -b -fFILE + ArrayPrototypePush(expanded, `-${StringPrototypeSlice(arg, index)}`); + break; // finished short group + } + } + ArrayPrototypeUnshiftApply(remainingArgs, expanded); + groupCount = expanded.length; + continue; + } + + if (isShortOptionAndValue(arg, options)) { + // e.g. -fFILE + const shortOption = StringPrototypeCharAt(arg, 1); + const longOption = findLongOptionForShort(shortOption, options); + const value = StringPrototypeSlice(arg, 2); + ArrayPrototypePush( + tokens, + { kind: 'option', name: longOption, rawName: `-${shortOption}`, + index, value, inlineValue: true }); + continue; + } + + if (isLoneLongOption(arg)) { + // e.g. '--foo' + const longOption = StringPrototypeSlice(arg, 2); + let value; + let inlineValue; + if (optionsGetOwn(options, longOption, 'type') === 'string' && + isOptionValue(nextArg)) { + // e.g. '--foo', 'bar' + value = ArrayPrototypeShift(remainingArgs); + inlineValue = false; + } + ArrayPrototypePush( + tokens, + { kind: 'option', name: longOption, rawName: arg, + index, value, inlineValue }); + if (value != null) ++index; + continue; + } + + if (isLongOptionAndValue(arg)) { + // e.g. --foo=bar + const equalIndex = StringPrototypeIndexOf(arg, '='); + const longOption = StringPrototypeSlice(arg, 2, equalIndex); + const value = StringPrototypeSlice(arg, equalIndex + 1); + ArrayPrototypePush( + tokens, + { kind: 'option', name: longOption, rawName: `--${longOption}`, + index, value, inlineValue: true }); + continue; + } + + ArrayPrototypePush(tokens, { kind: 'positional', index, value: arg }); + } + return tokens; +} + +const parseArgs = (config = kEmptyObject) => { + const args = objectGetOwn(config, 'args') ?? getMainArgs(); + const strict = objectGetOwn(config, 'strict') ?? true; + const allowPositionals = objectGetOwn(config, 'allowPositionals') ?? !strict; + const returnTokens = objectGetOwn(config, 'tokens') ?? false; + const options = objectGetOwn(config, 'options') ?? { __proto__: null }; + // Bundle these up for passing to strict-mode checks. + const parseConfig = { args, strict, options, allowPositionals }; + + // Validate input configuration. + validateArray(args, 'args'); + validateBoolean(strict, 'strict'); + validateBoolean(allowPositionals, 'allowPositionals'); + validateBoolean(returnTokens, 'tokens'); + validateObject(options, 'options'); + ArrayPrototypeForEach( + ObjectEntries(options), + ({ 0: longOption, 1: optionConfig }) => { + validateObject(optionConfig, `options.${longOption}`); + + // type is required + validateUnion(objectGetOwn(optionConfig, 'type'), `options.${longOption}.type`, ['string', 'boolean']); + + if (ObjectHasOwn(optionConfig, 'short')) { + const shortOption = optionConfig.short; + validateString(shortOption, `options.${longOption}.short`); + if (shortOption.length !== 1) { + throw new ERR_INVALID_ARG_VALUE( + `options.${longOption}.short`, + shortOption, + 'must be a single character' + ); + } + } + + if (ObjectHasOwn(optionConfig, 'multiple')) { + validateBoolean(optionConfig.multiple, `options.${longOption}.multiple`); + } + } + ); + + // Phase 1: identify tokens + const tokens = argsToTokens(args, options); + + // Phase 2: process tokens into parsed option values and positionals + const result = { + values: { __proto__: null }, + positionals: [], + }; + if (returnTokens) { + result.tokens = tokens; + } + ArrayPrototypeForEach(tokens, (token) => { + if (token.kind === 'option') { + if (strict) { + checkOptionUsage(parseConfig, token); + checkOptionLikeValue(token); + } + storeOption(token.name, token.value, options, result.values); + } else if (token.kind === 'positional') { + if (!allowPositionals) { + throw new ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL(token.value); + } + ArrayPrototypePush(result.positionals, token.value); + } + }); + + return result; +}; + +module.exports = { + parseArgs, +}; diff --git a/lib/internal/util/parse_args/utils.js b/lib/internal/util/parse_args/utils.js new file mode 100644 index 00000000000000..906aa1b21a7a95 --- /dev/null +++ b/lib/internal/util/parse_args/utils.js @@ -0,0 +1,184 @@ +'use strict'; + +const { + ArrayPrototypeFind, + ObjectEntries, + ObjectPrototypeHasOwnProperty: ObjectHasOwn, + StringPrototypeCharAt, + StringPrototypeIncludes, + StringPrototypeStartsWith, +} = primordials; + +const { + validateObject, +} = require('internal/validators'); + +// These are internal utilities to make the parsing logic easier to read, and +// add lots of detail for the curious. They are in a separate file to allow +// unit testing, although that is not essential (this could be rolled into +// main file and just tested implicitly via API). +// +// These routines are for internal use, not for export to client. + +/** + * Return the named property, but only if it is an own property. + */ +function objectGetOwn(obj, prop) { + if (ObjectHasOwn(obj, prop)) + return obj[prop]; +} + +/** + * Return the named options property, but only if it is an own property. + */ +function optionsGetOwn(options, longOption, prop) { + if (ObjectHasOwn(options, longOption)) + return objectGetOwn(options[longOption], prop); +} + +/** + * Determines if the argument may be used as an option value. + * @example + * isOptionValue('V') // returns true + * isOptionValue('-v') // returns true (greedy) + * isOptionValue('--foo') // returns true (greedy) + * isOptionValue(undefined) // returns false + */ +function isOptionValue(value) { + if (value == null) return false; + + // Open Group Utility Conventions are that an option-argument + // is the argument after the option, and may start with a dash. + return true; // greedy! +} + +/** + * Detect whether there is possible confusion and user may have omitted + * the option argument, like `--port --verbose` when `port` of type:string. + * In strict mode we throw errors if value is option-like. + */ +function isOptionLikeValue(value) { + if (value == null) return false; + + return value.length > 1 && StringPrototypeCharAt(value, 0) === '-'; +} + +/** + * Determines if `arg` is just a short option. + * @example '-f' + */ +function isLoneShortOption(arg) { + return arg.length === 2 && + StringPrototypeCharAt(arg, 0) === '-' && + StringPrototypeCharAt(arg, 1) !== '-'; +} + +/** + * Determines if `arg` is a lone long option. + * @example + * isLoneLongOption('a') // returns false + * isLoneLongOption('-a') // returns false + * isLoneLongOption('--foo') // returns true + * isLoneLongOption('--foo=bar') // returns false + */ +function isLoneLongOption(arg) { + return arg.length > 2 && + StringPrototypeStartsWith(arg, '--') && + !StringPrototypeIncludes(arg, '=', 3); +} + +/** + * Determines if `arg` is a long option and value in the same argument. + * @example + * isLongOptionAndValue('--foo') // returns false + * isLongOptionAndValue('--foo=bar') // returns true + */ +function isLongOptionAndValue(arg) { + return arg.length > 2 && + StringPrototypeStartsWith(arg, '--') && + StringPrototypeIncludes(arg, '=', 3); +} + +/** + * Determines if `arg` is a short option group. + * + * See Guideline 5 of the [Open Group Utility Conventions](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html). + * One or more options without option-arguments, followed by at most one + * option that takes an option-argument, should be accepted when grouped + * behind one '-' delimiter. + * @example + * isShortOptionGroup('-a', {}) // returns false + * isShortOptionGroup('-ab', {}) // returns true + * // -fb is an option and a value, not a short option group + * isShortOptionGroup('-fb', { + * options: { f: { type: 'string' } } + * }) // returns false + * isShortOptionGroup('-bf', { + * options: { f: { type: 'string' } } + * }) // returns true + * // -bfb is an edge case, return true and caller sorts it out + * isShortOptionGroup('-bfb', { + * options: { f: { type: 'string' } } + * }) // returns true + */ +function isShortOptionGroup(arg, options) { + if (arg.length <= 2) return false; + if (StringPrototypeCharAt(arg, 0) !== '-') return false; + if (StringPrototypeCharAt(arg, 1) === '-') return false; + + const firstShort = StringPrototypeCharAt(arg, 1); + const longOption = findLongOptionForShort(firstShort, options); + return optionsGetOwn(options, longOption, 'type') !== 'string'; +} + +/** + * Determine if arg is a short string option followed by its value. + * @example + * isShortOptionAndValue('-a', {}); // returns false + * isShortOptionAndValue('-ab', {}); // returns false + * isShortOptionAndValue('-fFILE', { + * options: { foo: { short: 'f', type: 'string' }} + * }) // returns true + */ +function isShortOptionAndValue(arg, options) { + validateObject(options, 'options'); + + if (arg.length <= 2) return false; + if (StringPrototypeCharAt(arg, 0) !== '-') return false; + if (StringPrototypeCharAt(arg, 1) === '-') return false; + + const shortOption = StringPrototypeCharAt(arg, 1); + const longOption = findLongOptionForShort(shortOption, options); + return optionsGetOwn(options, longOption, 'type') === 'string'; +} + +/** + * Find the long option associated with a short option. Looks for a configured + * `short` and returns the short option itself if a long option is not found. + * @example + * findLongOptionForShort('a', {}) // returns 'a' + * findLongOptionForShort('b', { + * options: { bar: { short: 'b' } } + * }) // returns 'bar' + */ +function findLongOptionForShort(shortOption, options) { + validateObject(options, 'options'); + const longOptionEntry = ArrayPrototypeFind( + ObjectEntries(options), + ({ 1: optionConfig }) => objectGetOwn(optionConfig, 'short') === shortOption + ); + return longOptionEntry?.[0] ?? shortOption; +} + +module.exports = { + findLongOptionForShort, + isLoneLongOption, + isLoneShortOption, + isLongOptionAndValue, + isOptionValue, + isOptionLikeValue, + isShortOptionAndValue, + isShortOptionGroup, + objectGetOwn, + optionsGetOwn, +}; diff --git a/lib/internal/util/types.js b/lib/internal/util/types.js index aca7dbc4b2f2b6..544f4c3da49c72 100644 --- a/lib/internal/util/types.js +++ b/lib/internal/util/types.js @@ -68,7 +68,7 @@ module.exports = { isFloat32Array, isFloat64Array, isBigInt64Array, - isBigUint64Array + isBigUint64Array, }; let isCryptoKey; @@ -76,6 +76,7 @@ let isKeyObject; ObjectDefineProperties(module.exports, { isKeyObject: { + __proto__: null, configurable: false, enumerable: true, value(obj) { @@ -91,6 +92,7 @@ ObjectDefineProperties(module.exports, { } }, isCryptoKey: { + __proto__: null, configurable: false, enumerable: true, value(obj) { diff --git a/lib/internal/v8/startup_snapshot.js b/lib/internal/v8/startup_snapshot.js new file mode 100644 index 00000000000000..6a6a6c47e85708 --- /dev/null +++ b/lib/internal/v8/startup_snapshot.js @@ -0,0 +1,111 @@ +'use strict'; + +const { + validateFunction, +} = require('internal/validators'); +const { + ERR_NOT_BUILDING_SNAPSHOT, + ERR_DUPLICATE_STARTUP_SNAPSHOT_MAIN_FUNCTION +} = require('internal/errors'); + +const { + setSerializeCallback, + setDeserializeCallback, + setDeserializeMainFunction: _setDeserializeMainFunction, + markBootstrapComplete +} = internalBinding('mksnapshot'); + +function isBuildingSnapshot() { + // For now this is the only way to build a snapshot. + return require('internal/options').getOptionValue('--build-snapshot'); +} + +function throwIfNotBuildingSnapshot() { + if (!isBuildingSnapshot()) { + throw new ERR_NOT_BUILDING_SNAPSHOT(); + } +} + +const deserializeCallbacks = []; +let deserializeCallbackIsSet = false; +function runDeserializeCallbacks() { + while (deserializeCallbacks.length > 0) { + const { 0: callback, 1: data } = deserializeCallbacks.shift(); + callback(data); + } +} + +function addDeserializeCallback(callback, data) { + throwIfNotBuildingSnapshot(); + validateFunction(callback, 'callback'); + if (!deserializeCallbackIsSet) { + // TODO(joyeecheung): when the main function handling is done in JS, + // the deserialize callbacks can always be invoked. For now only + // store it in C++ when it's actually used to avoid unnecessary + // C++ -> JS costs. + setDeserializeCallback(runDeserializeCallbacks); + deserializeCallbackIsSet = true; + } + deserializeCallbacks.push([callback, data]); +} + +const serializeCallbacks = []; +function runSerializeCallbacks() { + while (serializeCallbacks.length > 0) { + const { 0: callback, 1: data } = serializeCallbacks.shift(); + callback(data); + } + // Remove the hooks from the snapshot. + require('v8').startupSnapshot = undefined; +} + +function addSerializeCallback(callback, data) { + throwIfNotBuildingSnapshot(); + validateFunction(callback, 'callback'); + serializeCallbacks.push([callback, data]); +} + +function initializeCallbacks() { + // Only run the serialize callbacks in snapshot building mode, otherwise + // they throw. + if (isBuildingSnapshot()) { + setSerializeCallback(runSerializeCallbacks); + } +} + +let deserializeMainIsSet = false; +function setDeserializeMainFunction(callback, data) { + throwIfNotBuildingSnapshot(); + // TODO(joyeecheung): In lib/internal/bootstrap/node.js, create a default + // main function to run the lib/internal/main scripts and make sure that + // the main function set in the snapshot building process takes precedence. + validateFunction(callback, 'callback'); + if (deserializeMainIsSet) { + throw new ERR_DUPLICATE_STARTUP_SNAPSHOT_MAIN_FUNCTION(); + } + deserializeMainIsSet = true; + + _setDeserializeMainFunction(function deserializeMain() { + const { + prepareMainThreadExecution + } = require('internal/bootstrap/pre_execution'); + + // This should be in sync with run_main_module.js until we make that + // a built-in main function. + prepareMainThreadExecution(true); + markBootstrapComplete(); + callback(data); + }); +} + +module.exports = { + initializeCallbacks, + runDeserializeCallbacks, + // Exposed to require('v8').startupSnapshot + namespace: { + addDeserializeCallback, + addSerializeCallback, + setDeserializeMainFunction, + isBuildingSnapshot + } +}; diff --git a/lib/internal/validators.js b/lib/internal/validators.js index 9fed5b363db9cb..11cccf2040cd36 100644 --- a/lib/internal/validators.js +++ b/lib/internal/validators.js @@ -6,10 +6,11 @@ const { ArrayPrototypeJoin, ArrayPrototypeMap, NumberIsInteger, + NumberIsNaN, NumberMAX_SAFE_INTEGER, NumberMIN_SAFE_INTEGER, NumberParseInt, - RegExpPrototypeTest, + RegExpPrototypeExec, String, StringPrototypeToUpperCase, StringPrototypeTrim, @@ -59,7 +60,7 @@ const modeDesc = 'must be a 32-bit unsigned integer or an octal string'; function parseFileMode(value, name, def) { value ??= def; if (typeof value === 'string') { - if (!RegExpPrototypeTest(octalReg, value)) { + if (RegExpPrototypeExec(octalReg, value) === null) { throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc); } value = NumberParseInt(value, 8); @@ -83,10 +84,10 @@ const validateInteger = hideStackFrames( const validateInt32 = hideStackFrames( (value, name, min = -2147483648, max = 2147483647) => { // The defaults for min and max correspond to the limits of 32-bit integers. + if (typeof value !== 'number') { + throw new ERR_INVALID_ARG_TYPE(name, 'number', value); + } if (!isInt32(value)) { - if (typeof value !== 'number') { - throw new ERR_INVALID_ARG_TYPE(name, 'number', value); - } if (!NumberIsInteger(value)) { throw new ERR_OUT_OF_RANGE(name, 'an integer', value); } @@ -99,10 +100,10 @@ const validateInt32 = hideStackFrames( ); const validateUint32 = hideStackFrames((value, name, positive) => { + if (typeof value !== 'number') { + throw new ERR_INVALID_ARG_TYPE(name, 'number', value); + } if (!isUint32(value)) { - if (typeof value !== 'number') { - throw new ERR_INVALID_ARG_TYPE(name, 'number', value); - } if (!NumberIsInteger(value)) { throw new ERR_OUT_OF_RANGE(name, 'an integer', value); } @@ -120,9 +121,17 @@ function validateString(value, name) { throw new ERR_INVALID_ARG_TYPE(name, 'string', value); } -function validateNumber(value, name) { +function validateNumber(value, name, min = undefined, max) { if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value); + + if ((min != null && value < min) || (max != null && value > max) || + ((min != null || max != null) && NumberIsNaN(value))) { + throw new ERR_OUT_OF_RANGE( + name, + `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`, + value); + } } const validateOneOf = hideStackFrames((value, name, oneOf) => { @@ -248,6 +257,12 @@ const validateUndefined = hideStackFrames((value, name) => { throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value); }); +function validateUnion(value, name, union) { + if (!ArrayPrototypeIncludes(union, value)) { + throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value); + } +} + module.exports = { isInt32, isUint32, @@ -255,6 +270,7 @@ module.exports = { validateArray, validateBoolean, validateBuffer, + validateCallback, validateEncoding, validateFunction, validateInt32, @@ -268,6 +284,6 @@ module.exports = { validateString, validateUint32, validateUndefined, - validateCallback, + validateUnion, validateAbortSignal, }; diff --git a/lib/internal/vm/module.js b/lib/internal/vm/module.js index 911b8f4426e586..fe72c16a97665d 100644 --- a/lib/internal/vm/module.js +++ b/lib/internal/vm/module.js @@ -10,8 +10,8 @@ const { ObjectDefineProperty, ObjectGetPrototypeOf, ObjectSetPrototypeOf, - PromiseAll, ReflectApply, + SafePromiseAll, SafeWeakMap, Symbol, SymbolToStringTag, @@ -24,9 +24,10 @@ const { isArrayBufferView, } = require('internal/util/types'); const { - getConstructorOf, customInspectSymbol, emitExperimentalWarning, + getConstructorOf, + kEmptyObject, } = require('internal/util'); const { ERR_INVALID_ARG_TYPE, @@ -34,7 +35,7 @@ const { ERR_VM_MODULE_ALREADY_LINKED, ERR_VM_MODULE_DIFFERENT_CONTEXT, ERR_VM_MODULE_CANNOT_CREATE_CACHED_DATA, - ERR_VM_MODULE_LINKING_ERRORED, + ERR_VM_MODULE_LINK_FAILURE, ERR_VM_MODULE_NOT_MODULE, ERR_VM_MODULE_STATUS, } = require('internal/errors').codes; @@ -112,6 +113,7 @@ class Module { } else { identifier = `${defaultModuleName}(0)`; ObjectDefineProperty(context, kPerContextModuleId, { + __proto__: null, value: 1, writable: true, enumerable: false, @@ -198,7 +200,7 @@ class Module { this[kWrap].instantiate(); } - async evaluate(options = {}) { + async evaluate(options = kEmptyObject) { if (this[kWrap] === undefined) { throw new ERR_VM_MODULE_NOT_MODULE(); } @@ -239,6 +241,7 @@ class Module { ObjectSetPrototypeOf(o, ObjectGetPrototypeOf(this)); ObjectDefineProperty(o, SymbolToStringTag, { + __proto__: null, value: constructor.name, configurable: true }); @@ -256,7 +259,7 @@ class SourceTextModule extends Module { #error = kNoError; #statusOverride; - constructor(sourceText, options = {}) { + constructor(sourceText, options = kEmptyObject) { validateString(sourceText, 'sourceText'); validateObject(options, 'options'); @@ -317,9 +320,7 @@ class SourceTextModule extends Module { throw new ERR_VM_MODULE_DIFFERENT_CONTEXT(); } if (module.status === 'errored') { - // TODO(devsnek): replace with ERR_VM_MODULE_LINK_FAILURE - // and error cause proposal. - throw new ERR_VM_MODULE_LINKING_ERRORED(); + throw new ERR_VM_MODULE_LINK_FAILURE(`request for '${identifier}' resolved to an errored module`, module.error); } if (module.status === 'unlinked') { await module[kLink](linker); @@ -329,7 +330,7 @@ class SourceTextModule extends Module { try { if (promises !== undefined) { - await PromiseAll(promises); + await SafePromiseAll(promises); } } catch (e) { this.#error = e; @@ -387,7 +388,7 @@ class SourceTextModule extends Module { } class SyntheticModule extends Module { - constructor(exportNames, evaluateCallback, options = {}) { + constructor(exportNames, evaluateCallback, options = kEmptyObject) { if (!ArrayIsArray(exportNames) || ArrayPrototypeSome(exportNames, (e) => typeof e !== 'string')) { throw new ERR_INVALID_ARG_TYPE('exportNames', diff --git a/lib/internal/webstreams/adapters.js b/lib/internal/webstreams/adapters.js index 1058c1c0356ead..0fd571bfe11d19 100644 --- a/lib/internal/webstreams/adapters.js +++ b/lib/internal/webstreams/adapters.js @@ -55,6 +55,7 @@ const { const { createDeferredPromise, + kEmptyObject, } = require('internal/util'); const { @@ -198,7 +199,7 @@ function newWritableStreamFromStreamWritable(streamWritable) { * }} [options] * @returns {Writable} */ -function newStreamWritableFromWritableStream(writableStream, options = {}) { +function newStreamWritableFromWritableStream(writableStream, options = kEmptyObject) { if (!isWritableStream(writableStream)) { throw new ERR_INVALID_ARG_TYPE( 'writableStream', @@ -441,7 +442,7 @@ function newReadableStreamFromStreamReadable(streamReadable) { * }} [options] * @returns {Readable} */ -function newStreamReadableFromReadableStream(readableStream, options = {}) { +function newStreamReadableFromReadableStream(readableStream, options = kEmptyObject) { if (!isReadableStream(readableStream)) { throw new ERR_INVALID_ARG_TYPE( 'readableStream', @@ -585,7 +586,7 @@ function newReadableWritablePairFromDuplex(duplex) { * }} [options] * @returns {Duplex} */ -function newStreamDuplexFromReadableWritablePair(pair = {}, options = {}) { +function newStreamDuplexFromReadableWritablePair(pair = kEmptyObject, options = kEmptyObject) { validateObject(pair, 'pair'); const { readable: readableStream, @@ -876,7 +877,7 @@ function newWritableStreamFromStreamBase(streamBase, strategy) { * @param {QueuingStrategy} strategy * @returns {ReadableStream} */ -function newReadableStreamFromStreamBase(streamBase, strategy, options = {}) { +function newReadableStreamFromStreamBase(streamBase, strategy, options = kEmptyObject) { validateObject(streamBase, 'streamBase'); validateObject(options, 'options'); diff --git a/lib/internal/webstreams/encoding.js b/lib/internal/webstreams/encoding.js index 9cc76fae2ce10d..233a09a216d72d 100644 --- a/lib/internal/webstreams/encoding.js +++ b/lib/internal/webstreams/encoding.js @@ -24,6 +24,7 @@ const { const { customInspectSymbol: kInspect, + kEmptyObject, kEnumerableProperty, } = require('internal/util'); @@ -114,7 +115,7 @@ class TextDecoderStream { * ignoreBOM? : boolean, * }} [options] */ - constructor(encoding = 'utf-8', options = {}) { + constructor(encoding = 'utf-8', options = kEmptyObject) { this[kType] = 'TextDecoderStream'; this[kHandle] = new TextDecoder(encoding, options); this[kTransform] = new TransformStream({ diff --git a/lib/internal/webstreams/readablestream.js b/lib/internal/webstreams/readablestream.js index bea1084bdd72ad..0e7d33e9b71eb3 100644 --- a/lib/internal/webstreams/readablestream.js +++ b/lib/internal/webstreams/readablestream.js @@ -50,6 +50,7 @@ const { const { createDeferredPromise, customInspectSymbol: kInspect, + kEmptyObject, kEnumerableProperty, } = require('internal/util'); @@ -206,7 +207,7 @@ class ReadableStream { * @param {UnderlyingSource} [source] * @param {QueuingStrategy} [strategy] */ - constructor(source = {}, strategy = {}) { + constructor(source = {}, strategy = kEmptyObject) { if (source === null) throw new ERR_INVALID_ARG_VALUE('source', 'Object', source); this[kState] = { @@ -296,7 +297,7 @@ class ReadableStream { * }} [options] * @returns {ReadableStreamReader} */ - getReader(options = {}) { + getReader(options = kEmptyObject) { if (!isReadableStream(this)) throw new ERR_INVALID_THIS('ReadableStream'); validateObject(options, 'options', { nullable: true, allowFunction: true }); @@ -315,7 +316,7 @@ class ReadableStream { * @param {StreamPipeOptions} [options] * @returns {ReadableStream} */ - pipeThrough(transform, options = {}) { + pipeThrough(transform, options = kEmptyObject) { if (!isReadableStream(this)) throw new ERR_INVALID_THIS('ReadableStream'); const readable = transform?.readable; @@ -365,7 +366,7 @@ class ReadableStream { * @param {StreamPipeOptions} [options] * @returns {Promise} */ - pipeTo(destination, options = {}) { + pipeTo(destination, options = kEmptyObject) { try { if (!isReadableStream(this)) throw new ERR_INVALID_THIS('ReadableStream'); @@ -416,7 +417,7 @@ class ReadableStream { * }} [options] * @returns {AsyncIterable} */ - values(options = {}) { + values(options = kEmptyObject) { if (!isReadableStream(this)) throw new ERR_INVALID_THIS('ReadableStream'); validateObject(options, 'options'); @@ -585,6 +586,7 @@ class ReadableStream { ObjectDefineProperties(ReadableStream.prototype, { [SymbolAsyncIterator]: { + __proto__: null, configurable: true, enumerable: false, writable: true, @@ -1179,9 +1181,9 @@ function createTeeReadableStream(start, pull, cancel) { setupReadableStreamDefaultControllerFromSource( this, ObjectCreate(null, { - start: { value: start }, - pull: { value: pull }, - cancel: { value: cancel } + start: { __proto__: null, value: start }, + pull: { __proto__: null, value: pull }, + cancel: { __proto__: null, value: cancel } }), 1, () => 1); diff --git a/lib/internal/webstreams/transfer.js b/lib/internal/webstreams/transfer.js index 985d7e86738f35..4467d90bb5a90f 100644 --- a/lib/internal/webstreams/transfer.js +++ b/lib/internal/webstreams/transfer.js @@ -73,16 +73,19 @@ class CloneableDOMException extends DOMException { [kDeserialize]({ message, name, code }) { ObjectDefineProperties(this, { message: { + __proto__: null, configurable: true, enumerable: true, get() { return message; }, }, name: { + __proto__: null, configurable: true, enumerable: true, get() { return name; }, }, code: { + __proto__: null, configurable: true, enumerable: true, get() { return code; }, diff --git a/lib/internal/webstreams/util.js b/lib/internal/webstreams/util.js index 305064ba05a490..524093dc74df66 100644 --- a/lib/internal/webstreams/util.js +++ b/lib/internal/webstreams/util.js @@ -49,11 +49,13 @@ const kType = Symbol('kType'); const AsyncIterator = ObjectCreate(AsyncIteratorPrototype, { next: { + __proto__: null, configurable: true, enumerable: true, writable: true, }, return: { + __proto__: null, configurable: true, enumerable: true, writable: true, diff --git a/lib/internal/worker.js b/lib/internal/worker.js index 1d2cd8cefd2996..8e396195209b83 100644 --- a/lib/internal/worker.js +++ b/lib/internal/worker.js @@ -13,7 +13,7 @@ const { Promise, PromiseResolve, ReflectApply, - RegExpPrototypeTest, + RegExpPrototypeExec, SafeArrayIterator, SafeMap, String, @@ -55,6 +55,7 @@ const { } = workerIo; const { deserializeError } = require('internal/error_serdes'); const { fileURLToPath, isURLInstance, pathToFileURL } = require('internal/url'); +const { kEmptyObject } = require('internal/util'); const { validateArray } = require('internal/validators'); const { @@ -118,7 +119,7 @@ function assignEnvironmentData(data) { } class Worker extends EventEmitter { - constructor(filename, options = {}) { + constructor(filename, options = kEmptyObject) { super(); debug(`[${threadId}] create new worker`, filename, options); if (options.execArgv) @@ -157,7 +158,7 @@ class Worker extends EventEmitter { filename ); } else if (path.isAbsolute(filename) || - RegExpPrototypeTest(/^\.\.?[\\/]/, filename)) { + RegExpPrototypeExec(/^\.\.?[\\/]/, filename) !== null) { filename = path.resolve(filename); url = pathToFileURL(filename); } else { diff --git a/lib/internal/worker/io.js b/lib/internal/worker/io.js index a2d6fe42a32f1a..f7e6e51ae27db0 100644 --- a/lib/internal/worker/io.js +++ b/lib/internal/worker/io.js @@ -18,7 +18,10 @@ const { SymbolFor, } = primordials; -const { kEnumerableProperty } = require('internal/util'); +const { + kEmptyObject, + kEnumerableProperty, +} = require('internal/util'); const { handle_onclose: handleOnCloseSymbol, @@ -91,7 +94,7 @@ const messageTypes = { // We have to mess with the MessagePort prototype a bit, so that a) we can make // it inherit from NodeEventTarget, even though it is a C++ class, and b) we do // not provide methods that are not present in the Browser and not documented -// on our side (e.g. hasRef). +// on our side (e.g. stopMessagePort). // Save a copy of the original set of methods as a shallow clone. const MessagePortPrototype = ObjectCreate( ObjectGetPrototypeOf(MessagePort.prototype), @@ -103,6 +106,9 @@ ObjectSetPrototypeOf(MessagePort.prototype, NodeEventTarget.prototype); // changing the prototype of MessagePort.prototype implicitly removed them. MessagePort.prototype.ref = MessagePortPrototype.ref; MessagePort.prototype.unref = MessagePortPrototype.unref; +MessagePort.prototype.hasRef = function() { + return !!FunctionPrototypeCall(MessagePortPrototype.hasRef, this); +}; function validateMessagePort(port, name) { if (!checkMessagePort(port)) @@ -120,7 +126,7 @@ class MessageEvent extends Event { lastEventId = '', source = null, ports = [], - } = {}) { + } = kEmptyObject) { super(type); this[kData] = data; this[kOrigin] = `${origin}`; @@ -137,6 +143,7 @@ class MessageEvent extends Event { ObjectDefineProperties(MessageEvent.prototype, { data: { + __proto__: null, get() { if (!isMessageEvent(this)) throw new ERR_INVALID_THIS('MessageEvent'); @@ -147,6 +154,7 @@ ObjectDefineProperties(MessageEvent.prototype, { set: undefined, }, origin: { + __proto__: null, get() { if (!isMessageEvent(this)) throw new ERR_INVALID_THIS('MessageEvent'); @@ -157,6 +165,7 @@ ObjectDefineProperties(MessageEvent.prototype, { set: undefined, }, lastEventId: { + __proto__: null, get() { if (!isMessageEvent(this)) throw new ERR_INVALID_THIS('MessageEvent'); @@ -167,6 +176,7 @@ ObjectDefineProperties(MessageEvent.prototype, { set: undefined, }, source: { + __proto__: null, get() { if (!isMessageEvent(this)) throw new ERR_INVALID_THIS('MessageEvent'); @@ -177,6 +187,7 @@ ObjectDefineProperties(MessageEvent.prototype, { set: undefined, }, ports: { + __proto__: null, get() { if (!isMessageEvent(this)) throw new ERR_INVALID_THIS('MessageEvent'); @@ -193,6 +204,7 @@ ObjectDefineProperty( MessagePort.prototype, kCreateEvent, { + __proto__: null, value: function(data, type) { if (type !== 'message' && type !== 'messageerror') { return ReflectApply(originalCreateEvent, this, arguments); @@ -217,6 +229,7 @@ defineEventHandler(MessagePort.prototype, 'message'); defineEventHandler(MessagePort.prototype, 'messageerror'); ObjectDefineProperty(MessagePort.prototype, onInitSymbol, { + __proto__: null, enumerable: true, writable: false, value: oninit @@ -234,6 +247,7 @@ function onclose() { } ObjectDefineProperty(MessagePort.prototype, handleOnCloseSymbol, { + __proto__: null, enumerable: false, writable: false, value: onclose @@ -246,6 +260,7 @@ MessagePort.prototype.close = function(cb) { }; ObjectDefineProperty(MessagePort.prototype, inspect.custom, { + __proto__: null, enumerable: false, writable: false, value: function inspect() { // eslint-disable-line func-name-matching diff --git a/lib/internal/worker/js_transferable.js b/lib/internal/worker/js_transferable.js index 7bd6c8cafc32e2..337413f0258a7e 100644 --- a/lib/internal/worker/js_transferable.js +++ b/lib/internal/worker/js_transferable.js @@ -5,6 +5,7 @@ const { ObjectGetOwnPropertyDescriptors, ObjectGetPrototypeOf, ObjectSetPrototypeOf, + ObjectValues, ReflectConstruct, StringPrototypeSplit, } = primordials; @@ -40,7 +41,14 @@ function setup() { function makeTransferable(obj) { const inst = ReflectConstruct(JSTransferable, [], obj.constructor); - ObjectDefineProperties(inst, ObjectGetOwnPropertyDescriptors(obj)); + const properties = ObjectGetOwnPropertyDescriptors(obj); + const propertiesValues = ObjectValues(properties); + for (let i = 0; i < propertiesValues.length; i++) { + // We want to use null-prototype objects to not rely on globally mutable + // %Object.prototype%. + ObjectSetPrototypeOf(propertiesValues[i], null); + } + ObjectDefineProperties(inst, properties); ObjectSetPrototypeOf(inst, ObjectGetPrototypeOf(obj)); return inst; } diff --git a/lib/net.js b/lib/net.js index 53ecbd9a1f5f4d..e3d490ceed8ed9 100644 --- a/lib/net.js +++ b/lib/net.js @@ -31,6 +31,7 @@ const { ObjectDefineProperty, ObjectSetPrototypeOf, Symbol, + ObjectCreate, } = primordials; const EventEmitter = require('events'); @@ -89,6 +90,7 @@ const { ERR_INVALID_ARG_VALUE, ERR_INVALID_FD_TYPE, ERR_INVALID_IP_ADDRESS, + ERR_INVALID_HANDLE_TYPE, ERR_SERVER_ALREADY_LISTEN, ERR_SERVER_NOT_RUNNING, ERR_SOCKET_CLOSED, @@ -130,6 +132,13 @@ const isWindows = process.platform === 'win32'; const noop = () => {}; +const kPerfHooksNetConnectContext = Symbol('kPerfHooksNetConnectContext'); +const { + hasObserver, + startPerf, + stopPerf, +} = require('internal/perf/observe'); + function getFlags(ipv6Only) { return ipv6Only === true ? TCPConstants.UV_TCP_IPV6ONLY : 0; } @@ -373,6 +382,7 @@ function Socket(options) { // we need to let it do that by turning it into a writable, own // property. ObjectDefineProperty(this._handle, 'bytesWritten', { + __proto__: null, value: 0, writable: true }); } @@ -545,7 +555,16 @@ Socket.prototype.setKeepAlive = function(enable, initialDelayMsecs) { return this; } - if (this._handle.setKeepAlive && enable !== this[kSetKeepAlive]) { + if (!this._handle.setKeepAlive) { + return this; + } + + if (enable !== this[kSetKeepAlive] || + ( + enable && + this[kSetKeepAliveInitialDelay] !== initialDelay + ) + ) { this[kSetKeepAlive] = enable; this[kSetKeepAliveInitialDelay] = initialDelay; this._handle.setKeepAlive(enable, initialDelay); @@ -561,12 +580,14 @@ Socket.prototype.address = function() { ObjectDefineProperty(Socket.prototype, '_connecting', { + __proto__: null, get: function() { return this.connecting; } }); ObjectDefineProperty(Socket.prototype, 'pending', { + __proto__: null, get() { return !this._handle || this.connecting; }, @@ -575,6 +596,7 @@ ObjectDefineProperty(Socket.prototype, 'pending', { ObjectDefineProperty(Socket.prototype, 'readyState', { + __proto__: null, get: function() { if (this.connecting) { return 'opening'; @@ -591,6 +613,7 @@ ObjectDefineProperty(Socket.prototype, 'readyState', { ObjectDefineProperty(Socket.prototype, 'bufferSize', { + __proto__: null, get: function() { if (this._handle) { return this.writableLength; @@ -599,6 +622,7 @@ ObjectDefineProperty(Socket.prototype, 'bufferSize', { }); ObjectDefineProperty(Socket.prototype, kUpdateTimer, { + __proto__: null, get: function() { return this._unrefTimer; } @@ -634,6 +658,21 @@ Socket.prototype.end = function(data, encoding, callback) { return this; }; +Socket.prototype.resetAndDestroy = function() { + if (this._handle) { + if (!(this._handle instanceof TCP)) + throw new ERR_INVALID_HANDLE_TYPE(); + if (this.connecting) { + debug('reset wait for connection'); + this.once('connect', () => this._reset()); + } else { + this._reset(); + } + } else { + this.destroy(new ERR_SOCKET_CLOSED()); + } + return this; +}; Socket.prototype.pause = function() { if (this[kBuffer] && !this.connecting && this._handle && @@ -704,10 +743,20 @@ Socket.prototype._destroy = function(exception, cb) { this[kBytesRead] = this._handle.bytesRead; this[kBytesWritten] = this._handle.bytesWritten; - this._handle.close(() => { - debug('emit close'); - this.emit('close', isException); - }); + if (this.resetAndClosing) { + this.resetAndClosing = false; + const err = this._handle.reset(() => { + debug('emit close'); + this.emit('close', isException); + }); + if (err) + this.emit('error', errnoException(err, 'reset')); + } else { + this._handle.close(() => { + debug('emit close'); + this.emit('close', isException); + }); + } this._handle.onread = noop; this._handle = null; this._sockname = null; @@ -726,19 +775,27 @@ Socket.prototype._destroy = function(exception, cb) { } }; +Socket.prototype._reset = function() { + debug('reset connection'); + this.resetAndClosing = true; + return this.destroy(); +}; + Socket.prototype._getpeername = function() { if (!this._handle || !this._handle.getpeername) { return this._peername || {}; } else if (!this._peername) { - this._peername = {}; - // FIXME(bnoordhuis) Throw when the return value is not 0? - this._handle.getpeername(this._peername); + const out = {}; + const err = this._handle.getpeername(out); + if (err) return out; + this._peername = out; } return this._peername; }; function protoGetter(name, callback) { ObjectDefineProperty(Socket.prototype, name, { + __proto__: null, configurable: false, enumerable: true, get: callback @@ -952,6 +1009,8 @@ function internalConnect( const ex = exceptionWithHostPort(err, 'connect', address, port, details); self.destroy(ex); + } else if ((addressType === 6 || addressType === 4) && hasObserver('net')) { + startPerf(self, kPerfHooksNetConnectContext, { type: 'net', name: 'connect', detail: { host: address, port } }); } } @@ -1177,9 +1236,10 @@ function afterConnect(status, handle, req, readable, writable) { // this doesn't actually consume any bytes, because len=0. if (readable && !self.isPaused()) self.read(0); - + if (self[kPerfHooksNetConnectContext] && hasObserver('net')) { + stopPerf(self, kPerfHooksNetConnectContext); + } } else { - self.connecting = false; let details; if (req.localAddress && req.localPort) { details = req.localAddress + ':' + req.localPort; @@ -1408,7 +1468,7 @@ function emitListeningNT(self) { function listenInCluster(server, address, port, addressType, - backlog, fd, exclusive, flags) { + backlog, fd, exclusive, flags, options) { exclusive = !!exclusive; if (cluster === undefined) cluster = require('cluster'); @@ -1428,8 +1488,8 @@ function listenInCluster(server, address, port, addressType, fd: fd, flags, backlog, + ...options, }; - // Get the primary's server handle, and listen on it cluster._getServer(server, serverQuery, listenOnPrimaryHandle); @@ -1516,8 +1576,18 @@ Server.prototype.listen = function(...args) { if (options.path && isPipeName(options.path)) { const pipeName = this._pipeName = options.path; backlog = options.backlog || backlogFromArgs; - listenInCluster(this, pipeName, -1, -1, - backlog, undefined, options.exclusive); + listenInCluster(this, + pipeName, + -1, + -1, + backlog, + undefined, + options.exclusive, + undefined, + { + readableAll: options.readableAll, + writableAll: options.writableAll, + }); if (!this._handle) { // Failed and an error shall be emitted in the next tick. @@ -1563,6 +1633,7 @@ function lookupAndListen(self, port, address, backlog, exclusive, flags) { } ObjectDefineProperty(Server.prototype, 'listening', { + __proto__: null, get: function() { return !!this._handle; }, @@ -1596,6 +1667,25 @@ function onconnection(err, clientHandle) { } if (self.maxConnections && self._connections >= self.maxConnections) { + if (clientHandle.getsockname || clientHandle.getpeername) { + const data = ObjectCreate(null); + if (clientHandle.getsockname) { + const localInfo = ObjectCreate(null); + clientHandle.getsockname(localInfo); + data.localAddress = localInfo.address; + data.localPort = localInfo.port; + } + if (clientHandle.getpeername) { + const remoteInfo = ObjectCreate(null); + clientHandle.getpeername(remoteInfo); + data.remoteAddress = remoteInfo.address; + data.remotePort = remoteInfo.port; + data.remoteFamily = remoteInfo.family; + } + self.emit('drop', data); + } else { + self.emit('drop'); + } clientHandle.close(); return; } @@ -1608,12 +1698,14 @@ function onconnection(err, clientHandle) { writable: true }); - if (self.noDelay && handle.setNoDelay) { - handle.setNoDelay(true); + if (self.noDelay && clientHandle.setNoDelay) { + socket[kSetNoDelay] = true; + clientHandle.setNoDelay(true); } - - if (self.keepAlive && self.setKeepAlive) { - handle.setKeepAlive(true, handle.keepAliveInitialDelay); + if (self.keepAlive && clientHandle.setKeepAlive) { + socket[kSetKeepAlive] = true; + socket[kSetKeepAliveInitialDelay] = self.keepAliveInitialDelay; + clientHandle.setKeepAlive(true, self.keepAliveInitialDelay); } self._connections++; @@ -1745,11 +1837,13 @@ Server.prototype[EventEmitter.captureRejectionSymbol] = function( // Legacy alias on the C++ wrapper object. This is not public API, so we may // want to runtime-deprecate it at some point. There's no hurry, though. ObjectDefineProperty(TCP.prototype, 'owner', { + __proto__: null, get() { return this[owner_symbol]; }, set(v) { return this[owner_symbol] = v; } }); ObjectDefineProperty(Socket.prototype, '_handle', { + __proto__: null, get() { return this[kHandle]; }, set(v) { return this[kHandle] = v; } }); diff --git a/lib/os.js b/lib/os.js index f0f0fdb15f61c0..81bbe15a9d2a42 100644 --- a/lib/os.js +++ b/lib/os.js @@ -119,15 +119,15 @@ function loadavg() { * logical CPU core. * * @returns {Array<{ - * model: string - * speed: number + * model: string, + * speed: number, * times: { - * user: number - * nice: number - * sys: number - * idle: number - * irq: number - * } + * user: number, + * nice: number, + * sys: number, + * idle: number, + * irq: number, + * }, * }>} */ function cpus() { @@ -171,7 +171,7 @@ platform[SymbolToPrimitive] = () => process.platform; * @returns {string} */ function tmpdir() { - var path; + let path; if (isWindows) { path = process.env.TEMP || process.env.TMP || @@ -223,7 +223,7 @@ function getCIDR(address, netmask, family) { } const parts = StringPrototypeSplit(netmask, split); - for (var i = 0; i < parts.length; i++) { + for (let i = 0; i < parts.length; i++) { if (parts[i] !== '') { const binary = NumberParseInt(parts[i], range); const tmp = countBinaryOnes(binary); @@ -246,13 +246,13 @@ function getCIDR(address, netmask, family) { /** * @returns {Record>} */ function networkInterfaces() { @@ -261,7 +261,7 @@ function networkInterfaces() { if (data === undefined) return result; - for (var i = 0; i < data.length; i += 7) { + for (let i = 0; i < data.length; i += 7) { const name = data[i]; const entry = { address: data[i + 1], @@ -329,11 +329,11 @@ function getPriority(pid) { * `'buffer'`, the `username`, `shell`, and `homedir` values will * be `Buffer` instances. * @returns {{ - * uid: number - * gid: number - * username: string - * homedir: string - * shell: string | null + * uid: number, + * gid: number, + * username: string, + * homedir: string, + * shell: string | null, * }} */ function userInfo(options) { @@ -372,12 +372,14 @@ module.exports = { ObjectDefineProperties(module.exports, { constants: { + __proto__: null, configurable: false, enumerable: true, value: constants }, EOL: { + __proto__: null, configurable: true, enumerable: true, writable: false, @@ -385,6 +387,7 @@ ObjectDefineProperties(module.exports, { }, devNull: { + __proto__: null, configurable: true, enumerable: true, writable: false, diff --git a/lib/perf_hooks.js b/lib/perf_hooks.js index 74ba890f537bc2..e84c8948f3c609 100644 --- a/lib/perf_hooks.js +++ b/lib/perf_hooks.js @@ -9,6 +9,7 @@ const { } = internalBinding('performance'); const { PerformanceEntry } = require('internal/perf/performance_entry'); +const { PerformanceResourceTiming } = require('internal/perf/resource_timing'); const { PerformanceObserver, PerformanceObserverEntryList, @@ -31,12 +32,14 @@ module.exports = { PerformanceMeasure, PerformanceObserver, PerformanceObserverEntryList, + PerformanceResourceTiming, monitorEventLoopDelay, createHistogram, performance: new InternalPerformance(), }; ObjectDefineProperty(module.exports, 'constants', { + __proto__: null, configurable: false, enumerable: true, value: constants diff --git a/lib/readline.js b/lib/readline.js index a6eecc763ae3a1..f80f383170814b 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -100,7 +100,10 @@ const { kSubstringSearch, } = require('internal/readline/utils'); -const { promisify } = require('internal/util'); +const { + kEmptyObject, + promisify, +} = require('internal/util'); const { StringDecoder } = require('string_decoder'); @@ -365,6 +368,7 @@ ObjectSetPrototypeOf(Interface.prototype, EventEmitter.prototype); ObjectSetPrototypeOf(Interface, EventEmitter); ObjectDefineProperty(Interface.prototype, 'columns', { + __proto__: null, configurable: true, enumerable: true, get: function() { @@ -450,7 +454,7 @@ Interface.prototype.question = function(query, options, cb) { } }; -Interface.prototype.question[promisify.custom] = function(query, options) { +Interface.prototype.question[promisify.custom] = function question(query, options) { options = typeof options === 'object' && options !== null ? options : {}; if (options.signal && options.signal.aborted) { @@ -987,7 +991,7 @@ Interface.prototype._moveCursor = function(dx) { }; function _ttyWriteDumb(s, key) { - key = key || {}; + key = key || kEmptyObject; if (key.name === 'escape') return; diff --git a/lib/repl.js b/lib/repl.js index eb9152d9ce0266..8a0533191c3970 100644 --- a/lib/repl.js +++ b/lib/repl.js @@ -74,32 +74,32 @@ const { ObjectKeys, ObjectSetPrototypeOf, Promise, - PromiseRace, ReflectApply, RegExp, RegExpPrototypeExec, RegExpPrototypeSymbolReplace, - RegExpPrototypeTest, + SafePromiseRace, + RegExpPrototypeSymbolSplit, SafeSet, SafeWeakSet, StringPrototypeCharAt, StringPrototypeCodePointAt, StringPrototypeEndsWith, StringPrototypeIncludes, - StringPrototypeMatch, StringPrototypeRepeat, - StringPrototypeReplace, StringPrototypeSlice, StringPrototypeSplit, StringPrototypeStartsWith, StringPrototypeTrim, StringPrototypeTrimLeft, + StringPrototypeToLocaleLowerCase, Symbol, SyntaxError, SyntaxErrorPrototype, globalThis, } = primordials; +const { NativeModule } = require('internal/bootstrap/loaders'); const { makeRequireFunction, addBuiltinLibsToObject @@ -129,6 +129,10 @@ let _builtinLibs = ArrayPrototypeFilter( ); const nodeSchemeBuiltinLibs = ArrayPrototypeMap( _builtinLibs, (lib) => `node:${lib}`); +ArrayPrototypeForEach( + NativeModule.getSchemeOnlyModuleNames(), + (lib) => ArrayPrototypePush(nodeSchemeBuiltinLibs, `node:${lib}`), +); const domain = require('domain'); let debug = require('internal/util/debuglog').debuglog('repl', (fn) => { debug = fn; @@ -280,6 +284,7 @@ function REPLServer(prompt, (options.preview !== undefined ? !!options.preview : !eval_); ObjectDefineProperty(this, 'inputStream', { + __proto__: null, get: pendingDeprecation ? deprecate(() => this.input, 'repl.inputStream and repl.outputStream are deprecated. ' + @@ -296,6 +301,7 @@ function REPLServer(prompt, configurable: true }); ObjectDefineProperty(this, 'outputStream', { + __proto__: null, get: pendingDeprecation ? deprecate(() => this.output, 'repl.inputStream and repl.outputStream are deprecated. ' + @@ -415,8 +421,8 @@ function REPLServer(prompt, // to wrap it in parentheses, so that it will be interpreted as // an expression. Note that if the above condition changes, // lib/internal/repl/utils.js needs to be changed to match. - if (RegExpPrototypeTest(/^\s*{/, code) && - !RegExpPrototypeTest(/;\s*$/, code)) { + if (RegExpPrototypeExec(/^\s*{/, code) !== null && + RegExpPrototypeExec(/;\s*$/, code) === null) { code = `(${StringPrototypeTrim(code)})\n`; wrappedCmd = true; } @@ -491,7 +497,7 @@ function REPLServer(prompt, while (true) { try { if (self.replMode === module.exports.REPL_MODE_STRICT && - !RegExpPrototypeTest(/^\s*$/, code)) { + RegExpPrototypeExec(/^\s*$/, code) === null) { // "void 0" keeps the repl from returning "use strict" as the result // value for statements and declarations that don't return a value. code = `'use strict'; void 0;\n${code}`; @@ -527,7 +533,7 @@ function REPLServer(prompt, // This will set the values from `savedRegExMatches` to corresponding // predefined RegExp properties `RegExp.$1`, `RegExp.$2` ... `RegExp.$9` - RegExpPrototypeTest(regExMatcher, + RegExpPrototypeExec(regExMatcher, ArrayPrototypeJoin(savedRegExMatches, sep)); let finished = false; @@ -605,12 +611,12 @@ function REPLServer(prompt, }; prioritizedSigintQueue.add(sigintListener); }); - promise = PromiseRace([promise, interrupt]); + promise = SafePromiseRace([promise, interrupt]); } (async () => { try { - const result = await promise; + const result = (await promise)?.value; finishExecution(null, result); } catch (err) { if (err && process.domain) { @@ -675,22 +681,24 @@ function REPLServer(prompt, if (e.stack) { if (e.name === 'SyntaxError') { // Remove stack trace. - e.stack = StringPrototypeReplace(StringPrototypeReplace(e.stack, - /^REPL\d+:\d+\r?\n/, ''), - /^\s+at\s.*\n?/gm, ''); + e.stack = RegExpPrototypeSymbolReplace( + /^\s+at\s.*\n?/gm, + RegExpPrototypeSymbolReplace(/^REPL\d+:\d+\r?\n/, e.stack, ''), + ''); const importErrorStr = 'Cannot use import statement outside a ' + 'module'; if (StringPrototypeIncludes(e.message, importErrorStr)) { e.message = 'Cannot use import statement inside the Node.js ' + 'REPL, alternatively use dynamic import'; - e.stack = StringPrototypeReplace(e.stack, - /SyntaxError:.*\n/, - `SyntaxError: ${e.message}\n`); + e.stack = RegExpPrototypeSymbolReplace( + /SyntaxError:.*\n/, + e.stack, + `SyntaxError: ${e.message}\n`); } } else if (self.replMode === module.exports.REPL_MODE_STRICT) { - e.stack = StringPrototypeReplace( - e.stack, + e.stack = RegExpPrototypeSymbolReplace( /(\s+at\s+REPL\d+:)(\d+)/, + e.stack, (_, pre, line) => pre + (line - 1) ); } @@ -720,13 +728,13 @@ function REPLServer(prompt, if (errStack === '') { errStack = self.writer(e); } - const lines = StringPrototypeSplit(errStack, /(?<=\n)/); + const lines = RegExpPrototypeSymbolSplit(/(?<=\n)/, errStack); let matched = false; errStack = ''; ArrayPrototypeForEach(lines, (line) => { if (!matched && - RegExpPrototypeTest(/^\[?([A-Z][a-z0-9_]*)*Error/, line)) { + RegExpPrototypeExec(/^\[?([A-Z][a-z0-9_]*)*Error/, line) !== null) { errStack += writer.options.breakLength >= line.length ? `Uncaught ${line}` : `Uncaught:\n${line}`; @@ -778,6 +786,7 @@ function REPLServer(prompt, if (options[kStandaloneREPL]) { ObjectDefineProperty(inspect, 'replDefaults', { + __proto__: null, get() { return writer.options; }, @@ -853,7 +862,7 @@ function REPLServer(prompt, // code alignment const matches = self._sawKeyPress ? - StringPrototypeMatch(cmd, /^\s+/) : null; + RegExpPrototypeExec(/^\s+/, cmd) : null; if (matches) { const prefix = matches[0]; self.write(prefix); @@ -873,7 +882,7 @@ function REPLServer(prompt, if (StringPrototypeCharAt(trimmedCmd, 0) === '.' && StringPrototypeCharAt(trimmedCmd, 1) !== '.' && NumberIsNaN(NumberParseFloat(trimmedCmd))) { - const matches = StringPrototypeMatch(trimmedCmd, /^\.([^\s]+)\s*(.*)$/); + const matches = RegExpPrototypeExec(/^\.([^\s]+)\s*(.*)$/, trimmedCmd); const keyword = matches && matches[1]; const rest = matches && matches[2]; if (ReflectApply(_parseREPLKeyword, self, [keyword, rest]) === true) { @@ -1078,12 +1087,16 @@ REPLServer.prototype.createContext = function() { // Only set properties that do not already exist as a global builtin. if (!globalBuiltins.has(name)) { ObjectDefineProperty(context, name, - ObjectGetOwnPropertyDescriptor(globalThis, name)); + { + __proto__: null, + ...ObjectGetOwnPropertyDescriptor(globalThis, name), + }); } }); context.global = context; const _console = new Console(this.output); ObjectDefineProperty(context, 'console', { + __proto__: null, configurable: true, writable: true, value: _console @@ -1094,11 +1107,13 @@ REPLServer.prototype.createContext = function() { replModule.paths = CJSModule._resolveLookupPaths('', parentModule); ObjectDefineProperty(context, 'module', { + __proto__: null, configurable: true, writable: true, value: replModule }); ObjectDefineProperty(context, 'require', { + __proto__: null, configurable: true, writable: true, value: makeRequireFunction(replModule) @@ -1118,6 +1133,7 @@ REPLServer.prototype.resetContext = function() { this.lines.level = []; ObjectDefineProperty(this.context, '_', { + __proto__: null, configurable: true, get: () => this.last, set: (value) => { @@ -1130,6 +1146,7 @@ REPLServer.prototype.resetContext = function() { }); ObjectDefineProperty(this.context, '_error', { + __proto__: null, configurable: true, get: () => this.lastError, set: (value) => { @@ -1245,9 +1262,9 @@ function gracefulReaddir(...args) { } } -function completeFSFunctions(line) { +function completeFSFunctions(match) { let baseName = ''; - let filePath = StringPrototypeMatch(line, fsAutoCompleteRE)[1]; + let filePath = match[1]; let fileList = gracefulReaddir(filePath, { withFileTypes: true }); if (!fileList) { @@ -1285,17 +1302,18 @@ function complete(line, callback) { // Ignore right whitespace. It could change the outcome. line = StringPrototypeTrimLeft(line); - // REPL commands (e.g. ".break"). let filter = ''; - if (RegExpPrototypeTest(/^\s*\.(\w*)$/, line)) { + + let match; + // REPL commands (e.g. ".break"). + if ((match = RegExpPrototypeExec(/^\s*\.(\w*)$/, line)) !== null) { ArrayPrototypePush(completionGroups, ObjectKeys(this.commands)); - completeOn = StringPrototypeMatch(line, /^\s*\.(\w*)$/)[1]; + completeOn = match[1]; if (completeOn.length) { filter = completeOn; } - } else if (RegExpPrototypeTest(requireRE, line)) { + } else if ((match = RegExpPrototypeExec(requireRE, line)) !== null) { // require('...') - const match = StringPrototypeMatch(line, requireRE); completeOn = match[1]; filter = completeOn; if (this.allowBlockingCompletions) { @@ -1312,7 +1330,7 @@ function complete(line, callback) { group = ['./', '../']; } else if (completeOn === '..') { group = ['../']; - } else if (RegExpPrototypeTest(/^\.\.?\//, completeOn)) { + } else if (RegExpPrototypeExec(/^\.\.?\//, completeOn) !== null) { paths = [process.cwd()]; } else { paths = ArrayPrototypeConcat(module.paths, CJSModule.globalPaths); @@ -1322,7 +1340,7 @@ function complete(line, callback) { dir = path.resolve(dir, subdir); const dirents = gracefulReaddir(dir, { withFileTypes: true }) || []; ArrayPrototypeForEach(dirents, (dirent) => { - if (RegExpPrototypeTest(versionedFileNamesRe, dirent.name) || + if (RegExpPrototypeExec(versionedFileNamesRe, dirent.name) !== null || dirent.name === '.npm') { // Exclude versioned names that 'npm' installs. return; @@ -1352,9 +1370,8 @@ function complete(line, callback) { } ArrayPrototypePush(completionGroups, _builtinLibs, nodeSchemeBuiltinLibs); - } else if (RegExpPrototypeTest(importRE, line)) { + } else if ((match = RegExpPrototypeExec(importRE, line)) !== null) { // import('...') - const match = StringPrototypeMatch(line, importRE); completeOn = match[1]; filter = completeOn; if (this.allowBlockingCompletions) { @@ -1375,7 +1392,7 @@ function complete(line, callback) { group = ['./', '../']; } else if (completeOn === '..') { group = ['../']; - } else if (RegExpPrototypeTest(/^\.\.?\//, completeOn)) { + } else if (RegExpPrototypeExec(/^\.\.?\//, completeOn) !== null) { paths = [process.cwd()]; } else { paths = ArrayPrototypeSlice(module.paths); @@ -1387,7 +1404,7 @@ function complete(line, callback) { const dirents = gracefulReaddir(dir, { withFileTypes: true }) || []; ArrayPrototypeForEach(dirents, (dirent) => { const { name } = dirent; - if (RegExpPrototypeTest(versionedFileNamesRe, name) || + if (RegExpPrototypeExec(versionedFileNamesRe, name) !== null || name === '.npm') { // Exclude versioned names that 'npm' installs. return; @@ -1420,9 +1437,9 @@ function complete(line, callback) { } ArrayPrototypePush(completionGroups, _builtinLibs, nodeSchemeBuiltinLibs); - } else if (RegExpPrototypeTest(fsAutoCompleteRE, line) && + } else if ((match = RegExpPrototypeExec(fsAutoCompleteRE, line)) !== null && this.allowBlockingCompletions) { - ({ 0: completionGroups, 1: completeOn } = completeFSFunctions(line)); + ({ 0: completionGroups, 1: completeOn } = completeFSFunctions(match)); // Handle variable member lookup. // We support simple chained expressions like the following (no function // calls, etc.). That is for simplicity and also because we *eval* that @@ -1434,7 +1451,7 @@ function complete(line, callback) { // foo<|> # all scope vars with filter 'foo' // foo.<|> # completions for 'foo' with filter '' } else if (line.length === 0 || - RegExpPrototypeTest(/\w|\.|\$/, line[line.length - 1])) { + RegExpPrototypeExec(/\w|\.|\$/, line[line.length - 1]) !== null) { const { 0: match } = RegExpPrototypeExec(simpleExpressionRE, line) || ['']; if (line.length !== 0 && !match) { completionGroupsLoaded(); @@ -1529,11 +1546,16 @@ function complete(line, callback) { // Filter, sort (within each group), uniq and merge the completion groups. if (completionGroups.length && filter) { const newCompletionGroups = []; + const lowerCaseFilter = StringPrototypeToLocaleLowerCase(filter); ArrayPrototypeForEach(completionGroups, (group) => { - const filteredGroup = ArrayPrototypeFilter( - group, - (str) => StringPrototypeStartsWith(str, filter) - ); + const filteredGroup = ArrayPrototypeFilter(group, (str) => { + // Filter is always case-insensitive following chromium autocomplete + // behavior. + return StringPrototypeStartsWith( + StringPrototypeToLocaleLowerCase(str), + lowerCaseFilter + ); + }); if (filteredGroup.length) { ArrayPrototypePush(newCompletionGroups, filteredGroup); } @@ -1618,14 +1640,17 @@ function _memory(cmd) { // I need to know "depth." // Because I can not tell the difference between a } that // closes an object literal and a } that closes a function + const countMatches = (regex, str) => { + let count = 0; + while (RegExpPrototypeExec(regex, str) !== null) count++; + return count; + }; // Going down is { and ( e.g. function() { // going up is } and ) - let dw = StringPrototypeMatch(cmd, /[{(]/g); - let up = StringPrototypeMatch(cmd, /[})]/g); - up = up ? up.length : 0; - dw = dw ? dw.length : 0; - let depth = dw - up; + const dw = countMatches(/[{(]/g, cmd); + const up = countMatches(/[})]/g, cmd); + let depth = dw.length - up.length; if (depth) { (function workIt() { @@ -1800,6 +1825,7 @@ module.exports = { }; ObjectDefineProperty(module.exports, 'builtinModules', { + __proto__: null, get: () => _builtinLibs, set: (val) => _builtinLibs = val, enumerable: true, @@ -1807,6 +1833,7 @@ ObjectDefineProperty(module.exports, 'builtinModules', { }); ObjectDefineProperty(module.exports, '_builtinLibs', { + __proto__: null, get: pendingDeprecation ? deprecate( () => _builtinLibs, 'repl._builtinLibs is deprecated. Check module.builtinModules instead', diff --git a/lib/stream.js b/lib/stream.js index 2c3261123af66e..e8a38120cb2ceb 100644 --- a/lib/stream.js +++ b/lib/stream.js @@ -35,6 +35,12 @@ const { streamReturningOperators, promiseReturningOperators, } = require('internal/streams/operators'); + +const { + codes: { + ERR_ILLEGAL_CONSTRUCTOR, + }, +} = require('internal/errors'); const compose = require('internal/streams/compose'); const { pipeline } = require('internal/streams/pipeline'); const { destroyer } = require('internal/streams/destroy'); @@ -51,15 +57,39 @@ Stream.isReadable = utils.isReadable; Stream.Readable = require('internal/streams/readable'); for (const key of ObjectKeys(streamReturningOperators)) { const op = streamReturningOperators[key]; - Stream.Readable.prototype[key] = function(...args) { + function fn(...args) { + if (new.target) { + throw ERR_ILLEGAL_CONSTRUCTOR(); + } return Stream.Readable.from(ReflectApply(op, this, args)); - }; + } + ObjectDefineProperty(fn, 'name', { __proto__: null, value: op.name }); + ObjectDefineProperty(fn, 'length', { __proto__: null, value: op.length }); + ObjectDefineProperty(Stream.Readable.prototype, key, { + __proto__: null, + value: fn, + enumerable: false, + configurable: true, + writable: true, + }); } for (const key of ObjectKeys(promiseReturningOperators)) { const op = promiseReturningOperators[key]; - Stream.Readable.prototype[key] = function(...args) { + function fn(...args) { + if (new.target) { + throw ERR_ILLEGAL_CONSTRUCTOR(); + } return ReflectApply(op, this, args); - }; + } + ObjectDefineProperty(fn, 'name', { __proto__: null, value: op.name }); + ObjectDefineProperty(fn, 'length', { __proto__: null, value: op.length }); + ObjectDefineProperty(Stream.Readable.prototype, key, { + __proto__: null, + value: fn, + enumerable: false, + configurable: true, + writable: true, + }); } Stream.Writable = require('internal/streams/writable'); Stream.Duplex = require('internal/streams/duplex'); @@ -73,6 +103,7 @@ Stream.destroy = destroyer; Stream.compose = compose; ObjectDefineProperty(Stream, 'promises', { + __proto__: null, configurable: true, enumerable: true, get() { @@ -81,6 +112,7 @@ ObjectDefineProperty(Stream, 'promises', { }); ObjectDefineProperty(pipeline, customPromisify, { + __proto__: null, enumerable: true, get() { return promises.pipeline; @@ -88,6 +120,7 @@ ObjectDefineProperty(pipeline, customPromisify, { }); ObjectDefineProperty(eos, customPromisify, { + __proto__: null, enumerable: true, get() { return promises.finished; diff --git a/lib/string_decoder.js b/lib/string_decoder.js index 9eae594aaa27ea..a22da17f505efb 100644 --- a/lib/string_decoder.js +++ b/lib/string_decoder.js @@ -140,6 +140,7 @@ StringDecoder.prototype.text = function text(buf, offset) { ObjectDefineProperties(StringDecoder.prototype, { lastChar: { + __proto__: null, configurable: true, enumerable: true, get() { @@ -149,6 +150,7 @@ ObjectDefineProperties(StringDecoder.prototype, { } }, lastNeed: { + __proto__: null, configurable: true, enumerable: true, get() { @@ -156,6 +158,7 @@ ObjectDefineProperties(StringDecoder.prototype, { } }, lastTotal: { + __proto__: null, configurable: true, enumerable: true, get() { diff --git a/lib/test.js b/lib/test.js new file mode 100644 index 00000000000000..7ebc852092b93b --- /dev/null +++ b/lib/test.js @@ -0,0 +1,10 @@ +'use strict'; +const { test, describe, it } = require('internal/test_runner/harness'); +const { emitExperimentalWarning } = require('internal/util'); + +emitExperimentalWarning('The test runner'); + +module.exports = test; +module.exports.test = test; +module.exports.describe = describe; +module.exports.it = it; diff --git a/lib/timers.js b/lib/timers.js index a4543fea1df6bc..213996eefa13f1 100644 --- a/lib/timers.js +++ b/lib/timers.js @@ -168,6 +168,7 @@ function setTimeout(callback, after, arg1, arg2, arg3) { } ObjectDefineProperty(setTimeout, customPromisify, { + __proto__: null, enumerable: true, get() { if (!timersPromises) @@ -302,6 +303,7 @@ function setImmediate(callback, arg1, arg2, arg3) { } ObjectDefineProperty(setImmediate, customPromisify, { + __proto__: null, enumerable: true, get() { if (!timersPromises) diff --git a/lib/timers/promises.js b/lib/timers/promises.js index 81788d0a6cbbb0..7c8d364b1dde4f 100644 --- a/lib/timers/promises.js +++ b/lib/timers/promises.js @@ -35,16 +35,20 @@ const { validateObject, } = require('internal/validators'); +const { + kEmptyObject, +} = require('internal/util'); + const kScheduler = Symbol('kScheduler'); function cancelListenerHandler(clear, reject, signal) { if (!this._destroyed) { clear(this); - reject(new AbortError()); + reject(new AbortError(undefined, { cause: signal?.reason })); } } -function setTimeout(after, value, options = {}) { +function setTimeout(after, value, options = kEmptyObject) { const args = value !== undefined ? [value] : value; if (options == null || typeof options !== 'object') { return PromiseReject( @@ -70,7 +74,7 @@ function setTimeout(after, value, options = {}) { // to 12.x, then this can be converted to use optional chaining to // simplify the check. if (signal && signal.aborted) { - return PromiseReject(new AbortError()); + return PromiseReject(new AbortError(undefined, { cause: signal.reason })); } let oncancel; const ret = new Promise((resolve, reject) => { @@ -78,7 +82,7 @@ function setTimeout(after, value, options = {}) { insert(timeout, timeout._idleTimeout); if (signal) { oncancel = FunctionPrototypeBind(cancelListenerHandler, - timeout, clearTimeout, reject); + timeout, clearTimeout, reject, signal); signal.addEventListener('abort', oncancel); } }); @@ -88,7 +92,7 @@ function setTimeout(after, value, options = {}) { () => signal.removeEventListener('abort', oncancel)) : ret; } -function setImmediate(value, options = {}) { +function setImmediate(value, options = kEmptyObject) { if (options == null || typeof options !== 'object') { return PromiseReject( new ERR_INVALID_ARG_TYPE( @@ -113,7 +117,7 @@ function setImmediate(value, options = {}) { // to 12.x, then this can be converted to use optional chaining to // simplify the check. if (signal && signal.aborted) { - return PromiseReject(new AbortError()); + return PromiseReject(new AbortError(undefined, { cause: signal.reason })); } let oncancel; const ret = new Promise((resolve, reject) => { @@ -121,7 +125,8 @@ function setImmediate(value, options = {}) { if (!ref) immediate.unref(); if (signal) { oncancel = FunctionPrototypeBind(cancelListenerHandler, - immediate, clearImmediate, reject); + immediate, clearImmediate, reject, + signal); signal.addEventListener('abort', oncancel); } }); @@ -131,14 +136,14 @@ function setImmediate(value, options = {}) { () => signal.removeEventListener('abort', oncancel)) : ret; } -async function* setInterval(after, value, options = {}) { +async function* setInterval(after, value, options = kEmptyObject) { validateObject(options, 'options'); const { signal, ref = true } = options; validateAbortSignal(signal, 'options.signal'); validateBoolean(ref, 'options.ref'); if (signal?.aborted) - throw new AbortError(); + throw new AbortError(undefined, { cause: signal?.reason }); let onCancel; let interval; @@ -157,7 +162,9 @@ async function* setInterval(after, value, options = {}) { onCancel = () => { clearInterval(interval); if (callback) { - callback(PromiseReject(new AbortError())); + callback( + PromiseReject( + new AbortError(undefined, { cause: signal.reason }))); callback = undefined; } }; @@ -172,7 +179,7 @@ async function* setInterval(after, value, options = {}) { yield value; } } - throw new AbortError(); + throw new AbortError(undefined, { cause: signal?.reason }); } finally { clearInterval(interval); signal?.removeEventListener('abort', onCancel); diff --git a/lib/tls.js b/lib/tls.js index 2fd7a9e013fefd..1ada006635d4d3 100644 --- a/lib/tls.js +++ b/lib/tls.js @@ -34,13 +34,12 @@ const { ObjectDefineProperty, ObjectFreeze, RegExpPrototypeExec, - RegExpPrototypeTest, + RegExpPrototypeSymbolReplace, StringFromCharCode, StringPrototypeCharCodeAt, StringPrototypeEndsWith, StringPrototypeIncludes, StringPrototypeIndexOf, - StringPrototypeReplace, StringPrototypeSlice, StringPrototypeSplit, StringPrototypeStartsWith, @@ -54,7 +53,10 @@ const { } = require('internal/errors').codes; const internalUtil = require('internal/util'); internalUtil.assertCrypto(); -const { isArrayBufferView } = require('internal/util/types'); +const { + isArrayBufferView, + isUint8Array, +} = require('internal/util/types'); const net = require('net'); const { getOptionValue } = require('internal/options'); @@ -108,6 +110,7 @@ function cacheRootCertificates() { } ObjectDefineProperty(exports, 'rootCertificates', { + __proto__: null, configurable: false, enumerable: true, get: () => { @@ -145,14 +148,19 @@ exports.convertALPNProtocols = function convertALPNProtocols(protocols, out) { // If protocols is Array - translate it into buffer if (ArrayIsArray(protocols)) { out.ALPNProtocols = convertProtocols(protocols); - } else if (isArrayBufferView(protocols)) { + } else if (isUint8Array(protocols)) { // Copy new buffer not to be modified by user. out.ALPNProtocols = Buffer.from(protocols); + } else if (isArrayBufferView(protocols)) { + out.ALPNProtocols = Buffer.from(protocols.buffer.slice( + protocols.byteOffset, + protocols.byteOffset + protocols.byteLength + )); } }; function unfqdn(host) { - return StringPrototypeReplace(host, /[.]$/, ''); + return RegExpPrototypeSymbolReplace(/[.]$/, host, ''); } // String#toLowerCase() is locale-sensitive so we use @@ -163,7 +171,7 @@ function toLowerCase(c) { function splitHost(host) { return StringPrototypeSplit( - StringPrototypeReplace(unfqdn(host), /[A-Z]/g, toLowerCase), + RegExpPrototypeSymbolReplace(/[A-Z]/g, unfqdn(host), toLowerCase), '.' ); } @@ -186,7 +194,7 @@ function check(hostParts, pattern, wildcards) { // good way to detect their encoding or normalize them so we simply // reject them. Control characters and blanks are rejected as well // because nothing good can come from accepting them. - const isBad = (s) => RegExpPrototypeTest(/[^\u0021-\u007F]/u, s); + const isBad = (s) => RegExpPrototypeExec(/[^\u0021-\u007F]/u, s) !== null; if (ArrayPrototypeSome(patternParts, isBad)) return false; diff --git a/lib/util.js b/lib/util.js index fbd8c550318650..78e6b807ee5ef6 100644 --- a/lib/util.js +++ b/lib/util.js @@ -61,6 +61,7 @@ const { stripVTControlCharacters, } = require('internal/util/inspect'); const { debuglog } = require('internal/util/debuglog'); +const { parseArgs } = require('internal/util/parse_args/parse_args'); const { validateFunction, validateNumber, @@ -243,6 +244,7 @@ function inherits(ctor, superCtor) { 'Object', superCtor.prototype); } ObjectDefineProperty(ctor, 'super_', { + __proto__: null, value: superCtor, writable: true, configurable: true @@ -369,6 +371,7 @@ module.exports = { isFunction, isPrimitive, log, + parseArgs, promisify, stripVTControlCharacters, toUSVString, diff --git a/lib/v8.js b/lib/v8.js index 75981152851216..113c4f74f323dc 100644 --- a/lib/v8.js +++ b/lib/v8.js @@ -16,9 +16,8 @@ const { Array, - ArrayBuffer, - ArrayPrototypeForEach, - ArrayPrototypePush, + BigInt64Array, + BigUint64Array, DataView, Error, Float32Array, @@ -27,7 +26,6 @@ const { Int32Array, Int8Array, ObjectPrototypeToString, - SafeMap, Uint16Array, Uint32Array, Uint8Array, @@ -40,6 +38,9 @@ const { Serializer, Deserializer } = internalBinding('serdes'); +const { + namespace: startupSnapshot +} = require('internal/v8/startup_snapshot'); let profiler = {}; if (internalBinding('config').hasInspector) { @@ -107,6 +108,9 @@ const { kPeakMallocedMemoryIndex, kNumberOfNativeContextsIndex, kNumberOfDetachedContextsIndex, + kTotalGlobalHandlesSizeIndex, + kUsedGlobalHandlesSizeIndex, + kExternalMemoryIndex, // Properties for heap spaces statistics buffer extraction. kHeapSpaces, @@ -165,7 +169,10 @@ function getHeapStatistics() { peak_malloced_memory: buffer[kPeakMallocedMemoryIndex], does_zap_garbage: buffer[kDoesZapGarbageIndex], number_of_native_contexts: buffer[kNumberOfNativeContextsIndex], - number_of_detached_contexts: buffer[kNumberOfDetachedContextsIndex] + number_of_detached_contexts: buffer[kNumberOfDetachedContextsIndex], + total_global_handles_size: buffer[kTotalGlobalHandlesSizeIndex], + used_global_handles_size: buffer[kUsedGlobalHandlesSizeIndex], + external_memory: buffer[kExternalMemoryIndex] }; } @@ -235,29 +242,40 @@ Deserializer.prototype.readRawBytes = function readRawBytes(length) { length); }; -/* Keep track of how to handle different ArrayBufferViews. - * The default Serializer for Node does not use the V8 methods for serializing - * those objects because Node's `Buffer` objects use pooled allocation in many - * cases, and their underlying `ArrayBuffer`s would show up in the - * serialization. Because a) those may contain sensitive data and the user - * may not be aware of that and b) they are often much larger than the `Buffer` - * itself, custom serialization is applied. */ -const arrayBufferViewTypes = [Int8Array, Uint8Array, Uint8ClampedArray, - Int16Array, Uint16Array, Int32Array, Uint32Array, - Float32Array, Float64Array, DataView]; - -const arrayBufferViewTypeToIndex = new SafeMap(); - -{ - const dummy = new ArrayBuffer(); - ArrayPrototypeForEach(arrayBufferViewTypes, (ctor, i) => { - const tag = ObjectPrototypeToString(new ctor(dummy)); - arrayBufferViewTypeToIndex.set(tag, i); - }); +function arrayBufferViewTypeToIndex(abView) { + const type = ObjectPrototypeToString(abView); + if (type === '[object Int8Array]') return 0; + if (type === '[object Uint8Array]') return 1; + if (type === '[object Uint8ClampedArray]') return 2; + if (type === '[object Int16Array]') return 3; + if (type === '[object Uint16Array]') return 4; + if (type === '[object Int32Array]') return 5; + if (type === '[object Uint32Array]') return 6; + if (type === '[object Float32Array]') return 7; + if (type === '[object Float64Array]') return 8; + if (type === '[object DataView]') return 9; + // Index 10 is FastBuffer. + if (type === '[object BigInt64Array]') return 11; + if (type === '[object BigUint64Array]') return 12; + return -1; } -const bufferConstructorIndex = - ArrayPrototypePush(arrayBufferViewTypes, FastBuffer) - 1; +function arrayBufferViewIndexToType(index) { + if (index === 0) return Int8Array; + if (index === 1) return Uint8Array; + if (index === 2) return Uint8ClampedArray; + if (index === 3) return Int16Array; + if (index === 4) return Uint16Array; + if (index === 5) return Int32Array; + if (index === 6) return Uint32Array; + if (index === 7) return Float32Array; + if (index === 8) return Float64Array; + if (index === 9) return DataView; + if (index === 10) return FastBuffer; + if (index === 11) return BigInt64Array; + if (index === 12) return BigUint64Array; + return undefined; +} class DefaultSerializer extends Serializer { constructor() { @@ -273,14 +291,17 @@ class DefaultSerializer extends Serializer { * @returns {void} */ _writeHostObject(abView) { - let i = 0; - if (abView.constructor === Buffer) { - i = bufferConstructorIndex; - } else { - const tag = ObjectPrototypeToString(abView); - i = arrayBufferViewTypeToIndex.get(tag); - - if (i === undefined) { + // Keep track of how to handle different ArrayBufferViews. The default + // Serializer for Node does not use the V8 methods for serializing those + // objects because Node's `Buffer` objects use pooled allocation in many + // cases, and their underlying `ArrayBuffer`s would show up in the + // serialization. Because a) those may contain sensitive data and the user + // may not be aware of that and b) they are often much larger than the + // `Buffer` itself, custom serialization is applied. + let i = 10; // FastBuffer + if (abView.constructor !== Buffer) { + i = arrayBufferViewTypeToIndex(abView); + if (i === -1) { throw new this._getDataCloneError( `Unserializable host object: ${inspect(abView)}`); } @@ -301,7 +322,7 @@ class DefaultDeserializer extends Deserializer { */ _readHostObject() { const typeIndex = this.readUint32(); - const ctor = arrayBufferViewTypes[typeIndex]; + const ctor = arrayBufferViewIndexToType(typeIndex); const byteLength = this.readUint32(); const byteOffset = this._readRawBytes(byteLength); const BYTES_PER_ELEMENT = ctor.BYTES_PER_ELEMENT || 1; @@ -363,4 +384,5 @@ module.exports = { serialize, writeHeapSnapshot, promiseHooks, + startupSnapshot }; diff --git a/lib/vm.js b/lib/vm.js index 92afa9f6964acf..1bb199363afbe1 100644 --- a/lib/vm.js +++ b/lib/vm.js @@ -23,7 +23,6 @@ const { ArrayPrototypeForEach, - ArrayPrototypeUnshift, Symbol, PromiseReject, ReflectApply, @@ -57,13 +56,14 @@ const { validateUint32, } = require('internal/validators'); const { - kVmBreakFirstLineSymbol, emitExperimentalWarning, + kEmptyObject, + kVmBreakFirstLineSymbol, } = require('internal/util'); const kParsingContext = Symbol('script parsing context'); class Script extends ContextifyScript { - constructor(code, options = {}) { + constructor(code, options = kEmptyObject) { code = `${code}`; if (typeof options === 'string') { options = { filename: options }; @@ -122,17 +122,19 @@ class Script extends ContextifyScript { } runInThisContext(options) { - const { breakOnSigint, args } = getRunInContextArgs(options); + const { breakOnSigint, args } = getRunInContextArgs(null, options); if (breakOnSigint && process.listenerCount('SIGINT') > 0) { - return sigintHandlersWrap(super.runInThisContext, this, args); + return sigintHandlersWrap(super.runInContext, this, args); } - return ReflectApply(super.runInThisContext, this, args); + return ReflectApply(super.runInContext, this, args); } runInContext(contextifiedObject, options) { validateContext(contextifiedObject); - const { breakOnSigint, args } = getRunInContextArgs(options); - ArrayPrototypeUnshift(args, contextifiedObject); + const { breakOnSigint, args } = getRunInContextArgs( + contextifiedObject, + options, + ); if (breakOnSigint && process.listenerCount('SIGINT') > 0) { return sigintHandlersWrap(super.runInContext, this, args); } @@ -152,7 +154,7 @@ function validateContext(contextifiedObject) { } } -function getRunInContextArgs(options = {}) { +function getRunInContextArgs(contextifiedObject, options = kEmptyObject) { validateObject(options, 'options'); let timeout = options.timeout; @@ -173,7 +175,13 @@ function getRunInContextArgs(options = {}) { return { breakOnSigint, - args: [timeout, displayErrors, breakOnSigint, breakFirstLine] + args: [ + contextifiedObject, + timeout, + displayErrors, + breakOnSigint, + breakFirstLine, + ], }; } @@ -212,7 +220,7 @@ function isContext(object) { } let defaultContextNameIndex = 1; -function createContext(contextObject = {}, options = {}) { +function createContext(contextObject = {}, options = kEmptyObject) { if (isContext(contextObject)) { return contextObject; } @@ -305,7 +313,7 @@ function runInThisContext(code, options) { return createScript(code, options).runInThisContext(options); } -function compileFunction(code, params, options = {}) { +function compileFunction(code, params, options = kEmptyObject) { validateString(code, 'code'); if (params !== undefined) { validateArray(params, 'params'); @@ -395,7 +403,7 @@ const measureMemoryExecutions = { eager: constants.measureMemory.execution.EAGER, }; -function measureMemory(options = {}) { +function measureMemory(options = kEmptyObject) { emitExperimentalWarning('vm.measureMemory'); validateObject(options, 'options'); const { mode = 'summary', execution = 'default' } = options; diff --git a/lib/wasi.js b/lib/wasi.js index 43ecf94b4cb050..2a0770bf6dbbb0 100644 --- a/lib/wasi.js +++ b/lib/wasi.js @@ -10,11 +10,12 @@ const { } = primordials; const { - ERR_INVALID_ARG_TYPE, ERR_WASI_ALREADY_STARTED } = require('internal/errors').codes; -const { emitExperimentalWarning } = require('internal/util'); -const { isArrayBuffer } = require('internal/util/types'); +const { + emitExperimentalWarning, + kEmptyObject, +} = require('internal/util'); const { validateArray, validateBoolean, @@ -36,26 +37,12 @@ function setupInstance(self, instance) { validateObject(instance, 'instance'); validateObject(instance.exports, 'instance.exports'); - // WASI::_SetMemory() in src/node_wasi.cc only expects that |memory| is - // an object. It will try to look up the .buffer property when needed - // and fail with UVWASI_EINVAL when the property is missing or is not - // an ArrayBuffer. Long story short, we don't need much validation here - // but we type-check anyway because it helps catch bugs in the user's - // code early. - validateObject(instance.exports.memory, 'instance.exports.memory'); - if (!isArrayBuffer(instance.exports.memory.buffer)) { - throw new ERR_INVALID_ARG_TYPE( - 'instance.exports.memory.buffer', - ['WebAssembly.Memory'], - instance.exports.memory.buffer); - } - self[kInstance] = instance; self[kSetMemory](instance.exports.memory); } class WASI { - constructor(options = {}) { + constructor(options = kEmptyObject) { validateObject(options, 'options'); if (options.args !== undefined) diff --git a/lib/zlib.js b/lib/zlib.js index 718f72af67650e..9bde1997d95720 100644 --- a/lib/zlib.js +++ b/lib/zlib.js @@ -308,6 +308,7 @@ ObjectSetPrototypeOf(ZlibBase.prototype, Transform.prototype); ObjectSetPrototypeOf(ZlibBase, Transform); ObjectDefineProperty(ZlibBase.prototype, '_closed', { + __proto__: null, configurable: true, enumerable: true, get() { @@ -320,6 +321,7 @@ ObjectDefineProperty(ZlibBase.prototype, '_closed', { // that have this concept, where it stands for the number of bytes read // *from* the stream (that is, net.Socket/tls.Socket & file system streams). ObjectDefineProperty(ZlibBase.prototype, 'bytesRead', { + __proto__: null, configurable: true, enumerable: true, get: deprecate(function() { @@ -871,6 +873,7 @@ ObjectSetPrototypeOf(BrotliDecompress, Brotli); function createProperty(ctor) { return { + __proto__: null, configurable: true, enumerable: true, value: function(options) { @@ -882,6 +885,7 @@ function createProperty(ctor) { // Legacy alias on the C++ wrapper object. This is not public API, so we may // want to runtime-deprecate it at some point. There's no hurry, though. ObjectDefineProperty(binding.Zlib.prototype, 'jsref', { + __proto__: null, get() { return this[owner_symbol]; }, set(v) { return this[owner_symbol] = v; } }); @@ -930,11 +934,13 @@ ObjectDefineProperties(module.exports, { createBrotliCompress: createProperty(BrotliCompress), createBrotliDecompress: createProperty(BrotliDecompress), constants: { + __proto__: null, configurable: false, enumerable: true, value: constants }, codes: { + __proto__: null, enumerable: true, writable: false, value: ObjectFreeze(codes) @@ -946,6 +952,7 @@ ObjectDefineProperties(module.exports, { for (const bkey of ObjectKeys(constants)) { if (StringPrototypeStartsWith(bkey, 'BROTLI')) continue; ObjectDefineProperty(module.exports, bkey, { + __proto__: null, enumerable: false, value: constants[bkey], writable: false }); } diff --git a/node.gyp b/node.gyp index 74e9f9cc2e33e1..65cc076be6a1b9 100644 --- a/node.gyp +++ b/node.gyp @@ -7,6 +7,7 @@ 'node_use_dtrace%': 'false', 'node_use_etw%': 'false', 'node_no_browser_globals%': 'false', + 'node_snapshot_main%': '', 'node_use_node_snapshot%': 'false', 'node_use_v8_platform%': 'true', 'node_use_bundled_v8%': 'true', @@ -172,6 +173,12 @@ 'RandomizedBaseAddress': 2, # enable ASLR 'DataExecutionPrevention': 2, # enable DEP 'AllowIsolation': 'true', + # By default, the MSVC linker only reserves 1 MiB of stack memory for + # each thread, whereas other platforms typically allow much larger + # stack memory sections. We raise the limit to make it more consistent + # across platforms and to support the few use cases that require large + # amounts of stack memory, without having to modify the node binary. + 'StackReserveSize': 0x800000, }, }, @@ -195,6 +202,16 @@ 'dependencies': [ 'node_aix_shared' ], }, { 'dependencies': [ '<(node_lib_target_name)' ], + 'conditions': [ + ['OS=="win" and node_shared=="true"', { + 'dependencies': ['generate_node_def'], + 'msvs_settings': { + 'VCLinkerTool': { + 'ModuleDefinitionFile': '<(PRODUCT_DIR)/<(node_core_target_name).def', + }, + }, + }], + ], }], [ 'node_intermediate_lib_type=="static_library" and node_shared=="false"', { 'xcode_settings': { @@ -234,8 +251,15 @@ }], [ 'node_shared=="true"', { 'xcode_settings': { - 'OTHER_LDFLAGS': [ '-Wl,-rpath,@loader_path', ], + 'OTHER_LDFLAGS': [ '-Wl,-rpath,@loader_path', '-Wl,-rpath,@loader_path/../lib'], }, + 'conditions': [ + ['OS=="linux"', { + 'ldflags': [ + '-Wl,-rpath,\\$$ORIGIN/../lib' + ], + }], + ], }], [ 'enable_lto=="true"', { 'xcode_settings': { @@ -315,23 +339,47 @@ 'dependencies': [ 'node_mksnapshot', ], - 'actions': [ - { - 'action_name': 'node_mksnapshot', - 'process_outputs_as_sources': 1, - 'inputs': [ - '<(node_mksnapshot_exec)', - ], - 'outputs': [ - '<(SHARED_INTERMEDIATE_DIR)/node_snapshot.cc', + 'conditions': [ + ['node_snapshot_main!=""', { + 'actions': [ + { + 'action_name': 'node_mksnapshot', + 'process_outputs_as_sources': 1, + 'inputs': [ + '<(node_mksnapshot_exec)', + '<(node_snapshot_main)', + ], + 'outputs': [ + '<(SHARED_INTERMEDIATE_DIR)/node_snapshot.cc', + ], + 'action': [ + '<(node_mksnapshot_exec)', + '--build-snapshot', + '<(node_snapshot_main)', + '<@(_outputs)', + ], + }, ], - 'action': [ - '<@(_inputs)', - '<@(_outputs)', + }, { + 'actions': [ + { + 'action_name': 'node_mksnapshot', + 'process_outputs_as_sources': 1, + 'inputs': [ + '<(node_mksnapshot_exec)', + ], + 'outputs': [ + '<(SHARED_INTERMEDIATE_DIR)/node_snapshot.cc', + ], + 'action': [ + '<@(_inputs)', + '<@(_outputs)', + ], + }, ], - }, + }], ], - }, { + }, { 'sources': [ 'src/node_snapshot_stub.cc' ], @@ -464,8 +512,6 @@ 'src/aliased_buffer.h', 'src/aliased_struct.h', 'src/aliased_struct-inl.h', - 'src/allocated_buffer.h', - 'src/allocated_buffer-inl.h', 'src/async_wrap.h', 'src/async_wrap-inl.h', 'src/base_object.h', @@ -530,6 +576,7 @@ 'src/node_revert.h', 'src/node_root_certs.h', 'src/node_snapshotable.h', + 'src/node_snapshot_builder.h', 'src/node_sockaddr.h', 'src/node_sockaddr-inl.h', 'src/node_stat_watcher.h', @@ -640,6 +687,7 @@ 'libraries': [ 'Dbghelp', 'Psapi', + 'Winmm', 'Ws2_32', ], }], @@ -1393,5 +1441,40 @@ }, ] }], # end aix section + ['OS=="win" and node_shared=="true"', { + 'targets': [ + { + 'target_name': 'gen_node_def', + 'type': 'executable', + 'sources': [ + 'tools/gen_node_def.cc' + ], + }, + { + 'target_name': 'generate_node_def', + 'dependencies': [ + 'gen_node_def', + '<(node_lib_target_name)', + ], + 'type': 'none', + 'actions': [ + { + 'action_name': 'generate_node_def_action', + 'inputs': [ + '<(PRODUCT_DIR)/<(node_lib_target_name).dll' + ], + 'outputs': [ + '<(PRODUCT_DIR)/<(node_core_target_name).def', + ], + 'action': [ + '<(PRODUCT_DIR)/gen_node_def.exe', + '<@(_inputs)', + '<@(_outputs)', + ], + }, + ], + }, + ], + }], # end win section ], # end conditions block } diff --git a/node.gypi b/node.gypi index 713ddbb74a1b8e..f46f246e241d1b 100644 --- a/node.gypi +++ b/node.gypi @@ -29,7 +29,7 @@ [ 'clang==1', { 'cflags': [ '-Werror=undefined-inline', ] }], - [ 'node_shared=="false" and "<(_type)"=="executable"', { + [ '"<(_type)"=="executable"', { 'msvs_settings': { 'VCManifestTool': { 'EmbedManifest': 'true', @@ -41,6 +41,19 @@ 'defines': [ 'NODE_SHARED_MODE', ], + 'conditions': [ + ['"<(_type)"=="executable"', { + 'defines': [ + 'USING_UV_SHARED', + 'USING_V8_SHARED', + 'BUILDING_NODE_EXTENSION' + ], + 'defines!': [ + 'BUILDING_V8_SHARED=1', + 'BUILDING_UV_SHARED=1' + ] + }], + ], }], [ 'OS=="win"', { 'defines!': [ diff --git a/onboarding.md b/onboarding.md index f17b24c50f15ba..861aebe7096b97 100644 --- a/onboarding.md +++ b/onboarding.md @@ -39,11 +39,11 @@ onboarding session. * Always create a branch in your own GitHub fork for pull requests * Branches in the `nodejs/node` repository are only for release lines * Add the canonical nodejs repository as `upstream` remote: - * `git remote add upstream git://github.com/nodejs/node.git` + * `git remote add upstream git@github.com:nodejs/node.git` * To update from `upstream`: - * `git checkout master` - * `git remote update -p` OR `git fetch --all` - * `git merge --ff-only upstream/master` (or `REMOTENAME/BRANCH`) + * `git checkout main` + * `git fetch upstream HEAD` + * `git reset --hard FETCH_HEAD` * Make a new branch for each pull request you submit. * Membership: Consider making your membership in the Node.js GitHub organization public. This makes it easier to identify collaborators. @@ -144,12 +144,12 @@ The project has a venue for real-time discussion: * Approving a change * Collaborators indicate that they have reviewed and approve of the changes in - a pull request using GitHub’s approval interface + a pull request using GitHub's approval interface * Some people like to comment `LGTM` (“Looks Good To Me”) - * You have the authority to approve any other collaborator’s work. + * You have the authority to approve any other collaborator's work. * You cannot approve your own pull requests. * When explicitly using `Changes requested`, show empathy – comments will - usually be addressed even if you don’t use it. + usually be addressed even if you don't use it. * If you do, it is nice if you are available later to check whether your comments have been addressed * If you see that the requested changes have been made, you can clear @@ -158,7 +158,7 @@ The project has a venue for real-time discussion: comments to block the pull request from landing. * What belongs in Node.js: - * Opinions vary – it’s good to have a broad collaborator base for that reason! + * Opinions vary – it's good to have a broad collaborator base for that reason! * If Node.js itself needs it (due to historical reasons), then it belongs in Node.js. * That is to say, `url` is there because of `http`, `freelist` is there @@ -203,9 +203,9 @@ needs to be pointed out separately during the onboarding. ## Exercise: Make a pull request adding yourself to the README * Example: - + * For raw commit message: - `git show --format=%B b58fe52692659c0bc25ddbe6afa7f4ae2c7f14a8` + `git show --format=%B 6669b3857f0f43ee0296eb7ac45086cd907b9e94` * Collaborators are in alphabetical order by GitHub username. * Optionally, include your personal pronouns. * Add the `Fixes: ` to the commit message diff --git a/src/README.md b/src/README.md index 623c3774971b6e..774614395afd40 100644 --- a/src/README.md +++ b/src/README.md @@ -1,6 +1,6 @@ # Node.js C++ codebase -Hi! 👋 You’ve found the C++ code backing Node.js. This README aims to help you +Hi! 👋 You've found the C++ code backing Node.js. This README aims to help you get started working on it and document some idioms you may encounter while doing so. @@ -20,9 +20,9 @@ V8 does not provide much public API documentation beyond what is available in its C++ header files, most importantly `v8.h`, which can be accessed online in the following locations: -* On GitHub: [`v8.h` in Node.js master][] -* On GitHub: [`v8.h` in V8 master][] -* On the Chromium project’s Code Search application: [`v8.h` in Code Search][] +* On GitHub: [`v8.h` in Node.js][] +* On GitHub: [`v8.h` in V8][] +* On the Chromium project's Code Search application: [`v8.h` in Code Search][] V8 also provides an [introduction for V8 embedders][], which can be useful for understanding some of the concepts it uses in its @@ -42,7 +42,7 @@ There is a [reference documentation for the libuv API][]. The Node.js C++ files follow this structure: -The `.h` header files contain declarations, and sometimes definitions that don’t +The `.h` header files contain declarations, and sometimes definitions that don't require including other headers (e.g. getters, setters, etc.). They should only include other `.h` header files and nothing else. @@ -272,7 +272,7 @@ Often, the `Context` is passed around for [exception handling][]. Typical ways of accessing the current `Context` in the Node.js code are: * Given an [`Isolate`][], using `isolate->GetCurrentContext()`. -* Given an [`Environment`][], using `env->context()` to get the `Environment`’s +* Given an [`Environment`][], using `env->context()` to get the `Environment`'s main context. @@ -288,7 +288,7 @@ The current event loop can be accessed using `env->event_loop()` given an [`Environment`][] instance. The restriction of using a single event loop is not inherent to the design of Node.js, and a sufficiently committed person could restructure Node.js to provide e.g. the ability to run parts of Node.js -inside an event loop separate from the active thread’s event loop. +inside an event loop separate from the active thread's event loop. @@ -351,7 +351,7 @@ The platform can be accessed through `isolate_data->platform()` given an * The current Node.js instance was not started by an embedder; or * The current Node.js instance was started by an embedder whose `v8::Platform` - implementation also implement’s the `node::MultiIsolatePlatform` interface + implementation also implement's the `node::MultiIsolatePlatform` interface and who passed this to Node.js. @@ -419,7 +419,7 @@ void Initialize(Local target, } // Run the `Initialize` function when loading this module through -// `internalBinding('cares_wrap')` in Node.js’s built-in JavaScript code: +// `internalBinding('cares_wrap')` in Node.js's built-in JavaScript code: NODE_MODULE_CONTEXT_AWARE_INTERNAL(cares_wrap, Initialize) ``` @@ -484,7 +484,7 @@ That object is always a [`BaseObject`][]. Its class needs to have a static `type_name` field based on a constant string, in order to disambiguate it from other classes of this type, -and which could e.g. match the binding’s name (in the example above, that would +and which could e.g. match the binding's name (in the example above, that would be `cares_wrap`). ```cpp @@ -556,7 +556,7 @@ the process otherwise. `maybe.FromJust()` (aka `maybe.ToChecked()`) can be used to access the value and crash the process if it is not set. This should only be performed if it is actually sure that the operation has -not failed. A lot of Node.js’s source code does **not** follow this rule, and +not failed. A lot of the Node.js source code does **not** follow this rule, and can be brought to crash through this. In particular, it is often not safe to assume that an operation does not throw @@ -621,18 +621,18 @@ v8::Maybe SumNumbers(v8::Local context, v8::Local entry; if (array_of_integers->Get(context, i).ToLocal(&entry)) { // Oops, we might have hit a getter that throws an exception! - // It’s better to not continue return an empty (“nothing”) Maybe. + // It's better to not continue return an empty (“nothing”) Maybe. return v8::Nothing(); } if (!entry->IsNumber()) { - // Let’s just skip any non-numbers. It would also be reasonable to throw + // Let's just skip any non-numbers. It would also be reasonable to throw // an exception here, e.g. using the error system in src/node_errors.h, // and then to return an empty Maybe again. continue; } - // This cast is valid, because we’ve made sure it’s really a number. + // This cast is valid, because we've made sure it's really a number. v8::Local entry_as_number = entry.As(); sum += entry_as_number->Value(); @@ -643,7 +643,7 @@ v8::Maybe SumNumbers(v8::Local context, // Function that is exposed to JS: void SumNumbers(const v8::FunctionCallbackInfo& args) { - // This will crash if the first argument is not an array. Let’s assume we + // This will crash if the first argument is not an array. Let's assume we // have performed type checking in a JavaScript wrapper function. CHECK(args[0]->IsArray()); @@ -859,7 +859,7 @@ this information is provided to async tracking tools. The `AsyncWrap` class has a set of methods called `MakeCallback()`, with the intention of the naming being that it is used to “make calls back into JavaScript” from the event loop, rather than making callbacks in some way. -(As the naming has made its way into Node.js’s public API, it’s not worth +(As the naming has made its way into the Node.js public API, it's not worth the breakage of fixing it). `MakeCallback()` generally calls a method on the JavaScript object associated @@ -936,7 +936,7 @@ classes provide the same facilities as [`MakeCallback()`][], namely: Usually, using `AsyncWrap::MakeCallback()` or using the constructor taking an `AsyncWrap*` argument (i.e. used as -`InternalCallbackScope callback_scope(this);`) suffices inside of Node.js’s +`InternalCallbackScope callback_scope(this);`) suffices inside of the Node.js C++ codebase. ## C++ utilities @@ -1047,8 +1047,8 @@ static void GetUserInfo(const FunctionCallbackInfo& args) { [`req_wrap.h`]: req_wrap.h [`util.h`]: util.h [`v8.h` in Code Search]: https://cs.chromium.org/chromium/src/v8/include/v8.h -[`v8.h` in Node.js master]: https://github.com/nodejs/node/blob/master/deps/v8/include/v8.h -[`v8.h` in V8 master]: https://github.com/v8/v8/blob/master/include/v8.h +[`v8.h` in Node.js]: https://github.com/nodejs/node/blob/HEAD/deps/v8/include/v8.h +[`v8.h` in V8]: https://github.com/v8/v8/blob/HEAD/include/v8.h [`vm` module]: https://nodejs.org/api/vm.html [binding function]: #binding-functions [cleanup hooks]: #cleanup-hooks diff --git a/src/allocated_buffer-inl.h b/src/allocated_buffer-inl.h deleted file mode 100644 index 2dee6f09a3e9d4..00000000000000 --- a/src/allocated_buffer-inl.h +++ /dev/null @@ -1,110 +0,0 @@ -#ifndef SRC_ALLOCATED_BUFFER_INL_H_ -#define SRC_ALLOCATED_BUFFER_INL_H_ - -#include "allocated_buffer.h" -#include "base_object-inl.h" -#include "node_buffer.h" -#include "env-inl.h" -#include "uv.h" -#include "v8.h" -#include "util-inl.h" -#include "node_internals.h" - -namespace node { - -// It's a bit awkward to define this Buffer::New() overload here, but it -// avoids a circular dependency with node_internals.h. -namespace Buffer { -v8::MaybeLocal New(Environment* env, - v8::Local ab, - size_t byte_offset, - size_t length); -} - -NoArrayBufferZeroFillScope::NoArrayBufferZeroFillScope( - IsolateData* isolate_data) - : node_allocator_(isolate_data->node_allocator()) { - if (node_allocator_ != nullptr) node_allocator_->zero_fill_field()[0] = 0; -} - -NoArrayBufferZeroFillScope::~NoArrayBufferZeroFillScope() { - if (node_allocator_ != nullptr) node_allocator_->zero_fill_field()[0] = 1; -} - -AllocatedBuffer AllocatedBuffer::AllocateManaged( - Environment* env, - size_t size) { - NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); - std::unique_ptr bs = - v8::ArrayBuffer::NewBackingStore(env->isolate(), size); - return AllocatedBuffer(env, std::move(bs)); -} - -AllocatedBuffer::AllocatedBuffer( - Environment* env, std::unique_ptr bs) - : env_(env), backing_store_(std::move(bs)) {} - -AllocatedBuffer::AllocatedBuffer( - Environment* env, uv_buf_t buffer) - : env_(env) { - if (buffer.base == nullptr) return; - auto map = env->released_allocated_buffers(); - auto it = map->find(buffer.base); - CHECK_NE(it, map->end()); - backing_store_ = std::move(it->second); - map->erase(it); -} - -void AllocatedBuffer::Resize(size_t len) { - if (len == 0) { - backing_store_ = v8::ArrayBuffer::NewBackingStore(env_->isolate(), 0); - return; - } - NoArrayBufferZeroFillScope no_zero_fill_scope(env_->isolate_data()); - backing_store_ = v8::BackingStore::Reallocate( - env_->isolate(), std::move(backing_store_), len); -} - -uv_buf_t AllocatedBuffer::release() { - if (data() == nullptr) return uv_buf_init(nullptr, 0); - - CHECK_NOT_NULL(env_); - uv_buf_t ret = uv_buf_init(data(), size()); - env_->released_allocated_buffers()->emplace( - ret.base, std::move(backing_store_)); - return ret; -} - -char* AllocatedBuffer::data() { - if (!backing_store_) return nullptr; - return static_cast(backing_store_->Data()); -} - -const char* AllocatedBuffer::data() const { - if (!backing_store_) return nullptr; - return static_cast(backing_store_->Data()); -} - - -size_t AllocatedBuffer::size() const { - if (!backing_store_) return 0; - return backing_store_->ByteLength(); -} - -void AllocatedBuffer::clear() { - backing_store_.reset(); -} - -v8::MaybeLocal AllocatedBuffer::ToBuffer() { - v8::Local ab = ToArrayBuffer(); - return Buffer::New(env_, ab, 0, ab->ByteLength()) - .FromMaybe(v8::Local()); -} - -v8::Local AllocatedBuffer::ToArrayBuffer() { - return v8::ArrayBuffer::New(env_->isolate(), std::move(backing_store_)); -} - -} // namespace node - -#endif // SRC_ALLOCATED_BUFFER_INL_H_ diff --git a/src/allocated_buffer.h b/src/allocated_buffer.h deleted file mode 100644 index 9cf41bffdc19dc..00000000000000 --- a/src/allocated_buffer.h +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef SRC_ALLOCATED_BUFFER_H_ -#define SRC_ALLOCATED_BUFFER_H_ - -#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS - -#include "base_object.h" -#include "uv.h" -#include "v8.h" -#include "env.h" - -namespace node { - -class Environment; - -// Disables zero-filling for ArrayBuffer allocations in this scope. This is -// similar to how we implement Buffer.allocUnsafe() in JS land. -class NoArrayBufferZeroFillScope{ - public: - inline explicit NoArrayBufferZeroFillScope(IsolateData* isolate_data); - inline ~NoArrayBufferZeroFillScope(); - - private: - NodeArrayBufferAllocator* node_allocator_; - - friend class Environment; -}; - -// A unique-pointer-ish object that is compatible with the JS engine's -// ArrayBuffer::Allocator. -// TODO(addaleax): We may want to start phasing this out as it's only a -// thin wrapper around v8::BackingStore at this point -struct AllocatedBuffer { - public: - // Utilities that allocate memory using the Isolate's ArrayBuffer::Allocator. - // In particular, using AllocateManaged() will provide a RAII-style object - // with easy conversion to `Buffer` and `ArrayBuffer` objects. - inline static AllocatedBuffer AllocateManaged(Environment* env, size_t size); - - AllocatedBuffer() = default; - inline AllocatedBuffer( - Environment* env, std::unique_ptr bs); - // For this constructor variant, `buffer` *must* come from an earlier call - // to .release - inline AllocatedBuffer(Environment* env, uv_buf_t buffer); - - inline void Resize(size_t len); - - inline uv_buf_t release(); - inline char* data(); - inline const char* data() const; - inline size_t size() const; - inline void clear(); - - inline v8::MaybeLocal ToBuffer(); - inline v8::Local ToArrayBuffer(); - - AllocatedBuffer(AllocatedBuffer&& other) = default; - AllocatedBuffer& operator=(AllocatedBuffer&& other) = default; - AllocatedBuffer(const AllocatedBuffer& other) = delete; - AllocatedBuffer& operator=(const AllocatedBuffer& other) = delete; - - private: - Environment* env_ = nullptr; - std::unique_ptr backing_store_; - - friend class Environment; -}; - -} // namespace node - -#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS - -#endif // SRC_ALLOCATED_BUFFER_H_ diff --git a/src/api/embed_helpers.cc b/src/api/embed_helpers.cc index 8e2fc67695b875..bd0459f20b1b3e 100644 --- a/src/api/embed_helpers.cc +++ b/src/api/embed_helpers.cc @@ -3,6 +3,7 @@ #include "debug_utils-inl.h" using v8::Context; +using v8::Function; using v8::Global; using v8::HandleScope; using v8::Isolate; @@ -44,6 +45,13 @@ Maybe SpinEventLoop(Environment* env) { if (EmitProcessBeforeExit(env).IsNothing()) break; + { + HandleScope handle_scope(isolate); + if (env->RunSnapshotSerializeCallback().IsEmpty()) { + break; + } + } + // Emit `beforeExit` if the loop became alive either after emitting // event, or after running some callbacks. more = uv_loop_alive(env->event_loop()); @@ -54,6 +62,11 @@ Maybe SpinEventLoop(Environment* env) { if (env->is_stopping()) return Nothing(); env->set_trace_sync_io(false); + // Clear the serialize callback even though the JS-land queue should + // be empty this point so that the deserialized instance won't + // attempt to call into JS again. + env->set_snapshot_serialize_callback(Local()); + env->PrintInfoForSnapshotIfDebug(); env->VerifyNoStrongBaseObjects(); return EmitProcessExit(env); diff --git a/src/api/environment.cc b/src/api/environment.cc index 55b895c235f51e..5df88a9dbabf78 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -83,16 +83,16 @@ MaybeLocal PrepareStackTraceCallback(Local context, void* NodeArrayBufferAllocator::Allocate(size_t size) { void* ret; if (zero_fill_field_ || per_process::cli_options->zero_fill_all_buffers) - ret = UncheckedCalloc(size); + ret = allocator_->Allocate(size); else - ret = UncheckedMalloc(size); + ret = allocator_->AllocateUninitialized(size); if (LIKELY(ret != nullptr)) total_mem_usage_.fetch_add(size, std::memory_order_relaxed); return ret; } void* NodeArrayBufferAllocator::AllocateUninitialized(size_t size) { - void* ret = node::UncheckedMalloc(size); + void* ret = allocator_->AllocateUninitialized(size); if (LIKELY(ret != nullptr)) total_mem_usage_.fetch_add(size, std::memory_order_relaxed); return ret; @@ -100,7 +100,7 @@ void* NodeArrayBufferAllocator::AllocateUninitialized(size_t size) { void* NodeArrayBufferAllocator::Reallocate( void* data, size_t old_size, size_t size) { - void* ret = UncheckedRealloc(static_cast(data), size); + void* ret = allocator_->Reallocate(data, old_size, size); if (LIKELY(ret != nullptr) || UNLIKELY(size == 0)) total_mem_usage_.fetch_add(size - old_size, std::memory_order_relaxed); return ret; @@ -108,7 +108,7 @@ void* NodeArrayBufferAllocator::Reallocate( void NodeArrayBufferAllocator::Free(void* data, size_t size) { total_mem_usage_.fetch_sub(size, std::memory_order_relaxed); - free(data); + allocator_->Free(data, size); } DebuggingArrayBufferAllocator::~DebuggingArrayBufferAllocator() { @@ -141,8 +141,12 @@ void* DebuggingArrayBufferAllocator::Reallocate(void* data, Mutex::ScopedLock lock(mutex_); void* ret = NodeArrayBufferAllocator::Reallocate(data, old_size, size); if (ret == nullptr) { - if (size == 0) // i.e. equivalent to free(). + if (size == 0) { // i.e. equivalent to free(). + // suppress coverity warning as data is used as key versus as pointer + // in UnregisterPointerInternal + // coverity[pass_freed_arg] UnregisterPointerInternal(data, old_size); + } return nullptr; } @@ -247,6 +251,8 @@ void SetIsolateMiscHandlers(v8::Isolate* isolate, const IsolateSettings& s) { auto* allow_wasm_codegen_cb = s.allow_wasm_code_generation_callback ? s.allow_wasm_code_generation_callback : AllowWasmCodeGenerationCallback; isolate->SetAllowWasmCodeGenerationCallback(allow_wasm_codegen_cb); + isolate->SetModifyCodeGenerationFromStringsCallback( + ModifyCodeGenerationFromStrings); if ((s.flags & SHOULD_NOT_SET_PROMISE_REJECTION_CALLBACK) == 0) { auto* promise_reject_cb = s.promise_reject_callback ? @@ -641,6 +647,9 @@ bool InitializeContextForSnapshot(Local context) { Isolate* isolate = context->GetIsolate(); HandleScope handle_scope(isolate); + context->AllowCodeGenerationFromStrings(false); + context->SetEmbedderData( + ContextEmbedderIndex::kAllowCodeGenerationFromStrings, True(isolate)); context->SetEmbedderData(ContextEmbedderIndex::kAllowWasmCodeGeneration, True(isolate)); return InitializePrimordials(context); diff --git a/src/api/hooks.cc b/src/api/hooks.cc index 4076a5523e0f34..bd26e6d150d53e 100644 --- a/src/api/hooks.cc +++ b/src/api/hooks.cc @@ -32,8 +32,7 @@ void EmitBeforeExit(Environment* env) { } Maybe EmitProcessBeforeExit(Environment* env) { - TraceEventScope trace_scope(TRACING_CATEGORY_NODE1(environment), - "BeforeExit", env); + TRACE_EVENT0(TRACING_CATEGORY_NODE1(environment), "BeforeExit"); if (!env->destroy_async_id_list()->empty()) AsyncWrap::DestroyAsyncIdsCallback(env); diff --git a/src/async_wrap-inl.h b/src/async_wrap-inl.h index 03745081f3b09b..08f305da8a3192 100644 --- a/src/async_wrap-inl.h +++ b/src/async_wrap-inl.h @@ -80,13 +80,6 @@ inline v8::MaybeLocal AsyncWrap::MakeCallback( return MakeCallback(cb_v.As(), argc, argv); } - -// Defined here to avoid a circular dependency with env-inl.h. -inline AsyncHooks::DefaultTriggerAsyncIdScope ::DefaultTriggerAsyncIdScope( - AsyncWrap* async_wrap) - : DefaultTriggerAsyncIdScope(async_wrap->env(), - async_wrap->get_async_id()) {} - } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS diff --git a/src/async_wrap.cc b/src/async_wrap.cc index d5a62951a7d5c7..ff7ff59092104a 100644 --- a/src/async_wrap.cc +++ b/src/async_wrap.cc @@ -217,12 +217,13 @@ void AsyncWrap::WeakCallback(const WeakCallbackInfo& info) { p->env->RemoveCleanupHook(DestroyParamCleanupHook, p.get()); - if (!prop_bag->Get(p->env->context(), p->env->destroyed_string()) + if (!prop_bag.IsEmpty() && + !prop_bag->Get(p->env->context(), p->env->destroyed_string()) .ToLocal(&val)) { return; } - if (val->IsFalse()) { + if (val.IsEmpty() || val->IsFalse()) { AsyncWrap::EmitDestroy(p->env, p->asyncId); } // unique_ptr goes out of scope here and pointer is deleted. @@ -232,14 +233,16 @@ void AsyncWrap::WeakCallback(const WeakCallbackInfo& info) { static void RegisterDestroyHook(const FunctionCallbackInfo& args) { CHECK(args[0]->IsObject()); CHECK(args[1]->IsNumber()); - CHECK(args[2]->IsObject()); + CHECK(args.Length() == 2 || args[2]->IsObject()); Isolate* isolate = args.GetIsolate(); DestroyParam* p = new DestroyParam(); p->asyncId = args[1].As()->Value(); p->env = Environment::GetCurrent(args); p->target.Reset(isolate, args[0].As()); - p->propBag.Reset(isolate, args[2].As()); + if (args.Length() > 2) { + p->propBag.Reset(isolate, args[2].As()); + } p->target.SetWeak(p, AsyncWrap::WeakCallback, WeakCallbackType::kParameter); p->env->AddCleanupHook(DestroyParamCleanupHook, p); } diff --git a/src/base_object-inl.h b/src/base_object-inl.h index bb1e8d4b46bce3..ff618f08b5d394 100644 --- a/src/base_object-inl.h +++ b/src/base_object-inl.h @@ -32,40 +32,6 @@ namespace node { -BaseObject::BaseObject(Environment* env, v8::Local object) - : persistent_handle_(env->isolate(), object), env_(env) { - CHECK_EQ(false, object.IsEmpty()); - CHECK_GT(object->InternalFieldCount(), 0); - object->SetAlignedPointerInInternalField( - BaseObject::kSlot, - static_cast(this)); - env->AddCleanupHook(DeleteMe, static_cast(this)); - env->modify_base_object_count(1); -} - -BaseObject::~BaseObject() { - env()->modify_base_object_count(-1); - env()->RemoveCleanupHook(DeleteMe, static_cast(this)); - - if (UNLIKELY(has_pointer_data())) { - PointerData* metadata = pointer_data(); - CHECK_EQ(metadata->strong_ptr_count, 0); - metadata->self = nullptr; - if (metadata->weak_ptr_count == 0) - delete metadata; - } - - if (persistent_handle_.IsEmpty()) { - // This most likely happened because the weak callback below cleared it. - return; - } - - { - v8::HandleScope handle_scope(env()->isolate()); - object()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr); - } -} - void BaseObject::Detach() { CHECK_GT(pointer_data()->strong_ptr_count, 0); pointer_data()->is_detached = true; @@ -107,28 +73,6 @@ T* BaseObject::FromJSObject(v8::Local object) { return static_cast(FromJSObject(object)); } - -void BaseObject::MakeWeak() { - if (has_pointer_data()) { - pointer_data()->wants_weak_jsobj = true; - if (pointer_data()->strong_ptr_count > 0) return; - } - - persistent_handle_.SetWeak( - this, - [](const v8::WeakCallbackInfo& data) { - BaseObject* obj = data.GetParameter(); - // Clear the persistent handle so that ~BaseObject() doesn't attempt - // to mess with internal fields, since the JS object may have - // transitioned into an invalid state. - // Refs: https://github.com/nodejs/node/issues/18897 - obj->persistent_handle_.Reset(); - CHECK_IMPLIES(obj->has_pointer_data(), - obj->pointer_data()->strong_ptr_count == 0); - obj->OnGCCollect(); - }, v8::WeakCallbackType::kParameter); -} - void BaseObject::OnGCCollect() { delete this; } @@ -148,23 +92,6 @@ bool BaseObject::IsWeakOrDetached() const { return pd->wants_weak_jsobj || pd->is_detached; } -void BaseObject::LazilyInitializedJSTemplateConstructor( - const v8::FunctionCallbackInfo& args) { - DCHECK(args.IsConstructCall()); - DCHECK_GT(args.This()->InternalFieldCount(), 0); - args.This()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr); -} - -v8::Local -BaseObject::MakeLazilyInitializedJSTemplate(Environment* env) { - v8::Local t = - env->NewFunctionTemplate(LazilyInitializedJSTemplateConstructor); - t->Inherit(BaseObject::GetConstructorTemplate(env)); - t->InstanceTemplate()->SetInternalFieldCount( - BaseObject::kInternalFieldCount); - return t; -} - template void BaseObject::InternalFieldGet( v8::Local property, @@ -185,37 +112,6 @@ bool BaseObject::has_pointer_data() const { return pointer_data_ != nullptr; } -BaseObject::PointerData* BaseObject::pointer_data() { - if (!has_pointer_data()) { - PointerData* metadata = new PointerData(); - metadata->wants_weak_jsobj = persistent_handle_.IsWeak(); - metadata->self = this; - pointer_data_ = metadata; - } - CHECK(has_pointer_data()); - return pointer_data_; -} - -void BaseObject::decrease_refcount() { - CHECK(has_pointer_data()); - PointerData* metadata = pointer_data(); - CHECK_GT(metadata->strong_ptr_count, 0); - unsigned int new_refcount = --metadata->strong_ptr_count; - if (new_refcount == 0) { - if (metadata->is_detached) { - OnGCCollect(); - } else if (metadata->wants_weak_jsobj && !persistent_handle_.IsEmpty()) { - MakeWeak(); - } - } -} - -void BaseObject::increase_refcount() { - unsigned int prev_refcount = pointer_data()->strong_ptr_count++; - if (prev_refcount == 0 && !persistent_handle_.IsEmpty()) - persistent_handle_.ClearWeak(); -} - template BaseObject::PointerData* BaseObjectPtrImpl::pointer_data() const { diff --git a/src/base_object.h b/src/base_object.h index 1c63da92fd80c0..842f763a56d75c 100644 --- a/src/base_object.h +++ b/src/base_object.h @@ -44,8 +44,8 @@ class BaseObject : public MemoryRetainer { // Associates this object with `object`. It uses the 0th internal field for // that, and in particular aborts if there is no such field. - inline BaseObject(Environment* env, v8::Local object); - inline ~BaseObject() override; + BaseObject(Environment* env, v8::Local object); + ~BaseObject() override; BaseObject() = delete; @@ -65,7 +65,7 @@ class BaseObject : public MemoryRetainer { // was also passed to the `BaseObject()` constructor initially. // This may return `nullptr` if the C++ object has not been constructed yet, // e.g. when the JS object used `MakeLazilyInitializedJSTemplate`. - static inline void LazilyInitializedJSTemplateConstructor( + static void LazilyInitializedJSTemplateConstructor( const v8::FunctionCallbackInfo& args); static inline BaseObject* FromJSObject(v8::Local object); template @@ -74,7 +74,7 @@ class BaseObject : public MemoryRetainer { // Make the `v8::Global` a weak reference and, `delete` this object once // the JS object has been garbage collected and there are no (strong) // BaseObjectPtr references to it. - inline void MakeWeak(); + void MakeWeak(); // Undo `MakeWeak()`, i.e. turn this into a strong reference that is a GC // root and will not be touched by the garbage collector. @@ -88,7 +88,7 @@ class BaseObject : public MemoryRetainer { // Utility to create a FunctionTemplate with one internal field (used for // the `BaseObject*` pointer) and a constructor that initializes that field // to `nullptr`. - static inline v8::Local MakeLazilyInitializedJSTemplate( + static v8::Local MakeLazilyInitializedJSTemplate( Environment* env); // Setter/Getter pair for internal fields that can be passed to SetAccessor. @@ -202,11 +202,11 @@ class BaseObject : public MemoryRetainer { inline bool has_pointer_data() const; // This creates a PointerData struct if none was associated with this // BaseObject before. - inline PointerData* pointer_data(); + PointerData* pointer_data(); // Functions that adjust the strong pointer count. - inline void decrease_refcount(); - inline void increase_refcount(); + void decrease_refcount(); + void increase_refcount(); Environment* env_; PointerData* pointer_data_ = nullptr; diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc index 30e27ecf70a837..a16a0dcbd1bcec 100644 --- a/src/cares_wrap.cc +++ b/src/cares_wrap.cc @@ -1428,6 +1428,7 @@ static void Query(const FunctionCallbackInfo& args) { void AfterGetAddrInfo(uv_getaddrinfo_t* req, int status, struct addrinfo* res) { + auto cleanup = OnScopeLeave([&]() { uv_freeaddrinfo(res); }); std::unique_ptr req_wrap { static_cast(req->data)}; Environment* env = req_wrap->env(); @@ -1488,8 +1489,6 @@ void AfterGetAddrInfo(uv_getaddrinfo_t* req, int status, struct addrinfo* res) { argv[1] = results; } - uv_freeaddrinfo(res); - TRACE_EVENT_NESTABLE_ASYNC_END2( TRACING_CATEGORY_NODE2(dns, native), "lookup", req_wrap.get(), "count", n, "verbatim", verbatim); diff --git a/src/connection_wrap.cc b/src/connection_wrap.cc index 300f7d316b8309..29815eee4381a0 100644 --- a/src/connection_wrap.cc +++ b/src/connection_wrap.cc @@ -108,6 +108,12 @@ void ConnectionWrap::AfterConnect(uv_connect_t* req, Boolean::New(env->isolate(), writable) }; + TRACE_EVENT_NESTABLE_ASYNC_END1(TRACING_CATEGORY_NODE2(net, native), + "connect", + req_wrap.get(), + "status", + status); + req_wrap->MakeCallback(env->oncomplete_string(), arraysize(argv), argv); } diff --git a/src/crypto/README.md b/src/crypto/README.md index 8ebc3003da3150..e78db18ea4e881 100644 --- a/src/crypto/README.md +++ b/src/crypto/README.md @@ -20,8 +20,8 @@ The following provide generalized utility declarations that are used throughout the various other crypto files and other parts of Node.js: * `crypto_util.h` / `crypto_util.cc` (Core crypto definitions) -* `crypto_common.h` / `crypto_common.h` (Shared TLS utility functions) -* `crypto_bio.c` / `crypto_bio.c` (Custom OpenSSL i/o implementation) +* `crypto_common.h` / `crypto_common.cc` (Shared TLS utility functions) +* `crypto_bio.h` / `crypto_bio.cc` (Custom OpenSSL i/o implementation) * `crypto_groups.h` (modp group definitions) Of these, `crypto_util.h` and `crypto_util.cc` are the most important, as @@ -100,9 +100,16 @@ Examples of these being used are pervasive through the `src/crypto` code. The `ByteSource` class is a helper utility representing a _read-only_ byte array. Instances can either wrap external ("foreign") data sources, such as -an `ArrayBuffer` (`v8::BackingStore`) or allocated data. If allocated data -is used, then the allocation is freed automatically when the `ByteSource` is -destroyed. +an `ArrayBuffer` (`v8::BackingStore`), or allocated data. + +* If a pointer to external data is used to create a `ByteSource`, that pointer + must remain valid until the `ByteSource` is destroyed. +* If allocated data is used, then it must have been allocated using OpenSSL's + allocator. It will be freed automatically when the `ByteSource` is destroyed. + +The `ByteSource::Builder` class can be used to allocate writable memory that can +then be released as a `ByteSource`, making it read-only, or freed by destroying +the `ByteSource::Builder` without releasing it as a `ByteSource`. ### `ArrayBufferOrViewContents` @@ -112,17 +119,6 @@ their underlying data pointers. It is used extensively through `src/crypto` to make it easier to deal with inputs that allow any `ArrayBuffer`-backed object. -### `AllocatedBuffer` - -The `AllocatedBuffer` utility is defined in `allocated_buffer.h` and is not -specific to `src/crypto`. It is used extensively within `src/crypto` to hold -allocated data that is intended to be output in response to various -crypto functions (generated hash values, or ciphertext, for instance). - -_Currently, we are working to transition away from using `AllocatedBuffer` -to directly using the `v8::BackingStore` API. This will take some time. -New uses of `AllocatedBuffer` should be avoided if possible._ - ### Key objects Most crypto operations involve the use of keys -- cryptographic inputs @@ -312,12 +308,12 @@ crypto.randomFill(buf, (err, buf) => { For the legacy Node.js crypto API, asynchronous single-call operations use the traditional Node.js callback pattern, as illustrated in the previous `randomFill()` example. In the -Web Crypto API (accessible via `require('crypto').webcrypto`), +Web Crypto API (accessible via `require('node:crypto').webcrypto`), all asynchronous single-call operations are Promise-based. ```js // Example Web Crypto API asynchronous single-call operation -const { subtle } = require('crypto').webcrypto; +const { subtle } = require('node:crypto').webcrypto; subtle.generateKeys({ name: 'HMAC', length: 256 }, true, ['sign']) .then((key) => { diff --git a/src/crypto/crypto_aes.cc b/src/crypto/crypto_aes.cc index e6a6c77cba2771..76d3e3853451d4 100644 --- a/src/crypto/crypto_aes.cc +++ b/src/crypto/crypto_aes.cc @@ -1,10 +1,9 @@ #include "crypto/crypto_aes.h" +#include "async_wrap-inl.h" +#include "base_object-inl.h" #include "crypto/crypto_cipher.h" #include "crypto/crypto_keys.h" #include "crypto/crypto_util.h" -#include "allocated_buffer-inl.h" -#include "async_wrap-inl.h" -#include "base_object-inl.h" #include "env-inl.h" #include "memory_tracker-inl.h" #include "threadpoolwork-inl.h" @@ -30,7 +29,7 @@ namespace crypto { namespace { // Implements general AES encryption and decryption for CBC // The key_data must be a secret key. -// On success, this function sets out to a new AllocatedBuffer +// On success, this function sets out to a new ByteSource // instance containing the results and returns WebCryptoCipherStatus::OK. WebCryptoCipherStatus AES_Cipher( Environment* env, diff --git a/src/crypto/crypto_aes.h b/src/crypto/crypto_aes.h index 3ffe04766cc339..9dfa5edc6544e7 100644 --- a/src/crypto/crypto_aes.h +++ b/src/crypto/crypto_aes.h @@ -6,7 +6,6 @@ #include "crypto/crypto_cipher.h" #include "crypto/crypto_keys.h" #include "crypto/crypto_util.h" -#include "allocated_buffer.h" #include "env.h" #include "v8.h" diff --git a/src/crypto/crypto_bio.cc b/src/crypto/crypto_bio.cc index 13793aa7f2ed65..25ea640ad83077 100644 --- a/src/crypto/crypto_bio.cc +++ b/src/crypto/crypto_bio.cc @@ -22,7 +22,6 @@ #include "crypto/crypto_bio.h" #include "base_object-inl.h" #include "memory_tracker-inl.h" -#include "allocated_buffer-inl.h" #include "util-inl.h" #include diff --git a/src/crypto/crypto_cipher.cc b/src/crypto/crypto_cipher.cc index d6c6f0c4375aad..6c663a2b21d0a2 100644 --- a/src/crypto/crypto_cipher.cc +++ b/src/crypto/crypto_cipher.cc @@ -1,7 +1,6 @@ #include "crypto/crypto_cipher.h" -#include "crypto/crypto_util.h" -#include "allocated_buffer-inl.h" #include "base_object-inl.h" +#include "crypto/crypto_util.h" #include "env-inl.h" #include "memory_tracker-inl.h" #include "node_buffer.h" @@ -24,21 +23,20 @@ using v8::Uint32; using v8::Value; namespace crypto { -#ifdef OPENSSL_NO_OCB -# define IS_OCB_MODE(mode) false -#else -# define IS_OCB_MODE(mode) ((mode) == EVP_CIPH_OCB_MODE) -#endif - namespace { bool IsSupportedAuthenticatedMode(const EVP_CIPHER* cipher) { - const int mode = EVP_CIPHER_mode(cipher); - // Check `chacha20-poly1305` separately, it is also an AEAD cipher, - // but its mode is 0 which doesn't indicate - return EVP_CIPHER_nid(cipher) == NID_chacha20_poly1305 || - mode == EVP_CIPH_CCM_MODE || - mode == EVP_CIPH_GCM_MODE || - IS_OCB_MODE(mode); + switch (EVP_CIPHER_mode(cipher)) { + case EVP_CIPH_CCM_MODE: + case EVP_CIPH_GCM_MODE: +#ifndef OPENSSL_NO_OCB + case EVP_CIPH_OCB_MODE: +#endif + return true; + case EVP_CIPH_STREAM_CIPHER: + return EVP_CIPHER_nid(cipher) == NID_chacha20_poly1305; + default: + return false; + } } bool IsSupportedAuthenticatedMode(const EVP_CIPHER_CTX* ctx) { @@ -198,10 +196,14 @@ void CipherBase::GetSSLCiphers(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); SSLCtxPointer ctx(SSL_CTX_new(TLS_method())); - CHECK(ctx); + if (!ctx) { + return ThrowCryptoError(env, ERR_get_error(), "SSL_CTX_new"); + } SSLPointer ssl(SSL_new(ctx.get())); - CHECK(ssl); + if (!ssl) { + return ThrowCryptoError(env, ERR_get_error(), "SSL_new"); + } STACK_OF(SSL_CIPHER)* ciphers = SSL_get_ciphers(ssl.get()); @@ -572,9 +574,17 @@ bool CipherBase::InitAuthenticated( } } else { if (auth_tag_len == kNoAuthTagLength) { - THROW_ERR_CRYPTO_INVALID_AUTH_TAG( - env(), "authTagLength required for %s", cipher_type); - return false; + // We treat ChaCha20-Poly1305 specially. Like GCM, the authentication tag + // length defaults to 16 bytes when encrypting. Unlike GCM, the + // authentication tag length also defaults to 16 bytes when decrypting, + // whereas GCM would accept any valid authentication tag length. + if (EVP_CIPHER_CTX_nid(ctx_.get()) == NID_chacha20_poly1305) { + auth_tag_len = 16; + } else { + THROW_ERR_CRYPTO_INVALID_AUTH_TAG( + env(), "authTagLength required for %s", cipher_type); + return false; + } } // TODO(tniessen) Support CCM decryption in FIPS mode diff --git a/src/crypto/crypto_common.cc b/src/crypto/crypto_common.cc index a5aa39c23c1708..ed1aea868d8385 100644 --- a/src/crypto/crypto_common.cc +++ b/src/crypto/crypto_common.cc @@ -1,4 +1,3 @@ -#include "allocated_buffer-inl.h" #include "base_object-inl.h" #include "env-inl.h" #include "node_buffer.h" @@ -49,13 +48,18 @@ static constexpr int kX509NameFlagsMultiline = XN_FLAG_SEP_MULTILINE | XN_FLAG_FN_SN; -bool SSL_CTX_get_issuer(SSL_CTX* ctx, X509* cert, X509** issuer) { +X509Pointer SSL_CTX_get_issuer(SSL_CTX* ctx, X509* cert) { X509_STORE* store = SSL_CTX_get_cert_store(ctx); DeleteFnPtr store_ctx( X509_STORE_CTX_new()); - return store_ctx.get() != nullptr && - X509_STORE_CTX_init(store_ctx.get(), store, nullptr, nullptr) == 1 && - X509_STORE_CTX_get1_issuer(issuer, store_ctx.get(), cert) == 1; + X509Pointer result; + X509* issuer; + if (store_ctx.get() != nullptr && + X509_STORE_CTX_init(store_ctx.get(), store, nullptr, nullptr) == 1 && + X509_STORE_CTX_get1_issuer(&issuer, store_ctx.get(), cert) == 1) { + result.reset(issuer); + } + return result; } void LogSecret( @@ -146,7 +150,7 @@ long VerifyPeerCertificate( // NOLINT(runtime/int) bool UseSNIContext( const SSLPointer& ssl, BaseObjectPtr context) { - SSL_CTX* ctx = context->ctx_.get(); + SSL_CTX* ctx = context->ctx().get(); X509* x509 = SSL_CTX_get0_certificate(ctx); EVP_PKEY* pkey = SSL_CTX_get0_privatekey(ctx); STACK_OF(X509)* chain; @@ -210,7 +214,7 @@ const char* GetServerName(SSL* ssl) { } bool SetGroups(SecureContext* sc, const char* groups) { - return SSL_CTX_set1_groups_list(**sc, groups) == 1; + return SSL_CTX_set1_groups_list(sc->ctx().get(), groups) == 1; } const char* X509ErrorCode(long err) { // NOLINT(runtime/int) @@ -387,12 +391,12 @@ MaybeLocal GetLastIssuedCert( Environment* const env) { Local context = env->isolate()->GetCurrentContext(); while (X509_check_issued(cert->get(), cert->get()) != X509_V_OK) { - X509* ca; - if (SSL_CTX_get_issuer(SSL_get_SSL_CTX(ssl.get()), cert->get(), &ca) <= 0) + X509Pointer ca; + if (!(ca = SSL_CTX_get_issuer(SSL_get_SSL_CTX(ssl.get()), cert->get()))) break; Local ca_info; - MaybeLocal maybe_ca_info = X509ToObject(env, ca); + MaybeLocal maybe_ca_info = X509ToObject(env, ca.get()); if (!maybe_ca_info.ToLocal(&ca_info)) return MaybeLocal(); @@ -400,16 +404,14 @@ MaybeLocal GetLastIssuedCert( return MaybeLocal(); issuer_chain = ca_info; - // Take the value of cert->get() before the call to cert->reset() - // in order to compare it to ca after and provide a way to exit this loop - // in case it gets stuck. - X509* value_before_reset = cert->get(); + // For self-signed certificates whose keyUsage field does not include + // keyCertSign, X509_check_issued() will return false. Avoid going into an + // infinite loop by checking if SSL_CTX_get_issuer() returned the same + // certificate. + if (cert->get() == ca.get()) break; // Delete previous cert and continue aggregating issuers. - cert->reset(ca); - - if (value_before_reset == ca) - break; + *cert = std::move(ca); } return MaybeLocal(issuer_chain); } diff --git a/src/crypto/crypto_common.h b/src/crypto/crypto_common.h index e0956395e91c18..96ca981aec9e44 100644 --- a/src/crypto/crypto_common.h +++ b/src/crypto/crypto_common.h @@ -25,7 +25,7 @@ struct StackOfXASN1Deleter { }; using StackOfASN1 = std::unique_ptr; -bool SSL_CTX_get_issuer(SSL_CTX* ctx, X509* cert, X509** issuer); +X509Pointer SSL_CTX_get_issuer(SSL_CTX* ctx, X509* cert); void LogSecret( const SSLPointer& ssl, diff --git a/src/crypto/crypto_context.cc b/src/crypto/crypto_context.cc index 739b559c3b7b22..e2291f72b6622f 100644 --- a/src/crypto/crypto_context.cc +++ b/src/crypto/crypto_context.cc @@ -110,21 +110,21 @@ int SSL_CTX_use_certificate_chain(SSL_CTX* ctx, // Try getting issuer from a cert store if (ret) { if (issuer == nullptr) { - ret = SSL_CTX_get_issuer(ctx, x.get(), &issuer); - ret = ret < 0 ? 0 : 1; + // TODO(tniessen): SSL_CTX_get_issuer does not allow the caller to + // distinguish between a failed operation and an empty result. Fix that + // and then handle the potential error properly here (set ret to 0). + *issuer_ = SSL_CTX_get_issuer(ctx, x.get()); // NOTE: get_cert_store doesn't increment reference count, // no need to free `store` } else { // Increment issuer reference count - issuer = X509_dup(issuer); - if (issuer == nullptr) { + issuer_->reset(X509_dup(issuer)); + if (!*issuer_) { ret = 0; } } } - issuer_->reset(issuer); - if (ret && x != nullptr) { cert->reset(X509_dup(x.get())); if (!*cert) @@ -508,6 +508,9 @@ void SecureContext::Init(const FunctionCallbackInfo& args) { } sc->ctx_.reset(SSL_CTX_new(method)); + if (!sc->ctx_) { + return ThrowCryptoError(env, ERR_get_error(), "SSL_CTX_new"); + } SSL_CTX_set_app_data(sc->ctx_.get(), sc); // Disable SSLv2 in the case when method == TLS_method() and the diff --git a/src/crypto/crypto_context.h b/src/crypto/crypto_context.h index d9b33a4736f13a..ee2df97ac21411 100644 --- a/src/crypto/crypto_context.h +++ b/src/crypto/crypto_context.h @@ -41,9 +41,7 @@ class SecureContext final : public BaseObject { static void RegisterExternalReferences(ExternalReferenceRegistry* registry); static SecureContext* Create(Environment* env); - SSL_CTX* operator*() const { return ctx_.get(); } - - SSL_CTX* ssl_ctx() const { return ctx_.get(); } + const SSLCtxPointer& ctx() const { return ctx_; } SSLPointer CreateSSL(); @@ -57,14 +55,6 @@ class SecureContext final : public BaseObject { SET_MEMORY_INFO_NAME(SecureContext) SET_SELF_SIZE(SecureContext) - SSLCtxPointer ctx_; - X509Pointer cert_; - X509Pointer issuer_; -#ifndef OPENSSL_NO_ENGINE - bool client_cert_engine_provided_ = false; - EnginePointer private_key_engine_; -#endif // !OPENSSL_NO_ENGINE - static const int kMaxSessionSize = 10 * 1024; // See TicketKeyCallback @@ -74,10 +64,6 @@ class SecureContext final : public BaseObject { static const int kTicketKeyNameIndex = 3; static const int kTicketKeyIVIndex = 4; - unsigned char ticket_key_name_[16]; - unsigned char ticket_key_aes_[16]; - unsigned char ticket_key_hmac_[16]; - protected: // OpenSSL structures are opaque. This is sizeof(SSL_CTX) for OpenSSL 1.1.1b: static const int64_t kExternalSize = 1024; @@ -139,6 +125,19 @@ class SecureContext final : public BaseObject { SecureContext(Environment* env, v8::Local wrap); void Reset(); + + private: + SSLCtxPointer ctx_; + X509Pointer cert_; + X509Pointer issuer_; +#ifndef OPENSSL_NO_ENGINE + bool client_cert_engine_provided_ = false; + EnginePointer private_key_engine_; +#endif // !OPENSSL_NO_ENGINE + + unsigned char ticket_key_name_[16]; + unsigned char ticket_key_aes_[16]; + unsigned char ticket_key_hmac_[16]; }; } // namespace crypto diff --git a/src/crypto/crypto_dh.cc b/src/crypto/crypto_dh.cc index b6ef5e5b1e004e..c02e22bb542ff5 100644 --- a/src/crypto/crypto_dh.cc +++ b/src/crypto/crypto_dh.cc @@ -1,9 +1,8 @@ #include "crypto/crypto_dh.h" -#include "crypto/crypto_keys.h" -#include "crypto/crypto_groups.h" -#include "allocated_buffer-inl.h" #include "async_wrap-inl.h" #include "base_object-inl.h" +#include "crypto/crypto_groups.h" +#include "crypto/crypto_keys.h" #include "env-inl.h" #include "memory_tracker-inl.h" #include "threadpoolwork-inl.h" @@ -11,6 +10,8 @@ namespace node { +using v8::ArrayBuffer; +using v8::BackingStore; using v8::ConstructorBehavior; using v8::DontDelete; using v8::FunctionCallback; @@ -28,14 +29,13 @@ using v8::ReadOnly; using v8::SideEffectType; using v8::Signature; using v8::String; -using v8::Uint8Array; using v8::Value; namespace crypto { namespace { -static void ZeroPadDiffieHellmanSecret(size_t remainder_size, - char* data, - size_t length) { +void ZeroPadDiffieHellmanSecret(size_t remainder_size, + char* data, + size_t length) { // DH_size returns number of bytes in a prime number. // DH_compute_key returns number of bytes in a remainder of exponent, which // may have less bytes than a prime number. Therefore add 0-padding to the @@ -48,10 +48,6 @@ static void ZeroPadDiffieHellmanSecret(size_t remainder_size, memset(data, 0, padding); } } -static void ZeroPadDiffieHellmanSecret(size_t remainder_size, - AllocatedBuffer* ret) { - ZeroPadDiffieHellmanSecret(remainder_size, ret->data(), ret->size()); -} } // namespace DiffieHellman::DiffieHellman(Environment* env, Local wrap) @@ -273,13 +269,24 @@ void DiffieHellman::GenerateKeys(const FunctionCallbackInfo& args) { const BIGNUM* pub_key; DH_get0_key(diffieHellman->dh_.get(), &pub_key, nullptr); - const int size = BN_num_bytes(pub_key); - CHECK_GE(size, 0); - AllocatedBuffer data = AllocatedBuffer::AllocateManaged(env, size); - CHECK_EQ(size, - BN_bn2binpad( - pub_key, reinterpret_cast(data.data()), size)); - args.GetReturnValue().Set(data.ToBuffer().FromMaybe(Local())); + + std::unique_ptr bs; + { + const int size = BN_num_bytes(pub_key); + CHECK_GE(size, 0); + NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); + bs = ArrayBuffer::NewBackingStore(env->isolate(), size); + } + + CHECK_EQ(static_cast(bs->ByteLength()), + BN_bn2binpad(pub_key, + static_cast(bs->Data()), + bs->ByteLength())); + + Local ab = ArrayBuffer::New(env->isolate(), std::move(bs)); + Local buffer; + if (!Buffer::New(env, ab, 0, ab->ByteLength()).ToLocal(&buffer)) return; + args.GetReturnValue().Set(buffer); } @@ -295,13 +302,23 @@ void DiffieHellman::GetField(const FunctionCallbackInfo& args, if (num == nullptr) return THROW_ERR_CRYPTO_INVALID_STATE(env, err_if_null); - const int size = BN_num_bytes(num); - CHECK_GE(size, 0); - AllocatedBuffer data = AllocatedBuffer::AllocateManaged(env, size); - CHECK_EQ( - size, - BN_bn2binpad(num, reinterpret_cast(data.data()), size)); - args.GetReturnValue().Set(data.ToBuffer().FromMaybe(Local())); + std::unique_ptr bs; + { + const int size = BN_num_bytes(num); + CHECK_GE(size, 0); + NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); + bs = ArrayBuffer::NewBackingStore(env->isolate(), size); + } + + CHECK_EQ(static_cast(bs->ByteLength()), + BN_bn2binpad(num, + static_cast(bs->Data()), + bs->ByteLength())); + + Local ab = ArrayBuffer::New(env->isolate(), std::move(bs)); + Local buffer; + if (!Buffer::New(env, ab, 0, ab->ByteLength()).ToLocal(&buffer)) return; + args.GetReturnValue().Set(buffer); } void DiffieHellman::GetPrime(const FunctionCallbackInfo& args) { @@ -350,10 +367,14 @@ void DiffieHellman::ComputeSecret(const FunctionCallbackInfo& args) { return THROW_ERR_OUT_OF_RANGE(env, "secret is too big"); BignumPointer key(BN_bin2bn(key_buf.data(), key_buf.size(), nullptr)); - AllocatedBuffer ret = - AllocatedBuffer::AllocateManaged(env, DH_size(diffieHellman->dh_.get())); + std::unique_ptr bs; + { + NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); + bs = ArrayBuffer::NewBackingStore(env->isolate(), + DH_size(diffieHellman->dh_.get())); + } - int size = DH_compute_key(reinterpret_cast(ret.data()), + int size = DH_compute_key(static_cast(bs->Data()), key.get(), diffieHellman->dh_.get()); @@ -381,9 +402,14 @@ void DiffieHellman::ComputeSecret(const FunctionCallbackInfo& args) { } CHECK_GE(size, 0); - ZeroPadDiffieHellmanSecret(static_cast(size), &ret); + ZeroPadDiffieHellmanSecret(size, + static_cast(bs->Data()), + bs->ByteLength()); - args.GetReturnValue().Set(ret.ToBuffer().FromMaybe(Local())); + Local ab = ArrayBuffer::New(env->isolate(), std::move(bs)); + Local buffer; + if (!Buffer::New(env, ab, 0, ab->ByteLength()).ToLocal(&buffer)) return; + args.GetReturnValue().Set(buffer); } void DiffieHellman::SetKey(const FunctionCallbackInfo& args, @@ -603,8 +629,10 @@ void DiffieHellman::Stateless(const FunctionCallbackInfo& args) { ManagedEVPPKey our_key = our_key_object->Data()->GetAsymmetricKey(); ManagedEVPPKey their_key = their_key_object->Data()->GetAsymmetricKey(); - Local out = StatelessDiffieHellmanThreadsafe(our_key, their_key) - .ToBuffer(env).FromMaybe(Local()); + Local out; + if (!StatelessDiffieHellmanThreadsafe(our_key, their_key) + .ToBuffer(env) + .ToLocal(&out)) return; if (Buffer::Length(out) == 0) return ThrowCryptoError(env, ERR_get_error(), "diffieHellman failed"); diff --git a/src/crypto/crypto_ec.cc b/src/crypto/crypto_ec.cc index 2d738bb9b62e11..e9fe65ffd571ca 100644 --- a/src/crypto/crypto_ec.cc +++ b/src/crypto/crypto_ec.cc @@ -1,9 +1,8 @@ #include "crypto/crypto_ec.h" -#include "crypto/crypto_common.h" -#include "crypto/crypto_util.h" -#include "allocated_buffer-inl.h" #include "async_wrap-inl.h" #include "base_object-inl.h" +#include "crypto/crypto_common.h" +#include "crypto/crypto_util.h" #include "env-inl.h" #include "memory_tracker-inl.h" #include "node_buffer.h" @@ -20,6 +19,8 @@ namespace node { using v8::Array; +using v8::ArrayBuffer; +using v8::BackingStore; using v8::FunctionCallbackInfo; using v8::FunctionTemplate; using v8::Int32; @@ -44,13 +45,13 @@ int GetCurveFromName(const char* name) { int GetOKPCurveFromName(const char* name) { int nid; - if (strcmp(name, "NODE-ED25519") == 0) { + if (strcmp(name, "Ed25519") == 0) { nid = EVP_PKEY_ED25519; - } else if (strcmp(name, "NODE-ED448") == 0) { + } else if (strcmp(name, "Ed448") == 0) { nid = EVP_PKEY_ED448; - } else if (strcmp(name, "NODE-X25519") == 0) { + } else if (strcmp(name, "X25519") == 0) { nid = EVP_PKEY_X25519; - } else if (strcmp(name, "NODE-X448") == 0) { + } else if (strcmp(name, "X448") == 0) { nid = EVP_PKEY_X448; } else { nid = NID_undef; @@ -220,17 +221,23 @@ void ECDH::ComputeSecret(const FunctionCallbackInfo& args) { return; } - // NOTE: field_size is in bits - int field_size = EC_GROUP_get_degree(ecdh->group_); - size_t out_len = (field_size + 7) / 8; - AllocatedBuffer out = AllocatedBuffer::AllocateManaged(env, out_len); + std::unique_ptr bs; + { + NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); + // NOTE: field_size is in bits + int field_size = EC_GROUP_get_degree(ecdh->group_); + size_t out_len = (field_size + 7) / 8; + bs = ArrayBuffer::NewBackingStore(env->isolate(), out_len); + } - int r = ECDH_compute_key( - out.data(), out_len, pub.get(), ecdh->key_.get(), nullptr); - if (!r) + if (!ECDH_compute_key( + bs->Data(), bs->ByteLength(), pub.get(), ecdh->key_.get(), nullptr)) return THROW_ERR_CRYPTO_OPERATION_FAILED(env, "Failed to compute ECDH key"); - args.GetReturnValue().Set(out.ToBuffer().FromMaybe(Local())); + Local ab = ArrayBuffer::New(env->isolate(), std::move(bs)); + Local buffer; + if (!Buffer::New(env, ab, 0, ab->ByteLength()).ToLocal(&buffer)) return; + args.GetReturnValue().Set(buffer); } void ECDH::GetPublicKey(const FunctionCallbackInfo& args) { @@ -270,13 +277,19 @@ void ECDH::GetPrivateKey(const FunctionCallbackInfo& args) { return THROW_ERR_CRYPTO_OPERATION_FAILED(env, "Failed to get ECDH private key"); - const int size = BN_num_bytes(b); - AllocatedBuffer out = AllocatedBuffer::AllocateManaged(env, size); - CHECK_EQ(size, BN_bn2binpad(b, - reinterpret_cast(out.data()), - size)); + std::unique_ptr bs; + { + NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); + bs = ArrayBuffer::NewBackingStore(env->isolate(), BN_num_bytes(b)); + } + CHECK_EQ(static_cast(bs->ByteLength()), + BN_bn2binpad( + b, static_cast(bs->Data()), bs->ByteLength())); - args.GetReturnValue().Set(out.ToBuffer().FromMaybe(Local())); + Local ab = ArrayBuffer::New(env->isolate(), std::move(bs)); + Local buffer; + if (!Buffer::New(env, ab, 0, ab->ByteLength()).ToLocal(&buffer)) return; + args.GetReturnValue().Set(buffer); } void ECDH::SetPrivateKey(const FunctionCallbackInfo& args) { diff --git a/src/crypto/crypto_ec.h b/src/crypto/crypto_ec.h index bc4160fc8bee01..9782ce0bf35a66 100644 --- a/src/crypto/crypto_ec.h +++ b/src/crypto/crypto_ec.h @@ -3,12 +3,11 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS -#include "crypto/crypto_keys.h" -#include "crypto/crypto_keygen.h" -#include "crypto/crypto_util.h" -#include "allocated_buffer.h" #include "async_wrap.h" #include "base_object.h" +#include "crypto/crypto_keygen.h" +#include "crypto/crypto_keys.h" +#include "crypto/crypto_util.h" #include "env.h" #include "memory_tracker.h" #include "node_internals.h" diff --git a/src/crypto/crypto_groups.h b/src/crypto/crypto_groups.h index c49b4356d8a919..c43569db5e6c8e 100644 --- a/src/crypto/crypto_groups.h +++ b/src/crypto/crypto_groups.h @@ -390,12 +390,12 @@ static const unsigned char group_modp18[] = { 0x80, 0xdd, 0x98, 0xed, 0xd3, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -typedef struct { +struct modp_group { const char* name; const char* prime; unsigned int prime_size; unsigned int gen; -} modp_group; +}; static const modp_group modp_groups[] = { #define V(var) reinterpret_cast(var) diff --git a/src/crypto/crypto_hash.cc b/src/crypto/crypto_hash.cc index ceea9e595708ba..8f7128569c7aa5 100644 --- a/src/crypto/crypto_hash.cc +++ b/src/crypto/crypto_hash.cc @@ -1,5 +1,4 @@ #include "crypto/crypto_hash.h" -#include "allocated_buffer-inl.h" #include "async_wrap-inl.h" #include "base_object-inl.h" #include "env-inl.h" diff --git a/src/crypto/crypto_hash.h b/src/crypto/crypto_hash.h index cfc09334ce0195..96a9804420db63 100644 --- a/src/crypto/crypto_hash.h +++ b/src/crypto/crypto_hash.h @@ -3,10 +3,9 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS +#include "base_object.h" #include "crypto/crypto_keys.h" #include "crypto/crypto_util.h" -#include "allocated_buffer.h" -#include "base_object.h" #include "env.h" #include "memory_tracker.h" #include "v8.h" diff --git a/src/crypto/crypto_hkdf.cc b/src/crypto/crypto_hkdf.cc index 0aa96ada47abe4..b1efcbe55fa898 100644 --- a/src/crypto/crypto_hkdf.cc +++ b/src/crypto/crypto_hkdf.cc @@ -1,8 +1,7 @@ #include "crypto/crypto_hkdf.h" -#include "crypto/crypto_keys.h" -#include "allocated_buffer-inl.h" #include "async_wrap-inl.h" #include "base_object-inl.h" +#include "crypto/crypto_keys.h" #include "env-inl.h" #include "memory_tracker-inl.h" #include "threadpoolwork-inl.h" diff --git a/src/crypto/crypto_hkdf.h b/src/crypto/crypto_hkdf.h index 666aad65474a2e..ef2d03c2091595 100644 --- a/src/crypto/crypto_hkdf.h +++ b/src/crypto/crypto_hkdf.h @@ -3,11 +3,10 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS -#include "crypto/crypto_keys.h" -#include "crypto/crypto_util.h" -#include "allocated_buffer.h" #include "async_wrap.h" #include "base_object.h" +#include "crypto/crypto_keys.h" +#include "crypto/crypto_util.h" #include "v8.h" namespace node { diff --git a/src/crypto/crypto_hmac.cc b/src/crypto/crypto_hmac.cc index d6a652ff8f5ee0..296ae541a3e68f 100644 --- a/src/crypto/crypto_hmac.cc +++ b/src/crypto/crypto_hmac.cc @@ -1,10 +1,9 @@ #include "crypto/crypto_hmac.h" +#include "async_wrap-inl.h" +#include "base_object-inl.h" #include "crypto/crypto_keys.h" #include "crypto/crypto_sig.h" #include "crypto/crypto_util.h" -#include "allocated_buffer-inl.h" -#include "async_wrap-inl.h" -#include "base_object-inl.h" #include "env-inl.h" #include "memory_tracker-inl.h" #include "node_buffer.h" diff --git a/src/crypto/crypto_hmac.h b/src/crypto/crypto_hmac.h index c37fc4a82c6e95..c80cc36f11dddc 100644 --- a/src/crypto/crypto_hmac.h +++ b/src/crypto/crypto_hmac.h @@ -3,11 +3,10 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS +#include "base_object.h" #include "crypto/crypto_keys.h" #include "crypto/crypto_sig.h" #include "crypto/crypto_util.h" -#include "allocated_buffer.h" -#include "base_object.h" #include "env.h" #include "memory_tracker.h" #include "v8.h" diff --git a/src/crypto/crypto_keygen.cc b/src/crypto/crypto_keygen.cc index 24943883b7ba0a..e4e9c227458397 100644 --- a/src/crypto/crypto_keygen.cc +++ b/src/crypto/crypto_keygen.cc @@ -1,5 +1,4 @@ #include "crypto/crypto_keygen.h" -#include "allocated_buffer-inl.h" #include "async_wrap-inl.h" #include "base_object-inl.h" #include "debug_utils-inl.h" diff --git a/src/crypto/crypto_keygen.h b/src/crypto/crypto_keygen.h index f8d863a2d93990..01407de83c7b14 100644 --- a/src/crypto/crypto_keygen.h +++ b/src/crypto/crypto_keygen.h @@ -3,11 +3,10 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS -#include "crypto/crypto_keys.h" -#include "crypto/crypto_util.h" -#include "allocated_buffer.h" #include "async_wrap.h" #include "base_object.h" +#include "crypto/crypto_keys.h" +#include "crypto/crypto_util.h" #include "env.h" #include "memory_tracker.h" #include "v8.h" diff --git a/src/crypto/crypto_pbkdf2.cc b/src/crypto/crypto_pbkdf2.cc index 495722927ab5be..345c7fe5ce6c15 100644 --- a/src/crypto/crypto_pbkdf2.cc +++ b/src/crypto/crypto_pbkdf2.cc @@ -1,7 +1,6 @@ #include "crypto/crypto_pbkdf2.h" -#include "crypto/crypto_util.h" -#include "allocated_buffer-inl.h" #include "async_wrap-inl.h" +#include "crypto/crypto_util.h" #include "env-inl.h" #include "memory_tracker-inl.h" #include "node_buffer.h" diff --git a/src/crypto/crypto_random.cc b/src/crypto/crypto_random.cc index fc88deb460314c..648fda211c4305 100644 --- a/src/crypto/crypto_random.cc +++ b/src/crypto/crypto_random.cc @@ -1,7 +1,6 @@ #include "crypto/crypto_random.h" -#include "crypto/crypto_util.h" -#include "allocated_buffer-inl.h" #include "async_wrap-inl.h" +#include "crypto/crypto_util.h" #include "env-inl.h" #include "memory_tracker-inl.h" #include "threadpoolwork-inl.h" @@ -122,11 +121,9 @@ Maybe RandomPrimeTraits::AdditionalConfig( } } + // The JS interface already ensures that the (positive) size fits into an int. int bits = static_cast(size); - if (bits < 0) { - THROW_ERR_OUT_OF_RANGE(env, "invalid size"); - return Nothing(); - } + CHECK_GT(bits, 0); if (params->add) { if (BN_num_bits(params->add.get()) > bits) { diff --git a/src/crypto/crypto_random.h b/src/crypto/crypto_random.h index 970306c30cd8e3..a2807ed6ec8743 100644 --- a/src/crypto/crypto_random.h +++ b/src/crypto/crypto_random.h @@ -3,9 +3,8 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS -#include "crypto/crypto_util.h" #include "base_object.h" -#include "allocated_buffer.h" +#include "crypto/crypto_util.h" #include "env.h" #include "memory_tracker.h" #include "node_internals.h" diff --git a/src/crypto/crypto_rsa.cc b/src/crypto/crypto_rsa.cc index ae4550e9fde812..bd732a70a8ffe6 100644 --- a/src/crypto/crypto_rsa.cc +++ b/src/crypto/crypto_rsa.cc @@ -1,10 +1,9 @@ #include "crypto/crypto_rsa.h" +#include "async_wrap-inl.h" +#include "base_object-inl.h" #include "crypto/crypto_bio.h" #include "crypto/crypto_keys.h" #include "crypto/crypto_util.h" -#include "allocated_buffer-inl.h" -#include "async_wrap-inl.h" -#include "base_object-inl.h" #include "env-inl.h" #include "memory_tracker-inl.h" #include "threadpoolwork-inl.h" @@ -15,6 +14,8 @@ namespace node { +using v8::ArrayBuffer; +using v8::BackingStore; using v8::FunctionCallbackInfo; using v8::Int32; using v8::Just; @@ -555,17 +556,21 @@ Maybe GetRsaKeyDetail( return Nothing(); } - int len = BN_num_bytes(e); - AllocatedBuffer public_exponent = AllocatedBuffer::AllocateManaged(env, len); - unsigned char* data = - reinterpret_cast(public_exponent.data()); - CHECK_EQ(BN_bn2binpad(e, data, len), len); + std::unique_ptr public_exponent; + { + NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); + public_exponent = + ArrayBuffer::NewBackingStore(env->isolate(), BN_num_bytes(e)); + } + CHECK_EQ(BN_bn2binpad(e, + static_cast(public_exponent->Data()), + public_exponent->ByteLength()), + static_cast(public_exponent->ByteLength())); if (target - ->Set( - env->context(), - env->public_exponent_string(), - public_exponent.ToArrayBuffer()) + ->Set(env->context(), + env->public_exponent_string(), + ArrayBuffer::New(env->isolate(), std::move(public_exponent))) .IsNothing()) { return Nothing(); } diff --git a/src/crypto/crypto_rsa.h b/src/crypto/crypto_rsa.h index 4f6fbad4f6e6b0..bd00320ca8a5be 100644 --- a/src/crypto/crypto_rsa.h +++ b/src/crypto/crypto_rsa.h @@ -7,7 +7,6 @@ #include "crypto/crypto_keygen.h" #include "crypto/crypto_keys.h" #include "crypto/crypto_util.h" -#include "allocated_buffer.h" #include "env.h" #include "memory_tracker.h" #include "v8.h" diff --git a/src/crypto/crypto_scrypt.cc b/src/crypto/crypto_scrypt.cc index 077c26554b2f1f..4ddf705703c723 100644 --- a/src/crypto/crypto_scrypt.cc +++ b/src/crypto/crypto_scrypt.cc @@ -1,7 +1,6 @@ #include "crypto/crypto_scrypt.h" -#include "crypto/crypto_util.h" -#include "allocated_buffer-inl.h" #include "async_wrap-inl.h" +#include "crypto/crypto_util.h" #include "env-inl.h" #include "memory_tracker-inl.h" #include "node_buffer.h" diff --git a/src/crypto/crypto_sig.cc b/src/crypto/crypto_sig.cc index 90031b0ac4257f..c4483a71744e35 100644 --- a/src/crypto/crypto_sig.cc +++ b/src/crypto/crypto_sig.cc @@ -1,10 +1,9 @@ #include "crypto/crypto_sig.h" +#include "async_wrap-inl.h" +#include "base_object-inl.h" #include "crypto/crypto_ec.h" #include "crypto/crypto_keys.h" #include "crypto/crypto_util.h" -#include "allocated_buffer-inl.h" -#include "async_wrap-inl.h" -#include "base_object-inl.h" #include "env-inl.h" #include "memory_tracker-inl.h" #include "threadpoolwork-inl.h" diff --git a/src/crypto/crypto_sig.h b/src/crypto/crypto_sig.h index eba18be7c7d019..1a4cda42272e51 100644 --- a/src/crypto/crypto_sig.h +++ b/src/crypto/crypto_sig.h @@ -3,10 +3,9 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS +#include "base_object.h" #include "crypto/crypto_keys.h" #include "crypto/crypto_util.h" -#include "allocated_buffer.h" -#include "base_object.h" #include "env.h" #include "memory_tracker.h" @@ -21,7 +20,7 @@ enum DSASigEnc { class SignBase : public BaseObject { public: - typedef enum { + enum Error { kSignOk, kSignUnknownDigest, kSignInit, @@ -30,7 +29,7 @@ class SignBase : public BaseObject { kSignPrivateKey, kSignPublicKey, kSignMalformedSignature - } Error; + }; SignBase(Environment* env, v8::Local wrap); diff --git a/src/crypto/crypto_tls.cc b/src/crypto/crypto_tls.cc index 72b49e05f0cb0d..a192956f0f7cfe 100644 --- a/src/crypto/crypto_tls.cc +++ b/src/crypto/crypto_tls.cc @@ -25,7 +25,6 @@ #include "crypto/crypto_util.h" #include "crypto/crypto_bio.h" #include "crypto/crypto_clienthello-inl.h" -#include "allocated_buffer-inl.h" #include "async_wrap-inl.h" #include "debug_utils-inl.h" #include "memory_tracker-inl.h" @@ -296,8 +295,8 @@ int TLSExtStatusCallback(SSL* s, void* arg) { void ConfigureSecureContext(SecureContext* sc) { // OCSP stapling - SSL_CTX_set_tlsext_status_cb(sc->ctx_.get(), TLSExtStatusCallback); - SSL_CTX_set_tlsext_status_arg(sc->ctx_.get(), nullptr); + SSL_CTX_set_tlsext_status_cb(sc->ctx().get(), TLSExtStatusCallback); + SSL_CTX_set_tlsext_status_arg(sc->ctx().get(), nullptr); } inline bool Set( @@ -1251,8 +1250,7 @@ void TLSWrap::GetServername(const FunctionCallbackInfo& args) { CHECK_NOT_NULL(wrap->ssl_); - const char* servername = SSL_get_servername(wrap->ssl_.get(), - TLSEXT_NAMETYPE_host_name); + const char* servername = GetServerName(wrap->ssl_.get()); if (servername != nullptr) { args.GetReturnValue().Set(OneByteString(env->isolate(), servername)); } else { @@ -1283,7 +1281,7 @@ int TLSWrap::SelectSNIContextCallback(SSL* s, int* ad, void* arg) { HandleScope handle_scope(env->isolate()); Context::Scope context_scope(env->context()); - const char* servername = SSL_get_servername(s, TLSEXT_NAMETYPE_host_name); + const char* servername = GetServerName(s); if (!Set(env, p->GetOwner(), env->servername_string(), servername)) return SSL_TLSEXT_ERR_NOACK; @@ -1305,20 +1303,20 @@ int TLSWrap::SelectSNIContextCallback(SSL* s, int* ad, void* arg) { p->sni_context_ = BaseObjectPtr(sc); ConfigureSecureContext(sc); - CHECK_EQ(SSL_set_SSL_CTX(p->ssl_.get(), sc->ctx_.get()), sc->ctx_.get()); + CHECK_EQ(SSL_set_SSL_CTX(p->ssl_.get(), sc->ctx().get()), sc->ctx().get()); p->SetCACerts(sc); return SSL_TLSEXT_ERR_OK; } int TLSWrap::SetCACerts(SecureContext* sc) { - int err = SSL_set1_verify_cert_store( - ssl_.get(), SSL_CTX_get_cert_store(sc->ctx_.get())); + int err = SSL_set1_verify_cert_store(ssl_.get(), + SSL_CTX_get_cert_store(sc->ctx().get())); if (err != 1) return err; STACK_OF(X509_NAME)* list = - SSL_dup_CA_list(SSL_CTX_get_client_CA_list(sc->ctx_.get())); + SSL_dup_CA_list(SSL_CTX_get_client_CA_list(sc->ctx().get())); // NOTE: `SSL_set_client_CA_list` takes the ownership of `list` SSL_set_client_CA_list(ssl_.get(), list); @@ -1611,9 +1609,19 @@ void TLSWrap::GetFinished(const FunctionCallbackInfo& args) { if (len == 0) return; - AllocatedBuffer buf = AllocatedBuffer::AllocateManaged(env, len); - CHECK_EQ(len, SSL_get_finished(w->ssl_.get(), buf.data(), len)); - args.GetReturnValue().Set(buf.ToBuffer().FromMaybe(Local())); + std::unique_ptr bs; + { + NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); + bs = ArrayBuffer::NewBackingStore(env->isolate(), len); + } + + CHECK_EQ(bs->ByteLength(), + SSL_get_finished(w->ssl_.get(), bs->Data(), bs->ByteLength())); + + Local ab = ArrayBuffer::New(env->isolate(), std::move(bs)); + Local buffer; + if (!Buffer::New(env, ab, 0, ab->ByteLength()).ToLocal(&buffer)) return; + args.GetReturnValue().Set(buffer); } void TLSWrap::GetPeerFinished(const FunctionCallbackInfo& args) { @@ -1632,9 +1640,19 @@ void TLSWrap::GetPeerFinished(const FunctionCallbackInfo& args) { if (len == 0) return; - AllocatedBuffer buf = AllocatedBuffer::AllocateManaged(env, len); - CHECK_EQ(len, SSL_get_peer_finished(w->ssl_.get(), buf.data(), len)); - args.GetReturnValue().Set(buf.ToBuffer().FromMaybe(Local())); + std::unique_ptr bs; + { + NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); + bs = ArrayBuffer::NewBackingStore(env->isolate(), len); + } + + CHECK_EQ(bs->ByteLength(), + SSL_get_peer_finished(w->ssl_.get(), bs->Data(), bs->ByteLength())); + + Local ab = ArrayBuffer::New(env->isolate(), std::move(bs)); + Local buffer; + if (!Buffer::New(env, ab, 0, ab->ByteLength()).ToLocal(&buffer)) return; + args.GetReturnValue().Set(buffer); } void TLSWrap::GetSession(const FunctionCallbackInfo& args) { @@ -1651,10 +1669,19 @@ void TLSWrap::GetSession(const FunctionCallbackInfo& args) { if (slen <= 0) return; // Invalid or malformed session. - AllocatedBuffer sbuf = AllocatedBuffer::AllocateManaged(env, slen); - unsigned char* p = reinterpret_cast(sbuf.data()); + std::unique_ptr bs; + { + NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); + bs = ArrayBuffer::NewBackingStore(env->isolate(), slen); + } + + unsigned char* p = static_cast(bs->Data()); CHECK_LT(0, i2d_SSL_SESSION(sess, &p)); - args.GetReturnValue().Set(sbuf.ToBuffer().FromMaybe(Local())); + + Local ab = ArrayBuffer::New(env->isolate(), std::move(bs)); + Local buffer; + if (!Buffer::New(env, ab, 0, ab->ByteLength()).ToLocal(&buffer)) return; + args.GetReturnValue().Set(buffer); } void TLSWrap::SetSession(const FunctionCallbackInfo& args) { @@ -1825,7 +1852,11 @@ void TLSWrap::ExportKeyingMaterial(const FunctionCallbackInfo& args) { uint32_t olen = args[0].As()->Value(); Utf8Value label(env->isolate(), args[1]); - AllocatedBuffer out = AllocatedBuffer::AllocateManaged(env, olen); + std::unique_ptr bs; + { + NoArrayBufferZeroFillScope no_zero_fill_scope(env->isolate_data()); + bs = ArrayBuffer::NewBackingStore(env->isolate(), olen); + } ByteSource context; bool use_context = !args[2]->IsUndefined(); @@ -1834,11 +1865,11 @@ void TLSWrap::ExportKeyingMaterial(const FunctionCallbackInfo& args) { if (SSL_export_keying_material( w->ssl_.get(), - reinterpret_cast(out.data()), + static_cast(bs->Data()), olen, *label, label.length(), - reinterpret_cast(context.get()), + context.data(), context.size(), use_context) != 1) { return ThrowCryptoError( @@ -1847,7 +1878,10 @@ void TLSWrap::ExportKeyingMaterial(const FunctionCallbackInfo& args) { "SSL_export_keying_material"); } - args.GetReturnValue().Set(out.ToBuffer().FromMaybe(Local())); + Local ab = ArrayBuffer::New(env->isolate(), std::move(bs)); + Local buffer; + if (!Buffer::New(env, ab, 0, ab->ByteLength()).ToLocal(&buffer)) return; + args.GetReturnValue().Set(buffer); } void TLSWrap::EndParser(const FunctionCallbackInfo& args) { diff --git a/src/crypto/crypto_util.cc b/src/crypto/crypto_util.cc index e1ef170a9f1763..58a5d88d7a10de 100644 --- a/src/crypto/crypto_util.cc +++ b/src/crypto/crypto_util.cc @@ -1,8 +1,7 @@ #include "crypto/crypto_util.h" +#include "async_wrap-inl.h" #include "crypto/crypto_bio.h" #include "crypto/crypto_keys.h" -#include "allocated_buffer-inl.h" -#include "async_wrap-inl.h" #include "env-inl.h" #include "memory_tracker-inl.h" #include "node_buffer.h" @@ -136,7 +135,13 @@ bool InitCryptoOnce(Isolate* isolate) { return true; } +// Protect accesses to FIPS state with a mutex. This should potentially +// be part of a larger mutex for global OpenSSL state. +static Mutex fips_mutex; + void InitCryptoOnce() { + Mutex::ScopedLock lock(per_process::cli_options_mutex); + Mutex::ScopedLock fips_lock(fips_mutex); #ifndef OPENSSL_IS_BORINGSSL OPENSSL_INIT_SETTINGS* settings = OPENSSL_INIT_new(); @@ -148,6 +153,16 @@ void InitCryptoOnce() { } #endif +#if OPENSSL_VERSION_MAJOR >= 3 + // --openssl-legacy-provider + if (per_process::cli_options->openssl_legacy_provider) { + OSSL_PROVIDER* legacy_provider = OSSL_PROVIDER_load(nullptr, "legacy"); + if (legacy_provider == nullptr) { + fprintf(stderr, "Unable to load legacy provider.\n"); + } + } +#endif + OPENSSL_init_ssl(0, settings); OPENSSL_INIT_free(settings); settings = nullptr; @@ -186,6 +201,9 @@ void InitCryptoOnce() { } void GetFipsCrypto(const FunctionCallbackInfo& args) { + Mutex::ScopedLock lock(per_process::cli_options_mutex); + Mutex::ScopedLock fips_lock(fips_mutex); + #if OPENSSL_VERSION_MAJOR >= 3 args.GetReturnValue().Set(EVP_default_properties_is_fips_enabled(nullptr) ? 1 : 0); @@ -195,8 +213,13 @@ void GetFipsCrypto(const FunctionCallbackInfo& args) { } void SetFipsCrypto(const FunctionCallbackInfo& args) { + Mutex::ScopedLock lock(per_process::cli_options_mutex); + Mutex::ScopedLock fips_lock(fips_mutex); + CHECK(!per_process::cli_options->force_fips_crypto); Environment* env = Environment::GetCurrent(args); + // TODO(addaleax): This should not be possible to set from worker threads. + // CHECK(env->owns_process_state()); bool enable = args[0]->BooleanValue(env->isolate()); #if OPENSSL_VERSION_MAJOR >= 3 @@ -217,6 +240,9 @@ void SetFipsCrypto(const FunctionCallbackInfo& args) { } void TestFipsCrypto(const v8::FunctionCallbackInfo& args) { + Mutex::ScopedLock lock(per_process::cli_options_mutex); + Mutex::ScopedLock fips_lock(fips_mutex); + #ifdef OPENSSL_FIPS #if OPENSSL_VERSION_MAJOR >= 3 OSSL_PROVIDER* fips_provider = nullptr; diff --git a/src/crypto/crypto_util.h b/src/crypto/crypto_util.h index c431159e6f77f8..07ea8e44da3e54 100644 --- a/src/crypto/crypto_util.h +++ b/src/crypto/crypto_util.h @@ -3,15 +3,14 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS -#include "env.h" #include "async_wrap.h" -#include "allocated_buffer.h" +#include "env.h" #include "node_errors.h" #include "node_external_reference.h" #include "node_internals.h" +#include "string_bytes.h" #include "util.h" #include "v8.h" -#include "string_bytes.h" #include #include @@ -753,20 +752,6 @@ class ArrayBufferOrViewContents { std::shared_ptr store_; }; -template -std::vector CopyBuffer(const ArrayBufferOrViewContents& buf) { - std::vector vec; - vec->resize(buf.size()); - if (vec->size() > 0 && buf.data() != nullptr) - memcpy(vec->data(), buf.data(), vec->size()); - return vec; -} - -template -std::vector CopyBuffer(v8::Local buf) { - return CopyBuffer(ArrayBufferOrViewContents(buf)); -} - v8::MaybeLocal EncodeBignum( Environment* env, const BIGNUM* bn, diff --git a/src/debug_utils.cc b/src/debug_utils.cc index c4c476942eee77..f721a672f10e67 100644 --- a/src/debug_utils.cc +++ b/src/debug_utils.cc @@ -1,6 +1,7 @@ #include "debug_utils-inl.h" // NOLINT(build/include) #include "env-inl.h" #include "node_internals.h" +#include "util.h" #ifdef __POSIX__ #if defined(__linux__) @@ -58,9 +59,10 @@ namespace per_process { EnabledDebugList enabled_debug_list; } -void EnabledDebugList::Parse(Environment* env) { +void EnabledDebugList::Parse(std::shared_ptr env_vars, + v8::Isolate* isolate) { std::string cats; - credentials::SafeGetenv("NODE_DEBUG_NATIVE", &cats, env); + credentials::SafeGetenv("NODE_DEBUG_NATIVE", &cats, env_vars, isolate); Parse(cats, true); } diff --git a/src/debug_utils.h b/src/debug_utils.h index 377493359e91e1..19847e46549263 100644 --- a/src/debug_utils.h +++ b/src/debug_utils.h @@ -4,6 +4,7 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include "async_wrap.h" +#include "util.h" #include #include @@ -35,7 +36,7 @@ template inline std::string SPrintF(const char* format, Args&&... args); template inline void FPrintF(FILE* file, const char* format, Args&&... args); -void FWrite(FILE* file, const std::string& str); +void NODE_EXTERN_PRIVATE FWrite(FILE* file, const std::string& str); // Listing the AsyncWrap provider types first enables us to cast directly // from a provider type to a debug category. @@ -57,7 +58,7 @@ enum class DebugCategory { CATEGORY_COUNT }; -class EnabledDebugList { +class NODE_EXTERN_PRIVATE EnabledDebugList { public: bool enabled(DebugCategory category) const { DCHECK_GE(static_cast(category), 0); @@ -66,10 +67,11 @@ class EnabledDebugList { return enabled_[static_cast(category)]; } - // Uses NODE_DEBUG_NATIVE to initialize the categories. When env is not a - // nullptr, the environment variables set in the Environment are used. - // Otherwise the system environment variables are used. - void Parse(Environment* env); + // Uses NODE_DEBUG_NATIVE to initialize the categories. The env_vars variable + // is parsed if it is not a nullptr, otherwise the system environment + // variables are parsed. + void Parse(std::shared_ptr env_vars = nullptr, + v8::Isolate* isolate = nullptr); private: // Set all categories matching cats to the value of enabled. @@ -168,7 +170,7 @@ void CheckedUvLoopClose(uv_loop_t* loop); void PrintLibuvHandleInformation(uv_loop_t* loop, FILE* stream); namespace per_process { -extern EnabledDebugList enabled_debug_list; +extern NODE_EXTERN_PRIVATE EnabledDebugList enabled_debug_list; template inline void FORCE_INLINE Debug(DebugCategory cat, diff --git a/src/env-inl.h b/src/env-inl.h index 4a34393cad7e07..71d3b65729a71c 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -25,15 +25,14 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include "aliased_buffer.h" -#include "allocated_buffer-inl.h" #include "callback_queue-inl.h" #include "env.h" #include "node.h" #include "node_context_data.h" +#include "node_internals.h" #include "node_perf_common.h" #include "util-inl.h" #include "uv.h" -#include "v8-fast-api-calls.h" #include "v8.h" #include @@ -43,6 +42,16 @@ namespace node { +NoArrayBufferZeroFillScope::NoArrayBufferZeroFillScope( + IsolateData* isolate_data) + : node_allocator_(isolate_data->node_allocator()) { + if (node_allocator_ != nullptr) node_allocator_->zero_fill_field()[0] = 0; +} + +NoArrayBufferZeroFillScope::~NoArrayBufferZeroFillScope() { + if (node_allocator_ != nullptr) node_allocator_->zero_fill_field()[0] = 1; +} + inline v8::Isolate* IsolateData::isolate() const { return isolate_; } @@ -97,25 +106,6 @@ v8::Local AsyncHooks::native_execution_async_resource(size_t i) { return native_execution_async_resources_[i]; } -inline void AsyncHooks::SetJSPromiseHooks(v8::Local init, - v8::Local before, - v8::Local after, - v8::Local resolve) { - js_promise_hooks_[0].Reset(env()->isolate(), init); - js_promise_hooks_[1].Reset(env()->isolate(), before); - js_promise_hooks_[2].Reset(env()->isolate(), after); - js_promise_hooks_[3].Reset(env()->isolate(), resolve); - for (auto it = contexts_.begin(); it != contexts_.end(); it++) { - if (it->IsEmpty()) { - it = contexts_.erase(it); - it--; - continue; - } - PersistentToLocal::Weak(env()->isolate(), *it) - ->SetPromiseHooks(init, before, after, resolve); - } -} - inline v8::Local AsyncHooks::provider_string(int idx) { return env()->isolate_data()->async_wrap_provider(idx); } @@ -128,166 +118,6 @@ inline Environment* AsyncHooks::env() { return Environment::ForAsyncHooks(this); } -// Remember to keep this code aligned with pushAsyncContext() in JS. -inline void AsyncHooks::push_async_context(double async_id, - double trigger_async_id, - v8::Local resource) { - // Since async_hooks is experimental, do only perform the check - // when async_hooks is enabled. - if (fields_[kCheck] > 0) { - CHECK_GE(async_id, -1); - CHECK_GE(trigger_async_id, -1); - } - - uint32_t offset = fields_[kStackLength]; - if (offset * 2 >= async_ids_stack_.Length()) - grow_async_ids_stack(); - async_ids_stack_[2 * offset] = async_id_fields_[kExecutionAsyncId]; - async_ids_stack_[2 * offset + 1] = async_id_fields_[kTriggerAsyncId]; - fields_[kStackLength] += 1; - async_id_fields_[kExecutionAsyncId] = async_id; - async_id_fields_[kTriggerAsyncId] = trigger_async_id; - -#ifdef DEBUG - for (uint32_t i = offset; i < native_execution_async_resources_.size(); i++) - CHECK(native_execution_async_resources_[i].IsEmpty()); -#endif - - // When this call comes from JS (as a way of increasing the stack size), - // `resource` will be empty, because JS caches these values anyway. - if (!resource.IsEmpty()) { - native_execution_async_resources_.resize(offset + 1); - // Caveat: This is a v8::Local<> assignment, we do not keep a v8::Global<>! - native_execution_async_resources_[offset] = resource; - } -} - -// Remember to keep this code aligned with popAsyncContext() in JS. -inline bool AsyncHooks::pop_async_context(double async_id) { - // In case of an exception then this may have already been reset, if the - // stack was multiple MakeCallback()'s deep. - if (UNLIKELY(fields_[kStackLength] == 0)) return false; - - // Ask for the async_id to be restored as a check that the stack - // hasn't been corrupted. - // Since async_hooks is experimental, do only perform the check - // when async_hooks is enabled. - if (UNLIKELY(fields_[kCheck] > 0 && - async_id_fields_[kExecutionAsyncId] != async_id)) { - FailWithCorruptedAsyncStack(async_id); - } - - uint32_t offset = fields_[kStackLength] - 1; - async_id_fields_[kExecutionAsyncId] = async_ids_stack_[2 * offset]; - async_id_fields_[kTriggerAsyncId] = async_ids_stack_[2 * offset + 1]; - fields_[kStackLength] = offset; - - if (LIKELY(offset < native_execution_async_resources_.size() && - !native_execution_async_resources_[offset].IsEmpty())) { -#ifdef DEBUG - for (uint32_t i = offset + 1; - i < native_execution_async_resources_.size(); - i++) { - CHECK(native_execution_async_resources_[i].IsEmpty()); - } -#endif - native_execution_async_resources_.resize(offset); - if (native_execution_async_resources_.size() < - native_execution_async_resources_.capacity() / 2 && - native_execution_async_resources_.size() > 16) { - native_execution_async_resources_.shrink_to_fit(); - } - } - - if (UNLIKELY(js_execution_async_resources()->Length() > offset)) { - v8::HandleScope handle_scope(env()->isolate()); - USE(js_execution_async_resources()->Set( - env()->context(), - env()->length_string(), - v8::Integer::NewFromUnsigned(env()->isolate(), offset))); - } - - return fields_[kStackLength] > 0; -} - -void AsyncHooks::clear_async_id_stack() { - v8::Isolate* isolate = env()->isolate(); - v8::HandleScope handle_scope(isolate); - if (!js_execution_async_resources_.IsEmpty()) { - USE(PersistentToLocal::Strong(js_execution_async_resources_)->Set( - env()->context(), - env()->length_string(), - v8::Integer::NewFromUnsigned(isolate, 0))); - } - native_execution_async_resources_.clear(); - native_execution_async_resources_.shrink_to_fit(); - - async_id_fields_[kExecutionAsyncId] = 0; - async_id_fields_[kTriggerAsyncId] = 0; - fields_[kStackLength] = 0; -} - -inline void AsyncHooks::AddContext(v8::Local ctx) { - ctx->SetPromiseHooks( - js_promise_hooks_[0].IsEmpty() ? - v8::Local() : - PersistentToLocal::Strong(js_promise_hooks_[0]), - js_promise_hooks_[1].IsEmpty() ? - v8::Local() : - PersistentToLocal::Strong(js_promise_hooks_[1]), - js_promise_hooks_[2].IsEmpty() ? - v8::Local() : - PersistentToLocal::Strong(js_promise_hooks_[2]), - js_promise_hooks_[3].IsEmpty() ? - v8::Local() : - PersistentToLocal::Strong(js_promise_hooks_[3])); - - size_t id = contexts_.size(); - contexts_.resize(id + 1); - contexts_[id].Reset(env()->isolate(), ctx); - contexts_[id].SetWeak(); -} - -inline void AsyncHooks::RemoveContext(v8::Local ctx) { - v8::Isolate* isolate = env()->isolate(); - v8::HandleScope handle_scope(isolate); - for (auto it = contexts_.begin(); it != contexts_.end(); it++) { - if (it->IsEmpty()) { - it = contexts_.erase(it); - it--; - continue; - } - v8::Local saved_context = - PersistentToLocal::Weak(isolate, *it); - if (saved_context == ctx) { - it->Reset(); - contexts_.erase(it); - break; - } - } -} - -// The DefaultTriggerAsyncIdScope(AsyncWrap*) constructor is defined in -// async_wrap-inl.h to avoid a circular dependency. - -inline AsyncHooks::DefaultTriggerAsyncIdScope ::DefaultTriggerAsyncIdScope( - Environment* env, double default_trigger_async_id) - : async_hooks_(env->async_hooks()) { - if (env->async_hooks()->fields()[AsyncHooks::kCheck] > 0) { - CHECK_GE(default_trigger_async_id, 0); - } - - old_default_trigger_async_id_ = - async_hooks_->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId]; - async_hooks_->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId] = - default_trigger_async_id; -} - -inline AsyncHooks::DefaultTriggerAsyncIdScope ::~DefaultTriggerAsyncIdScope() { - async_hooks_->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId] = - old_default_trigger_async_id_; -} - Environment* Environment::ForAsyncHooks(AsyncHooks* hooks) { return ContainerOf(&Environment::async_hooks_, hooks); } @@ -340,24 +170,6 @@ inline bool TickInfo::has_rejection_to_warn() const { return fields_[kHasRejectionToWarn] == 1; } -inline void Environment::AssignToContext(v8::Local context, - const ContextInfo& info) { - context->SetAlignedPointerInEmbedderData( - ContextEmbedderIndex::kEnvironment, this); - // Used by Environment::GetCurrent to know that we are on a node context. - context->SetAlignedPointerInEmbedderData( - ContextEmbedderIndex::kContextTag, Environment::kNodeContextTagPtr); - // Used to retrieve bindings - context->SetAlignedPointerInEmbedderData( - ContextEmbedderIndex::kBindingListIndex, &(this->bindings_)); - -#if HAVE_INSPECTOR - inspector_agent()->ContextCreated(context, info); -#endif // HAVE_INSPECTOR - - this->async_hooks()->AddContext(context); -} - inline Environment* Environment::GetCurrent(v8::Isolate* isolate) { if (UNLIKELY(!isolate->InContext())) return nullptr; v8::HandleScope handle_scope(isolate); @@ -501,16 +313,6 @@ inline uv_loop_t* Environment::event_loop() const { return isolate_data()->event_loop(); } -inline void Environment::TryLoadAddon( - const char* filename, - int flags, - const std::function& was_loaded) { - loaded_addons_.emplace_back(filename, flags); - if (!was_loaded(&loaded_addons_.back())) { - loaded_addons_.pop_back(); - } -} - #if HAVE_INSPECTOR inline bool Environment::is_in_inspector_console_call() const { return is_in_inspector_console_call_; @@ -662,22 +464,6 @@ inline const std::string& Environment::exec_path() const { return exec_path_; } -inline std::string Environment::GetCwd() { - char cwd[PATH_MAX_BYTES]; - size_t size = PATH_MAX_BYTES; - const int err = uv_cwd(cwd, &size); - - if (err == 0) { - CHECK_GT(size, 0); - return cwd; - } - - // This can fail if the cwd is deleted. In that case, fall back to - // exec_path. - const std::string& exec_path = exec_path_; - return exec_path.substr(0, exec_path.find_last_of(kPathSeparator)); -} - #if HAVE_INSPECTOR inline void Environment::set_coverage_directory(const char* dir) { coverage_directory_ = std::string(dir); @@ -923,15 +709,6 @@ inline void Environment::ForEachWorker(Fn&& iterator) { for (worker::Worker* w : sub_worker_contexts_) iterator(w); } -inline void Environment::add_refs(int64_t diff) { - task_queues_async_refs_ += diff; - CHECK_GE(task_queues_async_refs_, 0); - if (task_queues_async_refs_ == 0) - uv_unref(reinterpret_cast(&task_queues_async_)); - else - uv_ref(reinterpret_cast(&task_queues_async_)); -} - inline bool Environment::is_stopping() const { return is_stopping_.load(); } @@ -966,34 +743,6 @@ inline IsolateData* Environment::isolate_data() const { return isolate_data_; } -inline uv_buf_t Environment::allocate_managed_buffer( - const size_t suggested_size) { - NoArrayBufferZeroFillScope no_zero_fill_scope(isolate_data()); - std::unique_ptr bs = - v8::ArrayBuffer::NewBackingStore(isolate(), suggested_size); - uv_buf_t buf = uv_buf_init(static_cast(bs->Data()), bs->ByteLength()); - released_allocated_buffers()->emplace(buf.base, std::move(bs)); - return buf; -} - -inline std::unique_ptr Environment::release_managed_buffer( - const uv_buf_t& buf) { - std::unique_ptr bs; - if (buf.base != nullptr) { - auto map = released_allocated_buffers(); - auto it = map->find(buf.base); - CHECK_NE(it, map->end()); - bs = std::move(it->second); - map->erase(it); - } - return bs; -} - -std::unordered_map>* - Environment::released_allocated_buffers() { - return &released_allocated_buffers_; -} - inline void Environment::ThrowError(const char* errmsg) { ThrowError(v8::Exception::Error, errmsg); } @@ -1030,144 +779,6 @@ inline void Environment::ThrowUVException(int errorno, UVException(isolate(), errorno, syscall, message, path, dest)); } -inline v8::Local Environment::NewFunctionTemplate( - v8::FunctionCallback callback, - v8::Local signature, - v8::ConstructorBehavior behavior, - v8::SideEffectType side_effect_type, - const v8::CFunction* c_function) { - return v8::FunctionTemplate::New(isolate(), - callback, - v8::Local(), - signature, - 0, - behavior, - side_effect_type, - c_function); -} - -inline void Environment::SetMethod(v8::Local that, - const char* name, - v8::FunctionCallback callback) { - v8::Local context = isolate()->GetCurrentContext(); - v8::Local function = - NewFunctionTemplate(callback, v8::Local(), - v8::ConstructorBehavior::kThrow, - v8::SideEffectType::kHasSideEffect) - ->GetFunction(context) - .ToLocalChecked(); - // kInternalized strings are created in the old space. - const v8::NewStringType type = v8::NewStringType::kInternalized; - v8::Local name_string = - v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); - that->Set(context, name_string, function).Check(); - function->SetName(name_string); // NODE_SET_METHOD() compatibility. -} - -inline void Environment::SetFastMethod(v8::Local that, - const char* name, - v8::FunctionCallback slow_callback, - const v8::CFunction* c_function) { - v8::Local context = isolate()->GetCurrentContext(); - v8::Local function = - NewFunctionTemplate(slow_callback, - v8::Local(), - v8::ConstructorBehavior::kThrow, - v8::SideEffectType::kHasNoSideEffect, - c_function) - ->GetFunction(context) - .ToLocalChecked(); - const v8::NewStringType type = v8::NewStringType::kInternalized; - v8::Local name_string = - v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); - that->Set(context, name_string, function).Check(); -} - -inline void Environment::SetMethodNoSideEffect(v8::Local that, - const char* name, - v8::FunctionCallback callback) { - v8::Local context = isolate()->GetCurrentContext(); - v8::Local function = - NewFunctionTemplate(callback, v8::Local(), - v8::ConstructorBehavior::kThrow, - v8::SideEffectType::kHasNoSideEffect) - ->GetFunction(context) - .ToLocalChecked(); - // kInternalized strings are created in the old space. - const v8::NewStringType type = v8::NewStringType::kInternalized; - v8::Local name_string = - v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); - that->Set(context, name_string, function).Check(); - function->SetName(name_string); // NODE_SET_METHOD() compatibility. -} - -inline void Environment::SetProtoMethod(v8::Local that, - const char* name, - v8::FunctionCallback callback) { - v8::Local signature = v8::Signature::New(isolate(), that); - v8::Local t = - NewFunctionTemplate(callback, signature, v8::ConstructorBehavior::kThrow, - v8::SideEffectType::kHasSideEffect); - // kInternalized strings are created in the old space. - const v8::NewStringType type = v8::NewStringType::kInternalized; - v8::Local name_string = - v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); - that->PrototypeTemplate()->Set(name_string, t); - t->SetClassName(name_string); // NODE_SET_PROTOTYPE_METHOD() compatibility. -} - -inline void Environment::SetProtoMethodNoSideEffect( - v8::Local that, - const char* name, - v8::FunctionCallback callback) { - v8::Local signature = v8::Signature::New(isolate(), that); - v8::Local t = - NewFunctionTemplate(callback, signature, v8::ConstructorBehavior::kThrow, - v8::SideEffectType::kHasNoSideEffect); - // kInternalized strings are created in the old space. - const v8::NewStringType type = v8::NewStringType::kInternalized; - v8::Local name_string = - v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); - that->PrototypeTemplate()->Set(name_string, t); - t->SetClassName(name_string); // NODE_SET_PROTOTYPE_METHOD() compatibility. -} - -inline void Environment::SetInstanceMethod(v8::Local that, - const char* name, - v8::FunctionCallback callback) { - v8::Local signature = v8::Signature::New(isolate(), that); - v8::Local t = - NewFunctionTemplate(callback, signature, v8::ConstructorBehavior::kThrow, - v8::SideEffectType::kHasSideEffect); - // kInternalized strings are created in the old space. - const v8::NewStringType type = v8::NewStringType::kInternalized; - v8::Local name_string = - v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); - that->InstanceTemplate()->Set(name_string, t); - t->SetClassName(name_string); -} - -inline void Environment::SetConstructorFunction( - v8::Local that, - const char* name, - v8::Local tmpl, - SetConstructorFunctionFlag flag) { - SetConstructorFunction(that, OneByteString(isolate(), name), tmpl, flag); -} - -inline void Environment::SetConstructorFunction( - v8::Local that, - v8::Local name, - v8::Local tmpl, - SetConstructorFunctionFlag flag) { - if (LIKELY(flag == SetConstructorFunctionFlag::SET_CLASS_NAME)) - tmpl->SetClassName(name); - that->Set( - context(), - name, - tmpl->GetFunction(context()).ToLocalChecked()).Check(); -} - void Environment::AddCleanupHook(CleanupCallback fn, void* arg) { auto insertion_info = cleanup_hooks_.emplace(CleanupHookCallback { fn, arg, cleanup_hook_counter_++ diff --git a/src/env.cc b/src/env.cc index 8631ac39a92876..22be69ec30a5b8 100644 --- a/src/env.cc +++ b/src/env.cc @@ -1,5 +1,4 @@ #include "env.h" -#include "allocated_buffer-inl.h" #include "async_wrap.h" #include "base_object-inl.h" #include "debug_utils-inl.h" @@ -35,7 +34,9 @@ using v8::Array; using v8::Boolean; using v8::Context; using v8::EmbedderGraph; +using v8::EscapableHandleScope; using v8::Function; +using v8::FunctionCallbackInfo; using v8::FunctionTemplate; using v8::HandleScope; using v8::HeapSpaceStatistics; @@ -56,12 +57,187 @@ using v8::TracingController; using v8::TryCatch; using v8::Undefined; using v8::Value; +using v8::WeakCallbackInfo; +using v8::WeakCallbackType; using worker::Worker; int const Environment::kNodeContextTag = 0x6e6f64; void* const Environment::kNodeContextTagPtr = const_cast( static_cast(&Environment::kNodeContextTag)); +void AsyncHooks::SetJSPromiseHooks(Local init, + Local before, + Local after, + Local resolve) { + js_promise_hooks_[0].Reset(env()->isolate(), init); + js_promise_hooks_[1].Reset(env()->isolate(), before); + js_promise_hooks_[2].Reset(env()->isolate(), after); + js_promise_hooks_[3].Reset(env()->isolate(), resolve); + for (auto it = contexts_.begin(); it != contexts_.end(); it++) { + if (it->IsEmpty()) { + contexts_.erase(it--); + continue; + } + PersistentToLocal::Weak(env()->isolate(), *it) + ->SetPromiseHooks(init, before, after, resolve); + } +} + +// Remember to keep this code aligned with pushAsyncContext() in JS. +void AsyncHooks::push_async_context(double async_id, + double trigger_async_id, + Local resource) { + // Since async_hooks is experimental, do only perform the check + // when async_hooks is enabled. + if (fields_[kCheck] > 0) { + CHECK_GE(async_id, -1); + CHECK_GE(trigger_async_id, -1); + } + + uint32_t offset = fields_[kStackLength]; + if (offset * 2 >= async_ids_stack_.Length()) grow_async_ids_stack(); + async_ids_stack_[2 * offset] = async_id_fields_[kExecutionAsyncId]; + async_ids_stack_[2 * offset + 1] = async_id_fields_[kTriggerAsyncId]; + fields_[kStackLength] += 1; + async_id_fields_[kExecutionAsyncId] = async_id; + async_id_fields_[kTriggerAsyncId] = trigger_async_id; + +#ifdef DEBUG + for (uint32_t i = offset; i < native_execution_async_resources_.size(); i++) + CHECK(native_execution_async_resources_[i].IsEmpty()); +#endif + + // When this call comes from JS (as a way of increasing the stack size), + // `resource` will be empty, because JS caches these values anyway. + if (!resource.IsEmpty()) { + native_execution_async_resources_.resize(offset + 1); + // Caveat: This is a v8::Local<> assignment, we do not keep a v8::Global<>! + native_execution_async_resources_[offset] = resource; + } +} + +// Remember to keep this code aligned with popAsyncContext() in JS. +bool AsyncHooks::pop_async_context(double async_id) { + // In case of an exception then this may have already been reset, if the + // stack was multiple MakeCallback()'s deep. + if (UNLIKELY(fields_[kStackLength] == 0)) return false; + + // Ask for the async_id to be restored as a check that the stack + // hasn't been corrupted. + if (UNLIKELY(fields_[kCheck] > 0 && + async_id_fields_[kExecutionAsyncId] != async_id)) { + FailWithCorruptedAsyncStack(async_id); + } + + uint32_t offset = fields_[kStackLength] - 1; + async_id_fields_[kExecutionAsyncId] = async_ids_stack_[2 * offset]; + async_id_fields_[kTriggerAsyncId] = async_ids_stack_[2 * offset + 1]; + fields_[kStackLength] = offset; + + if (LIKELY(offset < native_execution_async_resources_.size() && + !native_execution_async_resources_[offset].IsEmpty())) { +#ifdef DEBUG + for (uint32_t i = offset + 1; i < native_execution_async_resources_.size(); + i++) { + CHECK(native_execution_async_resources_[i].IsEmpty()); + } +#endif + native_execution_async_resources_.resize(offset); + if (native_execution_async_resources_.size() < + native_execution_async_resources_.capacity() / 2 && + native_execution_async_resources_.size() > 16) { + native_execution_async_resources_.shrink_to_fit(); + } + } + + if (UNLIKELY(js_execution_async_resources()->Length() > offset)) { + HandleScope handle_scope(env()->isolate()); + USE(js_execution_async_resources()->Set( + env()->context(), + env()->length_string(), + Integer::NewFromUnsigned(env()->isolate(), offset))); + } + + return fields_[kStackLength] > 0; +} + +void AsyncHooks::clear_async_id_stack() { + Isolate* isolate = env()->isolate(); + HandleScope handle_scope(isolate); + if (!js_execution_async_resources_.IsEmpty()) { + USE(PersistentToLocal::Strong(js_execution_async_resources_) + ->Set(env()->context(), + env()->length_string(), + Integer::NewFromUnsigned(isolate, 0))); + } + native_execution_async_resources_.clear(); + native_execution_async_resources_.shrink_to_fit(); + + async_id_fields_[kExecutionAsyncId] = 0; + async_id_fields_[kTriggerAsyncId] = 0; + fields_[kStackLength] = 0; +} + +void AsyncHooks::AddContext(Local ctx) { + ctx->SetPromiseHooks(js_promise_hooks_[0].IsEmpty() + ? Local() + : PersistentToLocal::Strong(js_promise_hooks_[0]), + js_promise_hooks_[1].IsEmpty() + ? Local() + : PersistentToLocal::Strong(js_promise_hooks_[1]), + js_promise_hooks_[2].IsEmpty() + ? Local() + : PersistentToLocal::Strong(js_promise_hooks_[2]), + js_promise_hooks_[3].IsEmpty() + ? Local() + : PersistentToLocal::Strong(js_promise_hooks_[3])); + + size_t id = contexts_.size(); + contexts_.resize(id + 1); + contexts_[id].Reset(env()->isolate(), ctx); + contexts_[id].SetWeak(); +} + +void AsyncHooks::RemoveContext(Local ctx) { + Isolate* isolate = env()->isolate(); + HandleScope handle_scope(isolate); + contexts_.erase(std::remove_if(contexts_.begin(), + contexts_.end(), + [&](auto&& el) { return el.IsEmpty(); }), + contexts_.end()); + for (auto it = contexts_.begin(); it != contexts_.end(); it++) { + Local saved_context = PersistentToLocal::Weak(isolate, *it); + if (saved_context == ctx) { + it->Reset(); + contexts_.erase(it); + break; + } + } +} + +AsyncHooks::DefaultTriggerAsyncIdScope::DefaultTriggerAsyncIdScope( + Environment* env, double default_trigger_async_id) + : async_hooks_(env->async_hooks()) { + if (env->async_hooks()->fields()[AsyncHooks::kCheck] > 0) { + CHECK_GE(default_trigger_async_id, 0); + } + + old_default_trigger_async_id_ = + async_hooks_->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId]; + async_hooks_->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId] = + default_trigger_async_id; +} + +AsyncHooks::DefaultTriggerAsyncIdScope::~DefaultTriggerAsyncIdScope() { + async_hooks_->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId] = + old_default_trigger_async_id_; +} + +AsyncHooks::DefaultTriggerAsyncIdScope::DefaultTriggerAsyncIdScope( + AsyncWrap* async_wrap) + : DefaultTriggerAsyncIdScope(async_wrap->env(), + async_wrap->get_async_id()) {} + std::vector IsolateData::Serialize(SnapshotCreator* creator) { Isolate* isolate = creator->GetIsolate(); std::vector indexes; @@ -253,6 +429,221 @@ void TrackingTraceStateObserver::UpdateTraceCategoryState() { USE(cb->Call(env_->context(), Undefined(isolate), arraysize(args), args)); } +void Environment::AssignToContext(Local context, + const ContextInfo& info) { + context->SetAlignedPointerInEmbedderData(ContextEmbedderIndex::kEnvironment, + this); + // Used by Environment::GetCurrent to know that we are on a node context. + context->SetAlignedPointerInEmbedderData(ContextEmbedderIndex::kContextTag, + Environment::kNodeContextTagPtr); + // Used to retrieve bindings + context->SetAlignedPointerInEmbedderData( + ContextEmbedderIndex::kBindingListIndex, &(this->bindings_)); + +#if HAVE_INSPECTOR + inspector_agent()->ContextCreated(context, info); +#endif // HAVE_INSPECTOR + + this->async_hooks()->AddContext(context); +} + +void Environment::TryLoadAddon( + const char* filename, + int flags, + const std::function& was_loaded) { + loaded_addons_.emplace_back(filename, flags); + if (!was_loaded(&loaded_addons_.back())) { + loaded_addons_.pop_back(); + } +} + +std::string Environment::GetCwd() { + char cwd[PATH_MAX_BYTES]; + size_t size = PATH_MAX_BYTES; + const int err = uv_cwd(cwd, &size); + + if (err == 0) { + CHECK_GT(size, 0); + return cwd; + } + + // This can fail if the cwd is deleted. In that case, fall back to + // exec_path. + const std::string& exec_path = exec_path_; + return exec_path.substr(0, exec_path.find_last_of(kPathSeparator)); +} + +void Environment::add_refs(int64_t diff) { + task_queues_async_refs_ += diff; + CHECK_GE(task_queues_async_refs_, 0); + if (task_queues_async_refs_ == 0) + uv_unref(reinterpret_cast(&task_queues_async_)); + else + uv_ref(reinterpret_cast(&task_queues_async_)); +} + +uv_buf_t Environment::allocate_managed_buffer(const size_t suggested_size) { + NoArrayBufferZeroFillScope no_zero_fill_scope(isolate_data()); + std::unique_ptr bs = + v8::ArrayBuffer::NewBackingStore(isolate(), suggested_size); + uv_buf_t buf = uv_buf_init(static_cast(bs->Data()), bs->ByteLength()); + released_allocated_buffers_.emplace(buf.base, std::move(bs)); + return buf; +} + +std::unique_ptr Environment::release_managed_buffer( + const uv_buf_t& buf) { + std::unique_ptr bs; + if (buf.base != nullptr) { + auto it = released_allocated_buffers_.find(buf.base); + CHECK_NE(it, released_allocated_buffers_.end()); + bs = std::move(it->second); + released_allocated_buffers_.erase(it); + } + return bs; +} + +Local Environment::NewFunctionTemplate( + v8::FunctionCallback callback, + Local signature, + v8::ConstructorBehavior behavior, + v8::SideEffectType side_effect_type, + const v8::CFunction* c_function) { + return v8::FunctionTemplate::New(isolate(), + callback, + Local(), + signature, + 0, + behavior, + side_effect_type, + c_function); +} + +void Environment::SetMethod(Local that, + const char* name, + v8::FunctionCallback callback) { + Local context = isolate()->GetCurrentContext(); + Local function = + NewFunctionTemplate(callback, + Local(), + v8::ConstructorBehavior::kThrow, + v8::SideEffectType::kHasSideEffect) + ->GetFunction(context) + .ToLocalChecked(); + // kInternalized strings are created in the old space. + const v8::NewStringType type = v8::NewStringType::kInternalized; + Local name_string = + v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); + that->Set(context, name_string, function).Check(); + function->SetName(name_string); // NODE_SET_METHOD() compatibility. +} + +void Environment::SetFastMethod(Local that, + const char* name, + v8::FunctionCallback slow_callback, + const v8::CFunction* c_function) { + Local context = isolate()->GetCurrentContext(); + Local function = + NewFunctionTemplate(slow_callback, + Local(), + v8::ConstructorBehavior::kThrow, + v8::SideEffectType::kHasNoSideEffect, + c_function) + ->GetFunction(context) + .ToLocalChecked(); + const v8::NewStringType type = v8::NewStringType::kInternalized; + Local name_string = + v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); + that->Set(context, name_string, function).Check(); +} + +void Environment::SetMethodNoSideEffect(Local that, + const char* name, + v8::FunctionCallback callback) { + Local context = isolate()->GetCurrentContext(); + Local function = + NewFunctionTemplate(callback, + Local(), + v8::ConstructorBehavior::kThrow, + v8::SideEffectType::kHasNoSideEffect) + ->GetFunction(context) + .ToLocalChecked(); + // kInternalized strings are created in the old space. + const v8::NewStringType type = v8::NewStringType::kInternalized; + Local name_string = + v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); + that->Set(context, name_string, function).Check(); + function->SetName(name_string); // NODE_SET_METHOD() compatibility. +} + +void Environment::SetProtoMethod(Local that, + const char* name, + v8::FunctionCallback callback) { + Local signature = v8::Signature::New(isolate(), that); + Local t = + NewFunctionTemplate(callback, + signature, + v8::ConstructorBehavior::kThrow, + v8::SideEffectType::kHasSideEffect); + // kInternalized strings are created in the old space. + const v8::NewStringType type = v8::NewStringType::kInternalized; + Local name_string = + v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); + that->PrototypeTemplate()->Set(name_string, t); + t->SetClassName(name_string); // NODE_SET_PROTOTYPE_METHOD() compatibility. +} + +void Environment::SetProtoMethodNoSideEffect(Local that, + const char* name, + v8::FunctionCallback callback) { + Local signature = v8::Signature::New(isolate(), that); + Local t = + NewFunctionTemplate(callback, + signature, + v8::ConstructorBehavior::kThrow, + v8::SideEffectType::kHasNoSideEffect); + // kInternalized strings are created in the old space. + const v8::NewStringType type = v8::NewStringType::kInternalized; + Local name_string = + v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); + that->PrototypeTemplate()->Set(name_string, t); + t->SetClassName(name_string); // NODE_SET_PROTOTYPE_METHOD() compatibility. +} + +void Environment::SetInstanceMethod(Local that, + const char* name, + v8::FunctionCallback callback) { + Local signature = v8::Signature::New(isolate(), that); + Local t = + NewFunctionTemplate(callback, + signature, + v8::ConstructorBehavior::kThrow, + v8::SideEffectType::kHasSideEffect); + // kInternalized strings are created in the old space. + const v8::NewStringType type = v8::NewStringType::kInternalized; + Local name_string = + v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); + that->InstanceTemplate()->Set(name_string, t); + t->SetClassName(name_string); +} + +void Environment::SetConstructorFunction(Local that, + const char* name, + Local tmpl, + SetConstructorFunctionFlag flag) { + SetConstructorFunction(that, OneByteString(isolate(), name), tmpl, flag); +} + +void Environment::SetConstructorFunction(Local that, + Local name, + Local tmpl, + SetConstructorFunctionFlag flag) { + if (LIKELY(flag == SetConstructorFunctionFlag::SET_CLASS_NAME)) + tmpl->SetClassName(name); + that->Set(context(), name, tmpl->GetFunction(context()).ToLocalChecked()) + .Check(); +} + void Environment::CreateProperties() { HandleScope handle_scope(isolate_); Local ctx = context(); @@ -369,10 +760,7 @@ Environment::Environment(IsolateData* isolate_data, } set_env_vars(per_process::system_environment); - // TODO(joyeecheung): pass Isolate* and env_vars to it instead of the entire - // env, when the recursive dependency inclusion in "debug-utils.h" is - // resolved. - enabled_debug_list_.Parse(this); + enabled_debug_list_.Parse(env_vars(), isolate); // We create new copies of the per-Environment option sets, so that it is // easier to modify them after Environment creation. The defaults are @@ -672,10 +1060,29 @@ void Environment::PrintSyncTrace() const { isolate(), stack_trace_limit(), StackTrace::kDetailed)); } +MaybeLocal Environment::RunSnapshotSerializeCallback() const { + EscapableHandleScope handle_scope(isolate()); + if (!snapshot_serialize_callback().IsEmpty()) { + Context::Scope context_scope(context()); + return handle_scope.EscapeMaybe(snapshot_serialize_callback()->Call( + context(), v8::Undefined(isolate()), 0, nullptr)); + } + return handle_scope.Escape(Undefined(isolate())); +} + +MaybeLocal Environment::RunSnapshotDeserializeMain() const { + EscapableHandleScope handle_scope(isolate()); + if (!snapshot_deserialize_main().IsEmpty()) { + Context::Scope context_scope(context()); + return handle_scope.EscapeMaybe(snapshot_deserialize_main()->Call( + context(), v8::Undefined(isolate()), 0, nullptr)); + } + return handle_scope.Escape(Undefined(isolate())); +} + void Environment::RunCleanup() { started_cleanup_ = true; - TraceEventScope trace_scope(TRACING_CATEGORY_NODE1(environment), - "RunCleanup", this); + TRACE_EVENT0(TRACING_CATEGORY_NODE1(environment), "RunCleanup"); bindings_.clear(); CleanupHandles(); @@ -717,8 +1124,7 @@ void Environment::RunCleanup() { } void Environment::RunAtExitCallbacks() { - TraceEventScope trace_scope(TRACING_CATEGORY_NODE1(environment), - "AtExit", this); + TRACE_EVENT0(TRACING_CATEGORY_NODE1(environment), "AtExit"); for (ExitCallback at_exit : at_exit_functions_) { at_exit.cb_(at_exit.arg_); } @@ -744,8 +1150,8 @@ void Environment::RunAndClearInterrupts() { } void Environment::RunAndClearNativeImmediates(bool only_refed) { - TraceEventScope trace_scope(TRACING_CATEGORY_NODE1(environment), - "RunAndClearNativeImmediates", this); + TRACE_EVENT0(TRACING_CATEGORY_NODE1(environment), + "RunAndClearNativeImmediates"); HandleScope handle_scope(isolate_); InternalCallbackScope cb_scope(this, Object::New(isolate_), { 0, 0 }); @@ -849,8 +1255,7 @@ void Environment::ToggleTimerRef(bool ref) { void Environment::RunTimers(uv_timer_t* handle) { Environment* env = Environment::from_timer_handle(handle); - TraceEventScope trace_scope(TRACING_CATEGORY_NODE1(environment), - "RunTimers", env); + TRACE_EVENT0(TRACING_CATEGORY_NODE1(environment), "RunTimers"); if (!env->can_call_into_js()) return; @@ -911,8 +1316,7 @@ void Environment::RunTimers(uv_timer_t* handle) { void Environment::CheckImmediate(uv_check_t* handle) { Environment* env = Environment::from_immediate_check_handle(handle); - TraceEventScope trace_scope(TRACING_CATEGORY_NODE1(environment), - "CheckImmediate", env); + TRACE_EVENT0(TRACING_CATEGORY_NODE1(environment), "CheckImmediate"); HandleScope scope(env->isolate()); Context::Scope context_scope(env->context()); @@ -1716,6 +2120,107 @@ void Environment::RunWeakRefCleanup() { } // Not really any better place than env.cc at this moment. +BaseObject::BaseObject(Environment* env, Local object) + : persistent_handle_(env->isolate(), object), env_(env) { + CHECK_EQ(false, object.IsEmpty()); + CHECK_GT(object->InternalFieldCount(), 0); + object->SetAlignedPointerInInternalField(BaseObject::kSlot, + static_cast(this)); + env->AddCleanupHook(DeleteMe, static_cast(this)); + env->modify_base_object_count(1); +} + +BaseObject::~BaseObject() { + env()->modify_base_object_count(-1); + env()->RemoveCleanupHook(DeleteMe, static_cast(this)); + + if (UNLIKELY(has_pointer_data())) { + PointerData* metadata = pointer_data(); + CHECK_EQ(metadata->strong_ptr_count, 0); + metadata->self = nullptr; + if (metadata->weak_ptr_count == 0) delete metadata; + } + + if (persistent_handle_.IsEmpty()) { + // This most likely happened because the weak callback below cleared it. + return; + } + + { + HandleScope handle_scope(env()->isolate()); + object()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr); + } +} + +void BaseObject::MakeWeak() { + if (has_pointer_data()) { + pointer_data()->wants_weak_jsobj = true; + if (pointer_data()->strong_ptr_count > 0) return; + } + + persistent_handle_.SetWeak( + this, + [](const WeakCallbackInfo& data) { + BaseObject* obj = data.GetParameter(); + // Clear the persistent handle so that ~BaseObject() doesn't attempt + // to mess with internal fields, since the JS object may have + // transitioned into an invalid state. + // Refs: https://github.com/nodejs/node/issues/18897 + obj->persistent_handle_.Reset(); + CHECK_IMPLIES(obj->has_pointer_data(), + obj->pointer_data()->strong_ptr_count == 0); + obj->OnGCCollect(); + }, + WeakCallbackType::kParameter); +} + +void BaseObject::LazilyInitializedJSTemplateConstructor( + const FunctionCallbackInfo& args) { + DCHECK(args.IsConstructCall()); + DCHECK_GT(args.This()->InternalFieldCount(), 0); + args.This()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr); +} + +Local BaseObject::MakeLazilyInitializedJSTemplate( + Environment* env) { + Local t = + env->NewFunctionTemplate(LazilyInitializedJSTemplateConstructor); + t->Inherit(BaseObject::GetConstructorTemplate(env)); + t->InstanceTemplate()->SetInternalFieldCount(BaseObject::kInternalFieldCount); + return t; +} + +BaseObject::PointerData* BaseObject::pointer_data() { + if (!has_pointer_data()) { + PointerData* metadata = new PointerData(); + metadata->wants_weak_jsobj = persistent_handle_.IsWeak(); + metadata->self = this; + pointer_data_ = metadata; + } + CHECK(has_pointer_data()); + return pointer_data_; +} + +void BaseObject::decrease_refcount() { + CHECK(has_pointer_data()); + PointerData* metadata = pointer_data(); + CHECK_GT(metadata->strong_ptr_count, 0); + unsigned int new_refcount = --metadata->strong_ptr_count; + if (new_refcount == 0) { + if (metadata->is_detached) { + OnGCCollect(); + } else if (metadata->wants_weak_jsobj && !persistent_handle_.IsEmpty()) { + MakeWeak(); + } + } +} + +void BaseObject::increase_refcount() { + unsigned int prev_refcount = pointer_data()->strong_ptr_count++; + if (prev_refcount == 0 && !persistent_handle_.IsEmpty()) + persistent_handle_.ClearWeak(); +} + void BaseObject::DeleteMe(void* data) { BaseObject* self = static_cast(data); if (self->has_pointer_data() && diff --git a/src/env.h b/src/env.h index cda7a52fa1ffc6..ae234a99eb2d5f 100644 --- a/src/env.h +++ b/src/env.h @@ -36,6 +36,7 @@ #include "node_binding.h" #include "node_external_reference.h" #include "node_main_instance.h" +#include "node_native_module.h" #include "node_options.h" #include "node_perf_common.h" #include "node_snapshotable.h" @@ -137,6 +138,19 @@ enum class FsStatsOffset { constexpr size_t kFsStatsBufferLength = static_cast(FsStatsOffset::kFsStatsFieldsNumber) * 2; +// Disables zero-filling for ArrayBuffer allocations in this scope. This is +// similar to how we implement Buffer.allocUnsafe() in JS land. +class NoArrayBufferZeroFillScope { + public: + inline explicit NoArrayBufferZeroFillScope(IsolateData* isolate_data); + inline ~NoArrayBufferZeroFillScope(); + + private: + NodeArrayBufferAllocator* node_allocator_; + + friend class Environment; +}; + // PER_ISOLATE_* macros: We have a lot of per-isolate properties // and adding and maintaining their getters and setters by hand would be // difficult so let's make the preprocessor generate them for us. @@ -530,6 +544,7 @@ constexpr size_t kFsStatsBufferLength = V(inspector_console_extension_installer, v8::Function) \ V(inspector_disable_async_hooks, v8::Function) \ V(inspector_enable_async_hooks, v8::Function) \ + V(maybe_cache_generated_source_map, v8::Function) \ V(messaging_deserialize_create_object, v8::Function) \ V(message_port, v8::Object) \ V(native_module_require, v8::Function) \ @@ -545,6 +560,9 @@ constexpr size_t kFsStatsBufferLength = V(promise_hook_handler, v8::Function) \ V(promise_reject_callback, v8::Function) \ V(script_data_constructor_function, v8::Function) \ + V(snapshot_serialize_callback, v8::Function) \ + V(snapshot_deserialize_callback, v8::Function) \ + V(snapshot_deserialize_main, v8::Function) \ V(source_map_cache_getter, v8::Function) \ V(tick_callback_function, v8::Function) \ V(timers_callback_function, v8::Function) \ @@ -554,10 +572,9 @@ constexpr size_t kFsStatsBufferLength = V(url_constructor_function, v8::Function) class Environment; -struct AllocatedBuffer; typedef size_t SnapshotIndex; -class IsolateData : public MemoryRetainer { +class NODE_EXTERN_PRIVATE IsolateData : public MemoryRetainer { public: IsolateData(v8::Isolate* isolate, uv_loop_t* event_loop, @@ -639,34 +656,6 @@ struct ContextInfo { class EnabledDebugList; -class KVStore { - public: - KVStore() = default; - virtual ~KVStore() = default; - KVStore(const KVStore&) = delete; - KVStore& operator=(const KVStore&) = delete; - KVStore(KVStore&&) = delete; - KVStore& operator=(KVStore&&) = delete; - - virtual v8::MaybeLocal Get(v8::Isolate* isolate, - v8::Local key) const = 0; - virtual v8::Maybe Get(const char* key) const = 0; - virtual void Set(v8::Isolate* isolate, - v8::Local key, - v8::Local value) = 0; - virtual int32_t Query(v8::Isolate* isolate, - v8::Local key) const = 0; - virtual int32_t Query(const char* key) const = 0; - virtual void Delete(v8::Isolate* isolate, v8::Local key) = 0; - virtual v8::Local Enumerate(v8::Isolate* isolate) const = 0; - - virtual std::shared_ptr Clone(v8::Isolate* isolate) const; - virtual v8::Maybe AssignFromObject(v8::Local context, - v8::Local entries); - - static std::shared_ptr CreateMapKVStore(); -}; - namespace per_process { extern std::shared_ptr system_environment; } @@ -712,10 +701,10 @@ class AsyncHooks : public MemoryRetainer { // The `js_execution_async_resources` array contains the value in that case. inline v8::Local native_execution_async_resource(size_t index); - inline void SetJSPromiseHooks(v8::Local init, - v8::Local before, - v8::Local after, - v8::Local resolve); + void SetJSPromiseHooks(v8::Local init, + v8::Local before, + v8::Local after, + v8::Local resolve); inline v8::Local provider_string(int idx); @@ -725,13 +714,14 @@ class AsyncHooks : public MemoryRetainer { // NB: This call does not take (co-)ownership of `execution_async_resource`. // The lifetime of the `v8::Local<>` pointee must last until // `pop_async_context()` or `clear_async_id_stack()` are called. - inline void push_async_context(double async_id, double trigger_async_id, - v8::Local execution_async_resource); - inline bool pop_async_context(double async_id); - inline void clear_async_id_stack(); // Used in fatal exceptions. + void push_async_context(double async_id, + double trigger_async_id, + v8::Local execution_async_resource); + bool pop_async_context(double async_id); + void clear_async_id_stack(); // Used in fatal exceptions. - inline void AddContext(v8::Local ctx); - inline void RemoveContext(v8::Local ctx); + void AddContext(v8::Local ctx); + void RemoveContext(v8::Local ctx); AsyncHooks(const AsyncHooks&) = delete; AsyncHooks& operator=(const AsyncHooks&) = delete; @@ -972,7 +962,6 @@ struct EnvSerializeInfo { }; struct SnapshotData { - SnapshotData() { blob.data = nullptr; } v8::StartupData blob; std::vector isolate_data_indices; EnvSerializeInfo env_info; @@ -1099,17 +1088,15 @@ class Environment : public MemoryRetainer { template inline void CloseHandle(T* handle, OnCloseCallback callback); - inline void AssignToContext(v8::Local context, - const ContextInfo& info); + void AssignToContext(v8::Local context, const ContextInfo& info); void StartProfilerIdleNotifier(); inline v8::Isolate* isolate() const; inline uv_loop_t* event_loop() const; - inline void TryLoadAddon( - const char* filename, - int flags, - const std::function& was_loaded); + void TryLoadAddon(const char* filename, + int flags, + const std::function& was_loaded); static inline Environment* from_timer_handle(uv_timer_t* handle); inline uv_timer_t* timer_handle(); @@ -1199,7 +1186,7 @@ class Environment : public MemoryRetainer { // loop alive. // This is used by Workers to manage their own .ref()/.unref() implementation, // as Workers aren't directly associated with their own libuv handles. - inline void add_refs(int64_t diff); + void add_refs(int64_t diff); inline bool has_run_bootstrapping_code() const; inline void DoneBootstrapping(); @@ -1250,7 +1237,7 @@ class Environment : public MemoryRetainer { const char* path = nullptr, const char* dest = nullptr); - inline v8::Local NewFunctionTemplate( + v8::Local NewFunctionTemplate( v8::FunctionCallback callback, v8::Local signature = v8::Local(), v8::ConstructorBehavior behavior = v8::ConstructorBehavior::kAllow, @@ -1258,54 +1245,57 @@ class Environment : public MemoryRetainer { const v8::CFunction* c_function = nullptr); // Convenience methods for NewFunctionTemplate(). - inline void SetMethod(v8::Local that, - const char* name, - v8::FunctionCallback callback); + void SetMethod(v8::Local that, + const char* name, + v8::FunctionCallback callback); - inline void SetFastMethod(v8::Local that, - const char* name, - v8::FunctionCallback slow_callback, - const v8::CFunction* c_function); - - inline void SetProtoMethod(v8::Local that, - const char* name, - v8::FunctionCallback callback); + void SetFastMethod(v8::Local that, + const char* name, + v8::FunctionCallback slow_callback, + const v8::CFunction* c_function); - inline void SetInstanceMethod(v8::Local that, - const char* name, - v8::FunctionCallback callback); + void SetProtoMethod(v8::Local that, + const char* name, + v8::FunctionCallback callback); + void SetInstanceMethod(v8::Local that, + const char* name, + v8::FunctionCallback callback); // Safe variants denote the function has no side effects. - inline void SetMethodNoSideEffect(v8::Local that, - const char* name, - v8::FunctionCallback callback); - inline void SetProtoMethodNoSideEffect(v8::Local that, - const char* name, - v8::FunctionCallback callback); + void SetMethodNoSideEffect(v8::Local that, + const char* name, + v8::FunctionCallback callback); + void SetProtoMethodNoSideEffect(v8::Local that, + const char* name, + v8::FunctionCallback callback); enum class SetConstructorFunctionFlag { NONE, SET_CLASS_NAME, }; - inline void SetConstructorFunction(v8::Local that, - const char* name, - v8::Local tmpl, - SetConstructorFunctionFlag flag = - SetConstructorFunctionFlag::SET_CLASS_NAME); + void SetConstructorFunction(v8::Local that, + const char* name, + v8::Local tmpl, + SetConstructorFunctionFlag flag = + SetConstructorFunctionFlag::SET_CLASS_NAME); - inline void SetConstructorFunction(v8::Local that, - v8::Local name, - v8::Local tmpl, - SetConstructorFunctionFlag flag = - SetConstructorFunctionFlag::SET_CLASS_NAME); + void SetConstructorFunction(v8::Local that, + v8::Local name, + v8::Local tmpl, + SetConstructorFunctionFlag flag = + SetConstructorFunctionFlag::SET_CLASS_NAME); void AtExit(void (*cb)(void* arg), void* arg); void RunAtExitCallbacks(); void RunWeakRefCleanup(); + v8::MaybeLocal RunSnapshotSerializeCallback() const; + v8::MaybeLocal RunSnapshotDeserializeCallback() const; + v8::MaybeLocal RunSnapshotDeserializeMain() const; + // Strings and private symbols are shared across shared contexts // The getters simply proxy to the per-isolate primitive. #define VP(PropertyName, StringValue) V(v8::Private, PropertyName) @@ -1453,11 +1443,8 @@ class Environment : public MemoryRetainer { void RunAndClearNativeImmediates(bool only_refed = false); void RunAndClearInterrupts(); - inline uv_buf_t allocate_managed_buffer(const size_t suggested_size); - inline std::unique_ptr release_managed_buffer( - const uv_buf_t& buf); - inline std::unordered_map>* - released_allocated_buffers(); + uv_buf_t allocate_managed_buffer(const size_t suggested_size); + std::unique_ptr release_managed_buffer(const uv_buf_t& buf); void AddUnmanagedFd(int fd); void RemoveUnmanagedFd(int fd); @@ -1631,8 +1618,8 @@ class Environment : public MemoryRetainer { // the source passed to LoadEnvironment() directly instead. std::unique_ptr main_utf16_; - // Used by AllocatedBuffer::release() to keep track of the BackingStore for - // a given pointer. + // Used by allocate_managed_buffer() and release_managed_buffer() to keep + // track of the BackingStore for a given pointer. std::unordered_map> released_allocated_buffers_; }; diff --git a/src/handle_wrap.h b/src/handle_wrap.h index 2e06829b7bd885..a86f8b41c44a72 100644 --- a/src/handle_wrap.h +++ b/src/handle_wrap.h @@ -97,6 +97,7 @@ class HandleWrap : public AsyncWrap { } static void OnClose(uv_handle_t* handle); + enum { kInitialized, kClosing, kClosed } state_; private: friend class Environment; @@ -109,7 +110,6 @@ class HandleWrap : public AsyncWrap { // refer to `doc/contributing/node-postmortem-support.md` friend int GenDebugSymbols(); ListNode handle_wrap_queue_; - enum { kInitialized, kClosing, kClosed } state_; uv_handle_t* const handle_; }; diff --git a/src/inspector/tracing_agent.h b/src/inspector/tracing_agent.h index e23d2fadae9354..b8274de2be9bc6 100644 --- a/src/inspector/tracing_agent.h +++ b/src/inspector/tracing_agent.h @@ -31,7 +31,7 @@ class TracingAgent : public NodeTracing::Backend { Environment* env_; std::shared_ptr main_thread_; tracing::AgentWriterHandle trace_writer_; - int frontend_object_id_; + int frontend_object_id_ = 0; std::shared_ptr frontend_; }; diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc index 5fc533741d7c8d..34bb11e7d7122c 100644 --- a/src/inspector_agent.cc +++ b/src/inspector_agent.cc @@ -97,11 +97,11 @@ static int StartDebugSignalHandler() { pthread_attr_t attr; CHECK_EQ(0, pthread_attr_init(&attr)); #if defined(PTHREAD_STACK_MIN) && !defined(__FreeBSD__) - // PTHREAD_STACK_MIN is 2 KB with musl libc, which is too small to safely - // receive signals. PTHREAD_STACK_MIN + MINSIGSTKSZ is 8 KB on arm64, which + // PTHREAD_STACK_MIN is 2 KiB with musl libc, which is too small to safely + // receive signals. PTHREAD_STACK_MIN + MINSIGSTKSZ is 8 KiB on arm64, which // is the musl architecture with the biggest MINSIGSTKSZ so let's use that // as a lower bound and let's quadruple it just in case. The goal is to avoid - // creating a big 2 or 4 MB address space gap (problematic on 32 bits + // creating a big 2 or 4 MiB address space gap (problematic on 32 bits // because of fragmentation), not squeeze out every last byte. // Omitted on FreeBSD because it doesn't seem to like small stacks. const size_t stack_size = std::max(static_cast(4 * 8192), diff --git a/src/inspector_io.cc b/src/inspector_io.cc index 5868289ae67f79..7f52fc605933da 100644 --- a/src/inspector_io.cc +++ b/src/inspector_io.cc @@ -209,7 +209,7 @@ class IoSessionDelegate : public InspectorSessionDelegate { class InspectorIoDelegate: public node::inspector::SocketServerDelegate { public: InspectorIoDelegate(std::shared_ptr queue, - std::shared_ptr main_threade, + std::shared_ptr main_thread, const std::string& target_id, const std::string& script_path, const std::string& script_name); diff --git a/src/inspector_js_api.cc b/src/inspector_js_api.cc index 30a2e31361f47d..4ebb8acd689d58 100644 --- a/src/inspector_js_api.cc +++ b/src/inspector_js_api.cc @@ -215,10 +215,10 @@ void InspectorConsoleCall(const FunctionCallbackInfo& info) { Local node_method = info[1]; CHECK(node_method->IsFunction()); - node_method.As()->Call(context, + USE(node_method.As()->Call(context, info.Holder(), call_args.length(), - call_args.out()).FromMaybe(Local()); + call_args.out())); } static void* GetAsyncTask(int64_t asyncId) { diff --git a/src/inspector_profiler.cc b/src/inspector_profiler.cc index db8bda8524d3b4..332aa536364fba 100644 --- a/src/inspector_profiler.cc +++ b/src/inspector_profiler.cc @@ -331,11 +331,11 @@ MaybeLocal V8CpuProfilerConnection::GetProfile(Local result) { void V8CpuProfilerConnection::Start() { DispatchMessage("Profiler.enable"); - DispatchMessage("Profiler.start"); std::string params = R"({ "interval": )"; params += std::to_string(env()->cpu_prof_interval()); params += " }"; DispatchMessage("Profiler.setSamplingInterval", params.c_str()); + DispatchMessage("Profiler.start"); } void V8CpuProfilerConnection::End() { diff --git a/src/js_native_api.h b/src/js_native_api.h index 50ccf11e240580..220d140d4bfe9a 100644 --- a/src/js_native_api.h +++ b/src/js_native_api.h @@ -2,8 +2,8 @@ #define SRC_JS_NATIVE_API_H_ // This file needs to be compatible with C compilers. -#include // NOLINT(modernize-deprecated-headers) #include // NOLINT(modernize-deprecated-headers) +#include // NOLINT(modernize-deprecated-headers) // Use INT_MAX, this should only be consumed by the pre-processor anyway. #define NAPI_VERSION_EXPERIMENTAL 2147483647 @@ -26,14 +26,15 @@ // If you need __declspec(dllimport), either include instead, or // define NAPI_EXTERN as __declspec(dllimport) on the compiler's command line. #ifndef NAPI_EXTERN - #ifdef _WIN32 - #define NAPI_EXTERN __declspec(dllexport) - #elif defined(__wasm32__) - #define NAPI_EXTERN __attribute__((visibility("default"))) \ - __attribute__((__import_module__("napi"))) - #else - #define NAPI_EXTERN __attribute__((visibility("default"))) - #endif +#ifdef _WIN32 +#define NAPI_EXTERN __declspec(dllexport) +#elif defined(__wasm32__) +#define NAPI_EXTERN \ + __attribute__((visibility("default"))) \ + __attribute__((__import_module__("napi"))) +#else +#define NAPI_EXTERN __attribute__((visibility("default"))) +#endif #endif #define NAPI_AUTO_LENGTH SIZE_MAX @@ -48,234 +49,228 @@ EXTERN_C_START -NAPI_EXTERN napi_status -napi_get_last_error_info(napi_env env, - const napi_extended_error_info** result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_get_last_error_info(napi_env env, const napi_extended_error_info** result); // Getters for defined singletons -NAPI_EXTERN napi_status napi_get_undefined(napi_env env, napi_value* result); -NAPI_EXTERN napi_status napi_get_null(napi_env env, napi_value* result); -NAPI_EXTERN napi_status napi_get_global(napi_env env, napi_value* result); -NAPI_EXTERN napi_status napi_get_boolean(napi_env env, - bool value, - napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_undefined(napi_env env, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_null(napi_env env, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_global(napi_env env, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_boolean(napi_env env, + bool value, + napi_value* result); // Methods to create Primitive types/Objects -NAPI_EXTERN napi_status napi_create_object(napi_env env, napi_value* result); -NAPI_EXTERN napi_status napi_create_array(napi_env env, napi_value* result); -NAPI_EXTERN napi_status napi_create_array_with_length(napi_env env, - size_t length, +NAPI_EXTERN napi_status NAPI_CDECL napi_create_object(napi_env env, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_array(napi_env env, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_create_array_with_length(napi_env env, size_t length, napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_double(napi_env env, + double value, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_int32(napi_env env, + int32_t value, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_uint32(napi_env env, + uint32_t value, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_int64(napi_env env, + int64_t value, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_string_latin1( + napi_env env, const char* str, size_t length, napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_string_utf8(napi_env env, + const char* str, + size_t length, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_string_utf16(napi_env env, + const char16_t* str, + size_t length, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_symbol(napi_env env, + napi_value description, napi_value* result); -NAPI_EXTERN napi_status napi_create_double(napi_env env, - double value, - napi_value* result); -NAPI_EXTERN napi_status napi_create_int32(napi_env env, - int32_t value, - napi_value* result); -NAPI_EXTERN napi_status napi_create_uint32(napi_env env, - uint32_t value, - napi_value* result); -NAPI_EXTERN napi_status napi_create_int64(napi_env env, - int64_t value, - napi_value* result); -NAPI_EXTERN napi_status napi_create_string_latin1(napi_env env, - const char* str, - size_t length, - napi_value* result); -NAPI_EXTERN napi_status napi_create_string_utf8(napi_env env, - const char* str, - size_t length, - napi_value* result); -NAPI_EXTERN napi_status napi_create_string_utf16(napi_env env, - const char16_t* str, - size_t length, - napi_value* result); -NAPI_EXTERN napi_status napi_create_symbol(napi_env env, - napi_value description, - napi_value* result); #ifdef NAPI_EXPERIMENTAL -NAPI_EXTERN napi_status node_api_symbol_for(napi_env env, - const char* utf8description, - size_t length, - napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL +node_api_symbol_for(napi_env env, + const char* utf8description, + size_t length, + napi_value* result); #endif // NAPI_EXPERIMENTAL -NAPI_EXTERN napi_status napi_create_function(napi_env env, - const char* utf8name, - size_t length, - napi_callback cb, - void* data, - napi_value* result); -NAPI_EXTERN napi_status napi_create_error(napi_env env, - napi_value code, - napi_value msg, - napi_value* result); -NAPI_EXTERN napi_status napi_create_type_error(napi_env env, - napi_value code, - napi_value msg, - napi_value* result); -NAPI_EXTERN napi_status napi_create_range_error(napi_env env, - napi_value code, - napi_value msg, - napi_value* result); -#ifdef NAPI_EXPERIMENTAL -NAPI_EXTERN napi_status node_api_create_syntax_error(napi_env env, +NAPI_EXTERN napi_status NAPI_CDECL napi_create_function(napi_env env, + const char* utf8name, + size_t length, + napi_callback cb, + void* data, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_error(napi_env env, napi_value code, napi_value msg, napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_type_error(napi_env env, + napi_value code, + napi_value msg, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_range_error(napi_env env, + napi_value code, + napi_value msg, + napi_value* result); +#ifdef NAPI_EXPERIMENTAL +NAPI_EXTERN napi_status NAPI_CDECL node_api_create_syntax_error( + napi_env env, napi_value code, napi_value msg, napi_value* result); #endif // NAPI_EXPERIMENTAL // Methods to get the native napi_value from Primitive type -NAPI_EXTERN napi_status napi_typeof(napi_env env, - napi_value value, - napi_valuetype* result); -NAPI_EXTERN napi_status napi_get_value_double(napi_env env, - napi_value value, - double* result); -NAPI_EXTERN napi_status napi_get_value_int32(napi_env env, - napi_value value, - int32_t* result); -NAPI_EXTERN napi_status napi_get_value_uint32(napi_env env, - napi_value value, - uint32_t* result); -NAPI_EXTERN napi_status napi_get_value_int64(napi_env env, - napi_value value, - int64_t* result); -NAPI_EXTERN napi_status napi_get_value_bool(napi_env env, - napi_value value, - bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_typeof(napi_env env, + napi_value value, + napi_valuetype* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_double(napi_env env, + napi_value value, + double* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_int32(napi_env env, + napi_value value, + int32_t* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_uint32(napi_env env, + napi_value value, + uint32_t* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_int64(napi_env env, + napi_value value, + int64_t* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_bool(napi_env env, + napi_value value, + bool* result); // Copies LATIN-1 encoded bytes from a string into a buffer. -NAPI_EXTERN napi_status napi_get_value_string_latin1(napi_env env, - napi_value value, - char* buf, - size_t bufsize, - size_t* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_string_latin1( + napi_env env, napi_value value, char* buf, size_t bufsize, size_t* result); // Copies UTF-8 encoded bytes from a string into a buffer. -NAPI_EXTERN napi_status napi_get_value_string_utf8(napi_env env, - napi_value value, - char* buf, - size_t bufsize, - size_t* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_string_utf8( + napi_env env, napi_value value, char* buf, size_t bufsize, size_t* result); // Copies UTF-16 encoded bytes from a string into a buffer. -NAPI_EXTERN napi_status napi_get_value_string_utf16(napi_env env, - napi_value value, - char16_t* buf, - size_t bufsize, - size_t* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_string_utf16(napi_env env, + napi_value value, + char16_t* buf, + size_t bufsize, + size_t* result); // Methods to coerce values // These APIs may execute user scripts -NAPI_EXTERN napi_status napi_coerce_to_bool(napi_env env, - napi_value value, - napi_value* result); -NAPI_EXTERN napi_status napi_coerce_to_number(napi_env env, - napi_value value, - napi_value* result); -NAPI_EXTERN napi_status napi_coerce_to_object(napi_env env, - napi_value value, - napi_value* result); -NAPI_EXTERN napi_status napi_coerce_to_string(napi_env env, - napi_value value, - napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_bool(napi_env env, + napi_value value, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_number(napi_env env, + napi_value value, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_object(napi_env env, + napi_value value, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_string(napi_env env, + napi_value value, + napi_value* result); // Methods to work with Objects -NAPI_EXTERN napi_status napi_get_prototype(napi_env env, - napi_value object, - napi_value* result); -NAPI_EXTERN napi_status napi_get_property_names(napi_env env, - napi_value object, - napi_value* result); -NAPI_EXTERN napi_status napi_set_property(napi_env env, - napi_value object, - napi_value key, - napi_value value); -NAPI_EXTERN napi_status napi_has_property(napi_env env, - napi_value object, - napi_value key, - bool* result); -NAPI_EXTERN napi_status napi_get_property(napi_env env, - napi_value object, - napi_value key, - napi_value* result); -NAPI_EXTERN napi_status napi_delete_property(napi_env env, - napi_value object, - napi_value key, - bool* result); -NAPI_EXTERN napi_status napi_has_own_property(napi_env env, - napi_value object, - napi_value key, - bool* result); -NAPI_EXTERN napi_status napi_set_named_property(napi_env env, - napi_value object, - const char* utf8name, - napi_value value); -NAPI_EXTERN napi_status napi_has_named_property(napi_env env, - napi_value object, - const char* utf8name, - bool* result); -NAPI_EXTERN napi_status napi_get_named_property(napi_env env, - napi_value object, - const char* utf8name, - napi_value* result); -NAPI_EXTERN napi_status napi_set_element(napi_env env, - napi_value object, - uint32_t index, - napi_value value); -NAPI_EXTERN napi_status napi_has_element(napi_env env, - napi_value object, - uint32_t index, - bool* result); -NAPI_EXTERN napi_status napi_get_element(napi_env env, - napi_value object, - uint32_t index, - napi_value* result); -NAPI_EXTERN napi_status napi_delete_element(napi_env env, - napi_value object, - uint32_t index, - bool* result); -NAPI_EXTERN napi_status +NAPI_EXTERN napi_status NAPI_CDECL napi_get_prototype(napi_env env, + napi_value object, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_property_names(napi_env env, + napi_value object, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_set_property(napi_env env, + napi_value object, + napi_value key, + napi_value value); +NAPI_EXTERN napi_status NAPI_CDECL napi_has_property(napi_env env, + napi_value object, + napi_value key, + bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_property(napi_env env, + napi_value object, + napi_value key, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_delete_property(napi_env env, + napi_value object, + napi_value key, + bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_has_own_property(napi_env env, + napi_value object, + napi_value key, + bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_set_named_property(napi_env env, + napi_value object, + const char* utf8name, + napi_value value); +NAPI_EXTERN napi_status NAPI_CDECL napi_has_named_property(napi_env env, + napi_value object, + const char* utf8name, + bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_named_property(napi_env env, + napi_value object, + const char* utf8name, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_set_element(napi_env env, + napi_value object, + uint32_t index, + napi_value value); +NAPI_EXTERN napi_status NAPI_CDECL napi_has_element(napi_env env, + napi_value object, + uint32_t index, + bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_element(napi_env env, + napi_value object, + uint32_t index, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_delete_element(napi_env env, + napi_value object, + uint32_t index, + bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_define_properties(napi_env env, napi_value object, size_t property_count, const napi_property_descriptor* properties); // Methods to work with Arrays -NAPI_EXTERN napi_status napi_is_array(napi_env env, - napi_value value, - bool* result); -NAPI_EXTERN napi_status napi_get_array_length(napi_env env, - napi_value value, - uint32_t* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_is_array(napi_env env, + napi_value value, + bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_array_length(napi_env env, + napi_value value, + uint32_t* result); // Methods to compare values -NAPI_EXTERN napi_status napi_strict_equals(napi_env env, - napi_value lhs, - napi_value rhs, - bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_strict_equals(napi_env env, + napi_value lhs, + napi_value rhs, + bool* result); // Methods to work with Functions -NAPI_EXTERN napi_status napi_call_function(napi_env env, - napi_value recv, - napi_value func, - size_t argc, - const napi_value* argv, - napi_value* result); -NAPI_EXTERN napi_status napi_new_instance(napi_env env, - napi_value constructor, - size_t argc, - const napi_value* argv, - napi_value* result); -NAPI_EXTERN napi_status napi_instanceof(napi_env env, - napi_value object, - napi_value constructor, - bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_call_function(napi_env env, + napi_value recv, + napi_value func, + size_t argc, + const napi_value* argv, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_new_instance(napi_env env, + napi_value constructor, + size_t argc, + const napi_value* argv, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_instanceof(napi_env env, + napi_value object, + napi_value constructor, + bool* result); // Methods to work with napi_callbacks // Gets all callback info in a single call. (Ugly, but faster.) -NAPI_EXTERN napi_status napi_get_cb_info( +NAPI_EXTERN napi_status NAPI_CDECL napi_get_cb_info( napi_env env, // [in] NAPI environment handle napi_callback_info cbinfo, // [in] Opaque callback-info handle size_t* argc, // [in-out] Specifies the size of the provided argv array @@ -284,10 +279,9 @@ NAPI_EXTERN napi_status napi_get_cb_info( napi_value* this_arg, // [out] Receives the JS 'this' arg for the call void** data); // [out] Receives the data pointer for the callback. -NAPI_EXTERN napi_status napi_get_new_target(napi_env env, - napi_callback_info cbinfo, - napi_value* result); -NAPI_EXTERN napi_status +NAPI_EXTERN napi_status NAPI_CDECL napi_get_new_target( + napi_env env, napi_callback_info cbinfo, napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_define_class(napi_env env, const char* utf8name, size_t length, @@ -298,237 +292,240 @@ napi_define_class(napi_env env, napi_value* result); // Methods to work with external data objects -NAPI_EXTERN napi_status napi_wrap(napi_env env, - napi_value js_object, - void* native_object, - napi_finalize finalize_cb, - void* finalize_hint, - napi_ref* result); -NAPI_EXTERN napi_status napi_unwrap(napi_env env, - napi_value js_object, - void** result); -NAPI_EXTERN napi_status napi_remove_wrap(napi_env env, - napi_value js_object, - void** result); -NAPI_EXTERN napi_status napi_create_external(napi_env env, - void* data, +NAPI_EXTERN napi_status NAPI_CDECL napi_wrap(napi_env env, + napi_value js_object, + void* native_object, napi_finalize finalize_cb, void* finalize_hint, - napi_value* result); -NAPI_EXTERN napi_status napi_get_value_external(napi_env env, - napi_value value, - void** result); + napi_ref* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_unwrap(napi_env env, + napi_value js_object, + void** result); +NAPI_EXTERN napi_status NAPI_CDECL napi_remove_wrap(napi_env env, + napi_value js_object, + void** result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_create_external(napi_env env, + void* data, + napi_finalize finalize_cb, + void* finalize_hint, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_external(napi_env env, + napi_value value, + void** result); // Methods to control object lifespan // Set initial_refcount to 0 for a weak reference, >0 for a strong reference. -NAPI_EXTERN napi_status napi_create_reference(napi_env env, - napi_value value, - uint32_t initial_refcount, - napi_ref* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_create_reference(napi_env env, + napi_value value, + uint32_t initial_refcount, + napi_ref* result); // Deletes a reference. The referenced value is released, and may // be GC'd unless there are other references to it. -NAPI_EXTERN napi_status napi_delete_reference(napi_env env, napi_ref ref); +NAPI_EXTERN napi_status NAPI_CDECL napi_delete_reference(napi_env env, + napi_ref ref); // Increments the reference count, optionally returning the resulting count. // After this call the reference will be a strong reference because its // refcount is >0, and the referenced object is effectively "pinned". // Calling this when the refcount is 0 and the object is unavailable // results in an error. -NAPI_EXTERN napi_status napi_reference_ref(napi_env env, - napi_ref ref, - uint32_t* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_reference_ref(napi_env env, + napi_ref ref, + uint32_t* result); // Decrements the reference count, optionally returning the resulting count. // If the result is 0 the reference is now weak and the object may be GC'd // at any time if there are no other references. Calling this when the // refcount is already 0 results in an error. -NAPI_EXTERN napi_status napi_reference_unref(napi_env env, - napi_ref ref, - uint32_t* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_reference_unref(napi_env env, + napi_ref ref, + uint32_t* result); // Attempts to get a referenced value. If the reference is weak, // the value might no longer be available, in that case the call // is still successful but the result is NULL. -NAPI_EXTERN napi_status napi_get_reference_value(napi_env env, - napi_ref ref, - napi_value* result); - -NAPI_EXTERN napi_status napi_open_handle_scope(napi_env env, - napi_handle_scope* result); -NAPI_EXTERN napi_status napi_close_handle_scope(napi_env env, - napi_handle_scope scope); -NAPI_EXTERN napi_status -napi_open_escapable_handle_scope(napi_env env, - napi_escapable_handle_scope* result); -NAPI_EXTERN napi_status -napi_close_escapable_handle_scope(napi_env env, - napi_escapable_handle_scope scope); - -NAPI_EXTERN napi_status napi_escape_handle(napi_env env, - napi_escapable_handle_scope scope, - napi_value escapee, - napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_reference_value(napi_env env, + napi_ref ref, + napi_value* result); + +NAPI_EXTERN napi_status NAPI_CDECL +napi_open_handle_scope(napi_env env, napi_handle_scope* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_close_handle_scope(napi_env env, napi_handle_scope scope); +NAPI_EXTERN napi_status NAPI_CDECL napi_open_escapable_handle_scope( + napi_env env, napi_escapable_handle_scope* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_close_escapable_handle_scope( + napi_env env, napi_escapable_handle_scope scope); + +NAPI_EXTERN napi_status NAPI_CDECL +napi_escape_handle(napi_env env, + napi_escapable_handle_scope scope, + napi_value escapee, + napi_value* result); // Methods to support error handling -NAPI_EXTERN napi_status napi_throw(napi_env env, napi_value error); -NAPI_EXTERN napi_status napi_throw_error(napi_env env, - const char* code, - const char* msg); -NAPI_EXTERN napi_status napi_throw_type_error(napi_env env, - const char* code, - const char* msg); -NAPI_EXTERN napi_status napi_throw_range_error(napi_env env, - const char* code, - const char* msg); -#ifdef NAPI_EXPERIMENTAL -NAPI_EXTERN napi_status node_api_throw_syntax_error(napi_env env, +NAPI_EXTERN napi_status NAPI_CDECL napi_throw(napi_env env, napi_value error); +NAPI_EXTERN napi_status NAPI_CDECL napi_throw_error(napi_env env, const char* code, const char* msg); +NAPI_EXTERN napi_status NAPI_CDECL napi_throw_type_error(napi_env env, + const char* code, + const char* msg); +NAPI_EXTERN napi_status NAPI_CDECL napi_throw_range_error(napi_env env, + const char* code, + const char* msg); +#ifdef NAPI_EXPERIMENTAL +NAPI_EXTERN napi_status NAPI_CDECL node_api_throw_syntax_error(napi_env env, + const char* code, + const char* msg); #endif // NAPI_EXPERIMENTAL -NAPI_EXTERN napi_status napi_is_error(napi_env env, - napi_value value, - bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_is_error(napi_env env, + napi_value value, + bool* result); // Methods to support catching exceptions -NAPI_EXTERN napi_status napi_is_exception_pending(napi_env env, bool* result); -NAPI_EXTERN napi_status napi_get_and_clear_last_exception(napi_env env, - napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_is_exception_pending(napi_env env, + bool* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_get_and_clear_last_exception(napi_env env, napi_value* result); // Methods to work with array buffers and typed arrays -NAPI_EXTERN napi_status napi_is_arraybuffer(napi_env env, - napi_value value, - bool* result); -NAPI_EXTERN napi_status napi_create_arraybuffer(napi_env env, - size_t byte_length, - void** data, - napi_value* result); -NAPI_EXTERN napi_status +NAPI_EXTERN napi_status NAPI_CDECL napi_is_arraybuffer(napi_env env, + napi_value value, + bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_arraybuffer(napi_env env, + size_t byte_length, + void** data, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_external_arraybuffer(napi_env env, void* external_data, size_t byte_length, napi_finalize finalize_cb, void* finalize_hint, napi_value* result); -NAPI_EXTERN napi_status napi_get_arraybuffer_info(napi_env env, - napi_value arraybuffer, - void** data, - size_t* byte_length); -NAPI_EXTERN napi_status napi_is_typedarray(napi_env env, - napi_value value, - bool* result); -NAPI_EXTERN napi_status napi_create_typedarray(napi_env env, - napi_typedarray_type type, - size_t length, - napi_value arraybuffer, - size_t byte_offset, - napi_value* result); -NAPI_EXTERN napi_status napi_get_typedarray_info(napi_env env, - napi_value typedarray, - napi_typedarray_type* type, - size_t* length, - void** data, - napi_value* arraybuffer, - size_t* byte_offset); - -NAPI_EXTERN napi_status napi_create_dataview(napi_env env, - size_t length, - napi_value arraybuffer, - size_t byte_offset, - napi_value* result); -NAPI_EXTERN napi_status napi_is_dataview(napi_env env, - napi_value value, - bool* result); -NAPI_EXTERN napi_status napi_get_dataview_info(napi_env env, - napi_value dataview, - size_t* bytelength, - void** data, - napi_value* arraybuffer, - size_t* byte_offset); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_arraybuffer_info( + napi_env env, napi_value arraybuffer, void** data, size_t* byte_length); +NAPI_EXTERN napi_status NAPI_CDECL napi_is_typedarray(napi_env env, + napi_value value, + bool* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_create_typedarray(napi_env env, + napi_typedarray_type type, + size_t length, + napi_value arraybuffer, + size_t byte_offset, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_get_typedarray_info(napi_env env, + napi_value typedarray, + napi_typedarray_type* type, + size_t* length, + void** data, + napi_value* arraybuffer, + size_t* byte_offset); + +NAPI_EXTERN napi_status NAPI_CDECL napi_create_dataview(napi_env env, + size_t length, + napi_value arraybuffer, + size_t byte_offset, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_is_dataview(napi_env env, + napi_value value, + bool* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_get_dataview_info(napi_env env, + napi_value dataview, + size_t* bytelength, + void** data, + napi_value* arraybuffer, + size_t* byte_offset); // version management -NAPI_EXTERN napi_status napi_get_version(napi_env env, uint32_t* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_version(napi_env env, + uint32_t* result); // Promises -NAPI_EXTERN napi_status napi_create_promise(napi_env env, - napi_deferred* deferred, - napi_value* promise); -NAPI_EXTERN napi_status napi_resolve_deferred(napi_env env, - napi_deferred deferred, - napi_value resolution); -NAPI_EXTERN napi_status napi_reject_deferred(napi_env env, - napi_deferred deferred, - napi_value rejection); -NAPI_EXTERN napi_status napi_is_promise(napi_env env, - napi_value value, - bool* is_promise); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_promise(napi_env env, + napi_deferred* deferred, + napi_value* promise); +NAPI_EXTERN napi_status NAPI_CDECL napi_resolve_deferred(napi_env env, + napi_deferred deferred, + napi_value resolution); +NAPI_EXTERN napi_status NAPI_CDECL napi_reject_deferred(napi_env env, + napi_deferred deferred, + napi_value rejection); +NAPI_EXTERN napi_status NAPI_CDECL napi_is_promise(napi_env env, + napi_value value, + bool* is_promise); // Running a script -NAPI_EXTERN napi_status napi_run_script(napi_env env, - napi_value script, - napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_run_script(napi_env env, + napi_value script, + napi_value* result); // Memory management -NAPI_EXTERN napi_status napi_adjust_external_memory(napi_env env, - int64_t change_in_bytes, - int64_t* adjusted_value); +NAPI_EXTERN napi_status NAPI_CDECL napi_adjust_external_memory( + napi_env env, int64_t change_in_bytes, int64_t* adjusted_value); #if NAPI_VERSION >= 5 // Dates -NAPI_EXTERN napi_status napi_create_date(napi_env env, - double time, - napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_date(napi_env env, + double time, + napi_value* result); -NAPI_EXTERN napi_status napi_is_date(napi_env env, - napi_value value, - bool* is_date); +NAPI_EXTERN napi_status NAPI_CDECL napi_is_date(napi_env env, + napi_value value, + bool* is_date); -NAPI_EXTERN napi_status napi_get_date_value(napi_env env, - napi_value value, - double* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_date_value(napi_env env, + napi_value value, + double* result); // Add finalizer for pointer -NAPI_EXTERN napi_status napi_add_finalizer(napi_env env, - napi_value js_object, - void* native_object, - napi_finalize finalize_cb, - void* finalize_hint, - napi_ref* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_add_finalizer(napi_env env, + napi_value js_object, + void* native_object, + napi_finalize finalize_cb, + void* finalize_hint, + napi_ref* result); #endif // NAPI_VERSION >= 5 #if NAPI_VERSION >= 6 // BigInt -NAPI_EXTERN napi_status napi_create_bigint_int64(napi_env env, - int64_t value, - napi_value* result); -NAPI_EXTERN napi_status napi_create_bigint_uint64(napi_env env, - uint64_t value, - napi_value* result); -NAPI_EXTERN napi_status napi_create_bigint_words(napi_env env, - int sign_bit, - size_t word_count, - const uint64_t* words, - napi_value* result); -NAPI_EXTERN napi_status napi_get_value_bigint_int64(napi_env env, - napi_value value, - int64_t* result, - bool* lossless); -NAPI_EXTERN napi_status napi_get_value_bigint_uint64(napi_env env, - napi_value value, - uint64_t* result, - bool* lossless); -NAPI_EXTERN napi_status napi_get_value_bigint_words(napi_env env, - napi_value value, - int* sign_bit, - size_t* word_count, - uint64_t* words); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_bigint_int64(napi_env env, + int64_t value, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_create_bigint_uint64(napi_env env, uint64_t value, napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_create_bigint_words(napi_env env, + int sign_bit, + size_t word_count, + const uint64_t* words, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_bigint_int64(napi_env env, + napi_value value, + int64_t* result, + bool* lossless); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_bigint_uint64( + napi_env env, napi_value value, uint64_t* result, bool* lossless); +NAPI_EXTERN napi_status NAPI_CDECL +napi_get_value_bigint_words(napi_env env, + napi_value value, + int* sign_bit, + size_t* word_count, + uint64_t* words); // Object -NAPI_EXTERN napi_status +NAPI_EXTERN napi_status NAPI_CDECL napi_get_all_property_names(napi_env env, napi_value object, napi_key_collection_mode key_mode, @@ -537,40 +534,36 @@ napi_get_all_property_names(napi_env env, napi_value* result); // Instance data -NAPI_EXTERN napi_status napi_set_instance_data(napi_env env, - void* data, - napi_finalize finalize_cb, - void* finalize_hint); +NAPI_EXTERN napi_status NAPI_CDECL napi_set_instance_data( + napi_env env, void* data, napi_finalize finalize_cb, void* finalize_hint); -NAPI_EXTERN napi_status napi_get_instance_data(napi_env env, - void** data); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_instance_data(napi_env env, + void** data); #endif // NAPI_VERSION >= 6 #if NAPI_VERSION >= 7 // ArrayBuffer detaching -NAPI_EXTERN napi_status napi_detach_arraybuffer(napi_env env, - napi_value arraybuffer); +NAPI_EXTERN napi_status NAPI_CDECL +napi_detach_arraybuffer(napi_env env, napi_value arraybuffer); -NAPI_EXTERN napi_status napi_is_detached_arraybuffer(napi_env env, - napi_value value, - bool* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_is_detached_arraybuffer(napi_env env, napi_value value, bool* result); #endif // NAPI_VERSION >= 7 #if NAPI_VERSION >= 8 // Type tagging -NAPI_EXTERN napi_status napi_type_tag_object(napi_env env, - napi_value value, - const napi_type_tag* type_tag); +NAPI_EXTERN napi_status NAPI_CDECL napi_type_tag_object( + napi_env env, napi_value value, const napi_type_tag* type_tag); -NAPI_EXTERN napi_status +NAPI_EXTERN napi_status NAPI_CDECL napi_check_object_type_tag(napi_env env, napi_value value, const napi_type_tag* type_tag, bool* result); -NAPI_EXTERN napi_status napi_object_freeze(napi_env env, - napi_value object); -NAPI_EXTERN napi_status napi_object_seal(napi_env env, - napi_value object); +NAPI_EXTERN napi_status NAPI_CDECL napi_object_freeze(napi_env env, + napi_value object); +NAPI_EXTERN napi_status NAPI_CDECL napi_object_seal(napi_env env, + napi_value object); #endif // NAPI_VERSION >= 8 EXTERN_C_END diff --git a/src/js_native_api_types.h b/src/js_native_api_types.h index 6aba06629b3154..376930ba4a3220 100644 --- a/src/js_native_api_types.h +++ b/src/js_native_api_types.h @@ -8,7 +8,15 @@ #include // NOLINT(modernize-deprecated-headers) #if !defined __cplusplus || (defined(_MSC_VER) && _MSC_VER < 1900) - typedef uint16_t char16_t; +typedef uint16_t char16_t; +#endif + +#ifndef NAPI_CDECL +#ifdef _WIN32 +#define NAPI_CDECL __cdecl +#else +#define NAPI_CDECL +#endif #endif // JSVM API types are all opaque pointers for ABI stability @@ -36,9 +44,7 @@ typedef enum { napi_default_method = napi_writable | napi_configurable, // Default for object properties, like in JS obj[prop]. - napi_default_jsproperty = napi_writable | - napi_enumerable | - napi_configurable, + napi_default_jsproperty = napi_writable | napi_enumerable | napi_configurable, #endif // NAPI_VERSION >= 8 } napi_property_attributes; @@ -102,11 +108,11 @@ typedef enum { // * the definition of `napi_status` in doc/api/n-api.md to reflect the newly // added value(s). -typedef napi_value (*napi_callback)(napi_env env, - napi_callback_info info); -typedef void (*napi_finalize)(napi_env env, - void* finalize_data, - void* finalize_hint); +typedef napi_value(NAPI_CDECL* napi_callback)(napi_env env, + napi_callback_info info); +typedef void(NAPI_CDECL* napi_finalize)(napi_env env, + void* finalize_data, + void* finalize_hint); typedef struct { // One of utf8name or name should be NULL. diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc index 1c29c43836a0c3..5f8e21e0b58c8a 100644 --- a/src/js_native_api_v8.cc +++ b/src/js_native_api_v8.cc @@ -1,43 +1,41 @@ +#include #include // INT_MAX #include -#include #define NAPI_EXPERIMENTAL #include "env-inl.h" -#include "js_native_api_v8.h" #include "js_native_api.h" +#include "js_native_api_v8.h" #include "util-inl.h" -#define CHECK_MAYBE_NOTHING(env, maybe, status) \ +#define CHECK_MAYBE_NOTHING(env, maybe, status) \ RETURN_STATUS_IF_FALSE((env), !((maybe).IsNothing()), (status)) -#define CHECK_MAYBE_NOTHING_WITH_PREAMBLE(env, maybe, status) \ +#define CHECK_MAYBE_NOTHING_WITH_PREAMBLE(env, maybe, status) \ RETURN_STATUS_IF_FALSE_WITH_PREAMBLE((env), !((maybe).IsNothing()), (status)) -#define CHECK_TO_NUMBER(env, context, result, src) \ +#define CHECK_TO_NUMBER(env, context, result, src) \ CHECK_TO_TYPE((env), Number, (context), (result), (src), napi_number_expected) // n-api defines NAPI_AUTO_LENGTH as the indicator that a string // is null terminated. For V8 the equivalent is -1. The assert // validates that our cast of NAPI_AUTO_LENGTH results in -1 as // needed by V8. -#define CHECK_NEW_FROM_UTF8_LEN(env, result, str, len) \ - do { \ - static_assert(static_cast(NAPI_AUTO_LENGTH) == -1, \ - "Casting NAPI_AUTO_LENGTH to int must result in -1"); \ - RETURN_STATUS_IF_FALSE((env), \ - (len == NAPI_AUTO_LENGTH) || len <= INT_MAX, \ - napi_invalid_arg); \ - RETURN_STATUS_IF_FALSE((env), \ - (str) != nullptr, \ - napi_invalid_arg); \ - auto str_maybe = v8::String::NewFromUtf8( \ - (env)->isolate, (str), v8::NewStringType::kInternalized, \ - static_cast(len)); \ - CHECK_MAYBE_EMPTY((env), str_maybe, napi_generic_failure); \ - (result) = str_maybe.ToLocalChecked(); \ +#define CHECK_NEW_FROM_UTF8_LEN(env, result, str, len) \ + do { \ + static_assert(static_cast(NAPI_AUTO_LENGTH) == -1, \ + "Casting NAPI_AUTO_LENGTH to int must result in -1"); \ + RETURN_STATUS_IF_FALSE( \ + (env), (len == NAPI_AUTO_LENGTH) || len <= INT_MAX, napi_invalid_arg); \ + RETURN_STATUS_IF_FALSE((env), (str) != nullptr, napi_invalid_arg); \ + auto str_maybe = v8::String::NewFromUtf8((env)->isolate, \ + (str), \ + v8::NewStringType::kInternalized, \ + static_cast(len)); \ + CHECK_MAYBE_EMPTY((env), str_maybe, napi_generic_failure); \ + (result) = str_maybe.ToLocalChecked(); \ } while (0) -#define CHECK_NEW_FROM_UTF8(env, result, str) \ +#define CHECK_NEW_FROM_UTF8(env, result, str) \ CHECK_NEW_FROM_UTF8_LEN((env), (result), (str), NAPI_AUTO_LENGTH) #define CREATE_TYPED_ARRAY( \ @@ -45,12 +43,15 @@ do { \ if ((size_of_element) > 1) { \ THROW_RANGE_ERROR_IF_FALSE( \ - (env), (byte_offset) % (size_of_element) == 0, \ + (env), \ + (byte_offset) % (size_of_element) == 0, \ "ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT", \ - "start offset of "#type" should be a multiple of "#size_of_element); \ + "start offset of " #type \ + " should be a multiple of " #size_of_element); \ } \ - THROW_RANGE_ERROR_IF_FALSE((env), (length) * (size_of_element) + \ - (byte_offset) <= buffer->ByteLength(), \ + THROW_RANGE_ERROR_IF_FALSE( \ + (env), \ + (length) * (size_of_element) + (byte_offset) <= buffer->ByteLength(), \ "ERR_NAPI_INVALID_TYPEDARRAY_LENGTH", \ "Invalid typed array length"); \ (out) = v8::type::New((buffer), (byte_offset), (length)); \ @@ -60,15 +61,15 @@ namespace v8impl { namespace { -inline static napi_status -V8NameFromPropertyDescriptor(napi_env env, - const napi_property_descriptor* p, - v8::Local* result) { +inline static napi_status V8NameFromPropertyDescriptor( + napi_env env, + const napi_property_descriptor* p, + v8::Local* result) { if (p->utf8name != nullptr) { CHECK_NEW_FROM_UTF8(env, *result, p->utf8name); } else { v8::Local property_value = - v8impl::V8LocalValueFromJsValue(p->name); + v8impl::V8LocalValueFromJsValue(p->name); RETURN_STATUS_IF_FALSE(env, property_value->IsName(), napi_name_expected); *result = property_value.As(); @@ -85,7 +86,7 @@ inline static v8::PropertyAttribute V8PropertyAttributesFromDescriptor( // The napi_writable attribute is ignored for accessor descriptors, but // V8 would throw `TypeError`s on assignment with nonexistence of a setter. if ((descriptor->getter == nullptr && descriptor->setter == nullptr) && - (descriptor->attributes & napi_writable) == 0) { + (descriptor->attributes & napi_writable) == 0) { attribute_flags |= v8::PropertyAttribute::ReadOnly; } @@ -99,13 +100,13 @@ inline static v8::PropertyAttribute V8PropertyAttributesFromDescriptor( return static_cast(attribute_flags); } -inline static napi_deferred -JsDeferredFromNodePersistent(v8impl::Persistent* local) { +inline static napi_deferred JsDeferredFromNodePersistent( + v8impl::Persistent* local) { return reinterpret_cast(local); } -inline static v8impl::Persistent* -NodePersistentFromJsDeferred(napi_deferred local) { +inline static v8impl::Persistent* NodePersistentFromJsDeferred( + napi_deferred local) { return reinterpret_cast*>(local); } @@ -126,9 +127,7 @@ class EscapableHandleScopeWrapper { public: explicit EscapableHandleScopeWrapper(v8::Isolate* isolate) : scope(isolate), escape_called_(false) {} - bool escape_called() const { - return escape_called_; - } + bool escape_called() const { return escape_called_; } template v8::Local Escape(v8::Local handle) { escape_called_ = true; @@ -140,13 +139,13 @@ class EscapableHandleScopeWrapper { bool escape_called_; }; -inline static napi_handle_scope -JsHandleScopeFromV8HandleScope(HandleScopeWrapper* s) { +inline static napi_handle_scope JsHandleScopeFromV8HandleScope( + HandleScopeWrapper* s) { return reinterpret_cast(s); } -inline static HandleScopeWrapper* -V8HandleScopeFromJsHandleScope(napi_handle_scope s) { +inline static HandleScopeWrapper* V8HandleScopeFromJsHandleScope( + napi_handle_scope s) { return reinterpret_cast(s); } @@ -177,9 +176,11 @@ inline static napi_status ConcludeDeferred(napi_env env, auto v8_resolver = v8_deferred.As(); - v8::Maybe success = is_resolved ? - v8_resolver->Resolve(context, v8impl::V8LocalValueFromJsValue(result)) : - v8_resolver->Reject(context, v8impl::V8LocalValueFromJsValue(result)); + v8::Maybe success = + is_resolved ? v8_resolver->Resolve( + context, v8impl::V8LocalValueFromJsValue(result)) + : v8_resolver->Reject( + context, v8impl::V8LocalValueFromJsValue(result)); delete deferred_ref; @@ -188,10 +189,7 @@ inline static napi_status ConcludeDeferred(napi_env env, return GET_RETURN_STATUS(env); } -enum UnwrapAction { - KeepWrap, - RemoveWrap -}; +enum UnwrapAction { KeepWrap, RemoveWrap }; inline static napi_status Unwrap(napi_env env, napi_value js_object, @@ -210,7 +208,7 @@ inline static napi_status Unwrap(napi_env env, v8::Local obj = value.As(); auto val = obj->GetPrivate(context, NAPI_PRIVATE_KEY(context, wrapper)) - .ToLocalChecked(); + .ToLocalChecked(); RETURN_STATUS_IF_FALSE(env, val->IsExternal(), napi_invalid_arg); Reference* reference = static_cast(val.As()->Value()); @@ -221,7 +219,7 @@ inline static napi_status Unwrap(napi_env env, if (action == RemoveWrap) { CHECK(obj->DeletePrivate(context, NAPI_PRIVATE_KEY(context, wrapper)) - .FromJust()); + .FromJust()); Reference::Delete(reference); } @@ -240,8 +238,9 @@ class CallbackBundle { public: // Creates an object to be made available to the static function callback // wrapper, used to retrieve the native callback function and data pointer. - static inline v8::Local - New(napi_env env, napi_callback cb, void* data) { + static inline v8::Local New(napi_env env, + napi_callback cb, + void* data) { CallbackBundle* bundle = new CallbackBundle(); bundle->cb = cb; bundle->cb_data = data; @@ -251,9 +250,10 @@ class CallbackBundle { Reference::New(env, cbdata, 0, true, Delete, bundle, nullptr); return cbdata; } - napi_env env; // Necessary to invoke C++ NAPI callback - void* cb_data; // The user provided callback data - napi_callback cb; + napi_env env; // Necessary to invoke C++ NAPI callback + void* cb_data; // The user provided callback data + napi_callback cb; + private: static void Delete(napi_env env, void* data, void* hint) { CallbackBundle* bundle = static_cast(data); @@ -288,9 +288,8 @@ class CallbackWrapperBase : public CallbackWrapper { public: inline CallbackWrapperBase(const v8::FunctionCallbackInfo& cbinfo, const size_t args_length) - : CallbackWrapper(JsValueFromV8LocalValue(cbinfo.This()), - args_length, - nullptr), + : CallbackWrapper( + JsValueFromV8LocalValue(cbinfo.This()), args_length, nullptr), _cbinfo(cbinfo) { _bundle = reinterpret_cast( cbinfo.Data().As()->Value()); @@ -308,12 +307,11 @@ class CallbackWrapperBase : public CallbackWrapper { napi_value result = nullptr; bool exceptionOccurred = false; - env->CallIntoModule([&](napi_env env) { - result = cb(env, cbinfo_wrapper); - }, [&](napi_env env, v8::Local value) { - exceptionOccurred = true; - env->isolate->ThrowException(value); - }); + env->CallIntoModule([&](napi_env env) { result = cb(env, cbinfo_wrapper); }, + [&](napi_env env, v8::Local value) { + exceptionOccurred = true; + env->isolate->ThrowException(value); + }); if (!exceptionOccurred && (result != nullptr)) { this->SetReturnValue(result); @@ -324,8 +322,7 @@ class CallbackWrapperBase : public CallbackWrapper { CallbackBundle* _bundle; }; -class FunctionCallbackWrapper - : public CallbackWrapperBase { +class FunctionCallbackWrapper : public CallbackWrapperBase { public: static void Invoke(const v8::FunctionCallbackInfo& info) { FunctionCallbackWrapper cbwrapper(info); @@ -347,11 +344,12 @@ class FunctionCallbackWrapper return napi_clear_last_error(env); } - static inline napi_status NewTemplate(napi_env env, - napi_callback cb, - void* cb_data, - v8::Local* result, - v8::Local sig = v8::Local()) { + static inline napi_status NewTemplate( + napi_env env, + napi_callback cb, + void* cb_data, + v8::Local* result, + v8::Local sig = v8::Local()) { v8::Local cbdata = v8impl::CallbackBundle::New(env, cb, cb_data); RETURN_STATUS_IF_FALSE(env, !cbdata.IsEmpty(), napi_generic_failure); @@ -396,10 +394,7 @@ class FunctionCallbackWrapper } }; -enum WrapType { - retrievable, - anonymous -}; +enum WrapType { retrievable, anonymous }; template inline napi_status Wrap(napi_env env, @@ -419,9 +414,10 @@ inline napi_status Wrap(napi_env env, if (wrap_type == retrievable) { // If we've already wrapped this object, we error out. - RETURN_STATUS_IF_FALSE(env, + RETURN_STATUS_IF_FALSE( + env, !obj->HasPrivate(context, NAPI_PRIVATE_KEY(context, wrapper)) - .FromJust(), + .FromJust(), napi_invalid_arg); } else if (wrap_type == anonymous) { // If no finalize callback is provided, we error out. @@ -440,13 +436,21 @@ inline napi_status Wrap(napi_env env, *result = reinterpret_cast(reference); } else { // Create a self-deleting reference. - reference = v8impl::Reference::New(env, obj, 0, true, finalize_cb, - native_object, finalize_cb == nullptr ? nullptr : finalize_hint); + reference = v8impl::Reference::New( + env, + obj, + 0, + true, + finalize_cb, + native_object, + finalize_cb == nullptr ? nullptr : finalize_hint); } if (wrap_type == retrievable) { - CHECK(obj->SetPrivate(context, NAPI_PRIVATE_KEY(context, wrapper), - v8::External::New(env->isolate, reference)).FromJust()); + CHECK(obj->SetPrivate(context, + NAPI_PRIVATE_KEY(context, wrapper), + v8::External::New(env->isolate, reference)) + .FromJust()); } return GET_RETURN_STATUS(env); @@ -721,33 +725,33 @@ void Reference::SecondPassCallback( } // end of namespace v8impl // Warning: Keep in-sync with napi_status enum -static -const char* error_messages[] = {nullptr, - "Invalid argument", - "An object was expected", - "A string was expected", - "A string or symbol was expected", - "A function was expected", - "A number was expected", - "A boolean was expected", - "An array was expected", - "Unknown failure", - "An exception is pending", - "The async work item was cancelled", - "napi_escape_handle already called on scope", - "Invalid handle scope usage", - "Invalid callback scope usage", - "Thread-safe function queue is full", - "Thread-safe function handle is closing", - "A bigint was expected", - "A date was expected", - "An arraybuffer was expected", - "A detachable arraybuffer was expected", - "Main thread would deadlock", +static const char* error_messages[] = { + nullptr, + "Invalid argument", + "An object was expected", + "A string was expected", + "A string or symbol was expected", + "A function was expected", + "A number was expected", + "A boolean was expected", + "An array was expected", + "Unknown failure", + "An exception is pending", + "The async work item was cancelled", + "napi_escape_handle already called on scope", + "Invalid handle scope usage", + "Invalid callback scope usage", + "Thread-safe function queue is full", + "Thread-safe function handle is closing", + "A bigint was expected", + "A date was expected", + "An arraybuffer was expected", + "A detachable arraybuffer was expected", + "Main thread would deadlock", }; -napi_status napi_get_last_error_info(napi_env env, - const napi_extended_error_info** result) { +napi_status NAPI_CDECL napi_get_last_error_info( + napi_env env, const napi_extended_error_info** result) { CHECK_ENV(env); CHECK_ARG(env, result); @@ -757,28 +761,26 @@ napi_status napi_get_last_error_info(napi_env env, // change each time a message was added. const int last_status = napi_would_deadlock; - static_assert( - NAPI_ARRAYSIZE(error_messages) == last_status + 1, - "Count of error messages must match count of error values"); + static_assert(NAPI_ARRAYSIZE(error_messages) == last_status + 1, + "Count of error messages must match count of error values"); CHECK_LE(env->last_error.error_code, last_status); // Wait until someone requests the last error information to fetch the error // message string - env->last_error.error_message = - error_messages[env->last_error.error_code]; + env->last_error.error_message = error_messages[env->last_error.error_code]; if (env->last_error.error_code == napi_ok) { - napi_clear_last_error(env); + napi_clear_last_error(env); } *result = &(env->last_error); return napi_ok; } -napi_status napi_create_function(napi_env env, - const char* utf8name, - size_t length, - napi_callback cb, - void* callback_data, - napi_value* result) { +napi_status NAPI_CDECL napi_create_function(napi_env env, + const char* utf8name, + size_t length, + napi_callback cb, + void* callback_data, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); CHECK_ARG(env, cb); @@ -801,14 +803,15 @@ napi_status napi_create_function(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_define_class(napi_env env, - const char* utf8name, - size_t length, - napi_callback constructor, - void* callback_data, - size_t property_count, - const napi_property_descriptor* properties, - napi_value* result) { +napi_status NAPI_CDECL +napi_define_class(napi_env env, + const char* utf8name, + size_t length, + napi_callback constructor, + void* callback_data, + size_t property_count, + const napi_property_descriptor* properties, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); CHECK_ARG(env, constructor); @@ -860,12 +863,11 @@ napi_status napi_define_class(napi_env env, env, p->setter, p->data, &setter_tpl)); } - tpl->PrototypeTemplate()->SetAccessorProperty( - property_name, - getter_tpl, - setter_tpl, - attributes, - v8::AccessControl::DEFAULT); + tpl->PrototypeTemplate()->SetAccessorProperty(property_name, + getter_tpl, + setter_tpl, + attributes, + v8::AccessControl::DEFAULT); } else if (p->method != nullptr) { v8::Local t; STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate( @@ -893,34 +895,32 @@ napi_status napi_define_class(napi_env env, } } - STATUS_CALL(napi_define_properties(env, - *result, - static_descriptors.size(), - static_descriptors.data())); + STATUS_CALL(napi_define_properties( + env, *result, static_descriptors.size(), static_descriptors.data())); } return GET_RETURN_STATUS(env); } -napi_status napi_get_property_names(napi_env env, - napi_value object, - napi_value* result) { +napi_status NAPI_CDECL napi_get_property_names(napi_env env, + napi_value object, + napi_value* result) { return napi_get_all_property_names( env, object, napi_key_include_prototypes, - static_cast(napi_key_enumerable | - napi_key_skip_symbols), + static_cast(napi_key_enumerable | napi_key_skip_symbols), napi_key_numbers_to_strings, result); } -napi_status napi_get_all_property_names(napi_env env, - napi_value object, - napi_key_collection_mode key_mode, - napi_key_filter key_filter, - napi_key_conversion key_conversion, - napi_value* result) { +napi_status NAPI_CDECL +napi_get_all_property_names(napi_env env, + napi_value object, + napi_key_collection_mode key_mode, + napi_key_filter key_filter, + napi_key_conversion key_conversion, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); @@ -930,29 +930,24 @@ napi_status napi_get_all_property_names(napi_env env, v8::PropertyFilter filter = v8::PropertyFilter::ALL_PROPERTIES; if (key_filter & napi_key_writable) { - filter = - static_cast(filter | - v8::PropertyFilter::ONLY_WRITABLE); + filter = static_cast(filter | + v8::PropertyFilter::ONLY_WRITABLE); } if (key_filter & napi_key_enumerable) { - filter = - static_cast(filter | - v8::PropertyFilter::ONLY_ENUMERABLE); + filter = static_cast( + filter | v8::PropertyFilter::ONLY_ENUMERABLE); } if (key_filter & napi_key_configurable) { - filter = - static_cast(filter | - v8::PropertyFilter::ONLY_WRITABLE); + filter = static_cast( + filter | v8::PropertyFilter::ONLY_CONFIGURABLE); } if (key_filter & napi_key_skip_strings) { - filter = - static_cast(filter | - v8::PropertyFilter::SKIP_STRINGS); + filter = static_cast(filter | + v8::PropertyFilter::SKIP_STRINGS); } if (key_filter & napi_key_skip_symbols) { - filter = - static_cast(filter | - v8::PropertyFilter::SKIP_SYMBOLS); + filter = static_cast(filter | + v8::PropertyFilter::SKIP_SYMBOLS); } v8::KeyCollectionMode collection_mode; v8::KeyConversionMode conversion_mode; @@ -994,10 +989,10 @@ napi_status napi_get_all_property_names(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_set_property(napi_env env, - napi_value object, - napi_value key, - napi_value value) { +napi_status NAPI_CDECL napi_set_property(napi_env env, + napi_value object, + napi_value key, + napi_value value) { NAPI_PREAMBLE(env); CHECK_ARG(env, key); CHECK_ARG(env, value); @@ -1016,10 +1011,10 @@ napi_status napi_set_property(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_has_property(napi_env env, - napi_value object, - napi_value key, - bool* result) { +napi_status NAPI_CDECL napi_has_property(napi_env env, + napi_value object, + napi_value key, + bool* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); CHECK_ARG(env, key); @@ -1038,10 +1033,10 @@ napi_status napi_has_property(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_get_property(napi_env env, - napi_value object, - napi_value key, - napi_value* result) { +napi_status NAPI_CDECL napi_get_property(napi_env env, + napi_value object, + napi_value key, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, key); CHECK_ARG(env, result); @@ -1061,10 +1056,10 @@ napi_status napi_get_property(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_delete_property(napi_env env, - napi_value object, - napi_value key, - bool* result) { +napi_status NAPI_CDECL napi_delete_property(napi_env env, + napi_value object, + napi_value key, + bool* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, key); @@ -1076,16 +1071,15 @@ napi_status napi_delete_property(napi_env env, v8::Maybe delete_maybe = obj->Delete(context, k); CHECK_MAYBE_NOTHING(env, delete_maybe, napi_generic_failure); - if (result != nullptr) - *result = delete_maybe.FromMaybe(false); + if (result != nullptr) *result = delete_maybe.FromMaybe(false); return GET_RETURN_STATUS(env); } -napi_status napi_has_own_property(napi_env env, - napi_value object, - napi_value key, - bool* result) { +napi_status NAPI_CDECL napi_has_own_property(napi_env env, + napi_value object, + napi_value key, + bool* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, key); CHECK_ARG(env, result); @@ -1103,10 +1097,10 @@ napi_status napi_has_own_property(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_set_named_property(napi_env env, - napi_value object, - const char* utf8name, - napi_value value) { +napi_status NAPI_CDECL napi_set_named_property(napi_env env, + napi_value object, + const char* utf8name, + napi_value value) { NAPI_PREAMBLE(env); CHECK_ARG(env, value); @@ -1126,10 +1120,10 @@ napi_status napi_set_named_property(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_has_named_property(napi_env env, - napi_value object, - const char* utf8name, - bool* result) { +napi_status NAPI_CDECL napi_has_named_property(napi_env env, + napi_value object, + const char* utf8name, + bool* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); @@ -1149,10 +1143,10 @@ napi_status napi_has_named_property(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_get_named_property(napi_env env, - napi_value object, - const char* utf8name, - napi_value* result) { +napi_status NAPI_CDECL napi_get_named_property(napi_env env, + napi_value object, + const char* utf8name, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); @@ -1174,10 +1168,10 @@ napi_status napi_get_named_property(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_set_element(napi_env env, - napi_value object, - uint32_t index, - napi_value value) { +napi_status NAPI_CDECL napi_set_element(napi_env env, + napi_value object, + uint32_t index, + napi_value value) { NAPI_PREAMBLE(env); CHECK_ARG(env, value); @@ -1194,10 +1188,10 @@ napi_status napi_set_element(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_has_element(napi_env env, - napi_value object, - uint32_t index, - bool* result) { +napi_status NAPI_CDECL napi_has_element(napi_env env, + napi_value object, + uint32_t index, + bool* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); @@ -1214,10 +1208,10 @@ napi_status napi_has_element(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_get_element(napi_env env, - napi_value object, - uint32_t index, - napi_value* result) { +napi_status NAPI_CDECL napi_get_element(napi_env env, + napi_value object, + uint32_t index, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); @@ -1234,10 +1228,10 @@ napi_status napi_get_element(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_delete_element(napi_env env, - napi_value object, - uint32_t index, - bool* result) { +napi_status NAPI_CDECL napi_delete_element(napi_env env, + napi_value object, + uint32_t index, + bool* result) { NAPI_PREAMBLE(env); v8::Local context = env->context(); @@ -1247,16 +1241,16 @@ napi_status napi_delete_element(napi_env env, v8::Maybe delete_maybe = obj->Delete(context, index); CHECK_MAYBE_NOTHING(env, delete_maybe, napi_generic_failure); - if (result != nullptr) - *result = delete_maybe.FromMaybe(false); + if (result != nullptr) *result = delete_maybe.FromMaybe(false); return GET_RETURN_STATUS(env); } -napi_status napi_define_properties(napi_env env, - napi_value object, - size_t property_count, - const napi_property_descriptor* properties) { +napi_status NAPI_CDECL +napi_define_properties(napi_env env, + napi_value object, + size_t property_count, + const napi_property_descriptor* properties) { NAPI_PREAMBLE(env); if (property_count > 0) { CHECK_ARG(env, properties); @@ -1290,9 +1284,8 @@ napi_status napi_define_properties(napi_env env, descriptor.set_enumerable((p->attributes & napi_enumerable) != 0); descriptor.set_configurable((p->attributes & napi_configurable) != 0); - auto define_maybe = obj->DefineProperty(context, - property_name, - descriptor); + auto define_maybe = + obj->DefineProperty(context, property_name, descriptor); if (!define_maybe.FromMaybe(false)) { return napi_set_last_error(env, napi_invalid_arg); @@ -1306,9 +1299,8 @@ napi_status napi_define_properties(napi_env env, descriptor.set_enumerable((p->attributes & napi_enumerable) != 0); descriptor.set_configurable((p->attributes & napi_configurable) != 0); - auto define_maybe = obj->DefineProperty(context, - property_name, - descriptor); + auto define_maybe = + obj->DefineProperty(context, property_name, descriptor); if (!define_maybe.FromMaybe(false)) { return napi_set_last_error(env, napi_generic_failure); @@ -1333,8 +1325,7 @@ napi_status napi_define_properties(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_object_freeze(napi_env env, - napi_value object) { +napi_status NAPI_CDECL napi_object_freeze(napi_env env, napi_value object) { NAPI_PREAMBLE(env); v8::Local context = env->context(); @@ -1343,16 +1334,15 @@ napi_status napi_object_freeze(napi_env env, CHECK_TO_OBJECT(env, context, obj, object); v8::Maybe set_frozen = - obj->SetIntegrityLevel(context, v8::IntegrityLevel::kFrozen); + obj->SetIntegrityLevel(context, v8::IntegrityLevel::kFrozen); - RETURN_STATUS_IF_FALSE_WITH_PREAMBLE(env, - set_frozen.FromMaybe(false), napi_generic_failure); + RETURN_STATUS_IF_FALSE_WITH_PREAMBLE( + env, set_frozen.FromMaybe(false), napi_generic_failure); return GET_RETURN_STATUS(env); } -napi_status napi_object_seal(napi_env env, - napi_value object) { +napi_status NAPI_CDECL napi_object_seal(napi_env env, napi_value object) { NAPI_PREAMBLE(env); v8::Local context = env->context(); @@ -1361,15 +1351,17 @@ napi_status napi_object_seal(napi_env env, CHECK_TO_OBJECT(env, context, obj, object); v8::Maybe set_sealed = - obj->SetIntegrityLevel(context, v8::IntegrityLevel::kSealed); + obj->SetIntegrityLevel(context, v8::IntegrityLevel::kSealed); - RETURN_STATUS_IF_FALSE_WITH_PREAMBLE(env, - set_sealed.FromMaybe(false), napi_generic_failure); + RETURN_STATUS_IF_FALSE_WITH_PREAMBLE( + env, set_sealed.FromMaybe(false), napi_generic_failure); return GET_RETURN_STATUS(env); } -napi_status napi_is_array(napi_env env, napi_value value, bool* result) { +napi_status NAPI_CDECL napi_is_array(napi_env env, + napi_value value, + bool* result) { CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, result); @@ -1380,9 +1372,9 @@ napi_status napi_is_array(napi_env env, napi_value value, bool* result) { return napi_clear_last_error(env); } -napi_status napi_get_array_length(napi_env env, - napi_value value, - uint32_t* result) { +napi_status NAPI_CDECL napi_get_array_length(napi_env env, + napi_value value, + uint32_t* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, value); CHECK_ARG(env, result); @@ -1396,10 +1388,10 @@ napi_status napi_get_array_length(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_strict_equals(napi_env env, - napi_value lhs, - napi_value rhs, - bool* result) { +napi_status NAPI_CDECL napi_strict_equals(napi_env env, + napi_value lhs, + napi_value rhs, + bool* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, lhs); CHECK_ARG(env, rhs); @@ -1412,9 +1404,9 @@ napi_status napi_strict_equals(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_get_prototype(napi_env env, - napi_value object, - napi_value* result) { +napi_status NAPI_CDECL napi_get_prototype(napi_env env, + napi_value object, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); @@ -1428,49 +1420,45 @@ napi_status napi_get_prototype(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_create_object(napi_env env, napi_value* result) { +napi_status NAPI_CDECL napi_create_object(napi_env env, napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); - *result = v8impl::JsValueFromV8LocalValue( - v8::Object::New(env->isolate)); + *result = v8impl::JsValueFromV8LocalValue(v8::Object::New(env->isolate)); return napi_clear_last_error(env); } -napi_status napi_create_array(napi_env env, napi_value* result) { +napi_status NAPI_CDECL napi_create_array(napi_env env, napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); - *result = v8impl::JsValueFromV8LocalValue( - v8::Array::New(env->isolate)); + *result = v8impl::JsValueFromV8LocalValue(v8::Array::New(env->isolate)); return napi_clear_last_error(env); } -napi_status napi_create_array_with_length(napi_env env, - size_t length, - napi_value* result) { +napi_status NAPI_CDECL napi_create_array_with_length(napi_env env, + size_t length, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); - *result = v8impl::JsValueFromV8LocalValue( - v8::Array::New(env->isolate, length)); + *result = + v8impl::JsValueFromV8LocalValue(v8::Array::New(env->isolate, length)); return napi_clear_last_error(env); } -napi_status napi_create_string_latin1(napi_env env, - const char* str, - size_t length, - napi_value* result) { +napi_status NAPI_CDECL napi_create_string_latin1(napi_env env, + const char* str, + size_t length, + napi_value* result) { CHECK_ENV(env); - if (length > 0) - CHECK_ARG(env, str); + if (length > 0) CHECK_ARG(env, str); CHECK_ARG(env, result); - RETURN_STATUS_IF_FALSE(env, - (length == NAPI_AUTO_LENGTH) || length <= INT_MAX, - napi_invalid_arg); + RETURN_STATUS_IF_FALSE( + env, (length == NAPI_AUTO_LENGTH) || length <= INT_MAX, napi_invalid_arg); auto isolate = env->isolate; auto str_maybe = @@ -1484,40 +1472,33 @@ napi_status napi_create_string_latin1(napi_env env, return napi_clear_last_error(env); } -napi_status napi_create_string_utf8(napi_env env, - const char* str, - size_t length, - napi_value* result) { +napi_status NAPI_CDECL napi_create_string_utf8(napi_env env, + const char* str, + size_t length, + napi_value* result) { CHECK_ENV(env); - if (length > 0) - CHECK_ARG(env, str); + if (length > 0) CHECK_ARG(env, str); CHECK_ARG(env, result); - RETURN_STATUS_IF_FALSE(env, - (length == NAPI_AUTO_LENGTH) || length <= INT_MAX, - napi_invalid_arg); + RETURN_STATUS_IF_FALSE( + env, (length == NAPI_AUTO_LENGTH) || length <= INT_MAX, napi_invalid_arg); auto isolate = env->isolate; - auto str_maybe = - v8::String::NewFromUtf8(isolate, - str, - v8::NewStringType::kNormal, - static_cast(length)); + auto str_maybe = v8::String::NewFromUtf8( + isolate, str, v8::NewStringType::kNormal, static_cast(length)); CHECK_MAYBE_EMPTY(env, str_maybe, napi_generic_failure); *result = v8impl::JsValueFromV8LocalValue(str_maybe.ToLocalChecked()); return napi_clear_last_error(env); } -napi_status napi_create_string_utf16(napi_env env, - const char16_t* str, - size_t length, - napi_value* result) { +napi_status NAPI_CDECL napi_create_string_utf16(napi_env env, + const char16_t* str, + size_t length, + napi_value* result) { CHECK_ENV(env); - if (length > 0) - CHECK_ARG(env, str); + if (length > 0) CHECK_ARG(env, str); CHECK_ARG(env, result); - RETURN_STATUS_IF_FALSE(env, - (length == NAPI_AUTO_LENGTH) || length <= INT_MAX, - napi_invalid_arg); + RETURN_STATUS_IF_FALSE( + env, (length == NAPI_AUTO_LENGTH) || length <= INT_MAX, napi_invalid_arg); auto isolate = env->isolate; auto str_maybe = @@ -1531,33 +1512,33 @@ napi_status napi_create_string_utf16(napi_env env, return napi_clear_last_error(env); } -napi_status napi_create_double(napi_env env, - double value, - napi_value* result) { +napi_status NAPI_CDECL napi_create_double(napi_env env, + double value, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); - *result = v8impl::JsValueFromV8LocalValue( - v8::Number::New(env->isolate, value)); + *result = + v8impl::JsValueFromV8LocalValue(v8::Number::New(env->isolate, value)); return napi_clear_last_error(env); } -napi_status napi_create_int32(napi_env env, - int32_t value, - napi_value* result) { +napi_status NAPI_CDECL napi_create_int32(napi_env env, + int32_t value, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); - *result = v8impl::JsValueFromV8LocalValue( - v8::Integer::New(env->isolate, value)); + *result = + v8impl::JsValueFromV8LocalValue(v8::Integer::New(env->isolate, value)); return napi_clear_last_error(env); } -napi_status napi_create_uint32(napi_env env, - uint32_t value, - napi_value* result) { +napi_status NAPI_CDECL napi_create_uint32(napi_env env, + uint32_t value, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); @@ -1567,9 +1548,9 @@ napi_status napi_create_uint32(napi_env env, return napi_clear_last_error(env); } -napi_status napi_create_int64(napi_env env, - int64_t value, - napi_value* result) { +napi_status NAPI_CDECL napi_create_int64(napi_env env, + int64_t value, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); @@ -1579,21 +1560,21 @@ napi_status napi_create_int64(napi_env env, return napi_clear_last_error(env); } -napi_status napi_create_bigint_int64(napi_env env, - int64_t value, - napi_value* result) { +napi_status NAPI_CDECL napi_create_bigint_int64(napi_env env, + int64_t value, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); - *result = v8impl::JsValueFromV8LocalValue( - v8::BigInt::New(env->isolate, value)); + *result = + v8impl::JsValueFromV8LocalValue(v8::BigInt::New(env->isolate, value)); return napi_clear_last_error(env); } -napi_status napi_create_bigint_uint64(napi_env env, - uint64_t value, - napi_value* result) { +napi_status NAPI_CDECL napi_create_bigint_uint64(napi_env env, + uint64_t value, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); @@ -1603,22 +1584,21 @@ napi_status napi_create_bigint_uint64(napi_env env, return napi_clear_last_error(env); } -napi_status napi_create_bigint_words(napi_env env, - int sign_bit, - size_t word_count, - const uint64_t* words, - napi_value* result) { +napi_status NAPI_CDECL napi_create_bigint_words(napi_env env, + int sign_bit, + size_t word_count, + const uint64_t* words, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, words); CHECK_ARG(env, result); v8::Local context = env->context(); - RETURN_STATUS_IF_FALSE( - env, word_count <= INT_MAX, napi_invalid_arg); + RETURN_STATUS_IF_FALSE(env, word_count <= INT_MAX, napi_invalid_arg); - v8::MaybeLocal b = v8::BigInt::NewFromWords( - context, sign_bit, word_count, words); + v8::MaybeLocal b = + v8::BigInt::NewFromWords(context, sign_bit, word_count, words); CHECK_MAYBE_EMPTY_WITH_PREAMBLE(env, b, napi_generic_failure); @@ -1626,7 +1606,9 @@ napi_status napi_create_bigint_words(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_get_boolean(napi_env env, bool value, napi_value* result) { +napi_status NAPI_CDECL napi_get_boolean(napi_env env, + bool value, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); @@ -1641,9 +1623,9 @@ napi_status napi_get_boolean(napi_env env, bool value, napi_value* result) { return napi_clear_last_error(env); } -napi_status napi_create_symbol(napi_env env, - napi_value description, - napi_value* result) { +napi_status NAPI_CDECL napi_create_symbol(napi_env env, + napi_value description, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); @@ -1656,29 +1638,27 @@ napi_status napi_create_symbol(napi_env env, RETURN_STATUS_IF_FALSE(env, desc->IsString(), napi_string_expected); *result = v8impl::JsValueFromV8LocalValue( - v8::Symbol::New(isolate, desc.As())); + v8::Symbol::New(isolate, desc.As())); } return napi_clear_last_error(env); } -napi_status node_api_symbol_for(napi_env env, - const char* utf8description, - size_t length, - napi_value* result) { +napi_status NAPI_CDECL node_api_symbol_for(napi_env env, + const char* utf8description, + size_t length, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); napi_value js_description_string; - STATUS_CALL(napi_create_string_utf8(env, - utf8description, - length, - &js_description_string)); + STATUS_CALL(napi_create_string_utf8( + env, utf8description, length, &js_description_string)); v8::Local description_string = - v8impl::V8LocalValueFromJsValue(js_description_string).As(); + v8impl::V8LocalValueFromJsValue(js_description_string).As(); *result = v8impl::JsValueFromV8LocalValue( - v8::Symbol::For(env->isolate, description_string)); + v8::Symbol::For(env->isolate, description_string)); return napi_clear_last_error(env); } @@ -1703,17 +1683,16 @@ static inline napi_status set_error_code(napi_env env, CHECK_NEW_FROM_UTF8(env, code_key, "code"); v8::Maybe set_maybe = err_object->Set(context, code_key, code_value); - RETURN_STATUS_IF_FALSE(env, - set_maybe.FromMaybe(false), - napi_generic_failure); + RETURN_STATUS_IF_FALSE( + env, set_maybe.FromMaybe(false), napi_generic_failure); } return napi_ok; } -napi_status napi_create_error(napi_env env, - napi_value code, - napi_value msg, - napi_value* result) { +napi_status NAPI_CDECL napi_create_error(napi_env env, + napi_value code, + napi_value msg, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, msg); CHECK_ARG(env, result); @@ -1730,10 +1709,10 @@ napi_status napi_create_error(napi_env env, return napi_clear_last_error(env); } -napi_status napi_create_type_error(napi_env env, - napi_value code, - napi_value msg, - napi_value* result) { +napi_status NAPI_CDECL napi_create_type_error(napi_env env, + napi_value code, + napi_value msg, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, msg); CHECK_ARG(env, result); @@ -1750,10 +1729,10 @@ napi_status napi_create_type_error(napi_env env, return napi_clear_last_error(env); } -napi_status napi_create_range_error(napi_env env, - napi_value code, - napi_value msg, - napi_value* result) { +napi_status NAPI_CDECL napi_create_range_error(napi_env env, + napi_value code, + napi_value msg, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, msg); CHECK_ARG(env, result); @@ -1770,10 +1749,10 @@ napi_status napi_create_range_error(napi_env env, return napi_clear_last_error(env); } -napi_status node_api_create_syntax_error(napi_env env, - napi_value code, - napi_value msg, - napi_value* result) { +napi_status NAPI_CDECL node_api_create_syntax_error(napi_env env, + napi_value code, + napi_value msg, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, msg); CHECK_ARG(env, result); @@ -1790,9 +1769,9 @@ napi_status node_api_create_syntax_error(napi_env env, return napi_clear_last_error(env); } -napi_status napi_typeof(napi_env env, - napi_value value, - napi_valuetype* result) { +napi_status NAPI_CDECL napi_typeof(napi_env env, + napi_value value, + napi_valuetype* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -1833,28 +1812,26 @@ napi_status napi_typeof(napi_env env, return napi_clear_last_error(env); } -napi_status napi_get_undefined(napi_env env, napi_value* result) { +napi_status NAPI_CDECL napi_get_undefined(napi_env env, napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); - *result = v8impl::JsValueFromV8LocalValue( - v8::Undefined(env->isolate)); + *result = v8impl::JsValueFromV8LocalValue(v8::Undefined(env->isolate)); return napi_clear_last_error(env); } -napi_status napi_get_null(napi_env env, napi_value* result) { +napi_status NAPI_CDECL napi_get_null(napi_env env, napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); - *result = v8impl::JsValueFromV8LocalValue( - v8::Null(env->isolate)); + *result = v8impl::JsValueFromV8LocalValue(v8::Null(env->isolate)); return napi_clear_last_error(env); } // Gets all callback info in a single call. (Ugly, but faster.) -napi_status napi_get_cb_info( +napi_status NAPI_CDECL napi_get_cb_info( napi_env env, // [in] NAPI environment handle napi_callback_info cbinfo, // [in] Opaque callback-info handle size_t* argc, // [in-out] Specifies the size of the provided argv array @@ -1885,9 +1862,9 @@ napi_status napi_get_cb_info( return napi_clear_last_error(env); } -napi_status napi_get_new_target(napi_env env, - napi_callback_info cbinfo, - napi_value* result) { +napi_status NAPI_CDECL napi_get_new_target(napi_env env, + napi_callback_info cbinfo, + napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, cbinfo); CHECK_ARG(env, result); @@ -1899,12 +1876,12 @@ napi_status napi_get_new_target(napi_env env, return napi_clear_last_error(env); } -napi_status napi_call_function(napi_env env, - napi_value recv, - napi_value func, - size_t argc, - const napi_value* argv, - napi_value* result) { +napi_status NAPI_CDECL napi_call_function(napi_env env, + napi_value recv, + napi_value func, + size_t argc, + const napi_value* argv, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, recv); if (argc > 0) { @@ -1918,8 +1895,11 @@ napi_status napi_call_function(napi_env env, v8::Local v8func; CHECK_TO_FUNCTION(env, v8func, func); - auto maybe = v8func->Call(context, v8recv, argc, - reinterpret_cast*>(const_cast(argv))); + auto maybe = v8func->Call( + context, + v8recv, + argc, + reinterpret_cast*>(const_cast(argv))); if (try_catch.HasCaught()) { return napi_set_last_error(env, napi_pending_exception); @@ -1932,7 +1912,7 @@ napi_status napi_call_function(napi_env env, } } -napi_status napi_get_global(napi_env env, napi_value* result) { +napi_status NAPI_CDECL napi_get_global(napi_env env, napi_value* result) { CHECK_ENV(env); CHECK_ARG(env, result); @@ -1941,7 +1921,7 @@ napi_status napi_get_global(napi_env env, napi_value* result) { return napi_clear_last_error(env); } -napi_status napi_throw(napi_env env, napi_value error) { +napi_status NAPI_CDECL napi_throw(napi_env env, napi_value error) { NAPI_PREAMBLE(env); CHECK_ARG(env, error); @@ -1953,9 +1933,9 @@ napi_status napi_throw(napi_env env, napi_value error) { return napi_clear_last_error(env); } -napi_status napi_throw_error(napi_env env, - const char* code, - const char* msg) { +napi_status NAPI_CDECL napi_throw_error(napi_env env, + const char* code, + const char* msg) { NAPI_PREAMBLE(env); v8::Isolate* isolate = env->isolate; @@ -1971,9 +1951,9 @@ napi_status napi_throw_error(napi_env env, return napi_clear_last_error(env); } -napi_status napi_throw_type_error(napi_env env, - const char* code, - const char* msg) { +napi_status NAPI_CDECL napi_throw_type_error(napi_env env, + const char* code, + const char* msg) { NAPI_PREAMBLE(env); v8::Isolate* isolate = env->isolate; @@ -1989,9 +1969,9 @@ napi_status napi_throw_type_error(napi_env env, return napi_clear_last_error(env); } -napi_status napi_throw_range_error(napi_env env, - const char* code, - const char* msg) { +napi_status NAPI_CDECL napi_throw_range_error(napi_env env, + const char* code, + const char* msg) { NAPI_PREAMBLE(env); v8::Isolate* isolate = env->isolate; @@ -2007,9 +1987,9 @@ napi_status napi_throw_range_error(napi_env env, return napi_clear_last_error(env); } -napi_status node_api_throw_syntax_error(napi_env env, - const char* code, - const char* msg) { +napi_status NAPI_CDECL node_api_throw_syntax_error(napi_env env, + const char* code, + const char* msg) { NAPI_PREAMBLE(env); v8::Isolate* isolate = env->isolate; @@ -2025,7 +2005,9 @@ napi_status node_api_throw_syntax_error(napi_env env, return napi_clear_last_error(env); } -napi_status napi_is_error(napi_env env, napi_value value, bool* result) { +napi_status NAPI_CDECL napi_is_error(napi_env env, + napi_value value, + bool* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot // throw JS exceptions. CHECK_ENV(env); @@ -2038,9 +2020,9 @@ napi_status napi_is_error(napi_env env, napi_value value, bool* result) { return napi_clear_last_error(env); } -napi_status napi_get_value_double(napi_env env, - napi_value value, - double* result) { +napi_status NAPI_CDECL napi_get_value_double(napi_env env, + napi_value value, + double* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2055,9 +2037,9 @@ napi_status napi_get_value_double(napi_env env, return napi_clear_last_error(env); } -napi_status napi_get_value_int32(napi_env env, - napi_value value, - int32_t* result) { +napi_status NAPI_CDECL napi_get_value_int32(napi_env env, + napi_value value, + int32_t* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2079,9 +2061,9 @@ napi_status napi_get_value_int32(napi_env env, return napi_clear_last_error(env); } -napi_status napi_get_value_uint32(napi_env env, - napi_value value, - uint32_t* result) { +napi_status NAPI_CDECL napi_get_value_uint32(napi_env env, + napi_value value, + uint32_t* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2103,9 +2085,9 @@ napi_status napi_get_value_uint32(napi_env env, return napi_clear_last_error(env); } -napi_status napi_get_value_int64(napi_env env, - napi_value value, - int64_t* result) { +napi_status NAPI_CDECL napi_get_value_int64(napi_env env, + napi_value value, + int64_t* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2137,10 +2119,10 @@ napi_status napi_get_value_int64(napi_env env, return napi_clear_last_error(env); } -napi_status napi_get_value_bigint_int64(napi_env env, - napi_value value, - int64_t* result, - bool* lossless) { +napi_status NAPI_CDECL napi_get_value_bigint_int64(napi_env env, + napi_value value, + int64_t* result, + bool* lossless) { CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, result); @@ -2155,10 +2137,10 @@ napi_status napi_get_value_bigint_int64(napi_env env, return napi_clear_last_error(env); } -napi_status napi_get_value_bigint_uint64(napi_env env, - napi_value value, - uint64_t* result, - bool* lossless) { +napi_status NAPI_CDECL napi_get_value_bigint_uint64(napi_env env, + napi_value value, + uint64_t* result, + bool* lossless) { CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, result); @@ -2173,11 +2155,11 @@ napi_status napi_get_value_bigint_uint64(napi_env env, return napi_clear_last_error(env); } -napi_status napi_get_value_bigint_words(napi_env env, - napi_value value, - int* sign_bit, - size_t* word_count, - uint64_t* words) { +napi_status NAPI_CDECL napi_get_value_bigint_words(napi_env env, + napi_value value, + int* sign_bit, + size_t* word_count, + uint64_t* words) { CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, word_count); @@ -2203,7 +2185,9 @@ napi_status napi_get_value_bigint_words(napi_env env, return napi_clear_last_error(env); } -napi_status napi_get_value_bool(napi_env env, napi_value value, bool* result) { +napi_status NAPI_CDECL napi_get_value_bool(napi_env env, + napi_value value, + bool* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2226,11 +2210,8 @@ napi_status napi_get_value_bool(napi_env env, napi_value value, bool* result) { // If buf is NULL, this method returns the length of the string (in bytes) // via the result parameter. // The result argument is optional unless buf is NULL. -napi_status napi_get_value_string_latin1(napi_env env, - napi_value value, - char* buf, - size_t bufsize, - size_t* result) { +napi_status NAPI_CDECL napi_get_value_string_latin1( + napi_env env, napi_value value, char* buf, size_t bufsize, size_t* result) { CHECK_ENV(env); CHECK_ARG(env, value); @@ -2267,11 +2248,8 @@ napi_status napi_get_value_string_latin1(napi_env env, // If buf is NULL, this method returns the length of the string (in bytes) // via the result parameter. // The result argument is optional unless buf is NULL. -napi_status napi_get_value_string_utf8(napi_env env, - napi_value value, - char* buf, - size_t bufsize, - size_t* result) { +napi_status NAPI_CDECL napi_get_value_string_utf8( + napi_env env, napi_value value, char* buf, size_t bufsize, size_t* result) { CHECK_ENV(env); CHECK_ARG(env, value); @@ -2308,11 +2286,11 @@ napi_status napi_get_value_string_utf8(napi_env env, // If buf is NULL, this method returns the length of the string (in 2-byte // code units) via the result parameter. // The result argument is optional unless buf is NULL. -napi_status napi_get_value_string_utf16(napi_env env, - napi_value value, - char16_t* buf, - size_t bufsize, - size_t* result) { +napi_status NAPI_CDECL napi_get_value_string_utf16(napi_env env, + napi_value value, + char16_t* buf, + size_t bufsize, + size_t* result) { CHECK_ENV(env); CHECK_ARG(env, value); @@ -2341,35 +2319,34 @@ napi_status napi_get_value_string_utf16(napi_env env, return napi_clear_last_error(env); } -napi_status napi_coerce_to_bool(napi_env env, - napi_value value, - napi_value* result) { +napi_status NAPI_CDECL napi_coerce_to_bool(napi_env env, + napi_value value, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, value); CHECK_ARG(env, result); v8::Isolate* isolate = env->isolate; v8::Local b = - v8impl::V8LocalValueFromJsValue(value)->ToBoolean(isolate); + v8impl::V8LocalValueFromJsValue(value)->ToBoolean(isolate); *result = v8impl::JsValueFromV8LocalValue(b); return GET_RETURN_STATUS(env); } -#define GEN_COERCE_FUNCTION(UpperCaseName, MixedCaseName, LowerCaseName) \ - napi_status napi_coerce_to_##LowerCaseName(napi_env env, \ - napi_value value, \ - napi_value* result) { \ - NAPI_PREAMBLE(env); \ - CHECK_ARG(env, value); \ - CHECK_ARG(env, result); \ - \ - v8::Local context = env->context(); \ - v8::Local str; \ - \ - CHECK_TO_##UpperCaseName(env, context, str, value); \ - \ - *result = v8impl::JsValueFromV8LocalValue(str); \ - return GET_RETURN_STATUS(env); \ +#define GEN_COERCE_FUNCTION(UpperCaseName, MixedCaseName, LowerCaseName) \ + napi_status NAPI_CDECL napi_coerce_to_##LowerCaseName( \ + napi_env env, napi_value value, napi_value* result) { \ + NAPI_PREAMBLE(env); \ + CHECK_ARG(env, value); \ + CHECK_ARG(env, result); \ + \ + v8::Local context = env->context(); \ + v8::Local str; \ + \ + CHECK_TO_##UpperCaseName(env, context, str, value); \ + \ + *result = v8impl::JsValueFromV8LocalValue(str); \ + return GET_RETURN_STATUS(env); \ } GEN_COERCE_FUNCTION(NUMBER, Number, number) @@ -2378,33 +2355,33 @@ GEN_COERCE_FUNCTION(STRING, String, string) #undef GEN_COERCE_FUNCTION -napi_status napi_wrap(napi_env env, - napi_value js_object, - void* native_object, - napi_finalize finalize_cb, - void* finalize_hint, - napi_ref* result) { - return v8impl::Wrap(env, - js_object, - native_object, - finalize_cb, - finalize_hint, - result); -} - -napi_status napi_unwrap(napi_env env, napi_value obj, void** result) { +napi_status NAPI_CDECL napi_wrap(napi_env env, + napi_value js_object, + void* native_object, + napi_finalize finalize_cb, + void* finalize_hint, + napi_ref* result) { + return v8impl::Wrap( + env, js_object, native_object, finalize_cb, finalize_hint, result); +} + +napi_status NAPI_CDECL napi_unwrap(napi_env env, + napi_value obj, + void** result) { return v8impl::Unwrap(env, obj, result, v8impl::KeepWrap); } -napi_status napi_remove_wrap(napi_env env, napi_value obj, void** result) { +napi_status NAPI_CDECL napi_remove_wrap(napi_env env, + napi_value obj, + void** result) { return v8impl::Unwrap(env, obj, result, v8impl::RemoveWrap); } -napi_status napi_create_external(napi_env env, - void* data, - napi_finalize finalize_cb, - void* finalize_hint, - napi_value* result) { +napi_status NAPI_CDECL napi_create_external(napi_env env, + void* data, + napi_finalize finalize_cb, + void* finalize_hint, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); @@ -2414,22 +2391,17 @@ napi_status napi_create_external(napi_env env, // The Reference object will delete itself after invoking the finalizer // callback. - v8impl::Reference::New(env, - external_value, - 0, - true, - finalize_cb, - data, - finalize_hint); + v8impl::Reference::New( + env, external_value, 0, true, finalize_cb, data, finalize_hint); *result = v8impl::JsValueFromV8LocalValue(external_value); return napi_clear_last_error(env); } -NAPI_EXTERN napi_status napi_type_tag_object(napi_env env, - napi_value object, - const napi_type_tag* type_tag) { +napi_status NAPI_CDECL napi_type_tag_object(napi_env env, + napi_value object, + const napi_type_tag* type_tag) { NAPI_PREAMBLE(env); v8::Local context = env->context(); v8::Local obj; @@ -2439,30 +2411,25 @@ NAPI_EXTERN napi_status napi_type_tag_object(napi_env env, auto key = NAPI_PRIVATE_KEY(context, type_tag); auto maybe_has = obj->HasPrivate(context, key); CHECK_MAYBE_NOTHING_WITH_PREAMBLE(env, maybe_has, napi_generic_failure); - RETURN_STATUS_IF_FALSE_WITH_PREAMBLE(env, - !maybe_has.FromJust(), - napi_invalid_arg); - - auto tag = v8::BigInt::NewFromWords(context, - 0, - 2, - reinterpret_cast(type_tag)); + RETURN_STATUS_IF_FALSE_WITH_PREAMBLE( + env, !maybe_has.FromJust(), napi_invalid_arg); + + auto tag = v8::BigInt::NewFromWords( + context, 0, 2, reinterpret_cast(type_tag)); CHECK_MAYBE_EMPTY_WITH_PREAMBLE(env, tag, napi_generic_failure); auto maybe_set = obj->SetPrivate(context, key, tag.ToLocalChecked()); CHECK_MAYBE_NOTHING_WITH_PREAMBLE(env, maybe_set, napi_generic_failure); - RETURN_STATUS_IF_FALSE_WITH_PREAMBLE(env, - maybe_set.FromJust(), - napi_generic_failure); + RETURN_STATUS_IF_FALSE_WITH_PREAMBLE( + env, maybe_set.FromJust(), napi_generic_failure); return GET_RETURN_STATUS(env); } -NAPI_EXTERN napi_status -napi_check_object_type_tag(napi_env env, - napi_value object, - const napi_type_tag* type_tag, - bool* result) { +napi_status NAPI_CDECL napi_check_object_type_tag(napi_env env, + napi_value object, + const napi_type_tag* type_tag, + bool* result) { NAPI_PREAMBLE(env); v8::Local context = env->context(); v8::Local obj; @@ -2470,8 +2437,8 @@ napi_check_object_type_tag(napi_env env, CHECK_ARG_WITH_PREAMBLE(env, type_tag); CHECK_ARG_WITH_PREAMBLE(env, result); - auto maybe_value = obj->GetPrivate(context, - NAPI_PRIVATE_KEY(context, type_tag)); + auto maybe_value = + obj->GetPrivate(context, NAPI_PRIVATE_KEY(context, type_tag)); CHECK_MAYBE_EMPTY_WITH_PREAMBLE(env, maybe_value, napi_generic_failure); v8::Local val = maybe_value.ToLocalChecked(); @@ -2483,19 +2450,26 @@ napi_check_object_type_tag(napi_env env, int sign; int size = 2; napi_type_tag tag; - val.As()->ToWordsArray(&sign, - &size, - reinterpret_cast(&tag)); - if (size == 2 && sign == 0) - *result = (tag.lower == type_tag->lower && tag.upper == type_tag->upper); + val.As()->ToWordsArray( + &sign, &size, reinterpret_cast(&tag)); + if (sign == 0) { + if (size == 2) { + *result = + (tag.lower == type_tag->lower && tag.upper == type_tag->upper); + } else if (size == 1) { + *result = (tag.lower == type_tag->lower && 0 == type_tag->upper); + } else if (size == 0) { + *result = (0 == type_tag->lower && 0 == type_tag->upper); + } + } } return GET_RETURN_STATUS(env); } -napi_status napi_get_value_external(napi_env env, - napi_value value, - void** result) { +napi_status NAPI_CDECL napi_get_value_external(napi_env env, + napi_value value, + void** result) { CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, result); @@ -2510,10 +2484,10 @@ napi_status napi_get_value_external(napi_env env, } // Set initial_refcount to 0 for a weak reference, >0 for a strong reference. -napi_status napi_create_reference(napi_env env, - napi_value value, - uint32_t initial_refcount, - napi_ref* result) { +napi_status NAPI_CDECL napi_create_reference(napi_env env, + napi_value value, + uint32_t initial_refcount, + napi_ref* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2535,7 +2509,7 @@ napi_status napi_create_reference(napi_env env, // Deletes a reference. The referenced value is released, and may be GC'd unless // there are other references to it. -napi_status napi_delete_reference(napi_env env, napi_ref ref) { +napi_status NAPI_CDECL napi_delete_reference(napi_env env, napi_ref ref) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2551,7 +2525,9 @@ napi_status napi_delete_reference(napi_env env, napi_ref ref) { // refcount is >0, and the referenced object is effectively "pinned". // Calling this when the refcount is 0 and the object is unavailable // results in an error. -napi_status napi_reference_ref(napi_env env, napi_ref ref, uint32_t* result) { +napi_status NAPI_CDECL napi_reference_ref(napi_env env, + napi_ref ref, + uint32_t* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2571,7 +2547,9 @@ napi_status napi_reference_ref(napi_env env, napi_ref ref, uint32_t* result) { // the result is 0 the reference is now weak and the object may be GC'd at any // time if there are no other references. Calling this when the refcount is // already 0 results in an error. -napi_status napi_reference_unref(napi_env env, napi_ref ref, uint32_t* result) { +napi_status NAPI_CDECL napi_reference_unref(napi_env env, + napi_ref ref, + uint32_t* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2595,9 +2573,9 @@ napi_status napi_reference_unref(napi_env env, napi_ref ref, uint32_t* result) { // Attempts to get a referenced value. If the reference is weak, the value might // no longer be available, in that case the call is still successful but the // result is NULL. -napi_status napi_get_reference_value(napi_env env, - napi_ref ref, - napi_value* result) { +napi_status NAPI_CDECL napi_get_reference_value(napi_env env, + napi_ref ref, + napi_value* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2610,7 +2588,8 @@ napi_status napi_get_reference_value(napi_env env, return napi_clear_last_error(env); } -napi_status napi_open_handle_scope(napi_env env, napi_handle_scope* result) { +napi_status NAPI_CDECL napi_open_handle_scope(napi_env env, + napi_handle_scope* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2622,7 +2601,8 @@ napi_status napi_open_handle_scope(napi_env env, napi_handle_scope* result) { return napi_clear_last_error(env); } -napi_status napi_close_handle_scope(napi_env env, napi_handle_scope scope) { +napi_status NAPI_CDECL napi_close_handle_scope(napi_env env, + napi_handle_scope scope) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2636,9 +2616,8 @@ napi_status napi_close_handle_scope(napi_env env, napi_handle_scope scope) { return napi_clear_last_error(env); } -napi_status napi_open_escapable_handle_scope( - napi_env env, - napi_escapable_handle_scope* result) { +napi_status NAPI_CDECL napi_open_escapable_handle_scope( + napi_env env, napi_escapable_handle_scope* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2650,9 +2629,8 @@ napi_status napi_open_escapable_handle_scope( return napi_clear_last_error(env); } -napi_status napi_close_escapable_handle_scope( - napi_env env, - napi_escapable_handle_scope scope) { +napi_status NAPI_CDECL napi_close_escapable_handle_scope( + napi_env env, napi_escapable_handle_scope scope) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2666,10 +2644,10 @@ napi_status napi_close_escapable_handle_scope( return napi_clear_last_error(env); } -napi_status napi_escape_handle(napi_env env, - napi_escapable_handle_scope scope, - napi_value escapee, - napi_value* result) { +napi_status NAPI_CDECL napi_escape_handle(napi_env env, + napi_escapable_handle_scope scope, + napi_value escapee, + napi_value* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -2687,11 +2665,11 @@ napi_status napi_escape_handle(napi_env env, return napi_set_last_error(env, napi_escape_called_twice); } -napi_status napi_new_instance(napi_env env, - napi_value constructor, - size_t argc, - const napi_value* argv, - napi_value* result) { +napi_status NAPI_CDECL napi_new_instance(napi_env env, + napi_value constructor, + size_t argc, + const napi_value* argv, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, constructor); if (argc > 0) { @@ -2704,8 +2682,10 @@ napi_status napi_new_instance(napi_env env, v8::Local ctor; CHECK_TO_FUNCTION(env, ctor, constructor); - auto maybe = ctor->NewInstance(context, argc, - reinterpret_cast*>(const_cast(argv))); + auto maybe = ctor->NewInstance( + context, + argc, + reinterpret_cast*>(const_cast(argv))); CHECK_MAYBE_EMPTY(env, maybe, napi_pending_exception); @@ -2713,10 +2693,10 @@ napi_status napi_new_instance(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_instanceof(napi_env env, - napi_value object, - napi_value constructor, - bool* result) { +napi_status NAPI_CDECL napi_instanceof(napi_env env, + napi_value object, + napi_value constructor, + bool* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, object); CHECK_ARG(env, result); @@ -2729,9 +2709,8 @@ napi_status napi_instanceof(napi_env env, CHECK_TO_OBJECT(env, context, ctor, constructor); if (!ctor->IsFunction()) { - napi_throw_type_error(env, - "ERR_NAPI_CONS_FUNCTION", - "Constructor must be a function"); + napi_throw_type_error( + env, "ERR_NAPI_CONS_FUNCTION", "Constructor must be a function"); return napi_set_last_error(env, napi_function_expected); } @@ -2746,7 +2725,7 @@ napi_status napi_instanceof(napi_env env, } // Methods to support catching exceptions -napi_status napi_is_exception_pending(napi_env env, bool* result) { +napi_status NAPI_CDECL napi_is_exception_pending(napi_env env, bool* result) { // NAPI_PREAMBLE is not used here: this function must execute when there is a // pending exception. CHECK_ENV(env); @@ -2756,8 +2735,8 @@ napi_status napi_is_exception_pending(napi_env env, bool* result) { return napi_clear_last_error(env); } -napi_status napi_get_and_clear_last_exception(napi_env env, - napi_value* result) { +napi_status NAPI_CDECL napi_get_and_clear_last_exception(napi_env env, + napi_value* result) { // NAPI_PREAMBLE is not used here: this function must execute when there is a // pending exception. CHECK_ENV(env); @@ -2767,14 +2746,16 @@ napi_status napi_get_and_clear_last_exception(napi_env env, return napi_get_undefined(env, result); } else { *result = v8impl::JsValueFromV8LocalValue( - v8::Local::New(env->isolate, env->last_exception)); + v8::Local::New(env->isolate, env->last_exception)); env->last_exception.Reset(); } return napi_clear_last_error(env); } -napi_status napi_is_arraybuffer(napi_env env, napi_value value, bool* result) { +napi_status NAPI_CDECL napi_is_arraybuffer(napi_env env, + napi_value value, + bool* result) { CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, result); @@ -2785,10 +2766,10 @@ napi_status napi_is_arraybuffer(napi_env env, napi_value value, bool* result) { return napi_clear_last_error(env); } -napi_status napi_create_arraybuffer(napi_env env, - size_t byte_length, - void** data, - napi_value* result) { +napi_status NAPI_CDECL napi_create_arraybuffer(napi_env env, + size_t byte_length, + void** data, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); @@ -2806,37 +2787,27 @@ napi_status napi_create_arraybuffer(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_create_external_arraybuffer(napi_env env, - void* external_data, - size_t byte_length, - napi_finalize finalize_cb, - void* finalize_hint, - napi_value* result) { +napi_status NAPI_CDECL +napi_create_external_arraybuffer(napi_env env, + void* external_data, + size_t byte_length, + napi_finalize finalize_cb, + void* finalize_hint, + napi_value* result) { // The API contract here is that the cleanup function runs on the JS thread, // and is able to use napi_env. Implementing that properly is hard, so use the // `Buffer` variant for easier implementation. napi_value buffer; STATUS_CALL(napi_create_external_buffer( - env, - byte_length, - external_data, - finalize_cb, - finalize_hint, - &buffer)); + env, byte_length, external_data, finalize_cb, finalize_hint, &buffer)); return napi_get_typedarray_info( - env, - buffer, - nullptr, - nullptr, - nullptr, - result, - nullptr); + env, buffer, nullptr, nullptr, nullptr, result, nullptr); } -napi_status napi_get_arraybuffer_info(napi_env env, - napi_value arraybuffer, - void** data, - size_t* byte_length) { +napi_status NAPI_CDECL napi_get_arraybuffer_info(napi_env env, + napi_value arraybuffer, + void** data, + size_t* byte_length) { CHECK_ENV(env); CHECK_ARG(env, arraybuffer); @@ -2857,7 +2828,9 @@ napi_status napi_get_arraybuffer_info(napi_env env, return napi_clear_last_error(env); } -napi_status napi_is_typedarray(napi_env env, napi_value value, bool* result) { +napi_status NAPI_CDECL napi_is_typedarray(napi_env env, + napi_value value, + bool* result) { CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, result); @@ -2868,12 +2841,12 @@ napi_status napi_is_typedarray(napi_env env, napi_value value, bool* result) { return napi_clear_last_error(env); } -napi_status napi_create_typedarray(napi_env env, - napi_typedarray_type type, - size_t length, - napi_value arraybuffer, - size_t byte_offset, - napi_value* result) { +napi_status NAPI_CDECL napi_create_typedarray(napi_env env, + napi_typedarray_type type, + size_t length, + napi_value arraybuffer, + size_t byte_offset, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, arraybuffer); CHECK_ARG(env, result); @@ -2937,13 +2910,13 @@ napi_status napi_create_typedarray(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_get_typedarray_info(napi_env env, - napi_value typedarray, - napi_typedarray_type* type, - size_t* length, - void** data, - napi_value* arraybuffer, - size_t* byte_offset) { +napi_status NAPI_CDECL napi_get_typedarray_info(napi_env env, + napi_value typedarray, + napi_typedarray_type* type, + size_t* length, + void** data, + napi_value* arraybuffer, + size_t* byte_offset) { CHECK_ENV(env); CHECK_ARG(env, typedarray); @@ -3005,11 +2978,11 @@ napi_status napi_get_typedarray_info(napi_env env, return napi_clear_last_error(env); } -napi_status napi_create_dataview(napi_env env, - size_t byte_length, - napi_value arraybuffer, - size_t byte_offset, - napi_value* result) { +napi_status NAPI_CDECL napi_create_dataview(napi_env env, + size_t byte_length, + napi_value arraybuffer, + size_t byte_offset, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, arraybuffer); CHECK_ARG(env, result); @@ -3019,21 +2992,22 @@ napi_status napi_create_dataview(napi_env env, v8::Local buffer = value.As(); if (byte_length + byte_offset > buffer->ByteLength()) { - napi_throw_range_error( - env, - "ERR_NAPI_INVALID_DATAVIEW_ARGS", - "byte_offset + byte_length should be less than or " - "equal to the size in bytes of the array passed in"); + napi_throw_range_error(env, + "ERR_NAPI_INVALID_DATAVIEW_ARGS", + "byte_offset + byte_length should be less than or " + "equal to the size in bytes of the array passed in"); return napi_set_last_error(env, napi_pending_exception); } - v8::Local DataView = v8::DataView::New(buffer, byte_offset, - byte_length); + v8::Local DataView = + v8::DataView::New(buffer, byte_offset, byte_length); *result = v8impl::JsValueFromV8LocalValue(DataView); return GET_RETURN_STATUS(env); } -napi_status napi_is_dataview(napi_env env, napi_value value, bool* result) { +napi_status NAPI_CDECL napi_is_dataview(napi_env env, + napi_value value, + bool* result) { CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, result); @@ -3044,12 +3018,12 @@ napi_status napi_is_dataview(napi_env env, napi_value value, bool* result) { return napi_clear_last_error(env); } -napi_status napi_get_dataview_info(napi_env env, - napi_value dataview, - size_t* byte_length, - void** data, - napi_value* arraybuffer, - size_t* byte_offset) { +napi_status NAPI_CDECL napi_get_dataview_info(napi_env env, + napi_value dataview, + size_t* byte_length, + void** data, + napi_value* arraybuffer, + size_t* byte_offset) { CHECK_ENV(env); CHECK_ARG(env, dataview); @@ -3085,16 +3059,16 @@ napi_status napi_get_dataview_info(napi_env env, return napi_clear_last_error(env); } -napi_status napi_get_version(napi_env env, uint32_t* result) { +napi_status NAPI_CDECL napi_get_version(napi_env env, uint32_t* result) { CHECK_ENV(env); CHECK_ARG(env, result); *result = NAPI_VERSION; return napi_clear_last_error(env); } -napi_status napi_create_promise(napi_env env, - napi_deferred* deferred, - napi_value* promise) { +napi_status NAPI_CDECL napi_create_promise(napi_env env, + napi_deferred* deferred, + napi_value* promise) { NAPI_PREAMBLE(env); CHECK_ARG(env, deferred); CHECK_ARG(env, promise); @@ -3111,21 +3085,21 @@ napi_status napi_create_promise(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_resolve_deferred(napi_env env, - napi_deferred deferred, - napi_value resolution) { +napi_status NAPI_CDECL napi_resolve_deferred(napi_env env, + napi_deferred deferred, + napi_value resolution) { return v8impl::ConcludeDeferred(env, deferred, resolution, true); } -napi_status napi_reject_deferred(napi_env env, - napi_deferred deferred, - napi_value resolution) { +napi_status NAPI_CDECL napi_reject_deferred(napi_env env, + napi_deferred deferred, + napi_value resolution) { return v8impl::ConcludeDeferred(env, deferred, resolution, false); } -napi_status napi_is_promise(napi_env env, - napi_value value, - bool* is_promise) { +napi_status NAPI_CDECL napi_is_promise(napi_env env, + napi_value value, + bool* is_promise) { CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, is_promise); @@ -3135,9 +3109,9 @@ napi_status napi_is_promise(napi_env env, return napi_clear_last_error(env); } -napi_status napi_create_date(napi_env env, - double time, - napi_value* result) { +napi_status NAPI_CDECL napi_create_date(napi_env env, + double time, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); @@ -3149,9 +3123,9 @@ napi_status napi_create_date(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_is_date(napi_env env, - napi_value value, - bool* is_date) { +napi_status NAPI_CDECL napi_is_date(napi_env env, + napi_value value, + bool* is_date) { CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, is_date); @@ -3161,9 +3135,9 @@ napi_status napi_is_date(napi_env env, return napi_clear_last_error(env); } -napi_status napi_get_date_value(napi_env env, - napi_value value, - double* result) { +napi_status NAPI_CDECL napi_get_date_value(napi_env env, + napi_value value, + double* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, value); CHECK_ARG(env, result); @@ -3177,9 +3151,9 @@ napi_status napi_get_date_value(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_run_script(napi_env env, - napi_value script, - napi_value* result) { +napi_status NAPI_CDECL napi_run_script(napi_env env, + napi_value script, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, script); CHECK_ARG(env, result); @@ -3195,44 +3169,39 @@ napi_status napi_run_script(napi_env env, auto maybe_script = v8::Script::Compile(context, v8_script.As()); CHECK_MAYBE_EMPTY(env, maybe_script, napi_generic_failure); - auto script_result = - maybe_script.ToLocalChecked()->Run(context); + auto script_result = maybe_script.ToLocalChecked()->Run(context); CHECK_MAYBE_EMPTY(env, script_result, napi_generic_failure); *result = v8impl::JsValueFromV8LocalValue(script_result.ToLocalChecked()); return GET_RETURN_STATUS(env); } -napi_status napi_add_finalizer(napi_env env, - napi_value js_object, - void* native_object, - napi_finalize finalize_cb, - void* finalize_hint, - napi_ref* result) { - return v8impl::Wrap(env, - js_object, - native_object, - finalize_cb, - finalize_hint, - result); +napi_status NAPI_CDECL napi_add_finalizer(napi_env env, + napi_value js_object, + void* native_object, + napi_finalize finalize_cb, + void* finalize_hint, + napi_ref* result) { + return v8impl::Wrap( + env, js_object, native_object, finalize_cb, finalize_hint, result); } -napi_status napi_adjust_external_memory(napi_env env, - int64_t change_in_bytes, - int64_t* adjusted_value) { +napi_status NAPI_CDECL napi_adjust_external_memory(napi_env env, + int64_t change_in_bytes, + int64_t* adjusted_value) { CHECK_ENV(env); CHECK_ARG(env, adjusted_value); - *adjusted_value = env->isolate->AdjustAmountOfExternalAllocatedMemory( - change_in_bytes); + *adjusted_value = + env->isolate->AdjustAmountOfExternalAllocatedMemory(change_in_bytes); return napi_clear_last_error(env); } -napi_status napi_set_instance_data(napi_env env, - void* data, - napi_finalize finalize_cb, - void* finalize_hint) { +napi_status NAPI_CDECL napi_set_instance_data(napi_env env, + void* data, + napi_finalize finalize_cb, + void* finalize_hint) { CHECK_ENV(env); v8impl::RefBase* old_data = static_cast(env->instance_data); @@ -3242,18 +3211,13 @@ napi_status napi_set_instance_data(napi_env env, v8impl::RefBase::Delete(old_data); } - env->instance_data = v8impl::RefBase::New(env, - 0, - true, - finalize_cb, - data, - finalize_hint); + env->instance_data = + v8impl::RefBase::New(env, 0, true, finalize_cb, data, finalize_hint); return napi_clear_last_error(env); } -napi_status napi_get_instance_data(napi_env env, - void** data) { +napi_status NAPI_CDECL napi_get_instance_data(napi_env env, void** data) { CHECK_ENV(env); CHECK_ARG(env, data); @@ -3264,7 +3228,8 @@ napi_status napi_get_instance_data(napi_env env, return napi_clear_last_error(env); } -napi_status napi_detach_arraybuffer(napi_env env, napi_value arraybuffer) { +napi_status NAPI_CDECL napi_detach_arraybuffer(napi_env env, + napi_value arraybuffer) { CHECK_ENV(env); CHECK_ARG(env, arraybuffer); @@ -3281,9 +3246,9 @@ napi_status napi_detach_arraybuffer(napi_env env, napi_value arraybuffer) { return napi_clear_last_error(env); } -napi_status napi_is_detached_arraybuffer(napi_env env, - napi_value arraybuffer, - bool* result) { +napi_status NAPI_CDECL napi_is_detached_arraybuffer(napi_env env, + napi_value arraybuffer, + bool* result) { CHECK_ENV(env); CHECK_ARG(env, arraybuffer); CHECK_ARG(env, result); diff --git a/src/js_native_api_v8.h b/src/js_native_api_v8.h index bdf68505a7d7a3..ac6e3f187b3078 100644 --- a/src/js_native_api_v8.h +++ b/src/js_native_api_v8.h @@ -53,20 +53,11 @@ class RefTracker { struct napi_env__ { explicit napi_env__(v8::Local context) - : isolate(context->GetIsolate()), - context_persistent(isolate, context) { + : isolate(context->GetIsolate()), context_persistent(isolate, context) { CHECK_EQ(isolate, context->GetIsolate()); napi_clear_last_error(this); } - virtual ~napi_env__() { - // First we must finalize those references that have `napi_finalizer` - // callbacks. The reason is that addons might store other references which - // they delete during their `napi_finalizer` callbacks. If we deleted such - // references here first, they would be doubly deleted when the - // `napi_finalizer` deleted them subsequently. - v8impl::RefTracker::FinalizeAll(&finalizing_reflist); - v8impl::RefTracker::FinalizeAll(&reflist); - } + virtual ~napi_env__() { FinalizeAll(); } v8::Isolate* const isolate; // Shortcut for context()->GetIsolate() v8impl::Persistent context_persistent; @@ -75,7 +66,9 @@ struct napi_env__ { } inline void Ref() { refs++; } - inline void Unref() { if ( --refs == 0) delete this; } + inline void Unref() { + if (--refs == 0) delete this; + } virtual bool can_call_into_js() const { return true; } virtual v8::Maybe mark_arraybuffer_as_untransferable( @@ -83,8 +76,7 @@ struct napi_env__ { return v8::Just(true); } - static inline void - HandleThrow(napi_env env, v8::Local value) { + static inline void HandleThrow(napi_env env, v8::Local value) { env->isolate->ThrowException(value); } @@ -102,11 +94,21 @@ struct napi_env__ { } } + // This should be overridden to schedule the finalization to a properiate + // timing, like next tick of the event loop. virtual void CallFinalizer(napi_finalize cb, void* data, void* hint) { v8::HandleScope handle_scope(isolate); - CallIntoModule([&](napi_env env) { - cb(env, data, hint); - }); + CallIntoModule([&](napi_env env) { cb(env, data, hint); }); + } + + void FinalizeAll() { + // First we must finalize those references that have `napi_finalizer` + // callbacks. The reason is that addons might store other references which + // they delete during their `napi_finalizer` callbacks. If we deleted such + // references here first, they would be doubly deleted when the + // `napi_finalizer` deleted them subsequently. + v8impl::RefTracker::FinalizeAll(&finalizing_reflist); + v8impl::RefTracker::FinalizeAll(&reflist); } v8impl::Persistent last_exception; @@ -127,11 +129,9 @@ struct napi_env__ { // is exception safe versus calling Ref/Unref directly class EnvRefHolder { public: - explicit EnvRefHolder(napi_env env) : _env(env) { - _env->Ref(); - } + explicit EnvRefHolder(napi_env env) : _env(env) { _env->Ref(); } - explicit EnvRefHolder(const EnvRefHolder& other): _env(other.env()) { + explicit EnvRefHolder(const EnvRefHolder& other) : _env(other.env()) { _env->Ref(); } @@ -146,9 +146,7 @@ class EnvRefHolder { } } - napi_env env(void) const { - return _env; - } + napi_env env(void) const { return _env; } private: napi_env _env; @@ -164,21 +162,21 @@ static inline napi_status napi_clear_last_error(napi_env env) { return napi_ok; } -static inline -napi_status napi_set_last_error(napi_env env, napi_status error_code, - uint32_t engine_error_code = 0, - void* engine_reserved = nullptr) { +static inline napi_status napi_set_last_error(napi_env env, + napi_status error_code, + uint32_t engine_error_code = 0, + void* engine_reserved = nullptr) { env->last_error.error_code = error_code; env->last_error.engine_error_code = engine_error_code; env->last_error.engine_reserved = engine_reserved; return error_code; } -#define RETURN_STATUS_IF_FALSE(env, condition, status) \ - do { \ - if (!(condition)) { \ - return napi_set_last_error((env), (status)); \ - } \ +#define RETURN_STATUS_IF_FALSE(env, condition, status) \ + do { \ + if (!(condition)) { \ + return napi_set_last_error((env), (status)); \ + } \ } while (0) #define RETURN_STATUS_IF_FALSE_WITH_PREAMBLE(env, condition, status) \ @@ -189,84 +187,81 @@ napi_status napi_set_last_error(napi_env env, napi_status error_code, } \ } while (0) -#define CHECK_ENV(env) \ - do { \ - if ((env) == nullptr) { \ - return napi_invalid_arg; \ - } \ +#define CHECK_ENV(env) \ + do { \ + if ((env) == nullptr) { \ + return napi_invalid_arg; \ + } \ } while (0) -#define CHECK_ARG(env, arg) \ +#define CHECK_ARG(env, arg) \ RETURN_STATUS_IF_FALSE((env), ((arg) != nullptr), napi_invalid_arg) -#define CHECK_ARG_WITH_PREAMBLE(env, arg) \ - RETURN_STATUS_IF_FALSE_WITH_PREAMBLE((env), \ - ((arg) != nullptr), \ - napi_invalid_arg) +#define CHECK_ARG_WITH_PREAMBLE(env, arg) \ + RETURN_STATUS_IF_FALSE_WITH_PREAMBLE( \ + (env), ((arg) != nullptr), napi_invalid_arg) -#define CHECK_MAYBE_EMPTY(env, maybe, status) \ +#define CHECK_MAYBE_EMPTY(env, maybe, status) \ RETURN_STATUS_IF_FALSE((env), !((maybe).IsEmpty()), (status)) #define CHECK_MAYBE_EMPTY_WITH_PREAMBLE(env, maybe, status) \ RETURN_STATUS_IF_FALSE_WITH_PREAMBLE((env), !((maybe).IsEmpty()), (status)) // NAPI_PREAMBLE is not wrapped in do..while: try_catch must have function scope -#define NAPI_PREAMBLE(env) \ - CHECK_ENV((env)); \ - RETURN_STATUS_IF_FALSE((env), \ - (env)->last_exception.IsEmpty() && (env)->can_call_into_js(), \ - napi_pending_exception); \ - napi_clear_last_error((env)); \ +#define NAPI_PREAMBLE(env) \ + CHECK_ENV((env)); \ + RETURN_STATUS_IF_FALSE( \ + (env), \ + (env)->last_exception.IsEmpty() && (env)->can_call_into_js(), \ + napi_pending_exception); \ + napi_clear_last_error((env)); \ v8impl::TryCatch try_catch((env)) -#define CHECK_TO_TYPE(env, type, context, result, src, status) \ - do { \ - CHECK_ARG((env), (src)); \ - auto maybe = v8impl::V8LocalValueFromJsValue((src))->To##type((context)); \ - CHECK_MAYBE_EMPTY((env), maybe, (status)); \ - (result) = maybe.ToLocalChecked(); \ +#define CHECK_TO_TYPE(env, type, context, result, src, status) \ + do { \ + CHECK_ARG((env), (src)); \ + auto maybe = v8impl::V8LocalValueFromJsValue((src))->To##type((context)); \ + CHECK_MAYBE_EMPTY((env), maybe, (status)); \ + (result) = maybe.ToLocalChecked(); \ } while (0) -#define CHECK_TO_TYPE_WITH_PREAMBLE(env, type, context, result, src, status) \ - do { \ - CHECK_ARG_WITH_PREAMBLE((env), (src)); \ - auto maybe = v8impl::V8LocalValueFromJsValue((src))->To##type((context)); \ - CHECK_MAYBE_EMPTY_WITH_PREAMBLE((env), maybe, (status)); \ - (result) = maybe.ToLocalChecked(); \ +#define CHECK_TO_TYPE_WITH_PREAMBLE(env, type, context, result, src, status) \ + do { \ + CHECK_ARG_WITH_PREAMBLE((env), (src)); \ + auto maybe = v8impl::V8LocalValueFromJsValue((src))->To##type((context)); \ + CHECK_MAYBE_EMPTY_WITH_PREAMBLE((env), maybe, (status)); \ + (result) = maybe.ToLocalChecked(); \ } while (0) -#define CHECK_TO_FUNCTION(env, result, src) \ - do { \ - CHECK_ARG((env), (src)); \ - v8::Local v8value = v8impl::V8LocalValueFromJsValue((src)); \ - RETURN_STATUS_IF_FALSE((env), v8value->IsFunction(), napi_invalid_arg); \ - (result) = v8value.As(); \ +#define CHECK_TO_FUNCTION(env, result, src) \ + do { \ + CHECK_ARG((env), (src)); \ + v8::Local v8value = v8impl::V8LocalValueFromJsValue((src)); \ + RETURN_STATUS_IF_FALSE((env), v8value->IsFunction(), napi_invalid_arg); \ + (result) = v8value.As(); \ } while (0) -#define CHECK_TO_OBJECT(env, context, result, src) \ +#define CHECK_TO_OBJECT(env, context, result, src) \ CHECK_TO_TYPE((env), Object, (context), (result), (src), napi_object_expected) -#define CHECK_TO_OBJECT_WITH_PREAMBLE(env, context, result, src) \ - CHECK_TO_TYPE_WITH_PREAMBLE((env), \ - Object, \ - (context), \ - (result), \ - (src), \ - napi_object_expected) +#define CHECK_TO_OBJECT_WITH_PREAMBLE(env, context, result, src) \ + CHECK_TO_TYPE_WITH_PREAMBLE( \ + (env), Object, (context), (result), (src), napi_object_expected) -#define CHECK_TO_STRING(env, context, result, src) \ +#define CHECK_TO_STRING(env, context, result, src) \ CHECK_TO_TYPE((env), String, (context), (result), (src), napi_string_expected) -#define GET_RETURN_STATUS(env) \ - (!try_catch.HasCaught() ? napi_ok \ - : napi_set_last_error((env), napi_pending_exception)) +#define GET_RETURN_STATUS(env) \ + (!try_catch.HasCaught() \ + ? napi_ok \ + : napi_set_last_error((env), napi_pending_exception)) -#define THROW_RANGE_ERROR_IF_FALSE(env, condition, error, message) \ - do { \ - if (!(condition)) { \ - napi_throw_range_error((env), (error), (message)); \ - return napi_set_last_error((env), napi_generic_failure); \ - } \ +#define THROW_RANGE_ERROR_IF_FALSE(env, condition, error, message) \ + do { \ + if (!(condition)) { \ + napi_throw_range_error((env), (error), (message)); \ + return napi_set_last_error((env), napi_generic_failure); \ + } \ } while (0) #define RETURN_STATUS_IF_FALSE_WITH_PREAMBLE(env, condition, status) \ @@ -287,7 +282,7 @@ namespace v8impl { // This asserts v8::Local<> will always be implemented with a single // pointer field so that we can pass it around as a void*. static_assert(sizeof(v8::Local) == sizeof(napi_value), - "Cannot convert between v8::Local and napi_value"); + "Cannot convert between v8::Local and napi_value"); inline napi_value JsValueFromV8LocalValue(v8::Local local) { return reinterpret_cast(*local); @@ -305,10 +300,7 @@ class Finalizer { // Some Finalizers are run during shutdown when the napi_env is destroyed, // and some need to keep an explicit reference to the napi_env because they // are run independently. - enum EnvReferenceMode { - kNoEnvReference, - kKeepEnvReference - }; + enum EnvReferenceMode { kNoEnvReference, kKeepEnvReference }; protected: Finalizer(napi_env env, @@ -316,18 +308,16 @@ class Finalizer { void* finalize_data, void* finalize_hint, EnvReferenceMode refmode = kNoEnvReference) - : _env(env), - _finalize_callback(finalize_callback), - _finalize_data(finalize_data), - _finalize_hint(finalize_hint), - _has_env_reference(refmode == kKeepEnvReference) { - if (_has_env_reference) - _env->Ref(); + : _env(env), + _finalize_callback(finalize_callback), + _finalize_data(finalize_data), + _finalize_hint(finalize_hint), + _has_env_reference(refmode == kKeepEnvReference) { + if (_has_env_reference) _env->Ref(); } ~Finalizer() { - if (_has_env_reference) - _env->Unref(); + if (_has_env_reference) _env->Unref(); } public: @@ -340,9 +330,7 @@ class Finalizer { env, finalize_callback, finalize_data, finalize_hint, refmode); } - static void Delete(Finalizer* finalizer) { - delete finalizer; - } + static void Delete(Finalizer* finalizer) { delete finalizer; } protected: napi_env _env; @@ -355,8 +343,7 @@ class Finalizer { class TryCatch : public v8::TryCatch { public: - explicit TryCatch(napi_env env) - : v8::TryCatch(env->isolate), _env(env) {} + explicit TryCatch(napi_env env) : v8::TryCatch(env->isolate), _env(env) {} ~TryCatch() { if (HasCaught()) { @@ -444,10 +431,10 @@ class Reference : public RefBase { } // end of namespace v8impl -#define STATUS_CALL(call) \ - do { \ - napi_status status = (call); \ - if (status != napi_ok) return status; \ +#define STATUS_CALL(call) \ + do { \ + napi_status status = (call); \ + if (status != napi_ok) return status; \ } while (0) #endif // SRC_JS_NATIVE_API_V8_H_ diff --git a/src/js_native_api_v8_internals.h b/src/js_native_api_v8_internals.h index 8428390ef1eaf3..4f1b94d3d0c9d7 100644 --- a/src/js_native_api_v8_internals.h +++ b/src/js_native_api_v8_internals.h @@ -14,18 +14,18 @@ // included below, defines `NAPI_VERSION`. #include "node_version.h" + #include "env.h" -#include "node_internals.h" #include "gtest/gtest_prod.h" +#include "node_internals.h" -#define NAPI_ARRAYSIZE(array) \ - node::arraysize((array)) +#define NAPI_ARRAYSIZE(array) node::arraysize((array)) -#define NAPI_FIXED_ONE_BYTE_STRING(isolate, string) \ +#define NAPI_FIXED_ONE_BYTE_STRING(isolate, string) \ node::FIXED_ONE_BYTE_STRING((isolate), (string)) -#define NAPI_PRIVATE_KEY(context, suffix) \ - (node::Environment::GetCurrent((context))->napi_ ## suffix()) +#define NAPI_PRIVATE_KEY(context, suffix) \ + (node::Environment::GetCurrent((context))->napi_##suffix()) namespace v8impl { diff --git a/src/js_udp_wrap.cc b/src/js_udp_wrap.cc index c01289033e6764..3f02771ee1a907 100644 --- a/src/js_udp_wrap.cc +++ b/src/js_udp_wrap.cc @@ -5,6 +5,9 @@ #include +// TODO(RaisinTen): Replace all uses with empty `v8::Maybe`s. +#define JS_EXCEPTION_PENDING UV_EPROTO + namespace node { using errors::TryCatchScope; @@ -60,7 +63,7 @@ int JSUDPWrap::RecvStart() { Context::Scope context_scope(env()->context()); TryCatchScope try_catch(env()); Local value; - int32_t value_int = UV_EPROTO; + int32_t value_int = JS_EXCEPTION_PENDING; if (!MakeCallback(env()->onreadstart_string(), 0, nullptr).ToLocal(&value) || !value->Int32Value(env()->context()).To(&value_int)) { if (try_catch.HasCaught() && !try_catch.HasTerminated()) @@ -74,7 +77,7 @@ int JSUDPWrap::RecvStop() { Context::Scope context_scope(env()->context()); TryCatchScope try_catch(env()); Local value; - int32_t value_int = UV_EPROTO; + int32_t value_int = JS_EXCEPTION_PENDING; if (!MakeCallback(env()->onreadstop_string(), 0, nullptr).ToLocal(&value) || !value->Int32Value(env()->context()).To(&value_int)) { if (try_catch.HasCaught() && !try_catch.HasTerminated()) @@ -90,7 +93,7 @@ ssize_t JSUDPWrap::Send(uv_buf_t* bufs, Context::Scope context_scope(env()->context()); TryCatchScope try_catch(env()); Local value; - int64_t value_int = UV_EPROTO; + int64_t value_int = JS_EXCEPTION_PENDING; size_t total_len = 0; MaybeStackBuffer, 16> buffers(nbufs); @@ -100,10 +103,13 @@ ssize_t JSUDPWrap::Send(uv_buf_t* bufs, total_len += bufs[i].len; } + Local address; + if (!AddressToJS(env(), addr).ToLocal(&address)) return value_int; + Local args[] = { listener()->CreateSendWrap(total_len)->object(), Array::New(env()->isolate(), buffers.out(), nbufs), - AddressToJS(env(), addr) + address, }; if (!MakeCallback(env()->onwrite_string(), arraysize(args), args) diff --git a/src/json_utils.cc b/src/json_utils.cc index 96f178cf351d96..aa667ccc90471b 100644 --- a/src/json_utils.cc +++ b/src/json_utils.cc @@ -5,11 +5,11 @@ namespace node { std::string EscapeJsonChars(const std::string& str) { const std::string control_symbols[0x20] = { "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", - "\\u0006", "\\u0007", "\\b", "\\t", "\\n", "\\v", "\\f", "\\r", - "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", - "\\u0014", "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", - "\\u001a", "\\u001b", "\\u001c", "\\u001d", "\\u001e", "\\u001f" - }; + "\\u0006", "\\u0007", "\\b", "\\t", "\\n", "\\u000b", + "\\f", "\\r", "\\u000e", "\\u000f", "\\u0010", "\\u0011", + "\\u0012", "\\u0013", "\\u0014", "\\u0015", "\\u0016", "\\u0017", + "\\u0018", "\\u0019", "\\u001a", "\\u001b", "\\u001c", "\\u001d", + "\\u001e", "\\u001f"}; std::string ret; size_t last_pos = 0; diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index eb546c581a1652..1dddcb9f6c3560 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -68,6 +68,11 @@ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif // ifndef _GNU_SOURCE +#include +#if !defined(PR_SET_VMA) +#define PR_SET_VMA 0x53564d41 +#define PR_SET_VMA_ANON_NAME 0 +#endif #elif defined(__FreeBSD__) #include "uv.h" // uv_exepath #endif // defined(__linux__) @@ -312,6 +317,21 @@ class MemoryMapPointer { mem_ = nullptr; size_ = 0; } + static void SetName(void* mem, size_t size, const char* name) { +#if defined(__linux__) + // Available since the 5.17 kernel release and if the + // CONFIG_ANON_VMA_NAME option, we can set an identifier + // to an anonymous mapped region. However if the kernel + // option is not present or it s an older kernel, it is a no-op. + if (mem != MAP_FAILED && mem != nullptr) + prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, + reinterpret_cast(mem), + size, + reinterpret_cast(name)); +#else + (void)name; +#endif + } FORCE_INLINE ~MemoryMapPointer() { if (mem_ == nullptr) return; if (mem_ == MAP_FAILED) return; @@ -382,6 +402,7 @@ MoveTextRegionToLargePages(const text_region& r) { #endif if (mprotect(start, size, PROT_READ | PROT_EXEC) == -1) goto fail; + MemoryMapPointer::SetName(start, size, "nodejs Large Page"); // We need not `munmap(tmem, size)` on success. tmem.Reset(); diff --git a/src/module_wrap.cc b/src/module_wrap.cc index aeb0d2cb37313b..b4b70ec1afd3ea 100644 --- a/src/module_wrap.cc +++ b/src/module_wrap.cc @@ -429,13 +429,7 @@ void ModuleWrap::Evaluate(const FunctionCallbackInfo& args) { return; } - // If TLA is enabled, `result` is the evaluation's promise. - // Otherwise, `result` is the last evaluated value of the module, - // which could be a promise, which would result in it being incorrectly - // unwrapped when the higher level code awaits the evaluation. - if (env->isolate_data()->options()->experimental_top_level_await) { - args.GetReturnValue().Set(result.ToLocalChecked()); - } + args.GetReturnValue().Set(result.ToLocalChecked()); } void ModuleWrap::GetNamespace(const FunctionCallbackInfo& args) { diff --git a/src/node.cc b/src/node.cc index 0c4d6aa00492c9..5ac6ca75389d19 100644 --- a/src/node.cc +++ b/src/node.cc @@ -25,8 +25,8 @@ #include "debug_utils-inl.h" #include "env-inl.h" -#include "memory_tracker-inl.h" #include "histogram-inl.h" +#include "memory_tracker-inl.h" #include "node_binding.h" #include "node_errors.h" #include "node_internals.h" @@ -38,11 +38,11 @@ #include "node_process-inl.h" #include "node_report.h" #include "node_revert.h" +#include "node_snapshot_builder.h" #include "node_v8_platform-inl.h" #include "node_version.h" #if HAVE_OPENSSL -#include "allocated_buffer-inl.h" // Inlined functions needed by node_crypto.h #include "node_crypto.h" #include #endif @@ -345,11 +345,6 @@ MaybeLocal Environment::BootstrapInternalLoaders() { MaybeLocal Environment::BootstrapNode() { EscapableHandleScope scope(isolate_); - Local global = context()->Global(); - // TODO(joyeecheung): this can be done in JS land now. - global->Set(context(), FIXED_ONE_BYTE_STRING(isolate_, "global"), global) - .Check(); - // process, require, internalBinding, primordials std::vector> node_params = { process_string(), @@ -479,6 +474,14 @@ MaybeLocal StartExecution(Environment* env, StartExecutionCallback cb) { return scope.EscapeMaybe(cb(info)); } + // TODO(joyeecheung): move these conditions into JS land and let the + // deserialize main function take precedence. For workers, we need to + // move the pre-execution part into a different file that can be + // reused when dealing with user-defined main functions. + if (!env->snapshot_deserialize_main().IsEmpty()) { + return env->RunSnapshotDeserializeMain(); + } + if (env->worker_context() != nullptr) { return StartExecution(env, "internal/main/worker_thread"); } @@ -492,6 +495,10 @@ MaybeLocal StartExecution(Environment* env, StartExecutionCallback cb) { return StartExecution(env, "internal/main/inspect"); } + if (per_process::cli_options->build_snapshot) { + return StartExecution(env, "internal/main/mksnapshot"); + } + if (per_process::cli_options->print_help) { return StartExecution(env, "internal/main/print_help"); } @@ -510,6 +517,10 @@ MaybeLocal StartExecution(Environment* env, StartExecutionCallback cb) { return StartExecution(env, "internal/main/check_syntax"); } + if (env->options()->test_runner) { + return StartExecution(env, "internal/main/test_runner"); + } + if (!first_argv.empty() && first_argv != "-") { return StartExecution(env, "internal/main/run_main_module"); } @@ -1005,7 +1016,7 @@ InitializationResult InitializeOncePerProcess( // Initialized the enabled list for Debug() calls with system // environment variables. - per_process::enabled_debug_list.Parse(nullptr); + per_process::enabled_debug_list.Parse(); atexit(ResetStdio); @@ -1092,6 +1103,12 @@ InitializationResult InitializeOncePerProcess( // instead only the section that matches the value of conf_section_name // will be read from the default configuration file. const char* conf_file = nullptr; + // To allow for using the previous default where the 'openssl_conf' appname + // was used, the command line option 'openssl-shared-config' can be used to + // force the old behavior. + if (per_process::cli_options->openssl_shared_config) { + conf_section_name = "openssl_conf"; + } // Use OPENSSL_CONF environment variable is set. std::string env_openssl_conf; credentials::SafeGetenv("OPENSSL_CONF", &env_openssl_conf); @@ -1184,29 +1201,26 @@ int Start(int argc, char** argv) { return result.exit_code; } + if (per_process::cli_options->build_snapshot) { + fprintf(stderr, + "--build-snapshot is not yet supported in the node binary\n"); + return 1; + } + { - Isolate::CreateParams params; - const std::vector* indices = nullptr; - const EnvSerializeInfo* env_info = nullptr; bool use_node_snapshot = per_process::cli_options->per_isolate->node_snapshot; - if (use_node_snapshot) { - v8::StartupData* blob = NodeMainInstance::GetEmbeddedSnapshotBlob(); - if (blob != nullptr) { - params.snapshot_blob = blob; - indices = NodeMainInstance::GetIsolateDataIndices(); - env_info = NodeMainInstance::GetEnvSerializeInfo(); - } - } + const SnapshotData* snapshot_data = + use_node_snapshot ? SnapshotBuilder::GetEmbeddedSnapshotData() + : nullptr; uv_loop_configure(uv_default_loop(), UV_METRICS_IDLE_TIME); - NodeMainInstance main_instance(¶ms, + NodeMainInstance main_instance(snapshot_data, uv_default_loop(), per_process::v8_platform.Platform(), result.args, - result.exec_args, - indices); - result.exit_code = main_instance.Run(env_info); + result.exec_args); + result.exit_code = main_instance.Run(); } TearDownOncePerProcess(); diff --git a/src/node.h b/src/node.h index 966edcd041be1b..4be002ac18f7c3 100644 --- a/src/node.h +++ b/src/node.h @@ -32,6 +32,16 @@ # define NODE_EXTERN __attribute__((visibility("default"))) #endif +// Declarations annotated with NODE_EXTERN_PRIVATE do not form part of +// the public API. They are implementation details that can and will +// change between releases, even in semver patch releases. Do not use +// any such symbol in external code. +#ifdef NODE_SHARED_MODE +#define NODE_EXTERN_PRIVATE NODE_EXTERN +#else +#define NODE_EXTERN_PRIVATE +#endif + #ifdef BUILDING_NODE_EXTENSION # undef BUILDING_V8_SHARED # undef BUILDING_UV_SHARED @@ -824,11 +834,13 @@ extern "C" NODE_EXTERN void node_module_register(void* mod); #endif #if defined(_MSC_VER) -#pragma section(".CRT$XCU", read) #define NODE_C_CTOR(fn) \ NODE_CTOR_PREFIX void __cdecl fn(void); \ - __declspec(dllexport, allocate(".CRT$XCU")) \ - void (__cdecl*fn ## _)(void) = fn; \ + namespace { \ + struct fn##_ { \ + fn##_() { fn(); }; \ + } fn##_v_; \ + } \ NODE_CTOR_PREFIX void __cdecl fn(void) #else #define NODE_C_CTOR(fn) \ diff --git a/src/node_api.cc b/src/node_api.cc index 60fbe96b8ef272..08352b0a584b54 100644 --- a/src/node_api.cc +++ b/src/node_api.cc @@ -9,6 +9,7 @@ #include "node_buffer.h" #include "node_errors.h" #include "node_internals.h" +#include "node_process.h" #include "node_url.h" #include "threadpoolwork-inl.h" #include "tracing/traced_value.h" @@ -23,6 +24,11 @@ node_napi_env__::node_napi_env__(v8::Local context, CHECK_NOT_NULL(node_env()); } +node_napi_env__::~node_napi_env__() { + destructing = true; + FinalizeAll(); +} + bool node_napi_env__::can_call_into_js() const { return node_env()->can_call_into_js(); } @@ -35,19 +41,64 @@ v8::Maybe node_napi_env__::mark_arraybuffer_as_untransferable( } void node_napi_env__::CallFinalizer(napi_finalize cb, void* data, void* hint) { + CallFinalizer(cb, data, hint); +} + +template +void node_napi_env__::CallFinalizer(napi_finalize cb, void* data, void* hint) { + if (destructing) { + // we can not defer finalizers when the environment is being destructed. + v8::HandleScope handle_scope(isolate); + v8::Context::Scope context_scope(context()); + CallbackIntoModule( + [&](napi_env env) { cb(env, data, hint); }); + return; + } // we need to keep the env live until the finalizer has been run // EnvRefHolder provides an exception safe wrapper to Ref and then // Unref once the lambda is freed EnvRefHolder liveEnv(static_cast(this)); node_env()->SetImmediate( [=, liveEnv = std::move(liveEnv)](node::Environment* node_env) { - napi_env env = liveEnv.env(); + node_napi_env__* env = static_cast(liveEnv.env()); v8::HandleScope handle_scope(env->isolate); v8::Context::Scope context_scope(env->context()); - env->CallIntoModule([&](napi_env env) { cb(env, data, hint); }); + env->CallbackIntoModule( + [&](napi_env env) { cb(env, data, hint); }); }); } +void node_napi_env__::trigger_fatal_exception(v8::Local local_err) { + v8::Local local_msg = + v8::Exception::CreateMessage(isolate, local_err); + node::errors::TriggerUncaughtException(isolate, local_err, local_msg); +} + +// option enforceUncaughtExceptionPolicy is added for not breaking existing +// running n-api add-ons, and should be deprecated in the next major Node.js +// release. +template +void node_napi_env__::CallbackIntoModule(T&& call) { + CallIntoModule(call, [](napi_env env_, v8::Local local_err) { + node_napi_env__* env = static_cast(env_); + node::Environment* node_env = env->node_env(); + if (!node_env->options()->force_node_api_uncaught_exceptions_policy && + !enforceUncaughtExceptionPolicy) { + ProcessEmitDeprecationWarning( + node_env, + "Uncaught N-API callback exception detected, please run node " + "with option --force-node-api-uncaught-exceptions-policy=true" + "to handle those exceptions properly.", + "DEP0XXX"); + return; + } + // If there was an unhandled exception in the complete callback, + // report it as a fatal exception. (There is no JavaScript on the + // callstack that can possibly handle it.) + env->trigger_fatal_exception(local_err); + }); +} + namespace v8impl { namespace { @@ -60,22 +111,10 @@ class BufferFinalizer : private Finalizer { static_cast(hint)}; finalizer->_finalize_data = data; - node::Environment* node_env = - static_cast(finalizer->_env)->node_env(); - node_env->SetImmediate( - [finalizer = std::move(finalizer)](node::Environment* env) { - if (finalizer->_finalize_callback == nullptr) return; - - v8::HandleScope handle_scope(finalizer->_env->isolate); - v8::Context::Scope context_scope(finalizer->_env->context()); - - finalizer->_env->CallIntoModule([&](napi_env env) { - finalizer->_finalize_callback( - env, - finalizer->_finalize_data, - finalizer->_finalize_hint); - }); - }); + if (finalizer->_finalize_callback == nullptr) return; + finalizer->_env->CallFinalizer(finalizer->_finalize_callback, + finalizer->_finalize_data, + finalizer->_finalize_hint); } struct Deleter { @@ -85,8 +124,8 @@ class BufferFinalizer : private Finalizer { }; }; -static inline napi_env -NewEnv(v8::Local context, const std::string& module_filename) { +static inline napi_env NewEnv(v8::Local context, + const std::string& module_filename) { node_napi_env result; result = new node_napi_env__(context, module_filename); @@ -98,21 +137,12 @@ NewEnv(v8::Local context, const std::string& module_filename) { // once all N-API addons using this napi_env are unloaded. // For now, a per-Environment cleanup hook is the best we can do. result->node_env()->AddCleanupHook( - [](void* arg) { - static_cast(arg)->Unref(); - }, + [](void* arg) { static_cast(arg)->Unref(); }, static_cast(result)); return result; } -static inline void trigger_fatal_exception( - napi_env env, v8::Local local_err) { - v8::Local local_msg = - v8::Exception::CreateMessage(env->isolate, local_err); - node::errors::TriggerUncaughtException(env->isolate, local_err, local_msg); -} - class ThreadSafeFunction : public node::AsyncResource { public: ThreadSafeFunction(v8::Local func, @@ -124,20 +154,20 @@ class ThreadSafeFunction : public node::AsyncResource { node_napi_env env_, void* finalize_data_, napi_finalize finalize_cb_, - napi_threadsafe_function_call_js call_js_cb_): - AsyncResource(env_->isolate, - resource, - *v8::String::Utf8Value(env_->isolate, name)), - thread_count(thread_count_), - is_closing(false), - dispatch_state(kDispatchIdle), - context(context_), - max_queue_size(max_queue_size_), - env(env_), - finalize_data(finalize_data_), - finalize_cb(finalize_cb_), - call_js_cb(call_js_cb_ == nullptr ? CallJs : call_js_cb_), - handles_closing(false) { + napi_threadsafe_function_call_js call_js_cb_) + : AsyncResource(env_->isolate, + resource, + *v8::String::Utf8Value(env_->isolate, name)), + thread_count(thread_count_), + is_closing(false), + dispatch_state(kDispatchIdle), + context(context_), + max_queue_size(max_queue_size_), + env(env_), + finalize_data(finalize_data_), + finalize_cb(finalize_cb_), + call_js_cb(call_js_cb_ == nullptr ? CallJs : call_js_cb_), + handles_closing(false) { ref.Reset(env->isolate, func); node::AddEnvironmentCleanupHook(env->isolate, Cleanup, this); env->Ref(); @@ -153,9 +183,8 @@ class ThreadSafeFunction : public node::AsyncResource { napi_status Push(void* data, napi_threadsafe_function_call_mode mode) { node::Mutex::ScopedLock lock(this->mutex); - while (queue.size() >= max_queue_size && - max_queue_size > 0 && - !is_closing) { + while (queue.size() >= max_queue_size && max_queue_size > 0 && + !is_closing) { if (mode == napi_tsfn_nonblocking) { return napi_queue_full; } @@ -211,7 +240,7 @@ class ThreadSafeFunction : public node::AsyncResource { } void EmptyQueueAndDelete() { - for (; !queue.empty() ; queue.pop()) { + for (; !queue.empty(); queue.pop()) { call_js_cb(nullptr, nullptr, context, queue.front()); } delete this; @@ -262,9 +291,7 @@ class ThreadSafeFunction : public node::AsyncResource { return napi_ok; } - inline void* Context() { - return context; - } + inline void* Context() { return context; } protected: void Dispatch() { @@ -329,12 +356,11 @@ class ThreadSafeFunction : public node::AsyncResource { napi_value js_callback = nullptr; if (!ref.IsEmpty()) { v8::Local js_cb = - v8::Local::New(env->isolate, ref); + v8::Local::New(env->isolate, ref); js_callback = v8impl::JsValueFromV8LocalValue(js_cb); } - env->CallIntoModule([&](napi_env env) { - call_js_cb(env, js_callback, context, data); - }); + env->CallbackIntoModule( + [&](napi_env env) { call_js_cb(env, js_callback, context, data); }); } return has_more; @@ -344,9 +370,10 @@ class ThreadSafeFunction : public node::AsyncResource { v8::HandleScope scope(env->isolate); if (finalize_cb) { CallbackScope cb_scope(this); - env->CallIntoModule([&](napi_env env) { - finalize_cb(env, finalize_data, context); - }); + // Do not use CallFinalizer since it will defer the invocation, which + // would lead to accessing a deleted ThreadSafeFunction. + env->CallbackIntoModule( + [&](napi_env env) { finalize_cb(env, finalize_data, context); }); } EmptyQueueAndDelete(); } @@ -393,15 +420,16 @@ class ThreadSafeFunction : public node::AsyncResource { status = napi_get_undefined(env, &recv); if (status != napi_ok) { - napi_throw_error(env, "ERR_NAPI_TSFN_GET_UNDEFINED", - "Failed to retrieve undefined value"); + napi_throw_error(env, + "ERR_NAPI_TSFN_GET_UNDEFINED", + "Failed to retrieve undefined value"); return; } status = napi_call_function(env, recv, cb, 0, nullptr, nullptr); if (status != napi_ok && status != napi_pending_exception) { - napi_throw_error(env, "ERR_NAPI_TSFN_CALL_JS", - "Failed to call JS callback"); + napi_throw_error( + env, "ERR_NAPI_TSFN_CALL_JS", "Failed to call JS callback"); return; } } @@ -414,8 +442,8 @@ class ThreadSafeFunction : public node::AsyncResource { } static void Cleanup(void* data) { - reinterpret_cast(data) - ->CloseHandlesAndMaybeDelete(true); + reinterpret_cast(data)->CloseHandlesAndMaybeDelete( + true); } private: @@ -564,7 +592,10 @@ static void napi_module_register_cb(v8::Local exports, v8::Local module, v8::Local context, void* priv) { - napi_module_register_by_symbol(exports, module, context, + napi_module_register_by_symbol( + exports, + module, + context, static_cast(priv)->nm_register_func); } @@ -576,8 +607,7 @@ void napi_module_register_by_symbol(v8::Local exports, std::string module_filename = ""; if (init == nullptr) { CHECK_NOT_NULL(node_env); - node_env->ThrowError( - "Module has no declared entry point."); + node_env->ThrowError("Module has no declared entry point."); return; } @@ -620,29 +650,28 @@ void napi_module_register_by_symbol(v8::Local exports, namespace node { node_module napi_module_to_node_module(const napi_module* mod) { return { - -1, - mod->nm_flags | NM_F_DELETEME, - nullptr, - mod->nm_filename, - nullptr, - napi_module_register_cb, - mod->nm_modname, - const_cast(mod), // priv - nullptr, + -1, + mod->nm_flags | NM_F_DELETEME, + nullptr, + mod->nm_filename, + nullptr, + napi_module_register_cb, + mod->nm_modname, + const_cast(mod), // priv + nullptr, }; } } // namespace node // Registers a NAPI module. -void napi_module_register(napi_module* mod) { - node::node_module* nm = new node::node_module( - node::napi_module_to_node_module(mod)); +void NAPI_CDECL napi_module_register(napi_module* mod) { + node::node_module* nm = + new node::node_module(node::napi_module_to_node_module(mod)); node::node_module_register(nm); } -napi_status napi_add_env_cleanup_hook(napi_env env, - void (*fun)(void* arg), - void* arg) { +napi_status NAPI_CDECL napi_add_env_cleanup_hook( + napi_env env, void(NAPI_CDECL* fun)(void* arg), void* arg) { CHECK_ENV(env); CHECK_ARG(env, fun); @@ -651,9 +680,8 @@ napi_status napi_add_env_cleanup_hook(napi_env env, return napi_ok; } -napi_status napi_remove_env_cleanup_hook(napi_env env, - void (*fun)(void* arg), - void* arg) { +napi_status NAPI_CDECL napi_remove_env_cleanup_hook( + napi_env env, void(NAPI_CDECL* fun)(void* arg), void* arg) { CHECK_ENV(env); CHECK_ARG(env, fun); @@ -665,23 +693,20 @@ napi_status napi_remove_env_cleanup_hook(napi_env env, struct napi_async_cleanup_hook_handle__ { napi_async_cleanup_hook_handle__(napi_env env, napi_async_cleanup_hook user_hook, - void* user_data): - env_(env), - user_hook_(user_hook), - user_data_(user_data) { + void* user_data) + : env_(env), user_hook_(user_hook), user_data_(user_data) { handle_ = node::AddEnvironmentCleanupHook(env->isolate, Hook, this); env->Ref(); } ~napi_async_cleanup_hook_handle__() { node::RemoveEnvironmentCleanupHook(std::move(handle_)); - if (done_cb_ != nullptr) - done_cb_(done_data_); + if (done_cb_ != nullptr) done_cb_(done_data_); // Release the `env` handle asynchronously since it would be surprising if // a call to a N-API function would destroy `env` synchronously. - static_cast(env_)->node_env() - ->SetImmediate([env = env_](node::Environment*) { env->Unref(); }); + static_cast(env_)->node_env()->SetImmediate( + [env = env_](node::Environment*) { env->Unref(); }); } static void Hook(void* data, void (*done_cb)(void*), void* done_data) { @@ -700,74 +725,68 @@ struct napi_async_cleanup_hook_handle__ { void* done_data_ = nullptr; }; -napi_status napi_add_async_cleanup_hook( - napi_env env, - napi_async_cleanup_hook hook, - void* arg, - napi_async_cleanup_hook_handle* remove_handle) { +napi_status NAPI_CDECL +napi_add_async_cleanup_hook(napi_env env, + napi_async_cleanup_hook hook, + void* arg, + napi_async_cleanup_hook_handle* remove_handle) { CHECK_ENV(env); CHECK_ARG(env, hook); napi_async_cleanup_hook_handle__* handle = - new napi_async_cleanup_hook_handle__(env, hook, arg); + new napi_async_cleanup_hook_handle__(env, hook, arg); - if (remove_handle != nullptr) - *remove_handle = handle; + if (remove_handle != nullptr) *remove_handle = handle; return napi_clear_last_error(env); } -napi_status napi_remove_async_cleanup_hook( - napi_async_cleanup_hook_handle remove_handle) { - - if (remove_handle == nullptr) - return napi_invalid_arg; +napi_status NAPI_CDECL +napi_remove_async_cleanup_hook(napi_async_cleanup_hook_handle remove_handle) { + if (remove_handle == nullptr) return napi_invalid_arg; delete remove_handle; return napi_ok; } -napi_status napi_fatal_exception(napi_env env, napi_value err) { +napi_status NAPI_CDECL napi_fatal_exception(napi_env env, napi_value err) { NAPI_PREAMBLE(env); CHECK_ARG(env, err); v8::Local local_err = v8impl::V8LocalValueFromJsValue(err); - v8impl::trigger_fatal_exception(env, local_err); + static_cast(env)->trigger_fatal_exception(local_err); return napi_clear_last_error(env); } -NAPI_NO_RETURN void napi_fatal_error(const char* location, - size_t location_len, - const char* message, - size_t message_len) { +NAPI_NO_RETURN void NAPI_CDECL napi_fatal_error(const char* location, + size_t location_len, + const char* message, + size_t message_len) { std::string location_string; std::string message_string; if (location_len != NAPI_AUTO_LENGTH) { - location_string.assign( - const_cast(location), location_len); + location_string.assign(const_cast(location), location_len); } else { - location_string.assign( - const_cast(location), strlen(location)); + location_string.assign(const_cast(location), strlen(location)); } if (message_len != NAPI_AUTO_LENGTH) { - message_string.assign( - const_cast(message), message_len); + message_string.assign(const_cast(message), message_len); } else { - message_string.assign( - const_cast(message), strlen(message)); + message_string.assign(const_cast(message), strlen(message)); } node::FatalError(location_string.c_str(), message_string.c_str()); } -napi_status napi_open_callback_scope(napi_env env, - napi_value /** ignored */, - napi_async_context async_context_handle, - napi_callback_scope* result) { +napi_status NAPI_CDECL +napi_open_callback_scope(napi_env env, + napi_value /** ignored */, + napi_async_context async_context_handle, + napi_callback_scope* result) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -781,7 +800,8 @@ napi_status napi_open_callback_scope(napi_env env, return napi_clear_last_error(env); } -napi_status napi_close_callback_scope(napi_env env, napi_callback_scope scope) { +napi_status NAPI_CDECL napi_close_callback_scope(napi_env env, + napi_callback_scope scope) { // Omit NAPI_PREAMBLE and GET_RETURN_STATUS because V8 calls here cannot throw // JS exceptions. CHECK_ENV(env); @@ -796,10 +816,10 @@ napi_status napi_close_callback_scope(napi_env env, napi_callback_scope scope) { return napi_clear_last_error(env); } -napi_status napi_async_init(napi_env env, - napi_value async_resource, - napi_value async_resource_name, - napi_async_context* result) { +napi_status NAPI_CDECL napi_async_init(napi_env env, + napi_value async_resource, + napi_value async_resource_name, + napi_async_context* result) { CHECK_ENV(env); CHECK_ARG(env, async_resource_name); CHECK_ARG(env, result); @@ -831,8 +851,8 @@ napi_status napi_async_init(napi_env env, return napi_clear_last_error(env); } -napi_status napi_async_destroy(napi_env env, - napi_async_context async_context) { +napi_status NAPI_CDECL napi_async_destroy(napi_env env, + napi_async_context async_context) { CHECK_ENV(env); CHECK_ARG(env, async_context); @@ -844,13 +864,13 @@ napi_status napi_async_destroy(napi_env env, return napi_clear_last_error(env); } -napi_status napi_make_callback(napi_env env, - napi_async_context async_context, - napi_value recv, - napi_value func, - size_t argc, - const napi_value* argv, - napi_value* result) { +napi_status NAPI_CDECL napi_make_callback(napi_env env, + napi_async_context async_context, + napi_value recv, + napi_value func, + size_t argc, + const napi_value* argv, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, recv); if (argc > 0) { @@ -890,18 +910,18 @@ napi_status napi_make_callback(napi_env env, } else { CHECK_MAYBE_EMPTY(env, callback_result, napi_generic_failure); if (result != nullptr) { - *result = v8impl::JsValueFromV8LocalValue( - callback_result.ToLocalChecked()); + *result = + v8impl::JsValueFromV8LocalValue(callback_result.ToLocalChecked()); } } return GET_RETURN_STATUS(env); } -napi_status napi_create_buffer(napi_env env, - size_t length, - void** data, - napi_value* result) { +napi_status NAPI_CDECL napi_create_buffer(napi_env env, + size_t length, + void** data, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); @@ -920,28 +940,31 @@ napi_status napi_create_buffer(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_create_external_buffer(napi_env env, - size_t length, - void* data, - napi_finalize finalize_cb, - void* finalize_hint, - napi_value* result) { +napi_status NAPI_CDECL napi_create_external_buffer(napi_env env, + size_t length, + void* data, + napi_finalize finalize_cb, + void* finalize_hint, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); v8::Isolate* isolate = env->isolate; // The finalizer object will delete itself after invoking the callback. - v8impl::Finalizer* finalizer = v8impl::Finalizer::New( - env, finalize_cb, nullptr, finalize_hint, - v8impl::Finalizer::kKeepEnvReference); - - v8::MaybeLocal maybe = node::Buffer::New( - isolate, - static_cast(data), - length, - v8impl::BufferFinalizer::FinalizeBufferCallback, - finalizer); + v8impl::Finalizer* finalizer = + v8impl::Finalizer::New(env, + finalize_cb, + nullptr, + finalize_hint, + v8impl::Finalizer::kKeepEnvReference); + + v8::MaybeLocal maybe = + node::Buffer::New(isolate, + static_cast(data), + length, + v8impl::BufferFinalizer::FinalizeBufferCallback, + finalizer); CHECK_MAYBE_EMPTY(env, maybe, napi_generic_failure); @@ -953,17 +976,16 @@ napi_status napi_create_external_buffer(napi_env env, // coverity[leaked_storage] } -napi_status napi_create_buffer_copy(napi_env env, - size_t length, - const void* data, - void** result_data, - napi_value* result) { +napi_status NAPI_CDECL napi_create_buffer_copy(napi_env env, + size_t length, + const void* data, + void** result_data, + napi_value* result) { NAPI_PREAMBLE(env); CHECK_ARG(env, result); - v8::MaybeLocal maybe = node::Buffer::Copy( - env->isolate, - static_cast(data), length); + v8::MaybeLocal maybe = + node::Buffer::Copy(env->isolate, static_cast(data), length); CHECK_MAYBE_EMPTY(env, maybe, napi_generic_failure); @@ -977,7 +999,9 @@ napi_status napi_create_buffer_copy(napi_env env, return GET_RETURN_STATUS(env); } -napi_status napi_is_buffer(napi_env env, napi_value value, bool* result) { +napi_status NAPI_CDECL napi_is_buffer(napi_env env, + napi_value value, + bool* result) { CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, result); @@ -986,10 +1010,10 @@ napi_status napi_is_buffer(napi_env env, napi_value value, bool* result) { return napi_clear_last_error(env); } -napi_status napi_get_buffer_info(napi_env env, - napi_value value, - void** data, - size_t* length) { +napi_status NAPI_CDECL napi_get_buffer_info(napi_env env, + napi_value value, + void** data, + size_t* length) { CHECK_ENV(env); CHECK_ARG(env, value); @@ -1005,16 +1029,12 @@ napi_status napi_get_buffer_info(napi_env env, return napi_clear_last_error(env); } -napi_status napi_get_node_version(napi_env env, - const napi_node_version** result) { +napi_status NAPI_CDECL napi_get_node_version(napi_env env, + const napi_node_version** result) { CHECK_ENV(env); CHECK_ARG(env, result); static const napi_node_version version = { - NODE_MAJOR_VERSION, - NODE_MINOR_VERSION, - NODE_PATCH_VERSION, - NODE_RELEASE - }; + NODE_MAJOR_VERSION, NODE_MINOR_VERSION, NODE_PATCH_VERSION, NODE_RELEASE}; *result = &version; return napi_clear_last_error(env); } @@ -1044,15 +1064,15 @@ class Work : public node::AsyncResource, public node::ThreadPoolWork { napi_async_execute_callback execute, napi_async_complete_callback complete = nullptr, void* data = nullptr) - : AsyncResource(env->isolate, - async_resource, - *v8::String::Utf8Value(env->isolate, async_resource_name)), - ThreadPoolWork(env->node_env()), - _env(env), - _data(data), - _execute(execute), - _complete(complete) { - } + : AsyncResource( + env->isolate, + async_resource, + *v8::String::Utf8Value(env->isolate, async_resource_name)), + ThreadPoolWork(env->node_env()), + _env(env), + _data(data), + _execute(execute), + _complete(complete) {} ~Work() override = default; @@ -1063,21 +1083,16 @@ class Work : public node::AsyncResource, public node::ThreadPoolWork { napi_async_execute_callback execute, napi_async_complete_callback complete, void* data) { - return new Work(env, async_resource, async_resource_name, - execute, complete, data); + return new Work( + env, async_resource, async_resource_name, execute, complete, data); } - static void Delete(Work* work) { - delete work; - } + static void Delete(Work* work) { delete work; } - void DoThreadPoolWork() override { - _execute(_env, _data); - } + void DoThreadPoolWork() override { _execute(_env, _data); } void AfterThreadPoolWork(int status) override { - if (_complete == nullptr) - return; + if (_complete == nullptr) return; // Establish a handle scope here so that every callback doesn't have to. // Also it is needed for the exception-handling below. @@ -1085,13 +1100,8 @@ class Work : public node::AsyncResource, public node::ThreadPoolWork { CallbackScope callback_scope(this); - _env->CallIntoModule([&](napi_env env) { + _env->CallbackIntoModule([&](napi_env env) { _complete(env, ConvertUVErrorCode(status), _data); - }, [](napi_env env, v8::Local local_err) { - // If there was an unhandled exception in the complete callback, - // report it as a fatal exception. (There is no JavaScript on the - // callstack that can possibly handle it.) - v8impl::trigger_fatal_exception(env, local_err); }); // Note: Don't access `work` after this point because it was @@ -1108,22 +1118,23 @@ class Work : public node::AsyncResource, public node::ThreadPoolWork { } // end of namespace uvimpl } // end of anonymous namespace -#define CALL_UV(env, condition) \ - do { \ - int result = (condition); \ - napi_status status = uvimpl::ConvertUVErrorCode(result); \ - if (status != napi_ok) { \ - return napi_set_last_error(env, status, result); \ - } \ +#define CALL_UV(env, condition) \ + do { \ + int result = (condition); \ + napi_status status = uvimpl::ConvertUVErrorCode(result); \ + if (status != napi_ok) { \ + return napi_set_last_error(env, status, result); \ + } \ } while (0) -napi_status napi_create_async_work(napi_env env, - napi_value async_resource, - napi_value async_resource_name, - napi_async_execute_callback execute, - napi_async_complete_callback complete, - void* data, - napi_async_work* result) { +napi_status NAPI_CDECL +napi_create_async_work(napi_env env, + napi_value async_resource, + napi_value async_resource_name, + napi_async_execute_callback execute, + napi_async_complete_callback complete, + void* data, + napi_async_work* result) { CHECK_ENV(env); CHECK_ARG(env, execute); CHECK_ARG(env, result); @@ -1152,7 +1163,8 @@ napi_status napi_create_async_work(napi_env env, return napi_clear_last_error(env); } -napi_status napi_delete_async_work(napi_env env, napi_async_work work) { +napi_status NAPI_CDECL napi_delete_async_work(napi_env env, + napi_async_work work) { CHECK_ENV(env); CHECK_ARG(env, work); @@ -1161,14 +1173,15 @@ napi_status napi_delete_async_work(napi_env env, napi_async_work work) { return napi_clear_last_error(env); } -napi_status napi_get_uv_event_loop(napi_env env, uv_loop_t** loop) { +napi_status NAPI_CDECL napi_get_uv_event_loop(napi_env env, uv_loop_t** loop) { CHECK_ENV(env); CHECK_ARG(env, loop); *loop = reinterpret_cast(env)->node_env()->event_loop(); return napi_clear_last_error(env); } -napi_status napi_queue_async_work(napi_env env, napi_async_work work) { +napi_status NAPI_CDECL napi_queue_async_work(napi_env env, + napi_async_work work) { CHECK_ENV(env); CHECK_ARG(env, work); @@ -1182,7 +1195,8 @@ napi_status napi_queue_async_work(napi_env env, napi_async_work work) { return napi_clear_last_error(env); } -napi_status napi_cancel_async_work(napi_env env, napi_async_work work) { +napi_status NAPI_CDECL napi_cancel_async_work(napi_env env, + napi_async_work work) { CHECK_ENV(env); CHECK_ARG(env, work); @@ -1193,7 +1207,7 @@ napi_status napi_cancel_async_work(napi_env env, napi_async_work work) { return napi_clear_last_error(env); } -napi_status +napi_status NAPI_CDECL napi_create_threadsafe_function(napi_env env, napi_value func, napi_value async_resource, @@ -1256,9 +1270,8 @@ napi_create_threadsafe_function(napi_env env, return napi_set_last_error(env, status); } -napi_status -napi_get_threadsafe_function_context(napi_threadsafe_function func, - void** result) { +napi_status NAPI_CDECL napi_get_threadsafe_function_context( + napi_threadsafe_function func, void** result) { CHECK_NOT_NULL(func); CHECK_NOT_NULL(result); @@ -1266,7 +1279,7 @@ napi_get_threadsafe_function_context(napi_threadsafe_function func, return napi_ok; } -napi_status +napi_status NAPI_CDECL napi_call_threadsafe_function(napi_threadsafe_function func, void* data, napi_threadsafe_function_call_mode is_blocking) { @@ -1275,32 +1288,32 @@ napi_call_threadsafe_function(napi_threadsafe_function func, is_blocking); } -napi_status +napi_status NAPI_CDECL napi_acquire_threadsafe_function(napi_threadsafe_function func) { CHECK_NOT_NULL(func); return reinterpret_cast(func)->Acquire(); } -napi_status -napi_release_threadsafe_function(napi_threadsafe_function func, - napi_threadsafe_function_release_mode mode) { +napi_status NAPI_CDECL napi_release_threadsafe_function( + napi_threadsafe_function func, napi_threadsafe_function_release_mode mode) { CHECK_NOT_NULL(func); return reinterpret_cast(func)->Release(mode); } -napi_status +napi_status NAPI_CDECL napi_unref_threadsafe_function(napi_env env, napi_threadsafe_function func) { CHECK_NOT_NULL(func); return reinterpret_cast(func)->Unref(); } -napi_status +napi_status NAPI_CDECL napi_ref_threadsafe_function(napi_env env, napi_threadsafe_function func) { CHECK_NOT_NULL(func); return reinterpret_cast(func)->Ref(); } -napi_status node_api_get_module_file_name(napi_env env, const char** result) { +napi_status NAPI_CDECL node_api_get_module_file_name(napi_env env, + const char** result) { CHECK_ENV(env); CHECK_ARG(env, result); diff --git a/src/node_api.h b/src/node_api.h index 1772c67c15afb2..982b41cadf20ae 100644 --- a/src/node_api.h +++ b/src/node_api.h @@ -2,12 +2,12 @@ #define SRC_NODE_API_H_ #ifdef BUILDING_NODE_EXTENSION - #ifdef _WIN32 - // Building native module against node - #define NAPI_EXTERN __declspec(dllimport) - #elif defined(__wasm32__) - #define NAPI_EXTERN __attribute__((__import_module__("napi"))) - #endif +#ifdef _WIN32 +// Building native module against node +#define NAPI_EXTERN __declspec(dllimport) +#elif defined(__wasm32__) +#define NAPI_EXTERN __attribute__((__import_module__("napi"))) +#endif #endif #include "js_native_api.h" #include "node_api_types.h" @@ -15,21 +15,21 @@ struct uv_loop_s; // Forward declaration. #ifdef _WIN32 -# define NAPI_MODULE_EXPORT __declspec(dllexport) +#define NAPI_MODULE_EXPORT __declspec(dllexport) #else -# define NAPI_MODULE_EXPORT __attribute__((visibility("default"))) +#define NAPI_MODULE_EXPORT __attribute__((visibility("default"))) #endif #if defined(__GNUC__) -# define NAPI_NO_RETURN __attribute__((noreturn)) +#define NAPI_NO_RETURN __attribute__((noreturn)) #elif defined(_WIN32) -# define NAPI_NO_RETURN __declspec(noreturn) +#define NAPI_NO_RETURN __declspec(noreturn) #else -# define NAPI_NO_RETURN +#define NAPI_NO_RETURN #endif -typedef napi_value (*napi_addon_register_func)(napi_env env, - napi_value exports); +typedef napi_value(NAPI_CDECL* napi_addon_register_func)(napi_env env, + napi_value exports); typedef struct napi_module { int nm_version; @@ -41,36 +41,50 @@ typedef struct napi_module { void* reserved[4]; } napi_module; -#define NAPI_MODULE_VERSION 1 +#define NAPI_MODULE_VERSION 1 #if defined(_MSC_VER) +#if defined(__cplusplus) +#define NAPI_C_CTOR(fn) \ + static void NAPI_CDECL fn(void); \ + namespace { \ + struct fn##_ { \ + fn##_() { fn(); } \ + } fn##_v_; \ + } \ + static void NAPI_CDECL fn(void) +#else // !defined(__cplusplus) #pragma section(".CRT$XCU", read) -#define NAPI_C_CTOR(fn) \ - static void __cdecl fn(void); \ - __declspec(dllexport, allocate(".CRT$XCU")) void(__cdecl * fn##_)(void) = \ - fn; \ - static void __cdecl fn(void) +// The NAPI_C_CTOR macro defines a function fn that is called during CRT +// initialization. +// C does not support dynamic initialization of static variables and this code +// simulates C++ behavior. Exporting the function pointer prevents it from being +// optimized. See for details: +// https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-initialization?view=msvc-170 +#define NAPI_C_CTOR(fn) \ + static void NAPI_CDECL fn(void); \ + __declspec(dllexport, allocate(".CRT$XCU")) void(NAPI_CDECL * fn##_)(void) = \ + fn; \ + static void NAPI_CDECL fn(void) +#endif // defined(__cplusplus) #else -#define NAPI_C_CTOR(fn) \ - static void fn(void) __attribute__((constructor)); \ +#define NAPI_C_CTOR(fn) \ + static void fn(void) __attribute__((constructor)); \ static void fn(void) #endif -#define NAPI_MODULE_X(modname, regfunc, priv, flags) \ - EXTERN_C_START \ - static napi_module _module = \ - { \ - NAPI_MODULE_VERSION, \ - flags, \ - __FILE__, \ - regfunc, \ - #modname, \ - priv, \ - {0}, \ - }; \ - NAPI_C_CTOR(_register_ ## modname) { \ - napi_module_register(&_module); \ - } \ +#define NAPI_MODULE_X(modname, regfunc, priv, flags) \ + EXTERN_C_START \ + static napi_module _module = { \ + NAPI_MODULE_VERSION, \ + flags, \ + __FILE__, \ + regfunc, \ + #modname, \ + priv, \ + {0}, \ + }; \ + NAPI_C_CTOR(_register_##modname) { napi_module_register(&_module); } \ EXTERN_C_END #define NAPI_MODULE_INITIALIZER_X(base, version) \ @@ -88,123 +102,124 @@ typedef struct napi_module { } \ EXTERN_C_END #else -#define NAPI_MODULE(modname, regfunc) \ +#define NAPI_MODULE(modname, regfunc) \ NAPI_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage) #endif #define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v -#define NAPI_MODULE_INITIALIZER \ - NAPI_MODULE_INITIALIZER_X(NAPI_MODULE_INITIALIZER_BASE, \ - NAPI_MODULE_VERSION) +#define NAPI_MODULE_INITIALIZER \ + NAPI_MODULE_INITIALIZER_X(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION) -#define NAPI_MODULE_INIT() \ - EXTERN_C_START \ - NAPI_MODULE_EXPORT napi_value \ - NAPI_MODULE_INITIALIZER(napi_env env, napi_value exports); \ - EXTERN_C_END \ - NAPI_MODULE(NODE_GYP_MODULE_NAME, NAPI_MODULE_INITIALIZER) \ - napi_value NAPI_MODULE_INITIALIZER(napi_env env, \ - napi_value exports) +#define NAPI_MODULE_INIT() \ + EXTERN_C_START \ + NAPI_MODULE_EXPORT napi_value NAPI_MODULE_INITIALIZER(napi_env env, \ + napi_value exports); \ + EXTERN_C_END \ + NAPI_MODULE(NODE_GYP_MODULE_NAME, NAPI_MODULE_INITIALIZER) \ + napi_value NAPI_MODULE_INITIALIZER(napi_env env, napi_value exports) EXTERN_C_START -NAPI_EXTERN void napi_module_register(napi_module* mod); +NAPI_EXTERN void NAPI_CDECL napi_module_register(napi_module* mod); -NAPI_EXTERN NAPI_NO_RETURN void napi_fatal_error(const char* location, - size_t location_len, - const char* message, - size_t message_len); +NAPI_EXTERN NAPI_NO_RETURN void NAPI_CDECL +napi_fatal_error(const char* location, + size_t location_len, + const char* message, + size_t message_len); // Methods for custom handling of async operations -NAPI_EXTERN napi_status napi_async_init(napi_env env, - napi_value async_resource, - napi_value async_resource_name, - napi_async_context* result); - -NAPI_EXTERN napi_status napi_async_destroy(napi_env env, - napi_async_context async_context); - -NAPI_EXTERN napi_status napi_make_callback(napi_env env, - napi_async_context async_context, - napi_value recv, - napi_value func, - size_t argc, - const napi_value* argv, - napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_async_init(napi_env env, + napi_value async_resource, + napi_value async_resource_name, + napi_async_context* result); + +NAPI_EXTERN napi_status NAPI_CDECL +napi_async_destroy(napi_env env, napi_async_context async_context); + +NAPI_EXTERN napi_status NAPI_CDECL +napi_make_callback(napi_env env, + napi_async_context async_context, + napi_value recv, + napi_value func, + size_t argc, + const napi_value* argv, + napi_value* result); // Methods to provide node::Buffer functionality with napi types -NAPI_EXTERN napi_status napi_create_buffer(napi_env env, - size_t length, - void** data, - napi_value* result); -NAPI_EXTERN napi_status napi_create_external_buffer(napi_env env, - size_t length, - void* data, - napi_finalize finalize_cb, - void* finalize_hint, - napi_value* result); -NAPI_EXTERN napi_status napi_create_buffer_copy(napi_env env, - size_t length, - const void* data, - void** result_data, - napi_value* result); -NAPI_EXTERN napi_status napi_is_buffer(napi_env env, - napi_value value, - bool* result); -NAPI_EXTERN napi_status napi_get_buffer_info(napi_env env, - napi_value value, - void** data, - size_t* length); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_buffer(napi_env env, + size_t length, + void** data, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_create_external_buffer(napi_env env, + size_t length, + void* data, + napi_finalize finalize_cb, + void* finalize_hint, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_create_buffer_copy(napi_env env, + size_t length, + const void* data, + void** result_data, + napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_is_buffer(napi_env env, + napi_value value, + bool* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_buffer_info(napi_env env, + napi_value value, + void** data, + size_t* length); // Methods to manage simple async operations -NAPI_EXTERN -napi_status napi_create_async_work(napi_env env, - napi_value async_resource, - napi_value async_resource_name, - napi_async_execute_callback execute, - napi_async_complete_callback complete, - void* data, - napi_async_work* result); -NAPI_EXTERN napi_status napi_delete_async_work(napi_env env, - napi_async_work work); -NAPI_EXTERN napi_status napi_queue_async_work(napi_env env, - napi_async_work work); -NAPI_EXTERN napi_status napi_cancel_async_work(napi_env env, - napi_async_work work); +NAPI_EXTERN napi_status NAPI_CDECL +napi_create_async_work(napi_env env, + napi_value async_resource, + napi_value async_resource_name, + napi_async_execute_callback execute, + napi_async_complete_callback complete, + void* data, + napi_async_work* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_delete_async_work(napi_env env, + napi_async_work work); +NAPI_EXTERN napi_status NAPI_CDECL napi_queue_async_work(napi_env env, + napi_async_work work); +NAPI_EXTERN napi_status NAPI_CDECL napi_cancel_async_work(napi_env env, + napi_async_work work); // version management -NAPI_EXTERN -napi_status napi_get_node_version(napi_env env, - const napi_node_version** version); +NAPI_EXTERN napi_status NAPI_CDECL +napi_get_node_version(napi_env env, const napi_node_version** version); #if NAPI_VERSION >= 2 // Return the current libuv event loop for a given environment -NAPI_EXTERN napi_status napi_get_uv_event_loop(napi_env env, - struct uv_loop_s** loop); +NAPI_EXTERN napi_status NAPI_CDECL +napi_get_uv_event_loop(napi_env env, struct uv_loop_s** loop); #endif // NAPI_VERSION >= 2 #if NAPI_VERSION >= 3 -NAPI_EXTERN napi_status napi_fatal_exception(napi_env env, napi_value err); +NAPI_EXTERN napi_status NAPI_CDECL napi_fatal_exception(napi_env env, + napi_value err); -NAPI_EXTERN napi_status napi_add_env_cleanup_hook(napi_env env, - void (*fun)(void* arg), - void* arg); +NAPI_EXTERN napi_status NAPI_CDECL napi_add_env_cleanup_hook( + napi_env env, void(NAPI_CDECL* fun)(void* arg), void* arg); -NAPI_EXTERN napi_status napi_remove_env_cleanup_hook(napi_env env, - void (*fun)(void* arg), - void* arg); +NAPI_EXTERN napi_status NAPI_CDECL napi_remove_env_cleanup_hook( + napi_env env, void(NAPI_CDECL* fun)(void* arg), void* arg); -NAPI_EXTERN napi_status napi_open_callback_scope(napi_env env, - napi_value resource_object, - napi_async_context context, - napi_callback_scope* result); +NAPI_EXTERN napi_status NAPI_CDECL +napi_open_callback_scope(napi_env env, + napi_value resource_object, + napi_async_context context, + napi_callback_scope* result); -NAPI_EXTERN napi_status napi_close_callback_scope(napi_env env, - napi_callback_scope scope); +NAPI_EXTERN napi_status NAPI_CDECL +napi_close_callback_scope(napi_env env, napi_callback_scope scope); #endif // NAPI_VERSION >= 3 @@ -212,7 +227,7 @@ NAPI_EXTERN napi_status napi_close_callback_scope(napi_env env, #ifndef __wasm32__ // Calling into JS from other threads -NAPI_EXTERN napi_status +NAPI_EXTERN napi_status NAPI_CDECL napi_create_threadsafe_function(napi_env env, napi_value func, napi_value async_resource, @@ -225,26 +240,24 @@ napi_create_threadsafe_function(napi_env env, napi_threadsafe_function_call_js call_js_cb, napi_threadsafe_function* result); -NAPI_EXTERN napi_status -napi_get_threadsafe_function_context(napi_threadsafe_function func, - void** result); +NAPI_EXTERN napi_status NAPI_CDECL napi_get_threadsafe_function_context( + napi_threadsafe_function func, void** result); -NAPI_EXTERN napi_status +NAPI_EXTERN napi_status NAPI_CDECL napi_call_threadsafe_function(napi_threadsafe_function func, void* data, napi_threadsafe_function_call_mode is_blocking); -NAPI_EXTERN napi_status +NAPI_EXTERN napi_status NAPI_CDECL napi_acquire_threadsafe_function(napi_threadsafe_function func); -NAPI_EXTERN napi_status -napi_release_threadsafe_function(napi_threadsafe_function func, - napi_threadsafe_function_release_mode mode); +NAPI_EXTERN napi_status NAPI_CDECL napi_release_threadsafe_function( + napi_threadsafe_function func, napi_threadsafe_function_release_mode mode); -NAPI_EXTERN napi_status +NAPI_EXTERN napi_status NAPI_CDECL napi_unref_threadsafe_function(napi_env env, napi_threadsafe_function func); -NAPI_EXTERN napi_status +NAPI_EXTERN napi_status NAPI_CDECL napi_ref_threadsafe_function(napi_env env, napi_threadsafe_function func); #endif // __wasm32__ @@ -252,20 +265,20 @@ napi_ref_threadsafe_function(napi_env env, napi_threadsafe_function func); #if NAPI_VERSION >= 8 -NAPI_EXTERN napi_status napi_add_async_cleanup_hook( - napi_env env, - napi_async_cleanup_hook hook, - void* arg, - napi_async_cleanup_hook_handle* remove_handle); +NAPI_EXTERN napi_status NAPI_CDECL +napi_add_async_cleanup_hook(napi_env env, + napi_async_cleanup_hook hook, + void* arg, + napi_async_cleanup_hook_handle* remove_handle); -NAPI_EXTERN napi_status napi_remove_async_cleanup_hook( - napi_async_cleanup_hook_handle remove_handle); +NAPI_EXTERN napi_status NAPI_CDECL +napi_remove_async_cleanup_hook(napi_async_cleanup_hook_handle remove_handle); #endif // NAPI_VERSION >= 8 #ifdef NAPI_EXPERIMENTAL -NAPI_EXTERN napi_status +NAPI_EXTERN napi_status NAPI_CDECL node_api_get_module_file_name(napi_env env, const char** result); #endif // NAPI_EXPERIMENTAL diff --git a/src/node_api_internals.h b/src/node_api_internals.h index 318ada38083435..6478520fd55da6 100644 --- a/src/node_api_internals.h +++ b/src/node_api_internals.h @@ -11,11 +11,18 @@ struct node_napi_env__ : public napi_env__ { node_napi_env__(v8::Local context, const std::string& module_filename); + ~node_napi_env__(); bool can_call_into_js() const override; v8::Maybe mark_arraybuffer_as_untransferable( v8::Local ab) const override; void CallFinalizer(napi_finalize cb, void* data, void* hint) override; + template + void CallFinalizer(napi_finalize cb, void* data, void* hint); + + void trigger_fatal_exception(v8::Local local_err); + template + void CallbackIntoModule(T&& call); inline node::Environment* node_env() const { return node::Environment::GetCurrent(context()); @@ -23,6 +30,7 @@ struct node_napi_env__ : public napi_env__ { inline const char* GetFilename() const { return filename.c_str(); } std::string filename; + bool destructing = false; }; using node_napi_env = node_napi_env__*; diff --git a/src/node_api_types.h b/src/node_api_types.h index 58ffc61b3a5f51..4231994748a53e 100644 --- a/src/node_api_types.h +++ b/src/node_api_types.h @@ -22,16 +22,13 @@ typedef enum { } napi_threadsafe_function_call_mode; #endif // NAPI_VERSION >= 4 -typedef void (*napi_async_execute_callback)(napi_env env, - void* data); -typedef void (*napi_async_complete_callback)(napi_env env, - napi_status status, - void* data); +typedef void(NAPI_CDECL* napi_async_execute_callback)(napi_env env, void* data); +typedef void(NAPI_CDECL* napi_async_complete_callback)(napi_env env, + napi_status status, + void* data); #if NAPI_VERSION >= 4 -typedef void (*napi_threadsafe_function_call_js)(napi_env env, - napi_value js_callback, - void* context, - void* data); +typedef void(NAPI_CDECL* napi_threadsafe_function_call_js)( + napi_env env, napi_value js_callback, void* context, void* data); #endif // NAPI_VERSION >= 4 typedef struct { @@ -43,8 +40,8 @@ typedef struct { #if NAPI_VERSION >= 8 typedef struct napi_async_cleanup_hook_handle__* napi_async_cleanup_hook_handle; -typedef void (*napi_async_cleanup_hook)(napi_async_cleanup_hook_handle handle, - void* data); +typedef void(NAPI_CDECL* napi_async_cleanup_hook)( + napi_async_cleanup_hook_handle handle, void* data); #endif // NAPI_VERSION >= 8 #endif // SRC_NODE_API_TYPES_H_ diff --git a/src/node_binding.cc b/src/node_binding.cc index 050c5dff0ad5fc..29b9ccdaed8b10 100644 --- a/src/node_binding.cc +++ b/src/node_binding.cc @@ -59,6 +59,7 @@ V(js_udp_wrap) \ V(messaging) \ V(module_wrap) \ + V(mksnapshot) \ V(native_module) \ V(options) \ V(os) \ @@ -86,8 +87,8 @@ V(uv) \ V(v8) \ V(wasi) \ - V(worker) \ V(watchdog) \ + V(worker) \ V(zlib) #define NODE_BUILTIN_MODULES(V) \ diff --git a/src/node_buffer.cc b/src/node_buffer.cc index 215bd8003aabe1..aec97f15e2c809 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -20,7 +20,6 @@ // USE OR OTHER DEALINGS IN THE SOFTWARE. #include "node_buffer.h" -#include "allocated_buffer-inl.h" #include "node.h" #include "node_blob.h" #include "node_errors.h" @@ -498,12 +497,25 @@ MaybeLocal New(Environment* env, if (length > kMaxLength) { Isolate* isolate(env->isolate()); isolate->ThrowException(ERR_BUFFER_TOO_LARGE(isolate)); + free(data); return Local(); } } - auto free_callback = [](char* data, void* hint) { free(data); }; - return New(env, data, length, free_callback, nullptr); + EscapableHandleScope handle_scope(env->isolate()); + + auto free_callback = [](void* data, size_t length, void* deleter_data) { + free(data); + }; + std::unique_ptr bs = + v8::ArrayBuffer::NewBackingStore(data, length, free_callback, nullptr); + + Local ab = v8::ArrayBuffer::New(env->isolate(), std::move(bs)); + + Local obj; + if (Buffer::New(env, ab, 0, length).ToLocal(&obj)) + return handle_scope.Escape(obj); + return Local(); } namespace { diff --git a/src/node_constants.cc b/src/node_constants.cc index 38c8f2738b4bad..3269e3003acd4d 100644 --- a/src/node_constants.cc +++ b/src/node_constants.cc @@ -47,6 +47,16 @@ #include #endif +#if defined(_WIN32) +#include // _S_IREAD _S_IWRITE +#ifndef S_IRUSR +#define S_IRUSR _S_IREAD +#endif // S_IRUSR +#ifndef S_IWUSR +#define S_IWUSR _S_IWRITE +#endif // S_IWUSR +#endif + #include #include #include diff --git a/src/node_context_data.h b/src/node_context_data.h index 912e65b42707fa..42aae872e60a13 100644 --- a/src/node_context_data.h +++ b/src/node_context_data.h @@ -29,12 +29,18 @@ namespace node { #define NODE_BINDING_LIST_INDEX 36 #endif +#ifndef NODE_CONTEXT_ALLOW_CODE_GENERATION_FROM_STRINGS_INDEX +#define NODE_CONTEXT_ALLOW_CODE_GENERATION_FROM_STRINGS_INDEX 37 +#endif + enum ContextEmbedderIndex { kEnvironment = NODE_CONTEXT_EMBEDDER_DATA_INDEX, kSandboxObject = NODE_CONTEXT_SANDBOX_OBJECT_INDEX, kAllowWasmCodeGeneration = NODE_CONTEXT_ALLOW_WASM_CODE_GENERATION_INDEX, kContextTag = NODE_CONTEXT_TAG, - kBindingListIndex = NODE_BINDING_LIST_INDEX + kBindingListIndex = NODE_BINDING_LIST_INDEX, + kAllowCodeGenerationFromStrings = + NODE_CONTEXT_ALLOW_CODE_GENERATION_FROM_STRINGS_INDEX }; } // namespace node diff --git a/src/node_contextify.cc b/src/node_contextify.cc index 482c9a7b51dbf0..ca374d71695261 100644 --- a/src/node_contextify.cc +++ b/src/node_contextify.cc @@ -233,7 +233,11 @@ MaybeLocal ContextifyContext::CreateV8Context( ctx->Global()); Utf8Value name_val(env->isolate(), options.name); - ctx->AllowCodeGenerationFromStrings(options.allow_code_gen_strings->IsTrue()); + // Delegate the code generation validation to + // node::ModifyCodeGenerationFromStrings. + ctx->AllowCodeGenerationFromStrings(false); + ctx->SetEmbedderData(ContextEmbedderIndex::kAllowCodeGenerationFromStrings, + options.allow_code_gen_strings); ctx->SetEmbedderData(ContextEmbedderIndex::kAllowWasmCodeGeneration, options.allow_code_gen_wasm); @@ -671,7 +675,6 @@ void ContextifyScript::Init(Environment* env, Local target) { script_tmpl->SetClassName(class_name); env->SetProtoMethod(script_tmpl, "createCachedData", CreateCachedData); env->SetProtoMethod(script_tmpl, "runInContext", RunInContext); - env->SetProtoMethod(script_tmpl, "runInThisContext", RunInThisContext); Local context = env->context(); @@ -685,7 +688,6 @@ void ContextifyScript::RegisterExternalReferences( registry->Register(New); registry->Register(CreateCachedData); registry->Register(RunInContext); - registry->Register(RunInThisContext); } void ContextifyScript::New(const FunctionCallbackInfo& args) { @@ -740,11 +742,10 @@ void ContextifyScript::New(const FunctionCallbackInfo& args) { if (*TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED( TRACING_CATEGORY_NODE2(vm, script)) != 0) { Utf8Value fn(isolate, filename); - TRACE_EVENT_NESTABLE_ASYNC_BEGIN1( - TRACING_CATEGORY_NODE2(vm, script), - "ContextifyScript::New", - contextify_script, - "filename", TRACE_STR_COPY(*fn)); + TRACE_EVENT_BEGIN1(TRACING_CATEGORY_NODE2(vm, script), + "ContextifyScript::New", + "filename", + TRACE_STR_COPY(*fn)); } ScriptCompiler::CachedData* cached_data = nullptr; @@ -794,10 +795,8 @@ void ContextifyScript::New(const FunctionCallbackInfo& args) { no_abort_scope.Close(); if (!try_catch.HasTerminated()) try_catch.ReThrow(); - TRACE_EVENT_NESTABLE_ASYNC_END0( - TRACING_CATEGORY_NODE2(vm, script), - "ContextifyScript::New", - contextify_script); + TRACE_EVENT_END0(TRACING_CATEGORY_NODE2(vm, script), + "ContextifyScript::New"); return; } contextify_script->script_.Reset(isolate, v8_script.ToLocalChecked()); @@ -826,10 +825,7 @@ void ContextifyScript::New(const FunctionCallbackInfo& args) { env->cached_data_produced_string(), Boolean::New(isolate, cached_data_produced)).Check(); } - TRACE_EVENT_NESTABLE_ASYNC_END0( - TRACING_CATEGORY_NODE2(vm, script), - "ContextifyScript::New", - contextify_script); + TRACE_EVENT_END0(TRACING_CATEGORY_NODE2(vm, script), "ContextifyScript::New"); } bool ContextifyScript::InstanceOf(Environment* env, @@ -858,45 +854,6 @@ void ContextifyScript::CreateCachedData( } } -void ContextifyScript::RunInThisContext( - const FunctionCallbackInfo& args) { - Environment* env = Environment::GetCurrent(args); - - ContextifyScript* wrapped_script; - ASSIGN_OR_RETURN_UNWRAP(&wrapped_script, args.Holder()); - - TRACE_EVENT_NESTABLE_ASYNC_BEGIN0( - TRACING_CATEGORY_NODE2(vm, script), "RunInThisContext", wrapped_script); - - // TODO(addaleax): Use an options object or otherwise merge this with - // RunInContext(). - CHECK_EQ(args.Length(), 4); - - CHECK(args[0]->IsNumber()); - int64_t timeout = args[0]->IntegerValue(env->context()).FromJust(); - - CHECK(args[1]->IsBoolean()); - bool display_errors = args[1]->IsTrue(); - - CHECK(args[2]->IsBoolean()); - bool break_on_sigint = args[2]->IsTrue(); - - CHECK(args[3]->IsBoolean()); - bool break_on_first_line = args[3]->IsTrue(); - - // Do the eval within this context - EvalMachine(env, - timeout, - display_errors, - break_on_sigint, - break_on_first_line, - nullptr, // microtask_queue - args); - - TRACE_EVENT_NESTABLE_ASYNC_END0( - TRACING_CATEGORY_NODE2(vm, script), "RunInThisContext", wrapped_script); -} - void ContextifyScript::RunInContext(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); @@ -904,20 +861,28 @@ void ContextifyScript::RunInContext(const FunctionCallbackInfo& args) { ASSIGN_OR_RETURN_UNWRAP(&wrapped_script, args.Holder()); CHECK_EQ(args.Length(), 5); + CHECK(args[0]->IsObject() || args[0]->IsNull()); - CHECK(args[0]->IsObject()); - Local sandbox = args[0].As(); - // Get the context from the sandbox - ContextifyContext* contextify_context = - ContextifyContext::ContextFromContextifiedSandbox(env, sandbox); - CHECK_NOT_NULL(contextify_context); + Local context; + std::shared_ptr microtask_queue; - Local context = contextify_context->context(); - if (context.IsEmpty()) - return; + if (args[0]->IsObject()) { + Local sandbox = args[0].As(); + // Get the context from the sandbox + ContextifyContext* contextify_context = + ContextifyContext::ContextFromContextifiedSandbox(env, sandbox); + CHECK_NOT_NULL(contextify_context); + CHECK_EQ(contextify_context->env(), env); + + context = contextify_context->context(); + if (context.IsEmpty()) return; + + microtask_queue = contextify_context->microtask_queue(); + } else { + context = env->context(); + } - TRACE_EVENT_NESTABLE_ASYNC_BEGIN0( - TRACING_CATEGORY_NODE2(vm, script), "RunInContext", wrapped_script); + TRACE_EVENT0(TRACING_CATEGORY_NODE2(vm, script), "RunInContext"); CHECK(args[1]->IsNumber()); int64_t timeout = args[1]->IntegerValue(env->context()).FromJust(); @@ -933,16 +898,13 @@ void ContextifyScript::RunInContext(const FunctionCallbackInfo& args) { // Do the eval within the context Context::Scope context_scope(context); - EvalMachine(contextify_context->env(), + EvalMachine(env, timeout, display_errors, break_on_sigint, break_on_first_line, - contextify_context->microtask_queue(), + microtask_queue, args); - - TRACE_EVENT_NESTABLE_ASYNC_END0( - TRACING_CATEGORY_NODE2(vm, script), "RunInContext", wrapped_script); } bool ContextifyScript::EvalMachine(Environment* env, diff --git a/src/node_contextify.h b/src/node_contextify.h index c9ba78b8a5e185..d45b73b36e295d 100644 --- a/src/node_contextify.h +++ b/src/node_contextify.h @@ -148,9 +148,7 @@ class ContextifyScript : public BaseObject { static void RegisterExternalReferences(ExternalReferenceRegistry* registry); static void New(const v8::FunctionCallbackInfo& args); static bool InstanceOf(Environment* env, const v8::Local& args); - static void CreateCachedData( - const v8::FunctionCallbackInfo& args); - static void RunInThisContext(const v8::FunctionCallbackInfo& args); + static void CreateCachedData(const v8::FunctionCallbackInfo& args); static void RunInContext(const v8::FunctionCallbackInfo& args); static bool EvalMachine(Environment* env, const int64_t timeout, diff --git a/src/node_credentials.cc b/src/node_credentials.cc index fa3dfa48a3ceb2..511ea3b01408eb 100644 --- a/src/node_credentials.cc +++ b/src/node_credentials.cc @@ -34,22 +34,25 @@ bool linux_at_secure = false; namespace credentials { // Look up environment variable unless running as setuid root. -bool SafeGetenv(const char* key, std::string* text, Environment* env) { +bool SafeGetenv(const char* key, + std::string* text, + std::shared_ptr env_vars, + v8::Isolate* isolate) { #if !defined(__CloudABI__) && !defined(_WIN32) if (per_process::linux_at_secure || getuid() != geteuid() || getgid() != getegid()) goto fail; #endif - if (env != nullptr) { - HandleScope handle_scope(env->isolate()); - TryCatch ignore_errors(env->isolate()); - MaybeLocal maybe_value = env->env_vars()->Get( - env->isolate(), - String::NewFromUtf8(env->isolate(), key).ToLocalChecked()); + if (env_vars != nullptr) { + DCHECK_NOT_NULL(isolate); + HandleScope handle_scope(isolate); + TryCatch ignore_errors(isolate); + MaybeLocal maybe_value = env_vars->Get( + isolate, String::NewFromUtf8(isolate, key).ToLocalChecked()); Local value; if (!maybe_value.ToLocal(&value)) goto fail; - String::Utf8Value utf8_value(env->isolate(), value); + String::Utf8Value utf8_value(isolate, value); if (*utf8_value == nullptr) goto fail; *text = std::string(*utf8_value, utf8_value.length()); return true; @@ -86,7 +89,7 @@ static void SafeGetenv(const FunctionCallbackInfo& args) { Isolate* isolate = env->isolate(); Utf8Value strenvtag(isolate, args[0]); std::string text; - if (!SafeGetenv(*strenvtag, &text, env)) return; + if (!SafeGetenv(*strenvtag, &text, env->env_vars(), isolate)) return; Local result = ToV8Value(isolate->GetCurrentContext(), text).ToLocalChecked(); args.GetReturnValue().Set(result); diff --git a/src/node_errors.cc b/src/node_errors.cc index 3028892b0807e3..8c29dd854862c1 100644 --- a/src/node_errors.cc +++ b/src/node_errors.cc @@ -450,6 +450,38 @@ void OnFatalError(const char* location, const char* message) { ABORT(); } +v8::ModifyCodeGenerationFromStringsResult ModifyCodeGenerationFromStrings( + v8::Local context, + v8::Local source, + bool is_code_like) { + HandleScope scope(context->GetIsolate()); + + Environment* env = Environment::GetCurrent(context); + if (env->source_maps_enabled()) { + // We do not expect the maybe_cache_generated_source_map to throw any more + // exceptions. If it does, just ignore it. + errors::TryCatchScope try_catch(env); + Local maybe_cache_source_map = + env->maybe_cache_generated_source_map(); + Local argv[1] = {source}; + + MaybeLocal maybe_cached = maybe_cache_source_map->Call( + context, context->Global(), arraysize(argv), argv); + if (maybe_cached.IsEmpty()) { + DCHECK(try_catch.HasCaught()); + } + } + + Local allow_code_gen = context->GetEmbedderData( + ContextEmbedderIndex::kAllowCodeGenerationFromStrings); + bool codegen_allowed = + allow_code_gen->IsUndefined() || allow_code_gen->IsTrue(); + return { + codegen_allowed, + {}, + }; +} + namespace errors { TryCatchScope::~TryCatchScope() { @@ -832,6 +864,13 @@ static void SetSourceMapsEnabled(const FunctionCallbackInfo& args) { env->set_source_maps_enabled(args[0].As()->Value()); } +static void SetMaybeCacheGeneratedSourceMap( + const FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + CHECK(args[0]->IsFunction()); + env->set_maybe_cache_generated_source_map(args[0].As()); +} + static void SetEnhanceStackForFatalException( const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); @@ -866,6 +905,7 @@ static void TriggerUncaughtException(const FunctionCallbackInfo& args) { void RegisterExternalReferences(ExternalReferenceRegistry* registry) { registry->Register(SetPrepareStackTraceCallback); registry->Register(SetSourceMapsEnabled); + registry->Register(SetMaybeCacheGeneratedSourceMap); registry->Register(SetEnhanceStackForFatalException); registry->Register(NoSideEffectsToString); registry->Register(TriggerUncaughtException); @@ -879,6 +919,9 @@ void Initialize(Local target, env->SetMethod( target, "setPrepareStackTraceCallback", SetPrepareStackTraceCallback); env->SetMethod(target, "setSourceMapsEnabled", SetSourceMapsEnabled); + env->SetMethod(target, + "setMaybeCacheGeneratedSourceMap", + SetMaybeCacheGeneratedSourceMap); env->SetMethod(target, "setEnhanceStackForFatalException", SetEnhanceStackForFatalException); diff --git a/src/node_errors.h b/src/node_errors.h index f540b3e2a37de4..f6a60a1daa4040 100644 --- a/src/node_errors.h +++ b/src/node_errors.h @@ -270,6 +270,11 @@ void DecorateErrorStack(Environment* env, const errors::TryCatchScope& try_catch); } // namespace errors +v8::ModifyCodeGenerationFromStringsResult ModifyCodeGenerationFromStrings( + v8::Local context, + v8::Local source, + bool is_code_like); + } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS diff --git a/src/node_external_reference.cc b/src/node_external_reference.cc index 94198719b6a002..9a89977094bb55 100644 --- a/src/node_external_reference.cc +++ b/src/node_external_reference.cc @@ -7,9 +7,11 @@ namespace node { const std::vector& ExternalReferenceRegistry::external_references() { - CHECK(!is_finalized_); - external_references_.push_back(reinterpret_cast(nullptr)); - is_finalized_ = true; + if (!is_finalized_) { + external_references_.push_back(reinterpret_cast(nullptr)); + is_finalized_ = true; + } + return external_references_; } diff --git a/src/node_external_reference.h b/src/node_external_reference.h index c57a01ff39c20e..306c726631a214 100644 --- a/src/node_external_reference.h +++ b/src/node_external_reference.h @@ -66,6 +66,7 @@ class ExternalReferenceRegistry { V(handle_wrap) \ V(heap_utils) \ V(messaging) \ + V(mksnapshot) \ V(native_module) \ V(options) \ V(os) \ diff --git a/src/node_file-inl.h b/src/node_file-inl.h index 0188261b7dcbb4..351f3df809d94a 100644 --- a/src/node_file-inl.h +++ b/src/node_file-inl.h @@ -156,8 +156,10 @@ FSReqPromise::New(BindingData* binding_data, template FSReqPromise::~FSReqPromise() { - // Validate that the promise was explicitly resolved or rejected. - CHECK(finished_); + // Validate that the promise was explicitly resolved or rejected but only if + // the Isolate is not terminating because in this case the promise might have + // not finished. + CHECK_IMPLIES(!finished_, !env()->can_call_into_js()); } template diff --git a/src/node_file.cc b/src/node_file.cc index 43a57d77517e24..4b11a69f4deda7 100644 --- a/src/node_file.cc +++ b/src/node_file.cc @@ -377,6 +377,7 @@ MaybeLocal FileHandle::ClosePromise() { std::unique_ptr close(CloseReq::from_req(req)); CHECK_NOT_NULL(close); close->file_handle()->AfterClose(); + if (!close->env()->can_call_into_js()) return; Isolate* isolate = close->env()->isolate(); if (req->result < 0) { HandleScope handle_scope(isolate); @@ -650,6 +651,10 @@ void FSReqAfterScope::Reject(uv_fs_t* req) { } bool FSReqAfterScope::Proceed() { + if (!wrap_->env()->can_call_into_js()) { + return false; + } + if (req_->result < 0) { Reject(req_); return false; @@ -1382,6 +1387,7 @@ int MKDirpSync(uv_loop_t* loop, } break; case UV_EACCES: + case UV_ENOSPC: case UV_ENOTDIR: case UV_EPERM: { return err; diff --git a/src/node_http2.cc b/src/node_http2.cc index ca82da47b4b160..8df924a29028e2 100644 --- a/src/node_http2.cc +++ b/src/node_http2.cc @@ -1,12 +1,11 @@ +#include "node_http2.h" #include "aliased_buffer.h" -#include "allocated_buffer-inl.h" #include "aliased_struct-inl.h" #include "debug_utils-inl.h" #include "histogram-inl.h" #include "memory_tracker-inl.h" #include "node.h" #include "node_buffer.h" -#include "node_http2.h" #include "node_http_common-inl.h" #include "node_mem-inl.h" #include "node_perf.h" @@ -641,7 +640,7 @@ void Http2Stream::EmitStatistics() { std::unique_ptr entry = std::make_unique( "Http2Stream", - start, + start - (node::performance::timeOrigin / 1e6), duration, statistics_); @@ -661,7 +660,7 @@ void Http2Session::EmitStatistics() { std::unique_ptr entry = std::make_unique( "Http2Session", - start, + start - (node::performance::timeOrigin / 1e6), duration, statistics_); @@ -2646,7 +2645,6 @@ void Http2Session::New(const FunctionCallbackInfo& args) { static_cast( args[0]->Int32Value(env->context()).ToChecked()); Http2Session* session = new Http2Session(state, args.This(), type); - session->get_async_id(); // avoid compiler warning Debug(session, "session created"); } diff --git a/src/node_http_common.h b/src/node_http_common.h index ad9f2a864e0af9..4440b5c58d93d7 100644 --- a/src/node_http_common.h +++ b/src/node_http_common.h @@ -196,7 +196,7 @@ enum http_status_codes { // Unlike the HTTP/1 implementation, the HTTP/2 implementation is not limited // to a fixed number of known supported HTTP methods. These constants, therefore // are provided strictly as a convenience to users and are exposed via the -// require('http2').constants object. +// require('node:http2').constants object. #define HTTP_KNOWN_METHODS(V) \ V(ACL, "ACL") \ V(BASELINE_CONTROL, "BASELINE-CONTROL") \ diff --git a/src/node_http_parser.cc b/src/node_http_parser.cc index b2160512c72839..1b7e4ad1b8676b 100644 --- a/src/node_http_parser.cc +++ b/src/node_http_parser.cc @@ -199,11 +199,7 @@ class Parser : public AsyncWrap, public StreamListener { binding_data_(binding_data) { } - - void MemoryInfo(MemoryTracker* tracker) const override { - tracker->TrackField("current_buffer", current_buffer_); - } - + SET_NO_MEMORY_INFO() SET_MEMORY_INFO_NAME(Parser) SET_SELF_SIZE(Parser) @@ -392,32 +388,20 @@ class Parser : public AsyncWrap, public StreamListener { int on_body(const char* at, size_t length) { - EscapableHandleScope scope(env()->isolate()); + if (length == 0) + return 0; - Local obj = object(); - Local cb = obj->Get(env()->context(), kOnBody).ToLocalChecked(); + Environment* env = this->env(); + HandleScope handle_scope(env->isolate()); + + Local cb = object()->Get(env->context(), kOnBody).ToLocalChecked(); if (!cb->IsFunction()) return 0; - // We came from consumed stream - if (current_buffer_.IsEmpty()) { - // Make sure Buffer will be in parent HandleScope - current_buffer_ = scope.Escape(Buffer::Copy( - env()->isolate(), - current_buffer_data_, - current_buffer_len_).ToLocalChecked()); - } + Local buffer = Buffer::Copy(env, at, length).ToLocalChecked(); - Local argv[3] = { - current_buffer_, - Integer::NewFromUnsigned( - env()->isolate(), static_cast(at - current_buffer_data_)), - Integer::NewFromUnsigned(env()->isolate(), length)}; - - MaybeLocal r = MakeCallback(cb.As(), - arraysize(argv), - argv); + MaybeLocal r = MakeCallback(cb.As(), 1, &buffer); if (r.IsEmpty()) { got_exception_ = true; @@ -514,17 +498,9 @@ class Parser : public AsyncWrap, public StreamListener { static void Execute(const FunctionCallbackInfo& args) { Parser* parser; ASSIGN_OR_RETURN_UNWRAP(&parser, args.Holder()); - CHECK(parser->current_buffer_.IsEmpty()); - CHECK_EQ(parser->current_buffer_len_, 0); - CHECK_NULL(parser->current_buffer_data_); ArrayBufferViewContents buffer(args[0]); - // This is a hack to get the current_buffer to the callbacks with the least - // amount of overhead. Nothing else will run while http_parser_execute() - // runs, therefore this pointer can be set and used for the execution. - parser->current_buffer_ = args[0].As(); - Local ret = parser->Execute(buffer.data(), buffer.length()); if (!ret.IsEmpty()) @@ -536,7 +512,6 @@ class Parser : public AsyncWrap, public StreamListener { Parser* parser; ASSIGN_OR_RETURN_UNWRAP(&parser, args.Holder()); - CHECK(parser->current_buffer_.IsEmpty()); Local ret = parser->Execute(nullptr, 0); if (!ret.IsEmpty()) @@ -600,11 +575,6 @@ class Parser : public AsyncWrap, public StreamListener { // Should always be called from the same context. CHECK_EQ(env, parser->env()); - if (parser->execute_depth_) { - parser->pending_pause_ = should_pause; - return; - } - if (should_pause) { llhttp_pause(&parser->parser_); } else { @@ -686,7 +656,6 @@ class Parser : public AsyncWrap, public StreamListener { if (nread == 0) return; - current_buffer_.Clear(); Local ret = Execute(buf.base, nread); // Exception @@ -737,17 +706,12 @@ class Parser : public AsyncWrap, public StreamListener { llhttp_errno_t err; - // Do not allow re-entering `http_parser_execute()` - CHECK_EQ(execute_depth_, 0); - - execute_depth_++; if (data == nullptr) { err = llhttp_finish(&parser_); } else { err = llhttp_execute(&parser_, data, len); Save(); } - execute_depth_--; // Calculate bytes read and resume after Upgrade/CONNECT pause size_t nread = len; @@ -767,8 +731,6 @@ class Parser : public AsyncWrap, public StreamListener { llhttp_pause(&parser_); } - // Unassign the 'buffer_' variable - current_buffer_.Clear(); current_buffer_len_ = 0; current_buffer_data_ = nullptr; @@ -893,8 +855,6 @@ class Parser : public AsyncWrap, public StreamListener { int MaybePause() { - CHECK_NE(execute_depth_, 0); - if (!pending_pause_) { return 0; } @@ -922,10 +882,8 @@ class Parser : public AsyncWrap, public StreamListener { size_t num_values_; bool have_flushed_; bool got_exception_; - Local current_buffer_; size_t current_buffer_len_; const char* current_buffer_data_; - unsigned int execute_depth_ = 0; bool pending_pause_ = false; uint64_t header_nread_ = 0; uint64_t max_http_header_size_; diff --git a/src/node_internals.h b/src/node_internals.h index d37be23cd63e82..f7314c906e5806 100644 --- a/src/node_internals.h +++ b/src/node_internals.h @@ -58,7 +58,7 @@ class Environment; // Convert a struct sockaddr to a { address: '1.2.3.4', port: 1234 } JS object. // Sets address and port properties on the info object and returns it. // If |info| is omitted, a new object is returned. -v8::Local AddressToJS( +v8::MaybeLocal AddressToJS( Environment* env, const sockaddr* addr, v8::Local info = v8::Local()); @@ -118,6 +118,10 @@ class NodeArrayBufferAllocator : public ArrayBufferAllocator { private: uint32_t zero_fill_field_ = 1; // Boolean but exposed as uint32 to JS land. std::atomic total_mem_usage_ {0}; + + // Delegate to V8's allocator for compatibility with the V8 memory cage. + std::unique_ptr allocator_{ + v8::ArrayBuffer::Allocator::NewDefaultAllocator()}; }; class DebuggingArrayBufferAllocator final : public NodeArrayBufferAllocator { @@ -286,7 +290,10 @@ class ThreadPoolWork { #endif // defined(__POSIX__) && !defined(__ANDROID__) && !defined(__CloudABI__) namespace credentials { -bool SafeGetenv(const char* key, std::string* text, Environment* env = nullptr); +bool SafeGetenv(const char* key, + std::string* text, + std::shared_ptr env_vars = nullptr, + v8::Isolate* isolate = nullptr); } // namespace credentials void DefineZlibConstants(v8::Local target); @@ -320,13 +327,14 @@ enum InitializationSettingsFlags : uint64_t { }; // TODO(codebytere): eventually document and expose to embedders. -InitializationResult InitializeOncePerProcess(int argc, char** argv); -InitializationResult InitializeOncePerProcess( - int argc, - char** argv, - InitializationSettingsFlags flags, - ProcessFlags::Flags process_flags = ProcessFlags::kNoFlags); -void TearDownOncePerProcess(); +InitializationResult NODE_EXTERN_PRIVATE InitializeOncePerProcess(int argc, + char** argv); +InitializationResult NODE_EXTERN_PRIVATE InitializeOncePerProcess( + int argc, + char** argv, + InitializationSettingsFlags flags, + ProcessFlags::Flags process_flags = ProcessFlags::kNoFlags); +void NODE_EXTERN_PRIVATE TearDownOncePerProcess(); void SetIsolateErrorHandlers(v8::Isolate* isolate, const IsolateSettings& s); void SetIsolateMiscHandlers(v8::Isolate* isolate, const IsolateSettings& s); void SetIsolateCreateParamsForNode(v8::Isolate::CreateParams* params); @@ -382,23 +390,6 @@ namespace heap { bool WriteSnapshot(v8::Isolate* isolate, const char* filename); } -class TraceEventScope { - public: - TraceEventScope(const char* category, - const char* name, - void* id) : category_(category), name_(name), id_(id) { - TRACE_EVENT_NESTABLE_ASYNC_BEGIN0(category_, name_, id_); - } - ~TraceEventScope() { - TRACE_EVENT_NESTABLE_ASYNC_END0(category_, name_, id_); - } - - private: - const char* category_; - const char* name_; - void* id_; -}; - namespace heap { void DeleteHeapSnapshot(const v8::HeapSnapshot* snapshot); diff --git a/src/node_main_instance.cc b/src/node_main_instance.cc index ce319cca3edca3..07dc4d88a7f8b4 100644 --- a/src/node_main_instance.cc +++ b/src/node_main_instance.cc @@ -4,6 +4,7 @@ #include "node_external_reference.h" #include "node_internals.h" #include "node_options-inl.h" +#include "node_snapshot_builder.h" #include "node_snapshotable.h" #include "node_v8_platform-inl.h" #include "util-inl.h" @@ -23,8 +24,6 @@ using v8::Isolate; using v8::Local; using v8::Locker; -std::unique_ptr NodeMainInstance::registry_ = - nullptr; NodeMainInstance::NodeMainInstance(Isolate* isolate, uv_loop_t* event_loop, MultiIsolatePlatform* platform, @@ -36,21 +35,13 @@ NodeMainInstance::NodeMainInstance(Isolate* isolate, isolate_(isolate), platform_(platform), isolate_data_(nullptr), - owns_isolate_(false), - deserialize_mode_(false) { + snapshot_data_(nullptr) { isolate_data_ = std::make_unique(isolate_, event_loop, platform, nullptr); SetIsolateMiscHandlers(isolate_, {}); } -const std::vector& NodeMainInstance::CollectExternalReferences() { - // Cannot be called more than once. - CHECK_NULL(registry_); - registry_.reset(new ExternalReferenceRegistry()); - return registry_->external_references(); -} - std::unique_ptr NodeMainInstance::Create( Isolate* isolate, uv_loop_t* event_loop, @@ -61,28 +52,23 @@ std::unique_ptr NodeMainInstance::Create( new NodeMainInstance(isolate, event_loop, platform, args, exec_args)); } -NodeMainInstance::NodeMainInstance( - Isolate::CreateParams* params, - uv_loop_t* event_loop, - MultiIsolatePlatform* platform, - const std::vector& args, - const std::vector& exec_args, - const std::vector* per_isolate_data_indexes) +NodeMainInstance::NodeMainInstance(const SnapshotData* snapshot_data, + uv_loop_t* event_loop, + MultiIsolatePlatform* platform, + const std::vector& args, + const std::vector& exec_args) : args_(args), exec_args_(exec_args), array_buffer_allocator_(ArrayBufferAllocator::Create()), isolate_(nullptr), platform_(platform), - isolate_data_(nullptr), - owns_isolate_(true) { - params->array_buffer_allocator = array_buffer_allocator_.get(); - deserialize_mode_ = per_isolate_data_indexes != nullptr; - if (deserialize_mode_) { - // TODO(joyeecheung): collect external references and set it in - // params.external_references. - const std::vector& external_references = - CollectExternalReferences(); - params->external_references = external_references.data(); + isolate_data_(), + isolate_params_(std::make_unique()), + snapshot_data_(snapshot_data) { + isolate_params_->array_buffer_allocator = array_buffer_allocator_.get(); + if (snapshot_data != nullptr) { + SnapshotBuilder::InitializeIsolateParams(snapshot_data, + isolate_params_.get()); } isolate_ = Isolate::Allocate(); @@ -90,48 +76,52 @@ NodeMainInstance::NodeMainInstance( // Register the isolate on the platform before the isolate gets initialized, // so that the isolate can access the platform during initialization. platform->RegisterIsolate(isolate_, event_loop); - SetIsolateCreateParamsForNode(params); - Isolate::Initialize(isolate_, *params); + SetIsolateCreateParamsForNode(isolate_params_.get()); + Isolate::Initialize(isolate_, *isolate_params_); // If the indexes are not nullptr, we are not deserializing - CHECK_IMPLIES(deserialize_mode_, params->external_references != nullptr); - isolate_data_ = std::make_unique(isolate_, - event_loop, - platform, - array_buffer_allocator_.get(), - per_isolate_data_indexes); + isolate_data_ = std::make_unique( + isolate_, + event_loop, + platform, + array_buffer_allocator_.get(), + snapshot_data == nullptr ? nullptr + : &(snapshot_data->isolate_data_indices)); IsolateSettings s; SetIsolateMiscHandlers(isolate_, s); - if (!deserialize_mode_) { + if (snapshot_data == nullptr) { // If in deserialize mode, delay until after the deserialization is // complete. SetIsolateErrorHandlers(isolate_, s); } isolate_data_->max_young_gen_size = - params->constraints.max_young_generation_size_in_bytes(); + isolate_params_->constraints.max_young_generation_size_in_bytes(); } void NodeMainInstance::Dispose() { - CHECK(!owns_isolate_); + // This should only be called on a main instance that does not own its + // isolate. + CHECK_NULL(isolate_params_); platform_->DrainTasks(isolate_); } NodeMainInstance::~NodeMainInstance() { - if (!owns_isolate_) { + if (isolate_params_ == nullptr) { return; } + // This should only be done on a main instance that owns its isolate. platform_->UnregisterIsolate(isolate_); isolate_->Dispose(); } -int NodeMainInstance::Run(const EnvSerializeInfo* env_info) { +int NodeMainInstance::Run() { Locker locker(isolate_); Isolate::Scope isolate_scope(isolate_); HandleScope handle_scope(isolate_); int exit_code = 0; DeleteFnPtr env = - CreateMainEnvironment(&exit_code, env_info); + CreateMainEnvironment(&exit_code); CHECK_NOT_NULL(env); Context::Scope context_scope(env->context()); @@ -167,8 +157,7 @@ void NodeMainInstance::Run(int* exit_code, Environment* env) { } DeleteFnPtr -NodeMainInstance::CreateMainEnvironment(int* exit_code, - const EnvSerializeInfo* env_info) { +NodeMainInstance::CreateMainEnvironment(int* exit_code) { *exit_code = 0; // Reset the exit code to 0 HandleScope handle_scope(isolate_); @@ -179,16 +168,15 @@ NodeMainInstance::CreateMainEnvironment(int* exit_code, isolate_->GetHeapProfiler()->StartTrackingHeapObjects(true); } - CHECK_IMPLIES(deserialize_mode_, env_info != nullptr); Local context; DeleteFnPtr env; - if (deserialize_mode_) { + if (snapshot_data_ != nullptr) { env.reset(new Environment(isolate_data_.get(), isolate_, args_, exec_args_, - env_info, + &(snapshot_data_->env_info), EnvironmentFlags::kDefaultFlags, {})); context = Context::FromSnapshot(isolate_, @@ -200,7 +188,7 @@ NodeMainInstance::CreateMainEnvironment(int* exit_code, Context::Scope context_scope(context); CHECK(InitializeContextRuntime(context).IsJust()); SetIsolateErrorHandlers(isolate_, {}); - env->InitializeMainContext(context, env_info); + env->InitializeMainContext(context, &(snapshot_data_->env_info)); #if HAVE_INSPECTOR env->InitializeInspector({}); #endif diff --git a/src/node_main_instance.h b/src/node_main_instance.h index 047bdca873ebfd..9f24c4e2ab1755 100644 --- a/src/node_main_instance.h +++ b/src/node_main_instance.h @@ -15,6 +15,7 @@ namespace node { class ExternalReferenceRegistry; struct EnvSerializeInfo; +struct SnapshotData; // TODO(joyeecheung): align this with the Worker/WorkerThreadData class. // We may be able to create an abstract class to reuse some of the routines. @@ -48,30 +49,21 @@ class NodeMainInstance { void Dispose(); // Create a main instance that owns the isolate - NodeMainInstance( - v8::Isolate::CreateParams* params, - uv_loop_t* event_loop, - MultiIsolatePlatform* platform, - const std::vector& args, - const std::vector& exec_args, - const std::vector* per_isolate_data_indexes = nullptr); + NodeMainInstance(const SnapshotData* snapshot_data, + uv_loop_t* event_loop, + MultiIsolatePlatform* platform, + const std::vector& args, + const std::vector& exec_args); ~NodeMainInstance(); // Start running the Node.js instances, return the exit code when finished. - int Run(const EnvSerializeInfo* env_info); + int Run(); void Run(int* exit_code, Environment* env); IsolateData* isolate_data() { return isolate_data_.get(); } DeleteFnPtr CreateMainEnvironment( - int* exit_code, const EnvSerializeInfo* env_info); - - // If nullptr is returned, the binary is not built with embedded - // snapshot. - static const std::vector* GetIsolateDataIndices(); - static v8::StartupData* GetEmbeddedSnapshotBlob(); - static const EnvSerializeInfo* GetEnvSerializeInfo(); - static const std::vector& CollectExternalReferences(); + int* exit_code); static const size_t kNodeContextIndex = 0; NodeMainInstance(const NodeMainInstance&) = delete; @@ -86,15 +78,14 @@ class NodeMainInstance { const std::vector& args, const std::vector& exec_args); - static std::unique_ptr registry_; std::vector args_; std::vector exec_args_; std::unique_ptr array_buffer_allocator_; v8::Isolate* isolate_; MultiIsolatePlatform* platform_; std::unique_ptr isolate_data_; - bool owns_isolate_ = false; - bool deserialize_mode_ = false; + std::unique_ptr isolate_params_; + const SnapshotData* snapshot_data_ = nullptr; }; } // namespace node diff --git a/src/node_native_module.h b/src/node_native_module.h index 3be3f2364dd252..7acd154d419de8 100644 --- a/src/node_native_module.h +++ b/src/node_native_module.h @@ -29,7 +29,7 @@ using NativeModuleCacheMap = // This class should not depend on any Environment, or depend on access to // the its own singleton - that should be encapsulated in NativeModuleEnv // instead. -class NativeModuleLoader { +class NODE_EXTERN_PRIVATE NativeModuleLoader { public: NativeModuleLoader(const NativeModuleLoader&) = delete; NativeModuleLoader& operator=(const NativeModuleLoader&) = delete; diff --git a/src/node_options.cc b/src/node_options.cc index 3192faaddaf471..b82100b6907891 100644 --- a/src/node_options.cc +++ b/src/node_options.cc @@ -5,6 +5,9 @@ #include "node_binding.h" #include "node_external_reference.h" #include "node_internals.h" +#if HAVE_OPENSSL +#include "openssl/opensslv.h" +#endif #include #include @@ -140,6 +143,24 @@ void EnvironmentOptions::CheckOptions(std::vector* errors) { errors->push_back("--heap-snapshot-near-heap-limit must not be negative"); } + if (test_runner) { + if (syntax_check_only) { + errors->push_back("either --test or --check can be used, not both"); + } + + if (has_eval_string) { + errors->push_back("either --test or --eval can be used, not both"); + } + + if (force_repl) { + errors->push_back("either --test or --interactive can be used, not both"); + } + + if (debug_options_.inspector_enabled) { + errors->push_back("the inspector cannot be used with --test"); + } + } + #if HAVE_INSPECTOR if (!cpu_prof) { if (!cpu_prof_name.empty()) { @@ -318,13 +339,17 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() { &EnvironmentOptions::experimental_fetch, kAllowedInEnvironment); AddOption("--experimental-json-modules", "", NoOp{}, kAllowedInEnvironment); + AddOption("--experimental-global-customevent", + "expose experimental CustomEvent on the global scope", + &EnvironmentOptions::experimental_global_customevent, + kAllowedInEnvironment); AddOption("--experimental-global-webcrypto", "expose experimental Web Crypto API on the global scope", &EnvironmentOptions::experimental_global_web_crypto, kAllowedInEnvironment); AddOption("--experimental-loader", "use the specified module as a custom loader", - &EnvironmentOptions::userland_loader, + &EnvironmentOptions::userland_loaders, kAllowedInEnvironment); AddAlias("--loader", "--experimental-loader"); AddOption("--experimental-modules", "", NoOp{}, kAllowedInEnvironment); @@ -410,6 +435,12 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() { &EnvironmentOptions::force_async_hooks_checks, kAllowedInEnvironment, true); + AddOption( + "--force-node-api-uncaught-exceptions-policy", + "enforces 'uncaughtException' event on Node API asynchronous callbacks", + &EnvironmentOptions::force_node_api_uncaught_exceptions_policy, + kAllowedInEnvironment, + false); AddOption("--addons", "disable loading native addons", &EnvironmentOptions::allow_native_addons, @@ -494,6 +525,13 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() { "write warnings to file instead of stderr", &EnvironmentOptions::redirect_warnings, kAllowedInEnvironment); + AddOption("--test", + "launch test runner on startup", + &EnvironmentOptions::test_runner); + AddOption("--test-only", + "run tests with 'only' option set", + &EnvironmentOptions::test_only, + kAllowedInEnvironment); AddOption("--test-udp-no-try-send", "", // For testing only. &EnvironmentOptions::test_udp_no_try_send); AddOption("--throw-deprecation", @@ -670,14 +708,8 @@ PerIsolateOptionsParser::PerIsolateOptionsParser( kAllowedInEnvironment); Implies("--report-signal", "--report-on-signal"); - AddOption("--experimental-top-level-await", - "", - &PerIsolateOptions::experimental_top_level_await, - kAllowedInEnvironment); - AddOption("--harmony-top-level-await", "", V8Option{}); - Implies("--experimental-top-level-await", "--harmony-top-level-await"); - Implies("--harmony-top-level-await", "--experimental-top-level-await"); - ImpliesNot("--no-harmony-top-level-await", "--experimental-top-level-await"); + AddOption( + "--experimental-top-level-await", "", NoOp{}, kAllowedInEnvironment); Insert(eop, &PerIsolateOptions::get_per_env_options); } @@ -716,6 +748,11 @@ PerProcessOptionsParser::PerProcessOptionsParser( "disable Object.prototype.__proto__", &PerProcessOptions::disable_proto, kAllowedInEnvironment); + AddOption("--build-snapshot", + "Generate a snapshot blob when the process exits." + "Currently only supported in the node_mksnapshot binary.", + &PerProcessOptions::build_snapshot, + kDisallowedInEnvironment); // 12.x renamed this inadvertently, so alias it for consistency within the // release line, while using the original name for consistency with older @@ -816,13 +853,16 @@ PerProcessOptionsParser::PerProcessOptionsParser( "minimum allocation size from the OpenSSL secure heap", &PerProcessOptions::secure_heap_min, kAllowedInEnvironment); + AddOption("--openssl-shared-config", + "enable OpenSSL shared configuration", + &PerProcessOptions::openssl_shared_config, + kAllowedInEnvironment); #endif // HAVE_OPENSSL #if OPENSSL_VERSION_MAJOR >= 3 AddOption("--openssl-legacy-provider", "enable OpenSSL 3.0 legacy provider", &PerProcessOptions::openssl_legacy_provider, kAllowedInEnvironment); - #endif // OPENSSL_VERSION_MAJOR AddOption("--use-largepages", "Map the Node.js static code to large pages. Options are " diff --git a/src/node_options.h b/src/node_options.h index 40d1c02605811d..32e68086502f3e 100644 --- a/src/node_options.h +++ b/src/node_options.h @@ -11,6 +11,10 @@ #include "node_mutex.h" #include "util.h" +#if HAVE_OPENSSL +#include "openssl/opensslv.h" +#endif + namespace node { class HostPort { @@ -105,6 +109,7 @@ class EnvironmentOptions : public Options { bool enable_source_maps = false; bool experimental_https_modules = false; bool experimental_fetch = false; + bool experimental_global_customevent = false; bool experimental_global_web_crypto = false; std::string experimental_specifier_resolution; bool experimental_wasm_modules = false; @@ -116,6 +121,7 @@ class EnvironmentOptions : public Options { bool experimental_repl_await = true; bool experimental_vm_modules = false; bool expose_internals = false; + bool force_node_api_uncaught_exceptions_policy = false; bool frozen_intrinsics = false; int64_t heap_snapshot_near_heap_limit = 0; std::string heap_snapshot_signal; @@ -144,6 +150,8 @@ class EnvironmentOptions : public Options { #endif // HAVE_INSPECTOR std::string redirect_warnings; std::string diagnostic_dir; + bool test_runner = false; + bool test_only = false; bool test_udp_no_try_send = false; bool throw_deprecation = false; bool trace_atomics_wait = false; @@ -154,7 +162,7 @@ class EnvironmentOptions : public Options { bool trace_uncaught = false; bool trace_warnings = false; std::string unhandled_rejections; - std::string userland_loader; + std::vector userland_loaders; bool verify_base_objects = #ifdef DEBUG true; @@ -199,7 +207,6 @@ class PerIsolateOptions : public Options { bool node_snapshot = true; bool report_uncaught_exception = false; bool report_on_signal = false; - bool experimental_top_level_await = true; std::string report_signal = "SIGUSR2"; inline EnvironmentOptions* get_per_env_options(); void CheckOptions(std::vector* errors) override; @@ -224,6 +231,7 @@ class PerProcessOptions : public Options { bool zero_fill_all_buffers = false; bool debug_arraybuffer_allocations = false; std::string disable_proto; + bool build_snapshot; std::vector security_reverts; bool print_bash_completion = false; @@ -242,6 +250,7 @@ class PerProcessOptions : public Options { std::string tls_cipher_list = DEFAULT_CIPHER_LIST_CORE; int64_t secure_heap = 0; int64_t secure_heap_min = 2; + bool openssl_shared_config = false; #ifdef NODE_OPENSSL_CERT_STORE bool ssl_openssl_cert_store = true; #else @@ -252,6 +261,9 @@ class PerProcessOptions : public Options { bool enable_fips_crypto = false; bool force_fips_crypto = false; #endif +#if OPENSSL_VERSION_MAJOR >= 3 + bool openssl_legacy_provider = false; +#endif // Per-process because reports can be triggered outside a known V8 context. bool report_on_fatalerror = false; @@ -478,7 +490,7 @@ void Parse( namespace per_process { extern Mutex cli_options_mutex; -extern std::shared_ptr cli_options; +extern NODE_EXTERN_PRIVATE std::shared_ptr cli_options; } // namespace per_process diff --git a/src/node_perf.cc b/src/node_perf.cc index 8bda1791fce7db..253f72157e8a7b 100644 --- a/src/node_perf.cc +++ b/src/node_perf.cc @@ -159,17 +159,18 @@ void MarkGarbageCollectionEnd( if (LIKELY(!state->observers[NODE_PERFORMANCE_ENTRY_TYPE_GC])) return; - double start_time = state->performance_last_gc_start_mark / 1e6; - double duration = (PERFORMANCE_NOW() / 1e6) - start_time; + double start_time = + (state->performance_last_gc_start_mark - timeOrigin) / 1e6; + double duration = + (PERFORMANCE_NOW() / 1e6) - (state->performance_last_gc_start_mark / 1e6); std::unique_ptr entry = std::make_unique( "gc", start_time, duration, - GCPerformanceEntry::Details( - static_cast(type), - static_cast(flags))); + GCPerformanceEntry::Details(static_cast(type), + static_cast(flags))); env->SetImmediate([entry = std::move(entry)](Environment* env) { entry->Notify(env); diff --git a/src/node_perf_common.h b/src/node_perf_common.h index 1fea2e4fc95b47..ed520e69153b46 100644 --- a/src/node_perf_common.h +++ b/src/node_perf_common.h @@ -34,7 +34,9 @@ extern uint64_t performance_v8_start; #define NODE_PERFORMANCE_ENTRY_TYPES(V) \ V(GC, "gc") \ V(HTTP, "http") \ - V(HTTP2, "http2") + V(HTTP2, "http2") \ + V(NET, "net") \ + V(DNS, "dns") enum PerformanceMilestone { #define V(name, _) NODE_PERFORMANCE_MILESTONE_##name, diff --git a/src/node_process_events.cc b/src/node_process_events.cc index 34f0251cabc02b..944b0605b148b7 100644 --- a/src/node_process_events.cc +++ b/src/node_process_events.cc @@ -21,7 +21,6 @@ using v8::Value; MaybeLocal ProcessEmit(Environment* env, const char* event, Local message) { - // Send message to enable debug in cluster workers Isolate* isolate = env->isolate(); Local event_string; diff --git a/src/node_report.cc b/src/node_report.cc index 4bf6993ac5be92..edc8ab802b06f7 100644 --- a/src/node_report.cc +++ b/src/node_report.cc @@ -608,12 +608,27 @@ static void PrintGCStatistics(JSONWriter* writer, Isolate* isolate) { writer->json_objectstart("javascriptHeap"); writer->json_keyvalue("totalMemory", v8_heap_stats.total_heap_size()); + writer->json_keyvalue("executableMemory", + v8_heap_stats.total_heap_size_executable()); writer->json_keyvalue("totalCommittedMemory", v8_heap_stats.total_physical_size()); - writer->json_keyvalue("usedMemory", v8_heap_stats.used_heap_size()); writer->json_keyvalue("availableMemory", v8_heap_stats.total_available_size()); + writer->json_keyvalue("totalGlobalHandlesMemory", + v8_heap_stats.total_global_handles_size()); + writer->json_keyvalue("usedGlobalHandlesMemory", + v8_heap_stats.used_global_handles_size()); + writer->json_keyvalue("usedMemory", v8_heap_stats.used_heap_size()); writer->json_keyvalue("memoryLimit", v8_heap_stats.heap_size_limit()); + writer->json_keyvalue("mallocedMemory", v8_heap_stats.malloced_memory()); + writer->json_keyvalue("externalMemory", v8_heap_stats.external_memory()); + writer->json_keyvalue("peakMallocedMemory", + v8_heap_stats.peak_malloced_memory()); + writer->json_keyvalue("nativeContextCount", + v8_heap_stats.number_of_native_contexts()); + writer->json_keyvalue("detachedContextCount", + v8_heap_stats.number_of_detached_contexts()); + writer->json_keyvalue("doesZapGarbage", v8_heap_stats.does_zap_garbage()); writer->json_objectstart("heapSpaces"); // Loop through heap spaces diff --git a/src/node_report_utils.cc b/src/node_report_utils.cc index 82ed385ad176bd..6d8b211b6d1c51 100644 --- a/src/node_report_utils.cc +++ b/src/node_report_utils.cc @@ -95,6 +95,8 @@ static void ReportPipeEndpoints(uv_handle_t* h, JSONWriter* writer) { buffer = MallocedBuffer(buffer_size); if (buffer.data != nullptr) { rc = uv_pipe_getsockname(&handle->pipe, buffer.data, &buffer_size); + } else { + buffer_size = 0; } } if (rc == 0 && buffer_size != 0 && buffer.data != nullptr) { diff --git a/src/node_snapshot_builder.h b/src/node_snapshot_builder.h new file mode 100644 index 00000000000000..c5d2ee2a4bcd83 --- /dev/null +++ b/src/node_snapshot_builder.h @@ -0,0 +1,43 @@ + +#ifndef SRC_NODE_SNAPSHOT_BUILDER_H_ +#define SRC_NODE_SNAPSHOT_BUILDER_H_ + +#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS + +#include +#include "node_mutex.h" +#include "v8.h" + +namespace node { + +class ExternalReferenceRegistry; +struct SnapshotData; + +class NODE_EXTERN_PRIVATE SnapshotBuilder { + public: + static std::string Generate(const std::vector args, + const std::vector exec_args); + + // Generate the snapshot into out. + static void Generate(SnapshotData* out, + const std::vector args, + const std::vector exec_args); + + // If nullptr is returned, the binary is not built with embedded + // snapshot. + static const SnapshotData* GetEmbeddedSnapshotData(); + static void InitializeIsolateParams(const SnapshotData* data, + v8::Isolate::CreateParams* params); + + private: + // Used to synchronize access to the snapshot data + static Mutex snapshot_data_mutex_; + static const std::vector& CollectExternalReferences(); + + static std::unique_ptr registry_; +}; +} // namespace node + +#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS + +#endif // SRC_NODE_SNAPSHOT_BUILDER_H_ diff --git a/src/node_snapshot_stub.cc b/src/node_snapshot_stub.cc index 7c13d4e8c602c8..664f878c0671db 100644 --- a/src/node_snapshot_stub.cc +++ b/src/node_snapshot_stub.cc @@ -2,19 +2,11 @@ // NODE_WANT_INTERNALS, so we define it here manually. #define NODE_WANT_INTERNALS 1 -#include "node_main_instance.h" +#include "node_snapshot_builder.h" namespace node { -v8::StartupData* NodeMainInstance::GetEmbeddedSnapshotBlob() { - return nullptr; -} - -const std::vector* NodeMainInstance::GetIsolateDataIndices() { - return nullptr; -} - -const EnvSerializeInfo* NodeMainInstance::GetEnvSerializeInfo() { +const SnapshotData* SnapshotBuilder::GetEmbeddedSnapshotData() { return nullptr; } diff --git a/src/node_snapshotable.cc b/src/node_snapshotable.cc index 6f45ce537907cd..15b488e9e2cce4 100644 --- a/src/node_snapshotable.cc +++ b/src/node_snapshotable.cc @@ -12,18 +12,29 @@ #include "node_internals.h" #include "node_main_instance.h" #include "node_process.h" +#include "node_snapshot_builder.h" #include "node_v8.h" #include "node_v8_platform-inl.h" +#if HAVE_INSPECTOR +#include "inspector/worker_inspector.h" // ParentInspectorHandle +#endif + namespace node { using v8::Context; +using v8::Function; +using v8::FunctionCallbackInfo; using v8::HandleScope; using v8::Isolate; using v8::Local; +using v8::MaybeLocal; using v8::Object; +using v8::ScriptCompiler; +using v8::ScriptOrigin; using v8::SnapshotCreator; using v8::StartupData; +using v8::String; using v8::TryCatch; using v8::Value; @@ -39,7 +50,7 @@ std::string FormatBlob(SnapshotData* data) { ss << R"(#include #include "env.h" -#include "node_main_instance.h" +#include "node_snapshot_builder.h" #include "v8.h" // This file is generated by tools/snapshot. Do not edit. @@ -53,35 +64,46 @@ static const char blob_data[] = { static const int blob_size = )" << data->blob.raw_size << R"(; -static v8::StartupData blob = { blob_data, blob_size }; -)"; - - ss << R"(v8::StartupData* NodeMainInstance::GetEmbeddedSnapshotBlob() { - return &blob; -} -static const std::vector isolate_data_indices { +SnapshotData snapshot_data { + // -- blob begins -- + { blob_data, blob_size }, + // -- blob ends -- + // -- isolate_data_indices begins -- + { )"; WriteVector(&ss, data->isolate_data_indices.data(), data->isolate_data_indices.size()); - ss << R"(}; + ss << R"(}, + // -- isolate_data_indices ends -- + // -- env_info begins -- +)" << data->env_info + << R"( + // -- env_info ends -- +}; + +const SnapshotData* SnapshotBuilder::GetEmbeddedSnapshotData() { + Mutex::ScopedLock lock(snapshot_data_mutex_); + return &snapshot_data; +} +} // namespace node +)"; -const std::vector* NodeMainInstance::GetIsolateDataIndices() { - return &isolate_data_indices; + return ss.str(); } -static const EnvSerializeInfo env_info )" - << data->env_info << R"(; +Mutex SnapshotBuilder::snapshot_data_mutex_; -const EnvSerializeInfo* NodeMainInstance::GetEnvSerializeInfo() { - return &env_info; +const std::vector& SnapshotBuilder::CollectExternalReferences() { + static auto registry = std::make_unique(); + return registry->external_references(); } -} // namespace node -)"; - - return ss.str(); +void SnapshotBuilder::InitializeIsolateParams(const SnapshotData* data, + Isolate::CreateParams* params) { + params->external_references = CollectExternalReferences().data(); + params->snapshot_blob = const_cast(&(data->blob)); } void SnapshotBuilder::Generate(SnapshotData* out, @@ -97,7 +119,7 @@ void SnapshotBuilder::Generate(SnapshotData* out, { const std::vector& external_references = - NodeMainInstance::CollectExternalReferences(); + CollectExternalReferences(); SnapshotCreator creator(isolate, external_references.data()); Environment* env; { @@ -133,14 +155,45 @@ void SnapshotBuilder::Generate(SnapshotData* out, nullptr, node::EnvironmentFlags::kDefaultFlags, {}); + // Run scripts in lib/internal/bootstrap/ { TryCatch bootstrapCatch(isolate); - v8::MaybeLocal result = env->RunBootstrapping(); + MaybeLocal result = env->RunBootstrapping(); + if (bootstrapCatch.HasCaught()) { + PrintCaughtException(isolate, context, bootstrapCatch); + } + result.ToLocalChecked(); + } + + // If --build-snapshot is true, lib/internal/main/mksnapshot.js would be + // loaded via LoadEnvironment() to execute process.argv[1] as the entry + // point (we currently only support this kind of entry point, but we + // could also explore snapshotting other kinds of execution modes + // in the future). + if (per_process::cli_options->build_snapshot) { +#if HAVE_INSPECTOR + env->InitializeInspector({}); +#endif + TryCatch bootstrapCatch(isolate); + // TODO(joyeecheung): we could use the result for something special, + // like setting up initializers that should be invoked at snapshot + // dehydration. + MaybeLocal result = + LoadEnvironment(env, StartExecutionCallback{}); if (bootstrapCatch.HasCaught()) { PrintCaughtException(isolate, context, bootstrapCatch); } result.ToLocalChecked(); + // FIXME(joyeecheung): right now running the loop in the snapshot + // builder seems to introduces inconsistencies in JS land that need to + // be synchronized again after snapshot restoration. + int exit_code = SpinEventLoop(env).FromMaybe(1); + CHECK_EQ(exit_code, 0); + if (bootstrapCatch.HasCaught()) { + PrintCaughtException(isolate, context, bootstrapCatch); + abort(); + } } if (per_process::enabled_debug_list.enabled(DebugCategory::MKSNAPSHOT)) { @@ -312,4 +365,80 @@ void SerializeBindingData(Environment* env, }); } +namespace mksnapshot { + +void CompileSerializeMain(const FunctionCallbackInfo& args) { + CHECK(args[0]->IsString()); + Local filename = args[0].As(); + Local source = args[1].As(); + Isolate* isolate = args.GetIsolate(); + Local context = isolate->GetCurrentContext(); + ScriptOrigin origin(isolate, filename, 0, 0, true); + // TODO(joyeecheung): do we need all of these? Maybe we would want a less + // internal version of them. + std::vector> parameters = { + FIXED_ONE_BYTE_STRING(isolate, "require"), + FIXED_ONE_BYTE_STRING(isolate, "__filename"), + FIXED_ONE_BYTE_STRING(isolate, "__dirname"), + }; + ScriptCompiler::Source script_source(source, origin); + Local fn; + if (ScriptCompiler::CompileFunctionInContext(context, + &script_source, + parameters.size(), + parameters.data(), + 0, + nullptr, + ScriptCompiler::kEagerCompile) + .ToLocal(&fn)) { + args.GetReturnValue().Set(fn); + } +} + +void SetSerializeCallback(const FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + CHECK(env->snapshot_serialize_callback().IsEmpty()); + CHECK(args[0]->IsFunction()); + env->set_snapshot_serialize_callback(args[0].As()); +} + +void SetDeserializeCallback(const FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + CHECK(env->snapshot_deserialize_callback().IsEmpty()); + CHECK(args[0]->IsFunction()); + env->set_snapshot_deserialize_callback(args[0].As()); +} + +void SetDeserializeMainFunction(const FunctionCallbackInfo& args) { + Environment* env = Environment::GetCurrent(args); + CHECK(env->snapshot_deserialize_main().IsEmpty()); + CHECK(args[0]->IsFunction()); + env->set_snapshot_deserialize_main(args[0].As()); +} + +void Initialize(Local target, + Local unused, + Local context, + void* priv) { + Environment* env = Environment::GetCurrent(context); + env->SetMethod(target, "compileSerializeMain", CompileSerializeMain); + env->SetMethod(target, "markBootstrapComplete", MarkBootstrapComplete); + env->SetMethod(target, "setSerializeCallback", SetSerializeCallback); + env->SetMethod(target, "setDeserializeCallback", SetDeserializeCallback); + env->SetMethod( + target, "setDeserializeMainFunction", SetDeserializeMainFunction); +} + +void RegisterExternalReferences(ExternalReferenceRegistry* registry) { + registry->Register(CompileSerializeMain); + registry->Register(MarkBootstrapComplete); + registry->Register(SetSerializeCallback); + registry->Register(SetDeserializeCallback); + registry->Register(SetDeserializeMainFunction); +} +} // namespace mksnapshot } // namespace node + +NODE_MODULE_CONTEXT_AWARE_INTERNAL(mksnapshot, node::mksnapshot::Initialize) +NODE_MODULE_EXTERNAL_REFERENCE(mksnapshot, + node::mksnapshot::RegisterExternalReferences) diff --git a/src/node_snapshotable.h b/src/node_snapshotable.h index 1ccd9a93226241..f0a8bce215e027 100644 --- a/src/node_snapshotable.h +++ b/src/node_snapshotable.h @@ -12,6 +12,7 @@ namespace node { class Environment; struct EnvSerializeInfo; struct SnapshotData; +class ExternalReferenceRegistry; #define SERIALIZABLE_OBJECT_TYPES(V) \ V(fs_binding_data, fs::BindingData) \ @@ -122,15 +123,6 @@ void SerializeBindingData(Environment* env, EnvSerializeInfo* info); bool IsSnapshotableType(FastStringKey key); - -class SnapshotBuilder { - public: - static std::string Generate(const std::vector args, - const std::vector exec_args); - static void Generate(SnapshotData* out, - const std::vector args, - const std::vector exec_args); -}; } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS diff --git a/src/node_sockaddr-inl.h b/src/node_sockaddr-inl.h index 0b2361595f3db7..e16a09b04c7d6f 100644 --- a/src/node_sockaddr-inl.h +++ b/src/node_sockaddr-inl.h @@ -157,7 +157,7 @@ void SocketAddress::Update(const sockaddr* data, size_t len) { memcpy(&address_, data, len); } -v8::Local SocketAddress::ToJS( +v8::MaybeLocal SocketAddress::ToJS( Environment* env, v8::Local info) const { return AddressToJS(env, data(), info); diff --git a/src/node_sockaddr.cc b/src/node_sockaddr.cc index 09a74f302923f7..d29414302b7d28 100644 --- a/src/node_sockaddr.cc +++ b/src/node_sockaddr.cc @@ -215,7 +215,7 @@ bool in_network_ipv4( const SocketAddress& ip, const SocketAddress& net, int prefix) { - uint32_t mask = ((1 << prefix) - 1) << (32 - prefix); + uint32_t mask = ((1ull << prefix) - 1) << (32 - prefix); const sockaddr_in* ip_in = reinterpret_cast(ip.data()); @@ -293,7 +293,7 @@ bool in_network_ipv6_ipv4( if (prefix == 32) return compare_ipv4_ipv6(net, ip) == SocketAddress::CompareResult::SAME; - uint32_t m = ((1 << prefix) - 1) << (32 - prefix); + uint32_t m = ((1ull << prefix) - 1) << (32 - prefix); const sockaddr_in6* ip_in = reinterpret_cast(ip.data()); @@ -847,7 +847,9 @@ void SocketAddressBase::LegacyDetail(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); SocketAddressBase* base; ASSIGN_OR_RETURN_UNWRAP(&base, args.Holder()); - args.GetReturnValue().Set(base->address_->ToJS(env)); + Local address; + if (!base->address_->ToJS(env).ToLocal(&address)) return; + args.GetReturnValue().Set(address); } SocketAddressBase::SocketAddressBase( diff --git a/src/node_sockaddr.h b/src/node_sockaddr.h index 4cc5291ceefead..0a4633b9a33d7e 100644 --- a/src/node_sockaddr.h +++ b/src/node_sockaddr.h @@ -131,7 +131,7 @@ class SocketAddress : public MemoryRetainer { static SocketAddress FromPeerName(const uv_udp_t& handle); static SocketAddress FromPeerName(const uv_tcp_t& handle); - inline v8::Local ToJS( + inline v8::MaybeLocal ToJS( Environment* env, v8::Local obj = v8::Local()) const; diff --git a/src/node_url.cc b/src/node_url.cc index 9f22fa069804f5..1f9f4e40b084cb 100644 --- a/src/node_url.cc +++ b/src/node_url.cc @@ -5,6 +5,7 @@ #include "node_i18n.h" #include "util-inl.h" +#include #include #include #include @@ -58,7 +59,7 @@ class URLHost { public: ~URLHost(); - void ParseIPv4Host(const char* input, size_t length, bool* is_ipv4); + void ParseIPv4Host(const char* input, size_t length); void ParseIPv6Host(const char* input, size_t length); void ParseOpaqueHost(const char* input, size_t length); void ParseHost(const char* input, @@ -165,6 +166,9 @@ enum url_cb_args { // https://infra.spec.whatwg.org/#ascii-tab-or-newline CHAR_TEST(8, IsASCIITabOrNewline, (ch == '\t' || ch == '\n' || ch == '\r')) +// https://infra.spec.whatwg.org/#c0-control +CHAR_TEST(8, IsC0Control, (ch >= '\0' && ch <= '\x1f')) + // https://infra.spec.whatwg.org/#c0-control-or-space CHAR_TEST(8, IsC0ControlOrSpace, (ch >= '\0' && ch <= ' ')) @@ -190,12 +194,18 @@ T ASCIILowercase(T ch) { } // https://url.spec.whatwg.org/#forbidden-host-code-point -CHAR_TEST(8, IsForbiddenHostCodePoint, - ch == '\0' || ch == '\t' || ch == '\n' || ch == '\r' || - ch == ' ' || ch == '#' || ch == '%' || ch == '/' || - ch == ':' || ch == '?' || ch == '@' || ch == '[' || - ch == '<' || ch == '>' || ch == '\\' || ch == ']' || - ch == '^' || ch == '|') +CHAR_TEST(8, + IsForbiddenHostCodePoint, + ch == '\0' || ch == '\t' || ch == '\n' || ch == '\r' || ch == ' ' || + ch == '#' || ch == '/' || ch == ':' || ch == '?' || ch == '@' || + ch == '[' || ch == '<' || ch == '>' || ch == '\\' || ch == ']' || + ch == '^' || ch == '|') + +// https://url.spec.whatwg.org/#forbidden-domain-code-point +CHAR_TEST(8, + IsForbiddenDomainCodePoint, + IsForbiddenHostCodePoint(ch) || IsC0Control(ch) || ch == '%' || + ch == '\x7f') // https://url.spec.whatwg.org/#windows-drive-letter TWO_CHAR_STRING_TEST(8, IsWindowsDriveLetter, @@ -359,18 +369,21 @@ void URLHost::ParseIPv6Host(const char* input, size_t length) { type_ = HostType::H_IPV6; } -int64_t ParseNumber(const char* start, const char* end) { +// https://url.spec.whatwg.org/#ipv4-number-parser +int64_t ParseIPv4Number(const char* start, const char* end) { + if (end - start == 0) return -1; + unsigned R = 10; if (end - start >= 2 && start[0] == '0' && (start[1] | 0x20) == 'x') { start += 2; R = 16; - } - if (end - start == 0) { - return 0; - } else if (R == 10 && end - start > 1 && start[0] == '0') { + } else if (end - start >= 2 && start[0] == '0') { start++; R = 8; } + + if (end - start == 0) return 0; + const char* p = start; while (p < end) { @@ -394,9 +407,33 @@ int64_t ParseNumber(const char* start, const char* end) { return strtoll(start, nullptr, R); } -void URLHost::ParseIPv4Host(const char* input, size_t length, bool* is_ipv4) { +// https://url.spec.whatwg.org/#ends-in-a-number-checker +bool EndsInANumber(const std::string& input) { + std::vector parts = SplitString(input, '.', false); + + if (parts.empty()) return false; + + if (parts.back().empty()) { + if (parts.size() == 1) return false; + parts.pop_back(); + } + + const std::string& last = parts.back(); + + // If last is non-empty and contains only ASCII digits, then return true + if (!last.empty() && std::all_of(last.begin(), last.end(), ::isdigit)) { + return true; + } + + const char* last_str = last.c_str(); + int64_t num = ParseIPv4Number(last_str, last_str + last.size()); + if (num >= 0) return true; + + return false; +} + +void URLHost::ParseIPv4Host(const char* input, size_t length) { CHECK_EQ(type_, HostType::H_FAILED); - *is_ipv4 = false; const char* pointer = input; const char* mark = input; const char* end = pointer + length; @@ -415,7 +452,7 @@ void URLHost::ParseIPv4Host(const char* input, size_t length, bool* is_ipv4) { return; if (pointer == mark) return; - int64_t n = ParseNumber(mark, pointer); + int64_t n = ParseIPv4Number(mark, pointer); if (n < 0) return; @@ -430,7 +467,6 @@ void URLHost::ParseIPv4Host(const char* input, size_t length, bool* is_ipv4) { pointer++; } CHECK_GT(parts, 0); - *is_ipv4 = true; // If any but the last item in numbers is greater than 255, return failure. // If the last item in numbers is greater than or equal to @@ -458,7 +494,7 @@ void URLHost::ParseOpaqueHost(const char* input, size_t length) { output.reserve(length); for (size_t i = 0; i < length; i++) { const char ch = input[i]; - if (ch != '%' && IsForbiddenHostCodePoint(ch)) { + if (IsForbiddenHostCodePoint(ch)) { return; } else { AppendOrEscape(&output, ch, C0_CONTROL_ENCODE_SET); @@ -497,16 +533,15 @@ void URLHost::ParseHost(const char* input, // If any of the following characters are still present, we have to fail for (size_t n = 0; n < decoded.size(); n++) { const char ch = decoded[n]; - if (IsForbiddenHostCodePoint(ch)) { + if (IsForbiddenDomainCodePoint(ch)) { return; } } - // Check to see if it's an IPv4 IP address - bool is_ipv4; - ParseIPv4Host(decoded.c_str(), decoded.length(), &is_ipv4); - if (is_ipv4) - return; + // If domain ends in a number, then return the result of IPv4 parsing domain + if (EndsInANumber(decoded)) { + return ParseIPv4Host(decoded.c_str(), decoded.length()); + } // If the unicode flag is set, run the result through punycode ToUnicode if (unicode && !ToUnicode(decoded, &decoded)) @@ -1666,7 +1701,7 @@ void Parse(Environment* env, null, // fragment defaults to null }; SetArgs(env, argv, url); - cb->Call(context, recv, arraysize(argv), argv).FromMaybe(Local()); + USE(cb->Call(context, recv, arraysize(argv), argv)); } else if (error_cb->IsFunction()) { Local flags = Integer::NewFromUnsigned(isolate, url.flags); USE(error_cb.As()->Call(context, recv, 1, &flags)); diff --git a/src/node_util.cc b/src/node_util.cc index 2db45bd1fb40af..5b5dab36f08fbf 100644 --- a/src/node_util.cc +++ b/src/node_util.cc @@ -289,11 +289,6 @@ static void GuessHandleType(const FunctionCallbackInfo& args) { args.GetReturnValue().Set(OneByteString(env->isolate(), type)); } -static void IsConstructor(const FunctionCallbackInfo& args) { - CHECK(args[0]->IsFunction()); - args.GetReturnValue().Set(args[0].As()->IsConstructor()); -} - static void ToUSVString(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); CHECK_GE(args.Length(), 2); @@ -344,7 +339,6 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) { registry->Register(WeakReference::IncRef); registry->Register(WeakReference::DecRef); registry->Register(GuessHandleType); - registry->Register(IsConstructor); registry->Register(ToUSVString); } @@ -384,7 +378,6 @@ void Initialize(Local target, env->SetMethodNoSideEffect(target, "getConstructorName", GetConstructorName); env->SetMethodNoSideEffect(target, "getExternalValue", GetExternalValue); env->SetMethod(target, "sleep", Sleep); - env->SetMethodNoSideEffect(target, "isConstructor", IsConstructor); env->SetMethod(target, "arrayBufferViewHasBuffer", ArrayBufferViewHasBuffer); Local constants = Object::New(env->isolate()); diff --git a/src/node_v8.cc b/src/node_v8.cc index c1098e2d339578..9c72ddaf5293ec 100644 --- a/src/node_v8.cc +++ b/src/node_v8.cc @@ -47,19 +47,21 @@ using v8::Uint32; using v8::V8; using v8::Value; - -#define HEAP_STATISTICS_PROPERTIES(V) \ - V(0, total_heap_size, kTotalHeapSizeIndex) \ - V(1, total_heap_size_executable, kTotalHeapSizeExecutableIndex) \ - V(2, total_physical_size, kTotalPhysicalSizeIndex) \ - V(3, total_available_size, kTotalAvailableSize) \ - V(4, used_heap_size, kUsedHeapSizeIndex) \ - V(5, heap_size_limit, kHeapSizeLimitIndex) \ - V(6, malloced_memory, kMallocedMemoryIndex) \ - V(7, peak_malloced_memory, kPeakMallocedMemoryIndex) \ - V(8, does_zap_garbage, kDoesZapGarbageIndex) \ - V(9, number_of_native_contexts, kNumberOfNativeContextsIndex) \ - V(10, number_of_detached_contexts, kNumberOfDetachedContextsIndex) +#define HEAP_STATISTICS_PROPERTIES(V) \ + V(0, total_heap_size, kTotalHeapSizeIndex) \ + V(1, total_heap_size_executable, kTotalHeapSizeExecutableIndex) \ + V(2, total_physical_size, kTotalPhysicalSizeIndex) \ + V(3, total_available_size, kTotalAvailableSize) \ + V(4, used_heap_size, kUsedHeapSizeIndex) \ + V(5, heap_size_limit, kHeapSizeLimitIndex) \ + V(6, malloced_memory, kMallocedMemoryIndex) \ + V(7, peak_malloced_memory, kPeakMallocedMemoryIndex) \ + V(8, does_zap_garbage, kDoesZapGarbageIndex) \ + V(9, number_of_native_contexts, kNumberOfNativeContextsIndex) \ + V(10, number_of_detached_contexts, kNumberOfDetachedContextsIndex) \ + V(11, total_global_handles_size, kTotalGlobalHandlesSizeIndex) \ + V(12, used_global_handles_size, kUsedGlobalHandlesSizeIndex) \ + V(13, external_memory, kExternalMemoryIndex) #define V(a, b, c) +1 static constexpr size_t kHeapStatisticsPropertiesCount = diff --git a/src/node_version.h b/src/node_version.h index 8efc597a2075df..d79d640b693993 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -23,13 +23,13 @@ #define SRC_NODE_VERSION_H_ #define NODE_MAJOR_VERSION 16 -#define NODE_MINOR_VERSION 16 -#define NODE_PATCH_VERSION 1 +#define NODE_MINOR_VERSION 17 +#define NODE_PATCH_VERSION 0 #define NODE_VERSION_IS_LTS 1 #define NODE_VERSION_LTS_CODENAME "Gallium" -#define NODE_VERSION_IS_RELEASE 0 +#define NODE_VERSION_IS_RELEASE 1 #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n) diff --git a/src/node_wasi.cc b/src/node_wasi.cc index ffcc37c5274c98..965a619c8d4acd 100644 --- a/src/node_wasi.cc +++ b/src/node_wasi.cc @@ -72,9 +72,7 @@ inline void Debug(WASI* wasi, Args&&... args) { } \ } while (0) - using v8::Array; -using v8::ArrayBuffer; using v8::BackingStore; using v8::BigInt; using v8::Context; @@ -89,7 +87,7 @@ using v8::Object; using v8::String; using v8::Uint32; using v8::Value; - +using v8::WasmMemoryObject; static MaybeLocal WASIException(Local context, int errorno, @@ -236,11 +234,9 @@ void WASI::New(const FunctionCallbackInfo& args) { delete[] options.argv; } - if (options.envp != nullptr) { - for (uint32_t i = 0; options.envp[i]; i++) - free(const_cast(options.envp[i])); - delete[] options.envp; - } + for (uint32_t i = 0; options.envp[i]; i++) + free(const_cast(options.envp[i])); + delete[] options.envp; if (options.preopens != nullptr) { for (uint32_t i = 0; i < options.preopenc; i++) { @@ -1644,26 +1640,22 @@ void WASI::SockShutdown(const FunctionCallbackInfo& args) { void WASI::_SetMemory(const FunctionCallbackInfo& args) { WASI* wasi; - CHECK_EQ(args.Length(), 1); - CHECK(args[0]->IsObject()); ASSIGN_OR_RETURN_UNWRAP(&wasi, args.This()); - wasi->memory_.Reset(wasi->env()->isolate(), args[0].As()); + CHECK_EQ(args.Length(), 1); + if (!args[0]->IsWasmMemoryObject()) { + return node::THROW_ERR_INVALID_ARG_TYPE( + wasi->env(), + "\"instance.exports.memory\" property must be a WebAssembly.Memory " + "object"); + } + wasi->memory_.Reset(wasi->env()->isolate(), args[0].As()); } uvwasi_errno_t WASI::backingStore(char** store, size_t* byte_length) { - Environment* env = this->env(); - Local memory = PersistentToLocal::Strong(this->memory_); - Local prop; - - if (!memory->Get(env->context(), env->buffer_string()).ToLocal(&prop)) - return UVWASI_EINVAL; - - if (!prop->IsArrayBuffer()) - return UVWASI_EINVAL; - - Local ab = prop.As(); - std::shared_ptr backing_store = ab->GetBackingStore(); + Local memory = PersistentToLocal::Strong(this->memory_); + std::shared_ptr backing_store = + memory->Buffer()->GetBackingStore(); *byte_length = backing_store->ByteLength(); *store = static_cast(backing_store->Data()); CHECK_NOT_NULL(*store); diff --git a/src/node_wasi.h b/src/node_wasi.h index 7a0be60aa645a7..b3814ddc31033a 100644 --- a/src/node_wasi.h +++ b/src/node_wasi.h @@ -94,7 +94,7 @@ class WASI : public BaseObject, inline void writeUInt64(char* memory, uint64_t value, uint32_t offset); uvwasi_errno_t backingStore(char** store, size_t* byte_length); uvwasi_t uvw_; - v8::Global memory_; + v8::Global memory_; uvwasi_mem_t alloc_info_; size_t current_uvwasi_memory_ = 0; }; diff --git a/src/node_watchdog.cc b/src/node_watchdog.cc index ff2a0229087138..31c8f744a3b320 100644 --- a/src/node_watchdog.cc +++ b/src/node_watchdog.cc @@ -102,6 +102,7 @@ void Watchdog::Timer(uv_timer_t* timer) { SigintWatchdog::SigintWatchdog( v8::Isolate* isolate, bool* received_signal) : isolate_(isolate), received_signal_(received_signal) { + Mutex::ScopedLock lock(SigintWatchdogHelper::GetInstanceActionMutex()); // Register this watchdog with the global SIGINT/Ctrl+C listener. SigintWatchdogHelper::GetInstance()->Register(this); // Start the helper thread, if that has not already happened. @@ -110,6 +111,7 @@ SigintWatchdog::SigintWatchdog( SigintWatchdog::~SigintWatchdog() { + Mutex::ScopedLock lock(SigintWatchdogHelper::GetInstanceActionMutex()); SigintWatchdogHelper::GetInstance()->Unregister(this); SigintWatchdogHelper::GetInstance()->Stop(); } @@ -144,6 +146,7 @@ void TraceSigintWatchdog::New(const FunctionCallbackInfo& args) { void TraceSigintWatchdog::Start(const FunctionCallbackInfo& args) { TraceSigintWatchdog* watchdog; ASSIGN_OR_RETURN_UNWRAP(&watchdog, args.Holder()); + Mutex::ScopedLock lock(SigintWatchdogHelper::GetInstanceActionMutex()); // Register this watchdog with the global SIGINT/Ctrl+C listener. SigintWatchdogHelper::GetInstance()->Register(watchdog); // Start the helper thread, if that has not already happened. @@ -154,6 +157,7 @@ void TraceSigintWatchdog::Start(const FunctionCallbackInfo& args) { void TraceSigintWatchdog::Stop(const FunctionCallbackInfo& args) { TraceSigintWatchdog* watchdog; ASSIGN_OR_RETURN_UNWRAP(&watchdog, args.Holder()); + Mutex::ScopedLock lock(SigintWatchdogHelper::GetInstanceActionMutex()); SigintWatchdogHelper::GetInstance()->Unregister(watchdog); SigintWatchdogHelper::GetInstance()->Stop(); } @@ -215,6 +219,7 @@ void TraceSigintWatchdog::HandleInterrupt() { signal_flag_ = SignalFlags::None; interrupting = false; + Mutex::ScopedLock lock(SigintWatchdogHelper::GetInstanceActionMutex()); SigintWatchdogHelper::GetInstance()->Unregister(this); SigintWatchdogHelper::GetInstance()->Stop(); raise(SIGINT); @@ -413,6 +418,7 @@ SigintWatchdogHelper::~SigintWatchdogHelper() { } SigintWatchdogHelper SigintWatchdogHelper::instance; +Mutex SigintWatchdogHelper::instance_action_mutex_; namespace watchdog { static void Initialize(Local target, diff --git a/src/node_watchdog.h b/src/node_watchdog.h index 8bccfceef3c521..ae70157224b1c7 100644 --- a/src/node_watchdog.h +++ b/src/node_watchdog.h @@ -110,6 +110,7 @@ class TraceSigintWatchdog : public HandleWrap, public SigintWatchdogBase { class SigintWatchdogHelper { public: static SigintWatchdogHelper* GetInstance() { return &instance; } + static Mutex& GetInstanceActionMutex() { return instance_action_mutex_; } void Register(SigintWatchdogBase* watchdog); void Unregister(SigintWatchdogBase* watchdog); bool HasPendingSignal(); @@ -123,6 +124,7 @@ class SigintWatchdogHelper { static bool InformWatchdogsAboutSignal(); static SigintWatchdogHelper instance; + static Mutex instance_action_mutex_; int start_stop_count_; diff --git a/src/node_worker.cc b/src/node_worker.cc index a734d65965a9d7..86493374af13b4 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -7,6 +7,7 @@ #include "node_buffer.h" #include "node_options-inl.h" #include "node_perf.h" +#include "node_snapshot_builder.h" #include "util-inl.h" #include "async_wrap-inl.h" @@ -60,18 +61,18 @@ Worker::Worker(Environment* env, thread_id_.id); // Set up everything that needs to be set up in the parent environment. - parent_port_ = MessagePort::New(env, env->context()); - if (parent_port_ == nullptr) { + MessagePort* parent_port = MessagePort::New(env, env->context()); + if (parent_port == nullptr) { // This can happen e.g. because execution is terminating. return; } child_port_data_ = std::make_unique(nullptr); - MessagePort::Entangle(parent_port_, child_port_data_.get()); + MessagePort::Entangle(parent_port, child_port_data_.get()); - object()->Set(env->context(), - env->message_port_string(), - parent_port_->object()).Check(); + object() + ->Set(env->context(), env->message_port_string(), parent_port->object()) + .Check(); object()->Set(env->context(), env->thread_id_string(), @@ -146,6 +147,20 @@ class WorkerThreadData { SetIsolateCreateParamsForNode(¶ms); params.array_buffer_allocator_shared = allocator; + bool use_node_snapshot = true; + if (w_->per_isolate_opts_) { + use_node_snapshot = w_->per_isolate_opts_->node_snapshot; + } else { + // IsolateData is created after the Isolate is created so we'll + // inherit the option from the parent here. + use_node_snapshot = per_process::cli_options->per_isolate->node_snapshot; + } + const SnapshotData* snapshot_data = + use_node_snapshot ? SnapshotBuilder::GetEmbeddedSnapshotData() + : nullptr; + if (snapshot_data != nullptr) { + SnapshotBuilder::InitializeIsolateParams(snapshot_data, ¶ms); + } w->UpdateResourceConstraints(¶ms.constraints); Isolate* isolate = Isolate::Allocate(); @@ -661,6 +676,12 @@ void Worker::Ref(const FunctionCallbackInfo& args) { } } +void Worker::HasRef(const FunctionCallbackInfo& args) { + Worker* w; + ASSIGN_OR_RETURN_UNWRAP(&w, args.This()); + args.GetReturnValue().Set(w->has_ref_); +} + void Worker::Unref(const FunctionCallbackInfo& args) { Worker* w; ASSIGN_OR_RETURN_UNWRAP(&w, args.This()); @@ -703,10 +724,6 @@ void Worker::Exit(int code, const char* error_code, const char* error_message) { } } -void Worker::MemoryInfo(MemoryTracker* tracker) const { - tracker->TrackField("parent_port", parent_port_); -} - bool Worker::IsNotIndicativeOfMemoryLeakAtExit() const { // Worker objects always stay alive as long as the child thread, regardless // of whether they are being referenced in the parent thread. @@ -823,6 +840,7 @@ void InitWorker(Local target, env->SetProtoMethod(w, "startThread", Worker::StartThread); env->SetProtoMethod(w, "stopThread", Worker::StopThread); + env->SetProtoMethod(w, "hasRef", Worker::HasRef); env->SetProtoMethod(w, "ref", Worker::Ref); env->SetProtoMethod(w, "unref", Worker::Unref); env->SetProtoMethod(w, "getResourceLimits", Worker::GetResourceLimits); @@ -886,6 +904,7 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) { registry->Register(Worker::New); registry->Register(Worker::StartThread); registry->Register(Worker::StopThread); + registry->Register(Worker::HasRef); registry->Register(Worker::Ref); registry->Register(Worker::Unref); registry->Register(Worker::GetResourceLimits); diff --git a/src/node_worker.h b/src/node_worker.h index 077d2b8390e6f8..119b75d137a43f 100644 --- a/src/node_worker.h +++ b/src/node_worker.h @@ -47,7 +47,7 @@ class Worker : public AsyncWrap { template inline bool RequestInterrupt(Fn&& cb); - void MemoryInfo(MemoryTracker* tracker) const override; + SET_NO_MEMORY_INFO() SET_MEMORY_INFO_NAME(Worker) SET_SELF_SIZE(Worker) bool IsNotIndicativeOfMemoryLeakAtExit() const override; @@ -60,6 +60,7 @@ class Worker : public AsyncWrap { static void SetEnvVars(const v8::FunctionCallbackInfo& args); static void StartThread(const v8::FunctionCallbackInfo& args); static void StopThread(const v8::FunctionCallbackInfo& args); + static void HasRef(const v8::FunctionCallbackInfo& args); static void Ref(const v8::FunctionCallbackInfo& args); static void Unref(const v8::FunctionCallbackInfo& args); static void GetResourceLimits( @@ -106,10 +107,6 @@ class Worker : public AsyncWrap { std::unique_ptr child_port_data_; std::shared_ptr env_vars_; - // This is always kept alive because the JS object associated with the Worker - // instance refers to it via its [kPort] property. - MessagePort* parent_port_ = nullptr; - // A raw flag that is used by creator and worker threads to // sync up on pre-mature termination of worker - while in the // warmup phase. Once the worker is fully warmed up, use the diff --git a/src/pipe_wrap.cc b/src/pipe_wrap.cc index da52f5cee01062..85daf4a1e618ae 100644 --- a/src/pipe_wrap.cc +++ b/src/pipe_wrap.cc @@ -241,6 +241,12 @@ void PipeWrap::Connect(const FunctionCallbackInfo& args) { *name, AfterConnect); + TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(TRACING_CATEGORY_NODE2(net, native), + "connect", + req_wrap, + "pipe_path", + TRACE_STR_COPY(*name)); + args.GetReturnValue().Set(0); // uv_pipe_connect() doesn't return errors. } diff --git a/src/stream_base.cc b/src/stream_base.cc index a47fad970355dc..783e12a36c8e52 100644 --- a/src/stream_base.cc +++ b/src/stream_base.cc @@ -1,7 +1,6 @@ #include "stream_base.h" // NOLINT(build/include_inline) #include "stream_base-inl.h" #include "stream_wrap.h" -#include "allocated_buffer-inl.h" #include "env-inl.h" #include "js_stream.h" @@ -453,6 +452,10 @@ void StreamBase::AddMethods(Environment* env, Local t) { void StreamBase::RegisterExternalReferences( ExternalReferenceRegistry* registry) { + // This function is called by a single thread during start up, so it is safe + // to use a local static variable here. + static bool is_registered = false; + if (is_registered) return; registry->Register(GetFD); registry->Register(GetExternal); registry->Register(GetBytesRead); @@ -472,6 +475,7 @@ void StreamBase::RegisterExternalReferences( registry->Register( BaseObject::InternalFieldSet); + is_registered = true; } void StreamBase::GetFD(const FunctionCallbackInfo& args) { @@ -601,6 +605,7 @@ void ReportWritesToJSStreamListener::OnStreamAfterReqFinished( StreamReq* req_wrap, int status) { StreamBase* stream = static_cast(stream_); Environment* env = stream->stream_env(); + if (env->is_stopping()) return; AsyncWrap* async_wrap = req_wrap->GetAsyncWrap(); HandleScope handle_scope(env->isolate()); Context::Scope context_scope(env->context()); diff --git a/src/stream_pipe.cc b/src/stream_pipe.cc index 94ba8604bd76c6..93b7ffeca9cd53 100644 --- a/src/stream_pipe.cc +++ b/src/stream_pipe.cc @@ -11,7 +11,10 @@ using v8::Function; using v8::FunctionCallbackInfo; using v8::FunctionTemplate; using v8::HandleScope; +using v8::Just; using v8::Local; +using v8::Maybe; +using v8::Nothing; using v8::Object; using v8::Value; @@ -28,31 +31,6 @@ StreamPipe::StreamPipe(StreamBase* source, sink->PushStreamListener(&writable_listener_); uses_wants_write_ = sink->HasWantsWrite(); - - // Set up links between this object and the source/sink objects. - // In particular, this makes sure that they are garbage collected as a group, - // if that applies to the given streams (for example, Http2Streams use - // weak references). - if (obj->Set(env()->context(), - env()->source_string(), - source->GetObject()).IsNothing()) { - return; - } - if (source->GetObject()->Set(env()->context(), - env()->pipe_target_string(), - obj).IsNothing()) { - return; - } - if (obj->Set(env()->context(), - env()->sink_string(), - sink->GetObject()).IsNothing()) { - return; - } - if (sink->GetObject()->Set(env()->context(), - env()->pipe_source_string(), - obj).IsNothing()) { - return; - } } StreamPipe::~StreamPipe() { @@ -261,6 +239,38 @@ void StreamPipe::WritableListener::OnStreamRead(ssize_t nread, return previous_listener_->OnStreamRead(nread, buf); } +Maybe StreamPipe::New(StreamBase* source, + StreamBase* sink, + Local obj) { + std::unique_ptr stream_pipe(new StreamPipe(source, sink, obj)); + + // Set up links between this object and the source/sink objects. + // In particular, this makes sure that they are garbage collected as a group, + // if that applies to the given streams (for example, Http2Streams use + // weak references). + Environment* env = source->stream_env(); + if (obj->Set(env->context(), env->source_string(), source->GetObject()) + .IsNothing()) { + return Nothing(); + } + if (source->GetObject() + ->Set(env->context(), env->pipe_target_string(), obj) + .IsNothing()) { + return Nothing(); + } + if (obj->Set(env->context(), env->sink_string(), sink->GetObject()) + .IsNothing()) { + return Nothing(); + } + if (sink->GetObject() + ->Set(env->context(), env->pipe_source_string(), obj) + .IsNothing()) { + return Nothing(); + } + + return Just(stream_pipe.release()); +} + void StreamPipe::New(const FunctionCallbackInfo& args) { CHECK(args.IsConstructCall()); CHECK(args[0]->IsObject()); @@ -268,7 +278,7 @@ void StreamPipe::New(const FunctionCallbackInfo& args) { StreamBase* source = StreamBase::FromObject(args[0].As()); StreamBase* sink = StreamBase::FromObject(args[1].As()); - new StreamPipe(source, sink, args.This()); + if (StreamPipe::New(source, sink, args.This()).IsNothing()) return; } void StreamPipe::Start(const FunctionCallbackInfo& args) { diff --git a/src/stream_pipe.h b/src/stream_pipe.h index f411468294d3f0..54ca5bfdd04792 100644 --- a/src/stream_pipe.h +++ b/src/stream_pipe.h @@ -13,10 +13,9 @@ class StreamPipe : public AsyncWrap { void Unpipe(bool is_in_deletion = false); - // TODO(RaisinTen): Just like MessagePort, add the following overload: - // static StreamPipe* New(StreamBase* source, StreamBase* sink, - // v8::Local obj); - // so that we can indicate if there is a pending exception/termination. + static v8::Maybe New(StreamBase* source, + StreamBase* sink, + v8::Local obj); static void New(const v8::FunctionCallbackInfo& args); static void Start(const v8::FunctionCallbackInfo& args); static void Unpipe(const v8::FunctionCallbackInfo& args); diff --git a/src/stream_wrap.cc b/src/stream_wrap.cc index ff3df6bc5db7bd..d0c5664adcd897 100644 --- a/src/stream_wrap.cc +++ b/src/stream_wrap.cc @@ -25,6 +25,7 @@ #include "env-inl.h" #include "handle_wrap.h" #include "node_buffer.h" +#include "node_errors.h" #include "node_external_reference.h" #include "pipe_wrap.h" #include "req_wrap-inl.h" @@ -38,14 +39,18 @@ namespace node { +using errors::TryCatchScope; using v8::Context; using v8::DontDelete; using v8::EscapableHandleScope; using v8::FunctionCallbackInfo; using v8::FunctionTemplate; using v8::HandleScope; +using v8::JustVoid; using v8::Local; +using v8::Maybe; using v8::MaybeLocal; +using v8::Nothing; using v8::Object; using v8::PropertyAttribute; using v8::ReadOnly; @@ -108,8 +113,7 @@ void LibuvStreamWrap::RegisterExternalReferences( registry->Register(IsConstructCallCallback); registry->Register(GetWriteQueueSize); registry->Register(SetBlocking); - // TODO(joyee): StreamBase::RegisterExternalReferences() is called somewhere - // else but we may want to do it here too and guard it with a static flag. + StreamBase::RegisterExternalReferences(registry); } LibuvStreamWrap::LibuvStreamWrap(Environment* env, @@ -192,15 +196,19 @@ bool LibuvStreamWrap::IsIPCPipe() { return is_named_pipe_ipc(); } - int LibuvStreamWrap::ReadStart() { - return uv_read_start(stream(), [](uv_handle_t* handle, - size_t suggested_size, - uv_buf_t* buf) { - static_cast(handle->data)->OnUvAlloc(suggested_size, buf); - }, [](uv_stream_t* stream, ssize_t nread, const uv_buf_t* buf) { - static_cast(stream->data)->OnUvRead(nread, buf); - }); + return uv_read_start( + stream(), + [](uv_handle_t* handle, size_t suggested_size, uv_buf_t* buf) { + static_cast(handle->data) + ->OnUvAlloc(suggested_size, buf); + }, + [](uv_stream_t* stream, ssize_t nread, const uv_buf_t* buf) { + LibuvStreamWrap* wrap = static_cast(stream->data); + TryCatchScope try_catch(wrap->env()); + try_catch.SetVerbose(true); + wrap->OnUvRead(nread, buf); + }); } @@ -240,8 +248,7 @@ static MaybeLocal AcceptHandle(Environment* env, return scope.Escape(wrap_obj); } - -void LibuvStreamWrap::OnUvRead(ssize_t nread, const uv_buf_t* buf) { +Maybe LibuvStreamWrap::OnUvRead(ssize_t nread, const uv_buf_t* buf) { HandleScope scope(env()->isolate()); Context::Scope context_scope(env()->context()); uv_handle_type type = UV_UNKNOWN_HANDLE; @@ -269,18 +276,21 @@ void LibuvStreamWrap::OnUvRead(ssize_t nread, const uv_buf_t* buf) { } Local local_pending_obj; - if (pending_obj.ToLocal(&local_pending_obj) && - object()->Set(env()->context(), - env()->pending_handle_string(), - local_pending_obj).IsNothing()) { - return; + if (type != UV_UNKNOWN_HANDLE && + (!pending_obj.ToLocal(&local_pending_obj) || + object() + ->Set(env()->context(), + env()->pending_handle_string(), + local_pending_obj) + .IsNothing())) { + return Nothing(); } } EmitRead(nread, *buf); + return JustVoid(); } - void LibuvStreamWrap::GetWriteQueueSize( const FunctionCallbackInfo& info) { LibuvStreamWrap* wrap; diff --git a/src/stream_wrap.h b/src/stream_wrap.h index 8cbce923bfed89..197303990c90bc 100644 --- a/src/stream_wrap.h +++ b/src/stream_wrap.h @@ -105,9 +105,7 @@ class LibuvStreamWrap : public HandleWrap, public StreamBase { // Callbacks for libuv void OnUvAlloc(size_t suggested_size, uv_buf_t* buf); - // TODO(RaisinTen): Update the return type to a Maybe, so that we can indicate - // if there is a pending exception/termination. - void OnUvRead(ssize_t nread, const uv_buf_t* buf); + v8::Maybe OnUvRead(ssize_t nread, const uv_buf_t* buf); static void AfterUvWrite(uv_write_t* req, int status); static void AfterUvShutdown(uv_shutdown_t* req, int status); diff --git a/src/tcp_wrap.cc b/src/tcp_wrap.cc index 669206fc6bf94b..0fcc12d649eac4 100644 --- a/src/tcp_wrap.cc +++ b/src/tcp_wrap.cc @@ -97,6 +97,7 @@ void TCPWrap::Initialize(Local target, GetSockOrPeerName); env->SetProtoMethod(t, "setNoDelay", SetNoDelay); env->SetProtoMethod(t, "setKeepAlive", SetKeepAlive); + env->SetProtoMethod(t, "reset", Reset); #ifdef _WIN32 env->SetProtoMethod(t, "setSimultaneousAccepts", SetSimultaneousAccepts); @@ -134,6 +135,7 @@ void TCPWrap::RegisterExternalReferences(ExternalReferenceRegistry* registry) { registry->Register(GetSockOrPeerName); registry->Register(SetNoDelay); registry->Register(SetKeepAlive); + registry->Register(Reset); #ifdef _WIN32 registry->Register(SetSimultaneousAccepts); #endif @@ -333,18 +335,50 @@ void TCPWrap::Connect(const FunctionCallbackInfo& args, &wrap->handle_, reinterpret_cast(&addr), AfterConnect); - if (err) + if (err) { delete req_wrap; + } else { + int port = args[2]->Uint32Value(env->context()).FromJust(); + TRACE_EVENT_NESTABLE_ASYNC_BEGIN2(TRACING_CATEGORY_NODE2(net, native), + "connect", + req_wrap, + "ip", + TRACE_STR_COPY(*ip_address), + "port", + port); + } } args.GetReturnValue().Set(err); } +void TCPWrap::Reset(const FunctionCallbackInfo& args) { + TCPWrap* wrap; + ASSIGN_OR_RETURN_UNWRAP( + &wrap, args.Holder(), args.GetReturnValue().Set(UV_EBADF)); + + int err = wrap->Reset(args[0]); + args.GetReturnValue().Set(err); +} + +int TCPWrap::Reset(Local close_callback) { + if (state_ != kInitialized) return 0; + + int err = uv_tcp_close_reset(&handle_, OnClose); + state_ = kClosing; + if (!err & !close_callback.IsEmpty() && close_callback->IsFunction() && + !persistent().IsEmpty()) { + object() + ->Set(env()->context(), env()->handle_onclose_symbol(), close_callback) + .Check(); + } + return err; +} // also used by udp_wrap.cc -Local AddressToJS(Environment* env, - const sockaddr* addr, - Local info) { +MaybeLocal AddressToJS(Environment* env, + const sockaddr* addr, + Local info) { EscapableHandleScope scope(env->isolate()); char ip[INET6_ADDRSTRLEN + UV_IF_NAMESIZE]; const sockaddr_in* a4; @@ -371,8 +405,7 @@ Local AddressToJS(Environment* env, &scopeidlen); if (r) { env->ThrowUVException(r, "uv_if_indextoiid"); - // TODO(addaleax): Do proper MaybeLocal handling here - return scope.Escape(info); + return {}; } } port = ntohs(a6->sin6_port); diff --git a/src/tcp_wrap.h b/src/tcp_wrap.h index 3abf4ded19fd7c..b561fef0d31593 100644 --- a/src/tcp_wrap.h +++ b/src/tcp_wrap.h @@ -88,6 +88,8 @@ class TCPWrap : public ConnectionWrap { const v8::FunctionCallbackInfo& args, int family, std::function uv_ip_addr); + static void Reset(const v8::FunctionCallbackInfo& args); + int Reset(v8::Local close_callback = v8::Local()); #ifdef _WIN32 static void SetSimultaneousAccepts( diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc index 4a0c6aeaa940d2..127a1a6e5d8fe7 100644 --- a/src/udp_wrap.cc +++ b/src/udp_wrap.cc @@ -22,6 +22,7 @@ #include "udp_wrap.h" #include "env-inl.h" #include "node_buffer.h" +#include "node_errors.h" #include "node_sockaddr-inl.h" #include "handle_wrap.h" #include "req_wrap-inl.h" @@ -29,6 +30,7 @@ namespace node { +using errors::TryCatchScope; using v8::Array; using v8::ArrayBuffer; using v8::BackingStore; @@ -728,9 +730,45 @@ void UDPWrap::OnRecv(ssize_t nread, bs = BackingStore::Reallocate(isolate, std::move(bs), nread); } + Local address; + { + bool has_caught = false; + { + TryCatchScope try_catch(env); + if (!AddressToJS(env, addr).ToLocal(&address)) { + DCHECK(try_catch.HasCaught() && !try_catch.HasTerminated()); + argv[2] = try_catch.Exception(); + DCHECK(!argv[2].IsEmpty()); + has_caught = true; + } + } + if (has_caught) { + DCHECK(!argv[2].IsEmpty()); + MakeCallback(env->onerror_string(), arraysize(argv), argv); + return; + } + } + Local ab = ArrayBuffer::New(isolate, std::move(bs)); - argv[2] = Buffer::New(env, ab, 0, ab->ByteLength()).ToLocalChecked(); - argv[3] = AddressToJS(env, addr); + { + bool has_caught = false; + { + TryCatchScope try_catch(env); + if (!Buffer::New(env, ab, 0, ab->ByteLength()).ToLocal(&argv[2])) { + DCHECK(try_catch.HasCaught() && !try_catch.HasTerminated()); + argv[2] = try_catch.Exception(); + DCHECK(!argv[2].IsEmpty()); + has_caught = true; + } + } + if (has_caught) { + DCHECK(!argv[2].IsEmpty()); + MakeCallback(env->onerror_string(), arraysize(argv), argv); + return; + } + } + + argv[3] = address; MakeCallback(env->onmessage_string(), arraysize(argv), argv); } diff --git a/src/util.cc b/src/util.cc index bae5a47a06d8de..b881f9f9f88cee 100644 --- a/src/util.cc +++ b/src/util.cc @@ -164,7 +164,9 @@ std::string GetHumanReadableProcessName() { return SPrintF("%s[%d]", GetProcessTitle("Node.js"), uv_os_getpid()); } -std::vector SplitString(const std::string& in, char delim) { +std::vector SplitString(const std::string& in, + char delim, + bool skipEmpty) { std::vector out; if (in.empty()) return out; @@ -172,7 +174,7 @@ std::vector SplitString(const std::string& in, char delim) { while (in_stream.good()) { std::string item; std::getline(in_stream, item, delim); - if (item.empty()) continue; + if (item.empty() && skipEmpty) continue; out.emplace_back(std::move(item)); } return out; diff --git a/src/util.h b/src/util.h index 06c67d273ba96b..e0175bbe560e3b 100644 --- a/src/util.h +++ b/src/util.h @@ -26,6 +26,8 @@ #include "v8.h" +#include "node.h" + #include #include #include @@ -108,8 +110,8 @@ struct AssertionInfo { const char* message; const char* function; }; -[[noreturn]] void Assert(const AssertionInfo& info); -[[noreturn]] void Abort(); +[[noreturn]] void NODE_EXTERN_PRIVATE Assert(const AssertionInfo& info); +[[noreturn]] void NODE_EXTERN_PRIVATE Abort(); void DumpBacktrace(FILE* fp); // Windows 8+ does not like abort() in Release mode @@ -269,6 +271,34 @@ template constexpr ContainerOfHelper ContainerOf(Inner Outer::*field, Inner* pointer); +class KVStore { + public: + KVStore() = default; + virtual ~KVStore() = default; + KVStore(const KVStore&) = delete; + KVStore& operator=(const KVStore&) = delete; + KVStore(KVStore&&) = delete; + KVStore& operator=(KVStore&&) = delete; + + virtual v8::MaybeLocal Get(v8::Isolate* isolate, + v8::Local key) const = 0; + virtual v8::Maybe Get(const char* key) const = 0; + virtual void Set(v8::Isolate* isolate, + v8::Local key, + v8::Local value) = 0; + virtual int32_t Query(v8::Isolate* isolate, + v8::Local key) const = 0; + virtual int32_t Query(const char* key) const = 0; + virtual void Delete(v8::Isolate* isolate, v8::Local key) = 0; + virtual v8::Local Enumerate(v8::Isolate* isolate) const = 0; + + virtual std::shared_ptr Clone(v8::Isolate* isolate) const; + virtual v8::Maybe AssignFromObject(v8::Local context, + v8::Local entries); + + static std::shared_ptr CreateMapKVStore(); +}; + // Convenience wrapper around v8::String::NewFromOneByte(). inline v8::Local OneByteString(v8::Isolate* isolate, const char* data, @@ -641,7 +671,9 @@ struct FunctionDeleter { template using DeleteFnPtr = typename FunctionDeleter::Pointer; -std::vector SplitString(const std::string& in, char delim); +std::vector SplitString(const std::string& in, + char delim, + bool skipEmpty = true); inline v8::MaybeLocal ToV8Value(v8::Local context, const std::string& str, diff --git a/test/.eslintrc.yaml b/test/.eslintrc.yaml index 878ea7b975df11..e8295cd3e23621 100644 --- a/test/.eslintrc.yaml +++ b/test/.eslintrc.yaml @@ -6,7 +6,6 @@ env: rules: multiline-comment-style: [error, separate-lines] - no-var: error prefer-const: error symbol-description: off diff --git a/test/README.md b/test/README.md index 121ecc89b54225..8a006facc0b228 100644 --- a/test/README.md +++ b/test/README.md @@ -26,10 +26,10 @@ For the tests to run on Windows, be sure to clone Node.js source code with the | `es-module` | Yes | Test ESM module loading. | | `fixtures` | | Test fixtures used in various tests throughout the test suite. | | `internet` | No | Tests that make real outbound network connections. Tests for networking related modules may also be present in other directories, but those tests do not make outbound connections. | -| `js-native-api` | Yes | Tests for Node.js-agnostic [n-api](https://nodejs.org/api/n-api.html) functionality. | +| `js-native-api` | Yes | Tests for Node.js-agnostic [Node-API](https://nodejs.org/api/n-api.html) functionality. | | `known_issues` | Yes | Tests reproducing known issues within the system. All tests inside of this directory are expected to fail. If a test doesn't fail on certain platforms, those should be skipped via `known_issues.status`. | | `message` | Yes | Tests for messages that are output for various conditions (`console.log`, error messages etc.) | -| `node-api` | Yes | Tests for Node.js-specific [n-api](https://nodejs.org/api/n-api.html) functionality. | +| `node-api` | Yes | Tests for Node.js-specific [Node-API](https://nodejs.org/api/n-api.html) functionality. | | `parallel` | Yes | Various tests that are able to be run in parallel. | | `pseudo-tty` | Yes | Tests that require stdin/stdout/stderr to be a TTY. | | `pummel` | No | Various tests for various modules / system functionality operating under load. | diff --git a/test/abort/abort.status b/test/abort/abort.status index e56c24ff433d63..24e6cbb73192e4 100644 --- a/test/abort/abort.status +++ b/test/abort/abort.status @@ -9,3 +9,13 @@ prefix abort [$system==ibmi] # https://github.com/nodejs/node/issues/34410 test-addon-register-signal-handler: PASS,FLAKY + +[$system==solaris] # Also applies to SmartOS +# https://github.com/nodejs/node/issues/43457 +test-abort-fatal-error: PASS, FLAKY +test-abort-uncaught-exception: PASS, FLAKY +test-addon-register-signal-handler: PASS, FLAKY +test-process-abort-exitcode: PASS, FLAKY +test-signal-handler: PASS, FLAKY +test-worker-abort-uncaught-exception: PASS, FLAKY +test-zlib-invalid-internals-usage: PASS, FLAKY diff --git a/test/async-hooks/async-hooks.status b/test/async-hooks/async-hooks.status index 7f36d5a78a6e2b..673883e4fe3d4d 100644 --- a/test/async-hooks/async-hooks.status +++ b/test/async-hooks/async-hooks.status @@ -15,6 +15,8 @@ prefix async-hooks [$arch==arm || $arch==arm64] [$system==solaris] # Also applies to SmartOS +# https://github.com/nodejs/node/issues/43457 +test-callback-error: PASS, FLAKY [$system==freebsd] diff --git a/test/cctest/test_inspector_socket_server.cc b/test/cctest/test_inspector_socket_server.cc index 7d5d0929def26b..451fbbd6acfc4d 100644 --- a/test/cctest/test_inspector_socket_server.cc +++ b/test/cctest/test_inspector_socket_server.cc @@ -301,11 +301,11 @@ class ServerHolder { class TestSocketServerDelegate : public SocketServerDelegate { public: - explicit TestSocketServerDelegate( - ServerHolder* server, - const std::vector& target_ids) + explicit TestSocketServerDelegate(ServerHolder* server, + const std::vector& target_ids) : harness_(server), targets_(target_ids), + server_(nullptr), session_id_(0) {} ~TestSocketServerDelegate() override { diff --git a/test/cctest/test_json_utils.cc b/test/cctest/test_json_utils.cc index 06a9074a61baf1..3d5a7892117064 100644 --- a/test/cctest/test_json_utils.cc +++ b/test/cctest/test_json_utils.cc @@ -12,11 +12,11 @@ TEST(JSONUtilsTest, EscapeJsonChars) { const std::string expected[0x20] = { "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", - "\\u0006", "\\u0007", "\\b", "\\t", "\\n", "\\v", "\\f", "\\r", - "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", - "\\u0014", "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", - "\\u001a", "\\u001b", "\\u001c", "\\u001d", "\\u001e", "\\u001f" - }; + "\\u0006", "\\u0007", "\\b", "\\t", "\\n", "\\u000b", + "\\f", "\\r", "\\u000e", "\\u000f", "\\u0010", "\\u0011", + "\\u0012", "\\u0013", "\\u0014", "\\u0015", "\\u0016", "\\u0017", + "\\u0018", "\\u0019", "\\u001a", "\\u001b", "\\u001c", "\\u001d", + "\\u001e", "\\u001f"}; for (int i = 0; i < 0x20; ++i) { char symbols[1] = { static_cast(i) }; std::string input(symbols, 1); diff --git a/test/common/README.md b/test/common/README.md index f1789c1577d8ca..517fce47cd2bd4 100644 --- a/test/common/README.md +++ b/test/common/README.md @@ -59,7 +59,7 @@ On non-Windows platforms, this always returns `true`. ### `createZeroFilledFile(filename)` -Creates a 10 MB file of all null characters. +Creates a 10 MiB file of all null characters. ### `enoughTestMem` @@ -299,6 +299,40 @@ If `fn` is not provided, an empty function will be used. Returns a function that triggers an `AssertionError` if it is invoked. `msg` is used as the error message for the `AssertionError`. +### `mustNotMutateObjectDeep([target])` + +* `target` [\][] default = `undefined` +* return [\][] + +If `target` is an Object, returns a proxy object that triggers +an `AssertionError` on mutation attempt, including mutation of deeply nested +Objects. Otherwise, it returns `target` directly. + +Use of this function is encouraged for relevant regression tests. + +```mjs +import { open } from 'node:fs/promises'; +import { mustNotMutateObjectDeep } from '../common/index.mjs'; + +const _mutableOptions = { length: 4, position: 8 }; +const options = mustNotMutateObjectDeep(_mutableOptions); + +// In filehandle.read or filehandle.write, attempt to mutate options will throw +// In the test code, options can still be mutated via _mutableOptions +const fh = await open('/path/to/file', 'r+'); +const { buffer } = await fh.read(options); +_mutableOptions.position = 4; +await fh.write(buffer, options); + +// Inline usage +const stats = await fh.stat(mustNotMutateObjectDeep({ bigint: true })); +console.log(stats.size); +``` + +Caveats: built-in objects that make use of their internal slots (for example, +`Map`s and `Set`s) might not work with this function. It returns Functions +directly, not preventing their mutation. + ### `mustSucceed([fn])` * `fn` [\][] default = () => {} @@ -359,7 +393,7 @@ Platform normalized `pwd` command options. Usage example: ```js const common = require('../common'); -const { spawn } = require('child_process'); +const { spawn } = require('node:child_process'); spawn(...common.pwdCommand, { stdio: ['pipe'] }); ``` @@ -1024,6 +1058,7 @@ See [the WPT tests README][] for details. []: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function []: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object []: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp +[]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Data_types []: https://github.com/tc39/proposal-bigint []: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type []: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type diff --git a/test/common/index.js b/test/common/index.js index c852dced52ee9f..8e75c0ebb0c6b8 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -24,12 +24,12 @@ const process = global.process; // Some tests tamper with the process global. const assert = require('assert'); -const { exec, execSync, spawnSync } = require('child_process'); +const { exec, execSync, spawn, spawnSync } = require('child_process'); const fs = require('fs'); // Do not require 'os' until needed so that test-os-checked-function can // monkey patch it. If 'os' is required here, that test will fail. const path = require('path'); -const util = require('util'); +const { inspect } = require('util'); const { isMainThread } = require('worker_threads'); const tmpdir = require('./tmpdir'); @@ -97,7 +97,7 @@ if (process.argv.length === 2 && (process.features.inspector || !flag.startsWith('--inspect'))) { console.log( 'NOTE: The test started as a child_process using these flags:', - util.inspect(flags), + inspect(flags), 'Use NODE_SKIP_FLAG_CHECK to run the test with the original flags.' ); const args = [...flags, ...process.execArgv, ...process.argv.slice(1)]; @@ -120,6 +120,17 @@ const isFreeBSD = process.platform === 'freebsd'; const isOpenBSD = process.platform === 'openbsd'; const isLinux = process.platform === 'linux'; const isOSX = process.platform === 'darwin'; +const isPi = (() => { + try { + // Normal Raspberry Pi detection is to find the `Raspberry Pi` string in + // the contents of `/sys/firmware/devicetree/base/model` but that doesn't + // work inside a container. Match the chipset model number instead. + const cpuinfo = fs.readFileSync('/proc/cpuinfo', { encoding: 'utf8' }); + return /^Hardware\s*:\s*(.*)$/im.exec(cpuinfo)?.[1] === 'BCM2835'; + } catch { + return false; + } +})(); const isDumbTerminal = process.env.TERM === 'dumb'; @@ -138,7 +149,7 @@ if (process.env.NODE_TEST_WITH_ASYNC_HOOKS) { process.on('exit', () => { // Iterate through handles to make sure nothing crashes for (const k in initHandles) - util.inspect(initHandles[k]); + inspect(initHandles[k]); }); const _queueDestroyAsyncId = async_wrap.queueDestroyAsyncId; @@ -148,7 +159,7 @@ if (process.env.NODE_TEST_WITH_ASYNC_HOOKS) { process._rawDebug(); throw new Error(`same id added to destroy list twice (${id})`); } - destroyListList[id] = util.inspect(new Error()); + destroyListList[id] = inspect(new Error()); _queueDestroyAsyncId(id); }; @@ -162,7 +173,7 @@ if (process.env.NODE_TEST_WITH_ASYNC_HOOKS) { } initHandles[id] = { resource, - stack: util.inspect(new Error()).substr(6) + stack: inspect(new Error()).substr(6) }; }, before() { }, @@ -173,7 +184,7 @@ if (process.env.NODE_TEST_WITH_ASYNC_HOOKS) { process._rawDebug(); throw new Error(`destroy called for same id (${id})`); } - destroydIdsList[id] = util.inspect(new Error()); + destroydIdsList[id] = inspect(new Error()); }, }).enable(); } @@ -246,15 +257,10 @@ function platformTimeout(ms) { if (isAIX) return multipliers.two * ms; // Default localhost speed is slower on AIX - if (process.arch !== 'arm') - return ms; + if (isPi) + return multipliers.two * ms; // Raspberry Pi devices - const armv = process.config.variables.arm_version; - - if (armv === '7') - return multipliers.two * ms; // ARMv7 - - return ms; // ARMv8+ + return ms; } let knownGlobals = [ @@ -309,6 +315,9 @@ if (hasCrypto && global.crypto) { knownGlobals.push(global.CryptoKey); knownGlobals.push(global.SubtleCrypto); } +if (global.CustomEvent) { + knownGlobals.push(global.CustomEvent); +} function allowGlobals(...allowlist) { knownGlobals = knownGlobals.concat(allowlist); @@ -397,7 +406,7 @@ function _mustCallInner(fn, criteria = 1, field) { const context = { [field]: criteria, actual: 0, - stack: util.inspect(new Error()), + stack: inspect(new Error()), name: fn.name || '' }; @@ -485,13 +494,59 @@ function mustNotCall(msg) { const callSite = getCallSite(mustNotCall); return function mustNotCall(...args) { const argsInfo = args.length > 0 ? - `\ncalled with arguments: ${args.map(util.inspect).join(', ')}` : ''; + `\ncalled with arguments: ${args.map((arg) => inspect(arg)).join(', ')}` : ''; assert.fail( `${msg || 'function should not have been called'} at ${callSite}` + argsInfo); }; } +const _mustNotMutateObjectDeepProxies = new WeakMap(); + +function mustNotMutateObjectDeep(original) { + // Return primitives and functions directly. Primitives are immutable, and + // proxied functions are impossible to compare against originals, e.g. with + // `assert.deepEqual()`. + if (original === null || typeof original !== 'object') { + return original; + } + + const cachedProxy = _mustNotMutateObjectDeepProxies.get(original); + if (cachedProxy) { + return cachedProxy; + } + + const _mustNotMutateObjectDeepHandler = { + __proto__: null, + defineProperty(target, property, descriptor) { + assert.fail(`Expected no side effects, got ${inspect(property)} ` + + 'defined'); + }, + deleteProperty(target, property) { + assert.fail(`Expected no side effects, got ${inspect(property)} ` + + 'deleted'); + }, + get(target, prop, receiver) { + return mustNotMutateObjectDeep(Reflect.get(target, prop, receiver)); + }, + preventExtensions(target) { + assert.fail('Expected no side effects, got extensions prevented on ' + + inspect(target)); + }, + set(target, property, value, receiver) { + assert.fail(`Expected no side effects, got ${inspect(value)} ` + + `assigned to ${inspect(property)}`); + }, + setPrototypeOf(target, prototype) { + assert.fail(`Expected no side effects, got set prototype to ${prototype}`); + } + }; + + const proxy = new Proxy(original, _mustNotMutateObjectDeepHandler); + _mustNotMutateObjectDeepProxies.set(original, proxy); + return proxy; +} + function printSkipMessage(msg) { console.log(`1..0 # Skipped: ${msg}`); } @@ -587,7 +642,7 @@ function expectWarning(nameOrMap, expected, code) { if (!catchWarning[warning.name]) { throw new TypeError( `"${warning.name}" was triggered without being expected.\n` + - util.inspect(warning) + inspect(warning) ); } catchWarning[warning.name](warning); @@ -608,7 +663,7 @@ function expectsError(validator, exact) { if (args.length !== 1) { // Do not use `assert.strictEqual()` to prevent `inspect` from // always being called. - assert.fail(`Expected one argument, got ${util.inspect(args)}`); + assert.fail(`Expected one argument, got ${inspect(args)}`); } const error = args.pop(); const descriptor = Object.getOwnPropertyDescriptor(error, 'message'); @@ -653,6 +708,8 @@ function getArrayBufferViews(buf) { Uint32Array, Float32Array, Float64Array, + BigInt64Array, + BigUint64Array, DataView, ]; @@ -708,14 +765,15 @@ function invalidArgTypeHelper(input) { return ` Received function ${input.name}`; } if (typeof input === 'object') { - if (input.constructor && input.constructor.name) { + if (input.constructor?.name) { return ` Received an instance of ${input.constructor.name}`; } - return ` Received ${util.inspect(input, { depth: -1 })}`; + return ` Received ${inspect(input, { depth: -1 })}`; } - let inspected = util.inspect(input, { colors: false }); - if (inspected.length > 25) - inspected = `${inspected.slice(0, 25)}...`; + + let inspected = inspect(input, { colors: false }); + if (inspected.length > 28) { inspected = `${inspected.slice(inspected, 0, 25)}...`; } + return ` Received type ${typeof input} (${inspected})`; } @@ -763,6 +821,36 @@ function requireNoPackageJSONAbove(dir = __dirname) { } } +function spawnPromisified(...args) { + let stderr = ''; + let stdout = ''; + + const child = spawn(...args); + child.stderr.setEncoding('utf8'); + child.stderr.on('data', (data) => { stderr += data; }); + child.stdout.setEncoding('utf8'); + child.stdout.on('data', (data) => { stdout += data; }); + + return new Promise((resolve, reject) => { + child.on('close', (code, signal) => { + resolve({ + code, + signal, + stderr, + stdout, + }); + }); + child.on('error', (code, signal) => { + reject({ + code, + signal, + stderr, + stdout, + }); + }); + }); +} + const common = { allowGlobals, buildType, @@ -790,12 +878,14 @@ const common = { isMainThread, isOpenBSD, isOSX, + isPi, isSunOS, isWindows, localIPv6Hosts, mustCall, mustCallAtLeast, mustNotCall, + mustNotMutateObjectDeep, mustSucceed, nodeProcessAborted, PIPE, @@ -810,6 +900,7 @@ const common = { skipIfEslintMissing, skipIfInspectorDisabled, skipIfWorker, + spawnPromisified, get enoughTestMem() { return require('os').totalmem() > 0x70000000; /* 1.75 Gb */ diff --git a/test/common/index.mjs b/test/common/index.mjs index ec181dcacb4d72..2b30f499343cc4 100644 --- a/test/common/index.mjs +++ b/test/common/index.mjs @@ -23,6 +23,7 @@ const { hasCrypto, hasIPv6, childShouldThrowAndAbort, + checkoutEOL, createZeroFilledFile, platformTimeout, allowGlobals, @@ -35,6 +36,7 @@ const { canCreateSymLink, getCallSite, mustNotCall, + mustNotMutateObjectDeep, printSkipMessage, skip, nodeProcessAborted, @@ -46,7 +48,8 @@ const { getArrayBufferViews, getBufferSources, getTTYfd, - runWithInvalidFD + runWithInvalidFD, + spawnPromisified, } = common; export { @@ -69,6 +72,7 @@ export { hasCrypto, hasIPv6, childShouldThrowAndAbort, + checkoutEOL, createZeroFilledFile, platformTimeout, allowGlobals, @@ -81,6 +85,7 @@ export { canCreateSymLink, getCallSite, mustNotCall, + mustNotMutateObjectDeep, printSkipMessage, skip, nodeProcessAborted, @@ -93,5 +98,6 @@ export { getBufferSources, getTTYfd, runWithInvalidFD, - createRequire + createRequire, + spawnPromisified, }; diff --git a/test/common/inspector-helper.js b/test/common/inspector-helper.js index 0a47cb1d58981a..e8e2c2de5cd1ee 100644 --- a/test/common/inspector-helper.js +++ b/test/common/inspector-helper.js @@ -5,8 +5,7 @@ const fs = require('fs'); const http = require('http'); const fixtures = require('../common/fixtures'); const { spawn } = require('child_process'); -const { parse: parseURL } = require('url'); -const { pathToFileURL } = require('url'); +const { URL, pathToFileURL } = require('url'); const { EventEmitter } = require('events'); const _MAINSCRIPT = fixtures.path('loop.js'); @@ -417,7 +416,7 @@ class NodeInstance extends EventEmitter { const port = await this.portPromise; return http.get({ port, - path: parseURL(devtoolsUrl).path, + path: new URL(devtoolsUrl).pathname, headers: { 'Connection': 'Upgrade', 'Upgrade': 'websocket', diff --git a/test/common/report.js b/test/common/report.js index f1c0d05e490393..e9f252b079ed7f 100644 --- a/test/common/report.js +++ b/test/common/report.js @@ -193,14 +193,32 @@ function _validateContent(report, fields = []) { // Verify the format of the javascriptHeap section. const heap = report.javascriptHeap; - const jsHeapFields = ['totalMemory', 'totalCommittedMemory', 'usedMemory', - 'availableMemory', 'memoryLimit', 'heapSpaces']; + // See `PrintGCStatistics` in node_report.cc + const jsHeapFields = [ + 'totalMemory', + 'executableMemory', + 'totalCommittedMemory', + 'availableMemory', + 'totalGlobalHandlesMemory', + 'usedGlobalHandlesMemory', + 'usedMemory', + 'memoryLimit', + 'mallocedMemory', + 'externalMemory', + 'peakMallocedMemory', + 'nativeContextCount', + 'detachedContextCount', + 'doesZapGarbage', + 'heapSpaces', + ]; checkForUnknownFields(heap, jsHeapFields); - assert(Number.isSafeInteger(heap.totalMemory)); - assert(Number.isSafeInteger(heap.totalCommittedMemory)); - assert(Number.isSafeInteger(heap.usedMemory)); - assert(Number.isSafeInteger(heap.availableMemory)); - assert(Number.isSafeInteger(heap.memoryLimit)); + // Do not check `heapSpaces` here + for (let i = 0; i < jsHeapFields.length - 1; i++) { + assert( + Number.isSafeInteger(heap[jsHeapFields[i]]), + `heap.${jsHeapFields[i]} is not a safe integer` + ); + } assert(typeof heap.heapSpaces === 'object' && heap.heapSpaces !== null); const heapSpaceFields = ['memorySize', 'committedMemory', 'capacity', 'used', 'available']; diff --git a/test/common/wpt.js b/test/common/wpt.js index 2a772f6f0fa8b1..ff969f4358c990 100644 --- a/test/common/wpt.js +++ b/test/common/wpt.js @@ -56,7 +56,7 @@ class ResourceLoader { /** * Load a resource in test/fixtures/wpt specified with a URL * @param {string} from the path of the file loading this resource, - * relative to thw WPT folder. + * relative to the WPT folder. * @param {string} url the url of the resource being loaded. * @param {boolean} asFetch if true, return the resource in a * pseudo-Response object. @@ -78,7 +78,7 @@ class ResourceLoader { } class StatusRule { - constructor(key, value, pattern = undefined) { + constructor(key, value, pattern) { this.key = key; this.requires = value.requires || []; this.fail = value.fail; diff --git a/test/common/wpt/worker.js b/test/common/wpt/worker.js index 468e950ac10cb1..47e119c22dcd84 100644 --- a/test/common/wpt/worker.js +++ b/test/common/wpt/worker.js @@ -8,7 +8,8 @@ const resource = new ResourceLoader(workerData.wptPath); global.self = global; global.GLOBAL = { - isWindow() { return false; } + isWindow() { return false; }, + isShadowRealm() { return false; } }; global.require = require; diff --git a/test/doctool/test-doctool-versions.mjs b/test/doctool/test-doctool-versions.mjs index 87e17ba07277dd..10eb8467bb110c 100644 --- a/test/doctool/test-doctool-versions.mjs +++ b/test/doctool/test-doctool-versions.mjs @@ -62,8 +62,8 @@ for (const version of versions) { // Check that the minimum number of versions were returned. // Later versions are allowed, but not checked for here (they were checked // above). -// Also check for the previous semver major -- From master this will be the -// most recent major release. +// Also check for the previous semver major -- From the main branch this will be +// the most recent major release. const thisMajor = Number.parseInt(process.versions.node.split('.')[0]); const prevMajorString = `${thisMajor - 1}.x`; if (!expected.includes(prevMajorString)) { diff --git a/test/errors/test-error-value-type-detection.mjs b/test/errors/test-error-value-type-detection.mjs new file mode 100644 index 00000000000000..75e6493a9bbd09 --- /dev/null +++ b/test/errors/test-error-value-type-detection.mjs @@ -0,0 +1,150 @@ +// Flags: --expose-internals + +import '../common/index.mjs'; +import { strictEqual } from 'node:assert'; +import errorsModule from 'internal/errors'; + + +const { determineSpecificType } = errorsModule; + +strictEqual( + determineSpecificType(1n), + 'type bigint (1n)', +); + +strictEqual( + determineSpecificType(false), + 'type boolean (false)', +); + +strictEqual( + determineSpecificType(2), + 'type number (2)', +); + +strictEqual( + determineSpecificType(NaN), + 'type number (NaN)', +); + +strictEqual( + determineSpecificType(Infinity), + 'type number (Infinity)', +); + +strictEqual( + determineSpecificType(Object.create(null)), + '[Object: null prototype] {}', +); + +strictEqual( + determineSpecificType(''), + "type string ('')", +); + +strictEqual( + determineSpecificType(Symbol('foo')), + 'type symbol (Symbol(foo))', +); + +strictEqual( + determineSpecificType(function foo() {}), + 'function foo', +); + +strictEqual( + determineSpecificType(null), + 'null', +); + +strictEqual( + determineSpecificType(undefined), + 'undefined', +); + +strictEqual( + determineSpecificType([]), + 'an instance of Array', +); + +strictEqual( + determineSpecificType(new Array()), + 'an instance of Array', +); +strictEqual( + determineSpecificType(new BigInt64Array()), + 'an instance of BigInt64Array', +); +strictEqual( + determineSpecificType(new BigUint64Array()), + 'an instance of BigUint64Array', +); +strictEqual( + determineSpecificType(new Int8Array()), + 'an instance of Int8Array', +); +strictEqual( + determineSpecificType(new Int16Array()), + 'an instance of Int16Array', +); +strictEqual( + determineSpecificType(new Int32Array()), + 'an instance of Int32Array', +); +strictEqual( + determineSpecificType(new Float32Array()), + 'an instance of Float32Array', +); +strictEqual( + determineSpecificType(new Float64Array()), + 'an instance of Float64Array', +); +strictEqual( + determineSpecificType(new Uint8Array()), + 'an instance of Uint8Array', +); +strictEqual( + determineSpecificType(new Uint8ClampedArray()), + 'an instance of Uint8ClampedArray', +); +strictEqual( + determineSpecificType(new Uint16Array()), + 'an instance of Uint16Array', +); +strictEqual( + determineSpecificType(new Uint32Array()), + 'an instance of Uint32Array', +); + +strictEqual( + determineSpecificType(new Date()), + 'an instance of Date', +); + +strictEqual( + determineSpecificType(new Map()), + 'an instance of Map', +); +strictEqual( + determineSpecificType(new WeakMap()), + 'an instance of WeakMap', +); + +strictEqual( + determineSpecificType({}), + 'an instance of Object', +); + +strictEqual( + determineSpecificType(Promise.resolve('foo')), + 'an instance of Promise', +); + +strictEqual( + determineSpecificType(new Set()), + 'an instance of Set', +); +strictEqual( + determineSpecificType(new WeakSet()), + 'an instance of WeakSet', +); diff --git a/test/es-module/test-cjs-esm-warn.js b/test/es-module/test-cjs-esm-warn.js index d7eeb65b152a4a..c1d60a209502bb 100644 --- a/test/es-module/test-cjs-esm-warn.js +++ b/test/es-module/test-cjs-esm-warn.js @@ -1,10 +1,12 @@ 'use strict'; -const common = require('../common'); -const fixtures = require('../common/fixtures'); -const { spawn } = require('child_process'); -const assert = require('assert'); -const path = require('path'); +const { spawnPromisified } = require('../common'); +const fixtures = require('../common/fixtures.js'); +const assert = require('node:assert'); +const path = require('node:path'); +const { execPath } = require('node:process'); +const { describe, it } = require('node:test'); + const requiringCjsAsEsm = path.resolve(fixtures.path('/es-modules/cjs-esm.js')); const requiringEsm = path.resolve(fixtures.path('/es-modules/cjs-esm-esm.js')); @@ -12,53 +14,55 @@ const pjson = path.resolve( fixtures.path('/es-modules/package-type-module/package.json') ); -{ - const required = path.resolve( - fixtures.path('/es-modules/package-type-module/cjs.js') - ); - const basename = 'cjs.js'; - const child = spawn(process.execPath, [requiringCjsAsEsm]); - let stderr = ''; - child.stderr.setEncoding('utf8'); - child.stderr.on('data', (data) => { - stderr += data; - }); - child.on('close', common.mustCall((code, signal) => { + +describe('CJS ↔︎ ESM interop warnings', { concurrency: true }, () => { + + it(async () => { + const required = path.resolve( + fixtures.path('/es-modules/package-type-module/cjs.js') + ); + const basename = 'cjs.js'; + const { code, signal, stderr } = await spawnPromisified(execPath, [requiringCjsAsEsm]); + + assert.ok( + stderr.replaceAll('\r', '').includes( + `Error [ERR_REQUIRE_ESM]: require() of ES Module ${required} from ${requiringCjsAsEsm} not supported.\n` + ) + ); + assert.ok( + stderr.replaceAll('\r', '').includes( + `Instead rename ${basename} to end in .cjs, change the requiring ` + + 'code to use dynamic import() which is available in all CommonJS ' + + `modules, or change "type": "module" to "type": "commonjs" in ${pjson} to ` + + 'treat all .js files as CommonJS (using .mjs for all ES modules ' + + 'instead).\n' + ) + ); + assert.strictEqual(code, 1); assert.strictEqual(signal, null); + }); - assert.ok(stderr.replaceAll('\r', '').includes( - `Error [ERR_REQUIRE_ESM]: require() of ES Module ${required} from ${ - requiringCjsAsEsm} not supported.\n`)); - assert.ok(stderr.replaceAll('\r', '').includes( - `Instead rename ${basename} to end in .cjs, change the requiring ` + - 'code to use dynamic import() which is available in all CommonJS ' + - `modules, or change "type": "module" to "type": "commonjs" in ${pjson} to ` + - 'treat all .js files as CommonJS (using .mjs for all ES modules ' + - 'instead).\n')); - })); -} + it(async () => { + const required = path.resolve( + fixtures.path('/es-modules/package-type-module/esm.js') + ); + const basename = 'esm.js'; + const { code, signal, stderr } = await spawnPromisified(execPath, [requiringEsm]); + + assert.ok( + stderr.replace(/\r/g, '').includes( + `Error [ERR_REQUIRE_ESM]: require() of ES Module ${required} from ${requiringEsm} not supported.\n` + ) + ); + assert.ok( + stderr.replace(/\r/g, '').includes( + `Instead change the require of ${basename} in ${requiringEsm} to` + + ' a dynamic import() which is available in all CommonJS modules.\n' + ) + ); -{ - const required = path.resolve( - fixtures.path('/es-modules/package-type-module/esm.js') - ); - const basename = 'esm.js'; - const child = spawn(process.execPath, [requiringEsm]); - let stderr = ''; - child.stderr.setEncoding('utf8'); - child.stderr.on('data', (data) => { - stderr += data; - }); - child.on('close', common.mustCall((code, signal) => { assert.strictEqual(code, 1); assert.strictEqual(signal, null); - - assert.ok(stderr.replace(/\r/g, '').includes( - `Error [ERR_REQUIRE_ESM]: require() of ES Module ${required} from ${ - requiringEsm} not supported.\n`)); - assert.ok(stderr.replace(/\r/g, '').includes( - `Instead change the require of ${basename} in ${requiringEsm} to` + - ' a dynamic import() which is available in all CommonJS modules.\n')); - })); -} + }); +}); diff --git a/test/es-module/test-esm-cjs-builtins.js b/test/es-module/test-esm-cjs-builtins.js index 63aae732904137..c49abfd8c93222 100644 --- a/test/es-module/test-esm-cjs-builtins.js +++ b/test/es-module/test-esm-cjs-builtins.js @@ -1,21 +1,20 @@ 'use strict'; -const common = require('../common'); -const fixtures = require('../common/fixtures'); -const { spawn } = require('child_process'); -const assert = require('assert'); +const { spawnPromisified } = require('../common'); +const fixtures = require('../common/fixtures.js'); +const assert = require('node:assert'); +const { execPath } = require('node:process'); +const { describe, it } = require('node:test'); + const entry = fixtures.path('/es-modules/builtin-imports-case.mjs'); -const child = spawn(process.execPath, [entry]); -child.stderr.setEncoding('utf8'); -let stdout = ''; -child.stdout.setEncoding('utf8'); -child.stdout.on('data', (data) => { - stdout += data; +describe('ESM: importing builtins & CJS', () => { + it('should work', async () => { + const { code, signal, stdout } = await spawnPromisified(execPath, [entry]); + + assert.strictEqual(code, 0); + assert.strictEqual(signal, null); + assert.strictEqual(stdout, 'ok\n'); + }); }); -child.on('close', common.mustCall((code, signal) => { - assert.strictEqual(code, 0); - assert.strictEqual(signal, null); - assert.strictEqual(stdout, 'ok\n'); -})); diff --git a/test/es-module/test-esm-cjs-exports.js b/test/es-module/test-esm-cjs-exports.js index 7db2c6fdb5971b..4a5a9ffceecc2a 100644 --- a/test/es-module/test-esm-cjs-exports.js +++ b/test/es-module/test-esm-cjs-exports.js @@ -1,35 +1,29 @@ 'use strict'; -const common = require('../common'); -const fixtures = require('../common/fixtures'); -const { spawn } = require('child_process'); -const assert = require('assert'); +const { spawnPromisified } = require('../common'); +const fixtures = require('../common/fixtures.js'); +const assert = require('node:assert'); +const { execPath } = require('node:process'); +const { describe, it } = require('node:test'); -const entry = fixtures.path('/es-modules/cjs-exports.mjs'); -let child = spawn(process.execPath, [entry]); -child.stderr.setEncoding('utf8'); -let stdout = ''; -child.stdout.setEncoding('utf8'); -child.stdout.on('data', (data) => { - stdout += data; -}); -child.on('close', common.mustCall((code, signal) => { - assert.strictEqual(code, 0); - assert.strictEqual(signal, null); - assert.strictEqual(stdout, 'ok\n'); -})); +describe('ESM: importing CJS', { concurrency: true }, () => { + it('should support valid CJS exports', async () => { + const validEntry = fixtures.path('/es-modules/cjs-exports.mjs'); + const { code, signal, stdout } = await spawnPromisified(execPath, [validEntry]); + + assert.strictEqual(code, 0); + assert.strictEqual(signal, null); + assert.strictEqual(stdout, 'ok\n'); + }); + + it('should eror on invalid CJS exports', async () => { + const invalidEntry = fixtures.path('/es-modules/cjs-exports-invalid.mjs'); + const { code, signal, stderr } = await spawnPromisified(execPath, [invalidEntry]); -const entryInvalid = fixtures.path('/es-modules/cjs-exports-invalid.mjs'); -child = spawn(process.execPath, [entryInvalid]); -let stderr = ''; -child.stderr.setEncoding('utf8'); -child.stderr.on('data', (data) => { - stderr += data; + assert.strictEqual(code, 1); + assert.strictEqual(signal, null); + assert.ok(stderr.includes('Warning: To load an ES module')); + assert.ok(stderr.includes('Unexpected token \'export\'')); + }); }); -child.on('close', common.mustCall((code, signal) => { - assert.strictEqual(code, 1); - assert.strictEqual(signal, null); - assert.ok(stderr.includes('Warning: To load an ES module')); - assert.ok(stderr.includes('Unexpected token \'export\'')); -})); diff --git a/test/es-module/test-esm-cjs-load-error-note.mjs b/test/es-module/test-esm-cjs-load-error-note.mjs index 0298432441391c..4df9e903eb627a 100644 --- a/test/es-module/test-esm-cjs-load-error-note.mjs +++ b/test/es-module/test-esm-cjs-load-error-note.mjs @@ -1,163 +1,96 @@ -import { mustCall } from '../common/index.mjs'; -import assert from 'assert'; -import fixtures from '../common/fixtures.js'; -import { spawn } from 'child_process'; +import { spawnPromisified } from '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import assert from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; -const Export1 = fixtures.path('/es-modules/es-note-unexpected-export-1.cjs'); -const Export2 = fixtures.path('/es-modules/es-note-unexpected-export-2.cjs'); -const Import1 = fixtures.path('/es-modules/es-note-unexpected-import-1.cjs'); -const Import2 = fixtures.path('/es-modules/es-note-promiserej-import-2.cjs'); -const Import3 = fixtures.path('/es-modules/es-note-unexpected-import-3.cjs'); -const Import4 = fixtures.path('/es-modules/es-note-unexpected-import-4.cjs'); -const Import5 = fixtures.path('/es-modules/es-note-unexpected-import-5.cjs'); -const Error1 = fixtures.path('/es-modules/es-note-error-1.mjs'); -const Error2 = fixtures.path('/es-modules/es-note-error-2.mjs'); -const Error3 = fixtures.path('/es-modules/es-note-error-3.mjs'); -const Error4 = fixtures.path('/es-modules/es-note-error-4.mjs'); // Expect note to be included in the error output const expectedNote = 'To load an ES module, ' + 'set "type": "module" in the package.json ' + 'or use the .mjs extension.'; -const expectedCode = 1; - -const pExport1 = spawn(process.execPath, [Export1]); -let pExport1Stderr = ''; -pExport1.stderr.setEncoding('utf8'); -pExport1.stderr.on('data', (data) => { - pExport1Stderr += data; -}); -pExport1.on('close', mustCall((code) => { - assert.strictEqual(code, expectedCode); - assert.ok(pExport1Stderr.includes(expectedNote), - `${expectedNote} not found in ${pExport1Stderr}`); -})); - - -const pExport2 = spawn(process.execPath, [Export2]); -let pExport2Stderr = ''; -pExport2.stderr.setEncoding('utf8'); -pExport2.stderr.on('data', (data) => { - pExport2Stderr += data; -}); -pExport2.on('close', mustCall((code) => { - assert.strictEqual(code, expectedCode); - assert.ok(pExport2Stderr.includes(expectedNote), - `${expectedNote} not found in ${pExport2Stderr}`); -})); - -const pImport1 = spawn(process.execPath, [Import1]); -let pImport1Stderr = ''; -pImport1.stderr.setEncoding('utf8'); -pImport1.stderr.on('data', (data) => { - pImport1Stderr += data; -}); -pImport1.on('close', mustCall((code) => { - assert.strictEqual(code, expectedCode); - assert.ok(pImport1Stderr.includes(expectedNote), - `${expectedNote} not found in ${pExport1Stderr}`); -})); - -// Note this test shouldn't include the note -const pImport2 = spawn(process.execPath, [Import2]); -let pImport2Stderr = ''; -pImport2.stderr.setEncoding('utf8'); -pImport2.stderr.on('data', (data) => { - pImport2Stderr += data; -}); -pImport2.on('close', mustCall((code) => { - assert.strictEqual(code, expectedCode); - assert.ok(!pImport2Stderr.includes(expectedNote), - `${expectedNote} must not be included in ${pImport2Stderr}`); -})); - -const pImport3 = spawn(process.execPath, [Import3]); -let pImport3Stderr = ''; -pImport3.stderr.setEncoding('utf8'); -pImport3.stderr.on('data', (data) => { - pImport3Stderr += data; -}); -pImport3.on('close', mustCall((code) => { - assert.strictEqual(code, expectedCode); - assert.ok(pImport3Stderr.includes(expectedNote), - `${expectedNote} not found in ${pImport3Stderr}`); -})); - - -const pImport4 = spawn(process.execPath, [Import4]); -let pImport4Stderr = ''; -pImport4.stderr.setEncoding('utf8'); -pImport4.stderr.on('data', (data) => { - pImport4Stderr += data; -}); -pImport4.on('close', mustCall((code) => { - assert.strictEqual(code, expectedCode); - assert.ok(pImport4Stderr.includes(expectedNote), - `${expectedNote} not found in ${pImport4Stderr}`); -})); - -// Must exit non-zero and show note -const pImport5 = spawn(process.execPath, [Import5]); -let pImport5Stderr = ''; -pImport5.stderr.setEncoding('utf8'); -pImport5.stderr.on('data', (data) => { - pImport5Stderr += data; -}); -pImport5.on('close', mustCall((code) => { - assert.strictEqual(code, expectedCode); - assert.ok(!pImport5Stderr.includes(expectedNote), - `${expectedNote} must not be included in ${pImport5Stderr}`); -})); - -const pError1 = spawn(process.execPath, [Error1]); -let pError1Stderr = ''; -pError1.stderr.setEncoding('utf8'); -pError1.stderr.on('data', (data) => { - pError1Stderr += data; -}); -pError1.on('close', mustCall((code) => { - assert.strictEqual(code, expectedCode); - assert.ok(pError1Stderr.includes('Error: some error')); - assert.ok(!pError1Stderr.includes(expectedNote), - `${expectedNote} must not be included in ${pError1Stderr}`); -})); - -const pError2 = spawn(process.execPath, [Error2]); -let pError2Stderr = ''; -pError2.stderr.setEncoding('utf8'); -pError2.stderr.on('data', (data) => { - pError2Stderr += data; -}); -pError2.on('close', mustCall((code) => { - assert.strictEqual(code, expectedCode); - assert.ok(pError2Stderr.includes('string')); - assert.ok(!pError2Stderr.includes(expectedNote), - `${expectedNote} must not be included in ${pError2Stderr}`); -})); - -const pError3 = spawn(process.execPath, [Error3]); -let pError3Stderr = ''; -pError3.stderr.setEncoding('utf8'); -pError3.stderr.on('data', (data) => { - pError3Stderr += data; -}); -pError3.on('close', mustCall((code) => { - assert.strictEqual(code, expectedCode); - assert.ok(pError3Stderr.includes('null')); - assert.ok(!pError3Stderr.includes(expectedNote), - `${expectedNote} must not be included in ${pError3Stderr}`); -})); - -const pError4 = spawn(process.execPath, [Error4]); -let pError4Stderr = ''; -pError4.stderr.setEncoding('utf8'); -pError4.stderr.on('data', (data) => { - pError4Stderr += data; +const mustIncludeMessage = { + getMessage: () => (stderr) => `${expectedNote} not found in ${stderr}`, + includeNote: true, +}; +const mustNotIncludeMessage = { + getMessage: () => (stderr) => `${expectedNote} must not be included in ${stderr}`, + includeNote: false, +}; + +describe('ESM: Errors for unexpected exports', { concurrency: true }, () => { + for ( + const { errorNeedle, filePath, getMessage, includeNote } + of [ + { + // name: '', + filePath: fixtures.path('/es-modules/es-note-unexpected-export-1.cjs'), + ...mustIncludeMessage, + }, + { + // name: '', + filePath: fixtures.path('/es-modules/es-note-unexpected-import-1.cjs'), + ...mustIncludeMessage, + }, + { + // name: '', + filePath: fixtures.path('/es-modules/es-note-promiserej-import-2.cjs'), + ...mustNotIncludeMessage, + }, + { + // name: '', + filePath: fixtures.path('/es-modules/es-note-unexpected-import-3.cjs'), + ...mustIncludeMessage, + }, + { + // name: '', + filePath: fixtures.path('/es-modules/es-note-unexpected-import-4.cjs'), + ...mustIncludeMessage, + }, + { + // name: '', + filePath: fixtures.path('/es-modules/es-note-unexpected-import-5.cjs'), + ...mustNotIncludeMessage, + }, + { + // name: '', + filePath: fixtures.path('/es-modules/es-note-error-1.mjs'), + ...mustNotIncludeMessage, + errorNeedle: /Error: some error/, + }, + { + // name: '', + filePath: fixtures.path('/es-modules/es-note-error-2.mjs'), + ...mustNotIncludeMessage, + errorNeedle: /string/, + }, + { + // name: '', + filePath: fixtures.path('/es-modules/es-note-error-3.mjs'), + ...mustNotIncludeMessage, + errorNeedle: /null/, + }, + { + // name: '', + filePath: fixtures.path('/es-modules/es-note-error-4.mjs'), + ...mustNotIncludeMessage, + errorNeedle: /undefined/, + }, + ] + ) { + it(`should ${includeNote ? '' : 'NOT'} include note`, async () => { + const { code, stderr } = await spawnPromisified(execPath, [filePath]); + + assert.strictEqual(code, 1); + + if (errorNeedle != null) assert.match(stderr, errorNeedle); + + const shouldIncludeNote = stderr.includes(expectedNote); + assert.ok( + includeNote ? shouldIncludeNote : !shouldIncludeNote, + `${filePath} ${getMessage(stderr)}`, + ); + }); + } }); -pError4.on('close', mustCall((code) => { - assert.strictEqual(code, expectedCode); - assert.ok(pError4Stderr.includes('undefined')); - assert.ok(!pError4Stderr.includes(expectedNote), - `${expectedNote} must not be included in ${pError4Stderr}`); -})); diff --git a/test/es-module/test-esm-cjs-main.js b/test/es-module/test-esm-cjs-main.js index 92f4124ccaab8a..bb209648356d10 100644 --- a/test/es-module/test-esm-cjs-main.js +++ b/test/es-module/test-esm-cjs-main.js @@ -1,21 +1,20 @@ 'use strict'; -const common = require('../common'); -const fixtures = require('../common/fixtures'); -const { spawn } = require('child_process'); -const assert = require('assert'); +const { spawnPromisified } = require('../common'); +const fixtures = require('../common/fixtures.js'); +const assert = require('node:assert'); +const { execPath } = require('node:process'); +const { describe, it } = require('node:test'); -const entry = fixtures.path('/es-modules/cjs.js'); -const child = spawn(process.execPath, [entry]); -child.stderr.setEncoding('utf8'); -let stdout = ''; -child.stdout.setEncoding('utf8'); -child.stdout.on('data', (data) => { - stdout += data; +describe('ESM: importing CJS', () => { + it('should work', async () => { + const { code, signal, stdout } = await spawnPromisified(execPath, [ + fixtures.path('/es-modules/cjs.js'), + ]); + + assert.strictEqual(code, 0); + assert.strictEqual(signal, null); + assert.strictEqual(stdout, 'executed\n'); + }); }); -child.on('close', common.mustCall((code, signal) => { - assert.strictEqual(code, 0); - assert.strictEqual(signal, null); - assert.strictEqual(stdout, 'executed\n'); -})); diff --git a/test/es-module/test-esm-data-urls.js b/test/es-module/test-esm-data-urls.js index 9d0deb70a1568c..5be45d0f7af3b6 100644 --- a/test/es-module/test-esm-data-urls.js +++ b/test/es-module/test-esm-data-urls.js @@ -1,5 +1,6 @@ 'use strict'; const common = require('../common'); +const fixtures = require('../common/fixtures'); const assert = require('assert'); function createURL(mime, body) { return `data:${mime},${body}`; @@ -107,4 +108,8 @@ function createBase64URL(mime, body) { const module = await import(plainESMURL); assert.strictEqual(module.default, 2); } + { + const plainESMURL = `data:text/javascript,${encodeURIComponent(`import ${JSON.stringify(fixtures.fileURL('es-module-url', 'empty.js'))}`)}`; + await import(plainESMURL); + } })().then(common.mustCall()); diff --git a/test/es-module/test-esm-encoded-path-native.js b/test/es-module/test-esm-encoded-path-native.js index b8f5719b6089ee..7574e55278bd1f 100644 --- a/test/es-module/test-esm-encoded-path-native.js +++ b/test/es-module/test-esm-encoded-path-native.js @@ -1,11 +1,18 @@ 'use strict'; -require('../common'); -const fixtures = require('../common/fixtures'); -const assert = require('assert'); -const { spawn } = require('child_process'); - -const native = fixtures.path('es-module-url/native.mjs'); -const child = spawn(process.execPath, [native]); -child.on('exit', (code) => { - assert.strictEqual(code, 1); + +const { spawnPromisified } = require('../common'); +const fixtures = require('../common/fixtures.js'); +const assert = require('node:assert'); +const { execPath } = require('node:process'); +const { describe, it } = require('node:test'); + + +describe('ESM: importing an encoded path', () => { + it('should throw', async () => { + const { code } = await spawnPromisified(execPath, [ + fixtures.path('es-module-url/native.mjs'), + ]); + + assert.strictEqual(code, 1); + }); }); diff --git a/test/es-module/test-esm-experimental-warnings.mjs b/test/es-module/test-esm-experimental-warnings.mjs new file mode 100644 index 00000000000000..fc167c63584b87 --- /dev/null +++ b/test/es-module/test-esm-experimental-warnings.mjs @@ -0,0 +1,48 @@ +import { spawnPromisified } from '../common/index.mjs'; +import { fileURL } from '../common/fixtures.mjs'; +import { doesNotMatch, match, strictEqual } from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; + + +describe('ESM: warn for obsolete hooks provided', { concurrency: true }, () => { + it('should not print warnings when no experimental features are enabled or used', async () => { + const { code, signal, stderr } = await spawnPromisified(execPath, [ + '--input-type=module', + '--eval', + `import ${JSON.stringify(fileURL('es-module-loaders', 'module-named-exports.mjs'))}`, + ]); + + doesNotMatch( + stderr, + /ExperimentalWarning/, + new Error('No experimental warning(s) should be emitted when no experimental feature is enabled') + ); + strictEqual(code, 0); + strictEqual(signal, null); + }); + + describe('experimental warnings for enabled experimental feature', () => { + for ( + const [experiment, arg] of [ + [/Custom ESM Loaders/, `--experimental-loader=${fileURL('es-module-loaders', 'hooks-custom.mjs')}`], + [/Network Imports/, '--experimental-network-imports'], + [/specifier resolution/, '--experimental-specifier-resolution=node'], + ] + ) { + it(`should print for ${experiment.toString().replaceAll('/', '')}`, async () => { + const { code, signal, stderr } = await spawnPromisified(execPath, [ + arg, + '--input-type=module', + '--eval', + `import ${JSON.stringify(fileURL('es-module-loaders', 'module-named-exports.mjs'))}`, + ]); + + match(stderr, /ExperimentalWarning/); + match(stderr, experiment); + strictEqual(code, 0); + strictEqual(signal, null); + }); + } + }); +}); diff --git a/test/es-module/test-esm-export-not-found.mjs b/test/es-module/test-esm-export-not-found.mjs index cdfe6df0fcde31..48ccd0f910227f 100644 --- a/test/es-module/test-esm-export-not-found.mjs +++ b/test/es-module/test-esm-export-not-found.mjs @@ -1,39 +1,48 @@ -import { mustCall } from '../common/index.mjs'; -import { path } from '../common/fixtures.mjs'; -import { match, notStrictEqual } from 'assert'; -import { spawn } from 'child_process'; -import { execPath } from 'process'; +import { spawnPromisified } from '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import assert from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; -const importStatement = - 'import { foo, notfound } from \'./module-named-exports.mjs\';'; + +const importStatement = 'import { foo, notfound } from \'./module-named-exports.mjs\';'; const importStatementMultiline = `import { foo, notfound } from './module-named-exports.mjs'; `; -[importStatement, importStatementMultiline].forEach((input) => { - const child = spawn(execPath, [ - '--input-type=module', - '--eval', - input, - ], { - cwd: path('es-module-loaders'), - }); +describe('ESM: nonexistent exports', { concurrency: true }, () => { + for ( + const { name, input } + of [ + { + input: importStatement, + name: 'single-line import', + }, + { + input: importStatementMultiline, + name: 'multi-line import', + }, + ] + ) { + it(`should throw for nonexistent exports via ${name}`, async () => { + const { code, stderr } = await spawnPromisified(execPath, [ + '--input-type=module', + '--eval', + input, + ], { + cwd: fixtures.path('es-module-loaders'), + }); - let stderr = ''; - child.stderr.setEncoding('utf8'); - child.stderr.on('data', (data) => { - stderr += data; - }); - child.on('close', mustCall((code, _signal) => { - notStrictEqual(code, 0); + assert.notStrictEqual(code, 0); - // SyntaxError: The requested module './module-named-exports.mjs' - // does not provide an export named 'notfound' - match(stderr, /SyntaxError:/); - // The quotes ensure that the path starts with ./ and not ../ - match(stderr, /'\.\/module-named-exports\.mjs'/); - match(stderr, /notfound/); - })); + // SyntaxError: The requested module './module-named-exports.mjs' + // does not provide an export named 'notfound' + assert.match(stderr, /SyntaxError:/); + // The quotes ensure that the path starts with ./ and not ../ + assert.match(stderr, /'\.\/module-named-exports\.mjs'/); + assert.match(stderr, /notfound/); + }); + } }); diff --git a/test/es-module/test-esm-import-json-named-export.mjs b/test/es-module/test-esm-import-json-named-export.mjs index 3c0f3af662c7cc..c8a4ad8dce3e5e 100644 --- a/test/es-module/test-esm-import-json-named-export.mjs +++ b/test/es-module/test-esm-import-json-named-export.mjs @@ -1,24 +1,22 @@ -import { mustCall } from '../common/index.mjs'; -import { path } from '../common/fixtures.mjs'; -import { match, notStrictEqual } from 'assert'; -import { spawn } from 'child_process'; -import { execPath } from 'process'; +import { spawnPromisified } from '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import assert from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; -const child = spawn(execPath, [ - path('es-modules', 'import-json-named-export.mjs'), -]); -let stderr = ''; -child.stderr.setEncoding('utf8'); -child.stderr.on('data', (data) => { - stderr += data; -}); -child.on('close', mustCall((code, _signal) => { - notStrictEqual(code, 0); +describe('ESM: named JSON exports', { concurrency: true }, () => { + it('should throw, citing named import', async () => { + const { code, stderr } = await spawnPromisified(execPath, [ + fixtures.path('es-modules', 'import-json-named-export.mjs'), + ]); + + // SyntaxError: The requested module '../experimental.json' + // does not provide an export named 'ofLife' + assert.match(stderr, /SyntaxError:/); + assert.match(stderr, /'\.\.\/experimental\.json'/); + assert.match(stderr, /'ofLife'/); - // SyntaxError: The requested module '../experimental.json' - // does not provide an export named 'ofLife' - match(stderr, /SyntaxError:/); - match(stderr, /'\.\.\/experimental\.json'/); - match(stderr, /'ofLife'/); -})); + assert.notStrictEqual(code, 0); + }); +}); diff --git a/test/es-module/test-esm-initialization.mjs b/test/es-module/test-esm-initialization.mjs new file mode 100644 index 00000000000000..2bfd16135a0189 --- /dev/null +++ b/test/es-module/test-esm-initialization.mjs @@ -0,0 +1,29 @@ +import { spawnPromisified } from '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import assert from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; + + +describe('ESM: ensure initialisation happens only once', { concurrency: true }, () => { + it(async () => { + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-passthru.mjs'), + '--no-warnings', + fixtures.path('es-modules', 'runmain.mjs'), + ]); + + // Length minus 1 because the first match is the needle. + const resolveHookRunCount = (stdout.match(/resolve passthru/g)?.length ?? 0) - 1; + + assert.strictEqual(stderr, ''); + /** + * resolveHookRunCount = 2: + * 1. fixtures/…/runmain.mjs + * 2. node:module (imported by fixtures/…/runmain.mjs) + */ + assert.strictEqual(resolveHookRunCount, 2); + assert.strictEqual(code, 0); + }); +}); diff --git a/test/es-module/test-esm-invalid-extension.js b/test/es-module/test-esm-invalid-extension.js deleted file mode 100644 index cca7704f7994f0..00000000000000 --- a/test/es-module/test-esm-invalid-extension.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; -require('../common'); -const fixtures = require('../common/fixtures'); -const assert = require('assert'); -const { spawnSync } = require('child_process'); -const fixture = fixtures.path('/es-modules/import-invalid-ext.mjs'); -const child = spawnSync(process.execPath, [fixture]); -const errMsg = 'TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension'; - -assert.strictEqual(child.status, 1); -assert.strictEqual(child.signal, null); -assert.strictEqual(child.stdout.toString().trim(), ''); -assert.ok(child.stderr.toString().includes(errMsg)); diff --git a/test/es-module/test-esm-invalid-pjson.js b/test/es-module/test-esm-invalid-pjson.js index cdbebb17b4bb34..f3a38018637aa3 100644 --- a/test/es-module/test-esm-invalid-pjson.js +++ b/test/es-module/test-esm-invalid-pjson.js @@ -1,27 +1,28 @@ 'use strict'; -const { mustCall, checkoutEOL } = require('../common'); -const fixtures = require('../common/fixtures'); -const { spawn } = require('child_process'); -const { strictEqual, ok } = require('assert'); +const { checkoutEOL, spawnPromisified } = require('../common'); +const fixtures = require('../common/fixtures.js'); +const assert = require('node:assert'); +const { execPath } = require('node:process'); +const { describe, it } = require('node:test'); -const entry = fixtures.path('/es-modules/import-invalid-pjson.mjs'); -const invalidJson = fixtures.path('/node_modules/invalid-pjson/package.json'); -const child = spawn(process.execPath, [entry]); -child.stderr.setEncoding('utf8'); -let stderr = ''; -child.stderr.on('data', (data) => { - stderr += data; +describe('ESM: Package.json', { concurrency: true }, () => { + it('should throw on invalid pson', async () => { + const entry = fixtures.path('/es-modules/import-invalid-pjson.mjs'); + const invalidJson = fixtures.path('/node_modules/invalid-pjson/package.json'); + + const { code, signal, stderr } = await spawnPromisified(execPath, [entry]); + + assert.ok( + stderr.includes( + `[ERR_INVALID_PACKAGE_CONFIG]: Invalid package config ${invalidJson} ` + + `while importing "invalid-pjson" from ${entry}. ` + + `Unexpected token } in JSON at position ${12 + checkoutEOL.length * 2}` + ), + stderr + ); + assert.strictEqual(code, 1); + assert.strictEqual(signal, null); + }); }); -child.on('close', mustCall((code, signal) => { - strictEqual(code, 1); - strictEqual(signal, null); - ok( - stderr.includes( - `[ERR_INVALID_PACKAGE_CONFIG]: Invalid package config ${invalidJson} ` + - `while importing "invalid-pjson" from ${entry}. ` + - `Unexpected token } in JSON at position ${12 + checkoutEOL.length * 2}` - ), - stderr); -})); diff --git a/test/es-module/test-esm-json.mjs b/test/es-module/test-esm-json.mjs index 6d55419eedc857..14c86bac80af98 100644 --- a/test/es-module/test-esm-json.mjs +++ b/test/es-module/test-esm-json.mjs @@ -1,27 +1,25 @@ -import '../common/index.mjs'; -import { path } from '../common/fixtures.mjs'; -import { strictEqual, ok } from 'assert'; -import { spawn } from 'child_process'; +import { spawnPromisified } from '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import assert from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; import secret from '../fixtures/experimental.json' assert { type: 'json' }; -strictEqual(secret.ofLife, 42); -// Test warning message -const child = spawn(process.execPath, [ - path('/es-modules/json-modules.mjs'), -]); +describe('ESM: importing JSON', () => { + it('should load JSON', () => { + assert.strictEqual(secret.ofLife, 42); + }); -let stderr = ''; -child.stderr.setEncoding('utf8'); -child.stderr.on('data', (data) => { - stderr += data; -}); -child.on('close', (code, signal) => { - strictEqual(code, 0); - strictEqual(signal, null); - ok(stderr.toString().includes( - 'ExperimentalWarning: Importing JSON modules is an experimental feature. ' + - 'This feature could change at any time' - )); + it('should print an experimental warning', async () => { + const { code, signal, stderr } = await spawnPromisified(execPath, [ + fixtures.path('/es-modules/json-modules.mjs'), + ]); + + assert.match(stderr, /ExperimentalWarning/); + assert.match(stderr, /JSON modules/); + assert.strictEqual(code, 0); + assert.strictEqual(signal, null); + }); }); diff --git a/test/es-module/test-esm-loader-chaining.mjs b/test/es-module/test-esm-loader-chaining.mjs new file mode 100644 index 00000000000000..b04dbe4ddd6c1a --- /dev/null +++ b/test/es-module/test-esm-loader-chaining.mjs @@ -0,0 +1,457 @@ +import { spawnPromisified } from '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import assert from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; + + +const setupArgs = [ + '--no-warnings', + '--input-type=module', + '--eval', +]; +const commonInput = 'import fs from "node:fs"; console.log(fs)'; +const commonArgs = [ + ...setupArgs, + commonInput, +]; + +describe('ESM: loader chaining', { concurrency: true }, () => { + it('should load unadulterated source when there are no loaders', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + ...setupArgs, + 'import fs from "node:fs"; console.log(typeof fs?.constants?.F_OK )', + ], + { encoding: 'utf8' }, + ); + + assert.strictEqual(stderr, ''); + assert.match(stdout, /number/); // node:fs is an object + assert.strictEqual(code, 0); + }); + + it('should load properly different source when only load changes something', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-foo-or-42.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-passthru.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.strictEqual(stderr, ''); + assert.match(stdout, /load passthru/); + assert.match(stdout, /resolve passthru/); + assert.match(stdout, /foo/); + assert.strictEqual(code, 0); + }); + + it('should result in proper output from multiple changes in resolve hooks', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-shortcircuit.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-foo.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-42.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-foo-or-42.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.strictEqual(stderr, ''); + assert.match(stdout, /resolve 42/); // It did go thru resolve-42 + assert.match(stdout, /foo/); // LIFO, so resolve-foo won + assert.strictEqual(code, 0); + }); + + it('should respect modified context within resolve chain', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-shortcircuit.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-42.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-foo-or-42.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-receiving-modified-context.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-passing-modified-context.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.strictEqual(stderr, ''); + assert.match(stdout, /bar/); + assert.strictEqual(code, 0); + }); + + it('should accept only the correct arguments', async () => { + const { stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-log-args.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-with-too-many-args.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.match(stdout, /^resolve arg count: 3$/m); + assert.match(stdout, /specifier: 'node:fs'/); + assert.match(stdout, /next: \[AsyncFunction: nextResolve\]/); + + assert.match(stdout, /^load arg count: 3$/m); + assert.match(stdout, /url: 'node:fs'/); + assert.match(stdout, /next: \[AsyncFunction: nextLoad\]/); + }); + + it('should result in proper output from multiple changes in resolve hooks', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-shortcircuit.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-42.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-foo.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-foo-or-42.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.strictEqual(stderr, ''); + assert.match(stdout, /resolve foo/); // It did go thru resolve-foo + assert.match(stdout, /42/); // LIFO, so resolve-42 won + assert.strictEqual(code, 0); + }); + + it('should provide the correct "next" fn when multiple calls to next within same loader', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-shortcircuit.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-foo.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-multiple-next-calls.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-foo-or-42.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + const countFoos = stdout.match(/resolve foo/g)?.length; + + assert.strictEqual(stderr, ''); + assert.strictEqual(countFoos, 2); + assert.strictEqual(code, 0); + }); + + it('should use the correct `name` for next\'s function', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-shortcircuit.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-42.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-foo-or-42.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.strictEqual(stderr, ''); + assert.match(stdout, /next: nextResolve/); + assert.strictEqual(code, 0); + }); + + it('should throw for incomplete resolve chain, citing errant loader & hook', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-incomplete.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-foo-or-42.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + assert.match(stdout, /resolve passthru/); + assert.match(stderr, /ERR_LOADER_CHAIN_INCOMPLETE/); + assert.match(stderr, /loader-resolve-incomplete\.mjs/); + assert.match(stderr, /'resolve'/); + assert.strictEqual(code, 1); + }); + + it('should NOT throw when nested resolve hook signaled a short circuit', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-shortcircuit.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-next-modified.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-foo-or-42.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.strictEqual(stderr, ''); + assert.strictEqual(stdout.trim(), 'foo'); + assert.strictEqual(code, 0); + }); + + it('should NOT throw when nested load hook signaled a short circuit', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-shortcircuit.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-42.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-foo-or-42.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-next-modified.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.strictEqual(stderr, ''); + assert.match(stdout, /421/); + assert.strictEqual(code, 0); + }); + + it('should throw when the resolve chain is broken', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-incomplete.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-foo-or-42.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.doesNotMatch(stdout, /resolve passthru/); + assert.match(stderr, /ERR_LOADER_CHAIN_INCOMPLETE/); + assert.match(stderr, /loader-resolve-incomplete\.mjs/); + assert.match(stderr, /'resolve'/); + assert.strictEqual(code, 1); + }); + + it('should throw for incomplete load chain, citing errant loader & hook', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-incomplete.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-passthru.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.match(stdout, /load passthru/); + assert.match(stderr, /ERR_LOADER_CHAIN_INCOMPLETE/); + assert.match(stderr, /loader-load-incomplete\.mjs/); + assert.match(stderr, /'load'/); + assert.strictEqual(code, 1); + }); + + it('should throw when the load chain is broken', async () => { + const { code, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-incomplete.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.doesNotMatch(stdout, /load passthru/); + assert.match(stderr, /ERR_LOADER_CHAIN_INCOMPLETE/); + assert.match(stderr, /loader-load-incomplete\.mjs/); + assert.match(stderr, /'load'/); + assert.strictEqual(code, 1); + }); + + it('should throw when invalid `specifier` argument passed to `nextResolve`', async () => { + const { code, stderr } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-bad-next-specifier.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.strictEqual(code, 1); + assert.match(stderr, /ERR_INVALID_ARG_TYPE/); + assert.match(stderr, /loader-resolve-bad-next-specifier\.mjs/); + assert.match(stderr, /'resolve' hook's nextResolve\(\) specifier/); + }); + + it('should throw when resolve hook is invalid', async () => { + const { code, stderr } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-null-return.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.strictEqual(code, 1); + assert.match(stderr, /ERR_INVALID_RETURN_VALUE/); + assert.match(stderr, /loader-resolve-null-return\.mjs/); + assert.match(stderr, /'resolve' hook's nextResolve\(\)/); + assert.match(stderr, /an object/); + assert.match(stderr, /got null/); + }); + + it('should throw when invalid `context` argument passed to `nextResolve`', async () => { + const { code, stderr } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-resolve-bad-next-context.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.match(stderr, /ERR_INVALID_ARG_TYPE/); + assert.match(stderr, /loader-resolve-bad-next-context\.mjs/); + assert.match(stderr, /'resolve' hook's nextResolve\(\) context/); + assert.strictEqual(code, 1); + }); + + it('should throw when load hook is invalid', async () => { + const { code, stderr } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-null-return.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.strictEqual(code, 1); + assert.match(stderr, /ERR_INVALID_RETURN_VALUE/); + assert.match(stderr, /loader-load-null-return\.mjs/); + assert.match(stderr, /'load' hook's nextLoad\(\)/); + assert.match(stderr, /an object/); + assert.match(stderr, /got null/); + }); + + it('should throw when invalid `url` argument passed to `nextLoad`', async () => { + const { code, stderr } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-bad-next-url.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.match(stderr, /ERR_INVALID_ARG_TYPE/); + assert.match(stderr, /loader-load-bad-next-url\.mjs/); + assert.match(stderr, /'load' hook's nextLoad\(\) url/); + assert.strictEqual(code, 1); + }); + + it('should throw when invalid `url` argument passed to `nextLoad`', async () => { + const { code, stderr } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-impersonating-next-url.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + + assert.match(stderr, /ERR_INVALID_ARG_VALUE/); + assert.match(stderr, /loader-load-impersonating-next-url\.mjs/); + assert.match(stderr, /'load' hook's nextLoad\(\) url/); + assert.strictEqual(code, 1); + }); + + it('should throw when invalid `context` argument passed to `nextLoad`', async () => { + const { code, stderr } = await spawnPromisified( + execPath, + [ + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-passthru.mjs'), + '--loader', + fixtures.fileURL('es-module-loaders', 'loader-load-bad-next-context.mjs'), + ...commonArgs, + ], + { encoding: 'utf8' }, + ); + assert.match(stderr, /ERR_INVALID_ARG_TYPE/); + assert.match(stderr, /loader-load-bad-next-context\.mjs/); + assert.match(stderr, /'load' hook's nextLoad\(\) context/); + assert.strictEqual(code, 1); + }); +}); diff --git a/test/es-module/test-esm-loader-hooks.mjs b/test/es-module/test-esm-loader-hooks.mjs index 57a203342ac49c..d314a4d9aa0a5e 100644 --- a/test/es-module/test-esm-loader-hooks.mjs +++ b/test/es-module/test-esm-loader-hooks.mjs @@ -35,6 +35,7 @@ const { ESMLoader } = esmLoaderModule; return { format: suggestedFormat, + shortCircuit: true, url: resolvedURL, }; } @@ -54,15 +55,21 @@ const { ESMLoader } = esmLoaderModule; // This doesn't matter (just to avoid errors) return { format: 'module', + shortCircuit: true, source: '', }; } - const customLoader = { - // Ensure ESMLoader actually calls the custom hooks - resolve: mustCall(resolve), - load: mustCall(load), - }; + const customLoader = [ + { + exports: { + // Ensure ESMLoader actually calls the custom hooks + resolve: mustCall(resolve), + load: mustCall(load), + }, + url: import.meta.url, + }, + ]; esmLoader.addCustomLoaders(customLoader); diff --git a/test/es-module/test-esm-loader-http-imports.mjs b/test/es-module/test-esm-loader-http-imports.mjs new file mode 100644 index 00000000000000..ad42829f5d1cee --- /dev/null +++ b/test/es-module/test-esm-loader-http-imports.mjs @@ -0,0 +1,71 @@ +import { spawnPromisified } from '../common/index.mjs'; +import fixtures from '../common/fixtures.js'; +import assert from 'node:assert'; +import http from 'node:http'; +import path from 'node:path'; +import { execPath } from 'node:process'; +import { promisify } from 'node:util'; +import { describe, it } from 'node:test'; + + +const files = { + 'main.mjs': 'export * from "./lib.mjs";', + 'lib.mjs': 'export { sum } from "./sum.mjs";', + 'sum.mjs': 'export function sum(a, b) { return a + b }', +}; + +const requestListener = ({ url }, rsp) => { + const filename = path.basename(url); + const content = files[filename]; + + if (content) { + return rsp + .writeHead(200, { 'Content-Type': 'application/javascript' }) + .end(content); + } + + return rsp + .writeHead(404) + .end(); +}; + +const server = http.createServer(requestListener); + +await promisify(server.listen.bind(server))({ + host: '127.0.0.1', + port: 0, +}); + +const { + address: host, + port, +} = server.address(); + +/** + * ! If more cases are added to this test, they cannot (yet) be concurrent because there is no + * ! `afterAll` teardown in which to close the server. + */ + +describe('ESM: http import via loader', { concurrency: false }, () => { + it('should work', async () => { + // ! MUST NOT use spawnSync to avoid blocking the event loop + const { code, signal, stderr, stdout } = await spawnPromisified( + execPath, + [ + '--no-warnings', + '--loader', + fixtures.fileURL('es-module-loaders', 'http-loader.mjs'), + '--input-type=module', + '--eval', + `import * as main from 'http://${host}:${port}/main.mjs'; console.log(main)`, + ] + ); + + assert.strictEqual(stderr, ''); + assert.strictEqual(stdout, '[Module: null prototype] { sum: [Function: sum] }\n'); + assert.strictEqual(code, 0); + assert.strictEqual(signal, null); + + server.close(); // ! This MUST come after the final test, but inside the async `it` function + }); +}); diff --git a/test/es-module/test-esm-loader-invalid-url.mjs b/test/es-module/test-esm-loader-invalid-url.mjs index 6294e57404c8bb..1ba7c621f7e92a 100644 --- a/test/es-module/test-esm-loader-invalid-url.mjs +++ b/test/es-module/test-esm-loader-invalid-url.mjs @@ -4,7 +4,7 @@ import assert from 'assert'; import('../fixtures/es-modules/test-esm-ok.mjs') .then(assert.fail, (error) => { - expectsError({ code: 'ERR_INVALID_URL' })(error); - assert.strictEqual(error.input, '../fixtures/es-modules/test-esm-ok.mjs'); + expectsError({ code: 'ERR_INVALID_RETURN_PROPERTY_VALUE' })(error); + assert.match(error.message, /loader-invalid-url\.mjs/); }) .then(mustCall()); diff --git a/test/es-module/test-esm-loader-not-found.mjs b/test/es-module/test-esm-loader-not-found.mjs index 275f0b0f1e8515..2abaf3078d113d 100644 --- a/test/es-module/test-esm-loader-not-found.mjs +++ b/test/es-module/test-esm-loader-not-found.mjs @@ -1,27 +1,24 @@ -import { mustCall } from '../common/index.mjs'; -import { path } from '../common/fixtures.mjs'; -import { match, ok, notStrictEqual } from 'assert'; -import { spawn } from 'child_process'; -import { execPath } from 'process'; +import { spawnPromisified } from '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import assert from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; -const child = spawn(execPath, [ - '--experimental-loader', - 'i-dont-exist', - path('print-error-message.js'), -]); -let stderr = ''; -child.stderr.setEncoding('utf8'); -child.stderr.on('data', (data) => { - stderr += data; -}); -child.on('close', mustCall((code, _signal) => { - notStrictEqual(code, 0); +describe('ESM: nonexistent loader', () => { + it('should throw', async () => { + const { code, stderr } = await spawnPromisified(execPath, [ + '--experimental-loader', + 'i-dont-exist', + fixtures.path('print-error-message.js'), + ]); + + assert.notStrictEqual(code, 0); - // Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'i-dont-exist' - // imported from - match(stderr, /ERR_MODULE_NOT_FOUND/); - match(stderr, /'i-dont-exist'/); + // Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'i-dont-exist' imported from + assert.match(stderr, /ERR_MODULE_NOT_FOUND/); + assert.match(stderr, /'i-dont-exist'/); - ok(!stderr.includes('Bad command or file name')); -})); + assert.ok(!stderr.includes('Bad command or file name')); + }); +}); diff --git a/test/es-module/test-esm-loader-obsolete-hooks.mjs b/test/es-module/test-esm-loader-obsolete-hooks.mjs index eff4104fc265ae..fa0baef8a216b7 100644 --- a/test/es-module/test-esm-loader-obsolete-hooks.mjs +++ b/test/es-module/test-esm-loader-obsolete-hooks.mjs @@ -1,30 +1,28 @@ -import { mustCall } from '../common/index.mjs'; +import { spawnPromisified } from '../common/index.mjs'; import { fileURL, path } from '../common/fixtures.mjs'; -import { match, notStrictEqual } from 'assert'; -import { spawn } from 'child_process'; -import { execPath } from 'process'; +import { match, notStrictEqual } from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; -const child = spawn(execPath, [ - '--no-warnings', - '--throw-deprecation', - '--experimental-loader', - fileURL('es-module-loaders', 'hooks-obsolete.mjs').href, - path('print-error-message.js'), -]); -let stderr = ''; -child.stderr.setEncoding('utf8'); -child.stderr.on('data', (data) => { - stderr += data; -}); -child.on('close', mustCall((code, _signal) => { - notStrictEqual(code, 0); +describe('ESM: deprecation warnings for obsolete hooks', { concurrency: true }, () => { + it(async () => { + const { code, stderr } = await spawnPromisified(execPath, [ + '--no-warnings', + '--throw-deprecation', + '--experimental-loader', + fileURL('es-module-loaders', 'hooks-obsolete.mjs').href, + path('print-error-message.js'), + ]); + + // DeprecationWarning: Obsolete loader hook(s) supplied and will be ignored: + // dynamicInstantiate, getFormat, getSource, transformSource + match(stderr, /DeprecationWarning:/); + match(stderr, /dynamicInstantiate/); + match(stderr, /getFormat/); + match(stderr, /getSource/); + match(stderr, /transformSource/); - // DeprecationWarning: Obsolete loader hook(s) supplied and will be ignored: - // dynamicInstantiate, getFormat, getSource, transformSource - match(stderr, /DeprecationWarning:/); - match(stderr, /dynamicInstantiate/); - match(stderr, /getFormat/); - match(stderr, /getSource/); - match(stderr, /transformSource/); -})); + notStrictEqual(code, 0); + }); +}); diff --git a/test/es-module/test-esm-loader-thenable.mjs b/test/es-module/test-esm-loader-thenable.mjs new file mode 100644 index 00000000000000..5e802b8393bcd4 --- /dev/null +++ b/test/es-module/test-esm-loader-thenable.mjs @@ -0,0 +1,43 @@ +import { spawnPromisified } from '../common/index.mjs'; +import { fileURL, path } from '../common/fixtures.mjs'; +import { match, ok, notStrictEqual, strictEqual } from 'assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; + + +describe('ESM: thenable loader hooks', { concurrency: true }, () => { + it('should behave as a normal promise resolution', async () => { + const { code, stderr } = await spawnPromisified(execPath, [ + '--experimental-loader', + fileURL('es-module-loaders', 'thenable-load-hook.mjs').href, + path('es-modules', 'test-esm-ok.mjs'), + ]); + + strictEqual(code, 0); + ok(!stderr.includes('must not call')); + }); + + it('should crash the node process rejection with an error', async () => { + const { code, stderr } = await spawnPromisified(execPath, [ + '--experimental-loader', + fileURL('es-module-loaders', 'thenable-load-hook-rejected.mjs').href, + path('es-modules', 'test-esm-ok.mjs'), + ]); + + notStrictEqual(code, 0); + match(stderr, /\sError: must crash the process\r?\n/); + ok(!stderr.includes('must not call')); + }); + + it('should just reject without an error (but NOT crash the node process)', async () => { + const { code, stderr } = await spawnPromisified(execPath, [ + '--experimental-loader', + fileURL('es-module-loaders', 'thenable-load-hook-rejected-no-arguments.mjs').href, + path('es-modules', 'test-esm-ok.mjs'), + ]); + + notStrictEqual(code, 0); + match(stderr, /\sundefined\r?\n/); + ok(!stderr.includes('must not call')); + }); +}); diff --git a/test/es-module/test-esm-loader-with-syntax-error.mjs b/test/es-module/test-esm-loader-with-syntax-error.mjs index d973e72975e88f..0ed995ad510ee7 100644 --- a/test/es-module/test-esm-loader-with-syntax-error.mjs +++ b/test/es-module/test-esm-loader-with-syntax-error.mjs @@ -1,24 +1,20 @@ -import { mustCall } from '../common/index.mjs'; +import { spawnPromisified } from '../common/index.mjs'; import { fileURL, path } from '../common/fixtures.mjs'; -import { match, ok, notStrictEqual } from 'assert'; -import { spawn } from 'child_process'; -import { execPath } from 'process'; +import { match, ok, notStrictEqual } from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; -const child = spawn(execPath, [ - '--experimental-loader', - fileURL('es-module-loaders', 'syntax-error.mjs').href, - path('print-error-message.js'), -]); -let stderr = ''; -child.stderr.setEncoding('utf8'); -child.stderr.on('data', (data) => { - stderr += data; -}); -child.on('close', mustCall((code, _signal) => { - notStrictEqual(code, 0); - - match(stderr, /SyntaxError:/); +describe('ESM: loader with syntax error', { concurrency: true }, () => { + it('should crash the node process', async () => { + const { code, stderr } = await spawnPromisified(execPath, [ + '--experimental-loader', + fileURL('es-module-loaders', 'syntax-error.mjs').href, + path('print-error-message.js'), + ]); - ok(!stderr.includes('Bad command or file name')); -})); + match(stderr, /SyntaxError:/); + ok(!stderr.includes('Bad command or file name')); + notStrictEqual(code, 0); + }); +}); diff --git a/test/es-module/test-esm-module-not-found-commonjs-hint.mjs b/test/es-module/test-esm-module-not-found-commonjs-hint.mjs index 58f70d0b685391..51633564f81458 100644 --- a/test/es-module/test-esm-module-not-found-commonjs-hint.mjs +++ b/test/es-module/test-esm-module-not-found-commonjs-hint.mjs @@ -1,35 +1,34 @@ -import { mustCall } from '../common/index.mjs'; +import { spawnPromisified } from '../common/index.mjs'; import { fixturesDir } from '../common/fixtures.mjs'; -import { match, notStrictEqual } from 'assert'; -import { spawn } from 'child_process'; -import { execPath } from 'process'; +import { match, notStrictEqual } from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; -[ - { - input: 'import "./print-error-message"', - // Did you mean to import ../print-error-message.js? - expected: / \.\.\/print-error-message\.js\?/, - }, - { - input: 'import obj from "some_module/obj"', - expected: / some_module\/obj\.js\?/, - }, -].forEach(({ input, expected }) => { - const child = spawn(execPath, [ - '--input-type=module', - '--eval', - input, - ], { - cwd: fixturesDir, - }); - let stderr = ''; - child.stderr.setEncoding('utf8'); - child.stderr.on('data', (data) => { - stderr += data; - }); - child.on('close', mustCall((code, _signal) => { - notStrictEqual(code, 0); +describe('ESM: module not found hint', { concurrency: true }, () => { + for ( + const { input, expected } + of [ + { + input: 'import "./print-error-message"', + // Did you mean to import ../print-error-message.js? + expected: / \.\.\/print-error-message\.js\?/, + }, + { + input: 'import obj from "some_module/obj"', + expected: / some_module\/obj\.js\?/, + }, + ] + ) it('should cite a variant form', async () => { + const { code, stderr } = await spawnPromisified(execPath, [ + '--input-type=module', + '--eval', + input, + ], { + cwd: fixturesDir, + }); + match(stderr, expected); - })); + notStrictEqual(code, 0); + }); }); diff --git a/test/es-module/test-esm-non-js.mjs b/test/es-module/test-esm-non-js.mjs index 749cd0b6132086..2630d3136a42ba 100644 --- a/test/es-module/test-esm-non-js.mjs +++ b/test/es-module/test-esm-non-js.mjs @@ -1,23 +1,20 @@ -import { mustCall } from '../common/index.mjs'; +import { spawnPromisified } from '../common/index.mjs'; import { fileURL } from '../common/fixtures.mjs'; -import { match, strictEqual } from 'assert'; -import { spawn } from 'child_process'; -import { execPath } from 'process'; +import { match, strictEqual } from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; -// Verify non-js extensions fail for ESM -const child = spawn(execPath, [ - '--input-type=module', - '--eval', - `import ${JSON.stringify(fileURL('es-modules', 'file.unknown'))}`, -]); -let stderr = ''; -child.stderr.setEncoding('utf8'); -child.stderr.on('data', (data) => { - stderr += data; +describe('ESM: non-js extensions fail', { concurrency: true }, () => { + it(async () => { + const { code, stderr, signal } = await spawnPromisified(execPath, [ + '--input-type=module', + '--eval', + `import ${JSON.stringify(fileURL('es-modules', 'file.unknown'))}`, + ]); + + match(stderr, /ERR_UNKNOWN_FILE_EXTENSION/); + strictEqual(code, 1); + strictEqual(signal, null); + }); }); -child.on('close', mustCall((code, signal) => { - strictEqual(code, 1); - strictEqual(signal, null); - match(stderr, /ERR_UNKNOWN_FILE_EXTENSION/); -})); diff --git a/test/es-module/test-esm-nowarn-exports.mjs b/test/es-module/test-esm-nowarn-exports.mjs index 57d5bc58c72356..695e924e03ccbe 100644 --- a/test/es-module/test-esm-nowarn-exports.mjs +++ b/test/es-module/test-esm-nowarn-exports.mjs @@ -1,25 +1,19 @@ -import '../common/index.mjs'; +import { spawnPromisified } from '../common/index.mjs'; import { path } from '../common/fixtures.mjs'; -import { strictEqual, ok } from 'assert'; -import { spawn } from 'child_process'; +import { strictEqual } from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; -const child = spawn(process.execPath, [ - '--experimental-import-meta-resolve', - path('/es-modules/import-resolve-exports.mjs'), -]); -let stderr = ''; -child.stderr.setEncoding('utf8'); -child.stderr.on('data', (data) => { - stderr += data; -}); -child.on('close', (code, signal) => { - strictEqual(code, 0); - strictEqual(signal, null); - ok(!stderr.toString().includes( - 'ExperimentalWarning: The ESM module loader is experimental' - )); - ok(!stderr.toString().includes( - 'ExperimentalWarning: Conditional exports' - )); +describe('ESM: experiemental warning for import.meta.resolve', { concurrency: true }, () => { + it('should not warn when caught', async () => { + const { code, signal, stderr } = await spawnPromisified(execPath, [ + '--experimental-import-meta-resolve', + path('es-modules/import-resolve-exports.mjs'), + ]); + + strictEqual(stderr, ''); + strictEqual(code, 0); + strictEqual(signal, null); + }); }); diff --git a/test/es-module/test-esm-preserve-symlinks-main.js b/test/es-module/test-esm-preserve-symlinks-main.js index b8fb301e02d85b..6f921f656fe22f 100644 --- a/test/es-module/test-esm-preserve-symlinks-main.js +++ b/test/es-module/test-esm-preserve-symlinks-main.js @@ -39,15 +39,15 @@ function doTest(flags, done) { // dictates that it'll resolve relative imports in the main file relative to // the symlink, and not relative to the symlink target; the file structure set // up above requires this to not crash when loading ./submodule_link.js - spawn(process.execPath, - flags.concat([ - '--preserve-symlinks', - '--preserve-symlinks-main', entry_link_absolute_path, - ]), - { stdio: 'inherit' }).on('exit', (code) => { - assert.strictEqual(code, 0); - done(); - }); + spawn(process.execPath, [ + '--preserve-symlinks', + '--preserve-symlinks-main', + entry_link_absolute_path, + ], { stdio: 'inherit' }) + .on('exit', (code) => { + assert.strictEqual(code, 0); + done(); + }); } // First test the commonjs module loader diff --git a/test/es-module/test-esm-repl-imports.js b/test/es-module/test-esm-repl-imports.js new file mode 100644 index 00000000000000..9547824756f5ec --- /dev/null +++ b/test/es-module/test-esm-repl-imports.js @@ -0,0 +1,28 @@ +'use strict'; + +const { mustCall } = require('../common'); +const fixtures = require('../common/fixtures'); +const assert = require('node:assert'); +const { spawn } = require('node:child_process'); +const { execPath } = require('node:process'); +const { describe, it } = require('node:test'); + + +describe('ESM: REPL runs', { concurrency: true }, () => { + it((context, done) => { + const child = spawn(execPath, [ + '--interactive', + ], { + cwd: fixtures.path('es-modules', 'pkgimports'), + }); + + child.stdin.end( + 'try{require("#test");await import("#test")}catch{process.exit(-1)}' + ); + + child.on('exit', mustCall((code) => { + assert.strictEqual(code, 0); + done(); + })); + }); +}); diff --git a/test/es-module/test-esm-specifiers-legacy-flag-warning.mjs b/test/es-module/test-esm-specifiers-legacy-flag-warning.mjs deleted file mode 100644 index 244499a3e02093..00000000000000 --- a/test/es-module/test-esm-specifiers-legacy-flag-warning.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import { mustCall } from '../common/index.mjs'; -import { fileURL } from '../common/fixtures.mjs'; -import { match, strictEqual } from 'assert'; -import { spawn } from 'child_process'; -import { execPath } from 'process'; - -// Verify experimental warning is printed -const child = spawn(execPath, [ - '--experimental-specifier-resolution=node', - '--input-type=module', - '--eval', - `import ${JSON.stringify(fileURL('es-module-specifiers', 'package-type-module'))}`, -]); - -let stderr = ''; -child.stderr.setEncoding('utf8'); -child.stderr.on('data', (data) => { - stderr += data; -}); -child.on('close', mustCall((code, signal) => { - strictEqual(code, 0); - strictEqual(signal, null); - match(stderr, /ExperimentalWarning: The Node\.js specifier resolution flag is experimental/); -})); diff --git a/test/es-module/test-esm-specifiers.mjs b/test/es-module/test-esm-specifiers.mjs index bc6125f5f94ad9..670cd93c9b0b28 100644 --- a/test/es-module/test-esm-specifiers.mjs +++ b/test/es-module/test-esm-specifiers.mjs @@ -1,62 +1,79 @@ -// Flags: --experimental-specifier-resolution=node -import { mustNotCall } from '../common/index.mjs'; -import assert from 'assert'; -import path from 'path'; -import { spawn } from 'child_process'; -import { fileURLToPath } from 'url'; - -// commonJS index.js -import commonjs from '../fixtures/es-module-specifiers/package-type-commonjs'; -// esm index.js -import module from '../fixtures/es-module-specifiers/package-type-module'; -// Notice the trailing slash -import success, { explicit, implicit, implicitModule, getImplicitCommonjs } - from '../fixtures/es-module-specifiers/'; - -assert.strictEqual(commonjs, 'commonjs'); -assert.strictEqual(module, 'module'); -assert.strictEqual(success, 'success'); -assert.strictEqual(explicit, 'esm'); -assert.strictEqual(implicit, 'cjs'); -assert.strictEqual(implicitModule, 'cjs'); - -async function main() { - try { - await import('../fixtures/es-module-specifiers/do-not-exist.js'); - } catch (e) { - // Files that do not exist should throw - assert.strictEqual(e.name, 'Error'); - } - try { - await getImplicitCommonjs(); - } catch (e) { - // Legacy loader cannot resolve .mjs automatically from main - assert.strictEqual(e.name, 'Error'); - } -} - -main().catch(mustNotCall); - -// Test path from command line arguments -[ - 'package-type-commonjs', - 'package-type-module', - '/', - '/index', -].forEach((item) => { - const modulePath = path.join( - fileURLToPath(import.meta.url), - '../../fixtures/es-module-specifiers', - item, - ); - [ - '--experimental-specifier-resolution', - '--es-module-specifier-resolution', - ].forEach((option) => { - spawn(process.execPath, - [`${option}=node`, modulePath], - { stdio: 'inherit' }).on('exit', (code) => { - assert.strictEqual(code, 0); - }); +import { spawnPromisified } from '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import { match, strictEqual } from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; + + +describe('ESM: specifier-resolution=node', { concurrency: true }, () => { + it(async () => { + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + '--no-warnings', + '--experimental-specifier-resolution=node', + '--input-type=module', + '--eval', + [ + 'import { strictEqual } from "node:assert";', + // commonJS index.js + `import commonjs from ${JSON.stringify(fixtures.fileURL('es-module-specifiers/package-type-commonjs'))};`, + // esm index.js + `import module from ${JSON.stringify(fixtures.fileURL('es-module-specifiers/package-type-module'))};`, + // Notice the trailing slash + `import success, { explicit, implicit, implicitModule } from ${JSON.stringify(fixtures.fileURL('es-module-specifiers/'))};`, + 'strictEqual(commonjs, "commonjs");', + 'strictEqual(module, "module");', + 'strictEqual(success, "success");', + 'strictEqual(explicit, "esm");', + 'strictEqual(implicit, "cjs");', + 'strictEqual(implicitModule, "cjs");', + ].join('\n'), + ]); + + strictEqual(stderr, ''); + strictEqual(stdout, ''); + strictEqual(code, 0); + }); + + it('should throw when the file doesn\'t exist', async () => { + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + '--no-warnings', + fixtures.path('es-module-specifiers/do-not-exist.js'), + ]); + + match(stderr, /Cannot find module/); + strictEqual(stdout, ''); + strictEqual(code, 1); + }); + + it('should throw when the omitted file extension is .mjs (legacy loader doesn\'t support it)', async () => { + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + '--no-warnings', + '--experimental-specifier-resolution=node', + '--input-type=module', + '--eval', + `import whatever from ${JSON.stringify(fixtures.fileURL('es-module-specifiers/implicit-main-type-commonjs'))};`, + ]); + + match(stderr, /ERR_MODULE_NOT_FOUND/); + strictEqual(stdout, ''); + strictEqual(code, 1); + }); + + for ( + const item of [ + 'package-type-commonjs', + 'package-type-module', + '/', + '/index', + ] + ) it('should ', async () => { + const { code } = await spawnPromisified(execPath, [ + '--no-warnings', + '--experimental-specifier-resolution=node', + '--es-module-specifier-resolution=node', + fixtures.path('es-module-specifiers', item), + ]); + + strictEqual(code, 0); }); }); diff --git a/test/es-module/test-esm-syntax-error.mjs b/test/es-module/test-esm-syntax-error.mjs index a8c019171717dd..de87187b069441 100644 --- a/test/es-module/test-esm-syntax-error.mjs +++ b/test/es-module/test-esm-syntax-error.mjs @@ -1,19 +1,16 @@ -import { mustCall } from '../common/index.mjs'; +import { spawnPromisified } from '../common/index.mjs'; import { path } from '../common/fixtures.mjs'; -import { match, notStrictEqual } from 'assert'; -import { spawn } from 'child_process'; -import { execPath } from 'process'; +import { match, notStrictEqual } from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; -const child = spawn(execPath, [ - path('es-module-loaders', 'syntax-error.mjs'), -]); -let stderr = ''; -child.stderr.setEncoding('utf8'); -child.stderr.on('data', (data) => { - stderr += data; +describe('ESM: importing a module with syntax error(s)', { concurrency: true }, () => { + it('should throw', async () => { + const { code, stderr } = await spawnPromisified(execPath, [ + path('es-module-loaders', 'syntax-error.mjs'), + ]); + match(stderr, /SyntaxError:/); + notStrictEqual(code, 0); + }); }); -child.on('close', mustCall((code, _signal) => { - notStrictEqual(code, 0); - match(stderr, /SyntaxError:/); -})); diff --git a/test/es-module/test-esm-tla-unfinished.mjs b/test/es-module/test-esm-tla-unfinished.mjs index d7658c19e98e1c..48bc4d77f42b4e 100644 --- a/test/es-module/test-esm-tla-unfinished.mjs +++ b/test/es-module/test-esm-tla-unfinished.mjs @@ -1,100 +1,127 @@ -import '../common/index.mjs'; -import assert from 'assert'; -import child_process from 'child_process'; +import { spawnPromisified } from '../common/index.mjs'; import fixtures from '../common/fixtures.js'; +import assert from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; -{ - // Unresolved TLA promise, --eval - const { status, stdout, stderr } = child_process.spawnSync( - process.execPath, - ['--input-type=module', '--eval', 'await new Promise(() => {})'], - { encoding: 'utf8' }); - assert.deepStrictEqual([status, stdout, stderr], [13, '', '']); -} - -{ - // Rejected TLA promise, --eval - const { status, stdout, stderr } = child_process.spawnSync( - process.execPath, - ['--input-type=module', '-e', 'await Promise.reject(new Error("Xyz"))'], - { encoding: 'utf8' }); - assert.deepStrictEqual([status, stdout], [1, '']); - assert.match(stderr, /Error: Xyz/); -} - -{ - // Unresolved TLA promise with explicit exit code, --eval - const { status, stdout, stderr } = child_process.spawnSync( - process.execPath, - ['--input-type=module', '--eval', - 'process.exitCode = 42;await new Promise(() => {})'], - { encoding: 'utf8' }); - assert.deepStrictEqual([status, stdout, stderr], [42, '', '']); -} - -{ - // Rejected TLA promise with explicit exit code, --eval - const { status, stdout, stderr } = child_process.spawnSync( - process.execPath, - ['--input-type=module', '-e', - 'process.exitCode = 42;await Promise.reject(new Error("Xyz"))'], - { encoding: 'utf8' }); - assert.deepStrictEqual([status, stdout], [1, '']); - assert.match(stderr, /Error: Xyz/); -} - -{ - // Unresolved TLA promise, module file - const { status, stdout, stderr } = child_process.spawnSync( - process.execPath, - [fixtures.path('es-modules/tla/unresolved.mjs')], - { encoding: 'utf8' }); - assert.deepStrictEqual([status, stdout, stderr], [13, '', '']); -} - -{ - // Rejected TLA promise, module file - const { status, stdout, stderr } = child_process.spawnSync( - process.execPath, - [fixtures.path('es-modules/tla/rejected.mjs')], - { encoding: 'utf8' }); - assert.deepStrictEqual([status, stdout], [1, '']); - assert.match(stderr, /Error: Xyz/); -} - -{ - // Unresolved TLA promise, module file - const { status, stdout, stderr } = child_process.spawnSync( - process.execPath, - [fixtures.path('es-modules/tla/unresolved-withexitcode.mjs')], - { encoding: 'utf8' }); - assert.deepStrictEqual([status, stdout, stderr], [42, '', '']); -} - -{ - // Rejected TLA promise, module file - const { status, stdout, stderr } = child_process.spawnSync( - process.execPath, - [fixtures.path('es-modules/tla/rejected-withexitcode.mjs')], - { encoding: 'utf8' }); - assert.deepStrictEqual([status, stdout], [1, '']); - assert.match(stderr, /Error: Xyz/); -} - -{ - // Calling process.exit() in .mjs should return status 0 - const { status, stdout, stderr } = child_process.spawnSync( - process.execPath, - [fixtures.path('es-modules/tla/process-exit.mjs')], - { encoding: 'utf8' }); - assert.deepStrictEqual([status, stdout, stderr], [0, '', '']); -} - -{ - // Calling process.exit() in worker thread shouldn't influence main thread - const { status, stdout, stderr } = child_process.spawnSync( - process.execPath, - [fixtures.path('es-modules/tla/unresolved-with-worker-process-exit.mjs')], - { encoding: 'utf8' }); - assert.deepStrictEqual([status, stdout, stderr], [13, '', '']); -} + +const commonArgs = [ + '--no-warnings', + '--input-type=module', + '--eval', +]; + +describe('ESM: unsettled and rejected promises', { concurrency: true }, () => { + it('should exit for an unsettled TLA promise via --eval', async () => { + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + ...commonArgs, + 'await new Promise(() => {})', + ]); + + assert.strictEqual(stderr, ''); + assert.strictEqual(stdout, ''); + assert.strictEqual(code, 13); + }); + + it('should throw for a rejected TLA promise via --eval', async () => { + // Rejected TLA promise, --eval + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + ...commonArgs, + 'await Promise.reject(new Error("Xyz"))', + ]); + + assert.match(stderr, /Error: Xyz/); + assert.strictEqual(stdout, ''); + assert.strictEqual(code, 1); + }); + + it('should exit for an unsettled TLA promise and respect explicit exit code via --eval', async () => { + // Rejected TLA promise, --eval + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + ...commonArgs, + 'process.exitCode = 42;await new Promise(() => {})', + ]); + + assert.strictEqual(stderr, ''); + assert.strictEqual(stdout, ''); + assert.strictEqual(code, 42); + }); + + it('should throw for a rejected TLA promise and ignore explicit exit code via --eval', async () => { + // Rejected TLA promise, --eval + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + ...commonArgs, + 'process.exitCode = 42;await Promise.reject(new Error("Xyz"))', + ]); + + assert.match(stderr, /Error: Xyz/); + assert.strictEqual(stdout, ''); + assert.strictEqual(code, 1); + }); + + it('should exit for an unsettled TLA promise via stdin', async () => { + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + '--no-warnings', + fixtures.path('es-modules/tla/unresolved.mjs'), + ]); + + assert.strictEqual(stderr, ''); + assert.strictEqual(stdout, ''); + assert.strictEqual(code, 13); + }); + + it('should throw for a rejected TLA promise via stdin', async () => { + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + '--no-warnings', + fixtures.path('es-modules/tla/rejected.mjs'), + ]); + + assert.match(stderr, /Error: Xyz/); + assert.strictEqual(stdout, ''); + assert.strictEqual(code, 1); + }); + + it('should exit for an unsettled TLA promise and respect explicit exit code via stdin', async () => { + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + '--no-warnings', + fixtures.path('es-modules/tla/unresolved-withexitcode.mjs'), + ]); + + assert.strictEqual(stderr, ''); + assert.strictEqual(stdout, ''); + assert.strictEqual(code, 42); + }); + + it('should throw for a rejected TLA promise and ignore explicit exit code via stdin', async () => { + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + '--no-warnings', + fixtures.path('es-modules/tla/rejected-withexitcode.mjs'), + ]); + + assert.match(stderr, /Error: Xyz/); + assert.strictEqual(stdout, ''); + assert.strictEqual(code, 1); + }); + + it('should exit successfully when calling `process.exit()` in `.mjs` file', async () => { + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + '--no-warnings', + fixtures.path('es-modules/tla/process-exit.mjs'), + ]); + + assert.strictEqual(stderr, ''); + assert.strictEqual(stdout, ''); + assert.strictEqual(code, 0); + }); + + it('should be unaffected by `process.exit()` in worker thread', async () => { + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + '--no-warnings', + fixtures.path('es-modules/tla/unresolved-with-worker-process-exit.mjs'), + ]); + + assert.strictEqual(stderr, ''); + assert.strictEqual(stdout, ''); + assert.strictEqual(code, 13); + }); +}); diff --git a/test/es-module/test-esm-unknown-or-no-extension.js b/test/es-module/test-esm-unknown-or-no-extension.js index 40f840ad670cf3..3f0660e5aa9225 100644 --- a/test/es-module/test-esm-unknown-or-no-extension.js +++ b/test/es-module/test-esm-unknown-or-no-extension.js @@ -1,40 +1,36 @@ 'use strict'; -const common = require('../common'); -const fixtures = require('../common/fixtures'); -const { spawn } = require('child_process'); -const assert = require('assert'); +const { spawnPromisified } = require('../common'); +const fixtures = require('../common/fixtures.js'); +const assert = require('node:assert'); +const { execPath } = require('node:process'); +const { describe, it } = require('node:test'); + // In a "type": "module" package scope, files with unknown extensions or no // extensions should throw; both when used as a main entry point and also when // referenced via `import`. +describe('ESM: extensionless and unknown specifiers', { concurrency: true }, () => { + for ( + const fixturePath of [ + '/es-modules/package-type-module/noext-esm', + '/es-modules/package-type-module/imports-noext.mjs', + '/es-modules/package-type-module/extension.unknown', + '/es-modules/package-type-module/imports-unknownext.mjs', + ] + ) { + it('should throw', async () => { + const entry = fixtures.path(fixturePath); + const { code, signal, stderr, stdout } = await spawnPromisified(execPath, [entry]); -[ - '/es-modules/package-type-module/noext-esm', - '/es-modules/package-type-module/imports-noext.mjs', - '/es-modules/package-type-module/extension.unknown', - '/es-modules/package-type-module/imports-unknownext.mjs', -].forEach((fixturePath) => { - const entry = fixtures.path(fixturePath); - const child = spawn(process.execPath, [entry]); - let stdout = ''; - let stderr = ''; - child.stderr.setEncoding('utf8'); - child.stdout.setEncoding('utf8'); - child.stdout.on('data', (data) => { - stdout += data; - }); - child.stderr.on('data', (data) => { - stderr += data; - }); - child.on('close', common.mustCall((code, signal) => { - assert.strictEqual(code, 1); - assert.strictEqual(signal, null); - assert.strictEqual(stdout, ''); - assert.ok(stderr.includes('ERR_UNKNOWN_FILE_EXTENSION')); - if (fixturePath.includes('noext')) { - // Check for explanation to users - assert.ok(stderr.includes('extensionless')); - } - })); + assert.strictEqual(code, 1); + assert.strictEqual(signal, null); + assert.strictEqual(stdout, ''); + assert.ok(stderr.includes('ERR_UNKNOWN_FILE_EXTENSION')); + if (fixturePath.includes('noext')) { + // Check for explanation to users + assert.ok(stderr.includes('extensionless')); + } + }); + } }); diff --git a/test/es-module/test-esm-wasm.mjs b/test/es-module/test-esm-wasm.mjs index 01717c47714f6a..fac1d4b2837df0 100644 --- a/test/es-module/test-esm-wasm.mjs +++ b/test/es-module/test-esm-wasm.mjs @@ -1,37 +1,43 @@ -// Flags: --experimental-wasm-modules -import '../common/index.mjs'; -import { path } from '../common/fixtures.mjs'; -import { add, addImported } from '../fixtures/es-modules/simple.wasm'; -import { state } from '../fixtures/es-modules/wasm-dep.mjs'; -import { strictEqual, ok } from 'assert'; -import { spawn } from 'child_process'; +import { spawnPromisified } from '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import { strictEqual, match } from 'node:assert'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; -strictEqual(state, 'WASM Start Executed'); -strictEqual(add(10, 20), 30); +describe('ESM: WASM modules', { concurrency: true }, () => { + it('should load exports', async () => { + const { code, stderr, stdout } = await spawnPromisified(execPath, [ + '--no-warnings', + '--experimental-wasm-modules', + '--input-type=module', + '--eval', + [ + 'import { strictEqual, match } from "node:assert";', + `import { add, addImported } from ${JSON.stringify(fixtures.fileURL('es-modules/simple.wasm'))};`, + `import { state } from ${JSON.stringify(fixtures.fileURL('es-modules/wasm-dep.mjs'))};`, + 'strictEqual(state, "WASM Start Executed");', + 'strictEqual(add(10, 20), 30);', + 'strictEqual(addImported(0), 42);', + 'strictEqual(state, "WASM JS Function Executed");', + 'strictEqual(addImported(1), 43);', + ].join('\n'), + ]); -strictEqual(addImported(0), 42); + strictEqual(stderr, ''); + strictEqual(stdout, ''); + strictEqual(code, 0); + }); -strictEqual(state, 'WASM JS Function Executed'); + it('should emit experimental warning', async () => { + const { code, signal, stderr } = await spawnPromisified(execPath, [ + '--experimental-wasm-modules', + fixtures.path('es-modules/wasm-modules.mjs'), + ]); -strictEqual(addImported(1), 43); - -// Test warning message -const child = spawn(process.execPath, [ - '--experimental-wasm-modules', - path('/es-modules/wasm-modules.mjs'), -]); - -let stderr = ''; -child.stderr.setEncoding('utf8'); -child.stderr.on('data', (data) => { - stderr += data; -}); -child.on('close', (code, signal) => { - strictEqual(code, 0); - strictEqual(signal, null); - ok(stderr.toString().includes( - 'ExperimentalWarning: Importing WebAssembly modules is ' + - 'an experimental feature. This feature could change at any time' - )); + strictEqual(code, 0); + strictEqual(signal, null); + match(stderr, /ExperimentalWarning/); + match(stderr, /WebAssembly/); + }); }); diff --git a/test/es-module/test-http-imports-cli.mjs b/test/es-module/test-http-imports-cli.mjs index 67cefd69ddd889..7deb31a288c7f7 100644 --- a/test/es-module/test-http-imports-cli.mjs +++ b/test/es-module/test-http-imports-cli.mjs @@ -1,48 +1,48 @@ -import { mustCall } from '../common/index.mjs'; -import { match, notStrictEqual } from 'assert'; -import { spawn } from 'child_process'; -import { execPath } from 'process'; - -{ - const child = spawn(execPath, [ - '--experimental-network-imports', - '--input-type=module', - '-e', - 'import "http://example.com"', - ]); - - let stderr = ''; - child.stderr.setEncoding('utf8'); - child.stderr.on('data', (data) => { - stderr += data; - }); - child.on('close', mustCall((code, _signal) => { +import { mustCall, spawnPromisified } from '../common/index.mjs'; +import { ok, match, notStrictEqual } from 'node:assert'; +import { spawn as spawnAsync } from 'node:child_process'; +import { execPath } from 'node:process'; +import { describe, it } from 'node:test'; + + +describe('ESM: http import via CLI', { concurrency: true }, () => { + const disallowedSpecifier = 'http://example.com'; + + it('should throw disallowed error for insecure protocol', async () => { + const { code, stderr } = await spawnPromisified(execPath, [ + '--experimental-network-imports', + '--input-type=module', + '--eval', + `import ${JSON.stringify(disallowedSpecifier)}`, + ]); + notStrictEqual(code, 0); // [ERR_NETWORK_IMPORT_DISALLOWED]: import of 'http://example.com/' by // …/[eval1] is not supported: http can only be used to load local // resources (use https instead). - match(stderr, /[ERR_NETWORK_IMPORT_DISALLOWED]/); - })); -} -{ - const child = spawn(execPath, [ - '--experimental-network-imports', - '--input-type=module', - ]); - child.stdin.end('import "http://example.com"'); - - let stderr = ''; - child.stderr.setEncoding('utf8'); - child.stderr.on('data', (data) => { - stderr += data; + match(stderr, /ERR_NETWORK_IMPORT_DISALLOWED/); + ok(stderr.includes(disallowedSpecifier)); }); - child.on('close', mustCall((code, _signal) => { - notStrictEqual(code, 0); - // [ERR_NETWORK_IMPORT_DISALLOWED]: import of 'http://example.com/' by - // …/[stdin] is not supported: http can only be used to load local - // resources (use https instead). - match(stderr, /[ERR_NETWORK_IMPORT_DISALLOWED]/); - })); -} + it('should throw disallowed error for insecure protocol in REPL', () => { + const child = spawnAsync(execPath, [ + '--experimental-network-imports', + '--input-type=module', + ]); + child.stdin.end(`import ${JSON.stringify(disallowedSpecifier)}`); + + let stderr = ''; + child.stderr.setEncoding('utf8'); + child.stderr.on('data', (data) => stderr += data); + child.on('close', mustCall((code, _signal) => { + notStrictEqual(code, 0); + + // [ERR_NETWORK_IMPORT_DISALLOWED]: import of 'http://example.com/' by + // …/[stdin] is not supported: http can only be used to load local + // resources (use https instead). + match(stderr, /\[ERR_NETWORK_IMPORT_DISALLOWED\]/); + ok(stderr.includes(disallowedSpecifier)); + })); + }); +}); diff --git a/test/es-module/test-http-imports.mjs b/test/es-module/test-http-imports.mjs index a1a208689f054f..235d142d3555e3 100644 --- a/test/es-module/test-http-imports.mjs +++ b/test/es-module/test-http-imports.mjs @@ -68,6 +68,11 @@ for (const { protocol, createServer } of [ const server = createServer(function(_req, res) { const url = new URL(_req.url, host); const redirect = url.searchParams.get('redirect'); + if (url.pathname === '/not-found') { + res.writeHead(404); + res.end(); + return; + } if (redirect) { const { status, location } = JSON.parse(redirect); res.writeHead(status, { @@ -162,7 +167,7 @@ for (const { protocol, createServer } of [ export default 1;`); await assert.rejects( import(fileDep.href), - { code: 'ERR_INVALID_URL_SCHEME' } + { code: 'ERR_NETWORK_IMPORT_DISALLOWED' } ); const builtinDep = new URL(url.href); @@ -172,7 +177,7 @@ for (const { protocol, createServer } of [ `); await assert.rejects( import(builtinDep.href), - { code: 'ERR_INVALID_URL_SCHEME' } + { code: 'ERR_NETWORK_IMPORT_DISALLOWED' } ); const unprefixedBuiltinDep = new URL(url.href); @@ -182,7 +187,7 @@ for (const { protocol, createServer } of [ `); await assert.rejects( import(unprefixedBuiltinDep.href), - { code: 'ERR_INVALID_URL_SCHEME' } + { code: 'ERR_NETWORK_IMPORT_DISALLOWED' } ); const unsupportedMIME = new URL(url.href); @@ -192,6 +197,12 @@ for (const { protocol, createServer } of [ import(unsupportedMIME.href), { code: 'ERR_UNKNOWN_MODULE_FORMAT' } ); + const notFound = new URL(url.href); + notFound.pathname = '/not-found'; + await assert.rejects( + import(notFound.href), + { code: 'ERR_MODULE_NOT_FOUND' }, + ); server.close(); } diff --git a/test/fixtures/crypto/dsa.js b/test/fixtures/crypto/dsa.js deleted file mode 100644 index c88720220c5e03..00000000000000 --- a/test/fixtures/crypto/dsa.js +++ /dev/null @@ -1,93 +0,0 @@ -'use strict'; - -module.exports = function() { - const pkcs8 = Buffer.from( - '3082015b0201003082013406072a8648ce3804013082012702818100d5f35aa5730e2' + - '6166fd3ea81f8f0eeb05bd1250e164b7c76b180b6dae95096d13dee6956e15a9aea7c' + - 'f18a0df7c5dc326ccef1cbf97636d22f870b76f2607f9a867db2756aecf65505aa48f' + - 'dea5f5ee54f508a05d9dae76bf262b4ca3662cc176b7c628c7bee2076df07f9a64e04' + - '02630dfee63eaf0ed64d48b469fe1c9ac4a1021d00b14213226cfcfb59e3a0379e559' + - 'c74ff8a7383eb4c41cecb6f3732b702818100a0865b7f8954e7ae587c8e6a89e391e8' + - '2657c58f05ccd94de61748e89e217efab3d9b5fa842ebc62525966916ad2b7af422a9' + - 'b2407817a5b382b6581434fd1a169c75ad4d0e3862a3f484e9f9f2a816f943a8e6060' + - 'f26fe27c533587b765e57948439084e76fd6a4fd004f5c78d972cf7f100ec9494a902' + - '645baca4b4c6f3993041e021c600daa0a9c4cc674c98bb07956374c84ac1c33af8816' + - '3ea7e2587876', 'hex'); - - const spki = Buffer.from( - '308201c03082013406072a8648ce3804013082012702818100d5f35aa5730e26166fd' + - '3ea81f8f0eeb05bd1250e164b7c76b180b6dae95096d13dee6956e15a9aea7cf18a0d' + - 'f7c5dc326ccef1cbf97636d22f870b76f2607f9a867db2756aecf65505aa48fdea5f5' + - 'ee54f508a05d9dae76bf262b4ca3662cc176b7c628c7bee2076df07f9a64e0402630d' + - 'fee63eaf0ed64d48b469fe1c9ac4a1021d00b14213226cfcfb59e3a0379e559c74ff8' + - 'a7383eb4c41cecb6f3732b702818100a0865b7f8954e7ae587c8e6a89e391e82657c5' + - '8f05ccd94de61748e89e217efab3d9b5fa842ebc62525966916ad2b7af422a9b24078' + - '17a5b382b6581434fd1a169c75ad4d0e3862a3f484e9f9f2a816f943a8e6060f26fe2' + - '7c533587b765e57948439084e76fd6a4fd004f5c78d972cf7f100ec9494a902645bac' + - 'a4b4c6f399303818500028181009a8df69f2fe321869e2094e387bc1dc2b5f3bff2a2' + - 'e23cfba51d3c119fba6b4c15a49485fa811b6955d91d28c9e2e0445a79ddc5426b2fe' + - '44e00a6c9254c776f13fd10dbc934262077b1df72c16bc848817c61fb6a607abe60c7' + - 'd11528ab9bdf55de45495733a047bd75a48b8166f1aa3deab681a2574a4f35106f0d7' + - '8b641d7', 'hex'); - - const plaintext = Buffer.from( - '5f4dba4f320c0ce876725afce5fbd25bf83e5a7125a08cafe73c3ebac421779df9d55' + - 'd180c3ae9942645e1d82fee8c9d294b3cb1a08a9931201b3c0e81fc47cacf8315a2af' + - '66324113c3b66230c34608c4f4593634ce02b267362277f0a840ca74bc3d1a6236952' + - 'c5ed7aaf8a8fecbddfa7584e6978cea5d2a5b9fb7f1b48c8b0be58a305202754d8376' + - '107374793cf026aaee5300727d836cd71e71b345ddb2e44446ffc5b901635413890d9' + - '10ea380984a90191031323f16dbcc9d6be168b84885384ca03e12600ac1c248028af3' + - '726cc93463882ea8c02aab', 'hex'); - - const signatures = { - 'sha-1': Buffer.from( - '303d021c685192dc48fbd8c6dd80536eaf92050ca07aa85af5a25a41a93bc8ea021' + - 'd009a032a19182ceca7b202d7e0ce327fe5830a9937a37714d4c6801ae9', 'hex'), - 'sha-256': Buffer.from( - '303d021c7b660d1b2b40237d0f615877efbf2a3f51577bc42a3cb4e280c0a6a9021' + - 'd008393a01a9bcabce267dfcc6bc867d348911f6eda3db96d3078a380c1', 'hex'), - 'sha-384': Buffer.from( - '303e021d00ab84d3c306aea1c5e69e126d21dafc03ee9c7aa8fa38884de5015d510' + - '21d0099030adacdc6787dcb1dc3b05fa122ad72d4ddc281cc619565dba947', 'hex'), - 'sha-512': Buffer.from( - '303c021c069c40654607388a56d3cb827c11121d07850b3b62ed203c1d92ce7f021' + - 'c0e69f41933d0ee3b1c1b184d742f3813ee3b32d053f13fbb93ab8229', 'hex'), - } - - const vectors = [ - { - publicKeyBuffer: spki, - privateKeyBuffer: pkcs8, - algorithm: { name: 'NODE-DSA' }, - hash: 'SHA-1', - plaintext, - signature: signatures['sha-1'] - }, - { - publicKeyBuffer: spki, - privateKeyBuffer: pkcs8, - algorithm: { name: 'NODE-DSA' }, - hash: 'SHA-256', - plaintext, - signature: signatures['sha-256'] - }, - { - publicKeyBuffer: spki, - privateKeyBuffer: pkcs8, - algorithm: { name: 'NODE-DSA'}, - hash: 'SHA-384', - plaintext, - signature: signatures['sha-384'] - }, - { - publicKeyBuffer: spki, - privateKeyBuffer: pkcs8, - algorithm: { name: 'NODE-DSA' }, - hash: 'SHA-512', - plaintext, - signature: signatures['sha-512'] - } - ]; - - return vectors; -}; diff --git a/test/fixtures/crypto/eddsa.js b/test/fixtures/crypto/eddsa.js new file mode 100644 index 00000000000000..8b1a5ce1c5a45d --- /dev/null +++ b/test/fixtures/crypto/eddsa.js @@ -0,0 +1,51 @@ +'use strict'; + +module.exports = function() { + const pkcs8 = { + 'Ed25519': Buffer.from( + '302e020100300506032b657004220420f3c8f4c48df878146e8cd3bf6df4e50e389b' + + 'a7074e15c2352dcd5d308d4ca81f', 'hex'), + 'Ed448': Buffer.from( + '3047020100300506032b6571043b04390eff03458c28e0179c521de312c969b78343' + + '48ecab991a60e3b2e9a79e4cd9e480ef291712d2c83d047272d5c9f428664f696d26' + + '70458f1d2e', 'hex') + } + + const spki = { + 'Ed25519': Buffer.from( + '302a300506032b6570032100d8e18963d809d487d9549accaec6742e7eeba24d8a0d' + + '3b14b7e3caea06893dcc', 'hex'), + 'Ed448': Buffer.from( + '3043300506032b6571033a00ab4bb885fd7d2c5af24e83710cffa0c74a57e274801d' + + 'b2057b0bdc5ea032b6fe6bc78b8045365aeb26e86e1f14fd349d07c48495f5a46a5a' + + '80', 'hex') + } + + const data = Buffer.from( + '2b7ed0bc7795694ab4acd35903fe8cd7d80f6a1c8688a6c3414409457514a1457855bb' + + 'b219e30a1beea8fe869082d99fc8282f9050d024e59eaf0730ba9db70a', 'hex'); + + // For verification tests. + const signatures = { + 'Ed25519': Buffer.from( + '3d90de5e5743dfc28225bfadb341b116cbf8a3f1ceedbf4adc350ef5d3471843a418' + + '614dcb6e614862614cf7af1496f9340b3c844ea4dceab1d3d155eb7ecc00', 'hex'), + 'Ed448': Buffer.from( + '76897e8c50ac6b1132735c09c55f506c0149d2677c75664f8bc10b826fbd9df0a03c' + + 'd986bce8339e64c7d1720ea9361784dc73837765ac2980c0dac0814a8bc187d1c9c9' + + '07c5dcc07956f85b70930fe42de764177217cb2d52bab7c1debe0ca89ccecbcd63f7' + + '025a2a5a572b9d23b0642f00', 'hex') + } + + const algorithms = ['Ed25519', 'Ed448']; + + const vectors = algorithms.map((algorithm) => ({ + publicKeyBuffer: spki[algorithm], + privateKeyBuffer: pkcs8[algorithm], + name: algorithm, + data, + signature: signatures[algorithm], + })); + + return vectors; +} diff --git a/test/fixtures/es-module-loaders/assertionless-json-import.mjs b/test/fixtures/es-module-loaders/assertionless-json-import.mjs index c5c2fadf28fb58..07656d4ec40fa3 100644 --- a/test/fixtures/es-module-loaders/assertionless-json-import.mjs +++ b/test/fixtures/es-module-loaders/assertionless-json-import.mjs @@ -4,14 +4,14 @@ const JSON_URL_PATTERN = /\.json(\?[^#]*)?(#.*)?$/; export function resolve(url, context, next) { // Mutation from resolve hook should be discarded. context.importAssertions.type = 'whatever'; - return next(url, context); + return next(url); } export function load(url, context, next) { - if (context.importAssertions.type == null && + if (context.importAssertions.type == null && (DATA_URL_PATTERN.test(url) || JSON_URL_PATTERN.test(url))) { const { importAssertions } = context; importAssertions.type = 'json'; } - return next(url, context); + return next(url); } diff --git a/test/fixtures/es-module-loaders/builtin-named-exports-loader.mjs b/test/fixtures/es-module-loaders/builtin-named-exports-loader.mjs index 8790811c7e7bd6..8c317c1b7ce31e 100644 --- a/test/fixtures/es-module-loaders/builtin-named-exports-loader.mjs +++ b/test/fixtures/es-module-loaders/builtin-named-exports-loader.mjs @@ -18,6 +18,7 @@ export async function resolve(specifier, context, next) { if (def.url.startsWith('node:')) { return { + shortCircuit: true, url: `custom-${def.url}`, importAssertions: context.importAssertions, }; @@ -29,11 +30,12 @@ export function load(url, context, next) { if (url.startsWith('custom-node:')) { const urlObj = new URL(url); return { + shortCircuit: true, source: generateBuiltinModule(urlObj.pathname), format: 'module', }; } - return next(url, context); + return next(url); } function generateBuiltinModule(builtinName) { diff --git a/test/fixtures/es-module-loaders/example-loader.mjs b/test/fixtures/es-module-loaders/example-loader.mjs index be4808738035f9..77d44d55f91523 100644 --- a/test/fixtures/es-module-loaders/example-loader.mjs +++ b/test/fixtures/es-module-loaders/example-loader.mjs @@ -8,20 +8,22 @@ const JS_EXTENSIONS = new Set(['.js', '.mjs']); const baseURL = new URL('file://'); baseURL.pathname = process.cwd() + '/'; -export function resolve(specifier, { parentURL = baseURL }, defaultResolve) { +export function resolve(specifier, { parentURL = baseURL }, next) { if (builtinModules.includes(specifier)) { return { + shortCircuit: true, url: 'node:' + specifier }; } if (/^\.{1,2}[/]/.test(specifier) !== true && !specifier.startsWith('file:')) { // For node_modules support: - // return defaultResolve(specifier, {parentURL}, defaultResolve); + // return next(specifier); throw new Error( `imports must be URLs or begin with './', or '../'; '${specifier}' does not`); } const resolved = new URL(specifier, parentURL); return { + shortCircuit: true, url: resolved.href }; } diff --git a/test/fixtures/es-module-loaders/hook-resolve-type.mjs b/test/fixtures/es-module-loaders/hook-resolve-type.mjs index 5068d6265c57b2..b1f5606c0e4a0a 100644 --- a/test/fixtures/es-module-loaders/hook-resolve-type.mjs +++ b/test/fixtures/es-module-loaders/hook-resolve-type.mjs @@ -3,7 +3,7 @@ let importedCJS = 0; global.getModuleTypeStats = () => { return {importedESM, importedCJS} }; export async function load(url, context, next) { - return next(url, context, next); + return next(url); } export async function resolve(specifier, context, next) { diff --git a/test/fixtures/es-module-loaders/hooks-custom.mjs b/test/fixtures/es-module-loaders/hooks-custom.mjs index 5173b97387905a..65dba3535c2d95 100644 --- a/test/fixtures/es-module-loaders/hooks-custom.mjs +++ b/test/fixtures/es-module-loaders/hooks-custom.mjs @@ -29,32 +29,37 @@ export function load(url, context, next) { if (url.endsWith('esmHook/badReturnFormatVal.mjs')) return { format: Array(0), + shortCircuit: true, source: '', } if (url.endsWith('esmHook/unsupportedReturnFormatVal.mjs')) return { format: 'foo', // Not one of the allowable inputs: no translator named 'foo' + shortCircuit: true, source: '', } if (url.endsWith('esmHook/badReturnSourceVal.mjs')) return { format: 'module', + shortCircuit: true, source: Array(0), } if (url.endsWith('esmHook/preknownFormat.pre')) return { format: context.format, + shortCircuit: true, source: `const msg = 'hello world'; export default msg;` }; if (url.endsWith('esmHook/virtual.mjs')) return { format: 'module', + shortCircuit: true, source: `export const message = 'Woohoo!'.toUpperCase();`, }; - return next(url, context, next); + return next(url); } -export function resolve(specifier, context, next) { +export function resolve(specifier, { importAssertions }, next) { let format = ''; if (specifier === 'esmHook/format.false') format = false; @@ -63,9 +68,10 @@ export function resolve(specifier, context, next) { if (specifier.startsWith('esmHook')) return { format, + shortCircuit: true, url: pathToFileURL(specifier).href, - importAssertions: context.importAssertions, + importAssertions, }; - return next(specifier, context, next); + return next(specifier); } diff --git a/test/fixtures/es-module-loaders/hooks-obsolete.mjs b/test/fixtures/es-module-loaders/hooks-obsolete.mjs index 9d12251923d7e9..bb10ef8ef4b29a 100644 --- a/test/fixtures/es-module-loaders/hooks-obsolete.mjs +++ b/test/fixtures/es-module-loaders/hooks-obsolete.mjs @@ -4,19 +4,19 @@ export function getSource() {} export function transformSource() {} -export function load(url, context, next) { - if (url === 'whatever') return { - format: 'module', - source: '', +export function resolve(specifier, context, next) { + if (specifier === 'whatever') return { + url: specifier, }; - return next(url, context, next); + return next(specifier); } -export function resolve(specifier, context, next) { - if (specifier === 'whatever') return { - url: specifier, +export function load(url, context, next) { + if (url === 'whatever') return { + format: 'module', + source: '', }; - return next(specifier, context, next); + return next(url); } diff --git a/test/fixtures/es-module-loaders/http-loader.mjs b/test/fixtures/es-module-loaders/http-loader.mjs new file mode 100644 index 00000000000000..8096dd9bb73a4c --- /dev/null +++ b/test/fixtures/es-module-loaders/http-loader.mjs @@ -0,0 +1,40 @@ +import { get } from 'http'; + +export function resolve(specifier, context, nextResolve) { + const { parentURL = null } = context; + + if (specifier.startsWith('http://')) { + return { + shortCircuit: true, + url: specifier, + }; + } else if (parentURL?.startsWith('http://')) { + return { + shortCircuit: true, + url: new URL(specifier, parentURL).href, + }; + } + + return nextResolve(specifier); +} + +export function load(url, context, nextLoad) { + if (url.startsWith('http://')) { + return new Promise((resolve, reject) => { + get(url, (rsp) => { + let data = ''; + rsp.on('data', (chunk) => data += chunk); + rsp.on('end', () => { + resolve({ + format: 'module', + shortCircuit: true, + source: data, + }); + }); + }) + .on('error', reject); + }); + } + + return nextLoad(url); +} diff --git a/test/fixtures/es-module-loaders/loader-get-format.mjs b/test/fixtures/es-module-loaders/loader-get-format.mjs deleted file mode 100644 index 7ade70fca0ebe6..00000000000000 --- a/test/fixtures/es-module-loaders/loader-get-format.mjs +++ /dev/null @@ -1,10 +0,0 @@ -export async function getFormat(url, context, defaultGetFormat) { - try { - if (new URL(url).pathname.endsWith('.unknown')) { - return { - format: 'module' - }; - } - } catch {} - return defaultGetFormat(url, context, defaultGetFormat); -} diff --git a/test/fixtures/es-module-loaders/loader-invalid-format.mjs b/test/fixtures/es-module-loaders/loader-invalid-format.mjs index 0210f73b554382..e7dd06c108ba1d 100644 --- a/test/fixtures/es-module-loaders/loader-invalid-format.mjs +++ b/test/fixtures/es-module-loaders/loader-invalid-format.mjs @@ -1,18 +1,20 @@ -export async function resolve(specifier, { parentURL, importAssertions }, defaultResolve) { +export async function resolve(specifier, { parentURL, importAssertions }, next) { if (parentURL && specifier === '../fixtures/es-modules/test-esm-ok.mjs') { return { - url: 'file:///asdf' + shortCircuit: true, + url: 'file:///asdf', }; } - return defaultResolve(specifier, {parentURL, importAssertions}, defaultResolve); + return next(specifier); } export async function load(url, context, next) { if (url === 'file:///asdf') { return { format: 'esm', + shortCircuit: true, source: '', } } - return next(url, context, next); + return next(url); } diff --git a/test/fixtures/es-module-loaders/loader-invalid-url.mjs b/test/fixtures/es-module-loaders/loader-invalid-url.mjs index a7cefeca3da37a..a54f39521f29ac 100644 --- a/test/fixtures/es-module-loaders/loader-invalid-url.mjs +++ b/test/fixtures/es-module-loaders/loader-invalid-url.mjs @@ -1,9 +1,10 @@ -export async function resolve(specifier, { parentURL, importAssertions }, defaultResolve) { +export async function resolve(specifier, { parentURL, importAssertions }, next) { if (parentURL && specifier === '../fixtures/es-modules/test-esm-ok.mjs') { return { + shortCircuit: true, url: specifier, importAssertions, }; } - return defaultResolve(specifier, {parentURL, importAssertions}, defaultResolve); + return next(specifier); } diff --git a/test/fixtures/es-module-loaders/loader-load-bad-next-context.mjs b/test/fixtures/es-module-loaders/loader-load-bad-next-context.mjs new file mode 100644 index 00000000000000..fe38da04f9ff91 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-load-bad-next-context.mjs @@ -0,0 +1,3 @@ +export async function load(url, context, next) { + return next(url, []); +} diff --git a/test/fixtures/es-module-loaders/loader-load-bad-next-url.mjs b/test/fixtures/es-module-loaders/loader-load-bad-next-url.mjs new file mode 100644 index 00000000000000..c6a4c7504d43e5 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-load-bad-next-url.mjs @@ -0,0 +1,3 @@ +export async function load(url, context, next) { + return next([]); +} diff --git a/test/fixtures/es-module-loaders/loader-load-foo-or-42.mjs b/test/fixtures/es-module-loaders/loader-load-foo-or-42.mjs new file mode 100644 index 00000000000000..8d408223e66a0a --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-load-foo-or-42.mjs @@ -0,0 +1,11 @@ +export async function load(url) { + const val = url.includes('42') + ? '42' + : '"foo"'; + + return { + format: 'module', + shortCircuit: true, + source: `export default ${val}`, + }; +} diff --git a/test/fixtures/es-module-loaders/loader-load-impersonating-next-url.mjs b/test/fixtures/es-module-loaders/loader-load-impersonating-next-url.mjs new file mode 100644 index 00000000000000..1028e093e46819 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-load-impersonating-next-url.mjs @@ -0,0 +1,3 @@ +export async function load(url, context, next) { + return next('not/a/url'); +} diff --git a/test/fixtures/es-module-loaders/loader-load-incomplete.mjs b/test/fixtures/es-module-loaders/loader-load-incomplete.mjs new file mode 100644 index 00000000000000..d6242488e5738e --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-load-incomplete.mjs @@ -0,0 +1,6 @@ +export async function load() { + return { + format: 'module', + source: 'export default 42', + }; +} diff --git a/test/fixtures/es-module-loaders/loader-load-next-modified.mjs b/test/fixtures/es-module-loaders/loader-load-next-modified.mjs new file mode 100644 index 00000000000000..401b52971311a7 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-load-next-modified.mjs @@ -0,0 +1,11 @@ +export async function load(url, context, next) { + const { + format, + source, + } = await next(url); + + return { + format, + source: source + 1, + }; +} diff --git a/test/fixtures/es-module-loaders/loader-load-null-return.mjs b/test/fixtures/es-module-loaders/loader-load-null-return.mjs new file mode 100644 index 00000000000000..252eec4ebc28a9 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-load-null-return.mjs @@ -0,0 +1,3 @@ +export async function load(specifier, context, next) { + return null; +} diff --git a/test/fixtures/es-module-loaders/loader-load-passing-modified-context.mjs b/test/fixtures/es-module-loaders/loader-load-passing-modified-context.mjs new file mode 100644 index 00000000000000..7676be766af575 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-load-passing-modified-context.mjs @@ -0,0 +1,6 @@ +export async function load(url, context, next) { + return next(url, { + ...context, + foo: 'bar', + }); +} diff --git a/test/fixtures/es-module-loaders/loader-load-passthru.mjs b/test/fixtures/es-module-loaders/loader-load-passthru.mjs new file mode 100644 index 00000000000000..0de06142007562 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-load-passthru.mjs @@ -0,0 +1,4 @@ +export async function load(url, context, next) { + console.log('load passthru'); // This log is deliberate + return next(url); +} diff --git a/test/fixtures/es-module-loaders/loader-load-receiving-modified-context.mjs b/test/fixtures/es-module-loaders/loader-load-receiving-modified-context.mjs new file mode 100644 index 00000000000000..2d7bc350bd8775 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-load-receiving-modified-context.mjs @@ -0,0 +1,4 @@ +export async function load(url, context, next) { + console.log(context.foo); // This log is deliberate + return next(url, context); +} diff --git a/test/fixtures/es-module-loaders/loader-log-args.mjs b/test/fixtures/es-module-loaders/loader-log-args.mjs new file mode 100644 index 00000000000000..84ed373d6b4de4 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-log-args.mjs @@ -0,0 +1,28 @@ +export async function resolve(...args) { + console.log(`resolve arg count: ${args.length}`); + console.log({ + specifier: args[0], + context: args[1], + next: args[2], + }); + + return { + shortCircuit: true, + url: args[0], + }; +} + +export async function load(...args) { + console.log(`load arg count: ${args.length}`); + console.log({ + url: args[0], + context: args[1], + next: args[2], + }); + + return { + format: 'module', + source: '', + shortCircuit: true, + }; +} diff --git a/test/fixtures/es-module-loaders/loader-resolve-42.mjs b/test/fixtures/es-module-loaders/loader-resolve-42.mjs new file mode 100644 index 00000000000000..eaca111998ae23 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-resolve-42.mjs @@ -0,0 +1,6 @@ +export async function resolve(specifier, context, next) { + console.log('resolve 42'); // This log is deliberate + console.log('next:', next.name); // This log is deliberate + + return next('file:///42.mjs'); +} diff --git a/test/fixtures/es-module-loaders/loader-resolve-bad-next-context.mjs b/test/fixtures/es-module-loaders/loader-resolve-bad-next-context.mjs new file mode 100644 index 00000000000000..881f5875dd0206 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-resolve-bad-next-context.mjs @@ -0,0 +1,3 @@ +export async function resolve(specifier, context, next) { + return next(specifier, []); +} diff --git a/test/fixtures/es-module-loaders/loader-resolve-bad-next-specifier.mjs b/test/fixtures/es-module-loaders/loader-resolve-bad-next-specifier.mjs new file mode 100644 index 00000000000000..66c941754f90cc --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-resolve-bad-next-specifier.mjs @@ -0,0 +1,3 @@ +export async function resolve(specifier, context, next) { + return next([]); +} diff --git a/test/fixtures/es-module-loaders/loader-resolve-foo.mjs b/test/fixtures/es-module-loaders/loader-resolve-foo.mjs new file mode 100644 index 00000000000000..7d23d6c49088c9 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-resolve-foo.mjs @@ -0,0 +1,4 @@ +export async function resolve(specifier, context, next) { + console.log('resolve foo'); // This log is deliberate + return next('file:///foo.mjs'); +} diff --git a/test/fixtures/es-module-loaders/loader-resolve-incomplete.mjs b/test/fixtures/es-module-loaders/loader-resolve-incomplete.mjs new file mode 100644 index 00000000000000..9eb1617f30130e --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-resolve-incomplete.mjs @@ -0,0 +1,5 @@ +export async function resolve() { + return { + url: 'file:///incomplete-resolve-chain.js', + }; +} diff --git a/test/fixtures/es-module-loaders/loader-resolve-multiple-next-calls.mjs b/test/fixtures/es-module-loaders/loader-resolve-multiple-next-calls.mjs new file mode 100644 index 00000000000000..91dbec251edeba --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-resolve-multiple-next-calls.mjs @@ -0,0 +1,9 @@ +export async function resolve(specifier, context, next) { + const { url: first } = await next(specifier); + const { url: second } = await next(specifier); + + return { + format: 'module', + url: first, + }; +} diff --git a/test/fixtures/es-module-loaders/loader-resolve-next-modified.mjs b/test/fixtures/es-module-loaders/loader-resolve-next-modified.mjs new file mode 100644 index 00000000000000..a973345a82ff21 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-resolve-next-modified.mjs @@ -0,0 +1,11 @@ +export async function resolve(url, context, next) { + const { + format, + url: nextUrl, + } = await next(url, context); + + return { + format, + url: `${nextUrl}?foo`, + }; +} diff --git a/test/fixtures/es-module-loaders/loader-resolve-null-return.mjs b/test/fixtures/es-module-loaders/loader-resolve-null-return.mjs new file mode 100644 index 00000000000000..16c9826a8ba51e --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-resolve-null-return.mjs @@ -0,0 +1,3 @@ +export async function resolve(specifier, context, next) { + return null; +} diff --git a/test/fixtures/es-module-loaders/loader-resolve-passing-modified-context.mjs b/test/fixtures/es-module-loaders/loader-resolve-passing-modified-context.mjs new file mode 100644 index 00000000000000..6a92a6cd8f6a8e --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-resolve-passing-modified-context.mjs @@ -0,0 +1,6 @@ +export async function resolve(specifier, context, next) { + return next(specifier, { + ...context, + foo: 'bar', + }); +} diff --git a/test/fixtures/es-module-loaders/loader-resolve-passthru.mjs b/test/fixtures/es-module-loaders/loader-resolve-passthru.mjs new file mode 100644 index 00000000000000..3db5b21bb98793 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-resolve-passthru.mjs @@ -0,0 +1,4 @@ +export async function resolve(specifier, context, next) { + console.log('resolve passthru'); // This log is deliberate + return next(specifier); +} diff --git a/test/fixtures/es-module-loaders/loader-resolve-receiving-modified-context.mjs b/test/fixtures/es-module-loaders/loader-resolve-receiving-modified-context.mjs new file mode 100644 index 00000000000000..83aa83104e96e4 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-resolve-receiving-modified-context.mjs @@ -0,0 +1,4 @@ +export async function resolve(specifier, context, next) { + console.log(context.foo); // This log is deliberate + return next(specifier, context); +} diff --git a/test/fixtures/es-module-loaders/loader-resolve-shortcircuit.mjs b/test/fixtures/es-module-loaders/loader-resolve-shortcircuit.mjs new file mode 100644 index 00000000000000..d886b3dfcbf237 --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-resolve-shortcircuit.mjs @@ -0,0 +1,6 @@ +export async function resolve(specifier) { + return { + shortCircuit: true, + url: specifier, + } +} diff --git a/test/fixtures/es-module-loaders/loader-shared-dep.mjs b/test/fixtures/es-module-loaders/loader-shared-dep.mjs index 387575794c00dc..d41c1ae403399e 100644 --- a/test/fixtures/es-module-loaders/loader-shared-dep.mjs +++ b/test/fixtures/es-module-loaders/loader-shared-dep.mjs @@ -5,7 +5,7 @@ import { createRequire } from '../../common/index.mjs'; const require = createRequire(import.meta.url); const dep = require('./loader-dep.js'); -export function resolve(specifier, { parentURL, importAssertions }, defaultResolve) { +export function resolve(specifier, context, next) { assert.strictEqual(dep.format, 'module'); - return defaultResolve(specifier, { parentURL, importAssertions }, defaultResolve); + return next(specifier); } diff --git a/test/fixtures/es-module-loaders/loader-unknown-builtin-module.mjs b/test/fixtures/es-module-loaders/loader-unknown-builtin-module.mjs index 1063f8dfd65f2f..65e1adf909d0bc 100644 --- a/test/fixtures/es-module-loaders/loader-unknown-builtin-module.mjs +++ b/test/fixtures/es-module-loaders/loader-unknown-builtin-module.mjs @@ -3,5 +3,5 @@ export function resolve(specifier, context, next) { url: 'node:unknown-builtin-module' }; - return next(specifier, context, next); + return next(specifier); } diff --git a/test/fixtures/es-module-loaders/loader-with-too-many-args.mjs b/test/fixtures/es-module-loaders/loader-with-too-many-args.mjs new file mode 100644 index 00000000000000..95f40ec15d200d --- /dev/null +++ b/test/fixtures/es-module-loaders/loader-with-too-many-args.mjs @@ -0,0 +1,7 @@ +export async function resolve(specifier, context, next) { + return next(specifier, context, 'resolve-extra-arg'); +} + +export async function load(url, context, next) { + return next(url, context, 'load-extra-arg'); +} diff --git a/test/fixtures/es-module-loaders/missing-dynamic-instantiate-hook.mjs b/test/fixtures/es-module-loaders/missing-dynamic-instantiate-hook.mjs index ec15eb0bb8fc24..5d61d81bc31ed5 100644 --- a/test/fixtures/es-module-loaders/missing-dynamic-instantiate-hook.mjs +++ b/test/fixtures/es-module-loaders/missing-dynamic-instantiate-hook.mjs @@ -1,10 +1,10 @@ -export function resolve(specifier, { parentURL }, defaultResolve) { +export function resolve(specifier, context, next) { if (specifier === 'test') { return { url: 'file://' }; } - return defaultResolve(specifier, {parentURL}, defaultResolve); + return next(specifier); } export function getFormat(url, context, defaultGetFormat) { diff --git a/test/fixtures/es-module-loaders/mock-loader.mjs b/test/fixtures/es-module-loaders/mock-loader.mjs index 7c4592aca96834..062be39603e851 100644 --- a/test/fixtures/es-module-loaders/mock-loader.mjs +++ b/test/fixtures/es-module-loaders/mock-loader.mjs @@ -171,6 +171,7 @@ export function globalPreload({port}) { export async function resolve(specifier, context, defaultResolve) { if (specifier === 'node:mock') { return { + shortCircuit: true, url: specifier }; } @@ -180,10 +181,12 @@ export async function resolve(specifier, context, defaultResolve) { // Do nothing, let it get the "real" module } else if (mockedModuleExports.has(def.url)) { return { + shortCircuit: true, url: `mock-facade:${currentMockVersion}:${encodeURIComponent(def.url)}` }; }; return { + shortCircuit: true, url: def.url, }; } @@ -196,6 +199,7 @@ export async function load(url, context, defaultLoad) { * channel with preloadCode */ return { + shortCircuit: true, source: 'export default import.meta.doMock', format: 'module' }; @@ -210,6 +214,7 @@ export async function load(url, context, defaultLoad) { decodeURIComponent(encodedTargetURL) )); return { + shortCircuit: true, source: ret, format: 'module' }; diff --git a/test/fixtures/es-module-loaders/not-found-assert-loader.mjs b/test/fixtures/es-module-loaders/not-found-assert-loader.mjs index 5213ddedb34e8d..ea4c73724298db 100644 --- a/test/fixtures/es-module-loaders/not-found-assert-loader.mjs +++ b/test/fixtures/es-module-loaders/not-found-assert-loader.mjs @@ -1,15 +1,15 @@ -import assert from 'assert'; +import assert from 'node:assert'; // a loader that asserts that the defaultResolve will throw "not found" // (skipping the top-level main of course) let mainLoad = true; -export async function resolve(specifier, { parentURL, importAssertions }, defaultResolve) { +export async function resolve(specifier, { importAssertions }, next) { if (mainLoad) { mainLoad = false; - return defaultResolve(specifier, {parentURL, importAssertions}, defaultResolve); + return next(specifier); } try { - await defaultResolve(specifier, {parentURL, importAssertions}, defaultResolve); + await next(specifier); } catch (e) { assert.strictEqual(e.code, 'ERR_MODULE_NOT_FOUND'); diff --git a/test/fixtures/es-module-loaders/string-sources.mjs b/test/fixtures/es-module-loaders/string-sources.mjs index 384098d6d9e822..396d17cb17a75c 100644 --- a/test/fixtures/es-module-loaders/string-sources.mjs +++ b/test/fixtures/es-module-loaders/string-sources.mjs @@ -22,17 +22,22 @@ const SOURCES = { } export function resolve(specifier, context, next) { if (specifier.startsWith('test:')) { - return { url: specifier, importAssertions: context.importAssertions }; + return { + importAssertions: context.importAssertions, + shortCircuit: true, + url: specifier, + }; } - return next(specifier, context); + return next(specifier); } export function load(href, context, next) { if (href.startsWith('test:')) { return { format: 'module', + shortCircuit: true, source: SOURCES[href], }; } - return next(href, context); + return next(href); } diff --git a/test/fixtures/es-module-loaders/thenable-load-hook-rejected-no-arguments.mjs b/test/fixtures/es-module-loaders/thenable-load-hook-rejected-no-arguments.mjs new file mode 100644 index 00000000000000..5e008edecf7cf3 --- /dev/null +++ b/test/fixtures/es-module-loaders/thenable-load-hook-rejected-no-arguments.mjs @@ -0,0 +1,10 @@ +export function load () { + let thenAlreadyAccessed = false; + return { + get then() { + if (thenAlreadyAccessed) throw new Error('must not call'); + thenAlreadyAccessed = true; + return (_, reject) => reject(); + } + }; +} diff --git a/test/fixtures/es-module-loaders/thenable-load-hook-rejected.mjs b/test/fixtures/es-module-loaders/thenable-load-hook-rejected.mjs new file mode 100644 index 00000000000000..926f6d0bebd653 --- /dev/null +++ b/test/fixtures/es-module-loaders/thenable-load-hook-rejected.mjs @@ -0,0 +1,10 @@ +export function load () { + let thenAlreadyAccessed = false; + return { + get then() { + if (thenAlreadyAccessed) throw new Error('must not call'); + thenAlreadyAccessed = true; + return (_, reject) => reject(new Error('must crash the process')); + } + }; +} diff --git a/test/fixtures/es-module-loaders/thenable-load-hook.mjs b/test/fixtures/es-module-loaders/thenable-load-hook.mjs new file mode 100644 index 00000000000000..661f6e21ac69d3 --- /dev/null +++ b/test/fixtures/es-module-loaders/thenable-load-hook.mjs @@ -0,0 +1,10 @@ +export function load(url, context, next) { + let thenAlreadyAccessed = false; + return { + get then() { + if (thenAlreadyAccessed) throw new Error('must not call'); + thenAlreadyAccessed = true; + return (resolve) => resolve(next(url, context)); + } + }; +} diff --git a/test/fixtures/es-modules/runmain.mjs b/test/fixtures/es-modules/runmain.mjs new file mode 100644 index 00000000000000..5ceb86b66c76ce --- /dev/null +++ b/test/fixtures/es-modules/runmain.mjs @@ -0,0 +1,7 @@ +import { runMain } from 'node:module'; + +try { await import.meta.resolve('doesnt-matter.mjs') } catch {} + +runMain(); + +try { await import.meta.resolve('doesnt-matter.mjs') } catch {} diff --git a/test/fixtures/gc.js b/test/fixtures/gc.js new file mode 100644 index 00000000000000..1e965f336e4dea --- /dev/null +++ b/test/fixtures/gc.js @@ -0,0 +1,9 @@ +let arr = new Array(300_000).fill('a'); + +for (let index = 0; index < arr.length; index++) { + arr[index] = Math.random(); +} + +arr = []; +// .gc() is called to generate a Mark-sweep event +global.gc(); diff --git a/test/fixtures/package-main-enoent/test.js b/test/fixtures/package-main-enoent/test.js index d698085e5dd554..5d75076b6af0f5 100644 --- a/test/fixtures/package-main-enoent/test.js +++ b/test/fixtures/package-main-enoent/test.js @@ -3,6 +3,6 @@ // The path in "main" in "package.json" does not exist here, but it does in // the copy in node_modules. This is being tested because bluebird tests depend // on this behavior and it was accidentally broken by a seemingly unrelated -// commit on master. +// commit on the main branch. require('package-main-enoent'); diff --git a/test/fixtures/snapshot/v8-startup-snapshot-api.js b/test/fixtures/snapshot/v8-startup-snapshot-api.js new file mode 100644 index 00000000000000..f41f519755f45e --- /dev/null +++ b/test/fixtures/snapshot/v8-startup-snapshot-api.js @@ -0,0 +1,32 @@ +'use strict'; + +const fs = require('fs'); +const zlib = require('zlib'); +const path = require('path'); +const assert = require('assert'); + +const { + isBuildingSnapshot, + addSerializeCallback, + addDeserializeCallback, + setDeserializeMainFunction +} = require('v8').startupSnapshot; + +const filePath = path.resolve(__dirname, '../x1024.txt'); +const storage = {}; + +assert(isBuildingSnapshot()); + +addSerializeCallback(({ filePath }) => { + console.error('serializing', filePath); + storage[filePath] = zlib.gzipSync(fs.readFileSync(filePath)); +}, { filePath }); + +addDeserializeCallback(({ filePath }) => { + console.error('deserializing', filePath); + storage[filePath] = zlib.gunzipSync(storage[filePath]); +}, { filePath }); + +setDeserializeMainFunction(({ filePath }) => { + console.log(storage[filePath].toString()); +}, { filePath }); diff --git a/test/fixtures/source-map/throw-async.mjs b/test/fixtures/source-map/throw-async.mjs new file mode 100644 index 00000000000000..a44412ef3ecc72 --- /dev/null +++ b/test/fixtures/source-map/throw-async.mjs @@ -0,0 +1,11 @@ +const message = 'Message ' + Math.random(); +export async function Throw() { + throw new Error(message); +} +await Throw(); +// To recreate: +// +// npx tsc --module esnext --target es2017 --outDir test/fixtures/source-map --sourceMap test/fixtures/source-map/throw-async.ts +// + rename js to mjs +// + rename js to mjs in source map comment in mjs file +//# sourceMappingURL=throw-async.mjs.map \ No newline at end of file diff --git a/test/fixtures/source-map/throw-async.mjs.map b/test/fixtures/source-map/throw-async.mjs.map new file mode 100644 index 00000000000000..33d1eaed6dd239 --- /dev/null +++ b/test/fixtures/source-map/throw-async.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"throw-async.mjs","sourceRoot":"","sources":["throw-async.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,KAAK,EAAE,CAAC;AAEd,eAAe;AACf,EAAE;AACF,gIAAgI;AAChI,qBAAqB;AACrB,uDAAuD"} \ No newline at end of file diff --git a/test/fixtures/source-map/throw-async.ts b/test/fixtures/source-map/throw-async.ts new file mode 100644 index 00000000000000..080b07afa58184 --- /dev/null +++ b/test/fixtures/source-map/throw-async.ts @@ -0,0 +1,13 @@ +const message = 'Message ' + Math.random(); + +export async function Throw() { + throw new Error(message) +} + +await Throw(); + +// To recreate: +// +// npx tsc --module esnext --target es2017 --outDir test/fixtures/source-map --sourceMap test/fixtures/source-map/throw-async.ts +// + rename js to mjs +// + rename js to mjs in source map comment in mjs file \ No newline at end of file diff --git a/test/fixtures/test-runner/index.js b/test/fixtures/test-runner/index.js new file mode 100644 index 00000000000000..fcf4b4d8eaa0ad --- /dev/null +++ b/test/fixtures/test-runner/index.js @@ -0,0 +1,2 @@ +'use strict'; +throw new Error('thrown from index.js'); diff --git a/test/fixtures/test-runner/index.test.js b/test/fixtures/test-runner/index.test.js new file mode 100644 index 00000000000000..2a722c504b9fa5 --- /dev/null +++ b/test/fixtures/test-runner/index.test.js @@ -0,0 +1,4 @@ +'use strict'; +const test = require('node:test'); + +test('this should pass'); diff --git a/test/fixtures/test-runner/node_modules/test-nm.js b/test/fixtures/test-runner/node_modules/test-nm.js new file mode 100644 index 00000000000000..30024eab1f17e4 --- /dev/null +++ b/test/fixtures/test-runner/node_modules/test-nm.js @@ -0,0 +1,2 @@ +'use strict'; +throw new Error('thrown from node_modules'); diff --git a/test/fixtures/test-runner/protoMutation.js b/test/fixtures/test-runner/protoMutation.js new file mode 100644 index 00000000000000..20071b9ecf7c75 --- /dev/null +++ b/test/fixtures/test-runner/protoMutation.js @@ -0,0 +1,3 @@ +'use strict'; + +Object.prototype.skip = true; diff --git a/test/fixtures/test-runner/random.test.mjs b/test/fixtures/test-runner/random.test.mjs new file mode 100644 index 00000000000000..a87a671d006ab6 --- /dev/null +++ b/test/fixtures/test-runner/random.test.mjs @@ -0,0 +1,5 @@ +import test from 'node:test'; + +test('this should fail', () => { + throw new Error('this is a failing test'); +}); diff --git a/test/pseudo-tty/test-handle-wrap-isrefed-tty.out b/test/fixtures/test-runner/subdir/subdir_test.js similarity index 100% rename from test/pseudo-tty/test-handle-wrap-isrefed-tty.out rename to test/fixtures/test-runner/subdir/subdir_test.js diff --git a/test/fixtures/test-runner/test/random.cjs b/test/fixtures/test-runner/test/random.cjs new file mode 100644 index 00000000000000..2a722c504b9fa5 --- /dev/null +++ b/test/fixtures/test-runner/test/random.cjs @@ -0,0 +1,4 @@ +'use strict'; +const test = require('node:test'); + +test('this should pass'); diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md index 7c795981d793a6..525476728748b0 100644 --- a/test/fixtures/wpt/README.md +++ b/test/fixtures/wpt/README.md @@ -13,7 +13,8 @@ Last update: - common: https://github.com/web-platform-tests/wpt/tree/03c5072aff/common - console: https://github.com/web-platform-tests/wpt/tree/3b1f72e99a/console - dom/abort: https://github.com/web-platform-tests/wpt/tree/c49cafb491/dom/abort -- encoding: https://github.com/web-platform-tests/wpt/tree/35f70910d3/encoding +- dom/events: https://github.com/web-platform-tests/wpt/tree/f8821adb28/dom/events +- encoding: https://github.com/web-platform-tests/wpt/tree/c1b24fce6e/encoding - FileAPI: https://github.com/web-platform-tests/wpt/tree/3b279420d4/FileAPI - hr-time: https://github.com/web-platform-tests/wpt/tree/9910784394/hr-time - html/webappapis/atob: https://github.com/web-platform-tests/wpt/tree/f267e1dca6/html/webappapis/atob @@ -21,11 +22,12 @@ Last update: - html/webappapis/timers: https://github.com/web-platform-tests/wpt/tree/5873f2d8f1/html/webappapis/timers - interfaces: https://github.com/web-platform-tests/wpt/tree/fc086c82d5/interfaces - performance-timeline: https://github.com/web-platform-tests/wpt/tree/17ebc3aea0/performance-timeline -- resources: https://github.com/web-platform-tests/wpt/tree/fbee645164/resources +- resources: https://github.com/web-platform-tests/wpt/tree/c5b428f15a/resources - streams: https://github.com/web-platform-tests/wpt/tree/8f60d94439/streams -- url: https://github.com/web-platform-tests/wpt/tree/77d54aa9e0/url +- url: https://github.com/web-platform-tests/wpt/tree/0e5b126cd0/url - user-timing: https://github.com/web-platform-tests/wpt/tree/df24fb604e/user-timing - WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/cdd0f03df4/WebCryptoAPI +- webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/a370aad338/webidl/ecmascript-binding/es-exceptions [Web Platform Tests]: https://github.com/web-platform-tests/wpt [`git node wpt`]: https://github.com/nodejs/node-core-utils/blob/main/docs/git-node.md#git-node-wpt diff --git a/test/fixtures/wpt/dom/events/AddEventListenerOptions-once.any.js b/test/fixtures/wpt/dom/events/AddEventListenerOptions-once.any.js new file mode 100644 index 00000000000000..b4edd4345c5e34 --- /dev/null +++ b/test/fixtures/wpt/dom/events/AddEventListenerOptions-once.any.js @@ -0,0 +1,96 @@ +// META: title=AddEventListenerOptions.once + +"use strict"; + +test(function() { + var invoked_once = false; + var invoked_normal = false; + function handler_once() { + invoked_once = true; + } + function handler_normal() { + invoked_normal = true; + } + + const et = new EventTarget(); + et.addEventListener('test', handler_once, {once: true}); + et.addEventListener('test', handler_normal); + et.dispatchEvent(new Event('test')); + assert_equals(invoked_once, true, "Once handler should be invoked"); + assert_equals(invoked_normal, true, "Normal handler should be invoked"); + + invoked_once = false; + invoked_normal = false; + et.dispatchEvent(new Event('test')); + assert_equals(invoked_once, false, "Once handler shouldn't be invoked again"); + assert_equals(invoked_normal, true, "Normal handler should be invoked again"); + et.removeEventListener('test', handler_normal); +}, "Once listener should be invoked only once"); + +test(function() { + const et = new EventTarget(); + var invoked_count = 0; + function handler() { + invoked_count++; + if (invoked_count == 1) + et.dispatchEvent(new Event('test')); + } + et.addEventListener('test', handler, {once: true}); + et.dispatchEvent(new Event('test')); + assert_equals(invoked_count, 1, "Once handler should only be invoked once"); + + invoked_count = 0; + function handler2() { + invoked_count++; + if (invoked_count == 1) + et.addEventListener('test', handler2, {once: true}); + if (invoked_count <= 2) + et.dispatchEvent(new Event('test')); + } + et.addEventListener('test', handler2, {once: true}); + et.dispatchEvent(new Event('test')); + assert_equals(invoked_count, 2, "Once handler should only be invoked once after each adding"); +}, "Once listener should be invoked only once even if the event is nested"); + +test(function() { + var invoked_count = 0; + function handler() { + invoked_count++; + } + + const et = new EventTarget(); + + et.addEventListener('test', handler, {once: true}); + et.addEventListener('test', handler); + et.dispatchEvent(new Event('test')); + assert_equals(invoked_count, 1, "The handler should only be added once"); + + invoked_count = 0; + et.dispatchEvent(new Event('test')); + assert_equals(invoked_count, 0, "The handler was added as a once listener"); + + invoked_count = 0; + et.addEventListener('test', handler, {once: true}); + et.removeEventListener('test', handler); + et.dispatchEvent(new Event('test')); + assert_equals(invoked_count, 0, "The handler should have been removed"); +}, "Once listener should be added / removed like normal listeners"); + +test(function() { + const et = new EventTarget(); + + var invoked_count = 0; + + for (let n = 4; n > 0; n--) { + et.addEventListener('test', (e) => { + invoked_count++; + e.stopImmediatePropagation(); + }, {once: true}); + } + + for (let n = 4; n > 0; n--) { + et.dispatchEvent(new Event('test')); + } + + assert_equals(invoked_count, 4, "The listeners should be invoked"); +}, "Multiple once listeners should be invoked even if the stopImmediatePropagation is set"); diff --git a/test/fixtures/wpt/dom/events/AddEventListenerOptions-passive.any.js b/test/fixtures/wpt/dom/events/AddEventListenerOptions-passive.any.js new file mode 100644 index 00000000000000..8e59cf5b379f2e --- /dev/null +++ b/test/fixtures/wpt/dom/events/AddEventListenerOptions-passive.any.js @@ -0,0 +1,134 @@ +// META: title=AddEventListenerOptions.passive + +test(function() { + var supportsPassive = false; + var query_options = { + get passive() { + supportsPassive = true; + return false; + }, + get dummy() { + assert_unreached("dummy value getter invoked"); + return false; + } + }; + + const et = new EventTarget(); + et.addEventListener('test_event', null, query_options); + assert_true(supportsPassive, "addEventListener doesn't support the passive option"); + + supportsPassive = false; + et.removeEventListener('test_event', null, query_options); + assert_false(supportsPassive, "removeEventListener supports the passive option when it should not"); +}, "Supports passive option on addEventListener only"); + +function testPassiveValue(optionsValue, expectedDefaultPrevented, existingEventTarget) { + var defaultPrevented = undefined; + var handler = function handler(e) { + assert_false(e.defaultPrevented, "Event prematurely marked defaultPrevented"); + e.preventDefault(); + defaultPrevented = e.defaultPrevented; + } + const et = existingEventTarget || new EventTarget(); + et.addEventListener('test', handler, optionsValue); + var uncanceled = et.dispatchEvent(new Event('test', {bubbles: true, cancelable: true})); + + assert_equals(defaultPrevented, expectedDefaultPrevented, "Incorrect defaultPrevented for options: " + JSON.stringify(optionsValue)); + assert_equals(uncanceled, !expectedDefaultPrevented, "Incorrect return value from dispatchEvent"); + + et.removeEventListener('test', handler, optionsValue); +} + +test(function() { + testPassiveValue(undefined, true); + testPassiveValue({}, true); + testPassiveValue({passive: false}, true); + testPassiveValue({passive: true}, false); + testPassiveValue({passive: 0}, true); + testPassiveValue({passive: 1}, false); +}, "preventDefault should be ignored if-and-only-if the passive option is true"); + +function testPassiveValueOnReturnValue(test, optionsValue, expectedDefaultPrevented) { + var defaultPrevented = undefined; + var handler = test.step_func(e => { + assert_false(e.defaultPrevented, "Event prematurely marked defaultPrevented"); + e.returnValue = false; + defaultPrevented = e.defaultPrevented; + }); + const et = new EventTarget(); + et.addEventListener('test', handler, optionsValue); + var uncanceled = et.dispatchEvent(new Event('test', {bubbles: true, cancelable: true})); + + assert_equals(defaultPrevented, expectedDefaultPrevented, "Incorrect defaultPrevented for options: " + JSON.stringify(optionsValue)); + assert_equals(uncanceled, !expectedDefaultPrevented, "Incorrect return value from dispatchEvent"); + + et.removeEventListener('test', handler, optionsValue); +} + +async_test(t => { + testPassiveValueOnReturnValue(t, undefined, true); + testPassiveValueOnReturnValue(t, {}, true); + testPassiveValueOnReturnValue(t, {passive: false}, true); + testPassiveValueOnReturnValue(t, {passive: true}, false); + testPassiveValueOnReturnValue(t, {passive: 0}, true); + testPassiveValueOnReturnValue(t, {passive: 1}, false); + t.done(); +}, "returnValue should be ignored if-and-only-if the passive option is true"); + +function testPassiveWithOtherHandlers(optionsValue, expectedDefaultPrevented) { + var handlerInvoked1 = false; + var dummyHandler1 = function() { + handlerInvoked1 = true; + }; + var handlerInvoked2 = false; + var dummyHandler2 = function() { + handlerInvoked2 = true; + }; + + const et = new EventTarget(); + et.addEventListener('test', dummyHandler1, {passive:true}); + et.addEventListener('test', dummyHandler2); + + testPassiveValue(optionsValue, expectedDefaultPrevented, et); + + assert_true(handlerInvoked1, "Extra passive handler not invoked"); + assert_true(handlerInvoked2, "Extra non-passive handler not invoked"); + + et.removeEventListener('test', dummyHandler1); + et.removeEventListener('test', dummyHandler2); +} + +test(function() { + testPassiveWithOtherHandlers({}, true); + testPassiveWithOtherHandlers({passive: false}, true); + testPassiveWithOtherHandlers({passive: true}, false); +}, "passive behavior of one listener should be unaffected by the presence of other listeners"); + +function testOptionEquivalence(optionValue1, optionValue2, expectedEquality) { + var invocationCount = 0; + var handler = function handler(e) { + invocationCount++; + } + const et = new EventTarget(); + et.addEventListener('test', handler, optionValue1); + et.addEventListener('test', handler, optionValue2); + et.dispatchEvent(new Event('test', {bubbles: true})); + assert_equals(invocationCount, expectedEquality ? 1 : 2, "equivalence of options " + + JSON.stringify(optionValue1) + " and " + JSON.stringify(optionValue2)); + et.removeEventListener('test', handler, optionValue1); + et.removeEventListener('test', handler, optionValue2); +} + +test(function() { + // Sanity check options that should be treated as distinct handlers + testOptionEquivalence({capture:true}, {capture:false, passive:false}, false); + testOptionEquivalence({capture:true}, {passive:true}, false); + + // Option values that should be treated as equivalent + testOptionEquivalence({}, {passive:false}, true); + testOptionEquivalence({passive:true}, {passive:false}, true); + testOptionEquivalence(undefined, {passive:true}, true); + testOptionEquivalence({capture: true, passive: false}, {capture: true, passive: true}, true); + +}, "Equivalence of option values"); + diff --git a/test/fixtures/wpt/dom/events/AddEventListenerOptions-signal.any.js b/test/fixtures/wpt/dom/events/AddEventListenerOptions-signal.any.js new file mode 100644 index 00000000000000..e6a34261594bca --- /dev/null +++ b/test/fixtures/wpt/dom/events/AddEventListenerOptions-signal.any.js @@ -0,0 +1,143 @@ +'use strict'; + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', handler, { signal: controller.signal }); + et.dispatchEvent(new Event('test')); + assert_equals(count, 1, "Adding a signal still adds a listener"); + et.dispatchEvent(new Event('test')); + assert_equals(count, 2, "The listener was not added with the once flag"); + controller.abort(); + et.dispatchEvent(new Event('test')); + assert_equals(count, 2, "Aborting on the controller removes the listener"); + et.addEventListener('test', handler, { signal: controller.signal }); + et.dispatchEvent(new Event('test')); + assert_equals(count, 2, "Passing an aborted signal never adds the handler"); +}, "Passing an AbortSignal to addEventListener options should allow removing a listener"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', handler, { signal: controller.signal }); + et.removeEventListener('test', handler); + et.dispatchEvent(new Event('test')); + assert_equals(count, 0, "The listener was still removed"); +}, "Passing an AbortSignal to addEventListener does not prevent removeEventListener"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', handler, { signal: controller.signal, once: true }); + controller.abort(); + et.dispatchEvent(new Event('test')); + assert_equals(count, 0, "The listener was still removed"); +}, "Passing an AbortSignal to addEventListener works with the once flag"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', handler, { signal: controller.signal, once: true }); + et.removeEventListener('test', handler); + et.dispatchEvent(new Event('test')); + assert_equals(count, 0, "The listener was still removed"); +}, "Removing a once listener works with a passed signal"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('first', handler, { signal: controller.signal, once: true }); + et.addEventListener('second', handler, { signal: controller.signal, once: true }); + controller.abort(); + et.dispatchEvent(new Event('first')); + et.dispatchEvent(new Event('second')); + assert_equals(count, 0, "The listener was still removed"); +}, "Passing an AbortSignal to multiple listeners"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', handler, { signal: controller.signal, capture: true }); + controller.abort(); + et.dispatchEvent(new Event('test')); + assert_equals(count, 0, "The listener was still removed"); +}, "Passing an AbortSignal to addEventListener works with the capture flag"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', () => { + controller.abort(); + }, { signal: controller.signal }); + et.addEventListener('test', handler, { signal: controller.signal }); + et.dispatchEvent(new Event('test')); + assert_equals(count, 0, "The listener was still removed"); +}, "Aborting from a listener does not call future listeners"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', () => { + et.addEventListener('test', handler, { signal: controller.signal }); + controller.abort(); + }, { signal: controller.signal }); + et.dispatchEvent(new Event('test')); + assert_equals(count, 0, "The listener was still removed"); +}, "Adding then aborting a listener in another listener does not call it"); + +test(function() { + const et = new EventTarget(); + const ac = new AbortController(); + let count = 0; + et.addEventListener('foo', () => { + et.addEventListener('foo', () => { + count++; + if (count > 5) ac.abort(); + et.dispatchEvent(new Event('foo')); + }, { signal: ac.signal }); + et.dispatchEvent(new Event('foo')); + }, { once: true }); + et.dispatchEvent(new Event('foo')); +}, "Aborting from a nested listener should remove it"); + +test(function() { + const et = new EventTarget(); + assert_throws_js(TypeError, () => { et.addEventListener("foo", () => {}, { signal: null }); }); +}, "Passing null as the signal should throw"); + +test(function() { + const et = new EventTarget(); + assert_throws_js(TypeError, () => { et.addEventListener("foo", null, { signal: null }); }); +}, "Passing null as the signal should throw (listener is also null)"); diff --git a/test/fixtures/wpt/dom/events/CustomEvent.html b/test/fixtures/wpt/dom/events/CustomEvent.html new file mode 100644 index 00000000000000..87050943f9bffa --- /dev/null +++ b/test/fixtures/wpt/dom/events/CustomEvent.html @@ -0,0 +1,35 @@ + +CustomEvent + + +
                  + diff --git a/test/fixtures/wpt/dom/events/Event-cancelBubble.html b/test/fixtures/wpt/dom/events/Event-cancelBubble.html new file mode 100644 index 00000000000000..d8d2d7239d025f --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-cancelBubble.html @@ -0,0 +1,132 @@ + + + + + Event.cancelBubble + + + + + + + +
                  +
                  +
                  +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/Event-constants.html b/test/fixtures/wpt/dom/events/Event-constants.html new file mode 100644 index 00000000000000..635e9894d9a3a4 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-constants.html @@ -0,0 +1,23 @@ + +Event constants + + + +
                  + diff --git a/test/fixtures/wpt/dom/events/Event-constructors.any.js b/test/fixtures/wpt/dom/events/Event-constructors.any.js new file mode 100644 index 00000000000000..aced2f3c2cda61 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-constructors.any.js @@ -0,0 +1,114 @@ +// META: title=Event constructors + +test(function() { + assert_throws_js(TypeError, function() { + new Event() + }) +}) +test(function() { + var test_error = { name: "test" } + assert_throws_exactly(test_error, function() { + new Event({ toString: function() { throw test_error; } }) + }) +}) +test(function() { + var ev = new Event("") + assert_equals(ev.type, "") + assert_equals(ev.target, null) + assert_equals(ev.srcElement, null) + assert_equals(ev.currentTarget, null) + assert_equals(ev.eventPhase, Event.NONE) + assert_equals(ev.bubbles, false) + assert_equals(ev.cancelable, false) + assert_equals(ev.defaultPrevented, false) + assert_equals(ev.returnValue, true) + assert_equals(ev.isTrusted, false) + assert_true(ev.timeStamp > 0) + assert_true("initEvent" in ev) +}) +test(function() { + var ev = new Event("test") + assert_equals(ev.type, "test") + assert_equals(ev.target, null) + assert_equals(ev.srcElement, null) + assert_equals(ev.currentTarget, null) + assert_equals(ev.eventPhase, Event.NONE) + assert_equals(ev.bubbles, false) + assert_equals(ev.cancelable, false) + assert_equals(ev.defaultPrevented, false) + assert_equals(ev.returnValue, true) + assert_equals(ev.isTrusted, false) + assert_true(ev.timeStamp > 0) + assert_true("initEvent" in ev) +}) +test(function() { + assert_throws_js(TypeError, function() { Event("test") }, + 'Calling Event constructor without "new" must throw'); +}) +test(function() { + var ev = new Event("I am an event", { bubbles: true, cancelable: false}) + assert_equals(ev.type, "I am an event") + assert_equals(ev.bubbles, true) + assert_equals(ev.cancelable, false) +}) +test(function() { + var ev = new Event("@", { bubblesIGNORED: true, cancelable: true}) + assert_equals(ev.type, "@") + assert_equals(ev.bubbles, false) + assert_equals(ev.cancelable, true) +}) +test(function() { + var ev = new Event("@", { "bubbles\0IGNORED": true, cancelable: true}) + assert_equals(ev.type, "@") + assert_equals(ev.bubbles, false) + assert_equals(ev.cancelable, true) +}) +test(function() { + var ev = new Event("Xx", { cancelable: true}) + assert_equals(ev.type, "Xx") + assert_equals(ev.bubbles, false) + assert_equals(ev.cancelable, true) +}) +test(function() { + var ev = new Event("Xx", {}) + assert_equals(ev.type, "Xx") + assert_equals(ev.bubbles, false) + assert_equals(ev.cancelable, false) +}) +test(function() { + var ev = new Event("Xx", {bubbles: true, cancelable: false, sweet: "x"}) + assert_equals(ev.type, "Xx") + assert_equals(ev.bubbles, true) + assert_equals(ev.cancelable, false) + assert_equals(ev.sweet, undefined) +}) +test(function() { + var called = [] + var ev = new Event("Xx", { + get cancelable() { + called.push("cancelable") + return false + }, + get bubbles() { + called.push("bubbles") + return true; + }, + get sweet() { + called.push("sweet") + return "x" + } + }) + assert_array_equals(called, ["bubbles", "cancelable"]) + assert_equals(ev.type, "Xx") + assert_equals(ev.bubbles, true) + assert_equals(ev.cancelable, false) + assert_equals(ev.sweet, undefined) +}) +test(function() { + var ev = new CustomEvent("$", {detail: 54, sweet: "x", sweet2: "x", cancelable:true}) + assert_equals(ev.type, "$") + assert_equals(ev.bubbles, false) + assert_equals(ev.cancelable, true) + assert_equals(ev.sweet, undefined) + assert_equals(ev.detail, 54) +}) diff --git a/test/fixtures/wpt/dom/events/Event-defaultPrevented-after-dispatch.html b/test/fixtures/wpt/dom/events/Event-defaultPrevented-after-dispatch.html new file mode 100644 index 00000000000000..8fef005eb57772 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-defaultPrevented-after-dispatch.html @@ -0,0 +1,44 @@ + + +Event.defaultPrevented is not reset after dispatchEvent() + + + + +
                  + + diff --git a/test/fixtures/wpt/dom/events/Event-defaultPrevented.html b/test/fixtures/wpt/dom/events/Event-defaultPrevented.html new file mode 100644 index 00000000000000..2548fa3e064bb1 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-defaultPrevented.html @@ -0,0 +1,55 @@ + +Event.defaultPrevented + + +
                  + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-bubble-canceled.html b/test/fixtures/wpt/dom/events/Event-dispatch-bubble-canceled.html new file mode 100644 index 00000000000000..20f398f66f9bcf --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-bubble-canceled.html @@ -0,0 +1,59 @@ + + + +Setting cancelBubble=true prior to dispatchEvent() + + + + +
                  + + + + + + + + + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-bubbles-false.html b/test/fixtures/wpt/dom/events/Event-dispatch-bubbles-false.html new file mode 100644 index 00000000000000..0f43cb0275662d --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-bubbles-false.html @@ -0,0 +1,98 @@ + + + Event.bubbles attribute is set to false + + + + +
                  + + + + + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-bubbles-true.html b/test/fixtures/wpt/dom/events/Event-dispatch-bubbles-true.html new file mode 100644 index 00000000000000..b23605a1ebc318 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-bubbles-true.html @@ -0,0 +1,108 @@ + + + Event.bubbles attribute is set to false + + + + +
                  + + + + + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-click.html b/test/fixtures/wpt/dom/events/Event-dispatch-click.html new file mode 100644 index 00000000000000..010305775df7e9 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-click.html @@ -0,0 +1,369 @@ + +Synthetic click event "magic" + + +
                  + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-click.tentative.html b/test/fixtures/wpt/dom/events/Event-dispatch-click.tentative.html new file mode 100644 index 00000000000000..cfdae55ef2ab48 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-click.tentative.html @@ -0,0 +1,78 @@ + +Clicks on input element + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-detached-click.html b/test/fixtures/wpt/dom/events/Event-dispatch-detached-click.html new file mode 100644 index 00000000000000..76ea3d78ba74e0 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-detached-click.html @@ -0,0 +1,20 @@ + +Click event on an element not in the document + + +
                  + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-detached-input-and-change.html b/test/fixtures/wpt/dom/events/Event-dispatch-detached-input-and-change.html new file mode 100644 index 00000000000000..a53ae71ac2a08d --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-detached-input-and-change.html @@ -0,0 +1,190 @@ + + + +input and change events for detached checkbox and radio elements + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-handlers-changed.html b/test/fixtures/wpt/dom/events/Event-dispatch-handlers-changed.html new file mode 100644 index 00000000000000..24e6fd70cb4ec4 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-handlers-changed.html @@ -0,0 +1,91 @@ + + + Dispatch additional events inside an event listener + + + +
                  + + + + + + + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-listener-order.window.js b/test/fixtures/wpt/dom/events/Event-dispatch-listener-order.window.js new file mode 100644 index 00000000000000..a01a472872b927 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-listener-order.window.js @@ -0,0 +1,20 @@ +test(t => { + const hostParent = document.createElement("section"), + host = hostParent.appendChild(document.createElement("div")), + shadowRoot = host.attachShadow({ mode: "closed" }), + targetParent = shadowRoot.appendChild(document.createElement("p")), + target = targetParent.appendChild(document.createElement("span")), + path = [hostParent, host, shadowRoot, targetParent, target], + expected = [], + result = []; + path.forEach((node, index) => { + expected.splice(index, 0, "capturing " + node.nodeName); + expected.splice(index + 1, 0, "bubbling " + node.nodeName); + }); + path.forEach(node => { + node.addEventListener("test", () => { result.push("bubbling " + node.nodeName) }); + node.addEventListener("test", () => { result.push("capturing " + node.nodeName) }, true); + }); + target.dispatchEvent(new CustomEvent('test', { detail: {}, bubbles: true, composed: true })); + assert_array_equals(result, expected); +}); diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-multiple-cancelBubble.html b/test/fixtures/wpt/dom/events/Event-dispatch-multiple-cancelBubble.html new file mode 100644 index 00000000000000..2873fd7794b782 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-multiple-cancelBubble.html @@ -0,0 +1,51 @@ + + + +Multiple dispatchEvent() and cancelBubble + + + + +
                  + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-multiple-stopPropagation.html b/test/fixtures/wpt/dom/events/Event-dispatch-multiple-stopPropagation.html new file mode 100644 index 00000000000000..72644bd861ea1d --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-multiple-stopPropagation.html @@ -0,0 +1,51 @@ + + + + Multiple dispatchEvent() and stopPropagation() + + + + +
                  + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-omitted-capture.html b/test/fixtures/wpt/dom/events/Event-dispatch-omitted-capture.html new file mode 100644 index 00000000000000..77074d9a3ec2b3 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-omitted-capture.html @@ -0,0 +1,70 @@ + + +EventTarget.addEventListener: capture argument omitted + + + + +
                  + + + + + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-on-disabled-elements.html b/test/fixtures/wpt/dom/events/Event-dispatch-on-disabled-elements.html new file mode 100644 index 00000000000000..361006a7240496 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-on-disabled-elements.html @@ -0,0 +1,251 @@ + + + +Events must dispatch on disabled elements + + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-order-at-target.html b/test/fixtures/wpt/dom/events/Event-dispatch-order-at-target.html new file mode 100644 index 00000000000000..79673c32564cbe --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-order-at-target.html @@ -0,0 +1,31 @@ + + +Listeners are invoked in correct order (AT_TARGET phase) + + +
                  + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-order.html b/test/fixtures/wpt/dom/events/Event-dispatch-order.html new file mode 100644 index 00000000000000..ca94434595c6ee --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-order.html @@ -0,0 +1,26 @@ + +Event phases order + + +
                  + +
                  +
                  +
                  diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-other-document.html b/test/fixtures/wpt/dom/events/Event-dispatch-other-document.html new file mode 100644 index 00000000000000..689b48087a0327 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-other-document.html @@ -0,0 +1,23 @@ + +Custom event on an element in another document + + +
                  + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-propagation-stopped.html b/test/fixtures/wpt/dom/events/Event-dispatch-propagation-stopped.html new file mode 100644 index 00000000000000..889f8cfe11489d --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-propagation-stopped.html @@ -0,0 +1,59 @@ + + + + Calling stopPropagation() prior to dispatchEvent() + + + + +
                  + + + + + + + + + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-redispatch.html b/test/fixtures/wpt/dom/events/Event-dispatch-redispatch.html new file mode 100644 index 00000000000000..cf861ca17744c2 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-redispatch.html @@ -0,0 +1,124 @@ + + +EventTarget#dispatchEvent(): redispatching a native event + + + + + + +
                  + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-reenter.html b/test/fixtures/wpt/dom/events/Event-dispatch-reenter.html new file mode 100644 index 00000000000000..71f8517bdd9dbe --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-reenter.html @@ -0,0 +1,66 @@ + + + Dispatch additional events inside an event listener + + +
                  + + + + + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-target-moved.html b/test/fixtures/wpt/dom/events/Event-dispatch-target-moved.html new file mode 100644 index 00000000000000..facb2c7b9568f6 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-target-moved.html @@ -0,0 +1,73 @@ + + + Determined event propagation path - target moved + + + +
                  + + + + + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-target-removed.html b/test/fixtures/wpt/dom/events/Event-dispatch-target-removed.html new file mode 100644 index 00000000000000..531799c3ade6b6 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-target-removed.html @@ -0,0 +1,72 @@ + + +Determined event propagation path - target removed + + + +
                  + + + + + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-dispatch-throwing.html b/test/fixtures/wpt/dom/events/Event-dispatch-throwing.html new file mode 100644 index 00000000000000..7d1c0d94a0845b --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-dispatch-throwing.html @@ -0,0 +1,51 @@ + + +Throwing in event listeners + + +
                  + diff --git a/test/fixtures/wpt/dom/events/Event-init-while-dispatching.html b/test/fixtures/wpt/dom/events/Event-init-while-dispatching.html new file mode 100644 index 00000000000000..2aa1f6701c4c4b --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-init-while-dispatching.html @@ -0,0 +1,83 @@ + + +Re-initializing events while dispatching them + + + +
                  + diff --git a/test/fixtures/wpt/dom/events/Event-initEvent.html b/test/fixtures/wpt/dom/events/Event-initEvent.html new file mode 100644 index 00000000000000..ad1018d4daf7ba --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-initEvent.html @@ -0,0 +1,136 @@ + +Event.initEvent + + + +
                  + diff --git a/test/fixtures/wpt/dom/events/Event-isTrusted.any.js b/test/fixtures/wpt/dom/events/Event-isTrusted.any.js new file mode 100644 index 00000000000000..00bcecd0ed67a0 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-isTrusted.any.js @@ -0,0 +1,11 @@ +test(function() { + var desc1 = Object.getOwnPropertyDescriptor(new Event("x"), "isTrusted"); + assert_not_equals(desc1, undefined); + assert_equals(typeof desc1.get, "function"); + + var desc2 = Object.getOwnPropertyDescriptor(new Event("x"), "isTrusted"); + assert_not_equals(desc2, undefined); + assert_equals(typeof desc2.get, "function"); + + assert_equals(desc1.get, desc2.get); +}); diff --git a/test/fixtures/wpt/dom/events/Event-propagation.html b/test/fixtures/wpt/dom/events/Event-propagation.html new file mode 100644 index 00000000000000..33989eb4bf9526 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-propagation.html @@ -0,0 +1,48 @@ + +Event propagation tests + +
                  + + + diff --git a/test/fixtures/wpt/dom/events/Event-returnValue.html b/test/fixtures/wpt/dom/events/Event-returnValue.html new file mode 100644 index 00000000000000..08df2d41416ffc --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-returnValue.html @@ -0,0 +1,64 @@ + + + + + Event.returnValue + + + + + + + +
                  + + + diff --git a/test/fixtures/wpt/dom/events/Event-stopImmediatePropagation.html b/test/fixtures/wpt/dom/events/Event-stopImmediatePropagation.html new file mode 100644 index 00000000000000..b75732257a89dd --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-stopImmediatePropagation.html @@ -0,0 +1,34 @@ + + +Event's stopImmediatePropagation + + + + + + +
                  + + diff --git a/test/fixtures/wpt/dom/events/Event-stopPropagation-cancel-bubbling.html b/test/fixtures/wpt/dom/events/Event-stopPropagation-cancel-bubbling.html new file mode 100644 index 00000000000000..5c2c49f33826a9 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-stopPropagation-cancel-bubbling.html @@ -0,0 +1,20 @@ + + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-subclasses-constructors.html b/test/fixtures/wpt/dom/events/Event-subclasses-constructors.html new file mode 100644 index 00000000000000..08a5ded011635c --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-subclasses-constructors.html @@ -0,0 +1,179 @@ + + +Event constructors + + +
                  + diff --git a/test/fixtures/wpt/dom/events/Event-timestamp-cross-realm-getter.html b/test/fixtures/wpt/dom/events/Event-timestamp-cross-realm-getter.html new file mode 100644 index 00000000000000..45823de26b27f9 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-timestamp-cross-realm-getter.html @@ -0,0 +1,27 @@ + + +event.timeStamp is initialized using event's relevant global object + + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-timestamp-high-resolution.html b/test/fixtures/wpt/dom/events/Event-timestamp-high-resolution.html new file mode 100644 index 00000000000000..a049fef64b4c7d --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-timestamp-high-resolution.html @@ -0,0 +1,16 @@ + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-timestamp-high-resolution.https.html b/test/fixtures/wpt/dom/events/Event-timestamp-high-resolution.https.html new file mode 100644 index 00000000000000..70f974294796b5 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-timestamp-high-resolution.https.html @@ -0,0 +1,16 @@ + + + + + diff --git a/test/fixtures/wpt/dom/events/Event-timestamp-safe-resolution.html b/test/fixtures/wpt/dom/events/Event-timestamp-safe-resolution.html new file mode 100644 index 00000000000000..24f2dec93c5ae8 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-timestamp-safe-resolution.html @@ -0,0 +1,49 @@ + + + + \ No newline at end of file diff --git a/test/fixtures/wpt/dom/events/Event-type-empty.html b/test/fixtures/wpt/dom/events/Event-type-empty.html new file mode 100644 index 00000000000000..225b85a613a655 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-type-empty.html @@ -0,0 +1,35 @@ + +Event.type set to the empty string + + + + +
                  + diff --git a/test/fixtures/wpt/dom/events/Event-type.html b/test/fixtures/wpt/dom/events/Event-type.html new file mode 100644 index 00000000000000..22792f5c6c7883 --- /dev/null +++ b/test/fixtures/wpt/dom/events/Event-type.html @@ -0,0 +1,22 @@ + +Event.type + + + + +
                  + diff --git a/test/fixtures/wpt/dom/events/EventListener-addEventListener.sub.window.js b/test/fixtures/wpt/dom/events/EventListener-addEventListener.sub.window.js new file mode 100644 index 00000000000000..b44bc332859da5 --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventListener-addEventListener.sub.window.js @@ -0,0 +1,9 @@ +async_test(function(t) { + let crossOriginFrame = document.createElement('iframe'); + crossOriginFrame.src = 'https://{{hosts[alt][]}}:{{ports[https][0]}}/common/blank.html'; + document.body.appendChild(crossOriginFrame); + crossOriginFrame.addEventListener('load', t.step_func_done(function() { + let crossOriginWindow = crossOriginFrame.contentWindow; + window.addEventListener('click', crossOriginWindow); + })); +}, "EventListener.addEventListener doesn't throw when a cross origin object is passed in."); diff --git a/test/fixtures/wpt/dom/events/EventListener-handleEvent-cross-realm.html b/test/fixtures/wpt/dom/events/EventListener-handleEvent-cross-realm.html new file mode 100644 index 00000000000000..663d04213f82bb --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventListener-handleEvent-cross-realm.html @@ -0,0 +1,75 @@ + + +Cross-realm EventListener throws TypeError of its associated Realm + + + + + + + diff --git a/test/fixtures/wpt/dom/events/EventListener-handleEvent.html b/test/fixtures/wpt/dom/events/EventListener-handleEvent.html new file mode 100644 index 00000000000000..06bc1f6e2ab267 --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventListener-handleEvent.html @@ -0,0 +1,102 @@ + + +EventListener::handleEvent() + + + +
                  + diff --git a/test/fixtures/wpt/dom/events/EventListener-incumbent-global-1.sub.html b/test/fixtures/wpt/dom/events/EventListener-incumbent-global-1.sub.html new file mode 100644 index 00000000000000..9d941385cbc483 --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventListener-incumbent-global-1.sub.html @@ -0,0 +1,20 @@ + + + + + + + diff --git a/test/fixtures/wpt/dom/events/EventListener-incumbent-global-2.sub.html b/test/fixtures/wpt/dom/events/EventListener-incumbent-global-2.sub.html new file mode 100644 index 00000000000000..4433c098d75c58 --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventListener-incumbent-global-2.sub.html @@ -0,0 +1,20 @@ + + + + + + + diff --git a/test/fixtures/wpt/dom/events/EventListener-incumbent-global-subframe-1.sub.html b/test/fixtures/wpt/dom/events/EventListener-incumbent-global-subframe-1.sub.html new file mode 100644 index 00000000000000..25487cc5e0bcb1 --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventListener-incumbent-global-subframe-1.sub.html @@ -0,0 +1,13 @@ + + + diff --git a/test/fixtures/wpt/dom/events/EventListener-incumbent-global-subframe-2.sub.html b/test/fixtures/wpt/dom/events/EventListener-incumbent-global-subframe-2.sub.html new file mode 100644 index 00000000000000..9c7235e2ad4358 --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventListener-incumbent-global-subframe-2.sub.html @@ -0,0 +1,13 @@ + + + diff --git a/test/fixtures/wpt/dom/events/EventListener-incumbent-global-subsubframe.sub.html b/test/fixtures/wpt/dom/events/EventListener-incumbent-global-subsubframe.sub.html new file mode 100644 index 00000000000000..dd683f6f65f89f --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventListener-incumbent-global-subsubframe.sub.html @@ -0,0 +1,20 @@ + + diff --git a/test/fixtures/wpt/dom/events/EventListener-invoke-legacy.html b/test/fixtures/wpt/dom/events/EventListener-invoke-legacy.html new file mode 100644 index 00000000000000..a01afcd8d1985c --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventListener-invoke-legacy.html @@ -0,0 +1,66 @@ + + +Invoke legacy event listener + + + +
                  + diff --git a/test/fixtures/wpt/dom/events/EventListenerOptions-capture.html b/test/fixtures/wpt/dom/events/EventListenerOptions-capture.html new file mode 100644 index 00000000000000..f72cf3ca5463f1 --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventListenerOptions-capture.html @@ -0,0 +1,98 @@ + + +EventListenerOptions.capture + + + + +
                  + + diff --git a/test/fixtures/wpt/dom/events/EventTarget-add-listener-platform-object.html b/test/fixtures/wpt/dom/events/EventTarget-add-listener-platform-object.html new file mode 100644 index 00000000000000..d5565c22b3d5af --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventTarget-add-listener-platform-object.html @@ -0,0 +1,32 @@ + + +addEventListener with a platform object + + + +Click me! + diff --git a/test/fixtures/wpt/dom/events/EventTarget-add-remove-listener.any.js b/test/fixtures/wpt/dom/events/EventTarget-add-remove-listener.any.js new file mode 100644 index 00000000000000..b1d7ffb3e07fbe --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventTarget-add-remove-listener.any.js @@ -0,0 +1,21 @@ +// META: title=EventTarget's addEventListener + removeEventListener + +"use strict"; + +function listener(evt) { + evt.preventDefault(); + return false; +} + +test(() => { + const et = new EventTarget(); + et.addEventListener("x", listener, false); + let event = new Event("x", { cancelable: true }); + let ret = et.dispatchEvent(event); + assert_false(ret); + + et.removeEventListener("x", listener); + event = new Event("x", { cancelable: true }); + ret = et.dispatchEvent(event); + assert_true(ret); +}, "Removing an event listener without explicit capture arg should succeed"); diff --git a/test/fixtures/wpt/dom/events/EventTarget-addEventListener.any.js b/test/fixtures/wpt/dom/events/EventTarget-addEventListener.any.js new file mode 100644 index 00000000000000..e22da4aff850a2 --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventTarget-addEventListener.any.js @@ -0,0 +1,9 @@ +// META: title=EventTarget.addEventListener + +// Step 1. +test(function() { + const et = new EventTarget(); + assert_equals(et.addEventListener("x", null, false), undefined); + assert_equals(et.addEventListener("x", null, true), undefined); + assert_equals(et.addEventListener("x", null), undefined); +}, "Adding a null event listener should succeed"); diff --git a/test/fixtures/wpt/dom/events/EventTarget-constructible.any.js b/test/fixtures/wpt/dom/events/EventTarget-constructible.any.js new file mode 100644 index 00000000000000..b0e7614e625b3d --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventTarget-constructible.any.js @@ -0,0 +1,62 @@ +"use strict"; + +test(() => { + const target = new EventTarget(); + const event = new Event("foo", { bubbles: true, cancelable: false }); + let callCount = 0; + + function listener(e) { + assert_equals(e, event); + ++callCount; + } + + target.addEventListener("foo", listener); + + target.dispatchEvent(event); + assert_equals(callCount, 1); + + target.dispatchEvent(event); + assert_equals(callCount, 2); + + target.removeEventListener("foo", listener); + target.dispatchEvent(event); + assert_equals(callCount, 2); +}, "A constructed EventTarget can be used as expected"); + +test(() => { + class NicerEventTarget extends EventTarget { + on(...args) { + this.addEventListener(...args); + } + + off(...args) { + this.removeEventListener(...args); + } + + dispatch(type, detail) { + this.dispatchEvent(new CustomEvent(type, { detail })); + } + } + + const target = new NicerEventTarget(); + const event = new Event("foo", { bubbles: true, cancelable: false }); + const detail = "some data"; + let callCount = 0; + + function listener(e) { + assert_equals(e.detail, detail); + ++callCount; + } + + target.on("foo", listener); + + target.dispatch("foo", detail); + assert_equals(callCount, 1); + + target.dispatch("foo", detail); + assert_equals(callCount, 2); + + target.off("foo", listener); + target.dispatch("foo", detail); + assert_equals(callCount, 2); +}, "EventTarget can be subclassed"); diff --git a/test/fixtures/wpt/dom/events/EventTarget-dispatchEvent-returnvalue.html b/test/fixtures/wpt/dom/events/EventTarget-dispatchEvent-returnvalue.html new file mode 100644 index 00000000000000..c4466e0d6cdada --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventTarget-dispatchEvent-returnvalue.html @@ -0,0 +1,71 @@ + + +EventTarget.dispatchEvent: return value + + + + + + +
                  + + + + + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/EventTarget-dispatchEvent.html b/test/fixtures/wpt/dom/events/EventTarget-dispatchEvent.html new file mode 100644 index 00000000000000..783561f5fb5943 --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventTarget-dispatchEvent.html @@ -0,0 +1,104 @@ + + +EventTarget.dispatchEvent + + + + + + +
                  + diff --git a/test/fixtures/wpt/dom/events/EventTarget-removeEventListener.any.js b/test/fixtures/wpt/dom/events/EventTarget-removeEventListener.any.js new file mode 100644 index 00000000000000..289dfcfbabde0f --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventTarget-removeEventListener.any.js @@ -0,0 +1,8 @@ +// META: title=EventTarget.removeEventListener + +// Step 1. +test(function() { + assert_equals(globalThis.removeEventListener("x", null, false), undefined); + assert_equals(globalThis.removeEventListener("x", null, true), undefined); + assert_equals(globalThis.removeEventListener("x", null), undefined); +}, "removing a null event listener should succeed"); diff --git a/test/fixtures/wpt/dom/events/EventTarget-this-of-listener.html b/test/fixtures/wpt/dom/events/EventTarget-this-of-listener.html new file mode 100644 index 00000000000000..506564c4133ce6 --- /dev/null +++ b/test/fixtures/wpt/dom/events/EventTarget-this-of-listener.html @@ -0,0 +1,182 @@ + + +EventTarget listeners this value + + + + + + diff --git a/test/fixtures/wpt/dom/events/KeyEvent-initKeyEvent.html b/test/fixtures/wpt/dom/events/KeyEvent-initKeyEvent.html new file mode 100644 index 00000000000000..3fffaba0143c78 --- /dev/null +++ b/test/fixtures/wpt/dom/events/KeyEvent-initKeyEvent.html @@ -0,0 +1,23 @@ + + +KeyEvent.initKeyEvent + + +
                  + diff --git a/test/fixtures/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.tentative.html b/test/fixtures/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.tentative.html new file mode 100644 index 00000000000000..f3f0d58209fd8e --- /dev/null +++ b/test/fixtures/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.tentative.html @@ -0,0 +1,73 @@ + +Default passive document level touchmove event listener test + + + + + + + +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/document-level-wheel-event-listener-passive-by-default.tentative.html b/test/fixtures/wpt/dom/events/document-level-wheel-event-listener-passive-by-default.tentative.html new file mode 100644 index 00000000000000..b7224835fa398b --- /dev/null +++ b/test/fixtures/wpt/dom/events/document-level-wheel-event-listener-passive-by-default.tentative.html @@ -0,0 +1,51 @@ + +Default passive document level wheel event listener manual test + + + + + + + +
                  This is a manual test since there is no way to synthesize wheel events. +Scroll by wheel in the middle of the page to run the test.
                  + + diff --git a/test/fixtures/wpt/dom/events/event-disabled-dynamic.html b/test/fixtures/wpt/dom/events/event-disabled-dynamic.html new file mode 100644 index 00000000000000..3f995b02f1b421 --- /dev/null +++ b/test/fixtures/wpt/dom/events/event-disabled-dynamic.html @@ -0,0 +1,21 @@ + + +Test that disabled is honored immediately in presence of dynamic changes + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/event-global-extra.window.js b/test/fixtures/wpt/dom/events/event-global-extra.window.js new file mode 100644 index 00000000000000..0f14961c40a650 --- /dev/null +++ b/test/fixtures/wpt/dom/events/event-global-extra.window.js @@ -0,0 +1,90 @@ +const otherWindow = document.body.appendChild(document.createElement("iframe")).contentWindow; + +["EventTarget", "XMLHttpRequest"].forEach(constructorName => { + async_test(t => { + const eventTarget = new otherWindow[constructorName](); + eventTarget.addEventListener("hi", t.step_func_done(e => { + assert_equals(otherWindow.event, undefined); + assert_equals(e, window.event); + })); + eventTarget.dispatchEvent(new Event("hi")); + }, "window.event for constructors from another global: " + constructorName); +}); + +// XXX: It would be good to test a subclass of EventTarget once we sort out +// https://github.com/heycam/webidl/issues/540 + +async_test(t => { + const element = document.body.appendChild(otherWindow.document.createElement("meh")); + element.addEventListener("yo", t.step_func_done(e => { + assert_equals(e, window.event); + })); + element.dispatchEvent(new Event("yo")); +}, "window.event and element from another document"); + +async_test(t => { + const doc = otherWindow.document, + element = doc.body.appendChild(doc.createElement("meh")), + child = element.appendChild(doc.createElement("bleh")); + element.addEventListener("yoyo", t.step_func(e => { + document.body.appendChild(element); + assert_equals(element.ownerDocument, document); + assert_equals(window.event, e); + assert_equals(otherWindow.event, undefined); + }), true); + element.addEventListener("yoyo", t.step_func(e => { + assert_equals(element.ownerDocument, document); + assert_equals(window.event, e); + assert_equals(otherWindow.event, undefined); + }), true); + child.addEventListener("yoyo", t.step_func_done(e => { + assert_equals(child.ownerDocument, document); + assert_equals(window.event, e); + assert_equals(otherWindow.event, undefined); + })); + child.dispatchEvent(new Event("yoyo")); +}, "window.event and moving an element post-dispatch"); + +test(t => { + const host = document.createElement("div"), + shadow = host.attachShadow({ mode: "open" }), + child = shadow.appendChild(document.createElement("trala")), + furtherChild = child.appendChild(document.createElement("waddup")); + let counter = 0; + host.addEventListener("hi", t.step_func(e => { + assert_equals(window.event, e); + assert_equals(counter++, 3); + })); + child.addEventListener("hi", t.step_func(e => { + assert_equals(window.event, undefined); + assert_equals(counter++, 2); + })); + furtherChild.addEventListener("hi", t.step_func(e => { + host.appendChild(child); + assert_equals(window.event, undefined); + assert_equals(counter++, 0); + })); + furtherChild.addEventListener("hi", t.step_func(e => { + assert_equals(window.event, undefined); + assert_equals(counter++, 1); + })); + furtherChild.dispatchEvent(new Event("hi", { composed: true, bubbles: true })); + assert_equals(counter, 4); +}, "window.event should not be affected by nodes moving post-dispatch"); + +async_test(t => { + const frame = document.body.appendChild(document.createElement("iframe")); + frame.src = "resources/event-global-extra-frame.html"; + frame.onload = t.step_func_done((load_event) => { + const event = new Event("hi"); + document.addEventListener("hi", frame.contentWindow.listener); // listener intentionally not wrapped in t.step_func + document.addEventListener("hi", t.step_func(e => { + assert_equals(event, e); + assert_equals(window.event, e); + })); + document.dispatchEvent(event); + assert_equals(frameState.event, event); + assert_equals(frameState.windowEvent, event); + assert_equals(frameState.parentEvent, load_event); + }); +}, "Listener from a different global"); diff --git a/test/fixtures/wpt/dom/events/event-global-is-still-set-when-coercing-beforeunload-result.html b/test/fixtures/wpt/dom/events/event-global-is-still-set-when-coercing-beforeunload-result.html new file mode 100644 index 00000000000000..a64c8b6b8b6d5f --- /dev/null +++ b/test/fixtures/wpt/dom/events/event-global-is-still-set-when-coercing-beforeunload-result.html @@ -0,0 +1,23 @@ + + +window.event is still set when 'beforeunload' result is coerced to string + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/event-global-set-before-handleEvent-lookup.window.js b/test/fixtures/wpt/dom/events/event-global-set-before-handleEvent-lookup.window.js new file mode 100644 index 00000000000000..8f934bcea97fe1 --- /dev/null +++ b/test/fixtures/wpt/dom/events/event-global-set-before-handleEvent-lookup.window.js @@ -0,0 +1,19 @@ +// https://dom.spec.whatwg.org/#concept-event-listener-inner-invoke (steps 8.2 - 12) +// https://webidl.spec.whatwg.org/#call-a-user-objects-operation (step 10.1) + +test(() => { + const eventTarget = new EventTarget; + + let currentEvent; + eventTarget.addEventListener("foo", { + get handleEvent() { + currentEvent = window.event; + return () => {}; + } + }); + + const event = new Event("foo"); + eventTarget.dispatchEvent(event); + + assert_equals(currentEvent, event); +}, "window.event is set before 'handleEvent' lookup"); diff --git a/test/fixtures/wpt/dom/events/event-global.html b/test/fixtures/wpt/dom/events/event-global.html new file mode 100644 index 00000000000000..3e8d25ecb5dd9d --- /dev/null +++ b/test/fixtures/wpt/dom/events/event-global.html @@ -0,0 +1,117 @@ + +window.event tests + + + +
                  + diff --git a/test/fixtures/wpt/dom/events/event-global.worker.js b/test/fixtures/wpt/dom/events/event-global.worker.js new file mode 100644 index 00000000000000..116cf32932bd8d --- /dev/null +++ b/test/fixtures/wpt/dom/events/event-global.worker.js @@ -0,0 +1,14 @@ +importScripts("/resources/testharness.js"); +test(t => { + let seen = false; + const event = new Event("hi"); + assert_equals(self.event, undefined); + self.addEventListener("hi", t.step_func(e => { + seen = true; + assert_equals(self.event, undefined); + assert_equals(e, event); + })); + self.dispatchEvent(event); + assert_true(seen); +}, "There's no self.event (that's why we call it window.event) in workers"); +done(); diff --git a/test/fixtures/wpt/dom/events/focus-event-document-move.html b/test/fixtures/wpt/dom/events/focus-event-document-move.html new file mode 100644 index 00000000000000..2943761ce132e3 --- /dev/null +++ b/test/fixtures/wpt/dom/events/focus-event-document-move.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + +
                  Click me
                  + + diff --git a/test/fixtures/wpt/dom/events/keypress-dispatch-crash.html b/test/fixtures/wpt/dom/events/keypress-dispatch-crash.html new file mode 100644 index 00000000000000..3207adbd8c8919 --- /dev/null +++ b/test/fixtures/wpt/dom/events/keypress-dispatch-crash.html @@ -0,0 +1,15 @@ + + + + + + + diff --git a/test/fixtures/wpt/dom/events/legacy-pre-activation-behavior.window.js b/test/fixtures/wpt/dom/events/legacy-pre-activation-behavior.window.js new file mode 100644 index 00000000000000..e9e84bfad1e6f7 --- /dev/null +++ b/test/fixtures/wpt/dom/events/legacy-pre-activation-behavior.window.js @@ -0,0 +1,10 @@ +test(t => { + const input = document.body.appendChild(document.createElement('input')); + input.type = "radio"; + t.add_cleanup(() => input.remove()); + const clickEvent = new MouseEvent('click', { button: 0, which: 1 }); + input.addEventListener('change', t.step_func(() => { + assert_equals(clickEvent.eventPhase, Event.NONE); + })); + input.dispatchEvent(clickEvent); +}, "Use NONE phase during legacy-pre-activation behavior"); diff --git a/test/fixtures/wpt/dom/events/relatedTarget.window.js b/test/fixtures/wpt/dom/events/relatedTarget.window.js new file mode 100644 index 00000000000000..ebc83ceb209a7c --- /dev/null +++ b/test/fixtures/wpt/dom/events/relatedTarget.window.js @@ -0,0 +1,81 @@ +// https://dom.spec.whatwg.org/#concept-event-dispatch + +const host = document.createElement("div"), + child = host.appendChild(document.createElement("p")), + shadow = host.attachShadow({ mode: "closed" }), + slot = shadow.appendChild(document.createElement("slot")); + +test(() => { + for (target of [shadow, slot]) { + for (relatedTarget of [new XMLHttpRequest(), self, host]) { + const event = new FocusEvent("demo", { relatedTarget: relatedTarget }); + target.dispatchEvent(event); + assert_equals(event.target, null); + assert_equals(event.relatedTarget, null); + } + } +}, "Reset if target pointed to a shadow tree"); + +test(() => { + for (relatedTarget of [shadow, slot]) { + for (target of [new XMLHttpRequest(), self, host]) { + const event = new FocusEvent("demo", { relatedTarget: relatedTarget }); + target.dispatchEvent(event); + assert_equals(event.target, target); + assert_equals(event.relatedTarget, host); + } + } +}, "Retarget a shadow-tree relatedTarget"); + +test(t => { + const shadowChild = shadow.appendChild(document.createElement("div")); + shadowChild.addEventListener("demo", t.step_func(() => document.body.appendChild(shadowChild))); + const event = new FocusEvent("demo", { relatedTarget: new XMLHttpRequest() }); + shadowChild.dispatchEvent(event); + assert_equals(shadowChild.parentNode, document.body); + assert_equals(event.target, null); + assert_equals(event.relatedTarget, null); + shadowChild.remove(); +}, "Reset if target pointed to a shadow tree pre-dispatch"); + +test(t => { + const shadowChild = shadow.appendChild(document.createElement("div")); + document.body.addEventListener("demo", t.step_func(() => document.body.appendChild(shadowChild))); + const event = new FocusEvent("demo", { relatedTarget: shadowChild }); + document.body.dispatchEvent(event); + assert_equals(shadowChild.parentNode, document.body); + assert_equals(event.target, document.body); + assert_equals(event.relatedTarget, host); + shadowChild.remove(); +}, "Retarget a shadow-tree relatedTarget, part 2"); + +test(t => { + const event = new FocusEvent("heya", { relatedTarget: shadow, cancelable: true }), + callback = t.unreached_func(); + host.addEventListener("heya", callback); + t.add_cleanup(() => host.removeEventListener("heya", callback)); + event.preventDefault(); + assert_true(event.defaultPrevented); + assert_false(host.dispatchEvent(event)); + assert_equals(event.target, null); + assert_equals(event.relatedTarget, null); + // Check that the dispatch flag is cleared + event.initEvent("x"); + assert_equals(event.type, "x"); +}, "Reset targets on early return"); + +test(t => { + const input = document.body.appendChild(document.createElement("input")), + event = new MouseEvent("click", { relatedTarget: shadow }); + let seen = false; + t.add_cleanup(() => input.remove()); + input.type = "checkbox"; + input.oninput = t.step_func(() => { + assert_equals(event.target, null); + assert_equals(event.relatedTarget, null); + assert_equals(event.composedPath().length, 0); + seen = true; + }); + assert_true(input.dispatchEvent(event)); + assert_true(seen); +}, "Reset targets before activation behavior"); diff --git a/test/fixtures/wpt/dom/events/replace-event-listener-null-browsing-context-crash.html b/test/fixtures/wpt/dom/events/replace-event-listener-null-browsing-context-crash.html new file mode 100644 index 00000000000000..f41955eedd39fb --- /dev/null +++ b/test/fixtures/wpt/dom/events/replace-event-listener-null-browsing-context-crash.html @@ -0,0 +1,16 @@ + +Event listeners: replace listener after moving between documents + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/resources/empty-document.html b/test/fixtures/wpt/dom/events/resources/empty-document.html new file mode 100644 index 00000000000000..b9cd130a07f77e --- /dev/null +++ b/test/fixtures/wpt/dom/events/resources/empty-document.html @@ -0,0 +1,3 @@ + + + diff --git a/test/fixtures/wpt/dom/events/resources/event-global-extra-frame.html b/test/fixtures/wpt/dom/events/resources/event-global-extra-frame.html new file mode 100644 index 00000000000000..241dda8b66f8c8 --- /dev/null +++ b/test/fixtures/wpt/dom/events/resources/event-global-extra-frame.html @@ -0,0 +1,9 @@ + diff --git a/test/fixtures/wpt/dom/events/resources/event-global-is-still-set-when-coercing-beforeunload-result-frame.html b/test/fixtures/wpt/dom/events/resources/event-global-is-still-set-when-coercing-beforeunload-result-frame.html new file mode 100644 index 00000000000000..5df4fa27936379 --- /dev/null +++ b/test/fixtures/wpt/dom/events/resources/event-global-is-still-set-when-coercing-beforeunload-result-frame.html @@ -0,0 +1,6 @@ + + + + diff --git a/test/fixtures/wpt/dom/events/resources/prefixed-animation-event-tests.js b/test/fixtures/wpt/dom/events/resources/prefixed-animation-event-tests.js new file mode 100644 index 00000000000000..021b6bb9dfdc42 --- /dev/null +++ b/test/fixtures/wpt/dom/events/resources/prefixed-animation-event-tests.js @@ -0,0 +1,366 @@ +'use strict' + +// Runs a set of tests for a given prefixed/unprefixed animation event (e.g. +// animationstart/webkitAnimationStart). +// +// The eventDetails object must have the following form: +// { +// isTransition: false, <-- can be omitted, default false +// unprefixedType: 'animationstart', +// prefixedType: 'webkitAnimationStart', +// animationCssStyle: '1ms', <-- must NOT include animation name or +// transition property +// } +function runAnimationEventTests(eventDetails) { + const { + isTransition, + unprefixedType, + prefixedType, + animationCssStyle + } = eventDetails; + + // Derive the DOM event handler names, e.g. onanimationstart. + const unprefixedHandler = `on${unprefixedType}`; + const prefixedHandler = `on${prefixedType.toLowerCase()}`; + + const style = document.createElement('style'); + document.head.appendChild(style); + if (isTransition) { + style.sheet.insertRule( + `.baseStyle { width: 100px; transition: width ${animationCssStyle}; }`); + style.sheet.insertRule('.transition { width: 200px !important; }'); + } else { + style.sheet.insertRule('@keyframes anim {}'); + } + + function triggerAnimation(div) { + if (isTransition) { + div.classList.add('transition'); + } else { + div.style.animation = `anim ${animationCssStyle}`; + } + } + + test(t => { + const div = createDiv(t); + + assert_equals(div[unprefixedHandler], null, + `${unprefixedHandler} should initially be null`); + assert_equals(div[prefixedHandler], null, + `${prefixedHandler} should initially be null`); + + // Setting one should not affect the other. + div[unprefixedHandler] = () => { }; + + assert_not_equals(div[unprefixedHandler], null, + `setting ${unprefixedHandler} should make it non-null`); + assert_equals(div[prefixedHandler], null, + `setting ${unprefixedHandler} should not affect ${prefixedHandler}`); + + div[prefixedHandler] = () => { }; + + assert_not_equals(div[prefixedHandler], null, + `setting ${prefixedHandler} should make it non-null`); + assert_not_equals(div[unprefixedHandler], div[prefixedHandler], + 'the setters should be different'); + }, `${unprefixedHandler} and ${prefixedHandler} are not aliases`); + + // The below tests primarily test the interactions of prefixed animation + // events in the algorithm for invoking events: + // https://dom.spec.whatwg.org/#concept-event-listener-invoke + + promise_test(async t => { + const div = createDiv(t); + + let receivedEventCount = 0; + addTestScopedEventHandler(t, div, prefixedHandler, () => { + receivedEventCount++; + }); + addTestScopedEventListener(t, div, prefixedType, () => { + receivedEventCount++; + }); + + // The HTML spec[0] specifies that the prefixed event handlers have an + // 'Event handler event type' of the appropriate prefixed event type. E.g. + // onwebkitanimationend creates a listener for the event type + // 'webkitAnimationEnd'. + // + // [0]: https://html.spec.whatwg.org/multipage/webappapis.html#event-handlers-on-elements,-document-objects,-and-window-objects + div.dispatchEvent(new AnimationEvent(prefixedType)); + assert_equals(receivedEventCount, 2, + 'prefixed listener and handler received event'); + }, `dispatchEvent of a ${prefixedType} event does trigger a ` + + `prefixed event handler or listener`); + + promise_test(async t => { + const div = createDiv(t); + + let receivedEvent = false; + addTestScopedEventHandler(t, div, unprefixedHandler, () => { + receivedEvent = true; + }); + addTestScopedEventListener(t, div, unprefixedType, () => { + receivedEvent = true; + }); + + div.dispatchEvent(new AnimationEvent(prefixedType)); + assert_false(receivedEvent, + 'prefixed listener or handler received event'); + }, `dispatchEvent of a ${prefixedType} event does not trigger an ` + + `unprefixed event handler or listener`); + + + promise_test(async t => { + const div = createDiv(t); + + let receivedEvent = false; + addTestScopedEventHandler(t, div, prefixedHandler, () => { + receivedEvent = true; + }); + addTestScopedEventListener(t, div, prefixedType, () => { + receivedEvent = true; + }); + + // The rewrite rules from + // https://dom.spec.whatwg.org/#concept-event-listener-invoke step 8 do not + // apply because isTrusted will be false. + div.dispatchEvent(new AnimationEvent(unprefixedType)); + assert_false(receivedEvent, 'prefixed listener or handler received event'); + }, `dispatchEvent of an ${unprefixedType} event does not trigger a ` + + `prefixed event handler or listener`); + + promise_test(async t => { + const div = createDiv(t); + + let receivedEvent = false; + addTestScopedEventHandler(t, div, prefixedHandler, () => { + receivedEvent = true; + }); + + triggerAnimation(div); + await waitForEventThenAnimationFrame(t, unprefixedType); + assert_true(receivedEvent, `received ${prefixedHandler} event`); + }, `${prefixedHandler} event handler should trigger for an animation`); + + promise_test(async t => { + const div = createDiv(t); + + let receivedPrefixedEvent = false; + addTestScopedEventHandler(t, div, prefixedHandler, () => { + receivedPrefixedEvent = true; + }); + let receivedUnprefixedEvent = false; + addTestScopedEventHandler(t, div, unprefixedHandler, () => { + receivedUnprefixedEvent = true; + }); + + triggerAnimation(div); + await waitForEventThenAnimationFrame(t, unprefixedType); + assert_true(receivedUnprefixedEvent, `received ${unprefixedHandler} event`); + assert_false(receivedPrefixedEvent, `received ${prefixedHandler} event`); + }, `${prefixedHandler} event handler should not trigger if an unprefixed ` + + `event handler also exists`); + + promise_test(async t => { + const div = createDiv(t); + + let receivedPrefixedEvent = false; + addTestScopedEventHandler(t, div, prefixedHandler, () => { + receivedPrefixedEvent = true; + }); + let receivedUnprefixedEvent = false; + addTestScopedEventListener(t, div, unprefixedType, () => { + receivedUnprefixedEvent = true; + }); + + triggerAnimation(div); + await waitForEventThenAnimationFrame(t, unprefixedHandler); + assert_true(receivedUnprefixedEvent, `received ${unprefixedHandler} event`); + assert_false(receivedPrefixedEvent, `received ${prefixedHandler} event`); + }, `${prefixedHandler} event handler should not trigger if an unprefixed ` + + `listener also exists`); + + promise_test(async t => { + // We use a parent/child relationship to be able to register both prefixed + // and unprefixed event handlers without the deduplication logic kicking in. + const parent = createDiv(t); + const child = createDiv(t); + parent.appendChild(child); + // After moving the child, we have to clean style again. + getComputedStyle(child).transition; + getComputedStyle(child).width; + + let observedUnprefixedType; + addTestScopedEventHandler(t, parent, unprefixedHandler, e => { + observedUnprefixedType = e.type; + }); + let observedPrefixedType; + addTestScopedEventHandler(t, child, prefixedHandler, e => { + observedPrefixedType = e.type; + }); + + triggerAnimation(child); + await waitForEventThenAnimationFrame(t, unprefixedType); + + assert_equals(observedUnprefixedType, unprefixedType); + assert_equals(observedPrefixedType, prefixedType); + }, `event types for prefixed and unprefixed ${unprefixedType} event ` + + `handlers should be named appropriately`); + + promise_test(async t => { + const div = createDiv(t); + + let receivedEvent = false; + addTestScopedEventListener(t, div, prefixedType, () => { + receivedEvent = true; + }); + + triggerAnimation(div); + await waitForEventThenAnimationFrame(t, unprefixedHandler); + assert_true(receivedEvent, `received ${prefixedType} event`); + }, `${prefixedType} event listener should trigger for an animation`); + + promise_test(async t => { + const div = createDiv(t); + + let receivedPrefixedEvent = false; + addTestScopedEventListener(t, div, prefixedType, () => { + receivedPrefixedEvent = true; + }); + let receivedUnprefixedEvent = false; + addTestScopedEventListener(t, div, unprefixedType, () => { + receivedUnprefixedEvent = true; + }); + + triggerAnimation(div); + await waitForEventThenAnimationFrame(t, unprefixedHandler); + assert_true(receivedUnprefixedEvent, `received ${unprefixedType} event`); + assert_false(receivedPrefixedEvent, `received ${prefixedType} event`); + }, `${prefixedType} event listener should not trigger if an unprefixed ` + + `listener also exists`); + + promise_test(async t => { + const div = createDiv(t); + + let receivedPrefixedEvent = false; + addTestScopedEventListener(t, div, prefixedType, () => { + receivedPrefixedEvent = true; + }); + let receivedUnprefixedEvent = false; + addTestScopedEventHandler(t, div, unprefixedHandler, () => { + receivedUnprefixedEvent = true; + }); + + triggerAnimation(div); + await waitForEventThenAnimationFrame(t, unprefixedHandler); + assert_true(receivedUnprefixedEvent, `received ${unprefixedType} event`); + assert_false(receivedPrefixedEvent, `received ${prefixedType} event`); + }, `${prefixedType} event listener should not trigger if an unprefixed ` + + `event handler also exists`); + + promise_test(async t => { + // We use a parent/child relationship to be able to register both prefixed + // and unprefixed event listeners without the deduplication logic kicking in. + const parent = createDiv(t); + const child = createDiv(t); + parent.appendChild(child); + // After moving the child, we have to clean style again. + getComputedStyle(child).transition; + getComputedStyle(child).width; + + let observedUnprefixedType; + addTestScopedEventListener(t, parent, unprefixedType, e => { + observedUnprefixedType = e.type; + }); + let observedPrefixedType; + addTestScopedEventListener(t, child, prefixedType, e => { + observedPrefixedType = e.type; + }); + + triggerAnimation(child); + await waitForEventThenAnimationFrame(t, unprefixedHandler); + + assert_equals(observedUnprefixedType, unprefixedType); + assert_equals(observedPrefixedType, prefixedType); + }, `event types for prefixed and unprefixed ${unprefixedType} event ` + + `listeners should be named appropriately`); + + promise_test(async t => { + const div = createDiv(t); + + let receivedEvent = false; + addTestScopedEventListener(t, div, prefixedType.toLowerCase(), () => { + receivedEvent = true; + }); + addTestScopedEventListener(t, div, prefixedType.toUpperCase(), () => { + receivedEvent = true; + }); + + triggerAnimation(div); + await waitForEventThenAnimationFrame(t, unprefixedHandler); + assert_false(receivedEvent, `received ${prefixedType} event`); + }, `${prefixedType} event listener is case sensitive`); +} + +// Below are utility functions. + +// Creates a div element, appends it to the document body and removes the +// created element during test cleanup. +function createDiv(test) { + const element = document.createElement('div'); + element.classList.add('baseStyle'); + document.body.appendChild(element); + test.add_cleanup(() => { + element.remove(); + }); + + // Flush style before returning. Some browsers only do partial style re-calc, + // so ask for all important properties to make sure they are applied. + getComputedStyle(element).transition; + getComputedStyle(element).width; + + return element; +} + +// Adds an event handler for |handlerName| (calling |callback|) to the given +// |target|, that will automatically be cleaned up at the end of the test. +function addTestScopedEventHandler(test, target, handlerName, callback) { + assert_regexp_match( + handlerName, /^on/, 'Event handler names must start with "on"'); + assert_equals(target[handlerName], null, + `${handlerName} must be supported and not previously set`); + target[handlerName] = callback; + // We need this cleaned up even if the event handler doesn't run. + test.add_cleanup(() => { + if (target[handlerName]) + target[handlerName] = null; + }); +} + +// Adds an event listener for |type| (calling |callback|) to the given +// |target|, that will automatically be cleaned up at the end of the test. +function addTestScopedEventListener(test, target, type, callback) { + target.addEventListener(type, callback); + // We need this cleaned up even if the event handler doesn't run. + test.add_cleanup(() => { + target.removeEventListener(type, callback); + }); +} + +// Returns a promise that will resolve once the passed event (|eventName|) has +// triggered and one more animation frame has happened. Automatically chooses +// between an event handler or event listener based on whether |eventName| +// begins with 'on'. +// +// We always listen on window as we don't want to interfere with the test via +// triggering the prefixed event deduplication logic. +function waitForEventThenAnimationFrame(test, eventName) { + return new Promise((resolve, _) => { + const eventFunc = eventName.startsWith('on') + ? addTestScopedEventHandler : addTestScopedEventListener; + eventFunc(test, window, eventName, () => { + // rAF once to give the event under test time to come through. + requestAnimationFrame(resolve); + }); + }); +} diff --git a/test/fixtures/wpt/dom/events/scrolling/iframe-chains.html b/test/fixtures/wpt/dom/events/scrolling/iframe-chains.html new file mode 100644 index 00000000000000..2d7e1827adad6f --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/iframe-chains.html @@ -0,0 +1,47 @@ + + + + + + + + + + + +
                  + +
                  +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/scrolling/input-text-scroll-event-when-using-arrow-keys.html b/test/fixtures/wpt/dom/events/scrolling/input-text-scroll-event-when-using-arrow-keys.html new file mode 100644 index 00000000000000..f84e4465275b7a --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/input-text-scroll-event-when-using-arrow-keys.html @@ -0,0 +1,71 @@ + + + + + + + + + + + +

                  Moving the cursor using the arrow keys into an + input element fires scroll events when text has to scroll into view. + Uses arrow keys to move forward and backwards in the input + element.

                  + + + + + + diff --git a/test/fixtures/wpt/dom/events/scrolling/overscroll-deltas.html b/test/fixtures/wpt/dom/events/scrolling/overscroll-deltas.html new file mode 100644 index 00000000000000..6f0b77f22eda2a --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/overscroll-deltas.html @@ -0,0 +1,85 @@ + + + + + + + + + + +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/scrolling/overscroll-event-fired-to-document.html b/test/fixtures/wpt/dom/events/scrolling/overscroll-event-fired-to-document.html new file mode 100644 index 00000000000000..c054ffca9c471f --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/overscroll-event-fired-to-document.html @@ -0,0 +1,62 @@ + + + + + + + + + + +
                  +
                  +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/scrolling/overscroll-event-fired-to-element-with-overscroll-behavior.html b/test/fixtures/wpt/dom/events/scrolling/overscroll-event-fired-to-element-with-overscroll-behavior.html new file mode 100644 index 00000000000000..750080e6568e86 --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/overscroll-event-fired-to-element-with-overscroll-behavior.html @@ -0,0 +1,92 @@ + + + + + + + + + + +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/scrolling/overscroll-event-fired-to-scrolled-element.html b/test/fixtures/wpt/dom/events/scrolling/overscroll-event-fired-to-scrolled-element.html new file mode 100644 index 00000000000000..cfc782a809a7e7 --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/overscroll-event-fired-to-scrolled-element.html @@ -0,0 +1,65 @@ + + + + + + + + + + +
                  +
                  +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/scrolling/overscroll-event-fired-to-window.html b/test/fixtures/wpt/dom/events/scrolling/overscroll-event-fired-to-window.html new file mode 100644 index 00000000000000..ef5ae3daef8158 --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/overscroll-event-fired-to-window.html @@ -0,0 +1,52 @@ + + + + + + + + + + +
                  +
                  +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/scrolling/scroll_support.js b/test/fixtures/wpt/dom/events/scrolling/scroll_support.js new file mode 100644 index 00000000000000..0a73f34fefc8ab --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/scroll_support.js @@ -0,0 +1,97 @@ +const MAX_FRAME = 700; +const MAX_UNCHANGED_FRAMES = 20; + +// Returns a promise that resolves when the given condition is met or rejects +// after MAX_FRAME animation frames. +function waitFor(condition, error_message = 'Reaches the maximum frames.') { + return new Promise((resolve, reject) => { + function tick(frames) { + // We requestAnimationFrame either for MAX_FRAM frames or until condition + // is met. + if (frames >= MAX_FRAME) + reject(error_message); + else if (condition()) + resolve(); + else + requestAnimationFrame(tick.bind(this, frames + 1)); + } + tick(0); + }); +} + +function waitForCompositorCommit() { + return new Promise((resolve) => { + // rAF twice. + window.requestAnimationFrame(() => { + window.requestAnimationFrame(resolve); + }); + }); +} + +function waitForAnimationEnd(getValue) { + var last_changed_frame = 0; + var last_position = getValue(); + return new Promise((resolve, reject) => { + function tick(frames) { + // We requestAnimationFrame either for MAX_FRAME or until + // MAX_UNCHANGED_FRAMES with no change have been observed. + if (frames >= MAX_FRAME || frames - last_changed_frame > MAX_UNCHANGED_FRAMES) { + resolve(); + } else { + current_value = getValue(); + if (last_position != current_value) { + last_changed_frame = frames; + last_position = current_value; + } + requestAnimationFrame(tick.bind(this, frames + 1)); + } + } + tick(0); + }) +} + +function touchScrollInTarget(pixels_to_scroll, target, direction, pause_time_in_ms = 100) { + var x_delta = 0; + var y_delta = 0; + const num_movs = 5; + if (direction == "down") { + y_delta = -1 * pixels_to_scroll / num_movs; + } else if (direction == "up") { + y_delta = pixels_to_scroll / num_movs; + } else if (direction == "right") { + x_delta = -1 * pixels_to_scroll / num_movs; + } else if (direction == "left") { + x_delta = pixels_to_scroll / num_movs;; + } else { + throw("scroll direction '" + direction + "' is not expected, direction should be 'down', 'up', 'left' or 'right'"); + } + return new test_driver.Actions() + .addPointer("pointer1", "touch") + .pointerMove(0, 0, {origin: target}) + .pointerDown() + .pointerMove(x_delta, y_delta, {origin: target}) + .pointerMove(2 * x_delta, 2 * y_delta, {origin: target}) + .pointerMove(3 * x_delta, 3 * y_delta, {origin: target}) + .pointerMove(4 * x_delta, 4 * y_delta, {origin: target}) + .pointerMove(5 * x_delta, 5 * y_delta, {origin: target}) + .pause(pause_time_in_ms) + .pointerUp() + .send(); +} + +// Trigger fling by doing pointerUp right after pointerMoves. +function touchFlingInTarget(pixels_to_scroll, target, direction) { + touchScrollInTarget(pixels_to_scroll, target, direction, 0 /* pause_time */); +} + +function mouseActionsInTarget(target, origin, delta, pause_time_in_ms = 100) { + return new test_driver.Actions() + .addPointer("pointer1", "mouse") + .pointerMove(origin.x, origin.y, { origin: target }) + .pointerDown() + .pointerMove(origin.x + delta.x, origin.y + delta.y, { origin: target }) + .pointerMove(origin.x + delta.x * 2, origin.y + delta.y * 2, { origin: target }) + .pause(pause_time_in_ms) + .pointerUp() + .send(); +} diff --git a/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-after-snap.html b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-after-snap.html new file mode 100644 index 00000000000000..ef1b495791cad1 --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-after-snap.html @@ -0,0 +1,86 @@ + + + + + + + + + + +
                  +
                  +
                  +
                  +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-for-programmatic-scroll.html b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-for-programmatic-scroll.html new file mode 100644 index 00000000000000..79b5f5f0186871 --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-for-programmatic-scroll.html @@ -0,0 +1,134 @@ + + + + + + + + + + + +
                  +
                  +
                  +
                  + + diff --git a/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-for-scrollIntoView.html b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-for-scrollIntoView.html new file mode 100644 index 00000000000000..63e1c3e22eaafc --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-for-scrollIntoView.html @@ -0,0 +1,123 @@ + + + + + + + + + + + +
                  +
                  +
                  +
                  + + diff --git a/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-to-document.html b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-to-document.html new file mode 100644 index 00000000000000..99c1c6930fab0b --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-to-document.html @@ -0,0 +1,69 @@ + + + + + + + + + + +
                  +
                  +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-to-element-with-overscroll-behavior.html b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-to-element-with-overscroll-behavior.html new file mode 100644 index 00000000000000..0269c66fdde192 --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-to-element-with-overscroll-behavior.html @@ -0,0 +1,93 @@ + + + + + + + + + + +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-to-scrolled-element.html b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-to-scrolled-element.html new file mode 100644 index 00000000000000..87cad79df7c2af --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-to-scrolled-element.html @@ -0,0 +1,67 @@ + + + + + + + + + + +
                  +
                  +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-to-window.html b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-to-window.html new file mode 100644 index 00000000000000..f9510e6e231615 --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-fired-to-window.html @@ -0,0 +1,54 @@ + + + + + + + + + + +
                  +
                  +
                  +
                  + + + diff --git a/test/fixtures/wpt/dom/events/scrolling/scrollend-event-for-user-scroll.html b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-for-user-scroll.html new file mode 100644 index 00000000000000..30f16571cd8320 --- /dev/null +++ b/test/fixtures/wpt/dom/events/scrolling/scrollend-event-for-user-scroll.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + +
                  +
                  +
                  +
                  + + + + diff --git a/test/fixtures/wpt/dom/events/shadow-relatedTarget.html b/test/fixtures/wpt/dom/events/shadow-relatedTarget.html new file mode 100644 index 00000000000000..713555b7d8ab61 --- /dev/null +++ b/test/fixtures/wpt/dom/events/shadow-relatedTarget.html @@ -0,0 +1,30 @@ + + + + +
                  + + diff --git a/test/fixtures/wpt/dom/events/webkit-animation-end-event.html b/test/fixtures/wpt/dom/events/webkit-animation-end-event.html new file mode 100644 index 00000000000000..4186f6b7a9d241 --- /dev/null +++ b/test/fixtures/wpt/dom/events/webkit-animation-end-event.html @@ -0,0 +1,20 @@ + + +Prefixed CSS Animation end events + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/webkit-animation-iteration-event.html b/test/fixtures/wpt/dom/events/webkit-animation-iteration-event.html new file mode 100644 index 00000000000000..fb251972a32e16 --- /dev/null +++ b/test/fixtures/wpt/dom/events/webkit-animation-iteration-event.html @@ -0,0 +1,23 @@ + + +Prefixed CSS Animation iteration events + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/webkit-animation-start-event.html b/test/fixtures/wpt/dom/events/webkit-animation-start-event.html new file mode 100644 index 00000000000000..ad1036644a96e1 --- /dev/null +++ b/test/fixtures/wpt/dom/events/webkit-animation-start-event.html @@ -0,0 +1,20 @@ + + +Prefixed CSS Animation start events + + + + + + + + + diff --git a/test/fixtures/wpt/dom/events/webkit-transition-end-event.html b/test/fixtures/wpt/dom/events/webkit-transition-end-event.html new file mode 100644 index 00000000000000..2741824e3054a2 --- /dev/null +++ b/test/fixtures/wpt/dom/events/webkit-transition-end-event.html @@ -0,0 +1,21 @@ + + +Prefixed CSS Transition End event + + + + + + + + + diff --git a/test/fixtures/wpt/encoding/encodeInto.any.js b/test/fixtures/wpt/encoding/encodeInto.any.js index eca0e1bca158b0..69d7089006ec38 100644 --- a/test/fixtures/wpt/encoding/encodeInto.any.js +++ b/test/fixtures/wpt/encoding/encodeInto.any.js @@ -120,19 +120,22 @@ }); }); -[DataView, - Int8Array, - Int16Array, - Int32Array, - Uint16Array, - Uint32Array, - Uint8ClampedArray, - Float32Array, - Float64Array].forEach(view => { +["DataView", + "Int8Array", + "Int16Array", + "Int32Array", + "Uint16Array", + "Uint32Array", + "Uint8ClampedArray", + "BigInt64Array", + "BigUint64Array", + "Float32Array", + "Float64Array"].forEach(type => { ["ArrayBuffer", "SharedArrayBuffer"].forEach((arrayBufferOrSharedArrayBuffer) => { test(() => { - assert_throws_js(TypeError, () => new TextEncoder().encodeInto("", new view(createBuffer(arrayBufferOrSharedArrayBuffer, 0)))); - }, "Invalid encodeInto() destination: " + view.name + ", backed by: " + arrayBufferOrSharedArrayBuffer); + const viewInstance = new self[type](createBuffer(arrayBufferOrSharedArrayBuffer, 0)); + assert_throws_js(TypeError, () => new TextEncoder().encodeInto("", viewInstance)); + }, "Invalid encodeInto() destination: " + type + ", backed by: " + arrayBufferOrSharedArrayBuffer); }); }); diff --git a/test/fixtures/wpt/encoding/encodeInto.any.js.headers b/test/fixtures/wpt/encoding/encodeInto.any.js.headers new file mode 100644 index 00000000000000..4fff9d9fba4c81 --- /dev/null +++ b/test/fixtures/wpt/encoding/encodeInto.any.js.headers @@ -0,0 +1,2 @@ +Cross-Origin-Opener-Policy: same-origin +Cross-Origin-Embedder-Policy: require-corp \ No newline at end of file diff --git a/test/fixtures/wpt/encoding/idlharness-shadowrealm.window.js b/test/fixtures/wpt/encoding/idlharness-shadowrealm.window.js new file mode 100644 index 00000000000000..baf3efcbb027e4 --- /dev/null +++ b/test/fixtures/wpt/encoding/idlharness-shadowrealm.window.js @@ -0,0 +1,2 @@ +// META: script=/resources/idlharness-shadowrealm.js +idl_test_shadowrealm(["encoding"], ["streams"]); diff --git a/test/fixtures/wpt/encoding/sharedarraybuffer.https.html b/test/fixtures/wpt/encoding/sharedarraybuffer.https.html new file mode 100644 index 00000000000000..2496edacb89ee8 --- /dev/null +++ b/test/fixtures/wpt/encoding/sharedarraybuffer.https.html @@ -0,0 +1,14 @@ + + + + diff --git a/test/fixtures/wpt/encoding/sharedarraybuffer.https.html.headers b/test/fixtures/wpt/encoding/sharedarraybuffer.https.html.headers new file mode 100644 index 00000000000000..4b06ac7cc63e8a --- /dev/null +++ b/test/fixtures/wpt/encoding/sharedarraybuffer.https.html.headers @@ -0,0 +1,2 @@ +Cross-Origin-Opener-Policy:same-origin +Cross-Origin-Embedder-Policy:require-corp diff --git a/test/fixtures/wpt/encoding/single-byte-decoder.window.js b/test/fixtures/wpt/encoding/single-byte-decoder.window.js new file mode 100644 index 00000000000000..6bca8e623434e9 --- /dev/null +++ b/test/fixtures/wpt/encoding/single-byte-decoder.window.js @@ -0,0 +1,107 @@ +// META: timeout=long +// META: variant=?XMLHttpRequest +// META: variant=?TextDecoder +// META: variant=?document +// META: script=resources/encodings.js + +var singleByteEncodings = encodings_table.filter(function(group) { + return group.heading === "Legacy single-byte encodings"; +})[0].encodings, +// https://encoding.spec.whatwg.org/indexes.json + singleByteIndexes = { + "IBM866":[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1025,1105,1028,1108,1031,1111,1038,1118,176,8729,183,8730,8470,164,9632,160], + "ISO-8859-2":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,728,321,164,317,346,167,168,352,350,356,377,173,381,379,176,261,731,322,180,318,347,711,184,353,351,357,378,733,382,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729], + "ISO-8859-3":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,294,728,163,164,null,292,167,168,304,350,286,308,173,null,379,176,295,178,179,180,181,293,183,184,305,351,287,309,189,null,380,192,193,194,null,196,266,264,199,200,201,202,203,204,205,206,207,null,209,210,211,212,288,214,215,284,217,218,219,220,364,348,223,224,225,226,null,228,267,265,231,232,233,234,235,236,237,238,239,null,241,242,243,244,289,246,247,285,249,250,251,252,365,349,729], + "ISO-8859-4":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,312,342,164,296,315,167,168,352,274,290,358,173,381,175,176,261,731,343,180,297,316,711,184,353,275,291,359,330,382,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,298,272,325,332,310,212,213,214,215,216,370,218,219,220,360,362,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,299,273,326,333,311,244,245,246,247,248,371,250,251,252,361,363,729], + "ISO-8859-5":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,173,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,8470,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,167,1118,1119], + "ISO-8859-6":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,null,null,164,null,null,null,null,null,null,null,1548,173,null,null,null,null,null,null,null,null,null,null,null,null,null,1563,null,null,null,1567,null,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,null,null,null,null,null,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,null,null,null,null,null,null,null,null,null,null,null,null,null], + "ISO-8859-7":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8216,8217,163,8364,8367,166,167,168,169,890,171,172,173,null,8213,176,177,178,179,900,901,902,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null], + "ISO-8859-8":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,162,163,164,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,8215,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null], + "ISO-8859-10":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,274,290,298,296,310,167,315,272,352,358,381,173,362,330,176,261,275,291,299,297,311,183,316,273,353,359,382,8213,363,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,207,208,325,332,211,212,213,214,360,216,370,218,219,220,221,222,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,239,240,326,333,243,244,245,246,361,248,371,250,251,252,253,254,312], + "ISO-8859-13":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8221,162,163,164,8222,166,167,216,169,342,171,172,173,174,198,176,177,178,179,8220,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,8217], + "ISO-8859-14":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7682,7683,163,266,267,7690,167,7808,169,7810,7691,7922,173,174,376,7710,7711,288,289,7744,7745,182,7766,7809,7767,7811,7776,7923,7812,7813,7777,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,372,209,210,211,212,213,214,7786,216,217,218,219,220,221,374,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,373,241,242,243,244,245,246,7787,248,249,250,251,252,253,375,255], + "ISO-8859-15":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,8364,165,352,167,353,169,170,171,172,173,174,175,176,177,178,179,381,181,182,183,382,185,186,187,338,339,376,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255], + "ISO-8859-16":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,261,321,8364,8222,352,167,353,169,536,171,377,173,378,379,176,177,268,322,381,8221,182,183,382,269,537,187,338,339,376,380,192,193,194,258,196,262,198,199,200,201,202,203,204,205,206,207,272,323,210,211,212,336,214,346,368,217,218,219,220,280,538,223,224,225,226,259,228,263,230,231,232,233,234,235,236,237,238,239,273,324,242,243,244,337,246,347,369,249,250,251,252,281,539,255], + "KOI8-R":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,1025,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066], + "KOI8-U":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,1108,9556,1110,1111,9559,9560,9561,9562,9563,1169,1118,9566,9567,9568,9569,1025,1028,9571,1030,1031,9574,9575,9576,9577,9578,1168,1038,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066], + "macintosh":[196,197,199,201,209,214,220,225,224,226,228,227,229,231,233,232,234,235,237,236,238,239,241,243,242,244,246,245,250,249,251,252,8224,176,162,163,167,8226,182,223,174,169,8482,180,168,8800,198,216,8734,177,8804,8805,165,181,8706,8721,8719,960,8747,170,186,937,230,248,191,161,172,8730,402,8776,8710,171,187,8230,160,192,195,213,338,339,8211,8212,8220,8221,8216,8217,247,9674,255,376,8260,8364,8249,8250,64257,64258,8225,183,8218,8222,8240,194,202,193,203,200,205,206,207,204,211,212,63743,210,218,219,217,305,710,732,175,728,729,730,184,733,731,711], + "windows-874":[8364,129,130,131,132,8230,134,135,136,137,138,139,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,153,154,155,156,157,158,159,160,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,null,null,null,null,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,null,null,null,null], + "windows-1250":[8364,129,8218,131,8222,8230,8224,8225,136,8240,352,8249,346,356,381,377,144,8216,8217,8220,8221,8226,8211,8212,152,8482,353,8250,347,357,382,378,160,711,728,321,164,260,166,167,168,169,350,171,172,173,174,379,176,177,731,322,180,181,182,183,184,261,351,187,317,733,318,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729], + "windows-1251":[1026,1027,8218,1107,8222,8230,8224,8225,8364,8240,1033,8249,1034,1036,1035,1039,1106,8216,8217,8220,8221,8226,8211,8212,152,8482,1113,8250,1114,1116,1115,1119,160,1038,1118,1032,164,1168,166,167,1025,169,1028,171,172,173,174,1031,176,177,1030,1110,1169,181,182,183,1105,8470,1108,187,1112,1029,1109,1111,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103], + "windows-1252":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255], + "windows-1253":[8364,129,8218,402,8222,8230,8224,8225,136,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,157,158,159,160,901,902,163,164,165,166,167,168,169,null,171,172,173,174,8213,176,177,178,179,900,181,182,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null], + "windows-1254":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,286,209,210,211,212,213,214,215,216,217,218,219,220,304,350,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,287,241,242,243,244,245,246,247,248,249,250,251,252,305,351,255], + "windows-1255":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,156,157,158,159,160,161,162,163,8362,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,191,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1520,1521,1522,1523,1524,null,null,null,null,null,null,null,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null], + "windows-1256":[8364,1662,8218,402,8222,8230,8224,8225,710,8240,1657,8249,338,1670,1688,1672,1711,8216,8217,8220,8221,8226,8211,8212,1705,8482,1681,8250,339,8204,8205,1722,160,1548,162,163,164,165,166,167,168,169,1726,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,1563,187,188,189,190,1567,1729,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,215,1591,1592,1593,1594,1600,1601,1602,1603,224,1604,226,1605,1606,1607,1608,231,232,233,234,235,1609,1610,238,239,1611,1612,1613,1614,244,1615,1616,247,1617,249,1618,251,252,8206,8207,1746], + "windows-1257":[8364,129,8218,131,8222,8230,8224,8225,136,8240,138,8249,140,168,711,184,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,175,731,159,160,null,162,163,164,null,166,167,216,169,342,171,172,173,174,198,176,177,178,179,180,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,729], + "windows-1258":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,258,196,197,198,199,200,201,202,203,768,205,206,207,272,209,777,211,212,416,214,215,216,217,218,219,220,431,771,223,224,225,226,259,228,229,230,231,232,233,234,235,769,237,238,239,273,241,803,243,244,417,246,247,248,249,250,251,252,432,8363,255], + "x-mac-cyrillic":[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,8224,176,1168,163,167,8226,182,1030,174,169,8482,1026,1106,8800,1027,1107,8734,177,8804,8805,1110,181,1169,1032,1028,1108,1031,1111,1033,1113,1034,1114,1112,1029,172,8730,402,8776,8710,171,187,8230,160,1035,1115,1036,1116,1109,8211,8212,8220,8221,8216,8217,247,8222,1038,1118,1039,1119,8470,1025,1105,1103,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,8364] +} + +// For TextDecoder tests +var buffer = new ArrayBuffer(255), + view = new Uint8Array(buffer) +for(var i = 0, l = view.byteLength; i < l; i++) { + view[i] = i +} + +// For XMLHttpRequest and TextDecoder tests +function assert_decode(data, encoding) { + if(encoding == "ISO-8859-8-I") { + encoding = "ISO-8859-8" + } + for(var i = 0, l = data.length; i < l; i++) { + var cp = data.charCodeAt(i), + expectedCp = (i < 0x80) ? i : singleByteIndexes[encoding][i-0x80] + if(expectedCp == null) { + expectedCp = 0xFFFD + } + assert_equals(cp, expectedCp, encoding + ":" + i) + } +} + +var subsetTest = ""; +if (location.search) { + subsetTest = location.search.substr(1); +} + +// Setting up all the tests +for(var i = 0, l = singleByteEncodings.length; i < l; i++) { + var encoding = singleByteEncodings[i] + for(var ii = 0, ll = encoding.labels.length; ii < ll; ii++) { + var label = encoding.labels[ii] + + if (subsetTest == "XMLHttpRequest" || !subsetTest) { + async_test(function(t) { + var xhr = new XMLHttpRequest, + name = encoding.name // need scoped variable + xhr.open("GET", "resources/single-byte-raw.py?label=" + label) + xhr.send(null) + xhr.onload = t.step_func_done(function() { assert_decode(xhr.responseText, name) }) + }, encoding.name + ": " + label + " (XMLHttpRequest)") + } + + if (subsetTest == "TextDecoder" || !subsetTest) { + test(function() { + var d = new TextDecoder(label), + data = d.decode(view) + assert_equals(d.encoding, encoding.name.toLowerCase()) // ASCII names only, so safe + assert_decode(data, encoding.name) + }, encoding.name + ": " + label + " (TextDecoder)") + } + + if (subsetTest == "document" || !subsetTest) { + async_test(function(t) { + var frame = document.createElement("iframe"), + name = encoding.name; + frame.src = "resources/text-plain-charset.py?label=" + label + frame.onload = t.step_func_done(function() { + assert_equals(frame.contentDocument.characterSet, name) + assert_equals(frame.contentDocument.inputEncoding, name) + }) + t.add_cleanup(function() { document.body.removeChild(frame) }) + document.body.appendChild(frame) + }, encoding.name + ": " + label + " (document.characterSet and document.inputEncoding)") + } + } +} diff --git a/test/fixtures/wpt/encoding/streams/decode-utf8.any.js b/test/fixtures/wpt/encoding/streams/decode-utf8.any.js index 5abd8dcb8f9b8f..f6fceb299bdd36 100644 --- a/test/fixtures/wpt/encoding/streams/decode-utf8.any.js +++ b/test/fixtures/wpt/encoding/streams/decode-utf8.any.js @@ -43,7 +43,16 @@ const array = await readableStreamToArray(output); assert_array_equals(array, [expectedOutputString], 'the output should be in one chunk'); - }, 'a trailing empty chunk should be ignored- ' + arrayBufferOrSharedArrayBuffer); + }, 'a trailing empty chunk should be ignored - ' + arrayBufferOrSharedArrayBuffer); + + promise_test(async () => { + const chunk = new Uint8Array(createBuffer(arrayBufferOrSharedArrayBuffer, 3)); + chunk.set([0xF0, 0x9F, 0x92]); + const input = readableStreamFromArray([chunk]); + const output = input.pipeThrough(new TextDecoderStream()); + const array = await readableStreamToArray(output); + assert_array_equals(array, ['\uFFFD']); + }, 'UTF-8 EOF handling - ' + arrayBufferOrSharedArrayBuffer); }); promise_test(async () => { diff --git a/test/fixtures/wpt/encoding/streams/decode-utf8.any.js.headers b/test/fixtures/wpt/encoding/streams/decode-utf8.any.js.headers new file mode 100644 index 00000000000000..4fff9d9fba4c81 --- /dev/null +++ b/test/fixtures/wpt/encoding/streams/decode-utf8.any.js.headers @@ -0,0 +1,2 @@ +Cross-Origin-Opener-Policy: same-origin +Cross-Origin-Embedder-Policy: require-corp \ No newline at end of file diff --git a/test/fixtures/wpt/encoding/textdecoder-copy.any.js.headers b/test/fixtures/wpt/encoding/textdecoder-copy.any.js.headers new file mode 100644 index 00000000000000..4fff9d9fba4c81 --- /dev/null +++ b/test/fixtures/wpt/encoding/textdecoder-copy.any.js.headers @@ -0,0 +1,2 @@ +Cross-Origin-Opener-Policy: same-origin +Cross-Origin-Embedder-Policy: require-corp \ No newline at end of file diff --git a/test/fixtures/wpt/encoding/textdecoder-eof.any.js b/test/fixtures/wpt/encoding/textdecoder-eof.any.js new file mode 100644 index 00000000000000..e41e326aace244 --- /dev/null +++ b/test/fixtures/wpt/encoding/textdecoder-eof.any.js @@ -0,0 +1,40 @@ +test(() => { + // Truncated sequences + assert_equals(new TextDecoder().decode(new Uint8Array([0xF0])), "\uFFFD"); + assert_equals(new TextDecoder().decode(new Uint8Array([0xF0, 0x9F])), "\uFFFD"); + assert_equals(new TextDecoder().decode(new Uint8Array([0xF0, 0x9F, 0x92])), "\uFFFD"); + + // Errors near end-of-queue + assert_equals(new TextDecoder().decode(new Uint8Array([0xF0, 0x9F, 0x41])), "\uFFFDA"); + assert_equals(new TextDecoder().decode(new Uint8Array([0xF0, 0x41, 0x42])), "\uFFFDAB"); + assert_equals(new TextDecoder().decode(new Uint8Array([0xF0, 0x41, 0xF0])), "\uFFFDA\uFFFD"); + assert_equals(new TextDecoder().decode(new Uint8Array([0xF0, 0x8F, 0x92])), "\uFFFD\uFFFD\uFFFD"); +}, "TextDecoder end-of-queue handling"); + +test(() => { + const decoder = new TextDecoder(); + decoder.decode(new Uint8Array([0xF0]), { stream: true }); + assert_equals(decoder.decode(), "\uFFFD"); + + decoder.decode(new Uint8Array([0xF0]), { stream: true }); + decoder.decode(new Uint8Array([0x9F]), { stream: true }); + assert_equals(decoder.decode(), "\uFFFD"); + + decoder.decode(new Uint8Array([0xF0, 0x9F]), { stream: true }); + assert_equals(decoder.decode(new Uint8Array([0x92])), "\uFFFD"); + + assert_equals(decoder.decode(new Uint8Array([0xF0, 0x9F]), { stream: true }), ""); + assert_equals(decoder.decode(new Uint8Array([0x41]), { stream: true }), "\uFFFDA"); + assert_equals(decoder.decode(), ""); + + assert_equals(decoder.decode(new Uint8Array([0xF0, 0x41, 0x42]), { stream: true }), "\uFFFDAB"); + assert_equals(decoder.decode(), ""); + + assert_equals(decoder.decode(new Uint8Array([0xF0, 0x41, 0xF0]), { stream: true }), "\uFFFDA"); + assert_equals(decoder.decode(), "\uFFFD"); + + assert_equals(decoder.decode(new Uint8Array([0xF0]), { stream: true }), ""); + assert_equals(decoder.decode(new Uint8Array([0x8F]), { stream: true }), "\uFFFD\uFFFD"); + assert_equals(decoder.decode(new Uint8Array([0x92]), { stream: true }), "\uFFFD"); + assert_equals(decoder.decode(), ""); +}, "TextDecoder end-of-queue handling using stream: true"); diff --git a/test/fixtures/wpt/encoding/textdecoder-streaming.any.js b/test/fixtures/wpt/encoding/textdecoder-streaming.any.js index 5717c2dbe00a2a..e473a7056e24d3 100644 --- a/test/fixtures/wpt/encoding/textdecoder-streaming.any.js +++ b/test/fixtures/wpt/encoding/textdecoder-streaming.any.js @@ -28,10 +28,11 @@ var octets = { var decoder = new TextDecoder(encoding); for (var i = 0; i < encoded.length; i += len) { var sub = []; - for (var j = i; j < encoded.length && j < i + len; ++j) + for (var j = i; j < encoded.length && j < i + len; ++j) { sub.push(encoded[j]); - var uintArray = new Uint8Array(createBuffer(arrayBufferOrSharedArrayBuffer, sub.length)); - uintArray.set(sub); + } + var uintArray = new Uint8Array(createBuffer(arrayBufferOrSharedArrayBuffer, sub.length)); + uintArray.set(sub); out += decoder.decode(uintArray, {stream: true}); } out += decoder.decode(); @@ -39,4 +40,50 @@ var octets = { }, 'Streaming decode: ' + encoding + ', ' + len + ' byte window (' + arrayBufferOrSharedArrayBuffer + ')'); } }); + + test(() => { + function bytes(byteArray) { + const view = new Uint8Array(createBuffer(arrayBufferOrSharedArrayBuffer, byteArray.length)); + view.set(byteArray); + return view; + } + + const decoder = new TextDecoder(); + + assert_equals(decoder.decode(bytes([0xC1]), {stream: true}), "\uFFFD"); + assert_equals(decoder.decode(), ""); + + assert_equals(decoder.decode(bytes([0xF5]), {stream: true}), "\uFFFD"); + assert_equals(decoder.decode(), ""); + + assert_equals(decoder.decode(bytes([0xE0, 0x41]), {stream: true}), "\uFFFDA"); + assert_equals(decoder.decode(bytes([0x42])), "B"); + + assert_equals(decoder.decode(bytes([0xE0, 0x80]), {stream: true}), "\uFFFD\uFFFD"); + assert_equals(decoder.decode(bytes([0x80])), "\uFFFD"); + + assert_equals(decoder.decode(bytes([0xED, 0xA0]), {stream: true}), "\uFFFD\uFFFD"); + assert_equals(decoder.decode(bytes([0x80])), "\uFFFD"); + + assert_equals(decoder.decode(bytes([0xF0, 0x41]), {stream: true}), "\uFFFDA"); + assert_equals(decoder.decode(bytes([0x42]), {stream: true}), "B"); + assert_equals(decoder.decode(bytes([0x43])), "C"); + + assert_equals(decoder.decode(bytes([0xF0, 0x80]), {stream: true}), "\uFFFD\uFFFD"); + assert_equals(decoder.decode(bytes([0x80]), {stream: true}), "\uFFFD"); + assert_equals(decoder.decode(bytes([0x80])), "\uFFFD"); + + assert_equals(decoder.decode(bytes([0xF4, 0xA0]), {stream: true}), "\uFFFD\uFFFD"); + assert_equals(decoder.decode(bytes([0x80]), {stream: true}), "\uFFFD"); + assert_equals(decoder.decode(bytes([0x80])), "\uFFFD"); + + assert_equals(decoder.decode(bytes([0xF0, 0x90, 0x41]), {stream: true}), "\uFFFDA"); + assert_equals(decoder.decode(bytes([0x42])), "B"); + + // 4-byte UTF-8 sequences always correspond to non-BMP characters. Here + // we make sure that, although the first 3 bytes are enough to emit the + // lead surrogate, it only gets emitted when the fourth byte is read. + assert_equals(decoder.decode(bytes([0xF0, 0x9F, 0x92]), {stream: true}), ""); + assert_equals(decoder.decode(bytes([0xA9])), "\u{1F4A9}"); + }, `Streaming decode: UTF-8 chunk tests (${arrayBufferOrSharedArrayBuffer})`); }) diff --git a/test/fixtures/wpt/encoding/textdecoder-streaming.any.js.headers b/test/fixtures/wpt/encoding/textdecoder-streaming.any.js.headers new file mode 100644 index 00000000000000..4fff9d9fba4c81 --- /dev/null +++ b/test/fixtures/wpt/encoding/textdecoder-streaming.any.js.headers @@ -0,0 +1,2 @@ +Cross-Origin-Opener-Policy: same-origin +Cross-Origin-Embedder-Policy: require-corp \ No newline at end of file diff --git a/test/fixtures/wpt/resources/accesskey.js b/test/fixtures/wpt/resources/accesskey.js new file mode 100644 index 00000000000000..e95c9d21e58d52 --- /dev/null +++ b/test/fixtures/wpt/resources/accesskey.js @@ -0,0 +1,34 @@ +/* + * Function that sends an accesskey using the proper key combination depending on the browser and OS. + * + * This needs that the test imports the following scripts: + * + * + * +*/ +function pressAccessKey(accessKey){ + let controlKey = '\uE009'; // left Control key + let altKey = '\uE00A'; // left Alt key + let optionKey = altKey; // left Option key + let shiftKey = '\uE008'; // left Shift key + // There are differences in using accesskey across browsers and OS's. + // See: // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/accesskey + let isMacOSX = navigator.userAgent.indexOf("Mac") != -1; + let osAccessKey = isMacOSX ? [controlKey, optionKey] : [shiftKey, altKey]; + let actions = new test_driver.Actions(); + // Press keys. + for (let key of osAccessKey) { + actions = actions.keyDown(key); + } + actions = actions + .keyDown(accessKey) + .addTick() + .keyUp(accessKey); + osAccessKey.reverse(); + for (let key of osAccessKey) { + actions = actions.keyUp(key); + } + return actions.send(); +} + + diff --git a/test/fixtures/wpt/resources/blank.html b/test/fixtures/wpt/resources/blank.html new file mode 100644 index 00000000000000..edeaa45bb62078 --- /dev/null +++ b/test/fixtures/wpt/resources/blank.html @@ -0,0 +1,16 @@ + + + + + Blank Page + + + + + diff --git a/test/fixtures/wpt/resources/channel.sub.js b/test/fixtures/wpt/resources/channel.sub.js new file mode 100644 index 00000000000000..7385a65f6e4abb --- /dev/null +++ b/test/fixtures/wpt/resources/channel.sub.js @@ -0,0 +1,1097 @@ +(function() { + function randInt(bits) { + if (bits < 1 || bits > 53) { + throw new TypeError(); + } else { + if (bits >= 1 && bits <= 30) { + return 0 | ((1 << bits) * Math.random()); + } else { + var high = (0 | ((1 << (bits - 30)) * Math.random())) * (1 << 30); + var low = 0 | ((1 << 30) * Math.random()); + return high + low; + } + } + } + + + function toHex(x, length) { + var rv = x.toString(16); + while (rv.length < length) { + rv = "0" + rv; + } + return rv; + } + + function createUuid() { + return [toHex(randInt(32), 8), + toHex(randInt(16), 4), + toHex(0x4000 | randInt(12), 4), + toHex(0x8000 | randInt(14), 4), + toHex(randInt(48), 12)].join("-"); + } + + + /** + * Cache of WebSocket instances per channel + * + * For reading there can only be one channel with each UUID, so we + * just have a simple map of {uuid: WebSocket}. The socket can be + * closed when the channel is closed. + * + * For writing there can be many channels for each uuid. Those can + * share a websocket (within a specific global), so we have a map + * of {uuid: [WebSocket, count]}. Count is incremented when a + * channel is opened with a given uuid, and decremented when its + * closed. When the count reaches zero we can close the underlying + * socket. + */ + class SocketCache { + constructor() { + this.readSockets = new Map(); + this.writeSockets = new Map(); + }; + + async getOrCreate(type, uuid, onmessage=null) { + function createSocket() { + let protocol = self.isSecureContext ? "wss" : "ws"; + let port = self.isSecureContext? "{{ports[wss][0]}}" : "{{ports[ws][0]}}"; + let url = `${protocol}://{{host}}:${port}/msg_channel?uuid=${uuid}&direction=${type}`; + let socket = new WebSocket(url); + if (onmessage !== null) { + socket.onmessage = onmessage; + }; + return new Promise(resolve => socket.addEventListener("open", () => resolve(socket))); + } + + let socket; + if (type === "read") { + if (this.readSockets.has(uuid)) { + throw new Error("Can't create multiple read sockets with same UUID"); + } + socket = await createSocket(); + // If the socket is closed by the server, ensure it's removed from the cache + socket.addEventListener("close", () => this.readSockets.delete(uuid)); + this.readSockets.set(uuid, socket); + } else if (type === "write") { + let count; + if (onmessage !== null) { + throw new Error("Can't set message handler for write sockets"); + } + if (this.writeSockets.has(uuid)) { + [socket, count] = this.writeSockets.get(uuid); + } else { + socket = await createSocket(); + count = 0; + } + count += 1; + // If the socket is closed by the server, ensure it's removed from the cache + socket.addEventListener("close", () => this.writeSockets.delete(uuid)); + this.writeSockets.set(uuid, [socket, count]); + } else { + throw new Error(`Unknown type ${type}`); + } + return socket; + }; + + async close(type, uuid) { + let target = type === "read" ? this.readSockets : this.writeSockets; + const data = target.get(uuid); + if (!data) { + return; + } + let count, socket; + if (type == "read") { + socket = data; + count = 0; + } else if (type === "write") { + [socket, count] = data; + count -= 1; + if (count > 0) { + target.set(uuid, [socket, count]); + } + }; + if (count <= 0 && socket) { + target.delete(uuid); + socket.close(1000); + await new Promise(resolve => socket.addEventListener("close", resolve)); + } + }; + + async closeAll() { + let sockets = []; + this.readSockets.forEach(value => sockets.push(value)); + this.writeSockets.forEach(value => sockets.push(value[0])); + let closePromises = sockets.map(socket => + new Promise(resolve => socket.addEventListener("close", resolve))); + sockets.forEach(socket => socket.close(1000)); + this.readSockets.clear(); + this.writeSockets.clear(); + await Promise.all(closePromises); + } + } + + const socketCache = new SocketCache(); + + /** + * Abstract base class for objects that allow sending / receiving + * messages over a channel. + */ + class Channel { + type = null; + + constructor(uuid) { + /** UUID for the channel */ + this.uuid = uuid; + this.socket = null; + this.eventListeners = { + connect: new Set(), + close: new Set() + }; + } + + hasConnection() { + return this.socket !== null && this.socket.readyState <= WebSocket.OPEN; + } + + /** + * Connect to the channel. + * + * @param {Function} onmessage - Event handler function for + * the underlying websocket message. + */ + async connect(onmessage) { + if (this.hasConnection()) { + return; + } + this.socket = await socketCache.getOrCreate(this.type, this.uuid, onmessage); + this._dispatch("connect"); + } + + /** + * Close the channel and underlying websocket connection + */ + async close() { + this.socket = null; + await socketCache.close(this.type, this.uuid); + this._dispatch("close"); + } + + /** + * Add an event callback function. Supported message types are + * "connect", "close", and "message" (for ``RecvChannel``). + * + * @param {string} type - Message type. + * @param {Function} fn - Callback function. This is called + * with an event-like object, with ``type`` and ``data`` + * properties. + */ + addEventListener(type, fn) { + if (typeof type !== "string") { + throw new TypeError(`Expected string, got ${typeof type}`); + } + if (typeof fn !== "function") { + throw new TypeError(`Expected function, got ${typeof fn}`); + } + if (!this.eventListeners.hasOwnProperty(type)) { + throw new Error(`Unrecognised event type ${type}`); + } + this.eventListeners[type].add(fn); + }; + + /** + * Remove an event callback function. + * + * @param {string} type - Event type. + * @param {Function} fn - Callback function to remove. + */ + removeEventListener(type, fn) { + if (!typeof type === "string") { + throw new TypeError(`Expected string, got ${typeof type}`); + } + if (typeof fn !== "function") { + throw new TypeError(`Expected function, got ${typeof fn}`); + } + let listeners = this.eventListeners[type]; + if (listeners) { + listeners.delete(fn); + } + }; + + _dispatch(type, data) { + let listeners = this.eventListeners[type]; + if (listeners) { + // If any listener throws we end up not calling the other + // listeners. This hopefully makes debugging easier, but + // is different to DOM event listeners. + listeners.forEach(fn => fn({type, data})); + } + }; + + } + + /** + * Send messages over a channel + */ + class SendChannel extends Channel { + type = "write"; + + /** + * Connect to the channel. Automatically called when sending the + * first message. + */ + async connect() { + return super.connect(null); + } + + async _send(cmd, body=null) { + if (!this.hasConnection()) { + await this.connect(); + } + this.socket.send(JSON.stringify([cmd, body])); + } + + /** + * Send a message. The message object must be JSON-serializable. + * + * @param {Object} msg - The message object to send. + */ + async send(msg) { + await this._send("message", msg); + } + + /** + * Disconnect the associated `RecvChannel <#RecvChannel>`_, if + * any, on the server side. + */ + async disconnectReader() { + await this._send("disconnectReader"); + } + + /** + * Disconnect this channel on the server side. + */ + async delete() { + await this._send("delete"); + } + }; + self.SendChannel = SendChannel; + + const recvChannelsCreated = new Set(); + + /** + * Receive messages over a channel + */ + class RecvChannel extends Channel { + type = "read"; + + constructor(uuid) { + if (recvChannelsCreated.has(uuid)) { + throw new Error(`Already created RecvChannel with id ${uuid}`); + } + super(uuid); + this.eventListeners.message = new Set(); + } + + async connect() { + if (this.hasConnection()) { + return; + } + await super.connect(event => this.readMessage(event.data)); + } + + readMessage(data) { + let msg = JSON.parse(data); + this._dispatch("message", msg); + } + + /** + * Wait for the next message and return it (after passing it to + * existing handlers) + * + * @returns {Promise} - Promise that resolves to the message data. + */ + nextMessage() { + return new Promise(resolve => { + let fn = ({data}) => { + this.removeEventListener("message", fn); + resolve(data); + }; + this.addEventListener("message", fn); + }); + } + } + + /** + * Create a new channel pair + * + * @returns {Array} - Array of [RecvChannel, SendChannel] for the same channel. + */ + self.channel = function() { + let uuid = createUuid(); + let recvChannel = new RecvChannel(uuid); + let sendChannel = new SendChannel(uuid); + return [recvChannel, sendChannel]; + }; + + /** + * Create an unconnected channel defined by a `uuid` in + * ``location.href`` for listening for `RemoteGlobal + * <#RemoteGlobal>`_ messages. + * + * @returns {RemoteGlobalCommandRecvChannel} - Disconnected channel + */ + self.global_channel = function() { + let uuid = new URLSearchParams(location.search).get("uuid"); + if (!uuid) { + throw new Error("URL must have a uuid parameter to use as a RemoteGlobal"); + } + return new RemoteGlobalCommandRecvChannel(new RecvChannel(uuid)); + }; + + /** + * Start listening for `RemoteGlobal <#RemoteGlobal>`_ messages on + * a channel defined by a `uuid` in `location.href` + * + * @returns {RemoteGlobalCommandRecvChannel} - Connected channel + */ + self.start_global_channel = async function() { + let channel = self.global_channel(); + await channel.connect(); + return channel; + }; + + /** + * Close all WebSockets used by channels in the current realm. + * + */ + self.close_all_channel_sockets = async function() { + await socketCache.closeAll(); + // Spinning the event loop after the close events is necessary to + // ensure that the channels really are closed and don't affect + // bfcache behaviour in at least some implementations. + await new Promise(resolve => setTimeout(resolve, 0)); + }; + + /** + * Handler for `RemoteGlobal <#RemoteGlobal>`_ commands. + * + * This can't be constructed directly but must be obtained from + * `global_channel() <#global_channel>`_ or + * `start_global_channel() <#start_global_channel>`_. + */ + class RemoteGlobalCommandRecvChannel { + constructor(recvChannel) { + this.channel = recvChannel; + this.uuid = recvChannel.uuid; + this.channel.addEventListener("message", ({data}) => this.handleMessage(data)); + this.messageHandlers = new Set(); + }; + + /** + * Connect to the channel and start handling messages. + */ + async connect() { + await this.channel.connect(); + } + + /** + * Close the channel and underlying websocket connection + */ + async close() { + await this.channel.close(); + } + + async handleMessage(msg) { + const {id, command, params, respChannel} = msg; + let result = {}; + let resp = {id, result}; + if (command === "call") { + const fn = deserialize(params.fn); + const args = params.args.map(deserialize); + try { + let resultValue = await fn(...args); + result.result = serialize(resultValue); + } catch(e) { + let exception = serialize(e); + const getAsInt = (obj, prop) => { + let value = prop in obj ? parseInt(obj[prop]) : 0; + return Number.isNaN(value) ? 0 : value; + }; + result.exceptionDetails = { + text: e.toString(), + lineNumber: getAsInt(e, "lineNumber"), + columnNumber: getAsInt(e, "columnNumber"), + exception + }; + } + } else if (command === "postMessage") { + this.messageHandlers.forEach(fn => fn(deserialize(params.msg))); + } + if (respChannel) { + let chan = deserialize(respChannel); + await chan.connect(); + await chan.send(resp); + } + } + + /** + * Add a handler for ``postMessage`` messages + * + * @param {Function} fn - Callback function that receives the + * message. + */ + addMessageHandler(fn) { + this.messageHandlers.add(fn); + } + + /** + * Remove a handler for ``postMessage`` messages + * + * @param {Function} fn - Callback function to remove + */ + removeMessageHandler(fn) { + this.messageHandlers.delete(fn); + } + + /** + * Wait for the next ``postMessage`` message and return it + * (after passing it to existing handlers) + * + * @returns {Promise} - Promise that resolves to the message. + */ + nextMessage() { + return new Promise(resolve => { + let fn = (msg) => { + this.removeMessageHandler(fn); + resolve(msg); + }; + this.addMessageHandler(fn); + }); + } + } + + class RemoteGlobalResponseRecvChannel { + constructor(recvChannel) { + this.channel = recvChannel; + this.channel.addEventListener("message", ({data}) => this.handleMessage(data)); + this.responseHandlers = new Map(); + } + + setResponseHandler(commandId, fn) { + this.responseHandlers.set(commandId, fn); + } + + handleMessage(msg) { + let {id, result} = msg; + let handler = this.responseHandlers.get(id); + if (handler) { + this.responseHandlers.delete(id); + handler(result); + } + } + + close() { + return this.channel.close(); + } + } + + /** + * Object representing a remote global that has a + * `RemoteGlobalCommandRecvChannel + * <#RemoteGlobalCommandRecvChannel>`_ + */ + class RemoteGlobal { + /** + * Create a new RemoteGlobal object. + * + * This doesn't actually construct the global itself; that + * must be done elsewhere, with a ``uuid`` query parameter in + * its URL set to the same as the ``uuid`` property of this + * object. + * + * @param {SendChannel|string} [dest] - Either a SendChannel + * to the destination, or the UUID of the destination. If + * ommitted, a new UUID is generated, which can be used when + * constructing the URL for the global. + * + */ + constructor(dest) { + if (dest === undefined || dest === null) { + dest = createUuid(); + } + if (typeof dest == "string") { + /** UUID for the global */ + this.uuid = dest; + this.sendChannel = new SendChannel(dest); + } else if (dest instanceof SendChannel) { + this.sendChannel = dest; + this.uuid = dest.uuid; + } else { + throw new TypeError("Unrecognised type, expected string or SendChannel"); + } + this.recvChannel = null; + this.respChannel = null; + this.connected = false; + this.commandId = 0; + } + + /** + * Connect to the channel. Automatically called when sending the + * first message + */ + async connect() { + if (this.connected) { + return; + } + let [recvChannel, respChannel] = self.channel(); + await Promise.all([this.sendChannel.connect(), recvChannel.connect()]); + this.recvChannel = new RemoteGlobalResponseRecvChannel(recvChannel); + this.respChannel = respChannel; + this.connected = true; + } + + async sendMessage(command, params, hasResp=true) { + if (!this.connected) { + await this.connect(); + } + let msg = {id: this.commandId++, command, params}; + if (hasResp) { + msg.respChannel = serialize(this.respChannel); + } + let response; + if (hasResp) { + response = new Promise(resolve => + this.recvChannel.setResponseHandler(msg.id, resolve)); + } else { + response = null; + } + this.sendChannel.send(msg); + return await response; + } + + /** + * Run the function ``fn`` in the remote global, passing arguments + * ``args``, and return the result after awaiting any returned + * promise. + * + * @param {Function} fn - Function to run in the remote global. + * @param {...Any} args - Arguments to pass to the function + * @returns {Promise} - Promise resolving to the return value + * of the function. + */ + async call(fn, ...args) { + let result = await this.sendMessage("call", {fn: serialize(fn), args: args.map(x => serialize(x))}, true); + if (result.exceptionDetails) { + throw deserialize(result.exceptionDetails.exception); + } + return deserialize(result.result); + } + + /** + * Post a message to the remote + * + * @param {Any} msg - The message to send. + */ + async postMessage(msg) { + await this.sendMessage("postMessage", {msg: serialize(msg)}, false); + } + + /** + * Disconnect the associated `RemoteGlobalCommandRecvChannel + * <#RemoteGlobalCommandRecvChannel>`_, if any, on the server + * side. + * + * @returns {Promise} - Resolved once the channel is disconnected. + */ + disconnectReader() { + // This causes any readers to disconnect until they are explictly reconnected + return this.sendChannel.disconnectReader(); + } + + /** + * Close the channel and underlying websocket connections + */ + close() { + let closers = [this.sendChannel.close()]; + if (this.recvChannel !== null) { + closers.push(this.recvChannel.close()); + } + if (this.respChannel !== null) { + closers.push(this.respChannel.close()); + } + return Promise.all(closers); + } + } + + self.RemoteGlobal = RemoteGlobal; + + function typeName(value) { + let type = typeof value; + if (type === "undefined" || + type === "string" || + type === "boolean" || + type === "number" || + type === "bigint" || + type === "symbol" || + type === "function") { + return type; + } + + if (value === null) { + return "null"; + } + // The handling of cross-global objects here is broken + if (value instanceof RemoteObject) { + return "remoteobject"; + } + if (value instanceof SendChannel) { + return "sendchannel"; + } + if (value instanceof RecvChannel) { + return "recvchannel"; + } + if (value instanceof Error) { + return "error"; + } + if (Array.isArray(value)) { + return "array"; + } + let constructor = value.constructor && value.constructor.name; + if (constructor === "RegExp" || + constructor === "Date" || + constructor === "Map" || + constructor === "Set" || + constructor == "WeakMap" || + constructor == "WeakSet") { + return constructor.toLowerCase(); + } + // The handling of cross-global objects here is broken + if (typeof window == "object" && window === self) { + if (value instanceof Element) { + return "element"; + } + if (value instanceof Document) { + return "document"; + } + if (value instanceof Node) { + return "node"; + } + if (value instanceof Window) { + return "window"; + } + } + if (Promise.resolve(value) === value) { + return "promise"; + } + return "object"; + } + + let remoteObjectsById = new Map(); + + function remoteId(obj) { + let rv; + rv = createUuid(); + remoteObjectsById.set(rv, obj); + return rv; + } + + /** + * Representation of a non-primitive type passed through a channel + */ + class RemoteObject { + constructor(type, objectId) { + this.type = type; + this.objectId = objectId; + } + + /** + * Create a RemoteObject containing a handle to reference obj + * + * @param {Any} obj - The object to reference. + */ + static from(obj) { + let type = typeName(obj); + let id = remoteId(obj); + return new RemoteObject(type, id); + } + + /** + * Return the local object referenced by the ``objectId`` of + * this ``RemoteObject``, or ``null`` if there isn't a such an + * object in this realm. + */ + toLocal() { + if (remoteObjectsById.has(this.objectId)) { + return remoteObjectsById.get(this.objectId); + } + return null; + } + + /** + * Remove the object from the local cache. This means that future + * calls to ``toLocal`` with the same objectId will always return + * ``null``. + */ + delete() { + remoteObjectsById.delete(this.objectId); + } + } + + self.RemoteObject = RemoteObject; + + /** + * Serialize an object as a JSON-compatible representation. + * + * The format used is similar (but not identical to) + * `WebDriver-BiDi + * `_. + * + * Each item to be serialized can have the following fields: + * + * type - The name of the type being represented e.g. "string", or + * "map". For primitives this matches ``typeof``, but for + * ``object`` types that have particular support in the protocol + * e.g. arrays and maps, it is a custom value. + * + * value - A serialized representation of the object value. For + * container types this is a JSON container (i.e. an object or an + * array) containing a serialized representation of the child + * values. + * + * objectId - An integer used to handle object graphs. Where + * an object is present more than once in the serialization, the + * first instance has both ``value`` and ``objectId`` fields, but + * when encountered again, only ``objectId`` is present, with the + * same value as the first instance of the object. + * + * @param {Any} inValue - The value to be serialized. + * @returns {Object} - The serialized object value. + */ + function serialize(inValue) { + const queue = [{item: inValue}]; + let outValue = null; + + // Map from container object input to output value + let objectsSeen = new Map(); + let lastObjectId = 0; + + /* Instead of making this recursive, use a queue holding the objects to be + * serialized. Each item in the queue can have the following properties: + * + * item (required) - the input item to be serialized + * + * target - For collections, the output serialized object to + * which the serialization of the current item will be added. + * + * targetName - For serializing object members, the name of + * the property. For serializing maps either "key" or "value", + * depending on whether the item represents a key or a value + * in the map. + */ + while (queue.length > 0) { + const {item, target, targetName} = queue.shift(); + let type = typeName(item); + + let serialized = {type}; + + if (objectsSeen.has(item)) { + let outputValue = objectsSeen.get(item); + if (!outputValue.hasOwnProperty("objectId")) { + outputValue.objectId = lastObjectId++; + } + serialized.objectId = outputValue.objectId; + } else { + switch (type) { + case "undefined": + case "null": + break; + case "string": + case "boolean": + serialized.value = item; + break; + case "number": + if (item !== item) { + serialized.value = "NaN"; + } else if (item === 0 && 1/item == Number.NEGATIVE_INFINITY) { + serialized.value = "-0"; + } else if (item === Number.POSITIVE_INFINITY) { + serialized.value = "+Infinity"; + } else if (item === Number.NEGATIVE_INFINITY) { + serialized.value = "-Infinity"; + } else { + serialized.value = item; + } + break; + case "bigint": + case "function": + serialized.value = item.toString(); + break; + case "remoteobject": + serialized.value = { + type: item.type, + objectId: item.objectId + }; + break; + case "sendchannel": + serialized.value = item.uuid; + break; + case "regexp": + serialized.value = { + pattern: item.source, + flags: item.flags + }; + break; + case "date": + serialized.value = Date.prototype.toJSON.call(item); + break; + case "error": + serialized.value = { + type: item.constructor.name, + name: item.name, + message: item.message, + lineNumber: item.lineNumber, + columnNumber: item.columnNumber, + fileName: item.fileName, + stack: item.stack, + }; + break; + case "array": + case "set": + serialized.value = []; + for (let child of item) { + queue.push({item: child, target: serialized}); + } + break; + case "object": + serialized.value = {}; + for (let [targetName, child] of Object.entries(item)) { + queue.push({item: child, target: serialized, targetName}); + } + break; + case "map": + serialized.value = []; + for (let [childKey, childValue] of item.entries()) { + queue.push({item: childKey, target: serialized, targetName: "key"}); + queue.push({item: childValue, target: serialized, targetName: "value"}); + } + break; + default: + throw new TypeError(`Can't serialize value of type ${type}; consider using RemoteObject.from() to wrap the object`); + }; + } + if (serialized.objectId === undefined) { + objectsSeen.set(item, serialized); + } + + if (target === undefined) { + if (outValue !== null) { + throw new Error("Tried to create multiple output values"); + } + outValue = serialized; + } else { + switch (target.type) { + case "array": + case "set": + target.value.push(serialized); + break; + case "object": + target.value[targetName] = serialized; + break; + case "map": + // We always serialize key and value as adjacent items in the queue, + // so when we get the key push a new output array and then the value will + // be added on the next iteration. + if (targetName === "key") { + target.value.push([]); + } + target.value[target.value.length - 1].push(serialized); + break; + default: + throw new Error(`Unknown collection target type ${target.type}`); + } + } + } + return outValue; + } + + /** + * Deserialize an object from a JSON-compatible representation. + * + * For details on the serialized representation see serialize(). + * + * @param {Object} obj - The value to be deserialized. + * @returns {Any} - The deserialized value. + */ + function deserialize(obj) { + let deserialized = null; + let queue = [{item: obj, target: null}]; + let objectMap = new Map(); + + /* Instead of making this recursive, use a queue holding the objects to be + * deserialized. Each item in the queue has the following properties: + * + * item - The input item to be deserialised. + * + * target - For members of a collection, a wrapper around the + * output collection. This has a ``type`` field which is the + * name of the collection type, and a ``value`` field which is + * the actual output collection. For primitives, this is null. + * + * targetName - For object members, the property name on the + * output object. For maps, "key" if the item is a key in the output map, + * or "value" if it's a value in the output map. + */ + while (queue.length > 0) { + const {item, target, targetName} = queue.shift(); + const {type, value, objectId} = item; + let result; + let newTarget; + if (objectId !== undefined && value === undefined) { + result = objectMap.get(objectId); + } else { + switch(type) { + case "undefined": + result = undefined; + break; + case "null": + result = null; + break; + case "string": + case "boolean": + result = value; + break; + case "number": + if (typeof value === "string") { + switch(value) { + case "NaN": + result = NaN; + break; + case "-0": + result = -0; + break; + case "+Infinity": + result = Number.POSITIVE_INFINITY; + break; + case "-Infinity": + result = Number.NEGATIVE_INFINITY; + break; + default: + throw new Error(`Unexpected number value "${value}"`); + } + } else { + result = value; + } + break; + case "bigint": + result = BigInt(value); + break; + case "function": + result = new Function("...args", `return (${value}).apply(null, args)`); + break; + case "remoteobject": + let remote = new RemoteObject(value.type, value.objectId); + let local = remote.toLocal(); + if (local !== null) { + result = local; + } else { + result = remote; + } + break; + case "sendchannel": + result = new SendChannel(value); + break; + case "regexp": + result = new RegExp(value.pattern, value.flags); + break; + case "date": + result = new Date(value); + break; + case "error": + // The item.value.type property is the name of the error constructor. + // If we have a constructor with the same name in the current realm, + // construct an instance of that type, otherwise use a generic Error + // type. + if (item.value.type in self && + typeof self[item.value.type] === "function") { + result = new self[item.value.type](item.value.message); + } else { + result = new Error(item.value.message); + } + result.name = item.value.name; + result.lineNumber = item.value.lineNumber; + result.columnNumber = item.value.columnNumber; + result.fileName = item.value.fileName; + result.stack = item.value.stack; + break; + case "array": + result = []; + newTarget = {type, value: result}; + for (let child of value) { + queue.push({item: child, target: newTarget}); + } + break; + case "set": + result = new Set(); + newTarget = {type, value: result}; + for (let child of value) { + queue.push({item: child, target: newTarget}); + } + break; + case "object": + result = {}; + newTarget = {type, value: result}; + for (let [targetName, child] of Object.entries(value)) { + queue.push({item: child, target: newTarget, targetName}); + } + break; + case "map": + result = new Map(); + newTarget = {type, value: result}; + for (let [key, child] of value) { + queue.push({item: key, target: newTarget, targetName: "key"}); + queue.push({item: child, target: newTarget, targetName: "value"}); + } + break; + default: + throw new TypeError(`Can't deserialize object of type ${type}`); + } + if (objectId !== undefined) { + objectMap.set(objectId, result); + } + } + + if (target === null) { + if (deserialized !== null) { + throw new Error(`Tried to deserialized a non-root output value without a target` + ` container object.`); + } + deserialized = result; + } else { + switch(target.type) { + case "array": + target.value.push(result); + break; + case "set": + target.value.add(result); + break; + case "object": + target.value[targetName] = result; + break; + case "map": + // For maps the same target wrapper is shared between key and value. + // After deserializing the key, set the `key` property on the target + // until we come to the value. + if (targetName === "key") { + target.key = result; + } else { + target.value.set(target.key, result); + } + break; + default: + throw new Error(`Unknown target type ${target.type}`); + } + } + } + return deserialized; + } +})(); diff --git a/test/fixtures/wpt/resources/check-layout-th.js b/test/fixtures/wpt/resources/check-layout-th.js index a507a8dfd7f197..9cd8abc938d9fb 100644 --- a/test/fixtures/wpt/resources/check-layout-th.js +++ b/test/fixtures/wpt/resources/check-layout-th.js @@ -20,7 +20,7 @@ function checkAttribute(output, node, attribute) function assert_tolerance(actual, expected, message) { - if (isNaN(expected) || Math.abs(actual - expected) >= 1) { + if (isNaN(expected) || isNaN(actual) || Math.abs(actual - expected) >= 1) { assert_equals(actual, Number(expected), message); } } diff --git a/test/fixtures/wpt/resources/check-layout.js b/test/fixtures/wpt/resources/check-layout.js new file mode 100644 index 00000000000000..8634481497d701 --- /dev/null +++ b/test/fixtures/wpt/resources/check-layout.js @@ -0,0 +1,245 @@ +(function() { + +function insertAfter(nodeToAdd, referenceNode) +{ + if (referenceNode == document.body) { + document.body.appendChild(nodeToAdd); + return; + } + + if (referenceNode.nextSibling) + referenceNode.parentNode.insertBefore(nodeToAdd, referenceNode.nextSibling); + else + referenceNode.parentNode.appendChild(nodeToAdd); +} + +function positionedAncestor(node) +{ + var ancestor = node.parentNode; + while (getComputedStyle(ancestor).position == 'static') + ancestor = ancestor.parentNode; + return ancestor; +} + +function checkSubtreeExpectedValues(parent, failures) +{ + var checkedLayout = checkExpectedValues(parent, failures); + Array.prototype.forEach.call(parent.childNodes, function(node) { + checkedLayout |= checkSubtreeExpectedValues(node, failures); + }); + return checkedLayout; +} + +function checkAttribute(output, node, attribute) +{ + var result = node.getAttribute && node.getAttribute(attribute); + output.checked |= !!result; + return result; +} + +function checkExpectedValues(node, failures) +{ + var output = { checked: false }; + var expectedWidth = checkAttribute(output, node, "data-expected-width"); + if (expectedWidth) { + if (isNaN(expectedWidth) || Math.abs(node.offsetWidth - expectedWidth) >= 1) + failures.push("Expected " + expectedWidth + " for width, but got " + node.offsetWidth + ". "); + } + + var expectedHeight = checkAttribute(output, node, "data-expected-height"); + if (expectedHeight) { + if (isNaN(expectedHeight) || Math.abs(node.offsetHeight - expectedHeight) >= 1) + failures.push("Expected " + expectedHeight + " for height, but got " + node.offsetHeight + ". "); + } + + var expectedOffset = checkAttribute(output, node, "data-offset-x"); + if (expectedOffset) { + if (isNaN(expectedOffset) || Math.abs(node.offsetLeft - expectedOffset) >= 1) + failures.push("Expected " + expectedOffset + " for offsetLeft, but got " + node.offsetLeft + ". "); + } + + var expectedOffset = checkAttribute(output, node, "data-offset-y"); + if (expectedOffset) { + if (isNaN(expectedOffset) || Math.abs(node.offsetTop - expectedOffset) >= 1) + failures.push("Expected " + expectedOffset + " for offsetTop, but got " + node.offsetTop + ". "); + } + + var expectedOffset = checkAttribute(output, node, "data-positioned-offset-x"); + if (expectedOffset) { + var actualOffset = node.getBoundingClientRect().left - positionedAncestor(node).getBoundingClientRect().left; + if (isNaN(expectedOffset) || Math.abs(actualOffset - expectedOffset) >= 1) + failures.push("Expected " + expectedOffset + " for getBoundingClientRect().left offset, but got " + actualOffset + ". "); + } + + var expectedOffset = checkAttribute(output, node, "data-positioned-offset-y"); + if (expectedOffset) { + var actualOffset = node.getBoundingClientRect().top - positionedAncestor(node).getBoundingClientRect().top; + if (isNaN(expectedOffset) || Math.abs(actualOffset - expectedOffset) >= 1) + failures.push("Expected " + expectedOffset + " for getBoundingClientRect().top offset, but got " + actualOffset + ". "); + } + + var expectedWidth = checkAttribute(output, node, "data-expected-client-width"); + if (expectedWidth) { + if (isNaN(expectedWidth) || Math.abs(node.clientWidth - expectedWidth) >= 1) + failures.push("Expected " + expectedWidth + " for clientWidth, but got " + node.clientWidth + ". "); + } + + var expectedHeight = checkAttribute(output, node, "data-expected-client-height"); + if (expectedHeight) { + if (isNaN(expectedHeight) || Math.abs(node.clientHeight - expectedHeight) >= 1) + failures.push("Expected " + expectedHeight + " for clientHeight, but got " + node.clientHeight + ". "); + } + + var expectedWidth = checkAttribute(output, node, "data-expected-scroll-width"); + if (expectedWidth) { + if (isNaN(expectedWidth) || Math.abs(node.scrollWidth - expectedWidth) >= 1) + failures.push("Expected " + expectedWidth + " for scrollWidth, but got " + node.scrollWidth + ". "); + } + + var expectedHeight = checkAttribute(output, node, "data-expected-scroll-height"); + if (expectedHeight) { + if (isNaN(expectedHeight) || Math.abs(node.scrollHeight - expectedHeight) >= 1) + failures.push("Expected " + expectedHeight + " for scrollHeight, but got " + node.scrollHeight + ". "); + } + + var expectedOffset = checkAttribute(output, node, "data-total-x"); + if (expectedOffset) { + var totalLeft = node.clientLeft + node.offsetLeft; + if (isNaN(expectedOffset) || Math.abs(totalLeft - expectedOffset) >= 1) + failures.push("Expected " + expectedOffset + " for clientLeft+offsetLeft, but got " + totalLeft + ", clientLeft: " + node.clientLeft + ", offsetLeft: " + node.offsetLeft + ". "); + } + + var expectedOffset = checkAttribute(output, node, "data-total-y"); + if (expectedOffset) { + var totalTop = node.clientTop + node.offsetTop; + if (isNaN(expectedOffset) || Math.abs(totalTop - expectedOffset) >= 1) + failures.push("Expected " + expectedOffset + " for clientTop+offsetTop, but got " + totalTop + ", clientTop: " + node.clientTop + ", + offsetTop: " + node.offsetTop + ". "); + } + + var expectedDisplay = checkAttribute(output, node, "data-expected-display"); + if (expectedDisplay) { + var actualDisplay = getComputedStyle(node).display; + if (actualDisplay != expectedDisplay) + failures.push("Expected " + expectedDisplay + " for display, but got " + actualDisplay + ". "); + } + + var expectedPaddingTop = checkAttribute(output, node, "data-expected-padding-top"); + if (expectedPaddingTop) { + var actualPaddingTop = getComputedStyle(node).paddingTop; + // Trim the unit "px" from the output. + actualPaddingTop = actualPaddingTop.substring(0, actualPaddingTop.length - 2); + if (actualPaddingTop != expectedPaddingTop) + failures.push("Expected " + expectedPaddingTop + " for padding-top, but got " + actualPaddingTop + ". "); + } + + var expectedPaddingBottom = checkAttribute(output, node, "data-expected-padding-bottom"); + if (expectedPaddingBottom) { + var actualPaddingBottom = getComputedStyle(node).paddingBottom; + // Trim the unit "px" from the output. + actualPaddingBottom = actualPaddingBottom.substring(0, actualPaddingBottom.length - 2); + if (actualPaddingBottom != expectedPaddingBottom) + failures.push("Expected " + expectedPaddingBottom + " for padding-bottom, but got " + actualPaddingBottom + ". "); + } + + var expectedPaddingLeft = checkAttribute(output, node, "data-expected-padding-left"); + if (expectedPaddingLeft) { + var actualPaddingLeft = getComputedStyle(node).paddingLeft; + // Trim the unit "px" from the output. + actualPaddingLeft = actualPaddingLeft.substring(0, actualPaddingLeft.length - 2); + if (actualPaddingLeft != expectedPaddingLeft) + failures.push("Expected " + expectedPaddingLeft + " for padding-left, but got " + actualPaddingLeft + ". "); + } + + var expectedPaddingRight = checkAttribute(output, node, "data-expected-padding-right"); + if (expectedPaddingRight) { + var actualPaddingRight = getComputedStyle(node).paddingRight; + // Trim the unit "px" from the output. + actualPaddingRight = actualPaddingRight.substring(0, actualPaddingRight.length - 2); + if (actualPaddingRight != expectedPaddingRight) + failures.push("Expected " + expectedPaddingRight + " for padding-right, but got " + actualPaddingRight + ". "); + } + + var expectedMarginTop = checkAttribute(output, node, "data-expected-margin-top"); + if (expectedMarginTop) { + var actualMarginTop = getComputedStyle(node).marginTop; + // Trim the unit "px" from the output. + actualMarginTop = actualMarginTop.substring(0, actualMarginTop.length - 2); + if (actualMarginTop != expectedMarginTop) + failures.push("Expected " + expectedMarginTop + " for margin-top, but got " + actualMarginTop + ". "); + } + + var expectedMarginBottom = checkAttribute(output, node, "data-expected-margin-bottom"); + if (expectedMarginBottom) { + var actualMarginBottom = getComputedStyle(node).marginBottom; + // Trim the unit "px" from the output. + actualMarginBottom = actualMarginBottom.substring(0, actualMarginBottom.length - 2); + if (actualMarginBottom != expectedMarginBottom) + failures.push("Expected " + expectedMarginBottom + " for margin-bottom, but got " + actualMarginBottom + ". "); + } + + var expectedMarginLeft = checkAttribute(output, node, "data-expected-margin-left"); + if (expectedMarginLeft) { + var actualMarginLeft = getComputedStyle(node).marginLeft; + // Trim the unit "px" from the output. + actualMarginLeft = actualMarginLeft.substring(0, actualMarginLeft.length - 2); + if (actualMarginLeft != expectedMarginLeft) + failures.push("Expected " + expectedMarginLeft + " for margin-left, but got " + actualMarginLeft + ". "); + } + + var expectedMarginRight = checkAttribute(output, node, "data-expected-margin-right"); + if (expectedMarginRight) { + var actualMarginRight = getComputedStyle(node).marginRight; + // Trim the unit "px" from the output. + actualMarginRight = actualMarginRight.substring(0, actualMarginRight.length - 2); + if (actualMarginRight != expectedMarginRight) + failures.push("Expected " + expectedMarginRight + " for margin-right, but got " + actualMarginRight + ". "); + } + + return output.checked; +} + +window.checkLayout = function(selectorList, outputContainer) +{ + var result = true; + if (!selectorList) { + document.body.appendChild(document.createTextNode("You must provide a CSS selector of nodes to check.")); + return; + } + var nodes = document.querySelectorAll(selectorList); + nodes = Array.prototype.slice.call(nodes); + nodes.reverse(); + var checkedLayout = false; + Array.prototype.forEach.call(nodes, function(node) { + var failures = []; + checkedLayout |= checkExpectedValues(node.parentNode, failures); + checkedLayout |= checkSubtreeExpectedValues(node, failures); + + var container = node.parentNode.className == 'container' ? node.parentNode : node; + + var pre = document.createElement('pre'); + if (failures.length) { + pre.className = 'FAIL'; + result = false; + } + pre.appendChild(document.createTextNode(failures.length ? "FAIL:\n" + failures.join('\n') + '\n\n' + container.outerHTML : "PASS")); + + var referenceNode = container; + if (outputContainer) { + if (!outputContainer.lastChild) { + // Inserting a text node so we have something to insertAfter. + outputContainer.textContent = " "; + } + referenceNode = outputContainer.lastChild; + } + insertAfter(pre, referenceNode); + }); + + if (!checkedLayout) { + document.body.appendChild(document.createTextNode("FAIL: No valid data-* attributes found in selector list : " + selectorList)); + return false; + } + + return result; +} + +})(); diff --git a/test/fixtures/wpt/resources/idlharness-shadowrealm.js b/test/fixtures/wpt/resources/idlharness-shadowrealm.js new file mode 100644 index 00000000000000..631278db22d8fb --- /dev/null +++ b/test/fixtures/wpt/resources/idlharness-shadowrealm.js @@ -0,0 +1,81 @@ +// TODO: it would be nice to support `idl_array.add_objects` +function fetch_text(url) { + return fetch(url).then(function (r) { + if (!r.ok) { + throw new Error("Error fetching " + url + "."); + } + return r.text(); + }); +} + +/** + * idl_test_shadowrealm is a promise_test wrapper that handles the fetching of the IDL, and + * running the code in a `ShadowRealm`, avoiding repetitive boilerplate. + * + * @see https://github.com/tc39/proposal-shadowrealm + * @param {String[]} srcs Spec name(s) for source idl files (fetched from + * /interfaces/{name}.idl). + * @param {String[]} deps Spec name(s) for dependency idl files (fetched + * from /interfaces/{name}.idl). Order is important - dependencies from + * each source will only be included if they're already know to be a + * dependency (i.e. have already been seen). + */ +function idl_test_shadowrealm(srcs, deps) { + const script_urls = [ + "/resources/testharness.js", + "/resources/WebIDLParser.js", + "/resources/idlharness.js", + ]; + promise_setup(async t => { + const realm = new ShadowRealm(); + // https://github.com/web-platform-tests/wpt/issues/31996 + realm.evaluate("globalThis.self = globalThis; undefined;"); + + realm.evaluate(` + globalThis.self.GLOBAL = { + isWindow: function() { return false; }, + isWorker: function() { return false; }, + isShadowRealm: function() { return true; }, + }; + `); + + const ss = await Promise.all(script_urls.map(url => fetch_text(url))); + for (const s of ss) { + realm.evaluate(s); + } + const specs = await Promise.all(srcs.concat(deps).map(spec => { + return fetch_text("/interfaces/" + spec + ".idl"); + })); + const idls = JSON.stringify(specs); + + const results = JSON.parse(await new Promise( + realm.evaluate(`(resolve,reject) => { + const idls = ${idls}; + add_completion_callback(function (tests, harness_status, asserts_run) { + resolve(JSON.stringify(tests)); + }); + + // Without the wrapping test, testharness.js will think it's done after it has run + // the first idlharness test. + test(() => { + const idl_array = new IdlArray(); + for (let i = 0; i < ${srcs.length}; i++) { + idl_array.add_idls(idls[i]); + } + for (let i = ${srcs.length}; i < ${srcs.length + deps.length}; i++) { + idl_array.add_dependency_idls(idls[i]); + } + idl_array.test(); + }, "setup"); + }`) + )); + + // We ran the tests in the ShadowRealm and gathered the results. Now treat them as if + // we'd run them directly here, so we can see them. + for (const {name, status, message} of results) { + // TODO: make this an API in testharness.js - needs RFC? + promise_test(t => {t.set_status(status, message); t.phase = t.phases.HAS_RESULT; t.done()}, name); + } + }, "outer setup"); +} +// vim: set expandtab shiftwidth=4 tabstop=4 foldmarker=@{,@} foldmethod=marker: diff --git a/test/fixtures/wpt/resources/idlharness.js b/test/fixtures/wpt/resources/idlharness.js index d81693d2a2226d..b5eed06ce3e138 100644 --- a/test/fixtures/wpt/resources/idlharness.js +++ b/test/fixtures/wpt/resources/idlharness.js @@ -508,7 +508,7 @@ IdlArray.prototype.is_json_type = function(type) { /** * Checks whether type is a JSON type as per - * https://heycam.github.io/webidl/#dfn-json-types + * https://webidl.spec.whatwg.org/#dfn-json-types */ var idlType = type.idlType; @@ -637,11 +637,17 @@ function exposure_set(object, default_set) { if (exposed && exposed.length) { const { rhs } = exposed[0]; // Could be a list or a string. - const set = rhs.type === "identifier-list" ? + const set = + rhs.type === "*" ? + [ "*" ] : + rhs.type === "identifier-list" ? rhs.value.map(id => id.value) : [ rhs.value ]; result = new Set(set); } + if (result && result.has("*")) { + return "*"; + } if (result && result.has("Worker")) { result.delete("Worker"); result.add("DedicatedWorker"); @@ -652,6 +658,9 @@ function exposure_set(object, default_set) { } function exposed_in(globals) { + if (globals === "*") { + return true; + } if ('Window' in self) { return globals.has("Window"); } @@ -667,6 +676,10 @@ function exposed_in(globals) { self instanceof ServiceWorkerGlobalScope) { return globals.has("ServiceWorker"); } + if (Object.getPrototypeOf(self) === Object.prototype) { + // ShadowRealm - only exposed with `"*"`. + return false; + } throw new IdlHarnessError("Unexpected global object"); } @@ -804,6 +817,13 @@ IdlArray.prototype.merge_partials = function() test(function () { const partialExposure = exposure_set(parsed_idl); const memberExposure = exposure_set(this.members[parsed_idl.name]); + if (memberExposure === "*") { + return; + } + if (partialExposure === "*") { + throw new IdlHarnessError( + `Partial ${parsed_idl.name} ${parsed_idl.type} is exposed everywhere, the original ${parsed_idl.type} is not.`); + } partialExposure.forEach(name => { if (!memberExposure || !memberExposure.has(name)) { throw new IdlHarnessError( @@ -942,7 +962,7 @@ IdlArray.prototype.assert_type_is = function(value, type) return; } - if (type.generic === "sequence") + if (type.generic === "sequence" || type.generic == "ObservableArray") { assert_true(Array.isArray(value), "should be an Array"); if (!value.length) @@ -1255,7 +1275,7 @@ IdlInterface.prototype.is_global = function() /** * Value of the LegacyNamespace extended attribute, if any. * - * https://heycam.github.io/webidl/#LegacyNamespace + * https://webidl.spec.whatwg.org/#LegacyNamespace */ IdlInterface.prototype.get_legacy_namespace = function() { @@ -1299,7 +1319,7 @@ IdlInterface.prototype.get_interface_object = function() { }; IdlInterface.prototype.get_qualified_name = function() { - // https://heycam.github.io/webidl/#qualified-name + // https://webidl.spec.whatwg.org/#qualified-name var legacyNamespace = this.get_legacy_namespace(); if (legacyNamespace) { return legacyNamespace + "." + this.name; @@ -1320,7 +1340,7 @@ IdlInterface.prototype.has_default_to_json_regular_operation = function() { }; /** - * Implementation of https://heycam.github.io/webidl/#create-an-inheritance-stack + * Implementation of https://webidl.spec.whatwg.org/#create-an-inheritance-stack * with the order reversed. * * The order is reversed so that the base class comes first in the list, because @@ -1358,7 +1378,7 @@ IdlInterface.prototype.get_reverse_inheritance_stack = function() { /** * Implementation of - * https://heycam.github.io/webidl/#default-tojson-operation + * https://webidl.spec.whatwg.org/#default-tojson-operation * for testing purposes. * * Collects the IDL types of the attributes that meet the criteria @@ -1524,7 +1544,7 @@ IdlInterface.prototype.test_self = function() if (this.should_have_interface_object() && !this.is_callback()) { subsetTestByKey(this.name, test, function() { // This function tests WebIDL as of 2014-10-25. - // https://heycam.github.io/webidl/#es-interface-call + // https://webidl.spec.whatwg.org/#es-interface-call this.assert_interface_object_exists(); @@ -1549,7 +1569,7 @@ IdlInterface.prototype.test_self = function() if (this.should_have_interface_object()) { subsetTestByKey(this.name, test, function() { // This function tests WebIDL as of 2015-11-17. - // https://heycam.github.io/webidl/#interface-object + // https://webidl.spec.whatwg.org/#interface-object this.assert_interface_object_exists(); @@ -1580,7 +1600,7 @@ IdlInterface.prototype.test_self = function() if (this.is_callback()) { throw new IdlHarnessError("Invalid IDL: LegacyWindowAlias extended attribute on non-interface " + this.name); } - if (!this.exposureSet.has("Window")) { + if (!(this.exposureSet === "*" || this.exposureSet.has("Window"))) { throw new IdlHarnessError("Invalid IDL: LegacyWindowAlias extended attribute on " + this.name + " which is not exposed in Window"); } // TODO: when testing of [LegacyNoInterfaceObject] interfaces is supported, @@ -1741,7 +1761,7 @@ IdlInterface.prototype.test_self = function() subsetTestByKey(this.name, test, function() { // This function tests WebIDL as of 2015-01-21. - // https://heycam.github.io/webidl/#interface-object + // https://webidl.spec.whatwg.org/#interface-object if (!this.should_have_interface_object()) { return; @@ -1860,7 +1880,7 @@ IdlInterface.prototype.test_self = function() // interfaces for any other interface that is declared with one of these // attributes, then the interface prototype object must be an immutable // prototype exotic object." - // https://heycam.github.io/webidl/#interface-prototype-object + // https://webidl.spec.whatwg.org/#interface-prototype-object if (this.is_global()) { this.test_immutable_prototype("interface prototype object", this.get_interface_object().prototype); } @@ -2237,7 +2257,7 @@ IdlInterface.prototype.test_member_operation = function(member) a_test.step(function() { // This function tests WebIDL as of 2015-12-29. - // https://heycam.github.io/webidl/#es-operations + // https://webidl.spec.whatwg.org/#es-operations if (!this.should_have_interface_object()) { a_test.done(); @@ -2666,7 +2686,7 @@ IdlInterface.prototype.test_primary_interface_of = function(desc, obj, exception // attribute must execute the same algorithm as is defined for the // [[SetPrototypeOf]] internal method of an immutable prototype exotic // object." - // https://heycam.github.io/webidl/#platform-object-setprototypeof + // https://webidl.spec.whatwg.org/#platform-object-setprototypeof if (this.is_global()) { this.test_immutable_prototype("global platform object", obj); @@ -3332,9 +3352,9 @@ IdlNamespace.prototype.test = function () * idl_test is a promise_test wrapper that handles the fetching of the IDL, * avoiding repetitive boilerplate. * - * @param {String|String[]} srcs Spec name(s) for source idl files (fetched from + * @param {String[]} srcs Spec name(s) for source idl files (fetched from * /interfaces/{name}.idl). - * @param {String|String[]} deps Spec name(s) for dependency idl files (fetched + * @param {String[]} deps Spec name(s) for dependency idl files (fetched * from /interfaces/{name}.idl). Order is important - dependencies from * each source will only be included if they're already know to be a * dependency (i.e. have already been seen). diff --git a/test/fixtures/wpt/resources/sriharness.js b/test/fixtures/wpt/resources/sriharness.js index d57a1b38465d64..943d677224f2f2 100644 --- a/test/fixtures/wpt/resources/sriharness.js +++ b/test/fixtures/wpt/resources/sriharness.js @@ -1,17 +1,30 @@ -var SRIScriptTest = function(pass, name, src, integrityValue, crossoriginValue, nonce) { +// `integrityValue` indicates the 'integrity' attribute value at the time of +// #prepare-a-script. +// +// `integrityValueAfterPrepare` indicates how the 'integrity' attribute value +// is modified after #prepare-a-script: +// - `undefined` => not modified. +// - `null` => 'integrity' attribute is removed. +// - others => 'integrity' attribute value is set to that value. +// +// TODO: Make the arguments a dictionary for readability in the test files. +var SRIScriptTest = function(pass, name, src, integrityValue, crossoriginValue, nonce, integrityValueAfterPrepare) { this.pass = pass; this.name = "Script: " + name; this.src = src; this.integrityValue = integrityValue; this.crossoriginValue = crossoriginValue; this.nonce = nonce; + this.integrityValueAfterPrepare = integrityValueAfterPrepare; } SRIScriptTest.prototype.execute = function() { var test = async_test(this.name); var e = document.createElement("script"); e.src = this.src; - e.setAttribute("integrity", this.integrityValue); + if (this.integrityValue) { + e.setAttribute("integrity", this.integrityValue); + } if(this.crossoriginValue) { e.setAttribute("crossorigin", this.crossoriginValue); } @@ -30,6 +43,12 @@ SRIScriptTest.prototype.execute = function() { e.addEventListener("error", function() {test.done()}); } document.body.appendChild(e); + + if (this.integrityValueAfterPrepare === null) { + e.removeAttribute("integrity"); + } else if (this.integrityValueAfterPrepare !== undefined) { + e.setAttribute("integrity", this.integrityValueAfterPrepare); + } }; function set_extra_attributes(element, attrs) { diff --git a/test/fixtures/wpt/resources/testdriver-actions.js b/test/fixtures/wpt/resources/testdriver-actions.js index 4dafa0c018b101..3e5ba74b4cab35 100644 --- a/test/fixtures/wpt/resources/testdriver-actions.js +++ b/test/fixtures/wpt/resources/testdriver-actions.js @@ -2,9 +2,38 @@ let sourceNameIdx = 0; /** + * @class * Builder for creating a sequence of actions - * The default tick duration is set to 16ms, which is one frame time based on - * 60Hz display. + * + * + * The actions are dispatched once + * :js:func:`test_driver.Actions.send` is called. This returns a + * promise which resolves once the actions are complete. + * + * The other methods on :js:class:`test_driver.Actions` object are + * used to build the sequence of actions that will be sent. These + * return the `Actions` object itself, so the actions sequence can + * be constructed by chaining method calls. + * + * Internally :js:func:`test_driver.Actions.send` invokes + * :js:func:`test_driver.action_sequence`. + * + * @example + * let text_box = document.getElementById("text"); + * + * let actions = new test_driver.Actions() + * .pointerMove(0, 0, {origin: text_box}) + * .pointerDown() + * .pointerUp() + * .addTick() + * .keyDown("p") + * .keyUp("p"); + * + * await actions.send(); + * + * @param {number} [defaultTickDuration] - The default duration of a + * tick. Be default this is set ot 16ms, which is one frame time + * based on 60Hz display. */ function Actions(defaultTickDuration=16) { this.sourceTypes = new Map([["key", KeySource], diff --git a/test/fixtures/wpt/resources/testdriver.js b/test/fixtures/wpt/resources/testdriver.js index f2df26cda1ccdf..0737e64a50b313 100644 --- a/test/fixtures/wpt/resources/testdriver.js +++ b/test/fixtures/wpt/resources/testdriver.js @@ -46,7 +46,7 @@ /** - * @namespace + * @namespace {test_driver} */ window.test_driver = { /** @@ -78,9 +78,17 @@ * Trigger user interaction in order to grant additional privileges to * a provided function. * - * https://html.spec.whatwg.org/#triggered-by-user-activation + * See `triggered by user activation + * `_. * - * @param {String} intent - a description of the action which much be + * @example + * var mediaElement = document.createElement('video'); + * + * test_driver.bless('initiate media playback', function () { + * mediaElement.play(); + * }); + * + * @param {String} intent - a description of the action which must be * triggered by user interaction * @param {Function} action - code requiring escalated privileges * @param {WindowProxy} context - Browsing context in which @@ -118,9 +126,21 @@ /** * Triggers a user-initiated click * - * This matches the behaviour of the {@link - * https://w3c.github.io/webdriver/#element-click|WebDriver - * Element Click command}. + * If ``element`` isn't inside the + * viewport, it will be scrolled into view before the click + * occurs. + * + * If ``element`` is from a different browsing context, the + * command will be run in that context. + * + * Matches the behaviour of the `Element Click + * `_ + * WebDriver command. + * + * **Note:** If the element to be clicked does not have a + * unique ID, the document must not have any DOM mutations + * made between the function being called and the promise + * settling. * * @param {Element} element - element to be clicked * @returns {Promise} fulfilled after click occurs, or rejected in @@ -149,9 +169,9 @@ /** * Deletes all cookies. * - * This matches the behaviour of the {@link - * https://w3c.github.io/webdriver/#delete-all-cookies|WebDriver - * Delete All Cookies command}. + * Matches the behaviour of the `Delete All Cookies + * `_ + * WebDriver command. * * @param {WindowProxy} context - Browsing context in which * to run the call, or null for the current @@ -165,11 +185,34 @@ }, /** - * Send keys to an element + * Send keys to an element. + * + * If ``element`` isn't inside the + * viewport, it will be scrolled into view before the click + * occurs. + * + * If ``element`` is from a different browsing context, the + * command will be run in that context. + * + * To send special keys, send the respective key's codepoint, + * as defined by `WebDriver + * `_. For + * example, the "tab" key is represented as "``\uE004``". * - * This matches the behaviour of the {@link - * https://w3c.github.io/webdriver/#element-send-keys|WebDriver - * Send Keys command}. + * **Note:** these special-key codepoints are not necessarily + * what you would expect. For example, Esc is the + * invalid Unicode character ``\uE00C``, not the ``\u001B`` Escape + * character from ASCII. + * + * This matches the behaviour of the + * `Send Keys + * `_ + * WebDriver command. + * + * **Note:** If the element to be clicked does not have a + * unique ID, the document must not have any DOM mutations + * made between the function being called and the promise + * settling. * * @param {Element} element - element to send keys to * @param {String} keys - keys to send to the element @@ -196,9 +239,8 @@ * Freeze the current page * * The freeze function transitions the page from the HIDDEN state to - * the FROZEN state as described in {@link - * https://github.com/WICG/page-lifecycle/blob/master/README.md|Lifecycle API - * for Web Pages} + * the FROZEN state as described in `Lifecycle API for Web Pages + * `_. * * @param {WindowProxy} context - Browsing context in which * to run the call, or null for the current @@ -211,27 +253,76 @@ return window.test_driver_internal.freeze(); }, + /** + * Minimizes the browser window. + * + * Matches the the behaviour of the `Minimize + * `_ + * WebDriver command + * + * @param {WindowProxy} context - Browsing context in which + * to run the call, or null for the current + * browsing context. + * + * @returns {Promise} fulfilled with the previous {@link + * https://www.w3.org/TR/webdriver/#dfn-windowrect-object|WindowRect} + * value, after the window is minimized. + */ + minimize_window: function(context=null) { + return window.test_driver_internal.minimize_window(context); + }, + + /** + * Restore the window from minimized/maximized state to a given rect. + * + * Matches the behaviour of the `Set Window Rect + * `_ + * WebDriver command + * + * @param {Object} rect - A {@link + * https://www.w3.org/TR/webdriver/#dfn-windowrect-object|WindowRect} + * @param {WindowProxy} context - Browsing context in which + * to run the call, or null for the current + * browsing context. + * + * @returns {Promise} fulfilled after the window is restored to the given rect. + */ + set_window_rect: function(rect, context=null) { + return window.test_driver_internal.set_window_rect(rect, context); + }, + /** * Send a sequence of actions * - * This function sends a sequence of actions - * to perform. It is modeled after the behaviour of {@link - * https://w3c.github.io/webdriver/#actions|WebDriver Actions Command} - * - * @param {Array} actions - an array of actions. The format is the same as the actions - * property of the WebDriver command {@link - * https://w3c.github.io/webdriver/#perform-actions|Perform - * Actions} command. Each element is an object representing an - * input source and each input source itself has an actions - * property detailing the behaviour of that source at each timestep - * (or tick). Authors are not expected to construct the actions - * sequence by hand, but to use the builder api provided in - * testdriver-actions.js + * This function sends a sequence of actions to perform. + * + * Matches the behaviour of the `Actions + * `_ feature in + * WebDriver. + * + * Authors are encouraged to use the + * :js:class:`test_driver.Actions` builder rather than + * invoking this API directly. + * + * @param {Array} actions - an array of actions. The format is + * the same as the actions property + * of the `Perform Actions + * `_ + * WebDriver command. Each element is + * an object representing an input + * source and each input source + * itself has an actions property + * detailing the behaviour of that + * source at each timestep (or + * tick). Authors are not expected to + * construct the actions sequence by + * hand, but to use the builder api + * provided in testdriver-actions.js * @param {WindowProxy} context - Browsing context in which * to run the call, or null for the current * browsing context. * - * @returns {Promise} fufiled after the actions are performed, or rejected in + * @returns {Promise} fulfilled after the actions are performed, or rejected in * the cases the WebDriver command errors */ action_sequence: function(actions, context=null) { @@ -241,9 +332,12 @@ /** * Generates a test report on the current page * - * The generate_test_report function generates a report (to be observed - * by ReportingObserver) for testing purposes, as described in - * {@link https://w3c.github.io/reporting/#generate-test-report-command} + * The generate_test_report function generates a report (to be + * observed by ReportingObserver) for testing purposes. + * + * Matches the `Generate Test Report + * `_ + * WebDriver command. * * @param {WindowProxy} context - Browsing context in which * to run the call, or null for the current @@ -259,21 +353,25 @@ /** * Sets the state of a permission * - * This function simulates a user setting a permission into a particular state as described - * in {@link https://w3c.github.io/permissions/#set-permission-command} + * This function simulates a user setting a permission into a + * particular state. + * + * Matches the `Set Permission + * `_ + * WebDriver command. + * + * @example + * await test_driver.set_permission({ name: "background-fetch" }, "denied"); + * await test_driver.set_permission({ name: "push", userVisibleOnly: true }, "granted", true); * - * @param {Object} descriptor - a [PermissionDescriptor]{@link - * https://w3c.github.io/permissions/#dictdef-permissiondescriptor} + * @param {Object} descriptor - a `PermissionDescriptor + * `_ * object * @param {String} state - the state of the permission * @param {boolean} one_realm - Optional. Whether the permission applies to only one realm * @param {WindowProxy} context - Browsing context in which * to run the call, or null for the current * browsing context. - * - * The above params are used to create a [PermissionSetParameters]{@link - * https://w3c.github.io/permissions/#dictdef-permissionsetparameters} object - * * @returns {Promise} fulfilled after the permission is set, or rejected if setting the * permission fails */ @@ -289,12 +387,15 @@ /** * Creates a virtual authenticator * - * This function creates a virtual authenticator for use with the U2F - * and WebAuthn APIs as described in {@link - * https://w3c.github.io/webauthn/#sctn-automation-add-virtual-authenticator} + * This function creates a virtual authenticator for use with + * the U2F and WebAuthn APIs. * - * @param {Object} config - an [Authenticator Configuration]{@link - * https://w3c.github.io/webauthn/#authenticator-configuration} + * Matches the `Add Virtual Authenticator + * `_ + * WebDriver command. + * + * @param {Object} config - an `Authenticator Configuration + * `_ * object * @param {WindowProxy} context - Browsing context in which * to run the call, or null for the current @@ -311,9 +412,12 @@ /** * Removes a virtual authenticator * - * This function removes a virtual authenticator that has been created - * by add_virtual_authenticator - * https://w3c.github.io/webauthn/#sctn-automation-remove-virtual-authenticator + * This function removes a virtual authenticator that has been + * created by :js:func:`add_virtual_authenticator`. + * + * Matches the `Remove Virtual Authenticator + * `_ + * WebDriver command. * * @param {String} authenticator_id - the ID of the authenticator to be * removed. @@ -332,11 +436,13 @@ /** * Adds a credential to a virtual authenticator * - * https://w3c.github.io/webauthn/#sctn-automation-add-credential + * Matches the `Add Credential + * `_ + * WebDriver command. * * @param {String} authenticator_id - the ID of the authenticator - * @param {Object} credential - A [Credential Parameters]{@link - * https://w3c.github.io/webauthn/#credential-parameters} + * @param {Object} credential - A `Credential Parameters + * `_ * object * @param {WindowProxy} context - Browsing context in which * to run the call, or null for the current @@ -356,18 +462,21 @@ * This function retrieves all the credentials (added via the U2F API, * WebAuthn, or the add_credential function) stored in a virtual * authenticator - * https://w3c.github.io/webauthn/#sctn-automation-get-credentials + * + * Matches the `Get Credentials + * `_ + * WebDriver command. * * @param {String} authenticator_id - the ID of the authenticator * @param {WindowProxy} context - Browsing context in which * to run the call, or null for the current * browsing context. * - * @returns {Promise} fulfilled after the credentials are returned, or - * rejected in the cases the WebDriver command - * errors. Returns an array of [Credential - * Parameters]{@link - * https://w3c.github.io/webauthn/#credential-parameters} + * @returns {Promise} fulfilled after the credentials are + * returned, or rejected in the cases the + * WebDriver command errors. Returns an + * array of `Credential Parameters + * `_ */ get_credentials: function(authenticator_id, context=null) { return window.test_driver_internal.get_credentials(authenticator_id, context=null); @@ -376,7 +485,9 @@ /** * Remove a credential stored in an authenticator * - * https://w3c.github.io/webauthn/#sctn-automation-remove-credential + * Matches the `Remove Credential + * `_ + * WebDriver command. * * @param {String} authenticator_id - the ID of the authenticator * @param {String} credential_id - the ID of the credential @@ -395,7 +506,9 @@ /** * Removes all the credentials stored in a virtual authenticator * - * https://w3c.github.io/webauthn/#sctn-automation-remove-all-credentials + * Matches the `Remove All Credentials + * `_ + * WebDriver command. * * @param {String} authenticator_id - the ID of the authenticator * @param {WindowProxy} context - Browsing context in which @@ -415,7 +528,10 @@ * * Sets whether requests requiring user verification will succeed or * fail on a given virtual authenticator - * https://w3c.github.io/webauthn/#sctn-automation-set-user-verified + * + * Matches the `Set User Verified + * `_ + * WebDriver command. * * @param {String} authenticator_id - the ID of the authenticator * @param {boolean} uv - the User Verified flag @@ -431,7 +547,9 @@ * Sets the storage access rule for an origin when embedded * in a third-party context. * - * {@link https://privacycg.github.io/storage-access/#set-storage-access-command} + * Matches the `Set Storage Access + * `_ + * WebDriver command. * * @param {String} origin - A third-party origin to block or allow. * May be "*" to indicate all origins. @@ -455,6 +573,45 @@ const blocked = state === "blocked"; return window.test_driver_internal.set_storage_access(origin, embedding_origin, blocked, context); }, + + /** + * Sets the current transaction automation mode for Secure Payment + * Confirmation. + * + * This function places `Secure Payment + * Confirmation `_ into + * an automated 'autoaccept' or 'autoreject' mode, to allow testing + * without user interaction with the transaction UX prompt. + * + * Matches the `Set SPC Transaction Mode + * `_ + * WebDriver command. + * + * @example + * await test_driver.set_spc_transaction_mode("autoaccept"); + * test.add_cleanup(() => { + * return test_driver.set_spc_transaction_mode("none"); + * }); + * + * // Assumption: `request` is a PaymentRequest with a secure-payment-confirmation + * // payment method. + * const response = await request.show(); + * + * @param {String} mode - The `transaction mode + * `_ + * to set. Must be one of "``none``", + * "``autoaccept``", or + * "``autoreject``". + * @param {WindowProxy} context - Browsing context in which + * to run the call, or null for the current + * browsing context. + * + * @returns {Promise} Fulfilled after the transaction mode has been set, + * or rejected if setting the mode fails. + */ + set_spc_transaction_mode: function(mode, context=null) { + return window.test_driver_internal.set_spc_transaction_mode(mode, context); + }, }; window.test_driver_internal = { @@ -516,6 +673,14 @@ return Promise.reject(new Error("unimplemented")); }, + minimize_window: function(context=null) { + return Promise.reject(new Error("unimplemented")); + }, + + set_window_rect: function(rect, context=null) { + return Promise.reject(new Error("unimplemented")); + }, + action_sequence: function(actions, context=null) { return Promise.reject(new Error("unimplemented")); }, @@ -560,5 +725,10 @@ set_storage_access: function(origin, embedding_origin, blocked, context=null) { return Promise.reject(new Error("unimplemented")); }, + + set_spc_transaction_mode: function(mode, context=null) { + return Promise.reject(new Error("unimplemented")); + }, + }; })(); diff --git a/test/fixtures/wpt/resources/testharness.js b/test/fixtures/wpt/resources/testharness.js index f85b19fd9bd90c..bfb5cc087775da 100644 --- a/test/fixtures/wpt/resources/testharness.js +++ b/test/fixtures/wpt/resources/testharness.js @@ -126,7 +126,7 @@ } catch (e) {} } } - if (supports_post_message(w) && w !== self) { + if (w !== self) { w.postMessage(message_arg, "*"); } }); @@ -424,6 +424,53 @@ } }; + /* + * Shadow realms. + * https://github.com/tc39/proposal-shadowrealm + * + * This class is used as the test_environment when testharness is running + * inside a shadow realm. + */ + function ShadowRealmTestEnvironment() { + WorkerTestEnvironment.call(this); + this.all_loaded = false; + this.on_loaded_callback = null; + } + + ShadowRealmTestEnvironment.prototype = Object.create(WorkerTestEnvironment.prototype); + + /** + * Signal to the test environment that the tests are ready and the on-loaded + * callback should be run. + * + * Shadow realms are not *really* a DOM context: they have no `onload` or similar + * event for us to use to set up the test environment; so, instead, this method + * is manually triggered from the incubating realm + * + * @param {Function} message_destination - a function that receives JSON-serializable + * data to send to the incubating realm, in the same format as used by RemoteContext + */ + ShadowRealmTestEnvironment.prototype.begin = function(message_destination) { + if (this.all_loaded) { + throw new Error("Tried to start a shadow realm test environment after it has already started"); + } + var fakeMessagePort = {}; + fakeMessagePort.postMessage = message_destination; + this._add_message_port(fakeMessagePort); + this.all_loaded = true; + if (this.on_loaded_callback) { + this.on_loaded_callback(); + } + }; + + ShadowRealmTestEnvironment.prototype.add_on_loaded_callback = function(callback) { + if (this.all_loaded) { + callback(); + } else { + this.on_loaded_callback = callback; + } + }; + /* * JavaScript shells. * @@ -488,6 +535,15 @@ global_scope instanceof WorkerGlobalScope) { return new DedicatedWorkerTestEnvironment(); } + /* Shadow realm global objects are _ordinary_ objects (i.e. their prototype is + * Object) so we don't have a nice `instanceof` test to use; instead, we + * check if the there is a GLOBAL.isShadowRealm() property + * on the global object. that was set by the test harness when it + * created the ShadowRealm. + */ + if (global_scope.GLOBAL && global_scope.GLOBAL.isShadowRealm()) { + return new ShadowRealmTestEnvironment(); + } return new ShellTestEnvironment(); } @@ -542,8 +598,23 @@ return test_environment.next_default_test_name(); } - /* - * API functions + /** + * @callback TestFunction + * @param {Test} test - The test currnetly being run. + * @param {Any[]} args - Additional args to pass to function. + * + */ + + /** + * Create a synchronous test + * + * @param {TestFunction} func - Test function. This is executed + * immediately. If it returns without error, the test status is + * set to ``PASS``. If it throws an :js:class:`AssertionError`, or + * any other exception, the test status is set to ``FAIL`` + * (typically from an `assert` function). + * @param {String} name - Test name. This must be unique in a + * given file and must be invariant between runs. */ function test(func, name, properties) { @@ -576,6 +647,17 @@ } } + /** + * Create an asynchronous test + * + * @param {TestFunction|string} funcOrName - Initial step function + * to call immediately with the test name as an argument (if any), + * or name of the test. + * @param {String} name - Test name (if a test function was + * provided). This must be unique in a given file and must be + * invariant between runs. + * @returns {Test} An object representing the ongoing test. + */ function async_test(func, name, properties) { if (tests.promise_setup_called) { @@ -619,6 +701,19 @@ return test_obj; } + /** + * Create a promise test. + * + * Promise tests are tests which are represented by a promise + * object. If the promise is fulfilled the test passes, if it's + * rejected the test fails, otherwise the test passes. + * + * @param {TestFunction} func - Test function. This must return a + * promise. The test is automatically marked as complete once the + * promise settles. + * @param {String} name - Test name. This must be unique in a + * given file and must be invariant between runs. + */ function promise_test(func, name, properties) { if (typeof func !== "function") { properties = name; @@ -678,11 +773,12 @@ * realm * @returns {Promise} * - * An arbitrary promise provided by the caller may have originated in - * another frame that have since navigated away, rendering the frame's - * document inactive. Such a promise cannot be used with `await` or - * Promise.resolve(), as microtasks associated with it may be prevented - * from being run. See https://github.com/whatwg/html/issues/5319 for a + * An arbitrary promise provided by the caller may have originated + * in another frame that have since navigated away, rendering the + * frame's document inactive. Such a promise cannot be used with + * `await` or Promise.resolve(), as microtasks associated with it + * may be prevented from being run. See `issue + * 5319`_ for a * particular case. * * In functions we define here, there is an expectation from the caller @@ -695,6 +791,16 @@ return new Promise(promise.then.bind(promise)); } + /** + * Assert that a Promise is rejected with the right ECMAScript exception. + * + * @param {Test} test - the `Test` to use for the assertion. + * @param {Function} constructor - The expected exception constructor. + * @param {Promise} promise - The promise that's expected to + * reject with the given exception. + * @param {string} [description] Error message to add to assert in case of + * failure. + */ function promise_rejects_js(test, constructor, promise, description) { return bring_promise_to_current_realm(promise) .then(test.unreached_func("Should have rejected: " + description)) @@ -707,9 +813,6 @@ /** * Assert that a Promise is rejected with the right DOMException. * - * @param test the test argument passed to promise_test - * @param {number|string} type. See documentation for assert_throws_dom. - * * For the remaining arguments, there are two ways of calling * promise_rejects_dom: * @@ -721,8 +824,22 @@ * third argument should be the DOMException constructor from that global, * the fourth argument the promise expected to reject, and the fifth, * optional, argument the assertion description. + * + * @param {Test} test - the `Test` to use for the assertion. + * @param {number|string} type - See documentation for + * `assert_throws_dom <#assert_throws_dom>`_. + * @param {Function} promiseOrConstructor - Either the constructor + * for the expected exception (if the exception comes from another + * global), or the promise that's expected to reject (if the + * exception comes from the current global). + * @param {Function|string} descriptionOrPromise - Either the + * promise that's expected to reject (if the exception comes from + * another global), or the optional description of the condition + * being tested (if the exception comes from the current global). + * @param {string} [description] - Description of the condition + * being tested (if the exception comes from another global). + * */ - function promise_rejects_dom(test, type, promiseOrConstructor, descriptionOrPromise, maybeDescription) { let constructor, promise, description; if (typeof promiseOrConstructor === "function" && @@ -745,6 +862,16 @@ }); } + /** + * Assert that a Promise is rejected with the provided value. + * + * @param {Test} test - the `Test` to use for the assertion. + * @param {Any} exception - The expected value of the rejected promise. + * @param {Promise} promise - The promise that's expected to + * reject. + * @param {string} [description] Error message to add to assert in case of + * failure. + */ function promise_rejects_exactly(test, exception, promise, description) { return bring_promise_to_current_realm(promise) .then(test.unreached_func("Should have rejected: " + description)) @@ -755,9 +882,23 @@ } /** - * This constructor helper allows DOM events to be handled using Promises, - * which can make it a lot easier to test a very specific series of events, + * Allow DOM events to be handled using Promises. + * + * This can make it a lot easier to test a very specific series of events, * including ensuring that unexpected events are not fired at any point. + * + * `EventWatcher` will assert if an event occurs while there is no `wait_for` + * created Promise waiting to be fulfilled, or if the event is of a different type + * to the type currently expected. This ensures that only the events that are + * expected occur, in the correct order, and with the correct timing. + * + * @constructor + * @param {Test} test - The `Test` to use for the assertion. + * @param {EventTarget} watchedNode - The target expected to receive the events. + * @param {string[]} eventTypes - List of events to watch for. + * @param {Promise} timeoutPromise - Promise that will cause the + * test to be set to `TIMEOUT` once fulfilled. + * */ function EventWatcher(test, watchedNode, eventTypes, timeoutPromise) { @@ -806,15 +947,13 @@ * Returns a Promise that will resolve after the specified event or * series of events has occurred. * - * @param options An optional options object. If the 'record' property - * on this object has the value 'all', when the Promise - * returned by this function is resolved, *all* Event - * objects that were waited for will be returned as an - * array. + * @param {Object} options An optional options object. If the 'record' property + * on this object has the value 'all', when the Promise + * returned by this function is resolved, *all* Event + * objects that were waited for will be returned as an + * array. * - * For example, - * - * ```js + * @example * const watcher = new EventWatcher(t, div, [ 'animationstart', * 'animationiteration', * 'animationend' ]); @@ -823,7 +962,6 @@ * assert_equals(evts[0].elapsedTime, 0.0); * assert_equals(evts[1].elapsedTime, 2.0); * }); - * ``` */ this.wait_for = function(types, options) { if (waitingFor) { @@ -865,6 +1003,9 @@ }); }; + /** + * Stop listening for events + */ function stop_watching() { for (var i = 0; i < eventTypes.length; i++) { watchedNode.removeEventListener(eventTypes[i], eventHandler, false); @@ -877,6 +1018,46 @@ } expose(EventWatcher, 'EventWatcher'); + /** + * @typedef {Object} SettingsObject + * @property {bool} single_test - Use the single-page-test + * mode. In this mode the Document represents a single + * `async_test`. Asserts may be used directly without requiring + * `Test.step` or similar wrappers, and any exceptions set the + * status of the test rather than the status of the harness. + * @property {bool} allow_uncaught_exception - don't treat an + * uncaught exception as an error; needed when e.g. testing the + * `window.onerror` handler. + * @property {boolean} explicit_done - Wait for a call to `done()` + * before declaring all tests complete (this is always true for + * single-page tests). + * @property hide_test_state - hide the test state output while + * the test is running; This is helpful when the output of the test state + * may interfere the test results. + * @property {bool} explicit_timeout - disable file timeout; only + * stop waiting for results when the `timeout()` function is + * called This should typically only be set for manual tests, or + * by a test runner that providees its own timeout mechanism. + * @property {number} timeout_multiplier - Multiplier to apply to + * per-test timeouts. This should only be set by a test runner. + * @property {Document} output_document - The document to which + * results should be logged. By default this is the current + * document but could be an ancestor document in some cases e.g. a + * SVG test loaded in an HTML wrapper + * + */ + + /** + * Configure the harness + * + * @param {Function|SettingsObject} funcOrProperties - Either a + * setup function to run, or a set of properties. If this is a + * function that function is run synchronously. Any exception in + * the function will set the overall harness status to `ERROR`. + * @param {SettingsObject} maybeProperties - An object containing + * the settings to use, if the first argument is a function. + * + */ function setup(func_or_properties, maybe_properties) { var func = null; @@ -893,7 +1074,18 @@ test_environment.on_new_harness_properties(properties); } - function promise_setup(func, maybe_properties) + /** + * Configure the harness, waiting for a promise to resolve + * before running any `promise_test` tests. + * + * @param {Function} func - Function returning a promise that's + * run synchronously. Promise tests are not run until after this + * function has resolved. + * @param {SettingsObject} [properties] - An object containing + * the harness settings to use. + * + */ + function promise_setup(func, properties={}) { if (typeof func !== "function") { tests.set_status(tests.status.ERROR, @@ -910,7 +1102,6 @@ tests.promise_tests = tests.promise_tests .then(function() { - var properties = maybe_properties || {}; var result; tests.setup(null, properties); @@ -931,6 +1122,17 @@ }); } + /** + * Mark test loading as complete. + * + * Typically this function is called implicitly on page load; it's + * only necessary for users to call this when either the + * ``explict_done`` or ``single_page`` properties have been set + * via the :js:func:`setup` function. + * + * For single page tests this marks the test as complete and sets its status. + * For other tests, this marks test loading as complete, but doesn't affect ongoing tests. + */ function done() { if (tests.tests.length === 0) { // `done` is invoked after handling uncaught exceptions, so if the @@ -952,6 +1154,20 @@ tests.end_wait(); } + /** + * @deprecated generate a list of tests from a function and list of arguments + * + * This is deprecated because it runs all the tests outside of the test functions + * and as a result any test throwing an exception will result in no tests being + * run. In almost all cases, you should simply call test within the loop you would + * use to generate the parameter list array. + * + * @param {Function} func - The function that will be called for each generated tests. + * @param {Any[][]} args - An array of arrays. Each nested array + * has the structure `[testName, ...testArgs]`. For each of these nested arrays + * array, a test is generated with name `testName` and test function equivalent to + * `func(..testArgs)`. + */ function generate_tests(func, args, properties) { forEach(args, function(x, i) { @@ -965,23 +1181,35 @@ }); } - /* - * Register a function as a DOM event listener to the given object for the - * event bubbling phase. + /** + * @deprecated + * + * Register a function as a DOM event listener to the + * given object for the event bubbling phase. * - * This function was deprecated in November of 2019. + * @param {EventTarget} object - Event target + * @param {string} event - Event name + * @param {Function} callback - Event handler. */ function on_event(object, event, callback) { object.addEventListener(event, callback, false); } - function step_timeout(f, t) { + /** + * Global version of :js:func:`Test.step_timeout` for use in single page tests. + * + * @param {Function} func - Function to run after the timeout + * @param {number} timeout - Time in ms to wait before running the + * test step. The actual wait time is ``timeout`` x + * ``timeout_multiplier``. + */ + function step_timeout(func, timeout) { var outer_this = this; var args = Array.prototype.slice.call(arguments, 2); return setTimeout(function() { - f.apply(outer_this, args); - }, t * tests.timeout_multiplier); + func.apply(outer_this, args); + }, timeout * tests.timeout_multiplier); } expose(test, 'test'); @@ -1079,8 +1307,30 @@ "0xffff": "uffff", }; - /* + /** * Convert a value to a nice, human-readable string + * + * When many JavaScript Object values are coerced to a String, the + * resulting value will be ``"[object Object]"``. This obscures + * helpful information, making the coerced value unsuitable for + * use in assertion messages, test names, and debugging + * statements. `format_value` produces more distinctive string + * representations of many kinds of objects, including arrays and + * the more important DOM Node types. It also translates String + * values containing control characters to include human-readable + * representations. + * + * @example + * // "Document node with 2 children" + * format_value(document); + * @example + * // "\"foo\\uffffbar\"" + * format_value("foo\uffffbar"); + * @example + * // "[-0, Infinity]" + * format_value([-0, Infinity]); + * @param {Any} val - The value to convert to a string. + * @returns {string} - A string representation of ``val``, optimised for human readability. */ function format_value(val, seen) { @@ -1187,12 +1437,8 @@ status = Test.statuses.PASS; return rv; } catch(e) { - if (e instanceof AssertionError) { - status = Test.statuses.FAIL; - stack = e.stack; - } else { - status = Test.statuses.ERROR; - } + status = Test.statuses.FAIL; + stack = e.stack ? e.stack : null; throw e; } finally { if (tests.output && !stack) { @@ -1206,6 +1452,12 @@ expose(assert_wrapper, name); } + /** + * Assert that ``actual`` is strictly true + * + * @param {Any} actual - Value that is asserted to be true + * @param {string} [description] - Description of the condition being tested + */ function assert_true(actual, description) { assert(actual === true, "assert_true", description, @@ -1213,6 +1465,12 @@ } expose_assert(assert_true, "assert_true"); + /** + * Assert that ``actual`` is strictly false + * + * @param {Any} actual - Value that is asserted to be false + * @param {string} [description] - Description of the condition being tested + */ function assert_false(actual, description) { assert(actual === false, "assert_false", description, @@ -1232,6 +1490,17 @@ return x === y; } + /** + * Assert that ``actual`` is the same value as ``expected``. + * + * For objects this compares by cobject identity; for primitives + * this distinguishes between 0 and -0, and has correct handling + * of NaN. + * + * @param {Any} actual - Test value. + * @param {Any} expected - Expected value. + * @param {string} [description] - Description of the condition being tested. + */ function assert_equals(actual, expected, description) { /* @@ -1250,18 +1519,32 @@ } expose_assert(assert_equals, "assert_equals"); + /** + * Assert that ``actual`` is not the same value as ``expected``. + * + * Comparison is as for :js:func:`assert_equals`. + * + * @param {Any} actual - Test value. + * @param {Any} expected - The value ``actual`` is expected to be different to. + * @param {string} [description] - Description of the condition being tested. + */ function assert_not_equals(actual, expected, description) { - /* - * Test if two primitives are unequal or two objects - * are different objects - */ assert(!same_value(actual, expected), "assert_not_equals", description, "got disallowed value ${actual}", {actual:actual}); } expose_assert(assert_not_equals, "assert_not_equals"); + /** + * Assert that ``expected`` is an array and ``actual`` is one of the members. + * This is implemented using ``indexOf``, so doesn't handle NaN or ±0 correctly. + * + * @param {Any} actual - Test value. + * @param {Array} expected - An array that ``actual`` is expected to + * be a member of. + * @param {string} [description] - Description of the condition being tested. + */ function assert_in_array(actual, expected, description) { assert(expected.indexOf(actual) != -1, "assert_in_array", description, @@ -1272,6 +1555,18 @@ // This function was deprecated in July of 2015. // See https://github.com/web-platform-tests/wpt/issues/2033 + /** + * @deprecated + * Recursively compare two objects for equality. + * + * See `Issue 2033 + * `_ for + * more information. + * + * @param {Object} actual - Test value. + * @param {Object} expected - Expected value. + * @param {string} [description] - Description of the condition being tested. + */ function assert_object_equals(actual, expected, description) { assert(typeof actual === "object" && actual !== null, "assert_object_equals", description, @@ -1308,6 +1603,14 @@ } expose_assert(assert_object_equals, "assert_object_equals"); + /** + * Assert that ``actual`` and ``expected`` are both arrays, and that the array properties of + * ``actual`` and ``expected`` are all the same value (as for :js:func:`assert_equals`). + * + * @param {Array} actual - Test array. + * @param {Array} expected - Array that is expected to contain the same values as ``actual``. + * @param {string} [description] - Description of the condition being tested. + */ function assert_array_equals(actual, expected, description) { const max_array_length = 20; @@ -1365,6 +1668,16 @@ } expose_assert(assert_array_equals, "assert_array_equals"); + /** + * Assert that each array property in ``actual`` is a number within + * ± `epsilon` of the corresponding property in `expected`. + * + * @param {Array} actual - Array of test values. + * @param {Array} expected - Array of values expected to be close to the values in ``actual``. + * @param {number} epsilon - Magnitude of allowed difference + * between each value in ``actual`` and ``expected``. + * @param {string} [description] - Description of the condition being tested. + */ function assert_array_approx_equals(actual, expected, epsilon, description) { /* @@ -1393,6 +1706,14 @@ } expose_assert(assert_array_approx_equals, "assert_array_approx_equals"); + /** + * Assert that ``actual`` is within ± ``epsilon`` of ``expected``. + * + * @param {number} actual - Test value. + * @param {number} expected - Value number is expected to be close to. + * @param {number} epsilon - Magnitude of allowed difference between ``actual`` and ``expected``. + * @param {string} [description] - Description of the condition being tested. + */ function assert_approx_equals(actual, expected, epsilon, description) { /* @@ -1416,6 +1737,13 @@ } expose_assert(assert_approx_equals, "assert_approx_equals"); + /** + * Assert that ``actual`` is a number less than ``expected``. + * + * @param {number} actual - Test value. + * @param {number} expected - Number that ``actual`` must be less than. + * @param {string} [description] - Description of the condition being tested. + */ function assert_less_than(actual, expected, description) { /* @@ -1433,6 +1761,13 @@ } expose_assert(assert_less_than, "assert_less_than"); + /** + * Assert that ``actual`` is a number greater than ``expected``. + * + * @param {number} actual - Test value. + * @param {number} expected - Number that ``actual`` must be greater than. + * @param {string} [description] - Description of the condition being tested. + */ function assert_greater_than(actual, expected, description) { /* @@ -1450,6 +1785,15 @@ } expose_assert(assert_greater_than, "assert_greater_than"); + /** + * Assert that ``actual`` is a number greater than ``lower`` and less + * than ``upper`` but not equal to either. + * + * @param {number} actual - Test value. + * @param {number} lower - Number that ``actual`` must be greater than. + * @param {number} upper - Number that ``actual`` must be less than. + * @param {string} [description] - Description of the condition being tested. + */ function assert_between_exclusive(actual, lower, upper, description) { /* @@ -1468,6 +1812,14 @@ } expose_assert(assert_between_exclusive, "assert_between_exclusive"); + /** + * Assert that ``actual`` is a number less than or equal to ``expected``. + * + * @param {number} actual - Test value. + * @param {number} expected - Number that ``actual`` must be less + * than or equal to. + * @param {string} [description] - Description of the condition being tested. + */ function assert_less_than_equal(actual, expected, description) { /* @@ -1485,6 +1837,14 @@ } expose_assert(assert_less_than_equal, "assert_less_than_equal"); + /** + * Assert that ``actual`` is a number greater than or equal to ``expected``. + * + * @param {number} actual - Test value. + * @param {number} expected - Number that ``actual`` must be greater + * than or equal to. + * @param {string} [description] - Description of the condition being tested. + */ function assert_greater_than_equal(actual, expected, description) { /* @@ -1502,6 +1862,15 @@ } expose_assert(assert_greater_than_equal, "assert_greater_than_equal"); + /** + * Assert that ``actual`` is a number greater than or equal to ``lower`` and less + * than or equal to ``upper``. + * + * @param {number} actual - Test value. + * @param {number} lower - Number that ``actual`` must be greater than or equal to. + * @param {number} upper - Number that ``actual`` must be less than or equal to. + * @param {string} [description] - Description of the condition being tested. + */ function assert_between_inclusive(actual, lower, upper, description) { /* @@ -1520,6 +1889,13 @@ } expose_assert(assert_between_inclusive, "assert_between_inclusive"); + /** + * Assert that ``actual`` matches the RegExp ``expected``. + * + * @param {String} actual - Test string. + * @param {RegExp} expected - RegExp ``actual`` must match. + * @param {string} [description] - Description of the condition being tested. + */ function assert_regexp_match(actual, expected, description) { /* * Test if a string (actual) matches a regexp (expected) @@ -1531,6 +1907,14 @@ } expose_assert(assert_regexp_match, "assert_regexp_match"); + /** + * Assert that the class string of ``object`` as returned in + * ``Object.prototype.toString`` is equal to ``class_name``. + * + * @param {Object} object - Object to stringify. + * @param {string} class_string - Expected class string for ``object``. + * @param {string} [description] - Description of the condition being tested. + */ function assert_class_string(object, class_string, description) { var actual = {}.toString.call(object); var expected = "[object " + class_string + "]"; @@ -1540,6 +1924,13 @@ } expose_assert(assert_class_string, "assert_class_string"); + /** + * Assert that ``object`` has an own property with name ``property_name``. + * + * @param {Object} object - Object that should have the given property. + * @param {string} property_name - Expected property name. + * @param {string} [description] - Description of the condition being tested. + */ function assert_own_property(object, property_name, description) { assert(object.hasOwnProperty(property_name), "assert_own_property", description, @@ -1547,6 +1938,13 @@ } expose_assert(assert_own_property, "assert_own_property"); + /** + * Assert that ``object`` does not have an own property with name ``property_name``. + * + * @param {Object} object - Object that should not have the given property. + * @param {string} property_name - Property name to test. + * @param {string} [description] - Description of the condition being tested. + */ function assert_not_own_property(object, property_name, description) { assert(!object.hasOwnProperty(property_name), "assert_not_own_property", description, @@ -1579,9 +1977,44 @@ {p:property_name}); }; } - expose_assert(_assert_inherits("assert_inherits"), "assert_inherits"); - expose_assert(_assert_inherits("assert_idl_attribute"), "assert_idl_attribute"); + /** + * Assert that ``object`` does not have an own property with name + * ``property_name``, but inherits one through the prototype chain. + * + * @param {Object} object - Object that should have the given property in its prototype chain. + * @param {string} property_name - Expected property name. + * @param {string} [description] - Description of the condition being tested. + */ + function assert_inherits(object, property_name, description) { + return _assert_inherits("assert_inherits")(object, property_name, description); + } + expose_assert(assert_inherits, "assert_inherits"); + + /** + * Alias for :js:func:`insert_inherits`. + * + * @param {Object} object - Object that should have the given property in its prototype chain. + * @param {string} property_name - Expected property name. + * @param {string} [description] - Description of the condition being tested. + */ + function assert_idl_attribute(object, property_name, description) { + return _assert_inherits("assert_idl_attribute")(object, property_name, description); + } + expose_assert(assert_idl_attribute, "assert_idl_attribute"); + + + /** + * Assert that ``object`` has a property named ``property_name`` and that the property is readonly. + * + * Note: The implementation tries to update the named property, so + * any side effects of updating will be triggered. Users are + * encouraged to instead inspect the property descriptor of ``property_name`` on ``object``. + * + * @param {Object} object - Object that should have the given property in its prototype chain. + * @param {string} property_name - Expected property name. + * @param {string} [description] - Description of the condition being tested. + */ function assert_readonly(object, property_name, description) { var initial_value = object[property_name]; @@ -1604,7 +2037,7 @@ * * @param {object} constructor The expected exception constructor. * @param {Function} func Function which should throw. - * @param {string} description Error description for the case that the error is not thrown. + * @param {string} [description] Error description for the case that the error is not thrown. */ function assert_throws_js(constructor, func, description) { @@ -1669,20 +2102,13 @@ } } + // TODO: Figure out how to document the overloads better. + // sphinx-js doesn't seem to handle @variation correctly, + // and only expects a single JSDoc entry per function. /** * Assert a DOMException with the expected type is thrown. * - * @param {number|string} type The expected exception name or code. See the - * table of names and codes at - * https://heycam.github.io/webidl/#dfn-error-names-table - * If a number is passed it should be one of the numeric code values - * in that table (e.g. 3, 4, etc). If a string is passed it can - * either be an exception name (e.g. "HierarchyRequestError", - * "WrongDocumentError") or the name of the corresponding error code - * (e.g. "HIERARCHY_REQUEST_ERR", "WRONG_DOCUMENT_ERR"). - * - * For the remaining arguments, there are two ways of calling - * promise_rejects_dom: + * There are two ways of calling assert_throws_dom: * * 1) If the DOMException is expected to come from the current global, the * second argument should be the function expected to throw and a third, @@ -1692,6 +2118,22 @@ * second argument should be the DOMException constructor from that global, * the third argument the function expected to throw, and the fourth, optional, * argument the assertion description. + * + * @param {number|string} type - The expected exception name or + * code. See the `table of names and codes + * `_. If a + * number is passed it should be one of the numeric code values in + * that table (e.g. 3, 4, etc). If a string is passed it can + * either be an exception name (e.g. "HierarchyRequestError", + * "WrongDocumentError") or the name of the corresponding error + * code (e.g. "``HIERARCHY_REQUEST_ERR``", "``WRONG_DOCUMENT_ERR``"). + * @param {Function} descriptionOrFunc - The function expected to + * throw (if the exception comes from another global), or the + * optional description of the condition being tested (if the + * exception comes from the current global). + * @param {string} [description] - Description of the condition + * being tested (if the exception comes from another global). + * */ function assert_throws_dom(type, funcOrConstructor, descriptionOrFunc, maybeDescription) { @@ -1865,7 +2307,7 @@ * * @param {value} exception The expected exception. * @param {Function} func Function which should throw. - * @param {string} description Error description for the case that the error is not thrown. + * @param {string} [description] Error description for the case that the error is not thrown. */ function assert_throws_exactly(exception, func, description) { @@ -1896,15 +2338,43 @@ } } + /** + * Asserts if called. Used to ensure that a specific codepath is + * not taken e.g. that an error event isn't fired. + * + * @param {string} [description] - Description of the condition being tested. + */ function assert_unreached(description) { assert(false, "assert_unreached", description, "Reached unreachable code"); } expose_assert(assert_unreached, "assert_unreached"); - function assert_any(assert_func, actual, expected_array) + /** + * @callback AssertFunc + * @param {Any} actual + * @param {Any} expected + * @param {Any[]} args + */ + + /** + * Asserts that ``actual`` matches at least one value of ``expected`` + * according to a comparison defined by ``assert_func``. + * + * Note that tests with multiple allowed pass conditions are bad + * practice unless the spec specifically allows multiple + * behaviours. Test authors should not use this method simply to + * hide UA bugs. + * + * @param {AssertFunc} assert_func - Function to compare actual + * and expected. It must throw when the comparison fails and + * return when the comparison passes. + * @param {Any} actual - Test value. + * @param {Array} expected_array - Array of possible expected values. + * @param {Any[]} args - Additional arguments to pass to ``assert_func``. + */ + function assert_any(assert_func, actual, expected_array, ...args) { - var args = [].slice.call(arguments, 3); var errors = []; var passed = false; forEach(expected_array, @@ -1936,7 +2406,7 @@ * assert_implements(window.Foo, 'Foo is not supported'); * * @param {object} condition The truthy value to test - * @param {string} description Error description for the case that the condition is not truthy. + * @param {string} [description] Error description for the case that the condition is not truthy. */ function assert_implements(condition, description) { assert(!!condition, "assert_implements", description); @@ -1954,25 +2424,37 @@ * "webm video playback not supported"); * * @param {object} condition The truthy value to test - * @param {string} description Error description for the case that the condition is not truthy. + * @param {string} [description] Error description for the case that the condition is not truthy. */ function assert_implements_optional(condition, description) { if (!condition) { throw new OptionalFeatureUnsupportedError(description); } } - expose_assert(assert_implements_optional, "assert_implements_optional") + expose_assert(assert_implements_optional, "assert_implements_optional"); + /** + * @class + * + * A single subtest. A Test is not constructed directly but via the + * :js:func:`test`, :js:func:`async_test` or :js:func:`promise_test` functions. + * + * @param {string} name - This must be unique in a given file and must be + * invariant between runs. + * + */ function Test(name, properties) { if (tests.file_is_test && tests.tests.length) { throw new Error("Tried to create a test with file_is_test"); } + /** The test name. */ this.name = name; this.phase = (tests.is_aborted || tests.phase === tests.phases.COMPLETE) ? this.phases.COMPLETE : this.phases.INITIAL; + /** The test status code.*/ this.status = this.NOTRUN; this.timeout_id = null; this.index = null; @@ -1983,7 +2465,9 @@ this.timeout_length *= tests.timeout_multiplier; } + /** A message indicating the reason for test failure. */ this.message = null; + /** Stack trace in case of failure. */ this.stack = null; this.steps = []; @@ -2003,6 +2487,16 @@ tests.push(this); } + /** + * Enum of possible test statuses. + * + * :values: + * - ``PASS`` + * - ``FAIL`` + * - ``TIMEOUT`` + * - ``NOTRUN`` + * - ``PRECONDITION_FAILED`` + */ Test.statuses = { PASS:0, FAIL:1, @@ -2052,6 +2546,15 @@ return this._structured_clone; }; + /** + * Run a single step of an ongoing test. + * + * @param {string} func - Callback function to run as a step. If + * this throws an :js:func:`AssertionError`, or any other + * exception, the :js:class:`Test` status is set to ``FAIL``. + * @param {Object} [this_obj] - The object to use as the this + * value when calling ``func``. Defaults to the :js:class:`Test` object. + */ Test.prototype.step = function(func, this_obj) { if (this.phase > this.phases.STARTED) { @@ -2101,6 +2604,26 @@ } }; + /** + * Wrap a function so that it runs as a step of the current test. + * + * This allows creating a callback function that will run as a + * test step. + * + * @example + * let t = async_test("Example"); + * onload = t.step_func(e => { + * assert_equals(e.name, "load"); + * // Mark the test as complete. + * t.done(); + * }) + * + * @param {string} func - Function to run as a step. If this + * throws an :js:func:`AssertionError`, or any other exception, + * the :js:class:`Test` status is set to ``FAIL``. + * @param {Object} [this_obj] - The object to use as the this + * value when calling ``func``. Defaults to the :js:class:`Test` object. + */ Test.prototype.step_func = function(func, this_obj) { var test_this = this; @@ -2116,6 +2639,18 @@ }; }; + /** + * Wrap a function so that it runs as a step of the current test, + * and automatically marks the test as complete if the function + * returns without error. + * + * @param {string} func - Function to run as a step. If this + * throws an :js:func:`AssertionError`, or any other exception, + * the :js:class:`Test` status is set to ``FAIL``. If it returns + * without error the status is set to ``PASS``. + * @param {Object} [this_obj] - The object to use as the this + * value when calling `func`. Defaults to the :js:class:`Test` object. + */ Test.prototype.step_func_done = function(func, this_obj) { var test_this = this; @@ -2134,6 +2669,14 @@ }; }; + /** + * Return a function that automatically sets the current test to + * ``FAIL`` if it's called. + * + * @param {string} [description] - Error message to add to assert + * in case of failure. + * + */ Test.prototype.unreached_func = function(description) { return this.step_func(function() { @@ -2141,37 +2684,68 @@ }); }; - Test.prototype.step_timeout = function(f, timeout) { + /** + * Run a function as a step of the test after a given timeout. + * + * This multiplies the timeout by the global timeout multiplier to + * account for the expected execution speed of the current test + * environment. For example ``test.step_timeout(f, 2000)`` with a + * timeout multiplier of 2 will wait for 4000ms before calling ``f``. + * + * In general it's encouraged to use :js:func:`Test.step_wait` or + * :js:func:`step_wait_func` in preference to this function where possible, + * as they provide better test performance. + * + * @param {Function} func - Function to run as a test + * step. + * @param {number} timeout - Time in ms to wait before running the + * test step. The actual wait time is ``timeout`` x + * ``timeout_multiplier``. + * + */ + Test.prototype.step_timeout = function(func, timeout) { var test_this = this; var args = Array.prototype.slice.call(arguments, 2); return setTimeout(this.step_func(function() { - return f.apply(test_this, args); + return func.apply(test_this, args); }), timeout * tests.timeout_multiplier); }; + /** + * Poll for a function to return true, and call a callback + * function once it does, or assert if a timeout is + * reached. This is preferred over a simple step_timeout + * whenever possible since it allows the timeout to be longer + * to reduce intermittents without compromising test execution + * speed when the condition is quickly met. + * + * @example + * async_test(t => { + * const popup = window.open("resources/coop-coep.py?coop=same-origin&coep=&navigate=about:blank"); + * t.add_cleanup(() => popup.close()); + * assert_equals(window, popup.opener); + * + * popup.onload = t.step_func(() => { + * assert_true(popup.location.href.endsWith("&navigate=about:blank")); + * // Use step_wait_func_done as about:blank cannot message back. + * t.step_wait_func_done(() => popup.location.href === "about:blank"); + * }); + * }, "Navigating a popup to about:blank"); + * + * @param {Function} cond A function taking no arguments and + * returning a boolean. The callback is called + * when this function returns true. + * @param {Function} func A function taking no arguments to call once + * the condition is met. + * @param {string} [description] Error message to add to assert in case of + * failure. + * @param {number} timeout Timeout in ms. This is multiplied by the global + * timeout_multiplier + * @param {number} interval Polling interval in ms + * + */ Test.prototype.step_wait_func = function(cond, func, description, timeout=3000, interval=100) { - /** - * Poll for a function to return true, and call a callback - * function once it does, or assert if a timeout is - * reached. This is preferred over a simple step_timeout - * whenever possible since it allows the timeout to be longer - * to reduce intermittents without compromising test execution - * speed when the condition is quickly met. - * - * @param {Function} cond A function taking no arguments and - * returning a boolean. The callback is called - * when this function returns true. - * @param {Function} func A function taking no arguments to call once - * the condition is met. - * @param {string} description Error message to add to assert in case of - * failure. - * @param {number} timeout Timeout in ms. This is multiplied by the global - * timeout_multiplier - * @param {number} interval Polling interval in ms - * - **/ - var timeout_full = timeout * tests.timeout_multiplier; var remaining = Math.ceil(timeout_full / interval); var test_this = this; @@ -2192,57 +2766,62 @@ wait_for_inner(); }; + /** + * Poll for a function to return true, and invoke a callback + * followed by this.done() once it does, or assert if a timeout + * is reached. This is preferred over a simple step_timeout + * whenever possible since it allows the timeout to be longer + * to reduce intermittents without compromising test execution speed + * when the condition is quickly met. + * + * @param {Function} cond A function taking no arguments and + * returning a boolean. The callback is called + * when this function returns true. + * @param {Function} func A function taking no arguments to call once + * the condition is met. + * @param {string} [description] Error message to add to assert in case of + * failure. + * @param {number} timeout Timeout in ms. This is multiplied by the global + * timeout_multiplier + * @param {number} interval Polling interval in ms + * + */ Test.prototype.step_wait_func_done = function(cond, func, description, timeout=3000, interval=100) { - /** - * Poll for a function to return true, and invoke a callback - * followed by this.done() once it does, or assert if a timeout - * is reached. This is preferred over a simple step_timeout - * whenever possible since it allows the timeout to be longer - * to reduce intermittents without compromising test execution speed - * when the condition is quickly met. - * - * @param {Function} cond A function taking no arguments and - * returning a boolean. The callback is called - * when this function returns true. - * @param {Function} func A function taking no arguments to call once - * the condition is met. - * @param {string} description Error message to add to assert in case of - * failure. - * @param {number} timeout Timeout in ms. This is multiplied by the global - * timeout_multiplier - * @param {number} interval Polling interval in ms - * - **/ - this.step_wait_func(cond, () => { if (func) { func(); } this.done(); }, description, timeout, interval); - } + }; + /** + * Poll for a function to return true, and resolve a promise + * once it does, or assert if a timeout is reached. This is + * preferred over a simple step_timeout whenever possible + * since it allows the timeout to be longer to reduce + * intermittents without compromising test execution speed + * when the condition is quickly met. + * + * @example + * promise_test(async t => { + * // … + * await t.step_wait(() => frame.contentDocument === null, "Frame navigated to a cross-origin document"); + * // … + * }, ""); + * + * @param {Function} cond A function taking no arguments and + * returning a boolean. + * @param {string} [description] Error message to add to assert in case of + * failure. + * @param {number} timeout Timeout in ms. This is multiplied by the global + * timeout_multiplier + * @param {number} interval Polling interval in ms + * @returns {Promise} Promise resolved once cond is met. + * + */ Test.prototype.step_wait = function(cond, description, timeout=3000, interval=100) { - /** - * Poll for a function to return true, and resolve a promise - * once it does, or assert if a timeout is reached. This is - * preferred over a simple step_timeout whenever possible - * since it allows the timeout to be longer to reduce - * intermittents without compromising test execution speed - * when the condition is quickly met. - * - * @param {Function} cond A function taking no arguments and - * returning a boolean. - * @param {string} description Error message to add to assert in case of - * failure. - * @param {number} timeout Timeout in ms. This is multiplied by the global - * timeout_multiplier - * @param {number} interval Polling interval in ms - * @returns {Promise} Promise resolved once cond is met. - * - **/ - return new Promise(resolve => { this.step_wait_func(cond, resolve, description, timeout, interval); }); @@ -2258,11 +2837,16 @@ this.cleanup_callbacks.push(callback); }; - /* + /** * Schedule a function to be run after the test result is known, regardless - * of passing or failing state. The behavior of this function will not + * of passing or failing state. + * + * The behavior of this function will not * influence the result of the test, but if an exception is thrown, the * test harness will report an error. + * + * @param {Function} callback - The cleanup function to run. This + * is called with no arguments. */ Test.prototype.add_cleanup = function(callback) { this._user_defined_cleanup_count += 1; @@ -2287,6 +2871,9 @@ this.stack = stack ? stack : null; }; + /** + * Manually set the test status to ``TIMEOUT``. + */ Test.prototype.timeout = function() { this.timeout_id = null; @@ -2295,11 +2882,24 @@ this.done(); }; - Test.prototype.force_timeout = Test.prototype.timeout; + /** + * Manually set the test status to ``TIMEOUT``. + * + * Alias for `Test.timeout <#Test.timeout>`_. + */ + Test.prototype.force_timeout = function() { + return this.timeout(); + }; /** - * Update the test status, initiate "cleanup" functions, and signal test - * completion. + * Mark the test as complete. + * + * This sets the test status to ``PASS`` if no other status was + * already recorded. Any subsequent attempts to run additional + * test steps will be ignored. + * + * After setting the test status any test cleanup functions will + * be run. */ Test.prototype.done = function() { @@ -2318,7 +2918,7 @@ if (settings.debug) { console.log("TEST DONE", this.status, - this.name,) + this.name); } this.cleanup(); @@ -2340,10 +2940,10 @@ * be cancelled. */ Test.prototype.cleanup = function() { - var error_count = 0; + var errors = []; var bad_value_count = 0; - function on_error() { - error_count += 1; + function on_error(e) { + errors.push(e); // Abort tests immediately so that tests declared within subsequent // cleanup functions are not run. tests.abort(); @@ -2360,7 +2960,7 @@ try { result = cleanup_callback(); } catch (e) { - on_error(); + on_error(e); return; } @@ -2375,7 +2975,7 @@ }); if (!this._is_promise_test) { - cleanup_done(this_obj, error_count, bad_value_count); + cleanup_done(this_obj, errors, bad_value_count); } else { all_async(results, function(result, done) { @@ -2388,12 +2988,12 @@ } }, function() { - cleanup_done(this_obj, error_count, bad_value_count); + cleanup_done(this_obj, errors, bad_value_count); }); } }; - /** + /* * Determine if the return value of a cleanup function is valid for a given * test. Any test may return the value `undefined`. Tests created with * `promise_test` may alternatively return "thenable" object values. @@ -2410,17 +3010,21 @@ return false; } - function cleanup_done(test, error_count, bad_value_count) { - if (error_count || bad_value_count) { + function cleanup_done(test, errors, bad_value_count) { + if (errors.length || bad_value_count) { var total = test._user_defined_cleanup_count; tests.status.status = tests.status.ERROR; + tests.status.stack = null; tests.status.message = "Test named '" + test.name + "' specified " + total + " 'cleanup' function" + (total > 1 ? "s" : ""); - if (error_count) { - tests.status.message += ", and " + error_count + " failed"; + if (errors.length) { + tests.status.message += ", and " + errors.length + " failed"; + tests.status.stack = ((typeof errors[0] === "object" && + errors[0].hasOwnProperty("stack")) ? + errors[0].stack : null); } if (bad_value_count) { @@ -2431,8 +3035,6 @@ } tests.status.message += "."; - - tests.status.stack = null; } test.phase = test.phases.COMPLETE; @@ -2444,7 +3046,7 @@ test._done_callbacks.length = 0; } - /* + /** * A RemoteTest object mirrors a Test object on a remote worker. The * associated RemoteWorker updates the RemoteTest object in response to * received events. In turn, the RemoteTest object replicates these events @@ -2629,7 +3231,7 @@ RemoteContext.prototype.remote_done = function(data) { if (tests.status.status === null && data.status.status !== data.status.OK) { - tests.set_status(data.status.status, data.status.message, data.status.sack); + tests.set_status(data.status.status, data.status.message, data.status.stack); } for (let assert of data.asserts) { @@ -2671,17 +3273,29 @@ complete: RemoteContext.prototype.remote_done }; - /* - * Harness + /** + * @class + * Status of the overall harness */ - function TestsStatus() { + /** The status code */ this.status = null; + /** Message in case of failure */ this.message = null; + /** Stack trace in case of an exception. */ this.stack = null; } + /** + * Enum of possible harness statuses. + * + * :values: + * - ``OK`` + * - ``ERROR`` + * - ``TIMEOUT`` + * - ``PRECONDITION_FAILED`` + */ TestsStatus.statuses = { OK:0, ERROR:1, @@ -2696,8 +3310,7 @@ 1: "Error", 2: "Timeout", 3: "Optional Feature Unsupported" - } - + }; TestsStatus.prototype.structured_clone = function() { @@ -2715,13 +3328,25 @@ TestsStatus.prototype.format_status = function() { return this.formats[this.status]; - } + }; + /** + * @class + * Record of an assert that ran. + * + * @param {Test} test - The test which ran the assert. + * @param {string} assert_name - The function name of the assert. + * @param {Any} args - The arguments passed to the assert function. + */ function AssertRecord(test, assert_name, args = []) { + /** Name of the assert that ran */ this.assert_name = assert_name; + /** Test that ran the assert */ this.test = test; // Avoid keeping complex objects alive + /** Stringification of the arguments that were passed to the assert function */ this.args = args.map(x => format_value(x).replace(/\n/g, " ")); + /** Status of the assert */ this.status = null; } @@ -2731,8 +3356,8 @@ test: this.test ? this.test.structured_clone() : null, args: this.args, status: this.status, - } - } + }; + }; function Tests() { @@ -2942,7 +3567,8 @@ }; Tests.prototype.all_done = function() { - return this.tests.length > 0 && test_environment.all_loaded && + return (this.tests.length > 0 || this.pending_remotes.length > 0) && + test_environment.all_loaded && (this.num_pending === 0 || this.is_aborted) && !this.wait_for_finish && !this.processing_callbacks && !this.pending_remotes.some(function(w) { return w.running; }); @@ -3178,6 +3804,14 @@ return remoteContext.done; }; + /** + * Get test results from a worker and include them in the current test. + * + * @param {Worker|SharedWorker|ServiceWorker|MessagePort} port - + * Either a worker object or a port connected to a worker which is + * running tests.. + * @returns {Promise} - A promise that's resolved once all the remote tests are complete. + */ function fetch_tests_from_worker(port) { return tests.fetch_tests_from_worker(port); } @@ -3191,11 +3825,68 @@ this.pending_remotes.push(this.create_remote_window(remote)); }; + /** + * Aggregate tests from separate windows or iframes + * into the current document as if they were all part of the same test file. + * + * The document of the second window (or iframe) should include + * ``testharness.js``, but not ``testharnessreport.js``, and use + * :js:func:`test`, :js:func:`async_test`, and :js:func:`promise_test` in + * the usual manner. + * + * @param {Window} window - The window to fetch tests from. + */ function fetch_tests_from_window(window) { tests.fetch_tests_from_window(window); } expose(fetch_tests_from_window, 'fetch_tests_from_window'); + /** + * Get test results from a shadow realm and include them in the current test. + * + * @param {ShadowRealm} realm - A shadow realm also running the test harness + * @returns {Promise} - A promise that's resolved once all the remote tests are complete. + */ + function fetch_tests_from_shadow_realm(realm) { + var chan = new MessageChannel(); + function receiveMessage(msg_json) { + chan.port1.postMessage(JSON.parse(msg_json)); + } + var done = tests.fetch_tests_from_worker(chan.port2); + realm.evaluate("begin_shadow_realm_tests")(receiveMessage); + chan.port2.start(); + return done; + } + expose(fetch_tests_from_shadow_realm, 'fetch_tests_from_shadow_realm'); + + /** + * Begin running tests in this shadow realm test harness. + * + * To be called after all tests have been loaded; it is an error to call + * this more than once or in a non-Shadow Realm environment + * + * @param {Function} postMessage - A function to send test updates to the + * incubating realm-- accepts JSON-encoded messages in the format used by + * RemoteContext + */ + function begin_shadow_realm_tests(postMessage) { + if (!(test_environment instanceof ShadowRealmTestEnvironment)) { + throw new Error("beign_shadow_realm_tests called in non-Shadow Realm environment"); + } + + test_environment.begin(function (msg) { + postMessage(JSON.stringify(msg)); + }); + } + expose(begin_shadow_realm_tests, 'begin_shadow_realm_tests'); + + /** + * Timeout the tests. + * + * This only has an effect when ``explict_timeout`` has been set + * in :js:func:`setup`. In other cases any call is a no-op. + * + */ function timeout() { if (tests.timeout_length === null) { tests.timeout(); @@ -3203,18 +3894,49 @@ } expose(timeout, 'timeout'); + /** + * Add a callback that's triggered when the first :js:class:`Test` is created. + * + * @param {Function} callback - Callback function. This is called + * without arguments. + */ function add_start_callback(callback) { tests.start_callbacks.push(callback); } + /** + * Add a callback that's triggered when a test state changes. + * + * @param {Function} callback - Callback function, called with the + * :js:class:`Test` as the only argument. + */ function add_test_state_callback(callback) { tests.test_state_callbacks.push(callback); } + /** + * Add a callback that's triggered when a test result is received. + * + * @param {Function} callback - Callback function, called with the + * :js:class:`Test` as the only argument. + */ function add_result_callback(callback) { tests.test_done_callbacks.push(callback); } + /** + * Add a callback that's triggered when all tests are complete. + * + * @param {Function} callback - Callback function, called with an + * array of :js:class:`Test` objects, a :js:class:`TestsStatus` + * object and an array of :js:class:`AssertRecord` objects. If the + * debug setting is ``false`` the final argument will be an empty + * array. + * + * For performance reasons asserts are only tracked when the debug + * setting is ``true``. In other cases the array of asserts will be + * empty. + */ function add_completion_callback(callback) { tests.all_done_callbacks.push(callback); } @@ -3336,7 +4058,7 @@ Output.prototype.show_status = function() { if (this.phase < this.STARTED) { - this.init(); + this.init({}); } if (!this.enabled || this.phase === this.COMPLETE) { return; @@ -3413,7 +4135,12 @@ ["span", {"class":status_class(status)}, status ], - ] + ], + ["button", + {"onclick": "let evt = new Event('__test_restart'); " + + "let canceled = !window.dispatchEvent(evt);" + + "if (!canceled) { location.reload() }"}, + "Rerun"] ]]; if (harness_status.status === harness_status.ERROR) { @@ -3764,6 +4491,12 @@ } } + /** + * @class + * Exception type that represents a failing assert. + * + * @param {string} message - Error message. + */ function AssertionError(message) { if (typeof message == "string") { @@ -3778,14 +4511,6 @@ const get_stack = function() { var stack = new Error().stack; - // IE11 does not initialize 'Error.stack' until the object is thrown. - if (!stack) { - try { - throw new Error(); - } catch (e) { - stack = e.stack; - } - } // 'Error.stack' is not supported in all browsers/versions if (!stack) { @@ -3888,21 +4613,23 @@ * invocations have signaled completion. * * If all callbacks complete synchronously (or if no callbacks are - * specified), the `done_callback` will be invoked synchronously. It is the + * specified), the ``done_callback`` will be invoked synchronously. It is the * responsibility of the caller to ensure asynchronicity in cases where * that is desired. * * @param {array} value Zero or more values to use in the invocation of - * `iter_callback` - * @param {function} iter_callback A function that will be invoked once for - * each of the provided `values`. Two - * arguments will be available in each - * invocation: the value from `values` and - * a function that must be invoked to - * signal completion + * ``iter_callback`` + * @param {function} iter_callback A function that will be invoked + * once for each of the values min + * ``value``. Two arguments will + * be available in each + * invocation: the value from + * ``value`` and a function that + * must be invoked to signal + * completion * @param {function} done_callback A function that will be invoked after * all operations initiated by the - * `iter_callback` function have signaled + * ``iter_callback`` function have signaled * completion */ function all_async(values, iter_callback, done_callback) @@ -4012,43 +4739,6 @@ return "Untitled"; } - function supports_post_message(w) - { - var supports; - var type; - // Given IE implements postMessage across nested iframes but not across - // windows or tabs, you can't infer cross-origin communication from the presence - // of postMessage on the current window object only. - // - // Touching the postMessage prop on a window can throw if the window is - // not from the same origin AND post message is not supported in that - // browser. So just doing an existence test here won't do, you also need - // to wrap it in a try..catch block. - try { - type = typeof w.postMessage; - if (type === "function") { - supports = true; - } - - // IE8 supports postMessage, but implements it as a host object which - // returns "object" as its `typeof`. - else if (type === "object") { - supports = true; - } - - // This is the case where postMessage isn't supported AND accessing a - // window property across origins does NOT throw (e.g. old Safari browser). - else { - supports = false; - } - } catch (e) { - // This is the case where postMessage isn't supported AND accessing a - // window property across origins throws (e.g. old Firefox browser). - supports = false; - } - return supports; - } - /** * Setup globals */ diff --git a/test/fixtures/wpt/resources/webidl2/build.sh b/test/fixtures/wpt/resources/webidl2/build.sh new file mode 100644 index 00000000000000..a631268224f842 --- /dev/null +++ b/test/fixtures/wpt/resources/webidl2/build.sh @@ -0,0 +1,12 @@ +set -ex + +if [ ! -d "webidl2.js" ]; then + git clone https://github.com/w3c/webidl2.js.git +fi +cd webidl2.js +npm install +npm run build-debug +HASH=$(git rev-parse HEAD) +cd .. +cp webidl2.js/dist/webidl2.js lib/ +echo "Currently using webidl2.js@${HASH}." > lib/VERSION.md diff --git a/test/fixtures/wpt/resources/webidl2/lib/README.md b/test/fixtures/wpt/resources/webidl2/lib/README.md index af0af3a902f2f3..1bd583269d2929 100644 --- a/test/fixtures/wpt/resources/webidl2/lib/README.md +++ b/test/fixtures/wpt/resources/webidl2/lib/README.md @@ -1,6 +1,4 @@ This directory contains a built version of the [webidl2.js library](https://github.com/w3c/webidl2.js). It is built by running `npm run build-debug` at the root of that repository. -Currently using webidl2.js@24.1.1 (372ea83eaa10f60adff49bd0f4f3ce6a11d6fbec). - The `webidl2.js.headers` file is a local addition to ensure the script is interpreted as UTF-8. diff --git a/test/fixtures/wpt/resources/webidl2/lib/VERSION.md b/test/fixtures/wpt/resources/webidl2/lib/VERSION.md new file mode 100644 index 00000000000000..10bdc008209a91 --- /dev/null +++ b/test/fixtures/wpt/resources/webidl2/lib/VERSION.md @@ -0,0 +1 @@ +Currently using webidl2.js@1fd6709ef9311f2ea0ed4ff0016ecf6f5d615104. diff --git a/test/fixtures/wpt/resources/webidl2/lib/webidl2.js b/test/fixtures/wpt/resources/webidl2/lib/webidl2.js index 322f0e11a6ae56..2861354e47da9b 100644 --- a/test/fixtures/wpt/resources/webidl2/lib/webidl2.js +++ b/test/fixtures/wpt/resources/webidl2/lib/webidl2.js @@ -31,6 +31,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _productions_namespace_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(28); /* harmony import */ var _productions_callback_interface_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(29); /* harmony import */ var _productions_helpers_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(4); +/* harmony import */ var _productions_token_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(10); + @@ -91,6 +93,15 @@ function parseByTokens(tokeniser, options) { } function definition() { + if (options.productions) { + for (const production of options.productions) { + const result = production(tokeniser); + if (result) { + return result; + } + } + } + return ( callback() || interface_() || @@ -116,7 +127,7 @@ function parseByTokens(tokeniser, options) { (0,_productions_helpers_js__WEBPACK_IMPORTED_MODULE_11__.autoParenter)(def).extAttrs = ea; defs.push(def); } - const eof = tokeniser.consumeType("eof"); + const eof = _productions_token_js__WEBPACK_IMPORTED_MODULE_12__.Eof.parse(tokeniser); if (options.concrete) { defs.push(eof); } @@ -132,6 +143,8 @@ function parseByTokens(tokeniser, options) { * @param {object} [options] * @param {*} [options.sourceName] * @param {boolean} [options.concrete] + * @param {Function[]} [options.productions] + * @return {import("./productions/base").Base[]} */ function parse(str, options = {}) { const tokeniser = new _tokeniser_js__WEBPACK_IMPORTED_MODULE_0__.Tokeniser(str); @@ -170,7 +183,7 @@ const tokenRe = { identifier: /[_-]?[A-Za-z][0-9A-Z_a-z-]*/y, string: /"[^"]*"/y, whitespace: /[\t\n\r ]+/y, - comment: /\/\/.*|\/\*(.|\n)*?\*\//y, + comment: /\/\/.*|\/\*[\s\S]*?\*\//y, other: /[^\t\n\r 0-9A-Za-z]/y, }; @@ -184,6 +197,8 @@ const typeNameKeywords = [ "Uint16Array", "Uint32Array", "Uint8ClampedArray", + "BigInt64Array", + "BigUint64Array", "Float32Array", "Float64Array", "any", @@ -259,6 +274,7 @@ const punctuations = [ "=", ">", "?", + "*", "[", "]", "{", @@ -355,6 +371,8 @@ function tokenise(str) { type: "eof", value: "", trivia, + line, + index, }); return tokens; @@ -401,7 +419,7 @@ class Tokeniser { /** * @param {string} type */ - probeType(type) { + probeKind(type) { return ( this.source.length > this.position && this.source[this.position].type === type @@ -413,16 +431,16 @@ class Tokeniser { */ probe(value) { return ( - this.probeType("inline") && this.source[this.position].value === value + this.probeKind("inline") && this.source[this.position].value === value ); } /** - * @param {...string} candidates + * @param {...string} candidates */ - consumeType(...candidates) { + consumeKind(...candidates) { for (const type of candidates) { - if (!this.probeType(type)) continue; + if (!this.probeKind(type)) continue; const token = this.source[this.position]; this.position++; return token; @@ -430,10 +448,10 @@ class Tokeniser { } /** - * @param {...string} candidates + * @param {...string} candidates */ consume(...candidates) { - if (!this.probeType("inline")) return; + if (!this.probeKind("inline")) return; const token = this.source[this.position]; for (const value of candidates) { if (token.value !== value) continue; @@ -442,6 +460,19 @@ class Tokeniser { } } + /** + * @param {string} value + */ + consumeIdentifier(value) { + if (!this.probeKind("identifier")) { + return; + } + if (this.source[this.position].value !== value) { + return; + } + return this.consumeKind("identifier"); + } + /** * @param {number} position */ @@ -523,6 +554,8 @@ function contextAsText(node) { * @property {"error" | "warning"} [level] * @property {Function} [autofix] * + * @typedef {ReturnType} WebIDLErrorData + * * @param {string} message error message * @param {"Syntax" | "Validation"} kind error type * @param {WebIDL2ErrorOptions} [options] @@ -705,7 +738,7 @@ function list(tokeniser, { parser, allowDangler, listName = "list" }) { */ function const_value(tokeniser) { return ( - tokeniser.consumeType("decimal", "integer") || + tokeniser.consumeKind("decimal", "integer") || tokeniser.consume("true", "false", "Infinity", "-Infinity", "NaN") ); } @@ -1066,7 +1099,7 @@ function single_type(tokeniser, typeName) { let ret = generic_type(tokeniser, typeName) || (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.primitive_type)(tokeniser); if (!ret) { const base = - tokeniser.consumeType("identifier") || + tokeniser.consumeKind("identifier") || tokeniser.consume(..._tokeniser_js__WEBPACK_IMPORTED_MODULE_2__.stringTypes, ..._tokeniser_js__WEBPACK_IMPORTED_MODULE_2__.typeNameKeywords); if (!base) { return; @@ -1164,7 +1197,7 @@ class Type extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { if (this.idlType === "void") { const message = `\`void\` is now replaced by \`undefined\`. Refer to the \ -[relevant GitHub issue](https://github.com/heycam/webidl/issues/60) \ +[relevant GitHub issue](https://github.com/whatwg/webidl/issues/60) \ for more information.`; yield (0,_error_js__WEBPACK_IMPORTED_MODULE_3__.validationError)(this.tokens.base, this, "replace-void", message, { autofix: replaceVoid(this), @@ -1457,8 +1490,13 @@ class ExtendedAttributeParameters extends _base_js__WEBPACK_IMPORTED_MODULE_0__. const ret = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.autoParenter)( new ExtendedAttributeParameters({ source: tokeniser.source, tokens }) ); + ret.list = []; if (tokens.assign) { - tokens.secondaryName = tokeniser.consumeType(...extAttrValueSyntax); + tokens.asterisk = tokeniser.consume("*"); + if (tokens.asterisk) { + return ret.this; + } + tokens.secondaryName = tokeniser.consumeKind(...extAttrValueSyntax); } tokens.open = tokeniser.consume("("); if (tokens.open) { @@ -1470,20 +1508,25 @@ class ExtendedAttributeParameters extends _base_js__WEBPACK_IMPORTED_MODULE_0__. tokens.close = tokeniser.consume(")") || tokeniser.error("Unexpected token in extended attribute argument list"); - } else if (ret.hasRhs && !tokens.secondaryName) { + } else if (tokens.assign && !tokens.secondaryName) { tokeniser.error("No right hand side to extended attribute assignment"); } return ret.this; } get rhsIsList() { - return this.tokens.assign && !this.tokens.secondaryName; + return ( + this.tokens.assign && !this.tokens.asterisk && !this.tokens.secondaryName + ); } get rhsType() { if (this.rhsIsList) { return this.list[0].tokens.value.type + "-list"; } + if (this.tokens.asterisk) { + return "*"; + } if (this.tokens.secondaryName) { return this.tokens.secondaryName.type; } @@ -1492,26 +1535,17 @@ class ExtendedAttributeParameters extends _base_js__WEBPACK_IMPORTED_MODULE_0__. /** @param {import("../writer.js").Writer)} w */ write(w) { - function extended_attribute_listitem(item) { - return w.ts.wrap([ - w.token(item.tokens.value), - w.token(item.tokens.separator), - ]); - } const { rhsType } = this; return w.ts.wrap([ w.token(this.tokens.assign), + w.token(this.tokens.asterisk), w.reference_token(this.tokens.secondaryName, this.parent), w.token(this.tokens.open), - ...(!this.list - ? [] - : this.list.map((p) => { - return rhsType === "identifier-list" - ? w.identifier(p, this.parent) - : rhsType && rhsType.endsWith("-list") - ? extended_attribute_listitem(p) - : p.write(w); - })), + ...this.list.map((p) => { + return rhsType === "identifier-list" + ? w.identifier(p, this.parent) + : p.write(w); + }), w.token(this.tokens.close), ]); } @@ -1522,7 +1556,7 @@ class SimpleExtendedAttribute extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base * @param {import("../tokeniser").Tokeniser} tokeniser */ static parse(tokeniser) { - const name = tokeniser.consumeType("identifier"); + const name = tokeniser.consumeKind("identifier"); if (name) { return new SimpleExtendedAttribute({ source: tokeniser.source, @@ -1551,7 +1585,9 @@ class SimpleExtendedAttribute extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base } const value = this.params.rhsIsList ? list - : (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.unescape)(tokens.secondaryName.value); + : this.params.tokens.secondaryName + ? (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.unescape)(tokens.secondaryName.value) + : null; return { type, value }; } get arguments() { @@ -1567,7 +1603,7 @@ class SimpleExtendedAttribute extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base if (name === "LegacyNoInterfaceObject") { const message = `\`[LegacyNoInterfaceObject]\` extended attribute is an \ undesirable feature that may be removed from Web IDL in the future. Refer to the \ -[relevant upstream PR](https://github.com/heycam/webidl/pull/609) for more \ +[relevant upstream PR](https://github.com/whatwg/webidl/pull/609) for more \ information.`; yield (0,_error_js__WEBPACK_IMPORTED_MODULE_4__.validationError)( this.tokens.name, @@ -1579,7 +1615,7 @@ information.`; } else if (renamedLegacies.has(name)) { const message = `\`[${name}]\` extended attribute is a legacy feature \ that is now renamed to \`[${renamedLegacies.get(name)}]\`. Refer to the \ -[relevant upstream PR](https://github.com/heycam/webidl/pull/870) for more \ +[relevant upstream PR](https://github.com/whatwg/webidl/pull/870) for more \ information.`; yield (0,_error_js__WEBPACK_IMPORTED_MODULE_4__.validationError)(this.tokens.name, this, "renamed-legacy", message, { level: "warning", @@ -1638,9 +1674,12 @@ class ExtendedAttributes extends _array_base_js__WEBPACK_IMPORTED_MODULE_1__.Arr ); tokens.close = tokeniser.consume("]") || - tokeniser.error("Unexpected closing token of extended attribute"); + tokeniser.error( + "Expected a closing token for the extended attribute list" + ); if (!ret.length) { - tokeniser.error("Found an empty extended attribute"); + tokeniser.unconsume(tokens.close.index); + tokeniser.error("An extended attribute list must not be empty"); } if (tokeniser.probe("[")) { tokeniser.error( @@ -1696,7 +1735,8 @@ class ArrayBase extends Array { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "WrappedToken": () => (/* binding */ WrappedToken) +/* harmony export */ "WrappedToken": () => (/* binding */ WrappedToken), +/* harmony export */ "Eof": () => (/* binding */ Eof) /* harmony export */ }); /* harmony import */ var _base_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); /* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4); @@ -1712,7 +1752,7 @@ class WrappedToken extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { */ static parser(tokeniser, type) { return () => { - const value = tokeniser.consumeType(type); + const value = tokeniser.consumeKind(type); if (value) { return new WrappedToken({ source: tokeniser.source, @@ -1725,6 +1765,30 @@ class WrappedToken extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { get value() { return (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.unescape)(this.tokens.value.value); } + + /** @param {import("../writer").Writer} w */ + write(w) { + return w.ts.wrap([ + w.token(this.tokens.value), + w.token(this.tokens.separator), + ]); + } +} + +class Eof extends WrappedToken { + /** + * @param {import("../tokeniser").Tokeniser} tokeniser + */ + static parse(tokeniser) { + const value = tokeniser.consumeKind("eof"); + if (value) { + return new Eof({ source: tokeniser.source, tokens: { value } }); + } + } + + get type() { + return "eof"; + } } @@ -1774,7 +1838,7 @@ class Argument extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { tokens.variadic = tokeniser.consume("..."); } tokens.name = - tokeniser.consumeType("identifier") || + tokeniser.consumeKind("identifier") || tokeniser.consume(..._tokeniser_js__WEBPACK_IMPORTED_MODULE_4__.argumentNameKeywords); if (!tokens.name) { return tokeniser.unconsume(start_position); @@ -1877,9 +1941,9 @@ function autofixDictionaryArgumentOptionality(arg) { return () => { const firstToken = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.getFirstToken)(arg.idlType); arg.tokens.optional = { + ...firstToken, type: "optional", value: "optional", - trivia: firstToken.trivia, }; firstToken.trivia = " "; autofixOptionalDictionaryDefaultValue(arg)(); @@ -1920,7 +1984,7 @@ class Default extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { } const def = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.const_value)(tokeniser) || - tokeniser.consumeType("string") || + tokeniser.consumeKind("string") || tokeniser.consume("null", "[", "{") || tokeniser.error("No value for default"); const expression = [def]; @@ -2010,7 +2074,7 @@ class Operation extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { ret.idlType = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.return_type)(tokeniser) || tokeniser.error("Missing return type"); tokens.name = - tokeniser.consumeType("identifier") || tokeniser.consume("includes"); + tokeniser.consumeKind("identifier") || tokeniser.consume("includes"); tokens.open = tokeniser.consume("(") || tokeniser.error("Invalid operation"); ret.arguments = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.argument_list)(tokeniser); @@ -2135,7 +2199,7 @@ class Attribute extends _base_js__WEBPACK_IMPORTED_MODULE_2__.Base { (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.type_with_extended_attributes)(tokeniser, "attribute-type") || tokeniser.error("Attribute lacks a type"); tokens.name = - tokeniser.consumeType("identifier") || + tokeniser.consumeKind("identifier") || tokeniser.consume("async", "required") || tokeniser.error("Attribute lacks a name"); tokens.termination = @@ -2233,7 +2297,7 @@ class EnumValue extends _token_js__WEBPACK_IMPORTED_MODULE_1__.WrappedToken { * @param {import("../tokeniser").Tokeniser} tokeniser */ static parse(tokeniser) { - const value = tokeniser.consumeType("string"); + const value = tokeniser.consumeKind("string"); if (value) { return new EnumValue({ source: tokeniser.source, tokens: { value } }); } @@ -2272,7 +2336,7 @@ class Enum extends _base_js__WEBPACK_IMPORTED_MODULE_2__.Base { return; } tokens.name = - tokeniser.consumeType("identifier") || + tokeniser.consumeKind("identifier") || tokeniser.error("No name for enum"); const ret = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__.autoParenter)(new Enum({ source: tokeniser.source, tokens })); tokeniser.current = ret.this; @@ -2282,7 +2346,7 @@ class Enum extends _base_js__WEBPACK_IMPORTED_MODULE_2__.Base { allowDangler: true, listName: "enumeration", }); - if (tokeniser.probeType("string")) { + if (tokeniser.probeKind("string")) { tokeniser.error("No comma between enum values"); } tokens.close = @@ -2340,7 +2404,7 @@ class Includes extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { * @param {import("../tokeniser").Tokeniser} tokeniser */ static parse(tokeniser) { - const target = tokeniser.consumeType("identifier"); + const target = tokeniser.consumeKind("identifier"); if (!target) { return; } @@ -2351,7 +2415,7 @@ class Includes extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { return; } tokens.mixin = - tokeniser.consumeType("identifier") || + tokeniser.consumeKind("identifier") || tokeniser.error("Incomplete includes statement"); tokens.termination = tokeniser.consume(";") || @@ -2414,7 +2478,7 @@ class Typedef extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.type_with_extended_attributes)(tokeniser, "typedef-type") || tokeniser.error("Typedef lacks a type"); tokens.name = - tokeniser.consumeType("identifier") || + tokeniser.consumeKind("identifier") || tokeniser.error("Typedef lacks a name"); tokeniser.current = ret.this; tokens.termination = @@ -2473,7 +2537,7 @@ class CallbackFunction extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { new CallbackFunction({ source: tokeniser.source, tokens }) ); tokens.name = - tokeniser.consumeType("identifier") || + tokeniser.consumeKind("identifier") || tokeniser.error("Callback lacks a name"); tokeniser.current = ret.this; tokens.assign = @@ -2578,7 +2642,6 @@ class Interface extends _container_js__WEBPACK_IMPORTED_MODULE_0__.Container { tokeniser, new Interface({ source: tokeniser.source, tokens }), { - type: "interface", inheritable: !partial, allowedMembers: [ [_constant_js__WEBPACK_IMPORTED_MODULE_3__.Constant.parse], @@ -2737,7 +2800,7 @@ function inheritance(tokeniser) { return {}; } const inheritance = - tokeniser.consumeType("identifier") || + tokeniser.consumeKind("identifier") || tokeniser.error("Inheritance lacks a type"); return { colon, inheritance }; } @@ -2749,11 +2812,11 @@ class Container extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { * @param {T} instance * @param {*} args */ - static parse(tokeniser, instance, { type, inheritable, allowedMembers }) { - const { tokens } = instance; + static parse(tokeniser, instance, { inheritable, allowedMembers }) { + const { tokens, type } = instance; tokens.name = - tokeniser.consumeType("identifier") || - tokeniser.error(`Missing name in ${instance.type}`); + tokeniser.consumeKind("identifier") || + tokeniser.error(`Missing name in ${type}`); tokeniser.current = instance; instance = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.autoParenter)(instance); if (inheritable) { @@ -2870,7 +2933,7 @@ class Constant extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { let idlType = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.primitive_type)(tokeniser); if (!idlType) { const base = - tokeniser.consumeType("identifier") || + tokeniser.consumeKind("identifier") || tokeniser.error("Const lacks a type"); idlType = new _type_js__WEBPACK_IMPORTED_MODULE_1__.Type({ source: tokeniser.source, tokens: { base } }); } @@ -2879,7 +2942,7 @@ class Constant extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { } idlType.type = "const-type"; tokens.name = - tokeniser.consumeType("identifier") || + tokeniser.consumeKind("identifier") || tokeniser.error("Const lacks a name"); tokens.assign = tokeniser.consume("=") || tokeniser.error("Const lacks value assignment"); @@ -3199,7 +3262,6 @@ class Mixin extends _container_js__WEBPACK_IMPORTED_MODULE_0__.Container { tokeniser, new Mixin({ source: tokeniser.source, tokens }), { - type: "interface mixin", allowedMembers: [ [_constant_js__WEBPACK_IMPORTED_MODULE_1__.Constant.parse], [_helpers_js__WEBPACK_IMPORTED_MODULE_4__.stringifier], @@ -3247,7 +3309,6 @@ class Dictionary extends _container_js__WEBPACK_IMPORTED_MODULE_0__.Container { tokeniser, new Dictionary({ source: tokeniser.source, tokens }), { - type: "dictionary", inheritable: !partial, allowedMembers: [[_field_js__WEBPACK_IMPORTED_MODULE_1__.Field.parse]], } @@ -3291,7 +3352,7 @@ class Field extends _base_js__WEBPACK_IMPORTED_MODULE_0__.Base { (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.type_with_extended_attributes)(tokeniser, "dictionary-type") || tokeniser.error("Dictionary member lacks a type"); tokens.name = - tokeniser.consumeType("identifier") || + tokeniser.consumeKind("identifier") || tokeniser.error("Dictionary member lacks a name"); ret.default = _default_js__WEBPACK_IMPORTED_MODULE_3__.Default.parse(tokeniser); if (tokens.required && ret.default) @@ -3371,7 +3432,6 @@ class Namespace extends _container_js__WEBPACK_IMPORTED_MODULE_0__.Container { tokeniser, new Namespace({ source: tokeniser.source, tokens }), { - type: "namespace", allowedMembers: [ [_attribute_js__WEBPACK_IMPORTED_MODULE_1__.Attribute.parse, { noInherit: true, readonly: true }], [_constant_js__WEBPACK_IMPORTED_MODULE_5__.Constant.parse], @@ -3441,7 +3501,6 @@ class CallbackInterface extends _container_js__WEBPACK_IMPORTED_MODULE_0__.Conta tokeniser, new CallbackInterface({ source: tokeniser.source, tokens }), { - type: "callback interface", inheritable: !partial, allowedMembers: [ [_constant_js__WEBPACK_IMPORTED_MODULE_2__.Constant.parse], @@ -3525,13 +3584,7 @@ function write(ast, { templates: ts = templates } = {}) { const w = new Writer(ts); - function dispatch(it) { - if (it.type === "eof") { - return ts.trivia(it.trivia); - } - return it.write(w); - } - return ts.wrap(ast.map(dispatch)); + return ts.wrap(ast.map((it) => it.write(w))); } @@ -3544,6 +3597,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "validate": () => (/* binding */ validate) /* harmony export */ }); /* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3); +// @ts-check + function getMixinMap(all, unique) { @@ -3632,7 +3687,8 @@ function flatten(array) { } /** - * @param {*} ast AST or array of ASTs + * @param {import("./productions/base").Base[]} ast + * @return {import("./error").WebIDLErrorData[]} validation errors */ function validate(ast) { return [...validateIterable(flatten(ast))]; diff --git a/test/fixtures/wpt/url/idlharness-shadowrealm.window.js b/test/fixtures/wpt/url/idlharness-shadowrealm.window.js new file mode 100644 index 00000000000000..2373f84e0e251a --- /dev/null +++ b/test/fixtures/wpt/url/idlharness-shadowrealm.window.js @@ -0,0 +1,2 @@ +// META: script=/resources/idlharness-shadowrealm.js +idl_test_shadowrealm(["url"], []); diff --git a/test/fixtures/wpt/url/resources/a-element-origin.js b/test/fixtures/wpt/url/resources/a-element-origin.js index 3b8cb1cbbe7c75..cb7d4a895c40c4 100644 --- a/test/fixtures/wpt/url/resources/a-element-origin.js +++ b/test/fixtures/wpt/url/resources/a-element-origin.js @@ -16,6 +16,8 @@ function runURLTests(urltests) { for(var i = 0, l = urltests.length; i < l; i++) { var expected = urltests[i] if (typeof expected === "string" || !("origin" in expected)) continue + // skip without base because you cannot unset the baseURL of a document + if (expected.base === null) continue; test(function() { var url = bURL(expected.input, expected.base) diff --git a/test/fixtures/wpt/url/resources/a-element.js b/test/fixtures/wpt/url/resources/a-element.js index f64531bc8bd528..553855a870c559 100644 --- a/test/fixtures/wpt/url/resources/a-element.js +++ b/test/fixtures/wpt/url/resources/a-element.js @@ -16,6 +16,8 @@ function runURLTests(urltests) { for(var i = 0, l = urltests.length; i < l; i++) { var expected = urltests[i] if (typeof expected === "string") continue // skip comments + // skip without base because you cannot unset the baseURL of a document + if (expected.base === null) continue; test(function() { var url = bURL(expected.input, expected.base) diff --git a/test/fixtures/wpt/url/resources/toascii.json b/test/fixtures/wpt/url/resources/toascii.json index 1fb57673816e43..b9ceea310676d7 100644 --- a/test/fixtures/wpt/url/resources/toascii.json +++ b/test/fixtures/wpt/url/resources/toascii.json @@ -23,30 +23,30 @@ "output": "xn----xhn" }, { - "input": "-x.xn--nxa", - "output": "-x.xn--nxa" + "input": "-x.xn--zca", + "output": "-x.xn--zca" }, { - "input": "-x.β", - "output": "-x.xn--nxa" + "input": "-x.ß", + "output": "-x.xn--zca" }, { "comment": "Label with trailing hyphen", - "input": "x-.xn--nxa", - "output": "x-.xn--nxa" + "input": "x-.xn--zca", + "output": "x-.xn--zca" }, { - "input": "x-.β", - "output": "x-.xn--nxa" + "input": "x-.ß", + "output": "x-.xn--zca" }, { "comment": "Empty labels", - "input": "x..xn--nxa", - "output": "x..xn--nxa" + "input": "x..xn--zca", + "output": "x..xn--zca" }, { - "input": "x..β", - "output": "x..xn--nxa" + "input": "x..ß", + "output": "x..xn--zca" }, { "comment": "Invalid Punycode", @@ -54,30 +54,35 @@ "output": null }, { - "input": "xn--a.xn--nxa", + "input": "xn--a.xn--zca", "output": null }, { - "input": "xn--a.β", + "input": "xn--a.ß", + "output": null + }, + { + "comment": "Invalid Punycode (contains non-ASCII character)", + "input": "xn--tešla", "output": null }, { "comment": "Valid Punycode", - "input": "xn--nxa.xn--nxa", - "output": "xn--nxa.xn--nxa" + "input": "xn--zca.xn--zca", + "output": "xn--zca.xn--zca" }, { "comment": "Mixed", - "input": "xn--nxa.β", - "output": "xn--nxa.xn--nxa" + "input": "xn--zca.ß", + "output": "xn--zca.xn--zca" }, { - "input": "ab--c.xn--nxa", - "output": "ab--c.xn--nxa" + "input": "ab--c.xn--zca", + "output": "ab--c.xn--zca" }, { - "input": "ab--c.β", - "output": "ab--c.xn--nxa" + "input": "ab--c.ß", + "output": "ab--c.xn--zca" }, { "comment": "CheckJoiners is true", @@ -126,12 +131,12 @@ "output": "xn--x01234567890123456789012345678901234567890123456789012345678901-6963b" }, { - "input": "x01234567890123456789012345678901234567890123456789012345678901x.xn--nxa", - "output": "x01234567890123456789012345678901234567890123456789012345678901x.xn--nxa" + "input": "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca", + "output": "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca" }, { - "input": "x01234567890123456789012345678901234567890123456789012345678901x.β", - "output": "x01234567890123456789012345678901234567890123456789012345678901x.xn--nxa" + "input": "x01234567890123456789012345678901234567890123456789012345678901x.ß", + "output": "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca" }, { "comment": "Domain excluding TLD longer than 253 code points", @@ -139,12 +144,12 @@ "output": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x" }, { - "input": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--nxa", - "output": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--nxa" + "input": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca", + "output": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca" }, { - "input": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.β", - "output": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--nxa" + "input": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.ß", + "output": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca" }, { "comment": "IDNA ignored code points", diff --git a/test/fixtures/wpt/url/resources/urltestdata.json b/test/fixtures/wpt/url/resources/urltestdata.json index a56b30caf98cb1..3cf106965b1ffd 100644 --- a/test/fixtures/wpt/url/resources/urltestdata.json +++ b/test/fixtures/wpt/url/resources/urltestdata.json @@ -3303,12 +3303,14 @@ { "input": "http:@:www.example.com", "base": "about:blank", - "failure": true + "failure": true, + "inputCanBeRelative": true }, { "input": "http:/@:www.example.com", "base": "about:blank", - "failure": true + "failure": true, + "inputCanBeRelative": true }, { "input": "http://@:www.example.com", @@ -3693,6 +3695,27 @@ "base": "about:blank", "failure": true }, + "IDNA labels should be matched case-insensitively", + { + "input": "http://a.b.c.XN--pokxncvks", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a.b.c.Xn--pokxncvks", + "base": "about:blank", + "failure": true + }, + { + "input": "http://10.0.0.XN--pokxncvks", + "base": "about:blank", + "failure": true + }, + { + "input": "http://10.0.0.xN--pokxncvks", + "base": "about:blank", + "failure": true + }, "Test name prepping, fullwidth input should be converted to ASCII and NOT IDN-ized. This is 'Go' in fullwidth UTF-8/UTF-16.", { "input": "http://Go.com", @@ -3894,21 +3917,6 @@ "search": "", "hash": "" }, - { - "input": "http://0..0x300/", - "base": "about:blank", - "href": "http://0..0x300/", - "origin": "http://0..0x300", - "protocol": "http:", - "username": "", - "password": "", - "host": "0..0x300", - "hostname": "0..0x300", - "port": "", - "pathname": "/", - "search": "", - "hash": "" - }, "Broken IPv6", { "input": "http://[www.google.com]/", @@ -4529,16 +4537,6 @@ "search": "", "hash": "" }, - { - "input": "sc://\u0000/", - "base": "about:blank", - "failure": true - }, - { - "input": "sc:// /", - "base": "about:blank", - "failure": true - }, { "input": "sc://%/", "base": "about:blank", @@ -4573,21 +4571,6 @@ "base": "about:blank", "failure": true }, - { - "input": "sc://[/", - "base": "about:blank", - "failure": true - }, - { - "input": "sc://\\/", - "base": "about:blank", - "failure": true - }, - { - "input": "sc://]/", - "base": "about:blank", - "failure": true - }, { "input": "x", "base": "sc://ñ", @@ -4699,42 +4682,47 @@ }, "Forbidden host code points", { - "input": "http://ab", + "input": "sc://a b/", "base": "about:blank", "failure": true }, { - "input": "http://a^b", + "input": "sc://ab", "base": "about:blank", "failure": true }, { - "input": "non-special://ab", + "input": "sc://a\\b/", "base": "about:blank", "failure": true }, { - "input": "non-special://a^b", + "input": "sc://a]b/", "base": "about:blank", "failure": true }, { - "input": "foo://ho\u0000st/", + "input": "sc://a^b", "base": "about:blank", "failure": true }, { - "input": "foo://ho|st/", + "input": "sc://a|b/", "base": "about:blank", "failure": true }, @@ -4754,51 +4742,425 @@ "username": "" }, { - "input": "foo://ho\u000Ast/", + "input": "foo://ho\u000Ast/", + "base": "about:blank", + "hash": "", + "host": "host", + "hostname": "host", + "href":"foo://host/", + "password": "", + "pathname": "/", + "port":"", + "protocol": "foo:", + "search": "", + "username": "" + }, + { + "input": "foo://ho\u000Dst/", + "base": "about:blank", + "hash": "", + "host": "host", + "hostname": "host", + "href":"foo://host/", + "password": "", + "pathname": "/", + "port":"", + "protocol": "foo:", + "search": "", + "username": "" + }, + "Forbidden domain code-points", + { + "input": "http://a\u0000b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0001b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0002b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0003b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0004b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0005b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0006b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0007b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0008b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u000Bb/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u000Cb/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u000Eb/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u000Fb/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0010b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0011b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0012b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0013b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0014b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0015b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0016b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0017b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0018b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u0019b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u001Ab/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u001Bb/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u001Cb/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u001Db/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u001Eb/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u001Fb/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a%b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ab", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a[b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a]b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a^b", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a|b/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://a\u007Fb/", + "base": "about:blank", + "failure": true + }, + "Forbidden domain codepoints: tabs and newlines are removed during preprocessing", + { + "input": "http://ho\u0009st/", + "base": "about:blank", + "hash": "", + "host": "host", + "hostname": "host", + "href":"http://host/", + "password": "", + "pathname": "/", + "port":"", + "protocol": "http:", + "search": "", + "username": "" + }, + { + "input": "http://ho\u000Ast/", + "base": "about:blank", + "hash": "", + "host": "host", + "hostname": "host", + "href":"http://host/", + "password": "", + "pathname": "/", + "port":"", + "protocol": "http:", + "search": "", + "username": "" + }, + { + "input": "http://ho\u000Dst/", + "base": "about:blank", + "hash": "", + "host": "host", + "hostname": "host", + "href":"http://host/", + "password": "", + "pathname": "/", + "port":"", + "protocol": "http:", + "search": "", + "username": "" + }, + "Encoded forbidden domain codepoints in special URLs", + { + "input": "http://ho%00st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%01st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%02st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%03st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%04st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%05st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%06st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%07st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%08st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%09st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%0Ast/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%0Bst/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%0Cst/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%0Dst/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%0Est/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%0Fst/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%10st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%11st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%12st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%13st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%14st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%15st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%16st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%17st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%18st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%19st/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://ho%1Ast/", "base": "about:blank", - "hash": "", - "host": "host", - "hostname": "host", - "href":"foo://host/", - "password": "", - "pathname": "/", - "port":"", - "protocol": "foo:", - "search": "", - "username": "" + "failure": true }, { - "input": "foo://ho\u000Dst/", + "input": "http://ho%1Bst/", "base": "about:blank", - "hash": "", - "host": "host", - "hostname": "host", - "href":"foo://host/", - "password": "", - "pathname": "/", - "port":"", - "protocol": "foo:", - "search": "", - "username": "" + "failure": true }, - "Encoded forbidden host codepoints in special URLs", { - "input": "http://ho%00st/", + "input": "http://ho%1Cst/", "base": "about:blank", "failure": true }, { - "input": "http://ho%09st/", + "input": "http://ho%1Dst/", "base": "about:blank", "failure": true }, { - "input": "http://ho%0Ast/", + "input": "http://ho%1Est/", "base": "about:blank", "failure": true }, { - "input": "http://ho%0Dst/", + "input": "http://ho%1Fst/", "base": "about:blank", "failure": true }, @@ -4812,6 +5174,11 @@ "base": "about:blank", "failure": true }, + { + "input": "http://ho%25st/", + "base": "about:blank", + "failure": true + }, { "input": "http://ho%2Fst/", "base": "about:blank", @@ -4862,32 +5229,37 @@ "base": "about:blank", "failure": true }, - "Allowed host code points", { - "input": "http://\u001F!\"$&'()*+,-.;=_`{}~/", + "input": "http://ho%7Fst/", + "base": "about:blank", + "failure": true + }, + "Allowed host/domain code points", + { + "input": "http://!\"$&'()*+,-.;=_`{}~/", "base": "about:blank", - "href": "http://\u001F!\"$&'()*+,-.;=_`{}~/", - "origin": "http://\u001F!\"$&'()*+,-.;=_`{}~", + "href": "http://!\"$&'()*+,-.;=_`{}~/", + "origin": "http://!\"$&'()*+,-.;=_`{}~", "protocol": "http:", "username": "", "password": "", - "host": "\u001F!\"$&'()*+,-.;=_`{}~", - "hostname": "\u001F!\"$&'()*+,-.;=_`{}~", + "host": "!\"$&'()*+,-.;=_`{}~", + "hostname": "!\"$&'()*+,-.;=_`{}~", "port": "", "pathname": "/", "search": "", "hash": "" }, { - "input": "sc://\u001F!\"$&'()*+,-.;=_`{}~/", + "input": "sc://\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u000B\u000C\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F\u007F!\"$%&'()*+,-.;=_`{}~/", "base": "about:blank", - "href": "sc://%1F!\"$&'()*+,-.;=_`{}~/", + "href": "sc://%01%02%03%04%05%06%07%08%0B%0C%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F!\"$%&'()*+,-.;=_`{}~/", "origin": "null", "protocol": "sc:", "username": "", "password": "", - "host": "%1F!\"$&'()*+,-.;=_`{}~", - "hostname": "%1F!\"$&'()*+,-.;=_`{}~", + "host": "%01%02%03%04%05%06%07%08%0B%0C%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F!\"$%&'()*+,-.;=_`{}~", + "hostname": "%01%02%03%04%05%06%07%08%0B%0C%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F!\"$%&'()*+,-.;=_`{}~", "port": "", "pathname": "/", "search": "", @@ -5159,6 +5531,36 @@ "hash": "#foo%60bar" }, "# IPv4 parsing (via https://github.com/nodejs/node/pull/10317)", + { + "input": "http://1.2.3.4/", + "base": "http://other.com/", + "href": "http://1.2.3.4/", + "origin": "http://1.2.3.4", + "protocol": "http:", + "username": "", + "password": "", + "host": "1.2.3.4", + "hostname": "1.2.3.4", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "http://1.2.3.4./", + "base": "http://other.com/", + "href": "http://1.2.3.4/", + "origin": "http://1.2.3.4", + "protocol": "http:", + "username": "", + "password": "", + "host": "1.2.3.4", + "hostname": "1.2.3.4", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, { "input": "http://192.168.257", "base": "http://other.com/", @@ -5174,6 +5576,21 @@ "search": "", "hash": "" }, + { + "input": "http://192.168.257.", + "base": "http://other.com/", + "href": "http://192.168.1.1/", + "origin": "http://192.168.1.1", + "protocol": "http:", + "username": "", + "password": "", + "host": "192.168.1.1", + "hostname": "192.168.1.1", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, { "input": "http://192.168.257.com", "base": "http://other.com/", @@ -5234,6 +5651,21 @@ "search": "", "hash": "" }, + { + "input": "http://999999999.", + "base": "http://other.com/", + "href": "http://59.154.201.255/", + "origin": "http://59.154.201.255", + "protocol": "http:", + "username": "", + "password": "", + "host": "59.154.201.255", + "hostname": "59.154.201.255", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, { "input": "http://999999999.com", "base": "http://other.com/", @@ -5314,21 +5746,6 @@ "base": "http://other.com/", "failure": true }, - { - "input": "http://256.256.256.256.256", - "base": "http://other.com/", - "href": "http://256.256.256.256.256/", - "origin": "http://256.256.256.256.256", - "protocol": "http:", - "username": "", - "password": "", - "host": "256.256.256.256.256", - "hostname": "256.256.256.256.256", - "port": "", - "pathname": "/", - "search": "", - "hash": "" - }, { "input": "https://0x.0x.0", "base": "about:blank", @@ -6373,7 +6790,8 @@ { "input": "\\\\\\.\\Y:", "base": "about:blank", - "failure": true + "failure": true, + "inputCanBeRelative": true }, "# file: drive letter cases from https://crbug.com/1078698 but lowercased", { @@ -6435,7 +6853,8 @@ { "input": "\\\\\\.\\y:", "base": "about:blank", - "failure": true + "failure": true, + "inputCanBeRelative": true }, "# Additional file URL tests for (https://github.com/whatwg/url/issues/405)", { @@ -7269,6 +7688,7 @@ "input": "blob:https://example.com:443/", "base": "about:blank", "href": "blob:https://example.com:443/", + "origin": "https://example.com", "protocol": "blob:", "username": "", "password": "", @@ -7283,6 +7703,7 @@ "input": "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf", "base": "about:blank", "href": "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf", + "origin": "null", "protocol": "blob:", "username": "", "password": "", @@ -7293,21 +7714,22 @@ "search": "", "hash": "" }, - "Invalid IPv4 radix digits", { - "input": "http://0177.0.0.0189", + "input": "blob:", "base": "about:blank", - "href": "http://0177.0.0.0189/", - "protocol": "http:", + "href": "blob:", + "origin": "null", + "protocol": "blob:", "username": "", "password": "", - "host": "0177.0.0.0189", - "hostname": "0177.0.0.0189", + "host": "", + "hostname": "", "port": "", - "pathname": "/", + "pathname": "", "search": "", "hash": "" }, + "Invalid IPv4 radix digits", { "input": "http://0x7f.0.0.0x7g", "base": "about:blank", @@ -8016,5 +8438,176 @@ "protocol": "abc:", "search": "", "username": "" + }, + "Empty query and fragment with blank should throw an error", + { + "input": "#", + "base": null, + "failure": true + }, + { + "input": "?", + "base": null, + "failure": true + }, + "Last component looks like a number, but not valid IPv4", + { + "input": "http://1.2.3.4.5", + "base": "http://other.com/", + "failure": true + }, + { + "input": "http://1.2.3.4.5.", + "base": "http://other.com/", + "failure": true + }, + { + "input": "http://0..0x300/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://0..0x300./", + "base": "about:blank", + "failure": true + }, + { + "input": "http://256.256.256.256.256", + "base": "http://other.com/", + "failure": true + }, + { + "input": "http://256.256.256.256.256.", + "base": "http://other.com/", + "failure": true + }, + { + "input": "http://1.2.3.08", + "base": "about:blank", + "failure": true + }, + { + "input": "http://1.2.3.08.", + "base": "about:blank", + "failure": true + }, + { + "input": "http://1.2.3.09", + "base": "about:blank", + "failure": true + }, + { + "input": "http://09.2.3.4", + "base": "about:blank", + "failure": true + }, + { + "input": "http://09.2.3.4.", + "base": "about:blank", + "failure": true + }, + { + "input": "http://01.2.3.4.5", + "base": "about:blank", + "failure": true + }, + { + "input": "http://01.2.3.4.5.", + "base": "about:blank", + "failure": true + }, + { + "input": "http://0x100.2.3.4", + "base": "about:blank", + "failure": true + }, + { + "input": "http://0x100.2.3.4.", + "base": "about:blank", + "failure": true + }, + { + "input": "http://0x1.2.3.4.5", + "base": "about:blank", + "failure": true + }, + { + "input": "http://0x1.2.3.4.5.", + "base": "about:blank", + "failure": true + }, + { + "input": "http://foo.1.2.3.4", + "base": "about:blank", + "failure": true + }, + { + "input": "http://foo.1.2.3.4.", + "base": "about:blank", + "failure": true + }, + { + "input": "http://foo.2.3.4", + "base": "about:blank", + "failure": true + }, + { + "input": "http://foo.2.3.4.", + "base": "about:blank", + "failure": true + }, + { + "input": "http://foo.09", + "base": "about:blank", + "failure": true + }, + { + "input": "http://foo.09.", + "base": "about:blank", + "failure": true + }, + { + "input": "http://foo.0x4", + "base": "about:blank", + "failure": true + }, + { + "input": "http://foo.0x4.", + "base": "about:blank", + "failure": true + }, + { + "input": "http://foo.09..", + "base": "about:blank", + "hash": "", + "host": "foo.09..", + "hostname": "foo.09..", + "href":"http://foo.09../", + "password": "", + "pathname": "/", + "port":"", + "protocol": "http:", + "search": "", + "username": "" + }, + { + "input": "http://0999999999999999999/", + "base": "about:blank", + "failure": true + }, + { + "input": "http://foo.0x", + "base": "about:blank", + "failure": true + }, + { + "input": "http://foo.0XFfFfFfFfFfFfFfFfFfAcE123", + "base": "about:blank", + "failure": true + }, + { + "input": "http://💩.123/", + "base": "about:blank", + "failure": true } ] diff --git a/test/fixtures/wpt/url/url-constructor.any.js b/test/fixtures/wpt/url/url-constructor.any.js index 3f4af56d2a9654..dfa98092fa6475 100644 --- a/test/fixtures/wpt/url/url-constructor.any.js +++ b/test/fixtures/wpt/url/url-constructor.any.js @@ -1,7 +1,7 @@ // META: timeout=long function bURL(url, base) { - return new URL(url, base || "about:blank") + return base ? new URL(url, base) : new URL(url) } function runURLTests(urltests) { diff --git a/test/fixtures/wpt/url/url-origin.any.js b/test/fixtures/wpt/url/url-origin.any.js index d9ef64c73b8bcc..9c1f97ed2e5949 100644 --- a/test/fixtures/wpt/url/url-origin.any.js +++ b/test/fixtures/wpt/url/url-origin.any.js @@ -1,7 +1,7 @@ promise_test(() => fetch("resources/urltestdata.json").then(res => res.json()).then(runURLTests), "Loading data…"); function bURL(url, base) { - return new URL(url, base || "about:blank") + return base ? new URL(url, base) : new URL(url) } function runURLTests(urltests) { diff --git a/test/fixtures/wpt/url/url-setters-stripping.any.js b/test/fixtures/wpt/url/url-setters-stripping.any.js index 3413c6cd5ad21d..ac90cc17e0bfd5 100644 --- a/test/fixtures/wpt/url/url-setters-stripping.any.js +++ b/test/fixtures/wpt/url/url-setters-stripping.any.js @@ -66,7 +66,7 @@ for(const scheme of ["https", "wpt++"]) { ["trailing", "test" + (scheme === "https" ? cpString : encodeURIComponent(cpString)), "test" + String.fromCodePoint(i)] ]) { test(() => { - const expected = i === 0x00 ? "host" : stripped ? "test" : expectedPart; + const expected = i === 0x00 || (scheme === "https" && i === 0x1F) ? "host" : stripped ? "test" : expectedPart; const url = urlRecord(scheme); url.host = input; assert_equals(url.host, expected + ":8000", "property"); @@ -74,7 +74,7 @@ for(const scheme of ["https", "wpt++"]) { }, `Setting host with ${type} ${cpReference} (${scheme}:)`); test(() => { - const expected = i === 0x00 ? "host" : stripped ? "test" : expectedPart; + const expected = i === 0x00 || (scheme === "https" && i === 0x1F) ? "host" : stripped ? "test" : expectedPart; const url = urlRecord(scheme); url.hostname = input; assert_equals(url.hostname, expected, "property"); diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json index 2eda2919ea9908..210c91988e28ad 100644 --- a/test/fixtures/wpt/versions.json +++ b/test/fixtures/wpt/versions.json @@ -11,8 +11,12 @@ "commit": "c49cafb491d99d6318f8f24a26936cc66501f412", "path": "dom/abort" }, + "dom/events": { + "commit": "f8821adb281696322f4bd96d412a98ae510f9125", + "path": "dom/events" + }, "encoding": { - "commit": "35f70910d3753c8b650fdfd4c716caedfefe88c9", + "commit": "c1b24fce6e625c1b79124a58f27bf9adce02d5d7", "path": "encoding" }, "FileAPI": { @@ -44,7 +48,7 @@ "path": "performance-timeline" }, "resources": { - "commit": "fbee645164468c030072c46a934e2c876b143f8e", + "commit": "c5b428f15acfb17fe59b5a6f04a21c288a76ed36", "path": "resources" }, "streams": { @@ -52,7 +56,7 @@ "path": "streams" }, "url": { - "commit": "77d54aa9e0405f737987b59331f3584e3e1c26f9", + "commit": "0e5b126cd0a8da9186b738b8c9278d19b594c51f", "path": "url" }, "user-timing": { @@ -62,5 +66,9 @@ "WebCryptoAPI": { "commit": "cdd0f03df41b222aed098fbbb11c6a3cc500a86b", "path": "WebCryptoAPI" + }, + "webidl/ecmascript-binding/es-exceptions": { + "commit": "a370aad338d6ed743abb4d2c6ae84a7f1058558c", + "path": "webidl/ecmascript-binding/es-exceptions" } } \ No newline at end of file diff --git a/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/DOMException-constants.any.js b/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/DOMException-constants.any.js new file mode 100644 index 00000000000000..bb846a494eb898 --- /dev/null +++ b/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/DOMException-constants.any.js @@ -0,0 +1,51 @@ +'use strict'; + +test(function() { + // https://www.w3.org/Bugs/Public/show_bug.cgi?id=27732 + var constants = [ + "INDEX_SIZE_ERR", + "DOMSTRING_SIZE_ERR", + "HIERARCHY_REQUEST_ERR", + "WRONG_DOCUMENT_ERR", + "INVALID_CHARACTER_ERR", + "NO_DATA_ALLOWED_ERR", + "NO_MODIFICATION_ALLOWED_ERR", + "NOT_FOUND_ERR", + "NOT_SUPPORTED_ERR", + "INUSE_ATTRIBUTE_ERR", + "INVALID_STATE_ERR", + "SYNTAX_ERR", + "INVALID_MODIFICATION_ERR", + "NAMESPACE_ERR", + "INVALID_ACCESS_ERR", + "VALIDATION_ERR", + "TYPE_MISMATCH_ERR", + "SECURITY_ERR", + "NETWORK_ERR", + "ABORT_ERR", + "URL_MISMATCH_ERR", + "QUOTA_EXCEEDED_ERR", + "TIMEOUT_ERR", + "INVALID_NODE_TYPE_ERR", + "DATA_CLONE_ERR" + ] + var objects = [ + [DOMException, "DOMException constructor object"], + [DOMException.prototype, "DOMException prototype object"] + ] + constants.forEach(function(name, i) { + objects.forEach(function(o) { + var object = o[0], description = o[1]; + test(function() { + assert_equals(object[name], i + 1, name) + assert_own_property(object, name) + var pd = Object.getOwnPropertyDescriptor(object, name) + assert_false("get" in pd, "get") + assert_false("set" in pd, "set") + assert_false(pd.writable, "writable") + assert_true(pd.enumerable, "enumerable") + assert_false(pd.configurable, "configurable") + }, "Constant " + name + " on " + description) + }) + }) +}) diff --git a/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.js b/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.js new file mode 100644 index 00000000000000..a015470cad6bf7 --- /dev/null +++ b/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.js @@ -0,0 +1,32 @@ +test(function() { + assert_own_property(self, "DOMException", "property of global"); + + var desc = Object.getOwnPropertyDescriptor(self, "DOMException"); + assert_false("get" in desc, "get"); + assert_false("set" in desc, "set"); + assert_true(desc.writable, "writable"); + assert_false(desc.enumerable, "enumerable"); + assert_true(desc.configurable, "configurable"); +}, "existence and property descriptor of DOMException"); + +test(function() { + assert_own_property(self.DOMException, "prototype", "prototype property"); + + var desc = Object.getOwnPropertyDescriptor(self.DOMException, "prototype"); + assert_false("get" in desc, "get"); + assert_false("set" in desc, "set"); + assert_false(desc.writable, "writable"); + assert_false(desc.enumerable, "enumerable"); + assert_false(desc.configurable, "configurable"); +}, "existence and property descriptor of DOMException.prototype"); + +test(function() { + assert_own_property(self.DOMException.prototype, "constructor", "property of prototype"); + var desc = Object.getOwnPropertyDescriptor(self.DOMException.prototype, "constructor"); + assert_false("get" in desc, "get"); + assert_false("set" in desc, "set"); + assert_true(desc.writable, "writable"); + assert_false(desc.enumerable, "enumerable"); + assert_true(desc.configurable, "configurable"); + assert_equals(self.DOMException.prototype.constructor, self.DOMException, "equality with actual constructor"); +}, "existence and property descriptor of DOMException.prototype.constructor"); diff --git a/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js b/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js new file mode 100644 index 00000000000000..e9917af2287490 --- /dev/null +++ b/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js @@ -0,0 +1,140 @@ +'use strict'; + +test(function() { + var ex = new DOMException(); + assert_equals(ex.name, "Error", + "Not passing a name should end up with 'Error' as the name"); + assert_equals(ex.message, "", + "Not passing a message should end up with empty string as the message"); +}, 'new DOMException()'); + +test(function() { + var ex = new DOMException(); + assert_false(ex.hasOwnProperty("name"), + "The name property should be inherited"); + assert_false(ex.hasOwnProperty("message"), + "The message property should be inherited"); +}, 'new DOMException(): inherited-ness'); + +test(function() { + var ex = new DOMException(null); + assert_equals(ex.name, "Error", + "Not passing a name should end up with 'Error' as the name"); + assert_equals(ex.message, "null", + "Passing null as message should end up with stringified 'null' as the message"); +}, 'new DOMException(null)'); + +test(function() { + var ex = new DOMException(undefined); + assert_equals(ex.name, "Error", + "Not passing a name should end up with 'Error' as the name"); + assert_equals(ex.message, "", + "Not passing a message should end up with empty string as the message"); +}, 'new DOMException(undefined)'); + +test(function() { + var ex = new DOMException(undefined); + assert_false(ex.hasOwnProperty("name"), + "The name property should be inherited"); + assert_false(ex.hasOwnProperty("message"), + "The message property should be inherited"); +}, 'new DOMException(undefined): inherited-ness'); + +test(function() { + var ex = new DOMException("foo"); + assert_equals(ex.name, "Error", + "Not passing a name should still end up with 'Error' as the name"); + assert_equals(ex.message, "foo", "Should be using passed-in message"); +}, 'new DOMException("foo")'); + +test(function() { + var ex = new DOMException("foo"); + assert_false(ex.hasOwnProperty("name"), + "The name property should be inherited"); + assert_false(ex.hasOwnProperty("message"), + "The message property should be inherited"); +}, 'new DOMException("foo"): inherited-ness'); + +test(function() { + var ex = new DOMException("bar", undefined); + assert_equals(ex.name, "Error", + "Passing undefined for name should end up with 'Error' as the name"); + assert_equals(ex.message, "bar", "Should still be using passed-in message"); +}, 'new DOMException("bar", undefined)'); + +test(function() { + var ex = new DOMException("bar", "NotSupportedError"); + assert_equals(ex.name, "NotSupportedError", "Should be using the passed-in name"); + assert_equals(ex.message, "bar", "Should still be using passed-in message"); + assert_equals(ex.code, DOMException.NOT_SUPPORTED_ERR, + "Should have the right exception code"); +}, 'new DOMException("bar", "NotSupportedError")'); + +test(function() { + var ex = new DOMException("bar", "NotSupportedError"); + assert_false(ex.hasOwnProperty("name"), + "The name property should be inherited"); + assert_false(ex.hasOwnProperty("message"), + "The message property should be inherited"); +}, 'new DOMException("bar", "NotSupportedError"): inherited-ness'); + +test(function() { + var ex = new DOMException("bar", "foo"); + assert_equals(ex.name, "foo", "Should be using the passed-in name"); + assert_equals(ex.message, "bar", "Should still be using passed-in message"); + assert_equals(ex.code, 0, + "Should have 0 for code for a name not in the exception names table"); +}, 'new DOMException("bar", "foo")'); + +[ + {name: "IndexSizeError", code: 1}, + {name: "HierarchyRequestError", code: 3}, + {name: "WrongDocumentError", code: 4}, + {name: "InvalidCharacterError", code: 5}, + {name: "NoModificationAllowedError", code: 7}, + {name: "NotFoundError", code: 8}, + {name: "NotSupportedError", code: 9}, + {name: "InUseAttributeError", code: 10}, + {name: "InvalidStateError", code: 11}, + {name: "SyntaxError", code: 12}, + {name: "InvalidModificationError", code: 13}, + {name: "NamespaceError", code: 14}, + {name: "InvalidAccessError", code: 15}, + {name: "TypeMismatchError", code: 17}, + {name: "SecurityError", code: 18}, + {name: "NetworkError", code: 19}, + {name: "AbortError", code: 20}, + {name: "URLMismatchError", code: 21}, + {name: "QuotaExceededError", code: 22}, + {name: "TimeoutError", code: 23}, + {name: "InvalidNodeTypeError", code: 24}, + {name: "DataCloneError", code: 25}, + + // These were removed from the error names table. + // See https://github.com/heycam/webidl/pull/946. + {name: "DOMStringSizeError", code: 0}, + {name: "NoDataAllowedError", code: 0}, + {name: "ValidationError", code: 0}, + + // The error names which don't have legacy code values. + {name: "EncodingError", code: 0}, + {name: "NotReadableError", code: 0}, + {name: "UnknownError", code: 0}, + {name: "ConstraintError", code: 0}, + {name: "DataError", code: 0}, + {name: "TransactionInactiveError", code: 0}, + {name: "ReadOnlyError", code: 0}, + {name: "VersionError", code: 0}, + {name: "OperationError", code: 0}, + {name: "NotAllowedError", code: 0} +].forEach(function(test_case) { + test(function() { + var ex = new DOMException("msg", test_case.name); + assert_equals(ex.name, test_case.name, + "Should be using the passed-in name"); + assert_equals(ex.message, "msg", + "Should be using the passed-in message"); + assert_equals(ex.code, test_case.code, + "Should have matching legacy code from error names table"); + },'new DOMexception("msg", "' + test_case.name + '")'); +}); diff --git a/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.js b/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.js new file mode 100644 index 00000000000000..cd4e5b6341948c --- /dev/null +++ b/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.js @@ -0,0 +1,120 @@ +"use strict"; + +test(() => { + assert_throws_js(TypeError, () => DOMException()); +}, "Cannot construct without new"); + +test(() => { + assert_equals(Object.getPrototypeOf(DOMException.prototype), Error.prototype); +}, "inherits from Error: prototype-side"); + +test(() => { + assert_equals(Object.getPrototypeOf(DOMException), Function.prototype); +}, "does not inherit from Error: class-side"); + +test(() => { + const e = new DOMException("message", "name"); + assert_false(e.hasOwnProperty("message"), "property is not own"); + + const propDesc = Object.getOwnPropertyDescriptor(DOMException.prototype, "message"); + assert_equals(typeof propDesc.get, "function", "property descriptor is a getter"); + assert_equals(propDesc.set, undefined, "property descriptor is not a setter"); + assert_true(propDesc.enumerable, "property descriptor enumerable"); + assert_true(propDesc.configurable, "property descriptor configurable"); +}, "message property descriptor"); + +test(() => { + const getter = Object.getOwnPropertyDescriptor(DOMException.prototype, "message").get; + + assert_throws_js(TypeError, () => getter.apply({})); +}, "message getter performs brand checks (i.e. is not [LegacyLenientThis])"); + +test(() => { + const e = new DOMException("message", "name"); + assert_false(e.hasOwnProperty("name"), "property is not own"); + + const propDesc = Object.getOwnPropertyDescriptor(DOMException.prototype, "name"); + assert_equals(typeof propDesc.get, "function", "property descriptor is a getter"); + assert_equals(propDesc.set, undefined, "property descriptor is not a setter"); + assert_true(propDesc.enumerable, "property descriptor enumerable"); + assert_true(propDesc.configurable, "property descriptor configurable"); +}, "name property descriptor"); + +test(() => { + const getter = Object.getOwnPropertyDescriptor(DOMException.prototype, "name").get; + + assert_throws_js(TypeError, () => getter.apply({})); +}, "name getter performs brand checks (i.e. is not [LegacyLenientThis])"); + +test(() => { + const e = new DOMException("message", "name"); + assert_false(e.hasOwnProperty("code"), "property is not own"); + + const propDesc = Object.getOwnPropertyDescriptor(DOMException.prototype, "code"); + assert_equals(typeof propDesc.get, "function", "property descriptor is a getter"); + assert_equals(propDesc.set, undefined, "property descriptor is not a setter"); + assert_true(propDesc.enumerable, "property descriptor enumerable"); + assert_true(propDesc.configurable, "property descriptor configurable"); +}, "code property descriptor"); + +test(() => { + const getter = Object.getOwnPropertyDescriptor(DOMException.prototype, "code").get; + + assert_throws_js(TypeError, () => getter.apply({})); +}, "code getter performs brand checks (i.e. is not [LegacyLenientThis])"); + +test(() => { + const e = new DOMException("message", "InvalidCharacterError"); + assert_equals(e.code, 5, "Initially the code is set to 5"); + + Object.defineProperty(e, "name", { + value: "WrongDocumentError" + }); + + assert_equals(e.code, 5, "The code is still set to 5"); +}, "code property is not affected by shadowing the name property"); + +test(() => { + const e = new DOMException("message", "name"); + assert_equals(Object.prototype.toString.call(e), "[object DOMException]"); +}, "Object.prototype.toString behavior is like other interfaces"); + +test(() => { + const e = new DOMException("message", "name"); + assert_false(e.hasOwnProperty("toString"), "toString must not exist on the instance"); + assert_false(DOMException.prototype.hasOwnProperty("toString"), "toString must not exist on DOMException.prototype"); + assert_equals(typeof e.toString, "function", "toString must still exist (via Error.prototype)"); +}, "Inherits its toString() from Error.prototype"); + +test(() => { + const e = new DOMException("message", "name"); + assert_equals(e.toString(), "name: message", + "The default Error.prototype.toString() behavior must work on supplied name and message"); + + Object.defineProperty(e, "name", { value: "new name" }); + Object.defineProperty(e, "message", { value: "new message" }); + assert_equals(e.toString(), "new name: new message", + "The default Error.prototype.toString() behavior must work on shadowed names and messages"); +}, "toString() behavior from Error.prototype applies as expected"); + +test(() => { + assert_throws_js(TypeError, () => DOMException.prototype.toString()); +}, "DOMException.prototype.toString() applied to DOMException.prototype throws because of name/message brand checks"); + +test(() => { + let stackOnNormalErrors; + try { + throw new Error("normal error"); + } catch (e) { + stackOnNormalErrors = e.stack; + } + + let stackOnDOMException; + try { + throw new DOMException("message", "name"); + } catch (e) { + stackOnDOMException = e.stack; + } + + assert_equals(typeof stackOnDOMException, typeof stackOnNormalErrors, "The typeof values must match"); +}, "If the implementation has a stack property on normal errors, it also does on DOMExceptions"); diff --git a/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/exceptions.html b/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/exceptions.html new file mode 100644 index 00000000000000..d26c66266994b2 --- /dev/null +++ b/test/fixtures/wpt/webidl/ecmascript-binding/es-exceptions/exceptions.html @@ -0,0 +1,78 @@ + + +DOMException-throwing tests + +
                  + + + diff --git a/test/js-native-api/common.h b/test/js-native-api/common.h index 73f60906630140..46784059a1f70a 100644 --- a/test/js-native-api/common.h +++ b/test/js-native-api/common.h @@ -62,6 +62,9 @@ #define DECLARE_NODE_API_GETTER(name, func) \ { (name), NULL, NULL, (func), NULL, NULL, napi_default, NULL } +#define DECLARE_NODE_API_PROPERTY_VALUE(name, value) \ + { (name), NULL, NULL, NULL, NULL, (value), napi_default, NULL } + void add_returned_status(napi_env env, const char* key, napi_value object, diff --git a/test/js-native-api/test_exception/test_exception.c b/test/js-native-api/test_exception/test_exception.c index 844f4475ac4d4c..053f048466d930 100644 --- a/test/js-native-api/test_exception/test_exception.c +++ b/test/js-native-api/test_exception/test_exception.c @@ -2,6 +2,7 @@ #include "../common.h" static bool exceptionWasPending = false; +static int num = 0x23432; static napi_value returnException(napi_env env, napi_callback_info info) { size_t argc = 1; @@ -83,7 +84,7 @@ static napi_value createExternal(napi_env env, napi_callback_info info) { napi_value external; NODE_API_CALL(env, - napi_create_external(env, NULL, finalizer, NULL, &external)); + napi_create_external(env, &num, finalizer, NULL, &external)); return external; } diff --git a/test/js-native-api/test_object/test.js b/test/js-native-api/test_object/test.js index 807c920bd46b54..d5b9ab8423b7a5 100644 --- a/test/js-native-api/test_object/test.js +++ b/test/js-native-api/test_object/test.js @@ -19,7 +19,7 @@ const object = { assert.strictEqual(test_object.Get(object, 'hello'), 'world'); assert.strictEqual(test_object.GetNamed(object, 'hello'), 'world'); assert.deepStrictEqual(test_object.Get(object, 'array'), - [ 1, 94, 'str', 12.321, { test: 'obj in arr' } ]); + [1, 94, 'str', 12.321, { test: 'obj in arr' }]); assert.deepStrictEqual(test_object.Get(object, 'newObject'), { test: 'obj in obj' }); @@ -54,7 +54,7 @@ assert.strictEqual(newObject.test_string, 'test string'); { // Verify that napi_has_own_property() fails if property is not a name. - [true, false, null, undefined, {}, [], 0, 1, () => {}].forEach((value) => { + [true, false, null, undefined, {}, [], 0, 1, () => { }].forEach((value) => { assert.throws(() => { test_object.HasOwn({}, value); }, /^Error: A string or symbol was expected$/); @@ -163,14 +163,23 @@ assert.strictEqual(newObject.test_string, 'test string'); // Verify that objects can be type-tagged and type-tag-checked. const obj1 = test_object.TypeTaggedInstance(0); const obj2 = test_object.TypeTaggedInstance(1); + const obj3 = test_object.TypeTaggedInstance(2); + const obj4 = test_object.TypeTaggedInstance(3); // Verify that type tags are correctly accepted. assert.strictEqual(test_object.CheckTypeTag(0, obj1), true); assert.strictEqual(test_object.CheckTypeTag(1, obj2), true); + assert.strictEqual(test_object.CheckTypeTag(2, obj3), true); + assert.strictEqual(test_object.CheckTypeTag(3, obj4), true); // Verify that wrongly tagged objects are rejected. assert.strictEqual(test_object.CheckTypeTag(0, obj2), false); assert.strictEqual(test_object.CheckTypeTag(1, obj1), false); + assert.strictEqual(test_object.CheckTypeTag(0, obj3), false); + assert.strictEqual(test_object.CheckTypeTag(1, obj4), false); + assert.strictEqual(test_object.CheckTypeTag(2, obj4), false); + assert.strictEqual(test_object.CheckTypeTag(3, obj3), false); + assert.strictEqual(test_object.CheckTypeTag(4, obj3), false); // Verify that untagged objects are rejected. assert.strictEqual(test_object.CheckTypeTag(0, {}), false); @@ -240,13 +249,57 @@ assert.strictEqual(newObject.test_string, 'test string'); writable: true, configurable: true }); + Object.defineProperty(object, 'writable', { + value: 4, + enumerable: true, + writable: true, + configurable: false + }); + Object.defineProperty(object, 'configurable', { + value: 4, + enumerable: true, + writable: false, + configurable: true + }); object[5] = 5; assert.deepStrictEqual(test_object.GetPropertyNames(object), - ['5', 'normal', 'inherited']); + ['5', + 'normal', + 'writable', + 'configurable', + 'inherited']); assert.deepStrictEqual(test_object.GetSymbolNames(object), [fooSymbol]); + + assert.deepStrictEqual(test_object.GetEnumerableWritableNames(object), + ['5', + 'normal', + 'writable', + fooSymbol, + 'inherited']); + + assert.deepStrictEqual(test_object.GetOwnWritableNames(object), + ['5', + 'normal', + 'unenumerable', + 'writable', + fooSymbol]); + + assert.deepStrictEqual(test_object.GetEnumerableConfigurableNames(object), + ['5', + 'normal', + 'configurable', + fooSymbol, + 'inherited']); + + assert.deepStrictEqual(test_object.GetOwnConfigurableNames(object), + ['5', + 'normal', + 'unenumerable', + 'configurable', + fooSymbol]); } // Verify that passing NULL to napi_set_property() results in the correct diff --git a/test/js-native-api/test_object/test_object.c b/test/js-native-api/test_object/test_object.c index d897e8d0d041f6..3ae54a9b7cd65c 100644 --- a/test/js-native-api/test_object/test_object.c +++ b/test/js-native-api/test_object/test_object.c @@ -106,6 +106,119 @@ static napi_value GetSymbolNames(napi_env env, napi_callback_info info) { return output; } +static napi_value GetEnumerableWritableNames(napi_env env, + napi_callback_info info) { + size_t argc = 1; + napi_value args[1]; + NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); + + NODE_API_ASSERT(env, argc >= 1, "Wrong number of arguments"); + + napi_valuetype value_type0; + NODE_API_CALL(env, napi_typeof(env, args[0], &value_type0)); + + NODE_API_ASSERT( + env, + value_type0 == napi_object, + "Wrong type of arguments. Expects an object as first argument."); + + napi_value output; + NODE_API_CALL( + env, + napi_get_all_property_names(env, + args[0], + napi_key_include_prototypes, + napi_key_enumerable | napi_key_writable, + napi_key_numbers_to_strings, + &output)); + + return output; +} + +static napi_value GetOwnWritableNames(napi_env env, napi_callback_info info) { + size_t argc = 1; + napi_value args[1]; + NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); + + NODE_API_ASSERT(env, argc >= 1, "Wrong number of arguments"); + + napi_valuetype value_type0; + NODE_API_CALL(env, napi_typeof(env, args[0], &value_type0)); + + NODE_API_ASSERT( + env, + value_type0 == napi_object, + "Wrong type of arguments. Expects an object as first argument."); + + napi_value output; + NODE_API_CALL(env, + napi_get_all_property_names(env, + args[0], + napi_key_own_only, + napi_key_writable, + napi_key_numbers_to_strings, + &output)); + + return output; +} + +static napi_value GetEnumerableConfigurableNames(napi_env env, + napi_callback_info info) { + size_t argc = 1; + napi_value args[1]; + NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); + + NODE_API_ASSERT(env, argc >= 1, "Wrong number of arguments"); + + napi_valuetype value_type0; + NODE_API_CALL(env, napi_typeof(env, args[0], &value_type0)); + + NODE_API_ASSERT( + env, + value_type0 == napi_object, + "Wrong type of arguments. Expects an object as first argument."); + + napi_value output; + NODE_API_CALL( + env, + napi_get_all_property_names(env, + args[0], + napi_key_include_prototypes, + napi_key_enumerable | napi_key_configurable, + napi_key_numbers_to_strings, + &output)); + + return output; +} + +static napi_value GetOwnConfigurableNames(napi_env env, + napi_callback_info info) { + size_t argc = 1; + napi_value args[1]; + NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); + + NODE_API_ASSERT(env, argc >= 1, "Wrong number of arguments"); + + napi_valuetype value_type0; + NODE_API_CALL(env, napi_typeof(env, args[0], &value_type0)); + + NODE_API_ASSERT( + env, + value_type0 == napi_object, + "Wrong type of arguments. Expects an object as first argument."); + + napi_value output; + NODE_API_CALL(env, + napi_get_all_property_names(env, + args[0], + napi_key_own_only, + napi_key_configurable, + napi_key_numbers_to_strings, + &output)); + + return output; +} + static napi_value Set(napi_env env, napi_callback_info info) { size_t argc = 3; napi_value args[3]; @@ -492,9 +605,12 @@ static napi_value TestSeal(napi_env env, } // We create two type tags. They are basically 128-bit UUIDs. -static const napi_type_tag type_tags[2] = { +static const napi_type_tag type_tags[5] = { { 0xdaf987b3cc62481a, 0xb745b0497f299531 }, - { 0xbb7936c374084d9b, 0xa9548d0762eeedb9 } + { 0xbb7936c374084d9b, 0xa9548d0762eeedb9 }, + { 0xa5ed9ce2e4c00c38, 0 }, + { 0, 0 }, + { 0xa5ed9ce2e4c00c38, 0xdaf987b3cc62481a }, }; static napi_value @@ -536,6 +652,10 @@ napi_value Init(napi_env env, napi_value exports) { DECLARE_NODE_API_PROPERTY("GetNamed", GetNamed), DECLARE_NODE_API_PROPERTY("GetPropertyNames", GetPropertyNames), DECLARE_NODE_API_PROPERTY("GetSymbolNames", GetSymbolNames), + DECLARE_NODE_API_PROPERTY("GetEnumerableWritableNames", GetEnumerableWritableNames), + DECLARE_NODE_API_PROPERTY("GetOwnWritableNames", GetOwnWritableNames), + DECLARE_NODE_API_PROPERTY("GetEnumerableConfigurableNames", GetEnumerableConfigurableNames), + DECLARE_NODE_API_PROPERTY("GetOwnConfigurableNames", GetOwnConfigurableNames), DECLARE_NODE_API_PROPERTY("Set", Set), DECLARE_NODE_API_PROPERTY("SetNamed", SetNamed), DECLARE_NODE_API_PROPERTY("Has", Has), diff --git a/test/js-native-api/test_reference/test_finalizer.js b/test/js-native-api/test_reference/test_finalizer.js new file mode 100644 index 00000000000000..b70582fd0342fe --- /dev/null +++ b/test/js-native-api/test_reference/test_finalizer.js @@ -0,0 +1,20 @@ +'use strict'; +// Flags: --expose-gc --force-node-api-uncaught-exceptions-policy + +const common = require('../../common'); +const test_reference = require(`./build/${common.buildType}/test_reference`); +const assert = require('assert'); + +process.on('uncaughtException', common.mustCall((err) => { + assert.throws(() => { throw err; }, /finalizer error/); +})); + +(async function() { + { + test_reference.createExternalWithJsFinalize( + common.mustCall(() => { + throw new Error('finalizer error'); + })); + } + global.gc(); +})().then(common.mustCall()); diff --git a/test/js-native-api/test_reference/test_reference.c b/test/js-native-api/test_reference/test_reference.c index 4a224efbd8cf6d..e9f3ec7a919542 100644 --- a/test/js-native-api/test_reference/test_reference.c +++ b/test/js-native-api/test_reference/test_reference.c @@ -21,6 +21,20 @@ static void FinalizeExternal(napi_env env, void* data, void* hint) { finalize_count++; } +static void FinalizeExternalCallJs(napi_env env, void* data, void* hint) { + int *actual_value = data; + NODE_API_ASSERT_RETURN_VOID(env, actual_value == &test_value, + "The correct pointer was passed to the finalizer"); + + napi_ref finalizer_ref = (napi_ref)hint; + napi_value js_finalizer; + napi_value recv; + NODE_API_CALL_RETURN_VOID(env, napi_get_reference_value(env, finalizer_ref, &js_finalizer)); + NODE_API_CALL_RETURN_VOID(env, napi_get_global(env, &recv)); + NODE_API_CALL_RETURN_VOID(env, napi_call_function(env, recv, js_finalizer, 0, NULL, NULL)); + NODE_API_CALL_RETURN_VOID(env, napi_delete_reference(env, finalizer_ref)); +} + static napi_value CreateExternal(napi_env env, napi_callback_info info) { int* data = &test_value; @@ -99,6 +113,31 @@ CreateExternalWithFinalize(napi_env env, napi_callback_info info) { return result; } +static napi_value +CreateExternalWithJsFinalize(napi_env env, napi_callback_info info) { + size_t argc = 1; + napi_value args[1]; + NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); + NODE_API_ASSERT(env, argc == 1, "Wrong number of arguments"); + napi_value finalizer = args[0]; + napi_valuetype finalizer_valuetype; + NODE_API_CALL(env, napi_typeof(env, finalizer, &finalizer_valuetype)); + NODE_API_ASSERT(env, finalizer_valuetype == napi_function, "Wrong type of first argument"); + napi_ref finalizer_ref; + NODE_API_CALL(env, napi_create_reference(env, finalizer, 1, &finalizer_ref)); + + napi_value result; + NODE_API_CALL(env, + napi_create_external(env, + &test_value, + FinalizeExternalCallJs, + finalizer_ref, /* finalize_hint */ + &result)); + + finalize_count = 0; + return result; +} + static napi_value CheckExternal(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value arg; @@ -223,6 +262,8 @@ napi_value Init(napi_env env, napi_value exports) { DECLARE_NODE_API_PROPERTY("createExternal", CreateExternal), DECLARE_NODE_API_PROPERTY("createExternalWithFinalize", CreateExternalWithFinalize), + DECLARE_NODE_API_PROPERTY("createExternalWithJsFinalize", + CreateExternalWithJsFinalize), DECLARE_NODE_API_PROPERTY("checkExternal", CheckExternal), DECLARE_NODE_API_PROPERTY("createReference", CreateReference), DECLARE_NODE_API_PROPERTY("createSymbol", CreateSymbol), @@ -234,7 +275,7 @@ napi_value Init(napi_env env, napi_value exports) { DECLARE_NODE_API_PROPERTY("decrementRefcount", DecrementRefcount), DECLARE_NODE_API_GETTER("referenceValue", GetReferenceValue), DECLARE_NODE_API_PROPERTY("validateDeleteBeforeFinalize", - ValidateDeleteBeforeFinalize), + ValidateDeleteBeforeFinalize), }; NODE_API_CALL(env, napi_define_properties( diff --git a/test/message/error_aggregateTwoErrors.out b/test/message/error_aggregateTwoErrors.out index d1dc13eacc303c..02e8738d47f57a 100644 --- a/test/message/error_aggregateTwoErrors.out +++ b/test/message/error_aggregateTwoErrors.out @@ -9,5 +9,27 @@ AggregateError: original at Function.Module._load (node:internal/modules/cjs/loader:*:*) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:*:*) at node:internal/main/run_main_module:*:* { - code: 'ERR0' + code: 'ERR0', + [errors]: [ + Error: original + at Object. (*test*message*error_aggregateTwoErrors.js:*:*) + at Module._compile (node:internal/modules/cjs/loader:*:*) + at Object.Module._extensions..js (node:internal/modules/cjs/loader:*:*) + at Module.load (node:internal/modules/cjs/loader:*:*) + at Function.Module._load (node:internal/modules/cjs/loader:*:*) + at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:*:*) + at node:internal/main/run_main_module:*:* { + code: 'ERR0' + }, + Error: second error + at Object. (*test*message*error_aggregateTwoErrors.js:*:*) + at Module._compile (node:internal/modules/cjs/loader:*:*) + at Object.Module._extensions..js (node:internal/modules/cjs/loader:*:*) + at Module.load (node:internal/modules/cjs/loader:*:*) + at Function.Module._load (node:internal/modules/cjs/loader:*:*) + at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:*:*) + at node:internal/main/run_main_module:*:* { + code: 'ERR1' + } + ] } diff --git a/test/message/source_map_eval.js b/test/message/source_map_eval.js new file mode 100644 index 00000000000000..534d16bd34c28f --- /dev/null +++ b/test/message/source_map_eval.js @@ -0,0 +1,8 @@ +// Flags: --enable-source-maps + +'use strict'; +require('../common'); +const fs = require('fs'); + +const content = fs.readFileSync(require.resolve('../fixtures/source-map/tabs.js'), 'utf8'); +eval(content); diff --git a/test/message/source_map_eval.out b/test/message/source_map_eval.out new file mode 100644 index 00000000000000..7cfd7c84fe6579 --- /dev/null +++ b/test/message/source_map_eval.out @@ -0,0 +1,10 @@ +ReferenceError: alert is not defined + at Object.eval (*tabs.coffee:26:2) + at eval (*tabs.coffee:1:14) + at Object. (*source_map_eval.js:8:1) + at Module._compile (node:internal/modules/cjs/loader:*) + at Object.Module._extensions..js (node:internal/modules/cjs/loader:*) + at Module.load (node:internal/modules/cjs/loader:*) + at Function.Module._load (node:internal/modules/cjs/loader:*) + at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:*) + at node:internal/main/run_main_module:* diff --git a/test/message/test_runner_abort.js b/test/message/test_runner_abort.js new file mode 100644 index 00000000000000..bb1e473f89c6eb --- /dev/null +++ b/test/message/test_runner_abort.js @@ -0,0 +1,47 @@ +// Flags: --no-warnings +'use strict'; +require('../common'); +const test = require('node:test'); + +test('promise timeout signal', { signal: AbortSignal.timeout(1) }, async (t) => { + await Promise.all([ + t.test('ok 1', async () => {}), + t.test('ok 2', () => {}), + t.test('ok 3', { signal: t.signal }, async () => {}), + t.test('ok 4', { signal: t.signal }, () => {}), + t.test('not ok 1', () => new Promise(() => {})), + t.test('not ok 2', (t, done) => {}), + t.test('not ok 3', { signal: t.signal }, () => new Promise(() => {})), + t.test('not ok 4', { signal: t.signal }, (t, done) => {}), + t.test('not ok 5', { signal: t.signal }, (t, done) => { + t.signal.addEventListener('abort', done); + }), + ]); +}); + +test('promise abort signal', { signal: AbortSignal.abort() }, async (t) => { + await t.test('should not appear', () => {}); +}); + +test('callback timeout signal', { signal: AbortSignal.timeout(1) }, (t, done) => { + t.test('ok 1', async () => {}); + t.test('ok 2', () => {}); + t.test('ok 3', { signal: t.signal }, async () => {}); + t.test('ok 4', { signal: t.signal }, () => {}); + t.test('not ok 1', () => new Promise(() => {})); + t.test('not ok 2', (t, done) => {}); + t.test('not ok 3', { signal: t.signal }, () => new Promise(() => {})); + t.test('not ok 4', { signal: t.signal }, (t, done) => {}); + t.test('not ok 5', { signal: t.signal }, (t, done) => { + t.signal.addEventListener('abort', done); + }); +}); + +test('callback abort signal', { signal: AbortSignal.abort() }, (t, done) => { + t.test('should not appear', done); +}); + +// AbortSignal.timeout(1) doesn't prevent process from closing +// thus we have to keep the process open to prevent cancelation +// of the entire test tree +setTimeout(() => {}, 1000); diff --git a/test/message/test_runner_abort.out b/test/message/test_runner_abort.out new file mode 100644 index 00000000000000..26f89a29dbb8f7 --- /dev/null +++ b/test/message/test_runner_abort.out @@ -0,0 +1,249 @@ +TAP version 13 +# Subtest: promise timeout signal + # Subtest: ok 1 + ok 1 - ok 1 + --- + duration_ms: * + ... + # Subtest: ok 2 + ok 2 - ok 2 + --- + duration_ms: * + ... + # Subtest: ok 3 + ok 3 - ok 3 + --- + duration_ms: * + ... + # Subtest: ok 4 + ok 4 - ok 4 + --- + duration_ms: * + ... + # Subtest: not ok 1 + not ok 5 - not ok 1 + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + ... + # Subtest: not ok 2 + not ok 6 - not ok 2 + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + ... + # Subtest: not ok 3 + not ok 7 - not ok 3 + --- + duration_ms: * + error: 'This operation was aborted' + code: 20 + stack: |- + * + * + * + * + * + * + * + * + * + * + ... + # Subtest: not ok 4 + not ok 8 - not ok 4 + --- + duration_ms: * + error: 'This operation was aborted' + code: 20 + stack: |- + * + * + * + * + * + * + * + * + * + * + ... + # Subtest: not ok 5 + not ok 9 - not ok 5 + --- + duration_ms: * + error: 'This operation was aborted' + code: 20 + stack: |- + * + * + * + * + * + * + * + * + * + * + ... + 1..9 +not ok 1 - promise timeout signal + --- + duration_ms: * + error: 'The operation was aborted due to timeout' + code: 23 + stack: |- + * + * + * + * + ... +# Subtest: promise abort signal +not ok 2 - promise abort signal + --- + duration_ms: * + error: 'This operation was aborted' + code: 20 + stack: |- + * + * + * + * + * + * + * + * + * + ... +# Subtest: callback timeout signal + # Subtest: ok 1 + ok 1 - ok 1 + --- + duration_ms: * + ... + # Subtest: ok 2 + ok 2 - ok 2 + --- + duration_ms: * + ... + # Subtest: ok 3 + ok 3 - ok 3 + --- + duration_ms: * + ... + # Subtest: ok 4 + ok 4 - ok 4 + --- + duration_ms: * + ... + # Subtest: not ok 1 + not ok 5 - not ok 1 + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + ... + # Subtest: not ok 2 + not ok 6 - not ok 2 + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + ... + # Subtest: not ok 3 + not ok 7 - not ok 3 + --- + duration_ms: * + error: 'This operation was aborted' + code: 20 + stack: |- + * + * + * + * + * + * + * + * + * + * + ... + # Subtest: not ok 4 + not ok 8 - not ok 4 + --- + duration_ms: * + error: 'This operation was aborted' + code: 20 + stack: |- + * + * + * + * + * + * + * + * + * + * + ... + # Subtest: not ok 5 + not ok 9 - not ok 5 + --- + duration_ms: * + error: 'This operation was aborted' + code: 20 + stack: |- + * + * + * + * + * + * + * + * + * + * + ... + 1..9 +not ok 3 - callback timeout signal + --- + duration_ms: * + error: 'The operation was aborted due to timeout' + code: 23 + stack: |- + * + * + * + * + ... +# Subtest: callback abort signal +not ok 4 - callback abort signal + --- + duration_ms: * + error: 'This operation was aborted' + code: 20 + stack: |- + * + * + * + * + * + * + * + * + * + ... +1..4 +# tests 4 +# pass 0 +# fail 0 +# cancelled 4 +# skipped 0 +# todo 0 +# duration_ms * diff --git a/test/message/test_runner_abort_suite.js b/test/message/test_runner_abort_suite.js new file mode 100644 index 00000000000000..61415c5cca93f7 --- /dev/null +++ b/test/message/test_runner_abort_suite.js @@ -0,0 +1,27 @@ +// Flags: --no-warnings +'use strict'; +require('../common'); +const { describe, it } = require('node:test'); + +describe('describe timeout signal', { signal: AbortSignal.timeout(1) }, (t) => { + it('ok 1', async () => {}); + it('ok 2', () => {}); + it('ok 3', { signal: t.signal }, async () => {}); + it('ok 4', { signal: t.signal }, () => {}); + it('not ok 1', () => new Promise(() => {})); + it('not ok 2', (done) => {}); + it('not ok 3', { signal: t.signal }, () => new Promise(() => {})); + it('not ok 4', { signal: t.signal }, (done) => {}); + it('not ok 5', { signal: t.signal }, function(done) { + this.signal.addEventListener('abort', done); + }); +}); + +describe('describe abort signal', { signal: AbortSignal.abort() }, () => { + it('should not appear', () => {}); +}); + +// AbortSignal.timeout(1) doesn't prevent process from closing +// thus we have to keep the process open to prevent cancelation +// of the entire test tree +setTimeout(() => {}, 1000); diff --git a/test/message/test_runner_abort_suite.out b/test/message/test_runner_abort_suite.out new file mode 100644 index 00000000000000..38669978406b4f --- /dev/null +++ b/test/message/test_runner_abort_suite.out @@ -0,0 +1,99 @@ +TAP version 13 +# Subtest: describe timeout signal + # Subtest: ok 1 + ok 1 - ok 1 + --- + duration_ms: * + ... + # Subtest: ok 2 + ok 2 - ok 2 + --- + duration_ms: * + ... + # Subtest: ok 3 + ok 3 - ok 3 + --- + duration_ms: * + ... + # Subtest: ok 4 + ok 4 - ok 4 + --- + duration_ms: * + ... + # Subtest: not ok 1 + not ok 5 - not ok 1 + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + ... + # Subtest: not ok 2 + not ok 6 - not ok 2 + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + ... + # Subtest: not ok 3 + not ok 7 - not ok 3 + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + ... + # Subtest: not ok 4 + not ok 8 - not ok 4 + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + ... + # Subtest: not ok 5 + not ok 9 - not ok 5 + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + ... + 1..9 +not ok 1 - describe timeout signal + --- + duration_ms: * + error: 'The operation was aborted due to timeout' + code: 23 + stack: |- + * + * + * + * + ... +# Subtest: describe abort signal +not ok 2 - describe abort signal + --- + duration_ms: * + error: 'This operation was aborted' + code: 20 + stack: |- + * + * + * + * + * + * + * + * + * + ... +1..2 +# tests 2 +# pass 0 +# fail 0 +# cancelled 2 +# skipped 0 +# todo 0 +# duration_ms * diff --git a/test/message/test_runner_describe_it.js b/test/message/test_runner_describe_it.js new file mode 100644 index 00000000000000..c272fb38a749f6 --- /dev/null +++ b/test/message/test_runner_describe_it.js @@ -0,0 +1,341 @@ +// Flags: --no-warnings +'use strict'; +require('../common'); +const assert = require('node:assert'); +const { describe, it } = require('node:test'); +const util = require('util'); + + +it.todo('sync pass todo', () => { + +}); + +it('sync pass todo with message', { todo: 'this is a passing todo' }, () => { +}); + +it.todo('sync fail todo', () => { + throw new Error('thrown from sync fail todo'); +}); + +it('sync fail todo with message', { todo: 'this is a failing todo' }, () => { + throw new Error('thrown from sync fail todo with message'); +}); + +it.skip('sync skip pass', () => { +}); + +it('sync skip pass with message', { skip: 'this is skipped' }, () => { +}); + +it('sync pass', () => { +}); + +it('sync throw fail', () => { + throw new Error('thrown from sync throw fail'); +}); + +it.skip('async skip pass', async () => { +}); + +it('async pass', async () => { + +}); + +it('async throw fail', async () => { + throw new Error('thrown from async throw fail'); +}); + +it('async skip fail', async (t) => { + t.skip(); + throw new Error('thrown from async throw fail'); +}); + +it('async assertion fail', async () => { + // Make sure the assert module is handled. + assert.strictEqual(true, false); +}); + +it('resolve pass', () => { + return Promise.resolve(); +}); + +it('reject fail', () => { + return Promise.reject(new Error('rejected from reject fail')); +}); + +it('unhandled rejection - passes but warns', () => { + Promise.reject(new Error('rejected from unhandled rejection fail')); +}); + +it('async unhandled rejection - passes but warns', async () => { + Promise.reject(new Error('rejected from async unhandled rejection fail')); +}); + +it('immediate throw - passes but warns', () => { + setImmediate(() => { + throw new Error('thrown from immediate throw fail'); + }); +}); + +it('immediate reject - passes but warns', () => { + setImmediate(() => { + Promise.reject(new Error('rejected from immediate reject fail')); + }); +}); + +it('immediate resolve pass', () => { + return new Promise((resolve) => { + setImmediate(() => { + resolve(); + }); + }); +}); + +describe('subtest sync throw fail', () => { + it('+sync throw fail', () => { + throw new Error('thrown from subtest sync throw fail'); + }); +}); + +it('sync throw non-error fail', async () => { + throw Symbol('thrown symbol from sync throw non-error fail'); +}); + +describe('level 0a', { concurrency: 4 }, () => { + it('level 1a', async () => { + const p1a = new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, 1000); + }); + + return p1a; + }); + + it('level 1b', async () => { + const p1b = new Promise((resolve) => { + resolve(); + }); + + return p1b; + }); + + it('level 1c', async () => { + const p1c = new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, 2000); + }); + + return p1c; + }); + + it('level 1d', async () => { + const p1c = new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, 1500); + }); + + return p1c; + }); + + const p0a = new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, 3000); + }); + + return p0a; +}); + +describe('top level', { concurrency: 2 }, () => { + it('+long running', async () => { + return new Promise((resolve, reject) => { + setTimeout(resolve, 3000).unref(); + }); + }); + + describe('+short running', async () => { + it('++short running', async () => {}); + }); +}); + +describe('invalid subtest - pass but subtest fails', () => { + setImmediate(() => { + it('invalid subtest fail', () => { + throw new Error('this should not be thrown'); + }); + }); +}); + +it.skip('sync skip option', () => { + throw new Error('this should not be executed'); +}); + +it('sync skip option with message', { skip: 'this is skipped' }, () => { + throw new Error('this should not be executed'); +}); + +it('sync skip option is false fail', { skip: false }, () => { + throw new Error('this should be executed'); +}); + +// A test with no arguments provided. +it(); + +// A test with only a named function provided. +it(function functionOnly() {}); + +// A test with only an anonymous function provided. +it(() => {}); + +// A test with only a name provided. +it('test with only a name provided'); + +// A test with an empty string name. +it(''); + +// A test with only options provided. +it({ skip: true }); + +// A test with only a name and options provided. +it('test with a name and options provided', { skip: true }); + +// A test with only options and a function provided. +it({ skip: true }, function functionAndOptions() {}); + +// A test whose description needs to be escaped. +it('escaped description \\ # \\#\\'); + +// A test whose skip message needs to be escaped. +it('escaped skip message', { skip: '#skip' }); + +// A test whose todo message needs to be escaped. +it('escaped todo message', { todo: '#todo' }); + +it('callback pass', (done) => { + setImmediate(done); +}); + +it('callback fail', (done) => { + setImmediate(() => { + done(new Error('callback failure')); + }); +}); + +it('sync t is this in test', function() { + assert.deepStrictEqual(this, { signal: this.signal }); +}); + +it('async t is this in test', async function() { + assert.deepStrictEqual(this, { signal: this.signal }); +}); + +it('callback t is this in test', function(done) { + assert.deepStrictEqual(this, { signal: this.signal }); + done(); +}); + +it('callback also returns a Promise', async (done) => { + throw new Error('thrown from callback also returns a Promise'); +}); + +it('callback throw', (done) => { + throw new Error('thrown from callback throw'); +}); + +it('callback called twice', (done) => { + done(); + done(); +}); + +it('callback called twice in different ticks', (done) => { + setImmediate(done); + done(); +}); + +it('callback called twice in future tick', (done) => { + setImmediate(() => { + done(); + done(); + }); +}); + +it('callback async throw', (done) => { + setImmediate(() => { + throw new Error('thrown from callback async throw'); + }); +}); + +it('callback async throw after done', (done) => { + setImmediate(() => { + throw new Error('thrown from callback async throw after done'); + }); + + done(); +}); + +it('custom inspect symbol fail', () => { + const obj = { + [util.inspect.custom]() { + return 'customized'; + }, + foo: 1 + }; + + throw obj; +}); + +it('custom inspect symbol that throws fail', () => { + const obj = { + [util.inspect.custom]() { + throw new Error('bad-inspect'); + }, + foo: 1 + }; + + throw obj; +}); + +describe('subtest sync throw fails', () => { + it('sync throw fails at first', () => { + throw new Error('thrown from subtest sync throw fails at first'); + }); + it('sync throw fails at second', () => { + throw new Error('thrown from subtest sync throw fails at second'); + }); +}); + +describe('describe sync throw fails', () => { + it('should not run', () => {}); + throw new Error('thrown from describe'); +}); + +describe('describe async throw fails', async () => { + it('should not run', () => {}); + throw new Error('thrown from describe'); +}); + +describe('timeouts', () => { + it('timed out async test', { timeout: 5 }, async () => { + return new Promise((resolve) => { + setTimeout(resolve, 1000); + }); + }); + + it('timed out callback test', { timeout: 5 }, (done) => { + setTimeout(done, 1000); + }); + + + it('large timeout async test is ok', { timeout: 30_000_000 }, async () => { + return new Promise((resolve) => { + setTimeout(resolve, 10); + }); + }); + + it('large timeout callback test is ok', { timeout: 30_000_000 }, (done) => { + setTimeout(done, 10); + }); +}); diff --git a/test/message/test_runner_describe_it.out b/test/message/test_runner_describe_it.out new file mode 100644 index 00000000000000..7961345b976f73 --- /dev/null +++ b/test/message/test_runner_describe_it.out @@ -0,0 +1,627 @@ +TAP version 13 +# Subtest: sync pass todo +ok 1 - sync pass todo # TODO + --- + duration_ms: * + ... +# Subtest: sync pass todo with message +ok 2 - sync pass todo with message # TODO this is a passing todo + --- + duration_ms: * + ... +# Subtest: sync fail todo +not ok 3 - sync fail todo # TODO + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from sync fail todo' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + ... +# Subtest: sync fail todo with message +not ok 4 - sync fail todo with message # TODO this is a failing todo + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from sync fail todo with message' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + * + * + ... +# Subtest: sync skip pass +ok 5 - sync skip pass # SKIP + --- + duration_ms: * + ... +# Subtest: sync skip pass with message +ok 6 - sync skip pass with message # SKIP this is skipped + --- + duration_ms: * + ... +# Subtest: sync pass +ok 7 - sync pass + --- + duration_ms: * + ... +# Subtest: sync throw fail +not ok 8 - sync throw fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from sync throw fail' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + ... +# Subtest: async skip pass +ok 9 - async skip pass # SKIP + --- + duration_ms: * + ... +# Subtest: async pass +ok 10 - async pass + --- + duration_ms: * + ... +# Subtest: async throw fail +not ok 11 - async throw fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from async throw fail' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + ... +# Subtest: async skip fail +not ok 12 - async skip fail + --- + duration_ms: * + failureType: 'callbackAndPromisePresent' + error: 'passed a callback but also returned a Promise' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: async assertion fail +not ok 13 - async assertion fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: |- + Expected values to be strictly equal: + + true !== false + + code: 'ERR_ASSERTION' + stack: |- + * + * + * + * + * + * + * + ... +# Subtest: resolve pass +ok 14 - resolve pass + --- + duration_ms: * + ... +# Subtest: reject fail +not ok 15 - reject fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'rejected from reject fail' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + ... +# Subtest: unhandled rejection - passes but warns +ok 16 - unhandled rejection - passes but warns + --- + duration_ms: * + ... +# Subtest: async unhandled rejection - passes but warns +ok 17 - async unhandled rejection - passes but warns + --- + duration_ms: * + ... +# Subtest: immediate throw - passes but warns +ok 18 - immediate throw - passes but warns + --- + duration_ms: * + ... +# Subtest: immediate reject - passes but warns +ok 19 - immediate reject - passes but warns + --- + duration_ms: * + ... +# Subtest: immediate resolve pass +ok 20 - immediate resolve pass + --- + duration_ms: * + ... +# Subtest: subtest sync throw fail + # Subtest: +sync throw fail + not ok 1 - +sync throw fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from subtest sync throw fail' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + * + * + ... + 1..1 +not ok 21 - subtest sync throw fail + --- + duration_ms: * + failureType: 'subtestsFailed' + error: '1 subtest failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: sync throw non-error fail +not ok 22 - sync throw non-error fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'Symbol(thrown symbol from sync throw non-error fail)' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: level 0a + # Subtest: level 1a + ok 1 - level 1a + --- + duration_ms: * + ... + # Subtest: level 1b + ok 2 - level 1b + --- + duration_ms: * + ... + # Subtest: level 1c + ok 3 - level 1c + --- + duration_ms: * + ... + # Subtest: level 1d + ok 4 - level 1d + --- + duration_ms: * + ... + 1..4 +ok 23 - level 0a + --- + duration_ms: * + ... +# Subtest: top level + # Subtest: +long running + ok 1 - +long running + --- + duration_ms: * + ... + # Subtest: +short running + # Subtest: ++short running + ok 1 - ++short running + --- + duration_ms: * + ... + 1..1 + ok 2 - +short running + --- + duration_ms: * + ... + 1..2 +ok 24 - top level + --- + duration_ms: * + ... +# Subtest: invalid subtest - pass but subtest fails +ok 25 - invalid subtest - pass but subtest fails + --- + duration_ms: * + ... +# Subtest: sync skip option +ok 26 - sync skip option # SKIP + --- + duration_ms: * + ... +# Subtest: sync skip option with message +ok 27 - sync skip option with message # SKIP this is skipped + --- + duration_ms: * + ... +# Subtest: sync skip option is false fail +not ok 28 - sync skip option is false fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'this should be executed' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + ... +# Subtest: +ok 29 - + --- + duration_ms: * + ... +# Subtest: functionOnly +ok 30 - functionOnly + --- + duration_ms: * + ... +# Subtest: +ok 31 - + --- + duration_ms: * + ... +# Subtest: test with only a name provided +ok 32 - test with only a name provided + --- + duration_ms: * + ... +# Subtest: +ok 33 - + --- + duration_ms: * + ... +# Subtest: +ok 34 - # SKIP + --- + duration_ms: * + ... +# Subtest: test with a name and options provided +ok 35 - test with a name and options provided # SKIP + --- + duration_ms: * + ... +# Subtest: functionAndOptions +ok 36 - functionAndOptions # SKIP + --- + duration_ms: * + ... +# Subtest: escaped description \\ \# \\\#\\ +ok 37 - escaped description \\ \# \\\#\\ + --- + duration_ms: * + ... +# Subtest: escaped skip message +ok 38 - escaped skip message # SKIP \#skip + --- + duration_ms: * + ... +# Subtest: escaped todo message +ok 39 - escaped todo message # TODO \#todo + --- + duration_ms: * + ... +# Subtest: callback pass +ok 40 - callback pass + --- + duration_ms: * + ... +# Subtest: callback fail +not ok 41 - callback fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'callback failure' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + ... +# Subtest: sync t is this in test +ok 42 - sync t is this in test + --- + duration_ms: * + ... +# Subtest: async t is this in test +ok 43 - async t is this in test + --- + duration_ms: * + ... +# Subtest: callback t is this in test +ok 44 - callback t is this in test + --- + duration_ms: * + ... +# Subtest: callback also returns a Promise +not ok 45 - callback also returns a Promise + --- + duration_ms: * + failureType: 'callbackAndPromisePresent' + error: 'passed a callback but also returned a Promise' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: callback throw +not ok 46 - callback throw + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from callback throw' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + ... +# Subtest: callback called twice +not ok 47 - callback called twice + --- + duration_ms: * + failureType: 'multipleCallbackInvocations' + error: 'callback invoked multiple times' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + ... +# Subtest: callback called twice in different ticks +ok 48 - callback called twice in different ticks + --- + duration_ms: * + ... +# Subtest: callback called twice in future tick +not ok 49 - callback called twice in future tick + --- + duration_ms: * + failureType: 'uncaughtException' + error: 'callback invoked multiple times' + code: 'ERR_TEST_FAILURE' + stack: |- + * + ... +# Subtest: callback async throw +not ok 50 - callback async throw + --- + duration_ms: * + failureType: 'uncaughtException' + error: 'thrown from callback async throw' + code: 'ERR_TEST_FAILURE' + stack: |- + * + ... +# Subtest: callback async throw after done +ok 51 - callback async throw after done + --- + duration_ms: * + ... +# Subtest: custom inspect symbol fail +not ok 52 - custom inspect symbol fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'customized' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: custom inspect symbol that throws fail +not ok 53 - custom inspect symbol that throws fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: |- + { + foo: 1, + [Symbol(nodejs.util.inspect.custom)]: [Function: [nodejs.util.inspect.custom]] + } + code: 'ERR_TEST_FAILURE' + ... +# Subtest: subtest sync throw fails + # Subtest: sync throw fails at first + not ok 1 - sync throw fails at first + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from subtest sync throw fails at first' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + * + * + ... + # Subtest: sync throw fails at second + not ok 2 - sync throw fails at second + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from subtest sync throw fails at second' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + * + * + ... + 1..2 +not ok 54 - subtest sync throw fails + --- + duration_ms: * + failureType: 'subtestsFailed' + error: '2 subtests failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: describe sync throw fails + # Subtest: should not run + not ok 1 - should not run + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + ... + 1..1 +not ok 55 - describe sync throw fails + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from describe' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + * + * + ... +# Subtest: describe async throw fails + # Subtest: should not run + not ok 1 - should not run + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + ... + 1..1 +not ok 56 - describe async throw fails + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from describe' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + * + * + ... +# Subtest: timeouts + # Subtest: timed out async test + not ok 1 - timed out async test + --- + duration_ms: * + failureType: 'testTimeoutFailure' + error: 'test timed out after 5ms' + code: 'ERR_TEST_FAILURE' + stack: |- + * + ... + # Subtest: timed out callback test + not ok 2 - timed out callback test + --- + duration_ms: * + failureType: 'testTimeoutFailure' + error: 'test timed out after 5ms' + code: 'ERR_TEST_FAILURE' + ... + # Subtest: large timeout async test is ok + ok 3 - large timeout async test is ok + --- + duration_ms: * + ... + # Subtest: large timeout callback test is ok + ok 4 - large timeout callback test is ok + --- + duration_ms: * + ... + 1..4 +not ok 57 - timeouts + --- + duration_ms: * + failureType: 'subtestsFailed' + error: '2 subtests failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: invalid subtest fail +not ok 58 - invalid subtest fail + --- + duration_ms: * + failureType: 'parentAlreadyFinished' + error: 'test could not be started because its parent finished' + code: 'ERR_TEST_FAILURE' + stack: |- + * + ... +1..58 +# Warning: Test "unhandled rejection - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from unhandled rejection fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. +# Warning: Test "async unhandled rejection - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from async unhandled rejection fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. +# Warning: Test "immediate throw - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from immediate throw fail" and would have caused the test to fail, but instead triggered an uncaughtException event. +# Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. +# Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. +# Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event. +# tests 58 +# pass 23 +# fail 21 +# cancelled 0 +# skipped 9 +# todo 5 +# duration_ms * diff --git a/test/message/test_runner_no_refs.js b/test/message/test_runner_no_refs.js new file mode 100644 index 00000000000000..8f2815f067af15 --- /dev/null +++ b/test/message/test_runner_no_refs.js @@ -0,0 +1,13 @@ +// Flags: --no-warnings +'use strict'; +require('../common'); +const test = require('node:test'); + +// When run alone, the test below does not keep the event loop alive. +test('does not keep event loop alive', async (t) => { + await t.test('+does not keep event loop alive', async (t) => { + return new Promise((resolve) => { + setTimeout(resolve, 1000).unref(); + }); + }); +}); diff --git a/test/message/test_runner_no_refs.out b/test/message/test_runner_no_refs.out new file mode 100644 index 00000000000000..63b79cd57d777f --- /dev/null +++ b/test/message/test_runner_no_refs.out @@ -0,0 +1,30 @@ +TAP version 13 +# Subtest: does not keep event loop alive + # Subtest: +does not keep event loop alive + not ok 1 - +does not keep event loop alive + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + stack: |- + * + ... + 1..1 +not ok 1 - does not keep event loop alive + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + stack: |- + * + ... +1..1 +# tests 1 +# pass 0 +# fail 0 +# cancelled 1 +# skipped 0 +# todo 0 +# duration_ms * diff --git a/test/message/test_runner_no_tests.js b/test/message/test_runner_no_tests.js new file mode 100644 index 00000000000000..c4d226c0bd27d6 --- /dev/null +++ b/test/message/test_runner_no_tests.js @@ -0,0 +1,7 @@ +// Flags: --no-warnings +'use strict'; +require('../common'); +const test = require('node:test'); + +// No TAP output should be generated. +console.log(test.name); diff --git a/test/message/test_runner_no_tests.out b/test/message/test_runner_no_tests.out new file mode 100644 index 00000000000000..9f84e58dc125f8 --- /dev/null +++ b/test/message/test_runner_no_tests.out @@ -0,0 +1 @@ +bound test diff --git a/test/message/test_runner_only_tests.js b/test/message/test_runner_only_tests.js new file mode 100644 index 00000000000000..b6aeb580af94b4 --- /dev/null +++ b/test/message/test_runner_only_tests.js @@ -0,0 +1,48 @@ +// Flags: --no-warnings --test-only +'use strict'; +require('../common'); +const test = require('node:test'); + +// These tests should be skipped based on the 'only' option. +test('only = undefined'); +test('only = undefined, skip = string', { skip: 'skip message' }); +test('only = undefined, skip = true', { skip: true }); +test('only = undefined, skip = false', { skip: false }); +test('only = false', { only: false }); +test('only = false, skip = string', { only: false, skip: 'skip message' }); +test('only = false, skip = true', { only: false, skip: true }); +test('only = false, skip = false', { only: false, skip: false }); + +// These tests should be skipped based on the 'skip' option. +test('only = true, skip = string', { only: true, skip: 'skip message' }); +test('only = true, skip = true', { only: true, skip: true }); + +// An 'only' test with subtests. +test('only = true, with subtests', { only: true }, async (t) => { + // These subtests should run. + await t.test('running subtest 1'); + await t.test('running subtest 2'); + + // Switch the context to only execute 'only' tests. + t.runOnly(true); + await t.test('skipped subtest 1'); + await t.test('skipped subtest 2'); + await t.test('running subtest 3', { only: true }); + + // Switch the context back to execute all tests. + t.runOnly(false); + await t.test('running subtest 4', async (t) => { + // These subtests should run. + await t.test('running sub-subtest 1'); + await t.test('running sub-subtest 2'); + + // Switch the context to only execute 'only' tests. + t.runOnly(true); + await t.test('skipped sub-subtest 1'); + await t.test('skipped sub-subtest 2'); + }); + + // Explicitly do not run these tests. + await t.test('skipped subtest 3', { only: false }); + await t.test('skipped subtest 4', { skip: true }); +}); diff --git a/test/message/test_runner_only_tests.out b/test/message/test_runner_only_tests.out new file mode 100644 index 00000000000000..c471a5284e7ebc --- /dev/null +++ b/test/message/test_runner_only_tests.out @@ -0,0 +1,126 @@ +TAP version 13 +# Subtest: only = undefined +ok 1 - only = undefined # SKIP 'only' option not set + --- + duration_ms: * + ... +# Subtest: only = undefined, skip = string +ok 2 - only = undefined, skip = string # SKIP 'only' option not set + --- + duration_ms: * + ... +# Subtest: only = undefined, skip = true +ok 3 - only = undefined, skip = true # SKIP 'only' option not set + --- + duration_ms: * + ... +# Subtest: only = undefined, skip = false +ok 4 - only = undefined, skip = false # SKIP 'only' option not set + --- + duration_ms: * + ... +# Subtest: only = false +ok 5 - only = false # SKIP 'only' option not set + --- + duration_ms: * + ... +# Subtest: only = false, skip = string +ok 6 - only = false, skip = string # SKIP 'only' option not set + --- + duration_ms: * + ... +# Subtest: only = false, skip = true +ok 7 - only = false, skip = true # SKIP 'only' option not set + --- + duration_ms: * + ... +# Subtest: only = false, skip = false +ok 8 - only = false, skip = false # SKIP 'only' option not set + --- + duration_ms: * + ... +# Subtest: only = true, skip = string +ok 9 - only = true, skip = string # SKIP skip message + --- + duration_ms: * + ... +# Subtest: only = true, skip = true +ok 10 - only = true, skip = true # SKIP + --- + duration_ms: * + ... +# Subtest: only = true, with subtests + # Subtest: running subtest 1 + ok 1 - running subtest 1 + --- + duration_ms: * + ... + # Subtest: running subtest 2 + ok 2 - running subtest 2 + --- + duration_ms: * + ... + # Subtest: skipped subtest 1 + ok 3 - skipped subtest 1 # SKIP 'only' option not set + --- + duration_ms: * + ... + # Subtest: skipped subtest 2 + ok 4 - skipped subtest 2 # SKIP 'only' option not set + --- + duration_ms: * + ... + # Subtest: running subtest 3 + ok 5 - running subtest 3 + --- + duration_ms: * + ... + # Subtest: running subtest 4 + # Subtest: running sub-subtest 1 + ok 1 - running sub-subtest 1 + --- + duration_ms: * + ... + # Subtest: running sub-subtest 2 + ok 2 - running sub-subtest 2 + --- + duration_ms: * + ... + # Subtest: skipped sub-subtest 1 + ok 3 - skipped sub-subtest 1 # SKIP 'only' option not set + --- + duration_ms: * + ... + # Subtest: skipped sub-subtest 2 + ok 4 - skipped sub-subtest 2 # SKIP 'only' option not set + --- + duration_ms: * + ... + 1..4 + ok 6 - running subtest 4 + --- + duration_ms: * + ... + # Subtest: skipped subtest 3 + ok 7 - skipped subtest 3 # SKIP 'only' option not set + --- + duration_ms: * + ... + # Subtest: skipped subtest 4 + ok 8 - skipped subtest 4 # SKIP + --- + duration_ms: * + ... + 1..8 +ok 11 - only = true, with subtests + --- + duration_ms: * + ... +1..11 +# tests 11 +# pass 1 +# fail 0 +# cancelled 0 +# skipped 10 +# todo 0 +# duration_ms * diff --git a/test/message/test_runner_output.js b/test/message/test_runner_output.js new file mode 100644 index 00000000000000..33e17e6a082ca7 --- /dev/null +++ b/test/message/test_runner_output.js @@ -0,0 +1,351 @@ +// Flags: --no-warnings +'use strict'; +require('../common'); +const assert = require('node:assert'); +const test = require('node:test'); +const util = require('util'); + +test('sync pass todo', (t) => { + t.todo(); +}); + +test('sync pass todo with message', (t) => { + t.todo('this is a passing todo'); +}); + +test('sync fail todo', (t) => { + t.todo(); + throw new Error('thrown from sync fail todo'); +}); + +test('sync fail todo with message', (t) => { + t.todo('this is a failing todo'); + throw new Error('thrown from sync fail todo with message'); +}); + +test('sync skip pass', (t) => { + t.skip(); +}); + +test('sync skip pass with message', (t) => { + t.skip('this is skipped'); +}); + +test('sync pass', (t) => { + t.diagnostic('this test should pass'); +}); + +test('sync throw fail', () => { + throw new Error('thrown from sync throw fail'); +}); + +test('async skip pass', async (t) => { + t.skip(); +}); + +test('async pass', async () => { + +}); + +test('async throw fail', async () => { + throw new Error('thrown from async throw fail'); +}); + +test('async skip fail', async (t) => { + t.skip(); + throw new Error('thrown from async throw fail'); +}); + +test('async assertion fail', async () => { + // Make sure the assert module is handled. + assert.strictEqual(true, false); +}); + +test('resolve pass', () => { + return Promise.resolve(); +}); + +test('reject fail', () => { + return Promise.reject(new Error('rejected from reject fail')); +}); + +test('unhandled rejection - passes but warns', () => { + Promise.reject(new Error('rejected from unhandled rejection fail')); +}); + +test('async unhandled rejection - passes but warns', async () => { + Promise.reject(new Error('rejected from async unhandled rejection fail')); +}); + +test('immediate throw - passes but warns', () => { + setImmediate(() => { + throw new Error('thrown from immediate throw fail'); + }); +}); + +test('immediate reject - passes but warns', () => { + setImmediate(() => { + Promise.reject(new Error('rejected from immediate reject fail')); + }); +}); + +test('immediate resolve pass', () => { + return new Promise((resolve) => { + setImmediate(() => { + resolve(); + }); + }); +}); + +test('subtest sync throw fail', async (t) => { + await t.test('+sync throw fail', (t) => { + t.diagnostic('this subtest should make its parent test fail'); + throw new Error('thrown from subtest sync throw fail'); + }); +}); + +test('sync throw non-error fail', async (t) => { + throw Symbol('thrown symbol from sync throw non-error fail'); +}); + +test('level 0a', { concurrency: 4 }, async (t) => { + t.test('level 1a', async (t) => { + const p1a = new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, 1000); + }); + + return p1a; + }); + + t.test('level 1b', async (t) => { + const p1b = new Promise((resolve) => { + resolve(); + }); + + return p1b; + }); + + t.test('level 1c', async (t) => { + const p1c = new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, 2000); + }); + + return p1c; + }); + + t.test('level 1d', async (t) => { + const p1c = new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, 1500); + }); + + return p1c; + }); + + const p0a = new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, 3000); + }); + + return p0a; +}); + +test('top level', { concurrency: 2 }, async (t) => { + t.test('+long running', async (t) => { + return new Promise((resolve, reject) => { + setTimeout(resolve, 3000).unref(); + }); + }); + + t.test('+short running', async (t) => { + t.test('++short running', async (t) => {}); + }); +}); + +test('invalid subtest - pass but subtest fails', (t) => { + setImmediate(() => { + t.test('invalid subtest fail', () => { + throw new Error('this should not be thrown'); + }); + }); +}); + +test('sync skip option', { skip: true }, (t) => { + throw new Error('this should not be executed'); +}); + +test('sync skip option with message', { skip: 'this is skipped' }, (t) => { + throw new Error('this should not be executed'); +}); + +test('sync skip option is false fail', { skip: false }, (t) => { + throw new Error('this should be executed'); +}); + +// A test with no arguments provided. +test(); + +// A test with only a named function provided. +test(function functionOnly() {}); + +// A test with only an anonymous function provided. +test(() => {}); + +// A test with only a name provided. +test('test with only a name provided'); + +// A test with an empty string name. +test(''); + +// A test with only options provided. +test({ skip: true }); + +// A test with only a name and options provided. +test('test with a name and options provided', { skip: true }); + +// A test with only options and a function provided. +test({ skip: true }, function functionAndOptions() {}); + +// A test whose description needs to be escaped. +test('escaped description \\ # \\#\\'); + +// A test whose skip message needs to be escaped. +test('escaped skip message', { skip: '#skip' }); + +// A test whose todo message needs to be escaped. +test('escaped todo message', { todo: '#todo' }); + +// A test with a diagnostic message that needs to be escaped. +test('escaped diagnostic', (t) => { + t.diagnostic('#diagnostic'); +}); + +test('callback pass', (t, done) => { + setImmediate(done); +}); + +test('callback fail', (t, done) => { + setImmediate(() => { + done(new Error('callback failure')); + }); +}); + +test('sync t is this in test', function(t) { + assert.strictEqual(this, t); +}); + +test('async t is this in test', async function(t) { + assert.strictEqual(this, t); +}); + +test('callback t is this in test', function(t, done) { + assert.strictEqual(this, t); + done(); +}); + +test('callback also returns a Promise', async (t, done) => { + throw new Error('thrown from callback also returns a Promise'); +}); + +test('callback throw', (t, done) => { + throw new Error('thrown from callback throw'); +}); + +test('callback called twice', (t, done) => { + done(); + done(); +}); + +test('callback called twice in different ticks', (t, done) => { + setImmediate(done); + done(); +}); + +test('callback called twice in future tick', (t, done) => { + setImmediate(() => { + done(); + done(); + }); +}); + +test('callback async throw', (t, done) => { + setImmediate(() => { + throw new Error('thrown from callback async throw'); + }); +}); + +test('callback async throw after done', (t, done) => { + setImmediate(() => { + throw new Error('thrown from callback async throw after done'); + }); + + done(); +}); + +test('only is set but not in only mode', { only: true }, async (t) => { + // All of these subtests should run. + await t.test('running subtest 1'); + t.runOnly(true); + await t.test('running subtest 2'); + await t.test('running subtest 3', { only: true }); + t.runOnly(false); + await t.test('running subtest 4'); +}); + +test('custom inspect symbol fail', () => { + const obj = { + [util.inspect.custom]() { + return 'customized'; + }, + foo: 1 + }; + + throw obj; +}); + +test('custom inspect symbol that throws fail', () => { + const obj = { + [util.inspect.custom]() { + throw new Error('bad-inspect'); + }, + foo: 1 + }; + + throw obj; +}); + +test('subtest sync throw fails', async (t) => { + await t.test('sync throw fails at first', (t) => { + throw new Error('thrown from subtest sync throw fails at first'); + }); + await t.test('sync throw fails at second', (t) => { + throw new Error('thrown from subtest sync throw fails at second'); + }); +}); + +test('timed out async test', { timeout: 5 }, async (t) => { + return new Promise((resolve) => { + setTimeout(resolve, 1000); + }); +}); + +test('timed out callback test', { timeout: 5 }, (t, done) => { + setTimeout(done, 1000); +}); + + +test('large timeout async test is ok', { timeout: 30_000_000 }, async (t) => { + return new Promise((resolve) => { + setTimeout(resolve, 10); + }); +}); + +test('large timeout callback test is ok', { timeout: 30_000_000 }, (t, done) => { + setTimeout(done, 10); +}); diff --git a/test/message/test_runner_output.out b/test/message/test_runner_output.out new file mode 100644 index 00000000000000..4e987f8e9f4b94 --- /dev/null +++ b/test/message/test_runner_output.out @@ -0,0 +1,614 @@ +TAP version 13 +# Subtest: sync pass todo +ok 1 - sync pass todo # TODO + --- + duration_ms: * + ... +# Subtest: sync pass todo with message +ok 2 - sync pass todo with message # TODO this is a passing todo + --- + duration_ms: * + ... +# Subtest: sync fail todo +not ok 3 - sync fail todo # TODO + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from sync fail todo' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + ... +# Subtest: sync fail todo with message +not ok 4 - sync fail todo with message # TODO this is a failing todo + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from sync fail todo with message' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + * + * + ... +# Subtest: sync skip pass +ok 5 - sync skip pass # SKIP + --- + duration_ms: * + ... +# Subtest: sync skip pass with message +ok 6 - sync skip pass with message # SKIP this is skipped + --- + duration_ms: * + ... +# Subtest: sync pass +ok 7 - sync pass + --- + duration_ms: * + ... +# this test should pass +# Subtest: sync throw fail +not ok 8 - sync throw fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from sync throw fail' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + ... +# Subtest: async skip pass +ok 9 - async skip pass # SKIP + --- + duration_ms: * + ... +# Subtest: async pass +ok 10 - async pass + --- + duration_ms: * + ... +# Subtest: async throw fail +not ok 11 - async throw fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from async throw fail' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + ... +# Subtest: async skip fail +not ok 12 - async skip fail # SKIP + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from async throw fail' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + ... +# Subtest: async assertion fail +not ok 13 - async assertion fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: |- + Expected values to be strictly equal: + + true !== false + + code: 'ERR_ASSERTION' + stack: |- + * + * + * + * + * + * + * + * + ... +# Subtest: resolve pass +ok 14 - resolve pass + --- + duration_ms: * + ... +# Subtest: reject fail +not ok 15 - reject fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'rejected from reject fail' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + ... +# Subtest: unhandled rejection - passes but warns +ok 16 - unhandled rejection - passes but warns + --- + duration_ms: * + ... +# Subtest: async unhandled rejection - passes but warns +ok 17 - async unhandled rejection - passes but warns + --- + duration_ms: * + ... +# Subtest: immediate throw - passes but warns +ok 18 - immediate throw - passes but warns + --- + duration_ms: * + ... +# Subtest: immediate reject - passes but warns +ok 19 - immediate reject - passes but warns + --- + duration_ms: * + ... +# Subtest: immediate resolve pass +ok 20 - immediate resolve pass + --- + duration_ms: * + ... +# Subtest: subtest sync throw fail + # Subtest: +sync throw fail + not ok 1 - +sync throw fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from subtest sync throw fail' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + * + * + ... + # this subtest should make its parent test fail + 1..1 +not ok 21 - subtest sync throw fail + --- + duration_ms: * + failureType: 'subtestsFailed' + error: '1 subtest failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: sync throw non-error fail +not ok 22 - sync throw non-error fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'Symbol(thrown symbol from sync throw non-error fail)' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: level 0a + # Subtest: level 1a + ok 1 - level 1a + --- + duration_ms: * + ... + # Subtest: level 1b + ok 2 - level 1b + --- + duration_ms: * + ... + # Subtest: level 1c + ok 3 - level 1c + --- + duration_ms: * + ... + # Subtest: level 1d + ok 4 - level 1d + --- + duration_ms: * + ... + 1..4 +ok 23 - level 0a + --- + duration_ms: * + ... +# Subtest: top level + # Subtest: +long running + not ok 1 - +long running + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + ... + # Subtest: +short running + # Subtest: ++short running + ok 1 - ++short running + --- + duration_ms: * + ... + 1..1 + ok 2 - +short running + --- + duration_ms: * + ... + 1..2 +not ok 24 - top level + --- + duration_ms: * + failureType: 'subtestsFailed' + error: '1 subtest failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: invalid subtest - pass but subtest fails +ok 25 - invalid subtest - pass but subtest fails + --- + duration_ms: * + ... +# Subtest: sync skip option +ok 26 - sync skip option # SKIP + --- + duration_ms: * + ... +# Subtest: sync skip option with message +ok 27 - sync skip option with message # SKIP this is skipped + --- + duration_ms: * + ... +# Subtest: sync skip option is false fail +not ok 28 - sync skip option is false fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'this should be executed' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + ... +# Subtest: +ok 29 - + --- + duration_ms: * + ... +# Subtest: functionOnly +ok 30 - functionOnly + --- + duration_ms: * + ... +# Subtest: +ok 31 - + --- + duration_ms: * + ... +# Subtest: test with only a name provided +ok 32 - test with only a name provided + --- + duration_ms: * + ... +# Subtest: +ok 33 - + --- + duration_ms: * + ... +# Subtest: +ok 34 - # SKIP + --- + duration_ms: * + ... +# Subtest: test with a name and options provided +ok 35 - test with a name and options provided # SKIP + --- + duration_ms: * + ... +# Subtest: functionAndOptions +ok 36 - functionAndOptions # SKIP + --- + duration_ms: * + ... +# Subtest: escaped description \\ \# \\\#\\ +ok 37 - escaped description \\ \# \\\#\\ + --- + duration_ms: * + ... +# Subtest: escaped skip message +ok 38 - escaped skip message # SKIP \#skip + --- + duration_ms: * + ... +# Subtest: escaped todo message +ok 39 - escaped todo message # TODO \#todo + --- + duration_ms: * + ... +# Subtest: escaped diagnostic +ok 40 - escaped diagnostic + --- + duration_ms: * + ... +# \#diagnostic +# Subtest: callback pass +ok 41 - callback pass + --- + duration_ms: * + ... +# Subtest: callback fail +not ok 42 - callback fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'callback failure' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + ... +# Subtest: sync t is this in test +ok 43 - sync t is this in test + --- + duration_ms: * + ... +# Subtest: async t is this in test +ok 44 - async t is this in test + --- + duration_ms: * + ... +# Subtest: callback t is this in test +ok 45 - callback t is this in test + --- + duration_ms: * + ... +# Subtest: callback also returns a Promise +not ok 46 - callback also returns a Promise + --- + duration_ms: * + failureType: 'callbackAndPromisePresent' + error: 'passed a callback but also returned a Promise' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: callback throw +not ok 47 - callback throw + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from callback throw' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + ... +# Subtest: callback called twice +not ok 48 - callback called twice + --- + duration_ms: * + failureType: 'multipleCallbackInvocations' + error: 'callback invoked multiple times' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + ... +# Subtest: callback called twice in different ticks +ok 49 - callback called twice in different ticks + --- + duration_ms: * + ... +# Subtest: callback called twice in future tick +not ok 50 - callback called twice in future tick + --- + duration_ms: * + failureType: 'uncaughtException' + error: 'callback invoked multiple times' + code: 'ERR_TEST_FAILURE' + stack: |- + * + ... +# Subtest: callback async throw +not ok 51 - callback async throw + --- + duration_ms: * + failureType: 'uncaughtException' + error: 'thrown from callback async throw' + code: 'ERR_TEST_FAILURE' + stack: |- + * + ... +# Subtest: callback async throw after done +ok 52 - callback async throw after done + --- + duration_ms: * + ... +# Subtest: only is set but not in only mode + # Subtest: running subtest 1 + ok 1 - running subtest 1 + --- + duration_ms: * + ... + # Subtest: running subtest 2 + ok 2 - running subtest 2 + --- + duration_ms: * + ... + # Subtest: running subtest 3 + ok 3 - running subtest 3 + --- + duration_ms: * + ... + # Subtest: running subtest 4 + ok 4 - running subtest 4 + --- + duration_ms: * + ... + 1..4 +ok 53 - only is set but not in only mode + --- + duration_ms: * + ... +# Subtest: custom inspect symbol fail +not ok 54 - custom inspect symbol fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'customized' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: custom inspect symbol that throws fail +not ok 55 - custom inspect symbol that throws fail + --- + duration_ms: * + failureType: 'testCodeFailure' + error: |- + { + foo: 1, + [Symbol(nodejs.util.inspect.custom)]: [Function: [nodejs.util.inspect.custom]] + } + code: 'ERR_TEST_FAILURE' + ... +# Subtest: subtest sync throw fails + # Subtest: sync throw fails at first + not ok 1 - sync throw fails at first + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from subtest sync throw fails at first' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + * + * + ... + # Subtest: sync throw fails at second + not ok 2 - sync throw fails at second + --- + duration_ms: * + failureType: 'testCodeFailure' + error: 'thrown from subtest sync throw fails at second' + code: 'ERR_TEST_FAILURE' + stack: |- + * + * + * + * + * + * + * + * + * + * + ... + 1..2 +not ok 56 - subtest sync throw fails + --- + duration_ms: * + failureType: 'subtestsFailed' + error: '2 subtests failed' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: timed out async test +not ok 57 - timed out async test + --- + duration_ms: * + failureType: 'testTimeoutFailure' + error: 'test timed out after 5ms' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: timed out callback test +not ok 58 - timed out callback test + --- + duration_ms: * + failureType: 'testTimeoutFailure' + error: 'test timed out after 5ms' + code: 'ERR_TEST_FAILURE' + ... +# Subtest: large timeout async test is ok +ok 59 - large timeout async test is ok + --- + duration_ms: * + ... +# Subtest: large timeout callback test is ok +ok 60 - large timeout callback test is ok + --- + duration_ms: * + ... +# Subtest: invalid subtest fail +not ok 61 - invalid subtest fail + --- + duration_ms: * + failureType: 'parentAlreadyFinished' + error: 'test could not be started because its parent finished' + code: 'ERR_TEST_FAILURE' + stack: |- + * + ... +1..61 +# Warning: Test "unhandled rejection - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from unhandled rejection fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. +# Warning: Test "async unhandled rejection - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from async unhandled rejection fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. +# Warning: Test "immediate throw - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from immediate throw fail" and would have caused the test to fail, but instead triggered an uncaughtException event. +# Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. +# Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. +# Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event. +# tests 61 +# pass 26 +# fail 18 +# cancelled 2 +# skipped 10 +# todo 5 +# duration_ms * diff --git a/test/message/test_runner_unresolved_promise.js b/test/message/test_runner_unresolved_promise.js new file mode 100644 index 00000000000000..00d231be34b6df --- /dev/null +++ b/test/message/test_runner_unresolved_promise.js @@ -0,0 +1,8 @@ +// Flags: --no-warnings +'use strict'; +require('../common'); +const test = require('node:test'); + +test('pass'); +test('never resolving promise', () => new Promise(() => {})); +test('fail'); diff --git a/test/message/test_runner_unresolved_promise.out b/test/message/test_runner_unresolved_promise.out new file mode 100644 index 00000000000000..d4e868cc9ef3c3 --- /dev/null +++ b/test/message/test_runner_unresolved_promise.out @@ -0,0 +1,34 @@ +TAP version 13 +# Subtest: pass +ok 1 - pass + --- + duration_ms: * + ... +# Subtest: never resolving promise +not ok 2 - never resolving promise + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + stack: |- + * + ... +# Subtest: fail +not ok 3 - fail + --- + duration_ms: * + failureType: 'cancelledByParent' + error: 'test did not finish before its parent and was cancelled' + code: 'ERR_TEST_FAILURE' + stack: |- + * + ... +1..3 +# tests 3 +# pass 1 +# fail 0 +# cancelled 2 +# skipped 0 +# todo 0 +# duration_ms * diff --git a/test/node-api/node-api.status b/test/node-api/node-api.status index 9395bfe1f6bbe0..b8e18f95623a20 100644 --- a/test/node-api/node-api.status +++ b/test/node-api/node-api.status @@ -7,3 +7,8 @@ prefix node-api [true] # This section applies to all platforms [$system==win32] + +[$system==solaris] # Also applies to SmartOS +# https://github.com/nodejs/node/issues/43457 +test_fatal/test_threads: PASS,FLAKY +test_fatal/test_threads_report: PASS,FLAKY diff --git a/test/node-api/test_buffer/test_buffer.c b/test/node-api/test_buffer/test_buffer.c index abe21626468ec9..bc61cd7a2e9062 100644 --- a/test/node-api/test_buffer/test_buffer.c +++ b/test/node-api/test_buffer/test_buffer.c @@ -22,6 +22,17 @@ static void noopDeleter(napi_env env, void* data, void* finalize_hint) { deleterCallCount++; } +static void malignDeleter(napi_env env, void* data, void* finalize_hint) { + NODE_API_ASSERT_RETURN_VOID(env, data != NULL && strcmp(data, theText) == 0, "invalid data"); + napi_ref finalizer_ref = (napi_ref)finalize_hint; + napi_value js_finalizer; + napi_value recv; + NODE_API_CALL_RETURN_VOID(env, napi_get_reference_value(env, finalizer_ref, &js_finalizer)); + NODE_API_CALL_RETURN_VOID(env, napi_get_global(env, &recv)); + NODE_API_CALL_RETURN_VOID(env, napi_call_function(env, recv, js_finalizer, 0, NULL, NULL)); + NODE_API_CALL_RETURN_VOID(env, napi_delete_reference(env, finalizer_ref)); +} + static napi_value newBuffer(napi_env env, napi_callback_info info) { napi_value theBuffer; char* theCopy; @@ -107,6 +118,30 @@ static napi_value staticBuffer(napi_env env, napi_callback_info info) { return theBuffer; } +static napi_value malignFinalizerBuffer(napi_env env, napi_callback_info info) { + size_t argc = 1; + napi_value args[1]; + NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, args, NULL, NULL)); + NODE_API_ASSERT(env, argc == 1, "Wrong number of arguments"); + napi_value finalizer = args[0]; + napi_valuetype finalizer_valuetype; + NODE_API_CALL(env, napi_typeof(env, finalizer, &finalizer_valuetype)); + NODE_API_ASSERT(env, finalizer_valuetype == napi_function, "Wrong type of first argument"); + napi_ref finalizer_ref; + NODE_API_CALL(env, napi_create_reference(env, finalizer, 1, &finalizer_ref)); + + napi_value theBuffer; + NODE_API_CALL( + env, + napi_create_external_buffer(env, + sizeof(theText), + (void*)theText, + malignDeleter, + finalizer_ref, // finalize_hint + &theBuffer)); + return theBuffer; +} + static napi_value Init(napi_env env, napi_value exports) { napi_value theValue; @@ -123,6 +158,7 @@ static napi_value Init(napi_env env, napi_value exports) { DECLARE_NODE_API_PROPERTY("bufferHasInstance", bufferHasInstance), DECLARE_NODE_API_PROPERTY("bufferInfo", bufferInfo), DECLARE_NODE_API_PROPERTY("staticBuffer", staticBuffer), + DECLARE_NODE_API_PROPERTY("malignFinalizerBuffer", malignFinalizerBuffer), }; NODE_API_CALL(env, napi_define_properties( diff --git a/test/node-api/test_buffer/test_finalizer.js b/test/node-api/test_buffer/test_finalizer.js new file mode 100644 index 00000000000000..b706c68c7c3e02 --- /dev/null +++ b/test/node-api/test_buffer/test_finalizer.js @@ -0,0 +1,25 @@ +'use strict'; +// Flags: --expose-gc --force-node-api-uncaught-exceptions-policy + +const common = require('../../common'); +const binding = require(`./build/${common.buildType}/test_buffer`); +const assert = require('assert'); +const tick = require('util').promisify(require('../../common/tick')); + +process.on('uncaughtException', common.mustCall((err) => { + assert.throws(() => { throw err; }, /finalizer error/); +})); + +(async function() { + { + binding.malignFinalizerBuffer(common.mustCall(() => { + throw new Error('finalizer error'); + })); + } + global.gc({ type: 'minor' }); + await tick(common.platformTimeout(100)); + global.gc(); + await tick(common.platformTimeout(100)); + global.gc(); + await tick(common.platformTimeout(100)); +})().then(common.mustCall()); diff --git a/test/node-api/test_init_order/binding.gyp b/test/node-api/test_init_order/binding.gyp new file mode 100644 index 00000000000000..2ffb81838d1189 --- /dev/null +++ b/test/node-api/test_init_order/binding.gyp @@ -0,0 +1,8 @@ +{ + "targets": [ + { + "target_name": "test_init_order", + "sources": [ "test_init_order.cc" ] + } + ] +} diff --git a/test/node-api/test_init_order/test.js b/test/node-api/test_init_order/test.js new file mode 100644 index 00000000000000..0bfeb8f94afebb --- /dev/null +++ b/test/node-api/test_init_order/test.js @@ -0,0 +1,10 @@ +'use strict'; + +// This test verifies that C++ static variable dynamic initialization is called +// correctly and does not interfere with the module initialization. +const common = require('../../common'); +const test_init_order = require(`./build/${common.buildType}/test_init_order`); +const assert = require('assert'); + +assert.strictEqual(test_init_order.cppIntValue, 42); +assert.strictEqual(test_init_order.cppStringValue, '123'); diff --git a/test/node-api/test_init_order/test_init_order.cc b/test/node-api/test_init_order/test_init_order.cc new file mode 100644 index 00000000000000..2b6fffd834e1fd --- /dev/null +++ b/test/node-api/test_init_order/test_init_order.cc @@ -0,0 +1,55 @@ +#include +#include +#include +#include "../../js-native-api/common.h" + +// This test verifies that use of the NAPI_MODULE in C++ code does not +// interfere with the C++ dynamic static initializers. + +namespace { + +// This class uses dynamic static initializers for the test. +// In production code developers must avoid dynamic static initializers because +// they affect the start up time. They must prefer static initialization such as +// use of constexpr functions or classes with constexpr constructors. E.g. +// instead of using std::string, it is preferrable to use const char[], or +// constexpr std::string_view starting with C++17, or even constexpr +// std::string starting with C++20. +struct MyClass { + static const std::unique_ptr valueHolder; + static const std::string testString; +}; + +const std::unique_ptr MyClass::valueHolder = + std::unique_ptr(new int(42)); +// NOLINTNEXTLINE(runtime/string) +const std::string MyClass::testString = std::string("123"); + +} // namespace + +EXTERN_C_START +napi_value Init(napi_env env, napi_value exports) { + napi_value cppIntValue, cppStringValue; + NODE_API_CALL(env, + napi_create_int32(env, *MyClass::valueHolder, &cppIntValue)); + NODE_API_CALL( + env, + napi_create_string_utf8( + env, MyClass::testString.c_str(), NAPI_AUTO_LENGTH, &cppStringValue)); + + napi_property_descriptor descriptors[] = { + DECLARE_NODE_API_PROPERTY_VALUE("cppIntValue", cppIntValue), + DECLARE_NODE_API_PROPERTY_VALUE("cppStringValue", cppStringValue)}; + + NODE_API_CALL( + env, + napi_define_properties(env, + exports, + sizeof(descriptors) / sizeof(descriptors[0]), + descriptors)); + + return exports; +} +EXTERN_C_END + +NAPI_MODULE(NODE_GYP_MODULE_NAME, Init) diff --git a/test/node-api/test_threadsafe_function/binding.c b/test/node-api/test_threadsafe_function/binding.c index d64b9058b11326..53b1cb3056370f 100644 --- a/test/node-api/test_threadsafe_function/binding.c +++ b/test/node-api/test_threadsafe_function/binding.c @@ -269,6 +269,35 @@ static napi_value StartThreadNoJsFunc(napi_env env, napi_callback_info info) { /** block_on_full */true, /** alt_ref_js_cb */true); } +// Testing calling into JavaScript +static void ThreadSafeFunctionFinalize(napi_env env, + void* finalize_data, + void* finalize_hint) { + napi_ref js_func_ref = (napi_ref) finalize_data; + napi_value js_func; + napi_value recv; + NODE_API_CALL_RETURN_VOID(env, napi_get_reference_value(env, js_func_ref, &js_func)); + NODE_API_CALL_RETURN_VOID(env, napi_get_global(env, &recv)); + NODE_API_CALL_RETURN_VOID(env, napi_call_function(env, recv, js_func, 0, NULL, NULL)); + NODE_API_CALL_RETURN_VOID(env, napi_delete_reference(env, js_func_ref)); +} + +// Testing calling into JavaScript +static napi_value CallIntoModule(napi_env env, napi_callback_info info) { + size_t argc = 4; + napi_value argv[4]; + NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, argv, NULL, NULL)); + + napi_ref finalize_func; + NODE_API_CALL(env, napi_create_reference(env, argv[3], 1, &finalize_func)); + + napi_threadsafe_function tsfn; + NODE_API_CALL(env, napi_create_threadsafe_function(env, argv[0], argv[1], argv[2], 0, 1, finalize_func, ThreadSafeFunctionFinalize, NULL, NULL, &tsfn)); + NODE_API_CALL(env, napi_call_threadsafe_function(tsfn, NULL, napi_tsfn_blocking)); + NODE_API_CALL(env, napi_release_threadsafe_function(tsfn, napi_tsfn_release)); + return NULL; +} + // Module init static napi_value Init(napi_env env, napi_value exports) { size_t index; @@ -307,6 +336,7 @@ static napi_value Init(napi_env env, napi_value exports) { DECLARE_NODE_API_PROPERTY("StopThread", StopThread), DECLARE_NODE_API_PROPERTY("Unref", Unref), DECLARE_NODE_API_PROPERTY("Release", Release), + DECLARE_NODE_API_PROPERTY("CallIntoModule", CallIntoModule), }; NODE_API_CALL(env, napi_define_properties(env, exports, diff --git a/test/node-api/test_threadsafe_function/test_force_uncaught_exception.js b/test/node-api/test_threadsafe_function/test_force_uncaught_exception.js new file mode 100644 index 00000000000000..c23ad44ae88862 --- /dev/null +++ b/test/node-api/test_threadsafe_function/test_force_uncaught_exception.js @@ -0,0 +1,22 @@ +'use strict'; +// Flags: --no-force-node-api-uncaught-exceptions-policy + +const common = require('../../common'); +const binding = require(`./build/${common.buildType}/binding`); + +process.on( + 'uncaughtException', + common.mustNotCall('uncaught callback errors should be suppressed ' + + 'with the option --no-force-node-api-uncaught-exceptions-policy') +); + +binding.CallIntoModule( + common.mustCall(() => { + throw new Error('callback error'); + }), + {}, + 'resource_name', + common.mustCall(function finalizer() { + throw new Error('finalizer error'); + }) +); diff --git a/test/node-api/test_threadsafe_function/test_uncaught_exception.js b/test/node-api/test_threadsafe_function/test_uncaught_exception.js new file mode 100644 index 00000000000000..45e7370c33ea65 --- /dev/null +++ b/test/node-api/test_threadsafe_function/test_uncaught_exception.js @@ -0,0 +1,27 @@ +'use strict'; +// Flags: --force-node-api-uncaught-exceptions-policy + +const common = require('../../common'); +const assert = require('assert'); +const binding = require(`./build/${common.buildType}/binding`); + +const callbackCheck = common.mustCall((err) => { + assert.throws(() => { throw err; }, /callback error/); + process.removeListener('uncaughtException', callbackCheck); + process.on('uncaughtException', finalizerCheck); +}); +const finalizerCheck = common.mustCall((err) => { + assert.throws(() => { throw err; }, /finalizer error/); +}); +process.on('uncaughtException', callbackCheck); + +binding.CallIntoModule( + common.mustCall(() => { + throw new Error('callback error'); + }), + {}, + 'resource_name', + common.mustCall(function finalizer() { + throw new Error('finalizer error'); + }) +); diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status index 403752346856cd..3896bb3a41df31 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status @@ -7,6 +7,8 @@ prefix parallel [true] # This section applies to all platforms # https://github.com/nodejs/node/issues/41123 test-repl-sigint-nested-eval: PASS, FLAKY +# https://github.com/nodejs/node/issues/43084 +test-worker-http2-stream-terminate: PASS, FLAKY [$system==win32] # https://github.com/nodejs/node/issues/24497 @@ -21,6 +23,10 @@ test-fs-rmdir-recursive: PASS, FLAKY test-domain-error-types: PASS,FLAKY [$system==macos] +# https://github.com/nodejs/node/issues/43465 +test-http-server-request-timeouts-mixed: PASS,FLAKY +# https://github.com/nodejs/node/issues/43680 +test-http-client-response-timeout: PASS,FLAKY [$arch==arm || $arch==arm64] # https://github.com/nodejs/node/pull/31178 @@ -28,12 +34,29 @@ test-crypto-dh-stateless: SKIP test-crypto-keygen: SKIP [$system==solaris] # Also applies to SmartOS +# https://github.com/nodejs/node/issues/43446 +test-net-connect-reset-until-connected: PASS, FLAKY +# https://github.com/nodejs/node/issues/43457 +test-domain-no-error-handler-abort-on-uncaught-0: PASS, FLAKY +test-domain-no-error-handler-abort-on-uncaught-1: PASS,FLAKY +test-domain-no-error-handler-abort-on-uncaught-2: PASS,FLAKY +test-domain-no-error-handler-abort-on-uncaught-3: PASS,FLAKY +test-domain-no-error-handler-abort-on-uncaught-4: PASS,FLAKY +test-domain-no-error-handler-abort-on-uncaught-5: PASS, FLAKY +test-domain-no-error-handler-abort-on-uncaught-6: PASS, FLAKY +test-domain-no-error-handler-abort-on-uncaught-7: PASS, FLAKY +test-domain-no-error-handler-abort-on-uncaught-8: PASS, FLAKY +test-domain-no-error-handler-abort-on-uncaught-9: PASS, FLAKY +test-domain-throw-error-then-throw-from-uncaught-exception-handler: PASS, FLAKY +test-domain-with-abort-on-uncaught-exception: PASS, FLAKY [$system==freebsd] # https://github.com/nodejs/node/issues/31727 test-fs-stat-bigint: PASS,FLAKY # https://github.com/nodejs/node/issues/31280 test-worker-message-port-message-before-close: PASS,FLAKY +# https://github.com/nodejs/node/issues/43446 +test-net-connect-reset-until-connected: PASS, FLAKY [$system==aix] diff --git a/test/parallel/test-abortcontroller.js b/test/parallel/test-abortcontroller.js index 4b59ae6adff2f4..94f153a957c03d 100644 --- a/test/parallel/test-abortcontroller.js +++ b/test/parallel/test-abortcontroller.js @@ -14,6 +14,8 @@ const { const { kWeakHandler, } = require('internal/event_target'); +const { internalBinding } = require('internal/test/binding'); +const { DOMException } = internalBinding('messaging'); const { setTimeout: sleep } = require('timers/promises'); @@ -230,3 +232,24 @@ const { setTimeout: sleep } = require('timers/promises'); // keep the Node.js process open (the timer is unref'd) AbortSignal.timeout(1_200_000); } + +{ + // Test AbortSignal.reason default + const signal = AbortSignal.abort(); + ok(signal.reason instanceof DOMException); + strictEqual(signal.reason.code, 20); + + const ac = new AbortController(); + ac.abort(); + ok(ac.signal.reason instanceof DOMException); + strictEqual(ac.signal.reason.code, 20); +} + +{ + // Test abortSignal.throwIfAborted() + throws(() => AbortSignal.abort().throwIfAborted(), { code: 20 }); + + // Does not throw because it's not aborted. + const ac = new AbortController(); + ac.signal.throwIfAborted(); +} diff --git a/test/parallel/test-assert-async.js b/test/parallel/test-assert-async.js index 1a192ae3f7da64..bcf3d55622b863 100644 --- a/test/parallel/test-assert-async.js +++ b/test/parallel/test-assert-async.js @@ -103,8 +103,9 @@ const invalidThenableFunc = () => { promises.push(assert.rejects(promise, { name: 'TypeError', code: 'ERR_INVALID_RETURN_VALUE', + // FIXME(JakobJingleheimer): This should match on key words, like /Promise/ and /undefined/. message: 'Expected instance of Promise to be returned ' + - 'from the "promiseFn" function but got type undefined.' + 'from the "promiseFn" function but got undefined.' })); promise = assert.rejects(Promise.resolve(), common.mustNotCall()); @@ -162,7 +163,7 @@ promises.push(assert.rejects( let promise = assert.doesNotReject(() => new Map(), common.mustNotCall()); promises.push(assert.rejects(promise, { message: 'Expected instance of Promise to be returned ' + - 'from the "promiseFn" function but got instance of Map.', + 'from the "promiseFn" function but got an instance of Map.', code: 'ERR_INVALID_RETURN_VALUE', name: 'TypeError' })); diff --git a/test/parallel/test-assert-calltracker-calls.js b/test/parallel/test-assert-calltracker-calls.js index 99db4ee284be81..7b73f3fefaf6ab 100644 --- a/test/parallel/test-assert-calltracker-calls.js +++ b/test/parallel/test-assert-calltracker-calls.js @@ -1,5 +1,5 @@ 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); // This test ensures that assert.CallTracker.calls() works as intended. @@ -78,3 +78,51 @@ assert.throws( callsNoop(); tracker.verify(); } + +{ + function func() {} + const tracker = new assert.CallTracker(); + const callsfunc = tracker.calls(func); + assert.strictEqual(callsfunc.length, 0); +} + +{ + function func(a, b, c = 2) {} + const tracker = new assert.CallTracker(); + const callsfunc = tracker.calls(func); + assert.strictEqual(callsfunc.length, 2); +} + +{ + function func(a, b, c = 2) {} + delete func.length; + const tracker = new assert.CallTracker(); + const callsfunc = tracker.calls(func); + assert.strictEqual(Object.hasOwn(callsfunc, 'length'), false); +} + +{ + const ArrayIteratorPrototype = Reflect.getPrototypeOf( + Array.prototype.values() + ); + const { next } = ArrayIteratorPrototype; + ArrayIteratorPrototype.next = common.mustNotCall( + '%ArrayIteratorPrototype%.next' + ); + Object.prototype.get = common.mustNotCall('%Object.prototype%.get'); + + const customPropertyValue = Symbol(); + function func(a, b, c = 2) { + return a + b + c; + } + func.customProperty = customPropertyValue; + Object.defineProperty(func, 'length', { get: common.mustNotCall() }); + const tracker = new assert.CallTracker(); + const callsfunc = tracker.calls(func); + assert.strictEqual(Object.hasOwn(callsfunc, 'length'), true); + assert.strictEqual(callsfunc.customProperty, customPropertyValue); + assert.strictEqual(callsfunc(1, 2, 3), 6); + + ArrayIteratorPrototype.next = next; + delete Object.prototype.get; +} diff --git a/test/parallel/test-assert-calltracker-verify.js b/test/parallel/test-assert-calltracker-verify.js index 75d20bf9c49c38..118f04f7352780 100644 --- a/test/parallel/test-assert-calltracker-verify.js +++ b/test/parallel/test-assert-calltracker-verify.js @@ -6,27 +6,48 @@ const assert = require('assert'); const tracker = new assert.CallTracker(); -const msg = 'Function(s) were not called the expected number of times'; +const generic_msg = 'Functions were not called the expected number of times'; function foo() {} +function bar() {} + const callsfoo = tracker.calls(foo, 1); +const callsbar = tracker.calls(bar, 1); -// Expects an error as callsfoo() was called less than one time. +// Expects an error as callsfoo() and callsbar() were called less than one time. assert.throws( () => tracker.verify(), - { message: msg } + { message: generic_msg } ); callsfoo(); -// Will throw an error if callsfoo() isn't called exactly once. +// Expects an error as callsbar() was called less than one time. +assert.throws( + () => tracker.verify(), + { message: 'Expected the bar function to be executed 1 time(s) but was executed 0 time(s).' } +); +callsbar(); + +// Will throw an error if callsfoo() and callsbar isn't called exactly once. tracker.verify(); +const callsfoobar = tracker.calls(foo, 1); + callsfoo(); -// Expects an error as callsfoo() was called more than once. +// Expects an error as callsfoo() was called more than once and callsfoobar() was called less than one time. +assert.throws( + () => tracker.verify(), + { message: generic_msg } +); + +callsfoobar(); + + +// Expects an error as callsfoo() was called more than once assert.throws( () => tracker.verify(), - { message: msg } + { message: 'Expected the foo function to be executed 1 time(s) but was executed 2 time(s).' } ); diff --git a/test/parallel/test-assert-fail.js b/test/parallel/test-assert-fail.js index e2003f2ce91da8..37e2087a2fdc72 100644 --- a/test/parallel/test-assert-fail.js +++ b/test/parallel/test-assert-fail.js @@ -1,6 +1,6 @@ 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); // No args @@ -38,3 +38,7 @@ assert.throws(() => { name: 'TypeError', message: 'custom message' }); + +Object.prototype.get = common.mustNotCall(); +assert.throws(() => assert.fail(''), { code: 'ERR_ASSERTION' }); +delete Object.prototype.get; diff --git a/test/parallel/test-blob-buffer-too-large.js b/test/parallel/test-blob-buffer-too-large.js new file mode 100644 index 00000000000000..2fd8b8754bd593 --- /dev/null +++ b/test/parallel/test-blob-buffer-too-large.js @@ -0,0 +1,24 @@ +// Flags: --no-warnings +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const { Blob } = require('buffer'); + +if (common.isFreeBSD) + common.skip('Oversized buffer make the FreeBSD CI runner crash'); + +try { + new Blob([new Uint8Array(0xffffffff), [1]]); +} catch (e) { + if ( + e.message === 'Array buffer allocation failed' || + e.message === 'Invalid typed array length: 4294967295' + ) { + common.skip( + 'Insufficient memory on this platform for oversized buffer test.' + ); + } else { + assert.strictEqual(e.code, 'ERR_BUFFER_TOO_LARGE'); + } +} diff --git a/test/parallel/test-blob.js b/test/parallel/test-blob.js index 53b9ddb0cb3e81..fe66ff08f945e1 100644 --- a/test/parallel/test-blob.js +++ b/test/parallel/test-blob.js @@ -198,6 +198,8 @@ assert.throws(() => new Blob({}), { const b = new Blob(); assert.strictEqual(inspect(b, { depth: null }), 'Blob { size: 0, type: \'\' }'); + assert.strictEqual(inspect(b, { depth: 1 }), + 'Blob { size: 0, type: \'\' }'); assert.strictEqual(inspect(b, { depth: -1 }), '[Blob]'); } @@ -230,6 +232,30 @@ assert.throws(() => new Blob({}), { }); } +{ + assert.throws(() => Reflect.get(Blob.prototype, 'type', {}), { + code: 'ERR_INVALID_THIS', + }); + assert.throws(() => Reflect.get(Blob.prototype, 'size', {}), { + code: 'ERR_INVALID_THIS', + }); + assert.throws(() => Blob.prototype.slice(Blob.prototype, 0, 1), { + code: 'ERR_INVALID_THIS', + }); + assert.throws(() => Blob.prototype.stream.call(), { + code: 'ERR_INVALID_THIS', + }); +} + +(async () => { + assert.rejects(async () => Blob.prototype.arrayBuffer.call(), { + code: 'ERR_INVALID_THIS', + }); + assert.rejects(async () => Blob.prototype.text.call(), { + code: 'ERR_INVALID_THIS', + }); +})().then(common.mustCall()); + (async () => { const blob = new Blob([ new Uint8Array([0x50, 0x41, 0x53, 0x53]), diff --git a/test/parallel/test-blocklist.js b/test/parallel/test-blocklist.js index 51f19e07bc649c..ddd9a4e4957279 100644 --- a/test/parallel/test-blocklist.js +++ b/test/parallel/test-blocklist.js @@ -272,3 +272,13 @@ const util = require('util'); const ret = util.inspect(blockList, { depth: null }); assert(ret.includes('rules: []')); } + +{ + // Test for https://github.com/nodejs/node/issues/43360 + const blocklist = new BlockList(); + blocklist.addSubnet('1.1.1.1', 32, 'ipv4'); + + assert(blocklist.check('1.1.1.1')); + assert(!blocklist.check('1.1.1.2')); + assert(!blocklist.check('2.3.4.5')); +} diff --git a/test/parallel/test-bootstrap-modules.js b/test/parallel/test-bootstrap-modules.js index de9414abb2d648..b10fe5c2ff078d 100644 --- a/test/parallel/test-bootstrap-modules.js +++ b/test/parallel/test-bootstrap-modules.js @@ -21,6 +21,7 @@ const expectedModules = new Set([ 'Internal Binding fs_event_wrap', 'Internal Binding fs', 'Internal Binding heap_utils', + 'Internal Binding mksnapshot', 'Internal Binding messaging', 'Internal Binding module_wrap', 'Internal Binding native_module', @@ -77,7 +78,6 @@ const expectedModules = new Set([ 'NativeModule internal/modules/esm/fetch_module', 'NativeModule internal/modules/esm/formats', 'NativeModule internal/modules/esm/get_format', - 'NativeModule internal/modules/esm/get_source', 'NativeModule internal/modules/esm/handle_process_exit', 'NativeModule internal/modules/esm/initialize_import_meta', 'NativeModule internal/modules/esm/load', @@ -98,6 +98,7 @@ const expectedModules = new Set([ 'NativeModule internal/perf/performance', 'NativeModule internal/perf/timerify', 'NativeModule internal/perf/usertiming', + 'NativeModule internal/perf/resource_timing', 'NativeModule internal/perf/utils', 'NativeModule internal/priority_queue', 'NativeModule internal/process/esm_loader', @@ -135,6 +136,8 @@ const expectedModules = new Set([ 'NativeModule internal/util/debuglog', 'NativeModule internal/util/inspect', 'NativeModule internal/util/iterable_weak_map', + 'NativeModule internal/util/parse_args/utils', + 'NativeModule internal/util/parse_args/parse_args', 'NativeModule internal/util/types', 'NativeModule internal/validators', 'NativeModule internal/vm/module', @@ -154,6 +157,7 @@ const expectedModules = new Set([ 'NativeModule url', 'NativeModule util', 'NativeModule v8', + 'NativeModule internal/v8/startup_snapshot', 'NativeModule vm', ]); diff --git a/test/parallel/test-btoa-atob.js b/test/parallel/test-btoa-atob.js index 162406dd9f6b50..64f53671030ba0 100644 --- a/test/parallel/test-btoa-atob.js +++ b/test/parallel/test-btoa-atob.js @@ -12,3 +12,6 @@ strictEqual(globalThis.btoa, buffer.btoa); // Throws type error on no argument passed throws(() => buffer.atob(), /TypeError/); throws(() => buffer.btoa(), /TypeError/); + +strictEqual(atob(' '), ''); +strictEqual(atob(' YW\tJ\njZA=\r= '), 'abcd'); diff --git a/test/parallel/test-buffer-alloc.js b/test/parallel/test-buffer-alloc.js index 1368136abe8f22..d2085d11802aee 100644 --- a/test/parallel/test-buffer-alloc.js +++ b/test/parallel/test-buffer-alloc.js @@ -41,7 +41,25 @@ assert.strictEqual(d.length, 0); assert.strictEqual(b.offset, 0); } +// Test creating a Buffer from a Uint8Array +{ + const ui8 = new Uint8Array(4).fill(42); + const e = Buffer.from(ui8); + for (const [index, value] of e.entries()) { + assert.strictEqual(value, ui8[index]); + } +} +// Test creating a Buffer from a Uint8Array (old constructor) +{ + const ui8 = new Uint8Array(4).fill(42); + const e = Buffer(ui8); + for (const [key, value] of e.entries()) { + assert.strictEqual(value, ui8[key]); + } +} + // Test creating a Buffer from a Uint32Array +// Note: it is implicitly interpreted as Array of integers modulo 256 { const ui32 = new Uint32Array(4).fill(42); const e = Buffer.from(ui32); @@ -50,11 +68,12 @@ assert.strictEqual(d.length, 0); } } // Test creating a Buffer from a Uint32Array (old constructor) +// Note: it is implicitly interpreted as Array of integers modulo 256 { const ui32 = new Uint32Array(4).fill(42); const e = Buffer(ui32); for (const [key, value] of e.entries()) { - assert.deepStrictEqual(value, ui32[key]); + assert.strictEqual(value, ui32[key]); } } diff --git a/test/parallel/test-cluster-listen-pipe-readable-writable.js b/test/parallel/test-cluster-listen-pipe-readable-writable.js new file mode 100644 index 00000000000000..d4b758a374f670 --- /dev/null +++ b/test/parallel/test-cluster-listen-pipe-readable-writable.js @@ -0,0 +1,29 @@ +'use strict'; +const common = require('../common'); + +if (common.isWindows) { + common.skip('skip on Windows'); + return; +} + +const assert = require('assert'); +const cluster = require('cluster'); +const net = require('net'); +const fs = require('fs'); + +if (cluster.isPrimary) { + cluster.fork(); +} else { + const tmpdir = require('../common/tmpdir'); + tmpdir.refresh(); + const server = net.createServer().listen({ + path: common.PIPE, + readableAll: true, + writableAll: true, + }, common.mustCall(() => { + const stat = fs.statSync(common.PIPE); + assert.strictEqual(stat.mode & 0o777, 0o777); + server.close(); + process.disconnect(); + })); +} diff --git a/test/parallel/test-cluster-net-server-drop-connection.js b/test/parallel/test-cluster-net-server-drop-connection.js new file mode 100644 index 00000000000000..5df62a9a630885 --- /dev/null +++ b/test/parallel/test-cluster-net-server-drop-connection.js @@ -0,0 +1,64 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const net = require('net'); +const cluster = require('cluster'); +const tmpdir = require('../common/tmpdir'); + +// The core has bug in handling pipe handle by ipc when platform is win32, +// it can be triggered on win32. I will fix it in another pr. +if (common.isWindows) + common.skip('no setSimultaneousAccepts on pipe handle'); + +let connectionCount = 0; +let listenCount = 0; +let worker1; +let worker2; + +function request(path) { + for (let i = 0; i < 10; i++) { + net.connect(path); + } +} + +function handleMessage(message) { + assert.match(message.action, /listen|connection/); + if (message.action === 'listen') { + if (++listenCount === 2) { + request(common.PIPE); + } + } else if (message.action === 'connection') { + if (++connectionCount === 10) { + worker1.send({ action: 'disconnect' }); + worker2.send({ action: 'disconnect' }); + } + } +} + +if (cluster.isPrimary) { + cluster.schedulingPolicy = cluster.SCHED_RR; + tmpdir.refresh(); + worker1 = cluster.fork({ maxConnections: 1, pipePath: common.PIPE }); + worker2 = cluster.fork({ maxConnections: 9, pipePath: common.PIPE }); + worker1.on('message', common.mustCall((message) => { + handleMessage(message); + }, 2)); + worker2.on('message', common.mustCall((message) => { + handleMessage(message); + }, 10)); +} else { + const server = net.createServer(common.mustCall((socket) => { + process.send({ action: 'connection' }); + }, +process.env.maxConnections)); + + server.listen(process.env.pipePath, common.mustCall(() => { + process.send({ action: 'listen' }); + })); + + server.maxConnections = +process.env.maxConnections; + + process.on('message', common.mustCall((message) => { + assert.strictEqual(message.action, 'disconnect'); + process.disconnect(); + })); +} diff --git a/test/parallel/test-cluster-worker-handle-close.js b/test/parallel/test-cluster-worker-handle-close.js new file mode 100644 index 00000000000000..47a80ef1cd1f1a --- /dev/null +++ b/test/parallel/test-cluster-worker-handle-close.js @@ -0,0 +1,27 @@ +'use strict'; +const common = require('../common'); +const cluster = require('cluster'); +const net = require('net'); + +if (cluster.isPrimary) { + cluster.schedulingPolicy = cluster.SCHED_RR; + cluster.fork(); +} else { + const server = net.createServer(common.mustNotCall()); + server.listen(0, common.mustCall(() => { + net.connect(server.address().port); + })); + process.prependListener('internalMessage', common.mustCallAtLeast((message, handle) => { + if (message.act !== 'newconn') { + return; + } + // Make the worker drops the connection, see `rr` and `onconnection` in child.js + server.close(); + const close = handle.close; + handle.close = common.mustCall(() => { + close.call(handle, common.mustCall(() => { + process.exit(); + })); + }); + })); +} diff --git a/test/parallel/test-code-cache.js b/test/parallel/test-code-cache.js index 1b151e269dcfaf..f61ed9f5c54077 100644 --- a/test/parallel/test-code-cache.js +++ b/test/parallel/test-code-cache.js @@ -16,7 +16,7 @@ const { } = internalBinding('native_module'); for (const key of canBeRequired) { - require(key); + require(`node:${key}`); } // The computation has to be delayed until we have done loading modules diff --git a/test/parallel/test-common-must-not-call.js b/test/parallel/test-common-must-not-call.js index dcea7059dac7f5..b3c94a2390ffb6 100644 --- a/test/parallel/test-common-must-not-call.js +++ b/test/parallel/test-common-must-not-call.js @@ -39,3 +39,18 @@ try { } catch (e) { validate2(e); } + +assert.throws( + () => new Proxy({ prop: Symbol() }, { get: common.mustNotCall() }).prop, + { code: 'ERR_ASSERTION' } +); + +{ + const { inspect } = util; + delete util.inspect; + assert.throws( + () => common.mustNotCall()(null), + { code: 'ERR_ASSERTION' } + ); + util.inspect = inspect; +} diff --git a/test/parallel/test-common-must-not-mutate-object-deep.mjs b/test/parallel/test-common-must-not-mutate-object-deep.mjs new file mode 100644 index 00000000000000..76a7ad67641bbc --- /dev/null +++ b/test/parallel/test-common-must-not-mutate-object-deep.mjs @@ -0,0 +1,225 @@ +import { mustNotMutateObjectDeep } from '../common/index.mjs'; +import assert from 'node:assert'; +import { promisify } from 'node:util'; + +// Test common.mustNotMutateObjectDeep() + +const original = { + foo: { bar: 'baz' }, + qux: null, + quux: [ + 'quuz', + { corge: 'grault' }, + ], +}; + +// Make a copy to make sure original doesn't get altered by the function itself. +const backup = JSON.parse(JSON.stringify(original)); + +// Wrapper for convenience: +const obj = () => mustNotMutateObjectDeep(original); + +function testOriginal(root) { + assert.deepStrictEqual(root, backup); + return root.foo.bar === 'baz' && root.quux[1].corge.length === 6; +} + +function definePropertyOnRoot(root) { + Object.defineProperty(root, 'xyzzy', {}); +} + +function definePropertyOnFoo(root) { + Object.defineProperty(root.foo, 'xyzzy', {}); +} + +function deletePropertyOnRoot(root) { + delete root.foo; +} + +function deletePropertyOnFoo(root) { + delete root.foo.bar; +} + +function preventExtensionsOnRoot(root) { + Object.preventExtensions(root); +} + +function preventExtensionsOnFoo(root) { + Object.preventExtensions(root.foo); +} + +function preventExtensionsOnRootViaSeal(root) { + Object.seal(root); +} + +function preventExtensionsOnFooViaSeal(root) { + Object.seal(root.foo); +} + +function preventExtensionsOnRootViaFreeze(root) { + Object.freeze(root); +} + +function preventExtensionsOnFooViaFreeze(root) { + Object.freeze(root.foo); +} + +function setOnRoot(root) { + root.xyzzy = 'gwak'; +} + +function setOnFoo(root) { + root.foo.xyzzy = 'gwak'; +} + +function setQux(root) { + root.qux = 'gwak'; +} + +function setQuux(root) { + root.quux.push('gwak'); +} + +function setQuuxItem(root) { + root.quux[0] = 'gwak'; +} + +function setQuuxProperty(root) { + root.quux[1].corge = 'gwak'; +} + +function setPrototypeOfRoot(root) { + Object.setPrototypeOf(root, Array); +} + +function setPrototypeOfFoo(root) { + Object.setPrototypeOf(root.foo, Array); +} + +function setPrototypeOfQuux(root) { + Object.setPrototypeOf(root.quux, Array); +} + + +{ + assert.ok(testOriginal(obj())); + + assert.throws( + () => definePropertyOnRoot(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => definePropertyOnFoo(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => deletePropertyOnRoot(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => deletePropertyOnFoo(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => preventExtensionsOnRoot(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => preventExtensionsOnFoo(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => preventExtensionsOnRootViaSeal(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => preventExtensionsOnFooViaSeal(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => preventExtensionsOnRootViaFreeze(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => preventExtensionsOnFooViaFreeze(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => setOnRoot(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => setOnFoo(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => setQux(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => setQuux(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => setQuux(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => setQuuxItem(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => setQuuxProperty(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => setPrototypeOfRoot(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => setPrototypeOfFoo(obj()), + { code: 'ERR_ASSERTION' } + ); + assert.throws( + () => setPrototypeOfQuux(obj()), + { code: 'ERR_ASSERTION' } + ); + + // Test that no mutation happened: + assert.ok(testOriginal(obj())); +} + +// Test various supported types, directly and nested: +[ + undefined, null, false, true, 42, 42n, Symbol('42'), NaN, Infinity, {}, [], + () => {}, async () => {}, Promise.resolve(), Math, Object.create(null), +].forEach((target) => { + assert.deepStrictEqual(mustNotMutateObjectDeep(target), target); + assert.deepStrictEqual(mustNotMutateObjectDeep({ target }), { target }); + assert.deepStrictEqual(mustNotMutateObjectDeep([ target ]), [ target ]); +}); + +// Test that passed functions keep working correctly: +{ + const fn = () => 'blep'; + fn.foo = {}; + const fnImmutableView = mustNotMutateObjectDeep(fn); + assert.deepStrictEqual(fnImmutableView, fn); + + // Test that the function still works: + assert.strictEqual(fn(), 'blep'); + assert.strictEqual(fnImmutableView(), 'blep'); + + // Test that the original function is not deeply frozen: + fn.foo.bar = 'baz'; + assert.strictEqual(fn.foo.bar, 'baz'); + assert.strictEqual(fnImmutableView.foo.bar, 'baz'); + + // Test the original function is not frozen: + fn.qux = 'quux'; + assert.strictEqual(fn.qux, 'quux'); + assert.strictEqual(fnImmutableView.qux, 'quux'); + + // Redefining util.promisify.custom also works: + promisify(mustNotMutateObjectDeep(promisify(fn))); +} diff --git a/test/parallel/test-console-issue-43095.js b/test/parallel/test-console-issue-43095.js new file mode 100644 index 00000000000000..647f4af2df4f96 --- /dev/null +++ b/test/parallel/test-console-issue-43095.js @@ -0,0 +1,12 @@ +'use strict'; + +require('../common'); +const { inspect } = require('node:util'); + +const r = Proxy.revocable({}, {}); +r.revoke(); + +console.dir(r); +console.dir(r.proxy); +console.log(r.proxy); +console.log(inspect(r.proxy, { showProxy: true })); diff --git a/test/parallel/test-crypto-authenticated.js b/test/parallel/test-crypto-authenticated.js index 3749895769ffc9..162b451c5b459c 100644 --- a/test/parallel/test-crypto-authenticated.js +++ b/test/parallel/test-crypto-authenticated.js @@ -96,10 +96,9 @@ for (const test of TEST_CASES) { const isCCM = /^aes-(128|192|256)-ccm$/.test(test.algo); const isOCB = /^aes-(128|192|256)-ocb$/.test(test.algo); - const isChacha20Poly1305 = test.algo === 'chacha20-poly1305'; let options; - if (isCCM || isOCB || isChacha20Poly1305) + if (isCCM || isOCB) options = { authTagLength: test.tag.length / 2 }; const inputEncoding = test.plainIsHex ? 'hex' : 'ascii'; @@ -659,8 +658,7 @@ for (const test of TEST_CASES) { assert.throws(() => crypto.createCipheriv( valid.algo, Buffer.from(valid.key, 'hex'), - Buffer.from(H(prefix) + valid.iv, 'hex'), - { authTagLength: valid.tag.length / 2 } + Buffer.from(H(prefix) + valid.iv, 'hex') ), errMessages.length, `iv length ${ivLength} was not rejected`); function H(length) { return '00'.repeat(length); } @@ -701,3 +699,90 @@ for (const test of TEST_CASES) { }); } } + +// ChaCha20-Poly1305 should respect the authTagLength option and should not +// require the authentication tag before calls to update() during decryption. +{ + const key = Buffer.alloc(32); + const iv = Buffer.alloc(12); + + for (let authTagLength = 1; authTagLength <= 16; authTagLength++) { + const cipher = + crypto.createCipheriv('chacha20-poly1305', key, iv, { authTagLength }); + const ciphertext = Buffer.concat([cipher.update('foo'), cipher.final()]); + const authTag = cipher.getAuthTag(); + assert.strictEqual(authTag.length, authTagLength); + + // The decipher operation should reject all authentication tags other than + // that of the expected length. + for (let other = 1; other <= 16; other++) { + const decipher = crypto.createDecipheriv('chacha20-poly1305', key, iv, { + authTagLength: other + }); + // ChaCha20 is a stream cipher so we do not need to call final() to obtain + // the full plaintext. + const plaintext = decipher.update(ciphertext); + assert.strictEqual(plaintext.toString(), 'foo'); + if (other === authTagLength) { + // The authentication tag length is as expected and the tag itself is + // correct, so this should work. + decipher.setAuthTag(authTag); + decipher.final(); + } else { + // The authentication tag that we are going to pass to setAuthTag is + // either too short or too long. If other < authTagLength, the + // authentication tag is still correct, but it should still be rejected + // because its security assurance is lower than expected. + assert.throws(() => { + decipher.setAuthTag(authTag); + }, { + code: 'ERR_CRYPTO_INVALID_AUTH_TAG', + message: `Invalid authentication tag length: ${authTagLength}` + }); + } + } + } +} + +// ChaCha20-Poly1305 should default to an authTagLength of 16. When encrypting, +// this matches the behavior of GCM ciphers. When decrypting, however, it is +// stricter than GCM in that it only allows authentication tags that are exactly +// 16 bytes long, whereas, when no authTagLength was specified, GCM would accept +// shorter tags as long as their length was valid according to NIST SP 800-38D. +// For ChaCha20-Poly1305, we intentionally deviate from that because there are +// no recommended or approved authentication tag lengths below 16 bytes. +{ + const rfcTestCases = TEST_CASES.filter(({ algo, tampered }) => { + return algo === 'chacha20-poly1305' && tampered === false; + }); + assert.strictEqual(rfcTestCases.length, 1); + + const [testCase] = rfcTestCases; + const key = Buffer.from(testCase.key, 'hex'); + const iv = Buffer.from(testCase.iv, 'hex'); + const aad = Buffer.from(testCase.aad, 'hex'); + + for (const opt of [ + undefined, + { authTagLength: undefined }, + { authTagLength: 16 }, + ]) { + const cipher = crypto.createCipheriv('chacha20-poly1305', key, iv, opt); + const ciphertext = Buffer.concat([ + cipher.setAAD(aad).update(testCase.plain, 'hex'), + cipher.final(), + ]); + const authTag = cipher.getAuthTag(); + + assert.strictEqual(ciphertext.toString('hex'), testCase.ct); + assert.strictEqual(authTag.toString('hex'), testCase.tag); + + const decipher = crypto.createDecipheriv('chacha20-poly1305', key, iv, opt); + const plaintext = Buffer.concat([ + decipher.setAAD(aad).update(ciphertext), + decipher.setAuthTag(authTag).final(), + ]); + + assert.strictEqual(plaintext.toString('hex'), testCase.plain); + } +} diff --git a/test/parallel/test-crypto-hkdf.js b/test/parallel/test-crypto-hkdf.js index 16744201a935dc..2d6689a486ddb6 100644 --- a/test/parallel/test-crypto-hkdf.js +++ b/test/parallel/test-crypto-hkdf.js @@ -15,6 +15,11 @@ const { } = require('crypto'); { + assert.throws(() => hkdf(), { + code: 'ERR_INVALID_ARG_TYPE', + message: /The "digest" argument must be of type string/ + }); + [1, {}, [], false, Infinity].forEach((i) => { assert.throws(() => hkdf(i, 'a'), { code: 'ERR_INVALID_ARG_TYPE', diff --git a/test/parallel/test-crypto-key-objects.js b/test/parallel/test-crypto-key-objects.js index 40a982ea7b6cd6..ce8de4d0cdba2d 100644 --- a/test/parallel/test-crypto-key-objects.js +++ b/test/parallel/test-crypto-key-objects.js @@ -5,7 +5,6 @@ if (!common.hasCrypto) common.skip('missing crypto'); const assert = require('assert'); -const { types: { isKeyObject } } = require('util'); const { createCipheriv, createDecipheriv, @@ -23,7 +22,6 @@ const { getCurves, generateKeySync, generateKeyPairSync, - webcrypto, } = require('crypto'); const fixtures = require('../common/fixtures'); @@ -825,27 +823,6 @@ const privateDsa = fixtures.readKey('dsa_private_encrypted_1025.pem', }); } -{ - const buffer = Buffer.from('Hello World'); - const keyObject = createSecretKey(buffer); - const keyPair = generateKeyPairSync('ec', { namedCurve: 'P-256' }); - assert(isKeyObject(keyPair.publicKey)); - assert(isKeyObject(keyPair.privateKey)); - assert(isKeyObject(keyObject)); - - assert(!isKeyObject(buffer)); - - webcrypto.subtle.importKey( - 'node.keyObject', - keyPair.publicKey, - { name: 'ECDH', namedCurve: 'P-256' }, - false, - [], - ).then((cryptoKey) => { - assert(!isKeyObject(cryptoKey)); - }); -} - { const first = Buffer.from('Hello'); const second = Buffer.from('World'); diff --git a/test/parallel/test-crypto-keygen.js b/test/parallel/test-crypto-keygen.js index 0b18360a17dc25..f42bd2accd7582 100644 --- a/test/parallel/test-crypto-keygen.js +++ b/test/parallel/test-crypto-keygen.js @@ -1603,22 +1603,6 @@ generateKeyPair('rsa', { assert.strictEqual(typeof privateKey, 'string'); })); -{ - // Proprietary Web Cryptography API ECDH/ECDSA namedCurve parameters - // should not be recognized in this API. - // See https://github.com/nodejs/node/issues/37055 - const curves = ['NODE-ED25519', 'NODE-ED448', 'NODE-X25519', 'NODE-X448']; - for (const namedCurve of curves) { - assert.throws( - () => generateKeyPair('ec', { namedCurve }, common.mustNotCall()), - { - name: 'TypeError', - message: 'Invalid EC curve name' - } - ); - } -} - { // This test creates EC key pairs on curves without associated OIDs. // Specifying a key encoding should not crash. diff --git a/test/parallel/test-crypto-prime.js b/test/parallel/test-crypto-prime.js index 2d3f39aec15a08..bab98c4e9697e6 100644 --- a/test/parallel/test-crypto-prime.js +++ b/test/parallel/test-crypto-prime.js @@ -41,12 +41,14 @@ const pCheckPrime = promisify(checkPrime); }); }); -[-1, 0, 2 ** 31, 2 ** 31 + 1, 2 ** 32 - 1, 2 ** 32].forEach((i) => { - assert.throws(() => generatePrime(i, common.mustNotCall()), { - code: 'ERR_OUT_OF_RANGE' +[-1, 0, 2 ** 31, 2 ** 31 + 1, 2 ** 32 - 1, 2 ** 32].forEach((size) => { + assert.throws(() => generatePrime(size, common.mustNotCall()), { + code: 'ERR_OUT_OF_RANGE', + message: />= 1 && <= 2147483647/ }); - assert.throws(() => generatePrimeSync(i), { - code: 'ERR_OUT_OF_RANGE' + assert.throws(() => generatePrimeSync(size), { + code: 'ERR_OUT_OF_RANGE', + message: />= 1 && <= 2147483647/ }); }); diff --git a/test/parallel/test-crypto-psychic-signatures.js b/test/parallel/test-crypto-psychic-signatures.js new file mode 100644 index 00000000000000..b8e1207b5c8a17 --- /dev/null +++ b/test/parallel/test-crypto-psychic-signatures.js @@ -0,0 +1,100 @@ +'use strict'; +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); + +const assert = require('assert'); + +const crypto = require('crypto'); + +// Tests for CVE-2022-21449 +// https://neilmadden.blog/2022/04/19/psychic-signatures-in-java/ +// Dubbed "Psychic Signatures", these signatures bypassed the ECDSA signature +// verification implementation in Java in 15, 16, 17, and 18. OpenSSL is not +// (and was not) vulnerable so these are a precaution. + +const vectors = { + 'ieee-p1363': [ + Buffer.from('0000000000000000000000000000000000000000000000000000000000000000' + + '0000000000000000000000000000000000000000000000000000000000000000', 'hex'), + Buffer.from('ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551' + + 'ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551', 'hex'), + ], + 'der': [ + Buffer.from('3046022100' + + '0000000000000000000000000000000000000000000000000000000000000000' + + '022100' + + '0000000000000000000000000000000000000000000000000000000000000000', 'hex'), + Buffer.from('3046022100' + + 'ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551' + + '022100' + + 'ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551', 'hex'), + ], +}; + +const keyPair = crypto.generateKeyPairSync('ec', { + namedCurve: 'P-256', + publicKeyEncoding: { + format: 'der', + type: 'spki' + }, +}); + +const data = Buffer.from('Hello!'); + +for (const [encoding, signatures] of Object.entries(vectors)) { + for (const signature of signatures) { + const key = { + key: keyPair.publicKey, + format: 'der', + type: 'spki', + dsaEncoding: encoding, + }; + + // one-shot sync + assert.strictEqual( + crypto.verify( + 'sha256', + data, + key, + signature, + ), + false, + ); + + // one-shot async + crypto.verify( + 'sha256', + data, + key, + signature, + common.mustSucceed((verified) => assert.strictEqual(verified, false)), + ); + + // stream + assert.strictEqual( + crypto.createVerify('sha256') + .update(data) + .verify(key, signature), + false, + ); + + // webcrypto + crypto.webcrypto.subtle.importKey( + 'spki', + keyPair.publicKey, + { name: 'ECDSA', namedCurve: 'P-256' }, + false, + ['verify'], + ).then((publicKey) => { + return crypto.webcrypto.subtle.verify( + { name: 'ECDSA', hash: 'SHA-256' }, + publicKey, + signature, + data, + ); + }).then(common.mustCall((verified) => { + assert.strictEqual(verified, false); + })); + } +} diff --git a/test/parallel/test-crypto-scrypt.js b/test/parallel/test-crypto-scrypt.js index 7b695a36f2b5a4..76c06b4a49eaf2 100644 --- a/test/parallel/test-crypto-scrypt.js +++ b/test/parallel/test-crypto-scrypt.js @@ -24,7 +24,7 @@ const good = [ }, // Test vectors from https://tools.ietf.org/html/rfc7914#page-13 that // should pass. Note that the test vector with N=1048576 is omitted - // because it takes too long to complete and uses over 1 GB of memory. + // because it takes too long to complete and uses over 1 GiB of memory. { pass: '', salt: '', diff --git a/test/parallel/test-crypto-secret-keygen.js b/test/parallel/test-crypto-secret-keygen.js index ab662aeb5d123b..dddb2865bcbbae 100644 --- a/test/parallel/test-crypto-secret-keygen.js +++ b/test/parallel/test-crypto-secret-keygen.js @@ -51,6 +51,14 @@ assert.throws(() => generateKey('hmac', { length: -1 }, common.mustNotCall()), { code: 'ERR_OUT_OF_RANGE' }); +assert.throws(() => generateKey('hmac', { length: 4 }, common.mustNotCall()), { + code: 'ERR_OUT_OF_RANGE' +}); + +assert.throws(() => generateKey('hmac', { length: 7 }, common.mustNotCall()), { + code: 'ERR_OUT_OF_RANGE' +}); + assert.throws( () => generateKey('hmac', { length: 2 ** 31 }, common.mustNotCall()), { code: 'ERR_OUT_OF_RANGE' @@ -60,6 +68,14 @@ assert.throws(() => generateKeySync('hmac', { length: -1 }), { code: 'ERR_OUT_OF_RANGE' }); +assert.throws(() => generateKeySync('hmac', { length: 4 }), { + code: 'ERR_OUT_OF_RANGE' +}); + +assert.throws(() => generateKeySync('hmac', { length: 7 }), { + code: 'ERR_OUT_OF_RANGE' +}); + assert.throws( () => generateKeySync('hmac', { length: 2 ** 31 }), { code: 'ERR_OUT_OF_RANGE' diff --git a/test/parallel/test-debugger-address.js b/test/parallel/test-debugger-address.mjs similarity index 57% rename from test/parallel/test-debugger-address.js rename to test/parallel/test-debugger-address.mjs index bffc28ac916e8d..eab99c9b0e2fb3 100644 --- a/test/parallel/test-debugger-address.js +++ b/test/parallel/test-debugger-address.mjs @@ -1,13 +1,12 @@ -'use strict'; -const common = require('../common'); +import { skipIfInspectorDisabled } from '../common/index.mjs'; -common.skipIfInspectorDisabled(); +skipIfInspectorDisabled(); -const fixtures = require('../common/fixtures'); -const startCLI = require('../common/debugger'); +import * as fixtures from '../common/fixtures.mjs'; +import startCLI from '../common/debugger.js'; -const assert = require('assert'); -const { spawn } = require('child_process'); +import assert from 'assert'; +import { spawn } from 'child_process'; // NOTE(oyyd): We might want to import this regexp from "lib/_inspect.js"? const kDebuggerMsgReg = /Debugger listening on ws:\/\/\[?(.+?)\]?:(\d+)\//; @@ -53,21 +52,20 @@ function launchTarget(...args) { assert.ifError(error); } - return launchTarget('--inspect=0', script) - .then(({ childProc, host, port }) => { - target = childProc; - cli = startCLI([`${host || '127.0.0.1'}:${port}`]); - return cli.waitForPrompt(); - }) - .then(() => cli.command('sb("alive.js", 3)')) - .then(() => cli.waitFor(/break/)) - .then(() => cli.waitForPrompt()) - .then(() => { - assert.match( - cli.output, - /> 3 {3}\+\+x;/, - 'marks the 3rd line'); - }) - .then(() => cleanup()) - .then(null, cleanup); + try { + const { childProc, host, port } = await launchTarget('--inspect=0', script); + target = childProc; + cli = startCLI([`${host || '127.0.0.1'}:${port}`]); + await cli.waitForPrompt(); + await cli.command('sb("alive.js", 3)'); + await cli.waitFor(/break/); + await cli.waitForPrompt(); + assert.match( + cli.output, + /> 3 {3}\+\+x;/, + 'marks the 3rd line' + ); + } finally { + cleanup(); + } } diff --git a/test/parallel/test-debugger-extract-function-name.mjs b/test/parallel/test-debugger-extract-function-name.mjs new file mode 100644 index 00000000000000..e457fc7f521521 --- /dev/null +++ b/test/parallel/test-debugger-extract-function-name.mjs @@ -0,0 +1,33 @@ +import { skipIfInspectorDisabled } from '../common/index.mjs'; + +skipIfInspectorDisabled(); + +import { path } from '../common/fixtures.mjs'; +import startCLI from '../common/debugger.js'; + +import assert from 'assert'; + +const cli = startCLI([path('debugger', 'three-lines.js')]); + +try { + await cli.waitForInitialBreak(); + await cli.waitForPrompt(); + await cli.command('exec a = function func() {}; a;'); + assert.match(cli.output, /\[Function: func\]/); + await cli.command('exec a = function func () {}; a;'); + assert.match(cli.output, /\[Function\]/); + await cli.command('exec a = function() {}; a;'); + assert.match(cli.output, /\[Function: function\]/); + await cli.command('exec a = () => {}; a;'); + assert.match(cli.output, /\[Function\]/); + await cli.command('exec a = function* func() {}; a;'); + assert.match(cli.output, /\[GeneratorFunction: func\]/); + await cli.command('exec a = function *func() {}; a;'); + assert.match(cli.output, /\[GeneratorFunction: \*func\]/); + await cli.command('exec a = function*func() {}; a;'); + assert.match(cli.output, /\[GeneratorFunction: function\*func\]/); + await cli.command('exec a = function * func() {}; a;'); + assert.match(cli.output, /\[GeneratorFunction\]/); +} finally { + cli.quit(); +} diff --git a/test/parallel/test-debugger-invalid-json.js b/test/parallel/test-debugger-invalid-json.js new file mode 100644 index 00000000000000..9bad8ed36949b2 --- /dev/null +++ b/test/parallel/test-debugger-invalid-json.js @@ -0,0 +1,42 @@ +'use strict'; +const common = require('../common'); +const startCLI = require('../common/debugger'); + +common.skipIfInspectorDisabled(); + +const assert = require('assert'); +const http = require('http'); + +const host = '127.0.0.1'; + +{ + const server = http.createServer((req, res) => { + res.statusCode = 400; + res.end('Bad Request'); + }); + server.listen(0, common.mustCall(() => { + const port = server.address().port; + const cli = startCLI([`${host}:${port}`]); + cli.quit().then(common.mustCall((code) => { + assert.strictEqual(code, 1); + })).finally(() => { + server.close(); + }); + })); +} + +{ + const server = http.createServer((req, res) => { + res.statusCode = 200; + res.end('some data that is invalid json'); + }); + server.listen(0, host, common.mustCall(() => { + const port = server.address().port; + const cli = startCLI([`${host}:${port}`]); + cli.quit().then(common.mustCall((code) => { + assert.strictEqual(code, 1); + })).finally(() => { + server.close(); + }); + })); +} diff --git a/test/parallel/test-dgram-cluster-close-in-listening.js b/test/parallel/test-dgram-cluster-close-in-listening.js new file mode 100644 index 00000000000000..8cce54027164eb --- /dev/null +++ b/test/parallel/test-dgram-cluster-close-in-listening.js @@ -0,0 +1,29 @@ +'use strict'; +// Ensure that closing dgram sockets in 'listening' callbacks of cluster workers +// won't throw errors. + +const common = require('../common'); +const dgram = require('dgram'); +const cluster = require('cluster'); +if (common.isWindows) + common.skip('dgram clustering is currently not supported on windows.'); + +if (cluster.isPrimary) { + for (let i = 0; i < 3; i += 1) { + cluster.fork(); + } +} else { + const socket = dgram.createSocket('udp4'); + + socket.on('error', common.mustNotCall()); + + socket.on('listening', common.mustCall(() => { + socket.close(); + })); + + socket.on('close', common.mustCall(() => { + cluster.worker.disconnect(); + })); + + socket.bind(0); +} diff --git a/test/parallel/test-diagnostics-channel-http.js b/test/parallel/test-diagnostics-channel-http.js new file mode 100644 index 00000000000000..4de08d9253c10a --- /dev/null +++ b/test/parallel/test-diagnostics-channel-http.js @@ -0,0 +1,63 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const http = require('http'); +const net = require('net'); +const dc = require('diagnostics_channel'); + +const onClientRequestStart = dc.channel('http.client.request.start'); +const onClientResponseFinish = dc.channel('http.client.response.finish'); +const onServerRequestStart = dc.channel('http.server.request.start'); +const onServerResponseFinish = dc.channel('http.server.response.finish'); + +const isHTTPServer = (server) => server instanceof http.Server; +const isIncomingMessage = (object) => object instanceof http.IncomingMessage; +const isOutgoingMessage = (object) => object instanceof http.OutgoingMessage; +const isNetSocket = (socket) => socket instanceof net.Socket; + +onClientRequestStart.subscribe(common.mustCall(({ request }) => { + assert.strictEqual(isOutgoingMessage(request), true); +})); + +onClientResponseFinish.subscribe(common.mustCall(({ request, response }) => { + assert.strictEqual(isOutgoingMessage(request), true); + assert.strictEqual(isIncomingMessage(response), true); +})); + +onServerRequestStart.subscribe(common.mustCall(({ + request, + response, + socket, + server, +}) => { + assert.strictEqual(isIncomingMessage(request), true); + assert.strictEqual(isOutgoingMessage(response), true); + assert.strictEqual(isNetSocket(socket), true); + assert.strictEqual(isHTTPServer(server), true); +})); + +onServerResponseFinish.subscribe(common.mustCall(({ + request, + response, + socket, + server, +}) => { + assert.strictEqual(isIncomingMessage(request), true); + assert.strictEqual(isOutgoingMessage(response), true); + assert.strictEqual(isNetSocket(socket), true); + assert.strictEqual(isHTTPServer(server), true); +})); + +const server = http.createServer(common.mustCall((req, res) => { + res.end('done'); +})); + +server.listen(() => { + const { port } = server.address(); + http.get(`http://localhost:${port}`, (res) => { + res.resume(); + res.on('end', () => { + server.close(); + }); + }); +}); diff --git a/test/parallel/test-diagnostics-channel-pub-sub.js b/test/parallel/test-diagnostics-channel-pub-sub.js new file mode 100644 index 00000000000000..2317d90dbbc554 --- /dev/null +++ b/test/parallel/test-diagnostics-channel-pub-sub.js @@ -0,0 +1,44 @@ +'use strict'; + +const common = require('../common'); +const dc = require('diagnostics_channel'); +const assert = require('assert'); +const { Channel } = dc; + +const name = 'test'; +const input = { + foo: 'bar' +}; + +// Individual channel objects can be created to avoid future lookups +const channel = dc.channel(name); +assert.ok(channel instanceof Channel); + +// No subscribers yet, should not publish +assert.ok(!channel.hasSubscribers); + +const subscriber = common.mustCall((message, name) => { + assert.strictEqual(name, channel.name); + assert.deepStrictEqual(message, input); +}); + +// Now there's a subscriber, should publish +dc.subscribe(name, subscriber); +assert.ok(channel.hasSubscribers); + +// The ActiveChannel prototype swap should not fail instanceof +assert.ok(channel instanceof Channel); + +// Should trigger the subscriber once +channel.publish(input); + +// Should not publish after subscriber is unsubscribed +assert.ok(dc.unsubscribe(name, subscriber)); +assert.ok(!channel.hasSubscribers); + +// unsubscribe() should return false when subscriber is not found +assert.ok(!dc.unsubscribe(name, subscriber)); + +assert.throws(() => { + dc.subscribe(name, null); +}, { code: 'ERR_INVALID_ARG_TYPE' }); diff --git a/test/parallel/test-dns-get-server.js b/test/parallel/test-dns-get-server.js new file mode 100644 index 00000000000000..24c01218fad519 --- /dev/null +++ b/test/parallel/test-dns-get-server.js @@ -0,0 +1,11 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); + +const { Resolver } = require('dns'); + +const resolver = new Resolver(); +assert(resolver.getServers().length > 0); +// return undefined +resolver._handle.getServers = common.mustCall(() => {}); +assert.strictEqual(resolver.getServers().length, 0); diff --git a/test/parallel/test-dns-lookupService-promises.js b/test/parallel/test-dns-lookupService-promises.js index d7e50f194da8a1..4052139c922389 100644 --- a/test/parallel/test-dns-lookupService-promises.js +++ b/test/parallel/test-dns-lookupService-promises.js @@ -6,7 +6,7 @@ const assert = require('assert'); const dnsPromises = require('dns').promises; dnsPromises.lookupService('127.0.0.1', 22).then(common.mustCall((result) => { - assert.strictEqual(result.service, 'ssh'); + assert(['ssh', '22'].includes(result.service)); assert.strictEqual(typeof result.hostname, 'string'); assert.notStrictEqual(result.hostname.length, 0); })); diff --git a/test/parallel/test-dns-perf_hooks.js b/test/parallel/test-dns-perf_hooks.js new file mode 100644 index 00000000000000..d90b7dfe3dea95 --- /dev/null +++ b/test/parallel/test-dns-perf_hooks.js @@ -0,0 +1,26 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const dns = require('dns'); +const { PerformanceObserver } = require('perf_hooks'); + +const entries = []; +const obs = new PerformanceObserver(common.mustCallAtLeast((items) => { + entries.push(...items.getEntries()); +})); + +obs.observe({ type: 'dns' }); + +dns.lookup('localhost', () => {}); + +process.on('exit', () => { + assert.strictEqual(entries.length, 1); + entries.forEach((entry) => { + assert.strictEqual(!!entry.name, true); + assert.strictEqual(entry.entryType, 'dns'); + assert.strictEqual(typeof entry.startTime, 'number'); + assert.strictEqual(typeof entry.duration, 'number'); + assert.strictEqual(typeof entry.detail, 'object'); + }); +}); diff --git a/test/parallel/test-dns-promises-exists.js b/test/parallel/test-dns-promises-exists.js index 5fd20dff2c12d2..d88ecefaa985ca 100644 --- a/test/parallel/test-dns-promises-exists.js +++ b/test/parallel/test-dns-promises-exists.js @@ -2,5 +2,32 @@ require('../common'); const assert = require('assert'); +const dnsPromises = require('dns/promises'); +const dns = require('dns'); -assert.strictEqual(require('dns/promises'), require('dns').promises); +assert.strictEqual(dnsPromises, dns.promises); + +assert.strictEqual(dnsPromises.NODATA, dns.NODATA); +assert.strictEqual(dnsPromises.FORMERR, dns.FORMERR); +assert.strictEqual(dnsPromises.SERVFAIL, dns.SERVFAIL); +assert.strictEqual(dnsPromises.NOTFOUND, dns.NOTFOUND); +assert.strictEqual(dnsPromises.NOTIMP, dns.NOTIMP); +assert.strictEqual(dnsPromises.REFUSED, dns.REFUSED); +assert.strictEqual(dnsPromises.BADQUERY, dns.BADQUERY); +assert.strictEqual(dnsPromises.BADNAME, dns.BADNAME); +assert.strictEqual(dnsPromises.BADFAMILY, dns.BADFAMILY); +assert.strictEqual(dnsPromises.BADRESP, dns.BADRESP); +assert.strictEqual(dnsPromises.CONNREFUSED, dns.CONNREFUSED); +assert.strictEqual(dnsPromises.TIMEOUT, dns.TIMEOUT); +assert.strictEqual(dnsPromises.EOF, dns.EOF); +assert.strictEqual(dnsPromises.FILE, dns.FILE); +assert.strictEqual(dnsPromises.NOMEM, dns.NOMEM); +assert.strictEqual(dnsPromises.DESTRUCTION, dns.DESTRUCTION); +assert.strictEqual(dnsPromises.BADSTR, dns.BADSTR); +assert.strictEqual(dnsPromises.BADFLAGS, dns.BADFLAGS); +assert.strictEqual(dnsPromises.NONAME, dns.NONAME); +assert.strictEqual(dnsPromises.BADHINTS, dns.BADHINTS); +assert.strictEqual(dnsPromises.NOTINITIALIZED, dns.NOTINITIALIZED); +assert.strictEqual(dnsPromises.LOADIPHLPAPI, dns.LOADIPHLPAPI); +assert.strictEqual(dnsPromises.ADDRGETNETWORKPARAMS, dns.ADDRGETNETWORKPARAMS); +assert.strictEqual(dnsPromises.CANCELLED, dns.CANCELLED); diff --git a/test/parallel/test-domain-dep0097.js b/test/parallel/test-domain-dep0097.js index 05b5c74b30d98e..7ed823aa4165af 100644 --- a/test/parallel/test-domain-dep0097.js +++ b/test/parallel/test-domain-dep0097.js @@ -13,5 +13,5 @@ process.on('warning', common.mustCall((warning) => { })); domain.create().run(() => { - inspector.open(); + inspector.open(0); }); diff --git a/test/parallel/test-domain-vm-promise-isolation.js b/test/parallel/test-domain-vm-promise-isolation.js new file mode 100644 index 00000000000000..41aed1ee337df4 --- /dev/null +++ b/test/parallel/test-domain-vm-promise-isolation.js @@ -0,0 +1,28 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const domain = require('domain'); +const vm = require('vm'); + +// A promise created in a VM should not include a domain field but +// domains should still be able to propagate through them. +// +// See; https://github.com/nodejs/node/issues/40999 + +const context = vm.createContext({}); + +function run(code) { + const d = domain.createDomain(); + d.run(common.mustCall(() => { + const p = vm.runInContext(code, context)(); + assert.strictEqual(p.domain, undefined); + p.then(common.mustCall(() => { + assert.strictEqual(process.domain, d); + })); + })); +} + +for (let i = 0; i < 1000; i++) { + run('async () => null'); +} diff --git a/test/parallel/test-errors-aborterror.js b/test/parallel/test-errors-aborterror.js new file mode 100644 index 00000000000000..15da9f06f94b4d --- /dev/null +++ b/test/parallel/test-errors-aborterror.js @@ -0,0 +1,31 @@ +// Flags: --expose-internals +'use strict'; + +require('../common'); +const { + strictEqual, + throws, +} = require('assert'); +const { AbortError } = require('internal/errors'); + +{ + const err = new AbortError(); + strictEqual(err.message, 'The operation was aborted'); + strictEqual(err.cause, undefined); +} + +{ + const cause = new Error('boom'); + const err = new AbortError('bang', { cause }); + strictEqual(err.message, 'bang'); + strictEqual(err.cause, cause); +} + +{ + throws(() => new AbortError('', false), { + code: 'ERR_INVALID_ARG_TYPE' + }); + throws(() => new AbortError('', ''), { + code: 'ERR_INVALID_ARG_TYPE' + }); +} diff --git a/test/parallel/test-errors-systemerror.js b/test/parallel/test-errors-systemerror.js index 2a20588e75b386..38afbd4aa7d164 100644 --- a/test/parallel/test-errors-systemerror.js +++ b/test/parallel/test-errors-systemerror.js @@ -9,7 +9,7 @@ assert.throws( () => { new SystemError(); }, { name: 'TypeError', - message: 'String.prototype.match called on null or undefined' + message: "Cannot read properties of undefined (reading 'syscall')", } ); diff --git a/test/parallel/test-eslint-avoid-prototype-pollution.js b/test/parallel/test-eslint-avoid-prototype-pollution.js new file mode 100644 index 00000000000000..26b0852c0c24ee --- /dev/null +++ b/test/parallel/test-eslint-avoid-prototype-pollution.js @@ -0,0 +1,207 @@ +'use strict'; + +const common = require('../common'); +if ((!common.hasCrypto) || (!common.hasIntl)) { + common.skip('ESLint tests require crypto and Intl'); +} + +common.skipIfEslintMissing(); + +const RuleTester = require('../../tools/node_modules/eslint').RuleTester; +const rule = require('../../tools/eslint-rules/avoid-prototype-pollution'); + +new RuleTester({ + parserOptions: { ecmaVersion: 2022 }, +}) + .run('property-descriptor-no-prototype-pollution', rule, { + valid: [ + 'ObjectDefineProperties({}, {})', + 'ObjectCreate(null, {})', + 'ObjectDefineProperties({}, { key })', + 'ObjectCreate(null, { key })', + 'ObjectDefineProperties({}, { ...spread })', + 'ObjectCreate(null, { ...spread })', + 'ObjectDefineProperties({}, { key: valueDescriptor })', + 'ObjectCreate(null, { key: valueDescriptor })', + 'ObjectDefineProperties({}, { key: { ...{}, __proto__: null } })', + 'ObjectCreate(null, { key: { ...{}, __proto__: null } })', + 'ObjectDefineProperties({}, { key: { __proto__: null } })', + 'ObjectCreate(null, { key: { __proto__: null } })', + 'ObjectDefineProperties({}, { key: { __proto__: null, enumerable: true } })', + 'ObjectCreate(null, { key: { __proto__: null, enumerable: true } })', + 'ObjectDefineProperties({}, { key: { "__proto__": null } })', + 'ObjectCreate(null, { key: { "__proto__": null } })', + 'ObjectDefineProperties({}, { key: { \'__proto__\': null } })', + 'ObjectCreate(null, { key: { \'__proto__\': null } })', + 'ObjectDefineProperty({}, "key", ObjectCreate(null))', + 'ReflectDefineProperty({}, "key", ObjectCreate(null))', + 'ObjectDefineProperty({}, "key", valueDescriptor)', + 'ReflectDefineProperty({}, "key", valueDescriptor)', + 'ObjectDefineProperty({}, "key", { __proto__: null })', + 'ReflectDefineProperty({}, "key", { __proto__: null })', + 'ObjectDefineProperty({}, "key", { __proto__: null, enumerable: true })', + 'ReflectDefineProperty({}, "key", { __proto__: null, enumerable: true })', + 'ObjectDefineProperty({}, "key", { "__proto__": null })', + 'ReflectDefineProperty({}, "key", { "__proto__": null })', + 'ObjectDefineProperty({}, "key", { \'__proto__\': null })', + 'ReflectDefineProperty({}, "key", { \'__proto__\': null })', + 'new Proxy({}, otherObject)', + 'new Proxy({}, someFactory())', + 'new Proxy({}, { __proto__: null })', + 'new Proxy({}, { __proto__: null, ...{} })', + ], + invalid: [ + { + code: 'ObjectDefineProperties({}, ObjectGetOwnPropertyDescriptors({}))', + errors: [{ message: /prototype pollution/ }], + }, + { + code: 'ObjectCreate(null, ObjectGetOwnPropertyDescriptors({}))', + errors: [{ message: /prototype pollution/ }], + }, + { + code: 'ObjectDefineProperties({}, { key: {} })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectCreate(null, { key: {} })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectDefineProperties({}, { key: { [void 0]: { ...{ __proto__: null } } } })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectCreate(null, { key: { [void 0]: { ...{ __proto__: null } } } })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectDefineProperties({}, { key: { __proto__: Object.prototype } })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectCreate(null, { key: { __proto__: Object.prototype } })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectDefineProperties({}, { key: { [`__proto__`]: null } })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectCreate(null, { key: { [`__proto__`]: null } })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectDefineProperties({}, { key: { enumerable: true } })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectCreate(null, { key: { enumerable: true } })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectDefineProperty({}, "key", {})', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ReflectDefineProperty({}, "key", {})', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectDefineProperty({}, "key", ObjectGetOwnPropertyDescriptor({}, "key"))', + errors: [{ message: /prototype pollution/ }], + }, + { + code: 'ReflectDefineProperty({}, "key", ObjectGetOwnPropertyDescriptor({}, "key"))', + errors: [{ message: /prototype pollution/ }], + }, + { + code: 'ObjectDefineProperty({}, "key", ReflectGetOwnPropertyDescriptor({}, "key"))', + errors: [{ message: /prototype pollution/ }], + }, + { + code: 'ReflectDefineProperty({}, "key", ReflectGetOwnPropertyDescriptor({}, "key"))', + errors: [{ message: /prototype pollution/ }], + }, + { + code: 'ObjectDefineProperty({}, "key", { __proto__: Object.prototype })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ReflectDefineProperty({}, "key", { __proto__: Object.prototype })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectDefineProperty({}, "key", { [`__proto__`]: null })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ReflectDefineProperty({}, "key", { [`__proto__`]: null })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ObjectDefineProperty({}, "key", { enumerable: true })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'ReflectDefineProperty({}, "key", { enumerable: true })', + errors: [{ message: /null-prototype/ }], + }, + { + code: 'RegExpPrototypeTest(/some regex/, "some string")', + errors: [{ message: /looks up the "exec" property/ }], + }, + { + code: 'RegExpPrototypeSymbolMatch(/some regex/, "some string")', + errors: [{ message: /looks up the "exec" property/ }], + }, + { + code: 'RegExpPrototypeSymbolMatchAll(/some regex/, "some string")', + errors: [{ message: /looks up the "exec" property/ }], + }, + { + code: 'RegExpPrototypeSymbolSearch(/some regex/, "some string")', + errors: [{ message: /looks up the "exec" property/ }], + }, + { + code: 'StringPrototypeMatch("some string", /some regex/)', + errors: [{ message: /looks up the Symbol\.match property/ }], + }, + { + code: 'StringPrototypeMatchAll("some string", /some regex/)', + errors: [{ message: /looks up the Symbol\.matchAll property/ }], + }, + { + code: 'StringPrototypeReplace("some string", /some regex/, "some replacement")', + errors: [{ message: /looks up the Symbol\.replace property/ }], + }, + { + code: 'StringPrototypeReplaceAll("some string", /some regex/, "some replacement")', + errors: [{ message: /looks up the Symbol\.replace property/ }], + }, + { + code: 'StringPrototypeSearch("some string", /some regex/)', + errors: [{ message: /looks up the Symbol\.search property/ }], + }, + { + code: 'StringPrototypeSplit("some string", /some regex/)', + errors: [{ message: /looks up the Symbol\.split property/ }], + }, + { + code: 'new Proxy({}, {})', + errors: [{ message: /null-prototype/ }] + }, + { + code: 'new Proxy({}, { [`__proto__`]: null })', + errors: [{ message: /null-prototype/ }] + }, + { + code: 'new Proxy({}, { __proto__: Object.prototype })', + errors: [{ message: /null-prototype/ }] + }, + { + code: 'new Proxy({}, { ...{ __proto__: null } })', + errors: [{ message: /null-prototype/ }] + }, + ] + }); diff --git a/test/parallel/test-events-customevent.js b/test/parallel/test-events-customevent.js new file mode 100644 index 00000000000000..dc4acb312c1131 --- /dev/null +++ b/test/parallel/test-events-customevent.js @@ -0,0 +1,325 @@ +// Flags: --expose-internals + +'use strict'; + +const common = require('../common'); +const { ok, strictEqual, deepStrictEqual, throws } = require('node:assert'); +const { inspect } = require('node:util'); +const { Event, EventTarget, CustomEvent } = require('internal/event_target'); + +{ + ok(CustomEvent); + + // Default string + const tag = Object.prototype.toString.call(new CustomEvent('$')); + strictEqual(tag, '[object CustomEvent]'); +} + +{ + // No argument behavior - throw TypeError + throws(() => { + new CustomEvent(); + }, TypeError); + + throws(() => new CustomEvent(Symbol()), TypeError); + + // Too many arguments passed behavior - ignore additional arguments + const ev = new CustomEvent('foo', {}, {}); + strictEqual(ev.type, 'foo'); +} + +{ + const ev = new CustomEvent('$'); + strictEqual(ev.type, '$'); + strictEqual(ev.bubbles, false); + strictEqual(ev.cancelable, false); + strictEqual(ev.detail, null); +} + +{ + // Coercion to string works + strictEqual(new CustomEvent(1).type, '1'); + strictEqual(new CustomEvent(false).type, 'false'); + strictEqual(new CustomEvent({}).type, String({})); +} + +{ + const ev = new CustomEvent('$', { + detail: 56, + sweet: 'x', + cancelable: true, + }); + strictEqual(ev.type, '$'); + strictEqual(ev.bubbles, false); + strictEqual(ev.cancelable, true); + strictEqual(ev.sweet, undefined); + strictEqual(ev.detail, 56); +} + +{ + // Any types of value for `detail` are acceptable. + ['foo', 1, false, [], {}].forEach((i) => { + const ev = new CustomEvent('$', { detail: i }); + strictEqual(ev.detail, i); + }); +} + +{ + // Readonly `detail` behavior + const ev = new CustomEvent('$', { + detail: 56, + }); + strictEqual(ev.detail, 56); + try { + ev.detail = 96; + // eslint-disable-next-line no-unused-vars + } catch (error) { + common.mustCall()(); + } + strictEqual(ev.detail, 56); +} + +{ + const ev = new Event('$', { + detail: 96, + }); + strictEqual(ev.detail, undefined); +} + +// The following tests verify whether CustomEvent works the same as Event +// except carrying custom data. They're based on `parallel/test-eventtarget.js`. + +{ + const ev = new CustomEvent('$'); + strictEqual(ev.type, '$'); + strictEqual(ev.bubbles, false); + strictEqual(ev.cancelable, false); + strictEqual(ev.detail, null); + + strictEqual(ev.defaultPrevented, false); + strictEqual(typeof ev.timeStamp, 'number'); + + // Compatibility properties with the DOM + deepStrictEqual(ev.composedPath(), []); + strictEqual(ev.returnValue, true); + strictEqual(ev.composed, false); + strictEqual(ev.isTrusted, false); + strictEqual(ev.eventPhase, 0); + strictEqual(ev.cancelBubble, false); + + // Not cancelable + ev.preventDefault(); + strictEqual(ev.defaultPrevented, false); +} + +{ + // Invalid options + ['foo', 1, false].forEach((i) => + throws(() => new CustomEvent('foo', i), { + code: 'ERR_INVALID_ARG_TYPE', + name: 'TypeError', + message: + 'The "options" argument must be of type object.' + + common.invalidArgTypeHelper(i), + }), + ); +} + +{ + const ev = new CustomEvent('$'); + strictEqual(ev.constructor.name, 'CustomEvent'); + + // CustomEvent Statics + strictEqual(CustomEvent.NONE, 0); + strictEqual(CustomEvent.CAPTURING_PHASE, 1); + strictEqual(CustomEvent.AT_TARGET, 2); + strictEqual(CustomEvent.BUBBLING_PHASE, 3); + strictEqual(new CustomEvent('foo').eventPhase, CustomEvent.NONE); + + // CustomEvent is a function + strictEqual(CustomEvent.length, 1); +} + +{ + const ev = new CustomEvent('foo'); + strictEqual(ev.cancelBubble, false); + ev.cancelBubble = true; + strictEqual(ev.cancelBubble, true); +} +{ + const ev = new CustomEvent('foo'); + strictEqual(ev.cancelBubble, false); + ev.stopPropagation(); + strictEqual(ev.cancelBubble, true); +} +{ + const ev = new CustomEvent('foo'); + strictEqual(ev.cancelBubble, false); + ev.cancelBubble = 'some-truthy-value'; + strictEqual(ev.cancelBubble, true); +} +{ + const ev = new CustomEvent('foo'); + strictEqual(ev.cancelBubble, false); + ev.cancelBubble = true; + strictEqual(ev.cancelBubble, true); +} +{ + const ev = new CustomEvent('foo'); + strictEqual(ev.cancelBubble, false); + ev.stopPropagation(); + strictEqual(ev.cancelBubble, true); +} +{ + const ev = new CustomEvent('foo'); + strictEqual(ev.cancelBubble, false); + ev.cancelBubble = 'some-truthy-value'; + strictEqual(ev.cancelBubble, true); +} +{ + const ev = new CustomEvent('foo', { cancelable: true }); + strictEqual(ev.type, 'foo'); + strictEqual(ev.cancelable, true); + strictEqual(ev.defaultPrevented, false); + + ev.preventDefault(); + strictEqual(ev.defaultPrevented, true); +} +{ + const ev = new CustomEvent('foo'); + deepStrictEqual(Object.keys(ev), ['isTrusted']); +} + +// Works with EventTarget + +{ + const obj = { sweet: 'x', memory: { x: 56, y: 96 } }; + const et = new EventTarget(); + const ev = new CustomEvent('$', { detail: obj }); + const fn = common.mustCall((event) => { + strictEqual(event, ev); + deepStrictEqual(event.detail, obj); + }); + et.addEventListener('$', fn); + et.dispatchEvent(ev); +} + +{ + const eventTarget = new EventTarget(); + const event = new CustomEvent('$'); + eventTarget.dispatchEvent(event); + strictEqual(event.target, eventTarget); +} + +{ + const obj = { sweet: 'x' }; + const eventTarget = new EventTarget(); + + const ev1 = common.mustCall(function(event) { + strictEqual(event.type, 'foo'); + strictEqual(event.detail, obj); + strictEqual(this, eventTarget); + strictEqual(event.eventPhase, 2); + }, 2); + + const ev2 = { + handleEvent: common.mustCall(function(event) { + strictEqual(event.type, 'foo'); + strictEqual(event.detail, obj); + strictEqual(this, ev2); + }), + }; + + eventTarget.addEventListener('foo', ev1); + eventTarget.addEventListener('foo', ev2, { once: true }); + ok(eventTarget.dispatchEvent(new CustomEvent('foo', { detail: obj }))); + eventTarget.dispatchEvent(new CustomEvent('foo', { detail: obj })); + + eventTarget.removeEventListener('foo', ev1); + eventTarget.dispatchEvent(new CustomEvent('foo')); +} + +{ + // Same event dispatched multiple times. + const obj = { sweet: 'x' }; + const event = new CustomEvent('foo', { detail: obj }); + const eventTarget1 = new EventTarget(); + const eventTarget2 = new EventTarget(); + + eventTarget1.addEventListener( + 'foo', + common.mustCall((event) => { + strictEqual(event.eventPhase, CustomEvent.AT_TARGET); + strictEqual(event.target, eventTarget1); + strictEqual(event.detail, obj); + deepStrictEqual(event.composedPath(), [eventTarget1]); + }), + ); + + eventTarget2.addEventListener( + 'foo', + common.mustCall((event) => { + strictEqual(event.eventPhase, CustomEvent.AT_TARGET); + strictEqual(event.target, eventTarget2); + strictEqual(event.detail, obj); + deepStrictEqual(event.composedPath(), [eventTarget2]); + }), + ); + + eventTarget1.dispatchEvent(event); + strictEqual(event.eventPhase, CustomEvent.NONE); + strictEqual(event.target, eventTarget1); + deepStrictEqual(event.composedPath(), []); + + eventTarget2.dispatchEvent(event); + strictEqual(event.eventPhase, CustomEvent.NONE); + strictEqual(event.target, eventTarget2); + deepStrictEqual(event.composedPath(), []); +} + +{ + const obj = { sweet: 'x' }; + const target = new EventTarget(); + const event = new CustomEvent('foo', { detail: obj }); + + strictEqual(event.target, null); + + target.addEventListener( + 'foo', + common.mustCall((event) => { + strictEqual(event.target, target); + strictEqual(event.currentTarget, target); + strictEqual(event.srcElement, target); + strictEqual(event.detail, obj); + }), + ); + target.dispatchEvent(event); +} + +{ + // Event subclassing + const SubEvent = class extends CustomEvent {}; + const ev = new SubEvent('foo', { detail: 56 }); + const eventTarget = new EventTarget(); + const fn = common.mustCall((event) => { + strictEqual(event, ev); + strictEqual(event.detail, 56); + }); + eventTarget.addEventListener('foo', fn, { once: true }); + eventTarget.dispatchEvent(ev); +} + +// Works with inspect + +{ + const ev = new CustomEvent('test'); + const evConstructorName = inspect(ev, { + depth: -1, + }); + strictEqual(evConstructorName, 'CustomEvent'); + + const inspectResult = inspect(ev, { + depth: 1, + }); + ok(inspectResult.includes('CustomEvent')); +} diff --git a/test/parallel/test-events-once.js b/test/parallel/test-events-once.js index 56042b1ecee4f9..6acb795653590b 100644 --- a/test/parallel/test-events-once.js +++ b/test/parallel/test-events-once.js @@ -1,5 +1,5 @@ 'use strict'; -// Flags: --no-warnings +// Flags: --expose-internals --no-warnings const common = require('../common'); const { once, EventEmitter } = require('events'); @@ -9,6 +9,7 @@ const { fail, rejects, } = require('assert'); +const { kEvents } = require('internal/event_target'); async function onceAnEvent() { const ee = new EventEmitter(); @@ -65,6 +66,32 @@ async function catchesErrors() { strictEqual(ee.listenerCount('myevent'), 0); } +async function catchesErrorsWithAbortSignal() { + const ee = new EventEmitter(); + const ac = new AbortController(); + const signal = ac.signal; + + const expected = new Error('boom'); + let err; + process.nextTick(() => { + ee.emit('error', expected); + }); + + try { + const promise = once(ee, 'myevent', { signal }); + strictEqual(ee.listenerCount('error'), 1); + strictEqual(signal[kEvents].size, 1); + + await promise; + } catch (e) { + err = e; + } + strictEqual(err, expected); + strictEqual(ee.listenerCount('error'), 0); + strictEqual(ee.listenerCount('myevent'), 0); + strictEqual(signal[kEvents].size, 0); +} + async function stopListeningAfterCatchingError() { const ee = new EventEmitter(); @@ -165,7 +192,10 @@ async function abortSignalAfterEvent() { ee.emit('foo'); ac.abort(); }); - await once(ee, 'foo', { signal: ac.signal }); + const promise = once(ee, 'foo', { signal: ac.signal }); + strictEqual(ac.signal[kEvents].size, 1); + await promise; + strictEqual(ac.signal[kEvents].size, 0); } async function abortSignalRemoveListener() { @@ -221,6 +251,7 @@ Promise.all([ onceAnEventWithNullOptions(), onceAnEventWithTwoArgs(), catchesErrors(), + catchesErrorsWithAbortSignal(), stopListeningAfterCatchingError(), onceError(), onceWithEventTarget(), diff --git a/test/parallel/test-eventtarget-brandcheck.js b/test/parallel/test-eventtarget-brandcheck.js index ffb0dcdaf08fb5..3d2fb013f6839d 100644 --- a/test/parallel/test-eventtarget-brandcheck.js +++ b/test/parallel/test-eventtarget-brandcheck.js @@ -6,6 +6,7 @@ const assert = require('assert'); const { Event, + CustomEvent, EventTarget, NodeEventTarget, } = require('internal/event_target'); @@ -41,10 +42,37 @@ const { }); [ - 'addEventListener', - 'removeEventListener', - 'dispatchEvent', + 'target', + 'currentTarget', + 'srcElement', + 'type', + 'cancelable', + 'defaultPrevented', + 'timeStamp', + 'returnValue', + 'bubbles', + 'composed', + 'eventPhase', + 'detail', +].forEach((i) => { + assert.throws(() => Reflect.get(CustomEvent.prototype, i, {}), { + code: 'ERR_INVALID_THIS', + }); +}); + +[ + 'stopImmediatePropagation', + 'preventDefault', + 'composedPath', + 'cancelBubble', + 'stopPropagation', ].forEach((i) => { + assert.throws(() => Reflect.apply(CustomEvent.prototype[i], [], {}), { + code: 'ERR_INVALID_THIS', + }); +}); + +['addEventListener', 'removeEventListener', 'dispatchEvent'].forEach((i) => { assert.throws(() => Reflect.apply(EventTarget.prototype[i], [], {}), { code: 'ERR_INVALID_THIS', }); diff --git a/test/parallel/test-eventtarget-whatwg-once.js b/test/parallel/test-eventtarget-whatwg-once.js deleted file mode 100644 index 9c74829d761306..00000000000000 --- a/test/parallel/test-eventtarget-whatwg-once.js +++ /dev/null @@ -1,132 +0,0 @@ -'use strict'; - -const common = require('../common'); - -const { - strictEqual, -} = require('assert'); - -// Manually ported from: wpt@dom/events/AddEventListenerOptions-once.html -{ - const document = new EventTarget(); - let invoked_once = false; - let invoked_normal = false; - function handler_once() { - invoked_once = true; - } - - function handler_normal() { - invoked_normal = true; - } - - document.addEventListener('test', handler_once, { once: true }); - document.addEventListener('test', handler_normal); - document.dispatchEvent(new Event('test')); - strictEqual(invoked_once, true, 'Once handler should be invoked'); - strictEqual(invoked_normal, true, 'Normal handler should be invoked'); - - invoked_once = false; - invoked_normal = false; - document.dispatchEvent(new Event('test')); - strictEqual(invoked_once, false, 'Once handler shouldn\'t be invoked again'); - strictEqual(invoked_normal, true, 'Normal handler should be invoked again'); - document.removeEventListener('test', handler_normal); -} - - -{ - // Manually ported from AddEventListenerOptions-once.html - const document = new EventTarget(); - let invoked_count = 0; - function handler() { - invoked_count++; - } - document.addEventListener('test', handler, { once: true }); - document.addEventListener('test', handler); - document.dispatchEvent(new Event('test')); - strictEqual(invoked_count, 1, 'The handler should only be added once'); - - invoked_count = 0; - document.dispatchEvent(new Event('test')); - strictEqual(invoked_count, 0, 'The handler was added as a once listener'); - - invoked_count = 0; - document.addEventListener('test', handler, { once: true }); - document.removeEventListener('test', handler); - document.dispatchEvent(new Event('test')); - strictEqual(invoked_count, 0, 'The handler should have been removed'); -} - -{ - // TODO(benjamingr) fix EventTarget recursion - common.skip('EventTarget recursion is currently broken'); - const document = new EventTarget(); - let invoked_count = 0; - function handler() { - invoked_count++; - if (invoked_count === 1) - document.dispatchEvent(new Event('test')); - } - document.addEventListener('test', handler, { once: true }); - document.dispatchEvent(new Event('test')); - strictEqual(invoked_count, 1, 'Once handler should only be invoked once'); - - invoked_count = 0; - function handler2() { - invoked_count++; - if (invoked_count === 1) - document.addEventListener('test', handler2, { once: true }); - if (invoked_count <= 2) - document.dispatchEvent(new Event('test')); - } - document.addEventListener('test', handler2, { once: true }); - document.dispatchEvent(new Event('test')); - strictEqual(invoked_count, 2, 'Once handler should only be invoked once'); -} - -// Manually converted from https://github.com/web-platform-tests/wpt/blob/master/dom/events/AddEventListenerOptions-once.html -// in order to define the `document` ourselves - -{ - const document = new EventTarget(); - - // Should only fire for first event - document.addEventListener('test', common.mustCall(1), { once: true }); - // Should fire for both events - document.addEventListener('test', common.mustCall(2)); - // Fire events - document.dispatchEvent(new Event('test')); - document.dispatchEvent(new Event('test')); -} -{ - const document = new EventTarget(); - - const handler = common.mustCall(2); - // Both should only fire on first event - document.addEventListener('test', handler.bind(), { once: true }); - document.addEventListener('test', handler.bind(), { once: true }); - // Fire events - document.dispatchEvent(new Event('test')); - document.dispatchEvent(new Event('test')); -} -{ - const document = new EventTarget(); - - const handler = common.mustCall(2); - - // Should only fire once on first event - document.addEventListener('test', common.mustCall(1), { once: true }); - // Should fire twice until removed - document.addEventListener('test', handler); - // Fire two events - document.dispatchEvent(new Event('test')); - document.dispatchEvent(new Event('test')); - - // Should only fire once on the next event - document.addEventListener('test', common.mustCall(1), { once: true }); - // The previous handler should no longer fire - document.removeEventListener('test', handler); - - // Fire final event triggering - document.dispatchEvent(new Event('test')); -} diff --git a/test/parallel/test-eventtarget.js b/test/parallel/test-eventtarget.js index 0211dc964d253a..c3521d35d821bf 100644 --- a/test/parallel/test-eventtarget.js +++ b/test/parallel/test-eventtarget.js @@ -232,6 +232,30 @@ let asyncTest = Promise.resolve(); eventTarget.dispatchEvent(event); } +{ + const target = new EventTarget(); + const listener = {}; + // AddEventListener should not require handleEvent to be + // defined on an EventListener. + target.addEventListener('foo', listener); + listener.handleEvent = common.mustCall(function(event) { + strictEqual(event.type, 'foo'); + strictEqual(this, listener); + }); + target.dispatchEvent(new Event('foo')); +} + +{ + const target = new EventTarget(); + const listener = {}; + // do not throw + target.removeEventListener('foo', listener); + target.addEventListener('foo', listener); + target.removeEventListener('foo', listener); + listener.handleEvent = common.mustNotCall(); + target.dispatchEvent(new Event('foo')); +} + { const uncaughtException = common.mustCall((err, origin) => { strictEqual(err.message, 'boom'); @@ -308,7 +332,6 @@ let asyncTest = Promise.resolve(); [ 'foo', 1, - {}, // No handleEvent function false, ].forEach((i) => throws(() => target.addEventListener('foo', i), err(i))); } diff --git a/test/parallel/test-fs-constants.js b/test/parallel/test-fs-constants.js new file mode 100644 index 00000000000000..49bcabd80873b4 --- /dev/null +++ b/test/parallel/test-fs-constants.js @@ -0,0 +1,8 @@ +'use strict'; +require('../common'); +const fs = require('fs'); +const assert = require('assert'); + +// Check if the two constants accepted by chmod() on Windows are defined. +assert.notStrictEqual(fs.constants.S_IRUSR, undefined); +assert.notStrictEqual(fs.constants.S_IWUSR, undefined); diff --git a/test/parallel/test-fs-opendir.js b/test/parallel/test-fs-opendir.js index 4c4681ef48e2ff..7dc6d710ecb3c7 100644 --- a/test/parallel/test-fs-opendir.js +++ b/test/parallel/test-fs-opendir.js @@ -67,18 +67,16 @@ const invalidCallbackObj = { // Check the opendir async version fs.opendir(testDir, common.mustSucceed((dir) => { let sync = true; - dir.read(common.mustCall((err, dirent) => { + dir.read(common.mustSucceed((dirent) => { assert(!sync); - assert.ifError(err); // Order is operating / file system dependent assert(files.includes(dirent.name), `'files' should include ${dirent}`); assertDirent(dirent); let syncInner = true; - dir.read(common.mustCall((err, dirent) => { + dir.read(common.mustSucceed((dirent) => { assert(!syncInner); - assert.ifError(err); dir.close(common.mustSucceed()); })); @@ -168,7 +166,7 @@ doAsyncIterBreakTest().then(common.mustCall()); async function doAsyncIterReturnTest() { const dir = await fs.promises.opendir(testDir); await (async function() { - for await (const dirent of dir) { // eslint-disable-line no-unused-vars + for await (const dirent of dir) { return; } })(); diff --git a/test/parallel/test-fs-options-immutable.js b/test/parallel/test-fs-options-immutable.js index b993d776e6e460..dfe05a96ef7c3b 100644 --- a/test/parallel/test-fs-options-immutable.js +++ b/test/parallel/test-fs-options-immutable.js @@ -6,19 +6,17 @@ const common = require('../common'); // // Refer: https://github.com/nodejs/node/issues/7655 -const assert = require('assert'); const fs = require('fs'); const path = require('path'); -const errHandler = (e) => assert.ifError(e); -const options = Object.freeze({}); +const options = common.mustNotMutateObjectDeep({}); const tmpdir = require('../common/tmpdir'); tmpdir.refresh(); -fs.readFile(__filename, options, common.mustCall(errHandler)); +fs.readFile(__filename, options, common.mustSucceed()); fs.readFileSync(__filename, options); -fs.readdir(__dirname, options, common.mustCall(errHandler)); +fs.readdir(__dirname, options, common.mustSucceed()); fs.readdirSync(__dirname, options); if (common.canCreateSymLink()) { @@ -28,20 +26,20 @@ if (common.canCreateSymLink()) { fs.writeFileSync(sourceFile, ''); fs.symlinkSync(sourceFile, linkFile); - fs.readlink(linkFile, options, common.mustCall(errHandler)); + fs.readlink(linkFile, options, common.mustSucceed()); fs.readlinkSync(linkFile, options); } { const fileName = path.resolve(tmpdir.path, 'writeFile'); fs.writeFileSync(fileName, 'ABCD', options); - fs.writeFile(fileName, 'ABCD', options, common.mustCall(errHandler)); + fs.writeFile(fileName, 'ABCD', options, common.mustSucceed()); } { const fileName = path.resolve(tmpdir.path, 'appendFile'); fs.appendFileSync(fileName, 'ABCD', options); - fs.appendFile(fileName, 'ABCD', options, common.mustCall(errHandler)); + fs.appendFile(fileName, 'ABCD', options, common.mustSucceed()); } if (!common.isIBMi) { // IBMi does not support fs.watch() @@ -56,13 +54,13 @@ if (!common.isIBMi) { // IBMi does not support fs.watch() { fs.realpathSync(__filename, options); - fs.realpath(__filename, options, common.mustCall(errHandler)); + fs.realpath(__filename, options, common.mustSucceed()); } { const tempFileName = path.resolve(tmpdir.path, 'mkdtemp-'); fs.mkdtempSync(tempFileName, options); - fs.mkdtemp(tempFileName, options, common.mustCall(errHandler)); + fs.mkdtemp(tempFileName, options, common.mustSucceed()); } { diff --git a/test/parallel/test-fs-promises-exists.js b/test/parallel/test-fs-promises-exists.js index d56308257e6b17..b9bbeee1de97fd 100644 --- a/test/parallel/test-fs-promises-exists.js +++ b/test/parallel/test-fs-promises-exists.js @@ -2,5 +2,8 @@ require('../common'); const assert = require('assert'); +const fs = require('fs'); +const fsPromises = require('fs/promises'); -assert.strictEqual(require('fs/promises'), require('fs').promises); +assert.strictEqual(fsPromises, fs.promises); +assert.strictEqual(fsPromises.constants, fs.constants); diff --git a/test/parallel/test-fs-promises-file-handle-readFile.js b/test/parallel/test-fs-promises-file-handle-readFile.js index fc28dd23328df7..ba588b8dfa41a9 100644 --- a/test/parallel/test-fs-promises-file-handle-readFile.js +++ b/test/parallel/test-fs-promises-file-handle-readFile.js @@ -100,7 +100,7 @@ async function doReadAndCancel() { // Validate file size is within range for reading { - // Variable taken from https://github.com/nodejs/node/blob/master/lib/internal/fs/promises.js#L5 + // Variable taken from https://github.com/nodejs/node/blob/1377163f3351/lib/internal/fs/promises.js#L5 const kIoMaxLength = 2 ** 31 - 1; const newFile = path.resolve(tmpDir, 'dogs-running3.txt'); diff --git a/test/parallel/test-fs-promises-file-handle-write.js b/test/parallel/test-fs-promises-file-handle-write.js index 3c25842d8bf9cc..7f3d12d4817042 100644 --- a/test/parallel/test-fs-promises-file-handle-write.js +++ b/test/parallel/test-fs-promises-file-handle-write.js @@ -53,7 +53,12 @@ async function validateNonUint8ArrayWrite() { async function validateNonStringValuesWrite() { const filePathForHandle = path.resolve(tmpDir, 'tmp-non-string-write.txt'); const fileHandle = await open(filePathForHandle, 'w+'); - const nonStringValues = [123, {}, new Map()]; + const nonStringValues = [ + 123, {}, new Map(), null, undefined, 0n, () => {}, Symbol(), true, + new String('notPrimitive'), + { toString() { return 'amObject'; } }, + { [Symbol.toPrimitive]: (hint) => 'amObject' }, + ]; for (const nonStringValue of nonStringValues) { await assert.rejects( fileHandle.write(nonStringValue), diff --git a/test/parallel/test-fs-promises-write-optional-params.js b/test/parallel/test-fs-promises-write-optional-params.js new file mode 100644 index 00000000000000..b130c491541800 --- /dev/null +++ b/test/parallel/test-fs-promises-write-optional-params.js @@ -0,0 +1,95 @@ +'use strict'; + +const common = require('../common'); + +// This test ensures that filehandle.write accepts "named parameters" object +// and doesn't interpret objects as strings + +const assert = require('assert'); +const fsPromises = require('fs').promises; +const path = require('path'); +const tmpdir = require('../common/tmpdir'); + +tmpdir.refresh(); + +const dest = path.resolve(tmpdir.path, 'tmp.txt'); +const buffer = Buffer.from('zyx'); + +async function testInvalid(dest, expectedCode, ...params) { + let fh; + try { + fh = await fsPromises.open(dest, 'w+'); + await assert.rejects( + fh.write(...params), + { code: expectedCode }); + } finally { + await fh?.close(); + } +} + +async function testValid(dest, buffer, options) { + let fh; + try { + fh = await fsPromises.open(dest, 'w+'); + const writeResult = await fh.write(buffer, options); + const writeBufCopy = Uint8Array.prototype.slice.call(writeResult.buffer); + + const readResult = await fh.read(buffer, options); + const readBufCopy = Uint8Array.prototype.slice.call(readResult.buffer); + + assert.ok(writeResult.bytesWritten >= readResult.bytesRead); + if (options.length !== undefined && options.length !== null) { + assert.strictEqual(writeResult.bytesWritten, options.length); + } + if (options.offset === undefined || options.offset === 0) { + assert.deepStrictEqual(writeBufCopy, readBufCopy); + } + assert.deepStrictEqual(writeResult.buffer, readResult.buffer); + } finally { + await fh?.close(); + } +} + +(async () => { + // Test if first argument is not wrongly interpreted as ArrayBufferView|string + for (const badBuffer of [ + undefined, null, true, 42, 42n, Symbol('42'), NaN, [], () => {}, + Promise.resolve(new Uint8Array(1)), + {}, + { buffer: 'amNotParam' }, + { string: 'amNotParam' }, + { buffer: new Uint8Array(1).buffer }, + new Date(), + new String('notPrimitive'), + { toString() { return 'amObject'; } }, + { [Symbol.toPrimitive]: (hint) => 'amObject' }, + ]) { + await testInvalid(dest, 'ERR_INVALID_ARG_TYPE', badBuffer, {}); + } + + // First argument (buffer or string) is mandatory + await testInvalid(dest, 'ERR_INVALID_ARG_TYPE'); + + // Various invalid options + await testInvalid(dest, 'ERR_OUT_OF_RANGE', buffer, { length: 5 }); + await testInvalid(dest, 'ERR_OUT_OF_RANGE', buffer, { offset: 5 }); + await testInvalid(dest, 'ERR_OUT_OF_RANGE', buffer, { length: 1, offset: 3 }); + await testInvalid(dest, 'ERR_OUT_OF_RANGE', buffer, { length: -1 }); + await testInvalid(dest, 'ERR_OUT_OF_RANGE', buffer, { offset: -1 }); + await testInvalid(dest, 'ERR_INVALID_ARG_TYPE', buffer, { offset: false }); + await testInvalid(dest, 'ERR_INVALID_ARG_TYPE', buffer, { offset: true }); + + // Test compatibility with filehandle.read counterpart + for (const options of [ + {}, + { length: 1 }, + { position: 5 }, + { length: 1, position: 5 }, + { length: 1, position: -1, offset: 2 }, + { length: null }, + { position: null }, + { offset: 1 }, + ]) { + await testValid(dest, buffer, options); + } +})().then(common.mustCall()); diff --git a/test/parallel/test-fs-read-offset-null.js b/test/parallel/test-fs-read-offset-null.js index 27e893f781b2ff..012c94e41e92c7 100644 --- a/test/parallel/test-fs-read-offset-null.js +++ b/test/parallel/test-fs-read-offset-null.js @@ -14,13 +14,22 @@ const filepath = fixtures.path('x.txt'); const buf = Buffer.alloc(1); // Reading only one character, hence buffer of one byte is enough. -// Test for callback API. +// Tests are done by making sure the first letter in buffer is +// same as first letter in file. +// 120 is the ascii code of letter x. + +// Tests for callback API. fs.open(filepath, 'r', common.mustSucceed((fd) => { fs.read(fd, { offset: null, buffer: buf }, common.mustSucceed((bytesRead, buffer) => { - // Test is done by making sure the first letter in buffer is - // same as first letter in file. - // 120 is the hex for ascii code of letter x. + assert.strictEqual(buffer[0], 120); + fs.close(fd, common.mustSucceed(() => {})); + })); +})); + +fs.open(filepath, 'r', common.mustSucceed((fd) => { + fs.read(fd, buf, { offset: null }, + common.mustSucceed((bytesRead, buffer) => { assert.strictEqual(buffer[0], 120); fs.close(fd, common.mustSucceed(() => {})); })); @@ -28,15 +37,28 @@ fs.open(filepath, 'r', common.mustSucceed((fd) => { let filehandle = null; -// Test for promise api +// Tests for promises api +(async () => { + filehandle = await fsPromises.open(filepath, 'r'); + const readObject = await filehandle.read(buf, { offset: null }); + assert.strictEqual(readObject.buffer[0], 120); +})() +.finally(() => filehandle?.close()) +.then(common.mustCall()); + +// Undocumented: omitted position works the same as position === null (async () => { filehandle = await fsPromises.open(filepath, 'r'); const readObject = await filehandle.read(buf, null, buf.length); assert.strictEqual(readObject.buffer[0], 120); })() -.then(common.mustCall()) -.finally(async () => { -// Close the file handle if it is opened - if (filehandle) - await filehandle.close(); -}); +.finally(() => filehandle?.close()) +.then(common.mustCall()); + +(async () => { + filehandle = await fsPromises.open(filepath, 'r'); + const readObject = await filehandle.read(buf, null, buf.length, 0); + assert.strictEqual(readObject.buffer[0], 120); +})() +.finally(() => filehandle?.close()) +.then(common.mustCall()); diff --git a/test/parallel/test-fs-read-optional-params.js b/test/parallel/test-fs-read-optional-params.js index aac5f51d0bb2db..2699850b0e9597 100644 --- a/test/parallel/test-fs-read-optional-params.js +++ b/test/parallel/test-fs-read-optional-params.js @@ -5,32 +5,34 @@ const fixtures = require('../common/fixtures'); const fs = require('fs'); const assert = require('assert'); const filepath = fixtures.path('x.txt'); -const fd = fs.openSync(filepath, 'r'); const expected = Buffer.from('xyz\n'); const defaultBufferAsync = Buffer.alloc(16384); -const bufferAsOption = Buffer.allocUnsafe(expected.length); +const bufferAsOption = Buffer.allocUnsafe(expected.byteLength); -// Test not passing in any options object -fs.read(fd, common.mustCall((err, bytesRead, buffer) => { - assert.strictEqual(bytesRead, expected.length); - assert.deepStrictEqual(defaultBufferAsync.length, buffer.length); -})); +function testValid(message, ...options) { + const paramsMsg = `${message} (as params)`; + const paramsFilehandle = fs.openSync(filepath, 'r'); + fs.read(paramsFilehandle, ...options, common.mustSucceed((bytesRead, buffer) => { + assert.strictEqual(bytesRead, expected.byteLength, paramsMsg); + assert.deepStrictEqual(defaultBufferAsync.byteLength, buffer.byteLength, paramsMsg); + fs.closeSync(paramsFilehandle); + })); -// Test passing in an empty options object -fs.read(fd, { position: 0 }, common.mustCall((err, bytesRead, buffer) => { - assert.strictEqual(bytesRead, expected.length); - assert.deepStrictEqual(defaultBufferAsync.length, buffer.length); -})); + const optionsMsg = `${message} (as options)`; + const optionsFilehandle = fs.openSync(filepath, 'r'); + fs.read(optionsFilehandle, bufferAsOption, ...options, common.mustSucceed((bytesRead, buffer) => { + assert.strictEqual(bytesRead, expected.byteLength, optionsMsg); + assert.deepStrictEqual(bufferAsOption.byteLength, buffer.byteLength, optionsMsg); + fs.closeSync(optionsFilehandle); + })); +} -// Test passing in options -fs.read(fd, { - buffer: bufferAsOption, +testValid('Not passing in any object'); +testValid('Passing in a null', null); +testValid('Passing in an empty object', {}); +testValid('Passing in an object', { offset: 0, - length: bufferAsOption.length, - position: 0 -}, - common.mustCall((err, bytesRead, buffer) => { - assert.strictEqual(bytesRead, expected.length); - assert.deepStrictEqual(bufferAsOption.length, buffer.length); - })); + length: bufferAsOption.byteLength, + position: 0, +}); diff --git a/test/parallel/test-fs-read-position-validation.mjs b/test/parallel/test-fs-read-position-validation.mjs new file mode 100644 index 00000000000000..1b65dc19a2e545 --- /dev/null +++ b/test/parallel/test-fs-read-position-validation.mjs @@ -0,0 +1,94 @@ +import * as common from '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import fs from 'fs'; +import assert from 'assert'; + +// This test ensures that "position" argument is correctly validated + +const filepath = fixtures.path('x.txt'); + +const buffer = Buffer.from('xyz\n'); +const offset = 0; +const length = buffer.byteLength; + +// allowedErrors is an array of acceptable internal errors +// For example, on some platforms read syscall might return -EFBIG or -EOVERFLOW +async function testValid(position, allowedErrors = []) { + return new Promise((resolve, reject) => { + fs.open(filepath, 'r', common.mustSucceed((fd) => { + let callCount = 3; + const handler = common.mustCall((err) => { + callCount--; + if (err && !allowedErrors.includes(err.code)) { + fs.close(fd, common.mustSucceed()); + reject(err); + } else if (callCount === 0) { + fs.close(fd, common.mustSucceed(resolve)); + } + }, callCount); + fs.read(fd, buffer, offset, length, position, handler); + fs.read(fd, { buffer, offset, length, position }, handler); + fs.read(fd, buffer, { offset, length, position }, handler); + })); + }); +} + +async function testInvalid(code, position) { + return new Promise((resolve, reject) => { + fs.open(filepath, 'r', common.mustSucceed((fd) => { + try { + assert.throws( + () => fs.read(fd, buffer, offset, length, position, common.mustNotCall()), + { code } + ); + assert.throws( + () => fs.read(fd, { buffer, offset, length, position }, common.mustNotCall()), + { code } + ); + assert.throws( + () => fs.read(fd, buffer, { offset, length, position }, common.mustNotCall()), + { code } + ); + resolve(); + } catch (err) { + reject(err); + } finally { + fs.close(fd, common.mustSucceed()); + } + })); + }); +} + +{ + await testValid(undefined); + await testValid(null); + await testValid(-1); + await testValid(-1n); + + await testValid(0); + await testValid(0n); + await testValid(1); + await testValid(1n); + await testValid(9); + await testValid(9n); + await testValid(Number.MAX_SAFE_INTEGER, [ 'EFBIG', 'EOVERFLOW' ]); + + await testValid(2n ** 63n - 1n - BigInt(length), [ 'EFBIG', 'EOVERFLOW' ]); + await testInvalid('ERR_OUT_OF_RANGE', 2n ** 63n); + + // TODO(LiviaMedeiros): test `2n ** 63n - BigInt(length)` + + await testInvalid('ERR_OUT_OF_RANGE', NaN); + await testInvalid('ERR_OUT_OF_RANGE', -Infinity); + await testInvalid('ERR_OUT_OF_RANGE', Infinity); + await testInvalid('ERR_OUT_OF_RANGE', -0.999); + await testInvalid('ERR_OUT_OF_RANGE', -(2n ** 64n)); + await testInvalid('ERR_OUT_OF_RANGE', Number.MAX_SAFE_INTEGER + 1); + await testInvalid('ERR_OUT_OF_RANGE', Number.MAX_VALUE); + + for (const badTypeValue of [ + false, true, '1', Symbol(1), {}, [], () => {}, Promise.resolve(1), + ]) { + await testInvalid('ERR_INVALID_ARG_TYPE', badTypeValue); + } +} diff --git a/test/parallel/test-fs-read-promises-optional-params.js b/test/parallel/test-fs-read-promises-optional-params.js index 9d19eaa41151a8..48311e9df45c91 100644 --- a/test/parallel/test-fs-read-promises-optional-params.js +++ b/test/parallel/test-fs-read-promises-optional-params.js @@ -10,10 +10,18 @@ const fd = fs.openSync(filepath, 'r'); const expected = Buffer.from('xyz\n'); const defaultBufferAsync = Buffer.alloc(16384); +const bufferAsOption = Buffer.allocUnsafe(expected.byteLength); read(fd, {}) .then(function({ bytesRead, buffer }) { - assert.strictEqual(bytesRead, expected.length); - assert.deepStrictEqual(defaultBufferAsync.length, buffer.length); + assert.strictEqual(bytesRead, expected.byteLength); + assert.deepStrictEqual(defaultBufferAsync.byteLength, buffer.byteLength); + }) + .then(common.mustCall()); + +read(fd, bufferAsOption, { position: 0 }) + .then(function({ bytesRead, buffer }) { + assert.strictEqual(bytesRead, expected.byteLength); + assert.deepStrictEqual(bufferAsOption.byteLength, buffer.byteLength); }) .then(common.mustCall()); diff --git a/test/parallel/test-fs-readSync-position-validation.mjs b/test/parallel/test-fs-readSync-position-validation.mjs new file mode 100644 index 00000000000000..1c3b22ac86d067 --- /dev/null +++ b/test/parallel/test-fs-readSync-position-validation.mjs @@ -0,0 +1,80 @@ +import '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import fs from 'fs'; +import assert from 'assert'; + +// This test ensures that "position" argument is correctly validated + +const filepath = fixtures.path('x.txt'); + +const buffer = Buffer.from('xyz\n'); +const offset = 0; +const length = buffer.byteLength; + +// allowedErrors is an array of acceptable internal errors +// For example, on some platforms read syscall might return -EFBIG or -EOVERFLOW +function testValid(position, allowedErrors = []) { + let fdSync; + try { + fdSync = fs.openSync(filepath, 'r'); + fs.readSync(fdSync, buffer, offset, length, position); + fs.readSync(fdSync, buffer, { offset, length, position }); + } catch (err) { + if (!allowedErrors.includes(err.code)) { + assert.fail(err); + } + } finally { + if (fdSync) fs.closeSync(fdSync); + } +} + +function testInvalid(code, position, internalCatch = false) { + let fdSync; + try { + fdSync = fs.openSync(filepath, 'r'); + assert.throws( + () => fs.readSync(fdSync, buffer, offset, length, position), + { code } + ); + assert.throws( + () => fs.readSync(fdSync, buffer, { offset, length, position }), + { code } + ); + } finally { + if (fdSync) fs.closeSync(fdSync); + } +} + +{ + testValid(undefined); + testValid(null); + testValid(-1); + testValid(-1n); + + testValid(0); + testValid(0n); + testValid(1); + testValid(1n); + testValid(9); + testValid(9n); + testValid(Number.MAX_SAFE_INTEGER, [ 'EFBIG', 'EOVERFLOW' ]); + + testValid(2n ** 63n - 1n - BigInt(length), [ 'EFBIG', 'EOVERFLOW' ]); + testInvalid('ERR_OUT_OF_RANGE', 2n ** 63n); + + // TODO(LiviaMedeiros): test `2n ** 63n - BigInt(length)` + + testInvalid('ERR_OUT_OF_RANGE', NaN); + testInvalid('ERR_OUT_OF_RANGE', -Infinity); + testInvalid('ERR_OUT_OF_RANGE', Infinity); + testInvalid('ERR_OUT_OF_RANGE', -0.999); + testInvalid('ERR_OUT_OF_RANGE', -(2n ** 64n)); + testInvalid('ERR_OUT_OF_RANGE', Number.MAX_SAFE_INTEGER + 1); + testInvalid('ERR_OUT_OF_RANGE', Number.MAX_VALUE); + + for (const badTypeValue of [ + false, true, '1', Symbol(1), {}, [], () => {}, Promise.resolve(1), + ]) { + testInvalid('ERR_INVALID_ARG_TYPE', badTypeValue); + } +} diff --git a/test/parallel/test-fs-rm.js b/test/parallel/test-fs-rm.js index 14a67345fbf35c..4cb7b46b67a426 100644 --- a/test/parallel/test-fs-rm.js +++ b/test/parallel/test-fs-rm.js @@ -6,6 +6,7 @@ const assert = require('assert'); const fs = require('fs'); const path = require('path'); const { pathToFileURL } = require('url'); +const { execSync } = require('child_process'); const { validateRmOptionsSync } = require('internal/fs/utils'); @@ -15,6 +16,15 @@ let count = 0; const nextDirPath = (name = 'rm') => path.join(tmpdir.path, `${name}-${count++}`); +const isGitPresent = (() => { + try { execSync('git --version'); return true; } catch { return false; } +})(); + +function gitInit(gitDirectory) { + fs.mkdirSync(gitDirectory); + execSync('git init', { cwd: gitDirectory }); +} + function makeNonEmptyDirectory(depth, files, folders, dirname, createSymLinks) { fs.mkdirSync(dirname, { recursive: true }); fs.writeFileSync(path.join(dirname, 'text.txt'), 'hello', 'utf8'); @@ -129,6 +139,16 @@ function removeAsync(dir) { })); } +// Removing a .git directory should not throw an EPERM. +// Refs: https://github.com/isaacs/rimraf/issues/21. +if (isGitPresent) { + const gitDirectory = nextDirPath(); + gitInit(gitDirectory); + fs.rm(gitDirectory, { recursive: true }, common.mustSucceed(() => { + assert.strictEqual(fs.existsSync(gitDirectory), false); + })); +} + // Test the synchronous version. { const dir = nextDirPath(); @@ -178,6 +198,15 @@ function removeAsync(dir) { assert.throws(() => fs.rmSync(dir), { syscall: 'stat' }); } +// Removing a .git directory should not throw an EPERM. +// Refs: https://github.com/isaacs/rimraf/issues/21. +if (isGitPresent) { + const gitDirectory = nextDirPath(); + gitInit(gitDirectory); + fs.rmSync(gitDirectory, { recursive: true }); + assert.strictEqual(fs.existsSync(gitDirectory), false); +} + // Test the Promises based version. (async () => { const dir = nextDirPath(); @@ -229,6 +258,17 @@ function removeAsync(dir) { } })().then(common.mustCall()); +// Removing a .git directory should not throw an EPERM. +// Refs: https://github.com/isaacs/rimraf/issues/21. +if (isGitPresent) { + (async () => { + const gitDirectory = nextDirPath(); + gitInit(gitDirectory); + await fs.promises.rm(gitDirectory, { recursive: true }); + assert.strictEqual(fs.existsSync(gitDirectory), false); + })().then(common.mustCall()); +} + // Test input validation. { const dir = nextDirPath(); diff --git a/test/parallel/test-fs-symlink-longpath.js b/test/parallel/test-fs-symlink-longpath.js index ac15b841df9c3a..f3586317c27ede 100644 --- a/test/parallel/test-fs-symlink-longpath.js +++ b/test/parallel/test-fs-symlink-longpath.js @@ -12,10 +12,10 @@ const longPath = path.join(...[tmpDir].concat(Array(30).fill('1234567890'))); fs.mkdirSync(longPath, { recursive: true }); // Test if we can have symlinks to files and folders with long filenames -const targetDirtectory = path.join(longPath, 'target-directory'); -fs.mkdirSync(targetDirtectory); +const targetDirectory = path.join(longPath, 'target-directory'); +fs.mkdirSync(targetDirectory); const pathDirectory = path.join(tmpDir, 'new-directory'); -fs.symlink(targetDirtectory, pathDirectory, 'dir', common.mustSucceed(() => { +fs.symlink(targetDirectory, pathDirectory, 'dir', common.mustSucceed(() => { assert(fs.existsSync(pathDirectory)); })); diff --git a/test/parallel/test-fs-util-validateoffsetlength.js b/test/parallel/test-fs-util-validateoffsetlength.js index 28e087d33aec7b..bda20f86683723 100644 --- a/test/parallel/test-fs-util-validateoffsetlength.js +++ b/test/parallel/test-fs-util-validateoffsetlength.js @@ -50,7 +50,7 @@ const { ); } -// Most platforms don't allow reads or writes >= 2 GB. +// Most platforms don't allow reads or writes >= 2 GiB. // See https://github.com/libuv/libuv/pull/1501. const kIoMaxLength = 2 ** 31 - 1; diff --git a/test/parallel/test-fs-write-optional-params.js b/test/parallel/test-fs-write-optional-params.js new file mode 100644 index 00000000000000..21732114153c0c --- /dev/null +++ b/test/parallel/test-fs-write-optional-params.js @@ -0,0 +1,102 @@ +'use strict'; + +const common = require('../common'); + +// This test ensures that fs.write accepts "named parameters" object +// and doesn't interpret objects as strings + +const assert = require('assert'); +const fs = require('fs'); +const path = require('path'); +const tmpdir = require('../common/tmpdir'); +const util = require('util'); + +tmpdir.refresh(); + +const destInvalid = path.resolve(tmpdir.path, 'rwopt_invalid'); +const buffer = Buffer.from('zyx'); + +function testInvalidCb(fd, expectedCode, buffer, options, callback) { + assert.throws( + () => fs.write(fd, buffer, options, common.mustNotCall()), + { code: expectedCode } + ); + callback(0); +} + +function testValidCb(buffer, options, index, callback) { + const dest = path.resolve(tmpdir.path, `rwopt_valid_${index}`); + fs.open(dest, 'w+', common.mustSucceed((fd) => { + fs.write(fd, buffer, options, common.mustSucceed((bytesWritten, bufferWritten) => { + const writeBufCopy = Uint8Array.prototype.slice.call(bufferWritten); + + fs.read(fd, buffer, options, common.mustSucceed((bytesRead, bufferRead) => { + const readBufCopy = Uint8Array.prototype.slice.call(bufferRead); + + assert.ok(bytesWritten >= bytesRead); + if (options.length !== undefined && options.length !== null) { + assert.strictEqual(bytesWritten, options.length); + } + if (options.offset === undefined || options.offset === 0) { + assert.deepStrictEqual(writeBufCopy, readBufCopy); + } + assert.deepStrictEqual(bufferWritten, bufferRead); + fs.close(fd, common.mustSucceed(callback)); + })); + })); + })); +} + +// Promisify to reduce flakiness +const testInvalid = util.promisify(testInvalidCb); +const testValid = util.promisify(testValidCb); + +async function runTests(fd) { + // Test if first argument is not wrongly interpreted as ArrayBufferView|string + for (const badBuffer of [ + undefined, null, true, 42, 42n, Symbol('42'), NaN, [], () => {}, + Promise.resolve(new Uint8Array(1)), + {}, + { buffer: 'amNotParam' }, + { string: 'amNotParam' }, + { buffer: new Uint8Array(1).buffer }, + new Date(), + new String('notPrimitive'), + { [Symbol.toPrimitive]: (hint) => 'amObject' }, + + // TODO(LiviaMedeiros): add the following after DEP0162 EOL + // { toString() { return 'amObject'; } }, + ]) { + await testInvalid(fd, 'ERR_INVALID_ARG_TYPE', badBuffer, {}); + } + + // First argument (buffer or string) is mandatory + await testInvalid(fd, 'ERR_INVALID_ARG_TYPE', undefined, undefined); + + // Various invalid options + await testInvalid(fd, 'ERR_OUT_OF_RANGE', buffer, { length: 5 }); + await testInvalid(fd, 'ERR_OUT_OF_RANGE', buffer, { offset: 5 }); + await testInvalid(fd, 'ERR_OUT_OF_RANGE', buffer, { length: 1, offset: 3 }); + await testInvalid(fd, 'ERR_OUT_OF_RANGE', buffer, { length: -1 }); + await testInvalid(fd, 'ERR_OUT_OF_RANGE', buffer, { offset: -1 }); + await testInvalid(fd, 'ERR_INVALID_ARG_TYPE', buffer, { offset: false }); + await testInvalid(fd, 'ERR_INVALID_ARG_TYPE', buffer, { offset: true }); + + // Test compatibility with fs.read counterpart + for (const [ index, options ] of [ + {}, + { length: 1 }, + { position: 5 }, + { length: 1, position: 5 }, + { length: 1, position: -1, offset: 2 }, + { length: null }, + { position: null }, + { offset: 1 }, + ].entries()) { + await testValid(buffer, options, index); + } +} + +fs.open(destInvalid, 'w+', common.mustSucceed(async (fd) => { + runTests(fd).then(common.mustCall(() => fs.close(fd, common.mustSucceed()))); +})); diff --git a/test/parallel/test-fs-write-sync-optional-params.js b/test/parallel/test-fs-write-sync-optional-params.js new file mode 100644 index 00000000000000..80dfa51e0ba152 --- /dev/null +++ b/test/parallel/test-fs-write-sync-optional-params.js @@ -0,0 +1,89 @@ +'use strict'; + +require('../common'); + +// This test ensures that fs.writeSync accepts "named parameters" object +// and doesn't interpret objects as strings + +const assert = require('assert'); +const fs = require('fs'); +const path = require('path'); +const tmpdir = require('../common/tmpdir'); + +tmpdir.refresh(); + +const dest = path.resolve(tmpdir.path, 'tmp.txt'); +const buffer = Buffer.from('zyx'); + +function testInvalid(dest, expectedCode, ...bufferAndOptions) { + let fd; + try { + fd = fs.openSync(dest, 'w+'); + assert.throws( + () => fs.writeSync(fd, ...bufferAndOptions), + { code: expectedCode }); + } finally { + if (fd != null) fs.closeSync(fd); + } +} + +function testValid(dest, buffer, options) { + let fd; + try { + fd = fs.openSync(dest, 'w+'); + const bytesWritten = fs.writeSync(fd, buffer, options); + const bytesRead = fs.readSync(fd, buffer, options); + + assert.ok(bytesWritten >= bytesRead); + if (options.length !== undefined && options.length !== null) { + assert.strictEqual(bytesWritten, options.length); + } + } finally { + if (fd != null) fs.closeSync(fd); + } +} + +{ + // Test if second argument is not wrongly interpreted as string or options + for (const badBuffer of [ + undefined, null, true, 42, 42n, Symbol('42'), NaN, [], () => {}, + {}, + { buffer: 'amNotParam' }, + { string: 'amNotParam' }, + { buffer: new Uint8Array(1) }, + { buffer: new Uint8Array(1).buffer }, + Promise.resolve(new Uint8Array(1)), + new Date(), + new String('notPrimitive'), + { toString() { return 'amObject'; } }, + { [Symbol.toPrimitive]: (hint) => 'amObject' }, + ]) { + testInvalid(dest, 'ERR_INVALID_ARG_TYPE', badBuffer); + } + + // First argument (buffer or string) is mandatory + testInvalid(dest, 'ERR_INVALID_ARG_TYPE'); + + // Various invalid options + testInvalid(dest, 'ERR_OUT_OF_RANGE', buffer, { length: 5 }); + testInvalid(dest, 'ERR_OUT_OF_RANGE', buffer, { offset: 5 }); + testInvalid(dest, 'ERR_OUT_OF_RANGE', buffer, { length: 1, offset: 3 }); + testInvalid(dest, 'ERR_OUT_OF_RANGE', buffer, { length: -1 }); + testInvalid(dest, 'ERR_OUT_OF_RANGE', buffer, { offset: -1 }); + testInvalid(dest, 'ERR_INVALID_ARG_TYPE', buffer, { offset: false }); + testInvalid(dest, 'ERR_INVALID_ARG_TYPE', buffer, { offset: true }); + + // Test compatibility with fs.readSync counterpart with reused options + for (const options of [ + {}, + { length: 1 }, + { position: 5 }, + { length: 1, position: 5 }, + { length: 1, position: -1, offset: 2 }, + { length: null }, + { position: null }, + { offset: 1 }, + ]) { + testValid(dest, buffer, options); + } +} diff --git a/test/parallel/test-fs-write.js b/test/parallel/test-fs-write.js index 30e25b15808dd2..c30eba28bd95a0 100644 --- a/test/parallel/test-fs-write.js +++ b/test/parallel/test-fs-write.js @@ -155,7 +155,11 @@ fs.open(fn4, 'w', 0o644, common.mustSucceed((fd) => { ); }); -[false, 5, {}, [], null, undefined].forEach((data) => { +[ + false, 5, {}, [], null, undefined, + new String('notPrimitive'), + { [Symbol.toPrimitive]: (hint) => 'amObject' }, +].forEach((data) => { assert.throws( () => fs.write(1, data, common.mustNotCall()), { diff --git a/test/parallel/test-gc-http-client-connaborted.js b/test/parallel/test-gc-http-client-connaborted.js index fa6bf20c176560..fd276d30e2beb1 100644 --- a/test/parallel/test-gc-http-client-connaborted.js +++ b/test/parallel/test-gc-http-client-connaborted.js @@ -5,27 +5,27 @@ const common = require('../common'); const onGC = require('../common/ongc'); - const http = require('http'); -const todo = 500; +const os = require('os'); + +const cpus = os.cpus().length; +let createClients = true; let done = 0; let count = 0; let countGC = 0; -console.log(`We should do ${todo} requests`); - function serverHandler(req, res) { res.connection.destroy(); } const server = http.createServer(serverHandler); server.listen(0, common.mustCall(() => { - for (let i = 0; i < 10; i++) - getall(); + for (let i = 0; i < cpus; i++) + getAll(); })); -function getall() { - if (count >= todo) +function getAll() { + if (!createClients) return; const req = http.get({ @@ -37,7 +37,7 @@ function getall() { count++; onGC(req, { ongc }); - setImmediate(getall); + setImmediate(getAll); } function cb(res) { @@ -48,11 +48,18 @@ function ongc() { countGC++; } -setInterval(status, 100).unref(); +setImmediate(status); function status() { - global.gc(); - console.log('Done: %d/%d', done, todo); - console.log('Collected: %d/%d', countGC, count); - if (countGC === todo) server.close(); + if (done > 0) { + createClients = false; + global.gc(); + console.log(`done/collected/total: ${done}/${countGC}/${count}`); + if (countGC === count) { + server.close(); + return; + } + } + + setImmediate(status); } diff --git a/test/parallel/test-gc-http-client-timeout.js b/test/parallel/test-gc-http-client-timeout.js index 359f890dc3944e..3ac410a6111bd8 100644 --- a/test/parallel/test-gc-http-client-timeout.js +++ b/test/parallel/test-gc-http-client-timeout.js @@ -5,6 +5,8 @@ const common = require('../common'); const onGC = require('../common/ongc'); +const http = require('http'); +const os = require('os'); function serverHandler(req, res) { setTimeout(function() { @@ -14,19 +16,17 @@ function serverHandler(req, res) { }, 100); } -const http = require('http'); -const todo = 300; +const cpus = os.cpus().length; +let createClients = true; let done = 0; let count = 0; let countGC = 0; -console.log(`We should do ${todo} requests`); - const server = http.createServer(serverHandler); -server.listen(0, common.mustCall(getall)); +server.listen(0, common.mustCall(getAll)); -function getall() { - if (count >= todo) +function getAll() { + if (!createClients) return; const req = http.get({ @@ -35,18 +35,16 @@ function getall() { port: server.address().port }, cb); - req.setTimeout(10, function() { - console.log('timeout (expected)'); - }); + req.setTimeout(10, common.mustCall()); count++; onGC(req, { ongc }); - setImmediate(getall); + setImmediate(getAll); } -for (let i = 0; i < 10; i++) - getall(); +for (let i = 0; i < cpus; i++) + getAll(); function cb(res) { res.resume(); @@ -57,11 +55,18 @@ function ongc() { countGC++; } -setInterval(status, 100).unref(); +setImmediate(status); function status() { - global.gc(); - console.log('Done: %d/%d', done, todo); - console.log('Collected: %d/%d', countGC, count); - if (countGC === todo) server.close(); + if (done > 0) { + createClients = false; + global.gc(); + console.log(`done/collected/total: ${done}/${countGC}/${count}`); + if (countGC === count) { + server.close(); + return; + } + } + + setImmediate(status); } diff --git a/test/parallel/test-gc-net-timeout.js b/test/parallel/test-gc-net-timeout.js index 9ba6d2bc1744f9..6b9d51c98d0e84 100644 --- a/test/parallel/test-gc-net-timeout.js +++ b/test/parallel/test-gc-net-timeout.js @@ -5,6 +5,9 @@ require('../common'); const onGC = require('../common/ongc'); +const assert = require('assert'); +const net = require('net'); +const os = require('os'); function serverHandler(sock) { sock.setTimeout(120000); @@ -23,20 +26,17 @@ function serverHandler(sock) { }, 100); } -const net = require('net'); -const assert = require('assert'); -const todo = 500; +const cpus = os.cpus().length; +let createClients = true; let done = 0; let count = 0; let countGC = 0; -console.log(`We should do ${todo} requests`); - const server = net.createServer(serverHandler); -server.listen(0, getall); +server.listen(0, getAll); -function getall() { - if (count >= todo) +function getAll() { + if (!createClients) return; const req = net.connect(server.address().port); @@ -49,21 +49,28 @@ function getall() { count++; onGC(req, { ongc }); - setImmediate(getall); + setImmediate(getAll); } -for (let i = 0; i < 10; i++) - getall(); +for (let i = 0; i < cpus; i++) + getAll(); function ongc() { countGC++; } -setInterval(status, 100).unref(); +setImmediate(status); function status() { - global.gc(); - console.log('Done: %d/%d', done, todo); - console.log('Collected: %d/%d', countGC, count); - if (countGC === todo) server.close(); + if (done > 0) { + createClients = false; + global.gc(); + console.log(`done/collected/total: ${done}/${countGC}/${count}`); + if (countGC === count) { + server.close(); + return; + } + } + + setImmediate(status); } diff --git a/test/parallel/test-global-customevent.js b/test/parallel/test-global-customevent.js new file mode 100644 index 00000000000000..a113631a997bb9 --- /dev/null +++ b/test/parallel/test-global-customevent.js @@ -0,0 +1,11 @@ +// Flags: --experimental-global-customevent --expose-internals +'use strict'; + +require('../common'); +const { strictEqual, ok } = require('node:assert'); +const { CustomEvent: internalCustomEvent } = require('internal/event_target'); + +// Global +ok(CustomEvent); + +strictEqual(CustomEvent, internalCustomEvent); diff --git a/test/parallel/test-handle-wrap-isrefed.js b/test/parallel/test-handle-wrap-hasref.js similarity index 98% rename from test/parallel/test-handle-wrap-isrefed.js rename to test/parallel/test-handle-wrap-hasref.js index d4ca0070929721..f76194d0495781 100644 --- a/test/parallel/test-handle-wrap-isrefed.js +++ b/test/parallel/test-handle-wrap-hasref.js @@ -133,4 +133,4 @@ const { kStateSymbol } = require('internal/dgram'); (type) => type === 'Immediate').length, 1); } -// See also test/pseudo-tty/test-handle-wrap-isrefed-tty.js +// See also test/pseudo-tty/test-handle-wrap-hasref-tty.js diff --git a/test/parallel/test-http-agent-keepalive-delay.js b/test/parallel/test-http-agent-keepalive-delay.js new file mode 100644 index 00000000000000..b5edd78b662709 --- /dev/null +++ b/test/parallel/test-http-agent-keepalive-delay.js @@ -0,0 +1,36 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const http = require('http'); +const { Agent } = require('_http_agent'); + +const agent = new Agent({ + keepAlive: true, + keepAliveMsecs: 1000, +}); + +const server = http.createServer(common.mustCall((req, res) => { + res.end('ok'); +})); + +server.listen(0, common.mustCall(() => { + const createConnection = agent.createConnection; + agent.createConnection = (options, ...args) => { + assert.strictEqual(options.keepAlive, true); + assert.strictEqual(options.keepAliveInitialDelay, agent.keepAliveMsecs); + return createConnection.call(agent, options, ...args); + }; + http.get({ + host: 'localhost', + port: server.address().port, + agent: agent, + path: '/' + }, common.mustCall((res) => { + // for emit end event + res.on('data', () => {}); + res.on('end', () => { + server.close(); + }); + })); +})); diff --git a/test/parallel/test-http-keep-alive-drop-requests.js b/test/parallel/test-http-keep-alive-drop-requests.js new file mode 100644 index 00000000000000..2a4702d631e5f6 --- /dev/null +++ b/test/parallel/test-http-keep-alive-drop-requests.js @@ -0,0 +1,34 @@ +'use strict'; + +const common = require('../common'); +const http = require('http'); +const net = require('net'); +const assert = require('assert'); + +function request(socket) { + socket.write('GET / HTTP/1.1\r\n'); + socket.write('Connection: keep-alive\r\n'); + socket.write('\r\n\r\n'); +} + +const server = http.createServer(common.mustCall((req, res) => { + res.end('ok'); +})); + +server.on('dropRequest', common.mustCall((request, socket) => { + assert.strictEqual(request instanceof http.IncomingMessage, true); + assert.strictEqual(socket instanceof net.Socket, true); + server.close(); +})); + +server.listen(0, common.mustCall(() => { + const socket = net.connect(server.address().port); + socket.on('connect', common.mustCall(() => { + request(socket); + request(socket); + })); + socket.on('data', common.mustCallAtLeast()); + socket.on('close', common.mustCall()); +})); + +server.maxRequestsPerSocket = 1; diff --git a/test/parallel/test-http-multiple-headers.js b/test/parallel/test-http-multiple-headers.js new file mode 100644 index 00000000000000..1ebd290a614b1b --- /dev/null +++ b/test/parallel/test-http-multiple-headers.js @@ -0,0 +1,173 @@ +'use strict'; + +// TODO@PI: Run all tests +const common = require('../common'); +const assert = require('assert'); +const { createServer, request } = require('http'); + +const server = createServer( + { uniqueHeaders: ['x-res-b', 'x-res-d', 'x-res-y'] }, + common.mustCall((req, res) => { + const host = `127.0.0.1:${server.address().port}`; + + assert.deepStrictEqual(req.rawHeaders, [ + 'connection', 'close', + 'X-Req-a', 'eee', + 'X-Req-a', 'fff', + 'X-Req-a', 'ggg', + 'X-Req-a', 'hhh', + 'X-Req-b', 'iii; jjj; kkk; lll', + 'Host', host, + 'Transfer-Encoding', 'chunked', + ]); + assert.deepStrictEqual(req.headers, { + 'connection': 'close', + 'x-req-a': 'eee, fff, ggg, hhh', + 'x-req-b': 'iii; jjj; kkk; lll', + host, + 'transfer-encoding': 'chunked' + }); + assert.deepStrictEqual(req.headersDistinct, { + 'connection': ['close'], + 'x-req-a': ['eee', 'fff', 'ggg', 'hhh'], + 'x-req-b': ['iii; jjj; kkk; lll'], + 'host': [host], + 'transfer-encoding': ['chunked'] + }); + + req.on('end', function() { + assert.deepStrictEqual(req.rawTrailers, [ + 'x-req-x', 'xxx', + 'x-req-x', 'yyy', + 'X-req-Y', 'zzz; www', + ]); + assert.deepStrictEqual( + req.trailers, { 'x-req-x': 'xxx, yyy', 'x-req-y': 'zzz; www' } + ); + assert.deepStrictEqual( + req.trailersDistinct, + { 'x-req-x': ['xxx', 'yyy'], 'x-req-y': ['zzz; www'] } + ); + + res.setHeader('X-Res-a', 'AAA'); + res.appendHeader('x-res-a', ['BBB', 'CCC']); + res.setHeader('X-Res-b', ['DDD', 'EEE']); + res.appendHeader('x-res-b', ['FFF', 'GGG']); + res.removeHeader('date'); + res.writeHead(200, { + 'Connection': 'close', 'x-res-c': ['HHH', 'III'], + 'x-res-d': ['JJJ', 'KKK', 'LLL'] + }); + res.addTrailers({ + 'x-res-x': ['XXX', 'YYY'], + 'X-Res-Y': ['ZZZ', 'WWW'] + }); + res.write('BODY'); + res.end(); + + assert.deepStrictEqual(res.getHeader('X-Res-a'), ['AAA', 'BBB', 'CCC']); + assert.deepStrictEqual(res.getHeader('x-res-a'), ['AAA', 'BBB', 'CCC']); + assert.deepStrictEqual( + res.getHeader('x-res-b'), ['DDD', 'EEE', 'FFF', 'GGG'] + ); + assert.deepStrictEqual(res.getHeader('x-res-c'), ['HHH', 'III']); + assert.strictEqual(res.getHeader('connection'), 'close'); + assert.deepStrictEqual( + res.getHeaderNames(), + ['x-res-a', 'x-res-b', 'connection', 'x-res-c', 'x-res-d'] + ); + assert.deepStrictEqual( + res.getRawHeaderNames(), + ['X-Res-a', 'X-Res-b', 'Connection', 'x-res-c', 'x-res-d'] + ); + + const headers = Object.create(null); + Object.assign(headers, { + 'x-res-a': [ 'AAA', 'BBB', 'CCC' ], + 'x-res-b': [ 'DDD', 'EEE', 'FFF', 'GGG' ], + 'connection': 'close', + 'x-res-c': [ 'HHH', 'III' ], + 'x-res-d': [ 'JJJ', 'KKK', 'LLL' ] + }); + assert.deepStrictEqual(res.getHeaders(), headers); + }); + + req.resume(); + } + )); + +server.listen(0, common.mustCall(() => { + const req = request({ + host: '127.0.0.1', + port: server.address().port, + path: '/', + method: 'POST', + headers: { + 'connection': 'close', + 'x-req-a': 'aaa', + 'X-Req-a': 'bbb', + 'X-Req-b': ['ccc', 'ddd'] + }, + uniqueHeaders: ['x-req-b', 'x-req-y'] + }, common.mustCall((res) => { + assert.deepStrictEqual(res.rawHeaders, [ + 'X-Res-a', 'AAA', + 'X-Res-a', 'BBB', + 'X-Res-a', 'CCC', + 'X-Res-b', 'DDD; EEE; FFF; GGG', + 'Connection', 'close', + 'x-res-c', 'HHH', + 'x-res-c', 'III', + 'x-res-d', 'JJJ; KKK; LLL', + 'Transfer-Encoding', 'chunked', + ]); + assert.deepStrictEqual(res.headers, { + 'x-res-a': 'AAA, BBB, CCC', + 'x-res-b': 'DDD; EEE; FFF; GGG', + 'connection': 'close', + 'x-res-c': 'HHH, III', + 'x-res-d': 'JJJ; KKK; LLL', + 'transfer-encoding': 'chunked' + }); + assert.deepStrictEqual(res.headersDistinct, { + 'x-res-a': [ 'AAA', 'BBB', 'CCC' ], + 'x-res-b': [ 'DDD; EEE; FFF; GGG' ], + 'connection': [ 'close' ], + 'x-res-c': [ 'HHH', 'III' ], + 'x-res-d': [ 'JJJ; KKK; LLL' ], + 'transfer-encoding': [ 'chunked' ] + }); + + res.on('end', function() { + assert.deepStrictEqual(res.rawTrailers, [ + 'x-res-x', 'XXX', + 'x-res-x', 'YYY', + 'X-Res-Y', 'ZZZ; WWW', + ]); + assert.deepStrictEqual( + res.trailers, + { 'x-res-x': 'XXX, YYY', 'x-res-y': 'ZZZ; WWW' } + ); + assert.deepStrictEqual( + res.trailersDistinct, + { 'x-res-x': ['XXX', 'YYY'], 'x-res-y': ['ZZZ; WWW'] } + ); + server.close(); + }); + res.resume(); + })); + + req.setHeader('X-Req-a', ['eee', 'fff']); + req.appendHeader('X-req-a', ['ggg', 'hhh']); + req.setHeader('X-Req-b', ['iii', 'jjj']); + req.appendHeader('x-req-b', ['kkk', 'lll']); + + req.addTrailers({ + 'x-req-x': ['xxx', 'yyy'], + 'X-req-Y': ['zzz', 'www'] + }); + + req.write('BODY'); + + req.end(); +})); diff --git a/test/parallel/test-http-parser-multiple-execute.js b/test/parallel/test-http-parser-multiple-execute.js new file mode 100644 index 00000000000000..d05a973752395a --- /dev/null +++ b/test/parallel/test-http-parser-multiple-execute.js @@ -0,0 +1,37 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const { request } = require('http'); +const { Duplex } = require('stream'); + +let socket; + +function createConnection(...args) { + socket = new Duplex({ + read() {}, + write(chunk, encoding, callback) { + if (chunk.toString().includes('\r\n\r\n')) { + this.push('HTTP/1.1 100 Continue\r\n\r\n'); + } + + callback(); + } + }); + + return socket; +} + +const req = request('http://localhost:8080', { createConnection }); + +req.on('information', common.mustCall(({ statusCode }) => { + assert.strictEqual(statusCode, 100); + socket.push('HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n'); + socket.push(null); +})); + +req.on('response', common.mustCall(({ statusCode }) => { + assert.strictEqual(statusCode, 200); +})); + +req.end(); diff --git a/test/parallel/test-http-parser.js b/test/parallel/test-http-parser.js index 97dc57f755ad88..739beaa3d67cd9 100644 --- a/test/parallel/test-http-parser.js +++ b/test/parallel/test-http-parser.js @@ -62,8 +62,8 @@ function newParser(type) { function expectBody(expected) { - return mustCall(function(buf, start, len) { - const body = String(buf.slice(start, start + len)); + return mustCall(function(buf) { + const body = String(buf); assert.strictEqual(body, expected); }); } @@ -126,8 +126,8 @@ function expectBody(expected) { assert.strictEqual(statusMessage, 'OK'); }; - const onBody = (buf, start, len) => { - const body = String(buf.slice(start, start + len)); + const onBody = (buf) => { + const body = String(buf); assert.strictEqual(body, 'pong'); }; @@ -195,8 +195,8 @@ function expectBody(expected) { parser[kOnHeaders] = mustCall(onHeaders); }; - const onBody = (buf, start, len) => { - const body = String(buf.slice(start, start + len)); + const onBody = (buf) => { + const body = String(buf); assert.strictEqual(body, 'ping'); seen_body = true; }; @@ -291,8 +291,8 @@ function expectBody(expected) { assert.strictEqual(versionMinor, 1); }; - const onBody = (buf, start, len) => { - const body = String(buf.slice(start, start + len)); + const onBody = (buf) => { + const body = String(buf); assert.strictEqual(body, 'foo=42&bar=1337'); }; @@ -332,8 +332,8 @@ function expectBody(expected) { let body_part = 0; const body_parts = ['123', '123456', '1234567890']; - const onBody = (buf, start, len) => { - const body = String(buf.slice(start, start + len)); + const onBody = (buf) => { + const body = String(buf); assert.strictEqual(body, body_parts[body_part++]); }; @@ -371,8 +371,8 @@ function expectBody(expected) { const body_parts = ['123', '123456', '123456789', '123456789ABC', '123456789ABCDEF']; - const onBody = (buf, start, len) => { - const body = String(buf.slice(start, start + len)); + const onBody = (buf) => { + const body = String(buf); assert.strictEqual(body, body_parts[body_part++]); }; @@ -428,8 +428,8 @@ function expectBody(expected) { let expected_body = '123123456123456789123456789ABC123456789ABCDEF'; - const onBody = (buf, start, len) => { - const chunk = String(buf.slice(start, start + len)); + const onBody = (buf) => { + const chunk = String(buf); assert.strictEqual(expected_body.indexOf(chunk), 0); expected_body = expected_body.slice(chunk.length); }; @@ -445,9 +445,7 @@ function expectBody(expected) { for (let i = 1; i < request.length - 1; ++i) { const a = request.slice(0, i); - console.error(`request.slice(0, ${i}) = ${JSON.stringify(a.toString())}`); const b = request.slice(i); - console.error(`request.slice(${i}) = ${JSON.stringify(b.toString())}`); test(a, b); } } @@ -488,8 +486,8 @@ function expectBody(expected) { let expected_body = '123123456123456789123456789ABC123456789ABCDEF'; - const onBody = (buf, start, len) => { - const chunk = String(buf.slice(start, start + len)); + const onBody = (buf) => { + const chunk = String(buf); assert.strictEqual(expected_body.indexOf(chunk), 0); expected_body = expected_body.slice(chunk.length); }; diff --git a/test/parallel/test-http-perf_hooks.js b/test/parallel/test-http-perf_hooks.js index 0708a1e8c06f5a..de6ed0295a1152 100644 --- a/test/parallel/test-http-perf_hooks.js +++ b/test/parallel/test-http-perf_hooks.js @@ -66,6 +66,12 @@ process.on('exit', () => { } else if (entry.name === 'HttpRequest') { numberOfHttpRequests++; } + assert.strictEqual(typeof entry.detail.req.method, 'string'); + assert.strictEqual(typeof entry.detail.req.url, 'string'); + assert.strictEqual(typeof entry.detail.req.headers, 'object'); + assert.strictEqual(typeof entry.detail.res.statusCode, 'number'); + assert.strictEqual(typeof entry.detail.res.statusMessage, 'string'); + assert.strictEqual(typeof entry.detail.res.headers, 'object'); }); assert.strictEqual(numberOfHttpClients, 2); assert.strictEqual(numberOfHttpRequests, 2); diff --git a/test/parallel/test-http-set-trailers.js b/test/parallel/test-http-set-trailers.js index 2197de9b0b229a..17a936f528e96f 100644 --- a/test/parallel/test-http-set-trailers.js +++ b/test/parallel/test-http-set-trailers.js @@ -96,7 +96,7 @@ const server = http.createServer((req, res) => { }); server.listen(0, () => { Promise.all([testHttp10, testHttp11, testClientTrailers] - .map(util.promisify) + .map((f) => util.promisify(f)) .map((f) => f(server.address().port))) .then(() => server.close()); }); diff --git a/test/parallel/test-http-write-callbacks.js b/test/parallel/test-http-write-callbacks.js index 3730e57936b4a6..390fddf1dc2911 100644 --- a/test/parallel/test-http-write-callbacks.js +++ b/test/parallel/test-http-write-callbacks.js @@ -20,7 +20,7 @@ // USE OR OTHER DEALINGS IN THE SOFTWARE. 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); const http = require('http'); @@ -53,15 +53,13 @@ server.on('checkContinue', (req, res) => { res.writeContinue(() => { // Continue has been written req.on('end', () => { - res.write('asdf', (er) => { - assert.ifError(er); - res.write('foo', 'ascii', (er) => { - assert.ifError(er); - res.end(Buffer.from('bar'), 'buffer', (er) => { + res.write('asdf', common.mustSucceed(() => { + res.write('foo', 'ascii', common.mustSucceed(() => { + res.end(Buffer.from('bar'), 'buffer', common.mustSucceed(() => { serverEndCb = true; - }); - }); - }); + })); + })); + })); }); }); @@ -79,16 +77,13 @@ server.listen(0, function() { }); req.on('continue', () => { // ok, good to go. - req.write('YmF6', 'base64', (er) => { - assert.ifError(er); - req.write(Buffer.from('quux'), (er) => { - assert.ifError(er); - req.end('626c657267', 'hex', (er) => { - assert.ifError(er); + req.write('YmF6', 'base64', common.mustSucceed(() => { + req.write(Buffer.from('quux'), common.mustSucceed(() => { + req.end('626c657267', 'hex', common.mustSucceed(() => { clientEndCb = true; - }); - }); - }); + })); + })); + })); }); req.on('response', (res) => { // This should not come until after the end is flushed out diff --git a/test/parallel/test-http2-compat-serverresponse-writehead-array.js b/test/parallel/test-http2-compat-serverresponse-writehead-array.js index c28f7329c1d0a1..1d0706f5ed945f 100644 --- a/test/parallel/test-http2-compat-serverresponse-writehead-array.js +++ b/test/parallel/test-http2-compat-serverresponse-writehead-array.js @@ -4,40 +4,92 @@ const common = require('../common'); if (!common.hasCrypto) common.skip('missing crypto'); const assert = require('assert'); -const h2 = require('http2'); - -// Http2ServerResponse.writeHead should support nested arrays - -const server = h2.createServer(); -server.listen(0, common.mustCall(() => { - const port = server.address().port; - server.once('request', common.mustCall((request, response) => { - const returnVal = response.writeHead(200, [ - ['foo', 'bar'], - ['ABC', 123], - ]); - assert.strictEqual(returnVal, response); - response.end(common.mustCall(() => { server.close(); })); +const http2 = require('http2'); + +// Http2ServerResponse.writeHead should support arrays and nested arrays + +{ + const server = http2.createServer(); + server.listen(0, common.mustCall(() => { + const port = server.address().port; + + server.once('request', common.mustCall((request, response) => { + const returnVal = response.writeHead(200, [ + ['foo', 'bar'], + ['ABC', 123], + ]); + assert.strictEqual(returnVal, response); + response.end(common.mustCall(() => { server.close(); })); + })); + + const client = http2.connect(`http://localhost:${port}`, common.mustCall(() => { + const request = client.request(); + + request.on('response', common.mustCall((headers) => { + assert.strictEqual(headers.foo, 'bar'); + assert.strictEqual(headers.abc, '123'); + assert.strictEqual(headers[':status'], 200); + }, 1)); + request.on('end', common.mustCall(() => { + client.close(); + })); + request.end(); + request.resume(); + })); })); +} + +{ + const server = http2.createServer(); + server.listen(0, common.mustCall(() => { + const port = server.address().port; + + server.once('request', common.mustCall((request, response) => { + const returnVal = response.writeHead(200, ['foo', 'bar', 'ABC', 123]); + assert.strictEqual(returnVal, response); + response.end(common.mustCall(() => { server.close(); })); + })); + + const client = http2.connect(`http://localhost:${port}`, common.mustCall(() => { + const request = client.request(); + + request.on('response', common.mustCall((headers) => { + assert.strictEqual(headers.foo, 'bar'); + assert.strictEqual(headers.abc, '123'); + assert.strictEqual(headers[':status'], 200); + }, 1)); + request.on('end', common.mustCall(() => { + client.close(); + })); + request.end(); + request.resume(); + })); + })); +} + +{ + const server = http2.createServer(); + server.listen(0, common.mustCall(() => { + const port = server.address().port; + + server.once('request', common.mustCall((request, response) => { + try { + response.writeHead(200, ['foo', 'bar', 'ABC', 123, 'extra']); + } catch (err) { + assert.strictEqual(err.code, 'ERR_INVALID_ARG_VALUE'); + } + + response.end(common.mustCall(() => { server.close(); })); + })); + + const client = http2.connect(`http://localhost:${port}`, common.mustCall(() => { + const request = client.request(); - const url = `http://localhost:${port}`; - const client = h2.connect(url, common.mustCall(() => { - const headers = { - ':path': '/', - ':method': 'GET', - ':scheme': 'http', - ':authority': `localhost:${port}` - }; - const request = client.request(headers); - request.on('response', common.mustCall((headers) => { - assert.strictEqual(headers.foo, 'bar'); - assert.strictEqual(headers.abc, '123'); - assert.strictEqual(headers[':status'], 200); - }, 1)); - request.on('end', common.mustCall(() => { - client.close(); + request.on('end', common.mustCall(() => { + client.close(); + })); + request.end(); + request.resume(); })); - request.end(); - request.resume(); })); -})); +} diff --git a/test/parallel/test-http2-create-client-secure-session.js b/test/parallel/test-http2-create-client-secure-session.js index 4303786b3e435d..2f7678cc689825 100644 --- a/test/parallel/test-http2-create-client-secure-session.js +++ b/test/parallel/test-http2-create-client-secure-session.js @@ -91,3 +91,9 @@ verifySecureSession( loadKey('agent1-cert.pem'), loadKey('ca1-cert.pem'), { servername: 'agent1' }); + +verifySecureSession( + loadKey('agent8-key.pem'), + loadKey('agent8-cert.pem'), + loadKey('fake-startcom-root-cert.pem'), + { servername: '' }); diff --git a/test/parallel/test-http2-https-fallback.js b/test/parallel/test-http2-https-fallback.js index a872d686d34f85..16879b05f12c8d 100644 --- a/test/parallel/test-http2-https-fallback.js +++ b/test/parallel/test-http2-https-fallback.js @@ -12,6 +12,7 @@ const { createSecureServer, connect } = require('http2'); const { get } = require('https'); const { parse } = require('url'); const { connect: tls } = require('tls'); +const { Duplex } = require('stream'); const countdown = (count, done) => () => --count === 0 && done(); @@ -115,6 +116,7 @@ function onSession(session, next) { ); server.once('unknownProtocol', common.mustCall((socket) => { + strictEqual(socket instanceof Duplex, true); socket.destroy(); })); diff --git a/test/parallel/test-http2-max-session-memory-leak.js b/test/parallel/test-http2-max-session-memory-leak.js index b066ca80bc5eab..476c605783c81c 100644 --- a/test/parallel/test-http2-max-session-memory-leak.js +++ b/test/parallel/test-http2-max-session-memory-leak.js @@ -9,7 +9,7 @@ const http2 = require('http2'); // mechanism. const bodyLength = 8192; -const maxSessionMemory = 1; // 1 MB +const maxSessionMemory = 1; // 1 MiB const requestCount = 1000; const server = http2.createServer({ maxSessionMemory }); diff --git a/test/parallel/test-http2-options-max-headers-exceeds-nghttp2.js b/test/parallel/test-http2-options-max-headers-exceeds-nghttp2.js index e503e226ef2da1..df3aefff11e7ad 100644 --- a/test/parallel/test-http2-options-max-headers-exceeds-nghttp2.js +++ b/test/parallel/test-http2-options-max-headers-exceeds-nghttp2.js @@ -1,9 +1,11 @@ +// Flags: --expose-internals 'use strict'; const common = require('../common'); -if (!common.hasCrypto) - common.skip('missing crypto'); +if (!common.hasCrypto) common.skip('missing crypto'); const h2 = require('http2'); +const assert = require('assert'); +const { ServerHttp2Session } = require('internal/http2/core'); const server = h2.createServer(); @@ -44,3 +46,54 @@ server.listen(0, common.mustCall(() => { })); req.end(); })); + +{ + const options = { + maxSendHeaderBlockLength: 100000, + }; + + const server = h2.createServer(options); + + server.on('error', common.mustNotCall()); + server.on( + 'session', + common.mustCall((session) => { + assert.strictEqual(session instanceof ServerHttp2Session, true); + }), + ); + server.on( + 'stream', + common.mustCall((stream) => { + stream.additionalHeaders({ + // Greater than 65536 bytes + 'test-header': 'A'.repeat(90000), + }); + stream.respond(); + stream.end(); + }), + ); + + server.on( + 'sessionError', + common.mustCall((err, session) => { + assert.strictEqual(err.code, 'ERR_HTTP2_SESSION_ERROR'); + assert.strictEqual(err.name, 'Error'); + assert.strictEqual(err.message, 'Session closed with error code 9'); + assert.strictEqual(session instanceof ServerHttp2Session, true); + server.close(); + }), + ); + + server.listen( + 0, + common.mustCall(() => { + const client = h2.connect(`http://localhost:${server.address().port}`); + client.on('error', common.mustNotCall()); + + const req = client.request(); + req.on('response', common.mustNotCall()); + req.on('error', common.mustNotCall()); + req.end(); + }), + ); +} diff --git a/test/parallel/test-http2-sent-headers.js b/test/parallel/test-http2-sent-headers.js index 6ec674394336f2..6a492cf13c1ecd 100644 --- a/test/parallel/test-http2-sent-headers.js +++ b/test/parallel/test-http2-sent-headers.js @@ -29,8 +29,9 @@ server.listen(0, common.mustCall(() => { const client = h2.connect(`http://localhost:${server.address().port}`); const req = client.request(); - req.on('headers', common.mustCall((headers) => { + req.on('headers', common.mustCall((headers, flags) => { assert.strictEqual(headers[':status'], 102); + assert.strictEqual(typeof flags === 'number', true); })); assert.strictEqual(req.sentHeaders[':method'], 'GET'); diff --git a/test/parallel/test-http2-server-push-stream.js b/test/parallel/test-http2-server-push-stream.js index 7c75f66aef5e7d..54b996fa642eff 100644 --- a/test/parallel/test-http2-server-push-stream.js +++ b/test/parallel/test-http2-server-push-stream.js @@ -48,10 +48,11 @@ server.listen(0, common.mustCall(() => { assert.strictEqual(headers[':scheme'], 'http'); assert.strictEqual(headers[':path'], '/foobar'); assert.strictEqual(headers[':authority'], `localhost:${port}`); - stream.on('push', common.mustCall((headers) => { + stream.on('push', common.mustCall((headers, flags) => { assert.strictEqual(headers[':status'], 200); assert.strictEqual(headers['content-type'], 'text/html'); assert.strictEqual(headers['x-push-data'], 'pushed by server'); + assert.strictEqual(typeof flags === 'number', true); })); stream.on('aborted', common.mustNotCall()); // We have to read the data of the push stream to end gracefully. diff --git a/test/parallel/test-http2-server-sessionerror.js b/test/parallel/test-http2-server-sessionerror.js index bbd180937e1cd6..e266661b0cc2c3 100644 --- a/test/parallel/test-http2-server-sessionerror.js +++ b/test/parallel/test-http2-server-sessionerror.js @@ -6,7 +6,9 @@ const common = require('../common'); if (!common.hasCrypto) common.skip('missing crypto'); const http2 = require('http2'); +const assert = require('assert'); const { kSocket } = require('internal/http2/util'); +const { ServerHttp2Session } = require('internal/http2/core'); const server = http2.createServer(); server.on('stream', common.mustNotCall()); @@ -14,6 +16,7 @@ server.on('stream', common.mustNotCall()); let test = 0; server.on('session', common.mustCall((session) => { + assert.strictEqual(session instanceof ServerHttp2Session, true); switch (++test) { case 1: server.on('error', common.mustNotCall()); @@ -32,6 +35,12 @@ server.on('session', common.mustCall((session) => { } }, 2)); +server.on('sessionError', common.mustCall((err, session) => { + assert.strictEqual(err.name, 'Error'); + assert.strictEqual(err.message, 'test'); + assert.strictEqual(session instanceof ServerHttp2Session, true); +}, 2)); + server.listen(0, common.mustCall(() => { const url = `http://localhost:${server.address().port}`; http2.connect(url) diff --git a/test/parallel/test-https-agent-create-connection.js b/test/parallel/test-https-agent-create-connection.js index cea335a422ebc7..1ac2c840b0d5e2 100644 --- a/test/parallel/test-https-agent-create-connection.js +++ b/test/parallel/test-https-agent-create-connection.js @@ -139,19 +139,16 @@ function createServer() { server.listen(0, common.mustCall(() => { const port = server.address().port; const host = 'localhost'; - const options = { + const options = common.mustNotMutateObjectDeep({ port: 3000, - rejectUnauthorized: false - }; + rejectUnauthorized: false, + }); const socket = agent.createConnection(port, host, options); socket.on('connect', common.mustCall((data) => { socket.end(); })); socket.on('end', common.mustCall(() => { - assert.deepStrictEqual(options, { - port: 3000, rejectUnauthorized: false - }); server.close(); })); })); diff --git a/test/parallel/test-https-argument-of-creating.js b/test/parallel/test-https-argument-of-creating.js index 6f1564826eaf74..fe6ca9f59a6adc 100644 --- a/test/parallel/test-https-argument-of-creating.js +++ b/test/parallel/test-https-argument-of-creating.js @@ -12,11 +12,13 @@ const dftProtocol = {}; // Test for immutable `opts` { - const opts = { foo: 'bar', ALPNProtocols: [ 'http/1.1' ] }; + const opts = common.mustNotMutateObjectDeep({ + foo: 'bar', + ALPNProtocols: [ 'http/1.1' ], + }); const server = https.createServer(opts); tls.convertALPNProtocols([ 'http/1.1' ], dftProtocol); - assert.deepStrictEqual(opts, { foo: 'bar', ALPNProtocols: [ 'http/1.1' ] }); assert.strictEqual(server.ALPNProtocols.compare(dftProtocol.ALPNProtocols), 0); } diff --git a/test/parallel/test-https-keep-alive-drop-requests.js b/test/parallel/test-https-keep-alive-drop-requests.js new file mode 100644 index 00000000000000..d2c7f78e0bff73 --- /dev/null +++ b/test/parallel/test-https-keep-alive-drop-requests.js @@ -0,0 +1,51 @@ +'use strict'; + +const common = require('../common'); + +if (!common.hasCrypto) + common.skip('missing crypto'); + +const https = require('https'); +const http = require('http'); +const net = require('net'); +const assert = require('assert'); +const tls = require('tls'); +const { readKey } = require('../common/fixtures'); + +function request(socket) { + socket.write('GET / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n\r\n'); +} + +// https options +const httpsOptions = { + key: readKey('agent1-key.pem'), + cert: readKey('agent1-cert.pem') +}; + +const server = https.createServer(httpsOptions, common.mustCall((req, res) => { + res.end('ok'); +})); + +server.on('dropRequest', common.mustCall((request, socket) => { + assert.strictEqual(request instanceof http.IncomingMessage, true); + assert.strictEqual(socket instanceof net.Socket, true); + server.close(); +})); + +server.listen(0, common.mustCall(() => { + const socket = tls.connect( + server.address().port, + { + rejectUnauthorized: false + }, + common.mustCall(() => { + request(socket); + request(socket); + socket.on('error', common.mustNotCall()); + socket.on('data', common.mustCallAtLeast()); + socket.on('close', common.mustCall()); + }) + ); +})); + +server.maxRequestsPerSocket = 1; diff --git a/test/parallel/test-icu-env.js b/test/parallel/test-icu-env.js new file mode 100644 index 00000000000000..368f829234684f --- /dev/null +++ b/test/parallel/test-icu-env.js @@ -0,0 +1,288 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const { execFileSync } = require('child_process'); + +// system-icu should not be tested +const hasBuiltinICU = process.config.variables.icu_gyp_path === 'tools/icu/icu-generic.gyp'; +if (!hasBuiltinICU) + common.skip('system ICU'); + +// small-icu doesn't support non-English locales +const hasFullICU = (() => { + try { + const january = new Date(9e8); + const spanish = new Intl.DateTimeFormat('es', { month: 'long' }); + return spanish.format(january) === 'enero'; + } catch { + return false; + } +})(); +if (!hasFullICU) + common.skip('small ICU'); + +const icuVersionMajor = Number(process.config.variables.icu_ver_major ?? 0); +if (icuVersionMajor < 71) + common.skip('ICU too old'); + + +function runEnvOutside(addEnv, code, ...args) { + return execFileSync( + process.execPath, + ['-e', `process.stdout.write(String(${code}));`], + { env: { ...process.env, ...addEnv }, encoding: 'utf8' } + ); +} + +function runEnvInside(addEnv, func, ...args) { + Object.assign(process.env, addEnv); // side effects! + return func(...args); +} + +function isPack(array) { + const firstItem = array[0]; + return array.every((item) => item === firstItem); +} + +function isSet(array) { + const deduped = new Set(array); + return array.length === deduped.size; +} + + +const localesISO639 = [ + 'eng', 'cmn', 'hin', 'spa', + 'fra', 'arb', 'ben', 'rus', + 'por', 'urd', 'ind', 'deu', + 'jpn', 'pcm', 'mar', 'tel', +]; + +const locales = [ + 'en', 'zh', 'hi', 'es', + 'fr', 'ar', 'bn', 'ru', + 'pt', 'ur', 'id', 'de', + 'ja', 'pcm', 'mr', 'te', +]; + +// These must not overlap +const zones = [ + 'America/New_York', + 'UTC', + 'Asia/Irkutsk', + 'Australia/North', + 'Antarctica/South_Pole', +]; + + +assert.deepStrictEqual(Intl.getCanonicalLocales(localesISO639), locales); + + +// On some platforms these keep original locale (for example, 'January') +const enero = runEnvOutside( + { LANG: 'es' }, + 'new Intl.DateTimeFormat(undefined, { month: "long" } ).format(new Date(9e8))' +); +const janvier = runEnvOutside( + { LANG: 'fr' }, + 'new Intl.DateTimeFormat(undefined, { month: "long" } ).format(new Date(9e8))' +); +const isMockable = enero !== janvier; + +// Tests with mocked env +if (isMockable) { + assert.strictEqual( + isSet(zones.map((TZ) => runEnvOutside({ TZ }, 'new Date(333333333333).toString()'))), + true + ); + assert.strictEqual( + isSet(zones.map((TZ) => runEnvOutside({ TZ }, 'new Date(333333333333).toLocaleString()'))), + true + ); + assert.deepStrictEqual( + locales.map((LANG) => runEnvOutside({ LANG, TZ: 'Europe/Zurich' }, 'new Date(333333333333).toString()')), + [ + 'Fri Jul 25 1980 01:35:33 GMT+0100 (Central European Standard Time)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (中欧标准时间)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (मध्य यूरोपीय मानक समय)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (hora estándar de Europa central)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (heure normale d’Europe centrale)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (توقيت وسط أوروبا الرسمي)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (মধ্য ইউরোপীয় মানক সময়)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (Центральная Европа, стандартное время)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (Horário Padrão da Europa Central)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (وسطی یورپ کا معیاری وقت)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (Waktu Standar Eropa Tengah)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (Mitteleuropäische Normalzeit)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (中央ヨーロッパ標準時)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (Mídúl Yúrop Fíksd Taim)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (मध्‍य युरोपियन प्रमाण वेळ)', + 'Fri Jul 25 1980 01:35:33 GMT+0100 (సెంట్రల్ యూరోపియన్ ప్రామాణిక సమయం)', + ] + ); + assert.deepStrictEqual( + locales.map((LANG) => runEnvOutside({ LANG, TZ: 'Europe/Zurich' }, 'new Date(333333333333).toLocaleString()')), + [ + '7/25/1980, 1:35:33 AM', + '1980/7/25 01:35:33', + '25/7/1980, 1:35:33 am', + '25/7/1980, 1:35:33', + '25/07/1980 01:35:33', + '٢٥‏/٧‏/١٩٨٠, ١:٣٥:٣٣ ص', + '২৫/৭/১৯৮০ ১:৩৫:৩৩ AM', + '25.07.1980, 01:35:33', + '25/07/1980 01:35:33', + '25/7/1980 1:35:33 AM', + '25/7/1980 01.35.33', + '25.7.1980, 01:35:33', + '1980/7/25 1:35:33', + '25/7/1980 01:35:33', + '२५/७/१९८०, १:३५:३३ AM', + '25/7/1980 1:35:33 AM', + ] + ); + assert.strictEqual( + runEnvOutside({ LANG: 'en' }, '["z", "ä"].sort(new Intl.Collator().compare)'), + 'ä,z' + ); + assert.strictEqual( + runEnvOutside({ LANG: 'sv' }, '["z", "ä"].sort(new Intl.Collator().compare)'), + 'z,ä' + ); + assert.deepStrictEqual( + locales.map( + (LANG) => runEnvOutside({ LANG, TZ: 'Europe/Zurich' }, 'new Intl.DateTimeFormat().format(333333333333)') + ), + [ + '7/25/1980', '1980/7/25', + '25/7/1980', '25/7/1980', + '25/07/1980', '٢٥‏/٧‏/١٩٨٠', + '২৫/৭/১৯৮০', '25.07.1980', + '25/07/1980', '25/7/1980', + '25/7/1980', '25.7.1980', + '1980/7/25', '25/7/1980', + '२५/७/१९८०', '25/7/1980', + ] + ); + assert.deepStrictEqual( + locales.map((LANG) => runEnvOutside({ LANG }, 'new Intl.DisplayNames(undefined, { type: "region" }).of("CH")')), + [ + 'Switzerland', '瑞士', + 'स्विट्ज़रलैंड', 'Suiza', + 'Suisse', 'سويسرا', + 'সুইজারল্যান্ড', 'Швейцария', + 'Suíça', 'سوئٹزر لینڈ', + 'Swiss', 'Schweiz', + 'スイス', 'Swítsaland', + 'स्वित्झर्लंड', 'స్విట్జర్లాండ్', + ] + ); + assert.deepStrictEqual( + locales.map((LANG) => runEnvOutside({ LANG }, 'new Intl.NumberFormat().format(275760.913)')), + [ + '275,760.913', '275,760.913', + '2,75,760.913', '275.760,913', + '275 760,913', '٢٧٥٬٧٦٠٫٩١٣', + '২,৭৫,৭৬০.৯১৩', '275 760,913', + '275.760,913', '275,760.913', + '275.760,913', '275.760,913', + '275,760.913', '275,760.913', + '२,७५,७६०.९१३', '2,75,760.913', + ] + ); + assert.deepStrictEqual( + locales.map((LANG) => runEnvOutside({ LANG }, 'new Intl.PluralRules().select(0)')), + [ + 'other', 'other', 'one', 'other', + 'one', 'zero', 'one', 'many', + 'one', 'other', 'other', 'other', + 'other', 'one', 'other', 'other', + ] + ); + assert.deepStrictEqual( + locales.map((LANG) => runEnvOutside({ LANG }, 'new Intl.RelativeTimeFormat().format(-586920.617, "hour")')), + [ + '586,920.617 hours ago', + '586,920.617小时前', + '5,86,920.617 घंटे पहले', + 'hace 586.920,617 horas', + 'il y a 586 920,617 heures', + 'قبل ٥٨٦٬٩٢٠٫٦١٧ ساعة', + '৫,৮৬,৯২০.৬১৭ ঘন্টা আগে', + '586 920,617 часа назад', + 'há 586.920,617 horas', + '586,920.617 گھنٹے پہلے', + '586.920,617 jam yang lalu', + 'vor 586.920,617 Stunden', + '586,920.617 時間前', + '586,920.617 áwa wé dọ́n pas', + '५,८६,९२०.६१७ तासांपूर्वी', + '5,86,920.617 గంటల క్రితం', + ] + ); +} + + +// Tests with process.env mutated inside +{ + // process.env.TZ is not intercepted in Workers + if (common.isMainThread) { + assert.strictEqual( + isSet(zones.map((TZ) => runEnvInside({ TZ }, () => new Date(333333333333).toString()))), + true + ); + assert.strictEqual( + isSet(zones.map((TZ) => runEnvInside({ TZ }, () => new Date(333333333333).toLocaleString()))), + true + ); + } else { + assert.strictEqual( + isPack(zones.map((TZ) => runEnvInside({ TZ }, () => new Date(333333333333).toString()))), + true + ); + assert.strictEqual( + isPack(zones.map((TZ) => runEnvInside({ TZ }, () => new Date(333333333333).toLocaleString()))), + true + ); + } + + assert.strictEqual( + isPack(locales.map((LANG) => runEnvInside({ LANG, TZ: 'Europe/Zurich' }, () => new Date(333333333333).toString()))), + true + ); + assert.strictEqual( + isPack(locales.map( + (LANG) => runEnvInside({ LANG, TZ: 'Europe/Zurich' }, () => new Date(333333333333).toLocaleString()) + )), + true + ); + assert.deepStrictEqual( + runEnvInside({ LANG: 'en' }, () => ['z', 'ä'].sort(new Intl.Collator().compare)), + runEnvInside({ LANG: 'sv' }, () => ['z', 'ä'].sort(new Intl.Collator().compare)) + ); + assert.strictEqual( + isPack(locales.map( + (LANG) => runEnvInside({ LANG, TZ: 'Europe/Zurich' }, () => new Intl.DateTimeFormat().format(333333333333)) + )), + true + ); + assert.strictEqual( + isPack(locales.map( + (LANG) => runEnvInside({ LANG }, () => new Intl.DisplayNames(undefined, { type: 'region' }).of('CH')) + )), + true + ); + assert.strictEqual( + isPack(locales.map((LANG) => runEnvInside({ LANG }, () => new Intl.NumberFormat().format(275760.913)))), + true + ); + assert.strictEqual( + isPack(locales.map((LANG) => runEnvInside({ LANG }, () => new Intl.PluralRules().select(0)))), + true + ); + assert.strictEqual( + isPack(locales.map( + (LANG) => runEnvInside({ LANG }, () => new Intl.RelativeTimeFormat().format(-586920.617, 'hour')) + )), + true + ); +} diff --git a/test/parallel/test-inspector-connect-main-thread.js b/test/parallel/test-inspector-connect-main-thread.js index 86ff6866bc064e..b724bf3cd9d62f 100644 --- a/test/parallel/test-inspector-connect-main-thread.js +++ b/test/parallel/test-inspector-connect-main-thread.js @@ -8,7 +8,7 @@ const { Session } = require('inspector'); const path = require('path'); const { pathToFileURL } = require('url'); const { isMainThread, parentPort, Worker, workerData } = - require('worker_threads'); + require('worker_threads'); if (!workerData) { common.skipIfWorker(); @@ -100,6 +100,17 @@ async function ensureListenerDoesNotInterrupt(session) { } async function main() { + assert.throws( + () => { + const session = new Session(); + session.connectToMainThread(); + }, + { + code: 'ERR_INSPECTOR_NOT_WORKER', + name: 'Error', + message: 'Current thread is not a worker' + } + ); const sharedBuffer = new SharedArrayBuffer(1); const arrayBuffer = new Uint8Array(sharedBuffer); arrayBuffer[0] = 1; @@ -121,6 +132,16 @@ async function childMain() { await (await startWorker(true)).onMessagesSent; const session = new Session(); session.connectToMainThread(); + assert.throws( + () => { + session.connectToMainThread(); + }, + { + code: 'ERR_INSPECTOR_ALREADY_CONNECTED', + name: 'Error', + message: 'The inspector session is already connected' + } + ); await post(session, 'Debugger.enable'); await post(session, 'Runtime.enable'); await post(session, 'Debugger.setBreakpointByUrl', { @@ -137,9 +158,9 @@ async function childMain() { await new Promise((resolve) => setTimeout(resolve, 50)); const { result: { value } } = - await post(session, - 'Debugger.evaluateOnCallFrame', - { callFrameId, expression: 'a * 100' }); + await post(session, + 'Debugger.evaluateOnCallFrame', + { callFrameId, expression: 'a * 100' }); assert.strictEqual(value, 100); await post(session, 'Debugger.resume'); await ensureListenerDoesNotInterrupt(session); diff --git a/test/parallel/test-internal-util-objects.js b/test/parallel/test-internal-util-objects.js new file mode 100644 index 00000000000000..74068e4c577bd6 --- /dev/null +++ b/test/parallel/test-internal-util-objects.js @@ -0,0 +1,119 @@ +// Flags: --expose-internals +'use strict'; +require('../common'); + +// Test helper objects from internal/util + +const assert = require('assert'); +const { + kEnumerableProperty, + kEmptyObject, +} = require('internal/util'); + +Object.prototype.blep = 'blop'; + +{ + assert.strictEqual( + kEnumerableProperty.blep, + undefined + ); + assert.strictEqual( + kEnumerableProperty.enumerable, + true + ); + assert.strictEqual( + Object.getPrototypeOf(kEnumerableProperty), + null + ); + assert.deepStrictEqual( + Object.getOwnPropertyNames(kEnumerableProperty), + [ 'enumerable' ] + ); + + assert.throws( + () => Object.setPrototypeOf(kEnumerableProperty, { value: undefined }), + TypeError + ); + assert.throws( + () => delete kEnumerableProperty.enumerable, + TypeError + ); + assert.throws( + () => kEnumerableProperty.enumerable = false, + TypeError + ); + assert.throws( + () => Object.assign(kEnumerableProperty, { enumerable: false }), + TypeError + ); + assert.throws( + () => kEnumerableProperty.value = undefined, + TypeError + ); + assert.throws( + () => Object.assign(kEnumerableProperty, { value: undefined }), + TypeError + ); + assert.throws( + () => Object.defineProperty(kEnumerableProperty, 'value', {}), + TypeError + ); +} + +{ + assert.strictEqual( + kEmptyObject.blep, + undefined + ); + assert.strictEqual( + kEmptyObject.prototype, + undefined + ); + assert.strictEqual( + Object.getPrototypeOf(kEmptyObject), + null + ); + assert.strictEqual( + kEmptyObject instanceof Object, + false + ); + assert.deepStrictEqual( + Object.getOwnPropertyDescriptors(kEmptyObject), + {} + ); + assert.deepStrictEqual( + Object.getOwnPropertyNames(kEmptyObject), + [] + ); + assert.deepStrictEqual( + Object.getOwnPropertySymbols(kEmptyObject), + [] + ); + assert.strictEqual( + Object.isExtensible(kEmptyObject), + false + ); + assert.strictEqual( + Object.isSealed(kEmptyObject), + true + ); + assert.strictEqual( + Object.isFrozen(kEmptyObject), + true + ); + + assert.throws( + () => kEmptyObject.foo = 'bar', + TypeError + ); + assert.throws( + () => Object.assign(kEmptyObject, { foo: 'bar' }), + TypeError + ); + assert.throws( + () => Object.defineProperty(kEmptyObject, 'foo', {}), + TypeError + ); +} + +delete Object.prototype.blep; diff --git a/test/parallel/test-messageport-hasref.js b/test/parallel/test-messageport-hasref.js new file mode 100644 index 00000000000000..bc213f7897d277 --- /dev/null +++ b/test/parallel/test-messageport-hasref.js @@ -0,0 +1,57 @@ +'use strict'; +const common = require('../common'); + +const { MessageChannel } = require('worker_threads'); +const { createHook } = require('async_hooks'); +const { strictEqual } = require('assert'); + +const handles = []; + +createHook({ + init(asyncId, type, triggerAsyncId, resource) { + if (type === 'MESSAGEPORT') { + handles.push(resource); + } + } +}).enable(); + +const { port1, port2 } = new MessageChannel(); +strictEqual(handles[0], port1); +strictEqual(handles[1], port2); + +strictEqual(handles[0].hasRef(), false); +strictEqual(handles[1].hasRef(), false); + +port1.unref(); +strictEqual(handles[0].hasRef(), false); + +port1.ref(); +strictEqual(handles[0].hasRef(), true); + +port1.unref(); +strictEqual(handles[0].hasRef(), false); + +port1.on('message', () => {}); +strictEqual(handles[0].hasRef(), true); + +port2.unref(); +strictEqual(handles[1].hasRef(), false); + +port2.ref(); +strictEqual(handles[1].hasRef(), true); + +port2.unref(); +strictEqual(handles[1].hasRef(), false); + +port2.on('message', () => {}); +strictEqual(handles[0].hasRef(), true); + +port1.on('close', common.mustCall(() => { + strictEqual(handles[0].hasRef(), false); + strictEqual(handles[1].hasRef(), false); +})); + +port2.close(); + +strictEqual(handles[0].hasRef(), true); +strictEqual(handles[1].hasRef(), true); diff --git a/test/parallel/test-module-isBuiltin.js b/test/parallel/test-module-isBuiltin.js new file mode 100644 index 00000000000000..a7815a8dfc1c18 --- /dev/null +++ b/test/parallel/test-module-isBuiltin.js @@ -0,0 +1,16 @@ +'use strict'; +require('../common'); +const assert = require('assert'); +const { isBuiltin } = require('module'); + +// Includes modules in lib/ (even deprecated ones) +assert(isBuiltin('http')); +assert(isBuiltin('sys')); +assert(isBuiltin('node:fs')); +assert(isBuiltin('node:test')); + +// Does not include internal modules +assert(!isBuiltin('internal/errors')); +assert(!isBuiltin('test')); +assert(!isBuiltin('')); +assert(!isBuiltin(undefined)); diff --git a/test/parallel/test-module-main-fail.js b/test/parallel/test-module-main-fail.js index c66b6f2f7a843f..2b6f188dd4cbee 100644 --- a/test/parallel/test-module-main-fail.js +++ b/test/parallel/test-module-main-fail.js @@ -10,7 +10,10 @@ for (const entryPoint of entryPoints) { try { execFileSync(node, [entryPoint], { stdio: 'pipe' }); } catch (e) { - assert(e.toString().match(/Error: Cannot find module/)); + const error = e.toString(); + assert.match(error, /MODULE_NOT_FOUND/); + assert.match(error, /Cannot find module/); + assert(error.includes(entryPoint)); continue; } assert.fail('Executing node with inexistent entry point should ' + diff --git a/test/parallel/test-net-connect-reset-after-destroy.js b/test/parallel/test-net-connect-reset-after-destroy.js new file mode 100644 index 00000000000000..89e459229ab1bd --- /dev/null +++ b/test/parallel/test-net-connect-reset-after-destroy.js @@ -0,0 +1,29 @@ +'use strict'; +const common = require('../common'); +const net = require('net'); +const assert = require('assert'); + +const server = net.createServer(); +server.listen(0, common.mustCall(function() { + const port = server.address().port; + const conn = net.createConnection(port); + server.on('connection', (socket) => { + socket.on('error', common.expectsError({ + code: 'ECONNRESET', + message: 'read ECONNRESET', + name: 'Error' + })); + }); + + conn.on('connect', common.mustCall(function() { + assert.strictEqual(conn, conn.resetAndDestroy().destroy()); + conn.on('error', common.mustNotCall()); + + conn.write(Buffer.from('fzfzfzfzfz'), common.expectsError({ + code: 'ERR_STREAM_DESTROYED', + message: 'Cannot call write after a stream was destroyed', + name: 'Error' + })); + server.close(); + })); +})); diff --git a/test/parallel/test-net-connect-reset-before-connected.js b/test/parallel/test-net-connect-reset-before-connected.js new file mode 100644 index 00000000000000..1dc2b98183ce31 --- /dev/null +++ b/test/parallel/test-net-connect-reset-before-connected.js @@ -0,0 +1,13 @@ +'use strict'; +const common = require('../common'); +const net = require('net'); + +const server = net.createServer(); +server.listen(0); +const port = server.address().port; +const socket = net.connect(port, common.localhostIPv4, common.mustNotCall()); +socket.on('error', common.mustNotCall()); +server.close(); +socket.resetAndDestroy(); +// `reset` waiting socket connected to sent the RST packet +socket.destroy(); diff --git a/test/parallel/test-net-connect-reset-until-connected.js b/test/parallel/test-net-connect-reset-until-connected.js new file mode 100644 index 00000000000000..e40ec05f6ce1e9 --- /dev/null +++ b/test/parallel/test-net-connect-reset-until-connected.js @@ -0,0 +1,20 @@ +'use strict'; + +const common = require('../common'); +const net = require('net'); + +const server = net.createServer(); +server.listen(0, common.mustCall(function() { + const port = server.address().port; + const conn = net.createConnection(port); + conn.on('close', common.mustCall()); + server.on('connection', (socket) => { + socket.on('error', common.expectsError({ + code: 'ECONNRESET', + message: 'read ECONNRESET', + name: 'Error' + })); + server.close(); + }); + conn.resetAndDestroy(); +})); diff --git a/test/parallel/test-net-connect-reset.js b/test/parallel/test-net-connect-reset.js new file mode 100644 index 00000000000000..1f3e806aa99b74 --- /dev/null +++ b/test/parallel/test-net-connect-reset.js @@ -0,0 +1,13 @@ +'use strict'; +const common = require('../common'); +const net = require('net'); + +const socket = new net.Socket(); +socket.resetAndDestroy(); +// Emit error if socket is not connecting/connected +socket.on('error', common.mustCall( + common.expectsError({ + code: 'ERR_SOCKET_CLOSED', + name: 'Error' + })) +); diff --git a/test/parallel/test-net-perf_hooks.js b/test/parallel/test-net-perf_hooks.js new file mode 100644 index 00000000000000..6b0d13aab27019 --- /dev/null +++ b/test/parallel/test-net-perf_hooks.js @@ -0,0 +1,60 @@ +'use strict'; + +const common = require('../common'); +const tmpdir = require('../common/tmpdir'); +const assert = require('assert'); +const net = require('net'); + +tmpdir.refresh(); + +const { PerformanceObserver } = require('perf_hooks'); + +const entries = []; + +const obs = new PerformanceObserver(common.mustCallAtLeast((items) => { + entries.push(...items.getEntries()); +})); + +obs.observe({ type: 'net' }); + +{ + const server = net.createServer(common.mustCall((socket) => { + socket.destroy(); + })); + + server.listen(0, common.mustCall(async () => { + await new Promise((resolve, reject) => { + const socket = net.connect(server.address().port); + socket.on('end', resolve); + socket.on('error', reject); + }); + server.close(); + })); +} + +{ + const server = net.createServer(common.mustCall((socket) => { + socket.destroy(); + })); + + server.listen(common.PIPE, common.mustCall(async () => { + await new Promise((resolve, reject) => { + const socket = net.connect(common.PIPE); + socket.on('end', resolve); + socket.on('error', reject); + }); + server.close(); + })); +} + +process.on('exit', () => { + assert.strictEqual(entries.length, 1); + entries.forEach((entry) => { + assert.strictEqual(entry.name, 'connect'); + assert.strictEqual(entry.entryType, 'net'); + assert.strictEqual(typeof entry.startTime, 'number'); + assert.strictEqual(typeof entry.duration, 'number'); + assert.strictEqual(!!entry.detail.host, true); + assert.strictEqual(!!entry.detail.port, true); + }); +}); diff --git a/test/parallel/test-net-remote-address.js b/test/parallel/test-net-remote-address.js new file mode 100644 index 00000000000000..a116cb99d3bcab --- /dev/null +++ b/test/parallel/test-net-remote-address.js @@ -0,0 +1,23 @@ +'use strict'; + +const common = require('../common'); +const net = require('net'); +const { strictEqual } = require('assert'); + +const server = net.createServer(); + +server.listen(common.mustCall(function() { + const socket = net.connect({ port: server.address().port }); + + strictEqual(socket.connecting, true); + strictEqual(socket.remoteAddress, undefined); + + socket.on('connect', common.mustCall(function() { + strictEqual(socket.remoteAddress !== undefined, true); + socket.end(); + })); + + socket.on('end', common.mustCall(function() { + server.close(); + })); +})); diff --git a/test/parallel/test-net-server-drop-connections.js b/test/parallel/test-net-server-drop-connections.js new file mode 100644 index 00000000000000..4c495bdfb9e981 --- /dev/null +++ b/test/parallel/test-net-server-drop-connections.js @@ -0,0 +1,26 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const net = require('net'); + +let firstSocket; +const server = net.createServer(common.mustCall((socket) => { + firstSocket = socket; +})); + +server.maxConnections = 1; + +server.on('drop', common.mustCall((data) => { + assert.strictEqual(!!data.localAddress, true); + assert.strictEqual(!!data.localPort, true); + assert.strictEqual(!!data.remoteAddress, true); + assert.strictEqual(!!data.remotePort, true); + assert.strictEqual(!!data.remoteFamily, true); + firstSocket.destroy(); + server.close(); +})); + +server.listen(0, () => { + net.createConnection(server.address().port); + net.createConnection(server.address().port); +}); diff --git a/test/parallel/test-net-server-keepalive.js b/test/parallel/test-net-server-keepalive.js new file mode 100644 index 00000000000000..6f3db6468f6696 --- /dev/null +++ b/test/parallel/test-net-server-keepalive.js @@ -0,0 +1,35 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const net = require('net'); + +const server = net.createServer({ + keepAlive: true, + keepAliveInitialDelay: 1000 +}, common.mustCall((socket) => { + const setKeepAlive = socket._handle.setKeepAlive; + socket._handle.setKeepAlive = common.mustCall((enable, initialDelay) => { + assert.strictEqual(enable, true); + assert.match(String(initialDelay), /^2|3$/); + return setKeepAlive.call(socket._handle, enable, initialDelay); + }, 2); + socket.setKeepAlive(true, 1000); + socket.setKeepAlive(true, 2000); + socket.setKeepAlive(true, 3000); + socket.destroy(); + server.close(); +})).listen(0, common.mustCall(() => { + net.connect(server.address().port); +})); + +const onconnection = server._handle.onconnection; +server._handle.onconnection = common.mustCall((err, clientHandle) => { + const setKeepAlive = clientHandle.setKeepAlive; + clientHandle.setKeepAlive = common.mustCall((enable, initialDelayMsecs) => { + assert.strictEqual(enable, server.keepAlive); + assert.strictEqual(initialDelayMsecs, server.keepAliveInitialDelay); + setKeepAlive.call(clientHandle, enable, initialDelayMsecs); + clientHandle.setKeepAlive = setKeepAlive; + }); + onconnection.call(server._handle, err, clientHandle); +}); diff --git a/test/parallel/test-net-server-nodelay.js b/test/parallel/test-net-server-nodelay.js new file mode 100644 index 00000000000000..a7f11475abe2d7 --- /dev/null +++ b/test/parallel/test-net-server-nodelay.js @@ -0,0 +1,26 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const net = require('net'); + +const server = net.createServer({ + noDelay: true +}, common.mustCall((socket) => { + socket._handle.setNoDelay = common.mustNotCall(); + socket.setNoDelay(true); + socket.destroy(); + server.close(); +})).listen(0, common.mustCall(() => { + net.connect(server.address().port); +})); + +const onconnection = server._handle.onconnection; +server._handle.onconnection = common.mustCall((err, clientHandle) => { + const setNoDelay = clientHandle.setNoDelay; + clientHandle.setNoDelay = common.mustCall((enable) => { + assert.strictEqual(enable, server.noDelay); + setNoDelay.call(clientHandle, enable); + clientHandle.setNoDelay = setNoDelay; + }); + onconnection.call(server._handle, err, clientHandle); +}); diff --git a/test/parallel/test-net-server-reset.js b/test/parallel/test-net-server-reset.js new file mode 100644 index 00000000000000..ea78cd2743298e --- /dev/null +++ b/test/parallel/test-net-server-reset.js @@ -0,0 +1,36 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const net = require('net'); + +const sockets = []; + +const server = net.createServer(function(c) { + c.on('close', common.mustCall()); + + sockets.push(c); + + if (sockets.length === 2) { + assert.strictEqual(server.close(), server); + sockets.forEach((c) => c.resetAndDestroy()); + } +}); + +server.on('close', common.mustCall()); + +assert.strictEqual(server, server.listen(0, () => { + net.createConnection(server.address().port) + .on('error', common.mustCall( + common.expectsError({ + code: 'ECONNRESET', + name: 'Error' + })) + ); + net.createConnection(server.address().port) + .on('error', common.mustCall( + common.expectsError({ + code: 'ECONNRESET', + name: 'Error' + })) + ); +})); diff --git a/test/parallel/test-net-socket-reset-send.js b/test/parallel/test-net-socket-reset-send.js new file mode 100644 index 00000000000000..b7b9f66cb93d60 --- /dev/null +++ b/test/parallel/test-net-socket-reset-send.js @@ -0,0 +1,30 @@ +'use strict'; + +const common = require('../common'); +const net = require('net'); +const assert = require('assert'); + +const server = net.createServer(); +server.listen(0, common.mustCall(() => { + const port = server.address().port; + const conn = net.createConnection(port); + server.on('connection', (socket) => { + socket.on('error', common.expectsError({ + code: 'ECONNRESET', + message: 'read ECONNRESET', + name: 'Error' + })); + }); + + conn.on('connect', common.mustCall(() => { + assert.strictEqual(conn, conn.resetAndDestroy().destroy()); + conn.on('error', common.mustNotCall()); + + conn.write(Buffer.from('fzfzfzfzfz'), common.expectsError({ + code: 'ERR_STREAM_DESTROYED', + message: 'Cannot call write after a stream was destroyed', + name: 'Error' + })); + server.close(); + })); +})); diff --git a/test/parallel/test-net-socket-reset-twice.js b/test/parallel/test-net-socket-reset-twice.js new file mode 100644 index 00000000000000..0292c5e3ab5448 --- /dev/null +++ b/test/parallel/test-net-socket-reset-twice.js @@ -0,0 +1,15 @@ +'use strict'; +const common = require('../common'); +const net = require('net'); + +const server = net.createServer(); +server.listen(0); +const port = server.address().port; +const conn = net.createConnection(port); + +conn.on('error', common.mustCall(() => { + conn.resetAndDestroy(); +})); + +conn.on('close', common.mustCall()); +server.close(); diff --git a/test/parallel/test-net-socket-timeout.js b/test/parallel/test-net-socket-timeout.js index 209359fda60810..7ebef777aff734 100644 --- a/test/parallel/test-net-socket-timeout.js +++ b/test/parallel/test-net-socket-timeout.js @@ -54,9 +54,9 @@ for (let i = 0; i < validDelays.length; i++) { } for (let i = 0; i < invalidCallbacks.length; i++) { - [0, 1].forEach((mesc) => + [0, 1].forEach((msec) => assert.throws( - () => s.setTimeout(mesc, invalidCallbacks[i]), + () => s.setTimeout(msec, invalidCallbacks[i]), { code: 'ERR_INVALID_CALLBACK', name: 'TypeError', diff --git a/test/parallel/test-net-write-fully-async-buffer.js b/test/parallel/test-net-write-fully-async-buffer.js index 207ae24f6a32d0..0dddb51bd76ade 100644 --- a/test/parallel/test-net-write-fully-async-buffer.js +++ b/test/parallel/test-net-write-fully-async-buffer.js @@ -23,7 +23,7 @@ const server = net.createServer(common.mustCall(function(conn) { } while (conn.write(Buffer.from(data))); - global.gc(true); + global.gc({ type: 'minor' }); // The buffer allocated above should still be alive. } diff --git a/test/parallel/test-net-write-fully-async-hex-string.js b/test/parallel/test-net-write-fully-async-hex-string.js index f3115d8d2f795e..37b5cd75c1385c 100644 --- a/test/parallel/test-net-write-fully-async-hex-string.js +++ b/test/parallel/test-net-write-fully-async-hex-string.js @@ -21,7 +21,7 @@ const server = net.createServer(common.mustCall(function(conn) { } while (conn.write(data, 'hex')); - global.gc(true); + global.gc({ type: 'minor' }); // The buffer allocated inside the .write() call should still be alive. } diff --git a/test/parallel/test-parse-args.mjs b/test/parallel/test-parse-args.mjs new file mode 100644 index 00000000000000..98cf9403743a41 --- /dev/null +++ b/test/parallel/test-parse-args.mjs @@ -0,0 +1,825 @@ +import '../common/index.mjs'; +import assert from 'node:assert'; +import { test } from 'node:test'; +import { parseArgs } from 'node:util'; + +test('when short option used as flag then stored as flag', () => { + const args = ['-f']; + const expected = { values: { __proto__: null, f: true }, positionals: [] }; + const result = parseArgs({ strict: false, args }); + assert.deepStrictEqual(result, expected); +}); + +test('when short option used as flag before positional then stored as flag and positional (and not value)', () => { + const args = ['-f', 'bar']; + const expected = { values: { __proto__: null, f: true }, positionals: [ 'bar' ] }; + const result = parseArgs({ strict: false, args }); + assert.deepStrictEqual(result, expected); +}); + +test('when short option `type: "string"` used with value then stored as value', () => { + const args = ['-f', 'bar']; + const options = { f: { type: 'string' } }; + const expected = { values: { __proto__: null, f: 'bar' }, positionals: [] }; + const result = parseArgs({ args, options }); + assert.deepStrictEqual(result, expected); +}); + +test('when short option listed in short used as flag then long option stored as flag', () => { + const args = ['-f']; + const options = { foo: { short: 'f', type: 'boolean' } }; + const expected = { values: { __proto__: null, foo: true }, positionals: [] }; + const result = parseArgs({ args, options }); + assert.deepStrictEqual(result, expected); +}); + +test('when short option listed in short and long listed in `type: "string"` and ' + + 'used with value then long option stored as value', () => { + const args = ['-f', 'bar']; + const options = { foo: { short: 'f', type: 'string' } }; + const expected = { values: { __proto__: null, foo: 'bar' }, positionals: [] }; + const result = parseArgs({ args, options }); + assert.deepStrictEqual(result, expected); +}); + +test('when short option `type: "string"` used without value then stored as flag', () => { + const args = ['-f']; + const options = { f: { type: 'string' } }; + const expected = { values: { __proto__: null, f: true }, positionals: [] }; + const result = parseArgs({ strict: false, args, options }); + assert.deepStrictEqual(result, expected); +}); + +test('short option group behaves like multiple short options', () => { + const args = ['-rf']; + const options = { }; + const expected = { values: { __proto__: null, r: true, f: true }, positionals: [] }; + const result = parseArgs({ strict: false, args, options }); + assert.deepStrictEqual(result, expected); +}); + +test('short option group does not consume subsequent positional', () => { + const args = ['-rf', 'foo']; + const options = { }; + const expected = { values: { __proto__: null, r: true, f: true }, positionals: ['foo'] }; + const result = parseArgs({ strict: false, args, options }); + assert.deepStrictEqual(result, expected); +}); + +// See: Guideline 5 https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html +test('if terminal of short-option group configured `type: "string"`, subsequent positional is stored', () => { + const args = ['-rvf', 'foo']; + const options = { f: { type: 'string' } }; + const expected = { values: { __proto__: null, r: true, v: true, f: 'foo' }, positionals: [] }; + const result = parseArgs({ strict: false, args, options }); + assert.deepStrictEqual(result, expected); +}); + +test('handles short-option groups in conjunction with long-options', () => { + const args = ['-rf', '--foo', 'foo']; + const options = { foo: { type: 'string' } }; + const expected = { values: { __proto__: null, r: true, f: true, foo: 'foo' }, positionals: [] }; + const result = parseArgs({ strict: false, args, options }); + assert.deepStrictEqual(result, expected); +}); + +test('handles short-option groups with "short" alias configured', () => { + const args = ['-rf']; + const options = { remove: { short: 'r', type: 'boolean' } }; + const expected = { values: { __proto__: null, remove: true, f: true }, positionals: [] }; + const result = parseArgs({ strict: false, args, options }); + assert.deepStrictEqual(result, expected); +}); + +test('handles short-option followed by its value', () => { + const args = ['-fFILE']; + const options = { foo: { short: 'f', type: 'string' } }; + const expected = { values: { __proto__: null, foo: 'FILE' }, positionals: [] }; + const result = parseArgs({ strict: false, args, options }); + assert.deepStrictEqual(result, expected); +}); + +test('Everything after a bare `--` is considered a positional argument', () => { + const args = ['--', 'barepositionals', 'mopositionals']; + const expected = { values: { __proto__: null }, positionals: ['barepositionals', 'mopositionals'] }; + const result = parseArgs({ allowPositionals: true, args }); + assert.deepStrictEqual(result, expected, Error('testing bare positionals')); +}); + +test('args are true', () => { + const args = ['--foo', '--bar']; + const expected = { values: { __proto__: null, foo: true, bar: true }, positionals: [] }; + const result = parseArgs({ strict: false, args }); + assert.deepStrictEqual(result, expected, Error('args are true')); +}); + +test('arg is true and positional is identified', () => { + const args = ['--foo=a', '--foo', 'b']; + const expected = { values: { __proto__: null, foo: true }, positionals: ['b'] }; + const result = parseArgs({ strict: false, args }); + assert.deepStrictEqual(result, expected, Error('arg is true and positional is identified')); +}); + +test('args equals are passed `type: "string"`', () => { + const args = ['--so=wat']; + const options = { so: { type: 'string' } }; + const expected = { values: { __proto__: null, so: 'wat' }, positionals: [] }; + const result = parseArgs({ args, options }); + assert.deepStrictEqual(result, expected, Error('arg value is passed')); +}); + +test('when args include single dash then result stores dash as positional', () => { + const args = ['-']; + const expected = { values: { __proto__: null }, positionals: ['-'] }; + const result = parseArgs({ allowPositionals: true, args }); + assert.deepStrictEqual(result, expected); +}); + +test('zero config args equals are parsed as if `type: "string"`', () => { + const args = ['--so=wat']; + const options = { }; + const expected = { values: { __proto__: null, so: 'wat' }, positionals: [] }; + const result = parseArgs({ strict: false, args, options }); + assert.deepStrictEqual(result, expected, Error('arg value is passed')); +}); + +test('same arg is passed twice `type: "string"` and last value is recorded', () => { + const args = ['--foo=a', '--foo', 'b']; + const options = { foo: { type: 'string' } }; + const expected = { values: { __proto__: null, foo: 'b' }, positionals: [] }; + const result = parseArgs({ args, options }); + assert.deepStrictEqual(result, expected, Error('last arg value is passed')); +}); + +test('args equals pass string including more equals', () => { + const args = ['--so=wat=bing']; + const options = { so: { type: 'string' } }; + const expected = { values: { __proto__: null, so: 'wat=bing' }, positionals: [] }; + const result = parseArgs({ args, options }); + assert.deepStrictEqual(result, expected, Error('arg value is passed')); +}); + +test('first arg passed for `type: "string"` and "multiple" is in array', () => { + const args = ['--foo=a']; + const options = { foo: { type: 'string', multiple: true } }; + const expected = { values: { __proto__: null, foo: ['a'] }, positionals: [] }; + const result = parseArgs({ args, options }); + assert.deepStrictEqual(result, expected, Error('first multiple in array')); +}); + +test('args are passed `type: "string"` and "multiple"', () => { + const args = ['--foo=a', '--foo', 'b']; + const options = { + foo: { + type: 'string', + multiple: true, + }, + }; + const expected = { values: { __proto__: null, foo: ['a', 'b'] }, positionals: [] }; + const result = parseArgs({ args, options }); + assert.deepStrictEqual(result, expected, Error('both arg values are passed')); +}); + +test('when expecting `multiple:true` boolean option and option used multiple times then result includes array of ' + + 'booleans matching usage', () => { + const args = ['--foo', '--foo']; + const options = { + foo: { + type: 'boolean', + multiple: true, + }, + }; + const expected = { values: { __proto__: null, foo: [true, true] }, positionals: [] }; + const result = parseArgs({ args, options }); + assert.deepStrictEqual(result, expected); +}); + +test('order of option and positional does not matter (per README)', () => { + const args1 = ['--foo=bar', 'baz']; + const args2 = ['baz', '--foo=bar']; + const options = { foo: { type: 'string' } }; + const expected = { values: { __proto__: null, foo: 'bar' }, positionals: ['baz'] }; + assert.deepStrictEqual( + parseArgs({ allowPositionals: true, args: args1, options }), + expected, + Error('option then positional') + ); + assert.deepStrictEqual( + parseArgs({ allowPositionals: true, args: args2, options }), + expected, + Error('positional then option') + ); +}); + +test('correct default args when use node -p', () => { + const holdArgv = process.argv; + process.argv = [process.argv0, '--foo']; + const holdExecArgv = process.execArgv; + process.execArgv = ['-p', '0']; + const result = parseArgs({ strict: false }); + + const expected = { values: { __proto__: null, foo: true }, + positionals: [] }; + assert.deepStrictEqual(result, expected); + process.argv = holdArgv; + process.execArgv = holdExecArgv; +}); + +test('correct default args when use node --print', () => { + const holdArgv = process.argv; + process.argv = [process.argv0, '--foo']; + const holdExecArgv = process.execArgv; + process.execArgv = ['--print', '0']; + const result = parseArgs({ strict: false }); + + const expected = { values: { __proto__: null, foo: true }, + positionals: [] }; + assert.deepStrictEqual(result, expected); + process.argv = holdArgv; + process.execArgv = holdExecArgv; +}); + +test('correct default args when use node -e', () => { + const holdArgv = process.argv; + process.argv = [process.argv0, '--foo']; + const holdExecArgv = process.execArgv; + process.execArgv = ['-e', '0']; + const result = parseArgs({ strict: false }); + + const expected = { values: { __proto__: null, foo: true }, + positionals: [] }; + assert.deepStrictEqual(result, expected); + process.argv = holdArgv; + process.execArgv = holdExecArgv; +}); + +test('correct default args when use node --eval', () => { + const holdArgv = process.argv; + process.argv = [process.argv0, '--foo']; + const holdExecArgv = process.execArgv; + process.execArgv = ['--eval', '0']; + const result = parseArgs({ strict: false }); + const expected = { values: { __proto__: null, foo: true }, + positionals: [] }; + assert.deepStrictEqual(result, expected); + process.argv = holdArgv; + process.execArgv = holdExecArgv; +}); + +test('correct default args when normal arguments', () => { + const holdArgv = process.argv; + process.argv = [process.argv0, 'script.js', '--foo']; + const holdExecArgv = process.execArgv; + process.execArgv = []; + const result = parseArgs({ strict: false }); + + const expected = { values: { __proto__: null, foo: true }, + positionals: [] }; + assert.deepStrictEqual(result, expected); + process.argv = holdArgv; + process.execArgv = holdExecArgv; +}); + +test('excess leading dashes on options are retained', () => { + // Enforce a design decision for an edge case. + const args = ['---triple']; + const options = { }; + const expected = { + values: { '__proto__': null, '-triple': true }, + positionals: [] + }; + const result = parseArgs({ strict: false, args, options }); + assert.deepStrictEqual(result, expected, Error('excess option dashes are retained')); +}); + +test('positional arguments are allowed by default in strict:false', () => { + const args = ['foo']; + const options = { }; + const expected = { + values: { __proto__: null }, + positionals: ['foo'] + }; + const result = parseArgs({ strict: false, args, options }); + assert.deepStrictEqual(result, expected); +}); + +test('positional arguments may be explicitly disallowed in strict:false', () => { + const args = ['foo']; + const options = { }; + assert.throws(() => { parseArgs({ strict: false, allowPositionals: false, args, options }); }, { + code: 'ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL' + }); +}); + +// Test bad inputs + +test('invalid argument passed for options', () => { + const args = ['--so=wat']; + const options = 'bad value'; + assert.throws(() => { parseArgs({ args, options }); }, { + code: 'ERR_INVALID_ARG_TYPE' + }); +}); + +test('type property missing for option then throw', () => { + const knownOptions = { foo: { } }; + assert.throws(() => { parseArgs({ options: knownOptions }); }, { + code: 'ERR_INVALID_ARG_TYPE' + }); +}); + +test('boolean passed to "type" option', () => { + const args = ['--so=wat']; + const options = { foo: { type: true } }; + assert.throws(() => { parseArgs({ args, options }); }, { + code: 'ERR_INVALID_ARG_TYPE' + }); +}); + +test('invalid union value passed to "type" option', () => { + const args = ['--so=wat']; + const options = { foo: { type: 'str' } }; + assert.throws(() => { parseArgs({ args, options }); }, { + code: 'ERR_INVALID_ARG_TYPE' + }); +}); + +// Test strict mode + +test('unknown long option --bar', () => { + const args = ['--foo', '--bar']; + const options = { foo: { type: 'boolean' } }; + assert.throws(() => { parseArgs({ args, options }); }, { + code: 'ERR_PARSE_ARGS_UNKNOWN_OPTION' + }); +}); + +test('unknown short option -b', () => { + const args = ['--foo', '-b']; + const options = { foo: { type: 'boolean' } }; + assert.throws(() => { parseArgs({ args, options }); }, { + code: 'ERR_PARSE_ARGS_UNKNOWN_OPTION' + }); +}); + +test('unknown option -r in short option group -bar', () => { + const args = ['-bar']; + const options = { b: { type: 'boolean' }, a: { type: 'boolean' } }; + assert.throws(() => { parseArgs({ args, options }); }, { + code: 'ERR_PARSE_ARGS_UNKNOWN_OPTION' + }); +}); + +test('unknown option with explicit value', () => { + const args = ['--foo', '--bar=baz']; + const options = { foo: { type: 'boolean' } }; + assert.throws(() => { parseArgs({ args, options }); }, { + code: 'ERR_PARSE_ARGS_UNKNOWN_OPTION' + }); +}); + +test('unexpected positional', () => { + const args = ['foo']; + const options = { foo: { type: 'boolean' } }; + assert.throws(() => { parseArgs({ args, options }); }, { + code: 'ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL' + }); +}); + +test('unexpected positional after --', () => { + const args = ['--', 'foo']; + const options = { foo: { type: 'boolean' } }; + assert.throws(() => { parseArgs({ args, options }); }, { + code: 'ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL' + }); +}); + +test('-- by itself is not a positional', () => { + const args = ['--foo', '--']; + const options = { foo: { type: 'boolean' } }; + const result = parseArgs({ args, options }); + const expected = { values: { __proto__: null, foo: true }, + positionals: [] }; + assert.deepStrictEqual(result, expected); +}); + +test('string option used as boolean', () => { + const args = ['--foo']; + const options = { foo: { type: 'string' } }; + assert.throws(() => { parseArgs({ args, options }); }, { + code: 'ERR_PARSE_ARGS_INVALID_OPTION_VALUE' + }); +}); + +test('boolean option used with value', () => { + const args = ['--foo=bar']; + const options = { foo: { type: 'boolean' } }; + assert.throws(() => { parseArgs({ args, options }); }, { + code: 'ERR_PARSE_ARGS_INVALID_OPTION_VALUE' + }); +}); + +test('invalid short option length', () => { + const args = []; + const options = { foo: { short: 'fo', type: 'boolean' } }; + assert.throws(() => { parseArgs({ args, options }); }, { + code: 'ERR_INVALID_ARG_VALUE' + }); +}); + +test('null prototype: when no options then values.toString is undefined', () => { + const result = parseArgs({ args: [] }); + assert.strictEqual(result.values.toString, undefined); +}); + +test('null prototype: when --toString then values.toString is true', () => { + const args = ['--toString']; + const options = { toString: { type: 'boolean' } }; + const expectedResult = { values: { __proto__: null, toString: true }, positionals: [] }; + + const result = parseArgs({ args, options }); + assert.deepStrictEqual(result, expectedResult); +}); + +const candidateGreedyOptions = [ + '', + '-', + '--', + 'abc', + '123', + '-s', + '--foo', +]; + +candidateGreedyOptions.forEach((value) => { + test(`greedy: when short option with value '${value}' then eaten`, () => { + const args = ['-w', value]; + const options = { with: { type: 'string', short: 'w' } }; + const expectedResult = { values: { __proto__: null, with: value }, positionals: [] }; + + const result = parseArgs({ args, options, strict: false }); + assert.deepStrictEqual(result, expectedResult); + }); + + test(`greedy: when long option with value '${value}' then eaten`, () => { + const args = ['--with', value]; + const options = { with: { type: 'string', short: 'w' } }; + const expectedResult = { values: { __proto__: null, with: value }, positionals: [] }; + + const result = parseArgs({ args, options, strict: false }); + assert.deepStrictEqual(result, expectedResult); + }); +}); + +test('strict: when candidate option value is plain text then does not throw', () => { + const args = ['--with', 'abc']; + const options = { with: { type: 'string' } }; + const expectedResult = { values: { __proto__: null, with: 'abc' }, positionals: [] }; + + const result = parseArgs({ args, options, strict: true }); + assert.deepStrictEqual(result, expectedResult); +}); + +test("strict: when candidate option value is '-' then does not throw", () => { + const args = ['--with', '-']; + const options = { with: { type: 'string' } }; + const expectedResult = { values: { __proto__: null, with: '-' }, positionals: [] }; + + const result = parseArgs({ args, options, strict: true }); + assert.deepStrictEqual(result, expectedResult); +}); + +test("strict: when candidate option value is '--' then throws", () => { + const args = ['--with', '--']; + const options = { with: { type: 'string' } }; + + assert.throws(() => { + parseArgs({ args, options }); + }, { + code: 'ERR_PARSE_ARGS_INVALID_OPTION_VALUE' + }); +}); + +test('strict: when candidate option value is short option then throws', () => { + const args = ['--with', '-a']; + const options = { with: { type: 'string' } }; + + assert.throws(() => { + parseArgs({ args, options }); + }, { + code: 'ERR_PARSE_ARGS_INVALID_OPTION_VALUE' + }); +}); + +test('strict: when candidate option value is short option digit then throws', () => { + const args = ['--with', '-1']; + const options = { with: { type: 'string' } }; + + assert.throws(() => { + parseArgs({ args, options }); + }, { + code: 'ERR_PARSE_ARGS_INVALID_OPTION_VALUE' + }); +}); + +test('strict: when candidate option value is long option then throws', () => { + const args = ['--with', '--foo']; + const options = { with: { type: 'string' } }; + + assert.throws(() => { + parseArgs({ args, options }); + }, { + code: 'ERR_PARSE_ARGS_INVALID_OPTION_VALUE' + }); +}); + +test('strict: when short option and suspect value then throws with short option in error message', () => { + const args = ['-w', '--foo']; + const options = { with: { type: 'string', short: 'w' } }; + + assert.throws(() => { + parseArgs({ args, options }); + }, /for '-w'/ + ); +}); + +test('strict: when long option and suspect value then throws with long option in error message', () => { + const args = ['--with', '--foo']; + const options = { with: { type: 'string' } }; + + assert.throws(() => { + parseArgs({ args, options }); + }, /for '--with'/ + ); +}); + +test('strict: when short option and suspect value then throws with whole expected message', () => { + const args = ['-w', '--foo']; + const options = { with: { type: 'string', short: 'w' } }; + + try { + parseArgs({ args, options }); + } catch (err) { + console.info(err.message); + } + + assert.throws(() => { + parseArgs({ args, options }); + }, /To specify an option argument starting with a dash use '--with=-XYZ' or '-w-XYZ'/ + ); +}); + +test('strict: when long option and suspect value then throws with whole expected message', () => { + const args = ['--with', '--foo']; + const options = { with: { type: 'string', short: 'w' } }; + + assert.throws(() => { + parseArgs({ args, options }); + }, /To specify an option argument starting with a dash use '--with=-XYZ'/ + ); +}); + +test('tokens: positional', () => { + const args = ['one']; + const expectedTokens = [ + { kind: 'positional', index: 0, value: 'one' }, + ]; + const { tokens } = parseArgs({ strict: false, args, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: -- followed by option-like', () => { + const args = ['--', '--foo']; + const expectedTokens = [ + { kind: 'option-terminator', index: 0 }, + { kind: 'positional', index: 1, value: '--foo' }, + ]; + const { tokens } = parseArgs({ strict: false, args, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:true boolean short', () => { + const args = ['-f']; + const options = { + file: { short: 'f', type: 'boolean' } + }; + const expectedTokens = [ + { kind: 'option', name: 'file', rawName: '-f', + index: 0, value: undefined, inlineValue: undefined }, + ]; + const { tokens } = parseArgs({ strict: true, args, options, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:true boolean long', () => { + const args = ['--file']; + const options = { + file: { short: 'f', type: 'boolean' } + }; + const expectedTokens = [ + { kind: 'option', name: 'file', rawName: '--file', + index: 0, value: undefined, inlineValue: undefined }, + ]; + const { tokens } = parseArgs({ strict: true, args, options, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:false boolean short', () => { + const args = ['-f']; + const expectedTokens = [ + { kind: 'option', name: 'f', rawName: '-f', + index: 0, value: undefined, inlineValue: undefined }, + ]; + const { tokens } = parseArgs({ strict: false, args, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:false boolean long', () => { + const args = ['--file']; + const expectedTokens = [ + { kind: 'option', name: 'file', rawName: '--file', + index: 0, value: undefined, inlineValue: undefined }, + ]; + const { tokens } = parseArgs({ strict: false, args, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:false boolean option group', () => { + const args = ['-ab']; + const expectedTokens = [ + { kind: 'option', name: 'a', rawName: '-a', + index: 0, value: undefined, inlineValue: undefined }, + { kind: 'option', name: 'b', rawName: '-b', + index: 0, value: undefined, inlineValue: undefined }, + ]; + const { tokens } = parseArgs({ strict: false, args, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:false boolean option group with repeated option', () => { + // Also positional to check index correct after grouop + const args = ['-aa', 'pos']; + const expectedTokens = [ + { kind: 'option', name: 'a', rawName: '-a', + index: 0, value: undefined, inlineValue: undefined }, + { kind: 'option', name: 'a', rawName: '-a', + index: 0, value: undefined, inlineValue: undefined }, + { kind: 'positional', index: 1, value: 'pos' }, + ]; + const { tokens } = parseArgs({ strict: false, allowPositionals: true, args, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:true string short with value after space', () => { + // Also positional to check index correct after out-of-line. + const args = ['-f', 'bar', 'ppp']; + const options = { + file: { short: 'f', type: 'string' } + }; + const expectedTokens = [ + { kind: 'option', name: 'file', rawName: '-f', + index: 0, value: 'bar', inlineValue: false }, + { kind: 'positional', index: 2, value: 'ppp' }, + ]; + const { tokens } = parseArgs({ strict: true, allowPositionals: true, args, options, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:true string short with value inline', () => { + const args = ['-fBAR']; + const options = { + file: { short: 'f', type: 'string' } + }; + const expectedTokens = [ + { kind: 'option', name: 'file', rawName: '-f', + index: 0, value: 'BAR', inlineValue: true }, + ]; + const { tokens } = parseArgs({ strict: true, args, options, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:false string short missing value', () => { + const args = ['-f']; + const options = { + file: { short: 'f', type: 'string' } + }; + const expectedTokens = [ + { kind: 'option', name: 'file', rawName: '-f', + index: 0, value: undefined, inlineValue: undefined }, + ]; + const { tokens } = parseArgs({ strict: false, args, options, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:true string long with value after space', () => { + // Also positional to check index correct after out-of-line. + const args = ['--file', 'bar', 'ppp']; + const options = { + file: { short: 'f', type: 'string' } + }; + const expectedTokens = [ + { kind: 'option', name: 'file', rawName: '--file', + index: 0, value: 'bar', inlineValue: false }, + { kind: 'positional', index: 2, value: 'ppp' }, + ]; + const { tokens } = parseArgs({ strict: true, allowPositionals: true, args, options, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:true string long with value inline', () => { + // Also positional to check index correct after out-of-line. + const args = ['--file=bar', 'pos']; + const options = { + file: { short: 'f', type: 'string' } + }; + const expectedTokens = [ + { kind: 'option', name: 'file', rawName: '--file', + index: 0, value: 'bar', inlineValue: true }, + { kind: 'positional', index: 1, value: 'pos' }, + ]; + const { tokens } = parseArgs({ strict: true, allowPositionals: true, args, options, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:false string long with value inline', () => { + const args = ['--file=bar']; + const expectedTokens = [ + { kind: 'option', name: 'file', rawName: '--file', + index: 0, value: 'bar', inlineValue: true }, + ]; + const { tokens } = parseArgs({ strict: false, args, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:false string long missing value', () => { + const args = ['--file']; + const options = { + file: { short: 'f', type: 'string' } + }; + const expectedTokens = [ + { kind: 'option', name: 'file', rawName: '--file', + index: 0, value: undefined, inlineValue: undefined }, + ]; + const { tokens } = parseArgs({ strict: false, args, options, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:true complex option group with value after space', () => { + // Also positional to check index correct afterwards. + const args = ['-ab', 'c', 'pos']; + const options = { + alpha: { short: 'a', type: 'boolean' }, + beta: { short: 'b', type: 'string' }, + }; + const expectedTokens = [ + { kind: 'option', name: 'alpha', rawName: '-a', + index: 0, value: undefined, inlineValue: undefined }, + { kind: 'option', name: 'beta', rawName: '-b', + index: 0, value: 'c', inlineValue: false }, + { kind: 'positional', index: 2, value: 'pos' }, + ]; + const { tokens } = parseArgs({ strict: true, allowPositionals: true, args, options, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:true complex option group with inline value', () => { + // Also positional to check index correct afterwards. + const args = ['-abc', 'pos']; + const options = { + alpha: { short: 'a', type: 'boolean' }, + beta: { short: 'b', type: 'string' }, + }; + const expectedTokens = [ + { kind: 'option', name: 'alpha', rawName: '-a', + index: 0, value: undefined, inlineValue: undefined }, + { kind: 'option', name: 'beta', rawName: '-b', + index: 0, value: 'c', inlineValue: true }, + { kind: 'positional', index: 1, value: 'pos' }, + ]; + const { tokens } = parseArgs({ strict: true, allowPositionals: true, args, options, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:false with single dashes', () => { + const args = ['--file', '-', '-']; + const options = { + file: { short: 'f', type: 'string' }, + }; + const expectedTokens = [ + { kind: 'option', name: 'file', rawName: '--file', + index: 0, value: '-', inlineValue: false }, + { kind: 'positional', index: 2, value: '-' }, + ]; + const { tokens } = parseArgs({ strict: false, args, options, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); + +test('tokens: strict:false with -- --', () => { + const args = ['--', '--']; + const expectedTokens = [ + { kind: 'option-terminator', index: 0 }, + { kind: 'positional', index: 1, value: '--' }, + ]; + const { tokens } = parseArgs({ strict: false, args, tokens: true }); + assert.deepStrictEqual(tokens, expectedTokens); +}); diff --git a/test/parallel/test-perf-hooks-histogram.js b/test/parallel/test-perf-hooks-histogram.js index 2137c1b2a3bb11..1bcc59653bb692 100644 --- a/test/parallel/test-perf-hooks-histogram.js +++ b/test/parallel/test-perf-hooks-histogram.js @@ -89,7 +89,12 @@ const { inspect } = require('util'); strictEqual(data.enable, undefined); mc.port1.close(); }); - setTimeout(() => mc.port2.postMessage(e), 100); + const interval = setInterval(() => { + if (e.count > 0) { + clearInterval(interval); + mc.port2.postMessage(e); + } + }, 50); } { diff --git a/test/parallel/test-perf-hooks-resourcetiming.js b/test/parallel/test-perf-hooks-resourcetiming.js new file mode 100644 index 00000000000000..056924c4eb8c6f --- /dev/null +++ b/test/parallel/test-perf-hooks-resourcetiming.js @@ -0,0 +1,316 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const util = require('util'); +const { + PerformanceObserver, + PerformanceEntry, + PerformanceResourceTiming, + performance: { + clearResourceTimings, + markResourceTiming, + }, +} = require('perf_hooks'); + +assert(PerformanceObserver); +assert(PerformanceEntry); +assert.throws(() => new PerformanceEntry(), { code: 'ERR_ILLEGAL_CONSTRUCTOR' }); +assert(PerformanceResourceTiming); +assert(clearResourceTimings); +assert(markResourceTiming); + +function createTimingInfo({ + startTime = 0, + redirectStartTime = 0, + redirectEndTime = 0, + postRedirectStartTime = 0, + finalServiceWorkerStartTime = 0, + finalNetworkRequestStartTime = 0, + finalNetworkResponseStartTime = 0, + endTime = 0, + encodedBodySize = 0, + decodedBodySize = 0, + finalConnectionTimingInfo = null +}) { + if (finalConnectionTimingInfo !== null) { + finalConnectionTimingInfo.domainLookupStartTime = + finalConnectionTimingInfo.domainLookupStartTime || 0; + finalConnectionTimingInfo.domainLookupEndTime = + finalConnectionTimingInfo.domainLookupEndTime || 0; + finalConnectionTimingInfo.connectionStartTime = + finalConnectionTimingInfo.connectionStartTime || 0; + finalConnectionTimingInfo.connectionEndTime = + finalConnectionTimingInfo.connectionEndTime || 0; + finalConnectionTimingInfo.secureConnectionStartTime = + finalConnectionTimingInfo.secureConnectionStartTime || 0; + finalConnectionTimingInfo.ALPNNegotiatedProtocol = + finalConnectionTimingInfo.ALPNNegotiatedProtocol || []; + } + return { + startTime, + redirectStartTime, + redirectEndTime, + postRedirectStartTime, + finalServiceWorkerStartTime, + finalNetworkRequestStartTime, + finalNetworkResponseStartTime, + endTime, + encodedBodySize, + decodedBodySize, + finalConnectionTimingInfo, + }; +} + +// PerformanceResourceTiming should not be initialized externally +{ + assert.throws(() => new PerformanceResourceTiming(), { + name: 'TypeError', + message: 'Illegal constructor', + code: 'ERR_ILLEGAL_CONSTRUCTOR', + }); +} + +// Using performance.getEntries*() +{ + const timingInfo = createTimingInfo({ finalConnectionTimingInfo: {} }); + const customGlobal = {}; + const requestedUrl = 'http://localhost:8080'; + const cacheMode = 'local'; + const initiatorType = 'fetch'; + const resource = markResourceTiming( + timingInfo, + requestedUrl, + initiatorType, + customGlobal, + cacheMode, + ); + + assert(resource instanceof PerformanceEntry); + assert(resource instanceof PerformanceResourceTiming); + + { + const entries = performance.getEntries(); + assert.strictEqual(entries.length, 1); + assert(entries[0] instanceof PerformanceResourceTiming); + } + + { + const entries = performance.getEntriesByType('resource'); + assert.strictEqual(entries.length, 1); + assert(entries[0] instanceof PerformanceResourceTiming); + } + + { + const entries = performance.getEntriesByName(resource.name); + assert.strictEqual(entries.length, 1); + assert(entries[0] instanceof PerformanceResourceTiming); + } + + clearResourceTimings(); + assert.strictEqual(performance.getEntries().length, 0); +} + +// Assert resource data based in timingInfo + +// default values +{ + const timingInfo = createTimingInfo({ finalConnectionTimingInfo: {} }); + const customGlobal = {}; + const requestedUrl = 'http://localhost:8080'; + const cacheMode = 'local'; + const initiatorType = 'fetch'; + const resource = markResourceTiming( + timingInfo, + requestedUrl, + initiatorType, + customGlobal, + cacheMode, + ); + + assert(resource instanceof PerformanceEntry); + assert(resource instanceof PerformanceResourceTiming); + + assert.strictEqual(resource.entryType, 'resource'); + assert.strictEqual(resource.name, requestedUrl); + assert.ok(typeof resource.cacheMode === 'undefined', 'cacheMode does not have a getter'); + assert.strictEqual(resource.startTime, timingInfo.startTime); + assert.strictEqual(resource.duration, 0); + assert.strictEqual(resource.initiatorType, initiatorType); + assert.strictEqual(resource.workerStart, 0); + assert.strictEqual(resource.redirectStart, 0); + assert.strictEqual(resource.redirectEnd, 0); + assert.strictEqual(resource.fetchStart, 0); + assert.strictEqual(resource.domainLookupStart, 0); + assert.strictEqual(resource.domainLookupEnd, 0); + assert.strictEqual(resource.connectStart, 0); + assert.strictEqual(resource.connectEnd, 0); + assert.strictEqual(resource.secureConnectionStart, 0); + assert.deepStrictEqual(resource.nextHopProtocol, []); + assert.strictEqual(resource.requestStart, 0); + assert.strictEqual(resource.responseStart, 0); + assert.strictEqual(resource.responseEnd, 0); + assert.strictEqual(resource.encodedBodySize, 0); + assert.strictEqual(resource.decodedBodySize, 0); + assert.strictEqual(resource.transferSize, 0); + assert.deepStrictEqual(resource.toJSON(), { + name: requestedUrl, + entryType: 'resource', + startTime: 0, + duration: 0, + initiatorType, + nextHopProtocol: [], + workerStart: 0, + redirectStart: 0, + redirectEnd: 0, + fetchStart: 0, + domainLookupStart: 0, + domainLookupEnd: 0, + connectStart: 0, + connectEnd: 0, + secureConnectionStart: 0, + requestStart: 0, + responseStart: 0, + responseEnd: 0, + transferSize: 0, + encodedBodySize: 0, + decodedBodySize: 0, + }); + assert.strictEqual(util.inspect(performance.getEntries()), `[ + PerformanceResourceTiming { + name: 'http://localhost:8080', + entryType: 'resource', + startTime: 0, + duration: 0, + initiatorType: 'fetch', + nextHopProtocol: [], + workerStart: 0, + redirectStart: 0, + redirectEnd: 0, + fetchStart: 0, + domainLookupStart: 0, + domainLookupEnd: 0, + connectStart: 0, + connectEnd: 0, + secureConnectionStart: 0, + requestStart: 0, + responseStart: 0, + responseEnd: 0, + transferSize: 0, + encodedBodySize: 0, + decodedBodySize: 0 + } +]`); + assert.strictEqual(util.inspect(resource), `PerformanceResourceTiming { + name: 'http://localhost:8080', + entryType: 'resource', + startTime: 0, + duration: 0, + initiatorType: 'fetch', + nextHopProtocol: [], + workerStart: 0, + redirectStart: 0, + redirectEnd: 0, + fetchStart: 0, + domainLookupStart: 0, + domainLookupEnd: 0, + connectStart: 0, + connectEnd: 0, + secureConnectionStart: 0, + requestStart: 0, + responseStart: 0, + responseEnd: 0, + transferSize: 0, + encodedBodySize: 0, + decodedBodySize: 0 +}`); + + assert(resource instanceof PerformanceEntry); + assert(resource instanceof PerformanceResourceTiming); + + clearResourceTimings(); + const entries = performance.getEntries(); + assert.strictEqual(entries.length, 0); +} + +// custom getters math +{ + const timingInfo = createTimingInfo({ + endTime: 100, + startTime: 50, + encodedBodySize: 150, + }); + const customGlobal = {}; + const requestedUrl = 'http://localhost:8080'; + const cacheMode = ''; + const initiatorType = 'fetch'; + const resource = markResourceTiming( + timingInfo, + requestedUrl, + initiatorType, + customGlobal, + cacheMode, + ); + + assert(resource instanceof PerformanceEntry); + assert(resource instanceof PerformanceResourceTiming); + + assert.strictEqual(resource.entryType, 'resource'); + assert.strictEqual(resource.name, requestedUrl); + assert.ok(typeof resource.cacheMode === 'undefined', 'cacheMode does not have a getter'); + assert.strictEqual(resource.startTime, timingInfo.startTime); + // Duration should be the timingInfo endTime - startTime + assert.strictEqual(resource.duration, 50); + // TransferSize should be encodedBodySize + 300 when cacheMode is empty + assert.strictEqual(resource.transferSize, 450); + + assert(resource instanceof PerformanceEntry); + assert(resource instanceof PerformanceResourceTiming); + + clearResourceTimings(); + const entries = performance.getEntries(); + assert.strictEqual(entries.length, 0); +} + +// Using PerformanceObserver +{ + const obs = new PerformanceObserver(common.mustCall((list) => { + { + const entries = list.getEntries(); + assert.strictEqual(entries.length, 1); + assert(entries[0] instanceof PerformanceResourceTiming); + } + { + const entries = list.getEntriesByType('resource'); + assert.strictEqual(entries.length, 1); + assert(entries[0] instanceof PerformanceResourceTiming); + } + { + const entries = list.getEntriesByName('http://localhost:8080'); + assert.strictEqual(entries.length, 1); + assert(entries[0] instanceof PerformanceResourceTiming); + } + obs.disconnect(); + })); + obs.observe({ entryTypes: ['resource'] }); + + const timingInfo = createTimingInfo({ finalConnectionTimingInfo: {} }); + const customGlobal = {}; + const requestedUrl = 'http://localhost:8080'; + const cacheMode = 'local'; + const initiatorType = 'fetch'; + const resource = markResourceTiming( + timingInfo, + requestedUrl, + initiatorType, + customGlobal, + cacheMode, + ); + + assert(resource instanceof PerformanceEntry); + assert(resource instanceof PerformanceResourceTiming); + + clearResourceTimings(); + const entries = performance.getEntries(); + assert.strictEqual(entries.length, 0); +} diff --git a/test/parallel/test-performance-function.js b/test/parallel/test-performance-function.js index ea928028208e47..5f774d6c2adcf5 100644 --- a/test/parallel/test-performance-function.js +++ b/test/parallel/test-performance-function.js @@ -75,16 +75,18 @@ const { }); } -// Function can only be wrapped once, also check length and name +// Function can be wrapped many times, also check length and name { const m = (a, b = 1) => {}; const n = performance.timerify(m); const o = performance.timerify(m); const p = performance.timerify(n); - assert.strictEqual(n, o); - assert.strictEqual(n, p); + assert.notStrictEqual(n, o); + assert.notStrictEqual(n, p); + assert.notStrictEqual(o, p); assert.strictEqual(n.length, m.length); assert.strictEqual(n.name, 'timerified m'); + assert.strictEqual(p.name, 'timerified timerified m'); } (async () => { @@ -121,3 +123,22 @@ const { }); }); })().then(common.mustCall()); + +// Regression tests for https://github.com/nodejs/node/issues/40623 +{ + assert.strictEqual(performance.timerify(function func() { + return 1; + })(), 1); + assert.strictEqual(performance.timerify(function() { + return 1; + })(), 1); + assert.strictEqual(performance.timerify(() => { + return 1; + })(), 1); + class C {} + const wrap = performance.timerify(C); + assert.ok(new wrap() instanceof C); + assert.throws(() => wrap(), { + name: 'TypeError', + }); +} diff --git a/test/parallel/test-performance-gc.js b/test/parallel/test-performance-gc.js index 1561bc5fb78572..9c4a3a850a22dd 100644 --- a/test/parallel/test-performance-gc.js +++ b/test/parallel/test-performance-gc.js @@ -35,6 +35,7 @@ const kinds = [ assert.strictEqual(entry.flags, NODE_PERFORMANCE_GC_FLAGS_FORCED); assert.strictEqual(entry.detail.flags, NODE_PERFORMANCE_GC_FLAGS_FORCED); assert.strictEqual(typeof entry.startTime, 'number'); + assert(entry.startTime < 1e4, 'startTime should be relative to performance.timeOrigin.'); assert.strictEqual(typeof entry.duration, 'number'); obs.disconnect(); })); diff --git a/test/parallel/test-primordials-promise.js b/test/parallel/test-primordials-promise.js index 6165192938458f..7ff29fc0f5d407 100644 --- a/test/parallel/test-primordials-promise.js +++ b/test/parallel/test-primordials-promise.js @@ -7,9 +7,18 @@ const assert = require('assert'); const { PromisePrototypeCatch, PromisePrototypeThen, + SafePromiseAll, + SafePromiseAllSettled, + SafePromiseAny, SafePromisePrototypeFinally, + SafePromiseRace, } = require('internal/test/binding').primordials; +Array.prototype[Symbol.iterator] = common.mustNotCall(); +Promise.all = common.mustNotCall(); +Promise.allSettled = common.mustNotCall(); +Promise.any = common.mustNotCall(); +Promise.race = common.mustNotCall(); Promise.prototype.catch = common.mustNotCall(); Promise.prototype.finally = common.mustNotCall(); Promise.prototype.then = common.mustNotCall(); @@ -18,6 +27,11 @@ assertIsPromise(PromisePrototypeCatch(Promise.reject(), common.mustCall())); assertIsPromise(PromisePrototypeThen(test(), common.mustCall())); assertIsPromise(SafePromisePrototypeFinally(test(), common.mustCall())); +assertIsPromise(SafePromiseAll([test()])); +assertIsPromise(SafePromiseAllSettled([test()])); +assertIsPromise(SafePromiseAny([test()])); +assertIsPromise(SafePromiseRace([test()])); + async function test() { const catchFn = common.mustCall(); const finallyFn = common.mustCall(); diff --git a/test/parallel/test-process-beforeexit.js b/test/parallel/test-process-beforeexit.js index 7b7ba48f7d8cb4..e04b756cade8bc 100644 --- a/test/parallel/test-process-beforeexit.js +++ b/test/parallel/test-process-beforeexit.js @@ -59,12 +59,21 @@ function tryRepeatedTimer() { if (++n < N) setTimeout(repeatedTimer, 1); else // n == N - process.once('beforeExit', common.mustCall(tryNextTick)); + process.once('beforeExit', common.mustCall(tryNextTickSetImmediate)); }, N); setTimeout(repeatedTimer, 1); } // Test if the callback of `process.nextTick` can be invoked. +function tryNextTickSetImmediate() { + process.nextTick(common.mustCall(function() { + setImmediate(common.mustCall(() => { + process.once('beforeExit', common.mustCall(tryNextTick)); + })); + })); +} + +// Test that `process.nextTick` won't keep the event loop running by itself. function tryNextTick() { process.nextTick(common.mustCall(function() { process.once('beforeExit', common.mustNotCall()); diff --git a/test/parallel/test-process-env-allowed-flags-are-documented.js b/test/parallel/test-process-env-allowed-flags-are-documented.js index a2738f08e2fd27..a1e7eebc0601f2 100644 --- a/test/parallel/test-process-env-allowed-flags-are-documented.js +++ b/test/parallel/test-process-env-allowed-flags-are-documented.js @@ -43,6 +43,10 @@ for (const line of [...nodeOptionsLines, ...v8OptionsLines]) { } } +if (!common.hasOpenSSL3) { + documented.delete('--openssl-legacy-provider'); +} + // Filter out options that are conditionally present. const conditionalOpts = [ { @@ -50,6 +54,8 @@ const conditionalOpts = [ filter: (opt) => { return [ '--openssl-config', + common.hasOpenSSL3 ? '--openssl-legacy-provider' : '', + '--openssl-shared-config', '--tls-cipher-list', '--use-bundled-ca', '--use-openssl-ca', diff --git a/test/parallel/test-process-env-tz.js b/test/parallel/test-process-env-tz.js index b0188ab9c267f8..dcc69ed4bf1d3b 100644 --- a/test/parallel/test-process-env-tz.js +++ b/test/parallel/test-process-env-tz.js @@ -1,10 +1,4 @@ 'use strict'; - -// Set the locale to a known good value because it affects ICU's date string -// formatting. Setting LC_ALL needs to happen before the first call to -// `icu::Locale::getDefault()` because ICU caches the result. -process.env.LC_ALL = 'C'; - const common = require('../common'); const assert = require('assert'); @@ -31,6 +25,7 @@ if (date.toString().includes('(Central European Time)') || common.skip('tzdata too old'); } +// Text representation of timezone depends on locale in environment assert.match( date.toString(), /^Sat Apr 14 2018 14:34:56 GMT\+0200 \(.+\)$/); diff --git a/test/parallel/test-queue-microtask-uncaught-asynchooks.js b/test/parallel/test-queue-microtask-uncaught-asynchooks.js index ee64c6e68ab7ab..35b3d9fa309af9 100644 --- a/test/parallel/test-queue-microtask-uncaught-asynchooks.js +++ b/test/parallel/test-queue-microtask-uncaught-asynchooks.js @@ -11,7 +11,7 @@ let µtaskId; const events = []; async_hooks.createHook({ - init(id, type, triggerId, resoure) { + init(id, type, triggerId, resource) { if (type === 'Microtask') { µtaskId = id; events.push('init'); diff --git a/test/parallel/test-readline-emit-keypress-events.js b/test/parallel/test-readline-emit-keypress-events.js index 8bb10d905cae2a..a9ffd3276c419c 100644 --- a/test/parallel/test-readline-emit-keypress-events.js +++ b/test/parallel/test-readline-emit-keypress-events.js @@ -7,22 +7,66 @@ require('../common'); const assert = require('assert'); const readline = require('readline'); const PassThrough = require('stream').PassThrough; -const stream = new PassThrough(); -const sequence = []; -const keys = []; -readline.emitKeypressEvents(stream); - -stream.on('keypress', (s, k) => { - sequence.push(s); - keys.push(k); -}); - -stream.write('foo'); - -assert.deepStrictEqual(sequence, ['f', 'o', 'o']); -assert.deepStrictEqual(keys, [ +const expectedSequence = ['f', 'o', 'o']; +const expectedKeys = [ { sequence: 'f', name: 'f', ctrl: false, meta: false, shift: false }, { sequence: 'o', name: 'o', ctrl: false, meta: false, shift: false }, { sequence: 'o', name: 'o', ctrl: false, meta: false, shift: false }, -]); +]; + +{ + const stream = new PassThrough(); + const sequence = []; + const keys = []; + + readline.emitKeypressEvents(stream); + stream.on('keypress', (s, k) => { + sequence.push(s); + keys.push(k); + }); + stream.write('foo'); + + assert.deepStrictEqual(sequence, expectedSequence); + assert.deepStrictEqual(keys, expectedKeys); +} + +{ + const stream = new PassThrough(); + const sequence = []; + const keys = []; + + stream.on('keypress', (s, k) => { + sequence.push(s); + keys.push(k); + }); + readline.emitKeypressEvents(stream); + stream.write('foo'); + + assert.deepStrictEqual(sequence, expectedSequence); + assert.deepStrictEqual(keys, expectedKeys); +} + +{ + const stream = new PassThrough(); + const sequence = []; + const keys = []; + const keypressListener = (s, k) => { + sequence.push(s); + keys.push(k); + }; + + stream.on('keypress', keypressListener); + readline.emitKeypressEvents(stream); + stream.removeListener('keypress', keypressListener); + stream.write('foo'); + + assert.deepStrictEqual(sequence, []); + assert.deepStrictEqual(keys, []); + + stream.on('keypress', keypressListener); + stream.write('foo'); + + assert.deepStrictEqual(sequence, expectedSequence); + assert.deepStrictEqual(keys, expectedKeys); +} diff --git a/test/parallel/test-repl-history-navigation.js b/test/parallel/test-repl-history-navigation.js index 29cb7816f0feb0..39ccc3732c3d82 100644 --- a/test/parallel/test-repl-history-navigation.js +++ b/test/parallel/test-repl-history-navigation.js @@ -74,6 +74,7 @@ const tests = [ env: { NODE_REPL_HISTORY: defaultHistoryPath }, test: [ 'let ab = 45', ENTER, '555 + 909', ENTER, + 'let autocompleteMe = 123', ENTER, '{key : {key2 :[] }}', ENTER, 'Array(100).fill(1).map((e, i) => i ** i)', LEFT, LEFT, DELETE, '2', ENTER], @@ -82,7 +83,7 @@ const tests = [ }, { env: { NODE_REPL_HISTORY: defaultHistoryPath }, - test: [UP, UP, UP, UP, UP, DOWN, DOWN, DOWN, DOWN, DOWN], + test: [UP, UP, UP, UP, UP, UP, DOWN, DOWN, DOWN, DOWN, DOWN, DOWN], expected: [prompt, `${prompt}Array(100).fill(1).map((e, i) => i ** 2)`, prev && '\n// [ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, ' + @@ -92,6 +93,7 @@ const tests = [ ' 2025, 2116, 2209,...', `${prompt}{key : {key2 :[] }}`, prev && '\n// { key: { key2: [] } }', + `${prompt}let autocompleteMe = 123`, `${prompt}555 + 909`, prev && '\n// 1464', `${prompt}let ab = 45`, @@ -99,6 +101,7 @@ const tests = [ `${prompt}let ab = 45`, `${prompt}555 + 909`, prev && '\n// 1464', + `${prompt}let autocompleteMe = 123`, `${prompt}{key : {key2 :[] }}`, prev && '\n// { key: { key2: [] } }', `${prompt}Array(100).fill(1).map((e, i) => i ** 2)`, @@ -128,7 +131,7 @@ const tests = [ preview: false, showEscapeCodes: true, test: [ - '55', UP, UP, UP, UP, UP, UP, ENTER, + '55', UP, UP, UP, UP, UP, UP, UP, ENTER, ], expected: [ '\x1B[1G', '\x1B[0J', prompt, '\x1B[3G', @@ -185,10 +188,10 @@ const tests = [ ENTER, 'veryLongName'.repeat(30), ENTER, - `${'\x1B[90m \x1B[39m'.repeat(235)} fun`, + `${'\x1B[90m \x1B[39m'.repeat(229)} aut`, ESCAPE, ENTER, - `${' '.repeat(236)} fun`, + `${' '.repeat(230)} aut`, ESCAPE, ENTER, ], @@ -236,19 +239,20 @@ const tests = [ prompt, '\x1B[3G', // 1. UP // This exceeds the maximum columns (250): - // Whitespace + prompt + ' // '.length + 'function'.length - // 236 + 2 + 4 + 8 + // Whitespace + prompt + ' // '.length + 'autocompleteMe'.length + // 230 + 2 + 4 + 14 '\x1B[1G', '\x1B[0J', - `${prompt}${' '.repeat(236)} fun`, '\x1B[243G', - ' // ction', '\x1B[243G', - ' // ction', '\x1B[243G', + `${prompt}${' '.repeat(230)} aut`, '\x1B[237G', + ' // ocompleteMe', '\x1B[237G', + '\n// 123', '\x1B[237G', + '\x1B[1A', '\x1B[1B', '\x1B[2K', '\x1B[1A', '\x1B[0K', // 2. UP '\x1B[1G', '\x1B[0J', - `${prompt}${' '.repeat(235)} fun`, '\x1B[242G', - // TODO(BridgeAR): Investigate why the preview is generated twice. - ' // ction', '\x1B[242G', - ' // ction', '\x1B[242G', + `${prompt}${' '.repeat(229)} aut`, '\x1B[236G', + ' // ocompleteMe', '\x1B[236G', + '\n// 123', '\x1B[236G', + '\x1B[1A', '\x1B[1B', '\x1B[2K', '\x1B[1A', // Preview cleanup '\x1B[0K', // 3. UP @@ -326,8 +330,8 @@ const tests = [ skip: !process.features.inspector, checkTotal: true, test: [ - 'fu', - 'n', + 'au', + 't', RIGHT, BACKSPACE, LEFT, @@ -353,74 +357,93 @@ const tests = [ // K = Erase in line; 0 = right; 1 = left; 2 = total expected: [ // 0. - // 'f' - '\x1B[1G', '\x1B[0J', prompt, '\x1B[3G', 'f', + // 'a' + '\x1B[1G', '\x1B[0J', prompt, '\x1B[3G', 'a', // 'u' - 'u', ' // nction', '\x1B[5G', - // 'n' - Cleanup + 'u', ' // tocompleteMe', '\x1B[5G', + '\n// 123', '\x1B[5G', + '\x1B[1A', '\x1B[1B', '\x1B[2K', '\x1B[1A', + // 't' - Cleanup '\x1B[0K', - 'n', ' // ction', '\x1B[6G', + 't', ' // ocompleteMe', '\x1B[6G', + '\n// 123', '\x1B[6G', + '\x1B[1A', '\x1B[1B', '\x1B[2K', '\x1B[1A', // 1. Right. Cleanup '\x1B[0K', - 'ction', + 'ocompleteMe', + '\n// 123', '\x1B[17G', + '\x1B[1A', '\x1B[1B', '\x1B[2K', '\x1B[1A', // 2. Backspace. Refresh - '\x1B[1G', '\x1B[0J', `${prompt}functio`, '\x1B[10G', + '\x1B[1G', '\x1B[0J', `${prompt}autocompleteM`, '\x1B[16G', // Autocomplete and refresh? - ' // n', '\x1B[10G', ' // n', '\x1B[10G', + ' // e', '\x1B[16G', + '\n// 123', '\x1B[16G', + '\x1B[1A', '\x1B[1B', '\x1B[2K', '\x1B[1A', // 3. Left. Cleanup '\x1B[0K', - '\x1B[1D', '\x1B[10G', ' // n', '\x1B[9G', + '\x1B[1D', '\x1B[16G', ' // e', '\x1B[15G', // 4. Left. Cleanup - '\x1B[10G', '\x1B[0K', '\x1B[9G', - '\x1B[1D', '\x1B[10G', ' // n', '\x1B[8G', + '\x1B[16G', '\x1B[0K', '\x1B[15G', + '\x1B[1D', '\x1B[16G', ' // e', '\x1B[14G', // 5. 'A' - Cleanup - '\x1B[10G', '\x1B[0K', '\x1B[8G', + '\x1B[16G', '\x1B[0K', '\x1B[14G', // Refresh - '\x1B[1G', '\x1B[0J', `${prompt}functAio`, '\x1B[9G', + '\x1B[1G', '\x1B[0J', `${prompt}autocompletAeM`, '\x1B[15G', // 6. Backspace. Refresh - '\x1B[1G', '\x1B[0J', `${prompt}functio`, '\x1B[8G', '\x1B[10G', ' // n', - '\x1B[8G', '\x1B[10G', ' // n', - '\x1B[8G', '\x1B[10G', + '\x1B[1G', '\x1B[0J', `${prompt}autocompleteM`, + '\x1B[14G', '\x1B[16G', ' // e', + '\x1B[14G', '\x1B[16G', ' // e', + '\x1B[14G', '\x1B[16G', // 7. Go to end. Cleanup - '\x1B[0K', '\x1B[8G', '\x1B[2C', - 'n', + '\x1B[0K', '\x1B[14G', '\x1B[2C', + 'e', + '\n// 123', '\x1B[17G', + '\x1B[1A', '\x1B[1B', '\x1B[2K', '\x1B[1A', // 8. Backspace. Refresh - '\x1B[1G', '\x1B[0J', `${prompt}functio`, '\x1B[10G', + '\x1B[1G', '\x1B[0J', `${prompt}autocompleteM`, '\x1B[16G', // Autocomplete - ' // n', '\x1B[10G', ' // n', '\x1B[10G', + ' // e', '\x1B[16G', + '\n// 123', '\x1B[16G', + '\x1B[1A', '\x1B[1B', '\x1B[2K', '\x1B[1A', // 9. Word left. Cleanup - '\x1B[0K', '\x1B[7D', '\x1B[10G', ' // n', '\x1B[3G', '\x1B[10G', + '\x1B[0K', '\x1B[13D', '\x1B[16G', ' // e', '\x1B[3G', '\x1B[16G', // 10. Word right. Cleanup - '\x1B[0K', '\x1B[3G', '\x1B[7C', ' // n', '\x1B[10G', + '\x1B[0K', '\x1B[3G', '\x1B[13C', ' // e', '\x1B[16G', + '\n// 123', '\x1B[16G', + '\x1B[1A', '\x1B[1B', '\x1B[2K', '\x1B[1A', // 11. ESCAPE '\x1B[0K', // 12. ENTER '\r\n', - 'Uncaught ReferenceError: functio is not defined\n', + 'Uncaught ReferenceError: autocompleteM is not defined\n', '\x1B[1G', '\x1B[0J', // 13. UP prompt, '\x1B[3G', '\x1B[1G', '\x1B[0J', - `${prompt}functio`, '\x1B[10G', - ' // n', '\x1B[10G', - ' // n', '\x1B[10G', + `${prompt}autocompleteM`, '\x1B[16G', + ' // e', '\x1B[16G', + '\n// 123', '\x1B[16G', + '\x1B[1A', '\x1B[1B', '\x1B[2K', '\x1B[1A', // 14. LEFT - '\x1B[0K', '\x1B[1D', - '\x1B[10G', ' // n', '\x1B[9G', '\x1B[10G', + '\x1B[0K', '\x1B[1D', '\x1B[16G', + ' // e', '\x1B[15G', '\x1B[16G', // 15. ENTER - '\x1B[0K', '\x1B[9G', '\x1B[1C', + '\x1B[0K', '\x1B[15G', '\x1B[1C', '\r\n', - 'Uncaught ReferenceError: functio is not defined\n', + 'Uncaught ReferenceError: autocompleteM is not defined\n', '\x1B[1G', '\x1B[0J', - '> ', '\x1B[3G', + prompt, '\x1B[3G', // 16. UP '\x1B[1G', '\x1B[0J', - '> functio', '\x1B[10G', - ' // n', '\x1B[10G', - ' // n', '\x1B[10G', '\x1B[0K', + `${prompt}autocompleteM`, '\x1B[16G', + ' // e', '\x1B[16G', + '\n// 123', '\x1B[16G', + '\x1B[1A', '\x1B[1B', '\x1B[2K', '\x1B[1A', + '\x1B[0K', // 17. ENTER - 'n', '\r\n', + 'e', '\r\n', + '123\n', '\x1B[1G', '\x1B[0J', - '... ', '\x1B[5G', + prompt, '\x1B[3G', '\r\n', ], clean: true diff --git a/test/parallel/test-repl-preprocess-top-level-await.js b/test/parallel/test-repl-preprocess-top-level-await.js index 51b15e107f53bc..bdd1c6fe8a423a 100644 --- a/test/parallel/test-repl-preprocess-top-level-await.js +++ b/test/parallel/test-repl-preprocess-top-level-await.js @@ -17,25 +17,25 @@ const testCases = [ [ '0', null ], [ 'await 0', - '(async () => { return (await 0) })()' ], + '(async () => { return { value: (await 0) } })()' ], [ `await ${surrogate}`, - `(async () => { return (await ${surrogate}) })()` ], + `(async () => { return { value: (await ${surrogate}) } })()` ], [ 'await 0;', - '(async () => { return (await 0); })()' ], + '(async () => { return { value: (await 0) }; })()' ], [ 'await 0;;;', - '(async () => { return (await 0);;; })()' ], + '(async () => { return { value: (await 0) };;; })()' ], [ `await ${surrogate};`, - `(async () => { return (await ${surrogate}); })()` ], + `(async () => { return { value: (await ${surrogate}) }; })()` ], [ `await ${surrogate};`, - `(async () => { return (await ${surrogate}); })()` ], + `(async () => { return { value: (await ${surrogate}) }; })()` ], [ '(await 0)', - '(async () => { return ((await 0)) })()' ], + '(async () => { return ({ value: (await 0) }) })()' ], [ `(await ${surrogate})`, - `(async () => { return ((await ${surrogate})) })()` ], + `(async () => { return ({ value: (await ${surrogate}) }) })()` ], [ '(await 0);', - '(async () => { return ((await 0)); })()' ], + '(async () => { return ({ value: (await 0) }); })()' ], [ `(await ${surrogate});`, - `(async () => { return ((await ${surrogate})); })()` ], + `(async () => { return ({ value: (await ${surrogate}) }); })()` ], [ 'async function foo() { await 0; }', null ], [ 'async () => await 0', @@ -45,7 +45,7 @@ const testCases = [ [ 'await 0; return 0;', null ], [ `await ${surrogate}; await ${surrogate};`, - `(async () => { await ${surrogate}; return (await ${surrogate}); })()` ], + `(async () => { await ${surrogate}; return { value: (await ${surrogate}) }; })()` ], [ 'var a = await 1', 'var a; (async () => { void (a = await 1) })()' ], [ `var a = await ${surrogate}`, @@ -71,7 +71,7 @@ const testCases = [ ' ([{d}] = [{d: 3}])) })()'], /* eslint-disable no-template-curly-in-string */ [ 'console.log(`${(await { a: 1 }).a}`)', - '(async () => { return (console.log(`${(await { a: 1 }).a}`)) })()' ], + '(async () => { return { value: (console.log(`${(await { a: 1 }).a}`)) } })()' ], /* eslint-enable no-template-curly-in-string */ [ 'await 0; function foo() {}', 'var foo; (async () => { await 0; this.foo = foo; function foo() {} })()' ], @@ -92,15 +92,15 @@ const testCases = [ [ 'let o = await 1, p', 'let o, p; (async () => { void ( (o = await 1), (p=undefined)) })()' ], [ 'await (async () => { let p = await 1; return p; })()', - '(async () => { return (await (async () => ' + - '{ let p = await 1; return p; })()) })()' ], + '(async () => { return { value: (await (async () => ' + + '{ let p = await 1; return p; })()) } })()' ], [ '{ let p = await 1; }', '(async () => { { let p = await 1; } })()' ], [ 'var p = await 1', 'var p; (async () => { void (p = await 1) })()' ], [ 'await (async () => { var p = await 1; return p; })()', - '(async () => { return (await (async () => ' + - '{ var p = await 1; return p; })()) })()' ], + '(async () => { return { value: (await (async () => ' + + '{ var p = await 1; return p; })()) } })()' ], [ '{ var p = await 1; }', 'var p; (async () => { { void (p = await 1); } })()' ], [ 'for await (var i of asyncIterable) { i; }', @@ -140,6 +140,10 @@ const testCases = [ [ 'var x = await foo(); async function foo() { return Promise.resolve(1);}', 'var x; var foo; (async () => { void (x = await foo()); this.foo = foo; ' + 'async function foo() { return Promise.resolve(1);} })()'], + [ '(await x).y', + '(async () => { return { value: ((await x).y) } })()'], + [ 'await (await x).y', + '(async () => { return { value: (await (await x).y) } })()'], ]; for (const [input, expected] of testCases) { diff --git a/test/parallel/test-repl-preview.js b/test/parallel/test-repl-preview.js index 620f41296e91f0..6eb2a169918a51 100644 --- a/test/parallel/test-repl-preview.js +++ b/test/parallel/test-repl-preview.js @@ -2,6 +2,7 @@ const common = require('../common'); const assert = require('assert'); +const events = require('events'); const { REPLServer } = require('repl'); const { Stream } = require('stream'); const { inspect } = require('util'); @@ -32,26 +33,16 @@ class REPLStream extends Stream { if (chunkLines.length > 1) { this.lines.push(...chunkLines.slice(1)); } - this.emit('line'); + this.emit('line', this.lines[this.lines.length - 1]); return true; } - wait() { + async wait() { this.lines = ['']; - return new Promise((resolve, reject) => { - const onError = (err) => { - this.removeListener('line', onLine); - reject(err); - }; - const onLine = () => { - if (this.lines[this.lines.length - 1].includes(PROMPT)) { - this.removeListener('error', onError); - this.removeListener('line', onLine); - resolve(this.lines); - } - }; - this.once('error', onError); - this.on('line', onLine); - }); + for await (const [line] of events.on(this, 'line')) { + if (line.includes(PROMPT)) { + return this.lines; + } + } } pause() {} resume() {} diff --git a/test/parallel/test-repl-reverse-search.js b/test/parallel/test-repl-reverse-search.js index 5165dc2820d2d6..2808c953431bd2 100644 --- a/test/parallel/test-repl-reverse-search.js +++ b/test/parallel/test-repl-reverse-search.js @@ -212,9 +212,7 @@ const tests = [ expected: [ '\x1B[1G', '\x1B[0J', prompt, '\x1B[3G', - 'f', 'u', ' // nction', - '\x1B[5G', '\x1B[0K', - '\nbck-i-search: _', '\x1B[1A', '\x1B[5G', + 'f', 'u', '\nbck-i-search: _', '\x1B[1A', '\x1B[5G', '\x1B[3G', '\x1B[0J', '{key : {key2 :[] }}\nbck-i-search: }_', '\x1B[1A', '\x1B[21G', '\x1B[3G', '\x1B[0J', diff --git a/test/parallel/test-repl-tab-complete-import.js b/test/parallel/test-repl-tab-complete-import.js index 1968caa5accf54..e328d95db5986c 100644 --- a/test/parallel/test-repl-tab-complete-import.js +++ b/test/parallel/test-repl-tab-complete-import.js @@ -53,14 +53,18 @@ testMe.complete("import\t( 'n", common.mustCall((error, data) => { assert.strictEqual(data[1], 'n'); const completions = data[0]; // import(...) completions include `node:` URL modules: - publicModules.forEach((lib, index) => - assert.strictEqual(completions[index], `node:${lib}`)); - assert.strictEqual(completions[publicModules.length], ''); + let lastIndex = -1; + + publicModules.forEach((lib, index) => { + lastIndex = completions.indexOf(`node:${lib}`); + assert.notStrictEqual(lastIndex, -1); + }); + assert.strictEqual(completions[lastIndex + 1], ''); // There is only one Node.js module that starts with n: - assert.strictEqual(completions[publicModules.length + 1], 'net'); - assert.strictEqual(completions[publicModules.length + 2], ''); + assert.strictEqual(completions[lastIndex + 2], 'net'); + assert.strictEqual(completions[lastIndex + 3], ''); // It's possible to pick up non-core modules too - completions.slice(publicModules.length + 3).forEach((completion) => { + completions.slice(lastIndex + 4).forEach((completion) => { assert.match(completion, /^n/); }); })); diff --git a/test/parallel/test-repl-tab-complete-on-editor-mode.js b/test/parallel/test-repl-tab-complete-on-editor-mode.js new file mode 100644 index 00000000000000..610724de2a2844 --- /dev/null +++ b/test/parallel/test-repl-tab-complete-on-editor-mode.js @@ -0,0 +1,21 @@ +'use strict'; + +require('../common'); +const ArrayStream = require('../common/arraystream'); +const repl = require('repl'); + +const stream = new ArrayStream(); +const replServer = repl.start({ + input: stream, + output: stream, + terminal: true, +}); + +// Editor mode +replServer.write('.editor\n'); + +// Regression test for https://github.com/nodejs/node/issues/43528 +replServer.write('a'); +replServer.write(null, { name: 'tab' }); // Should not throw + +replServer.close(); diff --git a/test/parallel/test-repl-tab-complete.js b/test/parallel/test-repl-tab-complete.js index 270fb768b030cf..cc211d6da8aaef 100644 --- a/test/parallel/test-repl-tab-complete.js +++ b/test/parallel/test-repl-tab-complete.js @@ -205,6 +205,38 @@ testMe.complete('str.len', common.mustCall(function(error, data) { putIn.run(['.clear']); +// Tab completion should be case-insensitive if member part is lower-case +putIn.run([ + 'var foo = { barBar: 1, BARbuz: 2, barBLA: 3 };', +]); +testMe.complete( + 'foo.b', + common.mustCall(function(error, data) { + assert.deepStrictEqual(data, [ + ['foo.BARbuz', 'foo.barBLA', 'foo.barBar'], + 'foo.b', + ]); + }) +); + +putIn.run(['.clear']); + +// Tab completion should be case-insensitive if member part is upper-case +putIn.run([ + 'var foo = { barBar: 1, BARbuz: 2, barBLA: 3 };', +]); +testMe.complete( + 'foo.B', + common.mustCall(function(error, data) { + assert.deepStrictEqual(data, [ + ['foo.BARbuz', 'foo.barBLA', 'foo.barBar'], + 'foo.B', + ]); + }) +); + +putIn.run(['.clear']); + // Tab completion should not break on spaces const spaceTimeout = setTimeout(function() { throw new Error('timeout'); @@ -261,14 +293,18 @@ testMe.complete("require\t( 'n", common.mustCall(function(error, data) { assert.strictEqual(data.length, 2); assert.strictEqual(data[1], 'n'); // require(...) completions include `node:`-prefixed modules: - publicModules.forEach((lib, index) => - assert.strictEqual(data[0][index], `node:${lib}`)); - assert.strictEqual(data[0][publicModules.length], ''); + let lastIndex = -1; + + publicModules.forEach((lib, index) => { + lastIndex = data[0].indexOf(`node:${lib}`); + assert.notStrictEqual(lastIndex, -1); + }); + assert.strictEqual(data[0][lastIndex + 1], ''); // There is only one Node.js module that starts with n: - assert.strictEqual(data[0][publicModules.length + 1], 'net'); - assert.strictEqual(data[0][publicModules.length + 2], ''); + assert.strictEqual(data[0][lastIndex + 2], 'net'); + assert.strictEqual(data[0][lastIndex + 3], ''); // It's possible to pick up non-core modules too - data[0].slice(publicModules.length + 3).forEach((completion) => { + data[0].slice(lastIndex + 4).forEach((completion) => { assert.match(completion, /^n/); }); })); @@ -584,12 +620,27 @@ const testNonGlobal = repl.start({ useGlobal: false }); -const builtins = [['Infinity', 'Int16Array', 'Int32Array', - 'Int8Array'], 'I']; +const builtins = [ + [ + 'if', + 'import', + 'in', + 'instanceof', + '', + 'Infinity', + 'Int16Array', + 'Int32Array', + 'Int8Array', + ...(common.hasIntl ? ['Intl'] : []), + 'inspector', + 'isFinite', + 'isNaN', + '', + 'isPrototypeOf', + ], + 'I', +]; -if (common.hasIntl) { - builtins[0].push('Intl'); -} testNonGlobal.complete('I', common.mustCall((error, data) => { assert.deepStrictEqual(data, builtins); })); diff --git a/test/parallel/test-repl-top-level-await.js b/test/parallel/test-repl-top-level-await.js index a7c3811d5e1b07..1abcca75f1e2a0 100644 --- a/test/parallel/test-repl-top-level-await.js +++ b/test/parallel/test-repl-top-level-await.js @@ -3,6 +3,7 @@ const common = require('../common'); const ArrayStream = require('../common/arraystream'); const assert = require('assert'); +const events = require('events'); const { stripVTControlCharacters } = require('internal/util/inspect'); const repl = require('repl'); @@ -27,31 +28,21 @@ class REPLStream extends ArrayStream { if (chunkLines.length > 1) { this.lines.push(...chunkLines.slice(1)); } - this.emit('line'); + this.emit('line', this.lines[this.lines.length - 1]); if (callback) callback(); return true; } - wait() { + async wait() { if (this.waitingForResponse) { throw new Error('Currently waiting for response to another command'); } this.lines = ['']; - return new Promise((resolve, reject) => { - const onError = (err) => { - this.removeListener('line', onLine); - reject(err); - }; - const onLine = () => { - if (this.lines[this.lines.length - 1].includes(PROMPT)) { - this.removeListener('error', onError); - this.removeListener('line', onLine); - resolve(this.lines); - } - }; - this.once('error', onError); - this.on('line', onLine); - }); + for await (const [line] of events.on(this, 'line')) { + if (line.includes(PROMPT)) { + return this.lines; + } + } } } @@ -182,6 +173,10 @@ async function ordinaryTests() { '3', 'undefined', ]], + // Regression test for https://github.com/nodejs/node/issues/43777. + ['await Promise.resolve(123), Promise.resolve(456)', 'Promise {', { line: 0 }], + ['await Promise.resolve(123), await Promise.resolve(456)', '456'], + ['await (Promise.resolve(123), Promise.resolve(456))', '456'], ]; for (const [input, expected = [`${input}\r`], options = {}] of testCases) { diff --git a/test/parallel/test-repl-unsupported-option.js b/test/parallel/test-repl-unsupported-option.js new file mode 100644 index 00000000000000..c5b234614983f6 --- /dev/null +++ b/test/parallel/test-repl-unsupported-option.js @@ -0,0 +1,10 @@ +'use strict'; + +require('../common'); + +const assert = require('assert'); +const { spawnSync } = require('child_process'); + +const result = spawnSync(process.execPath, ['-i', '--input-type=module']); + +assert.match(result.stderr.toString(), /Cannot specify --input-type for REPL/); diff --git a/test/parallel/test-require-resolve.js b/test/parallel/test-require-resolve.js index e7125e39faf7c3..ab58033e2c9b5c 100644 --- a/test/parallel/test-require-resolve.js +++ b/test/parallel/test-require-resolve.js @@ -80,3 +80,13 @@ require(fixtures.path('resolve-paths', 'default', 'verify-paths.js')); assert.strictEqual(resolvedPaths.includes('/node_modules'), false); }); } + +{ + assert.strictEqual(require.resolve('node:test'), 'node:test'); + assert.strictEqual(require.resolve('node:fs'), 'node:fs'); + + assert.throws( + () => require.resolve('node:unknown'), + { code: 'MODULE_NOT_FOUND' }, + ); +} diff --git a/test/parallel/test-runner-cli.js b/test/parallel/test-runner-cli.js new file mode 100644 index 00000000000000..552d64d7c40ba2 --- /dev/null +++ b/test/parallel/test-runner-cli.js @@ -0,0 +1,123 @@ +'use strict'; +require('../common'); +const assert = require('assert'); +const { spawnSync } = require('child_process'); +const { join } = require('path'); +const fixtures = require('../common/fixtures'); +const testFixtures = fixtures.path('test-runner'); + +{ + // File not found. + const args = ['--test', 'a-random-file-that-does-not-exist.js']; + const child = spawnSync(process.execPath, args); + + assert.strictEqual(child.status, 1); + assert.strictEqual(child.signal, null); + assert.strictEqual(child.stdout.toString(), ''); + assert.match(child.stderr.toString(), /^Could not find/); +} + +{ + // Default behavior. node_modules is ignored. Files that don't match the + // pattern are ignored except in test/ directories. + const args = ['--test', testFixtures]; + const child = spawnSync(process.execPath, args); + + assert.strictEqual(child.status, 1); + assert.strictEqual(child.signal, null); + assert.strictEqual(child.stderr.toString(), ''); + const stdout = child.stdout.toString(); + assert.match(stdout, /ok 1 - .+index\.test\.js/); + assert.match(stdout, /not ok 2 - .+random\.test\.mjs/); + assert.match(stdout, /not ok 1 - this should fail/); + assert.match(stdout, /ok 3 - .+subdir.+subdir_test\.js/); + assert.match(stdout, /ok 4 - .+random\.cjs/); +} + +{ + // Same but with a prototype mutation in require scripts. + const args = ['--require', join(testFixtures, 'protoMutation.js'), '--test', testFixtures]; + const child = spawnSync(process.execPath, args); + + const stdout = child.stdout.toString(); + assert.match(stdout, /ok 1 - .+index\.test\.js/); + assert.match(stdout, /not ok 2 - .+random\.test\.mjs/); + assert.match(stdout, /not ok 1 - this should fail/); + assert.match(stdout, /ok 3 - .+subdir.+subdir_test\.js/); + assert.match(stdout, /ok 4 - .+random\.cjs/); + assert.strictEqual(child.status, 1); + assert.strictEqual(child.signal, null); + assert.strictEqual(child.stderr.toString(), ''); +} + +{ + // User specified files that don't match the pattern are still run. + const args = ['--test', testFixtures, join(testFixtures, 'index.js')]; + const child = spawnSync(process.execPath, args); + + assert.strictEqual(child.status, 1); + assert.strictEqual(child.signal, null); + assert.strictEqual(child.stderr.toString(), ''); + const stdout = child.stdout.toString(); + assert.match(stdout, /not ok 1 - .+index\.js/); + assert.match(stdout, /ok 2 - .+index\.test\.js/); + assert.match(stdout, /not ok 3 - .+random\.test\.mjs/); + assert.match(stdout, /not ok 1 - this should fail/); + assert.match(stdout, /ok 4 - .+subdir.+subdir_test\.js/); +} + +{ + // Searches node_modules if specified. + const args = ['--test', join(testFixtures, 'node_modules')]; + const child = spawnSync(process.execPath, args); + + assert.strictEqual(child.status, 1); + assert.strictEqual(child.signal, null); + assert.strictEqual(child.stderr.toString(), ''); + const stdout = child.stdout.toString(); + assert.match(stdout, /not ok 1 - .+test-nm\.js/); +} + +{ + // The current directory is used by default. + const args = ['--test']; + const options = { cwd: testFixtures }; + const child = spawnSync(process.execPath, args, options); + + assert.strictEqual(child.status, 1); + assert.strictEqual(child.signal, null); + assert.strictEqual(child.stderr.toString(), ''); + const stdout = child.stdout.toString(); + assert.match(stdout, /ok 1 - .+index\.test\.js/); + assert.match(stdout, /not ok 2 - .+random\.test\.mjs/); + assert.match(stdout, /not ok 1 - this should fail/); + assert.match(stdout, /ok 3 - .+subdir.+subdir_test\.js/); + assert.match(stdout, /ok 4 - .+random\.cjs/); +} + +{ + // Flags that cannot be combined with --test. + const flags = [ + ['--check', '--test'], + ['--interactive', '--test'], + ['--eval', 'console.log("should not print")', '--test'], + ['--print', 'console.log("should not print")', '--test'], + ]; + + if (process.features.inspector) { + flags.push( + ['--inspect', '--test'], + ['--inspect-brk', '--test'], + ); + } + + flags.forEach((args) => { + const child = spawnSync(process.execPath, args); + + assert.notStrictEqual(child.status, 0); + assert.strictEqual(child.signal, null); + assert.strictEqual(child.stdout.toString(), ''); + const stderr = child.stderr.toString(); + assert.match(stderr, /--test/); + }); +} diff --git a/test/parallel/test-runner-concurrency.js b/test/parallel/test-runner-concurrency.js new file mode 100644 index 00000000000000..802cff3e9be375 --- /dev/null +++ b/test/parallel/test-runner-concurrency.js @@ -0,0 +1,29 @@ +'use strict'; +require('../common'); +const { describe, it } = require('node:test'); +const assert = require('assert'); + +describe('Concurrency option (boolean) = true ', { concurrency: true }, () => { + let isFirstTestOver = false; + it('should start the first test', () => new Promise((resolve) => { + setImmediate(() => { isFirstTestOver = true; resolve(); }); + })); + it('should start before the previous test ends', () => { + // Should work even on single core CPUs + assert.strictEqual(isFirstTestOver, false); + }); +}); + +describe( + 'Concurrency option (boolean) = false ', + { concurrency: false }, + () => { + let isFirstTestOver = false; + it('should start the first test', () => new Promise((resolve) => { + setImmediate(() => { isFirstTestOver = true; resolve(); }); + })); + it('should start after the previous test ends', () => { + assert.strictEqual(isFirstTestOver, true); + }); + } +); diff --git a/test/parallel/test-runner-exit-code.js b/test/parallel/test-runner-exit-code.js new file mode 100644 index 00000000000000..638ad9853aeefb --- /dev/null +++ b/test/parallel/test-runner-exit-code.js @@ -0,0 +1,50 @@ +'use strict'; +const common = require('../common'); +const fixtures = require('../common/fixtures'); +const assert = require('assert'); +const { spawnSync } = require('child_process'); +const { setTimeout } = require('timers/promises'); + +if (process.argv[2] === 'child') { + const test = require('node:test'); + + if (process.argv[3] === 'pass') { + test('passing test', () => { + assert.strictEqual(true, true); + }); + } else if (process.argv[3] === 'fail') { + assert.strictEqual(process.argv[3], 'fail'); + test('failing test', () => { + assert.strictEqual(true, false); + }); + } else if (process.argv[3] === 'never_ends') { + assert.strictEqual(process.argv[3], 'never_ends'); + test('never ending test', () => { + return setTimeout(100_000_000); + }); + process.kill(process.pid, 'SIGINT'); + } else assert.fail('unreachable'); +} else { + let child = spawnSync(process.execPath, [__filename, 'child', 'pass']); + assert.strictEqual(child.status, 0); + assert.strictEqual(child.signal, null); + + child = spawnSync(process.execPath, ['--test', fixtures.path('test-runner', 'subdir', 'subdir_test.js')]); + assert.strictEqual(child.status, 0); + assert.strictEqual(child.signal, null); + + child = spawnSync(process.execPath, [__filename, 'child', 'fail']); + assert.strictEqual(child.status, 1); + assert.strictEqual(child.signal, null); + + child = spawnSync(process.execPath, [__filename, 'child', 'never_ends']); + assert.strictEqual(child.status, 1); + assert.strictEqual(child.signal, null); + if (common.isWindows) { + common.printSkipMessage('signals are not supported in windows'); + } else { + const stdout = child.stdout.toString(); + assert.match(stdout, /not ok 1 - never ending test/); + assert.match(stdout, /# cancelled 1/); + } +} diff --git a/test/parallel/test-runner-import-no-scheme.js b/test/parallel/test-runner-import-no-scheme.js new file mode 100644 index 00000000000000..45dd83d0251988 --- /dev/null +++ b/test/parallel/test-runner-import-no-scheme.js @@ -0,0 +1,51 @@ +'use strict'; +const common = require('../common'); +const tmpdir = require('../common/tmpdir'); +const assert = require('assert'); +const { spawnSync } = require('child_process'); +const fs = require('fs'); +const path = require('path'); +const { createRequire } = require('module'); + +assert.throws( + () => require('test'), + common.expectsError({ code: 'MODULE_NOT_FOUND' }), +); + +(async () => { + await assert.rejects( + async () => import('test'), + common.expectsError({ code: 'ERR_MODULE_NOT_FOUND' }), + ); +})().then(common.mustCall()); + +assert.throws( + () => require.resolve('test'), + common.expectsError({ code: 'MODULE_NOT_FOUND' }), +); + +// Verify that files in node_modules can be resolved. +tmpdir.refresh(); + +const packageRoot = path.join(tmpdir.path, 'node_modules', 'test'); +const indexFile = path.join(packageRoot, 'index.js'); + +fs.mkdirSync(packageRoot, { recursive: true }); +fs.writeFileSync(indexFile, 'module.exports = { marker: 1 };'); + +function test(argv) { + const child = spawnSync(process.execPath, argv, { cwd: tmpdir.path }); + assert.strictEqual(child.status, 0); + assert.strictEqual(child.stdout.toString().trim(), '{ marker: 1 }'); +} + +test(['-e', 'console.log(require("test"))']); +test(['-e', 'import("test").then(m=>console.log(m.default))']); +test(['--input-type=module', '-e', 'import test from "test";console.log(test)']); +test(['--input-type=module', '-e', 'console.log((await import("test")).default)']); + +{ + const dummyFile = path.join(tmpdir.path, 'file.js'); + const require = createRequire(dummyFile); + assert.strictEqual(require.resolve('test'), indexFile); +} diff --git a/test/parallel/test-runner-misc.js b/test/parallel/test-runner-misc.js new file mode 100644 index 00000000000000..34abaf5c120be3 --- /dev/null +++ b/test/parallel/test-runner-misc.js @@ -0,0 +1,33 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const { spawnSync } = require('child_process'); +const { setTimeout } = require('timers/promises'); + +if (process.argv[2] === 'child') { + const test = require('node:test'); + + if (process.argv[3] === 'abortSignal') { + assert.throws(() => test({ signal: {} }), { + code: 'ERR_INVALID_ARG_TYPE', + name: 'TypeError' + }); + + let testSignal; + test({ timeout: 10 }, common.mustCall(async ({ signal }) => { + assert.strictEqual(signal.aborted, false); + testSignal = signal; + await setTimeout(50); + })).finally(common.mustCall(() => { + test(() => assert.strictEqual(testSignal.aborted, true)); + })); + } else assert.fail('unreachable'); +} else { + const child = spawnSync(process.execPath, [__filename, 'child', 'abortSignal']); + const stdout = child.stdout.toString(); + assert.match(stdout, /^# pass 1$/m); + assert.match(stdout, /^# fail 0$/m); + assert.match(stdout, /^# cancelled 1$/m); + assert.strictEqual(child.status, 1); + assert.strictEqual(child.signal, null); +} diff --git a/test/parallel/test-runner-option-validation.js b/test/parallel/test-runner-option-validation.js new file mode 100644 index 00000000000000..a6b7cb1826b166 --- /dev/null +++ b/test/parallel/test-runner-option-validation.js @@ -0,0 +1,15 @@ +'use strict'; +require('../common'); +const assert = require('assert'); +const test = require('node:test'); + +[Symbol(), {}, [], () => {}, 1n, true, '1'].forEach((timeout) => { + assert.throws(() => test({ timeout }), { code: 'ERR_INVALID_ARG_TYPE' }); +}); +[-1, -Infinity, NaN, 2 ** 33, Number.MAX_SAFE_INTEGER].forEach((timeout) => { + assert.throws(() => test({ timeout }), { code: 'ERR_OUT_OF_RANGE' }); +}); +[null, undefined, Infinity, 0, 1, 1.1].forEach((timeout) => { + // Valid values should not throw. + test({ timeout }); +}); diff --git a/test/parallel/test-runner-test-filter.js b/test/parallel/test-runner-test-filter.js new file mode 100644 index 00000000000000..b6afba22a2e814 --- /dev/null +++ b/test/parallel/test-runner-test-filter.js @@ -0,0 +1,42 @@ +// Flags: --expose-internals +'use strict'; +require('../common'); +const assert = require('assert'); +const { doesPathMatchFilter } = require('internal/test_runner/utils'); + +// Paths expected to match +[ + 'test.js', + 'test.cjs', + 'test.mjs', + 'test-foo.js', + 'test-foo.cjs', + 'test-foo.mjs', + 'foo.test.js', + 'foo.test.cjs', + 'foo.test.mjs', + 'foo-test.js', + 'foo-test.cjs', + 'foo-test.mjs', + 'foo_test.js', + 'foo_test.cjs', + 'foo_test.mjs', +].forEach((p) => { + assert.strictEqual(doesPathMatchFilter(p), true); +}); + +// Paths expected not to match +[ + 'test', + 'test.djs', + 'test.cs', + 'test.mj', + 'foo.js', + 'test-foo.sj', + 'test.foo.js', + 'test_foo.js', + 'testfoo.js', + 'foo-test1.mjs', +].forEach((p) => { + assert.strictEqual(doesPathMatchFilter(p), false); +}); diff --git a/test/parallel/test-source-map-api.js b/test/parallel/test-source-map-api.js index b8ff59e365e2e9..f66a9af94784c7 100644 --- a/test/parallel/test-source-map-api.js +++ b/test/parallel/test-source-map-api.js @@ -99,6 +99,20 @@ const { readFileSync } = require('fs'); assert.notStrictEqual(payload.sources, sourceMap.payload.sources); } +// findEntry() must return empty object instead error when +// receive a malformed mappings. +{ + const payload = JSON.parse(readFileSync( + require.resolve('../fixtures/source-map/disk.map'), 'utf8' + )); + payload.mappings = ';;;;;;;;;'; + + const sourceMap = new SourceMap(payload); + const result = sourceMap.findEntry(0, 5); + assert.strictEqual(typeof result, 'object'); + assert.strictEqual(Object.keys(result).length, 0); +} + // Test various known decodings to ensure decodeVLQ works correctly. { function makeMinimalMap(column) { diff --git a/test/parallel/test-source-map-enable.js b/test/parallel/test-source-map-enable.js index 8e4f8e3a028062..dc00cf624ae8ea 100644 --- a/test/parallel/test-source-map-enable.js +++ b/test/parallel/test-source-map-enable.js @@ -343,6 +343,22 @@ function nextdir() { assert.ok(sourceMap); } +// Does not include null for async/await with esm +// Refs: https://github.com/nodejs/node/issues/42417 +{ + const output = spawnSync(process.execPath, [ + '--enable-source-maps', + require.resolve('../fixtures/source-map/throw-async.mjs'), + ]); + // Error in original context of source content: + assert.match( + output.stderr.toString(), + /throw new Error\(message\)\r?\n.*\^/ + ); + // Rewritten stack trace: + assert.match(output.stderr.toString(), /at Throw \([^)]+throw-async\.ts:4:9\)/); +} + function getSourceMapFromCache(fixtureFile, coverageDirectory) { const jsonFiles = fs.readdirSync(coverageDirectory); for (const jsonFile of jsonFiles) { diff --git a/test/parallel/test-stack-size-limit.js b/test/parallel/test-stack-size-limit.js new file mode 100644 index 00000000000000..f66fe8527c8c5d --- /dev/null +++ b/test/parallel/test-stack-size-limit.js @@ -0,0 +1,26 @@ +'use strict'; + +require('../common'); + +const assert = require('assert'); +const { spawnSync } = require('child_process'); + +// The default --stack-size is 984, which is below Windows' default stack size +// limit of 1 MiB. However, even a slight increase would cause node to exceed +// the 1 MiB limit and thus to crash with the exit code STATUS_STACK_OVERFLOW. +// Newer versions of Node.js allow the stack size to grow to up to 8 MiB, which +// better aligns with default limits on other platforms and which is commonly +// used for browsers on Windows. +// See https://github.com/nodejs/node/issues/43630. + +const { status, signal, stderr } = spawnSync(process.execPath, [ + '--stack-size=2000', + '-e', + '(function explode() { return explode(); })()', +], { + encoding: 'utf8' +}); + +assert.strictEqual(status, 1); +assert.strictEqual(signal, null); +assert.match(stderr, /Maximum call stack size exceeded/); diff --git a/test/parallel/test-stream-asIndexedPairs.mjs b/test/parallel/test-stream-asIndexedPairs.mjs index 382ec7a8af04b6..6f577caefd28dc 100644 --- a/test/parallel/test-stream-asIndexedPairs.mjs +++ b/test/parallel/test-stream-asIndexedPairs.mjs @@ -1,6 +1,6 @@ import '../common/index.mjs'; import { Readable } from 'stream'; -import { deepStrictEqual, rejects } from 'assert'; +import { deepStrictEqual, rejects, throws } from 'assert'; { // asIndexedPairs with a synchronous stream @@ -45,3 +45,9 @@ import { deepStrictEqual, rejects } from 'assert'; await Readable.from([1, 2, 3]).asIndexedPairs({ signal }).toArray(); }, /AbortError/); } + +{ + // Error cases + throws(() => Readable.from([1]).asIndexedPairs(1), /ERR_INVALID_ARG_TYPE/); + throws(() => Readable.from([1]).asIndexedPairs({ signal: true }), /ERR_INVALID_ARG_TYPE/); +} diff --git a/test/parallel/test-stream-drop-take.js b/test/parallel/test-stream-drop-take.js index ddeb6054a78164..cb55a4f7ee1813 100644 --- a/test/parallel/test-stream-drop-take.js +++ b/test/parallel/test-stream-drop-take.js @@ -93,4 +93,10 @@ const naturals = () => from(async function*() { for (const example of invalidArgs) { throws(() => from([]).take(example).toArray(), /ERR_OUT_OF_RANGE/); } + + throws(() => Readable.from([1]).drop(1, 1), /ERR_INVALID_ARG_TYPE/); + throws(() => Readable.from([1]).drop(1, { signal: true }), /ERR_INVALID_ARG_TYPE/); + + throws(() => Readable.from([1]).take(1, 1), /ERR_INVALID_ARG_TYPE/); + throws(() => Readable.from([1]).take(1, { signal: true }), /ERR_INVALID_ARG_TYPE/); } diff --git a/test/parallel/test-stream-duplex-from.js b/test/parallel/test-stream-duplex-from.js index 6c9c59a5c82d52..ce3806ce75fce8 100644 --- a/test/parallel/test-stream-duplex-from.js +++ b/test/parallel/test-stream-duplex-from.js @@ -3,6 +3,7 @@ const common = require('../common'); const assert = require('assert'); const { Duplex, Readable, Writable, pipeline } = require('stream'); +const { Blob } = require('buffer'); { const d = Duplex.from({ @@ -144,3 +145,124 @@ const { Duplex, Readable, Writable, pipeline } = require('stream'); common.mustCall(() => {}), ); } + + +// Ensure that isDuplexNodeStream was called +{ + const duplex = new Duplex(); + assert.strictEqual(Duplex.from(duplex), duplex); +} + +// Ensure that Duplex.from works for blobs +{ + const blob = new Blob(['blob']); + const expectedByteLength = blob.size; + const duplex = Duplex.from(blob); + duplex.on('data', common.mustCall((arrayBuffer) => { + assert.strictEqual(arrayBuffer.byteLength, expectedByteLength); + })); +} + +// Ensure that given a promise rejection it emits an error +{ + const myErrorMessage = 'myCustomError'; + Duplex.from(Promise.reject(myErrorMessage)) + .on('error', common.mustCall((error) => { + assert.strictEqual(error, myErrorMessage); + })); +} + +// Ensure that given a promise rejection on an async function it emits an error +{ + const myErrorMessage = 'myCustomError'; + async function asyncFn() { + return Promise.reject(myErrorMessage); + } + + Duplex.from(asyncFn) + .on('error', common.mustCall((error) => { + assert.strictEqual(error, myErrorMessage); + })); +} + +// Ensure that Duplex.from throws an Invalid return value when function is void +{ + assert.throws(() => Duplex.from(() => {}), { + code: 'ERR_INVALID_RETURN_VALUE', + }); +} + +// Ensure data if a sub object has a readable stream it's duplexified +{ + const msg = Buffer.from('hello'); + const duplex = Duplex.from({ + readable: Readable({ + read() { + this.push(msg); + this.push(null); + } + }) + }).on('data', common.mustCall((data) => { + assert.strictEqual(data, msg); + })); + + assert.strictEqual(duplex.writable, false); +} + +// Ensure data if a sub object has a writable stream it's duplexified +{ + const msg = Buffer.from('hello'); + const duplex = Duplex.from({ + writable: Writable({ + write: common.mustCall((data) => { + assert.strictEqual(data, msg); + }) + }) + }); + + duplex.write(msg); + assert.strictEqual(duplex.readable, false); +} + +// Ensure data if a sub object has a writable and readable stream it's duplexified +{ + const msg = Buffer.from('hello'); + + const duplex = Duplex.from({ + readable: Readable({ + read() { + this.push(msg); + this.push(null); + } + }), + writable: Writable({ + write: common.mustCall((data) => { + assert.strictEqual(data, msg); + }) + }) + }); + + duplex.pipe(duplex) + .on('data', common.mustCall((data) => { + assert.strictEqual(data, msg); + assert.strictEqual(duplex.readable, true); + assert.strictEqual(duplex.writable, true); + })) + .on('end', common.mustCall()); +} + +// Ensure that given writable stream that throws an error it calls destroy +{ + const myErrorMessage = 'error!'; + const duplex = Duplex.from(Writable({ + write(chunk, enc, cb) { + cb(myErrorMessage); + } + })); + + duplex.on('error', common.mustCall((msg) => { + assert.strictEqual(msg, myErrorMessage); + })); + + duplex.write('test'); +} diff --git a/test/parallel/test-stream-filter.js b/test/parallel/test-stream-filter.js index 494c94f02f8cb0..e434eb8c84ef9b 100644 --- a/test/parallel/test-stream-filter.js +++ b/test/parallel/test-stream-filter.js @@ -5,6 +5,7 @@ const { Readable, } = require('stream'); const assert = require('assert'); +const { once } = require('events'); const { setTimeout } = require('timers/promises'); { @@ -46,13 +47,80 @@ const { setTimeout } = require('timers/promises'); })().then(common.mustCall()); } +{ + // Filter works on an infinite stream + const stream = Readable.from(async function* () { + while (true) yield 1; + }()).filter(common.mustCall(async (x) => { + return x < 3; + }, 5)); + (async () => { + let i = 1; + for await (const item of stream) { + assert.strictEqual(item, 1); + if (++i === 5) break; + } + })().then(common.mustCall()); +} + +{ + // Filter works on constructor created streams + let i = 0; + const stream = new Readable({ + read() { + if (i === 10) { + this.push(null); + return; + } + this.push(Uint8Array.from([i])); + i++; + }, + highWaterMark: 0, + }).filter(common.mustCall(async ([x]) => { + return x !== 5; + }, 10)); + (async () => { + const result = (await stream.toArray()).map((x) => x[0]); + const expected = [...Array(10).keys()].filter((x) => x !== 5); + assert.deepStrictEqual(result, expected); + })().then(common.mustCall()); +} + +{ + // Throwing an error during `filter` (sync) + const stream = Readable.from([1, 2, 3, 4, 5]).filter((x) => { + if (x === 3) { + throw new Error('boom'); + } + return true; + }); + assert.rejects( + stream.map((x) => x + x).toArray(), + /boom/, + ).then(common.mustCall()); +} + +{ + // Throwing an error during `filter` (async) + const stream = Readable.from([1, 2, 3, 4, 5]).filter(async (x) => { + if (x === 3) { + throw new Error('boom'); + } + return true; + }); + assert.rejects( + stream.filter(() => true).toArray(), + /boom/, + ).then(common.mustCall()); +} + { // Concurrency + AbortSignal const ac = new AbortController(); let calls = 0; const stream = Readable.from([1, 2, 3, 4]).filter(async (_, { signal }) => { calls++; - await setTimeout(100, { signal }); + await once(signal, 'abort'); }, { signal: ac.signal, concurrency: 2 }); // pump assert.rejects(async () => { @@ -98,3 +166,11 @@ const { setTimeout } = require('timers/promises'); const stream = Readable.from([1, 2, 3, 4, 5]).filter((x) => true); assert.strictEqual(stream.readable, true); } +{ + const stream = Readable.from([1, 2, 3, 4, 5]); + Object.defineProperty(stream, 'map', { + value: common.mustNotCall(() => {}), + }); + // Check that map isn't getting called. + stream.filter(() => true); +} diff --git a/test/parallel/test-stream-flatMap.js b/test/parallel/test-stream-flatMap.js index 952043b07b35f7..07c534a9c1f481 100644 --- a/test/parallel/test-stream-flatMap.js +++ b/test/parallel/test-stream-flatMap.js @@ -114,9 +114,18 @@ function oneTo5() { concurrency: 'Foo' }), /ERR_OUT_OF_RANGE/); assert.throws(() => Readable.from([1]).flatMap((x) => x, 1), /ERR_INVALID_ARG_TYPE/); + assert.throws(() => Readable.from([1]).flatMap((x) => x, { signal: true }), /ERR_INVALID_ARG_TYPE/); } { // Test result is a Readable const stream = oneTo5().flatMap((x) => x); assert.strictEqual(stream.readable, true); } +{ + const stream = oneTo5(); + Object.defineProperty(stream, 'map', { + value: common.mustNotCall(() => {}), + }); + // Check that map isn't getting called. + stream.flatMap(() => true); +} diff --git a/test/parallel/test-stream-forEach.js b/test/parallel/test-stream-forEach.js index ae9dfd431f9f37..e3678352c41591 100644 --- a/test/parallel/test-stream-forEach.js +++ b/test/parallel/test-stream-forEach.js @@ -129,3 +129,11 @@ const { once } = require('events'); const stream = Readable.from([1, 2, 3, 4, 5]).forEach((_) => true); assert.strictEqual(typeof stream.then, 'function'); } +{ + const stream = Readable.from([1, 2, 3, 4, 5]); + Object.defineProperty(stream, 'map', { + value: common.mustNotCall(() => {}), + }); + // Check that map isn't getting called. + stream.forEach(() => true); +} diff --git a/test/parallel/test-stream-iterator-helpers-test262-tests.mjs b/test/parallel/test-stream-iterator-helpers-test262-tests.mjs new file mode 100644 index 00000000000000..8a153fc2fc283e --- /dev/null +++ b/test/parallel/test-stream-iterator-helpers-test262-tests.mjs @@ -0,0 +1,168 @@ +import { mustCall } from '../common/index.mjs'; +import { Readable } from 'stream'; +import assert from 'assert'; + +// These tests are manually ported from the draft PR for the test262 test suite +// Authored by Rick Waldron in https://github.com/tc39/test262/pull/2818/files + +// test262 license: +// The << Software identified by reference to the Ecma Standard* ("Software)">> +// is protected by copyright and is being made available under the +// "BSD License", included below. This Software may be subject to third party +// rights (rights from parties other than Ecma International), including patent +// rights, and no licenses under such third party rights are granted under this +// license even if the third party concerned is a member of Ecma International. +// SEE THE ECMA CODE OF CONDUCT IN PATENT MATTERS AVAILABLE AT +// http://www.ecma-international.org/memento/codeofconduct.htm FOR INFORMATION +// REGARDING THE LICENSING OF PATENT CLAIMS THAT ARE REQUIRED TO IMPLEMENT ECMA +// INTERNATIONAL STANDARDS* + +// Copyright (C) 2012-2013 Ecma International +// All rights reserved. + +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. Neither the name of the authors nor Ecma International may be used to +// endorse or promote products derived from this software without specific +// prior written permission. + +// THIS SOFTWARE IS PROVIDED BY THE ECMA INTERNATIONAL "AS IS" AND ANY EXPRESS +// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN +// NO EVENT SHALL ECMA INTERNATIONAL BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// * Ecma International Standards hereafter means Ecma International Standards +// as well as Ecma Technical Reports + + +// Note all the tests that check AsyncIterator's prototype itself and things +// that happen before stream conversion were not ported. +{ + // asIndexedPairs/is-function + assert.strictEqual(typeof Readable.prototype.asIndexedPairs, 'function'); + // asIndexedPairs/indexed-pairs.js + const iterator = Readable.from([0, 1]); + const indexedPairs = iterator.asIndexedPairs(); + + for await (const [i, v] of indexedPairs) { + assert.strictEqual(i, v); + } + // asIndexedPairs/length.js + assert.strictEqual(Readable.prototype.asIndexedPairs.length, 0); + // asIndexedPairs/name.js + assert.strictEqual(Readable.prototype.asIndexedPairs.name, 'asIndexedPairs'); + const descriptor = Object.getOwnPropertyDescriptor( + Readable.prototype, + 'asIndexedPairs' + ); + assert.strictEqual(descriptor.enumerable, false); + assert.strictEqual(descriptor.configurable, true); + assert.strictEqual(descriptor.writable, true); +} +{ + // drop/length + assert.strictEqual(Readable.prototype.drop.length, 1); + const descriptor = Object.getOwnPropertyDescriptor( + Readable.prototype, + 'drop' + ); + assert.strictEqual(descriptor.enumerable, false); + assert.strictEqual(descriptor.configurable, true); + assert.strictEqual(descriptor.writable, true); + // drop/limit-equals-total + const iterator = Readable.from([1, 2]).drop(2); + const result = await iterator[Symbol.asyncIterator]().next(); + assert.deepStrictEqual(result, { done: true, value: undefined }); + // drop/limit-greater-than-total.js + const iterator2 = Readable.from([1, 2]).drop(3); + const result2 = await iterator2[Symbol.asyncIterator]().next(); + assert.deepStrictEqual(result2, { done: true, value: undefined }); + // drop/limit-less-than-total.js + const iterator3 = Readable.from([1, 2]).drop(1); + const result3 = await iterator3[Symbol.asyncIterator]().next(); + assert.deepStrictEqual(result3, { done: false, value: 2 }); + // drop/limit-rangeerror + assert.throws(() => Readable.from([1]).drop(-1), RangeError); + assert.throws(() => { + Readable.from([1]).drop({ + valueOf() { + throw new Error('boom'); + } + }); + }, /boom/); + // drop/limit-tointeger + const two = await Readable.from([1, 2]).drop({ valueOf: () => 1 }).toArray(); + assert.deepStrictEqual(two, [2]); + // drop/name + assert.strictEqual(Readable.prototype.drop.name, 'drop'); + // drop/non-constructible + assert.throws(() => new Readable.prototype.drop(1), TypeError); + // drop/proto + const proto = Object.getPrototypeOf(Readable.prototype.drop); + assert.strictEqual(proto, Function.prototype); +} +{ + // every/abrupt-iterator-close + const stream = Readable.from([1, 2, 3]); + const e = new Error(); + await assert.rejects(stream.every(mustCall(() => { + throw e; + }, 1)), e); +} +{ + // every/callable-fn + await assert.rejects(Readable.from([1, 2]).every({}), TypeError); +} +{ + // every/callable + Readable.prototype.every.call(Readable.from([]), () => {}); + // eslint-disable-next-line array-callback-return + Readable.from([]).every(() => {}); + assert.throws(() => { + const r = Readable.from([]); + new r.every(() => {}); + }, TypeError); +} + +{ + // every/false + const iterator = Readable.from([1, 2, 3]); + const result = await iterator.every((v) => v === 1); + assert.strictEqual(result, false); +} +{ + // every/every + const iterator = Readable.from([1, 2, 3]); + const result = await iterator.every((v) => true); + assert.strictEqual(result, true); +} + +{ + // every/is-function + assert.strictEqual(typeof Readable.prototype.every, 'function'); +} +{ + // every/length + assert.strictEqual(Readable.prototype.every.length, 1); + // every/name + assert.strictEqual(Readable.prototype.every.name, 'every'); + // every/propdesc + const descriptor = Object.getOwnPropertyDescriptor( + Readable.prototype, + 'every' + ); + assert.strictEqual(descriptor.enumerable, false); + assert.strictEqual(descriptor.configurable, true); + assert.strictEqual(descriptor.writable, true); +} diff --git a/test/parallel/test-stream-map.js b/test/parallel/test-stream-map.js index 22e7e7f4e0da2c..ba3f1584219802 100644 --- a/test/parallel/test-stream-map.js +++ b/test/parallel/test-stream-map.js @@ -91,6 +91,7 @@ const { setTimeout } = require('timers/promises'); concurrency: 'Foo' }), /ERR_OUT_OF_RANGE/); assert.throws(() => Readable.from([1]).map((x) => x, 1), /ERR_INVALID_ARG_TYPE/); + assert.throws(() => Readable.from([1]).map((x) => x, { signal: true }), /ERR_INVALID_ARG_TYPE/); } { // Test result is a Readable diff --git a/test/parallel/test-stream-passthrough-drain.js b/test/parallel/test-stream-passthrough-drain.js index f5c98947e21e2e..244bf874073733 100644 --- a/test/parallel/test-stream-passthrough-drain.js +++ b/test/parallel/test-stream-passthrough-drain.js @@ -1,8 +1,10 @@ 'use strict'; const common = require('../common'); +const assert = require('assert'); const { PassThrough } = require('stream'); const pt = new PassThrough({ highWaterMark: 0 }); pt.on('drain', common.mustCall()); -pt.write('hello'); +assert(!pt.write('hello1')); +pt.read(); pt.read(); diff --git a/test/parallel/test-stream-readable-async-iterators.js b/test/parallel/test-stream-readable-async-iterators.js index 3bbb4dbd69abd9..285d6131c7efb5 100644 --- a/test/parallel/test-stream-readable-async-iterators.js +++ b/test/parallel/test-stream-readable-async-iterators.js @@ -62,7 +62,7 @@ async function tests() { }); await (async () => { - for await (const d of readable) { // eslint-disable-line no-unused-vars + for await (const d of readable) { return; } })(); diff --git a/test/parallel/test-stream-reduce.js b/test/parallel/test-stream-reduce.js index a8b41efa28415d..56271c5e232627 100644 --- a/test/parallel/test-stream-reduce.js +++ b/test/parallel/test-stream-reduce.js @@ -121,6 +121,8 @@ function sum(p, c) { // Error cases assert.rejects(() => Readable.from([]).reduce(1), /TypeError/); assert.rejects(() => Readable.from([]).reduce('5'), /TypeError/); + assert.rejects(() => Readable.from([]).reduce((x, y) => x + y, 0, 1), /ERR_INVALID_ARG_TYPE/); + assert.rejects(() => Readable.from([]).reduce((x, y) => x + y, 0, { signal: true }), /ERR_INVALID_ARG_TYPE/); } { diff --git a/test/parallel/test-stream-some-every.js b/test/parallel/test-stream-some-every.js deleted file mode 100644 index c2be5ea955bcd2..00000000000000 --- a/test/parallel/test-stream-some-every.js +++ /dev/null @@ -1,95 +0,0 @@ -'use strict'; - -const common = require('../common'); -const { - Readable, -} = require('stream'); -const assert = require('assert'); - -function oneTo5() { - return Readable.from([1, 2, 3, 4, 5]); -} - -function oneTo5Async() { - return oneTo5().map(async (x) => { - await Promise.resolve(); - return x; - }); -} -{ - // Some and every work with a synchronous stream and predicate - (async () => { - assert.strictEqual(await oneTo5().some((x) => x > 3), true); - assert.strictEqual(await oneTo5().every((x) => x > 3), false); - assert.strictEqual(await oneTo5().some((x) => x > 6), false); - assert.strictEqual(await oneTo5().every((x) => x < 6), true); - assert.strictEqual(await Readable.from([]).some((x) => true), false); - assert.strictEqual(await Readable.from([]).every((x) => true), true); - })().then(common.mustCall()); -} - -{ - // Some and every work with an asynchronous stream and synchronous predicate - (async () => { - assert.strictEqual(await oneTo5Async().some((x) => x > 3), true); - assert.strictEqual(await oneTo5Async().every((x) => x > 3), false); - assert.strictEqual(await oneTo5Async().some((x) => x > 6), false); - assert.strictEqual(await oneTo5Async().every((x) => x < 6), true); - })().then(common.mustCall()); -} - -{ - // Some and every work on asynchronous streams with an asynchronous predicate - (async () => { - assert.strictEqual(await oneTo5().some(async (x) => x > 3), true); - assert.strictEqual(await oneTo5().every(async (x) => x > 3), false); - assert.strictEqual(await oneTo5().some(async (x) => x > 6), false); - assert.strictEqual(await oneTo5().every(async (x) => x < 6), true); - })().then(common.mustCall()); -} - -{ - // Some and every short circuit - (async () => { - await oneTo5().some(common.mustCall((x) => x > 2, 3)); - await oneTo5().every(common.mustCall((x) => x < 3, 3)); - // When short circuit isn't possible the whole stream is iterated - await oneTo5().some(common.mustCall((x) => x > 6, 5)); - // The stream is destroyed afterwards - const stream = oneTo5(); - await stream.some(common.mustCall((x) => x > 2, 3)); - assert.strictEqual(stream.destroyed, true); - })().then(common.mustCall()); -} - -{ - // Support for AbortSignal - const ac = new AbortController(); - assert.rejects(Readable.from([1, 2, 3]).some( - () => new Promise(() => {}), - { signal: ac.signal } - ), { - name: 'AbortError', - }).then(common.mustCall()); - ac.abort(); -} -{ - // Support for pre-aborted AbortSignal - assert.rejects(Readable.from([1, 2, 3]).some( - () => new Promise(() => {}), - { signal: AbortSignal.abort() } - ), { - name: 'AbortError', - }).then(common.mustCall()); -} -{ - // Error cases - assert.rejects(async () => { - await Readable.from([1]).every(1); - }, /ERR_INVALID_ARG_TYPE/).then(common.mustCall()); - assert.rejects(async () => { - await Readable.from([1]).every((x) => x, { - concurrency: 'Foo' - }); - }, /ERR_OUT_OF_RANGE/).then(common.mustCall()); -} diff --git a/test/parallel/test-stream-some-find-every.mjs b/test/parallel/test-stream-some-find-every.mjs new file mode 100644 index 00000000000000..c4637d41deb181 --- /dev/null +++ b/test/parallel/test-stream-some-find-every.mjs @@ -0,0 +1,172 @@ +import * as common from '../common/index.mjs'; +import { setTimeout } from 'timers/promises'; +import { Readable } from 'stream'; +import assert from 'assert'; + + +function oneTo5() { + return Readable.from([1, 2, 3, 4, 5]); +} + +function oneTo5Async() { + return oneTo5().map(async (x) => { + await Promise.resolve(); + return x; + }); +} +{ + // Some, find, and every work with a synchronous stream and predicate + assert.strictEqual(await oneTo5().some((x) => x > 3), true); + assert.strictEqual(await oneTo5().every((x) => x > 3), false); + assert.strictEqual(await oneTo5().find((x) => x > 3), 4); + assert.strictEqual(await oneTo5().some((x) => x > 6), false); + assert.strictEqual(await oneTo5().every((x) => x < 6), true); + assert.strictEqual(await oneTo5().find((x) => x > 6), undefined); + assert.strictEqual(await Readable.from([]).some(() => true), false); + assert.strictEqual(await Readable.from([]).every(() => true), true); + assert.strictEqual(await Readable.from([]).find(() => true), undefined); +} + +{ + // Some, find, and every work with an asynchronous stream and synchronous predicate + assert.strictEqual(await oneTo5Async().some((x) => x > 3), true); + assert.strictEqual(await oneTo5Async().every((x) => x > 3), false); + assert.strictEqual(await oneTo5Async().find((x) => x > 3), 4); + assert.strictEqual(await oneTo5Async().some((x) => x > 6), false); + assert.strictEqual(await oneTo5Async().every((x) => x < 6), true); + assert.strictEqual(await oneTo5Async().find((x) => x > 6), undefined); +} + +{ + // Some, find, and every work on synchronous streams with an asynchronous predicate + assert.strictEqual(await oneTo5().some(async (x) => x > 3), true); + assert.strictEqual(await oneTo5().every(async (x) => x > 3), false); + assert.strictEqual(await oneTo5().find(async (x) => x > 3), 4); + assert.strictEqual(await oneTo5().some(async (x) => x > 6), false); + assert.strictEqual(await oneTo5().every(async (x) => x < 6), true); + assert.strictEqual(await oneTo5().find(async (x) => x > 6), undefined); +} + +{ + // Some, find, and every work on asynchronous streams with an asynchronous predicate + assert.strictEqual(await oneTo5Async().some(async (x) => x > 3), true); + assert.strictEqual(await oneTo5Async().every(async (x) => x > 3), false); + assert.strictEqual(await oneTo5Async().find(async (x) => x > 3), 4); + assert.strictEqual(await oneTo5Async().some(async (x) => x > 6), false); + assert.strictEqual(await oneTo5Async().every(async (x) => x < 6), true); + assert.strictEqual(await oneTo5Async().find(async (x) => x > 6), undefined); +} + +{ + async function checkDestroyed(stream) { + await setTimeout(); + assert.strictEqual(stream.destroyed, true); + } + + { + // Some, find, and every short circuit + const someStream = oneTo5(); + await someStream.some(common.mustCall((x) => x > 2, 3)); + await checkDestroyed(someStream); + + const everyStream = oneTo5(); + await everyStream.every(common.mustCall((x) => x < 3, 3)); + await checkDestroyed(everyStream); + + const findStream = oneTo5(); + await findStream.find(common.mustCall((x) => x > 1, 2)); + await checkDestroyed(findStream); + + // When short circuit isn't possible the whole stream is iterated + await oneTo5().some(common.mustCall(() => false, 5)); + await oneTo5().every(common.mustCall(() => true, 5)); + await oneTo5().find(common.mustCall(() => false, 5)); + } + + { + // Some, find, and every short circuit async stream/predicate + const someStream = oneTo5Async(); + await someStream.some(common.mustCall(async (x) => x > 2, 3)); + await checkDestroyed(someStream); + + const everyStream = oneTo5Async(); + await everyStream.every(common.mustCall(async (x) => x < 3, 3)); + await checkDestroyed(everyStream); + + const findStream = oneTo5Async(); + await findStream.find(common.mustCall(async (x) => x > 1, 2)); + await checkDestroyed(findStream); + + // When short circuit isn't possible the whole stream is iterated + await oneTo5Async().some(common.mustCall(async () => false, 5)); + await oneTo5Async().every(common.mustCall(async () => true, 5)); + await oneTo5Async().find(common.mustCall(async () => false, 5)); + } +} + +{ + // Concurrency doesn't affect which value is found. + const found = await Readable.from([1, 2]).find(async (val) => { + if (val === 1) { + await setTimeout(100); + } + return true; + }, { concurrency: 2 }); + assert.strictEqual(found, 1); +} + +{ + // Support for AbortSignal + for (const op of ['some', 'every', 'find']) { + { + const ac = new AbortController(); + assert.rejects(Readable.from([1, 2, 3])[op]( + () => new Promise(() => { }), + { signal: ac.signal } + ), { + name: 'AbortError', + }, `${op} should abort correctly with sync abort`).then(common.mustCall()); + ac.abort(); + } + { + // Support for pre-aborted AbortSignal + assert.rejects(Readable.from([1, 2, 3])[op]( + () => new Promise(() => { }), + { signal: AbortSignal.abort() } + ), { + name: 'AbortError', + }, `${op} should abort with pre-aborted abort controller`).then(common.mustCall()); + } + } +} +{ + // Error cases + for (const op of ['some', 'every', 'find']) { + assert.rejects(async () => { + await Readable.from([1])[op](1); + }, /ERR_INVALID_ARG_TYPE/, `${op} should throw for invalid function`).then(common.mustCall()); + assert.rejects(async () => { + await Readable.from([1])[op]((x) => x, { + concurrency: 'Foo' + }); + }, /ERR_OUT_OF_RANGE/, `${op} should throw for invalid concurrency`).then(common.mustCall()); + assert.rejects(async () => { + await Readable.from([1])[op]((x) => x, 1); + }, /ERR_INVALID_ARG_TYPE/, `${op} should throw for invalid concurrency`).then(common.mustCall()); + assert.rejects(async () => { + await Readable.from([1])[op]((x) => x, { + signal: true + }); + }, /ERR_INVALID_ARG_TYPE/, `${op} should throw for invalid signal`).then(common.mustCall()); + } +} +{ + for (const op of ['some', 'every', 'find']) { + const stream = oneTo5(); + Object.defineProperty(stream, 'map', { + value: common.mustNotCall(() => {}), + }); + // Check that map isn't getting called. + stream[op](() => {}); + } +} diff --git a/test/parallel/test-stream-toArray.js b/test/parallel/test-stream-toArray.js index 3bd15e7c0fbf34..5c86410ed74c09 100644 --- a/test/parallel/test-stream-toArray.js +++ b/test/parallel/test-stream-toArray.js @@ -24,14 +24,16 @@ const assert = require('assert'); } { - // Works on a non-object-mode stream and flattens it + // Works on a non-object-mode stream (async () => { + const firstBuffer = Buffer.from([1, 2, 3]); + const secondBuffer = Buffer.from([4, 5, 6]); const stream = Readable.from( - [Buffer.from([1, 2, 3]), Buffer.from([4, 5, 6])] - , { objectMode: false }); + [firstBuffer, secondBuffer], + { objectMode: false }); const result = await stream.toArray(); - assert.strictEqual(Buffer.isBuffer(result), true); - assert.deepStrictEqual(Array.from(result), [1, 2, 3, 4, 5, 6]); + assert.strictEqual(Array.isArray(result), true); + assert.deepStrictEqual(result, [firstBuffer, secondBuffer]); })().then(common.mustCall()); } @@ -67,7 +69,7 @@ const assert = require('assert'); }, { name: 'AbortError', }).then(common.mustCall(() => { - // Only stops toArray, does not destory the stream + // Only stops toArray, does not destroy the stream assert(stream.destroyed, false); })); ac.abort(); @@ -77,3 +79,15 @@ const assert = require('assert'); const result = Readable.from([1, 2, 3, 4, 5]).toArray(); assert.strictEqual(result instanceof Promise, true); } +{ + // Error cases + assert.rejects(async () => { + await Readable.from([1]).toArray(1); + }, /ERR_INVALID_ARG_TYPE/).then(common.mustCall()); + + assert.rejects(async () => { + await Readable.from([1]).toArray({ + signal: true + }); + }, /ERR_INVALID_ARG_TYPE/).then(common.mustCall()); +} diff --git a/test/parallel/test-stream-transform-hwm0.js b/test/parallel/test-stream-transform-hwm0.js new file mode 100644 index 00000000000000..8e8971f21fa472 --- /dev/null +++ b/test/parallel/test-stream-transform-hwm0.js @@ -0,0 +1,28 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const { Transform } = require('stream'); + +const t = new Transform({ + objectMode: true, highWaterMark: 0, + transform(chunk, enc, callback) { + process.nextTick(() => callback(null, chunk, enc)); + } +}); + +assert.strictEqual(t.write(1), false); +t.on('drain', common.mustCall(() => { + assert.strictEqual(t.write(2), false); + t.end(); +})); + +t.once('readable', common.mustCall(() => { + assert.strictEqual(t.read(), 1); + setImmediate(common.mustCall(() => { + assert.strictEqual(t.read(), null); + t.once('readable', common.mustCall(() => { + assert.strictEqual(t.read(), 2); + })); + })); +})); diff --git a/test/parallel/test-stream-transform-split-highwatermark.js b/test/parallel/test-stream-transform-split-highwatermark.js index 22d13fd3c3b0e3..b6255c704710ac 100644 --- a/test/parallel/test-stream-transform-split-highwatermark.js +++ b/test/parallel/test-stream-transform-split-highwatermark.js @@ -20,10 +20,6 @@ testTransform(666, 777, { writableHighWaterMark: 777, }); -// test 0 overriding defaultHwm -testTransform(0, DEFAULT, { readableHighWaterMark: 0 }); -testTransform(DEFAULT, 0, { writableHighWaterMark: 0 }); - // Test highWaterMark overriding testTransform(555, 555, { highWaterMark: 555, @@ -39,21 +35,6 @@ testTransform(555, 555, { writableHighWaterMark: 777, }); -// Test highWaterMark = 0 overriding -testTransform(0, 0, { - highWaterMark: 0, - readableHighWaterMark: 666, -}); -testTransform(0, 0, { - highWaterMark: 0, - writableHighWaterMark: 777, -}); -testTransform(0, 0, { - highWaterMark: 0, - readableHighWaterMark: 666, - writableHighWaterMark: 777, -}); - // Test undefined, null [undefined, null].forEach((v) => { testTransform(DEFAULT, DEFAULT, { readableHighWaterMark: v }); diff --git a/test/parallel/test-stream-writable-aborted.js b/test/parallel/test-stream-writable-aborted.js new file mode 100644 index 00000000000000..01d638115bd106 --- /dev/null +++ b/test/parallel/test-stream-writable-aborted.js @@ -0,0 +1,26 @@ +'use strict'; + +require('../common'); +const assert = require('assert'); +const { Writable } = require('stream'); + +{ + const writable = new Writable({ + write() { + } + }); + assert.strictEqual(writable.writableAborted, false); + writable.destroy(); + assert.strictEqual(writable.writableAborted, true); +} + +{ + const writable = new Writable({ + write() { + } + }); + assert.strictEqual(writable.writableAborted, false); + writable.end(); + writable.destroy(); + assert.strictEqual(writable.writableAborted, true); +} diff --git a/test/parallel/test-stream-writable-change-default-encoding.js b/test/parallel/test-stream-writable-change-default-encoding.js index 3fb9796251c16d..94a892567c1b21 100644 --- a/test/parallel/test-stream-writable-change-default-encoding.js +++ b/test/parallel/test-stream-writable-change-default-encoding.js @@ -68,7 +68,7 @@ assert.throws(() => { message: 'Unknown encoding: {}' }); -(function checkVairableCaseEncoding() { +(function checkVariableCaseEncoding() { const m = new MyWritable(function(isBuffer, type, enc) { assert.strictEqual(enc, 'ascii'); }, { decodeStrings: false }); diff --git a/test/parallel/test-timers-immediate-promisified.js b/test/parallel/test-timers-immediate-promisified.js index 65c8411f1b2ffd..5808312b564e48 100644 --- a/test/parallel/test-timers-immediate-promisified.js +++ b/test/parallel/test-timers-immediate-promisified.js @@ -97,3 +97,10 @@ process.on('multipleResolves', common.mustNotCall()); assert.strictEqual(stderr, ''); })); } + +(async () => { + const signal = AbortSignal.abort('boom'); + await assert.rejects(timerPromises.setImmediate(undefined, { signal }), { + cause: 'boom', + }); +})().then(common.mustCall()); diff --git a/test/parallel/test-timers-interval-promisified.js b/test/parallel/test-timers-interval-promisified.js index 28a0d0b47cd182..e6550445f142eb 100644 --- a/test/parallel/test-timers-interval-promisified.js +++ b/test/parallel/test-timers-interval-promisified.js @@ -246,3 +246,15 @@ process.on('multipleResolves', common.mustNotCall()); setPromiseTimeout(time_unit * 3).then(() => post = true), ]).then(common.mustCall()); } + +(async () => { + const signal = AbortSignal.abort('boom'); + try { + const iterable = timerPromises.setInterval(2, undefined, { signal }); + // eslint-disable-next-line no-unused-vars, no-empty + for await (const _ of iterable) { } + assert.fail('should have failed'); + } catch (err) { + assert.strictEqual(err.cause, 'boom'); + } +})().then(common.mustCall()); diff --git a/test/parallel/test-timers-timeout-promisified.js b/test/parallel/test-timers-timeout-promisified.js index 0b9a6b6f19a1c2..4e3881acec1ce2 100644 --- a/test/parallel/test-timers-timeout-promisified.js +++ b/test/parallel/test-timers-timeout-promisified.js @@ -97,3 +97,10 @@ process.on('multipleResolves', common.mustNotCall()); assert.strictEqual(stderr, ''); })); } + +(async () => { + const signal = AbortSignal.abort('boom'); + await assert.rejects(timerPromises.setTimeout(1, undefined, { signal }), { + cause: 'boom', + }); +})().then(common.mustCall()); diff --git a/test/parallel/test-tls-basic-validations.js b/test/parallel/test-tls-basic-validations.js index 67058daf158cd0..4a3aab314680ac 100644 --- a/test/parallel/test-tls-basic-validations.js +++ b/test/parallel/test-tls-basic-validations.js @@ -103,8 +103,11 @@ assert.throws( const inputBuffer = Buffer.from(arrayBufferViewStr.repeat(8), 'utf8'); for (const expectView of common.getArrayBufferViews(inputBuffer)) { const out = {}; + const expected = Buffer.from(expectView.buffer.slice(), + expectView.byteOffset, + expectView.byteLength); tls.convertALPNProtocols(expectView, out); - assert(out.ALPNProtocols.equals(Buffer.from(expectView))); + assert(out.ALPNProtocols.equals(expected)); } } diff --git a/test/parallel/test-tls-client-getephemeralkeyinfo.js b/test/parallel/test-tls-client-getephemeralkeyinfo.js index 73ac215102ddbb..95f232de637c47 100644 --- a/test/parallel/test-tls-client-getephemeralkeyinfo.js +++ b/test/parallel/test-tls-client-getephemeralkeyinfo.js @@ -23,7 +23,8 @@ function test(size, type, name, cipher) { const options = { key: key, cert: cert, - ciphers: cipher + ciphers: cipher, + maxVersion: 'TLSv1.2', }; if (name) options.ecdhCurve = name; diff --git a/test/parallel/test-tls-client-mindhsize.js b/test/parallel/test-tls-client-mindhsize.js index a6fbc67bd88361..2b243575071e1a 100644 --- a/test/parallel/test-tls-client-mindhsize.js +++ b/test/parallel/test-tls-client-mindhsize.js @@ -41,7 +41,8 @@ function test(size, err, next) { const client = tls.connect({ minDHSize: 2048, port: this.address().port, - rejectUnauthorized: false + rejectUnauthorized: false, + maxVersion: 'TLSv1.2', }, function() { nsuccess++; server.close(); diff --git a/test/parallel/test-tls-dhe.js b/test/parallel/test-tls-dhe.js index ef645ce1b6c624..0d531a3d6f0179 100644 --- a/test/parallel/test-tls-dhe.js +++ b/test/parallel/test-tls-dhe.js @@ -53,7 +53,8 @@ function test(keylen, expectedCipher, cb) { key: key, cert: cert, ciphers: ciphers, - dhparam: loadDHParam(keylen) + dhparam: loadDHParam(keylen), + maxVersion: 'TLSv1.2', }; const server = tls.createServer(options, function(conn) { diff --git a/test/parallel/test-tls-ecdh-auto.js b/test/parallel/test-tls-ecdh-auto.js index 7b535ecd3a18f0..1ca5c22335c850 100644 --- a/test/parallel/test-tls-ecdh-auto.js +++ b/test/parallel/test-tls-ecdh-auto.js @@ -23,7 +23,8 @@ const options = { key: loadPEM('agent2-key'), cert: loadPEM('agent2-cert'), ciphers: '-ALL:ECDHE-RSA-AES128-SHA256', - ecdhCurve: 'auto' + ecdhCurve: 'auto', + maxVersion: 'TLSv1.2', }; const reply = 'I AM THE WALRUS'; // Something recognizable diff --git a/test/parallel/test-tls-ecdh-multiple.js b/test/parallel/test-tls-ecdh-multiple.js index 25e6314a54a58d..3cf02701f4dc19 100644 --- a/test/parallel/test-tls-ecdh-multiple.js +++ b/test/parallel/test-tls-ecdh-multiple.js @@ -23,7 +23,8 @@ const options = { key: loadPEM('agent2-key'), cert: loadPEM('agent2-cert'), ciphers: '-ALL:ECDHE-RSA-AES128-SHA256', - ecdhCurve: 'secp256k1:prime256v1:secp521r1' + ecdhCurve: 'secp256k1:prime256v1:secp521r1', + maxVersion: 'TLSv1.2', }; const reply = 'I AM THE WALRUS'; // Something recognizable diff --git a/test/parallel/test-tls-ecdh.js b/test/parallel/test-tls-ecdh.js index c0d2625a9a6168..8c879f850c9b8d 100644 --- a/test/parallel/test-tls-ecdh.js +++ b/test/parallel/test-tls-ecdh.js @@ -38,7 +38,8 @@ const options = { key: fixtures.readKey('agent2-key.pem'), cert: fixtures.readKey('agent2-cert.pem'), ciphers: '-ALL:ECDHE-RSA-AES128-SHA256', - ecdhCurve: 'prime256v1' + ecdhCurve: 'prime256v1', + maxVersion: 'TLSv1.2' }; const reply = 'I AM THE WALRUS'; // Something recognizable diff --git a/test/parallel/test-tls-env-extra-ca-file-load.js b/test/parallel/test-tls-env-extra-ca-file-load.js index 75d7c17c1f1ee3..c66499a55d00e4 100644 --- a/test/parallel/test-tls-env-extra-ca-file-load.js +++ b/test/parallel/test-tls-env-extra-ca-file-load.js @@ -20,6 +20,8 @@ if (process.argv[2] !== 'child') { const NODE_EXTRA_CA_CERTS = fixtures.path('keys', 'ca1-cert.pem'); const extendsEnv = (obj) => ({ ...process.env, ...obj }); + // Remove any pre-existing extra CA certs. + delete process.env.NODE_EXTRA_CA_CERTS; [ extendsEnv({ CHILD_USE_EXTRA_CA_CERTS: 'yes', NODE_EXTRA_CA_CERTS }), extendsEnv({ CHILD_USE_EXTRA_CA_CERTS: 'no' }), diff --git a/test/parallel/test-tls-getcipher.js b/test/parallel/test-tls-getcipher.js index 744276aa59bf37..2a234d59016c1c 100644 --- a/test/parallel/test-tls-getcipher.js +++ b/test/parallel/test-tls-getcipher.js @@ -48,7 +48,8 @@ server.listen(0, '127.0.0.1', common.mustCall(function() { host: '127.0.0.1', port: this.address().port, ciphers: 'AES128-SHA256', - rejectUnauthorized: false + rejectUnauthorized: false, + maxVersion: 'TLSv1.2', }, common.mustCall(function() { const cipher = this.getCipher(); assert.strictEqual(cipher.name, 'AES128-SHA256'); @@ -62,7 +63,8 @@ server.listen(0, '127.0.0.1', common.mustCall(function() { host: '127.0.0.1', port: this.address().port, ciphers: 'ECDHE-RSA-AES128-GCM-SHA256', - rejectUnauthorized: false + rejectUnauthorized: false, + maxVersion: 'TLSv1.2', }, common.mustCall(function() { const cipher = this.getCipher(); assert.strictEqual(cipher.name, 'ECDHE-RSA-AES128-GCM-SHA256'); diff --git a/test/parallel/test-tls-multi-key.js b/test/parallel/test-tls-multi-key.js index b9eaa05d59feb6..22a80d9d377727 100644 --- a/test/parallel/test-tls-multi-key.js +++ b/test/parallel/test-tls-multi-key.js @@ -154,11 +154,12 @@ function test(options) { rejectUnauthorized: true, ca: clientTrustRoots, checkServerIdentity: (_, c) => assert.strictEqual(c.subject.CN, eccCN), + maxVersion: 'TLSv1.2' }, common.mustCall(function() { assert.deepStrictEqual(ecdsa.getCipher(), { name: 'ECDHE-ECDSA-AES256-GCM-SHA384', standardName: 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384', - version: 'TLSv1.2' + version: 'TLSv1.2', }); assert.strictEqual(ecdsa.getPeerCertificate().subject.CN, eccCN); assert.strictEqual(ecdsa.getPeerCertificate().asn1Curve, 'prime256v1'); @@ -173,11 +174,12 @@ function test(options) { rejectUnauthorized: true, ca: clientTrustRoots, checkServerIdentity: (_, c) => assert.strictEqual(c.subject.CN, rsaCN), + maxVersion: 'TLSv1.2', }, common.mustCall(function() { assert.deepStrictEqual(rsa.getCipher(), { name: 'ECDHE-RSA-AES256-GCM-SHA384', standardName: 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', - version: 'TLSv1.2' + version: 'TLSv1.2', }); assert.strictEqual(rsa.getPeerCertificate().subject.CN, rsaCN); assert(rsa.getPeerCertificate().exponent, 'cert for an RSA key'); diff --git a/test/parallel/test-tls-multi-pfx.js b/test/parallel/test-tls-multi-pfx.js index f353183ce2fa0c..80bd0d37281f13 100644 --- a/test/parallel/test-tls-multi-pfx.js +++ b/test/parallel/test-tls-multi-pfx.js @@ -24,12 +24,14 @@ const server = tls.createServer(options, function(conn) { }).listen(0, function() { const ecdsa = tls.connect(this.address().port, { ciphers: 'ECDHE-ECDSA-AES256-GCM-SHA384', - rejectUnauthorized: false + maxVersion: 'TLSv1.2', + rejectUnauthorized: false, }, common.mustCall(function() { ciphers.push(ecdsa.getCipher()); const rsa = tls.connect(server.address().port, { ciphers: 'ECDHE-RSA-AES256-GCM-SHA384', - rejectUnauthorized: false + maxVersion: 'TLSv1.2', + rejectUnauthorized: false, }, common.mustCall(function() { ciphers.push(rsa.getCipher()); ecdsa.end(); diff --git a/test/parallel/test-tls-securepair-leak.js b/test/parallel/test-tls-securepair-leak.js index 4cd927d64ac088..98bdcde76ec034 100644 --- a/test/parallel/test-tls-securepair-leak.js +++ b/test/parallel/test-tls-securepair-leak.js @@ -20,9 +20,9 @@ setImmediate(() => { global.gc(); const after = process.memoryUsage().external; - // It's not an exact science but a SecurePair grows .external by about 45 kB. + // It's not an exact science but a SecurePair grows .external by about 45 KiB. // Unless AdjustAmountOfExternalAllocatedMemory() is called on destruction, - // 10,000 instances make it grow by well over 400 MB. Allow for some slop + // 10,000 instances make it grow by well over 400 MiB. Allow for some slop // because objects like buffers also affect the external limit. assert(after - before < 25 << 20); }); diff --git a/test/parallel/test-tls-set-ciphers.js b/test/parallel/test-tls-set-ciphers.js index f08af9b089adb9..c2d9740201d74a 100644 --- a/test/parallel/test-tls-set-ciphers.js +++ b/test/parallel/test-tls-set-ciphers.js @@ -13,19 +13,31 @@ const { } = require(fixtures.path('tls-connect')); -function test(cciphers, sciphers, cipher, cerr, serr) { +function test(cciphers, sciphers, cipher, cerr, serr, options) { assert(cipher || cerr || serr, 'test missing any expectations'); const where = inspect(new Error()).split('\n')[2].replace(/[^(]*/, ''); + + const max_tls_ver = (ciphers, options) => { + if (options instanceof Object && Object.hasOwn(options, 'maxVersion')) + return options.maxVersion; + if ((typeof ciphers === 'string' || ciphers instanceof String) && ciphers.length > 0 && !ciphers.includes('TLS_')) + return 'TLSv1.2'; + + return 'TLSv1.3'; + }; + connect({ client: { checkServerIdentity: (servername, cert) => { }, ca: `${keys.agent1.cert}\n${keys.agent6.ca}`, ciphers: cciphers, + maxVersion: max_tls_ver(cciphers, options), }, server: { cert: keys.agent6.cert, key: keys.agent6.key, ciphers: sciphers, + maxVersion: max_tls_ver(sciphers, options), }, }, common.mustCall((err, pair, cleanup) => { function u(_) { return _ === undefined ? 'U' : _; } @@ -87,6 +99,13 @@ test('AES128-SHA:TLS_AES_256_GCM_SHA384', test('AES256-SHA:TLS_AES_256_GCM_SHA384', U, 'TLS_AES_256_GCM_SHA384'); test(U, 'AES256-SHA:TLS_AES_256_GCM_SHA384', 'TLS_AES_256_GCM_SHA384'); +// Cipher order ignored, TLS1.3 before TLS1.2 and +// cipher suites are not disabled if TLS ciphers are set only +// TODO: maybe these tests should be reworked so maxVersion clamping +// is done explicitly and not implicitly in the test() function +test('AES256-SHA', U, 'TLS_AES_256_GCM_SHA384', U, U, { maxVersion: 'TLSv1.3' }); +test(U, 'AES256-SHA', 'TLS_AES_256_GCM_SHA384', U, U, { maxVersion: 'TLSv1.3' }); + // TLS_AES_128_CCM_8_SHA256 & TLS_AES_128_CCM_SHA256 are not enabled by // default, but work. test('TLS_AES_128_CCM_8_SHA256', U, diff --git a/test/parallel/test-tls-set-secure-context.js b/test/parallel/test-tls-set-secure-context.js index d62b6b9f94f601..c056875e14ddfb 100644 --- a/test/parallel/test-tls-set-secure-context.js +++ b/test/parallel/test-tls-set-secure-context.js @@ -9,7 +9,9 @@ if (!common.hasCrypto) // secure context is changed. const assert = require('assert'); +const events = require('events'); const https = require('https'); +const timers = require('timers/promises'); const fixtures = require('../common/fixtures'); const credentialOptions = [ { @@ -43,10 +45,10 @@ server.listen(0, common.mustCall(() => { const { port } = server.address(); const firstRequest = makeRequest(port, 1); - async function makeRemainingRequests() { + (async function makeRemainingRequests() { // Wait until the first request is guaranteed to have been handled. - if (!firstResponse) { - return setImmediate(makeRemainingRequests); + while (!firstResponse) { + await timers.setImmediate(); } assert.strictEqual(await makeRequest(port, 2), 'success'); @@ -56,53 +58,38 @@ server.listen(0, common.mustCall(() => { const errorMessageRegex = common.hasOpenSSL3 ? /^Error: self-signed certificate$/ : /^Error: self signed certificate$/; - await assert.rejects(async () => { - await makeRequest(port, 3); - }, errorMessageRegex); + await assert.rejects(makeRequest(port, 3), errorMessageRegex); server.setSecureContext(credentialOptions[0]); assert.strictEqual(await makeRequest(port, 4), 'success'); server.setSecureContext(credentialOptions[1]); firstResponse.end('fun!'); - await assert.rejects(async () => { - await makeRequest(port, 5); - }, errorMessageRegex); + await assert.rejects(makeRequest(port, 5), errorMessageRegex); assert.strictEqual(await firstRequest, 'multi-request-success-fun!'); server.close(); - } - - makeRemainingRequests(); + })().then(common.mustCall()); })); -function makeRequest(port, id) { - return new Promise((resolve, reject) => { - const options = { - rejectUnauthorized: true, - ca: credentialOptions[0].ca, - servername: 'agent1', - headers: { id } - }; - - let errored = false; - https.get(`https://localhost:${port}`, options, (res) => { - let response = ''; - - res.setEncoding('utf8'); - - res.on('data', (chunk) => { - response += chunk; - }); - - res.on('end', common.mustCall(() => { - resolve(response); - })); - }).on('error', (err) => { - errored = true; - reject(err); - }).on('finish', () => { - assert.strictEqual(errored, false); - }); - }); +async function makeRequest(port, id) { + const options = { + rejectUnauthorized: true, + ca: credentialOptions[0].ca, + servername: 'agent1', + headers: { id }, + agent: new https.Agent() + }; + + const req = https.get(`https://localhost:${port}`, options); + + let errored = false; + req.on('error', () => errored = true); + req.on('finish', () => assert.strictEqual(errored, false)); + + const [res] = await events.once(req, 'response'); + res.setEncoding('utf8'); + let response = ''; + for await (const chunk of res) response += chunk; + return response; } diff --git a/test/parallel/test-trace-events-fs-sync.js b/test/parallel/test-trace-events-fs-sync.js index 78a5059bc91f5f..14c6a122dd299f 100644 --- a/test/parallel/test-trace-events-fs-sync.js +++ b/test/parallel/test-trace-events-fs-sync.js @@ -6,7 +6,7 @@ const fs = require('fs'); const path = require('path'); const util = require('util'); -const tests = new Array(); +const tests = Object.create(null); let gid = 1; let uid = 1; @@ -16,102 +16,102 @@ if (!common.isWindows) { uid = process.getuid(); } -tests['fs.sync.access'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.accessSync("fs.txt");' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.chmod'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.chmodSync("fs.txt",100);' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.chown'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - `fs.chownSync("fs.txt", ${uid}, ${gid});` + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.close'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.copyfile'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.copyFileSync("fs.txt","a.txt");' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.fchmod'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'const fd = fs.openSync("fs.txt", "r+");' + +tests['fs.sync.access'] = 'fs.writeFileSync("fs0.txt", "123", "utf8");' + + 'fs.accessSync("fs0.txt");' + + 'fs.unlinkSync("fs0.txt")'; +tests['fs.sync.chmod'] = 'fs.writeFileSync("fs1.txt", "123", "utf8");' + + 'fs.chmodSync("fs1.txt",100);' + + 'fs.unlinkSync("fs1.txt")'; +tests['fs.sync.chown'] = 'fs.writeFileSync("fs2.txt", "123", "utf8");' + + `fs.chownSync("fs2.txt", ${uid}, ${gid});` + + 'fs.unlinkSync("fs2.txt")'; +tests['fs.sync.close'] = 'fs.writeFileSync("fs3.txt", "123", "utf8");' + + 'fs.unlinkSync("fs3.txt")'; +tests['fs.sync.copyfile'] = 'fs.writeFileSync("fs4.txt", "123", "utf8");' + + 'fs.copyFileSync("fs4.txt","a.txt");' + + 'fs.unlinkSync("fs4.txt")'; +tests['fs.sync.fchmod'] = 'fs.writeFileSync("fs5.txt", "123", "utf8");' + + 'const fd = fs.openSync("fs5.txt", "r+");' + 'fs.fchmodSync(fd,100);' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.fchown'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'const fd = fs.openSync("fs.txt", "r+");' + + 'fs.unlinkSync("fs5.txt")'; +tests['fs.sync.fchown'] = 'fs.writeFileSync("fs6.txt", "123", "utf8");' + + 'const fd = fs.openSync("fs6.txt", "r+");' + `fs.fchownSync(fd, ${uid}, ${gid});` + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.fdatasync'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'const fd = fs.openSync("fs.txt", "r+");' + + 'fs.unlinkSync("fs6.txt")'; +tests['fs.sync.fdatasync'] = 'fs.writeFileSync("fs7.txt", "123", "utf8");' + + 'const fd = fs.openSync("fs7.txt", "r+");' + 'fs.fdatasyncSync(fd);' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.fstat'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.readFileSync("fs.txt");' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.fsync'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'const fd = fs.openSync("fs.txt", "r+");' + + 'fs.unlinkSync("fs7.txt")'; +tests['fs.sync.fstat'] = 'fs.writeFileSync("fs8.txt", "123", "utf8");' + + 'fs.readFileSync("fs8.txt");' + + 'fs.unlinkSync("fs8.txt")'; +tests['fs.sync.fsync'] = 'fs.writeFileSync("fs9.txt", "123", "utf8");' + + 'const fd = fs.openSync("fs9.txt", "r+");' + 'fs.fsyncSync(fd);' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.ftruncate'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'const fd = fs.openSync("fs.txt", "r+");' + + 'fs.unlinkSync("fs9.txt")'; +tests['fs.sync.ftruncate'] = 'fs.writeFileSync("fs10.txt", "123", "utf8");' + + 'const fd = fs.openSync("fs10.txt", "r+");' + 'fs.ftruncateSync(fd, 1);' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.futimes'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'const fd = fs.openSync("fs.txt", "r+");' + + 'fs.unlinkSync("fs10.txt")'; +tests['fs.sync.futimes'] = 'fs.writeFileSync("fs11.txt", "123", "utf8");' + + 'const fd = fs.openSync("fs11.txt", "r+");' + 'fs.futimesSync(fd,1,1);' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.lchown'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - `fs.lchownSync("fs.txt", ${uid}, ${gid});` + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.link'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.linkSync("fs.txt", "linkx");' + - 'fs.unlinkSync("linkx");' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.lstat'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.lstatSync("fs.txt");' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.mkdir'] = 'fs.mkdirSync("fstemp");' + - 'fs.rmdirSync("fstemp")'; -tests['fs.sync.mkdtemp'] = 'const fp = fs.mkdtempSync("fstest");' + + 'fs.unlinkSync("fs11.txt")'; +tests['fs.sync.lchown'] = 'fs.writeFileSync("fs12.txt", "123", "utf8");' + + `fs.lchownSync("fs12.txt", ${uid}, ${gid});` + + 'fs.unlinkSync("fs12.txt")'; +tests['fs.sync.link'] = 'fs.writeFileSync("fs13.txt", "123", "utf8");' + + 'fs.linkSync("fs13.txt", "fs14.txt");' + + 'fs.unlinkSync("fs13.txt");' + + 'fs.unlinkSync("fs14.txt")'; +tests['fs.sync.lstat'] = 'fs.writeFileSync("fs15.txt", "123", "utf8");' + + 'fs.lstatSync("fs15.txt");' + + 'fs.unlinkSync("fs15.txt")'; +tests['fs.sync.mkdir'] = 'fs.mkdirSync("fstemp0");' + + 'fs.rmdirSync("fstemp0")'; +tests['fs.sync.mkdtemp'] = 'const fp = fs.mkdtempSync("fstemp1");' + 'fs.rmdirSync(fp)'; -tests['fs.sync.open'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.read'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.readFileSync("fs.txt");' + - 'fs.unlinkSync("fs.txt")'; +tests['fs.sync.open'] = 'fs.writeFileSync("fs16.txt", "123", "utf8");' + + 'fs.unlinkSync("fs16.txt")'; +tests['fs.sync.read'] = 'fs.writeFileSync("fs17.txt", "123", "utf8");' + + 'fs.readFileSync("fs17.txt");' + + 'fs.unlinkSync("fs17.txt")'; tests['fs.sync.readdir'] = 'fs.readdirSync("./")'; -tests['fs.sync.realpath'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.linkSync("fs.txt", "linkx");' + - 'fs.realpathSync.native("linkx");' + - 'fs.unlinkSync("linkx");' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.rename'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.renameSync("fs.txt","xyz.txt"); ' + - 'fs.unlinkSync("xyz.txt")'; -tests['fs.sync.rmdir'] = 'fs.mkdirSync("fstemp");' + - 'fs.rmdirSync("fstemp")'; -tests['fs.sync.stat'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.statSync("fs.txt");' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.unlink'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.linkSync("fs.txt", "linkx");' + - 'fs.unlinkSync("linkx");' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.utimes'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.utimesSync("fs.txt",1,1);' + - 'fs.unlinkSync("fs.txt")'; -tests['fs.sync.write'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.unlinkSync("fs.txt")'; +tests['fs.sync.realpath'] = 'fs.writeFileSync("fs18.txt", "123", "utf8");' + + 'fs.linkSync("fs18.txt", "fs19.txt");' + + 'fs.realpathSync.native("fs19.txt");' + + 'fs.unlinkSync("fs18.txt");' + + 'fs.unlinkSync("fs19.txt")'; +tests['fs.sync.rename'] = 'fs.writeFileSync("fs20.txt", "123", "utf8");' + + 'fs.renameSync("fs20.txt","fs21.txt"); ' + + 'fs.unlinkSync("fs21.txt")'; +tests['fs.sync.rmdir'] = 'fs.mkdirSync("fstemp2");' + + 'fs.rmdirSync("fstemp2")'; +tests['fs.sync.stat'] = 'fs.writeFileSync("fs22.txt", "123", "utf8");' + + 'fs.statSync("fs22.txt");' + + 'fs.unlinkSync("fs22.txt")'; +tests['fs.sync.unlink'] = 'fs.writeFileSync("fs23.txt", "123", "utf8");' + + 'fs.linkSync("fs23.txt", "fs24.txt");' + + 'fs.unlinkSync("fs23.txt");' + + 'fs.unlinkSync("fs24.txt")'; +tests['fs.sync.utimes'] = 'fs.writeFileSync("fs25.txt", "123", "utf8");' + + 'fs.utimesSync("fs25.txt",1,1);' + + 'fs.unlinkSync("fs25.txt")'; +tests['fs.sync.write'] = 'fs.writeFileSync("fs26.txt", "123", "utf8");' + + 'fs.unlinkSync("fs26.txt")'; // On windows, we need permissions to test symlink and readlink. // We'll only try to run these tests if we have enough privileges. if (common.canCreateSymLink()) { - tests['fs.sync.symlink'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.symlinkSync("fs.txt", "linkx");' + - 'fs.unlinkSync("linkx");' + - 'fs.unlinkSync("fs.txt")'; - tests['fs.sync.readlink'] = 'fs.writeFileSync("fs.txt", "123", "utf8");' + - 'fs.symlinkSync("fs.txt", "linkx");' + - 'fs.readlinkSync("linkx");' + - 'fs.unlinkSync("linkx");' + - 'fs.unlinkSync("fs.txt")'; + tests['fs.sync.symlink'] = 'fs.writeFileSync("fs27.txt", "123", "utf8");' + + 'fs.symlinkSync("fs27.txt", "fs28.txt");' + + 'fs.unlinkSync("fs27.txt");' + + 'fs.unlinkSync("fs28.txt")'; + tests['fs.sync.readlink'] = 'fs.writeFileSync("fs29.txt", "123", "utf8");' + + 'fs.symlinkSync("fs29.txt", "fs30.txt");' + + 'fs.readlinkSync("fs30.txt");' + + 'fs.unlinkSync("fs29.txt");' + + 'fs.unlinkSync("fs30.txt")'; } const tmpdir = require('../common/tmpdir'); diff --git a/test/parallel/test-trace-events-net.js b/test/parallel/test-trace-events-net.js new file mode 100644 index 00000000000000..227c168c013245 --- /dev/null +++ b/test/parallel/test-trace-events-net.js @@ -0,0 +1,45 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const cp = require('child_process'); +const fs = require('fs'); +const path = require('path'); +const tmpdir = require('../common/tmpdir'); + +const CODE = ` + const net = require('net'); + const socket = net.connect('${common.PIPE}'); + socket.on('error', () => {}); + const server = net.createServer((socket) => { + socket.destroy(); + server.close(); + }).listen(0, () => { + net.connect(server.address().port); + }); +`; + +tmpdir.refresh(); +const FILE_NAME = path.join(tmpdir.path, 'node_trace.1.log'); + +const proc = cp.spawn(process.execPath, + [ '--trace-events-enabled', + '--trace-event-categories', 'node.net.native', + '-e', CODE ], + { cwd: tmpdir.path }); + +proc.once('exit', common.mustCall(() => { + assert(fs.existsSync(FILE_NAME)); + fs.readFile(FILE_NAME, common.mustCall((err, data) => { + const traces = JSON.parse(data.toString()).traceEvents; + assert(traces.length > 0); + let count = 0; + traces.forEach((trace) => { + if (trace.cat === 'node,node.net,node.net.native' && + trace.name === 'connect') { + count++; + } + }); + // Two begin, two end + assert.strictEqual(count, 4); + })); +})); diff --git a/test/parallel/test-trace-events-vm.js b/test/parallel/test-trace-events-vm.js index b3d3a403bec711..e7c5fb0bc0e416 100644 --- a/test/parallel/test-trace-events-vm.js +++ b/test/parallel/test-trace-events-vm.js @@ -8,7 +8,6 @@ const tmpdir = require('../common/tmpdir'); const names = [ 'ContextifyScript::New', - 'RunInThisContext', 'RunInContext', ]; diff --git a/test/parallel/test-util-inspect-proxy.js b/test/parallel/test-util-inspect-proxy.js index 3e1341fadfc9f9..6344adae990860 100644 --- a/test/parallel/test-util-inspect-proxy.js +++ b/test/parallel/test-util-inspect-proxy.js @@ -57,6 +57,27 @@ assert.strictEqual(handler, details[1]); details = processUtil.getProxyDetails(proxyObj, false); assert.strictEqual(target, details); +details = processUtil.getProxyDetails({}, true); +assert.strictEqual(details, undefined); + +const r = Proxy.revocable({}, {}); +r.revoke(); + +details = processUtil.getProxyDetails(r.proxy, true); +assert.strictEqual(details[0], null); +assert.strictEqual(details[1], null); + +details = processUtil.getProxyDetails(r.proxy, false); +assert.strictEqual(details, null); + +assert.strictEqual(util.inspect(r.proxy), ''); +assert.strictEqual( + util.inspect(r, { showProxy: true }), + '{ proxy: , revoke: [Function (anonymous)] }', +); + +assert.strictEqual(util.format('%s', r.proxy), ''); + assert.strictEqual( util.inspect(proxyObj, opts), 'Proxy [\n' + diff --git a/test/parallel/test-util-inspect.js b/test/parallel/test-util-inspect.js index 43913c3ab4c9da..9b57fd4a99b10e 100644 --- a/test/parallel/test-util-inspect.js +++ b/test/parallel/test-util-inspect.js @@ -30,6 +30,7 @@ const v8 = require('v8'); const { previewEntries } = internalBinding('util'); const { inspect } = util; const { MessageChannel } = require('worker_threads'); +const url = require('url'); assert.strictEqual(util.inspect(1), '1'); assert.strictEqual(util.inspect(false), 'false'); @@ -897,7 +898,7 @@ assert.strictEqual(util.inspect(Object.create(Date.prototype)), 'Date {}'); // Test util.inspect.styles and util.inspect.colors. { - function testColorStyle(style, input, implicit) { + function testColorStyle(style, input) { const colorName = util.inspect.styles[style]; let color = ['', '']; if (util.inspect.colors[colorName]) @@ -1396,6 +1397,9 @@ if (typeof Symbol !== 'undefined') { class SetSubclass extends Set {} class MapSubclass extends Map {} class PromiseSubclass extends Promise {} + class SymbolNameClass { + static name = Symbol('name'); + } const x = new ObjectSubclass(); x.foo = 42; @@ -1409,6 +1413,8 @@ if (typeof Symbol !== 'undefined') { "MapSubclass(1) [Map] { 'foo' => 42 }"); assert.strictEqual(util.inspect(new PromiseSubclass(() => {})), 'PromiseSubclass [Promise] { }'); + assert.strictEqual(util.inspect(new SymbolNameClass()), + 'Symbol(name) {}'); assert.strictEqual( util.inspect({ a: { b: new ArraySubclass([1, [2], 3]) } }, { depth: 1 }), '{ a: { b: [ArraySubclass] } }' @@ -2806,9 +2812,15 @@ assert.strictEqual( } { + const originalCWD = process.cwd(); + + process.cwd = () => (process.platform === 'win32' ? + 'C:\\workspace\\node-test-binary-windows js-suites-%percent-encoded\\node' : + '/home/user directory/repository%encoded/node'); + // Use a fake stack to verify the expected colored outcome. const stack = [ - 'TypedError: Wonderful message!', + 'Error: CWD is grayed out, even cwd that are percent encoded!', ' at A. (/test/node_modules/foo/node_modules/bar/baz.js:2:7)', ' at Module._compile (node:internal/modules/cjs/loader:827:30)', ' at Fancy (node:vm:697:32)', @@ -2818,23 +2830,78 @@ assert.strictEqual( // This file is not an actual Node.js core file. ' at Module.require [as weird/name] (node:internal/aaaaa/loader:735:19)', ' at require (node:internal/modules/cjs/helpers:14:16)', + ' at Array.forEach ()', + ` at ${process.cwd()}/test/parallel/test-util-inspect.js:2760:12`, + ` at Object. (${process.cwd()}/node_modules/hyper_module/folder/file.js:2753:10)`, ' at /test/test-util-inspect.js:2239:9', ' at getActual (node:assert:592:5)', ]; - const isNodeCoreFile = [ - false, false, true, true, false, true, false, true, false, true, - ]; - const err = new TypeError('Wonderful message!'); + const err = new Error('CWD is grayed out, even cwd that are percent encoded!'); err.stack = stack.join('\n'); + if (process.platform === 'win32') { + err.stack = stack.map((frame) => (frame.includes('node:') ? + frame : + frame.replaceAll('/', '\\')) + ).join('\n'); + } + const escapedCWD = util.inspect(process.cwd()).slice(1, -1); util.inspect(err, { colors: true }).split('\n').forEach((line, i) => { - let actual = stack[i].replace(/node_modules\/([a-z]+)/g, (a, m) => { + let expected = stack[i].replace(/node_modules\/([^/]+)/gi, (_, m) => { return `node_modules/\u001b[4m${m}\u001b[24m`; + }).replaceAll(new RegExp(`(\\(?${escapedCWD}(\\\\|/))`, 'gi'), (_, m) => { + return `\x1B[90m${m}\x1B[39m`; }); - if (isNodeCoreFile[i]) { - actual = `\u001b[90m${actual}\u001b[39m`; + if (expected.includes(process.cwd()) && expected.endsWith(')')) { + expected = `${expected.slice(0, -1)}\x1B[90m)\x1B[39m`; } - assert.strictEqual(actual, line); + if (line.includes('node:')) { + if (!line.includes('foo') && !line.includes('aaa')) { + expected = `\u001b[90m${expected}\u001b[39m`; + } + } else if (process.platform === 'win32') { + expected = expected.replaceAll('/', '\\'); + } + assert.strictEqual(line, expected); }); + + // Check ESM + const encodedCwd = url.pathToFileURL(process.cwd()); + const sl = process.platform === 'win32' ? '\\' : '/'; + + // Use a fake stack to verify the expected colored outcome. + err.stack = 'Error: ESM and CJS mixed are both grayed out!\n' + + ` at ${encodedCwd}/test/parallel/test-esm.mjs:2760:12\n` + + ` at Object. (${encodedCwd}/node_modules/esm_module/folder/file.js:2753:10)\n` + + ` at ${process.cwd()}${sl}test${sl}parallel${sl}test-cjs.js:2760:12\n` + + ` at Object. (${process.cwd()}${sl}node_modules${sl}cjs_module${sl}folder${sl}file.js:2753:10)`; + + let actual = util.inspect(err, { colors: true }); + let expected = 'Error: ESM and CJS mixed are both grayed out!\n' + + ` at \x1B[90m${encodedCwd}/\x1B[39mtest/parallel/test-esm.mjs:2760:12\n` + + ` at Object. \x1B[90m(${encodedCwd}/\x1B[39mnode_modules/\x1B[4mesm_module\x1B[24m/folder/file.js:2753:10\x1B[90m)\x1B[39m\n` + + ` at \x1B[90m${process.cwd()}${sl}\x1B[39mtest${sl}parallel${sl}test-cjs.js:2760:12\n` + + ` at Object. \x1B[90m(${process.cwd()}${sl}\x1B[39mnode_modules${sl}\x1B[4mcjs_module\x1B[24m${sl}folder${sl}file.js:2753:10\x1B[90m)\x1B[39m`; + + assert.strictEqual(actual, expected); + + // ESM without need for encoding + process.cwd = () => (process.platform === 'win32' ? + 'C:\\workspace\\node-test-binary-windows-js-suites\\node' : + '/home/user/repository/node'); + let expectedCwd = process.cwd(); + if (process.platform === 'win32') { + expectedCwd = `/${expectedCwd.replaceAll('\\', '/')}`; + } + // Use a fake stack to verify the expected colored outcome. + err.stack = 'Error: ESM without need for encoding!\n' + + ` at file://${expectedCwd}/file.js:15:15`; + + actual = util.inspect(err, { colors: true }); + expected = 'Error: ESM without need for encoding!\n' + + ` at \x1B[90mfile://${expectedCwd}/\x1B[39mfile.js:15:15`; + assert.strictEqual(actual, expected); + + process.cwd = originalCWD; } { @@ -3235,3 +3302,12 @@ assert.strictEqual( '-123_456_789.123_456_78' ); } + +// Regression test for https://github.com/nodejs/node/issues/41244 +{ + assert.strictEqual(util.inspect({ + get [Symbol.iterator]() { + throw new Error(); + } + }), '{ [Symbol(Symbol.iterator)]: [Getter] }'); +} diff --git a/test/parallel/test-util-promisify-custom-names.mjs b/test/parallel/test-util-promisify-custom-names.mjs new file mode 100644 index 00000000000000..3ff05d907b5060 --- /dev/null +++ b/test/parallel/test-util-promisify-custom-names.mjs @@ -0,0 +1,40 @@ +import '../common/index.mjs'; +import assert from 'node:assert'; +import { promisify } from 'node:util'; + +// Test that customly promisified methods in [util.promisify.custom] +// have appropriate names + +import fs from 'node:fs'; +import readline from 'node:readline'; +import stream from 'node:stream'; +import timers from 'node:timers'; + + +assert.strictEqual( + promisify(fs.exists).name, + 'exists' +); + +assert.strictEqual( + promisify(readline.Interface.prototype.question).name, + 'question', +); + +assert.strictEqual( + promisify(stream.finished).name, + 'finished' +); +assert.strictEqual( + promisify(stream.pipeline).name, + 'pipeline' +); + +assert.strictEqual( + promisify(timers.setImmediate).name, + 'setImmediate' +); +assert.strictEqual( + promisify(timers.setTimeout).name, + 'setTimeout' +); diff --git a/test/parallel/test-v8-serdes.js b/test/parallel/test-v8-serdes.js index 4dffedd3c32b4b..ef9ef5945dba3b 100644 --- a/test/parallel/test-v8-serdes.js +++ b/test/parallel/test-v8-serdes.js @@ -14,10 +14,18 @@ circular.circular = circular; const objects = [ { foo: 'bar' }, { bar: 'baz' }, + new Int8Array([1, 2, 3, 4]), new Uint8Array([1, 2, 3, 4]), + new Int16Array([1, 2, 3, 4]), + new Uint16Array([1, 2, 3, 4]), + new Int32Array([1, 2, 3, 4]), new Uint32Array([1, 2, 3, 4]), + new Float32Array([1, 2, 3, 4]), + new Float64Array([1, 2, 3, 4]), new DataView(new ArrayBuffer(42)), Buffer.from([1, 2, 3, 4]), + new BigInt64Array([42n]), + new BigUint64Array([42n]), undefined, null, 42, diff --git a/test/parallel/test-v8-serialize-leak.js b/test/parallel/test-v8-serialize-leak.js new file mode 100644 index 00000000000000..a90c398adcdaf3 --- /dev/null +++ b/test/parallel/test-v8-serialize-leak.js @@ -0,0 +1,27 @@ +'use strict'; +// Flags: --expose-gc + +const common = require('../common'); + +// On IBMi, the rss memory always returns zero +if (common.isIBMi) + common.skip('On IBMi, the rss memory always returns zero'); + +const v8 = require('v8'); +const assert = require('assert'); + +const before = process.memoryUsage.rss(); + +for (let i = 0; i < 1000000; i++) { + v8.serialize(''); +} + +global.gc(); + +const after = process.memoryUsage.rss(); + +if (process.config.variables.asan) { + assert(after < before * 10, `asan: before=${before} after=${after}`); +} else { + assert(after < before * 2, `before=${before} after=${after}`); +} diff --git a/test/parallel/test-v8-stats.js b/test/parallel/test-v8-stats.js index 2093343859f2af..7503a08c5a67fa 100644 --- a/test/parallel/test-v8-stats.js +++ b/test/parallel/test-v8-stats.js @@ -6,15 +6,18 @@ const v8 = require('v8'); const s = v8.getHeapStatistics(); const keys = [ 'does_zap_garbage', + 'external_memory', 'heap_size_limit', 'malloced_memory', 'number_of_detached_contexts', 'number_of_native_contexts', 'peak_malloced_memory', 'total_available_size', + 'total_global_handles_size', 'total_heap_size', 'total_heap_size_executable', 'total_physical_size', + 'used_global_handles_size', 'used_heap_size']; assert.deepStrictEqual(Object.keys(s).sort(), keys); keys.forEach(function(key) { diff --git a/test/parallel/test-v8-untrusted-code-mitigations.js b/test/parallel/test-v8-untrusted-code-mitigations.js deleted file mode 100644 index cb6360beb74bb0..00000000000000 --- a/test/parallel/test-v8-untrusted-code-mitigations.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -require('../common'); -const assert = require('assert'); -const { execFileSync } = require('child_process'); - -// This test checks that untrusted code mitigations in V8 are disabled -// by default. - -const v8Options = execFileSync(process.execPath, ['--v8-options']).toString(); - -const untrustedFlag = v8Options.indexOf('--untrusted-code-mitigations'); -assert.notStrictEqual(untrustedFlag, -1); - -const nextFlag = v8Options.indexOf('--', untrustedFlag + 2); -const slice = v8Options.substring(untrustedFlag, nextFlag); - -// eslint-disable-next-line no-regex-spaces -assert(slice.match(/type: bool default: false/)); diff --git a/test/parallel/test-validators.js b/test/parallel/test-validators.js index 6b0d49c6997a65..0bba9d13b20bf0 100644 --- a/test/parallel/test-validators.js +++ b/test/parallel/test-validators.js @@ -10,6 +10,8 @@ const { validateNumber, validateObject, validateString, + validateInt32, + validateUint32, } = require('internal/validators'); const { MAX_SAFE_INTEGER, MIN_SAFE_INTEGER } = Number; const outOfRangeError = { @@ -41,6 +43,34 @@ const invalidArgValueError = { // validateInteger() works with unsafe integers. validateInteger(MAX_SAFE_INTEGER + 1, 'foo', 0, MAX_SAFE_INTEGER + 1); validateInteger(MIN_SAFE_INTEGER - 1, 'foo', MIN_SAFE_INTEGER - 1); + + // validateInt32() and validateUint32() + [ + Symbol(), 1n, {}, [], false, true, undefined, null, () => {}, '', '1', + ].forEach((val) => assert.throws(() => validateInt32(val, 'name'), { + code: 'ERR_INVALID_ARG_TYPE' + })); + [ + 2147483647 + 1, -2147483648 - 1, NaN, + ].forEach((val) => assert.throws(() => validateInt32(val, 'name'), { + code: 'ERR_OUT_OF_RANGE' + })); + [ + 0, 1, -1, + ].forEach((val) => validateInt32(val, 'name')); + [ + Symbol(), 1n, {}, [], false, true, undefined, null, () => {}, '', '1', + ].forEach((val) => assert.throws(() => validateUint32(val, 'name'), { + code: 'ERR_INVALID_ARG_TYPE' + })); + [ + 4294967296, -1, NaN, + ].forEach((val) => assert.throws(() => validateUint32(val, 'name'), { + code: 'ERR_OUT_OF_RANGE' + })); + [ + 0, 1, + ].forEach((val) => validateUint32(val, 'name')); } { diff --git a/test/parallel/test-vm-break-on-sigint.js b/test/parallel/test-vm-break-on-sigint.js new file mode 100644 index 00000000000000..6ad25bfed234b8 --- /dev/null +++ b/test/parallel/test-vm-break-on-sigint.js @@ -0,0 +1,22 @@ +'use strict'; +const common = require('../common'); + +// This test ensures that running vm with breakOnSignt option in multiple +// worker_threads does not crash. +// Issue: https://github.com/nodejs/node/issues/43699 +const { Worker } = require('worker_threads'); +const vm = require('vm'); + +// Don't use isMainThread to allow running this test inside a worker. +if (!process.env.HAS_STARTED_WORKER) { + process.env.HAS_STARTED_WORKER = 1; + for (let i = 0; i < 10; i++) { + const worker = new Worker(__filename); + worker.on('exit', common.mustCall()); + } +} else { + const ctx = vm.createContext({}); + for (let i = 0; i < 10000; i++) { + vm.runInContext('console.log(1)', ctx, { breakOnSigint: true }); + } +} diff --git a/test/parallel/test-vm-module-errors.js b/test/parallel/test-vm-module-errors.js index 888250cef84f6f..bec8258a4145c7 100644 --- a/test/parallel/test-vm-module-errors.js +++ b/test/parallel/test-vm-module-errors.js @@ -139,20 +139,25 @@ async function checkLinking() { code: 'ERR_VM_MODULE_DIFFERENT_CONTEXT' }); + const error = new Error(); await assert.rejects(async () => { - const erroredModule = new SourceTextModule('import "foo";'); + globalThis.error = error; + const erroredModule = new SourceTextModule('throw error;'); + await erroredModule.link(common.mustNotCall()); try { - await erroredModule.link(common.mustCall(() => ({}))); + await erroredModule.evaluate(); } catch { // ignored - } finally { - assert.strictEqual(erroredModule.status, 'errored'); } + delete globalThis.error; + + assert.strictEqual(erroredModule.status, 'errored'); const rootModule = new SourceTextModule('import "errored";'); await rootModule.link(common.mustCall(() => erroredModule)); }, { - code: 'ERR_VM_MODULE_LINKING_ERRORED' + code: 'ERR_VM_MODULE_LINK_FAILURE', + cause: error, }); } diff --git a/test/parallel/test-webcrypto-constructors.js b/test/parallel/test-webcrypto-constructors.js new file mode 100644 index 00000000000000..ddc4e8cb0796b1 --- /dev/null +++ b/test/parallel/test-webcrypto-constructors.js @@ -0,0 +1,159 @@ +// Flags: --experimental-global-webcrypto +'use strict'; + +const common = require('../common'); + +if (!common.hasCrypto) + common.skip('missing crypto'); + +const assert = require('assert'); + +// Test CryptoKey constructor +{ + assert.throws(() => new CryptoKey(), { + name: 'TypeError', message: 'Illegal constructor', code: 'ERR_ILLEGAL_CONSTRUCTOR' + }); +} + +// Test SubtleCrypto constructor +{ + assert.throws(() => new SubtleCrypto(), { + name: 'TypeError', message: 'Illegal constructor', code: 'ERR_ILLEGAL_CONSTRUCTOR' + }); +} + +// Test Crypto constructor +{ + assert.throws(() => new Crypto(), { + name: 'TypeError', message: 'Illegal constructor', code: 'ERR_ILLEGAL_CONSTRUCTOR' + }); +} + +const notCrypto = Reflect.construct(function() {}, [], Crypto); +const notSubtle = Reflect.construct(function() {}, [], SubtleCrypto); + +// Test Crypto.prototype.subtle +{ + assert.throws(() => notCrypto.subtle, { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }); +} + +// Test Crypto.prototype.randomUUID +{ + assert.throws(() => notCrypto.randomUUID(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }); +} + +// Test Crypto.prototype.getRandomValues +{ + assert.throws(() => notCrypto.getRandomValues(new Uint8Array(12)), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }); +} + +// Test SubtleCrypto.prototype.encrypt +{ + assert.rejects(() => notSubtle.encrypt(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }).then(common.mustCall()); +} + +// Test SubtleCrypto.prototype.decrypt +{ + assert.rejects(() => notSubtle.decrypt(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }).then(common.mustCall()); +} + +// Test SubtleCrypto.prototype.sign +{ + assert.rejects(() => notSubtle.sign(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }).then(common.mustCall()); +} + +// Test SubtleCrypto.prototype.verify +{ + assert.rejects(() => notSubtle.verify(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }).then(common.mustCall()); +} + +// Test SubtleCrypto.prototype.digest +{ + assert.rejects(() => notSubtle.digest(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }).then(common.mustCall()); +} + +// Test SubtleCrypto.prototype.generateKey +{ + assert.rejects(() => notSubtle.generateKey(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }).then(common.mustCall()); +} + +// Test SubtleCrypto.prototype.deriveKey +{ + assert.rejects(() => notSubtle.deriveKey(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }).then(common.mustCall()); +} + +// Test SubtleCrypto.prototype.deriveBits +{ + assert.rejects(() => notSubtle.deriveBits(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }).then(common.mustCall()); +} + +// Test SubtleCrypto.prototype.importKey +{ + assert.rejects(() => notSubtle.importKey(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }).then(common.mustCall()); +} + +// Test SubtleCrypto.prototype.exportKey +{ + assert.rejects(() => notSubtle.exportKey(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }).then(common.mustCall()); +} + +// Test SubtleCrypto.prototype.wrapKey +{ + assert.rejects(() => notSubtle.wrapKey(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }).then(common.mustCall()); +} + +// Test SubtleCrypto.prototype.unwrapKey +{ + assert.rejects(() => notSubtle.unwrapKey(), { + name: 'TypeError', code: 'ERR_INVALID_THIS', + }).then(common.mustCall()); +} + +{ + globalThis.crypto.subtle.importKey( + 'raw', + globalThis.crypto.getRandomValues(new Uint8Array(4)), + 'PBKDF2', + false, + ['deriveKey'], + ).then((key) => { + globalThis.crypto.subtle.importKey = common.mustNotCall(); + return globalThis.crypto.subtle.deriveKey({ + name: 'PBKDF2', + hash: 'SHA-512', + salt: globalThis.crypto.getRandomValues(new Uint8Array()), + iterations: 5, + }, key, { + name: 'AES-GCM', + length: 256 + }, true, ['encrypt', 'decrypt']); + }).then(common.mustCall()); +} diff --git a/test/parallel/test-webcrypto-derivebits-cfrg.js b/test/parallel/test-webcrypto-derivebits-cfrg.js new file mode 100644 index 00000000000000..2233d1a2d274c7 --- /dev/null +++ b/test/parallel/test-webcrypto-derivebits-cfrg.js @@ -0,0 +1,213 @@ +'use strict'; + +const common = require('../common'); + +if (!common.hasCrypto) + common.skip('missing crypto'); + +const assert = require('assert'); +const { webcrypto } = require('crypto'); +const { subtle } = webcrypto; + +const kTests = [ + { + name: 'X25519', + size: 32, + pkcs8: '302e020100300506032b656e04220420c8838e76d057dfb7d8c95a69e138160ad' + + 'd6373fd71a4d276bb56e3a81b64ff61', + spki: '302a300506032b656e0321001cf2b1e6022ec537371ed7f53e54fa1154d83e98eb' + + '64ea51fae5b3307cfe9706', + result: '2768409dfab99ec23b8c89b93ff5880295f76176088f89e43dfebe7ea1950008' + }, + { + name: 'X448', + size: 56, + pkcs8: '3046020100300506032b656f043a043858c7d29a3eb519b29d00cfb191bb64fc6' + + 'd8a42d8f17176272b89f2272d1819295c6525c0829671b052ef0727530f188e31' + + 'd0cc53bf26929e', + spki: '3042300506032b656f033900b604a1d1a5cd1d9426d561ef630a9eb16cbe69d5b9' + + 'ca615edc53633efb52ea31e6e6a0a1dbacc6e76cbce6482d7e4ba3d55d9e802765' + + 'ce6f', + result: 'f0f6c5f17f94f4291eab7178866d37ec8906dd6c514143dc85be7cf28deff39b' + + '726e0f6dcf810eb594dca97b4882bd44c43ea7dc67f49a4e', + }, +]; + +async function prepareKeys() { + const keys = {}; + await Promise.all( + kTests.map(async ({ name, size, pkcs8, spki, result }) => { + const [ + privateKey, + publicKey, + ] = await Promise.all([ + subtle.importKey( + 'pkcs8', + Buffer.from(pkcs8, 'hex'), + { name }, + true, + ['deriveKey', 'deriveBits']), + subtle.importKey( + 'spki', + Buffer.from(spki, 'hex'), + { name }, + true, + ['deriveKey', 'deriveBits']), + ]); + keys[name] = { + privateKey, + publicKey, + size, + result, + }; + })); + return keys; +} + +(async function() { + const keys = await prepareKeys(); + + await Promise.all( + Object.keys(keys).map(async (name) => { + const { size, result, privateKey, publicKey } = keys[name]; + + { + // Good parameters + const bits = await subtle.deriveBits({ + name, + public: publicKey + }, privateKey, 8 * size); + + assert(bits instanceof ArrayBuffer); + assert.strictEqual(Buffer.from(bits).toString('hex'), result); + } + + { + // Case insensitivity + const bits = await subtle.deriveBits({ + name: name.toLowerCase(), + public: publicKey + }, privateKey, 8 * size); + + assert.strictEqual(Buffer.from(bits).toString('hex'), result); + } + + { + // Null length + const bits = await subtle.deriveBits({ + name, + public: publicKey + }, privateKey, null); + + assert.strictEqual(Buffer.from(bits).toString('hex'), result); + } + + { + // Short Result + const bits = await subtle.deriveBits({ + name, + public: publicKey + }, privateKey, 8 * size - 32); + + assert.strictEqual( + Buffer.from(bits).toString('hex'), + result.slice(0, -8)); + } + + { + // Too long result + await assert.rejects(subtle.deriveBits({ + name, + public: publicKey + }, privateKey, 8 * size + 8), { + message: /derived bit length is too small/ + }); + } + + { + // Non-multiple of 8 + const bits = await subtle.deriveBits({ + name, + public: publicKey + }, privateKey, 8 * size - 11); + + assert.strictEqual( + Buffer.from(bits).toString('hex'), + result.slice(0, -2)); + } + })); + + // Error tests + { + // Missing public property + await assert.rejects( + subtle.deriveBits( + { name: 'X448' }, + keys.X448.privateKey, + 8 * keys.X448.size), + { code: 'ERR_INVALID_ARG_TYPE' }); + } + + { + // The public property is not a CryptoKey + await assert.rejects( + subtle.deriveBits( + { + name: 'X448', + public: { message: 'Not a CryptoKey' } + }, + keys.X448.privateKey, + 8 * keys.X448.size), + { code: 'ERR_INVALID_ARG_TYPE' }); + } + + { + // Mismatched types + await assert.rejects( + subtle.deriveBits( + { + name: 'X448', + public: keys.X25519.publicKey + }, + keys.X448.privateKey, + 8 * keys.X448.size), + { message: 'The public and private keys must be of the same type' }); + } + + { + // Base key is not a private key + await assert.rejects(subtle.deriveBits({ + name: 'X448', + public: keys.X448.publicKey + }, keys.X448.publicKey, null), { + message: /baseKey must be a private key/ + }); + } + + { + // Base key is not a private key + await assert.rejects(subtle.deriveBits({ + name: 'X448', + public: keys.X448.privateKey + }, keys.X448.publicKey, null), { + message: /algorithm\.public must be a public key/ + }); + } + + { + // Public is a secret key + const keyData = webcrypto.getRandomValues(new Uint8Array(32)); + const key = await subtle.importKey( + 'raw', + keyData, + { name: 'AES-CBC', length: 256 }, + false, ['encrypt']); + + await assert.rejects(subtle.deriveBits({ + name: 'X448', + public: key + }, keys.X448.publicKey, null), { + message: /algorithm\.public must be a public key/ + }); + } +})().then(common.mustCall()); diff --git a/test/parallel/test-webcrypto-derivebits-ecdh.js b/test/parallel/test-webcrypto-derivebits-ecdh.js index 166da81e3e4e6d..739155fba47818 100644 --- a/test/parallel/test-webcrypto-derivebits-ecdh.js +++ b/test/parallel/test-webcrypto-derivebits-ecdh.js @@ -154,7 +154,7 @@ async function prepareKeys() { assert.strictEqual( Buffer.from(bits).toString('hex'), - result.slice(0, -4)); + result.slice(0, -2)); } })); @@ -201,13 +201,13 @@ async function prepareKeys() { { name: 'ECDSA', namedCurve: 'P-521' - }, false, ['verify']); + }, false, ['sign', 'verify']); await assert.rejects(subtle.deriveBits({ name: 'ECDH', public: publicKey }, keys['P-521'].privateKey, null), { - message: /Keys must be ECDH keys/ + message: /Keys must be ECDH, X25519, or X448 keys/ }); } diff --git a/test/parallel/test-webcrypto-derivebits-node-dh.js b/test/parallel/test-webcrypto-derivebits-node-dh.js deleted file mode 100644 index 2503bc17032e0d..00000000000000 --- a/test/parallel/test-webcrypto-derivebits-node-dh.js +++ /dev/null @@ -1,219 +0,0 @@ -'use strict'; - -const common = require('../common'); - -if (!common.hasCrypto) - common.skip('missing crypto'); - -const assert = require('assert'); -const { subtle } = require('crypto').webcrypto; - -const kTestData = { - pkcs8: '308203260201003082019706092a864886f70d010301308201880282018100ff' + - 'ffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc7402' + - '0bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374f' + - 'e1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee' + - '386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598' + - 'da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9e' + - 'd529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be3' + - '9e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf69558171839' + - '95497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a8' + - '5521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7ab' + - 'f5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d8' + - '7602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208' + - 'e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff02' + - '010204820184028201806ba21bec44fe29bee2d1f6f5d717b9af1c62973b342c' + - '28b850d2e39b31abf3ce7f58a26da0cdf538b3328648ee8738e49434bdf697ff' + - '2ac5da64d308fa0abbd75f0554bcef58fd1a688bf93af00ffbdb9ba05558a8e6' + - '16db9818769e2c7e37ba0c07bca10fffd19cb7aa44876170f0a8fe0c1bdba2f9' + - 'b0606d479796e1b6bdab153188b03f684584fd909814c5055fc184eaf05577f7' + - 'f447fcc2dd90889ab853830993d8fbf087f942d8e7a9f331570e7eee5954fb7a' + - 'a6920f4df2f8a33d5cb59961162b1216a4382f984cce02512f0100e20f15e480' + - 'a9d19bb01414a75c74d0854595e58ed060f7bb0f4b451f82b476dc039cc1bb8c' + - '1a05999e6abb20915a3cfca40f314538c00f42d0c4f2070cb163788d6dea0adb' + - '03c75d8001c7057ef61e60b407272adffc2669b82e634ebebda45826229bb2f8' + - 'ed742ee97429e34de06c41c25563025285d5f8a43acdc57cf12779222ae125d5' + - '438857d6bf6341815b9aebf6878fd23944cfd240e74caea13419163fde5ec1ec' + - 'fe2fb2e740b9301a9c04', - spki: '308203253082019706092a864886f70d010301308201880282018100fffffffff' + - 'fffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b' + - '139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d5' + - '1c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a89' + - '9fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d' + - '39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed52907709696' + - '6d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e860' + - '39b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae5' + - '15d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64e' + - 'cfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e' + - '8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521' + - 'f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db' + - '5bfce0fd108e4b82d120a93ad2caffffffffffffffff020102038201860002820' + - '1810098b01807f77a722cd30fe0390f8cdd0b3f7e0fb33fd3e0ca3d573a7b481e' + - 'dc0fc9f7bc58bfc4509f34efe118ba48bcefbbd57c4878e87b4d0fbb4b661d771' + - '19055cf190b5e8ad05c4821ff0445f4e12049e708ee83e2272c2c269b8b3bfa1b' + - '37df8dc4ec77a430ed6b89beb69093ceeca48497d8ab3ceac25429df58e96d2df' + - 'd01a94b1d164697b93475ed3d5962fd7c300de959474568aecc15c880c36b14a7' + - '9c2144ad4207c9760c11fbcc9ccbb29727a7f5a7789d47f1fa7a154289f83c528' + - '1fb97e01c37f937a25b4057017961ebd52b936f6b8f6d9ad35e3e094c3850cde2' + - '9e98895eaa9b56bff17dc6d8c03edce51c0aa009864da9cbe49a2063bddc64f11' + - '67beb0ab1c5d9bccf9a10078d0236237986f53c4074f30399deb829c544026fe0' + - '532e54e1bc9d933bd4db8dbfd43cf7839a9f64c135d2188896294d54cb7812e6e' + - '9586a03e91893edf7240011e8cda8f59a4dde0ce6d3c40d85847a3985fa25967f' + - 'a2c9598b269ac28da067704f15eb5bb4d8afdea8c67f56f9b604e172bc', - result: '42e77c77568f4387858771b006bebf213a2894efed8efdcfe23640bbd6df765' + - '1b2afa9f5acfba5b1d3db5401fd3427cd9226f6c2fdbd2b8fd7948e12cc7e016' + - 'eb2ed0e0fb02ce434c68c5d511ded05c1150718cf4c8b9db0adcc639a8b52b74' + - 'c2c90e2df5f6f55462d38e2d2769b4bd23bf0db8b4a82253addc1d5d6d19289d' + - '9e60ddabe1203aa3f45956f4dd32683f55fc2f7400e92712e5bb4dea737e03ad' + - '4b94640ccd63a0b8485dfa63f3b98232a34354aa91aebb3e86bb67a48b50ac21' + - 'e62dbce80c0913a9dba92c1c2333f4a43efe9c6c24ce23c252c7ff37e9e74a78' + - '6a8c5b82453fda8b6b40463461d22765e26d4f444272254ee6a492d3e6737e52' + - 'a94440aeddde3c0b449c52ca64bdc698f683ba6cb27794b84edcab7694cadfe8' + - 'f76ce94bf127ca42323b1995a863bcecab455f5d6283eb0eed44942aad3d1a46' + - '79713ed4757917f95d1a61ecae45b9978a863b16e199418bfe6e98435ad146a4' + - '7bd9c8cad9f787a29888954ae58fa683ea163921eb9d3e7a5aa2f52f74ec15333', -}; - -async function prepareKeys() { - const [ - privateKey, - publicKey, - ] = await Promise.all([ - subtle.importKey( - 'pkcs8', - Buffer.from(kTestData.pkcs8, 'hex'), - { name: 'NODE-DH' }, - true, - ['deriveKey', 'deriveBits']), - subtle.importKey( - 'spki', - Buffer.from(kTestData.spki, 'hex'), - { name: 'NODE-DH' }, - true, []), - ]); - return { - privateKey, - publicKey, - result: kTestData.result, - }; -} - -(async function() { - const { - publicKey, - privateKey, - result - } = await prepareKeys(); - - { - // Good parameters - const bits = await subtle.deriveBits({ - name: 'NODE-DH', - public: publicKey - }, privateKey, null); - - assert(bits instanceof ArrayBuffer); - assert.strictEqual(Buffer.from(bits).toString('hex'), result); - } - - { - // Case insensitivity - const bits = await subtle.deriveBits({ - name: 'node-dH', - public: publicKey - }, privateKey, null); - - assert.strictEqual(Buffer.from(bits).toString('hex'), result); - } - - { - // Short Result - const bits = await subtle.deriveBits({ - name: 'NODE-DH', - public: publicKey - }, privateKey, 16); - - assert.strictEqual( - Buffer.from(bits).toString('hex'), - result.slice(0, 4)); - } - - { - // Too long result - await assert.rejects(subtle.deriveBits({ - name: 'NODE-DH', - public: publicKey - }, privateKey, result.length * 16), { - message: /derived bit length is too small/ - }); - } - - { - // Non-multiple of 8 - const bits = await subtle.deriveBits({ - name: 'NODE-DH', - public: publicKey - }, privateKey, 15); - - assert.strictEqual( - Buffer.from(bits).toString('hex'), - result.slice(0, 2)); - } - - // Error tests - { - // Missing public property - await assert.rejects( - subtle.deriveBits( - { name: 'NODE-DH' }, - privateKey, - null), - { code: 'ERR_INVALID_ARG_TYPE' }); - } - - { - // The public property is not a CryptoKey - await assert.rejects( - subtle.deriveBits( - { - name: 'NODE-DH', - public: { message: 'Not a CryptoKey' } - }, - privateKey, - null), - { code: 'ERR_INVALID_ARG_TYPE' }); - } - - { - // Incorrect public key algorithm - const { publicKey } = await subtle.generateKey( - { - name: 'ECDSA', - namedCurve: 'P-521' - }, false, ['verify']); - - await assert.rejects(subtle.deriveBits({ - name: 'NODE-DH', - public: publicKey - }, privateKey, null), { - message: /Keys must be DH keys/ - }); - } - - { - // Private key does not have correct usages - const privateKey = await subtle.importKey( - 'pkcs8', - Buffer.from(kTestData.pkcs8, 'hex'), - { - name: 'NODE-DH', - }, false, ['deriveKey']); - - await assert.rejects(subtle.deriveBits({ - name: 'NODE-DH', - public: publicKey, - }, privateKey, null), { - message: /baseKey does not have deriveBits usage/ - }); - } -})().then(common.mustCall()); diff --git a/test/parallel/test-webcrypto-derivebits.js b/test/parallel/test-webcrypto-derivebits.js index 95c38f454fbb93..442423954b10b2 100644 --- a/test/parallel/test-webcrypto-derivebits.js +++ b/test/parallel/test-webcrypto-derivebits.js @@ -9,8 +9,6 @@ if (!common.hasCrypto) const assert = require('assert'); const { subtle } = require('crypto').webcrypto; -const { internalBinding } = require('internal/test/binding'); - // This is only a partial test. The WebCrypto Web Platform Tests // will provide much greater coverage. @@ -103,32 +101,28 @@ const { internalBinding } = require('internal/test/binding'); tests.then(common.mustCall()); } -// Test Scrypt bit derivation -if (typeof internalBinding('crypto').ScryptJob === 'function') { - async function test(pass, salt, length, expected) { - const ec = new TextEncoder(); - const key = await subtle.importKey( - 'raw', - ec.encode(pass), - { name: 'NODE-SCRYPT' }, - false, ['deriveBits']); - const secret = await subtle.deriveBits({ - name: 'NODE-SCRYPT', - salt: ec.encode(salt), - }, key, length); - assert(secret instanceof ArrayBuffer); - assert.strictEqual(Buffer.from(secret).toString('hex'), expected); - } +// Test X25519 and X448 bit derivation +{ + async function test(name) { + const [alice, bob] = await Promise.all([ + subtle.generateKey({ name }, true, ['deriveBits']), + subtle.generateKey({ name }, true, ['deriveBits']), + ]); - const kTests = [ - ['hello', 'there', 512, - '30ddda6feabaac788eb81cc38f496cd5d9a165d320c537ea05331fe720db1061b3a27' + - 'b91a8428e49d44078c1fa395cb1c6db336ba44ccb80faa6d74918769374'], - ['hello', 'there', 128, - '30ddda6feabaac788eb81cc38f496cd5'], - ]; + const [secret1, secret2] = await Promise.all([ + subtle.deriveBits({ + name, public: alice.publicKey + }, bob.privateKey, 128), + subtle.deriveBits({ + name, public: bob.publicKey + }, alice.privateKey, 128), + ]); - const tests = Promise.all(kTests.map((args) => test(...args))); + assert(secret1 instanceof ArrayBuffer); + assert(secret2 instanceof ArrayBuffer); + assert.deepStrictEqual(secret1, secret2); + } - tests.then(common.mustCall()); + test('X25519').then(common.mustCall()); + test('X448').then(common.mustCall()); } diff --git a/test/parallel/test-webcrypto-derivekey-cfrg.js b/test/parallel/test-webcrypto-derivekey-cfrg.js new file mode 100644 index 00000000000000..ddf51626a89b4b --- /dev/null +++ b/test/parallel/test-webcrypto-derivekey-cfrg.js @@ -0,0 +1,188 @@ +'use strict'; + +const common = require('../common'); + +if (!common.hasCrypto) + common.skip('missing crypto'); + +const assert = require('assert'); +const { webcrypto } = require('crypto'); +const { subtle } = webcrypto; + +const kTests = [ + { + name: 'X25519', + size: 32, + pkcs8: '302e020100300506032b656e04220420c8838e76d057dfb7d8c95a69e138160ad' + + 'd6373fd71a4d276bb56e3a81b64ff61', + spki: '302a300506032b656e0321001cf2b1e6022ec537371ed7f53e54fa1154d83e98eb' + + '64ea51fae5b3307cfe9706', + result: '2768409dfab99ec23b8c89b93ff5880295f76176088f89e43dfebe7ea1950008' + }, + { + name: 'X448', + size: 56, + pkcs8: '3046020100300506032b656f043a043858c7d29a3eb519b29d00cfb191bb64fc6' + + 'd8a42d8f17176272b89f2272d1819295c6525c0829671b052ef0727530f188e31' + + 'd0cc53bf26929e', + spki: '3042300506032b656f033900b604a1d1a5cd1d9426d561ef630a9eb16cbe69d5b9' + + 'ca615edc53633efb52ea31e6e6a0a1dbacc6e76cbce6482d7e4ba3d55d9e802765' + + 'ce6f', + result: 'f0f6c5f17f94f4291eab7178866d37ec8906dd6c514143dc85be7cf28deff39b' + }, +]; + +async function prepareKeys() { + const keys = {}; + await Promise.all( + kTests.map(async ({ name, size, pkcs8, spki, result }) => { + const [ + privateKey, + publicKey, + ] = await Promise.all([ + subtle.importKey( + 'pkcs8', + Buffer.from(pkcs8, 'hex'), + { name }, + true, + ['deriveKey', 'deriveBits']), + subtle.importKey( + 'spki', + Buffer.from(spki, 'hex'), + { name }, + true, + ['deriveKey', 'deriveBits']), + ]); + keys[name] = { + privateKey, + publicKey, + size, + result, + }; + })); + return keys; +} + +(async function() { + const keys = await prepareKeys(); + const otherArgs = [ + { name: 'HMAC', hash: 'SHA-256', length: 256 }, + true, + ['sign', 'verify']]; + + await Promise.all( + Object.keys(keys).map(async (name) => { + const { result, privateKey, publicKey } = keys[name]; + + { + // Good parameters + const key = await subtle.deriveKey({ + name, + public: publicKey + }, privateKey, ...otherArgs); + + const raw = await subtle.exportKey('raw', key); + + assert.strictEqual(Buffer.from(raw).toString('hex'), result); + } + + { + // Case insensitivity + const key = await subtle.deriveKey({ + name: name.toLowerCase(), + public: publicKey + }, privateKey, { + name: 'HmAc', + hash: 'SHA-256', + length: 256 + }, true, ['sign', 'verify']); + + const raw = await subtle.exportKey('raw', key); + + assert.strictEqual(Buffer.from(raw).toString('hex'), result); + } + })); + + // Error tests + { + // Missing public property + await assert.rejects( + subtle.deriveKey( + { name: 'X448' }, + keys.X448.privateKey, + ...otherArgs), + { code: 'ERR_INVALID_ARG_TYPE' }); + } + + { + // The public property is not a CryptoKey + await assert.rejects( + subtle.deriveKey( + { + name: 'X448', + public: { message: 'Not a CryptoKey' } + }, + keys.X448.privateKey, + ...otherArgs), + { code: 'ERR_INVALID_ARG_TYPE' }); + } + + { + // Mismatched named curves + await assert.rejects( + subtle.deriveKey( + { + name: 'X448', + public: keys.X25519.publicKey + }, + keys.X448.privateKey, + ...otherArgs), + { message: 'The public and private keys must be of the same type' }); + } + + { + // Base key is not a private key + await assert.rejects( + subtle.deriveKey( + { + name: 'X448', + public: keys.X448.publicKey + }, + keys.X448.publicKey, + ...otherArgs), + { message: /baseKey must be a private key/ }); + } + + { + // Base key is not a private key + await assert.rejects( + subtle.deriveKey( + { + name: 'X448', + public: keys.X448.privateKey + }, + keys.X448.publicKey, + ...otherArgs), + { message: /algorithm\.public must be a public key/ }); + } + + { + // Public is a secret key + const keyData = webcrypto.getRandomValues(new Uint8Array(32)); + const key = await subtle.importKey( + 'raw', + keyData, + { name: 'AES-CBC', length: 256 }, + false, ['encrypt']); + + await assert.rejects( + subtle.deriveKey( + { + name: 'X448', + public: key + }, + keys.X448.publicKey, + ...otherArgs), + { message: /algorithm\.public must be a public key/ }); + } +})().then(common.mustCall()); diff --git a/test/parallel/test-webcrypto-derivekey-ecdh.js b/test/parallel/test-webcrypto-derivekey-ecdh.js index 42c8d250f42b06..2ca54957a55304 100644 --- a/test/parallel/test-webcrypto-derivekey-ecdh.js +++ b/test/parallel/test-webcrypto-derivekey-ecdh.js @@ -165,7 +165,7 @@ async function prepareKeys() { namedCurve: 'P-521' }, false, - ['verify']); + ['sign', 'verify']); await assert.rejects( subtle.deriveKey( @@ -175,7 +175,7 @@ async function prepareKeys() { }, keys['P-521'].privateKey, ...otherArgs), - { message: /Keys must be ECDH keys/ }); + { message: /Keys must be ECDH, X25519, or X448 keys/ }); } { diff --git a/test/parallel/test-webcrypto-derivekey.js b/test/parallel/test-webcrypto-derivekey.js index ee48a61f4ac8f5..f8eb996000ec89 100644 --- a/test/parallel/test-webcrypto-derivekey.js +++ b/test/parallel/test-webcrypto-derivekey.js @@ -7,14 +7,12 @@ if (!common.hasCrypto) common.skip('missing crypto'); const assert = require('assert'); -const { subtle } = require('crypto').webcrypto; - -const { internalBinding } = require('internal/test/binding'); +const { webcrypto: { subtle }, KeyObject } = require('crypto'); // This is only a partial test. The WebCrypto Web Platform Tests // will provide much greater coverage. -// Test ECDH bit derivation +// Test ECDH key derivation { async function test(namedCurve) { const [alice, bob] = await Promise.all([ @@ -48,7 +46,7 @@ const { internalBinding } = require('internal/test/binding'); test('P-521').then(common.mustCall()); } -// Test HKDF bit derivation +// Test HKDF key derivation { async function test(pass, info, salt, hash, expected) { const ec = new TextEncoder(); @@ -85,7 +83,7 @@ const { internalBinding } = require('internal/test/binding'); tests.then(common.mustCall()); } -// Test PBKDF2 bit derivation +// Test PBKDF2 key derivation { async function test(pass, salt, iterations, hash, expected) { const ec = new TextEncoder(); @@ -121,34 +119,69 @@ const { internalBinding } = require('internal/test/binding'); tests.then(common.mustCall()); } -// Test Scrypt bit derivation -if (typeof internalBinding('crypto').ScryptJob === 'function') { - async function test(pass, salt, expected) { - const ec = new TextEncoder(); - const key = await subtle.importKey( - 'raw', - ec.encode(pass), - { name: 'NODE-SCRYPT' }, - false, ['deriveKey']); - const secret = await subtle.deriveKey({ - name: 'NODE-SCRYPT', - salt: ec.encode(salt), - }, key, { - name: 'AES-CTR', - length: 256 - }, true, ['encrypt']); +// Test default key lengths +{ + const vectors = [ + ['PBKDF2', 'deriveKey', 528], + ['HKDF', 'deriveKey', 528], + [{ name: 'HMAC', hash: 'SHA-1' }, 'sign', 160], + [{ name: 'HMAC', hash: 'SHA-256' }, 'sign', 256], + [{ name: 'HMAC', hash: 'SHA-384' }, 'sign', 384], + [{ name: 'HMAC', hash: 'SHA-512' }, 'sign', 512], + ]; - const raw = await subtle.exportKey('raw', secret); + (async () => { + const keyPair = await subtle.generateKey({ name: 'ECDH', namedCurve: 'P-521' }, false, ['deriveKey']); + for (const [derivedKeyAlgorithm, usage, expected] of vectors) { + const derived = await subtle.deriveKey( + { name: 'ECDH', public: keyPair.publicKey }, + keyPair.privateKey, + derivedKeyAlgorithm, + false, + [usage]); + + if (derived.algorithm.name === 'HMAC') { + assert.strictEqual(derived.algorithm.length, expected); + } else { + // KDFs cannot be exportable and do not indicate their length + const secretKey = KeyObject.from(derived); + assert.strictEqual(secretKey.symmetricKeySize, expected / 8); + } + } + })().then(common.mustCall()); +} - assert.strictEqual(Buffer.from(raw).toString('hex'), expected); - } +// Test X25519 and X448 key derivation +{ + async function test(name) { + const [alice, bob] = await Promise.all([ + subtle.generateKey({ name }, true, ['deriveKey']), + subtle.generateKey({ name }, true, ['deriveKey']), + ]); - const kTests = [ - ['hello', 'there', - '30ddda6feabaac788eb81cc38f496cd5d9a165d320c537ea05331fe720db1061'], - ]; + const [secret1, secret2] = await Promise.all([ + subtle.deriveKey({ + name, public: alice.publicKey + }, bob.privateKey, { + name: 'AES-CBC', + length: 256 + }, true, ['encrypt']), + subtle.deriveKey({ + name, public: bob.publicKey + }, alice.privateKey, { + name: 'AES-CBC', + length: 256 + }, true, ['encrypt']), + ]); - const tests = Promise.all(kTests.map((args) => test(...args))); + const [raw1, raw2] = await Promise.all([ + subtle.exportKey('raw', secret1), + subtle.exportKey('raw', secret2), + ]); - tests.then(common.mustCall()); + assert.deepStrictEqual(raw1, raw2); + } + + test('X25519').then(common.mustCall()); + test('X448').then(common.mustCall()); } diff --git a/test/parallel/test-webcrypto-digest.js b/test/parallel/test-webcrypto-digest.js index 78b12ea6a5574c..b8680564d1a1a3 100644 --- a/test/parallel/test-webcrypto-digest.js +++ b/test/parallel/test-webcrypto-digest.js @@ -168,3 +168,9 @@ async function testDigest(size, name) { await Promise.all(variations); })().then(common.mustCall()); + +(async () => { + await assert.rejects(subtle.digest('RSA-OAEP', Buffer.alloc(1)), { + name: 'NotSupportedError', + }); +})().then(common.mustCall()); diff --git a/test/parallel/test-webcrypto-ed25519-ed448.js b/test/parallel/test-webcrypto-ed25519-ed448.js deleted file mode 100644 index b18f3f9d3b4d44..00000000000000 --- a/test/parallel/test-webcrypto-ed25519-ed448.js +++ /dev/null @@ -1,485 +0,0 @@ -// Flags: --expose-internals -'use strict'; - -const common = require('../common'); - -if (!common.hasCrypto) - common.skip('missing crypto'); - -const assert = require('assert'); -const { - generateKeyPairSync, - webcrypto: { subtle } -} = require('crypto'); - -const { internalBinding } = require('internal/test/binding'); -const { DOMException } = internalBinding('messaging'); - -async function generateKey(namedCurve) { - return subtle.generateKey( - { - name: namedCurve, - namedCurve - }, - true, - ['sign', 'verify']); -} - -async function test1(namedCurve) { - const { - publicKey, - privateKey, - } = await generateKey(namedCurve); - - const data = Buffer.from('hello world'); - - assert(publicKey); - assert(privateKey); - - const sig = await subtle.sign( - { name: namedCurve }, - privateKey, - data - ); - - assert(sig); - - assert(await subtle.verify( - { name: namedCurve }, - publicKey, - sig, - data - )); -} - -Promise.all([ - test1('NODE-ED25519'), - test1('NODE-ED448'), -]).then(common.mustCall()); - -assert.rejects( - subtle.importKey( - 'raw', - Buffer.alloc(10), - { - name: 'NODE-ED25519', - namedCurve: 'NODE-ED25519' - }, - false, - ['sign']), - { - message: /NODE-ED25519 raw keys must be exactly 32-bytes/ - }).then(common.mustCall()); - -assert.rejects( - subtle.importKey( - 'raw', - Buffer.alloc(10), - { - name: 'NODE-ED448', - namedCurve: 'NODE-ED448' - }, - false, - ['sign']), - { - message: /NODE-ED448 raw keys must be exactly 57-bytes/ - }).then(common.mustCall()); - -const testVectors = { - 'NODE-ED25519': [ - { - privateKey: - Buffer.from( - '9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60', - 'hex'), - publicKey: - Buffer.from( - 'd75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a', - 'hex'), - message: Buffer.alloc(0), - sig: - Buffer.from( - 'e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e06522490155' + - '5fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b', - 'hex'), - crv: 'Ed25519', - }, - { - privateKey: - Buffer.from( - '4ccd089b28ff96da9db6c346ec114e0f5b8a319f35aba624da8cf6ed4fb8a6fb', - 'hex'), - publicKey: - Buffer.from( - '3d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c', - 'hex'), - message: Buffer.from('72', 'hex'), - sig: - Buffer.from( - '92a009a9f0d4cab8720e820b5f642540a2b27b5416503f8fb3762223ebdb69da' + - '085ac1e43e15996e458f3613d0f11d8c387b2eaeb4302aeeb00d291612bb0c00', - 'hex'), - crv: 'Ed25519', - }, - { - privateKey: - Buffer.from( - 'c5aa8df43f9f837bedb7442f31dcb7b166d38535076f094b85ce3a2e0b4458f7', - 'hex'), - publicKey: - Buffer.from( - 'fc51cd8e6218a1a38da47ed00230f0580816ed13ba3303ac5deb911548908025', - 'hex'), - message: Buffer.from('af82', 'hex'), - sig: - Buffer.from( - '6291d657deec24024827e69c3abe01a30ce548a284743a445e3680d7db5ac3ac' + - '18ff9b538d16f290ae67f760984dc6594a7c15e9716ed28dc027beceea1ec40a', - 'hex'), - crv: 'Ed25519', - }, - { - privateKey: - Buffer.from( - 'f5e5767cf153319517630f226876b86c8160cc583bc013744c6bf255f5cc0ee5', - 'hex'), - publicKey: - Buffer.from( - '278117fc144c72340f67d0f2316e8386ceffbf2b2428c9c51fef7c597f1d426e', - 'hex'), - message: Buffer.from( - '08b8b2b733424243760fe426a4b54908632110a66c2f6591eabd3345e3e4eb98' + - 'fa6e264bf09efe12ee50f8f54e9f77b1e355f6c50544e23fb1433ddf73be84d8' + - '79de7c0046dc4996d9e773f4bc9efe5738829adb26c81b37c93a1b270b20329d' + - '658675fc6ea534e0810a4432826bf58c941efb65d57a338bbd2e26640f89ffbc' + - '1a858efcb8550ee3a5e1998bd177e93a7363c344fe6b199ee5d02e82d522c4fe' + - 'ba15452f80288a821a579116ec6dad2b3b310da903401aa62100ab5d1a36553e' + - '06203b33890cc9b832f79ef80560ccb9a39ce767967ed628c6ad573cb116dbef' + - 'efd75499da96bd68a8a97b928a8bbc103b6621fcde2beca1231d206be6cd9ec7' + - 'aff6f6c94fcd7204ed3455c68c83f4a41da4af2b74ef5c53f1d8ac70bdcb7ed1' + - '85ce81bd84359d44254d95629e9855a94a7c1958d1f8ada5d0532ed8a5aa3fb2' + - 'd17ba70eb6248e594e1a2297acbbb39d502f1a8c6eb6f1ce22b3de1a1f40cc24' + - '554119a831a9aad6079cad88425de6bde1a9187ebb6092cf67bf2b13fd65f270' + - '88d78b7e883c8759d2c4f5c65adb7553878ad575f9fad878e80a0c9ba63bcbcc' + - '2732e69485bbc9c90bfbd62481d9089beccf80cfe2df16a2cf65bd92dd597b07' + - '07e0917af48bbb75fed413d238f5555a7a569d80c3414a8d0859dc65a46128ba' + - 'b27af87a71314f318c782b23ebfe808b82b0ce26401d2e22f04d83d1255dc51a' + - 'ddd3b75a2b1ae0784504df543af8969be3ea7082ff7fc9888c144da2af58429e' + - 'c96031dbcad3dad9af0dcbaaaf268cb8fcffead94f3c7ca495e056a9b47acdb7' + - '51fb73e666c6c655ade8297297d07ad1ba5e43f1bca32301651339e22904cc8c' + - '42f58c30c04aafdb038dda0847dd988dcda6f3bfd15c4b4c4525004aa06eeff8' + - 'ca61783aacec57fb3d1f92b0fe2fd1a85f6724517b65e614ad6808d6f6ee34df' + - 'f7310fdc82aebfd904b01e1dc54b2927094b2db68d6f903b68401adebf5a7e08' + - 'd78ff4ef5d63653a65040cf9bfd4aca7984a74d37145986780fc0b16ac451649' + - 'de6188a7dbdf191f64b5fc5e2ab47b57f7f7276cd419c17a3ca8e1b939ae49e4' + - '88acba6b965610b5480109c8b17b80e1b7b750dfc7598d5d5011fd2dcc5600a3' + - '2ef5b52a1ecc820e308aa342721aac0943bf6686b64b2579376504ccc493d97e' + - '6aed3fb0f9cd71a43dd497f01f17c0e2cb3797aa2a2f256656168e6c496afc5f' + - 'b93246f6b1116398a346f1a641f3b041e989f7914f90cc2c7fff357876e506b5' + - '0d334ba77c225bc307ba537152f3f1610e4eafe595f6d9d90d11faa933a15ef1' + - '369546868a7f3a45a96768d40fd9d03412c091c6315cf4fde7cb68606937380d' + - 'b2eaaa707b4c4185c32eddcdd306705e4dc1ffc872eeee475a64dfac86aba41c' + - '0618983f8741c5ef68d3a101e8a3b8cac60c905c15fc910840b94c00a0b9d0', - 'hex'), - sig: Buffer.from( - '0aab4c900501b3e24d7cdf4663326a3a87df5e4843b2cbdb67cbf6e460fec350' + - 'aa5371b1508f9f4528ecea23c436d94b5e8fcd4f681e30a6ac00a9704a188a03', - 'hex'), - crv: 'Ed25519', - }, - ], - 'NODE-ED448': [ - { - privateKey: - Buffer.from( - '6c82a562cb808d10d632be89c8513ebf6c929f34ddfa8c9f63c9960ef6e348a3' + - '528c8a3fcc2f044e39a3fc5b94492f8f032e7549a20098f95b', 'hex'), - publicKey: - Buffer.from( - '5fd7449b59b461fd2ce787ec616ad46a1da1342485a70e1f8a0ea75d80e96778' + - 'edf124769b46c7061bd6783df1e50f6cd1fa1abeafe8256180', 'hex'), - message: Buffer.alloc(0), - sig: - Buffer.from( - '533a37f6bbe457251f023c0d88f976ae2dfb504a843e34d2074fd823d41a591f' + - '2b233f034f628281f2fd7a22ddd47d7828c59bd0a21bfd3980ff0d2028d4b18a' + - '9df63e006c5d1c2d345b925d8dc00b4104852db99ac5c7cdda8530a113a0f4db' + - 'b61149f05a7363268c71d95808ff2e652600', 'hex'), - crv: 'Ed448', - }, - { - privateKey: - Buffer.from( - 'c4eab05d357007c632f3dbb48489924d552b08fe0c353a0d4a1f00acda2c463a' + - 'fbea67c5e8d2877c5e3bc397a659949ef8021e954e0a12274e', 'hex'), - publicKey: - Buffer.from( - '43ba28f430cdff456ae531545f7ecd0ac834a55d9358c0372bfa0c6c6798c086' + - '6aea01eb00742802b8438ea4cb82169c235160627b4c3a9480', 'hex'), - message: Buffer.from('03', 'hex'), - sig: - Buffer.from( - '26b8f91727bd62897af15e41eb43c377efb9c610d48f2335cb0bd0087810f435' + - '2541b143c4b981b7e18f62de8ccdf633fc1bf037ab7cd779805e0dbcc0aae1cb' + - 'cee1afb2e027df36bc04dcecbf154336c19f0af7e0a6472905e799f1953d2a0f' + - 'f3348ab21aa4adafd1d234441cf807c03a00', 'hex'), - crv: 'Ed448', - }, - { - privateKey: - Buffer.from( - 'cd23d24f714274e744343237b93290f511f6425f98e64459ff203e8985083ffd' + - 'f60500553abc0e05cd02184bdb89c4ccd67e187951267eb328', 'hex'), - publicKey: - Buffer.from( - 'dcea9e78f35a1bf3499a831b10b86c90aac01cd84b67a0109b55a36e9328b1e3' + - '65fce161d71ce7131a543ea4cb5f7e9f1d8b00696447001400', 'hex'), - message: Buffer.from('0c3e544074ec63b0265e0c', 'hex'), - sig: - Buffer.from( - '1f0a8888ce25e8d458a21130879b840a9089d999aaba039eaf3e3afa090a09d3' + - '89dba82c4ff2ae8ac5cdfb7c55e94d5d961a29fe0109941e00b8dbdeea6d3b05' + - '1068df7254c0cdc129cbe62db2dc957dbb47b51fd3f213fb8698f064774250a5' + - '028961c9bf8ffd973fe5d5c206492b140e00', 'hex'), - crv: 'Ed448', - }, - ] -}; - -async function test2(namedCurve) { - const vectors = testVectors[namedCurve]; - await Promise.all(vectors.map(async (vector) => { - const [ - privateKey, - publicKey, - ] = await Promise.all([ - subtle.importKey( - 'raw', - vector.privateKey, - { - name: namedCurve, - namedCurve - }, - true, ['sign']), - subtle.importKey( - 'raw', - vector.publicKey, - { - name: namedCurve, - namedCurve, - public: true - }, - true, ['verify']), - ]); - - const rawPublicKey = await subtle.exportKey('raw', publicKey); - assert.deepStrictEqual(Buffer.from(rawPublicKey), vector.publicKey); - - assert.rejects(subtle.exportKey('raw', privateKey), { - message: new RegExp(`Unable to export a raw ${namedCurve} private key`) - }).then(common.mustCall()); - - const sig = await subtle.sign( - { name: namedCurve }, - privateKey, - vector.message - ); - - assert(sig); - - assert(await subtle.verify( - { name: namedCurve }, - publicKey, - vector.sig, - vector.message - )); - - const [ - publicKeyJwk, - privateKeyJwk, - ] = await Promise.all([ - subtle.exportKey('jwk', publicKey), - subtle.exportKey('jwk', privateKey), - ]); - assert.strictEqual(publicKeyJwk.kty, 'OKP'); - assert.strictEqual(privateKeyJwk.kty, 'OKP'); - assert.strictEqual(publicKeyJwk.crv, vector.crv); - assert.strictEqual(privateKeyJwk.crv, vector.crv); - assert.deepStrictEqual( - Buffer.from(publicKeyJwk.x, 'base64'), - vector.publicKey); - assert.deepStrictEqual( - Buffer.from(privateKeyJwk.x, 'base64'), - vector.publicKey); - assert.deepStrictEqual( - Buffer.from(privateKeyJwk.d, 'base64'), - vector.privateKey); - })); -} - -Promise.all([ - test2('NODE-ED25519'), - test2('NODE-ED448'), -]).then(common.mustCall()); - -assert.rejects( - subtle.generateKey( - { - name: 'ECDSA', - namedCurve: 'NODE-X25519' - }, - true, - ['sign', 'verify']), - { - message: /Unsupported named curves for ECDSA/ - }).then(common.mustCall()); - -assert.rejects( - subtle.generateKey( - { - name: 'ECDSA', - namedCurve: 'NODE-X448' - }, - true, - ['sign', 'verify']), - { - message: /Unsupported named curves for ECDSA/ - }).then(common.mustCall()); - -assert.rejects( - subtle.generateKey( - { - name: 'ECDSA', - namedCurve: 'NODE-ED25519' - }, - true, - ['sign', 'verify']), - { - message: /Unsupported named curves for ECDSA/ - }).then(common.mustCall()); - -assert.rejects( - subtle.generateKey( - { - name: 'ECDSA', - namedCurve: 'NODE-ED448' - }, - true, - ['sign', 'verify']), - { - message: /Unsupported named curves for ECDSA/ - }).then(common.mustCall()); - -{ - for (const asymmetricKeyType of ['ed25519', 'ed448']) { - const { publicKey, privateKey } = generateKeyPairSync(asymmetricKeyType); - for (const keyObject of [publicKey, privateKey]) { - const namedCurve = `NODE-${asymmetricKeyType.toUpperCase()}`; - subtle.importKey( - 'node.keyObject', - keyObject, - { name: namedCurve, namedCurve }, - true, - keyObject.type === 'private' ? ['sign'] : ['verify'], - ).then((cryptoKey) => { - assert.strictEqual(cryptoKey.type, keyObject.type); - assert.strictEqual(cryptoKey.algorithm.name, namedCurve); - }, common.mustNotCall()); - - subtle.importKey( - keyObject.type === 'private' ? 'pkcs8' : 'spki', - keyObject.export({ - format: 'der', - type: keyObject.type === 'private' ? 'pkcs8' : 'spki', - }), - { name: namedCurve, namedCurve }, - true, - keyObject.type === 'private' ? ['sign'] : ['verify'], - ).then((cryptoKey) => { - assert.strictEqual(cryptoKey.type, keyObject.type); - assert.strictEqual(cryptoKey.algorithm.name, namedCurve); - assert.strictEqual(cryptoKey.algorithm.namedCurve, namedCurve); - }, common.mustNotCall()); - - assert.rejects( - subtle.importKey( - 'node.keyObject', - keyObject, - { - name: 'ECDSA', - namedCurve, - }, - true, - keyObject.type === 'private' ? ['sign'] : ['verify'] - ), - { - message: /Invalid algorithm name/ - }).then(common.mustCall()); - - assert.rejects( - subtle.importKey( - 'node.keyObject', - keyObject, - { - name: 'ECDH', - namedCurve, - }, - true, - keyObject.type === 'private' ? ['deriveBits', 'deriveKey'] : [], - ), - { - message: /Invalid algorithm name/ - }).then(common.mustCall()); - } - } -} - -{ - // See: https://github.com/nodejs/node/pull/40300 - for (const namedCurve of ['NODE-ED25519', 'NODE-ED448']) { - assert.rejects( - (async () => { - const { privateKey } = await generateKey(namedCurve); - return subtle.sign( - { - name: namedCurve, - hash: 'SHA-256' - }, - privateKey, - Buffer.from('abc') - ); - })(), - (err) => { - assert.strictEqual(err.message, `Hash is not permitted for ${namedCurve}`); - assert(err instanceof DOMException); - return true; - }).then(common.mustCall()); - - assert.rejects( - (async () => { - const { publicKey, privateKey } = await generateKey(namedCurve); - const signature = await subtle.sign( - { - name: namedCurve, - }, - privateKey, - Buffer.from('abc') - ).catch(common.mustNotCall()); - - return subtle.verify( - { - name: namedCurve, - hash: 'SHA-256', - }, - publicKey, - signature, - Buffer.from('abc') - ); - })(), - (err) => { - assert.strictEqual(err.message, `Hash is not permitted for ${namedCurve}`); - assert(err instanceof DOMException); - return true; - }).then(common.mustCall()); - } -} diff --git a/test/parallel/test-webcrypto-export-import-cfrg.js b/test/parallel/test-webcrypto-export-import-cfrg.js new file mode 100644 index 00000000000000..6d162ac61c2e30 --- /dev/null +++ b/test/parallel/test-webcrypto-export-import-cfrg.js @@ -0,0 +1,333 @@ +'use strict'; + +const common = require('../common'); +const fixtures = require('../common/fixtures'); + +if (!common.hasCrypto) + common.skip('missing crypto'); + +const assert = require('assert'); +const crypto = require('crypto'); +const { subtle } = crypto.webcrypto; + +const keyData = { + 'Ed25519': { + jwsAlg: 'EdDSA', + spki: Buffer.from( + '302a300506032b6570032100a054b618c12b26c8d43595a5c38dd2b0140b944a' + + '151f75003278c2b6c58ec08f', 'hex'), + pkcs8: Buffer.from( + '302e020100300506032b657004220420d53150bdcd17b4d4b21ae756d4965639' + + 'd75b28f56ff9111b1f88326913e445bc', 'hex'), + jwk: { + kty: 'OKP', + crv: 'Ed25519', + x: 'oFS2GMErJsjUNZWlw43SsBQLlEoVH3UAMnjCtsWOwI8', + d: '1TFQvc0XtNSyGudW1JZWOddbKPVv-REbH4gyaRPkRbw' + } + }, + 'Ed448': { + jwsAlg: 'EdDSA', + spki: Buffer.from( + '3043300506032b6571033a0008cc38160c85bca5656ac4924af7ea97a9161b20' + + '2528273dcb84afd2eeb99ac912a401b34ef15ef4d9486406a6eecc31e5909219' + + 'bd54866800', 'hex'), + pkcs8: Buffer.from( + '3047020100300506032b6571043b0439afd05b2fbb153b47c18dfa66baaed0de' + + 'fb4e88c651487cdee0fafc40fa3d048fe1cd145a44143243c0468166b5bc161a' + + '82e3b904f3e2fcaaf9', 'hex'), + jwk: { + kty: 'OKP', + crv: 'Ed448', + x: 'CMw4FgyFvKVlasSSSvfql6kWGyAlKCc9y4Sv0u65mskSpAGzTvFe9NlIZAam7' + + 'swx5ZCSGb1UhmgA', + d: 'r9BbL7sVO0fBjfpmuq7Q3vtOiMZRSHze4Pr8QPo9BI_hzRRaRBQyQ8BGgWa1v' + + 'BYaguO5BPPi_Kr5' + } + }, + 'X25519': { + jwsAlg: 'ECDH-ES', + spki: Buffer.from( + '302a300506032b656e032100f38d9f4e621a44e0428176a4c8a534b34f07f8db' + + '30152f9ca0167aabf598fe65', 'hex'), + pkcs8: Buffer.from( + '302e020100300506032b656e04220420a8327850317b4b03a5a8b4e923413b1d' + + 'a4a642e0d6f7a72cf4d16a549e628a5f', 'hex'), + jwk: { + kty: 'OKP', + crv: 'X25519', + x: '842fTmIaROBCgXakyKU0s08H-NswFS-coBZ6q_WY_mU', + d: 'qDJ4UDF7SwOlqLTpI0E7HaSmQuDW96cs9NFqVJ5iil8' + } + }, + 'X448': { + jwsAlg: 'ECDH-ES', + spki: Buffer.from( + '3042300506032b656f0339001d451c8c0c369a42eadfc2875cd44953caeb46c4' + + '66dc86568280bfdbbb01f4709a1b0b1e0dd66cf7b11c84119ddc98890db72891' + + '29e30da4', 'hex'), + pkcs8: Buffer.from( + '3046020100300506032b656f043a0438fc818f6546a81f963c27765dc1c05bfd' + + 'b169667e5e0cf45318ed1cb93872217ab0d9004e0c7dd0dcb00192f72039cc1a' + + '1dff750ec31c8afb', 'hex'), + jwk: { + kty: 'OKP', + crv: 'X448', + x: 'HUUcjAw2mkLq38KHXNRJU8rrRsRm3IZWgoC_27sB9HCaGwseDdZs97EchBGd3' + + 'JiJDbcokSnjDaQ', + d: '_IGPZUaoH5Y8J3ZdwcBb_bFpZn5eDPRTGO0cuThyIXqw2QBODH3Q3LABkvcgO' + + 'cwaHf91DsMcivs' + } + } +}; + +const testVectors = [ + { + name: 'Ed25519', + privateUsages: ['sign'], + publicUsages: ['verify'] + }, + { + name: 'Ed448', + privateUsages: ['sign'], + publicUsages: ['verify'] + }, + { + name: 'X25519', + privateUsages: ['deriveKey', 'deriveBits'], + publicUsages: [] + }, + { + name: 'X448', + privateUsages: ['deriveKey', 'deriveBits'], + publicUsages: [] + }, +]; + +async function testImportSpki({ name, publicUsages }, extractable) { + const key = await subtle.importKey( + 'spki', + keyData[name].spki, + { name }, + extractable, + publicUsages); + assert.strictEqual(key.type, 'public'); + assert.strictEqual(key.extractable, extractable); + assert.deepStrictEqual(key.usages, publicUsages); + assert.deepStrictEqual(key.algorithm.name, name); + + if (extractable) { + // Test the roundtrip + const spki = await subtle.exportKey('spki', key); + assert.strictEqual( + Buffer.from(spki).toString('hex'), + keyData[name].spki.toString('hex')); + } else { + await assert.rejects( + subtle.exportKey('spki', key), { + message: /key is not extractable/ + }); + } + + // Bad usage + await assert.rejects( + subtle.importKey( + 'spki', + keyData[name].spki, + { name }, + extractable, + ['wrapKey']), + { message: /Unsupported key usage/ }); +} + +async function testImportPkcs8({ name, privateUsages }, extractable) { + const key = await subtle.importKey( + 'pkcs8', + keyData[name].pkcs8, + { name }, + extractable, + privateUsages); + assert.strictEqual(key.type, 'private'); + assert.strictEqual(key.extractable, extractable); + assert.deepStrictEqual(key.usages, privateUsages); + assert.deepStrictEqual(key.algorithm.name, name); + + if (extractable) { + // Test the roundtrip + const pkcs8 = await subtle.exportKey('pkcs8', key); + assert.strictEqual( + Buffer.from(pkcs8).toString('hex'), + keyData[name].pkcs8.toString('hex')); + } else { + await assert.rejects( + subtle.exportKey('pkcs8', key), { + message: /key is not extractable/ + }); + } +} + +async function testImportJwk({ name, publicUsages, privateUsages }, extractable) { + + const jwk = keyData[name].jwk; + + const [ + publicKey, + privateKey, + ] = await Promise.all([ + subtle.importKey( + 'jwk', + { + kty: jwk.kty, + crv: jwk.crv, + x: jwk.x, + }, + { name }, + extractable, publicUsages), + subtle.importKey( + 'jwk', + jwk, + { name }, + extractable, + privateUsages), + subtle.importKey( + 'jwk', + { + alg: keyData[name].jwsAlg, + kty: jwk.kty, + crv: jwk.crv, + x: jwk.x, + }, + { name }, + extractable, publicUsages), + subtle.importKey( + 'jwk', + { + ...jwk, + alg: keyData[name].jwsAlg, + }, + { name }, + extractable, + privateUsages), + ]); + + assert.strictEqual(publicKey.type, 'public'); + assert.strictEqual(privateKey.type, 'private'); + assert.strictEqual(publicKey.extractable, extractable); + assert.strictEqual(privateKey.extractable, extractable); + assert.deepStrictEqual(publicKey.usages, publicUsages); + assert.deepStrictEqual(privateKey.usages, privateUsages); + assert.strictEqual(publicKey.algorithm.name, name); + assert.strictEqual(privateKey.algorithm.name, name); + + if (extractable) { + // Test the round trip + const [ + pubJwk, + pvtJwk, + ] = await Promise.all([ + subtle.exportKey('jwk', publicKey), + subtle.exportKey('jwk', privateKey), + ]); + + assert.deepStrictEqual(pubJwk.key_ops, publicUsages); + assert.strictEqual(pubJwk.ext, true); + assert.strictEqual(pubJwk.kty, 'OKP'); + assert.strictEqual(pubJwk.x, jwk.x); + assert.strictEqual(pubJwk.crv, jwk.crv); + + assert.deepStrictEqual(pvtJwk.key_ops, privateUsages); + assert.strictEqual(pvtJwk.ext, true); + assert.strictEqual(pvtJwk.kty, 'OKP'); + assert.strictEqual(pvtJwk.x, jwk.x); + assert.strictEqual(pvtJwk.crv, jwk.crv); + assert.strictEqual(pvtJwk.d, jwk.d); + + if (jwk.crv.startsWith('Ed')) { + assert.strictEqual(pubJwk.alg, 'EdDSA'); + assert.strictEqual(pvtJwk.alg, 'EdDSA'); + } else { + assert.strictEqual(pubJwk.alg, undefined); + assert.strictEqual(pvtJwk.alg, undefined); + } + } else { + await assert.rejects( + subtle.exportKey('jwk', publicKey), { + message: /key is not extractable/ + }); + await assert.rejects( + subtle.exportKey('jwk', privateKey), { + message: /key is not extractable/ + }); + } + + for (const crv of [undefined, name === 'Ed25519' ? 'Ed448' : 'Ed25519']) { + await assert.rejects( + subtle.importKey( + 'jwk', + { kty: jwk.kty, x: jwk.x, y: jwk.y, crv }, + { name }, + extractable, + publicUsages), + { message: /Subtype mismatch/ }); + + await assert.rejects( + subtle.importKey( + 'jwk', + { kty: jwk.kty, d: jwk.d, x: jwk.x, y: jwk.y, crv }, + { name }, + extractable, + publicUsages), + { message: /Subtype mismatch/ }); + } +} + +async function testImportRaw({ name, publicUsages }) { + const jwk = keyData[name].jwk; + + const publicKey = await subtle.importKey( + 'raw', + Buffer.from(jwk.x, 'base64url'), + { name }, + true, publicUsages); + + assert.strictEqual(publicKey.type, 'public'); + assert.deepStrictEqual(publicKey.usages, publicUsages); + assert.strictEqual(publicKey.algorithm.name, name); +} + +(async function() { + const tests = []; + testVectors.forEach((vector) => { + [true, false].forEach((extractable) => { + tests.push(testImportSpki(vector, extractable)); + tests.push(testImportPkcs8(vector, extractable)); + tests.push(testImportJwk(vector, extractable)); + }); + tests.push(testImportRaw(vector)); + }); + + await Promise.all(tests); +})().then(common.mustCall()); + +{ + const rsaPublic = crypto.createPublicKey( + fixtures.readKey('rsa_public_2048.pem')); + const rsaPrivate = crypto.createPrivateKey( + fixtures.readKey('rsa_private_2048.pem')); + + for (const [name, [publicUsage, privateUsage]] of Object.entries({ + 'Ed25519': ['verify', 'sign'], + 'X448': ['deriveBits', 'deriveBits'], + })) { + assert.rejects(subtle.importKey( + 'spki', + rsaPublic.export({ format: 'der', type: 'spki' }), + { name }, + true, [publicUsage]), { message: /Invalid key type/ }); + assert.rejects(subtle.importKey( + 'pkcs8', + rsaPrivate.export({ format: 'der', type: 'pkcs8' }), + { name }, + true, [privateUsage]), { message: /Invalid key type/ }); + } +} diff --git a/test/parallel/test-webcrypto-export-import-dsa.js b/test/parallel/test-webcrypto-export-import-dsa.js deleted file mode 100644 index 01e31d747942ae..00000000000000 --- a/test/parallel/test-webcrypto-export-import-dsa.js +++ /dev/null @@ -1,164 +0,0 @@ -'use strict'; - -const common = require('../common'); -const fixtures = require('../common/fixtures'); - -if (!common.hasCrypto) - common.skip('missing crypto'); - -const assert = require('assert'); -const crypto = require('crypto'); -const { subtle } = crypto.webcrypto; - -const sizes = [1024]; - -const hashes = [ - 'SHA-1', - 'SHA-256', - 'SHA-384', - 'SHA-512', -]; - -const keyData = { - 1024: { - spki: Buffer.from( - '308201c03082013406072a8648ce3804013082012702818100d5f35aa5730e26166fd' + - '3ea81f8f0eeb05bd1250e164b7c76b180b6dae95096d13dee6956e15a9aea7cf18a0d' + - 'f7c5dc326ccef1cbf97636d22f870b76f2607f9a867db2756aecf65505aa48fdea5f5' + - 'ee54f508a05d9dae76bf262b4ca3662cc176b7c628c7bee2076df07f9a64e0402630d' + - 'fee63eaf0ed64d48b469fe1c9ac4a1021d00b14213226cfcfb59e3a0379e559c74ff8' + - 'a7383eb4c41cecb6f3732b702818100a0865b7f8954e7ae587c8e6a89e391e82657c5' + - '8f05ccd94de61748e89e217efab3d9b5fa842ebc62525966916ad2b7af422a9b24078' + - '17a5b382b6581434fd1a169c75ad4d0e3862a3f484e9f9f2a816f943a8e6060f26fe2' + - '7c533587b765e57948439084e76fd6a4fd004f5c78d972cf7f100ec9494a902645bac' + - 'a4b4c6f399303818500028181009a8df69f2fe321869e2094e387bc1dc2b5f3bff2a2' + - 'e23cfba51d3c119fba6b4c15a49485fa811b6955d91d28c9e2e0445a79ddc5426b2fe' + - '44e00a6c9254c776f13fd10dbc934262077b1df72c16bc848817c61fb6a607abe60c7' + - 'd11528ab9bdf55de45495733a047bd75a48b8166f1aa3deab681a2574a4f35106f0d7' + - '8b641d7', 'hex'), - pkcs8: Buffer.from( - '3082015b0201003082013406072a8648ce3804013082012702818100d5f35aa5730e2' + - '6166fd3ea81f8f0eeb05bd1250e164b7c76b180b6dae95096d13dee6956e15a9aea7c' + - 'f18a0df7c5dc326ccef1cbf97636d22f870b76f2607f9a867db2756aecf65505aa48f' + - 'dea5f5ee54f508a05d9dae76bf262b4ca3662cc176b7c628c7bee2076df07f9a64e04' + - '02630dfee63eaf0ed64d48b469fe1c9ac4a1021d00b14213226cfcfb59e3a0379e559' + - 'c74ff8a7383eb4c41cecb6f3732b702818100a0865b7f8954e7ae587c8e6a89e391e8' + - '2657c58f05ccd94de61748e89e217efab3d9b5fa842ebc62525966916ad2b7af422a9' + - 'b2407817a5b382b6581434fd1a169c75ad4d0e3862a3f484e9f9f2a816f943a8e6060' + - 'f26fe27c533587b765e57948439084e76fd6a4fd004f5c78d972cf7f100ec9494a902' + - '645baca4b4c6f3993041e021c600daa0a9c4cc674c98bb07956374c84ac1c33af8816' + - '3ea7e2587876', 'hex'), - }, -}; - -async function testImportSpki({ name, publicUsages }, size, hash, extractable) { - const key = await subtle.importKey( - 'spki', - keyData[size].spki, - { name, hash }, - extractable, - publicUsages); - - assert.strictEqual(key.type, 'public'); - assert.strictEqual(key.extractable, extractable); - assert.deepStrictEqual(key.usages, publicUsages); - assert.strictEqual(key.algorithm.name, name); - assert.strictEqual(key.algorithm.modulusLength, size); - assert.strictEqual(key.algorithm.hash.name, hash); - - if (extractable) { - const spki = await subtle.exportKey('spki', key); - assert.strictEqual( - Buffer.from(spki).toString('hex'), - keyData[size].spki.toString('hex')); - } else { - await assert.rejects( - subtle.exportKey('spki', key), { - message: /key is not extractable/ - }); - } -} - -async function testImportPkcs8( - { name, privateUsages }, - size, - hash, - extractable) { - const key = await subtle.importKey( - 'pkcs8', - keyData[size].pkcs8, - { name, hash }, - extractable, - privateUsages); - - assert.strictEqual(key.type, 'private'); - assert.strictEqual(key.extractable, extractable); - assert.deepStrictEqual(key.usages, privateUsages); - assert.strictEqual(key.algorithm.name, name); - assert.strictEqual(key.algorithm.modulusLength, size); - assert.strictEqual(key.algorithm.hash.name, hash); - - if (extractable) { - const pkcs8 = await subtle.exportKey('pkcs8', key); - assert.strictEqual( - Buffer.from(pkcs8).toString('hex'), - keyData[size].pkcs8.toString('hex')); - } else { - await assert.rejects( - subtle.exportKey('pkcs8', key), { - message: /key is not extractable/ - }); - } -} - -// combinations to test -const testVectors = [ - { - name: 'NODE-DSA', - privateUsages: ['sign'], - publicUsages: ['verify'] - }, -]; - -(async function() { - const variations = []; - sizes.forEach((size) => { - hashes.forEach((hash) => { - [true, false].forEach((extractable) => { - testVectors.forEach((vector) => { - variations.push(testImportSpki(vector, size, hash, extractable)); - variations.push(testImportPkcs8(vector, size, hash, extractable)); - }); - }); - }); - }); - await Promise.all(variations); -})().then(common.mustCall()); - -{ - const ecPublic = crypto.createPublicKey( - fixtures.readKey('ec_p256_public.pem')); - const ecPrivate = crypto.createPrivateKey( - fixtures.readKey('ec_p256_private.pem')); - - assert.rejects(subtle.importKey( - 'node.keyObject', - ecPublic, - { name: 'NODE-DSA', hash: 'SHA-256' }, - true, ['verify']), { message: /Invalid key type/ }); - assert.rejects(subtle.importKey( - 'node.keyObject', - ecPrivate, - { name: 'NODE-DSA', hash: 'SHA-256' }, - true, ['sign']), { message: /Invalid key type/ }); - assert.rejects(subtle.importKey( - 'spki', - ecPublic.export({ format: 'der', type: 'spki' }), - { name: 'NODE-DSA', hash: 'SHA-256' }, - true, ['verify']), { message: /Invalid key type/ }); - assert.rejects(subtle.importKey( - 'pkcs8', - ecPrivate.export({ format: 'der', type: 'pkcs8' }), - { name: 'NODE-DSA', hash: 'SHA-256' }, - true, ['sign']), { message: /Invalid key type/ }); -} diff --git a/test/parallel/test-webcrypto-export-import-ec.js b/test/parallel/test-webcrypto-export-import-ec.js index 682d5f54be5563..79f82a3d4adc26 100644 --- a/test/parallel/test-webcrypto-export-import-ec.js +++ b/test/parallel/test-webcrypto-export-import-ec.js @@ -260,6 +260,55 @@ async function testImportJwk( message: /key is not extractable/ }); } + + for (const crv of [undefined, namedCurve === 'P-256' ? 'P-384' : 'P-256']) { + await assert.rejects( + subtle.importKey( + 'jwk', + { kty: jwk.kty, x: jwk.x, y: jwk.y, crv }, + { name, namedCurve }, + extractable, + publicUsages), + { message: /Named curve mismatch/ }); + + await assert.rejects( + subtle.importKey( + 'jwk', + { kty: jwk.kty, d: jwk.d, x: jwk.x, y: jwk.y, crv }, + { name, namedCurve }, + extractable, + publicUsages), + { message: /Named curve mismatch/ }); + } +} + +async function testImportRaw({ name, publicUsages }, namedCurve) { + const jwk = keyData[namedCurve].jwk; + + const [publicKey] = await Promise.all([ + subtle.importKey( + 'raw', + Buffer.concat([ + Buffer.alloc(1, 0x04), + Buffer.from(jwk.x, 'base64url'), + Buffer.from(jwk.y, 'base64url'), + ]), + { name, namedCurve }, + true, publicUsages), + subtle.importKey( + 'raw', + Buffer.concat([ + Buffer.alloc(1, 0x03), + Buffer.from(jwk.x, 'base64url'), + ]), + { name, namedCurve }, + true, publicUsages), + ]); + + assert.strictEqual(publicKey.type, 'public'); + assert.deepStrictEqual(publicKey.usages, publicUsages); + assert.strictEqual(publicKey.algorithm.name, name); + assert.strictEqual(publicKey.algorithm.namedCurve, namedCurve); } (async function() { @@ -271,6 +320,7 @@ async function testImportJwk( tests.push(testImportPkcs8(vector, namedCurve, extractable)); tests.push(testImportJwk(vector, namedCurve, extractable)); }); + tests.push(testImportRaw(vector, namedCurve)); }); }); @@ -287,16 +337,6 @@ async function testImportJwk( 'ECDSA': ['verify', 'sign'], 'ECDH': ['deriveBits', 'deriveBits'], })) { - assert.rejects(subtle.importKey( - 'node.keyObject', - rsaPublic, - { name, hash: 'SHA-256', namedCurve: 'P-256' }, - true, [publicUsage]), { message: /Invalid key type/ }); - assert.rejects(subtle.importKey( - 'node.keyObject', - rsaPrivate, - { name, hash: 'SHA-256', namedCurve: 'P-256' }, - true, [privateUsage]), { message: /Invalid key type/ }); assert.rejects(subtle.importKey( 'spki', rsaPublic.export({ format: 'der', type: 'spki' }), diff --git a/test/parallel/test-webcrypto-export-import-rsa.js b/test/parallel/test-webcrypto-export-import-rsa.js index ab7aa77394ac99..1efc69b70aa971 100644 --- a/test/parallel/test-webcrypto-export-import-rsa.js +++ b/test/parallel/test-webcrypto-export-import-rsa.js @@ -481,48 +481,6 @@ const testVectors = [ await Promise.all(variations); })().then(common.mustCall()); -{ - const publicPem = fixtures.readKey('rsa_pss_public_2048.pem', 'ascii'); - const privatePem = fixtures.readKey('rsa_pss_private_2048.pem', 'ascii'); - - const publicDer = Buffer.from( - publicPem.replace( - /(?:-----(?:BEGIN|END) PUBLIC KEY-----|\s)/g, - '' - ), - 'base64' - ); - const privateDer = Buffer.from( - privatePem.replace( - /(?:-----(?:BEGIN|END) PRIVATE KEY-----|\s)/g, - '' - ), - 'base64' - ); - - (async () => { - const key = await subtle.importKey( - 'spki', - publicDer, - { name: 'RSA-PSS', hash: 'SHA-256' }, - true, - ['verify']); - const jwk = await subtle.exportKey('jwk', key); - assert.strictEqual(jwk.alg, 'PS256'); - })().then(common.mustCall()); - - (async () => { - const key = await subtle.importKey( - 'pkcs8', - privateDer, - { name: 'RSA-PSS', hash: 'SHA-256' }, - true, - ['sign']); - const jwk = await subtle.exportKey('jwk', key); - assert.strictEqual(jwk.alg, 'PS256'); - })().then(common.mustCall()); -} - { const ecPublic = crypto.createPublicKey( fixtures.readKey('ec_p256_public.pem')); @@ -534,16 +492,6 @@ const testVectors = [ 'RSASSA-PKCS1-v1_5': ['verify', 'sign'], 'RSA-OAEP': ['encrypt', 'decrypt'], })) { - assert.rejects(subtle.importKey( - 'node.keyObject', - ecPublic, - { name, hash: 'SHA-256' }, - true, [publicUsage]), { message: /Invalid key type/ }); - assert.rejects(subtle.importKey( - 'node.keyObject', - ecPrivate, - { name, hash: 'SHA-256' }, - true, [privateUsage]), { message: /Invalid key type/ }); assert.rejects(subtle.importKey( 'spki', ecPublic.export({ format: 'der', type: 'spki' }), diff --git a/test/parallel/test-webcrypto-export-import.js b/test/parallel/test-webcrypto-export-import.js index b4fd26b0cda6ae..02e178f72628d5 100644 --- a/test/parallel/test-webcrypto-export-import.js +++ b/test/parallel/test-webcrypto-export-import.js @@ -42,13 +42,6 @@ const { subtle } = webcrypto; name: 'SyntaxError', message: 'Unsupported key usage for an HMAC key' }); - await assert.rejects( - subtle.importKey('node.keyObject', '', { - name: 'HMAC', - hash: 'SHA-256' - }, false, ['sign', 'verify']), { - code: 'ERR_INVALID_ARG_TYPE' - }); await assert.rejects( subtle.importKey('raw', keyData, { name: 'HMAC', diff --git a/test/parallel/test-webcrypto-keygen.js b/test/parallel/test-webcrypto-keygen.js index 502c86cf32abf3..e61d7c9b913abf 100644 --- a/test/parallel/test-webcrypto-keygen.js +++ b/test/parallel/test-webcrypto-keygen.js @@ -1,3 +1,4 @@ +// Flags: --expose-internals 'use strict'; const common = require('../common'); @@ -10,8 +11,11 @@ const { types: { isCryptoKey } } = require('util'); const { webcrypto: { subtle, CryptoKey }, createSecretKey, + KeyObject, } = require('crypto'); +const { bigIntArrayToUnsignedBigInt } = require('internal/crypto/util'); + const allUsages = [ 'encrypt', 'decrypt', @@ -25,49 +29,49 @@ const allUsages = [ const vectors = { 'AES-CTR': { algorithm: { length: 256 }, + result: 'CryptoKey', usages: [ 'encrypt', 'decrypt', 'wrapKey', 'unwrapKey', ], - mandatoryUsages: [] }, 'AES-CBC': { algorithm: { length: 256 }, + result: 'CryptoKey', usages: [ 'encrypt', 'decrypt', 'wrapKey', 'unwrapKey', ], - mandatoryUsages: [] }, 'AES-GCM': { algorithm: { length: 256 }, + result: 'CryptoKey', usages: [ 'encrypt', 'decrypt', 'wrapKey', 'unwrapKey', ], - mandatoryUsages: [] }, 'AES-KW': { algorithm: { length: 256 }, + result: 'CryptoKey', usages: [ 'wrapKey', 'unwrapKey', ], - mandatoryUsages: [] }, 'HMAC': { algorithm: { length: 256, hash: 'SHA-256' }, + result: 'CryptoKey', usages: [ 'sign', 'verify', ], - mandatoryUsages: [] }, 'RSASSA-PKCS1-v1_5': { algorithm: { @@ -75,11 +79,11 @@ const vectors = { publicExponent: new Uint8Array([1, 0, 1]), hash: 'SHA-256' }, + result: 'CryptoKeyPair', usages: [ 'sign', 'verify', ], - mandatoryUsages: ['sign'], }, 'RSA-PSS': { algorithm: { @@ -87,11 +91,11 @@ const vectors = { publicExponent: new Uint8Array([1, 0, 1]), hash: 'SHA-256' }, + result: 'CryptoKeyPair', usages: [ 'sign', 'verify', ], - mandatoryUsages: ['sign'] }, 'RSA-OAEP': { algorithm: { @@ -99,47 +103,58 @@ const vectors = { publicExponent: new Uint8Array([1, 0, 1]), hash: 'SHA-256' }, + result: 'CryptoKeyPair', usages: [ 'encrypt', 'decrypt', 'wrapKey', 'unwrapKey', ], - mandatoryUsages: [ - 'decrypt', - 'unwrapKey', - ] }, 'ECDSA': { algorithm: { namedCurve: 'P-521' }, + result: 'CryptoKeyPair', usages: [ 'sign', 'verify', ], - mandatoryUsages: ['sign'] }, 'ECDH': { algorithm: { namedCurve: 'P-521' }, + result: 'CryptoKeyPair', usages: [ 'deriveKey', 'deriveBits', ], - mandatoryUsages: [ - 'deriveKey', - 'deriveBits', - ] }, - 'NODE-DSA': { - algorithm: { modulusLength: 1024, hash: 'SHA-256' }, + 'Ed25519': { + result: 'CryptoKeyPair', usages: [ 'sign', 'verify', ], - mandatoryUsages: [ + }, + 'Ed448': { + result: 'CryptoKeyPair', + usages: [ 'sign', 'verify', - ] - } + ], + }, + 'X25519': { + result: 'CryptoKeyPair', + usages: [ + 'deriveKey', + 'deriveBits', + ], + }, + 'X448': { + result: 'CryptoKeyPair', + usages: [ + 'deriveKey', + 'deriveBits', + ], + }, }; // Test invalid algorithms @@ -183,19 +198,49 @@ const vectors = { // Test bad usages { async function test(name) { - const invalidUsages = []; - allUsages.forEach((usage) => { - if (!vectors[name].usages.includes(usage)) - invalidUsages.push(usage); - }); - return assert.rejects( + await assert.rejects( subtle.generateKey( { name, ...vectors[name].algorithm }, true, - invalidUsages), - { message: /Unsupported key usage/ }); + []), + { message: /Usages cannot be empty/ }); + + // For CryptoKeyPair results the private key + // usages must not be empty. + // - ECDH(-like) algorithm key pairs only have private key usages + // - Signing algorithm key pairs may pass a non-empty array but + // with only a public key usage + if ( + vectors[name].result === 'CryptoKeyPair' && + vectors[name].usages.includes('verify') + ) { + await assert.rejects( + subtle.generateKey( + { + name, ...vectors[name].algorithm + }, + true, + ['verify']), + { message: /Usages cannot be empty/ }); + } + + const invalidUsages = []; + allUsages.forEach((usage) => { + if (!vectors[name].usages.includes(usage)) + invalidUsages.push(usage); + }); + for (const invalidUsage of invalidUsages) { + await assert.rejects( + subtle.generateKey( + { + name, ...vectors[name].algorithm + }, + true, + [...vectors[name].usages, invalidUsage]), + { message: /Unsupported key usage/ }); + } } const tests = Object.keys(vectors).map(test); @@ -239,10 +284,16 @@ const vectors = { assert.strictEqual(publicKey.algorithm.name, name); assert.strictEqual(publicKey.algorithm.modulusLength, modulusLength); assert.deepStrictEqual(publicKey.algorithm.publicExponent, publicExponent); + assert.strictEqual( + KeyObject.from(publicKey).asymmetricKeyDetails.publicExponent, + bigIntArrayToUnsignedBigInt(publicExponent)); assert.strictEqual(publicKey.algorithm.hash.name, hash); assert.strictEqual(privateKey.algorithm.name, name); assert.strictEqual(privateKey.algorithm.modulusLength, modulusLength); assert.deepStrictEqual(privateKey.algorithm.publicExponent, publicExponent); + assert.strictEqual( + KeyObject.from(privateKey).asymmetricKeyDetails.publicExponent, + bigIntArrayToUnsignedBigInt(publicExponent)); assert.strictEqual(privateKey.algorithm.hash.name, hash); // Missing parameters @@ -319,6 +370,17 @@ const vectors = { code: 'ERR_INVALID_ARG_TYPE' }); })); + + await Promise.all([[1], [1, 0, 0]].map((publicExponent) => { + return assert.rejects(subtle.generateKey({ + name, + modulusLength, + publicExponent: new Uint8Array(publicExponent), + hash + }, true, usages), { + name: 'OperationError', + }); + })); } const kTests = [ @@ -535,21 +597,29 @@ const vectors = { tests.then(common.mustCall()); } -// Test NODE-DSA key generation +// End user code cannot create CryptoKey directly +assert.throws(() => new CryptoKey(), { code: 'ERR_ILLEGAL_CONSTRUCTOR' }); + +{ + const buffer = Buffer.from('Hello World'); + const keyObject = createSecretKey(buffer); + assert(!isCryptoKey(buffer)); + assert(!isCryptoKey(keyObject)); +} + +// Test OKP Key Generation { async function test( name, - modulusLength, - hash, privateUsages, publicUsages = privateUsages) { + let usages = privateUsages; if (publicUsages !== privateUsages) usages = usages.concat(publicUsages); + const { publicKey, privateKey } = await subtle.generateKey({ name, - modulusLength, - hash }, true, usages); assert(publicKey); @@ -564,104 +634,35 @@ const vectors = { assert.deepStrictEqual(publicKey.usages, publicUsages); assert.deepStrictEqual(privateKey.usages, privateUsages); assert.strictEqual(publicKey.algorithm.name, name); - assert.strictEqual(publicKey.algorithm.modulusLength, modulusLength); - assert.strictEqual(publicKey.algorithm.hash.name, hash); assert.strictEqual(privateKey.algorithm.name, name); - assert.strictEqual(privateKey.algorithm.modulusLength, modulusLength); - assert.strictEqual(privateKey.algorithm.hash.name, hash); - - // Missing parameters - await assert.rejects( - subtle.generateKey({ name, hash }, true, usages), { - code: 'ERR_INVALID_ARG_TYPE' - }); - - await assert.rejects( - subtle.generateKey({ name, modulusLength }, true, usages), { - code: 'ERR_MISSING_OPTION' - }); - - await Promise.all(['', true, {}].map((modulusLength) => { - return assert.rejects(subtle.generateKey({ - name, - modulusLength, - hash - }, true, usages), { - code: 'ERR_INVALID_ARG_TYPE' - }); - })); - - await Promise.all([true, {}, 1, []].map((hash) => { - return assert.rejects(subtle.generateKey({ - name, - modulusLength, - hash - }, true, usages), { - message: /Unrecognized name/ - }); - })); - - await Promise.all(['', {}, 1, []].map((extractable) => { - return assert.rejects(subtle.generateKey({ - name, - modulusLength, - hash - }, extractable, usages), { - code: 'ERR_INVALID_ARG_TYPE' - }); - })); - - await Promise.all(['', {}, 1, false].map((usages) => { - return assert.rejects(subtle.generateKey({ - name, - modulusLength, - hash - }, true, usages), { - code: 'ERR_INVALID_ARG_TYPE' - }); - })); } const kTests = [ [ - 'NODE-DSA', - 1024, - 'SHA-256', + 'Ed25519', + ['sign'], + ['verify'], + ], + [ + 'Ed448', ['sign'], ['verify'], ], + [ + 'X25519', + ['deriveKey', 'deriveBits'], + [], + ], + [ + 'X448', + ['deriveKey', 'deriveBits'], + [], + ], ]; const tests = kTests.map((args) => test(...args)); - Promise.all(tests).then(common.mustCall()); -} - -// Test NODE-DH key generation -(async function() { - const { publicKey, privateKey } = - await subtle.generateKey({ - name: 'NODE-DH', - group: 'modp15' - }, true, ['deriveKey']); - assert(publicKey); - assert(privateKey); - assert(isCryptoKey(publicKey)); - assert(isCryptoKey(privateKey)); - assert.strictEqual(publicKey.type, 'public'); - assert.strictEqual(privateKey.type, 'private'); - assert.strictEqual(publicKey.algorithm.name, 'NODE-DH'); - assert.strictEqual(privateKey.algorithm.name, 'NODE-DH'); - assert.strictEqual(publicKey.algorithm.group, 'modp15'); - assert.strictEqual(privateKey.algorithm.group, 'modp15'); -})().then(common.mustCall()); - -// End user code cannot create CryptoKey directly -assert.throws(() => new CryptoKey(), { code: 'ERR_ILLEGAL_CONSTRUCTOR' }); + // Test bad parameters -{ - const buffer = Buffer.from('Hello World'); - const keyObject = createSecretKey(buffer); - assert(!isCryptoKey(buffer)); - assert(!isCryptoKey(keyObject)); + Promise.all(tests).then(common.mustCall()); } diff --git a/test/parallel/test-webcrypto-random.js b/test/parallel/test-webcrypto-random.js index c3fc6aaab2eb1e..73089fe7b49094 100644 --- a/test/parallel/test-webcrypto-random.js +++ b/test/parallel/test-webcrypto-random.js @@ -47,10 +47,10 @@ for (const ctor of intTypedConstructors) { } { - const buf = new Uint16Array(10); - const before = Buffer.from(buf).toString('hex'); + const buf = Buffer.alloc(10); + const before = buf.toString('hex'); webcrypto.getRandomValues(buf); - const after = Buffer.from(buf).toString('hex'); + const after = buf.toString('hex'); assert.notStrictEqual(before, after); } diff --git a/test/parallel/test-webcrypto-rsa-pss-params.js b/test/parallel/test-webcrypto-rsa-pss-params.js deleted file mode 100644 index 964eaf32e890fd..00000000000000 --- a/test/parallel/test-webcrypto-rsa-pss-params.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -const common = require('../common'); - -if (!common.hasCrypto) - common.skip('missing crypto'); - -const { - createPrivateKey, - createPublicKey, - webcrypto: { - subtle - } -} = require('crypto'); - -const fixtures = require('../common/fixtures'); - -{ - const rsaPssKeyWithoutParams = fixtures.readKey('rsa_pss_private_2048.pem'); - - const pkcs8 = createPrivateKey(rsaPssKeyWithoutParams).export({ - type: 'pkcs8', - format: 'der' - }); - const spki = createPublicKey(rsaPssKeyWithoutParams).export({ - type: 'spki', - format: 'der' - }); - - const hashes = ['SHA-1', 'SHA-256', 'SHA-384', 'SHA-512']; - - const tasks = []; - for (const hash of hashes) { - const algorithm = { name: 'RSA-PSS', hash }; - tasks.push(subtle.importKey('pkcs8', pkcs8, algorithm, true, ['sign'])); - tasks.push(subtle.importKey('spki', spki, algorithm, true, ['verify'])); - } - - Promise.all(tasks).then(common.mustCall()); -} diff --git a/test/parallel/test-webcrypto-sign-verify-ecdsa.js b/test/parallel/test-webcrypto-sign-verify-ecdsa.js index 2f8f3a2fd229bd..4e79e4d4f846d6 100644 --- a/test/parallel/test-webcrypto-sign-verify-ecdsa.js +++ b/test/parallel/test-webcrypto-sign-verify-ecdsa.js @@ -23,6 +23,7 @@ async function testVerify({ name, privateKey, hmacKey, rsaKeys, + okpKeys, ] = await Promise.all([ subtle.importKey( 'spki', @@ -55,6 +56,12 @@ async function testVerify({ name, }, false, ['sign']), + subtle.generateKey( + { + name: 'Ed25519', + }, + false, + ['sign']), ]); assert(await subtle.verify({ name, hash }, publicKey, signature, plaintext)); @@ -89,6 +96,11 @@ async function testVerify({ name, message: /Unable to use this key to verify/ }); + await assert.rejects( + subtle.verify({ name, hash }, okpKeys.publicKey, signature, plaintext), { + message: /Unable to use this key to verify/ + }); + // Test failure when signature is altered { const copy = Buffer.from(signature); @@ -140,6 +152,7 @@ async function testSign({ name, privateKey, hmacKey, rsaKeys, + okpKeys, ] = await Promise.all([ subtle.importKey( 'spki', @@ -172,6 +185,12 @@ async function testSign({ name, }, false, ['sign']), + subtle.generateKey( + { + name: 'Ed25519', + }, + false, + ['sign']), ]); { @@ -210,6 +229,11 @@ async function testSign({ name, subtle.sign({ name, hash }, rsaKeys.privateKey, plaintext), { message: /Unable to use this key to sign/ }); + + await assert.rejects( + subtle.sign({ name, hash }, okpKeys.privateKey, plaintext), { + message: /Unable to use this key to sign/ + }); } (async function() { diff --git a/test/parallel/test-webcrypto-sign-verify-eddsa.js b/test/parallel/test-webcrypto-sign-verify-eddsa.js new file mode 100644 index 00000000000000..cec4f57a41a2a4 --- /dev/null +++ b/test/parallel/test-webcrypto-sign-verify-eddsa.js @@ -0,0 +1,263 @@ +'use strict'; + +const common = require('../common'); + +if (!common.hasCrypto) + common.skip('missing crypto'); + +const assert = require('assert'); +const { subtle } = require('crypto').webcrypto; + +const vectors = require('../fixtures/crypto/eddsa')(); + +async function testVerify({ name, + publicKeyBuffer, + privateKeyBuffer, + signature, + data }) { + const [ + publicKey, + noVerifyPublicKey, + privateKey, + hmacKey, + rsaKeys, + ecKeys, + ] = await Promise.all([ + subtle.importKey( + 'spki', + publicKeyBuffer, + { name }, + false, + ['verify']), + subtle.importKey( + 'spki', + publicKeyBuffer, + { name }, + false, + [ /* No usages */ ]), + subtle.importKey( + 'pkcs8', + privateKeyBuffer, + { name }, + false, + ['sign']), + subtle.generateKey( + { name: 'HMAC', hash: 'SHA-256' }, + false, + ['sign']), + subtle.generateKey( + { + name: 'RSA-PSS', + modulusLength: 1024, + publicExponent: new Uint8Array([1, 0, 1]), + hash: 'SHA-256', + }, + false, + ['sign']), + subtle.generateKey( + { + name: 'ECDSA', + namedCurve: 'P-256' + }, + false, + ['sign']), + ]); + + assert(await subtle.verify({ name }, publicKey, signature, data)); + + // Test verification with altered buffers + const copy = Buffer.from(data); + const sigcopy = Buffer.from(signature); + const p = subtle.verify({ name }, publicKey, sigcopy, copy); + copy[0] = 255 - copy[0]; + sigcopy[0] = 255 - sigcopy[0]; + assert(await p); + + // Test failure when using wrong key + await assert.rejects( + subtle.verify({ name }, privateKey, signature, data), { + message: /Unable to use this key to verify/ + }); + + await assert.rejects( + subtle.verify({ name }, noVerifyPublicKey, signature, data), { + message: /Unable to use this key to verify/ + }); + + // Test failure when using the wrong algorithms + await assert.rejects( + subtle.verify({ name }, hmacKey, signature, data), { + message: /Unable to use this key to verify/ + }); + + await assert.rejects( + subtle.verify({ name }, rsaKeys.publicKey, signature, data), { + message: /Unable to use this key to verify/ + }); + + await assert.rejects( + subtle.verify({ name }, ecKeys.publicKey, signature, data), { + message: /Unable to use this key to verify/ + }); + + // Test failure when signature is altered + { + const copy = Buffer.from(signature); + copy[0] = 255 - copy[0]; + assert(!(await subtle.verify( + { name }, + publicKey, + copy, + data))); + assert(!(await subtle.verify( + { name }, + publicKey, + copy.slice(1), + data))); + } + + // Test failure when data is altered + { + const copy = Buffer.from(data); + copy[0] = 255 - copy[0]; + assert(!(await subtle.verify({ name }, publicKey, signature, copy))); + } +} + +async function testSign({ name, + publicKeyBuffer, + privateKeyBuffer, + signature, + data }) { + const [ + publicKey, + noSignPrivateKey, + privateKey, + hmacKey, + rsaKeys, + ecKeys, + ] = await Promise.all([ + subtle.importKey( + 'spki', + publicKeyBuffer, + { name }, + false, + ['verify']), + subtle.importKey( + 'pkcs8', + privateKeyBuffer, + { name }, + false, + [ /* No usages */ ]), + subtle.importKey( + 'pkcs8', + privateKeyBuffer, + { name }, + false, + ['sign']), + subtle.generateKey( + { name: 'HMAC', hash: 'SHA-256' }, + false, + ['sign']), + subtle.generateKey( + { + name: 'RSA-PSS', + modulusLength: 1024, + publicExponent: new Uint8Array([1, 0, 1]), + hash: 'SHA-256', + }, + false, + ['sign']), + subtle.generateKey( + { + name: 'ECDSA', + namedCurve: 'P-256' + }, + false, + ['sign']), + ]); + + { + const sig = await subtle.sign({ name }, privateKey, data); + assert.strictEqual(sig.byteLength, signature.byteLength); + assert(await subtle.verify({ name }, publicKey, sig, data)); + } + + { + const copy = Buffer.from(data); + const p = subtle.sign({ name }, privateKey, copy); + copy[0] = 255 - copy[0]; + const sig = await p; + assert(await subtle.verify({ name }, publicKey, sig, data)); + } + + // Test failure when using wrong key + await assert.rejects( + subtle.sign({ name }, publicKey, data), { + message: /Unable to use this key to sign/ + }); + + // Test failure when no sign usage + await assert.rejects( + subtle.sign({ name }, noSignPrivateKey, data), { + message: /Unable to use this key to sign/ + }); + + // Test failure when using the wrong algorithms + await assert.rejects( + subtle.sign({ name }, hmacKey, data), { + message: /Unable to use this key to sign/ + }); + + await assert.rejects( + subtle.sign({ name }, rsaKeys.privateKey, data), { + message: /Unable to use this key to sign/ + }); + + await assert.rejects( + subtle.sign({ name }, ecKeys.privateKey, data), { + message: /Unable to use this key to sign/ + }); +} + +(async function() { + const variations = []; + + vectors.forEach((vector) => { + variations.push(testVerify(vector)); + variations.push(testSign(vector)); + }); + + await Promise.all(variations); +})().then(common.mustCall()); + +// Ed448 context +{ + const vector = vectors.find(({ name }) => name === 'Ed448'); + Promise.all([ + subtle.importKey( + 'pkcs8', + vector.privateKeyBuffer, + { name: 'Ed448' }, + false, + ['sign']), + subtle.importKey( + 'spki', + vector.publicKeyBuffer, + { name: 'Ed448' }, + false, + ['verify']), + ]).then(async ([privateKey, publicKey]) => { + const sig = await subtle.sign({ name: 'Ed448', context: Buffer.alloc(0) }, privateKey, vector.data); + assert.deepStrictEqual(Buffer.from(sig), vector.signature); + assert.strictEqual( + await subtle.verify({ name: 'Ed448', context: Buffer.alloc(0) }, publicKey, sig, vector.data), true); + + await assert.rejects(subtle.sign({ name: 'Ed448', context: Buffer.alloc(1) }, privateKey, vector.data), { + message: /Non zero-length context is not yet supported/ + }); + await assert.rejects(subtle.verify({ name: 'Ed448', context: Buffer.alloc(1) }, publicKey, sig, vector.data), { + message: /Non zero-length context is not yet supported/ + }); + }).then(common.mustCall()); +} diff --git a/test/parallel/test-webcrypto-sign-verify-hmac.js b/test/parallel/test-webcrypto-sign-verify-hmac.js index 3028816054ca76..0962773b132768 100644 --- a/test/parallel/test-webcrypto-sign-verify-hmac.js +++ b/test/parallel/test-webcrypto-sign-verify-hmac.js @@ -153,7 +153,7 @@ async function testSign({ hash, } await assert.rejects( - subtle.generateKey({ name }, false, []), { + subtle.generateKey({ name }, false, ['sign', 'verify']), { name: 'TypeError', code: 'ERR_MISSING_OPTION', message: 'algorithm.hash is required' diff --git a/test/parallel/test-webcrypto-sign-verify-node-dsa.js b/test/parallel/test-webcrypto-sign-verify-node-dsa.js deleted file mode 100644 index 73b006b9236249..00000000000000 --- a/test/parallel/test-webcrypto-sign-verify-node-dsa.js +++ /dev/null @@ -1,220 +0,0 @@ -'use strict'; - -const common = require('../common'); - -if (!common.hasCrypto) - common.skip('missing crypto'); - -const assert = require('assert'); -const { subtle } = require('crypto').webcrypto; - -const dsa = require('../fixtures/crypto/dsa'); - -async function testVerify({ algorithm, - hash, - publicKeyBuffer, - privateKeyBuffer, - signature, - plaintext }) { - const [ - publicKey, - noVerifyPublicKey, - privateKey, - hmacKey, - wrongKeys, - ] = await Promise.all([ - subtle.importKey( - 'spki', - publicKeyBuffer, - { name: algorithm.name, hash }, - false, - ['verify']), - subtle.importKey( - 'spki', - publicKeyBuffer, - { name: algorithm.name, hash }, - false, - [ /* No usages */ ]), - subtle.importKey( - 'pkcs8', - privateKeyBuffer, - { name: algorithm.name, hash }, - false, - ['sign']), - subtle.generateKey( - { name: 'HMAC', hash: 'SHA-256' }, - false, - ['sign']), - subtle.generateKey( - { - name: 'ECDSA', - namedCurve: 'P-521', - hash: 'SHA-256', - }, - false, - ['sign']), - ]); - - assert(await subtle.verify(algorithm, publicKey, signature, plaintext)); - - // Test verification with altered buffers - const copy = Buffer.from(plaintext); - const sigcopy = Buffer.from(signature); - const p = subtle.verify(algorithm, publicKey, sigcopy, copy); - copy[0] = 255 - copy[0]; - sigcopy[0] = 255 - sigcopy[0]; - assert(await p); - - // Test failure when using wrong key - await assert.rejects( - subtle.verify(algorithm, privateKey, signature, plaintext), { - message: /Unable to use this key to verify/ - }); - - await assert.rejects( - subtle.verify(algorithm, noVerifyPublicKey, signature, plaintext), { - message: /Unable to use this key to verify/ - }); - - // Test failure when using the wrong algorithms - await assert.rejects( - subtle.verify(algorithm, hmacKey, signature, plaintext), { - message: /Unable to use this key to verify/ - }); - - await assert.rejects( - subtle.verify(algorithm, wrongKeys.publicKey, signature, plaintext), { - message: /Unable to use this key to verify/ - }); - - // Test failure when signature is altered - { - const copy = Buffer.from(signature); - copy[0] = 255 - copy[0]; - assert(!(await subtle.verify(algorithm, publicKey, copy, plaintext))); - assert(!(await subtle.verify( - algorithm, - publicKey, - copy.slice(1), - plaintext))); - } - - // Test failure when data is altered - { - const copy = Buffer.from(plaintext); - copy[0] = 255 - copy[0]; - assert(!(await subtle.verify(algorithm, publicKey, signature, copy))); - } - - // Test failure when wrong hash is used - { - const otherhash = hash === 'SHA-1' ? 'SHA-256' : 'SHA-1'; - assert(!(await subtle.verify({ - ...algorithm, - hash: otherhash - }, publicKey, signature, copy))); - } - - await assert.rejects( - subtle.verify( - { ...algorithm, hash: 'sha256' }, - publicKey, - signature, - copy), - { message: /Unrecognized name/ }); -} - -async function testSign({ - algorithm, - hash, - publicKeyBuffer, - privateKeyBuffer, - signature, - plaintext, -}) { - const [ - publicKey, - noSignPrivateKey, - privateKey, - hmacKey, - wrongKeys, - ] = await Promise.all([ - subtle.importKey( - 'spki', - publicKeyBuffer, - { name: algorithm.name, hash }, - false, - ['verify']), - subtle.importKey( - 'pkcs8', - privateKeyBuffer, - { name: algorithm.name, hash }, - false, - [ /* No usages */ ]), - subtle.importKey( - 'pkcs8', - privateKeyBuffer, - { name: algorithm.name, hash }, - false, - ['sign']), - subtle.generateKey( - { name: 'HMAC', hash: 'SHA-256' }, - false, - ['sign']), - subtle.generateKey( - { - name: 'ECDSA', - namedCurve: 'P-521', - hash: 'SHA-256', - }, - false, - ['sign']), - ]); - - { - const sig = await subtle.sign(algorithm, privateKey, plaintext); - assert(await subtle.verify(algorithm, publicKey, sig, plaintext)); - } - - { - const copy = Buffer.from(plaintext); - const p = subtle.sign(algorithm, privateKey, copy); - copy[0] = 255 - copy[0]; - const sig = await p; - assert(await subtle.verify(algorithm, publicKey, sig, plaintext)); - } - - // Test failure when using wrong key - await assert.rejects( - subtle.sign(algorithm, publicKey, plaintext), { - message: /Unable to use this key to sign/ - }); - - // Test failure when no sign usage - await assert.rejects( - subtle.sign(algorithm, noSignPrivateKey, plaintext), { - message: /Unable to use this key to sign/ - }); - - // Test failure when using the wrong algorithms - await assert.rejects( - subtle.sign(algorithm, hmacKey, plaintext), { - message: /Unable to use this key to sign/ - }); - - await assert.rejects( - subtle.sign(algorithm, wrongKeys.privateKey, plaintext), { - message: /Unable to use this key to sign/ - }); -} - -(async function() { - const variations = []; - - dsa().forEach((vector) => { - variations.push(testVerify(vector)); - variations.push(testSign(vector)); - }); - - await Promise.all(variations); -})().then(common.mustCall()); diff --git a/test/parallel/test-webcrypto-sign-verify.js b/test/parallel/test-webcrypto-sign-verify.js index 71e357fedb7fc0..6c6b15781549a4 100644 --- a/test/parallel/test-webcrypto-sign-verify.js +++ b/test/parallel/test-webcrypto-sign-verify.js @@ -104,3 +104,43 @@ const { subtle } = require('crypto').webcrypto; test('hello world').then(common.mustCall()); } + +// Test Sign/Verify Ed25519 +{ + async function test(data) { + const ec = new TextEncoder(); + const { publicKey, privateKey } = await subtle.generateKey({ + name: 'Ed25519', + }, true, ['sign', 'verify']); + + const signature = await subtle.sign({ + name: 'Ed25519', + }, privateKey, ec.encode(data)); + + assert(await subtle.verify({ + name: 'Ed25519', + }, publicKey, signature, ec.encode(data))); + } + + test('hello world').then(common.mustCall()); +} + +// Test Sign/Verify Ed448 +{ + async function test(data) { + const ec = new TextEncoder(); + const { publicKey, privateKey } = await subtle.generateKey({ + name: 'Ed448', + }, true, ['sign', 'verify']); + + const signature = await subtle.sign({ + name: 'Ed448', + }, privateKey, ec.encode(data)); + + assert(await subtle.verify({ + name: 'Ed448', + }, publicKey, signature, ec.encode(data))); + } + + test('hello world').then(common.mustCall()); +} diff --git a/test/parallel/test-webcrypto-util.js b/test/parallel/test-webcrypto-util.js new file mode 100644 index 00000000000000..4bb14a7f91494f --- /dev/null +++ b/test/parallel/test-webcrypto-util.js @@ -0,0 +1,25 @@ +// Flags: --expose-internals +'use strict'; + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); + +const assert = require('assert'); + +const { + normalizeAlgorithm, +} = require('internal/crypto/util'); + +{ + // Check that normalizeAlgorithm does not add an undefined hash property. + assert.strictEqual('hash' in normalizeAlgorithm({ name: 'ECDH' }), false); + assert.strictEqual('hash' in normalizeAlgorithm('ECDH'), false); +} + +{ + // Check that normalizeAlgorithm does not mutate object inputs. + const algorithm = { name: 'ECDH', hash: 'SHA-256' }; + assert.strictEqual(normalizeAlgorithm(algorithm) !== algorithm, true); + assert.deepStrictEqual(algorithm, { name: 'ECDH', hash: 'SHA-256' }); +} diff --git a/test/parallel/test-webcrypto-x25519-x448.js b/test/parallel/test-webcrypto-x25519-x448.js deleted file mode 100644 index 89716e5d302a16..00000000000000 --- a/test/parallel/test-webcrypto-x25519-x448.js +++ /dev/null @@ -1,315 +0,0 @@ -'use strict'; - -const common = require('../common'); - -if (!common.hasCrypto) - common.skip('missing crypto'); - -const assert = require('assert'); - -const { - generateKeyPairSync, - webcrypto: { subtle } -} = require('crypto'); - -// X25519 and X448 are ECDH named curves that should work -// with the existing ECDH mechanisms with no additional -// changes. - -async function generateKeys(namedCurve, ...usages) { - return subtle.generateKey( - { - name: 'ECDH', - namedCurve - }, - true, - usages); -} - -async function deriveKey(publicKey, privateKey, length = 256) { - return subtle.deriveKey( - { - name: 'ECDH', - public: publicKey, - }, - privateKey, - { - name: 'HMAC', - length, - hash: 'SHA-512', - }, - true, - ['sign', 'verify'] - ); -} - -async function exportKey(secretKey) { - return subtle.exportKey('raw', secretKey); -} - -async function importKey(namedCurve, keyData, isPublic = false) { - return subtle.importKey( - 'raw', - keyData, - { name: 'ECDH', namedCurve, public: isPublic }, - true, - ['deriveKey'] - ); -} - -assert.rejects(importKey('NODE-X25519', Buffer.alloc(10), true), { - message: /NODE-X25519 raw keys must be exactly 32-bytes/ -}).then(common.mustCall()); -assert.rejects(importKey('NODE-X448', Buffer.alloc(10), true), { - message: /NODE-X448 raw keys must be exactly 56-bytes/ -}).then(common.mustCall()); - -async function test1(namedCurve) { - const { - publicKey: publicKey1, - privateKey: privateKey1, - } = await generateKeys(namedCurve, 'deriveKey', 'deriveBits'); - - const { - publicKey: publicKey2, - privateKey: privateKey2, - } = await generateKeys(namedCurve, 'deriveKey', 'deriveBits'); - - assert(publicKey1); - assert(privateKey1); - assert(publicKey2); - assert(privateKey2); - - assert.strictEqual(publicKey1.algorithm.namedCurve, namedCurve); - assert.strictEqual(privateKey1.algorithm.namedCurve, namedCurve); - assert.strictEqual(publicKey2.algorithm.namedCurve, namedCurve); - assert.strictEqual(privateKey2.algorithm.namedCurve, namedCurve); - - const [key1, key2] = await Promise.all([ - deriveKey(publicKey1, privateKey2), - deriveKey(publicKey2, privateKey1), - ]); - - assert(key1); - assert(key2); - - const [secret1, secret2] = await Promise.all([ - exportKey(key1), - exportKey(key2), - ]); - - assert.deepStrictEqual(secret1, secret2); -} - -Promise.all([ - test1('NODE-X25519'), - test1('NODE-X448'), -]).then(common.mustCall()); - -const testVectors = { - 'NODE-X25519': { - alice: { - privateKey: - Buffer.from( - '77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a', - 'hex'), - publicKey: - Buffer.from( - '8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a', - 'hex'), - }, - bob: { - privateKey: - Buffer.from( - '5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb', - 'hex'), - publicKey: - Buffer.from( - 'de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f', - 'hex'), - }, - sharedSecret: - Buffer.from( - '4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742', - 'hex'), - }, - 'NODE-X448': { - alice: { - privateKey: - Buffer.from( - '9a8f4925d1519f5775cf46b04b5800d4ee9ee8bae8bc5565d498c28d' + - 'd9c9baf574a9419744897391006382a6f127ab1d9ac2d8c0a598726b', - 'hex'), - publicKey: - Buffer.from( - '9b08f7cc31b7e3e67d22d5aea121074a273bd2b83de09c63faa73d2c' + - '22c5d9bbc836647241d953d40c5b12da88120d53177f80e532c41fa0', - 'hex'), - }, - bob: { - privateKey: - Buffer.from( - '1c306a7ac2a0e2e0990b294470cba339e6453772b075811d8fad0d1d' + - '6927c120bb5ee8972b0d3e21374c9c921b09d1b0366f10b65173992d', - 'hex'), - publicKey: - Buffer.from( - '3eb7a829b0cd20f5bcfc0b599b6feccf6da4627107bdb0d4f345b430' + - '27d8b972fc3e34fb4232a13ca706dcb57aec3dae07bdc1c67bf33609', - 'hex'), - }, - sharedSecret: - Buffer.from( - '07fff4181ac6cc95ec1c16a94a0f74d12da232ce40a77552281d282b' + - 'b60c0b56fd2464c335543936521c24403085d59a449a5037514a879d', - 'hex'), - }, -}; - -async function test2(namedCurve, length) { - const [ - publicKey1, - publicKey2, - privateKey1, - privateKey2, - ] = await Promise.all([ - importKey(namedCurve, testVectors[namedCurve].alice.publicKey, true), - importKey(namedCurve, testVectors[namedCurve].bob.publicKey, true), - importKey(namedCurve, testVectors[namedCurve].alice.privateKey), - importKey(namedCurve, testVectors[namedCurve].bob.privateKey), - ]); - - const [key1, key2] = await Promise.all([ - deriveKey(publicKey1, privateKey2, length), - deriveKey(publicKey2, privateKey1, length), - ]); - - assert(key1); - assert(key2); - - const [secret1, secret2] = await Promise.all([ - exportKey(key1), - exportKey(key2), - ]); - - assert.deepStrictEqual(secret1, secret2); - - assert.deepStrictEqual( - Buffer.from(secret1), - testVectors[namedCurve].sharedSecret); - - const [ - publicKeyJwk, - privateKeyJwk, - ] = await Promise.all([ - subtle.exportKey('jwk', publicKey1), - subtle.exportKey('jwk', privateKey1), - ]); - assert.strictEqual(publicKeyJwk.kty, 'OKP'); - assert.strictEqual(privateKeyJwk.kty, 'OKP'); - assert.strictEqual(publicKeyJwk.crv, namedCurve.slice(5)); - assert.strictEqual(privateKeyJwk.crv, namedCurve.slice(5)); - assert.deepStrictEqual( - Buffer.from(publicKeyJwk.x, 'base64'), - testVectors[namedCurve].alice.publicKey); - assert.deepStrictEqual( - Buffer.from(privateKeyJwk.x, 'base64'), - testVectors[namedCurve].alice.publicKey); - assert.deepStrictEqual( - Buffer.from(privateKeyJwk.d, 'base64'), - testVectors[namedCurve].alice.privateKey); -} - -Promise.all([ - test2('NODE-X25519', 256), - test2('NODE-X448', 448), -]).then(common.mustCall()); - -assert.rejects( - subtle.generateKey( - { - name: 'ECDH', - namedCurve: 'NODE-ED25519' - }, - true, - ['deriveBits']), - { - message: /Unsupported named curves for ECDH/ - }).then(common.mustCall()); - -assert.rejects( - subtle.generateKey( - { - name: 'ECDH', - namedCurve: 'NODE-ED448' - }, - true, - ['deriveBits']), - { - message: /Unsupported named curves for ECDH/ - }).then(common.mustCall()); - -{ - // Private JWK import - subtle.importKey( - 'jwk', - { - crv: 'X25519', - d: '8CE-XY7cvbR-Pu7mILHq8YZ4hLGAA2-RD01he5q2wUA', - x: '42IbTo34ZYANub5o42547vB6OxdEd44ztwZewoRch0Q', - kty: 'OKP' - }, - { - name: 'ECDH', - namedCurve: 'NODE-X25519' - }, - true, - ['deriveBits']).then(common.mustCall(), common.mustNotCall()); - - // Public JWK import - subtle.importKey( - 'jwk', - { - crv: 'X25519', - x: '42IbTo34ZYANub5o42547vB6OxdEd44ztwZewoRch0Q', - kty: 'OKP' - }, - { - name: 'ECDH', - namedCurve: 'NODE-X25519' - }, - true, - []).then(common.mustCall(), common.mustNotCall()); - - for (const asymmetricKeyType of ['x25519', 'x448']) { - const { publicKey, privateKey } = generateKeyPairSync(asymmetricKeyType); - for (const keyObject of [publicKey, privateKey]) { - const namedCurve = `NODE-${asymmetricKeyType.toUpperCase()}`; - subtle.importKey( - 'node.keyObject', - keyObject, - { name: 'ECDH', namedCurve }, - true, - keyObject.type === 'private' ? ['deriveBits', 'deriveKey'] : [], - ).then((cryptoKey) => { - assert.strictEqual(cryptoKey.type, keyObject.type); - assert.strictEqual(cryptoKey.algorithm.name, 'ECDH'); - }, common.mustNotCall()); - - subtle.importKey( - keyObject.type === 'private' ? 'pkcs8' : 'spki', - keyObject.export({ - format: 'der', - type: keyObject.type === 'private' ? 'pkcs8' : 'spki', - }), - { name: 'ECDH', namedCurve }, - true, - keyObject.type === 'private' ? ['deriveBits'] : [], - ).then((cryptoKey) => { - assert.strictEqual(cryptoKey.type, keyObject.type); - assert.strictEqual(cryptoKey.algorithm.name, 'ECDH'); - assert.strictEqual(cryptoKey.algorithm.namedCurve, namedCurve); - }, common.mustNotCall()); - } - } -} diff --git a/test/parallel/test-webstream-encoding-inspect.js b/test/parallel/test-webstream-encoding-inspect.js new file mode 100644 index 00000000000000..69c947ebc6d990 --- /dev/null +++ b/test/parallel/test-webstream-encoding-inspect.js @@ -0,0 +1,35 @@ +'use strict'; + +require('../common'); + +const { TextEncoderStream, TextDecoderStream } = require('stream/web'); +const util = require('util'); +const assert = require('assert'); + +const textEncoderStream = new TextEncoderStream(); +assert.strictEqual( + util.inspect(textEncoderStream), + `TextEncoderStream { + encoding: 'utf-8', + readable: ReadableStream { locked: false, state: 'readable', supportsBYOB: false }, + writable: WritableStream { locked: false, state: 'writable' } +}` +); +assert.throws(() => textEncoderStream[util.inspect.custom].call(), { + code: 'ERR_INVALID_THIS', +}); + +const textDecoderStream = new TextDecoderStream(); +assert.strictEqual( + util.inspect(textDecoderStream), + `TextDecoderStream { + encoding: 'utf-8', + fatal: false, + ignoreBOM: false, + readable: ReadableStream { locked: false, state: 'readable', supportsBYOB: false }, + writable: WritableStream { locked: false, state: 'writable' } +}` +); +assert.throws(() => textDecoderStream[util.inspect.custom].call(), { + code: 'ERR_INVALID_THIS', +}); diff --git a/test/parallel/test-eventtarget-whatwg-passive.js b/test/parallel/test-whatwg-events-add-event-listener-options-passive.js similarity index 100% rename from test/parallel/test-eventtarget-whatwg-passive.js rename to test/parallel/test-whatwg-events-add-event-listener-options-passive.js diff --git a/test/parallel/test-eventtarget-whatwg-signal.js b/test/parallel/test-whatwg-events-add-event-listener-options-signal.js similarity index 100% rename from test/parallel/test-eventtarget-whatwg-signal.js rename to test/parallel/test-whatwg-events-add-event-listener-options-signal.js diff --git a/test/parallel/test-eventtarget-whatwg-customevent.js b/test/parallel/test-whatwg-events-customevent.js similarity index 100% rename from test/parallel/test-eventtarget-whatwg-customevent.js rename to test/parallel/test-whatwg-events-customevent.js diff --git a/test/parallel/test-whatwg-events-event-constructors.js b/test/parallel/test-whatwg-events-event-constructors.js new file mode 100644 index 00000000000000..7880b10043e462 --- /dev/null +++ b/test/parallel/test-whatwg-events-event-constructors.js @@ -0,0 +1,29 @@ +'use strict'; + +require('../common'); +const { test, assert_equals, assert_array_equals } = + require('../common/wpt').harness; + +// Source: https://github.com/web-platform-tests/wpt/blob/6cef1d2087d6a07d7cc6cee8cf207eec92e27c5f/dom/events/Event-constructors.any.js#L91-L112 +test(function() { + const called = []; + const ev = new Event('Xx', { + get cancelable() { + called.push('cancelable'); + return false; + }, + get bubbles() { + called.push('bubbles'); + return true; + }, + get sweet() { + called.push('sweet'); + return 'x'; + }, + }); + assert_array_equals(called, ['bubbles', 'cancelable']); + assert_equals(ev.type, 'Xx'); + assert_equals(ev.bubbles, true); + assert_equals(ev.cancelable, false); + assert_equals(ev.sweet, undefined); +}); diff --git a/test/parallel/test-whatwg-events-eventtarget-this-of-listener.js b/test/parallel/test-whatwg-events-eventtarget-this-of-listener.js new file mode 100644 index 00000000000000..16ee14feabe9be --- /dev/null +++ b/test/parallel/test-whatwg-events-eventtarget-this-of-listener.js @@ -0,0 +1,119 @@ +'use strict'; + +require('../common'); +const { test, assert_equals, assert_unreached } = + require('../common/wpt').harness; + +// Manually ported from: https://github.com/web-platform-tests/wpt/blob/6cef1d2087d6a07d7cc6cee8cf207eec92e27c5f/dom/events/EventTarget-this-of-listener.html + +// Mock document +const document = { + createElement: () => new EventTarget(), + createTextNode: () => new EventTarget(), + createDocumentFragment: () => new EventTarget(), + createComment: () => new EventTarget(), + createProcessingInstruction: () => new EventTarget(), +}; + +test(() => { + const nodes = [ + document.createElement('p'), + document.createTextNode('some text'), + document.createDocumentFragment(), + document.createComment('a comment'), + document.createProcessingInstruction('target', 'data'), + ]; + + let callCount = 0; + for (const node of nodes) { + node.addEventListener('someevent', function() { + ++callCount; + assert_equals(this, node); + }); + + node.dispatchEvent(new Event('someevent')); + } + + assert_equals(callCount, nodes.length); +}, 'the this value inside the event listener callback should be the node'); + +test(() => { + const nodes = [ + document.createElement('p'), + document.createTextNode('some text'), + document.createDocumentFragment(), + document.createComment('a comment'), + document.createProcessingInstruction('target', 'data'), + ]; + + let callCount = 0; + for (const node of nodes) { + const handler = {}; + + node.addEventListener('someevent', handler); + handler.handleEvent = function() { + ++callCount; + assert_equals(this, handler); + }; + + node.dispatchEvent(new Event('someevent')); + } + + assert_equals(callCount, nodes.length); +}, 'addEventListener should not require handleEvent to be defined on object listeners'); + +test(() => { + const nodes = [ + document.createElement('p'), + document.createTextNode('some text'), + document.createDocumentFragment(), + document.createComment('a comment'), + document.createProcessingInstruction('target', 'data'), + ]; + + let callCount = 0; + for (const node of nodes) { + function handler() { + ++callCount; + assert_equals(this, node); + } + + handler.handleEvent = () => { + assert_unreached('should not call the handleEvent method on a function'); + }; + + node.addEventListener('someevent', handler); + + node.dispatchEvent(new Event('someevent')); + } + + assert_equals(callCount, nodes.length); +}, 'handleEvent properties added to a function before addEventListener are not reached'); + +test(() => { + const nodes = [ + document.createElement('p'), + document.createTextNode('some text'), + document.createDocumentFragment(), + document.createComment('a comment'), + document.createProcessingInstruction('target', 'data'), + ]; + + let callCount = 0; + for (const node of nodes) { + function handler() { + ++callCount; + assert_equals(this, node); + } + + node.addEventListener('someevent', handler); + + handler.handleEvent = () => { + assert_unreached('should not call the handleEvent method on a function'); + }; + + node.dispatchEvent(new Event('someevent')); + } + + assert_equals(callCount, nodes.length); +}, 'handleEvent properties added to a function after addEventListener are not reached'); diff --git a/test/parallel/test-whatwg-readablebytestream.js b/test/parallel/test-whatwg-readablebytestream.js index 83ec85fae61405..6b305a0d8365f2 100644 --- a/test/parallel/test-whatwg-readablebytestream.js +++ b/test/parallel/test-whatwg-readablebytestream.js @@ -65,6 +65,9 @@ const { defaultReader.releaseLock(); const byobReader = r.getReader({ mode: 'byob' }); assert(byobReader instanceof ReadableStreamBYOBReader); + assert.match( + inspect(byobReader, { depth: 0 }), + /ReadableStreamBYOBReader/); } class Source { @@ -233,6 +236,19 @@ class Source { }); } +{ + let controller; + new ReadableStream({ + type: 'bytes', + start(c) { controller = c; } + }); + controller.enqueue(new Uint8Array(10)); + controller.close(); + assert.throws(() => controller.enqueue(new Uint8Array(10)), { + code: 'ERR_INVALID_STATE', + }); +} + { const stream = new ReadableStream({ type: 'bytes', diff --git a/test/parallel/test-whatwg-readablestream.js b/test/parallel/test-whatwg-readablestream.js index cef3eca6ed2733..9f1cfc60e9a28b 100644 --- a/test/parallel/test-whatwg-readablestream.js +++ b/test/parallel/test-whatwg-readablestream.js @@ -32,6 +32,7 @@ const { readableStreamDefaultControllerCanCloseOrEnqueue, readableByteStreamControllerClose, readableByteStreamControllerRespond, + readableStreamReaderGenericRelease, } = require('internal/webstreams/readablestream'); const { @@ -371,6 +372,24 @@ assert.throws(() => { }); } +{ + const stream = new ReadableStream(); + const iterable = stream.values(); + readableStreamReaderGenericRelease(stream[kState].reader); + assert.rejects(iterable.next(), { + code: 'ERR_INVALID_STATE', + }).then(common.mustCall()); +} + +{ + const stream = new ReadableStream(); + const iterable = stream.values(); + readableStreamReaderGenericRelease(stream[kState].reader); + assert.rejects(iterable.return(), { + code: 'ERR_INVALID_STATE', + }).then(common.mustCall()); +} + { const stream = new ReadableStream({ start(controller) { @@ -1285,7 +1304,6 @@ class Source { }); async function read(stream) { - // eslint-disable-next-line no-unused-vars for await (const _ of stream.values({ preventCancel: true })) return; } @@ -1300,7 +1318,6 @@ class Source { const stream = new ReadableStream(source); async function read(stream) { - // eslint-disable-next-line no-unused-vars for await (const _ of stream.values({ preventCancel: false })) return; } @@ -1357,6 +1374,9 @@ class Source { assert.throws(() => ReadableStream.prototype.tee.call({}), { code: 'ERR_INVALID_THIS', }); + assert.throws(() => ReadableStream.prototype.values.call({}), { + code: 'ERR_INVALID_THIS', + }); assert.throws(() => ReadableStream.prototype[kTransfer].call({}), { code: 'ERR_INVALID_THIS', }); diff --git a/test/parallel/test-whatwg-url-constructor.js b/test/parallel/test-whatwg-url-constructor.js deleted file mode 100644 index 3dc1c5986027e7..00000000000000 --- a/test/parallel/test-whatwg-url-constructor.js +++ /dev/null @@ -1,144 +0,0 @@ -'use strict'; -const common = require('../common'); -if (!common.hasIntl) { - // A handful of the tests fail when ICU is not included. - common.skip('missing Intl'); -} - -const fixtures = require('../common/fixtures'); -const { test, assert_equals, assert_true, assert_throws } = - require('../common/wpt').harness; - -const request = { - response: require( - fixtures.path('wpt', 'url', 'resources', 'urltestdata.json') - ) -}; - -// The following tests are copied from WPT. Modifications to them should be -// upstreamed first. -// Refs: https://github.com/w3c/web-platform-tests/blob/8791bed/url/url-constructor.html -// License: http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html - -/* eslint-disable */ -function runURLConstructorTests() { - // var setup = async_test("Loading data…") - // setup.step(function() { - // var request = new XMLHttpRequest() - // request.open("GET", "urltestdata.json") - // request.send() - // request.responseType = "json" - // request.onload = setup.step_func(function() { - runURLTests(request.response) - // setup.done() - // }) - // }) -} - -function bURL(url, base) { - return new URL(url, base || "about:blank") -} - - -function runURLTests(urltests) { - for(var i = 0, l = urltests.length; i < l; i++) { - var expected = urltests[i] - if (typeof expected === "string") continue // skip comments - - test(function() { - if (expected.failure) { - assert_throws(new TypeError(), function() { - bURL(expected.input, expected.base) - }) - return - } - - var url = bURL(expected.input, expected.base) - assert_equals(url.href, expected.href, "href") - assert_equals(url.protocol, expected.protocol, "protocol") - assert_equals(url.username, expected.username, "username") - assert_equals(url.password, expected.password, "password") - assert_equals(url.host, expected.host, "host") - assert_equals(url.hostname, expected.hostname, "hostname") - assert_equals(url.port, expected.port, "port") - assert_equals(url.pathname, expected.pathname, "pathname") - assert_equals(url.search, expected.search, "search") - if ("searchParams" in expected) { - assert_true("searchParams" in url) - assert_equals(url.searchParams.toString(), expected.searchParams, "searchParams") - } - assert_equals(url.hash, expected.hash, "hash") - }, "Parsing: <" + expected.input + "> against <" + expected.base + ">") - } -} - -function runURLSearchParamTests() { - test(function() { - var url = bURL('http://example.org/?a=b') - assert_true("searchParams" in url) - var searchParams = url.searchParams - assert_true(url.searchParams === searchParams, 'Object identity should hold.') - }, 'URL.searchParams getter') - - test(function() { - var url = bURL('http://example.org/?a=b') - assert_true("searchParams" in url) - var searchParams = url.searchParams - assert_equals(searchParams.toString(), 'a=b') - - searchParams.set('a', 'b') - assert_equals(url.searchParams.toString(), 'a=b') - assert_equals(url.search, '?a=b') - url.search = '' - assert_equals(url.searchParams.toString(), '') - assert_equals(url.search, '') - assert_equals(searchParams.toString(), '') - }, 'URL.searchParams updating, clearing') - - test(function() { - 'use strict' - var urlString = 'http://example.org' - var url = bURL(urlString) - assert_throws(TypeError(), function() { url.searchParams = new URLSearchParams(urlString) }) - }, 'URL.searchParams setter, invalid values') - - test(function() { - var url = bURL('http://example.org/file?a=b&c=d') - assert_true("searchParams" in url) - var searchParams = url.searchParams - assert_equals(url.search, '?a=b&c=d') - assert_equals(searchParams.toString(), 'a=b&c=d') - - // Test that setting 'search' propagates to the URL object's query object. - url.search = 'e=f&g=h' - assert_equals(url.search, '?e=f&g=h') - assert_equals(searchParams.toString(), 'e=f&g=h') - - // ..and same but with a leading '?'. - url.search = '?e=f&g=h' - assert_equals(url.search, '?e=f&g=h') - assert_equals(searchParams.toString(), 'e=f&g=h') - - // And in the other direction, altering searchParams propagates - // back to 'search'. - searchParams.append('i', ' j ') - assert_equals(url.search, '?e=f&g=h&i=+j+') - assert_equals(url.searchParams.toString(), 'e=f&g=h&i=+j+') - assert_equals(searchParams.get('i'), ' j ') - - searchParams.set('e', 'updated') - assert_equals(url.search, '?e=updated&g=h&i=+j+') - assert_equals(searchParams.get('e'), 'updated') - - var url2 = bURL('http://example.org/file??a=b&c=d') - assert_equals(url2.search, '??a=b&c=d') - assert_equals(url2.searchParams.toString(), '%3Fa=b&c=d') - - url2.href = 'http://example.org/file??a=b' - assert_equals(url2.search, '??a=b') - assert_equals(url2.searchParams.toString(), '%3Fa=b') - }, 'URL.searchParams and URL.search setters, update propagation') -} -runURLSearchParamTests() -runURLConstructorTests() -/* eslint-enable */ diff --git a/test/parallel/test-whatwg-url-custom-searchparams-inspect.js b/test/parallel/test-whatwg-url-custom-searchparams-inspect.js index c03890938d9cfe..7729a36eb8fd9f 100644 --- a/test/parallel/test-whatwg-url-custom-searchparams-inspect.js +++ b/test/parallel/test-whatwg-url-custom-searchparams-inspect.js @@ -9,12 +9,20 @@ const util = require('util'); const sp = new URLSearchParams('?a=a&b=b&b=c'); assert.strictEqual(util.inspect(sp), "URLSearchParams { 'a' => 'a', 'b' => 'b', 'b' => 'c' }"); +assert.strictEqual(util.inspect(sp, { depth: -1 }), '[Object]'); +assert.strictEqual( + util.inspect(sp, { breakLength: 1 }), + "URLSearchParams {\n 'a' => 'a',\n 'b' => 'b',\n 'b' => 'c' }" +); assert.strictEqual(util.inspect(sp.keys()), "URLSearchParams Iterator { 'a', 'b', 'b' }"); assert.strictEqual(util.inspect(sp.values()), "URLSearchParams Iterator { 'a', 'b', 'c' }"); assert.strictEqual(util.inspect(sp.keys(), { breakLength: 1 }), "URLSearchParams Iterator {\n 'a',\n 'b',\n 'b' }"); +assert.throws(() => sp[util.inspect.custom].call(), { + code: 'ERR_INVALID_THIS', +}); const iterator = sp.entries(); assert.strictEqual(util.inspect(iterator), @@ -27,3 +35,5 @@ iterator.next(); iterator.next(); assert.strictEqual(util.inspect(iterator), 'URLSearchParams Iterator { }'); +const emptySp = new URLSearchParams(); +assert.strictEqual(util.inspect(emptySp), 'URLSearchParams {}'); diff --git a/test/parallel/test-whatwg-url-origin.js b/test/parallel/test-whatwg-url-origin.js deleted file mode 100644 index 532ff06bb1152f..00000000000000 --- a/test/parallel/test-whatwg-url-origin.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; -const common = require('../common'); -if (!common.hasIntl) { - // A handful of the tests fail when ICU is not included. - common.skip('missing Intl'); -} - -const fixtures = require('../common/fixtures'); -const { test, assert_equals } = require('../common/wpt').harness; - -const request = { - response: require( - fixtures.path('wpt', 'url', 'resources', 'urltestdata.json') - ) -}; - -// The following tests are copied from WPT. Modifications to them should be -// upstreamed first. -// Refs: https://github.com/w3c/web-platform-tests/blob/8791bed/url/url-origin.html -// License: http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html - -/* eslint-disable */ -function runURLOriginTests() { - // var setup = async_test("Loading data…") - // setup.step(function() { - // var request = new XMLHttpRequest() - // request.open("GET", "urltestdata.json") - // request.send() - // request.responseType = "json" - // request.onload = setup.step_func(function() { - runURLTests(request.response) - // setup.done() - // }) - // }) -} - -function bURL(url, base) { - return new URL(url, base || "about:blank") -} - -function runURLTests(urltests) { - for(var i = 0, l = urltests.length; i < l; i++) { - var expected = urltests[i] - if (typeof expected === "string" || !("origin" in expected)) continue - test(function() { - var url = bURL(expected.input, expected.base) - assert_equals(url.origin, expected.origin, "origin") - }, "Origin parsing: <" + expected.input + "> against <" + expected.base + ">") - } -} - -runURLOriginTests() -/* eslint-enable */ diff --git a/test/parallel/test-whatwg-url-setters.js b/test/parallel/test-whatwg-url-setters.js deleted file mode 100644 index 8742ab8ed372de..00000000000000 --- a/test/parallel/test-whatwg-url-setters.js +++ /dev/null @@ -1,79 +0,0 @@ -'use strict'; - -const common = require('../common'); -if (!common.hasIntl) { - // A handful of the tests fail when ICU is not included. - common.skip('missing Intl'); -} - -const { test, assert_equals } = require('../common/wpt').harness; -const fixtures = require('../common/fixtures'); - -const request = { - response: require(fixtures.path( - 'wpt', 'url', 'resources', 'setters_tests.json' - )) -}; - -// The following tests are copied from WPT. Modifications to them should be -// upstreamed first. -// Refs: https://github.com/w3c/web-platform-tests/blob/8791bed/url/url-setters.html -// License: http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html - -/* eslint-disable */ -function startURLSettersTests() { -// var setup = async_test("Loading data…") -// setup.step(function() { -// var request = new XMLHttpRequest() -// request.open("GET", "setters_tests.json") -// request.send() -// request.responseType = "json" -// request.onload = setup.step_func(function() { - runURLSettersTests(request.response) -// setup.done() -// }) -// }) -} - -function runURLSettersTests(all_test_cases) { - for (var attribute_to_be_set in all_test_cases) { - if (attribute_to_be_set == "comment") { - continue; - } - var test_cases = all_test_cases[attribute_to_be_set]; - for(var i = 0, l = test_cases.length; i < l; i++) { - var test_case = test_cases[i]; - var name = `Setting <${test_case.href}>.${attribute_to_be_set}` + - ` = '${test_case.new_value}'`; - if ("comment" in test_case) { - name += ` ${test_case.comment}`; - } - test(function() { - var url = new URL(test_case.href); - url[attribute_to_be_set] = test_case.new_value; - for (var attribute in test_case.expected) { - assert_equals(url[attribute], test_case.expected[attribute]) - } - }, `URL: ${name}`); - // test(function() { - // var url = document.createElement("a"); - // url.href = test_case.href; - // url[attribute_to_be_set] = test_case.new_value; - // for (var attribute in test_case.expected) { - // assert_equals(url[attribute], test_case.expected[attribute]) - // } - // }, ": " + name) - // test(function() { - // var url = document.createElement("area"); - // url.href = test_case.href; - // url[attribute_to_be_set] = test_case.new_value; - // for (var attribute in test_case.expected) { - // assert_equals(url[attribute], test_case.expected[attribute]) - // } - // }, ": " + name) - } - } -} - -startURLSettersTests() -/* eslint-enable */ diff --git a/test/parallel/test-worker-exit-heapsnapshot.js b/test/parallel/test-worker-exit-heapsnapshot.js new file mode 100644 index 00000000000000..a7b7b26ecaefd7 --- /dev/null +++ b/test/parallel/test-worker-exit-heapsnapshot.js @@ -0,0 +1,17 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const { getHeapSnapshot } = require('v8'); +const { isMainThread, Worker } = require('worker_threads'); + +// Checks taking heap snapshot at the exit event listener of Worker doesn't +// crash the process. +// Regression for https://github.com/nodejs/node/issues/43122. +if (isMainThread) { + const worker = new Worker(__filename); + + worker.once('exit', common.mustCall((code) => { + assert.strictEqual(code, 0); + getHeapSnapshot().pipe(process.stdout); + })); +} diff --git a/test/parallel/test-worker-fshandles-error-on-termination.js b/test/parallel/test-worker-fshandles-error-on-termination.js new file mode 100644 index 00000000000000..72fb969963a2b0 --- /dev/null +++ b/test/parallel/test-worker-fshandles-error-on-termination.js @@ -0,0 +1,51 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const fs = require('fs/promises'); +const { scheduler } = require('timers/promises'); +const { parentPort, Worker } = require('worker_threads'); + +const MAX_ITERATIONS = 20; +const MAX_THREADS = 10; + +// Do not use isMainThread so that this test itself can be run inside a Worker. +if (!process.env.HAS_STARTED_WORKER) { + process.env.HAS_STARTED_WORKER = 1; + + function spinWorker(iter) { + const w = new Worker(__filename); + w.on('message', common.mustCall((msg) => { + assert.strictEqual(msg, 'terminate'); + w.terminate(); + })); + + w.on('exit', common.mustCall(() => { + if (iter < MAX_ITERATIONS) + spinWorker(++iter); + })); + } + + for (let i = 0; i < MAX_THREADS; i++) { + spinWorker(0); + } +} else { + async function open_nok() { + await assert.rejects( + fs.open('this file does not exist'), + { + code: 'ENOENT', + syscall: 'open' + } + ); + await scheduler.yield(); + await open_nok(); + } + + // These async function calls never return as they are meant to continually + // open nonexistent files until the worker is terminated. + open_nok(); + open_nok(); + + parentPort.postMessage('terminate'); +} diff --git a/test/parallel/test-worker-fshandles-open-close-on-termination.js b/test/parallel/test-worker-fshandles-open-close-on-termination.js new file mode 100644 index 00000000000000..2cbd886b15fe4e --- /dev/null +++ b/test/parallel/test-worker-fshandles-open-close-on-termination.js @@ -0,0 +1,46 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const fs = require('fs/promises'); +const { scheduler } = require('timers/promises'); +const { parentPort, Worker } = require('worker_threads'); + +const MAX_ITERATIONS = 20; +const MAX_THREADS = 10; + +// Do not use isMainThread so that this test itself can be run inside a Worker. +if (!process.env.HAS_STARTED_WORKER) { + process.env.HAS_STARTED_WORKER = 1; + + function spinWorker(iter) { + const w = new Worker(__filename); + w.on('message', common.mustCall((msg) => { + assert.strictEqual(msg, 'terminate'); + w.terminate(); + })); + + w.on('exit', common.mustCall(() => { + if (iter < MAX_ITERATIONS) + spinWorker(++iter); + })); + } + + for (let i = 0; i < MAX_THREADS; i++) { + spinWorker(0); + } +} else { + async function open_close() { + const fh = await fs.open(__filename); + await fh.close(); + await scheduler.yield(); + await open_close(); + } + + // These async function calls never return as they are meant to continually + // open and close files until the worker is terminated. + open_close(); + open_close(); + + parentPort.postMessage('terminate'); +} diff --git a/test/parallel/test-worker-hasref.js b/test/parallel/test-worker-hasref.js new file mode 100644 index 00000000000000..51593b14725f5b --- /dev/null +++ b/test/parallel/test-worker-hasref.js @@ -0,0 +1,33 @@ +'use strict'; +const common = require('../common'); + +const { Worker } = require('worker_threads'); +const { createHook } = require('async_hooks'); +const { strictEqual } = require('assert'); + +let handle; + +createHook({ + init(asyncId, type, triggerAsyncId, resource) { + if (type === 'WORKER') { + handle = resource; + this.disable(); + } + } +}).enable(); + +const w = new Worker('', { eval: true }); + +strictEqual(handle.hasRef(), true); +w.unref(); +strictEqual(handle.hasRef(), false); +w.ref(); +strictEqual(handle.hasRef(), true); + +w.on('exit', common.mustCall((exitCode) => { + strictEqual(exitCode, 0); + strictEqual(handle.hasRef(), true); + setTimeout(common.mustCall(() => { + strictEqual(handle.hasRef(), undefined); + }), 0); +})); diff --git a/test/parallel/test-worker-http2-stream-terminate.js b/test/parallel/test-worker-http2-stream-terminate.js new file mode 100644 index 00000000000000..94e60e773c4b3e --- /dev/null +++ b/test/parallel/test-worker-http2-stream-terminate.js @@ -0,0 +1,63 @@ +'use strict'; +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); +const assert = require('assert'); +const http2 = require('http2'); +const makeDuplexPair = require('../common/duplexpair'); +const { Worker, parentPort } = require('worker_threads'); + +// This test ensures that workers can be terminated without error while +// stream activity is ongoing, in particular the C++ function +// ReportWritesToJSStreamListener::OnStreamAfterReqFinished. + +const MAX_ITERATIONS = 20; +const MAX_THREADS = 10; + +// Do not use isMainThread so that this test itself can be run inside a Worker. +if (!process.env.HAS_STARTED_WORKER) { + process.env.HAS_STARTED_WORKER = 1; + + function spinWorker(iter) { + const w = new Worker(__filename); + w.on('message', common.mustCall((msg) => { + assert.strictEqual(msg, 'terminate'); + w.terminate(); + })); + + w.on('exit', common.mustCall(() => { + if (iter < MAX_ITERATIONS) + spinWorker(++iter); + })); + } + + for (let i = 0; i < MAX_THREADS; i++) { + spinWorker(0); + } +} else { + const server = http2.createServer(); + let i = 0; + server.on('stream', (stream, headers) => { + if (i === 1) { + parentPort.postMessage('terminate'); + } + i++; + + stream.end(''); + }); + + const { clientSide, serverSide } = makeDuplexPair(); + server.emit('connection', serverSide); + + const client = http2.connect('http://localhost:80', { + createConnection: () => clientSide, + }); + + function makeRequests() { + for (let i = 0; i < 3; i++) { + client.request().end(); + } + setImmediate(makeRequests); + } + makeRequests(); +} diff --git a/test/parallel/test-worker-init-failure.js b/test/parallel/test-worker-init-failure.js index a15d8a75617a16..078329ee68874f 100644 --- a/test/parallel/test-worker-init-failure.js +++ b/test/parallel/test-worker-init-failure.js @@ -10,6 +10,10 @@ if (common.isWindows) { common.skip('ulimit does not work on Windows.'); } +if (process.config.variables.node_builtin_modules_path) { + common.skip('this test cannot pass when Node.js is built with --node-builtin-modules-path'); +} + // A reasonably low fd count. An empty node process // creates around 30 fds for its internal purposes, // so making it too low will crash the process early, diff --git a/test/parallel/test-worker-message-port.js b/test/parallel/test-worker-message-port.js index ca28f6ccb73247..2663dde2a1b75f 100644 --- a/test/parallel/test-worker-message-port.js +++ b/test/parallel/test-worker-message-port.js @@ -179,7 +179,7 @@ const { MessageChannel, MessagePort } = require('worker_threads'); assert.deepStrictEqual( Object.getOwnPropertyNames(MessagePort.prototype).sort(), [ - 'close', 'constructor', 'onmessage', 'onmessageerror', 'postMessage', - 'ref', 'start', 'unref', + 'close', 'constructor', 'hasRef', 'onmessage', 'onmessageerror', + 'postMessage', 'ref', 'start', 'unref', ]); } diff --git a/test/parallel/test-worker-messageport-hasref.js b/test/parallel/test-worker-messageport-hasref.js new file mode 100644 index 00000000000000..448787742e308d --- /dev/null +++ b/test/parallel/test-worker-messageport-hasref.js @@ -0,0 +1,45 @@ +'use strict'; +const common = require('../common'); + +const { Worker } = require('worker_threads'); +const { createHook } = require('async_hooks'); +const { deepStrictEqual, strictEqual } = require('assert'); + +const m = new Map(); +createHook({ + init(asyncId, type, triggerAsyncId, resource) { + if (['WORKER', 'MESSAGEPORT'].includes(type)) { + m.set(asyncId, { type, resource }); + } + }, + destroy(asyncId) { + m.delete(asyncId); + } +}).enable(); + +function getActiveWorkerAndMessagePortTypes() { + const activeWorkerAndMessagePortTypes = []; + for (const asyncId of m.keys()) { + const { type, resource } = m.get(asyncId); + // Same logic as https://github.com/mafintosh/why-is-node-running/blob/24fb4c878753390a05d00959e6173d0d3c31fddd/index.js#L31-L32. + if (typeof resource.hasRef !== 'function' || resource.hasRef() === true) { + activeWorkerAndMessagePortTypes.push(type); + } + } + return activeWorkerAndMessagePortTypes; +} + +const w = new Worker('', { eval: true }); +deepStrictEqual(getActiveWorkerAndMessagePortTypes(), ['WORKER']); +w.unref(); +deepStrictEqual(getActiveWorkerAndMessagePortTypes(), []); +w.ref(); +deepStrictEqual(getActiveWorkerAndMessagePortTypes(), ['WORKER', 'MESSAGEPORT']); + +w.on('exit', common.mustCall((exitCode) => { + strictEqual(exitCode, 0); + deepStrictEqual(getActiveWorkerAndMessagePortTypes(), ['WORKER']); + setTimeout(common.mustCall(() => { + deepStrictEqual(getActiveWorkerAndMessagePortTypes(), []); + }), 0); +})); diff --git a/test/parallel/test-worker-nearheaplimit-deadlock.js b/test/parallel/test-worker-nearheaplimit-deadlock.js index 1f38bc074da048..cf4c0d972c8719 100644 --- a/test/parallel/test-worker-nearheaplimit-deadlock.js +++ b/test/parallel/test-worker-nearheaplimit-deadlock.js @@ -10,7 +10,11 @@ if (!process.env.HAS_STARTED_WORKER) { resourceLimits: { maxYoungGenerationSizeMb: 0, maxOldGenerationSizeMb: 0 - } + }, + // With node snapshot the OOM can occur during the deserialization of + // the context, so disable it since we want the OOM to occur during + // the creation of the message port. + execArgv: [ ...process.execArgv, '--no-node-snapshot'] }; const worker = new Worker(__filename, opts); diff --git a/test/parallel/test-worker-process-exit-async-module.js b/test/parallel/test-worker-process-exit-async-module.js new file mode 100644 index 00000000000000..38d4ad74c7bd85 --- /dev/null +++ b/test/parallel/test-worker-process-exit-async-module.js @@ -0,0 +1,11 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const { Worker } = require('worker_threads'); + +// Regression for https://github.com/nodejs/node/issues/43182. +const w = new Worker(new URL('data:text/javascript,process.exit(1);await new Promise(()=>{ process.exit(2); })')); +w.on('exit', common.mustCall((code) => { + assert.strictEqual(code, 1); +})); diff --git a/test/parallel/test-worker-resource-limits.js b/test/parallel/test-worker-resource-limits.js index ffda452f6c6335..f79c31b2a18793 100644 --- a/test/parallel/test-worker-resource-limits.js +++ b/test/parallel/test-worker-resource-limits.js @@ -35,10 +35,10 @@ if (!process.env.HAS_STARTED_WORKER) { assert.deepStrictEqual(resourceLimits, testResourceLimits); const array = []; while (true) { - // Leave 10% wiggle room here, and 20% on debug builds. - const wiggleRoom = common.buildType === 'Release' ? 1.1 : 1.2; const usedMB = v8.getHeapStatistics().used_heap_size / 1024 / 1024; - assert(usedMB < resourceLimits.maxOldGenerationSizeMb * wiggleRoom); + const maxReservedSize = resourceLimits.maxOldGenerationSizeMb + + resourceLimits.maxYoungGenerationSizeMb; + assert(usedMB < maxReservedSize); let seenSpaces = 0; for (const { space_name, space_size } of v8.getHeapSpaceStatistics()) { diff --git a/test/pseudo-tty/console_colors.out b/test/pseudo-tty/console_colors.out index 8766302ffd7e51..006eb9edfe617d 100644 --- a/test/pseudo-tty/console_colors.out +++ b/test/pseudo-tty/console_colors.out @@ -1,38 +1,38 @@ -{ foo: *[32m'bar'*[39m } +{ foo: [32m'bar'[39m } string q -{ foo: *[32m'bar'*[39m } with object format param +{ foo: [32m'bar'[39m } with object format param Error: test at abc (../fixtures/node_modules/bar.js:4:4) foobar - at * (*console_colors.js:*:*) -*[90m at * (node:internal*:*:*)*[39m -*[90m at *[39m -*[90m at *[39m -*[90m at *[39m -*[90m at *[39m -*[90m at *[39m + at Object. [90m(*[39m*console_colors.js:*:*[90m)[39m +[90m at * (node:internal*:*:*)[39m +[90m at *[39m +[90m at *[39m +[90m at *[39m +[90m at *[39m +[90m at *[39m Error: Should not ever get here. - at * (*node_modules*[4m*node_modules*[24m*bar.js:*:*) -*[90m at *[39m -*[90m at *[39m -*[90m at *[39m -*[90m at *[39m -*[90m at *[39m -*[90m at *[39m - at * (*console_colors.js:*:*) -*[90m at *[39m -*[90m at *[39m + at Object. [90m(*node_modules*[4m*node_modules*[24m*bar.js:*:*[90m)[39m +[90m at *[39m +[90m at *[39m +[90m at *[39m +[90m at *[39m +[90m at *[39m +[90m at *[39m + at Object. [90m(*console_colors.js:*:*[90m)[39m +[90m at *[39m +[90m at *[39m Error at evalmachine.:*:* -*[90m at Script.runInThisContext (node:vm:*:*)*[39m -*[90m at Object.runInThisContext (node:vm:*:*)*[39m - at * (*console_colors.js:*:*) -*[90m at *[39m -*[90m at *[39m -*[90m at *[39m -*[90m at *[39m -*[90m at *[39m -*[90m at *[39m +[90m at Script.runInThisContext (node:vm:*:*)[39m +[90m at Object.runInThisContext (node:vm:*:*)[39m + at Object. [90m(*[39m*console_colors.js:*:*[90m)[39m +[90m at *[39m +[90m at *[39m +[90m at *[39m +[90m at *[39m +[90m at *[39m +[90m at *[39m diff --git a/test/pseudo-tty/test-fatal-error.out b/test/pseudo-tty/test-fatal-error.out index b6eeca17f55246..c6c93adfb6a68b 100644 --- a/test/pseudo-tty/test-fatal-error.out +++ b/test/pseudo-tty/test-fatal-error.out @@ -3,12 +3,12 @@ throw err; ^ TypeError: foobar - at Object. (*test-fatal-error.js:*) -*[90m at *(node:internal*loader:*:*)*[39m -*[90m at *(node:internal*loader:*:*)*[39m -*[90m at *(node:internal*loader:*:*)*[39m -*[90m at *(node:internal*loader:*:*)*[39m -*[90m at *[39m -*[90m at *[39m { - bla: *[33mtrue*[39m + at Object. [90m(*test-fatal-error.js:*:*[90m)[39m +[90m at *(node:internal*loader:*:*)[39m +[90m at *(node:internal*loader:*:*)[39m +[90m at *(node:internal*loader:*:*)[39m +[90m at *(node:internal*loader:*:*)[39m +[90m at *[39m +[90m at *[39m { + bla: [33mtrue[39m } diff --git a/test/pseudo-tty/test-handle-wrap-isrefed-tty.js b/test/pseudo-tty/test-handle-wrap-hasref-tty.js similarity index 93% rename from test/pseudo-tty/test-handle-wrap-isrefed-tty.js rename to test/pseudo-tty/test-handle-wrap-hasref-tty.js index aa6ae341b4b231..16eb7199cf9b5d 100644 --- a/test/pseudo-tty/test-handle-wrap-isrefed-tty.js +++ b/test/pseudo-tty/test-handle-wrap-hasref-tty.js @@ -1,7 +1,7 @@ // Flags: --expose-internals --no-warnings 'use strict'; -// See also test/parallel/test-handle-wrap-isrefed.js +// See also test/parallel/test-handle-wrap-hasref.js const common = require('../common'); const strictEqual = require('assert').strictEqual; diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/Scope.js b/test/pseudo-tty/test-handle-wrap-hasref-tty.out similarity index 100% rename from tools/node_modules/eslint/node_modules/@babel/types/lib/converters/Scope.js rename to test/pseudo-tty/test-handle-wrap-hasref-tty.out diff --git a/test/pummel/pummel.status b/test/pummel/pummel.status index 73ed079f66a5f8..143450986e46c4 100644 --- a/test/pummel/pummel.status +++ b/test/pummel/pummel.status @@ -19,6 +19,8 @@ test-crypto-timing-safe-equal-benchmarks: PASS,FLAKY [$arch==arm || $arch==arm64] [$system==solaris] # Also applies to SmartOS +# https://github.com/nodejs/node/issues/43457 +test-heapsnapshot-near-heap-limit: PASS,FLAKY [$system==freebsd] diff --git a/test/pummel/test-crypto-dh-hash-modp18.js b/test/pummel/test-crypto-dh-hash-modp18.js index e2a7f43c45074d..ceb4cbd885c464 100644 --- a/test/pummel/test-crypto-dh-hash-modp18.js +++ b/test/pummel/test-crypto-dh-hash-modp18.js @@ -26,8 +26,8 @@ if (!common.hasCrypto) { common.skip('node compiled without OpenSSL.'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } const assert = require('assert'); diff --git a/test/pummel/test-crypto-dh-hash.js b/test/pummel/test-crypto-dh-hash.js index a5932eb764792f..3ad974ff329efd 100644 --- a/test/pummel/test-crypto-dh-hash.js +++ b/test/pummel/test-crypto-dh-hash.js @@ -26,8 +26,8 @@ if (!common.hasCrypto) { common.skip('node compiled without OpenSSL.'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } const assert = require('assert'); diff --git a/test/pummel/test-crypto-dh-keys.js b/test/pummel/test-crypto-dh-keys.js index 99be0e517fd640..2caa4e244a9859 100644 --- a/test/pummel/test-crypto-dh-keys.js +++ b/test/pummel/test-crypto-dh-keys.js @@ -26,8 +26,8 @@ if (!common.hasCrypto) { common.skip('node compiled without OpenSSL.'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } const assert = require('assert'); diff --git a/test/pummel/test-dh-regr.js b/test/pummel/test-dh-regr.js index c55b7ff54d9ca9..096b32f71500cd 100644 --- a/test/pummel/test-dh-regr.js +++ b/test/pummel/test-dh-regr.js @@ -26,8 +26,8 @@ if (!common.hasCrypto) { common.skip('missing crypto'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } const assert = require('assert'); diff --git a/test/pummel/test-fs-readfile-tostring-fail.js b/test/pummel/test-fs-readfile-tostring-fail.js index 1a1e7d62175638..eb12ed3d8c5cc0 100644 --- a/test/pummel/test-fs-readfile-tostring-fail.js +++ b/test/pummel/test-fs-readfile-tostring-fail.js @@ -25,13 +25,17 @@ stream.on('error', (err) => { throw err; }); const size = kStringMaxLength / 200; const a = Buffer.alloc(size, 'a'); +let expectedSize = 0; for (let i = 0; i < 201; i++) { - stream.write(a); + stream.write(a, (err) => { assert.ifError(err); }); + expectedSize += a.length; } stream.end(); stream.on('finish', common.mustCall(function() { + assert.strictEqual(stream.bytesWritten, expectedSize, + `${stream.bytesWritten} bytes written (expected ${expectedSize} bytes).`); fs.readFile(file, 'utf8', common.mustCall(function(err, buf) { assert.ok(err instanceof Error); if (err.message !== 'Array buffer allocation failed') { diff --git a/test/pummel/test-fs-watch-system-limit.js b/test/pummel/test-fs-watch-system-limit.js index 20995c514fa569..3486f5372b8d5d 100644 --- a/test/pummel/test-fs-watch-system-limit.js +++ b/test/pummel/test-fs-watch-system-limit.js @@ -9,8 +9,8 @@ if (!common.isLinux) { common.skip('The fs watch limit is OS-dependent'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } try { diff --git a/test/pummel/test-hash-seed.js b/test/pummel/test-hash-seed.js index 42b626b079e873..274183d8ce977e 100644 --- a/test/pummel/test-hash-seed.js +++ b/test/pummel/test-hash-seed.js @@ -3,8 +3,8 @@ // Check that spawn child doesn't create duplicated entries const common = require('../common'); -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } const kRepetitions = 2; diff --git a/test/pummel/test-heapdump-worker.js b/test/pummel/test-heapdump-worker.js index 0e8322affb5d64..d494de50922155 100644 --- a/test/pummel/test-heapdump-worker.js +++ b/test/pummel/test-heapdump-worker.js @@ -6,14 +6,6 @@ const { Worker } = require('worker_threads'); validateSnapshotNodes('Node / Worker', []); const worker = new Worker('setInterval(() => {}, 100);', { eval: true }); -validateSnapshotNodes('Node / Worker', [ - { - children: [ - { node_name: 'Node / MessagePort', edge_name: 'parent_port' }, - { node_name: 'Worker', edge_name: 'wrapped' }, - ] - }, -]); validateSnapshotNodes('Node / MessagePort', [ { children: [ diff --git a/test/pummel/test-heapsnapshot-near-heap-limit-bounded.js b/test/pummel/test-heapsnapshot-near-heap-limit-bounded.js index faf5c4755aac75..dd7497d975ab92 100644 --- a/test/pummel/test-heapsnapshot-near-heap-limit-bounded.js +++ b/test/pummel/test-heapsnapshot-near-heap-limit-bounded.js @@ -2,8 +2,8 @@ const common = require('../common'); -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } const tmpdir = require('../common/tmpdir'); diff --git a/test/pummel/test-heapsnapshot-near-heap-limit.js b/test/pummel/test-heapsnapshot-near-heap-limit.js index 420ba04205945b..1af4e61e08c028 100644 --- a/test/pummel/test-heapsnapshot-near-heap-limit.js +++ b/test/pummel/test-heapsnapshot-near-heap-limit.js @@ -2,8 +2,8 @@ const common = require('../common'); -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } const tmpdir = require('../common/tmpdir'); diff --git a/test/pummel/test-http-upload-timeout.js b/test/pummel/test-http-upload-timeout.js index c3ec3ad19d5d37..6c071f8d7f550d 100644 --- a/test/pummel/test-http-upload-timeout.js +++ b/test/pummel/test-http-upload-timeout.js @@ -23,19 +23,20 @@ // This tests setTimeout() by having multiple clients connecting and sending // data in random intervals. Clients are also randomly disconnecting until there // are no more clients left. If no false timeout occurs, this test has passed. -require('../common'); +const common = require('../common'); const http = require('http'); const server = http.createServer(); let connections = 0; +const ontimeout = common.mustNotCall('Unexpected timeout'); + server.on('request', function(req, res) { req.socket.setTimeout(1000); - req.socket.on('timeout', function() { - throw new Error('Unexpected timeout'); - }); + req.socket.on('timeout', ontimeout); req.on('end', function() { connections--; res.writeHead(200); + req.socket.off('timeout', ontimeout); res.end('done\n'); if (connections === 0) { server.close(); @@ -47,7 +48,7 @@ server.on('request', function(req, res) { server.listen(0, '127.0.0.1', function() { for (let i = 0; i < 10; i++) { connections++; - + let count = 0; setTimeout(function() { const request = http.request({ port: server.address().port, @@ -56,13 +57,12 @@ server.listen(0, '127.0.0.1', function() { }); function ping() { - const nextPing = (Math.random() * 900).toFixed(); - if (nextPing > 600) { + if (++count === 10) { request.end(); return; } request.write('ping'); - setTimeout(ping, nextPing); + setTimeout(ping, 300); } ping(); }, i * 50); diff --git a/test/pummel/test-net-bytes-per-incoming-chunk-overhead.js b/test/pummel/test-net-bytes-per-incoming-chunk-overhead.js index f556e9881f728c..b3613110ab5c54 100644 --- a/test/pummel/test-net-bytes-per-incoming-chunk-overhead.js +++ b/test/pummel/test-net-bytes-per-incoming-chunk-overhead.js @@ -7,8 +7,8 @@ if (process.config.variables.asan) { common.skip('ASAN messes with memory measurements'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } const assert = require('assert'); diff --git a/test/pummel/test-next-tick-infinite-calls.js b/test/pummel/test-next-tick-infinite-calls.js index bf837f5ebc92c0..d1131066977ea2 100644 --- a/test/pummel/test-next-tick-infinite-calls.js +++ b/test/pummel/test-next-tick-infinite-calls.js @@ -22,8 +22,8 @@ 'use strict'; const common = require('../common'); -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } let complete = 0; diff --git a/test/pummel/test-policy-integrity-dep.js b/test/pummel/test-policy-integrity-dep.js index ec58462335cd56..02f24d02a23544 100644 --- a/test/pummel/test-policy-integrity-dep.js +++ b/test/pummel/test-policy-integrity-dep.js @@ -6,8 +6,8 @@ if (!common.hasCrypto) { common.skip('missing crypto'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } common.requireNoPackageJSONAbove(); diff --git a/test/pummel/test-policy-integrity-parent-commonjs.js b/test/pummel/test-policy-integrity-parent-commonjs.js index 39febab73ee419..425abe38ebd9fb 100644 --- a/test/pummel/test-policy-integrity-parent-commonjs.js +++ b/test/pummel/test-policy-integrity-parent-commonjs.js @@ -6,8 +6,8 @@ if (!common.hasCrypto) { common.skip('missing crypto'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } common.requireNoPackageJSONAbove(); diff --git a/test/pummel/test-policy-integrity-parent-module.js b/test/pummel/test-policy-integrity-parent-module.js index e60a606ea32bbe..dda800dc3652fc 100644 --- a/test/pummel/test-policy-integrity-parent-module.js +++ b/test/pummel/test-policy-integrity-parent-module.js @@ -6,8 +6,8 @@ if (!common.hasCrypto) { common.skip('missing crypto'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } common.requireNoPackageJSONAbove(); diff --git a/test/pummel/test-policy-integrity-parent-no-package-json.js b/test/pummel/test-policy-integrity-parent-no-package-json.js index f2208744447827..a722263e1e484a 100644 --- a/test/pummel/test-policy-integrity-parent-no-package-json.js +++ b/test/pummel/test-policy-integrity-parent-no-package-json.js @@ -6,8 +6,8 @@ if (!common.hasCrypto) { common.skip('missing crypto'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } common.requireNoPackageJSONAbove(); diff --git a/test/pummel/test-policy-integrity-worker-commonjs.js b/test/pummel/test-policy-integrity-worker-commonjs.js index 22a7d762466046..b5d49222a2f01c 100644 --- a/test/pummel/test-policy-integrity-worker-commonjs.js +++ b/test/pummel/test-policy-integrity-worker-commonjs.js @@ -6,8 +6,8 @@ if (!common.hasCrypto) { common.skip('missing crypto'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } common.requireNoPackageJSONAbove(); diff --git a/test/pummel/test-policy-integrity-worker-module.js b/test/pummel/test-policy-integrity-worker-module.js index e5d4e4cd45d300..a8a4fb2c29589f 100644 --- a/test/pummel/test-policy-integrity-worker-module.js +++ b/test/pummel/test-policy-integrity-worker-module.js @@ -6,8 +6,8 @@ if (!common.hasCrypto) { common.skip('missing crypto'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } common.requireNoPackageJSONAbove(); diff --git a/test/pummel/test-policy-integrity-worker-no-package-json.js b/test/pummel/test-policy-integrity-worker-no-package-json.js index 808687f40ea219..e5b3e3ccfabbf6 100644 --- a/test/pummel/test-policy-integrity-worker-no-package-json.js +++ b/test/pummel/test-policy-integrity-worker-no-package-json.js @@ -6,8 +6,8 @@ if (!common.hasCrypto) { common.skip('missing crypto'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } common.requireNoPackageJSONAbove(); diff --git a/test/pummel/test-webcrypto-derivebits-pbkdf2.js b/test/pummel/test-webcrypto-derivebits-pbkdf2.js index 512662025c66f7..e7ed4f6bd646dd 100644 --- a/test/pummel/test-webcrypto-derivebits-pbkdf2.js +++ b/test/pummel/test-webcrypto-derivebits-pbkdf2.js @@ -6,8 +6,8 @@ if (!common.hasCrypto) { common.skip('missing crypto'); } -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } const assert = require('assert'); diff --git a/test/report/report.status b/test/report/report.status new file mode 100644 index 00000000000000..7ef99b5c8ed145 --- /dev/null +++ b/test/report/report.status @@ -0,0 +1,11 @@ +prefix report + +# To mark a test as flaky, list the test name in the appropriate section +# below, without ".js", followed by ": PASS,FLAKY". Example: +# sample-test : PASS,FLAKY + +[true] # This section applies to all platforms + +[$system==solaris] # Also applies to SmartOS +# https://github.com/nodejs/node/issues/43457 +test-report-fatal-error: PASS, FLAKY diff --git a/test/sequential/sequential.status b/test/sequential/sequential.status index 56f9667d7a3058..2ade846d8bc0ea 100644 --- a/test/sequential/sequential.status +++ b/test/sequential/sequential.status @@ -32,6 +32,8 @@ test-tls-psk-client: PASS, FLAKY test-tls-securepair-client: PASS, FLAKY [$arch==arm] +# https://github.com/nodejs/node/issues/43638 +test-gc-http-client-timeout: PASS,FLAKY [$arch==s390x] # https://github.com/nodejs/node/issues/41286 diff --git a/test/sequential/test-child-process-pass-fd.js b/test/sequential/test-child-process-pass-fd.js index ad4e5d693ee2e5..86092f56da8565 100644 --- a/test/sequential/test-child-process-pass-fd.js +++ b/test/sequential/test-child-process-pass-fd.js @@ -9,8 +9,8 @@ const common = require('../common'); // This test is basically `test-cluster-net-send` but creating lots of workers // so the issue reproduces on OS X consistently. -if (process.config.variables.arm_version === '7') { - common.skip('Too slow for armv7 bots'); +if (common.isPi) { + common.skip('Too slow for Raspberry Pi devices'); } const assert = require('assert'); diff --git a/test/sequential/test-crypto-timing-safe-equal.js b/test/sequential/test-crypto-timing-safe-equal.js index a8bd3abf4cf1ae..13190692b84749 100644 --- a/test/sequential/test-crypto-timing-safe-equal.js +++ b/test/sequential/test-crypto-timing-safe-equal.js @@ -32,6 +32,41 @@ assert.strictEqual( } } +{ + // When the inputs are floating-point numbers, timingSafeEqual neither has + // equality nor SameValue semantics. It just compares the underlying bytes, + // ignoring the TypedArray type completely. + + const cmp = (fn) => (a, b) => a.every((x, i) => fn(x, b[i])); + const eq = cmp((a, b) => a === b); + const is = cmp(Object.is); + + function test(a, b, { equal, sameValue, timingSafeEqual }) { + assert.strictEqual(eq(a, b), equal); + assert.strictEqual(is(a, b), sameValue); + assert.strictEqual(crypto.timingSafeEqual(a, b), timingSafeEqual); + } + + test(new Float32Array([NaN]), new Float32Array([NaN]), { + equal: false, + sameValue: true, + timingSafeEqual: true + }); + + test(new Float64Array([0]), new Float64Array([-0]), { + equal: true, + sameValue: false, + timingSafeEqual: false + }); + + const x = new BigInt64Array([0x7ff0000000000001n, 0xfff0000000000001n]); + test(new Float64Array(x.buffer), new Float64Array([NaN, NaN]), { + equal: false, + sameValue: true, + timingSafeEqual: false + }); +} + assert.throws( () => crypto.timingSafeEqual(Buffer.from([1, 2, 3]), Buffer.from([1, 2])), { diff --git a/test/sequential/test-debugger-list.js b/test/sequential/test-debugger-list.js new file mode 100644 index 00000000000000..594874e140b306 --- /dev/null +++ b/test/sequential/test-debugger-list.js @@ -0,0 +1,30 @@ +'use strict'; +const common = require('../common'); + +common.skipIfInspectorDisabled(); + +const fixtures = require('../common/fixtures'); +const startCLI = require('../common/debugger'); + +const assert = require('assert'); + +const cli = startCLI([fixtures.path('debugger/three-lines.js')]); + +(async () => { + await cli.waitForInitialBreak(); + await cli.waitForPrompt(); + await cli.command('list(0)'); + assert.match(cli.output, /> 1 let x = 1;/); + await cli.command('list(1)'); + assert.match(cli.output, /> 1 let x = 1;\r?\n {2}2 x = x \+ 1;/); + await cli.command('list(10)'); + assert.match(cli.output, /> 1 let x = 1;\r?\n {2}2 x = x \+ 1;\r?\n {2}3 module\.exports = x;\r?\n {2}4 /); + await cli.command('c'); + await cli.waitFor(/disconnect/); + await cli.waitFor(/debug> $/); + await cli.command('list()'); + await cli.waitFor(/ERR_DEBUGGER_ERROR/); + assert.match(cli.output, /Uncaught Error \[ERR_DEBUGGER_ERROR\]: Requires execution to be paused/); +})() +.finally(() => cli.quit()) +.then(common.mustCall()); diff --git a/test/sequential/test-debugger-object-type-remote-object.js b/test/sequential/test-debugger-object-type-remote-object.js new file mode 100644 index 00000000000000..7404eae3963447 --- /dev/null +++ b/test/sequential/test-debugger-object-type-remote-object.js @@ -0,0 +1,42 @@ +'use strict'; +const common = require('../common'); + +common.skipIfInspectorDisabled(); + +const fixtures = require('../common/fixtures'); +const startCLI = require('../common/debugger'); + +const assert = require('assert'); + +const cli = startCLI([fixtures.path('debugger/empty.js')]); + +(async () => { + await cli.waitForInitialBreak(); + await cli.waitForPrompt(); + await cli.command('exec new Date(0)'); + assert.match(cli.output, /1970-01-01T00:00:00\.000Z/); + await cli.command('exec null'); + assert.match(cli.output, /null/); + await cli.command('exec /regex/g'); + assert.match(cli.output, /\/regex\/g/); + await cli.command('exec new Map()'); + assert.match(cli.output, /Map\(0\) {}/); + await cli.command('exec new Map([["a",1],["b",2]])'); + assert.match(cli.output, /Map\(2\) { a => 1, b => 2 }/); + await cli.command('exec new Set()'); + assert.match(cli.output, /Set\(0\) {}/); + await cli.command('exec new Set([1,2])'); + assert.match(cli.output, /Set\(2\) { 1, 2 }/); + await cli.command('exec new Set([{a:1},new Set([1])])'); + assert.match(cli.output, /Set\(2\) { { a: 1 }, Set\(1\) { \.\.\. } }/); + await cli.command('exec a={}; a'); + assert.match(cli.output, /{}/); + await cli.command('exec a={a:1,b:{c:1}}; a'); + assert.match(cli.output, /{ a: 1, b: Object }/); + await cli.command('exec a=[]; a'); + assert.match(cli.output, /\[\]/); + await cli.command('exec a=[1,2]; a'); + assert.match(cli.output, /\[ 1, 2 \]/); +})() +.finally(() => cli.quit()) +.then(common.mustCall()); diff --git a/test/sequential/test-debugger-profile-command.js b/test/sequential/test-debugger-profile-command.js new file mode 100644 index 00000000000000..06818c2132d9c5 --- /dev/null +++ b/test/sequential/test-debugger-profile-command.js @@ -0,0 +1,35 @@ +'use strict'; +const common = require('../common'); + +common.skipIfInspectorDisabled(); + +const fixtures = require('../common/fixtures'); +const startCLI = require('../common/debugger'); + +const assert = require('assert'); +const fs = require('fs'); +const path = require('path'); + +const cli = startCLI([fixtures.path('debugger/empty.js')]); + +const rootDir = path.resolve(__dirname, '..', '..'); + +(async () => { + await cli.waitForInitialBreak(); + await cli.waitForPrompt(); + await cli.command('profile'); + await cli.command('profileEnd'); + assert.match(cli.output, /\[Profile \d+μs\]/); + await cli.command('profiles'); + assert.match(cli.output, /\[ \[Profile \d+μs\] \]/); + await cli.command('profiles[0].save()'); + assert.match(cli.output, /Saved profile to .*node\.cpuprofile/); + + const cpuprofile = path.resolve(rootDir, 'node.cpuprofile'); + const data = JSON.parse(fs.readFileSync(cpuprofile, 'utf8')); + assert.strictEqual(Array.isArray(data.nodes), true); + + fs.rmSync(cpuprofile); +})() +.then(common.mustCall()) +.finally(() => cli.quit()); diff --git a/test/sequential/test-net-connect-handle-econnrefused.js b/test/sequential/test-net-connect-handle-econnrefused.js index 3cb7d014b436a4..4bd1b9d2a97e34 100644 --- a/test/sequential/test-net-connect-handle-econnrefused.js +++ b/test/sequential/test-net-connect-handle-econnrefused.js @@ -27,5 +27,6 @@ const assert = require('assert'); const c = net.createConnection(common.PORT); c.on('connect', common.mustNotCall()); c.on('error', common.mustCall((e) => { + assert.strictEqual(c.connecting, false); assert.strictEqual(e.code, 'ECONNREFUSED'); })); diff --git a/test/v8-updates/test-trace-gc-flag.js b/test/v8-updates/test-trace-gc-flag.js new file mode 100644 index 00000000000000..d84e359525127c --- /dev/null +++ b/test/v8-updates/test-trace-gc-flag.js @@ -0,0 +1,40 @@ +'use strict'; + +// This test verifies that `--trace-gc` flag is well integrated. +// We'll check here, that the console outputs gc events properly. +require('../common'); + +const assert = require('assert'); +const { spawnSync } = require('child_process'); + +const fixtures = require('../common/fixtures'); + +{ + const childProcess = spawnSync(process.execPath, [ + '--trace-gc', + '--expose-gc', + fixtures.path('gc.js'), + ]); + const output = childProcess.stdout.toString().trim(); + const lines = splitByLine(output); + + const scavengeRegex = /\bScavenge\b/; + const expectedOutput = [ + scavengeRegex, + scavengeRegex, + scavengeRegex, + scavengeRegex, + /\bMark-sweep\b/, + ]; + lines.forEach((line, index) => { + assert.match(line, expectedOutput[index]); + }); +} + +/** + * HELPERS + */ + +function splitByLine(str) { + return str.split(/\n/); +} diff --git a/test/wasi/test-wasi-initialize-validation.js b/test/wasi/test-wasi-initialize-validation.js index 40dfd864d1874e..6506e1ac4a79e3 100644 --- a/test/wasi/test-wasi-initialize-validation.js +++ b/test/wasi/test-wasi-initialize-validation.js @@ -47,7 +47,10 @@ const bufferSource = fixtures.readSync('simple.wasm'); Object.defineProperty(instance, 'exports', { get() { - return { _initialize: 5, memory: new Uint8Array() }; + return { + _initialize: 5, + memory: new WebAssembly.Memory({ initial: 1 }), + }; }, }); assert.throws( @@ -70,7 +73,7 @@ const bufferSource = fixtures.readSync('simple.wasm'); return { _start() {}, _initialize() {}, - memory: new Uint8Array(), + memory: new WebAssembly.Memory({ initial: 1 }), }; } }); @@ -97,55 +100,11 @@ const bufferSource = fixtures.readSync('simple.wasm'); () => { wasi.initialize(instance); }, { code: 'ERR_INVALID_ARG_TYPE', - message: /"instance\.exports\.memory" property must be of type object/ + message: /"instance\.exports\.memory" property must be a WebAssembly\.Memory object/ } ); } - { - // Verify that a non-ArrayBuffer memory.buffer is rejected. - const wasi = new WASI({}); - const wasm = await WebAssembly.compile(bufferSource); - const instance = await WebAssembly.instantiate(wasm); - - Object.defineProperty(instance, 'exports', { - get() { - return { - _initialize() {}, - memory: {}, - }; - } - }); - // The error message is a little white lie because any object - // with a .buffer property of type ArrayBuffer is accepted, - // but 99% of the time a WebAssembly.Memory object is used. - assert.throws( - () => { wasi.initialize(instance); }, - { - code: 'ERR_INVALID_ARG_TYPE', - message: /"instance\.exports\.memory\.buffer" property must be an WebAssembly\.Memory/ - } - ); - } - - { - // Verify that an argument that duck-types as a WebAssembly.Instance - // is accepted. - const wasi = new WASI({}); - const wasm = await WebAssembly.compile(bufferSource); - const instance = await WebAssembly.instantiate(wasm); - - Object.defineProperty(instance, 'exports', { - get() { - return { - _initialize() {}, - memory: { buffer: new ArrayBuffer(0) }, - }; - } - }); - wasi.initialize(instance); - } - { // Verify that a WebAssembly.Instance from another VM context is accepted. const wasi = new WASI({}); diff --git a/test/wasi/test-wasi-start-validation.js b/test/wasi/test-wasi-start-validation.js index 2059ff081e88dd..016479f412f678 100644 --- a/test/wasi/test-wasi-start-validation.js +++ b/test/wasi/test-wasi-start-validation.js @@ -47,7 +47,7 @@ const bufferSource = fixtures.readSync('simple.wasm'); Object.defineProperty(instance, 'exports', { get() { - return { memory: new Uint8Array() }; + return { memory: new WebAssembly.Memory({ initial: 1 }) }; }, }); assert.throws( @@ -70,7 +70,7 @@ const bufferSource = fixtures.readSync('simple.wasm'); return { _start() {}, _initialize() {}, - memory: new Uint8Array(), + memory: new WebAssembly.Memory({ initial: 1 }), }; } }); @@ -97,55 +97,11 @@ const bufferSource = fixtures.readSync('simple.wasm'); () => { wasi.start(instance); }, { code: 'ERR_INVALID_ARG_TYPE', - message: /"instance\.exports\.memory" property must be of type object/ + message: /"instance\.exports\.memory" property must be a WebAssembly\.Memory object/ } ); } - { - // Verify that a non-ArrayBuffer memory.buffer is rejected. - const wasi = new WASI({}); - const wasm = await WebAssembly.compile(bufferSource); - const instance = await WebAssembly.instantiate(wasm); - - Object.defineProperty(instance, 'exports', { - get() { - return { - _start() {}, - memory: {}, - }; - } - }); - // The error message is a little white lie because any object - // with a .buffer property of type ArrayBuffer is accepted, - // but 99% of the time a WebAssembly.Memory object is used. - assert.throws( - () => { wasi.start(instance); }, - { - code: 'ERR_INVALID_ARG_TYPE', - message: /"instance\.exports\.memory\.buffer" property must be an WebAssembly\.Memory/ - } - ); - } - - { - // Verify that an argument that duck-types as a WebAssembly.Instance - // is accepted. - const wasi = new WASI({}); - const wasm = await WebAssembly.compile(bufferSource); - const instance = await WebAssembly.instantiate(wasm); - - Object.defineProperty(instance, 'exports', { - get() { - return { - _start() {}, - memory: { buffer: new ArrayBuffer(0) }, - }; - } - }); - wasi.start(instance); - } - { // Verify that a WebAssembly.Instance from another VM context is accepted. const wasi = new WASI({}); diff --git a/test/wpt/README.md b/test/wpt/README.md index b8ded27ef37d78..6c5ea4d5a41071 100644 --- a/test/wpt/README.md +++ b/test/wpt/README.md @@ -167,4 +167,4 @@ In that case it needs to be marked with `skip` instead of `fail`. [Web Platform Tests]: https://github.com/web-platform-tests/wpt [`test/fixtures/wpt/README.md`]: ../fixtures/wpt/README.md -[git node wpt]: https://github.com/nodejs/node-core-utils/blob/master/docs/git-node.md#git-node-wpt +[git node wpt]: https://github.com/nodejs/node-core-utils/blob/HEAD/docs/git-node.md#git-node-wpt diff --git a/test/wpt/status/dom/events.json b/test/wpt/status/dom/events.json new file mode 100644 index 00000000000000..aa7ba73eb39f7c --- /dev/null +++ b/test/wpt/status/dom/events.json @@ -0,0 +1,48 @@ +{ + "Event-dispatch-listener-order.window.js": { "fail": "document is not defined" }, + "AddEventListenerOptions-passive.any.js": { + "fail": { + "unexpected": [ + "assert_equals: Incorrect defaultPrevented for options: {\"passive\":true} expected false but got true", + "assert_equals: Incorrect defaultPrevented for options: undefined expected true but got false" + ] + } + }, + "AddEventListenerOptions-signal.any.js": { + "fail": { + "unexpected": [ + "assert_throws_js: function \"() => { et.addEventListener(\"foo\", () => {}, { signal: null }); }\" did not throw", + "assert_throws_js: function \"() => { et.addEventListener(\"foo\", null, { signal: null }); }\" did not throw" + ] + } + }, + "Event-constructors.any.js": { + "fail": { + "unexpected": [ + "assert_true: expected true got false", + "assert_array_equals: lengths differ, expected array [\"bubbles\", \"cancelable\"] length 2, got [\"cancelable\", \"bubbles\", \"sweet\"] length 3" + ] + } + }, + "EventListener-addEventListener.sub.window.js": { + "fail": "document is not defined" + }, + "relatedTarget.window.js": { + "fail": "document is not defined" + }, + "event-global.worker.js": { + "fail": "importScripts is not defined" + }, + "event-global-extra.window.js": { + "fail": "document is not defined" + }, + "legacy-pre-activation-behavior.window.js": { + "fail": "document is not defined" + }, + "event-global-set-before-handleEvent-lookup.window.js": { + "fail": "window is not defined" + }, + "EventTarget-removeEventListener.any.js": { + "fail": "globalThis.removeEventListener is not a function" + } +} diff --git a/test/wpt/status/encoding.json b/test/wpt/status/encoding.json index 88373a1ee38fc5..15dad0b2d4f8a0 100644 --- a/test/wpt/status/encoding.json +++ b/test/wpt/status/encoding.json @@ -15,8 +15,7 @@ "requires": ["small-icu"] }, "textdecoder-streaming.any.js": { - "requires": ["small-icu"], - "fail": "WebAssembly.Memory does not support shared:true" + "requires": ["small-icu"] }, "textdecoder-utf16-surrogates.any.js": { "requires": ["small-icu"] @@ -53,10 +52,10 @@ "fail": "No implementation of TextDecoderStream and TextEncoderStream" }, "encodeInto.any.js": { - "fail": "WebAssembly.Memory does not support shared:true" + "requires": ["small-icu"] }, "textdecoder-copy.any.js": { - "fail": "WebAssembly.Memory does not support shared:true" + "requires": ["small-icu"] }, "legacy-mb-schinese/gbk/gbk-decoder.any.js": { "requires": ["full-icu"], @@ -67,6 +66,12 @@ "skip": "The gb18030 encoding is not supported" }, "textdecoder-arguments.any.js": { - "fail": "Does not support flushing an incomplete sequence" + "requires": ["small-icu"] + }, + "single-byte-decoder.window.js": { + "skip": "location is not defined" + }, + "textdecoder-eof.any.js": { + "requires": ["small-icu"] } } diff --git a/test/wpt/status/url.json b/test/wpt/status/url.json index 812f7a9ffce237..7e4a6c1edc9160 100644 --- a/test/wpt/status/url.json +++ b/test/wpt/status/url.json @@ -12,9 +12,6 @@ "urlencoded-parser.any.js": { "fail": "missing Request and Response" }, - "urlsearchparams-constructor.any.js": { - "fail": "FormData is not defined" - }, "url-constructor.any.js": { "requires": ["small-icu"] }, diff --git a/test/wpt/status/webidl/ecmascript-binding/es-exceptions.json b/test/wpt/status/webidl/ecmascript-binding/es-exceptions.json new file mode 100644 index 00000000000000..0967ef424bce67 --- /dev/null +++ b/test/wpt/status/webidl/ecmascript-binding/es-exceptions.json @@ -0,0 +1 @@ +{} diff --git a/test/wpt/test-domexception.js b/test/wpt/test-domexception.js new file mode 100644 index 00000000000000..09018a25ac58d8 --- /dev/null +++ b/test/wpt/test-domexception.js @@ -0,0 +1,19 @@ +'use strict'; + +require('../common'); +const { WPTRunner } = require('../common/wpt'); + +const runner = new WPTRunner('webidl/ecmascript-binding/es-exceptions'); + +runner.setFlags(['--expose-internals']); +runner.setInitScript(` + const { internalBinding } = require('internal/test/binding'); + const { DOMException } = internalBinding('messaging'); + Object.defineProperty(global, 'DOMException', { + writable: true, + configurable: true, + value: DOMException, + }); +`); + +runner.runJsTests(); diff --git a/test/wpt/test-events.js b/test/wpt/test-events.js new file mode 100644 index 00000000000000..6d4a4cff2d9fdc --- /dev/null +++ b/test/wpt/test-events.js @@ -0,0 +1,9 @@ +'use strict'; +require('../common'); +const { WPTRunner } = require('../common/wpt'); + +const runner = new WPTRunner('dom/events'); + +runner.setFlags(['--experimental-global-customevent']); + +runner.runJsTests(); diff --git a/tools/.eslintrc.yaml b/tools/.eslintrc.yaml index de30cf6d123f33..d9a7929836d91f 100644 --- a/tools/.eslintrc.yaml +++ b/tools/.eslintrc.yaml @@ -12,4 +12,3 @@ rules: - error - args: after-used prefer-arrow-callback: error - no-var: error diff --git a/tools/actions/commit-queue.sh b/tools/actions/commit-queue.sh index 16fbc7f2ef15fb..0df819e47ee825 100755 --- a/tools/actions/commit-queue.sh +++ b/tools/actions/commit-queue.sh @@ -7,7 +7,7 @@ REPOSITORY=$2 shift 2 UPSTREAM=origin -DEFAULT_BRANCH=master +DEFAULT_BRANCH=main COMMIT_QUEUE_LABEL="commit-queue" COMMIT_QUEUE_FAILED_LABEL="commit-queue-failed" @@ -40,7 +40,7 @@ for pr in "$@"; do fi # Skip PR if CI is still running - if ncu-ci url "https://github.com/${OWNER}/${REPOSITORY}/pull/${pr}" 2>&1 | grep "^Result *PENDING"; then + if gh pr checks "$pr" | grep -q "\spending\s"; then echo "pr ${pr} skipped, CI still running" continue fi @@ -86,7 +86,7 @@ for pr in "$@"; do commit_title=$(git log -1 --pretty='format:%s') commit_body=$(git log -1 --pretty='format:%b') commit_head=$(grep 'Fetched commits as' output | cut -d. -f3 | xargs git rev-parse) - + jq -n \ --arg title "${commit_title}" \ --arg body "${commit_body}" \ diff --git a/tools/build-addons.js b/tools/build-addons.js deleted file mode 100644 index 1d4bcbc917972c..00000000000000 --- a/tools/build-addons.js +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -// Usage: e.g. node build-addons.js - -const child_process = require('child_process'); -const path = require('path'); -const fs = require('fs').promises; -const util = require('util'); - -const execFile = util.promisify(child_process.execFile); - -const parallelization = +process.env.JOBS || require('os').cpus().length; -const nodeGyp = process.argv[2]; - -async function runner(directoryQueue) { - if (directoryQueue.length === 0) - return; - - const dir = directoryQueue.shift(); - const next = () => runner(directoryQueue); - - try { - // Only run for directories that have a `binding.gyp`. - // (https://github.com/nodejs/node/issues/14843) - await fs.stat(path.join(dir, 'binding.gyp')); - } catch (err) { - if (err.code === 'ENOENT' || err.code === 'ENOTDIR') - return next(); - throw err; - } - - console.log(`Building addon in ${dir}`); - const { stdout, stderr } = - await execFile(process.execPath, [nodeGyp, 'rebuild', `--directory=${dir}`], - { - stdio: 'inherit', - env: { ...process.env, MAKEFLAGS: '-j1' } - }); - - // We buffer the output and print it out once the process is done in order - // to avoid interleaved output from multiple builds running at once. - process.stdout.write(stdout); - process.stderr.write(stderr); - - return next(); -} - -async function main(directory) { - const directoryQueue = (await fs.readdir(directory)) - .map((subdir) => path.join(directory, subdir)); - - const runners = []; - for (let i = 0; i < parallelization; ++i) - runners.push(runner(directoryQueue)); - return Promise.all(runners); -} - -main(process.argv[3]).catch((err) => setImmediate(() => { throw err; })); diff --git a/tools/build-addons.mjs b/tools/build-addons.mjs new file mode 100755 index 00000000000000..9f757bd798bcf0 --- /dev/null +++ b/tools/build-addons.mjs @@ -0,0 +1,63 @@ +#!/usr/bin/env node + +// Usage: e.g. node build-addons.mjs + +import child_process from 'node:child_process'; +import path from 'node:path'; +import fs from 'node:fs/promises'; +import util from 'node:util'; +import process from 'node:process'; +import os from 'node:os'; + +const execFile = util.promisify(child_process.execFile); + +const parallelization = +process.env.JOBS || os.cpus().length; +const nodeGyp = process.argv[2]; +const directory = process.argv[3]; + +async function buildAddon(dir) { + try { + // Only run for directories that have a `binding.gyp`. + // (https://github.com/nodejs/node/issues/14843) + await fs.stat(path.join(dir, 'binding.gyp')); + } catch (err) { + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') + return; + throw err; + } + + console.log(`Building addon in ${dir}`); + const { stdout, stderr } = + await execFile(process.execPath, [nodeGyp, 'rebuild', `--directory=${dir}`], + { + stdio: 'inherit', + env: { ...process.env, MAKEFLAGS: '-j1' } + }); + + // We buffer the output and print it out once the process is done in order + // to avoid interleaved output from multiple builds running at once. + process.stdout.write(stdout); + process.stderr.write(stderr); +} + +async function parallel(jobQueue, limit) { + const next = async () => { + if (jobQueue.length === 0) { + return; + } + const job = jobQueue.shift(); + await job(); + await next(); + }; + + const workerCnt = Math.min(limit, jobQueue.length); + await Promise.all(Array.from({ length: workerCnt }, next)); +} + +const jobs = []; +for await (const dirent of await fs.opendir(directory)) { + if (dirent.isDirectory()) { + jobs.push(() => buildAddon(path.join(directory, dirent.name))); + } +} +await parallel(jobs, parallelization); diff --git a/tools/clang-format/package-lock.json b/tools/clang-format/package-lock.json index 61f17967f0e4a5..537314a7cb6727 100644 --- a/tools/clang-format/package-lock.json +++ b/tools/clang-format/package-lock.json @@ -1,18 +1,196 @@ { "name": "node-core-clang-format", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "node-core-clang-format", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "clang-format": "^1.8.0" + } + }, + "node_modules/async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/clang-format": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.8.0.tgz", + "integrity": "sha512-pK8gzfu55/lHzIpQ1givIbWfn3eXnU7SfxqIwVgnn5jEM6j4ZJYjpFqFs4iSBPNedzRMmfjYjuQhu657WAXHXw==", + "dependencies": { + "async": "^3.2.3", + "glob": "^7.0.0", + "resolve": "^1.1.6" + }, + "bin": { + "check-clang-format": "bin/check-clang-format.js", + "clang-format": "index.js", + "git-clang-format": "bin/git-clang-format" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + }, "dependencies": { "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "brace-expansion": { "version": "1.1.11", @@ -24,11 +202,11 @@ } }, "clang-format": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.2.3.tgz", - "integrity": "sha512-x90Hac4ERacGDcZSvHKK58Ga0STuMD+Doi5g0iG2zf7wlJef5Huvhs/3BvMRFxwRYyYSdl6mpQNrtfMxE8MQzw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.8.0.tgz", + "integrity": "sha512-pK8gzfu55/lHzIpQ1givIbWfn3eXnU7SfxqIwVgnn5jEM6j4ZJYjpFqFs4iSBPNedzRMmfjYjuQhu657WAXHXw==", "requires": { - "async": "^1.5.2", + "async": "^3.2.3", "glob": "^7.0.0", "resolve": "^1.1.6" } @@ -43,10 +221,15 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -56,6 +239,14 @@ "path-is-absolute": "^1.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -66,14 +257,22 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "requires": { + "has": "^1.0.3" + } }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } @@ -97,13 +296,20 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "requires": { - "path-parse": "^1.0.5" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/tools/clang-format/package.json b/tools/clang-format/package.json index 8432296ed6f1fc..4ae7d36a33c90e 100644 --- a/tools/clang-format/package.json +++ b/tools/clang-format/package.json @@ -4,6 +4,6 @@ "description": "Formatting C++ files for Node.js core", "license": "MIT", "dependencies": { - "clang-format": "1.2.3" + "clang-format": "^1.8.0" } } diff --git a/tools/compress_json.py b/tools/compress_json.py index dfe64063aeaead..fdb3d536cf3e3c 100644 --- a/tools/compress_json.py +++ b/tools/compress_json.py @@ -21,7 +21,7 @@ # To make decompression a little easier, we prepend the compressed data # with the size of the uncompressed data as a 24 bits BE unsigned integer. - assert len(text) < 1 << 24, 'Uncompressed JSON must be < 16 MB.' + assert len(text) < 1 << 24, 'Uncompressed JSON must be < 16 MiB.' data = struct.pack('>I', len(text))[1:4] + data step = 20 diff --git a/tools/cpplint.py b/tools/cpplint.py index b4a4586caaf80c..06fc45abf1a0eb 100755 --- a/tools/cpplint.py +++ b/tools/cpplint.py @@ -41,6 +41,11 @@ same line, but it is far from perfect (in either direction). """ +# cpplint predates fstrings +# pylint: disable=consider-using-f-string + +# pylint: disable=invalid-name + import codecs import copy import getopt @@ -59,7 +64,7 @@ # if empty, use defaults _valid_extensions = set([]) -__VERSION__ = '1.5.5' +__VERSION__ = '1.6.0' try: xrange # Python 2 @@ -1928,6 +1933,7 @@ def __init__(self, lines): self.raw_lines = lines self.num_lines = len(lines) self.lines_without_raw_strings = CleanseRawStrings(lines) + # # pylint: disable=consider-using-enumerate for linenum in range(len(self.lines_without_raw_strings)): self.lines.append(CleanseComments( self.lines_without_raw_strings[linenum])) @@ -5164,10 +5170,12 @@ def CheckIncludeLine(filename, clean_lines, linenum, include_state, error): # # We also make an exception for Lua headers, which follow google # naming convention but not the include convention. - match = Match(r'#include\s*"([^/]+\.h)"', line) - if match and not _THIRD_PARTY_HEADERS_PATTERN.match(match.group(1)): - error(filename, linenum, 'build/include_subdir', 4, - 'Include the directory when naming .h files') + match = Match(r'#include\s*"([^/]+\.(.*))"', line) + if match: + if (IsHeaderExtension(match.group(2)) and + not _THIRD_PARTY_HEADERS_PATTERN.match(match.group(1))): + error(filename, linenum, 'build/include_subdir', 4, + 'Include the directory when naming header files') # we shouldn't include a file more than once. actually, there are a # handful of instances where doing so is okay, but in general it's @@ -6620,7 +6628,7 @@ def ProcessConfigOverrides(filename): continue try: - with open(cfg_file) as file_handle: + with open(cfg_file, encoding='utf-8') as file_handle: for line in file_handle: line, _, _ = line.partition('#') # Remove comments. if not line.strip(): diff --git a/tools/dep_checker/README.md b/tools/dep_checker/README.md new file mode 100644 index 00000000000000..84e1fab640d992 --- /dev/null +++ b/tools/dep_checker/README.md @@ -0,0 +1,72 @@ +# Node.js dependency vulnerability checker + +This script queries the [National Vulnerability Database (NVD)](https://nvd.nist.gov/) and +the [GitHub Advisory Database](https://github.com/advisories) for vulnerabilities found +in Node's dependencies. + +## How to use + +### Database authentication + +- In order to query the GitHub Advisory Database, + a [Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) + has to be created (no permissions need to be given to the token, since it's only used to query the public database). +- The NVD can be queried without authentication, but it will be rate limited to one query every six seconds. In order to + remove + that limitation [request an API key](https://nvd.nist.gov/developers/request-an-api-key) and pass it as a parameter. + +### Running the script + +Once acquired, the script can be run as follows: + +```shell +cd node/tools/dep_checker/ +pip install -r requirements.txt + +# Python >= 3.9 required +python main.py --gh-token=$PERSONAL_ACCESS_TOKEN --nvd-key=$NVD_API_KEY + +# The command can also be run without parameters +# This will skip querying the GitHub Advisory Database, and query the NVD +# using the anonymous (rate-limited) API +python main.py +``` + +## Example output + +``` +WARNING: New vulnerabilities found +- npm (version 1.2.1) : + - GHSA-v3jv-wrf4-5845: https://github.com/advisories/GHSA-v3jv-wrf4-5845 + - GHSA-93f3-23rq-pjfp: https://github.com/advisories/GHSA-93f3-23rq-pjfp + - GHSA-m6cx-g6qm-p2cx: https://github.com/advisories/GHSA-m6cx-g6qm-p2cx + - GHSA-4328-8hgf-7wjr: https://github.com/advisories/GHSA-4328-8hgf-7wjr + - GHSA-x8qc-rrcw-4r46: https://github.com/advisories/GHSA-x8qc-rrcw-4r46 + - GHSA-m5h6-hr3q-22h5: https://github.com/advisories/GHSA-m5h6-hr3q-22h5 +- acorn (version 6.0.0) : + - GHSA-6chw-6frg-f759: https://github.com/advisories/GHSA-6chw-6frg-f759 + +For each dependency and vulnerability, check the following: +- Check the vulnerability's description to see if it applies to the dependency as +used by Node. If not, the vulnerability ID (either a CVE or a GHSA) can be added to the ignore list in +dependencies.py. IMPORTANT: Only do this if certain that the vulnerability found is a false positive. +- Otherwise, the vulnerability found must be remediated by updating the dependency in the Node repo to a +non-affected version. +``` + +## Implementation details + +- For each dependency in Node's `deps/` folder, the script parses their version number and queries the databases to find + vulnerabilities for that specific version. +- The queries can return false positives ( + see [this](https://github.com/nodejs/security-wg/issues/802#issuecomment-1144207417) comment for an example). These + can be ignored by adding the vulnerability to the `ignore_list` in `dependencies.py` +- If no NVD API key is provided, the script will take a while to finish (~2 min) because queries to the NVD + are [rate-limited](https://nvd.nist.gov/developers/start-here) +- If any vulnerabilities are found, the script returns 1 and prints out a list with the ID and a link to a description + of + the vulnerability. This is the case except when the ID matches one in the ignore-list (inside `dependencies.py`) in + which case the vulnerability is ignored. + + + diff --git a/tools/dep_checker/dependencies.py b/tools/dep_checker/dependencies.py new file mode 100644 index 00000000000000..0951dae5ab572c --- /dev/null +++ b/tools/dep_checker/dependencies.py @@ -0,0 +1,97 @@ +"""A list of dependencies, including their CPE, names and keywords for querying different vulnerability databases""" + +from typing import Optional +import versions_parser as vp + + +class CPE: + def __init__(self, vendor: str, product: str): + self.vendor = vendor + self.product = product + + +class Dependency: + def __init__( + self, + version: str, + cpe: Optional[CPE] = None, + npm_name: Optional[str] = None, + keyword: Optional[str] = None, + ): + self.version = version + self.cpe = cpe + self.npm_name = npm_name + self.keyword = keyword + + def get_cpe(self) -> Optional[str]: + if self.cpe: + return f"cpe:2.3:a:{self.cpe.vendor}:{self.cpe.product}:{self.version}:*:*:*:*:*:*:*" + else: + return None + + +ignore_list: list[str] = [ + "CVE-2018-25032", # zlib, already fixed in the fork Node uses (Chromium's) + "CVE-2007-5536", # openssl, old and only in combination with HP-UX + "CVE-2019-0190", # openssl, can be only triggered in combination with Apache HTTP Server version 2.4.37 +] + +dependencies: dict[str, Dependency] = { + "zlib": Dependency( + version=vp.get_zlib_version(), cpe=CPE(vendor="zlib", product="zlib") + ), + # TODO: Add V8 + # "V8": Dependency("cpe:2.3:a:google:chrome:*:*:*:*:*:*:*:*", "v8"), + "uvwasi": Dependency(version=vp.get_uvwasi_version(), cpe=None, keyword="uvwasi"), + "libuv": Dependency( + version=vp.get_libuv_version(), cpe=CPE(vendor="libuv_project", product="libuv") + ), + "undici": Dependency( + version=vp.get_undici_version(), cpe=None, keyword="undici", npm_name="undici" + ), + "OpenSSL": Dependency( + version=vp.get_openssl_version(), cpe=CPE(vendor="openssl", product="openssl") + ), + "npm": Dependency( + version=vp.get_npm_version(), + cpe=CPE(vendor="npmjs", product="npm"), + npm_name="npm", + ), + "nghttp3": Dependency( + version=vp.get_nghttp3_version(), cpe=None, keyword="nghttp3" + ), + "ngtcp2": Dependency(version=vp.get_ngtcp2_version(), cpe=None, keyword="ngtcp2"), + "nghttp2": Dependency( + version=vp.get_nghttp2_version(), cpe=CPE(vendor="nghttp2", product="nghttp2") + ), + "llhttp": Dependency( + version=vp.get_llhttp_version(), + cpe=CPE(vendor="llhttp", product="llhttp"), + npm_name="llhttp", + ), + "ICU": Dependency( + version=vp.get_icu_version(), + cpe=CPE(vendor="icu-project", product="international_components_for_unicode"), + ), + "HdrHistogram": Dependency(version="0.11.2", cpe=None, keyword="hdrhistogram"), + "corepack": Dependency( + version=vp.get_corepack_version(), + cpe=None, + keyword="corepack", + npm_name="corepack", + ), + "CJS Module Lexer": Dependency( + version=vp.get_cjs_lexer_version(), + cpe=None, + keyword="cjs-module-lexer", + npm_name="cjs-module-lexer", + ), + "c-ares": Dependency( + version=vp.get_c_ares_version(), + cpe=CPE(vendor="c-ares_project", product="c-ares"), + ), + "brotli": Dependency( + version=vp.get_brotli_version(), cpe=CPE(vendor="google", product="brotli") + ), + "acorn": Dependency(version=vp.get_acorn_version(), cpe=None, npm_name="acorn"), +} diff --git a/tools/dep_checker/main.py b/tools/dep_checker/main.py new file mode 100644 index 00000000000000..6675f48f570cfb --- /dev/null +++ b/tools/dep_checker/main.py @@ -0,0 +1,180 @@ +""" Node.js dependency vulnerability checker + +This script queries the National Vulnerability Database (NVD) and the GitHub Advisory Database for vulnerabilities found +in Node's dependencies. + +For each dependency in Node's `deps/` folder, the script parses their version number and queries the databases to find +vulnerabilities for that specific version. + +If any vulnerabilities are found, the script returns 1 and prints out a list with the ID and a link to a description of +the vulnerability. This is the case except when the ID matches one in the ignore-list (inside `dependencies.py`) in +which case the vulnerability is ignored. +""" + +from argparse import ArgumentParser +from collections import defaultdict +from dependencies import ignore_list, dependencies +from gql import gql, Client +from gql.transport.aiohttp import AIOHTTPTransport +from nvdlib import searchCVE # type: ignore +from packaging.specifiers import SpecifierSet +from typing import Optional + + +class Vulnerability: + def __init__(self, id: str, url: str): + self.id = id + self.url = url + + +vulnerability_found_message = """For each dependency and vulnerability, check the following: +- Check that the dependency's version printed by the script corresponds to the version present in the Node repo. +If not, update dependencies.py with the actual version number and run the script again. +- If the version is correct, check the vulnerability's description to see if it applies to the dependency as +used by Node. If not, the vulnerability ID (either a CVE or a GHSA) can be added to the ignore list in +dependencies.py. IMPORTANT: Only do this if certain that the vulnerability found is a false positive. +- Otherwise, the vulnerability found must be remediated by updating the dependency in the Node repo to a +non-affected version, followed by updating dependencies.py with the new version. +""" + + +github_vulnerabilities_query = gql( + """ + query($package_name:String!) { + securityVulnerabilities(package:$package_name, last:10) { + nodes { + vulnerableVersionRange + advisory { + ghsaId + permalink + withdrawnAt + } + } + } + } +""" +) + + +def query_ghad(gh_token: str) -> dict[str, list[Vulnerability]]: + """Queries the GitHub Advisory Database for vulnerabilities reported for Node's dependencies. + + The database supports querying by package name in the NPM ecosystem, so we only send queries for the dependencies + that are also NPM packages. + """ + + deps_in_npm = { + name: dep for name, dep in dependencies.items() if dep.npm_name is not None + } + + transport = AIOHTTPTransport( + url="https://api.github.com/graphql", + headers={"Authorization": f"bearer {gh_token}"}, + ) + client = Client( + transport=transport, + fetch_schema_from_transport=True, + serialize_variables=True, + parse_results=True, + ) + + found_vulnerabilities: dict[str, list[Vulnerability]] = defaultdict(list) + for name, dep in deps_in_npm.items(): + variables_package = { + "package_name": dep.npm_name, + } + result = client.execute( + github_vulnerabilities_query, variable_values=variables_package + ) + matching_vulns = [ + v + for v in result["securityVulnerabilities"]["nodes"] + if v["advisory"]["withdrawnAt"] is None + and dep.version in SpecifierSet(v["vulnerableVersionRange"]) + and v["advisory"]["ghsaId"] not in ignore_list + ] + if matching_vulns: + found_vulnerabilities[name].extend( + [ + Vulnerability( + id=vuln["advisory"]["ghsaId"], url=vuln["advisory"]["permalink"] + ) + for vuln in matching_vulns + ] + ) + + return found_vulnerabilities + + +def query_nvd(api_key: Optional[str]) -> dict[str, list[Vulnerability]]: + """Queries the National Vulnerability Database for vulnerabilities reported for Node's dependencies. + + The database supports querying by CPE (Common Platform Enumeration) or by a keyword present in the CVE's + description. + Since some of Node's dependencies don't have an associated CPE, we use their name as a keyword in the query. + """ + deps_in_nvd = { + name: dep + for name, dep in dependencies.items() + if dep.cpe is not None or dep.keyword is not None + } + found_vulnerabilities: dict[str, list[Vulnerability]] = defaultdict(list) + for name, dep in deps_in_nvd.items(): + query_results = [ + cve + for cve in searchCVE( + cpeMatchString=dep.get_cpe(), keyword=dep.keyword, key=api_key + ) + if cve.id not in ignore_list + ] + if query_results: + found_vulnerabilities[name].extend( + [Vulnerability(id=cve.id, url=cve.url) for cve in query_results] + ) + + return found_vulnerabilities + + +def main(): + parser = ArgumentParser( + description="Query the NVD and the GitHub Advisory Database for new vulnerabilities in Node's dependencies" + ) + parser.add_argument( + "--gh-token", + help="the GitHub authentication token for querying the GH Advisory Database", + ) + parser.add_argument( + "--nvd-key", + help="the NVD API key for querying the National Vulnerability Database", + ) + gh_token = parser.parse_args().gh_token + nvd_key = parser.parse_args().nvd_key + if gh_token is None: + print( + "Warning: GitHub authentication token not provided, skipping GitHub Advisory Database queries" + ) + if nvd_key is None: + print( + "Warning: NVD API key not provided, queries will be slower due to rate limiting" + ) + ghad_vulnerabilities: dict[str, list[Vulnerability]] = ( + {} if gh_token is None else query_ghad(gh_token) + ) + nvd_vulnerabilities: dict[str, list[Vulnerability]] = query_nvd(nvd_key) + + if not ghad_vulnerabilities and not nvd_vulnerabilities: + print(f"No new vulnerabilities found ({len(ignore_list)} ignored)") + return 0 + else: + print("WARNING: New vulnerabilities found") + for source in (ghad_vulnerabilities, nvd_vulnerabilities): + for name, vulns in source.items(): + print(f"- {name} (version {dependencies[name].version}) :") + for v in vulns: + print(f"\t- {v.id}: {v.url}") + print(f"\n{vulnerability_found_message}") + return 1 + + +if __name__ == "__main__": + exit(main()) diff --git a/tools/dep_checker/requirements.txt b/tools/dep_checker/requirements.txt new file mode 100644 index 00000000000000..3a41c5824b7f06 --- /dev/null +++ b/tools/dep_checker/requirements.txt @@ -0,0 +1,3 @@ +gql[aiohttp] +nvdlib==0.5.8 +packaging diff --git a/tools/dep_checker/versions_parser.py b/tools/dep_checker/versions_parser.py new file mode 100644 index 00000000000000..3a385bf1d2dd0b --- /dev/null +++ b/tools/dep_checker/versions_parser.py @@ -0,0 +1,169 @@ +"""Utility functions to parse version numbers from each of Node's dependencies""" + +from pathlib import Path +import re + + +def get_package_json_version(path: Path) -> str: + with open(path, "r") as f: + matches = re.search('"version": "(?P.*)"', f.read()) + if matches is None: + raise RuntimeError(f"Error extracting version number from {path}") + return matches.groupdict()["version"] + + +def get_acorn_version() -> str: + return get_package_json_version(Path("../../deps/acorn/acorn/package.json")) + + +def get_brotli_version() -> str: + with open("../../deps/brotli/c/common/version.h", "r") as f: + matches = re.search("#define BROTLI_VERSION (?P.*)", f.read()) + if matches is None: + raise RuntimeError("Error extracting version number for brotli") + hex_version = matches.groupdict()["version"] + major_version = int(hex_version, 16) >> 24 + minor_version = int(hex_version, 16) >> 12 & 0xFF + patch_version = int(hex_version, 16) & 0xFFFFF + return f"{major_version}.{minor_version}.{patch_version}" + + +def get_c_ares_version() -> str: + with open("../../deps/cares/include/ares_version.h", "r") as f: + matches = re.search('#define ARES_VERSION_STR "(?P.*)"', f.read()) + if matches is None: + raise RuntimeError("Error extracting version number for c-ares") + return matches.groupdict()["version"] + + +def get_cjs_lexer_version() -> str: + return get_package_json_version(Path("../../deps/cjs-module-lexer/package.json")) + + +def get_corepack_version() -> str: + return get_package_json_version(Path("../../deps/corepack/package.json")) + + +def get_icu_version() -> str: + with open("../../deps/icu-small/source/common/unicode/uvernum.h", "r") as f: + matches = re.search('#define U_ICU_VERSION "(?P.*)"', f.read()) + if matches is None: + raise RuntimeError("Error extracting version number for ICU") + return matches.groupdict()["version"] + + +def get_llhttp_version() -> str: + with open("../../deps/llhttp/include/llhttp.h", "r") as f: + matches = re.search( + "#define LLHTTP_VERSION_MAJOR (?P.*)\n" + "#define LLHTTP_VERSION_MINOR (?P.*)\n" + "#define LLHTTP_VERSION_PATCH (?P.*)", + f.read(), + re.MULTILINE, + ) + if matches is None: + raise RuntimeError("Error extracting version number for llhttp") + versions = matches.groupdict() + return f"{versions['major']}.{versions['minor']}.{versions['patch']}" + + +def get_nghttp2_version() -> str: + with open("../../deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h", "r") as f: + matches = re.search('#define NGHTTP2_VERSION "(?P.*)"', f.read()) + if matches is None: + raise RuntimeError("Error extracting version number for nghttp2") + return matches.groupdict()["version"] + + +def get_ngtcp2_version() -> str: + with open("../../deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h", "r") as f: + matches = re.search('#define NGTCP2_VERSION "(?P.*)"', f.read()) + if matches is None: + raise RuntimeError("Error extracting version number for ngtcp2") + return matches.groupdict()["version"] + + +def get_nghttp3_version() -> str: + with open("../../deps/ngtcp2/nghttp3/lib/includes/nghttp3/version.h", "r") as f: + matches = re.search('#define NGHTTP3_VERSION "(?P.*)"', f.read()) + if matches is None: + raise RuntimeError("Error extracting version number for nghttp3") + return matches.groupdict()["version"] + + +def get_npm_version() -> str: + return get_package_json_version(Path("../../deps/npm/package.json")) + + +def get_openssl_version() -> str: + with open("../../deps/openssl/openssl/VERSION.dat", "r") as f: + matches = re.search( + "MAJOR=(?P.*)\n" "MINOR=(?P.*)\n" "PATCH=(?P.*)", + f.read(), + re.MULTILINE, + ) + if matches is None: + raise RuntimeError("Error extracting version number for openssl") + versions = matches.groupdict() + return f"{versions['major']}.{versions['minor']}.{versions['patch']}" + + +def get_undici_version() -> str: + return get_package_json_version(Path("../../deps/undici/src/package.json")) + + +def get_libuv_version() -> str: + with open("../../deps/uv/include/uv/version.h", "r") as f: + matches = re.search( + "#define UV_VERSION_MAJOR (?P.*)\n" + "#define UV_VERSION_MINOR (?P.*)\n" + "#define UV_VERSION_PATCH (?P.*)", + f.read(), + re.MULTILINE, + ) + if matches is None: + raise RuntimeError("Error extracting version number for libuv") + versions = matches.groupdict() + return f"{versions['major']}.{versions['minor']}.{versions['patch']}" + + +def get_uvwasi_version() -> str: + with open("../../deps/uvwasi/include/uvwasi.h", "r") as f: + matches = re.search( + "#define UVWASI_VERSION_MAJOR (?P.*)\n" + "#define UVWASI_VERSION_MINOR (?P.*)\n" + "#define UVWASI_VERSION_PATCH (?P.*)", + f.read(), + re.MULTILINE, + ) + if matches is None: + raise RuntimeError("Error extracting version number for uvwasi") + versions = matches.groupdict() + return f"{versions['major']}.{versions['minor']}.{versions['patch']}" + + +def get_v8_version() -> str: + with open("../../deps/v8/include/v8-version.h", "r") as f: + matches = re.search( + "#define V8_MAJOR_VERSION (?P.*)\n" + "#define V8_MINOR_VERSION (?P.*)\n" + "#define V8_BUILD_NUMBER (?P.*)\n" + "#define V8_PATCH_LEVEL (?P.*)\n", + f.read(), + re.MULTILINE, + ) + if matches is None: + raise RuntimeError("Error extracting version number for v8") + versions = matches.groupdict() + patch_suffix = "" if versions["patch"] == "0" else f".{versions['patch']}" + return ( + f"{versions['major']}.{versions['minor']}.{versions['build']}{patch_suffix}" + ) + + +def get_zlib_version() -> str: + with open("../../deps/zlib/zlib.h", "r") as f: + matches = re.search('#define ZLIB_VERSION "(?P.*)"', f.read()) + if matches is None: + raise RuntimeError("Error extracting version number for zlib") + return matches.groupdict()["version"] diff --git a/tools/doc/allhtml.mjs b/tools/doc/allhtml.mjs index 50f145034ccb7a..fb0b719ac8a8a9 100644 --- a/tools/doc/allhtml.mjs +++ b/tools/doc/allhtml.mjs @@ -2,6 +2,7 @@ // of the generated html files. import fs from 'fs'; +import buildCSSForFlavoredJS from './buildCSSForFlavoredJS.mjs'; const source = new URL('../../out/doc/api/', import.meta.url); @@ -90,7 +91,14 @@ all = all.slice(0, tocStart.index + tocStart[0].length) + // Replace apicontent with the concatenated set of apicontents from each source. const apiStart = /<\w+ id="apicontent">\s*/.exec(all); const apiEnd = all.lastIndexOf(''); -all = all.slice(0, apiStart.index + apiStart[0].length) + +all = all.slice(0, apiStart.index + apiStart[0].length) + .replace( + '\n', + buildCSSForFlavoredJS(new Set(Array.from( + apicontent.matchAll(/(?<=
                  )/g),
                  +        (x) => Number(x[0])
                  +      ))) + '\n'
                  +    ) +
                     apicontent +
                     all.slice(apiEnd);
                   
                  diff --git a/tools/doc/apilinks.mjs b/tools/doc/apilinks.mjs
                  index a1b660f1cfaf54..749bf7966aa2b0 100644
                  --- a/tools/doc/apilinks.mjs
                  +++ b/tools/doc/apilinks.mjs
                  @@ -41,7 +41,7 @@ const remoteUrl = execSync(`git config remote.${trackingRemote}.url`);
                   const repo = (remoteUrl.match(/(\w+\/\w+)\.git\r?\n?$/) ||
                                ['', 'nodejs/node'])[1];
                   
                  -const hash = execSync('git log -1 --pretty=%H') || 'master';
                  +const hash = execSync('git log -1 --pretty=%H') || 'main';
                   const tag = execSync(`git describe --contains ${hash}`).split('\n')[0] || hash;
                   
                   // Extract definitions from each file specified.
                  diff --git a/tools/doc/buildCSSForFlavoredJS.mjs b/tools/doc/buildCSSForFlavoredJS.mjs
                  new file mode 100644
                  index 00000000000000..6b355ab1760a64
                  --- /dev/null
                  +++ b/tools/doc/buildCSSForFlavoredJS.mjs
                  @@ -0,0 +1,53 @@
                  +const CHAR_THRESHOLD = 68; // Around 68 characters, we have to take into
                  +//                            account the left column that appears on screen
                  +//                            wider than 1024px.
                  +
                  +const ESTIMATED_CHAR_WIDTH = 8; // If the root element font-size is 16px (default value), 1ch is 7.8025px.
                  +const TOGGLE_WIDTH = 142; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L954
                  +
                  +const PRE_MARGIN_LEFT = 16; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L516
                  +const PRE_MARGIN_RIGHT = 16; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L516
                  +const PRE_PADDING_LEFT = 16; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L513
                  +const PRE_PADDING_RIGHT = 16; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L513
                  +
                  +
                  +const COLUMN_RIGHT_MARGIN_LEFT_LARGE_SCREEN = 234; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L653
                  +const COLUMN_RIGHT_MARGIN_LEFT_SMALL_SCREEN = 0; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L906
                  +const COLUMN_RIGHT_MARGIN_RIGHT_LARGE_SCREEN = 0;
                  +const COLUMN_RIGHT_MARGIN_RIGHT_SMALL_SCREEN = 0;
                  +const COLUMN_RIGHT_PADDING_LEFT_LARGE_SCREEN = 24; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L655
                  +const COLUMN_RIGHT_PADDING_LEFT_SMALL_SCREEN = 8; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L907
                  +const COLUMN_RIGHT_PADDING_RIGHT_LARGE_SCREEN = 32; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L654
                  +const COLUMN_RIGHT_PADDING_RIGHT_SMALL_SCREEN = 8; // https://github.com/nodejs/node/blob/dbd938549b16718f2e4cc2809746b8c44a191b1d/doc/api_assets/style.css#L908
                  +
                  +const getMarginLeft = (charCount) =>
                  +  (charCount > CHAR_THRESHOLD ?
                  +    COLUMN_RIGHT_MARGIN_LEFT_LARGE_SCREEN :
                  +    COLUMN_RIGHT_MARGIN_LEFT_SMALL_SCREEN) + PRE_MARGIN_LEFT;
                  +const getPaddingLeft = (charCount) =>
                  +  (charCount > CHAR_THRESHOLD ?
                  +    COLUMN_RIGHT_PADDING_LEFT_LARGE_SCREEN :
                  +    COLUMN_RIGHT_PADDING_LEFT_SMALL_SCREEN) + PRE_PADDING_LEFT;
                  +const getPaddingRight = (charCount) =>
                  +  (charCount > CHAR_THRESHOLD ?
                  +    COLUMN_RIGHT_PADDING_RIGHT_LARGE_SCREEN :
                  +    COLUMN_RIGHT_PADDING_RIGHT_SMALL_SCREEN) + PRE_PADDING_RIGHT;
                  +const getMarginRight = (charCount) =>
                  +  (charCount > CHAR_THRESHOLD ?
                  +    COLUMN_RIGHT_MARGIN_RIGHT_LARGE_SCREEN :
                  +    COLUMN_RIGHT_MARGIN_RIGHT_SMALL_SCREEN) + PRE_MARGIN_RIGHT;
                  +
                  +
                  +export default function buildCSSForFlavoredJS(dynamicSizes) {
                  +  if (dynamicSizes == null || dynamicSizes.length === 0) return '';
                  +
                  +  return ``;
                  +}
                  diff --git a/tools/doc/html.mjs b/tools/doc/html.mjs
                  index 1c5ad61182bc79..373f5487a31d4b 100644
                  --- a/tools/doc/html.mjs
                  +++ b/tools/doc/html.mjs
                  @@ -33,6 +33,9 @@ import { visit } from 'unist-util-visit';
                   
                   import * as common from './common.mjs';
                   import * as typeParser from './type-parser.mjs';
                  +import buildCSSForFlavoredJS from './buildCSSForFlavoredJS.mjs';
                  +
                  +const dynamicSizes = Object.create(null);
                   
                   const { highlight, getLanguage } = highlightJs;
                   
                  @@ -90,6 +93,8 @@ function processContent(content) {
                   }
                   
                   export function toHTML({ input, content, filename, nodeVersion, versions }) {
                  +  const dynamicSizesForThisFile = dynamicSizes[filename];
                  +
                     filename = path.basename(filename, '.md');
                   
                     const id = filename.replace(/\W+/g, '-');
                  @@ -99,6 +104,7 @@ export function toHTML({ input, content, filename, nodeVersion, versions }) {
                                        .replace('__SECTION__', content.section)
                                        .replace(/__VERSION__/g, nodeVersion)
                                        .replace(/__TOC__/g, content.toc)
                  +                     .replace('__JS_FLAVORED_DYNAMIC_CSS__', buildCSSForFlavoredJS(dynamicSizesForThisFile))
                                        .replace(/__TOC_PICKER__/g, tocPicker(id, content))
                                        .replace(/__GTOC_PICKER__/g, gtocPicker(id))
                                        .replace(/__GTOC__/g, gtocHTML.replace(
                  @@ -228,14 +234,19 @@ export function preprocessElements({ filename }) {
                             const previousNode = parent.children[index - 1] || {};
                             const nextNode = parent.children[index + 1] || {};
                   
                  +          const charCountFirstTwoLines = Math.max(...node.value.split('\n', 2).map((str) => str.length));
                  +
                             if (!isJSFlavorSnippet(previousNode) &&
                                 isJSFlavorSnippet(nextNode) &&
                                 nextNode.lang !== node.lang) {
                               // Saving the highlight code as value to be added in the next node.
                               node.value = highlighted;
                  +            node.charCountFirstTwoLines = charCountFirstTwoLines;
                             } else if (isJSFlavorSnippet(previousNode) &&
                                        previousNode.lang !== node.lang) {
                  -            node.value = '
                  ' +
                  +            const actualCharCount = Math.max(charCountFirstTwoLines, previousNode.charCountFirstTwoLines);
                  +            (dynamicSizes[filename] ??= new Set()).add(actualCharCount);
                  +            node.value = `
                  ` +
                                 'Edit on GitHub`;
                  +  return `
                • Edit on GitHub
                • `; } function gtocPicker(id) { diff --git a/tools/doc/package-lock.json b/tools/doc/package-lock.json index 629441b0bd142f..cfaa859e987871 100644 --- a/tools/doc/package-lock.json +++ b/tools/doc/package-lock.json @@ -11,7 +11,7 @@ "node-doc-generator": "generate.js" }, "devDependencies": { - "highlight.js": "^11.5.0", + "highlight.js": "^11.6.0", "js-yaml": "^4.1.0", "rehype-raw": "^6.1.1", "rehype-stringify": "^9.0.3", @@ -99,7 +99,7 @@ "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "node_modules/ccount": { @@ -113,9 +113,9 @@ } }, "node_modules/character-entities": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz", - "integrity": "sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "dev": true, "funding": { "type": "github", @@ -159,9 +159,9 @@ "dev": true }, "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -176,9 +176,9 @@ } }, "node_modules/decode-named-character-reference": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz", - "integrity": "sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", "dev": true, "dependencies": { "character-entities": "^2.0.0" @@ -189,18 +189,18 @@ } }, "node_modules/dequal": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", - "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "dev": true, "engines": { "node": ">=0.3.1" @@ -240,7 +240,7 @@ "node_modules/format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", "dev": true, "engines": { "node": ">=0.4.x" @@ -313,9 +313,9 @@ } }, "node_modules/hast-util-raw": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.1.tgz", - "integrity": "sha512-wgtppqXVdXzkDXDFclLLdAyVUJSKMYYi6LWIAbA8oFqEdwksYIcPGM3RkKV1Dfn5GElvxhaOCs0jmCOMayxd3A==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.2.tgz", + "integrity": "sha512-0x3BhhdlBcqRIKyc095lBSDvmQNMY3Eulj2PLsT5XCyKYrxssI5yr3P4Kv/PBo1s/DMkZy2voGkMXECnFCZRLQ==", "dev": true, "dependencies": { "@types/hast": "^2.0.0", @@ -416,9 +416,9 @@ } }, "node_modules/highlight.js": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.5.0.tgz", - "integrity": "sha512-SM6WDj5/C+VfIY8pZ6yW6Xa0Fm1tniYVYWYW1Q/DcMnISZFrC3aQAZZZFAAZtybKNrGId3p/DNbFTtcTXXgYBw==", + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.6.0.tgz", + "integrity": "sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==", "dev": true, "engines": { "node": ">=12.0.0" @@ -464,9 +464,9 @@ } }, "node_modules/is-plain-obj": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", - "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, "engines": { "node": ">=12" @@ -488,9 +488,9 @@ } }, "node_modules/kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, "engines": { "node": ">=6" @@ -517,29 +517,14 @@ } }, "node_modules/mdast-util-definitions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz", - "integrity": "sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", + "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", - "unist-util-visit": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", - "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" + "unist-util-visit": "^4.0.0" }, "funding": { "type": "opencollective", @@ -547,14 +532,14 @@ } }, "node_modules/mdast-util-find-and-replace": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.1.0.tgz", - "integrity": "sha512-1w1jbqAd13oU78QPBf5223+xB+37ecNtQ1JElq2feWols5oEYAl+SgNDnOZipe7NfLemoEt362yUS15/wip4mw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", + "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", "dev": true, "dependencies": { "escape-string-regexp": "^5.0.0", "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" + "unist-util-visit-parents": "^5.0.0" }, "funding": { "type": "opencollective", @@ -599,16 +584,18 @@ } }, "node_modules/mdast-util-gfm": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.0.tgz", - "integrity": "sha512-wMwejlTN3EQADPFuvxe8lmGsay3+f6gSJKdAHR6KBJzpcxvsjJSILB9K6u6G7eQLC7iOTyVIHYGui9uBc9r1Tg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz", + "integrity": "sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==", "dev": true, "dependencies": { + "mdast-util-from-markdown": "^1.0.0", "mdast-util-gfm-autolink-literal": "^1.0.0", "mdast-util-gfm-footnote": "^1.0.0", "mdast-util-gfm-strikethrough": "^1.0.0", "mdast-util-gfm-table": "^1.0.0", - "mdast-util-gfm-task-list-item": "^1.0.0" + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" }, "funding": { "type": "opencollective", @@ -661,12 +648,13 @@ } }, "node_modules/mdast-util-gfm-table": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.3.tgz", - "integrity": "sha512-B/tgpJjND1qIZM2WZst+NYnb0notPE6m0J+YOe3NOHXyEmvK38ytxaOsgz4BvrRPQQcNbRrTzSHMPnBkj1fCjg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.4.tgz", + "integrity": "sha512-aEuoPwZyP4iIMkf2cLWXxx3EQ6Bmh2yKy9MVCg4i6Sd3cX80dcLEfXO/V4ul3pGH9czBK4kp+FAl+ZHmSUt9/w==", "dev": true, "dependencies": { "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", "mdast-util-to-markdown": "^1.3.0" }, "funding": { @@ -689,9 +677,9 @@ } }, "node_modules/mdast-util-to-hast": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.1.1.tgz", - "integrity": "sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw==", + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.1.2.tgz", + "integrity": "sha512-Wn6Mcj04qU4qUXHnHpPATYMH2Jd8RlntdnloDfYLe1ErWRHo6+pvSl/DzHp6sCZ9cBSYlc8Sk8pbwb8xtUoQhQ==", "dev": true, "dependencies": { "@types/hast": "^2.0.0", @@ -700,6 +688,7 @@ "mdast-util-definitions": "^5.0.0", "mdurl": "^1.0.0", "micromark-util-sanitize-uri": "^1.0.0", + "trim-lines": "^3.0.0", "unist-builder": "^3.0.0", "unist-util-generated": "^2.0.0", "unist-util-position": "^4.0.0", @@ -742,7 +731,7 @@ "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, "node_modules/micromark": { @@ -867,9 +856,9 @@ } }, "node_modules/micromark-extension-gfm-footnote": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.3.tgz", - "integrity": "sha512-bn62pC5y39rIo2g1RqZk1NhF7T7cJLuJlbevunQz41U0iPVCdVOFASe5/L1kke+DFKSgfCRhv24+o42cZ1+ADw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", + "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", "dev": true, "dependencies": { "micromark-core-commonmark": "^1.0.0", @@ -878,6 +867,7 @@ "micromark-util-normalize-identifier": "^1.0.0", "micromark-util-sanitize-uri": "^1.0.0", "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", "uvu": "^0.5.0" }, "funding": { @@ -1196,9 +1186,9 @@ ] }, "node_modules/micromark-util-html-tag-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz", - "integrity": "sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", + "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==", "dev": true, "funding": [ { @@ -1340,9 +1330,9 @@ "dev": true }, "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "dependencies": { "boolbase": "^1.0.0" @@ -1500,9 +1490,9 @@ } }, "node_modules/stringify-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.2.tgz", - "integrity": "sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", "dev": true, "dependencies": { "character-entities-html4": "^2.0.0", @@ -1536,6 +1526,16 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -1599,10 +1599,13 @@ } }, "node_modules/unist-util-position": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.1.tgz", - "integrity": "sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", + "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -1654,20 +1657,6 @@ } }, "node_modules/unist-util-visit-parents": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", - "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", @@ -1682,9 +1671,9 @@ } }, "node_modules/uvu": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.3.tgz", - "integrity": "sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", "dev": true, "dependencies": { "dequal": "^2.0.0", @@ -1700,9 +1689,9 @@ } }, "node_modules/vfile": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.2.tgz", - "integrity": "sha512-w0PLIugRY3Crkgw89TeMvHCzqCs/zpreR31hl4D92y6SOE07+bfJe+dK5Q2akwS+i/c801kzjoOr9gMcTe6IAA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.4.tgz", + "integrity": "sha512-KI+7cnst03KbEyN1+JE504zF5bJBZa+J+CrevLeyIMq0aPU681I2rQ5p4PlnQ6exFtWiUrg26QUdFMnAKR6PIw==", "dev": true, "dependencies": { "@types/unist": "^2.0.0", @@ -1831,7 +1820,7 @@ "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, "ccount": { @@ -1841,9 +1830,9 @@ "dev": true }, "character-entities": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz", - "integrity": "sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "dev": true }, "character-entities-html4": { @@ -1871,33 +1860,33 @@ "dev": true }, "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" } }, "decode-named-character-reference": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz", - "integrity": "sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", "dev": true, "requires": { "character-entities": "^2.0.0" } }, "dequal": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", - "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true }, "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "dev": true }, "escape-string-regexp": { @@ -1924,7 +1913,7 @@ "format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", "dev": true }, "hast-to-hyperscript": { @@ -1978,9 +1967,9 @@ } }, "hast-util-raw": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.1.tgz", - "integrity": "sha512-wgtppqXVdXzkDXDFclLLdAyVUJSKMYYi6LWIAbA8oFqEdwksYIcPGM3RkKV1Dfn5GElvxhaOCs0jmCOMayxd3A==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.2.tgz", + "integrity": "sha512-0x3BhhdlBcqRIKyc095lBSDvmQNMY3Eulj2PLsT5XCyKYrxssI5yr3P4Kv/PBo1s/DMkZy2voGkMXECnFCZRLQ==", "dev": true, "requires": { "@types/hast": "^2.0.0", @@ -2057,9 +2046,9 @@ } }, "highlight.js": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.5.0.tgz", - "integrity": "sha512-SM6WDj5/C+VfIY8pZ6yW6Xa0Fm1tniYVYWYW1Q/DcMnISZFrC3aQAZZZFAAZtybKNrGId3p/DNbFTtcTXXgYBw==", + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.6.0.tgz", + "integrity": "sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==", "dev": true }, "html-void-elements": { @@ -2081,9 +2070,9 @@ "dev": true }, "is-plain-obj": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", - "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true }, "js-yaml": { @@ -2096,9 +2085,9 @@ } }, "kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true }, "longest-streak": { @@ -2114,38 +2103,25 @@ "dev": true }, "mdast-util-definitions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz", - "integrity": "sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", + "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", "dev": true, "requires": { "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", - "unist-util-visit": "^3.0.0" - }, - "dependencies": { - "unist-util-visit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", - "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" - } - } + "unist-util-visit": "^4.0.0" } }, "mdast-util-find-and-replace": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.1.0.tgz", - "integrity": "sha512-1w1jbqAd13oU78QPBf5223+xB+37ecNtQ1JElq2feWols5oEYAl+SgNDnOZipe7NfLemoEt362yUS15/wip4mw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", + "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", "dev": true, "requires": { "escape-string-regexp": "^5.0.0", "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" + "unist-util-visit-parents": "^5.0.0" } }, "mdast-util-from-markdown": { @@ -2178,16 +2154,18 @@ } }, "mdast-util-gfm": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.0.tgz", - "integrity": "sha512-wMwejlTN3EQADPFuvxe8lmGsay3+f6gSJKdAHR6KBJzpcxvsjJSILB9K6u6G7eQLC7iOTyVIHYGui9uBc9r1Tg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz", + "integrity": "sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==", "dev": true, "requires": { + "mdast-util-from-markdown": "^1.0.0", "mdast-util-gfm-autolink-literal": "^1.0.0", "mdast-util-gfm-footnote": "^1.0.0", "mdast-util-gfm-strikethrough": "^1.0.0", "mdast-util-gfm-table": "^1.0.0", - "mdast-util-gfm-task-list-item": "^1.0.0" + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" } }, "mdast-util-gfm-autolink-literal": { @@ -2224,12 +2202,13 @@ } }, "mdast-util-gfm-table": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.3.tgz", - "integrity": "sha512-B/tgpJjND1qIZM2WZst+NYnb0notPE6m0J+YOe3NOHXyEmvK38ytxaOsgz4BvrRPQQcNbRrTzSHMPnBkj1fCjg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.4.tgz", + "integrity": "sha512-aEuoPwZyP4iIMkf2cLWXxx3EQ6Bmh2yKy9MVCg4i6Sd3cX80dcLEfXO/V4ul3pGH9czBK4kp+FAl+ZHmSUt9/w==", "dev": true, "requires": { "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", "mdast-util-to-markdown": "^1.3.0" } }, @@ -2244,9 +2223,9 @@ } }, "mdast-util-to-hast": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.1.1.tgz", - "integrity": "sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw==", + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.1.2.tgz", + "integrity": "sha512-Wn6Mcj04qU4qUXHnHpPATYMH2Jd8RlntdnloDfYLe1ErWRHo6+pvSl/DzHp6sCZ9cBSYlc8Sk8pbwb8xtUoQhQ==", "dev": true, "requires": { "@types/hast": "^2.0.0", @@ -2255,6 +2234,7 @@ "mdast-util-definitions": "^5.0.0", "mdurl": "^1.0.0", "micromark-util-sanitize-uri": "^1.0.0", + "trim-lines": "^3.0.0", "unist-builder": "^3.0.0", "unist-util-generated": "^2.0.0", "unist-util-position": "^4.0.0", @@ -2285,7 +2265,7 @@ "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, "micromark": { @@ -2378,9 +2358,9 @@ } }, "micromark-extension-gfm-footnote": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.3.tgz", - "integrity": "sha512-bn62pC5y39rIo2g1RqZk1NhF7T7cJLuJlbevunQz41U0iPVCdVOFASe5/L1kke+DFKSgfCRhv24+o42cZ1+ADw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", + "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", "dev": true, "requires": { "micromark-core-commonmark": "^1.0.0", @@ -2389,6 +2369,7 @@ "micromark-util-normalize-identifier": "^1.0.0", "micromark-util-sanitize-uri": "^1.0.0", "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", "uvu": "^0.5.0" } }, @@ -2567,9 +2548,9 @@ "dev": true }, "micromark-util-html-tag-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz", - "integrity": "sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", + "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==", "dev": true }, "micromark-util-normalize-identifier": { @@ -2638,9 +2619,9 @@ "dev": true }, "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "requires": { "boolbase": "^1.0.0" @@ -2756,9 +2737,9 @@ "dev": true }, "stringify-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.2.tgz", - "integrity": "sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", "dev": true, "requires": { "character-entities-html4": "^2.0.0", @@ -2784,6 +2765,12 @@ "vfile": "^5.1.0" } }, + "trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true + }, "trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -2827,10 +2814,13 @@ "dev": true }, "unist-util-position": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.1.tgz", - "integrity": "sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==", - "dev": true + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", + "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } }, "unist-util-select": { "version": "4.0.1", @@ -2863,24 +2853,12 @@ "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", "unist-util-visit-parents": "^5.0.0" - }, - "dependencies": { - "unist-util-visit-parents": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", - "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - } } }, "unist-util-visit-parents": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", - "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", + "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -2888,9 +2866,9 @@ } }, "uvu": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.3.tgz", - "integrity": "sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", "dev": true, "requires": { "dequal": "^2.0.0", @@ -2900,9 +2878,9 @@ } }, "vfile": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.2.tgz", - "integrity": "sha512-w0PLIugRY3Crkgw89TeMvHCzqCs/zpreR31hl4D92y6SOE07+bfJe+dK5Q2akwS+i/c801kzjoOr9gMcTe6IAA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.4.tgz", + "integrity": "sha512-KI+7cnst03KbEyN1+JE504zF5bJBZa+J+CrevLeyIMq0aPU681I2rQ5p4PlnQ6exFtWiUrg26QUdFMnAKR6PIw==", "dev": true, "requires": { "@types/unist": "^2.0.0", diff --git a/tools/doc/package.json b/tools/doc/package.json index 9856d6149845d8..cc4cec07dbc59d 100644 --- a/tools/doc/package.json +++ b/tools/doc/package.json @@ -7,7 +7,7 @@ "node": ">=14.8.0" }, "devDependencies": { - "highlight.js": "^11.5.0", + "highlight.js": "^11.6.0", "js-yaml": "^4.1.0", "rehype-raw": "^6.1.1", "rehype-stringify": "^9.0.3", diff --git a/tools/doc/type-parser.mjs b/tools/doc/type-parser.mjs index 71a4eb98976da6..c77cba7de19fc0 100644 --- a/tools/doc/type-parser.mjs +++ b/tools/doc/type-parser.mjs @@ -84,10 +84,10 @@ const customTypesMap = { 'Crypto': 'webcrypto.html#class-crypto', 'SubtleCrypto': 'webcrypto.html#class-subtlecrypto', 'RsaOaepParams': 'webcrypto.html#class-rsaoaepparams', + 'AlgorithmIdentifier': 'webcrypto.html#class-algorithmidentifier', 'AesCtrParams': 'webcrypto.html#class-aesctrparams', 'AesCbcParams': 'webcrypto.html#class-aescbcparams', 'AesGcmParams': 'webcrypto.html#class-aesgcmparams', - 'AesKwParams': 'webcrypto.html#class-aeskwparams', 'EcdhKeyDeriveParams': 'webcrypto.html#class-ecdhkeyderiveparams', 'HkdfParams': 'webcrypto.html#class-hkdfparams', 'Pbkdf2Params': 'webcrypto.html#class-pbkdf2params', @@ -100,26 +100,9 @@ const customTypesMap = { 'webcrypto.html#class-rsahashedimportparams', 'EcKeyImportParams': 'webcrypto.html#class-eckeyimportparams', 'HmacImportParams': 'webcrypto.html#class-hmacimportparams', - 'AesImportParams': 'webcrypto.html#class-aesimportparams', - 'Pbkdf2ImportParams': 'webcrypto.html#class-pbkdf2importparams', - 'HmacParams': 'webcrypto.html#class-hmacparams', 'EcdsaParams': 'webcrypto.html#class-ecdsaparams', 'RsaPssParams': 'webcrypto.html#class-rsapssparams', - 'RsaSignParams': 'webcrypto.html#class-rsasignparams', - 'NodeDhImportParams': 'webcrypto.html#class-nodedhimportparams', - 'NodeDhKeyGenParams': 'webcrypto.html#class-nodedhkeygenparams', - 'NodeDhDeriveBitsParams': - 'webcrypto.html#class-nodedhderivebitsparams', - 'NodeDsaImportParams': 'webcrypto.html#class-nodedsaimportparams', - 'NodeDsaKeyGenParams': 'webcrypto.html#class-nodedsakeygenparams', - 'NodeDsaSignParams': 'webcrypto.html#class-nodedsasignparams', - 'NodeScryptImportParams': - 'webcrypto.html#class-nodescryptimportparams', - 'NodeScryptParams': 'webcrypto.html#class-nodescryptparams', - 'NodeEdKeyImportParams': - 'webcrypto.html#class-nodeedkeyimportparams', - 'NodeEdKeyGenParams': - 'webcrypto.html#class-nodeedkeygenparams', + 'Ed448Params': 'webcrypto.html#class-ed448params', 'dgram.Socket': 'dgram.html#class-dgramsocket', @@ -134,6 +117,7 @@ const customTypesMap = { 'EventEmitter': 'events.html#class-eventemitter', 'EventTarget': 'events.html#class-eventtarget', 'Event': 'events.html#class-event', + 'CustomEvent': 'events.html#class-customevent', 'EventListener': 'events.html#event-listener', 'FileHandle': 'fs.html#class-filehandle', @@ -148,6 +132,7 @@ const customTypesMap = { 'http.Agent': 'http.html#class-httpagent', 'http.ClientRequest': 'http.html#class-httpclientrequest', 'http.IncomingMessage': 'http.html#class-httpincomingmessage', + 'http.OutgoingMessage': 'http.html#class-httpoutgoingmessage', 'http.Server': 'http.html#class-httpserver', 'http.ServerResponse': 'http.html#class-httpserverresponse', @@ -163,6 +148,7 @@ const customTypesMap = { 'Http2Session': 'http2.html#class-http2session', 'Http2Stream': 'http2.html#class-http2stream', 'ServerHttp2Stream': 'http2.html#class-serverhttp2stream', + 'ServerHttp2Session': 'http2.html#class-serverhttp2session', 'https.Server': 'https.html#class-httpsserver', diff --git a/tools/doc/versions.mjs b/tools/doc/versions.mjs index ec623a2dbd206e..8f6c4ef98ad596 100644 --- a/tools/doc/versions.mjs +++ b/tools/doc/versions.mjs @@ -32,7 +32,7 @@ const outFile = (process.argv.length > 2 ? process.argv[2] : undefined); async function versions() { // The CHANGELOG.md on release branches may not reference newer semver - // majors of Node.js so fetch and parse the version from the master branch. + // majors of Node.js so fetch and parse the version from the main branch. const url = 'https://raw.githubusercontent.com/nodejs/node/HEAD/CHANGELOG.md'; let changelog; diff --git a/tools/eslint-rules/avoid-prototype-pollution.js b/tools/eslint-rules/avoid-prototype-pollution.js new file mode 100644 index 00000000000000..1f71272bd7d0b3 --- /dev/null +++ b/tools/eslint-rules/avoid-prototype-pollution.js @@ -0,0 +1,150 @@ +'use strict'; + +function checkProperties(context, node) { + if ( + node.type === 'CallExpression' && + node.callee.name === 'ObjectGetOwnPropertyDescriptors' + ) { + context.report({ + node, + message: + 'Property descriptors inherits from the Object prototype, therefore are subject to prototype pollution', + }); + } + if (node.type !== 'ObjectExpression') return; + for (const { key, value } of node.properties) { + if ( + key != null && value != null && + !(key.type === 'Identifier' && key.name === '__proto__') && + !(key.type === 'Literal' && key.value === '__proto__') + ) { + checkPropertyDescriptor(context, value); + } + } +} + +function checkPropertyDescriptor(context, node) { + if ( + node.type === 'CallExpression' && + (node.callee.name === 'ObjectGetOwnPropertyDescriptor' || + node.callee.name === 'ReflectGetOwnPropertyDescriptor') + ) { + context.report({ + node, + message: + 'Property descriptors inherits from the Object prototype, therefore are subject to prototype pollution', + suggest: [{ + desc: 'Wrap the property descriptor in a null-prototype object', + fix(fixer) { + return [ + fixer.insertTextBefore(node, '{ __proto__: null,...'), + fixer.insertTextAfter(node, ' }'), + ]; + }, + }], + }); + } + if (node.type !== 'ObjectExpression') return; + + for (const { key, value } of node.properties) { + if ( + key != null && value != null && + ((key.type === 'Identifier' && key.name === '__proto__') || + (key.type === 'Literal' && key.value === '__proto__')) && + value.type === 'Literal' && value.value === null + ) { + return true; + } + } + + context.report({ + node, + message: 'Must use null-prototype object for property descriptors', + }); +} + +function createUnsafeStringMethodReport(context, name, lookedUpProperty) { + return { + [`${CallExpression}[expression.callee.name=${JSON.stringify(name)}]`](node) { + context.report({ + node, + message: `${name} looks up the ${lookedUpProperty} property on the first argument`, + }); + } + }; +} + +const CallExpression = 'ExpressionStatement[expression.type="CallExpression"]'; +module.exports = { + meta: { hasSuggestions: true }, + create(context) { + return { + [`${CallExpression}[expression.callee.name=${/^(Object|Reflect)DefinePropert(ies|y)$/}]`]( + node + ) { + switch (node.expression.callee.name) { + case 'ObjectDefineProperties': + checkProperties(context, node.expression.arguments[1]); + break; + case 'ReflectDefineProperty': + case 'ObjectDefineProperty': + checkPropertyDescriptor(context, node.expression.arguments[2]); + break; + default: + throw new Error('Unreachable'); + } + }, + + [`${CallExpression}[expression.callee.name="ObjectCreate"][expression.arguments.length=2]`](node) { + checkProperties(context, node.expression.arguments[1]); + }, + [`${CallExpression}[expression.callee.name="RegExpPrototypeTest"]`](node) { + context.report({ + node, + message: '%RegExp.prototype.test% looks up the "exec" property of `this` value', + suggest: [{ + desc: 'Use RegexpPrototypeExec instead', + fix(fixer) { + const testRange = { ...node.range }; + testRange.start = testRange.start + 'RegexpPrototype'.length; + testRange.end = testRange.start + 'Test'.length; + return [ + fixer.replaceTextRange(node.range, 'Exec'), + fixer.insertTextAfter(node, ' !== null'), + ]; + } + }] + }); + }, + [`${CallExpression}[expression.callee.name=${/^RegExpPrototypeSymbol(Match|MatchAll|Search)$/}]`](node) { + context.report({ + node, + message: node.expression.callee.name + ' looks up the "exec" property of `this` value', + }); + }, + ...createUnsafeStringMethodReport(context, 'StringPrototypeMatch', 'Symbol.match'), + ...createUnsafeStringMethodReport(context, 'StringPrototypeMatchAll', 'Symbol.matchAll'), + ...createUnsafeStringMethodReport(context, 'StringPrototypeReplace', 'Symbol.replace'), + ...createUnsafeStringMethodReport(context, 'StringPrototypeReplaceAll', 'Symbol.replace'), + ...createUnsafeStringMethodReport(context, 'StringPrototypeSearch', 'Symbol.search'), + ...createUnsafeStringMethodReport(context, 'StringPrototypeSplit', 'Symbol.split'), + + 'NewExpression[callee.name="Proxy"][arguments.1.type="ObjectExpression"]'(node) { + for (const { key, value } of node.arguments[1].properties) { + if ( + key != null && value != null && + ((key.type === 'Identifier' && key.name === '__proto__') || + (key.type === 'Literal' && key.value === '__proto__')) && + value.type === 'Literal' && value.value === null + ) { + return; + } + } + context.report({ + node, + message: 'Proxy handler must be a null-prototype object' + }); + } + }; + }, +}; diff --git a/tools/find-inactive-tsc.mjs b/tools/find-inactive-tsc.mjs index 5c4c37038988b0..fe204d5b673e59 100755 --- a/tools/find-inactive-tsc.mjs +++ b/tools/find-inactive-tsc.mjs @@ -12,8 +12,15 @@ import cp from 'node:child_process'; import fs from 'node:fs'; import path from 'node:path'; import readline from 'node:readline'; +import { parseArgs } from 'node:util'; -const SINCE = process.argv[2] || '3 months ago'; +const args = parseArgs({ + allowPositionals: true, + options: { verbose: { type: 'boolean', short: 'v' } } +}); + +const verbose = args.values.verbose; +const SINCE = args.positionals[0] || '3 months ago'; async function runGitCommand(cmd, options = {}) { const childProcess = cp.spawn('/bin/sh', ['-c', cmd], { @@ -271,3 +278,8 @@ if (inactive.length) { fs.writeFileSync(new URL('../README.md', import.meta.url), newReadmeText); } } + +if (verbose) { + console.log(attendance); + console.log(votingRecords); +} diff --git a/tools/gen_node_def.cc b/tools/gen_node_def.cc new file mode 100644 index 00000000000000..f4cabbd84c1f75 --- /dev/null +++ b/tools/gen_node_def.cc @@ -0,0 +1,197 @@ +#include +#include +#include +#include +#include +#include +#include + +// This executable takes a Windows DLL and uses it to generate +// a module-definition file [1] which forwards all the exported +// symbols from the DLL and redirects them back to the DLL. +// This allows node.exe to export the same symbols as libnode.dll +// when building Node.js as a shared library. This is conceptually +// similary to the create_expfile.sh script used on AIX. +// +// Generating this .def file requires parsing data out of the +// PE32/PE32+ file format. Helper structs are defined in +// hence why this is an executable and not a script. See [2] for +// details on the PE format. +// +// [1]: https://docs.microsoft.com/en-us/cpp/build/reference/module-definition-dot-def-files +// [2]: https://docs.microsoft.com/en-us/windows/win32/debug/pe-format + +// The PE32 format encodes pointers as Relative Virtual Addresses +// which are 32 bit offsets from the start of the image. This helper +// class hides the mess of the pointer arithmetic +struct RelativeAddress { + uintptr_t root; + uintptr_t offset = 0; + + RelativeAddress(HMODULE handle) noexcept + : root(reinterpret_cast(handle)) {} + + RelativeAddress(HMODULE handle, uintptr_t offset) noexcept + : root(reinterpret_cast(handle)), offset(offset) {} + + RelativeAddress(uintptr_t root, uintptr_t offset) noexcept + : root(root), offset(offset) {} + + template + const T* AsPtrTo() const noexcept { + return reinterpret_cast(root + offset); + } + + template + T Read() const noexcept { + return *AsPtrTo(); + } + + RelativeAddress AtOffset(uintptr_t amount) const noexcept { + return {root, offset + amount}; + } + + RelativeAddress operator+(uintptr_t amount) const noexcept { + return {root, offset + amount}; + } + + RelativeAddress ReadRelativeAddress() const noexcept { + return {root, Read()}; + } +}; + +// A wrapper around a dynamically loaded Windows DLL. This steps through the +// PE file structure to find the export directory and pulls out a list of +// all the exported symbol names. +struct Library { + HMODULE library; + std::string libraryName; + std::vector exportedSymbols; + + Library(HMODULE library) : library(library) { + auto libnode = RelativeAddress(library); + + // At relative offset 0x3C is a 32 bit offset to the COFF signature, 4 bytes + // after that is the start of the COFF header. + auto coffHeaderPtr = + libnode.AtOffset(0x3C).ReadRelativeAddress().AtOffset(4); + auto coffHeader = coffHeaderPtr.AsPtrTo(); + + // After the coff header is the Optional Header (which is not optional). We + // don't know what type of optional header we have without examining the + // magic number + auto optionalHeaderPtr = coffHeaderPtr.AtOffset(sizeof(IMAGE_FILE_HEADER)); + auto optionalHeader = optionalHeaderPtr.AsPtrTo(); + + auto exportDirectory = + (optionalHeader->Magic == 0x20b) ? optionalHeaderPtr.AsPtrTo() + ->DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT] + : optionalHeaderPtr.AsPtrTo() + ->DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT]; + + auto exportTable = libnode.AtOffset(exportDirectory.VirtualAddress) + .AsPtrTo(); + + // This is the name of the library without the suffix, this is more robust + // than parsing the filename as this is what the linker uses. + libraryName = libnode.AtOffset(exportTable->Name).AsPtrTo(); + libraryName = libraryName.substr(0, libraryName.size() - 4); + + const uint32_t* functionNameTable = + libnode.AtOffset(exportTable->AddressOfNames).AsPtrTo(); + + // Given an RVA, parse it as a std::string. The resulting string is empty + // if the symbol does not have a name (i.e. it is ordinal only). + auto nameRvaToName = [&](uint32_t rva) -> std::string { + auto namePtr = libnode.AtOffset(rva).AsPtrTo(); + if (namePtr == nullptr) return {}; + return {namePtr}; + }; + std::transform(functionNameTable, + functionNameTable + exportTable->NumberOfNames, + std::back_inserter(exportedSymbols), + nameRvaToName); + } + + ~Library() { FreeLibrary(library); } +}; + +bool IsPageExecutable(void* address) { + MEMORY_BASIC_INFORMATION memoryInformation; + size_t rc = VirtualQuery( + address, &memoryInformation, sizeof(MEMORY_BASIC_INFORMATION)); + + if (rc != 0 && memoryInformation.Protect != 0) { + return memoryInformation.Protect == PAGE_EXECUTE || + memoryInformation.Protect == PAGE_EXECUTE_READ || + memoryInformation.Protect == PAGE_EXECUTE_READWRITE || + memoryInformation.Protect == PAGE_EXECUTE_WRITECOPY; + } + return false; +} + +Library LoadLibraryOrExit(const char* dllPath) { + auto library = LoadLibrary(dllPath); + if (library != nullptr) return library; + + auto error = GetLastError(); + std::cerr << "ERROR: Failed to load " << dllPath << std::endl; + LPCSTR buffer = nullptr; + auto rc = FormatMessageA( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + nullptr, + error, + LANG_USER_DEFAULT, + (LPSTR)&buffer, + 0, + nullptr); + if (rc != 0) { + std::cerr << buffer << std::endl; + LocalFree((HLOCAL)buffer); + } + exit(1); +} + +int main(int argc, char** argv) { + if (argc != 3) { + std::cerr << "Usage: " << argv[0] + << " path\\to\\libnode.dll path\\to\\node.def" << std::endl; + return 1; + } + + auto libnode = LoadLibraryOrExit(argv[1]); + auto defFile = std::ofstream(argv[2]); + defFile << "EXPORTS" << std::endl; + + for (const std::string& functionName : libnode.exportedSymbols) { + // If a symbol doesn't have a name then it has been exported as an + // ordinal only. We assume that only named symbols are exported. + if (functionName.empty()) continue; + + // Every name in the exported symbols table should be resolvable + // to an address because we have actually loaded the library into + // our address space. + auto address = GetProcAddress(libnode.library, functionName.c_str()); + if (address == nullptr) { + std::cerr << "WARNING: " << functionName + << " appears in export table but is not a valid symbol" + << std::endl; + continue; + } + + defFile << " " << functionName << " = " << libnode.libraryName << "." + << functionName; + + // Nothing distinguishes exported global data from exported functions + // with C linkage. If we do not specify the DATA keyword for such symbols + // then consumers of the .def file will get a linker error. This manifests + // as nodedbg_ symbols not being found. We assert that if the symbol is in + // an executable page in this process then it is a function, not data. + if (!IsPageExecutable(address)) { + defFile << " DATA"; + } + defFile << std::endl; + } + + return 0; +} diff --git a/tools/gyp/.github/workflows/Python_tests.yml b/tools/gyp/.github/workflows/Python_tests.yml index 40ff521a6fd0b5..76e536826b9181 100644 --- a/tools/gyp/.github/workflows/Python_tests.yml +++ b/tools/gyp/.github/workflows/Python_tests.yml @@ -15,7 +15,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ matrix.python-version }} - name: Install dependencies diff --git a/tools/gyp/.github/workflows/node-gyp.yml b/tools/gyp/.github/workflows/node-gyp.yml index 0c26a3d7de3d0e..c8d2455f13e5eb 100644 --- a/tools/gyp/.github/workflows/node-gyp.yml +++ b/tools/gyp/.github/workflows/node-gyp.yml @@ -21,10 +21,10 @@ jobs: with: repository: nodejs/node-gyp path: node-gyp - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: node-version: 14.x - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v3 with: python-version: ${{ matrix.python }} - name: Install dependencies diff --git a/tools/gyp/CHANGELOG.md b/tools/gyp/CHANGELOG.md index 57d691c1812d38..09ceed8d41c245 100644 --- a/tools/gyp/CHANGELOG.md +++ b/tools/gyp/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +### [0.12.1](https://www.github.com/nodejs/gyp-next/compare/v0.12.0...v0.12.1) (2022-04-06) + + +### Bug Fixes + +* **msvs:** avoid fixing path for arguments with "=" ([#143](https://www.github.com/nodejs/gyp-next/issues/143)) ([7e8f16e](https://www.github.com/nodejs/gyp-next/commit/7e8f16eb165e042e64bec98fa6c2a0232a42c26b)) + +## [0.12.0](https://www.github.com/nodejs/gyp-next/compare/v0.11.0...v0.12.0) (2022-04-04) + + +### Features + +* support building shared libraries on z/OS ([#137](https://www.github.com/nodejs/gyp-next/issues/137)) ([293bcfa](https://www.github.com/nodejs/gyp-next/commit/293bcfa4c25c6adb743377adafc45a80fee492c6)) + +## [0.11.0](https://www.github.com/nodejs/gyp-next/compare/v0.10.1...v0.11.0) (2022-03-04) + + +### Features + +* Add proper support for IBM i ([#140](https://www.github.com/nodejs/gyp-next/issues/140)) ([fdda4a3](https://www.github.com/nodejs/gyp-next/commit/fdda4a3038b8a7042ad960ce7a223687c24a21b1)) + ### [0.10.1](https://www.github.com/nodejs/gyp-next/compare/v0.10.0...v0.10.1) (2021-11-24) diff --git a/tools/gyp/pylib/gyp/common.py b/tools/gyp/pylib/gyp/common.py index 9213fcc5e82bb7..0847cdabc718d8 100644 --- a/tools/gyp/pylib/gyp/common.py +++ b/tools/gyp/pylib/gyp/common.py @@ -454,6 +454,8 @@ def GetFlavor(params): return "aix" if sys.platform.startswith(("os390", "zos")): return "zos" + if sys.platform == "os400": + return "os400" return "linux" @@ -463,9 +465,13 @@ def CopyTool(flavor, out_path, generator_flags={}): to |out_path|.""" # aix and solaris just need flock emulation. mac and win use more complicated # support scripts. - prefix = {"aix": "flock", "solaris": "flock", "mac": "mac", "win": "win"}.get( - flavor, None - ) + prefix = { + "aix": "flock", + "os400": "flock", + "solaris": "flock", + "mac": "mac", + "win": "win", + }.get(flavor, None) if not prefix: return diff --git a/tools/gyp/pylib/gyp/flock_tool.py b/tools/gyp/pylib/gyp/flock_tool.py index 1cb98152638b81..0754aff26fe7c0 100755 --- a/tools/gyp/pylib/gyp/flock_tool.py +++ b/tools/gyp/pylib/gyp/flock_tool.py @@ -41,7 +41,7 @@ def ExecFlock(self, lockfile, *cmd_list): # with EBADF, that's why we use this F_SETLK # hack instead. fd = os.open(lockfile, os.O_WRONLY | os.O_NOCTTY | os.O_CREAT, 0o666) - if sys.platform.startswith("aix"): + if sys.platform.startswith("aix") or sys.platform == "os400": # Python on AIX is compiled with LARGEFILE support, which changes the # struct size. op = struct.pack("hhIllqq", fcntl.F_WRLCK, 0, 0, 0, 0, 0, 0) diff --git a/tools/gyp/pylib/gyp/generator/make.py b/tools/gyp/pylib/gyp/generator/make.py index 05e1f26a63d2fc..cddc78ba0d4d86 100644 --- a/tools/gyp/pylib/gyp/generator/make.py +++ b/tools/gyp/pylib/gyp/generator/make.py @@ -99,6 +99,8 @@ def CalculateVariables(default_variables, params): default_variables.setdefault("OS", operating_system) if flavor == "aix": default_variables.setdefault("SHARED_LIB_SUFFIX", ".a") + elif flavor == "zos": + default_variables.setdefault("SHARED_LIB_SUFFIX", ".x") else: default_variables.setdefault("SHARED_LIB_SUFFIX", ".so") default_variables.setdefault("SHARED_LIB_DIR", "$(builddir)/lib.$(TOOLSET)") @@ -237,6 +239,24 @@ def CalculateGeneratorInputInfo(params): """ # noqa: E501 +LINK_COMMANDS_OS400 = """\ +quiet_cmd_alink = AR($(TOOLSET)) $@ +cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) -X64 crs $@ $(filter %.o,$^) + +quiet_cmd_alink_thin = AR($(TOOLSET)) $@ +cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) -X64 crs $@ $(filter %.o,$^) + +quiet_cmd_link = LINK($(TOOLSET)) $@ +cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(LD_INPUTS) $(LIBS) + +quiet_cmd_solink = SOLINK($(TOOLSET)) $@ +cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(LD_INPUTS) $(LIBS) + +quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ +cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) +""" # noqa: E501 + + LINK_COMMANDS_OS390 = """\ quiet_cmd_alink = AR($(TOOLSET)) $@ cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) crs $@ $(filter %.o,$^) @@ -248,10 +268,10 @@ def CalculateGeneratorInputInfo(params): cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(LD_INPUTS) $(LIBS) quiet_cmd_solink = SOLINK($(TOOLSET)) $@ -cmd_solink = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(LD_INPUTS) $(LIBS) -Wl,DLL +cmd_solink = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,DLL -o $(patsubst %.x,%.so,$@) $(LD_INPUTS) $(LIBS) && if [ -f $(notdir $@) ]; then /bin/cp $(notdir $@) $@; else true; fi quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ -cmd_solink_module = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) -Wl,DLL +cmd_solink_module = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) """ # noqa: E501 @@ -400,6 +420,9 @@ def CalculateGeneratorInputInfo(params): # send stderr to /dev/null to ignore messages when linking directories. cmd_copy = ln -f "$<" "$@" 2>/dev/null || (rm -rf "$@" && cp %(copy_archive_args)s "$<" "$@") +quiet_cmd_symlink = SYMLINK $@ +cmd_symlink = ln -sf "$<" "$@" + %(link_commands)s """ # noqa: E501 r""" @@ -981,12 +1004,20 @@ def WriteActions( # libraries, but until everything is made cross-compile safe, also use # target libraries. # TODO(piman): when everything is cross-compile safe, remove lib.target - self.WriteLn( - "cmd_%s = LD_LIBRARY_PATH=$(builddir)/lib.host:" - "$(builddir)/lib.target:$$LD_LIBRARY_PATH; " - "export LD_LIBRARY_PATH; " - "%s%s" % (name, cd_action, command) - ) + if self.flavor == "zos" or self.flavor == "aix": + self.WriteLn( + "cmd_%s = LIBPATH=$(builddir)/lib.host:" + "$(builddir)/lib.target:$$LIBPATH; " + "export LIBPATH; " + "%s%s" % (name, cd_action, command) + ) + else: + self.WriteLn( + "cmd_%s = LD_LIBRARY_PATH=$(builddir)/lib.host:" + "$(builddir)/lib.target:$$LD_LIBRARY_PATH; " + "export LD_LIBRARY_PATH; " + "%s%s" % (name, cd_action, command) + ) self.WriteLn() outputs = [self.Absolutify(o) for o in outputs] # The makefile rules are all relative to the top dir, but the gyp actions @@ -1480,6 +1511,8 @@ def ComputeOutputBasename(self, spec): target_prefix = "lib" if self.flavor == "aix": target_ext = ".a" + elif self.flavor == "zos": + target_ext = ".x" else: target_ext = ".so" elif self.type == "none": @@ -1560,6 +1593,14 @@ def ComputeDeps(self, spec): # link_deps.extend(spec.get('libraries', [])) return (gyp.common.uniquer(deps), gyp.common.uniquer(link_deps)) + def GetSharedObjectFromSidedeck(self, sidedeck): + """Return the shared object files based on sidedeck""" + return re.sub(r"\.x$", ".so", sidedeck) + + def GetUnversionedSidedeckFromSidedeck(self, sidedeck): + """Return the shared object files based on sidedeck""" + return re.sub(r"\.\d+\.x$", ".x", sidedeck) + def WriteDependencyOnExtraOutputs(self, target, extra_outputs): self.WriteMakeRule( [self.output_binary], @@ -1798,6 +1839,11 @@ def WriteTarget( part_of_all, postbuilds=postbuilds, ) + # z/OS has a .so target as well as a sidedeck .x target + if self.flavor == "zos": + self.WriteLn('%s: %s' % ( + QuoteSpaces(self.GetSharedObjectFromSidedeck(self.output_binary)), + QuoteSpaces(self.output_binary))) elif self.type == "loadable_module": for link_dep in link_deps: assert " " not in link_dep, ( @@ -1855,7 +1901,9 @@ def WriteTarget( else: file_desc = "executable" install_path = self._InstallableTargetInstallPath() - installable_deps = [self.output] + installable_deps = [] + if self.flavor != "zos": + installable_deps.append(self.output) if ( self.flavor == "mac" and "product_dir" not in spec @@ -1880,7 +1928,23 @@ def WriteTarget( comment="Copy this to the %s output path." % file_desc, part_of_all=part_of_all, ) - installable_deps.append(install_path) + if self.flavor != "zos": + installable_deps.append(install_path) + if self.flavor == 'zos' and self.type == 'shared_library': + # lib.target/libnode.so has a dependency on $(obj).target/libnode.so + self.WriteDoCmd([self.GetSharedObjectFromSidedeck(install_path)], + [self.GetSharedObjectFromSidedeck(self.output)], 'copy', + comment='Copy this to the %s output path.' % + file_desc, part_of_all=part_of_all) + # Create a symlink of libnode.x to libnode.version.x + self.WriteDoCmd([self.GetUnversionedSidedeckFromSidedeck(install_path)], + [install_path], 'symlink', + comment='Symlnk this to the %s output path.' % + file_desc, part_of_all=part_of_all) + # Place libnode.version.so and libnode.x symlink in lib.target dir + installable_deps.append(self.GetSharedObjectFromSidedeck(install_path)) + installable_deps.append( + self.GetUnversionedSidedeckFromSidedeck(install_path)) if self.output != self.alias and self.alias != self.target: self.WriteMakeRule( [self.alias], @@ -1888,7 +1952,18 @@ def WriteTarget( comment="Short alias for building this %s." % file_desc, phony=True, ) - if part_of_all: + if self.flavor == 'zos' and self.type == 'shared_library': + # Make sure that .x symlink target is run + self.WriteMakeRule( + ['all'], + [ + self.GetUnversionedSidedeckFromSidedeck(install_path), + self.GetSharedObjectFromSidedeck(install_path) + ], + comment='Add %s to "all" target.' % file_desc, + phony=True, + ) + elif part_of_all: self.WriteMakeRule( ["all"], [install_path], @@ -2184,6 +2259,9 @@ def _InstallableTargetInstallPath(self): # # Install all shared libs into a common directory (per toolset) for # # convenient access with LD_LIBRARY_PATH. # return "$(builddir)/lib.%s/%s" % (self.toolset, self.alias) + if self.flavor == "zos" and self.type == "shared_library": + return "$(builddir)/lib.%s/%s" % (self.toolset, self.alias) + return "$(builddir)/" + self.alias @@ -2351,6 +2429,16 @@ def CalculateMakefilePath(build_file, base_name): "flock_index": 2, } ) + elif flavor == "os400": + copy_archive_arguments = "-pPRf" + header_params.update( + { + "copy_archive_args": copy_archive_arguments, + "link_commands": LINK_COMMANDS_OS400, + "flock": "./gyp-flock-tool flock", + "flock_index": 2, + } + ) build_file, _, _ = gyp.common.ParseQualifiedTarget(target_list[0]) make_global_settings_array = data[build_file].get("make_global_settings", []) diff --git a/tools/gyp/pylib/gyp/generator/msvs.py b/tools/gyp/pylib/gyp/generator/msvs.py index 8308fa8433352c..fd950057847980 100644 --- a/tools/gyp/pylib/gyp/generator/msvs.py +++ b/tools/gyp/pylib/gyp/generator/msvs.py @@ -423,12 +423,15 @@ def _BuildCommandLineForRuleRaw( command.insert(0, "call") # Fix the paths # TODO(quote): This is a really ugly heuristic, and will miss path fixing - # for arguments like "--arg=path" or "/opt:path". - # If the argument starts with a slash or dash, it's probably a command line - # switch + # for arguments like "--arg=path", arg=path, or "/opt:path". + # If the argument starts with a slash or dash, or contains an equal sign, + # it's probably a command line switch. # Return the path with forward slashes because the command using it might # not support backslashes. - arguments = [i if (i[:1] in "/-") else _FixPath(i, "/") for i in cmd[1:]] + arguments = [ + i if (i[:1] in "/-" or "=" in i) else _FixPath(i, "/") + for i in cmd[1:] + ] arguments = [i.replace("$(InputDir)", "%INPUTDIR%") for i in arguments] arguments = [MSVSSettings.FixVCMacroSlashes(i) for i in arguments] if quote_cmd: diff --git a/tools/gyp/pylib/gyp/generator/ninja.py b/tools/gyp/pylib/gyp/generator/ninja.py index d173bf22990116..3db3771ac97855 100644 --- a/tools/gyp/pylib/gyp/generator/ninja.py +++ b/tools/gyp/pylib/gyp/generator/ninja.py @@ -2112,8 +2112,8 @@ class MEMORYSTATUSEX(ctypes.Structure): ctypes.windll.kernel32.GlobalMemoryStatusEx(ctypes.byref(stat)) # VS 2015 uses 20% more working set than VS 2013 and can consume all RAM - # on a 64 GB machine. - mem_limit = max(1, stat.ullTotalPhys // (5 * (2 ** 30))) # total / 5GB + # on a 64 GiB machine. + mem_limit = max(1, stat.ullTotalPhys // (5 * (2 ** 30))) # total / 5GiB hard_cap = max(1, int(os.environ.get("GYP_LINK_CONCURRENCY_MAX", 2 ** 32))) return min(mem_limit, hard_cap) elif sys.platform.startswith("linux"): diff --git a/tools/gyp/setup.py b/tools/gyp/setup.py index 576880a7f7a9fc..fa2eefe39f5312 100644 --- a/tools/gyp/setup.py +++ b/tools/gyp/setup.py @@ -15,7 +15,7 @@ setup( name="gyp-next", - version="0.10.1", + version="0.12.1", description="A fork of the GYP build system for use in the Node.js projects", long_description=long_description, long_description_content_type="text/markdown", diff --git a/tools/gyp/test_gyp.py b/tools/gyp/test_gyp.py index 9ba264170f43ab..b7bb956b8ed585 100755 --- a/tools/gyp/test_gyp.py +++ b/tools/gyp/test_gyp.py @@ -116,6 +116,7 @@ def main(argv=None): else: format_list = { "aix5": ["make"], + "os400": ["make"], "freebsd7": ["make"], "freebsd8": ["make"], "openbsd5": ["make"], diff --git a/tools/gyp/tools/pretty_gyp.py b/tools/gyp/tools/pretty_gyp.py index 4ffa44455181c3..6eef3a1bbf02a5 100755 --- a/tools/gyp/tools/pretty_gyp.py +++ b/tools/gyp/tools/pretty_gyp.py @@ -90,7 +90,7 @@ def count_braces(line): """ open_braces = ["[", "(", "{"] close_braces = ["]", ")", "}"] - closing_prefix_re = re.compile(r"(.*?[^\s\]\}\)]+.*?)([\]\}\)],?)\s*$") + closing_prefix_re = re.compile(r"[^\s\]\}\)]\s*[\]\}\)]+,?\s*$") cnt = 0 stripline = COMMENT_RE.sub(r"", line) stripline = QUOTE_RE.sub(r"''", stripline) diff --git a/tools/icu/README.md b/tools/icu/README.md index 2e908e2cf44750..0740b718a859c0 100644 --- a/tools/icu/README.md +++ b/tools/icu/README.md @@ -36,4 +36,4 @@ Note: * [The ICU Homepage][ICU] [ICU]: http://icu-project.org -[ICU data slicer]: https://github.com/unicode-org/icu/blob/master/docs/userguide/icu_data/buildtool.md +[ICU data slicer]: https://github.com/unicode-org/icu/blob/HEAD/docs/userguide/icu_data/buildtool.md diff --git a/tools/icu/current_ver.dep b/tools/icu/current_ver.dep index d135e99146e041..9d2ca52eda4153 100644 --- a/tools/icu/current_ver.dep +++ b/tools/icu/current_ver.dep @@ -1,6 +1,6 @@ [ { - "url": "https://github.com/unicode-org/icu/releases/download/release-70-1/icu4c-70_1-src.tgz", - "md5": "65287befec8116d79af23a58aa50c60d" + "url": "https://github.com/unicode-org/icu/releases/download/release-71-1/icu4c-71_1-src.tgz", + "md5": "e06ffc96f59762bd3c929b217445aaec" } ] diff --git a/tools/inspector_protocol/encoding/encoding.h b/tools/inspector_protocol/encoding/encoding.h index 08596e9e1e43f0..14432484d55b9d 100644 --- a/tools/inspector_protocol/encoding/encoding.h +++ b/tools/inspector_protocol/encoding/encoding.h @@ -167,7 +167,7 @@ namespace cbor { // must use a 32 bit wide length. // - At the top level, a message must be an indefinite length map // wrapped by an envelope. -// - Maximal size for messages is 2^32 (4 GB). +// - Maximal size for messages is 2^32 (4 GiB). // - For scalars, we support only the int32_t range, encoded as // UNSIGNED/NEGATIVE (major types 0 / 1). // - UTF16 strings, including with unbalanced surrogate pairs, are encoded diff --git a/tools/inspector_protocol/lib/encoding_h.template b/tools/inspector_protocol/lib/encoding_h.template index 2c6cfc10d594c2..4d9874bfbd5cb4 100644 --- a/tools/inspector_protocol/lib/encoding_h.template +++ b/tools/inspector_protocol/lib/encoding_h.template @@ -176,7 +176,7 @@ namespace cbor { // must use a 32 bit wide length. // - At the top level, a message must be an indefinite length map // wrapped by an envelope. -// - Maximal size for messages is 2^32 (4 GB). +// - Maximal size for messages is 2^32 (4 GiB). // - For scalars, we support only the int32_t range, encoded as // UNSIGNED/NEGATIVE (major types 0 / 1). // - UTF16 strings, including with unbalanced surrogate pairs, are encoded diff --git a/tools/install.py b/tools/install.py index 8a050dfa7c8b77..a6d1f8b3caa8e2 100755 --- a/tools/install.py +++ b/tools/install.py @@ -7,6 +7,7 @@ import os import shutil import sys +import re # set at init time node_prefix = '/usr/local' # PREFIX variable from Makefile @@ -120,6 +121,17 @@ def corepack_files(action): # 'pnpx': 'dist/pnpx.js', }) + # On z/OS, we install node-gyp for convenience, as some vendors don't have + # external access and may want to build native addons. + if sys.platform == 'zos': + link_path = abspath(install_path, 'bin/node-gyp') + if action == uninstall: + action([link_path], 'bin/node-gyp') + elif action == install: + try_symlink('../lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js', link_path) + else: + assert 0 # unhandled action type + def subdir_files(path, dest, action): ret = {} for dirpath, dirnames, filenames in os.walk(path): @@ -133,20 +145,38 @@ def files(action): output_file = 'node' output_prefix = 'out/Release/' - if 'false' == variables.get('node_shared'): - if is_windows: - output_file += '.exe' - else: + if is_windows: + output_file += '.exe' + action([output_prefix + output_file], 'bin/' + output_file) + + if 'true' == variables.get('node_shared'): if is_windows: - output_file += '.dll' + action([output_prefix + 'libnode.dll'], 'bin/libnode.dll') + action([output_prefix + 'libnode.lib'], 'lib/libnode.lib') + elif sys.platform == 'zos': + # GYP will output to lib.target; see _InstallableTargetInstallPath + # function in tools/gyp/pylib/gyp/generator/make.py + output_prefix += 'lib.target/' + + output_lib = 'libnode.' + variables.get('shlib_suffix') + action([output_prefix + output_lib], 'lib/' + output_lib) + + # create libnode.x that references libnode.so (C++ addons compat) + os.system(os.path.dirname(os.path.realpath(__file__)) + + '/zos/modifysidedeck.sh ' + + abspath(install_path, 'lib/' + output_lib) + ' ' + + abspath(install_path, 'lib/libnode.x') + ' libnode.so') + + # install libnode.version.so + so_name = 'libnode.' + re.sub(r'\.x$', '.so', variables.get('shlib_suffix')) + action([output_prefix + so_name], 'lib/' + so_name) + + # create symlink of libnode.so -> libnode.version.so (C++ addons compat) + link_path = abspath(install_path, 'lib/libnode.so') + try_symlink(so_name, link_path) else: - output_file = 'lib' + output_file + '.' + variables.get('shlib_suffix') - - if 'false' == variables.get('node_shared'): - action([output_prefix + output_file], 'bin/' + output_file) - else: - action([output_prefix + output_file], 'lib/' + output_file) - + output_lib = 'libnode.' + variables.get('shlib_suffix') + action([output_prefix + output_lib], 'lib/' + output_lib) if 'true' == variables.get('node_use_dtrace'): action(['out/Release/node.d'], 'lib/dtrace/node.d') diff --git a/tools/license2rtf.js b/tools/license2rtf.mjs similarity index 94% rename from tools/license2rtf.js rename to tools/license2rtf.mjs index 817da81d7a6ada..d982e679c3e653 100644 --- a/tools/license2rtf.js +++ b/tools/license2rtf.mjs @@ -1,8 +1,7 @@ -'use strict'; - -const assert = require('assert'); -const Stream = require('stream'); - +import assert from 'node:assert'; +import Stream from 'node:stream'; +import { pipeline } from 'node:stream/promises'; +import { stdin, stdout } from 'node:process'; /* * This filter consumes a stream of characters and emits one string per line. @@ -28,6 +27,7 @@ class LineSplitter extends Stream { if (this.buffer) { this.emit('data', this.buffer); } + this.writable = false; this.emit('end'); } } @@ -53,6 +53,7 @@ class ParagraphParser extends Stream { if (data) this.parseLine(data + ''); this.flushParagraph(); + this.writable = false; this.emit('end'); } @@ -212,6 +213,7 @@ class Unwrapper extends Stream { end(data) { if (data) this.write(data); + this.writable = false; this.emit('end'); } } @@ -273,6 +275,7 @@ class RtfGenerator extends Stream { this.write(data); if (this.didWriteAnything) this.emitFooter(); + this.writable = false; this.emit('end'); } @@ -287,19 +290,14 @@ class RtfGenerator extends Stream { } } - -const stdin = process.stdin; -const stdout = process.stdout; -const lineSplitter = new LineSplitter(); -const paragraphParser = new ParagraphParser(); -const unwrapper = new Unwrapper(); -const rtfGenerator = new RtfGenerator(); - stdin.setEncoding('utf-8'); stdin.resume(); -stdin.pipe(lineSplitter); -lineSplitter.pipe(paragraphParser); -paragraphParser.pipe(unwrapper); -unwrapper.pipe(rtfGenerator); -rtfGenerator.pipe(stdout); +await pipeline( + stdin, + new LineSplitter(), + new ParagraphParser(), + new Unwrapper(), + new RtfGenerator(), + stdout, +); diff --git a/tools/lint-md/lint-md.mjs b/tools/lint-md/lint-md.mjs index ab6150f996e66b..056d80e2ad7277 100644 --- a/tools/lint-md/lint-md.mjs +++ b/tools/lint-md/lint-md.mjs @@ -1,7 +1,7 @@ import fs from 'fs'; import path$1 from 'path'; -import { fileURLToPath, pathToFileURL, URL as URL$1 } from 'url'; import proc from 'process'; +import { fileURLToPath, pathToFileURL, URL as URL$1 } from 'url'; import process$1 from 'node:process'; import os from 'node:os'; import tty from 'node:tty'; @@ -14,10 +14,6 @@ function bail(error) { var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; -function commonjsRequire (path) { - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); -} - /*! * Determine if an object is a Buffer * @@ -114,11 +110,11 @@ var extend$1 = function extend() { }; function isPlainObject(value) { - if (Object.prototype.toString.call(value) !== '[object Object]') { + if (typeof value !== 'object' || value === null) { return false; } const prototype = Object.getPrototypeOf(value); - return prototype === null || prototype === Object.prototype; + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value); } function trough() { @@ -1507,18 +1503,13 @@ function tokenizeCharacterEscape(effects, ok, nok) { } const characterEntities = { - AEli: 'Æ', AElig: 'Æ', - AM: '&', AMP: '&', - Aacut: 'Á', Aacute: 'Á', Abreve: 'Ă', - Acir: 'Â', Acirc: 'Â', Acy: 'А', Afr: '𝔄', - Agrav: 'À', Agrave: 'À', Alpha: 'Α', Amacr: 'Ā', @@ -1526,13 +1517,10 @@ const characterEntities = { Aogon: 'Ą', Aopf: '𝔸', ApplyFunction: '⁡', - Arin: 'Å', Aring: 'Å', Ascr: '𝒜', Assign: '≔', - Atild: 'Ã', Atilde: 'Ã', - Aum: 'Ä', Auml: 'Ä', Backslash: '∖', Barv: '⫧', @@ -1547,14 +1535,12 @@ const characterEntities = { Bscr: 'ℬ', Bumpeq: '≎', CHcy: 'Ч', - COP: '©', COPY: '©', Cacute: 'Ć', Cap: '⋒', CapitalDifferentialD: 'ⅅ', Cayleys: 'ℭ', Ccaron: 'Č', - Ccedi: 'Ç', Ccedil: 'Ç', Ccirc: 'Ĉ', Cconint: '∰', @@ -1637,17 +1623,13 @@ const characterEntities = { Dscr: '𝒟', Dstrok: 'Đ', ENG: 'Ŋ', - ET: 'Ð', ETH: 'Ð', - Eacut: 'É', Eacute: 'É', Ecaron: 'Ě', - Ecir: 'Ê', Ecirc: 'Ê', Ecy: 'Э', Edot: 'Ė', Efr: '𝔈', - Egrav: 'È', Egrave: 'È', Element: '∈', Emacr: 'Ē', @@ -1662,7 +1644,6 @@ const characterEntities = { Escr: 'ℰ', Esim: '⩳', Eta: 'Η', - Eum: 'Ë', Euml: 'Ë', Exists: '∃', ExponentialE: 'ⅇ', @@ -1675,7 +1656,6 @@ const characterEntities = { Fouriertrf: 'ℱ', Fscr: 'ℱ', GJcy: 'Ѓ', - G: '>', GT: '>', Gamma: 'Γ', Gammad: 'Ϝ', @@ -1711,14 +1691,11 @@ const characterEntities = { IEcy: 'Е', IJlig: 'IJ', IOcy: 'Ё', - Iacut: 'Í', Iacute: 'Í', - Icir: 'Î', Icirc: 'Î', Icy: 'И', Idot: 'İ', Ifr: 'ℑ', - Igrav: 'Ì', Igrave: 'Ì', Im: 'ℑ', Imacr: 'Ī', @@ -1735,7 +1712,6 @@ const characterEntities = { Iscr: 'ℐ', Itilde: 'Ĩ', Iukcy: 'І', - Ium: 'Ï', Iuml: 'Ï', Jcirc: 'Ĵ', Jcy: 'Й', @@ -1753,7 +1729,6 @@ const characterEntities = { Kopf: '𝕂', Kscr: '𝒦', LJcy: 'Љ', - L: '<', LT: '<', Lacute: 'Ĺ', Lambda: 'Λ', @@ -1890,18 +1865,14 @@ const characterEntities = { NotTildeTilde: '≉', NotVerticalBar: '∤', Nscr: '𝒩', - Ntild: 'Ñ', Ntilde: 'Ñ', Nu: 'Ν', OElig: 'Œ', - Oacut: 'Ó', Oacute: 'Ó', - Ocir: 'Ô', Ocirc: 'Ô', Ocy: 'О', Odblac: 'Ő', Ofr: '𝔒', - Ograv: 'Ò', Ograve: 'Ò', Omacr: 'Ō', Omega: 'Ω', @@ -1911,12 +1882,9 @@ const characterEntities = { OpenCurlyQuote: '‘', Or: '⩔', Oscr: '𝒪', - Oslas: 'Ø', Oslash: 'Ø', - Otild: 'Õ', Otilde: 'Õ', Otimes: '⨷', - Oum: 'Ö', Ouml: 'Ö', OverBar: '‾', OverBrace: '⏞', @@ -1941,13 +1909,11 @@ const characterEntities = { Proportional: '∝', Pscr: '𝒫', Psi: 'Ψ', - QUO: '"', QUOT: '"', Qfr: '𝔔', Qopf: 'ℚ', Qscr: '𝒬', RBarr: '⤐', - RE: '®', REG: '®', Racute: 'Ŕ', Rang: '⟫', @@ -2031,7 +1997,6 @@ const characterEntities = { Superset: '⊃', SupersetEqual: '⊇', Supset: '⋑', - THOR: 'Þ', THORN: 'Þ', TRADE: '™', TSHcy: 'Ћ', @@ -2054,18 +2019,15 @@ const characterEntities = { TripleDot: '⃛', Tscr: '𝒯', Tstrok: 'Ŧ', - Uacut: 'Ú', Uacute: 'Ú', Uarr: '↟', Uarrocir: '⥉', Ubrcy: 'Ў', Ubreve: 'Ŭ', - Ucir: 'Û', Ucirc: 'Û', Ucy: 'У', Udblac: 'Ű', Ufr: '𝔘', - Ugrav: 'Ù', Ugrave: 'Ù', Umacr: 'Ū', UnderBar: '_', @@ -2092,7 +2054,6 @@ const characterEntities = { Uring: 'Ů', Uscr: '𝒰', Utilde: 'Ũ', - Uum: 'Ü', Uuml: 'Ü', VDash: '⊫', Vbar: '⫫', @@ -2123,7 +2084,6 @@ const characterEntities = { YAcy: 'Я', YIcy: 'Ї', YUcy: 'Ю', - Yacut: 'Ý', Yacute: 'Ý', Ycirc: 'Ŷ', Ycy: 'Ы', @@ -2141,29 +2101,23 @@ const characterEntities = { Zfr: 'ℨ', Zopf: 'ℤ', Zscr: '𝒵', - aacut: 'á', aacute: 'á', abreve: 'ă', ac: '∾', acE: '∾̳', acd: '∿', - acir: 'â', acirc: 'â', - acut: '´', acute: '´', acy: 'а', - aeli: 'æ', aelig: 'æ', af: '⁡', afr: '𝔞', - agrav: 'à', agrave: 'à', alefsym: 'ℵ', aleph: 'ℵ', alpha: 'α', amacr: 'ā', amalg: '⨿', - am: '&', amp: '&', and: '∧', andand: '⩕', @@ -2198,15 +2152,12 @@ const characterEntities = { apos: "'", approx: '≈', approxeq: '≊', - arin: 'å', aring: 'å', ascr: '𝒶', ast: '*', asymp: '≈', asympeq: '≍', - atild: 'ã', atilde: 'ã', - aum: 'ä', auml: 'ä', awconint: '∳', awint: '⨑', @@ -2311,7 +2262,6 @@ const characterEntities = { boxvr: '├', bprime: '‵', breve: '˘', - brvba: '¦', brvbar: '¦', bscr: '𝒷', bsemi: '⁏', @@ -2338,16 +2288,13 @@ const characterEntities = { caron: 'ˇ', ccaps: '⩍', ccaron: 'č', - ccedi: 'ç', ccedil: 'ç', ccirc: 'ĉ', ccups: '⩌', ccupssm: '⩐', cdot: 'ċ', - cedi: '¸', cedil: '¸', cemptyv: '⦲', - cen: '¢', cent: '¢', centerdot: '·', cfr: '𝔠', @@ -2386,7 +2333,6 @@ const characterEntities = { conint: '∮', copf: '𝕔', coprod: '∐', - cop: '©', copy: '©', copysr: '℗', crarr: '↵', @@ -2416,7 +2362,6 @@ const characterEntities = { curlyeqsucc: '⋟', curlyvee: '⋎', curlywedge: '⋏', - curre: '¤', curren: '¤', curvearrowleft: '↶', curvearrowright: '↷', @@ -2440,7 +2385,6 @@ const characterEntities = { ddagger: '‡', ddarr: '⇊', ddotseq: '⩷', - de: '°', deg: '°', delta: 'δ', demptyv: '⦱', @@ -2456,7 +2400,6 @@ const characterEntities = { digamma: 'ϝ', disin: '⋲', div: '÷', - divid: '÷', divide: '÷', divideontimes: '⋇', divonx: '⋇', @@ -2493,11 +2436,10 @@ const characterEntities = { dzigrarr: '⟿', eDDot: '⩷', eDot: '≑', - eacut: 'é', eacute: 'é', easter: '⩮', ecaron: 'ě', - ecir: 'ê', + ecir: '≖', ecirc: 'ê', ecolon: '≕', ecy: 'э', @@ -2506,7 +2448,6 @@ const characterEntities = { efDot: '≒', efr: '𝔢', eg: '⪚', - egrav: 'è', egrave: 'è', egs: '⪖', egsdot: '⪘', @@ -2548,9 +2489,7 @@ const characterEntities = { esdot: '≐', esim: '≂', eta: 'η', - et: 'ð', eth: 'ð', - eum: 'ë', euml: 'ë', euro: '€', excl: '!', @@ -2575,7 +2514,6 @@ const characterEntities = { fork: '⋔', forkv: '⫙', fpartint: '⨍', - frac1: '¼', frac12: '½', frac13: '⅓', frac14: '¼', @@ -2584,7 +2522,6 @@ const characterEntities = { frac18: '⅛', frac23: '⅔', frac25: '⅖', - frac3: '¾', frac34: '¾', frac35: '⅗', frac38: '⅜', @@ -2639,7 +2576,6 @@ const characterEntities = { gsim: '≳', gsime: '⪎', gsiml: '⪐', - g: '>', gt: '>', gtcc: '⪧', gtcir: '⩺', @@ -2683,18 +2619,14 @@ const characterEntities = { hstrok: 'ħ', hybull: '⁃', hyphen: '‐', - iacut: 'í', iacute: 'í', ic: '⁣', - icir: 'î', icirc: 'î', icy: 'и', iecy: 'е', - iexc: '¡', iexcl: '¡', iff: '⇔', ifr: '𝔦', - igrav: 'ì', igrave: 'ì', ii: 'ⅈ', iiiint: '⨌', @@ -2725,7 +2657,6 @@ const characterEntities = { iopf: '𝕚', iota: 'ι', iprod: '⨼', - iques: '¿', iquest: '¿', iscr: '𝒾', isin: '∈', @@ -2737,7 +2668,6 @@ const characterEntities = { it: '⁢', itilde: 'ĩ', iukcy: 'і', - ium: 'ï', iuml: 'ï', jcirc: 'ĵ', jcy: 'й', @@ -2772,7 +2702,6 @@ const characterEntities = { langd: '⦑', langle: '⟨', lap: '⪅', - laqu: '«', laquo: '«', larr: '←', larrb: '⇤', @@ -2894,7 +2823,6 @@ const characterEntities = { lsquo: '‘', lsquor: '‚', lstrok: 'ł', - l: '<', lt: '<', ltcc: '⪦', ltcir: '⩹', @@ -2912,7 +2840,6 @@ const characterEntities = { lvertneqq: '≨︀', lvnE: '≨︀', mDDot: '∺', - mac: '¯', macr: '¯', male: '♂', malt: '✠', @@ -2929,12 +2856,10 @@ const characterEntities = { measuredangle: '∡', mfr: '𝔪', mho: '℧', - micr: 'µ', micro: 'µ', mid: '∣', midast: '*', midcir: '⫰', - middo: '·', middot: '·', minus: '−', minusb: '⊟', @@ -2973,7 +2898,6 @@ const characterEntities = { natur: '♮', natural: '♮', naturals: 'ℕ', - nbs: ' ', nbsp: ' ', nbump: '≎̸', nbumpe: '≏̸', @@ -3032,7 +2956,6 @@ const characterEntities = { nltrie: '⋬', nmid: '∤', nopf: '𝕟', - no: '¬', not: '¬', notin: '∉', notinE: '⋹̸', @@ -3089,7 +3012,6 @@ const characterEntities = { nsupseteq: '⊉', nsupseteqq: '⫆̸', ntgl: '≹', - ntild: 'ñ', ntilde: 'ñ', ntlg: '≸', ntriangleleft: '⋪', @@ -3120,10 +3042,9 @@ const characterEntities = { nwarrow: '↖', nwnear: '⤧', oS: 'Ⓢ', - oacut: 'ó', oacute: 'ó', oast: '⊛', - ocir: 'ô', + ocir: '⊚', ocirc: 'ô', ocy: 'о', odash: '⊝', @@ -3135,7 +3056,6 @@ const characterEntities = { ofcir: '⦿', ofr: '𝔬', ogon: '˛', - ograv: 'ò', ograve: 'ò', ogt: '⧁', ohbar: '⦵', @@ -3157,7 +3077,7 @@ const characterEntities = { oplus: '⊕', or: '∨', orarr: '↻', - ord: 'º', + ord: '⩝', order: 'ℴ', orderof: 'ℴ', ordf: 'ª', @@ -3167,17 +3087,14 @@ const characterEntities = { orslope: '⩗', orv: '⩛', oscr: 'ℴ', - oslas: 'ø', oslash: 'ø', osol: '⊘', - otild: 'õ', otilde: 'õ', otimes: '⊗', otimesas: '⨶', - oum: 'ö', ouml: 'ö', ovbar: '⌽', - par: '¶', + par: '∥', para: '¶', parallel: '∥', parsim: '⫳', @@ -3207,14 +3124,12 @@ const characterEntities = { plusdo: '∔', plusdu: '⨥', pluse: '⩲', - plusm: '±', plusmn: '±', plussim: '⨦', plustwo: '⨧', pm: '±', pointint: '⨕', popf: '𝕡', - poun: '£', pound: '£', pr: '≺', prE: '⪳', @@ -3254,7 +3169,6 @@ const characterEntities = { quatint: '⨖', quest: '?', questeq: '≟', - quo: '"', quot: '"', rAarr: '⇛', rArr: '⇒', @@ -3269,7 +3183,6 @@ const characterEntities = { rangd: '⦒', range: '⦥', rangle: '⟩', - raqu: '»', raquo: '»', rarr: '→', rarrap: '⥵', @@ -3308,7 +3221,6 @@ const characterEntities = { realpart: 'ℜ', reals: 'ℝ', rect: '▭', - re: '®', reg: '®', rfisht: '⥽', rfloor: '⌋', @@ -3383,7 +3295,6 @@ const characterEntities = { searhk: '⤥', searr: '↘', searrow: '↘', - sec: '§', sect: '§', semi: ';', seswar: '⤩', @@ -3397,7 +3308,6 @@ const characterEntities = { shcy: 'ш', shortmid: '∣', shortparallel: '∥', - sh: '­', shy: '­', sigma: 'σ', sigmaf: 'ς', @@ -3484,10 +3394,10 @@ const characterEntities = { succsim: '≿', sum: '∑', sung: '♪', - sup: '⊃', sup1: '¹', sup2: '²', sup3: '³', + sup: '⊃', supE: '⫆', supdot: '⪾', supdsub: '⫘', @@ -3513,7 +3423,6 @@ const characterEntities = { swarr: '↙', swarrow: '↙', swnwar: '⤪', - szli: 'ß', szlig: 'ß', target: '⌖', tau: 'τ', @@ -3534,10 +3443,8 @@ const characterEntities = { thinsp: ' ', thkap: '≈', thksim: '∼', - thor: 'þ', thorn: 'þ', tilde: '˜', - time: '×', times: '×', timesb: '⊠', timesbar: '⨱', @@ -3575,12 +3482,10 @@ const characterEntities = { twoheadrightarrow: '↠', uArr: '⇑', uHar: '⥣', - uacut: 'ú', uacute: 'ú', uarr: '↑', ubrcy: 'ў', ubreve: 'ŭ', - ucir: 'û', ucirc: 'û', ucy: 'у', udarr: '⇅', @@ -3588,7 +3493,6 @@ const characterEntities = { udhar: '⥮', ufisht: '⥾', ufr: '𝔲', - ugrav: 'ù', ugrave: 'ù', uharl: '↿', uharr: '↾', @@ -3598,7 +3502,6 @@ const characterEntities = { ulcrop: '⌏', ultri: '◸', umacr: 'ū', - um: '¨', uml: '¨', uogon: 'ų', uopf: '𝕦', @@ -3622,7 +3525,6 @@ const characterEntities = { utri: '▵', utrif: '▴', uuarr: '⇈', - uum: 'ü', uuml: 'ü', uwangle: '⦧', vArr: '⇕', @@ -3702,19 +3604,16 @@ const characterEntities = { xutri: '△', xvee: '⋁', xwedge: '⋀', - yacut: 'ý', yacute: 'ý', yacy: 'я', ycirc: 'ŷ', ycy: 'ы', - ye: '¥', yen: '¥', yfr: '𝔶', yicy: 'ї', yopf: '𝕪', yscr: '𝓎', yucy: 'ю', - yum: 'ÿ', yuml: 'ÿ', zacute: 'ź', zcaron: 'ž', @@ -4939,7 +4838,6 @@ const htmlBlockNames = [ 'p', 'param', 'section', - 'source', 'summary', 'table', 'tbody', @@ -10801,80 +10699,6 @@ function escapeStringRegexp(string) { .replace(/-/g, '\\x2d'); } -function color$1(d) { - return '\u001B[33m' + d + '\u001B[39m' -} - -const CONTINUE = true; -const SKIP = 'skip'; -const EXIT = false; -const visitParents = - ( - function (tree, test, visitor, reverse) { - if (typeof test === 'function' && typeof visitor !== 'function') { - reverse = visitor; - visitor = test; - test = null; - } - var is = convert(test); - var step = reverse ? -1 : 1; - factory(tree, null, [])(); - function factory(node, index, parents) { - var value = typeof node === 'object' && node !== null ? node : {}; - var name; - if (typeof value.type === 'string') { - name = - typeof value.tagName === 'string' - ? value.tagName - : typeof value.name === 'string' - ? value.name - : undefined; - Object.defineProperty(visit, 'name', { - value: - 'node (' + - color$1(value.type + (name ? '<' + name + '>' : '')) + - ')' - }); - } - return visit - function visit() { - var result = []; - var subresult; - var offset; - var grandparents; - if (!test || is(node, index, parents[parents.length - 1] || null)) { - result = toResult(visitor(node, parents)); - if (result[0] === EXIT) { - return result - } - } - if (node.children && result[0] !== SKIP) { - offset = (reverse ? node.children.length : -1) + step; - grandparents = parents.concat(node); - while (offset > -1 && offset < node.children.length) { - subresult = factory(node.children[offset], offset, grandparents)(); - if (subresult[0] === EXIT) { - return subresult - } - offset = - typeof subresult[1] === 'number' ? subresult[1] : offset + step; - } - } - return result - } - } - } - ); -function toResult(value) { - if (Array.isArray(value)) { - return value - } - if (typeof value === 'number') { - return [CONTINUE, value] - } - return [value] -} - const own$3 = {}.hasOwnProperty; const findAndReplace = ( @@ -10895,7 +10719,7 @@ const findAndReplace = const pairs = toPairs(schema); let pairIndex = -1; while (++pairIndex < pairs.length) { - visitParents(tree, 'text', visitor); + visitParents$1(tree, 'text', visitor); } return tree function visitor(node, parents) { @@ -10915,24 +10739,28 @@ const findAndReplace = grandparent = parent; } if (grandparent) { - return handler(node, grandparent) + return handler(node, parents) } } - function handler(node, parent) { + function handler(node, parents) { + const parent = parents[parents.length - 1]; const find = pairs[pairIndex][0]; const replace = pairs[pairIndex][1]; let start = 0; - let index = parent.children.indexOf(node); + const index = parent.children.indexOf(node); + let change = false; let nodes = []; let position; find.lastIndex = 0; let match = find.exec(node.value); while (match) { position = match.index; - let value = replace(...match, { + const matchObject = { index: match.index, - input: match.input - }); + input: match.input, + stack: [...parents, node] + }; + let value = replace(...match, matchObject); if (typeof value === 'string') { value = value.length > 0 ? {type: 'text', value} : undefined; } @@ -10949,22 +10777,22 @@ const findAndReplace = nodes.push(value); } start = position + match[0].length; + change = true; } if (!find.global) { break } match = find.exec(node.value); } - if (position === undefined) { - nodes = [node]; - index--; - } else { + if (change) { if (start < node.value.length) { nodes.push({type: 'text', value: node.value.slice(start)}); } parent.children.splice(index, 1, ...nodes); + } else { + nodes = [node]; } - return index + nodes.length + 1 + return index + nodes.length } } ); @@ -11751,6 +11579,80 @@ function location(file) { } } +function color$1(d) { + return '\u001B[33m' + d + '\u001B[39m' +} + +const CONTINUE = true; +const SKIP = 'skip'; +const EXIT = false; +const visitParents = + ( + function (tree, test, visitor, reverse) { + if (typeof test === 'function' && typeof visitor !== 'function') { + reverse = visitor; + visitor = test; + test = null; + } + var is = convert(test); + var step = reverse ? -1 : 1; + factory(tree, null, [])(); + function factory(node, index, parents) { + var value = typeof node === 'object' && node !== null ? node : {}; + var name; + if (typeof value.type === 'string') { + name = + typeof value.tagName === 'string' + ? value.tagName + : typeof value.name === 'string' + ? value.name + : undefined; + Object.defineProperty(visit, 'name', { + value: + 'node (' + + color$1(value.type + (name ? '<' + name + '>' : '')) + + ')' + }); + } + return visit + function visit() { + var result = []; + var subresult; + var offset; + var grandparents; + if (!test || is(node, index, parents[parents.length - 1] || null)) { + result = toResult(visitor(node, parents)); + if (result[0] === EXIT) { + return result + } + } + if (node.children && result[0] !== SKIP) { + offset = (reverse ? node.children.length : -1) + step; + grandparents = parents.concat(node); + while (offset > -1 && offset < node.children.length) { + subresult = factory(node.children[offset], offset, grandparents)(); + if (subresult[0] === EXIT) { + return subresult + } + offset = + typeof subresult[1] === 'number' ? subresult[1] : offset + step; + } + } + return result + } + } + } + ); +function toResult(value) { + if (Array.isArray(value)) { + return value + } + if (typeof value === 'number') { + return [CONTINUE, value] + } + return [value] +} + const visit = ( function (tree, test, visitor, reverse) { @@ -12202,334 +12104,337 @@ const remarkLintFinalNewline = lintRule( } } ); -var remarkLintFinalNewline$1 = remarkLintFinalNewline; + +function commonjsRequire(path) { + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); +} var pluralize = {exports: {}}; (function (module, exports) { -(function (root, pluralize) { - if (typeof commonjsRequire === 'function' && 'object' === 'object' && 'object' === 'object') { - module.exports = pluralize(); - } else { - root.pluralize = pluralize(); - } -})(commonjsGlobal, function () { - var pluralRules = []; - var singularRules = []; - var uncountables = {}; - var irregularPlurals = {}; - var irregularSingles = {}; - function sanitizeRule (rule) { - if (typeof rule === 'string') { - return new RegExp('^' + rule + '$', 'i'); - } - return rule; - } - function restoreCase (word, token) { - if (word === token) return token; - if (word === word.toLowerCase()) return token.toLowerCase(); - if (word === word.toUpperCase()) return token.toUpperCase(); - if (word[0] === word[0].toUpperCase()) { - return token.charAt(0).toUpperCase() + token.substr(1).toLowerCase(); - } - return token.toLowerCase(); - } - function interpolate (str, args) { - return str.replace(/\$(\d{1,2})/g, function (match, index) { - return args[index] || ''; - }); - } - function replace (word, rule) { - return word.replace(rule[0], function (match, index) { - var result = interpolate(rule[1], arguments); - if (match === '') { - return restoreCase(word[index - 1], result); - } - return restoreCase(match, result); - }); - } - function sanitizeWord (token, word, rules) { - if (!token.length || uncountables.hasOwnProperty(token)) { - return word; - } - var len = rules.length; - while (len--) { - var rule = rules[len]; - if (rule[0].test(word)) return replace(word, rule); - } - return word; - } - function replaceWord (replaceMap, keepMap, rules) { - return function (word) { - var token = word.toLowerCase(); - if (keepMap.hasOwnProperty(token)) { - return restoreCase(word, token); - } - if (replaceMap.hasOwnProperty(token)) { - return restoreCase(word, replaceMap[token]); - } - return sanitizeWord(token, word, rules); - }; - } - function checkWord (replaceMap, keepMap, rules, bool) { - return function (word) { - var token = word.toLowerCase(); - if (keepMap.hasOwnProperty(token)) return true; - if (replaceMap.hasOwnProperty(token)) return false; - return sanitizeWord(token, token, rules) === token; - }; - } - function pluralize (word, count, inclusive) { - var pluralized = count === 1 - ? pluralize.singular(word) : pluralize.plural(word); - return (inclusive ? count + ' ' : '') + pluralized; - } - pluralize.plural = replaceWord( - irregularSingles, irregularPlurals, pluralRules - ); - pluralize.isPlural = checkWord( - irregularSingles, irregularPlurals, pluralRules - ); - pluralize.singular = replaceWord( - irregularPlurals, irregularSingles, singularRules - ); - pluralize.isSingular = checkWord( - irregularPlurals, irregularSingles, singularRules - ); - pluralize.addPluralRule = function (rule, replacement) { - pluralRules.push([sanitizeRule(rule), replacement]); - }; - pluralize.addSingularRule = function (rule, replacement) { - singularRules.push([sanitizeRule(rule), replacement]); - }; - pluralize.addUncountableRule = function (word) { - if (typeof word === 'string') { - uncountables[word.toLowerCase()] = true; - return; - } - pluralize.addPluralRule(word, '$0'); - pluralize.addSingularRule(word, '$0'); - }; - pluralize.addIrregularRule = function (single, plural) { - plural = plural.toLowerCase(); - single = single.toLowerCase(); - irregularSingles[single] = plural; - irregularPlurals[plural] = single; - }; - [ - ['I', 'we'], - ['me', 'us'], - ['he', 'they'], - ['she', 'they'], - ['them', 'them'], - ['myself', 'ourselves'], - ['yourself', 'yourselves'], - ['itself', 'themselves'], - ['herself', 'themselves'], - ['himself', 'themselves'], - ['themself', 'themselves'], - ['is', 'are'], - ['was', 'were'], - ['has', 'have'], - ['this', 'these'], - ['that', 'those'], - ['echo', 'echoes'], - ['dingo', 'dingoes'], - ['volcano', 'volcanoes'], - ['tornado', 'tornadoes'], - ['torpedo', 'torpedoes'], - ['genus', 'genera'], - ['viscus', 'viscera'], - ['stigma', 'stigmata'], - ['stoma', 'stomata'], - ['dogma', 'dogmata'], - ['lemma', 'lemmata'], - ['schema', 'schemata'], - ['anathema', 'anathemata'], - ['ox', 'oxen'], - ['axe', 'axes'], - ['die', 'dice'], - ['yes', 'yeses'], - ['foot', 'feet'], - ['eave', 'eaves'], - ['goose', 'geese'], - ['tooth', 'teeth'], - ['quiz', 'quizzes'], - ['human', 'humans'], - ['proof', 'proofs'], - ['carve', 'carves'], - ['valve', 'valves'], - ['looey', 'looies'], - ['thief', 'thieves'], - ['groove', 'grooves'], - ['pickaxe', 'pickaxes'], - ['passerby', 'passersby'] - ].forEach(function (rule) { - return pluralize.addIrregularRule(rule[0], rule[1]); - }); - [ - [/s?$/i, 's'], - [/[^\u0000-\u007F]$/i, '$0'], - [/([^aeiou]ese)$/i, '$1'], - [/(ax|test)is$/i, '$1es'], - [/(alias|[^aou]us|t[lm]as|gas|ris)$/i, '$1es'], - [/(e[mn]u)s?$/i, '$1s'], - [/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i, '$1'], - [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1i'], - [/(alumn|alg|vertebr)(?:a|ae)$/i, '$1ae'], - [/(seraph|cherub)(?:im)?$/i, '$1im'], - [/(her|at|gr)o$/i, '$1oes'], - [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i, '$1a'], - [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i, '$1a'], - [/sis$/i, 'ses'], - [/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i, '$1$2ves'], - [/([^aeiouy]|qu)y$/i, '$1ies'], - [/([^ch][ieo][ln])ey$/i, '$1ies'], - [/(x|ch|ss|sh|zz)$/i, '$1es'], - [/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i, '$1ices'], - [/\b((?:tit)?m|l)(?:ice|ouse)$/i, '$1ice'], - [/(pe)(?:rson|ople)$/i, '$1ople'], - [/(child)(?:ren)?$/i, '$1ren'], - [/eaux$/i, '$0'], - [/m[ae]n$/i, 'men'], - ['thou', 'you'] - ].forEach(function (rule) { - return pluralize.addPluralRule(rule[0], rule[1]); - }); - [ - [/s$/i, ''], - [/(ss)$/i, '$1'], - [/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i, '$1fe'], - [/(ar|(?:wo|[ae])l|[eo][ao])ves$/i, '$1f'], - [/ies$/i, 'y'], - [/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i, '$1ie'], - [/\b(mon|smil)ies$/i, '$1ey'], - [/\b((?:tit)?m|l)ice$/i, '$1ouse'], - [/(seraph|cherub)im$/i, '$1'], - [/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i, '$1'], - [/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i, '$1sis'], - [/(movie|twelve|abuse|e[mn]u)s$/i, '$1'], - [/(test)(?:is|es)$/i, '$1is'], - [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1us'], - [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i, '$1um'], - [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i, '$1on'], - [/(alumn|alg|vertebr)ae$/i, '$1a'], - [/(cod|mur|sil|vert|ind)ices$/i, '$1ex'], - [/(matr|append)ices$/i, '$1ix'], - [/(pe)(rson|ople)$/i, '$1rson'], - [/(child)ren$/i, '$1'], - [/(eau)x?$/i, '$1'], - [/men$/i, 'man'] - ].forEach(function (rule) { - return pluralize.addSingularRule(rule[0], rule[1]); - }); - [ - 'adulthood', - 'advice', - 'agenda', - 'aid', - 'aircraft', - 'alcohol', - 'ammo', - 'analytics', - 'anime', - 'athletics', - 'audio', - 'bison', - 'blood', - 'bream', - 'buffalo', - 'butter', - 'carp', - 'cash', - 'chassis', - 'chess', - 'clothing', - 'cod', - 'commerce', - 'cooperation', - 'corps', - 'debris', - 'diabetes', - 'digestion', - 'elk', - 'energy', - 'equipment', - 'excretion', - 'expertise', - 'firmware', - 'flounder', - 'fun', - 'gallows', - 'garbage', - 'graffiti', - 'hardware', - 'headquarters', - 'health', - 'herpes', - 'highjinks', - 'homework', - 'housework', - 'information', - 'jeans', - 'justice', - 'kudos', - 'labour', - 'literature', - 'machinery', - 'mackerel', - 'mail', - 'media', - 'mews', - 'moose', - 'music', - 'mud', - 'manga', - 'news', - 'only', - 'personnel', - 'pike', - 'plankton', - 'pliers', - 'police', - 'pollution', - 'premises', - 'rain', - 'research', - 'rice', - 'salmon', - 'scissors', - 'series', - 'sewage', - 'shambles', - 'shrimp', - 'software', - 'species', - 'staff', - 'swine', - 'tennis', - 'traffic', - 'transportation', - 'trout', - 'tuna', - 'wealth', - 'welfare', - 'whiting', - 'wildebeest', - 'wildlife', - 'you', - /pok[eé]mon$/i, - /[^aeiou]ese$/i, - /deer$/i, - /fish$/i, - /measles$/i, - /o[iu]s$/i, - /pox$/i, - /sheep$/i - ].forEach(pluralize.addUncountableRule); - return pluralize; -}); -}(pluralize)); + (function (root, pluralize) { + if (typeof commonjsRequire === 'function' && 'object' === 'object' && 'object' === 'object') { + module.exports = pluralize(); + } else { + root.pluralize = pluralize(); + } + })(commonjsGlobal, function () { + var pluralRules = []; + var singularRules = []; + var uncountables = {}; + var irregularPlurals = {}; + var irregularSingles = {}; + function sanitizeRule (rule) { + if (typeof rule === 'string') { + return new RegExp('^' + rule + '$', 'i'); + } + return rule; + } + function restoreCase (word, token) { + if (word === token) return token; + if (word === word.toLowerCase()) return token.toLowerCase(); + if (word === word.toUpperCase()) return token.toUpperCase(); + if (word[0] === word[0].toUpperCase()) { + return token.charAt(0).toUpperCase() + token.substr(1).toLowerCase(); + } + return token.toLowerCase(); + } + function interpolate (str, args) { + return str.replace(/\$(\d{1,2})/g, function (match, index) { + return args[index] || ''; + }); + } + function replace (word, rule) { + return word.replace(rule[0], function (match, index) { + var result = interpolate(rule[1], arguments); + if (match === '') { + return restoreCase(word[index - 1], result); + } + return restoreCase(match, result); + }); + } + function sanitizeWord (token, word, rules) { + if (!token.length || uncountables.hasOwnProperty(token)) { + return word; + } + var len = rules.length; + while (len--) { + var rule = rules[len]; + if (rule[0].test(word)) return replace(word, rule); + } + return word; + } + function replaceWord (replaceMap, keepMap, rules) { + return function (word) { + var token = word.toLowerCase(); + if (keepMap.hasOwnProperty(token)) { + return restoreCase(word, token); + } + if (replaceMap.hasOwnProperty(token)) { + return restoreCase(word, replaceMap[token]); + } + return sanitizeWord(token, word, rules); + }; + } + function checkWord (replaceMap, keepMap, rules, bool) { + return function (word) { + var token = word.toLowerCase(); + if (keepMap.hasOwnProperty(token)) return true; + if (replaceMap.hasOwnProperty(token)) return false; + return sanitizeWord(token, token, rules) === token; + }; + } + function pluralize (word, count, inclusive) { + var pluralized = count === 1 + ? pluralize.singular(word) : pluralize.plural(word); + return (inclusive ? count + ' ' : '') + pluralized; + } + pluralize.plural = replaceWord( + irregularSingles, irregularPlurals, pluralRules + ); + pluralize.isPlural = checkWord( + irregularSingles, irregularPlurals, pluralRules + ); + pluralize.singular = replaceWord( + irregularPlurals, irregularSingles, singularRules + ); + pluralize.isSingular = checkWord( + irregularPlurals, irregularSingles, singularRules + ); + pluralize.addPluralRule = function (rule, replacement) { + pluralRules.push([sanitizeRule(rule), replacement]); + }; + pluralize.addSingularRule = function (rule, replacement) { + singularRules.push([sanitizeRule(rule), replacement]); + }; + pluralize.addUncountableRule = function (word) { + if (typeof word === 'string') { + uncountables[word.toLowerCase()] = true; + return; + } + pluralize.addPluralRule(word, '$0'); + pluralize.addSingularRule(word, '$0'); + }; + pluralize.addIrregularRule = function (single, plural) { + plural = plural.toLowerCase(); + single = single.toLowerCase(); + irregularSingles[single] = plural; + irregularPlurals[plural] = single; + }; + [ + ['I', 'we'], + ['me', 'us'], + ['he', 'they'], + ['she', 'they'], + ['them', 'them'], + ['myself', 'ourselves'], + ['yourself', 'yourselves'], + ['itself', 'themselves'], + ['herself', 'themselves'], + ['himself', 'themselves'], + ['themself', 'themselves'], + ['is', 'are'], + ['was', 'were'], + ['has', 'have'], + ['this', 'these'], + ['that', 'those'], + ['echo', 'echoes'], + ['dingo', 'dingoes'], + ['volcano', 'volcanoes'], + ['tornado', 'tornadoes'], + ['torpedo', 'torpedoes'], + ['genus', 'genera'], + ['viscus', 'viscera'], + ['stigma', 'stigmata'], + ['stoma', 'stomata'], + ['dogma', 'dogmata'], + ['lemma', 'lemmata'], + ['schema', 'schemata'], + ['anathema', 'anathemata'], + ['ox', 'oxen'], + ['axe', 'axes'], + ['die', 'dice'], + ['yes', 'yeses'], + ['foot', 'feet'], + ['eave', 'eaves'], + ['goose', 'geese'], + ['tooth', 'teeth'], + ['quiz', 'quizzes'], + ['human', 'humans'], + ['proof', 'proofs'], + ['carve', 'carves'], + ['valve', 'valves'], + ['looey', 'looies'], + ['thief', 'thieves'], + ['groove', 'grooves'], + ['pickaxe', 'pickaxes'], + ['passerby', 'passersby'] + ].forEach(function (rule) { + return pluralize.addIrregularRule(rule[0], rule[1]); + }); + [ + [/s?$/i, 's'], + [/[^\u0000-\u007F]$/i, '$0'], + [/([^aeiou]ese)$/i, '$1'], + [/(ax|test)is$/i, '$1es'], + [/(alias|[^aou]us|t[lm]as|gas|ris)$/i, '$1es'], + [/(e[mn]u)s?$/i, '$1s'], + [/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i, '$1'], + [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1i'], + [/(alumn|alg|vertebr)(?:a|ae)$/i, '$1ae'], + [/(seraph|cherub)(?:im)?$/i, '$1im'], + [/(her|at|gr)o$/i, '$1oes'], + [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i, '$1a'], + [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i, '$1a'], + [/sis$/i, 'ses'], + [/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i, '$1$2ves'], + [/([^aeiouy]|qu)y$/i, '$1ies'], + [/([^ch][ieo][ln])ey$/i, '$1ies'], + [/(x|ch|ss|sh|zz)$/i, '$1es'], + [/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i, '$1ices'], + [/\b((?:tit)?m|l)(?:ice|ouse)$/i, '$1ice'], + [/(pe)(?:rson|ople)$/i, '$1ople'], + [/(child)(?:ren)?$/i, '$1ren'], + [/eaux$/i, '$0'], + [/m[ae]n$/i, 'men'], + ['thou', 'you'] + ].forEach(function (rule) { + return pluralize.addPluralRule(rule[0], rule[1]); + }); + [ + [/s$/i, ''], + [/(ss)$/i, '$1'], + [/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i, '$1fe'], + [/(ar|(?:wo|[ae])l|[eo][ao])ves$/i, '$1f'], + [/ies$/i, 'y'], + [/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i, '$1ie'], + [/\b(mon|smil)ies$/i, '$1ey'], + [/\b((?:tit)?m|l)ice$/i, '$1ouse'], + [/(seraph|cherub)im$/i, '$1'], + [/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i, '$1'], + [/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i, '$1sis'], + [/(movie|twelve|abuse|e[mn]u)s$/i, '$1'], + [/(test)(?:is|es)$/i, '$1is'], + [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1us'], + [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i, '$1um'], + [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i, '$1on'], + [/(alumn|alg|vertebr)ae$/i, '$1a'], + [/(cod|mur|sil|vert|ind)ices$/i, '$1ex'], + [/(matr|append)ices$/i, '$1ix'], + [/(pe)(rson|ople)$/i, '$1rson'], + [/(child)ren$/i, '$1'], + [/(eau)x?$/i, '$1'], + [/men$/i, 'man'] + ].forEach(function (rule) { + return pluralize.addSingularRule(rule[0], rule[1]); + }); + [ + 'adulthood', + 'advice', + 'agenda', + 'aid', + 'aircraft', + 'alcohol', + 'ammo', + 'analytics', + 'anime', + 'athletics', + 'audio', + 'bison', + 'blood', + 'bream', + 'buffalo', + 'butter', + 'carp', + 'cash', + 'chassis', + 'chess', + 'clothing', + 'cod', + 'commerce', + 'cooperation', + 'corps', + 'debris', + 'diabetes', + 'digestion', + 'elk', + 'energy', + 'equipment', + 'excretion', + 'expertise', + 'firmware', + 'flounder', + 'fun', + 'gallows', + 'garbage', + 'graffiti', + 'hardware', + 'headquarters', + 'health', + 'herpes', + 'highjinks', + 'homework', + 'housework', + 'information', + 'jeans', + 'justice', + 'kudos', + 'labour', + 'literature', + 'machinery', + 'mackerel', + 'mail', + 'media', + 'mews', + 'moose', + 'music', + 'mud', + 'manga', + 'news', + 'only', + 'personnel', + 'pike', + 'plankton', + 'pliers', + 'police', + 'pollution', + 'premises', + 'rain', + 'research', + 'rice', + 'salmon', + 'scissors', + 'series', + 'sewage', + 'shambles', + 'shrimp', + 'software', + 'species', + 'staff', + 'swine', + 'tennis', + 'traffic', + 'transportation', + 'trout', + 'tuna', + 'wealth', + 'welfare', + 'whiting', + 'wildebeest', + 'wildlife', + 'you', + /pok[eé]mon$/i, + /[^aeiou]ese$/i, + /deer$/i, + /fish$/i, + /measles$/i, + /o[iu]s$/i, + /pox$/i, + /sheep$/i + ].forEach(pluralize.addUncountableRule); + return pluralize; + }); +} (pluralize)); var plural = pluralize.exports; /** @@ -12625,7 +12530,6 @@ const remarkLintListItemBulletIndent = lintRule( }); } ); -var remarkLintListItemBulletIndent$1 = remarkLintListItemBulletIndent; const pointStart = point('start'); const pointEnd = point('end'); @@ -12852,7 +12756,6 @@ const remarkLintListItemIndent = lintRule( }); } ); -var remarkLintListItemIndent$1 = remarkLintListItemIndent; /** * ## When should I use this? @@ -12949,7 +12852,6 @@ const remarkLintNoBlockquoteWithoutMarker = lintRule( }); } ); -var remarkLintNoBlockquoteWithoutMarker$1 = remarkLintNoBlockquoteWithoutMarker; /** * ## When should I use this? @@ -13013,7 +12915,6 @@ const remarkLintNoLiteralUrls = lintRule( }); } ); -var remarkLintNoLiteralUrls$1 = remarkLintNoLiteralUrls; /** * ## When should I use this? @@ -13134,7 +13035,6 @@ const remarkLintOrderedListMarkerStyle = lintRule( }); } ); -var remarkLintOrderedListMarkerStyle$1 = remarkLintOrderedListMarkerStyle; /** * ## When should I use this? @@ -13196,7 +13096,6 @@ const remarkLintHardBreakSpaces = lintRule( }); } ); -var remarkLintHardBreakSpaces$1 = remarkLintHardBreakSpaces; /** * ## When should I use this? @@ -13261,7 +13160,6 @@ const remarkLintNoDuplicateDefinitions = lintRule( }); } ); -var remarkLintNoDuplicateDefinitions$1 = remarkLintNoDuplicateDefinitions; function headingStyle(node, relative) { var last = node.children[node.children.length - 1]; @@ -13400,7 +13298,6 @@ const remarkLintNoHeadingContentIndent = lintRule( }); } ); -var remarkLintNoHeadingContentIndent$1 = remarkLintNoHeadingContentIndent; /** * ## When should I use this? @@ -13454,7 +13351,6 @@ const remarkLintNoInlinePadding = lintRule( }); } ); -var remarkLintNoInlinePadding$1 = remarkLintNoInlinePadding; /** * ## When should I use this? @@ -13512,7 +13408,6 @@ const remarkLintNoShortcutReferenceImage = lintRule( }); } ); -var remarkLintNoShortcutReferenceImage$1 = remarkLintNoShortcutReferenceImage; /** * ## When should I use this? @@ -13570,7 +13465,6 @@ const remarkLintNoShortcutReferenceLink = lintRule( }); } ); -var remarkLintNoShortcutReferenceLink$1 = remarkLintNoShortcutReferenceLink; /** * ## When should I use this? @@ -13807,7 +13701,6 @@ const remarkLintNoUndefinedReferences = lintRule( } } ); -var remarkLintNoUndefinedReferences$1 = remarkLintNoUndefinedReferences; /** * ## When should I use this? @@ -13884,28 +13777,26 @@ const remarkLintNoUnusedDefinitions = lintRule( } } ); -var remarkLintNoUnusedDefinitions$1 = remarkLintNoUnusedDefinitions; const remarkPresetLintRecommended = { plugins: [ remarkLint, - remarkLintFinalNewline$1, - remarkLintListItemBulletIndent$1, - [remarkLintListItemIndent$1, 'tab-size'], - remarkLintNoBlockquoteWithoutMarker$1, - remarkLintNoLiteralUrls$1, - [remarkLintOrderedListMarkerStyle$1, '.'], - remarkLintHardBreakSpaces$1, - remarkLintNoDuplicateDefinitions$1, - remarkLintNoHeadingContentIndent$1, - remarkLintNoInlinePadding$1, - remarkLintNoShortcutReferenceImage$1, - remarkLintNoShortcutReferenceLink$1, - remarkLintNoUndefinedReferences$1, - remarkLintNoUnusedDefinitions$1 + remarkLintFinalNewline, + remarkLintListItemBulletIndent, + [remarkLintListItemIndent, 'tab-size'], + remarkLintNoBlockquoteWithoutMarker, + remarkLintNoLiteralUrls, + [remarkLintOrderedListMarkerStyle, '.'], + remarkLintHardBreakSpaces, + remarkLintNoDuplicateDefinitions, + remarkLintNoHeadingContentIndent, + remarkLintNoInlinePadding, + remarkLintNoShortcutReferenceImage, + remarkLintNoShortcutReferenceLink, + remarkLintNoUndefinedReferences, + remarkLintNoUnusedDefinitions ] }; -var remarkPresetLintRecommended$1 = remarkPresetLintRecommended; /** * ## When should I use this? @@ -14016,7 +13907,6 @@ const remarkLintBlockquoteIndentation = lintRule( }); } ); -var remarkLintBlockquoteIndentation$1 = remarkLintBlockquoteIndentation; function check$1(node) { return pointStart(node.children[0]).column - pointStart(node).column } @@ -14171,7 +14061,6 @@ const remarkLintCheckboxCharacterStyle = lintRule( }); } ); -var remarkLintCheckboxCharacterStyle$1 = remarkLintCheckboxCharacterStyle; /** * ## When should I use this? @@ -14269,7 +14158,6 @@ const remarkLintCheckboxContentIndent = lintRule( }); } ); -var remarkLintCheckboxContentIndent$1 = remarkLintCheckboxContentIndent; /** * @author Titus Wormer @@ -14409,7 +14297,6 @@ const remarkLintCodeBlockStyle = lintRule( }); } ); -var remarkLintCodeBlockStyle$1 = remarkLintCodeBlockStyle; /** * ## When should I use this? @@ -14476,7 +14363,6 @@ const remarkLintDefinitionSpacing = lintRule( }); } ); -var remarkLintDefinitionSpacing$1 = remarkLintDefinitionSpacing; /** * ## When should I use this? @@ -14613,7 +14499,6 @@ const remarkLintFencedCodeFlag = lintRule( }); } ); -var remarkLintFencedCodeFlag$1 = remarkLintFencedCodeFlag; /** * ## When should I use this? @@ -14753,7 +14638,6 @@ const remarkLintFencedCodeMarker = lintRule( }); } ); -var remarkLintFencedCodeMarker$1 = remarkLintFencedCodeMarker; /** * ## When should I use this? @@ -14809,7 +14693,6 @@ const remarkLintFileExtension = lintRule( } } ); -var remarkLintFileExtension$1 = remarkLintFileExtension; /** * ## When should I use this? @@ -14901,7 +14784,6 @@ const remarkLintFinalDefinition = lintRule( ); } ); -var remarkLintFinalDefinition$1 = remarkLintFinalDefinition; /** * ## When should I use this? @@ -15035,7 +14917,6 @@ const remarkLintFirstHeadingLevel = lintRule( }); } ); -var remarkLintFirstHeadingLevel$1 = remarkLintFirstHeadingLevel; function infer(node) { const results = node.value.match(re$3); return results ? Number(results[1]) : undefined @@ -15183,7 +15064,6 @@ const remarkLintHeadingStyle = lintRule( }); } ); -var remarkLintHeadingStyle$1 = remarkLintHeadingStyle; /** * ## When should I use this? @@ -15364,7 +15244,6 @@ const remarkLintMaximumLineLength = lintRule( } } ); -var remarkLintMaximumLineLength$1 = remarkLintMaximumLineLength; /** * ## When should I use this? @@ -15469,7 +15348,6 @@ const remarkLintNoConsecutiveBlankLines = lintRule( } } ); -var remarkLintNoConsecutiveBlankLines$1 = remarkLintNoConsecutiveBlankLines; /** * ## When should I use this? @@ -15522,7 +15400,6 @@ const remarkLintNoFileNameArticles = lintRule( } } ); -var remarkLintNoFileNameArticles$1 = remarkLintNoFileNameArticles; /** * ## When should I use this? @@ -15559,7 +15436,6 @@ const remarkLintNoFileNameConsecutiveDashes = lintRule( } } ); -var remarkLintNoFileNameConsecutiveDashes$1 = remarkLintNoFileNameConsecutiveDashes; /** * ## When should I use this? @@ -15601,7 +15477,6 @@ const remarkLintNofileNameOuterDashes = lintRule( } } ); -var remarkLintNofileNameOuterDashes$1 = remarkLintNofileNameOuterDashes; /** * ## When should I use this? @@ -15698,7 +15573,6 @@ const remarkLintNoHeadingIndent = lintRule( }); } ); -var remarkLintNoHeadingIndent$1 = remarkLintNoHeadingIndent; /** * ## When should I use this? @@ -15764,7 +15638,6 @@ const remarkLintNoMultipleToplevelHeadings = lintRule( }); } ); -var remarkLintNoMultipleToplevelHeadings$1 = remarkLintNoMultipleToplevelHeadings; /** * ## When should I use this? @@ -15875,7 +15748,6 @@ const remarkLintNoShellDollars = lintRule( }); } ); -var remarkLintNoShellDollars$1 = remarkLintNoShellDollars; /** * ## When should I use this? @@ -16000,7 +15872,6 @@ const remarkLintNoTableIndentation = lintRule( }); } ); -var remarkLintNoTableIndentation$1 = remarkLintNoTableIndentation; /** * ## When should I use this? @@ -16109,7 +15980,6 @@ const remarkLintNoTabs = lintRule( } } ); -var remarkLintNoTabs$1 = remarkLintNoTabs; var sliced$1 = function (args, slice, sliceEnd) { var ret = []; @@ -19297,13 +19167,13 @@ var jsYaml = { const SEMVER_SPEC_VERSION = '2.0.0'; const MAX_LENGTH$2 = 256; const MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || - 9007199254740991; + 9007199254740991; const MAX_SAFE_COMPONENT_LENGTH = 16; var constants = { SEMVER_SPEC_VERSION, MAX_LENGTH: MAX_LENGTH$2, MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1, - MAX_SAFE_COMPONENT_LENGTH + MAX_SAFE_COMPONENT_LENGTH, }; var re$2 = {exports: {}}; @@ -19318,106 +19188,106 @@ const debug$1 = ( var debug_1 = debug$1; (function (module, exports) { -const { MAX_SAFE_COMPONENT_LENGTH } = constants; -const debug = debug_1; -exports = module.exports = {}; -const re = exports.re = []; -const src = exports.src = []; -const t = exports.t = {}; -let R = 0; -const createToken = (name, value, isGlobal) => { - const index = R++; - debug(index, value); - t[name] = index; - src[index] = value; - re[index] = new RegExp(value, isGlobal ? 'g' : undefined); -}; -createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*'); -createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+'); -createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*'); -createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})`); -createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})`); -createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER] -}|${src[t.NONNUMERICIDENTIFIER]})`); -createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE] -}|${src[t.NONNUMERICIDENTIFIER]})`); -createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] -}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); -createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] -}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); -createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+'); -createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] -}(?:\\.${src[t.BUILDIDENTIFIER]})*))`); -createToken('FULLPLAIN', `v?${src[t.MAINVERSION] -}${src[t.PRERELEASE]}?${ - src[t.BUILD]}?`); -createToken('FULL', `^${src[t.FULLPLAIN]}$`); -createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] -}${src[t.PRERELEASELOOSE]}?${ - src[t.BUILD]}?`); -createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`); -createToken('GTLT', '((?:<|>)?=?)'); -createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); -createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); -createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:${src[t.PRERELEASE]})?${ - src[t.BUILD]}?` + - `)?)?`); -createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:${src[t.PRERELEASELOOSE]})?${ - src[t.BUILD]}?` + - `)?)?`); -createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); -createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); -createToken('COERCE', `${'(^|[^\\d])' + - '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + - `(?:$|[^\\d])`); -createToken('COERCERTL', src[t.COERCE], true); -createToken('LONETILDE', '(?:~>?)'); -createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true); -exports.tildeTrimReplace = '$1~'; -createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); -createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); -createToken('LONECARET', '(?:\\^)'); -createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true); -exports.caretTrimReplace = '$1^'; -createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); -createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); -createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); -createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); -createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] -}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); -exports.comparatorTrimReplace = '$1$2$3'; -createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + - `\\s+-\\s+` + - `(${src[t.XRANGEPLAIN]})` + - `\\s*$`); -createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + - `\\s+-\\s+` + - `(${src[t.XRANGEPLAINLOOSE]})` + - `\\s*$`); -createToken('STAR', '(<|>)?=?\\s*\\*'); -createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$'); -createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$'); -}(re$2, re$2.exports)); + const { MAX_SAFE_COMPONENT_LENGTH } = constants; + const debug = debug_1; + exports = module.exports = {}; + const re = exports.re = []; + const src = exports.src = []; + const t = exports.t = {}; + let R = 0; + const createToken = (name, value, isGlobal) => { + const index = R++; + debug(name, index, value); + t[name] = index; + src[index] = value; + re[index] = new RegExp(value, isGlobal ? 'g' : undefined); + }; + createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*'); + createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+'); + createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*'); + createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})`); + createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER] + }|${src[t.NONNUMERICIDENTIFIER]})`); + createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE] + }|${src[t.NONNUMERICIDENTIFIER]})`); + createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] + }(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); + createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] + }(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); + createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+'); + createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] + }(?:\\.${src[t.BUILDIDENTIFIER]})*))`); + createToken('FULLPLAIN', `v?${src[t.MAINVERSION] + }${src[t.PRERELEASE]}?${ + src[t.BUILD]}?`); + createToken('FULL', `^${src[t.FULLPLAIN]}$`); + createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] + }${src[t.PRERELEASELOOSE]}?${ + src[t.BUILD]}?`); + createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`); + createToken('GTLT', '((?:<|>)?=?)'); + createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); + createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); + createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:${src[t.PRERELEASE]})?${ + src[t.BUILD]}?` + + `)?)?`); + createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:${src[t.PRERELEASELOOSE]})?${ + src[t.BUILD]}?` + + `)?)?`); + createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); + createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); + createToken('COERCE', `${'(^|[^\\d])' + + '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:$|[^\\d])`); + createToken('COERCERTL', src[t.COERCE], true); + createToken('LONETILDE', '(?:~>?)'); + createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true); + exports.tildeTrimReplace = '$1~'; + createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); + createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken('LONECARET', '(?:\\^)'); + createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true); + exports.caretTrimReplace = '$1^'; + createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); + createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); + createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); + createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] + }\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); + exports.comparatorTrimReplace = '$1$2$3'; + createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAIN]})` + + `\\s*$`); + createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAINLOOSE]})` + + `\\s*$`); + createToken('STAR', '(<|>)?=?\\s*\\*'); + createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$'); + createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$'); +} (re$2, re$2.exports)); const opts = ['includePrerelease', 'loose', 'rtl']; const parseOptions$2 = options => !options ? {} : typeof options !== 'object' ? { loose: true } - : opts.filter(k => options[k]).reduce((options, k) => { - options[k] = true; - return options + : opts.filter(k => options[k]).reduce((o, k) => { + o[k] = true; + return o }, {}); var parseOptions_1 = parseOptions$2; @@ -19438,7 +19308,7 @@ const compareIdentifiers$1 = (a, b) => { const rcompareIdentifiers = (a, b) => compareIdentifiers$1(b, a); var identifiers = { compareIdentifiers: compareIdentifiers$1, - rcompareIdentifiers + rcompareIdentifiers, }; const debug = debug_1; @@ -19652,7 +19522,7 @@ class SemVer$2 { } } if (identifier) { - if (this.prerelease[0] === identifier) { + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { if (isNaN(this.prerelease[1])) { this.prerelease = [identifier, 0]; } @@ -19671,7 +19541,7 @@ class SemVer$2 { } var semver = SemVer$2; -const {MAX_LENGTH} = constants; +const { MAX_LENGTH } = constants; const { re, t } = re$2.exports; const SemVer$1 = semver; const parseOptions = parseOptions_1; @@ -20086,7 +19956,6 @@ const remarkLintRuleStyle = lintRule( }); } ); -var remarkLintRuleStyle$1 = remarkLintRuleStyle; /** * ## When should I use this? @@ -20191,7 +20060,6 @@ const remarkLintStrongMarker = lintRule( }); } ); -var remarkLintStrongMarker$1 = remarkLintStrongMarker; /** * ## When should I use this? @@ -20495,7 +20363,6 @@ const remarkLintTableCellPadding = lintRule( } } ); -var remarkLintTableCellPadding$1 = remarkLintTableCellPadding; function size$1(node) { const head = pointStart(node.children[0]).offset; const tail = pointEnd(node.children[node.children.length - 1]).offset; @@ -20584,7 +20451,6 @@ const remarkLintTablePipes = lintRule( }); } ); -var remarkLintTablePipes$1 = remarkLintTablePipes; /** * ## When should I use this? @@ -20714,18 +20580,17 @@ const remarkLintUnorderedListMarkerStyle = lintRule( }); } ); -var remarkLintUnorderedListMarkerStyle$1 = remarkLintUnorderedListMarkerStyle; const plugins = [ remarkGfm, - remarkPresetLintRecommended$1, - [remarkLintBlockquoteIndentation$1, 2], - [remarkLintCheckboxCharacterStyle$1, { checked: "x", unchecked: " " }], - remarkLintCheckboxContentIndent$1, - [remarkLintCodeBlockStyle$1, "fenced"], - remarkLintDefinitionSpacing$1, + remarkPresetLintRecommended, + [remarkLintBlockquoteIndentation, 2], + [remarkLintCheckboxCharacterStyle, { checked: "x", unchecked: " " }], + remarkLintCheckboxContentIndent, + [remarkLintCodeBlockStyle, "fenced"], + remarkLintDefinitionSpacing, [ - remarkLintFencedCodeFlag$1, + remarkLintFencedCodeFlag, { flags: [ "bash", @@ -20747,22 +20612,22 @@ const plugins = [ ], }, ], - [remarkLintFencedCodeMarker$1, "`"], - [remarkLintFileExtension$1, "md"], - remarkLintFinalDefinition$1, - [remarkLintFirstHeadingLevel$1, 1], - [remarkLintHeadingStyle$1, "atx"], - [remarkLintListItemIndent$1, "space"], - remarkLintMaximumLineLength$1, - remarkLintNoConsecutiveBlankLines$1, - remarkLintNoFileNameArticles$1, - remarkLintNoFileNameConsecutiveDashes$1, - remarkLintNofileNameOuterDashes$1, - remarkLintNoHeadingIndent$1, - remarkLintNoMultipleToplevelHeadings$1, - remarkLintNoShellDollars$1, - remarkLintNoTableIndentation$1, - remarkLintNoTabs$1, + [remarkLintFencedCodeMarker, "`"], + [remarkLintFileExtension, "md"], + remarkLintFinalDefinition, + [remarkLintFirstHeadingLevel, 1], + [remarkLintHeadingStyle, "atx"], + [remarkLintListItemIndent, "space"], + remarkLintMaximumLineLength, + remarkLintNoConsecutiveBlankLines, + remarkLintNoFileNameArticles, + remarkLintNoFileNameConsecutiveDashes, + remarkLintNofileNameOuterDashes, + remarkLintNoHeadingIndent, + remarkLintNoMultipleToplevelHeadings, + remarkLintNoShellDollars, + remarkLintNoTableIndentation, + remarkLintNoTabs, remarkLintNoTrailingSpaces, remarkLintNodejsLinks, remarkLintNodejsYamlComments, @@ -20786,11 +20651,11 @@ const plugins = [ { yes: "V8" }, ], ], - remarkLintRuleStyle$1, - [remarkLintStrongMarker$1, "*"], - [remarkLintTableCellPadding$1, "padded"], - remarkLintTablePipes$1, - [remarkLintUnorderedListMarkerStyle$1, "*"], + remarkLintRuleStyle, + [remarkLintStrongMarker, "*"], + [remarkLintTableCellPadding, "padded"], + remarkLintTablePipes, + [remarkLintUnorderedListMarkerStyle, "*"], ]; const settings = { emphasis: "_", @@ -20915,307 +20780,307 @@ function stripAnsi(string) { var eastasianwidth = {exports: {}}; (function (module) { -var eaw = {}; -{ - module.exports = eaw; -} -eaw.eastAsianWidth = function(character) { - var x = character.charCodeAt(0); - var y = (character.length == 2) ? character.charCodeAt(1) : 0; - var codePoint = x; - if ((0xD800 <= x && x <= 0xDBFF) && (0xDC00 <= y && y <= 0xDFFF)) { - x &= 0x3FF; - y &= 0x3FF; - codePoint = (x << 10) | y; - codePoint += 0x10000; - } - if ((0x3000 == codePoint) || - (0xFF01 <= codePoint && codePoint <= 0xFF60) || - (0xFFE0 <= codePoint && codePoint <= 0xFFE6)) { - return 'F'; - } - if ((0x20A9 == codePoint) || - (0xFF61 <= codePoint && codePoint <= 0xFFBE) || - (0xFFC2 <= codePoint && codePoint <= 0xFFC7) || - (0xFFCA <= codePoint && codePoint <= 0xFFCF) || - (0xFFD2 <= codePoint && codePoint <= 0xFFD7) || - (0xFFDA <= codePoint && codePoint <= 0xFFDC) || - (0xFFE8 <= codePoint && codePoint <= 0xFFEE)) { - return 'H'; - } - if ((0x1100 <= codePoint && codePoint <= 0x115F) || - (0x11A3 <= codePoint && codePoint <= 0x11A7) || - (0x11FA <= codePoint && codePoint <= 0x11FF) || - (0x2329 <= codePoint && codePoint <= 0x232A) || - (0x2E80 <= codePoint && codePoint <= 0x2E99) || - (0x2E9B <= codePoint && codePoint <= 0x2EF3) || - (0x2F00 <= codePoint && codePoint <= 0x2FD5) || - (0x2FF0 <= codePoint && codePoint <= 0x2FFB) || - (0x3001 <= codePoint && codePoint <= 0x303E) || - (0x3041 <= codePoint && codePoint <= 0x3096) || - (0x3099 <= codePoint && codePoint <= 0x30FF) || - (0x3105 <= codePoint && codePoint <= 0x312D) || - (0x3131 <= codePoint && codePoint <= 0x318E) || - (0x3190 <= codePoint && codePoint <= 0x31BA) || - (0x31C0 <= codePoint && codePoint <= 0x31E3) || - (0x31F0 <= codePoint && codePoint <= 0x321E) || - (0x3220 <= codePoint && codePoint <= 0x3247) || - (0x3250 <= codePoint && codePoint <= 0x32FE) || - (0x3300 <= codePoint && codePoint <= 0x4DBF) || - (0x4E00 <= codePoint && codePoint <= 0xA48C) || - (0xA490 <= codePoint && codePoint <= 0xA4C6) || - (0xA960 <= codePoint && codePoint <= 0xA97C) || - (0xAC00 <= codePoint && codePoint <= 0xD7A3) || - (0xD7B0 <= codePoint && codePoint <= 0xD7C6) || - (0xD7CB <= codePoint && codePoint <= 0xD7FB) || - (0xF900 <= codePoint && codePoint <= 0xFAFF) || - (0xFE10 <= codePoint && codePoint <= 0xFE19) || - (0xFE30 <= codePoint && codePoint <= 0xFE52) || - (0xFE54 <= codePoint && codePoint <= 0xFE66) || - (0xFE68 <= codePoint && codePoint <= 0xFE6B) || - (0x1B000 <= codePoint && codePoint <= 0x1B001) || - (0x1F200 <= codePoint && codePoint <= 0x1F202) || - (0x1F210 <= codePoint && codePoint <= 0x1F23A) || - (0x1F240 <= codePoint && codePoint <= 0x1F248) || - (0x1F250 <= codePoint && codePoint <= 0x1F251) || - (0x20000 <= codePoint && codePoint <= 0x2F73F) || - (0x2B740 <= codePoint && codePoint <= 0x2FFFD) || - (0x30000 <= codePoint && codePoint <= 0x3FFFD)) { - return 'W'; - } - if ((0x0020 <= codePoint && codePoint <= 0x007E) || - (0x00A2 <= codePoint && codePoint <= 0x00A3) || - (0x00A5 <= codePoint && codePoint <= 0x00A6) || - (0x00AC == codePoint) || - (0x00AF == codePoint) || - (0x27E6 <= codePoint && codePoint <= 0x27ED) || - (0x2985 <= codePoint && codePoint <= 0x2986)) { - return 'Na'; - } - if ((0x00A1 == codePoint) || - (0x00A4 == codePoint) || - (0x00A7 <= codePoint && codePoint <= 0x00A8) || - (0x00AA == codePoint) || - (0x00AD <= codePoint && codePoint <= 0x00AE) || - (0x00B0 <= codePoint && codePoint <= 0x00B4) || - (0x00B6 <= codePoint && codePoint <= 0x00BA) || - (0x00BC <= codePoint && codePoint <= 0x00BF) || - (0x00C6 == codePoint) || - (0x00D0 == codePoint) || - (0x00D7 <= codePoint && codePoint <= 0x00D8) || - (0x00DE <= codePoint && codePoint <= 0x00E1) || - (0x00E6 == codePoint) || - (0x00E8 <= codePoint && codePoint <= 0x00EA) || - (0x00EC <= codePoint && codePoint <= 0x00ED) || - (0x00F0 == codePoint) || - (0x00F2 <= codePoint && codePoint <= 0x00F3) || - (0x00F7 <= codePoint && codePoint <= 0x00FA) || - (0x00FC == codePoint) || - (0x00FE == codePoint) || - (0x0101 == codePoint) || - (0x0111 == codePoint) || - (0x0113 == codePoint) || - (0x011B == codePoint) || - (0x0126 <= codePoint && codePoint <= 0x0127) || - (0x012B == codePoint) || - (0x0131 <= codePoint && codePoint <= 0x0133) || - (0x0138 == codePoint) || - (0x013F <= codePoint && codePoint <= 0x0142) || - (0x0144 == codePoint) || - (0x0148 <= codePoint && codePoint <= 0x014B) || - (0x014D == codePoint) || - (0x0152 <= codePoint && codePoint <= 0x0153) || - (0x0166 <= codePoint && codePoint <= 0x0167) || - (0x016B == codePoint) || - (0x01CE == codePoint) || - (0x01D0 == codePoint) || - (0x01D2 == codePoint) || - (0x01D4 == codePoint) || - (0x01D6 == codePoint) || - (0x01D8 == codePoint) || - (0x01DA == codePoint) || - (0x01DC == codePoint) || - (0x0251 == codePoint) || - (0x0261 == codePoint) || - (0x02C4 == codePoint) || - (0x02C7 == codePoint) || - (0x02C9 <= codePoint && codePoint <= 0x02CB) || - (0x02CD == codePoint) || - (0x02D0 == codePoint) || - (0x02D8 <= codePoint && codePoint <= 0x02DB) || - (0x02DD == codePoint) || - (0x02DF == codePoint) || - (0x0300 <= codePoint && codePoint <= 0x036F) || - (0x0391 <= codePoint && codePoint <= 0x03A1) || - (0x03A3 <= codePoint && codePoint <= 0x03A9) || - (0x03B1 <= codePoint && codePoint <= 0x03C1) || - (0x03C3 <= codePoint && codePoint <= 0x03C9) || - (0x0401 == codePoint) || - (0x0410 <= codePoint && codePoint <= 0x044F) || - (0x0451 == codePoint) || - (0x2010 == codePoint) || - (0x2013 <= codePoint && codePoint <= 0x2016) || - (0x2018 <= codePoint && codePoint <= 0x2019) || - (0x201C <= codePoint && codePoint <= 0x201D) || - (0x2020 <= codePoint && codePoint <= 0x2022) || - (0x2024 <= codePoint && codePoint <= 0x2027) || - (0x2030 == codePoint) || - (0x2032 <= codePoint && codePoint <= 0x2033) || - (0x2035 == codePoint) || - (0x203B == codePoint) || - (0x203E == codePoint) || - (0x2074 == codePoint) || - (0x207F == codePoint) || - (0x2081 <= codePoint && codePoint <= 0x2084) || - (0x20AC == codePoint) || - (0x2103 == codePoint) || - (0x2105 == codePoint) || - (0x2109 == codePoint) || - (0x2113 == codePoint) || - (0x2116 == codePoint) || - (0x2121 <= codePoint && codePoint <= 0x2122) || - (0x2126 == codePoint) || - (0x212B == codePoint) || - (0x2153 <= codePoint && codePoint <= 0x2154) || - (0x215B <= codePoint && codePoint <= 0x215E) || - (0x2160 <= codePoint && codePoint <= 0x216B) || - (0x2170 <= codePoint && codePoint <= 0x2179) || - (0x2189 == codePoint) || - (0x2190 <= codePoint && codePoint <= 0x2199) || - (0x21B8 <= codePoint && codePoint <= 0x21B9) || - (0x21D2 == codePoint) || - (0x21D4 == codePoint) || - (0x21E7 == codePoint) || - (0x2200 == codePoint) || - (0x2202 <= codePoint && codePoint <= 0x2203) || - (0x2207 <= codePoint && codePoint <= 0x2208) || - (0x220B == codePoint) || - (0x220F == codePoint) || - (0x2211 == codePoint) || - (0x2215 == codePoint) || - (0x221A == codePoint) || - (0x221D <= codePoint && codePoint <= 0x2220) || - (0x2223 == codePoint) || - (0x2225 == codePoint) || - (0x2227 <= codePoint && codePoint <= 0x222C) || - (0x222E == codePoint) || - (0x2234 <= codePoint && codePoint <= 0x2237) || - (0x223C <= codePoint && codePoint <= 0x223D) || - (0x2248 == codePoint) || - (0x224C == codePoint) || - (0x2252 == codePoint) || - (0x2260 <= codePoint && codePoint <= 0x2261) || - (0x2264 <= codePoint && codePoint <= 0x2267) || - (0x226A <= codePoint && codePoint <= 0x226B) || - (0x226E <= codePoint && codePoint <= 0x226F) || - (0x2282 <= codePoint && codePoint <= 0x2283) || - (0x2286 <= codePoint && codePoint <= 0x2287) || - (0x2295 == codePoint) || - (0x2299 == codePoint) || - (0x22A5 == codePoint) || - (0x22BF == codePoint) || - (0x2312 == codePoint) || - (0x2460 <= codePoint && codePoint <= 0x24E9) || - (0x24EB <= codePoint && codePoint <= 0x254B) || - (0x2550 <= codePoint && codePoint <= 0x2573) || - (0x2580 <= codePoint && codePoint <= 0x258F) || - (0x2592 <= codePoint && codePoint <= 0x2595) || - (0x25A0 <= codePoint && codePoint <= 0x25A1) || - (0x25A3 <= codePoint && codePoint <= 0x25A9) || - (0x25B2 <= codePoint && codePoint <= 0x25B3) || - (0x25B6 <= codePoint && codePoint <= 0x25B7) || - (0x25BC <= codePoint && codePoint <= 0x25BD) || - (0x25C0 <= codePoint && codePoint <= 0x25C1) || - (0x25C6 <= codePoint && codePoint <= 0x25C8) || - (0x25CB == codePoint) || - (0x25CE <= codePoint && codePoint <= 0x25D1) || - (0x25E2 <= codePoint && codePoint <= 0x25E5) || - (0x25EF == codePoint) || - (0x2605 <= codePoint && codePoint <= 0x2606) || - (0x2609 == codePoint) || - (0x260E <= codePoint && codePoint <= 0x260F) || - (0x2614 <= codePoint && codePoint <= 0x2615) || - (0x261C == codePoint) || - (0x261E == codePoint) || - (0x2640 == codePoint) || - (0x2642 == codePoint) || - (0x2660 <= codePoint && codePoint <= 0x2661) || - (0x2663 <= codePoint && codePoint <= 0x2665) || - (0x2667 <= codePoint && codePoint <= 0x266A) || - (0x266C <= codePoint && codePoint <= 0x266D) || - (0x266F == codePoint) || - (0x269E <= codePoint && codePoint <= 0x269F) || - (0x26BE <= codePoint && codePoint <= 0x26BF) || - (0x26C4 <= codePoint && codePoint <= 0x26CD) || - (0x26CF <= codePoint && codePoint <= 0x26E1) || - (0x26E3 == codePoint) || - (0x26E8 <= codePoint && codePoint <= 0x26FF) || - (0x273D == codePoint) || - (0x2757 == codePoint) || - (0x2776 <= codePoint && codePoint <= 0x277F) || - (0x2B55 <= codePoint && codePoint <= 0x2B59) || - (0x3248 <= codePoint && codePoint <= 0x324F) || - (0xE000 <= codePoint && codePoint <= 0xF8FF) || - (0xFE00 <= codePoint && codePoint <= 0xFE0F) || - (0xFFFD == codePoint) || - (0x1F100 <= codePoint && codePoint <= 0x1F10A) || - (0x1F110 <= codePoint && codePoint <= 0x1F12D) || - (0x1F130 <= codePoint && codePoint <= 0x1F169) || - (0x1F170 <= codePoint && codePoint <= 0x1F19A) || - (0xE0100 <= codePoint && codePoint <= 0xE01EF) || - (0xF0000 <= codePoint && codePoint <= 0xFFFFD) || - (0x100000 <= codePoint && codePoint <= 0x10FFFD)) { - return 'A'; - } - return 'N'; -}; -eaw.characterLength = function(character) { - var code = this.eastAsianWidth(character); - if (code == 'F' || code == 'W' || code == 'A') { - return 2; - } else { - return 1; - } -}; -function stringToArray(string) { - return string.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g) || []; -} -eaw.length = function(string) { - var characters = stringToArray(string); - var len = 0; - for (var i = 0; i < characters.length; i++) { - len = len + this.characterLength(characters[i]); - } - return len; -}; -eaw.slice = function(text, start, end) { - textLen = eaw.length(text); - start = start ? start : 0; - end = end ? end : 1; - if (start < 0) { - start = textLen + start; - } - if (end < 0) { - end = textLen + end; - } - var result = ''; - var eawLen = 0; - var chars = stringToArray(text); - for (var i = 0; i < chars.length; i++) { - var char = chars[i]; - var charLen = eaw.length(char); - if (eawLen >= start - (charLen == 2 ? 1 : 0)) { - if (eawLen + charLen <= end) { - result += char; - } else { - break; - } - } - eawLen += charLen; - } - return result; -}; -}(eastasianwidth)); + var eaw = {}; + { + module.exports = eaw; + } + eaw.eastAsianWidth = function(character) { + var x = character.charCodeAt(0); + var y = (character.length == 2) ? character.charCodeAt(1) : 0; + var codePoint = x; + if ((0xD800 <= x && x <= 0xDBFF) && (0xDC00 <= y && y <= 0xDFFF)) { + x &= 0x3FF; + y &= 0x3FF; + codePoint = (x << 10) | y; + codePoint += 0x10000; + } + if ((0x3000 == codePoint) || + (0xFF01 <= codePoint && codePoint <= 0xFF60) || + (0xFFE0 <= codePoint && codePoint <= 0xFFE6)) { + return 'F'; + } + if ((0x20A9 == codePoint) || + (0xFF61 <= codePoint && codePoint <= 0xFFBE) || + (0xFFC2 <= codePoint && codePoint <= 0xFFC7) || + (0xFFCA <= codePoint && codePoint <= 0xFFCF) || + (0xFFD2 <= codePoint && codePoint <= 0xFFD7) || + (0xFFDA <= codePoint && codePoint <= 0xFFDC) || + (0xFFE8 <= codePoint && codePoint <= 0xFFEE)) { + return 'H'; + } + if ((0x1100 <= codePoint && codePoint <= 0x115F) || + (0x11A3 <= codePoint && codePoint <= 0x11A7) || + (0x11FA <= codePoint && codePoint <= 0x11FF) || + (0x2329 <= codePoint && codePoint <= 0x232A) || + (0x2E80 <= codePoint && codePoint <= 0x2E99) || + (0x2E9B <= codePoint && codePoint <= 0x2EF3) || + (0x2F00 <= codePoint && codePoint <= 0x2FD5) || + (0x2FF0 <= codePoint && codePoint <= 0x2FFB) || + (0x3001 <= codePoint && codePoint <= 0x303E) || + (0x3041 <= codePoint && codePoint <= 0x3096) || + (0x3099 <= codePoint && codePoint <= 0x30FF) || + (0x3105 <= codePoint && codePoint <= 0x312D) || + (0x3131 <= codePoint && codePoint <= 0x318E) || + (0x3190 <= codePoint && codePoint <= 0x31BA) || + (0x31C0 <= codePoint && codePoint <= 0x31E3) || + (0x31F0 <= codePoint && codePoint <= 0x321E) || + (0x3220 <= codePoint && codePoint <= 0x3247) || + (0x3250 <= codePoint && codePoint <= 0x32FE) || + (0x3300 <= codePoint && codePoint <= 0x4DBF) || + (0x4E00 <= codePoint && codePoint <= 0xA48C) || + (0xA490 <= codePoint && codePoint <= 0xA4C6) || + (0xA960 <= codePoint && codePoint <= 0xA97C) || + (0xAC00 <= codePoint && codePoint <= 0xD7A3) || + (0xD7B0 <= codePoint && codePoint <= 0xD7C6) || + (0xD7CB <= codePoint && codePoint <= 0xD7FB) || + (0xF900 <= codePoint && codePoint <= 0xFAFF) || + (0xFE10 <= codePoint && codePoint <= 0xFE19) || + (0xFE30 <= codePoint && codePoint <= 0xFE52) || + (0xFE54 <= codePoint && codePoint <= 0xFE66) || + (0xFE68 <= codePoint && codePoint <= 0xFE6B) || + (0x1B000 <= codePoint && codePoint <= 0x1B001) || + (0x1F200 <= codePoint && codePoint <= 0x1F202) || + (0x1F210 <= codePoint && codePoint <= 0x1F23A) || + (0x1F240 <= codePoint && codePoint <= 0x1F248) || + (0x1F250 <= codePoint && codePoint <= 0x1F251) || + (0x20000 <= codePoint && codePoint <= 0x2F73F) || + (0x2B740 <= codePoint && codePoint <= 0x2FFFD) || + (0x30000 <= codePoint && codePoint <= 0x3FFFD)) { + return 'W'; + } + if ((0x0020 <= codePoint && codePoint <= 0x007E) || + (0x00A2 <= codePoint && codePoint <= 0x00A3) || + (0x00A5 <= codePoint && codePoint <= 0x00A6) || + (0x00AC == codePoint) || + (0x00AF == codePoint) || + (0x27E6 <= codePoint && codePoint <= 0x27ED) || + (0x2985 <= codePoint && codePoint <= 0x2986)) { + return 'Na'; + } + if ((0x00A1 == codePoint) || + (0x00A4 == codePoint) || + (0x00A7 <= codePoint && codePoint <= 0x00A8) || + (0x00AA == codePoint) || + (0x00AD <= codePoint && codePoint <= 0x00AE) || + (0x00B0 <= codePoint && codePoint <= 0x00B4) || + (0x00B6 <= codePoint && codePoint <= 0x00BA) || + (0x00BC <= codePoint && codePoint <= 0x00BF) || + (0x00C6 == codePoint) || + (0x00D0 == codePoint) || + (0x00D7 <= codePoint && codePoint <= 0x00D8) || + (0x00DE <= codePoint && codePoint <= 0x00E1) || + (0x00E6 == codePoint) || + (0x00E8 <= codePoint && codePoint <= 0x00EA) || + (0x00EC <= codePoint && codePoint <= 0x00ED) || + (0x00F0 == codePoint) || + (0x00F2 <= codePoint && codePoint <= 0x00F3) || + (0x00F7 <= codePoint && codePoint <= 0x00FA) || + (0x00FC == codePoint) || + (0x00FE == codePoint) || + (0x0101 == codePoint) || + (0x0111 == codePoint) || + (0x0113 == codePoint) || + (0x011B == codePoint) || + (0x0126 <= codePoint && codePoint <= 0x0127) || + (0x012B == codePoint) || + (0x0131 <= codePoint && codePoint <= 0x0133) || + (0x0138 == codePoint) || + (0x013F <= codePoint && codePoint <= 0x0142) || + (0x0144 == codePoint) || + (0x0148 <= codePoint && codePoint <= 0x014B) || + (0x014D == codePoint) || + (0x0152 <= codePoint && codePoint <= 0x0153) || + (0x0166 <= codePoint && codePoint <= 0x0167) || + (0x016B == codePoint) || + (0x01CE == codePoint) || + (0x01D0 == codePoint) || + (0x01D2 == codePoint) || + (0x01D4 == codePoint) || + (0x01D6 == codePoint) || + (0x01D8 == codePoint) || + (0x01DA == codePoint) || + (0x01DC == codePoint) || + (0x0251 == codePoint) || + (0x0261 == codePoint) || + (0x02C4 == codePoint) || + (0x02C7 == codePoint) || + (0x02C9 <= codePoint && codePoint <= 0x02CB) || + (0x02CD == codePoint) || + (0x02D0 == codePoint) || + (0x02D8 <= codePoint && codePoint <= 0x02DB) || + (0x02DD == codePoint) || + (0x02DF == codePoint) || + (0x0300 <= codePoint && codePoint <= 0x036F) || + (0x0391 <= codePoint && codePoint <= 0x03A1) || + (0x03A3 <= codePoint && codePoint <= 0x03A9) || + (0x03B1 <= codePoint && codePoint <= 0x03C1) || + (0x03C3 <= codePoint && codePoint <= 0x03C9) || + (0x0401 == codePoint) || + (0x0410 <= codePoint && codePoint <= 0x044F) || + (0x0451 == codePoint) || + (0x2010 == codePoint) || + (0x2013 <= codePoint && codePoint <= 0x2016) || + (0x2018 <= codePoint && codePoint <= 0x2019) || + (0x201C <= codePoint && codePoint <= 0x201D) || + (0x2020 <= codePoint && codePoint <= 0x2022) || + (0x2024 <= codePoint && codePoint <= 0x2027) || + (0x2030 == codePoint) || + (0x2032 <= codePoint && codePoint <= 0x2033) || + (0x2035 == codePoint) || + (0x203B == codePoint) || + (0x203E == codePoint) || + (0x2074 == codePoint) || + (0x207F == codePoint) || + (0x2081 <= codePoint && codePoint <= 0x2084) || + (0x20AC == codePoint) || + (0x2103 == codePoint) || + (0x2105 == codePoint) || + (0x2109 == codePoint) || + (0x2113 == codePoint) || + (0x2116 == codePoint) || + (0x2121 <= codePoint && codePoint <= 0x2122) || + (0x2126 == codePoint) || + (0x212B == codePoint) || + (0x2153 <= codePoint && codePoint <= 0x2154) || + (0x215B <= codePoint && codePoint <= 0x215E) || + (0x2160 <= codePoint && codePoint <= 0x216B) || + (0x2170 <= codePoint && codePoint <= 0x2179) || + (0x2189 == codePoint) || + (0x2190 <= codePoint && codePoint <= 0x2199) || + (0x21B8 <= codePoint && codePoint <= 0x21B9) || + (0x21D2 == codePoint) || + (0x21D4 == codePoint) || + (0x21E7 == codePoint) || + (0x2200 == codePoint) || + (0x2202 <= codePoint && codePoint <= 0x2203) || + (0x2207 <= codePoint && codePoint <= 0x2208) || + (0x220B == codePoint) || + (0x220F == codePoint) || + (0x2211 == codePoint) || + (0x2215 == codePoint) || + (0x221A == codePoint) || + (0x221D <= codePoint && codePoint <= 0x2220) || + (0x2223 == codePoint) || + (0x2225 == codePoint) || + (0x2227 <= codePoint && codePoint <= 0x222C) || + (0x222E == codePoint) || + (0x2234 <= codePoint && codePoint <= 0x2237) || + (0x223C <= codePoint && codePoint <= 0x223D) || + (0x2248 == codePoint) || + (0x224C == codePoint) || + (0x2252 == codePoint) || + (0x2260 <= codePoint && codePoint <= 0x2261) || + (0x2264 <= codePoint && codePoint <= 0x2267) || + (0x226A <= codePoint && codePoint <= 0x226B) || + (0x226E <= codePoint && codePoint <= 0x226F) || + (0x2282 <= codePoint && codePoint <= 0x2283) || + (0x2286 <= codePoint && codePoint <= 0x2287) || + (0x2295 == codePoint) || + (0x2299 == codePoint) || + (0x22A5 == codePoint) || + (0x22BF == codePoint) || + (0x2312 == codePoint) || + (0x2460 <= codePoint && codePoint <= 0x24E9) || + (0x24EB <= codePoint && codePoint <= 0x254B) || + (0x2550 <= codePoint && codePoint <= 0x2573) || + (0x2580 <= codePoint && codePoint <= 0x258F) || + (0x2592 <= codePoint && codePoint <= 0x2595) || + (0x25A0 <= codePoint && codePoint <= 0x25A1) || + (0x25A3 <= codePoint && codePoint <= 0x25A9) || + (0x25B2 <= codePoint && codePoint <= 0x25B3) || + (0x25B6 <= codePoint && codePoint <= 0x25B7) || + (0x25BC <= codePoint && codePoint <= 0x25BD) || + (0x25C0 <= codePoint && codePoint <= 0x25C1) || + (0x25C6 <= codePoint && codePoint <= 0x25C8) || + (0x25CB == codePoint) || + (0x25CE <= codePoint && codePoint <= 0x25D1) || + (0x25E2 <= codePoint && codePoint <= 0x25E5) || + (0x25EF == codePoint) || + (0x2605 <= codePoint && codePoint <= 0x2606) || + (0x2609 == codePoint) || + (0x260E <= codePoint && codePoint <= 0x260F) || + (0x2614 <= codePoint && codePoint <= 0x2615) || + (0x261C == codePoint) || + (0x261E == codePoint) || + (0x2640 == codePoint) || + (0x2642 == codePoint) || + (0x2660 <= codePoint && codePoint <= 0x2661) || + (0x2663 <= codePoint && codePoint <= 0x2665) || + (0x2667 <= codePoint && codePoint <= 0x266A) || + (0x266C <= codePoint && codePoint <= 0x266D) || + (0x266F == codePoint) || + (0x269E <= codePoint && codePoint <= 0x269F) || + (0x26BE <= codePoint && codePoint <= 0x26BF) || + (0x26C4 <= codePoint && codePoint <= 0x26CD) || + (0x26CF <= codePoint && codePoint <= 0x26E1) || + (0x26E3 == codePoint) || + (0x26E8 <= codePoint && codePoint <= 0x26FF) || + (0x273D == codePoint) || + (0x2757 == codePoint) || + (0x2776 <= codePoint && codePoint <= 0x277F) || + (0x2B55 <= codePoint && codePoint <= 0x2B59) || + (0x3248 <= codePoint && codePoint <= 0x324F) || + (0xE000 <= codePoint && codePoint <= 0xF8FF) || + (0xFE00 <= codePoint && codePoint <= 0xFE0F) || + (0xFFFD == codePoint) || + (0x1F100 <= codePoint && codePoint <= 0x1F10A) || + (0x1F110 <= codePoint && codePoint <= 0x1F12D) || + (0x1F130 <= codePoint && codePoint <= 0x1F169) || + (0x1F170 <= codePoint && codePoint <= 0x1F19A) || + (0xE0100 <= codePoint && codePoint <= 0xE01EF) || + (0xF0000 <= codePoint && codePoint <= 0xFFFFD) || + (0x100000 <= codePoint && codePoint <= 0x10FFFD)) { + return 'A'; + } + return 'N'; + }; + eaw.characterLength = function(character) { + var code = this.eastAsianWidth(character); + if (code == 'F' || code == 'W' || code == 'A') { + return 2; + } else { + return 1; + } + }; + function stringToArray(string) { + return string.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g) || []; + } + eaw.length = function(string) { + var characters = stringToArray(string); + var len = 0; + for (var i = 0; i < characters.length; i++) { + len = len + this.characterLength(characters[i]); + } + return len; + }; + eaw.slice = function(text, start, end) { + textLen = eaw.length(text); + start = start ? start : 0; + end = end ? end : 1; + if (start < 0) { + start = textLen + start; + } + if (end < 0) { + end = textLen + end; + } + var result = ''; + var eawLen = 0; + var chars = stringToArray(text); + for (var i = 0; i < chars.length; i++) { + var char = chars[i]; + var charLen = eaw.length(char); + if (eawLen >= start - (charLen == 2 ? 1 : 0)) { + if (eawLen + charLen <= end) { + result += char; + } else { + break; + } + } + eawLen += charLen; + } + return result; + }; +} (eastasianwidth)); var eastAsianWidth = eastasianwidth.exports; var emojiRegex = function () { @@ -21446,11 +21311,11 @@ const supportsColor = { const color = supportsColor.stderr.hasBasic; +const platform = process$1.platform; + const own = {}.hasOwnProperty; const chars = - process.platform === 'win32' - ? {error: '×', warning: '‼'} - : {error: '✖', warning: '⚠'}; + platform === 'win32' ? {error: '×', warning: '‼'} : {error: '✖', warning: '⚠'}; const labels = { true: 'error', false: 'warning', diff --git a/tools/lint-md/package-lock.json b/tools/lint-md/package-lock.json index 4246a50ba64c93..4eb8d4bd7ae28d 100644 --- a/tools/lint-md/package-lock.json +++ b/tools/lint-md/package-lock.json @@ -13,19 +13,19 @@ "remark-stringify": "^10.0.2", "to-vfile": "^7.2.3", "unified": "^10.1.2", - "vfile-reporter": "^7.0.3" + "vfile-reporter": "^7.0.4" }, "devDependencies": { - "@rollup/plugin-commonjs": "^21.0.2", - "@rollup/plugin-node-resolve": "^13.1.3", - "rollup": "^2.70.1", + "@rollup/plugin-commonjs": "^22.0.1", + "@rollup/plugin-node-resolve": "^13.3.0", + "rollup": "^2.77.0", "rollup-plugin-cleanup": "^3.2.1" } }, "node_modules/@rollup/plugin-commonjs": { - "version": "21.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.2.tgz", - "integrity": "sha512-d/OmjaLVO4j/aQX69bwpWPpbvI3TJkQuxoAk7BH8ew1PyoMBLTOuvJTjzG8oEoW7drIIqB0KCJtfFLu/2GClWg==", + "version": "22.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.1.tgz", + "integrity": "sha512-dGfEZvdjDHObBiP5IvwTKMVeq/tBZGMBHZFMdIV1ClMM/YoWS34xrHFGfag9SN2ZtMgNZRFruqvxZQEa70O6nQ==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -37,22 +37,22 @@ "resolve": "^1.17.0" }, "engines": { - "node": ">= 8.0.0" + "node": ">= 12.0.0" }, "peerDependencies": { - "rollup": "^2.38.3" + "rollup": "^2.68.0" } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.3.tgz", - "integrity": "sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", + "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", "deepmerge": "^4.2.2", + "is-builtin-module": "^3.1.0", "is-module": "^1.0.0", "resolve": "^1.19.0" }, @@ -129,9 +129,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", + "version": "18.0.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.5.tgz", + "integrity": "sha512-En7tneq+j0qAiVwysBD79y86MT3ModuoIJbe7JXp+sb5UAjInSShmK3nXXMioBzfF7rXC12hv12d4IyCVwN4dA==", "dev": true }, "node_modules/@types/resolve": { @@ -195,9 +195,9 @@ } }, "node_modules/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, "engines": { "node": ">=6" @@ -216,9 +216,9 @@ } }, "node_modules/character-entities": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz", - "integrity": "sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -227,18 +227,18 @@ "node_modules/co": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", - "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=" + "integrity": "sha512-CQsjCRiNObI8AtTsNIBDRMQ4oMR83CzEswHYahClvul7gKk+lDQiOKv+5qh7LQWf5sh6jkZNispz/QlsZxyNgA==" }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/debug": { @@ -258,9 +258,9 @@ } }, "node_modules/decode-named-character-reference": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz", - "integrity": "sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", "dependencies": { "character-entities": "^2.0.0" }, @@ -279,17 +279,17 @@ } }, "node_modules/dequal": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", - "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "engines": { "node": ">=6" } }, "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "engines": { "node": ">=0.3.1" } @@ -329,7 +329,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "node_modules/fsevents": { @@ -353,15 +353,15 @@ "dev": true }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -387,7 +387,7 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { "once": "^1.3.0", @@ -422,10 +422,22 @@ "node": ">=4" } }, + "node_modules/is-builtin-module": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", + "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -437,13 +449,13 @@ "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, "node_modules/is-plain-obj": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", - "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "engines": { "node": ">=12" }, @@ -486,9 +498,9 @@ } }, "node_modules/kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "engines": { "node": ">=6" } @@ -544,13 +556,13 @@ } }, "node_modules/mdast-util-find-and-replace": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.1.0.tgz", - "integrity": "sha512-1w1jbqAd13oU78QPBf5223+xB+37ecNtQ1JElq2feWols5oEYAl+SgNDnOZipe7NfLemoEt362yUS15/wip4mw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", + "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", "dependencies": { "escape-string-regexp": "^5.0.0", "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" + "unist-util-visit-parents": "^5.0.0" }, "funding": { "type": "opencollective", @@ -680,9 +692,9 @@ } }, "node_modules/mdast-util-mdx-expression": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.2.0.tgz", - "integrity": "sha512-wb36oi09XxqO9RVqgfD+xo8a7xaNgS+01+k3v0GKW0X0bYbeBmUZz22Z/IJ8SuphVlG+DNgNo9VoEaUJ3PKfJQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.2.1.tgz", + "integrity": "sha512-BtQwyalaq6jRjx0pagtuAwGrmzL1yInrfA4EJv7GOoiPOUbR4gr6h65I+G3WTh1/Cag2Eda4ip400Ch6CFmWiA==", "dependencies": { "@types/estree-jsx": "^0.0.1", "@types/hast": "^2.0.0", @@ -825,9 +837,9 @@ } }, "node_modules/micromark-extension-gfm-footnote": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.3.tgz", - "integrity": "sha512-bn62pC5y39rIo2g1RqZk1NhF7T7cJLuJlbevunQz41U0iPVCdVOFASe5/L1kke+DFKSgfCRhv24+o42cZ1+ADw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", + "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", "dependencies": { "micromark-core-commonmark": "^1.0.0", "micromark-factory-space": "^1.0.0", @@ -835,6 +847,7 @@ "micromark-util-normalize-identifier": "^1.0.0", "micromark-util-sanitize-uri": "^1.0.0", "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", "uvu": "^0.5.0" }, "funding": { @@ -1137,9 +1150,9 @@ ] }, "node_modules/micromark-util-html-tag-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz", - "integrity": "sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", + "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==", "funding": [ { "type": "GitHub Sponsors", @@ -1286,7 +1299,7 @@ "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { "wrappy": "1" @@ -1295,7 +1308,7 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2179,12 +2192,12 @@ } }, "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "dependencies": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -2196,9 +2209,9 @@ } }, "node_modules/rollup": { - "version": "2.70.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", - "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.0.tgz", + "integrity": "sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2253,9 +2266,9 @@ } }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2278,7 +2291,7 @@ "node_modules/sliced": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==" }, "node_modules/sourcemap-codec": { "version": "1.4.8", @@ -2317,9 +2330,9 @@ } }, "node_modules/supports-color": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", - "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", + "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==", "engines": { "node": ">=12" }, @@ -2425,6 +2438,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unified-message-control/node_modules/unist-util-visit-parents": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", + "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-generated": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", @@ -2444,9 +2470,9 @@ } }, "node_modules/unist-util-position": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.2.tgz", - "integrity": "sha512-Y6+plxR41dOLbyyqVDLuGWgXDmxdXslCSRYQkSDagBnOT9oFsQH0J8FzhirSklUEe0xZTT0WDnAE1gXPaDFljA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", + "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", "dependencies": { "@types/unist": "^2.0.0" }, @@ -2482,19 +2508,6 @@ } }, "node_modules/unist-util-visit-parents": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", - "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", @@ -2508,9 +2521,9 @@ } }, "node_modules/uvu": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.3.tgz", - "integrity": "sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", "dependencies": { "dequal": "^2.0.0", "diff": "^5.0.0", @@ -2525,9 +2538,9 @@ } }, "node_modules/vfile": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.2.tgz", - "integrity": "sha512-w0PLIugRY3Crkgw89TeMvHCzqCs/zpreR31hl4D92y6SOE07+bfJe+dK5Q2akwS+i/c801kzjoOr9gMcTe6IAA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.4.tgz", + "integrity": "sha512-KI+7cnst03KbEyN1+JE504zF5bJBZa+J+CrevLeyIMq0aPU681I2rQ5p4PlnQ6exFtWiUrg26QUdFMnAKR6PIw==", "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", @@ -2566,9 +2579,9 @@ } }, "node_modules/vfile-reporter": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.3.tgz", - "integrity": "sha512-q+ruTWxFHbow359TDqoNJn5THdwRDeV+XUOtzdT/OESgaGw05CjL68ImlbzRzqS5xL62Y1IaIWb8x+RbaNjayA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.4.tgz", + "integrity": "sha512-4cWalUnLrEnbeUQ+hARG5YZtaHieVK3Jp4iG5HslttkVl+MHunSGNAIrODOTLbtjWsNZJRMCkL66AhvZAYuJ9A==", "dependencies": { "@types/supports-color": "^8.0.0", "string-width": "^5.0.0", @@ -2609,7 +2622,7 @@ "node_modules/wrapped": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz", - "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=", + "integrity": "sha512-ZTKuqiTu3WXtL72UKCCnQLRax2IScKH7oQ+mvjbpvNE+NJxIWIemDqqM2GxNr4N16NCjOYpIgpin5pStM7kM5g==", "dependencies": { "co": "3.1.0", "sliced": "^1.0.1" @@ -2618,7 +2631,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "node_modules/yallist": { @@ -2638,9 +2651,9 @@ }, "dependencies": { "@rollup/plugin-commonjs": { - "version": "21.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.2.tgz", - "integrity": "sha512-d/OmjaLVO4j/aQX69bwpWPpbvI3TJkQuxoAk7BH8ew1PyoMBLTOuvJTjzG8oEoW7drIIqB0KCJtfFLu/2GClWg==", + "version": "22.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.1.tgz", + "integrity": "sha512-dGfEZvdjDHObBiP5IvwTKMVeq/tBZGMBHZFMdIV1ClMM/YoWS34xrHFGfag9SN2ZtMgNZRFruqvxZQEa70O6nQ==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -2653,15 +2666,15 @@ } }, "@rollup/plugin-node-resolve": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.3.tgz", - "integrity": "sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", + "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", "deepmerge": "^4.2.2", + "is-builtin-module": "^3.1.0", "is-module": "^1.0.0", "resolve": "^1.19.0" } @@ -2728,9 +2741,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", + "version": "18.0.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.5.tgz", + "integrity": "sha512-En7tneq+j0qAiVwysBD79y86MT3ModuoIJbe7JXp+sb5UAjInSShmK3nXXMioBzfF7rXC12hv12d4IyCVwN4dA==", "dev": true }, "@types/resolve": { @@ -2784,9 +2797,9 @@ } }, "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true }, "ccount": { @@ -2795,25 +2808,25 @@ "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" }, "character-entities": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz", - "integrity": "sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" }, "co": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", - "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=" + "integrity": "sha512-CQsjCRiNObI8AtTsNIBDRMQ4oMR83CzEswHYahClvul7gKk+lDQiOKv+5qh7LQWf5sh6jkZNispz/QlsZxyNgA==" }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "debug": { @@ -2825,9 +2838,9 @@ } }, "decode-named-character-reference": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.1.tgz", - "integrity": "sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", "requires": { "character-entities": "^2.0.0" } @@ -2839,14 +2852,14 @@ "dev": true }, "dequal": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", - "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" }, "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==" }, "eastasianwidth": { "version": "0.2.0", @@ -2877,7 +2890,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "fsevents": { @@ -2894,15 +2907,15 @@ "dev": true }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -2919,7 +2932,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -2937,10 +2950,19 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" }, + "is-builtin-module": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", + "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "dev": true, + "requires": { + "builtin-modules": "^3.0.0" + } + }, "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "requires": { "has": "^1.0.3" @@ -2949,13 +2971,13 @@ "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, "is-plain-obj": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", - "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" }, "is-reference": { "version": "1.2.1", @@ -2986,9 +3008,9 @@ } }, "kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==" + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" }, "longest-streak": { "version": "3.0.1", @@ -3026,13 +3048,13 @@ } }, "mdast-util-find-and-replace": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.1.0.tgz", - "integrity": "sha512-1w1jbqAd13oU78QPBf5223+xB+37ecNtQ1JElq2feWols5oEYAl+SgNDnOZipe7NfLemoEt362yUS15/wip4mw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", + "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", "requires": { "escape-string-regexp": "^5.0.0", "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" + "unist-util-visit-parents": "^5.0.0" } }, "mdast-util-from-markdown": { @@ -3126,9 +3148,9 @@ } }, "mdast-util-mdx-expression": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.2.0.tgz", - "integrity": "sha512-wb36oi09XxqO9RVqgfD+xo8a7xaNgS+01+k3v0GKW0X0bYbeBmUZz22Z/IJ8SuphVlG+DNgNo9VoEaUJ3PKfJQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.2.1.tgz", + "integrity": "sha512-BtQwyalaq6jRjx0pagtuAwGrmzL1yInrfA4EJv7GOoiPOUbR4gr6h65I+G3WTh1/Cag2Eda4ip400Ch6CFmWiA==", "requires": { "@types/estree-jsx": "^0.0.1", "@types/hast": "^2.0.0", @@ -3231,9 +3253,9 @@ } }, "micromark-extension-gfm-footnote": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.3.tgz", - "integrity": "sha512-bn62pC5y39rIo2g1RqZk1NhF7T7cJLuJlbevunQz41U0iPVCdVOFASe5/L1kke+DFKSgfCRhv24+o42cZ1+ADw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", + "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", "requires": { "micromark-core-commonmark": "^1.0.0", "micromark-factory-space": "^1.0.0", @@ -3241,6 +3263,7 @@ "micromark-util-normalize-identifier": "^1.0.0", "micromark-util-sanitize-uri": "^1.0.0", "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", "uvu": "^0.5.0" } }, @@ -3403,9 +3426,9 @@ "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==" }, "micromark-util-html-tag-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz", - "integrity": "sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", + "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==" }, "micromark-util-normalize-identifier": { "version": "1.0.0", @@ -3476,7 +3499,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -3485,7 +3508,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-parse": { @@ -4165,20 +4188,20 @@ } }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "requires": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } }, "rollup": { - "version": "2.70.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", - "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.0.tgz", + "integrity": "sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -4220,9 +4243,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "requires": { "lru-cache": "^6.0.0" } @@ -4236,7 +4259,7 @@ "sliced": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==" }, "sourcemap-codec": { "version": "1.4.8", @@ -4263,9 +4286,9 @@ } }, "supports-color": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", - "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==" + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", + "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==" }, "supports-preserve-symlinks-flag": { "version": "1.0.0", @@ -4334,6 +4357,15 @@ "unist-util-is": "^5.0.0", "unist-util-visit-parents": "^4.0.0" } + }, + "unist-util-visit-parents": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", + "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } } } }, @@ -4348,9 +4380,9 @@ "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" }, "unist-util-position": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.2.tgz", - "integrity": "sha512-Y6+plxR41dOLbyyqVDLuGWgXDmxdXslCSRYQkSDagBnOT9oFsQH0J8FzhirSklUEe0xZTT0WDnAE1gXPaDFljA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", + "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", "requires": { "@types/unist": "^2.0.0" } @@ -4371,32 +4403,21 @@ "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", "unist-util-visit-parents": "^5.0.0" - }, - "dependencies": { - "unist-util-visit-parents": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", - "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - } } }, "unist-util-visit-parents": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", - "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", + "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", "requires": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" } }, "uvu": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.3.tgz", - "integrity": "sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", "requires": { "dequal": "^2.0.0", "diff": "^5.0.0", @@ -4405,9 +4426,9 @@ } }, "vfile": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.2.tgz", - "integrity": "sha512-w0PLIugRY3Crkgw89TeMvHCzqCs/zpreR31hl4D92y6SOE07+bfJe+dK5Q2akwS+i/c801kzjoOr9gMcTe6IAA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.4.tgz", + "integrity": "sha512-KI+7cnst03KbEyN1+JE504zF5bJBZa+J+CrevLeyIMq0aPU681I2rQ5p4PlnQ6exFtWiUrg26QUdFMnAKR6PIw==", "requires": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", @@ -4434,9 +4455,9 @@ } }, "vfile-reporter": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.3.tgz", - "integrity": "sha512-q+ruTWxFHbow359TDqoNJn5THdwRDeV+XUOtzdT/OESgaGw05CjL68ImlbzRzqS5xL62Y1IaIWb8x+RbaNjayA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.4.tgz", + "integrity": "sha512-4cWalUnLrEnbeUQ+hARG5YZtaHieVK3Jp4iG5HslttkVl+MHunSGNAIrODOTLbtjWsNZJRMCkL66AhvZAYuJ9A==", "requires": { "@types/supports-color": "^8.0.0", "string-width": "^5.0.0", @@ -4465,7 +4486,7 @@ "wrapped": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz", - "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=", + "integrity": "sha512-ZTKuqiTu3WXtL72UKCCnQLRax2IScKH7oQ+mvjbpvNE+NJxIWIemDqqM2GxNr4N16NCjOYpIgpin5pStM7kM5g==", "requires": { "co": "3.1.0", "sliced": "^1.0.1" @@ -4474,7 +4495,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "yallist": { diff --git a/tools/lint-md/package.json b/tools/lint-md/package.json index 88923351e830bd..32d6cf4c8ec2f1 100644 --- a/tools/lint-md/package.json +++ b/tools/lint-md/package.json @@ -11,12 +11,12 @@ "remark-stringify": "^10.0.2", "to-vfile": "^7.2.3", "unified": "^10.1.2", - "vfile-reporter": "^7.0.3" + "vfile-reporter": "^7.0.4" }, "devDependencies": { - "@rollup/plugin-commonjs": "^21.0.2", - "@rollup/plugin-node-resolve": "^13.1.3", - "rollup": "^2.70.1", + "@rollup/plugin-commonjs": "^22.0.1", + "@rollup/plugin-node-resolve": "^13.3.0", + "rollup": "^2.77.0", "rollup-plugin-cleanup": "^3.2.1" } } diff --git a/tools/lint-pr-url.mjs b/tools/lint-pr-url.mjs index 0ebbfdd079671d..c32473ccb89d84 100755 --- a/tools/lint-pr-url.mjs +++ b/tools/lint-pr-url.mjs @@ -1,7 +1,7 @@ #!/usr/bin/env node // Usage: -// git diff upstream/master...HEAD -G"pr-url:" -- "*.md" | \ +// git diff upstream/main...HEAD -G"pr-url:" -- "*.md" | \ // ./tools/lint-pr-url.mjs import process from 'node:process'; diff --git a/tools/lint-sh.js b/tools/lint-sh.mjs similarity index 96% rename from tools/lint-sh.js rename to tools/lint-sh.mjs index 378cb38af28744..681c7cd5665dce 100755 --- a/tools/lint-sh.js +++ b/tools/lint-sh.mjs @@ -1,9 +1,9 @@ #!/usr/bin/env node -'use strict'; -const { execSync, spawn } = require('child_process'); -const { promises: fs, readdirSync, statSync } = require('fs'); -const { extname, join, relative, resolve } = require('path'); +import { execSync, spawn } from 'node:child_process'; +import { promises as fs, readdirSync, statSync } from 'node:fs'; +import { extname, join, relative, resolve } from 'node:path'; +import process from 'node:process'; const FIX_MODE_ENABLED = process.argv.includes('--fix'); const USE_NPX = process.argv.includes('--from-npx'); diff --git a/tools/macos-firewall.sh b/tools/macos-firewall.sh index b6050aaf3450bd..4dfa849bc3ace8 100755 --- a/tools/macos-firewall.sh +++ b/tools/macos-firewall.sh @@ -3,16 +3,16 @@ # popups asking to accept incoming network connections when # running tests. SFW="/usr/libexec/ApplicationFirewall/socketfilterfw" -TOOLSDIR="`dirname \"$0\"`" -TOOLSDIR="`( cd \"$TOOLSDIR\" && pwd) `" -ROOTDIR="`( cd \"$TOOLSDIR/..\" && pwd) `" +TOOLSDIR="$(dirname "$0")" +TOOLSDIR="$(cd "$TOOLSDIR" && pwd)" +ROOTDIR="$(cd "$TOOLSDIR/.." && pwd)" OUTDIR="$TOOLSDIR/../out" # Using cd and pwd here so that the path used for socketfilterfw does not # contain a '..', which seems to cause the rules to be incorrectly added # and they are not removed when this script is re-run. Instead the new # rules are simply appended. By using pwd we can get the full path # without '..' and things work as expected. -OUTDIR="`( cd \"$OUTDIR\" && pwd) `" +OUTDIR="$(cd "$OUTDIR" && pwd)" NODE_RELEASE="$OUTDIR/Release/node" NODE_DEBUG="$OUTDIR/Debug/node" NODE_LINK="$ROOTDIR/node" diff --git a/tools/msvs/find_python.cmd b/tools/msvs/find_python.cmd index 06e41fe06cd6ab..00fb6c9afbf1fc 100644 --- a/tools/msvs/find_python.cmd +++ b/tools/msvs/find_python.cmd @@ -46,7 +46,7 @@ exit /b 1 :found-python echo Python found in %p%\python.exe -call :check-python %p%\python.exe +call :check-python "%p%\python.exe" if errorlevel 1 goto :no-python endlocal ^ & set "pt=%p%" ^ @@ -57,7 +57,7 @@ set "need_path_ext=" exit /b 0 :check-python -%~1 -V +%1 -V :: 9009 means error file not found if %errorlevel% equ 9009 ( echo Not an executable Python program diff --git a/tools/msvs/install_tools/install_tools.bat b/tools/msvs/install_tools/install_tools.bat index 46ba93c8b890c9..18f92a981003f2 100644 --- a/tools/msvs/install_tools/install_tools.bat +++ b/tools/msvs/install_tools/install_tools.bat @@ -13,7 +13,7 @@ echo This script will install Python and the Visual Studio Build Tools, necessar echo to compile Node.js native modules. Note that Chocolatey and required Windows echo updates will also be installed. echo. -echo This will require about 3 Gb of free disk space, plus any space necessary to +echo This will require about 3 GiB of free disk space, plus any space necessary to echo install Windows updates. This will take a while to run. echo. echo Please close all open programs for the duration of the installation. If the diff --git a/tools/node_modules/eslint/bin/eslint.js b/tools/node_modules/eslint/bin/eslint.js index d00a870c089cf7..0f76fc92e1f35d 100755 --- a/tools/node_modules/eslint/bin/eslint.js +++ b/tools/node_modules/eslint/bin/eslint.js @@ -69,7 +69,7 @@ function getErrorMessage(error) { // Lazy loading because this is used only if an error happened. const util = require("util"); - // Foolproof -- thirdparty module might throw non-object. + // Foolproof -- third-party module might throw non-object. if (typeof error !== "object" || error === null) { return String(error); } 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 92b8755783fb79..fdc66198809c91 100644 --- a/tools/node_modules/eslint/lib/cli-engine/cli-engine.js +++ b/tools/node_modules/eslint/lib/cli-engine/cli-engine.js @@ -56,6 +56,7 @@ const validFixTypes = new Set(["directive", "problem", "suggestion", "layout"]); /** @typedef {import("../shared/types").Plugin} Plugin */ /** @typedef {import("../shared/types").RuleConf} RuleConf */ /** @typedef {import("../shared/types").Rule} Rule */ +/** @typedef {import("../shared/types").FormatterFunction} FormatterFunction */ /** @typedef {ReturnType} ConfigArray */ /** @typedef {ReturnType} ExtractedConfig */ @@ -365,9 +366,7 @@ function *iterateRuleDeprecationWarnings(usedConfigArrays) { // Flatten used configs. /** @type {ExtractedConfig[]} */ - const configs = [].concat( - ...usedConfigArrays.map(getUsedExtractedConfigs) - ); + const configs = usedConfigArrays.flatMap(getUsedExtractedConfigs); // Traverse rule configs. for (const config of configs) { @@ -1002,7 +1001,7 @@ class CLIEngine { * @param {string} [format] The name of the format to load or the path to a * custom formatter. * @throws {any} As may be thrown by requiring of formatter - * @returns {(Function|null)} The formatter function or null if the `format` is not a string. + * @returns {(FormatterFunction|null)} The formatter function or null if the `format` is not a string. */ getFormatter(format) { @@ -1022,7 +1021,7 @@ class CLIEngine { let formatterPath; // if there's a slash, then it's a file (TODO: this check seems dubious for scoped npm packages) - if (!namespace && normalizedFormatName.indexOf("/") > -1) { + if (!namespace && normalizedFormatName.includes("/")) { formatterPath = path.resolve(cwd, normalizedFormatName); } else { try { 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 b636599711772a..6e40bbe16b7f03 100644 --- a/tools/node_modules/eslint/lib/cli-engine/formatters/html.js +++ b/tools/node_modules/eslint/lib/cli-engine/formatters/html.js @@ -151,7 +151,7 @@ function pageTemplate(it) { -`.trimLeft(); +`.trimStart(); } /** @@ -222,7 +222,7 @@ function messageTemplate(it) { ${ruleId ? ruleId : ""} -`.trimLeft(); +`.trimStart(); } /** @@ -280,7 +280,7 @@ function resultTemplate(it) { ${encodeHTML(summary)} -`.trimLeft(); +`.trimStart(); } /** diff --git a/tools/node_modules/eslint/lib/cli-engine/lint-result-cache.js b/tools/node_modules/eslint/lib/cli-engine/lint-result-cache.js index 3304d429debe85..e36eb74badaad7 100644 --- a/tools/node_modules/eslint/lib/cli-engine/lint-result-cache.js +++ b/tools/node_modules/eslint/lib/cli-engine/lint-result-cache.js @@ -36,7 +36,7 @@ const invalidCacheStrategyErrorMessage = `Cache strategy must be one of: ${valid */ function isValidCacheStrategy(cacheStrategy) { return ( - validCacheStrategies.indexOf(cacheStrategy) !== -1 + validCacheStrategies.includes(cacheStrategy) ); } diff --git a/tools/node_modules/eslint/lib/eslint/eslint.js b/tools/node_modules/eslint/lib/eslint/eslint.js index 1e5a8f8b13fae7..9a3bd66e487479 100644 --- a/tools/node_modules/eslint/lib/eslint/eslint.js +++ b/tools/node_modules/eslint/lib/eslint/eslint.js @@ -35,10 +35,11 @@ const { version } = require("../../package.json"); /** @typedef {import("../shared/types").SuppressedLintMessage} SuppressedLintMessage */ /** @typedef {import("../shared/types").Plugin} Plugin */ /** @typedef {import("../shared/types").Rule} Rule */ +/** @typedef {import("../shared/types").LintResult} LintResult */ /** * The main formatter object. - * @typedef Formatter + * @typedef LoadedFormatter * @property {function(LintResult[]): string | Promise} format format function. */ @@ -74,22 +75,6 @@ const { version } = require("../../package.json"); * @property {Object} definition The plugin definition. */ -/** - * A linting result. - * @typedef {Object} LintResult - * @property {string} filePath The path to the file that was linted. - * @property {LintMessage[]} messages All of the messages for the result. - * @property {SuppressedLintMessage[]} suppressedMessages All of the suppressed messages for the result. - * @property {number} errorCount Number of errors for the result. - * @property {number} fatalErrorCount Number of fatal errors for the result. - * @property {number} warningCount Number of warnings for the result. - * @property {number} fixableErrorCount Number of fixable errors for the result. - * @property {number} fixableWarningCount Number of fixable warnings for the result. - * @property {string} [source] The source code of the file that was linted. - * @property {string} [output] The source code of the file that was linted, with as many fixes applied as possible. - * @property {DeprecatedRuleInfo[]} usedDeprecatedRules The list of used deprecated rules. - */ - /** * Private members for the `ESLint` instance. * @typedef {Object} ESLintPrivateMembers @@ -119,9 +104,9 @@ function isNonEmptyString(x) { } /** - * Check if a given value is an array of non-empty stringss or not. + * Check if a given value is an array of non-empty strings or not. * @param {any} x The value to check. - * @returns {boolean} `true` if `x` is an array of non-empty stringss. + * @returns {boolean} `true` if `x` is an array of non-empty strings. */ function isArrayOfNonEmptyString(x) { return Array.isArray(x) && x.every(isNonEmptyString); @@ -614,12 +599,12 @@ class ESLint { * The following values are allowed: * - `undefined` ... Load `stylish` builtin formatter. * - A builtin formatter name ... Load the builtin formatter. - * - A thirdparty formatter name: + * - A third-party formatter name: * - `foo` → `eslint-formatter-foo` * - `@foo` → `@foo/eslint-formatter` * - `@foo/bar` → `@foo/eslint-formatter-bar` * - A file path ... Load the file. - * @returns {Promise} A promise resolving to the formatter object. + * @returns {Promise} A promise resolving to the formatter object. * This promise will be rejected if the given formatter was not found or not * a function. */ @@ -639,7 +624,7 @@ class ESLint { /** * The main formatter method. - * @param {LintResults[]} results The lint results to format. + * @param {LintResult[]} results The lint results to format. * @returns {string | Promise} The formatted lint results. */ format(results) { diff --git a/tools/node_modules/eslint/lib/linter/apply-disable-directives.js b/tools/node_modules/eslint/lib/linter/apply-disable-directives.js index f8e4aeedb290ef..459c8591196561 100644 --- a/tools/node_modules/eslint/lib/linter/apply-disable-directives.js +++ b/tools/node_modules/eslint/lib/linter/apply-disable-directives.js @@ -66,7 +66,7 @@ function createIndividualDirectivesRemoval(directives, commentToken) { const listText = commentToken.value .slice(listStartOffset) // remove directive name and all whitespace before the list .split(/\s-{2,}\s/u)[0] // remove `-- comment`, if it exists - .trimRight(); // remove all whitespace after the list + .trimEnd(); // remove all whitespace after the list /* * We can assume that `listText` contains multiple elements. 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 fad559a2ad23e1..eeedd27524b026 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 @@ -100,7 +100,7 @@ class CodePathSegment { * @returns {boolean} `true` if the segment is coming from the end of a loop. */ isLoopedPrevSegment(segment) { - return this.internal.loopedPrevSegments.indexOf(segment) !== -1; + return this.internal.loopedPrevSegments.includes(segment); } /** 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 118f70a170756b..426da8d492eaf5 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 @@ -33,7 +33,7 @@ function addToReturnedOrThrown(dest, others, all, segments) { const segment = segments[i]; dest.push(segment); - if (others.indexOf(segment) === -1) { + if (!others.includes(segment)) { all.push(segment); } } 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 0e666277094355..a028ca69481c09 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 @@ -212,7 +212,7 @@ class CodePath { } // Reset the flag of skipping if all branches have been skipped. - if (skippedSegment && segment.prevSegments.indexOf(skippedSegment) !== -1) { + if (skippedSegment && segment.prevSegments.includes(skippedSegment)) { skippedSegment = null; } visited[segment.id] = true; diff --git a/tools/node_modules/eslint/lib/linter/linter.js b/tools/node_modules/eslint/lib/linter/linter.js index 5304a612a5952a..29d78da3969e2a 100644 --- a/tools/node_modules/eslint/lib/linter/linter.js +++ b/tools/node_modules/eslint/lib/linter/linter.js @@ -1101,7 +1101,7 @@ function runRules(sourceCode, configuredRules, ruleMapper, parserName, languageO ) ); - const ruleListeners = createRuleListeners(rule, ruleContext); + const ruleListeners = timing.enabled ? timing.time(ruleId, createRuleListeners)(rule, ruleContext) : createRuleListeners(rule, ruleContext); /** * Include `ruleId` in error logs @@ -1119,6 +1119,10 @@ function runRules(sourceCode, configuredRules, ruleMapper, parserName, languageO }; } + if (typeof ruleListeners === "undefined" || ruleListeners === null) { + throw new Error(`The create() function for rule '${ruleId}' did not return an object.`); + } + // add all the selectors from the rule as listeners Object.keys(ruleListeners).forEach(selector => { const ruleListener = timing.enabled @@ -1506,7 +1510,31 @@ class Linter { options.filterCodeBlock || (blockFilename => blockFilename.endsWith(".js")); const originalExtname = path.extname(filename); - const messageLists = preprocess(text, filenameToExpose).map((block, i) => { + + let blocks; + + try { + blocks = preprocess(text, filenameToExpose); + } catch (ex) { + + // If the message includes a leading line number, strip it: + const message = `Preprocessing error: ${ex.message.replace(/^line \d+:/iu, "").trim()}`; + + debug("%s\n%s", message, ex.stack); + + return [ + { + ruleId: null, + fatal: true, + severity: 2, + message, + line: ex.lineNumber, + column: ex.column + } + ]; + } + + const messageLists = blocks.map((block, i) => { debug("A code block was found: %o", block.filename || "(unnamed)"); // Keep the legacy behavior. @@ -1784,13 +1812,36 @@ class Linter { const physicalFilename = options.physicalFilename || filenameToExpose; const text = ensureText(textOrSourceCode); const preprocess = options.preprocess || (rawText => [rawText]); - const postprocess = options.postprocess || (messagesList => messagesList.flat()); const filterCodeBlock = options.filterCodeBlock || (blockFilename => blockFilename.endsWith(".js")); const originalExtname = path.extname(filename); - const messageLists = preprocess(text, filenameToExpose).map((block, i) => { + + let blocks; + + try { + blocks = preprocess(text, filenameToExpose); + } catch (ex) { + + // If the message includes a leading line number, strip it: + const message = `Preprocessing error: ${ex.message.replace(/^line \d+:/iu, "").trim()}`; + + debug("%s\n%s", message, ex.stack); + + return [ + { + ruleId: null, + fatal: true, + severity: 2, + message, + line: ex.lineNumber, + column: ex.column + } + ]; + } + + const messageLists = blocks.map((block, i) => { debug("A code block was found: %o", block.filename || "(unnamed)"); // Keep the legacy behavior. diff --git a/tools/node_modules/eslint/lib/linter/timing.js b/tools/node_modules/eslint/lib/linter/timing.js index c9ab01ec649067..914cbf05591441 100644 --- a/tools/node_modules/eslint/lib/linter/timing.js +++ b/tools/node_modules/eslint/lib/linter/timing.js @@ -138,10 +138,11 @@ module.exports = (function() { return function(...args) { let t = process.hrtime(); + const result = fn(...args); - fn(...args); t = process.hrtime(t); data[key] += t[0] * 1e3 + t[1] / 1e6; + return result; }; } diff --git a/tools/node_modules/eslint/lib/rules/accessor-pairs.js b/tools/node_modules/eslint/lib/rules/accessor-pairs.js index 2fcf1535290352..112d0ddb8c1176 100644 --- a/tools/node_modules/eslint/lib/rules/accessor-pairs.js +++ b/tools/node_modules/eslint/lib/rules/accessor-pairs.js @@ -140,7 +140,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce getter and setter pairs in objects and classes", + description: "Enforce getter and setter pairs in objects and classes", recommended: false, url: "https://eslint.org/docs/rules/accessor-pairs" }, @@ -299,12 +299,12 @@ module.exports = { * @private */ function checkPropertyDescriptor(node) { - const namesToCheck = node.properties + const namesToCheck = new Set(node.properties .filter(p => p.type === "Property" && p.kind === "init" && !p.computed) - .map(({ key }) => key.name); + .map(({ key }) => key.name)); - const hasGetter = namesToCheck.includes("get"); - const hasSetter = namesToCheck.includes("set"); + const hasGetter = namesToCheck.has("get"); + const hasSetter = namesToCheck.has("set"); if (checkSetWithoutGet && hasSetter && !hasGetter) { report(node, "missingGetter"); 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 0beb138c4e2e79..deeae818fb54de 100644 --- a/tools/node_modules/eslint/lib/rules/array-bracket-newline.js +++ b/tools/node_modules/eslint/lib/rules/array-bracket-newline.js @@ -17,7 +17,7 @@ module.exports = { type: "layout", docs: { - description: "enforce linebreaks after opening and before closing array brackets", + description: "Enforce linebreaks after opening and before closing array brackets", recommended: false, url: "https://eslint.org/docs/rules/array-bracket-newline" }, 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 e4912ec17a1a12..5e7cea9ba587c2 100644 --- a/tools/node_modules/eslint/lib/rules/array-bracket-spacing.js +++ b/tools/node_modules/eslint/lib/rules/array-bracket-spacing.js @@ -16,7 +16,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing inside array brackets", + description: "Enforce consistent spacing inside array brackets", recommended: false, url: "https://eslint.org/docs/rules/array-bracket-spacing" }, 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 fba414c1ef4f50..eb5aa474b27c62 100644 --- a/tools/node_modules/eslint/lib/rules/array-callback-return.js +++ b/tools/node_modules/eslint/lib/rules/array-callback-return.js @@ -139,7 +139,7 @@ module.exports = { type: "problem", docs: { - description: "enforce `return` statements in callbacks of array methods", + description: "Enforce `return` statements in callbacks of array methods", recommended: false, url: "https://eslint.org/docs/rules/array-callback-return" }, 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 77f5fc9e9ce72f..c762755bd8383c 100644 --- a/tools/node_modules/eslint/lib/rules/array-element-newline.js +++ b/tools/node_modules/eslint/lib/rules/array-element-newline.js @@ -17,7 +17,7 @@ module.exports = { type: "layout", docs: { - description: "enforce line breaks after each array element", + description: "Enforce line breaks after each array element", recommended: false, url: "https://eslint.org/docs/rules/array-element-newline" }, diff --git a/tools/node_modules/eslint/lib/rules/arrow-body-style.js b/tools/node_modules/eslint/lib/rules/arrow-body-style.js index 7a141b0d788a15..8bb9e8c4ffa841 100644 --- a/tools/node_modules/eslint/lib/rules/arrow-body-style.js +++ b/tools/node_modules/eslint/lib/rules/arrow-body-style.js @@ -20,7 +20,7 @@ module.exports = { type: "suggestion", docs: { - description: "require braces around arrow function bodies", + description: "Require braces around arrow function bodies", recommended: false, url: "https://eslint.org/docs/rules/arrow-body-style" }, diff --git a/tools/node_modules/eslint/lib/rules/arrow-parens.js b/tools/node_modules/eslint/lib/rules/arrow-parens.js index 779ab6fe9c9c2a..05012fc37b7f81 100644 --- a/tools/node_modules/eslint/lib/rules/arrow-parens.js +++ b/tools/node_modules/eslint/lib/rules/arrow-parens.js @@ -33,7 +33,7 @@ module.exports = { type: "layout", docs: { - description: "require parentheses around arrow function arguments", + description: "Require parentheses around arrow function arguments", recommended: false, url: "https://eslint.org/docs/rules/arrow-parens" }, diff --git a/tools/node_modules/eslint/lib/rules/arrow-spacing.js b/tools/node_modules/eslint/lib/rules/arrow-spacing.js index 9fdcdd58ba70ad..2dcc175da06b16 100644 --- a/tools/node_modules/eslint/lib/rules/arrow-spacing.js +++ b/tools/node_modules/eslint/lib/rules/arrow-spacing.js @@ -20,7 +20,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing before and after the arrow in arrow functions", + description: "Enforce consistent spacing before and after the arrow in arrow functions", recommended: false, url: "https://eslint.org/docs/rules/arrow-spacing" }, 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 3a277863ef2e70..731d06d0f3b2a8 100644 --- a/tools/node_modules/eslint/lib/rules/block-scoped-var.js +++ b/tools/node_modules/eslint/lib/rules/block-scoped-var.js @@ -14,7 +14,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce the use of variables within the scope they are defined", + description: "Enforce the use of variables within the scope they are defined", recommended: false, url: "https://eslint.org/docs/rules/block-scoped-var" }, diff --git a/tools/node_modules/eslint/lib/rules/block-spacing.js b/tools/node_modules/eslint/lib/rules/block-spacing.js index 53303a9b0041cb..9fbf1594c47d8b 100644 --- a/tools/node_modules/eslint/lib/rules/block-spacing.js +++ b/tools/node_modules/eslint/lib/rules/block-spacing.js @@ -17,7 +17,7 @@ module.exports = { type: "layout", docs: { - description: "disallow or enforce spaces inside of blocks after opening block and before closing block", + description: "Disallow or enforce spaces inside of blocks after opening block and before closing block", recommended: false, url: "https://eslint.org/docs/rules/block-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/brace-style.js b/tools/node_modules/eslint/lib/rules/brace-style.js index f4adb9490ebdf6..52d89201b9e087 100644 --- a/tools/node_modules/eslint/lib/rules/brace-style.js +++ b/tools/node_modules/eslint/lib/rules/brace-style.js @@ -17,7 +17,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent brace style for blocks", + description: "Enforce consistent brace style for blocks", recommended: false, url: "https://eslint.org/docs/rules/brace-style" }, diff --git a/tools/node_modules/eslint/lib/rules/callback-return.js b/tools/node_modules/eslint/lib/rules/callback-return.js index 532faee45187ca..fe5b649b582f5f 100644 --- a/tools/node_modules/eslint/lib/rules/callback-return.js +++ b/tools/node_modules/eslint/lib/rules/callback-return.js @@ -19,7 +19,7 @@ module.exports = { type: "suggestion", docs: { - description: "require `return` statements after callbacks", + description: "Require `return` statements after callbacks", recommended: false, url: "https://eslint.org/docs/rules/callback-return" }, @@ -53,7 +53,7 @@ module.exports = { if (!node.parent) { return null; } - if (types.indexOf(node.parent.type) === -1) { + if (!types.includes(node.parent.type)) { return findClosestParentOfType(node.parent, types); } return node.parent; @@ -87,7 +87,7 @@ module.exports = { * @returns {boolean} Whether or not this function matches our callback name. */ function isCallback(node) { - return containsOnlyIdentifiers(node.callee) && callbacks.indexOf(sourceCode.getText(node.callee)) > -1; + return containsOnlyIdentifiers(node.callee) && callbacks.includes(sourceCode.getText(node.callee)); } /** diff --git a/tools/node_modules/eslint/lib/rules/camelcase.js b/tools/node_modules/eslint/lib/rules/camelcase.js index e4761466902e5c..ee1b6bf598d31e 100644 --- a/tools/node_modules/eslint/lib/rules/camelcase.js +++ b/tools/node_modules/eslint/lib/rules/camelcase.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce camelcase naming convention", + description: "Enforce camelcase naming convention", recommended: false, url: "https://eslint.org/docs/rules/camelcase" }, diff --git a/tools/node_modules/eslint/lib/rules/capitalized-comments.js b/tools/node_modules/eslint/lib/rules/capitalized-comments.js index 6ea87a70a814ed..ba798d428580b2 100644 --- a/tools/node_modules/eslint/lib/rules/capitalized-comments.js +++ b/tools/node_modules/eslint/lib/rules/capitalized-comments.js @@ -105,7 +105,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce or disallow capitalization of the first letter of a comment", + description: "Enforce or disallow capitalization of the first letter of a comment", recommended: false, url: "https://eslint.org/docs/rules/capitalized-comments" }, @@ -185,7 +185,7 @@ module.exports = { return Boolean( previousTokenOrComment && - ["Block", "Line"].indexOf(previousTokenOrComment.type) !== -1 + ["Block", "Line"].includes(previousTokenOrComment.type) ); } 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 1af6084ed8be78..05a915867c3728 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 @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce that class methods utilize `this`", + description: "Enforce that class methods utilize `this`", recommended: false, url: "https://eslint.org/docs/rules/class-methods-use-this" }, diff --git a/tools/node_modules/eslint/lib/rules/comma-dangle.js b/tools/node_modules/eslint/lib/rules/comma-dangle.js index 063e1cb697f408..9518da90e9e5ec 100644 --- a/tools/node_modules/eslint/lib/rules/comma-dangle.js +++ b/tools/node_modules/eslint/lib/rules/comma-dangle.js @@ -76,7 +76,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow trailing commas", + description: "Require or disallow trailing commas", recommended: false, url: "https://eslint.org/docs/rules/comma-dangle" }, diff --git a/tools/node_modules/eslint/lib/rules/comma-spacing.js b/tools/node_modules/eslint/lib/rules/comma-spacing.js index 23a51752814983..76d5dc46b9c8f1 100644 --- a/tools/node_modules/eslint/lib/rules/comma-spacing.js +++ b/tools/node_modules/eslint/lib/rules/comma-spacing.js @@ -16,7 +16,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing before and after commas", + description: "Enforce consistent spacing before and after commas", recommended: false, url: "https://eslint.org/docs/rules/comma-spacing" }, @@ -103,38 +103,6 @@ module.exports = { }); } - /** - * Validates the spacing around a comma token. - * @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. - * @param {Token|ASTNode} reportItem The item to use when reporting an error. - * @returns {void} - * @private - */ - function validateCommaItemSpacing(tokens, reportItem) { - if (tokens.left && astUtils.isTokenOnSameLine(tokens.left, tokens.comma) && - (options.before !== sourceCode.isSpaceBetweenTokens(tokens.left, tokens.comma)) - ) { - report(reportItem, "before", tokens.left); - } - - if (tokens.right && astUtils.isClosingParenToken(tokens.right)) { - return; - } - - if (tokens.right && !options.after && tokens.right.type === "Line") { - return; - } - - if (tokens.right && astUtils.isTokenOnSameLine(tokens.comma, tokens.right) && - (options.after !== sourceCode.isSpaceBetweenTokens(tokens.comma, tokens.right)) - ) { - report(reportItem, "after", tokens.right); - } - } - /** * Adds null elements of the given ArrayExpression or ArrayPattern node to the ignore list. * @param {ASTNode} node An ArrayExpression or ArrayPattern node. @@ -172,18 +140,44 @@ module.exports = { return; } - if (token && token.type === "JSXText") { - return; - } - const previousToken = tokensAndComments[i - 1]; const nextToken = tokensAndComments[i + 1]; - validateCommaItemSpacing({ - comma: token, - left: astUtils.isCommaToken(previousToken) || commaTokensToIgnore.includes(token) ? null : previousToken, - right: astUtils.isCommaToken(nextToken) ? null : nextToken - }, token); + if ( + previousToken && + !astUtils.isCommaToken(previousToken) && // ignore spacing between two commas + + /* + * `commaTokensToIgnore` are ending commas of `null` elements (array holes/elisions). + * In addition to spacing between two commas, this can also ignore: + * + * - Spacing after `[` (controlled by array-bracket-spacing) + * Example: [ , ] + * ^ + * - Spacing after a comment (for backwards compatibility, this was possibly unintentional) + * Example: [a, /* * / ,] + * ^ + */ + !commaTokensToIgnore.includes(token) && + + astUtils.isTokenOnSameLine(previousToken, token) && + options.before !== sourceCode.isSpaceBetweenTokens(previousToken, token) + ) { + report(token, "before", previousToken); + } + + if ( + nextToken && + !astUtils.isCommaToken(nextToken) && // ignore spacing between two commas + !astUtils.isClosingParenToken(nextToken) && // controlled by space-in-parens + !astUtils.isClosingBracketToken(nextToken) && // controlled by array-bracket-spacing + !astUtils.isClosingBraceToken(nextToken) && // controlled by object-curly-spacing + !(!options.after && nextToken.type === "Line") && // special case, allow space before line comment + astUtils.isTokenOnSameLine(token, nextToken) && + options.after !== sourceCode.isSpaceBetweenTokens(token, nextToken) + ) { + report(token, "after", nextToken); + } }); }, ArrayExpression: addNullElementsToIgnoreList, diff --git a/tools/node_modules/eslint/lib/rules/comma-style.js b/tools/node_modules/eslint/lib/rules/comma-style.js index cbcbe3ae15b0b1..4969f59d7ef981 100644 --- a/tools/node_modules/eslint/lib/rules/comma-style.js +++ b/tools/node_modules/eslint/lib/rules/comma-style.js @@ -17,7 +17,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent comma style", + description: "Enforce consistent comma style", recommended: false, url: "https://eslint.org/docs/rules/comma-style" }, diff --git a/tools/node_modules/eslint/lib/rules/complexity.js b/tools/node_modules/eslint/lib/rules/complexity.js index b2355556af9d24..541d3a9bb9ad3c 100644 --- a/tools/node_modules/eslint/lib/rules/complexity.js +++ b/tools/node_modules/eslint/lib/rules/complexity.js @@ -23,7 +23,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce a maximum cyclomatic complexity allowed in a program", + description: "Enforce a maximum cyclomatic complexity allowed in a program", recommended: false, url: "https://eslint.org/docs/rules/complexity" }, 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 4850a8b651ffe9..3d033fc00bd9ac 100644 --- a/tools/node_modules/eslint/lib/rules/computed-property-spacing.js +++ b/tools/node_modules/eslint/lib/rules/computed-property-spacing.js @@ -16,7 +16,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing inside computed property brackets", + description: "Enforce consistent spacing inside computed property brackets", recommended: false, url: "https://eslint.org/docs/rules/computed-property-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/consistent-return.js b/tools/node_modules/eslint/lib/rules/consistent-return.js index fffb4357b65b7a..f0072974d11de6 100644 --- a/tools/node_modules/eslint/lib/rules/consistent-return.js +++ b/tools/node_modules/eslint/lib/rules/consistent-return.js @@ -46,7 +46,7 @@ module.exports = { type: "suggestion", docs: { - description: "require `return` statements to either always or never specify values", + description: "Require `return` statements to either always or never specify values", recommended: false, url: "https://eslint.org/docs/rules/consistent-return" }, diff --git a/tools/node_modules/eslint/lib/rules/consistent-this.js b/tools/node_modules/eslint/lib/rules/consistent-this.js index a613f992d7a222..947873b8e4a75b 100644 --- a/tools/node_modules/eslint/lib/rules/consistent-this.js +++ b/tools/node_modules/eslint/lib/rules/consistent-this.js @@ -14,7 +14,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce consistent naming when capturing the current execution context", + description: "Enforce consistent naming when capturing the current execution context", recommended: false, url: "https://eslint.org/docs/rules/consistent-this" }, @@ -65,7 +65,7 @@ module.exports = { function checkAssignment(node, name, value) { const isThis = value.type === "ThisExpression"; - if (aliases.indexOf(name) !== -1) { + if (aliases.includes(name)) { if (!isThis || node.operator && node.operator !== "=") { reportBadAssignment(node, name); } diff --git a/tools/node_modules/eslint/lib/rules/constructor-super.js b/tools/node_modules/eslint/lib/rules/constructor-super.js index defdb91d69dba3..fff658471b0dce 100644 --- a/tools/node_modules/eslint/lib/rules/constructor-super.js +++ b/tools/node_modules/eslint/lib/rules/constructor-super.js @@ -122,7 +122,7 @@ module.exports = { type: "problem", docs: { - description: "require `super()` calls in constructors", + description: "Require `super()` calls in constructors", recommended: true, url: "https://eslint.org/docs/rules/constructor-super" }, diff --git a/tools/node_modules/eslint/lib/rules/curly.js b/tools/node_modules/eslint/lib/rules/curly.js index 29e73953da6f46..7b5d140fe66b44 100644 --- a/tools/node_modules/eslint/lib/rules/curly.js +++ b/tools/node_modules/eslint/lib/rules/curly.js @@ -20,7 +20,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce consistent brace style for all control statements", + description: "Enforce consistent brace style for all control statements", recommended: false, url: "https://eslint.org/docs/rules/curly" }, diff --git a/tools/node_modules/eslint/lib/rules/default-case-last.js b/tools/node_modules/eslint/lib/rules/default-case-last.js index 34be2894e41047..313a0d8c904e23 100644 --- a/tools/node_modules/eslint/lib/rules/default-case-last.js +++ b/tools/node_modules/eslint/lib/rules/default-case-last.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce default clauses in switch statements to be last", + description: "Enforce default clauses in switch statements to be last", recommended: false, url: "https://eslint.org/docs/rules/default-case-last" }, diff --git a/tools/node_modules/eslint/lib/rules/default-case.js b/tools/node_modules/eslint/lib/rules/default-case.js index 6ce238529d069f..f28de1af906fb4 100644 --- a/tools/node_modules/eslint/lib/rules/default-case.js +++ b/tools/node_modules/eslint/lib/rules/default-case.js @@ -16,7 +16,7 @@ module.exports = { type: "suggestion", docs: { - description: "require `default` cases in `switch` statements", + description: "Require `default` cases in `switch` statements", recommended: false, url: "https://eslint.org/docs/rules/default-case" }, 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 ea12a2a558a05b..61df5f6d2eb6fc 100644 --- a/tools/node_modules/eslint/lib/rules/default-param-last.js +++ b/tools/node_modules/eslint/lib/rules/default-param-last.js @@ -11,7 +11,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce default parameters to be last", + description: "Enforce default parameters to be last", recommended: false, url: "https://eslint.org/docs/rules/default-param-last" }, diff --git a/tools/node_modules/eslint/lib/rules/dot-location.js b/tools/node_modules/eslint/lib/rules/dot-location.js index 9dea4f25cf7824..36b50b284cfe99 100644 --- a/tools/node_modules/eslint/lib/rules/dot-location.js +++ b/tools/node_modules/eslint/lib/rules/dot-location.js @@ -17,7 +17,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent newlines before and after dots", + description: "Enforce consistent newlines before and after dots", recommended: false, url: "https://eslint.org/docs/rules/dot-location" }, diff --git a/tools/node_modules/eslint/lib/rules/dot-notation.js b/tools/node_modules/eslint/lib/rules/dot-notation.js index 6f6b5166f76438..5f6e818cb49040 100644 --- a/tools/node_modules/eslint/lib/rules/dot-notation.js +++ b/tools/node_modules/eslint/lib/rules/dot-notation.js @@ -26,7 +26,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce dot notation whenever possible", + description: "Enforce dot notation whenever possible", recommended: false, url: "https://eslint.org/docs/rules/dot-notation" }, @@ -76,7 +76,7 @@ module.exports = { function checkComputedProperty(node, value) { if ( validIdentifier.test(value) && - (allowKeywords || keywords.indexOf(String(value)) === -1) && + (allowKeywords || !keywords.includes(String(value))) && !(allowPattern && allowPattern.test(value)) ) { const formattedValue = node.property.type === "Literal" ? JSON.stringify(value) : `\`${value}\``; @@ -142,7 +142,7 @@ module.exports = { !allowKeywords && !node.computed && node.property.type === "Identifier" && - keywords.indexOf(String(node.property.name)) !== -1 + keywords.includes(String(node.property.name)) ) { context.report({ node: node.property, diff --git a/tools/node_modules/eslint/lib/rules/eol-last.js b/tools/node_modules/eslint/lib/rules/eol-last.js index 393b934125ea8c..fb87971fc73358 100644 --- a/tools/node_modules/eslint/lib/rules/eol-last.js +++ b/tools/node_modules/eslint/lib/rules/eol-last.js @@ -14,7 +14,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow newline at the end of files", + description: "Require or disallow newline at the end of files", recommended: false, url: "https://eslint.org/docs/rules/eol-last" }, diff --git a/tools/node_modules/eslint/lib/rules/eqeqeq.js b/tools/node_modules/eslint/lib/rules/eqeqeq.js index b5d784dad6e61b..b3990e214d0214 100644 --- a/tools/node_modules/eslint/lib/rules/eqeqeq.js +++ b/tools/node_modules/eslint/lib/rules/eqeqeq.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "require the use of `===` and `!==`", + description: "Require the use of `===` and `!==`", recommended: false, url: "https://eslint.org/docs/rules/eqeqeq" }, diff --git a/tools/node_modules/eslint/lib/rules/for-direction.js b/tools/node_modules/eslint/lib/rules/for-direction.js index d3d825a5766132..7df3d7e4802819 100644 --- a/tools/node_modules/eslint/lib/rules/for-direction.js +++ b/tools/node_modules/eslint/lib/rules/for-direction.js @@ -15,7 +15,7 @@ module.exports = { type: "problem", docs: { - description: "enforce \"for\" loop update clause moving the counter in the right direction.", + description: "Enforce \"for\" loop update clause moving the counter in the right direction.", recommended: true, url: "https://eslint.org/docs/rules/for-direction" }, diff --git a/tools/node_modules/eslint/lib/rules/func-call-spacing.js b/tools/node_modules/eslint/lib/rules/func-call-spacing.js index 0391d99c76323e..fec6763a2cdf80 100644 --- a/tools/node_modules/eslint/lib/rules/func-call-spacing.js +++ b/tools/node_modules/eslint/lib/rules/func-call-spacing.js @@ -21,7 +21,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow spacing between function identifiers and their invocations", + description: "Require or disallow spacing between function identifiers and their invocations", recommended: false, url: "https://eslint.org/docs/rules/func-call-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/func-name-matching.js b/tools/node_modules/eslint/lib/rules/func-name-matching.js index 9cee5fe019ac0c..391b2a2783639e 100644 --- a/tools/node_modules/eslint/lib/rules/func-name-matching.js +++ b/tools/node_modules/eslint/lib/rules/func-name-matching.js @@ -74,7 +74,7 @@ module.exports = { type: "suggestion", docs: { - description: "require function names to match the name of the variable or property to which they are assigned", + description: "Require function names to match the name of the variable or property to which they are assigned", recommended: false, url: "https://eslint.org/docs/rules/func-name-matching" }, diff --git a/tools/node_modules/eslint/lib/rules/func-names.js b/tools/node_modules/eslint/lib/rules/func-names.js index c7b2072e177d34..ee4664592f267d 100644 --- a/tools/node_modules/eslint/lib/rules/func-names.js +++ b/tools/node_modules/eslint/lib/rules/func-names.js @@ -30,7 +30,7 @@ module.exports = { type: "suggestion", docs: { - description: "require or disallow named `function` expressions", + description: "Require or disallow named `function` expressions", recommended: false, url: "https://eslint.org/docs/rules/func-names" }, diff --git a/tools/node_modules/eslint/lib/rules/func-style.js b/tools/node_modules/eslint/lib/rules/func-style.js index f71574890c8916..0e1ba9fab0e782 100644 --- a/tools/node_modules/eslint/lib/rules/func-style.js +++ b/tools/node_modules/eslint/lib/rules/func-style.js @@ -14,7 +14,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce the consistent use of either `function` declarations or expressions", + description: "Enforce the consistent use of either `function` declarations or expressions", recommended: false, url: "https://eslint.org/docs/rules/func-style" }, 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 f3cfeee703aa53..46610914622d23 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 @@ -15,7 +15,7 @@ module.exports = { type: "layout", docs: { - description: "enforce line breaks between arguments of a function call", + description: "Enforce line breaks between arguments of a function call", recommended: false, url: "https://eslint.org/docs/rules/function-call-argument-newline" }, diff --git a/tools/node_modules/eslint/lib/rules/function-paren-newline.js b/tools/node_modules/eslint/lib/rules/function-paren-newline.js index 898e113ee8ecd8..e61d17be603226 100644 --- a/tools/node_modules/eslint/lib/rules/function-paren-newline.js +++ b/tools/node_modules/eslint/lib/rules/function-paren-newline.js @@ -20,7 +20,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent line breaks inside function parentheses", + description: "Enforce consistent line breaks inside function parentheses", recommended: false, url: "https://eslint.org/docs/rules/function-paren-newline" }, @@ -183,7 +183,7 @@ module.exports = { /** * Gets the left paren and right paren tokens of a node. * @param {ASTNode} node The node with parens - * @throws {TypeError} Unexecpted node type. + * @throws {TypeError} Unexpected node type. * @returns {Object} An object with keys `leftParen` for the left paren token, and `rightParen` for the right paren token. * Can also return `null` if an expression has no parens (e.g. a NewExpression with no arguments, or an ArrowFunctionExpression * with a single parameter) @@ -191,10 +191,13 @@ module.exports = { function getParenTokens(node) { switch (node.type) { case "NewExpression": - if (!node.arguments.length && !( - astUtils.isOpeningParenToken(sourceCode.getLastToken(node, { skip: 1 })) && - astUtils.isClosingParenToken(sourceCode.getLastToken(node)) - )) { + if (!node.arguments.length && + !( + astUtils.isOpeningParenToken(sourceCode.getLastToken(node, { skip: 1 })) && + astUtils.isClosingParenToken(sourceCode.getLastToken(node)) && + node.callee.range[1] < node.range[1] + ) + ) { // If the NewExpression does not have parens (e.g. `new Foo`), return null. return null; 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 28e81013fcb95e..d32b21fff5c54f 100644 --- a/tools/node_modules/eslint/lib/rules/generator-star-spacing.js +++ b/tools/node_modules/eslint/lib/rules/generator-star-spacing.js @@ -31,7 +31,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing around `*` operators in generator functions", + description: "Enforce consistent spacing around `*` operators in generator functions", recommended: false, url: "https://eslint.org/docs/rules/generator-star-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/getter-return.js b/tools/node_modules/eslint/lib/rules/getter-return.js index 03cfce2cf1abc9..5209ab1504bd48 100644 --- a/tools/node_modules/eslint/lib/rules/getter-return.js +++ b/tools/node_modules/eslint/lib/rules/getter-return.js @@ -35,7 +35,7 @@ module.exports = { type: "problem", docs: { - description: "enforce `return` statements in getters", + description: "Enforce `return` statements in getters", recommended: true, url: "https://eslint.org/docs/rules/getter-return" }, diff --git a/tools/node_modules/eslint/lib/rules/global-require.js b/tools/node_modules/eslint/lib/rules/global-require.js index f00ca9bf6dd6d8..77ce5d1082749c 100644 --- a/tools/node_modules/eslint/lib/rules/global-require.js +++ b/tools/node_modules/eslint/lib/rules/global-require.js @@ -6,7 +6,7 @@ "use strict"; -const ACCEPTABLE_PARENTS = [ +const ACCEPTABLE_PARENTS = new Set([ "AssignmentExpression", "VariableDeclarator", "MemberExpression", @@ -16,7 +16,7 @@ const ACCEPTABLE_PARENTS = [ "Program", "VariableDeclaration", "ChainExpression" -]; +]); /** * Finds the eslint-scope reference in the given scope. @@ -58,7 +58,7 @@ module.exports = { type: "suggestion", docs: { - description: "require `require()` calls to be placed at top-level module scope", + description: "Require `require()` calls to be placed at top-level module scope", recommended: false, url: "https://eslint.org/docs/rules/global-require" }, @@ -75,7 +75,7 @@ module.exports = { const currentScope = context.getScope(); if (node.callee.name === "require" && !isShadowed(currentScope, node.callee)) { - const isGoodRequire = context.getAncestors().every(parent => ACCEPTABLE_PARENTS.indexOf(parent.type) > -1); + const isGoodRequire = context.getAncestors().every(parent => ACCEPTABLE_PARENTS.has(parent.type)); if (!isGoodRequire) { context.report({ node, messageId: "unexpected" }); diff --git a/tools/node_modules/eslint/lib/rules/grouped-accessor-pairs.js b/tools/node_modules/eslint/lib/rules/grouped-accessor-pairs.js index 0fe6f91e4db0fa..21374be21011f8 100644 --- a/tools/node_modules/eslint/lib/rules/grouped-accessor-pairs.js +++ b/tools/node_modules/eslint/lib/rules/grouped-accessor-pairs.js @@ -96,7 +96,7 @@ module.exports = { type: "suggestion", docs: { - description: "require grouped accessor pairs in object literals and classes", + description: "Require grouped accessor pairs in object literals and classes", recommended: false, url: "https://eslint.org/docs/rules/grouped-accessor-pairs" }, diff --git a/tools/node_modules/eslint/lib/rules/guard-for-in.js b/tools/node_modules/eslint/lib/rules/guard-for-in.js index 1c52af7d4cde20..3b99143fe214d0 100644 --- a/tools/node_modules/eslint/lib/rules/guard-for-in.js +++ b/tools/node_modules/eslint/lib/rules/guard-for-in.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "require `for-in` loops to include an `if` statement", + description: "Require `for-in` loops to include an `if` statement", recommended: false, url: "https://eslint.org/docs/rules/guard-for-in" }, diff --git a/tools/node_modules/eslint/lib/rules/handle-callback-err.js b/tools/node_modules/eslint/lib/rules/handle-callback-err.js index f370407743a502..5189564b668357 100644 --- a/tools/node_modules/eslint/lib/rules/handle-callback-err.js +++ b/tools/node_modules/eslint/lib/rules/handle-callback-err.js @@ -20,7 +20,7 @@ module.exports = { type: "suggestion", docs: { - description: "require error handling in callbacks", + description: "Require error handling in callbacks", recommended: false, url: "https://eslint.org/docs/rules/handle-callback-err" }, diff --git a/tools/node_modules/eslint/lib/rules/id-blacklist.js b/tools/node_modules/eslint/lib/rules/id-blacklist.js index f7e04ae73765f9..5ea61e94f69f24 100644 --- a/tools/node_modules/eslint/lib/rules/id-blacklist.js +++ b/tools/node_modules/eslint/lib/rules/id-blacklist.js @@ -119,7 +119,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow specified identifiers", + description: "Disallow specified identifiers", recommended: false, url: "https://eslint.org/docs/rules/id-blacklist" }, diff --git a/tools/node_modules/eslint/lib/rules/id-denylist.js b/tools/node_modules/eslint/lib/rules/id-denylist.js index a0b1f416f46db4..fe0a0b50bd2c48 100644 --- a/tools/node_modules/eslint/lib/rules/id-denylist.js +++ b/tools/node_modules/eslint/lib/rules/id-denylist.js @@ -99,7 +99,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow specified identifiers", + description: "Disallow specified identifiers", recommended: false, url: "https://eslint.org/docs/rules/id-denylist" }, diff --git a/tools/node_modules/eslint/lib/rules/id-length.js b/tools/node_modules/eslint/lib/rules/id-length.js index 3701c66e347a72..99f833fc73b4df 100644 --- a/tools/node_modules/eslint/lib/rules/id-length.js +++ b/tools/node_modules/eslint/lib/rules/id-length.js @@ -16,7 +16,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce minimum and maximum identifier lengths", + description: "Enforce minimum and maximum identifier lengths", recommended: false, url: "https://eslint.org/docs/rules/id-length" }, diff --git a/tools/node_modules/eslint/lib/rules/id-match.js b/tools/node_modules/eslint/lib/rules/id-match.js index 8713a5f9f8ba54..ec87af18d5b767 100644 --- a/tools/node_modules/eslint/lib/rules/id-match.js +++ b/tools/node_modules/eslint/lib/rules/id-match.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "require identifiers to match a specified regular expression", + description: "Require identifiers to match a specified regular expression", recommended: false, url: "https://eslint.org/docs/rules/id-match" }, diff --git a/tools/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js b/tools/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js index 71b2437eef83bc..c765960267f7da 100644 --- a/tools/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js +++ b/tools/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js @@ -15,7 +15,7 @@ module.exports = { type: "layout", docs: { - description: "enforce the location of arrow function bodies", + description: "Enforce the location of arrow function bodies", recommended: false, url: "https://eslint.org/docs/rules/implicit-arrow-linebreak" }, diff --git a/tools/node_modules/eslint/lib/rules/indent-legacy.js b/tools/node_modules/eslint/lib/rules/indent-legacy.js index bd61f6f843121b..06de8c9a754f49 100644 --- a/tools/node_modules/eslint/lib/rules/indent-legacy.js +++ b/tools/node_modules/eslint/lib/rules/indent-legacy.js @@ -26,7 +26,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent indentation", + description: "Enforce consistent indentation", recommended: false, url: "https://eslint.org/docs/rules/indent-legacy" }, @@ -753,7 +753,7 @@ module.exports = { if (typeof options.CallExpression.arguments === "number") { nodeIndent += options.CallExpression.arguments * indentSize; } else if (options.CallExpression.arguments === "first") { - if (parent.arguments.indexOf(node) !== -1) { + if (parent.arguments.includes(node)) { nodeIndent = parent.arguments[0].loc.start.column; } } else { @@ -840,7 +840,7 @@ module.exports = { "IfStatement", "WhileStatement", "ForStatement", "ForInStatement", "ForOfStatement", "DoWhileStatement", "ClassDeclaration", "TryStatement" ]; - if (node.parent && statementsWithProperties.indexOf(node.parent.type) !== -1 && isNodeBodyBlock(node)) { + if (node.parent && statementsWithProperties.includes(node.parent.type) && isNodeBodyBlock(node)) { indent = getNodeIndent(node.parent).goodChar; } else if (node.parent && node.parent.type === "CatchClause") { indent = getNodeIndent(node.parent.parent).goodChar; diff --git a/tools/node_modules/eslint/lib/rules/indent.js b/tools/node_modules/eslint/lib/rules/indent.js index 6152bc561f9a81..b974a6ab1509d5 100644 --- a/tools/node_modules/eslint/lib/rules/indent.js +++ b/tools/node_modules/eslint/lib/rules/indent.js @@ -500,7 +500,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent indentation", + description: "Enforce consistent indentation", recommended: false, url: "https://eslint.org/docs/rules/indent" }, @@ -796,7 +796,7 @@ module.exports = { let statement = node.parent && node.parent.parent; while ( - statement.type === "UnaryExpression" && ["!", "~", "+", "-"].indexOf(statement.operator) > -1 || + statement.type === "UnaryExpression" && ["!", "~", "+", "-"].includes(statement.operator) || statement.type === "AssignmentExpression" || statement.type === "LogicalExpression" || statement.type === "SequenceExpression" || @@ -916,18 +916,6 @@ module.exports = { } offsets.setDesiredOffsets([firstBodyToken.range[0], lastBodyToken.range[1]], lastParentToken, 1); - - /* - * For blockless nodes with semicolon-first style, don't indent the semicolon. - * e.g. - * if (foo) bar() - * ; [1, 2, 3].map(foo) - */ - const lastToken = sourceCode.getLastToken(node); - - if (node.type !== "EmptyStatement" && astUtils.isSemicolonToken(lastToken)) { - offsets.setDesiredOffset(lastToken, lastParentToken, 0); - } } } @@ -1223,7 +1211,7 @@ module.exports = { } }, - "DoWhileStatement, WhileStatement, ForInStatement, ForOfStatement": node => addBlocklessNodeIndent(node.body), + "DoWhileStatement, WhileStatement, ForInStatement, ForOfStatement, WithStatement": node => addBlocklessNodeIndent(node.body), ExportNamedDeclaration(node) { if (node.declaration === null) { @@ -1271,6 +1259,50 @@ module.exports = { } }, + /* + * For blockless nodes with semicolon-first style, don't indent the semicolon. + * e.g. + * if (foo) + * bar() + * ; [1, 2, 3].map(foo) + * + * Traversal into the node sets indentation of the semicolon, so we need to override it on exit. + */ + ":matches(DoWhileStatement, ForStatement, ForInStatement, ForOfStatement, IfStatement, WhileStatement, WithStatement):exit"(node) { + let nodesToCheck; + + if (node.type === "IfStatement") { + nodesToCheck = [node.consequent]; + if (node.alternate) { + nodesToCheck.push(node.alternate); + } + } else { + nodesToCheck = [node.body]; + } + + for (const nodeToCheck of nodesToCheck) { + const lastToken = sourceCode.getLastToken(nodeToCheck); + + if (astUtils.isSemicolonToken(lastToken)) { + const tokenBeforeLast = sourceCode.getTokenBefore(lastToken); + const tokenAfterLast = sourceCode.getTokenAfter(lastToken); + + // override indentation of `;` only if its line looks like a semicolon-first style line + if ( + !astUtils.isTokenOnSameLine(tokenBeforeLast, lastToken) && + tokenAfterLast && + astUtils.isTokenOnSameLine(lastToken, tokenAfterLast) + ) { + offsets.setDesiredOffset( + lastToken, + sourceCode.getFirstToken(node), + 0 + ); + } + } + } + }, + ImportDeclaration(node) { if (node.specifiers.some(specifier => specifier.type === "ImportSpecifier")) { const openingCurly = sourceCode.getFirstToken(node, astUtils.isOpeningBraceToken); diff --git a/tools/node_modules/eslint/lib/rules/index.js b/tools/node_modules/eslint/lib/rules/index.js index 130b635c972716..aef47f5cadcf9e 100644 --- a/tools/node_modules/eslint/lib/rules/index.js +++ b/tools/node_modules/eslint/lib/rules/index.js @@ -103,6 +103,7 @@ module.exports = new LazyLoadingRuleMap(Object.entries({ "no-confusing-arrow": () => require("./no-confusing-arrow"), "no-console": () => require("./no-console"), "no-const-assign": () => require("./no-const-assign"), + "no-constant-binary-expression": () => require("./no-constant-binary-expression"), "no-constant-condition": () => require("./no-constant-condition"), "no-constructor-return": () => require("./no-constructor-return"), "no-continue": () => require("./no-continue"), diff --git a/tools/node_modules/eslint/lib/rules/init-declarations.js b/tools/node_modules/eslint/lib/rules/init-declarations.js index d952b8925ed335..b2ddf64fb4b78e 100644 --- a/tools/node_modules/eslint/lib/rules/init-declarations.js +++ b/tools/node_modules/eslint/lib/rules/init-declarations.js @@ -48,7 +48,7 @@ module.exports = { type: "suggestion", docs: { - description: "require or disallow initialization in variable declarations", + description: "Require or disallow initialization in variable declarations", recommended: false, url: "https://eslint.org/docs/rules/init-declarations" }, diff --git a/tools/node_modules/eslint/lib/rules/jsx-quotes.js b/tools/node_modules/eslint/lib/rules/jsx-quotes.js index a0cdfaa62bedb8..6745bb64b368ed 100644 --- a/tools/node_modules/eslint/lib/rules/jsx-quotes.js +++ b/tools/node_modules/eslint/lib/rules/jsx-quotes.js @@ -42,7 +42,7 @@ module.exports = { type: "layout", docs: { - description: "enforce the consistent use of either double or single quotes in JSX attributes", + description: "Enforce the consistent use of either double or single quotes in JSX attributes", recommended: false, url: "https://eslint.org/docs/rules/jsx-quotes" }, @@ -70,7 +70,7 @@ module.exports = { * @public */ function usesExpectedQuotes(node) { - return node.value.indexOf(setting.quote) !== -1 || astUtils.isSurroundedBy(node.raw, setting.quote); + return node.value.includes(setting.quote) || astUtils.isSurroundedBy(node.raw, setting.quote); } return { diff --git a/tools/node_modules/eslint/lib/rules/key-spacing.js b/tools/node_modules/eslint/lib/rules/key-spacing.js index ce8bad5bb35490..a33ef29891e91b 100644 --- a/tools/node_modules/eslint/lib/rules/key-spacing.js +++ b/tools/node_modules/eslint/lib/rules/key-spacing.js @@ -139,7 +139,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing between keys and values in object literal properties", + description: "Enforce consistent spacing between keys and values in object literal properties", recommended: false, url: "https://eslint.org/docs/rules/key-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/keyword-spacing.js b/tools/node_modules/eslint/lib/rules/keyword-spacing.js index 16a65d786966c4..59a500f5bfc272 100644 --- a/tools/node_modules/eslint/lib/rules/keyword-spacing.js +++ b/tools/node_modules/eslint/lib/rules/keyword-spacing.js @@ -67,7 +67,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing before and after keywords", + description: "Enforce consistent spacing before and after keywords", recommended: false, url: "https://eslint.org/docs/rules/keyword-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/line-comment-position.js b/tools/node_modules/eslint/lib/rules/line-comment-position.js index 9ce2831dec6d62..0631ebe6f32e44 100644 --- a/tools/node_modules/eslint/lib/rules/line-comment-position.js +++ b/tools/node_modules/eslint/lib/rules/line-comment-position.js @@ -16,7 +16,7 @@ module.exports = { type: "layout", docs: { - description: "enforce position of line comments", + description: "Enforce position of line comments", recommended: false, url: "https://eslint.org/docs/rules/line-comment-position" }, diff --git a/tools/node_modules/eslint/lib/rules/linebreak-style.js b/tools/node_modules/eslint/lib/rules/linebreak-style.js index 483788aa6ef3de..a5dc39d7967ac1 100644 --- a/tools/node_modules/eslint/lib/rules/linebreak-style.js +++ b/tools/node_modules/eslint/lib/rules/linebreak-style.js @@ -21,7 +21,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent linebreak style", + description: "Enforce consistent linebreak style", recommended: false, url: "https://eslint.org/docs/rules/linebreak-style" }, diff --git a/tools/node_modules/eslint/lib/rules/lines-around-comment.js b/tools/node_modules/eslint/lib/rules/lines-around-comment.js index 74df09b01bd2b4..974de21ed1d9d5 100644 --- a/tools/node_modules/eslint/lib/rules/lines-around-comment.js +++ b/tools/node_modules/eslint/lib/rules/lines-around-comment.js @@ -55,7 +55,7 @@ module.exports = { type: "layout", docs: { - description: "require empty lines around comments", + description: "Require empty lines around comments", recommended: false, url: "https://eslint.org/docs/rules/lines-around-comment" }, @@ -141,7 +141,7 @@ module.exports = { comments = sourceCode.getAllComments(), commentLines = getCommentLineNums(comments), emptyLines = getEmptyLineNums(lines), - commentAndEmptyLines = commentLines.concat(emptyLines); + commentAndEmptyLines = new Set(commentLines.concat(emptyLines)); /** * Returns whether or not comments are on lines starting with or ending with code @@ -393,7 +393,7 @@ module.exports = { const nextTokenOrComment = sourceCode.getTokenAfter(token, { includeComments: true }); // check for newline before - if (!exceptionStartAllowed && before && !commentAndEmptyLines.includes(prevLineNum) && + if (!exceptionStartAllowed && before && !commentAndEmptyLines.has(prevLineNum) && !(astUtils.isCommentToken(previousTokenOrComment) && astUtils.isTokenOnSameLine(previousTokenOrComment, token))) { const lineStart = token.range[0] - token.loc.start.column; const range = [lineStart, lineStart]; @@ -408,7 +408,7 @@ module.exports = { } // check for newline after - if (!exceptionEndAllowed && after && !commentAndEmptyLines.includes(nextLineNum) && + if (!exceptionEndAllowed && after && !commentAndEmptyLines.has(nextLineNum) && !(astUtils.isCommentToken(nextTokenOrComment) && astUtils.isTokenOnSameLine(token, nextTokenOrComment))) { context.report({ node: token, 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 21884f162e8031..816efc979b78cd 100644 --- a/tools/node_modules/eslint/lib/rules/lines-around-directive.js +++ b/tools/node_modules/eslint/lib/rules/lines-around-directive.js @@ -18,7 +18,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow newlines around directives", + description: "Require or disallow newlines around directives", recommended: false, url: "https://eslint.org/docs/rules/lines-around-directive" }, diff --git a/tools/node_modules/eslint/lib/rules/lines-between-class-members.js b/tools/node_modules/eslint/lib/rules/lines-between-class-members.js index 1d6b7e7693eadc..26357aa3dde716 100644 --- a/tools/node_modules/eslint/lib/rules/lines-between-class-members.js +++ b/tools/node_modules/eslint/lib/rules/lines-between-class-members.js @@ -20,7 +20,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow an empty line between class members", + description: "Require or disallow an empty line between class members", recommended: false, url: "https://eslint.org/docs/rules/lines-between-class-members" }, diff --git a/tools/node_modules/eslint/lib/rules/max-classes-per-file.js b/tools/node_modules/eslint/lib/rules/max-classes-per-file.js index 2157bebe4a9add..0bd626fe6e88db 100644 --- a/tools/node_modules/eslint/lib/rules/max-classes-per-file.js +++ b/tools/node_modules/eslint/lib/rules/max-classes-per-file.js @@ -19,7 +19,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce a maximum number of classes per file", + description: "Enforce a maximum number of classes per file", recommended: false, url: "https://eslint.org/docs/rules/max-classes-per-file" }, diff --git a/tools/node_modules/eslint/lib/rules/max-depth.js b/tools/node_modules/eslint/lib/rules/max-depth.js index 8006ffdef75634..6b428ced763573 100644 --- a/tools/node_modules/eslint/lib/rules/max-depth.js +++ b/tools/node_modules/eslint/lib/rules/max-depth.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce a maximum depth that blocks can be nested", + description: "Enforce a maximum depth that blocks can be nested", recommended: false, url: "https://eslint.org/docs/rules/max-depth" }, diff --git a/tools/node_modules/eslint/lib/rules/max-len.js b/tools/node_modules/eslint/lib/rules/max-len.js index d05559e5baf2ef..0d3b2af7026c1b 100644 --- a/tools/node_modules/eslint/lib/rules/max-len.js +++ b/tools/node_modules/eslint/lib/rules/max-len.js @@ -69,7 +69,7 @@ module.exports = { type: "layout", docs: { - description: "enforce a maximum line length", + description: "Enforce a maximum line length", recommended: false, url: "https://eslint.org/docs/rules/max-len" }, diff --git a/tools/node_modules/eslint/lib/rules/max-lines-per-function.js b/tools/node_modules/eslint/lib/rules/max-lines-per-function.js index 5985a739e4babc..fad646cc0c31c7 100644 --- a/tools/node_modules/eslint/lib/rules/max-lines-per-function.js +++ b/tools/node_modules/eslint/lib/rules/max-lines-per-function.js @@ -71,7 +71,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce a maximum number of lines of code in a function", + description: "Enforce a maximum number of lines of code in a function", recommended: false, url: "https://eslint.org/docs/rules/max-lines-per-function" }, diff --git a/tools/node_modules/eslint/lib/rules/max-lines.js b/tools/node_modules/eslint/lib/rules/max-lines.js index 31fc657a63c16e..d0e5bad3b2b722 100644 --- a/tools/node_modules/eslint/lib/rules/max-lines.js +++ b/tools/node_modules/eslint/lib/rules/max-lines.js @@ -34,7 +34,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce a maximum number of lines per file", + description: "Enforce a maximum number of lines per file", recommended: false, url: "https://eslint.org/docs/rules/max-lines" }, @@ -159,10 +159,10 @@ module.exports = { if (skipComments) { const comments = sourceCode.getAllComments(); - const commentLines = comments.flatMap(getLinesWithoutCode); + const commentLines = new Set(comments.flatMap(getLinesWithoutCode)); lines = lines.filter( - l => !commentLines.includes(l.lineNumber) + l => !commentLines.has(l.lineNumber) ); } diff --git a/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js b/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js index 0d43050779068c..3764d5dee95993 100644 --- a/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js +++ b/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce a maximum depth that callbacks can be nested", + description: "Enforce a maximum depth that callbacks can be nested", recommended: false, url: "https://eslint.org/docs/rules/max-nested-callbacks" }, diff --git a/tools/node_modules/eslint/lib/rules/max-params.js b/tools/node_modules/eslint/lib/rules/max-params.js index 72379d217d69c9..8de1ab44b8ab54 100644 --- a/tools/node_modules/eslint/lib/rules/max-params.js +++ b/tools/node_modules/eslint/lib/rules/max-params.js @@ -22,7 +22,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce a maximum number of parameters in function definitions", + description: "Enforce a maximum number of parameters in function definitions", recommended: false, url: "https://eslint.org/docs/rules/max-params" }, 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 61b508cf6cde26..ada9cf0fe5ef40 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 @@ -20,7 +20,7 @@ module.exports = { type: "layout", docs: { - description: "enforce a maximum number of statements allowed per line", + description: "Enforce a maximum number of statements allowed per line", recommended: false, url: "https://eslint.org/docs/rules/max-statements-per-line" }, diff --git a/tools/node_modules/eslint/lib/rules/max-statements.js b/tools/node_modules/eslint/lib/rules/max-statements.js index ac117e92e72593..c598b1059d07dd 100644 --- a/tools/node_modules/eslint/lib/rules/max-statements.js +++ b/tools/node_modules/eslint/lib/rules/max-statements.js @@ -22,7 +22,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce a maximum number of statements allowed in function blocks", + description: "Enforce a maximum number of statements allowed in function blocks", recommended: false, url: "https://eslint.org/docs/rules/max-statements" }, @@ -126,7 +126,7 @@ module.exports = { /* * This rule does not apply to class static blocks, but we have to track them so - * that stataments in them do not count as statements in the enclosing function. + * that statements in them do not count as statements in the enclosing function. */ if (node.type === "StaticBlock") { return; diff --git a/tools/node_modules/eslint/lib/rules/multiline-comment-style.js b/tools/node_modules/eslint/lib/rules/multiline-comment-style.js index 7985bc86270b8d..68cd666532dc30 100644 --- a/tools/node_modules/eslint/lib/rules/multiline-comment-style.js +++ b/tools/node_modules/eslint/lib/rules/multiline-comment-style.js @@ -16,7 +16,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce a particular style for multiline comments", + description: "Enforce a particular style for multiline comments", recommended: false, url: "https://eslint.org/docs/rules/multiline-comment-style" }, diff --git a/tools/node_modules/eslint/lib/rules/multiline-ternary.js b/tools/node_modules/eslint/lib/rules/multiline-ternary.js index 91aa5a1003116f..62c84bbfed851b 100644 --- a/tools/node_modules/eslint/lib/rules/multiline-ternary.js +++ b/tools/node_modules/eslint/lib/rules/multiline-ternary.js @@ -17,7 +17,7 @@ module.exports = { type: "layout", docs: { - description: "enforce newlines between operands of ternary expressions", + description: "Enforce newlines between operands of ternary expressions", recommended: false, url: "https://eslint.org/docs/rules/multiline-ternary" }, diff --git a/tools/node_modules/eslint/lib/rules/new-cap.js b/tools/node_modules/eslint/lib/rules/new-cap.js index 466cfd4c585909..ad59fd90621e34 100644 --- a/tools/node_modules/eslint/lib/rules/new-cap.js +++ b/tools/node_modules/eslint/lib/rules/new-cap.js @@ -82,7 +82,7 @@ module.exports = { type: "suggestion", docs: { - description: "require constructor names to begin with a capital letter", + description: "Require constructor names to begin with a capital letter", recommended: false, url: "https://eslint.org/docs/rules/new-cap" }, diff --git a/tools/node_modules/eslint/lib/rules/new-parens.js b/tools/node_modules/eslint/lib/rules/new-parens.js index 8ee4a2e1d19361..f5a98a45d4de82 100644 --- a/tools/node_modules/eslint/lib/rules/new-parens.js +++ b/tools/node_modules/eslint/lib/rules/new-parens.js @@ -25,7 +25,7 @@ module.exports = { type: "layout", docs: { - description: "enforce or disallow parentheses when invoking a constructor with no arguments", + description: "Enforce or disallow parentheses when invoking a constructor with no arguments", recommended: false, url: "https://eslint.org/docs/rules/new-parens" }, 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 e519a3afb6becb..2b4d8584656919 100644 --- a/tools/node_modules/eslint/lib/rules/newline-after-var.js +++ b/tools/node_modules/eslint/lib/rules/newline-after-var.js @@ -22,7 +22,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow an empty line after variable declarations", + description: "Require or disallow an empty line after variable declarations", recommended: false, url: "https://eslint.org/docs/rules/newline-after-var" }, 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 f4aa5166f0e8d1..007d94273631ab 100644 --- a/tools/node_modules/eslint/lib/rules/newline-before-return.js +++ b/tools/node_modules/eslint/lib/rules/newline-before-return.js @@ -15,7 +15,7 @@ module.exports = { type: "layout", docs: { - description: "require an empty line before `return` statements", + description: "Require an empty line before `return` statements", recommended: false, url: "https://eslint.org/docs/rules/newline-before-return" }, @@ -47,7 +47,7 @@ module.exports = { function isPrecededByTokens(node, testTokens) { const tokenBefore = sourceCode.getTokenBefore(node); - return testTokens.some(token => tokenBefore.value === token); + return testTokens.includes(tokenBefore.value); } /** 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 818bf703d2b745..83844a52b352eb 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 @@ -18,7 +18,7 @@ module.exports = { type: "layout", docs: { - description: "require a newline after each call in a method chain", + description: "Require a newline after each call in a method chain", recommended: false, url: "https://eslint.org/docs/rules/newline-per-chained-call" }, diff --git a/tools/node_modules/eslint/lib/rules/no-alert.js b/tools/node_modules/eslint/lib/rules/no-alert.js index c6f7ddf38db1a3..ba0125c877b030 100644 --- a/tools/node_modules/eslint/lib/rules/no-alert.js +++ b/tools/node_modules/eslint/lib/rules/no-alert.js @@ -88,7 +88,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow the use of `alert`, `confirm`, and `prompt`", + description: "Disallow the use of `alert`, `confirm`, and `prompt`", recommended: false, url: "https://eslint.org/docs/rules/no-alert" }, diff --git a/tools/node_modules/eslint/lib/rules/no-array-constructor.js b/tools/node_modules/eslint/lib/rules/no-array-constructor.js index 02e6114dadc8f3..93b79abfd89c5a 100644 --- a/tools/node_modules/eslint/lib/rules/no-array-constructor.js +++ b/tools/node_modules/eslint/lib/rules/no-array-constructor.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `Array` constructors", + description: "Disallow `Array` constructors", recommended: false, url: "https://eslint.org/docs/rules/no-array-constructor" }, diff --git a/tools/node_modules/eslint/lib/rules/no-async-promise-executor.js b/tools/node_modules/eslint/lib/rules/no-async-promise-executor.js index f940f152e3cecd..52c51862feb772 100644 --- a/tools/node_modules/eslint/lib/rules/no-async-promise-executor.js +++ b/tools/node_modules/eslint/lib/rules/no-async-promise-executor.js @@ -14,7 +14,7 @@ module.exports = { type: "problem", docs: { - description: "disallow using an async function as a Promise executor", + description: "Disallow using an async function as a Promise executor", recommended: true, url: "https://eslint.org/docs/rules/no-async-promise-executor" }, diff --git a/tools/node_modules/eslint/lib/rules/no-await-in-loop.js b/tools/node_modules/eslint/lib/rules/no-await-in-loop.js index 3aea39a16b9f3e..905a793c830377 100644 --- a/tools/node_modules/eslint/lib/rules/no-await-in-loop.js +++ b/tools/node_modules/eslint/lib/rules/no-await-in-loop.js @@ -59,7 +59,7 @@ module.exports = { type: "problem", docs: { - description: "disallow `await` inside of loops", + description: "Disallow `await` inside of loops", recommended: false, url: "https://eslint.org/docs/rules/no-await-in-loop" }, diff --git a/tools/node_modules/eslint/lib/rules/no-bitwise.js b/tools/node_modules/eslint/lib/rules/no-bitwise.js index 1de1619bffa8a0..172ea046bbe1c0 100644 --- a/tools/node_modules/eslint/lib/rules/no-bitwise.js +++ b/tools/node_modules/eslint/lib/rules/no-bitwise.js @@ -26,7 +26,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow bitwise operators", + description: "Disallow bitwise operators", recommended: false, url: "https://eslint.org/docs/rules/no-bitwise" }, @@ -76,7 +76,7 @@ module.exports = { * @returns {boolean} Whether or not the node has a bitwise operator. */ function hasBitwiseOperator(node) { - return BITWISE_OPERATORS.indexOf(node.operator) !== -1; + return BITWISE_OPERATORS.includes(node.operator); } /** @@ -85,7 +85,7 @@ module.exports = { * @returns {boolean} Whether or not the node has a bitwise operator. */ function allowedOperator(node) { - return allowed.indexOf(node.operator) !== -1; + return allowed.includes(node.operator); } /** diff --git a/tools/node_modules/eslint/lib/rules/no-buffer-constructor.js b/tools/node_modules/eslint/lib/rules/no-buffer-constructor.js index 678d7032ab447b..930039288156d4 100644 --- a/tools/node_modules/eslint/lib/rules/no-buffer-constructor.js +++ b/tools/node_modules/eslint/lib/rules/no-buffer-constructor.js @@ -19,7 +19,7 @@ module.exports = { type: "problem", docs: { - description: "disallow use of the `Buffer()` constructor", + description: "Disallow use of the `Buffer()` constructor", recommended: false, url: "https://eslint.org/docs/rules/no-buffer-constructor" }, diff --git a/tools/node_modules/eslint/lib/rules/no-caller.js b/tools/node_modules/eslint/lib/rules/no-caller.js index a6ad94f2fe6a66..884a02bdcf69a3 100644 --- a/tools/node_modules/eslint/lib/rules/no-caller.js +++ b/tools/node_modules/eslint/lib/rules/no-caller.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow the use of `arguments.caller` or `arguments.callee`", + description: "Disallow the use of `arguments.caller` or `arguments.callee`", recommended: false, url: "https://eslint.org/docs/rules/no-caller" }, diff --git a/tools/node_modules/eslint/lib/rules/no-case-declarations.js b/tools/node_modules/eslint/lib/rules/no-case-declarations.js index d722f0cf58422f..6557ba3a03d45b 100644 --- a/tools/node_modules/eslint/lib/rules/no-case-declarations.js +++ b/tools/node_modules/eslint/lib/rules/no-case-declarations.js @@ -14,7 +14,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow lexical declarations in case clauses", + description: "Disallow lexical declarations in case clauses", recommended: true, url: "https://eslint.org/docs/rules/no-case-declarations" }, diff --git a/tools/node_modules/eslint/lib/rules/no-catch-shadow.js b/tools/node_modules/eslint/lib/rules/no-catch-shadow.js index d09c91349680cf..49f1ba9649b7e9 100644 --- a/tools/node_modules/eslint/lib/rules/no-catch-shadow.js +++ b/tools/node_modules/eslint/lib/rules/no-catch-shadow.js @@ -22,7 +22,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `catch` clause parameters from shadowing variables in the outer scope", + description: "Disallow `catch` clause parameters from shadowing variables in the outer scope", recommended: false, url: "https://eslint.org/docs/rules/no-catch-shadow" }, 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 f679d4263e860e..32e48e21188d82 100644 --- a/tools/node_modules/eslint/lib/rules/no-class-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-class-assign.js @@ -17,7 +17,7 @@ module.exports = { type: "problem", docs: { - description: "disallow reassigning class members", + description: "Disallow reassigning class members", recommended: true, url: "https://eslint.org/docs/rules/no-class-assign" }, 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 fb56b99c58b3db..9715c2f0f37226 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 @@ -14,7 +14,7 @@ module.exports = { type: "problem", docs: { - description: "disallow comparing against -0", + description: "Disallow comparing against -0", recommended: true, url: "https://eslint.org/docs/rules/no-compare-neg-zero" }, diff --git a/tools/node_modules/eslint/lib/rules/no-cond-assign.js b/tools/node_modules/eslint/lib/rules/no-cond-assign.js index 30d5b3bdaee960..59efb341f09ea6 100644 --- a/tools/node_modules/eslint/lib/rules/no-cond-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-cond-assign.js @@ -34,7 +34,7 @@ module.exports = { type: "problem", docs: { - description: "disallow assignment operators in conditional expressions", + description: "Disallow assignment operators in conditional expressions", recommended: true, url: "https://eslint.org/docs/rules/no-cond-assign" }, 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 9cdd0a85dbb3d4..d2b6641b74fdbc 100644 --- a/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js +++ b/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js @@ -31,7 +31,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow arrow functions where they could be confused with comparisons", + description: "Disallow arrow functions where they could be confused with comparisons", recommended: false, url: "https://eslint.org/docs/rules/no-confusing-arrow" }, diff --git a/tools/node_modules/eslint/lib/rules/no-console.js b/tools/node_modules/eslint/lib/rules/no-console.js index c0802e23dc7240..bad6b6f4ee8295 100644 --- a/tools/node_modules/eslint/lib/rules/no-console.js +++ b/tools/node_modules/eslint/lib/rules/no-console.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow the use of `console`", + description: "Disallow the use of `console`", recommended: false, url: "https://eslint.org/docs/rules/no-console" }, @@ -72,7 +72,7 @@ module.exports = { function isAllowed(node) { const propertyName = astUtils.getStaticPropertyName(node); - return propertyName && allowed.indexOf(propertyName) !== -1; + return propertyName && allowed.includes(propertyName); } /** 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 b5f7c37a98f6df..55e40c8849f053 100644 --- a/tools/node_modules/eslint/lib/rules/no-const-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-const-assign.js @@ -17,7 +17,7 @@ module.exports = { type: "problem", docs: { - description: "disallow reassigning `const` variables", + description: "Disallow reassigning `const` variables", recommended: true, url: "https://eslint.org/docs/rules/no-const-assign" }, diff --git a/tools/node_modules/eslint/lib/rules/no-constant-binary-expression.js b/tools/node_modules/eslint/lib/rules/no-constant-binary-expression.js new file mode 100644 index 00000000000000..dccfa2f582640a --- /dev/null +++ b/tools/node_modules/eslint/lib/rules/no-constant-binary-expression.js @@ -0,0 +1,500 @@ +/** + * @fileoverview Rule to flag constant comparisons and logical expressions that always/never short circuit + * @author Jordan Eldredge + */ + +"use strict"; + +const globals = require("globals"); +const { isNullLiteral, isConstant, isReferenceToGlobalVariable, isLogicalAssignmentOperator } = require("./utils/ast-utils"); + +const NUMERIC_OR_STRING_BINARY_OPERATORS = new Set(["+", "-", "*", "/", "%", "|", "^", "&", "**", "<<", ">>", ">>>"]); + +//------------------------------------------------------------------------------ +// Helpers +//------------------------------------------------------------------------------ + +/** + * Test if an AST node has a statically knowable constant nullishness. Meaning, + * it will always resolve to a constant value of either: `null`, `undefined` + * or not `null` _or_ `undefined`. An expression that can vary between those + * three states at runtime would return `false`. + * @param {Scope} scope The scope in which the node was found. + * @param {ASTNode} node The AST node being tested. + * @returns {boolean} Does `node` have constant nullishness? + */ +function hasConstantNullishness(scope, node) { + switch (node.type) { + case "ObjectExpression": // Objects are never nullish + case "ArrayExpression": // Arrays are never nullish + case "ArrowFunctionExpression": // Functions never nullish + case "FunctionExpression": // Functions are never nullish + case "ClassExpression": // Classes are never nullish + case "NewExpression": // Objects are never nullish + case "Literal": // Nullish, or non-nullish, literals never change + case "TemplateLiteral": // A string is never nullish + case "UpdateExpression": // Numbers are never nullish + case "BinaryExpression": // Numbers, strings, or booleans are never nullish + return true; + case "CallExpression": { + if (node.callee.type !== "Identifier") { + return false; + } + const functionName = node.callee.name; + + return (functionName === "Boolean" || functionName === "String" || functionName === "Number") && + isReferenceToGlobalVariable(scope, node.callee); + } + case "AssignmentExpression": + if (node.operator === "=") { + return hasConstantNullishness(scope, node.right); + } + + /* + * Handling short-circuiting assignment operators would require + * walking the scope. We won't attempt that (for now...) / + */ + if (isLogicalAssignmentOperator(node.operator)) { + return false; + } + + /* + * The remaining assignment expressions all result in a numeric or + * string (non-nullish) value: + * "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", "|=", "^=", "&=" + */ + + return true; + case "UnaryExpression": + + /* + * "void" Always returns `undefined` + * "typeof" All types are strings, and thus non-nullish + * "!" Boolean is never nullish + * "delete" Returns a boolean, which is never nullish + * Math operators always return numbers or strings, neither of which + * are non-nullish "+", "-", "~" + */ + + return true; + case "SequenceExpression": { + const last = node.expressions[node.expressions.length - 1]; + + return hasConstantNullishness(scope, last); + } + case "Identifier": + return node.name === "undefined" && isReferenceToGlobalVariable(scope, node); + case "JSXElement": // ESLint has a policy of not assuming any specific JSX behavior. + case "JSXFragment": + return false; + default: + return false; + } +} + +/** + * Test if an AST node is a boolean value that never changes. Specifically we + * test for: + * 1. Literal booleans (`true` or `false`) + * 2. Unary `!` expressions with a constant value + * 3. Constant booleans created via the `Boolean` global function + * @param {Scope} scope The scope in which the node was found. + * @param {ASTNode} node The node to test + * @returns {boolean} Is `node` guaranteed to be a boolean? + */ +function isStaticBoolean(scope, node) { + switch (node.type) { + case "Literal": + return typeof node.value === "boolean"; + case "CallExpression": + return node.callee.type === "Identifier" && node.callee.name === "Boolean" && + isReferenceToGlobalVariable(scope, node.callee) && + (node.arguments.length === 0 || isConstant(scope, node.arguments[0], true)); + case "UnaryExpression": + return node.operator === "!" && isConstant(scope, node.argument, true); + default: + return false; + } +} + + +/** + * Test if an AST node will always give the same result when compared to a + * boolean value. Note that comparison to boolean values is different than + * truthiness. + * https://262.ecma-international.org/5.1/#sec-11.9.3 + * + * Javascript `==` operator works by converting the boolean to `1` (true) or + * `+0` (false) and then checks the values `==` equality to that number. + * @param {Scope} scope The scope in which node was found. + * @param {ASTNode} node The node to test. + * @returns {boolean} Will `node` always coerce to the same boolean value? + */ +function hasConstantLooseBooleanComparison(scope, node) { + switch (node.type) { + case "ObjectExpression": + case "ClassExpression": + + /** + * In theory objects like: + * + * `{toString: () => a}` + * `{valueOf: () => a}` + * + * Or a classes like: + * + * `class { static toString() { return a } }` + * `class { static valueOf() { return a } }` + * + * Are not constant verifiably when `inBooleanPosition` is + * false, but it's an edge case we've opted not to handle. + */ + return true; + case "ArrayExpression": { + const nonSpreadElements = node.elements.filter(e => + + // Elements can be `null` in sparse arrays: `[,,]`; + e !== null && e.type !== "SpreadElement"); + + + /* + * Possible future direction if needed: We could check if the + * single value would result in variable boolean comparison. + * For now we will err on the side of caution since `[x]` could + * evaluate to `[0]` or `[1]`. + */ + return node.elements.length === 0 || nonSpreadElements.length > 1; + } + case "ArrowFunctionExpression": + case "FunctionExpression": + return true; + case "UnaryExpression": + if (node.operator === "void" || // Always returns `undefined` + node.operator === "typeof" // All `typeof` strings, when coerced to number, are not 0 or 1. + ) { + return true; + } + if (node.operator === "!") { + return isConstant(scope, node.argument, true); + } + + /* + * We won't try to reason about +, -, ~, or delete + * In theory, for the mathematical operators, we could look at the + * argument and try to determine if it coerces to a constant numeric + * value. + */ + return false; + case "NewExpression": // Objects might have custom `.valueOf` or `.toString`. + return false; + case "CallExpression": { + if (node.callee.type === "Identifier" && + node.callee.name === "Boolean" && + isReferenceToGlobalVariable(scope, node.callee) + ) { + return node.arguments.length === 0 || isConstant(scope, node.arguments[0], true); + } + return false; + } + case "Literal": // True or false, literals never change + return true; + case "Identifier": + return node.name === "undefined" && isReferenceToGlobalVariable(scope, node); + case "TemplateLiteral": + + /* + * In theory we could try to check if the quasi are sufficient to + * prove that the expression will always be true, but it would be + * tricky to get right. For example: `000.${foo}000` + */ + return node.expressions.length === 0; + case "AssignmentExpression": + if (node.operator === "=") { + return hasConstantLooseBooleanComparison(scope, node.right); + } + + /* + * Handling short-circuiting assignment operators would require + * walking the scope. We won't attempt that (for now...) + * + * The remaining assignment expressions all result in a numeric or + * string (non-nullish) values which could be truthy or falsy: + * "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", "|=", "^=", "&=" + */ + return false; + case "SequenceExpression": { + const last = node.expressions[node.expressions.length - 1]; + + return hasConstantLooseBooleanComparison(scope, last); + } + case "JSXElement": // ESLint has a policy of not assuming any specific JSX behavior. + case "JSXFragment": + return false; + default: + return false; + } +} + + +/** + * Test if an AST node will always give the same result when _strictly_ compared + * to a boolean value. This can happen if the expression can never be boolean, or + * if it is always the same boolean value. + * @param {Scope} scope The scope in which the node was found. + * @param {ASTNode} node The node to test + * @returns {boolean} Will `node` always give the same result when compared to a + * static boolean value? + */ +function hasConstantStrictBooleanComparison(scope, node) { + switch (node.type) { + case "ObjectExpression": // Objects are not booleans + case "ArrayExpression": // Arrays are not booleans + case "ArrowFunctionExpression": // Functions are not booleans + case "FunctionExpression": + case "ClassExpression": // Classes are not booleans + case "NewExpression": // Objects are not booleans + case "TemplateLiteral": // Strings are not booleans + case "Literal": // True, false, or not boolean, literals never change. + case "UpdateExpression": // Numbers are not booleans + return true; + case "BinaryExpression": + return NUMERIC_OR_STRING_BINARY_OPERATORS.has(node.operator); + case "UnaryExpression": { + if (node.operator === "delete") { + return false; + } + if (node.operator === "!") { + return isConstant(scope, node.argument, true); + } + + /* + * The remaining operators return either strings or numbers, neither + * of which are boolean. + */ + return true; + } + case "SequenceExpression": { + const last = node.expressions[node.expressions.length - 1]; + + return hasConstantStrictBooleanComparison(scope, last); + } + case "Identifier": + return node.name === "undefined" && isReferenceToGlobalVariable(scope, node); + case "AssignmentExpression": + if (node.operator === "=") { + return hasConstantStrictBooleanComparison(scope, node.right); + } + + /* + * Handling short-circuiting assignment operators would require + * walking the scope. We won't attempt that (for now...) + */ + if (isLogicalAssignmentOperator(node.operator)) { + return false; + } + + /* + * The remaining assignment expressions all result in either a number + * or a string, neither of which can ever be boolean. + */ + return true; + case "CallExpression": { + if (node.callee.type !== "Identifier") { + return false; + } + const functionName = node.callee.name; + + if ( + (functionName === "String" || functionName === "Number") && + isReferenceToGlobalVariable(scope, node.callee) + ) { + return true; + } + if (functionName === "Boolean" && isReferenceToGlobalVariable(scope, node.callee)) { + return ( + node.arguments.length === 0 || isConstant(scope, node.arguments[0], true)); + } + return false; + } + case "JSXElement": // ESLint has a policy of not assuming any specific JSX behavior. + case "JSXFragment": + return false; + default: + return false; + } +} + +/** + * Test if an AST node will always result in a newly constructed object + * @param {Scope} scope The scope in which the node was found. + * @param {ASTNode} node The node to test + * @returns {boolean} Will `node` always be new? + */ +function isAlwaysNew(scope, node) { + switch (node.type) { + case "ObjectExpression": + case "ArrayExpression": + case "ArrowFunctionExpression": + case "FunctionExpression": + case "ClassExpression": + return true; + case "NewExpression": { + if (node.callee.type !== "Identifier") { + return false; + } + + /* + * All the built-in constructors are always new, but + * user-defined constructors could return a sentinel + * object. + * + * Catching these is especially useful for primitive constructures + * which return boxed values, a surprising gotcha' in JavaScript. + */ + return Object.hasOwnProperty.call(globals.builtin, node.callee.name) && + isReferenceToGlobalVariable(scope, node.callee); + } + case "Literal": + + // Regular expressions are objects, and thus always new + return typeof node.regex === "object"; + case "SequenceExpression": { + const last = node.expressions[node.expressions.length - 1]; + + return isAlwaysNew(scope, last); + } + case "AssignmentExpression": + if (node.operator === "=") { + return isAlwaysNew(scope, node.right); + } + return false; + case "ConditionalExpression": + return isAlwaysNew(scope, node.consequent) && isAlwaysNew(scope, node.alternate); + case "JSXElement": // ESLint has a policy of not assuming any specific JSX behavior. + case "JSXFragment": + return false; + default: + return false; + } +} + +/** + * Checks whether or not a node is `null` or `undefined`. Similar to the one + * found in ast-utils.js, but this one correctly handles the edge case that + * `undefined` has been redefined. + * @param {Scope} scope Scope in which the expression was found. + * @param {ASTNode} node A node to check. + * @returns {boolean} Whether or not the node is a `null` or `undefined`. + * @public + */ +function isNullOrUndefined(scope, node) { + return ( + isNullLiteral(node) || + (node.type === "Identifier" && node.name === "undefined" && isReferenceToGlobalVariable(scope, node)) || + (node.type === "UnaryExpression" && node.operator === "void") + ); +} + + +/** + * Checks if one operand will cause the result to be constant. + * @param {Scope} scope Scope in which the expression was found. + * @param {ASTNode} a One side of the expression + * @param {ASTNode} b The other side of the expression + * @param {string} operator The binary expression operator + * @returns {ASTNode | null} The node which will cause the expression to have a constant result. + */ +function findBinaryExpressionConstantOperand(scope, a, b, operator) { + if (operator === "==" || operator === "!=") { + if ( + (isNullOrUndefined(scope, a) && hasConstantNullishness(scope, b)) || + (isStaticBoolean(scope, a) && hasConstantLooseBooleanComparison(scope, b)) + ) { + return b; + } + } else if (operator === "===" || operator === "!==") { + if ( + (isNullOrUndefined(scope, a) && hasConstantNullishness(scope, b)) || + (isStaticBoolean(scope, a) && hasConstantStrictBooleanComparison(scope, b)) + ) { + return b; + } + } + return null; +} + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ + +/** @type {import('../shared/types').Rule} */ +module.exports = { + meta: { + type: "problem", + docs: { + description: "Disallow expressions where the operation doesn't affect the value", + recommended: false, + url: "https://eslint.org/docs/rules/no-constant-binary-expression" + }, + schema: [], + messages: { + constantBinaryOperand: "Unexpected constant binary expression. Compares constantly with the {{otherSide}}-hand side of the `{{operator}}`.", + constantShortCircuit: "Unexpected constant {{property}} on the left-hand side of a `{{operator}}` expression.", + alwaysNew: "Unexpected comparison to newly constructed object. These two values can never be equal.", + bothAlwaysNew: "Unexpected comparison of two newly constructed objects. These two values can never be equal." + } + }, + + create(context) { + return { + LogicalExpression(node) { + const { operator, left } = node; + const scope = context.getScope(); + + if ((operator === "&&" || operator === "||") && isConstant(scope, left, true)) { + context.report({ node: left, messageId: "constantShortCircuit", data: { property: "truthiness", operator } }); + } else if (operator === "??" && hasConstantNullishness(scope, left)) { + context.report({ node: left, messageId: "constantShortCircuit", data: { property: "nullishness", operator } }); + } + }, + BinaryExpression(node) { + const scope = context.getScope(); + const { right, left, operator } = node; + const rightConstantOperand = findBinaryExpressionConstantOperand(scope, left, right, operator); + const leftConstantOperand = findBinaryExpressionConstantOperand(scope, right, left, operator); + + if (rightConstantOperand) { + context.report({ node: rightConstantOperand, messageId: "constantBinaryOperand", data: { operator, otherSide: "left" } }); + } else if (leftConstantOperand) { + context.report({ node: leftConstantOperand, messageId: "constantBinaryOperand", data: { operator, otherSide: "right" } }); + } else if (operator === "===" || operator === "!==") { + if (isAlwaysNew(scope, left)) { + context.report({ node: left, messageId: "alwaysNew" }); + } else if (isAlwaysNew(scope, right)) { + context.report({ node: right, messageId: "alwaysNew" }); + } + } else if (operator === "==" || operator === "!=") { + + /* + * If both sides are "new", then both sides are objects and + * therefore they will be compared by reference even with `==` + * equality. + */ + if (isAlwaysNew(scope, left) && isAlwaysNew(scope, right)) { + context.report({ node: left, messageId: "bothAlwaysNew" }); + } + } + + } + + /* + * In theory we could handle short-circuiting assignment operators, + * for some constant values, but that would require walking the + * scope to find the value of the variable being assigned. This is + * dependant on https://github.com/eslint/eslint/issues/13776 + * + * AssignmentExpression() {}, + */ + }; + } +}; diff --git a/tools/node_modules/eslint/lib/rules/no-constant-condition.js b/tools/node_modules/eslint/lib/rules/no-constant-condition.js index 3d08c689aef3f8..2ef687f6dca7eb 100644 --- a/tools/node_modules/eslint/lib/rules/no-constant-condition.js +++ b/tools/node_modules/eslint/lib/rules/no-constant-condition.js @@ -5,6 +5,8 @@ "use strict"; +const { isConstant } = require("./utils/ast-utils"); + //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ @@ -19,7 +21,7 @@ module.exports = { type: "problem", docs: { - description: "disallow constant expressions in conditions", + description: "Disallow constant expressions in conditions", recommended: true, url: "https://eslint.org/docs/rules/no-constant-condition" }, @@ -53,201 +55,6 @@ module.exports = { // Helpers //-------------------------------------------------------------------------- - /** - * Returns literal's value converted to the Boolean type - * @param {ASTNode} node any `Literal` node - * @returns {boolean | null} `true` when node is truthy, `false` when node is falsy, - * `null` when it cannot be determined. - */ - function getBooleanValue(node) { - if (node.value === null) { - - /* - * it might be a null literal or bigint/regex literal in unsupported environments . - * https://github.com/estree/estree/blob/14df8a024956ea289bd55b9c2226a1d5b8a473ee/es5.md#regexpliteral - * https://github.com/estree/estree/blob/14df8a024956ea289bd55b9c2226a1d5b8a473ee/es2020.md#bigintliteral - */ - - if (node.raw === "null") { - return false; - } - - // regex is always truthy - if (typeof node.regex === "object") { - return true; - } - - return null; - } - - return !!node.value; - } - - /** - * Checks if a branch node of LogicalExpression short circuits the whole condition - * @param {ASTNode} node The branch of main condition which needs to be checked - * @param {string} operator The operator of the main LogicalExpression. - * @returns {boolean} true when condition short circuits whole condition - */ - function isLogicalIdentity(node, operator) { - switch (node.type) { - case "Literal": - return (operator === "||" && getBooleanValue(node) === true) || - (operator === "&&" && getBooleanValue(node) === false); - - case "UnaryExpression": - return (operator === "&&" && node.operator === "void"); - - case "LogicalExpression": - - /* - * handles `a && false || b` - * `false` is an identity element of `&&` but not `||` - */ - return operator === node.operator && - ( - isLogicalIdentity(node.left, operator) || - isLogicalIdentity(node.right, operator) - ); - - case "AssignmentExpression": - return ["||=", "&&="].includes(node.operator) && - operator === node.operator.slice(0, -1) && - isLogicalIdentity(node.right, operator); - - // no default - } - return false; - } - - /** - * Checks if an identifier is a reference to a global variable. - * @param {ASTNode} node An identifier node to check. - * @returns {boolean} `true` if the identifier is a reference to a global variable. - */ - function isReferenceToGlobalVariable(node) { - const scope = context.getScope(); - const reference = scope.references.find(ref => ref.identifier === node); - - return Boolean( - reference && - reference.resolved && - reference.resolved.scope.type === "global" && - reference.resolved.defs.length === 0 - ); - } - - /** - * Checks if a node has a constant truthiness value. - * @param {ASTNode} node The AST node to check. - * @param {boolean} inBooleanPosition `true` if checking the test of a - * condition. `false` in all other cases. When `false`, checks if -- for - * both string and number -- if coerced to that type, the value will - * be constant. - * @returns {Bool} true when node's truthiness is constant - * @private - */ - function isConstant(node, inBooleanPosition) { - - // node.elements can return null values in the case of sparse arrays ex. [,] - if (!node) { - return true; - } - switch (node.type) { - case "Literal": - case "ArrowFunctionExpression": - case "FunctionExpression": - return true; - case "ClassExpression": - case "ObjectExpression": - - /** - * In theory objects like: - * - * `{toString: () => a}` - * `{valueOf: () => a}` - * - * Or a classes like: - * - * `class { static toString() { return a } }` - * `class { static valueOf() { return a } }` - * - * Are not constant verifiably when `inBooleanPosition` is - * false, but it's an edge case we've opted not to handle. - */ - return true; - case "TemplateLiteral": - return (inBooleanPosition && node.quasis.some(quasi => quasi.value.cooked.length)) || - node.expressions.every(exp => isConstant(exp, false)); - - case "ArrayExpression": { - if (!inBooleanPosition) { - return node.elements.every(element => isConstant(element, false)); - } - return true; - } - - case "UnaryExpression": - if ( - node.operator === "void" || - node.operator === "typeof" && inBooleanPosition - ) { - return true; - } - - if (node.operator === "!") { - return isConstant(node.argument, true); - } - - return isConstant(node.argument, false); - - case "BinaryExpression": - return isConstant(node.left, false) && - isConstant(node.right, false) && - node.operator !== "in"; - - case "LogicalExpression": { - const isLeftConstant = isConstant(node.left, inBooleanPosition); - const isRightConstant = isConstant(node.right, inBooleanPosition); - const isLeftShortCircuit = (isLeftConstant && isLogicalIdentity(node.left, node.operator)); - const isRightShortCircuit = (inBooleanPosition && isRightConstant && isLogicalIdentity(node.right, node.operator)); - - return (isLeftConstant && isRightConstant) || - isLeftShortCircuit || - isRightShortCircuit; - } - case "NewExpression": - return inBooleanPosition; - case "AssignmentExpression": - if (node.operator === "=") { - return isConstant(node.right, inBooleanPosition); - } - - if (["||=", "&&="].includes(node.operator) && inBooleanPosition) { - return isLogicalIdentity(node.right, node.operator.slice(0, -1)); - } - - return false; - - case "SequenceExpression": - return isConstant(node.expressions[node.expressions.length - 1], inBooleanPosition); - case "SpreadElement": - return isConstant(node.argument, inBooleanPosition); - case "CallExpression": - if (node.callee.type === "Identifier" && node.callee.name === "Boolean") { - if (node.arguments.length === 0 || isConstant(node.arguments[0], true)) { - return isReferenceToGlobalVariable(node.callee); - } - } - return false; - case "Identifier": - return node.name === "undefined" && isReferenceToGlobalVariable(node); - - // no default - } - return false; - } - /** * Tracks when the given node contains a constant condition. * @param {ASTNode} node The AST node to check. @@ -255,7 +62,7 @@ module.exports = { * @private */ function trackConstantConditionLoop(node) { - if (node.test && isConstant(node.test, true)) { + if (node.test && isConstant(context.getScope(), node.test, true)) { loopsInCurrentScope.add(node); } } @@ -280,7 +87,7 @@ module.exports = { * @private */ function reportIfConstant(node) { - if (node.test && isConstant(node.test, true)) { + if (node.test && isConstant(context.getScope(), node.test, true)) { context.report({ node: node.test, messageId: "unexpected" }); } } diff --git a/tools/node_modules/eslint/lib/rules/no-constructor-return.js b/tools/node_modules/eslint/lib/rules/no-constructor-return.js index f8a717c75e5261..911a32abcae552 100644 --- a/tools/node_modules/eslint/lib/rules/no-constructor-return.js +++ b/tools/node_modules/eslint/lib/rules/no-constructor-return.js @@ -15,7 +15,7 @@ module.exports = { type: "problem", docs: { - description: "disallow returning value from constructor", + description: "Disallow returning value from constructor", recommended: false, url: "https://eslint.org/docs/rules/no-constructor-return" }, diff --git a/tools/node_modules/eslint/lib/rules/no-continue.js b/tools/node_modules/eslint/lib/rules/no-continue.js index 8658a7984bb6bb..80381fc3f84e6f 100644 --- a/tools/node_modules/eslint/lib/rules/no-continue.js +++ b/tools/node_modules/eslint/lib/rules/no-continue.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `continue` statements", + description: "Disallow `continue` statements", recommended: false, url: "https://eslint.org/docs/rules/no-continue" }, diff --git a/tools/node_modules/eslint/lib/rules/no-control-regex.js b/tools/node_modules/eslint/lib/rules/no-control-regex.js index 04f3449fb1931e..ba108437257440 100644 --- a/tools/node_modules/eslint/lib/rules/no-control-regex.js +++ b/tools/node_modules/eslint/lib/rules/no-control-regex.js @@ -30,10 +30,12 @@ const collector = new (class { } } - collectControlChars(regexpStr) { + collectControlChars(regexpStr, flags) { + const uFlag = typeof flags === "string" && flags.includes("u"); + try { this._source = regexpStr; - this._validator.validatePattern(regexpStr); // Call onCharacter hook + this._validator.validatePattern(regexpStr, void 0, void 0, uFlag); // Call onCharacter hook } catch { // Ignore syntax errors in RegExp. @@ -52,7 +54,7 @@ module.exports = { type: "problem", docs: { - description: "disallow control characters in regular expressions", + description: "Disallow control characters in regular expressions", recommended: true, url: "https://eslint.org/docs/rules/no-control-regex" }, @@ -68,13 +70,15 @@ module.exports = { /** * Get the regex expression - * @param {ASTNode} node node to evaluate - * @returns {RegExp|null} Regex if found else null + * @param {ASTNode} node `Literal` node to evaluate + * @returns {{ pattern: string, flags: string | null } | null} Regex if found (the given node is either a regex literal + * or a string literal that is the pattern argument of a RegExp constructor call). Otherwise `null`. If flags cannot be determined, + * the `flags` property will be `null`. * @private */ - function getRegExpPattern(node) { + function getRegExp(node) { if (node.regex) { - return node.regex.pattern; + return node.regex; } if (typeof node.value === "string" && (node.parent.type === "NewExpression" || node.parent.type === "CallExpression") && @@ -82,7 +86,15 @@ module.exports = { node.parent.callee.name === "RegExp" && node.parent.arguments[0] === node ) { - return node.value; + const pattern = node.value; + const flags = + node.parent.arguments.length > 1 && + node.parent.arguments[1].type === "Literal" && + typeof node.parent.arguments[1].value === "string" + ? node.parent.arguments[1].value + : null; + + return { pattern, flags }; } return null; @@ -90,10 +102,11 @@ module.exports = { return { Literal(node) { - const pattern = getRegExpPattern(node); + const regExp = getRegExp(node); - if (pattern) { - const controlCharacters = collector.collectControlChars(pattern); + if (regExp) { + const { pattern, flags } = regExp; + const controlCharacters = collector.collectControlChars(pattern, flags); if (controlCharacters.length > 0) { context.report({ diff --git a/tools/node_modules/eslint/lib/rules/no-debugger.js b/tools/node_modules/eslint/lib/rules/no-debugger.js index e62db1b7393b1a..3b88079a0fb89c 100644 --- a/tools/node_modules/eslint/lib/rules/no-debugger.js +++ b/tools/node_modules/eslint/lib/rules/no-debugger.js @@ -15,7 +15,7 @@ module.exports = { type: "problem", docs: { - description: "disallow the use of `debugger`", + description: "Disallow the use of `debugger`", recommended: true, url: "https://eslint.org/docs/rules/no-debugger" }, diff --git a/tools/node_modules/eslint/lib/rules/no-delete-var.js b/tools/node_modules/eslint/lib/rules/no-delete-var.js index 1d1c710b098200..41021bd46a7b99 100644 --- a/tools/node_modules/eslint/lib/rules/no-delete-var.js +++ b/tools/node_modules/eslint/lib/rules/no-delete-var.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow deleting variables", + description: "Disallow deleting variables", recommended: true, url: "https://eslint.org/docs/rules/no-delete-var" }, diff --git a/tools/node_modules/eslint/lib/rules/no-div-regex.js b/tools/node_modules/eslint/lib/rules/no-div-regex.js index 175f6c20104d3a..dd1c5782a58940 100644 --- a/tools/node_modules/eslint/lib/rules/no-div-regex.js +++ b/tools/node_modules/eslint/lib/rules/no-div-regex.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow division operators explicitly at the beginning of regular expressions", + description: "Disallow division operators explicitly at the beginning of regular expressions", recommended: false, url: "https://eslint.org/docs/rules/no-div-regex" }, 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 13090e19a87e28..faf253793ecb79 100644 --- a/tools/node_modules/eslint/lib/rules/no-dupe-args.js +++ b/tools/node_modules/eslint/lib/rules/no-dupe-args.js @@ -15,7 +15,7 @@ module.exports = { type: "problem", docs: { - description: "disallow duplicate arguments in `function` definitions", + description: "Disallow duplicate arguments in `function` definitions", recommended: true, url: "https://eslint.org/docs/rules/no-dupe-args" }, 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 ae61f164ca9218..8eca7878a4628e 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 @@ -17,7 +17,7 @@ module.exports = { type: "problem", docs: { - description: "disallow duplicate class members", + description: "Disallow duplicate class members", recommended: true, url: "https://eslint.org/docs/rules/no-dupe-class-members" }, diff --git a/tools/node_modules/eslint/lib/rules/no-dupe-else-if.js b/tools/node_modules/eslint/lib/rules/no-dupe-else-if.js index 1e1d549185d72b..49db5ec7c6c824 100644 --- a/tools/node_modules/eslint/lib/rules/no-dupe-else-if.js +++ b/tools/node_modules/eslint/lib/rules/no-dupe-else-if.js @@ -52,7 +52,7 @@ module.exports = { type: "problem", docs: { - description: "disallow duplicate conditions in if-else-if chains", + description: "Disallow duplicate conditions in if-else-if chains", recommended: true, url: "https://eslint.org/docs/rules/no-dupe-else-if" }, 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 dac13cf9e098c2..65c34bc5fd1eb5 100644 --- a/tools/node_modules/eslint/lib/rules/no-dupe-keys.js +++ b/tools/node_modules/eslint/lib/rules/no-dupe-keys.js @@ -88,7 +88,7 @@ module.exports = { type: "problem", docs: { - description: "disallow duplicate keys in object literals", + description: "Disallow duplicate keys in object literals", recommended: true, url: "https://eslint.org/docs/rules/no-dupe-keys" }, diff --git a/tools/node_modules/eslint/lib/rules/no-duplicate-case.js b/tools/node_modules/eslint/lib/rules/no-duplicate-case.js index a0c0b31308b0e8..d436afdd00731b 100644 --- a/tools/node_modules/eslint/lib/rules/no-duplicate-case.js +++ b/tools/node_modules/eslint/lib/rules/no-duplicate-case.js @@ -22,7 +22,7 @@ module.exports = { type: "problem", docs: { - description: "disallow duplicate case labels", + description: "Disallow duplicate case labels", recommended: true, url: "https://eslint.org/docs/rules/no-duplicate-case" }, 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 947bb30c2e175a..619e2588e91c36 100644 --- a/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js +++ b/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js @@ -233,7 +233,7 @@ module.exports = { type: "problem", docs: { - description: "disallow duplicate module imports", + description: "Disallow duplicate module imports", recommended: false, url: "https://eslint.org/docs/rules/no-duplicate-imports" }, 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 3662fc8c6e727d..d1da3aa49cb4ff 100644 --- a/tools/node_modules/eslint/lib/rules/no-else-return.js +++ b/tools/node_modules/eslint/lib/rules/no-else-return.js @@ -22,7 +22,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `else` blocks after `return` statements in `if` statements", + description: "Disallow `else` blocks after `return` statements in `if` statements", recommended: false, url: "https://eslint.org/docs/rules/no-else-return" }, diff --git a/tools/node_modules/eslint/lib/rules/no-empty-character-class.js b/tools/node_modules/eslint/lib/rules/no-empty-character-class.js index f75f59191aae40..2d294f4bded549 100644 --- a/tools/node_modules/eslint/lib/rules/no-empty-character-class.js +++ b/tools/node_modules/eslint/lib/rules/no-empty-character-class.js @@ -30,7 +30,7 @@ module.exports = { type: "problem", docs: { - description: "disallow empty character classes in regular expressions", + description: "Disallow empty character classes in regular expressions", recommended: true, url: "https://eslint.org/docs/rules/no-empty-character-class" }, 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 6e73d63b98a4fc..4c9daa931e2699 100644 --- a/tools/node_modules/eslint/lib/rules/no-empty-function.js +++ b/tools/node_modules/eslint/lib/rules/no-empty-function.js @@ -95,7 +95,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow empty functions", + description: "Disallow empty functions", recommended: false, url: "https://eslint.org/docs/rules/no-empty-function" }, @@ -144,7 +144,7 @@ module.exports = { filter: astUtils.isCommentToken }); - if (allowed.indexOf(kind) === -1 && + if (!allowed.includes(kind) && node.body.type === "BlockStatement" && node.body.body.length === 0 && innerComments.length === 0 diff --git a/tools/node_modules/eslint/lib/rules/no-empty-pattern.js b/tools/node_modules/eslint/lib/rules/no-empty-pattern.js index 2de575fcf0849f..5a497f039720d3 100644 --- a/tools/node_modules/eslint/lib/rules/no-empty-pattern.js +++ b/tools/node_modules/eslint/lib/rules/no-empty-pattern.js @@ -14,7 +14,7 @@ module.exports = { type: "problem", docs: { - description: "disallow empty destructuring patterns", + description: "Disallow empty destructuring patterns", recommended: true, url: "https://eslint.org/docs/rules/no-empty-pattern" }, diff --git a/tools/node_modules/eslint/lib/rules/no-empty.js b/tools/node_modules/eslint/lib/rules/no-empty.js index f04ee2cb3209cc..459140a2e70574 100644 --- a/tools/node_modules/eslint/lib/rules/no-empty.js +++ b/tools/node_modules/eslint/lib/rules/no-empty.js @@ -20,7 +20,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow empty block statements", + description: "Disallow empty block statements", recommended: true, url: "https://eslint.org/docs/rules/no-empty" }, diff --git a/tools/node_modules/eslint/lib/rules/no-eq-null.js b/tools/node_modules/eslint/lib/rules/no-eq-null.js index b693737126d62c..9a886803dc5196 100644 --- a/tools/node_modules/eslint/lib/rules/no-eq-null.js +++ b/tools/node_modules/eslint/lib/rules/no-eq-null.js @@ -16,7 +16,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `null` comparisons without type-checking operators", + description: "Disallow `null` comparisons without type-checking operators", recommended: false, url: "https://eslint.org/docs/rules/no-eq-null" }, diff --git a/tools/node_modules/eslint/lib/rules/no-eval.js b/tools/node_modules/eslint/lib/rules/no-eval.js index ae6d71b80c99e3..03f7b1f691c16e 100644 --- a/tools/node_modules/eslint/lib/rules/no-eval.js +++ b/tools/node_modules/eslint/lib/rules/no-eval.js @@ -43,7 +43,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow the use of `eval()`", + description: "Disallow the use of `eval()`", recommended: false, url: "https://eslint.org/docs/rules/no-eval" }, @@ -72,21 +72,25 @@ module.exports = { let funcInfo = null; /** - * Pushs a variable scope (Program or Function) information to the stack. + * Pushs a `this` scope (non-arrow function, class static block, or class field initializer) information to the stack. + * Top-level scopes are handled separately. * * 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, - * FunctionDeclaration, FunctionExpression, and ArrowFunctionExpression. + * @param {ASTNode} node A node of the scope. + * For functions, this is one of FunctionDeclaration, FunctionExpression. + * For class static blocks, this is StaticBlock. + * For class field initializers, this can be any node that is PropertyDefinition#value. * @returns {void} */ - function enterVarScope(node) { + function enterThisScope(node) { const strict = context.getScope().isStrict; funcInfo = { upper: funcInfo, node, strict, + isTopLevelOfScript: false, defaultThis: false, initialized: strict }; @@ -96,7 +100,7 @@ module.exports = { * Pops a variable scope from the stack. * @returns {void} */ - function exitVarScope() { + function exitThisScope() { funcInfo = funcInfo.upper; } @@ -222,12 +226,14 @@ module.exports = { strict = scope.isStrict || node.sourceType === "module" || - (features.globalReturn && scope.childScopes[0].isStrict); + (features.globalReturn && scope.childScopes[0].isStrict), + isTopLevelOfScript = node.sourceType !== "module" && !features.globalReturn; funcInfo = { upper: null, node, strict, + isTopLevelOfScript, defaultThis: true, initialized: true }; @@ -236,21 +242,19 @@ module.exports = { "Program:exit"() { const globalScope = context.getScope(); - exitVarScope(); + exitThisScope(); reportAccessingEval(globalScope); reportAccessingEvalViaGlobalObject(globalScope); }, - FunctionDeclaration: enterVarScope, - "FunctionDeclaration:exit": exitVarScope, - FunctionExpression: enterVarScope, - "FunctionExpression:exit": exitVarScope, - ArrowFunctionExpression: enterVarScope, - "ArrowFunctionExpression:exit": exitVarScope, - "PropertyDefinition > *.value": enterVarScope, - "PropertyDefinition > *.value:exit": exitVarScope, - StaticBlock: enterVarScope, - "StaticBlock:exit": exitVarScope, + FunctionDeclaration: enterThisScope, + "FunctionDeclaration:exit": exitThisScope, + FunctionExpression: enterThisScope, + "FunctionExpression:exit": exitThisScope, + "PropertyDefinition > *.value": enterThisScope, + "PropertyDefinition > *.value:exit": exitThisScope, + StaticBlock: enterThisScope, + "StaticBlock:exit": exitThisScope, ThisExpression(node) { if (!isMember(node.parent, "eval")) { @@ -269,7 +273,8 @@ module.exports = { ); } - if (!funcInfo.strict && funcInfo.defaultThis) { + // `this` at the top level of scripts always refers to the global object + if (funcInfo.isTopLevelOfScript || (!funcInfo.strict && funcInfo.defaultThis)) { // `this.eval` is possible built-in `eval`. report(node.parent); 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 3db14206b0b3fe..4c77b1128adbbd 100644 --- a/tools/node_modules/eslint/lib/rules/no-ex-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-ex-assign.js @@ -17,7 +17,7 @@ module.exports = { type: "problem", docs: { - description: "disallow reassigning exceptions in `catch` clauses", + description: "Disallow reassigning exceptions in `catch` clauses", recommended: true, url: "https://eslint.org/docs/rules/no-ex-assign" }, diff --git a/tools/node_modules/eslint/lib/rules/no-extend-native.js b/tools/node_modules/eslint/lib/rules/no-extend-native.js index 771200f26f7579..52c6bd3110331e 100644 --- a/tools/node_modules/eslint/lib/rules/no-extend-native.js +++ b/tools/node_modules/eslint/lib/rules/no-extend-native.js @@ -22,7 +22,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow extending native types", + description: "Disallow extending native types", recommended: false, url: "https://eslint.org/docs/rules/no-extend-native" }, 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 561cb1a33f8591..caf6d8b1f80e6d 100644 --- a/tools/node_modules/eslint/lib/rules/no-extra-bind.js +++ b/tools/node_modules/eslint/lib/rules/no-extra-bind.js @@ -26,7 +26,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unnecessary calls to `.bind()`", + description: "Disallow unnecessary calls to `.bind()`", recommended: false, url: "https://eslint.org/docs/rules/no-extra-bind" }, 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 f45ac616ed9077..1c2bc4e5032066 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 @@ -24,7 +24,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unnecessary boolean casts", + description: "Disallow unnecessary boolean casts", recommended: true, url: "https://eslint.org/docs/rules/no-extra-boolean-cast" }, @@ -51,13 +51,13 @@ module.exports = { const sourceCode = context.getSourceCode(); // Node types which have a test which will coerce values to booleans. - const BOOLEAN_NODE_TYPES = [ + const BOOLEAN_NODE_TYPES = new Set([ "IfStatement", "DoWhileStatement", "WhileStatement", "ConditionalExpression", "ForStatement" - ]; + ]); /** * Check if a node is a Boolean function or constructor. @@ -95,7 +95,7 @@ module.exports = { (isBooleanFunctionOrConstructorCall(node.parent) && node === node.parent.arguments[0]) || - (BOOLEAN_NODE_TYPES.indexOf(node.parent.type) !== -1 && + (BOOLEAN_NODE_TYPES.has(node.parent.type) && node === node.parent.test) || // ! 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 9186a9faca127f..bda3dd0efb00fc 100644 --- a/tools/node_modules/eslint/lib/rules/no-extra-label.js +++ b/tools/node_modules/eslint/lib/rules/no-extra-label.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unnecessary labels", + description: "Disallow unnecessary labels", recommended: false, url: "https://eslint.org/docs/rules/no-extra-label" }, 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 5b54ae26fe3e50..5ae9af8fd54dbf 100644 --- a/tools/node_modules/eslint/lib/rules/no-extra-parens.js +++ b/tools/node_modules/eslint/lib/rules/no-extra-parens.js @@ -17,7 +17,7 @@ module.exports = { type: "layout", docs: { - description: "disallow unnecessary parentheses", + description: "Disallow unnecessary parentheses", recommended: false, url: "https://eslint.org/docs/rules/no-extra-parens" }, 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 89d9fce57f0576..c61ad37dce8df6 100644 --- a/tools/node_modules/eslint/lib/rules/no-extra-semi.js +++ b/tools/node_modules/eslint/lib/rules/no-extra-semi.js @@ -22,7 +22,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unnecessary semicolons", + description: "Disallow unnecessary semicolons", recommended: true, url: "https://eslint.org/docs/rules/no-extra-semi" }, @@ -98,7 +98,7 @@ module.exports = { "WithStatement" ]; - if (allowedParentTypes.indexOf(parent.type) === -1) { + if (!allowedParentTypes.includes(parent.type)) { report(node); } }, diff --git a/tools/node_modules/eslint/lib/rules/no-fallthrough.js b/tools/node_modules/eslint/lib/rules/no-fallthrough.js index f3b7c8554ad7b2..b51faa87bae7dc 100644 --- a/tools/node_modules/eslint/lib/rules/no-fallthrough.js +++ b/tools/node_modules/eslint/lib/rules/no-fallthrough.js @@ -64,7 +64,7 @@ module.exports = { type: "problem", docs: { - description: "disallow fallthrough of `case` statements", + description: "Disallow fallthrough of `case` statements", recommended: true, url: "https://eslint.org/docs/rules/no-fallthrough" }, diff --git a/tools/node_modules/eslint/lib/rules/no-floating-decimal.js b/tools/node_modules/eslint/lib/rules/no-floating-decimal.js index 8831bb824d07ce..cce50bf9dadb85 100644 --- a/tools/node_modules/eslint/lib/rules/no-floating-decimal.js +++ b/tools/node_modules/eslint/lib/rules/no-floating-decimal.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow leading or trailing decimal points in numeric literals", + description: "Disallow leading or trailing decimal points in numeric literals", recommended: false, url: "https://eslint.org/docs/rules/no-floating-decimal" }, 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 04a7dd370551a5..2c8fa6a8e08e09 100644 --- a/tools/node_modules/eslint/lib/rules/no-func-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-func-assign.js @@ -17,7 +17,7 @@ module.exports = { type: "problem", docs: { - description: "disallow reassigning `function` declarations", + description: "Disallow reassigning `function` declarations", recommended: true, url: "https://eslint.org/docs/rules/no-func-assign" }, 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 340c6c798c39fb..9f2f0ee3642f47 100644 --- a/tools/node_modules/eslint/lib/rules/no-global-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-global-assign.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow assignments to native objects or read-only global variables", + description: "Disallow assignments to native objects or read-only global variables", recommended: true, url: "https://eslint.org/docs/rules/no-global-assign" }, @@ -78,7 +78,7 @@ module.exports = { * @returns {void} */ function checkVariable(variable) { - if (variable.writeable === false && exceptions.indexOf(variable.name) === -1) { + if (variable.writeable === false && !exceptions.includes(variable.name)) { variable.references.forEach(checkReference); } } 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 f646093f55581b..c2367715d9da7d 100644 --- a/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js +++ b/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js @@ -30,9 +30,9 @@ function parseOptions(options) { } /** - * Checks whether or not a node is a double logical nigating. + * Checks whether or not a node is a double logical negating. * @param {ASTNode} node An UnaryExpression node to check. - * @returns {boolean} Whether or not the node is a double logical nigating. + * @returns {boolean} Whether or not the node is a double logical negating. */ function isDoubleLogicalNegating(node) { return ( @@ -173,7 +173,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow shorthand type conversions", + description: "Disallow shorthand type conversions", recommended: false, url: "https://eslint.org/docs/rules/no-implicit-coercion" }, @@ -257,7 +257,7 @@ module.exports = { let operatorAllowed; // !!foo - operatorAllowed = options.allow.indexOf("!!") >= 0; + operatorAllowed = options.allow.includes("!!"); if (!operatorAllowed && options.boolean && isDoubleLogicalNegating(node)) { const recommendation = `Boolean(${sourceCode.getText(node.argument.argument)})`; @@ -265,7 +265,7 @@ module.exports = { } // ~foo.indexOf(bar) - operatorAllowed = options.allow.indexOf("~") >= 0; + operatorAllowed = options.allow.includes("~"); if (!operatorAllowed && options.boolean && isBinaryNegatingOfIndexOf(node)) { // `foo?.indexOf(bar) !== -1` will be true (== found) if the `foo` is nullish. So use `>= 0` in that case. @@ -276,7 +276,7 @@ module.exports = { } // +foo - operatorAllowed = options.allow.indexOf("+") >= 0; + operatorAllowed = options.allow.includes("+"); if (!operatorAllowed && options.number && node.operator === "+" && !isNumeric(node.argument)) { const recommendation = `Number(${sourceCode.getText(node.argument)})`; @@ -289,7 +289,7 @@ module.exports = { let operatorAllowed; // 1 * foo - operatorAllowed = options.allow.indexOf("*") >= 0; + operatorAllowed = options.allow.includes("*"); const nonNumericOperand = !operatorAllowed && options.number && isMultiplyByOne(node) && getNonNumericOperand(node); if (nonNumericOperand) { @@ -299,7 +299,7 @@ module.exports = { } // "" + foo - operatorAllowed = options.allow.indexOf("+") >= 0; + operatorAllowed = options.allow.includes("+"); if (!operatorAllowed && options.string && isConcatWithEmptyString(node)) { const recommendation = `String(${sourceCode.getText(getNonEmptyOperand(node))})`; @@ -310,7 +310,7 @@ module.exports = { AssignmentExpression(node) { // foo += "" - const operatorAllowed = options.allow.indexOf("+") >= 0; + const operatorAllowed = options.allow.includes("+"); if (!operatorAllowed && options.string && isAppendEmptyString(node)) { const code = sourceCode.getText(getNonEmptyOperand(node)); diff --git a/tools/node_modules/eslint/lib/rules/no-implicit-globals.js b/tools/node_modules/eslint/lib/rules/no-implicit-globals.js index 5dd6aa71acd862..934630ea0708d6 100644 --- a/tools/node_modules/eslint/lib/rules/no-implicit-globals.js +++ b/tools/node_modules/eslint/lib/rules/no-implicit-globals.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow declarations in the global scope", + description: "Disallow declarations in the global scope", recommended: false, url: "https://eslint.org/docs/rules/no-implicit-globals" }, 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 38de5b31ccc377..44f146171aa027 100644 --- a/tools/node_modules/eslint/lib/rules/no-implied-eval.js +++ b/tools/node_modules/eslint/lib/rules/no-implied-eval.js @@ -22,7 +22,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow the use of `eval()`-like methods", + description: "Disallow the use of `eval()`-like methods", recommended: false, url: "https://eslint.org/docs/rules/no-implied-eval" }, diff --git a/tools/node_modules/eslint/lib/rules/no-import-assign.js b/tools/node_modules/eslint/lib/rules/no-import-assign.js index 385386e9a43790..fc104fe6c46b69 100644 --- a/tools/node_modules/eslint/lib/rules/no-import-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-import-assign.js @@ -180,7 +180,7 @@ module.exports = { type: "problem", docs: { - description: "disallow assigning to imported bindings", + description: "Disallow assigning to imported bindings", recommended: true, url: "https://eslint.org/docs/rules/no-import-assign" }, diff --git a/tools/node_modules/eslint/lib/rules/no-inline-comments.js b/tools/node_modules/eslint/lib/rules/no-inline-comments.js index 2ed7feb46b839d..366f567f67095d 100644 --- a/tools/node_modules/eslint/lib/rules/no-inline-comments.js +++ b/tools/node_modules/eslint/lib/rules/no-inline-comments.js @@ -16,7 +16,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow inline comments after code", + description: "Disallow inline comments after code", recommended: false, url: "https://eslint.org/docs/rules/no-inline-comments" }, diff --git a/tools/node_modules/eslint/lib/rules/no-inner-declarations.js b/tools/node_modules/eslint/lib/rules/no-inner-declarations.js index 3b0feb71a3faa4..932816641e090b 100644 --- a/tools/node_modules/eslint/lib/rules/no-inner-declarations.js +++ b/tools/node_modules/eslint/lib/rules/no-inner-declarations.js @@ -48,7 +48,7 @@ module.exports = { type: "problem", docs: { - description: "disallow variable or `function` declarations in nested blocks", + description: "Disallow variable or `function` declarations in nested blocks", recommended: true, url: "https://eslint.org/docs/rules/no-inner-declarations" }, diff --git a/tools/node_modules/eslint/lib/rules/no-invalid-regexp.js b/tools/node_modules/eslint/lib/rules/no-invalid-regexp.js index 92ac5125e60a29..0f1d9c7bedc696 100644 --- a/tools/node_modules/eslint/lib/rules/no-invalid-regexp.js +++ b/tools/node_modules/eslint/lib/rules/no-invalid-regexp.js @@ -23,7 +23,7 @@ module.exports = { type: "problem", docs: { - description: "disallow invalid regular expression strings in `RegExp` constructors", + description: "Disallow invalid regular expression strings in `RegExp` constructors", recommended: true, url: "https://eslint.org/docs/rules/no-invalid-regexp" }, 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 64e4d964a8444b..b9cb43af5d7c2d 100644 --- a/tools/node_modules/eslint/lib/rules/no-invalid-this.js +++ b/tools/node_modules/eslint/lib/rules/no-invalid-this.js @@ -1,5 +1,5 @@ /** - * @fileoverview A rule to disallow `this` keywords outside of classes or class-like objects. + * @fileoverview A rule to disallow `this` keywords in contexts where the value of `this` is `undefined`. * @author Toru Nagashima */ @@ -36,7 +36,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `this` keywords outside of classes or class-like objects", + description: "Disallow use of `this` in contexts where the value of `this` is `undefined`", recommended: false, url: "https://eslint.org/docs/rules/no-invalid-this" }, @@ -98,11 +98,11 @@ module.exports = { const scope = context.getScope(); const features = context.parserOptions.ecmaFeatures || {}; + // `this` at the top level of scripts always refers to the global object stack.push({ init: true, node, valid: !( - scope.isStrict || node.sourceType === "module" || (features.globalReturn && scope.childScopes[0].isStrict) ) diff --git a/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js b/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js index 65c4d67285cb1b..d1646c7b8a16e3 100644 --- a/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js +++ b/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js @@ -31,7 +31,7 @@ module.exports = { type: "problem", docs: { - description: "disallow irregular whitespace", + description: "Disallow irregular whitespace", recommended: true, url: "https://eslint.org/docs/rules/no-irregular-whitespace" }, diff --git a/tools/node_modules/eslint/lib/rules/no-iterator.js b/tools/node_modules/eslint/lib/rules/no-iterator.js index d11267286c808c..3550c7b111b43c 100644 --- a/tools/node_modules/eslint/lib/rules/no-iterator.js +++ b/tools/node_modules/eslint/lib/rules/no-iterator.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow the use of the `__iterator__` property", + description: "Disallow the use of the `__iterator__` property", recommended: false, url: "https://eslint.org/docs/rules/no-iterator" }, diff --git a/tools/node_modules/eslint/lib/rules/no-label-var.js b/tools/node_modules/eslint/lib/rules/no-label-var.js index 50211811ac80f1..a07d283f522b5e 100644 --- a/tools/node_modules/eslint/lib/rules/no-label-var.js +++ b/tools/node_modules/eslint/lib/rules/no-label-var.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow labels that share a name with a variable", + description: "Disallow labels that share a name with a variable", recommended: false, url: "https://eslint.org/docs/rules/no-label-var" }, diff --git a/tools/node_modules/eslint/lib/rules/no-labels.js b/tools/node_modules/eslint/lib/rules/no-labels.js index 2e79f378a9bf1e..6112d04affb437 100644 --- a/tools/node_modules/eslint/lib/rules/no-labels.js +++ b/tools/node_modules/eslint/lib/rules/no-labels.js @@ -20,7 +20,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow labeled statements", + description: "Disallow labeled statements", recommended: false, url: "https://eslint.org/docs/rules/no-labels" }, 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 f9fe9514dd7f64..486a76ffdc9bc1 100644 --- a/tools/node_modules/eslint/lib/rules/no-lone-blocks.js +++ b/tools/node_modules/eslint/lib/rules/no-lone-blocks.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unnecessary nested blocks", + description: "Disallow unnecessary nested blocks", recommended: false, url: "https://eslint.org/docs/rules/no-lone-blocks" }, diff --git a/tools/node_modules/eslint/lib/rules/no-lonely-if.js b/tools/node_modules/eslint/lib/rules/no-lonely-if.js index 9abd4650b56198..0774b9fa30fceb 100644 --- a/tools/node_modules/eslint/lib/rules/no-lonely-if.js +++ b/tools/node_modules/eslint/lib/rules/no-lonely-if.js @@ -14,7 +14,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `if` statements as the only statement in `else` blocks", + description: "Disallow `if` statements as the only statement in `else` blocks", recommended: false, url: "https://eslint.org/docs/rules/no-lonely-if" }, 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 c5460616dc13cc..f81a71336800a8 100644 --- a/tools/node_modules/eslint/lib/rules/no-loop-func.js +++ b/tools/node_modules/eslint/lib/rules/no-loop-func.js @@ -125,7 +125,7 @@ function isSafe(loopNode, reference) { * The reference is every reference of the upper scope's variable we are * looking now. * - * It's safeafe if the reference matches one of the following condition. + * It's safe 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. @@ -154,7 +154,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow function declarations that contain unsafe references inside loop statements", + description: "Disallow function declarations that contain unsafe references inside loop statements", recommended: false, url: "https://eslint.org/docs/rules/no-loop-func" }, diff --git a/tools/node_modules/eslint/lib/rules/no-loss-of-precision.js b/tools/node_modules/eslint/lib/rules/no-loss-of-precision.js index fefc7b768fe9bc..6dc6d864dcdf99 100644 --- a/tools/node_modules/eslint/lib/rules/no-loss-of-precision.js +++ b/tools/node_modules/eslint/lib/rules/no-loss-of-precision.js @@ -15,7 +15,7 @@ module.exports = { type: "problem", docs: { - description: "disallow literal numbers that lose precision", + description: "Disallow literal numbers that lose precision", recommended: true, url: "https://eslint.org/docs/rules/no-loss-of-precision" }, 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 dfcd593ecbef51..9b08588155652f 100644 --- a/tools/node_modules/eslint/lib/rules/no-magic-numbers.js +++ b/tools/node_modules/eslint/lib/rules/no-magic-numbers.js @@ -32,7 +32,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow magic numbers", + description: "Disallow magic numbers", recommended: false, url: "https://eslint.org/docs/rules/no-magic-numbers" }, @@ -80,7 +80,7 @@ module.exports = { const config = context.options[0] || {}, detectObjects = !!config.detectObjects, enforceConst = !!config.enforceConst, - ignore = (config.ignore || []).map(normalizeIgnoreValue), + ignore = new Set((config.ignore || []).map(normalizeIgnoreValue)), ignoreArrayIndexes = !!config.ignoreArrayIndexes, ignoreDefaultValues = !!config.ignoreDefaultValues; @@ -92,7 +92,7 @@ module.exports = { * @returns {boolean} true if the value is ignored */ function isIgnoredValue(value) { - return ignore.indexOf(value) !== -1; + return ignore.has(value); } /** @@ -209,7 +209,7 @@ module.exports = { }); } } else if ( - okTypes.indexOf(parent.type) === -1 || + !okTypes.includes(parent.type) || (parent.type === "AssignmentExpression" && parent.left.type === "Identifier") ) { context.report({ 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 94b28784a1032f..667d066e81c7ea 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 @@ -4,13 +4,16 @@ "use strict"; const { CALL, CONSTRUCT, ReferenceTracker, getStringIfConstant } = require("eslint-utils"); -const { RegExpParser, visitRegExpAST } = require("regexpp"); +const { RegExpValidator, RegExpParser, visitRegExpAST } = require("regexpp"); const { isCombiningCharacter, isEmojiModifier, isRegionalIndicatorSymbol, isSurrogatePair } = require("./utils/unicode"); +const astUtils = require("./utils/ast-utils.js"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ +const REGEXPP_LATEST_ECMA_VERSION = 2022; + /** * Iterate character sequences of a given nodes. * @@ -104,11 +107,13 @@ module.exports = { type: "problem", docs: { - description: "disallow characters which are made with multiple code points in character class syntax", + description: "Disallow characters which are made with multiple code points in character class syntax", recommended: true, url: "https://eslint.org/docs/rules/no-misleading-character-class" }, + hasSuggestions: true, + schema: [], messages: { @@ -116,10 +121,12 @@ module.exports = { combiningClass: "Unexpected combined character in character class.", emojiModifier: "Unexpected modified Emoji in character class.", regionalIndicatorSymbol: "Unexpected national flag in character class.", - zwj: "Unexpected joined character sequence in character class." + zwj: "Unexpected joined character sequence in character class.", + suggestUnicodeFlag: "Add unicode 'u' flag to regex." } }, create(context) { + const sourceCode = context.getSourceCode(); const parser = new RegExpParser(); /** @@ -127,17 +134,10 @@ module.exports = { * @param {Node} node The node to report. * @param {string} pattern The regular expression pattern to verify. * @param {string} flags The flags of the regular expression. + * @param {Function} unicodeFixer Fixer for missing "u" flag. * @returns {void} */ - function verify(node, pattern, flags) { - const has = { - surrogatePairWithoutUFlag: false, - combiningClass: false, - variationSelector: false, - emojiModifier: false, - regionalIndicatorSymbol: false, - zwj: false - }; + function verify(node, pattern, flags, unicodeFixer) { let patternNode; try { @@ -153,26 +153,75 @@ module.exports = { return; } + const foundKinds = new Set(); + visitRegExpAST(patternNode, { onCharacterClassEnter(ccNode) { for (const chars of iterateCharacterSequence(ccNode.elements)) { for (const kind of kinds) { - has[kind] = has[kind] || hasCharacterSequence[kind](chars); + if (hasCharacterSequence[kind](chars)) { + foundKinds.add(kind); + } } } } }); - for (const kind of kinds) { - if (has[kind]) { - context.report({ node, messageId: kind }); + for (const kind of foundKinds) { + let suggest; + + if (kind === "surrogatePairWithoutUFlag") { + suggest = [{ + messageId: "suggestUnicodeFlag", + fix: unicodeFixer + }]; } + + context.report({ + node, + messageId: kind, + suggest + }); } } + /** + * Checks if the given regular expression pattern would be valid with the `u` flag. + * @param {string} pattern The regular expression pattern to verify. + * @returns {boolean} `true` if the pattern would be valid with the `u` flag. + * `false` if the pattern would be invalid with the `u` flag or the configured + * ecmaVersion doesn't support the `u` flag. + */ + function isValidWithUnicodeFlag(pattern) { + const { ecmaVersion } = context.parserOptions; + + // ecmaVersion is unknown or it doesn't support the 'u' flag + if (typeof ecmaVersion !== "number" || ecmaVersion <= 5) { + return false; + } + + const validator = new RegExpValidator({ + ecmaVersion: Math.min(ecmaVersion + 2009, REGEXPP_LATEST_ECMA_VERSION) + }); + + try { + validator.validatePattern(pattern, void 0, void 0, /* uFlag = */ true); + } catch { + return false; + } + + return true; + } + return { "Literal[regex]"(node) { - verify(node, node.regex.pattern, node.regex.flags); + verify(node, node.regex.pattern, node.regex.flags, fixer => { + if (!isValidWithUnicodeFlag(node.regex.pattern)) { + return null; + } + + return fixer.insertTextAfter(node, "u"); + }); }, "Program"() { const scope = context.getScope(); @@ -191,7 +240,31 @@ module.exports = { const flags = getStringIfConstant(flagsNode, scope); if (typeof pattern === "string") { - verify(node, pattern, flags || ""); + verify(node, pattern, flags || "", fixer => { + + if (!isValidWithUnicodeFlag(pattern)) { + return null; + } + + if (node.arguments.length === 1) { + const penultimateToken = sourceCode.getLastToken(node, { skip: 1 }); // skip closing parenthesis + + return fixer.insertTextAfter( + penultimateToken, + astUtils.isCommaToken(penultimateToken) + ? ' "u",' + : ', "u"' + ); + } + + if ((flagsNode.type === "Literal" && typeof flagsNode.value === "string") || flagsNode.type === "TemplateLiteral") { + const range = [flagsNode.range[0], flagsNode.range[1] - 1]; + + return fixer.insertTextAfterRange(range, "u"); + } + + return null; + }); } } } 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 c75d01147c9030..cb6e9363c15801 100644 --- a/tools/node_modules/eslint/lib/rules/no-mixed-operators.js +++ b/tools/node_modules/eslint/lib/rules/no-mixed-operators.js @@ -64,7 +64,7 @@ function normalizeOptions(options = {}) { * @returns {boolean} `true` if such group existed. */ function includesBothInAGroup(groups, left, right) { - return groups.some(group => group.indexOf(left) !== -1 && group.indexOf(right) !== -1); + return groups.some(group => group.includes(left) && group.includes(right)); } /** @@ -88,7 +88,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow mixed binary operators", + description: "Disallow mixed binary operators", recommended: false, url: "https://eslint.org/docs/rules/no-mixed-operators" }, 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 5e05cf7a72adcb..4e97057441601f 100644 --- a/tools/node_modules/eslint/lib/rules/no-mixed-requires.js +++ b/tools/node_modules/eslint/lib/rules/no-mixed-requires.js @@ -20,7 +20,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `require` calls to be mixed with regular variable declarations", + description: "Disallow `require` calls to be mixed with regular variable declarations", recommended: false, url: "https://eslint.org/docs/rules/no-mixed-requires" }, @@ -160,7 +160,7 @@ module.exports = { return REQ_COMPUTED; } - if (BUILTIN_MODULES.indexOf(arg.value) !== -1) { + if (BUILTIN_MODULES.includes(arg.value)) { // "var fs = require('fs');" return REQ_CORE; diff --git a/tools/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js b/tools/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js index f82a352caa4f33..b2d5a040b843b9 100644 --- a/tools/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js +++ b/tools/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js @@ -14,7 +14,7 @@ module.exports = { type: "layout", docs: { - description: "disallow mixed spaces and tabs for indentation", + description: "Disallow mixed spaces and tabs for indentation", recommended: true, url: "https://eslint.org/docs/rules/no-mixed-spaces-and-tabs" }, diff --git a/tools/node_modules/eslint/lib/rules/no-multi-assign.js b/tools/node_modules/eslint/lib/rules/no-multi-assign.js index be4d41f33d6a30..392b33ffd2d0c2 100644 --- a/tools/node_modules/eslint/lib/rules/no-multi-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-multi-assign.js @@ -16,7 +16,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow use of chained assignment expressions", + description: "Disallow use of chained assignment expressions", recommended: false, url: "https://eslint.org/docs/rules/no-multi-assign" }, 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 e37aae0a16e9e1..d8d3c6509ccaf4 100644 --- a/tools/node_modules/eslint/lib/rules/no-multi-spaces.js +++ b/tools/node_modules/eslint/lib/rules/no-multi-spaces.js @@ -17,7 +17,7 @@ module.exports = { type: "layout", docs: { - description: "disallow multiple spaces", + description: "Disallow multiple spaces", recommended: false, url: "https://eslint.org/docs/rules/no-multi-spaces" }, @@ -56,7 +56,7 @@ module.exports = { const options = context.options[0] || {}; const ignoreEOLComments = options.ignoreEOLComments; const exceptions = Object.assign({ Property: true }, options.exceptions); - const hasExceptions = Object.keys(exceptions).filter(key => exceptions[key]).length > 0; + const hasExceptions = Object.keys(exceptions).some(key => exceptions[key]); /** * Formats value of given comment token for error message by truncating its length. diff --git a/tools/node_modules/eslint/lib/rules/no-multi-str.js b/tools/node_modules/eslint/lib/rules/no-multi-str.js index 6a17d581b98fa1..c4400f45ee6574 100644 --- a/tools/node_modules/eslint/lib/rules/no-multi-str.js +++ b/tools/node_modules/eslint/lib/rules/no-multi-str.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow multiline strings", + description: "Disallow multiline strings", recommended: false, url: "https://eslint.org/docs/rules/no-multi-str" }, diff --git a/tools/node_modules/eslint/lib/rules/no-multiple-empty-lines.js b/tools/node_modules/eslint/lib/rules/no-multiple-empty-lines.js index d012303cc33a1a..e8b0f9859c0316 100644 --- a/tools/node_modules/eslint/lib/rules/no-multiple-empty-lines.js +++ b/tools/node_modules/eslint/lib/rules/no-multiple-empty-lines.js @@ -15,7 +15,7 @@ module.exports = { type: "layout", docs: { - description: "disallow multiple empty lines", + description: "Disallow multiple empty lines", recommended: false, url: "https://eslint.org/docs/rules/no-multiple-empty-lines" }, 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 1814a5b3c5b6cc..634fea93308d5e 100644 --- a/tools/node_modules/eslint/lib/rules/no-native-reassign.js +++ b/tools/node_modules/eslint/lib/rules/no-native-reassign.js @@ -16,7 +16,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow assignments to native objects or read-only global variables", + description: "Disallow assignments to native objects or read-only global variables", recommended: false, url: "https://eslint.org/docs/rules/no-native-reassign" }, @@ -81,7 +81,7 @@ module.exports = { * @returns {void} */ function checkVariable(variable) { - if (variable.writeable === false && exceptions.indexOf(variable.name) === -1) { + if (variable.writeable === false && !exceptions.includes(variable.name)) { variable.references.forEach(checkReference); } } diff --git a/tools/node_modules/eslint/lib/rules/no-negated-condition.js b/tools/node_modules/eslint/lib/rules/no-negated-condition.js index a2870137f57ef5..387617767fa517 100644 --- a/tools/node_modules/eslint/lib/rules/no-negated-condition.js +++ b/tools/node_modules/eslint/lib/rules/no-negated-condition.js @@ -14,7 +14,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow negated conditions", + description: "Disallow negated conditions", recommended: false, url: "https://eslint.org/docs/rules/no-negated-condition" }, diff --git a/tools/node_modules/eslint/lib/rules/no-negated-in-lhs.js b/tools/node_modules/eslint/lib/rules/no-negated-in-lhs.js index 95ab58a080f598..975a8d75cb1cb8 100644 --- a/tools/node_modules/eslint/lib/rules/no-negated-in-lhs.js +++ b/tools/node_modules/eslint/lib/rules/no-negated-in-lhs.js @@ -16,7 +16,7 @@ module.exports = { type: "problem", docs: { - description: "disallow negating the left operand in `in` expressions", + description: "Disallow negating the left operand in `in` expressions", recommended: false, url: "https://eslint.org/docs/rules/no-negated-in-lhs" }, diff --git a/tools/node_modules/eslint/lib/rules/no-nested-ternary.js b/tools/node_modules/eslint/lib/rules/no-nested-ternary.js index c87875e40400f7..fe97823416b723 100644 --- a/tools/node_modules/eslint/lib/rules/no-nested-ternary.js +++ b/tools/node_modules/eslint/lib/rules/no-nested-ternary.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow nested ternary expressions", + description: "Disallow nested ternary expressions", recommended: false, url: "https://eslint.org/docs/rules/no-nested-ternary" }, diff --git a/tools/node_modules/eslint/lib/rules/no-new-func.js b/tools/node_modules/eslint/lib/rules/no-new-func.js index 3b5994335194eb..4759f380b29f5e 100644 --- a/tools/node_modules/eslint/lib/rules/no-new-func.js +++ b/tools/node_modules/eslint/lib/rules/no-new-func.js @@ -27,7 +27,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `new` operators with the `Function` object", + description: "Disallow `new` operators with the `Function` object", recommended: false, url: "https://eslint.org/docs/rules/no-new-func" }, diff --git a/tools/node_modules/eslint/lib/rules/no-new-object.js b/tools/node_modules/eslint/lib/rules/no-new-object.js index 1a5784df24d6a7..4dbe8db736503d 100644 --- a/tools/node_modules/eslint/lib/rules/no-new-object.js +++ b/tools/node_modules/eslint/lib/rules/no-new-object.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `Object` constructors", + description: "Disallow `Object` constructors", recommended: false, url: "https://eslint.org/docs/rules/no-new-object" }, @@ -29,7 +29,7 @@ module.exports = { schema: [], messages: { - preferLiteral: "The object literal notation {} is preferrable." + preferLiteral: "The object literal notation {} is preferable." } }, diff --git a/tools/node_modules/eslint/lib/rules/no-new-require.js b/tools/node_modules/eslint/lib/rules/no-new-require.js index 5dadf6c2538e95..63ca057b741354 100644 --- a/tools/node_modules/eslint/lib/rules/no-new-require.js +++ b/tools/node_modules/eslint/lib/rules/no-new-require.js @@ -20,7 +20,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `new` operators with calls to `require`", + description: "Disallow `new` operators with calls to `require`", recommended: false, url: "https://eslint.org/docs/rules/no-new-require" }, diff --git a/tools/node_modules/eslint/lib/rules/no-new-symbol.js b/tools/node_modules/eslint/lib/rules/no-new-symbol.js index 6acfca94358c4f..534201c0ba662d 100644 --- a/tools/node_modules/eslint/lib/rules/no-new-symbol.js +++ b/tools/node_modules/eslint/lib/rules/no-new-symbol.js @@ -15,7 +15,7 @@ module.exports = { type: "problem", docs: { - description: "disallow `new` operators with the `Symbol` object", + description: "Disallow `new` operators with the `Symbol` object", recommended: true, url: "https://eslint.org/docs/rules/no-new-symbol" }, diff --git a/tools/node_modules/eslint/lib/rules/no-new-wrappers.js b/tools/node_modules/eslint/lib/rules/no-new-wrappers.js index 4667d581f65447..ff44efc59305b4 100644 --- a/tools/node_modules/eslint/lib/rules/no-new-wrappers.js +++ b/tools/node_modules/eslint/lib/rules/no-new-wrappers.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `new` operators with the `String`, `Number`, and `Boolean` objects", + description: "Disallow `new` operators with the `String`, `Number`, and `Boolean` objects", recommended: false, url: "https://eslint.org/docs/rules/no-new-wrappers" }, @@ -34,7 +34,7 @@ module.exports = { NewExpression(node) { const wrapperObjects = ["String", "Number", "Boolean"]; - if (wrapperObjects.indexOf(node.callee.name) > -1) { + if (wrapperObjects.includes(node.callee.name)) { context.report({ node, messageId: "noConstructor", diff --git a/tools/node_modules/eslint/lib/rules/no-new.js b/tools/node_modules/eslint/lib/rules/no-new.js index 5b0976534d6e3d..c434505758890d 100644 --- a/tools/node_modules/eslint/lib/rules/no-new.js +++ b/tools/node_modules/eslint/lib/rules/no-new.js @@ -16,7 +16,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `new` operators outside of assignments or comparisons", + description: "Disallow `new` operators outside of assignments or comparisons", recommended: false, url: "https://eslint.org/docs/rules/no-new" }, diff --git a/tools/node_modules/eslint/lib/rules/no-nonoctal-decimal-escape.js b/tools/node_modules/eslint/lib/rules/no-nonoctal-decimal-escape.js index 3edd269faeb33d..63e2264b33a62c 100644 --- a/tools/node_modules/eslint/lib/rules/no-nonoctal-decimal-escape.js +++ b/tools/node_modules/eslint/lib/rules/no-nonoctal-decimal-escape.js @@ -30,7 +30,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `\\8` and `\\9` escape sequences in string literals", + description: "Disallow `\\8` and `\\9` escape sequences in string literals", recommended: true, url: "https://eslint.org/docs/rules/no-nonoctal-decimal-escape" }, diff --git a/tools/node_modules/eslint/lib/rules/no-obj-calls.js b/tools/node_modules/eslint/lib/rules/no-obj-calls.js index 667ba69d803109..86355d85d36aad 100644 --- a/tools/node_modules/eslint/lib/rules/no-obj-calls.js +++ b/tools/node_modules/eslint/lib/rules/no-obj-calls.js @@ -43,7 +43,7 @@ module.exports = { type: "problem", docs: { - description: "disallow calling global object properties as functions", + description: "Disallow calling global object properties as functions", recommended: true, url: "https://eslint.org/docs/rules/no-obj-calls" }, diff --git a/tools/node_modules/eslint/lib/rules/no-octal-escape.js b/tools/node_modules/eslint/lib/rules/no-octal-escape.js index 9ac56ab7bea8a5..81a8a74cddb7ed 100644 --- a/tools/node_modules/eslint/lib/rules/no-octal-escape.js +++ b/tools/node_modules/eslint/lib/rules/no-octal-escape.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow octal escape sequences in string literals", + description: "Disallow octal escape sequences in string literals", recommended: false, url: "https://eslint.org/docs/rules/no-octal-escape" }, diff --git a/tools/node_modules/eslint/lib/rules/no-octal.js b/tools/node_modules/eslint/lib/rules/no-octal.js index 44df45fdacda79..eec56919f1eb7d 100644 --- a/tools/node_modules/eslint/lib/rules/no-octal.js +++ b/tools/node_modules/eslint/lib/rules/no-octal.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow octal literals", + description: "Disallow octal literals", recommended: true, url: "https://eslint.org/docs/rules/no-octal" }, @@ -23,7 +23,7 @@ module.exports = { schema: [], messages: { - noOcatal: "Octal literals should not be used." + noOctal: "Octal literals should not be used." } }, @@ -35,7 +35,7 @@ module.exports = { if (typeof node.value === "number" && /^0[0-9]/u.test(node.raw)) { context.report({ node, - messageId: "noOcatal" + messageId: "noOctal" }); } } 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 87a6b70238247e..f89435c867576f 100644 --- a/tools/node_modules/eslint/lib/rules/no-param-reassign.js +++ b/tools/node_modules/eslint/lib/rules/no-param-reassign.js @@ -16,7 +16,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow reassigning `function` parameters", + description: "Disallow reassigning `function` parameters", recommended: false, url: "https://eslint.org/docs/rules/no-param-reassign" }, diff --git a/tools/node_modules/eslint/lib/rules/no-path-concat.js b/tools/node_modules/eslint/lib/rules/no-path-concat.js index 8d570a3778f3d3..8502c511ed903c 100644 --- a/tools/node_modules/eslint/lib/rules/no-path-concat.js +++ b/tools/node_modules/eslint/lib/rules/no-path-concat.js @@ -19,7 +19,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow string concatenation with `__dirname` and `__filename`", + description: "Disallow string concatenation with `__dirname` and `__filename`", recommended: false, url: "https://eslint.org/docs/rules/no-path-concat" }, diff --git a/tools/node_modules/eslint/lib/rules/no-plusplus.js b/tools/node_modules/eslint/lib/rules/no-plusplus.js index 2565da43231a25..cda6b05bfa855a 100644 --- a/tools/node_modules/eslint/lib/rules/no-plusplus.js +++ b/tools/node_modules/eslint/lib/rules/no-plusplus.js @@ -51,7 +51,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow the unary operators `++` and `--`", + description: "Disallow the unary operators `++` and `--`", recommended: false, url: "https://eslint.org/docs/rules/no-plusplus" }, diff --git a/tools/node_modules/eslint/lib/rules/no-process-env.js b/tools/node_modules/eslint/lib/rules/no-process-env.js index f7c2c718fd04cb..5db7c94b13b6f3 100644 --- a/tools/node_modules/eslint/lib/rules/no-process-env.js +++ b/tools/node_modules/eslint/lib/rules/no-process-env.js @@ -19,7 +19,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow the use of `process.env`", + description: "Disallow the use of `process.env`", recommended: false, url: "https://eslint.org/docs/rules/no-process-env" }, diff --git a/tools/node_modules/eslint/lib/rules/no-process-exit.js b/tools/node_modules/eslint/lib/rules/no-process-exit.js index 251044b31c91c5..ca3ecfe6f5fc10 100644 --- a/tools/node_modules/eslint/lib/rules/no-process-exit.js +++ b/tools/node_modules/eslint/lib/rules/no-process-exit.js @@ -19,7 +19,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow the use of `process.exit()`", + description: "Disallow the use of `process.exit()`", recommended: false, url: "https://eslint.org/docs/rules/no-process-exit" }, diff --git a/tools/node_modules/eslint/lib/rules/no-promise-executor-return.js b/tools/node_modules/eslint/lib/rules/no-promise-executor-return.js index e40d4bcb3f52bd..caa195ffa07e5e 100644 --- a/tools/node_modules/eslint/lib/rules/no-promise-executor-return.js +++ b/tools/node_modules/eslint/lib/rules/no-promise-executor-return.js @@ -69,7 +69,7 @@ module.exports = { type: "problem", docs: { - description: "disallow returning values from Promise executor functions", + description: "Disallow returning values from Promise executor functions", recommended: false, url: "https://eslint.org/docs/rules/no-promise-executor-return" }, diff --git a/tools/node_modules/eslint/lib/rules/no-proto.js b/tools/node_modules/eslint/lib/rules/no-proto.js index e6659e59c6bc27..771d206a88d2e1 100644 --- a/tools/node_modules/eslint/lib/rules/no-proto.js +++ b/tools/node_modules/eslint/lib/rules/no-proto.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow the use of the `__proto__` property", + description: "Disallow the use of the `__proto__` property", recommended: false, url: "https://eslint.org/docs/rules/no-proto" }, diff --git a/tools/node_modules/eslint/lib/rules/no-prototype-builtins.js b/tools/node_modules/eslint/lib/rules/no-prototype-builtins.js index ae736981e71865..ea2763396d06c2 100644 --- a/tools/node_modules/eslint/lib/rules/no-prototype-builtins.js +++ b/tools/node_modules/eslint/lib/rules/no-prototype-builtins.js @@ -20,7 +20,7 @@ module.exports = { type: "problem", docs: { - description: "disallow calling some `Object.prototype` methods directly on objects", + description: "Disallow calling some `Object.prototype` methods directly on objects", recommended: true, url: "https://eslint.org/docs/rules/no-prototype-builtins" }, @@ -33,11 +33,11 @@ module.exports = { }, create(context) { - const DISALLOWED_PROPS = [ + const DISALLOWED_PROPS = new Set([ "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable" - ]; + ]); /** * Reports if a disallowed property is used in a CallExpression @@ -54,7 +54,7 @@ module.exports = { const propName = astUtils.getStaticPropertyName(callee); - if (propName !== null && DISALLOWED_PROPS.indexOf(propName) > -1) { + if (propName !== null && DISALLOWED_PROPS.has(propName)) { context.report({ messageId: "prototypeBuildIn", loc: callee.property.loc, diff --git a/tools/node_modules/eslint/lib/rules/no-redeclare.js b/tools/node_modules/eslint/lib/rules/no-redeclare.js index cc71a61234954f..59749cb6643456 100644 --- a/tools/node_modules/eslint/lib/rules/no-redeclare.js +++ b/tools/node_modules/eslint/lib/rules/no-redeclare.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow variable redeclaration", + description: "Disallow variable redeclaration", recommended: true, url: "https://eslint.org/docs/rules/no-redeclare" }, 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 400c72b5027a8a..6d74aabe2632b3 100644 --- a/tools/node_modules/eslint/lib/rules/no-regex-spaces.js +++ b/tools/node_modules/eslint/lib/rules/no-regex-spaces.js @@ -39,7 +39,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow multiple spaces in regular expressions", + description: "Disallow multiple spaces in regular expressions", recommended: true, url: "https://eslint.org/docs/rules/no-regex-spaces" }, diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-exports.js b/tools/node_modules/eslint/lib/rules/no-restricted-exports.js index 5166cecaef2db4..d99e8928209b91 100644 --- a/tools/node_modules/eslint/lib/rules/no-restricted-exports.js +++ b/tools/node_modules/eslint/lib/rules/no-restricted-exports.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow specified names in exports", + description: "Disallow specified names in exports", recommended: false, url: "https://eslint.org/docs/rules/no-restricted-exports" }, diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-globals.js b/tools/node_modules/eslint/lib/rules/no-restricted-globals.js index 09d347890ca89f..b666238382dec8 100644 --- a/tools/node_modules/eslint/lib/rules/no-restricted-globals.js +++ b/tools/node_modules/eslint/lib/rules/no-restricted-globals.js @@ -14,7 +14,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow specified global variables", + description: "Disallow specified global variables", recommended: false, url: "https://eslint.org/docs/rules/no-restricted-globals" }, 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 3bb45d715ff1bf..f4838679efcf6d 100644 --- a/tools/node_modules/eslint/lib/rules/no-restricted-imports.js +++ b/tools/node_modules/eslint/lib/rules/no-restricted-imports.js @@ -58,6 +58,14 @@ const arrayOfStringsOrObjectPatterns = { items: { type: "object", properties: { + importNames: { + type: "array", + items: { + type: "string" + }, + minItems: 1, + uniqueItems: true + }, group: { type: "array", items: { @@ -88,7 +96,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow specified modules when loaded by `import`", + description: "Disallow specified modules when loaded by `import`", recommended: false, url: "https://eslint.org/docs/rules/no-restricted-imports" }, @@ -102,6 +110,14 @@ module.exports = { // eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period patternWithCustomMessage: "'{{importSource}}' import is restricted from being used by a pattern. {{customMessage}}", + patternAndImportName: "'{{importName}}' import from '{{importSource}}' is restricted from being used by a pattern.", + // eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period + patternAndImportNameWithCustomMessage: "'{{importName}}' import from '{{importSource}}' is restricted from being used by a pattern. {{customMessage}}", + + patternAndEverything: "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted from being used by a pattern.", + // eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period + patternAndEverythingWithCustomMessage: "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted from being used by a pattern. {{customMessage}}", + everything: "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted.", // eslint-disable-next-line eslint-plugin/report-message-format -- Custom message might not end in a period everythingWithCustomMessage: "* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted. {{customMessage}}", @@ -159,9 +175,10 @@ module.exports = { } // relative paths are supported for this rule - const restrictedPatternGroups = restrictedPatterns.map(({ group, message, caseSensitive }) => ({ + const restrictedPatternGroups = restrictedPatterns.map(({ group, message, caseSensitive, importNames }) => ({ matcher: ignore({ allowRelativePaths: true, ignorecase: !caseSensitive }).add(group), - customMessage: message + customMessage: message, + importNames })); // if no imports are restricted we don't need to check @@ -234,20 +251,68 @@ module.exports = { /** * Report a restricted path specifically for patterns. * @param {node} node representing the restricted path reference - * @param {Object} group contains a Ignore instance for paths, and the customMessage to show if it fails + * @param {Object} group contains an Ignore instance for paths, the customMessage to show on failure, + * and any restricted import names that have been specified in the config + * @param {Map} importNames Map of import names that are being imported * @returns {void} * @private */ - function reportPathForPatterns(node, group) { + function reportPathForPatterns(node, group, importNames) { const importSource = node.source.value.trim(); - context.report({ - node, - messageId: group.customMessage ? "patternWithCustomMessage" : "patterns", - data: { - importSource, - customMessage: group.customMessage + const customMessage = group.customMessage; + const restrictedImportNames = group.importNames; + + /* + * If we are not restricting to any specific import names and just the pattern itself, + * report the error and move on + */ + if (!restrictedImportNames) { + context.report({ + node, + messageId: customMessage ? "patternWithCustomMessage" : "patterns", + data: { + importSource, + customMessage + } + }); + return; + } + + if (importNames.has("*")) { + const specifierData = importNames.get("*")[0]; + + context.report({ + node, + messageId: customMessage ? "patternAndEverythingWithCustomMessage" : "patternAndEverything", + loc: specifierData.loc, + data: { + importSource, + importNames: restrictedImportNames, + customMessage + } + }); + } + + restrictedImportNames.forEach(importName => { + if (!importNames.has(importName)) { + return; } + + const specifiers = importNames.get(importName); + + specifiers.forEach(specifier => { + context.report({ + node, + messageId: customMessage ? "patternAndImportNameWithCustomMessage" : "patternAndImportName", + loc: specifier.loc, + data: { + importSource, + customMessage, + importName + } + }); + }); }); } @@ -304,7 +369,7 @@ module.exports = { checkRestrictedPathAndReport(importSource, importNames, node); restrictedPatternGroups.forEach(group => { if (isRestrictedPattern(importSource, group)) { - reportPathForPatterns(node, group); + reportPathForPatterns(node, group, importNames); } }); } diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-modules.js b/tools/node_modules/eslint/lib/rules/no-restricted-modules.js index d92aa7a86bcfee..c37694f90461f9 100644 --- a/tools/node_modules/eslint/lib/rules/no-restricted-modules.js +++ b/tools/node_modules/eslint/lib/rules/no-restricted-modules.js @@ -49,7 +49,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow specified modules when loaded by `require`", + description: "Disallow specified modules when loaded by `require`", recommended: false, url: "https://eslint.org/docs/rules/no-restricted-modules" }, diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-properties.js b/tools/node_modules/eslint/lib/rules/no-restricted-properties.js index 1e8c7a89aedae7..7c03498563f6e4 100644 --- a/tools/node_modules/eslint/lib/rules/no-restricted-properties.js +++ b/tools/node_modules/eslint/lib/rules/no-restricted-properties.js @@ -17,7 +17,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow certain properties on certain objects", + description: "Disallow certain properties on certain objects", recommended: false, url: "https://eslint.org/docs/rules/no-restricted-properties" }, diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js b/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js index 713d1157c4d692..76369cfd539e62 100644 --- a/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js +++ b/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js @@ -14,7 +14,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow specified syntax", + description: "Disallow specified syntax", recommended: false, url: "https://eslint.org/docs/rules/no-restricted-syntax" }, diff --git a/tools/node_modules/eslint/lib/rules/no-return-assign.js b/tools/node_modules/eslint/lib/rules/no-return-assign.js index 4fd7a3ddba587f..ccaf2c1c158a23 100644 --- a/tools/node_modules/eslint/lib/rules/no-return-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-return-assign.js @@ -26,7 +26,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow assignment operators in `return` statements", + description: "Disallow assignment operators in `return` statements", recommended: false, url: "https://eslint.org/docs/rules/no-return-assign" }, diff --git a/tools/node_modules/eslint/lib/rules/no-return-await.js b/tools/node_modules/eslint/lib/rules/no-return-await.js index 191bf42dcf98ee..3007c8c877d6a0 100644 --- a/tools/node_modules/eslint/lib/rules/no-return-await.js +++ b/tools/node_modules/eslint/lib/rules/no-return-await.js @@ -16,7 +16,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unnecessary `return await`", + description: "Disallow unnecessary `return await`", recommended: false, diff --git a/tools/node_modules/eslint/lib/rules/no-script-url.js b/tools/node_modules/eslint/lib/rules/no-script-url.js index 0eef25418402c0..41479006ee9273 100644 --- a/tools/node_modules/eslint/lib/rules/no-script-url.js +++ b/tools/node_modules/eslint/lib/rules/no-script-url.js @@ -18,7 +18,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `javascript:` urls", + description: "Disallow `javascript:` urls", recommended: false, url: "https://eslint.org/docs/rules/no-script-url" }, 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 060cc8e353ecfa..348ee8dfc5fd1c 100644 --- a/tools/node_modules/eslint/lib/rules/no-self-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-self-assign.js @@ -130,7 +130,7 @@ module.exports = { type: "problem", docs: { - description: "disallow assignments where both sides are exactly the same", + description: "Disallow assignments where both sides are exactly the same", recommended: true, url: "https://eslint.org/docs/rules/no-self-assign" }, diff --git a/tools/node_modules/eslint/lib/rules/no-self-compare.js b/tools/node_modules/eslint/lib/rules/no-self-compare.js index c3512895e13474..dab0db4b917484 100644 --- a/tools/node_modules/eslint/lib/rules/no-self-compare.js +++ b/tools/node_modules/eslint/lib/rules/no-self-compare.js @@ -16,7 +16,7 @@ module.exports = { type: "problem", docs: { - description: "disallow comparisons where both sides are exactly the same", + description: "Disallow comparisons where both sides are exactly the same", recommended: false, url: "https://eslint.org/docs/rules/no-self-compare" }, diff --git a/tools/node_modules/eslint/lib/rules/no-sequences.js b/tools/node_modules/eslint/lib/rules/no-sequences.js index 376aec3798805a..2c0c27c3feabb7 100644 --- a/tools/node_modules/eslint/lib/rules/no-sequences.js +++ b/tools/node_modules/eslint/lib/rules/no-sequences.js @@ -29,7 +29,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow comma operators", + description: "Disallow comma operators", recommended: false, url: "https://eslint.org/docs/rules/no-sequences" }, diff --git a/tools/node_modules/eslint/lib/rules/no-setter-return.js b/tools/node_modules/eslint/lib/rules/no-setter-return.js index 7204e5c0c4d5c4..25e8f1428b2575 100644 --- a/tools/node_modules/eslint/lib/rules/no-setter-return.js +++ b/tools/node_modules/eslint/lib/rules/no-setter-return.js @@ -142,7 +142,7 @@ module.exports = { type: "problem", docs: { - description: "disallow returning values from setters", + description: "Disallow returning values from setters", recommended: true, url: "https://eslint.org/docs/rules/no-setter-return" }, diff --git a/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js b/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js index 52620e58d1c1c1..a7d6d00f1645fc 100644 --- a/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js +++ b/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js @@ -27,7 +27,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow identifiers from shadowing restricted names", + description: "Disallow identifiers from shadowing restricted names", recommended: true, url: "https://eslint.org/docs/rules/no-shadow-restricted-names" }, diff --git a/tools/node_modules/eslint/lib/rules/no-shadow.js b/tools/node_modules/eslint/lib/rules/no-shadow.js index 43d7d738e29503..3af9354ebd7de1 100644 --- a/tools/node_modules/eslint/lib/rules/no-shadow.js +++ b/tools/node_modules/eslint/lib/rules/no-shadow.js @@ -15,8 +15,8 @@ const astUtils = require("./utils/ast-utils"); // Helpers //------------------------------------------------------------------------------ -const FUNC_EXPR_NODE_TYPES = ["ArrowFunctionExpression", "FunctionExpression"]; -const CALL_EXPR_NODE_TYPE = ["CallExpression"]; +const FUNC_EXPR_NODE_TYPES = new Set(["ArrowFunctionExpression", "FunctionExpression"]); +const CALL_EXPR_NODE_TYPE = new Set(["CallExpression"]); const FOR_IN_OF_TYPE = /^For(?:In|Of)Statement$/u; const SENTINEL_TYPE = /^(?:(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression|CatchClause|ImportDeclaration|ExportNamedDeclaration)$/u; @@ -30,7 +30,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow variable declarations from shadowing variables declared in the outer scope", + description: "Disallow variable declarations from shadowing variables declared in the outer scope", recommended: false, url: "https://eslint.org/docs/rules/no-shadow" }, @@ -123,7 +123,7 @@ module.exports = { const { variableScope } = variable.scope; - if (!(FUNC_EXPR_NODE_TYPES.includes(variableScope.block.type) && getOuterScope(variableScope) === shadowedVariable.scope)) { + if (!(FUNC_EXPR_NODE_TYPES.has(variableScope.block.type) && getOuterScope(variableScope) === shadowedVariable.scope)) { return false; } @@ -132,7 +132,7 @@ module.exports = { const callExpression = findSelfOrAncestor( parent, - node => CALL_EXPR_NODE_TYPE.includes(node.type) + node => CALL_EXPR_NODE_TYPE.has(node.type) ); if (!callExpression) { @@ -173,7 +173,7 @@ module.exports = { * @returns {boolean} Whether or not the variable name is allowed. */ function isAllowed(variable) { - return options.allow.indexOf(variable.name) !== -1; + return options.allow.includes(variable.name); } /** diff --git a/tools/node_modules/eslint/lib/rules/no-spaced-func.js b/tools/node_modules/eslint/lib/rules/no-spaced-func.js index 1d2994333e125e..97e2da06b0f75c 100644 --- a/tools/node_modules/eslint/lib/rules/no-spaced-func.js +++ b/tools/node_modules/eslint/lib/rules/no-spaced-func.js @@ -16,7 +16,7 @@ module.exports = { type: "layout", docs: { - description: "disallow spacing between function identifiers and their applications (deprecated)", + description: "Disallow spacing between function identifiers and their applications (deprecated)", recommended: false, url: "https://eslint.org/docs/rules/no-spaced-func" }, diff --git a/tools/node_modules/eslint/lib/rules/no-sparse-arrays.js b/tools/node_modules/eslint/lib/rules/no-sparse-arrays.js index c95bc203c4a96c..0e95fe4af7baf2 100644 --- a/tools/node_modules/eslint/lib/rules/no-sparse-arrays.js +++ b/tools/node_modules/eslint/lib/rules/no-sparse-arrays.js @@ -14,7 +14,7 @@ module.exports = { type: "problem", docs: { - description: "disallow sparse arrays", + description: "Disallow sparse arrays", recommended: true, url: "https://eslint.org/docs/rules/no-sparse-arrays" }, @@ -37,7 +37,7 @@ module.exports = { ArrayExpression(node) { - const emptySpot = node.elements.indexOf(null) > -1; + const emptySpot = node.elements.includes(null); if (emptySpot) { context.report({ node, messageId: "unexpectedSparseArray" }); diff --git a/tools/node_modules/eslint/lib/rules/no-sync.js b/tools/node_modules/eslint/lib/rules/no-sync.js index 3536d9f2a39a9b..71360c6bd3238f 100644 --- a/tools/node_modules/eslint/lib/rules/no-sync.js +++ b/tools/node_modules/eslint/lib/rules/no-sync.js @@ -20,7 +20,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow synchronous methods", + description: "Disallow synchronous methods", recommended: false, url: "https://eslint.org/docs/rules/no-sync" }, diff --git a/tools/node_modules/eslint/lib/rules/no-tabs.js b/tools/node_modules/eslint/lib/rules/no-tabs.js index 9758b850be161a..1b4834e09a73e6 100644 --- a/tools/node_modules/eslint/lib/rules/no-tabs.js +++ b/tools/node_modules/eslint/lib/rules/no-tabs.js @@ -22,7 +22,7 @@ module.exports = { type: "layout", docs: { - description: "disallow all tabs", + description: "Disallow all tabs", recommended: false, url: "https://eslint.org/docs/rules/no-tabs" }, diff --git a/tools/node_modules/eslint/lib/rules/no-template-curly-in-string.js b/tools/node_modules/eslint/lib/rules/no-template-curly-in-string.js index 1901460f3d2263..4f4e9ee17e9c34 100644 --- a/tools/node_modules/eslint/lib/rules/no-template-curly-in-string.js +++ b/tools/node_modules/eslint/lib/rules/no-template-curly-in-string.js @@ -14,7 +14,7 @@ module.exports = { type: "problem", docs: { - description: "disallow template literal placeholder syntax in regular strings", + description: "Disallow template literal placeholder syntax in regular strings", recommended: false, url: "https://eslint.org/docs/rules/no-template-curly-in-string" }, diff --git a/tools/node_modules/eslint/lib/rules/no-ternary.js b/tools/node_modules/eslint/lib/rules/no-ternary.js index b0dc626832bc2e..a185808a69adbc 100644 --- a/tools/node_modules/eslint/lib/rules/no-ternary.js +++ b/tools/node_modules/eslint/lib/rules/no-ternary.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow ternary operators", + description: "Disallow ternary operators", recommended: false, url: "https://eslint.org/docs/rules/no-ternary" }, 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 929eded2443324..b4e48e8626498a 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 @@ -40,7 +40,7 @@ module.exports = { type: "problem", docs: { - description: "disallow `this`/`super` before calling `super()` in constructors", + description: "Disallow `this`/`super` before calling `super()` in constructors", recommended: true, url: "https://eslint.org/docs/rules/no-this-before-super" }, diff --git a/tools/node_modules/eslint/lib/rules/no-throw-literal.js b/tools/node_modules/eslint/lib/rules/no-throw-literal.js index c670ed9e5e1cbb..3656c83a3ffb38 100644 --- a/tools/node_modules/eslint/lib/rules/no-throw-literal.js +++ b/tools/node_modules/eslint/lib/rules/no-throw-literal.js @@ -17,7 +17,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow throwing literals as exceptions", + description: "Disallow throwing literals as exceptions", recommended: false, url: "https://eslint.org/docs/rules/no-throw-literal" }, 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 9e720ad32e8f2d..a02a880e1d6179 100644 --- a/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js +++ b/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js @@ -20,7 +20,7 @@ module.exports = { type: "layout", docs: { - description: "disallow trailing whitespace at the end of lines", + description: "Disallow trailing whitespace at the end of lines", recommended: false, url: "https://eslint.org/docs/rules/no-trailing-spaces" }, diff --git a/tools/node_modules/eslint/lib/rules/no-undef-init.js b/tools/node_modules/eslint/lib/rules/no-undef-init.js index 2c2204cf0fe2d2..2cb1c3f3710169 100644 --- a/tools/node_modules/eslint/lib/rules/no-undef-init.js +++ b/tools/node_modules/eslint/lib/rules/no-undef-init.js @@ -17,7 +17,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow initializing variables to `undefined`", + description: "Disallow initializing variables to `undefined`", recommended: false, url: "https://eslint.org/docs/rules/no-undef-init" }, diff --git a/tools/node_modules/eslint/lib/rules/no-undef.js b/tools/node_modules/eslint/lib/rules/no-undef.js index f65903245c8d6c..e920ce6c28885f 100644 --- a/tools/node_modules/eslint/lib/rules/no-undef.js +++ b/tools/node_modules/eslint/lib/rules/no-undef.js @@ -29,7 +29,7 @@ module.exports = { type: "problem", docs: { - description: "disallow the use of undeclared variables unless mentioned in `/*global */` comments", + description: "Disallow the use of undeclared variables unless mentioned in `/*global */` comments", recommended: true, url: "https://eslint.org/docs/rules/no-undef" }, diff --git a/tools/node_modules/eslint/lib/rules/no-undefined.js b/tools/node_modules/eslint/lib/rules/no-undefined.js index de396d889c0e27..e006320b522369 100644 --- a/tools/node_modules/eslint/lib/rules/no-undefined.js +++ b/tools/node_modules/eslint/lib/rules/no-undefined.js @@ -14,7 +14,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow the use of `undefined` as an identifier", + description: "Disallow the use of `undefined` as an identifier", recommended: false, url: "https://eslint.org/docs/rules/no-undefined" }, diff --git a/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js b/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js index 0ab41feb03c22f..eb3e404a66d70d 100644 --- a/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js +++ b/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow dangling underscores in identifiers", + description: "Disallow dangling underscores in identifiers", recommended: false, url: "https://eslint.org/docs/rules/no-underscore-dangle" }, @@ -49,6 +49,10 @@ module.exports = { allowFunctionParams: { type: "boolean", default: true + }, + enforceInClassFields: { + type: "boolean", + default: false } }, additionalProperties: false @@ -68,6 +72,7 @@ module.exports = { const allowAfterSuper = typeof options.allowAfterSuper !== "undefined" ? options.allowAfterSuper : false; const allowAfterThisConstructor = typeof options.allowAfterThisConstructor !== "undefined" ? options.allowAfterThisConstructor : false; const enforceInMethodNames = typeof options.enforceInMethodNames !== "undefined" ? options.enforceInMethodNames : false; + const enforceInClassFields = typeof options.enforceInClassFields !== "undefined" ? options.enforceInClassFields : false; const allowFunctionParams = typeof options.allowFunctionParams !== "undefined" ? options.allowFunctionParams : true; //------------------------------------------------------------------------- @@ -81,7 +86,7 @@ module.exports = { * @private */ function isAllowed(identifier) { - return ALLOWED_VARIABLES.some(ident => ident === identifier); + return ALLOWED_VARIABLES.includes(identifier); } /** @@ -261,6 +266,30 @@ module.exports = { } } + /** + * Check if a class field has a dangling underscore + * @param {ASTNode} node node to evaluate + * @returns {void} + * @private + */ + function checkForDanglingUnderscoreInClassField(node) { + const identifier = node.key.name; + + if (typeof identifier !== "undefined" && hasDanglingUnderscore(identifier) && + enforceInClassFields && + !isAllowed(identifier)) { + context.report({ + node, + messageId: "unexpectedUnderscore", + data: { + identifier: node.key.type === "PrivateIdentifier" + ? `#${identifier}` + : identifier + } + }); + } + } + //-------------------------------------------------------------------------- // Public API //-------------------------------------------------------------------------- @@ -270,7 +299,7 @@ module.exports = { VariableDeclarator: checkForDanglingUnderscoreInVariableExpression, MemberExpression: checkForDanglingUnderscoreInMemberExpression, MethodDefinition: checkForDanglingUnderscoreInMethod, - PropertyDefinition: checkForDanglingUnderscoreInMethod, + PropertyDefinition: checkForDanglingUnderscoreInClassField, Property: checkForDanglingUnderscoreInMethod, FunctionExpression: checkForDanglingUnderscoreInFunction, ArrowFunctionExpression: checkForDanglingUnderscoreInFunction diff --git a/tools/node_modules/eslint/lib/rules/no-unexpected-multiline.js b/tools/node_modules/eslint/lib/rules/no-unexpected-multiline.js index 60d8f3164cd9f0..2ca6731bc676ae 100644 --- a/tools/node_modules/eslint/lib/rules/no-unexpected-multiline.js +++ b/tools/node_modules/eslint/lib/rules/no-unexpected-multiline.js @@ -20,7 +20,7 @@ module.exports = { type: "problem", docs: { - description: "disallow confusing multiline expressions", + description: "Disallow confusing multiline expressions", recommended: true, url: "https://eslint.org/docs/rules/no-unexpected-multiline" }, 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 5b8da26f2d21cd..12f61e98e6a1c0 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 @@ -162,7 +162,7 @@ module.exports = { type: "problem", docs: { - description: "disallow unmodified loop conditions", + description: "Disallow unmodified loop conditions", recommended: false, url: "https://eslint.org/docs/rules/no-unmodified-loop-condition" }, 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 e00d5270a2aa05..c193282fa70314 100644 --- a/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js +++ b/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js @@ -29,7 +29,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow ternary operators when simpler alternatives exist", + description: "Disallow ternary operators when simpler alternatives exist", recommended: false, url: "https://eslint.org/docs/rules/no-unneeded-ternary" }, diff --git a/tools/node_modules/eslint/lib/rules/no-unreachable-loop.js b/tools/node_modules/eslint/lib/rules/no-unreachable-loop.js index f100263308fad6..c42c922e0c4b88 100644 --- a/tools/node_modules/eslint/lib/rules/no-unreachable-loop.js +++ b/tools/node_modules/eslint/lib/rules/no-unreachable-loop.js @@ -59,7 +59,7 @@ module.exports = { type: "problem", docs: { - description: "disallow loops with a body that allows only one iteration", + description: "Disallow loops with a body that allows only one iteration", recommended: false, url: "https://eslint.org/docs/rules/no-unreachable-loop" }, diff --git a/tools/node_modules/eslint/lib/rules/no-unreachable.js b/tools/node_modules/eslint/lib/rules/no-unreachable.js index 4dda51f11b9a9a..dea86815aac5b9 100644 --- a/tools/node_modules/eslint/lib/rules/no-unreachable.js +++ b/tools/node_modules/eslint/lib/rules/no-unreachable.js @@ -111,7 +111,7 @@ module.exports = { type: "problem", docs: { - description: "disallow unreachable code after `return`, `throw`, `continue`, and `break` statements", + description: "Disallow unreachable code after `return`, `throw`, `continue`, and `break` statements", recommended: true, url: "https://eslint.org/docs/rules/no-unreachable" }, 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 26c05eab8b0825..80adb0fea4678b 100644 --- a/tools/node_modules/eslint/lib/rules/no-unsafe-finally.js +++ b/tools/node_modules/eslint/lib/rules/no-unsafe-finally.js @@ -24,7 +24,7 @@ module.exports = { type: "problem", docs: { - description: "disallow control flow statements in `finally` blocks", + description: "Disallow control flow statements in `finally` blocks", recommended: true, url: "https://eslint.org/docs/rules/no-unsafe-finally" }, 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 057b1742acc058..5dd150f878806a 100644 --- a/tools/node_modules/eslint/lib/rules/no-unsafe-negation.js +++ b/tools/node_modules/eslint/lib/rules/no-unsafe-negation.js @@ -52,7 +52,7 @@ module.exports = { type: "problem", docs: { - description: "disallow negating the left operand of relational operators", + description: "Disallow negating the left operand of relational operators", recommended: true, url: "https://eslint.org/docs/rules/no-unsafe-negation" }, diff --git a/tools/node_modules/eslint/lib/rules/no-unsafe-optional-chaining.js b/tools/node_modules/eslint/lib/rules/no-unsafe-optional-chaining.js index 8556ccbd79dc2c..99139078198686 100644 --- a/tools/node_modules/eslint/lib/rules/no-unsafe-optional-chaining.js +++ b/tools/node_modules/eslint/lib/rules/no-unsafe-optional-chaining.js @@ -24,7 +24,7 @@ module.exports = { type: "problem", docs: { - description: "disallow use of optional chaining in contexts where the `undefined` value is not allowed", + description: "Disallow use of optional chaining in contexts where the `undefined` value is not allowed", recommended: true, url: "https://eslint.org/docs/rules/no-unsafe-optional-chaining" }, 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 68a7ebd5e00cea..d34d5844d97f6a 100644 --- a/tools/node_modules/eslint/lib/rules/no-unused-expressions.js +++ b/tools/node_modules/eslint/lib/rules/no-unused-expressions.js @@ -30,7 +30,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unused expressions", + description: "Disallow unused expressions", recommended: false, url: "https://eslint.org/docs/rules/no-unused-expressions" }, @@ -124,7 +124,7 @@ module.exports = { */ return (parent.type === "Program" || parent.type === "BlockStatement" && (/Function/u.test(grandparent.type))) && - directives(parent).indexOf(node) >= 0; + directives(parent).includes(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 f309dd12b1253c..305226a4df2e92 100644 --- a/tools/node_modules/eslint/lib/rules/no-unused-labels.js +++ b/tools/node_modules/eslint/lib/rules/no-unused-labels.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unused labels", + description: "Disallow unused labels", recommended: true, url: "https://eslint.org/docs/rules/no-unused-labels" }, diff --git a/tools/node_modules/eslint/lib/rules/no-unused-private-class-members.js b/tools/node_modules/eslint/lib/rules/no-unused-private-class-members.js index 754c36002eb94a..e62a9ed596822a 100644 --- a/tools/node_modules/eslint/lib/rules/no-unused-private-class-members.js +++ b/tools/node_modules/eslint/lib/rules/no-unused-private-class-members.js @@ -15,7 +15,7 @@ module.exports = { type: "problem", docs: { - description: "disallow unused private class members", + description: "Disallow unused private class members", recommended: false, url: "https://eslint.org/docs/rules/no-unused-private-class-members" }, 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 54e33705f7ff14..778889a7676f97 100644 --- a/tools/node_modules/eslint/lib/rules/no-unused-vars.js +++ b/tools/node_modules/eslint/lib/rules/no-unused-vars.js @@ -33,7 +33,7 @@ module.exports = { type: "problem", docs: { - description: "disallow unused variables", + description: "Disallow unused variables", recommended: true, url: "https://eslint.org/docs/rules/no-unused-vars" }, @@ -259,7 +259,7 @@ module.exports = { let scope = ref.from; while (scope) { - if (nodes.indexOf(scope.block) >= 0) { + if (nodes.includes(scope.block)) { return true; } @@ -484,12 +484,12 @@ module.exports = { } /** - * Determine if an identifier is used either in for-in loops. + * Determine if an identifier is used either in for-in or for-of loops. * @param {Reference} ref The reference to check. * @returns {boolean} whether reference is used in the for-in loops * @private */ - function isForInRef(ref) { + function isForInOfRef(ref) { let target = ref.identifier.parent; @@ -498,7 +498,7 @@ module.exports = { target = target.parent.parent; } - if (target.type !== "ForInStatement") { + if (target.type !== "ForInStatement" && target.type !== "ForOfStatement") { return false; } @@ -531,7 +531,7 @@ module.exports = { let rhsNode = null; return variable.references.some(ref => { - if (isForInRef(ref)) { + if (isForInOfRef(ref)) { return true; } 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 07d035c431ff12..592c083589c671 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 @@ -21,6 +21,7 @@ function parseOptions(options) { let functions = true; let classes = true; let variables = true; + let allowNamedExports = false; if (typeof options === "string") { functions = (options !== "nofunc"); @@ -28,9 +29,10 @@ function parseOptions(options) { functions = options.functions !== false; classes = options.classes !== false; variables = options.variables !== false; + allowNamedExports = !!options.allowNamedExports; } - return { functions, classes, variables }; + return { functions, classes, variables, allowNamedExports }; } /** @@ -224,7 +226,7 @@ module.exports = { type: "problem", docs: { - description: "disallow the use of variables before they are defined", + description: "Disallow the use of variables before they are defined", recommended: false, url: "https://eslint.org/docs/rules/no-use-before-define" }, @@ -240,7 +242,8 @@ module.exports = { properties: { functions: { type: "boolean" }, classes: { type: "boolean" }, - variables: { type: "boolean" } + variables: { type: "boolean" }, + allowNamedExports: { type: "boolean" } }, additionalProperties: false } @@ -273,6 +276,16 @@ module.exports = { return false; } + const { identifier } = reference; + + if ( + options.allowNamedExports && + identifier.parent.type === "ExportSpecifier" && + identifier.parent.local === identifier + ) { + return false; + } + const variable = reference.resolved; if (!variable || variable.defs.length === 0) { diff --git a/tools/node_modules/eslint/lib/rules/no-useless-backreference.js b/tools/node_modules/eslint/lib/rules/no-useless-backreference.js index 1a09988b80956e..f23535bc359d96 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-backreference.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-backreference.js @@ -64,7 +64,7 @@ module.exports = { type: "problem", docs: { - description: "disallow useless backreferences in regular expressions", + description: "Disallow useless backreferences in regular expressions", recommended: true, url: "https://eslint.org/docs/rules/no-useless-backreference" }, 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 8c57cd5cc9a876..2d3ae4e84aeed6 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-call.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-call.js @@ -55,7 +55,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unnecessary calls to `.call()` and `.apply()`", + description: "Disallow unnecessary calls to `.call()` and `.apply()`", recommended: false, url: "https://eslint.org/docs/rules/no-useless-call" }, diff --git a/tools/node_modules/eslint/lib/rules/no-useless-catch.js b/tools/node_modules/eslint/lib/rules/no-useless-catch.js index 325a2e58117188..36c356ecb4265f 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-catch.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-catch.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unnecessary `catch` clauses", + description: "Disallow unnecessary `catch` clauses", recommended: true, url: "https://eslint.org/docs/rules/no-useless-catch" }, diff --git a/tools/node_modules/eslint/lib/rules/no-useless-computed-key.js b/tools/node_modules/eslint/lib/rules/no-useless-computed-key.js index 7ebbe09de26bb7..e7a3dc1db6d488 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-computed-key.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-computed-key.js @@ -91,7 +91,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unnecessary computed property keys in objects and classes", + description: "Disallow unnecessary computed property keys in objects and classes", recommended: false, url: "https://eslint.org/docs/rules/no-useless-computed-key" }, 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 36ca84f90cbacf..26c5206df365a9 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-concat.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-concat.js @@ -70,7 +70,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unnecessary concatenation of literals or template literals", + description: "Disallow unnecessary concatenation of literals or template literals", recommended: false, url: "https://eslint.org/docs/rules/no-useless-concat" }, 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 6512c8b1fefbf9..38c3bc3a05cde0 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-constructor.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-constructor.js @@ -138,7 +138,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unnecessary constructors", + description: "Disallow unnecessary constructors", recommended: false, url: "https://eslint.org/docs/rules/no-useless-constructor" }, 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 123bc5b8a0169c..2046a148a17fd1 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-escape.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-escape.js @@ -84,7 +84,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow unnecessary escape characters", + description: "Disallow unnecessary escape characters", recommended: true, url: "https://eslint.org/docs/rules/no-useless-escape" }, 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 2489f57bcf52cc..908605f74cbae5 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-rename.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-rename.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow renaming import, export, and destructured assignments to the same name", + description: "Disallow renaming import, export, and destructured assignments to the same name", recommended: false, url: "https://eslint.org/docs/rules/no-useless-rename" }, 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 0baa6b2942d172..be8d4dfd3a52b4 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-return.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-return.js @@ -67,7 +67,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow redundant return statements", + description: "Disallow redundant return statements", recommended: false, url: "https://eslint.org/docs/rules/no-useless-return" }, diff --git a/tools/node_modules/eslint/lib/rules/no-var.js b/tools/node_modules/eslint/lib/rules/no-var.js index 83a1f62eb6f952..2185610ea10331 100644 --- a/tools/node_modules/eslint/lib/rules/no-var.js +++ b/tools/node_modules/eslint/lib/rules/no-var.js @@ -185,7 +185,7 @@ module.exports = { type: "suggestion", docs: { - description: "require `let` or `const` instead of `var`", + description: "Require `let` or `const` instead of `var`", recommended: false, url: "https://eslint.org/docs/rules/no-var" }, diff --git a/tools/node_modules/eslint/lib/rules/no-void.js b/tools/node_modules/eslint/lib/rules/no-void.js index 8631caf70cf96e..15c4730612d617 100644 --- a/tools/node_modules/eslint/lib/rules/no-void.js +++ b/tools/node_modules/eslint/lib/rules/no-void.js @@ -14,7 +14,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `void` operators", + description: "Disallow `void` operators", recommended: false, url: "https://eslint.org/docs/rules/no-void" }, 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 5f3ea21d7d0e86..4f867cbb707fe0 100644 --- a/tools/node_modules/eslint/lib/rules/no-warning-comments.js +++ b/tools/node_modules/eslint/lib/rules/no-warning-comments.js @@ -20,7 +20,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow specified warning terms in comments", + description: "Disallow specified warning terms in comments", recommended: false, url: "https://eslint.org/docs/rules/no-warning-comments" }, @@ -64,59 +64,45 @@ module.exports = { */ function convertToRegExp(term) { const escaped = escapeRegExp(term); - const wordBoundary = "\\b"; - const eitherOrWordBoundary = `|${wordBoundary}`; - let prefix; /* - * If the term ends in a word character (a-z0-9_), ensure a word - * boundary at the end, so that substrings do not get falsely - * matched. eg "todo" in a string such as "mastodon". - * If the term ends in a non-word character, then \b won't match on - * the boundary to the next non-word character, which would likely - * be a space. For example `/\bFIX!\b/.test('FIX! blah') === false`. - * In these cases, use no bounding match. Same applies for the - * prefix, handled below. + * When matching at the start, ignore leading whitespace, and + * there's no need to worry about word boundaries. + * + * These expressions for the prefix and suffix are designed as follows: + * ^ handles any terms at the beginning of a comment. + * e.g. terms ["TODO"] matches `//TODO something` + * $ handles any terms at the end of a comment + * e.g. terms ["TODO"] matches `// something TODO` + * \s* handles optional leading spaces (for "start" location only) + * e.g. terms ["TODO"] matches `// TODO something` + * \b handles terms preceded/followed by word boundary + * e.g. terms: ["!FIX", "FIX!"] matches `// FIX!something` or `// something!FIX` + * terms: ["FIX"] matches `// FIX!` or `// !FIX`, but not `// fixed or affix` */ - const suffix = /\w$/u.test(term) ? "\\b" : ""; + const wordBoundary = "\\b"; - if (location === "start") { + let prefix = ""; - /* - * When matching at the start, ignore leading whitespace, and - * there's no need to worry about word boundaries. - */ + if (location === "start") { prefix = "^\\s*"; } else if (/^\w/u.test(term)) { prefix = wordBoundary; - } else { - prefix = ""; } - if (location === "start") { - - /* - * For location "start" the regex should be - * ^\s*TERM\b. This checks the word boundary - * at the beginning of the comment. - */ - return new RegExp(prefix + escaped + suffix, "iu"); - } + const suffix = /\w$/u.test(term) ? wordBoundary : ""; + const flags = "iu"; // Case-insensitive with Unicode case folding. /* - * For location "anywhere" the regex should be - * \bTERM\b|\bTERM\b, this checks the entire comment - * for the term. + * For location "start", the typical regex is: + * /^\s*ESCAPED_TERM\b/iu. + * + * For location "anywhere" the typical regex is + * /\bESCAPED_TERM\b/iu + * + * If it starts or ends with non-word character, the prefix and suffix empty, respectively. */ - return new RegExp( - prefix + - escaped + - suffix + - eitherOrWordBoundary + - term + - wordBoundary, - "iu" - ); + return new RegExp(`${prefix}${escaped}${suffix}`, flags); } const warningRegExps = warningTerms.map(convertToRegExp); 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 95e920f27ea9bc..67323816f85bbe 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 @@ -20,7 +20,7 @@ module.exports = { type: "layout", docs: { - description: "disallow whitespace before properties", + description: "Disallow whitespace before properties", recommended: false, url: "https://eslint.org/docs/rules/no-whitespace-before-property" }, diff --git a/tools/node_modules/eslint/lib/rules/no-with.js b/tools/node_modules/eslint/lib/rules/no-with.js index fc93f199f87ac0..33de68d9c05ec3 100644 --- a/tools/node_modules/eslint/lib/rules/no-with.js +++ b/tools/node_modules/eslint/lib/rules/no-with.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `with` statements", + description: "Disallow `with` statements", recommended: true, url: "https://eslint.org/docs/rules/no-with" }, diff --git a/tools/node_modules/eslint/lib/rules/nonblock-statement-body-position.js b/tools/node_modules/eslint/lib/rules/nonblock-statement-body-position.js index c177cf34cee880..cefecf302a6944 100644 --- a/tools/node_modules/eslint/lib/rules/nonblock-statement-body-position.js +++ b/tools/node_modules/eslint/lib/rules/nonblock-statement-body-position.js @@ -16,7 +16,7 @@ module.exports = { type: "layout", docs: { - description: "enforce the location of single-line statements", + description: "Enforce the location of single-line statements", recommended: false, url: "https://eslint.org/docs/rules/nonblock-statement-body-position" }, 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 e052cd86493f38..2f8004918a96e4 100644 --- a/tools/node_modules/eslint/lib/rules/object-curly-newline.js +++ b/tools/node_modules/eslint/lib/rules/object-curly-newline.js @@ -150,7 +150,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent line breaks after opening and before closing braces", + description: "Enforce consistent line breaks after opening and before closing braces", recommended: false, url: "https://eslint.org/docs/rules/object-curly-newline" }, 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 9122da3ef3dbfc..d6a8e5956aeb43 100644 --- a/tools/node_modules/eslint/lib/rules/object-curly-spacing.js +++ b/tools/node_modules/eslint/lib/rules/object-curly-spacing.js @@ -16,7 +16,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing inside braces", + description: "Enforce consistent spacing inside braces", recommended: false, url: "https://eslint.org/docs/rules/object-curly-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/object-property-newline.js b/tools/node_modules/eslint/lib/rules/object-property-newline.js index dac084c3f651d1..bc079a16f45929 100644 --- a/tools/node_modules/eslint/lib/rules/object-property-newline.js +++ b/tools/node_modules/eslint/lib/rules/object-property-newline.js @@ -15,7 +15,7 @@ module.exports = { type: "layout", docs: { - description: "enforce placing object properties on separate lines", + description: "Enforce placing object properties on separate lines", recommended: false, url: "https://eslint.org/docs/rules/object-property-newline" }, diff --git a/tools/node_modules/eslint/lib/rules/object-shorthand.js b/tools/node_modules/eslint/lib/rules/object-shorthand.js index aa03450d071909..8cd3978ca354c0 100644 --- a/tools/node_modules/eslint/lib/rules/object-shorthand.js +++ b/tools/node_modules/eslint/lib/rules/object-shorthand.js @@ -28,7 +28,7 @@ module.exports = { type: "suggestion", docs: { - description: "require or disallow method and property shorthand syntax for object literals", + description: "Require or disallow method and property shorthand syntax for object literals", recommended: false, url: "https://eslint.org/docs/rules/object-shorthand" }, 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 440146b92c1c65..65be0929e715c8 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 @@ -14,7 +14,7 @@ module.exports = { type: "suggestion", docs: { - description: "require or disallow newlines around variable declarations", + description: "Require or disallow newlines around variable declarations", recommended: false, url: "https://eslint.org/docs/rules/one-var-declaration-per-line" }, diff --git a/tools/node_modules/eslint/lib/rules/one-var.js b/tools/node_modules/eslint/lib/rules/one-var.js index 1818c02e6e1415..a8e2a1de05ab92 100644 --- a/tools/node_modules/eslint/lib/rules/one-var.js +++ b/tools/node_modules/eslint/lib/rules/one-var.js @@ -34,7 +34,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce variables to be declared either together or separately in functions", + description: "Enforce variables to be declared either together or separately in functions", recommended: false, url: "https://eslint.org/docs/rules/one-var" }, diff --git a/tools/node_modules/eslint/lib/rules/operator-assignment.js b/tools/node_modules/eslint/lib/rules/operator-assignment.js index d200811634c65e..ed9cb963bf282a 100644 --- a/tools/node_modules/eslint/lib/rules/operator-assignment.js +++ b/tools/node_modules/eslint/lib/rules/operator-assignment.js @@ -22,7 +22,7 @@ const astUtils = require("./utils/ast-utils"); * shorthand form. */ function isCommutativeOperatorWithShorthand(operator) { - return ["*", "&", "^", "|"].indexOf(operator) >= 0; + return ["*", "&", "^", "|"].includes(operator); } /** @@ -33,7 +33,7 @@ function isCommutativeOperatorWithShorthand(operator) { * a shorthand form. */ function isNonCommutativeOperatorWithShorthand(operator) { - return ["+", "-", "/", "%", "<<", ">>", ">>>", "**"].indexOf(operator) >= 0; + return ["+", "-", "/", "%", "<<", ">>", ">>>", "**"].includes(operator); } //------------------------------------------------------------------------------ @@ -63,7 +63,7 @@ module.exports = { type: "suggestion", docs: { - description: "require or disallow assignment operator shorthand where possible", + description: "Require or disallow assignment operator shorthand where possible", recommended: false, url: "https://eslint.org/docs/rules/operator-assignment" }, @@ -76,8 +76,8 @@ module.exports = { fixable: "code", messages: { - replaced: "Assignment (=) can be replaced with operator assignment ({{operator}}=).", - unexpected: "Unexpected operator assignment ({{operator}}=) shorthand." + replaced: "Assignment (=) can be replaced with operator assignment ({{operator}}).", + unexpected: "Unexpected operator assignment ({{operator}}) shorthand." } }, @@ -109,11 +109,13 @@ module.exports = { const operator = expr.operator; if (isCommutativeOperatorWithShorthand(operator) || isNonCommutativeOperatorWithShorthand(operator)) { + const replacementOperator = `${operator}=`; + if (astUtils.isSameReference(left, expr.left, true)) { context.report({ node, messageId: "replaced", - data: { operator }, + data: { operator: replacementOperator }, fix(fixer) { if (canBeFixed(left) && canBeFixed(expr.left)) { const equalsToken = getOperatorToken(node); @@ -126,7 +128,7 @@ module.exports = { return null; } - return fixer.replaceText(node, `${leftText}${expr.operator}=${rightText}`); + return fixer.replaceText(node, `${leftText}${replacementOperator}${rightText}`); } return null; } @@ -141,7 +143,7 @@ module.exports = { context.report({ node, messageId: "replaced", - data: { operator } + data: { operator: replacementOperator } }); } } diff --git a/tools/node_modules/eslint/lib/rules/operator-linebreak.js b/tools/node_modules/eslint/lib/rules/operator-linebreak.js index a04f85bdea96ba..03b603e75843db 100644 --- a/tools/node_modules/eslint/lib/rules/operator-linebreak.js +++ b/tools/node_modules/eslint/lib/rules/operator-linebreak.js @@ -21,7 +21,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent linebreak style for operators", + description: "Enforce consistent linebreak style for operators", recommended: false, url: "https://eslint.org/docs/rules/operator-linebreak" }, diff --git a/tools/node_modules/eslint/lib/rules/padded-blocks.js b/tools/node_modules/eslint/lib/rules/padded-blocks.js index 336adac9a02f19..5faf434387456e 100644 --- a/tools/node_modules/eslint/lib/rules/padded-blocks.js +++ b/tools/node_modules/eslint/lib/rules/padded-blocks.js @@ -21,7 +21,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow padding within blocks", + description: "Require or disallow padding within blocks", recommended: false, url: "https://eslint.org/docs/rules/padded-blocks" }, 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 fe5d304dd5b613..9d730bffcd9025 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 @@ -431,7 +431,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow padding lines between statements", + description: "Require or disallow padding lines between statements", recommended: false, url: "https://eslint.org/docs/rules/padding-line-between-statements" }, @@ -450,8 +450,7 @@ module.exports = { type: "array", items: { enum: Object.keys(StatementTypes) }, minItems: 1, - uniqueItems: true, - additionalItems: false + uniqueItems: true } ] } @@ -466,8 +465,7 @@ module.exports = { }, additionalProperties: false, required: ["blankLine", "prev", "next"] - }, - additionalItems: false + } }, messages: { 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 55a098a60979ce..9667139a88d3fd 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js +++ b/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js @@ -151,7 +151,7 @@ module.exports = { type: "suggestion", docs: { - description: "require using arrow functions for callbacks", + description: "Require using arrow functions for callbacks", recommended: false, url: "https://eslint.org/docs/rules/prefer-arrow-callback" }, diff --git a/tools/node_modules/eslint/lib/rules/prefer-const.js b/tools/node_modules/eslint/lib/rules/prefer-const.js index 190860019d8e8f..08f4492aaea685 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-const.js +++ b/tools/node_modules/eslint/lib/rules/prefer-const.js @@ -60,7 +60,7 @@ function canBecomeVariableDeclaration(identifier) { */ function isOuterVariableInDestructing(name, initScope) { - if (initScope.through.find(ref => ref.resolved && ref.resolved.name === name)) { + if (initScope.through.some(ref => ref.resolved && ref.resolved.name === name)) { return true; } @@ -332,7 +332,7 @@ module.exports = { type: "suggestion", docs: { - description: "require `const` declarations for variables that are never reassigned after declared", + description: "Require `const` declarations for variables that are never reassigned after declared", recommended: false, url: "https://eslint.org/docs/rules/prefer-const" }, diff --git a/tools/node_modules/eslint/lib/rules/prefer-destructuring.js b/tools/node_modules/eslint/lib/rules/prefer-destructuring.js index 1f68313d6b178d..fdf46f65f59b72 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-destructuring.js +++ b/tools/node_modules/eslint/lib/rules/prefer-destructuring.js @@ -26,7 +26,7 @@ module.exports = { type: "suggestion", docs: { - description: "require destructuring from arrays and/or objects", + description: "Require destructuring from arrays and/or objects", recommended: false, url: "https://eslint.org/docs/rules/prefer-destructuring" }, diff --git a/tools/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js b/tools/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js index a291e8dec15164..fec5319723e44d 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js +++ b/tools/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js @@ -90,7 +90,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow the use of `Math.pow` in favor of the `**` operator", + description: "Disallow the use of `Math.pow` in favor of the `**` operator", recommended: false, url: "https://eslint.org/docs/rules/prefer-exponentiation-operator" }, 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 cff2d8f45d270a..1a13ffa858292d 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 @@ -33,7 +33,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce using named capture group in regular expression", + description: "Enforce using named capture group in regular expression", recommended: false, url: "https://eslint.org/docs/rules/prefer-named-capture-group" }, 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 53a515368960fc..5f70158126c961 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js +++ b/tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js @@ -45,7 +45,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals", + description: "Disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals", recommended: false, url: "https://eslint.org/docs/rules/prefer-numeric-literals" }, diff --git a/tools/node_modules/eslint/lib/rules/prefer-object-has-own.js b/tools/node_modules/eslint/lib/rules/prefer-object-has-own.js index 19abdb315655c2..023d0a64f4c5b7 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-object-has-own.js +++ b/tools/node_modules/eslint/lib/rules/prefer-object-has-own.js @@ -50,7 +50,7 @@ module.exports = { type: "suggestion", docs: { description: - "disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()`", + "Disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()`", recommended: false, url: "https://eslint.org/docs/rules/prefer-object-has-own" }, 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 b63474ef2bd376..08192001a2b8d7 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-object-spread.js +++ b/tools/node_modules/eslint/lib/rules/prefer-object-spread.js @@ -247,7 +247,7 @@ module.exports = { docs: { description: - "disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead.", + "Disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead.", recommended: false, url: "https://eslint.org/docs/rules/prefer-object-spread" }, diff --git a/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js b/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js index 60e72f451019f8..bd7bdcbf5b7b86 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js +++ b/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js @@ -16,7 +16,7 @@ module.exports = { type: "suggestion", docs: { - description: "require using Error objects as Promise rejection reasons", + description: "Require using Error objects as Promise rejection reasons", recommended: false, url: "https://eslint.org/docs/rules/prefer-promise-reject-errors" }, diff --git a/tools/node_modules/eslint/lib/rules/prefer-reflect.js b/tools/node_modules/eslint/lib/rules/prefer-reflect.js index 1367a1848df9e2..68ffa88b352441 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-reflect.js +++ b/tools/node_modules/eslint/lib/rules/prefer-reflect.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "require `Reflect` methods where applicable", + description: "Require `Reflect` methods where applicable", recommended: false, url: "https://eslint.org/docs/rules/prefer-reflect" }, @@ -106,7 +106,7 @@ module.exports = { const methodName = (node.callee.property || {}).name; const isReflectCall = (node.callee.object || {}).name === "Reflect"; const hasReflectSubstitute = Object.prototype.hasOwnProperty.call(reflectSubstitutes, methodName); - const userConfiguredException = exceptions.indexOf(methodName) !== -1; + const userConfiguredException = exceptions.includes(methodName); if (hasReflectSubstitute && !isReflectCall && !userConfiguredException) { report(node, existingNames[methodName], reflectSubstitutes[methodName]); @@ -115,7 +115,7 @@ module.exports = { UnaryExpression(node) { const isDeleteOperator = node.operator === "delete"; const targetsIdentifier = node.argument.type === "Identifier"; - const userConfiguredException = exceptions.indexOf("delete") !== -1; + const userConfiguredException = exceptions.includes("delete"); if (isDeleteOperator && !targetsIdentifier && !userConfiguredException) { report(node, "the delete keyword", "Reflect.deleteProperty"); diff --git a/tools/node_modules/eslint/lib/rules/prefer-regex-literals.js b/tools/node_modules/eslint/lib/rules/prefer-regex-literals.js index 158f84b940d565..f30eddbf8c503a 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-regex-literals.js +++ b/tools/node_modules/eslint/lib/rules/prefer-regex-literals.js @@ -47,7 +47,7 @@ function isStaticTemplateLiteral(node) { return node.type === "TemplateLiteral" && node.expressions.length === 0; } -const validPrecedingTokens = [ +const validPrecedingTokens = new Set([ "(", ";", "[", @@ -110,7 +110,7 @@ const validPrecedingTokens = [ "debugger", "case", "throw" -]; +]); //------------------------------------------------------------------------------ @@ -123,7 +123,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow use of the `RegExp` constructor in favor of regular expression literals", + description: "Disallow use of the `RegExp` constructor in favor of regular expression literals", recommended: false, url: "https://eslint.org/docs/rules/prefer-regex-literals" }, @@ -334,7 +334,7 @@ module.exports = { const tokenBefore = sourceCode.getTokenBefore(node); - if (tokenBefore && !validPrecedingTokens.includes(tokenBefore.value)) { + if (tokenBefore && !validPrecedingTokens.has(tokenBefore.value)) { noFix = true; } 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 371a28964f2739..df1be55879a194 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-rest-params.js +++ b/tools/node_modules/eslint/lib/rules/prefer-rest-params.js @@ -65,7 +65,7 @@ module.exports = { type: "suggestion", docs: { - description: "require rest parameters instead of `arguments`", + description: "Require rest parameters instead of `arguments`", recommended: false, url: "https://eslint.org/docs/rules/prefer-rest-params" }, diff --git a/tools/node_modules/eslint/lib/rules/prefer-spread.js b/tools/node_modules/eslint/lib/rules/prefer-spread.js index c5f9e1e6cbf674..c8909fc0612a6b 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-spread.js +++ b/tools/node_modules/eslint/lib/rules/prefer-spread.js @@ -49,7 +49,7 @@ module.exports = { type: "suggestion", docs: { - description: "require spread operators instead of `.apply()`", + description: "Require spread operators instead of `.apply()`", recommended: false, url: "https://eslint.org/docs/rules/prefer-spread" }, diff --git a/tools/node_modules/eslint/lib/rules/prefer-template.js b/tools/node_modules/eslint/lib/rules/prefer-template.js index e61eac1d65d855..167c187db6f70e 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-template.js +++ b/tools/node_modules/eslint/lib/rules/prefer-template.js @@ -128,7 +128,7 @@ module.exports = { type: "suggestion", docs: { - description: "require template literals instead of string concatenation", + description: "Require template literals instead of string concatenation", recommended: false, url: "https://eslint.org/docs/rules/prefer-template" }, diff --git a/tools/node_modules/eslint/lib/rules/quote-props.js b/tools/node_modules/eslint/lib/rules/quote-props.js index e57ad6eea294f7..db9423978bb380 100644 --- a/tools/node_modules/eslint/lib/rules/quote-props.js +++ b/tools/node_modules/eslint/lib/rules/quote-props.js @@ -22,7 +22,7 @@ module.exports = { type: "suggestion", docs: { - description: "require quotes around object literal property names", + description: "Require quotes around object literal property names", recommended: false, url: "https://eslint.org/docs/rules/quote-props" }, @@ -95,7 +95,7 @@ module.exports = { * @returns {boolean} `true` if it is an ES3 token. */ function isKeyword(tokenStr) { - return keywords.indexOf(tokenStr) >= 0; + return keywords.includes(tokenStr); } /** @@ -108,7 +108,7 @@ module.exports = { */ function areQuotesRedundant(rawKey, tokens, skipNumberLiterals) { return tokens.length === 1 && tokens[0].start === 0 && tokens[0].end === rawKey.length && - (["Identifier", "Keyword", "Null", "Boolean"].indexOf(tokens[0].type) >= 0 || + (["Identifier", "Keyword", "Null", "Boolean"].includes(tokens[0].type) || (tokens[0].type === "Numeric" && !skipNumberLiterals && String(+tokens[0].value) === tokens[0].value)); } diff --git a/tools/node_modules/eslint/lib/rules/quotes.js b/tools/node_modules/eslint/lib/rules/quotes.js index 41bff3c4ecfd6d..ab7b38b90bfb08 100644 --- a/tools/node_modules/eslint/lib/rules/quotes.js +++ b/tools/node_modules/eslint/lib/rules/quotes.js @@ -80,7 +80,7 @@ module.exports = { type: "layout", docs: { - description: "enforce the consistent use of either backticks, double, or single quotes", + description: "Enforce the consistent use of either backticks, double, or single quotes", recommended: false, url: "https://eslint.org/docs/rules/quotes" }, @@ -283,7 +283,7 @@ module.exports = { astUtils.isSurroundedBy(rawVal, settings.quote); if (!isValid && avoidEscape) { - isValid = astUtils.isSurroundedBy(rawVal, settings.alternateQuote) && rawVal.indexOf(settings.quote) >= 0; + isValid = astUtils.isSurroundedBy(rawVal, settings.alternateQuote) && rawVal.includes(settings.quote); } if (!isValid) { diff --git a/tools/node_modules/eslint/lib/rules/radix.js b/tools/node_modules/eslint/lib/rules/radix.js index f83c762c11d397..0618d9844ad295 100644 --- a/tools/node_modules/eslint/lib/rules/radix.js +++ b/tools/node_modules/eslint/lib/rules/radix.js @@ -80,7 +80,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce the consistent use of the radix argument when using `parseInt()`", + description: "Enforce the consistent use of the radix argument when using `parseInt()`", recommended: false, url: "https://eslint.org/docs/rules/radix" }, diff --git a/tools/node_modules/eslint/lib/rules/require-atomic-updates.js b/tools/node_modules/eslint/lib/rules/require-atomic-updates.js index 4dbd48dfc585a4..7a5f822ab28c9a 100644 --- a/tools/node_modules/eslint/lib/rules/require-atomic-updates.js +++ b/tools/node_modules/eslint/lib/rules/require-atomic-updates.js @@ -171,7 +171,7 @@ module.exports = { type: "problem", docs: { - description: "disallow assignments that can lead to race conditions due to usage of `await` or `yield`", + description: "Disallow assignments that can lead to race conditions due to usage of `await` or `yield`", recommended: false, url: "https://eslint.org/docs/rules/require-atomic-updates" }, diff --git a/tools/node_modules/eslint/lib/rules/require-await.js b/tools/node_modules/eslint/lib/rules/require-await.js index 1b17de0e197556..1add2552e58043 100644 --- a/tools/node_modules/eslint/lib/rules/require-await.js +++ b/tools/node_modules/eslint/lib/rules/require-await.js @@ -34,7 +34,7 @@ module.exports = { type: "suggestion", docs: { - description: "disallow async functions which have no `await` expression", + description: "Disallow async functions which have no `await` expression", recommended: false, url: "https://eslint.org/docs/rules/require-await" }, diff --git a/tools/node_modules/eslint/lib/rules/require-jsdoc.js b/tools/node_modules/eslint/lib/rules/require-jsdoc.js index 169b6f524139cb..755f6df5fee3a9 100644 --- a/tools/node_modules/eslint/lib/rules/require-jsdoc.js +++ b/tools/node_modules/eslint/lib/rules/require-jsdoc.js @@ -11,7 +11,7 @@ module.exports = { type: "suggestion", docs: { - description: "require JSDoc comments", + description: "Require JSDoc comments", recommended: false, url: "https://eslint.org/docs/rules/require-jsdoc" }, diff --git a/tools/node_modules/eslint/lib/rules/require-unicode-regexp.js b/tools/node_modules/eslint/lib/rules/require-unicode-regexp.js index 577ae6cf8271d1..4236af6db4775e 100644 --- a/tools/node_modules/eslint/lib/rules/require-unicode-regexp.js +++ b/tools/node_modules/eslint/lib/rules/require-unicode-regexp.js @@ -26,7 +26,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce the use of `u` flag on RegExp", + description: "Enforce the use of `u` flag on RegExp", recommended: false, url: "https://eslint.org/docs/rules/require-unicode-regexp" }, diff --git a/tools/node_modules/eslint/lib/rules/require-yield.js b/tools/node_modules/eslint/lib/rules/require-yield.js index aba06140672d6a..ffb2229790d9bf 100644 --- a/tools/node_modules/eslint/lib/rules/require-yield.js +++ b/tools/node_modules/eslint/lib/rules/require-yield.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "require generator functions to contain `yield`", + description: "Require generator functions to contain `yield`", recommended: true, url: "https://eslint.org/docs/rules/require-yield" }, 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 ace1ec521415ab..17f9aa0c3c5ea6 100644 --- a/tools/node_modules/eslint/lib/rules/rest-spread-spacing.js +++ b/tools/node_modules/eslint/lib/rules/rest-spread-spacing.js @@ -15,7 +15,7 @@ module.exports = { type: "layout", docs: { - description: "enforce spacing between rest and spread operators and their expressions", + description: "Enforce spacing between rest and spread operators and their expressions", recommended: false, url: "https://eslint.org/docs/rules/rest-spread-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/semi-spacing.js b/tools/node_modules/eslint/lib/rules/semi-spacing.js index 4f0afbb11a3db4..875cb62443d1da 100644 --- a/tools/node_modules/eslint/lib/rules/semi-spacing.js +++ b/tools/node_modules/eslint/lib/rules/semi-spacing.js @@ -17,7 +17,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing before and after semicolons", + description: "Enforce consistent spacing before and after semicolons", recommended: false, url: "https://eslint.org/docs/rules/semi-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/semi-style.js b/tools/node_modules/eslint/lib/rules/semi-style.js index 7952a9adff1632..424858b4ba125d 100644 --- a/tools/node_modules/eslint/lib/rules/semi-style.js +++ b/tools/node_modules/eslint/lib/rules/semi-style.js @@ -73,7 +73,7 @@ module.exports = { type: "layout", docs: { - description: "enforce location of semicolons", + description: "Enforce location of semicolons", recommended: false, url: "https://eslint.org/docs/rules/semi-style" }, diff --git a/tools/node_modules/eslint/lib/rules/semi.js b/tools/node_modules/eslint/lib/rules/semi.js index 86ff8d74ee12d7..1e49273c2e9617 100644 --- a/tools/node_modules/eslint/lib/rules/semi.js +++ b/tools/node_modules/eslint/lib/rules/semi.js @@ -21,7 +21,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow semicolons instead of ASI", + description: "Require or disallow semicolons instead of ASI", recommended: false, url: "https://eslint.org/docs/rules/semi" }, diff --git a/tools/node_modules/eslint/lib/rules/sort-imports.js b/tools/node_modules/eslint/lib/rules/sort-imports.js index 13cb63681cb8a6..bfb0765baa5e6f 100644 --- a/tools/node_modules/eslint/lib/rules/sort-imports.js +++ b/tools/node_modules/eslint/lib/rules/sort-imports.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce sorted import declarations within modules", + description: "Enforce sorted import declarations within modules", recommended: false, url: "https://eslint.org/docs/rules/sort-imports" }, diff --git a/tools/node_modules/eslint/lib/rules/sort-keys.js b/tools/node_modules/eslint/lib/rules/sort-keys.js index 2fc19635271759..5cda81d0a7d068 100644 --- a/tools/node_modules/eslint/lib/rules/sort-keys.js +++ b/tools/node_modules/eslint/lib/rules/sort-keys.js @@ -81,7 +81,7 @@ module.exports = { type: "suggestion", docs: { - description: "require object keys to be sorted", + description: "Require object keys to be sorted", recommended: false, url: "https://eslint.org/docs/rules/sort-keys" }, diff --git a/tools/node_modules/eslint/lib/rules/sort-vars.js b/tools/node_modules/eslint/lib/rules/sort-vars.js index 8246558c5478f7..ec0718ee578c74 100644 --- a/tools/node_modules/eslint/lib/rules/sort-vars.js +++ b/tools/node_modules/eslint/lib/rules/sort-vars.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "require variables within the same declaration block to be sorted", + description: "Require variables within the same declaration block to be sorted", recommended: false, url: "https://eslint.org/docs/rules/sort-vars" }, 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 5cc7266654f5fc..ffd33ddcaeac5a 100644 --- a/tools/node_modules/eslint/lib/rules/space-before-blocks.js +++ b/tools/node_modules/eslint/lib/rules/space-before-blocks.js @@ -40,7 +40,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing before blocks", + description: "Enforce consistent spacing before blocks", recommended: false, url: "https://eslint.org/docs/rules/space-before-blocks" }, diff --git a/tools/node_modules/eslint/lib/rules/space-before-function-paren.js b/tools/node_modules/eslint/lib/rules/space-before-function-paren.js index fdd45be241d464..b56ac3c52c7aaa 100644 --- a/tools/node_modules/eslint/lib/rules/space-before-function-paren.js +++ b/tools/node_modules/eslint/lib/rules/space-before-function-paren.js @@ -20,7 +20,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing before `function` definition opening parenthesis", + description: "Enforce consistent spacing before `function` definition opening parenthesis", recommended: false, url: "https://eslint.org/docs/rules/space-before-function-paren" }, 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 1509d600f1d58d..42d9bb58e7e4ca 100644 --- a/tools/node_modules/eslint/lib/rules/space-in-parens.js +++ b/tools/node_modules/eslint/lib/rules/space-in-parens.js @@ -16,7 +16,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing inside parentheses", + description: "Enforce consistent spacing inside parentheses", recommended: false, url: "https://eslint.org/docs/rules/space-in-parens" }, 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 c526b7e2b0a406..141c269df6b0fc 100644 --- a/tools/node_modules/eslint/lib/rules/space-infix-ops.js +++ b/tools/node_modules/eslint/lib/rules/space-infix-ops.js @@ -16,7 +16,7 @@ module.exports = { type: "layout", docs: { - description: "require spacing around infix operators", + description: "Require spacing around infix operators", recommended: false, url: "https://eslint.org/docs/rules/space-infix-ops" }, diff --git a/tools/node_modules/eslint/lib/rules/space-unary-ops.js b/tools/node_modules/eslint/lib/rules/space-unary-ops.js index 04487c49e0d8c6..1d9141d2b97fae 100644 --- a/tools/node_modules/eslint/lib/rules/space-unary-ops.js +++ b/tools/node_modules/eslint/lib/rules/space-unary-ops.js @@ -20,7 +20,7 @@ module.exports = { type: "layout", docs: { - description: "enforce consistent spacing before or after unary operators", + description: "Enforce consistent spacing before or after unary operators", recommended: false, url: "https://eslint.org/docs/rules/space-unary-ops" }, diff --git a/tools/node_modules/eslint/lib/rules/spaced-comment.js b/tools/node_modules/eslint/lib/rules/spaced-comment.js index 674c13cf3807ec..6aedeae871d7ba 100644 --- a/tools/node_modules/eslint/lib/rules/spaced-comment.js +++ b/tools/node_modules/eslint/lib/rules/spaced-comment.js @@ -39,7 +39,7 @@ function escapeAndRepeat(s) { function parseMarkersOption(markers) { // `*` is a marker for JSDoc comments. - if (markers.indexOf("*") === -1) { + if (!markers.includes("*")) { return markers.concat("*"); } @@ -152,7 +152,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce consistent spacing after the `//` or `/*` in a comment", + description: "Enforce consistent spacing after the `//` or `/*` in a comment", recommended: false, url: "https://eslint.org/docs/rules/spaced-comment" }, diff --git a/tools/node_modules/eslint/lib/rules/strict.js b/tools/node_modules/eslint/lib/rules/strict.js index 0ea1da5677ed6d..e677c95e71739d 100644 --- a/tools/node_modules/eslint/lib/rules/strict.js +++ b/tools/node_modules/eslint/lib/rules/strict.js @@ -69,7 +69,7 @@ module.exports = { type: "suggestion", docs: { - description: "require or disallow strict mode directives", + description: "Require or disallow strict mode directives", recommended: false, url: "https://eslint.org/docs/rules/strict" }, diff --git a/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js b/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js index cd2ca7018d284f..c1df496fd9407d 100644 --- a/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js +++ b/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js @@ -21,7 +21,7 @@ module.exports = { type: "layout", docs: { - description: "enforce spacing around colons of switch statements", + description: "Enforce spacing around colons of switch statements", recommended: false, url: "https://eslint.org/docs/rules/switch-colon-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/symbol-description.js b/tools/node_modules/eslint/lib/rules/symbol-description.js index 07bb8cd27355fe..1c8a364986c8e2 100644 --- a/tools/node_modules/eslint/lib/rules/symbol-description.js +++ b/tools/node_modules/eslint/lib/rules/symbol-description.js @@ -22,7 +22,7 @@ module.exports = { type: "suggestion", docs: { - description: "require symbol descriptions", + description: "Require symbol descriptions", recommended: false, url: "https://eslint.org/docs/rules/symbol-description" }, 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 c842b76a41f38b..35d4bbab4d789c 100644 --- a/tools/node_modules/eslint/lib/rules/template-curly-spacing.js +++ b/tools/node_modules/eslint/lib/rules/template-curly-spacing.js @@ -21,7 +21,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow spacing around embedded expressions of template strings", + description: "Require or disallow spacing around embedded expressions of template strings", recommended: false, url: "https://eslint.org/docs/rules/template-curly-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/template-tag-spacing.js b/tools/node_modules/eslint/lib/rules/template-tag-spacing.js index fa1a613b894905..3140fa0eed77d5 100644 --- a/tools/node_modules/eslint/lib/rules/template-tag-spacing.js +++ b/tools/node_modules/eslint/lib/rules/template-tag-spacing.js @@ -15,7 +15,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow spacing between template tags and their literals", + description: "Require or disallow spacing between template tags and their literals", recommended: false, url: "https://eslint.org/docs/rules/template-tag-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/unicode-bom.js b/tools/node_modules/eslint/lib/rules/unicode-bom.js index d480f1bcdc8575..482d3bbf50b34e 100644 --- a/tools/node_modules/eslint/lib/rules/unicode-bom.js +++ b/tools/node_modules/eslint/lib/rules/unicode-bom.js @@ -14,7 +14,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow Unicode byte order mark (BOM)", + description: "Require or disallow Unicode byte order mark (BOM)", recommended: false, url: "https://eslint.org/docs/rules/unicode-bom" }, diff --git a/tools/node_modules/eslint/lib/rules/use-isnan.js b/tools/node_modules/eslint/lib/rules/use-isnan.js index 92903500c18336..219d695374e16a 100644 --- a/tools/node_modules/eslint/lib/rules/use-isnan.js +++ b/tools/node_modules/eslint/lib/rules/use-isnan.js @@ -37,7 +37,7 @@ module.exports = { type: "problem", docs: { - description: "require calls to `isNaN()` when checking for `NaN`", + description: "Require calls to `isNaN()` when checking for `NaN`", recommended: true, url: "https://eslint.org/docs/rules/use-isnan" }, 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 ecde099fa02de8..f919f5a26c86f8 100644 --- a/tools/node_modules/eslint/lib/rules/utils/ast-utils.js +++ b/tools/node_modules/eslint/lib/rules/utils/ast-utils.js @@ -32,6 +32,7 @@ const thisTagPattern = /^[\s*]*@this/mu; const COMMENTS_IGNORE_PATTERN = /^\s*(?:eslint|jshint\s+|jslint\s+|istanbul\s+|globals?\s+|exported\s+|jscs)/u; +const ESLINT_DIRECTIVE_PATTERN = /^(?:eslint[- ]|(?:globals?|exported) )/u; const LINEBREAKS = new Set(["\r\n", "\r", "\n", "\u2028", "\u2029"]); // A set of node types that can contain a list of statements @@ -788,6 +789,203 @@ function getModuleExportName(node) { return node.value; } +/** + * Returns literal's value converted to the Boolean type + * @param {ASTNode} node any `Literal` node + * @returns {boolean | null} `true` when node is truthy, `false` when node is falsy, + * `null` when it cannot be determined. + */ +function getBooleanValue(node) { + if (node.value === null) { + + /* + * it might be a null literal or bigint/regex literal in unsupported environments . + * https://github.com/estree/estree/blob/14df8a024956ea289bd55b9c2226a1d5b8a473ee/es5.md#regexpliteral + * https://github.com/estree/estree/blob/14df8a024956ea289bd55b9c2226a1d5b8a473ee/es2020.md#bigintliteral + */ + + if (node.raw === "null") { + return false; + } + + // regex is always truthy + if (typeof node.regex === "object") { + return true; + } + + return null; + } + + return !!node.value; +} + +/** + * Checks if a branch node of LogicalExpression short circuits the whole condition + * @param {ASTNode} node The branch of main condition which needs to be checked + * @param {string} operator The operator of the main LogicalExpression. + * @returns {boolean} true when condition short circuits whole condition + */ +function isLogicalIdentity(node, operator) { + switch (node.type) { + case "Literal": + return (operator === "||" && getBooleanValue(node) === true) || + (operator === "&&" && getBooleanValue(node) === false); + + case "UnaryExpression": + return (operator === "&&" && node.operator === "void"); + + case "LogicalExpression": + + /* + * handles `a && false || b` + * `false` is an identity element of `&&` but not `||` + */ + return operator === node.operator && + ( + isLogicalIdentity(node.left, operator) || + isLogicalIdentity(node.right, operator) + ); + + case "AssignmentExpression": + return ["||=", "&&="].includes(node.operator) && + operator === node.operator.slice(0, -1) && + isLogicalIdentity(node.right, operator); + + // no default + } + return false; +} + +/** + * Checks if an identifier is a reference to a global variable. + * @param {Scope} scope The scope in which the identifier is referenced. + * @param {ASTNode} node An identifier node to check. + * @returns {boolean} `true` if the identifier is a reference to a global variable. + */ +function isReferenceToGlobalVariable(scope, node) { + const reference = scope.references.find(ref => ref.identifier === node); + + return Boolean( + reference && + reference.resolved && + reference.resolved.scope.type === "global" && + reference.resolved.defs.length === 0 + ); +} + + +/** + * Checks if a node has a constant truthiness value. + * @param {Scope} scope Scope in which the node appears. + * @param {ASTNode} node The AST node to check. + * @param {boolean} inBooleanPosition `true` if checking the test of a + * condition. `false` in all other cases. When `false`, checks if -- for + * both string and number -- if coerced to that type, the value will + * be constant. + * @returns {boolean} true when node's truthiness is constant + * @private + */ +function isConstant(scope, node, inBooleanPosition) { + + // node.elements can return null values in the case of sparse arrays ex. [,] + if (!node) { + return true; + } + switch (node.type) { + case "Literal": + case "ArrowFunctionExpression": + case "FunctionExpression": + return true; + case "ClassExpression": + case "ObjectExpression": + + /** + * In theory objects like: + * + * `{toString: () => a}` + * `{valueOf: () => a}` + * + * Or a classes like: + * + * `class { static toString() { return a } }` + * `class { static valueOf() { return a } }` + * + * Are not constant verifiably when `inBooleanPosition` is + * false, but it's an edge case we've opted not to handle. + */ + return true; + case "TemplateLiteral": + return (inBooleanPosition && node.quasis.some(quasi => quasi.value.cooked.length)) || + node.expressions.every(exp => isConstant(scope, exp, false)); + + case "ArrayExpression": { + if (!inBooleanPosition) { + return node.elements.every(element => isConstant(scope, element, false)); + } + return true; + } + + case "UnaryExpression": + if ( + node.operator === "void" || + node.operator === "typeof" && inBooleanPosition + ) { + return true; + } + + if (node.operator === "!") { + return isConstant(scope, node.argument, true); + } + + return isConstant(scope, node.argument, false); + + case "BinaryExpression": + return isConstant(scope, node.left, false) && + isConstant(scope, node.right, false) && + node.operator !== "in"; + + case "LogicalExpression": { + const isLeftConstant = isConstant(scope, node.left, inBooleanPosition); + const isRightConstant = isConstant(scope, node.right, inBooleanPosition); + const isLeftShortCircuit = (isLeftConstant && isLogicalIdentity(node.left, node.operator)); + const isRightShortCircuit = (inBooleanPosition && isRightConstant && isLogicalIdentity(node.right, node.operator)); + + return (isLeftConstant && isRightConstant) || + isLeftShortCircuit || + isRightShortCircuit; + } + case "NewExpression": + return inBooleanPosition; + case "AssignmentExpression": + if (node.operator === "=") { + return isConstant(scope, node.right, inBooleanPosition); + } + + if (["||=", "&&="].includes(node.operator) && inBooleanPosition) { + return isLogicalIdentity(node.right, node.operator.slice(0, -1)); + } + + return false; + + case "SequenceExpression": + return isConstant(scope, node.expressions[node.expressions.length - 1], inBooleanPosition); + case "SpreadElement": + return isConstant(scope, node.argument, inBooleanPosition); + case "CallExpression": + if (node.callee.type === "Identifier" && node.callee.name === "Boolean") { + if (node.arguments.length === 0 || isConstant(scope, node.arguments[0], true)) { + return isReferenceToGlobalVariable(scope, node.callee); + } + } + return false; + case "Identifier": + return node.name === "undefined" && isReferenceToGlobalVariable(scope, node); + + // no default + } + return false; +} + //------------------------------------------------------------------------------ // Public Interface //------------------------------------------------------------------------------ @@ -908,12 +1106,8 @@ module.exports = { const comment = node.value.trim(); return ( - node.type === "Line" && comment.indexOf("eslint-") === 0 || - node.type === "Block" && ( - comment.indexOf("global ") === 0 || - comment.indexOf("eslint ") === 0 || - comment.indexOf("eslint-") === 0 - ) + node.type === "Line" && comment.startsWith("eslint-") || + node.type === "Block" && ESLINT_DIRECTIVE_PATTERN.test(comment) ); }, @@ -1905,6 +2099,7 @@ module.exports = { return OCTAL_OR_NON_OCTAL_DECIMAL_ESCAPE_PATTERN.test(rawString); }, + isReferenceToGlobalVariable, isLogicalExpression, isCoalesceExpression, isMixedLogicalAndCoalesceExpressions, @@ -1918,5 +2113,6 @@ module.exports = { isSameReference, isLogicalAssignmentOperator, getSwitchCaseColonToken, - getModuleExportName + getModuleExportName, + isConstant }; diff --git a/tools/node_modules/eslint/lib/rules/valid-jsdoc.js b/tools/node_modules/eslint/lib/rules/valid-jsdoc.js index c118e033dd875a..25be39fdd516b5 100644 --- a/tools/node_modules/eslint/lib/rules/valid-jsdoc.js +++ b/tools/node_modules/eslint/lib/rules/valid-jsdoc.js @@ -21,7 +21,7 @@ module.exports = { type: "suggestion", docs: { - description: "enforce valid JSDoc comments", + description: "Enforce valid JSDoc comments", recommended: false, url: "https://eslint.org/docs/rules/valid-jsdoc" }, @@ -405,7 +405,7 @@ module.exports = { loc: getAbsoluteRange(jsdocNode, param), data: { name: param.name } }); - } else if (param.name.indexOf(".") === -1) { + } else if (!param.name.includes(".")) { paramTagsByName[param.name] = param; } }); diff --git a/tools/node_modules/eslint/lib/rules/valid-typeof.js b/tools/node_modules/eslint/lib/rules/valid-typeof.js index cb85cd9cb900ae..908d5725e224c6 100644 --- a/tools/node_modules/eslint/lib/rules/valid-typeof.js +++ b/tools/node_modules/eslint/lib/rules/valid-typeof.js @@ -14,7 +14,7 @@ module.exports = { type: "problem", docs: { - description: "enforce comparing `typeof` expressions against valid strings", + description: "Enforce comparing `typeof` expressions against valid strings", recommended: true, url: "https://eslint.org/docs/rules/valid-typeof" }, @@ -42,8 +42,8 @@ module.exports = { create(context) { - const VALID_TYPES = ["symbol", "undefined", "object", "boolean", "number", "string", "function", "bigint"], - OPERATORS = ["==", "===", "!=", "!=="]; + const VALID_TYPES = new Set(["symbol", "undefined", "object", "boolean", "number", "string", "function", "bigint"]), + OPERATORS = new Set(["==", "===", "!=", "!=="]); const requireStringLiterals = context.options[0] && context.options[0].requireStringLiterals; @@ -85,13 +85,13 @@ module.exports = { if (isTypeofExpression(node)) { const parent = context.getAncestors().pop(); - if (parent.type === "BinaryExpression" && OPERATORS.indexOf(parent.operator) !== -1) { + if (parent.type === "BinaryExpression" && OPERATORS.has(parent.operator)) { const sibling = parent.left === node ? parent.right : parent.left; if (sibling.type === "Literal" || sibling.type === "TemplateLiteral" && !sibling.expressions.length) { const value = sibling.type === "Literal" ? sibling.value : sibling.quasis[0].value.cooked; - if (VALID_TYPES.indexOf(value) === -1) { + if (!VALID_TYPES.has(value)) { context.report({ node: sibling, messageId: "invalidValue" }); } } else if (sibling.type === "Identifier" && sibling.name === "undefined" && isReferenceToGlobalVariable(sibling)) { 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 09e9932b4ca5a8..99e2b4ac0dd181 100644 --- a/tools/node_modules/eslint/lib/rules/vars-on-top.js +++ b/tools/node_modules/eslint/lib/rules/vars-on-top.js @@ -15,7 +15,7 @@ module.exports = { type: "suggestion", docs: { - description: "require `var` declarations be placed at the top of their containing scope", + description: "Require `var` declarations be placed at the top of their containing scope", recommended: false, url: "https://eslint.org/docs/rules/vars-on-top" }, diff --git a/tools/node_modules/eslint/lib/rules/wrap-iife.js b/tools/node_modules/eslint/lib/rules/wrap-iife.js index 8523796722a187..4c2c9275d879cf 100644 --- a/tools/node_modules/eslint/lib/rules/wrap-iife.js +++ b/tools/node_modules/eslint/lib/rules/wrap-iife.js @@ -43,7 +43,7 @@ module.exports = { type: "layout", docs: { - description: "require parentheses around immediate `function` invocations", + description: "Require parentheses around immediate `function` invocations", recommended: false, url: "https://eslint.org/docs/rules/wrap-iife" }, diff --git a/tools/node_modules/eslint/lib/rules/wrap-regex.js b/tools/node_modules/eslint/lib/rules/wrap-regex.js index b10f2ec53bd8d8..b24d36025ed55f 100644 --- a/tools/node_modules/eslint/lib/rules/wrap-regex.js +++ b/tools/node_modules/eslint/lib/rules/wrap-regex.js @@ -15,7 +15,7 @@ module.exports = { type: "layout", docs: { - description: "require parenthesis around regex literals", + description: "Require parenthesis around regex literals", recommended: false, url: "https://eslint.org/docs/rules/wrap-regex" }, diff --git a/tools/node_modules/eslint/lib/rules/yield-star-spacing.js b/tools/node_modules/eslint/lib/rules/yield-star-spacing.js index 884a3a4ed01601..c2e07aaaa22c79 100644 --- a/tools/node_modules/eslint/lib/rules/yield-star-spacing.js +++ b/tools/node_modules/eslint/lib/rules/yield-star-spacing.js @@ -15,7 +15,7 @@ module.exports = { type: "layout", docs: { - description: "require or disallow spacing around the `*` in `yield*` expressions", + description: "Require or disallow spacing around the `*` in `yield*` expressions", recommended: false, url: "https://eslint.org/docs/rules/yield-star-spacing" }, diff --git a/tools/node_modules/eslint/lib/rules/yoda.js b/tools/node_modules/eslint/lib/rules/yoda.js index f491f756d5463d..eb9a32ad5c3001 100644 --- a/tools/node_modules/eslint/lib/rules/yoda.js +++ b/tools/node_modules/eslint/lib/rules/yoda.js @@ -39,7 +39,7 @@ function isEqualityOperator(operator) { * @returns {boolean} Whether the operator is used in range tests. */ function isRangeTestOperator(operator) { - return ["<", "<="].indexOf(operator) >= 0; + return ["<", "<="].includes(operator); } /** @@ -121,7 +121,7 @@ module.exports = { type: "suggestion", docs: { - description: 'require or disallow "Yoda" conditions', + description: 'Require or disallow "Yoda" conditions', recommended: false, url: "https://eslint.org/docs/rules/yoda" }, diff --git a/tools/node_modules/eslint/lib/shared/deprecation-warnings.js b/tools/node_modules/eslint/lib/shared/deprecation-warnings.js index 1a0501ab057a11..d09cafb07fe13f 100644 --- a/tools/node_modules/eslint/lib/shared/deprecation-warnings.js +++ b/tools/node_modules/eslint/lib/shared/deprecation-warnings.js @@ -17,14 +17,7 @@ const path = require("path"); // Definitions for deprecation warnings. const deprecationWarningMessages = { ESLINT_LEGACY_ECMAFEATURES: - "The 'ecmaFeatures' config file property is deprecated and has no effect.", - ESLINT_PERSONAL_CONFIG_LOAD: - "'~/.eslintrc.*' config files have been deprecated. " + - "Please use a config file per project or the '--config' option.", - ESLINT_PERSONAL_CONFIG_SUPPRESS: - "'~/.eslintrc.*' config files have been deprecated. " + - "Please remove it or add 'root:true' to the config files in your " + - "projects in order to avoid loading '~/.eslintrc.*' accidentally." + "The 'ecmaFeatures' config file property is deprecated and has no effect." }; const sourceFileErrorCache = new Set(); diff --git a/tools/node_modules/eslint/lib/shared/types.js b/tools/node_modules/eslint/lib/shared/types.js index c407c4fb1200a2..5d9a4e6cf2695c 100644 --- a/tools/node_modules/eslint/lib/shared/types.js +++ b/tools/node_modules/eslint/lib/shared/types.js @@ -136,7 +136,6 @@ module.exports = {}; /** * @typedef {Object} RuleMetaDocs - * @property {string} category The category of the rule. * @property {string} description The description of the rule. * @property {boolean} recommended If `true` then the rule is included in `eslint:recommended` preset. * @property {string} url The URL of the rule documentation. @@ -147,6 +146,7 @@ module.exports = {}; * @property {boolean} [deprecated] If `true` then the rule has been deprecated. * @property {RuleMetaDocs} docs The document information of the rule. * @property {"code"|"whitespace"} [fixable] The autofix type. + * @property {boolean} [hasSuggestions] If `true` then the rule provides suggestions. * @property {Record} [messages] The messages the rule reports. * @property {string[]} [replacedBy] The IDs of the alternative rules. * @property {Array|Object} schema The option schema of the rule. @@ -173,3 +173,27 @@ module.exports = {}; * @property {string} ruleId The rule ID. * @property {string[]} replacedBy The rule IDs that replace this deprecated rule. */ + +/** + * A linting result. + * @typedef {Object} LintResult + * @property {string} filePath The path to the file that was linted. + * @property {LintMessage[]} messages All of the messages for the result. + * @property {SuppressedLintMessage[]} suppressedMessages All of the suppressed messages for the result. + * @property {number} errorCount Number of errors for the result. + * @property {number} fatalErrorCount Number of fatal errors for the result. + * @property {number} warningCount Number of warnings for the result. + * @property {number} fixableErrorCount Number of fixable errors for the result. + * @property {number} fixableWarningCount Number of fixable warnings for the result. + * @property {string} [source] The source code of the file that was linted. + * @property {string} [output] The source code of the file that was linted, with as many fixes applied as possible. + * @property {DeprecatedRuleInfo[]} usedDeprecatedRules The list of used deprecated rules. + */ + +/** + * A formatter function. + * @callback FormatterFunction + * @param {LintResult[]} results The list of linting results. + * @param {{cwd: string, rulesMeta: Record}} [context] A context object. + * @returns {string | Promise} Formatted text. + */ diff --git a/tools/node_modules/eslint/messages/all-files-ignored.js b/tools/node_modules/eslint/messages/all-files-ignored.js index d85828d36e7b66..70877a4d823e36 100644 --- a/tools/node_modules/eslint/messages/all-files-ignored.js +++ b/tools/node_modules/eslint/messages/all-files-ignored.js @@ -12,5 +12,5 @@ If you do want to lint these files, try the following solutions: * Check your .eslintignore file, or the eslintIgnore property in package.json, to ensure that the files are not configured to be ignored. * Explicitly list the files from this glob that you'd like to lint on the command-line, rather than providing a glob as an argument. -`.trimLeft(); +`.trimStart(); }; diff --git a/tools/node_modules/eslint/messages/extend-config-missing.js b/tools/node_modules/eslint/messages/extend-config-missing.js index db8a5c64b9f3d0..5b3498fcda408b 100644 --- a/tools/node_modules/eslint/messages/extend-config-missing.js +++ b/tools/node_modules/eslint/messages/extend-config-missing.js @@ -9,5 +9,5 @@ ESLint couldn't find the config "${configName}" to extend from. Please check tha The config "${configName}" was referenced from the config file in "${importerName}". If you still have problems, please stop by https://eslint.org/chat/help to chat with the team. -`.trimLeft(); +`.trimStart(); }; diff --git a/tools/node_modules/eslint/messages/failed-to-read-json.js b/tools/node_modules/eslint/messages/failed-to-read-json.js index 5114de30980140..e7c6cb58759f61 100644 --- a/tools/node_modules/eslint/messages/failed-to-read-json.js +++ b/tools/node_modules/eslint/messages/failed-to-read-json.js @@ -7,5 +7,5 @@ module.exports = function(it) { Failed to read JSON file at ${path}: ${message} -`.trimLeft(); +`.trimStart(); }; diff --git a/tools/node_modules/eslint/messages/file-not-found.js b/tools/node_modules/eslint/messages/file-not-found.js index 26a5d57eff7a54..1a62fcf96b9ef6 100644 --- a/tools/node_modules/eslint/messages/file-not-found.js +++ b/tools/node_modules/eslint/messages/file-not-found.js @@ -6,5 +6,5 @@ module.exports = function(it) { return ` No files matching the pattern "${pattern}"${globDisabled ? " (with disabling globs)" : ""} were found. Please check for typing mistakes in the pattern. -`.trimLeft(); +`.trimStart(); }; diff --git a/tools/node_modules/eslint/messages/no-config-found.js b/tools/node_modules/eslint/messages/no-config-found.js index c2f7ac73b40412..9860410a60292d 100644 --- a/tools/node_modules/eslint/messages/no-config-found.js +++ b/tools/node_modules/eslint/messages/no-config-found.js @@ -11,5 +11,5 @@ ESLint couldn't find a configuration file. To set up a configuration file for th ESLint looked for configuration files in ${directoryPath} and its ancestors. If it found none, it then looked in your home directory. If you think you already have a configuration file or if you need more help, please stop by the ESLint chat room: https://eslint.org/chat/help -`.trimLeft(); +`.trimStart(); }; diff --git a/tools/node_modules/eslint/messages/plugin-invalid.js b/tools/node_modules/eslint/messages/plugin-invalid.js index 7913576f000e3e..8b471d4a3366a6 100644 --- a/tools/node_modules/eslint/messages/plugin-invalid.js +++ b/tools/node_modules/eslint/messages/plugin-invalid.js @@ -12,5 +12,5 @@ module.exports = function(it) { "${configName}" was referenced from the config file in "${importerName}". If you still can't figure out the problem, please stop by https://eslint.org/chat/help to chat with the team. -`.trimLeft(); +`.trimStart(); }; diff --git a/tools/node_modules/eslint/messages/plugin-missing.js b/tools/node_modules/eslint/messages/plugin-missing.js index f58c78ceb3811d..0b7d34e3aa5f85 100644 --- a/tools/node_modules/eslint/messages/plugin-missing.js +++ b/tools/node_modules/eslint/messages/plugin-missing.js @@ -15,5 +15,5 @@ It's likely that the plugin isn't installed correctly. Try reinstalling by runni The plugin "${pluginName}" was referenced from the config file in "${importerName}". If you still can't figure out the problem, please stop by https://eslint.org/chat/help to chat with the team. -`.trimLeft(); +`.trimStart(); }; diff --git a/tools/node_modules/eslint/messages/print-config-with-directory-path.js b/tools/node_modules/eslint/messages/print-config-with-directory-path.js index 6a5d571dd37608..f65bdaaf7704c0 100644 --- a/tools/node_modules/eslint/messages/print-config-with-directory-path.js +++ b/tools/node_modules/eslint/messages/print-config-with-directory-path.js @@ -4,5 +4,5 @@ module.exports = function() { return ` The '--print-config' CLI option requires a path to a source code file rather than a directory. See also: https://eslint.org/docs/user-guide/command-line-interface#--print-config -`.trimLeft(); +`.trimStart(); }; diff --git a/tools/node_modules/eslint/messages/whitespace-found.js b/tools/node_modules/eslint/messages/whitespace-found.js index 4ce49ca3a4e3f4..8a801bcec6f825 100644 --- a/tools/node_modules/eslint/messages/whitespace-found.js +++ b/tools/node_modules/eslint/messages/whitespace-found.js @@ -7,5 +7,5 @@ module.exports = function(it) { ESLint couldn't find the plugin "${pluginName}". because there is whitespace in the name. Please check your configuration and remove all whitespace from the plugin name. If you still can't figure out the problem, please stop by https://eslint.org/chat/help to chat with the team. -`.trimLeft(); +`.trimStart(); }; diff --git a/tools/node_modules/eslint/node_modules/.bin/browserslist-lint b/tools/node_modules/eslint/node_modules/.bin/browserslist-lint new file mode 120000 index 00000000000000..b11e16f3d5c54b --- /dev/null +++ b/tools/node_modules/eslint/node_modules/.bin/browserslist-lint @@ -0,0 +1 @@ +../update-browserslist-db/cli.js \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@ampproject/remapping/dist/remapping.mjs b/tools/node_modules/eslint/node_modules/@ampproject/remapping/dist/remapping.mjs index 4847e8a8134b9f..c6e66b76f69447 100644 --- a/tools/node_modules/eslint/node_modules/@ampproject/remapping/dist/remapping.mjs +++ b/tools/node_modules/eslint/node_modules/@ampproject/remapping/dist/remapping.mjs @@ -1,170 +1,99 @@ -import { traceSegment, decodedMappings, presortedDecodedMap, TraceMap, encodedMappings } from '@jridgewell/trace-mapping'; +import { decodedMappings, traceSegment, TraceMap } from '@jridgewell/trace-mapping'; +import { GenMapping, addSegment, setSourceContent, decodedMap, encodedMap } from '@jridgewell/gen-mapping'; +const SOURCELESS_MAPPING = { + source: null, + column: null, + line: null, + name: null, + content: null, +}; +const EMPTY_SOURCES = []; +function Source(map, sources, source, content) { + return { + map, + sources, + source, + content, + }; +} /** - * A "leaf" node in the sourcemap tree, representing an original, unmodified - * source file. Recursive segment tracing ends at the `OriginalSource`. + * MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes + * (which may themselves be SourceMapTrees). */ -class OriginalSource { - constructor(source, content) { - this.source = source; - this.content = content; - } - /** - * Tracing a `SourceMapSegment` ends when we get to an `OriginalSource`, - * meaning this line/column location originated from this source file. - */ - originalPositionFor(line, column, name) { - return { column, line, name, source: this.source, content: this.content }; - } +function MapSource(map, sources) { + return Source(map, sources, '', null); } - /** - * Puts `key` into the backing array, if it is not already present. Returns - * the index of the `key` in the backing array. + * A "leaf" node in the sourcemap tree, representing an original, unmodified source file. Recursive + * segment tracing ends at the `OriginalSource`. */ -let put; -/** - * FastStringArray acts like a `Set` (allowing only one occurrence of a string - * `key`), but provides the index of the `key` in the backing array. - * - * This is designed to allow synchronizing a second array with the contents of - * the backing array, like how `sourcesContent[i]` is the source content - * associated with `source[i]`, and there are never duplicates. - */ -class FastStringArray { - constructor() { - this.indexes = Object.create(null); - this.array = []; - } +function OriginalSource(source, content) { + return Source(null, EMPTY_SOURCES, source, content); } -(() => { - put = (strarr, key) => { - const { array, indexes } = strarr; - // The key may or may not be present. If it is present, it's a number. - let index = indexes[key]; - // If it's not yet present, we need to insert it and track the index in the - // indexes. - if (index === undefined) { - index = indexes[key] = array.length; - array.push(key); - } - return index; - }; -})(); - -const INVALID_MAPPING = undefined; -const SOURCELESS_MAPPING = null; /** * traceMappings is only called on the root level SourceMapTree, and begins the process of * resolving each mapping in terms of the original source files. */ -let traceMappings; +function traceMappings(tree) { + const gen = new GenMapping({ file: tree.map.file }); + const { sources: rootSources, map } = tree; + const rootNames = map.names; + const rootMappings = decodedMappings(map); + for (let i = 0; i < rootMappings.length; i++) { + const segments = rootMappings[i]; + let lastSource = null; + let lastSourceLine = null; + let lastSourceColumn = null; + for (let j = 0; j < segments.length; j++) { + const segment = segments[j]; + const genCol = segment[0]; + let traced = SOURCELESS_MAPPING; + // 1-length segments only move the current generated column, there's no source information + // to gather from it. + if (segment.length !== 1) { + const source = rootSources[segment[1]]; + traced = originalPositionFor(source, segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : ''); + // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a + // respective segment into an original source. + if (traced == null) + continue; + } + // So we traced a segment down into its original source file. Now push a + // new segment pointing to this location. + const { column, line, name, content, source } = traced; + if (line === lastSourceLine && column === lastSourceColumn && source === lastSource) { + continue; + } + lastSourceLine = line; + lastSourceColumn = column; + lastSource = source; + // Sigh, TypeScript can't figure out source/line/column are either all null, or all non-null... + addSegment(gen, i, genCol, source, line, column, name); + if (content != null) + setSourceContent(gen, source, content); + } + } + return gen; +} /** - * SourceMapTree represents a single sourcemap, with the ability to trace - * mappings into its child nodes (which may themselves be SourceMapTrees). + * originalPositionFor is only called on children SourceMapTrees. It recurses down into its own + * child SourceMapTrees, until we find the original source map. */ -class SourceMapTree { - constructor(map, sources) { - this.map = map; - this.sources = sources; - } - /** - * originalPositionFor is only called on children SourceMapTrees. It recurses down - * into its own child SourceMapTrees, until we find the original source map. - */ - originalPositionFor(line, column, name) { - const segment = traceSegment(this.map, line, column); - // If we couldn't find a segment, then this doesn't exist in the sourcemap. - if (segment == null) - return INVALID_MAPPING; - // 1-length segments only move the current generated column, there's no source information - // to gather from it. - if (segment.length === 1) - return SOURCELESS_MAPPING; - const source = this.sources[segment[1]]; - return source.originalPositionFor(segment[2], segment[3], segment.length === 5 ? this.map.names[segment[4]] : name); +function originalPositionFor(source, line, column, name) { + if (!source.map) { + return { column, line, name, source: source.source, content: source.content }; } + const segment = traceSegment(source.map, line, column); + // If we couldn't find a segment, then this doesn't exist in the sourcemap. + if (segment == null) + return null; + // 1-length segments only move the current generated column, there's no source information + // to gather from it. + if (segment.length === 1) + return SOURCELESS_MAPPING; + return originalPositionFor(source.sources[segment[1]], segment[2], segment[3], segment.length === 5 ? source.map.names[segment[4]] : name); } -(() => { - traceMappings = (tree) => { - const mappings = []; - const names = new FastStringArray(); - const sources = new FastStringArray(); - const sourcesContent = []; - const { sources: rootSources, map } = tree; - const rootNames = map.names; - const rootMappings = decodedMappings(map); - let lastLineWithSegment = -1; - for (let i = 0; i < rootMappings.length; i++) { - const segments = rootMappings[i]; - const tracedSegments = []; - let lastSourcesIndex = -1; - let lastSourceLine = -1; - let lastSourceColumn = -1; - for (let j = 0; j < segments.length; j++) { - const segment = segments[j]; - let traced = SOURCELESS_MAPPING; - // 1-length segments only move the current generated column, there's no source information - // to gather from it. - if (segment.length !== 1) { - const source = rootSources[segment[1]]; - traced = source.originalPositionFor(segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : ''); - // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a - // respective segment into an original source. - if (traced === INVALID_MAPPING) - continue; - } - const genCol = segment[0]; - if (traced === SOURCELESS_MAPPING) { - if (lastSourcesIndex === -1) { - // This is a consecutive source-less segment, which doesn't carry any new information. - continue; - } - lastSourcesIndex = lastSourceLine = lastSourceColumn = -1; - tracedSegments.push([genCol]); - continue; - } - // So we traced a segment down into its original source file. Now push a - // new segment pointing to this location. - const { column, line, name, content, source } = traced; - // Store the source location, and ensure we keep sourcesContent up to - // date with the sources array. - const sourcesIndex = put(sources, source); - sourcesContent[sourcesIndex] = content; - if (lastSourcesIndex === sourcesIndex && - lastSourceLine === line && - lastSourceColumn === column) { - // This is a duplicate mapping pointing at the exact same starting point in the source - // file. It doesn't carry any new information, and only bloats the sourcemap. - continue; - } - lastLineWithSegment = i; - lastSourcesIndex = sourcesIndex; - lastSourceLine = line; - lastSourceColumn = column; - // This looks like unnecessary duplication, but it noticeably increases performance. If we - // were to push the nameIndex onto length-4 array, v8 would internally allocate 22 slots! - // That's 68 wasted bytes! Array literals have the same capacity as their length, saving - // memory. - tracedSegments.push(name - ? [genCol, sourcesIndex, line, column, put(names, name)] - : [genCol, sourcesIndex, line, column]); - } - mappings.push(tracedSegments); - } - if (mappings.length > lastLineWithSegment + 1) { - mappings.length = lastLineWithSegment + 1; - } - return presortedDecodedMap(Object.assign({}, tree.map, { - mappings, - // TODO: Make all sources relative to the sourceRoot. - sourceRoot: undefined, - names: names.array, - sources: sources.array, - sourcesContent, - })); - }; -})(); function asArray(value) { if (Array.isArray(value)) @@ -193,7 +122,7 @@ function buildSourceMapTree(input, loader) { } let tree = build(map, loader, '', 0); for (let i = maps.length - 1; i >= 0; i--) { - tree = new SourceMapTree(maps[i], [tree]); + tree = MapSource(maps[i], [tree]); } return tree; } @@ -215,19 +144,17 @@ function build(map, loader, importer, importerDepth) { // TODO: We should eventually support async loading of sourcemap files. const sourceMap = loader(ctx.source, ctx); const { source, content } = ctx; - // If there is no sourcemap, then it is an unmodified source file. - if (!sourceMap) { - // The contents of this unmodified source file can be overridden via the loader context, - // allowing it to be explicitly null or a string. If it remains undefined, we fall back to - // the importing sourcemap's `sourcesContent` field. - const sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null; - return new OriginalSource(source, sourceContent); - } - // Else, it's a real sourcemap, and we need to recurse into it to load its - // source files. - return build(new TraceMap(sourceMap, source), loader, source, depth); + // If there is a sourcemap, then we need to recurse into it to load its source files. + if (sourceMap) + return build(new TraceMap(sourceMap, source), loader, source, depth); + // Else, it's an an unmodified source file. + // The contents of this unmodified source file can be overridden via the loader context, + // allowing it to be explicitly null or a string. If it remains undefined, we fall back to + // the importing sourcemap's `sourcesContent` field. + const sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null; + return OriginalSource(source, sourceContent); }); - return new SourceMapTree(map, children); + return MapSource(map, children); } /** @@ -236,14 +163,15 @@ function build(map, loader, importer, importerDepth) { */ class SourceMap { constructor(map, options) { - this.version = 3; // SourceMap spec says this should be first. - this.file = map.file; - this.mappings = options.decodedMappings ? decodedMappings(map) : encodedMappings(map); - this.names = map.names; - this.sourceRoot = map.sourceRoot; - this.sources = map.sources; - if (!options.excludeContent && 'sourcesContent' in map) { - this.sourcesContent = map.sourcesContent; + const out = options.decodedMappings ? decodedMap(map) : encodedMap(map); + this.version = out.version; // SourceMap spec says this should be first. + this.file = out.file; + this.mappings = out.mappings; + this.names = out.names; + this.sourceRoot = out.sourceRoot; + this.sources = out.sources; + if (!options.excludeContent) { + this.sourcesContent = out.sourcesContent; } } toString() { diff --git a/tools/node_modules/eslint/node_modules/@ampproject/remapping/dist/remapping.umd.js b/tools/node_modules/eslint/node_modules/@ampproject/remapping/dist/remapping.umd.js index d4f3df4e320ebe..593c61d085fa68 100644 --- a/tools/node_modules/eslint/node_modules/@ampproject/remapping/dist/remapping.umd.js +++ b/tools/node_modules/eslint/node_modules/@ampproject/remapping/dist/remapping.umd.js @@ -1,174 +1,102 @@ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@jridgewell/trace-mapping')) : - typeof define === 'function' && define.amd ? define(['@jridgewell/trace-mapping'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.remapping = factory(global.traceMapping)); -})(this, (function (traceMapping) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@jridgewell/trace-mapping'), require('@jridgewell/gen-mapping')) : + typeof define === 'function' && define.amd ? define(['@jridgewell/trace-mapping', '@jridgewell/gen-mapping'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.remapping = factory(global.traceMapping, global.genMapping)); +})(this, (function (traceMapping, genMapping) { 'use strict'; + const SOURCELESS_MAPPING = { + source: null, + column: null, + line: null, + name: null, + content: null, + }; + const EMPTY_SOURCES = []; + function Source(map, sources, source, content) { + return { + map, + sources, + source, + content, + }; + } /** - * A "leaf" node in the sourcemap tree, representing an original, unmodified - * source file. Recursive segment tracing ends at the `OriginalSource`. + * MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes + * (which may themselves be SourceMapTrees). */ - class OriginalSource { - constructor(source, content) { - this.source = source; - this.content = content; - } - /** - * Tracing a `SourceMapSegment` ends when we get to an `OriginalSource`, - * meaning this line/column location originated from this source file. - */ - originalPositionFor(line, column, name) { - return { column, line, name, source: this.source, content: this.content }; - } + function MapSource(map, sources) { + return Source(map, sources, '', null); } - /** - * Puts `key` into the backing array, if it is not already present. Returns - * the index of the `key` in the backing array. + * A "leaf" node in the sourcemap tree, representing an original, unmodified source file. Recursive + * segment tracing ends at the `OriginalSource`. */ - let put; - /** - * FastStringArray acts like a `Set` (allowing only one occurrence of a string - * `key`), but provides the index of the `key` in the backing array. - * - * This is designed to allow synchronizing a second array with the contents of - * the backing array, like how `sourcesContent[i]` is the source content - * associated with `source[i]`, and there are never duplicates. - */ - class FastStringArray { - constructor() { - this.indexes = Object.create(null); - this.array = []; - } + function OriginalSource(source, content) { + return Source(null, EMPTY_SOURCES, source, content); } - (() => { - put = (strarr, key) => { - const { array, indexes } = strarr; - // The key may or may not be present. If it is present, it's a number. - let index = indexes[key]; - // If it's not yet present, we need to insert it and track the index in the - // indexes. - if (index === undefined) { - index = indexes[key] = array.length; - array.push(key); - } - return index; - }; - })(); - - const INVALID_MAPPING = undefined; - const SOURCELESS_MAPPING = null; /** * traceMappings is only called on the root level SourceMapTree, and begins the process of * resolving each mapping in terms of the original source files. */ - let traceMappings; + function traceMappings(tree) { + const gen = new genMapping.GenMapping({ file: tree.map.file }); + const { sources: rootSources, map } = tree; + const rootNames = map.names; + const rootMappings = traceMapping.decodedMappings(map); + for (let i = 0; i < rootMappings.length; i++) { + const segments = rootMappings[i]; + let lastSource = null; + let lastSourceLine = null; + let lastSourceColumn = null; + for (let j = 0; j < segments.length; j++) { + const segment = segments[j]; + const genCol = segment[0]; + let traced = SOURCELESS_MAPPING; + // 1-length segments only move the current generated column, there's no source information + // to gather from it. + if (segment.length !== 1) { + const source = rootSources[segment[1]]; + traced = originalPositionFor(source, segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : ''); + // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a + // respective segment into an original source. + if (traced == null) + continue; + } + // So we traced a segment down into its original source file. Now push a + // new segment pointing to this location. + const { column, line, name, content, source } = traced; + if (line === lastSourceLine && column === lastSourceColumn && source === lastSource) { + continue; + } + lastSourceLine = line; + lastSourceColumn = column; + lastSource = source; + // Sigh, TypeScript can't figure out source/line/column are either all null, or all non-null... + genMapping.addSegment(gen, i, genCol, source, line, column, name); + if (content != null) + genMapping.setSourceContent(gen, source, content); + } + } + return gen; + } /** - * SourceMapTree represents a single sourcemap, with the ability to trace - * mappings into its child nodes (which may themselves be SourceMapTrees). + * originalPositionFor is only called on children SourceMapTrees. It recurses down into its own + * child SourceMapTrees, until we find the original source map. */ - class SourceMapTree { - constructor(map, sources) { - this.map = map; - this.sources = sources; - } - /** - * originalPositionFor is only called on children SourceMapTrees. It recurses down - * into its own child SourceMapTrees, until we find the original source map. - */ - originalPositionFor(line, column, name) { - const segment = traceMapping.traceSegment(this.map, line, column); - // If we couldn't find a segment, then this doesn't exist in the sourcemap. - if (segment == null) - return INVALID_MAPPING; - // 1-length segments only move the current generated column, there's no source information - // to gather from it. - if (segment.length === 1) - return SOURCELESS_MAPPING; - const source = this.sources[segment[1]]; - return source.originalPositionFor(segment[2], segment[3], segment.length === 5 ? this.map.names[segment[4]] : name); + function originalPositionFor(source, line, column, name) { + if (!source.map) { + return { column, line, name, source: source.source, content: source.content }; } + const segment = traceMapping.traceSegment(source.map, line, column); + // If we couldn't find a segment, then this doesn't exist in the sourcemap. + if (segment == null) + return null; + // 1-length segments only move the current generated column, there's no source information + // to gather from it. + if (segment.length === 1) + return SOURCELESS_MAPPING; + return originalPositionFor(source.sources[segment[1]], segment[2], segment[3], segment.length === 5 ? source.map.names[segment[4]] : name); } - (() => { - traceMappings = (tree) => { - const mappings = []; - const names = new FastStringArray(); - const sources = new FastStringArray(); - const sourcesContent = []; - const { sources: rootSources, map } = tree; - const rootNames = map.names; - const rootMappings = traceMapping.decodedMappings(map); - let lastLineWithSegment = -1; - for (let i = 0; i < rootMappings.length; i++) { - const segments = rootMappings[i]; - const tracedSegments = []; - let lastSourcesIndex = -1; - let lastSourceLine = -1; - let lastSourceColumn = -1; - for (let j = 0; j < segments.length; j++) { - const segment = segments[j]; - let traced = SOURCELESS_MAPPING; - // 1-length segments only move the current generated column, there's no source information - // to gather from it. - if (segment.length !== 1) { - const source = rootSources[segment[1]]; - traced = source.originalPositionFor(segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : ''); - // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a - // respective segment into an original source. - if (traced === INVALID_MAPPING) - continue; - } - const genCol = segment[0]; - if (traced === SOURCELESS_MAPPING) { - if (lastSourcesIndex === -1) { - // This is a consecutive source-less segment, which doesn't carry any new information. - continue; - } - lastSourcesIndex = lastSourceLine = lastSourceColumn = -1; - tracedSegments.push([genCol]); - continue; - } - // So we traced a segment down into its original source file. Now push a - // new segment pointing to this location. - const { column, line, name, content, source } = traced; - // Store the source location, and ensure we keep sourcesContent up to - // date with the sources array. - const sourcesIndex = put(sources, source); - sourcesContent[sourcesIndex] = content; - if (lastSourcesIndex === sourcesIndex && - lastSourceLine === line && - lastSourceColumn === column) { - // This is a duplicate mapping pointing at the exact same starting point in the source - // file. It doesn't carry any new information, and only bloats the sourcemap. - continue; - } - lastLineWithSegment = i; - lastSourcesIndex = sourcesIndex; - lastSourceLine = line; - lastSourceColumn = column; - // This looks like unnecessary duplication, but it noticeably increases performance. If we - // were to push the nameIndex onto length-4 array, v8 would internally allocate 22 slots! - // That's 68 wasted bytes! Array literals have the same capacity as their length, saving - // memory. - tracedSegments.push(name - ? [genCol, sourcesIndex, line, column, put(names, name)] - : [genCol, sourcesIndex, line, column]); - } - mappings.push(tracedSegments); - } - if (mappings.length > lastLineWithSegment + 1) { - mappings.length = lastLineWithSegment + 1; - } - return traceMapping.presortedDecodedMap(Object.assign({}, tree.map, { - mappings, - // TODO: Make all sources relative to the sourceRoot. - sourceRoot: undefined, - names: names.array, - sources: sources.array, - sourcesContent, - })); - }; - })(); function asArray(value) { if (Array.isArray(value)) @@ -197,7 +125,7 @@ } let tree = build(map, loader, '', 0); for (let i = maps.length - 1; i >= 0; i--) { - tree = new SourceMapTree(maps[i], [tree]); + tree = MapSource(maps[i], [tree]); } return tree; } @@ -219,19 +147,17 @@ // TODO: We should eventually support async loading of sourcemap files. const sourceMap = loader(ctx.source, ctx); const { source, content } = ctx; - // If there is no sourcemap, then it is an unmodified source file. - if (!sourceMap) { - // The contents of this unmodified source file can be overridden via the loader context, - // allowing it to be explicitly null or a string. If it remains undefined, we fall back to - // the importing sourcemap's `sourcesContent` field. - const sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null; - return new OriginalSource(source, sourceContent); - } - // Else, it's a real sourcemap, and we need to recurse into it to load its - // source files. - return build(new traceMapping.TraceMap(sourceMap, source), loader, source, depth); + // If there is a sourcemap, then we need to recurse into it to load its source files. + if (sourceMap) + return build(new traceMapping.TraceMap(sourceMap, source), loader, source, depth); + // Else, it's an an unmodified source file. + // The contents of this unmodified source file can be overridden via the loader context, + // allowing it to be explicitly null or a string. If it remains undefined, we fall back to + // the importing sourcemap's `sourcesContent` field. + const sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null; + return OriginalSource(source, sourceContent); }); - return new SourceMapTree(map, children); + return MapSource(map, children); } /** @@ -240,14 +166,15 @@ */ class SourceMap { constructor(map, options) { - this.version = 3; // SourceMap spec says this should be first. - this.file = map.file; - this.mappings = options.decodedMappings ? traceMapping.decodedMappings(map) : traceMapping.encodedMappings(map); - this.names = map.names; - this.sourceRoot = map.sourceRoot; - this.sources = map.sources; - if (!options.excludeContent && 'sourcesContent' in map) { - this.sourcesContent = map.sourcesContent; + const out = options.decodedMappings ? genMapping.decodedMap(map) : genMapping.encodedMap(map); + this.version = out.version; // SourceMap spec says this should be first. + this.file = out.file; + this.mappings = out.mappings; + this.names = out.names; + this.sourceRoot = out.sourceRoot; + this.sources = out.sources; + if (!options.excludeContent) { + this.sourcesContent = out.sourcesContent; } } toString() { diff --git a/tools/node_modules/eslint/node_modules/@ampproject/remapping/package.json b/tools/node_modules/eslint/node_modules/@ampproject/remapping/package.json index 0914a04eb446eb..bf97a85173adf4 100644 --- a/tools/node_modules/eslint/node_modules/@ampproject/remapping/package.json +++ b/tools/node_modules/eslint/node_modules/@ampproject/remapping/package.json @@ -1,6 +1,6 @@ { "name": "@ampproject/remapping", - "version": "2.1.2", + "version": "2.2.0", "description": "Remap sequential sourcemaps through transformations to point at the original source code", "keywords": [ "source", @@ -41,22 +41,23 @@ "test:watch": "jest --coverage --watch" }, "devDependencies": { - "@rollup/plugin-typescript": "8.3.0", - "@types/jest": "27.4.0", - "@typescript-eslint/eslint-plugin": "5.10.2", - "@typescript-eslint/parser": "5.10.2", - "eslint": "8.8.0", - "eslint-config-prettier": "8.3.0", - "jest": "27.4.7", - "jest-config": "27.4.7", + "@rollup/plugin-typescript": "8.3.2", + "@types/jest": "27.4.1", + "@typescript-eslint/eslint-plugin": "5.20.0", + "@typescript-eslint/parser": "5.20.0", + "eslint": "8.14.0", + "eslint-config-prettier": "8.5.0", + "jest": "27.5.1", + "jest-config": "27.5.1", "npm-run-all": "4.1.5", - "prettier": "2.5.1", - "rollup": "2.67.0", - "ts-jest": "27.1.3", - "tslib": "2.3.1", - "typescript": "4.5.5" + "prettier": "2.6.2", + "rollup": "2.70.2", + "ts-jest": "27.1.4", + "tslib": "2.4.0", + "typescript": "4.6.3" }, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.0" + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" } } diff --git a/tools/node_modules/eslint/node_modules/@babel/code-frame/package.json b/tools/node_modules/eslint/node_modules/@babel/code-frame/package.json index ee1b3820a68fd8..18d8db1229cea4 100644 --- a/tools/node_modules/eslint/node_modules/@babel/code-frame/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/code-frame/package.json @@ -1,6 +1,6 @@ { "name": "@babel/code-frame", - "version": "7.16.7", + "version": "7.18.6", "description": "Generate errors that contain a code frame that point to source locations.", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-code-frame", @@ -16,7 +16,7 @@ }, "main": "./lib/index.js", "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" }, "devDependencies": { "@types/chalk": "^2.0.0", @@ -25,5 +25,6 @@ }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/data/corejs2-built-ins.json b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/corejs2-built-ins.json index ab9d30be39a022..b9e4cfe3715958 100644 --- a/tools/node_modules/eslint/node_modules/@babel/compat-data/data/corejs2-built-ins.json +++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/corejs2-built-ins.json @@ -17,11 +17,11 @@ "edge": "12", "firefox": "2", "safari": "3.1", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -90,11 +90,11 @@ "edge": "12", "firefox": "2", "safari": "3.1", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -114,7 +114,7 @@ "chrome": "47", "opera": "34", "edge": "14", - "firefox": "43", + "firefox": "102", "safari": "10", "node": "6", "ios": "10", @@ -127,11 +127,11 @@ "edge": "12", "firefox": "2", "safari": "3.1", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -142,11 +142,11 @@ "edge": "12", "firefox": "4", "safari": "4", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -169,11 +169,11 @@ "edge": "12", "firefox": "2", "safari": "3.1", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -207,11 +207,11 @@ "edge": "12", "firefox": "3", "safari": "4", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -222,11 +222,11 @@ "edge": "12", "firefox": "3", "safari": "4", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -248,11 +248,11 @@ "edge": "12", "firefox": "2", "safari": "3.1", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -287,11 +287,11 @@ "edge": "12", "firefox": "2", "safari": "4", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -302,11 +302,11 @@ "edge": "12", "firefox": "3.5", "safari": "4", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -317,7 +317,7 @@ "edge": "12", "firefox": "4", "safari": "10", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "10", @@ -342,11 +342,11 @@ "edge": "12", "firefox": "2", "safari": "3.1", - "node": "0.10", + "node": "0.4", "ie": "10", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -357,11 +357,11 @@ "edge": "12", "firefox": "4", "safari": "5.1", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -383,10 +383,10 @@ "edge": "14", "firefox": "2", "safari": "4", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -637,7 +637,7 @@ "edge": "12", "firefox": "16", "safari": "9", - "node": "0.12", + "node": "0.8", "android": "4.1", "ios": "9", "samsung": "1.5", @@ -662,7 +662,7 @@ "edge": "12", "firefox": "15", "safari": "9", - "node": "0.12", + "node": "0.8", "android": "4.1", "ios": "9", "samsung": "1.5", @@ -746,11 +746,11 @@ "edge": "12", "firefox": "4", "safari": "4", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -783,11 +783,11 @@ "edge": "12", "firefox": "4", "safari": "5.1", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -798,11 +798,11 @@ "edge": "12", "firefox": "4", "safari": "4", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -929,7 +929,7 @@ "edge": "12", "firefox": "22", "safari": "9", - "node": "0.12", + "node": "0.8", "android": "4.1", "ios": "9", "samsung": "1.5", @@ -1304,10 +1304,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1318,10 +1318,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1332,10 +1332,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1346,10 +1346,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1384,10 +1384,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1398,10 +1398,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1412,10 +1412,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1450,10 +1450,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1476,10 +1476,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1538,10 +1538,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1564,10 +1564,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1578,10 +1578,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1592,10 +1592,10 @@ "edge": "12", "firefox": "17", "safari": "6", - "node": "0.10", + "node": "0.4", "android": "4", "ios": "7", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.14", "electron": "0.20" @@ -1606,11 +1606,11 @@ "edge": "12", "firefox": "3.5", "safari": "4", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -1656,11 +1656,11 @@ "edge": "12", "firefox": "15", "safari": "5.1", - "node": "0.10", + "node": "0.4", "ie": "10", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugin-bugfixes.json b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugin-bugfixes.json index 7fb7f179120286..a16d707df069aa 100644 --- a/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugin-bugfixes.json +++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugin-bugfixes.json @@ -1,15 +1,4 @@ { - "transform-async-to-generator": { - "chrome": "55", - "opera": "42", - "edge": "15", - "firefox": "52", - "safari": "10.1", - "node": "7.6", - "ios": "10.3", - "samsung": "6", - "electron": "1.6" - }, "bugfix/transform-async-arrows-in-class": { "chrome": "55", "opera": "42", @@ -21,17 +10,6 @@ "samsung": "6", "electron": "1.6" }, - "transform-parameters": { - "chrome": "49", - "opera": "36", - "edge": "15", - "firefox": "53", - "safari": "10", - "node": "6", - "ios": "10", - "samsung": "5", - "electron": "0.37" - }, "bugfix/transform-edge-default-parameters": { "chrome": "49", "opera": "36", @@ -43,17 +21,6 @@ "samsung": "5", "electron": "0.37" }, - "transform-function-name": { - "chrome": "51", - "opera": "38", - "edge": "14", - "firefox": "53", - "safari": "10", - "node": "6.5", - "ios": "10", - "samsung": "5", - "electron": "1.2" - }, "bugfix/transform-edge-function-name": { "chrome": "51", "opera": "38", @@ -65,17 +32,6 @@ "samsung": "5", "electron": "1.2" }, - "transform-block-scoping": { - "chrome": "49", - "opera": "36", - "edge": "14", - "firefox": "51", - "safari": "10", - "node": "6", - "ios": "10", - "samsung": "5", - "electron": "0.37" - }, "bugfix/transform-safari-block-shadowing": { "chrome": "49", "opera": "36", @@ -110,17 +66,6 @@ "samsung": "5", "electron": "0.37" }, - "transform-template-literals": { - "chrome": "41", - "opera": "28", - "edge": "13", - "firefox": "34", - "safari": "9", - "node": "4", - "ios": "9", - "samsung": "3.4", - "electron": "0.21" - }, "bugfix/transform-tagged-template-caching": { "chrome": "41", "opera": "28", @@ -133,6 +78,16 @@ "rhino": "1.7.14", "electron": "0.21" }, + "bugfix/transform-v8-spread-parameters-in-optional-chaining": { + "chrome": "91", + "opera": "77", + "edge": "91", + "firefox": "74", + "safari": "13.1", + "node": "16.9", + "ios": "13.4", + "electron": "13.0" + }, "proposal-optional-chaining": { "chrome": "80", "opera": "67", @@ -144,14 +99,59 @@ "samsung": "13", "electron": "8.0" }, - "bugfix/transform-v8-spread-parameters-in-optional-chaining": { - "chrome": "91", - "opera": "77", - "edge": "91", - "firefox": "74", - "safari": "13.1", - "node": "16.9", - "ios": "13.4", - "electron": "13.0" + "transform-parameters": { + "chrome": "49", + "opera": "36", + "edge": "15", + "firefox": "53", + "safari": "10", + "node": "6", + "ios": "10", + "samsung": "5", + "electron": "0.37" + }, + "transform-async-to-generator": { + "chrome": "55", + "opera": "42", + "edge": "15", + "firefox": "52", + "safari": "10.1", + "node": "7.6", + "ios": "10.3", + "samsung": "6", + "electron": "1.6" + }, + "transform-template-literals": { + "chrome": "41", + "opera": "28", + "edge": "13", + "firefox": "34", + "safari": "9", + "node": "4", + "ios": "9", + "samsung": "3.4", + "electron": "0.21" + }, + "transform-function-name": { + "chrome": "51", + "opera": "38", + "edge": "14", + "firefox": "53", + "safari": "10", + "node": "6.5", + "ios": "10", + "samsung": "5", + "electron": "1.2" + }, + "transform-block-scoping": { + "chrome": "49", + "opera": "36", + "edge": "14", + "firefox": "51", + "safari": "10", + "node": "6", + "ios": "10", + "samsung": "5", + "electron": "0.37" } } diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugins.json b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugins.json index b64714c7f0ebb0..96c64cab34f242 100644 --- a/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugins.json +++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugins.json @@ -4,7 +4,8 @@ "opera": "80", "edge": "94", "firefox": "93", - "node": "16.11" + "node": "16.11", + "electron": "15.0" }, "proposal-private-property-in-object": { "chrome": "91", @@ -422,11 +423,11 @@ "edge": "12", "firefox": "2", "safari": "5.1", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -437,11 +438,11 @@ "edge": "12", "firefox": "2", "safari": "5.1", - "node": "0.10", + "node": "0.4", "ie": "9", "android": "4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" @@ -452,11 +453,11 @@ "edge": "12", "firefox": "2", "safari": "3.1", - "node": "0.10", + "node": "0.6", "ie": "9", "android": "4.4", "ios": "6", - "phantom": "2", + "phantom": "1.9", "samsung": "1", "rhino": "1.7.13", "electron": "0.20" diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/package.json b/tools/node_modules/eslint/node_modules/@babel/compat-data/package.json index a0af97a03dbd26..6793cb26ea6d13 100644 --- a/tools/node_modules/eslint/node_modules/@babel/compat-data/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/package.json @@ -1,6 +1,6 @@ { "name": "@babel/compat-data", - "version": "7.17.0", + "version": "7.18.8", "author": "The Babel Team (https://babel.dev/team)", "license": "MIT", "description": "", @@ -30,10 +30,11 @@ ], "devDependencies": { "@mdn/browser-compat-data": "^4.0.10", - "core-js-compat": "^3.20.2", - "electron-to-chromium": "^1.3.893" + "core-js-compat": "^3.22.1", + "electron-to-chromium": "^1.4.113" }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/cache-contexts.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/cache-contexts.js index e69de29bb2d1d6..d28d24ce7e71ad 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/cache-contexts.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/cache-contexts.js @@ -0,0 +1 @@ +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/caching.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/caching.js index 16c6e9edb9d4a3..22bc72e36d362c 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/caching.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/caching.js @@ -322,4 +322,6 @@ class Lock { this._resolve(value); } -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-chain.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-chain.js index aa5c5f22a9aefa..dce70e1f40376a 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-chain.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-chain.js @@ -561,4 +561,6 @@ function matchPattern(pattern, dirname, pathToTest, context) { } return pattern.test(pathToTest); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-descriptors.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-descriptors.js index 2f0a7a58ed5ac2..82d80b38b7ac91 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-descriptors.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-descriptors.js @@ -241,4 +241,6 @@ function assertNoDuplicates(items) { nameMap.add(item.name); } -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/configuration.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/configuration.js index f6cbf0c62c7be4..6a4ad781c0e166 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/configuration.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/configuration.js @@ -355,4 +355,6 @@ module.exports = function(api) { // Return the value that will be cached. return { }; };`); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import-meta-resolve.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import-meta-resolve.js index 6e1c9056507b20..63e19ad6ad155f 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import-meta-resolve.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import-meta-resolve.js @@ -38,4 +38,6 @@ function _resolve() { return (yield importMetaResolveP)(specifier, parent); }); return _resolve.apply(this, arguments); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import.js index c0acc2b666dbdc..b760227ceaf707 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import.js @@ -7,4 +7,6 @@ exports.default = import_; function import_(filepath) { return import(filepath); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index-browser.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index-browser.js index c73168bfbd59d1..023adbe8dd5a28 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index-browser.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index-browser.js @@ -64,4 +64,6 @@ function loadPlugin(name, dirname) { function loadPreset(name, dirname) { throw new Error(`Cannot load preset ${name} relative to ${dirname} in a browser`); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index.js index 075410c028cdff..cc93307c1d89c8 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index.js @@ -83,4 +83,5 @@ exports.resolvePlugin = resolvePlugin; const resolvePreset = _gensync()(plugins.resolvePreset).sync; -exports.resolvePreset = resolvePreset; \ No newline at end of file +exports.resolvePreset = resolvePreset; +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/module-types.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/module-types.js index 35d8220a3ff6fe..dea3354c257211 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/module-types.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/module-types.js @@ -38,6 +38,16 @@ function _module() { return data; } +function _semver() { + const data = require("semver"); + + _semver = function () { + return data; + }; + + return data; +} + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } @@ -48,7 +58,8 @@ try { import_ = require("./import").default; } catch (_unused) {} -const supportsESM = !!import_; +const supportsESM = _semver().satisfies(process.versions.node, "^12.17 || >=13.2"); + exports.supportsESM = supportsESM; function* loadCjsOrMjsDefault(filepath, asyncError, fallbackToTranspiledModule = false) { @@ -105,4 +116,6 @@ function _loadMjsDefault() { return module.default; }); return _loadMjsDefault.apply(this, arguments); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/package.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/package.js index 0e08bfe331ff76..c6b7f4747494ee 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/package.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/package.js @@ -73,4 +73,5 @@ const readConfigPackage = (0, _utils.makeStaticFileCache)((filepath, content) => dirname: _path().dirname(filepath), options }; -}); \ No newline at end of file +}); +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/plugins.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/plugins.js index 8af6e4957c2d7c..8cfa436aa764ab 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/plugins.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/plugins.js @@ -187,7 +187,7 @@ function _tryImportMetaResolve() { return _tryImportMetaResolve.apply(this, arguments); } -function resolveStandardizedNameForRequrie(type, name, dirname) { +function resolveStandardizedNameForRequire(type, name, dirname) { const it = resolveAlternativesHelper(type, name); let res = it.next(); @@ -221,20 +221,20 @@ function _resolveStandardizedNameForImport() { const resolveStandardizedName = _gensync()({ sync(type, name, dirname = process.cwd()) { - return resolveStandardizedNameForRequrie(type, name, dirname); + return resolveStandardizedNameForRequire(type, name, dirname); }, async(type, name, dirname = process.cwd()) { return _asyncToGenerator(function* () { if (!_moduleTypes.supportsESM) { - return resolveStandardizedNameForRequrie(type, name, dirname); + return resolveStandardizedNameForRequire(type, name, dirname); } try { return yield resolveStandardizedNameForImport(type, name, dirname); } catch (e) { try { - return resolveStandardizedNameForRequrie(type, name, dirname); + return resolveStandardizedNameForRequire(type, name, dirname); } catch (e2) { if (e.type === "MODULE_NOT_FOUND") throw e; if (e2.type === "MODULE_NOT_FOUND") throw e2; @@ -270,4 +270,6 @@ function* requireModule(type, name) { LOADING_MODULES.delete(name); } } -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/types.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/types.js index e69de29bb2d1d6..d28d24ce7e71ad 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/types.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/types.js @@ -0,0 +1 @@ +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/utils.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/utils.js index 6da68c0a7304df..84dbe02baa07e8 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/utils.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/utils.js @@ -41,4 +41,6 @@ function fileMtime(filepath) { } return null; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/full.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/full.js index e1df648ceede02..cab5fd6ce4dc7e 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/full.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/full.js @@ -327,7 +327,7 @@ const instantiatePlugin = (0, _caching.makeWeakCache)(function* ({ const validateIfOptionNeedsFilename = (options, descriptor) => { if (options.test || options.include || options.exclude) { const formattedPresetName = descriptor.name ? `"${descriptor.name}"` : "/* your preset */"; - throw new Error([`Preset ${formattedPresetName} requires a filename to be set when babel is called directly,`, `\`\`\``, `babel.transform(code, { filename: 'file.ts', presets: [${formattedPresetName}] });`, `\`\`\``, `See https://babeljs.io/docs/en/options#filename for more information.`].join("\n")); + throw new Error([`Preset ${formattedPresetName} requires a filename to be set when babel is called directly,`, `\`\`\``, `babel.transformSync(code, { filename: 'file.ts', presets: [${formattedPresetName}] });`, `\`\`\``, `See https://babeljs.io/docs/en/options#filename for more information.`].join("\n")); } }; @@ -375,4 +375,6 @@ function chain(a, b) { fn.apply(this, args); } }; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/config-api.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/config-api.js index f8dedbcb44b994..5fafead72a559d 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/config-api.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/config-api.js @@ -31,8 +31,7 @@ function makeConfigAPI(cache) { return (0, _caching.assertSimpleType)(value(data.envName)); } - if (!Array.isArray(value)) value = [value]; - return value.some(entry => { + return (Array.isArray(value) ? value : [value]).some(entry => { if (typeof entry !== "string") { throw new Error("Unexpected non-string value"); } @@ -105,4 +104,6 @@ function assertVersion(range) { version: _.version, range }); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/deep-array.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/deep-array.js index 9455e32c3f8ff9..4aa198c3e5ff92 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/deep-array.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/deep-array.js @@ -21,4 +21,6 @@ function flattenToSet(arr) { } return result; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/environment.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/environment.js index e4bfdbc7a725cd..75910a770e130d 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/environment.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/environment.js @@ -7,4 +7,6 @@ exports.getEnv = getEnv; function getEnv(defaultValue = "development") { return process.env.BABEL_ENV || process.env.NODE_ENV || defaultValue; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/index.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/index.js index 696850dba2a1d1..09eb5dc45831f9 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/index.js @@ -72,4 +72,6 @@ function createConfigItem(target, options, callback) { } else { return createConfigItemRunner.sync(target, options); } -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/item.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/item.js index 238035461911bb..f0a185ea09a6f1 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/item.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/item.js @@ -73,4 +73,5 @@ class ConfigItem { } -Object.freeze(ConfigItem.prototype); \ No newline at end of file +Object.freeze(ConfigItem.prototype); +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/partial.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/partial.js index e8c52e103b64cc..2269da2b350584 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/partial.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/partial.js @@ -194,4 +194,5 @@ class PartialConfig { } -Object.freeze(PartialConfig.prototype); \ No newline at end of file +Object.freeze(PartialConfig.prototype); +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/pattern-to-regex.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/pattern-to-regex.js index ec5db8fd5d2ac2..f24d955bcd2837 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/pattern-to-regex.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/pattern-to-regex.js @@ -41,4 +41,6 @@ function pathToPattern(pattern, dirname) { return escapeRegExp(part) + (last ? endSep : sep); })].join("")); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/plugin.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/plugin.js index 40e054019840ba..e0f2d34ea4da68 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/plugin.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/plugin.js @@ -31,4 +31,5 @@ class Plugin { } -exports.default = Plugin; \ No newline at end of file +exports.default = Plugin; +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/printer.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/printer.js index 229fd9a3ce754c..51d7c1b67b5d25 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/printer.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/printer.js @@ -81,7 +81,7 @@ function descriptorToConfig(d) { if (typeof d.value === "object") { name = d.value; } else if (typeof d.value === "function") { - name = `[Function: ${d.value.toString().substr(0, 50)} ... ]`; + name = `[Function: ${d.value.toString().slice(0, 50)} ... ]`; } } @@ -136,4 +136,5 @@ class ConfigPrinter { } -exports.ConfigPrinter = ConfigPrinter; \ No newline at end of file +exports.ConfigPrinter = ConfigPrinter; +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets-browser.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets-browser.js index cc4e518029970e..1fd3f9e140036b 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets-browser.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets-browser.js @@ -21,22 +21,27 @@ function resolveBrowserslistConfigFile(browserslistConfigFile, configFilePath) { } function resolveTargets(options, root) { - let targets = options.targets; + const optTargets = options.targets; + let targets; - if (typeof targets === "string" || Array.isArray(targets)) { + if (typeof optTargets === "string" || Array.isArray(optTargets)) { targets = { - browsers: targets + browsers: optTargets }; - } - - if (targets && targets.esmodules) { - targets = Object.assign({}, targets, { - esmodules: "intersect" - }); + } else if (optTargets) { + if ("esmodules" in optTargets) { + targets = Object.assign({}, optTargets, { + esmodules: "intersect" + }); + } else { + targets = optTargets; + } } return (0, _helperCompilationTargets().default)(targets, { ignoreBrowserslistConfig: true, browserslistEnv: options.browserslistEnv }); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets.js index 973e3d57641df7..585d86bc72468a 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets.js @@ -33,18 +33,21 @@ function resolveBrowserslistConfigFile(browserslistConfigFile, configFileDir) { } function resolveTargets(options, root) { - let targets = options.targets; + const optTargets = options.targets; + let targets; - if (typeof targets === "string" || Array.isArray(targets)) { + if (typeof optTargets === "string" || Array.isArray(optTargets)) { targets = { - browsers: targets + browsers: optTargets }; - } - - if (targets && targets.esmodules) { - targets = Object.assign({}, targets, { - esmodules: "intersect" - }); + } else if (optTargets) { + if ("esmodules" in optTargets) { + targets = Object.assign({}, optTargets, { + esmodules: "intersect" + }); + } else { + targets = optTargets; + } } const { @@ -65,4 +68,6 @@ function resolveTargets(options, root) { configPath: root, browserslistEnv: options.browserslistEnv }); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/util.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/util.js index 1fc2d3d79c6c9f..98b58708ae45c9 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/util.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/util.js @@ -28,4 +28,6 @@ function mergeDefaultFields(target, source) { function isIterableIterator(value) { return !!value && typeof value.next === "function" && typeof value[Symbol.iterator] === "function"; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/option-assertions.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/option-assertions.js index 9a0b4a47994b60..8761d29590d2f5 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/option-assertions.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/option-assertions.js @@ -349,4 +349,6 @@ function assertAssumptions(loc, value) { } return value; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/options.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/options.js index 930278cfb9d1ce..7aa1582966eca6 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/options.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/options.js @@ -74,7 +74,8 @@ const COMMON_VALIDATORS = { moduleId: _optionAssertions.assertString }); } -const assumptionsNames = new Set(["arrayLikeIsIterable", "constantReexports", "constantSuper", "enumerableModuleMeta", "ignoreFunctionLength", "ignoreToPrimitiveHint", "iterableIsArray", "mutableTemplateObject", "noClassCalls", "noDocumentAll", "noIncompleteNsImportDetection", "noNewArrows", "objectRestNoSymbols", "privateFieldsAsProperties", "pureGetters", "setClassMethods", "setComputedProperties", "setPublicClassFields", "setSpreadProperties", "skipForOfIteratorClosing", "superIsCallableConstructor"]); +const knownAssumptions = ["arrayLikeIsIterable", "constantReexports", "constantSuper", "enumerableModuleMeta", "ignoreFunctionLength", "ignoreToPrimitiveHint", "iterableIsArray", "mutableTemplateObject", "noClassCalls", "noDocumentAll", "noIncompleteNsImportDetection", "noNewArrows", "objectRestNoSymbols", "privateFieldsAsProperties", "pureGetters", "setClassMethods", "setComputedProperties", "setPublicClassFields", "setSpreadProperties", "skipForOfIteratorClosing", "superIsCallableConstructor"]; +const assumptionsNames = new Set(knownAssumptions); exports.assumptionsNames = assumptionsNames; function getSource(loc) { @@ -207,4 +208,6 @@ function checkNoUnwrappedItemOptionPairs(items, index, type, e) { if (lastItem.file && lastItem.options === undefined && typeof thisItem.value === "object") { e.message += `\n- Maybe you meant to use\n` + `"${type}s": [\n ["${lastItem.file.request}", ${JSON.stringify(thisItem.value, undefined, 2)}]\n]\n` + `To be a valid ${type}, its name and options should be wrapped in a pair of brackets`; } -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/plugins.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/plugins.js index a70cc676fab148..32c05c22104fa9 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/plugins.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/plugins.js @@ -68,4 +68,6 @@ function validatePluginObject(obj) { } }); return obj; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/removed.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/removed.js index f0fcd7de391f9d..2419f2bd2a052f 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/removed.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/removed.js @@ -63,4 +63,5 @@ var _default = { message: "The `sourceMapTarget` option has been removed because it makes more sense for the tooling " + "that calls Babel to assign `map.file` themselves." } }; -exports.default = _default; \ No newline at end of file +exports.default = _default; +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/async.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/async.js index 7deb1863a12e4c..c95aa3b0451ed0 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/async.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/async.js @@ -91,4 +91,6 @@ exports.waitFor = waitFor; function isThenable(val) { return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function"; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/fs.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/fs.js index 056ae34da1bb6c..1d393c8495ac20 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/fs.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/fs.js @@ -37,4 +37,5 @@ const stat = _gensync()({ errback: _fs().stat }); -exports.stat = stat; \ No newline at end of file +exports.stat = stat; +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/index.js index f25de7340e4bef..d35bfe9ae3ac1d 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/index.js @@ -108,13 +108,13 @@ Object.defineProperty(exports, "resolvePreset", { return _files.resolvePreset; } }); -Object.defineProperty(exports, "template", { +Object.defineProperty((0, exports), "template", { enumerable: true, get: function () { return _template().default; } }); -Object.defineProperty(exports, "tokTypes", { +Object.defineProperty((0, exports), "tokTypes", { enumerable: true, get: function () { return _parser().tokTypes; @@ -174,7 +174,7 @@ Object.defineProperty(exports, "transformSync", { return _transform.transformSync; } }); -Object.defineProperty(exports, "traverse", { +Object.defineProperty((0, exports), "traverse", { enumerable: true, get: function () { return _traverse().default; @@ -200,7 +200,7 @@ function _types() { return data; } -Object.defineProperty(exports, "types", { +Object.defineProperty((0, exports), "types", { enumerable: true, get: function () { return _types(); @@ -247,14 +247,14 @@ var _transformAst = require("./transform-ast"); var _parse = require("./parse"); -const version = "7.17.5"; +const version = "7.18.6"; exports.version = version; const DEFAULT_EXTENSIONS = Object.freeze([".js", ".jsx", ".es6", ".es", ".mjs", ".cjs"]); exports.DEFAULT_EXTENSIONS = DEFAULT_EXTENSIONS; class OptionManager { init(opts) { - return (0, _config.loadOptions)(opts); + return (0, _config.loadOptionsSync)(opts); } } @@ -263,4 +263,6 @@ exports.OptionManager = OptionManager; function Plugin(alias) { throw new Error(`The (${alias}) Babel 5 plugin is being run with an unsupported Babel version.`); -} \ No newline at end of file +} + +0 && (exports.types = exports.traverse = exports.tokTypes = exports.template = 0); \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/parse.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/parse.js index 783032ab9375e3..feb85157741ed7 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/parse.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/parse.js @@ -37,7 +37,12 @@ const parse = function parse(code, opts, callback) { opts = undefined; } - if (callback === undefined) return parseRunner.sync(code, opts); + if (callback === undefined) { + { + return parseRunner.sync(code, opts); + } + } + parseRunner.errback(code, opts, callback); }; @@ -45,4 +50,5 @@ exports.parse = parse; const parseSync = parseRunner.sync; exports.parseSync = parseSync; const parseAsync = parseRunner.async; -exports.parseAsync = parseAsync; \ No newline at end of file +exports.parseAsync = parseAsync; +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/index.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/index.js index 254122a14c8009..29fca4acc5089d 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/index.js @@ -92,4 +92,6 @@ function* parser(pluginPasses, { throw err; } -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js index aa6ae3f365c23b..740ff22ddc700f 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js @@ -8,283 +8,283 @@ const pluginNameMap = { asyncDoExpressions: { syntax: { name: "@babel/plugin-syntax-async-do-expressions", - url: "https://git.io/JYer8" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-async-do-expressions" } }, classProperties: { syntax: { name: "@babel/plugin-syntax-class-properties", - url: "https://git.io/vb4yQ" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties" }, transform: { name: "@babel/plugin-proposal-class-properties", - url: "https://git.io/vb4SL" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-class-properties" } }, classPrivateProperties: { syntax: { name: "@babel/plugin-syntax-class-properties", - url: "https://git.io/vb4yQ" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties" }, transform: { name: "@babel/plugin-proposal-class-properties", - url: "https://git.io/vb4SL" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-class-properties" } }, classPrivateMethods: { syntax: { name: "@babel/plugin-syntax-class-properties", - url: "https://git.io/vb4yQ" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties" }, transform: { name: "@babel/plugin-proposal-private-methods", - url: "https://git.io/JvpRG" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-private-methods" } }, classStaticBlock: { syntax: { name: "@babel/plugin-syntax-class-static-block", - url: "https://git.io/JTLB6" + url: "https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-syntax-class-static-block" }, transform: { name: "@babel/plugin-proposal-class-static-block", - url: "https://git.io/JTLBP" + url: "https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-class-static-block" } }, decimal: { syntax: { name: "@babel/plugin-syntax-decimal", - url: "https://git.io/JfKOH" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-decimal" } }, decorators: { syntax: { name: "@babel/plugin-syntax-decorators", - url: "https://git.io/vb4y9" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-decorators" }, transform: { name: "@babel/plugin-proposal-decorators", - url: "https://git.io/vb4ST" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-decorators" } }, doExpressions: { syntax: { name: "@babel/plugin-syntax-do-expressions", - url: "https://git.io/vb4yh" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-do-expressions" }, transform: { name: "@babel/plugin-proposal-do-expressions", - url: "https://git.io/vb4S3" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-do-expressions" } }, dynamicImport: { syntax: { name: "@babel/plugin-syntax-dynamic-import", - url: "https://git.io/vb4Sv" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-dynamic-import" } }, exportDefaultFrom: { syntax: { name: "@babel/plugin-syntax-export-default-from", - url: "https://git.io/vb4SO" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-export-default-from" }, transform: { name: "@babel/plugin-proposal-export-default-from", - url: "https://git.io/vb4yH" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-export-default-from" } }, exportNamespaceFrom: { syntax: { name: "@babel/plugin-syntax-export-namespace-from", - url: "https://git.io/vb4Sf" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-export-namespace-from" }, transform: { name: "@babel/plugin-proposal-export-namespace-from", - url: "https://git.io/vb4SG" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-export-namespace-from" } }, flow: { syntax: { name: "@babel/plugin-syntax-flow", - url: "https://git.io/vb4yb" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-flow" }, transform: { name: "@babel/preset-flow", - url: "https://git.io/JfeDn" + url: "https://github.com/babel/babel/tree/main/packages/babel-preset-flow" } }, functionBind: { syntax: { name: "@babel/plugin-syntax-function-bind", - url: "https://git.io/vb4y7" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-function-bind" }, transform: { name: "@babel/plugin-proposal-function-bind", - url: "https://git.io/vb4St" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-function-bind" } }, functionSent: { syntax: { name: "@babel/plugin-syntax-function-sent", - url: "https://git.io/vb4yN" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-function-sent" }, transform: { name: "@babel/plugin-proposal-function-sent", - url: "https://git.io/vb4SZ" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-function-sent" } }, importMeta: { syntax: { name: "@babel/plugin-syntax-import-meta", - url: "https://git.io/vbKK6" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-meta" } }, jsx: { syntax: { name: "@babel/plugin-syntax-jsx", - url: "https://git.io/vb4yA" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-jsx" }, transform: { name: "@babel/preset-react", - url: "https://git.io/JfeDR" + url: "https://github.com/babel/babel/tree/main/packages/babel-preset-react" } }, importAssertions: { syntax: { name: "@babel/plugin-syntax-import-assertions", - url: "https://git.io/JUbkv" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-assertions" } }, moduleStringNames: { syntax: { name: "@babel/plugin-syntax-module-string-names", - url: "https://git.io/JTL8G" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-module-string-names" } }, numericSeparator: { syntax: { name: "@babel/plugin-syntax-numeric-separator", - url: "https://git.io/vb4Sq" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-numeric-separator" }, transform: { name: "@babel/plugin-proposal-numeric-separator", - url: "https://git.io/vb4yS" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-numeric-separator" } }, optionalChaining: { syntax: { name: "@babel/plugin-syntax-optional-chaining", - url: "https://git.io/vb4Sc" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-optional-chaining" }, transform: { name: "@babel/plugin-proposal-optional-chaining", - url: "https://git.io/vb4Sk" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-optional-chaining" } }, pipelineOperator: { syntax: { name: "@babel/plugin-syntax-pipeline-operator", - url: "https://git.io/vb4yj" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-pipeline-operator" }, transform: { name: "@babel/plugin-proposal-pipeline-operator", - url: "https://git.io/vb4SU" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-pipeline-operator" } }, privateIn: { syntax: { name: "@babel/plugin-syntax-private-property-in-object", - url: "https://git.io/JfK3q" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-private-property-in-object" }, transform: { name: "@babel/plugin-proposal-private-property-in-object", - url: "https://git.io/JfK3O" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-private-property-in-object" } }, recordAndTuple: { syntax: { name: "@babel/plugin-syntax-record-and-tuple", - url: "https://git.io/JvKp3" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-record-and-tuple" } }, regexpUnicodeSets: { syntax: { name: "@babel/plugin-syntax-unicode-sets-regex", - url: "https://git.io/J9GTd" + url: "https://github.com/babel/babel/blob/main/packages/babel-plugin-syntax-unicode-sets-regex/README.md" }, transform: { name: "@babel/plugin-proposal-unicode-sets-regex", - url: "https://git.io/J9GTQ" + url: "https://github.com/babel/babel/blob/main/packages/babel-plugin-proposalunicode-sets-regex/README.md" } }, throwExpressions: { syntax: { name: "@babel/plugin-syntax-throw-expressions", - url: "https://git.io/vb4SJ" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-throw-expressions" }, transform: { name: "@babel/plugin-proposal-throw-expressions", - url: "https://git.io/vb4yF" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-throw-expressions" } }, typescript: { syntax: { name: "@babel/plugin-syntax-typescript", - url: "https://git.io/vb4SC" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-typescript" }, transform: { name: "@babel/preset-typescript", - url: "https://git.io/JfeDz" + url: "https://github.com/babel/babel/tree/main/packages/babel-preset-typescript" } }, asyncGenerators: { syntax: { name: "@babel/plugin-syntax-async-generators", - url: "https://git.io/vb4SY" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-async-generators" }, transform: { name: "@babel/plugin-proposal-async-generator-functions", - url: "https://git.io/vb4yp" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-async-generator-functions" } }, logicalAssignment: { syntax: { name: "@babel/plugin-syntax-logical-assignment-operators", - url: "https://git.io/vAlBp" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-logical-assignment-operators" }, transform: { name: "@babel/plugin-proposal-logical-assignment-operators", - url: "https://git.io/vAlRe" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-logical-assignment-operators" } }, nullishCoalescingOperator: { syntax: { name: "@babel/plugin-syntax-nullish-coalescing-operator", - url: "https://git.io/vb4yx" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-nullish-coalescing-operator" }, transform: { name: "@babel/plugin-proposal-nullish-coalescing-operator", - url: "https://git.io/vb4Se" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-nullish-coalescing-opearator" } }, objectRestSpread: { syntax: { name: "@babel/plugin-syntax-object-rest-spread", - url: "https://git.io/vb4y5" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-object-rest-spread" }, transform: { name: "@babel/plugin-proposal-object-rest-spread", - url: "https://git.io/vb4Ss" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-object-rest-spread" } }, optionalCatchBinding: { syntax: { name: "@babel/plugin-syntax-optional-catch-binding", - url: "https://git.io/vb4Sn" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-optional-catch-binding" }, transform: { name: "@babel/plugin-proposal-optional-catch-binding", - url: "https://git.io/vb4SI" + url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-optional-catch-binding" } } }; @@ -320,4 +320,6 @@ If you want to leave it as-is, add ${syntaxPluginInfo} to the 'plugins' section } return helpMessage; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/tools/build-external-helpers.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/tools/build-external-helpers.js index 94d85e7e65e9f4..cdd7214d71543d 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/tools/build-external-helpers.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/tools/build-external-helpers.js @@ -161,4 +161,6 @@ function _default(allowlist, outputType = "global") { } return (0, _generator().default)(tree).code; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-ast.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-ast.js index 61fb2224a667ec..bc88af4a064e01 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-ast.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-ast.js @@ -26,14 +26,22 @@ const transformFromAstRunner = _gensync()(function* (ast, code, opts) { return yield* (0, _transformation.run)(config, code, ast); }); -const transformFromAst = function transformFromAst(ast, code, opts, callback) { - if (typeof opts === "function") { - callback = opts; +const transformFromAst = function transformFromAst(ast, code, optsOrCallback, maybeCallback) { + let opts; + let callback; + + if (typeof optsOrCallback === "function") { + callback = optsOrCallback; opts = undefined; + } else { + opts = optsOrCallback; + callback = maybeCallback; } if (callback === undefined) { - return transformFromAstRunner.sync(ast, code, opts); + { + return transformFromAstRunner.sync(ast, code, opts); + } } transformFromAstRunner.errback(ast, code, opts, callback); @@ -43,4 +51,5 @@ exports.transformFromAst = transformFromAst; const transformFromAstSync = transformFromAstRunner.sync; exports.transformFromAstSync = transformFromAstSync; const transformFromAstAsync = transformFromAstRunner.async; -exports.transformFromAstAsync = transformFromAstAsync; \ No newline at end of file +exports.transformFromAstAsync = transformFromAstAsync; +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file-browser.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file-browser.js index 3371a1e7921e8d..5912b5c27655aa 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file-browser.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file-browser.js @@ -23,4 +23,6 @@ function transformFileSync() { function transformFileAsync() { return Promise.reject(new Error("Transforming files is not supported in browsers")); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file.js index 18075fffa7c99f..ab9920285379f3 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file.js @@ -38,4 +38,5 @@ exports.transformFile = transformFile; const transformFileSync = transformFileRunner.sync; exports.transformFileSync = transformFileSync; const transformFileAsync = transformFileRunner.async; -exports.transformFileAsync = transformFileAsync; \ No newline at end of file +exports.transformFileAsync = transformFileAsync; +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform.js index 538c3edfe622f0..7cc33b33a4b9d3 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform.js @@ -25,13 +25,24 @@ const transformRunner = _gensync()(function* transform(code, opts) { return yield* (0, _transformation.run)(config, code); }); -const transform = function transform(code, opts, callback) { - if (typeof opts === "function") { - callback = opts; +const transform = function transform(code, optsOrCallback, maybeCallback) { + let opts; + let callback; + + if (typeof optsOrCallback === "function") { + callback = optsOrCallback; opts = undefined; + } else { + opts = optsOrCallback; + callback = maybeCallback; + } + + if (callback === undefined) { + { + return transformRunner.sync(code, opts); + } } - if (callback === undefined) return transformRunner.sync(code, opts); transformRunner.errback(code, opts, callback); }; @@ -39,4 +50,5 @@ exports.transform = transform; const transformSync = transformRunner.sync; exports.transformSync = transformSync; const transformAsync = transformRunner.async; -exports.transformAsync = transformAsync; \ No newline at end of file +exports.transformAsync = transformAsync; +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js index a3b0b411aeb51c..cc20fe41a72053 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js @@ -91,4 +91,5 @@ const blockHoistPlugin = { } } -}; \ No newline at end of file +}; +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/file.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/file.js index 3728ec56c0ce49..22ee007c974483 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/file.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/file.js @@ -91,12 +91,12 @@ class File { this._map = new Map(); this.opts = void 0; this.declarations = {}; - this.path = null; - this.ast = {}; + this.path = void 0; + this.ast = void 0; this.scope = void 0; this.metadata = {}; this.code = ""; - this.inputMap = null; + this.inputMap = void 0; this.hub = { file: this, getCode: () => this.code, @@ -251,4 +251,5 @@ class File { } -exports.default = File; \ No newline at end of file +exports.default = File; +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/generate.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/generate.js index def05ca4d0d361..9e30d97a4d8f5a 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/generate.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/generate.js @@ -68,11 +68,15 @@ function generateCode(pluginPasses, file) { let { code: outputCode, - map: outputMap + decodedMap: outputMap = result.map } = result; - if (outputMap && inputMap) { - outputMap = (0, _mergeMap.default)(inputMap.toObject(), outputMap, generatorOpts.sourceFileName); + if (outputMap) { + if (inputMap) { + outputMap = (0, _mergeMap.default)(inputMap.toObject(), outputMap, generatorOpts.sourceFileName); + } else { + outputMap = result.map; + } } if (opts.sourceMaps === "inline" || opts.sourceMaps === "both") { @@ -87,4 +91,6 @@ function generateCode(pluginPasses, file) { outputCode, outputMap }; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/merge-map.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/merge-map.js index af1da890223441..9a031191b6f3d1 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/merge-map.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/merge-map.js @@ -40,4 +40,6 @@ function rootless(map) { return Object.assign({}, map, { sourceRoot: null }); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/index.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/index.js index 1f8422e2dd5ae9..1b78101b6d7848 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/index.js @@ -124,4 +124,6 @@ function* transformFile(file, pluginPasses) { function isThenable(val) { return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function"; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-file.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-file.js index dc434ed8c7b85f..51d0ca6d710e82 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-file.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-file.js @@ -68,7 +68,7 @@ const { const debug = _debug()("babel:transform:file"); -const LARGE_INPUT_SOURCEMAP_THRESHOLD = 1000000; +const LARGE_INPUT_SOURCEMAP_THRESHOLD = 3000000; function* normalizeFile(pluginPasses, options, code, ast) { code = `${code || ""}`; @@ -164,4 +164,6 @@ function extractComments(regex, ast) { [node.trailingComments, lastComment] = extractCommentsFromList(regex, node.trailingComments, lastComment); }); return lastComment; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-opts.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-opts.js index 6e2cb000ca85a7..7773d63232eeb7 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-opts.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-opts.js @@ -59,4 +59,6 @@ function normalizeOptions(config) { } return options; -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/plugin-pass.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/plugin-pass.js index 920558a051a914..87cfc7fa85474b 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/plugin-pass.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/plugin-pass.js @@ -51,4 +51,5 @@ exports.default = PluginPass; PluginPass.prototype.getModuleName = function getModuleName() { return this.file.getModuleName(); }; -} \ No newline at end of file +} +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep-browser.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep-browser.js deleted file mode 100644 index a42de824d8995c..00000000000000 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep-browser.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _default; -const serialized = "$$ babel internal serialized type" + Math.random(); - -function serialize(key, value) { - if (typeof value !== "bigint") return value; - return { - [serialized]: "BigInt", - value: value.toString() - }; -} - -function revive(key, value) { - if (!value || typeof value !== "object") return value; - if (value[serialized] !== "BigInt") return value; - return BigInt(value.value); -} - -function _default(value) { - return JSON.parse(JSON.stringify(value, serialize), revive); -} \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep.js index 35fbd093ebaa1c..d32505dda09fe6 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep.js @@ -5,22 +5,37 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = _default; -function _v() { - const data = require("v8"); +function deepClone(value, cache) { + if (value !== null) { + if (cache.has(value)) return cache.get(value); + let cloned; - _v = function () { - return data; - }; + if (Array.isArray(value)) { + cloned = new Array(value.length); - return data; -} + for (let i = 0; i < value.length; i++) { + cloned[i] = typeof value[i] !== "object" ? value[i] : deepClone(value[i], cache); + } + } else { + cloned = {}; + const keys = Object.keys(value); -var _cloneDeepBrowser = require("./clone-deep-browser"); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + cloned[key] = typeof value[key] !== "object" ? value[key] : deepClone(value[key], cache); + } + } -function _default(value) { - if (_v().deserialize && _v().serialize) { - return _v().deserialize(_v().serialize(value)); + cache.set(value, cloned); + return cloned; } - return (0, _cloneDeepBrowser.default)(value); -} \ No newline at end of file + return value; +} + +function _default(value) { + if (typeof value !== "object") return value; + return deepClone(value, new Map()); +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/vendor/import-meta-resolve.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/vendor/import-meta-resolve.js index ce8d403f2073c6..f16f1bee1f75de 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/vendor/import-meta-resolve.js +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/vendor/import-meta-resolve.js @@ -64,13 +64,9 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } -function createCommonjsModule(fn) { - var module = { - exports: {} - }; - return fn(module, module.exports), module.exports; -} - +var re$3 = { + exports: {} +}; const SEMVER_SPEC_VERSION = '2.0.0'; const MAX_LENGTH$2 = 256; const MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || 9007199254740991; @@ -81,12 +77,14 @@ var constants = { MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1, MAX_SAFE_COMPONENT_LENGTH }; -const debug = typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error('SEMVER', ...args) : () => {}; -var debug_1 = debug; -var re_1 = createCommonjsModule(function (module, exports) { +const debug$1 = typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error('SEMVER', ...args) : () => {}; +var debug_1 = debug$1; + +(function (module, exports) { const { MAX_SAFE_COMPONENT_LENGTH } = constants; + const debug = debug_1; exports = module.exports = {}; const re = exports.re = []; const src = exports.src = []; @@ -95,7 +93,7 @@ var re_1 = createCommonjsModule(function (module, exports) { const createToken = (name, value, isGlobal) => { const index = R++; - debug_1(index, value); + debug(index, value); t[name] = index; src[index] = value; re[index] = new RegExp(value, isGlobal ? 'g' : undefined); @@ -144,17 +142,18 @@ var re_1 = createCommonjsModule(function (module, exports) { createToken('STAR', '(<|>)?=?\\s*\\*'); createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$'); createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$'); -}); +})(re$3, re$3.exports); + const opts = ['includePrerelease', 'loose', 'rtl']; -const parseOptions = options => !options ? {} : typeof options !== 'object' ? { +const parseOptions$2 = options => !options ? {} : typeof options !== 'object' ? { loose: true } : opts.filter(k => options[k]).reduce((options, k) => { options[k] = true; return options; }, {}); -var parseOptions_1 = parseOptions; +var parseOptions_1 = parseOptions$2; const numeric = /^[0-9]+$/; const compareIdentifiers$1 = (a, b) => { @@ -175,23 +174,25 @@ var identifiers = { compareIdentifiers: compareIdentifiers$1, rcompareIdentifiers }; +const debug = debug_1; const { MAX_LENGTH: MAX_LENGTH$1, MAX_SAFE_INTEGER } = constants; const { - re: re$4, - t: t$4 -} = re_1; + re: re$2, + t: t$2 +} = re$3.exports; +const parseOptions$1 = parseOptions_1; const { compareIdentifiers } = identifiers; -class SemVer { +class SemVer$c { constructor(version, options) { - options = parseOptions_1(options); + options = parseOptions$1(options); - if (version instanceof SemVer) { + if (version instanceof SemVer$c) { if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) { return version; } else { @@ -205,11 +206,11 @@ class SemVer { throw new TypeError(`version is longer than ${MAX_LENGTH$1} characters`); } - debug_1('SemVer', version, options); + debug('SemVer', version, options); this.options = options; this.loose = !!options.loose; this.includePrerelease = !!options.includePrerelease; - const m = version.trim().match(options.loose ? re$4[t$4.LOOSE] : re$4[t$4.FULL]); + const m = version.trim().match(options.loose ? re$2[t$2.LOOSE] : re$2[t$2.FULL]); if (!m) { throw new TypeError(`Invalid Version: ${version}`); @@ -267,14 +268,14 @@ class SemVer { } compare(other) { - debug_1('SemVer.compare', this.version, this.options, other); + debug('SemVer.compare', this.version, this.options, other); - if (!(other instanceof SemVer)) { + if (!(other instanceof SemVer$c)) { if (typeof other === 'string' && other === this.version) { return 0; } - other = new SemVer(other, this.options); + other = new SemVer$c(other, this.options); } if (other.version === this.version) { @@ -285,16 +286,16 @@ class SemVer { } compareMain(other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); + if (!(other instanceof SemVer$c)) { + other = new SemVer$c(other, this.options); } return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch); } comparePre(other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); + if (!(other instanceof SemVer$c)) { + other = new SemVer$c(other, this.options); } if (this.prerelease.length && !other.prerelease.length) { @@ -310,7 +311,7 @@ class SemVer { do { const a = this.prerelease[i]; const b = other.prerelease[i]; - debug_1('prerelease compare', i, a, b); + debug('prerelease compare', i, a, b); if (a === undefined && b === undefined) { return 0; @@ -327,8 +328,8 @@ class SemVer { } compareBuild(other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); + if (!(other instanceof SemVer$c)) { + other = new SemVer$c(other, this.options); } let i = 0; @@ -336,7 +337,7 @@ class SemVer { do { const a = this.build[i]; const b = other.build[i]; - debug_1('prerelease compare', i, a, b); + debug('prerelease compare', i, a, b); if (a === undefined && b === undefined) { return 0; @@ -451,19 +452,21 @@ class SemVer { } -var semver$1 = SemVer; +var semver$2 = SemVer$c; const { MAX_LENGTH } = constants; const { - re: re$3, - t: t$3 -} = re_1; + re: re$1, + t: t$1 +} = re$3.exports; +const SemVer$b = semver$2; +const parseOptions = parseOptions_1; -const parse = (version, options) => { - options = parseOptions_1(options); +const parse$5 = (version, options) => { + options = parseOptions(options); - if (version instanceof semver$1) { + if (version instanceof SemVer$b) { return version; } @@ -475,34 +478,37 @@ const parse = (version, options) => { return null; } - const r = options.loose ? re$3[t$3.LOOSE] : re$3[t$3.FULL]; + const r = options.loose ? re$1[t$1.LOOSE] : re$1[t$1.FULL]; if (!r.test(version)) { return null; } try { - return new semver$1(version, options); + return new SemVer$b(version, options); } catch (er) { return null; } }; -var parse_1 = parse; +var parse_1 = parse$5; +const parse$4 = parse_1; const valid$1 = (version, options) => { - const v = parse_1(version, options); + const v = parse$4(version, options); return v ? v.version : null; }; var valid_1 = valid$1; +const parse$3 = parse_1; const clean = (version, options) => { - const s = parse_1(version.trim().replace(/^[=v]+/, ''), options); + const s = parse$3(version.trim().replace(/^[=v]+/, ''), options); return s ? s.version : null; }; var clean_1 = clean; +const SemVer$a = semver$2; const inc = (version, release, options, identifier) => { if (typeof options === 'string') { @@ -511,28 +517,32 @@ const inc = (version, release, options, identifier) => { } try { - return new semver$1(version, options).inc(release, identifier).version; + return new SemVer$a(version, options).inc(release, identifier).version; } catch (er) { return null; } }; var inc_1 = inc; +const SemVer$9 = semver$2; -const compare = (a, b, loose) => new semver$1(a, loose).compare(new semver$1(b, loose)); +const compare$a = (a, b, loose) => new SemVer$9(a, loose).compare(new SemVer$9(b, loose)); -var compare_1 = compare; +var compare_1 = compare$a; +const compare$9 = compare_1; -const eq = (a, b, loose) => compare_1(a, b, loose) === 0; +const eq$2 = (a, b, loose) => compare$9(a, b, loose) === 0; -var eq_1 = eq; +var eq_1 = eq$2; +const parse$2 = parse_1; +const eq$1 = eq_1; const diff = (version1, version2) => { - if (eq_1(version1, version2)) { + if (eq$1(version1, version2)) { return null; } else { - const v1 = parse_1(version1); - const v2 = parse_1(version2); + const v1 = parse$2(version1); + const v2 = parse$2(version2); const hasPre = v1.prerelease.length || v2.prerelease.length; const prefix = hasPre ? 'pre' : ''; const defaultResult = hasPre ? 'prerelease' : ''; @@ -550,69 +560,89 @@ const diff = (version1, version2) => { }; var diff_1 = diff; +const SemVer$8 = semver$2; -const major = (a, loose) => new semver$1(a, loose).major; +const major = (a, loose) => new SemVer$8(a, loose).major; var major_1 = major; +const SemVer$7 = semver$2; -const minor = (a, loose) => new semver$1(a, loose).minor; +const minor = (a, loose) => new SemVer$7(a, loose).minor; var minor_1 = minor; +const SemVer$6 = semver$2; -const patch = (a, loose) => new semver$1(a, loose).patch; +const patch = (a, loose) => new SemVer$6(a, loose).patch; var patch_1 = patch; +const parse$1 = parse_1; const prerelease = (version, options) => { - const parsed = parse_1(version, options); + const parsed = parse$1(version, options); return parsed && parsed.prerelease.length ? parsed.prerelease : null; }; var prerelease_1 = prerelease; +const compare$8 = compare_1; -const rcompare = (a, b, loose) => compare_1(b, a, loose); +const rcompare = (a, b, loose) => compare$8(b, a, loose); var rcompare_1 = rcompare; +const compare$7 = compare_1; -const compareLoose = (a, b) => compare_1(a, b, true); +const compareLoose = (a, b) => compare$7(a, b, true); var compareLoose_1 = compareLoose; +const SemVer$5 = semver$2; -const compareBuild = (a, b, loose) => { - const versionA = new semver$1(a, loose); - const versionB = new semver$1(b, loose); +const compareBuild$2 = (a, b, loose) => { + const versionA = new SemVer$5(a, loose); + const versionB = new SemVer$5(b, loose); return versionA.compare(versionB) || versionA.compareBuild(versionB); }; -var compareBuild_1 = compareBuild; +var compareBuild_1 = compareBuild$2; +const compareBuild$1 = compareBuild_1; -const sort = (list, loose) => list.sort((a, b) => compareBuild_1(a, b, loose)); +const sort = (list, loose) => list.sort((a, b) => compareBuild$1(a, b, loose)); var sort_1 = sort; +const compareBuild = compareBuild_1; -const rsort = (list, loose) => list.sort((a, b) => compareBuild_1(b, a, loose)); +const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)); var rsort_1 = rsort; +const compare$6 = compare_1; -const gt = (a, b, loose) => compare_1(a, b, loose) > 0; +const gt$3 = (a, b, loose) => compare$6(a, b, loose) > 0; -var gt_1 = gt; +var gt_1 = gt$3; +const compare$5 = compare_1; -const lt = (a, b, loose) => compare_1(a, b, loose) < 0; +const lt$2 = (a, b, loose) => compare$5(a, b, loose) < 0; -var lt_1 = lt; +var lt_1 = lt$2; +const compare$4 = compare_1; -const neq = (a, b, loose) => compare_1(a, b, loose) !== 0; +const neq$1 = (a, b, loose) => compare$4(a, b, loose) !== 0; -var neq_1 = neq; +var neq_1 = neq$1; +const compare$3 = compare_1; -const gte = (a, b, loose) => compare_1(a, b, loose) >= 0; +const gte$2 = (a, b, loose) => compare$3(a, b, loose) >= 0; -var gte_1 = gte; +var gte_1 = gte$2; +const compare$2 = compare_1; -const lte = (a, b, loose) => compare_1(a, b, loose) <= 0; +const lte$2 = (a, b, loose) => compare$2(a, b, loose) <= 0; -var lte_1 = lte; +var lte_1 = lte$2; +const eq = eq_1; +const neq = neq_1; +const gt$2 = gt_1; +const gte$1 = gte_1; +const lt$1 = lt_1; +const lte$1 = lte_1; const cmp = (a, op, b, loose) => { switch (op) { @@ -629,22 +659,22 @@ const cmp = (a, op, b, loose) => { case '': case '=': case '==': - return eq_1(a, b, loose); + return eq(a, b, loose); case '!=': - return neq_1(a, b, loose); + return neq(a, b, loose); case '>': - return gt_1(a, b, loose); + return gt$2(a, b, loose); case '>=': - return gte_1(a, b, loose); + return gte$1(a, b, loose); case '<': - return lt_1(a, b, loose); + return lt$1(a, b, loose); case '<=': - return lte_1(a, b, loose); + return lte$1(a, b, loose); default: throw new TypeError(`Invalid operator: ${op}`); @@ -652,13 +682,15 @@ const cmp = (a, op, b, loose) => { }; var cmp_1 = cmp; +const SemVer$4 = semver$2; +const parse = parse_1; const { - re: re$2, - t: t$2 -} = re_1; + re, + t +} = re$3.exports; const coerce = (version, options) => { - if (version instanceof semver$1) { + if (version instanceof SemVer$4) { return version; } @@ -674,1345 +706,1405 @@ const coerce = (version, options) => { let match = null; if (!options.rtl) { - match = version.match(re$2[t$2.COERCE]); + match = version.match(re[t.COERCE]); } else { let next; - while ((next = re$2[t$2.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) { + while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) { if (!match || next.index + next[0].length !== match.index + match[0].length) { match = next; } - re$2[t$2.COERCERTL].lastIndex = next.index + next[1].length + next[2].length; + re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length; } - re$2[t$2.COERCERTL].lastIndex = -1; + re[t.COERCERTL].lastIndex = -1; } if (match === null) return null; - return parse_1(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options); + return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options); }; var coerce_1 = coerce; +var iterator; +var hasRequiredIterator; -var iterator = function (Yallist) { - Yallist.prototype[Symbol.iterator] = function* () { - for (let walker = this.head; walker; walker = walker.next) { - yield walker.value; - } +function requireIterator() { + if (hasRequiredIterator) return iterator; + hasRequiredIterator = 1; + + iterator = function (Yallist) { + Yallist.prototype[Symbol.iterator] = function* () { + for (let walker = this.head; walker; walker = walker.next) { + yield walker.value; + } + }; }; -}; -var yallist = Yallist; -Yallist.Node = Node; -Yallist.create = Yallist; + return iterator; +} -function Yallist(list) { - var self = this; +var yallist; +var hasRequiredYallist; - if (!(self instanceof Yallist)) { - self = new Yallist(); - } +function requireYallist() { + if (hasRequiredYallist) return yallist; + hasRequiredYallist = 1; + yallist = Yallist; + Yallist.Node = Node; + Yallist.create = Yallist; - self.tail = null; - self.head = null; - self.length = 0; + function Yallist(list) { + var self = this; - if (list && typeof list.forEach === 'function') { - list.forEach(function (item) { - self.push(item); - }); - } else if (arguments.length > 0) { - for (var i = 0, l = arguments.length; i < l; i++) { - self.push(arguments[i]); + if (!(self instanceof Yallist)) { + self = new Yallist(); } - } - return self; -} + self.tail = null; + self.head = null; + self.length = 0; -Yallist.prototype.removeNode = function (node) { - if (node.list !== this) { - throw new Error('removing node which does not belong to this list'); + if (list && typeof list.forEach === 'function') { + list.forEach(function (item) { + self.push(item); + }); + } else if (arguments.length > 0) { + for (var i = 0, l = arguments.length; i < l; i++) { + self.push(arguments[i]); + } + } + + return self; } - var next = node.next; - var prev = node.prev; + Yallist.prototype.removeNode = function (node) { + if (node.list !== this) { + throw new Error('removing node which does not belong to this list'); + } - if (next) { - next.prev = prev; - } + var next = node.next; + var prev = node.prev; - if (prev) { - prev.next = next; - } + if (next) { + next.prev = prev; + } - if (node === this.head) { - this.head = next; - } + if (prev) { + prev.next = next; + } - if (node === this.tail) { - this.tail = prev; - } + if (node === this.head) { + this.head = next; + } - node.list.length--; - node.next = null; - node.prev = null; - node.list = null; - return next; -}; + if (node === this.tail) { + this.tail = prev; + } -Yallist.prototype.unshiftNode = function (node) { - if (node === this.head) { - return; - } + node.list.length--; + node.next = null; + node.prev = null; + node.list = null; + return next; + }; - if (node.list) { - node.list.removeNode(node); - } + Yallist.prototype.unshiftNode = function (node) { + if (node === this.head) { + return; + } - var head = this.head; - node.list = this; - node.next = head; + if (node.list) { + node.list.removeNode(node); + } - if (head) { - head.prev = node; - } + var head = this.head; + node.list = this; + node.next = head; - this.head = node; + if (head) { + head.prev = node; + } - if (!this.tail) { - this.tail = node; - } + this.head = node; - this.length++; -}; + if (!this.tail) { + this.tail = node; + } -Yallist.prototype.pushNode = function (node) { - if (node === this.tail) { - return; - } + this.length++; + }; - if (node.list) { - node.list.removeNode(node); - } + Yallist.prototype.pushNode = function (node) { + if (node === this.tail) { + return; + } - var tail = this.tail; - node.list = this; - node.prev = tail; + if (node.list) { + node.list.removeNode(node); + } - if (tail) { - tail.next = node; - } + var tail = this.tail; + node.list = this; + node.prev = tail; - this.tail = node; + if (tail) { + tail.next = node; + } - if (!this.head) { - this.head = node; - } + this.tail = node; - this.length++; -}; + if (!this.head) { + this.head = node; + } -Yallist.prototype.push = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - push(this, arguments[i]); - } + this.length++; + }; - return this.length; -}; + Yallist.prototype.push = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + push(this, arguments[i]); + } -Yallist.prototype.unshift = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - unshift(this, arguments[i]); - } + return this.length; + }; - return this.length; -}; + Yallist.prototype.unshift = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + unshift(this, arguments[i]); + } -Yallist.prototype.pop = function () { - if (!this.tail) { - return undefined; - } + return this.length; + }; - var res = this.tail.value; - this.tail = this.tail.prev; + Yallist.prototype.pop = function () { + if (!this.tail) { + return undefined; + } - if (this.tail) { - this.tail.next = null; - } else { - this.head = null; - } + var res = this.tail.value; + this.tail = this.tail.prev; - this.length--; - return res; -}; + if (this.tail) { + this.tail.next = null; + } else { + this.head = null; + } -Yallist.prototype.shift = function () { - if (!this.head) { - return undefined; - } + this.length--; + return res; + }; - var res = this.head.value; - this.head = this.head.next; + Yallist.prototype.shift = function () { + if (!this.head) { + return undefined; + } - if (this.head) { - this.head.prev = null; - } else { - this.tail = null; - } + var res = this.head.value; + this.head = this.head.next; - this.length--; - return res; -}; + if (this.head) { + this.head.prev = null; + } else { + this.tail = null; + } -Yallist.prototype.forEach = function (fn, thisp) { - thisp = thisp || this; + this.length--; + return res; + }; - for (var walker = this.head, i = 0; walker !== null; i++) { - fn.call(thisp, walker.value, i, this); - walker = walker.next; - } -}; + Yallist.prototype.forEach = function (fn, thisp) { + thisp = thisp || this; -Yallist.prototype.forEachReverse = function (fn, thisp) { - thisp = thisp || this; + for (var walker = this.head, i = 0; walker !== null; i++) { + fn.call(thisp, walker.value, i, this); + walker = walker.next; + } + }; - for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { - fn.call(thisp, walker.value, i, this); - walker = walker.prev; - } -}; + Yallist.prototype.forEachReverse = function (fn, thisp) { + thisp = thisp || this; -Yallist.prototype.get = function (n) { - for (var i = 0, walker = this.head; walker !== null && i < n; i++) { - walker = walker.next; - } + for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { + fn.call(thisp, walker.value, i, this); + walker = walker.prev; + } + }; - if (i === n && walker !== null) { - return walker.value; - } -}; + Yallist.prototype.get = function (n) { + for (var i = 0, walker = this.head; walker !== null && i < n; i++) { + walker = walker.next; + } -Yallist.prototype.getReverse = function (n) { - for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { - walker = walker.prev; - } + if (i === n && walker !== null) { + return walker.value; + } + }; - if (i === n && walker !== null) { - return walker.value; - } -}; + Yallist.prototype.getReverse = function (n) { + for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { + walker = walker.prev; + } -Yallist.prototype.map = function (fn, thisp) { - thisp = thisp || this; - var res = new Yallist(); + if (i === n && walker !== null) { + return walker.value; + } + }; - for (var walker = this.head; walker !== null;) { - res.push(fn.call(thisp, walker.value, this)); - walker = walker.next; - } + Yallist.prototype.map = function (fn, thisp) { + thisp = thisp || this; + var res = new Yallist(); - return res; -}; + for (var walker = this.head; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)); + walker = walker.next; + } -Yallist.prototype.mapReverse = function (fn, thisp) { - thisp = thisp || this; - var res = new Yallist(); + return res; + }; - for (var walker = this.tail; walker !== null;) { - res.push(fn.call(thisp, walker.value, this)); - walker = walker.prev; - } + Yallist.prototype.mapReverse = function (fn, thisp) { + thisp = thisp || this; + var res = new Yallist(); - return res; -}; + for (var walker = this.tail; walker !== null;) { + res.push(fn.call(thisp, walker.value, this)); + walker = walker.prev; + } -Yallist.prototype.reduce = function (fn, initial) { - var acc; - var walker = this.head; + return res; + }; - if (arguments.length > 1) { - acc = initial; - } else if (this.head) { - walker = this.head.next; - acc = this.head.value; - } else { - throw new TypeError('Reduce of empty list with no initial value'); - } + Yallist.prototype.reduce = function (fn, initial) { + var acc; + var walker = this.head; - for (var i = 0; walker !== null; i++) { - acc = fn(acc, walker.value, i); - walker = walker.next; - } + if (arguments.length > 1) { + acc = initial; + } else if (this.head) { + walker = this.head.next; + acc = this.head.value; + } else { + throw new TypeError('Reduce of empty list with no initial value'); + } - return acc; -}; + for (var i = 0; walker !== null; i++) { + acc = fn(acc, walker.value, i); + walker = walker.next; + } -Yallist.prototype.reduceReverse = function (fn, initial) { - var acc; - var walker = this.tail; + return acc; + }; - if (arguments.length > 1) { - acc = initial; - } else if (this.tail) { - walker = this.tail.prev; - acc = this.tail.value; - } else { - throw new TypeError('Reduce of empty list with no initial value'); - } + Yallist.prototype.reduceReverse = function (fn, initial) { + var acc; + var walker = this.tail; - for (var i = this.length - 1; walker !== null; i--) { - acc = fn(acc, walker.value, i); - walker = walker.prev; - } + if (arguments.length > 1) { + acc = initial; + } else if (this.tail) { + walker = this.tail.prev; + acc = this.tail.value; + } else { + throw new TypeError('Reduce of empty list with no initial value'); + } - return acc; -}; + for (var i = this.length - 1; walker !== null; i--) { + acc = fn(acc, walker.value, i); + walker = walker.prev; + } -Yallist.prototype.toArray = function () { - var arr = new Array(this.length); + return acc; + }; - for (var i = 0, walker = this.head; walker !== null; i++) { - arr[i] = walker.value; - walker = walker.next; - } + Yallist.prototype.toArray = function () { + var arr = new Array(this.length); - return arr; -}; + for (var i = 0, walker = this.head; walker !== null; i++) { + arr[i] = walker.value; + walker = walker.next; + } -Yallist.prototype.toArrayReverse = function () { - var arr = new Array(this.length); + return arr; + }; - for (var i = 0, walker = this.tail; walker !== null; i++) { - arr[i] = walker.value; - walker = walker.prev; - } + Yallist.prototype.toArrayReverse = function () { + var arr = new Array(this.length); - return arr; -}; + for (var i = 0, walker = this.tail; walker !== null; i++) { + arr[i] = walker.value; + walker = walker.prev; + } -Yallist.prototype.slice = function (from, to) { - to = to || this.length; + return arr; + }; - if (to < 0) { - to += this.length; - } + Yallist.prototype.slice = function (from, to) { + to = to || this.length; - from = from || 0; + if (to < 0) { + to += this.length; + } - if (from < 0) { - from += this.length; - } + from = from || 0; - var ret = new Yallist(); + if (from < 0) { + from += this.length; + } - if (to < from || to < 0) { - return ret; - } + var ret = new Yallist(); - if (from < 0) { - from = 0; - } + if (to < from || to < 0) { + return ret; + } - if (to > this.length) { - to = this.length; - } + if (from < 0) { + from = 0; + } - for (var i = 0, walker = this.head; walker !== null && i < from; i++) { - walker = walker.next; - } + if (to > this.length) { + to = this.length; + } - for (; walker !== null && i < to; i++, walker = walker.next) { - ret.push(walker.value); - } + for (var i = 0, walker = this.head; walker !== null && i < from; i++) { + walker = walker.next; + } - return ret; -}; + for (; walker !== null && i < to; i++, walker = walker.next) { + ret.push(walker.value); + } -Yallist.prototype.sliceReverse = function (from, to) { - to = to || this.length; + return ret; + }; - if (to < 0) { - to += this.length; - } + Yallist.prototype.sliceReverse = function (from, to) { + to = to || this.length; - from = from || 0; + if (to < 0) { + to += this.length; + } - if (from < 0) { - from += this.length; - } + from = from || 0; - var ret = new Yallist(); + if (from < 0) { + from += this.length; + } - if (to < from || to < 0) { - return ret; - } + var ret = new Yallist(); - if (from < 0) { - from = 0; - } + if (to < from || to < 0) { + return ret; + } - if (to > this.length) { - to = this.length; - } + if (from < 0) { + from = 0; + } - for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { - walker = walker.prev; - } + if (to > this.length) { + to = this.length; + } - for (; walker !== null && i > from; i--, walker = walker.prev) { - ret.push(walker.value); - } + for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { + walker = walker.prev; + } - return ret; -}; + for (; walker !== null && i > from; i--, walker = walker.prev) { + ret.push(walker.value); + } -Yallist.prototype.splice = function (start, deleteCount, ...nodes) { - if (start > this.length) { - start = this.length - 1; - } + return ret; + }; - if (start < 0) { - start = this.length + start; - } + Yallist.prototype.splice = function (start, deleteCount, ...nodes) { + if (start > this.length) { + start = this.length - 1; + } - for (var i = 0, walker = this.head; walker !== null && i < start; i++) { - walker = walker.next; - } + if (start < 0) { + start = this.length + start; + } - var ret = []; + for (var i = 0, walker = this.head; walker !== null && i < start; i++) { + walker = walker.next; + } - for (var i = 0; walker && i < deleteCount; i++) { - ret.push(walker.value); - walker = this.removeNode(walker); - } + var ret = []; - if (walker === null) { - walker = this.tail; - } + for (var i = 0; walker && i < deleteCount; i++) { + ret.push(walker.value); + walker = this.removeNode(walker); + } - if (walker !== this.head && walker !== this.tail) { - walker = walker.prev; - } + if (walker === null) { + walker = this.tail; + } - for (var i = 0; i < nodes.length; i++) { - walker = insert(this, walker, nodes[i]); - } + if (walker !== this.head && walker !== this.tail) { + walker = walker.prev; + } - return ret; -}; + for (var i = 0; i < nodes.length; i++) { + walker = insert(this, walker, nodes[i]); + } -Yallist.prototype.reverse = function () { - var head = this.head; - var tail = this.tail; + return ret; + }; - for (var walker = head; walker !== null; walker = walker.prev) { - var p = walker.prev; - walker.prev = walker.next; - walker.next = p; - } + Yallist.prototype.reverse = function () { + var head = this.head; + var tail = this.tail; - this.head = tail; - this.tail = head; - return this; -}; + for (var walker = head; walker !== null; walker = walker.prev) { + var p = walker.prev; + walker.prev = walker.next; + walker.next = p; + } + + this.head = tail; + this.tail = head; + return this; + }; -function insert(self, node, value) { - var inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self); + function insert(self, node, value) { + var inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self); - if (inserted.next === null) { - self.tail = inserted; - } + if (inserted.next === null) { + self.tail = inserted; + } - if (inserted.prev === null) { - self.head = inserted; + if (inserted.prev === null) { + self.head = inserted; + } + + self.length++; + return inserted; } - self.length++; - return inserted; -} + function push(self, item) { + self.tail = new Node(item, self.tail, null, self); -function push(self, item) { - self.tail = new Node(item, self.tail, null, self); + if (!self.head) { + self.head = self.tail; + } - if (!self.head) { - self.head = self.tail; + self.length++; } - self.length++; -} + function unshift(self, item) { + self.head = new Node(item, null, self.head, self); -function unshift(self, item) { - self.head = new Node(item, null, self.head, self); + if (!self.tail) { + self.tail = self.head; + } - if (!self.tail) { - self.tail = self.head; + self.length++; } - self.length++; -} + function Node(value, prev, next, list) { + if (!(this instanceof Node)) { + return new Node(value, prev, next, list); + } -function Node(value, prev, next, list) { - if (!(this instanceof Node)) { - return new Node(value, prev, next, list); - } + this.list = list; + this.value = value; - this.list = list; - this.value = value; + if (prev) { + prev.next = this; + this.prev = prev; + } else { + this.prev = null; + } - if (prev) { - prev.next = this; - this.prev = prev; - } else { - this.prev = null; + if (next) { + next.prev = this; + this.next = next; + } else { + this.next = null; + } } - if (next) { - next.prev = this; - this.next = next; - } else { - this.next = null; - } + try { + requireIterator()(Yallist); + } catch (er) {} + + return yallist; } -try { - iterator(Yallist); -} catch (er) {} - -const MAX = Symbol('max'); -const LENGTH = Symbol('length'); -const LENGTH_CALCULATOR = Symbol('lengthCalculator'); -const ALLOW_STALE = Symbol('allowStale'); -const MAX_AGE = Symbol('maxAge'); -const DISPOSE = Symbol('dispose'); -const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet'); -const LRU_LIST = Symbol('lruList'); -const CACHE = Symbol('cache'); -const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet'); - -const naiveLength = () => 1; - -class LRUCache { - constructor(options) { - if (typeof options === 'number') options = { - max: options - }; - if (!options) options = {}; - if (options.max && (typeof options.max !== 'number' || options.max < 0)) throw new TypeError('max must be a non-negative number'); - this[MAX] = options.max || Infinity; - const lc = options.length || naiveLength; - this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc; - this[ALLOW_STALE] = options.stale || false; - if (options.maxAge && typeof options.maxAge !== 'number') throw new TypeError('maxAge must be a number'); - this[MAX_AGE] = options.maxAge || 0; - this[DISPOSE] = options.dispose; - this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false; - this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false; - this.reset(); - } +var lruCache; +var hasRequiredLruCache; + +function requireLruCache() { + if (hasRequiredLruCache) return lruCache; + hasRequiredLruCache = 1; + const Yallist = requireYallist(); + const MAX = Symbol('max'); + const LENGTH = Symbol('length'); + const LENGTH_CALCULATOR = Symbol('lengthCalculator'); + const ALLOW_STALE = Symbol('allowStale'); + const MAX_AGE = Symbol('maxAge'); + const DISPOSE = Symbol('dispose'); + const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet'); + const LRU_LIST = Symbol('lruList'); + const CACHE = Symbol('cache'); + const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet'); + + const naiveLength = () => 1; + + class LRUCache { + constructor(options) { + if (typeof options === 'number') options = { + max: options + }; + if (!options) options = {}; + if (options.max && (typeof options.max !== 'number' || options.max < 0)) throw new TypeError('max must be a non-negative number'); + this[MAX] = options.max || Infinity; + const lc = options.length || naiveLength; + this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc; + this[ALLOW_STALE] = options.stale || false; + if (options.maxAge && typeof options.maxAge !== 'number') throw new TypeError('maxAge must be a number'); + this[MAX_AGE] = options.maxAge || 0; + this[DISPOSE] = options.dispose; + this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false; + this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false; + this.reset(); + } + + set max(mL) { + if (typeof mL !== 'number' || mL < 0) throw new TypeError('max must be a non-negative number'); + this[MAX] = mL || Infinity; + trim(this); + } - set max(mL) { - if (typeof mL !== 'number' || mL < 0) throw new TypeError('max must be a non-negative number'); - this[MAX] = mL || Infinity; - trim(this); - } + get max() { + return this[MAX]; + } - get max() { - return this[MAX]; - } + set allowStale(allowStale) { + this[ALLOW_STALE] = !!allowStale; + } - set allowStale(allowStale) { - this[ALLOW_STALE] = !!allowStale; - } + get allowStale() { + return this[ALLOW_STALE]; + } - get allowStale() { - return this[ALLOW_STALE]; - } + set maxAge(mA) { + if (typeof mA !== 'number') throw new TypeError('maxAge must be a non-negative number'); + this[MAX_AGE] = mA; + trim(this); + } - set maxAge(mA) { - if (typeof mA !== 'number') throw new TypeError('maxAge must be a non-negative number'); - this[MAX_AGE] = mA; - trim(this); - } + get maxAge() { + return this[MAX_AGE]; + } - get maxAge() { - return this[MAX_AGE]; - } + set lengthCalculator(lC) { + if (typeof lC !== 'function') lC = naiveLength; - set lengthCalculator(lC) { - if (typeof lC !== 'function') lC = naiveLength; + if (lC !== this[LENGTH_CALCULATOR]) { + this[LENGTH_CALCULATOR] = lC; + this[LENGTH] = 0; + this[LRU_LIST].forEach(hit => { + hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key); + this[LENGTH] += hit.length; + }); + } - if (lC !== this[LENGTH_CALCULATOR]) { - this[LENGTH_CALCULATOR] = lC; - this[LENGTH] = 0; - this[LRU_LIST].forEach(hit => { - hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key); - this[LENGTH] += hit.length; - }); + trim(this); } - trim(this); - } + get lengthCalculator() { + return this[LENGTH_CALCULATOR]; + } - get lengthCalculator() { - return this[LENGTH_CALCULATOR]; - } + get length() { + return this[LENGTH]; + } - get length() { - return this[LENGTH]; - } + get itemCount() { + return this[LRU_LIST].length; + } - get itemCount() { - return this[LRU_LIST].length; - } + rforEach(fn, thisp) { + thisp = thisp || this; - rforEach(fn, thisp) { - thisp = thisp || this; + for (let walker = this[LRU_LIST].tail; walker !== null;) { + const prev = walker.prev; + forEachStep(this, fn, walker, thisp); + walker = prev; + } + } + + forEach(fn, thisp) { + thisp = thisp || this; - for (let walker = this[LRU_LIST].tail; walker !== null;) { - const prev = walker.prev; - forEachStep(this, fn, walker, thisp); - walker = prev; + for (let walker = this[LRU_LIST].head; walker !== null;) { + const next = walker.next; + forEachStep(this, fn, walker, thisp); + walker = next; + } } - } - forEach(fn, thisp) { - thisp = thisp || this; + keys() { + return this[LRU_LIST].toArray().map(k => k.key); + } - for (let walker = this[LRU_LIST].head; walker !== null;) { - const next = walker.next; - forEachStep(this, fn, walker, thisp); - walker = next; + values() { + return this[LRU_LIST].toArray().map(k => k.value); } - } - keys() { - return this[LRU_LIST].toArray().map(k => k.key); - } + reset() { + if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) { + this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value)); + } - values() { - return this[LRU_LIST].toArray().map(k => k.value); - } + this[CACHE] = new Map(); + this[LRU_LIST] = new Yallist(); + this[LENGTH] = 0; + } - reset() { - if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) { - this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value)); + dump() { + return this[LRU_LIST].map(hit => isStale(this, hit) ? false : { + k: hit.key, + v: hit.value, + e: hit.now + (hit.maxAge || 0) + }).toArray().filter(h => h); } - this[CACHE] = new Map(); - this[LRU_LIST] = new yallist(); - this[LENGTH] = 0; - } + dumpLru() { + return this[LRU_LIST]; + } - dump() { - return this[LRU_LIST].map(hit => isStale(this, hit) ? false : { - k: hit.key, - v: hit.value, - e: hit.now + (hit.maxAge || 0) - }).toArray().filter(h => h); - } + set(key, value, maxAge) { + maxAge = maxAge || this[MAX_AGE]; + if (maxAge && typeof maxAge !== 'number') throw new TypeError('maxAge must be a number'); + const now = maxAge ? Date.now() : 0; + const len = this[LENGTH_CALCULATOR](value, key); - dumpLru() { - return this[LRU_LIST]; - } + if (this[CACHE].has(key)) { + if (len > this[MAX]) { + del(this, this[CACHE].get(key)); + return false; + } - set(key, value, maxAge) { - maxAge = maxAge || this[MAX_AGE]; - if (maxAge && typeof maxAge !== 'number') throw new TypeError('maxAge must be a number'); - const now = maxAge ? Date.now() : 0; - const len = this[LENGTH_CALCULATOR](value, key); + const node = this[CACHE].get(key); + const item = node.value; + + if (this[DISPOSE]) { + if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value); + } - if (this[CACHE].has(key)) { - if (len > this[MAX]) { - del(this, this[CACHE].get(key)); - return false; + item.now = now; + item.maxAge = maxAge; + item.value = value; + this[LENGTH] += len - item.length; + item.length = len; + this.get(key); + trim(this); + return true; } - const node = this[CACHE].get(key); - const item = node.value; + const hit = new Entry(key, value, len, now, maxAge); - if (this[DISPOSE]) { - if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value); + if (hit.length > this[MAX]) { + if (this[DISPOSE]) this[DISPOSE](key, value); + return false; } - item.now = now; - item.maxAge = maxAge; - item.value = value; - this[LENGTH] += len - item.length; - item.length = len; - this.get(key); + this[LENGTH] += hit.length; + this[LRU_LIST].unshift(hit); + this[CACHE].set(key, this[LRU_LIST].head); trim(this); return true; } - const hit = new Entry(key, value, len, now, maxAge); - - if (hit.length > this[MAX]) { - if (this[DISPOSE]) this[DISPOSE](key, value); - return false; + has(key) { + if (!this[CACHE].has(key)) return false; + const hit = this[CACHE].get(key).value; + return !isStale(this, hit); } - this[LENGTH] += hit.length; - this[LRU_LIST].unshift(hit); - this[CACHE].set(key, this[LRU_LIST].head); - trim(this); - return true; - } - - has(key) { - if (!this[CACHE].has(key)) return false; - const hit = this[CACHE].get(key).value; - return !isStale(this, hit); - } - - get(key) { - return get(this, key, true); - } + get(key) { + return get(this, key, true); + } - peek(key) { - return get(this, key, false); - } + peek(key) { + return get(this, key, false); + } - pop() { - const node = this[LRU_LIST].tail; - if (!node) return null; - del(this, node); - return node.value; - } + pop() { + const node = this[LRU_LIST].tail; + if (!node) return null; + del(this, node); + return node.value; + } - del(key) { - del(this, this[CACHE].get(key)); - } + del(key) { + del(this, this[CACHE].get(key)); + } - load(arr) { - this.reset(); - const now = Date.now(); + load(arr) { + this.reset(); + const now = Date.now(); - for (let l = arr.length - 1; l >= 0; l--) { - const hit = arr[l]; - const expiresAt = hit.e || 0; - if (expiresAt === 0) this.set(hit.k, hit.v);else { - const maxAge = expiresAt - now; + for (let l = arr.length - 1; l >= 0; l--) { + const hit = arr[l]; + const expiresAt = hit.e || 0; + if (expiresAt === 0) this.set(hit.k, hit.v);else { + const maxAge = expiresAt - now; - if (maxAge > 0) { - this.set(hit.k, hit.v, maxAge); + if (maxAge > 0) { + this.set(hit.k, hit.v, maxAge); + } } } } - } - prune() { - this[CACHE].forEach((value, key) => get(this, key, false)); - } + prune() { + this[CACHE].forEach((value, key) => get(this, key, false)); + } -} + } -const get = (self, key, doUse) => { - const node = self[CACHE].get(key); + const get = (self, key, doUse) => { + const node = self[CACHE].get(key); - if (node) { - const hit = node.value; + if (node) { + const hit = node.value; - if (isStale(self, hit)) { - del(self, node); - if (!self[ALLOW_STALE]) return undefined; - } else { - if (doUse) { - if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now(); - self[LRU_LIST].unshiftNode(node); + if (isStale(self, hit)) { + del(self, node); + if (!self[ALLOW_STALE]) return undefined; + } else { + if (doUse) { + if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now(); + self[LRU_LIST].unshiftNode(node); + } } + + return hit.value; } + }; - return hit.value; - } -}; + const isStale = (self, hit) => { + if (!hit || !hit.maxAge && !self[MAX_AGE]) return false; + const diff = Date.now() - hit.now; + return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE]; + }; -const isStale = (self, hit) => { - if (!hit || !hit.maxAge && !self[MAX_AGE]) return false; - const diff = Date.now() - hit.now; - return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE]; -}; + const trim = self => { + if (self[LENGTH] > self[MAX]) { + for (let walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) { + const prev = walker.prev; + del(self, walker); + walker = prev; + } + } + }; -const trim = self => { - if (self[LENGTH] > self[MAX]) { - for (let walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) { - const prev = walker.prev; - del(self, walker); - walker = prev; + const del = (self, node) => { + if (node) { + const hit = node.value; + if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value); + self[LENGTH] -= hit.length; + self[CACHE].delete(hit.key); + self[LRU_LIST].removeNode(node); } - } -}; + }; -const del = (self, node) => { - if (node) { - const hit = node.value; - if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value); - self[LENGTH] -= hit.length; - self[CACHE].delete(hit.key); - self[LRU_LIST].removeNode(node); - } -}; + class Entry { + constructor(key, value, length, now, maxAge) { + this.key = key; + this.value = value; + this.length = length; + this.now = now; + this.maxAge = maxAge || 0; + } -class Entry { - constructor(key, value, length, now, maxAge) { - this.key = key; - this.value = value; - this.length = length; - this.now = now; - this.maxAge = maxAge || 0; } -} + const forEachStep = (self, fn, node, thisp) => { + let hit = node.value; + + if (isStale(self, hit)) { + del(self, node); + if (!self[ALLOW_STALE]) hit = undefined; + } -const forEachStep = (self, fn, node, thisp) => { - let hit = node.value; + if (hit) fn.call(thisp, hit.value, hit.key, self); + }; - if (isStale(self, hit)) { - del(self, node); - if (!self[ALLOW_STALE]) hit = undefined; - } + lruCache = LRUCache; + return lruCache; +} - if (hit) fn.call(thisp, hit.value, hit.key, self); -}; +var range; +var hasRequiredRange; -var lruCache = LRUCache; +function requireRange() { + if (hasRequiredRange) return range; + hasRequiredRange = 1; -class Range { - constructor(range, options) { - options = parseOptions_1(options); + class Range { + constructor(range, options) { + options = parseOptions(options); - if (range instanceof Range) { - if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) { - return range; - } else { - return new Range(range.raw, options); + if (range instanceof Range) { + if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) { + return range; + } else { + return new Range(range.raw, options); + } } - } - if (range instanceof comparator) { - this.raw = range.value; - this.set = [[range]]; - this.format(); - return this; - } + if (range instanceof Comparator) { + this.raw = range.value; + this.set = [[range]]; + this.format(); + return this; + } - this.options = options; - this.loose = !!options.loose; - this.includePrerelease = !!options.includePrerelease; - this.raw = range; - this.set = range.split(/\s*\|\|\s*/).map(range => this.parseRange(range.trim())).filter(c => c.length); + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + this.raw = range; + this.set = range.split(/\s*\|\|\s*/).map(range => this.parseRange(range.trim())).filter(c => c.length); - if (!this.set.length) { - throw new TypeError(`Invalid SemVer Range: ${range}`); - } + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${range}`); + } - if (this.set.length > 1) { - const first = this.set[0]; - this.set = this.set.filter(c => !isNullSet(c[0])); - if (this.set.length === 0) this.set = [first];else if (this.set.length > 1) { - for (const c of this.set) { - if (c.length === 1 && isAny(c[0])) { - this.set = [c]; - break; + if (this.set.length > 1) { + const first = this.set[0]; + this.set = this.set.filter(c => !isNullSet(c[0])); + if (this.set.length === 0) this.set = [first];else if (this.set.length > 1) { + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c]; + break; + } } } } - } - this.format(); - } - - format() { - this.range = this.set.map(comps => { - return comps.join(' ').trim(); - }).join('||').trim(); - return this.range; - } + this.format(); + } - toString() { - return this.range; - } - - parseRange(range) { - range = range.trim(); - const memoOpts = Object.keys(this.options).join(','); - const memoKey = `parseRange:${memoOpts}:${range}`; - const cached = cache.get(memoKey); - if (cached) return cached; - const loose = this.options.loose; - const hr = loose ? re$1[t$1.HYPHENRANGELOOSE] : re$1[t$1.HYPHENRANGE]; - range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); - debug_1('hyphen replace', range); - range = range.replace(re$1[t$1.COMPARATORTRIM], comparatorTrimReplace); - debug_1('comparator trim', range, re$1[t$1.COMPARATORTRIM]); - range = range.replace(re$1[t$1.TILDETRIM], tildeTrimReplace); - range = range.replace(re$1[t$1.CARETTRIM], caretTrimReplace); - range = range.split(/\s+/).join(' '); - const compRe = loose ? re$1[t$1.COMPARATORLOOSE] : re$1[t$1.COMPARATOR]; - const rangeList = range.split(' ').map(comp => parseComparator(comp, this.options)).join(' ').split(/\s+/).map(comp => replaceGTE0(comp, this.options)).filter(this.options.loose ? comp => !!comp.match(compRe) : () => true).map(comp => new comparator(comp, this.options)); - rangeList.length; - const rangeMap = new Map(); - - for (const comp of rangeList) { - if (isNullSet(comp)) return [comp]; - rangeMap.set(comp.value, comp); - } - - if (rangeMap.size > 1 && rangeMap.has('')) rangeMap.delete(''); - const result = [...rangeMap.values()]; - cache.set(memoKey, result); - return result; - } + format() { + this.range = this.set.map(comps => { + return comps.join(' ').trim(); + }).join('||').trim(); + return this.range; + } + + toString() { + return this.range; + } + + parseRange(range) { + range = range.trim(); + const memoOpts = Object.keys(this.options).join(','); + const memoKey = `parseRange:${memoOpts}:${range}`; + const cached = cache.get(memoKey); + if (cached) return cached; + const loose = this.options.loose; + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); + debug('hyphen replace', range); + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); + debug('comparator trim', range, re[t.COMPARATORTRIM]); + range = range.replace(re[t.TILDETRIM], tildeTrimReplace); + range = range.replace(re[t.CARETTRIM], caretTrimReplace); + range = range.split(/\s+/).join(' '); + const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; + const rangeList = range.split(' ').map(comp => parseComparator(comp, this.options)).join(' ').split(/\s+/).map(comp => replaceGTE0(comp, this.options)).filter(this.options.loose ? comp => !!comp.match(compRe) : () => true).map(comp => new Comparator(comp, this.options)); + rangeList.length; + const rangeMap = new Map(); + + for (const comp of rangeList) { + if (isNullSet(comp)) return [comp]; + rangeMap.set(comp.value, comp); + } - intersects(range, options) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required'); + if (rangeMap.size > 1 && rangeMap.has('')) rangeMap.delete(''); + const result = [...rangeMap.values()]; + cache.set(memoKey, result); + return result; } - return this.set.some(thisComparators => { - return isSatisfiable(thisComparators, options) && range.set.some(rangeComparators => { - return isSatisfiable(rangeComparators, options) && thisComparators.every(thisComparator => { - return rangeComparators.every(rangeComparator => { - return thisComparator.intersects(rangeComparator, options); + intersects(range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required'); + } + + return this.set.some(thisComparators => { + return isSatisfiable(thisComparators, options) && range.set.some(rangeComparators => { + return isSatisfiable(rangeComparators, options) && thisComparators.every(thisComparator => { + return rangeComparators.every(rangeComparator => { + return thisComparator.intersects(rangeComparator, options); + }); }); }); }); - }); - } - - test(version) { - if (!version) { - return false; } - if (typeof version === 'string') { - try { - version = new semver$1(version, this.options); - } catch (er) { + test(version) { + if (!version) { return false; } - } - for (let i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true; + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options); + } catch (er) { + return false; + } + } + + for (let i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true; + } } + + return false; } - return false; } -} - -var range = Range; -const cache = new lruCache({ - max: 1000 -}); -const { - re: re$1, - t: t$1, - comparatorTrimReplace, - tildeTrimReplace, - caretTrimReplace -} = re_1; + range = Range; + const LRU = requireLruCache(); + const cache = new LRU({ + max: 1000 + }); + const parseOptions = parseOptions_1; + const Comparator = requireComparator(); + const debug = debug_1; + const SemVer = semver$2; + const { + re, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace + } = re$3.exports; -const isNullSet = c => c.value === '<0.0.0-0'; + const isNullSet = c => c.value === '<0.0.0-0'; -const isAny = c => c.value === ''; + const isAny = c => c.value === ''; -const isSatisfiable = (comparators, options) => { - let result = true; - const remainingComparators = comparators.slice(); - let testComparator = remainingComparators.pop(); + const isSatisfiable = (comparators, options) => { + let result = true; + const remainingComparators = comparators.slice(); + let testComparator = remainingComparators.pop(); - while (result && remainingComparators.length) { - result = remainingComparators.every(otherComparator => { - return testComparator.intersects(otherComparator, options); - }); - testComparator = remainingComparators.pop(); - } + while (result && remainingComparators.length) { + result = remainingComparators.every(otherComparator => { + return testComparator.intersects(otherComparator, options); + }); + testComparator = remainingComparators.pop(); + } - return result; -}; + return result; + }; -const parseComparator = (comp, options) => { - debug_1('comp', comp, options); - comp = replaceCarets(comp, options); - debug_1('caret', comp); - comp = replaceTildes(comp, options); - debug_1('tildes', comp); - comp = replaceXRanges(comp, options); - debug_1('xrange', comp); - comp = replaceStars(comp, options); - debug_1('stars', comp); - return comp; -}; + const parseComparator = (comp, options) => { + debug('comp', comp, options); + comp = replaceCarets(comp, options); + debug('caret', comp); + comp = replaceTildes(comp, options); + debug('tildes', comp); + comp = replaceXRanges(comp, options); + debug('xrange', comp); + comp = replaceStars(comp, options); + debug('stars', comp); + return comp; + }; -const isX = id => !id || id.toLowerCase() === 'x' || id === '*'; - -const replaceTildes = (comp, options) => comp.trim().split(/\s+/).map(comp => { - return replaceTilde(comp, options); -}).join(' '); - -const replaceTilde = (comp, options) => { - const r = options.loose ? re$1[t$1.TILDELOOSE] : re$1[t$1.TILDE]; - return comp.replace(r, (_, M, m, p, pr) => { - debug_1('tilde', comp, _, M, m, p, pr); - let ret; - - if (isX(M)) { - ret = ''; - } else if (isX(m)) { - ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; - } else if (isX(p)) { - ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; - } else if (pr) { - debug_1('replaceTilde pr', pr); - ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; - } else { - ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; - } + const isX = id => !id || id.toLowerCase() === 'x' || id === '*'; - debug_1('tilde return', ret); - return ret; - }); -}; + const replaceTildes = (comp, options) => comp.trim().split(/\s+/).map(comp => { + return replaceTilde(comp, options); + }).join(' '); -const replaceCarets = (comp, options) => comp.trim().split(/\s+/).map(comp => { - return replaceCaret(comp, options); -}).join(' '); - -const replaceCaret = (comp, options) => { - debug_1('caret', comp, options); - const r = options.loose ? re$1[t$1.CARETLOOSE] : re$1[t$1.CARET]; - const z = options.includePrerelease ? '-0' : ''; - return comp.replace(r, (_, M, m, p, pr) => { - debug_1('caret', comp, _, M, m, p, pr); - let ret; - - if (isX(M)) { - ret = ''; - } else if (isX(m)) { - ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; - } else if (isX(p)) { - if (M === '0') { - ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + const replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; + return comp.replace(r, (_, M, m, p, pr) => { + debug('tilde', comp, _, M, m, p, pr); + let ret; + + if (isX(M)) { + ret = ''; + } else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + } else if (isX(p)) { + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + } else if (pr) { + debug('replaceTilde pr', pr); + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; } else { - ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; } - } else if (pr) { - debug_1('replaceCaret pr', pr); - if (M === '0') { - if (m === '0') { - ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + debug('tilde return', ret); + return ret; + }); + }; + + const replaceCarets = (comp, options) => comp.trim().split(/\s+/).map(comp => { + return replaceCaret(comp, options); + }).join(' '); + + const replaceCaret = (comp, options) => { + debug('caret', comp, options); + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; + const z = options.includePrerelease ? '-0' : ''; + return comp.replace(r, (_, M, m, p, pr) => { + debug('caret', comp, _, M, m, p, pr); + let ret; + + if (isX(M)) { + ret = ''; + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; } else { - ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; } - } else { - ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; - } - } else { - debug_1('no pr'); + } else if (pr) { + debug('replaceCaret pr', pr); - if (M === '0') { - if (m === '0') { - ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + } else { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } } else { - ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; } } else { - ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; - } - } - - debug_1('caret return', ret); - return ret; - }); -}; - -const replaceXRanges = (comp, options) => { - debug_1('replaceXRanges', comp, options); - return comp.split(/\s+/).map(comp => { - return replaceXRange(comp, options); - }).join(' '); -}; + debug('no pr'); -const replaceXRange = (comp, options) => { - comp = comp.trim(); - const r = options.loose ? re$1[t$1.XRANGELOOSE] : re$1[t$1.XRANGE]; - return comp.replace(r, (ret, gtlt, M, m, p, pr) => { - debug_1('xRange', comp, ret, gtlt, M, m, p, pr); - const xM = isX(M); - const xm = xM || isX(m); - const xp = xm || isX(p); - const anyX = xp; + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + } else { + ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + } + } else { + ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + } - if (gtlt === '=' && anyX) { - gtlt = ''; - } + debug('caret return', ret); + return ret; + }); + }; - pr = options.includePrerelease ? '-0' : ''; + const replaceXRanges = (comp, options) => { + debug('replaceXRanges', comp, options); + return comp.split(/\s+/).map(comp => { + return replaceXRange(comp, options); + }).join(' '); + }; - if (xM) { - if (gtlt === '>' || gtlt === '<') { - ret = '<0.0.0-0'; - } else { - ret = '*'; - } - } else if (gtlt && anyX) { - if (xm) { - m = 0; + const replaceXRange = (comp, options) => { + comp = comp.trim(); + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug('xRange', comp, ret, gtlt, M, m, p, pr); + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + + if (gtlt === '=' && anyX) { + gtlt = ''; } - p = 0; + pr = options.includePrerelease ? '-0' : ''; - if (gtlt === '>') { - gtlt = '>='; - - if (xm) { - M = +M + 1; - m = 0; - p = 0; + if (xM) { + if (gtlt === '>' || gtlt === '<') { + ret = '<0.0.0-0'; } else { - m = +m + 1; - p = 0; + ret = '*'; } - } else if (gtlt === '<=') { - gtlt = '<'; - + } else if (gtlt && anyX) { if (xm) { - M = +M + 1; - } else { - m = +m + 1; + m = 0; } - } - if (gtlt === '<') pr = '-0'; - ret = `${gtlt + M}.${m}.${p}${pr}`; - } else if (xm) { - ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; - } else if (xp) { - ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; - } + p = 0; - debug_1('xRange return', ret); - return ret; - }); -}; + if (gtlt === '>') { + gtlt = '>='; -const replaceStars = (comp, options) => { - debug_1('replaceStars', comp, options); - return comp.trim().replace(re$1[t$1.STAR], ''); -}; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } else { + m = +m + 1; + p = 0; + } + } else if (gtlt === '<=') { + gtlt = '<'; -const replaceGTE0 = (comp, options) => { - debug_1('replaceGTE0', comp, options); - return comp.trim().replace(re$1[options.includePrerelease ? t$1.GTE0PRE : t$1.GTE0], ''); -}; + if (xm) { + M = +M + 1; + } else { + m = +m + 1; + } + } -const hyphenReplace = incPr => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) => { - if (isX(fM)) { - from = ''; - } else if (isX(fm)) { - from = `>=${fM}.0.0${incPr ? '-0' : ''}`; - } else if (isX(fp)) { - from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`; - } else if (fpr) { - from = `>=${from}`; - } else { - from = `>=${from}${incPr ? '-0' : ''}`; - } - - if (isX(tM)) { - to = ''; - } else if (isX(tm)) { - to = `<${+tM + 1}.0.0-0`; - } else if (isX(tp)) { - to = `<${tM}.${+tm + 1}.0-0`; - } else if (tpr) { - to = `<=${tM}.${tm}.${tp}-${tpr}`; - } else if (incPr) { - to = `<${tM}.${tm}.${+tp + 1}-0`; - } else { - to = `<=${to}`; - } + if (gtlt === '<') pr = '-0'; + ret = `${gtlt + M}.${m}.${p}${pr}`; + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } else if (xp) { + ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + } - return `${from} ${to}`.trim(); -}; + debug('xRange return', ret); + return ret; + }); + }; -const testSet = (set, version, options) => { - for (let i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false; + const replaceStars = (comp, options) => { + debug('replaceStars', comp, options); + return comp.trim().replace(re[t.STAR], ''); + }; + + const replaceGTE0 = (comp, options) => { + debug('replaceGTE0', comp, options); + return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ''); + }; + + const hyphenReplace = incPr => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) => { + if (isX(fM)) { + from = ''; + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? '-0' : ''}`; + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`; + } else if (fpr) { + from = `>=${from}`; + } else { + from = `>=${from}${incPr ? '-0' : ''}`; + } + + if (isX(tM)) { + to = ''; + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } else { + to = `<=${to}`; } - } - if (version.prerelease.length && !options.includePrerelease) { - for (let i = 0; i < set.length; i++) { - debug_1(set[i].semver); + return `${from} ${to}`.trim(); + }; - if (set[i].semver === comparator.ANY) { - continue; + const testSet = (set, version, options) => { + for (let i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false; } + } - if (set[i].semver.prerelease.length > 0) { - const allowed = set[i].semver; + if (version.prerelease.length && !options.includePrerelease) { + for (let i = 0; i < set.length; i++) { + debug(set[i].semver); - if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) { - return true; + if (set[i].semver === Comparator.ANY) { + continue; + } + + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver; + + if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) { + return true; + } } } - } - return false; - } + return false; + } - return true; -}; + return true; + }; -const ANY$2 = Symbol('SemVer ANY'); + return range; +} -class Comparator { - static get ANY() { - return ANY$2; - } +var comparator; +var hasRequiredComparator; - constructor(comp, options) { - options = parseOptions_1(options); +function requireComparator() { + if (hasRequiredComparator) return comparator; + hasRequiredComparator = 1; + const ANY = Symbol('SemVer ANY'); - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp; - } else { - comp = comp.value; - } + class Comparator { + static get ANY() { + return ANY; } - debug_1('comparator', comp, options); - this.options = options; - this.loose = !!options.loose; - this.parse(comp); + constructor(comp, options) { + options = parseOptions(options); - if (this.semver === ANY$2) { - this.value = ''; - } else { - this.value = this.operator + this.semver.version; - } + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp; + } else { + comp = comp.value; + } + } - debug_1('comp', this); - } + debug('comparator', comp, options); + this.options = options; + this.loose = !!options.loose; + this.parse(comp); - parse(comp) { - const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; - const m = comp.match(r); + if (this.semver === ANY) { + this.value = ''; + } else { + this.value = this.operator + this.semver.version; + } - if (!m) { - throw new TypeError(`Invalid comparator: ${comp}`); + debug('comp', this); } - this.operator = m[1] !== undefined ? m[1] : ''; + parse(comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; + const m = comp.match(r); - if (this.operator === '=') { - this.operator = ''; - } + if (!m) { + throw new TypeError(`Invalid comparator: ${comp}`); + } - if (!m[2]) { - this.semver = ANY$2; - } else { - this.semver = new semver$1(m[2], this.options.loose); - } - } + this.operator = m[1] !== undefined ? m[1] : ''; - toString() { - return this.value; - } + if (this.operator === '=') { + this.operator = ''; + } - test(version) { - debug_1('Comparator.test', version, this.options.loose); + if (!m[2]) { + this.semver = ANY; + } else { + this.semver = new SemVer(m[2], this.options.loose); + } + } - if (this.semver === ANY$2 || version === ANY$2) { - return true; + toString() { + return this.value; } - if (typeof version === 'string') { - try { - version = new semver$1(version, this.options); - } catch (er) { - return false; + test(version) { + debug('Comparator.test', version, this.options.loose); + + if (this.semver === ANY || version === ANY) { + return true; } - } - return cmp_1(version, this.operator, this.semver, this.options); - } + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options); + } catch (er) { + return false; + } + } - intersects(comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required'); + return cmp(version, this.operator, this.semver, this.options); } - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - }; - } + intersects(comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required'); + } - if (this.operator === '') { - if (this.value === '') { - return true; + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + }; } - return new range(comp.value, options).test(this.value); - } else if (comp.operator === '') { - if (comp.value === '') { - return true; + if (this.operator === '') { + if (this.value === '') { + return true; + } + + return new Range(comp.value, options).test(this.value); + } else if (comp.operator === '') { + if (comp.value === '') { + return true; + } + + return new Range(this.value, options).test(comp.semver); } - return new range(this.value, options).test(comp.semver); + const sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>'); + const sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<'); + const sameSemVer = this.semver.version === comp.semver.version; + const differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<='); + const oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<'); + const oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>'); + return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan; } - const sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>'); - const sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<'); - const sameSemVer = this.semver.version === comp.semver.version; - const differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<='); - const oppositeDirectionsLessThan = cmp_1(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<'); - const oppositeDirectionsGreaterThan = cmp_1(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>'); - return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan; } + comparator = Comparator; + const parseOptions = parseOptions_1; + const { + re, + t + } = re$3.exports; + const cmp = cmp_1; + const debug = debug_1; + const SemVer = semver$2; + const Range = requireRange(); + return comparator; } -var comparator = Comparator; -const { - re, - t -} = re_1; +const Range$8 = requireRange(); -const satisfies = (version, range$1, options) => { +const satisfies$3 = (version, range, options) => { try { - range$1 = new range(range$1, options); + range = new Range$8(range, options); } catch (er) { return false; } - return range$1.test(version); + return range.test(version); }; -var satisfies_1 = satisfies; +var satisfies_1 = satisfies$3; +const Range$7 = requireRange(); -const toComparators = (range$1, options) => new range(range$1, options).set.map(comp => comp.map(c => c.value).join(' ').trim().split(' ')); +const toComparators = (range, options) => new Range$7(range, options).set.map(comp => comp.map(c => c.value).join(' ').trim().split(' ')); var toComparators_1 = toComparators; +const SemVer$3 = semver$2; +const Range$6 = requireRange(); -const maxSatisfying = (versions, range$1, options) => { +const maxSatisfying = (versions, range, options) => { let max = null; let maxSV = null; let rangeObj = null; try { - rangeObj = new range(range$1, options); + rangeObj = new Range$6(range, options); } catch (er) { return null; } @@ -2021,7 +2113,7 @@ const maxSatisfying = (versions, range$1, options) => { if (rangeObj.test(v)) { if (!max || maxSV.compare(v) === -1) { max = v; - maxSV = new semver$1(max, options); + maxSV = new SemVer$3(max, options); } } }); @@ -2029,14 +2121,16 @@ const maxSatisfying = (versions, range$1, options) => { }; var maxSatisfying_1 = maxSatisfying; +const SemVer$2 = semver$2; +const Range$5 = requireRange(); -const minSatisfying = (versions, range$1, options) => { +const minSatisfying = (versions, range, options) => { let min = null; let minSV = null; let rangeObj = null; try { - rangeObj = new range(range$1, options); + rangeObj = new Range$5(range, options); } catch (er) { return null; } @@ -2045,7 +2139,7 @@ const minSatisfying = (versions, range$1, options) => { if (rangeObj.test(v)) { if (!min || minSV.compare(v) === 1) { min = v; - minSV = new semver$1(min, options); + minSV = new SemVer$2(min, options); } } }); @@ -2053,28 +2147,31 @@ const minSatisfying = (versions, range$1, options) => { }; var minSatisfying_1 = minSatisfying; +const SemVer$1 = semver$2; +const Range$4 = requireRange(); +const gt$1 = gt_1; -const minVersion = (range$1, loose) => { - range$1 = new range(range$1, loose); - let minver = new semver$1('0.0.0'); +const minVersion = (range, loose) => { + range = new Range$4(range, loose); + let minver = new SemVer$1('0.0.0'); - if (range$1.test(minver)) { + if (range.test(minver)) { return minver; } - minver = new semver$1('0.0.0-0'); + minver = new SemVer$1('0.0.0-0'); - if (range$1.test(minver)) { + if (range.test(minver)) { return minver; } minver = null; - for (let i = 0; i < range$1.set.length; ++i) { - const comparators = range$1.set[i]; + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; let setMin = null; comparators.forEach(comparator => { - const compver = new semver$1(comparator.semver.version); + const compver = new SemVer$1(comparator.semver.version); switch (comparator.operator) { case '>': @@ -2088,7 +2185,7 @@ const minVersion = (range$1, loose) => { case '': case '>=': - if (!setMin || gt_1(compver, setMin)) { + if (!setMin || gt$1(compver, setMin)) { setMin = compver; } @@ -2102,10 +2199,10 @@ const minVersion = (range$1, loose) => { throw new Error(`Unexpected operation: ${comparator.operator}`); } }); - if (setMin && (!minver || gt_1(minver, setMin))) minver = setMin; + if (setMin && (!minver || gt$1(minver, setMin))) minver = setMin; } - if (minver && range$1.test(minver)) { + if (minver && range.test(minver)) { return minver; } @@ -2113,38 +2210,47 @@ const minVersion = (range$1, loose) => { }; var minVersion_1 = minVersion; +const Range$3 = requireRange(); -const validRange = (range$1, options) => { +const validRange = (range, options) => { try { - return new range(range$1, options).range || '*'; + return new Range$3(range, options).range || '*'; } catch (er) { return null; } }; var valid = validRange; +const SemVer = semver$2; +const Comparator$1 = requireComparator(); const { ANY: ANY$1 -} = comparator; - -const outside = (version, range$1, hilo, options) => { - version = new semver$1(version, options); - range$1 = new range(range$1, options); +} = Comparator$1; +const Range$2 = requireRange(); +const satisfies$2 = satisfies_1; +const gt = gt_1; +const lt = lt_1; +const lte = lte_1; +const gte = gte_1; + +const outside$2 = (version, range, hilo, options) => { + version = new SemVer(version, options); + range = new Range$2(range, options); let gtfn, ltefn, ltfn, comp, ecomp; switch (hilo) { case '>': - gtfn = gt_1; - ltefn = lte_1; - ltfn = lt_1; + gtfn = gt; + ltefn = lte; + ltfn = lt; comp = '>'; ecomp = '>='; break; case '<': - gtfn = lt_1; - ltefn = gte_1; - ltfn = gt_1; + gtfn = lt; + ltefn = gte; + ltfn = gt; comp = '<'; ecomp = '<='; break; @@ -2153,26 +2259,26 @@ const outside = (version, range$1, hilo, options) => { throw new TypeError('Must provide a hilo val of "<" or ">"'); } - if (satisfies_1(version, range$1, options)) { + if (satisfies$2(version, range, options)) { return false; } - for (let i = 0; i < range$1.set.length; ++i) { - const comparators = range$1.set[i]; + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; let high = null; let low = null; - comparators.forEach(comparator$1 => { - if (comparator$1.semver === ANY$1) { - comparator$1 = new comparator('>=0.0.0'); + comparators.forEach(comparator => { + if (comparator.semver === ANY$1) { + comparator = new Comparator$1('>=0.0.0'); } - high = high || comparator$1; - low = low || comparator$1; + high = high || comparator; + low = low || comparator; - if (gtfn(comparator$1.semver, high.semver, options)) { - high = comparator$1; - } else if (ltfn(comparator$1.semver, low.semver, options)) { - low = comparator$1; + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator; + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator; } }); @@ -2190,32 +2296,37 @@ const outside = (version, range$1, hilo, options) => { return true; }; -var outside_1 = outside; +var outside_1 = outside$2; +const outside$1 = outside_1; -const gtr = (version, range, options) => outside_1(version, range, '>', options); +const gtr = (version, range, options) => outside$1(version, range, '>', options); var gtr_1 = gtr; +const outside = outside_1; -const ltr = (version, range, options) => outside_1(version, range, '<', options); +const ltr = (version, range, options) => outside(version, range, '<', options); var ltr_1 = ltr; +const Range$1 = requireRange(); const intersects = (r1, r2, options) => { - r1 = new range(r1, options); - r2 = new range(r2, options); + r1 = new Range$1(r1, options); + r2 = new Range$1(r2, options); return r1.intersects(r2); }; var intersects_1 = intersects; +const satisfies$1 = satisfies_1; +const compare$1 = compare_1; var simplify = (versions, range, options) => { const set = []; let min = null; let prev = null; - const v = versions.sort((a, b) => compare_1(a, b, options)); + const v = versions.sort((a, b) => compare$1(a, b, options)); for (const version of v) { - const included = satisfies_1(version, range, options); + const included = satisfies$1(version, range, options); if (included) { prev = version; @@ -2242,14 +2353,18 @@ var simplify = (versions, range, options) => { return simplified.length < original.length ? simplified : range; }; +const Range = requireRange(); +const Comparator = requireComparator(); const { ANY -} = comparator; +} = Comparator; +const satisfies = satisfies_1; +const compare = compare_1; const subset = (sub, dom, options = {}) => { if (sub === dom) return true; - sub = new range(sub, options); - dom = new range(dom, options); + sub = new Range(sub, options); + dom = new Range(dom, options); let sawNonNull = false; OUTER: for (const simpleSub of sub.set) { @@ -2269,11 +2384,11 @@ const simpleSubset = (sub, dom, options) => { if (sub === dom) return true; if (sub.length === 1 && sub[0].semver === ANY) { - if (dom.length === 1 && dom[0].semver === ANY) return true;else if (options.includePrerelease) sub = [new comparator('>=0.0.0-0')];else sub = [new comparator('>=0.0.0')]; + if (dom.length === 1 && dom[0].semver === ANY) return true;else if (options.includePrerelease) sub = [new Comparator('>=0.0.0-0')];else sub = [new Comparator('>=0.0.0')]; } if (dom.length === 1 && dom[0].semver === ANY) { - if (options.includePrerelease) return true;else dom = [new comparator('>=0.0.0')]; + if (options.includePrerelease) return true;else dom = [new Comparator('>=0.0.0')]; } const eqSet = new Set(); @@ -2287,16 +2402,16 @@ const simpleSubset = (sub, dom, options) => { let gtltComp; if (gt && lt) { - gtltComp = compare_1(gt.semver, lt.semver, options); + gtltComp = compare(gt.semver, lt.semver, options); if (gtltComp > 0) return null;else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) return null; } for (const eq of eqSet) { - if (gt && !satisfies_1(eq, String(gt), options)) return null; - if (lt && !satisfies_1(eq, String(lt), options)) return null; + if (gt && !satisfies(eq, String(gt), options)) return null; + if (lt && !satisfies(eq, String(lt), options)) return null; for (const c of dom) { - if (!satisfies_1(eq, String(c), options)) return false; + if (!satisfies(eq, String(c), options)) return false; } return true; @@ -2325,7 +2440,7 @@ const simpleSubset = (sub, dom, options) => { if (c.operator === '>' || c.operator === '>=') { higher = higherGT(gt, c, options); if (higher === c && higher !== gt) return false; - } else if (gt.operator === '>=' && !satisfies_1(gt.semver, String(c), options)) return false; + } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) return false; } if (lt) { @@ -2338,7 +2453,7 @@ const simpleSubset = (sub, dom, options) => { if (c.operator === '<' || c.operator === '<=') { lower = lowerLT(lt, c, options); if (lower === c && lower !== lt) return false; - } else if (lt.operator === '<=' && !satisfies_1(lt.semver, String(c), options)) return false; + } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) return false; } if (!c.operator && (lt || gt) && gtltComp !== 0) return false; @@ -2352,23 +2467,24 @@ const simpleSubset = (sub, dom, options) => { const higherGT = (a, b, options) => { if (!a) return b; - const comp = compare_1(a.semver, b.semver, options); + const comp = compare(a.semver, b.semver, options); return comp > 0 ? a : comp < 0 ? b : b.operator === '>' && a.operator === '>=' ? b : a; }; const lowerLT = (a, b, options) => { if (!a) return b; - const comp = compare_1(a.semver, b.semver, options); + const comp = compare(a.semver, b.semver, options); return comp < 0 ? a : comp > 0 ? b : b.operator === '<' && a.operator === '<=' ? b : a; }; var subset_1 = subset; -var semver = { - re: re_1.re, - src: re_1.src, - tokens: re_1.t, +const internalRe = re$3.exports; +var semver$1 = { + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, - SemVer: semver$1, + SemVer: semver$2, compareIdentifiers: identifiers.compareIdentifiers, rcompareIdentifiers: identifiers.rcompareIdentifiers, parse: parse_1, @@ -2394,8 +2510,8 @@ var semver = { lte: lte_1, cmp: cmp_1, coerce: coerce_1, - Comparator: comparator, - Range: range, + Comparator: requireComparator(), + Range: requireRange(), satisfies: satisfies_1, toComparators: toComparators_1, maxSatisfying: maxSatisfying_1, @@ -2409,6 +2525,7 @@ var semver = { simplifyRange: simplify, subset: subset_1 }; +var semver = semver$1; var builtins = function ({ version = process.version, @@ -3309,4 +3426,6 @@ function _resolve() { } }); return _resolve.apply(this, arguments); -} \ No newline at end of file +} + +0 && 0; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/core/package.json b/tools/node_modules/eslint/node_modules/@babel/core/package.json index 86e20c3aeaf826..35629db7ce3654 100644 --- a/tools/node_modules/eslint/node_modules/@babel/core/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/core/package.json @@ -1,6 +1,6 @@ { "name": "@babel/core", - "version": "7.17.5", + "version": "7.18.6", "description": "Babel compiler core.", "main": "./lib/index.js", "author": "The Babel Team (https://babel.dev/team)", @@ -41,36 +41,39 @@ "./lib/config/files/index.js": "./lib/config/files/index-browser.js", "./lib/config/resolve-targets.js": "./lib/config/resolve-targets-browser.js", "./lib/transform-file.js": "./lib/transform-file-browser.js", - "./lib/transformation/util/clone-deep.js": "./lib/transformation/util/clone-deep-browser.js", "./src/config/files/index.ts": "./src/config/files/index-browser.ts", "./src/config/resolve-targets.ts": "./src/config/resolve-targets-browser.ts", - "./src/transform-file.ts": "./src/transform-file-browser.ts", - "./src/transformation/util/clone-deep.ts": "./src/transformation/util/clone-deep-browser.ts" + "./src/transform-file.ts": "./src/transform-file-browser.ts" }, "dependencies": { "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.2", - "@babel/parser": "^7.17.3", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.6", + "@babel/helper-compilation-targets": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helpers": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.1", "semver": "^6.3.0" }, "devDependencies": { - "@babel/helper-transform-fixture-test-runner": "^7.17.3", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@jridgewell/trace-mapping": "^0.3.4", + "@babel/helper-transform-fixture-test-runner": "^7.18.6", + "@babel/plugin-syntax-flow": "^7.18.6", + "@babel/plugin-transform-flow-strip-types": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/preset-env": "^7.18.6", + "@jridgewell/trace-mapping": "^0.3.8", "@types/convert-source-map": "^1.5.1", "@types/debug": "^4.1.0", "@types/resolve": "^1.3.2", - "@types/semver": "^5.4.0" - } + "@types/semver": "^5.4.0", + "rimraf": "^3.0.0" + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/client.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/client.cjs index da6c2b0a185e63..09fd8b42a265e2 100644 --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/client.cjs +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/client.cjs @@ -1,4 +1,4 @@ -var _class, _worker, _signal, _temp, _worker_threads, _worker_threads_cache; +var _class, _worker, _worker_threads, _worker_threads_cache; function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } @@ -106,20 +106,20 @@ class Client { } -exports.WorkerClient = (_temp = (_worker = new WeakMap(), _signal = new WeakMap(), _class = class WorkerClient extends Client { +exports.WorkerClient = (_worker = new WeakMap(), (_class = class WorkerClient extends Client { constructor() { super((action, payload) => { - _classPrivateFieldGet(this, _signal)[0] = 0; + const signal = new Int32Array(new SharedArrayBuffer(8)); const subChannel = new (_classStaticPrivateFieldSpecGet(WorkerClient, _class, _worker_threads).MessageChannel)(); _classPrivateFieldGet(this, _worker).postMessage({ - signal: _classPrivateFieldGet(this, _signal), + signal, port: subChannel.port1, action, payload }, [subChannel.port1]); - Atomics.wait(_classPrivateFieldGet(this, _signal), 0, 0); + Atomics.wait(signal, 0, 0); const { message @@ -135,21 +135,16 @@ exports.WorkerClient = (_temp = (_worker = new WeakMap(), _signal = new WeakMap( }) }); - _classPrivateFieldInitSpec(this, _signal, { - writable: true, - value: new Int32Array(new SharedArrayBuffer(4)) - }); - _classPrivateFieldGet(this, _worker).unref(); } -}), _worker_threads = { +}, _worker_threads = { get: _get_worker_threads, set: void 0 }, _worker_threads_cache = { writable: true, value: void 0 -}, _temp); +}, _class)); function _get_worker_threads() { var _classStaticPrivateFi2; @@ -158,9 +153,9 @@ function _get_worker_threads() { } { - var _class2, _temp2, _handleMessage; + var _class2, _handleMessage; - exports.LocalClient = (_temp2 = _class2 = class LocalClient extends Client { + exports.LocalClient = (_class2 = class LocalClient extends Client { constructor() { var _classStaticPrivateFi; @@ -173,5 +168,5 @@ function _get_worker_threads() { }, _handleMessage = { writable: true, value: void 0 - }, _temp2); + }, _class2); } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/parse.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/parse.cjs index 2af4be31ab9a06..855ec1080d3c53 100644 --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/parse.cjs +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/parse.cjs @@ -27,7 +27,7 @@ module.exports = function parse(code, options, client) { } if (!isRunningMinSupportedCoreVersion) { - throw new Error(`@babel/eslint-parser@${"7.17.0"} does not support @babel/core@${client.getVersion()}. Please upgrade to @babel/core@${minSupportedCoreVersion}.`); + throw new Error(`@babel/eslint-parser@${"7.18.2"} does not support @babel/core@${client.getVersion()}. Please upgrade to @babel/core@${minSupportedCoreVersion}.`); } const { diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/configuration.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/configuration.cjs index 4118434a2d8a46..af7065d69d3ee4 100644 --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/configuration.cjs +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/configuration.cjs @@ -80,17 +80,11 @@ function getDefaultParserOptions(options) { }); } -exports.normalizeBabelParseConfig = function () { - var _ref = _asyncToGenerator(function* (options) { - const parseOptions = normalizeParserOptions(options); - const config = yield babel.loadPartialConfigAsync(parseOptions); - return validateResolvedConfig(config, options, parseOptions); - }); - - return function (_x) { - return _ref.apply(this, arguments); - }; -}(); +exports.normalizeBabelParseConfig = _asyncToGenerator(function* (options) { + const parseOptions = normalizeParserOptions(options); + const config = yield babel.loadPartialConfigAsync(parseOptions); + return validateResolvedConfig(config, options, parseOptions); +}); exports.normalizeBabelParseConfigSync = function (options) { const parseOptions = normalizeParserOptions(options); diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/index.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/index.cjs index 86ae5fee7929e8..1ffae936321617 100644 --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/index.cjs +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/index.cjs @@ -10,41 +10,35 @@ const { parentPort } = require("worker_threads"); -parentPort.addListener("message", function () { - var _ref = _asyncToGenerator(function* ({ - signal, - port, - action, - payload - }) { - let response; - - try { - if (babel.init) yield babel.init; - response = { - result: yield handleMessage(action, payload) - }; - } catch (error) { - response = { - error, - errorData: Object.assign({}, error) - }; - } - - try { - port.postMessage(response); - } catch (_unused) { - port.postMessage({ - error: new Error("Cannot serialize worker response") - }); - } finally { - port.close(); - Atomics.store(signal, 0, 1); - Atomics.notify(signal, 0); - } - }); - - return function (_x) { - return _ref.apply(this, arguments); - }; -}()); \ No newline at end of file +parentPort.addListener("message", _asyncToGenerator(function* ({ + signal, + port, + action, + payload +}) { + let response; + + try { + if (babel.init) yield babel.init; + response = { + result: yield handleMessage(action, payload) + }; + } catch (error) { + response = { + error, + errorData: Object.assign({}, error) + }; + } + + try { + port.postMessage(response); + } catch (_unused) { + port.postMessage({ + error: new Error("Cannot serialize worker response") + }); + } finally { + port.close(); + Atomics.store(signal, 0, 1); + Atomics.notify(signal, 0); + } +})); \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/package.json b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/package.json index 5a9219530996c5..7434b7ebe17690 100644 --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/package.json @@ -1,6 +1,6 @@ { "name": "@babel/eslint-parser", - "version": "7.17.0", + "version": "7.18.2", "description": "ESLint parser that allows for linting of experimental syntax transformed by Babel", "author": "The Babel Team (https://babel.dev/team)", "license": "MIT", @@ -36,7 +36,7 @@ "semver": "^6.3.0" }, "devDependencies": { - "@babel/core": "^7.17.0", + "@babel/core": "^7.18.2", "dedent": "^0.7.0", "eslint": "^7.27.0", "eslint-8": "npm:eslint@^8.0.0" diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/buffer.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/buffer.js index 1445813969095f..c9c2022e2f86ba 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/buffer.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/buffer.js @@ -4,6 +4,16 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; + +function SourcePos() { + return { + identifierName: undefined, + line: undefined, + column: undefined, + filename: undefined + }; +} + const SPACES_RE = /^[ \t]+$/; class Buffer { @@ -16,12 +26,7 @@ class Buffer { line: 1, column: 0 }; - this._sourcePosition = { - identifierName: null, - line: null, - column: null, - filename: null - }; + this._sourcePosition = SourcePos(); this._disallowedPop = null; this._map = map; } @@ -32,29 +37,35 @@ class Buffer { const map = this._map; const result = { code: this._buf.trimRight(), - map: null, - rawMappings: map == null ? void 0 : map.getRawMappings() - }; - - if (map) { - Object.defineProperty(result, "map", { - configurable: true, - enumerable: true, - - get() { - return this.map = map.get(); - }, - - set(value) { - Object.defineProperty(this, "map", { - value, - writable: true - }); - } - - }); - } + decodedMap: map == null ? void 0 : map.getDecoded(), + + get map() { + const resultMap = map ? map.get() : null; + result.map = resultMap; + return resultMap; + }, + + set map(value) { + Object.defineProperty(result, "map", { + value, + writable: true + }); + }, + + get rawMappings() { + const mappings = map == null ? void 0 : map.getRawMappings(); + result.rawMappings = mappings; + return mappings; + }, + + set rawMappings(value) { + Object.defineProperty(result, "rawMappings", { + value, + writable: true + }); + } + }; return result; } @@ -65,11 +76,10 @@ class Buffer { line, column, filename, - identifierName, - force + identifierName } = this._sourcePosition; - this._append(str, line, column, identifierName, filename, force); + this._append(str, line, column, identifierName, filename); } queue(str) { @@ -83,11 +93,14 @@ class Buffer { line, column, filename, - identifierName, - force + identifierName } = this._sourcePosition; - this._queue.unshift([str, line, column, identifierName, filename, force]); + this._queue.unshift([str, line, column, identifierName, filename]); + } + + queueIndentation(str) { + this._queue.unshift([str, undefined, undefined, undefined, undefined]); } _flush() { @@ -98,14 +111,14 @@ class Buffer { } } - _append(str, line, column, identifierName, filename, force) { + _append(str, line, column, identifierName, filename) { this._buf += str; this._last = str.charCodeAt(str.length - 1); let i = str.indexOf("\n"); let last = 0; if (i !== 0) { - this._mark(line, column, identifierName, filename, force); + this._mark(line, column, identifierName, filename); } while (i !== -1) { @@ -114,7 +127,7 @@ class Buffer { last = i + 1; if (last < str.length) { - this._mark(++line, 0, identifierName, filename, force); + this._mark(++line, 0, identifierName, filename); } i = str.indexOf("\n", last); @@ -123,10 +136,10 @@ class Buffer { this._position.column += str.length - last; } - _mark(line, column, identifierName, filename, force) { + _mark(line, column, identifierName, filename) { var _this$_map; - (_this$_map = this._map) == null ? void 0 : _this$_map.mark(this._position.line, this._position.column, line, column, identifierName, filename, force); + (_this$_map = this._map) == null ? void 0 : _this$_map.mark(this._position, line, column, identifierName, filename); } removeTrailingNewline() { @@ -176,17 +189,17 @@ class Buffer { } exactSource(loc, cb) { - this.source("start", loc, true); + this.source("start", loc); cb(); this.source("end", loc); this._disallowPop("start", loc); } - source(prop, loc, force) { + source(prop, loc) { if (prop && !loc) return; - this._normalizePosition(prop, loc, this._sourcePosition, force); + this._normalizePosition(prop, loc, this._sourcePosition); } withSource(prop, loc, cb) { @@ -198,46 +211,26 @@ class Buffer { this.source(prop, loc); cb(); - if ((!this._sourcePosition.force || this._sourcePosition.line !== originalLine || this._sourcePosition.column !== originalColumn || this._sourcePosition.filename !== originalFilename) && (!this._disallowedPop || this._disallowedPop.line !== originalLine || this._disallowedPop.column !== originalColumn || this._disallowedPop.filename !== originalFilename)) { + if (!this._disallowedPop || this._disallowedPop.line !== originalLine || this._disallowedPop.column !== originalColumn || this._disallowedPop.filename !== originalFilename) { this._sourcePosition.line = originalLine; this._sourcePosition.column = originalColumn; this._sourcePosition.filename = originalFilename; this._sourcePosition.identifierName = originalIdentifierName; - this._sourcePosition.force = false; this._disallowedPop = null; } } _disallowPop(prop, loc) { if (prop && !loc) return; - this._disallowedPop = this._normalizePosition(prop, loc); + this._disallowedPop = this._normalizePosition(prop, loc, SourcePos()); } - _normalizePosition(prop, loc, targetObj, force) { + _normalizePosition(prop, loc, targetObj) { const pos = loc ? loc[prop] : null; - - if (targetObj === undefined) { - targetObj = { - identifierName: null, - line: null, - column: null, - filename: null, - force: false - }; - } - - const origLine = targetObj.line; - const origColumn = targetObj.column; - const origFilename = targetObj.filename; - targetObj.identifierName = prop === "start" && (loc == null ? void 0 : loc.identifierName) || null; + targetObj.identifierName = prop === "start" && (loc == null ? void 0 : loc.identifierName) || undefined; targetObj.line = pos == null ? void 0 : pos.line; targetObj.column = pos == null ? void 0 : pos.column; targetObj.filename = loc == null ? void 0 : loc.filename; - - if (force || targetObj.line !== origLine || targetObj.column !== origColumn || targetObj.filename !== origFilename) { - targetObj.force = force; - } - return targetObj; } diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/base.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/base.js index be9285cc6cabc1..0b773c34b4351f 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/base.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/base.js @@ -63,7 +63,7 @@ const unescapedDoubleQuoteRE = /(?:^|[^\\])(?:\\\\)*"/; function DirectiveLiteral(node) { const raw = this.getPossibleRaw(node); - if (!this.format.minified && raw != null) { + if (!this.format.minified && raw !== undefined) { this.token(raw); return; } diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/classes.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/classes.js index 141dfdaf1c988c..0c2c7c402807f3 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/classes.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/classes.js @@ -21,8 +21,10 @@ const { } = _t; function ClassDeclaration(node, parent) { - if (!this.format.decoratorsBeforeExport || !isExportDefaultDeclaration(parent) && !isExportNamedDeclaration(parent)) { - this.printJoin(node.decorators, node); + { + if (!this.format.decoratorsBeforeExport || !isExportDefaultDeclaration(parent) && !isExportNamedDeclaration(parent)) { + this.printJoin(node.decorators, node); + } } if (node.declare) { @@ -83,7 +85,7 @@ function ClassBody(node) { function ClassProperty(node) { this.printJoin(node.decorators, node); this.source("end", node.key.loc); - this.tsPrintClassMemberModifiers(node, true); + this.tsPrintClassMemberModifiers(node); if (node.computed) { this.token("["); @@ -118,7 +120,7 @@ function ClassProperty(node) { function ClassAccessorProperty(node) { this.printJoin(node.decorators, node); this.source("end", node.key.loc); - this.tsPrintClassMemberModifiers(node, true); + this.tsPrintClassMemberModifiers(node); this.word("accessor"); this.printInnerComments(node); this.space(); @@ -191,7 +193,7 @@ function ClassPrivateMethod(node) { function _classMethodHead(node) { this.printJoin(node.decorators, node); this.source("end", node.key.loc); - this.tsPrintClassMemberModifiers(node, false); + this.tsPrintClassMemberModifiers(node); this._methodHead(node); } diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/expressions.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/expressions.js index aa65c5cacaff36..a9ce096949c622 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/expressions.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/expressions.js @@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression; exports.AssignmentPattern = AssignmentPattern; -exports.AwaitExpression = void 0; +exports.AwaitExpression = AwaitExpression; exports.BindExpression = BindExpression; exports.CallExpression = CallExpression; exports.ConditionalExpression = ConditionalExpression; @@ -28,7 +28,7 @@ exports.ThisExpression = ThisExpression; exports.UnaryExpression = UnaryExpression; exports.UpdateExpression = UpdateExpression; exports.V8IntrinsicIdentifier = V8IntrinsicIdentifier; -exports.YieldExpression = void 0; +exports.YieldExpression = YieldExpression; var _t = require("@babel/types"); @@ -74,9 +74,7 @@ function UpdateExpression(node) { this.token(node.operator); this.print(node.argument, node); } else { - this.startTerminatorless(true); - this.print(node.argument, node); - this.endTerminatorless(); + this.printTerminatorless(node.argument, node, true); this.token(node.operator); } } @@ -128,9 +126,45 @@ function Super() { this.word("super"); } +function isDecoratorMemberExpression(node) { + switch (node.type) { + case "Identifier": + return true; + + case "MemberExpression": + return !node.computed && node.property.type === "Identifier" && isDecoratorMemberExpression(node.object); + + default: + return false; + } +} + +function shouldParenthesizeDecoratorExpression(node) { + if (node.type === "CallExpression") { + node = node.callee; + } + + if (node.type === "ParenthesizedExpression") { + return false; + } + + return !isDecoratorMemberExpression(node); +} + function Decorator(node) { this.token("@"); - this.print(node.expression, node); + const { + expression + } = node; + + if (shouldParenthesizeDecoratorExpression(expression)) { + this.token("("); + this.print(expression, node); + this.token(")"); + } else { + this.print(expression, node); + } + this.newline(); } @@ -191,27 +225,27 @@ function Import() { this.word("import"); } -function buildYieldAwait(keyword) { - return function (node) { - this.word(keyword); +function AwaitExpression(node) { + this.word("await"); - if (node.delegate) { - this.token("*"); - } - - if (node.argument) { - this.space(); - const terminatorState = this.startTerminatorless(); - this.print(node.argument, node); - this.endTerminatorless(terminatorState); - } - }; + if (node.argument) { + this.space(); + this.printTerminatorless(node.argument, node, false); + } } -const YieldExpression = buildYieldAwait("yield"); -exports.YieldExpression = YieldExpression; -const AwaitExpression = buildYieldAwait("await"); -exports.AwaitExpression = AwaitExpression; +function YieldExpression(node) { + this.word("yield"); + + if (node.delegate) { + this.token("*"); + } + + if (node.argument) { + this.space(); + this.printTerminatorless(node.argument, node, false); + } +} function EmptyStatement() { this.semicolon(true); diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/flow.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/flow.js index 7c0bc7d30305e4..b554bb9f7ec4a4 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/flow.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/flow.js @@ -219,14 +219,14 @@ function DeclareExportDeclaration(node) { this.space(); } - FlowExportDeclaration.apply(this, arguments); + FlowExportDeclaration.call(this, node); } -function DeclareExportAllDeclaration() { +function DeclareExportAllDeclaration(node) { this.word("declare"); this.space(); - _modules.ExportAllDeclaration.apply(this, arguments); + _modules.ExportAllDeclaration.call(this, node); } function EnumDeclaration(node) { diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/jsx.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/jsx.js index 3c11f59c8744cb..bd7c4c5923e6e0 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/jsx.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/jsx.js @@ -67,7 +67,7 @@ function JSXSpreadChild(node) { function JSXText(node) { const raw = this.getPossibleRaw(node); - if (raw != null) { + if (raw !== undefined) { this.token(raw); } else { this.token(node.value); diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/methods.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/methods.js index d31e7fad658c09..27fa102ee2e3ed 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/methods.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/methods.js @@ -42,7 +42,11 @@ function _parameters(parameters, parent) { function _param(parameter, parent) { this.printJoin(parameter.decorators, parameter); this.print(parameter, parent); - if (parameter.optional) this.token("?"); + + if (parameter.optional) { + this.token("?"); + } + this.print(parameter.typeAnnotation, parameter); } @@ -111,7 +115,9 @@ function _functionHead(node) { this._params(node); - this._predicate(node); + if (node.type !== "TSDeclareFunction") { + this._predicate(node); + } } function FunctionExpression(node) { diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/modules.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/modules.js index 7a3cc26757cc51..9a918265cf3230 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/modules.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/modules.js @@ -93,28 +93,14 @@ function ExportAllDeclaration(node) { } function ExportNamedDeclaration(node) { - if (this.format.decoratorsBeforeExport && isClassDeclaration(node.declaration)) { - this.printJoin(node.declaration.decorators, node); - } - - this.word("export"); - this.space(); - ExportDeclaration.apply(this, arguments); -} - -function ExportDefaultDeclaration(node) { - if (this.format.decoratorsBeforeExport && isClassDeclaration(node.declaration)) { - this.printJoin(node.declaration.decorators, node); + { + if (this.format.decoratorsBeforeExport && isClassDeclaration(node.declaration)) { + this.printJoin(node.declaration.decorators, node); + } } - this.word("export"); this.space(); - this.word("default"); - this.space(); - ExportDeclaration.apply(this, arguments); -} -function ExportDeclaration(node) { if (node.declaration) { const declar = node.declaration; this.print(declar, node); @@ -168,41 +154,61 @@ function ExportDeclaration(node) { } } +function ExportDefaultDeclaration(node) { + { + if (this.format.decoratorsBeforeExport && isClassDeclaration(node.declaration)) { + this.printJoin(node.declaration.decorators, node); + } + } + this.word("export"); + this.space(); + this.word("default"); + this.space(); + const declar = node.declaration; + this.print(declar, node); + if (!isStatement(declar)) this.semicolon(); +} + function ImportDeclaration(node) { this.word("import"); this.space(); + const isTypeKind = node.importKind === "type" || node.importKind === "typeof"; - if (node.importKind === "type" || node.importKind === "typeof") { + if (isTypeKind) { this.word(node.importKind); this.space(); } const specifiers = node.specifiers.slice(0); + const hasSpecifiers = !!specifiers.length; - if (specifiers != null && specifiers.length) { - for (;;) { - const first = specifiers[0]; + while (hasSpecifiers) { + const first = specifiers[0]; - if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) { - this.print(specifiers.shift(), node); + if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) { + this.print(specifiers.shift(), node); - if (specifiers.length) { - this.token(","); - this.space(); - } - } else { - break; + if (specifiers.length) { + this.token(","); + this.space(); } + } else { + break; } + } - if (specifiers.length) { - this.token("{"); - this.space(); - this.printList(specifiers, node); - this.space(); - this.token("}"); - } + if (specifiers.length) { + this.token("{"); + this.space(); + this.printList(specifiers, node); + this.space(); + this.token("}"); + } else if (isTypeKind && !hasSpecifiers) { + this.token("{"); + this.token("}"); + } + if (hasSpecifiers || isTypeKind) { this.space(); this.word("from"); this.space(); diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/statements.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/statements.js index 8b7b8fd7338861..338048e935c560 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/statements.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/statements.js @@ -3,19 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.BreakStatement = void 0; +exports.BreakStatement = BreakStatement; exports.CatchClause = CatchClause; -exports.ContinueStatement = void 0; +exports.ContinueStatement = ContinueStatement; exports.DebuggerStatement = DebuggerStatement; exports.DoWhileStatement = DoWhileStatement; exports.ForOfStatement = exports.ForInStatement = void 0; exports.ForStatement = ForStatement; exports.IfStatement = IfStatement; exports.LabeledStatement = LabeledStatement; -exports.ReturnStatement = void 0; +exports.ReturnStatement = ReturnStatement; exports.SwitchCase = SwitchCase; exports.SwitchStatement = SwitchStatement; -exports.ThrowStatement = void 0; +exports.ThrowStatement = ThrowStatement; exports.TryStatement = TryStatement; exports.VariableDeclaration = VariableDeclaration; exports.VariableDeclarator = VariableDeclarator; @@ -72,8 +72,15 @@ function IfStatement(node) { } function getLastStatement(statement) { - if (!isStatement(statement.body)) return statement; - return getLastStatement(statement.body); + const { + body + } = statement; + + if (isStatement(body) === false) { + return statement; + } + + return getLastStatement(body); } function ForStatement(node) { @@ -110,30 +117,29 @@ function WhileStatement(node) { this.printBlock(node); } -const buildForXStatement = function (op) { - return function (node) { - this.word("for"); - this.space(); - - if (op === "of" && node.await) { - this.word("await"); - this.space(); - } +function ForXStatement(node) { + this.word("for"); + this.space(); + const isForOf = node.type === "ForOfStatement"; - this.token("("); - this.print(node.left, node); - this.space(); - this.word(op); + if (isForOf && node.await) { + this.word("await"); this.space(); - this.print(node.right, node); - this.token(")"); - this.printBlock(node); - }; -}; + } + + this.token("("); + this.print(node.left, node); + this.space(); + this.word(isForOf ? "of" : "in"); + this.space(); + this.print(node.right, node); + this.token(")"); + this.printBlock(node); +} -const ForInStatement = buildForXStatement("in"); +const ForInStatement = ForXStatement; exports.ForInStatement = ForInStatement; -const ForOfStatement = buildForXStatement("of"); +const ForOfStatement = ForXStatement; exports.ForOfStatement = ForOfStatement; function DoWhileStatement(node) { @@ -149,31 +155,34 @@ function DoWhileStatement(node) { this.semicolon(); } -function buildLabelStatement(prefix, key = "label") { - return function (node) { - this.word(prefix); - const label = node[key]; - - if (label) { - this.space(); - const isLabel = key == "label"; - const terminatorState = this.startTerminatorless(isLabel); - this.print(label, node); - this.endTerminatorless(terminatorState); - } +function printStatementAfterKeyword(printer, node, parent, isLabel) { + if (node) { + printer.space(); + printer.printTerminatorless(node, parent, isLabel); + } - this.semicolon(); - }; + printer.semicolon(); } -const ContinueStatement = buildLabelStatement("continue"); -exports.ContinueStatement = ContinueStatement; -const ReturnStatement = buildLabelStatement("return", "argument"); -exports.ReturnStatement = ReturnStatement; -const BreakStatement = buildLabelStatement("break"); -exports.BreakStatement = BreakStatement; -const ThrowStatement = buildLabelStatement("throw", "argument"); -exports.ThrowStatement = ThrowStatement; +function BreakStatement(node) { + this.word("break"); + printStatementAfterKeyword(this, node.label, node, true); +} + +function ContinueStatement(node) { + this.word("continue"); + printStatementAfterKeyword(this, node.label, node, true); +} + +function ReturnStatement(node) { + this.word("return"); + printStatementAfterKeyword(this, node.argument, node, false); +} + +function ThrowStatement(node) { + this.word("throw"); + printStatementAfterKeyword(this, node.argument, node, false); +} function LabeledStatement(node) { this.print(node.label, node); diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/types.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/types.js index a56fb47ecc68d4..0aeb0a1c9da941 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/types.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/types.js @@ -213,7 +213,7 @@ function NumericLiteral(node) { function StringLiteral(node) { const raw = this.getPossibleRaw(node); - if (!this.format.minified && raw != null) { + if (!this.format.minified && raw !== undefined) { this.token(raw); return; } @@ -228,7 +228,7 @@ function StringLiteral(node) { function BigIntLiteral(node) { const raw = this.getPossibleRaw(node); - if (!this.format.minified && raw != null) { + if (!this.format.minified && raw !== undefined) { this.word(raw); return; } @@ -239,7 +239,7 @@ function BigIntLiteral(node) { function DecimalLiteral(node) { const raw = this.getPossibleRaw(node); - if (!this.format.minified && raw != null) { + if (!this.format.minified && raw !== undefined) { this.word(raw); return; } diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/typescript.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/typescript.js index 010d86d0a1d704..bf3f78faa1c634 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/typescript.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/typescript.js @@ -25,6 +25,7 @@ exports.TSImportType = TSImportType; exports.TSIndexSignature = TSIndexSignature; exports.TSIndexedAccessType = TSIndexedAccessType; exports.TSInferType = TSInferType; +exports.TSInstantiationExpression = TSInstantiationExpression; exports.TSInterfaceBody = TSInterfaceBody; exports.TSInterfaceDeclaration = TSInterfaceDeclaration; exports.TSIntersectionType = TSIntersectionType; @@ -65,13 +66,11 @@ exports.TSUndefinedKeyword = TSUndefinedKeyword; exports.TSUnionType = TSUnionType; exports.TSUnknownKeyword = TSUnknownKeyword; exports.TSVoidKeyword = TSVoidKeyword; -exports.tsPrintBraced = tsPrintBraced; exports.tsPrintClassMemberModifiers = tsPrintClassMemberModifiers; exports.tsPrintFunctionOrConstructorType = tsPrintFunctionOrConstructorType; exports.tsPrintPropertyOrMethodName = tsPrintPropertyOrMethodName; exports.tsPrintSignatureDeclarationBase = tsPrintSignatureDeclarationBase; exports.tsPrintTypeLiteralOrInterfaceBody = tsPrintTypeLiteralOrInterfaceBody; -exports.tsPrintUnionOrIntersectionType = tsPrintUnionOrIntersectionType; function TSTypeAnnotation(node) { this.token(":"); @@ -92,6 +91,16 @@ function TSTypeParameterInstantiation(node, parent) { } function TSTypeParameter(node) { + if (node.in) { + this.word("in"); + this.space(); + } + + if (node.out) { + this.word("out"); + this.space(); + } + this.word(node.name); if (node.constraint) { @@ -352,6 +361,10 @@ function TSTypeQuery(node) { this.word("typeof"); this.space(); this.print(node.exprName); + + if (node.typeParameters) { + this.print(node.typeParameters, node); + } } function TSTypeLiteral(node) { @@ -359,25 +372,25 @@ function TSTypeLiteral(node) { } function tsPrintTypeLiteralOrInterfaceBody(members, node) { - this.tsPrintBraced(members, node); + tsPrintBraced(this, members, node); } -function tsPrintBraced(members, node) { - this.token("{"); +function tsPrintBraced(printer, members, node) { + printer.token("{"); if (members.length) { - this.indent(); - this.newline(); + printer.indent(); + printer.newline(); for (const member of members) { - this.print(member, node); - this.newline(); + printer.print(member, node); + printer.newline(); } - this.dedent(); - this.rightBrace(); + printer.dedent(); + printer.rightBrace(); } else { - this.token("}"); + printer.token("}"); } } @@ -411,15 +424,15 @@ function TSNamedTupleMember(node) { } function TSUnionType(node) { - this.tsPrintUnionOrIntersectionType(node, "|"); + tsPrintUnionOrIntersectionType(this, node, "|"); } function TSIntersectionType(node) { - this.tsPrintUnionOrIntersectionType(node, "&"); + tsPrintUnionOrIntersectionType(this, node, "&"); } -function tsPrintUnionOrIntersectionType(node, sep) { - this.printJoin(node.types, node, { +function tsPrintUnionOrIntersectionType(printer, node, sep) { + printer.printJoin(node.types, node, { separator() { this.space(); this.token(sep); @@ -611,6 +624,11 @@ function TSTypeAssertion(node) { this.print(expression, node); } +function TSInstantiationExpression(node) { + this.print(node.expression, node); + this.print(node.typeParameters, node); +} + function TSEnumDeclaration(node) { const { declare, @@ -633,7 +651,7 @@ function TSEnumDeclaration(node) { this.space(); this.print(id, node); this.space(); - this.tsPrintBraced(members, node); + tsPrintBraced(this, members, node); } function TSEnumMember(node) { @@ -689,7 +707,7 @@ function TSModuleDeclaration(node) { } function TSModuleBlock(node) { - this.tsPrintBraced(node.body, node); + tsPrintBraced(this, node.body, node); } function TSImportType(node) { @@ -780,7 +798,9 @@ function tsPrintSignatureDeclarationBase(node) { this.print(returnType, node); } -function tsPrintClassMemberModifiers(node, isField) { +function tsPrintClassMemberModifiers(node) { + const isField = node.type === "ClassAccessorProperty" || node.type === "ClassProperty"; + if (isField && node.declare) { this.word("declare"); this.space(); diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/index.js index ca8a0bd79034e4..d5e0143471468b 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/index.js @@ -41,7 +41,6 @@ function normalizeOptions(code, opts) { style: " ", base: 0 }, - decoratorsBeforeExport: !!opts.decoratorsBeforeExport, jsescOption: Object.assign({ quotes: "double", wrap: true, @@ -51,6 +50,7 @@ function normalizeOptions(code, opts) { topicToken: opts.topicToken }; { + format.decoratorsBeforeExport = !!opts.decoratorsBeforeExport; format.jsonCompatibleStrings = opts.jsonCompatibleStrings; } diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/index.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/index.js index b594ae441c081c..41bb6ea47e2cd4 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/index.js @@ -66,7 +66,7 @@ function isOrHasCallExpression(node) { } function needsWhitespace(node, parent, type) { - if (!node) return 0; + if (!node) return false; if (isExpressionStatement(node)) { node = node.expression; @@ -86,10 +86,10 @@ function needsWhitespace(node, parent, type) { } if (typeof linesInfo === "object" && linesInfo !== null) { - return linesInfo[type] || 0; + return linesInfo[type] || false; } - return 0; + return false; } function needsWhitespaceBefore(node, parent) { diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/parentheses.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/parentheses.js index 5761a58d984871..9d2b9918bf1b55 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/parentheses.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/parentheses.js @@ -21,6 +21,7 @@ exports.OptionalCallExpression = exports.OptionalMemberExpression = OptionalMemb exports.SequenceExpression = SequenceExpression; exports.TSAsExpression = TSAsExpression; exports.TSInferType = TSInferType; +exports.TSInstantiationExpression = TSInstantiationExpression; exports.TSTypeAssertion = TSTypeAssertion; exports.TSIntersectionType = exports.TSUnionType = TSUnionType; exports.UnaryLike = UnaryLike; @@ -37,8 +38,9 @@ const { isAwaitExpression, isBinary, isBinaryExpression, + isUpdateExpression, isCallExpression, - isClassDeclaration, + isClass, isClassExpression, isConditional, isConditionalExpression, @@ -49,6 +51,7 @@ const { isForInStatement, isForOfStatement, isForStatement, + isFunctionExpression, isIfStatement, isIndexedAccessType, isIntersectionTypeAnnotation, @@ -64,6 +67,7 @@ const { isSwitchStatement, isTSArrayType, isTSAsExpression, + isTSInstantiationExpression, isTSIntersectionType, isTSNonNullExpression, isTSOptionalType, @@ -82,6 +86,7 @@ const { const PRECEDENCE = { "||": 0, "??": 0, + "|>": 0, "&&": 1, "|": 2, "^": 3, @@ -107,7 +112,9 @@ const PRECEDENCE = { "**": 10 }; -const isClassExtendsClause = (node, parent) => (isClassDeclaration(parent) || isClassExpression(parent)) && parent.superClass === node; +const isClassExtendsClause = (node, parent) => isClass(parent, { + superClass: node +}); const hasPostfixPart = (node, parent) => (isMemberExpression(parent) || isOptionalMemberExpression(parent)) && parent.object === node || (isCallExpression(parent) || isOptionalCallExpression(parent) || isNewExpression(parent)) && parent.callee === node || isTaggedTemplateExpression(parent) && parent.tag === node || isTSNonNullExpression(parent); @@ -189,6 +196,10 @@ function TSInferType(node, parent) { return isTSArrayType(parent) || isTSOptionalType(parent); } +function TSInstantiationExpression(node, parent) { + return (isCallExpression(parent) || isOptionalCallExpression(parent) || isNewExpression(parent) || isTSInstantiationExpression(parent)) && !!parent.typeParameters; +} + function BinaryExpression(node, parent) { return node.operator === "in" && (isVariableDeclarator(parent) || isFor(parent)); } @@ -273,6 +284,14 @@ function LogicalExpression(node, parent) { } function Identifier(node, parent, printStack) { + var _node$extra; + + if ((_node$extra = node.extra) != null && _node$extra.parenthesized && isAssignmentExpression(parent, { + left: node + }) && (isFunctionExpression(parent.right) || isClassExpression(parent.right)) && parent.right.id == null) { + return true; + } + if (node.name === "let") { const isFollowedByBracket = isMemberExpression(parent, { object: node, @@ -323,7 +342,7 @@ function isFirstInContext(printStack, { return true; } - if (hasPostfixPart(node, parent) && !isNewExpression(parent) || isSequenceExpression(parent) && parent.expressions[0] === node || isConditional(parent, { + if (hasPostfixPart(node, parent) && !isNewExpression(parent) || isSequenceExpression(parent) && parent.expressions[0] === node || isUpdateExpression(parent) && !parent.prefix || isConditional(parent, { test: node }) || isBinary(parent, { left: node diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/whitespace.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/whitespace.js index 80e2da9c498225..42320303d3ad57 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/whitespace.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/whitespace.js @@ -199,16 +199,12 @@ const list = { }; exports.list = list; [["Function", true], ["Class", true], ["Loop", true], ["LabeledStatement", true], ["SwitchStatement", true], ["TryStatement", true]].forEach(function ([type, amounts]) { - if (typeof amounts === "boolean") { - amounts = { - after: amounts, - before: amounts - }; - } - [type].concat(FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) { nodes[type] = function () { - return amounts; + return { + after: amounts, + before: amounts + }; }; }); }); \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/printer.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/printer.js index 0decd212cb25d2..4ece9b30fdfebc 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/printer.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/printer.js @@ -196,7 +196,7 @@ class Printer { _maybeIndent(str) { if (this._indent && this.endsWith(10) && str.charCodeAt(0) !== 10) { - this._buf.queue(this._getIndent()); + this._buf.queueIndentation(this._getIndent()); } } @@ -253,24 +253,23 @@ class Printer { return this.format.indent.style.repeat(this._indent); } - startTerminatorless(isLabel = false) { + printTerminatorless(node, parent, isLabel) { if (isLabel) { this._noLineTerminator = true; - return null; + this.print(node, parent); + this._noLineTerminator = false; } else { - return this._parenPushNewlineState = { + const terminatorState = { printed: false }; - } - } - - endTerminatorless(state) { - this._noLineTerminator = false; + this._parenPushNewlineState = terminatorState; + this.print(node, parent); - if (state != null && state.printed) { - this.dedent(); - this.newline(); - this.token(")"); + if (terminatorState.printed) { + this.dedent(); + this.newline(); + this.token(")"); + } } } diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/source-map.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/source-map.js index 99da1defd77e35..e61177810610b2 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/source-map.js +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/source-map.js @@ -5,67 +5,51 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = void 0; -var _sourceMap = require("source-map"); +var _genMapping = require("@jridgewell/gen-mapping"); class SourceMap { constructor(opts, code) { - this._cachedMap = void 0; - this._code = void 0; - this._opts = void 0; + var _opts$sourceFileName; + + this._map = void 0; this._rawMappings = void 0; - this._lastGenLine = void 0; - this._lastSourceLine = void 0; - this._lastSourceColumn = void 0; - this._cachedMap = null; - this._code = code; - this._opts = opts; - this._rawMappings = []; + this._sourceFileName = void 0; + this._lastGenLine = 0; + this._lastSourceLine = 0; + this._lastSourceColumn = 0; + const map = this._map = new _genMapping.GenMapping({ + sourceRoot: opts.sourceRoot + }); + this._sourceFileName = (_opts$sourceFileName = opts.sourceFileName) == null ? void 0 : _opts$sourceFileName.replace(/\\/g, "/"); + this._rawMappings = undefined; + + if (typeof code === "string") { + (0, _genMapping.setSourceContent)(map, this._sourceFileName, code); + } else if (typeof code === "object") { + Object.keys(code).forEach(sourceFileName => { + (0, _genMapping.setSourceContent)(map, sourceFileName.replace(/\\/g, "/"), code[sourceFileName]); + }); + } } get() { - if (!this._cachedMap) { - const map = this._cachedMap = new _sourceMap.SourceMapGenerator({ - sourceRoot: this._opts.sourceRoot - }); - const code = this._code; - - if (typeof code === "string") { - map.setSourceContent(this._opts.sourceFileName.replace(/\\/g, "/"), code); - } else if (typeof code === "object") { - Object.keys(code).forEach(sourceFileName => { - map.setSourceContent(sourceFileName.replace(/\\/g, "/"), code[sourceFileName]); - }); - } - - this._rawMappings.forEach(mapping => map.addMapping(mapping), map); - } + return (0, _genMapping.toEncodedMap)(this._map); + } - return this._cachedMap.toJSON(); + getDecoded() { + return (0, _genMapping.toDecodedMap)(this._map); } getRawMappings() { - return this._rawMappings.slice(); + return this._rawMappings || (this._rawMappings = (0, _genMapping.allMappings)(this._map)); } - mark(generatedLine, generatedColumn, line, column, identifierName, filename, force) { - if (this._lastGenLine !== generatedLine && line === null) return; - - if (!force && this._lastGenLine === generatedLine && this._lastSourceLine === line && this._lastSourceColumn === column) { - return; - } - - this._cachedMap = null; - this._lastGenLine = generatedLine; - this._lastSourceLine = line; - this._lastSourceColumn = column; - - this._rawMappings.push({ - name: identifierName || undefined, - generated: { - line: generatedLine, - column: generatedColumn - }, - source: line == null ? undefined : (filename || this._opts.sourceFileName).replace(/\\/g, "/"), + mark(generated, line, column, identifierName, filename) { + this._rawMappings = undefined; + (0, _genMapping.maybeAddMapping)(this._map, { + name: identifierName, + generated, + source: line == null ? undefined : (filename == null ? void 0 : filename.replace(/\\/g, "/")) || this._sourceFileName, original: line == null ? undefined : { line: line, column: column diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/LICENSE b/tools/node_modules/eslint/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/LICENSE new file mode 100644 index 00000000000000..352f0715f391f0 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/LICENSE @@ -0,0 +1,19 @@ +Copyright 2022 Justin Ridgewell + +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/@babel/generator/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs b/tools/node_modules/eslint/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs new file mode 100644 index 00000000000000..5aeb5ccc98ff7f --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs @@ -0,0 +1,230 @@ +import { SetArray, put } from '@jridgewell/set-array'; +import { encode } from '@jridgewell/sourcemap-codec'; +import { TraceMap, decodedMappings } from '@jridgewell/trace-mapping'; + +const COLUMN = 0; +const SOURCES_INDEX = 1; +const SOURCE_LINE = 2; +const SOURCE_COLUMN = 3; +const NAMES_INDEX = 4; + +const NO_NAME = -1; +/** + * A low-level API to associate a generated position with an original source position. Line and + * column here are 0-based, unlike `addMapping`. + */ +let addSegment; +/** + * A high-level API to associate a generated position with an original source position. Line is + * 1-based, but column is 0-based, due to legacy behavior in `source-map` library. + */ +let addMapping; +/** + * Same as `addSegment`, but will only add the segment if it generates useful information in the + * resulting map. This only works correctly if segments are added **in order**, meaning you should + * not add a segment with a lower generated line/column than one that came before. + */ +let maybeAddSegment; +/** + * Same as `addMapping`, but will only add the mapping if it generates useful information in the + * resulting map. This only works correctly if mappings are added **in order**, meaning you should + * not add a mapping with a lower generated line/column than one that came before. + */ +let maybeAddMapping; +/** + * Adds/removes the content of the source file to the source map. + */ +let setSourceContent; +/** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +let toDecodedMap; +/** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +let toEncodedMap; +/** + * Constructs a new GenMapping, using the already present mappings of the input. + */ +let fromMap; +/** + * Returns an array of high-level mapping objects for every recorded segment, which could then be + * passed to the `source-map` library. + */ +let allMappings; +// This split declaration is only so that terser can elminiate the static initialization block. +let addSegmentInternal; +/** + * Provides the state to generate a sourcemap. + */ +class GenMapping { + constructor({ file, sourceRoot } = {}) { + this._names = new SetArray(); + this._sources = new SetArray(); + this._sourcesContent = []; + this._mappings = []; + this.file = file; + this.sourceRoot = sourceRoot; + } +} +(() => { + addSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => { + return addSegmentInternal(false, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content); + }; + maybeAddSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => { + return addSegmentInternal(true, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content); + }; + addMapping = (map, mapping) => { + return addMappingInternal(false, map, mapping); + }; + maybeAddMapping = (map, mapping) => { + return addMappingInternal(true, map, mapping); + }; + setSourceContent = (map, source, content) => { + const { _sources: sources, _sourcesContent: sourcesContent } = map; + sourcesContent[put(sources, source)] = content; + }; + toDecodedMap = (map) => { + const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map; + removeEmptyFinalLines(mappings); + return { + version: 3, + file: file || undefined, + names: names.array, + sourceRoot: sourceRoot || undefined, + sources: sources.array, + sourcesContent, + mappings, + }; + }; + toEncodedMap = (map) => { + const decoded = toDecodedMap(map); + return Object.assign(Object.assign({}, decoded), { mappings: encode(decoded.mappings) }); + }; + allMappings = (map) => { + const out = []; + const { _mappings: mappings, _sources: sources, _names: names } = map; + for (let i = 0; i < mappings.length; i++) { + const line = mappings[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const generated = { line: i + 1, column: seg[COLUMN] }; + let source = undefined; + let original = undefined; + let name = undefined; + if (seg.length !== 1) { + source = sources.array[seg[SOURCES_INDEX]]; + original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] }; + if (seg.length === 5) + name = names.array[seg[NAMES_INDEX]]; + } + out.push({ generated, source, original, name }); + } + } + return out; + }; + fromMap = (input) => { + const map = new TraceMap(input); + const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot }); + putAll(gen._names, map.names); + putAll(gen._sources, map.sources); + gen._sourcesContent = map.sourcesContent || map.sources.map(() => null); + gen._mappings = decodedMappings(map); + return gen; + }; + // Internal helpers + addSegmentInternal = (skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => { + const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map; + const line = getLine(mappings, genLine); + const index = getColumnIndex(line, genColumn); + if (!source) { + if (skipable && skipSourceless(line, index)) + return; + return insert(line, index, [genColumn]); + } + const sourcesIndex = put(sources, source); + const namesIndex = name ? put(names, name) : NO_NAME; + if (sourcesIndex === sourcesContent.length) + sourcesContent[sourcesIndex] = content !== null && content !== void 0 ? content : null; + if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) { + return; + } + return insert(line, index, name + ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] + : [genColumn, sourcesIndex, sourceLine, sourceColumn]); + }; +})(); +function getLine(mappings, index) { + for (let i = mappings.length; i <= index; i++) { + mappings[i] = []; + } + return mappings[index]; +} +function getColumnIndex(line, genColumn) { + let index = line.length; + for (let i = index - 1; i >= 0; index = i--) { + const current = line[i]; + if (genColumn >= current[COLUMN]) + break; + } + return index; +} +function insert(array, index, value) { + for (let i = array.length; i > index; i--) { + array[i] = array[i - 1]; + } + array[index] = value; +} +function removeEmptyFinalLines(mappings) { + const { length } = mappings; + let len = length; + for (let i = len - 1; i >= 0; len = i, i--) { + if (mappings[i].length > 0) + break; + } + if (len < length) + mappings.length = len; +} +function putAll(strarr, array) { + for (let i = 0; i < array.length; i++) + put(strarr, array[i]); +} +function skipSourceless(line, index) { + // The start of a line is already sourceless, so adding a sourceless segment to the beginning + // doesn't generate any useful information. + if (index === 0) + return true; + const prev = line[index - 1]; + // If the previous segment is also sourceless, then adding another sourceless segment doesn't + // genrate any new information. Else, this segment will end the source/named segment and point to + // a sourceless position, which is useful. + return prev.length === 1; +} +function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) { + // A source/named segment at the start of a line gives position at that genColumn + if (index === 0) + return false; + const prev = line[index - 1]; + // If the previous segment is sourceless, then we're transitioning to a source. + if (prev.length === 1) + return false; + // If the previous segment maps to the exact same source position, then this segment doesn't + // provide any new position information. + return (sourcesIndex === prev[SOURCES_INDEX] && + sourceLine === prev[SOURCE_LINE] && + sourceColumn === prev[SOURCE_COLUMN] && + namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME)); +} +function addMappingInternal(skipable, map, mapping) { + const { generated, source, original, name, content } = mapping; + if (!source) { + return addSegmentInternal(skipable, map, generated.line - 1, generated.column, null, null, null, null, null); + } + const s = source; + return addSegmentInternal(skipable, map, generated.line - 1, generated.column, s, original.line - 1, original.column, name, content); +} + +export { GenMapping, addMapping, addSegment, allMappings, fromMap, maybeAddMapping, maybeAddSegment, setSourceContent, toDecodedMap, toEncodedMap }; +//# sourceMappingURL=gen-mapping.mjs.map diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js b/tools/node_modules/eslint/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js new file mode 100644 index 00000000000000..d9fcf5cff5957b --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js @@ -0,0 +1,236 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@jridgewell/set-array'), require('@jridgewell/sourcemap-codec'), require('@jridgewell/trace-mapping')) : + typeof define === 'function' && define.amd ? define(['exports', '@jridgewell/set-array', '@jridgewell/sourcemap-codec', '@jridgewell/trace-mapping'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.genMapping = {}, global.setArray, global.sourcemapCodec, global.traceMapping)); +})(this, (function (exports, setArray, sourcemapCodec, traceMapping) { 'use strict'; + + const COLUMN = 0; + const SOURCES_INDEX = 1; + const SOURCE_LINE = 2; + const SOURCE_COLUMN = 3; + const NAMES_INDEX = 4; + + const NO_NAME = -1; + /** + * A low-level API to associate a generated position with an original source position. Line and + * column here are 0-based, unlike `addMapping`. + */ + exports.addSegment = void 0; + /** + * A high-level API to associate a generated position with an original source position. Line is + * 1-based, but column is 0-based, due to legacy behavior in `source-map` library. + */ + exports.addMapping = void 0; + /** + * Same as `addSegment`, but will only add the segment if it generates useful information in the + * resulting map. This only works correctly if segments are added **in order**, meaning you should + * not add a segment with a lower generated line/column than one that came before. + */ + exports.maybeAddSegment = void 0; + /** + * Same as `addMapping`, but will only add the mapping if it generates useful information in the + * resulting map. This only works correctly if mappings are added **in order**, meaning you should + * not add a mapping with a lower generated line/column than one that came before. + */ + exports.maybeAddMapping = void 0; + /** + * Adds/removes the content of the source file to the source map. + */ + exports.setSourceContent = void 0; + /** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ + exports.toDecodedMap = void 0; + /** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ + exports.toEncodedMap = void 0; + /** + * Constructs a new GenMapping, using the already present mappings of the input. + */ + exports.fromMap = void 0; + /** + * Returns an array of high-level mapping objects for every recorded segment, which could then be + * passed to the `source-map` library. + */ + exports.allMappings = void 0; + // This split declaration is only so that terser can elminiate the static initialization block. + let addSegmentInternal; + /** + * Provides the state to generate a sourcemap. + */ + class GenMapping { + constructor({ file, sourceRoot } = {}) { + this._names = new setArray.SetArray(); + this._sources = new setArray.SetArray(); + this._sourcesContent = []; + this._mappings = []; + this.file = file; + this.sourceRoot = sourceRoot; + } + } + (() => { + exports.addSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => { + return addSegmentInternal(false, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content); + }; + exports.maybeAddSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => { + return addSegmentInternal(true, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content); + }; + exports.addMapping = (map, mapping) => { + return addMappingInternal(false, map, mapping); + }; + exports.maybeAddMapping = (map, mapping) => { + return addMappingInternal(true, map, mapping); + }; + exports.setSourceContent = (map, source, content) => { + const { _sources: sources, _sourcesContent: sourcesContent } = map; + sourcesContent[setArray.put(sources, source)] = content; + }; + exports.toDecodedMap = (map) => { + const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map; + removeEmptyFinalLines(mappings); + return { + version: 3, + file: file || undefined, + names: names.array, + sourceRoot: sourceRoot || undefined, + sources: sources.array, + sourcesContent, + mappings, + }; + }; + exports.toEncodedMap = (map) => { + const decoded = exports.toDecodedMap(map); + return Object.assign(Object.assign({}, decoded), { mappings: sourcemapCodec.encode(decoded.mappings) }); + }; + exports.allMappings = (map) => { + const out = []; + const { _mappings: mappings, _sources: sources, _names: names } = map; + for (let i = 0; i < mappings.length; i++) { + const line = mappings[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const generated = { line: i + 1, column: seg[COLUMN] }; + let source = undefined; + let original = undefined; + let name = undefined; + if (seg.length !== 1) { + source = sources.array[seg[SOURCES_INDEX]]; + original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] }; + if (seg.length === 5) + name = names.array[seg[NAMES_INDEX]]; + } + out.push({ generated, source, original, name }); + } + } + return out; + }; + exports.fromMap = (input) => { + const map = new traceMapping.TraceMap(input); + const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot }); + putAll(gen._names, map.names); + putAll(gen._sources, map.sources); + gen._sourcesContent = map.sourcesContent || map.sources.map(() => null); + gen._mappings = traceMapping.decodedMappings(map); + return gen; + }; + // Internal helpers + addSegmentInternal = (skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => { + const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map; + const line = getLine(mappings, genLine); + const index = getColumnIndex(line, genColumn); + if (!source) { + if (skipable && skipSourceless(line, index)) + return; + return insert(line, index, [genColumn]); + } + const sourcesIndex = setArray.put(sources, source); + const namesIndex = name ? setArray.put(names, name) : NO_NAME; + if (sourcesIndex === sourcesContent.length) + sourcesContent[sourcesIndex] = content !== null && content !== void 0 ? content : null; + if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) { + return; + } + return insert(line, index, name + ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] + : [genColumn, sourcesIndex, sourceLine, sourceColumn]); + }; + })(); + function getLine(mappings, index) { + for (let i = mappings.length; i <= index; i++) { + mappings[i] = []; + } + return mappings[index]; + } + function getColumnIndex(line, genColumn) { + let index = line.length; + for (let i = index - 1; i >= 0; index = i--) { + const current = line[i]; + if (genColumn >= current[COLUMN]) + break; + } + return index; + } + function insert(array, index, value) { + for (let i = array.length; i > index; i--) { + array[i] = array[i - 1]; + } + array[index] = value; + } + function removeEmptyFinalLines(mappings) { + const { length } = mappings; + let len = length; + for (let i = len - 1; i >= 0; len = i, i--) { + if (mappings[i].length > 0) + break; + } + if (len < length) + mappings.length = len; + } + function putAll(strarr, array) { + for (let i = 0; i < array.length; i++) + setArray.put(strarr, array[i]); + } + function skipSourceless(line, index) { + // The start of a line is already sourceless, so adding a sourceless segment to the beginning + // doesn't generate any useful information. + if (index === 0) + return true; + const prev = line[index - 1]; + // If the previous segment is also sourceless, then adding another sourceless segment doesn't + // genrate any new information. Else, this segment will end the source/named segment and point to + // a sourceless position, which is useful. + return prev.length === 1; + } + function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) { + // A source/named segment at the start of a line gives position at that genColumn + if (index === 0) + return false; + const prev = line[index - 1]; + // If the previous segment is sourceless, then we're transitioning to a source. + if (prev.length === 1) + return false; + // If the previous segment maps to the exact same source position, then this segment doesn't + // provide any new position information. + return (sourcesIndex === prev[SOURCES_INDEX] && + sourceLine === prev[SOURCE_LINE] && + sourceColumn === prev[SOURCE_COLUMN] && + namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME)); + } + function addMappingInternal(skipable, map, mapping) { + const { generated, source, original, name, content } = mapping; + if (!source) { + return addSegmentInternal(skipable, map, generated.line - 1, generated.column, null, null, null, null, null); + } + const s = source; + return addSegmentInternal(skipable, map, generated.line - 1, generated.column, s, original.line - 1, original.column, name, content); + } + + exports.GenMapping = GenMapping; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=gen-mapping.umd.js.map diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/package.json b/tools/node_modules/eslint/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/package.json new file mode 100644 index 00000000000000..4934de5c7b0a1d --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/package.json @@ -0,0 +1,78 @@ +{ + "name": "@jridgewell/gen-mapping", + "version": "0.3.2", + "description": "Generate source maps", + "keywords": [ + "source", + "map" + ], + "author": "Justin Ridgewell ", + "license": "MIT", + "repository": "https://github.com/jridgewell/gen-mapping", + "main": "dist/gen-mapping.umd.js", + "module": "dist/gen-mapping.mjs", + "typings": "dist/types/gen-mapping.d.ts", + "exports": { + ".": [ + { + "types": "./dist/types/gen-mapping.d.ts", + "browser": "./dist/gen-mapping.umd.js", + "require": "./dist/gen-mapping.umd.js", + "import": "./dist/gen-mapping.mjs" + }, + "./dist/gen-mapping.umd.js" + ], + "./package.json": "./package.json" + }, + "files": [ + "dist", + "src" + ], + "engines": { + "node": ">=6.0.0" + }, + "scripts": { + "benchmark": "run-s build:rollup benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node benchmark/index.mjs", + "prebuild": "rm -rf dist", + "build": "run-s -n build:*", + "build:rollup": "rollup -c rollup.config.js", + "build:ts": "tsc --project tsconfig.build.json", + "lint": "run-s -n lint:*", + "lint:prettier": "npm run test:lint:prettier -- --write", + "lint:ts": "npm run test:lint:ts -- --fix", + "pretest": "run-s build:rollup", + "test": "run-s -n test:lint test:coverage", + "test:debug": "mocha --inspect-brk", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:coverage": "c8 mocha", + "test:watch": "run-p 'build:rollup -- --watch' 'test:only -- --watch'", + "prepublishOnly": "npm run preversion", + "preversion": "run-s test build" + }, + "devDependencies": { + "@rollup/plugin-typescript": "8.3.2", + "@types/mocha": "9.1.1", + "@types/node": "17.0.29", + "@typescript-eslint/eslint-plugin": "5.21.0", + "@typescript-eslint/parser": "5.21.0", + "benchmark": "2.1.4", + "c8": "7.11.2", + "eslint": "8.14.0", + "eslint-config-prettier": "8.5.0", + "mocha": "9.2.2", + "npm-run-all": "4.1.5", + "prettier": "2.6.2", + "rollup": "2.70.2", + "typescript": "4.6.3" + }, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } +} diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/package.json b/tools/node_modules/eslint/node_modules/@babel/generator/package.json index 55d477fa1d14e4..bcced6830f48d8 100644 --- a/tools/node_modules/eslint/node_modules/@babel/generator/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/generator/package.json @@ -1,6 +1,6 @@ { "name": "@babel/generator", - "version": "7.17.3", + "version": "7.18.7", "description": "Turns an AST into code.", "author": "The Babel Team (https://babel.dev/team)", "license": "MIT", @@ -19,19 +19,19 @@ "lib" ], "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.18.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "devDependencies": { - "@babel/helper-fixtures": "^7.17.0", - "@babel/parser": "^7.17.3", - "@jridgewell/trace-mapping": "^0.3.4", + "@babel/helper-fixtures": "^7.18.6", + "@babel/parser": "^7.18.6", + "@jridgewell/trace-mapping": "^0.3.8", "@types/jsesc": "^2.5.0", - "@types/source-map": "^0.5.0", "charcodes": "^0.2.0" }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/index.js index c1865996afd788..1a39ee49ee2f12 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/index.js @@ -88,31 +88,31 @@ function validateBrowsers(browsers) { function getLowestVersions(browsers) { return browsers.reduce((all, browser) => { const [browserName, browserVersion] = browser.split(" "); - const normalizedBrowserName = _targets.browserNameMap[browserName]; + const target = _targets.browserNameMap[browserName]; - if (!normalizedBrowserName) { + if (!target) { return all; } try { const splitVersion = browserVersion.split("-")[0].toLowerCase(); - const isSplitUnreleased = (0, _utils.isUnreleasedVersion)(splitVersion, browserName); + const isSplitUnreleased = (0, _utils.isUnreleasedVersion)(splitVersion, target); - if (!all[normalizedBrowserName]) { - all[normalizedBrowserName] = isSplitUnreleased ? splitVersion : (0, _utils.semverify)(splitVersion); + if (!all[target]) { + all[target] = isSplitUnreleased ? splitVersion : (0, _utils.semverify)(splitVersion); return all; } - const version = all[normalizedBrowserName]; - const isUnreleased = (0, _utils.isUnreleasedVersion)(version, browserName); + const version = all[target]; + const isUnreleased = (0, _utils.isUnreleasedVersion)(version, target); if (isUnreleased && isSplitUnreleased) { - all[normalizedBrowserName] = (0, _utils.getLowestUnreleased)(version, splitVersion, browserName); + all[target] = (0, _utils.getLowestUnreleased)(version, splitVersion, target); } else if (isUnreleased) { - all[normalizedBrowserName] = (0, _utils.semverify)(splitVersion); + all[target] = (0, _utils.semverify)(splitVersion); } else if (!isUnreleased && !isSplitUnreleased) { const parsedBrowserVersion = (0, _utils.semverify)(splitVersion); - all[normalizedBrowserName] = (0, _utils.semverMin)(version, parsedBrowserVersion); + all[target] = (0, _utils.semverMin)(version, parsedBrowserVersion); } } catch (e) {} @@ -144,18 +144,15 @@ function semverifyTarget(target, value) { } } -const targetParserMap = { - __default(target, value) { - const version = (0, _utils.isUnreleasedVersion)(value, target) ? value.toLowerCase() : semverifyTarget(target, value); - return [target, version]; - }, - - node(target, value) { - const parsed = value === true || value === "current" ? process.versions.node : semverifyTarget(target, value); - return [target, parsed]; - } +function nodeTargetParser(value) { + const parsed = value === true || value === "current" ? process.versions.node : semverifyTarget("node", value); + return ["node", parsed]; +} -}; +function defaultTargetParser(target, value) { + const version = (0, _utils.isUnreleasedVersion)(value, target) ? value.toLowerCase() : semverifyTarget(target, value); + return [target, version]; +} function generateTargets(inputTargets) { const input = Object.assign({}, inputTargets); @@ -174,7 +171,7 @@ function resolveTargets(queries, env) { } function getTargets(inputTargets = {}, options = {}) { - var _browsers; + var _browsers, _browsers2; let { browsers, @@ -209,15 +206,16 @@ function getTargets(inputTargets = {}, options = {}) { esmodules = false; } - if (browsers) { + if ((_browsers2 = browsers) != null && _browsers2.length) { const queryBrowsers = resolveTargets(browsers, options.browserslistEnv); if (esmodules === "intersect") { for (const browser of Object.keys(queryBrowsers)) { const version = queryBrowsers[browser]; + const esmSupportVersion = ESM_SUPPORT[browser]; - if (ESM_SUPPORT[browser]) { - queryBrowsers[browser] = (0, _utils.getHighestUnreleased)(version, (0, _utils.semverify)(ESM_SUPPORT[browser]), browser); + if (esmSupportVersion) { + queryBrowsers[browser] = (0, _utils.getHighestUnreleased)(version, (0, _utils.semverify)(esmSupportVersion), browser); } else { delete queryBrowsers[browser]; } @@ -231,8 +229,6 @@ function getTargets(inputTargets = {}, options = {}) { const decimalWarnings = []; for (const target of Object.keys(targets).sort()) { - var _targetParserMap$targ; - const value = targets[target]; if (typeof value === "number" && value % 1 !== 0) { @@ -242,8 +238,7 @@ function getTargets(inputTargets = {}, options = {}) { }); } - const parser = (_targetParserMap$targ = targetParserMap[target]) != null ? _targetParserMap$targ : targetParserMap.__default; - const [parsedTarget, parsedValue] = parser(target, value); + const [parsedTarget, parsedValue] = target === "node" ? nodeTargetParser(value) : defaultTargetParser(target, value); if (parsedValue) { result[parsedTarget] = parsedValue; diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/utils.js b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/utils.js index 711a84f433a515..e14e7f986b9031 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/utils.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/utils.js @@ -45,10 +45,13 @@ function isUnreleasedVersion(version, env) { function getLowestUnreleased(a, b, env) { const unreleasedLabel = _targets.unreleasedLabels[env]; - const hasUnreleased = [a, b].some(item => item === unreleasedLabel); - if (hasUnreleased) { - return a === hasUnreleased ? b : a || b; + if (a === unreleasedLabel) { + return b; + } + + if (b === unreleasedLabel) { + return a; } return semverMin(a, b); diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/package.json index d35c3687d541d2..c5d6fb020b4946 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-compilation-targets", - "version": "7.16.7", + "version": "7.18.6", "author": "The Babel Team (https://babel.dev/team)", "license": "MIT", "description": "Helper functions on Babel compilation targets", @@ -22,20 +22,21 @@ "babel-plugin" ], "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0" }, "devDependencies": { - "@babel/core": "^7.16.7", - "@babel/helper-plugin-test-runner": "^7.16.7", + "@babel/core": "^7.18.6", + "@babel/helper-plugin-test-runner": "^7.18.6", "@types/semver": "^5.5.0" }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-environment-visitor/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-environment-visitor/lib/index.js index e85bf132e8ff77..bf1a3038b93f2d 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-environment-visitor/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-environment-visitor/lib/index.js @@ -4,35 +4,56 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; +exports.requeueComputedKeyAndDecorators = requeueComputedKeyAndDecorators; exports.skipAllButComputedKey = skipAllButComputedKey; -var _t = require("@babel/types"); - -const { - VISITOR_KEYS, - staticBlock -} = _t; - function skipAllButComputedKey(path) { - if (!path.node.computed) { - path.skip(); - return; + path.skip(); + + if (path.node.computed) { + path.context.maybeQueue(path.get("key")); } +} - const keys = VISITOR_KEYS[path.type]; +function requeueComputedKeyAndDecorators(path) { + const { + context, + node + } = path; - for (const key of keys) { - if (key !== "key") path.skipKey(key); + if (node.computed) { + context.maybeQueue(path.get("key")); + } + + if (node.decorators) { + for (const decorator of path.get("decorators")) { + context.maybeQueue(decorator); + } } } -const skipKey = (staticBlock ? "StaticBlock|" : "") + "ClassPrivateProperty|TypeAnnotation|FunctionDeclaration|FunctionExpression"; -var _default = { - [skipKey]: path => path.skip(), +const visitor = { + FunctionParent(path) { + if (path.isArrowFunctionExpression()) { + return; + } else { + path.skip(); + + if (path.isMethod()) { + requeueComputedKeyAndDecorators(path); + } + } + }, - "Method|ClassProperty"(path) { - skipAllButComputedKey(path); + Property(path) { + if (path.isObjectProperty()) { + return; + } + + path.skip(); + requeueComputedKeyAndDecorators(path); } }; +var _default = visitor; exports.default = _default; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-environment-visitor/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-environment-visitor/package.json index ffc31a3ca891db..0caf56434d2242 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-environment-visitor/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/helper-environment-visitor/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-environment-visitor", - "version": "7.16.7", + "version": "7.18.6", "description": "Helper visitor to only visit nodes in the current 'this' context", "repository": { "type": "git", @@ -17,14 +17,13 @@ ".": "./lib/index.js", "./package.json": "./package.json" }, - "dependencies": { - "@babel/types": "^7.16.7" - }, "devDependencies": { - "@babel/traverse": "^7.16.7" + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" }, - "author": "The Babel Team (https://babel.dev/team)" + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-function-name/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-function-name/lib/index.js index 2fa33dccc3fbab..2ad731682dfe7b 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-function-name/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-function-name/lib/index.js @@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = _default; -var _helperGetFunctionArity = require("@babel/helper-get-function-arity"); - var _template = require("@babel/template"); var _t = require("@babel/types"); @@ -16,6 +14,7 @@ const { cloneNode, identifier, isAssignmentExpression, + isAssignmentPattern, isFunction, isIdentifier, isLiteral, @@ -23,11 +22,18 @@ const { isObjectMethod, isObjectProperty, isRegExpLiteral, + isRestElement, isTemplateLiteral, isVariableDeclarator, toBindingIdentifierName } = _t; -const buildPropertyMethodAssignmentWrapper = (0, _template.default)(` + +function getFunctionArity(node) { + const count = node.params.findIndex(param => isAssignmentPattern(param) || isRestElement(param)); + return count === -1 ? node.params.length : count; +} + +const buildPropertyMethodAssignmentWrapper = _template.default.statement(` (function (FUNCTION_KEY) { function FUNCTION_ID() { return FUNCTION_KEY.apply(this, arguments); @@ -40,7 +46,8 @@ const buildPropertyMethodAssignmentWrapper = (0, _template.default)(` return FUNCTION_ID; })(FUNCTION) `); -const buildGeneratorPropertyMethodAssignmentWrapper = (0, _template.default)(` + +const buildGeneratorPropertyMethodAssignmentWrapper = _template.default.statement(` (function (FUNCTION_KEY) { function* FUNCTION_ID() { return yield* FUNCTION_KEY.apply(this, arguments); @@ -53,6 +60,7 @@ const buildGeneratorPropertyMethodAssignmentWrapper = (0, _template.default)(` return FUNCTION_ID; })(FUNCTION) `); + const visitor = { "ReferencedIdentifier|BindingIdentifier"(path, state) { if (path.node.name !== state.name) return; @@ -103,7 +111,7 @@ function wrap(state, method, id, scope) { }).expression; const params = template.callee.body.body[0].params; - for (let i = 0, len = (0, _helperGetFunctionArity.default)(method); i < len; i++) { + for (let i = 0, len = getFunctionArity(method); i < len; i++) { params.push(scope.generateUidIdentifier("x")); } @@ -120,7 +128,6 @@ function visit(node, name, scope) { selfAssignment: false, selfReference: false, outerDeclar: scope.getBindingIdentifier(name), - references: [], name: name }; const binding = scope.getOwnBinding(name); @@ -185,8 +192,8 @@ function _default({ } name = toBindingIdentifierName(name); - id = identifier(name); - id[NOT_LOCAL_BINDING] = true; + const newId = identifier(name); + newId[NOT_LOCAL_BINDING] = true; const state = visit(node, name, scope); - return wrap(state, node, id, scope) || node; + return wrap(state, node, newId, scope) || node; } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-function-name/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-function-name/package.json index 1a46e7ce76020b..4432993593b196 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-function-name/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/helper-function-name/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-function-name", - "version": "7.16.7", + "version": "7.18.6", "description": "Helper function to change the property 'name' of every function", "repository": { "type": "git", @@ -14,12 +14,12 @@ }, "main": "./lib/index.js", "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" }, - "author": "The Babel Team (https://babel.dev/team)" + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/LICENSE deleted file mode 100644 index f31575ec773bb1..00000000000000 --- a/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -MIT License - -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -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/@babel/helper-get-function-arity/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/lib/index.js deleted file mode 100644 index 61e22edd292753..00000000000000 --- a/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/lib/index.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = _default; - -var _t = require("@babel/types"); - -const { - isAssignmentPattern, - isRestElement -} = _t; - -function _default(node) { - const params = node.params; - - for (let i = 0; i < params.length; i++) { - const param = params[i]; - - if (isAssignmentPattern(param) || isRestElement(param)) { - return i; - } - } - - return params.length; -} \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/package.json deleted file mode 100644 index 4ea756238ffaee..00000000000000 --- a/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@babel/helper-get-function-arity", - "version": "7.16.7", - "description": "Helper function to get function arity", - "repository": { - "type": "git", - "url": "https://github.com/babel/babel.git", - "directory": "packages/babel-helper-get-function-arity" - }, - "homepage": "https://babel.dev/docs/en/next/babel-helper-get-function-arity", - "license": "MIT", - "publishConfig": { - "access": "public" - }, - "main": "./lib/index.js", - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "author": "The Babel Team (https://babel.dev/team)" -} \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/package.json index ec99d90ed3bbc4..0d925300296ce7 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-hoist-variables", - "version": "7.16.7", + "version": "7.18.6", "description": "Helper function to hoist variables", "repository": { "type": "git", @@ -14,14 +14,15 @@ }, "main": "./lib/index.js", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "TODO": "The @babel/traverse dependency is only needed for the NodePath TS type. We can consider exporting it from @babel/core.", "devDependencies": { - "@babel/traverse": "^7.16.7" + "@babel/traverse": "^7.18.6" }, "engines": { "node": ">=6.9.0" }, - "author": "The Babel Team (https://babel.dev/team)" + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-builder.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-builder.js index 8a1800e64cb324..907f6fd2bb724b 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-builder.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-builder.js @@ -28,8 +28,6 @@ class ImportBuilder { constructor(importedSource, scope, hub) { this._statements = []; this._resultName = null; - this._scope = null; - this._hub = null; this._importedSource = void 0; this._scope = scope; this._hub = hub; @@ -70,34 +68,38 @@ class ImportBuilder { } default(name) { - name = this._scope.generateUidIdentifier(name); + const id = this._scope.generateUidIdentifier(name); + const statement = this._statements[this._statements.length - 1]; _assert(statement.type === "ImportDeclaration"); _assert(statement.specifiers.length === 0); - statement.specifiers = [importDefaultSpecifier(name)]; - this._resultName = cloneNode(name); + statement.specifiers = [importDefaultSpecifier(id)]; + this._resultName = cloneNode(id); return this; } named(name, importName) { if (importName === "default") return this.default(name); - name = this._scope.generateUidIdentifier(name); + + const id = this._scope.generateUidIdentifier(name); + const statement = this._statements[this._statements.length - 1]; _assert(statement.type === "ImportDeclaration"); _assert(statement.specifiers.length === 0); - statement.specifiers = [importSpecifier(name, identifier(importName))]; - this._resultName = cloneNode(name); + statement.specifiers = [importSpecifier(id, identifier(importName))]; + this._resultName = cloneNode(id); return this; } var(name) { - name = this._scope.generateUidIdentifier(name); + const id = this._scope.generateUidIdentifier(name); + let statement = this._statements[this._statements.length - 1]; if (statement.type !== "ExpressionStatement") { @@ -108,8 +110,8 @@ class ImportBuilder { this._statements.push(statement); } - this._statements[this._statements.length - 1] = variableDeclaration("var", [variableDeclarator(name, statement.expression)]); - this._resultName = cloneNode(name); + this._statements[this._statements.length - 1] = variableDeclaration("var", [variableDeclarator(id, statement.expression)]); + this._resultName = cloneNode(id); return this; } diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-injector.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-injector.js index adb9627ef390be..cb3bf59859089a 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-injector.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-injector.js @@ -51,35 +51,25 @@ class ImportInjector { } addSideEffect(importedSourceIn, opts) { - return this._generateImport(this._applyDefaults(importedSourceIn, opts), false); + return this._generateImport(this._applyDefaults(importedSourceIn, opts), void 0); } _applyDefaults(importedSource, opts, isInit = false) { - const optsList = []; + let newOpts; if (typeof importedSource === "string") { - optsList.push({ + newOpts = Object.assign({}, this._defaultOpts, { importedSource - }); - optsList.push(opts); + }, opts); } else { _assert(!opts, "Unexpected secondary arguments."); - optsList.push(importedSource); + newOpts = Object.assign({}, this._defaultOpts, importedSource); } - const newOpts = Object.assign({}, this._defaultOpts); - - for (const opts of optsList) { - if (!opts) continue; - Object.keys(newOpts).forEach(key => { - if (opts[key] !== undefined) newOpts[key] = opts[key]; - }); - - if (!isInit) { - if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint; - if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist; - } + if (!isInit && opts) { + if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint; + if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist; } return newOpts; diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/package.json index 7814505e62028a..9301d3e17d9ca2 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-module-imports", - "version": "7.16.7", + "version": "7.18.6", "description": "Babel helper functions for inserting module loads", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-helper-module-imports", @@ -15,13 +15,14 @@ }, "main": "./lib/index.js", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "devDependencies": { - "@babel/core": "^7.16.7", - "@babel/traverse": "^7.16.7" + "@babel/core": "^7.18.6", + "@babel/traverse": "^7.18.6" }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/index.js index b9688eb6078d13..9a4b68d65dc31e 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/index.js @@ -80,6 +80,7 @@ function rewriteModuleStatementsAndPrepareHeader(path, { importInterop = noInterop ? "none" : "babel", lazy, esNamespaceOnly, + filename, constantReexports = loose, enumerableModuleMeta = loose, noIncompleteNsImportDetection @@ -93,7 +94,8 @@ function rewriteModuleStatementsAndPrepareHeader(path, { importInterop, initializeReexports: constantReexports, lazy, - esNamespaceOnly + esNamespaceOnly, + filename }); if (!allowTopLevelThis) { @@ -369,7 +371,9 @@ function buildExportInitializationStatements(programPath, metadata, constantReex } else { const chunkSize = 100; - for (let i = 0, uninitializedExportNames = []; i < initStatements.length; i += chunkSize) { + for (let i = 0; i < initStatements.length; i += chunkSize) { + let uninitializedExportNames = []; + for (let j = 0; j < chunkSize && i + j < initStatements.length; j++) { const [exportName, initStatement] = initStatements[i + j]; diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js index f98ee95e0f7c01..5187a30a3f579f 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js @@ -30,9 +30,9 @@ function validateImportInteropOption(importInterop) { return importInterop; } -function resolveImportInterop(importInterop, source) { +function resolveImportInterop(importInterop, source, filename) { if (typeof importInterop === "function") { - return validateImportInteropOption(importInterop(source)); + return validateImportInteropOption(importInterop(source, filename)); } return importInterop; @@ -42,7 +42,8 @@ function normalizeModuleAndLoadMetadata(programPath, exportName, { importInterop, initializeReexports = false, lazy = false, - esNamespaceOnly = false + esNamespaceOnly = false, + filename }) { if (!exportName) { exportName = programPath.scope.generateUidIdentifier("exports").name; @@ -65,7 +66,7 @@ function normalizeModuleAndLoadMetadata(programPath, exportName, { metadata.name = metadata.importsNamespace.values().next().value; } - const resolvedInterop = resolveImportInterop(importInterop, metadata.source); + const resolvedInterop = resolveImportInterop(importInterop, metadata.source, filename); if (resolvedInterop === "none") { metadata.interop = "none"; @@ -269,7 +270,9 @@ function getLocalExportMetadata(programPath, initializeReexports, stringSpecifie if (child.isImportDeclaration()) { kind = "import"; } else { - if (child.isExportDefaultDeclaration()) child = child.get("declaration"); + if (child.isExportDefaultDeclaration()) { + child = child.get("declaration"); + } if (child.isExportNamedDeclaration()) { if (child.node.declaration) { diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js index 8173fd57f24011..7ef6a467705174 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js @@ -90,7 +90,7 @@ function rewriteLiveReferences(programPath, metadata) { exported }; programPath.traverse(rewriteBindingInitVisitor, rewriteBindingInitVisitorState); - (0, _helperSimpleAccess.default)(programPath, new Set([...Array.from(imported.keys()), ...Array.from(exported.keys())])); + (0, _helperSimpleAccess.default)(programPath, new Set([...Array.from(imported.keys()), ...Array.from(exported.keys())]), false); const rewriteReferencesVisitorState = { seen: new WeakSet(), metadata, @@ -102,7 +102,10 @@ function rewriteLiveReferences(programPath, metadata) { const meta = metadata.source.get(source); if (localName) { - if (meta.lazy) identNode = callExpression(identNode, []); + if (meta.lazy) { + identNode = callExpression(identNode, []); + } + return identNode; } @@ -139,7 +142,7 @@ const rewriteBindingInitVisitor = { const exportNames = exported.get(localName) || []; if (exportNames.length > 0) { - const statement = expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, identifier(localName))); + const statement = expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, identifier(localName), path.scope)); statement._blockHoist = path.node._blockHoist; requeueInParent(path.insertAfter(statement)[0]); } @@ -155,7 +158,7 @@ const rewriteBindingInitVisitor = { const exportNames = exported.get(localName) || []; if (exportNames.length > 0) { - const statement = expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, identifier(localName))); + const statement = expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, identifier(localName), path.scope)); statement._blockHoist = path.node._blockHoist; requeueInParent(path.insertAfter(statement)[0]); } @@ -164,13 +167,21 @@ const rewriteBindingInitVisitor = { }; -const buildBindingExportAssignmentExpression = (metadata, exportNames, localExpr) => { +const buildBindingExportAssignmentExpression = (metadata, exportNames, localExpr, scope) => { + const exportsObjectName = metadata.exportName; + + for (let currentScope = scope; currentScope != null; currentScope = currentScope.parent) { + if (currentScope.hasOwnBinding(exportsObjectName)) { + currentScope.rename(exportsObjectName); + } + } + return (exportNames || []).reduce((expr, exportName) => { const { stringSpecifiers } = metadata; const computed = stringSpecifiers.has(exportName); - return assignmentExpression("=", memberExpression(identifier(metadata.exportName), computed ? stringLiteral(exportName) : identifier(exportName), computed), expr); + return assignmentExpression("=", memberExpression(identifier(exportsObjectName), computed ? stringLiteral(exportName) : identifier(exportName), computed), expr); }, localExpr); }; @@ -230,6 +241,47 @@ const rewriteReferencesVisitor = { } }, + UpdateExpression(path) { + const { + scope, + seen, + imported, + exported, + requeueInParent, + buildImportReference + } = this; + if (seen.has(path.node)) return; + seen.add(path.node); + const arg = path.get("argument"); + if (arg.isMemberExpression()) return; + const update = path.node; + + if (arg.isIdentifier()) { + const localName = arg.node.name; + + if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { + return; + } + + const exportedNames = exported.get(localName); + const importData = imported.get(localName); + + if ((exportedNames == null ? void 0 : exportedNames.length) > 0 || importData) { + if (importData) { + path.replaceWith(assignmentExpression(update.operator[0] + "=", buildImportReference(importData, arg.node), buildImportThrow(localName))); + } else if (update.prefix) { + path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, cloneNode(update), path.scope)); + } else { + const ref = scope.generateDeclaredUidIdentifier(localName); + path.replaceWith(sequenceExpression([assignmentExpression("=", cloneNode(ref), cloneNode(update)), buildBindingExportAssignmentExpression(this.metadata, exportedNames, identifier(localName), path.scope), cloneNode(ref)])); + } + } + } + + requeueInParent(path); + path.skip(); + }, + AssignmentExpression: { exit(path) { const { @@ -261,11 +313,11 @@ const rewriteReferencesVisitor = { const assignment = path.node; if (importData) { - assignment.left = buildImportReference(importData, assignment.left); + assignment.left = buildImportReference(importData, left.node); assignment.right = sequenceExpression([assignment.right, buildImportThrow(localName)]); } - path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, assignment)); + path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, assignment, path.scope)); requeueInParent(path); } } else { @@ -282,7 +334,7 @@ const rewriteReferencesVisitor = { const exportedNames = exported.get(localName) || []; if (exportedNames.length > 0) { - items.push(buildBindingExportAssignmentExpression(this.metadata, exportedNames, identifier(localName))); + items.push(buildBindingExportAssignmentExpression(this.metadata, exportedNames, identifier(localName), path.scope)); } }); diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/package.json index 267d86bbeb44cc..275954d2046028 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-module-transforms", - "version": "7.17.6", + "version": "7.18.8", "description": "Babel helper functions for implementing ES6 module transformations", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-helper-module-transforms", @@ -15,16 +15,17 @@ }, "main": "./lib/index.js", "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.8", + "@babel/types": "^7.18.8" }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/lib/index.js index 0ba1be02219558..02df6923fb9680 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/lib/index.js @@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.declare = declare; +exports.declarePreset = void 0; function declare(builder) { return (api, options, dirname) => { @@ -23,6 +24,8 @@ function declare(builder) { }; } +const declarePreset = declare; +exports.declarePreset = declarePreset; const apiPolyfills = { assertVersion: api => range => { throwVersionError(range, api.version); @@ -30,7 +33,9 @@ const apiPolyfills = { targets: () => () => { return {}; }, - assumption: () => () => {} + assumption: () => () => { + return undefined; + } }; function copyApiObject(api) { diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/package.json index 740d52ac36056a..f0ec3040081d0b 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-plugin-utils", - "version": "7.16.7", + "version": "7.18.6", "description": "General utilities for plugins to use", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-helper-plugin-utils", @@ -16,5 +16,6 @@ "main": "./lib/index.js", "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js index 69bacda62d33f4..0f19aea7962db6 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js @@ -19,11 +19,12 @@ const { unaryExpression } = _t; -function simplifyAccess(path, bindingNames) { +function simplifyAccess(path, bindingNames, includeUpdateExpression = true) { path.traverse(simpleAssignmentVisitor, { scope: path.scope, bindingNames, - seen: new WeakSet() + seen: new WeakSet(), + includeUpdateExpression }); } @@ -32,8 +33,14 @@ const simpleAssignmentVisitor = { exit(path) { const { scope, - bindingNames + bindingNames, + includeUpdateExpression } = this; + + if (!includeUpdateExpression) { + return; + } + const arg = path.get("argument"); if (!arg.isIdentifier()) return; const localName = arg.node.name; diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/package.json index e30c7eda747ac5..b360910a849884 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-simple-access", - "version": "7.16.7", + "version": "7.18.6", "description": "Babel helper for ensuring that access to a given value is performed through simple accesses", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-helper-simple-access", @@ -15,12 +15,13 @@ }, "main": "./lib/index.js", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "devDependencies": { - "@babel/traverse": "^7.16.7" + "@babel/traverse": "^7.18.6" }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/lib/index.js index 6007f89c28dacd..89cb62fed09c84 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/lib/index.js @@ -17,16 +17,13 @@ const { } = _t; function splitExportDeclaration(exportDeclaration) { - if (!exportDeclaration.isExportDeclaration()) { - throw new Error("Only export declarations can be split."); + if (!exportDeclaration.isExportDeclaration() || exportDeclaration.isExportAllDeclaration()) { + throw new Error("Only default and named export declarations can be split."); } - const isDefault = exportDeclaration.isExportDefaultDeclaration(); - const declaration = exportDeclaration.get("declaration"); - const isClassDeclaration = declaration.isClassDeclaration(); - - if (isDefault) { - const standaloneDeclaration = declaration.isFunctionDeclaration() || isClassDeclaration; + if (exportDeclaration.isExportDefaultDeclaration()) { + const declaration = exportDeclaration.get("declaration"); + const standaloneDeclaration = declaration.isFunctionDeclaration() || declaration.isClassDeclaration(); const scope = declaration.isScope() ? declaration.scope.parent : declaration.scope; let id = declaration.node.id; let needBindingRegistration = false; @@ -40,7 +37,7 @@ function splitExportDeclaration(exportDeclaration) { } } - const updatedDeclaration = standaloneDeclaration ? declaration : variableDeclaration("var", [variableDeclarator(cloneNode(id), declaration.node)]); + const updatedDeclaration = standaloneDeclaration ? declaration.node : variableDeclaration("var", [variableDeclarator(cloneNode(id), declaration.node)]); const updatedExportDeclaration = exportNamedDeclaration(null, [exportSpecifier(cloneNode(id), identifier("default"))]); exportDeclaration.insertAfter(updatedExportDeclaration); exportDeclaration.replaceWith(updatedDeclaration); @@ -50,12 +47,11 @@ function splitExportDeclaration(exportDeclaration) { } return exportDeclaration; - } - - if (exportDeclaration.get("specifiers").length > 0) { + } else if (exportDeclaration.get("specifiers").length > 0) { throw new Error("It doesn't make sense to split exported specifiers."); } + const declaration = exportDeclaration.get("declaration"); const bindingIdentifiers = declaration.getOuterBindingIdentifiers(); const specifiers = Object.keys(bindingIdentifiers).map(name => { return exportSpecifier(identifier(name), identifier(name)); diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/package.json index 3836b192d4d0d1..d2edb7fbcd4cf5 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-split-export-declaration", - "version": "7.16.7", + "version": "7.18.6", "description": "", "repository": { "type": "git", @@ -14,10 +14,11 @@ }, "main": "./lib/index.js", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" }, - "author": "The Babel Team (https://babel.dev/team)" + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/package.json index 972fdf11d5b002..27b388c23d12e9 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-validator-identifier", - "version": "7.16.7", + "version": "7.18.6", "description": "Validate identifier/keywords name", "repository": { "type": "git", @@ -23,5 +23,6 @@ "engines": { "node": ">=6.9.0" }, - "author": "The Babel Team (https://babel.dev/team)" + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/package.json index 1fe2da845ceca8..15eb32752502da 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-validator-option", - "version": "7.16.7", + "version": "7.18.6", "description": "Validate plugin/preset options", "repository": { "type": "git", @@ -19,5 +19,6 @@ "engines": { "node": ">=6.9.0" }, - "author": "The Babel Team (https://babel.dev/team)" + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers-generated.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers-generated.js index 9ef543e009a0b0..29d2c5c12170f3 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers-generated.js +++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers-generated.js @@ -10,15 +10,18 @@ var _template = require("@babel/template"); function helper(minVersion, source) { return Object.freeze({ minVersion, - ast: () => _template.default.program.ast(source) + ast: () => _template.default.program.ast(source, { + preserveComments: true + }) }); } var _default = Object.freeze({ - applyDecs: helper("7.17.0", 'function createMetadataMethodsForProperty(metadataMap,kind,property){return{getMetadata:function(key){if("symbol"!=typeof key)throw new TypeError("Metadata keys must be symbols, received: "+key);var metadataForKey=metadataMap[key];if(void 0!==metadataForKey)if(1===kind){var pub=metadataForKey.public;if(void 0!==pub)return pub[property]}else if(2===kind){var priv=metadataForKey.private;if(void 0!==priv)return priv.get(property)}else if(Object.hasOwnProperty.call(metadataForKey,"constructor"))return metadataForKey.constructor},setMetadata:function(key,value){if("symbol"!=typeof key)throw new TypeError("Metadata keys must be symbols, received: "+key);var metadataForKey=metadataMap[key];if(void 0===metadataForKey&&(metadataForKey=metadataMap[key]={}),1===kind){var pub=metadataForKey.public;void 0===pub&&(pub=metadataForKey.public={}),pub[property]=value}else if(2===kind){var priv=metadataForKey.priv;void 0===priv&&(priv=metadataForKey.private=new Map),priv.set(property,value)}else metadataForKey.constructor=value}}}function convertMetadataMapToFinal(obj,metadataMap){var parentMetadataMap=obj[Symbol.metadata||Symbol.for("Symbol.metadata")],metadataKeys=Object.getOwnPropertySymbols(metadataMap);if(0!==metadataKeys.length){for(var i=0;i=0;i--){var newInit;if(void 0!==(newValue=(0,decs[i])(value,ctx)))assertValidReturnValue(kind,newValue),0===kind?newInit=newValue:1===kind?(newInit=newValue.initializer,get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue,void 0!==newInit&&(void 0===initializer?initializer=newInit:"function"==typeof initializer?initializer=[initializer,newInit]:initializer.push(newInit))}if(0===kind||1===kind){if(void 0===initializer)initializer=function(instance,init){return init};else if("function"!=typeof initializer){var ownInitializers=initializer;initializer=function(instance,init){for(var value=init,i=0;i3,isStatic=kind>=5;if(isStatic?(base=Class,metadataMap=staticMetadataMap,kind-=5,initializers=staticInitializers):(base=Class.prototype,metadataMap=protoMetadataMap,initializers=protoInitializers),0!==kind&&!isPrivate){var existingNonFields=isStatic?existingStaticNonFields:existingProtoNonFields,existingKind=existingNonFields.get(name)||0;if(!0===existingKind||3===existingKind&&4!==kind||4===existingKind&&3!==kind)throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+name);!existingKind&&kind>2?existingNonFields.set(name,kind):existingNonFields.set(name,!0)}applyMemberDec(ret,base,decInfo,name,kind,isStatic,isPrivate,metadataMap,initializers)}}protoInitializers.length>0&&pushInitializers(ret,protoInitializers),staticInitializers.length>0&&pushInitializers(ret,staticInitializers)}function pushInitializers(ret,initializers){initializers.length>0?(initializers=initializers.slice(),ret.push((function(instance){for(var i=0;i=0;i--)newClass=classDecs[i](newClass,ctx)||newClass;ret.push(newClass),initializers.length>0?ret.push((function(){for(var i=0;i=0;i--){var newInit;if(void 0!==(newValue=memberDec(decs[i],name,desc,metadataMap,initializers,kind,isStatic,isPrivate,value)))assertValidReturnValue(kind,newValue),0===kind?newInit=newValue:1===kind?(newInit=getInit(newValue),get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue,void 0!==newInit&&(void 0===initializer?initializer=newInit:"function"==typeof initializer?initializer=[initializer,newInit]:initializer.push(newInit))}if(0===kind||1===kind){if(void 0===initializer)initializer=function(instance,init){return init};else if("function"!=typeof initializer){var ownInitializers=initializer;initializer=function(instance,init){for(var value=init,i=0;i3,isStatic=kind>=5;if(isStatic?(base=Class,metadataMap=staticMetadataMap,0!==(kind-=5)&&(initializers=staticInitializers=staticInitializers||[])):(base=Class.prototype,metadataMap=protoMetadataMap,0!==kind&&(initializers=protoInitializers=protoInitializers||[])),0!==kind&&!isPrivate){var existingNonFields=isStatic?existingStaticNonFields:existingProtoNonFields,existingKind=existingNonFields.get(name)||0;if(!0===existingKind||3===existingKind&&4!==kind||4===existingKind&&3!==kind)throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+name);!existingKind&&kind>2?existingNonFields.set(name,kind):existingNonFields.set(name,!0)}applyMemberDec(ret,base,decInfo,name,kind,isStatic,isPrivate,metadataMap,initializers)}}pushInitializers(ret,protoInitializers),pushInitializers(ret,staticInitializers)}function pushInitializers(ret,initializers){initializers&&ret.push((function(instance){for(var i=0;i0){for(var initializers=[],newClass=targetClass,name=targetClass.name,i=classDecs.length-1;i>=0;i--){var decoratorFinishedRef={v:!1};try{var ctx=Object.assign({kind:"class",name:name,addInitializer:createAddInitializerMethod(initializers,decoratorFinishedRef)},createMetadataMethodsForProperty(metadataMap,0,name,decoratorFinishedRef)),nextNewClass=classDecs[i](newClass,ctx)}finally{decoratorFinishedRef.v=!0}void 0!==nextNewClass&&(assertValidReturnValue(10,nextNewClass),newClass=nextNewClass)}ret.push(newClass,(function(){for(var i=0;i1){for(var childArray=new Array(childrenLength),i=0;i=0;--i){var entry=this.tryEntries[i],record=entry.completion;if("root"===entry.tryLoc)return handle("end");if(entry.tryLoc<=this.prev){var hasCatch=hasOwn.call(entry,"catchLoc"),hasFinally=hasOwn.call(entry,"finallyLoc");if(hasCatch&&hasFinally){if(this.prev=0;--i){var entry=this.tryEntries[i];if(entry.tryLoc<=this.prev&&hasOwn.call(entry,"finallyLoc")&&this.prev=0;--i){var entry=this.tryEntries[i];if(entry.finallyLoc===finallyLoc)return this.complete(entry.completion,entry.afterLoc),resetTryEntry(entry),ContinueSentinel}},catch:function(tryLoc){for(var i=this.tryEntries.length-1;i>=0;--i){var entry=this.tryEntries[i];if(entry.tryLoc===tryLoc){var record=entry.completion;if("throw"===record.type){var thrown=record.arg;resetTryEntry(entry)}return thrown}}throw new Error("illegal catch attempt")},delegateYield:function(iterable,resultName,nextLoc){return this.delegate={iterator:values(iterable),resultName:resultName,nextLoc:nextLoc},"next"===this.method&&(this.arg=undefined),ContinueSentinel}},exports}'), typeof: helper("7.0.0-beta.0", 'export default function _typeof(obj){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}'), wrapRegExp: helper("7.2.6", 'import setPrototypeOf from"setPrototypeOf";import inherits from"inherits";export default function _wrapRegExp(){_wrapRegExp=function(re,groups){return new BabelRegExp(re,void 0,groups)};var _super=RegExp.prototype,_groups=new WeakMap;function BabelRegExp(re,flags,groups){var _this=new RegExp(re,flags);return _groups.set(_this,groups||_groups.get(re)),setPrototypeOf(_this,BabelRegExp.prototype)}function buildGroups(result,re){var g=_groups.get(re);return Object.keys(g).reduce((function(groups,name){return groups[name]=result[g[name]],groups}),Object.create(null))}return inherits(BabelRegExp,RegExp),BabelRegExp.prototype.exec=function(str){var result=_super.exec.call(this,str);return result&&(result.groups=buildGroups(result,this)),result},BabelRegExp.prototype[Symbol.replace]=function(str,substitution){if("string"==typeof substitution){var groups=_groups.get(this);return _super[Symbol.replace].call(this,str,substitution.replace(/\\$<([^>]+)>/g,(function(_,name){return"$"+groups[name]})))}if("function"==typeof substitution){var _this=this;return _super[Symbol.replace].call(this,str,(function(){var args=arguments;return"object"!=typeof args[args.length-1]&&(args=[].slice.call(args)).push(buildGroups(args,_this)),substitution.apply(this,args)}))}return _super[Symbol.replace].call(this,str,substitution)},_wrapRegExp.apply(this,arguments)}') }); diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers.js index 3b8eea2437efd0..500240336b7ae2 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers.js +++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers.js @@ -284,7 +284,7 @@ helpers.defineProperty = helper("7.0.0-beta.0")` `; helpers.extends = helper("7.0.0-beta.0")` export default function _extends() { - _extends = Object.assign || function (target) { + _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { @@ -351,7 +351,7 @@ helpers.inheritsLoose = helper("7.0.0-beta.0")` helpers.getPrototypeOf = helper("7.0.0-beta.0")` export default function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf - ? Object.getPrototypeOf + ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; @@ -360,10 +360,12 @@ helpers.getPrototypeOf = helper("7.0.0-beta.0")` `; helpers.setPrototypeOf = helper("7.0.0-beta.0")` export default function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; + _setPrototypeOf = Object.setPrototypeOf + ? Object.setPrototypeOf.bind() + : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; return _setPrototypeOf(o, p); } `; @@ -400,7 +402,7 @@ helpers.construct = helper("7.0.0-beta.0")` export default function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { - _construct = Reflect.construct; + _construct = Reflect.construct.bind(); } else { // NOTE: If Parent !== Class, the correct __proto__ is set *after* // calling the constructor. @@ -630,7 +632,7 @@ helpers.get = helper("7.0.0-beta.0")` export default function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get; + _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = superPropBase(target, property); diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/applyDecs.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/applyDecs.js index 27dc4e226228a5..8808a4018b1b31 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/applyDecs.js +++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/applyDecs.js @@ -5,13 +5,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = applyDecs; -function createMetadataMethodsForProperty(metadataMap, kind, property) { +function createMetadataMethodsForProperty(metadataMap, kind, property, decoratorFinishedRef) { return { getMetadata: function (key) { - if (typeof key !== "symbol") { - throw new TypeError("Metadata keys must be symbols, received: " + key); - } - + assertNotFinished(decoratorFinishedRef, "getMetadata"); + assertMetadataKey(key); var metadataForKey = metadataMap[key]; if (metadataForKey === void 0) return void 0; @@ -32,10 +30,8 @@ function createMetadataMethodsForProperty(metadataMap, kind, property) { } }, setMetadata: function (key, value) { - if (typeof key !== "symbol") { - throw new TypeError("Metadata keys must be symbols, received: " + key); - } - + assertNotFinished(decoratorFinishedRef, "setMetadata"); + assertMetadataKey(key); var metadataForKey = metadataMap[key]; if (metadataForKey === void 0) { @@ -106,14 +102,15 @@ function convertMetadataMapToFinal(obj, metadataMap) { obj[Symbol.metadata || Symbol.for("Symbol.metadata")] = metadataMap; } -function createAddInitializerMethod(initializers) { +function createAddInitializerMethod(initializers, decoratorFinishedRef) { return function addInitializer(initializer) { - assertValidInitializer(initializer); + assertNotFinished(decoratorFinishedRef, "addInitializer"); + assertCallable(initializer, "An initializer"); initializers.push(initializer); }; } -function memberDecCtx(base, name, desc, metadataMap, initializers, kind, isStatic, isPrivate) { +function memberDec(dec, name, desc, metadataMap, initializers, kind, isStatic, isPrivate, value) { var kindStr; switch (kind) { @@ -143,9 +140,12 @@ function memberDecCtx(base, name, desc, metadataMap, initializers, kind, isStati isStatic: isStatic, isPrivate: isPrivate }; + var decoratorFinishedRef = { + v: false + }; if (kind !== 0) { - ctx.addInitializer = createAddInitializerMethod(initializers); + ctx.addInitializer = createAddInitializerMethod(initializers, decoratorFinishedRef); } var metadataKind, metadataName; @@ -182,12 +182,28 @@ function memberDecCtx(base, name, desc, metadataMap, initializers, kind, isStati metadataName = name; } - return Object.assign(ctx, createMetadataMethodsForProperty(metadataMap, metadataKind, metadataName)); + try { + return dec(value, Object.assign(ctx, createMetadataMethodsForProperty(metadataMap, metadataKind, metadataName, decoratorFinishedRef))); + } finally { + decoratorFinishedRef.v = true; + } } -function assertValidInitializer(initializer) { - if (typeof initializer !== "function") { - throw new Error("initializers must be functions"); +function assertNotFinished(decoratorFinishedRef, fnName) { + if (decoratorFinishedRef.v) { + throw new Error("attempted to call " + fnName + " after decoration was finished"); + } +} + +function assertMetadataKey(key) { + if (typeof key !== "symbol") { + throw new TypeError("Metadata keys must be symbols, received: " + key); + } +} + +function assertCallable(fn, hint) { + if (typeof fn !== "function") { + throw new TypeError(hint + " must be a function"); } } @@ -196,15 +212,47 @@ function assertValidReturnValue(kind, value) { if (kind === 1) { if (type !== "object" || value === null) { - throw new Error("accessor decorators must return an object with get, set, or initializer properties or void 0"); + throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); + } + + if (value.get !== undefined) { + assertCallable(value.get, "accessor.get"); + } + + if (value.set !== undefined) { + assertCallable(value.set, "accessor.set"); + } + + if (value.init !== undefined) { + assertCallable(value.init, "accessor.init"); + } + + if (value.initializer !== undefined) { + assertCallable(value.initializer, "accessor.initializer"); } } else if (type !== "function") { + var hint; + if (kind === 0) { - throw new Error("field decorators must return a initializer function or void 0"); + hint = "field"; + } else if (kind === 10) { + hint = "class"; } else { - throw new Error("method decorators must return a function or void 0"); + hint = "method"; } + + throw new TypeError(hint + " decorators must return a function or void 0"); + } +} + +function getInit(desc) { + var initializer; + + if ((initializer = desc.init) == null && (initializer = desc.initializer) && typeof console !== "undefined") { + console.warn(".initializer has been renamed to .init as of March 2022"); } + + return initializer; } function applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, metadataMap, initializers) { @@ -247,11 +295,10 @@ function applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, met value = desc.set; } - var ctx = memberDecCtx(base, name, desc, metadataMap, initializers, kind, isStatic, isPrivate); var newValue, get, set; if (typeof decs === "function") { - newValue = decs(value, ctx); + newValue = memberDec(decs, name, desc, metadataMap, initializers, kind, isStatic, isPrivate, value); if (newValue !== void 0) { assertValidReturnValue(kind, newValue); @@ -259,7 +306,7 @@ function applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, met if (kind === 0) { initializer = newValue; } else if (kind === 1) { - initializer = newValue.initializer; + initializer = getInit(newValue); get = newValue.get || value.get; set = newValue.set || value.set; value = { @@ -273,7 +320,7 @@ function applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, met } else { for (var i = decs.length - 1; i >= 0; i--) { var dec = decs[i]; - newValue = dec(value, ctx); + newValue = memberDec(dec, name, desc, metadataMap, initializers, kind, isStatic, isPrivate, value); if (newValue !== void 0) { assertValidReturnValue(kind, newValue); @@ -282,7 +329,7 @@ function applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, met if (kind === 0) { newInit = newValue; } else if (kind === 1) { - newInit = newValue.initializer; + newInit = getInit(newValue); get = newValue.get || value.get; set = newValue.set || value.set; value = { @@ -368,8 +415,8 @@ function applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, met } function applyMemberDecs(ret, Class, protoMetadataMap, staticMetadataMap, decInfos) { - var protoInitializers = []; - var staticInitializers = []; + var protoInitializers; + var staticInitializers; var existingProtoNonFields = new Map(); var existingStaticNonFields = new Map(); @@ -388,11 +435,19 @@ function applyMemberDecs(ret, Class, protoMetadataMap, staticMetadataMap, decInf base = Class; metadataMap = staticMetadataMap; kind = kind - 5; - initializers = staticInitializers; + + if (kind !== 0) { + staticInitializers = staticInitializers || []; + initializers = staticInitializers; + } } else { base = Class.prototype; metadataMap = protoMetadataMap; - initializers = protoInitializers; + + if (kind !== 0) { + protoInitializers = protoInitializers || []; + initializers = protoInitializers; + } } if (kind !== 0 && !isPrivate) { @@ -411,73 +466,65 @@ function applyMemberDecs(ret, Class, protoMetadataMap, staticMetadataMap, decInf applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, metadataMap, initializers); } - if (protoInitializers.length > 0) { - pushInitializers(ret, protoInitializers); - } - - if (staticInitializers.length > 0) { - pushInitializers(ret, staticInitializers); - } + pushInitializers(ret, protoInitializers); + pushInitializers(ret, staticInitializers); } function pushInitializers(ret, initializers) { - if (initializers.length > 0) { - initializers = initializers.slice(); + if (initializers) { ret.push(function (instance) { for (var i = 0; i < initializers.length; i++) { - initializers[i].call(instance, instance); + initializers[i].call(instance); } - return instance; - }); - } else { - ret.push(function (instance) { return instance; }); } } function applyClassDecs(ret, targetClass, metadataMap, classDecs) { - var initializers = []; - var newClass = targetClass; - var name = targetClass.name; - var ctx = Object.assign({ - kind: "class", - name: name, - addInitializer: createAddInitializerMethod(initializers) - }, createMetadataMethodsForProperty(metadataMap, 0, name)); - - for (var i = classDecs.length - 1; i >= 0; i--) { - newClass = classDecs[i](newClass, ctx) || newClass; - } + if (classDecs.length > 0) { + var initializers = []; + var newClass = targetClass; + var name = targetClass.name; + + for (var i = classDecs.length - 1; i >= 0; i--) { + var decoratorFinishedRef = { + v: false + }; + + try { + var ctx = Object.assign({ + kind: "class", + name: name, + addInitializer: createAddInitializerMethod(initializers, decoratorFinishedRef) + }, createMetadataMethodsForProperty(metadataMap, 0, name, decoratorFinishedRef)); + var nextNewClass = classDecs[i](newClass, ctx); + } finally { + decoratorFinishedRef.v = true; + } - ret.push(newClass); + if (nextNewClass !== undefined) { + assertValidReturnValue(10, nextNewClass); + newClass = nextNewClass; + } + } - if (initializers.length > 0) { - ret.push(function () { + ret.push(newClass, function () { for (var i = 0; i < initializers.length; i++) { - initializers[i].call(newClass, newClass); + initializers[i].call(newClass); } }); - } else { - ret.push(function () {}); } } function applyDecs(targetClass, memberDecs, classDecs) { var ret = []; var staticMetadataMap = {}; - - if (memberDecs) { - var protoMetadataMap = {}; - applyMemberDecs(ret, targetClass, protoMetadataMap, staticMetadataMap, memberDecs); - convertMetadataMapToFinal(targetClass.prototype, protoMetadataMap); - } - - if (classDecs) { - applyClassDecs(ret, targetClass, staticMetadataMap, classDecs); - } - + var protoMetadataMap = {}; + applyMemberDecs(ret, targetClass, protoMetadataMap, staticMetadataMap, memberDecs); + convertMetadataMapToFinal(targetClass.prototype, protoMetadataMap); + applyClassDecs(ret, targetClass, staticMetadataMap, classDecs); convertMetadataMapToFinal(targetClass, staticMetadataMap); return ret; } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/regeneratorRuntime.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/regeneratorRuntime.js new file mode 100644 index 00000000000000..225ca44bcdb9fd --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/regeneratorRuntime.js @@ -0,0 +1,587 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _regeneratorRuntime; + +function _regeneratorRuntime() { + "use strict"; + + exports.default = _regeneratorRuntime = function () { + return exports; + }; + + var exports = {}; + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined; + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + function define(obj, key, value) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + return obj[key]; + } + + try { + define({}, ""); + } catch (err) { + define = function (obj, key, value) { + return obj[key] = value; + }; + } + + function wrap(innerFn, outerFn, self, tryLocsList) { + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + generator._invoke = makeInvokeMethod(innerFn, self, context); + return generator; + } + + exports.wrap = wrap; + + function tryCatch(fn, obj, arg) { + try { + return { + type: "normal", + arg: fn.call(obj, arg) + }; + } catch (err) { + return { + type: "throw", + arg: err + }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + var ContinueSentinel = {}; + + function Generator() {} + + function GeneratorFunction() {} + + function GeneratorFunctionPrototype() {} + + var IteratorPrototype = {}; + define(IteratorPrototype, iteratorSymbol, function () { + return this; + }); + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + + if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = GeneratorFunctionPrototype; + define(Gp, "constructor", GeneratorFunctionPrototype); + define(GeneratorFunctionPrototype, "constructor", GeneratorFunction); + GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"); + + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function (method) { + define(prototype, method, function (arg) { + return this._invoke(method, arg); + }); + }); + } + + exports.isGeneratorFunction = function (genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false; + }; + + exports.mark = function (genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + define(genFun, toStringTagSymbol, "GeneratorFunction"); + } + + genFun.prototype = Object.create(Gp); + return genFun; + }; + + exports.awrap = function (arg) { + return { + __await: arg + }; + }; + + function AsyncIterator(generator, PromiseImpl) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + + if (value && typeof value === "object" && hasOwn.call(value, "__await")) { + return PromiseImpl.resolve(value.__await).then(function (value) { + invoke("next", value, resolve, reject); + }, function (err) { + invoke("throw", err, resolve, reject); + }); + } + + return PromiseImpl.resolve(value).then(function (unwrapped) { + result.value = unwrapped; + resolve(result); + }, function (error) { + return invoke("throw", error, resolve, reject); + }); + } + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new PromiseImpl(function (resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + define(AsyncIterator.prototype, asyncIteratorSymbol, function () { + return this; + }); + exports.AsyncIterator = AsyncIterator; + + exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { + if (PromiseImpl === void 0) PromiseImpl = Promise; + var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); + return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + context.sent = context._sent = context.arg; + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + var record = tryCatch(innerFn, self, context); + + if (record.type === "normal") { + state = context.done ? GenStateCompleted : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + } else if (record.type === "throw") { + state = GenStateCompleted; + context.method = "throw"; + context.arg = record.arg; + } + } + }; + } + + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + + if (method === undefined) { + context.delegate = null; + + if (context.method === "throw") { + if (delegate.iterator["return"]) { + context.method = "return"; + context.arg = undefined; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + return ContinueSentinel; + } + } + + context.method = "throw"; + context.arg = new TypeError("The iterator does not provide a 'throw' method"); + } + + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (!info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + context[delegate.resultName] = info.value; + context.next = delegate.nextLoc; + + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined; + } + } else { + return info; + } + + context.delegate = null; + return ContinueSentinel; + } + + defineIteratorMethods(Gp); + define(Gp, toStringTagSymbol, "Generator"); + define(Gp, iteratorSymbol, function () { + return this; + }); + define(Gp, "toString", function () { + return "[object Generator]"; + }); + + function pushTryEntry(locs) { + var entry = { + tryLoc: locs[0] + }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + this.tryEntries = [{ + tryLoc: "root" + }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + exports.keys = function (object) { + var keys = []; + + for (var key in object) { + keys.push(key); + } + + keys.reverse(); + return function next() { + while (keys.length) { + var key = keys.pop(); + + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, + next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + return next; + }; + + return next.next = next; + } + } + + return { + next: doneResult + }; + } + + exports.values = values; + + function doneResult() { + return { + value: undefined, + done: true + }; + } + + Context.prototype = { + constructor: Context, + reset: function (skipTempReset) { + this.prev = 0; + this.next = 0; + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + this.method = "next"; + this.arg = undefined; + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + stop: function () { + this.done = true; + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + dispatchException: function (exception) { + if (this.done) { + throw exception; + } + + var context = this; + + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + context.method = "next"; + context.arg = undefined; + } + + return !!caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + abrupt: function (type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + + if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) { + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + complete: function (record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + finish: function (finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + catch: function (tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + + return thrown; + } + } + + throw new Error("illegal catch attempt"); + }, + delegateYield: function (iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + this.arg = undefined; + } + + return ContinueSentinel; + } + }; + return exports; +} \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/index.js index 5e793d59f1451d..511c6c5b8853ca 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/index.js @@ -20,10 +20,8 @@ const { assignmentExpression, cloneNode, expressionStatement, - file: t_file, - identifier, - variableDeclaration, - variableDeclarator + file, + identifier } = _t; function makePath(path) { @@ -37,7 +35,7 @@ function makePath(path) { return parts.reverse().join("."); } -let fileClass = undefined; +let FileClass = undefined; function getHelperMetadata(file) { const globals = new Set(); @@ -68,14 +66,11 @@ function getHelperMetadata(file) { ExportDefaultDeclaration(child) { const decl = child.get("declaration"); - if (decl.isFunctionDeclaration()) { - if (!decl.node.id) { - throw decl.buildCodeFrameError("Helpers should give names to their exported func declaration"); - } - - exportName = decl.node.id.name; + if (!decl.isFunctionDeclaration() || !decl.node.id) { + throw decl.buildCodeFrameError("Helpers can only export named function declarations"); } + exportName = decl.node.id.name; exportPath = makePath(child); }, @@ -132,7 +127,7 @@ function getHelperMetadata(file) { }; (0, _traverse.default)(file.ast, dependencyVisitor, file.scope); (0, _traverse.default)(file.ast, referenceVisitor, file.scope); - if (!exportPath) throw new Error("Helpers must default-export something."); + if (!exportPath) throw new Error("Helpers must have a default export."); exportBindingAssignments.reverse(); return { globals: Array.from(globals), @@ -179,50 +174,37 @@ function permuteHelperAST(file, metadata, id, localBindings, getDependency) { toRename[exportName] = id.name; } - const visitor = { - Program(path) { - const exp = path.get(exportPath); - const imps = importPaths.map(p => path.get(p)); - const impsBindingRefs = importBindingsReferences.map(p => path.get(p)); - const decl = exp.get("declaration"); - - if (id.type === "Identifier") { - if (decl.isFunctionDeclaration()) { - exp.replaceWith(decl); - } else { - exp.replaceWith(variableDeclaration("var", [variableDeclarator(id, decl.node)])); - } - } else if (id.type === "MemberExpression") { - if (decl.isFunctionDeclaration()) { - exportBindingAssignments.forEach(assignPath => { - const assign = path.get(assignPath); - assign.replaceWith(assignmentExpression("=", id, assign.node)); - }); - exp.replaceWith(decl); - path.pushContainer("body", expressionStatement(assignmentExpression("=", id, identifier(exportName)))); - } else { - exp.replaceWith(expressionStatement(assignmentExpression("=", id, decl.node))); - } - } else { - throw new Error("Unexpected helper format."); - } - - Object.keys(toRename).forEach(name => { - path.scope.rename(name, toRename[name]); - }); - - for (const path of imps) path.remove(); + const { + path + } = file; + const exp = path.get(exportPath); + const imps = importPaths.map(p => path.get(p)); + const impsBindingRefs = importBindingsReferences.map(p => path.get(p)); + const decl = exp.get("declaration"); + + if (id.type === "Identifier") { + exp.replaceWith(decl); + } else if (id.type === "MemberExpression") { + exportBindingAssignments.forEach(assignPath => { + const assign = path.get(assignPath); + assign.replaceWith(assignmentExpression("=", id, assign.node)); + }); + exp.replaceWith(decl); + path.pushContainer("body", expressionStatement(assignmentExpression("=", id, identifier(exportName)))); + } else { + throw new Error("Unexpected helper format."); + } - for (const path of impsBindingRefs) { - const node = cloneNode(dependenciesRefs[path.node.name]); - path.replaceWith(node); - } + Object.keys(toRename).forEach(name => { + path.scope.rename(name, toRename[name]); + }); - path.stop(); - } + for (const path of imps) path.remove(); - }; - (0, _traverse.default)(file.ast, visitor, file.scope); + for (const path of impsBindingRefs) { + const node = cloneNode(dependenciesRefs[path.node.name]); + path.replaceWith(node); + } } const helperData = Object.create(null); @@ -239,23 +221,34 @@ function loadHelper(name) { } const fn = () => { - const file = { - ast: t_file(helper.ast()) - }; - - if (fileClass) { - return new fileClass({ - filename: `babel-helper://${name}` - }, file); + { + if (!FileClass) { + const fakeFile = { + ast: file(helper.ast()), + path: null + }; + (0, _traverse.default)(fakeFile.ast, { + Program: path => (fakeFile.path = path).stop() + }); + return fakeFile; + } } - - return file; + return new FileClass({ + filename: `babel-helper://${name}` + }, { + ast: file(helper.ast()), + code: "[internal Babel helper code]", + inputMap: null + }); }; - const metadata = getHelperMetadata(fn()); + let metadata = null; helperData[name] = { + minVersion: helper.minVersion, + build(getDependency, id, localBindings) { const file = fn(); + metadata || (metadata = getHelperMetadata(file)); permuteHelperAST(file, metadata, id, localBindings, getDependency); return { nodes: file.ast.program.body, @@ -263,11 +256,11 @@ function loadHelper(name) { }; }, - minVersion() { - return helper.minVersion; - }, + getDependencies() { + metadata || (metadata = getHelperMetadata(fn())); + return Array.from(metadata.dependencies.values()); + } - dependencies: metadata.dependencies }; } @@ -279,18 +272,15 @@ function get(name, getDependency, id, localBindings) { } function minVersion(name) { - return loadHelper(name).minVersion(); + return loadHelper(name).minVersion; } function getDependencies(name) { - return Array.from(loadHelper(name).dependencies.values()); + return loadHelper(name).getDependencies(); } function ensure(name, newFileClass) { - if (!fileClass) { - fileClass = newFileClass; - } - + FileClass || (FileClass = newFileClass); loadHelper(name); } diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/package.json b/tools/node_modules/eslint/node_modules/@babel/helpers/package.json index 95203cd51a3efa..551043c0f077a4 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helpers/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/helpers/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helpers", - "version": "7.17.2", + "version": "7.18.6", "description": "Collection of helper functions used by Babel transforms.", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-helpers", @@ -15,15 +15,19 @@ }, "main": "./lib/index.js", "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.6", + "@babel/types": "^7.18.6" }, "devDependencies": { - "@babel/helper-plugin-test-runner": "^7.16.7", + "@babel/generator": "^7.18.6", + "@babel/helper-plugin-test-runner": "^7.18.6", + "@babel/parser": "^7.18.6", + "regenerator-runtime": "^0.13.9", "terser": "^5.9.0" }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/generate-helpers.js b/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/generate-helpers.js index 1c59746df9c32f..e0b37019320fd5 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/generate-helpers.js +++ b/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/generate-helpers.js @@ -1,7 +1,7 @@ import fs from "fs"; import { join } from "path"; import { URL, fileURLToPath } from "url"; -import { minify } from "terser"; // eslint-disable-line +import { minify } from "terser"; // eslint-disable-line import/no-extraneous-dependencies const HELPERS_FOLDER = new URL("../src/helpers", import.meta.url); const IGNORED_FILES = new Set(["package.json"]); @@ -14,10 +14,10 @@ export default async function generateHelpers() { import template from "@babel/template"; -function helper(minVersion, source) { +function helper(minVersion: string, source: string) { return Object.freeze({ minVersion, - ast: () => template.program.ast(source), + ast: () => template.program.ast(source, { preserveComments: true }), }) } diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/generate-regenerator-runtime.js b/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/generate-regenerator-runtime.js new file mode 100644 index 00000000000000..91694b2cd9f28a --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/generate-regenerator-runtime.js @@ -0,0 +1,64 @@ +/* eslint-disable import/no-extraneous-dependencies */ + +import fs from "fs"; +import { createRequire } from "module"; + +const [parse, generate] = await Promise.all([ + import("@babel/parser").then(ns => ns.parse), + import("@babel/generator").then(ns => ns.default.default), +]).catch(error => + Promise.reject( + new Error( + "Before running generate-helpers.js you must compile @babel/parser and @babel/generator.", + { cause: error } + ) + ) +); + +const REGENERATOR_RUNTIME_IN_FILE = fs.readFileSync( + createRequire(import.meta.url).resolve("regenerator-runtime"), + "utf8" +); + +const MIN_VERSION = "7.18.0"; + +const HEADER = `/* @minVersion ${MIN_VERSION} */ +/* + * This file is auto-generated! Do not modify it directly. + * To re-generate, update the regenerator-runtime dependency of + * @babel/helpers and run 'yarn gulp generate-runtime-helpers'. + */ + +/* eslint-disable */ +`; + +const COPYRIGHT = `/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */`; + +export default function generateRegeneratorRuntimeHelper() { + const ast = parse(REGENERATOR_RUNTIME_IN_FILE, { sourceType: "script" }); + + const factoryFunction = ast.program.body[0].declarations[0].init.callee; + factoryFunction.type = "FunctionDeclaration"; + factoryFunction.id = { type: "Identifier", name: "_regeneratorRuntime" }; + factoryFunction.params = []; + factoryFunction.body.body.unshift( + ...stmts(` + ${COPYRIGHT} + _regeneratorRuntime = function () { return exports; }; + var exports = {}; + `) + ); + + const { code } = generate({ + type: "ExportDefaultDeclaration", + declaration: factoryFunction, + }); + + return HEADER + code; +} + +function stmts(code) { + return parse(`function _() { ${code} }`, { + sourceType: "script", + }).program.body[0].body.body; +} diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/highlight/lib/index.js index d323b399c41806..856dfd9fb801d6 100644 --- a/tools/node_modules/eslint/node_modules/@babel/highlight/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/highlight/lib/index.js @@ -41,7 +41,7 @@ let tokenize; return "keyword"; } - if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == "=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/parser/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/parser/lib/index.js index b9559112d63e93..325d982a9ad6ed 100644 --- a/tools/node_modules/eslint/node_modules/@babel/parser/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/parser/lib/index.js @@ -2,489 +2,424 @@ Object.defineProperty(exports, '__esModule', { value: true }); -class BaseParser { - constructor() { - this.sawUnambiguousESM = false; - this.ambiguousScriptDifferentAst = false; - } - - hasPlugin(pluginConfig) { - if (typeof pluginConfig === "string") { - return this.plugins.has(pluginConfig); - } else { - const [pluginName, pluginOptions] = pluginConfig; - - if (!this.hasPlugin(pluginName)) { - return false; - } - - const actualOptions = this.plugins.get(pluginName); - - for (const key of Object.keys(pluginOptions)) { - if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) { - return false; - } - } +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; - return true; - } + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; } - getPluginOption(plugin, name) { - var _this$plugins$get; - - return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name]; - } - -} - -function setTrailingComments(node, comments) { - if (node.trailingComments === undefined) { - node.trailingComments = comments; - } else { - node.trailingComments.unshift(...comments); - } + return target; } -function setLeadingComments(node, comments) { - if (node.leadingComments === undefined) { - node.leadingComments = comments; - } else { - node.leadingComments.unshift(...comments); +class Position { + constructor(line, col, index) { + this.line = void 0; + this.column = void 0; + this.index = void 0; + this.line = line; + this.column = col; + this.index = index; } -} -function setInnerComments(node, comments) { - if (node.innerComments === undefined) { - node.innerComments = comments; - } else { - node.innerComments.unshift(...comments); - } } - -function adjustInnerComments(node, elements, commentWS) { - let lastElement = null; - let i = elements.length; - - while (lastElement === null && i > 0) { - lastElement = elements[--i]; +class SourceLocation { + constructor(start, end) { + this.start = void 0; + this.end = void 0; + this.filename = void 0; + this.identifierName = void 0; + this.start = start; + this.end = end; } - if (lastElement === null || lastElement.start > commentWS.start) { - setInnerComments(node, commentWS.comments); - } else { - setTrailingComments(lastElement, commentWS.comments); - } } - -class CommentsParser extends BaseParser { - addComment(comment) { - if (this.filename) comment.loc.filename = this.filename; - this.state.comments.push(comment); - } - - processComment(node) { - const { - commentStack - } = this.state; - const commentStackLength = commentStack.length; - if (commentStackLength === 0) return; - let i = commentStackLength - 1; - const lastCommentWS = commentStack[i]; - - if (lastCommentWS.start === node.end) { - lastCommentWS.leadingNode = node; - i--; - } - - const { - start: nodeStart - } = node; - - for (; i >= 0; i--) { - const commentWS = commentStack[i]; - const commentEnd = commentWS.end; - - if (commentEnd > nodeStart) { - commentWS.containingNode = node; - this.finalizeComment(commentWS); - commentStack.splice(i, 1); - } else { - if (commentEnd === nodeStart) { - commentWS.trailingNode = node; - } - - break; - } - } - } - - finalizeComment(commentWS) { - const { - comments - } = commentWS; - - if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) { - if (commentWS.leadingNode !== null) { - setTrailingComments(commentWS.leadingNode, comments); - } - - if (commentWS.trailingNode !== null) { - setLeadingComments(commentWS.trailingNode, comments); - } - } else { - const { - containingNode: node, - start: commentStart - } = commentWS; - - if (this.input.charCodeAt(commentStart - 1) === 44) { - switch (node.type) { - case "ObjectExpression": - case "ObjectPattern": - case "RecordExpression": - adjustInnerComments(node, node.properties, commentWS); - break; - - case "CallExpression": - case "OptionalCallExpression": - adjustInnerComments(node, node.arguments, commentWS); - break; - - case "FunctionDeclaration": - case "FunctionExpression": - case "ArrowFunctionExpression": - case "ObjectMethod": - case "ClassMethod": - case "ClassPrivateMethod": - adjustInnerComments(node, node.params, commentWS); - break; - - case "ArrayExpression": - case "ArrayPattern": - case "TupleExpression": - adjustInnerComments(node, node.elements, commentWS); - break; - - case "ExportNamedDeclaration": - case "ImportDeclaration": - adjustInnerComments(node, node.specifiers, commentWS); - break; - - default: - { - setInnerComments(node, comments); - } - } - } else { - setInnerComments(node, comments); - } - } - } - - finalizeRemainingComments() { - const { - commentStack - } = this.state; - - for (let i = commentStack.length - 1; i >= 0; i--) { - this.finalizeComment(commentStack[i]); - } - - this.state.commentStack = []; - } - - resetPreviousNodeTrailingComments(node) { - const { - commentStack - } = this.state; - const { - length - } = commentStack; - if (length === 0) return; - const commentWS = commentStack[length - 1]; - - if (commentWS.leadingNode === node) { - commentWS.leadingNode = null; - } - } - - takeSurroundingComments(node, start, end) { - const { - commentStack - } = this.state; - const commentStackLength = commentStack.length; - if (commentStackLength === 0) return; - let i = commentStackLength - 1; - - for (; i >= 0; i--) { - const commentWS = commentStack[i]; - const commentEnd = commentWS.end; - const commentStart = commentWS.start; - - if (commentStart === end) { - commentWS.leadingNode = node; - } else if (commentEnd === start) { - commentWS.trailingNode = node; - } else if (commentEnd < start) { - break; - } - } - } - +function createPositionWithColumnOffset(position, columnOffset) { + const { + line, + column, + index + } = position; + return new Position(line, column + columnOffset, index + columnOffset); } -const ErrorCodes = Object.freeze({ +const ParseErrorCodes = Object.freeze({ SyntaxError: "BABEL_PARSER_SYNTAX_ERROR", SourceTypeModuleError: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED" }); -const ErrorMessages = makeErrorTemplates({ - AccessorIsGenerator: "A %0ter cannot be a generator.", - ArgumentsInClass: "'arguments' is only allowed in functions and class methods.", - AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.", - AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.", - AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.", - AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.", - AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.", - AwaitNotInAsyncFunction: "'await' is only allowed within async functions.", - BadGetterArity: "A 'get' accesor must not have any formal parameters.", - BadSetterArity: "A 'set' accesor must have exactly one formal parameter.", - BadSetterRestParameter: "A 'set' accesor function argument must not be a rest parameter.", - ConstructorClassField: "Classes may not have a field named 'constructor'.", - ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.", - ConstructorIsAccessor: "Class constructor may not be an accessor.", - ConstructorIsAsync: "Constructor can't be an async function.", - ConstructorIsGenerator: "Constructor can't be a generator.", - DeclarationMissingInitializer: "'%0' require an initialization value.", - DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax.", - DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?", - DecoratorExportClass: "Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.", - DecoratorSemicolon: "Decorators must not be followed by a semicolon.", - DecoratorStaticBlock: "Decorators can't be used with a static block.", - DeletePrivateField: "Deleting a private field is not allowed.", - DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.", - DuplicateConstructor: "Duplicate constructor in the same class.", - DuplicateDefaultExport: "Only one default export allowed per module.", - DuplicateExport: "`%0` has already been exported. Exported identifiers must be unique.", - DuplicateProto: "Redefinition of __proto__ property.", - DuplicateRegExpFlags: "Duplicate regular expression flag.", - ElementAfterRest: "Rest element must be last element.", - EscapedCharNotAnIdentifier: "Invalid Unicode escape.", - ExportBindingIsString: "A string literal cannot be used as an exported binding without `from`.\n- Did you mean `export { '%0' as '%1' } from 'some-module'`?", - ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.", - ForInOfLoopInitializer: "'%0' loop variable declaration may not have an initializer.", - ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.", - ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.", - GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.", - IllegalBreakContinue: "Unsyntactic %0.", - IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.", - IllegalReturn: "'return' outside of function.", - ImportBindingIsString: 'A string literal cannot be used as an imported binding.\n- Did you mean `import { "%0" as foo }`?', - ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.", - ImportCallArity: "`import()` requires exactly %0.", - ImportCallNotNewExpression: "Cannot use new with import(...).", - ImportCallSpreadArgument: "`...` is not allowed in `import()`.", - IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.", - InvalidBigIntLiteral: "Invalid BigIntLiteral.", - InvalidCodePoint: "Code point out of bounds.", - InvalidCoverInitializedName: "Invalid shorthand property initializer.", - InvalidDecimal: "Invalid decimal.", - InvalidDigit: "Expected number in radix %0.", - InvalidEscapeSequence: "Bad character escape sequence.", - InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.", - InvalidEscapedReservedWord: "Escape sequence in keyword %0.", - InvalidIdentifier: "Invalid identifier %0.", - InvalidLhs: "Invalid left-hand side in %0.", - InvalidLhsBinding: "Binding invalid left-hand side in %0.", - InvalidNumber: "Invalid number.", - InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.", - InvalidOrUnexpectedToken: "Unexpected character '%0'.", - InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.", - InvalidPrivateFieldResolution: "Private name #%0 is not defined.", - InvalidPropertyBindingPattern: "Binding member expression.", - InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.", - InvalidRestAssignmentPattern: "Invalid rest operator's argument.", - LabelRedeclaration: "Label '%0' is already declared.", - LetInLexicalBinding: "'let' is not allowed to be used as a name in 'let' or 'const' declarations.", - LineTerminatorBeforeArrow: "No line break is allowed before '=>'.", - MalformedRegExpFlags: "Invalid regular expression flag.", - MissingClassName: "A class name is required.", - MissingEqInAssignment: "Only '=' operator can be used for specifying default value.", - MissingSemicolon: "Missing semicolon.", - MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.", - MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.", - ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.", - ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.", - ModuleAttributesWithDuplicateKeys: 'Duplicate key "%0" is not allowed in module attributes.', - ModuleExportNameHasLoneSurrogate: "An export name cannot include a lone surrogate, found '\\u%0'.", - ModuleExportUndefined: "Export '%0' is not defined.", - MultipleDefaultsInSwitch: "Multiple default clauses.", - NewlineAfterThrow: "Illegal newline after throw.", - NoCatchOrFinally: "Missing catch or finally clause.", - NumberIdentifier: "Identifier directly after number.", - NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.", - ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.", - OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.", - OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.", - OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.", - ParamDupe: "Argument name clash.", - PatternHasAccessor: "Object pattern can't contain getter or setter.", - PatternHasMethod: "Object pattern can't contain methods.", - PipeBodyIsTighter: "Unexpected %0 after pipeline body; any %0 expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.", - PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', - PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.", - PipeTopicUnconfiguredToken: 'Invalid topic token %0. In order to use %0 as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "%0" }.', - PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.", - PipeUnparenthesizedBody: "Hack-style pipe body cannot be an unparenthesized %0 expression; please wrap it in parentheses.", - PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.', - PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.", - PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.", - PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.", - PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.", - PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', - PrivateInExpectedIn: "Private names are only allowed in property accesses (`obj.#%0`) or in `in` expressions (`#%0 in obj`).", - PrivateNameRedeclaration: "Duplicate private name #%0.", - RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", - RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", - RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", - RecordNoProto: "'__proto__' is not allowed in Record expressions.", - RestTrailingComma: "Unexpected trailing comma after rest element.", - SloppyFunction: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.", - StaticPrototype: "Classes may not have static property named prototype.", - StrictDelete: "Deleting local variable in strict mode.", - StrictEvalArguments: "Assigning to '%0' in strict mode.", - StrictEvalArgumentsBinding: "Binding '%0' in strict mode.", - StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.", - StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.", - StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.", - StrictWith: "'with' in strict mode.", - SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?", - SuperPrivateField: "Private fields can't be accessed on super.", - TrailingDecorator: "Decorators must be attached to a class element.", - TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", - TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", - TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", - UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.", - UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.', - UnexpectedDigitAfterHash: "Unexpected digit after hash token.", - UnexpectedImportExport: "'import' and 'export' may only appear at the top level.", - UnexpectedKeyword: "Unexpected keyword '%0'.", - UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.", - UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.", - UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.", - UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.", - UnexpectedPrivateField: "Unexpected private name.", - UnexpectedReservedWord: "Unexpected reserved word '%0'.", - UnexpectedSuper: "'super' is only allowed in object methods and classes.", - UnexpectedToken: "Unexpected token '%0'.", - UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.", - UnsupportedBind: "Binding should be performed on object property.", - UnsupportedDecoratorExport: "A decorated export must export a class declaration.", - UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.", - UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.", - UnsupportedMetaProperty: "The only valid meta property for %0 is %0.%1.", - UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.", - UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.", - UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).", - UnterminatedComment: "Unterminated comment.", - UnterminatedRegExp: "Unterminated regular expression.", - UnterminatedString: "Unterminated string constant.", - UnterminatedTemplate: "Unterminated template.", - VarRedeclaration: "Identifier '%0' has already been declared.", - YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.", - YieldInParameter: "Yield expression is not allowed in formal parameters.", - ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0." -}, ErrorCodes.SyntaxError); -const SourceTypeModuleErrorMessages = makeErrorTemplates({ - ImportMetaOutsideModule: `import.meta may appear only with 'sourceType: "module"'`, - ImportOutsideModule: `'import' and 'export' may appear only with 'sourceType: "module"'` -}, ErrorCodes.SourceTypeModuleError); - -function keepReasonCodeCompat(reasonCode, syntaxPlugin) { - { - if (syntaxPlugin === "flow" && reasonCode === "PatternIsOptional") { - return "OptionalBindingPattern"; - } - } - return reasonCode; -} +const reflect = (keys, last = keys.length - 1) => ({ + get() { + return keys.reduce((object, key) => object[key], this); + }, -function makeErrorTemplates(messages, code, syntaxPlugin) { - const templates = {}; - Object.keys(messages).forEach(reasonCode => { - templates[reasonCode] = Object.freeze({ - code, - reasonCode: keepReasonCodeCompat(reasonCode, syntaxPlugin), - template: messages[reasonCode] - }); - }); - return Object.freeze(templates); -} -class ParserError extends CommentsParser { - raise({ - code, - reasonCode, - template - }, origin, ...params) { - return this.raiseWithData(origin.node ? origin.node.loc.start : origin.at, { - code, - reasonCode - }, template, ...params); + set(value) { + keys.reduce((item, key, i) => i === last ? item[key] = value : item[key], this); } - raiseOverwrite(loc, { - code, - template - }, ...params) { - const pos = loc.index; - const message = template.replace(/%(\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`; +}); - if (this.options.errorRecovery) { - const errors = this.state.errors; +const instantiate = (constructor, properties, descriptors) => Object.keys(descriptors).map(key => [key, descriptors[key]]).filter(([, descriptor]) => !!descriptor).map(([key, descriptor]) => [key, typeof descriptor === "function" ? { + value: descriptor, + enumerable: false +} : typeof descriptor.reflect === "string" ? Object.assign({}, descriptor, reflect(descriptor.reflect.split("."))) : descriptor]).reduce((instance, [key, descriptor]) => Object.defineProperty(instance, key, Object.assign({ + configurable: true +}, descriptor)), Object.assign(new constructor(), properties)); - for (let i = errors.length - 1; i >= 0; i--) { - const error = errors[i]; +var ModuleErrors = (_ => ({ + ImportMetaOutsideModule: _(`import.meta may appear only with 'sourceType: "module"'`, { + code: ParseErrorCodes.SourceTypeModuleError + }), + ImportOutsideModule: _(`'import' and 'export' may appear only with 'sourceType: "module"'`, { + code: ParseErrorCodes.SourceTypeModuleError + }) +})); + +const NodeDescriptions = { + ArrayPattern: "array destructuring pattern", + AssignmentExpression: "assignment expression", + AssignmentPattern: "assignment expression", + ArrowFunctionExpression: "arrow function expression", + ConditionalExpression: "conditional expression", + ForOfStatement: "for-of statement", + ForInStatement: "for-in statement", + ForStatement: "for-loop", + FormalParameters: "function parameter list", + Identifier: "identifier", + ObjectPattern: "object destructuring pattern", + ParenthesizedExpression: "parenthesized expression", + RestElement: "rest element", + UpdateExpression: { + true: "prefix operation", + false: "postfix operation" + }, + VariableDeclarator: "variable declaration", + YieldExpression: "yield expression" +}; - if (error.pos === pos) { - return Object.assign(error, { - message +const toNodeDescription = ({ + type, + prefix +}) => type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[String(prefix)] : NodeDescriptions[type]; + +var StandardErrors = (_ => ({ + AccessorIsGenerator: _(({ + kind + }) => `A ${kind}ter cannot be a generator.`), + ArgumentsInClass: _("'arguments' is only allowed in functions and class methods."), + AsyncFunctionInSingleStatementContext: _("Async functions can only be declared at the top level or inside a block."), + AwaitBindingIdentifier: _("Can not use 'await' as identifier inside an async function."), + AwaitBindingIdentifierInStaticBlock: _("Can not use 'await' as identifier inside a static block."), + AwaitExpressionFormalParameter: _("'await' is not allowed in async function parameters."), + AwaitNotInAsyncContext: _("'await' is only allowed within async functions and at the top levels of modules."), + AwaitNotInAsyncFunction: _("'await' is only allowed within async functions."), + BadGetterArity: _("A 'get' accesor must not have any formal parameters."), + BadSetterArity: _("A 'set' accesor must have exactly one formal parameter."), + BadSetterRestParameter: _("A 'set' accesor function argument must not be a rest parameter."), + ConstructorClassField: _("Classes may not have a field named 'constructor'."), + ConstructorClassPrivateField: _("Classes may not have a private field named '#constructor'."), + ConstructorIsAccessor: _("Class constructor may not be an accessor."), + ConstructorIsAsync: _("Constructor can't be an async function."), + ConstructorIsGenerator: _("Constructor can't be a generator."), + DeclarationMissingInitializer: _(({ + kind + }) => `Missing initializer in ${kind} declaration.`), + DecoratorBeforeExport: _("Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax."), + DecoratorConstructor: _("Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?"), + DecoratorExportClass: _("Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead."), + DecoratorSemicolon: _("Decorators must not be followed by a semicolon."), + DecoratorStaticBlock: _("Decorators can't be used with a static block."), + DeletePrivateField: _("Deleting a private field is not allowed."), + DestructureNamedImport: _("ES2015 named imports do not destructure. Use another statement for destructuring after the import."), + DuplicateConstructor: _("Duplicate constructor in the same class."), + DuplicateDefaultExport: _("Only one default export allowed per module."), + DuplicateExport: _(({ + exportName + }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`), + DuplicateProto: _("Redefinition of __proto__ property."), + DuplicateRegExpFlags: _("Duplicate regular expression flag."), + ElementAfterRest: _("Rest element must be last element."), + EscapedCharNotAnIdentifier: _("Invalid Unicode escape."), + ExportBindingIsString: _(({ + localName, + exportName + }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`), + ExportDefaultFromAsIdentifier: _("'from' is not allowed as an identifier after 'export default'."), + ForInOfLoopInitializer: _(({ + type + }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`), + ForOfAsync: _("The left-hand side of a for-of loop may not be 'async'."), + ForOfLet: _("The left-hand side of a for-of loop may not start with 'let'."), + GeneratorInSingleStatementContext: _("Generators can only be declared at the top level or inside a block."), + IllegalBreakContinue: _(({ + type + }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`), + IllegalLanguageModeDirective: _("Illegal 'use strict' directive in function with non-simple parameter list."), + IllegalReturn: _("'return' outside of function."), + ImportBindingIsString: _(({ + importName + }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`), + ImportCallArgumentTrailingComma: _("Trailing comma is disallowed inside import(...) arguments."), + ImportCallArity: _(({ + maxArgumentCount + }) => `\`import()\` requires exactly ${maxArgumentCount === 1 ? "one argument" : "one or two arguments"}.`), + ImportCallNotNewExpression: _("Cannot use new with import(...)."), + ImportCallSpreadArgument: _("`...` is not allowed in `import()`."), + ImportJSONBindingNotDefault: _("A JSON module can only be imported with `default`."), + IncompatibleRegExpUVFlags: _("The 'u' and 'v' regular expression flags cannot be enabled at the same time."), + InvalidBigIntLiteral: _("Invalid BigIntLiteral."), + InvalidCodePoint: _("Code point out of bounds."), + InvalidCoverInitializedName: _("Invalid shorthand property initializer."), + InvalidDecimal: _("Invalid decimal."), + InvalidDigit: _(({ + radix + }) => `Expected number in radix ${radix}.`), + InvalidEscapeSequence: _("Bad character escape sequence."), + InvalidEscapeSequenceTemplate: _("Invalid escape sequence in template."), + InvalidEscapedReservedWord: _(({ + reservedWord + }) => `Escape sequence in keyword ${reservedWord}.`), + InvalidIdentifier: _(({ + identifierName + }) => `Invalid identifier ${identifierName}.`), + InvalidLhs: _(({ + ancestor + }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`), + InvalidLhsBinding: _(({ + ancestor + }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`), + InvalidNumber: _("Invalid number."), + InvalidOrMissingExponent: _("Floating-point numbers require a valid exponent after the 'e'."), + InvalidOrUnexpectedToken: _(({ + unexpected + }) => `Unexpected character '${unexpected}'.`), + InvalidParenthesizedAssignment: _("Invalid parenthesized assignment pattern."), + InvalidPrivateFieldResolution: _(({ + identifierName + }) => `Private name #${identifierName} is not defined.`), + InvalidPropertyBindingPattern: _("Binding member expression."), + InvalidRecordProperty: _("Only properties and spread elements are allowed in record definitions."), + InvalidRestAssignmentPattern: _("Invalid rest operator's argument."), + LabelRedeclaration: _(({ + labelName + }) => `Label '${labelName}' is already declared.`), + LetInLexicalBinding: _("'let' is not allowed to be used as a name in 'let' or 'const' declarations."), + LineTerminatorBeforeArrow: _("No line break is allowed before '=>'."), + MalformedRegExpFlags: _("Invalid regular expression flag."), + MissingClassName: _("A class name is required."), + MissingEqInAssignment: _("Only '=' operator can be used for specifying default value."), + MissingSemicolon: _("Missing semicolon."), + MissingPlugin: _(({ + missingPlugin + }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`), + MissingOneOfPlugins: _(({ + missingPlugin + }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`), + MissingUnicodeEscape: _("Expecting Unicode escape sequence \\uXXXX."), + MixingCoalesceWithLogical: _("Nullish coalescing operator(??) requires parens when mixing with logical operators."), + ModuleAttributeDifferentFromType: _("The only accepted module attribute is `type`."), + ModuleAttributeInvalidValue: _("Only string literals are allowed as module attribute values."), + ModuleAttributesWithDuplicateKeys: _(({ + key + }) => `Duplicate key "${key}" is not allowed in module attributes.`), + ModuleExportNameHasLoneSurrogate: _(({ + surrogateCharCode + }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`), + ModuleExportUndefined: _(({ + localName + }) => `Export '${localName}' is not defined.`), + MultipleDefaultsInSwitch: _("Multiple default clauses."), + NewlineAfterThrow: _("Illegal newline after throw."), + NoCatchOrFinally: _("Missing catch or finally clause."), + NumberIdentifier: _("Identifier directly after number."), + NumericSeparatorInEscapeSequence: _("Numeric separators are not allowed inside unicode escape sequences or hex escape sequences."), + ObsoleteAwaitStar: _("'await*' has been removed from the async functions proposal. Use Promise.all() instead."), + OptionalChainingNoNew: _("Constructors in/after an Optional Chain are not allowed."), + OptionalChainingNoTemplate: _("Tagged Template Literals are not allowed in optionalChain."), + OverrideOnConstructor: _("'override' modifier cannot appear on a constructor declaration."), + ParamDupe: _("Argument name clash."), + PatternHasAccessor: _("Object pattern can't contain getter or setter."), + PatternHasMethod: _("Object pattern can't contain methods."), + PrivateInExpectedIn: _(({ + identifierName + }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`), + PrivateNameRedeclaration: _(({ + identifierName + }) => `Duplicate private name #${identifierName}.`), + RecordExpressionBarIncorrectEndSyntaxType: _("Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'."), + RecordExpressionBarIncorrectStartSyntaxType: _("Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'."), + RecordExpressionHashIncorrectStartSyntaxType: _("Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'."), + RecordNoProto: _("'__proto__' is not allowed in Record expressions."), + RestTrailingComma: _("Unexpected trailing comma after rest element."), + SloppyFunction: _("In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement."), + StaticPrototype: _("Classes may not have static property named prototype."), + SuperNotAllowed: _("`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?"), + SuperPrivateField: _("Private fields can't be accessed on super."), + TrailingDecorator: _("Decorators must be attached to a class element."), + TupleExpressionBarIncorrectEndSyntaxType: _("Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'."), + TupleExpressionBarIncorrectStartSyntaxType: _("Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'."), + TupleExpressionHashIncorrectStartSyntaxType: _("Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'."), + UnexpectedArgumentPlaceholder: _("Unexpected argument placeholder."), + UnexpectedAwaitAfterPipelineBody: _('Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.'), + UnexpectedDigitAfterHash: _("Unexpected digit after hash token."), + UnexpectedImportExport: _("'import' and 'export' may only appear at the top level."), + UnexpectedKeyword: _(({ + keyword + }) => `Unexpected keyword '${keyword}'.`), + UnexpectedLeadingDecorator: _("Leading decorators must be attached to a class declaration."), + UnexpectedLexicalDeclaration: _("Lexical declaration cannot appear in a single-statement context."), + UnexpectedNewTarget: _("`new.target` can only be used in functions or class properties."), + UnexpectedNumericSeparator: _("A numeric separator is only allowed between two digits."), + UnexpectedPrivateField: _("Unexpected private name."), + UnexpectedReservedWord: _(({ + reservedWord + }) => `Unexpected reserved word '${reservedWord}'.`), + UnexpectedSuper: _("'super' is only allowed in object methods and classes."), + UnexpectedToken: _(({ + expected, + unexpected + }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`), + UnexpectedTokenUnaryExponentiation: _("Illegal expression. Wrap left hand side or entire exponentiation in parentheses."), + UnsupportedBind: _("Binding should be performed on object property."), + UnsupportedDecoratorExport: _("A decorated export must export a class declaration."), + UnsupportedDefaultExport: _("Only expressions, functions or classes are allowed as the `default` export."), + UnsupportedImport: _("`import` can only be used in `import()` or `import.meta`."), + UnsupportedMetaProperty: _(({ + target, + onlyValidPropertyName + }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`), + UnsupportedParameterDecorator: _("Decorators cannot be used to decorate parameters."), + UnsupportedPropertyDecorator: _("Decorators cannot be used to decorate object literal properties."), + UnsupportedSuper: _("'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop])."), + UnterminatedComment: _("Unterminated comment."), + UnterminatedRegExp: _("Unterminated regular expression."), + UnterminatedString: _("Unterminated string constant."), + UnterminatedTemplate: _("Unterminated template."), + VarRedeclaration: _(({ + identifierName + }) => `Identifier '${identifierName}' has already been declared.`), + YieldBindingIdentifier: _("Can not use 'yield' as identifier inside a generator."), + YieldInParameter: _("Yield expression is not allowed in formal parameters."), + ZeroDigitNumericSeparator: _("Numeric separator can not be used after leading 0.") +})); + +var StrictModeErrors = (_ => ({ + StrictDelete: _("Deleting local variable in strict mode."), + StrictEvalArguments: _(({ + referenceName + }) => `Assigning to '${referenceName}' in strict mode.`), + StrictEvalArgumentsBinding: _(({ + bindingName + }) => `Binding '${bindingName}' in strict mode.`), + StrictFunction: _("In strict mode code, functions can only be declared at top level or inside a block."), + StrictNumericEscape: _("The only valid numeric escape in strict mode is '\\0'."), + StrictOctalLiteral: _("Legacy octal literals are not allowed in strict mode."), + StrictWith: _("'with' in strict mode.") +})); + +const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]); +var PipelineOperatorErrors = (_ => ({ + PipeBodyIsTighter: _("Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence."), + PipeTopicRequiresHackPipes: _('Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.'), + PipeTopicUnbound: _("Topic reference is unbound; it must be inside a pipe body."), + PipeTopicUnconfiguredToken: _(({ + token + }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`), + PipeTopicUnused: _("Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once."), + PipeUnparenthesizedBody: _(({ + type + }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({ + type + })}; please wrap it in parentheses.`), + PipelineBodyNoArrow: _('Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.'), + PipelineBodySequenceExpression: _("Pipeline body may not be a comma-separated sequence expression."), + PipelineHeadSequenceExpression: _("Pipeline head should not be a comma-separated sequence expression."), + PipelineTopicUnused: _("Pipeline is in topic style but does not use topic reference."), + PrimaryTopicNotAllowed: _("Topic reference was used in a lexical context without topic binding."), + PrimaryTopicRequiresSmartPipeline: _('Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.') +})); + +const _excluded$1 = ["toMessage"]; + +function toParseErrorConstructor(_ref) { + let { + toMessage + } = _ref, + properties = _objectWithoutPropertiesLoose(_ref, _excluded$1); + + return function constructor({ + loc, + details + }) { + return instantiate(SyntaxError, Object.assign({}, properties, { + loc + }), { + clone(overrides = {}) { + const loc = overrides.loc || {}; + return constructor({ + loc: new Position("line" in loc ? loc.line : this.loc.line, "column" in loc ? loc.column : this.loc.column, "index" in loc ? loc.index : this.loc.index), + details: Object.assign({}, this.details, overrides.details) + }); + }, + + details: { + value: details, + enumerable: false + }, + message: { + get() { + return `${toMessage(this.details)} (${this.loc.line}:${this.loc.column})`; + }, + + set(value) { + Object.defineProperty(this, "message", { + value }); - } else if (error.pos < pos) { - break; } - } - } - return this._raise({ - code, - loc, - pos - }, message); - } + }, + pos: { + reflect: "loc.index", + enumerable: true + }, + missingPlugin: "missingPlugin" in details && { + reflect: "details.missingPlugin", + enumerable: true + } + }); + }; +} - raiseWithData(loc, data, errorTemplate, ...params) { - const pos = loc.index; - const message = errorTemplate.replace(/%(\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`; - return this._raise(Object.assign({ - loc, - pos - }, data), message); +function toParseErrorCredentials(toMessageOrMessage, credentials) { + return Object.assign({ + toMessage: typeof toMessageOrMessage === "string" ? () => toMessageOrMessage : toMessageOrMessage + }, credentials); +} +function ParseErrorEnum(argument, syntaxPlugin) { + if (Array.isArray(argument)) { + return toParseErrorCredentialsMap => ParseErrorEnum(toParseErrorCredentialsMap, argument[0]); } - _raise(errorContext, message) { - const err = new SyntaxError(message); - Object.assign(err, errorContext); + const partialCredentials = argument(toParseErrorCredentials); + const ParseErrorConstructors = {}; - if (this.options.errorRecovery) { - if (!this.isLookahead) this.state.errors.push(err); - return err; - } else { - throw err; - } + for (const reasonCode of Object.keys(partialCredentials)) { + ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({ + code: ParseErrorCodes.SyntaxError, + reasonCode + }, syntaxPlugin ? { + syntaxPlugin + } : {}, partialCredentials[reasonCode])); } + return ParseErrorConstructors; } +const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors)); const { defineProperty @@ -496,8 +431,8 @@ const toUnenumerable = (object, key) => defineProperty(object, key, { }); function toESTreeLocation(node) { - toUnenumerable(node.loc.start, "index"); - toUnenumerable(node.loc.end, "index"); + node.loc.start && toUnenumerable(node.loc.start, "index"); + node.loc.end && toUnenumerable(node.loc.end, "index"); return node; } @@ -734,6 +669,10 @@ var estree = (superClass => class extends superClass { return node; } + isValidLVal(type, ...rest) { + return type === "Property" ? "value" : super.isValidLVal(type, ...rest); + } + isAssignable(node, isBinding) { if (node != null && this.isObjectProperty(node)) { return this.isAssignable(node.value, isBinding); @@ -754,23 +693,22 @@ var estree = (superClass => class extends superClass { } this.toAssignable(value, isLHS); - return node; + } else { + super.toAssignable(node, isLHS); } - - return super.toAssignable(node, isLHS); } - toAssignableObjectExpressionProp(prop, ...args) { + toAssignableObjectExpressionProp(prop) { if (prop.kind === "get" || prop.kind === "set") { - this.raise(ErrorMessages.PatternHasAccessor, { - node: prop.key + this.raise(Errors.PatternHasAccessor, { + at: prop.key }); } else if (prop.method) { - this.raise(ErrorMessages.PatternHasMethod, { - node: prop.key + this.raise(Errors.PatternHasMethod, { + at: prop.key }); } else { - super.toAssignableObjectExpressionProp(prop, ...args); + super.toAssignableObjectExpressionProp(...arguments); } } @@ -867,6 +805,11 @@ var estree = (superClass => class extends superClass { return toESTreeLocation(super.finishNodeAt(node, type, endLoc)); } + resetStartLocation(node, start, startLoc) { + super.resetStartLocation(node, start, startLoc); + toESTreeLocation(node); + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { super.resetEndLocation(node, endLoc); toESTreeLocation(node); @@ -1005,9 +948,7 @@ const tt = { beforeExpr, startsExpr }), - braceR: createToken("}", { - beforeExpr - }), + braceR: createToken("}"), braceBarR: createToken("|}"), parenL: createToken("(", { beforeExpr, @@ -1445,37 +1386,6 @@ function getExportedToken(token) { }; } -class Position { - constructor(line, col, index) { - this.line = void 0; - this.column = void 0; - this.index = void 0; - this.line = line; - this.column = col; - this.index = index; - } - -} -class SourceLocation { - constructor(start, end) { - this.start = void 0; - this.end = void 0; - this.filename = void 0; - this.identifierName = void 0; - this.start = start; - this.end = end; - } - -} -function createPositionWithColumnOffset(position, columnOffset) { - const { - line, - column, - index - } = position; - return new Position(line, column + columnOffset, index + columnOffset); -} - let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); @@ -1600,223 +1510,234 @@ const CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FL CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER, CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER, CLASS_ELEMENT_OTHER = 0; - -class Scope { - constructor(flags) { - this.var = new Set(); - this.lexical = new Set(); - this.functions = new Set(); - this.flags = flags; - } - -} -class ScopeHandler { - constructor(raise, inModule) { - this.scopeStack = []; - this.undefinedExports = new Map(); - this.raise = raise; - this.inModule = inModule; - } - - get inFunction() { - return (this.currentVarScopeFlags() & SCOPE_FUNCTION) > 0; - } - - get allowSuper() { - return (this.currentThisScopeFlags() & SCOPE_SUPER) > 0; - } - - get allowDirectSuper() { - return (this.currentThisScopeFlags() & SCOPE_DIRECT_SUPER) > 0; - } - - get inClass() { - return (this.currentThisScopeFlags() & SCOPE_CLASS) > 0; - } - - get inClassAndNotInNonArrowFunction() { - const flags = this.currentThisScopeFlags(); - return (flags & SCOPE_CLASS) > 0 && (flags & SCOPE_FUNCTION) === 0; + +class BaseParser { + constructor() { + this.sawUnambiguousESM = false; + this.ambiguousScriptDifferentAst = false; } - get inStaticBlock() { - for (let i = this.scopeStack.length - 1;; i--) { - const { - flags - } = this.scopeStack[i]; + hasPlugin(pluginConfig) { + if (typeof pluginConfig === "string") { + return this.plugins.has(pluginConfig); + } else { + const [pluginName, pluginOptions] = pluginConfig; - if (flags & SCOPE_STATIC_BLOCK) { - return true; + if (!this.hasPlugin(pluginName)) { + return false; } - if (flags & (SCOPE_VAR | SCOPE_CLASS)) { - return false; + const actualOptions = this.plugins.get(pluginName); + + for (const key of Object.keys(pluginOptions)) { + if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) { + return false; + } } + + return true; } } - get inNonArrowFunction() { - return (this.currentThisScopeFlags() & SCOPE_FUNCTION) > 0; - } + getPluginOption(plugin, name) { + var _this$plugins$get; - get treatFunctionsAsVar() { - return this.treatFunctionsAsVarInScope(this.currentScope()); + return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name]; } - createScope(flags) { - return new Scope(flags); - } +} - enter(flags) { - this.scopeStack.push(this.createScope(flags)); +function setTrailingComments(node, comments) { + if (node.trailingComments === undefined) { + node.trailingComments = comments; + } else { + node.trailingComments.unshift(...comments); } +} - exit() { - this.scopeStack.pop(); +function setLeadingComments(node, comments) { + if (node.leadingComments === undefined) { + node.leadingComments = comments; + } else { + node.leadingComments.unshift(...comments); } +} - treatFunctionsAsVarInScope(scope) { - return !!(scope.flags & SCOPE_FUNCTION || !this.inModule && scope.flags & SCOPE_PROGRAM); +function setInnerComments(node, comments) { + if (node.innerComments === undefined) { + node.innerComments = comments; + } else { + node.innerComments.unshift(...comments); } +} - declareName(name, bindingType, loc) { - let scope = this.currentScope(); - - if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) { - this.checkRedeclarationInScope(scope, name, bindingType, loc); - - if (bindingType & BIND_SCOPE_FUNCTION) { - scope.functions.add(name); - } else { - scope.lexical.add(name); - } - - if (bindingType & BIND_SCOPE_LEXICAL) { - this.maybeExportDefined(scope, name); - } - } else if (bindingType & BIND_SCOPE_VAR) { - for (let i = this.scopeStack.length - 1; i >= 0; --i) { - scope = this.scopeStack[i]; - this.checkRedeclarationInScope(scope, name, bindingType, loc); - scope.var.add(name); - this.maybeExportDefined(scope, name); - if (scope.flags & SCOPE_VAR) break; - } - } +function adjustInnerComments(node, elements, commentWS) { + let lastElement = null; + let i = elements.length; - if (this.inModule && scope.flags & SCOPE_PROGRAM) { - this.undefinedExports.delete(name); - } + while (lastElement === null && i > 0) { + lastElement = elements[--i]; } - maybeExportDefined(scope, name) { - if (this.inModule && scope.flags & SCOPE_PROGRAM) { - this.undefinedExports.delete(name); - } + if (lastElement === null || lastElement.start > commentWS.start) { + setInnerComments(node, commentWS.comments); + } else { + setTrailingComments(lastElement, commentWS.comments); } +} - checkRedeclarationInScope(scope, name, bindingType, loc) { - if (this.isRedeclaredInScope(scope, name, bindingType)) { - this.raise(ErrorMessages.VarRedeclaration, { - at: loc - }, name); - } +class CommentsParser extends BaseParser { + addComment(comment) { + if (this.filename) comment.loc.filename = this.filename; + this.state.comments.push(comment); } - isRedeclaredInScope(scope, name, bindingType) { - if (!(bindingType & BIND_KIND_VALUE)) return false; + processComment(node) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + const lastCommentWS = commentStack[i]; - if (bindingType & BIND_SCOPE_LEXICAL) { - return scope.lexical.has(name) || scope.functions.has(name) || scope.var.has(name); + if (lastCommentWS.start === node.end) { + lastCommentWS.leadingNode = node; + i--; } - if (bindingType & BIND_SCOPE_FUNCTION) { - return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope.var.has(name); - } + const { + start: nodeStart + } = node; - return scope.lexical.has(name) && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name); - } + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; - checkLocalExport(id) { - const { - name - } = id; - const topLevelScope = this.scopeStack[0]; + if (commentEnd > nodeStart) { + commentWS.containingNode = node; + this.finalizeComment(commentWS); + commentStack.splice(i, 1); + } else { + if (commentEnd === nodeStart) { + commentWS.trailingNode = node; + } - if (!topLevelScope.lexical.has(name) && !topLevelScope.var.has(name) && !topLevelScope.functions.has(name)) { - this.undefinedExports.set(name, id.loc.start); + break; + } } } - currentScope() { - return this.scopeStack[this.scopeStack.length - 1]; - } - - currentVarScopeFlags() { - for (let i = this.scopeStack.length - 1;; i--) { - const { - flags - } = this.scopeStack[i]; + finalizeComment(commentWS) { + const { + comments + } = commentWS; - if (flags & SCOPE_VAR) { - return flags; + if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) { + if (commentWS.leadingNode !== null) { + setTrailingComments(commentWS.leadingNode, comments); } - } - } - currentThisScopeFlags() { - for (let i = this.scopeStack.length - 1;; i--) { + if (commentWS.trailingNode !== null) { + setLeadingComments(commentWS.trailingNode, comments); + } + } else { const { - flags - } = this.scopeStack[i]; + containingNode: node, + start: commentStart + } = commentWS; - if (flags & (SCOPE_VAR | SCOPE_CLASS) && !(flags & SCOPE_ARROW)) { - return flags; + if (this.input.charCodeAt(commentStart - 1) === 44) { + switch (node.type) { + case "ObjectExpression": + case "ObjectPattern": + case "RecordExpression": + adjustInnerComments(node, node.properties, commentWS); + break; + + case "CallExpression": + case "OptionalCallExpression": + adjustInnerComments(node, node.arguments, commentWS); + break; + + case "FunctionDeclaration": + case "FunctionExpression": + case "ArrowFunctionExpression": + case "ObjectMethod": + case "ClassMethod": + case "ClassPrivateMethod": + adjustInnerComments(node, node.params, commentWS); + break; + + case "ArrayExpression": + case "ArrayPattern": + case "TupleExpression": + adjustInnerComments(node, node.elements, commentWS); + break; + + case "ExportNamedDeclaration": + case "ImportDeclaration": + adjustInnerComments(node, node.specifiers, commentWS); + break; + + default: + { + setInnerComments(node, comments); + } + } + } else { + setInnerComments(node, comments); } } } -} - -class FlowScope extends Scope { - constructor(...args) { - super(...args); - this.declareFunctions = new Set(); - } + finalizeRemainingComments() { + const { + commentStack + } = this.state; -} + for (let i = commentStack.length - 1; i >= 0; i--) { + this.finalizeComment(commentStack[i]); + } -class FlowScopeHandler extends ScopeHandler { - createScope(flags) { - return new FlowScope(flags); + this.state.commentStack = []; } - declareName(name, bindingType, loc) { - const scope = this.currentScope(); + resetPreviousNodeTrailingComments(node) { + const { + commentStack + } = this.state; + const { + length + } = commentStack; + if (length === 0) return; + const commentWS = commentStack[length - 1]; - if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) { - this.checkRedeclarationInScope(scope, name, bindingType, loc); - this.maybeExportDefined(scope, name); - scope.declareFunctions.add(name); - return; + if (commentWS.leadingNode === node) { + commentWS.leadingNode = null; } - - super.declareName(...arguments); } - isRedeclaredInScope(scope, name, bindingType) { - if (super.isRedeclaredInScope(...arguments)) return true; - - if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) { - return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name)); - } + takeSurroundingComments(node, start, end) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; - return false; - } + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + const commentStart = commentWS.start; - checkLocalExport(id) { - if (!this.scopeStack[0].declareFunctions.has(id.name)) { - super.checkLocalExport(id); + if (commentStart === end) { + commentWS.leadingNode = node; + } else if (commentEnd === start) { + commentWS.trailingNode = node; + } else if (commentEnd < start) { + break; + } } } @@ -1886,6 +1807,7 @@ class State { this.hasFlowComment = false; this.isAmbientContext = false; this.inAbstractClass = false; + this.inDisallowConditionalTypesContext = false; this.topicContext = { maxNumOfResolvableTopics: 0, maxTopicIndex: null @@ -1947,19 +1869,23 @@ class State { } +const _excluded = ["at"], + _excluded2 = ["at"]; + var _isDigit = function isDigit(code) { return code >= 48 && code <= 57; }; const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]); const forbiddenNumericSeparatorSiblings = { - decBinOct: [46, 66, 69, 79, 95, 98, 101, 111], - hex: [46, 88, 95, 120] + decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]), + hex: new Set([46, 88, 95, 120]) +}; +const isAllowedNumericSeparatorSibling = { + bin: ch => ch === 48 || ch === 49, + oct: ch => ch >= 48 && ch <= 55, + dec: ch => ch >= 48 && ch <= 57, + hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102 }; -const allowedNumericSeparatorSiblings = {}; -allowedNumericSeparatorSiblings.bin = [48, 49]; -allowedNumericSeparatorSiblings.oct = [...allowedNumericSeparatorSiblings.bin, 50, 51, 52, 53, 54, 55]; -allowedNumericSeparatorSiblings.dec = [...allowedNumericSeparatorSiblings.oct, 56, 57]; -allowedNumericSeparatorSiblings.hex = [...allowedNumericSeparatorSiblings.dec, 65, 66, 67, 68, 69, 70, 97, 98, 99, 100, 101, 102]; class Token { constructor(state) { this.type = state.type; @@ -1970,7 +1896,7 @@ class Token { } } -class Tokenizer extends ParserError { +class Tokenizer extends CommentsParser { constructor(options, input) { super(); this.isLookahead = void 0; @@ -2073,11 +1999,8 @@ class Tokenizer extends ParserError { this.state.strict = strict; if (strict) { - this.state.strictErrors.forEach(({ - message, - loc - }) => this.raise(message, { - at: loc + this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, { + at })); this.state.strictErrors.clear(); } @@ -2107,7 +2030,7 @@ class Tokenizer extends ParserError { const end = this.input.indexOf("*/", start + 2); if (end === -1) { - throw this.raise(ErrorMessages.UnterminatedComment, { + throw this.raise(Errors.UnterminatedComment, { at: this.state.curPosition() }); } @@ -2293,7 +2216,7 @@ class Tokenizer extends ParserError { const next = this.codePointAtPos(nextPos); if (next >= 48 && next <= 57) { - throw this.raise(ErrorMessages.UnexpectedDigitAfterHash, { + throw this.raise(Errors.UnexpectedDigitAfterHash, { at: this.state.curPosition() }); } @@ -2302,7 +2225,7 @@ class Tokenizer extends ParserError { this.expectPlugin("recordAndTuple"); if (this.getPluginOption("recordAndTuple", "syntaxType") !== "hash") { - throw this.raise(next === 123 ? ErrorMessages.RecordExpressionHashIncorrectStartSyntaxType : ErrorMessages.TupleExpressionHashIncorrectStartSyntaxType, { + throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, { at: this.state.curPosition() }); } @@ -2408,7 +2331,7 @@ class Tokenizer extends ParserError { if (this.hasPlugin("recordAndTuple") && next === 125) { if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { - throw this.raise(ErrorMessages.RecordExpressionBarIncorrectEndSyntaxType, { + throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, { at: this.state.curPosition() }); } @@ -2420,7 +2343,7 @@ class Tokenizer extends ParserError { if (this.hasPlugin("recordAndTuple") && next === 93) { if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { - throw this.raise(ErrorMessages.TupleExpressionBarIncorrectEndSyntaxType, { + throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, { at: this.state.curPosition() }); } @@ -2602,7 +2525,7 @@ class Tokenizer extends ParserError { case 91: if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { - throw this.raise(ErrorMessages.TupleExpressionBarIncorrectStartSyntaxType, { + throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, { at: this.state.curPosition() }); } @@ -2624,7 +2547,7 @@ class Tokenizer extends ParserError { case 123: if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { - throw this.raise(ErrorMessages.RecordExpressionBarIncorrectStartSyntaxType, { + throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, { at: this.state.curPosition() }); } @@ -2738,671 +2661,969 @@ class Tokenizer extends ParserError { this.finishOp(36, 1); return; - case 64: - this.readToken_atSign(); - return; + case 64: + this.readToken_atSign(); + return; + + case 35: + this.readToken_numberSign(); + return; + + case 92: + this.readWord(); + return; + + default: + if (isIdentifierStart(code)) { + this.readWord(code); + return; + } + + } + + throw this.raise(Errors.InvalidOrUnexpectedToken, { + at: this.state.curPosition(), + unexpected: String.fromCodePoint(code) + }); + } + + finishOp(type, size) { + const str = this.input.slice(this.state.pos, this.state.pos + size); + this.state.pos += size; + this.finishToken(type, str); + } + + readRegexp() { + const startLoc = this.state.startLoc; + const start = this.state.start + 1; + let escaped, inClass; + let { + pos + } = this.state; + + for (;; ++pos) { + if (pos >= this.length) { + throw this.raise(Errors.UnterminatedRegExp, { + at: createPositionWithColumnOffset(startLoc, 1) + }); + } + + const ch = this.input.charCodeAt(pos); + + if (isNewLine(ch)) { + throw this.raise(Errors.UnterminatedRegExp, { + at: createPositionWithColumnOffset(startLoc, 1) + }); + } + + if (escaped) { + escaped = false; + } else { + if (ch === 91) { + inClass = true; + } else if (ch === 93 && inClass) { + inClass = false; + } else if (ch === 47 && !inClass) { + break; + } + + escaped = ch === 92; + } + } + + const content = this.input.slice(start, pos); + ++pos; + let mods = ""; + + const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start); + + while (pos < this.length) { + const cp = this.codePointAtPos(pos); + const char = String.fromCharCode(cp); + + if (VALID_REGEX_FLAGS.has(cp)) { + if (cp === 118) { + this.expectPlugin("regexpUnicodeSets", nextPos()); + + if (mods.includes("u")) { + this.raise(Errors.IncompatibleRegExpUVFlags, { + at: nextPos() + }); + } + } else if (cp === 117) { + if (mods.includes("v")) { + this.raise(Errors.IncompatibleRegExpUVFlags, { + at: nextPos() + }); + } + } + + if (mods.includes(char)) { + this.raise(Errors.DuplicateRegExpFlags, { + at: nextPos() + }); + } + } else if (isIdentifierChar(cp) || cp === 92) { + this.raise(Errors.MalformedRegExpFlags, { + at: nextPos() + }); + } else { + break; + } + + ++pos; + mods += char; + } + + this.state.pos = pos; + this.finishToken(133, { + pattern: content, + flags: mods + }); + } + + readInt(radix, len, forceLen, allowNumSeparator = true) { + const start = this.state.pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin; + let invalid = false; + let total = 0; + + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = this.input.charCodeAt(this.state.pos); + let val; + + if (code === 95 && allowNumSeparator !== "bail") { + const prev = this.input.charCodeAt(this.state.pos - 1); + const next = this.input.charCodeAt(this.state.pos + 1); + + if (!allowNumSeparator) { + this.raise(Errors.NumericSeparatorInEscapeSequence, { + at: this.state.curPosition() + }); + } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) { + this.raise(Errors.UnexpectedNumericSeparator, { + at: this.state.curPosition() + }); + } + + ++this.state.pos; + continue; + } + + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + + if (val >= radix) { + if (this.options.errorRecovery && val <= 9) { + val = 0; + this.raise(Errors.InvalidDigit, { + at: this.state.curPosition(), + radix + }); + } else if (forceLen) { + val = 0; + invalid = true; + } else { + break; + } + } + + ++this.state.pos; + total = total * radix + val; + } + + if (this.state.pos === start || len != null && this.state.pos - start !== len || invalid) { + return null; + } + + return total; + } + + readRadixNumber(radix) { + const startLoc = this.state.curPosition(); + let isBigInt = false; + this.state.pos += 2; + const val = this.readInt(radix); + + if (val == null) { + this.raise(Errors.InvalidDigit, { + at: createPositionWithColumnOffset(startLoc, 2), + radix + }); + } + + const next = this.input.charCodeAt(this.state.pos); + + if (next === 110) { + ++this.state.pos; + isBigInt = true; + } else if (next === 109) { + throw this.raise(Errors.InvalidDecimal, { + at: startLoc + }); + } + + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, { + at: this.state.curPosition() + }); + } + + if (isBigInt) { + const str = this.input.slice(startLoc.index, this.state.pos).replace(/[_n]/g, ""); + this.finishToken(131, str); + return; + } + + this.finishToken(130, val); + } + + readNumber(startsWithDot) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isFloat = false; + let isBigInt = false; + let isDecimal = false; + let hasExponent = false; + let isOctal = false; + + if (!startsWithDot && this.readInt(10) === null) { + this.raise(Errors.InvalidNumber, { + at: this.state.curPosition() + }); + } + + const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; - case 35: - this.readToken_numberSign(); - return; + if (hasLeadingZero) { + const integer = this.input.slice(start, this.state.pos); + this.recordStrictModeErrors(Errors.StrictOctalLiteral, { + at: startLoc + }); - case 92: - this.readWord(); - return; + if (!this.state.strict) { + const underscorePos = integer.indexOf("_"); - default: - if (isIdentifierStart(code)) { - this.readWord(code); - return; + if (underscorePos > 0) { + this.raise(Errors.ZeroDigitNumericSeparator, { + at: createPositionWithColumnOffset(startLoc, underscorePos) + }); } + } + isOctal = hasLeadingZero && !/[89]/.test(integer); } - throw this.raise(ErrorMessages.InvalidOrUnexpectedToken, { - at: this.state.curPosition() - }, String.fromCodePoint(code)); - } + let next = this.input.charCodeAt(this.state.pos); - finishOp(type, size) { - const str = this.input.slice(this.state.pos, this.state.pos + size); - this.state.pos += size; - this.finishToken(type, str); - } + if (next === 46 && !isOctal) { + ++this.state.pos; + this.readInt(10); + isFloat = true; + next = this.input.charCodeAt(this.state.pos); + } - readRegexp() { - const startLoc = this.state.startLoc; - const start = this.state.start + 1; - let escaped, inClass; - let { - pos - } = this.state; + if ((next === 69 || next === 101) && !isOctal) { + next = this.input.charCodeAt(++this.state.pos); - for (;; ++pos) { - if (pos >= this.length) { - throw this.raise(ErrorMessages.UnterminatedRegExp, { - at: createPositionWithColumnOffset(startLoc, 1) + if (next === 43 || next === 45) { + ++this.state.pos; + } + + if (this.readInt(10) === null) { + this.raise(Errors.InvalidOrMissingExponent, { + at: startLoc }); } - const ch = this.input.charCodeAt(pos); + isFloat = true; + hasExponent = true; + next = this.input.charCodeAt(this.state.pos); + } - if (isNewLine(ch)) { - throw this.raise(ErrorMessages.UnterminatedRegExp, { - at: createPositionWithColumnOffset(startLoc, 1) + if (next === 110) { + if (isFloat || hasLeadingZero) { + this.raise(Errors.InvalidBigIntLiteral, { + at: startLoc }); } - if (escaped) { - escaped = false; - } else { - if (ch === 91) { - inClass = true; - } else if (ch === 93 && inClass) { - inClass = false; - } else if (ch === 47 && !inClass) { - break; - } + ++this.state.pos; + isBigInt = true; + } - escaped = ch === 92; + if (next === 109) { + this.expectPlugin("decimal", this.state.curPosition()); + + if (hasExponent || hasLeadingZero) { + this.raise(Errors.InvalidDecimal, { + at: startLoc + }); } + + ++this.state.pos; + isDecimal = true; } - const content = this.input.slice(start, pos); - ++pos; - let mods = ""; + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, { + at: this.state.curPosition() + }); + } - const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start); + const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); - while (pos < this.length) { - const cp = this.codePointAtPos(pos); - const char = String.fromCharCode(cp); + if (isBigInt) { + this.finishToken(131, str); + return; + } - if (VALID_REGEX_FLAGS.has(cp)) { - if (cp === 118) { - this.expectPlugin("regexpUnicodeSets", nextPos()); + if (isDecimal) { + this.finishToken(132, str); + return; + } - if (mods.includes("u")) { - this.raise(ErrorMessages.IncompatibleRegExpUVFlags, { - at: nextPos() - }); - } - } else if (cp === 117) { - if (mods.includes("v")) { - this.raise(ErrorMessages.IncompatibleRegExpUVFlags, { - at: nextPos() - }); - } - } + const val = isOctal ? parseInt(str, 8) : parseFloat(str); + this.finishToken(130, val); + } - if (mods.includes(char)) { - this.raise(ErrorMessages.DuplicateRegExpFlags, { - at: nextPos() + readCodePoint(throwOnInvalid) { + const ch = this.input.charCodeAt(this.state.pos); + let code; + + if (ch === 123) { + ++this.state.pos; + code = this.readHexChar(this.input.indexOf("}", this.state.pos) - this.state.pos, true, throwOnInvalid); + ++this.state.pos; + + if (code !== null && code > 0x10ffff) { + if (throwOnInvalid) { + this.raise(Errors.InvalidCodePoint, { + at: this.state.curPosition() }); + } else { + return null; } - } else if (isIdentifierChar(cp) || cp === 92) { - this.raise(ErrorMessages.MalformedRegExpFlags, { - at: nextPos() + } + } else { + code = this.readHexChar(4, false, throwOnInvalid); + } + + return code; + } + + readString(quote) { + let out = "", + chunkStart = ++this.state.pos; + + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(Errors.UnterminatedString, { + at: this.state.startLoc }); - } else { - break; } - ++pos; - mods += char; + const ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + + if (ch === 92) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.readEscapedChar(false); + chunkStart = this.state.pos; + } else if (ch === 8232 || ch === 8233) { + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + } else if (isNewLine(ch)) { + throw this.raise(Errors.UnterminatedString, { + at: this.state.startLoc + }); + } else { + ++this.state.pos; + } } - this.state.pos = pos; - this.finishToken(133, { - pattern: content, - flags: mods - }); + out += this.input.slice(chunkStart, this.state.pos++); + this.finishToken(129, out); } - readInt(radix, len, forceLen, allowNumSeparator = true) { - const start = this.state.pos; - const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; - const allowedSiblings = radix === 16 ? allowedNumericSeparatorSiblings.hex : radix === 10 ? allowedNumericSeparatorSiblings.dec : radix === 8 ? allowedNumericSeparatorSiblings.oct : allowedNumericSeparatorSiblings.bin; - let invalid = false; - let total = 0; + readTemplateContinuation() { + if (!this.match(8)) { + this.unexpected(null, 8); + } - for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { - const code = this.input.charCodeAt(this.state.pos); - let val; + this.state.pos--; + this.readTemplateToken(); + } - if (code === 95) { - const prev = this.input.charCodeAt(this.state.pos - 1); - const next = this.input.charCodeAt(this.state.pos + 1); + readTemplateToken() { + let out = "", + chunkStart = this.state.pos, + containsInvalid = false; + ++this.state.pos; - if (allowedSiblings.indexOf(next) === -1) { - this.raise(ErrorMessages.UnexpectedNumericSeparator, { - at: this.state.curPosition() - }); - } else if (forbiddenSiblings.indexOf(prev) > -1 || forbiddenSiblings.indexOf(next) > -1 || Number.isNaN(next)) { - this.raise(ErrorMessages.UnexpectedNumericSeparator, { - at: this.state.curPosition() - }); - } + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(Errors.UnterminatedTemplate, { + at: createPositionWithColumnOffset(this.state.startLoc, 1) + }); + } - if (!allowNumSeparator) { - this.raise(ErrorMessages.NumericSeparatorInEscapeSequence, { - at: this.state.curPosition() - }); - } + const ch = this.input.charCodeAt(this.state.pos); + if (ch === 96) { ++this.state.pos; - continue; + out += this.input.slice(chunkStart, this.state.pos); + this.finishToken(24, containsInvalid ? null : out); + return; } - if (code >= 97) { - val = code - 97 + 10; - } else if (code >= 65) { - val = code - 65 + 10; - } else if (_isDigit(code)) { - val = code - 48; - } else { - val = Infinity; + if (ch === 36 && this.input.charCodeAt(this.state.pos + 1) === 123) { + this.state.pos += 2; + out += this.input.slice(chunkStart, this.state.pos); + this.finishToken(25, containsInvalid ? null : out); + return; } - if (val >= radix) { - if (this.options.errorRecovery && val <= 9) { - val = 0; - this.raise(ErrorMessages.InvalidDigit, { - at: this.state.curPosition() - }, radix); - } else if (forceLen) { - val = 0; - invalid = true; + if (ch === 92) { + out += this.input.slice(chunkStart, this.state.pos); + const escaped = this.readEscapedChar(true); + + if (escaped === null) { + containsInvalid = true; } else { - break; + out += escaped; } - } - ++this.state.pos; - total = total * radix + val; - } + chunkStart = this.state.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + ++this.state.pos; - if (this.state.pos === start || len != null && this.state.pos - start !== len || invalid) { - return null; - } + switch (ch) { + case 13: + if (this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + } - return total; - } + case 10: + out += "\n"; + break; - readRadixNumber(radix) { - const startLoc = this.state.curPosition(); - let isBigInt = false; - this.state.pos += 2; - const val = this.readInt(radix); + default: + out += String.fromCharCode(ch); + break; + } - if (val == null) { - this.raise(ErrorMessages.InvalidDigit, { - at: createPositionWithColumnOffset(startLoc, 2) - }, radix); + ++this.state.curLine; + this.state.lineStart = this.state.pos; + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } } + } - const next = this.input.charCodeAt(this.state.pos); + recordStrictModeErrors(toParseError, { + at + }) { + const index = at.index; - if (next === 110) { - ++this.state.pos; - isBigInt = true; - } else if (next === 109) { - throw this.raise(ErrorMessages.InvalidDecimal, { - at: startLoc + if (this.state.strict && !this.state.strictErrors.has(index)) { + this.raise(toParseError, { + at }); + } else { + this.state.strictErrors.set(index, [toParseError, at]); } + } - if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { - throw this.raise(ErrorMessages.NumberIdentifier, { - at: this.state.curPosition() - }); - } + readEscapedChar(inTemplate) { + const throwOnInvalid = !inTemplate; + const ch = this.input.charCodeAt(++this.state.pos); + ++this.state.pos; - if (isBigInt) { - const str = this.input.slice(startLoc.index, this.state.pos).replace(/[_n]/g, ""); - this.finishToken(131, str); - return; - } + switch (ch) { + case 110: + return "\n"; - this.finishToken(130, val); - } + case 114: + return "\r"; - readNumber(startsWithDot) { - const start = this.state.pos; - const startLoc = this.state.curPosition(); - let isFloat = false; - let isBigInt = false; - let isDecimal = false; - let hasExponent = false; - let isOctal = false; + case 120: + { + const code = this.readHexChar(2, false, throwOnInvalid); + return code === null ? null : String.fromCharCode(code); + } - if (!startsWithDot && this.readInt(10) === null) { - this.raise(ErrorMessages.InvalidNumber, { - at: this.state.curPosition() - }); - } + case 117: + { + const code = this.readCodePoint(throwOnInvalid); + return code === null ? null : String.fromCodePoint(code); + } - const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; + case 116: + return "\t"; - if (hasLeadingZero) { - const integer = this.input.slice(start, this.state.pos); - this.recordStrictModeErrors(ErrorMessages.StrictOctalLiteral, startLoc); + case 98: + return "\b"; - if (!this.state.strict) { - const underscorePos = integer.indexOf("_"); + case 118: + return "\u000b"; - if (underscorePos > 0) { - this.raise(ErrorMessages.ZeroDigitNumericSeparator, { - at: createPositionWithColumnOffset(startLoc, underscorePos) - }); + case 102: + return "\f"; + + case 13: + if (this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; } - } - isOctal = hasLeadingZero && !/[89]/.test(integer); - } + case 10: + this.state.lineStart = this.state.pos; + ++this.state.curLine; - let next = this.input.charCodeAt(this.state.pos); + case 8232: + case 8233: + return ""; - if (next === 46 && !isOctal) { - ++this.state.pos; - this.readInt(10); - isFloat = true; - next = this.input.charCodeAt(this.state.pos); - } + case 56: + case 57: + if (inTemplate) { + return null; + } else { + this.recordStrictModeErrors(Errors.StrictNumericEscape, { + at: createPositionWithColumnOffset(this.state.curPosition(), -1) + }); + } - if ((next === 69 || next === 101) && !isOctal) { - next = this.input.charCodeAt(++this.state.pos); + default: + if (ch >= 48 && ch <= 55) { + const codePos = createPositionWithColumnOffset(this.state.curPosition(), -1); + const match = this.input.slice(this.state.pos - 1, this.state.pos + 2).match(/^[0-7]+/); + let octalStr = match[0]; + let octal = parseInt(octalStr, 8); - if (next === 43 || next === 45) { - ++this.state.pos; - } + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } - if (this.readInt(10) === null) { - this.raise(ErrorMessages.InvalidOrMissingExponent, { - at: startLoc - }); - } + this.state.pos += octalStr.length - 1; + const next = this.input.charCodeAt(this.state.pos); - isFloat = true; - hasExponent = true; - next = this.input.charCodeAt(this.state.pos); - } + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + return null; + } else { + this.recordStrictModeErrors(Errors.StrictNumericEscape, { + at: codePos + }); + } + } - if (next === 110) { - if (isFloat || hasLeadingZero) { - this.raise(ErrorMessages.InvalidBigIntLiteral, { - at: startLoc - }); - } + return String.fromCharCode(octal); + } - ++this.state.pos; - isBigInt = true; + return String.fromCharCode(ch); } + } - if (next === 109) { - this.expectPlugin("decimal", this.state.curPosition()); + readHexChar(len, forceLen, throwOnInvalid) { + const codeLoc = this.state.curPosition(); + const n = this.readInt(16, len, forceLen, false); - if (hasExponent || hasLeadingZero) { - this.raise(ErrorMessages.InvalidDecimal, { - at: startLoc + if (n === null) { + if (throwOnInvalid) { + this.raise(Errors.InvalidEscapeSequence, { + at: codeLoc }); + } else { + this.state.pos = codeLoc.index - 1; } - - ++this.state.pos; - isDecimal = true; } - if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { - throw this.raise(ErrorMessages.NumberIdentifier, { - at: this.state.curPosition() - }); + return n; + } + + readWord1(firstCode) { + this.state.containsEsc = false; + let word = ""; + const start = this.state.pos; + let chunkStart = this.state.pos; + + if (firstCode !== undefined) { + this.state.pos += firstCode <= 0xffff ? 1 : 2; } - const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); + while (this.state.pos < this.length) { + const ch = this.codePointAtPos(this.state.pos); - if (isBigInt) { - this.finishToken(131, str); - return; + if (isIdentifierChar(ch)) { + this.state.pos += ch <= 0xffff ? 1 : 2; + } else if (ch === 92) { + this.state.containsEsc = true; + word += this.input.slice(chunkStart, this.state.pos); + const escStart = this.state.curPosition(); + const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; + + if (this.input.charCodeAt(++this.state.pos) !== 117) { + this.raise(Errors.MissingUnicodeEscape, { + at: this.state.curPosition() + }); + chunkStart = this.state.pos - 1; + continue; + } + + ++this.state.pos; + const esc = this.readCodePoint(true); + + if (esc !== null) { + if (!identifierCheck(esc)) { + this.raise(Errors.EscapedCharNotAnIdentifier, { + at: escStart + }); + } + + word += String.fromCodePoint(esc); + } + + chunkStart = this.state.pos; + } else { + break; + } } - if (isDecimal) { - this.finishToken(132, str); - return; + return word + this.input.slice(chunkStart, this.state.pos); + } + + readWord(firstCode) { + const word = this.readWord1(firstCode); + const type = keywords$1.get(word); + + if (type !== undefined) { + this.finishToken(type, tokenLabelName(type)); + } else { + this.finishToken(128, word); } - - const val = isOctal ? parseInt(str, 8) : parseFloat(str); - this.finishToken(130, val); } - readCodePoint(throwOnInvalid) { - const ch = this.input.charCodeAt(this.state.pos); - let code; - - if (ch === 123) { - ++this.state.pos; - code = this.readHexChar(this.input.indexOf("}", this.state.pos) - this.state.pos, true, throwOnInvalid); - ++this.state.pos; + checkKeywordEscapes() { + const { + type + } = this.state; - if (code !== null && code > 0x10ffff) { - if (throwOnInvalid) { - this.raise(ErrorMessages.InvalidCodePoint, { - at: this.state.curPosition() - }); - } else { - return null; - } - } - } else { - code = this.readHexChar(4, false, throwOnInvalid); + if (tokenIsKeyword(type) && this.state.containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, { + at: this.state.startLoc, + reservedWord: tokenLabelName(type) + }); } + } - return code; + raise(toParseError, raiseProperties) { + const { + at + } = raiseProperties, + details = _objectWithoutPropertiesLoose(raiseProperties, _excluded); + + const loc = at instanceof Position ? at : at.loc.start; + const error = toParseError({ + loc, + details + }); + if (!this.options.errorRecovery) throw error; + if (!this.isLookahead) this.state.errors.push(error); + return error; } - readString(quote) { - let out = "", - chunkStart = ++this.state.pos; + raiseOverwrite(toParseError, raiseProperties) { + const { + at + } = raiseProperties, + details = _objectWithoutPropertiesLoose(raiseProperties, _excluded2); - for (;;) { - if (this.state.pos >= this.length) { - throw this.raise(ErrorMessages.UnterminatedString, { - at: this.state.startLoc - }); - } + const loc = at instanceof Position ? at : at.loc.start; + const pos = loc.index; + const errors = this.state.errors; - const ch = this.input.charCodeAt(this.state.pos); - if (ch === quote) break; + for (let i = errors.length - 1; i >= 0; i--) { + const error = errors[i]; - if (ch === 92) { - out += this.input.slice(chunkStart, this.state.pos); - out += this.readEscapedChar(false); - chunkStart = this.state.pos; - } else if (ch === 8232 || ch === 8233) { - ++this.state.pos; - ++this.state.curLine; - this.state.lineStart = this.state.pos; - } else if (isNewLine(ch)) { - throw this.raise(ErrorMessages.UnterminatedString, { - at: this.state.startLoc + if (error.loc.index === pos) { + return errors[i] = toParseError({ + loc, + details }); - } else { - ++this.state.pos; } + + if (error.loc.index < pos) break; } - out += this.input.slice(chunkStart, this.state.pos++); - this.finishToken(129, out); + return this.raise(toParseError, raiseProperties); } - readTemplateContinuation() { - if (!this.match(8)) { - this.unexpected(null, 8); + updateContext(prevType) {} + + unexpected(loc, type) { + throw this.raise(Errors.UnexpectedToken, { + expected: type ? tokenLabelName(type) : null, + at: loc != null ? loc : this.state.startLoc + }); + } + + expectPlugin(pluginName, loc) { + if (this.hasPlugin(pluginName)) { + return true; } - this.state.pos--; - this.readTemplateToken(); + throw this.raise(Errors.MissingPlugin, { + at: loc != null ? loc : this.state.startLoc, + missingPlugin: [pluginName] + }); } - readTemplateToken() { - let out = "", - chunkStart = this.state.pos, - containsInvalid = false; - ++this.state.pos; + expectOnePlugin(pluginNames) { + if (!pluginNames.some(name => this.hasPlugin(name))) { + throw this.raise(Errors.MissingOneOfPlugins, { + at: this.state.startLoc, + missingPlugin: pluginNames + }); + } + } - for (;;) { - if (this.state.pos >= this.length) { - throw this.raise(ErrorMessages.UnterminatedTemplate, { - at: createPositionWithColumnOffset(this.state.startLoc, 1) - }); - } +} - const ch = this.input.charCodeAt(this.state.pos); +class Scope { + constructor(flags) { + this.var = new Set(); + this.lexical = new Set(); + this.functions = new Set(); + this.flags = flags; + } - if (ch === 96) { - ++this.state.pos; - out += this.input.slice(chunkStart, this.state.pos); - this.finishToken(24, containsInvalid ? null : out); - return; - } +} +class ScopeHandler { + constructor(parser, inModule) { + this.parser = void 0; + this.scopeStack = []; + this.inModule = void 0; + this.undefinedExports = new Map(); + this.parser = parser; + this.inModule = inModule; + } - if (ch === 36 && this.input.charCodeAt(this.state.pos + 1) === 123) { - this.state.pos += 2; - out += this.input.slice(chunkStart, this.state.pos); - this.finishToken(25, containsInvalid ? null : out); - return; - } + get inFunction() { + return (this.currentVarScopeFlags() & SCOPE_FUNCTION) > 0; + } - if (ch === 92) { - out += this.input.slice(chunkStart, this.state.pos); - const escaped = this.readEscapedChar(true); + get allowSuper() { + return (this.currentThisScopeFlags() & SCOPE_SUPER) > 0; + } - if (escaped === null) { - containsInvalid = true; - } else { - out += escaped; - } + get allowDirectSuper() { + return (this.currentThisScopeFlags() & SCOPE_DIRECT_SUPER) > 0; + } - chunkStart = this.state.pos; - } else if (isNewLine(ch)) { - out += this.input.slice(chunkStart, this.state.pos); - ++this.state.pos; + get inClass() { + return (this.currentThisScopeFlags() & SCOPE_CLASS) > 0; + } - switch (ch) { - case 13: - if (this.input.charCodeAt(this.state.pos) === 10) { - ++this.state.pos; - } + get inClassAndNotInNonArrowFunction() { + const flags = this.currentThisScopeFlags(); + return (flags & SCOPE_CLASS) > 0 && (flags & SCOPE_FUNCTION) === 0; + } - case 10: - out += "\n"; - break; + get inStaticBlock() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; - default: - out += String.fromCharCode(ch); - break; - } + if (flags & SCOPE_STATIC_BLOCK) { + return true; + } - ++this.state.curLine; - this.state.lineStart = this.state.pos; - chunkStart = this.state.pos; - } else { - ++this.state.pos; + if (flags & (SCOPE_VAR | SCOPE_CLASS)) { + return false; } } } - recordStrictModeErrors(message, loc) { - if (this.state.strict && !this.state.strictErrors.has(loc.index)) { - this.raise(message, { - at: loc - }); - } else { - this.state.strictErrors.set(loc.index, { - loc, - message - }); - } + get inNonArrowFunction() { + return (this.currentThisScopeFlags() & SCOPE_FUNCTION) > 0; } - readEscapedChar(inTemplate) { - const throwOnInvalid = !inTemplate; - const ch = this.input.charCodeAt(++this.state.pos); - ++this.state.pos; - - switch (ch) { - case 110: - return "\n"; + get treatFunctionsAsVar() { + return this.treatFunctionsAsVarInScope(this.currentScope()); + } - case 114: - return "\r"; + createScope(flags) { + return new Scope(flags); + } - case 120: - { - const code = this.readHexChar(2, false, throwOnInvalid); - return code === null ? null : String.fromCharCode(code); - } + enter(flags) { + this.scopeStack.push(this.createScope(flags)); + } - case 117: - { - const code = this.readCodePoint(throwOnInvalid); - return code === null ? null : String.fromCodePoint(code); - } + exit() { + this.scopeStack.pop(); + } - case 116: - return "\t"; + treatFunctionsAsVarInScope(scope) { + return !!(scope.flags & (SCOPE_FUNCTION | SCOPE_STATIC_BLOCK) || !this.parser.inModule && scope.flags & SCOPE_PROGRAM); + } - case 98: - return "\b"; + declareName(name, bindingType, loc) { + let scope = this.currentScope(); - case 118: - return "\u000b"; + if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); - case 102: - return "\f"; + if (bindingType & BIND_SCOPE_FUNCTION) { + scope.functions.add(name); + } else { + scope.lexical.add(name); + } - case 13: - if (this.input.charCodeAt(this.state.pos) === 10) { - ++this.state.pos; - } + if (bindingType & BIND_SCOPE_LEXICAL) { + this.maybeExportDefined(scope, name); + } + } else if (bindingType & BIND_SCOPE_VAR) { + for (let i = this.scopeStack.length - 1; i >= 0; --i) { + scope = this.scopeStack[i]; + this.checkRedeclarationInScope(scope, name, bindingType, loc); + scope.var.add(name); + this.maybeExportDefined(scope, name); + if (scope.flags & SCOPE_VAR) break; + } + } - case 10: - this.state.lineStart = this.state.pos; - ++this.state.curLine; + if (this.parser.inModule && scope.flags & SCOPE_PROGRAM) { + this.undefinedExports.delete(name); + } + } - case 8232: - case 8233: - return ""; + maybeExportDefined(scope, name) { + if (this.parser.inModule && scope.flags & SCOPE_PROGRAM) { + this.undefinedExports.delete(name); + } + } - case 56: - case 57: - if (inTemplate) { - return null; - } else { - this.recordStrictModeErrors(ErrorMessages.StrictNumericEscape, createPositionWithColumnOffset(this.state.curPosition(), -1)); - } + checkRedeclarationInScope(scope, name, bindingType, loc) { + if (this.isRedeclaredInScope(scope, name, bindingType)) { + this.parser.raise(Errors.VarRedeclaration, { + at: loc, + identifierName: name + }); + } + } - default: - if (ch >= 48 && ch <= 55) { - const codePos = createPositionWithColumnOffset(this.state.curPosition(), -1); - const match = this.input.substr(this.state.pos - 1, 3).match(/^[0-7]+/); - let octalStr = match[0]; - let octal = parseInt(octalStr, 8); + isRedeclaredInScope(scope, name, bindingType) { + if (!(bindingType & BIND_KIND_VALUE)) return false; - if (octal > 255) { - octalStr = octalStr.slice(0, -1); - octal = parseInt(octalStr, 8); - } + if (bindingType & BIND_SCOPE_LEXICAL) { + return scope.lexical.has(name) || scope.functions.has(name) || scope.var.has(name); + } - this.state.pos += octalStr.length - 1; - const next = this.input.charCodeAt(this.state.pos); + if (bindingType & BIND_SCOPE_FUNCTION) { + return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope.var.has(name); + } - if (octalStr !== "0" || next === 56 || next === 57) { - if (inTemplate) { - return null; - } else { - this.recordStrictModeErrors(ErrorMessages.StrictNumericEscape, codePos); - } - } + return scope.lexical.has(name) && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name); + } - return String.fromCharCode(octal); - } + checkLocalExport(id) { + const { + name + } = id; + const topLevelScope = this.scopeStack[0]; - return String.fromCharCode(ch); + if (!topLevelScope.lexical.has(name) && !topLevelScope.var.has(name) && !topLevelScope.functions.has(name)) { + this.undefinedExports.set(name, id.loc.start); } } - readHexChar(len, forceLen, throwOnInvalid) { - const codeLoc = this.state.curPosition(); - const n = this.readInt(16, len, forceLen, false); + currentScope() { + return this.scopeStack[this.scopeStack.length - 1]; + } - if (n === null) { - if (throwOnInvalid) { - this.raise(ErrorMessages.InvalidEscapeSequence, { - at: codeLoc - }); - } else { - this.state.pos = codeLoc.index - 1; + currentVarScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + + if (flags & SCOPE_VAR) { + return flags; } } - - return n; } - readWord1(firstCode) { - this.state.containsEsc = false; - let word = ""; - const start = this.state.pos; - let chunkStart = this.state.pos; + currentThisScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; - if (firstCode !== undefined) { - this.state.pos += firstCode <= 0xffff ? 1 : 2; + if (flags & (SCOPE_VAR | SCOPE_CLASS) && !(flags & SCOPE_ARROW)) { + return flags; + } } + } - while (this.state.pos < this.length) { - const ch = this.codePointAtPos(this.state.pos); - - if (isIdentifierChar(ch)) { - this.state.pos += ch <= 0xffff ? 1 : 2; - } else if (ch === 92) { - this.state.containsEsc = true; - word += this.input.slice(chunkStart, this.state.pos); - const escStart = this.state.curPosition(); - const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; +} - if (this.input.charCodeAt(++this.state.pos) !== 117) { - this.raise(ErrorMessages.MissingUnicodeEscape, { - at: this.state.curPosition() - }); - chunkStart = this.state.pos - 1; - continue; - } +class FlowScope extends Scope { + constructor(...args) { + super(...args); + this.declareFunctions = new Set(); + } - ++this.state.pos; - const esc = this.readCodePoint(true); +} - if (esc !== null) { - if (!identifierCheck(esc)) { - this.raise(ErrorMessages.EscapedCharNotAnIdentifier, { - at: escStart - }); - } +class FlowScopeHandler extends ScopeHandler { + createScope(flags) { + return new FlowScope(flags); + } - word += String.fromCodePoint(esc); - } + declareName(name, bindingType, loc) { + const scope = this.currentScope(); - chunkStart = this.state.pos; - } else { - break; - } + if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + scope.declareFunctions.add(name); + return; } - return word + this.input.slice(chunkStart, this.state.pos); + super.declareName(...arguments); } - readWord(firstCode) { - const word = this.readWord1(firstCode); - const type = keywords$1.get(word); + isRedeclaredInScope(scope, name, bindingType) { + if (super.isRedeclaredInScope(...arguments)) return true; - if (type !== undefined) { - this.finishToken(type, tokenLabelName(type)); - } else { - this.finishToken(128, word); + if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) { + return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name)); } - } - checkKeywordEscapes() { - const { - type - } = this.state; + return false; + } - if (tokenIsKeyword(type) && this.state.containsEsc) { - this.raise(ErrorMessages.InvalidEscapedReservedWord, { - at: this.state.startLoc - }, tokenLabelName(type)); + checkLocalExport(id) { + if (!this.scopeStack[0].declareFunctions.has(id.name)) { + super.checkLocalExport(id); } } - updateContext(prevType) {} - } class ClassScope { @@ -3414,10 +3635,11 @@ class ClassScope { } class ClassScopeHandler { - constructor(raise) { + constructor(parser) { + this.parser = void 0; this.stack = []; this.undefinedPrivateNames = new Map(); - this.raise = raise; + this.parser = parser; } current() { @@ -3438,9 +3660,10 @@ class ClassScopeHandler { current.undefinedPrivateNames.set(name, loc); } } else { - this.raise(ErrorMessages.InvalidPrivateFieldResolution, { - at: loc - }, name); + this.parser.raise(Errors.InvalidPrivateFieldResolution, { + at: loc, + identifierName: name + }); } } } @@ -3469,9 +3692,10 @@ class ClassScopeHandler { } if (redefined) { - this.raise(ErrorMessages.PrivateNameRedeclaration, { - at: loc - }, name); + this.parser.raise(Errors.PrivateNameRedeclaration, { + at: loc, + identifierName: name + }); } privateNames.add(name); @@ -3488,9 +3712,10 @@ class ClassScopeHandler { if (classScope) { classScope.undefinedPrivateNames.set(name, loc); } else { - this.raise(ErrorMessages.InvalidPrivateFieldResolution, { - at: loc - }, name); + this.parser.raise(Errors.InvalidPrivateFieldResolution, { + at: loc, + identifierName: name + }); } } @@ -3520,30 +3745,31 @@ class ExpressionScope { class ArrowHeadParsingScope extends ExpressionScope { constructor(type) { super(type); - this.errors = new Map(); + this.declarationErrors = new Map(); } - recordDeclarationError(message, loc) { - this.errors.set(loc.index, { - message, - loc - }); + recordDeclarationError(ParsingErrorClass, { + at + }) { + const index = at.index; + this.declarationErrors.set(index, [ParsingErrorClass, at]); } - clearDeclarationError(loc) { - this.errors.delete(loc.index); + clearDeclarationError(index) { + this.declarationErrors.delete(index); } iterateErrors(iterator) { - this.errors.forEach(iterator); + this.declarationErrors.forEach(iterator); } } class ExpressionScopeHandler { - constructor(raise) { + constructor(parser) { + this.parser = void 0; this.stack = [new ExpressionScope()]; - this.raise = raise; + this.parser = parser; } enter(scope) { @@ -3554,7 +3780,12 @@ class ExpressionScopeHandler { this.stack.pop(); } - recordParameterInitializerError(loc, template) { + recordParameterInitializerError(toParseError, { + at: node + }) { + const origin = { + at: node.loc.start + }; const { stack } = this; @@ -3563,7 +3794,7 @@ class ExpressionScopeHandler { while (!scope.isCertainlyParameterDeclaration()) { if (scope.canBeArrowParameterDeclaration()) { - scope.recordDeclarationError(template, loc); + scope.recordDeclarationError(toParseError, origin); } else { return; } @@ -3571,29 +3802,32 @@ class ExpressionScopeHandler { scope = stack[--i]; } - this.raise(template, { - at: loc - }); + this.parser.raise(toParseError, origin); } - recordParenthesizedIdentifierError(template, loc) { + recordArrowParemeterBindingError(error, { + at: node + }) { const { stack } = this; const scope = stack[stack.length - 1]; + const origin = { + at: node.loc.start + }; if (scope.isCertainlyParameterDeclaration()) { - this.raise(template, { - at: loc - }); + this.parser.raise(error, origin); } else if (scope.canBeArrowParameterDeclaration()) { - scope.recordDeclarationError(template, loc); + scope.recordDeclarationError(error, origin); } else { return; } } - recordAsyncArrowParametersError(template, loc) { + recordAsyncArrowParametersError({ + at + }) { const { stack } = this; @@ -3602,7 +3836,9 @@ class ExpressionScopeHandler { while (scope.canBeArrowParameterDeclaration()) { if (scope.type === kMaybeAsyncArrowParameterDeclaration) { - scope.recordDeclarationError(template, loc); + scope.recordDeclarationError(Errors.AwaitBindingIdentifier, { + at + }); } scope = stack[--i]; @@ -3615,18 +3851,15 @@ class ExpressionScopeHandler { } = this; const currentScope = stack[stack.length - 1]; if (!currentScope.canBeArrowParameterDeclaration()) return; - currentScope.iterateErrors(({ - message, - loc - }) => { - this.raise(message, { + currentScope.iterateErrors(([toParseError, loc]) => { + this.parser.raise(toParseError, { at: loc }); let i = stack.length - 2; let scope = stack[i]; while (scope.canBeArrowParameterDeclaration()) { - scope.clearDeclarationError(loc); + scope.clearDeclarationError(loc.index); scope = stack[--i]; } }); @@ -3733,10 +3966,10 @@ class UtilParser extends Tokenizer { return false; } - expectContextual(token, template) { + expectContextual(token, toParseError) { if (!this.eatContextual(token)) { - if (template != null) { - throw this.raise(template, { + if (toParseError != null) { + throw this.raise(toParseError, { at: this.state.startLoc }); } @@ -3764,7 +3997,7 @@ class UtilParser extends Tokenizer { semicolon(allowAsi = true) { if (allowAsi ? this.isLineTerminator() : this.eat(13)) return; - this.raise(ErrorMessages.MissingSemicolon, { + this.raise(Errors.MissingSemicolon, { at: this.state.lastTokEndLoc }); } @@ -3773,56 +4006,6 @@ class UtilParser extends Tokenizer { this.eat(type) || this.unexpected(loc, type); } - assertNoSpace(message = "Unexpected space.") { - if (this.state.start > this.state.lastTokEndLoc.index) { - this.raise({ - code: ErrorCodes.SyntaxError, - reasonCode: "UnexpectedSpace", - template: message - }, { - at: this.state.lastTokEndLoc - }); - } - } - - unexpected(loc, type) { - throw this.raise({ - code: ErrorCodes.SyntaxError, - reasonCode: "UnexpectedToken", - template: type != null ? `Unexpected token, expected "${tokenLabelName(type)}"` : "Unexpected token" - }, { - at: loc != null ? loc : this.state.startLoc - }); - } - - getPluginNamesFromConfigs(pluginConfigs) { - return pluginConfigs.map(c => { - if (typeof c === "string") { - return c; - } else { - return c[0]; - } - }); - } - - expectPlugin(pluginConfig, loc) { - if (!this.hasPlugin(pluginConfig)) { - throw this.raiseWithData(loc != null ? loc : this.state.startLoc, { - missingPlugin: this.getPluginNamesFromConfigs([pluginConfig]) - }, `This experimental syntax requires enabling the parser plugin: ${JSON.stringify(pluginConfig)}.`); - } - - return true; - } - - expectOnePlugin(pluginConfigs) { - if (!pluginConfigs.some(c => this.hasPlugin(c))) { - throw this.raiseWithData(this.state.startLoc, { - missingPlugin: this.getPluginNamesFromConfigs(pluginConfigs) - }, `This experimental syntax requires enabling one of the following parser plugin(s): ${pluginConfigs.map(c => JSON.stringify(c)).join(", ")}.`); - } - } - tryParse(fn, oldState = this.state.clone()) { const abortSignal = { node: null @@ -3897,19 +4080,19 @@ class UtilParser extends Tokenizer { } if (shorthandAssignLoc != null) { - this.raise(ErrorMessages.InvalidCoverInitializedName, { + this.raise(Errors.InvalidCoverInitializedName, { at: shorthandAssignLoc }); } if (doubleProtoLoc != null) { - this.raise(ErrorMessages.DuplicateProto, { + this.raise(Errors.DuplicateProto, { at: doubleProtoLoc }); } if (privateKeyLoc != null) { - this.raise(ErrorMessages.UnexpectedPrivateField, { + this.raise(Errors.UnexpectedPrivateField, { at: privateKeyLoc }); } @@ -3956,13 +4139,13 @@ class UtilParser extends Tokenizer { this.inModule = inModule; const oldScope = this.scope; const ScopeHandler = this.getScopeHandler(); - this.scope = new ScopeHandler(this.raise.bind(this), this.inModule); + this.scope = new ScopeHandler(this, inModule); const oldProdParam = this.prodParam; this.prodParam = new ProductionParameterHandler(); const oldClassScope = this.classScope; - this.classScope = new ClassScopeHandler(this.raise.bind(this)); + this.classScope = new ClassScopeHandler(this); const oldExpressionScope = this.expressionScope; - this.expressionScope = new ExpressionScopeHandler(this.raise.bind(this)); + this.expressionScope = new ExpressionScopeHandler(this); return () => { this.state.labels = oldLabels; this.exportedIdentifiers = oldExportedIdentifiers; @@ -4141,55 +4324,96 @@ class NodeUtils extends UtilParser { } const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]); -const FlowErrors = makeErrorTemplates({ - AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.", - AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.", - AssignReservedType: "Cannot overwrite reserved type %0.", - DeclareClassElement: "The `declare` modifier can only appear on class fields.", - DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.", - DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.", - EnumBooleanMemberNotInitialized: "Boolean enum members need to be initialized. Use either `%0 = true,` or `%0 = false,` in enum `%1`.", - EnumDuplicateMemberName: "Enum member names need to be unique, but the name `%0` has already been used before in enum `%1`.", - EnumInconsistentMemberValues: "Enum `%0` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.", - EnumInvalidExplicitType: "Enum type `%1` is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.", - EnumInvalidExplicitTypeUnknownSupplied: "Supplied enum type is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.", - EnumInvalidMemberInitializerPrimaryType: "Enum `%0` has type `%2`, so the initializer of `%1` needs to be a %2 literal.", - EnumInvalidMemberInitializerSymbolType: "Symbol enum members cannot be initialized. Use `%1,` in enum `%0`.", - EnumInvalidMemberInitializerUnknownType: "The enum member initializer for `%1` needs to be a literal (either a boolean, number, or string) in enum `%0`.", - EnumInvalidMemberName: "Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `%0`, consider using `%1`, in enum `%2`.", - EnumNumberMemberNotInitialized: "Number enum members need to be initialized, e.g. `%1 = 1` in enum `%0`.", - EnumStringMemberInconsistentlyInitailized: "String enum members need to consistently either all use initializers, or use no initializers, in enum `%0`.", - GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.", - ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.", - InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.", - InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.", - InexactVariance: "Explicit inexact syntax cannot have variance.", - InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.", - MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.", - NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.", - NestedFlowComment: "Cannot have a flow comment inside another flow comment.", - PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.", - SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.", - SpreadVariance: "Spread properties cannot have variance.", - ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.", - ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.", - ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.", - ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.", - ThisParamNoDefault: "The `this` parameter may not have a default value.", - TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", - TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.", - UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.", - UnexpectedReservedType: "Unexpected reserved type %0.", - UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.", - UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.", - UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.", - UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".', - UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.", - UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`.", - UnsupportedDeclareExportKind: "`declare export %0` is not supported. Use `%1` instead.", - UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.", - UnterminatedFlowComment: "Unterminated flow-comment." -}, ErrorCodes.SyntaxError, "flow"); +const FlowErrors = ParseErrorEnum`flow`(_ => ({ + AmbiguousConditionalArrow: _("Ambiguous expression: wrap the arrow functions in parentheses to disambiguate."), + AmbiguousDeclareModuleKind: _("Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module."), + AssignReservedType: _(({ + reservedType + }) => `Cannot overwrite reserved type ${reservedType}.`), + DeclareClassElement: _("The `declare` modifier can only appear on class fields."), + DeclareClassFieldInitializer: _("Initializers are not allowed in fields with the `declare` modifier."), + DuplicateDeclareModuleExports: _("Duplicate `declare module.exports` statement."), + EnumBooleanMemberNotInitialized: _(({ + memberName, + enumName + }) => `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` or \`${memberName} = false,\` in enum \`${enumName}\`.`), + EnumDuplicateMemberName: _(({ + memberName, + enumName + }) => `Enum member names need to be unique, but the name \`${memberName}\` has already been used before in enum \`${enumName}\`.`), + EnumInconsistentMemberValues: _(({ + enumName + }) => `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`), + EnumInvalidExplicitType: _(({ + invalidEnumType, + enumName + }) => `Enum type \`${invalidEnumType}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`), + EnumInvalidExplicitTypeUnknownSupplied: _(({ + enumName + }) => `Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`), + EnumInvalidMemberInitializerPrimaryType: _(({ + enumName, + memberName, + explicitType + }) => `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of \`${memberName}\` needs to be a ${explicitType} literal.`), + EnumInvalidMemberInitializerSymbolType: _(({ + enumName, + memberName + }) => `Symbol enum members cannot be initialized. Use \`${memberName},\` in enum \`${enumName}\`.`), + EnumInvalidMemberInitializerUnknownType: _(({ + enumName, + memberName + }) => `The enum member initializer for \`${memberName}\` needs to be a literal (either a boolean, number, or string) in enum \`${enumName}\`.`), + EnumInvalidMemberName: _(({ + enumName, + memberName, + suggestion + }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`), + EnumNumberMemberNotInitialized: _(({ + enumName, + memberName + }) => `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`), + EnumStringMemberInconsistentlyInitailized: _(({ + enumName + }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \`${enumName}\`.`), + GetterMayNotHaveThisParam: _("A getter cannot have a `this` parameter."), + ImportTypeShorthandOnlyInPureImport: _("The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements."), + InexactInsideExact: _("Explicit inexact syntax cannot appear inside an explicit exact object type."), + InexactInsideNonObject: _("Explicit inexact syntax cannot appear in class or interface definitions."), + InexactVariance: _("Explicit inexact syntax cannot have variance."), + InvalidNonTypeImportInDeclareModule: _("Imports within a `declare module` body must always be `import type` or `import typeof`."), + MissingTypeParamDefault: _("Type parameter declaration needs a default, since a preceding type parameter declaration has a default."), + NestedDeclareModule: _("`declare module` cannot be used inside another `declare module`."), + NestedFlowComment: _("Cannot have a flow comment inside another flow comment."), + PatternIsOptional: _("A binding pattern parameter cannot be optional in an implementation signature.", { + reasonCode: "OptionalBindingPattern" + }), + SetterMayNotHaveThisParam: _("A setter cannot have a `this` parameter."), + SpreadVariance: _("Spread properties cannot have variance."), + ThisParamAnnotationRequired: _("A type annotation is required for the `this` parameter."), + ThisParamBannedInConstructor: _("Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions."), + ThisParamMayNotBeOptional: _("The `this` parameter cannot be optional."), + ThisParamMustBeFirst: _("The `this` parameter must be the first function parameter."), + ThisParamNoDefault: _("The `this` parameter may not have a default value."), + TypeBeforeInitializer: _("Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`."), + TypeCastInPattern: _("The type cast expression is expected to be wrapped with parenthesis."), + UnexpectedExplicitInexactInObject: _("Explicit inexact syntax must appear at the end of an inexact object."), + UnexpectedReservedType: _(({ + reservedType + }) => `Unexpected reserved type ${reservedType}.`), + UnexpectedReservedUnderscore: _("`_` is only allowed as a type argument to call or new."), + UnexpectedSpaceBetweenModuloChecks: _("Spaces between `%` and `checks` are not allowed here."), + UnexpectedSpreadType: _("Spread operator cannot appear in class or interface definitions."), + UnexpectedSubtractionOperand: _('Unexpected token, expected "number" or "bigint".'), + UnexpectedTokenAfterTypeParameter: _("Expected an arrow function after this type parameter declaration."), + UnexpectedTypeParameterBeforeAsyncArrowFunction: _("Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`."), + UnsupportedDeclareExportKind: _(({ + unsupportedExportKind, + suggestion + }) => `\`declare export ${unsupportedExportKind}\` is not supported. Use \`${suggestion}\` instead.`), + UnsupportedStatementInDeclareModule: _("Only declares and type imports are allowed inside declare module."), + UnterminatedFlowComment: _("Unterminated flow-comment.") +})); function isEsModuleType(bodyElement) { return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration"); @@ -4434,7 +4658,7 @@ var flow = (superClass => class extends superClass { if (isEsModuleType(bodyElement)) { if (kind === "CommonJS") { this.raise(FlowErrors.AmbiguousDeclareModuleKind, { - node: bodyElement + at: bodyElement }); } @@ -4442,13 +4666,13 @@ var flow = (superClass => class extends superClass { } else if (bodyElement.type === "DeclareModuleExports") { if (hasModuleExport) { this.raise(FlowErrors.DuplicateDeclareModuleExports, { - node: bodyElement + at: bodyElement }); } if (kind === "ES") { this.raise(FlowErrors.AmbiguousDeclareModuleKind, { - node: bodyElement + at: bodyElement }); } @@ -4476,10 +4700,11 @@ var flow = (superClass => class extends superClass { } else { if (this.match(75) || this.isLet() || (this.isContextual(126) || this.isContextual(125)) && !insideModule) { const label = this.state.value; - const suggestion = exportSuggestions[label]; throw this.raise(FlowErrors.UnsupportedDeclareExportKind, { - at: this.state.startLoc - }, label, suggestion); + at: this.state.startLoc, + unsupportedExportKind: label, + suggestion: exportSuggestions[label] + }); } if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(127)) { @@ -4605,8 +4830,9 @@ var flow = (superClass => class extends superClass { checkReservedType(word, startLoc, declaration) { if (!reservedTypes.has(word)) return; this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, { - at: startLoc - }, word); + at: startLoc, + reservedType: word + }); } flowParseRestrictedIdentifier(liberal, declaration) { @@ -5004,7 +5230,7 @@ var flow = (superClass => class extends superClass { if (variance) { this.raise(FlowErrors.InexactVariance, { - node: variance + at: variance }); } @@ -5023,7 +5249,7 @@ var flow = (superClass => class extends superClass { if (variance) { this.raise(FlowErrors.SpreadVariance, { - node: variance + at: variance }); } @@ -5055,7 +5281,7 @@ var flow = (superClass => class extends superClass { if (!allowSpread && node.key.name === "constructor" && node.value.this) { this.raise(FlowErrors.ThisParamBannedInConstructor, { - node: node.value.this + at: node.value.this }); } } else { @@ -5081,19 +5307,19 @@ var flow = (superClass => class extends superClass { if (property.value.this) { this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, { - node: property.value.this + at: property.value.this }); } if (length !== paramCount) { - this.raise(property.kind === "get" ? ErrorMessages.BadGetterArity : ErrorMessages.BadSetterArity, { - node: property + this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, { + at: property }); } if (property.kind === "set" && property.value.rest) { - this.raise(ErrorMessages.BadSetterRestParameter, { - node: property + this.raise(Errors.BadSetterRestParameter, { + at: property }); } } @@ -5164,7 +5390,7 @@ var flow = (superClass => class extends superClass { if (lh.type === 14 || lh.type === 17) { if (isThis && !first) { this.raise(FlowErrors.ThisParamMustBeFirst, { - node + at: node }); } @@ -5175,7 +5401,7 @@ var flow = (superClass => class extends superClass { if (isThis) { this.raise(FlowErrors.ThisParamMayNotBeOptional, { - node + at: node }); } } @@ -5915,7 +6141,7 @@ var flow = (superClass => class extends superClass { }); } else if (member.value) { this.raise(FlowErrors.DeclareClassFieldInitializer, { - node: member.value + at: member.value }); } } @@ -5930,9 +6156,10 @@ var flow = (superClass => class extends superClass { const fullWord = "@@" + word; if (!this.isIterator(word) || !this.state.inType) { - this.raise(ErrorMessages.InvalidIdentifier, { - at: this.state.curPosition() - }, fullWord); + this.raise(Errors.InvalidIdentifier, { + at: this.state.curPosition(), + identifierName: fullWord + }); } this.finishToken(128, fullWord); @@ -5968,11 +6195,11 @@ var flow = (superClass => class extends superClass { } toAssignable(node, isLHS = false) { - if (node.type === "TypeCastExpression") { - return super.toAssignable(this.typeCastToParameter(node), isLHS); - } else { - return super.toAssignable(node, isLHS); + if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") { + node.left = this.typeCastToParameter(node.left); } + + super.toAssignable(...arguments); } toAssignableList(exprList, trailingCommaLoc, isLHS) { @@ -5984,7 +6211,7 @@ var flow = (superClass => class extends superClass { } } - return super.toAssignableList(exprList, trailingCommaLoc, isLHS); + super.toAssignableList(exprList, trailingCommaLoc, isLHS); } toReferencedList(exprList, isParenthesizedExpr) { @@ -5995,7 +6222,7 @@ var flow = (superClass => class extends superClass { if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) { this.raise(FlowErrors.TypeCastInPattern, { - node: expr.typeAnnotation + at: expr.typeAnnotation }); } } @@ -6013,10 +6240,8 @@ var flow = (superClass => class extends superClass { return node; } - checkLVal(expr, ...args) { - if (expr.type !== "TypeCastExpression") { - return super.checkLVal(expr, ...args); - } + isValidLVal(type, ...rest) { + return type === "TypeCastExpression" || super.isValidLVal(type, ...rest); } parseClassProperty(node) { @@ -6065,7 +6290,7 @@ var flow = (superClass => class extends superClass { if (params.length > 0 && this.isThisParam(params[0])) { this.raise(FlowErrors.ThisParamBannedInConstructor, { - node: method + at: method }); } } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) { @@ -6073,7 +6298,7 @@ var flow = (superClass => class extends superClass { if (params.length > 0 && this.isThisParam(params[0])) { this.raise(FlowErrors.ThisParamBannedInConstructor, { - node: method + at: method }); } } @@ -6128,11 +6353,11 @@ var flow = (superClass => class extends superClass { if (this.isThisParam(param) && method.kind === "get") { this.raise(FlowErrors.GetterMayNotHaveThisParam, { - node: param + at: param }); } else if (this.isThisParam(param)) { this.raise(FlowErrors.SetterMayNotHaveThisParam, { - node: param + at: param }); } } @@ -6166,13 +6391,13 @@ var flow = (superClass => class extends superClass { if (this.eat(17)) { if (param.type !== "Identifier") { this.raise(FlowErrors.PatternIsOptional, { - node: param + at: param }); } if (this.isThisParam(param)) { this.raise(FlowErrors.ThisParamMayNotBeOptional, { - node: param + at: param }); } @@ -6183,13 +6408,13 @@ var flow = (superClass => class extends superClass { param.typeAnnotation = this.flowParseTypeAnnotation(); } else if (this.isThisParam(param)) { this.raise(FlowErrors.ThisParamAnnotationRequired, { - node: param + at: param }); } if (this.match(29) && this.isThisParam(param)) { this.raise(FlowErrors.ThisParamNoDefault, { - node: param + at: param }); } @@ -6202,7 +6427,7 @@ var flow = (superClass => class extends superClass { if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { this.raise(FlowErrors.TypeBeforeInitializer, { - node: node.typeAnnotation + at: node.typeAnnotation }); } @@ -6217,10 +6442,9 @@ var flow = (superClass => class extends superClass { return isMaybeDefaultImport(this.state.type); } - parseImportSpecifierLocal(node, specifier, type, contextDescription) { + parseImportSpecifierLocal(node, specifier, type) { specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier(); - this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL); - node.specifiers.push(this.finishNode(specifier, type)); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); } maybeParseDefaultImportSpecifier(node) { @@ -6284,9 +6508,10 @@ var flow = (superClass => class extends superClass { specifier.importKind = specifierTypeKind; } else { if (importedIsString) { - throw this.raise(ErrorMessages.ImportBindingIsString, { - node: specifier - }, firstIdent.value); + throw this.raise(Errors.ImportBindingIsString, { + at: specifier, + importName: firstIdent.value + }); } specifier.imported = firstIdent; @@ -6305,7 +6530,7 @@ var flow = (superClass => class extends superClass { if (isInTypeOnlyImport && specifierIsTypeImport) { this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, { - node: specifier + at: specifier }); } @@ -6317,8 +6542,7 @@ var flow = (superClass => class extends superClass { this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true); } - this.checkLVal(specifier.local, "import specifier", BIND_LEXICAL); - return this.finishNode(specifier, "ImportSpecifier"); + return this.finishImportSpecifier(specifier, "ImportSpecifier"); } parseBindingAtom() { @@ -6412,7 +6636,7 @@ var flow = (superClass => class extends superClass { if (!arrow.error && !arrow.aborted) { if (arrow.node.async) { this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, { - node: typeParameters + at: typeParameters }); } @@ -6435,7 +6659,7 @@ var flow = (superClass => class extends superClass { if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; if (arrow.thrown) throw arrow.error; throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, { - node: typeParameters + at: typeParameters }); } @@ -6482,7 +6706,7 @@ var flow = (superClass => class extends superClass { for (let i = 0; i < node.params.length; i++) { if (this.isThisParam(node.params[i]) && i > 0) { this.raise(FlowErrors.ThisParamMustBeFirst, { - node: node.params[i] + at: node.params[i] }); } } @@ -6561,7 +6785,8 @@ var flow = (superClass => class extends superClass { return super.parseSubscript(base, startPos, startLoc, noCalls, subscriptState); } - parseNewArguments(node) { + parseNewCallee(node) { + super.parseNewCallee(node); let targs = null; if (this.shouldParseTypes() && this.match(47)) { @@ -6569,7 +6794,6 @@ var flow = (superClass => class extends superClass { } node.typeArguments = targs; - super.parseNewArguments(node); } parseAsyncArrowWithTypeParameters(startPos, startLoc) { @@ -6633,7 +6857,7 @@ var flow = (superClass => class extends superClass { const end = this.input.indexOf("*-/", this.state.pos + 2); if (end === -1) { - throw this.raise(ErrorMessages.UnterminatedComment, { + throw this.raise(Errors.UnterminatedComment, { at: this.state.curPosition() }); } @@ -6677,7 +6901,7 @@ var flow = (superClass => class extends superClass { const end = this.input.indexOf("*/", this.state.pos); if (end === -1) { - throw this.raise(ErrorMessages.UnterminatedComment, { + throw this.raise(Errors.UnterminatedComment, { at: this.state.curPosition() }); } @@ -6688,27 +6912,16 @@ var flow = (superClass => class extends superClass { memberName }) { this.raise(FlowErrors.EnumBooleanMemberNotInitialized, { - at: loc - }, memberName, enumName); - } - - flowEnumErrorInvalidExplicitType(loc, { - enumName, - suppliedType - }) { - return this.raise(suppliedType === null ? FlowErrors.EnumInvalidExplicitTypeUnknownSupplied : FlowErrors.EnumInvalidExplicitType, { - at: loc - }, enumName, suppliedType); + at: loc, + memberName, + enumName + }); } - flowEnumErrorInvalidMemberInitializer(loc, { - enumName, - explicitType, - memberName - }) { - return this.raise(explicitType === "boolean" || explicitType === "number" || explicitType === "string" ? FlowErrors.EnumInvalidMemberInitializerPrimaryType : explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerUnknownType, { + flowEnumErrorInvalidMemberInitializer(loc, enumContext) { + return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, Object.assign({ at: loc - }, enumName, memberName, explicitType); + }, enumContext)); } flowEnumErrorNumberMemberNotInitialized(loc, { @@ -6716,16 +6929,19 @@ var flow = (superClass => class extends superClass { memberName }) { this.raise(FlowErrors.EnumNumberMemberNotInitialized, { - at: loc - }, enumName, memberName); + at: loc, + enumName, + memberName + }); } flowEnumErrorStringMemberInconsistentlyInitailized(node, { enumName }) { this.raise(FlowErrors.EnumStringMemberInconsistentlyInitailized, { - node - }, enumName); + at: node, + enumName + }); } flowEnumMemberInit() { @@ -6856,14 +7072,19 @@ var flow = (superClass => class extends superClass { if (/^[a-z]/.test(memberName)) { this.raise(FlowErrors.EnumInvalidMemberName, { - node: id - }, memberName, memberName[0].toUpperCase() + memberName.slice(1), enumName); + at: id, + memberName, + suggestion: memberName[0].toUpperCase() + memberName.slice(1), + enumName + }); } if (seenNames.has(memberName)) { this.raise(FlowErrors.EnumDuplicateMemberName, { - node: id - }, memberName, enumName); + at: id, + memberName, + enumName + }); } seenNames.add(memberName); @@ -6961,30 +7182,29 @@ var flow = (superClass => class extends superClass { flowEnumParseExplicitType({ enumName }) { - if (this.eatContextual(101)) { - if (!tokenIsIdentifier(this.state.type)) { - throw this.flowEnumErrorInvalidExplicitType(this.state.startLoc, { - enumName, - suppliedType: null - }); - } + if (!this.eatContextual(101)) return null; - const { - value - } = this.state; - this.next(); + if (!tokenIsIdentifier(this.state.type)) { + throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, { + at: this.state.startLoc, + enumName + }); + } - if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") { - this.flowEnumErrorInvalidExplicitType(this.state.startLoc, { - enumName, - suppliedType: value - }); - } + const { + value + } = this.state; + this.next(); - return value; + if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") { + this.raise(FlowErrors.EnumInvalidExplicitType, { + at: this.state.startLoc, + enumName, + invalidEnumType: value + }); } - return null; + return value; } flowEnumBody(node, id) { @@ -7075,8 +7295,9 @@ var flow = (superClass => class extends superClass { return this.finishNode(node, "EnumNumberBody"); } else { this.raise(FlowErrors.EnumInconsistentMemberValues, { - at: nameLoc - }, enumName); + at: nameLoc, + enumName + }); return empty(); } } @@ -7108,6 +7329,7 @@ var flow = (superClass => class extends superClass { }); const entities = { + __proto__: null, quot: "\u0022", amp: "&", apos: "\u0027", @@ -7363,17 +7585,21 @@ const entities = { diams: "\u2666" }; -const HEX_NUMBER = /^[\da-fA-F]+$/; -const DECIMAL_NUMBER = /^\d+$/; -const JsxErrors = makeErrorTemplates({ - AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.", - MissingClosingTagElement: "Expected corresponding JSX closing tag for <%0>.", - MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.", - UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?", - UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.", - UnterminatedJsxContent: "Unterminated JSX contents.", - UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...?" -}, ErrorCodes.SyntaxError, "jsx"); +const JsxErrors = ParseErrorEnum`jsx`(_ => ({ + AttributeIsEmpty: _("JSX attributes must only be assigned a non-empty expression."), + MissingClosingTagElement: _(({ + openingTagName + }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`), + MissingClosingTagFragment: _("Expected corresponding JSX closing tag for <>."), + UnexpectedSequenceExpression: _("Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?"), + UnexpectedToken: _(({ + unexpected, + HTMLEntity + }) => `Unexpected token \`${unexpected}\`. Did you mean \`${HTMLEntity}\` or \`{'${unexpected}'}\`?`), + UnsupportedJsxValue: _("JSX value should be either an expression or a quoted JSX text."), + UnterminatedJsxContent: _("Unterminated JSX contents."), + UnwrappedAdjacentJSXElements: _("Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...?") +})); function isFragment(object) { return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false; @@ -7469,7 +7695,7 @@ var jsx = (superClass => class extends superClass { for (;;) { if (this.state.pos >= this.length) { - throw this.raise(ErrorMessages.UnterminatedString, { + throw this.raise(Errors.UnterminatedString, { at: this.state.startLoc }); } @@ -7495,46 +7721,44 @@ var jsx = (superClass => class extends superClass { } jsxReadEntity() { - let str = ""; - let count = 0; - let entity; - let ch = this.input[this.state.pos]; const startPos = ++this.state.pos; - while (this.state.pos < this.length && count++ < 10) { - ch = this.input[this.state.pos++]; + if (this.codePointAtPos(this.state.pos) === 35) { + ++this.state.pos; + let radix = 10; - if (ch === ";") { - if (str[0] === "#") { - if (str[1] === "x") { - str = str.substr(2); + if (this.codePointAtPos(this.state.pos) === 120) { + radix = 16; + ++this.state.pos; + } - if (HEX_NUMBER.test(str)) { - entity = String.fromCodePoint(parseInt(str, 16)); - } - } else { - str = str.substr(1); + const codePoint = this.readInt(radix, undefined, false, "bail"); - if (DECIMAL_NUMBER.test(str)) { - entity = String.fromCodePoint(parseInt(str, 10)); - } - } - } else { - entity = entities[str]; - } + if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) { + ++this.state.pos; + return String.fromCodePoint(codePoint); + } + } else { + let count = 0; + let semi = false; - break; + while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) == 59)) { + ++this.state.pos; } - str += ch; - } + if (semi) { + const desc = this.input.slice(startPos, this.state.pos); + const entity = entities[desc]; + ++this.state.pos; - if (!entity) { - this.state.pos = startPos; - return "&"; + if (entity) { + return entity; + } + } } - return entity; + this.state.pos = startPos; + return "&"; } jsxReadWord() { @@ -7605,7 +7829,7 @@ var jsx = (superClass => class extends superClass { if (node.expression.type === "JSXEmptyExpression") { this.raise(JsxErrors.AttributeIsEmpty, { - node + at: node }); } @@ -7631,6 +7855,7 @@ var jsx = (superClass => class extends superClass { this.next(); node.expression = this.parseExpression(); this.setContext(types.j_oTag); + this.state.canStartJSXElement = true; this.expect(8); return this.finishNode(node, "JSXSpreadChild"); } @@ -7644,6 +7869,7 @@ var jsx = (superClass => class extends superClass { } this.setContext(previousContext); + this.state.canStartJSXElement = true; this.expect(8); return this.finishNode(node, "JSXExpressionContainer"); } @@ -7657,6 +7883,7 @@ var jsx = (superClass => class extends superClass { this.expect(21); node.argument = this.parseMaybeAssignAllowIn(); this.setContext(types.j_oTag); + this.state.canStartJSXElement = true; this.expect(8); return this.finishNode(node, "JSXSpreadAttribute"); } @@ -7669,8 +7896,7 @@ var jsx = (superClass => class extends superClass { jsxParseOpeningElementAt(startPos, startLoc) { const node = this.startNodeAt(startPos, startLoc); - if (this.match(139)) { - this.expect(139); + if (this.eat(139)) { return this.finishNode(node, "JSXOpeningFragment"); } @@ -7694,8 +7920,7 @@ var jsx = (superClass => class extends superClass { jsxParseClosingElementAt(startPos, startLoc) { const node = this.startNodeAt(startPos, startLoc); - if (this.match(139)) { - this.expect(139); + if (this.eat(139)) { return this.finishNode(node, "JSXClosingFragment"); } @@ -7752,17 +7977,19 @@ var jsx = (superClass => class extends superClass { if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) { this.raise(JsxErrors.MissingClosingTagFragment, { - node: closingElement + at: closingElement }); } else if (!isFragment(openingElement) && isFragment(closingElement)) { this.raise(JsxErrors.MissingClosingTagElement, { - node: closingElement - }, getQualifiedJSXName(openingElement.name)); + at: closingElement, + openingTagName: getQualifiedJSXName(openingElement.name) + }); } else if (!isFragment(openingElement) && !isFragment(closingElement)) { if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { this.raise(JsxErrors.MissingClosingTagElement, { - node: closingElement - }, getQualifiedJSXName(openingElement.name)); + at: closingElement, + openingTagName: getQualifiedJSXName(openingElement.name) + }); } } } @@ -7957,6 +8184,8 @@ class TypeScriptScopeHandler extends ScopeHandler { } +const getOwn$1 = (object, key) => Object.hasOwnProperty.call(object, key) && object[key]; + function nonNull(x) { if (x == null) { throw new Error(`Unexpected ${x} value.`); @@ -7971,61 +8200,100 @@ function assert(x) { } } -const TSErrors = makeErrorTemplates({ - AbstractMethodHasImplementation: "Method '%0' cannot have an implementation because it is marked abstract.", - AbstractPropertyHasInitializer: "Property '%0' cannot have an initializer because it is marked abstract.", - AccesorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", - AccesorCannotHaveTypeParameters: "An accessor cannot have type parameters.", - ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.", - ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.", - ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.", - DeclareAccessor: "'declare' is not allowed in %0ters.", - DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.", - DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.", - DuplicateAccessibilityModifier: "Accessibility modifier already seen.", - DuplicateModifier: "Duplicate modifier: '%0'.", - EmptyHeritageClauseType: "'%0' list cannot be empty.", - EmptyTypeArguments: "Type argument list cannot be empty.", - EmptyTypeParameters: "Type parameter list cannot be empty.", - ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.", - ImportAliasHasImportType: "An import alias can not use 'import type'.", - IncompatibleModifiers: "'%0' modifier cannot be used with '%1' modifier.", - IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.", - IndexSignatureHasAccessibility: "Index signatures cannot have an accessibility modifier ('%0').", - IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.", - IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.", - IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.", - InvalidModifierOnTypeMember: "'%0' modifier cannot appear on a type member.", - InvalidModifiersOrder: "'%0' modifier must precede '%1' modifier.", - InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.", - MissingInterfaceName: "'interface' declarations must be followed by an identifier.", - MixedLabeledAndUnlabeledElements: "Tuple members must all have names or all not have names.", - NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.", - NonClassMethodPropertyHasAbstractModifer: "'abstract' modifier can only appear on a class, method, or property declaration.", - OptionalTypeBeforeRequired: "A required element cannot follow an optional element.", - OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.", - PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.", - PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.", - PrivateElementHasAccessibility: "Private elements cannot have an accessibility modifier ('%0').", - ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.", - ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `() => ...`.", - ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.", - SetAccesorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", - SetAccesorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", - SetAccesorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", - StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.", - TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", - TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.", - TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.", - TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.", - UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.", - UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.", - UnexpectedTypeAnnotation: "Did not expect a type annotation here.", - UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.", - UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.", - UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.", - UnsupportedSignatureParameterKind: "Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got %0." -}, ErrorCodes.SyntaxError, "typescript"); +const TSErrors = ParseErrorEnum`typescript`(_ => ({ + AbstractMethodHasImplementation: _(({ + methodName + }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`), + AbstractPropertyHasInitializer: _(({ + propertyName + }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`), + AccesorCannotDeclareThisParameter: _("'get' and 'set' accessors cannot declare 'this' parameters."), + AccesorCannotHaveTypeParameters: _("An accessor cannot have type parameters."), + CannotFindName: _(({ + name + }) => `Cannot find name '${name}'.`), + ClassMethodHasDeclare: _("Class methods cannot have the 'declare' modifier."), + ClassMethodHasReadonly: _("Class methods cannot have the 'readonly' modifier."), + ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference: _("A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference."), + ConstructorHasTypeParameters: _("Type parameters cannot appear on a constructor declaration."), + DeclareAccessor: _(({ + kind + }) => `'declare' is not allowed in ${kind}ters.`), + DeclareClassFieldHasInitializer: _("Initializers are not allowed in ambient contexts."), + DeclareFunctionHasImplementation: _("An implementation cannot be declared in ambient contexts."), + DuplicateAccessibilityModifier: _(({ + modifier + }) => `Accessibility modifier already seen.`), + DuplicateModifier: _(({ + modifier + }) => `Duplicate modifier: '${modifier}'.`), + EmptyHeritageClauseType: _(({ + token + }) => `'${token}' list cannot be empty.`), + EmptyTypeArguments: _("Type argument list cannot be empty."), + EmptyTypeParameters: _("Type parameter list cannot be empty."), + ExpectedAmbientAfterExportDeclare: _("'export declare' must be followed by an ambient declaration."), + ImportAliasHasImportType: _("An import alias can not use 'import type'."), + IncompatibleModifiers: _(({ + modifiers + }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`), + IndexSignatureHasAbstract: _("Index signatures cannot have the 'abstract' modifier."), + IndexSignatureHasAccessibility: _(({ + modifier + }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`), + IndexSignatureHasDeclare: _("Index signatures cannot have the 'declare' modifier."), + IndexSignatureHasOverride: _("'override' modifier cannot appear on an index signature."), + IndexSignatureHasStatic: _("Index signatures cannot have the 'static' modifier."), + InitializerNotAllowedInAmbientContext: _("Initializers are not allowed in ambient contexts."), + InvalidModifierOnTypeMember: _(({ + modifier + }) => `'${modifier}' modifier cannot appear on a type member.`), + InvalidModifierOnTypeParameter: _(({ + modifier + }) => `'${modifier}' modifier cannot appear on a type parameter.`), + InvalidModifierOnTypeParameterPositions: _(({ + modifier + }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`), + InvalidModifiersOrder: _(({ + orderedModifiers + }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`), + InvalidPropertyAccessAfterInstantiationExpression: _("Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments."), + InvalidTupleMemberLabel: _("Tuple members must be labeled with a simple identifier."), + MissingInterfaceName: _("'interface' declarations must be followed by an identifier."), + MixedLabeledAndUnlabeledElements: _("Tuple members must all have names or all not have names."), + NonAbstractClassHasAbstractMethod: _("Abstract methods can only appear within an abstract class."), + NonClassMethodPropertyHasAbstractModifer: _("'abstract' modifier can only appear on a class, method, or property declaration."), + OptionalTypeBeforeRequired: _("A required element cannot follow an optional element."), + OverrideNotInSubClass: _("This member cannot have an 'override' modifier because its containing class does not extend another class."), + PatternIsOptional: _("A binding pattern parameter cannot be optional in an implementation signature."), + PrivateElementHasAbstract: _("Private elements cannot have the 'abstract' modifier."), + PrivateElementHasAccessibility: _(({ + modifier + }) => `Private elements cannot have an accessibility modifier ('${modifier}').`), + ReadonlyForMethodSignature: _("'readonly' modifier can only appear on a property declaration or index signature."), + ReservedArrowTypeParam: _("This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `() => ...`."), + ReservedTypeAssertion: _("This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead."), + SetAccesorCannotHaveOptionalParameter: _("A 'set' accessor cannot have an optional parameter."), + SetAccesorCannotHaveRestParameter: _("A 'set' accessor cannot have rest parameter."), + SetAccesorCannotHaveReturnType: _("A 'set' accessor cannot have a return type annotation."), + SingleTypeParameterWithoutTrailingComma: _(({ + typeParameterName + }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`), + StaticBlockCannotHaveModifier: _("Static class blocks cannot have any modifier."), + TypeAnnotationAfterAssign: _("Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`."), + TypeImportCannotSpecifyDefaultAndNamed: _("A type-only import can specify a default import or named bindings, but not both."), + TypeModifierIsUsedInTypeExports: _("The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement."), + TypeModifierIsUsedInTypeImports: _("The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement."), + UnexpectedParameterModifier: _("A parameter property is only allowed in a constructor implementation."), + UnexpectedReadonly: _("'readonly' type modifier is only permitted on array and tuple literal types."), + UnexpectedTypeAnnotation: _("Did not expect a type annotation here."), + UnexpectedTypeCastInParameter: _("Unexpected type cast in parameter position."), + UnsupportedImportTypeArgument: _("Argument in a type import must be a string literal."), + UnsupportedParameterPropertyKind: _("A parameter property may not be declared using a binding pattern."), + UnsupportedSignatureParameterKind: _(({ + type + }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`) +})); function keywordTypeFromName(value) { switch (value) { @@ -8068,6 +8336,10 @@ function tsIsAccessModifier(modifier) { return modifier === "private" || modifier === "public" || modifier === "protected"; } +function tsIsVarianceAnnotations(modifier) { + return modifier === "in" || modifier === "out"; +} + var typescript = (superClass => class extends superClass { getScopeHandler() { return TypeScriptScopeHandler; @@ -8087,7 +8359,7 @@ var typescript = (superClass => class extends superClass { } tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) { - if (!tokenIsIdentifier(this.state.type)) { + if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58) { return undefined; } @@ -8106,20 +8378,28 @@ var typescript = (superClass => class extends superClass { return undefined; } - tsParseModifiers(modified, allowedModifiers, disallowedModifiers, errorTemplate, stopOnStartOfClassStaticBlock) { + tsParseModifiers({ + modified, + allowedModifiers, + disallowedModifiers, + stopOnStartOfClassStaticBlock, + errorTemplate = TSErrors.InvalidModifierOnTypeMember + }) { const enforceOrder = (loc, modifier, before, after) => { if (modifier === before && modified[after]) { this.raise(TSErrors.InvalidModifiersOrder, { - at: loc - }, before, after); + at: loc, + orderedModifiers: [before, after] + }); } }; const incompatible = (loc, modifier, mod1, mod2) => { if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) { this.raise(TSErrors.IncompatibleModifiers, { - at: loc - }, mod1, mod2); + at: loc, + modifiers: [mod1, mod2] + }); } }; @@ -8133,7 +8413,8 @@ var typescript = (superClass => class extends superClass { if (tsIsAccessModifier(modifier)) { if (modified.accessibility) { this.raise(TSErrors.DuplicateAccessibilityModifier, { - at: startLoc + at: startLoc, + modifier }); } else { enforceOrder(startLoc, modifier, modifier, "override"); @@ -8141,11 +8422,22 @@ var typescript = (superClass => class extends superClass { enforceOrder(startLoc, modifier, modifier, "readonly"); modified.accessibility = modifier; } + } else if (tsIsVarianceAnnotations(modifier)) { + if (modified[modifier]) { + this.raise(TSErrors.DuplicateModifier, { + at: startLoc, + modifier + }); + } + + modified[modifier] = true; + enforceOrder(startLoc, modifier, "in", "out"); } else { if (Object.hasOwnProperty.call(modified, modifier)) { this.raise(TSErrors.DuplicateModifier, { - at: startLoc - }, modifier); + at: startLoc, + modifier + }); } else { enforceOrder(startLoc, modifier, "static", "readonly"); enforceOrder(startLoc, modifier, "static", "override"); @@ -8160,8 +8452,9 @@ var typescript = (superClass => class extends superClass { if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) { this.raise(errorTemplate, { - at: startLoc - }, modifier); + at: startLoc, + modifier + }); } } } @@ -8275,7 +8568,7 @@ var typescript = (superClass => class extends superClass { this.expect(11); if (this.eat(16)) { - node.qualifier = this.tsParseEntityName(true); + node.qualifier = this.tsParseEntityName(); } if (this.match(47)) { @@ -8285,8 +8578,8 @@ var typescript = (superClass => class extends superClass { return this.finishNode(node, "TSImportType"); } - tsParseEntityName(allowReservedWords) { - let entity = this.parseIdentifier(); + tsParseEntityName(allowReservedWords = true) { + let entity = this.parseIdentifier(allowReservedWords); while (this.eat(16)) { const node = this.startNodeAtNode(entity); @@ -8300,7 +8593,7 @@ var typescript = (superClass => class extends superClass { tsParseTypeReference() { const node = this.startNode(); - node.typeName = this.tsParseEntityName(false); + node.typeName = this.tsParseEntityName(); if (!this.hasPrecedingLineBreak() && this.match(47)) { node.typeParameters = this.tsParseTypeArguments(); @@ -8331,27 +8624,50 @@ var typescript = (superClass => class extends superClass { if (this.match(83)) { node.exprName = this.tsParseImportType(); } else { - node.exprName = this.tsParseEntityName(true); + node.exprName = this.tsParseEntityName(); + } + + if (!this.hasPrecedingLineBreak() && this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); } return this.finishNode(node, "TSTypeQuery"); } - tsParseTypeParameter() { + tsParseInOutModifiers(node) { + this.tsParseModifiers({ + modified: node, + allowedModifiers: ["in", "out"], + disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + } + + tsParseNoneModifiers(node) { + this.tsParseModifiers({ + modified: node, + allowedModifiers: [], + disallowedModifiers: ["in", "out"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }); + } + + tsParseTypeParameter(parseModifiers = this.tsParseNoneModifiers.bind(this)) { const node = this.startNode(); + parseModifiers(node); node.name = this.tsParseTypeParameterName(); node.constraint = this.tsEatThenParseType(81); node.default = this.tsEatThenParseType(29); return this.finishNode(node, "TSTypeParameter"); } - tsTryParseTypeParameters() { + tsTryParseTypeParameters(parseModifiers) { if (this.match(47)) { - return this.tsParseTypeParameters(); + return this.tsParseTypeParameters(parseModifiers); } } - tsParseTypeParameters() { + tsParseTypeParameters(parseModifiers) { const node = this.startNode(); if (this.match(47) || this.match(138)) { @@ -8363,11 +8679,11 @@ var typescript = (superClass => class extends superClass { const refTrailingCommaPos = { value: -1 }; - node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this), false, true, refTrailingCommaPos); + node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos); if (node.params.length === 0) { this.raise(TSErrors.EmptyTypeParameters, { - node + at: node }); } @@ -8379,12 +8695,18 @@ var typescript = (superClass => class extends superClass { } tsTryNextParseConstantContext() { - if (this.lookahead().type === 75) { - this.next(); - return this.tsParseTypeReference(); + if (this.lookahead().type !== 75) return null; + this.next(); + const typeReference = this.tsParseTypeReference(); + + if (typeReference.typeParameters) { + this.raise(TSErrors.CannotFindName, { + at: typeReference.typeName, + name: "const" + }); } - return null; + return typeReference; } tsFillSignature(returnToken, signature) { @@ -8406,8 +8728,9 @@ var typescript = (superClass => class extends superClass { return this.parseBindingList(11, 41).map(pattern => { if (pattern.type !== "Identifier" && pattern.type !== "RestElement" && pattern.type !== "ObjectPattern" && pattern.type !== "ArrayPattern") { this.raise(TSErrors.UnsupportedSignatureParameterKind, { - node: pattern - }, pattern.type); + at: pattern, + type: pattern.type + }); } return pattern; @@ -8461,7 +8784,7 @@ var typescript = (superClass => class extends superClass { if (this.match(10) || this.match(47)) { if (readonly) { this.raise(TSErrors.ReadonlyForMethodSignature, { - node + at: node }); } @@ -8480,7 +8803,7 @@ var typescript = (superClass => class extends superClass { if (method.kind === "get") { if (method[paramsKey].length > 0) { - this.raise(ErrorMessages.BadGetterArity, { + this.raise(Errors.BadGetterArity, { at: this.state.curPosition() }); @@ -8492,7 +8815,7 @@ var typescript = (superClass => class extends superClass { } } else if (method.kind === "set") { if (method[paramsKey].length !== 1) { - this.raise(ErrorMessages.BadSetterArity, { + this.raise(Errors.BadSetterArity, { at: this.state.curPosition() }); } else { @@ -8519,7 +8842,7 @@ var typescript = (superClass => class extends superClass { if (method[returnTypeKey]) { this.raise(TSErrors.SetAccesorCannotHaveReturnType, { - node: method[returnTypeKey] + at: method[returnTypeKey] }); } } else { @@ -8556,7 +8879,11 @@ var typescript = (superClass => class extends superClass { } } - this.tsParseModifiers(node, ["readonly"], ["declare", "abstract", "private", "protected", "public", "static", "override"], TSErrors.InvalidModifierOnTypeMember); + this.tsParseModifiers({ + modified: node, + allowedModifiers: ["readonly"], + disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"] + }); const idx = this.tsTryParseIndexSignature(node); if (idx) { @@ -8663,7 +8990,7 @@ var typescript = (superClass => class extends superClass { if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) { this.raise(TSErrors.OptionalTypeBeforeRequired, { - node: elementNode + at: elementNode }); } @@ -8679,7 +9006,7 @@ var typescript = (superClass => class extends superClass { if (labeledElements !== isLabeled) { this.raise(TSErrors.MixedLabeledAndUnlabeledElements, { - node: elementNode + at: elementNode }); } }); @@ -8704,7 +9031,7 @@ var typescript = (superClass => class extends superClass { labeledNode.label = type.typeName; } else { this.raise(TSErrors.InvalidTupleMemberLabel, { - node: type + at: type }); labeledNode.label = type; } @@ -8743,7 +9070,7 @@ var typescript = (superClass => class extends superClass { this.next(); } - this.tsFillSignature(19, node); + this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node)); return this.finishNode(node, type); } @@ -8900,7 +9227,7 @@ var typescript = (superClass => class extends superClass { default: this.raise(TSErrors.UnexpectedReadonly, { - node + at: node }); } } @@ -8910,13 +9237,24 @@ var typescript = (superClass => class extends superClass { this.expectContextual(112); const typeParameter = this.startNode(); typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType()); node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); return this.finishNode(node, "TSInferType"); } + tsParseConstraintForInferType() { + if (this.eat(81)) { + const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType()); + + if (this.state.inDisallowConditionalTypesContext || !this.match(17)) { + return constraint; + } + } + } + tsParseTypeOperatorOrHigher() { const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc; - return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(112) ? this.tsParseInferType() : this.tsParseArrayTypeOrHigher(); + return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(112) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher()); } tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) { @@ -8959,37 +9297,32 @@ var typescript = (superClass => class extends superClass { } if (this.match(5)) { - let braceStackCounter = 1; - this.next(); - - while (braceStackCounter > 0) { - if (this.match(5)) { - ++braceStackCounter; - } else if (this.match(8)) { - --braceStackCounter; - } + const { + errors + } = this.state; + const previousErrorCount = errors.length; - this.next(); + try { + this.parseObjectLike(8, true); + return errors.length === previousErrorCount; + } catch (_unused) { + return false; } - - return true; } if (this.match(0)) { - let braceStackCounter = 1; this.next(); + const { + errors + } = this.state; + const previousErrorCount = errors.length; - while (braceStackCounter > 0) { - if (this.match(0)) { - ++braceStackCounter; - } else if (this.match(3)) { - --braceStackCounter; - } - - this.next(); + try { + this.parseBindingList(3, 93, true); + return errors.length === previousErrorCount; + } catch (_unused2) { + return false; } - - return true; } return false; @@ -9100,9 +9433,10 @@ var typescript = (superClass => class extends superClass { } if (containsEsc) { - this.raise(ErrorMessages.InvalidEscapedReservedWord, { - at: this.state.lastTokStartLoc - }, "asserts"); + this.raise(Errors.InvalidEscapedReservedWord, { + at: this.state.lastTokStartLoc, + reservedWord: "asserts" + }); } return true; @@ -9120,17 +9454,17 @@ var typescript = (superClass => class extends superClass { assert(this.state.inType); const type = this.tsParseNonConditionalType(); - if (this.hasPrecedingLineBreak() || !this.eat(81)) { + if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) { return type; } const node = this.startNodeAtNode(type); node.checkType = type; - node.extendsType = this.tsParseNonConditionalType(); + node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType()); this.expect(17); - node.trueType = this.tsParseType(); + node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); this.expect(14); - node.falseType = this.tsParseType(); + node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); return this.finishNode(node, "TSConditionalType"); } @@ -9169,34 +9503,37 @@ var typescript = (superClass => class extends superClass { return this.finishNode(node, "TSTypeAssertion"); } - tsParseHeritageClause(descriptor) { + tsParseHeritageClause(token) { const originalStartLoc = this.state.startLoc; - const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", this.tsParseExpressionWithTypeArguments.bind(this)); + const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", () => { + const node = this.startNode(); + node.expression = this.tsParseEntityName(); + + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + + return this.finishNode(node, "TSExpressionWithTypeArguments"); + }); if (!delimitedList.length) { this.raise(TSErrors.EmptyHeritageClauseType, { - at: originalStartLoc - }, descriptor); + at: originalStartLoc, + token + }); } return delimitedList; } - tsParseExpressionWithTypeArguments() { - const node = this.startNode(); - node.expression = this.tsParseEntityName(false); - - if (this.match(47)) { - node.typeParameters = this.tsParseTypeArguments(); - } - - return this.finishNode(node, "TSExpressionWithTypeArguments"); - } + tsParseInterfaceDeclaration(node, properties = {}) { + if (this.hasFollowingLineBreak()) return null; + this.expectContextual(125); + if (properties.declare) node.declare = true; - tsParseInterfaceDeclaration(node) { if (tokenIsIdentifier(this.state.type)) { node.id = this.parseIdentifier(); - this.checkLVal(node.id, "typescript interface declaration", BIND_TS_INTERFACE); + this.checkIdentifier(node.id, BIND_TS_INTERFACE); } else { node.id = null; this.raise(TSErrors.MissingInterfaceName, { @@ -9204,7 +9541,7 @@ var typescript = (superClass => class extends superClass { }); } - node.typeParameters = this.tsTryParseTypeParameters(); + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this)); if (this.eat(81)) { node.extends = this.tsParseHeritageClause("extends"); @@ -9218,9 +9555,9 @@ var typescript = (superClass => class extends superClass { tsParseTypeAliasDeclaration(node) { node.id = this.parseIdentifier(); - this.checkLVal(node.id, "typescript type alias", BIND_TS_TYPE); - node.typeParameters = this.tsTryParseTypeParameters(); + this.checkIdentifier(node.id, BIND_TS_TYPE); node.typeAnnotation = this.tsInType(() => { + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this)); this.expect(29); if (this.isContextual(111) && this.lookahead().type !== 16) { @@ -9257,6 +9594,28 @@ var typescript = (superClass => class extends superClass { } } + tsInDisallowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = true; + + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + + tsInAllowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = false; + + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsEatThenParseType(token) { return !this.match(token) ? undefined : this.tsNextThenParseType(); } @@ -9287,10 +9646,12 @@ var typescript = (superClass => class extends superClass { return this.finishNode(node, "TSEnumMember"); } - tsParseEnumDeclaration(node, isConst) { - if (isConst) node.const = true; + tsParseEnumDeclaration(node, properties = {}) { + if (properties.const) node.const = true; + if (properties.declare) node.declare = true; + this.expectContextual(122); node.id = this.parseIdentifier(); - this.checkLVal(node.id, "typescript enum declaration", isConst ? BIND_TS_CONST_ENUM : BIND_TS_ENUM); + this.checkIdentifier(node.id, node.const ? BIND_TS_CONST_ENUM : BIND_TS_ENUM); this.expect(5); node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); this.expect(8); @@ -9310,7 +9671,7 @@ var typescript = (superClass => class extends superClass { node.id = this.parseIdentifier(); if (!nested) { - this.checkLVal(node.id, "module or namespace declaration", BIND_TS_NAMESPACE); + this.checkIdentifier(node.id, BIND_TS_NAMESPACE); } if (this.eat(16)) { @@ -9354,13 +9715,13 @@ var typescript = (superClass => class extends superClass { tsParseImportEqualsDeclaration(node, isExport) { node.isExport = isExport || false; node.id = this.parseIdentifier(); - this.checkLVal(node.id, "import equals declaration", BIND_LEXICAL); + this.checkIdentifier(node.id, BIND_LEXICAL); this.expect(29); const moduleReference = this.tsParseModuleReference(); if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") { this.raise(TSErrors.ImportAliasHasImportType, { - node: moduleReference + at: moduleReference }); } @@ -9431,35 +9792,48 @@ var typescript = (superClass => class extends superClass { } return this.tsInAmbientContext(() => { - switch (starttype) { - case 68: - nany.declare = true; - return this.parseFunctionStatement(nany, false, true); + if (starttype === 68) { + nany.declare = true; + return this.parseFunctionStatement(nany, false, true); + } - case 80: - nany.declare = true; - return this.parseClass(nany, true, false); + if (starttype === 80) { + nany.declare = true; + return this.parseClass(nany, true, false); + } - case 75: - if (this.match(75) && this.isLookaheadContextual("enum")) { - this.expect(75); - this.expectContextual(122); - return this.tsParseEnumDeclaration(nany, true); - } + if (starttype === 122) { + return this.tsParseEnumDeclaration(nany, { + declare: true + }); + } - case 74: - kind = kind || this.state.value; - return this.parseVarStatement(nany, kind); + if (starttype === 109) { + return this.tsParseAmbientExternalModuleDeclaration(nany); + } - case 109: - return this.tsParseAmbientExternalModuleDeclaration(nany); + if (starttype === 75 || starttype === 74) { + if (!this.match(75) || !this.isLookaheadContextual("enum")) { + nany.declare = true; + return this.parseVarStatement(nany, kind || this.state.value, true); + } - default: - { - if (tokenIsIdentifier(starttype)) { - return this.tsParseDeclaration(nany, this.state.value, true); - } - } + this.expect(75); + return this.tsParseEnumDeclaration(nany, { + const: true, + declare: true + }); + } + + if (starttype === 125) { + const result = this.tsParseInterfaceDeclaration(nany, { + declare: true + }); + if (result) return result; + } + + if (tokenIsIdentifier(starttype)) { + return this.tsParseDeclaration(nany, this.state.value, true); } }); } @@ -9511,21 +9885,6 @@ var typescript = (superClass => class extends superClass { break; - case "enum": - if (next || tokenIsIdentifier(this.state.type)) { - if (next) this.next(); - return this.tsParseEnumDeclaration(node, false); - } - - break; - - case "interface": - if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { - return this.tsParseInterfaceDeclaration(node); - } - - break; - case "module": if (this.tsCheckLineTerminator(next)) { if (this.match(129)) { @@ -9604,7 +9963,7 @@ var typescript = (superClass => class extends superClass { if (node.params.length === 0) { this.raise(TSErrors.EmptyTypeArguments, { - node + at: node }); } @@ -9630,7 +9989,10 @@ var typescript = (superClass => class extends superClass { if (allowModifiers !== undefined) { const modified = {}; - this.tsParseModifiers(modified, ["public", "private", "protected", "override", "readonly"]); + this.tsParseModifiers({ + modified, + allowedModifiers: ["public", "private", "protected", "override", "readonly"] + }); accessibility = modified.accessibility; override = modified.override; readonly = modified.readonly; @@ -9659,7 +10021,7 @@ var typescript = (superClass => class extends superClass { if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") { this.raise(TSErrors.UnsupportedParameterPropertyKind, { - node: pp + at: pp }); } @@ -9674,6 +10036,10 @@ var typescript = (superClass => class extends superClass { return elt; } + isSimpleParameter(node) { + return node.type === "TSParameterProperty" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { if (this.match(14)) { node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14); @@ -9688,7 +10054,7 @@ var typescript = (superClass => class extends superClass { if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) { this.raise(TSErrors.DeclareFunctionHasImplementation, { - node + at: node }); if (node.declare) { @@ -9702,7 +10068,7 @@ var typescript = (superClass => class extends superClass { registerFunctionStatementId(node) { if (!node.body && node.id) { - this.checkLVal(node.id, "function name", BIND_TS_AMBIENT); + this.checkIdentifier(node.id, BIND_TS_AMBIENT); } else { super.registerFunctionStatementId(...arguments); } @@ -9712,7 +10078,7 @@ var typescript = (superClass => class extends superClass { items.forEach(node => { if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") { this.raise(TSErrors.UnexpectedTypeAnnotation, { - node: node.typeAnnotation + at: node.typeAnnotation }); } }); @@ -9765,60 +10131,76 @@ var typescript = (superClass => class extends superClass { } } - const node = this.startNodeAt(startPos, startLoc); - node.callee = base; const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (!typeArguments) return; - if (typeArguments) { - if (isOptionalCall && !this.match(10)) { - missingParenErrorLoc = this.state.curPosition(); - this.unexpected(); - } + if (isOptionalCall && !this.match(10)) { + missingParenErrorLoc = this.state.curPosition(); + return; + } - if (!noCalls && this.eat(10)) { - node.arguments = this.parseCallExpressionArguments(11, false); - this.tsCheckForInvalidTypeCasts(node.arguments); - node.typeParameters = typeArguments; + if (tokenIsTemplate(this.state.type)) { + const result = this.parseTaggedTemplateExpression(base, startPos, startLoc, state); + result.typeParameters = typeArguments; + return result; + } - if (state.optionalChainMember) { - node.optional = isOptionalCall; - } + if (!noCalls && this.eat(10)) { + const node = this.startNodeAt(startPos, startLoc); + node.callee = base; + node.arguments = this.parseCallExpressionArguments(11, false); + this.tsCheckForInvalidTypeCasts(node.arguments); + node.typeParameters = typeArguments; - return this.finishCallExpression(node, state.optionalChainMember); - } else if (tokenIsTemplate(this.state.type)) { - const result = this.parseTaggedTemplateExpression(base, startPos, startLoc, state); - result.typeParameters = typeArguments; - return result; + if (state.optionalChainMember) { + node.optional = isOptionalCall; } + + return this.finishCallExpression(node, state.optionalChainMember); } - this.unexpected(); + const tokenType = this.state.type; + + if (tokenType === 48 || tokenType !== 10 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { + return; + } + + const node = this.startNodeAt(startPos, startLoc); + node.expression = base; + node.typeParameters = typeArguments; + return this.finishNode(node, "TSInstantiationExpression"); }); if (missingParenErrorLoc) { this.unexpected(missingParenErrorLoc, 10); } - if (result) return result; + if (result) { + if (result.type === "TSInstantiationExpression" && (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40)) { + this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, { + at: this.state.startLoc + }); + } + + return result; + } } return super.parseSubscript(base, startPos, startLoc, noCalls, state); } - parseNewArguments(node) { - if (this.match(47) || this.match(51)) { - const typeParameters = this.tsTryParseAndCatch(() => { - const args = this.tsParseTypeArgumentsInExpression(); - if (!this.match(10)) this.unexpected(); - return args; - }); + parseNewCallee(node) { + var _callee$extra; - if (typeParameters) { - node.typeParameters = typeParameters; - } - } + super.parseNewCallee(node); + const { + callee + } = node; - super.parseNewArguments(node); + if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) { + node.typeParameters = callee.typeParameters; + node.callee = callee.expression; + } } parseExprOp(left, leftStartPos, leftStartLoc, minPrec) { @@ -9842,7 +10224,11 @@ var typescript = (superClass => class extends superClass { return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec); } - checkReservedWord(word, startLoc, checkKeywords, isBinding) {} + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (!this.state.isAmbientContext) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } checkDuplicateExports() {} @@ -9867,7 +10253,7 @@ var typescript = (superClass => class extends superClass { if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") { this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, { - node: importNode + at: importNode }); } @@ -9923,27 +10309,58 @@ var typescript = (superClass => class extends superClass { } if (this.match(125)) { - const interfaceNode = this.startNode(); - this.next(); - const result = this.tsParseInterfaceDeclaration(interfaceNode); + const result = this.tsParseInterfaceDeclaration(this.startNode()); if (result) return result; } return super.parseExportDefaultExpression(); } - parseStatementContent(context, topLevel) { - if (this.state.type === 75) { - const ahead = this.lookahead(); + parseVarStatement(node, kind, allowMissingInitializer = false) { + const { + isAmbientContext + } = this.state; + const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext); + if (!isAmbientContext) return declaration; - if (ahead.type === 122) { - const node = this.startNode(); - this.next(); - this.expectContextual(122); - return this.tsParseEnumDeclaration(node, true); + for (const { + id, + init + } of declaration.declarations) { + if (!init) continue; + + if (kind !== "const" || !!id.typeAnnotation) { + this.raise(TSErrors.InitializerNotAllowedInAmbientContext, { + at: init + }); + } else if (init.type !== "StringLiteral" && init.type !== "BooleanLiteral" && init.type !== "NumericLiteral" && init.type !== "BigIntLiteral" && (init.type !== "TemplateLiteral" || init.expressions.length > 0) && !isPossiblyLiteralEnum(init)) { + this.raise(TSErrors.ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference, { + at: init + }); } } + return declaration; + } + + parseStatementContent(context, topLevel) { + if (this.match(75) && this.isLookaheadContextual("enum")) { + const node = this.startNode(); + this.expect(75); + return this.tsParseEnumDeclaration(node, { + const: true + }); + } + + if (this.isContextual(122)) { + return this.tsParseEnumDeclaration(this.startNode()); + } + + if (this.isContextual(125)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseStatementContent(context, topLevel); } @@ -9967,7 +10384,13 @@ var typescript = (superClass => class extends superClass { parseClassMember(classBody, member, state) { const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"]; - this.tsParseModifiers(member, modifiers, undefined, undefined, true); + this.tsParseModifiers({ + modified: member, + allowedModifiers: modifiers, + disallowedModifiers: ["in", "out"], + stopOnStartOfClassStaticBlock: true, + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }); const callParseClassMemberWithIsStatic = () => { if (this.tsIsStartOfStaticBlocks()) { @@ -10001,25 +10424,26 @@ var typescript = (superClass => class extends superClass { if (member.abstract) { this.raise(TSErrors.IndexSignatureHasAbstract, { - node: member + at: member }); } if (member.accessibility) { this.raise(TSErrors.IndexSignatureHasAccessibility, { - node: member - }, member.accessibility); + at: member, + modifier: member.accessibility + }); } if (member.declare) { this.raise(TSErrors.IndexSignatureHasDeclare, { - node: member + at: member }); } if (member.override) { this.raise(TSErrors.IndexSignatureHasOverride, { - node: member + at: member }); } @@ -10028,14 +10452,14 @@ var typescript = (superClass => class extends superClass { if (!this.state.inAbstractClass && member.abstract) { this.raise(TSErrors.NonAbstractClassHasAbstractMethod, { - node: member + at: member }); } if (member.override) { if (!state.hadSuperClass) { this.raise(TSErrors.OverrideNotInSubClass, { - node: member + at: member }); } } @@ -10049,13 +10473,13 @@ var typescript = (superClass => class extends superClass { if (methodOrProp.readonly && this.match(10)) { this.raise(TSErrors.ClassMethodHasReadonly, { - node: methodOrProp + at: methodOrProp }); } if (methodOrProp.declare && this.match(10)) { this.raise(TSErrors.ClassMethodHasDeclare, { - node: methodOrProp + at: methodOrProp }); } } @@ -10108,6 +10532,10 @@ var typescript = (superClass => class extends superClass { } parseExportDeclaration(node) { + if (!this.state.isAmbientContext && this.isContextual(121)) { + return this.tsInAmbientContext(() => this.parseExportDeclaration(node)); + } + const startPos = this.state.start; const startLoc = this.state.startLoc; const isDeclare = this.eatContextual(121); @@ -10118,21 +10546,15 @@ var typescript = (superClass => class extends superClass { }); } - let declaration; - - if (tokenIsIdentifier(this.state.type)) { - declaration = this.tsTryParseExportDeclaration(); - } - - if (!declaration) { - declaration = super.parseExportDeclaration(node); - } + const isIdentifier = tokenIsIdentifier(this.state.type); + const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node); + if (!declaration) return null; - if (declaration && (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare)) { + if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) { node.exportKind = "type"; } - if (declaration && isDeclare) { + if (isDeclare) { this.resetStartLocation(declaration, startPos, startLoc); declaration.declare = true; } @@ -10146,7 +10568,7 @@ var typescript = (superClass => class extends superClass { } super.parseClassId(node, isStatement, optionalId, node.declare ? BIND_TS_AMBIENT : BIND_CLASS); - const typeParameters = this.tsTryParseTypeParameters(); + const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this)); if (typeParameters) node.typeParameters = typeParameters; } @@ -10173,8 +10595,9 @@ var typescript = (superClass => class extends superClass { key } = node; this.raise(TSErrors.AbstractPropertyHasInitializer, { - at: this.state.startLoc - }, key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`); + at: this.state.startLoc, + propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]` + }); } return super.parseClassProperty(node); @@ -10183,14 +10606,15 @@ var typescript = (superClass => class extends superClass { parseClassPrivateProperty(node) { if (node.abstract) { this.raise(TSErrors.PrivateElementHasAbstract, { - node + at: node }); } if (node.accessibility) { this.raise(TSErrors.PrivateElementHasAccessibility, { - node - }, node.accessibility); + at: node, + modifier: node.accessibility + }); } this.parseClassPropertyAnnotation(node); @@ -10202,14 +10626,20 @@ var typescript = (superClass => class extends superClass { if (typeParameters && isConstructor) { this.raise(TSErrors.ConstructorHasTypeParameters, { - node: typeParameters + at: typeParameters }); } - if (method.declare && (method.kind === "get" || method.kind === "set")) { + const { + declare = false, + kind + } = method; + + if (declare && (kind === "get" || kind === "set")) { this.raise(TSErrors.DeclareAccessor, { - node: method - }, method.kind); + at: method, + kind + }); } if (typeParameters) method.typeParameters = typeParameters; @@ -10300,8 +10730,8 @@ var typescript = (superClass => class extends superClass { return super.parseMaybeAssign(...args); } + if (!state || state === this.state) state = this.state.clone(); let typeParameters; - state = state || this.state.clone(); const arrow = this.tryParse(abort => { var _expr$extra, _typeParameters; @@ -10358,7 +10788,7 @@ var typescript = (superClass => class extends superClass { if (node.params.length === 1 && !((_node$extra = node.extra) != null && _node$extra.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { this.raise(TSErrors.ReservedArrowTypeParam, { - node + at: node }); } } @@ -10393,7 +10823,7 @@ var typescript = (superClass => class extends superClass { if (this.eat(17)) { if (param.type !== "Identifier" && !this.state.isAmbientContext && !this.state.inType) { this.raise(TSErrors.PatternIsOptional, { - node: param + at: param }); } @@ -10421,23 +10851,33 @@ var typescript = (superClass => class extends superClass { toAssignable(node, isLHS = false) { switch (node.type) { - case "TSTypeCastExpression": - return super.toAssignable(this.typeCastToParameter(node), isLHS); - - case "TSParameterProperty": - return super.toAssignable(node, isLHS); - case "ParenthesizedExpression": - return this.toAssignableParenthesizedExpression(node, isLHS); + this.toAssignableParenthesizedExpression(node, isLHS); + break; case "TSAsExpression": case "TSNonNullExpression": case "TSTypeAssertion": - node.expression = this.toAssignable(node.expression, isLHS); - return node; + if (isLHS) { + this.expressionScope.recordArrowParemeterBindingError(TSErrors.UnexpectedTypeCastInParameter, { + at: node + }); + } else { + this.raise(TSErrors.UnexpectedTypeCastInParameter, { + at: node + }); + } + + this.toAssignable(node.expression, isLHS); + break; + + case "AssignmentExpression": + if (!isLHS && node.left.type === "TSTypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } default: - return super.toAssignable(node, isLHS); + super.toAssignable(node, isLHS); } } @@ -10447,47 +10887,37 @@ var typescript = (superClass => class extends superClass { case "TSNonNullExpression": case "TSTypeAssertion": case "ParenthesizedExpression": - node.expression = this.toAssignable(node.expression, isLHS); - return node; + this.toAssignable(node.expression, isLHS); + break; default: - return super.toAssignable(node, isLHS); + super.toAssignable(node, isLHS); } - } - - checkLVal(expr, contextDescription, ...args) { - var _expr$extra2; - - switch (expr.type) { - case "TSTypeCastExpression": - return; - - case "TSParameterProperty": - this.checkLVal(expr.parameter, "parameter property", ...args); - return; - - case "TSAsExpression": - case "TSTypeAssertion": - if (!args[0] && contextDescription !== "parenthesized expression" && !((_expr$extra2 = expr.extra) != null && _expr$extra2.parenthesized)) { - this.raise(ErrorMessages.InvalidLhs, { - node: expr - }, contextDescription); - break; - } - - this.checkLVal(expr.expression, "parenthesized expression", ...args); - return; + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "TSAsExpression": + case "TSTypeAssertion": case "TSNonNullExpression": - this.checkLVal(expr.expression, contextDescription, ...args); - return; + this.checkToRestConversion(node.expression, false); + break; default: - super.checkLVal(expr, contextDescription, ...args); - return; + super.checkToRestConversion(node, allowPattern); } } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + return getOwn$1({ + TSTypeCastExpression: true, + TSParameterProperty: "parameter", + TSNonNullExpression: "expression", + TSAsExpression: (binding !== BIND_NONE || !isUnparenthesizedInAssign) && ["expression", true], + TSTypeAssertion: (binding !== BIND_NONE || !isUnparenthesizedInAssign) && ["expression", true] + }, type) || super.isValidLVal(type, isUnparenthesizedInAssign, binding); + } + parseBindingAtom() { switch (this.state.type) { case 78: @@ -10536,7 +10966,7 @@ var typescript = (superClass => class extends superClass { if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { this.raise(TSErrors.TypeAnnotationAfterAssign, { - node: node.typeAnnotation + at: node.typeAnnotation }); } @@ -10588,28 +11018,13 @@ var typescript = (superClass => class extends superClass { toAssignableList(exprList) { for (let i = 0; i < exprList.length; i++) { const expr = exprList[i]; - if (!expr) continue; - - switch (expr.type) { - case "TSTypeCastExpression": - exprList[i] = this.typeCastToParameter(expr); - break; - - case "TSAsExpression": - case "TSTypeAssertion": - if (!this.state.maybeInArrowParameters) { - exprList[i] = this.typeCastToParameter(expr); - } else { - this.raise(TSErrors.UnexpectedTypeCastInParameter, { - node: expr - }); - } - break; + if ((expr == null ? void 0 : expr.type) === "TSTypeCastExpression") { + exprList[i] = this.typeCastToParameter(expr); } } - return super.toAssignableList(...arguments); + super.toAssignableList(...arguments); } typeCastToParameter(node) { @@ -10693,9 +11108,8 @@ var typescript = (superClass => class extends superClass { if (!this.hasFollowingLineBreak()) { node.abstract = true; this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, { - node + at: node }); - this.next(); return this.tsParseInterfaceDeclaration(node); } } else { @@ -10714,8 +11128,9 @@ var typescript = (superClass => class extends superClass { key } = method; this.raise(TSErrors.AbstractMethodHasImplementation, { - node: method - }, key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`); + at: method, + methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]` + }); } } @@ -10785,7 +11200,7 @@ var typescript = (superClass => class extends superClass { if (tokenIsKeywordOrIdentifier(this.state.type)) { hasTypeSpecifier = true; leftOfAs = firstAs; - rightOfAs = this.parseIdentifier(); + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); canParseAsKeyword = false; } else { rightOfAs = secondAs; @@ -10793,14 +11208,23 @@ var typescript = (superClass => class extends superClass { } } else if (tokenIsKeywordOrIdentifier(this.state.type)) { canParseAsKeyword = false; - rightOfAs = this.parseIdentifier(); + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); } else { hasTypeSpecifier = true; leftOfAs = firstAs; } } else if (tokenIsKeywordOrIdentifier(this.state.type)) { hasTypeSpecifier = true; - leftOfAs = this.parseIdentifier(); + + if (isImport) { + leftOfAs = this.parseIdentifier(true); + + if (!this.isContextual(93)) { + this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true); + } + } else { + leftOfAs = this.parseModuleExportName(); + } } if (hasTypeSpecifier && isInTypeOnlyImportExport) { @@ -10823,23 +11247,45 @@ var typescript = (superClass => class extends superClass { } if (isImport) { - this.checkLVal(node[rightOfAsKey], "import specifier", BIND_LEXICAL); + this.checkIdentifier(node[rightOfAsKey], BIND_LEXICAL); } } }); -const PlaceholderErrors = makeErrorTemplates({ - ClassNameIsRequired: "A class name is required." -}, ErrorCodes.SyntaxError, "placeholders"); +function isPossiblyLiteralEnum(expression) { + if (expression.type !== "MemberExpression") return false; + const { + computed, + property + } = expression; + + if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) { + return false; + } + + return isUncomputedMemberExpressionChain(expression.object); +} + +function isUncomputedMemberExpressionChain(expression) { + if (expression.type === "Identifier") return true; + if (expression.type !== "MemberExpression") return false; + if (expression.computed) return false; + return isUncomputedMemberExpressionChain(expression.object); +} + +const PlaceholderErrors = ParseErrorEnum`placeholders`(_ => ({ + ClassNameIsRequired: _("A class name is required."), + UnexpectedSpace: _("Unexpected space in placeholder.") +})); var placeholders = (superClass => class extends superClass { parsePlaceholder(expectedNode) { if (this.match(140)) { const node = this.startNode(); this.next(); - this.assertNoSpace("Unexpected space in placeholder."); + this.assertNoSpace(); node.name = super.parseIdentifier(true); - this.assertNoSpace("Unexpected space in placeholder."); + this.assertNoSpace(); this.expect(140); return this.finishPlaceholder(node, expectedNode); } @@ -10875,17 +11321,16 @@ var placeholders = (superClass => class extends superClass { return this.parsePlaceholder("Pattern") || super.parseBindingAtom(...arguments); } - checkLVal(expr) { - if (expr.type !== "Placeholder") super.checkLVal(...arguments); + isValidLVal(type, ...rest) { + return type === "Placeholder" || super.isValidLVal(type, ...rest); } toAssignable(node) { if (node && node.type === "Placeholder" && node.expectedNode === "Expression") { node.expectedNode = "Pattern"; - return node; + } else { + super.toAssignable(...arguments); } - - return super.toAssignable(...arguments); } isLet(context) { @@ -11050,6 +11495,14 @@ var placeholders = (superClass => class extends superClass { return this.parsePlaceholder("StringLiteral") || super.parseImportSource(...arguments); } + assertNoSpace() { + if (this.state.start > this.state.lastTokEndLoc.index) { + this.raise(PlaceholderErrors.UnexpectedSpace, { + at: this.state.lastTokEndLoc + }); + } + } + }); var v8intrinsic = (superClass => class extends superClass { @@ -11186,9 +11639,9 @@ function validatePlugins(plugins) { throw new Error("Cannot combine importAssertions and moduleAttributes plugins."); } - const moduleAttributesVerionPluginOption = getPluginOption(plugins, "moduleAttributes", "version"); + const moduleAttributesVersionPluginOption = getPluginOption(plugins, "moduleAttributes", "version"); - if (moduleAttributesVerionPluginOption !== "may-2020") { + if (moduleAttributesVersionPluginOption !== "may-2020") { throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'."); } } @@ -11242,6 +11695,8 @@ function getOptions(opts) { return options; } +const getOwn = (object, key) => Object.hasOwnProperty.call(object, key) && object[key]; + const unwrapParenthesizedExpression = node => { return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; }; @@ -11257,15 +11712,17 @@ class LValParser extends NodeUtils { if (isLHS) { if (parenthesized.type === "Identifier") { - this.expressionScope.recordParenthesizedIdentifierError(ErrorMessages.InvalidParenthesizedAssignment, node.loc.start); + this.expressionScope.recordArrowParemeterBindingError(Errors.InvalidParenthesizedAssignment, { + at: node + }); } else if (parenthesized.type !== "MemberExpression") { - this.raise(ErrorMessages.InvalidParenthesizedAssignment, { - node + this.raise(Errors.InvalidParenthesizedAssignment, { + at: node }); } } else { - this.raise(ErrorMessages.InvalidParenthesizedAssignment, { - node + this.raise(Errors.InvalidParenthesizedAssignment, { + at: node }); } } @@ -11289,7 +11746,7 @@ class LValParser extends NodeUtils { this.toAssignableObjectExpressionProp(prop, isLast, isLHS); if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) { - this.raise(ErrorMessages.RestTrailingComma, { + this.raise(Errors.RestTrailingComma, { at: node.extra.trailingCommaLoc }); } @@ -11314,11 +11771,7 @@ class LValParser extends NodeUtils { case "SpreadElement": { - this.checkToRestConversion(node); - node.type = "RestElement"; - const arg = node.argument; - this.toAssignable(arg, isLHS); - break; + throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller."); } case "ArrayExpression": @@ -11328,7 +11781,7 @@ class LValParser extends NodeUtils { case "AssignmentExpression": if (node.operator !== "=") { - this.raise(ErrorMessages.MissingEqInAssignment, { + this.raise(Errors.MissingEqInAssignment, { at: node.left.loc.end }); } @@ -11342,67 +11795,57 @@ class LValParser extends NodeUtils { this.toAssignable(parenthesized, isLHS); break; } - - return node; } toAssignableObjectExpressionProp(prop, isLast, isLHS) { if (prop.type === "ObjectMethod") { - this.raise(prop.kind === "get" || prop.kind === "set" ? ErrorMessages.PatternHasAccessor : ErrorMessages.PatternHasMethod, { - node: prop.key - }); - } else if (prop.type === "SpreadElement" && !isLast) { - this.raise(ErrorMessages.RestTrailingComma, { - node: prop + this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, { + at: prop.key }); + } else if (prop.type === "SpreadElement") { + prop.type = "RestElement"; + const arg = prop.argument; + this.checkToRestConversion(arg, false); + this.toAssignable(arg, isLHS); + + if (!isLast) { + this.raise(Errors.RestTrailingComma, { + at: prop + }); + } } else { this.toAssignable(prop, isLHS); } } toAssignableList(exprList, trailingCommaLoc, isLHS) { - let end = exprList.length; - - if (end) { - const last = exprList[end - 1]; - - if ((last == null ? void 0 : last.type) === "RestElement") { - --end; - } else if ((last == null ? void 0 : last.type) === "SpreadElement") { - last.type = "RestElement"; - let arg = last.argument; - this.toAssignable(arg, isLHS); - arg = unwrapParenthesizedExpression(arg); - - if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern" && arg.type !== "ObjectPattern") { - this.unexpected(arg.start); - } - - if (trailingCommaLoc) { - this.raise(ErrorMessages.RestTrailingComma, { - at: trailingCommaLoc - }); - } - - --end; - } - } + const end = exprList.length - 1; - for (let i = 0; i < end; i++) { + for (let i = 0; i <= end; i++) { const elt = exprList[i]; + if (!elt) continue; - if (elt) { + if (elt.type === "SpreadElement") { + elt.type = "RestElement"; + const arg = elt.argument; + this.checkToRestConversion(arg, true); + this.toAssignable(arg, isLHS); + } else { this.toAssignable(elt, isLHS); + } - if (elt.type === "RestElement") { - this.raise(ErrorMessages.RestTrailingComma, { - node: elt + if (elt.type === "RestElement") { + if (i < end) { + this.raise(Errors.RestTrailingComma, { + at: elt + }); + } else if (trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, { + at: trailingCommaLoc }); } } } - - return exprList; } isAssignable(node, isBinding) { @@ -11517,7 +11960,7 @@ class LValParser extends NodeUtils { const decorators = []; if (this.match(26) && this.hasPlugin("decorators")) { - this.raise(ErrorMessages.UnsupportedParameterDecorator, { + this.raise(Errors.UnsupportedParameterDecorator, { at: this.state.startLoc }); } @@ -11592,95 +12035,141 @@ class LValParser extends NodeUtils { return this.finishNode(node, "AssignmentPattern"); } - checkLVal(expr, contextDescription, bindingType = BIND_NONE, checkClashes, disallowLetBinding, strictModeChanged = false) { - switch (expr.type) { - case "Identifier": - { - const { - name - } = expr; - - if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(name, this.inModule) : isStrictBindOnlyReservedWord(name))) { - this.raise(bindingType === BIND_NONE ? ErrorMessages.StrictEvalArguments : ErrorMessages.StrictEvalArgumentsBinding, { - node: expr - }, name); - } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + return getOwn({ + AssignmentPattern: "left", + RestElement: "argument", + ObjectProperty: "value", + ParenthesizedExpression: "expression", + ArrayPattern: "elements", + ObjectPattern: "properties" + }, type); + } + + checkLVal(expression, { + in: ancestor, + binding = BIND_NONE, + checkClashes = false, + strictModeChanged = false, + allowingSloppyLetBinding = !(binding & BIND_SCOPE_LEXICAL), + hasParenthesizedAncestor = false + }) { + var _expression$extra; - if (checkClashes) { - if (checkClashes.has(name)) { - this.raise(ErrorMessages.ParamDupe, { - node: expr - }); - } else { - checkClashes.add(name); - } - } + const type = expression.type; + if (this.isObjectMethod(expression)) return; - if (disallowLetBinding && name === "let") { - this.raise(ErrorMessages.LetInLexicalBinding, { - node: expr - }); - } + if (type === "MemberExpression") { + if (binding !== BIND_NONE) { + this.raise(Errors.InvalidPropertyBindingPattern, { + at: expression + }); + } - if (!(bindingType & BIND_NONE)) { - this.scope.declareName(name, bindingType, expr.loc.start); - } + return; + } - break; - } + if (expression.type === "Identifier") { + this.checkIdentifier(expression, binding, strictModeChanged, allowingSloppyLetBinding); + const { + name + } = expression; - case "MemberExpression": - if (bindingType !== BIND_NONE) { - this.raise(ErrorMessages.InvalidPropertyBindingPattern, { - node: expr + if (checkClashes) { + if (checkClashes.has(name)) { + this.raise(Errors.ParamDupe, { + at: expression }); + } else { + checkClashes.add(name); } + } - break; + return; + } - case "ObjectPattern": - for (let prop of expr.properties) { - if (this.isObjectProperty(prop)) prop = prop.value;else if (this.isObjectMethod(prop)) continue; - this.checkLVal(prop, "object destructuring pattern", bindingType, checkClashes, disallowLetBinding); + const validity = this.isValidLVal(expression.type, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding); + if (validity === true) return; + + if (validity === false) { + const ParseErrorClass = binding === BIND_NONE ? Errors.InvalidLhs : Errors.InvalidLhsBinding; + this.raise(ParseErrorClass, { + at: expression, + ancestor: ancestor.type === "UpdateExpression" ? { + type: "UpdateExpression", + prefix: ancestor.prefix + } : { + type: ancestor.type } + }); + return; + } - break; + const [key, isParenthesizedExpression] = Array.isArray(validity) ? validity : [validity, type === "ParenthesizedExpression"]; + const nextAncestor = expression.type === "ArrayPattern" || expression.type === "ObjectPattern" || expression.type === "ParenthesizedExpression" ? expression : ancestor; - case "ArrayPattern": - for (const elem of expr.elements) { - if (elem) { - this.checkLVal(elem, "array destructuring pattern", bindingType, checkClashes, disallowLetBinding); - } - } + for (const child of [].concat(expression[key])) { + if (child) { + this.checkLVal(child, { + in: nextAncestor, + binding, + checkClashes, + allowingSloppyLetBinding, + strictModeChanged, + hasParenthesizedAncestor: isParenthesizedExpression + }); + } + } + } - break; + checkIdentifier(at, bindingType, strictModeChanged = false, allowLetBinding = !(bindingType & BIND_SCOPE_LEXICAL)) { + if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) { + if (bindingType === BIND_NONE) { + this.raise(Errors.StrictEvalArguments, { + at, + referenceName: at.name + }); + } else { + this.raise(Errors.StrictEvalArgumentsBinding, { + at, + bindingName: at.name + }); + } + } - case "AssignmentPattern": - this.checkLVal(expr.left, "assignment pattern", bindingType, checkClashes); - break; + if (!allowLetBinding && at.name === "let") { + this.raise(Errors.LetInLexicalBinding, { + at + }); + } - case "RestElement": - this.checkLVal(expr.argument, "rest element", bindingType, checkClashes); - break; + if (!(bindingType & BIND_NONE)) { + this.declareNameFromIdentifier(at, bindingType); + } + } + + declareNameFromIdentifier(identifier, binding) { + this.scope.declareName(identifier.name, binding, identifier.loc.start); + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { case "ParenthesizedExpression": - this.checkLVal(expr.expression, "parenthesized expression", bindingType, checkClashes); + this.checkToRestConversion(node.expression, allowPattern); break; - default: - { - this.raise(bindingType === BIND_NONE ? ErrorMessages.InvalidLhs : ErrorMessages.InvalidLhsBinding, { - node: expr - }, contextDescription); - } - } - } + case "Identifier": + case "MemberExpression": + break; - checkToRestConversion(node) { - if (node.argument.type !== "Identifier" && node.argument.type !== "MemberExpression") { - this.raise(ErrorMessages.InvalidRestAssignmentPattern, { - node: node.argument - }); + case "ArrayExpression": + case "ObjectExpression": + if (allowPattern) break; + + default: + this.raise(Errors.InvalidRestAssignmentPattern, { + at: node + }); } } @@ -11689,7 +12178,7 @@ class LValParser extends NodeUtils { return false; } - this.raise(this.lookaheadCharCode() === close ? ErrorMessages.RestTrailingComma : ErrorMessages.ElementAfterRest, { + this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, { at: this.state.startLoc }); return true; @@ -11697,7 +12186,6 @@ class LValParser extends NodeUtils { } -const invalidHackPipeBodies = new Map([["ArrowFunctionExpression", "arrow function"], ["AssignmentExpression", "assignment"], ["ConditionalExpression", "conditional"], ["YieldExpression", "yield"]]); class ExpressionParser extends LValParser { checkProto(prop, isRecord, protoRef, refExpressionErrors) { if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) { @@ -11709,8 +12197,8 @@ class ExpressionParser extends LValParser { if (name === "__proto__") { if (isRecord) { - this.raise(ErrorMessages.RecordNoProto, { - node: key + this.raise(Errors.RecordNoProto, { + at: key }); return; } @@ -11721,8 +12209,8 @@ class ExpressionParser extends LValParser { refExpressionErrors.doubleProtoLoc = key.loc.start; } } else { - this.raise(ErrorMessages.DuplicateProto, { - node: key + this.raise(Errors.DuplicateProto, { + at: key }); } } @@ -11842,7 +12330,8 @@ class ExpressionParser extends LValParser { node.operator = operator; if (this.match(29)) { - node.left = this.toAssignable(left, true); + this.toAssignable(left, true); + node.left = left; if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startPos) { refExpressionErrors.doubleProtoLoc = null; @@ -11860,10 +12349,12 @@ class ExpressionParser extends LValParser { node.left = left; } - this.checkLVal(left, "assignment expression"); this.next(); node.right = this.parseMaybeAssign(); - return this.finishNode(node, "AssignmentExpression"); + this.checkLVal(left, { + in: this.finishNode(node, "AssignmentExpression") + }); + return node; } else if (ownExpressionErrors) { this.checkExpressionErrors(refExpressionErrors, true); } @@ -11919,9 +12410,10 @@ class ExpressionParser extends LValParser { const value = this.getPrivateNameSV(left); if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) { - this.raise(ErrorMessages.PrivateInExpectedIn, { - node: left - }, value); + this.raise(Errors.PrivateInExpectedIn, { + at: left, + identifierName: value + }); } this.classScope.usePrivateName(value, left.loc.start); @@ -11959,7 +12451,7 @@ class ExpressionParser extends LValParser { proposal: "minimal" }])) { if (this.state.type === 96 && this.prodParam.hasAwait) { - throw this.raise(ErrorMessages.UnexpectedAwaitAfterPipelineBody, { + throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, { at: this.state.startLoc }); } @@ -11970,7 +12462,7 @@ class ExpressionParser extends LValParser { const nextOp = this.state.type; if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) { - throw this.raise(ErrorMessages.MixingCoalesceWithLogical, { + throw this.raise(Errors.MixingCoalesceWithLogical, { at: this.state.startLoc }); } @@ -11997,9 +12489,9 @@ class ExpressionParser extends LValParser { case "smart": return this.withTopicBindingContext(() => { if (this.prodParam.hasYield && this.isContextual(105)) { - throw this.raise(ErrorMessages.PipeBodyIsTighter, { + throw this.raise(Errors.PipeBodyIsTighter, { at: this.state.startLoc - }, this.state.value); + }); } return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startPos, startLoc); @@ -12029,15 +12521,17 @@ class ExpressionParser extends LValParser { startLoc } = this.state; const body = this.parseMaybeAssign(); + const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type); - if (invalidHackPipeBodies.has(body.type) && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) { - this.raise(ErrorMessages.PipeUnparenthesizedBody, { - at: startLoc - }, invalidHackPipeBodies.get(body.type)); + if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) { + this.raise(Errors.PipeUnparenthesizedBody, { + at: startLoc, + type: body.type + }); } if (!this.topicReferenceWasUsedInCurrentContext()) { - this.raise(ErrorMessages.PipeTopicUnused, { + this.raise(Errors.PipeTopicUnused, { at: startLoc }); } @@ -12047,8 +12541,8 @@ class ExpressionParser extends LValParser { checkExponentialAfterUnary(node) { if (this.match(57)) { - this.raise(ErrorMessages.UnexpectedTokenUnaryExponentiation, { - node: node.argument + this.raise(Errors.UnexpectedTokenUnaryExponentiation, { + at: node.argument }); } } @@ -12085,12 +12579,12 @@ class ExpressionParser extends LValParser { const arg = node.argument; if (arg.type === "Identifier") { - this.raise(ErrorMessages.StrictDelete, { - node + this.raise(Errors.StrictDelete, { + at: node }); } else if (this.hasPropertyAsPrivateName(arg)) { - this.raise(ErrorMessages.DeletePrivateField, { - node + this.raise(Errors.DeletePrivateField, { + at: node }); } } @@ -12110,7 +12604,9 @@ class ExpressionParser extends LValParser { const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); if (startsExpr && !this.isAmbiguousAwait()) { - this.raiseOverwrite(startLoc, ErrorMessages.AwaitNotInAsyncContext); + this.raiseOverwrite(Errors.AwaitNotInAsyncContext, { + at: startLoc + }); return this.parseAwait(startPos, startLoc); } } @@ -12120,8 +12616,10 @@ class ExpressionParser extends LValParser { parseUpdate(node, update, refExpressionErrors) { if (update) { - this.checkLVal(node.argument, "prefix operation"); - return this.finishNode(node, "UpdateExpression"); + this.checkLVal(node.argument, { + in: this.finishNode(node, "UpdateExpression") + }); + return node; } const startPos = this.state.start; @@ -12134,9 +12632,10 @@ class ExpressionParser extends LValParser { node.operator = this.state.value; node.prefix = false; node.argument = expr; - this.checkLVal(expr, "postfix operation"); this.next(); - expr = this.finishNode(node, "UpdateExpression"); + this.checkLVal(expr, { + in: expr = this.finishNode(node, "UpdateExpression") + }); } return expr; @@ -12217,7 +12716,7 @@ class ExpressionParser extends LValParser { this.expect(3); } else if (this.match(134)) { if (base.type === "Super") { - this.raise(ErrorMessages.SuperPrivateField, { + this.raise(Errors.SuperPrivateField, { at: startLoc }); } @@ -12303,7 +12802,7 @@ class ExpressionParser extends LValParser { node.quasi = this.parseTemplate(true); if (state.optionalChainMember) { - this.raise(ErrorMessages.OptionalChainingNoTemplate, { + this.raise(Errors.OptionalChainingNoTemplate, { at: startLoc }); } @@ -12326,14 +12825,15 @@ class ExpressionParser extends LValParser { } if (node.arguments.length === 0 || node.arguments.length > 2) { - this.raise(ErrorMessages.ImportCallArity, { - node - }, this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? "one or two arguments" : "one argument"); + this.raise(Errors.ImportCallArity, { + at: node, + maxArgumentCount: this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? 2 : 1 + }); } else { for (const arg of node.arguments) { if (arg.type === "SpreadElement") { - this.raise(ErrorMessages.ImportCallSpreadArgument, { - node: arg + this.raise(Errors.ImportCallSpreadArgument, { + at: arg }); } } @@ -12357,7 +12857,7 @@ class ExpressionParser extends LValParser { if (this.match(close)) { if (dynamicImport && !this.hasPlugin("importAssertions") && !this.hasPlugin("moduleAttributes")) { - this.raise(ErrorMessages.ImportCallArgumentTrailingComma, { + this.raise(Errors.ImportCallArgumentTrailingComma, { at: this.state.lastTokStartLoc }); } @@ -12425,7 +12925,7 @@ class ExpressionParser extends LValParser { } if (!this.match(10)) { - this.raise(ErrorMessages.UnsupportedImport, { + this.raise(Errors.UnsupportedImport, { at: this.state.lastTokStartLoc }); } @@ -12526,17 +13026,18 @@ class ExpressionParser extends LValParser { if (callee.type === "MemberExpression") { return this.finishNode(node, "BindExpression"); } else { - throw this.raise(ErrorMessages.UnsupportedBind, { - node: callee + throw this.raise(Errors.UnsupportedBind, { + at: callee }); } } case 134: { - this.raise(ErrorMessages.PrivateInExpectedIn, { - at: this.state.startLoc - }, this.state.value); + this.raise(Errors.PrivateInExpectedIn, { + at: this.state.startLoc, + identifierName: this.state.value + }); return this.parsePrivateName(); } @@ -12653,7 +13154,7 @@ class ExpressionParser extends LValParser { const nodeType = pipeProposal === "smart" ? "PipelinePrimaryTopicReference" : "TopicReference"; if (!this.topicReferenceIsAllowedInCurrentContext()) { - this.raise(pipeProposal === "smart" ? ErrorMessages.PrimaryTopicNotAllowed : ErrorMessages.PipeTopicUnbound, { + this.raise(pipeProposal === "smart" ? Errors.PrimaryTopicNotAllowed : Errors.PipeTopicUnbound, { at: startLoc }); } @@ -12661,9 +13162,10 @@ class ExpressionParser extends LValParser { this.registerTopicReference(); return this.finishNode(node, nodeType); } else { - throw this.raise(ErrorMessages.PipeTopicUnconfiguredToken, { - at: startLoc - }, tokenLabelName(tokenType)); + throw this.raise(Errors.PipeTopicUnconfiguredToken, { + at: startLoc, + token: tokenLabelName(tokenType) + }); } } @@ -12680,7 +13182,7 @@ class ExpressionParser extends LValParser { return tokenType === 27; default: - throw this.raise(ErrorMessages.PipeTopicRequiresHackPipes, { + throw this.raise(Errors.PipeTopicRequiresHackPipes, { at: startLoc }); } @@ -12692,7 +13194,7 @@ class ExpressionParser extends LValParser { this.prodParam.exit(); if (this.hasPrecedingLineBreak()) { - this.raise(ErrorMessages.LineTerminatorBeforeArrow, { + this.raise(Errors.LineTerminatorBeforeArrow, { at: this.state.curPosition() }); } @@ -12731,18 +13233,18 @@ class ExpressionParser extends LValParser { this.next(); if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) { - this.raise(ErrorMessages.SuperNotAllowed, { - node + this.raise(Errors.SuperNotAllowed, { + at: node }); } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) { - this.raise(ErrorMessages.UnexpectedSuper, { - node + this.raise(Errors.UnexpectedSuper, { + at: node }); } if (!this.match(10) && !this.match(0) && !this.match(16)) { - this.raise(ErrorMessages.UnsupportedSuper, { - node + this.raise(Errors.UnsupportedSuper, { + at: node }); } @@ -12784,9 +13286,11 @@ class ExpressionParser extends LValParser { node.property = this.parseIdentifier(true); if (node.property.name !== propertyName || containsEsc) { - this.raise(ErrorMessages.UnsupportedMetaProperty, { - node: node.property - }, meta.name, propertyName); + this.raise(Errors.UnsupportedMetaProperty, { + at: node.property, + target: meta.name, + onlyValidPropertyName: propertyName + }); } return this.finishNode(node, "MetaProperty"); @@ -12798,8 +13302,8 @@ class ExpressionParser extends LValParser { if (this.isContextual(100)) { if (!this.inModule) { - this.raise(SourceTypeModuleErrorMessages.ImportMetaOutsideModule, { - node: id + this.raise(Errors.ImportMetaOutsideModule, { + at: id }); } @@ -12936,15 +13440,19 @@ class ExpressionParser extends LValParser { val = exprList[0]; } + return this.wrapParenthesis(startPos, startLoc, val); + } + + wrapParenthesis(startPos, startLoc, expression) { if (!this.options.createParenthesizedExpressions) { - this.addExtra(val, "parenthesized", true); - this.addExtra(val, "parenStart", startPos); - this.takeSurroundingComments(val, startPos, this.state.lastTokEndLoc.index); - return val; + this.addExtra(expression, "parenthesized", true); + this.addExtra(expression, "parenStart", startPos); + this.takeSurroundingComments(expression, startPos, this.state.lastTokEndLoc.index); + return expression; } const parenExpression = this.startNodeAt(startPos, startLoc); - parenExpression.expression = val; + parenExpression.expression = expression; this.finishNode(parenExpression, "ParenthesizedExpression"); return parenExpression; } @@ -12973,8 +13481,8 @@ class ExpressionParser extends LValParser { const metaProp = this.parseMetaProperty(node, meta, "target"); if (!this.scope.inNonArrowFunction && !this.scope.inClass) { - this.raise(ErrorMessages.UnexpectedNewTarget, { - node: metaProp + this.raise(Errors.UnexpectedNewTarget, { + at: metaProp }); } @@ -12985,34 +13493,35 @@ class ExpressionParser extends LValParser { } parseNew(node) { + this.parseNewCallee(node); + + if (this.eat(10)) { + const args = this.parseExprList(11); + this.toReferencedList(args); + node.arguments = args; + } else { + node.arguments = []; + } + + return this.finishNode(node, "NewExpression"); + } + + parseNewCallee(node) { node.callee = this.parseNoCallExpr(); if (node.callee.type === "Import") { - this.raise(ErrorMessages.ImportCallNotNewExpression, { - node: node.callee + this.raise(Errors.ImportCallNotNewExpression, { + at: node.callee }); } else if (this.isOptionalChain(node.callee)) { - this.raise(ErrorMessages.OptionalChainingNoNew, { + this.raise(Errors.OptionalChainingNoNew, { at: this.state.lastTokEndLoc }); } else if (this.eat(18)) { - this.raise(ErrorMessages.OptionalChainingNoNew, { + this.raise(Errors.OptionalChainingNoNew, { at: this.state.startLoc }); } - - this.parseNewArguments(node); - return this.finishNode(node, "NewExpression"); - } - - parseNewArguments(node) { - if (this.eat(10)) { - const args = this.parseExprList(11); - this.toReferencedList(args); - node.arguments = args; - } else { - node.arguments = []; - } } parseTemplateElement(isTagged) { @@ -13027,7 +13536,7 @@ class ExpressionParser extends LValParser { if (value === null) { if (!isTagged) { - this.raise(ErrorMessages.InvalidEscapeSequenceTemplate, { + this.raise(Errors.InvalidEscapeSequenceTemplate, { at: createPositionWithColumnOffset(startLoc, 2) }); } @@ -13101,8 +13610,8 @@ class ExpressionParser extends LValParser { } if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") { - this.raise(ErrorMessages.InvalidRecordProperty, { - node: prop + this.raise(Errors.InvalidRecordProperty, { + at: prop }); } @@ -13140,7 +13649,7 @@ class ExpressionParser extends LValParser { if (this.match(26)) { if (this.hasPlugin("decorators")) { - this.raise(ErrorMessages.UnsupportedPropertyDecorator, { + this.raise(Errors.UnsupportedPropertyDecorator, { at: this.state.startLoc }); } @@ -13195,9 +13704,10 @@ class ExpressionParser extends LValParser { if (this.match(55)) { isGenerator = true; - this.raise(ErrorMessages.AccessorIsGenerator, { - at: this.state.curPosition() - }, keyName); + this.raise(Errors.AccessorIsGenerator, { + at: this.state.curPosition(), + kind: keyName + }); this.next(); } @@ -13224,14 +13734,14 @@ class ExpressionParser extends LValParser { const params = this.getObjectOrClassMethodParams(method); if (params.length !== paramCount) { - this.raise(method.kind === "get" ? ErrorMessages.BadGetterArity : ErrorMessages.BadSetterArity, { - node: method + this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, { + at: method }); } if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") { - this.raise(ErrorMessages.BadSetterRestParameter, { - node: method + this.raise(Errors.BadSetterRestParameter, { + at: method }); } } @@ -13272,7 +13782,7 @@ class ExpressionParser extends LValParser { refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc; } } else { - this.raise(ErrorMessages.InvalidCoverInitializedName, { + this.raise(Errors.InvalidCoverInitializedName, { at: shorthandAssignLoc }); } @@ -13334,7 +13844,7 @@ class ExpressionParser extends LValParser { refExpressionErrors.privateKeyLoc = privateKeyLoc; } } else { - this.raise(ErrorMessages.UnexpectedPrivateField, { + this.raise(Errors.UnexpectedPrivateField, { at: privateKeyLoc }); } @@ -13417,7 +13927,8 @@ class ExpressionParser extends LValParser { } setArrowFunctionParameters(node, params, trailingCommaLoc) { - node.params = this.toAssignableList(params, trailingCommaLoc, false); + this.toAssignableList(params, trailingCommaLoc, false); + node.params = params; } parseFunctionBodyAndFinish(node, type, isMethod = false) { @@ -13441,19 +13952,16 @@ class ExpressionParser extends LValParser { const nonSimple = !this.isSimpleParamList(node.params); if (hasStrictModeDirective && nonSimple) { - const errorOrigin = (node.kind === "method" || node.kind === "constructor") && !!node.key ? { - at: node.key.loc.end - } : { - node - }; - this.raise(ErrorMessages.IllegalLanguageModeDirective, errorOrigin); + this.raise(Errors.IllegalLanguageModeDirective, { + at: (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node + }); } const strictModeChanged = !oldStrict && this.state.strict; this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged); if (this.state.strict && node.id) { - this.checkLVal(node.id, "function name", BIND_OUTSIDE, undefined, undefined, strictModeChanged); + this.checkIdentifier(node.id, BIND_OUTSIDE, strictModeChanged); } }); this.prodParam.exit(); @@ -13463,19 +13971,31 @@ class ExpressionParser extends LValParser { this.expressionScope.exit(); } + isSimpleParameter(node) { + return node.type === "Identifier"; + } + isSimpleParamList(params) { for (let i = 0, len = params.length; i < len; i++) { - if (params[i].type !== "Identifier") return false; + if (!this.isSimpleParameter(params[i])) return false; } return true; } checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { - const checkClashes = new Set(); + const checkClashes = !allowDuplicates && new Set(); + const formalParameters = { + type: "FormalParameters" + }; for (const param of node.params) { - this.checkLVal(param, "function parameter list", BIND_VAR, allowDuplicates ? null : checkClashes, undefined, strictModeChanged); + this.checkLVal(param, { + in: formalParameters, + binding: BIND_VAR, + checkClashes, + strictModeChanged + }); } } @@ -13510,9 +14030,10 @@ class ExpressionParser extends LValParser { if (this.match(12)) { if (!allowEmpty) { - this.raise(ErrorMessages.UnexpectedToken, { - at: this.state.curPosition() - }, ","); + this.raise(Errors.UnexpectedToken, { + at: this.state.curPosition(), + unexpected: "," + }); } elt = null; @@ -13524,7 +14045,7 @@ class ExpressionParser extends LValParser { this.expectPlugin("partialApplication"); if (!allowPlaceholder) { - this.raise(ErrorMessages.UnexpectedArgumentPlaceholder, { + this.raise(Errors.UnexpectedArgumentPlaceholder, { at: this.state.startLoc }); } @@ -13589,30 +14110,32 @@ class ExpressionParser extends LValParser { if (word === "yield") { if (this.prodParam.hasYield) { - this.raise(ErrorMessages.YieldBindingIdentifier, { + this.raise(Errors.YieldBindingIdentifier, { at: startLoc }); return; } } else if (word === "await") { if (this.prodParam.hasAwait) { - this.raise(ErrorMessages.AwaitBindingIdentifier, { + this.raise(Errors.AwaitBindingIdentifier, { at: startLoc }); return; } if (this.scope.inStaticBlock) { - this.raise(ErrorMessages.AwaitBindingIdentifierInStaticBlock, { + this.raise(Errors.AwaitBindingIdentifierInStaticBlock, { at: startLoc }); return; } - this.expressionScope.recordAsyncArrowParametersError(ErrorMessages.AwaitBindingIdentifier, startLoc); + this.expressionScope.recordAsyncArrowParametersError({ + at: startLoc + }); } else if (word === "arguments") { if (this.scope.inClassAndNotInNonArrowFunction) { - this.raise(ErrorMessages.ArgumentsInClass, { + this.raise(Errors.ArgumentsInClass, { at: startLoc }); return; @@ -13620,18 +14143,20 @@ class ExpressionParser extends LValParser { } if (checkKeywords && isKeyword(word)) { - this.raise(ErrorMessages.UnexpectedKeyword, { - at: startLoc - }, word); + this.raise(Errors.UnexpectedKeyword, { + at: startLoc, + keyword: word + }); return; } const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord; if (reservedTest(word, this.inModule)) { - this.raise(ErrorMessages.UnexpectedReservedWord, { - at: startLoc - }, word); + this.raise(Errors.UnexpectedReservedWord, { + at: startLoc, + reservedWord: word + }); } } @@ -13647,11 +14172,13 @@ class ExpressionParser extends LValParser { parseAwait(startPos, startLoc) { const node = this.startNodeAt(startPos, startLoc); - this.expressionScope.recordParameterInitializerError(node.loc.start, ErrorMessages.AwaitExpressionFormalParameter); + this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, { + at: node + }); if (this.eat(55)) { - this.raise(ErrorMessages.ObsoleteAwaitStar, { - node + this.raise(Errors.ObsoleteAwaitStar, { + at: node }); } @@ -13680,7 +14207,9 @@ class ExpressionParser extends LValParser { parseYield() { const node = this.startNode(); - this.expressionScope.recordParameterInitializerError(node.loc.start, ErrorMessages.YieldInParameter); + this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, { + at: node + }); this.next(); let delegating = false; let argument = null; @@ -13714,7 +14243,7 @@ class ExpressionParser extends LValParser { proposal: "smart" }])) { if (left.type === "SequenceExpression") { - this.raise(ErrorMessages.PipelineHeadSequenceExpression, { + this.raise(Errors.PipelineHeadSequenceExpression, { at: leftStartLoc }); } @@ -13749,13 +14278,13 @@ class ExpressionParser extends LValParser { checkSmartPipeTopicBodyEarlyErrors(startLoc) { if (this.match(19)) { - throw this.raise(ErrorMessages.PipelineBodyNoArrow, { + throw this.raise(Errors.PipelineBodyNoArrow, { at: this.state.startLoc }); } if (!this.topicReferenceWasUsedInCurrentContext()) { - this.raise(ErrorMessages.PipelineTopicUnused, { + this.raise(Errors.PipelineTopicUnused, { at: startLoc }); } @@ -14032,10 +14561,11 @@ class StatementParser extends ExpressionParser { this.parseBlockBody(program, true, true, end); if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) { - for (const [name, loc] of Array.from(this.scope.undefinedExports)) { - this.raise(ErrorMessages.ModuleExportUndefined, { - at: loc - }, name); + for (const [localName, at] of Array.from(this.scope.undefinedExports)) { + this.raise(Errors.ModuleExportUndefined, { + at, + localName + }); } } @@ -14144,11 +14674,11 @@ class StatementParser extends ExpressionParser { if (context) { if (this.state.strict) { - this.raise(ErrorMessages.StrictFunction, { + this.raise(Errors.StrictFunction, { at: this.state.startLoc }); } else if (context !== "if" && context !== "label") { - this.raise(ErrorMessages.SloppyFunction, { + this.raise(Errors.SloppyFunction, { at: this.state.startLoc }); } @@ -14180,7 +14710,7 @@ class StatementParser extends ExpressionParser { kind = kind || this.state.value; if (context && kind !== "var") { - this.raise(ErrorMessages.UnexpectedLexicalDeclaration, { + this.raise(Errors.UnexpectedLexicalDeclaration, { at: this.state.startLoc }); } @@ -14211,7 +14741,7 @@ class StatementParser extends ExpressionParser { case 82: { if (!this.options.allowImportExportEverywhere && !topLevel) { - this.raise(ErrorMessages.UnexpectedImportExport, { + this.raise(Errors.UnexpectedImportExport, { at: this.state.startLoc }); } @@ -14241,7 +14771,7 @@ class StatementParser extends ExpressionParser { { if (this.isAsyncFunction()) { if (context) { - this.raise(ErrorMessages.AsyncFunctionInSingleStatementContext, { + this.raise(Errors.AsyncFunctionInSingleStatementContext, { at: this.state.startLoc }); } @@ -14264,8 +14794,8 @@ class StatementParser extends ExpressionParser { assertModuleNodeAllowed(node) { if (!this.options.allowImportExportEverywhere && !this.inModule) { - this.raise(SourceTypeModuleErrorMessages.ImportOutsideModule, { - node + this.raise(Errors.ImportOutsideModule, { + at: node }); } } @@ -14298,19 +14828,19 @@ class StatementParser extends ExpressionParser { } if (this.hasPlugin("decorators") && !this.getPluginOption("decorators", "decoratorsBeforeExport")) { - this.raise(ErrorMessages.DecoratorExportClass, { + this.raise(Errors.DecoratorExportClass, { at: this.state.startLoc }); } } else if (!this.canHaveLeadingDecorator()) { - throw this.raise(ErrorMessages.UnexpectedLeadingDecorator, { + throw this.raise(Errors.UnexpectedLeadingDecorator, { at: this.state.startLoc }); } } parseDecorator() { - this.expectOnePlugin(["decorators-legacy", "decorators"]); + this.expectOnePlugin(["decorators", "decorators-legacy"]); const node = this.startNode(); this.next(); @@ -14320,9 +14850,13 @@ class StatementParser extends ExpressionParser { const startLoc = this.state.startLoc; let expr; - if (this.eat(10)) { + if (this.match(10)) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + this.next(); expr = this.parseExpression(); this.expect(11); + expr = this.wrapParenthesis(startPos, startLoc, expr); } else { expr = this.parseIdentifier(false); @@ -14383,9 +14917,11 @@ class StatementParser extends ExpressionParser { } if (i === this.state.labels.length) { - this.raise(ErrorMessages.IllegalBreakContinue, { - node - }, isBreak ? "break" : "continue"); + const type = isBreak ? "BreakStatement" : "ContinueStatement"; + this.raise(Errors.IllegalBreakContinue, { + at: node, + type + }); } } @@ -14461,14 +14997,14 @@ class StatementParser extends ExpressionParser { if (isForOf) { if (startsWithLet) { - this.raise(ErrorMessages.ForOfLet, { - node: init + this.raise(Errors.ForOfLet, { + at: init }); } if (awaitAt === null && startsWithAsync && init.type === "Identifier") { - this.raise(ErrorMessages.ForOfAsync, { - node: init + this.raise(Errors.ForOfAsync, { + at: init }); } } @@ -14476,8 +15012,12 @@ class StatementParser extends ExpressionParser { if (isForOf || this.match(58)) { this.checkDestructuringPrivate(refExpressionErrors); this.toAssignable(init, true); - const description = isForOf ? "for-of statement" : "for-in statement"; - this.checkLVal(init, description); + const type = isForOf ? "ForOfStatement" : "ForInStatement"; + this.checkLVal(init, { + in: { + type + } + }); return this.parseForIn(node, init, awaitAt); } else { this.checkExpressionErrors(refExpressionErrors, true); @@ -14505,7 +15045,7 @@ class StatementParser extends ExpressionParser { parseReturnStatement(node) { if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) { - this.raise(ErrorMessages.IllegalReturn, { + this.raise(Errors.IllegalReturn, { at: this.state.startLoc }); } @@ -14543,7 +15083,7 @@ class StatementParser extends ExpressionParser { cur.test = this.parseExpression(); } else { if (sawDefault) { - this.raise(ErrorMessages.MultipleDefaultsInSwitch, { + this.raise(Errors.MultipleDefaultsInSwitch, { at: this.state.lastTokStartLoc }); } @@ -14573,7 +15113,7 @@ class StatementParser extends ExpressionParser { this.next(); if (this.hasPrecedingLineBreak()) { - this.raise(ErrorMessages.NewlineAfterThrow, { + this.raise(Errors.NewlineAfterThrow, { at: this.state.lastTokEndLoc }); } @@ -14587,7 +15127,13 @@ class StatementParser extends ExpressionParser { const param = this.parseBindingAtom(); const simple = param.type === "Identifier"; this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0); - this.checkLVal(param, "catch clause", BIND_LEXICAL); + this.checkLVal(param, { + in: { + type: "CatchClause" + }, + binding: BIND_LEXICAL, + allowingSloppyLetBinding: true + }); return param; } @@ -14617,17 +15163,17 @@ class StatementParser extends ExpressionParser { node.finalizer = this.eat(67) ? this.parseBlock() : null; if (!node.handler && !node.finalizer) { - this.raise(ErrorMessages.NoCatchOrFinally, { - node + this.raise(Errors.NoCatchOrFinally, { + at: node }); } return this.finishNode(node, "TryStatement"); } - parseVarStatement(node, kind) { + parseVarStatement(node, kind, allowMissingInitializer = false) { this.next(); - this.parseVar(node, false, kind); + this.parseVar(node, false, kind, allowMissingInitializer); this.semicolon(); return this.finishNode(node, "VariableDeclaration"); } @@ -14643,7 +15189,7 @@ class StatementParser extends ExpressionParser { parseWithStatement(node) { if (this.state.strict) { - this.raise(ErrorMessages.StrictWith, { + this.raise(Errors.StrictWith, { at: this.state.startLoc }); } @@ -14662,9 +15208,10 @@ class StatementParser extends ExpressionParser { parseLabeledStatement(node, maybeName, expr, context) { for (const label of this.state.labels) { if (label.name === maybeName) { - this.raise(ErrorMessages.LabelRedeclaration, { - node: expr - }, maybeName); + this.raise(Errors.LabelRedeclaration, { + at: expr, + labelName: maybeName + }); } } @@ -14793,15 +15340,19 @@ class StatementParser extends ExpressionParser { } if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) { - this.raise(ErrorMessages.ForInOfLoopInitializer, { - node: init - }, isForIn ? "for-in" : "for-of"); + this.raise(Errors.ForInOfLoopInitializer, { + at: init, + type: isForIn ? "ForInStatement" : "ForOfStatement" + }); } if (init.type === "AssignmentPattern") { - this.raise(ErrorMessages.InvalidLhs, { - node: init - }, "for-loop"); + this.raise(Errors.InvalidLhs, { + at: init, + ancestor: { + type: "ForStatement" + } + }); } node.left = init; @@ -14813,31 +15364,27 @@ class StatementParser extends ExpressionParser { return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement"); } - parseVar(node, isFor, kind) { + parseVar(node, isFor, kind, allowMissingInitializer = false) { const declarations = node.declarations = []; - const isTypescript = this.hasPlugin("typescript"); node.kind = kind; for (;;) { const decl = this.startNode(); this.parseVarId(decl, kind); + decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn(); - if (this.eat(29)) { - decl.init = isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn(); - } else { - if (kind === "const" && !(this.match(58) || this.isContextual(101))) { - if (!isTypescript) { - this.raise(ErrorMessages.DeclarationMissingInitializer, { - at: this.state.lastTokEndLoc - }, "Const declarations"); - } - } else if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(101)))) { - this.raise(ErrorMessages.DeclarationMissingInitializer, { - at: this.state.lastTokEndLoc - }, "Complex binding patterns"); + if (decl.init === null && !allowMissingInitializer) { + if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(101)))) { + this.raise(Errors.DeclarationMissingInitializer, { + at: this.state.lastTokEndLoc, + kind: "destructuring" + }); + } else if (kind === "const" && !(this.match(58) || this.isContextual(101))) { + this.raise(Errors.DeclarationMissingInitializer, { + at: this.state.lastTokEndLoc, + kind: "const" + }); } - - decl.init = null; } declarations.push(this.finishNode(decl, "VariableDeclarator")); @@ -14849,7 +15396,12 @@ class StatementParser extends ExpressionParser { parseVarId(decl, kind) { decl.id = this.parseBindingAtom(); - this.checkLVal(decl.id, "variable declaration", kind === "var" ? BIND_VAR : BIND_LEXICAL, undefined, kind !== "var"); + this.checkLVal(decl.id, { + in: { + type: "VariableDeclarator" + }, + binding: kind === "var" ? BIND_VAR : BIND_LEXICAL + }); } parseFunction(node, statement = FUNC_NO_FLAGS, isAsync = false) { @@ -14859,7 +15411,7 @@ class StatementParser extends ExpressionParser { this.initFunction(node, isAsync); if (this.match(55) && isHangingStatement) { - this.raise(ErrorMessages.GeneratorInSingleStatementContext, { + this.raise(Errors.GeneratorInSingleStatementContext, { at: this.state.startLoc }); } @@ -14947,7 +15499,7 @@ class StatementParser extends ExpressionParser { while (!this.match(8)) { if (this.eat(13)) { if (decorators.length > 0) { - throw this.raise(ErrorMessages.DecoratorSemicolon, { + throw this.raise(Errors.DecoratorSemicolon, { at: this.state.lastTokEndLoc }); } @@ -14971,8 +15523,8 @@ class StatementParser extends ExpressionParser { this.parseClassMember(classBody, member, state); if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) { - this.raise(ErrorMessages.DecoratorConstructor, { - node: member + this.raise(Errors.DecoratorConstructor, { + at: member }); } } @@ -14981,7 +15533,7 @@ class StatementParser extends ExpressionParser { this.next(); if (decorators.length) { - throw this.raise(ErrorMessages.TrailingDecorator, { + throw this.raise(Errors.TrailingDecorator, { at: this.state.startLoc }); } @@ -15053,8 +15605,8 @@ class StatementParser extends ExpressionParser { } if (this.isNonstaticConstructor(publicMethod)) { - this.raise(ErrorMessages.ConstructorIsGenerator, { - node: publicMethod.key + this.raise(Errors.ConstructorIsGenerator, { + at: publicMethod.key }); } @@ -15083,14 +15635,14 @@ class StatementParser extends ExpressionParser { publicMethod.kind = "constructor"; if (state.hadConstructor && !this.hasPlugin("typescript")) { - this.raise(ErrorMessages.DuplicateConstructor, { - node: key + this.raise(Errors.DuplicateConstructor, { + at: key }); } if (isConstructor && this.hasPlugin("typescript") && member.override) { - this.raise(ErrorMessages.OverrideOnConstructor, { - node: key + this.raise(Errors.OverrideOnConstructor, { + at: key }); } @@ -15122,8 +15674,8 @@ class StatementParser extends ExpressionParser { this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true); } else { if (this.isNonstaticConstructor(publicMethod)) { - this.raise(ErrorMessages.ConstructorIsAsync, { - node: publicMethod.key + this.raise(Errors.ConstructorIsAsync, { + at: publicMethod.key }); } @@ -15139,8 +15691,8 @@ class StatementParser extends ExpressionParser { this.pushClassPrivateMethod(classBody, privateMethod, false, false); } else { if (this.isNonstaticConstructor(publicMethod)) { - this.raise(ErrorMessages.ConstructorIsAccessor, { - node: publicMethod.key + this.raise(Errors.ConstructorIsAccessor, { + at: publicMethod.key }); } @@ -15172,14 +15724,14 @@ class StatementParser extends ExpressionParser { } = this.state; if ((type === 128 || type === 129) && member.static && value === "prototype") { - this.raise(ErrorMessages.StaticPrototype, { + this.raise(Errors.StaticPrototype, { at: this.state.startLoc }); } if (type === 134) { if (value === "constructor") { - this.raise(ErrorMessages.ConstructorClassPrivateField, { + this.raise(Errors.ConstructorClassPrivateField, { at: this.state.startLoc }); } @@ -15207,16 +15759,16 @@ class StatementParser extends ExpressionParser { classBody.body.push(this.finishNode(member, "StaticBlock")); if ((_member$decorators = member.decorators) != null && _member$decorators.length) { - this.raise(ErrorMessages.DecoratorStaticBlock, { - node: member + this.raise(Errors.DecoratorStaticBlock, { + at: member }); } } pushClassProperty(classBody, prop) { if (!prop.computed && (prop.key.name === "constructor" || prop.key.value === "constructor")) { - this.raise(ErrorMessages.ConstructorClassField, { - node: prop.key + this.raise(Errors.ConstructorClassField, { + at: prop.key }); } @@ -15234,8 +15786,8 @@ class StatementParser extends ExpressionParser { const key = prop.key; if (key.name === "constructor" || key.value === "constructor") { - this.raise(ErrorMessages.ConstructorClassField, { - node: key + this.raise(Errors.ConstructorClassField, { + at: key }); } } @@ -15298,13 +15850,13 @@ class StatementParser extends ExpressionParser { node.id = this.parseIdentifier(); if (isStatement) { - this.checkLVal(node.id, "class name", bindingType); + this.declareNameFromIdentifier(node.id, bindingType); } } else { if (optionalId || !isStatement) { node.id = null; } else { - throw this.raise(ErrorMessages.MissingClassName, { + throw this.raise(Errors.MissingClassName, { at: this.state.startLoc }); } @@ -15447,7 +15999,7 @@ class StatementParser extends ExpressionParser { if (this.match(26)) { if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport")) { - this.raise(ErrorMessages.DecoratorBeforeExport, { + this.raise(Errors.DecoratorBeforeExport, { at: this.state.startLoc }); } @@ -15457,7 +16009,7 @@ class StatementParser extends ExpressionParser { } if (this.match(75) || this.match(74) || this.isLet()) { - throw this.raise(ErrorMessages.UnsupportedDefaultExport, { + throw this.raise(Errors.UnsupportedDefaultExport, { at: this.state.startLoc }); } @@ -15518,6 +16070,7 @@ class StatementParser extends ExpressionParser { if (assertions) { node.assertions = assertions; + this.checkJSONModuleImport(node); } } else if (expect) { this.unexpected(); @@ -15536,7 +16089,7 @@ class StatementParser extends ExpressionParser { if (this.hasPlugin("decorators")) { if (this.getPluginOption("decorators", "decoratorsBeforeExport")) { - throw this.raise(ErrorMessages.DecoratorBeforeExport, { + throw this.raise(Errors.DecoratorBeforeExport, { at: this.state.startLoc }); } @@ -15559,8 +16112,8 @@ class StatementParser extends ExpressionParser { const declaration = node.declaration; if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) { - this.raise(ErrorMessages.ExportDefaultFromAsIdentifier, { - node: declaration + this.raise(Errors.ExportDefaultFromAsIdentifier, { + at: declaration }); } } @@ -15569,8 +16122,8 @@ class StatementParser extends ExpressionParser { const { exported } = specifier; - const exportedName = exported.type === "Identifier" ? exported.name : exported.value; - this.checkDuplicateExports(specifier, exportedName); + const exportName = exported.type === "Identifier" ? exported.name : exported.value; + this.checkDuplicateExports(specifier, exportName); if (!isFrom && specifier.local) { const { @@ -15578,9 +16131,11 @@ class StatementParser extends ExpressionParser { } = specifier; if (local.type !== "Identifier") { - this.raise(ErrorMessages.ExportBindingIsString, { - node: specifier - }, local.value, exportedName); + this.raise(Errors.ExportBindingIsString, { + at: specifier, + localName: local.value, + exportName + }); } else { this.checkReservedWord(local.name, local.loc.start, true, false); this.scope.checkLocalExport(local); @@ -15603,8 +16158,8 @@ class StatementParser extends ExpressionParser { const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1]; if (currentContextDecorators.length) { - throw this.raise(ErrorMessages.UnsupportedDecoratorExport, { - node + throw this.raise(Errors.UnsupportedDecoratorExport, { + at: node }); } } @@ -15631,14 +16186,21 @@ class StatementParser extends ExpressionParser { } } - checkDuplicateExports(node, name) { - if (this.exportedIdentifiers.has(name)) { - this.raise(name === "default" ? ErrorMessages.DuplicateDefaultExport : ErrorMessages.DuplicateExport, { - node - }, name); + checkDuplicateExports(node, exportName) { + if (this.exportedIdentifiers.has(exportName)) { + if (exportName === "default") { + this.raise(Errors.DuplicateDefaultExport, { + at: node + }); + } else { + this.raise(Errors.DuplicateExport, { + at: node, + exportName + }); + } } - this.exportedIdentifiers.add(name); + this.exportedIdentifiers.add(exportName); } parseExportSpecifiers(isInTypeExport) { @@ -15682,9 +16244,10 @@ class StatementParser extends ExpressionParser { const surrogate = result.value.match(loneSurrogate); if (surrogate) { - this.raise(ErrorMessages.ModuleExportNameHasLoneSurrogate, { - node: result - }, surrogate[0].charCodeAt(0).toString(16)); + this.raise(Errors.ModuleExportNameHasLoneSurrogate, { + at: result, + surrogateCharCode: surrogate[0].charCodeAt(0) + }); } return result; @@ -15693,6 +16256,49 @@ class StatementParser extends ExpressionParser { return this.parseIdentifier(true); } + isJSONModuleImport(node) { + if (node.assertions != null) { + return node.assertions.some(({ + key, + value + }) => { + return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type"); + }); + } + + return false; + } + + checkJSONModuleImport(node) { + if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") { + const { + specifiers + } = node; + + if (node.specifiers != null) { + const nonDefaultNamedSpecifier = specifiers.find(specifier => { + let imported; + + if (specifier.type === "ExportSpecifier") { + imported = specifier.local; + } else if (specifier.type === "ImportSpecifier") { + imported = specifier.imported; + } + + if (imported !== undefined) { + return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default"; + } + }); + + if (nonDefaultNamedSpecifier !== undefined) { + this.raise(Errors.ImportJSONBindingNotDefault, { + at: nonDefaultNamedSpecifier.loc.start + }); + } + } + } + } + parseImport(node) { node.specifiers = []; @@ -15717,6 +16323,7 @@ class StatementParser extends ExpressionParser { } } + this.checkJSONModuleImport(node); this.semicolon(); return this.finishNode(node, "ImportDeclaration"); } @@ -15730,10 +16337,17 @@ class StatementParser extends ExpressionParser { return tokenIsIdentifier(this.state.type); } - parseImportSpecifierLocal(node, specifier, type, contextDescription) { + parseImportSpecifierLocal(node, specifier, type) { specifier.local = this.parseIdentifier(); - this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL); - node.specifiers.push(this.finishNode(specifier, type)); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + + finishImportSpecifier(specifier, type) { + this.checkLVal(specifier.local, { + in: specifier, + binding: BIND_LEXICAL + }); + return this.finishNode(specifier, type); } parseAssertEntries() { @@ -15749,9 +16363,10 @@ class StatementParser extends ExpressionParser { const keyName = this.state.value; if (attrNames.has(keyName)) { - this.raise(ErrorMessages.ModuleAttributesWithDuplicateKeys, { - at: this.state.startLoc - }, keyName); + this.raise(Errors.ModuleAttributesWithDuplicateKeys, { + at: this.state.startLoc, + key: keyName + }); } attrNames.add(keyName); @@ -15765,7 +16380,7 @@ class StatementParser extends ExpressionParser { this.expect(14); if (!this.match(129)) { - throw this.raise(ErrorMessages.ModuleAttributeInvalidValue, { + throw this.raise(Errors.ModuleAttributeInvalidValue, { at: this.state.startLoc }); } @@ -15795,22 +16410,23 @@ class StatementParser extends ExpressionParser { node.key = this.parseIdentifier(true); if (node.key.name !== "type") { - this.raise(ErrorMessages.ModuleAttributeDifferentFromType, { - node: node.key - }, node.key.name); + this.raise(Errors.ModuleAttributeDifferentFromType, { + at: node.key + }); } if (attributes.has(node.key.name)) { - this.raise(ErrorMessages.ModuleAttributesWithDuplicateKeys, { - node: node.key - }, node.key.name); + this.raise(Errors.ModuleAttributesWithDuplicateKeys, { + at: node.key, + key: node.key.name + }); } attributes.add(node.key.name); this.expect(14); if (!this.match(129)) { - throw this.raise(ErrorMessages.ModuleAttributeInvalidValue, { + throw this.raise(Errors.ModuleAttributeInvalidValue, { at: this.state.startLoc }); } @@ -15840,7 +16456,7 @@ class StatementParser extends ExpressionParser { maybeParseDefaultImportSpecifier(node) { if (this.shouldParseDefaultImport(node)) { - this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier", "default import specifier"); + this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier"); return true; } @@ -15852,7 +16468,7 @@ class StatementParser extends ExpressionParser { const specifier = this.startNode(); this.next(); this.expectContextual(93); - this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier", "import namespace specifier"); + this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier"); return true; } @@ -15868,7 +16484,7 @@ class StatementParser extends ExpressionParser { first = false; } else { if (this.eat(14)) { - throw this.raise(ErrorMessages.DestructureNamedImport, { + throw this.raise(Errors.DestructureNamedImport, { at: this.state.startLoc }); } @@ -15895,9 +16511,10 @@ class StatementParser extends ExpressionParser { } = specifier; if (importedIsString) { - throw this.raise(ErrorMessages.ImportBindingIsString, { - node: specifier - }, imported.value); + throw this.raise(Errors.ImportBindingIsString, { + at: specifier, + importName: imported.value + }); } this.checkReservedWord(imported.name, specifier.loc.start, true, true); @@ -15907,8 +16524,7 @@ class StatementParser extends ExpressionParser { } } - this.checkLVal(specifier.local, "import specifier", BIND_LEXICAL); - return this.finishNode(specifier, "ImportSpecifier"); + return this.finishImportSpecifier(specifier, "ImportSpecifier"); } isThisParam(param) { diff --git a/tools/node_modules/eslint/node_modules/@babel/parser/package.json b/tools/node_modules/eslint/node_modules/@babel/parser/package.json index 4d7a1b4d589a6b..45239f014a1baf 100644 --- a/tools/node_modules/eslint/node_modules/@babel/parser/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/parser/package.json @@ -1,6 +1,6 @@ { "name": "@babel/parser", - "version": "7.17.3", + "version": "7.18.8", "description": "A JavaScript parser", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-parser", @@ -33,10 +33,12 @@ "node": ">=6.0.0" }, "devDependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/helper-fixtures": "^7.17.0", - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/code-frame": "^7.18.6", + "@babel/helper-check-duplicate-nodes": "^7.18.6", + "@babel/helper-fixtures": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", "charcodes": "^0.2.0" }, - "bin": "./bin/babel-parser.js" + "bin": "./bin/babel-parser.js", + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js index b17617b9f6069e..8b9e9b984a5082 100644 --- a/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js @@ -13,7 +13,7 @@ var _default = (0, _helperPluginUtils.declare)(api => { name: "syntax-import-assertions", manipulateOptions(opts, parserOpts) { - parserOpts.plugins.push(["importAssertions"]); + parserOpts.plugins.push("importAssertions"); } }; diff --git a/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/package.json b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/package.json index ae76e86ac1cab0..508e5bf7f6470f 100644 --- a/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-syntax-import-assertions", - "version": "7.16.7", + "version": "7.18.6", "description": "Allow parsing of the module assertion attributes in the import statement", "repository": { "type": "git", @@ -16,16 +16,17 @@ "babel-plugin" ], "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.16.7" + "@babel/core": "^7.18.6" }, "engines": { "node": ">=6.9.0" }, - "author": "The Babel Team (https://babel.dev/team)" + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/template/package.json b/tools/node_modules/eslint/node_modules/@babel/template/package.json index 9aca58a5a308dc..7c6794a22c0d5d 100644 --- a/tools/node_modules/eslint/node_modules/@babel/template/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/template/package.json @@ -1,6 +1,6 @@ { "name": "@babel/template", - "version": "7.16.7", + "version": "7.18.6", "description": "Generate an AST from a string template.", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-template", @@ -16,11 +16,12 @@ }, "main": "./lib/index.js", "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/context.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/context.js index 25e2e0a750122c..85fac2209d80db 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/context.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/context.js @@ -31,17 +31,19 @@ class TraversalContext { if (!(keys != null && keys.length)) return false; for (const key of keys) { - if (node[key]) return true; + if (node[key]) { + return true; + } } return false; } - create(node, obj, key, listKey) { + create(node, container, key, listKey) { return _path.default.get({ parentPath: this.parentPath, parent: node, - container: obj, + container, key: key, listKey }); diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/context.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/context.js index b11f08dc6046ea..9b61ab72b69e9b 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/context.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/context.js @@ -129,7 +129,11 @@ function stop() { function setScope() { if (this.opts && this.opts.noScope) return; let path = this.parentPath; - if (this.key === "key" && path.isMethod()) path = path.parentPath; + + if ((this.key === "key" || this.listKey === "decorators") && path.isMethod()) { + path = path.parentPath; + } + let target; while (path && !target) { @@ -177,7 +181,10 @@ function _resyncParent() { function _resyncKey() { if (!this.container) return; - if (this.node === this.container[this.key]) return; + + if (this.node === this.container[this.key]) { + return; + } if (Array.isArray(this.container)) { for (let i = 0; i < this.container.length; i++) { diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/conversion.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/conversion.js index a019d221f5cf5a..467637641ba1c4 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/conversion.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/conversion.js @@ -251,10 +251,11 @@ function hoistFunctionEnvironment(fnPath, noNewArrows = true, allowInsertArrow = const flatSuperProps = superProps.reduce((acc, superProp) => acc.concat(standardizeSuperProperty(superProp)), []); flatSuperProps.forEach(superProp => { const key = superProp.node.computed ? "" : superProp.get("property").node.name; - const isAssignment = superProp.parentPath.isAssignmentExpression({ + const superParentPath = superProp.parentPath; + const isAssignment = superParentPath.isAssignmentExpression({ left: superProp.node }); - const isCall = superProp.parentPath.isCallExpression({ + const isCall = superParentPath.isCallExpression({ callee: superProp.node }); const superBinding = getSuperPropBinding(thisEnvFn, isAssignment, key); @@ -265,18 +266,18 @@ function hoistFunctionEnvironment(fnPath, noNewArrows = true, allowInsertArrow = } if (isAssignment) { - const value = superProp.parentPath.node.right; + const value = superParentPath.node.right; args.push(value); } const call = callExpression(identifier(superBinding), args); if (isCall) { - superProp.parentPath.unshiftContainer("arguments", thisExpression()); + superParentPath.unshiftContainer("arguments", thisExpression()); superProp.replaceWith(memberExpression(call, identifier("call"))); - thisPaths.push(superProp.parentPath.get("arguments.0")); + thisPaths.push(superParentPath.get("arguments.0")); } else if (isAssignment) { - superProp.parentPath.replaceWith(call); + superParentPath.replaceWith(call); } else { superProp.replaceWith(call); } diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/evaluation.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/evaluation.js index abbbe050f59425..9979356afc5e63 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/evaluation.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/evaluation.js @@ -8,6 +8,14 @@ exports.evaluateTruthy = evaluateTruthy; const VALID_CALLEES = ["String", "Number", "Math"]; const INVALID_METHODS = ["random"]; +function isValidCallee(val) { + return VALID_CALLEES.includes(val); +} + +function isInvalidMethod(val) { + return INVALID_METHODS.includes(val); +} + function evaluateTruthy() { const res = this.evaluate(); if (res.confident) return !!res.value; @@ -336,7 +344,7 @@ function _evaluate(path, state) { let context; let func; - if (callee.isIdentifier() && !path.scope.getBinding(callee.node.name) && VALID_CALLEES.indexOf(callee.node.name) >= 0) { + if (callee.isIdentifier() && !path.scope.getBinding(callee.node.name) && isValidCallee(callee.node.name)) { func = global[callee.node.name]; } @@ -344,7 +352,7 @@ function _evaluate(path, state) { const object = callee.get("object"); const property = callee.get("property"); - if (object.isIdentifier() && property.isIdentifier() && VALID_CALLEES.indexOf(object.node.name) >= 0 && INVALID_METHODS.indexOf(property.node.name) < 0) { + if (object.isIdentifier() && property.isIdentifier() && isValidCallee(object.node.name) && !isInvalidMethod(property.node.name)) { context = global[object.node.name]; func = context[property.node.name]; } diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/index.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/index.js index 93602608eeecb8..aa02ce04b913bb 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/index.js @@ -227,6 +227,9 @@ class NodePath { } Object.assign(NodePath.prototype, NodePath_ancestry, NodePath_inference, NodePath_replacement, NodePath_evaluation, NodePath_conversion, NodePath_introspection, NodePath_context, NodePath_removal, NodePath_modification, NodePath_family, NodePath_comments); +{ + NodePath.prototype._guessExecutionStatusRelativeToDifferentFunctions = NodePath_introspection._guessExecutionStatusRelativeTo; +} for (const type of t.TYPES) { const typeKey = `is${type}`; diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/index.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/index.js index f7fef255a1591f..4d0b3b9bbe7b9a 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/index.js @@ -17,6 +17,7 @@ var _t = require("@babel/types"); const { anyTypeAnnotation, isAnyTypeAnnotation, + isArrayTypeAnnotation, isBooleanTypeAnnotation, isEmptyTypeAnnotation, isFlowBaseAnnotation, @@ -25,6 +26,10 @@ const { isMixedTypeAnnotation, isNumberTypeAnnotation, isStringTypeAnnotation, + isTSArrayType, + isTSTypeAnnotation, + isTSTypeReference, + isTupleTypeAnnotation, isTypeAnnotation, isUnionTypeAnnotation, isVoidTypeAnnotation, @@ -33,10 +38,20 @@ const { } = _t; function getTypeAnnotation() { - if (this.typeAnnotation) return this.typeAnnotation; - let type = this._getTypeAnnotation() || anyTypeAnnotation(); - if (isTypeAnnotation(type)) type = type.typeAnnotation; - return this.typeAnnotation = type; + let type = this.getData("typeAnnotation"); + + if (type != null) { + return type; + } + + type = this._getTypeAnnotation() || anyTypeAnnotation(); + + if (isTypeAnnotation(type) || isTSTypeAnnotation(type)) { + type = type.typeAnnotation; + } + + this.setData("typeAnnotation", type); + return type; } const typeAnnotationInferringNodes = new WeakSet(); @@ -150,7 +165,16 @@ function baseTypeStrictlyMatches(rightArg) { function isGenericType(genericName) { const type = this.getTypeAnnotation(); + + if (genericName === "Array") { + if (isTSArrayType(type) || isArrayTypeAnnotation(type) || isTupleTypeAnnotation(type)) { + return true; + } + } + return isGenericTypeAnnotation(type) && isIdentifier(type.id, { name: genericName + }) || isTSTypeReference(type) && isIdentifier(type.typeName, { + name: genericName }); } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js index c328dc150f425a..4591fe75e020c5 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js @@ -7,13 +7,11 @@ exports.default = _default; var _t = require("@babel/types"); +var _util = require("./util"); + const { BOOLEAN_NUMBER_BINARY_OPERATORS, - createFlowUnionType, - createTSUnionType, createTypeAnnotationBasedOnTypeof, - createUnionTypeAnnotation, - isTSTypeAnnotation, numberTypeAnnotation, voidTypeAnnotation } = _t; @@ -61,15 +59,7 @@ function getTypeAnnotationBindingConstantViolations(binding, path, name) { return; } - if (isTSTypeAnnotation(types[0]) && createTSUnionType) { - return createTSUnionType(types); - } - - if (createFlowUnionType) { - return createFlowUnionType(types); - } - - return createUnionTypeAnnotation(types); + return (0, _util.createUnionType)(types); } function getConstantViolationsBefore(binding, path, functions) { @@ -182,25 +172,11 @@ function getConditionalAnnotation(binding, path, name) { } if (types.length) { - if (isTSTypeAnnotation(types[0]) && createTSUnionType) { - return { - typeAnnotation: createTSUnionType(types), - ifStatement - }; - } - - if (createFlowUnionType) { - return { - typeAnnotation: createFlowUnionType(types), - ifStatement - }; - } - return { - typeAnnotation: createUnionTypeAnnotation(types), + typeAnnotation: (0, _util.createUnionType)(types), ifStatement }; } - return getConditionalAnnotation(ifStatement, name); + return getConditionalAnnotation(binding, ifStatement, name); } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferers.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferers.js index 68180ac548bd2a..e3727a4a71679a 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferers.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferers.js @@ -26,6 +26,8 @@ exports.RegExpLiteral = RegExpLiteral; exports.RestElement = RestElement; exports.SequenceExpression = SequenceExpression; exports.StringLiteral = StringLiteral; +exports.TSAsExpression = TSAsExpression; +exports.TSNonNullExpression = TSNonNullExpression; exports.TaggedTemplateExpression = TaggedTemplateExpression; exports.TemplateLiteral = TemplateLiteral; exports.TypeCastExpression = TypeCastExpression; @@ -37,6 +39,8 @@ var _t = require("@babel/types"); var _infererReference = require("./inferer-reference"); +var _util = require("./util"); + const { BOOLEAN_BINARY_OPERATORS, BOOLEAN_UNARY_OPERATORS, @@ -47,37 +51,20 @@ const { arrayTypeAnnotation, booleanTypeAnnotation, buildMatchMemberExpression, - createFlowUnionType, - createTSUnionType, - createUnionTypeAnnotation, genericTypeAnnotation, identifier, - isTSTypeAnnotation, nullLiteralTypeAnnotation, numberTypeAnnotation, stringTypeAnnotation, tupleTypeAnnotation, unionTypeAnnotation, - voidTypeAnnotation + voidTypeAnnotation, + isIdentifier } = _t; function VariableDeclarator() { - var _type; - - const id = this.get("id"); - if (!id.isIdentifier()) return; - const init = this.get("init"); - let type = init.getTypeAnnotation(); - - if (((_type = type) == null ? void 0 : _type.type) === "AnyTypeAnnotation") { - if (init.isCallExpression() && init.get("callee").isIdentifier({ - name: "Array" - }) && !init.scope.hasBinding("Array", true)) { - type = ArrayExpression(); - } - } - - return type; + if (!this.get("id").isIdentifier()) return; + return this.get("init").getTypeAnnotation(); } function TypeCastExpression(node) { @@ -86,8 +73,18 @@ function TypeCastExpression(node) { TypeCastExpression.validParent = true; +function TSAsExpression(node) { + return node.typeAnnotation; +} + +TSAsExpression.validParent = true; + +function TSNonNullExpression() { + return this.get("expression").getTypeAnnotation(); +} + function NewExpression(node) { - if (this.get("callee").isIdentifier()) { + if (node.callee.type === "Identifier") { return genericTypeAnnotation(node.callee); } } @@ -133,30 +130,12 @@ function BinaryExpression(node) { function LogicalExpression() { const argumentTypes = [this.get("left").getTypeAnnotation(), this.get("right").getTypeAnnotation()]; - - if (isTSTypeAnnotation(argumentTypes[0]) && createTSUnionType) { - return createTSUnionType(argumentTypes); - } - - if (createFlowUnionType) { - return createFlowUnionType(argumentTypes); - } - - return createUnionTypeAnnotation(argumentTypes); + return (0, _util.createUnionType)(argumentTypes); } function ConditionalExpression() { const argumentTypes = [this.get("consequent").getTypeAnnotation(), this.get("alternate").getTypeAnnotation()]; - - if (isTSTypeAnnotation(argumentTypes[0]) && createTSUnionType) { - return createTSUnionType(argumentTypes); - } - - if (createFlowUnionType) { - return createFlowUnionType(argumentTypes); - } - - return createUnionTypeAnnotation(argumentTypes); + return (0, _util.createUnionType)(argumentTypes); } function SequenceExpression() { @@ -229,7 +208,9 @@ function CallExpression() { if (isObjectKeys(callee)) { return arrayTypeAnnotation(stringTypeAnnotation()); - } else if (isArrayFrom(callee) || isObjectValues(callee)) { + } else if (isArrayFrom(callee) || isObjectValues(callee) || isIdentifier(callee, { + name: "Array" + })) { return arrayTypeAnnotation(anyTypeAnnotation()); } else if (isObjectEntries(callee)) { return arrayTypeAnnotation(tupleTypeAnnotation([stringTypeAnnotation(), anyTypeAnnotation()])); @@ -246,14 +227,20 @@ function resolveCall(callee) { callee = callee.resolve(); if (callee.isFunction()) { - if (callee.is("async")) { - if (callee.is("generator")) { + const { + node + } = callee; + + if (node.async) { + if (node.generator) { return genericTypeAnnotation(identifier("AsyncIterator")); } else { return genericTypeAnnotation(identifier("Promise")); } } else { - if (callee.node.returnType) { + if (node.generator) { + return genericTypeAnnotation(identifier("Iterator")); + } else if (callee.node.returnType) { return callee.node.returnType; } else {} } diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/util.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/util.js new file mode 100644 index 00000000000000..c38267088acc2e --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/util.js @@ -0,0 +1,32 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.createUnionType = createUnionType; + +var _t = require("@babel/types"); + +const { + createFlowUnionType, + createTSUnionType, + createUnionTypeAnnotation, + isFlowType, + isTSType +} = _t; + +function createUnionType(types) { + { + if (isFlowType(types[0])) { + if (createFlowUnionType) { + return createFlowUnionType(types); + } + + return createUnionTypeAnnotation(types); + } else { + if (createTSUnionType) { + return createTSUnionType(types); + } + } + } +} \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/introspection.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/introspection.js index 48d6ef1e1edb02..e0dbd719fb60df 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/introspection.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/introspection.js @@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports._guessExecutionStatusRelativeTo = _guessExecutionStatusRelativeTo; -exports._guessExecutionStatusRelativeToDifferentFunctions = _guessExecutionStatusRelativeToDifferentFunctions; exports._resolve = _resolve; exports.canHaveVariableDeclarationOrExpression = canHaveVariableDeclarationOrExpression; exports.canSwapBetweenExpressionAndStatement = canSwapBetweenExpressionAndStatement; @@ -94,9 +93,12 @@ function isCompletionRecord(allowInsideFunction) { let first = true; do { - const container = path.container; + const { + type, + container + } = path; - if (path.isFunction() && !first) { + if (!first && (path.isFunction() || type === "StaticBlock")) { return !!allowInsideFunction; } @@ -105,7 +107,7 @@ function isCompletionRecord(allowInsideFunction) { if (Array.isArray(container) && path.key !== container.length - 1) { return false; } - } while ((path = path.parentPath) && !path.isProgram()); + } while ((path = path.parentPath) && !path.isProgram() && !path.isDoExpression()); return true; } @@ -120,7 +122,7 @@ function isStatementOrBlock() { function referencesImport(moduleSource, importName) { if (!this.isReferencedIdentifier()) { - if ((this.isMemberExpression() || this.isOptionalMemberExpression()) && (this.node.computed ? isStringLiteral(this.node.property, { + if (this.isJSXMemberExpression() && this.node.property.name === importName || (this.isMemberExpression() || this.isOptionalMemberExpression()) && (this.node.computed ? isStringLiteral(this.node.property, { value: importName }) : this.node.property.name === importName)) { const object = this.get("object"); @@ -229,20 +231,24 @@ function isExecutionUncertainInList(paths, maxIndex) { } function _guessExecutionStatusRelativeTo(target) { + return _guessExecutionStatusRelativeToCached(this, target, new Map()); +} + +function _guessExecutionStatusRelativeToCached(base, target, cache) { const funcParent = { - this: getOuterFunction(this), + this: getOuterFunction(base), target: getOuterFunction(target) }; if (funcParent.target.node !== funcParent.this.node) { - return this._guessExecutionStatusRelativeToDifferentFunctions(funcParent.target); + return _guessExecutionStatusRelativeToDifferentFunctionsCached(base, funcParent.target, cache); } const paths = { target: target.getAncestry(), - this: this.getAncestry() + this: base.getAncestry() }; - if (paths.target.indexOf(this) >= 0) return "after"; + if (paths.target.indexOf(base) >= 0) return "after"; if (paths.this.indexOf(target) >= 0) return "before"; let commonPath; const commonIndex = { @@ -286,9 +292,9 @@ function _guessExecutionStatusRelativeTo(target) { return keyPosition.target > keyPosition.this ? "before" : "after"; } -const executionOrderCheckedNodes = new WeakSet(); +const executionOrderCheckedNodes = new Set(); -function _guessExecutionStatusRelativeToDifferentFunctions(target) { +function _guessExecutionStatusRelativeToDifferentFunctionsInternal(base, target, cache) { if (!target.isFunctionDeclaration() || target.parentPath.isExportDeclaration()) { return "unknown"; } @@ -309,20 +315,37 @@ function _guessExecutionStatusRelativeToDifferentFunctions(target) { if (executionOrderCheckedNodes.has(path.node)) continue; executionOrderCheckedNodes.add(path.node); - const status = this._guessExecutionStatusRelativeTo(path); - - executionOrderCheckedNodes.delete(path.node); + try { + const status = _guessExecutionStatusRelativeToCached(base, path, cache); - if (allStatus && allStatus !== status) { - return "unknown"; - } else { - allStatus = status; + if (allStatus && allStatus !== status) { + return "unknown"; + } else { + allStatus = status; + } + } finally { + executionOrderCheckedNodes.delete(path.node); } } return allStatus; } +function _guessExecutionStatusRelativeToDifferentFunctionsCached(base, target, cache) { + let nodeMap = cache.get(base.node); + + if (!nodeMap) { + cache.set(base.node, nodeMap = new Map()); + } else if (nodeMap.has(target.node)) { + return nodeMap.get(target.node); + } + + const result = _guessExecutionStatusRelativeToDifferentFunctionsInternal(base, target, cache); + + nodeMap.set(target.node, result); + return result; +} + function resolve(dangerous, resolved) { return this._resolve(dangerous, resolved) || this; } diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js index 23ec8fe6d7eb8f..36e4a4e324d9b6 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js @@ -4,6 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.hooks = void 0; + +var _ = require(".."); + const hooks = [function (self, parent) { const removeParent = self.key === "test" && (parent.isWhile() || parent.isSwitchCase()) || self.key === "declaration" && parent.isExportDeclaration() || self.key === "body" && parent.isLabeledStatement() || self.listKey === "declarations" && parent.isVariableDeclaration() && parent.node.declarations.length === 1 || self.key === "expression" && parent.isExpressionStatement(); diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/virtual-types.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/virtual-types.js index 871cb249d37b31..062a996e81990c 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/virtual-types.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/virtual-types.js @@ -164,8 +164,8 @@ const Generated = { }; exports.Generated = Generated; const Pure = { - checkPath(path, opts) { - return path.scope.isPure(path.node, opts); + checkPath(path, constantsOnly) { + return path.scope.isPure(path.node, constantsOnly); } }; diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/replacement.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/replacement.js index ee5cdce8e19605..66506f29beaeba 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/replacement.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/replacement.js @@ -69,10 +69,11 @@ function replaceWithMultiple(nodes) { function replaceWithSourceString(replacement) { this.resync(); + let ast; try { replacement = `(${replacement})`; - replacement = (0, _parser.parse)(replacement); + ast = (0, _parser.parse)(replacement); } catch (err) { const loc = err.loc; @@ -89,23 +90,21 @@ function replaceWithSourceString(replacement) { throw err; } - replacement = replacement.program.body[0].expression; + const expressionAST = ast.program.body[0].expression; - _index.default.removeProperties(replacement); + _index.default.removeProperties(expressionAST); - return this.replaceWith(replacement); + return this.replaceWith(expressionAST); } -function replaceWith(replacement) { +function replaceWith(replacementPath) { this.resync(); if (this.removed) { throw new Error("You can't replace this node, we've already removed it"); } - if (replacement instanceof _index2.default) { - replacement = replacement.node; - } + let replacement = replacementPath instanceof _index2.default ? replacementPath.node : replacementPath; if (!replacement) { throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead"); diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/index.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/index.js index ee376a88f558e5..cdc09eee3f8c01 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/index.js @@ -38,9 +38,11 @@ const { isMethod, isModuleDeclaration, isModuleSpecifier, + isNullLiteral, isObjectExpression, isProperty, isPureish, + isRegExpLiteral, isSuper, isTaggedTemplateExpression, isTemplateLiteral, @@ -53,7 +55,13 @@ const { toIdentifier, unaryExpression, variableDeclaration, - variableDeclarator + variableDeclarator, + isRecordExpression, + isTupleExpression, + isObjectProperty, + isTopicReference, + isMetaProperty, + isPrivateName } = _t; function gatherNodeParts(node, parts) { @@ -69,7 +77,7 @@ function gatherNodeParts(node, parts) { } } else if (isModuleSpecifier(node)) { gatherNodeParts(node.local, parts); - } else if (isLiteral(node)) { + } else if (isLiteral(node) && !isNullLiteral(node) && !isRegExpLiteral(node) && !isTemplateLiteral(node)) { parts.push(node.value); } @@ -179,7 +187,7 @@ function gatherNodeParts(node, parts) { break; case "JSXOpeningElement": - parts.push(node.name); + gatherNodeParts(node.name, parts); break; case "JSXFragment": @@ -362,9 +370,9 @@ class Scope { path = this.path; do { - const isKey = path.key === "key"; + const shouldSkip = path.key === "key" || path.listKey === "decorators"; path = path.parentPath; - if (isKey && path.isMethod()) path = path.parentPath; + if (shouldSkip && path.isMethod()) path = path.parentPath; if (path && path.isScope()) parent = path; } while (path && !parent); @@ -430,7 +438,7 @@ class Scope { } isStatic(node) { - if (isThisExpression(node) || isSuper(node)) { + if (isThisExpression(node) || isSuper(node) || isTopicReference(node)) { return true; } @@ -682,11 +690,19 @@ class Scope { if (!binding) return false; if (constantsOnly) return binding.constant; return true; + } else if (isThisExpression(node) || isMetaProperty(node) || isTopicReference(node) || isPrivateName(node)) { + return true; } else if (isClass(node)) { + var _node$decorators; + if (node.superClass && !this.isPure(node.superClass, constantsOnly)) { return false; } + if (((_node$decorators = node.decorators) == null ? void 0 : _node$decorators.length) > 0) { + return false; + } + return this.isPure(node.body, constantsOnly); } else if (isClassBody(node)) { for (const method of node.body) { @@ -696,25 +712,44 @@ class Scope { return true; } else if (isBinary(node)) { return this.isPure(node.left, constantsOnly) && this.isPure(node.right, constantsOnly); - } else if (isArrayExpression(node)) { + } else if (isArrayExpression(node) || isTupleExpression(node)) { for (const elem of node.elements) { - if (!this.isPure(elem, constantsOnly)) return false; + if (elem !== null && !this.isPure(elem, constantsOnly)) return false; } return true; - } else if (isObjectExpression(node)) { + } else if (isObjectExpression(node) || isRecordExpression(node)) { for (const prop of node.properties) { if (!this.isPure(prop, constantsOnly)) return false; } return true; } else if (isMethod(node)) { + var _node$decorators2; + if (node.computed && !this.isPure(node.key, constantsOnly)) return false; - if (node.kind === "get" || node.kind === "set") return false; + + if (((_node$decorators2 = node.decorators) == null ? void 0 : _node$decorators2.length) > 0) { + return false; + } + return true; } else if (isProperty(node)) { + var _node$decorators3; + if (node.computed && !this.isPure(node.key, constantsOnly)) return false; - return this.isPure(node.value, constantsOnly); + + if (((_node$decorators3 = node.decorators) == null ? void 0 : _node$decorators3.length) > 0) { + return false; + } + + if (isObjectProperty(node) || node.static) { + if (node.value !== null && !this.isPure(node.value, constantsOnly)) { + return false; + } + } + + return true; } else if (isUnaryExpression(node)) { return this.isPure(node.argument, constantsOnly); } else if (isTaggedTemplateExpression(node)) { @@ -821,7 +856,9 @@ class Scope { push(opts) { let path = this.path; - if (!path.isBlockStatement() && !path.isProgram()) { + if (path.isPattern()) { + path = this.getPatternParent().path; + } else if (!path.isBlockStatement() && !path.isProgram()) { path = this.getBlockParent().path; } @@ -888,6 +925,18 @@ class Scope { throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program..."); } + getPatternParent() { + let scope = this; + + do { + if (!scope.path.isPattern()) { + return scope.getBlockParent(); + } + } while (scope = scope.parent.parent); + + throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program..."); + } + getAllBindings() { const ids = Object.create(null); let scope = this; diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/lib/renamer.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/lib/renamer.js index f11bbb7006614b..0b34e8d2c81211 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/lib/renamer.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/lib/renamer.js @@ -9,16 +9,10 @@ var _binding = require("../binding"); var _helperSplitExportDeclaration = require("@babel/helper-split-export-declaration"); -var _t = require("@babel/types"); - -const { - VISITOR_KEYS, - assignmentExpression, - identifier, - toExpression, - variableDeclaration, - variableDeclarator -} = _t; +var t = require("@babel/types"); + +var _helperEnvironmentVisitor = require("@babel/helper-environment-visitor"); + const renameVisitor = { ReferencedIdentifier({ node @@ -30,7 +24,11 @@ const renameVisitor = { Scope(path, state) { if (!path.scope.bindingIdentifierEquals(state.oldName, state.binding.identifier)) { - skipAllButComputedMethodKey(path); + path.skip(); + + if (path.isMethod()) { + (0, _helperEnvironmentVisitor.requeueComputedKeyAndDecorators)(path); + } } }, @@ -59,7 +57,17 @@ class Renamer { return; } - if (maybeExportDeclar.isExportDefaultDeclaration() && !maybeExportDeclar.get("declaration").node.id) { + if (maybeExportDeclar.isExportDefaultDeclaration()) { + const { + declaration + } = maybeExportDeclar.node; + + if (t.isDeclaration(declaration) && !declaration.id) { + return; + } + } + + if (maybeExportDeclar.isExportAllDeclaration()) { return; } @@ -67,23 +75,11 @@ class Renamer { } maybeConvertFromClassFunctionDeclaration(path) { - return; - if (!path.isFunctionDeclaration() && !path.isClassDeclaration()) return; - if (this.binding.kind !== "hoisted") return; - path.node.id = identifier(this.oldName); - path.node._blockHoist = 3; - path.replaceWith(variableDeclaration("let", [variableDeclarator(identifier(this.newName), toExpression(path.node))])); + return path; } maybeConvertFromClassFunctionExpression(path) { - return; - if (!path.isFunctionExpression() && !path.isClassExpression()) return; - if (this.binding.kind !== "local") return; - path.node.id = identifier(this.oldName); - this.binding.scope.parent.push({ - id: identifier(this.newName) - }); - path.replaceWith(assignmentExpression("=", identifier(this.newName), path.node)); + return path; } rename(block) { @@ -123,24 +119,11 @@ class Renamer { } if (parentDeclar) { - this.maybeConvertFromClassFunctionDeclaration(parentDeclar); - this.maybeConvertFromClassFunctionExpression(parentDeclar); + this.maybeConvertFromClassFunctionDeclaration(path); + this.maybeConvertFromClassFunctionExpression(path); } } } -exports.default = Renamer; - -function skipAllButComputedMethodKey(path) { - if (!path.isMethod() || !path.node.computed) { - path.skip(); - return; - } - - const keys = VISITOR_KEYS[path.type]; - - for (const key of keys) { - if (key !== "key") path.skipKey(key); - } -} \ No newline at end of file +exports.default = Renamer; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/package.json b/tools/node_modules/eslint/node_modules/@babel/traverse/package.json index 401ba251139933..425ccbfc6696ac 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/package.json @@ -1,6 +1,6 @@ { "name": "@babel/traverse", - "version": "7.17.3", + "version": "7.18.8", "description": "The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-traverse", @@ -16,21 +16,22 @@ }, "main": "./lib/index.js", "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.7", + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-function-name": "^7.18.6", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.8", + "@babel/types": "^7.18.8", "debug": "^4.1.0", "globals": "^11.1.0" }, "devDependencies": { - "@babel/helper-plugin-test-runner": "^7.16.7" + "@babel/helper-plugin-test-runner": "^7.18.6" }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/asserts.js b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/asserts.js index f10b33eede2389..20bb24c632a2aa 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/asserts.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/asserts.js @@ -1,4 +1,4 @@ -import t from "@babel/types"; +import * as t from "@babel/types"; export default function generateAsserts() { let output = `/* diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/validators.js b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/validators.js index f806fc76c724a6..3a2dbe29dae04f 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/validators.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/validators.js @@ -1,5 +1,5 @@ -import t from "@babel/types"; -import virtualTypes from "../../lib/path/lib/virtual-types.js"; +import * as t from "@babel/types"; +import * as virtualTypes from "../../lib/path/lib/virtual-types.js"; export default function generateValidators() { let output = `/* @@ -18,12 +18,17 @@ export interface NodePathValidators { } for (const type of Object.keys(virtualTypes)) { + // TODO: Remove this check once we stop compiling to CJS + if (type === "default" || type === "__esModule") continue; + const { types } = virtualTypes[type]; if (type[0] === "_") continue; if (t.NODE_FIELDS[type] || t.FLIPPED_ALIAS_KEYS[type]) { output += `is${type}(opts?: object): this is NodePath;`; } else if (types /* in VirtualTypeAliases */) { output += `is${type}(opts?: object): this is NodePath;`; + } else if (type === "Pure") { + output += `isPure(constantsOnly?: boolean): boolean;`; } else { // if it don't have types, then VirtualTypeAliases[type] is t.Node // which TS marked as always true diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/virtual-types.js b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/virtual-types.js index 6d55f54caaf90a..ff873f0203c594 100644 --- a/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/virtual-types.js +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/virtual-types.js @@ -1,4 +1,4 @@ -import virtualTypes from "../../lib/path/lib/virtual-types.js"; +import * as virtualTypes from "../../lib/path/lib/virtual-types.js"; export default function generateValidators() { let output = `/* @@ -11,6 +11,9 @@ export interface VirtualTypeAliases { `; for (const type of Object.keys(virtualTypes)) { + // TODO: Remove this check once we stop compiling to CJS + if (type === "default" || type === "__esModule") continue; + output += ` ${type}: ${(virtualTypes[type].types || ["Node"]) .map(t => `t.${t}`) .join(" | ")};`; diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/asserts/generated/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/asserts/generated/index.js index 53a55168dafaf2..b75a4e936654d0 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/asserts/generated/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/asserts/generated/index.js @@ -227,6 +227,7 @@ exports.assertTSImportType = assertTSImportType; exports.assertTSIndexSignature = assertTSIndexSignature; exports.assertTSIndexedAccessType = assertTSIndexedAccessType; exports.assertTSInferType = assertTSInferType; +exports.assertTSInstantiationExpression = assertTSInstantiationExpression; exports.assertTSInterfaceBody = assertTSInterfaceBody; exports.assertTSInterfaceDeclaration = assertTSInterfaceDeclaration; exports.assertTSIntersectionType = assertTSIntersectionType; @@ -1236,6 +1237,10 @@ function assertTSTypeAliasDeclaration(node, opts) { assert("TSTypeAliasDeclaration", node, opts); } +function assertTSInstantiationExpression(node, opts) { + assert("TSInstantiationExpression", node, opts); +} + function assertTSAsExpression(node, opts) { assert("TSAsExpression", node, opts); } diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/builder.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/builder.js deleted file mode 100644 index c28edb62506ef8..00000000000000 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/builder.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = builder; - -var _definitions = require("../definitions"); - -var _validate = require("../validators/validate"); - -function builder() { - const type = this; - const keys = _definitions.BUILDER_KEYS[type]; - const countArgs = arguments.length; - - if (countArgs > keys.length) { - throw new Error(`${type}: Too many arguments passed. Received ${countArgs} but can receive no more than ${keys.length}`); - } - - const node = { - type - }; - - for (let i = 0; i < keys.length; ++i) { - const key = keys[i]; - const field = _definitions.NODE_FIELDS[type][key]; - let arg; - if (i < countArgs) arg = arguments[i]; - - if (arg === undefined) { - arg = Array.isArray(field.default) ? [] : field.default; - } - - node[key] = arg; - } - - for (const key in node) { - (0, _validate.default)(node, key, node[key]); - } - - return node; -} \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/index.js index 99851ee0bf9c8e..d47f3d0f12145e 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/index.js @@ -193,6 +193,7 @@ exports.tSImportType = exports.tsImportType = tsImportType; exports.tSIndexSignature = exports.tsIndexSignature = tsIndexSignature; exports.tSIndexedAccessType = exports.tsIndexedAccessType = tsIndexedAccessType; exports.tSInferType = exports.tsInferType = tsInferType; +exports.tSInstantiationExpression = exports.tsInstantiationExpression = tsInstantiationExpression; exports.tSInterfaceBody = exports.tsInterfaceBody = tsInterfaceBody; exports.tSInterfaceDeclaration = exports.tsInterfaceDeclaration = tsInterfaceDeclaration; exports.tSIntersectionType = exports.tsIntersectionType = tsIntersectionType; @@ -255,1012 +256,1972 @@ exports.whileStatement = whileStatement; exports.withStatement = withStatement; exports.yieldExpression = yieldExpression; -var _builder = require("../builder"); +var _validateNode = require("../validateNode"); -function arrayExpression(elements) { - return _builder.default.apply("ArrayExpression", arguments); +function arrayExpression(elements = []) { + return (0, _validateNode.default)({ + type: "ArrayExpression", + elements + }); } function assignmentExpression(operator, left, right) { - return _builder.default.apply("AssignmentExpression", arguments); + return (0, _validateNode.default)({ + type: "AssignmentExpression", + operator, + left, + right + }); } function binaryExpression(operator, left, right) { - return _builder.default.apply("BinaryExpression", arguments); + return (0, _validateNode.default)({ + type: "BinaryExpression", + operator, + left, + right + }); } function interpreterDirective(value) { - return _builder.default.apply("InterpreterDirective", arguments); + return (0, _validateNode.default)({ + type: "InterpreterDirective", + value + }); } function directive(value) { - return _builder.default.apply("Directive", arguments); + return (0, _validateNode.default)({ + type: "Directive", + value + }); } function directiveLiteral(value) { - return _builder.default.apply("DirectiveLiteral", arguments); + return (0, _validateNode.default)({ + type: "DirectiveLiteral", + value + }); } -function blockStatement(body, directives) { - return _builder.default.apply("BlockStatement", arguments); +function blockStatement(body, directives = []) { + return (0, _validateNode.default)({ + type: "BlockStatement", + body, + directives + }); } -function breakStatement(label) { - return _builder.default.apply("BreakStatement", arguments); +function breakStatement(label = null) { + return (0, _validateNode.default)({ + type: "BreakStatement", + label + }); } function callExpression(callee, _arguments) { - return _builder.default.apply("CallExpression", arguments); + return (0, _validateNode.default)({ + type: "CallExpression", + callee, + arguments: _arguments + }); } -function catchClause(param, body) { - return _builder.default.apply("CatchClause", arguments); +function catchClause(param = null, body) { + return (0, _validateNode.default)({ + type: "CatchClause", + param, + body + }); } function conditionalExpression(test, consequent, alternate) { - return _builder.default.apply("ConditionalExpression", arguments); + return (0, _validateNode.default)({ + type: "ConditionalExpression", + test, + consequent, + alternate + }); } -function continueStatement(label) { - return _builder.default.apply("ContinueStatement", arguments); +function continueStatement(label = null) { + return (0, _validateNode.default)({ + type: "ContinueStatement", + label + }); } function debuggerStatement() { - return _builder.default.apply("DebuggerStatement", arguments); + return { + type: "DebuggerStatement" + }; } function doWhileStatement(test, body) { - return _builder.default.apply("DoWhileStatement", arguments); + return (0, _validateNode.default)({ + type: "DoWhileStatement", + test, + body + }); } function emptyStatement() { - return _builder.default.apply("EmptyStatement", arguments); + return { + type: "EmptyStatement" + }; } function expressionStatement(expression) { - return _builder.default.apply("ExpressionStatement", arguments); + return (0, _validateNode.default)({ + type: "ExpressionStatement", + expression + }); } -function file(program, comments, tokens) { - return _builder.default.apply("File", arguments); +function file(program, comments = null, tokens = null) { + return (0, _validateNode.default)({ + type: "File", + program, + comments, + tokens + }); } function forInStatement(left, right, body) { - return _builder.default.apply("ForInStatement", arguments); -} - -function forStatement(init, test, update, body) { - return _builder.default.apply("ForStatement", arguments); -} - -function functionDeclaration(id, params, body, generator, async) { - return _builder.default.apply("FunctionDeclaration", arguments); -} - -function functionExpression(id, params, body, generator, async) { - return _builder.default.apply("FunctionExpression", arguments); + return (0, _validateNode.default)({ + type: "ForInStatement", + left, + right, + body + }); +} + +function forStatement(init = null, test = null, update = null, body) { + return (0, _validateNode.default)({ + type: "ForStatement", + init, + test, + update, + body + }); +} + +function functionDeclaration(id = null, params, body, generator = false, async = false) { + return (0, _validateNode.default)({ + type: "FunctionDeclaration", + id, + params, + body, + generator, + async + }); +} + +function functionExpression(id = null, params, body, generator = false, async = false) { + return (0, _validateNode.default)({ + type: "FunctionExpression", + id, + params, + body, + generator, + async + }); } function identifier(name) { - return _builder.default.apply("Identifier", arguments); + return (0, _validateNode.default)({ + type: "Identifier", + name + }); } -function ifStatement(test, consequent, alternate) { - return _builder.default.apply("IfStatement", arguments); +function ifStatement(test, consequent, alternate = null) { + return (0, _validateNode.default)({ + type: "IfStatement", + test, + consequent, + alternate + }); } function labeledStatement(label, body) { - return _builder.default.apply("LabeledStatement", arguments); + return (0, _validateNode.default)({ + type: "LabeledStatement", + label, + body + }); } function stringLiteral(value) { - return _builder.default.apply("StringLiteral", arguments); + return (0, _validateNode.default)({ + type: "StringLiteral", + value + }); } function numericLiteral(value) { - return _builder.default.apply("NumericLiteral", arguments); + return (0, _validateNode.default)({ + type: "NumericLiteral", + value + }); } function nullLiteral() { - return _builder.default.apply("NullLiteral", arguments); + return { + type: "NullLiteral" + }; } function booleanLiteral(value) { - return _builder.default.apply("BooleanLiteral", arguments); + return (0, _validateNode.default)({ + type: "BooleanLiteral", + value + }); } -function regExpLiteral(pattern, flags) { - return _builder.default.apply("RegExpLiteral", arguments); +function regExpLiteral(pattern, flags = "") { + return (0, _validateNode.default)({ + type: "RegExpLiteral", + pattern, + flags + }); } function logicalExpression(operator, left, right) { - return _builder.default.apply("LogicalExpression", arguments); + return (0, _validateNode.default)({ + type: "LogicalExpression", + operator, + left, + right + }); } -function memberExpression(object, property, computed, optional) { - return _builder.default.apply("MemberExpression", arguments); +function memberExpression(object, property, computed = false, optional = null) { + return (0, _validateNode.default)({ + type: "MemberExpression", + object, + property, + computed, + optional + }); } function newExpression(callee, _arguments) { - return _builder.default.apply("NewExpression", arguments); + return (0, _validateNode.default)({ + type: "NewExpression", + callee, + arguments: _arguments + }); } -function program(body, directives, sourceType, interpreter) { - return _builder.default.apply("Program", arguments); +function program(body, directives = [], sourceType = "script", interpreter = null) { + return (0, _validateNode.default)({ + type: "Program", + body, + directives, + sourceType, + interpreter, + sourceFile: null + }); } function objectExpression(properties) { - return _builder.default.apply("ObjectExpression", arguments); -} - -function objectMethod(kind, key, params, body, computed, generator, async) { - return _builder.default.apply("ObjectMethod", arguments); -} - -function objectProperty(key, value, computed, shorthand, decorators) { - return _builder.default.apply("ObjectProperty", arguments); + return (0, _validateNode.default)({ + type: "ObjectExpression", + properties + }); +} + +function objectMethod(kind = "method", key, params, body, computed = false, generator = false, async = false) { + return (0, _validateNode.default)({ + type: "ObjectMethod", + kind, + key, + params, + body, + computed, + generator, + async + }); +} + +function objectProperty(key, value, computed = false, shorthand = false, decorators = null) { + return (0, _validateNode.default)({ + type: "ObjectProperty", + key, + value, + computed, + shorthand, + decorators + }); } function restElement(argument) { - return _builder.default.apply("RestElement", arguments); + return (0, _validateNode.default)({ + type: "RestElement", + argument + }); } -function returnStatement(argument) { - return _builder.default.apply("ReturnStatement", arguments); +function returnStatement(argument = null) { + return (0, _validateNode.default)({ + type: "ReturnStatement", + argument + }); } function sequenceExpression(expressions) { - return _builder.default.apply("SequenceExpression", arguments); + return (0, _validateNode.default)({ + type: "SequenceExpression", + expressions + }); } function parenthesizedExpression(expression) { - return _builder.default.apply("ParenthesizedExpression", arguments); + return (0, _validateNode.default)({ + type: "ParenthesizedExpression", + expression + }); } -function switchCase(test, consequent) { - return _builder.default.apply("SwitchCase", arguments); +function switchCase(test = null, consequent) { + return (0, _validateNode.default)({ + type: "SwitchCase", + test, + consequent + }); } function switchStatement(discriminant, cases) { - return _builder.default.apply("SwitchStatement", arguments); + return (0, _validateNode.default)({ + type: "SwitchStatement", + discriminant, + cases + }); } function thisExpression() { - return _builder.default.apply("ThisExpression", arguments); + return { + type: "ThisExpression" + }; } function throwStatement(argument) { - return _builder.default.apply("ThrowStatement", arguments); + return (0, _validateNode.default)({ + type: "ThrowStatement", + argument + }); } -function tryStatement(block, handler, finalizer) { - return _builder.default.apply("TryStatement", arguments); +function tryStatement(block, handler = null, finalizer = null) { + return (0, _validateNode.default)({ + type: "TryStatement", + block, + handler, + finalizer + }); } -function unaryExpression(operator, argument, prefix) { - return _builder.default.apply("UnaryExpression", arguments); +function unaryExpression(operator, argument, prefix = true) { + return (0, _validateNode.default)({ + type: "UnaryExpression", + operator, + argument, + prefix + }); } -function updateExpression(operator, argument, prefix) { - return _builder.default.apply("UpdateExpression", arguments); +function updateExpression(operator, argument, prefix = false) { + return (0, _validateNode.default)({ + type: "UpdateExpression", + operator, + argument, + prefix + }); } function variableDeclaration(kind, declarations) { - return _builder.default.apply("VariableDeclaration", arguments); + return (0, _validateNode.default)({ + type: "VariableDeclaration", + kind, + declarations + }); } -function variableDeclarator(id, init) { - return _builder.default.apply("VariableDeclarator", arguments); +function variableDeclarator(id, init = null) { + return (0, _validateNode.default)({ + type: "VariableDeclarator", + id, + init + }); } function whileStatement(test, body) { - return _builder.default.apply("WhileStatement", arguments); + return (0, _validateNode.default)({ + type: "WhileStatement", + test, + body + }); } function withStatement(object, body) { - return _builder.default.apply("WithStatement", arguments); + return (0, _validateNode.default)({ + type: "WithStatement", + object, + body + }); } function assignmentPattern(left, right) { - return _builder.default.apply("AssignmentPattern", arguments); + return (0, _validateNode.default)({ + type: "AssignmentPattern", + left, + right + }); } function arrayPattern(elements) { - return _builder.default.apply("ArrayPattern", arguments); + return (0, _validateNode.default)({ + type: "ArrayPattern", + elements + }); } -function arrowFunctionExpression(params, body, async) { - return _builder.default.apply("ArrowFunctionExpression", arguments); +function arrowFunctionExpression(params, body, async = false) { + return (0, _validateNode.default)({ + type: "ArrowFunctionExpression", + params, + body, + async, + expression: null + }); } function classBody(body) { - return _builder.default.apply("ClassBody", arguments); + return (0, _validateNode.default)({ + type: "ClassBody", + body + }); } -function classExpression(id, superClass, body, decorators) { - return _builder.default.apply("ClassExpression", arguments); +function classExpression(id = null, superClass = null, body, decorators = null) { + return (0, _validateNode.default)({ + type: "ClassExpression", + id, + superClass, + body, + decorators + }); } -function classDeclaration(id, superClass, body, decorators) { - return _builder.default.apply("ClassDeclaration", arguments); +function classDeclaration(id, superClass = null, body, decorators = null) { + return (0, _validateNode.default)({ + type: "ClassDeclaration", + id, + superClass, + body, + decorators + }); } function exportAllDeclaration(source) { - return _builder.default.apply("ExportAllDeclaration", arguments); + return (0, _validateNode.default)({ + type: "ExportAllDeclaration", + source + }); } function exportDefaultDeclaration(declaration) { - return _builder.default.apply("ExportDefaultDeclaration", arguments); + return (0, _validateNode.default)({ + type: "ExportDefaultDeclaration", + declaration + }); } -function exportNamedDeclaration(declaration, specifiers, source) { - return _builder.default.apply("ExportNamedDeclaration", arguments); +function exportNamedDeclaration(declaration = null, specifiers = [], source = null) { + return (0, _validateNode.default)({ + type: "ExportNamedDeclaration", + declaration, + specifiers, + source + }); } function exportSpecifier(local, exported) { - return _builder.default.apply("ExportSpecifier", arguments); + return (0, _validateNode.default)({ + type: "ExportSpecifier", + local, + exported + }); } -function forOfStatement(left, right, body, _await) { - return _builder.default.apply("ForOfStatement", arguments); +function forOfStatement(left, right, body, _await = false) { + return (0, _validateNode.default)({ + type: "ForOfStatement", + left, + right, + body, + await: _await + }); } function importDeclaration(specifiers, source) { - return _builder.default.apply("ImportDeclaration", arguments); + return (0, _validateNode.default)({ + type: "ImportDeclaration", + specifiers, + source + }); } function importDefaultSpecifier(local) { - return _builder.default.apply("ImportDefaultSpecifier", arguments); + return (0, _validateNode.default)({ + type: "ImportDefaultSpecifier", + local + }); } function importNamespaceSpecifier(local) { - return _builder.default.apply("ImportNamespaceSpecifier", arguments); + return (0, _validateNode.default)({ + type: "ImportNamespaceSpecifier", + local + }); } function importSpecifier(local, imported) { - return _builder.default.apply("ImportSpecifier", arguments); + return (0, _validateNode.default)({ + type: "ImportSpecifier", + local, + imported + }); } function metaProperty(meta, property) { - return _builder.default.apply("MetaProperty", arguments); -} - -function classMethod(kind, key, params, body, computed, _static, generator, async) { - return _builder.default.apply("ClassMethod", arguments); + return (0, _validateNode.default)({ + type: "MetaProperty", + meta, + property + }); +} + +function classMethod(kind = "method", key, params, body, computed = false, _static = false, generator = false, async = false) { + return (0, _validateNode.default)({ + type: "ClassMethod", + kind, + key, + params, + body, + computed, + static: _static, + generator, + async + }); } function objectPattern(properties) { - return _builder.default.apply("ObjectPattern", arguments); + return (0, _validateNode.default)({ + type: "ObjectPattern", + properties + }); } function spreadElement(argument) { - return _builder.default.apply("SpreadElement", arguments); + return (0, _validateNode.default)({ + type: "SpreadElement", + argument + }); } function _super() { - return _builder.default.apply("Super", arguments); + return { + type: "Super" + }; } function taggedTemplateExpression(tag, quasi) { - return _builder.default.apply("TaggedTemplateExpression", arguments); + return (0, _validateNode.default)({ + type: "TaggedTemplateExpression", + tag, + quasi + }); } -function templateElement(value, tail) { - return _builder.default.apply("TemplateElement", arguments); +function templateElement(value, tail = false) { + return (0, _validateNode.default)({ + type: "TemplateElement", + value, + tail + }); } function templateLiteral(quasis, expressions) { - return _builder.default.apply("TemplateLiteral", arguments); + return (0, _validateNode.default)({ + type: "TemplateLiteral", + quasis, + expressions + }); } -function yieldExpression(argument, delegate) { - return _builder.default.apply("YieldExpression", arguments); +function yieldExpression(argument = null, delegate = false) { + return (0, _validateNode.default)({ + type: "YieldExpression", + argument, + delegate + }); } function awaitExpression(argument) { - return _builder.default.apply("AwaitExpression", arguments); + return (0, _validateNode.default)({ + type: "AwaitExpression", + argument + }); } function _import() { - return _builder.default.apply("Import", arguments); + return { + type: "Import" + }; } function bigIntLiteral(value) { - return _builder.default.apply("BigIntLiteral", arguments); + return (0, _validateNode.default)({ + type: "BigIntLiteral", + value + }); } function exportNamespaceSpecifier(exported) { - return _builder.default.apply("ExportNamespaceSpecifier", arguments); + return (0, _validateNode.default)({ + type: "ExportNamespaceSpecifier", + exported + }); } -function optionalMemberExpression(object, property, computed, optional) { - return _builder.default.apply("OptionalMemberExpression", arguments); +function optionalMemberExpression(object, property, computed = false, optional) { + return (0, _validateNode.default)({ + type: "OptionalMemberExpression", + object, + property, + computed, + optional + }); } function optionalCallExpression(callee, _arguments, optional) { - return _builder.default.apply("OptionalCallExpression", arguments); -} - -function classProperty(key, value, typeAnnotation, decorators, computed, _static) { - return _builder.default.apply("ClassProperty", arguments); -} - -function classAccessorProperty(key, value, typeAnnotation, decorators, computed, _static) { - return _builder.default.apply("ClassAccessorProperty", arguments); -} - -function classPrivateProperty(key, value, decorators, _static) { - return _builder.default.apply("ClassPrivateProperty", arguments); -} - -function classPrivateMethod(kind, key, params, body, _static) { - return _builder.default.apply("ClassPrivateMethod", arguments); + return (0, _validateNode.default)({ + type: "OptionalCallExpression", + callee, + arguments: _arguments, + optional + }); +} + +function classProperty(key, value = null, typeAnnotation = null, decorators = null, computed = false, _static = false) { + return (0, _validateNode.default)({ + type: "ClassProperty", + key, + value, + typeAnnotation, + decorators, + computed, + static: _static + }); +} + +function classAccessorProperty(key, value = null, typeAnnotation = null, decorators = null, computed = false, _static = false) { + return (0, _validateNode.default)({ + type: "ClassAccessorProperty", + key, + value, + typeAnnotation, + decorators, + computed, + static: _static + }); +} + +function classPrivateProperty(key, value = null, decorators = null, _static = false) { + return (0, _validateNode.default)({ + type: "ClassPrivateProperty", + key, + value, + decorators, + static: _static + }); +} + +function classPrivateMethod(kind = "method", key, params, body, _static = false) { + return (0, _validateNode.default)({ + type: "ClassPrivateMethod", + kind, + key, + params, + body, + static: _static + }); } function privateName(id) { - return _builder.default.apply("PrivateName", arguments); + return (0, _validateNode.default)({ + type: "PrivateName", + id + }); } function staticBlock(body) { - return _builder.default.apply("StaticBlock", arguments); + return (0, _validateNode.default)({ + type: "StaticBlock", + body + }); } function anyTypeAnnotation() { - return _builder.default.apply("AnyTypeAnnotation", arguments); + return { + type: "AnyTypeAnnotation" + }; } function arrayTypeAnnotation(elementType) { - return _builder.default.apply("ArrayTypeAnnotation", arguments); + return (0, _validateNode.default)({ + type: "ArrayTypeAnnotation", + elementType + }); } function booleanTypeAnnotation() { - return _builder.default.apply("BooleanTypeAnnotation", arguments); + return { + type: "BooleanTypeAnnotation" + }; } function booleanLiteralTypeAnnotation(value) { - return _builder.default.apply("BooleanLiteralTypeAnnotation", arguments); + return (0, _validateNode.default)({ + type: "BooleanLiteralTypeAnnotation", + value + }); } function nullLiteralTypeAnnotation() { - return _builder.default.apply("NullLiteralTypeAnnotation", arguments); + return { + type: "NullLiteralTypeAnnotation" + }; } -function classImplements(id, typeParameters) { - return _builder.default.apply("ClassImplements", arguments); +function classImplements(id, typeParameters = null) { + return (0, _validateNode.default)({ + type: "ClassImplements", + id, + typeParameters + }); } -function declareClass(id, typeParameters, _extends, body) { - return _builder.default.apply("DeclareClass", arguments); +function declareClass(id, typeParameters = null, _extends = null, body) { + return (0, _validateNode.default)({ + type: "DeclareClass", + id, + typeParameters, + extends: _extends, + body + }); } function declareFunction(id) { - return _builder.default.apply("DeclareFunction", arguments); + return (0, _validateNode.default)({ + type: "DeclareFunction", + id + }); } -function declareInterface(id, typeParameters, _extends, body) { - return _builder.default.apply("DeclareInterface", arguments); +function declareInterface(id, typeParameters = null, _extends = null, body) { + return (0, _validateNode.default)({ + type: "DeclareInterface", + id, + typeParameters, + extends: _extends, + body + }); } -function declareModule(id, body, kind) { - return _builder.default.apply("DeclareModule", arguments); +function declareModule(id, body, kind = null) { + return (0, _validateNode.default)({ + type: "DeclareModule", + id, + body, + kind + }); } function declareModuleExports(typeAnnotation) { - return _builder.default.apply("DeclareModuleExports", arguments); + return (0, _validateNode.default)({ + type: "DeclareModuleExports", + typeAnnotation + }); } -function declareTypeAlias(id, typeParameters, right) { - return _builder.default.apply("DeclareTypeAlias", arguments); +function declareTypeAlias(id, typeParameters = null, right) { + return (0, _validateNode.default)({ + type: "DeclareTypeAlias", + id, + typeParameters, + right + }); } -function declareOpaqueType(id, typeParameters, supertype) { - return _builder.default.apply("DeclareOpaqueType", arguments); +function declareOpaqueType(id, typeParameters = null, supertype = null) { + return (0, _validateNode.default)({ + type: "DeclareOpaqueType", + id, + typeParameters, + supertype + }); } function declareVariable(id) { - return _builder.default.apply("DeclareVariable", arguments); + return (0, _validateNode.default)({ + type: "DeclareVariable", + id + }); } -function declareExportDeclaration(declaration, specifiers, source) { - return _builder.default.apply("DeclareExportDeclaration", arguments); +function declareExportDeclaration(declaration = null, specifiers = null, source = null) { + return (0, _validateNode.default)({ + type: "DeclareExportDeclaration", + declaration, + specifiers, + source + }); } function declareExportAllDeclaration(source) { - return _builder.default.apply("DeclareExportAllDeclaration", arguments); + return (0, _validateNode.default)({ + type: "DeclareExportAllDeclaration", + source + }); } function declaredPredicate(value) { - return _builder.default.apply("DeclaredPredicate", arguments); + return (0, _validateNode.default)({ + type: "DeclaredPredicate", + value + }); } function existsTypeAnnotation() { - return _builder.default.apply("ExistsTypeAnnotation", arguments); + return { + type: "ExistsTypeAnnotation" + }; } -function functionTypeAnnotation(typeParameters, params, rest, returnType) { - return _builder.default.apply("FunctionTypeAnnotation", arguments); +function functionTypeAnnotation(typeParameters = null, params, rest = null, returnType) { + return (0, _validateNode.default)({ + type: "FunctionTypeAnnotation", + typeParameters, + params, + rest, + returnType + }); } -function functionTypeParam(name, typeAnnotation) { - return _builder.default.apply("FunctionTypeParam", arguments); +function functionTypeParam(name = null, typeAnnotation) { + return (0, _validateNode.default)({ + type: "FunctionTypeParam", + name, + typeAnnotation + }); } -function genericTypeAnnotation(id, typeParameters) { - return _builder.default.apply("GenericTypeAnnotation", arguments); +function genericTypeAnnotation(id, typeParameters = null) { + return (0, _validateNode.default)({ + type: "GenericTypeAnnotation", + id, + typeParameters + }); } function inferredPredicate() { - return _builder.default.apply("InferredPredicate", arguments); + return { + type: "InferredPredicate" + }; } -function interfaceExtends(id, typeParameters) { - return _builder.default.apply("InterfaceExtends", arguments); +function interfaceExtends(id, typeParameters = null) { + return (0, _validateNode.default)({ + type: "InterfaceExtends", + id, + typeParameters + }); } -function interfaceDeclaration(id, typeParameters, _extends, body) { - return _builder.default.apply("InterfaceDeclaration", arguments); +function interfaceDeclaration(id, typeParameters = null, _extends = null, body) { + return (0, _validateNode.default)({ + type: "InterfaceDeclaration", + id, + typeParameters, + extends: _extends, + body + }); } -function interfaceTypeAnnotation(_extends, body) { - return _builder.default.apply("InterfaceTypeAnnotation", arguments); +function interfaceTypeAnnotation(_extends = null, body) { + return (0, _validateNode.default)({ + type: "InterfaceTypeAnnotation", + extends: _extends, + body + }); } function intersectionTypeAnnotation(types) { - return _builder.default.apply("IntersectionTypeAnnotation", arguments); + return (0, _validateNode.default)({ + type: "IntersectionTypeAnnotation", + types + }); } function mixedTypeAnnotation() { - return _builder.default.apply("MixedTypeAnnotation", arguments); + return { + type: "MixedTypeAnnotation" + }; } function emptyTypeAnnotation() { - return _builder.default.apply("EmptyTypeAnnotation", arguments); + return { + type: "EmptyTypeAnnotation" + }; } function nullableTypeAnnotation(typeAnnotation) { - return _builder.default.apply("NullableTypeAnnotation", arguments); + return (0, _validateNode.default)({ + type: "NullableTypeAnnotation", + typeAnnotation + }); } function numberLiteralTypeAnnotation(value) { - return _builder.default.apply("NumberLiteralTypeAnnotation", arguments); + return (0, _validateNode.default)({ + type: "NumberLiteralTypeAnnotation", + value + }); } function numberTypeAnnotation() { - return _builder.default.apply("NumberTypeAnnotation", arguments); + return { + type: "NumberTypeAnnotation" + }; } -function objectTypeAnnotation(properties, indexers, callProperties, internalSlots, exact) { - return _builder.default.apply("ObjectTypeAnnotation", arguments); +function objectTypeAnnotation(properties, indexers = [], callProperties = [], internalSlots = [], exact = false) { + return (0, _validateNode.default)({ + type: "ObjectTypeAnnotation", + properties, + indexers, + callProperties, + internalSlots, + exact + }); } function objectTypeInternalSlot(id, value, optional, _static, method) { - return _builder.default.apply("ObjectTypeInternalSlot", arguments); + return (0, _validateNode.default)({ + type: "ObjectTypeInternalSlot", + id, + value, + optional, + static: _static, + method + }); } function objectTypeCallProperty(value) { - return _builder.default.apply("ObjectTypeCallProperty", arguments); -} - -function objectTypeIndexer(id, key, value, variance) { - return _builder.default.apply("ObjectTypeIndexer", arguments); -} - -function objectTypeProperty(key, value, variance) { - return _builder.default.apply("ObjectTypeProperty", arguments); + return (0, _validateNode.default)({ + type: "ObjectTypeCallProperty", + value, + static: null + }); +} + +function objectTypeIndexer(id = null, key, value, variance = null) { + return (0, _validateNode.default)({ + type: "ObjectTypeIndexer", + id, + key, + value, + variance, + static: null + }); +} + +function objectTypeProperty(key, value, variance = null) { + return (0, _validateNode.default)({ + type: "ObjectTypeProperty", + key, + value, + variance, + kind: null, + method: null, + optional: null, + proto: null, + static: null + }); } function objectTypeSpreadProperty(argument) { - return _builder.default.apply("ObjectTypeSpreadProperty", arguments); + return (0, _validateNode.default)({ + type: "ObjectTypeSpreadProperty", + argument + }); } -function opaqueType(id, typeParameters, supertype, impltype) { - return _builder.default.apply("OpaqueType", arguments); +function opaqueType(id, typeParameters = null, supertype = null, impltype) { + return (0, _validateNode.default)({ + type: "OpaqueType", + id, + typeParameters, + supertype, + impltype + }); } function qualifiedTypeIdentifier(id, qualification) { - return _builder.default.apply("QualifiedTypeIdentifier", arguments); + return (0, _validateNode.default)({ + type: "QualifiedTypeIdentifier", + id, + qualification + }); } function stringLiteralTypeAnnotation(value) { - return _builder.default.apply("StringLiteralTypeAnnotation", arguments); + return (0, _validateNode.default)({ + type: "StringLiteralTypeAnnotation", + value + }); } function stringTypeAnnotation() { - return _builder.default.apply("StringTypeAnnotation", arguments); + return { + type: "StringTypeAnnotation" + }; } function symbolTypeAnnotation() { - return _builder.default.apply("SymbolTypeAnnotation", arguments); + return { + type: "SymbolTypeAnnotation" + }; } function thisTypeAnnotation() { - return _builder.default.apply("ThisTypeAnnotation", arguments); + return { + type: "ThisTypeAnnotation" + }; } function tupleTypeAnnotation(types) { - return _builder.default.apply("TupleTypeAnnotation", arguments); + return (0, _validateNode.default)({ + type: "TupleTypeAnnotation", + types + }); } function typeofTypeAnnotation(argument) { - return _builder.default.apply("TypeofTypeAnnotation", arguments); + return (0, _validateNode.default)({ + type: "TypeofTypeAnnotation", + argument + }); } -function typeAlias(id, typeParameters, right) { - return _builder.default.apply("TypeAlias", arguments); +function typeAlias(id, typeParameters = null, right) { + return (0, _validateNode.default)({ + type: "TypeAlias", + id, + typeParameters, + right + }); } function typeAnnotation(typeAnnotation) { - return _builder.default.apply("TypeAnnotation", arguments); + return (0, _validateNode.default)({ + type: "TypeAnnotation", + typeAnnotation + }); } function typeCastExpression(expression, typeAnnotation) { - return _builder.default.apply("TypeCastExpression", arguments); + return (0, _validateNode.default)({ + type: "TypeCastExpression", + expression, + typeAnnotation + }); } -function typeParameter(bound, _default, variance) { - return _builder.default.apply("TypeParameter", arguments); +function typeParameter(bound = null, _default = null, variance = null) { + return (0, _validateNode.default)({ + type: "TypeParameter", + bound, + default: _default, + variance, + name: null + }); } function typeParameterDeclaration(params) { - return _builder.default.apply("TypeParameterDeclaration", arguments); + return (0, _validateNode.default)({ + type: "TypeParameterDeclaration", + params + }); } function typeParameterInstantiation(params) { - return _builder.default.apply("TypeParameterInstantiation", arguments); + return (0, _validateNode.default)({ + type: "TypeParameterInstantiation", + params + }); } function unionTypeAnnotation(types) { - return _builder.default.apply("UnionTypeAnnotation", arguments); + return (0, _validateNode.default)({ + type: "UnionTypeAnnotation", + types + }); } function variance(kind) { - return _builder.default.apply("Variance", arguments); + return (0, _validateNode.default)({ + type: "Variance", + kind + }); } function voidTypeAnnotation() { - return _builder.default.apply("VoidTypeAnnotation", arguments); + return { + type: "VoidTypeAnnotation" + }; } function enumDeclaration(id, body) { - return _builder.default.apply("EnumDeclaration", arguments); + return (0, _validateNode.default)({ + type: "EnumDeclaration", + id, + body + }); } function enumBooleanBody(members) { - return _builder.default.apply("EnumBooleanBody", arguments); + return (0, _validateNode.default)({ + type: "EnumBooleanBody", + members, + explicitType: null, + hasUnknownMembers: null + }); } function enumNumberBody(members) { - return _builder.default.apply("EnumNumberBody", arguments); + return (0, _validateNode.default)({ + type: "EnumNumberBody", + members, + explicitType: null, + hasUnknownMembers: null + }); } function enumStringBody(members) { - return _builder.default.apply("EnumStringBody", arguments); + return (0, _validateNode.default)({ + type: "EnumStringBody", + members, + explicitType: null, + hasUnknownMembers: null + }); } function enumSymbolBody(members) { - return _builder.default.apply("EnumSymbolBody", arguments); + return (0, _validateNode.default)({ + type: "EnumSymbolBody", + members, + hasUnknownMembers: null + }); } function enumBooleanMember(id) { - return _builder.default.apply("EnumBooleanMember", arguments); + return (0, _validateNode.default)({ + type: "EnumBooleanMember", + id, + init: null + }); } function enumNumberMember(id, init) { - return _builder.default.apply("EnumNumberMember", arguments); + return (0, _validateNode.default)({ + type: "EnumNumberMember", + id, + init + }); } function enumStringMember(id, init) { - return _builder.default.apply("EnumStringMember", arguments); + return (0, _validateNode.default)({ + type: "EnumStringMember", + id, + init + }); } function enumDefaultedMember(id) { - return _builder.default.apply("EnumDefaultedMember", arguments); + return (0, _validateNode.default)({ + type: "EnumDefaultedMember", + id + }); } function indexedAccessType(objectType, indexType) { - return _builder.default.apply("IndexedAccessType", arguments); + return (0, _validateNode.default)({ + type: "IndexedAccessType", + objectType, + indexType + }); } function optionalIndexedAccessType(objectType, indexType) { - return _builder.default.apply("OptionalIndexedAccessType", arguments); + return (0, _validateNode.default)({ + type: "OptionalIndexedAccessType", + objectType, + indexType, + optional: null + }); } -function jsxAttribute(name, value) { - return _builder.default.apply("JSXAttribute", arguments); +function jsxAttribute(name, value = null) { + return (0, _validateNode.default)({ + type: "JSXAttribute", + name, + value + }); } function jsxClosingElement(name) { - return _builder.default.apply("JSXClosingElement", arguments); + return (0, _validateNode.default)({ + type: "JSXClosingElement", + name + }); } -function jsxElement(openingElement, closingElement, children, selfClosing) { - return _builder.default.apply("JSXElement", arguments); +function jsxElement(openingElement, closingElement = null, children, selfClosing = null) { + return (0, _validateNode.default)({ + type: "JSXElement", + openingElement, + closingElement, + children, + selfClosing + }); } function jsxEmptyExpression() { - return _builder.default.apply("JSXEmptyExpression", arguments); + return { + type: "JSXEmptyExpression" + }; } function jsxExpressionContainer(expression) { - return _builder.default.apply("JSXExpressionContainer", arguments); + return (0, _validateNode.default)({ + type: "JSXExpressionContainer", + expression + }); } function jsxSpreadChild(expression) { - return _builder.default.apply("JSXSpreadChild", arguments); + return (0, _validateNode.default)({ + type: "JSXSpreadChild", + expression + }); } function jsxIdentifier(name) { - return _builder.default.apply("JSXIdentifier", arguments); + return (0, _validateNode.default)({ + type: "JSXIdentifier", + name + }); } function jsxMemberExpression(object, property) { - return _builder.default.apply("JSXMemberExpression", arguments); + return (0, _validateNode.default)({ + type: "JSXMemberExpression", + object, + property + }); } function jsxNamespacedName(namespace, name) { - return _builder.default.apply("JSXNamespacedName", arguments); + return (0, _validateNode.default)({ + type: "JSXNamespacedName", + namespace, + name + }); } -function jsxOpeningElement(name, attributes, selfClosing) { - return _builder.default.apply("JSXOpeningElement", arguments); +function jsxOpeningElement(name, attributes, selfClosing = false) { + return (0, _validateNode.default)({ + type: "JSXOpeningElement", + name, + attributes, + selfClosing + }); } function jsxSpreadAttribute(argument) { - return _builder.default.apply("JSXSpreadAttribute", arguments); + return (0, _validateNode.default)({ + type: "JSXSpreadAttribute", + argument + }); } function jsxText(value) { - return _builder.default.apply("JSXText", arguments); + return (0, _validateNode.default)({ + type: "JSXText", + value + }); } function jsxFragment(openingFragment, closingFragment, children) { - return _builder.default.apply("JSXFragment", arguments); + return (0, _validateNode.default)({ + type: "JSXFragment", + openingFragment, + closingFragment, + children + }); } function jsxOpeningFragment() { - return _builder.default.apply("JSXOpeningFragment", arguments); + return { + type: "JSXOpeningFragment" + }; } function jsxClosingFragment() { - return _builder.default.apply("JSXClosingFragment", arguments); + return { + type: "JSXClosingFragment" + }; } function noop() { - return _builder.default.apply("Noop", arguments); + return { + type: "Noop" + }; } function placeholder(expectedNode, name) { - return _builder.default.apply("Placeholder", arguments); + return (0, _validateNode.default)({ + type: "Placeholder", + expectedNode, + name + }); } function v8IntrinsicIdentifier(name) { - return _builder.default.apply("V8IntrinsicIdentifier", arguments); + return (0, _validateNode.default)({ + type: "V8IntrinsicIdentifier", + name + }); } function argumentPlaceholder() { - return _builder.default.apply("ArgumentPlaceholder", arguments); + return { + type: "ArgumentPlaceholder" + }; } function bindExpression(object, callee) { - return _builder.default.apply("BindExpression", arguments); + return (0, _validateNode.default)({ + type: "BindExpression", + object, + callee + }); } function importAttribute(key, value) { - return _builder.default.apply("ImportAttribute", arguments); + return (0, _validateNode.default)({ + type: "ImportAttribute", + key, + value + }); } function decorator(expression) { - return _builder.default.apply("Decorator", arguments); + return (0, _validateNode.default)({ + type: "Decorator", + expression + }); } -function doExpression(body, async) { - return _builder.default.apply("DoExpression", arguments); +function doExpression(body, async = false) { + return (0, _validateNode.default)({ + type: "DoExpression", + body, + async + }); } function exportDefaultSpecifier(exported) { - return _builder.default.apply("ExportDefaultSpecifier", arguments); + return (0, _validateNode.default)({ + type: "ExportDefaultSpecifier", + exported + }); } function recordExpression(properties) { - return _builder.default.apply("RecordExpression", arguments); + return (0, _validateNode.default)({ + type: "RecordExpression", + properties + }); } -function tupleExpression(elements) { - return _builder.default.apply("TupleExpression", arguments); +function tupleExpression(elements = []) { + return (0, _validateNode.default)({ + type: "TupleExpression", + elements + }); } function decimalLiteral(value) { - return _builder.default.apply("DecimalLiteral", arguments); + return (0, _validateNode.default)({ + type: "DecimalLiteral", + value + }); } function moduleExpression(body) { - return _builder.default.apply("ModuleExpression", arguments); + return (0, _validateNode.default)({ + type: "ModuleExpression", + body + }); } function topicReference() { - return _builder.default.apply("TopicReference", arguments); + return { + type: "TopicReference" + }; } function pipelineTopicExpression(expression) { - return _builder.default.apply("PipelineTopicExpression", arguments); + return (0, _validateNode.default)({ + type: "PipelineTopicExpression", + expression + }); } function pipelineBareFunction(callee) { - return _builder.default.apply("PipelineBareFunction", arguments); + return (0, _validateNode.default)({ + type: "PipelineBareFunction", + callee + }); } function pipelinePrimaryTopicReference() { - return _builder.default.apply("PipelinePrimaryTopicReference", arguments); + return { + type: "PipelinePrimaryTopicReference" + }; } function tsParameterProperty(parameter) { - return _builder.default.apply("TSParameterProperty", arguments); + return (0, _validateNode.default)({ + type: "TSParameterProperty", + parameter + }); } -function tsDeclareFunction(id, typeParameters, params, returnType) { - return _builder.default.apply("TSDeclareFunction", arguments); +function tsDeclareFunction(id = null, typeParameters = null, params, returnType = null) { + return (0, _validateNode.default)({ + type: "TSDeclareFunction", + id, + typeParameters, + params, + returnType + }); } -function tsDeclareMethod(decorators, key, typeParameters, params, returnType) { - return _builder.default.apply("TSDeclareMethod", arguments); +function tsDeclareMethod(decorators = null, key, typeParameters = null, params, returnType = null) { + return (0, _validateNode.default)({ + type: "TSDeclareMethod", + decorators, + key, + typeParameters, + params, + returnType + }); } function tsQualifiedName(left, right) { - return _builder.default.apply("TSQualifiedName", arguments); -} - -function tsCallSignatureDeclaration(typeParameters, parameters, typeAnnotation) { - return _builder.default.apply("TSCallSignatureDeclaration", arguments); -} - -function tsConstructSignatureDeclaration(typeParameters, parameters, typeAnnotation) { - return _builder.default.apply("TSConstructSignatureDeclaration", arguments); -} - -function tsPropertySignature(key, typeAnnotation, initializer) { - return _builder.default.apply("TSPropertySignature", arguments); -} - -function tsMethodSignature(key, typeParameters, parameters, typeAnnotation) { - return _builder.default.apply("TSMethodSignature", arguments); -} - -function tsIndexSignature(parameters, typeAnnotation) { - return _builder.default.apply("TSIndexSignature", arguments); + return (0, _validateNode.default)({ + type: "TSQualifiedName", + left, + right + }); +} + +function tsCallSignatureDeclaration(typeParameters = null, parameters, typeAnnotation = null) { + return (0, _validateNode.default)({ + type: "TSCallSignatureDeclaration", + typeParameters, + parameters, + typeAnnotation + }); +} + +function tsConstructSignatureDeclaration(typeParameters = null, parameters, typeAnnotation = null) { + return (0, _validateNode.default)({ + type: "TSConstructSignatureDeclaration", + typeParameters, + parameters, + typeAnnotation + }); +} + +function tsPropertySignature(key, typeAnnotation = null, initializer = null) { + return (0, _validateNode.default)({ + type: "TSPropertySignature", + key, + typeAnnotation, + initializer, + kind: null + }); +} + +function tsMethodSignature(key, typeParameters = null, parameters, typeAnnotation = null) { + return (0, _validateNode.default)({ + type: "TSMethodSignature", + key, + typeParameters, + parameters, + typeAnnotation, + kind: null + }); +} + +function tsIndexSignature(parameters, typeAnnotation = null) { + return (0, _validateNode.default)({ + type: "TSIndexSignature", + parameters, + typeAnnotation + }); } function tsAnyKeyword() { - return _builder.default.apply("TSAnyKeyword", arguments); + return { + type: "TSAnyKeyword" + }; } function tsBooleanKeyword() { - return _builder.default.apply("TSBooleanKeyword", arguments); + return { + type: "TSBooleanKeyword" + }; } function tsBigIntKeyword() { - return _builder.default.apply("TSBigIntKeyword", arguments); + return { + type: "TSBigIntKeyword" + }; } function tsIntrinsicKeyword() { - return _builder.default.apply("TSIntrinsicKeyword", arguments); + return { + type: "TSIntrinsicKeyword" + }; } function tsNeverKeyword() { - return _builder.default.apply("TSNeverKeyword", arguments); + return { + type: "TSNeverKeyword" + }; } function tsNullKeyword() { - return _builder.default.apply("TSNullKeyword", arguments); + return { + type: "TSNullKeyword" + }; } function tsNumberKeyword() { - return _builder.default.apply("TSNumberKeyword", arguments); + return { + type: "TSNumberKeyword" + }; } function tsObjectKeyword() { - return _builder.default.apply("TSObjectKeyword", arguments); + return { + type: "TSObjectKeyword" + }; } function tsStringKeyword() { - return _builder.default.apply("TSStringKeyword", arguments); + return { + type: "TSStringKeyword" + }; } function tsSymbolKeyword() { - return _builder.default.apply("TSSymbolKeyword", arguments); + return { + type: "TSSymbolKeyword" + }; } function tsUndefinedKeyword() { - return _builder.default.apply("TSUndefinedKeyword", arguments); + return { + type: "TSUndefinedKeyword" + }; } function tsUnknownKeyword() { - return _builder.default.apply("TSUnknownKeyword", arguments); + return { + type: "TSUnknownKeyword" + }; } function tsVoidKeyword() { - return _builder.default.apply("TSVoidKeyword", arguments); + return { + type: "TSVoidKeyword" + }; } function tsThisType() { - return _builder.default.apply("TSThisType", arguments); + return { + type: "TSThisType" + }; } -function tsFunctionType(typeParameters, parameters, typeAnnotation) { - return _builder.default.apply("TSFunctionType", arguments); +function tsFunctionType(typeParameters = null, parameters, typeAnnotation = null) { + return (0, _validateNode.default)({ + type: "TSFunctionType", + typeParameters, + parameters, + typeAnnotation + }); } -function tsConstructorType(typeParameters, parameters, typeAnnotation) { - return _builder.default.apply("TSConstructorType", arguments); +function tsConstructorType(typeParameters = null, parameters, typeAnnotation = null) { + return (0, _validateNode.default)({ + type: "TSConstructorType", + typeParameters, + parameters, + typeAnnotation + }); } -function tsTypeReference(typeName, typeParameters) { - return _builder.default.apply("TSTypeReference", arguments); +function tsTypeReference(typeName, typeParameters = null) { + return (0, _validateNode.default)({ + type: "TSTypeReference", + typeName, + typeParameters + }); } -function tsTypePredicate(parameterName, typeAnnotation, asserts) { - return _builder.default.apply("TSTypePredicate", arguments); +function tsTypePredicate(parameterName, typeAnnotation = null, asserts = null) { + return (0, _validateNode.default)({ + type: "TSTypePredicate", + parameterName, + typeAnnotation, + asserts + }); } -function tsTypeQuery(exprName) { - return _builder.default.apply("TSTypeQuery", arguments); +function tsTypeQuery(exprName, typeParameters = null) { + return (0, _validateNode.default)({ + type: "TSTypeQuery", + exprName, + typeParameters + }); } function tsTypeLiteral(members) { - return _builder.default.apply("TSTypeLiteral", arguments); + return (0, _validateNode.default)({ + type: "TSTypeLiteral", + members + }); } function tsArrayType(elementType) { - return _builder.default.apply("TSArrayType", arguments); + return (0, _validateNode.default)({ + type: "TSArrayType", + elementType + }); } function tsTupleType(elementTypes) { - return _builder.default.apply("TSTupleType", arguments); + return (0, _validateNode.default)({ + type: "TSTupleType", + elementTypes + }); } function tsOptionalType(typeAnnotation) { - return _builder.default.apply("TSOptionalType", arguments); + return (0, _validateNode.default)({ + type: "TSOptionalType", + typeAnnotation + }); } function tsRestType(typeAnnotation) { - return _builder.default.apply("TSRestType", arguments); + return (0, _validateNode.default)({ + type: "TSRestType", + typeAnnotation + }); } -function tsNamedTupleMember(label, elementType, optional) { - return _builder.default.apply("TSNamedTupleMember", arguments); +function tsNamedTupleMember(label, elementType, optional = false) { + return (0, _validateNode.default)({ + type: "TSNamedTupleMember", + label, + elementType, + optional + }); } function tsUnionType(types) { - return _builder.default.apply("TSUnionType", arguments); + return (0, _validateNode.default)({ + type: "TSUnionType", + types + }); } function tsIntersectionType(types) { - return _builder.default.apply("TSIntersectionType", arguments); + return (0, _validateNode.default)({ + type: "TSIntersectionType", + types + }); } function tsConditionalType(checkType, extendsType, trueType, falseType) { - return _builder.default.apply("TSConditionalType", arguments); + return (0, _validateNode.default)({ + type: "TSConditionalType", + checkType, + extendsType, + trueType, + falseType + }); } function tsInferType(typeParameter) { - return _builder.default.apply("TSInferType", arguments); + return (0, _validateNode.default)({ + type: "TSInferType", + typeParameter + }); } function tsParenthesizedType(typeAnnotation) { - return _builder.default.apply("TSParenthesizedType", arguments); + return (0, _validateNode.default)({ + type: "TSParenthesizedType", + typeAnnotation + }); } function tsTypeOperator(typeAnnotation) { - return _builder.default.apply("TSTypeOperator", arguments); + return (0, _validateNode.default)({ + type: "TSTypeOperator", + typeAnnotation, + operator: null + }); } function tsIndexedAccessType(objectType, indexType) { - return _builder.default.apply("TSIndexedAccessType", arguments); + return (0, _validateNode.default)({ + type: "TSIndexedAccessType", + objectType, + indexType + }); } -function tsMappedType(typeParameter, typeAnnotation, nameType) { - return _builder.default.apply("TSMappedType", arguments); +function tsMappedType(typeParameter, typeAnnotation = null, nameType = null) { + return (0, _validateNode.default)({ + type: "TSMappedType", + typeParameter, + typeAnnotation, + nameType + }); } function tsLiteralType(literal) { - return _builder.default.apply("TSLiteralType", arguments); + return (0, _validateNode.default)({ + type: "TSLiteralType", + literal + }); } -function tsExpressionWithTypeArguments(expression, typeParameters) { - return _builder.default.apply("TSExpressionWithTypeArguments", arguments); +function tsExpressionWithTypeArguments(expression, typeParameters = null) { + return (0, _validateNode.default)({ + type: "TSExpressionWithTypeArguments", + expression, + typeParameters + }); } -function tsInterfaceDeclaration(id, typeParameters, _extends, body) { - return _builder.default.apply("TSInterfaceDeclaration", arguments); +function tsInterfaceDeclaration(id, typeParameters = null, _extends = null, body) { + return (0, _validateNode.default)({ + type: "TSInterfaceDeclaration", + id, + typeParameters, + extends: _extends, + body + }); } function tsInterfaceBody(body) { - return _builder.default.apply("TSInterfaceBody", arguments); + return (0, _validateNode.default)({ + type: "TSInterfaceBody", + body + }); +} + +function tsTypeAliasDeclaration(id, typeParameters = null, typeAnnotation) { + return (0, _validateNode.default)({ + type: "TSTypeAliasDeclaration", + id, + typeParameters, + typeAnnotation + }); } -function tsTypeAliasDeclaration(id, typeParameters, typeAnnotation) { - return _builder.default.apply("TSTypeAliasDeclaration", arguments); +function tsInstantiationExpression(expression, typeParameters = null) { + return (0, _validateNode.default)({ + type: "TSInstantiationExpression", + expression, + typeParameters + }); } function tsAsExpression(expression, typeAnnotation) { - return _builder.default.apply("TSAsExpression", arguments); + return (0, _validateNode.default)({ + type: "TSAsExpression", + expression, + typeAnnotation + }); } function tsTypeAssertion(typeAnnotation, expression) { - return _builder.default.apply("TSTypeAssertion", arguments); + return (0, _validateNode.default)({ + type: "TSTypeAssertion", + typeAnnotation, + expression + }); } function tsEnumDeclaration(id, members) { - return _builder.default.apply("TSEnumDeclaration", arguments); + return (0, _validateNode.default)({ + type: "TSEnumDeclaration", + id, + members + }); } -function tsEnumMember(id, initializer) { - return _builder.default.apply("TSEnumMember", arguments); +function tsEnumMember(id, initializer = null) { + return (0, _validateNode.default)({ + type: "TSEnumMember", + id, + initializer + }); } function tsModuleDeclaration(id, body) { - return _builder.default.apply("TSModuleDeclaration", arguments); + return (0, _validateNode.default)({ + type: "TSModuleDeclaration", + id, + body + }); } function tsModuleBlock(body) { - return _builder.default.apply("TSModuleBlock", arguments); + return (0, _validateNode.default)({ + type: "TSModuleBlock", + body + }); } -function tsImportType(argument, qualifier, typeParameters) { - return _builder.default.apply("TSImportType", arguments); +function tsImportType(argument, qualifier = null, typeParameters = null) { + return (0, _validateNode.default)({ + type: "TSImportType", + argument, + qualifier, + typeParameters + }); } function tsImportEqualsDeclaration(id, moduleReference) { - return _builder.default.apply("TSImportEqualsDeclaration", arguments); + return (0, _validateNode.default)({ + type: "TSImportEqualsDeclaration", + id, + moduleReference, + isExport: null + }); } function tsExternalModuleReference(expression) { - return _builder.default.apply("TSExternalModuleReference", arguments); + return (0, _validateNode.default)({ + type: "TSExternalModuleReference", + expression + }); } function tsNonNullExpression(expression) { - return _builder.default.apply("TSNonNullExpression", arguments); + return (0, _validateNode.default)({ + type: "TSNonNullExpression", + expression + }); } function tsExportAssignment(expression) { - return _builder.default.apply("TSExportAssignment", arguments); + return (0, _validateNode.default)({ + type: "TSExportAssignment", + expression + }); } function tsNamespaceExportDeclaration(id) { - return _builder.default.apply("TSNamespaceExportDeclaration", arguments); + return (0, _validateNode.default)({ + type: "TSNamespaceExportDeclaration", + id + }); } function tsTypeAnnotation(typeAnnotation) { - return _builder.default.apply("TSTypeAnnotation", arguments); + return (0, _validateNode.default)({ + type: "TSTypeAnnotation", + typeAnnotation + }); } function tsTypeParameterInstantiation(params) { - return _builder.default.apply("TSTypeParameterInstantiation", arguments); + return (0, _validateNode.default)({ + type: "TSTypeParameterInstantiation", + params + }); } function tsTypeParameterDeclaration(params) { - return _builder.default.apply("TSTypeParameterDeclaration", arguments); + return (0, _validateNode.default)({ + type: "TSTypeParameterDeclaration", + params + }); } -function tsTypeParameter(constraint, _default, name) { - return _builder.default.apply("TSTypeParameter", arguments); +function tsTypeParameter(constraint = null, _default = null, name) { + return (0, _validateNode.default)({ + type: "TSTypeParameter", + constraint, + default: _default, + name + }); } function NumberLiteral(value) { console.trace("The node type NumberLiteral has been renamed to NumericLiteral"); - return _builder.default.apply("NumberLiteral", arguments); + return numericLiteral(value); } -function RegexLiteral(pattern, flags) { +function RegexLiteral(pattern, flags = "") { console.trace("The node type RegexLiteral has been renamed to RegExpLiteral"); - return _builder.default.apply("RegexLiteral", arguments); + return regExpLiteral(pattern, flags); } function RestProperty(argument) { console.trace("The node type RestProperty has been renamed to RestElement"); - return _builder.default.apply("RestProperty", arguments); + return restElement(argument); } function SpreadProperty(argument) { console.trace("The node type SpreadProperty has been renamed to SpreadElement"); - return _builder.default.apply("SpreadProperty", arguments); + return spreadElement(argument); } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/uppercase.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/uppercase.js index 95c9a5258a7745..0c49f05c4410e9 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/uppercase.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/uppercase.js @@ -1095,6 +1095,12 @@ Object.defineProperty(exports, "TSInferType", { return _index.tsInferType; } }); +Object.defineProperty(exports, "TSInstantiationExpression", { + enumerable: true, + get: function () { + return _index.tsInstantiationExpression; + } +}); Object.defineProperty(exports, "TSInterfaceBody", { enumerable: true, get: function () { diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js index 9b53be29d327d0..f5d472d7f3e177 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js @@ -9,8 +9,12 @@ var _generated = require("../generated"); var _removeTypeDuplicates = require("../../modifications/typescript/removeTypeDuplicates"); +var _index = require("../../validators/generated/index"); + function createTSUnionType(typeAnnotations) { - const types = typeAnnotations.map(type => type.typeAnnotation); + const types = typeAnnotations.map(type => { + return (0, _index.isTSTypeAnnotation)(type) ? type.typeAnnotation : type; + }); const flattened = (0, _removeTypeDuplicates.default)(types); if (flattened.length === 1) { diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/validateNode.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/validateNode.js new file mode 100644 index 00000000000000..aa11e9afc75e53 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/validateNode.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = validateNode; + +var _validate = require("../validators/validate"); + +var _ = require(".."); + +function validateNode(node) { + const keys = _.BUILDER_KEYS[node.type]; + + for (const key of keys) { + (0, _validate.default)(node, key, node[key]); + } + + return node; +} \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneNode.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneNode.js index 5980f2d1ba904e..aa27dad8971974 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneNode.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneNode.js @@ -11,23 +11,27 @@ var _generated = require("../validators/generated"); const has = Function.call.bind(Object.prototype.hasOwnProperty); -function cloneIfNode(obj, deep, withoutLoc) { +function cloneIfNode(obj, deep, withoutLoc, commentsCache) { if (obj && typeof obj.type === "string") { - return cloneNode(obj, deep, withoutLoc); + return cloneNodeInternal(obj, deep, withoutLoc, commentsCache); } return obj; } -function cloneIfNodeOrArray(obj, deep, withoutLoc) { +function cloneIfNodeOrArray(obj, deep, withoutLoc, commentsCache) { if (Array.isArray(obj)) { - return obj.map(node => cloneIfNode(node, deep, withoutLoc)); + return obj.map(node => cloneIfNode(node, deep, withoutLoc, commentsCache)); } - return cloneIfNode(obj, deep, withoutLoc); + return cloneIfNode(obj, deep, withoutLoc, commentsCache); } function cloneNode(node, deep = true, withoutLoc = false) { + return cloneNodeInternal(node, deep, withoutLoc, new Map()); +} + +function cloneNodeInternal(node, deep = true, withoutLoc = false, commentsCache) { if (!node) return node; const { type @@ -44,7 +48,7 @@ function cloneNode(node, deep = true, withoutLoc = false) { } if (has(node, "typeAnnotation")) { - newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc) : node.typeAnnotation; + newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc, commentsCache) : node.typeAnnotation; } } else if (!has(_definitions.NODE_FIELDS, type)) { throw new Error(`Unknown node type: "${type}"`); @@ -52,7 +56,7 @@ function cloneNode(node, deep = true, withoutLoc = false) { for (const field of Object.keys(_definitions.NODE_FIELDS[type])) { if (has(node, field)) { if (deep) { - newNode[field] = (0, _generated.isFile)(node) && field === "comments" ? maybeCloneComments(node.comments, deep, withoutLoc) : cloneIfNodeOrArray(node[field], true, withoutLoc); + newNode[field] = (0, _generated.isFile)(node) && field === "comments" ? maybeCloneComments(node.comments, deep, withoutLoc, commentsCache) : cloneIfNodeOrArray(node[field], true, withoutLoc, commentsCache); } else { newNode[field] = node[field]; } @@ -69,15 +73,15 @@ function cloneNode(node, deep = true, withoutLoc = false) { } if (has(node, "leadingComments")) { - newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc); + newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc, commentsCache); } if (has(node, "innerComments")) { - newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc); + newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc, commentsCache); } if (has(node, "trailingComments")) { - newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc); + newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc, commentsCache); } if (has(node, "extra")) { @@ -87,28 +91,30 @@ function cloneNode(node, deep = true, withoutLoc = false) { return newNode; } -function maybeCloneComments(comments, deep, withoutLoc) { +function maybeCloneComments(comments, deep, withoutLoc, commentsCache) { if (!comments || !deep) { return comments; } - return comments.map(({ - type, - value, - loc - }) => { - if (withoutLoc) { - return { - type, - value, - loc: null - }; - } - - return { + return comments.map(comment => { + const cache = commentsCache.get(comment); + if (cache) return cache; + const { + type, + value, + loc + } = comment; + const ret = { type, value, loc }; + + if (withoutLoc) { + ret.loc = null; + } + + commentsCache.set(comment, ret); + return ret; }); } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/constants/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/constants/index.js index 3caa4387998e60..0199ec4c0c647e 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/constants/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/constants/index.js @@ -26,7 +26,7 @@ const BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUM exports.BOOLEAN_BINARY_OPERATORS = BOOLEAN_BINARY_OPERATORS; const NUMBER_BINARY_OPERATORS = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"]; exports.NUMBER_BINARY_OPERATORS = NUMBER_BINARY_OPERATORS; -const BINARY_OPERATORS = ["+", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS]; +const BINARY_OPERATORS = ["+", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS, "|>"]; exports.BINARY_OPERATORS = BINARY_OPERATORS; const ASSIGNMENT_OPERATORS = ["=", "+=", ...NUMBER_BINARY_OPERATORS.map(op => op + "="), ...LOGICAL_OPERATORS.map(op => op + "=")]; exports.ASSIGNMENT_OPERATORS = ASSIGNMENT_OPERATORS; diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/ensureBlock.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/ensureBlock.js index 56fdf1fdb4367d..ceeac235e53a17 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/ensureBlock.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/ensureBlock.js @@ -8,5 +8,7 @@ exports.default = ensureBlock; var _toBlock = require("./toBlock"); function ensureBlock(node, key = "body") { - return node[key] = (0, _toBlock.default)(node[key], node); + const result = (0, _toBlock.default)(node[key], node); + node[key] = result; + return result; } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/core.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/core.js index 1c46733926b80c..78204656dab525 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/core.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/core.js @@ -43,7 +43,7 @@ defineType("AssignmentExpression", { }() }, left: { - validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal") : (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern") + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal") : (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSTypeAssertion", "TSNonNullExpression") }, right: { validate: (0, _utils.assertNodeType)("Expression") @@ -63,13 +63,12 @@ defineType("BinaryExpression", { validate: function () { const expression = (0, _utils.assertNodeType)("Expression"); const inOp = (0, _utils.assertNodeType)("Expression", "PrivateName"); - - const validator = function (node, key, val) { + const validator = Object.assign(function (node, key, val) { const validator = node.operator === "in" ? inOp : expression; validator(node, key, val); - }; - - validator.oneOfNodeTypes = ["Expression", "PrivateName"]; + }, { + oneOfNodeTypes: ["Expression", "PrivateName"] + }); return validator; }() }, @@ -248,7 +247,7 @@ defineType("ForInStatement", { aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], fields: { left: { - validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("VariableDeclaration", "LVal") : (0, _utils.assertNodeType)("VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern") + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("VariableDeclaration", "LVal") : (0, _utils.assertNodeType)("VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSTypeAssertion", "TSNonNullExpression") }, right: { validate: (0, _utils.assertNodeType)("Expression") @@ -279,7 +278,8 @@ defineType("ForStatement", { } } }); -const functionCommon = { + +const functionCommon = () => ({ params: { validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Identifier", "Pattern", "RestElement"))) }, @@ -289,9 +289,11 @@ const functionCommon = { async: { default: false } -}; +}); + exports.functionCommon = functionCommon; -const functionTypeAnnotationCommon = { + +const functionTypeAnnotationCommon = () => ({ returnType: { validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), optional: true @@ -300,9 +302,11 @@ const functionTypeAnnotationCommon = { validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), optional: true } -}; +}); + exports.functionTypeAnnotationCommon = functionTypeAnnotationCommon; -const functionDeclarationCommon = Object.assign({}, functionCommon, { + +const functionDeclarationCommon = () => Object.assign({}, functionCommon(), { declare: { validate: (0, _utils.assertValueType)("boolean"), optional: true @@ -312,13 +316,18 @@ const functionDeclarationCommon = Object.assign({}, functionCommon, { optional: true } }); + exports.functionDeclarationCommon = functionDeclarationCommon; defineType("FunctionDeclaration", { builder: ["id", "params", "body", "generator", "async"], visitor: ["id", "params", "body", "returnType", "typeParameters"], - fields: Object.assign({}, functionDeclarationCommon, functionTypeAnnotationCommon, { + fields: Object.assign({}, functionDeclarationCommon(), functionTypeAnnotationCommon(), { body: { validate: (0, _utils.assertNodeType)("BlockStatement") + }, + predicate: { + validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"), + optional: true } }), aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"], @@ -335,31 +344,38 @@ defineType("FunctionDeclaration", { defineType("FunctionExpression", { inherits: "FunctionDeclaration", aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], - fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, { + fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), { id: { validate: (0, _utils.assertNodeType)("Identifier"), optional: true }, body: { validate: (0, _utils.assertNodeType)("BlockStatement") + }, + predicate: { + validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"), + optional: true } }) }); -const patternLikeCommon = { + +const patternLikeCommon = () => ({ typeAnnotation: { validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), optional: true }, decorators: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))) + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true } -}; +}); + exports.patternLikeCommon = patternLikeCommon; defineType("Identifier", { builder: ["name"], visitor: ["typeAnnotation", "decorators"], aliases: ["Expression", "PatternLike", "LVal", "TSEntityName"], - fields: Object.assign({}, patternLikeCommon, { + fields: Object.assign({}, patternLikeCommon(), { name: { validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) { if (!process.env.BABEL_TYPES_8_BREAKING) return; @@ -580,7 +596,7 @@ defineType("ObjectExpression", { }); defineType("ObjectMethod", { builder: ["kind", "key", "params", "body", "computed", "generator", "async"], - fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, { + fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), { kind: Object.assign({ validate: (0, _utils.assertOneOf)("method", "get", "set") }, !process.env.BABEL_TYPES_8_BREAKING ? { @@ -591,7 +607,7 @@ defineType("ObjectMethod", { }, key: { validate: function () { - const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral"); + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"); const computed = (0, _utils.assertNodeType)("Expression"); const validator = function (node, key, val) { @@ -599,7 +615,7 @@ defineType("ObjectMethod", { validator(node, key, val); }; - validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral"]; + validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"]; return validator; }() }, @@ -622,15 +638,14 @@ defineType("ObjectProperty", { }, key: { validate: function () { - const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral"); + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName"); const computed = (0, _utils.assertNodeType)("Expression"); - - const validator = function (node, key, val) { + const validator = Object.assign(function (node, key, val) { const validator = node.computed ? computed : normal; validator(node, key, val); - }; - - validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral"]; + }, { + oneOfNodeTypes: ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName"] + }); return validator; }() }, @@ -663,7 +678,7 @@ defineType("ObjectProperty", { visitor: ["key", "value", "decorators"], aliases: ["UserWhitespacable", "Property", "ObjectMember"], validate: function () { - const pattern = (0, _utils.assertNodeType)("Identifier", "Pattern"); + const pattern = (0, _utils.assertNodeType)("Identifier", "Pattern", "TSAsExpression", "TSNonNullExpression", "TSTypeAssertion"); const expression = (0, _utils.assertNodeType)("Expression"); return function (parent, key, node) { if (!process.env.BABEL_TYPES_8_BREAKING) return; @@ -677,9 +692,9 @@ defineType("RestElement", { builder: ["argument"], aliases: ["LVal", "PatternLike"], deprecatedAlias: "RestProperty", - fields: Object.assign({}, patternLikeCommon, { + fields: Object.assign({}, patternLikeCommon(), { argument: { - validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal") : (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression") + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal") : (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression", "TSAsExpression", "TSTypeAssertion", "TSNonNullExpression") }, optional: { validate: (0, _utils.assertValueType)("boolean"), @@ -693,7 +708,7 @@ defineType("RestElement", { if (!match) throw new Error("Internal Babel error: malformed key."); const [, listKey, index] = match; - if (parent[listKey].length > index + 1) { + if (parent[listKey].length > +index + 1) { throw new TypeError(`RestElement must be last element of ${listKey}`); } } @@ -904,9 +919,9 @@ defineType("AssignmentPattern", { visitor: ["left", "right", "decorators"], builder: ["left", "right"], aliases: ["Pattern", "PatternLike", "LVal"], - fields: Object.assign({}, patternLikeCommon, { + fields: Object.assign({}, patternLikeCommon(), { left: { - validate: (0, _utils.assertNodeType)("Identifier", "ObjectPattern", "ArrayPattern", "MemberExpression") + validate: (0, _utils.assertNodeType)("Identifier", "ObjectPattern", "ArrayPattern", "MemberExpression", "TSAsExpression", "TSTypeAssertion", "TSNonNullExpression") }, right: { validate: (0, _utils.assertNodeType)("Expression") @@ -921,7 +936,7 @@ defineType("ArrayPattern", { visitor: ["elements", "typeAnnotation"], builder: ["elements"], aliases: ["Pattern", "PatternLike", "LVal"], - fields: Object.assign({}, patternLikeCommon, { + fields: Object.assign({}, patternLikeCommon(), { elements: { validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)("null", "PatternLike"))) }, @@ -939,12 +954,16 @@ defineType("ArrowFunctionExpression", { builder: ["params", "body", "async"], visitor: ["params", "body", "returnType", "typeParameters"], aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], - fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, { + fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), { expression: { validate: (0, _utils.assertValueType)("boolean") }, body: { validate: (0, _utils.assertNodeType)("BlockStatement", "Expression") + }, + predicate: { + validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"), + optional: true } }) }); @@ -1067,7 +1086,7 @@ defineType("ExportDefaultDeclaration", { aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], fields: { declaration: { - validate: (0, _utils.assertNodeType)("FunctionDeclaration", "TSDeclareFunction", "ClassDeclaration", "Expression") + validate: (0, _utils.assertNodeType)("FunctionDeclaration", "ClassDeclaration", "Expression") }, exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("value")) } @@ -1145,7 +1164,7 @@ defineType("ForOfStatement", { } const declaration = (0, _utils.assertNodeType)("VariableDeclaration"); - const lval = (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern"); + const lval = (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSTypeAssertion", "TSNonNullExpression"); return function (node, key, val) { if ((0, _is.default)("VariableDeclaration", val)) { declaration(node, key, val); @@ -1257,7 +1276,8 @@ defineType("MetaProperty", { } } }); -const classMethodOrPropertyCommon = { + +const classMethodOrPropertyCommon = () => ({ abstract: { validate: (0, _utils.assertValueType)("boolean"), optional: true @@ -1287,11 +1307,13 @@ const classMethodOrPropertyCommon = { const validator = node.computed ? computed : normal; validator(node, key, val); }; - }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "Expression")) + }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression")) } -}; +}); + exports.classMethodOrPropertyCommon = classMethodOrPropertyCommon; -const classMethodOrDeclareMethodCommon = Object.assign({}, functionCommon, classMethodOrPropertyCommon, { + +const classMethodOrDeclareMethodCommon = () => Object.assign({}, functionCommon(), classMethodOrPropertyCommon(), { params: { validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Identifier", "Pattern", "RestElement", "TSParameterProperty"))) }, @@ -1308,12 +1330,13 @@ const classMethodOrDeclareMethodCommon = Object.assign({}, functionCommon, class optional: true } }); + exports.classMethodOrDeclareMethodCommon = classMethodOrDeclareMethodCommon; defineType("ClassMethod", { aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"], builder: ["kind", "key", "params", "body", "computed", "static", "generator", "async"], visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"], - fields: Object.assign({}, classMethodOrDeclareMethodCommon, functionTypeAnnotationCommon, { + fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), { body: { validate: (0, _utils.assertNodeType)("BlockStatement") } @@ -1323,7 +1346,7 @@ defineType("ObjectPattern", { visitor: ["properties", "typeAnnotation", "decorators"], builder: ["properties"], aliases: ["Pattern", "PatternLike", "LVal"], - fields: Object.assign({}, patternLikeCommon, { + fields: Object.assign({}, patternLikeCommon(), { properties: { validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("RestElement", "ObjectProperty"))) } @@ -1460,13 +1483,12 @@ defineType("OptionalMemberExpression", { validate: function () { const normal = (0, _utils.assertNodeType)("Identifier"); const computed = (0, _utils.assertNodeType)("Expression"); - - const validator = function (node, key, val) { + const validator = Object.assign(function (node, key, val) { const validator = node.computed ? computed : normal; validator(node, key, val); - }; - - validator.oneOfNodeTypes = ["Expression", "Identifier"]; + }, { + oneOfNodeTypes: ["Expression", "Identifier"] + }); return validator; }() }, @@ -1506,7 +1528,7 @@ defineType("ClassProperty", { visitor: ["key", "value", "typeAnnotation", "decorators"], builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"], aliases: ["Property"], - fields: Object.assign({}, classMethodOrPropertyCommon, { + fields: Object.assign({}, classMethodOrPropertyCommon(), { value: { validate: (0, _utils.assertNodeType)("Expression"), optional: true @@ -1541,16 +1563,16 @@ defineType("ClassAccessorProperty", { visitor: ["key", "value", "typeAnnotation", "decorators"], builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"], aliases: ["Property", "Accessor"], - fields: Object.assign({}, classMethodOrPropertyCommon, { + fields: Object.assign({}, classMethodOrPropertyCommon(), { key: { validate: (0, _utils.chain)(function () { - const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "PrivateName"); + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "PrivateName"); const computed = (0, _utils.assertNodeType)("Expression"); return function (node, key, val) { const validator = node.computed ? computed : normal; validator(node, key, val); }; - }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "Expression", "PrivateName")) + }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression", "PrivateName")) }, value: { validate: (0, _utils.assertNodeType)("Expression"), @@ -1602,6 +1624,10 @@ defineType("ClassPrivateProperty", { validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), optional: true }, + static: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + }, readonly: { validate: (0, _utils.assertValueType)("boolean"), optional: true @@ -1620,7 +1646,11 @@ defineType("ClassPrivateMethod", { builder: ["kind", "key", "params", "body", "static"], visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"], aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"], - fields: Object.assign({}, classMethodOrDeclareMethodCommon, functionTypeAnnotationCommon, { + fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), { + kind: { + validate: (0, _utils.assertOneOf)("get", "set", "method"), + default: "method" + }, key: { validate: (0, _utils.assertNodeType)("PrivateName") }, diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/flow.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/flow.js index 706de242523ec7..832763c4ffba8c 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/flow.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/flow.js @@ -4,14 +4,14 @@ var _utils = require("./utils"); const defineType = (0, _utils.defineAliasedType)("Flow"); -const defineInterfaceishType = (name, typeParameterType = "TypeParameterDeclaration") => { +const defineInterfaceishType = name => { defineType(name, { builder: ["id", "typeParameters", "extends", "body"], visitor: ["id", "typeParameters", "extends", "mixins", "implements", "body"], aliases: ["FlowDeclaration", "Statement", "Declaration"], fields: { id: (0, _utils.validateType)("Identifier"), - typeParameters: (0, _utils.validateOptionalType)(typeParameterType), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), mixins: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), implements: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ClassImplements")), @@ -213,9 +213,21 @@ defineType("ObjectTypeAnnotation", { builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"], fields: { properties: (0, _utils.validate)((0, _utils.arrayOfType)(["ObjectTypeProperty", "ObjectTypeSpreadProperty"])), - indexers: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeIndexer")), - callProperties: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeCallProperty")), - internalSlots: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeInternalSlot")), + indexers: { + validate: (0, _utils.arrayOfType)("ObjectTypeIndexer"), + optional: true, + default: [] + }, + callProperties: { + validate: (0, _utils.arrayOfType)("ObjectTypeCallProperty"), + optional: true, + default: [] + }, + internalSlots: { + validate: (0, _utils.arrayOfType)("ObjectTypeInternalSlot"), + optional: true, + default: [] + }, exact: { validate: (0, _utils.assertValueType)("boolean"), default: false diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/jsx.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/jsx.js index 4d7fb75f722781..9754fa4e999d88 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/jsx.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/jsx.js @@ -29,7 +29,7 @@ defineType("JSXElement", { builder: ["openingElement", "closingElement", "children", "selfClosing"], visitor: ["openingElement", "children", "closingElement"], aliases: ["Immutable", "Expression"], - fields: { + fields: Object.assign({ openingElement: { validate: (0, _utils.assertNodeType)("JSXOpeningElement") }, @@ -39,12 +39,13 @@ defineType("JSXElement", { }, children: { validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment"))) - }, + } + }, { selfClosing: { validate: (0, _utils.assertValueType)("boolean"), optional: true } - } + }) }); defineType("JSXEmptyExpression", {}); defineType("JSXExpressionContainer", { diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/typescript.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/typescript.js index 3f4382a695c372..6a8b4baffbfa81 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/typescript.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/typescript.js @@ -8,7 +8,8 @@ var _is = require("../validators/is"); const defineType = (0, _utils.defineAliasedType)("TypeScript"); const bool = (0, _utils.assertValueType)("boolean"); -const tSFunctionTypeAnnotationCommon = { + +const tSFunctionTypeAnnotationCommon = () => ({ returnType: { validate: (0, _utils.assertNodeType)("TSTypeAnnotation", "Noop"), optional: true @@ -17,7 +18,8 @@ const tSFunctionTypeAnnotationCommon = { validate: (0, _utils.assertNodeType)("TSTypeParameterDeclaration", "Noop"), optional: true } -}; +}); + defineType("TSParameterProperty", { aliases: ["LVal"], visitor: ["parameter"], @@ -46,11 +48,11 @@ defineType("TSParameterProperty", { defineType("TSDeclareFunction", { aliases: ["Statement", "Declaration"], visitor: ["id", "typeParameters", "params", "returnType"], - fields: Object.assign({}, _core.functionDeclarationCommon, tSFunctionTypeAnnotationCommon) + fields: Object.assign({}, (0, _core.functionDeclarationCommon)(), tSFunctionTypeAnnotationCommon()) }); defineType("TSDeclareMethod", { visitor: ["decorators", "key", "typeParameters", "params", "returnType"], - fields: Object.assign({}, _core.classMethodOrDeclareMethodCommon, tSFunctionTypeAnnotationCommon) + fields: Object.assign({}, (0, _core.classMethodOrDeclareMethodCommon)(), tSFunctionTypeAnnotationCommon()) }); defineType("TSQualifiedName", { aliases: ["TSEntityName"], @@ -60,27 +62,33 @@ defineType("TSQualifiedName", { right: (0, _utils.validateType)("Identifier") } }); -const signatureDeclarationCommon = { + +const signatureDeclarationCommon = () => ({ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), ["parameters"]: (0, _utils.validateArrayOfType)(["Identifier", "RestElement"]), ["typeAnnotation"]: (0, _utils.validateOptionalType)("TSTypeAnnotation") -}; +}); + const callConstructSignatureDeclaration = { aliases: ["TSTypeElement"], visitor: ["typeParameters", "parameters", "typeAnnotation"], - fields: signatureDeclarationCommon + fields: signatureDeclarationCommon() }; defineType("TSCallSignatureDeclaration", callConstructSignatureDeclaration); defineType("TSConstructSignatureDeclaration", callConstructSignatureDeclaration); -const namedTypeElementCommon = { + +const namedTypeElementCommon = () => ({ key: (0, _utils.validateType)("Expression"), - computed: (0, _utils.validate)(bool), + computed: { + default: false + }, optional: (0, _utils.validateOptional)(bool) -}; +}); + defineType("TSPropertySignature", { aliases: ["TSTypeElement"], visitor: ["key", "typeAnnotation", "initializer"], - fields: Object.assign({}, namedTypeElementCommon, { + fields: Object.assign({}, namedTypeElementCommon(), { readonly: (0, _utils.validateOptional)(bool), typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"), initializer: (0, _utils.validateOptionalType)("Expression"), @@ -92,7 +100,7 @@ defineType("TSPropertySignature", { defineType("TSMethodSignature", { aliases: ["TSTypeElement"], visitor: ["key", "typeParameters", "parameters", "typeAnnotation"], - fields: Object.assign({}, signatureDeclarationCommon, namedTypeElementCommon, { + fields: Object.assign({}, signatureDeclarationCommon(), namedTypeElementCommon(), { kind: { validate: (0, _utils.assertOneOf)("method", "get", "set") } @@ -128,10 +136,10 @@ const fnOrCtrBase = { visitor: ["typeParameters", "parameters", "typeAnnotation"] }; defineType("TSFunctionType", Object.assign({}, fnOrCtrBase, { - fields: signatureDeclarationCommon + fields: signatureDeclarationCommon() })); defineType("TSConstructorType", Object.assign({}, fnOrCtrBase, { - fields: Object.assign({}, signatureDeclarationCommon, { + fields: Object.assign({}, signatureDeclarationCommon(), { abstract: (0, _utils.validateOptional)(bool) }) })); @@ -155,9 +163,10 @@ defineType("TSTypePredicate", { }); defineType("TSTypeQuery", { aliases: ["TSType"], - visitor: ["exprName"], + visitor: ["exprName", "typeParameters"], fields: { - exprName: (0, _utils.validateType)(["TSEntityName", "TSImportType"]) + exprName: (0, _utils.validateType)(["TSEntityName", "TSImportType"]), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") } }); defineType("TSTypeLiteral", { @@ -260,9 +269,9 @@ defineType("TSMappedType", { aliases: ["TSType"], visitor: ["typeParameter", "typeAnnotation", "nameType"], fields: { - readonly: (0, _utils.validateOptional)(bool), + readonly: (0, _utils.validateOptional)((0, _utils.assertOneOf)(true, false, "+", "-")), typeParameter: (0, _utils.validateType)("TSTypeParameter"), - optional: (0, _utils.validateOptional)(bool), + optional: (0, _utils.validateOptional)((0, _utils.assertOneOf)(true, false, "+", "-")), typeAnnotation: (0, _utils.validateOptionalType)("TSType"), nameType: (0, _utils.validateOptionalType)("TSType") } @@ -327,8 +336,16 @@ defineType("TSTypeAliasDeclaration", { typeAnnotation: (0, _utils.validateType)("TSType") } }); -defineType("TSAsExpression", { +defineType("TSInstantiationExpression", { aliases: ["Expression"], + visitor: ["expression", "typeParameters"], + fields: { + expression: (0, _utils.validateType)("Expression"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") + } +}); +defineType("TSAsExpression", { + aliases: ["Expression", "LVal", "PatternLike"], visitor: ["expression", "typeAnnotation"], fields: { expression: (0, _utils.validateType)("Expression"), @@ -336,7 +353,7 @@ defineType("TSAsExpression", { } }); defineType("TSTypeAssertion", { - aliases: ["Expression"], + aliases: ["Expression", "LVal", "PatternLike"], visitor: ["typeAnnotation", "expression"], fields: { typeAnnotation: (0, _utils.validateType)("TSType"), @@ -407,7 +424,7 @@ defineType("TSExternalModuleReference", { } }); defineType("TSNonNullExpression", { - aliases: ["Expression"], + aliases: ["Expression", "LVal", "PatternLike"], visitor: ["expression"], fields: { expression: (0, _utils.validateType)("Expression") @@ -458,6 +475,14 @@ defineType("TSTypeParameter", { name: { validate: (0, _utils.assertValueType)("string") }, + in: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + out: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, constraint: { validate: (0, _utils.assertNodeType)("TSType"), optional: true diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js.flow b/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js.flow index 331add0f3c81d2..5e636e360a8f25 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js.flow +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js.flow @@ -52,7 +52,7 @@ declare class BabelNodeAssignmentExpression extends BabelNode { declare class BabelNodeBinaryExpression extends BabelNode { type: "BinaryExpression"; - operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<="; + operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=" | "|>"; left: BabelNodeExpression | BabelNodePrivateName; right: BabelNodeExpression; } @@ -159,6 +159,7 @@ declare class BabelNodeFunctionDeclaration extends BabelNode { generator?: boolean; async?: boolean; declare?: boolean; + predicate?: BabelNodeDeclaredPredicate | BabelNodeInferredPredicate; returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop; typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop; } @@ -170,6 +171,7 @@ declare class BabelNodeFunctionExpression extends BabelNode { body: BabelNodeBlockStatement; generator?: boolean; async?: boolean; + predicate?: BabelNodeDeclaredPredicate | BabelNodeInferredPredicate; returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop; typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop; } @@ -261,7 +263,7 @@ declare class BabelNodeObjectExpression extends BabelNode { declare class BabelNodeObjectMethod extends BabelNode { type: "ObjectMethod"; kind?: "method" | "get" | "set"; - key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral; + key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral; params: Array; body: BabelNodeBlockStatement; computed?: boolean; @@ -274,7 +276,7 @@ declare class BabelNodeObjectMethod extends BabelNode { declare class BabelNodeObjectProperty extends BabelNode { type: "ObjectProperty"; - key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral; + key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeDecimalLiteral | BabelNodePrivateName; value: BabelNodeExpression | BabelNodePatternLike; computed?: boolean; shorthand?: boolean; @@ -374,7 +376,7 @@ declare class BabelNodeWithStatement extends BabelNode { declare class BabelNodeAssignmentPattern extends BabelNode { type: "AssignmentPattern"; - left: BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeArrayPattern | BabelNodeMemberExpression; + left: BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeArrayPattern | BabelNodeMemberExpression | BabelNodeTSAsExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression; right: BabelNodeExpression; decorators?: Array; typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop; @@ -395,6 +397,7 @@ declare class BabelNodeArrowFunctionExpression extends BabelNode { async?: boolean; expression: boolean; generator?: boolean; + predicate?: BabelNodeDeclaredPredicate | BabelNodeInferredPredicate; returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop; typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop; } @@ -437,7 +440,7 @@ declare class BabelNodeExportAllDeclaration extends BabelNode { declare class BabelNodeExportDefaultDeclaration extends BabelNode { type: "ExportDefaultDeclaration"; - declaration: BabelNodeFunctionDeclaration | BabelNodeTSDeclareFunction | BabelNodeClassDeclaration | BabelNodeExpression; + declaration: BabelNodeFunctionDeclaration | BabelNodeClassDeclaration | BabelNodeExpression; exportKind?: "value"; } @@ -498,7 +501,7 @@ declare class BabelNodeMetaProperty extends BabelNode { declare class BabelNodeClassMethod extends BabelNode { type: "ClassMethod"; kind?: "get" | "set" | "method" | "constructor"; - key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression; + key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression; params: Array; body: BabelNodeBlockStatement; computed?: boolean; @@ -593,7 +596,7 @@ declare class BabelNodeOptionalCallExpression extends BabelNode { declare class BabelNodeClassProperty extends BabelNode { type: "ClassProperty"; - key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression; + key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression; value?: BabelNodeExpression; typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop; decorators?: Array; @@ -610,7 +613,7 @@ declare class BabelNodeClassProperty extends BabelNode { declare class BabelNodeClassAccessorProperty extends BabelNode { type: "ClassAccessorProperty"; - key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression | BabelNodePrivateName; + key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression | BabelNodePrivateName; value?: BabelNodeExpression; typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop; decorators?: Array; @@ -638,7 +641,7 @@ declare class BabelNodeClassPrivateProperty extends BabelNode { declare class BabelNodeClassPrivateMethod extends BabelNode { type: "ClassPrivateMethod"; - kind?: "get" | "set" | "method" | "constructor"; + kind?: "get" | "set" | "method"; key: BabelNodePrivateName; params: Array; body: BabelNodeBlockStatement; @@ -1237,7 +1240,7 @@ declare class BabelNodeTSDeclareFunction extends BabelNode { declare class BabelNodeTSDeclareMethod extends BabelNode { type: "TSDeclareMethod"; decorators?: Array; - key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression; + key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression; typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop; params: Array; returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop; @@ -1388,6 +1391,7 @@ declare class BabelNodeTSTypePredicate extends BabelNode { declare class BabelNodeTSTypeQuery extends BabelNode { type: "TSTypeQuery"; exprName: BabelNodeTSEntityName | BabelNodeTSImportType; + typeParameters?: BabelNodeTSTypeParameterInstantiation; } declare class BabelNodeTSTypeLiteral extends BabelNode { @@ -1467,8 +1471,8 @@ declare class BabelNodeTSMappedType extends BabelNode { typeParameter: BabelNodeTSTypeParameter; typeAnnotation?: BabelNodeTSType; nameType?: BabelNodeTSType; - optional?: boolean; - readonly?: boolean; + optional?: true | false | "+" | "-"; + readonly?: true | false | "+" | "-"; } declare class BabelNodeTSLiteralType extends BabelNode { @@ -1503,6 +1507,12 @@ declare class BabelNodeTSTypeAliasDeclaration extends BabelNode { declare?: boolean; } +declare class BabelNodeTSInstantiationExpression extends BabelNode { + type: "TSInstantiationExpression"; + expression: BabelNodeExpression; + typeParameters?: BabelNodeTSTypeParameterInstantiation; +} + declare class BabelNodeTSAsExpression extends BabelNode { type: "TSAsExpression"; expression: BabelNodeExpression; @@ -1596,10 +1606,11 @@ declare class BabelNodeTSTypeParameter extends BabelNode { type: "TSTypeParameter"; constraint?: BabelNodeTSType; name: string; + out?: boolean; } type BabelNodeStandardized = BabelNodeArrayExpression | BabelNodeAssignmentExpression | BabelNodeBinaryExpression | BabelNodeInterpreterDirective | BabelNodeDirective | BabelNodeDirectiveLiteral | BabelNodeBlockStatement | BabelNodeBreakStatement | BabelNodeCallExpression | BabelNodeCatchClause | BabelNodeConditionalExpression | BabelNodeContinueStatement | BabelNodeDebuggerStatement | BabelNodeDoWhileStatement | BabelNodeEmptyStatement | BabelNodeExpressionStatement | BabelNodeFile | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeIdentifier | BabelNodeIfStatement | BabelNodeLabeledStatement | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeLogicalExpression | BabelNodeMemberExpression | BabelNodeNewExpression | BabelNodeProgram | BabelNodeObjectExpression | BabelNodeObjectMethod | BabelNodeObjectProperty | BabelNodeRestElement | BabelNodeReturnStatement | BabelNodeSequenceExpression | BabelNodeParenthesizedExpression | BabelNodeSwitchCase | BabelNodeSwitchStatement | BabelNodeThisExpression | BabelNodeThrowStatement | BabelNodeTryStatement | BabelNodeUnaryExpression | BabelNodeUpdateExpression | BabelNodeVariableDeclaration | BabelNodeVariableDeclarator | BabelNodeWhileStatement | BabelNodeWithStatement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeArrowFunctionExpression | BabelNodeClassBody | BabelNodeClassExpression | BabelNodeClassDeclaration | BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeExportSpecifier | BabelNodeForOfStatement | BabelNodeImportDeclaration | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier | BabelNodeImportSpecifier | BabelNodeMetaProperty | BabelNodeClassMethod | BabelNodeObjectPattern | BabelNodeSpreadElement | BabelNodeSuper | BabelNodeTaggedTemplateExpression | BabelNodeTemplateElement | BabelNodeTemplateLiteral | BabelNodeYieldExpression | BabelNodeAwaitExpression | BabelNodeImport | BabelNodeBigIntLiteral | BabelNodeExportNamespaceSpecifier | BabelNodeOptionalMemberExpression | BabelNodeOptionalCallExpression | BabelNodeClassProperty | BabelNodeClassAccessorProperty | BabelNodeClassPrivateProperty | BabelNodeClassPrivateMethod | BabelNodePrivateName | BabelNodeStaticBlock; -type BabelNodeExpression = BabelNodeArrayExpression | BabelNodeAssignmentExpression | BabelNodeBinaryExpression | BabelNodeCallExpression | BabelNodeConditionalExpression | BabelNodeFunctionExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeLogicalExpression | BabelNodeMemberExpression | BabelNodeNewExpression | BabelNodeObjectExpression | BabelNodeSequenceExpression | BabelNodeParenthesizedExpression | BabelNodeThisExpression | BabelNodeUnaryExpression | BabelNodeUpdateExpression | BabelNodeArrowFunctionExpression | BabelNodeClassExpression | BabelNodeMetaProperty | BabelNodeSuper | BabelNodeTaggedTemplateExpression | BabelNodeTemplateLiteral | BabelNodeYieldExpression | BabelNodeAwaitExpression | BabelNodeImport | BabelNodeBigIntLiteral | BabelNodeOptionalMemberExpression | BabelNodeOptionalCallExpression | BabelNodeTypeCastExpression | BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeBindExpression | BabelNodeDoExpression | BabelNodeRecordExpression | BabelNodeTupleExpression | BabelNodeDecimalLiteral | BabelNodeModuleExpression | BabelNodeTopicReference | BabelNodePipelineTopicExpression | BabelNodePipelineBareFunction | BabelNodePipelinePrimaryTopicReference | BabelNodeTSAsExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression; +type BabelNodeExpression = BabelNodeArrayExpression | BabelNodeAssignmentExpression | BabelNodeBinaryExpression | BabelNodeCallExpression | BabelNodeConditionalExpression | BabelNodeFunctionExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeLogicalExpression | BabelNodeMemberExpression | BabelNodeNewExpression | BabelNodeObjectExpression | BabelNodeSequenceExpression | BabelNodeParenthesizedExpression | BabelNodeThisExpression | BabelNodeUnaryExpression | BabelNodeUpdateExpression | BabelNodeArrowFunctionExpression | BabelNodeClassExpression | BabelNodeMetaProperty | BabelNodeSuper | BabelNodeTaggedTemplateExpression | BabelNodeTemplateLiteral | BabelNodeYieldExpression | BabelNodeAwaitExpression | BabelNodeImport | BabelNodeBigIntLiteral | BabelNodeOptionalMemberExpression | BabelNodeOptionalCallExpression | BabelNodeTypeCastExpression | BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeBindExpression | BabelNodeDoExpression | BabelNodeRecordExpression | BabelNodeTupleExpression | BabelNodeDecimalLiteral | BabelNodeModuleExpression | BabelNodeTopicReference | BabelNodePipelineTopicExpression | BabelNodePipelineBareFunction | BabelNodePipelinePrimaryTopicReference | BabelNodeTSInstantiationExpression | BabelNodeTSAsExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression; type BabelNodeBinary = BabelNodeBinaryExpression | BabelNodeLogicalExpression; type BabelNodeScopable = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeClassExpression | BabelNodeClassDeclaration | BabelNodeForOfStatement | BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeStaticBlock | BabelNodeTSModuleBlock; type BabelNodeBlockParent = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeForOfStatement | BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeStaticBlock | BabelNodeTSModuleBlock; @@ -1617,8 +1628,8 @@ type BabelNodeFunction = BabelNodeFunctionDeclaration | BabelNodeFunctionExpress type BabelNodeFunctionParent = BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeObjectMethod | BabelNodeArrowFunctionExpression | BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeStaticBlock; type BabelNodePureish = BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeArrowFunctionExpression | BabelNodeBigIntLiteral | BabelNodeDecimalLiteral; type BabelNodeDeclaration = BabelNodeFunctionDeclaration | BabelNodeVariableDeclaration | BabelNodeClassDeclaration | BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeImportDeclaration | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeDeclareExportDeclaration | BabelNodeDeclareExportAllDeclaration | BabelNodeInterfaceDeclaration | BabelNodeOpaqueType | BabelNodeTypeAlias | BabelNodeEnumDeclaration | BabelNodeTSDeclareFunction | BabelNodeTSInterfaceDeclaration | BabelNodeTSTypeAliasDeclaration | BabelNodeTSEnumDeclaration | BabelNodeTSModuleDeclaration; -type BabelNodePatternLike = BabelNodeIdentifier | BabelNodeRestElement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeObjectPattern; -type BabelNodeLVal = BabelNodeIdentifier | BabelNodeMemberExpression | BabelNodeRestElement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeObjectPattern | BabelNodeTSParameterProperty; +type BabelNodePatternLike = BabelNodeIdentifier | BabelNodeRestElement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeObjectPattern | BabelNodeTSAsExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression; +type BabelNodeLVal = BabelNodeIdentifier | BabelNodeMemberExpression | BabelNodeRestElement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeObjectPattern | BabelNodeTSParameterProperty | BabelNodeTSAsExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression; type BabelNodeTSEntityName = BabelNodeIdentifier | BabelNodeTSQualifiedName; type BabelNodeLiteral = BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeTemplateLiteral | BabelNodeBigIntLiteral | BabelNodeDecimalLiteral; type BabelNodeImmutable = BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeBigIntLiteral | BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXOpeningElement | BabelNodeJSXText | BabelNodeJSXFragment | BabelNodeJSXOpeningFragment | BabelNodeJSXClosingFragment | BabelNodeDecimalLiteral; @@ -1643,7 +1654,7 @@ type BabelNodeEnumBody = BabelNodeEnumBooleanBody | BabelNodeEnumNumberBody | Ba type BabelNodeEnumMember = BabelNodeEnumBooleanMember | BabelNodeEnumNumberMember | BabelNodeEnumStringMember | BabelNodeEnumDefaultedMember; type BabelNodeJSX = BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXEmptyExpression | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName | BabelNodeJSXOpeningElement | BabelNodeJSXSpreadAttribute | BabelNodeJSXText | BabelNodeJSXFragment | BabelNodeJSXOpeningFragment | BabelNodeJSXClosingFragment; type BabelNodeMiscellaneous = BabelNodeNoop | BabelNodePlaceholder | BabelNodeV8IntrinsicIdentifier; -type BabelNodeTypeScript = BabelNodeTSParameterProperty | BabelNodeTSDeclareFunction | BabelNodeTSDeclareMethod | BabelNodeTSQualifiedName | BabelNodeTSCallSignatureDeclaration | BabelNodeTSConstructSignatureDeclaration | BabelNodeTSPropertySignature | BabelNodeTSMethodSignature | BabelNodeTSIndexSignature | BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSFunctionType | BabelNodeTSConstructorType | BabelNodeTSTypeReference | BabelNodeTSTypePredicate | BabelNodeTSTypeQuery | BabelNodeTSTypeLiteral | BabelNodeTSArrayType | BabelNodeTSTupleType | BabelNodeTSOptionalType | BabelNodeTSRestType | BabelNodeTSNamedTupleMember | BabelNodeTSUnionType | BabelNodeTSIntersectionType | BabelNodeTSConditionalType | BabelNodeTSInferType | BabelNodeTSParenthesizedType | BabelNodeTSTypeOperator | BabelNodeTSIndexedAccessType | BabelNodeTSMappedType | BabelNodeTSLiteralType | BabelNodeTSExpressionWithTypeArguments | BabelNodeTSInterfaceDeclaration | BabelNodeTSInterfaceBody | BabelNodeTSTypeAliasDeclaration | BabelNodeTSAsExpression | BabelNodeTSTypeAssertion | BabelNodeTSEnumDeclaration | BabelNodeTSEnumMember | BabelNodeTSModuleDeclaration | BabelNodeTSModuleBlock | BabelNodeTSImportType | BabelNodeTSImportEqualsDeclaration | BabelNodeTSExternalModuleReference | BabelNodeTSNonNullExpression | BabelNodeTSExportAssignment | BabelNodeTSNamespaceExportDeclaration | BabelNodeTSTypeAnnotation | BabelNodeTSTypeParameterInstantiation | BabelNodeTSTypeParameterDeclaration | BabelNodeTSTypeParameter; +type BabelNodeTypeScript = BabelNodeTSParameterProperty | BabelNodeTSDeclareFunction | BabelNodeTSDeclareMethod | BabelNodeTSQualifiedName | BabelNodeTSCallSignatureDeclaration | BabelNodeTSConstructSignatureDeclaration | BabelNodeTSPropertySignature | BabelNodeTSMethodSignature | BabelNodeTSIndexSignature | BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSFunctionType | BabelNodeTSConstructorType | BabelNodeTSTypeReference | BabelNodeTSTypePredicate | BabelNodeTSTypeQuery | BabelNodeTSTypeLiteral | BabelNodeTSArrayType | BabelNodeTSTupleType | BabelNodeTSOptionalType | BabelNodeTSRestType | BabelNodeTSNamedTupleMember | BabelNodeTSUnionType | BabelNodeTSIntersectionType | BabelNodeTSConditionalType | BabelNodeTSInferType | BabelNodeTSParenthesizedType | BabelNodeTSTypeOperator | BabelNodeTSIndexedAccessType | BabelNodeTSMappedType | BabelNodeTSLiteralType | BabelNodeTSExpressionWithTypeArguments | BabelNodeTSInterfaceDeclaration | BabelNodeTSInterfaceBody | BabelNodeTSTypeAliasDeclaration | BabelNodeTSInstantiationExpression | BabelNodeTSAsExpression | BabelNodeTSTypeAssertion | BabelNodeTSEnumDeclaration | BabelNodeTSEnumMember | BabelNodeTSModuleDeclaration | BabelNodeTSModuleBlock | BabelNodeTSImportType | BabelNodeTSImportEqualsDeclaration | BabelNodeTSExternalModuleReference | BabelNodeTSNonNullExpression | BabelNodeTSExportAssignment | BabelNodeTSNamespaceExportDeclaration | BabelNodeTSTypeAnnotation | BabelNodeTSTypeParameterInstantiation | BabelNodeTSTypeParameterDeclaration | BabelNodeTSTypeParameter; type BabelNodeTSTypeElement = BabelNodeTSCallSignatureDeclaration | BabelNodeTSConstructSignatureDeclaration | BabelNodeTSPropertySignature | BabelNodeTSMethodSignature | BabelNodeTSIndexSignature; type BabelNodeTSType = BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSFunctionType | BabelNodeTSConstructorType | BabelNodeTSTypeReference | BabelNodeTSTypePredicate | BabelNodeTSTypeQuery | BabelNodeTSTypeLiteral | BabelNodeTSArrayType | BabelNodeTSTupleType | BabelNodeTSOptionalType | BabelNodeTSRestType | BabelNodeTSUnionType | BabelNodeTSIntersectionType | BabelNodeTSConditionalType | BabelNodeTSInferType | BabelNodeTSParenthesizedType | BabelNodeTSTypeOperator | BabelNodeTSIndexedAccessType | BabelNodeTSMappedType | BabelNodeTSLiteralType | BabelNodeTSExpressionWithTypeArguments | BabelNodeTSImportType; type BabelNodeTSBaseType = BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSLiteralType; @@ -1651,7 +1662,7 @@ type BabelNodeTSBaseType = BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | B declare module "@babel/types" { declare export function arrayExpression(elements?: Array): BabelNodeArrayExpression; declare export function assignmentExpression(operator: string, left: BabelNodeLVal, right: BabelNodeExpression): BabelNodeAssignmentExpression; - declare export function binaryExpression(operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=", left: BabelNodeExpression | BabelNodePrivateName, right: BabelNodeExpression): BabelNodeBinaryExpression; + declare export function binaryExpression(operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=" | "|>", left: BabelNodeExpression | BabelNodePrivateName, right: BabelNodeExpression): BabelNodeBinaryExpression; declare export function interpreterDirective(value: string): BabelNodeInterpreterDirective; declare export function directive(value: BabelNodeDirectiveLiteral): BabelNodeDirective; declare export function directiveLiteral(value: string): BabelNodeDirectiveLiteral; @@ -1683,8 +1694,8 @@ declare module "@babel/types" { declare export function newExpression(callee: BabelNodeExpression | BabelNodeV8IntrinsicIdentifier, _arguments: Array): BabelNodeNewExpression; declare export function program(body: Array, directives?: Array, sourceType?: "script" | "module", interpreter?: BabelNodeInterpreterDirective): BabelNodeProgram; declare export function objectExpression(properties: Array): BabelNodeObjectExpression; - declare export function objectMethod(kind?: "method" | "get" | "set", key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral, params: Array, body: BabelNodeBlockStatement, computed?: boolean, generator?: boolean, async?: boolean): BabelNodeObjectMethod; - declare export function objectProperty(key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral, value: BabelNodeExpression | BabelNodePatternLike, computed?: boolean, shorthand?: boolean, decorators?: Array): BabelNodeObjectProperty; + declare export function objectMethod(kind?: "method" | "get" | "set", key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral, params: Array, body: BabelNodeBlockStatement, computed?: boolean, generator?: boolean, async?: boolean): BabelNodeObjectMethod; + declare export function objectProperty(key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeDecimalLiteral | BabelNodePrivateName, value: BabelNodeExpression | BabelNodePatternLike, computed?: boolean, shorthand?: boolean, decorators?: Array): BabelNodeObjectProperty; declare export function restElement(argument: BabelNodeLVal): BabelNodeRestElement; declare export function returnStatement(argument?: BabelNodeExpression): BabelNodeReturnStatement; declare export function sequenceExpression(expressions: Array): BabelNodeSequenceExpression; @@ -1700,14 +1711,14 @@ declare module "@babel/types" { declare export function variableDeclarator(id: BabelNodeLVal, init?: BabelNodeExpression): BabelNodeVariableDeclarator; declare export function whileStatement(test: BabelNodeExpression, body: BabelNodeStatement): BabelNodeWhileStatement; declare export function withStatement(object: BabelNodeExpression, body: BabelNodeStatement): BabelNodeWithStatement; - declare export function assignmentPattern(left: BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeArrayPattern | BabelNodeMemberExpression, right: BabelNodeExpression): BabelNodeAssignmentPattern; + declare export function assignmentPattern(left: BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeArrayPattern | BabelNodeMemberExpression | BabelNodeTSAsExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression, right: BabelNodeExpression): BabelNodeAssignmentPattern; declare export function arrayPattern(elements: Array): BabelNodeArrayPattern; declare export function arrowFunctionExpression(params: Array, body: BabelNodeBlockStatement | BabelNodeExpression, async?: boolean): BabelNodeArrowFunctionExpression; declare export function classBody(body: Array): BabelNodeClassBody; declare export function classExpression(id?: BabelNodeIdentifier, superClass?: BabelNodeExpression, body: BabelNodeClassBody, decorators?: Array): BabelNodeClassExpression; declare export function classDeclaration(id: BabelNodeIdentifier, superClass?: BabelNodeExpression, body: BabelNodeClassBody, decorators?: Array): BabelNodeClassDeclaration; declare export function exportAllDeclaration(source: BabelNodeStringLiteral): BabelNodeExportAllDeclaration; - declare export function exportDefaultDeclaration(declaration: BabelNodeFunctionDeclaration | BabelNodeTSDeclareFunction | BabelNodeClassDeclaration | BabelNodeExpression): BabelNodeExportDefaultDeclaration; + declare export function exportDefaultDeclaration(declaration: BabelNodeFunctionDeclaration | BabelNodeClassDeclaration | BabelNodeExpression): BabelNodeExportDefaultDeclaration; declare export function exportNamedDeclaration(declaration?: BabelNodeDeclaration, specifiers?: Array, source?: BabelNodeStringLiteral): BabelNodeExportNamedDeclaration; declare export function exportSpecifier(local: BabelNodeIdentifier, exported: BabelNodeIdentifier | BabelNodeStringLiteral): BabelNodeExportSpecifier; declare export function forOfStatement(left: BabelNodeVariableDeclaration | BabelNodeLVal, right: BabelNodeExpression, body: BabelNodeStatement, _await?: boolean): BabelNodeForOfStatement; @@ -1716,7 +1727,7 @@ declare module "@babel/types" { declare export function importNamespaceSpecifier(local: BabelNodeIdentifier): BabelNodeImportNamespaceSpecifier; declare export function importSpecifier(local: BabelNodeIdentifier, imported: BabelNodeIdentifier | BabelNodeStringLiteral): BabelNodeImportSpecifier; declare export function metaProperty(meta: BabelNodeIdentifier, property: BabelNodeIdentifier): BabelNodeMetaProperty; - declare export function classMethod(kind?: "get" | "set" | "method" | "constructor", key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression, params: Array, body: BabelNodeBlockStatement, computed?: boolean, _static?: boolean, generator?: boolean, async?: boolean): BabelNodeClassMethod; + declare export function classMethod(kind?: "get" | "set" | "method" | "constructor", key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression, params: Array, body: BabelNodeBlockStatement, computed?: boolean, _static?: boolean, generator?: boolean, async?: boolean): BabelNodeClassMethod; declare export function objectPattern(properties: Array): BabelNodeObjectPattern; declare export function spreadElement(argument: BabelNodeExpression): BabelNodeSpreadElement; declare function _super(): BabelNodeSuper; @@ -1732,10 +1743,10 @@ declare module "@babel/types" { declare export function exportNamespaceSpecifier(exported: BabelNodeIdentifier): BabelNodeExportNamespaceSpecifier; declare export function optionalMemberExpression(object: BabelNodeExpression, property: BabelNodeExpression | BabelNodeIdentifier, computed?: boolean, optional: boolean): BabelNodeOptionalMemberExpression; declare export function optionalCallExpression(callee: BabelNodeExpression, _arguments: Array, optional: boolean): BabelNodeOptionalCallExpression; - declare export function classProperty(key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression, value?: BabelNodeExpression, typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop, decorators?: Array, computed?: boolean, _static?: boolean): BabelNodeClassProperty; - declare export function classAccessorProperty(key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression | BabelNodePrivateName, value?: BabelNodeExpression, typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop, decorators?: Array, computed?: boolean, _static?: boolean): BabelNodeClassAccessorProperty; - declare export function classPrivateProperty(key: BabelNodePrivateName, value?: BabelNodeExpression, decorators?: Array, _static: any): BabelNodeClassPrivateProperty; - declare export function classPrivateMethod(kind?: "get" | "set" | "method" | "constructor", key: BabelNodePrivateName, params: Array, body: BabelNodeBlockStatement, _static?: boolean): BabelNodeClassPrivateMethod; + declare export function classProperty(key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression, value?: BabelNodeExpression, typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop, decorators?: Array, computed?: boolean, _static?: boolean): BabelNodeClassProperty; + declare export function classAccessorProperty(key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression | BabelNodePrivateName, value?: BabelNodeExpression, typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop, decorators?: Array, computed?: boolean, _static?: boolean): BabelNodeClassAccessorProperty; + declare export function classPrivateProperty(key: BabelNodePrivateName, value?: BabelNodeExpression, decorators?: Array, _static?: boolean): BabelNodeClassPrivateProperty; + declare export function classPrivateMethod(kind?: "get" | "set" | "method", key: BabelNodePrivateName, params: Array, body: BabelNodeBlockStatement, _static?: boolean): BabelNodeClassPrivateMethod; declare export function privateName(id: BabelNodeIdentifier): BabelNodePrivateName; declare export function staticBlock(body: Array): BabelNodeStaticBlock; declare export function anyTypeAnnotation(): BabelNodeAnyTypeAnnotation; @@ -1837,7 +1848,7 @@ declare module "@babel/types" { declare export function pipelinePrimaryTopicReference(): BabelNodePipelinePrimaryTopicReference; declare export function tsParameterProperty(parameter: BabelNodeIdentifier | BabelNodeAssignmentPattern): BabelNodeTSParameterProperty; declare export function tsDeclareFunction(id?: BabelNodeIdentifier, typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop, params: Array, returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop): BabelNodeTSDeclareFunction; - declare export function tsDeclareMethod(decorators?: Array, key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression, typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop, params: Array, returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop): BabelNodeTSDeclareMethod; + declare export function tsDeclareMethod(decorators?: Array, key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression, typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop, params: Array, returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop): BabelNodeTSDeclareMethod; declare export function tsQualifiedName(left: BabelNodeTSEntityName, right: BabelNodeIdentifier): BabelNodeTSQualifiedName; declare export function tsCallSignatureDeclaration(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSCallSignatureDeclaration; declare export function tsConstructSignatureDeclaration(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSConstructSignatureDeclaration; @@ -1862,7 +1873,7 @@ declare module "@babel/types" { declare export function tsConstructorType(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSConstructorType; declare export function tsTypeReference(typeName: BabelNodeTSEntityName, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSTypeReference; declare export function tsTypePredicate(parameterName: BabelNodeIdentifier | BabelNodeTSThisType, typeAnnotation?: BabelNodeTSTypeAnnotation, asserts?: boolean): BabelNodeTSTypePredicate; - declare export function tsTypeQuery(exprName: BabelNodeTSEntityName | BabelNodeTSImportType): BabelNodeTSTypeQuery; + declare export function tsTypeQuery(exprName: BabelNodeTSEntityName | BabelNodeTSImportType, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSTypeQuery; declare export function tsTypeLiteral(members: Array): BabelNodeTSTypeLiteral; declare export function tsArrayType(elementType: BabelNodeTSType): BabelNodeTSArrayType; declare export function tsTupleType(elementTypes: Array): BabelNodeTSTupleType; @@ -1882,6 +1893,7 @@ declare module "@babel/types" { declare export function tsInterfaceDeclaration(id: BabelNodeIdentifier, typeParameters?: BabelNodeTSTypeParameterDeclaration, _extends?: Array, body: BabelNodeTSInterfaceBody): BabelNodeTSInterfaceDeclaration; declare export function tsInterfaceBody(body: Array): BabelNodeTSInterfaceBody; declare export function tsTypeAliasDeclaration(id: BabelNodeIdentifier, typeParameters?: BabelNodeTSTypeParameterDeclaration, typeAnnotation: BabelNodeTSType): BabelNodeTSTypeAliasDeclaration; + declare export function tsInstantiationExpression(expression: BabelNodeExpression, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSInstantiationExpression; declare export function tsAsExpression(expression: BabelNodeExpression, typeAnnotation: BabelNodeTSType): BabelNodeTSAsExpression; declare export function tsTypeAssertion(typeAnnotation: BabelNodeTSType, expression: BabelNodeExpression): BabelNodeTSTypeAssertion; declare export function tsEnumDeclaration(id: BabelNodeIdentifier, members: Array): BabelNodeTSEnumDeclaration; @@ -2360,6 +2372,8 @@ declare module "@babel/types" { declare export function assertTSInterfaceBody(node: ?Object, opts?: ?Object): void declare export function isTSTypeAliasDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeAliasDeclaration) declare export function assertTSTypeAliasDeclaration(node: ?Object, opts?: ?Object): void + declare export function isTSInstantiationExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSInstantiationExpression) + declare export function assertTSInstantiationExpression(node: ?Object, opts?: ?Object): void declare export function isTSAsExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSAsExpression) declare export function assertTSAsExpression(node: ?Object, opts?: ?Object): void declare export function isTSTypeAssertion(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeAssertion) diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js index de9464d16729be..126ee6c1a27f9a 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js @@ -12,8 +12,8 @@ function getQualifiedName(node) { } function removeTypeDuplicates(nodes) { - const generics = {}; - const bases = {}; + const generics = new Map(); + const bases = new Map(); const typeGroups = new Set(); const types = []; @@ -30,7 +30,7 @@ function removeTypeDuplicates(nodes) { } if ((0, _generated.isFlowBaseAnnotation)(node)) { - bases[node.type] = node; + bases.set(node.type, node); continue; } @@ -46,8 +46,8 @@ function removeTypeDuplicates(nodes) { if ((0, _generated.isGenericTypeAnnotation)(node)) { const name = getQualifiedName(node.id); - if (generics[name]) { - let existing = generics[name]; + if (generics.has(name)) { + let existing = generics.get(name); if (existing.typeParameters) { if (node.typeParameters) { @@ -57,7 +57,7 @@ function removeTypeDuplicates(nodes) { existing = node.typeParameters; } } else { - generics[name] = node; + generics.set(name, node); } continue; @@ -66,12 +66,12 @@ function removeTypeDuplicates(nodes) { types.push(node); } - for (const type of Object.keys(bases)) { - types.push(bases[type]); + for (const [, baseType] of bases) { + types.push(baseType); } - for (const name of Object.keys(generics)) { - types.push(generics[name]); + for (const [, genericName] of generics) { + types.push(genericName); } return types; diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/inherits.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/inherits.js index 8701897d0e21cd..ca71e96ba2fa27 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/inherits.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/inherits.js @@ -19,7 +19,9 @@ function inherits(child, parent) { } for (const key of Object.keys(parent)) { - if (key[0] === "_" && key !== "__clone") child[key] = parent[key]; + if (key[0] === "_" && key !== "__clone") { + child[key] = parent[key]; + } } for (const key of _constants.INHERIT_KEYS.force) { diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/removeProperties.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/removeProperties.js index f9cf8e6065daa1..cff92aa4787a04 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/removeProperties.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/removeProperties.js @@ -8,8 +8,7 @@ exports.default = removeProperties; var _constants = require("../constants"); const CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"]; - -const CLEAR_KEYS_PLUS_COMMENTS = _constants.COMMENT_KEYS.concat(["comments"]).concat(CLEAR_KEYS); +const CLEAR_KEYS_PLUS_COMMENTS = [..._constants.COMMENT_KEYS, "comments", ...CLEAR_KEYS]; function removeProperties(node, opts = {}) { const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS; diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js index 25defea7ec5a5f..0f3bff9957d9d1 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js @@ -7,9 +7,13 @@ exports.default = removeTypeDuplicates; var _generated = require("../../validators/generated"); +function getQualifiedName(node) { + return (0, _generated.isIdentifier)(node) ? node.name : `${node.right.name}.${getQualifiedName(node.left)}`; +} + function removeTypeDuplicates(nodes) { - const generics = {}; - const bases = {}; + const generics = new Map(); + const bases = new Map(); const typeGroups = new Set(); const types = []; @@ -26,7 +30,7 @@ function removeTypeDuplicates(nodes) { } if ((0, _generated.isTSBaseType)(node)) { - bases[node.type] = node; + bases.set(node.type, node); continue; } @@ -39,15 +43,35 @@ function removeTypeDuplicates(nodes) { continue; } + if ((0, _generated.isTSTypeReference)(node) && node.typeParameters) { + const name = getQualifiedName(node.typeName); + + if (generics.has(name)) { + let existing = generics.get(name); + + if (existing.typeParameters) { + if (node.typeParameters) { + existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params.concat(node.typeParameters.params)); + } + } else { + existing = node.typeParameters; + } + } else { + generics.set(name, node); + } + + continue; + } + types.push(node); } - for (const type of Object.keys(bases)) { - types.push(bases[type]); + for (const [, baseType] of bases) { + types.push(baseType); } - for (const name of Object.keys(generics)) { - types.push(generics[name]); + for (const [, genericName] of generics) { + types.push(genericName); } return types; diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js index 4daaf8bf0fe6e7..d111f5f7e42c8c 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js @@ -8,7 +8,7 @@ exports.default = getBindingIdentifiers; var _generated = require("../validators/generated"); function getBindingIdentifiers(node, duplicates, outerOnly) { - let search = [].concat(node); + const search = [].concat(node); const ids = Object.create(null); while (search.length) { @@ -50,9 +50,10 @@ function getBindingIdentifiers(node, duplicates, outerOnly) { if (keys) { for (let i = 0; i < keys.length; i++) { const key = keys[i]; + const nodes = id[key]; - if (id[key]) { - search = search.concat(id[key]); + if (nodes) { + Array.isArray(nodes) ? search.push(...nodes) : search.push(nodes); } } } diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/generated/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/generated/index.js index f2956ec0120fff..f175aa495033c1 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/generated/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/generated/index.js @@ -227,6 +227,7 @@ exports.isTSImportType = isTSImportType; exports.isTSIndexSignature = isTSIndexSignature; exports.isTSIndexedAccessType = isTSIndexedAccessType; exports.isTSInferType = isTSInferType; +exports.isTSInstantiationExpression = isTSInstantiationExpression; exports.isTSInterfaceBody = isTSInterfaceBody; exports.isTSInterfaceDeclaration = isTSInterfaceDeclaration; exports.isTSIntersectionType = isTSIntersectionType; @@ -3771,6 +3772,21 @@ function isTSTypeAliasDeclaration(node, opts) { return false; } +function isTSInstantiationExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSInstantiationExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + function isTSAsExpression(node, opts) { if (!node) return false; const nodeType = node.type; @@ -4030,7 +4046,7 @@ function isExpression(node, opts) { if (!node) return false; const nodeType = node.type; - if ("ArrayExpression" === nodeType || "AssignmentExpression" === nodeType || "BinaryExpression" === nodeType || "CallExpression" === nodeType || "ConditionalExpression" === nodeType || "FunctionExpression" === nodeType || "Identifier" === nodeType || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "LogicalExpression" === nodeType || "MemberExpression" === nodeType || "NewExpression" === nodeType || "ObjectExpression" === nodeType || "SequenceExpression" === nodeType || "ParenthesizedExpression" === nodeType || "ThisExpression" === nodeType || "UnaryExpression" === nodeType || "UpdateExpression" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassExpression" === nodeType || "MetaProperty" === nodeType || "Super" === nodeType || "TaggedTemplateExpression" === nodeType || "TemplateLiteral" === nodeType || "YieldExpression" === nodeType || "AwaitExpression" === nodeType || "Import" === nodeType || "BigIntLiteral" === nodeType || "OptionalMemberExpression" === nodeType || "OptionalCallExpression" === nodeType || "TypeCastExpression" === nodeType || "JSXElement" === nodeType || "JSXFragment" === nodeType || "BindExpression" === nodeType || "DoExpression" === nodeType || "RecordExpression" === nodeType || "TupleExpression" === nodeType || "DecimalLiteral" === nodeType || "ModuleExpression" === nodeType || "TopicReference" === nodeType || "PipelineTopicExpression" === nodeType || "PipelineBareFunction" === nodeType || "PipelinePrimaryTopicReference" === nodeType || "TSAsExpression" === nodeType || "TSTypeAssertion" === nodeType || "TSNonNullExpression" === nodeType || nodeType === "Placeholder" && ("Expression" === node.expectedNode || "Identifier" === node.expectedNode || "StringLiteral" === node.expectedNode)) { + if ("ArrayExpression" === nodeType || "AssignmentExpression" === nodeType || "BinaryExpression" === nodeType || "CallExpression" === nodeType || "ConditionalExpression" === nodeType || "FunctionExpression" === nodeType || "Identifier" === nodeType || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "LogicalExpression" === nodeType || "MemberExpression" === nodeType || "NewExpression" === nodeType || "ObjectExpression" === nodeType || "SequenceExpression" === nodeType || "ParenthesizedExpression" === nodeType || "ThisExpression" === nodeType || "UnaryExpression" === nodeType || "UpdateExpression" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassExpression" === nodeType || "MetaProperty" === nodeType || "Super" === nodeType || "TaggedTemplateExpression" === nodeType || "TemplateLiteral" === nodeType || "YieldExpression" === nodeType || "AwaitExpression" === nodeType || "Import" === nodeType || "BigIntLiteral" === nodeType || "OptionalMemberExpression" === nodeType || "OptionalCallExpression" === nodeType || "TypeCastExpression" === nodeType || "JSXElement" === nodeType || "JSXFragment" === nodeType || "BindExpression" === nodeType || "DoExpression" === nodeType || "RecordExpression" === nodeType || "TupleExpression" === nodeType || "DecimalLiteral" === nodeType || "ModuleExpression" === nodeType || "TopicReference" === nodeType || "PipelineTopicExpression" === nodeType || "PipelineBareFunction" === nodeType || "PipelinePrimaryTopicReference" === nodeType || "TSInstantiationExpression" === nodeType || "TSAsExpression" === nodeType || "TSTypeAssertion" === nodeType || "TSNonNullExpression" === nodeType || nodeType === "Placeholder" && ("Expression" === node.expectedNode || "Identifier" === node.expectedNode || "StringLiteral" === node.expectedNode)) { if (typeof opts === "undefined") { return true; } else { @@ -4300,7 +4316,7 @@ function isPatternLike(node, opts) { if (!node) return false; const nodeType = node.type; - if ("Identifier" === nodeType || "RestElement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || nodeType === "Placeholder" && ("Pattern" === node.expectedNode || "Identifier" === node.expectedNode)) { + if ("Identifier" === nodeType || "RestElement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || "TSAsExpression" === nodeType || "TSTypeAssertion" === nodeType || "TSNonNullExpression" === nodeType || nodeType === "Placeholder" && ("Pattern" === node.expectedNode || "Identifier" === node.expectedNode)) { if (typeof opts === "undefined") { return true; } else { @@ -4315,7 +4331,7 @@ function isLVal(node, opts) { if (!node) return false; const nodeType = node.type; - if ("Identifier" === nodeType || "MemberExpression" === nodeType || "RestElement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || "TSParameterProperty" === nodeType || nodeType === "Placeholder" && ("Pattern" === node.expectedNode || "Identifier" === node.expectedNode)) { + if ("Identifier" === nodeType || "MemberExpression" === nodeType || "RestElement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || "TSParameterProperty" === nodeType || "TSAsExpression" === nodeType || "TSTypeAssertion" === nodeType || "TSNonNullExpression" === nodeType || nodeType === "Placeholder" && ("Pattern" === node.expectedNode || "Identifier" === node.expectedNode)) { if (typeof opts === "undefined") { return true; } else { @@ -4690,7 +4706,7 @@ function isTypeScript(node, opts) { if (!node) return false; const nodeType = node.type; - if ("TSParameterProperty" === nodeType || "TSDeclareFunction" === nodeType || "TSDeclareMethod" === nodeType || "TSQualifiedName" === nodeType || "TSCallSignatureDeclaration" === nodeType || "TSConstructSignatureDeclaration" === nodeType || "TSPropertySignature" === nodeType || "TSMethodSignature" === nodeType || "TSIndexSignature" === nodeType || "TSAnyKeyword" === nodeType || "TSBooleanKeyword" === nodeType || "TSBigIntKeyword" === nodeType || "TSIntrinsicKeyword" === nodeType || "TSNeverKeyword" === nodeType || "TSNullKeyword" === nodeType || "TSNumberKeyword" === nodeType || "TSObjectKeyword" === nodeType || "TSStringKeyword" === nodeType || "TSSymbolKeyword" === nodeType || "TSUndefinedKeyword" === nodeType || "TSUnknownKeyword" === nodeType || "TSVoidKeyword" === nodeType || "TSThisType" === nodeType || "TSFunctionType" === nodeType || "TSConstructorType" === nodeType || "TSTypeReference" === nodeType || "TSTypePredicate" === nodeType || "TSTypeQuery" === nodeType || "TSTypeLiteral" === nodeType || "TSArrayType" === nodeType || "TSTupleType" === nodeType || "TSOptionalType" === nodeType || "TSRestType" === nodeType || "TSNamedTupleMember" === nodeType || "TSUnionType" === nodeType || "TSIntersectionType" === nodeType || "TSConditionalType" === nodeType || "TSInferType" === nodeType || "TSParenthesizedType" === nodeType || "TSTypeOperator" === nodeType || "TSIndexedAccessType" === nodeType || "TSMappedType" === nodeType || "TSLiteralType" === nodeType || "TSExpressionWithTypeArguments" === nodeType || "TSInterfaceDeclaration" === nodeType || "TSInterfaceBody" === nodeType || "TSTypeAliasDeclaration" === nodeType || "TSAsExpression" === nodeType || "TSTypeAssertion" === nodeType || "TSEnumDeclaration" === nodeType || "TSEnumMember" === nodeType || "TSModuleDeclaration" === nodeType || "TSModuleBlock" === nodeType || "TSImportType" === nodeType || "TSImportEqualsDeclaration" === nodeType || "TSExternalModuleReference" === nodeType || "TSNonNullExpression" === nodeType || "TSExportAssignment" === nodeType || "TSNamespaceExportDeclaration" === nodeType || "TSTypeAnnotation" === nodeType || "TSTypeParameterInstantiation" === nodeType || "TSTypeParameterDeclaration" === nodeType || "TSTypeParameter" === nodeType) { + if ("TSParameterProperty" === nodeType || "TSDeclareFunction" === nodeType || "TSDeclareMethod" === nodeType || "TSQualifiedName" === nodeType || "TSCallSignatureDeclaration" === nodeType || "TSConstructSignatureDeclaration" === nodeType || "TSPropertySignature" === nodeType || "TSMethodSignature" === nodeType || "TSIndexSignature" === nodeType || "TSAnyKeyword" === nodeType || "TSBooleanKeyword" === nodeType || "TSBigIntKeyword" === nodeType || "TSIntrinsicKeyword" === nodeType || "TSNeverKeyword" === nodeType || "TSNullKeyword" === nodeType || "TSNumberKeyword" === nodeType || "TSObjectKeyword" === nodeType || "TSStringKeyword" === nodeType || "TSSymbolKeyword" === nodeType || "TSUndefinedKeyword" === nodeType || "TSUnknownKeyword" === nodeType || "TSVoidKeyword" === nodeType || "TSThisType" === nodeType || "TSFunctionType" === nodeType || "TSConstructorType" === nodeType || "TSTypeReference" === nodeType || "TSTypePredicate" === nodeType || "TSTypeQuery" === nodeType || "TSTypeLiteral" === nodeType || "TSArrayType" === nodeType || "TSTupleType" === nodeType || "TSOptionalType" === nodeType || "TSRestType" === nodeType || "TSNamedTupleMember" === nodeType || "TSUnionType" === nodeType || "TSIntersectionType" === nodeType || "TSConditionalType" === nodeType || "TSInferType" === nodeType || "TSParenthesizedType" === nodeType || "TSTypeOperator" === nodeType || "TSIndexedAccessType" === nodeType || "TSMappedType" === nodeType || "TSLiteralType" === nodeType || "TSExpressionWithTypeArguments" === nodeType || "TSInterfaceDeclaration" === nodeType || "TSInterfaceBody" === nodeType || "TSTypeAliasDeclaration" === nodeType || "TSInstantiationExpression" === nodeType || "TSAsExpression" === nodeType || "TSTypeAssertion" === nodeType || "TSEnumDeclaration" === nodeType || "TSEnumMember" === nodeType || "TSModuleDeclaration" === nodeType || "TSModuleBlock" === nodeType || "TSImportType" === nodeType || "TSImportEqualsDeclaration" === nodeType || "TSExternalModuleReference" === nodeType || "TSNonNullExpression" === nodeType || "TSExportAssignment" === nodeType || "TSNamespaceExportDeclaration" === nodeType || "TSTypeAnnotation" === nodeType || "TSTypeParameterInstantiation" === nodeType || "TSTypeParameterDeclaration" === nodeType || "TSTypeParameter" === nodeType) { if (typeof opts === "undefined") { return true; } else { diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isNodesEquivalent.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isNodesEquivalent.js index f829834e91084c..93fee3cc9a75ea 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isNodesEquivalent.js @@ -20,27 +20,30 @@ function isNodesEquivalent(a, b) { const visitorKeys = _definitions.VISITOR_KEYS[a.type]; for (const field of fields) { - if (typeof a[field] !== typeof b[field]) { + const val_a = a[field]; + const val_b = b[field]; + + if (typeof val_a !== typeof val_b) { return false; } - if (a[field] == null && b[field] == null) { + if (val_a == null && val_b == null) { continue; - } else if (a[field] == null || b[field] == null) { + } else if (val_a == null || val_b == null) { return false; } - if (Array.isArray(a[field])) { - if (!Array.isArray(b[field])) { + if (Array.isArray(val_a)) { + if (!Array.isArray(val_b)) { return false; } - if (a[field].length !== b[field].length) { + if (val_a.length !== val_b.length) { return false; } - for (let i = 0; i < a[field].length; i++) { - if (!isNodesEquivalent(a[field][i], b[field][i])) { + for (let i = 0; i < val_a.length; i++) { + if (!isNodesEquivalent(val_a[i], val_b[i])) { return false; } } @@ -48,9 +51,9 @@ function isNodesEquivalent(a, b) { continue; } - if (typeof a[field] === "object" && !(visitorKeys != null && visitorKeys.includes(field))) { - for (const key of Object.keys(a[field])) { - if (a[field][key] !== b[field][key]) { + if (typeof val_a === "object" && !(visitorKeys != null && visitorKeys.includes(field))) { + for (const key of Object.keys(val_a)) { + if (val_a[key] !== val_b[key]) { return false; } } @@ -58,7 +61,7 @@ function isNodesEquivalent(a, b) { continue; } - if (!isNodesEquivalent(a[field], b[field])) { + if (!isNodesEquivalent(val_a, val_b)) { return false; } } diff --git a/tools/node_modules/eslint/node_modules/@babel/types/package.json b/tools/node_modules/eslint/node_modules/@babel/types/package.json index bf92dacb575bf8..d872aff7d65e24 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/package.json +++ b/tools/node_modules/eslint/node_modules/@babel/types/package.json @@ -1,6 +1,6 @@ { "name": "@babel/types", - "version": "7.17.0", + "version": "7.18.8", "description": "Babel Types is a Lodash-esque utility library for AST nodes", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-types", @@ -24,16 +24,17 @@ } }, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, "devDependencies": { - "@babel/generator": "^7.17.0", - "@babel/parser": "^7.17.0", + "@babel/generator": "^7.18.7", + "@babel/parser": "^7.18.8", "chalk": "^4.1.0", "glob": "^7.1.7" }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/asserts.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/asserts.js index bdfd94857fcfbc..1d862e417601df 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/asserts.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/asserts.js @@ -1,4 +1,4 @@ -import definitions from "../../lib/definitions/index.js"; +import * as definitions from "../../lib/definitions/index.js"; function addAssertHelper(type) { const result = diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/ast-types.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/ast-types.js index 3bf42869f1278d..901e3d2d56d340 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/ast-types.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/ast-types.js @@ -1,4 +1,4 @@ -import t from "../../lib/index.js"; +import * as t from "../../lib/index.js"; import stringifyValidator from "../utils/stringifyValidator.js"; export default function generateAstTypes() { @@ -7,9 +7,11 @@ export default function generateAstTypes() { interface BaseComment { value: string; - start: number; - end: number; - loc: SourceLocation; + start?: number; + end?: number; + loc?: SourceLocation; + // generator will skip the comment if ignore is true + ignore?: boolean; type: "CommentBlock" | "CommentLine"; } @@ -36,13 +38,13 @@ export interface SourceLocation { } interface BaseNode { - leadingComments: ReadonlyArray | null; - innerComments: ReadonlyArray | null; - trailingComments: ReadonlyArray | null; - start: number | null; - end: number | null; - loc: SourceLocation | null; type: Node["type"]; + leadingComments?: Comment[] | null; + innerComments?: Comment[] | null; + trailingComments?: Comment[] | null; + start?: number | null; + end?: number | null; + loc?: SourceLocation | null; range?: [number, number]; extra?: Record; } diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/builders.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/builders.js index 13e772eb43d0bd..46566f58c4c667 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/builders.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/builders.js @@ -1,5 +1,5 @@ -import t from "../../lib/index.js"; -import definitions from "../../lib/definitions/index.js"; +import * as t from "../../lib/index.js"; +import * as definitions from "../../lib/definitions/index.js"; import formatBuilderName from "../utils/formatBuilderName.js"; import lowerFirst from "../utils/lowerFirst.js"; import stringifyValidator from "../utils/stringifyValidator.js"; @@ -51,20 +51,23 @@ function generateBuilderArgs(type) { } if (builderNames.includes(fieldName)) { + const field = definitions.NODE_FIELDS[type][fieldName]; + const def = JSON.stringify(field.default); const bindingIdentifierName = t.toBindingIdentifierName(fieldName); + let arg; if (areAllRemainingFieldsNullable(fieldName, builderNames, fields)) { - args.push( - `${bindingIdentifierName}${ - isNullable(field) ? "?:" : ":" - } ${typeAnnotation}` - ); + arg = `${bindingIdentifierName}${ + isNullable(field) && !def ? "?:" : ":" + } ${typeAnnotation}`; } else { - args.push( - `${bindingIdentifierName}: ${typeAnnotation}${ - isNullable(field) ? " | undefined" : "" - }` - ); + arg = `${bindingIdentifierName}: ${typeAnnotation}${ + isNullable(field) ? " | undefined" : "" + }`; } + if (def !== "null" || isNullable(field)) { + arg += `= ${def}`; + } + args.push(arg); } }); @@ -82,11 +85,8 @@ function generateLowercaseBuilders() { * This file is auto-generated! Do not modify it directly. * To re-generate run 'make build' */ -import builder from "../builder"; +import validateNode from "../validateNode"; import type * as t from "../.."; - -/* eslint-disable @typescript-eslint/no-unused-vars */ - `; const reservedNames = new Set(["super", "import"]); @@ -96,11 +96,39 @@ import type * as t from "../.."; const formatedBuilderNameLocal = reservedNames.has(formatedBuilderName) ? `_${formatedBuilderName}` : formatedBuilderName; + + const fieldNames = sortFieldNames( + Object.keys(definitions.NODE_FIELDS[type]), + type + ); + const builderNames = definitions.BUILDER_KEYS[type]; + const objectFields = [["type", JSON.stringify(type)]]; + fieldNames.forEach(fieldName => { + const field = definitions.NODE_FIELDS[type][fieldName]; + if (builderNames.includes(fieldName)) { + const bindingIdentifierName = t.toBindingIdentifierName(fieldName); + objectFields.push([fieldName, bindingIdentifierName]); + } else if (!field.optional) { + const def = JSON.stringify(field.default); + objectFields.push([fieldName, def]); + } + }); + output += `${ formatedBuilderNameLocal === formatedBuilderName ? "export " : "" - }function ${formatedBuilderNameLocal}(${defArgs.join( - ", " - )}): t.${type} { return builder.apply("${type}", arguments); }\n`; + }function ${formatedBuilderNameLocal}(${defArgs.join(", ")}): t.${type} {`; + + const nodeObjectExpression = `{\n${objectFields + .map(([k, v]) => (k === v ? ` ${k},` : ` ${k}: ${v},`)) + .join("\n")}\n }`; + + if (builderNames.length > 0) { + output += `\n return validateNode(${nodeObjectExpression});`; + } else { + output += `\n return ${nodeObjectExpression};`; + } + output += `\n}\n`; + if (formatedBuilderNameLocal !== formatedBuilderName) { output += `export { ${formatedBuilderNameLocal} as ${formatedBuilderName} };\n`; } @@ -118,10 +146,11 @@ import type * as t from "../.."; Object.keys(definitions.DEPRECATED_KEYS).forEach(type => { const newType = definitions.DEPRECATED_KEYS[type]; const formatedBuilderName = formatBuilderName(type); + const formatedNewBuilderName = formatBuilderName(newType); output += `/** @deprecated */ -function ${type}(${generateBuilderArgs(newType).join(", ")}): t.${type} { +function ${type}(${generateBuilderArgs(newType).join(", ")}) { console.trace("The node type ${type} has been renamed to ${newType}"); - return builder.apply("${type}", arguments); + return ${formatedNewBuilderName}(${t.BUILDER_KEYS[newType].join(", ")}); } export { ${type} as ${formatedBuilderName} };\n`; // This is needed for backwards compatibility. diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/constants.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/constants.js index 68abdbd837fbea..65b7a905d77eab 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/constants.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/constants.js @@ -1,4 +1,4 @@ -import definitions from "../../lib/definitions/index.js"; +import * as definitions from "../../lib/definitions/index.js"; export default function generateConstants() { let output = `/* diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/docs.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/docs.js index 95e4815fb03f74..528ac0b4f858d2 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/docs.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/docs.js @@ -2,7 +2,7 @@ import util from "util"; import stringifyValidator from "../utils/stringifyValidator.js"; import toFunctionName from "../utils/toFunctionName.js"; -import t from "../../lib/index.js"; +import * as t from "../../lib/index.js"; const readme = [ `--- @@ -176,6 +176,7 @@ function generateMapAliasToNodeTypes() { return result; } const aliasDescriptions = { + Accessor: "Deprecated. Will be removed in Babel 8.", Binary: "A cover of BinaryExpression and LogicalExpression, which share the same AST shape.", Block: "Deprecated. Will be removed in Babel 8.", diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/flow.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/flow.js index 7fabcc67c52efd..06cd388cea91e6 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/flow.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/flow.js @@ -1,4 +1,4 @@ -import t from "../../lib/index.js"; +import * as t from "../../lib/index.js"; import stringifyValidator from "../utils/stringifyValidator.js"; import toFunctionName from "../utils/toFunctionName.js"; diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/typescript-legacy.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/typescript-legacy.js index 40da48f4e7d5fe..7701047158a833 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/typescript-legacy.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/typescript-legacy.js @@ -1,4 +1,4 @@ -import t from "../../lib/index.js"; +import * as t from "../../lib/index.js"; import stringifyValidator from "../utils/stringifyValidator.js"; import toFunctionName from "../utils/toFunctionName.js"; diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/validators.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/validators.js index acd6da65750410..85c8b4906c8d1c 100644 --- a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/validators.js +++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/validators.js @@ -1,4 +1,4 @@ -import definitions from "../../lib/definitions/index.js"; +import * as definitions from "../../lib/definitions/index.js"; const has = Function.call.bind(Object.prototype.hasOwnProperty); diff --git a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/dist/index.cjs.cjs b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/dist/index.cjs.cjs index 4666c40ba08ab2..f5708666719128 100644 --- a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/dist/index.cjs.cjs +++ b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/dist/index.cjs.cjs @@ -28,33 +28,6 @@ const stripEncapsulatingBrackets = (container, isArr) => { container.rawType = container.rawType.replace(/^\{/u, '').replace(/\}$/u, ''); }; -/** - * Strips brackets from a tag's `rawType` values and adds `parsedType` - * @param {JsdocTag} lastTag - * @param {external:JsdocTypePrattParserMode} mode - * @returns {void} - */ - - -const cleanUpLastTag = (lastTag, mode) => { - // Strip out `}` that encapsulates and is not part of - // the type - stripEncapsulatingBrackets(lastTag); - - if (lastTag.typeLines.length) { - stripEncapsulatingBrackets(lastTag.typeLines, true); - } // With even a multiline type now in full, add parsing - - - let parsedType = null; - - try { - parsedType = jsdocTypePrattParser.parse(lastTag.rawType, mode); - } catch (err) {// Ignore - } - - lastTag.parsedType = parsedType; -}; /** * @external CommentParserJsdoc */ @@ -68,7 +41,7 @@ const cleanUpLastTag = (lastTag, mode) => { * delimiter: string, * postDelimiter: string, * rawType: string, - * start: string, + * initial: string, * type: "JsdocTypeLine" * }} JsdocTypeLine */ @@ -78,7 +51,7 @@ const cleanUpLastTag = (lastTag, mode) => { * delimiter: string, * description: string, * postDelimiter: string, - * start: string, + * initial: string, * type: "JsdocDescriptionLine" * }} JsdocDescriptionLine */ @@ -88,9 +61,9 @@ const cleanUpLastTag = (lastTag, mode) => { * delimiter: string, * description: string, * postDelimiter: string, - * start: string, + * initial: string, * tag: string, - * end: string, + * terminal: string, * type: string, * descriptionLines: JsdocDescriptionLine[], * rawType: string, @@ -104,7 +77,8 @@ const cleanUpLastTag = (lastTag, mode) => { * delimiter: string, * description: string, * descriptionLines: JsdocDescriptionLine[], - * end: string, + * initial: string, + * terminal: string, * postDelimiter: string, * lineEnd: string, * type: "JsdocBlock", @@ -114,14 +88,48 @@ const cleanUpLastTag = (lastTag, mode) => { */ /** - * + * Converts comment parser AST to ESTree format. * @param {external:CommentParserJsdoc} jsdoc * @param {external:JsdocTypePrattParserMode} mode + * @param {PlainObject} opts + * @param {throwOnTypeParsingErrors} [opts.throwOnTypeParsingErrors=false] * @returns {JsdocBlock} */ -const commentParserToESTree = (jsdoc, mode) => { +const commentParserToESTree = (jsdoc, mode, { + throwOnTypeParsingErrors = false +} = {}) => { + /** + * Strips brackets from a tag's `rawType` values and adds `parsedType` + * @param {JsdocTag} lastTag + * @returns {void} + */ + const cleanUpLastTag = lastTag => { + // Strip out `}` that encapsulates and is not part of + // the type + stripEncapsulatingBrackets(lastTag); + + if (lastTag.typeLines.length) { + stripEncapsulatingBrackets(lastTag.typeLines, true); + } // With even a multiline type now in full, add parsing + + + let parsedType = null; + + try { + parsedType = jsdocTypePrattParser.parse(lastTag.rawType, mode); + } catch (err) { + // Ignore + if (lastTag.rawType && throwOnTypeParsingErrors) { + err.message = `Tag @${lastTag.tag} with raw type ` + `\`${lastTag.rawType}\` had parsing error: ${err.message}`; + throw err; + } + } + + lastTag.parsedType = parsedType; + }; + const { source } = jsdoc; @@ -130,6 +138,7 @@ const commentParserToESTree = (jsdoc, mode) => { delimiter: delimiterRoot, lineEnd: lineEndRoot, postDelimiter: postDelimiterRoot, + start: startRoot, end: endRoot, description: descriptionRoot } @@ -139,8 +148,9 @@ const commentParserToESTree = (jsdoc, mode) => { delimiter: delimiterRoot, description: descriptionRoot, descriptionLines: [], - // `end` will be overwritten if there are other entries - end: endRoot, + initial: startRoot, + // `terminal` will be overwritten if there are other entries + terminal: endRoot, endLine, postDelimiter: postDelimiterRoot, lineEnd: lineEndRoot, @@ -157,7 +167,7 @@ const commentParserToESTree = (jsdoc, mode) => { delimiter, description, postDelimiter, - start, + start: initial, tag, end, type: rawType @@ -170,14 +180,14 @@ const commentParserToESTree = (jsdoc, mode) => { if (lastTag) { - cleanUpLastTag(lastTag, mode); + cleanUpLastTag(lastTag); } // Stop the iteration when we reach the end // but only when there is no tag earlier in the line // to still process if (end && !tag) { - ast.end = end; + ast.terminal = end; return; } @@ -185,21 +195,29 @@ const commentParserToESTree = (jsdoc, mode) => { end: ed, delimiter: de, postDelimiter: pd, + start: init, ...tkns } = tokens; if (!tokens.name) { - let i = 0; + let i = 1; while (source[idx + i]) { const { tokens: { name, - postName + postName, + postType, + tag: tg } } = source[idx + i]; + if (tg) { + break; + } + if (name) { + tkns.postType = postType; tkns.name = name; tkns.postName = postName; break; @@ -210,6 +228,7 @@ const commentParserToESTree = (jsdoc, mode) => { } const tagObj = { ...tkns, + initial: endLine ? init : '', postDelimiter: lastDescriptionLine ? pd : '', delimiter: lastDescriptionLine ? de : '', descriptionLines: [], @@ -228,13 +247,13 @@ const commentParserToESTree = (jsdoc, mode) => { delimiter, postDelimiter, rawType, - start, + initial, type: 'JsdocTypeLine' } : { delimiter: '', postDelimiter: '', rawType, - start: '', + initial: '', type: 'JsdocTypeLine' }); lastTag.rawType += lastTag.rawType ? '\n' + rawType : rawType; @@ -246,13 +265,19 @@ const commentParserToESTree = (jsdoc, mode) => { delimiter, description, postDelimiter, - start, + initial, type: 'JsdocDescriptionLine' - } : { + } : lastTag ? { delimiter: '', description, postDelimiter: '', - start: '', + initial: '', + type: 'JsdocDescriptionLine' + } : { + delimiter, + description, + postDelimiter, + initial, type: 'JsdocDescriptionLine' }); holder.description += holder.description ? '\n' + description : description; @@ -260,8 +285,8 @@ const commentParserToESTree = (jsdoc, mode) => { if (end && tag) { - ast.end = end; - cleanUpLastTag(lastTag, mode); + ast.terminal = end; + cleanUpLastTag(lastTag); } }); ast.lastDescriptionLine = lastDescriptionLine; @@ -317,10 +342,6 @@ const toCamelCase = str => { }; /* eslint-disable prefer-named-capture-group -- Temporary */ -const { - seedBlock, - seedTokens -} = commentParser.util; const { name: nameTokenizer, tag: tagTokenizer, @@ -332,6 +353,10 @@ const hasSeeWithLink = spec => { }; const defaultNoTypes = ['default', 'defaultvalue', 'see']; const defaultNoNames = ['access', 'author', 'default', 'defaultvalue', 'description', 'example', 'exception', 'kind', 'license', 'return', 'returns', 'since', 'summary', 'throws', 'version', 'variation']; +const optionalBrackets = /^\[(?[^=]*)=[^\]]*\]/u; +const preserveTypeTokenizer = typeTokenizer('preserve'); +const preserveDescriptionTokenizer = descriptionTokenizer('preserve'); +const plainNameTokenizer = nameTokenizer(); const getTokenizers = ({ noTypes = defaultNoTypes, @@ -345,14 +370,14 @@ const getTokenizers = ({ return spec; } - return typeTokenizer()(spec); + return preserveTypeTokenizer(spec); }, // Name spec => { if (spec.tag === 'template') { // const preWS = spec.postTag; const remainder = spec.source[0].tokens.description; const pos = remainder.search(/(? { - return descriptionTokenizer('preserve')(spec); + return preserveDescriptionTokenizer(spec); }]; }; /** - * + * Accepts a comment token and converts it into `comment-parser` AST. * @param {PlainObject} commentNode * @param {string} [indent=""] Whitespace * @returns {PlainObject} @@ -394,23 +427,10 @@ const getTokenizers = ({ const parseComment = (commentNode, indent = '') => { // Preserve JSDoc block start/end indentation. - return commentParser.parse(`/*${commentNode.value}*/`, { + return commentParser.parse(`${indent}/*${commentNode.value}*/`, { // @see https://github.com/yavorskiy/comment-parser/issues/21 tokenizers: getTokenizers() - })[0] || seedBlock({ - source: [{ - number: 0, - tokens: seedTokens({ - delimiter: '/**' - }) - }, { - number: 1, - tokens: seedTokens({ - end: '*/', - start: indent + ' ' - }) - }] - }); + })[0]; }; /** @@ -567,6 +587,22 @@ const getReducedASTNode = function (node, sourceCode) { case 'TSEmptyBodyFunctionExpression': case 'FunctionExpression': if (!invokedExpression.has(parent.type)) { + let token = node; + + do { + token = sourceCode.getTokenBefore(token, { + includeComments: true + }); + } while (token && token.type === 'Punctuator' && token.value === '('); + + if (token && token.type === 'Block') { + return node; + } + + if (sourceCode.getCommentsBefore(node).length) { + return node; + } + while (!sourceCode.getCommentsBefore(parent).length && !/Function/u.test(parent.type) && !allowableCommentNode.has(parent.type)) { ({ parent @@ -642,7 +678,7 @@ const findJSDocComment = (astNode, sourceCode, settings) => { break; } - if (tokenBefore.type === 'Block' && tokenBefore.value.charAt(0) === '*' && currentNode.loc.start.line - tokenBefore.loc.end.line >= minLines && currentNode.loc.start.line - tokenBefore.loc.end.line <= maxLines) { + if (tokenBefore.type === 'Block' && /^\*\s/u.test(tokenBefore.value) && currentNode.loc.start.line - tokenBefore.loc.end.line >= minLines && currentNode.loc.start.line - tokenBefore.loc.end.line <= maxLines) { return tokenBefore; } @@ -670,53 +706,56 @@ const stringifiers = { delimiter, postDelimiter, lineEnd, - end, + initial, + terminal, endLine - }, descriptionLines, tags) { - return `${delimiter}${postDelimiter}${endLine ? ` + }, opts, descriptionLines, tags) { + const alreadyHasLine = descriptionLines.length && !tags.length && descriptionLines[descriptionLines.length - 1].endsWith('\n') || tags.length && tags[tags.length - 1].endsWith('\n'); + return `${initial}${delimiter}${postDelimiter}${endLine ? ` ` : ''}${// Could use `node.description` (and `node.lineEnd`), but lines may have // been modified - descriptionLines.length ? descriptionLines.join('') + lineEnd : ''}${tags.length ? tags.join('\n') + lineEnd : ''}${endLine ? ` - ` : ''}${end}`; + descriptionLines.length ? descriptionLines.join(lineEnd + '\n') + (tags.length ? lineEnd + '\n' : '') : ''}${tags.length ? tags.join(lineEnd + '\n') : ''}${endLine && !alreadyHasLine ? `${lineEnd} + ${initial}` : endLine ? ` ${initial}` : ''}${terminal}`; }, JsdocDescriptionLine({ - start, + initial, delimiter, postDelimiter, description }) { - return `${start}${delimiter}${postDelimiter}${description}`; + return `${initial}${delimiter}${postDelimiter}${description}`; }, JsdocTypeLine({ - start, + initial, delimiter, postDelimiter, - rawType + rawType, + parsedType }) { - return `${delimiter}${postDelimiter}{${rawType}}`; + return `${initial}${delimiter}${postDelimiter}${rawType}`; }, - JsdocTag(node, parsedType, typeLines, descriptionLines) { + JsdocTag(node, opts, parsedType, typeLines, descriptionLines) { const { description, name, postName, postTag, postType, - start, + initial, delimiter, postDelimiter, tag // , rawType } = node; - return `${start}${delimiter}${postDelimiter}@${tag}${postTag}${// Could do `rawType` but may have been changed; could also do + return `${initial}${delimiter}${postDelimiter}@${tag}${postTag}${// Could do `rawType` but may have been changed; could also do // `typeLines` but not as likely to be changed // parsedType // Comment this out later in favor of `parsedType` // We can't use raw `typeLines` as first argument has delimiter on it - typeLines}${postType}${name ? `${name}${postName || (description ? '\n' : '')}` : ''}${descriptionLines.join('\n')}`; + opts.preferRawType || !parsedType ? typeLines.length ? `{${typeLines.join('\n')}}` : '' : parsedType}${postType}${name ? `${name}${postName || (description ? '\n' : '')}` : ''}${descriptionLines.join('\n')}`; } }; @@ -727,24 +766,25 @@ const visitorKeys = { ...jsdocVisitorKeys, * @todo convert for use by escodegen (until may be patched to support * custom entries?). * @param {Node} node + * @param {{preferRawType: boolean}} opts * @throws {Error} * @returns {string} */ -function estreeToString(node) { +function estreeToString(node, opts = {}) { if (Object.prototype.hasOwnProperty.call(stringifiers, node.type)) { const childNodeOrArray = visitorKeys[node.type]; const args = childNodeOrArray.map(key => { return Array.isArray(node[key]) ? node[key].map(item => { - return estreeToString(item); - }) : node[key] === undefined || node[key] === null ? [] : [estreeToString(node[key])]; + return estreeToString(item, opts); + }) : node[key] === undefined || node[key] === null ? null : estreeToString(node[key], opts); }); - return stringifiers[node.type](node, ...args); + return stringifiers[node.type](node, opts, ...args); } // We use raw type instead but it is a key as other apps may wish to traverse if (node.type.startsWith('JsdocType')) { - return ''; + return opts.preferRawType ? '' : `{${jsdocTypePrattParser.stringify(node)}}`; } throw new Error(`Unhandled node type: ${node.type}`); diff --git a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/package.json b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/package.json index 218f3670e02c13..a3e526ea4107f0 100644 --- a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/package.json +++ b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/package.json @@ -1,6 +1,6 @@ { "name": "@es-joy/jsdoccomment", - "version": "0.20.1", + "version": "0.31.0", "author": "Brett Zamir ", "contributors": [], "description": "Maintained replacement for ESLint's deprecated SourceCode#getJSDocComment along with other jsdoc utilities", @@ -38,41 +38,41 @@ }, "homepage": "https://github.com/es-joy/jsdoccomment", "engines": { - "node": "^12 || ^14 || ^16 || ^17" + "node": "^14 || ^16 || ^17 || ^18" }, "dependencies": { - "comment-parser": "1.3.0", + "comment-parser": "1.3.1", "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "~2.2.3" + "jsdoc-type-pratt-parser": "~3.1.0" }, "devDependencies": { - "@babel/core": "^7.17.5", + "@babel/core": "^7.17.12", "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/preset-env": "^7.16.11", + "@babel/preset-env": "^7.17.12", "@brettz9/eslint-plugin": "^1.0.4", - "@rollup/plugin-babel": "^5.3.0", - "c8": "^7.11.0", + "@rollup/plugin-babel": "^5.3.1", + "c8": "^7.11.3", "chai": "^4.3.6", - "eslint": "^8.9.0", - "eslint-config-ash-nazg": "32.4.0", - "eslint-config-standard": "^16.0.3", + "eslint": "^8.15.0", + "eslint-config-ash-nazg": "33.1.0", + "eslint-config-standard": "^17.0.0", "eslint-plugin-array-func": "^3.1.7", "eslint-plugin-compat": "^4.0.2", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-html": "^6.2.0", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jsdoc": "^37.9.2", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsdoc": "^39.2.9", "eslint-plugin-markdown": "^2.2.1", + "eslint-plugin-n": "^15.2.0", "eslint-plugin-no-unsanitized": "^4.0.1", "eslint-plugin-no-use-extend-native": "^0.5.0", - "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-sonarjs": "^0.11.0", - "eslint-plugin-unicorn": "^41.0.0", - "espree": "^9.3.1", + "eslint-plugin-sonarjs": "^0.13.0", + "eslint-plugin-unicorn": "^42.0.0", + "espree": "^9.3.2", "estraverse": "^5.3.0", - "mocha": "^9.2.0", - "rollup": "^2.67.2" + "mocha": "^10.0.0", + "rollup": "^2.74.0" }, "scripts": { "open": "open ./coverage/lcov-report/index.html", @@ -83,5 +83,5 @@ "c8": "c8 npm run mocha", "test": "npm run lint && npm run rollup && npm run c8" }, - "readme": "# @es-joy/jsdoccomment\n\n[![Node.js CI status](https://github.com/brettz9/getJSDocComment/workflows/Node.js%20CI/badge.svg)](https://github.com/brettz9/getJSDocComment/actions)\n\nThis project aims to preserve and expand upon the\n`SourceCode#getJSDocComment` functionality of the deprecated ESLint method.\n\nIt also exports a number of functions currently for working with JSDoc:\n\n## API\n\n### `parseComment`\n\nFor parsing `comment-parser` in a JSDoc-specific manner.\nMight wish to have tags with or without tags, etc. derived from a split off\nJSON file.\n\n### `commentParserToESTree`\n\nConverts [comment-parser](https://github.com/syavorsky/comment-parser)\nAST to ESTree/ESLint/Babel friendly AST. See the \"ESLint AST...\" section below.\n\n### `jsdocVisitorKeys`\n\nThe [VisitorKeys](https://github.com/eslint/eslint-visitor-keys)\nfor `JsdocBlock`, `JsdocDescriptionLine`, and `JsdocTag`. More likely to be\nsubject to change or dropped in favor of another type parser.\n\n### `jsdocTypeVisitorKeys`\n\nJust a re-export of [VisitorKeys](https://github.com/eslint/eslint-visitor-keys)\nfrom [`jsdoc-type-pratt-parser`](https://github.com/simonseyock/jsdoc-type-pratt-parser/).\n\n### `getDefaultTagStructureForMode`\n\nProvides info on JSDoc tags:\n\n- `nameContents` ('namepath-referencing'|'namepath-defining'|\n 'dual-namepath-referencing'|false) - Whether and how a name is allowed\n following any type. Tags without a proper name (value `false`) may still\n have a description (which can appear like a name); `descriptionAllowed`\n in such cases would be `true`.\n The presence of a truthy `nameContents` value is therefore only intended\n to signify whether separate parsing should occur for a name vs. a\n description, and what its nature should be.\n- `nameRequired` (boolean) - Whether a name must be present following any type.\n- `descriptionAllowed` (boolean) - Whether a description (following any name)\n is allowed.\n- `typeAllowed` (boolean) - Whether the tag accepts a curly bracketed portion.\n Even without a type, a tag may still have a name and/or description.\n- `typeRequired` (boolean) - Whether a curly bracketed type must be present.\n- `typeOrNameRequired` (boolean) - Whether either a curly bracketed type is\n required or a name, but not necessarily both.\n\n### Miscellaneous\n\nAlso currently exports these utilities, though they might be removed in the\nfuture:\n\n- `getTokenizers` - Used with `parseComment` (its main core)\n- `toCamelCase` - Convert to CamelCase.\n- `hasSeeWithLink` - A utility to detect if a tag is `@see` and has a `@link`\n- `commentHandler` - Used by `eslint-plugin-jsdoc`. Might be removed in future.\n- `commentParserToESTree`- Converts [comment-parser](https://github.com/syavorsky/comment-parser)\n AST to ESTree/ESLint/Babel friendly AST\n- `jsdocVisitorKeys` - The [VisitorKeys](https://github.com/eslint/eslint-visitor-keys)\n for `JSDocBlock`, `JSDocDescriptionLine`, and `JSDocTag`. Might change.\n- `jsdocTypeVisitorKeys` - [VisitorKeys](https://github.com/eslint/eslint-visitor-keys)\n for `jsdoc-type-pratt-parser`.\n- `getTokenizers` - A utility. Might be removed in future.\n- `toCamelCase` - A utility. Might be removed in future.\n- `hasSeeWithLink` - A utility to detect if a tag is `@see` and has a `@link`\n- `defaultNoTypes` = The tags which allow no types by default:\n `default`, `defaultvalue`, `see`;\n- `defaultNoNames` - The tags which allow no names by default:\n `access`, `author`, `default`, `defaultvalue`, `description`, `example`,\n `exception`, `kind`, `license`, `return`, `returns`, `since`, `summary`,\n `throws`, `version`, `variation`\n\n## ESLint AST produced for `comment-parser` nodes (`JsdocBlock`, `JsdocTag`, and `JsdocDescriptionLine`)\n\nNote: Although not added in this package, `@es-joy/jsdoc-eslint-parser` adds\na `jsdoc` property to other ES nodes (using this project's `getJSDocComment`\nto determine the specific comment-block that will be attached as AST).\n\n### `JsdocBlock`\n\nHas two visitable properties:\n\n1. `tags` (an array of `JsdocTag`; see below)\n2. `descriptionLines` (an array of `JsdocDescriptionLine` for multiline\n descriptions).\n\nHas the following custom non-visitable property:\n\n1. `lastDescriptionLine` - A number\n2. `endLine` - A number representing the line number with `end`\n\nMay also have the following non-visitable properties from `comment-parser`:\n\n1. `description` - Same as `descriptionLines` but as a string with newlines.\n2. `delimiter`\n3. `postDelimiter`\n4. `lineEnd`\n5. `end`\n\n### `JsdocTag`\n\nHas three visitable properties:\n\n1. `parsedType` (the `jsdoc-type-pratt-parser` AST representation of the tag's\n type (see the `jsdoc-type-pratt-parser` section below)).\n2. `descriptionLines` (an array of `JsdocDescriptionLine` for multiline\n descriptions)\n3. `typeLines` (an array of `JsdocTypeLine` for multiline type strings)\n\nMay also have the following non-visitable properties from `comment-parser`\n(note that all are included from `comment-parser` except `end` as that is only\nfor JSDoc blocks and note that `type` is renamed to `rawType`):\n\n1. `description` - Same as `descriptionLines` but as a string with newlines.\n2. `rawType` - `comment-parser` has this named as `type`, but because of a\n conflict with ESTree using `type` for Node type, we renamed it to\n `rawType`. It is otherwise the same as in `comment-parser`, i.e., a string\n with newlines, though with the initial `{` and final `}` stripped out.\n See `typeLines` for the array version of this property.\n3. `start`\n4. `delimiter`\n5. `postDelimiter`\n6. `tag` (this does differ from `comment-parser` now in terms of our stripping\n the initial `@`)\n7. `postTag`\n8. `name`\n9. `postName`\n10. `postType`\n\n### `JsdocDescriptionLine`\n\nNo visitable properties.\n\nMay also have the following non-visitable properties from `comment-parser`:\n\n1. `delimiter`\n2. `postDelimiter`\n3. `start`\n4. `description`\n\n### `JsdocTypeLine`\n\nNo visitable properties.\n\nMay also have the following non-visitable properties from `comment-parser`:\n\n1. `delimiter`\n2. `postDelimiter`\n3. `start`\n4. `rawType` - Renamed from `comment-parser` to avoid a conflict. See\n explanation under `JsdocTag`\n\n## ESLint AST produced for `jsdoc-type-pratt-parser`\n\nThe AST, including `type`, remains as is from [jsdoc-type-pratt-parser](https://github.com/simonseyock/jsdoc-type-pratt-parser/).\n\nThe type will always begin with a `JsdocType` prefix added, along with a\ncamel-cased type name, e.g., `JsdocTypeUnion`.\n\nThe `jsdoc-type-pratt-parser` visitor keys are also preserved without change.\n\n## Installation\n\n```shell\nnpm i @es-joy/jsdoccomment\n```\n\n## Changelog\n\nThe changelog can be found on the [CHANGES.md](./CHANGES.md).\n\n## Authors and license\n\n[Brett Zamir](http://brett-zamir.me/) and\n[contributors](https://github.com/es-joy/jsdoc-eslint-parser/graphs/contributors).\n\nMIT License, see the included [LICENSE-MIT.txt](LICENSE-MIT.txt) file.\n\n## To-dos\n\n1. Get complete code coverage\n" + "readme": "# @es-joy/jsdoccomment\n\n[![Node.js CI status](https://github.com/brettz9/getJSDocComment/workflows/Node.js%20CI/badge.svg)](https://github.com/brettz9/getJSDocComment/actions)\n\nThis project aims to preserve and expand upon the\n`SourceCode#getJSDocComment` functionality of the deprecated ESLint method.\n\nIt also exports a number of functions currently for working with JSDoc:\n\n## API\n\n### `parseComment`\n\nFor parsing `comment-parser` in a JSDoc-specific manner.\nMight wish to have tags with or without tags, etc. derived from a split off\nJSON file.\n\n### `commentParserToESTree`\n\nConverts [comment-parser](https://github.com/syavorsky/comment-parser)\nAST to ESTree/ESLint/Babel friendly AST. See the \"ESLint AST...\" section below.\n\n### `estreeToString`\n\nStringifies. In addition to the node argument, it accepts an optional second\noptions object with a single `preferRawType` key. If you don't need to modify\nJSDoc type AST, you might wish to set this to `true` to get the benefits of\npreserving the raw form, but for AST-based stringification of JSDoc types,\nkeep it `false` (the default).\n\n### `jsdocVisitorKeys`\n\nThe [VisitorKeys](https://github.com/eslint/eslint-visitor-keys)\nfor `JsdocBlock`, `JsdocDescriptionLine`, and `JsdocTag`. More likely to be\nsubject to change or dropped in favor of another type parser.\n\n### `jsdocTypeVisitorKeys`\n\nJust a re-export of [VisitorKeys](https://github.com/eslint/eslint-visitor-keys)\nfrom [`jsdoc-type-pratt-parser`](https://github.com/simonseyock/jsdoc-type-pratt-parser/).\n\n### `getDefaultTagStructureForMode`\n\nProvides info on JSDoc tags:\n\n- `nameContents` ('namepath-referencing'|'namepath-defining'|\n 'dual-namepath-referencing'|false) - Whether and how a name is allowed\n following any type. Tags without a proper name (value `false`) may still\n have a description (which can appear like a name); `descriptionAllowed`\n in such cases would be `true`.\n The presence of a truthy `nameContents` value is therefore only intended\n to signify whether separate parsing should occur for a name vs. a\n description, and what its nature should be.\n- `nameRequired` (boolean) - Whether a name must be present following any type.\n- `descriptionAllowed` (boolean) - Whether a description (following any name)\n is allowed.\n- `typeAllowed` (boolean) - Whether the tag accepts a curly bracketed portion.\n Even without a type, a tag may still have a name and/or description.\n- `typeRequired` (boolean) - Whether a curly bracketed type must be present.\n- `typeOrNameRequired` (boolean) - Whether either a curly bracketed type is\n required or a name, but not necessarily both.\n\n### Miscellaneous\n\nAlso currently exports these utilities, though they might be removed in the\nfuture:\n\n- `getTokenizers` - Used with `parseComment` (its main core)\n- `toCamelCase` - Convert to CamelCase.\n- `hasSeeWithLink` - A utility to detect if a tag is `@see` and has a `@link`\n- `commentHandler` - Used by `eslint-plugin-jsdoc`. Might be removed in future.\n- `commentParserToESTree`- Converts [comment-parser](https://github.com/syavorsky/comment-parser)\n AST to ESTree/ESLint/Babel friendly AST\n- `jsdocVisitorKeys` - The [VisitorKeys](https://github.com/eslint/eslint-visitor-keys)\n for `JSDocBlock`, `JSDocDescriptionLine`, and `JSDocTag`. Might change.\n- `jsdocTypeVisitorKeys` - [VisitorKeys](https://github.com/eslint/eslint-visitor-keys)\n for `jsdoc-type-pratt-parser`.\n- `getTokenizers` - A utility. Might be removed in future.\n- `toCamelCase` - A utility. Might be removed in future.\n- `hasSeeWithLink` - A utility to detect if a tag is `@see` and has a `@link`\n- `defaultNoTypes` = The tags which allow no types by default:\n `default`, `defaultvalue`, `see`;\n- `defaultNoNames` - The tags which allow no names by default:\n `access`, `author`, `default`, `defaultvalue`, `description`, `example`,\n `exception`, `kind`, `license`, `return`, `returns`, `since`, `summary`,\n `throws`, `version`, `variation`\n\n## ESLint AST produced for `comment-parser` nodes (`JsdocBlock`, `JsdocTag`, and `JsdocDescriptionLine`)\n\nNote: Although not added in this package, `@es-joy/jsdoc-eslint-parser` adds\na `jsdoc` property to other ES nodes (using this project's `getJSDocComment`\nto determine the specific comment-block that will be attached as AST).\n\n### `JsdocBlock`\n\nHas two visitable properties:\n\n1. `tags` (an array of `JsdocTag`; see below)\n2. `descriptionLines` (an array of `JsdocDescriptionLine` for multiline\n descriptions).\n\nHas the following custom non-visitable property:\n\n1. `lastDescriptionLine` - A number\n2. `endLine` - A number representing the line number with `end`/`terminal`\n\nMay also have the following non-visitable properties from `comment-parser`:\n\n1. `description` - Same as `descriptionLines` but as a string with newlines.\n2. `delimiter`\n3. `postDelimiter`\n4. `lineEnd`\n5. `initial` (from `start`)\n6. `terminal` (from `end`)\n\n### `JsdocTag`\n\nHas three visitable properties:\n\n1. `parsedType` (the `jsdoc-type-pratt-parser` AST representation of the tag's\n type (see the `jsdoc-type-pratt-parser` section below)).\n2. `descriptionLines` (an array of `JsdocDescriptionLine` for multiline\n descriptions)\n3. `typeLines` (an array of `JsdocTypeLine` for multiline type strings)\n\nMay also have the following non-visitable properties from `comment-parser`\n(note that all are included from `comment-parser` except `end` as that is only\nfor JSDoc blocks and note that `type` is renamed to `rawType` and `start` to\n`initial`):\n\n1. `description` - Same as `descriptionLines` but as a string with newlines.\n2. `rawType` - `comment-parser` has this named as `type`, but because of a\n conflict with ESTree using `type` for Node type, we renamed it to\n `rawType`. It is otherwise the same as in `comment-parser`, i.e., a string\n with newlines, though with the initial `{` and final `}` stripped out.\n See `typeLines` for the array version of this property.\n3. `initial` - Renamed from `start` to avoid potential conflicts with\n Acorn-style parser processing tools\n4. `delimiter`\n5. `postDelimiter`\n6. `tag` (this does differ from `comment-parser` now in terms of our stripping\n the initial `@`)\n7. `postTag`\n8. `name`\n9. `postName`\n10. `postType`\n\n### `JsdocDescriptionLine`\n\nNo visitable properties.\n\nMay also have the following non-visitable properties from `comment-parser`:\n\n1. `delimiter`\n2. `postDelimiter`\n3. `initial` (from `start`)\n4. `description`\n\n### `JsdocTypeLine`\n\nNo visitable properties.\n\nMay also have the following non-visitable properties from `comment-parser`:\n\n1. `delimiter`\n2. `postDelimiter`\n3. `initial` (from `start`)\n4. `rawType` - Renamed from `comment-parser` to avoid a conflict. See\n explanation under `JsdocTag`\n\n## ESLint AST produced for `jsdoc-type-pratt-parser`\n\nThe AST, including `type`, remains as is from [jsdoc-type-pratt-parser](https://github.com/simonseyock/jsdoc-type-pratt-parser/).\n\nThe type will always begin with a `JsdocType` prefix added, along with a\ncamel-cased type name, e.g., `JsdocTypeUnion`.\n\nThe `jsdoc-type-pratt-parser` visitor keys are also preserved without change.\n\n## Installation\n\n```shell\nnpm i @es-joy/jsdoccomment\n```\n\n## Changelog\n\nThe changelog can be found on the [CHANGES.md](./CHANGES.md).\n\n## Authors and license\n\n[Brett Zamir](http://brett-zamir.me/) and\n[contributors](https://github.com/es-joy/jsdoc-eslint-parser/graphs/contributors).\n\nMIT License, see the included [LICENSE-MIT.txt](LICENSE-MIT.txt) file.\n\n## To-dos\n\n1. Get complete code coverage\n2. Might add `trailing` for `JsdocBlock` to know whether it is followed by a\n line break or what not; `comment-parser` does not provide, however\n3. Fix and properly utilize `indent` argument (challenging for\n `eslint-plugin-jsdoc` but needed for `jsdoc-eslint-parser` stringifiers\n to be more faithful); should also then use the proposed `trailing` as well\n" } \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/commentParserToESTree.js b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/commentParserToESTree.js index 550c97c40b777b..43587807406b49 100644 --- a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/commentParserToESTree.js +++ b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/commentParserToESTree.js @@ -23,32 +23,6 @@ const stripEncapsulatingBrackets = (container, isArr) => { ).replace(/\}$/u, ''); }; -/** - * Strips brackets from a tag's `rawType` values and adds `parsedType` - * @param {JsdocTag} lastTag - * @param {external:JsdocTypePrattParserMode} mode - * @returns {void} - */ -const cleanUpLastTag = (lastTag, mode) => { - // Strip out `}` that encapsulates and is not part of - // the type - stripEncapsulatingBrackets(lastTag); - if (lastTag.typeLines.length) { - stripEncapsulatingBrackets(lastTag.typeLines, true); - } - - // With even a multiline type now in full, add parsing - let parsedType = null; - - try { - parsedType = jsdocTypePrattParse(lastTag.rawType, mode); - } catch (err) { - // Ignore - } - - lastTag.parsedType = parsedType; -}; - /** * @external CommentParserJsdoc */ @@ -62,7 +36,7 @@ const cleanUpLastTag = (lastTag, mode) => { * delimiter: string, * postDelimiter: string, * rawType: string, - * start: string, + * initial: string, * type: "JsdocTypeLine" * }} JsdocTypeLine */ @@ -72,7 +46,7 @@ const cleanUpLastTag = (lastTag, mode) => { * delimiter: string, * description: string, * postDelimiter: string, - * start: string, + * initial: string, * type: "JsdocDescriptionLine" * }} JsdocDescriptionLine */ @@ -82,9 +56,9 @@ const cleanUpLastTag = (lastTag, mode) => { * delimiter: string, * description: string, * postDelimiter: string, - * start: string, + * initial: string, * tag: string, - * end: string, + * terminal: string, * type: string, * descriptionLines: JsdocDescriptionLine[], * rawType: string, @@ -98,7 +72,8 @@ const cleanUpLastTag = (lastTag, mode) => { * delimiter: string, * description: string, * descriptionLines: JsdocDescriptionLine[], - * end: string, + * initial: string, + * terminal: string, * postDelimiter: string, * lineEnd: string, * type: "JsdocBlock", @@ -108,18 +83,53 @@ const cleanUpLastTag = (lastTag, mode) => { */ /** - * + * Converts comment parser AST to ESTree format. * @param {external:CommentParserJsdoc} jsdoc * @param {external:JsdocTypePrattParserMode} mode + * @param {PlainObject} opts + * @param {throwOnTypeParsingErrors} [opts.throwOnTypeParsingErrors=false] * @returns {JsdocBlock} */ -const commentParserToESTree = (jsdoc, mode) => { +const commentParserToESTree = (jsdoc, mode, { + throwOnTypeParsingErrors = false +} = {}) => { + /** + * Strips brackets from a tag's `rawType` values and adds `parsedType` + * @param {JsdocTag} lastTag + * @returns {void} + */ + const cleanUpLastTag = (lastTag) => { + // Strip out `}` that encapsulates and is not part of + // the type + stripEncapsulatingBrackets(lastTag); + if (lastTag.typeLines.length) { + stripEncapsulatingBrackets(lastTag.typeLines, true); + } + + // With even a multiline type now in full, add parsing + let parsedType = null; + + try { + parsedType = jsdocTypePrattParse(lastTag.rawType, mode); + } catch (err) { + // Ignore + if (lastTag.rawType && throwOnTypeParsingErrors) { + err.message = `Tag @${lastTag.tag} with raw type ` + + `\`${lastTag.rawType}\` had parsing error: ${err.message}`; + throw err; + } + } + + lastTag.parsedType = parsedType; + }; + const {source} = jsdoc; const {tokens: { delimiter: delimiterRoot, lineEnd: lineEndRoot, postDelimiter: postDelimiterRoot, + start: startRoot, end: endRoot, description: descriptionRoot }} = source[0]; @@ -131,8 +141,9 @@ const commentParserToESTree = (jsdoc, mode) => { descriptionLines: [], - // `end` will be overwritten if there are other entries - end: endRoot, + initial: startRoot, + // `terminal` will be overwritten if there are other entries + terminal: endRoot, endLine, postDelimiter: postDelimiterRoot, lineEnd: lineEndRoot, @@ -150,7 +161,7 @@ const commentParserToESTree = (jsdoc, mode) => { delimiter, description, postDelimiter, - start, + start: initial, tag, end, type: rawType @@ -163,14 +174,14 @@ const commentParserToESTree = (jsdoc, mode) => { // Clean-up with last tag before end or new tag if (lastTag) { - cleanUpLastTag(lastTag, mode); + cleanUpLastTag(lastTag); } // Stop the iteration when we reach the end // but only when there is no tag earlier in the line // to still process if (end && !tag) { - ast.end = end; + ast.terminal = end; return; } @@ -179,17 +190,24 @@ const commentParserToESTree = (jsdoc, mode) => { end: ed, delimiter: de, postDelimiter: pd, + start: init, ...tkns } = tokens; if (!tokens.name) { - let i = 0; + let i = 1; while (source[idx + i]) { const {tokens: { name, - postName + postName, + postType, + tag: tg }} = source[idx + i]; + if (tg) { + break; + } if (name) { + tkns.postType = postType; tkns.name = name; tkns.postName = postName; break; @@ -200,6 +218,7 @@ const commentParserToESTree = (jsdoc, mode) => { const tagObj = { ...tkns, + initial: endLine ? init : '', postDelimiter: lastDescriptionLine ? pd : '', delimiter: lastDescriptionLine ? de : '', descriptionLines: [], @@ -222,14 +241,14 @@ const commentParserToESTree = (jsdoc, mode) => { delimiter, postDelimiter, rawType, - start, + initial, type: 'JsdocTypeLine' } : { delimiter: '', postDelimiter: '', rawType, - start: '', + initial: '', type: 'JsdocTypeLine' } ); @@ -244,16 +263,24 @@ const commentParserToESTree = (jsdoc, mode) => { delimiter, description, postDelimiter, - start, - type: 'JsdocDescriptionLine' - } - : { - delimiter: '', - description, - postDelimiter: '', - start: '', + initial, type: 'JsdocDescriptionLine' } + : lastTag + ? { + delimiter: '', + description, + postDelimiter: '', + initial: '', + type: 'JsdocDescriptionLine' + } + : { + delimiter, + description, + postDelimiter, + initial, + type: 'JsdocDescriptionLine' + } ); holder.description += holder.description ? '\n' + description @@ -262,9 +289,9 @@ const commentParserToESTree = (jsdoc, mode) => { // Clean-up where last line itself has tag content if (end && tag) { - ast.end = end; + ast.terminal = end; - cleanUpLastTag(lastTag, mode); + cleanUpLastTag(lastTag); } }); diff --git a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/estreeToString.js b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/estreeToString.js index a0217f69507d61..a2fe703e53265f 100644 --- a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/estreeToString.js +++ b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/estreeToString.js @@ -1,52 +1,63 @@ import { - visitorKeys as jsdocTypePrattParserVisitorKeys + visitorKeys as jsdocTypePrattParserVisitorKeys, + stringify } from 'jsdoc-type-pratt-parser'; import {jsdocVisitorKeys} from './commentParserToESTree.js'; const stringifiers = { JsdocBlock ({ - delimiter, postDelimiter, lineEnd, end, endLine - }, descriptionLines, tags) { - return `${delimiter}${postDelimiter}${endLine + delimiter, postDelimiter, lineEnd, initial, terminal, endLine + }, opts, descriptionLines, tags) { + const alreadyHasLine = + (descriptionLines.length && !tags.length && + descriptionLines[descriptionLines.length - 1].endsWith('\n')) || + (tags.length && tags[tags.length - 1].endsWith('\n')); + return `${initial}${delimiter}${postDelimiter}${endLine ? ` ` : ''}${ // Could use `node.description` (and `node.lineEnd`), but lines may have // been modified - descriptionLines.length ? descriptionLines.join('') + lineEnd : '' + descriptionLines.length + ? descriptionLines.join( + lineEnd + '\n' + ) + (tags.length ? lineEnd + '\n' : '') + : '' }${ - tags.length ? tags.join('\n') + lineEnd : '' - }${endLine - ? ` - ` - : ''}${end}`; + tags.length ? tags.join(lineEnd + '\n') : '' + }${endLine && !alreadyHasLine + ? `${lineEnd} + ${initial}` + : endLine ? ` ${initial}` : ''}${terminal}`; }, JsdocDescriptionLine ({ - start, delimiter, postDelimiter, description + initial, delimiter, postDelimiter, description }) { - return `${start}${delimiter}${postDelimiter}${description}`; + return `${initial}${delimiter}${postDelimiter}${description}`; }, JsdocTypeLine ({ - start, delimiter, postDelimiter, rawType + initial, delimiter, postDelimiter, rawType, parsedType }) { - return `${delimiter}${postDelimiter}{${rawType}}`; + return `${initial}${delimiter}${postDelimiter}${rawType}`; }, - JsdocTag (node, parsedType, typeLines, descriptionLines) { + JsdocTag (node, opts, parsedType, typeLines, descriptionLines) { const { description, name, postName, postTag, postType, - start, delimiter, postDelimiter, tag + initial, delimiter, postDelimiter, tag // , rawType } = node; - return `${start}${delimiter}${postDelimiter}@${tag}${postTag}${ + return `${initial}${delimiter}${postDelimiter}@${tag}${postTag}${ // Could do `rawType` but may have been changed; could also do // `typeLines` but not as likely to be changed // parsedType // Comment this out later in favor of `parsedType` // We can't use raw `typeLines` as first argument has delimiter on it - typeLines + (opts.preferRawType || !parsedType) + ? typeLines.length ? `{${typeLines.join('\n')}}` : '' + : parsedType }${postType}${ name ? `${name}${postName || (description ? '\n' : '')}` : '' }${descriptionLines.join('\n')}`; @@ -59,29 +70,29 @@ const visitorKeys = {...jsdocVisitorKeys, ...jsdocTypePrattParserVisitorKeys}; * @todo convert for use by escodegen (until may be patched to support * custom entries?). * @param {Node} node + * @param {{preferRawType: boolean}} opts * @throws {Error} * @returns {string} */ -function estreeToString (node) { +function estreeToString (node, opts = {}) { if (Object.prototype.hasOwnProperty.call(stringifiers, node.type)) { const childNodeOrArray = visitorKeys[node.type]; const args = childNodeOrArray.map((key) => { return Array.isArray(node[key]) ? node[key].map((item) => { - return estreeToString(item); + return estreeToString(item, opts); }) : (node[key] === undefined || node[key] === null - ? [] - : [estreeToString(node[key])]); + ? null + : estreeToString(node[key], opts)); }); - - return stringifiers[node.type](node, ...args); + return stringifiers[node.type](node, opts, ...args); } // We use raw type instead but it is a key as other apps may wish to traverse if (node.type.startsWith('JsdocType')) { - return ''; + return opts.preferRawType ? '' : `{${stringify(node)}}`; } throw new Error(`Unhandled node type: ${node.type}`); diff --git a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/jsdoccomment.js b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/jsdoccomment.js index 7f10773a00731a..7a20d23ca437f4 100644 --- a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/jsdoccomment.js +++ b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/jsdoccomment.js @@ -160,6 +160,18 @@ const getReducedASTNode = function (node, sourceCode) { if ( !invokedExpression.has(parent.type) ) { + let token = node; + do { + token = sourceCode.getTokenBefore(token, {includeComments: true}); + } while (token && token.type === 'Punctuator' && token.value === '('); + + if (token && token.type === 'Block') { + return node; + } + + if (sourceCode.getCommentsBefore(node).length) { + return node; + } while ( !sourceCode.getCommentsBefore(parent).length && !(/Function/u).test(parent.type) && @@ -233,7 +245,7 @@ const findJSDocComment = (astNode, sourceCode, settings) => { if ( tokenBefore.type === 'Block' && - tokenBefore.value.charAt(0) === '*' && + (/^\*\s/u).test(tokenBefore.value) && currentNode.loc.start.line - tokenBefore.loc.end.line >= minLines && currentNode.loc.start.line - tokenBefore.loc.end.line <= maxLines ) { diff --git a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/parseComment.js b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/parseComment.js index dd146b8835879c..e6a9c8283efc2a 100644 --- a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/parseComment.js +++ b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/src/parseComment.js @@ -1,15 +1,9 @@ /* eslint-disable prefer-named-capture-group -- Temporary */ import { parse as commentParser, - tokenizers, - util + tokenizers } from 'comment-parser'; -const { - seedBlock, - seedTokens -} = util; - const { name: nameTokenizer, tag: tagTokenizer, @@ -35,6 +29,11 @@ export const defaultNoNames = [ 'version', 'variation' ]; +const optionalBrackets = /^\[(?[^=]*)=[^\]]*\]/u; +const preserveTypeTokenizer = typeTokenizer('preserve'); +const preserveDescriptionTokenizer = descriptionTokenizer('preserve'); +const plainNameTokenizer = nameTokenizer(); + const getTokenizers = ({ noTypes = defaultNoTypes, noNames = defaultNoNames @@ -50,7 +49,7 @@ const getTokenizers = ({ return spec; } - return typeTokenizer()(spec); + return preserveTypeTokenizer(spec); }, // Name @@ -61,15 +60,21 @@ const getTokenizers = ({ const pos = remainder.search(/(? -1) { [, postName, description, lineEnd] = extra.match(/(\s*)([^\r]*)(\r)?/u); } + if (optionalBrackets.test(name)) { + name = name.match(optionalBrackets)?.groups?.name; + spec.optional = true; + } else { + spec.optional = false; + } + spec.name = name; - spec.optional = false; const {tokens} = spec.source[0]; tokens.name = name; tokens.postName = postName; @@ -83,44 +88,28 @@ const getTokenizers = ({ return spec; } - return nameTokenizer()(spec); + return plainNameTokenizer(spec); }, // Description (spec) => { - return descriptionTokenizer('preserve')(spec); + return preserveDescriptionTokenizer(spec); } ]; }; /** - * + * Accepts a comment token and converts it into `comment-parser` AST. * @param {PlainObject} commentNode * @param {string} [indent=""] Whitespace * @returns {PlainObject} */ const parseComment = (commentNode, indent = '') => { // Preserve JSDoc block start/end indentation. - return commentParser(`/*${commentNode.value}*/`, { + return commentParser(`${indent}/*${commentNode.value}*/`, { // @see https://github.com/yavorskiy/comment-parser/issues/21 tokenizers: getTokenizers() - })[0] || seedBlock({ - source: [ - { - number: 0, - tokens: seedTokens({ - delimiter: '/**' - }) - }, - { - number: 1, - tokens: seedTokens({ - end: '*/', - start: indent + ' ' - }) - } - ] - }); + })[0]; }; export {getTokenizers, parseComment}; diff --git a/tools/node_modules/eslint/node_modules/@eslint/eslintrc/LICENSE b/tools/node_modules/eslint/node_modules/@eslint/eslintrc/LICENSE index f9556ee619d820..b607bb36e96c33 100644 --- a/tools/node_modules/eslint/node_modules/@eslint/eslintrc/LICENSE +++ b/tools/node_modules/eslint/node_modules/@eslint/eslintrc/LICENSE @@ -1,6 +1,4 @@ -MIT License - -Copyright (c) 2020 ESLint +Copyright OpenJS Foundation and other contributors, Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -9,13 +7,13 @@ 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. +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/@eslint/eslintrc/dist/eslintrc.cjs b/tools/node_modules/eslint/node_modules/@eslint/eslintrc/dist/eslintrc.cjs index 50dd6abf59dbaf..8b07ba16516e5b 100644 --- a/tools/node_modules/eslint/node_modules/@eslint/eslintrc/dist/eslintrc.cjs +++ b/tools/node_modules/eslint/node_modules/@eslint/eslintrc/dist/eslintrc.cjs @@ -2380,7 +2380,7 @@ var ModuleResolver = { * @author Toru Nagashima */ -const require$1 = Module.createRequire((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('eslintrc.cjs', document.baseURI).href))); +const require$1 = Module.createRequire(require('url').pathToFileURL(__filename).toString()); const debug$2 = debugOrig__default["default"]("eslintrc:config-array-factory"); diff --git a/tools/node_modules/eslint/node_modules/@eslint/eslintrc/package.json b/tools/node_modules/eslint/node_modules/@eslint/eslintrc/package.json index 892991a7872290..397ae855789b19 100644 --- a/tools/node_modules/eslint/node_modules/@eslint/eslintrc/package.json +++ b/tools/node_modules/eslint/node_modules/@eslint/eslintrc/package.json @@ -1,6 +1,6 @@ { "name": "@eslint/eslintrc", - "version": "1.2.1", + "version": "1.3.0", "description": "The legacy ESLintRC config file format for ESLint", "type": "module", "main": "./dist/eslintrc.cjs", @@ -59,7 +59,7 @@ "eslint-release": "^3.2.0", "fs-teardown": "^0.1.3", "mocha": "^9.0.3", - "rollup": "^2.54.0", + "rollup": "^2.70.1", "shelljs": "^0.8.4", "sinon": "^11.1.2", "temp-dir": "^2.0.0" @@ -67,12 +67,12 @@ "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", + "espree": "^9.3.2", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/gen-mapping/LICENSE b/tools/node_modules/eslint/node_modules/@jridgewell/gen-mapping/LICENSE new file mode 100644 index 00000000000000..352f0715f391f0 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@jridgewell/gen-mapping/LICENSE @@ -0,0 +1,19 @@ +Copyright 2022 Justin Ridgewell + +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/@jridgewell/gen-mapping/dist/gen-mapping.mjs b/tools/node_modules/eslint/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs new file mode 100644 index 00000000000000..31f9c5c3873cbc --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs @@ -0,0 +1,167 @@ +import { SetArray, put } from '@jridgewell/set-array'; +import { encode } from '@jridgewell/sourcemap-codec'; + +/** + * A low-level API to associate a generated position with an original source position. Line and + * column here are 0-based, unlike `addMapping`. + */ +let addSegment; +/** + * A high-level API to associate a generated position with an original source position. Line is + * 1-based, but column is 0-based, due to legacy behavior in `source-map` library. + */ +let addMapping; +/** + * Adds/removes the content of the source file to the source map. + */ +let setSourceContent; +/** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +let decodedMap; +/** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +let encodedMap; +/** + * Returns an array of high-level mapping objects for every recorded segment, which could then be + * passed to the `source-map` library. + */ +let allMappings; +/** + * Provides the state to generate a sourcemap. + */ +class GenMapping { + constructor({ file, sourceRoot } = {}) { + this._names = new SetArray(); + this._sources = new SetArray(); + this._sourcesContent = []; + this._mappings = []; + this.file = file; + this.sourceRoot = sourceRoot; + } +} +(() => { + addSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name) => { + const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map; + const line = getLine(mappings, genLine); + if (source == null) { + const seg = [genColumn]; + const index = getColumnIndex(line, genColumn, seg); + return insert(line, index, seg); + } + const sourcesIndex = put(sources, source); + const seg = name + ? [genColumn, sourcesIndex, sourceLine, sourceColumn, put(names, name)] + : [genColumn, sourcesIndex, sourceLine, sourceColumn]; + const index = getColumnIndex(line, genColumn, seg); + if (sourcesIndex === sourcesContent.length) + sourcesContent[sourcesIndex] = null; + insert(line, index, seg); + }; + addMapping = (map, mapping) => { + const { generated, source, original, name } = mapping; + return addSegment(map, generated.line - 1, generated.column, source, original == null ? undefined : original.line - 1, original === null || original === void 0 ? void 0 : original.column, name); + }; + setSourceContent = (map, source, content) => { + const { _sources: sources, _sourcesContent: sourcesContent } = map; + sourcesContent[put(sources, source)] = content; + }; + decodedMap = (map) => { + const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map; + return { + version: 3, + file, + names: names.array, + sourceRoot: sourceRoot || undefined, + sources: sources.array, + sourcesContent, + mappings, + }; + }; + encodedMap = (map) => { + const decoded = decodedMap(map); + return Object.assign(Object.assign({}, decoded), { mappings: encode(decoded.mappings) }); + }; + allMappings = (map) => { + const out = []; + const { _mappings: mappings, _sources: sources, _names: names } = map; + for (let i = 0; i < mappings.length; i++) { + const line = mappings[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const generated = { line: i + 1, column: seg[0] }; + let source = undefined; + let original = undefined; + let name = undefined; + if (seg.length !== 1) { + source = sources.array[seg[1]]; + original = { line: seg[2] + 1, column: seg[3] }; + if (seg.length === 5) + name = names.array[seg[4]]; + } + out.push({ generated, source, original, name }); + } + } + return out; + }; +})(); +function getLine(mappings, index) { + for (let i = mappings.length; i <= index; i++) { + mappings[i] = []; + } + return mappings[index]; +} +function getColumnIndex(line, column, seg) { + let index = line.length; + for (let i = index - 1; i >= 0; i--, index--) { + const current = line[i]; + const col = current[0]; + if (col > column) + continue; + if (col < column) + break; + const cmp = compare(current, seg); + if (cmp === 0) + return index; + if (cmp < 0) + break; + } + return index; +} +function compare(a, b) { + let cmp = compareNum(a.length, b.length); + if (cmp !== 0) + return cmp; + // We've already checked genColumn + if (a.length === 1) + return 0; + cmp = compareNum(a[1], b[1]); + if (cmp !== 0) + return cmp; + cmp = compareNum(a[2], b[2]); + if (cmp !== 0) + return cmp; + cmp = compareNum(a[3], b[3]); + if (cmp !== 0) + return cmp; + if (a.length === 4) + return 0; + return compareNum(a[4], b[4]); +} +function compareNum(a, b) { + return a - b; +} +function insert(array, index, value) { + if (index === -1) + return; + for (let i = array.length; i > index; i--) { + array[i] = array[i - 1]; + } + array[index] = value; +} + +export { GenMapping, addMapping, addSegment, allMappings, decodedMap, encodedMap, setSourceContent }; +//# sourceMappingURL=gen-mapping.mjs.map diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js b/tools/node_modules/eslint/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js new file mode 100644 index 00000000000000..46ecab77aa6bd6 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js @@ -0,0 +1,174 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@jridgewell/set-array'), require('@jridgewell/sourcemap-codec')) : + typeof define === 'function' && define.amd ? define(['exports', '@jridgewell/set-array', '@jridgewell/sourcemap-codec'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.genMapping = {}, global.setArray, global.sourcemapCodec)); +})(this, (function (exports, setArray, sourcemapCodec) { 'use strict'; + + /** + * A low-level API to associate a generated position with an original source position. Line and + * column here are 0-based, unlike `addMapping`. + */ + exports.addSegment = void 0; + /** + * A high-level API to associate a generated position with an original source position. Line is + * 1-based, but column is 0-based, due to legacy behavior in `source-map` library. + */ + exports.addMapping = void 0; + /** + * Adds/removes the content of the source file to the source map. + */ + exports.setSourceContent = void 0; + /** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ + exports.decodedMap = void 0; + /** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ + exports.encodedMap = void 0; + /** + * Returns an array of high-level mapping objects for every recorded segment, which could then be + * passed to the `source-map` library. + */ + exports.allMappings = void 0; + /** + * Provides the state to generate a sourcemap. + */ + class GenMapping { + constructor({ file, sourceRoot } = {}) { + this._names = new setArray.SetArray(); + this._sources = new setArray.SetArray(); + this._sourcesContent = []; + this._mappings = []; + this.file = file; + this.sourceRoot = sourceRoot; + } + } + (() => { + exports.addSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name) => { + const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map; + const line = getLine(mappings, genLine); + if (source == null) { + const seg = [genColumn]; + const index = getColumnIndex(line, genColumn, seg); + return insert(line, index, seg); + } + const sourcesIndex = setArray.put(sources, source); + const seg = name + ? [genColumn, sourcesIndex, sourceLine, sourceColumn, setArray.put(names, name)] + : [genColumn, sourcesIndex, sourceLine, sourceColumn]; + const index = getColumnIndex(line, genColumn, seg); + if (sourcesIndex === sourcesContent.length) + sourcesContent[sourcesIndex] = null; + insert(line, index, seg); + }; + exports.addMapping = (map, mapping) => { + const { generated, source, original, name } = mapping; + return exports.addSegment(map, generated.line - 1, generated.column, source, original == null ? undefined : original.line - 1, original === null || original === void 0 ? void 0 : original.column, name); + }; + exports.setSourceContent = (map, source, content) => { + const { _sources: sources, _sourcesContent: sourcesContent } = map; + sourcesContent[setArray.put(sources, source)] = content; + }; + exports.decodedMap = (map) => { + const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map; + return { + version: 3, + file, + names: names.array, + sourceRoot: sourceRoot || undefined, + sources: sources.array, + sourcesContent, + mappings, + }; + }; + exports.encodedMap = (map) => { + const decoded = exports.decodedMap(map); + return Object.assign(Object.assign({}, decoded), { mappings: sourcemapCodec.encode(decoded.mappings) }); + }; + exports.allMappings = (map) => { + const out = []; + const { _mappings: mappings, _sources: sources, _names: names } = map; + for (let i = 0; i < mappings.length; i++) { + const line = mappings[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const generated = { line: i + 1, column: seg[0] }; + let source = undefined; + let original = undefined; + let name = undefined; + if (seg.length !== 1) { + source = sources.array[seg[1]]; + original = { line: seg[2] + 1, column: seg[3] }; + if (seg.length === 5) + name = names.array[seg[4]]; + } + out.push({ generated, source, original, name }); + } + } + return out; + }; + })(); + function getLine(mappings, index) { + for (let i = mappings.length; i <= index; i++) { + mappings[i] = []; + } + return mappings[index]; + } + function getColumnIndex(line, column, seg) { + let index = line.length; + for (let i = index - 1; i >= 0; i--, index--) { + const current = line[i]; + const col = current[0]; + if (col > column) + continue; + if (col < column) + break; + const cmp = compare(current, seg); + if (cmp === 0) + return index; + if (cmp < 0) + break; + } + return index; + } + function compare(a, b) { + let cmp = compareNum(a.length, b.length); + if (cmp !== 0) + return cmp; + // We've already checked genColumn + if (a.length === 1) + return 0; + cmp = compareNum(a[1], b[1]); + if (cmp !== 0) + return cmp; + cmp = compareNum(a[2], b[2]); + if (cmp !== 0) + return cmp; + cmp = compareNum(a[3], b[3]); + if (cmp !== 0) + return cmp; + if (a.length === 4) + return 0; + return compareNum(a[4], b[4]); + } + function compareNum(a, b) { + return a - b; + } + function insert(array, index, value) { + if (index === -1) + return; + for (let i = array.length; i > index; i--) { + array[i] = array[i - 1]; + } + array[index] = value; + } + + exports.GenMapping = GenMapping; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=gen-mapping.umd.js.map diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/gen-mapping/package.json b/tools/node_modules/eslint/node_modules/@jridgewell/gen-mapping/package.json new file mode 100644 index 00000000000000..e614b615a5e22d --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@jridgewell/gen-mapping/package.json @@ -0,0 +1,72 @@ +{ + "name": "@jridgewell/gen-mapping", + "version": "0.1.1", + "description": "Generate source maps", + "keywords": [ + "source", + "map" + ], + "author": "Justin Ridgewell ", + "license": "MIT", + "repository": "https://github.com/jridgewell/gen-mapping", + "main": "dist/gen-mapping.umd.js", + "module": "dist/gen-mapping.mjs", + "typings": "dist/types/gen-mapping.d.ts", + "exports": { + ".": { + "browser": "./dist/gen-mapping.umd.js", + "require": "./dist/gen-mapping.umd.js", + "import": "./dist/gen-mapping.mjs" + }, + "./package.json": "./package.json" + }, + "files": [ + "dist" + ], + "engines": { + "node": ">=6.0.0" + }, + "scripts": { + "benchmark": "run-s build:rollup benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node benchmark/index.mjs", + "prebuild": "rm -rf dist", + "build": "run-s -n build:*", + "build:rollup": "rollup -c rollup.config.js", + "build:ts": "tsc --project tsconfig.build.json", + "lint": "run-s -n lint:*", + "lint:prettier": "npm run test:lint:prettier -- --write", + "lint:ts": "npm run test:lint:ts -- --fix", + "pretest": "run-s build:rollup", + "test": "run-s -n test:lint test:coverage", + "test:debug": "mocha --inspect-brk", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:coverage": "c8 mocha", + "test:watch": "run-p 'build:rollup -- --watch' 'test:only -- --watch'", + "prepublishOnly": "npm run preversion", + "preversion": "run-s test build" + }, + "devDependencies": { + "@rollup/plugin-typescript": "8.3.2", + "@types/mocha": "9.1.1", + "@types/node": "17.0.29", + "@typescript-eslint/eslint-plugin": "5.21.0", + "@typescript-eslint/parser": "5.21.0", + "benchmark": "2.1.4", + "c8": "7.11.2", + "eslint": "8.14.0", + "eslint-config-prettier": "8.5.0", + "mocha": "9.2.2", + "npm-run-all": "4.1.5", + "prettier": "2.6.2", + "rollup": "2.70.2", + "typescript": "4.6.3" + }, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } +} diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs b/tools/node_modules/eslint/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs index b7fa4bd8208cc2..94d8dceb931e21 100644 --- a/tools/node_modules/eslint/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs +++ b/tools/node_modules/eslint/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs @@ -7,8 +7,30 @@ const schemeRegex = /^[\w+.-]+:\/\//; * 3. Host, guaranteed. * 4. Port, including ":", optional. * 5. Path, including "/", optional. + * 6. Query, including "?", optional. + * 7. Hash, including "#", optional. */ -const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?/; +const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/; +/** + * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start + * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive). + * + * 1. Host, optional. + * 2. Path, which may include "/", guaranteed. + * 3. Query, including "?", optional. + * 4. Hash, including "#", optional. + */ +const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i; +var UrlType; +(function (UrlType) { + UrlType[UrlType["Empty"] = 1] = "Empty"; + UrlType[UrlType["Hash"] = 2] = "Hash"; + UrlType[UrlType["Query"] = 3] = "Query"; + UrlType[UrlType["RelativePath"] = 4] = "RelativePath"; + UrlType[UrlType["AbsolutePath"] = 5] = "AbsolutePath"; + UrlType[UrlType["SchemeRelative"] = 6] = "SchemeRelative"; + UrlType[UrlType["Absolute"] = 7] = "Absolute"; +})(UrlType || (UrlType = {})); function isAbsoluteUrl(input) { return schemeRegex.test(input); } @@ -18,37 +40,62 @@ function isSchemeRelativeUrl(input) { function isAbsolutePath(input) { return input.startsWith('/'); } +function isFileUrl(input) { + return input.startsWith('file:'); +} +function isRelative(input) { + return /^[.?#]/.test(input); +} function parseAbsoluteUrl(input) { const match = urlRegex.exec(input); + return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || ''); +} +function parseFileUrl(input) { + const match = fileRegex.exec(input); + const path = match[2]; + return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || ''); +} +function makeUrl(scheme, user, host, port, path, query, hash) { return { - scheme: match[1], - user: match[2] || '', - host: match[3], - port: match[4] || '', - path: match[5] || '/', - relativePath: false, + scheme, + user, + host, + port, + path, + query, + hash, + type: UrlType.Absolute, }; } function parseUrl(input) { if (isSchemeRelativeUrl(input)) { const url = parseAbsoluteUrl('http:' + input); url.scheme = ''; + url.type = UrlType.SchemeRelative; return url; } if (isAbsolutePath(input)) { const url = parseAbsoluteUrl('http://foo.com' + input); url.scheme = ''; url.host = ''; + url.type = UrlType.AbsolutePath; return url; } - if (!isAbsoluteUrl(input)) { - const url = parseAbsoluteUrl('http://foo.com/' + input); - url.scheme = ''; - url.host = ''; - url.relativePath = true; - return url; - } - return parseAbsoluteUrl(input); + if (isFileUrl(input)) + return parseFileUrl(input); + if (isAbsoluteUrl(input)) + return parseAbsoluteUrl(input); + const url = parseAbsoluteUrl('http://foo.com/' + input); + url.scheme = ''; + url.host = ''; + url.type = input + ? input.startsWith('?') + ? UrlType.Query + : input.startsWith('#') + ? UrlType.Hash + : UrlType.RelativePath + : UrlType.Empty; + return url; } function stripPathFilename(path) { // If a path ends with a parent directory "..", then it's a relative path with excess parent @@ -59,10 +106,7 @@ function stripPathFilename(path) { return path.slice(0, index + 1); } function mergePaths(url, base) { - // If we're not a relative path, then we're an absolute path, and it doesn't matter what base is. - if (!url.relativePath) - return; - normalizePath(base); + normalizePath(base, base.type); // If the path is just a "/", then it was an empty path to begin with (remember, we're a relative // path). if (url.path === '/') { @@ -72,15 +116,13 @@ function mergePaths(url, base) { // Resolution happens relative to the base path's directory, not the file. url.path = stripPathFilename(base.path) + url.path; } - // If the base path is absolute, then our path is now absolute too. - url.relativePath = base.relativePath; } /** * The path can have empty directories "//", unneeded parents "foo/..", or current directory * "foo/.". We need to normalize to a standard representation. */ -function normalizePath(url) { - const { relativePath } = url; +function normalizePath(url, type) { + const rel = type <= UrlType.RelativePath; const pieces = url.path.split('/'); // We need to preserve the first piece always, so that we output a leading slash. The item at // pieces[0] is an empty string. @@ -112,7 +154,7 @@ function normalizePath(url) { positive--; pointer--; } - else if (relativePath) { + else if (rel) { // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute // URL, protocol relative URL, or an absolute path, we don't need to keep excess. pieces[pointer++] = piece; @@ -140,37 +182,60 @@ function resolve(input, base) { if (!input && !base) return ''; const url = parseUrl(input); - // If we have a base, and the input isn't already an absolute URL, then we need to merge. - if (base && !url.scheme) { + let inputType = url.type; + if (base && inputType !== UrlType.Absolute) { const baseUrl = parseUrl(base); - url.scheme = baseUrl.scheme; - // If there's no host, then we were just a path. - if (!url.host || baseUrl.scheme === 'file:') { - // The host, user, and port are joined, you can't copy one without the others. - url.user = baseUrl.user; - url.host = baseUrl.host; - url.port = baseUrl.port; + const baseType = baseUrl.type; + switch (inputType) { + case UrlType.Empty: + url.hash = baseUrl.hash; + // fall through + case UrlType.Hash: + url.query = baseUrl.query; + // fall through + case UrlType.Query: + case UrlType.RelativePath: + mergePaths(url, baseUrl); + // fall through + case UrlType.AbsolutePath: + // The host, user, and port are joined, you can't copy one without the others. + url.user = baseUrl.user; + url.host = baseUrl.host; + url.port = baseUrl.port; + // fall through + case UrlType.SchemeRelative: + // The input doesn't have a schema at least, so we need to copy at least that over. + url.scheme = baseUrl.scheme; } - mergePaths(url, baseUrl); + if (baseType > inputType) + inputType = baseType; } - normalizePath(url); - // If the input (and base, if there was one) are both relative, then we need to output a relative. - if (url.relativePath) { - // The first char is always a "/". - const path = url.path.slice(1); - if (!path) - return '.'; - // If base started with a leading ".", or there is no base and input started with a ".", then we - // need to ensure that the relative path starts with a ".". We don't know if relative starts - // with a "..", though, so check before prepending. - const keepRelative = (base || input).startsWith('.'); - return !keepRelative || path.startsWith('.') ? path : './' + path; + normalizePath(url, inputType); + const queryHash = url.query + url.hash; + switch (inputType) { + // This is impossible, because of the empty checks at the start of the function. + // case UrlType.Empty: + case UrlType.Hash: + case UrlType.Query: + return queryHash; + case UrlType.RelativePath: { + // The first char is always a "/", and we need it to be relative. + const path = url.path.slice(1); + if (!path) + return queryHash || '.'; + if (isRelative(base || input) && !isRelative(path)) { + // If base started with a leading ".", or there is no base and input started with a ".", + // then we need to ensure that the relative path starts with a ".". We don't know if + // relative starts with a "..", though, so check before prepending. + return './' + path + queryHash; + } + return path + queryHash; + } + case UrlType.AbsolutePath: + return url.path + queryHash; + default: + return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash; } - // If there's no host (and no scheme/user/port), then we need to output an absolute path. - if (!url.scheme && !url.host) - return url.path; - // We're outputting either an absolute URL, or a protocol relative one. - return `${url.scheme}//${url.user}${url.host}${url.port}${url.path}`; } export { resolve as default }; diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js b/tools/node_modules/eslint/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js index 015f1af3264e39..0700a2d60cef56 100644 --- a/tools/node_modules/eslint/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js +++ b/tools/node_modules/eslint/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js @@ -13,8 +13,30 @@ * 3. Host, guaranteed. * 4. Port, including ":", optional. * 5. Path, including "/", optional. + * 6. Query, including "?", optional. + * 7. Hash, including "#", optional. */ - const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?/; + const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/; + /** + * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start + * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive). + * + * 1. Host, optional. + * 2. Path, which may include "/", guaranteed. + * 3. Query, including "?", optional. + * 4. Hash, including "#", optional. + */ + const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i; + var UrlType; + (function (UrlType) { + UrlType[UrlType["Empty"] = 1] = "Empty"; + UrlType[UrlType["Hash"] = 2] = "Hash"; + UrlType[UrlType["Query"] = 3] = "Query"; + UrlType[UrlType["RelativePath"] = 4] = "RelativePath"; + UrlType[UrlType["AbsolutePath"] = 5] = "AbsolutePath"; + UrlType[UrlType["SchemeRelative"] = 6] = "SchemeRelative"; + UrlType[UrlType["Absolute"] = 7] = "Absolute"; + })(UrlType || (UrlType = {})); function isAbsoluteUrl(input) { return schemeRegex.test(input); } @@ -24,37 +46,62 @@ function isAbsolutePath(input) { return input.startsWith('/'); } + function isFileUrl(input) { + return input.startsWith('file:'); + } + function isRelative(input) { + return /^[.?#]/.test(input); + } function parseAbsoluteUrl(input) { const match = urlRegex.exec(input); + return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || ''); + } + function parseFileUrl(input) { + const match = fileRegex.exec(input); + const path = match[2]; + return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || ''); + } + function makeUrl(scheme, user, host, port, path, query, hash) { return { - scheme: match[1], - user: match[2] || '', - host: match[3], - port: match[4] || '', - path: match[5] || '/', - relativePath: false, + scheme, + user, + host, + port, + path, + query, + hash, + type: UrlType.Absolute, }; } function parseUrl(input) { if (isSchemeRelativeUrl(input)) { const url = parseAbsoluteUrl('http:' + input); url.scheme = ''; + url.type = UrlType.SchemeRelative; return url; } if (isAbsolutePath(input)) { const url = parseAbsoluteUrl('http://foo.com' + input); url.scheme = ''; url.host = ''; + url.type = UrlType.AbsolutePath; return url; } - if (!isAbsoluteUrl(input)) { - const url = parseAbsoluteUrl('http://foo.com/' + input); - url.scheme = ''; - url.host = ''; - url.relativePath = true; - return url; - } - return parseAbsoluteUrl(input); + if (isFileUrl(input)) + return parseFileUrl(input); + if (isAbsoluteUrl(input)) + return parseAbsoluteUrl(input); + const url = parseAbsoluteUrl('http://foo.com/' + input); + url.scheme = ''; + url.host = ''; + url.type = input + ? input.startsWith('?') + ? UrlType.Query + : input.startsWith('#') + ? UrlType.Hash + : UrlType.RelativePath + : UrlType.Empty; + return url; } function stripPathFilename(path) { // If a path ends with a parent directory "..", then it's a relative path with excess parent @@ -65,10 +112,7 @@ return path.slice(0, index + 1); } function mergePaths(url, base) { - // If we're not a relative path, then we're an absolute path, and it doesn't matter what base is. - if (!url.relativePath) - return; - normalizePath(base); + normalizePath(base, base.type); // If the path is just a "/", then it was an empty path to begin with (remember, we're a relative // path). if (url.path === '/') { @@ -78,15 +122,13 @@ // Resolution happens relative to the base path's directory, not the file. url.path = stripPathFilename(base.path) + url.path; } - // If the base path is absolute, then our path is now absolute too. - url.relativePath = base.relativePath; } /** * The path can have empty directories "//", unneeded parents "foo/..", or current directory * "foo/.". We need to normalize to a standard representation. */ - function normalizePath(url) { - const { relativePath } = url; + function normalizePath(url, type) { + const rel = type <= UrlType.RelativePath; const pieces = url.path.split('/'); // We need to preserve the first piece always, so that we output a leading slash. The item at // pieces[0] is an empty string. @@ -118,7 +160,7 @@ positive--; pointer--; } - else if (relativePath) { + else if (rel) { // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute // URL, protocol relative URL, or an absolute path, we don't need to keep excess. pieces[pointer++] = piece; @@ -146,37 +188,60 @@ if (!input && !base) return ''; const url = parseUrl(input); - // If we have a base, and the input isn't already an absolute URL, then we need to merge. - if (base && !url.scheme) { + let inputType = url.type; + if (base && inputType !== UrlType.Absolute) { const baseUrl = parseUrl(base); - url.scheme = baseUrl.scheme; - // If there's no host, then we were just a path. - if (!url.host || baseUrl.scheme === 'file:') { - // The host, user, and port are joined, you can't copy one without the others. - url.user = baseUrl.user; - url.host = baseUrl.host; - url.port = baseUrl.port; + const baseType = baseUrl.type; + switch (inputType) { + case UrlType.Empty: + url.hash = baseUrl.hash; + // fall through + case UrlType.Hash: + url.query = baseUrl.query; + // fall through + case UrlType.Query: + case UrlType.RelativePath: + mergePaths(url, baseUrl); + // fall through + case UrlType.AbsolutePath: + // The host, user, and port are joined, you can't copy one without the others. + url.user = baseUrl.user; + url.host = baseUrl.host; + url.port = baseUrl.port; + // fall through + case UrlType.SchemeRelative: + // The input doesn't have a schema at least, so we need to copy at least that over. + url.scheme = baseUrl.scheme; } - mergePaths(url, baseUrl); + if (baseType > inputType) + inputType = baseType; } - normalizePath(url); - // If the input (and base, if there was one) are both relative, then we need to output a relative. - if (url.relativePath) { - // The first char is always a "/". - const path = url.path.slice(1); - if (!path) - return '.'; - // If base started with a leading ".", or there is no base and input started with a ".", then we - // need to ensure that the relative path starts with a ".". We don't know if relative starts - // with a "..", though, so check before prepending. - const keepRelative = (base || input).startsWith('.'); - return !keepRelative || path.startsWith('.') ? path : './' + path; + normalizePath(url, inputType); + const queryHash = url.query + url.hash; + switch (inputType) { + // This is impossible, because of the empty checks at the start of the function. + // case UrlType.Empty: + case UrlType.Hash: + case UrlType.Query: + return queryHash; + case UrlType.RelativePath: { + // The first char is always a "/", and we need it to be relative. + const path = url.path.slice(1); + if (!path) + return queryHash || '.'; + if (isRelative(base || input) && !isRelative(path)) { + // If base started with a leading ".", or there is no base and input started with a ".", + // then we need to ensure that the relative path starts with a ".". We don't know if + // relative starts with a "..", though, so check before prepending. + return './' + path + queryHash; + } + return path + queryHash; + } + case UrlType.AbsolutePath: + return url.path + queryHash; + default: + return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash; } - // If there's no host (and no scheme/user/port), then we need to output an absolute path. - if (!url.scheme && !url.host) - return url.path; - // We're outputting either an absolute URL, or a protocol relative one. - return `${url.scheme}//${url.user}${url.host}${url.port}${url.path}`; } return resolve; diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/resolve-uri/package.json b/tools/node_modules/eslint/node_modules/@jridgewell/resolve-uri/package.json index 40266386cb1ade..114937a006743c 100644 --- a/tools/node_modules/eslint/node_modules/@jridgewell/resolve-uri/package.json +++ b/tools/node_modules/eslint/node_modules/@jridgewell/resolve-uri/package.json @@ -1,6 +1,6 @@ { "name": "@jridgewell/resolve-uri", - "version": "3.0.5", + "version": "3.1.0", "description": "Resolve a URI relative to an optional base URI", "keywords": [ "resolve", @@ -15,11 +15,15 @@ "module": "dist/resolve-uri.mjs", "typings": "dist/types/resolve-uri.d.ts", "exports": { - ".": { - "browser": "./dist/resolve-uri.umd.js", - "require": "./dist/resolve-uri.umd.js", - "import": "./dist/resolve-uri.mjs" - }, + ".": [ + { + "types": "./dist/types/resolve-uri.d.ts", + "browser": "./dist/resolve-uri.umd.js", + "require": "./dist/resolve-uri.umd.js", + "import": "./dist/resolve-uri.mjs" + }, + "./dist/resolve-uri.umd.js" + ], "./package.json": "./package.json" }, "files": [ @@ -49,6 +53,7 @@ "preversion": "run-s test build" }, "devDependencies": { + "@jridgewell/resolve-uri-latest": "npm:@jridgewell/resolve-uri@*", "@rollup/plugin-typescript": "8.3.0", "@typescript-eslint/eslint-plugin": "5.10.0", "@typescript-eslint/parser": "5.10.0", diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/set-array/LICENSE b/tools/node_modules/eslint/node_modules/@jridgewell/set-array/LICENSE new file mode 100644 index 00000000000000..352f0715f391f0 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@jridgewell/set-array/LICENSE @@ -0,0 +1,19 @@ +Copyright 2022 Justin Ridgewell + +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/@jridgewell/set-array/dist/set-array.mjs b/tools/node_modules/eslint/node_modules/@jridgewell/set-array/dist/set-array.mjs new file mode 100644 index 00000000000000..b7f1a9cc688cf4 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@jridgewell/set-array/dist/set-array.mjs @@ -0,0 +1,48 @@ +/** + * Gets the index associated with `key` in the backing array, if it is already present. + */ +let get; +/** + * Puts `key` into the backing array, if it is not already present. Returns + * the index of the `key` in the backing array. + */ +let put; +/** + * Pops the last added item out of the SetArray. + */ +let pop; +/** + * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the + * index of the `key` in the backing array. + * + * This is designed to allow synchronizing a second array with the contents of the backing array, + * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`, + * and there are never duplicates. + */ +class SetArray { + constructor() { + this._indexes = { __proto__: null }; + this.array = []; + } +} +(() => { + get = (strarr, key) => strarr._indexes[key]; + put = (strarr, key) => { + // The key may or may not be present. If it is present, it's a number. + const index = get(strarr, key); + if (index !== undefined) + return index; + const { array, _indexes: indexes } = strarr; + return (indexes[key] = array.push(key) - 1); + }; + pop = (strarr) => { + const { array, _indexes: indexes } = strarr; + if (array.length === 0) + return; + const last = array.pop(); + indexes[last] = undefined; + }; +})(); + +export { SetArray, get, pop, put }; +//# sourceMappingURL=set-array.mjs.map diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/set-array/dist/set-array.umd.js b/tools/node_modules/eslint/node_modules/@jridgewell/set-array/dist/set-array.umd.js new file mode 100644 index 00000000000000..a1c200a1cb7e83 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@jridgewell/set-array/dist/set-array.umd.js @@ -0,0 +1,58 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.setArray = {})); +})(this, (function (exports) { 'use strict'; + + /** + * Gets the index associated with `key` in the backing array, if it is already present. + */ + exports.get = void 0; + /** + * Puts `key` into the backing array, if it is not already present. Returns + * the index of the `key` in the backing array. + */ + exports.put = void 0; + /** + * Pops the last added item out of the SetArray. + */ + exports.pop = void 0; + /** + * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the + * index of the `key` in the backing array. + * + * This is designed to allow synchronizing a second array with the contents of the backing array, + * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`, + * and there are never duplicates. + */ + class SetArray { + constructor() { + this._indexes = { __proto__: null }; + this.array = []; + } + } + (() => { + exports.get = (strarr, key) => strarr._indexes[key]; + exports.put = (strarr, key) => { + // The key may or may not be present. If it is present, it's a number. + const index = exports.get(strarr, key); + if (index !== undefined) + return index; + const { array, _indexes: indexes } = strarr; + return (indexes[key] = array.push(key) - 1); + }; + exports.pop = (strarr) => { + const { array, _indexes: indexes } = strarr; + if (array.length === 0) + return; + const last = array.pop(); + indexes[last] = undefined; + }; + })(); + + exports.SetArray = SetArray; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=set-array.umd.js.map diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/set-array/package.json b/tools/node_modules/eslint/node_modules/@jridgewell/set-array/package.json new file mode 100644 index 00000000000000..aec4ee029ef792 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/@jridgewell/set-array/package.json @@ -0,0 +1,66 @@ +{ + "name": "@jridgewell/set-array", + "version": "1.1.2", + "description": "Like a Set, but provides the index of the `key` in the backing array", + "keywords": [], + "author": "Justin Ridgewell ", + "license": "MIT", + "repository": "https://github.com/jridgewell/set-array", + "main": "dist/set-array.umd.js", + "module": "dist/set-array.mjs", + "typings": "dist/types/set-array.d.ts", + "exports": { + ".": [ + { + "types": "./dist/types/set-array.d.ts", + "browser": "./dist/set-array.umd.js", + "require": "./dist/set-array.umd.js", + "import": "./dist/set-array.mjs" + }, + "./dist/set-array.umd.js" + ], + "./package.json": "./package.json" + }, + "files": [ + "dist", + "src" + ], + "engines": { + "node": ">=6.0.0" + }, + "scripts": { + "prebuild": "rm -rf dist", + "build": "run-s -n build:*", + "build:rollup": "rollup -c rollup.config.js", + "build:ts": "tsc --project tsconfig.build.json", + "lint": "run-s -n lint:*", + "lint:prettier": "npm run test:lint:prettier -- --write", + "lint:ts": "npm run test:lint:ts -- --fix", + "pretest": "run-s build:rollup", + "test": "run-s -n test:lint test:only", + "test:debug": "mocha --inspect-brk", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:coverage": "c8 mocha", + "test:watch": "mocha --watch", + "prepublishOnly": "npm run preversion", + "preversion": "run-s test build" + }, + "devDependencies": { + "@rollup/plugin-typescript": "8.3.0", + "@types/mocha": "9.1.1", + "@types/node": "17.0.29", + "@typescript-eslint/eslint-plugin": "5.10.0", + "@typescript-eslint/parser": "5.10.0", + "c8": "7.11.0", + "eslint": "8.7.0", + "eslint-config-prettier": "8.3.0", + "mocha": "9.2.0", + "npm-run-all": "4.1.5", + "prettier": "2.5.1", + "rollup": "2.66.0", + "typescript": "4.5.5" + } +} diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs b/tools/node_modules/eslint/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs index 4e92c1e658ccd5..3dff372170b960 100644 --- a/tools/node_modules/eslint/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs +++ b/tools/node_modules/eslint/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs @@ -2,15 +2,15 @@ const comma = ','.charCodeAt(0); const semicolon = ';'.charCodeAt(0); const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; const intToChar = new Uint8Array(64); // 64 possible chars. -const charToInteger = new Uint8Array(128); // z is 122 in ASCII +const charToInt = new Uint8Array(128); // z is 122 in ASCII for (let i = 0; i < chars.length; i++) { const c = chars.charCodeAt(i); - charToInteger[c] = i; intToChar[i] = c; + charToInt[c] = i; } // Provide a fallback for older environments. const td = typeof TextDecoder !== 'undefined' - ? new TextDecoder() + ? /* #__PURE__ */ new TextDecoder() : typeof Buffer !== 'undefined' ? { decode(buf) { @@ -30,56 +30,55 @@ const td = typeof TextDecoder !== 'undefined' function decode(mappings) { const state = new Int32Array(5); const decoded = []; - let line = []; - let sorted = true; - let lastCol = 0; - for (let i = 0; i < mappings.length;) { - const c = mappings.charCodeAt(i); - if (c === comma) { - i++; - } - else if (c === semicolon) { - state[0] = lastCol = 0; - if (!sorted) - sort(line); - sorted = true; - decoded.push(line); - line = []; - i++; - } - else { - i = decodeInteger(mappings, i, state, 0); // generatedCodeColumn + let index = 0; + do { + const semi = indexOf(mappings, index); + const line = []; + let sorted = true; + let lastCol = 0; + state[0] = 0; + for (let i = index; i < semi; i++) { + let seg; + i = decodeInteger(mappings, i, state, 0); // genColumn const col = state[0]; if (col < lastCol) sorted = false; lastCol = col; - if (!hasMoreSegments(mappings, i)) { - line.push([col]); - continue; + if (hasMoreVlq(mappings, i, semi)) { + i = decodeInteger(mappings, i, state, 1); // sourcesIndex + i = decodeInteger(mappings, i, state, 2); // sourceLine + i = decodeInteger(mappings, i, state, 3); // sourceColumn + if (hasMoreVlq(mappings, i, semi)) { + i = decodeInteger(mappings, i, state, 4); // namesIndex + seg = [col, state[1], state[2], state[3], state[4]]; + } + else { + seg = [col, state[1], state[2], state[3]]; + } } - i = decodeInteger(mappings, i, state, 1); // sourceFileIndex - i = decodeInteger(mappings, i, state, 2); // sourceCodeLine - i = decodeInteger(mappings, i, state, 3); // sourceCodeColumn - if (!hasMoreSegments(mappings, i)) { - line.push([col, state[1], state[2], state[3]]); - continue; + else { + seg = [col]; } - i = decodeInteger(mappings, i, state, 4); // nameIndex - line.push([col, state[1], state[2], state[3], state[4]]); + line.push(seg); } - } - if (!sorted) - sort(line); - decoded.push(line); + if (!sorted) + sort(line); + decoded.push(line); + index = semi + 1; + } while (index <= mappings.length); return decoded; } +function indexOf(mappings, index) { + const idx = mappings.indexOf(';', index); + return idx === -1 ? mappings.length : idx; +} function decodeInteger(mappings, pos, state, j) { let value = 0; let shift = 0; let integer = 0; do { const c = mappings.charCodeAt(pos++); - integer = charToInteger[c]; + integer = charToInt[c]; value |= (integer & 31) << shift; shift += 5; } while (integer & 32); @@ -91,13 +90,10 @@ function decodeInteger(mappings, pos, state, j) { state[j] += value; return pos; } -function hasMoreSegments(mappings, i) { - if (i >= mappings.length) - return false; - const c = mappings.charCodeAt(i); - if (c === comma || c === semicolon) +function hasMoreVlq(mappings, i, length) { + if (i >= length) return false; - return true; + return mappings.charCodeAt(i) !== comma; } function sort(line) { line.sort(sortComparator); @@ -107,12 +103,19 @@ function sortComparator(a, b) { } function encode(decoded) { const state = new Int32Array(5); - let buf = new Uint8Array(1024); + const bufLength = 1024 * 16; + const subLength = bufLength - 36; + const buf = new Uint8Array(bufLength); + const sub = buf.subarray(0, subLength); let pos = 0; + let out = ''; for (let i = 0; i < decoded.length; i++) { const line = decoded[i]; if (i > 0) { - buf = reserve(buf, pos, 1); + if (pos === bufLength) { + out += td.decode(buf); + pos = 0; + } buf[pos++] = semicolon; } if (line.length === 0) @@ -122,28 +125,25 @@ function encode(decoded) { const segment = line[j]; // We can push up to 5 ints, each int can take at most 7 chars, and we // may push a comma. - buf = reserve(buf, pos, 36); + if (pos > subLength) { + out += td.decode(sub); + buf.copyWithin(0, subLength, pos); + pos -= subLength; + } if (j > 0) buf[pos++] = comma; - pos = encodeInteger(buf, pos, state, segment, 0); // generatedCodeColumn + pos = encodeInteger(buf, pos, state, segment, 0); // genColumn if (segment.length === 1) continue; - pos = encodeInteger(buf, pos, state, segment, 1); // sourceFileIndex - pos = encodeInteger(buf, pos, state, segment, 2); // sourceCodeLine - pos = encodeInteger(buf, pos, state, segment, 3); // sourceCodeColumn + pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex + pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine + pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn if (segment.length === 4) continue; - pos = encodeInteger(buf, pos, state, segment, 4); // nameIndex + pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex } } - return td.decode(buf.subarray(0, pos)); -} -function reserve(buf, pos, count) { - if (buf.length > pos + count) - return buf; - const swap = new Uint8Array(buf.length * 2); - swap.set(buf); - return swap; + return out + td.decode(buf.subarray(0, pos)); } function encodeInteger(buf, pos, state, segment, j) { const next = segment[j]; diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js b/tools/node_modules/eslint/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js index b5aa0c43c3e8e7..bec92a9c61a0cd 100644 --- a/tools/node_modules/eslint/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js +++ b/tools/node_modules/eslint/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js @@ -8,15 +8,15 @@ const semicolon = ';'.charCodeAt(0); const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; const intToChar = new Uint8Array(64); // 64 possible chars. - const charToInteger = new Uint8Array(128); // z is 122 in ASCII + const charToInt = new Uint8Array(128); // z is 122 in ASCII for (let i = 0; i < chars.length; i++) { const c = chars.charCodeAt(i); - charToInteger[c] = i; intToChar[i] = c; + charToInt[c] = i; } // Provide a fallback for older environments. const td = typeof TextDecoder !== 'undefined' - ? new TextDecoder() + ? /* #__PURE__ */ new TextDecoder() : typeof Buffer !== 'undefined' ? { decode(buf) { @@ -36,56 +36,55 @@ function decode(mappings) { const state = new Int32Array(5); const decoded = []; - let line = []; - let sorted = true; - let lastCol = 0; - for (let i = 0; i < mappings.length;) { - const c = mappings.charCodeAt(i); - if (c === comma) { - i++; - } - else if (c === semicolon) { - state[0] = lastCol = 0; - if (!sorted) - sort(line); - sorted = true; - decoded.push(line); - line = []; - i++; - } - else { - i = decodeInteger(mappings, i, state, 0); // generatedCodeColumn + let index = 0; + do { + const semi = indexOf(mappings, index); + const line = []; + let sorted = true; + let lastCol = 0; + state[0] = 0; + for (let i = index; i < semi; i++) { + let seg; + i = decodeInteger(mappings, i, state, 0); // genColumn const col = state[0]; if (col < lastCol) sorted = false; lastCol = col; - if (!hasMoreSegments(mappings, i)) { - line.push([col]); - continue; + if (hasMoreVlq(mappings, i, semi)) { + i = decodeInteger(mappings, i, state, 1); // sourcesIndex + i = decodeInteger(mappings, i, state, 2); // sourceLine + i = decodeInteger(mappings, i, state, 3); // sourceColumn + if (hasMoreVlq(mappings, i, semi)) { + i = decodeInteger(mappings, i, state, 4); // namesIndex + seg = [col, state[1], state[2], state[3], state[4]]; + } + else { + seg = [col, state[1], state[2], state[3]]; + } } - i = decodeInteger(mappings, i, state, 1); // sourceFileIndex - i = decodeInteger(mappings, i, state, 2); // sourceCodeLine - i = decodeInteger(mappings, i, state, 3); // sourceCodeColumn - if (!hasMoreSegments(mappings, i)) { - line.push([col, state[1], state[2], state[3]]); - continue; + else { + seg = [col]; } - i = decodeInteger(mappings, i, state, 4); // nameIndex - line.push([col, state[1], state[2], state[3], state[4]]); + line.push(seg); } - } - if (!sorted) - sort(line); - decoded.push(line); + if (!sorted) + sort(line); + decoded.push(line); + index = semi + 1; + } while (index <= mappings.length); return decoded; } + function indexOf(mappings, index) { + const idx = mappings.indexOf(';', index); + return idx === -1 ? mappings.length : idx; + } function decodeInteger(mappings, pos, state, j) { let value = 0; let shift = 0; let integer = 0; do { const c = mappings.charCodeAt(pos++); - integer = charToInteger[c]; + integer = charToInt[c]; value |= (integer & 31) << shift; shift += 5; } while (integer & 32); @@ -97,13 +96,10 @@ state[j] += value; return pos; } - function hasMoreSegments(mappings, i) { - if (i >= mappings.length) - return false; - const c = mappings.charCodeAt(i); - if (c === comma || c === semicolon) + function hasMoreVlq(mappings, i, length) { + if (i >= length) return false; - return true; + return mappings.charCodeAt(i) !== comma; } function sort(line) { line.sort(sortComparator); @@ -113,12 +109,19 @@ } function encode(decoded) { const state = new Int32Array(5); - let buf = new Uint8Array(1024); + const bufLength = 1024 * 16; + const subLength = bufLength - 36; + const buf = new Uint8Array(bufLength); + const sub = buf.subarray(0, subLength); let pos = 0; + let out = ''; for (let i = 0; i < decoded.length; i++) { const line = decoded[i]; if (i > 0) { - buf = reserve(buf, pos, 1); + if (pos === bufLength) { + out += td.decode(buf); + pos = 0; + } buf[pos++] = semicolon; } if (line.length === 0) @@ -128,28 +131,25 @@ const segment = line[j]; // We can push up to 5 ints, each int can take at most 7 chars, and we // may push a comma. - buf = reserve(buf, pos, 36); + if (pos > subLength) { + out += td.decode(sub); + buf.copyWithin(0, subLength, pos); + pos -= subLength; + } if (j > 0) buf[pos++] = comma; - pos = encodeInteger(buf, pos, state, segment, 0); // generatedCodeColumn + pos = encodeInteger(buf, pos, state, segment, 0); // genColumn if (segment.length === 1) continue; - pos = encodeInteger(buf, pos, state, segment, 1); // sourceFileIndex - pos = encodeInteger(buf, pos, state, segment, 2); // sourceCodeLine - pos = encodeInteger(buf, pos, state, segment, 3); // sourceCodeColumn + pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex + pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine + pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn if (segment.length === 4) continue; - pos = encodeInteger(buf, pos, state, segment, 4); // nameIndex + pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex } } - return td.decode(buf.subarray(0, pos)); - } - function reserve(buf, pos, count) { - if (buf.length > pos + count) - return buf; - const swap = new Uint8Array(buf.length * 2); - swap.set(buf); - return swap; + return out + td.decode(buf.subarray(0, pos)); } function encodeInteger(buf, pos, state, segment, j) { const next = segment[j]; diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/sourcemap-codec/package.json b/tools/node_modules/eslint/node_modules/@jridgewell/sourcemap-codec/package.json index 0dc07c9103776a..59450728782dbd 100644 --- a/tools/node_modules/eslint/node_modules/@jridgewell/sourcemap-codec/package.json +++ b/tools/node_modules/eslint/node_modules/@jridgewell/sourcemap-codec/package.json @@ -1,6 +1,6 @@ { "name": "@jridgewell/sourcemap-codec", - "version": "1.4.11", + "version": "1.4.14", "description": "Encode/decode sourcemap mappings", "keywords": [ "sourcemap", @@ -10,19 +10,25 @@ "module": "dist/sourcemap-codec.mjs", "typings": "dist/types/sourcemap-codec.d.ts", "files": [ - "dist" + "dist", + "src" ], "exports": { - ".": { - "browser": "./dist/sourcemap-codec.umd.js", - "import": "./dist/sourcemap-codec.mjs", - "require": "./dist/sourcemap-codec.umd.js" - }, + ".": [ + { + "types": "./dist/types/sourcemap-codec.d.ts", + "browser": "./dist/sourcemap-codec.umd.js", + "import": "./dist/sourcemap-codec.mjs", + "require": "./dist/sourcemap-codec.umd.js" + }, + "./dist/sourcemap-codec.umd.js" + ], "./package.json": "./package.json" }, "scripts": { - "benchmark": "run-s build:rollup benchmark:only", - "benchmark:only": "node benchmark/index.js", + "benchmark": "run-s build:rollup benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node --expose-gc benchmark/index.js", "build": "run-s -n build:*", "build:rollup": "rollup -c rollup.config.js", "build:ts": "tsc --project tsconfig.build.json", @@ -54,7 +60,7 @@ "@typescript-eslint/eslint-plugin": "5.10.0", "@typescript-eslint/parser": "5.10.0", "benchmark": "2.1.4", - "c8": "7.11.0", + "c8": "7.11.2", "eslint": "8.7.0", "eslint-config-prettier": "8.3.0", "mocha": "9.2.0", diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs b/tools/node_modules/eslint/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs index fd59d7605634cb..38ad09ab19da81 100644 --- a/tools/node_modules/eslint/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs +++ b/tools/node_modules/eslint/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs @@ -1,4 +1,4 @@ -import { decode, encode } from '@jridgewell/sourcemap-codec'; +import { encode, decode } from '@jridgewell/sourcemap-codec'; import resolveUri from '@jridgewell/resolve-uri'; function resolve(input, base) { @@ -20,6 +20,14 @@ function stripFilename(path) { return path.slice(0, index + 1); } +const COLUMN = 0; +const SOURCES_INDEX = 1; +const SOURCE_LINE = 2; +const SOURCE_COLUMN = 3; +const NAMES_INDEX = 4; +const REV_GENERATED_LINE = 1; +const REV_GENERATED_COLUMN = 2; + function maybeSort(mappings, owned) { const unsortedIndex = nextUnsortedSegmentLine(mappings, 0); if (unsortedIndex === mappings.length) @@ -42,7 +50,7 @@ function nextUnsortedSegmentLine(mappings, start) { } function isSorted(line) { for (let j = 1; j < line.length; j++) { - if (line[j][0] < line[j - 1][0]) { + if (line[j][COLUMN] < line[j - 1][COLUMN]) { return false; } } @@ -54,9 +62,10 @@ function sortSegments(line, owned) { return line.sort(sortComparator); } function sortComparator(a, b) { - return a[0] - b[0]; + return a[COLUMN] - b[COLUMN]; } +let found = false; /** * A binary search implementation that returns the index if a match is found. * If no match is found, then the left-index (the index associated with the item that comes just @@ -76,8 +85,9 @@ function sortComparator(a, b) { function binarySearch(haystack, needle, low, high) { while (low <= high) { const mid = low + ((high - low) >> 1); - const cmp = haystack[mid][0] - needle; + const cmp = haystack[mid][COLUMN] - needle; if (cmp === 0) { + found = true; return mid; } if (cmp < 0) { @@ -87,8 +97,23 @@ function binarySearch(haystack, needle, low, high) { high = mid - 1; } } + found = false; return low - 1; } +function upperBound(haystack, needle, index) { + for (let i = index + 1; i < haystack.length; index = i++) { + if (haystack[i][COLUMN] !== needle) + break; + } + return index; +} +function lowerBound(haystack, needle, index) { + for (let i = index - 1; i >= 0; index = i--) { + if (haystack[i][COLUMN] !== needle) + break; + } + return index; +} function memoizedState() { return { lastKey: -1, @@ -106,11 +131,12 @@ function memoizedBinarySearch(haystack, needle, state, key) { let high = haystack.length - 1; if (key === lastKey) { if (needle === lastNeedle) { + found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle; return lastIndex; } if (needle >= lastNeedle) { // lastIndex may be -1 if the previous needle was not found. - low = Math.max(lastIndex, 0); + low = lastIndex === -1 ? 0 : lastIndex; } else { high = lastIndex; @@ -121,12 +147,149 @@ function memoizedBinarySearch(haystack, needle, state, key) { return (state.lastIndex = binarySearch(haystack, needle, low, high)); } -const INVALID_MAPPING = Object.freeze({ - source: null, - line: null, - column: null, - name: null, -}); +// Rebuilds the original source files, with mappings that are ordered by source line/column instead +// of generated line/column. +function buildBySources(decoded, memos) { + const sources = memos.map(buildNullArray); + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + if (seg.length === 1) + continue; + const sourceIndex = seg[SOURCES_INDEX]; + const sourceLine = seg[SOURCE_LINE]; + const sourceColumn = seg[SOURCE_COLUMN]; + const originalSource = sources[sourceIndex]; + const originalLine = (originalSource[sourceLine] || (originalSource[sourceLine] = [])); + const memo = memos[sourceIndex]; + // The binary search either found a match, or it found the left-index just before where the + // segment should go. Either way, we want to insert after that. And there may be multiple + // generated segments associated with an original location, so there may need to move several + // indexes before we find where we need to insert. + const index = upperBound(originalLine, sourceColumn, memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine)); + insert(originalLine, (memo.lastIndex = index + 1), [sourceColumn, i, seg[COLUMN]]); + } + } + return sources; +} +function insert(array, index, value) { + for (let i = array.length; i > index; i--) { + array[i] = array[i - 1]; + } + array[index] = value; +} +// Null arrays allow us to use ordered index keys without actually allocating contiguous memory like +// a real array. We use a null-prototype object to avoid prototype pollution and deoptimizations. +// Numeric properties on objects are magically sorted in ascending order by the engine regardless of +// the insertion order. So, by setting any numeric keys, even out of order, we'll get ascending +// order when iterating with for-in. +function buildNullArray() { + return { __proto__: null }; +} + +const AnyMap = function (map, mapUrl) { + const parsed = typeof map === 'string' ? JSON.parse(map) : map; + if (!('sections' in parsed)) + return new TraceMap(parsed, mapUrl); + const mappings = []; + const sources = []; + const sourcesContent = []; + const names = []; + recurse(parsed, mapUrl, mappings, sources, sourcesContent, names, 0, 0, Infinity, Infinity); + const joined = { + version: 3, + file: parsed.file, + names, + sources, + sourcesContent, + mappings, + }; + return presortedDecodedMap(joined); +}; +function recurse(input, mapUrl, mappings, sources, sourcesContent, names, lineOffset, columnOffset, stopLine, stopColumn) { + const { sections } = input; + for (let i = 0; i < sections.length; i++) { + const { map, offset } = sections[i]; + let sl = stopLine; + let sc = stopColumn; + if (i + 1 < sections.length) { + const nextOffset = sections[i + 1].offset; + sl = Math.min(stopLine, lineOffset + nextOffset.line); + if (sl === stopLine) { + sc = Math.min(stopColumn, columnOffset + nextOffset.column); + } + else if (sl < stopLine) { + sc = columnOffset + nextOffset.column; + } + } + addSection(map, mapUrl, mappings, sources, sourcesContent, names, lineOffset + offset.line, columnOffset + offset.column, sl, sc); + } +} +function addSection(input, mapUrl, mappings, sources, sourcesContent, names, lineOffset, columnOffset, stopLine, stopColumn) { + if ('sections' in input) + return recurse(...arguments); + const map = new TraceMap(input, mapUrl); + const sourcesOffset = sources.length; + const namesOffset = names.length; + const decoded = decodedMappings(map); + const { resolvedSources, sourcesContent: contents } = map; + append(sources, resolvedSources); + append(names, map.names); + if (contents) + append(sourcesContent, contents); + else + for (let i = 0; i < resolvedSources.length; i++) + sourcesContent.push(null); + for (let i = 0; i < decoded.length; i++) { + const lineI = lineOffset + i; + // We can only add so many lines before we step into the range that the next section's map + // controls. When we get to the last line, then we'll start checking the segments to see if + // they've crossed into the column range. But it may not have any columns that overstep, so we + // still need to check that we don't overstep lines, too. + if (lineI > stopLine) + return; + // The out line may already exist in mappings (if we're continuing the line started by a + // previous section). Or, we may have jumped ahead several lines to start this section. + const out = getLine(mappings, lineI); + // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the + // map can be multiple lines), it doesn't. + const cOffset = i === 0 ? columnOffset : 0; + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const column = cOffset + seg[COLUMN]; + // If this segment steps into the column range that the next section's map controls, we need + // to stop early. + if (lineI === stopLine && column >= stopColumn) + return; + if (seg.length === 1) { + out.push([column]); + continue; + } + const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX]; + const sourceLine = seg[SOURCE_LINE]; + const sourceColumn = seg[SOURCE_COLUMN]; + out.push(seg.length === 4 + ? [column, sourcesIndex, sourceLine, sourceColumn] + : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]]); + } + } +} +function append(arr, other) { + for (let i = 0; i < other.length; i++) + arr.push(other[i]); +} +function getLine(arr, index) { + for (let i = arr.length; i <= index; i++) + arr[i] = []; + return arr[index]; +} + +const LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)'; +const COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)'; +const LEAST_UPPER_BOUND = -1; +const GREATEST_LOWER_BOUND = 1; /** * Returns the encoded (VLQ string) form of the SourceMap's mappings field. */ @@ -146,20 +309,46 @@ let traceSegment; * `source-map` library. */ let originalPositionFor; +/** + * Finds the source/line/column directly after the mapping returned by originalPositionFor, provided + * the found mapping is from the same source and line as the originalPositionFor mapping. + * + * Eg, in the code `let id = 1`, `originalPositionAfter` could find the mapping associated with `1` + * using the same needle that would return `id` when calling `originalPositionFor`. + */ +let generatedPositionFor; /** * Iterates each mapping in generated position order. */ let eachMapping; +/** + * Retrieves the source content for a particular source, if its found. Returns null if not. + */ +let sourceContentFor; /** * A helper that skips sorting of the input map's mappings array, which can be expensive for larger * maps. */ let presortedDecodedMap; +/** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +let decodedMap; +/** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +let encodedMap; class TraceMap { constructor(map, mapUrl) { - this._binarySearchMemo = memoizedState(); + this._decodedMemo = memoizedState(); + this._bySources = undefined; + this._bySourceMemos = undefined; const isString = typeof map === 'string'; - const parsed = isString ? JSON.parse(map) : map; + if (!isString && map._decodedMemo) + return map; + const parsed = (isString ? JSON.parse(map) : map); const { version, file, names, sourceRoot, sources, sourcesContent } = parsed; this.version = version; this.file = file; @@ -167,17 +356,12 @@ class TraceMap { this.sourceRoot = sourceRoot; this.sources = sources; this.sourcesContent = sourcesContent; - if (sourceRoot || mapUrl) { - const from = resolve(sourceRoot || '', stripFilename(mapUrl)); - this.resolvedSources = sources.map((s) => resolve(s || '', from)); - } - else { - this.resolvedSources = sources.map((s) => s || ''); - } + const from = resolve(sourceRoot || '', stripFilename(mapUrl)); + this.resolvedSources = sources.map((s) => resolve(s || '', from)); const { mappings } = parsed; if (typeof mappings === 'string') { this._encoded = mappings; - this._decoded = decode(mappings); + this._decoded = undefined; } else { this._encoded = undefined; @@ -191,42 +375,59 @@ class TraceMap { return ((_a = map._encoded) !== null && _a !== void 0 ? _a : (map._encoded = encode(map._decoded))); }; decodedMappings = (map) => { - return map._decoded; + return (map._decoded || (map._decoded = decode(map._encoded))); }; traceSegment = (map, line, column) => { - const decoded = map._decoded; + const decoded = decodedMappings(map); // It's common for parent source maps to have pointers to lines that have no // mapping (like a "//# sourceMappingURL=") at the end of the child file. if (line >= decoded.length) return null; - const segments = decoded[line]; - const index = memoizedBinarySearch(segments, column, map._binarySearchMemo, line); - // we come before any mapped segment - if (index < 0) - return null; - return segments[index]; + return traceSegmentInternal(decoded[line], map._decodedMemo, line, column, GREATEST_LOWER_BOUND); }; - originalPositionFor = (map, { line, column }) => { - if (line < 1) - throw new Error('`line` must be greater than 0 (lines start at line 1)'); - if (column < 0) { - throw new Error('`column` must be greater than or equal to 0 (columns start at column 0)'); - } - const segment = traceSegment(map, line - 1, column); + originalPositionFor = (map, { line, column, bias }) => { + line--; + if (line < 0) + throw new Error(LINE_GTR_ZERO); + if (column < 0) + throw new Error(COL_GTR_EQ_ZERO); + const decoded = decodedMappings(map); + // It's common for parent source maps to have pointers to lines that have no + // mapping (like a "//# sourceMappingURL=") at the end of the child file. + if (line >= decoded.length) + return OMapping(null, null, null, null); + const segment = traceSegmentInternal(decoded[line], map._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND); if (segment == null) - return INVALID_MAPPING; + return OMapping(null, null, null, null); if (segment.length == 1) - return INVALID_MAPPING; + return OMapping(null, null, null, null); const { names, resolvedSources } = map; - return { - source: resolvedSources[segment[1]], - line: segment[2] + 1, - column: segment[3], - name: segment.length === 5 ? names[segment[4]] : null, - }; + return OMapping(resolvedSources[segment[SOURCES_INDEX]], segment[SOURCE_LINE] + 1, segment[SOURCE_COLUMN], segment.length === 5 ? names[segment[NAMES_INDEX]] : null); + }; + generatedPositionFor = (map, { source, line, column, bias }) => { + line--; + if (line < 0) + throw new Error(LINE_GTR_ZERO); + if (column < 0) + throw new Error(COL_GTR_EQ_ZERO); + const { sources, resolvedSources } = map; + let sourceIndex = sources.indexOf(source); + if (sourceIndex === -1) + sourceIndex = resolvedSources.indexOf(source); + if (sourceIndex === -1) + return GMapping(null, null); + const generated = (map._bySources || (map._bySources = buildBySources(decodedMappings(map), (map._bySourceMemos = sources.map(memoizedState))))); + const memos = map._bySourceMemos; + const segments = generated[sourceIndex][line]; + if (segments == null) + return GMapping(null, null); + const segment = traceSegmentInternal(segments, memos[sourceIndex], line, column, bias || GREATEST_LOWER_BOUND); + if (segment == null) + return GMapping(null, null); + return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]); }; eachMapping = (map, cb) => { - const decoded = map._decoded; + const decoded = decodedMappings(map); const { names, resolvedSources } = map; for (let i = 0; i < decoded.length; i++) { const line = decoded[i]; @@ -256,6 +457,15 @@ class TraceMap { } } }; + sourceContentFor = (map, source) => { + const { sources, resolvedSources, sourcesContent } = map; + if (sourcesContent == null) + return null; + let index = sources.indexOf(source); + if (index === -1) + index = resolvedSources.indexOf(source); + return index === -1 ? null : sourcesContent[index]; + }; presortedDecodedMap = (map, mapUrl) => { const clone = Object.assign({}, map); clone.mappings = []; @@ -263,7 +473,46 @@ class TraceMap { tracer._decoded = map.mappings; return tracer; }; + decodedMap = (map) => { + return { + version: 3, + file: map.file, + names: map.names, + sourceRoot: map.sourceRoot, + sources: map.sources, + sourcesContent: map.sourcesContent, + mappings: decodedMappings(map), + }; + }; + encodedMap = (map) => { + return { + version: 3, + file: map.file, + names: map.names, + sourceRoot: map.sourceRoot, + sources: map.sources, + sourcesContent: map.sourcesContent, + mappings: encodedMappings(map), + }; + }; })(); +function OMapping(source, line, column, name) { + return { source, line, column, name }; +} +function GMapping(line, column) { + return { line, column }; +} +function traceSegmentInternal(segments, memo, line, column, bias) { + let index = memoizedBinarySearch(segments, column, memo, line); + if (found) { + index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index); + } + else if (bias === LEAST_UPPER_BOUND) + index++; + if (index === -1 || index === segments.length) + return null; + return segments[index]; +} -export { TraceMap, decodedMappings, eachMapping, encodedMappings, originalPositionFor, presortedDecodedMap, traceSegment }; +export { AnyMap, GREATEST_LOWER_BOUND, LEAST_UPPER_BOUND, TraceMap, decodedMap, decodedMappings, eachMapping, encodedMap, encodedMappings, generatedPositionFor, originalPositionFor, presortedDecodedMap, sourceContentFor, traceSegment }; //# sourceMappingURL=trace-mapping.mjs.map diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js b/tools/node_modules/eslint/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js index 19f8f26a3e3cb6..1b30d8fbac8338 100644 --- a/tools/node_modules/eslint/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js +++ b/tools/node_modules/eslint/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js @@ -27,6 +27,14 @@ return path.slice(0, index + 1); } + const COLUMN = 0; + const SOURCES_INDEX = 1; + const SOURCE_LINE = 2; + const SOURCE_COLUMN = 3; + const NAMES_INDEX = 4; + const REV_GENERATED_LINE = 1; + const REV_GENERATED_COLUMN = 2; + function maybeSort(mappings, owned) { const unsortedIndex = nextUnsortedSegmentLine(mappings, 0); if (unsortedIndex === mappings.length) @@ -49,7 +57,7 @@ } function isSorted(line) { for (let j = 1; j < line.length; j++) { - if (line[j][0] < line[j - 1][0]) { + if (line[j][COLUMN] < line[j - 1][COLUMN]) { return false; } } @@ -61,9 +69,10 @@ return line.sort(sortComparator); } function sortComparator(a, b) { - return a[0] - b[0]; + return a[COLUMN] - b[COLUMN]; } + let found = false; /** * A binary search implementation that returns the index if a match is found. * If no match is found, then the left-index (the index associated with the item that comes just @@ -83,8 +92,9 @@ function binarySearch(haystack, needle, low, high) { while (low <= high) { const mid = low + ((high - low) >> 1); - const cmp = haystack[mid][0] - needle; + const cmp = haystack[mid][COLUMN] - needle; if (cmp === 0) { + found = true; return mid; } if (cmp < 0) { @@ -94,8 +104,23 @@ high = mid - 1; } } + found = false; return low - 1; } + function upperBound(haystack, needle, index) { + for (let i = index + 1; i < haystack.length; index = i++) { + if (haystack[i][COLUMN] !== needle) + break; + } + return index; + } + function lowerBound(haystack, needle, index) { + for (let i = index - 1; i >= 0; index = i--) { + if (haystack[i][COLUMN] !== needle) + break; + } + return index; + } function memoizedState() { return { lastKey: -1, @@ -113,11 +138,12 @@ let high = haystack.length - 1; if (key === lastKey) { if (needle === lastNeedle) { + found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle; return lastIndex; } if (needle >= lastNeedle) { // lastIndex may be -1 if the previous needle was not found. - low = Math.max(lastIndex, 0); + low = lastIndex === -1 ? 0 : lastIndex; } else { high = lastIndex; @@ -128,12 +154,149 @@ return (state.lastIndex = binarySearch(haystack, needle, low, high)); } - const INVALID_MAPPING = Object.freeze({ - source: null, - line: null, - column: null, - name: null, - }); + // Rebuilds the original source files, with mappings that are ordered by source line/column instead + // of generated line/column. + function buildBySources(decoded, memos) { + const sources = memos.map(buildNullArray); + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + if (seg.length === 1) + continue; + const sourceIndex = seg[SOURCES_INDEX]; + const sourceLine = seg[SOURCE_LINE]; + const sourceColumn = seg[SOURCE_COLUMN]; + const originalSource = sources[sourceIndex]; + const originalLine = (originalSource[sourceLine] || (originalSource[sourceLine] = [])); + const memo = memos[sourceIndex]; + // The binary search either found a match, or it found the left-index just before where the + // segment should go. Either way, we want to insert after that. And there may be multiple + // generated segments associated with an original location, so there may need to move several + // indexes before we find where we need to insert. + const index = upperBound(originalLine, sourceColumn, memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine)); + insert(originalLine, (memo.lastIndex = index + 1), [sourceColumn, i, seg[COLUMN]]); + } + } + return sources; + } + function insert(array, index, value) { + for (let i = array.length; i > index; i--) { + array[i] = array[i - 1]; + } + array[index] = value; + } + // Null arrays allow us to use ordered index keys without actually allocating contiguous memory like + // a real array. We use a null-prototype object to avoid prototype pollution and deoptimizations. + // Numeric properties on objects are magically sorted in ascending order by the engine regardless of + // the insertion order. So, by setting any numeric keys, even out of order, we'll get ascending + // order when iterating with for-in. + function buildNullArray() { + return { __proto__: null }; + } + + const AnyMap = function (map, mapUrl) { + const parsed = typeof map === 'string' ? JSON.parse(map) : map; + if (!('sections' in parsed)) + return new TraceMap(parsed, mapUrl); + const mappings = []; + const sources = []; + const sourcesContent = []; + const names = []; + recurse(parsed, mapUrl, mappings, sources, sourcesContent, names, 0, 0, Infinity, Infinity); + const joined = { + version: 3, + file: parsed.file, + names, + sources, + sourcesContent, + mappings, + }; + return exports.presortedDecodedMap(joined); + }; + function recurse(input, mapUrl, mappings, sources, sourcesContent, names, lineOffset, columnOffset, stopLine, stopColumn) { + const { sections } = input; + for (let i = 0; i < sections.length; i++) { + const { map, offset } = sections[i]; + let sl = stopLine; + let sc = stopColumn; + if (i + 1 < sections.length) { + const nextOffset = sections[i + 1].offset; + sl = Math.min(stopLine, lineOffset + nextOffset.line); + if (sl === stopLine) { + sc = Math.min(stopColumn, columnOffset + nextOffset.column); + } + else if (sl < stopLine) { + sc = columnOffset + nextOffset.column; + } + } + addSection(map, mapUrl, mappings, sources, sourcesContent, names, lineOffset + offset.line, columnOffset + offset.column, sl, sc); + } + } + function addSection(input, mapUrl, mappings, sources, sourcesContent, names, lineOffset, columnOffset, stopLine, stopColumn) { + if ('sections' in input) + return recurse(...arguments); + const map = new TraceMap(input, mapUrl); + const sourcesOffset = sources.length; + const namesOffset = names.length; + const decoded = exports.decodedMappings(map); + const { resolvedSources, sourcesContent: contents } = map; + append(sources, resolvedSources); + append(names, map.names); + if (contents) + append(sourcesContent, contents); + else + for (let i = 0; i < resolvedSources.length; i++) + sourcesContent.push(null); + for (let i = 0; i < decoded.length; i++) { + const lineI = lineOffset + i; + // We can only add so many lines before we step into the range that the next section's map + // controls. When we get to the last line, then we'll start checking the segments to see if + // they've crossed into the column range. But it may not have any columns that overstep, so we + // still need to check that we don't overstep lines, too. + if (lineI > stopLine) + return; + // The out line may already exist in mappings (if we're continuing the line started by a + // previous section). Or, we may have jumped ahead several lines to start this section. + const out = getLine(mappings, lineI); + // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the + // map can be multiple lines), it doesn't. + const cOffset = i === 0 ? columnOffset : 0; + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const column = cOffset + seg[COLUMN]; + // If this segment steps into the column range that the next section's map controls, we need + // to stop early. + if (lineI === stopLine && column >= stopColumn) + return; + if (seg.length === 1) { + out.push([column]); + continue; + } + const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX]; + const sourceLine = seg[SOURCE_LINE]; + const sourceColumn = seg[SOURCE_COLUMN]; + out.push(seg.length === 4 + ? [column, sourcesIndex, sourceLine, sourceColumn] + : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]]); + } + } + } + function append(arr, other) { + for (let i = 0; i < other.length; i++) + arr.push(other[i]); + } + function getLine(arr, index) { + for (let i = arr.length; i <= index; i++) + arr[i] = []; + return arr[index]; + } + + const LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)'; + const COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)'; + const LEAST_UPPER_BOUND = -1; + const GREATEST_LOWER_BOUND = 1; /** * Returns the encoded (VLQ string) form of the SourceMap's mappings field. */ @@ -153,20 +316,46 @@ * `source-map` library. */ exports.originalPositionFor = void 0; + /** + * Finds the source/line/column directly after the mapping returned by originalPositionFor, provided + * the found mapping is from the same source and line as the originalPositionFor mapping. + * + * Eg, in the code `let id = 1`, `originalPositionAfter` could find the mapping associated with `1` + * using the same needle that would return `id` when calling `originalPositionFor`. + */ + exports.generatedPositionFor = void 0; /** * Iterates each mapping in generated position order. */ exports.eachMapping = void 0; + /** + * Retrieves the source content for a particular source, if its found. Returns null if not. + */ + exports.sourceContentFor = void 0; /** * A helper that skips sorting of the input map's mappings array, which can be expensive for larger * maps. */ exports.presortedDecodedMap = void 0; + /** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ + exports.decodedMap = void 0; + /** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ + exports.encodedMap = void 0; class TraceMap { constructor(map, mapUrl) { - this._binarySearchMemo = memoizedState(); + this._decodedMemo = memoizedState(); + this._bySources = undefined; + this._bySourceMemos = undefined; const isString = typeof map === 'string'; - const parsed = isString ? JSON.parse(map) : map; + if (!isString && map._decodedMemo) + return map; + const parsed = (isString ? JSON.parse(map) : map); const { version, file, names, sourceRoot, sources, sourcesContent } = parsed; this.version = version; this.file = file; @@ -174,17 +363,12 @@ this.sourceRoot = sourceRoot; this.sources = sources; this.sourcesContent = sourcesContent; - if (sourceRoot || mapUrl) { - const from = resolve(sourceRoot || '', stripFilename(mapUrl)); - this.resolvedSources = sources.map((s) => resolve(s || '', from)); - } - else { - this.resolvedSources = sources.map((s) => s || ''); - } + const from = resolve(sourceRoot || '', stripFilename(mapUrl)); + this.resolvedSources = sources.map((s) => resolve(s || '', from)); const { mappings } = parsed; if (typeof mappings === 'string') { this._encoded = mappings; - this._decoded = sourcemapCodec.decode(mappings); + this._decoded = undefined; } else { this._encoded = undefined; @@ -198,42 +382,59 @@ return ((_a = map._encoded) !== null && _a !== void 0 ? _a : (map._encoded = sourcemapCodec.encode(map._decoded))); }; exports.decodedMappings = (map) => { - return map._decoded; + return (map._decoded || (map._decoded = sourcemapCodec.decode(map._encoded))); }; exports.traceSegment = (map, line, column) => { - const decoded = map._decoded; + const decoded = exports.decodedMappings(map); // It's common for parent source maps to have pointers to lines that have no // mapping (like a "//# sourceMappingURL=") at the end of the child file. if (line >= decoded.length) return null; - const segments = decoded[line]; - const index = memoizedBinarySearch(segments, column, map._binarySearchMemo, line); - // we come before any mapped segment - if (index < 0) - return null; - return segments[index]; + return traceSegmentInternal(decoded[line], map._decodedMemo, line, column, GREATEST_LOWER_BOUND); }; - exports.originalPositionFor = (map, { line, column }) => { - if (line < 1) - throw new Error('`line` must be greater than 0 (lines start at line 1)'); - if (column < 0) { - throw new Error('`column` must be greater than or equal to 0 (columns start at column 0)'); - } - const segment = exports.traceSegment(map, line - 1, column); + exports.originalPositionFor = (map, { line, column, bias }) => { + line--; + if (line < 0) + throw new Error(LINE_GTR_ZERO); + if (column < 0) + throw new Error(COL_GTR_EQ_ZERO); + const decoded = exports.decodedMappings(map); + // It's common for parent source maps to have pointers to lines that have no + // mapping (like a "//# sourceMappingURL=") at the end of the child file. + if (line >= decoded.length) + return OMapping(null, null, null, null); + const segment = traceSegmentInternal(decoded[line], map._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND); if (segment == null) - return INVALID_MAPPING; + return OMapping(null, null, null, null); if (segment.length == 1) - return INVALID_MAPPING; + return OMapping(null, null, null, null); const { names, resolvedSources } = map; - return { - source: resolvedSources[segment[1]], - line: segment[2] + 1, - column: segment[3], - name: segment.length === 5 ? names[segment[4]] : null, - }; + return OMapping(resolvedSources[segment[SOURCES_INDEX]], segment[SOURCE_LINE] + 1, segment[SOURCE_COLUMN], segment.length === 5 ? names[segment[NAMES_INDEX]] : null); + }; + exports.generatedPositionFor = (map, { source, line, column, bias }) => { + line--; + if (line < 0) + throw new Error(LINE_GTR_ZERO); + if (column < 0) + throw new Error(COL_GTR_EQ_ZERO); + const { sources, resolvedSources } = map; + let sourceIndex = sources.indexOf(source); + if (sourceIndex === -1) + sourceIndex = resolvedSources.indexOf(source); + if (sourceIndex === -1) + return GMapping(null, null); + const generated = (map._bySources || (map._bySources = buildBySources(exports.decodedMappings(map), (map._bySourceMemos = sources.map(memoizedState))))); + const memos = map._bySourceMemos; + const segments = generated[sourceIndex][line]; + if (segments == null) + return GMapping(null, null); + const segment = traceSegmentInternal(segments, memos[sourceIndex], line, column, bias || GREATEST_LOWER_BOUND); + if (segment == null) + return GMapping(null, null); + return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]); }; exports.eachMapping = (map, cb) => { - const decoded = map._decoded; + const decoded = exports.decodedMappings(map); const { names, resolvedSources } = map; for (let i = 0; i < decoded.length; i++) { const line = decoded[i]; @@ -263,6 +464,15 @@ } } }; + exports.sourceContentFor = (map, source) => { + const { sources, resolvedSources, sourcesContent } = map; + if (sourcesContent == null) + return null; + let index = sources.indexOf(source); + if (index === -1) + index = resolvedSources.indexOf(source); + return index === -1 ? null : sourcesContent[index]; + }; exports.presortedDecodedMap = (map, mapUrl) => { const clone = Object.assign({}, map); clone.mappings = []; @@ -270,8 +480,50 @@ tracer._decoded = map.mappings; return tracer; }; + exports.decodedMap = (map) => { + return { + version: 3, + file: map.file, + names: map.names, + sourceRoot: map.sourceRoot, + sources: map.sources, + sourcesContent: map.sourcesContent, + mappings: exports.decodedMappings(map), + }; + }; + exports.encodedMap = (map) => { + return { + version: 3, + file: map.file, + names: map.names, + sourceRoot: map.sourceRoot, + sources: map.sources, + sourcesContent: map.sourcesContent, + mappings: exports.encodedMappings(map), + }; + }; })(); + function OMapping(source, line, column, name) { + return { source, line, column, name }; + } + function GMapping(line, column) { + return { line, column }; + } + function traceSegmentInternal(segments, memo, line, column, bias) { + let index = memoizedBinarySearch(segments, column, memo, line); + if (found) { + index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index); + } + else if (bias === LEAST_UPPER_BOUND) + index++; + if (index === -1 || index === segments.length) + return null; + return segments[index]; + } + exports.AnyMap = AnyMap; + exports.GREATEST_LOWER_BOUND = GREATEST_LOWER_BOUND; + exports.LEAST_UPPER_BOUND = LEAST_UPPER_BOUND; exports.TraceMap = TraceMap; Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/tools/node_modules/eslint/node_modules/@jridgewell/trace-mapping/package.json b/tools/node_modules/eslint/node_modules/@jridgewell/trace-mapping/package.json index 4e51edd88c9c41..b8429300b191f0 100644 --- a/tools/node_modules/eslint/node_modules/@jridgewell/trace-mapping/package.json +++ b/tools/node_modules/eslint/node_modules/@jridgewell/trace-mapping/package.json @@ -1,6 +1,6 @@ { "name": "@jridgewell/trace-mapping", - "version": "0.3.4", + "version": "0.3.14", "description": "Trace the original position through a source map", "keywords": [ "source", @@ -10,14 +10,19 @@ "module": "dist/trace-mapping.mjs", "typings": "dist/types/trace-mapping.d.ts", "files": [ - "dist" + "dist", + "src" ], "exports": { - ".": { - "browser": "./dist/trace-mapping.umd.js", - "require": "./dist/trace-mapping.umd.js", - "import": "./dist/trace-mapping.mjs" - }, + ".": [ + { + "types": "./dist/types/trace-mapping.d.ts", + "browser": "./dist/trace-mapping.umd.js", + "require": "./dist/trace-mapping.umd.js", + "import": "./dist/trace-mapping.mjs" + }, + "./dist/trace-mapping.umd.js" + ], "./package.json": "./package.json" }, "author": "Justin Ridgewell ", @@ -27,8 +32,9 @@ }, "license": "MIT", "scripts": { - "benchmark": "run-s build:rollup benchmark:only", - "benchmark:only": "node benchmark/index.mjs", + "benchmark": "run-s build:rollup benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node --expose-gc benchmark/index.mjs", "build": "run-s -n build:*", "build:rollup": "rollup -c rollup.config.js", "build:ts": "tsc --project tsconfig.build.json", @@ -41,28 +47,27 @@ "test": "run-s -n test:lint test:only", "test:debug": "ava debug", "test:lint": "run-s -n test:lint:*", - "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts' '**/*.md'", "test:lint:ts": "eslint '{src,test}/**/*.ts'", "test:only": "c8 ava", "test:watch": "ava --watch" }, "devDependencies": { - "@rollup/plugin-typescript": "8.3.0", - "@typescript-eslint/eslint-plugin": "5.10.0", - "@typescript-eslint/parser": "5.10.0", - "ava": "4.0.1", + "@rollup/plugin-typescript": "8.3.2", + "@typescript-eslint/eslint-plugin": "5.23.0", + "@typescript-eslint/parser": "5.23.0", + "ava": "4.2.0", "benchmark": "2.1.4", - "c8": "7.11.0", - "esbuild": "0.14.14", - "esbuild-node-loader": "0.6.4", - "eslint": "8.7.0", - "eslint-config-prettier": "8.3.0", + "c8": "7.11.2", + "esbuild": "0.14.38", + "esbuild-node-loader": "0.8.0", + "eslint": "8.15.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-no-only-tests": "2.6.0", "npm-run-all": "4.1.5", - "prettier": "2.5.1", - "rollup": "2.64.0", - "source-map": "0.6.1", - "source-map-js": "1.0.2", - "typescript": "4.5.4" + "prettier": "2.6.2", + "rollup": "2.72.1", + "typescript": "4.6.4" }, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", diff --git a/tools/node_modules/eslint/node_modules/acorn/LICENSE b/tools/node_modules/eslint/node_modules/acorn/LICENSE index d6be6db2cfff57..9d71cc63a35e7d 100644 --- a/tools/node_modules/eslint/node_modules/acorn/LICENSE +++ b/tools/node_modules/eslint/node_modules/acorn/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (C) 2012-2020 by various contributors (see AUTHORS) +Copyright (C) 2012-2022 by various contributors (see AUTHORS) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/tools/node_modules/eslint/node_modules/acorn/bin/acorn b/tools/node_modules/eslint/node_modules/acorn/bin/acorn index cf7df46890fdd4..3ef3c124b08bd4 100755 --- a/tools/node_modules/eslint/node_modules/acorn/bin/acorn +++ b/tools/node_modules/eslint/node_modules/acorn/bin/acorn @@ -1,4 +1,4 @@ #!/usr/bin/env node -'use strict'; +"use strict" -require('../dist/bin.js'); +require("../dist/bin.js") diff --git a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js index 2d279e9fa8417d..1ccee2097cff35 100644 --- a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js +++ b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js @@ -4,6 +4,20 @@ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.acorn = {})); })(this, (function (exports) { 'use strict'; + // This file was generated. Do not modify manually! + var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; + + // This file was generated. Do not modify manually! + var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938]; + + // This file was generated. Do not modify manually! + var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; + + // This file was generated. Do not modify manually! + var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; + + // These are a run-length and offset encoded representation of the + // Reserved word lists for various dialects of the language var reservedWords = { @@ -28,31 +42,9 @@ // ## Character categories - // Big ugly regular expressions that match characters in the - // whitespace, identifier, and identifier-start categories. These - // are only applied when a character is found to actually have a - // code point above 128. - // Generated by `bin/generate-identifier-regex.js`. - var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; - var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; - var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); - nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; - - // These are a run-length and offset encoded representation of the - // >0xffff code points that are a valid part of identifiers. The - // offset starts at 0x10000, and each pair of numbers represents an - // offset to the next range, and then a size of the range. They were - // generated by bin/generate-identifier-regex.js - - // eslint-disable-next-line comma-spacing - var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,190,0,80,921,103,110,18,195,2637,96,16,1070,4050,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,46,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,482,44,11,6,17,0,322,29,19,43,1269,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4152,8,221,3,5761,15,7472,3104,541,1507,4938]; - - // eslint-disable-next-line comma-spacing - var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,154,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,357,0,62,13,1495,6,110,6,6,9,4759,9,787719,239]; - // This has a complexity linear to the value of the code. The // assumption is that looking up astral identifier characters is // rare. @@ -287,6 +279,13 @@ return new RegExp("^(?:" + words.replace(/ /g, "|") + ")$") } + function codePointToString(code) { + // UTF-16 Decoding + if (code <= 0xFFFF) { return String.fromCharCode(code) } + code -= 0x10000; + return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00) + } + var loneSurrogate = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/; // These are used when `options.locations` is on, for the @@ -654,6 +653,7 @@ var literal = /^(?:'((?:\\.|[^'\\])*?)'|"((?:\\.|[^"\\])*?)")/; pp$9.strictDirective = function(start) { + if (this.options.ecmaVersion < 5) { return false } for (;;) { // Try to find string literal. skipWhiteSpace.lastIndex = start; @@ -756,14 +756,14 @@ this.raise(pos != null ? pos : this.start, "Unexpected token"); }; - function DestructuringErrors() { + var DestructuringErrors = function DestructuringErrors() { this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = this.doubleProto = -1; - } + }; pp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) { if (!refDestructuringErrors) { return } @@ -1644,7 +1644,7 @@ if (this.options.ecmaVersion >= 11) { if (this.eatContextual("as")) { node.exported = this.parseModuleExportName(); - this.checkExport(exports, node.exported.name, this.lastTokStart); + this.checkExport(exports, node.exported, this.lastTokStart); } else { node.exported = null; } @@ -1678,7 +1678,7 @@ if (node.declaration.type === "VariableDeclaration") { this.checkVariableExport(exports, node.declaration.declarations); } else - { this.checkExport(exports, node.declaration.id.name, node.declaration.id.start); } + { this.checkExport(exports, node.declaration.id, node.declaration.id.start); } node.specifiers = []; node.source = null; } else { // export { x, y as z } [from '...'] @@ -1710,6 +1710,8 @@ pp$8.checkExport = function(exports, name, pos) { if (!exports) { return } + if (typeof name !== "string") + { name = name.type === "Identifier" ? name.name : name.value; } if (hasOwn(exports, name)) { this.raiseRecoverable(pos, "Duplicate export '" + name + "'"); } exports[name] = true; @@ -1718,7 +1720,7 @@ pp$8.checkPatternExport = function(exports, pat) { var type = pat.type; if (type === "Identifier") - { this.checkExport(exports, pat.name, pat.start); } + { this.checkExport(exports, pat, pat.start); } else if (type === "ObjectPattern") { for (var i = 0, list = pat.properties; i < list.length; i += 1) { @@ -1778,7 +1780,7 @@ node.exported = this.eatContextual("as") ? this.parseModuleExportName() : node.local; this.checkExport( exports, - node.exported[node.exported.type === "Identifier" ? "name" : "value"], + node.exported, node.exported.start ); nodes.push(this.finishNode(node, "ExportSpecifier")); @@ -3768,12 +3770,6 @@ return false }; - function codePointToString$1(ch) { - if (ch <= 0xFFFF) { return String.fromCharCode(ch) } - ch -= 0x10000; - return String.fromCharCode((ch >> 10) + 0xD800, (ch & 0x03FF) + 0xDC00) - } - /** * Validate the flags part of a given RegExpLiteral. * @@ -4138,9 +4134,9 @@ pp$1.regexp_eatRegExpIdentifierName = function(state) { state.lastStringValue = ""; if (this.regexp_eatRegExpIdentifierStart(state)) { - state.lastStringValue += codePointToString$1(state.lastIntValue); + state.lastStringValue += codePointToString(state.lastIntValue); while (this.regexp_eatRegExpIdentifierPart(state)) { - state.lastStringValue += codePointToString$1(state.lastIntValue); + state.lastStringValue += codePointToString(state.lastIntValue); } return true } @@ -4492,7 +4488,7 @@ var ch = 0; state.lastStringValue = ""; while (isUnicodePropertyNameCharacter(ch = state.current())) { - state.lastStringValue += codePointToString$1(ch); + state.lastStringValue += codePointToString(ch); state.advance(); } return state.lastStringValue !== "" @@ -4507,7 +4503,7 @@ var ch = 0; state.lastStringValue = ""; while (isUnicodePropertyValueCharacter(ch = state.current())) { - state.lastStringValue += codePointToString$1(ch); + state.lastStringValue += codePointToString(ch); state.advance(); } return state.lastStringValue !== "" @@ -5290,13 +5286,6 @@ return code }; - function codePointToString(code) { - // UTF-16 Decoding - if (code <= 0xFFFF) { return String.fromCharCode(code) } - code -= 0x10000; - return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00) - } - pp.readString = function(quote) { var out = "", chunkStart = ++this.pos; for (;;) { @@ -5541,7 +5530,7 @@ // Acorn is a tiny, fast JavaScript parser written in JavaScript. - var version = "8.7.0"; + var version = "8.7.1"; Parser.acorn = { Parser: Parser, diff --git a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs index e99e9b30e1b635..6fbb1dc8f3a7ba 100644 --- a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs +++ b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs @@ -1,3 +1,17 @@ +// This file was generated. Do not modify manually! +var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; + +// This file was generated. Do not modify manually! +var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938]; + +// This file was generated. Do not modify manually! +var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; + +// This file was generated. Do not modify manually! +var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; + +// These are a run-length and offset encoded representation of the + // Reserved word lists for various dialects of the language var reservedWords = { @@ -22,31 +36,9 @@ var keywordRelationalOperator = /^in(stanceof)?$/; // ## Character categories -// Big ugly regular expressions that match characters in the -// whitespace, identifier, and identifier-start categories. These -// are only applied when a character is found to actually have a -// code point above 128. -// Generated by `bin/generate-identifier-regex.js`. -var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; -var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; - var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); -nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; - -// These are a run-length and offset encoded representation of the -// >0xffff code points that are a valid part of identifiers. The -// offset starts at 0x10000, and each pair of numbers represents an -// offset to the next range, and then a size of the range. They were -// generated by bin/generate-identifier-regex.js - -// eslint-disable-next-line comma-spacing -var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,190,0,80,921,103,110,18,195,2637,96,16,1070,4050,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,46,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,482,44,11,6,17,0,322,29,19,43,1269,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4152,8,221,3,5761,15,7472,3104,541,1507,4938]; - -// eslint-disable-next-line comma-spacing -var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,154,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,357,0,62,13,1495,6,110,6,6,9,4759,9,787719,239]; - // This has a complexity linear to the value of the code. The // assumption is that looking up astral identifier characters is // rare. @@ -281,6 +273,13 @@ function wordsRegexp(words) { return new RegExp("^(?:" + words.replace(/ /g, "|") + ")$") } +function codePointToString(code) { + // UTF-16 Decoding + if (code <= 0xFFFF) { return String.fromCharCode(code) } + code -= 0x10000; + return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00) +} + var loneSurrogate = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/; // These are used when `options.locations` is on, for the @@ -648,6 +647,7 @@ var pp$9 = Parser.prototype; var literal = /^(?:'((?:\\.|[^'\\])*?)'|"((?:\\.|[^"\\])*?)")/; pp$9.strictDirective = function(start) { + if (this.options.ecmaVersion < 5) { return false } for (;;) { // Try to find string literal. skipWhiteSpace.lastIndex = start; @@ -750,14 +750,14 @@ pp$9.unexpected = function(pos) { this.raise(pos != null ? pos : this.start, "Unexpected token"); }; -function DestructuringErrors() { +var DestructuringErrors = function DestructuringErrors() { this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = this.doubleProto = -1; -} +}; pp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) { if (!refDestructuringErrors) { return } @@ -1638,7 +1638,7 @@ pp$8.parseExport = function(node, exports) { if (this.options.ecmaVersion >= 11) { if (this.eatContextual("as")) { node.exported = this.parseModuleExportName(); - this.checkExport(exports, node.exported.name, this.lastTokStart); + this.checkExport(exports, node.exported, this.lastTokStart); } else { node.exported = null; } @@ -1672,7 +1672,7 @@ pp$8.parseExport = function(node, exports) { if (node.declaration.type === "VariableDeclaration") { this.checkVariableExport(exports, node.declaration.declarations); } else - { this.checkExport(exports, node.declaration.id.name, node.declaration.id.start); } + { this.checkExport(exports, node.declaration.id, node.declaration.id.start); } node.specifiers = []; node.source = null; } else { // export { x, y as z } [from '...'] @@ -1704,6 +1704,8 @@ pp$8.parseExport = function(node, exports) { pp$8.checkExport = function(exports, name, pos) { if (!exports) { return } + if (typeof name !== "string") + { name = name.type === "Identifier" ? name.name : name.value; } if (hasOwn(exports, name)) { this.raiseRecoverable(pos, "Duplicate export '" + name + "'"); } exports[name] = true; @@ -1712,7 +1714,7 @@ pp$8.checkExport = function(exports, name, pos) { pp$8.checkPatternExport = function(exports, pat) { var type = pat.type; if (type === "Identifier") - { this.checkExport(exports, pat.name, pat.start); } + { this.checkExport(exports, pat, pat.start); } else if (type === "ObjectPattern") { for (var i = 0, list = pat.properties; i < list.length; i += 1) { @@ -1772,7 +1774,7 @@ pp$8.parseExportSpecifiers = function(exports) { node.exported = this.eatContextual("as") ? this.parseModuleExportName() : node.local; this.checkExport( exports, - node.exported[node.exported.type === "Identifier" ? "name" : "value"], + node.exported, node.exported.start ); nodes.push(this.finishNode(node, "ExportSpecifier")); @@ -3762,12 +3764,6 @@ RegExpValidationState.prototype.eat = function eat (ch, forceU) { return false }; -function codePointToString$1(ch) { - if (ch <= 0xFFFF) { return String.fromCharCode(ch) } - ch -= 0x10000; - return String.fromCharCode((ch >> 10) + 0xD800, (ch & 0x03FF) + 0xDC00) -} - /** * Validate the flags part of a given RegExpLiteral. * @@ -4132,9 +4128,9 @@ pp$1.regexp_eatGroupName = function(state) { pp$1.regexp_eatRegExpIdentifierName = function(state) { state.lastStringValue = ""; if (this.regexp_eatRegExpIdentifierStart(state)) { - state.lastStringValue += codePointToString$1(state.lastIntValue); + state.lastStringValue += codePointToString(state.lastIntValue); while (this.regexp_eatRegExpIdentifierPart(state)) { - state.lastStringValue += codePointToString$1(state.lastIntValue); + state.lastStringValue += codePointToString(state.lastIntValue); } return true } @@ -4486,7 +4482,7 @@ pp$1.regexp_eatUnicodePropertyName = function(state) { var ch = 0; state.lastStringValue = ""; while (isUnicodePropertyNameCharacter(ch = state.current())) { - state.lastStringValue += codePointToString$1(ch); + state.lastStringValue += codePointToString(ch); state.advance(); } return state.lastStringValue !== "" @@ -4501,7 +4497,7 @@ pp$1.regexp_eatUnicodePropertyValue = function(state) { var ch = 0; state.lastStringValue = ""; while (isUnicodePropertyValueCharacter(ch = state.current())) { - state.lastStringValue += codePointToString$1(ch); + state.lastStringValue += codePointToString(ch); state.advance(); } return state.lastStringValue !== "" @@ -5284,13 +5280,6 @@ pp.readCodePoint = function() { return code }; -function codePointToString(code) { - // UTF-16 Decoding - if (code <= 0xFFFF) { return String.fromCharCode(code) } - code -= 0x10000; - return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00) -} - pp.readString = function(quote) { var out = "", chunkStart = ++this.pos; for (;;) { @@ -5535,7 +5524,7 @@ pp.readWord = function() { // Acorn is a tiny, fast JavaScript parser written in JavaScript. -var version = "8.7.0"; +var version = "8.7.1"; Parser.acorn = { Parser: Parser, diff --git a/tools/node_modules/eslint/node_modules/acorn/package.json b/tools/node_modules/eslint/node_modules/acorn/package.json index 8e2edc65cff81c..1741697462e8e3 100644 --- a/tools/node_modules/eslint/node_modules/acorn/package.json +++ b/tools/node_modules/eslint/node_modules/acorn/package.json @@ -16,8 +16,10 @@ ], "./package.json": "./package.json" }, - "version": "8.7.0", - "engines": {"node": ">=0.4.0"}, + "version": "8.7.1", + "engines": { + "node": ">=0.4.0" + }, "maintainers": [ { "name": "Marijn Haverbeke", @@ -42,5 +44,7 @@ "scripts": { "prepare": "cd ..; npm run build:main" }, - "bin": {"acorn": "./bin/acorn"} + "bin": { + "acorn": "./bin/acorn" + } } diff --git a/tools/node_modules/eslint/node_modules/browserslist/cli.js b/tools/node_modules/eslint/node_modules/browserslist/cli.js index e4a707656de747..c54aa9879288e9 100755 --- a/tools/node_modules/eslint/node_modules/browserslist/cli.js +++ b/tools/node_modules/eslint/node_modules/browserslist/cli.js @@ -1,9 +1,9 @@ #!/usr/bin/env node +var updateDb = require('update-browserslist-db') var fs = require('fs') var browserslist = require('./') -var updateDb = require('./update-db') var pkg = require('./package.json') var args = process.argv.slice(2) @@ -20,8 +20,7 @@ var USAGE = ' npx browserslist --env="environment name defined in config"\n' + ' npx browserslist --stats="path/to/browserlist/stats/file"\n' + ' npx browserslist --mobile-to-desktop\n' + - ' npx browserslist --ignore-unknown-versions\n' + - ' npx browserslist --update-db' + ' npx browserslist --ignore-unknown-versions\n' function isArg(arg) { return args.some(function (str) { @@ -93,7 +92,7 @@ if (isArg('--help') || isArg('-h')) { } catch (e) { if (e.name === 'BrowserslistError') { error(e.message) - } else /* c8 ignore start */ { + } /* c8 ignore start */ else { throw e } /* c8 ignore end */ } diff --git a/tools/node_modules/eslint/node_modules/browserslist/index.js b/tools/node_modules/eslint/node_modules/browserslist/index.js index 8c09141c696faa..530ec7c9b0c330 100644 --- a/tools/node_modules/eslint/node_modules/browserslist/index.js +++ b/tools/node_modules/eslint/node_modules/browserslist/index.js @@ -5,13 +5,13 @@ var path = require('path') var e2c = require('electron-to-chromium/versions') var BrowserslistError = require('./error') +var parse = require('./parse') var env = require('./node') // Will load browser.js in webpack var YEAR = 365.259641 * 24 * 60 * 60 * 1000 var ANDROID_EVERGREEN_FIRST = 37 -var QUERY_OR = 1 -var QUERY_AND = 2 +// Helpers function isVersionsMatch(versionA, versionB) { return (versionA + '.').indexOf(versionB + '.') === 0 @@ -71,8 +71,6 @@ function uniq(array) { return filtered } -// Helpers - function fillUsage(result, name, data) { for (var i in data) { result[name + ' ' + i] = data[i] @@ -229,7 +227,7 @@ function mapVersions(data, map) { data.versions = data.versions.map(function (i) { return map[i] || i }) - data.released = data.versions.map(function (i) { + data.released = data.released.map(function (i) { return map[i] || i }) var fixedDate = {} @@ -302,117 +300,62 @@ function filterAndroid(list, versions, context) { } } -/** - * Resolves queries into a browser list. - * @param {string|string[]} queries Queries to combine. - * Either an array of queries or a long string of queries. - * @param {object} [context] Optional arguments to - * the select function in `queries`. - * @returns {string[]} A list of browsers - */ function resolve(queries, context) { - if (Array.isArray(queries)) { - queries = flatten(queries.map(parse)) - } else { - queries = parse(queries) - } - - return queries.reduce(function (result, query, index) { - var selection = query.queryString - - var isExclude = selection.indexOf('not ') === 0 - if (isExclude) { - if (index === 0) { - throw new BrowserslistError( - 'Write any browsers query (for instance, `defaults`) ' + - 'before `' + - selection + - '`' - ) - } - selection = selection.slice(4) + return parse(QUERIES, queries).reduce(function (result, node, index) { + if (node.not && index === 0) { + throw new BrowserslistError( + 'Write any browsers query (for instance, `defaults`) ' + + 'before `' + + node.query + + '`' + ) } + var type = QUERIES[node.type] + var array = type.select.call(browserslist, context, node).map(function (j) { + var parts = j.split(' ') + if (parts[1] === '0') { + return parts[0] + ' ' + byName(parts[0], context).versions[0] + } else { + return j + } + }) - for (var i = 0; i < QUERIES.length; i++) { - var type = QUERIES[i] - var match = selection.match(type.regexp) - if (match) { - var args = [context].concat(match.slice(1)) - var array = type.select.apply(browserslist, args).map(function (j) { - var parts = j.split(' ') - if (parts[1] === '0') { - return parts[0] + ' ' + byName(parts[0], context).versions[0] - } else { - return j - } + if (node.compose === 'and') { + if (node.not) { + return result.filter(function (j) { + return array.indexOf(j) === -1 + }) + } else { + return result.filter(function (j) { + return array.indexOf(j) !== -1 + }) + } + } else { + if (node.not) { + var filter = {} + array.forEach(function (j) { + filter[j] = true + }) + return result.filter(function (j) { + return !filter[j] }) - - switch (query.type) { - case QUERY_AND: - if (isExclude) { - return result.filter(function (j) { - return array.indexOf(j) === -1 - }) - } else { - return result.filter(function (j) { - return array.indexOf(j) !== -1 - }) - } - case QUERY_OR: - default: - if (isExclude) { - var filter = {} - array.forEach(function (j) { - filter[j] = true - }) - return result.filter(function (j) { - return !filter[j] - }) - } - return result.concat(array) - } } + return result.concat(array) } - - throw unknownQuery(selection) }, []) } -var cache = {} - -/** - * Return array of browsers by selection queries. - * - * @param {(string|string[])} [queries=browserslist.defaults] Browser queries. - * @param {object} [opts] Options. - * @param {string} [opts.path="."] Path to processed file. - * It will be used to find config files. - * @param {string} [opts.env="production"] Processing environment. - * It will be used to take right - * queries from config file. - * @param {string} [opts.config] Path to config file with queries. - * @param {object} [opts.stats] Custom browser usage statistics - * for "> 1% in my stats" query. - * @param {boolean} [opts.ignoreUnknownVersions=false] Do not throw on unknown - * version in direct query. - * @param {boolean} [opts.dangerousExtend] Disable security checks - * for extend query. - * @param {boolean} [opts.throwOnMissing] Throw error on missing env. - * @param {boolean} [opts.mobileToDesktop] Alias mobile browsers to the desktop - * version when Can I Use doesn't have - * data about the specified version. - * @returns {string[]} Array with browser names in Can I Use. - * - * @example - * browserslist('IE >= 10, IE 8') //=> ['ie 11', 'ie 10', 'ie 8'] - */ -function browserslist(queries, opts) { +function prepareOpts(opts) { if (typeof opts === 'undefined') opts = {} if (typeof opts.path === 'undefined') { opts.path = path.resolve ? path.resolve('.') : '.' } + return opts +} + +function prepareQueries(queries, opts) { if (typeof queries === 'undefined' || queries === null) { var config = browserslist.loadConfig(opts) if (config) { @@ -422,11 +365,23 @@ function browserslist(queries, opts) { } } + return queries +} + +function checkQueries(queries) { if (!(typeof queries === 'string' || Array.isArray(queries))) { throw new BrowserslistError( 'Browser queries must be an array or string. Got ' + typeof queries + '.' ) } +} + +var cache = {} + +function browserslist(queries, opts) { + opts = prepareOpts(opts) + queries = prepareQueries(queries, opts) + checkQueries(queries) var context = { ignoreUnknownVersions: opts.ignoreUnknownVersions, @@ -468,48 +423,11 @@ function browserslist(queries, opts) { return result } -function parse(queries) { - var qs = [] - do { - queries = doMatch(queries, qs) - } while (queries) - return qs -} - -function doMatch(string, qs) { - var or = /^(?:,\s*|\s+or\s+)(.*)/i - var and = /^\s+and\s+(.*)/i - - return find(string, function (parsed, n, max) { - if (and.test(parsed)) { - qs.unshift({ type: QUERY_AND, queryString: parsed.match(and)[1] }) - return true - } else if (or.test(parsed)) { - qs.unshift({ type: QUERY_OR, queryString: parsed.match(or)[1] }) - return true - } else if (n === max) { - qs.unshift({ type: QUERY_OR, queryString: parsed.trim() }) - return true - } - return false - }) -} - -function find(string, predicate) { - for (var n = 1, max = string.length; n <= max; n++) { - var parsed = string.substr(-n, n) - if (predicate(parsed, n, max)) { - return string.slice(0, -n) - } - } - return '' -} - -function flatten(array) { - if (!Array.isArray(array)) return [array] - return array.reduce(function (a, b) { - return a.concat(flatten(b)) - }, []) +browserslist.parse = function (queries, opts) { + opts = prepareOpts(opts) + queries = prepareQueries(queries, opts) + checkQueries(queries) + return parse(QUERIES, queries) } // Will be filled by Can I Use data below @@ -558,20 +476,6 @@ browserslist.readConfig = env.readConfig browserslist.findConfig = env.findConfig browserslist.loadConfig = env.loadConfig -/** - * Return browsers market coverage. - * - * @param {string[]} browsers Browsers names in Can I Use. - * @param {string|object} [stats="global"] Which statistics should be used. - * Country code or custom statistics. - * Pass `"my stats"` to load statistics - * from Browserslist files. - * - * @return {number} Total market coverage for all selected browsers. - * - * @example - * browserslist.coverage(browserslist('> 1% in US'), 'US') //=> 83.1 - */ browserslist.coverage = function (browsers, stats) { var data if (typeof stats === 'undefined') { @@ -616,42 +520,44 @@ browserslist.coverage = function (browsers, stats) { }, 0) } -function nodeQuery(context, version) { +function nodeQuery(context, node) { var matched = browserslist.nodeVersions.filter(function (i) { - return isVersionsMatch(i, version) + return isVersionsMatch(i, node.version) }) if (matched.length === 0) { if (context.ignoreUnknownVersions) { return [] } else { - throw new BrowserslistError('Unknown version ' + version + ' of Node.js') + throw new BrowserslistError( + 'Unknown version ' + node.version + ' of Node.js' + ) } } return ['node ' + matched[matched.length - 1]] } -function sinceQuery(context, year, month, date) { - year = parseInt(year) - month = parseInt(month || '01') - 1 - date = parseInt(date || '01') - return filterByYear(Date.UTC(year, month, date, 0, 0, 0), context) +function sinceQuery(context, node) { + var year = parseInt(node.year) + var month = parseInt(node.month || '01') - 1 + var day = parseInt(node.day || '01') + return filterByYear(Date.UTC(year, month, day, 0, 0, 0), context) } -function coverQuery(context, coverage, statMode) { - coverage = parseFloat(coverage) +function coverQuery(context, node) { + var coverage = parseFloat(node.coverage) var usage = browserslist.usage.global - if (statMode) { - if (statMode.match(/^my\s+stats$/i)) { + if (node.place) { + if (node.place.match(/^my\s+stats$/i)) { if (!context.customUsage) { throw new BrowserslistError('Custom usage statistics was not provided') } usage = context.customUsage } else { var place - if (statMode.length === 2) { - place = statMode.toUpperCase() + if (node.place.length === 2) { + place = node.place.toUpperCase() } else { - place = statMode.toLowerCase() + place = node.place.toLowerCase() } env.loadCountry(browserslist.usage, place, browserslist.data) usage = browserslist.usage[place] @@ -673,98 +579,109 @@ function coverQuery(context, coverage, statMode) { return result } -var QUERIES = [ - { +var QUERIES = { + last_major_versions: { + matches: ['versions'], regexp: /^last\s+(\d+)\s+major\s+versions?$/i, - select: function (context, versions) { + select: function (context, node) { return Object.keys(agents).reduce(function (selected, name) { var data = byName(name, context) if (!data) return selected - var list = getMajorVersions(data.released, versions) + var list = getMajorVersions(data.released, node.versions) list = list.map(nameMapper(data.name)) if (data.name === 'android') { - list = filterAndroid(list, versions, context) + list = filterAndroid(list, node.versions, context) } return selected.concat(list) }, []) } }, - { + last_versions: { + matches: ['versions'], regexp: /^last\s+(\d+)\s+versions?$/i, - select: function (context, versions) { + select: function (context, node) { return Object.keys(agents).reduce(function (selected, name) { var data = byName(name, context) if (!data) return selected - var list = data.released.slice(-versions) + var list = data.released.slice(-node.versions) list = list.map(nameMapper(data.name)) if (data.name === 'android') { - list = filterAndroid(list, versions, context) + list = filterAndroid(list, node.versions, context) } return selected.concat(list) }, []) } }, - { + last_electron_major_versions: { + matches: ['versions'], regexp: /^last\s+(\d+)\s+electron\s+major\s+versions?$/i, - select: function (context, versions) { - var validVersions = getMajorVersions(Object.keys(e2c), versions) + select: function (context, node) { + var validVersions = getMajorVersions(Object.keys(e2c), node.versions) return validVersions.map(function (i) { return 'chrome ' + e2c[i] }) } }, - { + last_node_major_versions: { + matches: ['versions'], regexp: /^last\s+(\d+)\s+node\s+major\s+versions?$/i, - select: function (context, versions) { - return getMajorVersions(browserslist.nodeVersions, versions).map( + select: function (context, node) { + return getMajorVersions(browserslist.nodeVersions, node.versions).map( function (version) { return 'node ' + version } ) } }, - { + last_browser_major_versions: { + matches: ['versions', 'browser'], regexp: /^last\s+(\d+)\s+(\w+)\s+major\s+versions?$/i, - select: function (context, versions, name) { - var data = checkName(name, context) - var validVersions = getMajorVersions(data.released, versions) + select: function (context, node) { + var data = checkName(node.browser, context) + var validVersions = getMajorVersions(data.released, node.versions) var list = validVersions.map(nameMapper(data.name)) if (data.name === 'android') { - list = filterAndroid(list, versions, context) + list = filterAndroid(list, node.versions, context) } return list } }, - { + last_electron_versions: { + matches: ['versions'], regexp: /^last\s+(\d+)\s+electron\s+versions?$/i, - select: function (context, versions) { + select: function (context, node) { return Object.keys(e2c) - .slice(-versions) + .slice(-node.versions) .map(function (i) { return 'chrome ' + e2c[i] }) } }, - { + last_node_versions: { + matches: ['versions'], regexp: /^last\s+(\d+)\s+node\s+versions?$/i, - select: function (context, versions) { - return browserslist.nodeVersions.slice(-versions).map(function (version) { - return 'node ' + version - }) + select: function (context, node) { + return browserslist.nodeVersions + .slice(-node.versions) + .map(function (version) { + return 'node ' + version + }) } }, - { + last_browser_versions: { + matches: ['versions', 'browser'], regexp: /^last\s+(\d+)\s+(\w+)\s+versions?$/i, - select: function (context, versions, name) { - var data = checkName(name, context) - var list = data.released.slice(-versions).map(nameMapper(data.name)) + select: function (context, node) { + var data = checkName(node.browser, context) + var list = data.released.slice(-node.versions).map(nameMapper(data.name)) if (data.name === 'android') { - list = filterAndroid(list, versions, context) + list = filterAndroid(list, node.versions, context) } return list } }, - { + unreleased_versions: { + matches: [], regexp: /^unreleased\s+versions$/i, select: function (context) { return Object.keys(agents).reduce(function (selected, name) { @@ -778,16 +695,18 @@ var QUERIES = [ }, []) } }, - { + unreleased_electron_versions: { + matches: [], regexp: /^unreleased\s+electron\s+versions?$/i, select: function () { return [] } }, - { + unreleased_browser_versions: { + matches: ['browser'], regexp: /^unreleased\s+(\w+)\s+versions?$/i, - select: function (context, name) { - var data = checkName(name, context) + select: function (context, node) { + var data = checkName(node.browser, context) return data.versions .filter(function (v) { return data.released.indexOf(v) === -1 @@ -795,39 +714,44 @@ var QUERIES = [ .map(nameMapper(data.name)) } }, - { + last_years: { + matches: ['years'], regexp: /^last\s+(\d*.?\d+)\s+years?$/i, - select: function (context, years) { - return filterByYear(Date.now() - YEAR * years, context) + select: function (context, node) { + return filterByYear(Date.now() - YEAR * node.years, context) } }, - { + since_y: { + matches: ['year'], regexp: /^since (\d+)$/i, select: sinceQuery }, - { + since_y_m: { + matches: ['year', 'month'], regexp: /^since (\d+)-(\d+)$/i, select: sinceQuery }, - { + since_y_m_d: { + matches: ['year', 'month', 'day'], regexp: /^since (\d+)-(\d+)-(\d+)$/i, select: sinceQuery }, - { + popularity: { + matches: ['sign', 'popularity'], regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%$/, - select: function (context, sign, popularity) { - popularity = parseFloat(popularity) + select: function (context, node) { + var popularity = parseFloat(node.popularity) var usage = browserslist.usage.global return Object.keys(usage).reduce(function (result, version) { - if (sign === '>') { + if (node.sign === '>') { if (usage[version] > popularity) { result.push(version) } - } else if (sign === '<') { + } else if (node.sign === '<') { if (usage[version] < popularity) { result.push(version) } - } else if (sign === '<=') { + } else if (node.sign === '<=') { if (usage[version] <= popularity) { result.push(version) } @@ -838,10 +762,11 @@ var QUERIES = [ }, []) } }, - { + popularity_in_my_stats: { + matches: ['sign', 'popularity'], regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+my\s+stats$/, - select: function (context, sign, popularity) { - popularity = parseFloat(popularity) + select: function (context, node) { + var popularity = parseFloat(node.popularity) if (!context.customUsage) { throw new BrowserslistError('Custom usage statistics was not provided') } @@ -852,15 +777,15 @@ var QUERIES = [ return result } - if (sign === '>') { + if (node.sign === '>') { if (percentage > popularity) { result.push(version) } - } else if (sign === '<') { + } else if (node.sign === '<') { if (percentage < popularity) { result.push(version) } - } else if (sign === '<=') { + } else if (node.sign === '<=') { if (percentage <= popularity) { result.push(version) } @@ -871,11 +796,12 @@ var QUERIES = [ }, []) } }, - { + popularity_in_config_stats: { + matches: ['sign', 'popularity', 'config'], regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+(\S+)\s+stats$/, - select: function (context, sign, popularity, name) { - popularity = parseFloat(popularity) - var stats = env.loadStat(context, name, browserslist.data) + select: function (context, node) { + var popularity = parseFloat(node.popularity) + var stats = env.loadStat(context, node.config, browserslist.data) if (stats) { context.customUsage = {} for (var browser in stats) { @@ -892,15 +818,15 @@ var QUERIES = [ return result } - if (sign === '>') { + if (node.sign === '>') { if (percentage > popularity) { result.push(version) } - } else if (sign === '<') { + } else if (node.sign === '<') { if (percentage < popularity) { result.push(version) } - } else if (sign === '<=') { + } else if (node.sign === '<=') { if (percentage <= popularity) { result.push(version) } @@ -911,10 +837,12 @@ var QUERIES = [ }, []) } }, - { + popularity_in_place: { + matches: ['sign', 'popularity', 'place'], regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+((alt-)?\w\w)$/, - select: function (context, sign, popularity, place) { - popularity = parseFloat(popularity) + select: function (context, node) { + var popularity = parseFloat(node.popularity) + var place = node.place if (place.length === 2) { place = place.toUpperCase() } else { @@ -928,15 +856,15 @@ var QUERIES = [ return result } - if (sign === '>') { + if (node.sign === '>') { if (percentage > popularity) { result.push(version) } - } else if (sign === '<') { + } else if (node.sign === '<') { if (percentage < popularity) { result.push(version) } - } else if (sign === '<=') { + } else if (node.sign === '<=') { if (percentage <= popularity) { result.push(version) } @@ -947,19 +875,22 @@ var QUERIES = [ }, []) } }, - { + cover: { + matches: ['coverage'], regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/i, select: coverQuery }, - { + cover_in: { + matches: ['coverage', 'place'], regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i, select: coverQuery }, - { + supports: { + matches: ['feature'], regexp: /^supports\s+([\w-]+)$/, - select: function (context, feature) { - env.loadFeature(browserslist.cache, feature) - var features = browserslist.cache[feature] + select: function (context, node) { + env.loadFeature(browserslist.cache, node.feature) + var features = browserslist.cache[node.feature] return Object.keys(features).reduce(function (result, version) { var flags = features[version] if (flags.indexOf('y') >= 0 || flags.indexOf('a') >= 0) { @@ -969,19 +900,20 @@ var QUERIES = [ }, []) } }, - { + electron_range: { + matches: ['from', 'to'], regexp: /^electron\s+([\d.]+)\s*-\s*([\d.]+)$/i, - select: function (context, from, to) { - var fromToUse = normalizeElectron(from) - var toToUse = normalizeElectron(to) + select: function (context, node) { + var fromToUse = normalizeElectron(node.from) + var toToUse = normalizeElectron(node.to) + var from = parseFloat(node.from) + var to = parseFloat(node.to) if (!e2c[fromToUse]) { throw new BrowserslistError('Unknown version ' + from + ' of electron') } if (!e2c[toToUse]) { throw new BrowserslistError('Unknown version ' + to + ' of electron') } - from = parseFloat(from) - to = parseFloat(to) return Object.keys(e2c) .filter(function (i) { var parsed = parseFloat(i) @@ -992,23 +924,25 @@ var QUERIES = [ }) } }, - { + node_range: { + matches: ['from', 'to'], regexp: /^node\s+([\d.]+)\s*-\s*([\d.]+)$/i, - select: function (context, from, to) { + select: function (context, node) { return browserslist.nodeVersions - .filter(semverFilterLoose('>=', from)) - .filter(semverFilterLoose('<=', to)) + .filter(semverFilterLoose('>=', node.from)) + .filter(semverFilterLoose('<=', node.to)) .map(function (v) { return 'node ' + v }) } }, - { + browser_range: { + matches: ['browser', 'from', 'to'], regexp: /^(\w+)\s+([\d.]+)\s*-\s*([\d.]+)$/i, - select: function (context, name, from, to) { - var data = checkName(name, context) - from = parseFloat(normalizeVersion(data, from) || from) - to = parseFloat(normalizeVersion(data, to) || to) + select: function (context, node) { + var data = checkName(node.browser, context) + var from = parseFloat(normalizeVersion(data, node.from) || node.from) + var to = parseFloat(normalizeVersion(data, node.to) || node.to) function filter(v) { var parsed = parseFloat(v) return parsed >= from && parsed <= to @@ -1016,86 +950,96 @@ var QUERIES = [ return data.released.filter(filter).map(nameMapper(data.name)) } }, - { + electron_ray: { + matches: ['sign', 'version'], regexp: /^electron\s*(>=?|<=?)\s*([\d.]+)$/i, - select: function (context, sign, version) { - var versionToUse = normalizeElectron(version) + select: function (context, node) { + var versionToUse = normalizeElectron(node.version) return Object.keys(e2c) - .filter(generateFilter(sign, versionToUse)) + .filter(generateFilter(node.sign, versionToUse)) .map(function (i) { return 'chrome ' + e2c[i] }) } }, - { + node_ray: { + matches: ['sign', 'version'], regexp: /^node\s*(>=?|<=?)\s*([\d.]+)$/i, - select: function (context, sign, version) { + select: function (context, node) { return browserslist.nodeVersions - .filter(generateSemverFilter(sign, version)) + .filter(generateSemverFilter(node.sign, node.version)) .map(function (v) { return 'node ' + v }) } }, - { + browser_ray: { + matches: ['browser', 'sign', 'version'], regexp: /^(\w+)\s*(>=?|<=?)\s*([\d.]+)$/, - select: function (context, name, sign, version) { - var data = checkName(name, context) + select: function (context, node) { + var version = node.version + var data = checkName(node.browser, context) var alias = browserslist.versionAliases[data.name][version] - if (alias) { - version = alias - } + if (alias) version = alias return data.released - .filter(generateFilter(sign, version)) + .filter(generateFilter(node.sign, version)) .map(function (v) { return data.name + ' ' + v }) } }, - { + firefox_esr: { + matches: [], regexp: /^(firefox|ff|fx)\s+esr$/i, select: function () { - return ['firefox 91'] + return ['firefox 91', 'firefox 102'] } }, - { + opera_mini_all: { + matches: [], regexp: /(operamini|op_mini)\s+all/i, select: function () { return ['op_mini all'] } }, - { + electron_version: { + matches: ['version'], regexp: /^electron\s+([\d.]+)$/i, - select: function (context, version) { - var versionToUse = normalizeElectron(version) + select: function (context, node) { + var versionToUse = normalizeElectron(node.version) var chrome = e2c[versionToUse] if (!chrome) { throw new BrowserslistError( - 'Unknown version ' + version + ' of electron' + 'Unknown version ' + node.version + ' of electron' ) } return ['chrome ' + chrome] } }, - { + node_major_version: { + matches: ['version'], regexp: /^node\s+(\d+)$/i, select: nodeQuery }, - { + node_minor_version: { + matches: ['version'], regexp: /^node\s+(\d+\.\d+)$/i, select: nodeQuery }, - { + node_patch_version: { + matches: ['version'], regexp: /^node\s+(\d+\.\d+\.\d+)$/i, select: nodeQuery }, - { + current_node: { + matches: [], regexp: /^current\s+node$/i, select: function (context) { return [env.currentNode(resolve, context)] } }, - { + maintained_node: { + matches: [], regexp: /^maintained\s+node\s+versions$/i, select: function (context) { var now = Date.now() @@ -1113,23 +1057,27 @@ var QUERIES = [ return resolve(queries, context) } }, - { + phantomjs_1_9: { + matches: [], regexp: /^phantomjs\s+1.9$/i, select: function () { return ['safari 5'] } }, - { + phantomjs_2_1: { + matches: [], regexp: /^phantomjs\s+2.1$/i, select: function () { return ['safari 6'] } }, - { + browser_version: { + matches: ['browser', 'version'], regexp: /^(\w+)\s+(tp|[\d.]+)$/i, - select: function (context, name, version) { + select: function (context, node) { + var version = node.version if (/^tp$/i.test(version)) version = 'TP' - var data = checkName(name, context) + var data = checkName(node.browser, context) var alias = normalizeVersion(data, version) if (alias) { version = alias @@ -1146,36 +1094,41 @@ var QUERIES = [ return [] } else { throw new BrowserslistError( - 'Unknown version ' + version + ' of ' + name + 'Unknown version ' + version + ' of ' + node.browser ) } } return [data.name + ' ' + version] } }, - { + browserslist_config: { + matches: [], regexp: /^browserslist config$/i, select: function (context) { return browserslist(undefined, context) } }, - { + extends: { + matches: ['config'], regexp: /^extends (.+)$/i, - select: function (context, name) { - return resolve(env.loadQueries(context, name), context) + select: function (context, node) { + return resolve(env.loadQueries(context, node.config), context) } }, - { + defaults: { + matches: [], regexp: /^defaults$/i, select: function (context) { return resolve(browserslist.defaults, context) } }, - { + dead: { + matches: [], regexp: /^dead$/i, select: function (context) { var dead = [ - 'ie <= 10', + 'Baidu >= 0', + 'ie <= 11', 'ie_mob <= 11', 'bb <= 10', 'op_mob <= 12.1', @@ -1184,19 +1137,20 @@ var QUERIES = [ return resolve(dead, context) } }, - { + unknown: { + matches: [], regexp: /^(\w+)$/i, - select: function (context, name) { - if (byName(name, context)) { + select: function (context, node) { + if (byName(node.query, context)) { throw new BrowserslistError( - 'Specify versions in Browserslist query for browser ' + name + 'Specify versions in Browserslist query for browser ' + node.query ) } else { - throw unknownQuery(name) + throw unknownQuery(node.query) } } } -] +} // Get and convert Can I Use data diff --git a/tools/node_modules/eslint/node_modules/browserslist/node.js b/tools/node_modules/eslint/node_modules/browserslist/node.js index 8eb6b650421ede..5db06a673fe900 100644 --- a/tools/node_modules/eslint/node_modules/browserslist/node.js +++ b/tools/node_modules/eslint/node_modules/browserslist/node.js @@ -94,7 +94,12 @@ function pickEnv(config, opts) { } function parsePackage(file) { - var config = JSON.parse(fs.readFileSync(file)) + var config = JSON.parse( + fs + .readFileSync(file) + .toString() + .replace(/^\uFEFF/m, '') + ) if (config.browserlist && !config.browserslist) { throw new BrowserslistError( '`browserlist` key instead of `browserslist` in ' + file @@ -380,9 +385,9 @@ module.exports = { if (latest !== 0 && latest < halfYearAgo) { console.warn( 'Browserslist: caniuse-lite is outdated. Please run:\n' + - ' npx browserslist@latest --update-db\n' + + ' npx update-browserslist-db@latest\n' + ' Why you should do it regularly: ' + - 'https://github.com/browserslist/browserslist#browsers-data-updating' + 'https://github.com/browserslist/update-db#readme' ) } }, diff --git a/tools/node_modules/eslint/node_modules/browserslist/package.json b/tools/node_modules/eslint/node_modules/browserslist/package.json index dee90574c0f159..8bf072d758e6a4 100644 --- a/tools/node_modules/eslint/node_modules/browserslist/package.json +++ b/tools/node_modules/eslint/node_modules/browserslist/package.json @@ -1,25 +1,30 @@ { "name": "browserslist", - "version": "4.20.0", + "version": "4.21.2", "description": "Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-env-preset", "keywords": [ "caniuse", "browsers", "target" ], - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "author": "Andrey Sitnik ", "license": "MIT", "repository": "browserslist/browserslist", "dependencies": { - "caniuse-lite": "^1.0.30001313", - "electron-to-chromium": "^1.4.76", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001366", + "electron-to-chromium": "^1.4.188", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.4" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" diff --git a/tools/node_modules/eslint/node_modules/browserslist/parse.js b/tools/node_modules/eslint/node_modules/browserslist/parse.js new file mode 100644 index 00000000000000..56b534ab4c9cd0 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/browserslist/parse.js @@ -0,0 +1,78 @@ +var AND_REGEXP = /^\s+and\s+(.*)/i +var OR_REGEXP = /^(?:,\s*|\s+or\s+)(.*)/i + +function flatten(array) { + if (!Array.isArray(array)) return [array] + return array.reduce(function (a, b) { + return a.concat(flatten(b)) + }, []) +} + +function find(string, predicate) { + for (var n = 1, max = string.length; n <= max; n++) { + var parsed = string.substr(-n, n) + if (predicate(parsed, n, max)) { + return string.slice(0, -n) + } + } + return '' +} + +function matchQuery(all, query) { + var node = { query: query } + if (query.indexOf('not ') === 0) { + node.not = true + query = query.slice(4) + } + + for (var name in all) { + var type = all[name] + var match = query.match(type.regexp) + if (match) { + node.type = name + for (var i = 0; i < type.matches.length; i++) { + node[type.matches[i]] = match[i + 1] + } + return node + } + } + + node.type = 'unknown' + return node +} + +function matchBlock(all, string, qs) { + var node + return find(string, function (parsed, n, max) { + if (AND_REGEXP.test(parsed)) { + node = matchQuery(all, parsed.match(AND_REGEXP)[1]) + node.compose = 'and' + qs.unshift(node) + return true + } else if (OR_REGEXP.test(parsed)) { + node = matchQuery(all, parsed.match(OR_REGEXP)[1]) + node.compose = 'or' + qs.unshift(node) + return true + } else if (n === max) { + node = matchQuery(all, parsed.trim()) + node.compose = 'or' + qs.unshift(node) + return true + } + return false + }) +} + +module.exports = function parse(all, queries) { + if (!Array.isArray(queries)) queries = [queries] + return flatten( + queries.map(function (block) { + var qs = [] + do { + block = matchBlock(all, block, qs) + } while (block) + return qs + }) + ) +} diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/agents.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/agents.js index 481539603be725..69a471596b1e53 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/agents.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/agents.js @@ -1 +1 @@ -module.exports={A:{A:{J:0.0131217,D:0.00621152,E:0.0395479,F:0.0593219,A:0.0263653,B:0.619584,rB:0.009298},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","rB","J","D","E","F","A","B","","",""],E:"IE",F:{rB:962323200,J:998870400,D:1161129600,E:1237420800,F:1300060800,A:1346716800,B:1381968000}},B:{A:{C:0.008322,K:0.004267,L:0.004268,G:0.012483,M:0.004161,N:0.012483,O:0.074898,P:0,Q:0.004298,R:0.00944,S:0.004043,V:0.004161,W:0.008322,X:0.004161,Y:0.008322,Z:0.004318,a:0.008322,b:0.004161,c:0.004161,d:0.012483,e:0.004161,f:0.008322,g:0.029127,T:0.049932,h:0.853005,H:2.98344,i:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","C","K","L","G","M","N","O","P","Q","R","S","V","W","X","Y","Z","a","b","c","d","e","f","g","T","h","H","i","","",""],E:"Edge",F:{C:1438128000,K:1447286400,L:1470096000,G:1491868800,M:1508198400,N:1525046400,O:1542067200,P:1579046400,Q:1581033600,R:1586736000,S:1590019200,V:1594857600,W:1598486400,X:1602201600,Y:1605830400,Z:1611360000,a:1614816000,b:1618358400,c:1622073600,d:1626912000,e:1630627200,f:1632441600,g:1634774400,T:1637539200,h:1641427200,H:1643932800,i:1646265600},D:{C:"ms",K:"ms",L:"ms",G:"ms",M:"ms",N:"ms",O:"ms"}},C:{A:{"0":0.009076,"1":0.004161,"2":0.004783,"3":0.004271,"4":0.004783,"5":0.00487,"6":0.005029,"7":0.0047,"8":0.04161,"9":0.008322,sB:0.008322,hB:0.004271,I:0.016644,j:0.004879,J:0.020136,D:0.005725,E:0.004525,F:0.00533,A:0.004283,B:0.004318,C:0.004471,K:0.004486,L:0.00453,G:0.008322,M:0.004417,N:0.004425,O:0.004161,k:0.004443,l:0.004283,m:0.008322,n:0.013698,o:0.004161,p:0.008786,q:0.012483,r:0.004317,s:0.004393,t:0.004418,u:0.008834,v:0.008322,w:0.008928,x:0.004471,y:0.009284,z:0.004707,AB:0.004356,BB:0.004525,CB:0.004293,DB:0.004161,EB:0.004538,FB:0.008282,GB:0.008322,HB:0.062415,IB:0.004335,JB:0.008586,KB:0.008322,LB:0.008322,MB:0.004425,NB:0.004356,iB:0.004161,OB:0.008322,jB:0.004356,PB:0.004425,QB:0.008322,U:0.00415,RB:0.004267,SB:0.008712,TB:0.004267,UB:0.008322,VB:0.00415,WB:0.004293,XB:0.004425,YB:0.008322,ZB:0.00415,aB:0.00415,bB:0.004318,cB:0.004356,dB:0.004161,eB:0.058254,P:0.008322,Q:0.004161,R:0.016644,kB:0.004161,S:0.004161,V:0.012483,W:0.004268,X:0.004161,Y:0.012483,Z:0.012483,a:0.012483,b:0.020805,c:0.099864,d:0.008322,e:0.012483,f:0.045771,g:0.045771,T:1.16508,h:2.02641,H:0.016644,i:0,tB:0.008786,uB:0.00487},B:"moz",C:["sB","hB","tB","uB","I","j","J","D","E","F","A","B","C","K","L","G","M","N","O","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","iB","OB","jB","PB","QB","U","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","P","Q","R","kB","S","V","W","X","Y","Z","a","b","c","d","e","f","g","T","h","H","i",""],E:"Firefox",F:{"0":1421107200,"1":1424736000,"2":1428278400,"3":1431475200,"4":1435881600,"5":1439251200,"6":1442880000,"7":1446508800,"8":1450137600,"9":1453852800,sB:1161648000,hB:1213660800,tB:1246320000,uB:1264032000,I:1300752000,j:1308614400,J:1313452800,D:1317081600,E:1317081600,F:1320710400,A:1324339200,B:1327968000,C:1331596800,K:1335225600,L:1338854400,G:1342483200,M:1346112000,N:1349740800,O:1353628800,k:1357603200,l:1361232000,m:1364860800,n:1368489600,o:1372118400,p:1375747200,q:1379376000,r:1386633600,s:1391472000,t:1395100800,u:1398729600,v:1402358400,w:1405987200,x:1409616000,y:1413244800,z:1417392000,AB:1457395200,BB:1461628800,CB:1465257600,DB:1470096000,EB:1474329600,FB:1479168000,GB:1485216000,HB:1488844800,IB:1492560000,JB:1497312000,KB:1502150400,LB:1506556800,MB:1510617600,NB:1516665600,iB:1520985600,OB:1525824000,jB:1529971200,PB:1536105600,QB:1540252800,U:1544486400,RB:1548720000,SB:1552953600,TB:1558396800,UB:1562630400,VB:1567468800,WB:1571788800,XB:1575331200,YB:1578355200,ZB:1581379200,aB:1583798400,bB:1586304000,cB:1588636800,dB:1591056000,eB:1593475200,P:1595894400,Q:1598313600,R:1600732800,kB:1603152000,S:1605571200,V:1607990400,W:1611619200,X:1614038400,Y:1616457600,Z:1618790400,a:1622505600,b:1626134400,c:1628553600,d:1630972800,e:1633392000,f:1635811200,g:1638835200,T:1641859200,h:1644364800,H:null,i:null}},D:{A:{"0":0.016644,"1":0.004335,"2":0.004464,"3":0.020805,"4":0.004464,"5":0.012483,"6":0.0236,"7":0.004293,"8":0.008322,"9":0.004465,I:0.004706,j:0.004879,J:0.004879,D:0.005591,E:0.005591,F:0.005591,A:0.004534,B:0.004464,C:0.010424,K:0.0083,L:0.004706,G:0.015087,M:0.004393,N:0.004393,O:0.008652,k:0.008322,l:0.004393,m:0.004317,n:0.008322,o:0.008786,p:0.016644,q:0.004461,r:0.004141,s:0.004326,t:0.0047,u:0.004538,v:0.008322,w:0.008596,x:0.004566,y:0.008322,z:0.008322,AB:0.004642,BB:0.004891,CB:0.008322,DB:0.020805,EB:0.070737,FB:0.004293,GB:0.008322,HB:0.004161,IB:0.012483,JB:0.008322,KB:0.012483,LB:0.054093,MB:0.004161,NB:0.004161,iB:0.004161,OB:0.020805,jB:0.004161,PB:0.008322,QB:0.008322,U:0.020805,RB:0.012483,SB:0.020805,TB:0.012483,UB:0.008322,VB:0.054093,WB:0.049932,XB:0.016644,YB:0.091542,ZB:0.008322,aB:0.024966,bB:0.062415,cB:0.058254,dB:0.016644,eB:0.037449,P:0.212211,Q:0.058254,R:0.037449,S:0.104025,V:0.066576,W:0.070737,X:0.070737,Y:0.128991,Z:0.037449,a:0.062415,b:0.049932,c:0.112347,d:0.099864,e:0.262143,f:0.174762,g:0.099864,T:0.649116,h:7.14028,H:15.533,i:0.016644,vB:0.020805,wB:0.004161,xB:0},B:"webkit",C:["","","","I","j","J","D","E","F","A","B","C","K","L","G","M","N","O","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","iB","OB","jB","PB","QB","U","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","P","Q","R","S","V","W","X","Y","Z","a","b","c","d","e","f","g","T","h","H","i","vB","wB","xB"],E:"Chrome",F:{"0":1400544000,"1":1405468800,"2":1409011200,"3":1412640000,"4":1416268800,"5":1421798400,"6":1425513600,"7":1429401600,"8":1432080000,"9":1437523200,I:1264377600,j:1274745600,J:1283385600,D:1287619200,E:1291248000,F:1296777600,A:1299542400,B:1303862400,C:1307404800,K:1312243200,L:1316131200,G:1316131200,M:1319500800,N:1323734400,O:1328659200,k:1332892800,l:1337040000,m:1340668800,n:1343692800,o:1348531200,p:1352246400,q:1357862400,r:1361404800,s:1364428800,t:1369094400,u:1374105600,v:1376956800,w:1384214400,x:1389657600,y:1392940800,z:1397001600,AB:1441152000,BB:1444780800,CB:1449014400,DB:1453248000,EB:1456963200,FB:1460592000,GB:1464134400,HB:1469059200,IB:1472601600,JB:1476230400,KB:1480550400,LB:1485302400,MB:1489017600,NB:1492560000,iB:1496707200,OB:1500940800,jB:1504569600,PB:1508198400,QB:1512518400,U:1516752000,RB:1520294400,SB:1523923200,TB:1527552000,UB:1532390400,VB:1536019200,WB:1539648000,XB:1543968000,YB:1548720000,ZB:1552348800,aB:1555977600,bB:1559606400,cB:1564444800,dB:1568073600,eB:1571702400,P:1575936000,Q:1580860800,R:1586304000,S:1589846400,V:1594684800,W:1598313600,X:1601942400,Y:1605571200,Z:1611014400,a:1614556800,b:1618272000,c:1621987200,d:1626739200,e:1630368000,f:1632268800,g:1634601600,T:1637020800,h:1641340800,H:1643673600,i:1646092800,vB:null,wB:null,xB:null}},E:{A:{I:0,j:0.008322,J:0.004656,D:0.004465,E:0.004356,F:0.004891,A:0.004425,B:0.004318,C:0.004161,K:0.049932,L:0.237177,G:0.145635,yB:0,lB:0.008692,zB:0.012483,"0B":0.00456,"1B":0.004283,"2B":0.016644,mB:0.012483,fB:0.029127,gB:0.058254,"3B":0.478515,"4B":0.877971,"5B":0.420261,nB:0.936225,oB:0.012483,"6B":0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","yB","lB","I","j","zB","J","0B","D","1B","E","F","2B","A","mB","B","fB","C","gB","K","3B","L","4B","G","5B","nB","oB","6B",""],E:"Safari",F:{yB:1205798400,lB:1226534400,I:1244419200,j:1275868800,zB:1311120000,J:1343174400,"0B":1382400000,D:1382400000,"1B":1410998400,E:1413417600,F:1443657600,"2B":1458518400,A:1474329600,mB:1490572800,B:1505779200,fB:1522281600,C:1537142400,gB:1553472000,K:1568851200,"3B":1585008000,L:1600214400,"4B":1619395200,G:1632096000,"5B":1635292800,nB:1639353600,oB:null,"6B":null}},F:{A:{"0":0.004879,"1":0.004161,"2":0.004283,"3":0.004367,"4":0.004534,"5":0.008322,"6":0.004227,"7":0.004418,"8":0.004161,"9":0.004227,F:0.0082,B:0.016581,C:0.004317,G:0.00685,M:0.00685,N:0.00685,O:0.005014,k:0.006015,l:0.004879,m:0.006597,n:0.006597,o:0.013434,p:0.006702,q:0.006015,r:0.005595,s:0.004393,t:0.004161,u:0.004879,v:0.004879,w:0.004161,x:0.005152,y:0.005014,z:0.009758,AB:0.004725,BB:0.008322,CB:0.008942,DB:0.004707,EB:0.004827,FB:0.004707,GB:0.004707,HB:0.004326,IB:0.008922,JB:0.014349,KB:0.004425,LB:0.00472,MB:0.004425,NB:0.004425,OB:0.00472,PB:0.004532,QB:0.004566,U:0.02283,RB:0.00867,SB:0.004656,TB:0.004642,UB:0.004318,VB:0.00944,WB:0.004293,XB:0.004293,YB:0.004298,ZB:0.096692,aB:0.004201,bB:0.004141,cB:0.004257,dB:0.004161,eB:0.004356,P:0.004161,Q:0.004161,R:0.008514,kB:0.228855,S:0.786429,"7B":0.00685,"8B":0.004161,"9B":0.008392,AC:0.004706,fB:0.006229,pB:0.004879,BC:0.008786,gB:0.00472},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","F","7B","8B","9B","AC","B","fB","pB","BC","C","gB","G","M","N","O","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","U","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","P","Q","R","kB","S","","",""],E:"Opera",F:{"0":1454371200,"1":1457308800,"2":1462320000,"3":1465344000,"4":1470096000,"5":1474329600,"6":1477267200,"7":1481587200,"8":1486425600,"9":1490054400,F:1150761600,"7B":1223424000,"8B":1251763200,"9B":1267488000,AC:1277942400,B:1292457600,fB:1302566400,pB:1309219200,BC:1323129600,C:1323129600,gB:1352073600,G:1372723200,M:1377561600,N:1381104000,O:1386288000,k:1390867200,l:1393891200,m:1399334400,n:1401753600,o:1405987200,p:1409616000,q:1413331200,r:1417132800,s:1422316800,t:1425945600,u:1430179200,v:1433808000,w:1438646400,x:1442448000,y:1445904000,z:1449100800,AB:1494374400,BB:1498003200,CB:1502236800,DB:1506470400,EB:1510099200,FB:1515024000,GB:1517961600,HB:1521676800,IB:1525910400,JB:1530144000,KB:1534982400,LB:1537833600,MB:1543363200,NB:1548201600,OB:1554768000,PB:1561593600,QB:1566259200,U:1570406400,RB:1573689600,SB:1578441600,TB:1583971200,UB:1587513600,VB:1592956800,WB:1595894400,XB:1600128000,YB:1603238400,ZB:1613520000,aB:1612224000,bB:1616544000,cB:1619568000,dB:1623715200,eB:1627948800,P:1631577600,Q:1633392000,R:1635984000,kB:1638403200,S:1642550400},D:{F:"o",B:"o",C:"o","7B":"o","8B":"o","9B":"o",AC:"o",fB:"o",pB:"o",BC:"o",gB:"o"}},G:{A:{E:0,lB:0,CC:0,qB:0.00298579,DC:0.00447869,EC:0.122417,FC:0.0194077,GC:0.00746448,HC:0.0134361,IC:0.0836022,JC:0.0388153,KC:0.0955454,LC:0.0641945,MC:0.0373224,NC:0.0373224,OC:0.559836,PC:0.0373224,QC:0.0134361,RC:0.0761377,SC:0.244835,TC:0.777799,UC:2.77828,VC:2.12738,nB:7.74216,oB:0.0403082},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","lB","CC","qB","DC","EC","FC","E","GC","HC","IC","JC","KC","LC","MC","NC","OC","PC","QC","RC","SC","TC","UC","VC","nB","oB","",""],E:"Safari on iOS",F:{lB:1270252800,CC:1283904000,qB:1299628800,DC:1331078400,EC:1359331200,FC:1394409600,E:1410912000,GC:1413763200,HC:1442361600,IC:1458518400,JC:1473724800,KC:1490572800,LC:1505779200,MC:1522281600,NC:1537142400,OC:1553472000,PC:1568851200,QC:1572220800,RC:1580169600,SC:1585008000,TC:1600214400,UC:1619395200,VC:1632096000,nB:1639353600,oB:null}},H:{A:{WC:1.03373},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","WC","","",""],E:"Opera Mini",F:{WC:1426464000}},I:{A:{hB:0,I:0.0133463,H:0,XC:0,YC:0,ZC:0,aC:0.0133463,qB:0.0633949,bC:0,cC:0.260253},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","XC","YC","ZC","hB","I","aC","qB","bC","cC","H","","",""],E:"Android Browser",F:{XC:1256515200,YC:1274313600,ZC:1291593600,hB:1298332800,I:1318896000,aC:1341792000,qB:1374624000,bC:1386547200,cC:1401667200,H:1643673600}},J:{A:{D:0,A:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","D","A","","",""],E:"Blackberry Browser",F:{D:1325376000,A:1359504000}},K:{A:{A:0,B:0,C:0,U:0.0111391,fB:0,pB:0,gB:0},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","fB","pB","C","gB","U","","",""],E:"Opera Mobile",F:{A:1287100800,B:1300752000,fB:1314835200,pB:1318291200,C:1330300800,gB:1349740800,U:1613433600},D:{U:"webkit"}},L:{A:{H:37.2095},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","H","","",""],E:"Chrome for Android",F:{H:1643673600}},M:{A:{T:0.280272},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","T","","",""],E:"Firefox for Android",F:{T:1641859200}},N:{A:{A:0.0115934,B:0.022664},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","","",""],E:"IE Mobile",F:{A:1340150400,B:1353456000}},O:{A:{dC:0.864172},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","dC","","",""],E:"UC Browser for Android",F:{dC:1471392000},D:{dC:"webkit"}},P:{A:{I:0.218332,eC:0.0103543,fC:0.010304,gC:0.0727775,hC:0.0103584,iC:0.0311903,mB:0.0105043,jC:0.0727775,kC:0.0311903,lC:0.103968,mC:0.114365,nC:0.145555,oC:2.10015},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","I","eC","fC","gC","hC","iC","mB","jC","kC","lC","mC","nC","oC","","",""],E:"Samsung Internet",F:{I:1461024000,eC:1481846400,fC:1509408000,gC:1528329600,hC:1546128000,iC:1554163200,mB:1567900800,jC:1582588800,kC:1593475200,lC:1605657600,mC:1618531200,nC:1629072000,oC:1640736000}},Q:{A:{pC:0.169331},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","pC","","",""],E:"QQ Browser",F:{pC:1589846400}},R:{A:{qC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","qC","","",""],E:"Baidu Browser",F:{qC:1491004800}},S:{A:{rC:0.099263},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","rC","","",""],E:"KaiOS Browser",F:{rC:1527811200}}}; +module.exports={A:{A:{J:0.0131217,D:0.00621152,E:0.0145876,F:0.0364691,A:0.00556471,B:0.488685,yB:0.009298},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","yB","J","D","E","F","A","B","","",""],E:"IE",F:{yB:962323200,J:998870400,D:1161129600,E:1237420800,F:1300060800,A:1346716800,B:1381968000}},B:{A:{C:0.003801,K:0.004267,L:0.004268,G:0.003801,M:0.003801,N:0.007602,O:0.022806,P:0,Q:0.004298,R:0.00944,S:0.004043,T:0.003801,U:0.007602,V:0.003801,W:0.003801,Z:0.004318,a:0.007602,b:0.004118,c:0.003939,d:0.007602,e:0.004118,f:0.003939,g:0.003801,h:0.007602,i:0.007602,j:0.011403,k:0.019005,l:0.034209,X:0.444717,m:2.86595,H:0.589155},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","C","K","L","G","M","N","O","P","Q","R","S","T","U","V","W","Z","a","b","c","d","e","f","g","h","i","j","k","l","X","m","H","","",""],E:"Edge",F:{C:1438128000,K:1447286400,L:1470096000,G:1491868800,M:1508198400,N:1525046400,O:1542067200,P:1579046400,Q:1581033600,R:1586736000,S:1590019200,T:1594857600,U:1598486400,V:1602201600,W:1605830400,Z:1611360000,a:1614816000,b:1618358400,c:1622073600,d:1626912000,e:1630627200,f:1632441600,g:1634774400,h:1637539200,i:1641427200,j:1643932800,k:1646265600,l:1649635200,X:1651190400,m:1653955200,H:1655942400},D:{C:"ms",K:"ms",L:"ms",G:"ms",M:"ms",N:"ms",O:"ms"}},C:{A:{"0":0.008928,"1":0.004471,"2":0.009284,"3":0.004707,"4":0.009076,"5":0.007602,"6":0.004783,"7":0.004271,"8":0.004783,"9":0.00487,zB:0.004118,mB:0.004271,I:0.019005,n:0.004879,J:0.020136,D:0.005725,E:0.004525,F:0.00533,A:0.004283,B:0.011403,C:0.004471,K:0.004486,L:0.00453,G:0.008322,M:0.004417,N:0.004425,O:0.004161,o:0.004443,p:0.004283,q:0.008322,r:0.013698,s:0.004161,t:0.008786,u:0.004118,v:0.004317,w:0.004393,x:0.004418,y:0.008834,z:0.008322,AB:0.005029,BB:0.0047,CB:0.019005,DB:0.007602,EB:0.003867,FB:0.004525,GB:0.004293,HB:0.003801,IB:0.004538,JB:0.008282,KB:0.011601,LB:0.060816,MB:0.011601,NB:0.007602,OB:0.003801,PB:0.007602,QB:0.011601,RB:0.003939,nB:0.003801,SB:0.003801,oB:0.004356,TB:0.004425,UB:0.008322,Y:0.00415,VB:0.004267,WB:0.003801,XB:0.004267,YB:0.007602,ZB:0.00415,aB:0.004293,bB:0.004425,cB:0.003801,dB:0.00415,eB:0.00415,fB:0.004318,gB:0.004356,hB:0.003801,iB:0.041811,P:0.003801,Q:0.003801,R:0.011403,pB:0.003801,S:0.003801,T:0.007602,U:0.004268,V:0.003801,W:0.011403,Z:0.011403,a:0.007602,b:0.007602,c:0.095025,d:0.003801,e:0.007602,f:0.022806,g:0.007602,h:0.007602,i:0.011403,j:0.015204,k:0.045612,l:0.288876,X:2.00313,m:0.083622,H:0,qB:0,"0B":0.008786,"1B":0.00487},B:"moz",C:["zB","mB","0B","1B","I","n","J","D","E","F","A","B","C","K","L","G","M","N","O","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","RB","nB","SB","oB","TB","UB","Y","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","iB","P","Q","R","pB","S","T","U","V","W","Z","a","b","c","d","e","f","g","h","i","j","k","l","X","m","H","qB",""],E:"Firefox",F:{"0":1405987200,"1":1409616000,"2":1413244800,"3":1417392000,"4":1421107200,"5":1424736000,"6":1428278400,"7":1431475200,"8":1435881600,"9":1439251200,zB:1161648000,mB:1213660800,"0B":1246320000,"1B":1264032000,I:1300752000,n:1308614400,J:1313452800,D:1317081600,E:1317081600,F:1320710400,A:1324339200,B:1327968000,C:1331596800,K:1335225600,L:1338854400,G:1342483200,M:1346112000,N:1349740800,O:1353628800,o:1357603200,p:1361232000,q:1364860800,r:1368489600,s:1372118400,t:1375747200,u:1379376000,v:1386633600,w:1391472000,x:1395100800,y:1398729600,z:1402358400,AB:1442880000,BB:1446508800,CB:1450137600,DB:1453852800,EB:1457395200,FB:1461628800,GB:1465257600,HB:1470096000,IB:1474329600,JB:1479168000,KB:1485216000,LB:1488844800,MB:1492560000,NB:1497312000,OB:1502150400,PB:1506556800,QB:1510617600,RB:1516665600,nB:1520985600,SB:1525824000,oB:1529971200,TB:1536105600,UB:1540252800,Y:1544486400,VB:1548720000,WB:1552953600,XB:1558396800,YB:1562630400,ZB:1567468800,aB:1571788800,bB:1575331200,cB:1578355200,dB:1581379200,eB:1583798400,fB:1586304000,gB:1588636800,hB:1591056000,iB:1593475200,P:1595894400,Q:1598313600,R:1600732800,pB:1603152000,S:1605571200,T:1607990400,U:1611619200,V:1614038400,W:1616457600,Z:1618790400,a:1622505600,b:1626134400,c:1628553600,d:1630972800,e:1633392000,f:1635811200,g:1638835200,h:1641859200,i:1644364800,j:1646697600,k:1649116800,l:1651536000,X:1653955200,m:1656374400,H:null,qB:null}},D:{A:{"0":0.008596,"1":0.004566,"2":0.004118,"3":0.007602,"4":0.003801,"5":0.004335,"6":0.004464,"7":0.019005,"8":0.003867,"9":0.011403,I:0.004706,n:0.004879,J:0.004879,D:0.005591,E:0.005591,F:0.005591,A:0.004534,B:0.004464,C:0.010424,K:0.0083,L:0.004706,G:0.015087,M:0.004393,N:0.004393,O:0.008652,o:0.008322,p:0.004393,q:0.004317,r:0.007602,s:0.008786,t:0.003939,u:0.004461,v:0.004141,w:0.004326,x:0.0047,y:0.004538,z:0.008322,AB:0.007734,BB:0.007734,CB:0.007602,DB:0.003867,EB:0.003867,FB:0.003867,GB:0.011403,HB:0.019005,IB:0.053214,JB:0.003867,KB:0.003801,LB:0.003801,MB:0.011403,NB:0.003867,OB:0.003801,PB:0.026607,QB:0.003801,RB:0.007602,nB:0.003801,SB:0.011403,oB:0.011403,TB:0.007602,UB:0.011403,Y:0.007602,VB:0.011403,WB:0.026607,XB:0.011403,YB:0.007602,ZB:0.049413,aB:0.022806,bB:0.011403,cB:0.026607,dB:0.007602,eB:0.022806,fB:0.060816,gB:0.060816,hB:0.011403,iB:0.034209,P:0.193851,Q:0.03801,R:0.034209,S:0.110229,T:0.049413,U:0.07602,V:0.072219,W:0.448518,Z:0.019005,a:0.060816,b:0.026607,c:0.072219,d:0.053214,e:0.045612,f:0.049413,g:0.034209,h:0.106428,i:0.098826,j:0.129234,k:0.163443,l:0.387702,X:1.47099,m:17.8077,H:1.61923,qB:0.015204,"2B":0.011403,"3B":0},B:"webkit",C:["","","","","I","n","J","D","E","F","A","B","C","K","L","G","M","N","O","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","RB","nB","SB","oB","TB","UB","Y","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","iB","P","Q","R","S","T","U","V","W","Z","a","b","c","d","e","f","g","h","i","j","k","l","X","m","H","qB","2B","3B"],E:"Chrome",F:{"0":1384214400,"1":1389657600,"2":1392940800,"3":1397001600,"4":1400544000,"5":1405468800,"6":1409011200,"7":1412640000,"8":1416268800,"9":1421798400,I:1264377600,n:1274745600,J:1283385600,D:1287619200,E:1291248000,F:1296777600,A:1299542400,B:1303862400,C:1307404800,K:1312243200,L:1316131200,G:1316131200,M:1319500800,N:1323734400,O:1328659200,o:1332892800,p:1337040000,q:1340668800,r:1343692800,s:1348531200,t:1352246400,u:1357862400,v:1361404800,w:1364428800,x:1369094400,y:1374105600,z:1376956800,AB:1425513600,BB:1429401600,CB:1432080000,DB:1437523200,EB:1441152000,FB:1444780800,GB:1449014400,HB:1453248000,IB:1456963200,JB:1460592000,KB:1464134400,LB:1469059200,MB:1472601600,NB:1476230400,OB:1480550400,PB:1485302400,QB:1489017600,RB:1492560000,nB:1496707200,SB:1500940800,oB:1504569600,TB:1508198400,UB:1512518400,Y:1516752000,VB:1520294400,WB:1523923200,XB:1527552000,YB:1532390400,ZB:1536019200,aB:1539648000,bB:1543968000,cB:1548720000,dB:1552348800,eB:1555977600,fB:1559606400,gB:1564444800,hB:1568073600,iB:1571702400,P:1575936000,Q:1580860800,R:1586304000,S:1589846400,T:1594684800,U:1598313600,V:1601942400,W:1605571200,Z:1611014400,a:1614556800,b:1618272000,c:1621987200,d:1626739200,e:1630368000,f:1632268800,g:1634601600,h:1637020800,i:1641340800,j:1643673600,k:1646092800,l:1648512000,X:1650931200,m:1653350400,H:1655769600,qB:null,"2B":null,"3B":null}},E:{A:{I:0,n:0.008322,J:0.004656,D:0.004465,E:0.004356,F:0.004891,A:0.004425,B:0.004318,C:0.003801,K:0.034209,L:0.140637,G:0.045612,"4B":0,rB:0.008692,"5B":0.007602,"6B":0.00456,"7B":0.004283,"8B":0.015204,sB:0.007602,jB:0.022806,kB:0.045612,"9B":0.254667,AC:0.41811,BC:0.083622,tB:0.079821,uB:0.528339,vB:1.47859,CC:0,lB:0.003801,DC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","4B","rB","I","n","5B","J","6B","D","7B","E","F","8B","A","sB","B","jB","C","kB","K","9B","L","AC","G","BC","tB","uB","vB","CC","lB","DC"],E:"Safari",F:{"4B":1205798400,rB:1226534400,I:1244419200,n:1275868800,"5B":1311120000,J:1343174400,"6B":1382400000,D:1382400000,"7B":1410998400,E:1413417600,F:1443657600,"8B":1458518400,A:1474329600,sB:1490572800,B:1505779200,jB:1522281600,C:1537142400,kB:1553472000,K:1568851200,"9B":1585008000,L:1600214400,AC:1619395200,G:1632096000,BC:1635292800,tB:1639353600,uB:1647216000,vB:1652745600,CC:null,lB:null,DC:null}},F:{A:{"0":0.003801,"1":0.005152,"2":0.005014,"3":0.009758,"4":0.004879,"5":0.003801,"6":0.004283,"7":0.004367,"8":0.004534,"9":0.007602,F:0.0082,B:0.016581,C:0.004317,G:0.00685,M:0.00685,N:0.00685,O:0.005014,o:0.006015,p:0.004879,q:0.006597,r:0.006597,s:0.013434,t:0.006702,u:0.006015,v:0.005595,w:0.004393,x:0.007602,y:0.004879,z:0.004879,AB:0.004227,BB:0.004418,CB:0.004161,DB:0.004227,EB:0.004725,FB:0.011403,GB:0.008942,HB:0.004707,IB:0.004827,JB:0.004707,KB:0.004707,LB:0.004326,MB:0.008922,NB:0.014349,OB:0.004425,PB:0.00472,QB:0.004425,RB:0.004425,SB:0.00472,TB:0.004532,UB:0.004566,Y:0.02283,VB:0.00867,WB:0.004656,XB:0.004642,YB:0.003867,ZB:0.00944,aB:0.004293,bB:0.003867,cB:0.004298,dB:0.096692,eB:0.004201,fB:0.004141,gB:0.004257,hB:0.003939,iB:0.008236,P:0.003939,Q:0.003939,R:0.008514,pB:0.003939,S:0.003939,T:0.003801,U:0.034209,V:0.300279,W:0.592956,EC:0.00685,FC:0,GC:0.008392,HC:0.004706,jB:0.006229,wB:0.004879,IC:0.008786,kB:0.00472},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","F","EC","FC","GC","HC","B","jB","wB","IC","C","kB","G","M","N","O","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","Y","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","iB","P","Q","R","pB","S","T","U","V","W","",""],E:"Opera",F:{"0":1438646400,"1":1442448000,"2":1445904000,"3":1449100800,"4":1454371200,"5":1457308800,"6":1462320000,"7":1465344000,"8":1470096000,"9":1474329600,F:1150761600,EC:1223424000,FC:1251763200,GC:1267488000,HC:1277942400,B:1292457600,jB:1302566400,wB:1309219200,IC:1323129600,C:1323129600,kB:1352073600,G:1372723200,M:1377561600,N:1381104000,O:1386288000,o:1390867200,p:1393891200,q:1399334400,r:1401753600,s:1405987200,t:1409616000,u:1413331200,v:1417132800,w:1422316800,x:1425945600,y:1430179200,z:1433808000,AB:1477267200,BB:1481587200,CB:1486425600,DB:1490054400,EB:1494374400,FB:1498003200,GB:1502236800,HB:1506470400,IB:1510099200,JB:1515024000,KB:1517961600,LB:1521676800,MB:1525910400,NB:1530144000,OB:1534982400,PB:1537833600,QB:1543363200,RB:1548201600,SB:1554768000,TB:1561593600,UB:1566259200,Y:1570406400,VB:1573689600,WB:1578441600,XB:1583971200,YB:1587513600,ZB:1592956800,aB:1595894400,bB:1600128000,cB:1603238400,dB:1613520000,eB:1612224000,fB:1616544000,gB:1619568000,hB:1623715200,iB:1627948800,P:1631577600,Q:1633392000,R:1635984000,pB:1638403200,S:1642550400,T:1644969600,U:1647993600,V:1650412800,W:null},D:{F:"o",B:"o",C:"o",EC:"o",FC:"o",GC:"o",HC:"o",jB:"o",wB:"o",IC:"o",kB:"o"}},G:{A:{E:0,rB:0.00149648,JC:0,xB:0.00149648,KC:0.00448945,LC:0.00448945,MC:0.0164613,NC:0.00748241,OC:0.0164613,PC:0.0748241,QC:0.00897889,RC:0.0823065,SC:0.040405,TC:0.0299296,UC:0.0299296,VC:0.559684,WC:0.0254402,XC:0.0119719,YC:0.0553698,ZC:0.173592,aC:0.528258,bC:1.278,cC:0.399561,tB:0.749737,uB:2.16691,vB:8.63769,lB:0.0284332},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","rB","JC","xB","KC","LC","MC","E","NC","OC","PC","QC","RC","SC","TC","UC","VC","WC","XC","YC","ZC","aC","bC","cC","tB","uB","vB","lB","",""],E:"Safari on iOS",F:{rB:1270252800,JC:1283904000,xB:1299628800,KC:1331078400,LC:1359331200,MC:1394409600,E:1410912000,NC:1413763200,OC:1442361600,PC:1458518400,QC:1473724800,RC:1490572800,SC:1505779200,TC:1522281600,UC:1537142400,VC:1553472000,WC:1568851200,XC:1572220800,YC:1580169600,ZC:1585008000,aC:1600214400,bC:1619395200,cC:1632096000,tB:1639353600,uB:1647216000,vB:1652659200,lB:null}},H:{A:{dC:0.950748},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","dC","","",""],E:"Opera Mini",F:{dC:1426464000}},I:{A:{mB:0,I:0.0154975,H:0,eC:0,fC:0,gC:0,hC:0.0206633,xB:0.06199,iC:0,jC:0.304784},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","eC","fC","gC","mB","I","hC","xB","iC","jC","H","","",""],E:"Android Browser",F:{eC:1256515200,fC:1274313600,gC:1291593600,mB:1298332800,I:1318896000,hC:1341792000,xB:1374624000,iC:1386547200,jC:1401667200,H:1655856000}},J:{A:{D:0,A:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","D","A","","",""],E:"Blackberry Browser",F:{D:1325376000,A:1359504000}},K:{A:{A:0,B:0,C:0,Y:0.0111391,jB:0,wB:0,kB:0},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","jB","wB","C","kB","Y","","",""],E:"Opera Mobile",F:{A:1287100800,B:1300752000,jB:1314835200,wB:1318291200,C:1330300800,kB:1349740800,Y:1613433600},D:{Y:"webkit"}},L:{A:{H:42.3898},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","H","","",""],E:"Chrome for Android",F:{H:1655769600}},M:{A:{X:0.30995},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","X","","",""],E:"Firefox for Android",F:{X:1653955200}},N:{A:{A:0.0115934,B:0.022664},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","","",""],E:"IE Mobile",F:{A:1340150400,B:1353456000}},O:{A:{kC:0.712885},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","kC","","",""],E:"UC Browser for Android",F:{kC:1471392000},D:{kC:"webkit"}},P:{A:{I:0.207064,lC:0.0103543,mC:0.010304,nC:0.0828255,oC:0.0103584,pC:0.0103532,sB:0.0105043,qC:0.0414128,rC:0.0207064,sC:0.0828255,tC:0.0931787,uC:0.0931787,lB:0.238123,vC:2.11205},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","I","lC","mC","nC","oC","pC","sB","qC","rC","sC","tC","uC","lB","vC","","",""],E:"Samsung Internet",F:{I:1461024000,lC:1481846400,mC:1509408000,nC:1528329600,oC:1546128000,pC:1554163200,sB:1567900800,qC:1582588800,rC:1593475200,sC:1605657600,tC:1618531200,uC:1629072000,lB:1640736000,vC:1651708800}},Q:{A:{wC:0.142577},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","wC","","",""],E:"QQ Browser",F:{wC:1589846400}},R:{A:{xC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","xC","","",""],E:"Baidu Browser",F:{xC:1491004800}},S:{A:{yC:0.049592},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","yC","","",""],E:"KaiOS Browser",F:{yC:1527811200}}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/browserVersions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/browserVersions.js index 4624d93a58e965..fd03c8a26c8cf8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/browserVersions.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/browserVersions.js @@ -1 +1 @@ -module.exports={"0":"35","1":"36","2":"37","3":"38","4":"39","5":"40","6":"41","7":"42","8":"43","9":"44",A:"10",B:"11",C:"12",D:"7",E:"8",F:"9",G:"15",H:"98",I:"4",J:"6",K:"13",L:"14",M:"16",N:"17",O:"18",P:"79",Q:"80",R:"81",S:"83",T:"96",U:"64",V:"84",W:"85",X:"86",Y:"87",Z:"88",a:"89",b:"90",c:"91",d:"92",e:"93",f:"94",g:"95",h:"97",i:"99",j:"5",k:"19",l:"20",m:"21",n:"22",o:"23",p:"24",q:"25",r:"26",s:"27",t:"28",u:"29",v:"30",w:"31",x:"32",y:"33",z:"34",AB:"45",BB:"46",CB:"47",DB:"48",EB:"49",FB:"50",GB:"51",HB:"52",IB:"53",JB:"54",KB:"55",LB:"56",MB:"57",NB:"58",OB:"60",PB:"62",QB:"63",RB:"65",SB:"66",TB:"67",UB:"68",VB:"69",WB:"70",XB:"71",YB:"72",ZB:"73",aB:"74",bB:"75",cB:"76",dB:"77",eB:"78",fB:"11.1",gB:"12.1",hB:"3",iB:"59",jB:"61",kB:"82",lB:"3.2",mB:"10.1",nB:"15.2-15.3",oB:"15.4",pB:"11.5",qB:"4.2-4.3",rB:"5.5",sB:"2",tB:"3.5",uB:"3.6",vB:"100",wB:"101",xB:"102",yB:"3.1",zB:"5.1","0B":"6.1","1B":"7.1","2B":"9.1","3B":"13.1","4B":"14.1","5B":"15.1","6B":"TP","7B":"9.5-9.6","8B":"10.0-10.1","9B":"10.5",AC:"10.6",BC:"11.6",CC:"4.0-4.1",DC:"5.0-5.1",EC:"6.0-6.1",FC:"7.0-7.1",GC:"8.1-8.4",HC:"9.0-9.2",IC:"9.3",JC:"10.0-10.2",KC:"10.3",LC:"11.0-11.2",MC:"11.3-11.4",NC:"12.0-12.1",OC:"12.2-12.5",PC:"13.0-13.1",QC:"13.2",RC:"13.3",SC:"13.4-13.7",TC:"14.0-14.4",UC:"14.5-14.8",VC:"15.0-15.1",WC:"all",XC:"2.1",YC:"2.2",ZC:"2.3",aC:"4.1",bC:"4.4",cC:"4.4.3-4.4.4",dC:"12.12",eC:"5.0-5.4",fC:"6.2-6.4",gC:"7.2-7.4",hC:"8.2",iC:"9.2",jC:"11.1-11.2",kC:"12.0",lC:"13.0",mC:"14.0",nC:"15.0",oC:"16.0",pC:"10.4",qC:"7.12",rC:"2.5"}; +module.exports={"0":"31","1":"32","2":"33","3":"34","4":"35","5":"36","6":"37","7":"38","8":"39","9":"40",A:"10",B:"11",C:"12",D:"7",E:"8",F:"9",G:"15",H:"103",I:"4",J:"6",K:"13",L:"14",M:"16",N:"17",O:"18",P:"79",Q:"80",R:"81",S:"83",T:"84",U:"85",V:"86",W:"87",X:"101",Y:"64",Z:"88",a:"89",b:"90",c:"91",d:"92",e:"93",f:"94",g:"95",h:"96",i:"97",j:"98",k:"99",l:"100",m:"102",n:"5",o:"19",p:"20",q:"21",r:"22",s:"23",t:"24",u:"25",v:"26",w:"27",x:"28",y:"29",z:"30",AB:"41",BB:"42",CB:"43",DB:"44",EB:"45",FB:"46",GB:"47",HB:"48",IB:"49",JB:"50",KB:"51",LB:"52",MB:"53",NB:"54",OB:"55",PB:"56",QB:"57",RB:"58",SB:"60",TB:"62",UB:"63",VB:"65",WB:"66",XB:"67",YB:"68",ZB:"69",aB:"70",bB:"71",cB:"72",dB:"73",eB:"74",fB:"75",gB:"76",hB:"77",iB:"78",jB:"11.1",kB:"12.1",lB:"16.0",mB:"3",nB:"59",oB:"61",pB:"82",qB:"104",rB:"3.2",sB:"10.1",tB:"15.2-15.3",uB:"15.4",vB:"15.5",wB:"11.5",xB:"4.2-4.3",yB:"5.5",zB:"2","0B":"3.5","1B":"3.6","2B":"105","3B":"106","4B":"3.1","5B":"5.1","6B":"6.1","7B":"7.1","8B":"9.1","9B":"13.1",AC:"14.1",BC:"15.1",CC:"15.6",DC:"TP",EC:"9.5-9.6",FC:"10.0-10.1",GC:"10.5",HC:"10.6",IC:"11.6",JC:"4.0-4.1",KC:"5.0-5.1",LC:"6.0-6.1",MC:"7.0-7.1",NC:"8.1-8.4",OC:"9.0-9.2",PC:"9.3",QC:"10.0-10.2",RC:"10.3",SC:"11.0-11.2",TC:"11.3-11.4",UC:"12.0-12.1",VC:"12.2-12.5",WC:"13.0-13.1",XC:"13.2",YC:"13.3",ZC:"13.4-13.7",aC:"14.0-14.4",bC:"14.5-14.8",cC:"15.0-15.1",dC:"all",eC:"2.1",fC:"2.2",gC:"2.3",hC:"4.1",iC:"4.4",jC:"4.4.3-4.4.4",kC:"12.12",lC:"5.0-5.4",mC:"6.2-6.4",nC:"7.2-7.4",oC:"8.2",pC:"9.2",qC:"11.1-11.2",rC:"12.0",sC:"13.0",tC:"14.0",uC:"15.0",vC:"17.0",wC:"10.4",xC:"7.12",yC:"2.5"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features.js index 9cd4be5d0b8264..9b1aff938bb90e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features.js @@ -1 +1 @@ -module.exports={"aac":require("./features/aac"),"abortcontroller":require("./features/abortcontroller"),"ac3-ec3":require("./features/ac3-ec3"),"accelerometer":require("./features/accelerometer"),"addeventlistener":require("./features/addeventlistener"),"alternate-stylesheet":require("./features/alternate-stylesheet"),"ambient-light":require("./features/ambient-light"),"apng":require("./features/apng"),"array-find-index":require("./features/array-find-index"),"array-find":require("./features/array-find"),"array-flat":require("./features/array-flat"),"array-includes":require("./features/array-includes"),"arrow-functions":require("./features/arrow-functions"),"asmjs":require("./features/asmjs"),"async-clipboard":require("./features/async-clipboard"),"async-functions":require("./features/async-functions"),"atob-btoa":require("./features/atob-btoa"),"audio-api":require("./features/audio-api"),"audio":require("./features/audio"),"audiotracks":require("./features/audiotracks"),"autofocus":require("./features/autofocus"),"auxclick":require("./features/auxclick"),"av1":require("./features/av1"),"avif":require("./features/avif"),"background-attachment":require("./features/background-attachment"),"background-clip-text":require("./features/background-clip-text"),"background-img-opts":require("./features/background-img-opts"),"background-position-x-y":require("./features/background-position-x-y"),"background-repeat-round-space":require("./features/background-repeat-round-space"),"background-sync":require("./features/background-sync"),"battery-status":require("./features/battery-status"),"beacon":require("./features/beacon"),"beforeafterprint":require("./features/beforeafterprint"),"bigint":require("./features/bigint"),"blobbuilder":require("./features/blobbuilder"),"bloburls":require("./features/bloburls"),"border-image":require("./features/border-image"),"border-radius":require("./features/border-radius"),"broadcastchannel":require("./features/broadcastchannel"),"brotli":require("./features/brotli"),"calc":require("./features/calc"),"canvas-blending":require("./features/canvas-blending"),"canvas-text":require("./features/canvas-text"),"canvas":require("./features/canvas"),"ch-unit":require("./features/ch-unit"),"chacha20-poly1305":require("./features/chacha20-poly1305"),"channel-messaging":require("./features/channel-messaging"),"childnode-remove":require("./features/childnode-remove"),"classlist":require("./features/classlist"),"client-hints-dpr-width-viewport":require("./features/client-hints-dpr-width-viewport"),"clipboard":require("./features/clipboard"),"colr-v1":require("./features/colr-v1"),"colr":require("./features/colr"),"comparedocumentposition":require("./features/comparedocumentposition"),"console-basic":require("./features/console-basic"),"console-time":require("./features/console-time"),"const":require("./features/const"),"constraint-validation":require("./features/constraint-validation"),"contenteditable":require("./features/contenteditable"),"contentsecuritypolicy":require("./features/contentsecuritypolicy"),"contentsecuritypolicy2":require("./features/contentsecuritypolicy2"),"cookie-store-api":require("./features/cookie-store-api"),"cors":require("./features/cors"),"createimagebitmap":require("./features/createimagebitmap"),"credential-management":require("./features/credential-management"),"cryptography":require("./features/cryptography"),"css-all":require("./features/css-all"),"css-animation":require("./features/css-animation"),"css-any-link":require("./features/css-any-link"),"css-appearance":require("./features/css-appearance"),"css-at-counter-style":require("./features/css-at-counter-style"),"css-autofill":require("./features/css-autofill"),"css-backdrop-filter":require("./features/css-backdrop-filter"),"css-background-offsets":require("./features/css-background-offsets"),"css-backgroundblendmode":require("./features/css-backgroundblendmode"),"css-boxdecorationbreak":require("./features/css-boxdecorationbreak"),"css-boxshadow":require("./features/css-boxshadow"),"css-canvas":require("./features/css-canvas"),"css-caret-color":require("./features/css-caret-color"),"css-cascade-layers":require("./features/css-cascade-layers"),"css-case-insensitive":require("./features/css-case-insensitive"),"css-clip-path":require("./features/css-clip-path"),"css-color-adjust":require("./features/css-color-adjust"),"css-color-function":require("./features/css-color-function"),"css-conic-gradients":require("./features/css-conic-gradients"),"css-container-queries":require("./features/css-container-queries"),"css-containment":require("./features/css-containment"),"css-content-visibility":require("./features/css-content-visibility"),"css-counters":require("./features/css-counters"),"css-crisp-edges":require("./features/css-crisp-edges"),"css-cross-fade":require("./features/css-cross-fade"),"css-default-pseudo":require("./features/css-default-pseudo"),"css-descendant-gtgt":require("./features/css-descendant-gtgt"),"css-deviceadaptation":require("./features/css-deviceadaptation"),"css-dir-pseudo":require("./features/css-dir-pseudo"),"css-display-contents":require("./features/css-display-contents"),"css-element-function":require("./features/css-element-function"),"css-env-function":require("./features/css-env-function"),"css-exclusions":require("./features/css-exclusions"),"css-featurequeries":require("./features/css-featurequeries"),"css-file-selector-button":require("./features/css-file-selector-button"),"css-filter-function":require("./features/css-filter-function"),"css-filters":require("./features/css-filters"),"css-first-letter":require("./features/css-first-letter"),"css-first-line":require("./features/css-first-line"),"css-fixed":require("./features/css-fixed"),"css-focus-visible":require("./features/css-focus-visible"),"css-focus-within":require("./features/css-focus-within"),"css-font-rendering-controls":require("./features/css-font-rendering-controls"),"css-font-stretch":require("./features/css-font-stretch"),"css-gencontent":require("./features/css-gencontent"),"css-gradients":require("./features/css-gradients"),"css-grid":require("./features/css-grid"),"css-hanging-punctuation":require("./features/css-hanging-punctuation"),"css-has":require("./features/css-has"),"css-hyphenate":require("./features/css-hyphenate"),"css-hyphens":require("./features/css-hyphens"),"css-image-orientation":require("./features/css-image-orientation"),"css-image-set":require("./features/css-image-set"),"css-in-out-of-range":require("./features/css-in-out-of-range"),"css-indeterminate-pseudo":require("./features/css-indeterminate-pseudo"),"css-initial-letter":require("./features/css-initial-letter"),"css-initial-value":require("./features/css-initial-value"),"css-lch-lab":require("./features/css-lch-lab"),"css-letter-spacing":require("./features/css-letter-spacing"),"css-line-clamp":require("./features/css-line-clamp"),"css-logical-props":require("./features/css-logical-props"),"css-marker-pseudo":require("./features/css-marker-pseudo"),"css-masks":require("./features/css-masks"),"css-matches-pseudo":require("./features/css-matches-pseudo"),"css-math-functions":require("./features/css-math-functions"),"css-media-interaction":require("./features/css-media-interaction"),"css-media-resolution":require("./features/css-media-resolution"),"css-media-scripting":require("./features/css-media-scripting"),"css-mediaqueries":require("./features/css-mediaqueries"),"css-mixblendmode":require("./features/css-mixblendmode"),"css-motion-paths":require("./features/css-motion-paths"),"css-namespaces":require("./features/css-namespaces"),"css-nesting":require("./features/css-nesting"),"css-not-sel-list":require("./features/css-not-sel-list"),"css-nth-child-of":require("./features/css-nth-child-of"),"css-opacity":require("./features/css-opacity"),"css-optional-pseudo":require("./features/css-optional-pseudo"),"css-overflow-anchor":require("./features/css-overflow-anchor"),"css-overflow-overlay":require("./features/css-overflow-overlay"),"css-overflow":require("./features/css-overflow"),"css-overscroll-behavior":require("./features/css-overscroll-behavior"),"css-page-break":require("./features/css-page-break"),"css-paged-media":require("./features/css-paged-media"),"css-paint-api":require("./features/css-paint-api"),"css-placeholder-shown":require("./features/css-placeholder-shown"),"css-placeholder":require("./features/css-placeholder"),"css-read-only-write":require("./features/css-read-only-write"),"css-rebeccapurple":require("./features/css-rebeccapurple"),"css-reflections":require("./features/css-reflections"),"css-regions":require("./features/css-regions"),"css-repeating-gradients":require("./features/css-repeating-gradients"),"css-resize":require("./features/css-resize"),"css-revert-value":require("./features/css-revert-value"),"css-rrggbbaa":require("./features/css-rrggbbaa"),"css-scroll-behavior":require("./features/css-scroll-behavior"),"css-scroll-timeline":require("./features/css-scroll-timeline"),"css-scrollbar":require("./features/css-scrollbar"),"css-sel2":require("./features/css-sel2"),"css-sel3":require("./features/css-sel3"),"css-selection":require("./features/css-selection"),"css-shapes":require("./features/css-shapes"),"css-snappoints":require("./features/css-snappoints"),"css-sticky":require("./features/css-sticky"),"css-subgrid":require("./features/css-subgrid"),"css-supports-api":require("./features/css-supports-api"),"css-table":require("./features/css-table"),"css-text-align-last":require("./features/css-text-align-last"),"css-text-indent":require("./features/css-text-indent"),"css-text-justify":require("./features/css-text-justify"),"css-text-orientation":require("./features/css-text-orientation"),"css-text-spacing":require("./features/css-text-spacing"),"css-textshadow":require("./features/css-textshadow"),"css-touch-action-2":require("./features/css-touch-action-2"),"css-touch-action":require("./features/css-touch-action"),"css-transitions":require("./features/css-transitions"),"css-unicode-bidi":require("./features/css-unicode-bidi"),"css-unset-value":require("./features/css-unset-value"),"css-variables":require("./features/css-variables"),"css-when-else":require("./features/css-when-else"),"css-widows-orphans":require("./features/css-widows-orphans"),"css-width-stretch":require("./features/css-width-stretch"),"css-writing-mode":require("./features/css-writing-mode"),"css-zoom":require("./features/css-zoom"),"css3-attr":require("./features/css3-attr"),"css3-boxsizing":require("./features/css3-boxsizing"),"css3-colors":require("./features/css3-colors"),"css3-cursors-grab":require("./features/css3-cursors-grab"),"css3-cursors-newer":require("./features/css3-cursors-newer"),"css3-cursors":require("./features/css3-cursors"),"css3-tabsize":require("./features/css3-tabsize"),"currentcolor":require("./features/currentcolor"),"custom-elements":require("./features/custom-elements"),"custom-elementsv1":require("./features/custom-elementsv1"),"customevent":require("./features/customevent"),"datalist":require("./features/datalist"),"dataset":require("./features/dataset"),"datauri":require("./features/datauri"),"date-tolocaledatestring":require("./features/date-tolocaledatestring"),"decorators":require("./features/decorators"),"details":require("./features/details"),"deviceorientation":require("./features/deviceorientation"),"devicepixelratio":require("./features/devicepixelratio"),"dialog":require("./features/dialog"),"dispatchevent":require("./features/dispatchevent"),"dnssec":require("./features/dnssec"),"do-not-track":require("./features/do-not-track"),"document-currentscript":require("./features/document-currentscript"),"document-evaluate-xpath":require("./features/document-evaluate-xpath"),"document-execcommand":require("./features/document-execcommand"),"document-policy":require("./features/document-policy"),"document-scrollingelement":require("./features/document-scrollingelement"),"documenthead":require("./features/documenthead"),"dom-manip-convenience":require("./features/dom-manip-convenience"),"dom-range":require("./features/dom-range"),"domcontentloaded":require("./features/domcontentloaded"),"domfocusin-domfocusout-events":require("./features/domfocusin-domfocusout-events"),"dommatrix":require("./features/dommatrix"),"download":require("./features/download"),"dragndrop":require("./features/dragndrop"),"element-closest":require("./features/element-closest"),"element-from-point":require("./features/element-from-point"),"element-scroll-methods":require("./features/element-scroll-methods"),"eme":require("./features/eme"),"eot":require("./features/eot"),"es5":require("./features/es5"),"es6-class":require("./features/es6-class"),"es6-generators":require("./features/es6-generators"),"es6-module-dynamic-import":require("./features/es6-module-dynamic-import"),"es6-module":require("./features/es6-module"),"es6-number":require("./features/es6-number"),"es6-string-includes":require("./features/es6-string-includes"),"es6":require("./features/es6"),"eventsource":require("./features/eventsource"),"extended-system-fonts":require("./features/extended-system-fonts"),"feature-policy":require("./features/feature-policy"),"fetch":require("./features/fetch"),"fieldset-disabled":require("./features/fieldset-disabled"),"fileapi":require("./features/fileapi"),"filereader":require("./features/filereader"),"filereadersync":require("./features/filereadersync"),"filesystem":require("./features/filesystem"),"flac":require("./features/flac"),"flexbox-gap":require("./features/flexbox-gap"),"flexbox":require("./features/flexbox"),"flow-root":require("./features/flow-root"),"focusin-focusout-events":require("./features/focusin-focusout-events"),"focusoptions-preventscroll":require("./features/focusoptions-preventscroll"),"font-family-system-ui":require("./features/font-family-system-ui"),"font-feature":require("./features/font-feature"),"font-kerning":require("./features/font-kerning"),"font-loading":require("./features/font-loading"),"font-metrics-overrides":require("./features/font-metrics-overrides"),"font-size-adjust":require("./features/font-size-adjust"),"font-smooth":require("./features/font-smooth"),"font-unicode-range":require("./features/font-unicode-range"),"font-variant-alternates":require("./features/font-variant-alternates"),"font-variant-east-asian":require("./features/font-variant-east-asian"),"font-variant-numeric":require("./features/font-variant-numeric"),"fontface":require("./features/fontface"),"form-attribute":require("./features/form-attribute"),"form-submit-attributes":require("./features/form-submit-attributes"),"form-validation":require("./features/form-validation"),"forms":require("./features/forms"),"fullscreen":require("./features/fullscreen"),"gamepad":require("./features/gamepad"),"geolocation":require("./features/geolocation"),"getboundingclientrect":require("./features/getboundingclientrect"),"getcomputedstyle":require("./features/getcomputedstyle"),"getelementsbyclassname":require("./features/getelementsbyclassname"),"getrandomvalues":require("./features/getrandomvalues"),"gyroscope":require("./features/gyroscope"),"hardwareconcurrency":require("./features/hardwareconcurrency"),"hashchange":require("./features/hashchange"),"heif":require("./features/heif"),"hevc":require("./features/hevc"),"hidden":require("./features/hidden"),"high-resolution-time":require("./features/high-resolution-time"),"history":require("./features/history"),"html-media-capture":require("./features/html-media-capture"),"html5semantic":require("./features/html5semantic"),"http-live-streaming":require("./features/http-live-streaming"),"http2":require("./features/http2"),"http3":require("./features/http3"),"iframe-sandbox":require("./features/iframe-sandbox"),"iframe-seamless":require("./features/iframe-seamless"),"iframe-srcdoc":require("./features/iframe-srcdoc"),"imagecapture":require("./features/imagecapture"),"ime":require("./features/ime"),"img-naturalwidth-naturalheight":require("./features/img-naturalwidth-naturalheight"),"import-maps":require("./features/import-maps"),"imports":require("./features/imports"),"indeterminate-checkbox":require("./features/indeterminate-checkbox"),"indexeddb":require("./features/indexeddb"),"indexeddb2":require("./features/indexeddb2"),"inline-block":require("./features/inline-block"),"innertext":require("./features/innertext"),"input-autocomplete-onoff":require("./features/input-autocomplete-onoff"),"input-color":require("./features/input-color"),"input-datetime":require("./features/input-datetime"),"input-email-tel-url":require("./features/input-email-tel-url"),"input-event":require("./features/input-event"),"input-file-accept":require("./features/input-file-accept"),"input-file-directory":require("./features/input-file-directory"),"input-file-multiple":require("./features/input-file-multiple"),"input-inputmode":require("./features/input-inputmode"),"input-minlength":require("./features/input-minlength"),"input-number":require("./features/input-number"),"input-pattern":require("./features/input-pattern"),"input-placeholder":require("./features/input-placeholder"),"input-range":require("./features/input-range"),"input-search":require("./features/input-search"),"input-selection":require("./features/input-selection"),"insert-adjacent":require("./features/insert-adjacent"),"insertadjacenthtml":require("./features/insertadjacenthtml"),"internationalization":require("./features/internationalization"),"intersectionobserver-v2":require("./features/intersectionobserver-v2"),"intersectionobserver":require("./features/intersectionobserver"),"intl-pluralrules":require("./features/intl-pluralrules"),"intrinsic-width":require("./features/intrinsic-width"),"jpeg2000":require("./features/jpeg2000"),"jpegxl":require("./features/jpegxl"),"jpegxr":require("./features/jpegxr"),"js-regexp-lookbehind":require("./features/js-regexp-lookbehind"),"json":require("./features/json"),"justify-content-space-evenly":require("./features/justify-content-space-evenly"),"kerning-pairs-ligatures":require("./features/kerning-pairs-ligatures"),"keyboardevent-charcode":require("./features/keyboardevent-charcode"),"keyboardevent-code":require("./features/keyboardevent-code"),"keyboardevent-getmodifierstate":require("./features/keyboardevent-getmodifierstate"),"keyboardevent-key":require("./features/keyboardevent-key"),"keyboardevent-location":require("./features/keyboardevent-location"),"keyboardevent-which":require("./features/keyboardevent-which"),"lazyload":require("./features/lazyload"),"let":require("./features/let"),"link-icon-png":require("./features/link-icon-png"),"link-icon-svg":require("./features/link-icon-svg"),"link-rel-dns-prefetch":require("./features/link-rel-dns-prefetch"),"link-rel-modulepreload":require("./features/link-rel-modulepreload"),"link-rel-preconnect":require("./features/link-rel-preconnect"),"link-rel-prefetch":require("./features/link-rel-prefetch"),"link-rel-preload":require("./features/link-rel-preload"),"link-rel-prerender":require("./features/link-rel-prerender"),"loading-lazy-attr":require("./features/loading-lazy-attr"),"localecompare":require("./features/localecompare"),"magnetometer":require("./features/magnetometer"),"matchesselector":require("./features/matchesselector"),"matchmedia":require("./features/matchmedia"),"mathml":require("./features/mathml"),"maxlength":require("./features/maxlength"),"media-attribute":require("./features/media-attribute"),"media-fragments":require("./features/media-fragments"),"media-session-api":require("./features/media-session-api"),"mediacapture-fromelement":require("./features/mediacapture-fromelement"),"mediarecorder":require("./features/mediarecorder"),"mediasource":require("./features/mediasource"),"menu":require("./features/menu"),"meta-theme-color":require("./features/meta-theme-color"),"meter":require("./features/meter"),"midi":require("./features/midi"),"minmaxwh":require("./features/minmaxwh"),"mp3":require("./features/mp3"),"mpeg-dash":require("./features/mpeg-dash"),"mpeg4":require("./features/mpeg4"),"multibackgrounds":require("./features/multibackgrounds"),"multicolumn":require("./features/multicolumn"),"mutation-events":require("./features/mutation-events"),"mutationobserver":require("./features/mutationobserver"),"namevalue-storage":require("./features/namevalue-storage"),"native-filesystem-api":require("./features/native-filesystem-api"),"nav-timing":require("./features/nav-timing"),"navigator-language":require("./features/navigator-language"),"netinfo":require("./features/netinfo"),"notifications":require("./features/notifications"),"object-entries":require("./features/object-entries"),"object-fit":require("./features/object-fit"),"object-observe":require("./features/object-observe"),"object-values":require("./features/object-values"),"objectrtc":require("./features/objectrtc"),"offline-apps":require("./features/offline-apps"),"offscreencanvas":require("./features/offscreencanvas"),"ogg-vorbis":require("./features/ogg-vorbis"),"ogv":require("./features/ogv"),"ol-reversed":require("./features/ol-reversed"),"once-event-listener":require("./features/once-event-listener"),"online-status":require("./features/online-status"),"opus":require("./features/opus"),"orientation-sensor":require("./features/orientation-sensor"),"outline":require("./features/outline"),"pad-start-end":require("./features/pad-start-end"),"page-transition-events":require("./features/page-transition-events"),"pagevisibility":require("./features/pagevisibility"),"passive-event-listener":require("./features/passive-event-listener"),"passwordrules":require("./features/passwordrules"),"path2d":require("./features/path2d"),"payment-request":require("./features/payment-request"),"pdf-viewer":require("./features/pdf-viewer"),"permissions-api":require("./features/permissions-api"),"permissions-policy":require("./features/permissions-policy"),"picture-in-picture":require("./features/picture-in-picture"),"picture":require("./features/picture"),"ping":require("./features/ping"),"png-alpha":require("./features/png-alpha"),"pointer-events":require("./features/pointer-events"),"pointer":require("./features/pointer"),"pointerlock":require("./features/pointerlock"),"portals":require("./features/portals"),"prefers-color-scheme":require("./features/prefers-color-scheme"),"prefers-reduced-motion":require("./features/prefers-reduced-motion"),"private-class-fields":require("./features/private-class-fields"),"private-methods-and-accessors":require("./features/private-methods-and-accessors"),"progress":require("./features/progress"),"promise-finally":require("./features/promise-finally"),"promises":require("./features/promises"),"proximity":require("./features/proximity"),"proxy":require("./features/proxy"),"public-class-fields":require("./features/public-class-fields"),"publickeypinning":require("./features/publickeypinning"),"push-api":require("./features/push-api"),"queryselector":require("./features/queryselector"),"readonly-attr":require("./features/readonly-attr"),"referrer-policy":require("./features/referrer-policy"),"registerprotocolhandler":require("./features/registerprotocolhandler"),"rel-noopener":require("./features/rel-noopener"),"rel-noreferrer":require("./features/rel-noreferrer"),"rellist":require("./features/rellist"),"rem":require("./features/rem"),"requestanimationframe":require("./features/requestanimationframe"),"requestidlecallback":require("./features/requestidlecallback"),"resizeobserver":require("./features/resizeobserver"),"resource-timing":require("./features/resource-timing"),"rest-parameters":require("./features/rest-parameters"),"rtcpeerconnection":require("./features/rtcpeerconnection"),"ruby":require("./features/ruby"),"run-in":require("./features/run-in"),"same-site-cookie-attribute":require("./features/same-site-cookie-attribute"),"screen-orientation":require("./features/screen-orientation"),"script-async":require("./features/script-async"),"script-defer":require("./features/script-defer"),"scrollintoview":require("./features/scrollintoview"),"scrollintoviewifneeded":require("./features/scrollintoviewifneeded"),"sdch":require("./features/sdch"),"selection-api":require("./features/selection-api"),"server-timing":require("./features/server-timing"),"serviceworkers":require("./features/serviceworkers"),"setimmediate":require("./features/setimmediate"),"sha-2":require("./features/sha-2"),"shadowdom":require("./features/shadowdom"),"shadowdomv1":require("./features/shadowdomv1"),"sharedarraybuffer":require("./features/sharedarraybuffer"),"sharedworkers":require("./features/sharedworkers"),"sni":require("./features/sni"),"spdy":require("./features/spdy"),"speech-recognition":require("./features/speech-recognition"),"speech-synthesis":require("./features/speech-synthesis"),"spellcheck-attribute":require("./features/spellcheck-attribute"),"sql-storage":require("./features/sql-storage"),"srcset":require("./features/srcset"),"stream":require("./features/stream"),"streams":require("./features/streams"),"stricttransportsecurity":require("./features/stricttransportsecurity"),"style-scoped":require("./features/style-scoped"),"subresource-integrity":require("./features/subresource-integrity"),"svg-css":require("./features/svg-css"),"svg-filters":require("./features/svg-filters"),"svg-fonts":require("./features/svg-fonts"),"svg-fragment":require("./features/svg-fragment"),"svg-html":require("./features/svg-html"),"svg-html5":require("./features/svg-html5"),"svg-img":require("./features/svg-img"),"svg-smil":require("./features/svg-smil"),"svg":require("./features/svg"),"sxg":require("./features/sxg"),"tabindex-attr":require("./features/tabindex-attr"),"template-literals":require("./features/template-literals"),"template":require("./features/template"),"temporal":require("./features/temporal"),"testfeat":require("./features/testfeat"),"text-decoration":require("./features/text-decoration"),"text-emphasis":require("./features/text-emphasis"),"text-overflow":require("./features/text-overflow"),"text-size-adjust":require("./features/text-size-adjust"),"text-stroke":require("./features/text-stroke"),"text-underline-offset":require("./features/text-underline-offset"),"textcontent":require("./features/textcontent"),"textencoder":require("./features/textencoder"),"tls1-1":require("./features/tls1-1"),"tls1-2":require("./features/tls1-2"),"tls1-3":require("./features/tls1-3"),"token-binding":require("./features/token-binding"),"touch":require("./features/touch"),"transforms2d":require("./features/transforms2d"),"transforms3d":require("./features/transforms3d"),"trusted-types":require("./features/trusted-types"),"ttf":require("./features/ttf"),"typedarrays":require("./features/typedarrays"),"u2f":require("./features/u2f"),"unhandledrejection":require("./features/unhandledrejection"),"upgradeinsecurerequests":require("./features/upgradeinsecurerequests"),"url-scroll-to-text-fragment":require("./features/url-scroll-to-text-fragment"),"url":require("./features/url"),"urlsearchparams":require("./features/urlsearchparams"),"use-strict":require("./features/use-strict"),"user-select-none":require("./features/user-select-none"),"user-timing":require("./features/user-timing"),"variable-fonts":require("./features/variable-fonts"),"vector-effect":require("./features/vector-effect"),"vibration":require("./features/vibration"),"video":require("./features/video"),"videotracks":require("./features/videotracks"),"viewport-unit-variants":require("./features/viewport-unit-variants"),"viewport-units":require("./features/viewport-units"),"wai-aria":require("./features/wai-aria"),"wake-lock":require("./features/wake-lock"),"wasm":require("./features/wasm"),"wav":require("./features/wav"),"wbr-element":require("./features/wbr-element"),"web-animation":require("./features/web-animation"),"web-app-manifest":require("./features/web-app-manifest"),"web-bluetooth":require("./features/web-bluetooth"),"web-serial":require("./features/web-serial"),"web-share":require("./features/web-share"),"webauthn":require("./features/webauthn"),"webgl":require("./features/webgl"),"webgl2":require("./features/webgl2"),"webgpu":require("./features/webgpu"),"webhid":require("./features/webhid"),"webkit-user-drag":require("./features/webkit-user-drag"),"webm":require("./features/webm"),"webnfc":require("./features/webnfc"),"webp":require("./features/webp"),"websockets":require("./features/websockets"),"webusb":require("./features/webusb"),"webvr":require("./features/webvr"),"webvtt":require("./features/webvtt"),"webworkers":require("./features/webworkers"),"webxr":require("./features/webxr"),"will-change":require("./features/will-change"),"woff":require("./features/woff"),"woff2":require("./features/woff2"),"word-break":require("./features/word-break"),"wordwrap":require("./features/wordwrap"),"x-doc-messaging":require("./features/x-doc-messaging"),"x-frame-options":require("./features/x-frame-options"),"xhr2":require("./features/xhr2"),"xhtml":require("./features/xhtml"),"xhtmlsmil":require("./features/xhtmlsmil"),"xml-serializer":require("./features/xml-serializer")}; +module.exports={"aac":require("./features/aac"),"abortcontroller":require("./features/abortcontroller"),"ac3-ec3":require("./features/ac3-ec3"),"accelerometer":require("./features/accelerometer"),"addeventlistener":require("./features/addeventlistener"),"alternate-stylesheet":require("./features/alternate-stylesheet"),"ambient-light":require("./features/ambient-light"),"apng":require("./features/apng"),"array-find-index":require("./features/array-find-index"),"array-find":require("./features/array-find"),"array-flat":require("./features/array-flat"),"array-includes":require("./features/array-includes"),"arrow-functions":require("./features/arrow-functions"),"asmjs":require("./features/asmjs"),"async-clipboard":require("./features/async-clipboard"),"async-functions":require("./features/async-functions"),"atob-btoa":require("./features/atob-btoa"),"audio-api":require("./features/audio-api"),"audio":require("./features/audio"),"audiotracks":require("./features/audiotracks"),"autofocus":require("./features/autofocus"),"auxclick":require("./features/auxclick"),"av1":require("./features/av1"),"avif":require("./features/avif"),"background-attachment":require("./features/background-attachment"),"background-clip-text":require("./features/background-clip-text"),"background-img-opts":require("./features/background-img-opts"),"background-position-x-y":require("./features/background-position-x-y"),"background-repeat-round-space":require("./features/background-repeat-round-space"),"background-sync":require("./features/background-sync"),"battery-status":require("./features/battery-status"),"beacon":require("./features/beacon"),"beforeafterprint":require("./features/beforeafterprint"),"bigint":require("./features/bigint"),"blobbuilder":require("./features/blobbuilder"),"bloburls":require("./features/bloburls"),"border-image":require("./features/border-image"),"border-radius":require("./features/border-radius"),"broadcastchannel":require("./features/broadcastchannel"),"brotli":require("./features/brotli"),"calc":require("./features/calc"),"canvas-blending":require("./features/canvas-blending"),"canvas-text":require("./features/canvas-text"),"canvas":require("./features/canvas"),"ch-unit":require("./features/ch-unit"),"chacha20-poly1305":require("./features/chacha20-poly1305"),"channel-messaging":require("./features/channel-messaging"),"childnode-remove":require("./features/childnode-remove"),"classlist":require("./features/classlist"),"client-hints-dpr-width-viewport":require("./features/client-hints-dpr-width-viewport"),"clipboard":require("./features/clipboard"),"colr-v1":require("./features/colr-v1"),"colr":require("./features/colr"),"comparedocumentposition":require("./features/comparedocumentposition"),"console-basic":require("./features/console-basic"),"console-time":require("./features/console-time"),"const":require("./features/const"),"constraint-validation":require("./features/constraint-validation"),"contenteditable":require("./features/contenteditable"),"contentsecuritypolicy":require("./features/contentsecuritypolicy"),"contentsecuritypolicy2":require("./features/contentsecuritypolicy2"),"cookie-store-api":require("./features/cookie-store-api"),"cors":require("./features/cors"),"createimagebitmap":require("./features/createimagebitmap"),"credential-management":require("./features/credential-management"),"cryptography":require("./features/cryptography"),"css-all":require("./features/css-all"),"css-animation":require("./features/css-animation"),"css-any-link":require("./features/css-any-link"),"css-appearance":require("./features/css-appearance"),"css-at-counter-style":require("./features/css-at-counter-style"),"css-autofill":require("./features/css-autofill"),"css-backdrop-filter":require("./features/css-backdrop-filter"),"css-background-offsets":require("./features/css-background-offsets"),"css-backgroundblendmode":require("./features/css-backgroundblendmode"),"css-boxdecorationbreak":require("./features/css-boxdecorationbreak"),"css-boxshadow":require("./features/css-boxshadow"),"css-canvas":require("./features/css-canvas"),"css-caret-color":require("./features/css-caret-color"),"css-cascade-layers":require("./features/css-cascade-layers"),"css-case-insensitive":require("./features/css-case-insensitive"),"css-clip-path":require("./features/css-clip-path"),"css-color-adjust":require("./features/css-color-adjust"),"css-color-function":require("./features/css-color-function"),"css-conic-gradients":require("./features/css-conic-gradients"),"css-container-queries":require("./features/css-container-queries"),"css-container-query-units":require("./features/css-container-query-units"),"css-containment":require("./features/css-containment"),"css-content-visibility":require("./features/css-content-visibility"),"css-counters":require("./features/css-counters"),"css-crisp-edges":require("./features/css-crisp-edges"),"css-cross-fade":require("./features/css-cross-fade"),"css-default-pseudo":require("./features/css-default-pseudo"),"css-descendant-gtgt":require("./features/css-descendant-gtgt"),"css-deviceadaptation":require("./features/css-deviceadaptation"),"css-dir-pseudo":require("./features/css-dir-pseudo"),"css-display-contents":require("./features/css-display-contents"),"css-element-function":require("./features/css-element-function"),"css-env-function":require("./features/css-env-function"),"css-exclusions":require("./features/css-exclusions"),"css-featurequeries":require("./features/css-featurequeries"),"css-file-selector-button":require("./features/css-file-selector-button"),"css-filter-function":require("./features/css-filter-function"),"css-filters":require("./features/css-filters"),"css-first-letter":require("./features/css-first-letter"),"css-first-line":require("./features/css-first-line"),"css-fixed":require("./features/css-fixed"),"css-focus-visible":require("./features/css-focus-visible"),"css-focus-within":require("./features/css-focus-within"),"css-font-palette":require("./features/css-font-palette"),"css-font-rendering-controls":require("./features/css-font-rendering-controls"),"css-font-stretch":require("./features/css-font-stretch"),"css-gencontent":require("./features/css-gencontent"),"css-gradients":require("./features/css-gradients"),"css-grid-animation":require("./features/css-grid-animation"),"css-grid":require("./features/css-grid"),"css-hanging-punctuation":require("./features/css-hanging-punctuation"),"css-has":require("./features/css-has"),"css-hyphenate":require("./features/css-hyphenate"),"css-hyphens":require("./features/css-hyphens"),"css-image-orientation":require("./features/css-image-orientation"),"css-image-set":require("./features/css-image-set"),"css-in-out-of-range":require("./features/css-in-out-of-range"),"css-indeterminate-pseudo":require("./features/css-indeterminate-pseudo"),"css-initial-letter":require("./features/css-initial-letter"),"css-initial-value":require("./features/css-initial-value"),"css-lch-lab":require("./features/css-lch-lab"),"css-letter-spacing":require("./features/css-letter-spacing"),"css-line-clamp":require("./features/css-line-clamp"),"css-logical-props":require("./features/css-logical-props"),"css-marker-pseudo":require("./features/css-marker-pseudo"),"css-masks":require("./features/css-masks"),"css-matches-pseudo":require("./features/css-matches-pseudo"),"css-math-functions":require("./features/css-math-functions"),"css-media-interaction":require("./features/css-media-interaction"),"css-media-resolution":require("./features/css-media-resolution"),"css-media-scripting":require("./features/css-media-scripting"),"css-mediaqueries":require("./features/css-mediaqueries"),"css-mixblendmode":require("./features/css-mixblendmode"),"css-motion-paths":require("./features/css-motion-paths"),"css-namespaces":require("./features/css-namespaces"),"css-nesting":require("./features/css-nesting"),"css-not-sel-list":require("./features/css-not-sel-list"),"css-nth-child-of":require("./features/css-nth-child-of"),"css-opacity":require("./features/css-opacity"),"css-optional-pseudo":require("./features/css-optional-pseudo"),"css-overflow-anchor":require("./features/css-overflow-anchor"),"css-overflow-overlay":require("./features/css-overflow-overlay"),"css-overflow":require("./features/css-overflow"),"css-overscroll-behavior":require("./features/css-overscroll-behavior"),"css-page-break":require("./features/css-page-break"),"css-paged-media":require("./features/css-paged-media"),"css-paint-api":require("./features/css-paint-api"),"css-placeholder-shown":require("./features/css-placeholder-shown"),"css-placeholder":require("./features/css-placeholder"),"css-print-color-adjust":require("./features/css-print-color-adjust"),"css-read-only-write":require("./features/css-read-only-write"),"css-rebeccapurple":require("./features/css-rebeccapurple"),"css-reflections":require("./features/css-reflections"),"css-regions":require("./features/css-regions"),"css-repeating-gradients":require("./features/css-repeating-gradients"),"css-resize":require("./features/css-resize"),"css-revert-value":require("./features/css-revert-value"),"css-rrggbbaa":require("./features/css-rrggbbaa"),"css-scroll-behavior":require("./features/css-scroll-behavior"),"css-scroll-timeline":require("./features/css-scroll-timeline"),"css-scrollbar":require("./features/css-scrollbar"),"css-sel2":require("./features/css-sel2"),"css-sel3":require("./features/css-sel3"),"css-selection":require("./features/css-selection"),"css-shapes":require("./features/css-shapes"),"css-snappoints":require("./features/css-snappoints"),"css-sticky":require("./features/css-sticky"),"css-subgrid":require("./features/css-subgrid"),"css-supports-api":require("./features/css-supports-api"),"css-table":require("./features/css-table"),"css-text-align-last":require("./features/css-text-align-last"),"css-text-indent":require("./features/css-text-indent"),"css-text-justify":require("./features/css-text-justify"),"css-text-orientation":require("./features/css-text-orientation"),"css-text-spacing":require("./features/css-text-spacing"),"css-textshadow":require("./features/css-textshadow"),"css-touch-action-2":require("./features/css-touch-action-2"),"css-touch-action":require("./features/css-touch-action"),"css-transitions":require("./features/css-transitions"),"css-unicode-bidi":require("./features/css-unicode-bidi"),"css-unset-value":require("./features/css-unset-value"),"css-variables":require("./features/css-variables"),"css-when-else":require("./features/css-when-else"),"css-widows-orphans":require("./features/css-widows-orphans"),"css-width-stretch":require("./features/css-width-stretch"),"css-writing-mode":require("./features/css-writing-mode"),"css-zoom":require("./features/css-zoom"),"css3-attr":require("./features/css3-attr"),"css3-boxsizing":require("./features/css3-boxsizing"),"css3-colors":require("./features/css3-colors"),"css3-cursors-grab":require("./features/css3-cursors-grab"),"css3-cursors-newer":require("./features/css3-cursors-newer"),"css3-cursors":require("./features/css3-cursors"),"css3-tabsize":require("./features/css3-tabsize"),"currentcolor":require("./features/currentcolor"),"custom-elements":require("./features/custom-elements"),"custom-elementsv1":require("./features/custom-elementsv1"),"customevent":require("./features/customevent"),"datalist":require("./features/datalist"),"dataset":require("./features/dataset"),"datauri":require("./features/datauri"),"date-tolocaledatestring":require("./features/date-tolocaledatestring"),"declarative-shadow-dom":require("./features/declarative-shadow-dom"),"decorators":require("./features/decorators"),"details":require("./features/details"),"deviceorientation":require("./features/deviceorientation"),"devicepixelratio":require("./features/devicepixelratio"),"dialog":require("./features/dialog"),"dispatchevent":require("./features/dispatchevent"),"dnssec":require("./features/dnssec"),"do-not-track":require("./features/do-not-track"),"document-currentscript":require("./features/document-currentscript"),"document-evaluate-xpath":require("./features/document-evaluate-xpath"),"document-execcommand":require("./features/document-execcommand"),"document-policy":require("./features/document-policy"),"document-scrollingelement":require("./features/document-scrollingelement"),"documenthead":require("./features/documenthead"),"dom-manip-convenience":require("./features/dom-manip-convenience"),"dom-range":require("./features/dom-range"),"domcontentloaded":require("./features/domcontentloaded"),"domfocusin-domfocusout-events":require("./features/domfocusin-domfocusout-events"),"dommatrix":require("./features/dommatrix"),"download":require("./features/download"),"dragndrop":require("./features/dragndrop"),"element-closest":require("./features/element-closest"),"element-from-point":require("./features/element-from-point"),"element-scroll-methods":require("./features/element-scroll-methods"),"eme":require("./features/eme"),"eot":require("./features/eot"),"es5":require("./features/es5"),"es6-class":require("./features/es6-class"),"es6-generators":require("./features/es6-generators"),"es6-module-dynamic-import":require("./features/es6-module-dynamic-import"),"es6-module":require("./features/es6-module"),"es6-number":require("./features/es6-number"),"es6-string-includes":require("./features/es6-string-includes"),"es6":require("./features/es6"),"eventsource":require("./features/eventsource"),"extended-system-fonts":require("./features/extended-system-fonts"),"feature-policy":require("./features/feature-policy"),"fetch":require("./features/fetch"),"fieldset-disabled":require("./features/fieldset-disabled"),"fileapi":require("./features/fileapi"),"filereader":require("./features/filereader"),"filereadersync":require("./features/filereadersync"),"filesystem":require("./features/filesystem"),"flac":require("./features/flac"),"flexbox-gap":require("./features/flexbox-gap"),"flexbox":require("./features/flexbox"),"flow-root":require("./features/flow-root"),"focusin-focusout-events":require("./features/focusin-focusout-events"),"focusoptions-preventscroll":require("./features/focusoptions-preventscroll"),"font-family-system-ui":require("./features/font-family-system-ui"),"font-feature":require("./features/font-feature"),"font-kerning":require("./features/font-kerning"),"font-loading":require("./features/font-loading"),"font-metrics-overrides":require("./features/font-metrics-overrides"),"font-size-adjust":require("./features/font-size-adjust"),"font-smooth":require("./features/font-smooth"),"font-unicode-range":require("./features/font-unicode-range"),"font-variant-alternates":require("./features/font-variant-alternates"),"font-variant-numeric":require("./features/font-variant-numeric"),"fontface":require("./features/fontface"),"form-attribute":require("./features/form-attribute"),"form-submit-attributes":require("./features/form-submit-attributes"),"form-validation":require("./features/form-validation"),"forms":require("./features/forms"),"fullscreen":require("./features/fullscreen"),"gamepad":require("./features/gamepad"),"geolocation":require("./features/geolocation"),"getboundingclientrect":require("./features/getboundingclientrect"),"getcomputedstyle":require("./features/getcomputedstyle"),"getelementsbyclassname":require("./features/getelementsbyclassname"),"getrandomvalues":require("./features/getrandomvalues"),"gyroscope":require("./features/gyroscope"),"hardwareconcurrency":require("./features/hardwareconcurrency"),"hashchange":require("./features/hashchange"),"heif":require("./features/heif"),"hevc":require("./features/hevc"),"hidden":require("./features/hidden"),"high-resolution-time":require("./features/high-resolution-time"),"history":require("./features/history"),"html-media-capture":require("./features/html-media-capture"),"html5semantic":require("./features/html5semantic"),"http-live-streaming":require("./features/http-live-streaming"),"http2":require("./features/http2"),"http3":require("./features/http3"),"iframe-sandbox":require("./features/iframe-sandbox"),"iframe-seamless":require("./features/iframe-seamless"),"iframe-srcdoc":require("./features/iframe-srcdoc"),"imagecapture":require("./features/imagecapture"),"ime":require("./features/ime"),"img-naturalwidth-naturalheight":require("./features/img-naturalwidth-naturalheight"),"import-maps":require("./features/import-maps"),"imports":require("./features/imports"),"indeterminate-checkbox":require("./features/indeterminate-checkbox"),"indexeddb":require("./features/indexeddb"),"indexeddb2":require("./features/indexeddb2"),"inline-block":require("./features/inline-block"),"innertext":require("./features/innertext"),"input-autocomplete-onoff":require("./features/input-autocomplete-onoff"),"input-color":require("./features/input-color"),"input-datetime":require("./features/input-datetime"),"input-email-tel-url":require("./features/input-email-tel-url"),"input-event":require("./features/input-event"),"input-file-accept":require("./features/input-file-accept"),"input-file-directory":require("./features/input-file-directory"),"input-file-multiple":require("./features/input-file-multiple"),"input-inputmode":require("./features/input-inputmode"),"input-minlength":require("./features/input-minlength"),"input-number":require("./features/input-number"),"input-pattern":require("./features/input-pattern"),"input-placeholder":require("./features/input-placeholder"),"input-range":require("./features/input-range"),"input-search":require("./features/input-search"),"input-selection":require("./features/input-selection"),"insert-adjacent":require("./features/insert-adjacent"),"insertadjacenthtml":require("./features/insertadjacenthtml"),"internationalization":require("./features/internationalization"),"intersectionobserver-v2":require("./features/intersectionobserver-v2"),"intersectionobserver":require("./features/intersectionobserver"),"intl-pluralrules":require("./features/intl-pluralrules"),"intrinsic-width":require("./features/intrinsic-width"),"jpeg2000":require("./features/jpeg2000"),"jpegxl":require("./features/jpegxl"),"jpegxr":require("./features/jpegxr"),"js-regexp-lookbehind":require("./features/js-regexp-lookbehind"),"json":require("./features/json"),"justify-content-space-evenly":require("./features/justify-content-space-evenly"),"kerning-pairs-ligatures":require("./features/kerning-pairs-ligatures"),"keyboardevent-charcode":require("./features/keyboardevent-charcode"),"keyboardevent-code":require("./features/keyboardevent-code"),"keyboardevent-getmodifierstate":require("./features/keyboardevent-getmodifierstate"),"keyboardevent-key":require("./features/keyboardevent-key"),"keyboardevent-location":require("./features/keyboardevent-location"),"keyboardevent-which":require("./features/keyboardevent-which"),"lazyload":require("./features/lazyload"),"let":require("./features/let"),"link-icon-png":require("./features/link-icon-png"),"link-icon-svg":require("./features/link-icon-svg"),"link-rel-dns-prefetch":require("./features/link-rel-dns-prefetch"),"link-rel-modulepreload":require("./features/link-rel-modulepreload"),"link-rel-preconnect":require("./features/link-rel-preconnect"),"link-rel-prefetch":require("./features/link-rel-prefetch"),"link-rel-preload":require("./features/link-rel-preload"),"link-rel-prerender":require("./features/link-rel-prerender"),"loading-lazy-attr":require("./features/loading-lazy-attr"),"localecompare":require("./features/localecompare"),"magnetometer":require("./features/magnetometer"),"matchesselector":require("./features/matchesselector"),"matchmedia":require("./features/matchmedia"),"mathml":require("./features/mathml"),"maxlength":require("./features/maxlength"),"media-attribute":require("./features/media-attribute"),"media-fragments":require("./features/media-fragments"),"media-session-api":require("./features/media-session-api"),"mediacapture-fromelement":require("./features/mediacapture-fromelement"),"mediarecorder":require("./features/mediarecorder"),"mediasource":require("./features/mediasource"),"menu":require("./features/menu"),"meta-theme-color":require("./features/meta-theme-color"),"meter":require("./features/meter"),"midi":require("./features/midi"),"minmaxwh":require("./features/minmaxwh"),"mp3":require("./features/mp3"),"mpeg-dash":require("./features/mpeg-dash"),"mpeg4":require("./features/mpeg4"),"multibackgrounds":require("./features/multibackgrounds"),"multicolumn":require("./features/multicolumn"),"mutation-events":require("./features/mutation-events"),"mutationobserver":require("./features/mutationobserver"),"namevalue-storage":require("./features/namevalue-storage"),"native-filesystem-api":require("./features/native-filesystem-api"),"nav-timing":require("./features/nav-timing"),"navigator-language":require("./features/navigator-language"),"netinfo":require("./features/netinfo"),"notifications":require("./features/notifications"),"object-entries":require("./features/object-entries"),"object-fit":require("./features/object-fit"),"object-observe":require("./features/object-observe"),"object-values":require("./features/object-values"),"objectrtc":require("./features/objectrtc"),"offline-apps":require("./features/offline-apps"),"offscreencanvas":require("./features/offscreencanvas"),"ogg-vorbis":require("./features/ogg-vorbis"),"ogv":require("./features/ogv"),"ol-reversed":require("./features/ol-reversed"),"once-event-listener":require("./features/once-event-listener"),"online-status":require("./features/online-status"),"opus":require("./features/opus"),"orientation-sensor":require("./features/orientation-sensor"),"outline":require("./features/outline"),"pad-start-end":require("./features/pad-start-end"),"page-transition-events":require("./features/page-transition-events"),"pagevisibility":require("./features/pagevisibility"),"passive-event-listener":require("./features/passive-event-listener"),"passwordrules":require("./features/passwordrules"),"path2d":require("./features/path2d"),"payment-request":require("./features/payment-request"),"pdf-viewer":require("./features/pdf-viewer"),"permissions-api":require("./features/permissions-api"),"permissions-policy":require("./features/permissions-policy"),"picture-in-picture":require("./features/picture-in-picture"),"picture":require("./features/picture"),"ping":require("./features/ping"),"png-alpha":require("./features/png-alpha"),"pointer-events":require("./features/pointer-events"),"pointer":require("./features/pointer"),"pointerlock":require("./features/pointerlock"),"portals":require("./features/portals"),"prefers-color-scheme":require("./features/prefers-color-scheme"),"prefers-reduced-motion":require("./features/prefers-reduced-motion"),"private-class-fields":require("./features/private-class-fields"),"private-methods-and-accessors":require("./features/private-methods-and-accessors"),"progress":require("./features/progress"),"promise-finally":require("./features/promise-finally"),"promises":require("./features/promises"),"proximity":require("./features/proximity"),"proxy":require("./features/proxy"),"public-class-fields":require("./features/public-class-fields"),"publickeypinning":require("./features/publickeypinning"),"push-api":require("./features/push-api"),"queryselector":require("./features/queryselector"),"readonly-attr":require("./features/readonly-attr"),"referrer-policy":require("./features/referrer-policy"),"registerprotocolhandler":require("./features/registerprotocolhandler"),"rel-noopener":require("./features/rel-noopener"),"rel-noreferrer":require("./features/rel-noreferrer"),"rellist":require("./features/rellist"),"rem":require("./features/rem"),"requestanimationframe":require("./features/requestanimationframe"),"requestidlecallback":require("./features/requestidlecallback"),"resizeobserver":require("./features/resizeobserver"),"resource-timing":require("./features/resource-timing"),"rest-parameters":require("./features/rest-parameters"),"rtcpeerconnection":require("./features/rtcpeerconnection"),"ruby":require("./features/ruby"),"run-in":require("./features/run-in"),"same-site-cookie-attribute":require("./features/same-site-cookie-attribute"),"screen-orientation":require("./features/screen-orientation"),"script-async":require("./features/script-async"),"script-defer":require("./features/script-defer"),"scrollintoview":require("./features/scrollintoview"),"scrollintoviewifneeded":require("./features/scrollintoviewifneeded"),"sdch":require("./features/sdch"),"selection-api":require("./features/selection-api"),"server-timing":require("./features/server-timing"),"serviceworkers":require("./features/serviceworkers"),"setimmediate":require("./features/setimmediate"),"sha-2":require("./features/sha-2"),"shadowdom":require("./features/shadowdom"),"shadowdomv1":require("./features/shadowdomv1"),"sharedarraybuffer":require("./features/sharedarraybuffer"),"sharedworkers":require("./features/sharedworkers"),"sni":require("./features/sni"),"spdy":require("./features/spdy"),"speech-recognition":require("./features/speech-recognition"),"speech-synthesis":require("./features/speech-synthesis"),"spellcheck-attribute":require("./features/spellcheck-attribute"),"sql-storage":require("./features/sql-storage"),"srcset":require("./features/srcset"),"stream":require("./features/stream"),"streams":require("./features/streams"),"stricttransportsecurity":require("./features/stricttransportsecurity"),"style-scoped":require("./features/style-scoped"),"subresource-integrity":require("./features/subresource-integrity"),"svg-css":require("./features/svg-css"),"svg-filters":require("./features/svg-filters"),"svg-fonts":require("./features/svg-fonts"),"svg-fragment":require("./features/svg-fragment"),"svg-html":require("./features/svg-html"),"svg-html5":require("./features/svg-html5"),"svg-img":require("./features/svg-img"),"svg-smil":require("./features/svg-smil"),"svg":require("./features/svg"),"sxg":require("./features/sxg"),"tabindex-attr":require("./features/tabindex-attr"),"template-literals":require("./features/template-literals"),"template":require("./features/template"),"temporal":require("./features/temporal"),"testfeat":require("./features/testfeat"),"text-decoration":require("./features/text-decoration"),"text-emphasis":require("./features/text-emphasis"),"text-overflow":require("./features/text-overflow"),"text-size-adjust":require("./features/text-size-adjust"),"text-stroke":require("./features/text-stroke"),"text-underline-offset":require("./features/text-underline-offset"),"textcontent":require("./features/textcontent"),"textencoder":require("./features/textencoder"),"tls1-1":require("./features/tls1-1"),"tls1-2":require("./features/tls1-2"),"tls1-3":require("./features/tls1-3"),"token-binding":require("./features/token-binding"),"touch":require("./features/touch"),"transforms2d":require("./features/transforms2d"),"transforms3d":require("./features/transforms3d"),"trusted-types":require("./features/trusted-types"),"ttf":require("./features/ttf"),"typedarrays":require("./features/typedarrays"),"u2f":require("./features/u2f"),"unhandledrejection":require("./features/unhandledrejection"),"upgradeinsecurerequests":require("./features/upgradeinsecurerequests"),"url-scroll-to-text-fragment":require("./features/url-scroll-to-text-fragment"),"url":require("./features/url"),"urlsearchparams":require("./features/urlsearchparams"),"use-strict":require("./features/use-strict"),"user-select-none":require("./features/user-select-none"),"user-timing":require("./features/user-timing"),"variable-fonts":require("./features/variable-fonts"),"vector-effect":require("./features/vector-effect"),"vibration":require("./features/vibration"),"video":require("./features/video"),"videotracks":require("./features/videotracks"),"viewport-unit-variants":require("./features/viewport-unit-variants"),"viewport-units":require("./features/viewport-units"),"wai-aria":require("./features/wai-aria"),"wake-lock":require("./features/wake-lock"),"wasm":require("./features/wasm"),"wav":require("./features/wav"),"wbr-element":require("./features/wbr-element"),"web-animation":require("./features/web-animation"),"web-app-manifest":require("./features/web-app-manifest"),"web-bluetooth":require("./features/web-bluetooth"),"web-serial":require("./features/web-serial"),"web-share":require("./features/web-share"),"webauthn":require("./features/webauthn"),"webgl":require("./features/webgl"),"webgl2":require("./features/webgl2"),"webgpu":require("./features/webgpu"),"webhid":require("./features/webhid"),"webkit-user-drag":require("./features/webkit-user-drag"),"webm":require("./features/webm"),"webnfc":require("./features/webnfc"),"webp":require("./features/webp"),"websockets":require("./features/websockets"),"webusb":require("./features/webusb"),"webvr":require("./features/webvr"),"webvtt":require("./features/webvtt"),"webworkers":require("./features/webworkers"),"webxr":require("./features/webxr"),"will-change":require("./features/will-change"),"woff":require("./features/woff"),"woff2":require("./features/woff2"),"word-break":require("./features/word-break"),"wordwrap":require("./features/wordwrap"),"x-doc-messaging":require("./features/x-doc-messaging"),"x-frame-options":require("./features/x-frame-options"),"xhr2":require("./features/xhr2"),"xhtml":require("./features/xhtml"),"xhtmlsmil":require("./features/xhtmlsmil"),"xml-serializer":require("./features/xml-serializer")}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/aac.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/aac.js index 853c5f920ccb4d..e5326c80f310c0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/aac.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/aac.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m tB uB","132":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F","16":"A B"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"2":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"132":"T"},N:{"1":"A","2":"B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"132":"rC"}},B:6,C:"AAC audio file format"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB mB I n J D E F A B C K L G M N O o p q 0B 1B","132":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F","16":"A B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB"},H:{"2":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"132":"X"},N:{"1":"A","2":"B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"132":"yC"}},B:6,C:"AAC audio file format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/abortcontroller.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/abortcontroller.js index db9f65ad657b5d..4ecdde5749e374 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/abortcontroller.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/abortcontroller.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G"},C:{"1":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB tB uB"},D:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB"},E:{"1":"K L G gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB","130":"C fB"},F:{"1":"IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB 7B 8B 9B AC fB pB BC gB"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"iC mB jC kC lC mC nC oC","2":"I eC fC gC hC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:1,C:"AbortController & AbortSignal"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G"},C:{"1":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB 0B 1B"},D:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB"},E:{"1":"K L G kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB","130":"C jB"},F:{"1":"MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB EC FC GC HC jB wB IC kB"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"pC sB qC rC sC tC uC lB vC","2":"I lC mC nC oC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:1,C:"AbortController & AbortSignal"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ac3-ec3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ac3-ec3.js index 4780805fd4e42f..6a3f70a20f16a9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ac3-ec3.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ac3-ec3.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O","2":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC","132":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D","132":"A"},K:{"2":"A B C U fB pB","132":"gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"132":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"AC-3 (Dolby Digital) and EC-3 (Dolby Digital Plus) codecs"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O","2":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC","132":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D","132":"A"},K:{"2":"A B C Y jB wB","132":"kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"132":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"AC-3 (Dolby Digital) and EC-3 (Dolby Digital Plus) codecs"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/accelerometer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/accelerometer.js index f554ba71d4126e..70e143b1c4111c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/accelerometer.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/accelerometer.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","194":"NB iB OB jB PB QB U RB SB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:4,C:"Accelerometer"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","194":"RB nB SB oB TB UB Y VB WB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"Accelerometer"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/addeventlistener.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/addeventlistener.js index 80f099a1e756f5..1bd60552b4d679 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/addeventlistener.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/addeventlistener.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","130":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","257":"sB hB I j J tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"EventTarget.addEventListener()"}; +module.exports={A:{A:{"1":"F A B","130":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","257":"zB mB I n J 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"EventTarget.addEventListener()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/alternate-stylesheet.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/alternate-stylesheet.js index e54569ac2e5ef7..4cb9d7e313580d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/alternate-stylesheet.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/alternate-stylesheet.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"E F A B","2":"J D rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"F B C 7B 8B 9B AC fB pB BC gB","16":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"16":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"16":"D A"},K:{"2":"U","16":"A B C fB pB gB"},L:{"16":"H"},M:{"16":"T"},N:{"16":"A B"},O:{"16":"dC"},P:{"16":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"16":"qC"},S:{"1":"rC"}},B:1,C:"Alternate stylesheet"}; +module.exports={A:{A:{"1":"E F A B","2":"J D yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"F B C EC FC GC HC jB wB IC kB","16":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"16":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"16":"D A"},K:{"2":"Y","16":"A B C jB wB kB"},L:{"16":"H"},M:{"16":"X"},N:{"16":"A B"},O:{"16":"kC"},P:{"16":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"16":"xC"},S:{"1":"yC"}},B:1,C:"Alternate stylesheet"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ambient-light.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ambient-light.js index bf00ea9c28112d..030f3431611356 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ambient-light.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ambient-light.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K","132":"L G M N O","322":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m tB uB","132":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB","194":"OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","322":"NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB 7B 8B 9B AC fB pB BC gB","322":"ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"132":"rC"}},B:4,C:"Ambient Light Sensor"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K","132":"L G M N O","322":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB mB I n J D E F A B C K L G M N O o p q 0B 1B","132":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB","194":"SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","322":"RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB EC FC GC HC jB wB IC kB","322":"dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"132":"yC"}},B:4,C:"Ambient Light Sensor"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/apng.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/apng.js index 91905aad93e3d1..cd883a96e78941 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/apng.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/apng.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB"},D:{"1":"iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"1":"E F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B 1B"},F:{"1":"B C BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"0 1 2 3 4 5 6 7 8 9 F G M N O k l m n o p q r s t u v w x y z AB"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","2":"I eC fC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:7,C:"Animated PNG (APNG)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB"},D:{"1":"nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},E:{"1":"E F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B 7B"},F:{"1":"B C FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"0 1 2 3 4 5 6 7 8 9 F G M N O o p q r s t u v w x y z AB BB CB DB EB"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","2":"I lC mC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:7,C:"Animated PNG (APNG)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find-index.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find-index.js index 5053e85e30fde2..def926417b186a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find-index.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find-index.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p tB uB"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w 7B 8B 9B AC fB pB BC gB"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D","16":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Array.prototype.findIndex"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t 0B 1B"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB"},E:{"1":"E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D","16":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Array.prototype.findIndex"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find.js index 12041d0c04e1bf..1c76b1573e8663 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"G M N O P Q R S V W X Y Z a b c d e f g T h H i","16":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p tB uB"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w 7B 8B 9B AC fB pB BC gB"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D","16":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Array.prototype.find"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","16":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t 0B 1B"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB"},E:{"1":"E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D","16":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Array.prototype.find"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-flat.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-flat.js index c3437a63f758e9..40b027c164f56b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-flat.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-flat.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB tB uB"},D:{"1":"VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB"},E:{"1":"C K L G gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB fB"},F:{"1":"LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 7B 8B 9B AC fB pB BC gB"},G:{"1":"NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mB jC kC lC mC nC oC","2":"I eC fC gC hC iC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"flat & flatMap array methods"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB 0B 1B"},D:{"1":"ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB"},E:{"1":"C K L G kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB jB"},F:{"1":"PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB EC FC GC HC jB wB IC kB"},G:{"1":"UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"sB qC rC sC tC uC lB vC","2":"I lC mC nC oC pC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"flat & flatMap array methods"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-includes.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-includes.js index e3524458aee51d..875ac5677c32ae 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-includes.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-includes.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w x y 7B 8B 9B AC fB pB BC gB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Array.prototype.includes"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB 0B 1B"},D:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Array.prototype.includes"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/arrow-functions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/arrow-functions.js index 560ab90316f9be..69fc935bb0c026 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/arrow-functions.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/arrow-functions.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m tB uB"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w 7B 8B 9B AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Arrow functions"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q 0B 1B"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Arrow functions"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/asmjs.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/asmjs.js index b3efed2bdc9b1b..e57503feef019f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/asmjs.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/asmjs.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O","132":"P Q R S V W X Y Z a b c d e f g T h H i","322":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m tB uB"},D:{"2":"I j J D E F A B C K L G M N O k l m n o p q r s","132":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","132":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","132":"H"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","132":"U"},L:{"132":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I","132":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"132":"pC"},R:{"132":"qC"},S:{"1":"rC"}},B:6,C:"asm.js"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O","132":"P Q R S T U V W Z a b c d e f g h i j k l X m H","322":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q 0B 1B"},D:{"2":"I n J D E F A B C K L G M N O o p q r s t u v w","132":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","132":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","132":"H"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","132":"Y"},L:{"132":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I","132":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"132":"wC"},R:{"132":"xC"},S:{"1":"yC"}},B:6,C:"asm.js"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-clipboard.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-clipboard.js index 890523f2d2179f..fba6f1df10cdc4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-clipboard.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-clipboard.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB tB uB","132":"QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","66":"NB iB OB jB"},E:{"1":"L G 3B 4B 5B nB oB 6B","2":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC","260":"TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","260":"H"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","260":"U"},L:{"1":"H"},M:{"132":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC","260":"iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"Asynchronous Clipboard API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB 0B 1B","132":"UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","66":"RB nB SB oB"},E:{"1":"L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC","260":"aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","260":"H"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","260":"Y"},L:{"1":"H"},M:{"132":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC","260":"pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"Asynchronous Clipboard API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-functions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-functions.js index 866316fd526577..943f8eda61e390 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-functions.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-functions.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K","194":"L"},C:{"1":"HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB tB uB"},D:{"1":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B","514":"mB"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC","514":"KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I eC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"Async functions"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K","194":"L"},C:{"1":"LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 0B 1B"},D:{"1":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B","514":"sB"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB EC FC GC HC jB wB IC kB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC","514":"RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I lC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"Async functions"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/atob-btoa.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/atob-btoa.js index 9531309d82bc37..4fb45be2fa407d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/atob-btoa.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/atob-btoa.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S AC fB pB BC gB","2":"F 7B 8B","16":"9B"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","16":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Base64 encoding and decoding"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W HC jB wB IC kB","2":"F EC FC","16":"GC"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","16":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Base64 encoding and decoding"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio-api.js index 5d3acafb496e08..fe23732639ede1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio-api.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio-api.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K","33":"L G M N O k l m n o p q r s t u v w x y"},E:{"1":"G 4B 5B nB oB 6B","2":"I j yB lB zB","33":"J D E F A B C K L 0B 1B 2B mB fB gB 3B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","33":"G M N O k l m"},G:{"1":"UC VC nB oB","2":"lB CC qB DC","33":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"Web Audio API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t 0B 1B"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K","33":"0 1 2 L G M N O o p q r s t u v w x y z"},E:{"1":"G AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B","33":"J D E F A B C K L 6B 7B 8B sB jB kB 9B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","33":"G M N O o p q"},G:{"1":"bC cC tB uB vB lB","2":"rB JC xB KC","33":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"Web Audio API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio.js index f747d8cf6e3b6d..e52e1d14a70daa 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB","132":"I j J D E F A B C K L G M N O k tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F","4":"7B 8B"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB"},H:{"2":"WC"},I:{"1":"hB I H ZC aC qB bC cC","2":"XC YC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Audio element"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB","132":"I n J D E F A B C K L G M N O o 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F","4":"EC FC"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB"},H:{"2":"dC"},I:{"1":"mB I H gC hC xB iC jC","2":"eC fC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Audio element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audiotracks.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audiotracks.js index d31b771956169d..062c64d6768c2c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audiotracks.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audiotracks.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O","322":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x tB uB","194":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","322":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB"},F:{"2":"F B C G M N O k l m n o p q r s t u v w 7B 8B 9B AC fB pB BC gB","322":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"322":"H"},M:{"2":"T"},N:{"1":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"194":"rC"}},B:1,C:"Audio Tracks"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O","322":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","194":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB","322":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B"},F:{"2":"0 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","322":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"322":"H"},M:{"2":"X"},N:{"1":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"194":"yC"}},B:1,C:"Audio Tracks"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/autofocus.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/autofocus.js index 9624cb09c80856..8850e98d30aaff 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/autofocus.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/autofocus.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"2":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:1,C:"Autofocus attribute"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"2":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:1,C:"Autofocus attribute"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/auxclick.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/auxclick.js index c07b978c657749..b7f1d5b40c43bd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/auxclick.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/auxclick.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB tB uB","129":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:5,C:"Auxclick"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 0B 1B","129":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:5,C:"Auxclick"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/av1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/av1.js index 8cace6ce03787d..967b50e70d09ae 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/av1.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/av1.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N","194":"O"},C:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB tB uB","66":"KB LB MB NB iB OB jB PB QB U","260":"RB","516":"SB"},D:{"1":"WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB","66":"TB UB VB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1090":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"kC lC mC nC oC","2":"I eC fC gC hC iC mB jC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"AV1 video format"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N","194":"O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB 0B 1B","66":"OB PB QB RB nB SB oB TB UB Y","260":"VB","516":"WB"},D:{"1":"aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB","66":"XB YB ZB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1090":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"rC sC tC uC lB vC","2":"I lC mC nC oC pC sB qC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"AV1 video format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/avif.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/avif.js index a37b69554db0fb..d82ec54ba6b4c0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/avif.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/avif.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB tB uB","194":"dB eB P Q R kB S V W X Y Z a b c d","257":"e f g T h H i"},D:{"1":"W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mC nC oC","2":"I eC fC gC hC iC mB jC kC lC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"AVIF image format"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB 0B 1B","194":"hB iB P Q R pB S T U V W Z a b c d","257":"e f g h i j k l X m H qB"},D:{"1":"U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC","516":"lB DC"},F:{"1":"bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB EC FC GC HC jB wB IC kB"},G:{"1":"lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"tC uC lB vC","2":"I lC mC nC oC pC sB qC rC sC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"AVIF image format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-attachment.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-attachment.js index 1c61d13ba3bbd0..5dc4c808b133e4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-attachment.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-attachment.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","132":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","132":"sB hB I j J D E F A B C K L G M N O k l m n o p tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"j J D E F A B C zB 0B 1B 2B mB fB gB","132":"I K yB lB 3B","2050":"L G 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","132":"F 7B 8B"},G:{"2":"lB CC qB","772":"E DC EC FC GC HC IC JC KC LC MC NC OC","2050":"PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC bC cC","132":"aC qB"},J:{"260":"D A"},K:{"1":"B C fB pB gB","2":"U","132":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"2":"I","1028":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1028":"qC"},S:{"1":"rC"}},B:4,C:"CSS background-attachment"}; +module.exports={A:{A:{"1":"F A B","132":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","132":"zB mB I n J D E F A B C K L G M N O o p q r s t 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"n J D E F A B C 5B 6B 7B 8B sB jB kB","132":"I K 4B rB 9B","2050":"L G AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","132":"F EC FC"},G:{"2":"rB JC xB","772":"E KC LC MC NC OC PC QC RC SC TC UC VC","2050":"WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC iC jC","132":"hC xB"},J:{"260":"D A"},K:{"1":"B C jB wB kB","2":"Y","132":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"2":"I","1028":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1028":"xC"},S:{"1":"yC"}},B:4,C:"CSS background-attachment"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-clip-text.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-clip-text.js index 8af5dafefe5464..26473802c596a1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-clip-text.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-clip-text.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"G M N O","33":"C K L P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB tB uB"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"L G 4B 5B nB oB 6B","16":"yB lB","33":"I j J D E F A B C K zB 0B 1B 2B mB fB gB 3B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"TC UC VC nB oB","16":"lB CC qB DC","33":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC"},H:{"2":"WC"},I:{"16":"hB XC YC ZC","33":"I H aC qB bC cC"},J:{"33":"D A"},K:{"16":"A B C fB pB gB","33":"U"},L:{"33":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"33":"dC"},P:{"33":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"33":"pC"},R:{"33":"qC"},S:{"1":"rC"}},B:7,C:"Background-clip: text"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"G M N O","33":"C K L P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB 0B 1B"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"L G AC BC tB uB vB CC lB DC","16":"4B rB","33":"I n J D E F A B C K 5B 6B 7B 8B sB jB kB 9B"},F:{"2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"aC bC cC tB uB vB lB","16":"rB JC xB KC","33":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC"},H:{"2":"dC"},I:{"16":"mB eC fC gC","33":"I H hC xB iC jC"},J:{"33":"D A"},K:{"16":"A B C jB wB kB","33":"Y"},L:{"33":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"33":"kC"},P:{"33":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"33":"wC"},R:{"33":"xC"},S:{"1":"yC"}},B:7,C:"Background-clip: text"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-img-opts.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-img-opts.js index 7e42289e41d21d..d689dc0f0bb835 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-img-opts.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-img-opts.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB","36":"uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","516":"I j J D E F A B C K L"},E:{"1":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","772":"I j J yB lB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B","36":"8B"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","4":"lB CC qB EC","516":"DC"},H:{"132":"WC"},I:{"1":"H bC cC","36":"XC","516":"hB I aC qB","548":"YC ZC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS3 Background-image options"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B","36":"1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","516":"I n J D E F A B C K L"},E:{"1":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","772":"I n J 4B rB 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC","36":"FC"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","4":"rB JC xB LC","516":"KC"},H:{"132":"dC"},I:{"1":"H iC jC","36":"eC","516":"mB I hC xB","548":"fC gC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS3 Background-image options"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-position-x-y.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-position-x-y.js index 2ed9b31deb4b79..d9a21eaa912822 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-position-x-y.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-position-x-y.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:7,C:"background-position-x & background-position-y"}; +module.exports={A:{A:{"1":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:7,C:"background-position-x & background-position-y"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-repeat-round-space.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-repeat-round-space.js index 837443ddceb25a..3c9e12458b3483 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-repeat-round-space.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-repeat-round-space.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E rB","132":"F"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w"},E:{"1":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F G M N O 7B 8B"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"1":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:4,C:"CSS background-repeat round and space"}; +module.exports={A:{A:{"1":"A B","2":"J D E yB","132":"F"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB 0B 1B"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F G M N O EC FC"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"1":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:4,C:"CSS background-repeat round and space"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-sync.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-sync.js index 2840aaeeeb419d..6d403506475a9d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-sync.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-sync.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h tB uB","16":"H i"},D:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Background Sync API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m 0B 1B","16":"H qB"},D:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Background Sync API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/battery-status.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/battery-status.js index f0a1c1cfcc6c59..dcdddcca97817f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/battery-status.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/battery-status.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"8 9 AB BB CB DB EB FB GB","2":"sB hB I j J D E F HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","132":"0 1 2 3 4 5 6 7 M N O k l m n o p q r s t u v w x y z","164":"A B C K L G"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","66":"2"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"Battery Status API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB","2":"zB mB I n J D E F LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","132":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB","164":"A B C K L G"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 I n J D E F A B C K L G M N O o p q r s t u v w x y z","66":"6"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"Battery Status API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beacon.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beacon.js index 4e7761cd1fca64..2b901529e779b9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beacon.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beacon.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v tB uB"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q 7B 8B 9B AC fB pB BC gB"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"Beacon API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u EC FC GC HC jB wB IC kB"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"Beacon API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beforeafterprint.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beforeafterprint.js index a7d9ea2a4697b3..4dd7d06020a148 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beforeafterprint.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beforeafterprint.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B","16":"rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j tB uB"},D:{"1":"QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB"},E:{"1":"K L G 3B 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB gB"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB 7B 8B 9B AC fB pB BC gB"},G:{"1":"PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"16":"D A"},K:{"2":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"16":"A B"},O:{"16":"dC"},P:{"2":"eC fC gC hC iC mB jC kC lC mC nC oC","16":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:1,C:"Printing Events"}; +module.exports={A:{A:{"1":"J D E F A B","16":"yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n 0B 1B"},D:{"1":"UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB"},E:{"1":"K L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB kB"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB EC FC GC HC jB wB IC kB"},G:{"1":"WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"16":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"16":"A B"},O:{"16":"kC"},P:{"2":"lC mC nC oC pC sB qC rC sC tC uC lB vC","16":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:1,C:"Printing Events"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bigint.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bigint.js index d22b577dd8347a..dad7971f660701 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bigint.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bigint.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U tB uB","194":"RB SB TB"},D:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB"},E:{"1":"L G 4B 5B nB oB 6B","2":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB 3B"},F:{"1":"JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB 7B 8B 9B AC fB pB BC gB"},G:{"1":"TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"iC mB jC kC lC mC nC oC","2":"I eC fC gC hC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"BigInt"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y 0B 1B","194":"VB WB XB"},D:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB"},E:{"1":"L G AC BC tB uB vB CC lB DC","2":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB 9B"},F:{"1":"NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC GC HC jB wB IC kB"},G:{"1":"aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"pC sB qC rC sC tC uC lB vC","2":"I lC mC nC oC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"BigInt"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/blobbuilder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/blobbuilder.js index c392847dfff5bf..8b21bb74a2555d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/blobbuilder.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/blobbuilder.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j tB uB","36":"J D E F A B C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D","36":"E F A B C K L G M N O k"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B C 7B 8B 9B AC fB pB BC"},G:{"1":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC"},H:{"2":"WC"},I:{"1":"H","2":"XC YC ZC","36":"hB I aC qB bC cC"},J:{"1":"A","2":"D"},K:{"1":"U gB","2":"A B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"Blob constructing"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n 0B 1B","36":"J D E F A B C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D","36":"E F A B C K L G M N O o"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B C EC FC GC HC jB wB IC"},G:{"1":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC"},H:{"2":"dC"},I:{"1":"H","2":"eC fC gC","36":"mB I hC xB iC jC"},J:{"1":"A","2":"D"},K:{"1":"Y kB","2":"A B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"Blob constructing"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bloburls.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bloburls.js index 3356c4264f5c6a..f1dcaead11a3da 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bloburls.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bloburls.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","129":"A B"},B:{"1":"G M N O P Q R S V W X Y Z a b c d e f g T h H i","129":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D","33":"E F A B C K L G M N O k l m n"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC","33":"EC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB XC YC ZC","33":"I aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"Blob URLs"}; +module.exports={A:{A:{"2":"J D E F yB","129":"A B"},B:{"1":"G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","129":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D","33":"E F A B C K L G M N O o p q r"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC","33":"LC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB eC fC gC","33":"I hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"Blob URLs"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-image.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-image.js index 501a53beec2186..24a67e8b3cd9f8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-image.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-image.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F A rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","129":"C K"},C:{"1":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB","260":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB","804":"I j J D E F A B C K L tB uB"},D:{"1":"LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","260":"GB HB IB JB KB","388":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB","1412":"G M N O k l m n o p q r s t u","1956":"I j J D E F A B C K L"},E:{"129":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","1412":"J D E F 0B 1B","1956":"I j yB lB zB"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F 7B 8B","260":"3 4 5 6 7","388":"0 1 2 G M N O k l m n o p q r s t u v w x y z","1796":"9B AC","1828":"B C fB pB BC gB"},G:{"129":"IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","1412":"E EC FC GC HC","1956":"lB CC qB DC"},H:{"1828":"WC"},I:{"1":"H","388":"bC cC","1956":"hB I XC YC ZC aC qB"},J:{"1412":"A","1924":"D"},K:{"1":"U","2":"A","1828":"B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"388":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","260":"eC fC","388":"I"},Q:{"260":"pC"},R:{"260":"qC"},S:{"260":"rC"}},B:4,C:"CSS3 Border images"}; +module.exports={A:{A:{"1":"B","2":"J D E F A yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","129":"C K"},C:{"1":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB","260":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","804":"I n J D E F A B C K L 0B 1B"},D:{"1":"PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","260":"KB LB MB NB OB","388":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB","1412":"G M N O o p q r s t u v w x y","1956":"I n J D E F A B C K L"},E:{"1":"uB vB CC lB DC","129":"A B C K L G 8B sB jB kB 9B AC BC tB","1412":"J D E F 6B 7B","1956":"I n 4B rB 5B"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F EC FC","260":"7 8 9 AB BB","388":"0 1 2 3 4 5 6 G M N O o p q r s t u v w x y z","1796":"GC HC","1828":"B C jB wB IC kB"},G:{"1":"uB vB lB","129":"PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB","1412":"E LC MC NC OC","1956":"rB JC xB KC"},H:{"1828":"dC"},I:{"1":"H","388":"iC jC","1956":"mB I eC fC gC hC xB"},J:{"1412":"A","1924":"D"},K:{"1":"Y","2":"A","1828":"B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"388":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","260":"lC mC","388":"I"},Q:{"260":"wC"},R:{"260":"xC"},S:{"260":"yC"}},B:4,C:"CSS3 Border images"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-radius.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-radius.js index b87b1b0f2954f6..04e2edbf4f1fda 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-radius.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-radius.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","257":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB","289":"hB tB uB","292":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"I"},E:{"1":"j D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","33":"I yB lB","129":"J zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B 8B"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","33":"lB"},H:{"2":"WC"},I:{"1":"hB I H YC ZC aC qB bC cC","33":"XC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"257":"rC"}},B:4,C:"CSS3 Border-radius (rounded corners)"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","257":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","289":"mB 0B 1B","292":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"I"},E:{"1":"n D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","33":"I 4B rB","129":"J 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC FC"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","33":"rB"},H:{"2":"dC"},I:{"1":"mB I H fC gC hC xB iC jC","33":"eC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"257":"yC"}},B:4,C:"CSS3 Border-radius (rounded corners)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/broadcastchannel.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/broadcastchannel.js index 76742411f6a1a5..d47ace05caa677 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/broadcastchannel.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/broadcastchannel.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB"},E:{"1":"oB 6B","2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","2":"I eC fC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:1,C:"BroadcastChannel"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"uB vB CC lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","2":"I lC mC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:1,C:"BroadcastChannel"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/brotli.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/brotli.js index 11386d3b102960..0d34ebd4f858b7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/brotli.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/brotli.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB","194":"EB","257":"FB"},E:{"1":"K L G 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB","513":"B C fB gB"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","194":"1 2"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:6,C:"Brotli Accept-Encoding/Content-Encoding"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB 0B 1B"},D:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB","194":"IB","257":"JB"},E:{"1":"K L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB","513":"B C jB kB"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","194":"5 6"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:6,C:"Brotli Accept-Encoding/Content-Encoding"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/calc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/calc.js index 757f5f18f82f06..7729b8697ffd95 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/calc.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/calc.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","260":"F","516":"A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","33":"I j J D E F A B C K L G"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O","33":"k l m n o p q"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC","33":"EC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB","132":"bC cC"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"calc() as CSS unit value"}; +module.exports={A:{A:{"2":"J D E yB","260":"F","516":"A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","33":"I n J D E F A B C K L G"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O","33":"o p q r s t u"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC","33":"LC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB","132":"iC jC"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"calc() as CSS unit value"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-blending.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-blending.js index 777c4b3cae4cdb..9570aa2a2f0b2a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-blending.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-blending.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M 7B 8B 9B AC fB pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"Canvas blend modes"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u v w x y"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M EC FC GC HC jB wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"Canvas blend modes"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-text.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-text.js index 7b43e8ff97593c..b35c4db6380227 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-text.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-text.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"rB","8":"J D E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","8":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","8":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","8":"F 7B 8B"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","8":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Text API for Canvas"}; +module.exports={A:{A:{"1":"F A B","2":"yB","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","8":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","8":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","8":"F EC FC"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","8":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Text API for Canvas"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas.js index 414634d972eca0..8964e88f843cbd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"rB","8":"J D E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i uB","132":"sB hB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","132":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"260":"WC"},I:{"1":"hB I H aC qB bC cC","132":"XC YC ZC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Canvas (basic support)"}; +module.exports={A:{A:{"1":"F A B","2":"yB","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 1B","132":"zB mB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","132":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"260":"dC"},I:{"1":"mB I H hC xB iC jC","132":"eC fC gC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Canvas (basic support)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ch-unit.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ch-unit.js index c5a99beeb865ee..7a960c1dca39fc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ch-unit.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ch-unit.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","132":"F A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r"},E:{"1":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"ch (character) unit"}; +module.exports={A:{A:{"2":"J D E yB","132":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u v"},E:{"1":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"ch (character) unit"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/chacha20-poly1305.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/chacha20-poly1305.js index 352843715cbab5..e67074e137cb69 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/chacha20-poly1305.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/chacha20-poly1305.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB tB uB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x","129":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC","16":"cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"ChaCha20-Poly1305 cipher suites for TLS"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB 0B 1B"},D:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 I n J D E F A B C K L G M N O o p q r s t u v w x y z","129":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC","16":"jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"ChaCha20-Poly1305 cipher suites for TLS"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/channel-messaging.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/channel-messaging.js index dcc72c375bc620..cf35d8364775d3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/channel-messaging.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/channel-messaging.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q tB uB","194":"0 1 2 3 4 5 r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S AC fB pB BC gB","2":"F 7B 8B","16":"9B"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Channel messaging"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u 0B 1B","194":"0 1 2 3 4 5 6 7 8 9 v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W HC jB wB IC kB","2":"F EC FC","16":"GC"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Channel messaging"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/childnode-remove.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/childnode-remove.js index 861fdcbc0de863..2c351c945950d9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/childnode-remove.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/childnode-remove.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","16":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB","16":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"ChildNode.remove()"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","16":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B","16":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"ChildNode.remove()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/classlist.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/classlist.js index b69eb29e5228b3..a510173281396b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/classlist.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/classlist.js @@ -1 +1 @@ -module.exports={A:{A:{"8":"J D E F rB","1924":"A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","8":"sB hB tB","516":"p q","772":"I j J D E F A B C K L G M N O k l m n o uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","8":"I j J D","516":"p q r s","772":"o","900":"E F A B C K L G M N O k l m n"},E:{"1":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","8":"I j yB lB","900":"J zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","8":"F B 7B 8B 9B AC fB","900":"C pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","8":"lB CC qB","900":"DC EC"},H:{"900":"WC"},I:{"1":"H bC cC","8":"XC YC ZC","900":"hB I aC qB"},J:{"1":"A","900":"D"},K:{"1":"U","8":"A B","900":"C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"900":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"classList (DOMTokenList)"}; +module.exports={A:{A:{"8":"J D E F yB","1924":"A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","8":"zB mB 0B","516":"t u","772":"I n J D E F A B C K L G M N O o p q r s 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","8":"I n J D","516":"t u v w","772":"s","900":"E F A B C K L G M N O o p q r"},E:{"1":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","8":"I n 4B rB","900":"J 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","8":"F B EC FC GC HC jB","900":"C wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","8":"rB JC xB","900":"KC LC"},H:{"900":"dC"},I:{"1":"H iC jC","8":"eC fC gC","900":"mB I hC xB"},J:{"1":"A","900":"D"},K:{"1":"Y","8":"A B","900":"C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"900":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"classList (DOMTokenList)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js index 907b3a2d7cf687..6a0eaf771c27f3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w x 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"2":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:6,C:"Client Hints: DPR, Width, Viewport-Width"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"2":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:6,C:"Client Hints: DPR, Width, Viewport-Width"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/clipboard.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/clipboard.js index 48405b8082a7e4..415acbdea5ac14 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/clipboard.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/clipboard.js @@ -1 +1 @@ -module.exports={A:{A:{"2436":"J D E F A B rB"},B:{"260":"N O","2436":"C K L G M","8196":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m tB uB","772":"0 1 2 3 4 5 n o p q r s t u v w x y z","4100":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"I j J D E F A B C","2564":"0 1 2 3 4 5 6 7 K L G M N O k l m n o p q r s t u v w x y z","8196":"NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","10244":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"C K L G gB 3B 4B 5B nB oB 6B","16":"yB lB","2308":"A B mB fB","2820":"I j J D E F zB 0B 1B 2B"},F:{"2":"F B 7B 8B 9B AC fB pB BC","16":"C","516":"gB","2564":"G M N O k l m n o p q r s t u","8196":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","10244":"0 1 2 3 4 5 6 7 8 9 v w x y z"},G:{"1":"NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB","2820":"E DC EC FC GC HC IC JC KC LC MC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB","260":"H","2308":"bC cC"},J:{"2":"D","2308":"A"},K:{"2":"A B C fB pB","16":"gB","260":"U"},L:{"8196":"H"},M:{"1028":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2052":"eC fC","2308":"I","8196":"gC hC iC mB jC kC lC mC nC oC"},Q:{"10244":"pC"},R:{"2052":"qC"},S:{"4100":"rC"}},B:5,C:"Synchronous Clipboard API"}; +module.exports={A:{A:{"2436":"J D E F A B yB"},B:{"260":"N O","2436":"C K L G M","8196":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB mB I n J D E F A B C K L G M N O o p q 0B 1B","772":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z","4100":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"I n J D E F A B C","2564":"0 1 2 3 4 5 6 7 8 9 K L G M N O o p q r s t u v w x y z AB BB","8196":"RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","10244":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},E:{"1":"C K L G kB 9B AC BC tB uB vB CC lB DC","16":"4B rB","2308":"A B sB jB","2820":"I n J D E F 5B 6B 7B 8B"},F:{"2":"F B EC FC GC HC jB wB IC","16":"C","516":"kB","2564":"G M N O o p q r s t u v w x y","8196":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","10244":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB"},G:{"1":"UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB","2820":"E KC LC MC NC OC PC QC RC SC TC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB","260":"H","2308":"iC jC"},J:{"2":"D","2308":"A"},K:{"2":"A B C jB wB","16":"kB","260":"Y"},L:{"8196":"H"},M:{"1028":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2052":"lC mC","2308":"I","8196":"nC oC pC sB qC rC sC tC uC lB vC"},Q:{"10244":"wC"},R:{"2052":"xC"},S:{"4100":"yC"}},B:5,C:"Synchronous Clipboard API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr-v1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr-v1.js index 7c34954d85682a..823bc9c7dd8586 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr-v1.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr-v1.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"H i","2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h tB uB","258":"H i"},D:{"1":"H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a","194":"b c d e f g T h"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"16":"D A"},K:{"2":"A B C U fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"16":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"COLR/CPAL(v1) Font Formats"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"j k l X m H","2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i 0B 1B","258":"j k l X m H qB"},D:{"1":"j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a","194":"b c d e f g h i"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"16":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"16":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"COLR/CPAL(v1) Font Formats"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr.js index fa2a46f408903b..65374a2b22ea0a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","257":"F A B"},B:{"1":"C K L G M N O","513":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB","513":"XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"L G 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB","129":"B C K fB gB 3B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB 7B 8B 9B AC fB pB BC gB","513":"NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"16":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"16":"A B"},O:{"1":"dC"},P:{"1":"mB jC kC lC mC nC oC","2":"I eC fC gC hC iC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"COLR/CPAL(v0) Font Formats"}; +module.exports={A:{A:{"2":"J D E yB","257":"F A B"},B:{"1":"C K L G M N O","513":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB","513":"bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"L G AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB","129":"B C K jB kB 9B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB EC FC GC HC jB wB IC kB","513":"RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"16":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"16":"A B"},O:{"1":"kC"},P:{"1":"sB qC rC sC tC uC lB vC","2":"I lC mC nC oC pC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"COLR/CPAL(v0) Font Formats"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/comparedocumentposition.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/comparedocumentposition.js index be02139f7aad25..05eacd67e03b88 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/comparedocumentposition.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/comparedocumentposition.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","16":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L","132":"G M N O k l m n o p q r s t u"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","16":"I j J yB lB","132":"D E F 0B 1B 2B","260":"zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","16":"F B 7B 8B 9B AC fB pB","132":"G M"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB","132":"E CC qB DC EC FC GC HC IC"},H:{"1":"WC"},I:{"1":"H bC cC","16":"XC YC","132":"hB I ZC aC qB"},J:{"132":"D A"},K:{"1":"C U gB","16":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Node.compareDocumentPosition()"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","16":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L","132":"G M N O o p q r s t u v w x y"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I n J 4B rB","132":"D E F 6B 7B 8B","260":"5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","16":"F B EC FC GC HC jB wB","132":"G M"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB","132":"E JC xB KC LC MC NC OC PC"},H:{"1":"dC"},I:{"1":"H iC jC","16":"eC fC","132":"mB I gC hC xB"},J:{"132":"D A"},K:{"1":"C Y kB","16":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Node.compareDocumentPosition()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-basic.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-basic.js index b7d25545e700c0..59c27692a6b255 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-basic.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-basic.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D rB","132":"E F"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S fB pB BC gB","2":"F 7B 8B 9B AC"},G:{"1":"lB CC qB DC","513":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"4097":"WC"},I:{"1025":"hB I H XC YC ZC aC qB bC cC"},J:{"258":"D A"},K:{"2":"A","258":"B C fB pB gB","1025":"U"},L:{"1025":"H"},M:{"2049":"T"},N:{"258":"A B"},O:{"258":"dC"},P:{"1025":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1025":"qC"},S:{"1":"rC"}},B:1,C:"Basic console logging functions"}; +module.exports={A:{A:{"1":"A B","2":"J D yB","132":"E F"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W jB wB IC kB","2":"F EC FC GC HC"},G:{"1":"rB JC xB KC","513":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"4097":"dC"},I:{"1025":"mB I H eC fC gC hC xB iC jC"},J:{"258":"D A"},K:{"2":"A","258":"B C jB wB kB","1025":"Y"},L:{"1025":"H"},M:{"2049":"X"},N:{"258":"A B"},O:{"258":"kC"},P:{"1025":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1025":"xC"},S:{"1":"yC"}},B:1,C:"Basic console logging functions"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-time.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-time.js index d1c4157d3048ba..33e7896085355a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-time.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-time.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F A rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S fB pB BC gB","2":"F 7B 8B 9B AC","16":"B"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"U","16":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"console.time and console.timeEnd"}; +module.exports={A:{A:{"1":"B","2":"J D E F A yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W jB wB IC kB","2":"F EC FC GC HC","16":"B"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"Y","16":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"console.time and console.timeEnd"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/const.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/const.js index 8c0156fbf650d3..bb0c1b131afd9c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/const.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/const.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","2052":"B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","132":"sB hB I j J D E F A B C tB uB","260":"0 K L G M N O k l m n o p q r s t u v w x y z"},D:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","260":"I j J D E F A B C K L G M N O k l","772":"0 1 2 3 4 5 m n o p q r s t u v w x y z","1028":"6 7 8 9 AB BB CB DB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","260":"I j A yB lB mB","772":"J D E F zB 0B 1B 2B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F 7B","132":"B 8B 9B AC fB pB","644":"C BC gB","772":"G M N O k l m n o p q r s","1028":"0 t u v w x y z"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","260":"lB CC qB JC KC","772":"E DC EC FC GC HC IC"},H:{"644":"WC"},I:{"1":"H","16":"XC YC","260":"ZC","772":"hB I aC qB bC cC"},J:{"772":"D A"},K:{"1":"U","132":"A B fB pB","644":"C gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","1028":"I"},Q:{"1":"pC"},R:{"1028":"qC"},S:{"1":"rC"}},B:6,C:"const"}; +module.exports={A:{A:{"2":"J D E F A yB","2052":"B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","132":"zB mB I n J D E F A B C 0B 1B","260":"0 1 2 3 4 K L G M N O o p q r s t u v w x y z"},D:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","260":"I n J D E F A B C K L G M N O o p","772":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z","1028":"AB BB CB DB EB FB GB HB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","260":"I n A 4B rB sB","772":"J D E F 5B 6B 7B 8B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F EC","132":"B FC GC HC jB wB","644":"C IC kB","772":"G M N O o p q r s t u v w","1028":"0 1 2 3 4 x y z"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","260":"rB JC xB QC RC","772":"E KC LC MC NC OC PC"},H:{"644":"dC"},I:{"1":"H","16":"eC fC","260":"gC","772":"mB I hC xB iC jC"},J:{"772":"D A"},K:{"1":"Y","132":"A B jB wB","644":"C kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","1028":"I"},Q:{"1":"wC"},R:{"1028":"xC"},S:{"1":"yC"}},B:6,C:"const"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/constraint-validation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/constraint-validation.js index aa1707042bfae9..3a90a4c2918b9d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/constraint-validation.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/constraint-validation.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","900":"A B"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","388":"L G M","900":"C K"},C:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","260":"EB FB","388":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB","900":"I j J D E F A B C K L G M N O k l m n o p q r s t"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L","388":"0 1 2 3 4 q r s t u v w x y z","900":"G M N O k l m n o p"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","16":"I j yB lB","388":"E F 1B 2B","900":"J D zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","16":"F B 7B 8B 9B AC fB pB","388":"G M N O k l m n o p q r","900":"C BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB","388":"E FC GC HC IC","900":"DC EC"},H:{"2":"WC"},I:{"1":"H","16":"hB XC YC ZC","388":"bC cC","900":"I aC qB"},J:{"16":"D","388":"A"},K:{"1":"U","16":"A B fB pB","900":"C gB"},L:{"1":"H"},M:{"1":"T"},N:{"900":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"388":"rC"}},B:1,C:"Constraint Validation API"}; +module.exports={A:{A:{"2":"J D E F yB","900":"A B"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","388":"L G M","900":"C K"},C:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","260":"IB JB","388":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB","900":"I n J D E F A B C K L G M N O o p q r s t u v w x"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L","388":"0 1 2 3 4 5 6 7 8 u v w x y z","900":"G M N O o p q r s t"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I n 4B rB","388":"E F 7B 8B","900":"J D 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","16":"F B EC FC GC HC jB wB","388":"G M N O o p q r s t u v","900":"C IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB","388":"E MC NC OC PC","900":"KC LC"},H:{"2":"dC"},I:{"1":"H","16":"mB eC fC gC","388":"iC jC","900":"I hC xB"},J:{"16":"D","388":"A"},K:{"1":"Y","16":"A B jB wB","900":"C kB"},L:{"1":"H"},M:{"1":"X"},N:{"900":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"388":"yC"}},B:1,C:"Constraint Validation API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contenteditable.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contenteditable.js index 875204f902c52d..f36eefc0a68a65 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contenteditable.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contenteditable.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB","4":"hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"2":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"D A"},K:{"1":"U gB","2":"A B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"contenteditable attribute (basic support)"}; +module.exports={A:{A:{"1":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB","4":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"2":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"D A"},K:{"1":"Y kB","2":"A B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"contenteditable attribute (basic support)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js index 4837805ab310ce..e955d3f51384c2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","132":"A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","129":"I j J D E F A B C K L G M N O k l m n"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K","257":"L G M N O k l m n o p"},E:{"1":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB","257":"J 0B","260":"zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB","257":"EC","260":"DC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D","257":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"257":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"Content Security Policy 1.0"}; +module.exports={A:{A:{"2":"J D E F yB","132":"A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","129":"I n J D E F A B C K L G M N O o p q r"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K","257":"L G M N O o p q r s t"},E:{"1":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB","257":"J 6B","260":"5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB","257":"LC","260":"KC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D","257":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"257":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"Content Security Policy 1.0"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js index 701fad439ac0be..bae2bda46eac85 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L","32772":"G M N O"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v tB uB","132":"w x y z","260":"0","516":"1 2 3 4 5 6 7 8 9","8196":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","1028":"1 2 3","2052":"4"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n 7B 8B 9B AC fB pB BC gB","1028":"o p q","2052":"r"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"4100":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"8196":"rC"}},B:2,C:"Content Security Policy Level 2"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L","4100":"G M N O"},C:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","132":"0 1 2 3","260":"4","516":"5 6 7 8 9 AB BB CB DB"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 I n J D E F A B C K L G M N O o p q r s t u v w x y z","1028":"5 6 7","2052":"8"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r EC FC GC HC jB wB IC kB","1028":"s t u","2052":"v"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"Content Security Policy Level 2"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cookie-store-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cookie-store-api.js index 9cb505230415da..d7b4d50199ff4e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cookie-store-api.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cookie-store-api.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"Y Z a b c d e f g T h H i","2":"C K L G M N O","194":"P Q R S V W X"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB","194":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB 7B 8B 9B AC fB pB BC gB","194":"GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mC nC oC","2":"I eC fC gC hC iC mB jC kC lC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Cookie Store API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"W Z a b c d e f g h i j k l X m H","2":"C K L G M N O","194":"P Q R S T U V"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB","194":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB EC FC GC HC jB wB IC kB","194":"KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"tC uC lB vC","2":"I lC mC nC oC pC sB qC rC sC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Cookie Store API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cors.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cors.js index e4e071ff611c66..d27501b2723741 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cors.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cors.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D rB","132":"A","260":"E F"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB hB","1025":"jB PB QB U RB SB TB UB VB WB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","132":"I j J D E F A B C"},E:{"2":"yB lB","513":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","644":"I j zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B 7B 8B 9B AC fB pB BC"},G:{"513":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","644":"lB CC qB DC"},H:{"2":"WC"},I:{"1":"H bC cC","132":"hB I XC YC ZC aC qB"},J:{"1":"A","132":"D"},K:{"1":"C U gB","2":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","132":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Cross-Origin Resource Sharing"}; +module.exports={A:{A:{"1":"B","2":"J D yB","132":"A","260":"E F"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB mB","1025":"oB TB UB Y VB WB XB YB ZB aB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","132":"I n J D E F A B C"},E:{"2":"4B rB","513":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","644":"I n 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B EC FC GC HC jB wB IC"},G:{"513":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","644":"rB JC xB KC"},H:{"2":"dC"},I:{"1":"H iC jC","132":"mB I eC fC gC hC xB"},J:{"1":"A","132":"D"},K:{"1":"C Y kB","2":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","132":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Cross-Origin Resource Sharing"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/createimagebitmap.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/createimagebitmap.js index ab8920551073d0..78cac29d5de534 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/createimagebitmap.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/createimagebitmap.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","3076":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB","132":"FB GB","260":"HB IB","516":"JB KB LB MB NB"},E:{"2":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B 4B","516":"G 5B nB oB 6B"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","132":"2 3","260":"4 5","516":"6 7 8 9 AB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC","516":"VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"3076":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","16":"I eC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"3076":"rC"}},B:1,C:"createImageBitmap"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB 0B 1B","1028":"e f g h i j k l X m H qB","3076":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d"},D:{"1":"nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","132":"JB KB","260":"LB MB","516":"NB OB PB QB RB"},E:{"2":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B AC","4100":"G BC tB uB vB CC lB DC"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","132":"6 7","260":"8 9","516":"AB BB CB DB EB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC","4100":"cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"3076":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","16":"I lC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"3076":"yC"}},B:1,C:"createImageBitmap"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/credential-management.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/credential-management.js index dac854061d812c..1f7e7e85564c83 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/credential-management.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/credential-management.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB","66":"DB EB FB","129":"GB HB IB JB KB LB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","2":"I eC fC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"Credential Management API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB","66":"HB IB JB","129":"KB LB MB NB OB PB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EC FC GC HC jB wB IC kB"},G:{"1":"aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","2":"I lC mC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"Credential Management API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cryptography.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cryptography.js index 93986092e91324..d5526eea95ce73 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cryptography.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cryptography.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"rB","8":"J D E F A","164":"B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","513":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","8":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w tB uB","66":"x y"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","8":"0 1 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","8":"I j J D yB lB zB 0B","289":"E F A 1B 2B mB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","8":"F B C G M N O k l m n o 7B 8B 9B AC fB pB BC gB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","8":"lB CC qB DC EC FC","289":"E GC HC IC JC KC"},H:{"2":"WC"},I:{"1":"H","8":"hB I XC YC ZC aC qB bC cC"},J:{"8":"D A"},K:{"1":"U","8":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"8":"A","164":"B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"Web Cryptography"}; +module.exports={A:{A:{"2":"yB","8":"J D E F A","164":"B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","513":"C K L G M N O"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","8":"0 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","66":"1 2"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","8":"0 1 2 3 4 5 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","8":"I n J D 4B rB 5B 6B","289":"E F A 7B 8B sB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","8":"F B C G M N O o p q r s EC FC GC HC jB wB IC kB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","8":"rB JC xB KC LC MC","289":"E NC OC PC QC RC"},H:{"2":"dC"},I:{"1":"H","8":"mB I eC fC gC hC xB iC jC"},J:{"8":"D A"},K:{"1":"Y","8":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"8":"A","164":"B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"Web Cryptography"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-all.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-all.js index acd5ac244f13e7..1cef53db3dbfa6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-all.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-all.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r tB uB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o 7B 8B 9B AC fB pB BC gB"},G:{"1":"IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC"},H:{"2":"WC"},I:{"1":"H cC","2":"hB I XC YC ZC aC qB bC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS all property"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v 0B 1B"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s EC FC GC HC jB wB IC kB"},G:{"1":"PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC"},H:{"2":"dC"},I:{"1":"H jC","2":"mB I eC fC gC hC xB iC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS all property"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-animation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-animation.js index e014b79d7f88db..ad561fe1f40280 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-animation.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-animation.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I tB uB","33":"j J D E F A B C K L G"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"0 1 2 3 4 5 6 7 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB","33":"J D E zB 0B 1B","292":"I j"},F:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B 7B 8B 9B AC fB pB BC","33":"C G M N O k l m n o p q r s t u"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","33":"E EC FC GC","164":"lB CC qB DC"},H:{"2":"WC"},I:{"1":"H","33":"I aC qB bC cC","164":"hB XC YC ZC"},J:{"33":"D A"},K:{"1":"U gB","2":"A B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"33":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"CSS Animation"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I 0B 1B","33":"n J D E F A B C K L G"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB","33":"J D E 5B 6B 7B","292":"I n"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B EC FC GC HC jB wB IC","33":"C G M N O o p q r s t u v w x y"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","33":"E LC MC NC","164":"rB JC xB KC"},H:{"2":"dC"},I:{"1":"H","33":"I hC xB iC jC","164":"mB eC fC gC"},J:{"33":"D A"},K:{"1":"Y kB","2":"A B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"33":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"CSS Animation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-any-link.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-any-link.js index fbfc9b662f2036..4429e0883d22fc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-any-link.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-any-link.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","16":"sB","33":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB tB uB"},D:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","16":"I j J yB lB zB","33":"D E 0B 1B"},F:{"1":"HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB DC","33":"E EC FC GC"},H:{"2":"WC"},I:{"1":"H","16":"hB I XC YC ZC aC qB","33":"bC cC"},J:{"16":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"33":"dC"},P:{"1":"iC mB jC kC lC mC nC oC","16":"I","33":"eC fC gC hC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"33":"rC"}},B:5,C:"CSS :any-link selector"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","16":"zB","33":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB 0B 1B"},D:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I n J 4B rB 5B","33":"D E 6B 7B"},F:{"1":"LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB KC","33":"E LC MC NC"},H:{"2":"dC"},I:{"1":"H","16":"mB I eC fC gC hC xB","33":"iC jC"},J:{"16":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"33":"kC"},P:{"1":"pC sB qC rC sC tC uC lB vC","16":"I","33":"lC mC nC oC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"33":"yC"}},B:5,C:"CSS :any-link selector"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-appearance.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-appearance.js index 46df2ef4c5c0d1..f169a5d19dfff8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-appearance.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-appearance.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"V W X Y Z a b c d e f g T h H i","33":"S","164":"P Q R","388":"C K L G M N O"},C:{"1":"Q R kB S V W X Y Z a b c d e f g T h H i","164":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P","676":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"V W X Y Z a b c d e f g T h H i vB wB xB","33":"S","164":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R"},E:{"1":"oB 6B","164":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB"},F:{"1":"ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","33":"WB XB YB","164":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB"},G:{"1":"oB","164":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB"},H:{"2":"WC"},I:{"1":"H","164":"hB I XC YC ZC aC qB bC cC"},J:{"164":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A","388":"B"},O:{"164":"dC"},P:{"164":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"164":"pC"},R:{"164":"qC"},S:{"164":"rC"}},B:5,C:"CSS Appearance"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"T U V W Z a b c d e f g h i j k l X m H","33":"S","164":"P Q R","388":"C K L G M N O"},C:{"1":"Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","164":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P","676":"0 1 2 3 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"S","164":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R"},E:{"1":"uB vB CC lB DC","164":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB"},F:{"1":"dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","33":"aB bB cB","164":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB"},G:{"1":"uB vB lB","164":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB"},H:{"2":"dC"},I:{"1":"H","164":"mB I eC fC gC hC xB iC jC"},J:{"164":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A","388":"B"},O:{"164":"kC"},P:{"164":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"164":"wC"},R:{"164":"xC"},S:{"164":"yC"}},B:5,C:"CSS Appearance"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-at-counter-style.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-at-counter-style.js index 5ee576f6f7d4df..dd1477559ad260 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-at-counter-style.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-at-counter-style.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b","132":"c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x tB uB","132":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b","132":"c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB 7B 8B 9B AC fB pB BC gB","132":"dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","132":"H"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","132":"U"},L:{"132":"H"},M:{"132":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC","132":"oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"132":"rC"}},B:4,C:"CSS Counter Styles"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b","132":"c d e f g h i j k l X m H"},C:{"2":"0 1 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","132":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b","132":"c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB EC FC GC HC jB wB IC kB","132":"hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","132":"H"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","132":"Y"},L:{"132":"H"},M:{"132":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC","132":"lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"132":"yC"}},B:4,C:"CSS Counter Styles"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-autofill.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-autofill.js index 0e293ffb872f14..5c327875bc6782 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-autofill.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-autofill.js @@ -1 +1 @@ -module.exports={A:{D:{"1":"T h H i vB wB xB","33":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g"},L:{"1":"H"},B:{"1":"T h H i","2":"C K L G M N O","33":"P Q R S V W X Y Z a b c d e f g"},C:{"1":"X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W tB uB"},M:{"1":"T"},A:{"2":"J D E F A B rB"},F:{"1":"kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R"},K:{"2":"A B C fB pB gB","33":"U"},E:{"1":"G 5B nB oB","2":"6B","33":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B 4B"},G:{"1":"VC nB oB","33":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC"},P:{"33":"I eC fC gC hC iC mB jC kC lC mC nC oC"},I:{"1":"H","33":"hB I XC YC ZC aC qB bC cC"}},B:6,C:":autofill CSS pseudo-class"}; +module.exports={A:{D:{"1":"h i j k l X m H qB 2B 3B","33":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g"},L:{"1":"H"},B:{"1":"h i j k l X m H","2":"C K L G M N O","33":"P Q R S T U V W Z a b c d e f g"},C:{"1":"V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U 0B 1B"},M:{"1":"X"},A:{"2":"J D E F A B yB"},F:{"1":"pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R"},K:{"2":"A B C jB wB kB","33":"Y"},E:{"1":"G BC tB uB vB CC lB","2":"DC","33":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B AC"},G:{"1":"cC tB uB vB lB","33":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC"},P:{"33":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},I:{"1":"H","2":"mB I eC fC gC hC xB","33":"iC jC"}},B:6,C:":autofill CSS pseudo-class"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backdrop-filter.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backdrop-filter.js index 69246580cb16fe..f9693eeff16b8f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backdrop-filter.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backdrop-filter.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M","257":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB tB uB","578":"WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB","194":"CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB"},E:{"2":"I j J D E yB lB zB 0B 1B","33":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w x y 7B 8B 9B AC fB pB BC gB","194":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},G:{"2":"E lB CC qB DC EC FC GC","33":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"578":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"kC lC mC nC oC","2":"I","194":"eC fC gC hC iC mB jC"},Q:{"194":"pC"},R:{"194":"qC"},S:{"2":"rC"}},B:7,C:"CSS Backdrop Filter"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M","257":"N O"},C:{"1":"H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB 0B 1B","578":"aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m"},D:{"1":"gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB","194":"GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB"},E:{"2":"I n J D E 4B rB 5B 6B 7B","33":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","194":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},G:{"2":"E rB JC xB KC LC MC NC","33":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"578":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"rC sC tC uC lB vC","2":"I","194":"lC mC nC oC pC sB qC"},Q:{"194":"wC"},R:{"194":"xC"},S:{"2":"yC"}},B:7,C:"CSS Backdrop Filter"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-background-offsets.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-background-offsets.js index 3071dcb2bb8cf1..eadeaeb18d8bfa 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-background-offsets.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-background-offsets.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p"},E:{"1":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B 8B"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"1":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS background-position edge offsets"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t"},E:{"1":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC FC"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"1":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS background-position edge offsets"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js index fc63ea6d2e6794..89992d71bc3882 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","260":"BB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B","132":"E F A 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m 7B 8B 9B AC fB pB BC gB","260":"y"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC","132":"E GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS background-blend-mode"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y 0B 1B"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 I n J D E F A B C K L G M N O o p q r s t u v w x y z","260":"FB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B","132":"E F A 7B 8B"},F:{"1":"0 1 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q EC FC GC HC jB wB IC kB","260":"2"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC","132":"E NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS background-blend-mode"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js index c0c23436d4456a..2fcffdec7462ea 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","164":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w tB uB"},D:{"2":"I j J D E F A B C K L G M N O k l m","164":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J yB lB zB","164":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F 7B 8B 9B AC","129":"B C fB pB BC gB","164":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"lB CC qB DC EC","164":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"132":"WC"},I:{"2":"hB I XC YC ZC aC qB","164":"H bC cC"},J:{"2":"D","164":"A"},K:{"2":"A","129":"B C fB pB gB","164":"U"},L:{"164":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"164":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"164":"pC"},R:{"164":"qC"},S:{"1":"rC"}},B:5,C:"CSS box-decoration-break"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","164":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"2":"I n J D E F A B C K L G M N O o p q","164":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J 4B rB 5B","164":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F EC FC GC HC","129":"B C jB wB IC kB","164":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"rB JC xB KC LC","164":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"132":"dC"},I:{"2":"mB I eC fC gC hC xB","164":"H iC jC"},J:{"2":"D","164":"A"},K:{"2":"A","129":"B C jB wB kB","164":"Y"},L:{"164":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"164":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"164":"wC"},R:{"164":"xC"},S:{"1":"yC"}},B:5,C:"CSS box-decoration-break"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxshadow.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxshadow.js index 87e8f6e7164618..893e286f9901a4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxshadow.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxshadow.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB","33":"tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"I j J D E F"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","33":"j","164":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B 8B"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","33":"CC qB","164":"lB"},H:{"2":"WC"},I:{"1":"I H aC qB bC cC","164":"hB XC YC ZC"},J:{"1":"A","33":"D"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS3 Box-shadow"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB","33":"0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"I n J D E F"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","33":"n","164":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC FC"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","33":"JC xB","164":"rB"},H:{"2":"dC"},I:{"1":"I H hC xB iC jC","164":"mB eC fC gC"},J:{"1":"A","33":"D"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS3 Box-shadow"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-canvas.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-canvas.js index ae28a2220918fb..4eea05cd92f5d7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-canvas.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-canvas.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB"},E:{"2":"yB lB","33":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","33":"G M N O k l m n o p q r s t u v w x y z"},G:{"33":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"H","33":"hB I XC YC ZC aC qB bC cC"},J:{"33":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"eC fC gC hC iC mB jC kC lC mC nC oC","33":"I"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"CSS Canvas Drawings"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB"},E:{"2":"4B rB","33":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"4 5 6 7 8 9 F B C AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","33":"0 1 2 3 G M N O o p q r s t u v w x y z"},G:{"33":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"H","33":"mB I eC fC gC hC xB iC jC"},J:{"33":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"lC mC nC oC pC sB qC rC sC tC uC lB vC","33":"I"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"CSS Canvas Drawings"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-caret-color.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-caret-color.js index 58ef9f2a505fd4..ebbefd57abe715 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-caret-color.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-caret-color.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB tB uB"},D:{"1":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","2":"I eC fC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:4,C:"CSS caret-color"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 0B 1B"},D:{"1":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB EC FC GC HC jB wB IC kB"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","2":"I lC mC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"CSS caret-color"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cascade-layers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cascade-layers.js index 7793a8c78f11ee..0be5e9e6ada76d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cascade-layers.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cascade-layers.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g","322":"T h H i"},C:{"1":"h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e tB uB","194":"f g T"},D:{"1":"i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g","322":"T h H"},E:{"1":"oB 6B","2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS Cascade Layers"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"k l X m H","2":"C K L G M N O P Q R S T U V W Z a b c d e f g","322":"h i j"},C:{"1":"i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e 0B 1B","194":"f g h"},D:{"1":"k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g","322":"h i j"},E:{"1":"uB vB CC lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB"},F:{"1":"V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U EC FC GC HC jB wB IC kB"},G:{"1":"uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Cascade Layers"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-case-insensitive.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-case-insensitive.js index a8ea01d4cbe581..6f78968126cad3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-case-insensitive.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-case-insensitive.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB tB uB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:5,C:"Case-insensitive CSS attribute selectors"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB 0B 1B"},D:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:5,C:"Case-insensitive CSS attribute selectors"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-clip-path.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-clip-path.js index 5e456ecb866d43..2feb9cdd1dafc3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-clip-path.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-clip-path.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N","260":"P Q R S V W X Y Z a b c d e f g T h H i","3138":"O"},C:{"1":"JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB","132":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB tB uB","644":"CB DB EB FB GB HB IB"},D:{"2":"I j J D E F A B C K L G M N O k l m n o","260":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","292":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},E:{"2":"I j J yB lB zB 0B","292":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","260":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","292":"0 1 2 3 4 5 6 G M N O k l m n o p q r s t u v w x y z"},G:{"2":"lB CC qB DC EC","292":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB","260":"H","292":"bC cC"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","260":"U"},L:{"260":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"292":"dC"},P:{"292":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"292":"pC"},R:{"260":"qC"},S:{"644":"rC"}},B:4,C:"CSS clip-path property (for HTML)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N","260":"P Q R S T U V W Z a b c d e f g h i j k l X m H","3138":"O"},C:{"1":"NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB","132":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB 0B 1B","644":"GB HB IB JB KB LB MB"},D:{"2":"I n J D E F A B C K L G M N O o p q r s","260":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","292":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"2":"I n J 4B rB 5B 6B","260":"L G 9B AC BC tB uB vB CC lB DC","292":"D E F A B C K 7B 8B sB jB kB"},F:{"2":"F B C EC FC GC HC jB wB IC kB","260":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","292":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB"},G:{"2":"rB JC xB KC LC","260":"WC XC YC ZC aC bC cC tB uB vB lB","292":"E MC NC OC PC QC RC SC TC UC VC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB","260":"H","292":"iC jC"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","260":"Y"},L:{"260":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"292":"kC"},P:{"292":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"292":"wC"},R:{"260":"xC"},S:{"644":"yC"}},B:4,C:"CSS clip-path property (for HTML)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-adjust.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-adjust.js index 96d4c23ac43e39..961b2c2650648b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-adjust.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-adjust.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","33":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB tB uB"},D:{"16":"I j J D E F A B C K L G M N O","33":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j yB lB zB","33":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"16":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"16":"hB I XC YC ZC aC qB bC cC","33":"H"},J:{"16":"D A"},K:{"2":"A B C fB pB gB","33":"U"},L:{"16":"H"},M:{"1":"T"},N:{"16":"A B"},O:{"16":"dC"},P:{"16":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"33":"pC"},R:{"16":"qC"},S:{"1":"rC"}},B:5,C:"CSS color-adjust"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","33":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB 0B 1B"},D:{"16":"I n J D E F A B C K L G M N O","33":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n 4B rB 5B","33":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"16":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"16":"mB I eC fC gC hC xB iC jC","33":"H"},J:{"16":"D A"},K:{"2":"A B C jB wB kB","33":"Y"},L:{"16":"H"},M:{"1":"X"},N:{"16":"A B"},O:{"16":"kC"},P:{"16":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"33":"wC"},R:{"16":"xC"},S:{"1":"yC"}},B:5,C:"CSS color-adjust"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-function.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-function.js index dded9409af18d2..46194ada892c70 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-function.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-function.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"G 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B","132":"B C K L mB fB gB 3B 4B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC","132":"KC LC MC NC OC PC QC RC SC TC UC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS color() function"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"G BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B","132":"B C K L sB jB kB 9B AC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC","132":"RC SC TC UC VC WC XC YC ZC aC bC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS color() function"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-conic-gradients.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-conic-gradients.js index 3698a2f6ca3aa4..ef0d9e612026a3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-conic-gradients.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-conic-gradients.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB tB uB","578":"bB cB dB eB P Q R kB"},D:{"1":"VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","194":"iB OB jB PB QB U RB SB TB UB"},E:{"1":"K L G gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB"},F:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB 7B 8B 9B AC fB pB BC gB","194":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},G:{"1":"OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mB jC kC lC mC nC oC","2":"I eC fC gC hC iC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS Conical Gradients"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB 0B 1B","578":"fB gB hB iB P Q R pB"},D:{"1":"ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","194":"nB SB oB TB UB Y VB WB XB YB"},E:{"1":"K L G kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB"},F:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB EC FC GC HC jB wB IC kB","194":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},G:{"1":"VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"sB qC rC sC tC uC lB vC","2":"I lC mC nC oC pC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Conical Gradients"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries.js index 5dd5f8c4abb4e5..f626b9c9b76cbd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d","194":"e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c","194":"e f g T h H i vB wB xB","450":"d"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB 7B 8B 9B AC fB pB BC gB","194":"P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS Container Queries"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c","194":"e f g h i j k l X m H qB","450":"d","516":"2B"},E:{"1":"lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB EC FC GC HC jB wB IC kB","194":"P Q R pB S T U V W"},G:{"1":"lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Container Queries (Size)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-query-units.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-query-units.js new file mode 100644 index 00000000000000..a63bf4e96436fc --- /dev/null +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-query-units.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d","194":"X m H qB","450":"e f g h i j k l"},E:{"1":"lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB EC FC GC HC jB wB IC kB","194":"P Q R pB S T U V W"},G:{"1":"lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Container Query Units"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-containment.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-containment.js index 242757ecd195c7..4e6911fc71573e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-containment.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-containment.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","194":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB"},D:{"1":"HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB","66":"GB"},E:{"1":"oB 6B","2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","66":"3 4"},G:{"1":"oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I eC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"194":"rC"}},B:2,C:"CSS Containment"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","194":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB"},D:{"1":"LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","66":"KB"},E:{"1":"uB vB CC lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","66":"7 8"},G:{"1":"uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I lC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"194":"yC"}},B:2,C:"CSS Containment"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-content-visibility.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-content-visibility.js index 240b8ec1f8e0dc..84c7cc3978c0ad 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-content-visibility.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-content-visibility.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"W X Y Z a b c d e f g T h H i","2":"C K L G M N O P Q R S V"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mC nC oC","2":"I eC fC gC hC iC mB jC kC lC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS content-visibility"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O P Q R S T"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"tC uC lB vC","2":"I lC mC nC oC pC sB qC rC sC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS content-visibility"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-counters.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-counters.js index bd9dd5242b69c0..2f1c3ff04e0045 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-counters.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-counters.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"E F A B","2":"J D rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS Counters"}; +module.exports={A:{A:{"1":"E F A B","2":"J D yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS Counters"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-crisp-edges.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-crisp-edges.js index a0ee25b7d35cd4..2513093949ecd5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-crisp-edges.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-crisp-edges.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J rB","2340":"D E F A B"},B:{"2":"C K L G M N O","1025":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"e f g T h H i","2":"sB hB tB","513":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d","545":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U uB"},D:{"2":"0 1 2 3 4 5 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","1025":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB","164":"J","4644":"D E F 0B 1B 2B"},F:{"2":"F B G M N O k l m n o p q r s 7B 8B 9B AC fB pB","545":"C BC gB","1025":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB","4260":"DC EC","4644":"E FC GC HC IC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","1025":"H"},J:{"2":"D","4260":"A"},K:{"2":"A B fB pB","545":"C gB","1025":"U"},L:{"1025":"H"},M:{"545":"T"},N:{"2340":"A B"},O:{"1":"dC"},P:{"1025":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1025":"pC"},R:{"1025":"qC"},S:{"4097":"rC"}},B:7,C:"Crisp edges/pixelated images"}; +module.exports={A:{A:{"2":"J yB","2340":"D E F A B"},B:{"2":"C K L G M N O","1025":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"e f g h i j k l X m H qB","2":"zB mB 0B","513":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d","545":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z","1025":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B","164":"J","4644":"D E F 6B 7B 8B"},F:{"2":"F B G M N O o p q r s t u v w EC FC GC HC jB wB","545":"C IC kB","1025":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB","4260":"KC LC","4644":"E MC NC OC PC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","1025":"H"},J:{"2":"D","4260":"A"},K:{"2":"A B jB wB","545":"C kB","1025":"Y"},L:{"1025":"H"},M:{"545":"X"},N:{"2340":"A B"},O:{"1":"kC"},P:{"1025":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1025":"wC"},R:{"1025":"xC"},S:{"4097":"yC"}},B:7,C:"Crisp edges/pixelated images"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cross-fade.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cross-fade.js index 5d962ddcaea92f..b638f08fb42f9c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cross-fade.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cross-fade.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","33":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"I j J D E F A B C K L G M","33":"0 1 2 3 4 5 6 7 8 9 N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB","33":"J D E F zB 0B 1B 2B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB","33":"E DC EC FC GC HC IC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB","33":"H bC cC"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","33":"U"},L:{"33":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"33":"dC"},P:{"33":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"33":"pC"},R:{"33":"qC"},S:{"2":"rC"}},B:4,C:"CSS Cross-Fade Function"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","33":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"I n J D E F A B C K L G M","33":"0 1 2 3 4 5 6 7 8 9 N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB","33":"J D E F 5B 6B 7B 8B"},F:{"2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB","33":"E KC LC MC NC OC PC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB","33":"H iC jC"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","33":"Y"},L:{"33":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"33":"kC"},P:{"33":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"33":"wC"},R:{"33":"xC"},S:{"2":"yC"}},B:4,C:"CSS Cross-Fade Function"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-default-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-default-pseudo.js index 7886d00c09f079..518a2577ad806a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-default-pseudo.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-default-pseudo.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","16":"sB hB tB uB"},D:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","16":"I j yB lB","132":"J D E F A zB 0B 1B 2B"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","16":"F B 7B 8B 9B AC fB pB","132":"0 1 2 G M N O k l m n o p q r s t u v w x y z","260":"C BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB DC EC","132":"E FC GC HC IC JC"},H:{"260":"WC"},I:{"1":"H","16":"hB XC YC ZC","132":"I aC qB bC cC"},J:{"16":"D","132":"A"},K:{"1":"U","16":"A B C fB pB","260":"gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"132":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","132":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:7,C:":default CSS pseudo-class"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","16":"zB mB 0B 1B"},D:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I n 4B rB","132":"J D E F A 5B 6B 7B 8B"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","16":"F B EC FC GC HC jB wB","132":"0 1 2 3 4 5 6 G M N O o p q r s t u v w x y z","260":"C IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB KC LC","132":"E MC NC OC PC QC"},H:{"260":"dC"},I:{"1":"H","16":"mB eC fC gC","132":"I hC xB iC jC"},J:{"16":"D","132":"A"},K:{"1":"Y","16":"A B C jB wB","260":"kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"132":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","132":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:7,C:":default CSS pseudo-class"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js index 3a4cdb6ecdd436..185ab67d211cbc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O Q R S V W X Y Z a b c d e f g T h H i","16":"P"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"B","2":"I j J D E F A C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Explicit descendant combinator >>"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O Q R S T U V W Z a b c d e f g h i j k l X m H","16":"P"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"B","2":"I n J D E F A C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Explicit descendant combinator >>"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-deviceadaptation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-deviceadaptation.js index 49398b01ce1e30..0838332c6dabc5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-deviceadaptation.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-deviceadaptation.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","164":"A B"},B:{"66":"P Q R S V W X Y Z a b c d e f g T h H i","164":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"I j J D E F A B C K L G M N O k l m n o p q r s t","66":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","66":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"292":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A U","292":"B C fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"164":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"66":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS Device Adaptation"}; +module.exports={A:{A:{"2":"J D E F yB","164":"A B"},B:{"66":"P Q R S T U V W Z a b c d e f g h i j k l X m H","164":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"I n J D E F A B C K L G M N O o p q r s t u v w x","66":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","66":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"292":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A Y","292":"B C jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"164":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"66":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Device Adaptation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-dir-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-dir-pseudo.js index a5e93982ae2f35..4bc5256840c8c7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-dir-pseudo.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-dir-pseudo.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M tB uB","33":"0 1 2 3 4 5 6 7 8 9 N O k l m n o p q r s t u v w x y z AB BB CB DB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b","194":"c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"33":"rC"}},B:5,C:":dir() CSS pseudo-class"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M 0B 1B","33":"0 1 2 3 4 5 6 7 8 9 N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b","194":"c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"33":"yC"}},B:5,C:":dir() CSS pseudo-class"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-display-contents.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-display-contents.js index aee23122b5c9e2..4a7b560fba1dc2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-display-contents.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-display-contents.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"a b c d e f g T h H i","2":"C K L G M N O","260":"P Q R S V W X Y Z"},C:{"1":"PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","260":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB"},D:{"1":"a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","194":"NB iB OB jB PB QB U","260":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z"},E:{"1":"oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB","260":"L G 3B 4B 5B nB","772":"C K fB gB"},F:{"1":"cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB 7B 8B 9B AC fB pB BC gB","260":"HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB"},G:{"1":"oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC","260":"SC TC UC VC nB","772":"MC NC OC PC QC RC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"nC oC","2":"I eC fC gC hC","260":"iC mB jC kC lC mC"},Q:{"260":"pC"},R:{"2":"qC"},S:{"260":"rC"}},B:5,C:"CSS display: contents"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"a b c d e f g h i j k l X m H","2":"C K L G M N O","260":"P Q R S T U V W Z"},C:{"1":"TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","260":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB"},D:{"1":"a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","194":"RB nB SB oB TB UB Y","260":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z"},E:{"1":"lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB","260":"L G 9B AC BC tB uB vB CC","772":"C K jB kB"},F:{"1":"gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB EC FC GC HC jB wB IC kB","260":"LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB"},G:{"1":"lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC","260":"ZC aC bC cC tB uB vB","772":"TC UC VC WC XC YC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"uC lB vC","2":"I lC mC nC oC","260":"pC sB qC rC sC tC"},Q:{"260":"wC"},R:{"2":"xC"},S:{"260":"yC"}},B:5,C:"CSS display: contents"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-element-function.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-element-function.js index 62458ecb260339..abb75a259d05c5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-element-function.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-element-function.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"33":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","164":"sB hB tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"33":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"33":"rC"}},B:5,C:"CSS element() function"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"33":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","164":"zB mB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"33":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"33":"yC"}},B:5,C:"CSS element() function"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-env-function.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-env-function.js index 681827c749032f..bb7aba62dd6422 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-env-function.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-env-function.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U tB uB"},D:{"1":"VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB","132":"B"},F:{"1":"LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 7B 8B 9B AC fB pB BC gB"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC","132":"LC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mB jC kC lC mC nC oC","2":"I eC fC gC hC iC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"CSS Environment Variables env()"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y 0B 1B"},D:{"1":"ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB","132":"B"},F:{"1":"PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB EC FC GC HC jB wB IC kB"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC","132":"SC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"sB qC rC sC tC uC lB vC","2":"I lC mC nC oC pC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"CSS Environment Variables env()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-exclusions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-exclusions.js index a587581f232e66..19c272acf97759 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-exclusions.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-exclusions.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","33":"A B"},B:{"2":"P Q R S V W X Y Z a b c d e f g T h H i","33":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"33":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS Exclusions Level 1"}; +module.exports={A:{A:{"2":"J D E F yB","33":"A B"},B:{"2":"P Q R S T U V W Z a b c d e f g h i j k l X m H","33":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"33":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Exclusions Level 1"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-featurequeries.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-featurequeries.js index 994a0bdfb9ff77..6b8ff09a314578 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-featurequeries.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-featurequeries.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B C 7B 8B 9B AC fB pB BC"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"1":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS Feature Queries"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u v w"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B C EC FC GC HC jB wB IC"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"1":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS Feature Queries"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-file-selector-button.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-file-selector-button.js index 630bf01b8832d9..958121a2b6f25e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-file-selector-button.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-file-selector-button.js @@ -1 +1 @@ -module.exports={A:{D:{"1":"a b c d e f g T h H i vB wB xB","33":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z"},L:{"1":"H"},B:{"1":"a b c d e f g T h H i","33":"C K L G M N O P Q R S V W X Y Z"},C:{"1":"kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R tB uB"},M:{"1":"T"},A:{"2":"J D E F rB","33":"A B"},F:{"1":"bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB"},K:{"1":"U","2":"A B C fB pB gB"},E:{"1":"G 4B 5B nB oB","2":"6B","33":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B"},G:{"1":"UC VC nB oB","33":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC"},P:{"1":"nC oC","33":"I eC fC gC hC iC mB jC kC lC mC"},I:{"1":"H","33":"hB I XC YC ZC aC qB bC cC"}},B:6,C:"::file-selector-button CSS pseudo-element"}; +module.exports={A:{D:{"1":"a b c d e f g h i j k l X m H qB 2B 3B","33":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z"},L:{"1":"H"},B:{"1":"a b c d e f g h i j k l X m H","33":"C K L G M N O P Q R S T U V W Z"},C:{"1":"pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R 0B 1B"},M:{"1":"X"},A:{"2":"J D E F yB","33":"A B"},F:{"1":"fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB"},K:{"1":"Y","2":"A B C jB wB kB"},E:{"1":"G AC BC tB uB vB CC lB","2":"DC","33":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B"},G:{"1":"bC cC tB uB vB lB","33":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC"},P:{"1":"uC lB vC","33":"I lC mC nC oC pC sB qC rC sC tC"},I:{"1":"H","2":"mB I eC fC gC hC xB","33":"iC jC"}},B:6,C:"::file-selector-button CSS pseudo-element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filter-function.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filter-function.js index c245bd1cf3bb41..8d0df6b337f7fd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filter-function.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filter-function.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B","33":"F"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC","33":"HC IC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS filter() function"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B","33":"F"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC","33":"OC PC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS filter() function"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filters.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filters.js index 8258108b8c536c..e91a80d3fc9784 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filters.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filters.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","1028":"K L G M N O","1346":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB","196":"z","516":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y uB"},D:{"1":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N","33":"0 1 2 3 4 5 6 7 8 9 O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},E:{"1":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB","33":"J D E F 0B 1B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 G M N O k l m n o p q r s t u v w x y z"},G:{"1":"IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC","33":"E EC FC GC HC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB","33":"bC cC"},J:{"2":"D","33":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","33":"I eC fC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"CSS Filter Effects"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","1028":"K L G M N O","1346":"C"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B","196":"3","516":"0 1 2 I n J D E F A B C K L G M N O o p q r s t u v w x y z 1B"},D:{"1":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N","33":"0 1 2 3 4 5 6 7 8 9 O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B","33":"J D E F 6B 7B"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 G M N O o p q r s t u v w x y z"},G:{"1":"PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC","33":"E LC MC NC OC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB","33":"iC jC"},J:{"2":"D","33":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","33":"I lC mC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"CSS Filter Effects"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-letter.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-letter.js index 4f106f1e65615f..8d0ef30620a2ef 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-letter.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-letter.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","16":"rB","516":"E","1540":"J D"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","132":"hB","260":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"j J D E","132":"I"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"j yB","132":"I lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","16":"F 7B","260":"B 8B 9B AC fB pB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB"},H:{"1":"WC"},I:{"1":"hB I H aC qB bC cC","16":"XC YC","132":"ZC"},J:{"1":"D A"},K:{"1":"C U gB","260":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"::first-letter CSS pseudo-element selector"}; +module.exports={A:{A:{"1":"F A B","16":"yB","516":"E","1540":"J D"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","132":"mB","260":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"n J D E","132":"I"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"n 4B","132":"I rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","16":"F EC","260":"B FC GC HC jB wB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB"},H:{"1":"dC"},I:{"1":"mB I H hC xB iC jC","16":"eC fC","132":"gC"},J:{"1":"D A"},K:{"1":"C Y kB","260":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"::first-letter CSS pseudo-element selector"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-line.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-line.js index ce70a9a88b8111..65f7ff390570c8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-line.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-line.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","132":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS first-line pseudo-element"}; +module.exports={A:{A:{"1":"F A B","132":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS first-line pseudo-element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-fixed.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-fixed.js index f97dad205932c8..b4d97b696f04df 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-fixed.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-fixed.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"D E F A B","2":"rB","8":"J"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B mB fB gB 3B 4B 5B nB oB 6B","1025":"2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB","132":"DC EC FC"},H:{"2":"WC"},I:{"1":"hB H bC cC","260":"XC YC ZC","513":"I aC qB"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS position:fixed"}; +module.exports={A:{A:{"1":"D E F A B","2":"yB","8":"J"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B sB jB kB 9B AC BC tB uB vB CC lB DC","1025":"8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB","132":"KC LC MC"},H:{"2":"dC"},I:{"1":"mB H iC jC","260":"eC fC gC","513":"I hC xB"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS position:fixed"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-visible.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-visible.js index 638ad4f7f39db2..96dee3eaed0d5e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-visible.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-visible.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"X Y Z a b c d e f g T h H i","2":"C K L G M N O","328":"P Q R S V W"},C:{"1":"W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","161":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V"},D:{"1":"X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB","328":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W"},E:{"1":"oB 6B","2":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B 4B","578":"G 5B nB"},F:{"1":"YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB 7B 8B 9B AC fB pB BC gB","328":"SB TB UB VB WB XB"},G:{"1":"oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC","578":"VC nB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mC nC oC","2":"I eC fC gC hC iC mB jC kC lC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"161":"rC"}},B:7,C:":focus-visible CSS pseudo-class"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O","328":"P Q R S T U"},C:{"1":"U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","161":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T"},D:{"1":"V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB","328":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U"},E:{"1":"uB vB CC lB DC","2":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B AC","578":"G BC tB"},F:{"1":"cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB EC FC GC HC jB wB IC kB","328":"WB XB YB ZB aB bB"},G:{"1":"uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC","578":"cC tB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"tC uC lB vC","2":"I lC mC nC oC pC sB qC rC sC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"161":"yC"}},B:7,C:":focus-visible CSS pseudo-class"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-within.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-within.js index 4bb3c579b63949..6b9acd026855d1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-within.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-within.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB tB uB"},D:{"1":"OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","194":"iB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB 7B 8B 9B AC fB pB BC gB","194":"BB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I eC fC gC"},Q:{"1":"pC"},R:{"16":"qC"},S:{"2":"rC"}},B:7,C:":focus-within CSS pseudo-class"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 0B 1B"},D:{"1":"SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","194":"nB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB EC FC GC HC jB wB IC kB","194":"FB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I lC mC nC"},Q:{"1":"wC"},R:{"16":"xC"},S:{"2":"yC"}},B:7,C:":focus-within CSS pseudo-class"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-palette.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-palette.js new file mode 100644 index 00000000000000..c05ab705ab51f6 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-palette.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l"},E:{"1":"uB vB CC lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS font-palette"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js index 89cbf906503e14..1f3585ec3074f6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB tB uB","194":"BB CB DB EB FB GB HB IB JB KB LB MB"},D:{"1":"OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB","66":"EB FB GB HB IB JB KB LB MB NB iB"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","66":"1 2 3 4 5 6 7 8 9 AB BB"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I","66":"eC fC gC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"194":"rC"}},B:5,C:"CSS font-display"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB 0B 1B","194":"FB GB HB IB JB KB LB MB NB OB PB QB"},D:{"1":"SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB","66":"IB JB KB LB MB NB OB PB QB RB nB"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","66":"5 6 7 8 9 AB BB CB DB EB FB"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I","66":"lC mC nC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"194":"yC"}},B:5,C:"CSS font-display"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-stretch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-stretch.js index f1c4e14650ad49..22a017d1448e9c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-stretch.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-stretch.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E tB uB"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS font-stretch"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E 0B 1B"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS font-stretch"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gencontent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gencontent.js index a045c232ad266e..ba5752d6ddf648 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gencontent.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gencontent.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D rB","132":"E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS Generated content for pseudo-elements"}; +module.exports={A:{A:{"1":"F A B","2":"J D yB","132":"E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS Generated content for pseudo-elements"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gradients.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gradients.js index 173cf2b66c22b5..60fff36f562707 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gradients.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gradients.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB","260":"0 M N O k l m n o p q r s t u v w x y z","292":"I j J D E F A B C K L G uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"A B C K L G M N O k l m n o p q","548":"I j J D E F"},E:{"2":"yB lB","260":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","292":"J zB","804":"I j"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B 7B 8B 9B AC","33":"C BC","164":"fB pB"},G:{"260":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","292":"DC EC","804":"lB CC qB"},H:{"2":"WC"},I:{"1":"H bC cC","33":"I aC qB","548":"hB XC YC ZC"},J:{"1":"A","548":"D"},K:{"1":"U gB","2":"A B","33":"C","164":"fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS Gradients"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B","260":"0 1 2 3 4 M N O o p q r s t u v w x y z","292":"I n J D E F A B C K L G 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"A B C K L G M N O o p q r s t u","548":"I n J D E F"},E:{"1":"uB vB CC lB DC","2":"4B rB","260":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB","292":"J 5B","804":"I n"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B EC FC GC HC","33":"C IC","164":"jB wB"},G:{"1":"uB vB lB","260":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB","292":"KC LC","804":"rB JC xB"},H:{"2":"dC"},I:{"1":"H iC jC","33":"I hC xB","548":"mB eC fC gC"},J:{"1":"A","548":"D"},K:{"1":"Y kB","2":"A B","33":"C","164":"jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS Gradients"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid-animation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid-animation.js new file mode 100644 index 00000000000000..493f9a56af82e2 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid-animation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"CSS Grid animation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid.js index b05c2e91e6cdee..9acdbbf36b80e7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","8":"F","292":"A B"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","292":"C K L G"},C:{"1":"JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O tB uB","8":"0 1 2 3 4 k l m n o p q r s t u v w x y z","584":"5 6 7 8 9 AB BB CB DB EB FB GB","1025":"HB IB"},D:{"1":"NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p","8":"q r s t","200":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB","1025":"MB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB","8":"J D E F A 0B 1B 2B"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s 7B 8B 9B AC fB pB BC gB","200":"0 1 2 3 4 5 6 7 8 t u v w x y z"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC","8":"E EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC","8":"qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"292":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"eC","8":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:4,C:"CSS Grid Layout (level 1)"}; +module.exports={A:{A:{"2":"J D E yB","8":"F","292":"A B"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","292":"C K L G"},C:{"1":"NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O 0B 1B","8":"0 1 2 3 4 5 6 7 8 o p q r s t u v w x y z","584":"9 AB BB CB DB EB FB GB HB IB JB KB","1025":"LB MB"},D:{"1":"RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t","8":"u v w x","200":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","1025":"QB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B","8":"J D E F A 6B 7B 8B"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w EC FC GC HC jB wB IC kB","200":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC","8":"E LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC","8":"xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"292":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"lC","8":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:4,C:"CSS Grid Layout (level 1)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js index ac076a38fbf0f3..0815a0028dc91e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS hanging-punctuation"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS hanging-punctuation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-has.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-has.js index 6166604ef455bb..787a09916bf3b8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-has.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-has.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"oB 6B","2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:":has() CSS relational pseudo-class"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l","194":"X m H qB"},E:{"1":"uB vB CC lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:":has() CSS relational pseudo-class"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphenate.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphenate.js index 93163131ab8f84..9cf7de4625a486 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphenate.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphenate.js @@ -1 +1 @@ -module.exports={A:{A:{"16":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","16":"C K L G M N O"},C:{"16":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},E:{"16":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"16":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"16":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"16":"WC"},I:{"16":"hB I H XC YC ZC aC qB bC cC"},J:{"16":"D A"},K:{"16":"A B C U fB pB gB"},L:{"16":"H"},M:{"16":"T"},N:{"16":"A B"},O:{"16":"dC"},P:{"16":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"16":"pC"},R:{"16":"qC"},S:{"16":"rC"}},B:5,C:"CSS4 Hyphenation"}; +module.exports={A:{A:{"16":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","16":"C K L G M N O"},C:{"16":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"16":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"16":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"16":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"16":"dC"},I:{"16":"mB I H eC fC gC hC xB iC jC"},J:{"16":"D A"},K:{"16":"A B C Y jB wB kB"},L:{"16":"H"},M:{"16":"X"},N:{"16":"A B"},O:{"16":"kC"},P:{"16":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"16":"wC"},R:{"16":"xC"},S:{"16":"yC"}},B:5,C:"CSS4 Hyphenation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphens.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphens.js index 0d14a2bb5fb9a8..63e2e34ba793f4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphens.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphens.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","33":"A B"},B:{"33":"C K L G M N O","132":"P Q R S V W X Y","260":"Z a b c d e f g T h H i"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j tB uB","33":"0 1 2 3 4 5 6 7 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},D:{"1":"Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","132":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y"},E:{"2":"I j yB lB","33":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","132":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"lB CC","33":"E qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"4":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I","132":"eC"},Q:{"2":"pC"},R:{"132":"qC"},S:{"1":"rC"}},B:5,C:"CSS Hyphenation"}; +module.exports={A:{A:{"2":"J D E F yB","33":"A B"},B:{"33":"C K L G M N O","132":"P Q R S T U V W","260":"Z a b c d e f g h i j k l X m H"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n 0B 1B","33":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB"},D:{"1":"Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","132":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W"},E:{"2":"I n 4B rB","33":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB EC FC GC HC jB wB IC kB","132":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"rB JC","33":"E xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"4":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I","132":"lC"},Q:{"2":"wC"},R:{"132":"xC"},S:{"1":"yC"}},B:5,C:"CSS Hyphenation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-orientation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-orientation.js index 2bd5e64797ce42..f2ca607a076fd2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-orientation.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-orientation.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"a b c d e f g T h H i","2":"C K L G M N O P Q","257":"R S V W X Y Z"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q tB uB"},D:{"1":"a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q","257":"R S V W X Y Z"},E:{"1":"L G 3B 4B 5B nB oB 6B","2":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB"},F:{"1":"UB VB WB XB YB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB 7B 8B 9B AC fB pB BC gB","257":"ZB aB bB cB dB eB P Q R kB S"},G:{"1":"TC UC VC nB oB","132":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"lC mC nC oC","2":"I eC fC gC hC iC mB jC kC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:4,C:"CSS3 image-orientation"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"a b c d e f g h i j k l X m H","2":"C K L G M N O P Q","257":"R S T U V W Z"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u 0B 1B"},D:{"1":"a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q","257":"R S T U V W Z"},E:{"1":"L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB"},F:{"1":"YB ZB aB bB cB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB EC FC GC HC jB wB IC kB","257":"dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"aC bC cC tB uB vB lB","132":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"sC tC uC lB vC","2":"I lC mC nC oC pC sB qC rC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:4,C:"CSS3 image-orientation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-set.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-set.js index 0bf48627bb4328..bc301aac79e20b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-set.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-set.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","164":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W tB uB","66":"X Y","257":"a b c d e f g T h H i","772":"Z"},D:{"2":"I j J D E F A B C K L G M N O k l","164":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j yB lB zB","132":"A B C K mB fB gB 3B","164":"J D E F 0B 1B 2B","516":"L G 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","164":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"lB CC qB DC","132":"JC KC LC MC NC OC PC QC RC SC","164":"E EC FC GC HC IC","516":"TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB","164":"H bC cC"},J:{"2":"D","164":"A"},K:{"2":"A B C fB pB gB","164":"U"},L:{"164":"H"},M:{"257":"T"},N:{"2":"A B"},O:{"164":"dC"},P:{"164":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"164":"pC"},R:{"164":"qC"},S:{"2":"rC"}},B:5,C:"CSS image-set"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","164":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U 0B 1B","66":"V W","257":"a b c d e f g h i j k l X m H qB","772":"Z"},D:{"2":"I n J D E F A B C K L G M N O o p","164":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n 4B rB 5B","132":"A B C K sB jB kB 9B","164":"J D E F 6B 7B 8B","516":"L G AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","164":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"rB JC xB KC","132":"QC RC SC TC UC VC WC XC YC ZC","164":"E LC MC NC OC PC","516":"aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB","164":"H iC jC"},J:{"2":"D","164":"A"},K:{"2":"A B C jB wB kB","164":"Y"},L:{"164":"H"},M:{"257":"X"},N:{"2":"A B"},O:{"164":"kC"},P:{"164":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"164":"wC"},R:{"164":"xC"},S:{"2":"yC"}},B:5,C:"CSS image-set"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-in-out-of-range.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-in-out-of-range.js index 63fedbf72e0efe..9f255af1d8bb17 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-in-out-of-range.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-in-out-of-range.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C","260":"K L G M N O"},C:{"1":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB","516":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB"},D:{"1":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I","16":"j J D E F A B C K L","260":"HB","772":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","16":"j","772":"J D E F A zB 0B 1B 2B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","16":"F 7B","260":"4 B C 8B 9B AC fB pB BC gB","772":"0 1 2 3 G M N O k l m n o p q r s t u v w x y z"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB","772":"E DC EC FC GC HC IC JC"},H:{"132":"WC"},I:{"1":"H","2":"hB XC YC ZC","260":"I aC qB bC cC"},J:{"2":"D","260":"A"},K:{"1":"U","260":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","260":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"516":"rC"}},B:5,C:":in-range and :out-of-range CSS pseudo-classes"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C","260":"K L G M N O"},C:{"1":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B","516":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB"},D:{"1":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I","16":"n J D E F A B C K L","260":"LB","772":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","16":"n","772":"J D E F A 5B 6B 7B 8B"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","16":"F EC","260":"8 B C FC GC HC jB wB IC kB","772":"0 1 2 3 4 5 6 7 G M N O o p q r s t u v w x y z"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB","772":"E KC LC MC NC OC PC QC"},H:{"132":"dC"},I:{"1":"H","2":"mB eC fC gC","260":"I hC xB iC jC"},J:{"2":"D","260":"A"},K:{"1":"Y","260":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","260":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"516":"yC"}},B:5,C:":in-range and :out-of-range CSS pseudo-classes"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js index 4a2eabdd08c8b4..ce470bb1769d9c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","132":"A B","388":"F"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","132":"C K L G M N O"},C:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","16":"sB hB tB uB","132":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB","388":"I j"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L","132":"0 1 2 3 G M N O k l m n o p q r s t u v w x y z"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","16":"I j J yB lB","132":"D E F A 0B 1B 2B","388":"zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","16":"F B 7B 8B 9B AC fB pB","132":"G M N O k l m n o p q","516":"C BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB DC EC","132":"E FC GC HC IC JC"},H:{"516":"WC"},I:{"1":"H","16":"hB XC YC ZC cC","132":"bC","388":"I aC qB"},J:{"16":"D","132":"A"},K:{"1":"U","16":"A B C fB pB","516":"gB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"132":"rC"}},B:7,C:":indeterminate CSS pseudo-class"}; +module.exports={A:{A:{"2":"J D E yB","132":"A B","388":"F"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","132":"C K L G M N O"},C:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","16":"zB mB 0B 1B","132":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","388":"I n"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L","132":"0 1 2 3 4 5 6 7 G M N O o p q r s t u v w x y z"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I n J 4B rB","132":"D E F A 6B 7B 8B","388":"5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","16":"F B EC FC GC HC jB wB","132":"G M N O o p q r s t u","516":"C IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB KC LC","132":"E MC NC OC PC QC"},H:{"516":"dC"},I:{"1":"H","16":"mB eC fC gC jC","132":"iC","388":"I hC xB"},J:{"16":"D","132":"A"},K:{"1":"Y","16":"A B C jB wB","516":"kB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"132":"yC"}},B:7,C:":indeterminate CSS pseudo-class"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-letter.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-letter.js index c9618b44daf564..d85fc9326f45fd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-letter.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-letter.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E yB lB zB 0B 1B","4":"F","164":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC","164":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS Initial Letter"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E 4B rB 5B 6B 7B","4":"F","164":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC","164":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Initial Letter"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-value.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-value.js index 378c5b2adae645..465132f5d19ae0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-value.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-value.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","33":"I j J D E F A B C K L G M N O tB uB","164":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"yB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"2":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS initial value"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","33":"I n J D E F A B C K L G M N O 0B 1B","164":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"4B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB"},H:{"2":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS initial value"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-lch-lab.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-lch-lab.js index 78e0d22b0afc3f..b3d6c6bb9c6027 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-lch-lab.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-lch-lab.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"G 5B nB oB 6B","2":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B 4B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"LCH and Lab color values"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"G BC tB uB vB CC lB DC","2":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B AC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"LCH and Lab color values"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-letter-spacing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-letter-spacing.js index 795f98375fba78..11cd226eaeec62 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-letter-spacing.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-letter-spacing.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","16":"rB","132":"J D E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","132":"I j J D E F A B C K L G M N O k l m n o p q r s t u"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"yB","132":"I j J lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","16":"F 7B","132":"B C G M 8B 9B AC fB pB BC gB"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"2":"WC"},I:{"1":"H bC cC","16":"XC YC","132":"hB I ZC aC qB"},J:{"132":"D A"},K:{"1":"U","132":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"letter-spacing CSS property"}; +module.exports={A:{A:{"1":"F A B","16":"yB","132":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","132":"I n J D E F A B C K L G M N O o p q r s t u v w x y"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"4B","132":"I n J rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","16":"F EC","132":"B C G M FC GC HC jB wB IC kB"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB"},H:{"2":"dC"},I:{"1":"H iC jC","16":"eC fC","132":"mB I gC hC xB"},J:{"132":"D A"},K:{"1":"Y","132":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"letter-spacing CSS property"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-line-clamp.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-line-clamp.js index 61c5ee84851f2d..769d49528637b5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-line-clamp.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-line-clamp.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M","33":"P Q R S V W X Y Z a b c d e f g T h H i","129":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB tB uB","33":"UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"16":"I j J D E F A B C K","33":"0 1 2 3 4 5 6 7 8 9 L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I yB lB","33":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"lB CC qB","33":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"16":"XC YC","33":"hB I H ZC aC qB bC cC"},J:{"33":"D A"},K:{"2":"A B C fB pB gB","33":"U"},L:{"33":"H"},M:{"33":"T"},N:{"2":"A B"},O:{"33":"dC"},P:{"33":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"33":"pC"},R:{"33":"qC"},S:{"2":"rC"}},B:5,C:"CSS line-clamp"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M","33":"P Q R S T U V W Z a b c d e f g h i j k l X m H","129":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB 0B 1B","33":"YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"16":"I n J D E F A B C K","33":"0 1 2 3 4 5 6 7 8 9 L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I 4B rB","33":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"rB JC xB","33":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"16":"eC fC","33":"mB I H gC hC xB iC jC"},J:{"33":"D A"},K:{"2":"A B C jB wB kB","33":"Y"},L:{"33":"H"},M:{"33":"X"},N:{"2":"A B"},O:{"33":"kC"},P:{"33":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"33":"wC"},R:{"33":"xC"},S:{"2":"yC"}},B:5,C:"CSS line-clamp"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-logical-props.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-logical-props.js index a90df6fc24a013..42dfbed43ab6d5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-logical-props.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-logical-props.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"a b c d e f g T h H i","2":"C K L G M N O","1028":"Y Z","1540":"P Q R S V W X"},C:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB","164":"0 1 2 3 4 5 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","1540":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB"},D:{"1":"a b c d e f g T h H i vB wB xB","292":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB","1028":"Y Z","1540":"VB WB XB YB ZB aB bB cB dB eB P Q R S V W X"},E:{"1":"G 5B nB oB 6B","292":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB","1028":"4B","1540":"K L gB 3B"},F:{"1":"cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","292":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","1028":"aB bB","1540":"LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB"},G:{"1":"VC nB oB","292":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC","1028":"UC","1540":"OC PC QC RC SC TC"},H:{"2":"WC"},I:{"1":"H","292":"hB I XC YC ZC aC qB bC cC"},J:{"292":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"292":"dC"},P:{"1":"nC oC","292":"I eC fC gC hC iC","1540":"mB jC kC lC mC"},Q:{"1540":"pC"},R:{"1540":"qC"},S:{"1540":"rC"}},B:5,C:"CSS Logical Properties"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"a b c d e f g h i j k l X m H","2":"C K L G M N O","1028":"W Z","1540":"P Q R S T U V"},C:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB","164":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","1540":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB"},D:{"1":"a b c d e f g h i j k l X m H qB 2B 3B","292":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB","1028":"W Z","1540":"ZB aB bB cB dB eB fB gB hB iB P Q R S T U V"},E:{"1":"G BC tB uB vB CC lB DC","292":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB","1028":"AC","1540":"K L kB 9B"},F:{"1":"gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","292":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","1028":"eB fB","1540":"PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB"},G:{"1":"cC tB uB vB lB","292":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC","1028":"bC","1540":"VC WC XC YC ZC aC"},H:{"2":"dC"},I:{"1":"H","292":"mB I eC fC gC hC xB iC jC"},J:{"292":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"292":"kC"},P:{"1":"uC lB vC","292":"I lC mC nC oC pC","1540":"sB qC rC sC tC"},Q:{"1540":"wC"},R:{"1540":"xC"},S:{"1540":"yC"}},B:5,C:"CSS Logical Properties"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-marker-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-marker-pseudo.js index 2144ecd7395aef..5a4cd35f3c04b3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-marker-pseudo.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-marker-pseudo.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"X Y Z a b c d e f g T h H i","2":"C K L G M N O P Q R S V W"},C:{"1":"UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB tB uB"},D:{"1":"X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W"},E:{"1":"6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB","129":"C K L G fB gB 3B 4B 5B nB oB"},F:{"1":"YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB 7B 8B 9B AC fB pB BC gB"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mC nC oC","2":"I eC fC gC hC iC mB jC kC lC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS ::marker pseudo-element"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O P Q R S T U"},C:{"1":"YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB 0B 1B"},D:{"1":"V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U"},E:{"1":"DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB","129":"C K L G jB kB 9B AC BC tB uB vB CC lB"},F:{"1":"cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB EC FC GC HC jB wB IC kB"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"tC uC lB vC","2":"I lC mC nC oC pC sB qC rC sC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS ::marker pseudo-element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-masks.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-masks.js index e80c863a479bbd..3f7f951b0e6ae3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-masks.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-masks.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M","164":"P Q R S V W X Y Z a b c d e f g T h H i","3138":"N","12292":"O"},C:{"1":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB","260":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB tB uB"},D:{"164":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"yB lB","132":"6B","164":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","164":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"164":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"164":"H bC cC","676":"hB I XC YC ZC aC qB"},J:{"164":"D A"},K:{"2":"A B C fB pB gB","164":"U"},L:{"164":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"164":"dC"},P:{"164":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"164":"pC"},R:{"164":"qC"},S:{"260":"rC"}},B:4,C:"CSS Masks"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M","164":"P Q R S T U V W Z a b c d e f g h i j k l X m H","3138":"N","12292":"O"},C:{"1":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB","260":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 0B 1B"},D:{"164":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"uB vB CC lB DC","2":"4B rB","164":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB"},F:{"2":"F B C EC FC GC HC jB wB IC kB","164":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"uB vB lB","164":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB"},H:{"2":"dC"},I:{"164":"H iC jC","676":"mB I eC fC gC hC xB"},J:{"164":"D A"},K:{"2":"A B C jB wB kB","164":"Y"},L:{"164":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"164":"kC"},P:{"164":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"164":"wC"},R:{"164":"xC"},S:{"260":"yC"}},B:4,C:"CSS Masks"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-matches-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-matches-pseudo.js index 101c1c45aeb7a3..485e0342f2ba06 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-matches-pseudo.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-matches-pseudo.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"Z a b c d e f g T h H i","2":"C K L G M N O","1220":"P Q R S V W X Y"},C:{"1":"eB P Q R kB S V W X Y Z a b c d e f g T h H i","16":"sB hB tB uB","548":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB"},D:{"1":"Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L","164":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U","196":"RB SB TB","1220":"UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y"},E:{"1":"L G 4B 5B nB oB 6B","2":"I yB lB","16":"j","164":"J D E zB 0B 1B","260":"F A B C K 2B mB fB gB 3B"},F:{"1":"bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","164":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB","196":"HB IB JB","1220":"KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB"},G:{"1":"TC UC VC nB oB","16":"lB CC qB DC EC","164":"E FC GC","260":"HC IC JC KC LC MC NC OC PC QC RC SC"},H:{"2":"WC"},I:{"1":"H","16":"hB XC YC ZC","164":"I aC qB bC cC"},J:{"16":"D","164":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"164":"dC"},P:{"1":"nC oC","164":"I eC fC gC hC iC mB jC kC lC mC"},Q:{"1220":"pC"},R:{"164":"qC"},S:{"548":"rC"}},B:5,C:":is() CSS pseudo-class"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"Z a b c d e f g h i j k l X m H","2":"C K L G M N O","1220":"P Q R S T U V W"},C:{"1":"iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","16":"zB mB 0B 1B","548":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB"},D:{"1":"Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L","164":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y","196":"VB WB XB","1220":"YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W"},E:{"1":"L G AC BC tB uB vB CC lB DC","2":"I 4B rB","16":"n","164":"J D E 5B 6B 7B","260":"F A B C K 8B sB jB kB 9B"},F:{"1":"fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","164":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","196":"LB MB NB","1220":"OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB"},G:{"1":"aC bC cC tB uB vB lB","16":"rB JC xB KC LC","164":"E MC NC","260":"OC PC QC RC SC TC UC VC WC XC YC ZC"},H:{"2":"dC"},I:{"1":"H","16":"mB eC fC gC","164":"I hC xB iC jC"},J:{"16":"D","164":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"164":"kC"},P:{"1":"uC lB vC","164":"I lC mC nC oC pC sB qC rC sC tC"},Q:{"1220":"wC"},R:{"164":"xC"},S:{"548":"yC"}},B:5,C:":is() CSS pseudo-class"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-math-functions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-math-functions.js index 71f5bcae70c3ad..7854f74862a2d8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-math-functions.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-math-functions.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB tB uB"},D:{"1":"P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB"},E:{"1":"L G 3B 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB","132":"C K fB gB"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB 7B 8B 9B AC fB pB BC gB"},G:{"1":"SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC","132":"MC NC OC PC QC RC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"kC lC mC nC oC","2":"I eC fC gC hC iC mB jC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS math functions min(), max() and clamp()"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB 0B 1B"},D:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB"},E:{"1":"L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB","132":"C K jB kB"},F:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB EC FC GC HC jB wB IC kB"},G:{"1":"ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC","132":"TC UC VC WC XC YC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"rC sC tC uC lB vC","2":"I lC mC nC oC pC sB qC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS math functions min(), max() and clamp()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-interaction.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-interaction.js index 83db35d138cb32..140a0bc4c5c5f2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-interaction.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-interaction.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB tB uB"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s 7B 8B 9B AC fB pB BC gB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:5,C:"Media Queries: interaction media features"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB 0B 1B"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w EC FC GC HC jB wB IC kB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:5,C:"Media Queries: interaction media features"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-resolution.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-resolution.js index c5a1d9021da8cb..3515955dbee7f9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-resolution.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-resolution.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","132":"F A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB","260":"I j J D E F A B C K L G tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","548":"I j J D E F A B C K L G M N O k l m n o p q r s t"},E:{"1":"6B","2":"yB lB","548":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F","548":"B C 7B 8B 9B AC fB pB BC"},G:{"16":"lB","548":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"132":"WC"},I:{"1":"H bC cC","16":"XC YC","548":"hB I ZC aC qB"},J:{"548":"D A"},K:{"1":"U gB","548":"A B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"Media Queries: resolution feature"}; +module.exports={A:{A:{"2":"J D E yB","132":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB","260":"I n J D E F A B C K L G 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","548":"I n J D E F A B C K L G M N O o p q r s t u v w x"},E:{"1":"lB DC","2":"4B rB","548":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F","548":"B C EC FC GC HC jB wB IC"},G:{"1":"lB","16":"rB","548":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB"},H:{"132":"dC"},I:{"1":"H iC jC","16":"eC fC","548":"mB I gC hC xB"},J:{"548":"D A"},K:{"1":"Y kB","548":"A B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"Media Queries: resolution feature"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-scripting.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-scripting.js index 330ec0198d122d..c4b5b6fb0fc2d9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-scripting.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-scripting.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"16":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB tB uB","16":"HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i","16":"vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"Media Queries: scripting media feature"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"16":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 0B 1B","16":"LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H","16":"qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"Media Queries: scripting media feature"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mediaqueries.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mediaqueries.js index c7cef1e591b17a..b37949268821ba 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mediaqueries.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mediaqueries.js @@ -1 +1 @@ -module.exports={A:{A:{"8":"J D E rB","129":"F A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","129":"I j J D E F A B C K L G M N O k l m n o p q"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","129":"I j J zB","388":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","129":"lB CC qB DC EC"},H:{"1":"WC"},I:{"1":"H bC cC","129":"hB I XC YC ZC aC qB"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"129":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS3 Media Queries"}; +module.exports={A:{A:{"8":"J D E yB","129":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","129":"I n J D E F A B C K L G M N O o p q r s t u"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","129":"I n J 5B","388":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","129":"rB JC xB KC LC"},H:{"1":"dC"},I:{"1":"H iC jC","129":"mB I eC fC gC hC xB"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"129":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS3 Media Queries"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mixblendmode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mixblendmode.js index 2cc243149f459d..261ae4145e8ce8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mixblendmode.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mixblendmode.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w tB uB"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t","194":"0 1 2 3 4 5 u v w x y z"},E:{"2":"I j J D yB lB zB 0B","260":"E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t 7B 8B 9B AC fB pB BC gB"},G:{"2":"lB CC qB DC EC FC","260":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"Blending of HTML/SVG elements"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u v w x","194":"0 1 2 3 4 5 6 7 8 9 y z"},E:{"2":"I n J D 4B rB 5B 6B","260":"E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w x EC FC GC HC jB wB IC kB"},G:{"2":"rB JC xB KC LC MC","260":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"Blending of HTML/SVG elements"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-motion-paths.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-motion-paths.js index 5a90398e97fd91..d25c9408dc659b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-motion-paths.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-motion-paths.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB tB uB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","194":"8 9 AB"},E:{"1":"6B","2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u 7B 8B 9B AC fB pB BC gB","194":"v w x"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:5,C:"CSS Motion Path"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB 0B 1B"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB","194":"CB DB EB"},E:{"1":"lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w x y EC FC GC HC jB wB IC kB","194":"0 1 z"},G:{"1":"lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:5,C:"CSS Motion Path"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-namespaces.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-namespaces.js index 90d0304e79991f..77f1319637b7a9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-namespaces.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-namespaces.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS namespaces"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS namespaces"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nesting.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nesting.js index a987bd01649199..351eadae319acb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nesting.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nesting.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS Nesting"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Nesting"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-not-sel-list.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-not-sel-list.js index 86dfbe65388d2a..4d6cf5d69d2049 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-not-sel-list.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-not-sel-list.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"Z a b c d e f g T h H i","2":"C K L G M N O Q R S V W X Y","16":"P"},C:{"1":"V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S tB uB"},D:{"1":"Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB 7B 8B 9B AC fB pB BC gB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"nC oC","2":"I eC fC gC hC iC mB jC kC lC mC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"selector list argument of :not()"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"Z a b c d e f g h i j k l X m H","2":"C K L G M N O Q R S T U V W","16":"P"},C:{"1":"T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S 0B 1B"},D:{"1":"Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB EC FC GC HC jB wB IC kB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"uC lB vC","2":"I lC mC nC oC pC sB qC rC sC tC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"selector list argument of :not()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nth-child-of.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nth-child-of.js index 81e643d19e670b..08e3323e6b2999 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nth-child-of.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nth-child-of.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"selector list argument of :nth-child and :nth-last-child CSS pseudo-classes"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"selector list argument of :nth-child and :nth-last-child CSS pseudo-classes"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-opacity.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-opacity.js index 5b8b5480920f18..4a83e3ff8cb3ae 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-opacity.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-opacity.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","4":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS3 Opacity"}; +module.exports={A:{A:{"1":"F A B","4":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS3 Opacity"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-optional-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-optional-pseudo.js index 16054dfeeb4adf..1ad30a81e5a5d8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-optional-pseudo.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-optional-pseudo.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","16":"F 7B","132":"B C 8B 9B AC fB pB BC gB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"132":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"U","132":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:7,C:":optional CSS pseudo-class"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","16":"F EC","132":"B C FC GC HC jB wB IC kB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"132":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"Y","132":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:7,C:":optional CSS pseudo-class"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-anchor.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-anchor.js index 1ca20527d63475..44de1ccef557ed 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-anchor.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-anchor.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB tB uB"},D:{"1":"LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"2":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:5,C:"CSS overflow-anchor (Scroll Anchoring)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB 0B 1B"},D:{"1":"PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"2":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:5,C:"CSS overflow-anchor (Scroll Anchoring)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-overlay.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-overlay.js index adc1bbe2c34d28..01327e01f9a6f7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-overlay.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-overlay.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"1":"I j J D E F A B zB 0B 1B 2B mB fB","16":"yB lB","130":"C K L G gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC","16":"lB","130":"NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"16":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:7,C:"CSS overflow: overlay"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"1":"I n J D E F A B 5B 6B 7B 8B sB jB","16":"4B rB","130":"C K L G kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC","16":"rB","130":"UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"16":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:7,C:"CSS overflow: overlay"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow.js index da17e27ea14d93..5736abe7f8ee9a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow.js @@ -1 +1 @@ -module.exports={A:{A:{"388":"J D E F A B rB"},B:{"1":"b c d e f g T h H i","260":"P Q R S V W X Y Z a","388":"C K L G M N O"},C:{"1":"R kB S V W X Y Z a b c d e f g T h H i","260":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q","388":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB tB uB"},D:{"1":"b c d e f g T h H i vB wB xB","260":"UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a","388":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB"},E:{"1":"6B","260":"L G 3B 4B 5B nB oB","388":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB"},F:{"260":"KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","388":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB 7B 8B 9B AC fB pB BC gB"},G:{"260":"SC TC UC VC nB oB","388":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC"},H:{"388":"WC"},I:{"1":"H","388":"hB I XC YC ZC aC qB bC cC"},J:{"388":"D A"},K:{"1":"U","388":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"388":"A B"},O:{"388":"dC"},P:{"1":"nC oC","388":"I eC fC gC hC iC mB jC kC lC mC"},Q:{"388":"pC"},R:{"388":"qC"},S:{"388":"rC"}},B:5,C:"CSS overflow property"}; +module.exports={A:{A:{"388":"J D E F A B yB"},B:{"1":"b c d e f g h i j k l X m H","260":"P Q R S T U V W Z a","388":"C K L G M N O"},C:{"1":"R pB S T U V W Z a b c d e f g h i j k l X m H qB","260":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q","388":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB 0B 1B"},D:{"1":"b c d e f g h i j k l X m H qB 2B 3B","260":"YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a","388":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB"},E:{"1":"lB DC","260":"L G 9B AC BC tB uB vB CC","388":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB"},F:{"260":"OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","388":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB EC FC GC HC jB wB IC kB"},G:{"1":"lB","260":"ZC aC bC cC tB uB vB","388":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC"},H:{"388":"dC"},I:{"1":"H","388":"mB I eC fC gC hC xB iC jC"},J:{"388":"D A"},K:{"1":"Y","388":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"388":"A B"},O:{"388":"kC"},P:{"1":"uC lB vC","388":"I lC mC nC oC pC sB qC rC sC tC"},Q:{"388":"wC"},R:{"388":"xC"},S:{"388":"yC"}},B:5,C:"CSS overflow property"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js index 60c603bbfcb807..68ae4c1ff54845 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","132":"A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","132":"C K L G M N","516":"O"},C:{"1":"iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB tB uB"},D:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB","260":"QB U"},E:{"2":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B","1090":"G 4B 5B nB oB 6B"},F:{"1":"HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB 7B 8B 9B AC fB pB BC gB","260":"FB GB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC","1090":"UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"2":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I eC fC gC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"CSS overscroll-behavior"}; +module.exports={A:{A:{"2":"J D E F yB","132":"A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","132":"C K L G M N","516":"O"},C:{"1":"nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB 0B 1B"},D:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB","260":"UB Y"},E:{"1":"lB DC","2":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B","1090":"G AC BC tB uB vB CC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB EC FC GC HC jB wB IC kB","260":"JB KB"},G:{"1":"lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC","1090":"bC cC tB uB vB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"2":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I lC mC nC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS overscroll-behavior"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-page-break.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-page-break.js index 40dfa771b05880..bf559046f3b035 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-page-break.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-page-break.js @@ -1 +1 @@ -module.exports={A:{A:{"388":"A B","900":"J D E F rB"},B:{"388":"C K L G M N O","900":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"772":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","900":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U tB uB"},D:{"900":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"772":"A","900":"I j J D E F B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"16":"F 7B","129":"B C 8B 9B AC fB pB BC gB","900":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"900":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"129":"WC"},I:{"900":"hB I H XC YC ZC aC qB bC cC"},J:{"900":"D A"},K:{"129":"A B C fB pB gB","900":"U"},L:{"900":"H"},M:{"900":"T"},N:{"388":"A B"},O:{"900":"dC"},P:{"900":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"900":"pC"},R:{"900":"qC"},S:{"900":"rC"}},B:2,C:"CSS page-break properties"}; +module.exports={A:{A:{"388":"A B","900":"J D E F yB"},B:{"388":"C K L G M N O","900":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"772":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","900":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y 0B 1B"},D:{"900":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"772":"A","900":"I n J D E F B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"16":"F EC","129":"B C FC GC HC jB wB IC kB","900":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"900":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"129":"dC"},I:{"900":"mB I H eC fC gC hC xB iC jC"},J:{"900":"D A"},K:{"129":"A B C jB wB kB","900":"Y"},L:{"900":"H"},M:{"900":"X"},N:{"388":"A B"},O:{"900":"kC"},P:{"900":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"900":"wC"},R:{"900":"xC"},S:{"900":"yC"}},B:2,C:"CSS page-break properties"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paged-media.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paged-media.js index 5463a035c87c7d..6c73cc9e6418cb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paged-media.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paged-media.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D rB","132":"E F A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","132":"C K L G M N O"},C:{"2":"sB hB I j J D E F A B C K L G M N O tB uB","132":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","132":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"16":"WC"},I:{"16":"hB I H XC YC ZC aC qB bC cC"},J:{"16":"D A"},K:{"16":"A B C U fB pB gB"},L:{"1":"H"},M:{"132":"T"},N:{"258":"A B"},O:{"258":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"132":"rC"}},B:5,C:"CSS Paged Media (@page)"}; +module.exports={A:{A:{"2":"J D yB","132":"E F A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","132":"C K L G M N O"},C:{"2":"zB mB I n J D E F A B C K L G M N O 0B 1B","132":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","132":"F B C EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"16":"dC"},I:{"16":"mB I H eC fC gC hC xB iC jC"},J:{"16":"D A"},K:{"16":"A B C Y jB wB kB"},L:{"1":"H"},M:{"132":"X"},N:{"258":"A B"},O:{"258":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"132":"yC"}},B:5,C:"CSS Paged Media (@page)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paint-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paint-api.js index 34a7d27a1c3100..4a416f58876e85 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paint-api.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paint-api.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U"},E:{"2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB","194":"K L G gB 3B 4B 5B nB oB 6B"},F:{"1":"HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS Paint API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y"},E:{"2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB","194":"K L G kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Paint API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder-shown.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder-shown.js index 24cfae973b17bf..fa57bd81bc7f94 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder-shown.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder-shown.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","292":"A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","164":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w x y 7B 8B 9B AC fB pB BC gB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"164":"rC"}},B:5,C:":placeholder-shown CSS pseudo-class"}; +module.exports={A:{A:{"2":"J D E F yB","292":"A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","164":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},D:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"164":"yC"}},B:5,C:":placeholder-shown CSS pseudo-class"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder.js index 9753fbe6b82afd..6ed38ad78e0dfc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","36":"C K L G M N O"},C:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O tB uB","33":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB"},D:{"1":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","36":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","36":"j J D E F A zB 0B 1B 2B"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","36":"0 1 2 3 4 5 6 7 8 G M N O k l m n o p q r s t u v w x y z"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC","36":"E qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","36":"hB I XC YC ZC aC qB bC cC"},J:{"36":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"36":"A B"},O:{"1":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","36":"I eC fC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"33":"rC"}},B:5,C:"::placeholder CSS pseudo-element"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","36":"C K L G M N O"},C:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O 0B 1B","33":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},D:{"1":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","36":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","36":"n J D E F A 5B 6B 7B 8B"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","36":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC","36":"E xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","36":"mB I eC fC gC hC xB iC jC"},J:{"36":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"36":"A B"},O:{"1":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","36":"I lC mC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"33":"yC"}},B:5,C:"::placeholder CSS pseudo-element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-print-color-adjust.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-print-color-adjust.js new file mode 100644 index 00000000000000..a52b127abefa6a --- /dev/null +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-print-color-adjust.js @@ -0,0 +1 @@ +module.exports={A:{D:{"2":"I n J D E F A B C K L G M","33":"0 1 2 3 4 5 6 7 8 9 N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},L:{"33":"H"},B:{"2":"C K L G M N O","33":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB 0B 1B","33":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h"},M:{"1":"X"},A:{"2":"J D E F A B yB"},F:{"2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},K:{"2":"A B C jB wB kB","33":"Y"},E:{"1":"uB vB CC lB","2":"I n 4B rB 5B DC","33":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB"},G:{"1":"uB vB lB","2":"rB JC xB KC","33":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB"},P:{"33":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},I:{"2":"mB I eC fC gC hC xB","33":"H iC jC"}},B:6,C:"print-color-adjust property"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-read-only-write.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-read-only-write.js index 049c0f9357fbef..24198416ddaa13 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-read-only-write.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-read-only-write.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C"},C:{"1":"eB P Q R kB S V W X Y Z a b c d e f g T h H i","16":"sB","33":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB tB uB"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L","132":"0 G M N O k l m n o p q r s t u v w x y z"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","16":"yB lB","132":"I j J D E zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","16":"F B 7B 8B 9B AC fB","132":"C G M N O k l m n pB BC gB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC","132":"E qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","16":"XC YC","132":"hB I ZC aC qB bC cC"},J:{"1":"A","132":"D"},K:{"1":"U","2":"A B fB","132":"C pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"33":"rC"}},B:1,C:"CSS :read-only and :read-write selectors"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C"},C:{"1":"iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","16":"zB","33":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB 0B 1B"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L","132":"0 1 2 3 4 G M N O o p q r s t u v w x y z"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"4B rB","132":"I n J D E 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","16":"F B EC FC GC HC jB","132":"C G M N O o p q r wB IC kB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC","132":"E xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","16":"eC fC","132":"mB I gC hC xB iC jC"},J:{"1":"A","132":"D"},K:{"1":"Y","2":"A B jB","132":"C wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"33":"yC"}},B:1,C:"CSS :read-only and :read-write selectors"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rebeccapurple.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rebeccapurple.js index 60b62f127713af..3c7e18c87b9803 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rebeccapurple.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rebeccapurple.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","132":"B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x tB uB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB","16":"0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p 7B 8B 9B AC fB pB BC gB"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"Rebeccapurple color"}; +module.exports={A:{A:{"2":"J D E F A yB","132":"B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B","16":"6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t EC FC GC HC jB wB IC kB"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"Rebeccapurple color"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-reflections.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-reflections.js index 5930e01020680c..c17289c0ece23e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-reflections.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-reflections.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","33":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"yB lB","33":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"33":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"33":"hB I H XC YC ZC aC qB bC cC"},J:{"33":"D A"},K:{"2":"A B C fB pB gB","33":"U"},L:{"33":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"33":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"33":"pC"},R:{"33":"qC"},S:{"2":"rC"}},B:7,C:"CSS Reflections"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","33":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"4B rB","33":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"33":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"33":"mB I H eC fC gC hC xB iC jC"},J:{"33":"D A"},K:{"2":"A B C jB wB kB","33":"Y"},L:{"33":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"33":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"33":"wC"},R:{"33":"xC"},S:{"2":"yC"}},B:7,C:"CSS Reflections"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-regions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-regions.js index 99f06a3e7dfbdb..2f1a586d827a09 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-regions.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-regions.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","420":"A B"},B:{"2":"P Q R S V W X Y Z a b c d e f g T h H i","420":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","36":"G M N O","66":"k l m n o p q r s t u v w x y z"},E:{"2":"I j J C K L G yB lB zB fB gB 3B 4B 5B nB oB 6B","33":"D E F A B 0B 1B 2B mB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"lB CC qB DC EC MC NC OC PC QC RC SC TC UC VC nB oB","33":"E FC GC HC IC JC KC LC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"420":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS Regions"}; +module.exports={A:{A:{"2":"J D E F yB","420":"A B"},B:{"2":"P Q R S T U V W Z a b c d e f g h i j k l X m H","420":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"4 5 6 7 8 9 I n J D E F A B C K L AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","36":"G M N O","66":"0 1 2 3 o p q r s t u v w x y z"},E:{"2":"I n J C K L G 4B rB 5B jB kB 9B AC BC tB uB vB CC lB DC","33":"D E F A B 6B 7B 8B sB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"rB JC xB KC LC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","33":"E MC NC OC PC QC RC SC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"420":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Regions"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-repeating-gradients.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-repeating-gradients.js index 7c90ebec39a0ac..4b5d1876bded91 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-repeating-gradients.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-repeating-gradients.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB","33":"I j J D E F A B C K L G uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F","33":"A B C K L G M N O k l m n o p q"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB","33":"J zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B 7B 8B 9B AC","33":"C BC","36":"fB pB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB","33":"DC EC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB XC YC ZC","33":"I aC qB"},J:{"1":"A","2":"D"},K:{"1":"U gB","2":"A B","33":"C","36":"fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS Repeating Gradients"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B","33":"I n J D E F A B C K L G 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F","33":"A B C K L G M N O o p q r s t u"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB","33":"J 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B EC FC GC HC","33":"C IC","36":"jB wB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB","33":"KC LC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB eC fC gC","33":"I hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y kB","2":"A B","33":"C","36":"jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS Repeating Gradients"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-resize.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-resize.js index 1e0ae638a02e79..34a574d3159569 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-resize.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-resize.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","33":"I"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC","132":"gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:4,C:"CSS resize property"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","33":"I"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC","132":"kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:4,C:"CSS resize property"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-revert-value.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-revert-value.js index 25a8133cf5d1af..9e19c1927e3b86 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-revert-value.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-revert-value.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"V W X Y Z a b c d e f g T h H i","2":"C K L G M N O P Q R S"},C:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB tB uB"},D:{"1":"V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S"},E:{"1":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B"},F:{"1":"ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB 7B 8B 9B AC fB pB BC gB"},G:{"1":"IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mC nC oC","2":"I eC fC gC hC iC mB jC kC lC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS revert value"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O P Q R S"},C:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB 0B 1B"},D:{"1":"T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S"},E:{"1":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B"},F:{"1":"dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB EC FC GC HC jB wB IC kB"},G:{"1":"PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"tC uC lB vC","2":"I lC mC nC oC pC sB qC rC sC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS revert value"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rrggbbaa.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rrggbbaa.js index 9c7515fa07e825..bf56febc182d1c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rrggbbaa.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rrggbbaa.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB tB uB"},D:{"1":"PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB","194":"HB IB JB KB LB MB NB iB OB jB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","194":"4 5 6 7 8 9 AB BB CB DB EB FB GB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I","194":"eC fC gC"},Q:{"2":"pC"},R:{"194":"qC"},S:{"2":"rC"}},B:7,C:"#rrggbbaa hex color notation"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB 0B 1B"},D:{"1":"TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","194":"LB MB NB OB PB QB RB nB SB oB"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","194":"8 9 AB BB CB DB EB FB GB HB IB JB KB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I","194":"lC mC nC"},Q:{"2":"wC"},R:{"194":"xC"},S:{"2":"yC"}},B:5,C:"#rrggbbaa hex color notation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-behavior.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-behavior.js index 81dedf90bfd344..e395160a509ed5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-behavior.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-behavior.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","129":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"2":"0 1 2 3 4 5 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","129":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","450":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB"},E:{"1":"oB 6B","2":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB 3B","578":"L G 4B 5B nB"},F:{"2":"F B C G M N O k l m n o p q r s 7B 8B 9B AC fB pB BC gB","129":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","450":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB"},G:{"1":"oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC","578":"UC VC nB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"129":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I eC fC gC"},Q:{"129":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSSOM Scroll-behavior"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","129":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z","129":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","450":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB"},E:{"1":"uB vB CC lB DC","2":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB 9B","578":"L G AC BC tB"},F:{"2":"F B C G M N O o p q r s t u v w EC FC GC HC jB wB IC kB","129":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","450":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB"},G:{"1":"uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC","578":"bC cC tB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"129":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I lC mC nC"},Q:{"129":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Scroll-behavior"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-timeline.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-timeline.js index ee785f62fd06cb..1d564bc8814d2c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-timeline.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-timeline.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a","194":"b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V","194":"Z a b c d e f g T h H i vB wB xB","322":"W X Y"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB 7B 8B 9B AC fB pB BC gB","194":"bB cB dB eB P Q R kB S","322":"ZB aB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"CSS @scroll-timeline"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a","194":"b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T","194":"Z a b c d e f g h i j k l X m H qB 2B 3B","322":"U V W"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB EC FC GC HC jB wB IC kB","194":"fB gB hB iB P Q R pB S T U V W","322":"dB eB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"CSS @scroll-timeline"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scrollbar.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scrollbar.js index 46254f0c5b34c1..abd8bde722e8a4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scrollbar.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scrollbar.js @@ -1 +1 @@ -module.exports={A:{A:{"132":"J D E F A B rB"},B:{"2":"C K L G M N O","292":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB tB uB","3074":"QB","4100":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"292":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"16":"I j yB lB","292":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","292":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"TC UC VC nB oB","16":"lB CC qB DC EC","292":"FC","804":"E GC HC IC JC KC LC MC NC OC PC QC RC SC"},H:{"2":"WC"},I:{"16":"XC YC","292":"hB I H ZC aC qB bC cC"},J:{"292":"D A"},K:{"2":"A B C fB pB gB","292":"U"},L:{"292":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"292":"dC"},P:{"292":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"292":"pC"},R:{"292":"qC"},S:{"2":"rC"}},B:7,C:"CSS scrollbar styling"}; +module.exports={A:{A:{"132":"J D E F A B yB"},B:{"2":"C K L G M N O","292":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB 0B 1B","3074":"UB","4100":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"292":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"16":"I n 4B rB","292":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","292":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"aC bC cC tB uB vB lB","16":"rB JC xB KC LC","292":"MC","804":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC"},H:{"2":"dC"},I:{"16":"eC fC","292":"mB I H gC hC xB iC jC"},J:{"292":"D A"},K:{"2":"A B C jB wB kB","292":"Y"},L:{"292":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"292":"kC"},P:{"292":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"292":"wC"},R:{"292":"xC"},S:{"2":"yC"}},B:7,C:"CSS scrollbar styling"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel2.js index 232b720bdf8cc2..6717d7e3b5fd82 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel2.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel2.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"D E F A B","2":"rB","8":"J"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS 2.1 selectors"}; +module.exports={A:{A:{"1":"D E F A B","2":"yB","8":"J"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS 2.1 selectors"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel3.js index 9358544f9a3b00..30a79b2be0fda6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel3.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel3.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"rB","8":"J","132":"D E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS3 selectors"}; +module.exports={A:{A:{"1":"F A B","2":"yB","8":"J","132":"D E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS3 selectors"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-selection.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-selection.js index e9658d713fc09a..21b304b77c23de 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-selection.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-selection.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","33":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"C U pB gB","16":"A B fB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"33":"rC"}},B:5,C:"::selection CSS pseudo-element"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","33":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"C Y wB kB","16":"A B jB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"33":"yC"}},B:5,C:"::selection CSS pseudo-element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-shapes.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-shapes.js index 5765a352475974..f0f1c237a8a593 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-shapes.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-shapes.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB tB uB","322":"GB HB IB JB KB LB MB NB iB OB jB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y","194":"0 1 z"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B","33":"E F A 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o 7B 8B 9B AC fB pB BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC","33":"E GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:4,C:"CSS Shapes Level 1"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB 0B 1B","322":"KB LB MB NB OB PB QB RB nB SB oB"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 I n J D E F A B C K L G M N O o p q r s t u v w x y z","194":"3 4 5"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B","33":"E F A 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s EC FC GC HC jB wB IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC","33":"E NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:4,C:"CSS Shapes Level 1"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-snappoints.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-snappoints.js index 1f761170a85255..87fc66981a5119 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-snappoints.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-snappoints.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","6308":"A","6436":"B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","6436":"C K L G M N O"},C:{"1":"UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","2052":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB"},D:{"1":"VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB","8258":"SB TB UB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B","3108":"F A 2B mB"},F:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB 7B 8B 9B AC fB pB BC gB","8258":"JB KB LB MB NB OB PB QB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC","3108":"HC IC JC KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mB jC kC lC mC nC oC","2":"I eC fC gC hC iC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2052":"rC"}},B:4,C:"CSS Scroll Snap"}; +module.exports={A:{A:{"2":"J D E F yB","6308":"A","6436":"B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","6436":"C K L G M N O"},C:{"1":"YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","2052":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB"},D:{"1":"ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB","8258":"WB XB YB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B","3108":"F A 8B sB"},F:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC GC HC jB wB IC kB","8258":"NB OB PB QB RB SB TB UB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC","3108":"OC PC QC RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"sB qC rC sC tC uC lB vC","2":"I lC mC nC oC pC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2052":"yC"}},B:4,C:"CSS Scroll Snap"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sticky.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sticky.js index 2fca4ae59593e8..88875ca658dec3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sticky.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sticky.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"c d e f g T h H i","2":"C K L G","1028":"P Q R S V W X Y Z a b","4100":"M N O"},C:{"1":"iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q tB uB","194":"r s t u v w","516":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},D:{"1":"c d e f g T h H i vB wB xB","2":"2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n AB BB CB DB EB FB GB","322":"0 1 o p q r s t u v w x y z HB IB JB KB","1028":"LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b"},E:{"1":"K L G 3B 4B 5B nB oB 6B","2":"I j J yB lB zB","33":"E F A B C 1B 2B mB fB gB","2084":"D 0B"},F:{"1":"eB P Q R kB S","2":"0 1 2 3 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","322":"4 5 6","1028":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB"},G:{"1":"PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC","33":"E GC HC IC JC KC LC MC NC OC","2084":"EC FC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1028":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I eC"},Q:{"1028":"pC"},R:{"2":"qC"},S:{"516":"rC"}},B:5,C:"CSS position:sticky"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"c d e f g h i j k l X m H","2":"C K L G","1028":"P Q R S T U V W Z a b","4100":"M N O"},C:{"1":"nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u 0B 1B","194":"0 v w x y z","516":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},D:{"1":"c d e f g h i j k l X m H qB 2B 3B","2":"6 7 8 9 I n J D E F A B C K L G M N O o p q r AB BB CB DB EB FB GB HB IB JB KB","322":"0 1 2 3 4 5 s t u v w x y z LB MB NB OB","1028":"PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b"},E:{"1":"K L G 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B","33":"E F A B C 7B 8B sB jB kB","2084":"D 6B"},F:{"1":"iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","322":"8 9 AB","1028":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB"},G:{"1":"WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC","33":"E NC OC PC QC RC SC TC UC VC","2084":"LC MC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1028":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I lC"},Q:{"1028":"wC"},R:{"2":"xC"},S:{"516":"yC"}},B:5,C:"CSS position:sticky"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-subgrid.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-subgrid.js index 1c42c9358dc630..74fcd7245f0195 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-subgrid.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-subgrid.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS Subgrid"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Subgrid"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-supports-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-supports-api.js index 0b1d44de53a2f3..c3f56b2f49c6cd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-supports-api.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-supports-api.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","260":"C K L G M N O"},C:{"1":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k tB uB","66":"l m","260":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},D:{"1":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s","260":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC","132":"gB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"132":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB","132":"gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS.supports() API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C K L G M N O"},C:{"1":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o 0B 1B","66":"p q","260":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},D:{"1":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u v w","260":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC","132":"kB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"132":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB","132":"kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS.supports() API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-table.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-table.js index 2298cda3553410..80093893328c4a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-table.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-table.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"E F A B","2":"J D rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","132":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS Table display"}; +module.exports={A:{A:{"1":"E F A B","2":"J D yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","132":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS Table display"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-align-last.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-align-last.js index 1f62af008ca5b7..4aefb00e40f357 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-align-last.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-align-last.js @@ -1 +1 @@ -module.exports={A:{A:{"132":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","4":"C K L G M N O"},C:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B tB uB","33":"0 1 2 3 4 5 6 7 8 9 C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","322":"0 1 2 3 4 5 6 7 8 9 AB BB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m 7B 8B 9B AC fB pB BC gB","578":"n o p q r s t u v w x y"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"2":"pC"},R:{"1":"qC"},S:{"33":"rC"}},B:5,C:"CSS3 text-align-last"}; +module.exports={A:{A:{"132":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","4":"C K L G M N O"},C:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B 0B 1B","33":"0 1 2 3 4 5 6 7 8 9 C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},D:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 I n J D E F A B C K L G M N O o p q r s t u v w x y z","322":"4 5 6 7 8 9 AB BB CB DB EB FB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q EC FC GC HC jB wB IC kB","578":"0 1 2 r s t u v w x y z"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"2":"wC"},R:{"1":"xC"},S:{"33":"yC"}},B:5,C:"CSS3 text-align-last"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-indent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-indent.js index e709db7d860de8..edfc9adea34c85 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-indent.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-indent.js @@ -1 +1 @@ -module.exports={A:{A:{"132":"J D E F A B rB"},B:{"132":"C K L G M N O","388":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"132":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"132":"0 1 2 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","388":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"132":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"132":"F B C G M N O k l m n o p 7B 8B 9B AC fB pB BC gB","388":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"132":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"132":"WC"},I:{"132":"hB I XC YC ZC aC qB bC cC","388":"H"},J:{"132":"D A"},K:{"132":"A B C fB pB gB","388":"U"},L:{"388":"H"},M:{"132":"T"},N:{"132":"A B"},O:{"132":"dC"},P:{"132":"I","388":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"388":"pC"},R:{"388":"qC"},S:{"132":"rC"}},B:5,C:"CSS text-indent"}; +module.exports={A:{A:{"132":"J D E F A B yB"},B:{"132":"C K L G M N O","388":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"132":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"132":"0 1 2 3 4 5 6 I n J D E F A B C K L G M N O o p q r s t u v w x y z","388":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"lB DC","132":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC"},F:{"132":"F B C G M N O o p q r s t EC FC GC HC jB wB IC kB","388":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"lB","132":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB"},H:{"132":"dC"},I:{"132":"mB I eC fC gC hC xB iC jC","388":"H"},J:{"132":"D A"},K:{"132":"A B C jB wB kB","388":"Y"},L:{"388":"H"},M:{"132":"X"},N:{"132":"A B"},O:{"132":"kC"},P:{"132":"I","388":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"388":"wC"},R:{"388":"xC"},S:{"132":"yC"}},B:5,C:"CSS text-indent"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-justify.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-justify.js index 611883bc3bbb4b..57142c90188884 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-justify.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-justify.js @@ -1 +1 @@ -module.exports={A:{A:{"16":"J D rB","132":"E F A B"},B:{"132":"C K L G M N O","322":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB tB uB","1025":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","1602":"JB"},D:{"2":"0 1 2 3 4 5 6 7 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","322":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C G M N O k l m n o p q r s t u 7B 8B 9B AC fB pB BC gB","322":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","322":"H"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","322":"U"},L:{"322":"H"},M:{"1025":"T"},N:{"132":"A B"},O:{"2":"dC"},P:{"2":"I","322":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"322":"pC"},R:{"322":"qC"},S:{"2":"rC"}},B:5,C:"CSS text-justify"}; +module.exports={A:{A:{"16":"J D yB","132":"E F A B"},B:{"132":"C K L G M N O","322":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB 0B 1B","1025":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","1602":"NB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB","322":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C G M N O o p q r s t u v w x y EC FC GC HC jB wB IC kB","322":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","322":"H"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","322":"Y"},L:{"322":"H"},M:{"1025":"X"},N:{"132":"A B"},O:{"2":"kC"},P:{"2":"I","322":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"322":"wC"},R:{"322":"xC"},S:{"2":"yC"}},B:5,C:"CSS text-justify"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-orientation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-orientation.js index 17111296bd1ffc..343ade7b85df52 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-orientation.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-orientation.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","194":"3 4 5"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB"},E:{"1":"L G 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B","16":"A","33":"B C K mB fB gB 3B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS text-orientation"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","194":"7 8 9"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB"},E:{"1":"L G AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B","16":"A","33":"B C K sB jB kB 9B"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS text-orientation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-spacing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-spacing.js index abbd706c804857..ee514db0363797 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-spacing.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-spacing.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D rB","161":"E F A B"},B:{"2":"P Q R S V W X Y Z a b c d e f g T h H i","161":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"16":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS Text 4 text-spacing"}; +module.exports={A:{A:{"2":"J D yB","161":"E F A B"},B:{"2":"P Q R S T U V W Z a b c d e f g h i j k l X m H","161":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"16":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS Text 4 text-spacing"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-textshadow.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-textshadow.js index 2732fee956942f..fd3f8eea8375f6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-textshadow.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-textshadow.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","129":"A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","129":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","260":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"4":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"A","4":"D"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"129":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS3 Text-shadow"}; +module.exports={A:{A:{"2":"J D E F yB","129":"A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","129":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","260":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"4":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"A","4":"D"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"129":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS3 Text-shadow"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action-2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action-2.js index 04411d32d7eb67..e6629e8a239775 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action-2.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action-2.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","132":"B","164":"A"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","132":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","260":"KB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","260":"7"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"132":"B","164":"A"},O:{"2":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","16":"I"},Q:{"2":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:5,C:"CSS touch-action level 2 values"}; +module.exports={A:{A:{"2":"J D E F yB","132":"B","164":"A"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","132":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","260":"OB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB EC FC GC HC jB wB IC kB","260":"BB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"132":"B","164":"A"},O:{"2":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","16":"I"},Q:{"2":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:5,C:"CSS touch-action level 2 values"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action.js index 2537375505d097..a30aa041fb641e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F rB","289":"A"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB","194":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB","1025":"HB IB JB KB LB"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n 7B 8B 9B AC fB pB BC gB"},G:{"1":"PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC","516":"IC JC KC LC MC NC OC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","289":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"194":"rC"}},B:2,C:"CSS touch-action property"}; +module.exports={A:{A:{"1":"B","2":"J D E F yB","289":"A"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B","194":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB","1025":"LB MB NB OB PB"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r EC FC GC HC jB wB IC kB"},G:{"1":"WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC","516":"PC QC RC SC TC UC VC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","289":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"194":"yC"}},B:2,C:"CSS touch-action property"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-transitions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-transitions.js index 7f6227380d0c1c..75be93208e1c46 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-transitions.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-transitions.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","33":"j J D E F A B C K L G","164":"I"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"I j J D E F A B C K L G M N O k l m n o p q"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","33":"J zB","164":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F 7B 8B","33":"C","164":"B 9B AC fB pB BC"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","33":"EC","164":"lB CC qB DC"},H:{"2":"WC"},I:{"1":"H bC cC","33":"hB I XC YC ZC aC qB"},J:{"1":"A","33":"D"},K:{"1":"U gB","33":"C","164":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"CSS3 Transitions"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","33":"n J D E F A B C K L G","164":"I"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"I n J D E F A B C K L G M N O o p q r s t u"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","33":"J 5B","164":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F EC FC","33":"C","164":"B GC HC jB wB IC"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","33":"LC","164":"rB JC xB KC"},H:{"2":"dC"},I:{"1":"H iC jC","33":"mB I eC fC gC hC xB"},J:{"1":"A","33":"D"},K:{"1":"Y kB","33":"C","164":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"CSS3 Transitions"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unicode-bidi.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unicode-bidi.js index 71bbef18ef3a22..7abe218963f47e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unicode-bidi.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unicode-bidi.js @@ -1 +1 @@ -module.exports={A:{A:{"132":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","132":"C K L G M N O"},C:{"1":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","33":"0 1 2 3 4 5 6 7 8 9 N O k l m n o p q r s t u v w x y z AB BB CB DB EB","132":"sB hB I j J D E F tB uB","292":"A B C K L G M"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","132":"I j J D E F A B C K L G M","548":"0 1 2 3 4 5 6 7 8 9 N O k l m n o p q r s t u v w x y z AB BB CB"},E:{"132":"I j J D E yB lB zB 0B 1B","548":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"132":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"132":"E lB CC qB DC EC FC GC","548":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"16":"WC"},I:{"1":"H","16":"hB I XC YC ZC aC qB bC cC"},J:{"16":"D A"},K:{"1":"U","16":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"16":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","16":"I"},Q:{"16":"pC"},R:{"16":"qC"},S:{"33":"rC"}},B:4,C:"CSS unicode-bidi property"}; +module.exports={A:{A:{"132":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","132":"C K L G M N O"},C:{"1":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","33":"0 1 2 3 4 5 6 7 8 9 N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","132":"zB mB I n J D E F 0B 1B","292":"A B C K L G M"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","132":"I n J D E F A B C K L G M","548":"0 1 2 3 4 5 6 7 8 9 N O o p q r s t u v w x y z AB BB CB DB EB FB GB"},E:{"132":"I n J D E 4B rB 5B 6B 7B","548":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"132":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"132":"E rB JC xB KC LC MC NC","548":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"16":"dC"},I:{"1":"H","16":"mB I eC fC gC hC xB iC jC"},J:{"16":"D A"},K:{"1":"Y","16":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"16":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","16":"I"},Q:{"16":"wC"},R:{"16":"xC"},S:{"33":"yC"}},B:4,C:"CSS unicode-bidi property"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unset-value.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unset-value.js index eabbf48f8d758a..45145ad6782006 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unset-value.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unset-value.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r tB uB"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s 7B 8B 9B AC fB pB BC gB"},G:{"1":"IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS unset value"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v 0B 1B"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w EC FC GC HC jB wB IC kB"},G:{"1":"PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS unset value"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-variables.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-variables.js index ac487151f3fc7b..8b85a7ffc54b69 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-variables.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-variables.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L","260":"G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v tB uB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB","194":"DB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B","260":"2B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","194":"0"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC","260":"IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"2":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:4,C:"CSS Variables (Custom Properties)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L","260":"G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB","194":"HB"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B","260":"8B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","194":"4"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC","260":"PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"2":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:4,C:"CSS Variables (Custom Properties)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-when-else.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-when-else.js index e7718ebf605f31..67c60aecb605ef 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-when-else.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-when-else.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"CSS @when / @else conditional rules"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"CSS @when / @else conditional rules"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-widows-orphans.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-widows-orphans.js index 71a1d90c4f8429..3fe9747865d45b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-widows-orphans.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-widows-orphans.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D rB","129":"E F"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p"},E:{"1":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","129":"F B 7B 8B 9B AC fB pB BC"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"1":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U gB","2":"A B C fB pB"},L:{"1":"H"},M:{"2":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:2,C:"CSS widows & orphans"}; +module.exports={A:{A:{"1":"A B","2":"J D yB","129":"E F"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t"},E:{"1":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","129":"F B EC FC GC HC jB wB IC"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"1":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y kB","2":"A B C jB wB"},L:{"1":"H"},M:{"2":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:2,C:"CSS widows & orphans"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-width-stretch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-width-stretch.js index 90c1358a46ce62..927c4b309e81a2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-width-stretch.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-width-stretch.js @@ -1 +1 @@ -module.exports={A:{D:{"2":"I j J D E F A B C K L G M N O k l m","33":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},L:{"33":"H"},B:{"2":"C K L G M N O","33":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB","33":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},M:{"33":"T"},A:{"2":"J D E F A B rB"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},K:{"2":"A B C fB pB gB","33":"U"},E:{"2":"I j J yB lB zB 0B 6B","33":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB"},G:{"2":"lB CC qB DC EC","33":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},P:{"2":"I","33":"eC fC gC hC iC mB jC kC lC mC nC oC"},I:{"2":"hB I XC YC ZC aC qB","33":"H bC cC"}},B:6,C:"width: stretch property"}; +module.exports={A:{D:{"2":"I n J D E F A B C K L G M N O o p q","33":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},L:{"33":"H"},B:{"2":"C K L G M N O","33":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB","33":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},M:{"33":"X"},A:{"2":"J D E F A B yB"},F:{"2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},K:{"2":"A B C jB wB kB","33":"Y"},E:{"2":"I n J 4B rB 5B 6B DC","33":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB"},G:{"2":"rB JC xB KC LC","33":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},P:{"2":"I","33":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},I:{"2":"mB I eC fC gC hC xB","33":"H iC jC"}},B:6,C:"width: stretch property"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-writing-mode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-writing-mode.js index 86e7d0db5678f2..27aadab151dcf7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-writing-mode.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-writing-mode.js @@ -1 +1 @@ -module.exports={A:{A:{"132":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","322":"1 2 3 4 5"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J","16":"D","33":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","16":"j","33":"J D E F A zB 0B 1B 2B mB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","33":"G M N O k l m n o p q r s t u v w x y z"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB","33":"E DC EC FC GC HC IC JC KC"},H:{"2":"WC"},I:{"1":"H","2":"XC YC ZC","33":"hB I aC qB bC cC"},J:{"33":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"36":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","33":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS writing-mode property"}; +module.exports={A:{A:{"132":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","322":"5 6 7 8 9"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J","16":"D","33":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","16":"n","33":"J D E F A 5B 6B 7B 8B sB"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 G M N O o p q r s t u v w x y z"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB","33":"E KC LC MC NC OC PC QC RC"},H:{"2":"dC"},I:{"1":"H","2":"eC fC gC","33":"mB I hC xB iC jC"},J:{"33":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"36":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","33":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS writing-mode property"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-zoom.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-zoom.js index de19335ca72705..1acbc23e8ed972 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-zoom.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-zoom.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D rB","129":"E F A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB"},H:{"2":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"129":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:7,C:"CSS zoom"}; +module.exports={A:{A:{"1":"J D yB","129":"E F A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB"},H:{"2":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"129":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:7,C:"CSS zoom"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-attr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-attr.js index 5883c2192c9c94..dd646959b98e97 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-attr.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-attr.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:4,C:"CSS3 attr() function for all properties"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"CSS3 attr() function for all properties"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-boxsizing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-boxsizing.js index 4d6d65cb141a5f..2c819904aab808 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-boxsizing.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-boxsizing.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"E F A B","8":"J D rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","33":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"I j J D E F"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","33":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","33":"lB CC qB"},H:{"1":"WC"},I:{"1":"I H aC qB bC cC","33":"hB XC YC ZC"},J:{"1":"A","33":"D"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"CSS3 Box-sizing"}; +module.exports={A:{A:{"1":"E F A B","8":"J D yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","33":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"I n J D E F"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","33":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","33":"rB JC xB"},H:{"1":"dC"},I:{"1":"I H hC xB iC jC","33":"mB eC fC gC"},J:{"1":"A","33":"D"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"CSS3 Box-sizing"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-colors.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-colors.js index 603629f4a08fab..7e75665b53091a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-colors.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-colors.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","4":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 8B 9B AC fB pB BC gB","2":"F","4":"7B"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS3 Colors"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","4":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W FC GC HC jB wB IC kB","2":"F","4":"EC"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS3 Colors"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-grab.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-grab.js index 5cd2e8d7badbca..595a71afe4971e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-grab.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-grab.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","33":"sB hB I j J D E F A B C K L G M N O k l m n o p q r tB uB"},D:{"1":"UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","33":"I j J D E F A yB lB zB 0B 1B 2B mB"},F:{"1":"C KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"F B 7B 8B 9B AC fB pB","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"33":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"33":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:3,C:"CSS grab & grabbing cursors"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","33":"zB mB I n J D E F A B C K L G M N O o p q r s t u v 0B 1B"},D:{"1":"YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","33":"I n J D E F A 4B rB 5B 6B 7B 8B sB"},F:{"1":"C OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"F B EC FC GC HC jB wB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"33":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"33":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:3,C:"CSS grab & grabbing cursors"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-newer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-newer.js index 3324620da49b53..79f2587b299536 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-newer.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-newer.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","33":"sB hB I j J D E F A B C K L G M N O k l m n o tB uB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"0 1 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","33":"I j J D E yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"F B 7B 8B 9B AC fB pB","33":"G M N O k l m n o"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"33":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:4,C:"CSS3 Cursors: zoom-in & zoom-out"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","33":"zB mB I n J D E F A B C K L G M N O o p q r s 0B 1B"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"0 1 2 3 4 5 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","33":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"F B EC FC GC HC jB wB","33":"G M N O o p q r s"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"33":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"CSS3 Cursors: zoom-in & zoom-out"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors.js index 74a1449949ff95..20deb251a06ade 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","132":"J D E rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","260":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","4":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","4":"I"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","4":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","260":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D","16":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:4,C:"CSS3 Cursors (original values)"}; +module.exports={A:{A:{"1":"F A B","132":"J D E yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","4":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","4":"I"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","4":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","260":"F B C EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D","16":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"CSS3 Cursors (original values)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-tabsize.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-tabsize.js index 8f088acaf9c457..fc5fc8feb8baa1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-tabsize.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-tabsize.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"c d e f g T h H i","2":"sB hB tB uB","33":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b","164":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l","132":"0 1 2 3 4 5 6 m n o p q r s t u v w x y z"},E:{"1":"L G 3B 4B 5B nB oB 6B","2":"I j J yB lB zB","132":"D E F A B C K 0B 1B 2B mB fB gB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F 7B 8B 9B","132":"G M N O k l m n o p q r s t","164":"B C AC fB pB BC gB"},G:{"1":"SC TC UC VC nB oB","2":"lB CC qB DC EC","132":"E FC GC HC IC JC KC LC MC NC OC PC QC RC"},H:{"164":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB","132":"bC cC"},J:{"132":"D A"},K:{"1":"U","2":"A","164":"B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"164":"rC"}},B:5,C:"CSS3 tab-size"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","33":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b","164":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p","132":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB"},E:{"1":"L G 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B","132":"D E F A B C K 6B 7B 8B sB jB kB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F EC FC GC","132":"G M N O o p q r s t u v w x","164":"B C HC jB wB IC kB"},G:{"1":"ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC","132":"E MC NC OC PC QC RC SC TC UC VC WC XC YC"},H:{"164":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB","132":"iC jC"},J:{"132":"D A"},K:{"1":"Y","2":"A","164":"B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"164":"yC"}},B:4,C:"CSS3 tab-size"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/currentcolor.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/currentcolor.js index 294f2586c4f86f..db0c8c2d1fa0d2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/currentcolor.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/currentcolor.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS currentColor value"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS currentColor value"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elements.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elements.js index 4c2db2806547f0..02fe71f27f5eef 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elements.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elements.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","8":"A B"},B:{"1":"P","2":"Q R S V W X Y Z a b c d e f g T h H i","8":"C K L G M N O"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","66":"o p q r s t u","72":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P","2":"I j J D E F A B C K L G M N O k l m n o p q r Q R S V W X Y Z a b c d e f g T h H i vB wB xB","66":"s t u v w x"},E:{"2":"I j yB lB zB","8":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB","2":"F B C TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","66":"G M N O k"},G:{"2":"lB CC qB DC EC","8":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"cC","2":"hB I H XC YC ZC aC qB bC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC","2":"lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"72":"rC"}},B:7,C:"Custom Elements (deprecated V0 spec)"}; +module.exports={A:{A:{"2":"J D E F yB","8":"A B"},B:{"1":"P","2":"Q R S T U V W Z a b c d e f g h i j k l X m H","8":"C K L G M N O"},C:{"2":"zB mB I n J D E F A B C K L G M N O o p q r nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","66":"s t u v w x y","72":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P","2":"I n J D E F A B C K L G M N O o p q r s t u v Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","66":"0 1 w x y z"},E:{"2":"I n 4B rB 5B","8":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB","2":"F B C XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","66":"G M N O o"},G:{"2":"rB JC xB KC LC","8":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"jC","2":"mB I H eC fC gC hC xB iC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC","2":"sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"72":"yC"}},B:7,C:"Custom Elements (deprecated V0 spec)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elementsv1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elementsv1.js index 6ab9de57994eb0..4b8d6a7247a301 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elementsv1.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elementsv1.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","8":"A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","8":"C K L G M N O"},C:{"1":"QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u tB uB","8":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB","456":"FB GB HB IB JB KB LB MB NB","712":"iB OB jB PB"},D:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB","8":"HB IB","132":"JB KB LB MB NB iB OB jB PB QB U RB SB"},E:{"2":"I j J D yB lB zB 0B 1B","8":"E F A 2B","132":"B C K L G mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","132":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC","132":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I","132":"eC"},Q:{"132":"pC"},R:{"132":"qC"},S:{"8":"rC"}},B:1,C:"Custom Elements (V1)"}; +module.exports={A:{A:{"2":"J D E F yB","8":"A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","8":"C K L G M N O"},C:{"1":"UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y 0B 1B","8":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB","456":"JB KB LB MB NB OB PB QB RB","712":"nB SB oB TB"},D:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","8":"LB MB","132":"NB OB PB QB RB nB SB oB TB UB Y VB WB"},E:{"2":"I n J D 4B rB 5B 6B 7B","8":"E F A 8B","132":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","132":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC","132":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I","132":"lC"},Q:{"132":"wC"},R:{"132":"xC"},S:{"8":"yC"}},B:1,C:"Custom Elements (V1)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/customevent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/customevent.js index 011fcf8ab198e1..b61889383a48ac 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/customevent.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/customevent.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","132":"F A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j tB uB","132":"J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I","16":"j J D E K L","388":"F A B C"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","16":"j J","388":"zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"F 7B 8B 9B AC","132":"B fB pB"},G:{"1":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"CC","16":"lB qB","388":"DC"},H:{"1":"WC"},I:{"1":"H bC cC","2":"XC YC ZC","388":"hB I aC qB"},J:{"1":"A","388":"D"},K:{"1":"C U gB","2":"A","132":"B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"CustomEvent"}; +module.exports={A:{A:{"2":"J D E yB","132":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n 0B 1B","132":"J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I","16":"n J D E K L","388":"F A B C"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","16":"n J","388":"5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"F EC FC GC HC","132":"B jB wB"},G:{"1":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"JC","16":"rB xB","388":"KC"},H:{"1":"dC"},I:{"1":"H iC jC","2":"eC fC gC","388":"mB I hC xB"},J:{"1":"A","388":"D"},K:{"1":"C Y kB","2":"A","132":"B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"CustomEvent"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datalist.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datalist.js index 27e89b310e0f38..c124476c6c24da 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datalist.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datalist.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"rB","8":"J D E F","260":"A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","260":"C K L G","1284":"M N O"},C:{"8":"sB hB tB uB","4612":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","8":"I j J D E F A B C K L G M N O k","132":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB"},E:{"1":"K L G gB 3B 4B 5B nB oB 6B","8":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB"},F:{"1":"F B C U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","132":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},G:{"8":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC","2049":"OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H cC","8":"hB I XC YC ZC aC qB bC"},J:{"1":"A","8":"D"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"516":"T"},N:{"8":"A B"},O:{"8":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"132":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:1,C:"Datalist element"}; +module.exports={A:{A:{"2":"yB","8":"J D E F","260":"A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C K L G","1284":"M N O"},C:{"8":"zB mB 0B 1B","4612":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","8":"I n J D E F A B C K L G M N O o","132":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB"},E:{"1":"K L G kB 9B AC BC tB uB vB CC lB DC","8":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB"},F:{"1":"F B C Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","132":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},G:{"8":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC","2049":"VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H jC","8":"mB I eC fC gC hC xB iC"},J:{"1":"A","8":"D"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"516":"X"},N:{"8":"A B"},O:{"8":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"132":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:1,C:"Datalist element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dataset.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dataset.js index af111bab84bb6a..2bcb9045f5f58c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dataset.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dataset.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","4":"J D E F A rB"},B:{"1":"C K L G M","129":"N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB","4":"sB hB I j tB uB","129":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"AB BB CB DB EB FB GB HB IB JB","4":"I j J","129":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O k l m n o p q r s t u v w x y z KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"4":"I j yB lB","129":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 C x y z fB pB BC gB","4":"F B 7B 8B 9B AC","129":"7 8 9 G M N O k l m n o p q r s t u v w AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"4":"lB CC qB","129":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"4":"WC"},I:{"4":"XC YC ZC","129":"hB I H aC qB bC cC"},J:{"129":"D A"},K:{"1":"C fB pB gB","4":"A B","129":"U"},L:{"129":"H"},M:{"129":"T"},N:{"1":"B","4":"A"},O:{"129":"dC"},P:{"129":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"129":"qC"},S:{"1":"rC"}},B:1,C:"dataset & data-* attributes"}; +module.exports={A:{A:{"1":"B","4":"J D E F A yB"},B:{"1":"C K L G M","129":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","4":"zB mB I n 0B 1B","129":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB","4":"I n J","129":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"4":"I n 4B rB","129":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"1 2 3 4 5 6 7 8 9 C AB jB wB IC kB","4":"F B EC FC GC HC","129":"0 G M N O o p q r s t u v w x y z BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"4":"rB JC xB","129":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"4":"dC"},I:{"4":"eC fC gC","129":"mB I H hC xB iC jC"},J:{"129":"D A"},K:{"1":"C jB wB kB","4":"A B","129":"Y"},L:{"129":"H"},M:{"129":"X"},N:{"1":"B","4":"A"},O:{"129":"kC"},P:{"129":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"129":"xC"},S:{"1":"yC"}},B:1,C:"dataset & data-* attributes"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datauri.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datauri.js index 1bec5e55a7ae25..eeef6dde8a5ac5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datauri.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datauri.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D rB","132":"E","260":"F A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","260":"C K G M N O","772":"L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"260":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Data URIs"}; +module.exports={A:{A:{"2":"J D yB","132":"E","260":"F A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C K G M N O","772":"L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"260":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Data URIs"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js index c1e206b152358a..f18de48832fab2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js @@ -1 +1 @@ -module.exports={A:{A:{"16":"rB","132":"J D E F A B"},B:{"1":"O P Q R S V W X Y Z a b c d e f g T h H i","132":"C K L G M N"},C:{"1":"LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","132":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB","260":"HB IB JB KB","772":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB"},D:{"1":"WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","132":"I j J D E F A B C K L G M N O k l m n o","260":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB","772":"0 1 2 p q r s t u v w x y z"},E:{"1":"C K L G gB 3B 4B 5B nB oB 6B","16":"I j yB lB","132":"J D E F A zB 0B 1B 2B","260":"B mB fB"},F:{"1":"MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","16":"F B C 7B 8B 9B AC fB pB BC","132":"gB","260":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB","772":"G M N O k l m n o p"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB DC","132":"E EC FC GC HC IC JC"},H:{"132":"WC"},I:{"1":"H","16":"hB XC YC ZC","132":"I aC qB","772":"bC cC"},J:{"132":"D A"},K:{"1":"U","16":"A B C fB pB","132":"gB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"260":"dC"},P:{"1":"iC mB jC kC lC mC nC oC","260":"I eC fC gC hC"},Q:{"260":"pC"},R:{"132":"qC"},S:{"132":"rC"}},B:6,C:"Date.prototype.toLocaleDateString"}; +module.exports={A:{A:{"16":"yB","132":"J D E F A B"},B:{"1":"O P Q R S T U V W Z a b c d e f g h i j k l X m H","132":"C K L G M N"},C:{"1":"PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","132":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B","260":"LB MB NB OB","772":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB"},D:{"1":"aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","132":"I n J D E F A B C K L G M N O o p q r s","260":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB","772":"0 1 2 3 4 5 6 t u v w x y z"},E:{"1":"C K L G kB 9B AC BC tB uB vB CC lB DC","16":"I n 4B rB","132":"J D E F A 5B 6B 7B 8B","260":"B sB jB"},F:{"1":"QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","16":"F B C EC FC GC HC jB wB IC","132":"kB","260":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","772":"G M N O o p q r s t"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB KC","132":"E LC MC NC OC PC QC"},H:{"132":"dC"},I:{"1":"H","16":"mB eC fC gC","132":"I hC xB","772":"iC jC"},J:{"132":"D A"},K:{"1":"Y","16":"A B C jB wB","132":"kB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"260":"kC"},P:{"1":"pC sB qC rC sC tC uC lB vC","260":"I lC mC nC oC"},Q:{"260":"wC"},R:{"132":"xC"},S:{"132":"yC"}},B:6,C:"Date.prototype.toLocaleDateString"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js new file mode 100644 index 00000000000000..df23a043301442 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"b c d e f g h i j k l X m H","2":"C K L G M N O P Q R S T U V W Z a"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T","66":"U V W Z a"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB","16":"DC"},F:{"1":"hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"uC lB vC","2":"I lC mC nC oC pC sB qC rC sC tC"},Q:{"16":"wC"},R:{"16":"xC"},S:{"2":"yC"}},B:7,C:"Declarative Shadow DOM"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/decorators.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/decorators.js index e6ae61a1abaf86..154b89b3ae9039 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/decorators.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/decorators.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Decorators"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Decorators"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/details.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/details.js index 1dbdb84f9f200c..57ba39592bc99a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/details.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/details.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"F A B rB","8":"J D E"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB","8":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB tB uB","194":"CB DB"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","8":"I j J D E F A B","257":"0 k l m n o p q r s t u v w x y z","769":"C K L G M N O"},E:{"1":"C K L G gB 3B 4B 5B nB oB 6B","8":"I j yB lB zB","257":"J D E F A 0B 1B 2B","1025":"B mB fB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"C fB pB BC gB","8":"F B 7B 8B 9B AC"},G:{"1":"E EC FC GC HC IC MC NC OC PC QC RC SC TC UC VC nB oB","8":"lB CC qB DC","1025":"JC KC LC"},H:{"8":"WC"},I:{"1":"I H aC qB bC cC","8":"hB XC YC ZC"},J:{"1":"A","8":"D"},K:{"1":"U","8":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"769":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Details & Summary elements"}; +module.exports={A:{A:{"2":"F A B yB","8":"J D E"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB","8":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB 0B 1B","194":"GB HB"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","8":"I n J D E F A B","257":"0 1 2 3 4 o p q r s t u v w x y z","769":"C K L G M N O"},E:{"1":"C K L G kB 9B AC BC tB uB vB CC lB DC","8":"I n 4B rB 5B","257":"J D E F A 6B 7B 8B","1025":"B sB jB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"C jB wB IC kB","8":"F B EC FC GC HC"},G:{"1":"E LC MC NC OC PC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","8":"rB JC xB KC","1025":"QC RC SC"},H:{"8":"dC"},I:{"1":"I H hC xB iC jC","8":"mB eC fC gC"},J:{"1":"A","8":"D"},K:{"1":"Y","8":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"769":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Details & Summary elements"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/deviceorientation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/deviceorientation.js index ef9c4cdf77f9ec..f551b3f615fa13 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/deviceorientation.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/deviceorientation.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","132":"B"},B:{"1":"C K L G M N O","4":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB tB","4":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","8":"I j uB"},D:{"2":"I j J","4":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","4":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"lB CC","4":"E qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"XC YC ZC","4":"hB I H aC qB bC cC"},J:{"2":"D","4":"A"},K:{"1":"C gB","2":"A B fB pB","4":"U"},L:{"4":"H"},M:{"4":"T"},N:{"1":"B","2":"A"},O:{"4":"dC"},P:{"4":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"4":"pC"},R:{"4":"qC"},S:{"4":"rC"}},B:4,C:"DeviceOrientation & DeviceMotion events"}; +module.exports={A:{A:{"2":"J D E F A yB","132":"B"},B:{"1":"C K L G M N O","4":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB mB 0B","4":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","8":"I n 1B"},D:{"2":"I n J","4":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","4":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"rB JC","4":"E xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"eC fC gC","4":"mB I H hC xB iC jC"},J:{"2":"D","4":"A"},K:{"1":"C kB","2":"A B jB wB","4":"Y"},L:{"4":"H"},M:{"4":"X"},N:{"1":"B","2":"A"},O:{"4":"kC"},P:{"4":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"4":"wC"},R:{"4":"xC"},S:{"4":"yC"}},B:4,C:"DeviceOrientation & DeviceMotion events"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/devicepixelratio.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/devicepixelratio.js index 226deb4a9f6a73..2654fe1f3324c0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/devicepixelratio.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/devicepixelratio.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F A rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"F B 7B 8B 9B AC fB pB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"C U gB","2":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"Window.devicePixelRatio"}; +module.exports={A:{A:{"1":"B","2":"J D E F A yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"F B EC FC GC HC jB wB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"C Y kB","2":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"Window.devicePixelRatio"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dialog.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dialog.js index d0d050584fef4e..0ce0518a4e88e6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dialog.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dialog.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB tB uB","194":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P","1218":"Q R kB S V W X Y Z a b c d e f g T h"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w","322":"0 1 x y z"},E:{"1":"oB 6B","2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O 7B 8B 9B AC fB pB BC gB","578":"k l m n o"},G:{"1":"oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"194":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:1,C:"Dialog element"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 0B 1B","194":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P","1218":"Q R pB S T U V W Z a b c d e f g h i"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 I n J D E F A B C K L G M N O o p q r s t u v w x y z","322":"1 2 3 4 5"},E:{"1":"uB vB CC lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O EC FC GC HC jB wB IC kB","578":"o p q r s"},G:{"1":"uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:1,C:"Dialog element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dispatchevent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dispatchevent.js index 96173e3188a89d..4d5c21c539f356 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dispatchevent.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dispatchevent.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","16":"rB","129":"F A","130":"J D E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"yB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","16":"F"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"1":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","129":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"EventTarget.dispatchEvent"}; +module.exports={A:{A:{"1":"B","16":"yB","129":"F A","130":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"4B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","16":"F"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB"},H:{"1":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","129":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"EventTarget.dispatchEvent"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dnssec.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dnssec.js index efb5dfe20df4ee..23622a43e1efac 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dnssec.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dnssec.js @@ -1 +1 @@ -module.exports={A:{A:{"132":"J D E F A B rB"},B:{"132":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"132":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"132":"0 1 2 3 4 5 6 7 8 9 I j w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","388":"J D E F A B C K L G M N O k l m n o p q r s t u v"},E:{"132":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"132":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"132":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"132":"WC"},I:{"132":"hB I H XC YC ZC aC qB bC cC"},J:{"132":"D A"},K:{"132":"A B C U fB pB gB"},L:{"132":"H"},M:{"132":"T"},N:{"132":"A B"},O:{"132":"dC"},P:{"132":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"132":"pC"},R:{"132":"qC"},S:{"132":"rC"}},B:6,C:"DNSSEC and DANE"}; +module.exports={A:{A:{"132":"J D E F A B yB"},B:{"132":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"132":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"132":"0 1 2 3 4 5 6 7 8 9 I n AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","388":"J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"132":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"132":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"132":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"132":"dC"},I:{"132":"mB I H eC fC gC hC xB iC jC"},J:{"132":"D A"},K:{"132":"A B C Y jB wB kB"},L:{"132":"H"},M:{"132":"X"},N:{"132":"A B"},O:{"132":"kC"},P:{"132":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"132":"wC"},R:{"132":"xC"},S:{"132":"yC"}},B:6,C:"DNSSEC and DANE"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/do-not-track.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/do-not-track.js index 464cc3195c769f..de12ed798d97dd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/do-not-track.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/do-not-track.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","164":"F A","260":"B"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","260":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E tB uB","516":"F A B C K L G M N O k l m n o p q r s t u v w"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n"},E:{"1":"J A B C zB 2B mB fB","2":"I j K L G yB lB gB 3B 4B 5B nB oB 6B","1028":"D E F 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B 7B 8B 9B AC fB pB BC"},G:{"1":"HC IC JC KC LC MC NC","2":"lB CC qB DC EC OC PC QC RC SC TC UC VC nB oB","1028":"E FC GC"},H:{"1":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"16":"D","1028":"A"},K:{"1":"U gB","16":"A B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"164":"A","260":"B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"Do Not Track API"}; +module.exports={A:{A:{"2":"J D E yB","164":"F A","260":"B"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C K L G M"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E 0B 1B","516":"0 F A B C K L G M N O o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r"},E:{"1":"J A B C 5B 8B sB jB","2":"I n K L G 4B rB kB 9B AC BC tB uB vB CC lB DC","1028":"D E F 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B EC FC GC HC jB wB IC"},G:{"1":"OC PC QC RC SC TC UC","2":"rB JC xB KC LC VC WC XC YC ZC aC bC cC tB uB vB lB","1028":"E MC NC"},H:{"1":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"16":"D","1028":"A"},K:{"1":"Y kB","16":"A B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"164":"A","260":"B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"Do Not Track API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-currentscript.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-currentscript.js index d7f19f402b595f..46b2086421ce7b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-currentscript.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-currentscript.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t"},E:{"1":"E F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G 7B 8B 9B AC fB pB BC gB"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"document.currentScript"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u v w x"},E:{"1":"E F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G EC FC GC HC jB wB IC kB"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"document.currentScript"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js index 25052d6ab0b705..92c503c0c36d44 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","16":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","16":"F"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:7,C:"document.evaluate & XPath"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","16":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","16":"F"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:7,C:"document.evaluate & XPath"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-execcommand.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-execcommand.js index b961272ddc67b7..a7828e9a3b3ad2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-execcommand.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-execcommand.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 8B 9B AC fB pB BC gB","16":"F 7B"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC","16":"qB DC EC"},H:{"2":"WC"},I:{"1":"H aC qB bC cC","2":"hB I XC YC ZC"},J:{"1":"A","2":"D"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"2":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:7,C:"Document.execCommand()"}; +module.exports={A:{A:{"1":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W FC GC HC jB wB IC kB","16":"F EC"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC","16":"xB KC LC"},H:{"2":"dC"},I:{"1":"H hC xB iC jC","2":"mB I eC fC gC"},J:{"1":"A","2":"D"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"2":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:7,C:"Document.execCommand()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-policy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-policy.js index 2bc14f7b2ac586..383a3b607f8e61 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-policy.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-policy.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V","132":"W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V","132":"W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB 7B 8B 9B AC fB pB BC gB","132":"XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","132":"H"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","132":"U"},L:{"132":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Document Policy"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T","132":"U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T","132":"U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB EC FC GC HC jB wB IC kB","132":"bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","132":"H"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","132":"Y"},L:{"132":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Document Policy"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-scrollingelement.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-scrollingelement.js index 3b30c2a967e59c..941a7cc4974331 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-scrollingelement.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-scrollingelement.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","16":"C K"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB tB uB"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v 7B 8B 9B AC fB pB BC gB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"document.scrollingElement"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","16":"C K"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB 0B 1B"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"document.scrollingElement"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/documenthead.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/documenthead.js index e1500c953da4a8..d9fa19f06197f5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/documenthead.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/documenthead.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","16":"j"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S fB pB BC gB","2":"F 7B 8B 9B AC"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"1":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"document.head"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","16":"n"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W jB wB IC kB","2":"F EC FC GC HC"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB"},H:{"1":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"document.head"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-manip-convenience.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-manip-convenience.js index 83a67aaf898a64..d6ca08432a59b3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-manip-convenience.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-manip-convenience.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M"},C:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB tB uB"},D:{"1":"JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB","194":"HB IB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","194":"5"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I eC"},Q:{"194":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:1,C:"DOM manipulation convenience methods"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M"},C:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB 0B 1B"},D:{"1":"NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","194":"LB MB"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","194":"9"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I lC"},Q:{"194":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:1,C:"DOM manipulation convenience methods"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-range.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-range.js index cef4ddfc214b32..c425ae3d6405ce 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-range.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-range.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"rB","8":"J D E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Document Object Model Range"}; +module.exports={A:{A:{"1":"F A B","2":"yB","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Document Object Model Range"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domcontentloaded.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domcontentloaded.js index 3f3359d0abe435..27c541d5ad807a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domcontentloaded.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domcontentloaded.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"DOMContentLoaded"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"DOMContentLoaded"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js index 3a8f5d49a33e14..3e8bf2dfc98238 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L G M N O k l m n o p q"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","16":"j"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","16":"F B 7B 8B 9B AC fB pB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB DC EC"},H:{"16":"WC"},I:{"1":"I H aC qB bC cC","16":"hB XC YC ZC"},J:{"16":"D A"},K:{"1":"U","16":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"16":"A B"},O:{"16":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:5,C:"DOMFocusIn & DOMFocusOut events"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L G M N O o p q r s t u"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","16":"n"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","16":"F B EC FC GC HC jB wB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB KC LC"},H:{"16":"dC"},I:{"1":"I H hC xB iC jC","16":"mB eC fC gC"},J:{"16":"D A"},K:{"1":"Y","16":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"16":"A B"},O:{"16":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:5,C:"DOMFocusIn & DOMFocusOut events"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dommatrix.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dommatrix.js index d52ce24921ee3d..3db26bcc2ff16f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dommatrix.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dommatrix.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","132":"A B"},B:{"132":"C K L G M N O","1028":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x tB uB","1028":"VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2564":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB","3076":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB"},D:{"16":"I j J D","132":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB","388":"E","1028":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"16":"I yB lB","132":"j J D E F A zB 0B 1B 2B mB","1028":"B C K L G fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","132":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB","1028":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"16":"lB CC qB","132":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"132":"I aC qB bC cC","292":"hB XC YC ZC","1028":"H"},J:{"16":"D","132":"A"},K:{"2":"A B C fB pB gB","1028":"U"},L:{"1028":"H"},M:{"1028":"T"},N:{"132":"A B"},O:{"132":"dC"},P:{"132":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"132":"pC"},R:{"132":"qC"},S:{"2564":"rC"}},B:4,C:"DOMMatrix"}; +module.exports={A:{A:{"2":"J D E F yB","132":"A B"},B:{"132":"C K L G M N O","1028":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","1028":"ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2564":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB","3076":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB"},D:{"16":"I n J D","132":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB","388":"E","1028":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"16":"I 4B rB","132":"n J D E F A 5B 6B 7B 8B sB","1028":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","132":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB","1028":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"16":"rB JC xB","132":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"132":"I hC xB iC jC","292":"mB eC fC gC","1028":"H"},J:{"16":"D","132":"A"},K:{"2":"A B C jB wB kB","1028":"Y"},L:{"1028":"H"},M:{"1028":"X"},N:{"132":"A B"},O:{"132":"kC"},P:{"132":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"132":"wC"},R:{"132":"xC"},S:{"2564":"yC"}},B:4,C:"DOMMatrix"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/download.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/download.js index 1105e5a70e2599..47e04052261474 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/download.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/download.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Download attribute"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Download attribute"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dragndrop.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dragndrop.js index 1680bad711932a..7004b4f71171f3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dragndrop.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dragndrop.js @@ -1 +1 @@ -module.exports={A:{A:{"644":"J D E F rB","772":"A B"},B:{"1":"O P Q R S V W X Y Z a b c d e f g T h H i","260":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","8":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","8":"F B 7B 8B 9B AC fB pB BC"},G:{"1":"VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","1025":"H"},J:{"2":"D A"},K:{"1":"gB","8":"A B C fB pB","1025":"U"},L:{"1025":"H"},M:{"2":"T"},N:{"1":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:1,C:"Drag and Drop"}; +module.exports={A:{A:{"644":"J D E F yB","772":"A B"},B:{"1":"O P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","8":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","8":"F B EC FC GC HC jB wB IC"},G:{"1":"cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","1025":"H"},J:{"2":"D A"},K:{"1":"kB","8":"A B C jB wB","1025":"Y"},L:{"1025":"H"},M:{"2":"X"},N:{"1":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:1,C:"Drag and Drop"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-closest.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-closest.js index 6cd8dea57ebcab..c15244dbeb8be2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-closest.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-closest.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s 7B 8B 9B AC fB pB BC gB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"2":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Element.closest()"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w EC FC GC HC jB wB IC kB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"2":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Element.closest()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-from-point.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-from-point.js index bde51e9ebdd3b9..b127fd782a753f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-from-point.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-from-point.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B","16":"rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","16":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S fB pB BC gB","16":"F 7B 8B 9B AC"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"1":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"C U gB","16":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"document.elementFromPoint()"}; +module.exports={A:{A:{"1":"J D E F A B","16":"yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","16":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W jB wB IC kB","16":"F EC FC GC HC"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB"},H:{"1":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"C Y kB","16":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"document.elementFromPoint()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-scroll-methods.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-scroll-methods.js index 3f362661ea33e3..5dec8aecac712a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-scroll-methods.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-scroll-methods.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB"},E:{"1":"L G 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B","132":"A B C K mB fB gB 3B"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB 7B 8B 9B AC fB pB BC gB"},G:{"1":"UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC","132":"JC KC LC MC NC OC PC QC RC SC TC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I eC fC gC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:5,C:"Scroll methods on elements (scroll, scrollTo, scrollBy)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB"},E:{"1":"L G AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B","132":"A B C K sB jB kB 9B"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB EC FC GC HC jB wB IC kB"},G:{"1":"bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC","132":"QC RC SC TC UC VC WC XC YC ZC aC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I lC mC nC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:5,C:"Scroll methods on elements (scroll, scrollTo, scrollBy)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eme.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eme.js index a59af14b7d7cdb..5b8d83bd78f0ba 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eme.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eme.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","164":"B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","132":"0 1 2 3 4 5 6"},E:{"1":"C K L G gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB 0B","164":"D E F A B 1B 2B mB fB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m 7B 8B 9B AC fB pB BC gB","132":"n o p q r s t"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"16":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:2,C:"Encrypted Media Extensions"}; +module.exports={A:{A:{"2":"J D E F A yB","164":"B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 I n J D E F A B C K L G M N O o p q r s t u v w x y z","132":"4 5 6 7 8 9 AB"},E:{"1":"C K L G kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B 6B","164":"D E F A B 7B 8B sB jB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q EC FC GC HC jB wB IC kB","132":"r s t u v w x"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"16":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:2,C:"Encrypted Media Extensions"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eot.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eot.js index e890fe3ed1da1c..56c45483d484ab 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eot.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eot.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B","2":"rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"EOT - Embedded OpenType fonts"}; +module.exports={A:{A:{"1":"J D E F A B","2":"yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"EOT - Embedded OpenType fonts"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es5.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es5.js index 05567c84b51eeb..e38382393c32aa 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es5.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es5.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D rB","260":"F","1026":"E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","4":"sB hB tB uB","132":"I j J D E F A B C K L G M N O k l"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","4":"I j J D E F A B C K L G M N O","132":"k l m n"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","4":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","4":"F B C 7B 8B 9B AC fB pB BC","132":"gB"},G:{"1":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","4":"lB CC qB DC"},H:{"132":"WC"},I:{"1":"H bC cC","4":"hB XC YC ZC","132":"aC qB","900":"I"},J:{"1":"A","4":"D"},K:{"1":"U","4":"A B C fB pB","132":"gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"ECMAScript 5"}; +module.exports={A:{A:{"1":"A B","2":"J D yB","260":"F","1026":"E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","4":"zB mB 0B 1B","132":"I n J D E F A B C K L G M N O o p"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","4":"I n J D E F A B C K L G M N O","132":"o p q r"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","4":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","4":"F B C EC FC GC HC jB wB IC","132":"kB"},G:{"1":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","4":"rB JC xB KC"},H:{"132":"dC"},I:{"1":"H iC jC","4":"mB eC fC gC","132":"hC xB","900":"I"},J:{"1":"A","4":"D"},K:{"1":"Y","4":"A B C jB wB","132":"kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"ECMAScript 5"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-class.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-class.js index c063085e48e822..258db863b801e5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-class.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-class.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","132":"7 8 9 AB BB CB DB"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t 7B 8B 9B AC fB pB BC gB","132":"0 u v w x y z"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"ES6 classes"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C"},C:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB 0B 1B"},D:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB","132":"BB CB DB EB FB GB HB"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w x EC FC GC HC jB wB IC kB","132":"0 1 2 3 4 y z"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"ES6 classes"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-generators.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-generators.js index 46198e556b74f2..74fe578cd7c67d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-generators.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-generators.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q tB uB"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q 7B 8B 9B AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"ES6 Generators"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u 0B 1B"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u EC FC GC HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"ES6 Generators"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js index d8342d34acda53..57ad059ad95ecb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB tB uB","194":"SB"},D:{"1":"QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB 7B 8B 9B AC fB pB BC gB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I eC fC gC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"JavaScript modules: dynamic import()"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB 0B 1B","194":"WB"},D:{"1":"UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB EC FC GC HC jB wB IC kB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I lC mC nC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"JavaScript modules: dynamic import()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module.js index 7748a18ebd3663..6c8ed88702553f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L","4097":"M N O","4290":"G"},C:{"1":"OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB tB uB","322":"JB KB LB MB NB iB"},D:{"1":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB","194":"OB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B","3076":"mB"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB 7B 8B 9B AC fB pB BC gB","194":"CB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC","3076":"KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I eC fC gC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:1,C:"JavaScript modules via script tag"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L","4097":"M N O","4290":"G"},C:{"1":"SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB 0B 1B","322":"NB OB PB QB RB nB"},D:{"1":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB","194":"SB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B","3076":"sB"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB EC FC GC HC jB wB IC kB","194":"GB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC","3076":"RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I lC mC nC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:1,C:"JavaScript modules via script tag"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-number.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-number.js index 1bb4e600a58a24..ee3a6a857cadd2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-number.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-number.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G tB uB","132":"M N O k l m n o p","260":"q r s t u v","516":"w"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O","1028":"k l m n o p q r s t u v w x y"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","1028":"G M N O k l"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC","1028":"aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"ES6 Number"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G 0B 1B","132":"M N O o p q r s t","260":"u v w x y z","516":"0"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O","1028":"0 1 2 o p q r s t u v w x y z"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","1028":"G M N O o p"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC","1028":"hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"ES6 Number"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-string-includes.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-string-includes.js index 3c223066ea4025..60854d4f5fe076 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-string-includes.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-string-includes.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s 7B 8B 9B AC fB pB BC gB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"String.prototype.includes"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w EC FC GC HC jB wB IC kB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"String.prototype.includes"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6.js index 33068750cab72e..6797241ea26fe2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","388":"B"},B:{"257":"P Q R S V W X Y Z a b c d e f g T h H i","260":"C K L","769":"G M N O"},C:{"2":"sB hB I j tB uB","4":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","257":"JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"I j J D E F A B C K L G M N O k l","4":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB","257":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B","4":"E F 1B 2B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","4":"0 1 2 G M N O k l m n o p q r s t u v w x y z","257":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC","4":"E FC GC HC IC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB","4":"bC cC","257":"H"},J:{"2":"D","4":"A"},K:{"2":"A B C fB pB gB","257":"U"},L:{"257":"H"},M:{"257":"T"},N:{"2":"A","388":"B"},O:{"257":"dC"},P:{"4":"I","257":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"257":"pC"},R:{"4":"qC"},S:{"4":"rC"}},B:6,C:"ECMAScript 2015 (ES6)"}; +module.exports={A:{A:{"2":"J D E F A yB","388":"B"},B:{"257":"P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C K L","769":"G M N O"},C:{"2":"zB mB I n 0B 1B","4":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","257":"NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"I n J D E F A B C K L G M N O o p","4":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","257":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B","4":"E F 7B 8B"},F:{"2":"F B C EC FC GC HC jB wB IC kB","4":"0 1 2 3 4 5 6 G M N O o p q r s t u v w x y z","257":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC","4":"E MC NC OC PC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB","4":"iC jC","257":"H"},J:{"2":"D","4":"A"},K:{"2":"A B C jB wB kB","257":"Y"},L:{"257":"H"},M:{"257":"X"},N:{"2":"A","388":"B"},O:{"257":"kC"},P:{"4":"I","257":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"257":"wC"},R:{"4":"xC"},S:{"4":"yC"}},B:6,C:"ECMAScript 2015 (ES6)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eventsource.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eventsource.js index cb9276833efa03..12806037db7095 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eventsource.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eventsource.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S fB pB BC gB","4":"F 7B 8B 9B AC"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"D A"},K:{"1":"C U fB pB gB","4":"A B"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Server-sent events"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W jB wB IC kB","4":"F EC FC GC HC"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"D A"},K:{"1":"C Y jB wB kB","4":"A B"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Server-sent events"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/extended-system-fonts.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/extended-system-fonts.js index dc4c15d400f28c..1b1f242cdb7c16 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/extended-system-fonts.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/extended-system-fonts.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"L G 3B 4B 5B nB oB 6B","2":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"ui-serif, ui-sans-serif, ui-monospace and ui-rounded values for font-family"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"ui-serif, ui-sans-serif, ui-monospace and ui-rounded values for font-family"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/feature-policy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/feature-policy.js index 3238c32da1c04d..f0d42c52b43231 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/feature-policy.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/feature-policy.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y","2":"C K L G M N O","1025":"Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB tB uB","260":"aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"aB bB cB dB eB P Q R S V W X Y","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB","132":"OB jB PB QB U RB SB TB UB VB WB XB YB ZB","1025":"Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B yB lB zB 0B 1B 2B mB","772":"C K L G fB gB 3B 4B 5B nB oB 6B"},F:{"1":"PB QB U RB SB TB UB VB WB XB YB ZB aB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB 7B 8B 9B AC fB pB BC gB","132":"CB DB EB FB GB HB IB JB KB LB MB NB OB","1025":"bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC","772":"MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1025":"H"},M:{"260":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"jC kC lC mC nC oC","2":"I eC fC gC","132":"hC iC mB"},Q:{"132":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"Feature Policy"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W","2":"C K L G M N O","1025":"Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB 0B 1B","260":"eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"eB fB gB hB iB P Q R S T U V W","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB","132":"SB oB TB UB Y VB WB XB YB ZB aB bB cB dB","1025":"Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB","772":"C K L G jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"TB UB Y VB WB XB YB ZB aB bB cB dB eB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB EC FC GC HC jB wB IC kB","132":"GB HB IB JB KB LB MB NB OB PB QB RB SB","1025":"fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC","772":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1025":"H"},M:{"260":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"qC rC sC tC uC lB vC","2":"I lC mC nC","132":"oC pC sB"},Q:{"132":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"Feature Policy"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fetch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fetch.js index 44fd1657df0167..dda210ce8586ab 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fetch.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fetch.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y tB uB","1025":"4","1218":"0 1 2 3 z"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","260":"5","772":"6"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r 7B 8B 9B AC fB pB BC gB","260":"s","772":"t"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Fetch"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","1025":"8","1218":"3 4 5 6 7"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 I n J D E F A B C K L G M N O o p q r s t u v w x y z","260":"9","772":"AB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v EC FC GC HC jB wB IC kB","260":"w","772":"x"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Fetch"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fieldset-disabled.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fieldset-disabled.js index a04d2f75a5f895..1a36ff30ad138b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fieldset-disabled.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fieldset-disabled.js @@ -1 +1 @@ -module.exports={A:{A:{"16":"rB","132":"E F","388":"J D A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G","16":"M N O k"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 8B 9B AC fB pB BC gB","16":"F 7B"},G:{"1":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC"},H:{"388":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A","260":"B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"disabled attribute of the fieldset element"}; +module.exports={A:{A:{"16":"yB","132":"E F","388":"J D A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G","16":"M N O o"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W FC GC HC jB wB IC kB","16":"F EC"},G:{"1":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC"},H:{"388":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A","260":"B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"disabled attribute of the fieldset element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fileapi.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fileapi.js index 2b86d8b88c00b4..0ae52de770e940 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fileapi.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fileapi.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","260":"A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","260":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB","260":"I j J D E F A B C K L G M N O k l m n o p q r s uB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j","260":"0 1 2 K L G M N O k l m n o p q r s t u v w x y z","388":"J D E F A B C"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB","260":"J D E F 0B 1B 2B","388":"zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B 7B 8B 9B AC","260":"C G M N O k l m n o p fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC","260":"E EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H cC","2":"XC YC ZC","260":"bC","388":"hB I aC qB"},J:{"260":"A","388":"D"},K:{"1":"U","2":"A B","260":"C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A","260":"B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"File API"}; +module.exports={A:{A:{"2":"J D E F yB","260":"A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B","260":"I n J D E F A B C K L G M N O o p q r s t u v w 1B"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n","260":"0 1 2 3 4 5 6 K L G M N O o p q r s t u v w x y z","388":"J D E F A B C"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB","260":"J D E F 6B 7B 8B","388":"5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B EC FC GC HC","260":"C G M N O o p q r s t jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC","260":"E LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H jC","2":"eC fC gC","260":"iC","388":"mB I hC xB"},J:{"260":"A","388":"D"},K:{"1":"Y","2":"A B","260":"C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A","260":"B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"File API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereader.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereader.js index 69cb1744ba4019..7353195767e68a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereader.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereader.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","132":"A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i uB","2":"sB hB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S fB pB BC gB","2":"F B 7B 8B 9B AC"},G:{"1":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC"},H:{"2":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"A","2":"D"},K:{"1":"C U fB pB gB","2":"A B"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"FileReader API"}; +module.exports={A:{A:{"2":"J D E F yB","132":"A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 1B","2":"zB mB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W jB wB IC kB","2":"F B EC FC GC HC"},G:{"1":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC"},H:{"2":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"A","2":"D"},K:{"1":"C Y jB wB kB","2":"A B"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"FileReader API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereadersync.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereadersync.js index ee12f73ae83c33..0902235fdeb07a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereadersync.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereadersync.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"F 7B 8B","16":"B 9B AC fB pB"},G:{"1":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"C U pB gB","2":"A","16":"B fB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"FileReaderSync"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"F EC FC","16":"B GC HC jB wB"},G:{"1":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"C Y wB kB","2":"A","16":"B jB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"FileReaderSync"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filesystem.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filesystem.js index 5523f980008427..8bd9ec042e215d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filesystem.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filesystem.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","33":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"I j J D","33":"0 1 2 3 4 5 6 7 8 9 K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","36":"E F A B C"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D","33":"A"},K:{"2":"A B C U fB pB gB"},L:{"33":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I","33":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Filesystem & FileWriter API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","33":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"I n J D","33":"0 1 2 3 4 5 6 7 8 9 K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","36":"E F A B C"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D","33":"A"},K:{"2":"A B C Y jB wB kB"},L:{"33":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I","33":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Filesystem & FileWriter API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flac.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flac.js index b52dcbf95c4ac1..ee85757d393949 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flac.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flac.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G"},C:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB tB uB"},D:{"1":"LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","16":"9 AB BB","388":"CB DB EB FB GB HB IB JB KB"},E:{"1":"K L G 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB","516":"B C fB gB"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC"},H:{"2":"WC"},I:{"1":"H","2":"XC YC ZC","16":"hB I aC qB bC cC"},J:{"1":"A","2":"D"},K:{"1":"U gB","16":"A B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","129":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:6,C:"FLAC audio format"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G"},C:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB 0B 1B"},D:{"1":"PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB","16":"DB EB FB","388":"GB HB IB JB KB LB MB NB OB"},E:{"1":"K L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB","516":"B C jB kB"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB EC FC GC HC jB wB IC kB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC"},H:{"2":"dC"},I:{"1":"H","2":"eC fC gC","16":"mB I hC xB iC jC"},J:{"1":"A","2":"D"},K:{"1":"Y kB","16":"A B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","129":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:6,C:"FLAC audio format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox-gap.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox-gap.js index 035b4eab977a05..d1f491a7dda4f5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox-gap.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox-gap.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"V W X Y Z a b c d e f g T h H i","2":"C K L G M N O P Q R S"},C:{"1":"QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB tB uB"},D:{"1":"V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S"},E:{"1":"G 4B 5B nB oB 6B","2":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B"},F:{"1":"ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB 7B 8B 9B AC fB pB BC gB"},G:{"1":"UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mC nC oC","2":"I eC fC gC hC iC mB jC kC lC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"gap property for Flexbox"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O P Q R S"},C:{"1":"UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB 0B 1B"},D:{"1":"T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S"},E:{"1":"G AC BC tB uB vB CC lB DC","2":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B"},F:{"1":"dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB EC FC GC HC jB wB IC kB"},G:{"1":"bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"tC uC lB vC","2":"I lC mC nC oC pC sB qC rC sC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"gap property for Flexbox"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox.js index f7e8345755fbc7..d436a6192a73c3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","1028":"B","1316":"A"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","164":"sB hB I j J D E F A B C K L G M N O k l m tB uB","516":"n o p q r s"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"m n o p q r s t","164":"I j J D E F A B C K L G M N O k l"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","33":"D E 0B 1B","164":"I j J yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B C 7B 8B 9B AC fB pB BC","33":"G M"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","33":"E FC GC","164":"lB CC qB DC EC"},H:{"1":"WC"},I:{"1":"H bC cC","164":"hB I XC YC ZC aC qB"},J:{"1":"A","164":"D"},K:{"1":"U gB","2":"A B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","292":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS Flexible Box Layout Module"}; +module.exports={A:{A:{"2":"J D E F yB","1028":"B","1316":"A"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","164":"zB mB I n J D E F A B C K L G M N O o p q 0B 1B","516":"r s t u v w"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"q r s t u v w x","164":"I n J D E F A B C K L G M N O o p"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","33":"D E 6B 7B","164":"I n J 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B C EC FC GC HC jB wB IC","33":"G M"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","33":"E MC NC","164":"rB JC xB KC LC"},H:{"1":"dC"},I:{"1":"H iC jC","164":"mB I eC fC gC hC xB"},J:{"1":"A","164":"D"},K:{"1":"Y kB","2":"A B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","292":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS Flexible Box Layout Module"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flow-root.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flow-root.js index d99deb2f6586d1..20479856b51adc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flow-root.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flow-root.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB tB uB"},D:{"1":"NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"K L G 3B 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB gB"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","2":"I eC fC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"display: flow-root"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 0B 1B"},D:{"1":"RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},E:{"1":"K L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB kB"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EC FC GC HC jB wB IC kB"},G:{"1":"WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","2":"I lC mC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"display: flow-root"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusin-focusout-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusin-focusout-events.js index e8fea4f9d886fa..69c31e7bda3de3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusin-focusout-events.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusin-focusout-events.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B","2":"rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"F 7B 8B 9B AC","16":"B fB pB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"2":"WC"},I:{"1":"I H aC qB bC cC","2":"XC YC ZC","16":"hB"},J:{"1":"D A"},K:{"1":"C U gB","2":"A","16":"B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:5,C:"focusin & focusout events"}; +module.exports={A:{A:{"1":"J D E F A B","2":"yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"F EC FC GC HC","16":"B jB wB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"2":"dC"},I:{"1":"I H hC xB iC jC","2":"eC fC gC","16":"mB"},J:{"1":"D A"},K:{"1":"C Y kB","2":"A","16":"B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:5,C:"focusin & focusout events"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js index cb3e4c7761113b..6154e5c9b5bba1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M","132":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:1,C:"preventScroll support in focus"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M","132":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:1,C:"preventScroll support in focus"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-family-system-ui.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-family-system-ui.js index 83f9f382b3097e..d919f6395fa82c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-family-system-ui.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-family-system-ui.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"d e f g T h H i","2":"0 1 2 3 4 5 6 7 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","132":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c"},D:{"1":"LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB","260":"IB JB KB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B","16":"F","132":"A 2B mB"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC","132":"HC IC JC KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I eC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"132":"rC"}},B:5,C:"system-ui value for font-family"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB 0B 1B","132":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c"},D:{"1":"PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB","260":"MB NB OB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B","16":"F","132":"A 8B sB"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB EC FC GC HC jB wB IC kB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC","132":"OC PC QC RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I lC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"132":"yC"}},B:5,C:"system-ui value for font-family"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-feature.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-feature.js index e28ab1abe369bf..7c8a91814d5103 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-feature.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-feature.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","33":"G M N O k l m n o p q r s t u v w x y","164":"I j J D E F A B C K L"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G","33":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB","292":"M N O k l"},E:{"1":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"D E F yB lB 0B 1B","4":"I j J zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","33":"G M N O k l m n o p q r s t u v w x y z"},G:{"1":"IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E FC GC HC","4":"lB CC qB DC EC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB","33":"bC cC"},J:{"2":"D","33":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","33":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS font-feature-settings"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","33":"0 1 2 G M N O o p q r s t u v w x y z","164":"I n J D E F A B C K L"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G","33":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB","292":"M N O o p"},E:{"1":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"D E F 4B rB 6B 7B","4":"I n J 5B"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 G M N O o p q r s t u v w x y z"},G:{"1":"PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E MC NC OC","4":"rB JC xB KC LC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB","33":"iC jC"},J:{"2":"D","33":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","33":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS font-feature-settings"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-kerning.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-kerning.js index e222eccb7079a3..d8db35aab7e174 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-kerning.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-kerning.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o tB uB","194":"p q r s t u v w x y"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t","33":"u v w x"},E:{"1":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB 0B","33":"D E F 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G 7B 8B 9B AC fB pB BC gB","33":"M N O k"},G:{"1":"NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC","33":"E GC HC IC JC KC LC MC"},H:{"2":"WC"},I:{"1":"H cC","2":"hB I XC YC ZC aC qB","33":"bC"},J:{"2":"D","33":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS3 font-kerning"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s 0B 1B","194":"0 1 2 t u v w x y z"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u v w x","33":"0 1 y z"},E:{"1":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B 6B","33":"D E F 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G EC FC GC HC jB wB IC kB","33":"M N O o"},G:{"1":"UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC","33":"E NC OC PC QC RC SC TC"},H:{"2":"dC"},I:{"1":"H jC","2":"mB I eC fC gC hC xB","33":"iC"},J:{"2":"D","33":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS3 font-kerning"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-loading.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-loading.js index 86e4fb783ebb03..84b72c54845490 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-loading.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-loading.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","194":"0 1 2 3 4 5"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m 7B 8B 9B AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"CSS Font Loading"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","194":"4 5 6 7 8 9"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q EC FC GC HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"CSS Font Loading"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-metrics-overrides.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-metrics-overrides.js index 5a30301ef3fc5b..5acef707ada3ce 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-metrics-overrides.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-metrics-overrides.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W","194":"X"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"@font-face metrics overrides"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U","194":"V"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"@font-face metrics overrides"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-size-adjust.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-size-adjust.js index ca0e3116a83f62..dabe9f1991985a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-size-adjust.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-size-adjust.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","194":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB"},D:{"2":"0 1 2 3 4 5 6 7 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","194":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C G M N O k l m n o p q r s t u 7B 8B 9B AC fB pB BC gB","194":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"258":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"194":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:4,C:"CSS font-size-adjust"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","194":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB","194":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C G M N O o p q r s t u v w x y EC FC GC HC jB wB IC kB","194":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"258":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"194":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"CSS font-size-adjust"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-smooth.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-smooth.js index 02cecf4682d134..85265e85ecba23 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-smooth.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-smooth.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","676":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n o p tB uB","804":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"I","676":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"yB lB","676":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","676":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"804":"rC"}},B:7,C:"CSS font-smooth"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","676":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB mB I n J D E F A B C K L G M N O o p q r s t 0B 1B","804":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"I","676":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"4B rB","676":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","676":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"804":"yC"}},B:7,C:"CSS font-smooth"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-unicode-range.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-unicode-range.js index e06e24f3d0b460..f98c2a3dd244e3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-unicode-range.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-unicode-range.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","4":"F A B"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","4":"C K L G M"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","194":"1 2 3 4 5 6 7 8"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","4":"0 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","4":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","4":"G M N O k l m n"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","4":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","4":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D","4":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"4":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","4":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:4,C:"Font unicode-range subsetting"}; +module.exports={A:{A:{"2":"J D E yB","4":"F A B"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","4":"C K L G M"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","194":"5 6 7 8 9 AB BB CB"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","4":"0 1 2 3 4 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","4":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","4":"G M N O o p q r"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","4":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","4":"mB I eC fC gC hC xB iC jC"},J:{"2":"D","4":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"4":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","4":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:4,C:"Font unicode-range subsetting"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-alternates.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-alternates.js index 52c711d5f6e059..99528984dacca2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-alternates.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-alternates.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","130":"A B"},B:{"130":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","130":"I j J D E F A B C K L G M N O k l m n o","322":"p q r s t u v w x y"},D:{"2":"I j J D E F A B C K L G","130":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"D E F yB lB 0B 1B","130":"I j J zB"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","130":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB FC GC HC","130":"CC qB DC EC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB","130":"H bC cC"},J:{"2":"D","130":"A"},K:{"2":"A B C fB pB gB","130":"U"},L:{"130":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"130":"dC"},P:{"130":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"130":"pC"},R:{"130":"qC"},S:{"1":"rC"}},B:5,C:"CSS font-variant-alternates"}; +module.exports={A:{A:{"2":"J D E F yB","130":"A B"},B:{"130":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","130":"I n J D E F A B C K L G M N O o p q r s","322":"0 1 2 t u v w x y z"},D:{"2":"I n J D E F A B C K L G","130":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"D E F 4B rB 6B 7B","130":"I n J 5B"},F:{"2":"F B C EC FC GC HC jB wB IC kB","130":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB MC NC OC","130":"JC xB KC LC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB","130":"H iC jC"},J:{"2":"D","130":"A"},K:{"2":"A B C jB wB kB","130":"Y"},L:{"130":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"130":"kC"},P:{"130":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"130":"wC"},R:{"130":"xC"},S:{"1":"yC"}},B:5,C:"CSS font-variant-alternates"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-east-asian.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-east-asian.js deleted file mode 100644 index b5c8bc54620413..00000000000000 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-east-asian.js +++ /dev/null @@ -1 +0,0 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o tB uB","132":"p q r s t u v w x y"},D:{"1":"QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"132":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:4,C:"CSS font-variant-east-asian "}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-numeric.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-numeric.js index 0417320b05c690..d16a85685e23e1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-numeric.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-numeric.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y tB uB"},D:{"1":"HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB"},E:{"1":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D","16":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I eC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:2,C:"CSS font-variant-numeric"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D","16":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I lC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:2,C:"CSS font-variant-numeric"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fontface.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fontface.js index 4697f8881802b0..6e5e4755f445ef 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fontface.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fontface.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","132":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 8B 9B AC fB pB BC gB","2":"F 7B"},G:{"1":"E qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","260":"lB CC"},H:{"2":"WC"},I:{"1":"I H aC qB bC cC","2":"XC","4":"hB YC ZC"},J:{"1":"A","4":"D"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"@font-face Web fonts"}; +module.exports={A:{A:{"1":"F A B","132":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W FC GC HC jB wB IC kB","2":"F EC"},G:{"1":"E xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","260":"rB JC"},H:{"2":"dC"},I:{"1":"I H hC xB iC jC","2":"eC","4":"mB fC gC"},J:{"1":"A","4":"D"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"@font-face Web fonts"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-attribute.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-attribute.js index 6bc3b5716abf5a..4fbf5a21809354 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-attribute.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-attribute.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","16":"j"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"1":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Form attribute"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","16":"n"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"1":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Form attribute"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-submit-attributes.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-submit-attributes.js index e41923254e0470..2faa80b252dbcb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-submit-attributes.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-submit-attributes.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S AC fB pB BC gB","2":"F 7B","16":"8B 9B"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"1":"WC"},I:{"1":"I H aC qB bC cC","2":"XC YC ZC","16":"hB"},J:{"1":"A","2":"D"},K:{"1":"B C U fB pB gB","16":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Attributes for form submission"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W HC jB wB IC kB","2":"F EC","16":"FC GC"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"1":"dC"},I:{"1":"I H hC xB iC jC","2":"eC fC gC","16":"mB"},J:{"1":"A","2":"D"},K:{"1":"B C Y jB wB kB","16":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Attributes for form submission"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-validation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-validation.js index 9584f84ae8feaa..f66eab491d9ac2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-validation.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-validation.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","132":"j J D E F A zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 8B 9B AC fB pB BC gB","2":"F 7B"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB","132":"E CC qB DC EC FC GC HC IC JC"},H:{"516":"WC"},I:{"1":"H cC","2":"hB XC YC ZC","132":"I aC qB bC"},J:{"1":"A","132":"D"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"260":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"132":"rC"}},B:1,C:"Form validation"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","132":"n J D E F A 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W FC GC HC jB wB IC kB","2":"F EC"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB","132":"E JC xB KC LC MC NC OC PC QC"},H:{"516":"dC"},I:{"1":"H jC","2":"mB eC fC gC","132":"I hC xB iC"},J:{"1":"A","132":"D"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"260":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"132":"yC"}},B:1,C:"Form validation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/forms.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/forms.js index 94e29e48eda822..03ab8aa17d09bc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/forms.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/forms.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"rB","4":"A B","8":"J D E F"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","4":"C K L G"},C:{"4":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","8":"sB hB tB uB"},D:{"1":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","4":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB"},E:{"4":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","8":"yB lB"},F:{"1":"F B C HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","4":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB"},G:{"2":"lB","4":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB","4":"bC cC"},J:{"2":"D","4":"A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"4":"T"},N:{"4":"A B"},O:{"1":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","4":"I eC fC gC"},Q:{"1":"pC"},R:{"4":"qC"},S:{"4":"rC"}},B:1,C:"HTML5 form features"}; +module.exports={A:{A:{"2":"yB","4":"A B","8":"J D E F"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","4":"C K L G"},C:{"4":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","8":"zB mB 0B 1B"},D:{"1":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","4":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB"},E:{"4":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","8":"4B rB"},F:{"1":"F B C LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","4":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB"},G:{"2":"rB","4":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB","4":"iC jC"},J:{"2":"D","4":"A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"4":"X"},N:{"4":"A B"},O:{"1":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","4":"I lC mC nC"},Q:{"1":"wC"},R:{"4":"xC"},S:{"4":"yC"}},B:1,C:"HTML5 form features"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fullscreen.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fullscreen.js index 87895ca80ac60f..b177849f56d716 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fullscreen.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fullscreen.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","548":"B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","516":"C K L G M N O"},C:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F tB uB","676":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O k l m n o p q r s t u v w x y z AB BB","1700":"CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB"},D:{"1":"XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L","676":"G M N O k","804":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB"},E:{"2":"I j yB lB","548":"oB 6B","676":"zB","804":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB"},F:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B C 7B 8B 9B AC fB pB BC","804":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC","2052":"NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D","292":"A"},K:{"2":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A","548":"B"},O:{"804":"dC"},P:{"1":"mB jC kC lC mC nC oC","804":"I eC fC gC hC iC"},Q:{"804":"pC"},R:{"804":"qC"},S:{"1":"rC"}},B:1,C:"Full Screen API"}; +module.exports={A:{A:{"2":"J D E F A yB","548":"B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","516":"C K L G M N O"},C:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F 0B 1B","676":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB","1700":"GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB"},D:{"1":"bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L","676":"G M N O o","804":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB"},E:{"2":"I n 4B rB","548":"uB vB CC lB DC","676":"5B","804":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB"},F:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B C EC FC GC HC jB wB IC","804":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC","2052":"UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D","292":"A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A","548":"B"},O:{"804":"kC"},P:{"1":"sB qC rC sC tC uC lB vC","804":"I lC mC nC oC pC"},Q:{"804":"wC"},R:{"804":"xC"},S:{"1":"yC"}},B:1,C:"Full Screen API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gamepad.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gamepad.js index f6d76bd8ddceaf..355790aeb0e152 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gamepad.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gamepad.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l","33":"m n o p"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o 7B 8B 9B AC fB pB BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:5,C:"Gamepad API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p","33":"q r s t"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s EC FC GC HC jB wB IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:5,C:"Gamepad API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/geolocation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/geolocation.js index f5741fcaa75ec4..d8d9f211855661 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/geolocation.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/geolocation.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"rB","8":"J D E"},B:{"1":"C K L G M N O","129":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB tB uB","8":"sB hB","129":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB","4":"I","129":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"j J D E F B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","8":"I yB lB","129":"A"},F:{"1":"0 1 2 3 B C M N O k l m n o p q r s t u v w x y z AC fB pB BC gB","2":"F G 7B","8":"8B 9B","129":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"E lB CC qB DC EC FC GC HC IC","129":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I XC YC ZC aC qB bC cC","129":"H"},J:{"1":"D A"},K:{"1":"B C fB pB gB","8":"A","129":"U"},L:{"129":"H"},M:{"129":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I","129":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"129":"pC"},R:{"129":"qC"},S:{"1":"rC"}},B:2,C:"Geolocation"}; +module.exports={A:{A:{"1":"F A B","2":"yB","8":"J D E"},B:{"1":"C K L G M N O","129":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB 0B 1B","8":"zB mB","129":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","4":"I","129":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"n J D E F B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","8":"I 4B rB","129":"A"},F:{"1":"0 1 2 3 4 5 6 7 B C M N O o p q r s t u v w x y z HC jB wB IC kB","2":"F G EC","8":"FC GC","129":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"E rB JC xB KC LC MC NC OC PC","129":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I eC fC gC hC xB iC jC","129":"H"},J:{"1":"D A"},K:{"1":"B C jB wB kB","8":"A","129":"Y"},L:{"129":"H"},M:{"129":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I","129":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"129":"wC"},R:{"129":"xC"},S:{"1":"yC"}},B:2,C:"Geolocation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getboundingclientrect.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getboundingclientrect.js index a79015417905c1..78f451189fe8a1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getboundingclientrect.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getboundingclientrect.js @@ -1 +1 @@ -module.exports={A:{A:{"644":"J D rB","2049":"F A B","2692":"E"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2049":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB","260":"I j J D E F A B","1156":"hB","1284":"tB","1796":"uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S AC fB pB BC gB","16":"F 7B","132":"8B 9B"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"1":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","132":"A"},L:{"1":"H"},M:{"1":"T"},N:{"2049":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"Element.getBoundingClientRect()"}; +module.exports={A:{A:{"644":"J D yB","2049":"F A B","2692":"E"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2049":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB","260":"I n J D E F A B","1156":"mB","1284":"0B","1796":"1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W HC jB wB IC kB","16":"F EC","132":"FC GC"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB"},H:{"1":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","132":"A"},L:{"1":"H"},M:{"1":"X"},N:{"2049":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"Element.getBoundingClientRect()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getcomputedstyle.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getcomputedstyle.js index c2a0a7771d4360..cd30fa7fcc7951 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getcomputedstyle.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getcomputedstyle.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB","132":"hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","260":"I j J D E F A"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","260":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S AC fB pB BC gB","260":"F 7B 8B 9B"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","260":"lB CC qB"},H:{"260":"WC"},I:{"1":"I H aC qB bC cC","260":"hB XC YC ZC"},J:{"1":"A","260":"D"},K:{"1":"B C U fB pB gB","260":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"getComputedStyle"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB","132":"mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","260":"I n J D E F A"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","260":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W HC jB wB IC kB","260":"F EC FC GC"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","260":"rB JC xB"},H:{"260":"dC"},I:{"1":"I H hC xB iC jC","260":"mB eC fC gC"},J:{"1":"A","260":"D"},K:{"1":"B C Y jB wB kB","260":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"getComputedStyle"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getelementsbyclassname.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getelementsbyclassname.js index 45201df4ef91da..5c19f7ca3b7333 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getelementsbyclassname.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getelementsbyclassname.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"rB","8":"J D E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","8":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"getElementsByClassName"}; +module.exports={A:{A:{"1":"F A B","2":"yB","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","8":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"getElementsByClassName"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getrandomvalues.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getrandomvalues.js index cb2382412d04c6..224999a3f4706d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getrandomvalues.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getrandomvalues.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","33":"B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A","33":"B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"crypto.getRandomValues()"}; +module.exports={A:{A:{"2":"J D E F A yB","33":"B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A","33":"B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"crypto.getRandomValues()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gyroscope.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gyroscope.js index abf2fbe394f4bd..c6dc9994350bf7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gyroscope.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gyroscope.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","194":"NB iB OB jB PB QB U RB SB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:4,C:"Gyroscope"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","194":"RB nB SB oB TB UB Y VB WB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"Gyroscope"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hardwareconcurrency.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hardwareconcurrency.js index 5182203a806be6..b5bd93b8d5a7a5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hardwareconcurrency.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hardwareconcurrency.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB tB uB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"2":"I j J D yB lB zB 0B 1B","129":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","194":"E F A 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o 7B 8B 9B AC fB pB BC gB"},G:{"2":"lB CC qB DC EC FC","129":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","194":"E GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"navigator.hardwareConcurrency"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB 0B 1B"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"2":"I n J D 4B rB 5B 6B 7B","129":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","194":"E F A 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s EC FC GC HC jB wB IC kB"},G:{"2":"rB JC xB KC LC MC","129":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","194":"E NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"navigator.hardwareConcurrency"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hashchange.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hashchange.js index 448141d787d97d..2ea68827335ebf 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hashchange.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hashchange.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"E F A B","8":"J D rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i uB","8":"sB hB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","8":"I"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","8":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S AC fB pB BC gB","8":"F 7B 8B 9B"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB"},H:{"2":"WC"},I:{"1":"hB I H YC ZC aC qB bC cC","2":"XC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","8":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Hashchange event"}; +module.exports={A:{A:{"1":"E F A B","8":"J D yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 1B","8":"zB mB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","8":"I"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","8":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W HC jB wB IC kB","8":"F EC FC GC"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB"},H:{"2":"dC"},I:{"1":"mB I H fC gC hC xB iC jC","2":"eC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","8":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Hashchange event"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/heif.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/heif.js index 003f964938d2cc..e04d6ed846dbb0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/heif.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/heif.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A yB lB zB 0B 1B 2B mB","130":"B C K L G fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC","130":"LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"HEIF/ISO Base Media File Format"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A 4B rB 5B 6B 7B 8B sB","130":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC","130":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"HEIF/ISO Base Media File Format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hevc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hevc.js index a2851fddf8825c..d5c692c9f6e317 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hevc.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hevc.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","132":"B"},B:{"2":"P Q R S V W X Y Z a b c d e f g T h H i","132":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"K L G 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB","516":"B C fB gB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","258":"H"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","258":"U"},L:{"258":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I","258":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"HEVC/H.265 video format"}; +module.exports={A:{A:{"2":"J D E F A yB","132":"B"},B:{"132":"C K L G M N O","1028":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"K L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB","516":"B C jB kB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","258":"H"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","258":"Y"},L:{"258":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I","258":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"HEVC/H.265 video format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hidden.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hidden.js index b298ca72d2c95f..174cc623437084 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hidden.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hidden.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F A rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S fB pB BC gB","2":"F B 7B 8B 9B AC"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"1":"WC"},I:{"1":"I H aC qB bC cC","2":"hB XC YC ZC"},J:{"1":"A","2":"D"},K:{"1":"C U fB pB gB","2":"A B"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"hidden attribute"}; +module.exports={A:{A:{"1":"B","2":"J D E F A yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W jB wB IC kB","2":"F B EC FC GC HC"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"1":"dC"},I:{"1":"I H hC xB iC jC","2":"mB eC fC gC"},J:{"1":"A","2":"D"},K:{"1":"C Y jB wB kB","2":"A B"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"hidden attribute"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/high-resolution-time.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/high-resolution-time.js index 3db358a76c83f4..c8d67340898a5b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/high-resolution-time.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/high-resolution-time.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k","33":"l m n o"},E:{"1":"E F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"High Resolution Time API"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o","33":"p q r s"},E:{"1":"E F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"High Resolution Time API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/history.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/history.js index f3c02f18aeae6f..026d7168512035 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/history.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/history.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","4":"j zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S pB BC gB","2":"F B 7B 8B 9B AC fB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC","4":"qB"},H:{"2":"WC"},I:{"1":"H YC ZC qB bC cC","2":"hB I XC aC"},J:{"1":"D A"},K:{"1":"C U fB pB gB","2":"A B"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Session history management"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","4":"n 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W wB IC kB","2":"F B EC FC GC HC jB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC","4":"xB"},H:{"2":"dC"},I:{"1":"H fC gC xB iC jC","2":"mB I eC hC"},J:{"1":"D A"},K:{"1":"C Y jB wB kB","2":"A B"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Session history management"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html-media-capture.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html-media-capture.js index ffd39a0abe6277..a68a0edab72050 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html-media-capture.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html-media-capture.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"lB CC qB DC","129":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC","257":"YC ZC"},J:{"1":"A","16":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"516":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"16":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:4,C:"HTML Media Capture"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"rB JC xB KC","129":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC","257":"fC gC"},J:{"1":"A","16":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"516":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"16":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:4,C:"HTML Media Capture"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html5semantic.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html5semantic.js index b6ee1985802230..55a42eb19cf9ec 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html5semantic.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html5semantic.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"rB","8":"J D E","260":"F A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB","132":"hB tB uB","260":"I j J D E F A B C K L G M N O k l"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","132":"I j","260":"J D E F A B C K L G M N O k l m n o p q"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","132":"I yB lB","260":"j J zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","132":"F B 7B 8B 9B AC","260":"C fB pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","132":"lB","260":"CC qB DC EC"},H:{"132":"WC"},I:{"1":"H bC cC","132":"XC","260":"hB I YC ZC aC qB"},J:{"260":"D A"},K:{"1":"U","132":"A","260":"B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"260":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"HTML5 semantic elements"}; +module.exports={A:{A:{"2":"yB","8":"J D E","260":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB","132":"mB 0B 1B","260":"I n J D E F A B C K L G M N O o p"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","132":"I n","260":"J D E F A B C K L G M N O o p q r s t u"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","132":"I 4B rB","260":"n J 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","132":"F B EC FC GC HC","260":"C jB wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","132":"rB","260":"JC xB KC LC"},H:{"132":"dC"},I:{"1":"H iC jC","132":"eC","260":"mB I fC gC hC xB"},J:{"260":"D A"},K:{"1":"Y","132":"A","260":"B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"260":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"HTML5 semantic elements"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http-live-streaming.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http-live-streaming.js index 271ffcf1420242..10682915c9bab6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http-live-streaming.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http-live-streaming.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O","2":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:7,C:"HTTP Live Streaming (HLS)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O","2":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:7,C:"HTTP Live Streaming (HLS)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http2.js index 429e22985c9402..70f117df3a5574 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http2.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http2.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","132":"B"},B:{"1":"C K L G M N O","513":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB","2":"0 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","513":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"6 7 8 9 AB BB CB DB EB FB","2":"0 1 2 3 4 5 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","513":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B","260":"F A 2B mB"},F:{"1":"0 1 2 t u v w x y z","2":"F B C G M N O k l m n o p q r s 7B 8B 9B AC fB pB BC gB","513":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","513":"H"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","513":"U"},L:{"513":"H"},M:{"513":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I","513":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"513":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"HTTP/2 protocol"}; +module.exports={A:{A:{"2":"J D E F A yB","132":"B"},B:{"1":"C K L G M N O","513":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB","2":"0 1 2 3 4 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","513":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"AB BB CB DB EB FB GB HB IB JB","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z","513":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B","260":"F A 8B sB"},F:{"1":"0 1 2 3 4 5 6 x y z","2":"F B C G M N O o p q r s t u v w EC FC GC HC jB wB IC kB","513":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","513":"H"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","513":"Y"},L:{"513":"H"},M:{"513":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I","513":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"513":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"HTTP/2 protocol"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http3.js index 987b82ee18f530..5572f5fccb2534 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http3.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http3.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"Y Z a b c d e f g T h H i","2":"C K L G M N O","322":"P Q R S V","578":"W X"},C:{"1":"Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB tB uB","194":"YB ZB aB bB cB dB eB P Q R kB S V W X Y"},D:{"1":"Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB","322":"P Q R S V","578":"W X"},E:{"2":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB 3B","1090":"L G 4B 5B nB oB 6B"},F:{"1":"aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB 7B 8B 9B AC fB pB BC gB","578":"ZB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC","66":"TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"194":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mC nC oC","2":"I eC fC gC hC iC mB jC kC lC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"HTTP/3 protocol"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"W Z a b c d e f g h i j k l X m H","2":"C K L G M N O","322":"P Q R S T","578":"U V"},C:{"1":"Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB 0B 1B","194":"cB dB eB fB gB hB iB P Q R pB S T U V W"},D:{"1":"W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB","322":"P Q R S T","578":"U V"},E:{"2":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB 9B","1090":"L G AC BC tB uB vB CC lB DC"},F:{"1":"eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB EC FC GC HC jB wB IC kB","578":"dB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC","66":"aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"194":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"tC uC lB vC","2":"I lC mC nC oC pC sB qC rC sC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"HTTP/3 protocol"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-sandbox.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-sandbox.js index 76ba452ff909e4..77edb3fb430af2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-sandbox.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-sandbox.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M tB uB","4":"N O k l m n o p q r s"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC"},H:{"2":"WC"},I:{"1":"hB I H YC ZC aC qB bC cC","2":"XC"},J:{"1":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"sandbox attribute for iframes"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M 0B 1B","4":"N O o p q r s t u v w"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC"},H:{"2":"dC"},I:{"1":"mB I H fC gC hC xB iC jC","2":"eC"},J:{"1":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"sandbox attribute for iframes"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-seamless.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-seamless.js index b4e892e6685506..556b4461f0dad3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-seamless.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-seamless.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","66":"l m n o p q r"},E:{"2":"I j J E F A B C K L G yB lB zB 0B 2B mB fB gB 3B 4B 5B nB oB 6B","130":"D 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","130":"FC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"seamless attribute for iframes"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","66":"p q r s t u v"},E:{"2":"I n J E F A B C K L G 4B rB 5B 6B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","130":"D 7B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","130":"MC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"seamless attribute for iframes"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-srcdoc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-srcdoc.js index 9c9c98fdd3804a..f4079863fe2ea4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-srcdoc.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-srcdoc.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"rB","8":"J D E F A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","8":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB","8":"hB I j J D E F A B C K L G M N O k l m n o p tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K","8":"L G M N O k"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB","8":"I j zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B 7B 8B 9B AC","8":"C fB pB BC gB"},G:{"1":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB","8":"CC qB DC"},H:{"2":"WC"},I:{"1":"H bC cC","8":"hB I XC YC ZC aC qB"},J:{"1":"A","8":"D"},K:{"1":"U","2":"A B","8":"C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"8":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"srcdoc attribute for iframes"}; +module.exports={A:{A:{"2":"yB","8":"J D E F A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","8":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB","8":"mB I n J D E F A B C K L G M N O o p q r s t 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K","8":"L G M N O o"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB","8":"I n 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B EC FC GC HC","8":"C jB wB IC kB"},G:{"1":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB","8":"JC xB KC"},H:{"2":"dC"},I:{"1":"H iC jC","8":"mB I eC fC gC hC xB"},J:{"1":"A","8":"D"},K:{"1":"Y","2":"A B","8":"C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"8":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"srcdoc attribute for iframes"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imagecapture.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imagecapture.js index 203cf3e1aa2b94..6ffa03b23d6829 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imagecapture.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imagecapture.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","322":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","194":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB","322":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","322":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"322":"pC"},R:{"1":"qC"},S:{"194":"rC"}},B:5,C:"ImageCapture API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","322":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","194":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB","322":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","322":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"322":"wC"},R:{"1":"xC"},S:{"194":"yC"}},B:5,C:"ImageCapture API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ime.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ime.js index f400860193e09b..79d604f8c689cc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ime.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ime.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","161":"B"},B:{"2":"P Q R S V W X Y Z a b c d e f g T h H i","161":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A","161":"B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"Input Method Editor API"}; +module.exports={A:{A:{"2":"J D E F A yB","161":"B"},B:{"2":"P Q R S T U V W Z a b c d e f g h i j k l X m H","161":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A","161":"B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"Input Method Editor API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js index b5ad4fca18a5a8..e09ebd001e5b0b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"naturalWidth & naturalHeight image properties"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"naturalWidth & naturalHeight image properties"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/import-maps.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/import-maps.js index 1142327838b720..b641b9c9ce42ec 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/import-maps.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/import-maps.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"a b c d e f g T h H i","2":"C K L G M N O","194":"P Q R S V W X Y Z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB","194":"aB bB cB dB eB P Q R S V W X Y Z"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B 9B AC fB pB BC gB","194":"PB QB U RB SB TB UB VB WB XB YB ZB aB bB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"nC oC","2":"I eC fC gC hC iC mB jC kC lC mC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Import maps"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"a b c d e f g h i j k l X m H","2":"C K L G M N O","194":"P Q R S T U V W Z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X 0B 1B","322":"m H qB"},D:{"1":"a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB","194":"eB fB gB hB iB P Q R S T U V W Z"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC GC HC jB wB IC kB","194":"TB UB Y VB WB XB YB ZB aB bB cB dB eB fB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"uC lB vC","2":"I lC mC nC oC pC sB qC rC sC tC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Import maps"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imports.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imports.js index 231e0599825d9a..747ce37a5fc32c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imports.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imports.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","8":"A B"},B:{"1":"P","2":"Q R S V W X Y Z a b c d e f g T h H i","8":"C K L G M N O"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u tB uB","8":"v w LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","72":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u Q R S V W X Y Z a b c d e f g T h H i vB wB xB","66":"v w x y z","72":"0"},E:{"2":"I j yB lB zB","8":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB","2":"F B C G M TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","66":"N O k l m","72":"n"},G:{"2":"lB CC qB DC EC","8":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"8":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC","2":"lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"HTML Imports"}; +module.exports={A:{A:{"2":"J D E F yB","8":"A B"},B:{"1":"P","2":"Q R S T U V W Z a b c d e f g h i j k l X m H","8":"C K L G M N O"},C:{"2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y 0B 1B","8":"0 z PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","72":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P","2":"I n J D E F A B C K L G M N O o p q r s t u v w x y Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","66":"0 1 2 3 z","72":"4"},E:{"2":"I n 4B rB 5B","8":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB","2":"F B C G M XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","66":"N O o p q","72":"r"},G:{"2":"rB JC xB KC LC","8":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"8":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC","2":"sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"HTML Imports"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js index 264184967afdb6..86406fdbe03551 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B","16":"rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i uB","2":"sB hB","16":"tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"F B 7B 8B 9B AC fB pB"},G:{"1":"OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"2":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"indeterminate checkbox"}; +module.exports={A:{A:{"1":"J D E F A B","16":"yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 1B","2":"zB mB","16":"0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u v w"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"F B EC FC GC HC jB wB"},G:{"1":"VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"2":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"indeterminate checkbox"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb.js index be02250f468016..ab691c5f1fb377 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","132":"A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","132":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","33":"A B C K L G","36":"I j J D E F"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"A","8":"I j J D E F","33":"o","36":"B C K L G M N O k l m n"},E:{"1":"A B C K L G mB fB gB 3B 5B nB oB 6B","8":"I j J D yB lB zB 0B","260":"E F 1B 2B","516":"4B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F 7B 8B","8":"B C 9B AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC VC nB oB","8":"lB CC qB DC EC FC","260":"E GC HC IC","516":"UC"},H:{"2":"WC"},I:{"1":"H bC cC","8":"hB I XC YC ZC aC qB"},J:{"1":"A","8":"D"},K:{"1":"U","2":"A","8":"B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"IndexedDB"}; +module.exports={A:{A:{"2":"J D E F yB","132":"A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","132":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","33":"A B C K L G","36":"I n J D E F"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"A","8":"I n J D E F","33":"s","36":"B C K L G M N O o p q r"},E:{"1":"A B C K L G sB jB kB 9B BC tB uB vB CC lB DC","8":"I n J D 4B rB 5B 6B","260":"E F 7B 8B","516":"AC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F EC FC","8":"B C GC HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC cC tB uB vB lB","8":"rB JC xB KC LC MC","260":"E NC OC PC","516":"bC"},H:{"2":"dC"},I:{"1":"H iC jC","8":"mB I eC fC gC hC xB"},J:{"1":"A","8":"D"},K:{"1":"Y","2":"A","8":"B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"IndexedDB"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb2.js index f7394d5fb47bc2..d07c49774c200c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb2.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb2.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","132":"9 AB BB","260":"CB DB EB FB"},D:{"1":"NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB","132":"DB EB FB GB","260":"HB IB JB KB LB MB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","132":"0 1 2 3","260":"4 5 6 7 8 9"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC","16":"JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","2":"I","260":"eC fC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"260":"rC"}},B:4,C:"IndexedDB 2.0"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB 0B 1B","132":"DB EB FB","260":"GB HB IB JB"},D:{"1":"RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB","132":"HB IB JB KB","260":"LB MB NB OB PB QB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","132":"4 5 6 7","260":"8 9 AB BB CB DB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC","16":"QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","2":"I","260":"lC mC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"260":"yC"}},B:4,C:"IndexedDB 2.0"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/inline-block.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/inline-block.js index 0cd0f9120e010b..142ac006bca6d1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/inline-block.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/inline-block.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"E F A B","4":"rB","132":"J D"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","36":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS inline-block"}; +module.exports={A:{A:{"1":"E F A B","4":"yB","132":"J D"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","36":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS inline-block"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/innertext.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/innertext.js index 36b466b4734398..7b9a876a81ebb3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/innertext.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/innertext.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B","16":"rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"yB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","16":"F"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"1":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"HTMLElement.innerText"}; +module.exports={A:{A:{"1":"J D E F A B","16":"yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"4B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","16":"F"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB"},H:{"1":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"HTMLElement.innerText"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js index ac968379c88516..65022b2819c575 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A rB","132":"B"},B:{"132":"C K L G M N O","260":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u tB uB","516":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"N O k l m n o p q r","2":"I j J D E F A B C K L G M","132":"0 1 2 3 4 5 s t u v w x y z","260":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"J zB 0B","2":"I j yB lB","2052":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"lB CC qB","1025":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1025":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2052":"A B"},O:{"1025":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"260":"pC"},R:{"1":"qC"},S:{"516":"rC"}},B:1,C:"autocomplete attribute: on & off values"}; +module.exports={A:{A:{"1":"J D E F A yB","132":"B"},B:{"132":"C K L G M N O","260":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y 0B 1B","516":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"N O o p q r s t u v","2":"I n J D E F A B C K L G M","132":"0 1 2 3 4 5 6 7 8 9 w x y z","260":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"J 5B 6B","2":"I n 4B rB","2052":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"rB JC xB","1025":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1025":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2052":"A B"},O:{"1025":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"260":"wC"},R:{"1":"xC"},S:{"516":"yC"}},B:1,C:"autocomplete attribute: on & off values"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-color.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-color.js index f23d7e7ab48f2d..48648f4fb58555 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-color.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-color.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k"},E:{"1":"K L G gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S fB pB BC gB","2":"F G M 7B 8B 9B AC"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC","129":"OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:1,C:"Color input type"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o"},E:{"1":"K L G kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W jB wB IC kB","2":"F G M EC FC GC HC"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC","129":"VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:1,C:"Color input type"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-datetime.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-datetime.js index b0a7be90e5de36..75bad6274ef98d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-datetime.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-datetime.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","132":"C"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB tB uB","1090":"IB JB KB LB","2052":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d","4100":"e f g T h H i"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k","2052":"l m n o p"},E:{"2":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B","4100":"G 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"lB CC qB","260":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB XC YC ZC","514":"I aC qB"},J:{"1":"A","2":"D"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2052":"rC"}},B:1,C:"Date and time input types"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","132":"C"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 0B 1B","1090":"MB NB OB PB","2052":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d","4100":"e f g h i j k l X m H qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o","2052":"p q r s t"},E:{"2":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B","4100":"G AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"rB JC xB","260":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB eC fC gC","514":"I hC xB"},J:{"1":"A","2":"D"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2052":"yC"}},B:1,C:"Date and time input types"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-email-tel-url.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-email-tel-url.js index 9fd1213d882b08..d4e70d02902b51 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-email-tel-url.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-email-tel-url.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H aC qB bC cC","132":"XC YC ZC"},J:{"1":"A","132":"D"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Email, telephone & URL input types"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H hC xB iC jC","132":"eC fC gC"},J:{"1":"A","132":"D"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Email, telephone & URL input types"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-event.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-event.js index e1dc59dce6c83c..11ec78c2640eda 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-event.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-event.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","2561":"A B","2692":"F"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2561":"C K L G M N O"},C:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","16":"sB","1537":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB uB","1796":"hB tB"},D:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L","1025":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB","1537":"G M N O k l m n o p q r s t u v w x y z"},E:{"1":"L G 3B 4B 5B nB oB 6B","16":"I j J yB lB","1025":"D E F A B C 0B 1B 2B mB fB","1537":"zB","4097":"K gB"},F:{"1":"HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","16":"F B C 7B 8B 9B AC fB pB","260":"BC","1025":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB","1537":"G M N O k l m"},G:{"16":"lB CC qB","1025":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","1537":"DC EC FC"},H:{"2":"WC"},I:{"16":"XC YC","1025":"H cC","1537":"hB I ZC aC qB bC"},J:{"1025":"A","1537":"D"},K:{"1":"A B C fB pB gB","1025":"U"},L:{"1":"H"},M:{"1537":"T"},N:{"2561":"A B"},O:{"1537":"dC"},P:{"1025":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1025":"pC"},R:{"1025":"qC"},S:{"1537":"rC"}},B:1,C:"input event"}; +module.exports={A:{A:{"2":"J D E yB","2561":"A B","2692":"F"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2561":"C K L G M N O"},C:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","16":"zB","1537":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB 1B","1796":"mB 0B"},D:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L","1025":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB","1537":"0 1 2 3 G M N O o p q r s t u v w x y z"},E:{"1":"L G 9B AC BC tB uB vB CC lB DC","16":"I n J 4B rB","1025":"D E F A B C 6B 7B 8B sB jB","1537":"5B","4097":"K kB"},F:{"1":"LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","16":"F B C EC FC GC HC jB wB","260":"IC","1025":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","1537":"G M N O o p q"},G:{"1":"XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB","1025":"E NC OC PC QC RC SC TC UC","1537":"KC LC MC","4097":"VC WC"},H:{"2":"dC"},I:{"16":"eC fC","1025":"H jC","1537":"mB I gC hC xB iC"},J:{"1025":"A","1537":"D"},K:{"1":"A B C jB wB kB","1025":"Y"},L:{"1":"H"},M:{"1537":"X"},N:{"2561":"A B"},O:{"1537":"kC"},P:{"1025":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1025":"wC"},R:{"1025":"xC"},S:{"1537":"yC"}},B:1,C:"input event"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-accept.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-accept.js index 13a2586795b314..9af9651488d4b1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-accept.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-accept.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","132":"0 1 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I","16":"j J D E m n o p q","132":"F A B C K L G M N O k l"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB","132":"J D E F A B 0B 1B 2B mB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"2":"EC FC","132":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","514":"lB CC qB DC"},H:{"2":"WC"},I:{"2":"XC YC ZC","260":"hB I aC qB","514":"H bC cC"},J:{"132":"A","260":"D"},K:{"2":"A B C fB pB gB","514":"U"},L:{"260":"H"},M:{"2":"T"},N:{"514":"A","1028":"B"},O:{"2":"dC"},P:{"260":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"260":"pC"},R:{"260":"qC"},S:{"1":"rC"}},B:1,C:"accept attribute for file input"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","132":"0 1 2 3 4 5 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I","16":"n J D E q r s t u","132":"F A B C K L G M N O o p"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B","132":"J D E F A B 6B 7B 8B sB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"2":"LC MC","132":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","514":"rB JC xB KC"},H:{"2":"dC"},I:{"2":"eC fC gC","260":"mB I hC xB","514":"H iC jC"},J:{"132":"A","260":"D"},K:{"2":"A B C jB wB kB","514":"Y"},L:{"260":"H"},M:{"2":"X"},N:{"514":"A","1028":"B"},O:{"2":"kC"},P:{"260":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"260":"wC"},R:{"260":"xC"},S:{"1":"yC"}},B:1,C:"accept attribute for file input"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-directory.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-directory.js index 09287aeecae284..c4b4d8a0c7d66d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-directory.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-directory.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K"},C:{"1":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Directory selection from file input"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K"},C:{"1":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u v w x y"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Directory selection from file input"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-multiple.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-multiple.js index 99bbfb9e0dace2..ca802f0cfe2cfc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-multiple.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-multiple.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i uB","2":"sB hB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S AC fB pB BC gB","2":"F 7B 8B 9B"},G:{"1":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC"},H:{"130":"WC"},I:{"130":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"130":"A B C U fB pB gB"},L:{"132":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"130":"dC"},P:{"130":"I","132":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"132":"pC"},R:{"132":"qC"},S:{"2":"rC"}},B:1,C:"Multiple file selection"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 1B","2":"zB mB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W HC jB wB IC kB","2":"F EC FC GC"},G:{"1":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC"},H:{"130":"dC"},I:{"130":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"130":"A B C Y jB wB kB"},L:{"132":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"130":"kC"},P:{"130":"I","132":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"132":"wC"},R:{"132":"xC"},S:{"2":"yC"}},B:1,C:"Multiple file selection"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-inputmode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-inputmode.js index dfb063b23860b1..df150406c3e54b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-inputmode.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-inputmode.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"g T h H i","2":"sB hB I j J D E F A B C K L G M tB uB","4":"N O k l","194":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f"},D:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","66":"LB MB NB iB OB jB PB QB U RB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","66":"8 9 AB BB CB DB EB FB GB HB"},G:{"1":"OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"iC mB jC kC lC mC nC oC","2":"I eC fC gC hC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"194":"rC"}},B:1,C:"inputmode attribute"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M 0B 1B","4":"N O o p","194":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f"},D:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","66":"PB QB RB nB SB oB TB UB Y VB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB EC FC GC HC jB wB IC kB","66":"CB DB EB FB GB HB IB JB KB LB"},G:{"1":"VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"pC sB qC rC sC tC uC lB vC","2":"I lC mC nC oC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"194":"yC"}},B:1,C:"inputmode attribute"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-minlength.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-minlength.js index 60ce710d309bdc..55569d962c282e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-minlength.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-minlength.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M"},C:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB tB uB"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r 7B 8B 9B AC fB pB BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:1,C:"Minimum length attribute for input fields"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M"},C:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB 0B 1B"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v EC FC GC HC jB wB IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:1,C:"Minimum length attribute for input fields"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-number.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-number.js index aa661eb04f3820..f2a75e3d260e7a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-number.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-number.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","129":"A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","129":"C K","1025":"L G M N O"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB","513":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"388":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB XC YC ZC","388":"I H aC qB bC cC"},J:{"2":"D","388":"A"},K:{"1":"A B C fB pB gB","388":"U"},L:{"388":"H"},M:{"641":"T"},N:{"388":"A B"},O:{"388":"dC"},P:{"388":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"388":"pC"},R:{"388":"qC"},S:{"513":"rC"}},B:1,C:"Number input type"}; +module.exports={A:{A:{"2":"J D E F yB","129":"A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","129":"C K","1025":"L G M N O"},C:{"2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B","513":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"388":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB eC fC gC","388":"I H hC xB iC jC"},J:{"2":"D","388":"A"},K:{"1":"A B C jB wB kB","388":"Y"},L:{"388":"H"},M:{"641":"X"},N:{"388":"A B"},O:{"388":"kC"},P:{"388":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"388":"wC"},R:{"388":"xC"},S:{"513":"yC"}},B:1,C:"Number input type"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-pattern.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-pattern.js index 4f16afd17d3da3..ce449025b9d2d4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-pattern.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-pattern.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","16":"j","388":"J D E F A zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB","388":"E DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H cC","2":"hB I XC YC ZC aC qB bC"},J:{"1":"A","2":"D"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Pattern attribute for input fields"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","16":"n","388":"J D E F A 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB","388":"E KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H jC","2":"mB I eC fC gC hC xB iC"},J:{"1":"A","2":"D"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Pattern attribute for input fields"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-placeholder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-placeholder.js index b8983bc7fa7576..b80c308e9de026 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-placeholder.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-placeholder.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","132":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S pB BC gB","2":"F 7B 8B 9B AC","132":"B fB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB H XC YC ZC qB bC cC","4":"I aC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"input placeholder attribute"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","132":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W wB IC kB","2":"F EC FC GC HC","132":"B jB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB H eC fC gC xB iC jC","4":"I hC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"input placeholder attribute"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-range.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-range.js index cadb55d37a09d9..689c615c140c88 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-range.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-range.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"2":"WC"},I:{"1":"H qB bC cC","4":"hB I XC YC ZC aC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Range input type"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"2":"dC"},I:{"1":"H xB iC jC","4":"mB I eC fC gC hC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Range input type"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-search.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-search.js index 0b5296b4fe7132..7374b6f717c78d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-search.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-search.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","129":"A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","129":"C K L G M N O"},C:{"2":"sB hB tB uB","129":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L m n o p q","129":"G M N O k l"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"F 7B 8B 9B AC","16":"B fB pB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB"},H:{"129":"WC"},I:{"1":"H bC cC","16":"XC YC","129":"hB I ZC aC qB"},J:{"1":"D","129":"A"},K:{"1":"C U","2":"A","16":"B fB pB","129":"gB"},L:{"1":"H"},M:{"129":"T"},N:{"129":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"129":"rC"}},B:1,C:"Search input type"}; +module.exports={A:{A:{"2":"J D E F yB","129":"A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","129":"C K L G M N O"},C:{"2":"zB mB 0B 1B","129":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L q r s t u","129":"G M N O o p"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"F EC FC GC HC","16":"B jB wB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB"},H:{"129":"dC"},I:{"1":"H iC jC","16":"eC fC","129":"mB I gC hC xB"},J:{"1":"D","129":"A"},K:{"1":"C Y","2":"A","16":"B jB wB","129":"kB"},L:{"1":"H"},M:{"129":"X"},N:{"129":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"129":"yC"}},B:1,C:"Search input type"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-selection.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-selection.js index 0e3973714ac7f9..d40026ddb1b5c0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-selection.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-selection.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S AC fB pB BC gB","16":"F 7B 8B 9B"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"2":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Selection controls for input & textarea"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W HC jB wB IC kB","16":"F EC FC GC"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB"},H:{"2":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Selection controls for input & textarea"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insert-adjacent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insert-adjacent.js index accdc3fa222cc3..a97adad893bdef 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insert-adjacent.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insert-adjacent.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B","16":"rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","16":"F"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Element.insertAdjacentElement() & Element.insertAdjacentText()"}; +module.exports={A:{A:{"1":"J D E F A B","16":"yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","16":"F"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Element.insertAdjacentElement() & Element.insertAdjacentText()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insertadjacenthtml.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insertadjacenthtml.js index 9d21fc4752d36b..c49411fe5a5011 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insertadjacenthtml.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insertadjacenthtml.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","16":"rB","132":"J D E F"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 8B 9B AC fB pB BC gB","16":"F 7B"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"1":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"Element.insertAdjacentHTML()"}; +module.exports={A:{A:{"1":"A B","16":"yB","132":"J D E F"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W FC GC HC jB wB IC kB","16":"F EC"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB"},H:{"1":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"Element.insertAdjacentHTML()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/internationalization.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/internationalization.js index f2067d320dc112..0494a975fb5cbc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/internationalization.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/internationalization.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F A rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:6,C:"Internationalization API"}; +module.exports={A:{A:{"1":"B","2":"J D E F A yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:6,C:"Internationalization API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js index 9f7343b4e904dc..1d528b22874556 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"jC kC lC mC nC oC","2":"I eC fC gC hC iC mB"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"IntersectionObserver V2"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"qC rC sC tC uC lB vC","2":"I lC mC nC oC pC sB"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"IntersectionObserver V2"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver.js index 3695102e614fd5..d85c1103710a21 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"M N O","2":"C K L","516":"G","1025":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB tB uB","194":"HB IB JB"},D:{"1":"NB iB OB jB PB QB U","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB","516":"GB HB IB JB KB LB MB","1025":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"K L G gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","2":"0 1 2 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","516":"3 4 5 6 7 8 9","1025":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","1025":"H"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","1025":"U"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"516":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","2":"I","516":"eC fC"},Q:{"1025":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"IntersectionObserver"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"M N O","2":"C K L","516":"G","1025":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 0B 1B","194":"LB MB NB"},D:{"1":"RB nB SB oB TB UB Y","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","516":"KB LB MB NB OB PB QB","1025":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"K L G kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB","2":"0 1 2 3 4 5 6 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","516":"7 8 9 AB BB CB DB","1025":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","1025":"H"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","1025":"Y"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"516":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","2":"I","516":"lC mC"},Q:{"1025":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"IntersectionObserver"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intl-pluralrules.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intl-pluralrules.js index 089dc57ea186a6..a6d731d8e6f932 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intl-pluralrules.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intl-pluralrules.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N","130":"O"},C:{"1":"NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB tB uB"},D:{"1":"QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB"},E:{"1":"K L G 3B 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB gB"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB 7B 8B 9B AC fB pB BC gB"},G:{"1":"PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I eC fC gC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"Intl.PluralRules API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N","130":"O"},C:{"1":"RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB 0B 1B"},D:{"1":"UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB"},E:{"1":"K L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB kB"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB EC FC GC HC jB wB IC kB"},G:{"1":"WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I lC mC nC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"Intl.PluralRules API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intrinsic-width.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intrinsic-width.js index d867e801230642..2572264988689c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intrinsic-width.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intrinsic-width.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","1537":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB","932":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB tB uB","2308":"SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"I j J D E F A B C K L G M N O k l m","545":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB","1537":"BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J yB lB zB","516":"B C K L G fB gB 3B 4B 5B nB oB 6B","548":"F A 2B mB","676":"D E 0B 1B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","513":"z","545":"G M N O k l m n o p q r s t u v w x","1537":"0 1 2 3 4 5 6 7 8 9 y AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"lB CC qB DC EC","516":"TC UC VC nB oB","548":"HC IC JC KC LC MC NC OC PC QC RC SC","676":"E FC GC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB","545":"bC cC","1537":"H"},J:{"2":"D","545":"A"},K:{"2":"A B C fB pB gB","1537":"U"},L:{"1537":"H"},M:{"2308":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"545":"I","1537":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"545":"pC"},R:{"1537":"qC"},S:{"932":"rC"}},B:5,C:"Intrinsic & Extrinsic Sizing"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","1537":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB","932":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB 0B 1B","2308":"WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"I n J D E F A B C K L G M N O o p q","545":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB","1537":"FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J 4B rB 5B","516":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","548":"F A 8B sB","676":"D E 6B 7B"},F:{"2":"F B C EC FC GC HC jB wB IC kB","513":"3","545":"0 1 G M N O o p q r s t u v w x y z","1537":"2 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"rB JC xB KC LC","516":"aC bC cC tB uB vB lB","548":"OC PC QC RC SC TC UC VC WC XC YC ZC","676":"E MC NC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB","545":"iC jC","1537":"H"},J:{"2":"D","545":"A"},K:{"2":"A B C jB wB kB","1537":"Y"},L:{"1537":"H"},M:{"2308":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"545":"I","1537":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"545":"wC"},R:{"1537":"xC"},S:{"932":"yC"}},B:5,C:"Intrinsic & Extrinsic Sizing"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpeg2000.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpeg2000.js index 0a967df7933207..6d7c5acda4f608 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpeg2000.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpeg2000.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","129":"j zB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"JPEG 2000 image format"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","129":"n 5B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"JPEG 2000 image format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxl.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxl.js index b129d3864f8b57..6515f41882d5c3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxl.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxl.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b","578":"c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a tB uB","322":"b c d e f g T h H i"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b","194":"c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB 7B 8B 9B AC fB pB BC gB","194":"dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"JPEG XL image format"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b","578":"c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a 0B 1B","322":"b c d e f g h i j k l X m H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b","194":"c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB EC FC GC HC jB wB IC kB","194":"hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"JPEG XL image format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxr.js index 18b304bdb57a20..429d01b761db6d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxr.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxr.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O","2":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"1":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"JPEG XR image format"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O","2":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"1":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"JPEG XR image format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js index 7c9b253348080a..ed380ab23a069f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB tB uB"},D:{"1":"PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I eC fC gC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"Lookbehind in JS regular expressions"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB 0B 1B"},D:{"1":"TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I lC mC nC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"Lookbehind in JS regular expressions"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/json.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/json.js index bf3f4b37fcd6ea..619fb940416d3f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/json.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/json.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D rB","129":"E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B 8B"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"JSON parsing"}; +module.exports={A:{A:{"1":"F A B","2":"J D yB","129":"E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC FC"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"JSON parsing"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js index edfbd6a365dd68..a5e0a49691b725 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G","132":"M N O"},C:{"1":"HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB tB uB"},D:{"1":"OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB","132":"MB NB iB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B","132":"mB"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","132":"9 AB BB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC","132":"KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"132":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I eC fC","132":"gC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"132":"rC"}},B:5,C:"CSS justify-content: space-evenly"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G","132":"M N O"},C:{"1":"LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 0B 1B"},D:{"1":"SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","132":"QB RB nB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B","132":"sB"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB EC FC GC HC jB wB IC kB","132":"DB EB FB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC","132":"RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"132":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I lC mC","132":"nC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"132":"yC"}},B:5,C:"CSS justify-content: space-evenly"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js index 3d26dc0efd06b0..92c7ad587ed18e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"XC YC ZC","132":"hB I aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:7,C:"High-quality kerning pairs & ligatures"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"eC fC gC","132":"mB I hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:7,C:"High-quality kerning pairs & ligatures"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js index e282aa15053c71..289b696f149ef8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","16":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B 7B 8B 9B AC fB pB BC","16":"C"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB"},H:{"2":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"U gB","2":"A B fB pB","16":"C"},L:{"1":"H"},M:{"130":"T"},N:{"130":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:7,C:"KeyboardEvent.charCode"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","16":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B EC FC GC HC jB wB IC","16":"C"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB"},H:{"2":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"Y kB","2":"A B jB wB","16":"C"},L:{"1":"H"},M:{"130":"X"},N:{"130":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:7,C:"KeyboardEvent.charCode"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-code.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-code.js index fda181f7200b9b..f07e03ede9f424 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-code.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-code.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","194":"7 8 9 AB BB CB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t 7B 8B 9B AC fB pB BC gB","194":"u v w x y z"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"194":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I","194":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"194":"qC"},S:{"1":"rC"}},B:5,C:"KeyboardEvent.code"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB","194":"BB CB DB EB FB GB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w x EC FC GC HC jB wB IC kB","194":"0 1 2 3 y z"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"194":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I","194":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"194":"xC"},S:{"1":"yC"}},B:5,C:"KeyboardEvent.code"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js index 60601950dad3f5..8851707be3b9c3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B G M 7B 8B 9B AC fB pB BC","16":"C"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U gB","2":"A B fB pB","16":"C"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"KeyboardEvent.getModifierState()"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u v w x y"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B G M EC FC GC HC jB wB IC","16":"C"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y kB","2":"A B jB wB","16":"C"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"KeyboardEvent.getModifierState()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-key.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-key.js index b0f80a87e9a1bd..a3e99e7388aedb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-key.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-key.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","260":"F A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","260":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n tB uB","132":"o p q r s t"},D:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"0 1 2 F B G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC","16":"C"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"1":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U gB","2":"A B fB pB","16":"C"},L:{"1":"H"},M:{"1":"T"},N:{"260":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"2":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:5,C:"KeyboardEvent.key"}; +module.exports={A:{A:{"2":"J D E yB","260":"F A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r 0B 1B","132":"s t u v w x"},D:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"0 1 2 3 4 5 6 F B G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC","16":"C"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"1":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y kB","2":"A B jB wB","16":"C"},L:{"1":"H"},M:{"1":"X"},N:{"260":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"2":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:5,C:"KeyboardEvent.key"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-location.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-location.js index 07f48b02f2fd0c..e5f60ddc2ac7e4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-location.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-location.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","132":"I j J D E F A B C K L G M N O k l m n o p q r s t u"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"J yB lB","132":"I j zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B 7B 8B 9B AC fB pB BC","16":"C","132":"G M"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB","132":"DC EC FC"},H:{"2":"WC"},I:{"1":"H bC cC","16":"XC YC","132":"hB I ZC aC qB"},J:{"132":"D A"},K:{"1":"U gB","2":"A B fB pB","16":"C"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"KeyboardEvent.location"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","132":"I n J D E F A B C K L G M N O o p q r s t u v w x y"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"J 4B rB","132":"I n 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B EC FC GC HC jB wB IC","16":"C","132":"G M"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB","132":"KC LC MC"},H:{"2":"dC"},I:{"1":"H iC jC","16":"eC fC","132":"mB I gC hC xB"},J:{"132":"D A"},K:{"1":"Y kB","2":"A B jB wB","16":"C"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"KeyboardEvent.location"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-which.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-which.js index bbfeb5da80c207..20788b1aa20b18 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-which.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-which.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","16":"j"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 8B 9B AC fB pB BC gB","16":"F 7B"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB"},H:{"2":"WC"},I:{"1":"hB I H ZC aC qB","16":"XC YC","132":"bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"132":"H"},M:{"132":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"2":"I","132":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"132":"qC"},S:{"1":"rC"}},B:7,C:"KeyboardEvent.which"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","16":"n"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W FC GC HC jB wB IC kB","16":"F EC"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB"},H:{"2":"dC"},I:{"1":"mB I H gC hC xB","16":"eC fC","132":"iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"132":"H"},M:{"132":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"2":"I","132":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"132":"xC"},S:{"1":"yC"}},B:7,C:"KeyboardEvent.which"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/lazyload.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/lazyload.js index ed9712688b6c64..95870ade3233b0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/lazyload.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/lazyload.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F A rB"},B:{"1":"C K L G M N O","2":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"1":"B","2":"A"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Resource Hints: Lazyload"}; +module.exports={A:{A:{"1":"B","2":"J D E F A yB"},B:{"1":"C K L G M N O","2":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"1":"B","2":"A"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Resource Hints: Lazyload"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/let.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/let.js index 96e49a769c3586..2b44f772ee75bf 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/let.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/let.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","2052":"B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","194":"0 1 2 3 4 5 6 7 8 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O","322":"0 1 2 3 4 5 k l m n o p q r s t u v w x y z","516":"6 7 8 9 AB BB CB DB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B","1028":"A mB"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","322":"G M N O k l m n o p q r s","516":"0 t u v w x y z"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC","1028":"JC KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","516":"I"},Q:{"1":"pC"},R:{"516":"qC"},S:{"1":"rC"}},B:6,C:"let"}; +module.exports={A:{A:{"2":"J D E F A yB","2052":"B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","194":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB 0B 1B"},D:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O","322":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z","516":"AB BB CB DB EB FB GB HB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B","1028":"A sB"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","322":"G M N O o p q r s t u v w","516":"0 1 2 3 4 x y z"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC","1028":"QC RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","516":"I"},Q:{"1":"wC"},R:{"516":"xC"},S:{"1":"yC"}},B:6,C:"let"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-png.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-png.js index 514fa9cfe4e976..753697fc3f1911 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-png.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-png.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F A rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"NC OC PC QC RC SC TC UC VC nB oB","130":"E lB CC qB DC EC FC GC HC IC JC KC LC MC"},H:{"130":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D","130":"A"},K:{"1":"U","130":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"130":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"PNG favicons"}; +module.exports={A:{A:{"1":"B","2":"J D E F A yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"UC VC WC XC YC ZC aC bC cC tB uB vB lB","130":"E rB JC xB KC LC MC NC OC PC QC RC SC TC"},H:{"130":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D","130":"A"},K:{"1":"Y","130":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"130":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"PNG favicons"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-svg.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-svg.js index 683750a8c0a0d9..cec4f223bb9004 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-svg.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-svg.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P","1537":"Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB tB uB","260":"0 1 2 3 4 5 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","513":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P","1537":"Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"9 AB BB CB DB EB FB GB HB IB","2":"0 1 2 3 4 5 6 7 8 F B C G M N O k l m n o p q r s t u v w x y z JB KB LB MB NB OB PB QB U RB SB 7B 8B 9B AC fB pB BC gB","1537":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"NC OC PC QC RC SC TC UC VC nB oB","130":"E lB CC qB DC EC FC GC HC IC JC KC LC MC"},H:{"130":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D","130":"A"},K:{"2":"U","130":"A B C fB pB gB"},L:{"1537":"H"},M:{"2":"T"},N:{"130":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC","1537":"lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"513":"rC"}},B:1,C:"SVG favicons"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P","1537":"Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB mB 0B 1B","260":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z","513":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P","1537":"Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB NB OB PB QB RB SB TB UB Y VB WB EC FC GC HC jB wB IC kB","1537":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"UC VC WC XC YC ZC aC bC cC tB uB vB lB","130":"E rB JC xB KC LC MC NC OC PC QC RC SC TC"},H:{"130":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D","130":"A"},K:{"2":"Y","130":"A B C jB wB kB"},L:{"1537":"H"},M:{"2":"X"},N:{"130":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC","1537":"sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"513":"yC"}},B:1,C:"SVG favicons"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js index 23b2fb98d24cc8..a0e07fbf23b761 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E rB","132":"F"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB","260":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"16":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"16":"hB I H XC YC ZC aC qB bC cC"},J:{"16":"D A"},K:{"16":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"16":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","16":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"Resource Hints: dns-prefetch"}; +module.exports={A:{A:{"1":"A B","2":"J D E yB","132":"F"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB mB","260":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"16":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"16":"mB I H eC fC gC hC xB iC jC"},J:{"16":"D A"},K:{"16":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"16":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","16":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"Resource Hints: dns-prefetch"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js index 8bf3041ef91360..650f5dd8a41ffd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"iC mB jC kC lC mC nC oC","2":"I eC fC gC hC"},Q:{"16":"pC"},R:{"16":"qC"},S:{"2":"rC"}},B:1,C:"Resource Hints: modulepreload"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"pC sB qC rC sC tC uC lB vC","2":"I lC mC nC oC"},Q:{"16":"wC"},R:{"16":"xC"},S:{"2":"yC"}},B:1,C:"Resource Hints: modulepreload"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preconnect.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preconnect.js index fc4d224593208f..5758e62966d259 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preconnect.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preconnect.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L","260":"G M N O"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB","2":"0 1 2 3 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","129":"4"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w x 7B 8B 9B AC fB pB BC gB"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"16":"T"},N:{"2":"A B"},O:{"16":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"Resource Hints: preconnect"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L","260":"G M N O"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB","2":"0 1 2 3 4 5 6 7 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","129":"8"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"16":"X"},N:{"2":"A B"},O:{"16":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"Resource Hints: preconnect"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prefetch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prefetch.js index a92a56fb62e62e..b6ac78064b7675 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prefetch.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prefetch.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F A rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D"},E:{"2":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB","194":"L G 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC","194":"SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"I H bC cC","2":"hB XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"Resource Hints: prefetch"}; +module.exports={A:{A:{"1":"B","2":"J D E F A yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D"},E:{"2":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB","194":"L G 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC","194":"ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"I H iC jC","2":"mB eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"Resource Hints: prefetch"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preload.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preload.js index 0eb352ec5e60f7..e1b0d67ea64d7b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preload.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preload.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M","1028":"N O"},C:{"1":"W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB tB uB","132":"LB","578":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V"},D:{"1":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB","322":"B"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC","322":"LC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:4,C:"Resource Hints: preload"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M","1028":"N O"},C:{"1":"U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 0B 1B","132":"PB","578":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T"},D:{"1":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB","322":"B"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC","322":"SC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"Resource Hints: preload"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prerender.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prerender.js index a939fedb8bc04b..f41fa3d37e10cb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prerender.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prerender.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F A rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"1":"B","2":"A"},O:{"2":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:5,C:"Resource Hints: prerender"}; +module.exports={A:{A:{"1":"B","2":"J D E F A yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"1":"B","2":"A"},O:{"2":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:5,C:"Resource Hints: prerender"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/loading-lazy-attr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/loading-lazy-attr.js index 3993fb90ec4ab7..fc6a75b0e30f57 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/loading-lazy-attr.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/loading-lazy-attr.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB tB uB","132":"bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB","66":"bB cB"},E:{"2":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB","322":"L G 3B 4B 5B nB","580":"oB 6B"},F:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B 9B AC fB pB BC gB","66":"PB QB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC","322":"SC TC UC VC nB","580":"oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"132":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"kC lC mC nC oC","2":"I eC fC gC hC iC mB jC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:1,C:"Lazy loading via attribute for images & iframes"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB 0B 1B","132":"fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB","66":"fB gB"},E:{"2":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB","322":"L G 9B AC BC tB","580":"uB vB CC lB DC"},F:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC GC HC jB wB IC kB","66":"TB UB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC","322":"ZC aC bC cC tB","580":"uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"132":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"rC sC tC uC lB vC","2":"I lC mC nC oC pC sB qC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:1,C:"Lazy loading via attribute for images & iframes"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/localecompare.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/localecompare.js index cd8f8ea961513d..a185ed764ecdab 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/localecompare.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/localecompare.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","16":"rB","132":"J D E F A"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","132":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","132":"I j J D E F A B C K L G M N O k l m n o"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","132":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","16":"F B C 7B 8B 9B AC fB pB BC","132":"gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","132":"E lB CC qB DC EC FC GC HC IC"},H:{"132":"WC"},I:{"1":"H bC cC","132":"hB I XC YC ZC aC qB"},J:{"132":"D A"},K:{"1":"U","16":"A B C fB pB","132":"gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","132":"A"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","132":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"4":"rC"}},B:6,C:"localeCompare()"}; +module.exports={A:{A:{"1":"B","16":"yB","132":"J D E F A"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","132":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","132":"I n J D E F A B C K L G M N O o p q r s"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","132":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","16":"F B C EC FC GC HC jB wB IC","132":"kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","132":"E rB JC xB KC LC MC NC OC PC"},H:{"132":"dC"},I:{"1":"H iC jC","132":"mB I eC fC gC hC xB"},J:{"132":"D A"},K:{"1":"Y","16":"A B C jB wB","132":"kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","132":"A"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","132":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"4":"yC"}},B:6,C:"localeCompare()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/magnetometer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/magnetometer.js index e30219b80dcb7d..dd0f40573ac904 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/magnetometer.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/magnetometer.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","194":"NB iB OB jB PB QB U RB SB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"194":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:4,C:"Magnetometer"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","194":"RB nB SB oB TB UB Y VB WB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"194":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"Magnetometer"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchesselector.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchesselector.js index 28dad2790f9c52..0d3bf9d35bcadd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchesselector.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchesselector.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","36":"F A B"},B:{"1":"G M N O P Q R S V W X Y Z a b c d e f g T h H i","36":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB","36":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","36":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y"},E:{"1":"E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","36":"j J D zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B 7B 8B 9B AC fB","36":"C G M N O k l pB BC gB"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB","36":"CC qB DC EC FC"},H:{"2":"WC"},I:{"1":"H","2":"XC","36":"hB I YC ZC aC qB bC cC"},J:{"36":"D A"},K:{"1":"U","2":"A B","36":"C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"36":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","36":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"matches() DOM method"}; +module.exports={A:{A:{"2":"J D E yB","36":"F A B"},B:{"1":"G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","36":"C K L"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B","36":"0 1 2 I n J D E F A B C K L G M N O o p q r s t u v w x y z 1B"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","36":"0 1 2 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","36":"n J D 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B EC FC GC HC jB","36":"C G M N O o p wB IC kB"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB","36":"JC xB KC LC MC"},H:{"2":"dC"},I:{"1":"H","2":"eC","36":"mB I fC gC hC xB iC jC"},J:{"36":"D A"},K:{"1":"Y","2":"A B","36":"C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"36":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","36":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"matches() DOM method"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchmedia.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchmedia.js index d528c9bb445c0c..5b24ac676bbfdb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchmedia.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchmedia.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B C 7B 8B 9B AC fB pB BC"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"1":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"A","2":"D"},K:{"1":"U gB","2":"A B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"matchMedia"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B C EC FC GC HC jB wB IC"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"1":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"A","2":"D"},K:{"1":"Y kB","2":"A B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"matchMedia"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mathml.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mathml.js index ca78a7fa3fadcb..44ff1946582d54 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mathml.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mathml.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"F A B rB","8":"J D E"},B:{"2":"C K L G M N O","8":"P Q R S V W X Y Z a b c d e f g T","584":"h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","129":"sB hB tB uB"},D:{"1":"p","8":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T","584":"h H i vB wB xB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","260":"I j J D E F yB lB zB 0B 1B 2B"},F:{"2":"F","4":"B C 7B 8B 9B AC fB pB BC gB","8":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB","584":"S"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","8":"lB CC qB"},H:{"8":"WC"},I:{"8":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"A","8":"D"},K:{"8":"A B C U fB pB gB"},L:{"8":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"4":"dC"},P:{"8":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"8":"pC"},R:{"8":"qC"},S:{"1":"rC"}},B:2,C:"MathML"}; +module.exports={A:{A:{"2":"F A B yB","8":"J D E"},B:{"2":"C K L G M N O","8":"P Q R S T U V W Z a b c d e f g h","584":"i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","129":"zB mB 0B 1B"},D:{"1":"t","8":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h","584":"i j k l X m H qB 2B","1025":"3B"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","260":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"2":"F","8":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB","584":"S T U V W","2052":"B C EC FC GC HC jB wB IC kB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","8":"rB JC xB"},H:{"8":"dC"},I:{"8":"mB I H eC fC gC hC xB iC jC"},J:{"1":"A","8":"D"},K:{"8":"A B C Y jB wB kB"},L:{"8":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"4":"kC"},P:{"8":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"8":"wC"},R:{"8":"xC"},S:{"1":"yC"}},B:2,C:"MathML"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/maxlength.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/maxlength.js index 7aa07b91d200c3..a5c1263fe8903f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/maxlength.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/maxlength.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","16":"rB","900":"J D E F"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","1025":"C K L G M N O"},C:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","900":"sB hB tB uB","1025":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"j yB","900":"I lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","16":"F","132":"B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"CC qB DC EC FC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB","2052":"E GC"},H:{"132":"WC"},I:{"1":"hB I ZC aC qB bC cC","16":"XC YC","4097":"H"},J:{"1":"D A"},K:{"132":"A B C fB pB gB","4097":"U"},L:{"4097":"H"},M:{"4097":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"4097":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1025":"rC"}},B:1,C:"maxlength attribute for input and textarea elements"}; +module.exports={A:{A:{"1":"A B","16":"yB","900":"J D E F"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","1025":"C K L G M N O"},C:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","900":"zB mB 0B 1B","1025":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"n 4B","900":"I rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","16":"F","132":"B C EC FC GC HC jB wB IC kB"},G:{"1":"JC xB KC LC MC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB","2052":"E NC"},H:{"132":"dC"},I:{"1":"mB I gC hC xB iC jC","16":"eC fC","4097":"H"},J:{"1":"D A"},K:{"132":"A B C jB wB kB","4097":"Y"},L:{"4097":"H"},M:{"4097":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"4097":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1025":"yC"}},B:1,C:"maxlength attribute for input and textarea elements"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-attribute.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-attribute.js index 4181441d3a3592..5c098431326956 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-attribute.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-attribute.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O","16":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L tB uB"},D:{"1":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y","2":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i","16":"vB wB xB"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB"},F:{"1":"B C G M N O k l m n o p 8B 9B AC fB pB BC gB","2":"0 1 2 3 4 5 6 7 8 9 F q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB"},H:{"16":"WC"},I:{"1":"I H aC qB bC cC","16":"hB XC YC ZC"},J:{"16":"D A"},K:{"1":"C U gB","16":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"16":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Media attribute"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O","16":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L 0B 1B"},D:{"1":"0 1 2 I n J D E F A B C K L G M N O o p q r s t u v w x y z","2":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H","16":"qB 2B 3B"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB"},F:{"1":"B C G M N O o p q r s t FC GC HC jB wB IC kB","2":"0 1 2 3 4 5 6 7 8 9 F u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB"},H:{"16":"dC"},I:{"1":"I H hC xB iC jC","16":"mB eC fC gC"},J:{"16":"D A"},K:{"1":"C Y kB","16":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"16":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Media attribute"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-fragments.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-fragments.js index 9b729316bfd5d3..f4a59ec89fa026 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-fragments.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-fragments.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","132":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y tB uB","132":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"I j J D E F A B C K L G M N","132":"0 1 2 3 4 5 6 7 8 9 O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j yB lB zB","132":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","132":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"lB CC qB DC EC FC","132":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB","132":"H bC cC"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","132":"U"},L:{"132":"H"},M:{"132":"T"},N:{"132":"A B"},O:{"2":"dC"},P:{"2":"I eC","132":"fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"132":"rC"}},B:2,C:"Media Fragments"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","132":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","132":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"I n J D E F A B C K L G M N","132":"0 1 2 3 4 5 6 7 8 9 O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n 4B rB 5B","132":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","132":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"rB JC xB KC LC MC","132":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB","132":"H iC jC"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","132":"Y"},L:{"132":"H"},M:{"132":"X"},N:{"132":"A B"},O:{"2":"kC"},P:{"2":"I lC","132":"mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"132":"yC"}},B:2,C:"Media Fragments"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-session-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-session-api.js index a429363eea2cc7..ff5e4b0619d417 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-session-api.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-session-api.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"2":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB","16":"L G 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"Media Session API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"2":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB","16":"L G 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"Media Session API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js index c33c4fa19a9cf3..78d7c94f86a222 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","260":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB","324":"GB HB IB JB KB LB MB NB iB OB jB"},E:{"2":"I j J D E F A yB lB zB 0B 1B 2B mB","132":"B C K L G fB gB 3B 4B 5B nB oB 6B"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","324":"1 2 3 4 5 6 7 8 9 AB BB CB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"260":"T"},N:{"2":"A B"},O:{"132":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I","132":"eC fC gC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"260":"rC"}},B:5,C:"Media Capture from DOM Elements API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB 0B 1B","260":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","324":"KB LB MB NB OB PB QB RB nB SB oB"},E:{"2":"I n J D E F A 4B rB 5B 6B 7B 8B sB","132":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","324":"5 6 7 8 9 AB BB CB DB EB FB GB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"260":"X"},N:{"2":"A B"},O:{"132":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I","132":"lC mC nC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"260":"yC"}},B:5,C:"Media Capture from DOM Elements API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediarecorder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediarecorder.js index 5e0c443aafdd08..21f5ec1259c08d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediarecorder.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediarecorder.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB","194":"CB DB"},E:{"1":"G 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB","322":"K L gB 3B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w x y 7B 8B 9B AC fB pB BC gB","194":"0 z"},G:{"1":"UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC","578":"NC OC PC QC RC SC TC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:5,C:"MediaRecorder API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B"},D:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB","194":"GB HB"},E:{"1":"G AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB","322":"K L kB 9B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","194":"3 4"},G:{"1":"bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC","578":"UC VC WC XC YC ZC aC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:5,C:"MediaRecorder API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediasource.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediasource.js index 6497fd16f45393..33483d83b3f1bc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediasource.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediasource.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","132":"B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p tB uB","66":"0 1 2 3 4 5 6 q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M","33":"o p q r s t u v","66":"N O k l m n"},E:{"1":"E F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC","260":"PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H cC","2":"hB I XC YC ZC aC qB bC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"1":"dC"},P:{"1":"iC mB jC kC lC mC nC oC","2":"I eC fC gC hC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"Media Source Extensions"}; +module.exports={A:{A:{"2":"J D E F A yB","132":"B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t 0B 1B","66":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M","33":"s t u v w x y z","66":"N O o p q r"},E:{"1":"E F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC","260":"WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H jC","2":"mB I eC fC gC hC xB iC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"1":"kC"},P:{"1":"pC sB qC rC sC tC uC lB vC","2":"I lC mC nC oC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"Media Source Extensions"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/menu.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/menu.js index 5f6d3f5dc8b69b..d5377eb319d3b1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/menu.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/menu.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D tB uB","132":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V","450":"W X Y Z a b c d e f g T h H i"},D:{"2":"0 1 2 3 4 5 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","66":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C G M N O k l m n o p q r s t u v w x y z CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","66":"0 1 2 3 4 5 6 7 8 9 AB BB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"450":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Context menu item (menuitem element)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB mB I n J D 0B 1B","132":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T","450":"U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","66":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 F B C G M N O o p q r s t u v w x y z GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","66":"4 5 6 7 8 9 AB BB CB DB EB FB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"450":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Context menu item (menuitem element)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meta-theme-color.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meta-theme-color.js index 134dcea5821f27..5f710976fadcca 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meta-theme-color.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meta-theme-color.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","132":"ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","258":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB"},E:{"1":"G 5B nB oB 6B","2":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B 4B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"513":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I","16":"eC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:1,C:"theme-color Meta Tag"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 I n J D E F A B C K L G M N O o p q r s t u v w x y z","132":"dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","258":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB"},E:{"1":"G BC tB uB vB CC lB DC","2":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B AC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"513":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I","16":"lC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:1,C:"theme-color Meta Tag"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meter.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meter.js index b3e3e48c78743b..fb00c2f83a866a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meter.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meter.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S fB pB BC gB","2":"F 7B 8B 9B AC"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"1":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"meter element"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W jB wB IC kB","2":"F EC FC GC HC"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"1":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"meter element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/midi.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/midi.js index ae799d4ec36ff3..41f09c23c98b45 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/midi.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/midi.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:5,C:"Web MIDI API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w x y EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:5,C:"Web MIDI API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/minmaxwh.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/minmaxwh.js index c7cdb43824f711..ebafd5ce739a11 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/minmaxwh.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/minmaxwh.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","8":"J rB","129":"D","257":"E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"CSS min/max-width/height"}; +module.exports={A:{A:{"1":"F A B","8":"J yB","129":"D","257":"E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"CSS min/max-width/height"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mp3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mp3.js index 1b08775aa023f1..a8505e769ad9d6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mp3.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mp3.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB","132":"I j J D E F A B C K L G M N O k l m tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB"},H:{"2":"WC"},I:{"1":"hB I H ZC aC qB bC cC","2":"XC YC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"MP3 audio format"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB","132":"I n J D E F A B C K L G M N O o p q 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB"},H:{"2":"dC"},I:{"1":"mB I H gC hC xB iC jC","2":"eC fC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"MP3 audio format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg-dash.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg-dash.js index 99e6d4d457c849..3823e8e275e95f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg-dash.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg-dash.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O","2":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","386":"m n"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"Dynamic Adaptive Streaming over HTTP (MPEG-DASH)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O","2":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","386":"q r"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"Dynamic Adaptive Streaming over HTTP (MPEG-DASH)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg4.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg4.js index dfa8905121f725..b5f14527cbaa04 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg4.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg4.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l tB uB","4":"m n o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H bC cC","4":"hB I XC YC aC qB","132":"ZC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"260":"T"},N:{"1":"A B"},O:{"4":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"MPEG-4/H.264 video format"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p 0B 1B","4":"0 1 2 3 q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H iC jC","4":"mB I eC fC hC xB","132":"gC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"260":"X"},N:{"1":"A B"},O:{"4":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"MPEG-4/H.264 video format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multibackgrounds.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multibackgrounds.js index 68aac10058f9f2..313c064e1fd52e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multibackgrounds.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multibackgrounds.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i uB","2":"sB hB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B 8B"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS3 Multiple backgrounds"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 1B","2":"zB mB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC FC"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS3 Multiple backgrounds"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multicolumn.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multicolumn.js index 3cbca7351e6db5..85e39e9a864845 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multicolumn.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multicolumn.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O","516":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"132":"HB IB JB KB LB MB NB iB OB jB PB QB U","164":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB tB uB","516":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c","1028":"d e f g T h H i"},D:{"420":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB","516":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","132":"F 2B","164":"D E 1B","420":"I j J yB lB zB 0B"},F:{"1":"C fB pB BC gB","2":"F B 7B 8B 9B AC","420":"0 1 G M N O k l m n o p q r s t u v w x y z","516":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","132":"HC IC","164":"E FC GC","420":"lB CC qB DC EC"},H:{"1":"WC"},I:{"420":"hB I XC YC ZC aC qB bC cC","516":"H"},J:{"420":"D A"},K:{"1":"C fB pB gB","2":"A B","516":"U"},L:{"516":"H"},M:{"516":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","420":"I"},Q:{"132":"pC"},R:{"132":"qC"},S:{"164":"rC"}},B:4,C:"CSS3 Multiple column layout"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O","516":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"132":"LB MB NB OB PB QB RB nB SB oB TB UB Y","164":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 0B 1B","516":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c","1028":"d e f g h i j k l X m H qB"},D:{"420":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","516":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","132":"F 8B","164":"D E 7B","420":"I n J 4B rB 5B 6B"},F:{"1":"C jB wB IC kB","2":"F B EC FC GC HC","420":"0 1 2 3 4 5 G M N O o p q r s t u v w x y z","516":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","132":"OC PC","164":"E MC NC","420":"rB JC xB KC LC"},H:{"1":"dC"},I:{"420":"mB I eC fC gC hC xB iC jC","516":"H"},J:{"420":"D A"},K:{"1":"C jB wB kB","2":"A B","516":"Y"},L:{"516":"H"},M:{"516":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","420":"I"},Q:{"132":"wC"},R:{"132":"xC"},S:{"164":"yC"}},B:4,C:"CSS3 Multiple column layout"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutation-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutation-events.js index 46c92fe2c7470d..d1a652ea035e5a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutation-events.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutation-events.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","260":"F A B"},B:{"132":"P Q R S V W X Y Z a b c d e f g T h H i","260":"C K L G M N O"},C:{"2":"sB hB I j tB uB","260":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"16":"I j J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"16":"yB lB","132":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"C BC gB","2":"F 7B 8B 9B AC","16":"B fB pB","132":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"16":"lB CC","132":"E qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"16":"XC YC","132":"hB I H ZC aC qB bC cC"},J:{"132":"D A"},K:{"1":"C gB","2":"A","16":"B fB pB","132":"U"},L:{"132":"H"},M:{"260":"T"},N:{"260":"A B"},O:{"132":"dC"},P:{"132":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"132":"pC"},R:{"132":"qC"},S:{"260":"rC"}},B:5,C:"Mutation events"}; +module.exports={A:{A:{"2":"J D E yB","260":"F A B"},B:{"132":"P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C K L G M N O"},C:{"2":"zB mB I n 0B 1B","260":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"16":"I n J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"16":"4B rB","132":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"C IC kB","2":"F EC FC GC HC","16":"B jB wB","132":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"16":"rB JC","132":"E xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"16":"eC fC","132":"mB I H gC hC xB iC jC"},J:{"132":"D A"},K:{"1":"C kB","2":"A","16":"B jB wB","132":"Y"},L:{"132":"H"},M:{"260":"X"},N:{"260":"A B"},O:{"132":"kC"},P:{"132":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"132":"wC"},R:{"132":"xC"},S:{"260":"yC"}},B:5,C:"Mutation events"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutationobserver.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutationobserver.js index 753ef512f11680..e7623b686f2e4e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutationobserver.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutationobserver.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E rB","8":"F A"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N","33":"O k l m n o p q r"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC","33":"EC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB XC YC ZC","8":"I aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","8":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Mutation Observer"}; +module.exports={A:{A:{"1":"B","2":"J D E yB","8":"F A"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N","33":"O o p q r s t u v"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC","33":"LC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB eC fC gC","8":"I hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","8":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Mutation Observer"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/namevalue-storage.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/namevalue-storage.js index 2473ec292dd467..ef47e0777c8374 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/namevalue-storage.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/namevalue-storage.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"E F A B","2":"rB","8":"J D"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","4":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B 8B"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Web Storage - name/value pairs"}; +module.exports={A:{A:{"1":"E F A B","2":"yB","8":"J D"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","4":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC FC"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Web Storage - name/value pairs"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/native-filesystem-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/native-filesystem-api.js index 745149011e8ba1..bb487e9a4acbed 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/native-filesystem-api.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/native-filesystem-api.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","194":"P Q R S V W","260":"X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB","194":"aB bB cB dB eB P Q R S V W","260":"X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B","4":"nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B 9B AC fB pB BC gB","194":"PB QB U RB SB TB UB VB WB XB","260":"YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC","4":"nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"File System Access API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","194":"P Q R S T U","260":"V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB","194":"eB fB gB hB iB P Q R S T U","260":"V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC","516":"tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC GC HC jB wB IC kB","194":"TB UB Y VB WB XB YB ZB aB bB","260":"cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC","516":"tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"File System Access API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/nav-timing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/nav-timing.js index b13a14638abf03..3ac42eed3b5373 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/nav-timing.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/nav-timing.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j","33":"J D E F A B C"},E:{"1":"E F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"I H aC qB bC cC","2":"hB XC YC ZC"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"Navigation Timing API"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n","33":"J D E F A B C"},E:{"1":"E F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"I H hC xB iC jC","2":"mB eC fC gC"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"Navigation Timing API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/navigator-language.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/navigator-language.js index 9e729f745a785a..81d8d99827d168 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/navigator-language.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/navigator-language.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w tB uB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o 7B 8B 9B AC fB pB BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"16":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"16":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"16":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"16":"pC"},R:{"16":"qC"},S:{"1":"rC"}},B:2,C:"Navigator Language API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s EC FC GC HC jB wB IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"16":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"16":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"16":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"16":"wC"},R:{"16":"xC"},S:{"1":"yC"}},B:2,C:"Navigator Language API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/netinfo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/netinfo.js index b7517cb6d74bfe..c454204e9025fe 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/netinfo.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/netinfo.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","1028":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB","1028":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB 7B 8B 9B AC fB pB BC gB","1028":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"XC bC cC","132":"hB I YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","132":"I","516":"eC fC gC"},Q:{"1":"pC"},R:{"516":"qC"},S:{"260":"rC"}},B:7,C:"Network Information API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","1028":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB","1028":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB EC FC GC HC jB wB IC kB","1028":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"eC iC jC","132":"mB I fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","132":"I","516":"lC mC nC"},Q:{"1":"wC"},R:{"516":"xC"},S:{"260":"yC"}},B:7,C:"Network Information API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/notifications.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/notifications.js index 51b71d284096f6..54d2ef0f56bcc4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/notifications.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/notifications.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I","36":"j J D E F A B C K L G M N O k l m"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB","36":"H bC cC"},J:{"1":"A","2":"D"},K:{"2":"A B C fB pB gB","36":"U"},L:{"513":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"36":"I","258":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"258":"qC"},S:{"1":"rC"}},B:1,C:"Web Notifications"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I","36":"n J D E F A B C K L G M N O o p q"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB","36":"H iC jC"},J:{"1":"A","2":"D"},K:{"2":"A B C jB wB kB","36":"Y"},L:{"513":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"36":"I","258":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"258":"xC"},S:{"1":"yC"}},B:1,C:"Web Notifications"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-entries.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-entries.js index 3c9ada4acd3ee5..544b0902e41c73 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-entries.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-entries.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB tB uB"},D:{"1":"JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D","16":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I eC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:6,C:"Object.entries"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K"},C:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB 0B 1B"},D:{"1":"NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D","16":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I lC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:6,C:"Object.entries"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-fit.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-fit.js index 27050f4794d35d..baac6301aeea4c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-fit.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-fit.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G","260":"M N O"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B","132":"E F 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F G M N O 7B 8B 9B","33":"B C AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC","132":"E GC HC IC"},H:{"33":"WC"},I:{"1":"H cC","2":"hB I XC YC ZC aC qB bC"},J:{"2":"D A"},K:{"1":"U","2":"A","33":"B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS3 object-fit/object-position"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G","260":"M N O"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B","132":"E F 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F G M N O EC FC GC","33":"B C HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC","132":"E NC OC PC"},H:{"33":"dC"},I:{"1":"H jC","2":"mB I eC fC gC hC xB iC"},J:{"2":"D A"},K:{"1":"Y","2":"A","33":"B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS3 object-fit/object-position"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-observe.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-observe.js index d4982489e83455..aa207f957a94db 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-observe.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-observe.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB","2":"0 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 o p q r s t u v w x y z","2":"2 3 4 5 6 7 8 9 F B C G M N O k l m n AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"I","2":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:7,C:"Object.observe data binding"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB","2":"0 1 2 3 4 I n J D E F A B C K L G M N O o p q r s t u v w x y z JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 s t u v w x y z","2":"6 7 8 9 F B C G M N O o p q r AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"I","2":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:7,C:"Object.observe data binding"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-values.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-values.js index 67f390468cbf51..002e7977cbdfa0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-values.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-values.js @@ -1 +1 @@ -module.exports={A:{A:{"8":"J D E F A B rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","8":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB tB uB"},D:{"1":"JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","8":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","8":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","8":"0 1 2 3 4 5 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","8":"E lB CC qB DC EC FC GC HC IC JC"},H:{"8":"WC"},I:{"1":"H","8":"hB I XC YC ZC aC qB bC cC"},J:{"8":"D A"},K:{"1":"U","8":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"8":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","8":"I eC"},Q:{"1":"pC"},R:{"8":"qC"},S:{"1":"rC"}},B:6,C:"Object.values method"}; +module.exports={A:{A:{"8":"J D E F A B yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K"},C:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","8":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB 0B 1B"},D:{"1":"NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","8":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","8":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","8":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","8":"E rB JC xB KC LC MC NC OC PC QC"},H:{"8":"dC"},I:{"1":"H","8":"mB I eC fC gC hC xB iC jC"},J:{"8":"D A"},K:{"1":"Y","8":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"8":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","8":"I lC"},Q:{"1":"wC"},R:{"8":"xC"},S:{"1":"yC"}},B:6,C:"Object.values method"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/objectrtc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/objectrtc.js index 18e62782cd274d..70aa0da301f09d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/objectrtc.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/objectrtc.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O","2":"C P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D","130":"A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"Object RTC (ORTC) API for WebRTC"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O","2":"C P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D","130":"A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"Object RTC (ORTC) API for WebRTC"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offline-apps.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offline-apps.js index c4f4f759666884..8b4351b86421a1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offline-apps.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offline-apps.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"F rB","8":"J D E"},B:{"1":"C K L G M N O P Q R S V","2":"W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S tB uB","2":"V W X Y Z a b c d e f g T h H i","4":"hB","8":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V","2":"W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","8":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB AC fB pB BC gB","2":"F ZB aB bB cB dB eB P Q R kB S 7B","8":"8B 9B"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I XC YC ZC aC qB bC cC","2":"H"},J:{"1":"D A"},K:{"1":"B C fB pB gB","2":"A U"},L:{"2":"H"},M:{"2":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:7,C:"Offline web applications"}; +module.exports={A:{A:{"1":"A B","2":"F yB","8":"J D E"},B:{"1":"C K L G M N O P Q R S T","2":"U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S 0B 1B","2":"T U V W Z a b c d e f g h i j k l X m H qB","4":"mB","8":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T","2":"U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","8":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB HC jB wB IC kB","2":"F dB eB fB gB hB iB P Q R pB S T U V W EC","8":"FC GC"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I eC fC gC hC xB iC jC","2":"H"},J:{"1":"D A"},K:{"1":"B C jB wB kB","2":"A Y"},L:{"2":"H"},M:{"2":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:7,C:"Offline web applications"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offscreencanvas.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offscreencanvas.js index 193a6ef509c4d7..3c09fcdb4c01f4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offscreencanvas.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offscreencanvas.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","194":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","322":"NB iB OB jB PB QB U RB SB TB UB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","322":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"194":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mB jC kC lC mC nC oC","2":"I eC fC gC hC iC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"194":"rC"}},B:1,C:"OffscreenCanvas"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB 0B 1B","194":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","322":"RB nB SB oB TB UB Y VB WB XB YB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EC FC GC HC jB wB IC kB","322":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"194":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"sB qC rC sC tC uC lB vC","2":"I lC mC nC oC pC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"194":"yC"}},B:1,C:"OffscreenCanvas"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogg-vorbis.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogg-vorbis.js index c234e3514c6097..0c8f3fc8f2526c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogg-vorbis.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogg-vorbis.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B","132":"G 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B 8B"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"A","2":"D"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Ogg Vorbis audio format"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B","132":"G AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC FC"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"A","2":"D"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Ogg Vorbis audio format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogv.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogv.js index 43a672163e40c2..76a1f2bd8ee169 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogv.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogv.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","8":"F A B"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","8":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B 8B"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"1":"T"},N:{"8":"A B"},O:{"1":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:6,C:"Ogg/Theora video format"}; +module.exports={A:{A:{"2":"J D E yB","8":"F A B"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","8":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC FC"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"1":"X"},N:{"8":"A B"},O:{"1":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:6,C:"Ogg/Theora video format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ol-reversed.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ol-reversed.js index b7ea5ac7a8678d..9bac17fa958f67 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ol-reversed.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ol-reversed.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G","16":"M N O k"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB","16":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B 7B 8B 9B AC fB pB BC","16":"C"},G:{"1":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC"},H:{"1":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Reversed attribute of ordered lists"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G","16":"M N O o"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B","16":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B EC FC GC HC jB wB IC","16":"C"},G:{"1":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC"},H:{"1":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Reversed attribute of ordered lists"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/once-event-listener.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/once-event-listener.js index 239df6bcacc6b3..04fd96606c8c01 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/once-event-listener.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/once-event-listener.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G"},C:{"1":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB tB uB"},D:{"1":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I eC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:1,C:"\"once\" event listener option"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G"},C:{"1":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB 0B 1B"},D:{"1":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB EC FC GC HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I lC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:1,C:"\"once\" event listener option"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/online-status.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/online-status.js index b5132b5f91449c..8571fea5c8fdb4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/online-status.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/online-status.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D rB","260":"E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB hB","516":"0 1 2 3 4 5 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC","4":"gB"},G:{"1":"E qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC"},H:{"2":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"A","132":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Online/offline status"}; +module.exports={A:{A:{"1":"F A B","2":"J D yB","260":"E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB mB","516":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC","4":"kB"},G:{"1":"E xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC"},H:{"2":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"A","132":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Online/offline status"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/opus.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/opus.js index 45ffa227008d92..dc039ba29f7d0e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/opus.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/opus.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x"},E:{"2":"I j J D E F A yB lB zB 0B 1B 2B mB","132":"B C K L G fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC","132":"LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Opus"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L 0B 1B"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"2":"I n J D E F A 4B rB 5B 6B 7B 8B sB","132":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC","132":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Opus"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/orientation-sensor.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/orientation-sensor.js index 1086540b06a3e7..73332c3241724b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/orientation-sensor.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/orientation-sensor.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","194":"NB iB OB jB PB QB U RB SB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:4,C:"Orientation Sensor"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","194":"RB nB SB oB TB UB Y VB WB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"Orientation Sensor"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/outline.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/outline.js index 86938d583328c5..3b7feb14c05e2a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/outline.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/outline.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D rB","260":"E","388":"F A B"},B:{"1":"G M N O P Q R S V W X Y Z a b c d e f g T h H i","388":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC","129":"gB","260":"F B 7B 8B 9B AC fB pB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"C U gB","260":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"388":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS outline properties"}; +module.exports={A:{A:{"2":"J D yB","260":"E","388":"F A B"},B:{"1":"G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","388":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC","129":"kB","260":"F B EC FC GC HC jB wB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"C Y kB","260":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"388":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS outline properties"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pad-start-end.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pad-start-end.js index 775e9018632d0f..4402aed796950f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pad-start-end.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pad-start-end.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB tB uB"},D:{"1":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","2":"I eC fC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:6,C:"String.prototype.padStart(), String.prototype.padEnd()"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB 0B 1B"},D:{"1":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB EC FC GC HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","2":"I lC mC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:6,C:"String.prototype.padStart(), String.prototype.padEnd()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/page-transition-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/page-transition-events.js index d49661a929035c..176f5679bd2dce 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/page-transition-events.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/page-transition-events.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F A rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB"},H:{"2":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"PageTransitionEvent"}; +module.exports={A:{A:{"1":"B","2":"J D E F A yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB"},H:{"2":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"PageTransitionEvent"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pagevisibility.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pagevisibility.js index ee42942206d5b1..432617fdfa1a09 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pagevisibility.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pagevisibility.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F tB uB","33":"A B C K L G M N"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K","33":"L G M N O k l m n o p q r s t u v w x"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B C 7B 8B 9B AC fB pB BC","33":"G M N O k"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB","33":"bC cC"},J:{"1":"A","2":"D"},K:{"1":"U gB","2":"A B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","33":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"Page Visibility"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F 0B 1B","33":"A B C K L G M N"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K","33":"0 1 L G M N O o p q r s t u v w x y z"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B C EC FC GC HC jB wB IC","33":"G M N O o"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB","33":"iC jC"},J:{"1":"A","2":"D"},K:{"1":"Y kB","2":"A B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","33":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"Page Visibility"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passive-event-listener.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passive-event-listener.js index 5ba58f94167259..06694634eba237 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passive-event-listener.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passive-event-listener.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G"},C:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB tB uB"},D:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:1,C:"Passive event listeners"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G"},C:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB 0B 1B"},D:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:1,C:"Passive event listeners"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passwordrules.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passwordrules.js index 5b8c2a584b7427..0919c02835256e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passwordrules.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passwordrules.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","16":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h tB uB","16":"H i"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i","16":"vB wB xB"},E:{"1":"C K gB","2":"I j J D E F A B yB lB zB 0B 1B 2B mB fB","16":"L G 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB 7B 8B 9B AC fB pB BC gB","16":"IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"16":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","16":"H"},J:{"2":"D","16":"A"},K:{"2":"A B C fB pB gB","16":"U"},L:{"16":"H"},M:{"16":"T"},N:{"2":"A","16":"B"},O:{"16":"dC"},P:{"2":"I eC fC","16":"gC hC iC mB jC kC lC mC nC oC"},Q:{"16":"pC"},R:{"16":"qC"},S:{"2":"rC"}},B:1,C:"Password Rules"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","16":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m 0B 1B","16":"H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H","16":"qB 2B 3B"},E:{"1":"C K kB","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB jB","16":"L G 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB EC FC GC HC jB wB IC kB","16":"MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"16":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","16":"H"},J:{"2":"D","16":"A"},K:{"2":"A B C jB wB kB","16":"Y"},L:{"16":"H"},M:{"16":"X"},N:{"2":"A","16":"B"},O:{"16":"kC"},P:{"2":"I lC mC","16":"nC oC pC sB qC rC sC tC uC lB vC"},Q:{"16":"wC"},R:{"16":"xC"},S:{"2":"yC"}},B:1,C:"Password Rules"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/path2d.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/path2d.js index c22892c9329a33..560caea0bfd6d0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/path2d.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/path2d.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K","132":"L G M N O"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v tB uB","132":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB"},D:{"1":"UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","132":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB"},E:{"1":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B","132":"E F 1B"},F:{"1":"KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n 7B 8B 9B AC fB pB BC gB","132":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC","16":"E","132":"GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"132":"dC"},P:{"1":"mB jC kC lC mC nC oC","132":"I eC fC gC hC iC"},Q:{"132":"pC"},R:{"132":"qC"},S:{"1":"rC"}},B:1,C:"Path2D"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K","132":"L G M N O"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","132":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB"},D:{"1":"YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 I n J D E F A B C K L G M N O o p q r s t u v w x y z","132":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB"},E:{"1":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B","132":"E F 7B"},F:{"1":"OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r EC FC GC HC jB wB IC kB","132":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC","16":"E","132":"NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"132":"kC"},P:{"1":"sB qC rC sC tC uC lB vC","132":"I lC mC nC oC pC"},Q:{"132":"wC"},R:{"132":"xC"},S:{"1":"yC"}},B:1,C:"Path2D"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/payment-request.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/payment-request.js index 6cc237001be9b5..22794f87d214bf 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/payment-request.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/payment-request.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K","322":"L","8196":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB tB uB","4162":"KB LB MB NB iB OB jB PB QB U RB","16452":"SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB","194":"IB JB KB LB MB NB","1090":"iB OB","8196":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB"},E:{"1":"K L G gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B","514":"A B mB","8196":"C fB"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","194":"5 6 7 8 9 AB BB CB","8196":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB"},G:{"1":"OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC","514":"JC KC LC","8196":"MC NC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"2049":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"kC lC mC nC oC","2":"I","8196":"eC fC gC hC iC mB jC"},Q:{"8196":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:4,C:"Payment Request API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K","322":"L","8196":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB 0B 1B","4162":"OB PB QB RB nB SB oB TB UB Y VB","16452":"WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB","194":"MB NB OB PB QB RB","1090":"nB SB","8196":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB"},E:{"1":"K L G kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B","514":"A B sB","8196":"C jB"},F:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","194":"9 AB BB CB DB EB FB GB","8196":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB"},G:{"1":"VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC","514":"QC RC SC","8196":"TC UC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"2049":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"rC sC tC uC lB vC","2":"I","8196":"lC mC nC oC pC sB qC"},Q:{"8196":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"Payment Request API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pdf-viewer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pdf-viewer.js index 0cd76a4abd2355..d1d898bb4b2585 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pdf-viewer.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pdf-viewer.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","132":"B"},B:{"1":"G M N O P Q R S V W X Y Z a b c d e f g T h H i","16":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B 7B 8B 9B AC fB pB BC"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"16":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"16":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"Built-in PDF viewer"}; +module.exports={A:{A:{"2":"J D E F A yB","132":"B"},B:{"1":"G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","16":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B EC FC GC HC jB wB IC"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"16":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"16":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"Built-in PDF viewer"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-api.js index 2445d99cb0b6d0..a6e6d8ff17a242 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-api.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-api.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB tB uB"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:7,C:"Permissions API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB 0B 1B"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB"},E:{"1":"lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w x y EC FC GC HC jB wB IC kB"},G:{"1":"lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:7,C:"Permissions API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-policy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-policy.js index bbff0088f994d6..a79102034d5f6d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-policy.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-policy.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","258":"P Q R S V W","322":"X Y","388":"Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB tB uB","258":"aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB","258":"OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W","322":"X Y","388":"Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B yB lB zB 0B 1B 2B mB","258":"C K L G fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB 7B 8B 9B AC fB pB BC gB","258":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB","322":"YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC","258":"MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","258":"H"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","258":"U"},L:{"388":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC","258":"hC iC mB jC kC lC mC nC oC"},Q:{"258":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"Permissions Policy"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","258":"P Q R S T U","322":"V W","388":"Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB 0B 1B","258":"eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB","258":"SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U","322":"V W","388":"Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB","258":"C K L G jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB EC FC GC HC jB wB IC kB","258":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB","322":"cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC","258":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","258":"H"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","258":"Y"},L:{"388":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC","258":"oC pC sB qC rC sC tC uC lB vC"},Q:{"258":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"Permissions Policy"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture-in-picture.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture-in-picture.js index f528c04c1f113d..8469358ae46cf2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture-in-picture.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture-in-picture.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB tB uB","132":"YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","1090":"TB","1412":"XB","1668":"UB VB WB"},D:{"1":"WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB","2114":"VB"},E:{"1":"L G 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B","4100":"A B C K mB fB gB"},F:{"1":"ZB aB bB cB dB eB P Q R kB S","2":"0 1 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","8196":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB"},G:{"1":"TC UC VC nB oB","2":"E lB CC qB DC EC FC GC","4100":"HC IC JC KC LC MC NC OC PC QC RC SC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"16388":"H"},M:{"16388":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Picture-in-Picture"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB 0B 1B","132":"cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","1090":"XB","1412":"bB","1668":"YB ZB aB"},D:{"1":"aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB","2114":"ZB"},E:{"1":"L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B","4100":"A B C K sB jB kB"},F:{"1":"dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","8196":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB"},G:{"1":"aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC","4100":"OC PC QC RC SC TC UC VC WC XC YC ZC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"16388":"H"},M:{"16388":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Picture-in-Picture"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture.js index 7dcf0401a46a6b..6adaff6609e2a8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y tB uB","578":"0 1 2 z"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","194":"2"},E:{"1":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o 7B 8B 9B AC fB pB BC gB","322":"p"},G:{"1":"IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Picture element"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","578":"3 4 5 6"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 I n J D E F A B C K L G M N O o p q r s t u v w x y z","194":"6"},E:{"1":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s EC FC GC HC jB wB IC kB","322":"t"},G:{"1":"PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Picture element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ping.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ping.js index e342c74b064bb8..0a6609e74e6296 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ping.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ping.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M"},C:{"2":"sB","194":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"194":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"194":"rC"}},B:1,C:"Ping attribute"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M"},C:{"2":"zB","194":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"194":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"194":"yC"}},B:1,C:"Ping attribute"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/png-alpha.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/png-alpha.js index 5fb78af0d74dbb..d227b0717fbbe5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/png-alpha.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/png-alpha.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"D E F A B","2":"rB","8":"J"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"PNG alpha transparency"}; +module.exports={A:{A:{"1":"D E F A B","2":"yB","8":"J"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"PNG alpha transparency"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer-events.js index fd47603d361a17..7acad697432436 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer-events.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer-events.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F A rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i uB","2":"sB hB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:7,C:"CSS pointer-events (for HTML)"}; +module.exports={A:{A:{"1":"B","2":"J D E F A yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 1B","2":"zB mB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:7,C:"CSS pointer-events (for HTML)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer.js index 175a79b9be6d64..076f97fa6579f9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F rB","164":"A"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j tB uB","8":"0 1 2 3 4 5 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","328":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},D:{"1":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m","8":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB","584":"HB IB JB"},E:{"1":"K L G 3B 4B 5B nB oB 6B","2":"I j J yB lB zB","8":"D E F A B C 0B 1B 2B mB fB","1096":"gB"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","8":"0 1 2 3 G M N O k l m n o p q r s t u v w x y z","584":"4 5 6"},G:{"1":"QC RC SC TC UC VC nB oB","8":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC","6148":"PC"},H:{"2":"WC"},I:{"1":"H","8":"hB I XC YC ZC aC qB bC cC"},J:{"8":"D A"},K:{"1":"U","2":"A","8":"B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","36":"A"},O:{"8":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"eC","8":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"328":"rC"}},B:2,C:"Pointer events"}; +module.exports={A:{A:{"1":"B","2":"J D E F yB","164":"A"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n 0B 1B","8":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z","328":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},D:{"1":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q","8":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","584":"LB MB NB"},E:{"1":"K L G 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B","8":"D E F A B C 6B 7B 8B sB jB","1096":"kB"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","8":"0 1 2 3 4 5 6 7 G M N O o p q r s t u v w x y z","584":"8 9 AB"},G:{"1":"XC YC ZC aC bC cC tB uB vB lB","8":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC","6148":"WC"},H:{"2":"dC"},I:{"1":"H","8":"mB I eC fC gC hC xB iC jC"},J:{"8":"D A"},K:{"1":"Y","2":"A","8":"B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","36":"A"},O:{"8":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"lC","8":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"328":"yC"}},B:2,C:"Pointer events"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointerlock.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointerlock.js index 711af320b10fa2..4597401da90434 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointerlock.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointerlock.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K tB uB","33":"0 1 2 3 4 5 L G M N O k l m n o p q r s t u v w x y z"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G","33":"0 1 n o p q r s t u v w x y z","66":"M N O k l m"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","33":"G M N O k l m n o"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:2,C:"Pointer Lock API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K 0B 1B","33":"0 1 2 3 4 5 6 7 8 9 L G M N O o p q r s t u v w x y z"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G","33":"0 1 2 3 4 5 r s t u v w x y z","66":"M N O o p q"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","33":"G M N O o p q r s"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:2,C:"Pointer Lock API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/portals.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/portals.js index 40cd50b78ea3a7..3a49394e694d91 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/portals.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/portals.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V","322":"b c d e f g T h H i","450":"W X Y Z a"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB","194":"bB cB dB eB P Q R S V","322":"X Y Z a b c d e f g T h H i vB wB xB","450":"W"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B 9B AC fB pB BC gB","194":"PB QB U RB SB TB UB VB WB XB YB","322":"ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"450":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Portals"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T","322":"b c d e f g h i j k l X m H","450":"U V W Z a"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB","194":"fB gB hB iB P Q R S T","322":"V W Z a b c d e f g h i j k l X m H qB 2B 3B","450":"U"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC GC HC jB wB IC kB","194":"TB UB Y VB WB XB YB ZB aB bB cB","322":"dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"450":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Portals"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-color-scheme.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-color-scheme.js index 20bd006aa6a7d8..a8a8fd78860be9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-color-scheme.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-color-scheme.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB tB uB"},D:{"1":"cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB"},E:{"1":"K L G gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB"},F:{"1":"PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B 9B AC fB pB BC gB"},G:{"1":"PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"kC lC mC nC oC","2":"I eC fC gC hC iC mB jC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"prefers-color-scheme media query"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB 0B 1B"},D:{"1":"gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB"},E:{"1":"K L G kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB"},F:{"1":"TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC GC HC jB wB IC kB"},G:{"1":"WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"rC sC tC uC lB vC","2":"I lC mC nC oC pC sB qC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"prefers-color-scheme media query"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js index a8f29446b80264..be3a12f99ed76d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB tB uB"},D:{"1":"aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB 7B 8B 9B AC fB pB BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"jC kC lC mC nC oC","2":"I eC fC gC hC iC mB"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"prefers-reduced-motion media query"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB 0B 1B"},D:{"1":"eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB EC FC GC HC jB wB IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"qC rC sC tC uC lB vC","2":"I lC mC nC oC pC sB"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"prefers-reduced-motion media query"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-class-fields.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-class-fields.js index 8fb1c58ed7303c..4e1ace084b5ed1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-class-fields.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-class-fields.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB"},E:{"1":"G 4B 5B nB oB 6B","2":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B"},F:{"1":"PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB 7B 8B 9B AC fB pB BC gB"},G:{"1":"UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"jC kC lC mC nC oC","2":"I eC fC gC hC iC mB"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Private class fields"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB"},E:{"1":"G AC BC tB uB vB CC lB DC","2":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B"},F:{"1":"TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC GC HC jB wB IC kB"},G:{"1":"bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"qC rC sC tC uC lB vC","2":"I lC mC nC oC pC sB"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Private class fields"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js index 865aab53e96954..4383ffded7a4a2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"V W X Y Z a b c d e f g T h H i","2":"C K L G M N O P Q R S"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S"},E:{"1":"G 4B 5B nB oB 6B","2":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B"},F:{"1":"WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB 7B 8B 9B AC fB pB BC gB"},G:{"1":"UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Public class fields"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O P Q R S"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S"},E:{"1":"G AC BC tB uB vB CC lB DC","2":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B"},F:{"1":"aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB EC FC GC HC jB wB IC kB"},G:{"1":"bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Public class fields"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/progress.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/progress.js index 7f458029ad749a..57473a82fa274b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/progress.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/progress.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S fB pB BC gB","2":"F 7B 8B 9B AC"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC","132":"FC"},H:{"1":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"progress element"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W jB wB IC kB","2":"F EC FC GC HC"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC","132":"MC"},H:{"1":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"progress element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promise-finally.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promise-finally.js index 20e16158fea843..fc68f413b7dbf0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promise-finally.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promise-finally.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N"},C:{"1":"NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB tB uB"},D:{"1":"QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB 7B 8B 9B AC fB pB BC gB"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I eC fC gC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"Promise.prototype.finally"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N"},C:{"1":"RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB 0B 1B"},D:{"1":"UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB EC FC GC HC jB wB IC kB"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I lC mC nC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"Promise.prototype.finally"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promises.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promises.js index 84a90f5b14951f..4aa90d04392e7a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promises.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promises.js @@ -1 +1 @@ -module.exports={A:{A:{"8":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","4":"s t","8":"sB hB I j J D E F A B C K L G M N O k l m n o p q r tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","4":"x","8":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w"},E:{"1":"E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","8":"I j J D yB lB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","4":"k","8":"F B C G M N O 7B 8B 9B AC fB pB BC gB"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","8":"lB CC qB DC EC FC"},H:{"8":"WC"},I:{"1":"H cC","8":"hB I XC YC ZC aC qB bC"},J:{"8":"D A"},K:{"1":"U","8":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"8":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Promises"}; +module.exports={A:{A:{"8":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","4":"w x","8":"zB mB I n J D E F A B C K L G M N O o p q r s t u v 0B 1B"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","4":"1","8":"0 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","8":"I n J D 4B rB 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","4":"o","8":"F B C G M N O EC FC GC HC jB wB IC kB"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","8":"rB JC xB KC LC MC"},H:{"8":"dC"},I:{"1":"H jC","8":"mB I eC fC gC hC xB iC"},J:{"8":"D A"},K:{"1":"Y","8":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"8":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Promises"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proximity.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proximity.js index d08d11ff828a82..e58668eec67462 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proximity.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proximity.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:4,C:"Proximity API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:4,C:"Proximity API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proxy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proxy.js index 85756b15337f8e..bf3069bf99ff43 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proxy.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proxy.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N tB uB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"3 4 5 6 7 8 9 I j J D E F A B C K L G M N O AB BB CB DB","66":"0 1 2 k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 F B C q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","66":"G M N O k l m n o p"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:6,C:"Proxy object"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N 0B 1B"},D:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"7 8 9 I n J D E F A B C K L G M N O AB BB CB DB EB FB GB HB","66":"0 1 2 3 4 5 6 o p q r s t u v w x y z"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 F B C u v w x y z EC FC GC HC jB wB IC kB","66":"G M N O o p q r s t"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:6,C:"Proxy object"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/public-class-fields.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/public-class-fields.js index c158e8dee343f4..5705031790fdca 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/public-class-fields.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/public-class-fields.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB tB uB","4":"WB XB YB ZB aB","132":"VB"},D:{"1":"YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB"},E:{"1":"G 4B 5B nB oB 6B","2":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB 3B","260":"L"},F:{"1":"OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB 7B 8B 9B AC fB pB BC gB"},G:{"1":"TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"jC kC lC mC nC oC","2":"I eC fC gC hC iC mB"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Public class fields"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB 0B 1B","4":"aB bB cB dB eB","132":"ZB"},D:{"1":"cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB"},E:{"1":"G AC BC tB uB vB CC lB DC","2":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB 9B","260":"L"},F:{"1":"SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB EC FC GC HC jB wB IC kB"},G:{"1":"aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"qC rC sC tC uC lB vC","2":"I lC mC nC oC pC sB"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Public class fields"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/publickeypinning.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/publickeypinning.js index f23c11f0a7d370..f1ded18ca33525 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/publickeypinning.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/publickeypinning.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB","2":"0 1 2 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB","2":"F B C G M N O k SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","4":"o","16":"l m n p"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB","2":"jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"HTTP Public Key Pinning"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB","2":"0 1 2 3 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB","2":"0 1 2 3 4 5 6 I n J D E F A B C K L G M N O o p q r s t u v w x y z cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB","2":"F B C G M N O o WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","4":"s","16":"p q r t"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB","2":"qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"HTTP Public Key Pinning"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/push-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/push-api.js index a501a0fed87634..57bf5327d1d610 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/push-api.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/push-api.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"N O","2":"C K L G M","257":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","257":"9 BB CB DB EB FB GB IB JB KB LB MB NB iB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","1281":"AB HB OB"},D:{"2":"0 1 2 3 4 5 6 7 8 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","257":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","388":"9 AB BB CB DB EB"},E:{"2":"I j J D E F yB lB zB 0B 1B","514":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB","2114":"6B"},F:{"2":"0 1 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","16":"2 3 4 5 6","257":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"257":"rC"}},B:5,C:"Push API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"N O","2":"C K L G M","257":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB 0B 1B","257":"DB FB GB HB IB JB KB MB NB OB PB QB RB nB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","1281":"EB LB SB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB","257":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","388":"DB EB FB GB HB IB"},E:{"2":"I n J D E F 4B rB 5B 6B 7B","514":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC","4100":"lB DC"},F:{"2":"0 1 2 3 4 5 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","16":"6 7 8 9 AB","257":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"257":"yC"}},B:5,C:"Push API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/queryselector.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/queryselector.js index 2a5d752fa2c17c..7394cb2838f53a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/queryselector.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/queryselector.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"rB","8":"J D","132":"E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","8":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 8B 9B AC fB pB BC gB","8":"F 7B"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"querySelector/querySelectorAll"}; +module.exports={A:{A:{"1":"F A B","2":"yB","8":"J D","132":"E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","8":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W FC GC HC jB wB IC kB","8":"F EC"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"querySelector/querySelectorAll"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/readonly-attr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/readonly-attr.js index 6a6db8afb00a6c..f92803ae9e4edd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/readonly-attr.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/readonly-attr.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B","16":"rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","16":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L G M N O k l m n o p q"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","16":"F 7B","132":"B C 8B 9B AC fB pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB DC EC"},H:{"1":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"U","132":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"257":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"readonly attribute of input and textarea elements"}; +module.exports={A:{A:{"1":"J D E F A B","16":"yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","16":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L G M N O o p q r s t u"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","16":"F EC","132":"B C FC GC HC jB wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB KC LC"},H:{"1":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"Y","132":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"257":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"readonly attribute of input and textarea elements"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/referrer-policy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/referrer-policy.js index d6627fa03abf76..ea90d40f9c444f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/referrer-policy.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/referrer-policy.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","132":"B"},B:{"1":"P Q R S","132":"C K L G M N O","513":"V W X Y Z a b c d e f g T h H i"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X","2":"0 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","513":"Y Z a b c d e f g T h H i"},D:{"1":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V","2":"I j J D E F A B C K L G M N O k l","260":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB","513":"W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"C fB gB","2":"I j J D yB lB zB 0B","132":"E F A B 1B 2B mB","1025":"K L G 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB","2":"F B C 7B 8B 9B AC fB pB BC gB","513":"ZB aB bB cB dB eB P Q R kB S"},G:{"1":"NC OC PC QC","2":"lB CC qB DC EC FC","132":"E GC HC IC JC KC LC MC","1025":"RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"513":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"Referrer Policy"}; +module.exports={A:{A:{"2":"J D E F A yB","132":"B"},B:{"1":"P Q R S","132":"C K L G M N O","513":"T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V","2":"0 1 2 3 4 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","513":"W Z a b c d e f g h i j k l X m H qB"},D:{"1":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T","2":"I n J D E F A B C K L G M N O o p","260":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB","513":"U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"C jB kB","2":"I n J D 4B rB 5B 6B","132":"E F A B 7B 8B sB","1025":"K L G 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB","2":"F B C EC FC GC HC jB wB IC kB","513":"dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"UC VC WC XC","2":"rB JC xB KC LC MC","132":"E NC OC PC QC RC SC TC","1025":"YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"513":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"Referrer Policy"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/registerprotocolhandler.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/registerprotocolhandler.js index 6223d2a5a2d69e..503ec94a438caa 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/registerprotocolhandler.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/registerprotocolhandler.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","129":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB"},D:{"2":"I j J D E F A B C","129":"0 1 2 3 4 5 6 7 8 9 K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B 7B 8B 9B AC fB pB","129":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D","129":"A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:1,C:"Custom protocol handling"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","129":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB"},D:{"2":"I n J D E F A B C","129":"0 1 2 3 4 5 6 7 8 9 K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B EC FC GC HC jB wB","129":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D","129":"A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:1,C:"Custom protocol handling"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noopener.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noopener.js index 53d65971086f0d..1aa1de2edf639d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noopener.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noopener.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB tB uB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:1,C:"rel=noopener"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 0B 1B"},D:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:1,C:"rel=noopener"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noreferrer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noreferrer.js index c8cea6d335cd21..887b8c3d9cc86d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noreferrer.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noreferrer.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","132":"B"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","16":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L G"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB"},H:{"2":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Link type \"noreferrer\""}; +module.exports={A:{A:{"2":"J D E F A yB","132":"B"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","16":"C"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L G"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB"},H:{"2":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Link type \"noreferrer\""}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rellist.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rellist.js index 9ac87d07f8a18a..c85db8d96eeb3f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rellist.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rellist.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M","132":"N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u tB uB"},D:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB","132":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E yB lB zB 0B 1B"},F:{"1":"HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","132":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"132":"dC"},P:{"1":"iC mB jC kC lC mC nC oC","2":"I","132":"eC fC gC hC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:1,C:"relList (DOMTokenList)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M","132":"N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y 0B 1B"},D:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","132":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","132":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"132":"kC"},P:{"1":"pC sB qC rC sC tC uC lB vC","2":"I","132":"lC mC nC oC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:1,C:"relList (DOMTokenList)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rem.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rem.js index 8bf21c37b1507a..491a7fd6856565 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rem.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rem.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E rB","132":"F A"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i uB","2":"sB hB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"F B 7B 8B 9B AC fB pB"},G:{"1":"E CC qB EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB","260":"DC"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"C U gB","2":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"rem (root em) units"}; +module.exports={A:{A:{"1":"B","2":"J D E yB","132":"F A"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 1B","2":"zB mB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"F B EC FC GC HC jB wB"},G:{"1":"E JC xB LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB","260":"KC"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"C Y kB","2":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"rem (root em) units"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestanimationframe.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestanimationframe.js index 2c3c1cfb78901c..5d057a15a0633a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestanimationframe.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestanimationframe.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","33":"B C K L G M N O k l m n","164":"I j J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F","33":"n o","164":"O k l m","420":"A B C K L G M N"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC","33":"EC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"requestAnimationFrame"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","33":"B C K L G M N O o p q r","164":"I n J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F","33":"r s","164":"O o p q","420":"A B C K L G M N"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC","33":"LC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"requestAnimationFrame"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestidlecallback.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestidlecallback.js index 6dd18331d5f2a0..111d9e7eef941f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestidlecallback.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestidlecallback.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB tB uB","194":"IB JB"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB"},E:{"2":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB","322":"L G 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w x y 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC","322":"SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:5,C:"requestIdleCallback"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 0B 1B","194":"MB NB"},D:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB"},E:{"2":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB","322":"L G 9B AC BC tB uB vB CC lB DC"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC","322":"ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:5,C:"requestIdleCallback"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resizeobserver.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resizeobserver.js index 519199e4f05285..964fd9e3653508 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resizeobserver.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resizeobserver.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB tB uB"},D:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","194":"JB KB LB MB NB iB OB jB PB QB"},E:{"1":"L G 3B 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB gB","66":"K"},F:{"1":"HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","194":"6 7 8 9 AB BB CB DB EB FB GB"},G:{"1":"SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"iC mB jC kC lC mC nC oC","2":"I eC fC gC hC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Resize Observer"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB 0B 1B"},D:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","194":"NB OB PB QB RB nB SB oB TB UB"},E:{"1":"L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB kB","66":"K"},F:{"1":"LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","194":"AB BB CB DB EB FB GB HB IB JB KB"},G:{"1":"ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"pC sB qC rC sC tC uC lB vC","2":"I lC mC nC oC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Resize Observer"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resource-timing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resource-timing.js index 651bfd6dc46d05..8027d404195684 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resource-timing.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resource-timing.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v tB uB","194":"w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB","260":"B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"Resource Timing"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","194":"0 1 2 3"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB","260":"B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"Resource Timing"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rest-parameters.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rest-parameters.js index e624a93948b0f9..8b885cbf1e822d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rest-parameters.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rest-parameters.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L tB uB"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","194":"9 AB BB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v 7B 8B 9B AC fB pB BC gB","194":"w x y"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Rest parameters"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L 0B 1B"},D:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB","194":"DB EB FB"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","194":"0 1 2"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Rest parameters"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rtcpeerconnection.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rtcpeerconnection.js index 8527b1aa148129..6c305ed989c89f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rtcpeerconnection.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rtcpeerconnection.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L","516":"G M N O"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m tB uB","33":"0 1 2 3 4 5 6 7 8 n o p q r s t u v w x y z"},D:{"1":"LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n","33":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 6 7 O k l m n o p q r s t u v w x y z"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D","130":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"33":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"33":"pC"},R:{"33":"qC"},S:{"1":"rC"}},B:5,C:"WebRTC Peer-to-peer connections"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L","516":"G M N O"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q 0B 1B","33":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB"},D:{"1":"PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r","33":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 O o p q r s t u v w x y z AB BB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D","130":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"33":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"33":"wC"},R:{"33":"xC"},S:{"1":"yC"}},B:5,C:"WebRTC Peer-to-peer connections"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ruby.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ruby.js index b28f0b6ce9fc92..9a547025332f1c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ruby.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ruby.js @@ -1 +1 @@ -module.exports={A:{A:{"4":"J D E F A B rB"},B:{"4":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","8":"0 1 2 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"4":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","8":"I"},E:{"4":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","8":"I yB lB"},F:{"4":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","8":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"4":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","8":"lB CC qB"},H:{"8":"WC"},I:{"4":"hB I H aC qB bC cC","8":"XC YC ZC"},J:{"4":"A","8":"D"},K:{"4":"U","8":"A B C fB pB gB"},L:{"4":"H"},M:{"1":"T"},N:{"4":"A B"},O:{"4":"dC"},P:{"4":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"4":"pC"},R:{"4":"qC"},S:{"1":"rC"}},B:1,C:"Ruby annotation"}; +module.exports={A:{A:{"4":"J D E F A B yB"},B:{"4":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","8":"0 1 2 3 4 5 6 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"4":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","8":"I"},E:{"4":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","8":"I 4B rB"},F:{"4":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","8":"F B C EC FC GC HC jB wB IC kB"},G:{"4":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","8":"rB JC xB"},H:{"8":"dC"},I:{"4":"mB I H hC xB iC jC","8":"eC fC gC"},J:{"4":"A","8":"D"},K:{"4":"Y","8":"A B C jB wB kB"},L:{"4":"H"},M:{"1":"X"},N:{"4":"A B"},O:{"4":"kC"},P:{"4":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"4":"wC"},R:{"4":"xC"},S:{"1":"yC"}},B:1,C:"Ruby annotation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/run-in.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/run-in.js index e986c1aaa56a68..76c7f7ff82866f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/run-in.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/run-in.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"E F A B","2":"J D rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w","2":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"j J zB","2":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"0B","129":"I yB lB"},F:{"1":"F B C G M N O 7B 8B 9B AC fB pB BC gB","2":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"CC qB DC EC FC","2":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","129":"lB"},H:{"1":"WC"},I:{"1":"hB I XC YC ZC aC qB bC","2":"H cC"},J:{"1":"D A"},K:{"1":"A B C fB pB gB","2":"U"},L:{"2":"H"},M:{"2":"T"},N:{"1":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"display: run-in"}; +module.exports={A:{A:{"1":"E F A B","2":"J D yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 I n J D E F A B C K L G M N O o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"n J 5B","2":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"6B","129":"I 4B rB"},F:{"1":"F B C G M N O EC FC GC HC jB wB IC kB","2":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"JC xB KC LC MC","2":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","129":"rB"},H:{"1":"dC"},I:{"1":"mB I eC fC gC hC xB iC","2":"H jC"},J:{"1":"D A"},K:{"1":"A B C jB wB kB","2":"Y"},L:{"2":"H"},M:{"2":"X"},N:{"1":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"display: run-in"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js index 3fa89dbbf76126..571b4da514ef39 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","388":"B"},B:{"1":"O P Q R S V W","2":"C K L G","129":"M N","513":"X Y Z a b c d e f g T h H i"},C:{"1":"OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB tB uB"},D:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB","513":"Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"G 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB fB","2052":"L","3076":"C K gB 3B"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB","2":"0 1 2 3 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","513":"XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC","2052":"NC OC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"513":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"16":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:6,C:"'SameSite' cookie attribute"}; +module.exports={A:{A:{"2":"J D E F A yB","388":"B"},B:{"1":"O P Q R S T U","2":"C K L G","129":"M N","513":"V W Z a b c d e f g h i j k l X m H"},C:{"1":"SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB 0B 1B"},D:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","513":"Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"G AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB jB","2052":"L","3076":"C K kB 9B"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB","2":"0 1 2 3 4 5 6 7 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","513":"bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC","2052":"UC VC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"513":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"16":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:6,C:"'SameSite' cookie attribute"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/screen-orientation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/screen-orientation.js index 1ab6156c92fcbd..f46f78d86da085 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/screen-orientation.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/screen-orientation.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","164":"B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","36":"C K L G M N O"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N tB uB","36":"0 1 2 3 4 5 6 7 8 O k l m n o p q r s t u v w x y z"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A","36":"B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","16":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"Screen Orientation"}; +module.exports={A:{A:{"2":"J D E F A yB","164":"B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","36":"C K L G M N O"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N 0B 1B","36":"0 1 2 3 4 5 6 7 8 9 O o p q r s t u v w x y z AB BB CB"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A","36":"B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","16":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"Screen Orientation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-async.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-async.js index 7d9b061c6d3453..d27bfef06d22f1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-async.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-async.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i uB","2":"sB hB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","132":"j"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"2":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"async attribute for external scripts"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 1B","2":"zB mB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","132":"n"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"2":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"async attribute for external scripts"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-defer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-defer.js index dec91441472bb0..441512e8830374 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-defer.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-defer.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","132":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB","257":"I j J D E F A B C K L G M N O k l m n o p q r s t u v tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"2":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"defer attribute for external scripts"}; +module.exports={A:{A:{"1":"A B","132":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB","257":"I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"2":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"defer attribute for external scripts"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoview.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoview.js index 98d8a6fae292cf..36bf9e1bed4616 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoview.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoview.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D rB","132":"E F A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","132":"C K L G M N O"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","132":"0 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","132":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB"},E:{"1":"6B","2":"I j yB lB","132":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F 7B 8B 9B AC","16":"B fB pB","132":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB BC gB"},G:{"16":"lB CC qB","132":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","16":"XC YC","132":"hB I ZC aC qB bC cC"},J:{"132":"D A"},K:{"1":"U","132":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"132":"dC"},P:{"132":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"132":"qC"},S:{"1":"rC"}},B:5,C:"scrollIntoView"}; +module.exports={A:{A:{"2":"J D yB","132":"E F A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","132":"C K L G M N O"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","132":"0 1 2 3 4 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","132":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB"},E:{"1":"lB DC","2":"I n 4B rB","132":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F EC FC GC HC","16":"B jB wB","132":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB IC kB"},G:{"1":"lB","16":"rB JC xB","132":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB"},H:{"2":"dC"},I:{"1":"H","16":"eC fC","132":"mB I gC hC xB iC jC"},J:{"132":"D A"},K:{"1":"Y","132":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"132":"kC"},P:{"132":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"132":"xC"},S:{"1":"yC"}},B:5,C:"scrollIntoView"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js index 69c736321ef7ce..d892807a66c313 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB"},H:{"2":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:7,C:"Element.scrollIntoViewIfNeeded()"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB"},H:{"2":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:7,C:"Element.scrollIntoViewIfNeeded()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sdch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sdch.js index b50d9525c051bc..a51a8c18fdde4c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sdch.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sdch.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","2":"iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB","2":"F B C ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"SDCH Accept-Encoding/Content-Encoding"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","2":"nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB","2":"F B C dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"SDCH Accept-Encoding/Content-Encoding"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/selection-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/selection-api.js index 462d47a4055652..ffe25fc2fbeaaf 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/selection-api.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/selection-api.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","16":"rB","260":"J D E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","132":"0 1 2 3 4 5 6 7 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","2180":"8 9 AB BB CB DB EB FB GB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","132":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"16":"qB","132":"lB CC","516":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H bC cC","16":"hB I XC YC ZC aC","1025":"qB"},J:{"1":"A","16":"D"},K:{"1":"U","16":"A B C fB pB","132":"gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","16":"A"},O:{"1025":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2180":"rC"}},B:5,C:"Selection API"}; +module.exports={A:{A:{"1":"F A B","16":"yB","260":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","132":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB 0B 1B","2180":"CB DB EB FB GB HB IB JB KB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","132":"F B C EC FC GC HC jB wB IC kB"},G:{"16":"xB","132":"rB JC","516":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H iC jC","16":"mB I eC fC gC hC","1025":"xB"},J:{"1":"A","16":"D"},K:{"1":"Y","16":"A B C jB wB","132":"kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","16":"A"},O:{"1025":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2180":"yC"}},B:5,C:"Selection API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/server-timing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/server-timing.js index 8d9d3826b1f9b5..379932f7d2ba47 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/server-timing.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/server-timing.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB tB uB"},D:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB","196":"OB jB PB QB","324":"U"},E:{"2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB","516":"K L G gB 3B 4B 5B nB oB 6B"},F:{"1":"HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"Server Timing"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB 0B 1B"},D:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB","196":"SB oB TB UB","324":"Y"},E:{"2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB","516":"K L G kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"Server Timing"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/serviceworkers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/serviceworkers.js index 2bccce13655be4..599c85bed5148e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/serviceworkers.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/serviceworkers.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L","322":"G M"},C:{"1":"9 BB CB DB EB FB GB IB JB KB LB MB NB iB jB PB QB U RB SB TB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x tB uB","194":"0 1 2 3 4 5 6 7 8 y z","513":"AB HB OB UB"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","4":"5 6 7 8 9"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B yB lB zB 0B 1B 2B mB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r 7B 8B 9B AC fB pB BC gB","4":"s t u v w"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","4":"H"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","4":"U"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"4":"qC"},S:{"2":"rC"}},B:4,C:"Service Workers"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L","322":"G M"},C:{"1":"DB FB GB HB IB JB KB MB NB OB PB QB RB nB oB TB UB Y VB WB XB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","194":"2 3 4 5 6 7 8 9 AB BB CB","513":"EB LB SB YB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 I n J D E F A B C K L G M N O o p q r s t u v w x y z","4":"9 AB BB CB DB"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v EC FC GC HC jB wB IC kB","4":"0 w x y z"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","4":"H"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","4":"Y"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"4":"xC"},S:{"2":"yC"}},B:4,C:"Service Workers"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/setimmediate.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/setimmediate.js index 46f1a8f5d10915..0397bb4e77d32c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/setimmediate.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/setimmediate.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O","2":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"1":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Efficient Script Yielding: setImmediate()"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O","2":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"1":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Efficient Script Yielding: setImmediate()"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sha-2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sha-2.js index a2ae77789c2e54..51e98f780fe40c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sha-2.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sha-2.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B","2":"rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","132":"0 1 2 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"16":"WC"},I:{"1":"hB I H YC ZC aC qB bC cC","260":"XC"},J:{"1":"D A"},K:{"1":"U","16":"A B C fB pB gB"},L:{"1":"H"},M:{"16":"T"},N:{"16":"A B"},O:{"16":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","16":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"SHA-2 SSL certificates"}; +module.exports={A:{A:{"1":"J D E F A B","2":"yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","132":"0 1 2 3 4 5 6 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"16":"dC"},I:{"1":"mB I H fC gC hC xB iC jC","260":"eC"},J:{"1":"D A"},K:{"1":"Y","16":"A B C jB wB kB"},L:{"1":"H"},M:{"16":"X"},N:{"16":"A B"},O:{"16":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","16":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"SHA-2 SSL certificates"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdom.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdom.js index ab355a513342be..f2372057aee006 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdom.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdom.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P","2":"C K L G M N O Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","66":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P","2":"I j J D E F A B C K L G M N O k l m n o p Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"q r s t u v w x y z"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB","2":"F B C TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","33":"G M N O k l m"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB","33":"bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC","2":"lC mC nC oC","33":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:7,C:"Shadow DOM (deprecated V0 spec)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P","2":"C K L G M N O Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","66":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P","2":"I n J D E F A B C K L G M N O o p q r s t Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"0 1 2 3 u v w x y z"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB","2":"F B C XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","33":"G M N O o p q"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB","33":"iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC","2":"sC tC uC lB vC","33":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:7,C:"Shadow DOM (deprecated V0 spec)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdomv1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdomv1.js index dba84dc630af9c..d32336c3c767da 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdomv1.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdomv1.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB tB uB","322":"NB","578":"iB OB jB PB"},D:{"1":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},E:{"1":"A B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC","132":"JC KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I","4":"eC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"Shadow DOM (V1)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB 0B 1B","322":"RB","578":"nB SB oB TB"},D:{"1":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"A B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC","132":"QC RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I","4":"lC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"Shadow DOM (V1)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedarraybuffer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedarraybuffer.js index 128ed2df546dbe..25019a3766a3e1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedarraybuffer.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedarraybuffer.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b","2":"C K L G","194":"M N O","513":"c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB tB uB","194":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB","450":"aB bB cB dB eB","513":"P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB","194":"OB jB PB QB U RB SB TB","513":"c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A yB lB zB 0B 1B 2B","194":"B C K L G mB fB gB 3B 4B 5B","513":"nB oB 6B"},F:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB 7B 8B 9B AC fB pB BC gB","194":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC","194":"KC LC MC NC OC PC QC RC SC TC UC VC","513":"nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"513":"H"},M:{"513":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"Shared Array Buffer"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b","2":"C K L G","194":"M N O","513":"c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB 0B 1B","194":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB","450":"eB fB gB hB iB","513":"P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB","194":"SB oB TB UB Y VB WB XB","513":"c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A 4B rB 5B 6B 7B 8B","194":"B C K L G sB jB kB 9B AC BC","513":"tB uB vB CC lB DC"},F:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB EC FC GC HC jB wB IC kB","194":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC","194":"RC SC TC UC VC WC XC YC ZC aC bC cC","513":"tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"513":"H"},M:{"513":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"Shared Array Buffer"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedworkers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedworkers.js index 37f1ad92e3614e..0aff54a8069ea2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedworkers.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedworkers.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"j J zB","2":"I D E F A B C K L G yB lB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S AC fB pB BC gB","2":"F 7B 8B 9B"},G:{"1":"DC EC","2":"E lB CC qB FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"B C fB pB gB","2":"U","16":"A"},L:{"2":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"I","2":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:1,C:"Shared Web Workers"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"n J 5B lB DC","2":"I D E F A B C K L G 4B rB 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W HC jB wB IC kB","2":"F EC FC GC"},G:{"1":"KC LC lB","2":"E rB JC xB MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"B C jB wB kB","2":"Y","16":"A"},L:{"2":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"I","2":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:1,C:"Shared Web Workers"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sni.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sni.js index 1c50ae25d9a4a4..29aea76ee189cc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sni.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sni.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J rB","132":"D E"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB"},H:{"1":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"A","2":"D"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Server Name Indication"}; +module.exports={A:{A:{"1":"F A B","2":"J yB","132":"D E"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB"},H:{"1":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"A","2":"D"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Server Name Indication"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spdy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spdy.js index 664f44b9b6a6c1..8dcd8e0cbbdad8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spdy.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spdy.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F A rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB","2":"sB hB I j J D E F A B C GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB","2":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"E F A B C 2B mB fB","2":"I j J D yB lB zB 0B 1B","129":"K L G gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 7 9 G M N O k l m n o p q r s t u v w x y z gB","2":"5 6 8 F B C AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC"},G:{"1":"E GC HC IC JC KC LC MC NC","2":"lB CC qB DC EC FC","257":"OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I aC qB bC cC","2":"H XC YC ZC"},J:{"2":"D A"},K:{"1":"gB","2":"A B C U fB pB"},L:{"2":"H"},M:{"2":"T"},N:{"1":"B","2":"A"},O:{"2":"dC"},P:{"1":"I","2":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"16":"qC"},S:{"1":"rC"}},B:7,C:"SPDY protocol"}; +module.exports={A:{A:{"1":"B","2":"J D E F A yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","2":"zB mB I n J D E F A B C KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","2":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"E F A B C 8B sB jB","2":"I n J D 4B rB 5B 6B 7B","129":"K L G kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 G M N O o p q r s t u v w x y z BB DB kB","2":"9 F B C AB CB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC"},G:{"1":"E NC OC PC QC RC SC TC UC","2":"rB JC xB KC LC MC","257":"VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I hC xB iC jC","2":"H eC fC gC"},J:{"2":"D A"},K:{"1":"kB","2":"A B C Y jB wB"},L:{"2":"H"},M:{"2":"X"},N:{"1":"B","2":"A"},O:{"2":"kC"},P:{"1":"I","2":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"16":"xC"},S:{"1":"yC"}},B:7,C:"SPDY protocol"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-recognition.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-recognition.js index 2e0381b08408eb..3d84a97bad55ef 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-recognition.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-recognition.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","1026":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m tB uB","322":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"I j J D E F A B C K L G M N O k l m n o p","164":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L yB lB zB 0B 1B 2B mB fB gB 3B","2084":"G 4B 5B nB oB 6B"},F:{"2":"F B C G M N O k l m n o p q r 7B 8B 9B AC fB pB BC gB","1026":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC","2084":"UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"164":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"164":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"164":"pC"},R:{"164":"qC"},S:{"322":"rC"}},B:7,C:"Speech Recognition API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","1026":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB mB I n J D E F A B C K L G M N O o p q 0B 1B","322":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"I n J D E F A B C K L G M N O o p q r s t","164":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L 4B rB 5B 6B 7B 8B sB jB kB 9B","2084":"G AC BC tB uB vB CC lB DC"},F:{"2":"F B C G M N O o p q r s t u v EC FC GC HC jB wB IC kB","1026":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC","2084":"bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"164":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"164":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"164":"wC"},R:{"164":"xC"},S:{"322":"yC"}},B:7,C:"Speech Recognition API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-synthesis.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-synthesis.js index 030d0f76b29448..315a416d9c3770 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-synthesis.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-synthesis.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"L G M N O","2":"C K","257":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v tB uB","194":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x","257":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","2":"F B C G M N O k l m n o p q r 7B 8B 9B AC fB pB BC gB","257":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:7,C:"Speech Synthesis API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"L G M N O","2":"C K","257":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","194":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB","2":"0 1 I n J D E F A B C K L G M N O o p q r s t u v w x y z","257":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB","2":"F B C G M N O o p q r s t u v EC FC GC HC jB wB IC kB","257":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:7,C:"Speech Synthesis API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spellcheck-attribute.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spellcheck-attribute.js index 5da5237afe70bc..9e9aea1d9d1ec9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spellcheck-attribute.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spellcheck-attribute.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B 8B"},G:{"4":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"4":"WC"},I:{"4":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"A","4":"D"},K:{"4":"A B C U fB pB gB"},L:{"4":"H"},M:{"4":"T"},N:{"4":"A B"},O:{"4":"dC"},P:{"4":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"4":"qC"},S:{"2":"rC"}},B:1,C:"Spellcheck attribute"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC FC"},G:{"4":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"4":"dC"},I:{"4":"mB I H eC fC gC hC xB iC jC"},J:{"1":"A","4":"D"},K:{"4":"A B C Y jB wB kB"},L:{"4":"H"},M:{"4":"X"},N:{"4":"A B"},O:{"4":"kC"},P:{"4":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"4":"xC"},S:{"2":"yC"}},B:1,C:"Spellcheck attribute"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sql-storage.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sql-storage.js index 95bad1e023bf6d..9aa638c6edf56d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sql-storage.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sql-storage.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB gB","2":"K L G 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B 8B"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC","2":"PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:7,C:"Web SQL Database"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB kB","2":"K L G 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC FC"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC","2":"WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:7,C:"Web SQL Database"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/srcset.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/srcset.js index aefb3950e610d6..d1f9d8672b9a45 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/srcset.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/srcset.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","260":"C","514":"K L G"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w tB uB","194":"0 1 2 x y z"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y","260":"0 1 2 z"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB 0B","260":"E 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l 7B 8B 9B AC fB pB BC gB","260":"m n o p"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC","260":"E GC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Srcset and sizes attributes"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C","514":"K L G"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","194":"1 2 3 4 5 6"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 I n J D E F A B C K L G M N O o p q r s t u v w x y z","260":"3 4 5 6"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B 6B","260":"E 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p EC FC GC HC jB wB IC kB","260":"q r s t"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC","260":"E NC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Srcset and sizes attributes"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stream.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stream.js index 82bc39a5f49fce..d3d378f6211610 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stream.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stream.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M tB uB","129":"1 2 3 4 5 6","420":"0 N O k l m n o p q r s t u v w x y z"},D:{"1":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l","420":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B G M N 7B 8B 9B AC fB pB BC","420":"0 1 2 3 4 C O k l m n o p q r s t u v w x y z gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC","513":"SC TC UC VC nB oB","1537":"LC MC NC OC PC QC RC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D","420":"A"},K:{"1":"U","2":"A B fB pB","420":"C gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","420":"I eC"},Q:{"1":"pC"},R:{"420":"qC"},S:{"2":"rC"}},B:4,C:"getUserMedia/Stream API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M 0B 1B","129":"5 6 7 8 9 AB","420":"0 1 2 3 4 N O o p q r s t u v w x y z"},D:{"1":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p","420":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B G M N EC FC GC HC jB wB IC","420":"0 1 2 3 4 5 6 7 8 C O o p q r s t u v w x y z kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC","513":"ZC aC bC cC tB uB vB lB","1537":"SC TC UC VC WC XC YC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D","420":"A"},K:{"1":"Y","2":"A B jB wB","420":"C kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","420":"I lC"},Q:{"1":"wC"},R:{"420":"xC"},S:{"2":"yC"}},B:4,C:"getUserMedia/Stream API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/streams.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/streams.js index 0b248824a90e23..54a205296fcccf 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/streams.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/streams.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","130":"B"},B:{"1":"a b c d e f g T h H i","16":"C K","260":"L G","1028":"P Q R S V W X Y Z","5124":"M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB tB uB","6148":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","6722":"MB NB iB OB jB PB QB U"},D:{"1":"a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB","260":"HB IB JB KB LB MB NB","1028":"iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z"},E:{"2":"I j J D E F yB lB zB 0B 1B 2B","1028":"G 4B 5B nB oB 6B","3076":"A B C K L mB fB gB 3B"},F:{"1":"cB dB eB P Q R kB S","2":"0 1 2 3 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","260":"4 5 6 7 8 9 AB","1028":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB"},G:{"2":"E lB CC qB DC EC FC GC HC IC","16":"JC","1028":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"6148":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"nC oC","2":"I eC fC","1028":"gC hC iC mB jC kC lC mC"},Q:{"1028":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:1,C:"Streams"}; +module.exports={A:{A:{"2":"J D E F A yB","130":"B"},B:{"1":"a b c d e f g h i j k l X m H","16":"C K","260":"L G","1028":"P Q R S T U V W Z","5124":"M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB 0B 1B","5124":"l X m H qB","7172":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k","7746":"QB RB nB SB oB TB UB Y"},D:{"1":"a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","260":"LB MB NB OB PB QB RB","1028":"nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z"},E:{"2":"I n J D E F 4B rB 5B 6B 7B 8B","1028":"G AC BC tB uB vB CC lB DC","3076":"A B C K L sB jB kB 9B"},F:{"1":"gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","260":"8 9 AB BB CB DB EB","1028":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB"},G:{"2":"E rB JC xB KC LC MC NC OC PC","16":"QC","1028":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"5124":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"uC lB vC","2":"I lC mC","1028":"nC oC pC sB qC rC sC tC"},Q:{"1028":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:1,C:"Streams"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stricttransportsecurity.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stricttransportsecurity.js index d7f2f0aa34b3f9..d1d7deaf8365c8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stricttransportsecurity.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stricttransportsecurity.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A rB","129":"B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B 7B 8B 9B AC fB pB BC"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Strict Transport Security"}; +module.exports={A:{A:{"2":"J D E F A yB","129":"B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B EC FC GC HC jB wB IC"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Strict Transport Security"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/style-scoped.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/style-scoped.js index 7e5d7eeb0d2ffd..ef2cf091ed75c1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/style-scoped.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/style-scoped.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","2":"sB hB I j J D E F A B C K L G M N O k l jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","322":"KB LB MB NB iB OB"},D:{"2":"2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","194":"0 1 l m n o p q r s t u v w x y z"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:7,C:"Scoped CSS"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","2":"zB mB I n J D E F A B C K L G M N O o p oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","322":"OB PB QB RB nB SB"},D:{"2":"6 7 8 9 I n J D E F A B C K L G M N O o AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","194":"0 1 2 3 4 5 p q r s t u v w x y z"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:7,C:"Scoped CSS"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-integrity.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-integrity.js index b0fc87cb2928e4..3fd39a7eca760d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-integrity.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-integrity.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u v w 7B 8B 9B AC fB pB BC gB"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC","194":"LC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"Subresource Integrity"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB 0B 1B"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC","194":"SC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"Subresource Integrity"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-css.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-css.js index 57b15024105143..bdc5969f8ae27d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-css.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-css.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","516":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","260":"I j J D E F A B C K L G M N O k l m n o"},D:{"1":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","4":"I"},E:{"1":"j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB","132":"I lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"1":"E qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","132":"lB CC"},H:{"260":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"D A"},K:{"1":"U","260":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"SVG in CSS backgrounds"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","516":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","260":"I n J D E F A B C K L G M N O o p q r s"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","4":"I"},E:{"1":"n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B","132":"I rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"1":"E xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","132":"rB JC"},H:{"260":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"D A"},K:{"1":"Y","260":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"SVG in CSS backgrounds"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-filters.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-filters.js index 97c718652f25cc..f45113296e44a9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-filters.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-filters.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I","4":"j J D"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC"},H:{"1":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"SVG filters"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I","4":"n J D"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC"},H:{"1":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"SVG filters"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fonts.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fonts.js index 025b3f80a1dd7b..cf816914875088 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fonts.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fonts.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"F A B rB","8":"J D E"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","2":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","130":"3 4 5 6 7 8 9 AB BB CB DB EB FB"},E:{"1":"I j J D E F A B C K L G lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB"},F:{"1":"F B C G M N O k l m n o p 7B 8B 9B AC fB pB BC gB","2":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","130":"0 1 q r s t u v w x y z"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"258":"WC"},I:{"1":"hB I aC qB bC cC","2":"H XC YC ZC"},J:{"1":"D A"},K:{"1":"A B C fB pB gB","2":"U"},L:{"130":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"I","130":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"130":"qC"},S:{"2":"rC"}},B:2,C:"SVG fonts"}; +module.exports={A:{A:{"2":"F A B yB","8":"J D E"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 I n J D E F A B C K L G M N O o p q r s t u v w x y z","2":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","130":"7 8 9 AB BB CB DB EB FB GB HB IB JB"},E:{"1":"I n J D E F A B C K L G rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B"},F:{"1":"F B C G M N O o p q r s t EC FC GC HC jB wB IC kB","2":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","130":"0 1 2 3 4 5 u v w x y z"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"258":"dC"},I:{"1":"mB I hC xB iC jC","2":"H eC fC gC"},J:{"1":"D A"},K:{"1":"A B C jB wB kB","2":"Y"},L:{"130":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"I","130":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"130":"xC"},S:{"2":"yC"}},B:2,C:"SVG fonts"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fragment.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fragment.js index 506dc7c3544396..998568c004332f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fragment.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fragment.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","260":"F A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L tB uB"},D:{"1":"FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","132":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB"},E:{"1":"C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D F A B yB lB zB 0B 2B mB","132":"E 1B"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"G M N O k l m n","4":"B C 8B 9B AC fB pB BC","16":"F 7B","132":"0 1 o p q r s t u v w x y z"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC HC IC JC KC LC","132":"E GC"},H:{"1":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D","132":"A"},K:{"1":"U gB","4":"A B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","132":"I"},Q:{"1":"pC"},R:{"132":"qC"},S:{"1":"rC"}},B:4,C:"SVG fragment identifiers"}; +module.exports={A:{A:{"2":"J D E yB","260":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L 0B 1B"},D:{"1":"JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 I n J D E F A B C K L G M N O o p q r s t u v w x y z","132":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB"},E:{"1":"C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D F A B 4B rB 5B 6B 8B sB","132":"E 7B"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"G M N O o p q r","4":"B C FC GC HC jB wB IC","16":"F EC","132":"0 1 2 3 4 5 s t u v w x y z"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC OC PC QC RC SC","132":"E NC"},H:{"1":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D","132":"A"},K:{"1":"Y kB","4":"A B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","132":"I"},Q:{"1":"wC"},R:{"132":"xC"},S:{"1":"yC"}},B:4,C:"SVG fragment identifiers"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html.js index 7620de718fec5c..3a26b610a6600c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","388":"F A B"},B:{"4":"P Q R S V W X Y Z a b c d e f g T h H i","260":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB","4":"hB"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"yB lB","4":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"4":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"4":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB","4":"H bC cC"},J:{"1":"A","2":"D"},K:{"4":"A B C U fB pB gB"},L:{"4":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"4":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"4":"pC"},R:{"4":"qC"},S:{"1":"rC"}},B:2,C:"SVG effects for HTML"}; +module.exports={A:{A:{"2":"J D E yB","388":"F A B"},B:{"4":"P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB","4":"mB"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"4B rB","4":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"4":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"4":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB","4":"H iC jC"},J:{"1":"A","2":"D"},K:{"4":"A B C Y jB wB kB"},L:{"4":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"4":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"4":"wC"},R:{"4":"xC"},S:{"1":"yC"}},B:2,C:"SVG effects for HTML"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html5.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html5.js index 2f6d8393798f55..941110a90f060f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html5.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html5.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"rB","8":"J D E","129":"F A B"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","129":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","8":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","8":"I j J"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","8":"I j yB lB","129":"J D E zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"B AC fB pB","8":"F 7B 8B 9B"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","8":"lB CC qB","129":"E DC EC FC GC"},H:{"1":"WC"},I:{"1":"H bC cC","2":"XC YC ZC","129":"hB I aC qB"},J:{"1":"A","129":"D"},K:{"1":"C U gB","8":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"129":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Inline SVG in HTML5"}; +module.exports={A:{A:{"2":"yB","8":"J D E","129":"F A B"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","129":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","8":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","8":"I n J"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","8":"I n 4B rB","129":"J D E 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"B HC jB wB","8":"F EC FC GC"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","8":"rB JC xB","129":"E KC LC MC NC"},H:{"1":"dC"},I:{"1":"H iC jC","2":"eC fC gC","129":"mB I hC xB"},J:{"1":"A","129":"D"},K:{"1":"C Y kB","8":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"129":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Inline SVG in HTML5"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-img.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-img.js index 20f3cad45a02df..0396c5895b9214 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-img.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-img.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","132":"I j J D E F A B C K L G M N O k l m n o p q r s"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB","4":"lB","132":"I j J D E zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","132":"E lB CC qB DC EC FC GC"},H:{"1":"WC"},I:{"1":"H bC cC","2":"XC YC ZC","132":"hB I aC qB"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"SVG in HTML img element"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","132":"I n J D E F A B C K L G M N O o p q r s t u v w"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B","4":"rB","132":"I n J D E 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","132":"E rB JC xB KC LC MC NC"},H:{"1":"dC"},I:{"1":"H iC jC","2":"eC fC gC","132":"mB I hC xB"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"SVG in HTML img element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-smil.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-smil.js index 2af38bd34c494f..d61a83c0262a09 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-smil.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-smil.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"rB","8":"J D E F A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","8":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","8":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","4":"I"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","8":"yB lB","132":"I j zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","132":"lB CC qB DC"},H:{"2":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"8":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"SVG SMIL animation"}; +module.exports={A:{A:{"2":"yB","8":"J D E F A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","8":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","8":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","4":"I"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","8":"4B rB","132":"I n 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","132":"rB JC xB KC"},H:{"2":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"8":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"SVG SMIL animation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg.js index 868e5c25390a04..4ef55d974e891c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"rB","8":"J D E","772":"F A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","513":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","4":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","4":"yB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"H bC cC","2":"XC YC ZC","132":"hB I aC qB"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"257":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"SVG (basic support)"}; +module.exports={A:{A:{"2":"yB","8":"J D E","772":"F A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","513":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","4":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","4":"4B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"H iC jC","2":"eC fC gC","132":"mB I hC xB"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"257":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"SVG (basic support)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sxg.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sxg.js index e4983bd53ae013..e37d42f331686d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sxg.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sxg.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB","132":"XB YB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"16":"dC"},P:{"1":"jC kC lC mC nC oC","2":"I eC fC gC hC iC mB"},Q:{"16":"pC"},R:{"16":"qC"},S:{"2":"rC"}},B:6,C:"Signed HTTP Exchanges (SXG)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB","132":"bB cB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"16":"kC"},P:{"1":"qC rC sC tC uC lB vC","2":"I lC mC nC oC pC sB"},Q:{"16":"wC"},R:{"16":"xC"},S:{"2":"yC"}},B:6,C:"Signed HTTP Exchanges (SXG)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tabindex-attr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tabindex-attr.js index a367c038bf5094..148923d3bc351d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tabindex-attr.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tabindex-attr.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"D E F A B","16":"J rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"16":"sB hB tB uB","129":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"16":"I j yB lB","257":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","16":"F"},G:{"769":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"16":"WC"},I:{"16":"hB I H XC YC ZC aC qB bC cC"},J:{"16":"D A"},K:{"16":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"16":"A B"},O:{"16":"dC"},P:{"16":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"16":"qC"},S:{"129":"rC"}},B:1,C:"tabindex global attribute"}; +module.exports={A:{A:{"1":"D E F A B","16":"J yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"16":"zB mB 0B 1B","129":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"16":"I n 4B rB","257":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","16":"F"},G:{"769":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"16":"dC"},I:{"16":"mB I H eC fC gC hC xB iC jC"},J:{"16":"D A"},K:{"16":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"16":"A B"},O:{"16":"kC"},P:{"16":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"16":"xC"},S:{"129":"yC"}},B:1,C:"tabindex global attribute"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template-literals.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template-literals.js index 59503592dc178b..e51c6002d5fe31 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template-literals.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template-literals.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"K L G M N O P Q R S V W X Y Z a b c d e f g T h H i","16":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y tB uB"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"A B K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B","129":"C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t 7B 8B 9B AC fB pB BC gB"},G:{"1":"HC IC JC KC LC MC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC","129":"NC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"ES6 Template Literals (Template Strings)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","16":"C"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"A B K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B","129":"C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w x EC FC GC HC jB wB IC kB"},G:{"1":"OC PC QC RC SC TC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC","129":"UC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"ES6 Template Literals (Template Strings)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template.js index bd2603fe5df8db..3dbc4a1fe2223e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C","388":"K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q","132":"r s t u v w x y z"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D yB lB zB","388":"E 1B","514":"0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","132":"G M N O k l m"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC","388":"E GC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"HTML templates"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C","388":"K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q 0B 1B"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u","132":"0 1 2 3 v w x y z"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D 4B rB 5B","388":"E 7B","514":"6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","132":"G M N O o p q"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC","388":"E NC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"HTML templates"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/temporal.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/temporal.js index 6443173f1d9dc9..6cf590179dc9ba 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/temporal.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/temporal.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"Temporal"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"Temporal"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/testfeat.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/testfeat.js index ef1ba082fb73fe..f7a1eadc9ac69e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/testfeat.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/testfeat.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E A B rB","16":"F"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","16":"I j"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"B C"},E:{"2":"I J yB lB zB","16":"j D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC pB BC gB","16":"fB"},G:{"2":"lB CC qB DC EC","16":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC aC qB bC cC","16":"ZC"},J:{"2":"A","16":"D"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Test feature - updated"}; +module.exports={A:{A:{"2":"J D E A B yB","16":"F"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","16":"I n"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"B C"},E:{"2":"I J 4B rB 5B","16":"n D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC wB IC kB","16":"jB"},G:{"2":"rB JC xB KC LC","16":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC hC xB iC jC","16":"gC"},J:{"2":"A","16":"D"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Test feature - updated"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-decoration.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-decoration.js index ed33837da2b188..d38f37185b0ec6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-decoration.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-decoration.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","2052":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j tB uB","1028":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","1060":"0 J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},D:{"2":"I j J D E F A B C K L G M N O k l m n o p q","226":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB","2052":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D yB lB zB 0B","772":"K L G gB 3B 4B 5B nB oB 6B","804":"E F A B C 2B mB fB","1316":"1B"},F:{"2":"F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","226":"0 1 2 3 4 5 6 7 8","2052":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"lB CC qB DC EC FC","292":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"2052":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2052":"dC"},P:{"2":"I eC fC","2052":"gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"1":"qC"},S:{"1028":"rC"}},B:4,C:"text-decoration styling"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","2052":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB mB I n 0B 1B","1028":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","1060":"0 1 2 3 4 J D E F A B C K L G M N O o p q r s t u v w x y z"},D:{"2":"I n J D E F A B C K L G M N O o p q r s t u","226":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","2052":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D 4B rB 5B 6B","772":"K L G kB 9B AC BC tB uB vB CC lB DC","804":"E F A B C 8B sB jB","1316":"7B"},F:{"2":"0 1 2 3 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","226":"4 5 6 7 8 9 AB BB CB","2052":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"rB JC xB KC LC MC","292":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"2052":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2052":"kC"},P:{"2":"I lC mC","2052":"nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"1":"xC"},S:{"1028":"yC"}},B:4,C:"text-decoration styling"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-emphasis.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-emphasis.js index ee823285094e58..7a1af3ba7ac233 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-emphasis.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-emphasis.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","164":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB","322":"AB"},D:{"1":"i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p","164":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H"},E:{"1":"E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB","164":"D 0B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","164":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB","164":"H bC cC"},J:{"2":"D","164":"A"},K:{"2":"A B C fB pB gB","164":"U"},L:{"164":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"164":"dC"},P:{"164":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"164":"pC"},R:{"164":"qC"},S:{"1":"rC"}},B:4,C:"text-emphasis styling"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"k l X m H","2":"C K L G M N O","164":"P Q R S T U V W Z a b c d e f g h i j"},C:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB 0B 1B","322":"EB"},D:{"1":"k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t","164":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j"},E:{"1":"E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B","164":"D 6B"},F:{"1":"V W","2":"F B C EC FC GC HC jB wB IC kB","164":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB","164":"iC jC"},J:{"2":"D","164":"A"},K:{"2":"A B C jB wB kB","164":"Y"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"164":"kC"},P:{"164":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"164":"wC"},R:{"164":"xC"},S:{"1":"yC"}},B:4,C:"text-emphasis styling"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-overflow.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-overflow.js index 569c191e9d2ae4..288677d88f3c38 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-overflow.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-overflow.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B","2":"rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","8":"sB hB I j J tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S fB pB BC gB","33":"F 7B 8B 9B AC"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"U gB","33":"A B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS3 Text-overflow"}; +module.exports={A:{A:{"1":"J D E F A B","2":"yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","8":"zB mB I n J 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W jB wB IC kB","33":"F EC FC GC HC"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"Y kB","33":"A B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS3 Text-overflow"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-size-adjust.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-size-adjust.js index c12abb7ddb1391..d7f005e0154d71 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-size-adjust.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-size-adjust.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","33":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q s t u v w x y z AB BB CB DB EB FB GB HB IB","258":"r"},E:{"2":"I j J D E F A B C K L G yB lB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","258":"zB"},F:{"1":"8 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 9 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"2":"lB CC qB","33":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"33":"T"},N:{"161":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"CSS text-size-adjust"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","33":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","258":"v"},E:{"2":"I n J D E F A B C K L G 4B rB 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","258":"5B"},F:{"1":"CB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB DB EC FC GC HC jB wB IC kB"},G:{"2":"rB JC xB","33":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"33":"X"},N:{"161":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"CSS text-size-adjust"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-stroke.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-stroke.js index 9c9ef8656d0bee..54dbce00188d74 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-stroke.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-stroke.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L","33":"P Q R S V W X Y Z a b c d e f g T h H i","161":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB tB uB","161":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","450":"DB"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"33":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"33":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","36":"lB"},H:{"2":"WC"},I:{"2":"hB","33":"I H XC YC ZC aC qB bC cC"},J:{"33":"D A"},K:{"2":"A B C fB pB gB","33":"U"},L:{"33":"H"},M:{"161":"T"},N:{"2":"A B"},O:{"33":"dC"},P:{"33":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"33":"pC"},R:{"33":"qC"},S:{"161":"rC"}},B:7,C:"CSS text-stroke and text-fill"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L","33":"P Q R S T U V W Z a b c d e f g h i j k l X m H","161":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB 0B 1B","161":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","450":"HB"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"33":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"33":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","36":"rB"},H:{"2":"dC"},I:{"2":"mB","33":"I H eC fC gC hC xB iC jC"},J:{"33":"D A"},K:{"2":"A B C jB wB kB","33":"Y"},L:{"33":"H"},M:{"161":"X"},N:{"2":"A B"},O:{"33":"kC"},P:{"33":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"33":"wC"},R:{"33":"xC"},S:{"161":"yC"}},B:7,C:"CSS text-stroke and text-fill"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-underline-offset.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-underline-offset.js index 43a45ef606d500..d477464566be41 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-underline-offset.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-underline-offset.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB tB uB","130":"VB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"K L G gB 3B 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"text-underline-offset"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB 0B 1B","130":"ZB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"K L G kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"text-underline-offset"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textcontent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textcontent.js index f136e1ec48268a..2cae7f1b61dd76 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textcontent.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textcontent.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"yB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","16":"F"},G:{"1":"E CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB"},H:{"1":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Node.textContent"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"4B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","16":"F"},G:{"1":"E JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB"},H:{"1":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Node.textContent"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textencoder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textencoder.js index a2ecb4d8a185d0..f58712833b33c2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textencoder.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textencoder.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O tB uB","132":"k"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p 7B 8B 9B AC fB pB BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"TextEncoder & TextDecoder"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O 0B 1B","132":"o"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t EC FC GC HC jB wB IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"TextEncoder & TextDecoder"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-1.js index 64ec75bd75ece2..167073dbde77ff 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-1.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-1.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D rB","66":"E F A"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB","2":"sB hB I j J D E F A B C K L G M N O k l m n tB uB","66":"o","129":"UB VB WB XB YB ZB aB bB cB dB","388":"eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V","2":"I j J D E F A B C K L G M N O k l m","1540":"W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"D E F A B C K 1B 2B mB fB gB","2":"I j J yB lB zB 0B","513":"L G 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB gB","2":"F B C 7B 8B 9B AC fB pB BC","1540":"ZB aB bB cB dB eB P Q R kB S"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"1":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"1":"A","2":"D"},K:{"1":"U gB","2":"A B C fB pB"},L:{"1":"H"},M:{"129":"T"},N:{"1":"B","66":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"TLS 1.1"}; +module.exports={A:{A:{"1":"B","2":"J D yB","66":"E F A"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB","2":"zB mB I n J D E F A B C K L G M N O o p q r 0B 1B","66":"s","129":"YB ZB aB bB cB dB eB fB gB hB","388":"iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T","2":"I n J D E F A B C K L G M N O o p q","1540":"U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"D E F A B C K 7B 8B sB jB kB","2":"I n J 4B rB 5B 6B","513":"L G 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB kB","2":"F B C EC FC GC HC jB wB IC","1540":"dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"1":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"1":"A","2":"D"},K:{"1":"Y kB","2":"A B C jB wB"},L:{"1":"H"},M:{"129":"X"},N:{"1":"B","66":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"TLS 1.1"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-2.js index 83731332ae8f6d..c3df7a8fbcc96d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-2.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-2.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D rB","66":"E F A"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o tB uB","66":"p q r"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t"},E:{"1":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F G 7B","66":"B C 8B 9B AC fB pB BC gB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"1":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"1":"A","2":"D"},K:{"1":"U gB","2":"A B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","66":"A"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"TLS 1.2"}; +module.exports={A:{A:{"1":"B","2":"J D yB","66":"E F A"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s 0B 1B","66":"t u v"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u v w x"},E:{"1":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F G EC","66":"B C FC GC HC jB wB IC kB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"1":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"1":"A","2":"D"},K:{"1":"Y kB","2":"A B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","66":"A"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"TLS 1.2"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-3.js index dcf857d97b28f8..c1b9de6c3c01ea 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-3.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-3.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB tB uB","132":"OB jB PB","450":"GB HB IB JB KB LB MB NB iB"},D:{"1":"WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","706":"JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB"},E:{"1":"L G 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB","1028":"K gB 3B"},F:{"1":"MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB 7B 8B 9B AC fB pB BC gB","706":"JB KB LB"},G:{"1":"OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mB jC kC lC mC nC oC","2":"I eC fC gC hC iC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:6,C:"TLS 1.3"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB 0B 1B","132":"SB oB TB","450":"KB LB MB NB OB PB QB RB nB"},D:{"1":"aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","706":"NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB"},E:{"1":"L G AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB","1028":"K kB 9B"},F:{"1":"QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC GC HC jB wB IC kB","706":"NB OB PB"},G:{"1":"VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"sB qC rC sC tC uC lB vC","2":"I lC mC nC oC pC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:6,C:"TLS 1.3"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/token-binding.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/token-binding.js index 95637ae938d8fb..a7b0f46f70ac46 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/token-binding.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/token-binding.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L","194":"P Q R S V W X Y Z a b c d e f g T h H i","257":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h tB uB","16":"H i"},D:{"2":"0 1 2 3 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","16":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB","194":"NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E yB lB zB 0B 1B","16":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C G M N O k l m n o p q r s t u 7B 8B 9B AC fB pB BC gB","16":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC","16":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"16":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","16":"H"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","16":"U"},L:{"16":"H"},M:{"16":"T"},N:{"2":"A","16":"B"},O:{"16":"dC"},P:{"16":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"16":"pC"},R:{"16":"qC"},S:{"2":"rC"}},B:6,C:"Token Binding"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L","194":"P Q R S T U V W Z a b c d e f g h i j k l X m H","257":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m 0B 1B","16":"H qB"},D:{"2":"0 1 2 3 4 5 6 7 I n J D E F A B C K L G M N O o p q r s t u v w x y z","16":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","194":"RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E 4B rB 5B 6B 7B","16":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C G M N O o p q r s t u v w x y EC FC GC HC jB wB IC kB","16":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC","16":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"16":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","16":"H"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","16":"Y"},L:{"16":"H"},M:{"16":"X"},N:{"2":"A","16":"B"},O:{"16":"kC"},P:{"16":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"16":"wC"},R:{"16":"xC"},S:{"2":"yC"}},B:6,C:"Token Binding"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/touch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/touch.js index 59ccb0b9af1bb6..56fcfca38ba89f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/touch.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/touch.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","8":"A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","578":"C K L G M N O"},C:{"1":"O k l m n o p HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","4":"I j J D E F A B C K L G M N","194":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"8":"A","260":"B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:2,C:"Touch events"}; +module.exports={A:{A:{"2":"J D E F yB","8":"A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","578":"C K L G M N O"},C:{"1":"O o p q r s t LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","4":"I n J D E F A B C K L G M N","194":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"8":"A","260":"B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:2,C:"Touch events"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms2d.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms2d.js index 22fe9456125750..da5e996d29221b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms2d.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms2d.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"rB","8":"J D E","129":"A B","161":"F"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","129":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB","33":"I j J D E F A B C K L G tB uB"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"0 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","33":"I j J D E yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F 7B 8B","33":"B C G M N O k l m n 9B AC fB pB BC"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","33":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","33":"hB I XC YC ZC aC qB bC cC"},J:{"33":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"CSS3 2D Transforms"}; +module.exports={A:{A:{"2":"yB","8":"J D E","129":"A B","161":"F"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","129":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB","33":"I n J D E F A B C K L G 0B 1B"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"0 1 2 3 4 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","33":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F EC FC","33":"B C G M N O o p q r GC HC jB wB IC"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","33":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","33":"mB I eC fC gC hC xB iC jC"},J:{"33":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"CSS3 2D Transforms"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms3d.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms3d.js index caae14d0fd19f2..02ab99dc095285 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms3d.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms3d.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","132":"A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F tB uB","33":"A B C K L G"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B","33":"0 C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"6B","2":"yB lB","33":"I j J D E zB 0B 1B","257":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","33":"G M N O k l m n"},G:{"33":"E lB CC qB DC EC FC GC","257":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"XC YC ZC","33":"hB I aC qB bC cC"},J:{"33":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"CSS3 3D Transforms"}; +module.exports={A:{A:{"2":"J D E F yB","132":"A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F 0B 1B","33":"A B C K L G"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B","33":"0 1 2 3 4 C K L G M N O o p q r s t u v w x y z"},E:{"1":"uB vB CC lB DC","2":"4B rB","33":"I n J D E 5B 6B 7B","257":"F A B C K L G 8B sB jB kB 9B AC BC tB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","33":"G M N O o p q r"},G:{"1":"uB vB lB","33":"E rB JC xB KC LC MC NC","257":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB"},H:{"2":"dC"},I:{"1":"H","2":"eC fC gC","33":"mB I hC xB iC jC"},J:{"33":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"CSS3 3D Transforms"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/trusted-types.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/trusted-types.js index e7f093372c489b..f843d55affd9e5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/trusted-types.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/trusted-types.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O P Q R"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"lC mC nC oC","2":"I eC fC gC hC iC mB jC kC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Trusted Types for DOM manipulation"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O P Q R"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"sC tC uC lB vC","2":"I lC mC nC oC pC sB qC rC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Trusted Types for DOM manipulation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ttf.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ttf.js index d07a377b3de125..5b1bde4564e08b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ttf.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ttf.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","132":"F A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 8B 9B AC fB pB BC gB","2":"F 7B"},G:{"1":"E qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC"},H:{"2":"WC"},I:{"1":"hB I H YC ZC aC qB bC cC","2":"XC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"TTF/OTF - TrueType and OpenType font support"}; +module.exports={A:{A:{"2":"J D E yB","132":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W FC GC HC jB wB IC kB","2":"F EC"},G:{"1":"E xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC"},H:{"2":"dC"},I:{"1":"mB I H fC gC hC xB iC jC","2":"eC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"TTF/OTF - TrueType and OpenType font support"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/typedarrays.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/typedarrays.js index 9de980e1dafd1d..bedda805421403 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/typedarrays.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/typedarrays.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"B","2":"J D E F rB","132":"A"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB","260":"zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"F B 7B 8B 9B AC fB pB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC","260":"qB"},H:{"1":"WC"},I:{"1":"I H aC qB bC cC","2":"hB XC YC ZC"},J:{"1":"A","2":"D"},K:{"1":"C U gB","2":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Typed Arrays"}; +module.exports={A:{A:{"1":"B","2":"J D E F yB","132":"A"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB","260":"5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"F B EC FC GC HC jB wB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC","260":"xB"},H:{"1":"dC"},I:{"1":"I H hC xB iC jC","2":"mB eC fC gC"},J:{"1":"A","2":"D"},K:{"1":"C Y kB","2":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Typed Arrays"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/u2f.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/u2f.js index 825f075265ae4c..ba0739655225cd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/u2f.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/u2f.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","513":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB tB uB","322":"CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB"},D:{"2":"0 1 2 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","130":"3 4 5","513":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"K L G 3B 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB gB"},F:{"2":"0 1 2 3 4 6 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","513":"5 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"322":"rC"}},B:6,C:"FIDO U2F API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","513":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB 0B 1B","322":"GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB"},D:{"2":"0 1 2 3 4 5 6 I n J D E F A B C K L G M N O o p q r s t u v w x y z","130":"7 8 9","513":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"K L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB kB"},F:{"2":"0 1 2 3 4 5 6 7 8 F B C G M N O o p q r s t u v w x y z AB EC FC GC HC jB wB IC kB","513":"9 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"322":"yC"}},B:6,C:"FIDO U2F API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/unhandledrejection.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/unhandledrejection.js index 7a858a2bda4809..66b0178148b043 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/unhandledrejection.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/unhandledrejection.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB tB uB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC","16":"LC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:1,C:"unhandledrejection/rejectionhandled events"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB 0B 1B"},D:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC","16":"SC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:1,C:"unhandledrejection/rejectionhandled events"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js index 846b06a6a8d6a3..023d8972828186 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o p q r s t u 7B 8B 9B AC fB pB BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"Upgrade Insecure Requests"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB 0B 1B"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s t u v w x y EC FC GC HC jB wB IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"Upgrade Insecure Requests"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js index 9cc715d08e84e0..e188e2d9ed0442 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O","66":"P Q R"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB","66":"aB bB cB dB eB P Q"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB 7B 8B 9B AC fB pB BC gB","66":"SB TB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"lC mC nC oC","2":"I eC fC gC hC iC mB jC kC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"URL Scroll-To-Text Fragment"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O","66":"P Q R"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB","66":"eB fB gB hB iB P Q"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB EC FC GC HC jB wB IC kB","66":"WB XB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"sC tC uC lB vC","2":"I lC mC nC oC pC sB qC rC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"URL Scroll-To-Text Fragment"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url.js index fc60f6e89027d0..dddbf030205987 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n","130":"o p q r s t u v w"},E:{"1":"E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB 0B","130":"D"},F:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","130":"G M N O"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC","130":"FC"},H:{"2":"WC"},I:{"1":"H cC","2":"hB I XC YC ZC aC qB","130":"bC"},J:{"2":"D","130":"A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"URL API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u 0B 1B"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r","130":"0 s t u v w x y z"},E:{"1":"E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B 6B","130":"D"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","130":"G M N O"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC","130":"MC"},H:{"2":"dC"},I:{"1":"H jC","2":"mB I eC fC gC hC xB","130":"iC"},J:{"2":"D","130":"A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"URL API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/urlsearchparams.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/urlsearchparams.js index 62fb5354934d7d..3e869853c29637 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/urlsearchparams.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/urlsearchparams.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB","132":"0 1 2 3 4 5 6 7 8 u v w x y z"},D:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB"},E:{"1":"B C K L G mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","2":"I"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:1,C:"URLSearchParams"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B","132":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB"},D:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},E:{"1":"B C K L G sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB"},G:{"1":"RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","2":"I"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:1,C:"URLSearchParams"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/use-strict.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/use-strict.js index 04f49fd12f4226..704fa0ac103871 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/use-strict.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/use-strict.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","132":"j zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"F B 7B 8B 9B AC fB pB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"1":"WC"},I:{"1":"hB I H aC qB bC cC","2":"XC YC ZC"},J:{"1":"D A"},K:{"1":"C U pB gB","2":"A B fB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"ECMAScript 5 Strict Mode"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","132":"n 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"F B EC FC GC HC jB wB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"1":"dC"},I:{"1":"mB I H hC xB iC jC","2":"eC fC gC"},J:{"1":"D A"},K:{"1":"C Y wB kB","2":"A B jB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"ECMAScript 5 Strict Mode"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-select-none.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-select-none.js index d4d35af431bef2..d938cc383cf5c4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-select-none.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-select-none.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","33":"A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","33":"C K L G M N O"},C:{"1":"VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","33":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB tB uB"},D:{"1":"JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","33":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB"},E:{"33":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","33":"0 1 2 3 4 5 G M N O k l m n o p q r s t u v w x y z"},G:{"33":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","33":"hB I XC YC ZC aC qB bC cC"},J:{"33":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"33":"A B"},O:{"2":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","33":"I eC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"33":"rC"}},B:5,C:"CSS user-select: none"}; +module.exports={A:{A:{"2":"J D E F yB","33":"A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","33":"C K L G M N O"},C:{"1":"ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","33":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB 0B 1B"},D:{"1":"NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","33":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"DC","33":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","33":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z"},G:{"33":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","33":"mB I eC fC gC hC xB iC jC"},J:{"33":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"33":"A B"},O:{"2":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","33":"I lC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"33":"yC"}},B:5,C:"CSS user-select: none"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-timing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-timing.js index b94794a5ca225d..a02456a5c687b1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-timing.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-timing.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"User Timing API"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"User Timing API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/variable-fonts.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/variable-fonts.js index 6d4a347b75d7bb..15a8824b783f6b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/variable-fonts.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/variable-fonts.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB tB uB","4609":"PB QB U RB SB TB UB VB WB","4674":"jB","5698":"OB","7490":"IB JB KB LB MB","7746":"NB iB","8705":"XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","4097":"SB","4290":"iB OB jB","6148":"PB QB U RB"},E:{"1":"G 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB","4609":"B C fB gB","8193":"K L 3B 4B"},F:{"1":"JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB 7B 8B 9B AC fB pB BC gB","4097":"IB","6148":"EB FB GB HB"},G:{"1":"PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC","4097":"LC MC NC OC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"4097":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC","4097":"hC iC mB jC kC lC mC nC oC"},Q:{"4097":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"Variable fonts"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 0B 1B","4609":"TB UB Y VB WB XB YB ZB aB","4674":"oB","5698":"SB","7490":"MB NB OB PB QB","7746":"RB nB","8705":"bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","4097":"WB","4290":"nB SB oB","6148":"TB UB Y VB"},E:{"1":"G BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB","4609":"B C jB kB","8193":"K L 9B AC"},F:{"1":"NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB EC FC GC HC jB wB IC kB","4097":"MB","6148":"IB JB KB LB"},G:{"1":"WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC","4097":"SC TC UC VC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"4097":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC","4097":"oC pC sB qC rC sC tC uC lB vC"},Q:{"4097":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"Variable fonts"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vector-effect.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vector-effect.js index a448bbb9d84326..b90c9801a0b7fc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vector-effect.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vector-effect.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","2":"F B 7B 8B 9B AC fB pB"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB"},H:{"1":"WC"},I:{"1":"H bC cC","16":"hB I XC YC ZC aC qB"},J:{"16":"D A"},K:{"1":"C U gB","2":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"SVG vector-effect: non-scaling-stroke"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","2":"F B EC FC GC HC jB wB"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB"},H:{"1":"dC"},I:{"1":"H iC jC","16":"mB I eC fC gC hC xB"},J:{"16":"D A"},K:{"1":"C Y kB","2":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"SVG vector-effect: non-scaling-stroke"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vibration.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vibration.js index c8de7d831646a2..9aaa6699a406cd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vibration.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vibration.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A tB uB","33":"B C K L G"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k l m n o p q r s t u"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"Vibration API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A 0B 1B","33":"B C K L G"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o p q r s t u v w x y"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"Vibration API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/video.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/video.js index f65ca9a8bf4eb1..cc8d94bd78b9cb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/video.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/video.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB","260":"I j J D E F A B C K L G M N O k tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A zB 0B 1B 2B mB","2":"yB lB","513":"B C K L G fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B 8B"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC","513":"LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H ZC aC qB bC cC","132":"XC YC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Video element"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB","260":"I n J D E F A B C K L G M N O o 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A 5B 6B 7B 8B sB","2":"4B rB","513":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC FC"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC","513":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H gC hC xB iC jC","132":"eC fC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Video element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/videotracks.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/videotracks.js index add74cb320bad2..89bfd30f6ea086 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/videotracks.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/videotracks.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O","322":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x tB uB","194":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","322":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J yB lB zB"},F:{"2":"F B C G M N O k l m n o p q r s t u v w 7B 8B 9B AC fB pB BC gB","322":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"322":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"194":"rC"}},B:1,C:"Video Tracks"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O","322":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","194":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB","322":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J 4B rB 5B"},F:{"2":"0 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","322":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"322":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"194":"yC"}},B:1,C:"Video Tracks"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-unit-variants.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-unit-variants.js index 7a61afe6496295..f99b4d5ef08954 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-unit-variants.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-unit-variants.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i","194":"vB wB xB"},E:{"1":"oB 6B","2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"Large, Small, and Dynamic viewport units"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k","194":"l X m H qB 2B 3B"},E:{"1":"uB vB CC lB DC","2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"Large, Small, and Dynamic viewport units"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-units.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-units.js index 27bf4832d9f39d..e271c5294aee89 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-units.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-units.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","132":"F","260":"A B"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","260":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N O k","260":"l m n o p q"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB","260":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC","516":"FC","772":"EC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"260":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"Viewport units: vw, vh, vmin, vmax"}; +module.exports={A:{A:{"2":"J D E yB","132":"F","260":"A B"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","260":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N O o","260":"p q r s t u"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B","260":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC","516":"MC","772":"LC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"260":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"Viewport units: vw, vh, vmin, vmax"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wai-aria.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wai-aria.js index d21916f1ef85ba..b84024776b3bd5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wai-aria.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wai-aria.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D rB","4":"E F A B"},B:{"4":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"4":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"yB lB","4":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F","4":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"4":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"4":"WC"},I:{"2":"hB I XC YC ZC aC qB","4":"H bC cC"},J:{"2":"D A"},K:{"4":"A B C U fB pB gB"},L:{"4":"H"},M:{"4":"T"},N:{"4":"A B"},O:{"2":"dC"},P:{"4":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"4":"pC"},R:{"4":"qC"},S:{"4":"rC"}},B:2,C:"WAI-ARIA Accessibility features"}; +module.exports={A:{A:{"2":"J D yB","4":"E F A B"},B:{"4":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"4":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"4B rB","4":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F","4":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"4":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"4":"dC"},I:{"2":"mB I eC fC gC hC xB","4":"H iC jC"},J:{"2":"D A"},K:{"4":"A B C Y jB wB kB"},L:{"4":"H"},M:{"4":"X"},N:{"4":"A B"},O:{"2":"kC"},P:{"4":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"4":"wC"},R:{"4":"xC"},S:{"4":"yC"}},B:2,C:"WAI-ARIA Accessibility features"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wake-lock.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wake-lock.js index d2bbdda253a90c..17f05e34e0bf13 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wake-lock.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wake-lock.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"b c d e f g T h H i","2":"C K L G M N O","194":"P Q R S V W X Y Z a"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB","194":"XB YB ZB aB bB cB dB eB P Q R S V"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB 7B 8B 9B AC fB pB BC gB","194":"NB OB PB QB U RB SB TB UB VB WB XB YB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"mC nC oC","2":"I eC fC gC hC iC mB jC kC lC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:4,C:"Screen Wake Lock API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"b c d e f g h i j k l X m H","2":"C K L G M N O","194":"P Q R S T U V W Z a"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB","194":"bB cB dB eB fB gB hB iB P Q R S T"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB EC FC GC HC jB wB IC kB","194":"RB SB TB UB Y VB WB XB YB ZB aB bB cB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"tC uC lB vC","2":"I lC mC nC oC pC sB qC rC sC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"Screen Wake Lock API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wasm.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wasm.js index b88bf8e13a4d0a..2afc849ea16cd8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wasm.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wasm.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L","578":"G"},C:{"1":"IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB tB uB","194":"CB DB EB FB GB","1025":"HB"},D:{"1":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB","322":"GB HB IB JB KB LB"},E:{"1":"B C K L G fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","322":"3 4 5 6 7 8"},G:{"1":"LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","2":"I eC fC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"194":"rC"}},B:6,C:"WebAssembly"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L","578":"G"},C:{"1":"MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB 0B 1B","194":"GB HB IB JB KB","1025":"LB"},D:{"1":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","322":"KB LB MB NB OB PB"},E:{"1":"B C K L G jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","322":"7 8 9 AB BB CB"},G:{"1":"SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","2":"I lC mC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"194":"yC"}},B:6,C:"WebAssembly"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wav.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wav.js index aea82308831cf9..fbedff6133daf0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wav.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wav.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 9B AC fB pB BC gB","2":"F 7B 8B"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","16":"A"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"Wav audio format"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W GC HC jB wB IC kB","2":"F EC FC"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","16":"A"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"Wav audio format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wbr-element.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wbr-element.js index 04ede56fc73906..6d60899a3c3b37 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wbr-element.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wbr-element.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D rB","2":"E F A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"yB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","16":"F"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB"},H:{"1":"WC"},I:{"1":"hB I H ZC aC qB bC cC","16":"XC YC"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"wbr (word break opportunity) element"}; +module.exports={A:{A:{"1":"J D yB","2":"E F A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"4B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","16":"F"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB"},H:{"1":"dC"},I:{"1":"mB I H gC hC xB iC jC","16":"eC fC"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"wbr (word break opportunity) element"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-animation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-animation.js index 91db2336d6ea98..b83a625f0f8acc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-animation.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-animation.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"V W X Y Z a b c d e f g T h H i","2":"C K L G M N O","260":"P Q R S"},C:{"1":"R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x tB uB","260":"iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB","516":"CB DB EB FB GB HB IB JB KB LB MB NB","580":"0 1 2 3 4 5 6 7 8 9 y z AB BB","2049":"bB cB dB eB P Q"},D:{"1":"V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","132":"1 2 3","260":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S"},E:{"1":"G 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B mB","1090":"B C K fB gB","2049":"L 3B 4B"},F:{"1":"XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n 7B 8B 9B AC fB pB BC gB","132":"o p q","260":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC","1090":"LC MC NC OC PC QC RC","2049":"SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"260":"dC"},P:{"260":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"260":"pC"},R:{"260":"qC"},S:{"516":"rC"}},B:5,C:"Web Animations API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O","260":"P Q R S"},C:{"1":"R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B","260":"nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB","516":"GB HB IB JB KB LB MB NB OB PB QB RB","580":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB","2049":"fB gB hB iB P Q"},D:{"1":"T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 I n J D E F A B C K L G M N O o p q r s t u v w x y z","132":"5 6 7","260":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S"},E:{"1":"G BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B sB","1090":"B C K jB kB","2049":"L 9B AC"},F:{"1":"bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r EC FC GC HC jB wB IC kB","132":"s t u","260":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC","1090":"SC TC UC VC WC XC YC","2049":"ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"260":"kC"},P:{"260":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"260":"wC"},R:{"260":"xC"},S:{"516":"yC"}},B:5,C:"Web Animations API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-app-manifest.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-app-manifest.js index 0afeb899d78922..7878d31c5ccd27 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-app-manifest.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-app-manifest.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M","130":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB X Y Z a b c d e f g T h H i tB uB","578":"cB dB eB P Q R kB S V W"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC","260":"MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"2":"rC"}},B:5,C:"Add to home screen (A2HS)"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M","130":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB V W Z a b c d e f g h i j k l X m H qB 0B 1B","578":"gB hB iB P Q R pB S T U"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC","260":"TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"2":"yC"}},B:5,C:"Add to home screen (A2HS)"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-bluetooth.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-bluetooth.js index 3bb11aa8cead9e..e7b7bfdc38a80e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-bluetooth.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-bluetooth.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","1025":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","194":"AB BB CB DB EB FB GB HB","706":"IB JB KB","1025":"LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","450":"1 2 3 4","706":"5 6 7","1025":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC cC","1025":"H"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","1025":"U"},L:{"1025":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"fC gC hC iC mB jC kC lC mC nC oC","2":"I eC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Web Bluetooth"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","1025":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB","194":"EB FB GB HB IB JB KB LB","706":"MB NB OB","1025":"PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","450":"5 6 7 8","706":"9 AB BB","1025":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC jC","1025":"H"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","1025":"Y"},L:{"1025":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"mC nC oC pC sB qC rC sC tC uC lB vC","2":"I lC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Web Bluetooth"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-serial.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-serial.js index b24b2ac5ec486a..2749d7a8886026 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-serial.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-serial.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"a b c d e f g T h H i","2":"C K L G M N O","66":"P Q R S V W X Y Z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB","66":"eB P Q R S V W X Y Z"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U 7B 8B 9B AC fB pB BC gB","66":"RB SB TB UB VB WB XB YB ZB aB bB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Web Serial API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"a b c d e f g h i j k l X m H","2":"C K L G M N O","66":"P Q R S T U V W Z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB","66":"iB P Q R S T U V W Z"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y EC FC GC HC jB wB IC kB","66":"VB WB XB YB ZB aB bB cB dB eB fB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Web Serial API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-share.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-share.js index a7e6e7561aa095..17040acc24449e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-share.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-share.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P Q","516":"R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z","130":"O k l m n o p","1028":"a b c d e f g T h H i vB wB xB"},E:{"1":"L G 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB","2049":"K gB 3B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC","2049":"OC PC QC RC SC"},H:{"2":"WC"},I:{"2":"hB I XC YC ZC aC qB bC","258":"H cC"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","258":"U"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I","258":"eC fC gC"},Q:{"2":"pC"},R:{"16":"qC"},S:{"2":"rC"}},B:5,C:"Web Share API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P Q","516":"R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z","130":"O o p q r s t","1028":"a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"L G AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB","2049":"K kB 9B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC","2049":"VC WC XC YC ZC"},H:{"2":"dC"},I:{"2":"mB I eC fC gC hC xB iC","258":"H jC"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","258":"Y"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I","258":"lC mC nC"},Q:{"2":"wC"},R:{"16":"xC"},S:{"2":"yC"}},B:5,C:"Web Share API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webauthn.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webauthn.js index 8b51e4a2201999..e0703af47530c9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webauthn.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webauthn.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"O P Q R S V W X Y Z a b c d e f g T h H i","2":"C","226":"K L G M N"},C:{"1":"OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB tB uB"},D:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB"},E:{"1":"K L G 3B 4B 5B nB oB 6B","2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB","322":"gB"},F:{"1":"JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB 7B 8B 9B AC fB pB BC gB"},G:{"1":"UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC","578":"QC","2052":"TC","3076":"RC SC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:2,C:"Web Authentication API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C","226":"K L G M N"},C:{"1":"SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB 0B 1B"},D:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB"},E:{"1":"K L G 9B AC BC tB uB vB CC lB DC","2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB","322":"kB"},F:{"1":"NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC GC HC jB wB IC kB"},G:{"1":"bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC","578":"XC","2052":"aC","3076":"YC ZC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"vC","2":"I lC mC nC oC pC sB qC rC sC tC uC lB"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:2,C:"Web Authentication API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl.js index d6fd81727b9a4c..0ea79dc59d8f5b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"rB","8":"J D E F A","129":"B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","129":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","129":"I j J D E F A B C K L G M N O k l m n o"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D","129":"E F A B C K L G M N O k l m n o p q r s t u v w x"},E:{"1":"E F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB","129":"J D zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B 7B 8B 9B AC fB pB BC","129":"C G M N O gB"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC FC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"1":"A","2":"D"},K:{"1":"C U gB","2":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"8":"A","129":"B"},O:{"129":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"129":"rC"}},B:6,C:"WebGL - 3D Canvas graphics"}; +module.exports={A:{A:{"2":"yB","8":"J D E F A","129":"B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","129":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","129":"I n J D E F A B C K L G M N O o p q r s"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D","129":"0 1 E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"E F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB","129":"J D 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B EC FC GC HC jB wB IC","129":"C G M N O kB"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC MC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"1":"A","2":"D"},K:{"1":"C Y kB","2":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"8":"A","129":"B"},O:{"129":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"129":"yC"}},B:6,C:"WebGL - 3D Canvas graphics"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl2.js index 37bf1b8635f091..ed7cca16a7d2d7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl2.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl2.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p tB uB","194":"7 8 9","450":"0 1 2 3 4 5 6 q r s t u v w x y z","2242":"AB BB CB DB EB FB"},D:{"1":"LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z","578":"8 9 AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"G 5B nB oB 6B","2":"I j J D E F A yB lB zB 0B 1B 2B","1090":"B C K L mB fB gB 3B 4B"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB"},G:{"1":"VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC","1090":"NC OC PC QC RC SC TC UC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"gC hC iC mB jC kC lC mC nC oC","2":"I eC fC"},Q:{"578":"pC"},R:{"2":"qC"},S:{"2242":"rC"}},B:6,C:"WebGL 2.0"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t 0B 1B","194":"BB CB DB","450":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB","2242":"EB FB GB HB IB JB"},D:{"1":"PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB","578":"CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"1":"G BC tB uB vB CC lB DC","2":"I n J D E F A 4B rB 5B 6B 7B 8B","1090":"B C K L sB jB kB 9B AC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB EC FC GC HC jB wB IC kB"},G:{"1":"cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC","1090":"UC VC WC XC YC ZC aC bC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"nC oC pC sB qC rC sC tC uC lB vC","2":"I lC mC"},Q:{"578":"wC"},R:{"2":"xC"},S:{"2242":"yC"}},B:6,C:"WebGL 2.0"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgpu.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgpu.js index 29d432db11e2e3..2f6441ce540282 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgpu.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgpu.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P","578":"Q R S V W X Y Z a b c d e","1602":"f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB tB uB","194":"QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P","578":"Q R S V W X Y Z a b c d e","1602":"f g T h H i vB wB xB"},E:{"2":"I j J D E F A B yB lB zB 0B 1B 2B mB","322":"C K L G fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB 7B 8B 9B AC fB pB BC gB","578":"ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"194":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"WebGPU"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P","578":"Q R S T U V W Z a b c d e","1602":"f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB 0B 1B","194":"UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P","578":"Q R S T U V W Z a b c d e","1602":"f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B 4B rB 5B 6B 7B 8B sB","322":"C K L G jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB EC FC GC HC jB wB IC kB","578":"dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"194":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:5,C:"WebGPU"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webhid.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webhid.js index 953535bb568eeb..ac438a27b4ba9a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webhid.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webhid.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"a b c d e f g T h H i","2":"C K L G M N O","66":"P Q R S V W X Y Z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB","66":"eB P Q R S V W X Y Z"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"cB dB eB P Q R kB S","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB 7B 8B 9B AC fB pB BC gB","66":"SB TB UB VB WB XB YB ZB aB bB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"WebHID API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"a b c d e f g h i j k l X m H","2":"C K L G M N O","66":"P Q R S T U V W Z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB","66":"iB P Q R S T U V W Z"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB EC FC GC HC jB wB IC kB","66":"WB XB YB ZB aB bB cB dB eB fB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"WebHID API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webkit-user-drag.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webkit-user-drag.js index 1c9968f71f6b16..3b5ce3b027dc75 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webkit-user-drag.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webkit-user-drag.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","132":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"16":"I j J D E F A B C K L G","132":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"F B C 7B 8B 9B AC fB pB BC gB","132":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"CSS -webkit-user-drag property"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","132":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"16":"I n J D E F A B C K L G","132":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"F B C EC FC GC HC jB wB IC kB","132":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"CSS -webkit-user-drag property"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webm.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webm.js index 6a560c93f5cad5..3f5905df70c63e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webm.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webm.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E rB","520":"F A B"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","8":"C K","388":"L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","132":"I j J D E F A B C K L G M N O k l m n o p q r s"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j","132":"J D E F A B C K L G M N O k l m n o p"},E:{"2":"yB","8":"I j lB zB","520":"J D E F A B C 0B 1B 2B mB fB","1028":"K gB 3B","7172":"L","8196":"G 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F 7B 8B 9B","132":"B C G AC fB pB BC gB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC","1028":"OC PC QC RC SC","3076":"TC UC VC nB oB"},H:{"2":"WC"},I:{"1":"H","2":"XC YC","132":"hB I ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"8":"A B"},O:{"1":"dC"},P:{"1":"eC fC gC hC iC mB jC kC lC mC nC oC","132":"I"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:6,C:"WebM video format"}; +module.exports={A:{A:{"2":"J D E yB","520":"F A B"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","8":"C K","388":"L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","132":"I n J D E F A B C K L G M N O o p q r s t u v w"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n","132":"J D E F A B C K L G M N O o p q r s t"},E:{"1":"lB DC","2":"4B","8":"I n rB 5B","520":"J D E F A B C 6B 7B 8B sB jB","1028":"K kB 9B","7172":"L","8196":"G AC BC tB uB vB CC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F EC FC GC","132":"B C G HC jB wB IC kB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC","1028":"VC WC XC YC ZC","3076":"aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"1":"H","2":"eC fC","132":"mB I gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"8":"A B"},O:{"1":"kC"},P:{"1":"lC mC nC oC pC sB qC rC sC tC uC lB vC","132":"I"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:6,C:"WebM video format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webnfc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webnfc.js index e795cfff365842..8198381505712a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webnfc.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webnfc.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O P a b c d e f g T h H i","450":"Q R S V W X Y Z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P a b c d e f g T h H i vB wB xB","450":"Q R S V W X Y Z"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB 7B 8B 9B AC fB pB BC gB","450":"TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"257":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"Web NFC"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O P a b c d e f g h i j k l X m H","450":"Q R S T U V W Z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P a b c d e f g h i j k l X m H qB 2B 3B","450":"Q R S T U V W Z"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB EC FC GC HC jB wB IC kB","450":"XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"257":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"Web NFC"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webp.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webp.js index 76b818c29c33ba..7de4c31b14be95 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webp.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webp.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N"},C:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","8":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U"},D:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j","8":"J D E","132":"F A B C K L G M N O k l m n","260":"o p q r s t u v w"},E:{"2":"I j J D E F A B C K yB lB zB 0B 1B 2B mB fB gB 3B","516":"L G 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F 7B 8B 9B","8":"B AC","132":"fB pB BC","260":"C G M N O gB"},G:{"1":"TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC"},H:{"1":"WC"},I:{"1":"H qB bC cC","2":"hB XC YC ZC","132":"I aC"},J:{"2":"D A"},K:{"1":"C U fB pB gB","2":"A","132":"B"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"8":"rC"}},B:7,C:"WebP image format"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N"},C:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","8":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n","8":"J D E","132":"F A B C K L G M N O o p q r","260":"0 s t u v w x y z"},E:{"1":"lB DC","2":"I n J D E F A B C K 4B rB 5B 6B 7B 8B sB jB kB 9B","516":"L G AC BC tB uB vB CC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F EC FC GC","8":"B HC","132":"jB wB IC","260":"C G M N O kB"},G:{"1":"aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC"},H:{"1":"dC"},I:{"1":"H xB iC jC","2":"mB eC fC gC","132":"I hC"},J:{"2":"D A"},K:{"1":"C Y jB wB kB","2":"A","132":"B"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"8":"yC"}},B:6,C:"WebP image format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/websockets.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/websockets.js index 28ce6ee471fb29..2f9834133e4b52 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/websockets.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/websockets.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB tB uB","132":"I j","292":"J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","132":"I j J D E F A B C K L","260":"G"},E:{"1":"D E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","132":"j zB","260":"J 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F 7B 8B 9B AC","132":"B C fB pB BC"},G:{"1":"E EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC","132":"qB DC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","129":"D"},K:{"1":"U gB","2":"A","132":"B C fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Web Sockets"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB 0B 1B","132":"I n","292":"J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","132":"I n J D E F A B C K L","260":"G"},E:{"1":"D E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","132":"n 5B","260":"J 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F EC FC GC HC","132":"B C jB wB IC"},G:{"1":"E LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC","132":"xB KC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","129":"D"},K:{"1":"Y kB","2":"A","132":"B C jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Web Sockets"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webusb.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webusb.js index f61170575fc440..c4e0e2cc13d0b2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webusb.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webusb.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","66":"JB KB LB MB NB iB OB"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"0 1 2 3 4 5 F B C G M N O k l m n o p q r s t u v w x y z 7B 8B 9B AC fB pB BC gB","66":"6 7 8 9 AB BB CB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"1":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"1":"hC iC mB jC kC lC mC nC oC","2":"I eC fC gC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:7,C:"WebUSB"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","66":"NB OB PB QB RB nB SB"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z EC FC GC HC jB wB IC kB","66":"AB BB CB DB EB FB GB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"1":"oC pC sB qC rC sC tC uC lB vC","2":"I lC mC nC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:7,C:"WebUSB"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvr.js index 8f9b0c0181d2b2..b402c8a42e045a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvr.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvr.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L Q R S V W X Y Z a b c d e f g T h H i","66":"P","257":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB tB uB","129":"KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","194":"JB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB Q R S V W X Y Z a b c d e f g T h H i vB wB xB","66":"MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P"},E:{"2":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 F B C G M N O k l m n o p q r s t u v w x y z TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","66":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C U fB pB gB"},L:{"2":"H"},M:{"2":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"513":"I","516":"eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"2":"pC"},R:{"66":"qC"},S:{"2":"rC"}},B:7,C:"WebVR API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L Q R S T U V W Z a b c d e f g h i j k l X m H","66":"P","257":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB 0B 1B","129":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","194":"NB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","66":"QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P"},E:{"2":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","66":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C Y jB wB kB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"513":"I","516":"lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"66":"xC"},S:{"2":"yC"}},B:7,C:"WebVR API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvtt.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvtt.js index 41791f42c9a9ed..663baa7831a6bb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvtt.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvtt.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"sB hB I j J D E F A B C K L G M N O k l m n o tB uB","66":"p q r s t u v","129":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"1":"0 1 2 3 4 5 6 7 8 9 O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I j J D E F A B C K L G M N"},E:{"1":"J D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB DC EC"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB I XC YC ZC aC qB"},J:{"1":"A","2":"D"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"B","2":"A"},O:{"2":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"129":"rC"}},B:5,C:"WebVTT - Web Video Text Tracks"}; +module.exports={A:{A:{"1":"A B","2":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"zB mB I n J D E F A B C K L G M N O o p q r s 0B 1B","66":"t u v w x y z","129":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB","257":"OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I n J D E F A B C K L G M N"},E:{"1":"J D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB KC LC"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB I eC fC gC hC xB"},J:{"1":"A","2":"D"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"B","2":"A"},O:{"2":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"129":"yC"}},B:5,C:"WebVTT - Web Video Text Tracks"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webworkers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webworkers.js index 709aa549b10105..c742157523838f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webworkers.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webworkers.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","2":"rB","8":"J D E F"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","8":"sB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","8":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S AC fB pB BC gB","2":"F 7B","8":"8B 9B"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"2":"WC"},I:{"1":"H XC bC cC","2":"hB I YC ZC aC qB"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","8":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Web Workers"}; +module.exports={A:{A:{"1":"A B","2":"yB","8":"J D E F"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","8":"zB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","8":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W HC jB wB IC kB","2":"F EC","8":"FC GC"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"2":"dC"},I:{"1":"H eC iC jC","2":"mB I fC gC hC xB"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","8":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Web Workers"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webxr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webxr.js index a9a1f81753d37b..0ca0774db397d5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webxr.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webxr.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"2":"C K L G M N O","132":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"2":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB tB uB","322":"dB eB P Q R kB S V W X Y Z a b c d e f g T h H i"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U","66":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB","132":"P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"2":"I j J D E F A B C yB lB zB 0B 1B 2B mB fB gB","578":"K L G 3B 4B 5B nB oB 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB 7B 8B 9B AC fB pB BC gB","66":"HB IB JB KB LB MB NB OB PB QB U RB","132":"SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S"},G:{"2":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"2":"WC"},I:{"2":"hB I H XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"2":"A B C fB pB gB","132":"U"},L:{"132":"H"},M:{"322":"T"},N:{"2":"A B"},O:{"2":"dC"},P:{"2":"I eC fC gC hC iC mB jC","132":"kC lC mC nC oC"},Q:{"2":"pC"},R:{"2":"qC"},S:{"2":"rC"}},B:5,C:"WebXR Device API"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"2":"C K L G M N O","132":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB 0B 1B","322":"hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y","66":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB","132":"P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"2":"I n J D E F A B C 4B rB 5B 6B 7B 8B sB jB kB","578":"K L G 9B AC BC tB uB vB CC lB DC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB EC FC GC HC jB wB IC kB","66":"LB MB NB OB PB QB RB SB TB UB Y VB","132":"WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W"},G:{"2":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"2":"dC"},I:{"2":"mB I H eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"2":"A B C jB wB kB","132":"Y"},L:{"132":"H"},M:{"322":"X"},N:{"2":"A B"},O:{"2":"kC"},P:{"2":"I lC mC nC oC pC sB qC","132":"rC sC tC uC lB vC"},Q:{"2":"wC"},R:{"2":"xC"},S:{"2":"yC"}},B:4,C:"WebXR Device API"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/will-change.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/will-change.js index 10c8512eca61ca..c82ad662a212d5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/will-change.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/will-change.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"P Q R S V W X Y Z a b c d e f g T h H i","2":"C K L G M N O"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L G M N O k l m n o p q r s t tB uB","194":"0 u v w x y z"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n o 7B 8B 9B AC fB pB BC gB"},G:{"1":"IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"CSS will-change property"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K L G M N O"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L G M N O o p q r s t u v w x 0B 1B","194":"0 1 2 3 4 y z"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r s EC FC GC HC jB wB IC kB"},G:{"1":"PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"CSS will-change property"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff.js index c86a004e341c7e..6a52f9f6860f60 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i uB","2":"sB hB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"I"},E:{"1":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I j yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S fB pB BC gB","2":"F B 7B 8B 9B AC"},G:{"1":"E DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB"},H:{"2":"WC"},I:{"1":"H bC cC","2":"hB XC YC ZC aC qB","130":"I"},J:{"1":"D A"},K:{"1":"B C U fB pB gB","2":"A"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:2,C:"WOFF - Web Open Font Format"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 1B","2":"zB mB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"I"},E:{"1":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I n 4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W jB wB IC kB","2":"F B EC FC GC HC"},G:{"1":"E KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB"},H:{"2":"dC"},I:{"1":"H iC jC","2":"mB eC fC gC hC xB","130":"I"},J:{"1":"D A"},K:{"1":"B C Y jB wB kB","2":"A"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:2,C:"WOFF - Web Open Font Format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff2.js index 933d00293f8b10..aad70f6aa7853b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff2.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff2.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F A B rB"},B:{"1":"L G M N O P Q R S V W X Y Z a b c d e f g T h H i","2":"C K"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"0 1 2 3 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z tB uB"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","2":"0 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"C K L G gB 3B 4B 5B nB oB 6B","2":"I j J D E F yB lB zB 0B 1B 2B","132":"A B mB fB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C G M N O k l m n 7B 8B 9B AC fB pB BC gB"},G:{"1":"JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"E lB CC qB DC EC FC GC HC IC"},H:{"2":"WC"},I:{"1":"H","2":"hB I XC YC ZC aC qB bC cC"},J:{"2":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"2":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"WOFF 2.0 - Web Open Font Format"}; +module.exports={A:{A:{"2":"J D E F A B yB"},B:{"1":"L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H","2":"C K"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"0 1 2 3 4 5 6 7 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z 0B 1B"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","2":"0 1 2 3 4 I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"C K L G kB 9B AC BC tB uB vB CC lB DC","2":"I n J D E F 4B rB 5B 6B 7B 8B","132":"A B sB jB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C G M N O o p q r EC FC GC HC jB wB IC kB"},G:{"1":"QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"E rB JC xB KC LC MC NC OC PC"},H:{"2":"dC"},I:{"1":"H","2":"mB I eC fC gC hC xB iC jC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"2":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"WOFF 2.0 - Web Open Font Format"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/word-break.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/word-break.js index fbe225b80b1e36..870bb7ea787f9f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/word-break.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/word-break.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"J D E F A B rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB I j J D E F A B C K L tB uB"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","4":"0 1 2 3 4 5 6 7 8 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z"},E:{"1":"F A B C K L G 2B mB fB gB 3B 4B 5B nB oB 6B","4":"I j J D E yB lB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","2":"F B C 7B 8B 9B AC fB pB BC gB","4":"G M N O k l m n o p q r s t u v"},G:{"1":"HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","4":"E lB CC qB DC EC FC GC"},H:{"2":"WC"},I:{"1":"H","4":"hB I XC YC ZC aC qB bC cC"},J:{"4":"D A"},K:{"1":"U","2":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"4":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"4":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:5,C:"CSS3 word-break"}; +module.exports={A:{A:{"1":"J D E F A B yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB I n J D E F A B C K L 0B 1B"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","4":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB"},E:{"1":"F A B C K L G 8B sB jB kB 9B AC BC tB uB vB CC lB DC","4":"I n J D E 4B rB 5B 6B 7B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","2":"F B C EC FC GC HC jB wB IC kB","4":"G M N O o p q r s t u v w x y z"},G:{"1":"OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","4":"E rB JC xB KC LC MC NC"},H:{"2":"dC"},I:{"1":"H","4":"mB I eC fC gC hC xB iC jC"},J:{"4":"D A"},K:{"1":"Y","2":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"4":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"4":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:5,C:"CSS3 word-break"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wordwrap.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wordwrap.js index 07e587221be632..fd1b31ffb2c2c1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wordwrap.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wordwrap.js @@ -1 +1 @@ -module.exports={A:{A:{"4":"J D E F A B rB"},B:{"1":"O P Q R S V W X Y Z a b c d e f g T h H i","4":"C K L G M N"},C:{"1":"EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB","4":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","4":"I j J D E F A B C K L G M N O k l m n"},E:{"1":"D E F A B C K L G 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","4":"I j J yB lB zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F 7B 8B","4":"B C 9B AC fB pB BC"},G:{"1":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","4":"lB CC qB DC EC"},H:{"4":"WC"},I:{"1":"H bC cC","4":"hB I XC YC ZC aC qB"},J:{"1":"A","4":"D"},K:{"1":"U","4":"A B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"4":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"4":"rC"}},B:5,C:"CSS3 Overflow-wrap"}; +module.exports={A:{A:{"4":"J D E F A B yB"},B:{"1":"O P Q R S T U V W Z a b c d e f g h i j k l X m H","4":"C K L G M N"},C:{"1":"IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB","4":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","4":"I n J D E F A B C K L G M N O o p q r"},E:{"1":"D E F A B C K L G 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","4":"I n J 4B rB 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F EC FC","4":"B C GC HC jB wB IC"},G:{"1":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","4":"rB JC xB KC LC"},H:{"4":"dC"},I:{"1":"H iC jC","4":"mB I eC fC gC hC xB"},J:{"1":"A","4":"D"},K:{"1":"Y","4":"A B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"4":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"4":"yC"}},B:5,C:"CSS3 Overflow-wrap"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-doc-messaging.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-doc-messaging.js index d57b5832efb671..58704dc74a6049 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-doc-messaging.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-doc-messaging.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D rB","132":"E F","260":"A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB","2":"sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"yB lB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB","2":"F"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"4":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"Cross-document messaging"}; +module.exports={A:{A:{"2":"J D yB","132":"E F","260":"A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B","2":"zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"4B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB","2":"F"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"4":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"Cross-document messaging"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-frame-options.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-frame-options.js index 8aab95756361dd..4402867bd73592 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-frame-options.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-frame-options.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"E F A B","2":"J D rB"},B:{"1":"C K L G M N O","4":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB","4":"I j J D E F A B C K L G M N WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","16":"sB hB tB uB"},D:{"4":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J D E F A B C K L G M N O k l m n o p q"},E:{"4":"J D E F A B C K L G zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B","16":"I j yB lB"},F:{"4":"0 1 2 3 4 5 6 7 8 9 C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S BC gB","16":"F B 7B 8B 9B AC fB pB"},G:{"4":"E FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","16":"lB CC qB DC EC"},H:{"2":"WC"},I:{"4":"I H aC qB bC cC","16":"hB XC YC ZC"},J:{"4":"D A"},K:{"4":"U gB","16":"A B C fB pB"},L:{"4":"H"},M:{"4":"T"},N:{"1":"A B"},O:{"4":"dC"},P:{"4":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"4":"pC"},R:{"4":"qC"},S:{"1":"rC"}},B:6,C:"X-Frame-Options HTTP header"}; +module.exports={A:{A:{"1":"E F A B","2":"J D yB"},B:{"1":"C K L G M N O","4":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB","4":"I n J D E F A B C K L G M N aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","16":"zB mB 0B 1B"},D:{"4":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J D E F A B C K L G M N O o p q r s t u"},E:{"4":"J D E F A B C K L G 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","16":"I n 4B rB"},F:{"4":"0 1 2 3 4 5 6 7 8 9 C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W IC kB","16":"F B EC FC GC HC jB wB"},G:{"4":"E MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","16":"rB JC xB KC LC"},H:{"2":"dC"},I:{"4":"I H hC xB iC jC","16":"mB eC fC gC"},J:{"4":"D A"},K:{"4":"Y kB","16":"A B C jB wB"},L:{"4":"H"},M:{"4":"X"},N:{"1":"A B"},O:{"4":"kC"},P:{"4":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"4":"wC"},R:{"4":"xC"},S:{"1":"yC"}},B:6,C:"X-Frame-Options HTTP header"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhr2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhr2.js index 5e439d41399edd..3d13f17d4c6c91 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhr2.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhr2.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"J D E F rB","132":"A B"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","2":"sB hB","260":"A B","388":"J D E F","900":"I j tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","16":"I j J","132":"u v","388":"D E F A B C K L G M N O k l m n o p q r s t"},E:{"1":"E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","2":"I yB lB","132":"D 0B","388":"j J zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S gB","2":"F B 7B 8B 9B AC fB pB BC","132":"G M N"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","2":"lB CC qB","132":"FC","388":"DC EC"},H:{"2":"WC"},I:{"1":"H cC","2":"XC YC ZC","388":"bC","900":"hB I aC qB"},J:{"132":"A","388":"D"},K:{"1":"C U gB","2":"A B fB pB"},L:{"1":"H"},M:{"1":"T"},N:{"132":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:1,C:"XMLHttpRequest advanced features"}; +module.exports={A:{A:{"2":"J D E F yB","132":"A B"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","2":"zB mB","260":"A B","388":"J D E F","900":"I n 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","16":"I n J","132":"y z","388":"D E F A B C K L G M N O o p q r s t u v w x"},E:{"1":"E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","2":"I 4B rB","132":"D 6B","388":"n J 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W kB","2":"F B EC FC GC HC jB wB IC","132":"G M N"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","2":"rB JC xB","132":"MC","388":"KC LC"},H:{"2":"dC"},I:{"1":"H jC","2":"eC fC gC","388":"iC","900":"mB I hC xB"},J:{"132":"A","388":"D"},K:{"1":"C Y kB","2":"A B jB wB"},L:{"1":"H"},M:{"1":"X"},N:{"132":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:1,C:"XMLHttpRequest advanced features"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtml.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtml.js index e758e00d38a4f8..7f2a31c71e92e1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtml.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtml.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"F A B","2":"J D E rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"1":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"1":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"1":"WC"},I:{"1":"hB I H XC YC ZC aC qB bC cC"},J:{"1":"D A"},K:{"1":"A B C U fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"2":"qC"},S:{"1":"rC"}},B:1,C:"XHTML served as application/xhtml+xml"}; +module.exports={A:{A:{"1":"F A B","2":"J D E yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"1":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"1":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"1":"dC"},I:{"1":"mB I H eC fC gC hC xB iC jC"},J:{"1":"D A"},K:{"1":"A B C Y jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"2":"xC"},S:{"1":"yC"}},B:1,C:"XHTML served as application/xhtml+xml"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtmlsmil.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtmlsmil.js index 35819edf04add7..9bb2bde823c7e8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtmlsmil.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtmlsmil.js @@ -1 +1 @@ -module.exports={A:{A:{"2":"F A B rB","4":"J D E"},B:{"2":"C K L G M N O","8":"P Q R S V W X Y Z a b c d e f g T h H i"},C:{"8":"0 1 2 3 4 5 6 7 8 9 sB hB I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i tB uB"},D:{"8":"0 1 2 3 4 5 6 7 8 9 I j J D E F A B C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB"},E:{"8":"I j J D E F A B C K L G yB lB zB 0B 1B 2B mB fB gB 3B 4B 5B nB oB 6B"},F:{"8":"0 1 2 3 4 5 6 7 8 9 F B C G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S 7B 8B 9B AC fB pB BC gB"},G:{"8":"E lB CC qB DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB"},H:{"8":"WC"},I:{"8":"hB I H XC YC ZC aC qB bC cC"},J:{"8":"D A"},K:{"8":"A B C U fB pB gB"},L:{"8":"H"},M:{"8":"T"},N:{"2":"A B"},O:{"8":"dC"},P:{"8":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"8":"pC"},R:{"8":"qC"},S:{"8":"rC"}},B:7,C:"XHTML+SMIL animation"}; +module.exports={A:{A:{"2":"F A B yB","4":"J D E"},B:{"2":"C K L G M N O","8":"P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"8":"0 1 2 3 4 5 6 7 8 9 zB mB I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB 0B 1B"},D:{"8":"0 1 2 3 4 5 6 7 8 9 I n J D E F A B C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B"},E:{"8":"I n J D E F A B C K L G 4B rB 5B 6B 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC"},F:{"8":"0 1 2 3 4 5 6 7 8 9 F B C G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W EC FC GC HC jB wB IC kB"},G:{"8":"E rB JC xB KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB"},H:{"8":"dC"},I:{"8":"mB I H eC fC gC hC xB iC jC"},J:{"8":"D A"},K:{"8":"A B C Y jB wB kB"},L:{"8":"H"},M:{"8":"X"},N:{"2":"A B"},O:{"8":"kC"},P:{"8":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"8":"wC"},R:{"8":"xC"},S:{"8":"yC"}},B:7,C:"XHTML+SMIL animation"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xml-serializer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xml-serializer.js index 0c515f129e49fa..1078bda8975596 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xml-serializer.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xml-serializer.js @@ -1 +1 @@ -module.exports={A:{A:{"1":"A B","260":"J D E F rB"},B:{"1":"C K L G M N O P Q R S V W X Y Z a b c d e f g T h H i"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S V W X Y Z a b c d e f g T h H i","132":"B","260":"sB hB I j J D tB uB","516":"E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB iB OB jB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R S V W X Y Z a b c d e f g T h H i vB wB xB","132":"I j J D E F A B C K L G M N O k l m n o p q r s t u v"},E:{"1":"E F A B C K L G 1B 2B mB fB gB 3B 4B 5B nB oB 6B","132":"I j J D yB lB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 O k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB U RB SB TB UB VB WB XB YB ZB aB bB cB dB eB P Q R kB S","16":"F 7B","132":"B C G M N 8B 9B AC fB pB BC gB"},G:{"1":"E GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC nB oB","132":"lB CC qB DC EC FC"},H:{"132":"WC"},I:{"1":"H bC cC","132":"hB I XC YC ZC aC qB"},J:{"132":"D A"},K:{"1":"U","16":"A","132":"B C fB pB gB"},L:{"1":"H"},M:{"1":"T"},N:{"1":"A B"},O:{"1":"dC"},P:{"1":"I eC fC gC hC iC mB jC kC lC mC nC oC"},Q:{"1":"pC"},R:{"1":"qC"},S:{"1":"rC"}},B:4,C:"DOM Parsing and Serialization"}; +module.exports={A:{A:{"1":"A B","260":"J D E F yB"},B:{"1":"C K L G M N O P Q R S T U V W Z a b c d e f g h i j k l X m H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W Z a b c d e f g h i j k l X m H qB","132":"B","260":"zB mB I n J D 0B 1B","516":"E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB nB SB oB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R S T U V W Z a b c d e f g h i j k l X m H qB 2B 3B","132":"I n J D E F A B C K L G M N O o p q r s t u v w x y z"},E:{"1":"E F A B C K L G 7B 8B sB jB kB 9B AC BC tB uB vB CC lB DC","132":"I n J D 4B rB 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 O o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB Y VB WB XB YB ZB aB bB cB dB eB fB gB hB iB P Q R pB S T U V W","16":"F EC","132":"B C G M N FC GC HC jB wB IC kB"},G:{"1":"E NC OC PC QC RC SC TC UC VC WC XC YC ZC aC bC cC tB uB vB lB","132":"rB JC xB KC LC MC"},H:{"132":"dC"},I:{"1":"H iC jC","132":"mB I eC fC gC hC xB"},J:{"132":"D A"},K:{"1":"Y","16":"A","132":"B C jB wB kB"},L:{"1":"H"},M:{"1":"X"},N:{"1":"A B"},O:{"1":"kC"},P:{"1":"I lC mC nC oC pC sB qC rC sC tC uC lB vC"},Q:{"1":"wC"},R:{"1":"xC"},S:{"1":"yC"}},B:4,C:"DOM Parsing and Serialization"}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AD.js index bf8d330c6418f8..d9168b66ecb0dd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AD.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AD.js @@ -1 +1 @@ -module.exports={C:{"52":0.02665,"68":0.00381,"72":0.03046,"77":0.00381,"78":0.07614,"88":0.01142,"90":0.02284,"91":0.02284,"92":0.01523,"94":0.01904,"95":0.03046,"96":0.68145,"97":0.9251,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 79 80 81 82 83 84 85 86 87 89 93 98 99 3.5 3.6"},D:{"39":0.00381,"40":0.00381,"49":0.25126,"56":0.00761,"61":0.00761,"67":0.00381,"68":0.01142,"69":0.00381,"70":0.01904,"75":0.00761,"77":0.01523,"79":0.12182,"80":0.03426,"81":0.01904,"83":0.00761,"85":0.03046,"86":0.01142,"87":0.01523,"88":0.00761,"89":0.03046,"90":0.01142,"91":0.20939,"92":0.06472,"94":0.04949,"95":0.01904,"96":0.23603,"97":5.36026,"98":12.37656,"99":0.06472,"101":0.01142,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 62 63 64 65 66 71 72 73 74 76 78 84 93 100"},F:{"36":0.00381,"57":0.06091,"82":0.25507,"83":0.60151,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00381,"87":0.01142,"90":0.00381,"92":0.00381,"95":0.00761,"96":0.03426,"97":0.43019,"98":1.73219,_:"12 13 14 16 17 18 79 80 81 83 84 85 86 88 89 91 93 94"},E:{"4":0,"12":0.00761,"13":0.02665,"14":0.23603,"15":0.39974,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01142,"11.1":0.01523,"12.1":0.1104,"13.1":0.3274,"14.1":1.43143,"15.1":1.86924,"15.2-15.3":4.71687,"15.4":0.11802},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.02988,"9.0-9.2":0,"9.3":0.05603,"10.0-10.2":0,"10.3":0.0747,"11.0-11.2":0,"11.3-11.4":0.01494,"12.0-12.1":0.00374,"12.2-12.5":0.33243,"13.0-13.1":0.01121,"13.2":0.00374,"13.3":0.04482,"13.4-13.7":0.24652,"14.0-14.4":0.34363,"14.5-14.8":2.84992,"15.0-15.1":6.7793,"15.2-15.3":26.34403,"15.4":0.19049},P:{"4":0.05226,"5.0-5.4":0.35318,"6.2-6.4":0.02066,"7.2-7.4":0.01067,"8.2":0.01248,"9.2":0.01067,"10.1":0.02066,"11.1-11.2":0.0209,"12.0":0.02135,"13.0":0.17768,"14.0":0.03136,"15.0":0.0209,"16.0":1.1706},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.0014,"4.4":0,"4.4.3-4.4.4":0.02337},A:{"11":0.14467,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.17338},Q:{"10.4":0},O:{"0":0},H:{"0":0.10552},L:{"0":21.49973},S:{"2.5":0}}; +module.exports={C:{"52":0.01603,"72":0.00802,"78":0.06814,"84":0.02004,"89":0.00401,"90":0.06413,"91":0.03607,"95":0.00401,"96":0.00401,"97":0.01202,"98":0.01202,"99":0.01603,"100":0.32465,"101":1.71943,"102":0.03607,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 87 88 92 93 94 103 104 3.5 3.6"},D:{"33":0.00802,"43":0.00802,"49":0.28457,"67":0.00802,"70":0.01202,"79":0.1002,"81":0.00802,"83":0.00401,"84":0.01603,"86":0.00401,"87":0.0521,"88":0.01603,"89":0.01202,"90":0.00802,"91":0.02004,"92":0.06413,"94":0.01202,"95":0.02004,"96":0.02405,"97":0.05611,"98":0.01603,"99":0.09218,"100":0.3006,"101":0.86573,"102":15.79553,"103":1.08216,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 71 72 73 74 75 76 77 78 80 85 93 104 105 106"},F:{"48":0.00401,"75":0.00802,"85":0.09619,"86":0.17234,"87":0.76553,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"87":0.01603,"92":0.01202,"100":0.01202,"101":0.23246,"102":1.61923,"103":0.33266,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 88 89 90 91 93 94 95 96 97 98 99"},E:{"4":0,"12":0.04008,"13":0.00802,"14":0.09218,"15":0.0481,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00401,"11.1":0.01202,"12.1":0.02405,"13.1":0.3527,"14.1":0.69338,"15.1":0.55711,"15.2-15.3":0.39278,"15.4":2.92183,"15.5":8.21239,"16.0":0.07214},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.04301,"9.0-9.2":0,"9.3":0.05474,"10.0-10.2":0,"10.3":0.05083,"11.0-11.2":0,"11.3-11.4":0.14076,"12.0-12.1":0,"12.2-12.5":0.45746,"13.0-13.1":0,"13.2":0.01173,"13.3":0.02346,"13.4-13.7":0.1955,"14.0-14.4":0.17595,"14.5-14.8":0.79371,"15.0-15.1":0.84454,"15.2-15.3":2.52581,"15.4":7.56569,"15.5":25.94621,"16.0":0.14858},P:{"4":0.0661,"5.0-5.4":0.24229,"6.2-6.4":0.0105,"7.2-7.4":0.14322,"8.2":0.03029,"9.2":0.04201,"10.1":0.02245,"11.1-11.2":0.04407,"12.0":0.02101,"13.0":0.09452,"14.0":0.01126,"15.0":0.05251,"16.0":0.01126,"17.0":0.81038},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.02397},A:{"11":0.04008,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02397},H:{"0":0.08509},L:{"0":19.96242},S:{"2.5":0},R:{_:"0"},M:{"0":0.25166}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AE.js index ca70f79a3e16a8..376d57f9591f1c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AE.js @@ -1 +1 @@ -module.exports={C:{"52":0.01711,"68":0.01711,"78":0.01141,"84":0.0057,"91":0.01141,"94":0.0057,"95":0.01141,"96":0.23386,"97":0.35365,"98":0.01711,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 89 90 92 93 99 3.5 3.6"},D:{"35":0.33083,"38":0.01711,"49":0.02282,"64":0.01141,"65":0.01711,"67":0.0057,"69":0.01141,"70":0.01141,"72":0.0057,"75":0.01711,"76":0.03422,"77":0.01141,"78":0.0057,"79":0.05704,"80":0.02282,"81":0.01141,"83":0.01141,"84":0.05134,"85":0.02852,"86":0.03422,"87":0.11408,"88":0.01141,"89":0.03993,"90":0.03422,"91":0.15401,"92":0.07415,"93":0.2852,"94":0.10838,"95":0.06845,"96":0.80997,"97":14.85322,"98":29.88326,"99":0.03422,"100":0.03993,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 66 68 71 73 74 101"},F:{"28":0.0057,"82":0.1426,"83":0.4221,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01711,"84":0.0057,"92":0.02282,"93":0.0057,"94":0.0057,"95":0.01711,"96":0.07415,"97":1.32903,"98":3.33684,_:"12 13 14 15 16 17 79 80 81 83 85 86 87 88 89 90 91"},E:{"4":0,"12":0.0057,"13":0.03422,"14":0.18823,"15":0.17112,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01141,"12.1":0.03993,"13.1":0.11978,"14.1":0.68448,"15.1":0.32513,"15.2-15.3":0.59892,"15.4":0.01141},G:{"8":0.00181,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00632,"6.0-6.1":0.0009,"7.0-7.1":0.01174,"8.1-8.4":0.00271,"9.0-9.2":0,"9.3":0.08577,"10.0-10.2":0.00271,"10.3":0.05236,"11.0-11.2":0.07313,"11.3-11.4":0.01174,"12.0-12.1":0.01174,"12.2-12.5":0.30785,"13.0-13.1":0.02438,"13.2":0.00451,"13.3":0.03521,"13.4-13.7":0.11556,"14.0-14.4":0.45862,"14.5-14.8":1.66926,"15.0-15.1":1.41197,"15.2-15.3":4.6873,"15.4":0.04604},P:{"4":0.04366,"5.0-5.4":0.0102,"6.2-6.4":0.01085,"7.2-7.4":0.03275,"8.2":0.02073,"9.2":0.0217,"10.1":0.11002,"11.1-11.2":0.03275,"12.0":0.01085,"13.0":0.03275,"14.0":0.06549,"15.0":0.04366,"16.0":1.48452},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00229,"4.4":0,"4.4.3-4.4.4":0.01489},A:{"11":0.12549,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.0043},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.07733},Q:{"10.4":0},O:{"0":2.93417},H:{"0":0.57347},L:{"0":27.90141},S:{"2.5":0}}; +module.exports={C:{"34":0.00362,"52":0.01447,"68":0.05426,"77":0.00362,"78":0.01809,"79":0.01085,"81":0.00723,"82":0.00362,"83":0.00362,"84":0.00723,"91":0.01809,"94":0.00362,"98":0.00723,"99":0.01809,"100":0.13021,"101":0.74872,"102":0.02894,"103":0.00362,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 80 85 86 87 88 89 90 92 93 95 96 97 104 3.5 3.6"},D:{"35":0.50276,"38":0.02894,"41":0.00362,"49":0.02532,"56":0.00723,"58":0.00362,"63":0.00362,"65":0.01085,"66":0.00362,"67":0.00362,"68":0.00362,"69":0.01085,"72":0.00723,"73":0.00362,"74":0.00723,"75":0.01809,"76":0.04702,"78":0.01085,"79":0.07234,"80":0.0217,"81":0.01447,"83":0.03617,"84":0.10489,"85":0.08681,"86":0.09043,"87":0.26042,"88":0.00723,"89":0.01809,"90":0.01809,"91":0.08319,"92":0.05064,"93":0.07234,"94":0.02532,"95":0.02532,"96":0.05787,"97":0.06872,"98":0.06511,"99":0.11936,"100":0.3617,"101":1.58425,"102":20.37456,"103":1.72531,"104":0.01085,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 40 42 43 44 45 46 47 48 50 51 52 53 54 55 57 59 60 61 62 64 70 71 77 105 106"},F:{"28":0.01447,"36":0.00723,"46":0.01085,"71":0.00362,"84":0.01085,"85":0.02532,"86":0.31106,"87":0.43404,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00362,"18":0.01447,"81":0.00362,"84":0.00362,"85":0.00362,"86":0.00362,"89":0.00362,"92":0.01085,"96":0.00723,"98":0.00723,"99":0.01085,"100":0.0217,"101":0.34362,"102":2.08339,"103":0.36532,_:"12 13 14 15 16 79 80 83 87 88 90 91 93 94 95 97"},E:{"4":0,"12":0.00723,"13":0.03255,"14":0.15191,"15":0.06872,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00723,"11.1":0.01447,"12.1":0.05064,"13.1":0.15191,"14.1":0.59681,"15.1":0.10489,"15.2-15.3":0.10128,"15.4":0.60042,"15.5":1.43957,"16.0":0.00723},G:{"8":0.00138,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00413,"6.0-6.1":0,"7.0-7.1":0.00827,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.13362,"10.0-10.2":0.00964,"10.3":0.09918,"11.0-11.2":0.01929,"11.3-11.4":0.0124,"12.0-12.1":0.01378,"12.2-12.5":0.42565,"13.0-13.1":0.01102,"13.2":0.00689,"13.3":0.03168,"13.4-13.7":0.11433,"14.0-14.4":0.38157,"14.5-14.8":1.03313,"15.0-15.1":0.38432,"15.2-15.3":0.61437,"15.4":2.04284,"15.5":8.31874,"16.0":0.0551},P:{"4":0.12366,"5.0-5.4":0.01045,"6.2-6.4":0.0107,"7.2-7.4":0.04122,"8.2":0.02141,"9.2":0.01095,"10.1":0.07086,"11.1-11.2":0.02061,"12.0":0.01031,"13.0":0.03092,"14.0":0.05153,"15.0":0.03092,"16.0":0.1855,"17.0":2.01985},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00269,"4.4":0,"4.4.3-4.4.4":0.02284},A:{"11":0.11936,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":2.86552},H:{"0":0.54379},L:{"0":45.02051},S:{"2.5":0},R:{_:"0"},M:{"0":0.12126}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AF.js index 25875025dcab56..ca23f19cfe3fd8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AF.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AF.js @@ -1 +1 @@ -module.exports={C:{"6":0.00238,"25":0.00475,"29":0.0095,"30":0.00238,"37":0.00238,"38":0.01188,"40":0.00713,"41":0.00238,"43":0.00238,"44":0.00475,"45":0.00238,"47":0.01663,"48":0.02138,"49":0.00475,"50":0.01188,"52":0.00713,"56":0.01901,"57":0.00238,"60":0.00238,"63":0.00475,"64":0.00238,"65":0.00238,"71":0.00238,"72":0.01663,"78":0.01901,"83":0.00238,"85":0.00475,"86":0.00238,"87":0.00475,"88":0.03326,"89":0.04039,"90":0.00475,"91":0.01901,"93":0.00713,"94":0.01663,"95":0.02138,"96":0.44194,"97":0.65102,"98":0.01663,_:"2 3 4 5 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 31 32 33 34 35 36 39 42 46 51 53 54 55 58 59 61 62 66 67 68 69 70 73 74 75 76 77 79 80 81 82 84 92 99 3.5 3.6"},D:{"18":0.00238,"23":0.00238,"24":0.00475,"25":0.00238,"26":0.00238,"29":0.00238,"30":0.0095,"34":0.00713,"36":0.00475,"37":0.00713,"38":0.00713,"39":0.00713,"42":0.00238,"43":0.05702,"44":0.00238,"45":0.00475,"46":0.00238,"47":0.01901,"48":0.00238,"49":0.00475,"50":0.00475,"51":0.01188,"52":0.01426,"53":0.00475,"55":0.0095,"56":0.00713,"57":0.00713,"58":0.00238,"59":0.00238,"60":0.00475,"62":0.02138,"63":0.02138,"64":0.01188,"65":0.01426,"66":0.0095,"67":0.01663,"68":0.00475,"69":0.00475,"70":0.01426,"71":0.01663,"72":0.03089,"73":0.01426,"74":0.01663,"75":0.00713,"76":0.01663,"77":0.10692,"78":0.02614,"79":0.02376,"80":0.03564,"81":0.06653,"83":0.07603,"84":0.03564,"85":0.02376,"86":0.05227,"87":0.06653,"88":0.02138,"89":0.02614,"90":0.02614,"91":0.04039,"92":0.07128,"93":0.39204,"94":0.11642,"95":0.06653,"96":0.4847,"97":3.7921,"98":9.57766,"99":0.03802,"100":0.02138,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 27 28 31 32 33 35 40 41 54 61 101"},F:{"38":0.00713,"74":0.00238,"79":0.00713,"82":0.04514,"83":0.81972,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02376,"13":0.01901,"14":0.01426,"15":0.0095,"16":0.04277,"17":0.02138,"18":0.1093,"81":0.01426,"84":0.03089,"85":0.00713,"89":0.04277,"90":0.02614,"91":0.00713,"92":0.03089,"93":0.01901,"94":0.00475,"95":0.01426,"96":0.04277,"97":0.30413,"98":0.8411,_:"79 80 83 86 87 88"},E:{"4":0,"10":0.00238,"13":0.0095,"14":0.03802,"15":0.00475,_:"0 5 6 7 8 9 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1","5.1":0.00238,"12.1":0.0095,"13.1":0.00713,"14.1":0.03089,"15.1":0.21622,"15.2-15.3":0.44194,"15.4":0.07841},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00607,"7.0-7.1":0.08254,"8.1-8.4":0,"9.0-9.2":0.00243,"9.3":0.04855,"10.0-10.2":0.0085,"10.3":0.08011,"11.0-11.2":0.02913,"11.3-11.4":0.05098,"12.0-12.1":0.07526,"12.2-12.5":0.84725,"13.0-13.1":0.04248,"13.2":0.04491,"13.3":0.11895,"13.4-13.7":0.24883,"14.0-14.4":1.26845,"14.5-14.8":0.99898,"15.0-15.1":2.13633,"15.2-15.3":5.84335,"15.4":0.20271},P:{"4":1.2008,"5.0-5.4":0.35318,"6.2-6.4":0.35318,"7.2-7.4":0.59536,"8.2":0.03027,"9.2":0.29263,"10.1":0.02018,"11.1-11.2":0.25227,"12.0":0.10091,"13.0":0.28254,"14.0":0.30272,"15.0":0.37336,"16.0":1.79616},I:{"0":0,"3":0,"4":0.00023,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00114,"4.2-4.3":0.00916,"4.4":0,"4.4.3-4.4.4":0.0657},A:{"8":0.00238,"9":0.02138,"10":0.00238,"11":0.50846,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00762},N:{_:"10 11"},R:{_:"0"},M:{"0":0.0991},Q:{"10.4":0},O:{"0":2.07346},H:{"0":1.15471},L:{"0":55.2317},S:{"2.5":0}}; +module.exports={C:{"28":0.01403,"29":0.00234,"33":0.00234,"36":0.00234,"38":0.0117,"39":0.00234,"41":0.00468,"43":0.00702,"44":0.00936,"45":0.00234,"47":0.00702,"48":0.00702,"49":0.00234,"50":0.15204,"52":0.00234,"56":0.00702,"57":0.00468,"60":0.00234,"68":0.00234,"70":0.00234,"72":0.00936,"74":0.00234,"78":0.00468,"85":0.00468,"87":0.00234,"89":0.00936,"91":0.01403,"94":0.0117,"96":0.03041,"97":0.00468,"98":0.03041,"99":0.03976,"100":0.1918,"101":1.09231,"102":0.07953,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 30 31 32 34 35 37 40 42 46 51 53 54 55 58 59 61 62 63 64 65 66 67 69 71 73 75 76 77 79 80 81 82 83 84 86 88 90 92 93 95 103 104 3.5 3.6"},D:{"18":0.00234,"28":0.00468,"29":0.00234,"32":0.00702,"34":0.00936,"36":0.00468,"37":0.00468,"38":0.00468,"39":0.00234,"43":0.03976,"44":0.00702,"46":0.00234,"47":0.03275,"48":0.00936,"49":0.01637,"50":0.00234,"51":0.00702,"52":0.00468,"54":0.00936,"55":0.00234,"56":0.00468,"57":0.00468,"58":0.00468,"59":0.0117,"61":0.02105,"62":0.02339,"63":0.0117,"64":0.00936,"65":0.02105,"66":0.00468,"67":0.00468,"68":0.00936,"69":0.00468,"70":0.00936,"71":0.01871,"72":0.02339,"73":0.00702,"74":0.00468,"75":0.00936,"77":0.00468,"78":0.03275,"79":0.02573,"80":0.03509,"81":0.02573,"83":0.05614,"84":0.01403,"85":0.03742,"86":0.07719,"87":0.05146,"88":0.0117,"89":0.02573,"90":0.01403,"91":0.01871,"92":0.04912,"93":0.0117,"94":0.03742,"95":0.01637,"96":0.07719,"97":0.03742,"98":0.07719,"99":0.11461,"100":0.3298,"101":0.58709,"102":9.59692,"103":0.99875,"104":0.01637,"105":0.00936,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 30 31 33 35 40 41 42 45 53 60 76 106"},F:{"21":0.00234,"42":0.00702,"64":0.00234,"68":0.03742,"72":0.01871,"79":0.00702,"80":0.03041,"82":0.00234,"83":0.00234,"84":0.00702,"85":0.0117,"86":0.05146,"87":0.40699,_:"9 11 12 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 69 70 71 73 74 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02807,"13":0.01637,"14":0.01637,"15":0.02807,"16":0.06081,"17":0.04912,"18":0.20349,"81":0.01637,"83":0.00234,"84":0.03742,"85":0.00702,"86":0.00234,"89":0.04444,"90":0.03041,"91":0.00702,"92":0.06549,"95":0.00468,"96":0.00468,"97":0.00936,"98":0.01637,"99":0.0117,"100":0.02105,"101":0.13566,"102":0.89584,"103":0.19414,_:"79 80 87 88 93 94"},E:{"4":0,"13":0.03509,"14":0.03509,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1","5.1":0.00468,"10.1":0.03041,"11.1":0.01403,"12.1":0.00234,"13.1":0.01871,"14.1":0.01403,"15.1":0.07719,"15.2-15.3":0.0538,"15.4":0.4678,"15.5":1.22564,"16.0":0.03976},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01131,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02827,"10.0-10.2":0.00424,"10.3":0.08056,"11.0-11.2":0.02827,"11.3-11.4":0.03533,"12.0-12.1":0.02685,"12.2-12.5":0.60493,"13.0-13.1":0.02403,"13.2":0.02827,"13.3":0.09328,"13.4-13.7":0.16819,"14.0-14.4":0.68126,"14.5-14.8":0.46783,"15.0-15.1":0.55264,"15.2-15.3":1.24662,"15.4":3.10523,"15.5":6.82812,"16.0":0.07915},P:{"4":1.85757,"5.0-5.4":0.24229,"6.2-6.4":0.14134,"7.2-7.4":0.52497,"8.2":0.03029,"9.2":0.29277,"10.1":0.02019,"11.1-11.2":0.16153,"12.0":0.05048,"13.0":0.34325,"14.0":0.30286,"15.0":0.17162,"16.0":0.6663,"17.0":1.10041},I:{"0":0,"3":0,"4":0.00028,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00141,"4.2-4.3":0.00777,"4.4":0,"4.4.3-4.4.4":0.02883},A:{"8":0.00468,"9":0.02807,"10":0.00702,"11":0.45143,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.58562},H:{"0":1.38513},L:{"0":56.64387},S:{"2.5":0},R:{_:"0"},M:{"0":0.14554}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AG.js index 0d8206d1362d79..bc7558f152e90f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AG.js @@ -1 +1 @@ -module.exports={C:{"30":0.00367,"47":0.00733,"52":0.01466,"78":0.00367,"82":0.00367,"91":0.00733,"93":0.00367,"94":0.00733,"95":0.01466,"96":0.35551,"97":0.75499,"98":0.00733,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 85 86 87 88 89 90 92 99 3.5 3.6"},D:{"11":0.00733,"49":0.01466,"58":0.00367,"67":0.01833,"69":0.011,"75":0.01466,"76":0.04398,"77":0.01833,"78":0.03299,"79":0.0733,"80":0.00733,"81":0.011,"83":0.011,"84":0.01833,"85":0.02932,"86":0.06231,"87":0.01466,"88":0.011,"89":0.02566,"90":0.03299,"91":0.01466,"92":0.02199,"93":0.04032,"94":0.02566,"95":0.06964,"96":0.29687,"97":6.14621,"98":14.02596,"99":0.01466,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 63 64 65 66 68 70 71 72 73 74 100 101"},F:{"82":0.1576,"83":0.63405,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00733,"15":0.01466,"16":0.00733,"17":0.011,"18":0.06964,"84":0.03299,"85":0.011,"90":0.00733,"92":0.011,"93":0.00733,"95":0.00733,"96":0.04398,"97":1.35239,"98":4.63623,_:"12 13 79 80 81 83 86 87 88 89 91 94"},E:{"4":0,"8":0.00367,"12":0.00367,"13":0.01466,"14":0.1576,"15":0.09529,_:"0 5 6 7 9 10 11 3.1 3.2 6.1 7.1 10.1","5.1":0.00367,"9.1":0.0733,"11.1":0.01833,"12.1":0.02932,"13.1":0.49478,"14.1":1.34139,"15.1":0.27488,"15.2-15.3":0.9529,"15.4":0.02566},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01072,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.01837,"9.0-9.2":0,"9.3":0.03062,"10.0-10.2":0.00306,"10.3":0.04134,"11.0-11.2":0.01531,"11.3-11.4":0.02756,"12.0-12.1":0.00766,"12.2-12.5":0.68288,"13.0-13.1":0.00612,"13.2":0.00306,"13.3":0.05359,"13.4-13.7":0.3246,"14.0-14.4":0.73494,"14.5-14.8":2.60598,"15.0-15.1":2.52636,"15.2-15.3":8.11191,"15.4":0.09493},P:{"4":0.13579,"5.0-5.4":0.04115,"6.2-6.4":0.02066,"7.2-7.4":0.27157,"8.2":0.01029,"9.2":0.03134,"10.1":0.06172,"11.1-11.2":0.4178,"12.0":0.02089,"13.0":0.1149,"14.0":0.26113,"15.0":0.19846,"16.0":4.58539},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00134,"4.4":0,"4.4.3-4.4.4":0.01766},A:{"11":0.07697,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.13937},Q:{"10.4":0},O:{"0":0.07602},H:{"0":0.17993},L:{"0":42.72577},S:{"2.5":0}}; +module.exports={C:{"2":0.00318,"47":0.01272,"52":0.00636,"78":0.00318,"91":0.00318,"94":0.00636,"96":0.00636,"97":0.00636,"100":0.1336,"101":0.8207,"102":0.02545,_:"3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 95 98 99 103 104 3.5 3.6"},D:{"49":0.00636,"55":0.01909,"58":0.00954,"63":0.00636,"66":0.00636,"75":0.00636,"76":0.05726,"79":0.02545,"80":0.00636,"81":0.00318,"84":0.01272,"85":0.01272,"86":0.05408,"87":0.00636,"88":0.01272,"89":0.01272,"91":0.01591,"92":0.02863,"93":0.13996,"94":0.00636,"95":0.00954,"96":0.02227,"97":0.01909,"98":0.03817,"99":0.04453,"100":0.24494,"101":1.42827,"102":15.5201,"103":1.42827,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 59 60 61 62 64 65 67 68 69 70 71 72 73 74 77 78 83 90 104 105 106"},F:{"28":0.02227,"85":0.00318,"86":0.17496,"87":0.53759,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00954,"13":0.01272,"15":0.01909,"16":0.00318,"17":0.00318,"18":0.02227,"84":0.00954,"85":0.01272,"86":0.00636,"92":0.00636,"93":0.04453,"96":0.00636,"98":0.02863,"99":0.03181,"100":0.02227,"101":0.48987,"102":3.46729,"103":0.69664,_:"14 79 80 81 83 87 88 89 90 91 94 95 97"},E:{"4":0,"8":0.00318,"13":0.00636,"14":0.11452,"15":0.01909,_:"0 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.26402,"10.1":0.02863,"11.1":0.03181,"12.1":0.01909,"13.1":0.17496,"14.1":0.42625,"15.1":0.04772,"15.2-15.3":0.06362,"15.4":0.3181,"15.5":0.98929,"16.0":0.00954},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00459,"6.0-6.1":0,"7.0-7.1":0.00306,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05512,"10.0-10.2":0.00153,"10.3":0.03675,"11.0-11.2":0.00459,"11.3-11.4":0.00919,"12.0-12.1":0.00306,"12.2-12.5":0.44251,"13.0-13.1":0.01072,"13.2":0.00306,"13.3":0.03522,"13.4-13.7":0.12709,"14.0-14.4":0.36135,"14.5-14.8":1.17287,"15.0-15.1":0.2848,"15.2-15.3":0.61246,"15.4":2.16965,"15.5":9.85761,"16.0":0.04747},P:{"4":0.25684,"5.0-5.4":0.01035,"6.2-6.4":0.08276,"7.2-7.4":0.22602,"8.2":0.06207,"9.2":0.02055,"10.1":0.02069,"11.1-11.2":0.27739,"12.0":0.03104,"13.0":0.12328,"14.0":0.13356,"15.0":0.09246,"16.0":0.46231,"17.0":4.02727},I:{"0":0,"3":0,"4":0.00043,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00043,"4.2-4.3":0.0013,"4.4":0,"4.4.3-4.4.4":0.01147},A:{"11":0.04772,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.04092},H:{"0":0.12913},L:{"0":49.49536},S:{"2.5":0},R:{_:"0"},M:{"0":0.36146}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AI.js index fc6968344d72d9..38871658522b80 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AI.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AI.js @@ -1 +1 @@ -module.exports={C:{"87":0.00771,"95":0.02697,"96":0.17724,"97":0.35448,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 88 89 90 91 92 93 94 98 99 3.5 3.6"},D:{"65":0.00771,"66":0.01541,"67":0.01156,"73":0.00385,"76":0.01541,"77":0.01541,"79":0.01541,"81":0.00385,"87":0.03082,"88":0.02697,"90":0.01156,"91":0.00771,"93":0.01541,"94":0.01541,"95":0.01541,"96":0.34292,"97":8.04506,"98":8.8619,"99":0.02697,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 68 69 70 71 72 74 75 78 80 83 84 85 86 89 92 100 101"},F:{"82":0.10788,"83":1.51423,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.02697,"92":0.00385,"95":0.0578,"96":0.01927,"97":2.35033,"98":4.98578,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94"},E:{"4":0,"11":0.01927,"13":0.13871,"14":0.16568,"15":0.39686,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.03468,"12.1":0.04238,"13.1":1.28305,"14.1":1.3524,"15.1":1.46414,"15.2-15.3":3.1402,"15.4":0.02697},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.0027,"8.1-8.4":0,"9.0-9.2":0.0027,"9.3":0.0081,"10.0-10.2":0,"10.3":0.02969,"11.0-11.2":0.0027,"11.3-11.4":0.01889,"12.0-12.1":0.0027,"12.2-12.5":0.35088,"13.0-13.1":0.0027,"13.2":0.06208,"13.3":0.18624,"13.4-13.7":0.04588,"14.0-14.4":0.64508,"14.5-14.8":2.76925,"15.0-15.1":3.93795,"15.2-15.3":18.81794,"15.4":0.09987},P:{"4":0.05188,"5.0-5.4":0.04115,"6.2-6.4":0.02066,"7.2-7.4":0.06226,"8.2":0.01029,"9.2":0.02057,"10.1":0.06172,"11.1-11.2":0.68483,"12.0":0.02057,"13.0":0.05188,"14.0":0.10376,"15.0":0.07263,"16.0":2.69783},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.03853,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.11679},Q:{"10.4":0},O:{"0":0},H:{"0":0.02328},L:{"0":28.89313},S:{"2.5":0}}; +module.exports={C:{"61":0.01195,"78":4.11218,"91":4.3393,"92":0.01195,"99":0.01793,"100":0.01195,"101":4.7816,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 93 94 95 96 97 98 102 103 104 3.5 3.6"},D:{"65":0.01793,"69":0.01793,"72":0.01195,"76":0.05379,"79":0.01195,"85":0.64552,"87":0.01195,"90":0.02989,"91":0.02391,"93":0.00598,"96":0.13747,"97":0.05379,"99":0.01793,"100":0.38851,"101":0.60368,"102":15.33698,"103":0.72322,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 70 71 73 74 75 77 78 80 81 83 84 86 88 89 92 94 95 98 104 105 106"},F:{"86":1.20735,"87":4.15999,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00598,"16":0.03586,"18":0.01793,"96":0.00598,"99":0.01195,"100":0.01195,"101":6.70619,"102":5.19401,"103":1.08781,_:"12 13 15 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 97 98"},E:{"4":0,"13":0.12552,"14":0.03586,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01793,"12.1":0.01195,"13.1":0.84276,"14.1":0.26897,"15.1":0.25701,"15.2-15.3":0.17333,"15.4":2.82114,"15.5":1.88276},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0.00338,"12.0-12.1":0,"12.2-12.5":0.42374,"13.0-13.1":0,"13.2":0,"13.3":0.01013,"13.4-13.7":0,"14.0-14.4":0.07428,"14.5-14.8":1.24084,"15.0-15.1":0.68711,"15.2-15.3":1.51096,"15.4":2.54415,"15.5":10.37411,"16.0":0.01182},P:{"4":0.17862,"5.0-5.4":0.01035,"6.2-6.4":0.08276,"7.2-7.4":0.27319,"8.2":0.06207,"9.2":0.18621,"10.1":0.02069,"11.1-11.2":0.04203,"12.0":0.03104,"13.0":0.09456,"14.0":0.13659,"15.0":0.07355,"16.0":0.07355,"17.0":1.80723},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.02414},A:{"11":1.97241,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.00805},H:{"0":0.01523},L:{"0":21.58753},S:{"2.5":0},R:{_:"0"},M:{"0":0.03621}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AL.js index 79b13aaa6b0735..aedc94904bc7dd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AL.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AL.js @@ -1 +1 @@ -module.exports={C:{"46":0.00186,"52":0.03155,"66":0.14662,"68":0.00371,"72":0.00186,"77":0.00928,"78":0.00742,"79":0.00371,"80":0.01114,"81":0.00557,"82":0.00371,"83":0.00186,"84":0.01299,"87":0.00186,"88":0.00557,"89":0.00928,"91":0.01114,"92":0.00371,"94":0.00371,"95":0.00742,"96":0.25798,"97":0.46586,"98":0.00557,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 69 70 71 73 74 75 76 85 86 90 93 99 3.5 3.6"},D:{"38":0.01114,"47":0.00371,"49":0.05754,"53":0.00371,"55":0.00186,"56":0.00371,"60":0.00371,"62":0.01114,"63":0.00928,"64":0.00371,"65":0.01485,"66":0.00557,"67":0.00186,"68":0.0167,"69":0.01114,"70":0.00928,"71":0.0167,"72":0.00371,"73":0.00371,"74":0.02227,"75":0.00371,"76":0.01485,"77":0.00742,"78":0.00928,"79":0.09466,"80":0.02042,"81":0.01856,"83":0.03341,"84":0.0631,"85":0.10579,"86":0.06496,"87":0.10022,"88":0.0167,"89":0.02413,"90":0.0167,"91":0.0297,"92":0.02042,"93":0.25984,"94":0.02042,"95":0.05197,"96":0.21158,"97":3.83635,"98":8.71949,"99":0.00928,"100":0.00371,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 57 58 59 61 101"},F:{"28":0.00742,"36":0.00742,"40":0.00371,"46":0.00557,"52":0.00371,"69":0.00186,"71":0.00371,"82":0.04826,"83":0.27654,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00186,"17":0.01299,"18":0.01299,"83":0.00742,"84":0.00186,"89":0.00928,"92":0.00371,"94":0.00186,"95":0.00371,"96":0.00928,"97":0.18931,"98":0.68115,_:"12 13 15 16 79 80 81 85 86 87 88 90 91 93"},E:{"4":0,"13":0.01299,"14":0.04826,"15":0.03526,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.00186,"10.1":0.00557,"11.1":0.00557,"12.1":0.01299,"13.1":0.05382,"14.1":0.22086,"15.1":0.16333,"15.2-15.3":0.36006,"15.4":0.01114},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.06117,"7.0-7.1":0.02719,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04758,"10.0-10.2":0.01699,"10.3":0.11894,"11.0-11.2":0.04418,"11.3-11.4":0.08156,"12.0-12.1":0.06117,"12.2-12.5":1.88261,"13.0-13.1":0.05097,"13.2":0.05097,"13.3":0.20729,"13.4-13.7":0.66945,"14.0-14.4":1.69571,"14.5-14.8":7.74795,"15.0-15.1":4.5876,"15.2-15.3":16.47798,"15.4":0.13933},P:{"4":0.21513,"5.0-5.4":0.35318,"6.2-6.4":0.35318,"7.2-7.4":0.10244,"8.2":0.01248,"9.2":0.03073,"10.1":0.02018,"11.1-11.2":0.16391,"12.0":0.05122,"13.0":0.20488,"14.0":0.16391,"15.0":0.16391,"16.0":2.47909},I:{"0":0,"3":0,"4":0.00233,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00349,"4.2-4.3":0.00524,"4.4":0,"4.4.3-4.4.4":0.03781},A:{"8":0.00371,"9":0.00557,"10":0.00186,"11":0.05011,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.16288},Q:{"10.4":0},O:{"0":0.02443},H:{"0":0.09252},L:{"0":42.25688},S:{"2.5":0}}; +module.exports={C:{"48":0.0014,"52":0.0279,"68":0.00279,"78":0.00419,"83":0.0014,"87":0.00279,"88":0.00977,"89":0.00837,"90":0.0014,"91":0.00837,"92":0.00279,"93":0.0014,"94":0.00279,"95":0.0014,"97":0.0014,"98":0.0014,"99":0.02093,"100":0.05301,"101":0.53429,"102":0.0279,"103":0.00279,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 96 104 3.5 3.6"},D:{"11":0.0014,"14":0.00558,"38":0.00837,"47":0.00419,"49":0.01953,"53":0.00279,"55":0.0014,"56":0.00279,"63":0.00698,"65":0.0014,"66":0.00279,"68":0.02372,"69":0.00279,"71":0.01814,"72":0.00419,"73":0.0014,"74":0.00279,"75":0.00279,"76":0.00558,"77":0.00558,"78":0.00558,"79":0.04604,"80":0.00837,"81":0.00837,"83":0.01116,"84":0.01674,"85":0.03488,"86":0.03488,"87":0.04046,"88":0.00837,"89":0.01256,"90":0.01116,"91":0.01535,"92":0.01116,"93":0.03069,"94":0.01116,"95":0.00558,"96":0.03767,"97":0.02511,"98":0.02093,"99":0.04046,"100":0.09486,"101":0.59567,"102":8.40906,"103":0.72122,"104":0.00279,_:"4 5 6 7 8 9 10 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 57 58 59 60 61 62 64 67 70 105 106"},F:{"28":0.0014,"36":0.0014,"85":0.00419,"86":0.0851,"87":0.19949,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00419,"83":0.0014,"87":0.00279,"89":0.00279,"92":0.00279,"97":0.00279,"98":0.0014,"100":0.00558,"101":0.09486,"102":0.48267,"103":0.09765,_:"12 13 14 15 16 17 79 80 81 84 85 86 88 90 91 93 94 95 96 99"},E:{"4":0,"12":0.00279,"13":0.00977,"14":0.02651,"15":0.01674,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.0014,"12.1":0.00419,"13.1":0.03767,"14.1":0.0572,"15.1":0.03627,"15.2-15.3":0.03069,"15.4":0.279,"15.5":0.67239,"16.0":0.00558},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.03594,"7.0-7.1":0.00799,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03594,"10.0-10.2":0.00799,"10.3":0.09186,"11.0-11.2":0.02396,"11.3-11.4":0.08387,"12.0-12.1":0.03994,"12.2-12.5":1.76522,"13.0-13.1":0.04792,"13.2":0.02796,"13.3":0.18371,"13.4-13.7":0.59107,"14.0-14.4":1.40179,"14.5-14.8":5.36753,"15.0-15.1":0.77078,"15.2-15.3":1.65739,"15.4":5.76291,"15.5":21.8056,"16.0":0.13179},P:{"4":0.12391,"5.0-5.4":0.24229,"6.2-6.4":0.14134,"7.2-7.4":0.06196,"8.2":0.03029,"9.2":0.29277,"10.1":0.02245,"11.1-11.2":0.06196,"12.0":0.01033,"13.0":0.08261,"14.0":0.08261,"15.0":0.08261,"16.0":0.19619,"17.0":1.67281},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00356,"4.2-4.3":0.00297,"4.4":0,"4.4.3-4.4.4":0.02789},A:{"11":0.02372,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02582},H:{"0":0.08961},L:{"0":43.87515},S:{"2.5":0},R:{_:"0"},M:{"0":0.11187}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AM.js index e0a1d4b90c254d..7c34c4b22f76b0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AM.js @@ -1 +1 @@ -module.exports={C:{"11":0.01367,"51":0.0205,"52":37.23163,"56":0.00683,"78":0.02734,"82":0.00683,"83":0.00683,"91":0.01367,"95":0.02734,"96":0.32803,"97":0.62873,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 84 85 86 87 88 89 90 92 93 94 98 99 3.5 3.6"},D:{"22":0.01367,"44":0.00683,"47":0.01367,"49":0.06834,"51":0.00683,"63":0.0205,"68":0.0205,"69":0.00683,"71":0.00683,"72":0.01367,"73":0.0205,"74":0.02734,"75":0.01367,"76":0.0205,"79":0.0205,"80":0.0205,"83":0.01367,"84":0.02734,"85":0.041,"86":0.07517,"87":0.08201,"88":0.02734,"89":0.07517,"90":0.03417,"91":0.03417,"92":0.06834,"93":0.0205,"94":0.041,"95":0.06834,"96":0.54672,"97":7.03902,"98":16.7638,"100":0.01367,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 48 50 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 70 77 78 81 99 101"},F:{"82":0.11618,"83":0.69023,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"96":0.01367,"97":0.19819,"98":0.6424,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95"},E:{"4":0,"14":0.08201,"15":0.13668,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 15.4","5.1":0.06834,"11.1":0.00683,"12.1":0.01367,"13.1":0.13668,"14.1":0.21869,"15.1":0.18452,"15.2-15.3":0.23236},G:{"8":0.00215,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00429,"6.0-6.1":0,"7.0-7.1":0.00572,"8.1-8.4":0.00072,"9.0-9.2":0.00215,"9.3":0.10304,"10.0-10.2":0.00572,"10.3":0.11019,"11.0-11.2":0.01574,"11.3-11.4":0.02147,"12.0-12.1":0.0186,"12.2-12.5":0.44221,"13.0-13.1":0.01216,"13.2":0.00787,"13.3":0.03578,"13.4-13.7":0.14526,"14.0-14.4":0.50732,"14.5-14.8":1.36955,"15.0-15.1":1.08047,"15.2-15.3":3.23427,"15.4":0.02504},P:{"4":0.05354,"5.0-5.4":0.04115,"6.2-6.4":0.02066,"7.2-7.4":0.07495,"8.2":0.01029,"9.2":0.01042,"10.1":0.06172,"11.1-11.2":0.05354,"12.0":0.01071,"13.0":0.05354,"14.0":0.08566,"15.0":0.05354,"16.0":1.12425},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00024,"4.2-4.3":0.00087,"4.4":0,"4.4.3-4.4.4":0.00839},A:{"11":0.07517,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.05697},Q:{"10.4":0},O:{"0":0.10445},H:{"0":0.11986},L:{"0":22.17812},S:{"2.5":0}}; +module.exports={C:{"52":37.55889,"56":0.01398,"73":0.60804,"74":0.01398,"80":0.02796,"91":0.01398,"98":0.02097,"99":0.02097,"100":0.10484,"101":0.71288,"102":0.02796,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 75 76 77 78 79 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 103 104 3.5 3.6"},D:{"22":0.01398,"47":0.00699,"49":0.03495,"60":0.13978,"63":0.02097,"70":0.01398,"73":0.00699,"74":0.02796,"75":0.01398,"76":0.02796,"79":0.01398,"80":0.01398,"81":0.00699,"83":0.00699,"84":0.04193,"85":0.02097,"86":0.04193,"87":0.09785,"88":0.01398,"89":0.02097,"90":0.02796,"91":0.00699,"92":0.03495,"93":0.00699,"94":0.01398,"95":0.02097,"96":0.03495,"97":0.04892,"98":0.09785,"99":0.08387,"100":0.32149,"101":1.25103,"102":21.91052,"103":2.14562,"104":0.00699,"105":0.00699,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 50 51 52 53 54 55 56 57 58 59 61 62 64 65 66 67 68 69 71 72 77 78 106"},F:{"29":0.00699,"68":0.01398,"85":0.04892,"86":0.1258,"87":0.41235,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"100":0.0629,"101":0.09086,"102":0.67793,"103":0.13279,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99"},E:{"4":0,"13":0.00699,"14":0.04892,"15":0.02796,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 12.1 16.0","5.1":0.05591,"11.1":0.01398,"13.1":0.10484,"14.1":0.10484,"15.1":0.08387,"15.2-15.3":0.03495,"15.4":0.20268,"15.5":0.37042},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00142,"6.0-6.1":0.00497,"7.0-7.1":0.00781,"8.1-8.4":0.00284,"9.0-9.2":0,"9.3":0.08518,"10.0-10.2":0.00142,"10.3":0.0362,"11.0-11.2":0.00923,"11.3-11.4":0.01278,"12.0-12.1":0.01704,"12.2-12.5":0.38471,"13.0-13.1":0.01207,"13.2":0.0071,"13.3":0.03052,"13.4-13.7":0.11002,"14.0-14.4":0.46066,"14.5-14.8":0.65585,"15.0-15.1":0.20726,"15.2-15.3":0.39607,"15.4":0.9781,"15.5":3.61713,"16.0":0.04117},P:{"4":0.01094,"5.0-5.4":0.01035,"6.2-6.4":0.08276,"7.2-7.4":0.04375,"8.2":0.06207,"9.2":0.01094,"10.1":0.02069,"11.1-11.2":0.04375,"12.0":0.02059,"13.0":0.02187,"14.0":0.06562,"15.0":0.01094,"16.0":0.09843,"17.0":1.00614},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00033,"4.2-4.3":0.00198,"4.4":0,"4.4.3-4.4.4":0.01273},A:{"11":0.07688,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.05418},H:{"0":0.11684},L:{"0":21.59265},S:{"2.5":0},R:{_:"0"},M:{"0":0.07224}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AO.js index fadd788321be80..9fa84584b584ab 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AO.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AO.js @@ -1 +1 @@ -module.exports={C:{"41":0.00903,"43":0.00452,"45":0.01355,"49":0.00452,"52":0.0903,"72":0.00452,"78":0.00903,"89":0.00903,"90":0.00452,"91":0.05418,"92":0.00452,"94":0.01355,"95":0.01806,"96":0.4199,"97":0.58695,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 44 46 47 48 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 93 98 99 3.5 3.6"},D:{"11":0.03161,"26":0.00452,"29":0.00452,"33":0.00903,"34":0.00903,"38":0.00452,"40":0.01806,"42":0.01355,"43":0.14448,"46":0.01806,"47":0.00452,"49":0.01355,"55":0.00452,"58":0.01355,"59":0.04064,"63":0.05418,"65":0.01806,"67":0.00452,"69":0.04064,"70":0.00452,"71":0.00903,"72":0.00452,"74":0.01355,"75":0.04515,"76":0.00903,"77":0.00903,"78":0.01355,"79":0.13094,"80":0.06773,"81":0.07224,"83":0.01806,"84":0.03612,"85":0.01806,"86":0.17609,"87":0.19415,"88":0.02258,"89":0.0587,"90":0.02258,"91":0.19866,"92":0.11739,"93":0.18512,"94":0.04515,"95":0.0587,"96":0.37926,"97":6.33455,"98":15.45033,"99":0.11288,"100":0.00903,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 30 31 32 35 36 37 39 41 44 45 48 50 51 52 53 54 56 57 60 61 62 64 66 68 73 101"},F:{"34":0.00452,"71":0.01355,"79":0.03612,"82":0.17157,"83":1.61637,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.04967,"13":0.02258,"14":0.01806,"15":0.01355,"16":0.00903,"17":0.02258,"18":0.33411,"84":0.02709,"85":0.01355,"86":0.00903,"89":0.02258,"90":0.01806,"91":0.01355,"92":0.02258,"93":0.01806,"94":0.00903,"95":0.03161,"96":0.65016,"97":0.90752,"98":3.11084,_:"79 80 81 83 87 88"},E:{"4":0,"13":0.02709,"14":0.05418,"15":0.00903,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 9.1 11.1","7.1":0.03612,"10.1":0.00452,"12.1":0.01355,"13.1":0.05418,"14.1":0.13545,"15.1":0.04515,"15.2-15.3":0.15351,"15.4":0.01355},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00083,"6.0-6.1":0.00166,"7.0-7.1":0.06308,"8.1-8.4":0.01494,"9.0-9.2":0.01079,"9.3":0.14609,"10.0-10.2":0.01411,"10.3":0.28803,"11.0-11.2":0.07554,"11.3-11.4":0.05893,"12.0-12.1":0.03735,"12.2-12.5":2.25196,"13.0-13.1":0.00664,"13.2":0.00498,"13.3":0.10542,"13.4-13.7":0.23242,"14.0-14.4":0.635,"14.5-14.8":1.03343,"15.0-15.1":1.27082,"15.2-15.3":2.02784,"15.4":0.01743},P:{"4":1.55328,"5.0-5.4":0.04115,"6.2-6.4":0.02066,"7.2-7.4":0.22631,"8.2":0.01029,"9.2":0.02057,"10.1":0.06172,"11.1-11.2":0.07201,"12.0":0.02057,"13.0":0.19545,"14.0":0.17487,"15.0":0.17487,"16.0":0.84351},I:{"0":0,"3":0,"4":0.00221,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01485,"4.2-4.3":0.04603,"4.4":0,"4.4.3-4.4.4":0.13981},A:{"11":0.2393,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.02194},N:{_:"10 11"},R:{_:"0"},M:{"0":0.12065},Q:{"10.4":0},O:{"0":0.33452},H:{"0":1.77563},L:{"0":50.96663},S:{"2.5":0}}; +module.exports={C:{"34":0.01645,"41":0.00822,"47":0.00822,"52":0.09869,"54":0.02878,"64":0.01645,"78":0.01645,"82":0.01645,"88":0.00411,"89":0.00411,"91":0.01234,"95":0.01645,"97":0.02467,"99":0.02467,"100":0.14803,"101":0.97043,"102":0.01645,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 42 43 44 45 46 48 49 50 51 53 55 56 57 58 59 60 61 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 85 86 87 90 92 93 94 96 98 103 104 3.5 3.6"},D:{"11":0.02056,"26":0.00411,"33":0.02056,"36":0.00822,"38":0.00411,"40":0.01645,"42":0.02056,"43":0.05346,"46":0.21382,"47":0.00822,"49":0.0329,"53":0.04934,"55":0.00822,"58":0.08224,"59":0.00822,"62":0.01234,"63":0.04523,"64":0.00411,"65":0.00411,"68":0.01234,"69":0.03701,"70":0.00822,"71":0.00411,"72":0.05346,"73":0.00411,"74":0.03701,"75":0.01234,"77":0.01234,"78":0.0329,"79":0.05346,"80":0.00411,"81":0.06579,"83":0.01234,"84":0.02878,"85":0.00822,"86":0.08635,"87":0.24261,"88":0.04934,"89":0.06579,"90":0.05346,"91":0.1357,"92":0.01645,"93":0.02056,"94":0.04523,"95":0.01645,"96":0.04934,"97":0.14392,"98":0.07402,"99":0.18093,"100":0.2385,"101":0.88819,"102":15.44878,"103":1.46387,"104":0.02467,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 35 37 39 41 44 45 48 50 51 52 54 56 57 60 61 66 67 76 105 106"},F:{"32":0.02467,"36":0.00822,"40":0.00411,"42":0.00822,"77":0.00411,"79":0.02467,"81":0.00411,"84":0.02467,"85":0.06168,"86":0.12747,"87":1.44742,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 37 38 39 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 80 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0699,"13":0.04934,"14":0.04523,"15":0.01234,"16":0.01234,"17":0.04523,"18":0.0699,"80":0.01234,"84":0.03701,"85":0.00822,"89":0.06579,"90":0.1028,"91":0.00411,"92":0.02056,"93":0.02056,"95":0.00822,"96":0.02878,"97":0.01645,"98":0.01234,"99":0.01234,"100":0.04523,"101":0.50989,"102":2.63168,"103":0.52222,_:"79 81 83 86 87 88 94"},E:{"4":0,"8":0.00411,"13":0.00411,"14":0.00822,"15":0.01234,_:"0 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 9.1 16.0","7.1":0.00822,"10.1":0.00411,"11.1":0.00411,"12.1":0.01234,"13.1":0.04112,"14.1":0.06168,"15.1":0.01645,"15.2-15.3":0.02878,"15.4":0.09046,"15.5":0.23027},G:{"8":0.00247,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00164,"6.0-6.1":0,"7.0-7.1":0.1924,"8.1-8.4":0.00658,"9.0-9.2":0.00164,"9.3":0.35027,"10.0-10.2":0.00904,"10.3":0.41358,"11.0-11.2":0.12909,"11.3-11.4":0.037,"12.0-12.1":0.05591,"12.2-12.5":1.81876,"13.0-13.1":0.01891,"13.2":0.05673,"13.3":0.07564,"13.4-13.7":0.12416,"14.0-14.4":0.41111,"14.5-14.8":0.6142,"15.0-15.1":0.39796,"15.2-15.3":0.49498,"15.4":0.91596,"15.5":2.07529,"16.0":0.00904},P:{"4":1.25176,"5.0-5.4":0.01035,"6.2-6.4":0.08276,"7.2-7.4":0.3207,"8.2":0.06207,"9.2":0.18621,"10.1":0.02069,"11.1-11.2":0.07242,"12.0":0.03104,"13.0":0.12414,"14.0":0.08276,"15.0":0.04138,"16.0":0.33104,"17.0":0.57933},I:{"0":0,"3":0,"4":0.0008,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0201,"4.2-4.3":0.05508,"4.4":0,"4.4.3-4.4.4":0.18305},A:{"11":0.12747,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.01766},Q:{"10.4":0},O:{"0":0.38266},H:{"0":2.43002},L:{"0":55.81901},S:{"2.5":0.01177},R:{_:"0"},M:{"0":0.1354}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AR.js index 5ad6d8d391d8c1..7c731c0caa27bf 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AR.js @@ -1 +1 @@ -module.exports={C:{"32":0.00392,"52":0.08234,"53":0.00392,"59":0.00784,"65":0.00392,"66":0.00784,"68":0.00784,"72":0.00392,"73":0.00392,"78":0.01961,"79":0.00392,"80":0.00784,"81":0.00392,"84":0.00784,"85":0.00392,"86":0.02745,"87":0.01176,"88":0.02745,"89":0.01176,"90":0.01568,"91":0.03921,"92":0.00392,"93":0.01176,"94":0.01176,"95":0.02745,"96":0.5411,"97":0.91751,"98":0.00784,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 54 55 56 57 58 60 61 62 63 64 67 69 70 71 74 75 76 77 82 83 99 3.5 3.6"},D:{"27":0.00392,"34":0.00784,"38":0.01961,"47":0.00784,"49":0.22742,"55":0.00784,"57":0.00392,"58":0.00784,"63":0.00784,"65":0.00392,"66":0.03529,"67":0.00392,"68":0.00392,"69":0.00392,"70":0.00784,"71":0.00784,"72":0.00392,"73":0.00784,"74":0.01176,"75":0.01176,"76":0.01176,"77":0.01176,"78":0.01176,"79":0.03529,"80":0.01568,"81":0.03529,"83":0.01961,"84":0.02353,"85":0.02353,"86":0.03921,"87":0.05097,"88":0.01961,"89":0.03921,"90":0.03137,"91":0.07842,"92":0.05097,"93":0.06274,"94":0.09018,"95":0.0745,"96":0.52541,"97":8.39486,"98":21.00872,"99":0.00784,"100":0.00784,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 53 54 56 59 60 61 62 64 101"},F:{"36":0.00784,"81":0.01176,"82":0.58031,"83":1.48998,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00784,"17":0.00784,"18":0.01176,"92":0.00784,"95":0.01176,"96":0.02353,"97":0.38818,"98":1.44685,_:"12 13 14 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94"},E:{"4":0,"13":0.01176,"14":0.03529,"15":0.02745,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 15.4","5.1":0.01176,"11.1":0.01568,"12.1":0.00784,"13.1":0.05489,"14.1":0.15684,"15.1":0.0745,"15.2-15.3":0.16076},G:{"8":0.00037,"3.2":0.0011,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01535,"6.0-6.1":0.00037,"7.0-7.1":0.00292,"8.1-8.4":0.00146,"9.0-9.2":0.0011,"9.3":0.02888,"10.0-10.2":0.00146,"10.3":0.02157,"11.0-11.2":0.00475,"11.3-11.4":0.03546,"12.0-12.1":0.00548,"12.2-12.5":0.19226,"13.0-13.1":0.00658,"13.2":0.00256,"13.3":0.01572,"13.4-13.7":0.06031,"14.0-14.4":0.13963,"14.5-14.8":0.67365,"15.0-15.1":0.53439,"15.2-15.3":1.90325,"15.4":0.00548},P:{"4":0.14583,"5.0-5.4":0.04115,"6.2-6.4":0.02066,"7.2-7.4":0.23957,"8.2":0.01029,"9.2":0.01042,"10.1":0.06172,"11.1-11.2":0.07291,"12.0":0.02083,"13.0":0.12499,"14.0":0.11458,"15.0":0.11458,"16.0":1.84365},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00285,"4.2-4.3":0.00456,"4.4":0,"4.4.3-4.4.4":0.04731},A:{"11":0.15684,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.1216},Q:{"10.4":0},O:{"0":0.0304},H:{"0":0.18995},L:{"0":49.10526},S:{"2.5":0}}; +module.exports={C:{"29":0.00807,"52":0.08074,"59":0.01211,"65":0.00404,"66":0.01211,"68":0.00807,"72":0.00807,"73":0.00807,"78":0.01615,"80":0.00807,"86":0.03633,"88":0.02826,"89":0.02019,"90":0.02019,"91":0.20992,"92":0.00404,"93":0.00404,"94":0.00404,"95":0.00807,"96":0.00404,"97":0.00807,"98":0.01211,"99":0.05248,"100":0.14533,"101":1.27166,"102":0.05652,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 61 62 63 64 67 69 70 71 74 75 76 77 79 81 82 83 84 85 87 103 104 3.5 3.6"},D:{"22":0.00807,"28":0.00404,"34":0.00807,"38":0.02019,"47":0.00807,"49":0.25837,"51":0.00404,"58":0.00807,"63":0.00807,"65":0.00404,"66":0.04844,"67":0.00404,"69":0.01615,"70":0.00807,"71":0.00404,"72":0.00404,"73":0.00404,"74":0.01211,"75":0.00807,"76":0.00807,"77":0.01211,"78":0.01615,"79":0.03633,"80":0.01615,"81":0.02019,"83":0.01615,"84":0.02019,"85":0.01615,"86":0.0323,"87":0.04037,"88":0.01615,"89":0.02826,"90":0.02422,"91":0.04441,"92":0.0323,"93":0.02019,"94":0.02826,"95":0.04037,"96":0.09689,"97":0.0767,"98":0.0767,"99":0.16955,"100":0.29874,"101":1.38065,"102":26.03865,"103":2.55542,"104":0.00807,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 52 53 54 55 56 57 59 60 61 62 64 68 105 106"},F:{"28":0.00807,"36":0.01211,"84":0.00404,"85":0.0323,"86":0.83162,"87":0.92851,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00404,"17":0.00807,"18":0.01211,"92":0.00807,"96":0.00807,"99":0.01211,"100":0.01211,"101":0.20589,"102":1.61884,"103":0.35526,_:"12 13 14 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 97 98"},E:{"4":0,"13":0.00404,"14":0.02826,"15":0.01211,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01615,"12.1":0.00807,"13.1":0.04441,"14.1":0.10093,"15.1":0.02019,"15.2-15.3":0.02422,"15.4":0.109,"15.5":0.29874},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01225,"6.0-6.1":0.00158,"7.0-7.1":0.00119,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02054,"10.0-10.2":0.00079,"10.3":0.02015,"11.0-11.2":0.00198,"11.3-11.4":0.04661,"12.0-12.1":0.00316,"12.2-12.5":0.1509,"13.0-13.1":0.00435,"13.2":0.00198,"13.3":0.01383,"13.4-13.7":0.03713,"14.0-14.4":0.08809,"14.5-14.8":0.27928,"15.0-15.1":0.05767,"15.2-15.3":0.15011,"15.4":0.44243,"15.5":2.60399,"16.0":0.00356},P:{"4":0.13384,"5.0-5.4":0.01035,"6.2-6.4":0.08276,"7.2-7.4":0.2368,"8.2":0.06207,"9.2":0.0103,"10.1":0.02069,"11.1-11.2":0.05148,"12.0":0.02059,"13.0":0.08237,"14.0":0.09266,"15.0":0.04118,"16.0":0.21621,"17.0":1.86352},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0014,"4.2-4.3":0.00316,"4.4":0,"4.4.3-4.4.4":0.02526},A:{"11":0.13322,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02982},H:{"0":0.17501},L:{"0":53.27105},S:{"2.5":0},R:{_:"0"},M:{"0":0.1133}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AS.js index 74572c144e9619..b758c3774edcfd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AS.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AS.js @@ -1 +1 @@ -module.exports={C:{"52":0.01431,"78":0.01431,"82":0.00477,"96":0.17645,"97":0.24799,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 98 99 3.5 3.6"},D:{"75":0.02861,"76":0.02861,"77":0.00477,"79":0.41013,"83":0.04292,"84":0.01908,"85":0.02861,"86":0.00477,"87":0.03338,"88":0.03815,"90":0.01431,"91":0.17645,"92":0.06677,"93":0.04292,"94":0.04769,"95":0.01908,"96":1.43547,"97":6.91982,"98":8.89419,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 78 80 81 89 99 100 101"},F:{"82":0.02385,"83":0.01908,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00477,"85":0.01431,"88":0.00954,"90":0.01431,"96":0.01431,"97":0.51505,"98":1.75976,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 89 91 92 93 94 95"},E:{"4":0,"13":0.00954,"14":0.10015,"15":0.062,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.0763,"11.1":0.01431,"12.1":0.01908,"13.1":0.11923,"14.1":0.30522,"15.1":5.42235,"15.2-15.3":8.21222,"15.4":0.02385},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01252,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.04173,"9.0-9.2":0,"9.3":0.85959,"10.0-10.2":0,"10.3":0.00835,"11.0-11.2":0,"11.3-11.4":0.01252,"12.0-12.1":0.00417,"12.2-12.5":0.2295,"13.0-13.1":0,"13.2":0,"13.3":0.01669,"13.4-13.7":0.14605,"14.0-14.4":0.28792,"14.5-14.8":1.8694,"15.0-15.1":8.39143,"15.2-15.3":29.67669,"15.4":0.15022},P:{"4":0.0427,"5.0-5.4":0.35318,"6.2-6.4":0.02066,"7.2-7.4":0.01067,"8.2":0.01248,"9.2":0.01067,"10.1":0.02066,"11.1-11.2":0.12809,"12.0":0.02135,"13.0":0.18592,"14.0":0.01067,"15.0":0.29887,"16.0":1.05673},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.04292,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.01569},Q:{"10.4":0},O:{"0":0.01046},H:{"0":0.03467},L:{"0":10.26769},S:{"2.5":0}}; +module.exports={C:{"91":0.00883,"99":0.00441,"100":0.00883,"101":0.16769,"102":0.00883,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 103 104 3.5 3.6"},D:{"49":0.00441,"53":0.03089,"64":0.02207,"75":0.03089,"76":0.02648,"79":0.25154,"80":0.04854,"83":0.00883,"84":0.00883,"85":0.10591,"86":0.05737,"87":0.00883,"88":0.01324,"90":0.01324,"91":0.01324,"92":0.01324,"93":0.09709,"96":0.01324,"97":0.04413,"98":0.02648,"99":0.03972,"100":0.36187,"101":2.99201,"102":8.98928,"103":0.57369,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 63 65 66 67 68 69 70 71 72 73 74 77 78 81 89 94 95 104 105 106"},F:{"86":0.01765,"87":0.19859,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"92":0.00441,"97":0.00441,"99":0.02207,"100":0.00441,"101":0.15004,"102":1.10766,"103":0.17211,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 98"},E:{"4":0,"13":0.00883,"14":0.12798,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1","11.1":0.05296,"13.1":0.07502,"14.1":0.16769,"15.1":0.48543,"15.2-15.3":0.93114,"15.4":4.77487,"15.5":17.89913,"16.0":0.01765},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.42361,"10.0-10.2":0,"10.3":0.01444,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.28883,"13.0-13.1":0,"13.2":0,"13.3":0.01444,"13.4-13.7":0.06258,"14.0-14.4":0.14923,"14.5-14.8":0.40436,"15.0-15.1":0.42361,"15.2-15.3":1.31897,"15.4":8.15451,"15.5":36.49313,"16.0":0.07702},P:{"4":0.0661,"5.0-5.4":0.24229,"6.2-6.4":0.0105,"7.2-7.4":0.14322,"8.2":0.03029,"9.2":0.04201,"10.1":0.02245,"11.1-11.2":0.04407,"12.0":0.02101,"13.0":0.09452,"14.0":0.02203,"15.0":0.05251,"16.0":0.18728,"17.0":0.31948},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.00559},A:{"11":0.00883,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01117},H:{"0":0.02645},L:{"0":9.41799},S:{"2.5":0},R:{_:"0"},M:{"0":0.02794}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AT.js index 1ba1bd653ad41f..678cf43f6f0d4d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AT.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AT.js @@ -1 +1 @@ -module.exports={C:{"48":0.00578,"52":0.06355,"59":0.00578,"60":0.06932,"61":0.01733,"62":0.01733,"63":0.01155,"66":0.05777,"68":0.01155,"72":0.01155,"78":0.12709,"83":0.01155,"85":0.00578,"87":0.01155,"88":0.01733,"89":0.01733,"90":0.01733,"91":0.43905,"92":0.04622,"93":0.04044,"94":0.29463,"95":0.10976,"96":2.64009,"97":4.19988,"98":0.01155,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 64 65 67 69 70 71 73 74 75 76 77 79 80 81 82 84 86 99 3.5 3.6"},D:{"38":0.01733,"47":0.00578,"49":0.04622,"53":0.00578,"61":0.00578,"64":0.17909,"65":0.01155,"67":0.01155,"68":0.01155,"69":0.01155,"70":0.19642,"71":0.00578,"72":0.19064,"75":0.01155,"76":0.00578,"77":0.01155,"78":0.02889,"79":0.48527,"80":0.21375,"81":0.01733,"83":0.01733,"84":0.02889,"85":0.02889,"86":0.03466,"87":0.06932,"88":0.03466,"89":0.04044,"90":0.03466,"91":0.05199,"92":0.04622,"93":0.33507,"94":0.08088,"95":0.10976,"96":0.48527,"97":8.71749,"98":19.16809,"100":0.01155,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 55 56 57 58 59 60 62 63 66 73 74 99 101"},F:{"46":0.00578,"80":0.00578,"82":0.67013,"83":1.92374,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00578,"18":0.03466,"84":0.01155,"85":0.00578,"88":0.01155,"89":0.00578,"90":0.01155,"91":0.00578,"92":0.02889,"93":0.00578,"94":0.04044,"95":0.06932,"96":0.14443,"97":2.02195,"98":6.73598,_:"12 13 14 15 16 79 80 81 83 86 87"},E:{"4":0,"8":0.00578,"12":0.00578,"13":0.04622,"14":0.36395,"15":0.2253,_:"0 5 6 7 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01155,"11.1":0.05777,"12.1":0.06932,"13.1":0.33507,"14.1":1.14962,"15.1":0.68169,"15.2-15.3":1.27094,"15.4":0.01155},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00161,"6.0-6.1":0,"7.0-7.1":0.00484,"8.1-8.4":0.00484,"9.0-9.2":0.00323,"9.3":0.05811,"10.0-10.2":0.00161,"10.3":0.07103,"11.0-11.2":0.02744,"11.3-11.4":0.02099,"12.0-12.1":0.02583,"12.2-12.5":0.36159,"13.0-13.1":0.04036,"13.2":0.02099,"13.3":0.05004,"13.4-13.7":0.15658,"14.0-14.4":0.69251,"14.5-14.8":3.01058,"15.0-15.1":2.43914,"15.2-15.3":9.08341,"15.4":0.06134},P:{"4":0.15819,"5.0-5.4":0.01086,"6.2-6.4":0.02066,"7.2-7.4":0.23603,"8.2":0.01029,"9.2":0.01086,"10.1":0.06172,"11.1-11.2":0.04219,"12.0":0.02109,"13.0":0.12656,"14.0":0.08437,"15.0":0.08437,"16.0":3.44863},I:{"0":0,"3":0,"4":0.00106,"2.1":0,"2.2":0.00053,"2.3":0.00053,"4.1":0.00211,"4.2-4.3":0.00211,"4.4":0,"4.4.3-4.4.4":0.04434},A:{"11":0.38706,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.61656},Q:{"10.4":0},O:{"0":0.03801},H:{"0":0.38781},L:{"0":21.03817},S:{"2.5":0}}; +module.exports={C:{"48":0.00484,"52":0.06296,"56":0.00969,"60":0.08233,"61":0.00969,"62":0.00969,"64":0.00969,"68":0.00969,"72":0.01453,"78":0.12592,"79":0.00484,"81":0.00484,"84":0.00969,"85":0.00484,"87":0.00969,"88":0.01937,"89":0.00969,"90":0.00969,"91":0.40197,"92":0.00484,"93":0.0339,"94":0.36323,"95":0.0339,"96":0.01453,"97":0.01937,"98":0.0339,"99":0.09202,"100":0.73614,"101":6.51868,"102":0.10655,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 63 65 66 67 69 70 71 73 74 75 76 77 80 82 83 86 103 104 3.5 3.6"},D:{"34":0.00969,"38":0.01453,"47":0.01937,"49":0.02906,"53":0.00969,"65":0.00969,"67":0.00969,"70":0.00969,"74":0.00484,"75":0.01453,"76":0.00969,"77":0.00969,"79":0.35354,"80":0.13076,"81":0.00969,"83":0.01453,"84":0.02906,"85":0.02422,"86":0.0339,"87":0.13076,"88":0.01453,"89":0.05812,"90":0.01453,"91":0.02422,"92":0.02422,"93":0.01937,"94":0.05812,"95":0.07265,"96":0.19372,"97":0.16466,"98":0.16466,"99":0.10655,"100":0.30027,"101":1.36088,"102":17.28951,"103":1.19622,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 55 56 57 58 59 60 61 62 63 64 66 68 69 71 72 73 78 104 105 106"},F:{"46":0.00484,"80":0.00969,"84":0.00484,"85":0.78457,"86":0.87174,"87":0.87174,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00484,"18":0.02422,"85":0.00969,"88":0.00484,"92":0.01937,"95":0.05327,"96":0.01937,"97":0.01453,"98":0.01453,"99":0.04843,"100":0.04843,"101":0.88143,"102":5.81644,"103":0.92501,_:"12 13 14 15 16 79 80 81 83 84 86 87 89 90 91 93 94"},E:{"4":0,"8":0.00969,"12":0.00484,"13":0.04359,"14":0.21794,"15":0.08233,_:"0 5 6 7 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.00484,"10.1":0.01453,"11.1":0.05812,"12.1":0.06296,"13.1":0.31964,"14.1":0.71192,"15.1":0.19856,"15.2-15.3":0.15013,"15.4":0.92986,"15.5":2.42634,"16.0":0.00484},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00361,"8.1-8.4":0,"9.0-9.2":0.00361,"9.3":0.07948,"10.0-10.2":0.00361,"10.3":0.07045,"11.0-11.2":0.01806,"11.3-11.4":0.01806,"12.0-12.1":0.02709,"12.2-12.5":0.35042,"13.0-13.1":0.01264,"13.2":0.02709,"13.3":0.05058,"13.4-13.7":0.12283,"14.0-14.4":0.46422,"14.5-14.8":1.36557,"15.0-15.1":0.41906,"15.2-15.3":0.79839,"15.4":2.96596,"15.5":11.14853,"16.0":0.04516},P:{"4":0.16681,"5.0-5.4":0.02174,"6.2-6.4":0.01016,"7.2-7.4":0.13208,"8.2":0.06207,"9.2":0.03048,"10.1":0.02069,"11.1-11.2":0.03128,"12.0":0.03128,"13.0":0.0834,"14.0":0.06255,"15.0":0.06255,"16.0":0.29192,"17.0":4.00342},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01254,"4.2-4.3":0.00418,"4.4":0,"4.4.3-4.4.4":0.03484},A:{"11":0.3826,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.06703},H:{"0":0.4198},L:{"0":27.15001},S:{"2.5":0},R:{_:"0"},M:{"0":0.79918}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AU.js index e57e65dcecbaad..2c9f933a899a93 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AU.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AU.js @@ -1 +1 @@ -module.exports={C:{"34":0.01736,"48":0.00579,"52":0.02894,"54":0.01736,"66":0.01157,"78":0.05787,"84":0.01157,"87":0.02315,"88":0.00579,"89":0.01157,"90":0.01157,"91":0.05208,"93":0.01736,"94":0.16204,"95":0.05208,"96":0.96064,"97":1.44096,"98":0.01157,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 92 99 3.5 3.6"},D:{"26":0.01157,"34":0.03472,"38":0.11574,"49":0.05787,"53":0.02894,"56":0.01157,"57":0.01157,"59":0.04051,"60":0.02894,"64":0.0463,"65":0.02315,"66":0.01157,"67":0.02315,"68":0.01736,"69":0.02315,"70":0.0463,"71":0.00579,"72":0.05208,"73":0.01157,"74":0.02894,"75":0.01736,"76":0.01736,"77":0.01157,"78":0.03472,"79":0.37037,"80":0.08681,"81":0.0463,"83":0.02894,"84":0.03472,"85":0.0463,"86":0.06944,"87":0.21412,"88":0.03472,"89":0.02894,"90":0.0463,"91":0.08102,"92":0.1794,"93":0.24305,"94":0.2662,"95":0.4456,"96":1.2037,"97":10.78697,"98":22.14685,"99":0.01157,"100":0.02315,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 58 61 62 63 101"},F:{"36":0.00579,"46":0.06366,"80":0.00579,"82":0.14468,"83":0.42245,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00579,"16":0.01157,"17":0.00579,"18":0.02315,"84":0.01157,"85":0.00579,"86":0.02315,"88":0.00579,"89":0.01736,"90":0.01157,"91":0.01157,"92":0.01736,"93":0.00579,"94":0.01157,"95":0.09838,"96":0.10417,"97":1.44096,"98":4.97103,_:"12 13 14 79 80 81 83 87"},E:{"4":0,"11":0.00579,"12":0.01736,"13":0.12731,"14":0.55555,"15":0.36458,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.01157,"10.1":0.04051,"11.1":0.06366,"12.1":0.14468,"13.1":0.59027,"14.1":2.33795,"15.1":1.0706,"15.2-15.3":2.21642,"15.4":0.01157},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01973,"6.0-6.1":0.01315,"7.0-7.1":0.01315,"8.1-8.4":0.02192,"9.0-9.2":0.02631,"9.3":0.21483,"10.0-10.2":0.01973,"10.3":0.24113,"11.0-11.2":0.06796,"11.3-11.4":0.08549,"12.0-12.1":0.06357,"12.2-12.5":1.10701,"13.0-13.1":0.03727,"13.2":0.01754,"13.3":0.10961,"13.4-13.7":0.32005,"14.0-14.4":0.94699,"14.5-14.8":4.1935,"15.0-15.1":2.91112,"15.2-15.3":11.44718,"15.4":0.04823},P:{"4":0.78159,"5.0-5.4":0.01086,"6.2-6.4":0.02066,"7.2-7.4":0.23603,"8.2":0.01029,"9.2":0.01086,"10.1":0.06172,"11.1-11.2":0.03257,"12.0":0.02171,"13.0":0.08684,"14.0":0.0977,"15.0":0.10855,"16.0":2.56187},I:{"0":0,"3":0,"4":0.00291,"2.1":0,"2.2":0.00145,"2.3":0.00145,"4.1":0.00291,"4.2-4.3":0.00654,"4.4":0,"4.4.3-4.4.4":0.02688},A:{"8":0.01068,"9":0.01068,"11":0.3953,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.38347},Q:{"10.4":0.00843},O:{"0":0.08428},H:{"0":0.13165},L:{"0":16.1369},S:{"2.5":0}}; +module.exports={C:{"11":0.00587,"48":0.00587,"51":0.01173,"52":0.0352,"53":0.00587,"54":0.02346,"55":0.00587,"56":0.00587,"57":0.00587,"66":0.00587,"78":0.07626,"79":0.01173,"80":0.0176,"81":0.02346,"82":0.01173,"83":0.0176,"84":0.0176,"85":0.00587,"87":0.00587,"88":0.01173,"89":0.00587,"91":0.06453,"93":0.00587,"94":0.07626,"95":0.01173,"96":0.00587,"97":0.0176,"98":0.0176,"99":0.02933,"100":0.2757,"101":1.95338,"102":0.04106,"103":0.00587,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 86 90 92 104 3.5 3.6"},D:{"26":0.01173,"34":0.02933,"38":0.07626,"47":0.00587,"48":0.01173,"49":0.04693,"53":0.01173,"56":0.01173,"57":0.00587,"58":0.00587,"59":0.04106,"60":0.0352,"61":0.00587,"62":0.00587,"63":0.01173,"64":0.00587,"65":0.0176,"66":0.01173,"67":0.0176,"68":0.01173,"69":0.0176,"70":0.00587,"72":0.00587,"73":0.01173,"74":0.02346,"75":0.01173,"76":0.0176,"77":0.01173,"78":0.0176,"79":0.17598,"80":0.07039,"81":0.04106,"83":0.06453,"84":0.12905,"85":0.14078,"86":0.17011,"87":0.21704,"88":0.0176,"89":0.02346,"90":0.0176,"91":0.04693,"92":0.05279,"93":0.04693,"94":0.05866,"95":0.05279,"96":0.2757,"97":0.20531,"98":0.21704,"99":0.38129,"100":0.82711,"101":2.90954,"102":28.62608,"103":1.62488,"104":0.02346,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 50 51 52 54 55 71 105 106"},F:{"46":0.0352,"71":0.00587,"72":0.00587,"80":0.00587,"81":0.00587,"85":0.01173,"86":0.24637,"87":0.34609,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 73 74 75 76 77 78 79 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.02933,"84":0.01173,"85":0.02346,"86":0.0176,"92":0.02346,"94":0.01173,"95":0.0176,"96":0.02933,"97":0.0176,"98":0.0176,"99":0.04693,"100":0.06453,"101":0.8447,"102":5.98919,"103":0.95029,_:"12 13 14 15 16 17 79 80 81 83 87 88 89 90 91 93"},E:{"4":0,"8":0.00587,"12":0.01173,"13":0.09972,"14":0.34609,"15":0.11732,_:"0 5 6 7 9 10 11 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.00587,"10.1":0.02346,"11.1":0.05279,"12.1":0.10559,"13.1":0.43995,"14.1":1.14387,"15.1":0.21118,"15.2-15.3":0.19358,"15.4":1.40197,"15.5":3.78944},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01278,"6.0-6.1":0.01278,"7.0-7.1":0.01278,"8.1-8.4":0.0213,"9.0-9.2":0.01491,"9.3":0.18959,"10.0-10.2":0.01491,"10.3":0.20664,"11.0-11.2":0.04474,"11.3-11.4":0.06604,"12.0-12.1":0.049,"12.2-12.5":0.90963,"13.0-13.1":0.02769,"13.2":0.01917,"13.3":0.08521,"13.4-13.7":0.2322,"14.0-14.4":0.63482,"14.5-14.8":1.78943,"15.0-15.1":0.45588,"15.2-15.3":0.85211,"15.4":2.78214,"15.5":12.7987,"16.0":0.02556},P:{"4":0.27171,"5.0-5.4":0.02174,"6.2-6.4":0.01016,"7.2-7.4":0.13208,"8.2":0.06207,"9.2":0.03048,"10.1":0.02069,"11.1-11.2":0.02174,"12.0":0.02174,"13.0":0.05434,"14.0":0.06521,"15.0":0.04347,"16.0":0.21737,"17.0":2.49972},I:{"0":0,"3":0,"4":0.00145,"2.1":0,"2.2":0.0029,"2.3":0.00073,"4.1":0.00363,"4.2-4.3":0.00508,"4.4":0,"4.4.3-4.4.4":0.02757},A:{"8":0.02779,"9":0.01852,"11":0.30565,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.00827},O:{"0":0.06616},H:{"0":0.12919},L:{"0":16.66425},S:{"2.5":0},R:{_:"0"},M:{"0":0.39283}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AW.js index a445f9dc65bd3f..a07be06fa2112b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AW.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AW.js @@ -1 +1 @@ -module.exports={C:{"52":0.00728,"78":0.01821,"89":0.00364,"90":0.00728,"91":0.01457,"92":0.01093,"95":0.01093,"96":0.35692,"97":1.02704,"98":0.00728,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 93 94 99 3.5 3.6"},D:{"47":0.00728,"49":0.02185,"59":0.00364,"63":0.01093,"65":0.01093,"70":0.02549,"76":0.01093,"79":0.01093,"81":0.01093,"83":0.02549,"84":0.01093,"85":0.02185,"86":0.01457,"87":0.07284,"88":0.00728,"89":0.02185,"90":0.01093,"91":0.05827,"92":0.03642,"93":0.0437,"94":0.04735,"95":0.08377,"96":0.81217,"97":6.06393,"98":12.78342,"99":0.01093,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 50 51 52 53 54 55 56 57 58 60 61 62 64 66 67 68 69 71 72 73 74 75 77 78 80 100 101"},F:{"63":0.00728,"82":0.08741,"83":0.36784,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.00728,"18":0.09105,"84":0.02549,"85":0.02549,"88":0.00728,"89":0.00728,"90":0.01457,"91":0.00728,"92":0.02549,"94":0.03278,"95":0.02549,"96":0.0437,"97":1.60248,"98":4.57435,_:"12 13 14 15 17 79 80 81 83 86 87 93"},E:{"4":0,"7":0.00364,"12":0.00364,"13":0.05099,"14":0.57908,"15":0.17117,_:"0 5 6 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.01457,"11.1":0.02914,"12.1":0.1384,"13.1":0.42976,"14.1":1.02704,"15.1":0.95785,"15.2-15.3":1.71174},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.06182,"10.0-10.2":0.00258,"10.3":0.10819,"11.0-11.2":0.00258,"11.3-11.4":0.03091,"12.0-12.1":0.04637,"12.2-12.5":0.45593,"13.0-13.1":0.00515,"13.2":0.00515,"13.3":0.04637,"13.4-13.7":0.22926,"14.0-14.4":0.92732,"14.5-14.8":4.37388,"15.0-15.1":3.85355,"15.2-15.3":15.50176,"15.4":0.09273},P:{"4":0.2463,"5.0-5.4":0.04115,"6.2-6.4":0.02066,"7.2-7.4":0.23603,"8.2":0.01029,"9.2":0.01026,"10.1":0.06172,"11.1-11.2":0.17446,"12.0":0.04105,"13.0":0.1642,"14.0":0.20525,"15.0":0.23603,"16.0":7.14256},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.15296,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.42599},Q:{"10.4":0},O:{"0":0.01272},H:{"0":0.13243},L:{"0":28.44422},S:{"2.5":0}}; +module.exports={C:{"51":0.00343,"52":0.00686,"78":0.01028,"87":0.00343,"90":0.00686,"97":0.00343,"98":0.00686,"99":0.03085,"100":0.10627,"101":0.99412,"102":0.02057,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 91 92 93 94 95 96 103 104 3.5 3.6"},D:{"49":0.06856,"52":0.00686,"56":0.00343,"58":0.00343,"59":0.00686,"70":0.00686,"76":0.00686,"79":0.02057,"80":0.00343,"83":0.00686,"84":0.00686,"86":0.02057,"87":0.07542,"88":0.00343,"89":0.00343,"90":0.00686,"91":0.02057,"92":0.01714,"93":0.04799,"94":0.01714,"95":0.02057,"96":0.10284,"97":0.02057,"98":0.05828,"99":0.13712,"100":0.42507,"101":2.04652,"102":15.6214,"103":1.37463,"104":0.00686,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 57 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 77 78 81 85 105 106"},F:{"85":0.01371,"86":0.20911,"87":0.26396,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.01028,"16":0.00686,"18":0.01028,"84":0.06856,"85":0.03085,"89":0.00343,"92":0.00686,"97":0.00686,"99":0.01371,"100":0.01714,"101":0.56219,"102":3.79822,"103":0.75416,_:"12 13 15 17 79 80 81 83 86 87 88 90 91 93 94 95 96 98"},E:{"4":0,"12":0.00343,"13":0.03428,"14":0.16454,"15":0.05485,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00343,"11.1":0.04799,"12.1":0.03771,"13.1":0.23996,"14.1":0.52448,"15.1":0.10284,"15.2-15.3":0.95641,"15.4":1.04897,"15.5":2.60185,"16.0":0.01714},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01997,"10.0-10.2":0.00856,"10.3":0.0428,"11.0-11.2":0.00285,"11.3-11.4":0.02283,"12.0-12.1":0.01712,"12.2-12.5":0.43084,"13.0-13.1":0.01141,"13.2":0,"13.3":0.01997,"13.4-13.7":0.10557,"14.0-14.4":0.37378,"14.5-14.8":1.76617,"15.0-15.1":0.37092,"15.2-15.3":1.25829,"15.4":3.42962,"15.5":20.48639,"16.0":0.03709},P:{"4":0.1524,"5.0-5.4":0.01035,"6.2-6.4":0.01016,"7.2-7.4":0.13208,"8.2":0.06207,"9.2":0.03048,"10.1":0.02069,"11.1-11.2":0.13208,"12.0":0.01016,"13.0":0.09144,"14.0":0.11176,"15.0":0.1016,"16.0":0.45719,"17.0":6.84766},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00091,"4.4":0,"4.4.3-4.4.4":0.02538},A:{"11":0.06856,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02629},H:{"0":0.06222},L:{"0":29.23638},S:{"2.5":0},R:{_:"0"},M:{"0":0.39432}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AX.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AX.js index e005f631a23638..ef1d7ba3a4f61e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AX.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AX.js @@ -1 +1 @@ -module.exports={C:{"48":0.0186,"52":0.15503,"68":0.08681,"78":0.03101,"85":0.0062,"91":0.04341,"94":0.0186,"95":0.08681,"96":2.06493,"97":2.67263,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 86 87 88 89 90 92 93 98 99 3.5 3.6"},D:{"49":0.0186,"68":0.0124,"76":0.75032,"84":0.07441,"87":0.04961,"89":0.0124,"90":0.0124,"91":0.0062,"92":0.0124,"93":0.0062,"94":0.09922,"95":0.0124,"96":0.32245,"97":12.20977,"98":24.22731,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 77 78 79 80 81 83 85 86 88 99 100 101"},F:{"82":1.51304,"83":1.43243,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"96":0.03721,"97":2.38118,"98":5.71112,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95"},E:{"4":0,"13":0.03721,"14":0.32245,"15":0.6387,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.0186,"12.1":0.15503,"13.1":0.73172,"14.1":3.24932,"15.1":0.24184,"15.2-15.3":0.89294},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00108,"9.0-9.2":0.00216,"9.3":0.05624,"10.0-10.2":0.01947,"10.3":1.09559,"11.0-11.2":0.00649,"11.3-11.4":0.00108,"12.0-12.1":1.01123,"12.2-12.5":1.54767,"13.0-13.1":0.09085,"13.2":0.00649,"13.3":0.11356,"13.4-13.7":0.12546,"14.0-14.4":0.25416,"14.5-14.8":2.01273,"15.0-15.1":0.79925,"15.2-15.3":3.66423,"15.4":0.00324},P:{"4":1.2008,"5.0-5.4":0.35318,"6.2-6.4":0.35318,"7.2-7.4":0.03744,"8.2":0.01248,"9.2":0.29263,"10.1":0.02018,"11.1-11.2":0.25227,"12.0":0.02496,"13.0":0.07488,"14.0":0.03744,"15.0":0.04992,"16.0":3.05749},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.095},A:{"11":0.16123,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.3192},Q:{"10.4":0},O:{"0":0},H:{"0":0.05396},L:{"0":23.79411},S:{"2.5":0}}; +module.exports={C:{"48":0.016,"52":0.06401,"78":0.10668,"91":0.05867,"98":0.02667,"99":0.03734,"100":0.40005,"101":3.84581,"102":0.24536,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 103 104 3.5 3.6"},D:{"49":0.02134,"58":0.00533,"64":0.02134,"76":0.05867,"78":0.01067,"84":0.02134,"87":0.02134,"92":0.01067,"93":0.01067,"94":0.00533,"96":0.032,"97":0.01067,"98":0.01067,"99":0.03734,"100":0.38938,"101":1.98425,"102":30.46781,"103":2.77368,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 63 65 66 67 68 69 70 71 72 73 74 75 77 79 80 81 83 85 86 88 89 90 91 95 104 105 106"},F:{"46":0.00533,"84":0.01067,"86":1.01879,"87":0.41072,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"99":0.20269,"100":0.016,"101":0.49606,"102":3.65379,"103":0.74676,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98"},E:{"4":0,"12":0.01067,"13":0.03734,"14":0.27737,"15":0.22936,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 11.1 16.0","9.1":0.01067,"10.1":0.016,"12.1":0.03734,"13.1":0.72009,"14.1":1.07213,"15.1":0.29337,"15.2-15.3":0.06401,"15.4":0.69342,"15.5":1.00279},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01539,"10.0-10.2":0.00962,"10.3":0.35009,"11.0-11.2":0,"11.3-11.4":0.00962,"12.0-12.1":0.6973,"12.2-12.5":1.42537,"13.0-13.1":0.21448,"13.2":0.00481,"13.3":0.04713,"13.4-13.7":0.06829,"14.0-14.4":0.26257,"14.5-14.8":0.93774,"15.0-15.1":0.08079,"15.2-15.3":0.41068,"15.4":0.93101,"15.5":4.14434,"16.0":0.00481},P:{"4":0.52747,"5.0-5.4":0.24229,"6.2-6.4":0.14134,"7.2-7.4":0.04489,"8.2":0.03029,"9.2":0.29277,"10.1":0.02245,"11.1-11.2":0.16153,"12.0":0.05048,"13.0":0.05611,"14.0":0.02245,"15.0":0.17162,"16.0":0.07856,"17.0":4.01775},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.015,"4.4":0,"4.4.3-4.4.4":0.00833},A:{"11":0.09068,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.02651},L:{"0":30.9456},S:{"2.5":0},R:{_:"0"},M:{"0":2.32417}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AZ.js index 2e3d6d35158199..8999f6845890e7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AZ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AZ.js @@ -1 +1 @@ -module.exports={C:{"52":0.00983,"56":0.00328,"68":0.13432,"78":0.06552,"79":0.0131,"83":0.00655,"84":0.00655,"89":0.00983,"91":0.00983,"93":0.00655,"95":0.0131,"96":0.1638,"97":0.19984,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 80 81 82 85 86 87 88 90 92 94 98 99 3.5 3.6"},D:{"22":0.00655,"34":0.00328,"38":0.02948,"40":0.00328,"49":0.02621,"53":0.02948,"55":0.00328,"56":0.00655,"58":0.00328,"63":0.00655,"65":0.01638,"66":0.0131,"67":0.02621,"68":0.03604,"69":0.02621,"70":0.00983,"71":0.00655,"72":0.00983,"73":0.00328,"74":0.02621,"75":0.00328,"76":0.00328,"77":0.00983,"78":0.00983,"79":0.7502,"80":0.07207,"81":0.00655,"83":0.02293,"84":0.02621,"85":0.01966,"86":0.03931,"87":0.05897,"88":0.01966,"89":0.05569,"90":0.01638,"91":0.08845,"92":0.05897,"93":0.17363,"94":0.02948,"95":0.04914,"96":0.51761,"97":7.7805,"98":15.66911,"99":0.00655,"100":0.01638,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 41 42 43 44 45 46 47 48 50 51 52 54 57 59 60 61 62 64 101"},F:{"25":0.00655,"28":0.02621,"32":0.00328,"36":0.00655,"40":0.00655,"46":0.01966,"62":0.00655,"77":0.00328,"80":0.00983,"81":0.0131,"82":0.36691,"83":2.07043,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 26 27 29 30 31 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.02621,"84":0.00983,"92":0.00328,"94":0.00655,"95":0.00983,"96":0.00655,"97":0.2326,"98":0.74365,_:"12 13 14 15 16 17 79 80 81 83 85 86 87 88 89 90 91 93"},E:{"4":0,"13":0.00983,"14":0.10811,"15":0.04586,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.4","5.1":0.04259,"12.1":0.03604,"13.1":0.07862,"14.1":0.27518,"15.1":0.13759,"15.2-15.3":0.20311},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00689,"6.0-6.1":0.00098,"7.0-7.1":0.03347,"8.1-8.4":0,"9.0-9.2":0.00394,"9.3":0.01181,"10.0-10.2":0.01378,"10.3":0.1073,"11.0-11.2":0.02461,"11.3-11.4":0.02953,"12.0-12.1":0.01181,"12.2-12.5":0.52272,"13.0-13.1":0.01969,"13.2":0.00788,"13.3":0.04824,"13.4-13.7":0.16833,"14.0-14.4":0.55816,"14.5-14.8":1.94027,"15.0-15.1":1.77292,"15.2-15.3":4.52829,"15.4":0.02658},P:{"4":0.62086,"5.0-5.4":0.01086,"6.2-6.4":0.02066,"7.2-7.4":0.08142,"8.2":0.01018,"9.2":0.01018,"10.1":0.01018,"11.1-11.2":0.12214,"12.0":0.04071,"13.0":0.19338,"14.0":0.25445,"15.0":0.21374,"16.0":3.27732},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00359,"4.2-4.3":0.00932,"4.4":0,"4.4.3-4.4.4":0.04088},A:{"11":0.05897,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.06052},Q:{"10.4":0},O:{"0":0.29586},H:{"0":0.55383},L:{"0":50.00176},S:{"2.5":0}}; +module.exports={C:{"36":0.00935,"52":0.00312,"68":0.07788,"78":0.28347,"79":0.00623,"80":0.00312,"84":0.01246,"87":0.00312,"88":0.01246,"89":0.00623,"91":0.00935,"99":0.02181,"100":0.04361,"101":0.26166,"102":0.02181,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 81 82 83 85 86 90 92 93 94 95 96 97 98 103 104 3.5 3.6"},D:{"11":0.00312,"22":0.00312,"28":0.00935,"38":0.01869,"49":0.02492,"53":0.05296,"55":0.00312,"56":0.00623,"58":0.00312,"62":0.00312,"63":0.00623,"65":0.00312,"66":0.00623,"67":0.00935,"68":0.02492,"69":0.01246,"70":0.00623,"71":0.00312,"72":0.00623,"74":0.06542,"75":0.01246,"77":0.07788,"78":0.00312,"79":0.73826,"80":0.02181,"81":0.00935,"83":0.02804,"84":0.03115,"85":0.02181,"86":0.06542,"87":0.13083,"88":0.01246,"89":0.03427,"90":0.01558,"91":0.0405,"92":0.03427,"93":0.01869,"94":0.01246,"95":0.01246,"96":0.05607,"97":0.04361,"98":0.05919,"99":0.06542,"100":0.2274,"101":1.1837,"102":17.62779,"103":2.50758,"104":0.00623,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 57 59 60 61 64 73 76 105 106"},F:{"25":0.01246,"28":0.0405,"36":0.00312,"40":0.00623,"46":0.02492,"62":0.02492,"68":0.00623,"77":0.00623,"79":0.00623,"82":0.0405,"84":0.01558,"85":0.1246,"86":0.31773,"87":1.36126,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 63 64 65 66 67 69 70 71 72 73 74 75 76 78 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.03115,"84":0.00935,"86":0.00623,"89":0.00312,"92":0.00312,"98":0.00312,"99":0.00935,"100":0.00623,"101":0.16821,"102":0.94073,"103":0.29281,_:"12 13 14 15 16 17 79 80 81 83 85 87 88 90 91 93 94 95 96 97"},E:{"4":0,"11":0.00935,"13":0.00935,"14":0.08411,"15":0.01246,_:"0 5 6 7 8 9 10 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00312,"11.1":0.00312,"12.1":0.02492,"13.1":0.0623,"14.1":0.14641,"15.1":0.05919,"15.2-15.3":0.05607,"15.4":0.19625,"15.5":0.28035,"16.0":0.00312},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00741,"6.0-6.1":0.00555,"7.0-7.1":0.01852,"8.1-8.4":0,"9.0-9.2":0.00463,"9.3":0.01389,"10.0-10.2":0.00463,"10.3":0.08517,"11.0-11.2":0.01111,"11.3-11.4":0.03148,"12.0-12.1":0.01018,"12.2-12.5":0.52861,"13.0-13.1":0.01481,"13.2":0.0037,"13.3":0.03148,"13.4-13.7":0.13331,"14.0-14.4":0.36475,"14.5-14.8":0.72395,"15.0-15.1":0.25088,"15.2-15.3":0.47862,"15.4":1.79599,"15.5":4.61403,"16.0":0.10831},P:{"4":0.72373,"5.0-5.4":0.02174,"6.2-6.4":0.01016,"7.2-7.4":0.09174,"8.2":0.06207,"9.2":0.01019,"10.1":0.01019,"11.1-11.2":0.10193,"12.0":0.03058,"13.0":0.1529,"14.0":0.13251,"15.0":0.12232,"16.0":0.40774,"17.0":3.39442},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00247,"4.2-4.3":0.00493,"4.4":0,"4.4.3-4.4.4":0.02014},A:{"11":0.0405,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.37873},H:{"0":0.65844},L:{"0":54.00474},S:{"2.5":0},R:{_:"0"},M:{"0":0.10329}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BA.js index bc1fecb67af086..1e6738347ef2b7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BA.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BA.js @@ -1 +1 @@ -module.exports={C:{"36":0.007,"45":0.47264,"48":0.007,"52":0.62318,"66":0.007,"68":0.007,"71":0.0035,"72":0.007,"77":0.0035,"78":0.0105,"80":0.0035,"83":0.0035,"84":0.0035,"88":0.01751,"89":0.007,"91":0.01751,"92":0.0105,"93":0.014,"94":0.007,"95":0.04201,"96":1.07131,"97":1.68748,"98":0.007,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 69 70 73 74 75 76 79 81 82 85 86 87 90 99 3.5 3.6"},D:{"38":0.014,"40":0.007,"42":0.0035,"43":0.007,"47":0.0105,"48":0.007,"49":0.15755,"51":0.0035,"53":0.03501,"55":0.0035,"63":0.0105,"65":0.007,"67":0.007,"68":0.0105,"70":0.02801,"71":0.0035,"72":0.0105,"73":0.007,"74":0.0105,"75":0.0035,"76":0.007,"77":0.014,"78":0.0105,"79":0.16455,"80":0.007,"81":0.02451,"83":0.01751,"84":0.04901,"85":0.02451,"86":0.03851,"87":0.09803,"88":0.01751,"89":0.04201,"90":0.03501,"91":0.04201,"92":0.04551,"93":0.55316,"94":0.14704,"95":0.04901,"96":0.40262,"97":6.79894,"98":16.19213,"99":0.01751,"100":0.0105,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 41 44 45 46 50 52 54 56 57 58 59 60 61 62 64 66 69 101"},F:{"28":0.014,"36":0.007,"40":0.0105,"46":0.007,"67":0.007,"72":0.007,"82":0.29058,"83":1.28137,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.007,"17":0.0035,"18":0.0105,"84":0.007,"85":0.02801,"89":0.0035,"92":0.007,"95":0.014,"96":0.02101,"97":0.36761,"98":1.49843,_:"12 13 14 16 79 80 81 83 86 87 88 90 91 93 94"},E:{"4":0,"12":0.007,"13":0.0035,"14":0.04551,"15":0.01751,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 10.1 11.1 15.4","9.1":0.007,"12.1":0.02101,"13.1":0.04551,"14.1":0.15404,"15.1":0.08753,"15.2-15.3":0.12604},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00104,"6.0-6.1":0,"7.0-7.1":0.01509,"8.1-8.4":0,"9.0-9.2":0.00156,"9.3":0.07544,"10.0-10.2":0.00052,"10.3":0.04266,"11.0-11.2":0.00624,"11.3-11.4":0.00988,"12.0-12.1":0.00728,"12.2-12.5":0.27366,"13.0-13.1":0.00312,"13.2":0.00104,"13.3":0.01873,"13.4-13.7":0.06451,"14.0-14.4":0.20602,"14.5-14.8":1.11232,"15.0-15.1":0.68466,"15.2-15.3":2.65749,"15.4":0.01873},P:{"4":0.19504,"5.0-5.4":0.1009,"6.2-6.4":0.18286,"7.2-7.4":0.06159,"8.2":0.02052,"9.2":0.02053,"10.1":0.01018,"11.1-11.2":0.09239,"12.0":0.02053,"13.0":0.10266,"14.0":0.09239,"15.0":0.08212,"16.0":2.30974},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00263,"4.2-4.3":0.01052,"4.4":0,"4.4.3-4.4.4":0.09735},A:{"11":0.06302,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.208},Q:{"10.4":0},O:{"0":0.026},H:{"0":0.20307},L:{"0":48.43978},S:{"2.5":0}}; +module.exports={C:{"45":0.567,"52":0.522,"56":0.003,"63":0.003,"65":0.003,"68":0.006,"72":0.003,"78":0.015,"80":0.006,"88":0.012,"89":0.009,"91":0.018,"94":0.003,"95":0.024,"96":0.003,"97":0.027,"98":0.006,"99":0.093,"100":0.186,"101":1.8,"102":0.081,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 64 66 67 69 70 71 73 74 75 76 77 79 81 82 83 84 85 86 87 90 92 93 103 104 3.5 3.6"},D:{"22":0.003,"26":0.006,"38":0.009,"43":0.009,"47":0.003,"49":0.105,"53":0.018,"55":0.006,"62":0.009,"63":0.012,"67":0.003,"68":0.012,"69":0.003,"70":0.009,"71":0.003,"72":0.006,"73":0.006,"74":0.006,"75":0.003,"76":0.009,"77":0.042,"78":0.003,"79":0.114,"80":0.009,"81":0.012,"83":0.024,"84":0.015,"85":0.006,"86":0.021,"87":0.039,"88":0.012,"89":0.036,"90":0.012,"91":0.03,"92":0.027,"93":0.015,"94":0.03,"95":0.024,"96":0.036,"97":0.075,"98":0.054,"99":0.12,"100":0.234,"101":1.086,"102":17.466,"103":1.749,"104":0.009,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 48 50 51 52 54 56 57 58 59 60 61 64 65 66 105 106"},F:{"28":0.021,"36":0.006,"40":0.006,"46":0.009,"81":0.003,"84":0.003,"85":0.057,"86":0.363,"87":0.822,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.003,"18":0.006,"85":0.03,"92":0.012,"98":0.003,"99":0.003,"100":0.006,"101":0.171,"102":1.179,"103":0.234,_:"12 13 15 16 17 79 80 81 83 84 86 87 88 89 90 91 93 94 95 96 97"},E:{"4":0,"13":0.006,"14":0.033,"15":0.021,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.006,"12.1":0.012,"13.1":0.021,"14.1":0.105,"15.1":0.021,"15.2-15.3":0.012,"15.4":0.096,"15.5":0.183},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00063,"7.0-7.1":0.00877,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05574,"10.0-10.2":0.00063,"10.3":0.08831,"11.0-11.2":0.00752,"11.3-11.4":0.01315,"12.0-12.1":0.01002,"12.2-12.5":0.35637,"13.0-13.1":0.01002,"13.2":0.00188,"13.3":0.01628,"13.4-13.7":0.06451,"14.0-14.4":0.17787,"14.5-14.8":0.49416,"15.0-15.1":0.10898,"15.2-15.3":0.23111,"15.4":0.85929,"15.5":3.72902,"16.0":0.01065},P:{"4":0.21609,"5.0-5.4":0.02174,"6.2-6.4":0.38204,"7.2-7.4":0.05145,"8.2":0.06207,"9.2":0.02058,"10.1":0.01019,"11.1-11.2":0.1029,"12.0":0.03087,"13.0":0.07203,"14.0":0.08232,"15.0":0.05145,"16.0":0.22638,"17.0":2.21236},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00629,"4.2-4.3":0.01259,"4.4":0,"4.4.3-4.4.4":0.12114},A:{"11":0.153,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.014},H:{"0":0.19221},L:{"0":60.77353},S:{"2.5":0},R:{_:"0"},M:{"0":0.12602}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BB.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BB.js index eb29c4981bf997..2c7bf3d67993d1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BB.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BB.js @@ -1 +1 @@ -module.exports={C:{"45":0.0092,"52":0.0092,"78":0.0184,"80":0.0092,"87":0.0276,"89":0.0276,"91":0.0092,"95":0.0322,"96":0.7912,"97":1.2512,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 81 82 83 84 85 86 88 90 92 93 94 98 99 3.5 3.6"},D:{"49":0.0138,"50":0.0138,"72":0.0046,"74":0.0092,"75":0.0092,"76":0.0368,"77":0.0092,"79":0.345,"80":0.0092,"81":0.0414,"83":0.0138,"85":0.0138,"86":0.0184,"87":0.1012,"88":0.0138,"89":0.0092,"90":0.0046,"91":0.046,"92":0.0322,"93":0.1288,"94":0.0874,"95":0.0368,"96":0.4094,"97":9.6968,"98":18.6484,"99":0.0138,"100":0.023,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 78 84 101"},F:{"82":0.1518,"83":0.7038,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.0092,"17":0.0184,"18":0.023,"91":0.0046,"92":0.0046,"94":0.0138,"95":0.0092,"96":0.0782,"97":1.5962,"98":5.2394,_:"12 13 14 15 79 80 81 83 84 85 86 87 88 89 90 93"},E:{"4":0.0092,"13":0.0138,"14":0.1242,"15":0.0782,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.0598,"11.1":0.0138,"12.1":0.0322,"13.1":0.1518,"14.1":0.8648,"15.1":0.6762,"15.2-15.3":1.0488,"15.4":0.0138},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.05018,"6.0-6.1":0,"7.0-7.1":0.00878,"8.1-8.4":0,"9.0-9.2":0.00125,"9.3":0.0966,"10.0-10.2":0,"10.3":0.05269,"11.0-11.2":0.00502,"11.3-11.4":0.00878,"12.0-12.1":0.00753,"12.2-12.5":0.82045,"13.0-13.1":0.03136,"13.2":0.00251,"13.3":0.01882,"13.4-13.7":0.06273,"14.0-14.4":0.51184,"14.5-14.8":1.78516,"15.0-15.1":1.73624,"15.2-15.3":7.27991,"15.4":0.05896},P:{"4":0.2516,"5.0-5.4":0.01086,"6.2-6.4":0.02079,"7.2-7.4":0.26254,"8.2":0.02052,"9.2":0.0104,"10.1":0.01018,"11.1-11.2":0.12033,"12.0":0.01094,"13.0":0.07658,"14.0":0.21879,"15.0":0.28442,"16.0":4.2882},I:{"0":0,"3":0,"4":0.00085,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00057,"4.2-4.3":0.00114,"4.4":0,"4.4.3-4.4.4":0.02444},A:{"10":0.0368,"11":0.092,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.0216},N:{_:"10 11"},R:{_:"0"},M:{"0":0.5562},Q:{"10.4":0},O:{"0":0.0378},H:{"0":0.07157},L:{"0":33.1902},S:{"2.5":0}}; +module.exports={C:{"45":0.01447,"78":0.01929,"87":0.01929,"91":0.01929,"97":0.00482,"98":0.01447,"99":0.00965,"100":0.19774,"101":1.56748,"102":0.11093,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 92 93 94 95 96 103 104 3.5 3.6"},D:{"50":0.00482,"56":0.01447,"70":0.03376,"73":0.00482,"75":0.00482,"76":0.04823,"79":0.16398,"80":0.05305,"81":0.03858,"83":0.01929,"84":0.01447,"85":0.00965,"86":0.02412,"87":0.04341,"88":0.00965,"89":0.01447,"91":0.00965,"92":0.00482,"93":0.07235,"95":0.01447,"96":0.04823,"97":0.07235,"98":0.03858,"99":0.10128,"100":0.40996,"101":2.6623,"102":21.53952,"103":1.59159,"104":0.00482,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 74 77 78 90 94 105 106"},F:{"86":0.32314,"87":0.71863,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"89":0.00482,"97":0.01447,"98":0.00965,"99":0.03858,"100":0.01447,"101":1.1961,"102":9.56401,"103":1.50478,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 90 91 92 93 94 95 96"},E:{"4":0.00965,"13":0.01929,"14":0.11093,"15":0.08681,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 16.0","9.1":0.04823,"11.1":0.02894,"12.1":0.01447,"13.1":0.10128,"14.1":0.3135,"15.1":0.0627,"15.2-15.3":0.20257,"15.4":0.545,"15.5":1.87615},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00328,"6.0-6.1":0,"7.0-7.1":0.00983,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.26327,"10.0-10.2":0,"10.3":0.04697,"11.0-11.2":0,"11.3-11.4":0.01529,"12.0-12.1":0.00655,"12.2-12.5":0.54402,"13.0-13.1":0.03059,"13.2":0.00218,"13.3":0.00983,"13.4-13.7":0.04588,"14.0-14.4":0.11907,"14.5-14.8":0.57242,"15.0-15.1":0.20974,"15.2-15.3":0.58444,"15.4":1.9281,"15.5":6.4616,"16.0":0.03933},P:{"4":0.23861,"5.0-5.4":0.02174,"6.2-6.4":0.02099,"7.2-7.4":0.27114,"8.2":0.06207,"9.2":0.01049,"10.1":0.01019,"11.1-11.2":0.04338,"12.0":0.01049,"13.0":0.04338,"14.0":0.06507,"15.0":0.08677,"16.0":0.40129,"17.0":4.90227},I:{"0":0,"3":0,"4":0.00085,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00171,"4.4":0,"4.4.3-4.4.4":0.02332},A:{"11":0.05788,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.01035},Q:{"10.4":0},O:{"0":0.04142},H:{"0":0.13723},L:{"0":35.61598},S:{"2.5":0},R:{_:"0"},M:{"0":0.52288}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BD.js index e0d5e1e133d466..1c52cf50a610fb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BD.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BD.js @@ -1 +1 @@ -module.exports={C:{"11":0.00817,"40":0.01905,"41":0.00272,"43":0.00544,"47":0.01089,"48":0.00272,"49":0.00272,"50":0.00817,"52":0.049,"56":0.00817,"57":0.00272,"68":0.00544,"72":0.00817,"78":0.02722,"79":0.00544,"80":0.00544,"81":0.00544,"82":0.00544,"84":0.00544,"86":0.00272,"87":0.00272,"88":0.00817,"89":0.01361,"90":0.00272,"91":0.03266,"92":0.01361,"93":0.01089,"94":0.00817,"95":0.03266,"96":0.89009,"97":1.70669,"98":0.16876,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 42 44 45 46 51 53 54 55 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 83 85 99 3.5 3.6"},D:{"38":0.00544,"39":0.00272,"43":0.00544,"47":0.00272,"49":0.00817,"50":0.00272,"53":0.00544,"55":0.00272,"56":0.00817,"62":0.00272,"63":0.00544,"64":0.01361,"65":0.00544,"66":0.00544,"67":0.00272,"69":0.00817,"70":0.00817,"71":0.00544,"72":0.00272,"73":0.00817,"74":0.00817,"75":0.00272,"76":0.00544,"77":0.00544,"78":0.00817,"79":0.02722,"80":0.01633,"81":0.02178,"83":0.02722,"84":0.04083,"85":0.02994,"86":0.06533,"87":0.07349,"88":0.01089,"89":0.03266,"90":0.02178,"91":0.02994,"92":0.05444,"93":0.16876,"94":0.03811,"95":0.049,"96":0.25042,"97":4.55118,"98":12.09112,"99":0.03539,"100":0.04083,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 44 45 46 48 51 52 54 57 58 59 60 61 68 101"},F:{"28":0.00817,"29":0.00544,"36":0.00817,"46":0.00544,"67":0.00817,"71":0.00272,"80":0.00272,"82":0.06805,"83":0.51174,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00817,"16":0.00272,"18":0.01361,"84":0.00544,"85":0.00272,"89":0.00544,"92":0.01089,"95":0.00544,"96":0.01361,"97":0.22593,"98":0.84382,_:"13 14 15 17 79 80 81 83 86 87 88 90 91 93 94"},E:{"4":0,"13":0.00817,"14":0.01633,"15":0.01089,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.4","12.1":0.00272,"13.1":0.01089,"14.1":0.04627,"15.1":0.02994,"15.2-15.3":0.0871},G:{"8":0,"3.2":0.0008,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00723,"6.0-6.1":0.0002,"7.0-7.1":0.05405,"8.1-8.4":0.001,"9.0-9.2":0.00181,"9.3":0.02733,"10.0-10.2":0.001,"10.3":0.02934,"11.0-11.2":0.00442,"11.3-11.4":0.00342,"12.0-12.1":0.00482,"12.2-12.5":0.1704,"13.0-13.1":0.00422,"13.2":0.00141,"13.3":0.01186,"13.4-13.7":0.03597,"14.0-14.4":0.08641,"14.5-14.8":0.24998,"15.0-15.1":0.30624,"15.2-15.3":0.99528,"15.4":0.01125},P:{"4":0.33266,"5.0-5.4":0.01086,"6.2-6.4":0.02079,"7.2-7.4":0.10396,"8.2":0.02052,"9.2":0.0104,"10.1":0.01018,"11.1-11.2":0.03119,"12.0":0.02079,"13.0":0.08317,"14.0":0.07277,"15.0":0.05198,"16.0":0.65493},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00228,"4.2-4.3":0.00683,"4.4":0,"4.4.3-4.4.4":0.18738},A:{"8":0.01221,"9":0.0061,"11":0.0824,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.11643},Q:{"10.4":0},O:{"0":2.93263},H:{"0":2.31484},L:{"0":65.76212},S:{"2.5":0}}; +module.exports={C:{"40":0.0199,"43":0.00284,"47":0.00569,"48":0.00284,"52":0.04549,"56":0.00284,"57":0.00569,"65":0.00284,"72":0.00853,"78":0.01137,"79":0.00569,"80":0.00569,"81":0.00569,"82":0.00569,"83":0.00284,"84":0.00569,"86":0.00284,"87":0.00284,"88":0.00569,"89":0.01422,"91":0.03412,"92":0.00569,"93":0.00284,"94":0.00569,"95":0.00569,"96":0.00569,"97":0.00853,"98":0.01422,"99":0.03696,"100":0.19332,"101":2.40234,"102":0.30704,"103":0.00853,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 44 45 46 49 50 51 53 54 55 58 59 60 61 62 63 64 66 67 68 69 70 71 73 74 75 76 77 85 90 104 3.5 3.6"},D:{"38":0.00284,"49":0.01137,"50":0.00569,"55":0.00284,"56":0.00569,"63":0.00284,"64":0.00284,"65":0.00284,"66":0.00284,"67":0.00284,"69":0.00853,"70":0.00569,"71":0.00569,"72":0.00853,"73":0.00853,"74":0.01706,"75":0.00284,"76":0.00569,"77":0.00853,"78":0.01422,"79":0.02274,"80":0.02843,"81":0.02559,"83":0.04549,"84":0.05686,"85":0.06539,"86":0.10235,"87":0.07108,"88":0.00853,"89":0.03127,"90":0.01706,"91":0.02843,"92":0.02559,"93":0.01137,"94":0.02559,"95":0.02843,"96":0.04833,"97":0.04265,"98":0.04833,"99":0.06823,"100":0.17342,"101":0.61125,"102":15.04516,"103":1.57218,"104":0.0398,"105":0.00569,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 51 52 53 54 57 58 59 60 61 62 68 106"},F:{"28":0.00569,"36":0.00569,"46":0.00569,"68":0.01137,"69":0.00284,"70":0.00569,"71":0.00853,"84":0.00284,"85":0.02274,"86":0.09382,"87":0.44351,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00853,"16":0.00569,"18":0.0199,"84":0.00569,"85":0.00569,"89":0.00569,"92":0.01422,"95":0.00284,"96":0.00284,"97":0.00284,"98":0.00569,"99":0.00569,"100":0.00853,"101":0.11372,"102":0.84721,"103":0.19048,_:"13 14 15 17 79 80 81 83 86 87 88 90 91 93 94"},E:{"4":0,"13":0.00853,"14":0.01422,"15":0.00569,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.00569,"13.1":0.01422,"14.1":0.03412,"15.1":0.00853,"15.2-15.3":0.00853,"15.4":0.05117,"15.5":0.12794},G:{"8":0.00021,"3.2":0.00084,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00188,"6.0-6.1":0,"7.0-7.1":0.04179,"8.1-8.4":0.00125,"9.0-9.2":0.00167,"9.3":0.02257,"10.0-10.2":0.00104,"10.3":0.02048,"11.0-11.2":0.00313,"11.3-11.4":0.00376,"12.0-12.1":0.00439,"12.2-12.5":0.16234,"13.0-13.1":0.00355,"13.2":0.00167,"13.3":0.00731,"13.4-13.7":0.03677,"14.0-14.4":0.06999,"14.5-14.8":0.13769,"15.0-15.1":0.06561,"15.2-15.3":0.1379,"15.4":0.33305,"15.5":1.01732,"16.0":0.00648},P:{"4":0.26233,"5.0-5.4":0.02174,"6.2-6.4":0.02099,"7.2-7.4":0.10493,"8.2":0.06207,"9.2":0.01049,"10.1":0.01019,"11.1-11.2":0.03148,"12.0":0.01049,"13.0":0.05247,"14.0":0.05247,"15.0":0.03148,"16.0":0.13641,"17.0":0.68207},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00203,"4.2-4.3":0.00473,"4.4":0,"4.4.3-4.4.4":0.1507},A:{"8":0.00316,"11":0.08213,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":2.36897},H:{"0":2.30377},L:{"0":66.9862},S:{"2.5":0},R:{_:"0"},M:{"0":0.12167}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BE.js index 25f4a1b7317602..1856c6690a3e52 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BE.js @@ -1 +1 @@ -module.exports={C:{"48":0.00665,"52":0.03988,"56":0.01994,"68":0.01329,"72":0.00665,"78":0.09304,"84":0.02658,"87":0.11963,"88":0.00665,"89":0.01329,"90":0.01994,"91":0.10634,"92":0.00665,"94":0.01994,"95":0.05981,"96":1.33585,"97":2.12007,"98":0.00665,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 93 99 3.5 3.6"},D:{"49":0.05981,"60":0.01329,"65":0.00665,"66":0.02658,"67":0.01994,"69":0.00665,"74":0.03323,"75":0.03988,"76":0.03323,"77":0.03988,"78":0.37218,"79":0.51839,"80":0.03988,"81":0.01329,"83":0.15286,"84":0.01994,"85":0.02658,"86":0.03988,"87":0.15286,"88":0.03323,"89":0.0864,"90":0.03988,"91":0.07975,"92":0.07311,"93":0.14621,"94":0.16615,"95":0.10634,"96":0.79087,"97":14.61455,"98":26.43114,"99":0.01329,"100":0.02658,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 61 62 63 64 68 70 71 72 73 101"},F:{"82":0.20603,"83":0.63137,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01994,"85":0.00665,"86":0.01994,"89":0.00665,"90":0.01329,"91":0.00665,"92":0.01994,"93":0.00665,"94":0.01994,"95":0.03323,"96":0.18609,"97":2.91095,"98":7.56979,_:"12 13 14 15 16 17 79 80 81 83 84 87 88"},E:{"4":0,"11":0.01329,"12":0.00665,"13":0.07311,"14":0.31901,"15":0.20603,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01329,"11.1":0.03988,"12.1":0.09304,"13.1":0.39876,"14.1":1.12317,"15.1":0.65795,"15.2-15.3":1.46212,"15.4":0.01329},G:{"8":0.00135,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00135,"8.1-8.4":0.00812,"9.0-9.2":0,"9.3":0.05279,"10.0-10.2":0.00406,"10.3":0.11235,"11.0-11.2":0.0176,"11.3-11.4":0.03519,"12.0-12.1":0.01489,"12.2-12.5":0.40338,"13.0-13.1":0.02301,"13.2":0.00677,"13.3":0.04467,"13.4-13.7":0.14619,"14.0-14.4":0.53874,"14.5-14.8":2.4893,"15.0-15.1":2.11976,"15.2-15.3":7.47196,"15.4":0.03519},P:{"4":0.08548,"5.0-5.4":0.01086,"6.2-6.4":0.18286,"7.2-7.4":0.26254,"8.2":0.02052,"9.2":0.0104,"10.1":0.01018,"11.1-11.2":0.02137,"12.0":0.02137,"13.0":0.05342,"14.0":0.07479,"15.0":0.05342,"16.0":2.68191},I:{"0":0,"3":0,"4":0.00152,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00152,"4.2-4.3":0.0038,"4.4":0,"4.4.3-4.4.4":0.03341},A:{"11":0.31901,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.22136},Q:{"10.4":0},O:{"0":0.02012},H:{"0":0.09526},L:{"0":16.38523},S:{"2.5":0}}; +module.exports={C:{"52":0.02838,"75":0.04257,"78":0.04967,"87":0.16319,"91":0.09933,"95":0.0071,"97":0.0071,"98":0.0071,"99":0.02129,"100":0.25542,"101":2.1356,"102":0.07805,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 79 80 81 82 83 84 85 86 88 89 90 92 93 94 96 103 104 3.5 3.6"},D:{"49":0.05676,"60":0.02838,"64":0.09933,"66":0.02129,"67":0.02838,"69":0.02129,"74":0.02838,"75":0.03548,"76":0.04257,"77":0.03548,"78":0.46118,"79":0.63146,"80":0.01419,"81":0.01419,"83":0.18447,"84":0.02838,"85":0.02838,"86":0.02129,"87":0.07805,"88":0.01419,"89":0.03548,"90":0.04257,"91":0.03548,"92":0.04257,"93":0.05676,"94":0.04257,"95":0.04967,"96":0.13481,"97":0.07805,"98":0.13481,"99":0.26252,"100":0.55341,"101":4.15058,"102":38.99412,"103":2.82381,"104":0.0071,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 61 62 63 65 68 70 71 72 73 105 106"},F:{"85":0.0071,"86":0.24833,"87":0.40442,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.0071,"92":0.01419,"96":0.01419,"97":0.03548,"98":0.02838,"99":0.02838,"100":0.09933,"101":1.12101,"102":9.76272,"103":1.91565,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95"},E:{"4":0,"11":0.0071,"13":0.02838,"14":0.16319,"15":0.07095,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.0071,"11.1":0.02129,"12.1":0.05676,"13.1":0.24833,"14.1":0.44699,"15.1":0.12062,"15.2-15.3":0.12062,"15.4":0.7095,"15.5":1.86599},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00118,"7.0-7.1":0.00118,"8.1-8.4":0.01063,"9.0-9.2":0,"9.3":0.0378,"10.0-10.2":0.00236,"10.3":0.0638,"11.0-11.2":0.00945,"11.3-11.4":0.02599,"12.0-12.1":0.01181,"12.2-12.5":0.28117,"13.0-13.1":0.01181,"13.2":0.00591,"13.3":0.03072,"13.4-13.7":0.08152,"14.0-14.4":0.29063,"14.5-14.8":0.9085,"15.0-15.1":0.28708,"15.2-15.3":0.53754,"15.4":1.85362,"15.5":7.30226,"16.0":0.02481},P:{"4":0.02181,"5.0-5.4":0.02174,"6.2-6.4":0.38204,"7.2-7.4":0.05452,"8.2":0.06207,"9.2":0.01049,"10.1":0.01019,"11.1-11.2":0.0109,"12.0":0.05306,"13.0":0.02181,"14.0":0.03271,"15.0":0.02181,"16.0":0.09813,"17.0":2.12622},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00721,"4.2-4.3":0.00316,"4.4":0,"4.4.3-4.4.4":0.01578},A:{"11":0.12771,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02034},H:{"0":0.07426},L:{"0":13.93272},S:{"2.5":0},R:{_:"0"},M:{"0":0.19173}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BF.js index a7dc5ff4946eb3..b16ff78087fb44 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BF.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BF.js @@ -1 +1 @@ -module.exports={C:{"32":0.00447,"39":0.00223,"40":0.00223,"41":0.00447,"43":0.0067,"47":0.0201,"48":0.0067,"49":0.00447,"50":0.00223,"52":0.0335,"56":0.00893,"60":0.0067,"66":0.00223,"68":0.00447,"72":0.02233,"75":0.01563,"76":0.0067,"78":0.01563,"81":0.00223,"82":0.00223,"84":0.0067,"86":0.00223,"88":0.00223,"89":0.0067,"90":0.0067,"91":0.25903,"92":0.00893,"93":0.0067,"94":0.29699,"95":0.04019,"96":1.12543,"97":1.96504,"98":0.01786,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 38 42 44 45 46 51 53 54 55 57 58 59 61 62 63 64 65 67 69 70 71 73 74 77 79 80 83 85 87 99 3.5 3.6"},D:{"25":0.00447,"33":0.00893,"37":0.00223,"39":0.14291,"47":0.00223,"49":0.0201,"50":0.05583,"53":0.00223,"55":0.0067,"57":0.00447,"59":0.00893,"60":0.0201,"62":0.01117,"63":0.01117,"64":0.00893,"68":0.00223,"69":0.01117,"74":0.02233,"75":0.0067,"76":0.0268,"77":0.0201,"78":0.00447,"79":0.02233,"80":0.00893,"81":0.02903,"83":0.01117,"84":0.00893,"85":0.00893,"86":0.02233,"87":0.04689,"88":0.02233,"89":0.01117,"90":0.00893,"91":0.03573,"92":0.04243,"93":0.03126,"94":0.01786,"95":0.03126,"96":0.36398,"97":2.52106,"98":5.96211,"99":0.03573,"100":0.00447,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 34 35 36 38 40 41 42 43 44 45 46 48 51 52 54 56 58 61 65 66 67 70 71 72 73 101"},F:{"78":0.01117,"79":0.00893,"80":0.0067,"82":0.04466,"83":0.52476,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02233,"13":0.01117,"14":0.0067,"15":0.00447,"16":0.0067,"17":0.01117,"18":0.07146,"84":0.01786,"85":0.01117,"89":0.0067,"90":0.00447,"91":0.00223,"92":0.02233,"93":0.01117,"94":0.0067,"95":0.01117,"96":0.02903,"97":0.49573,"98":1.52514,_:"79 80 81 83 86 87 88"},E:{"4":0,"13":0.00447,"14":0.0201,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 10.1 15.4","5.1":0.00893,"11.1":0.00447,"12.1":0.00447,"13.1":0.0134,"14.1":0.04019,"15.1":0.40864,"15.2-15.3":0.04019},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00548,"8.1-8.4":0.00398,"9.0-9.2":0,"9.3":0.03685,"10.0-10.2":0.00548,"10.3":0.03984,"11.0-11.2":0.05329,"11.3-11.4":0.01693,"12.0-12.1":0.0239,"12.2-12.5":0.65489,"13.0-13.1":0.01743,"13.2":0.00349,"13.3":0.06275,"13.4-13.7":0.13845,"14.0-14.4":0.73855,"14.5-14.8":0.6021,"15.0-15.1":0.51694,"15.2-15.3":2.04734,"15.4":0.01096},P:{"4":0.05347,"5.0-5.4":0.1009,"6.2-6.4":0.01048,"7.2-7.4":0.07486,"8.2":0.02052,"9.2":0.11763,"10.1":0.07486,"11.1-11.2":0.43844,"12.0":0.03144,"13.0":0.03208,"14.0":0.02139,"15.0":0.08555,"16.0":0.57746},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00223,"4.2-4.3":0.00614,"4.4":0,"4.4.3-4.4.4":0.15473},A:{"11":0.13175,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00777},N:{_:"10 11"},R:{_:"0"},M:{"0":0.08544},Q:{"10.4":0.06214},O:{"0":0.83884},H:{"0":4.08843},L:{"0":69.51414},S:{"2.5":0.00777}}; +module.exports={C:{"30":0.00235,"35":0.00235,"38":0.02115,"41":0.0188,"43":0.00705,"47":0.00705,"48":0.02115,"52":0.0188,"54":0.00235,"56":0.00705,"57":0.0047,"60":0.00235,"70":0.00705,"72":0.0188,"74":0.0047,"75":0.0047,"76":0.3619,"78":0.0188,"83":0.0047,"85":0.00235,"86":0.00705,"88":0.0047,"90":0.0047,"91":0.15745,"94":0.00235,"95":0.0094,"96":0.094,"97":0.01645,"98":0.1739,"99":0.03995,"100":0.37365,"101":3.2383,"102":0.12925,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 36 37 39 40 42 44 45 46 49 50 51 53 55 58 59 61 62 63 64 65 66 67 68 69 71 73 77 79 80 81 82 84 87 89 92 93 103 104 3.5 3.6"},D:{"11":0.00235,"25":0.00235,"27":0.00705,"28":0.00235,"29":0.00235,"39":0.0047,"46":0.00235,"49":0.0094,"52":0.00235,"55":0.0047,"62":0.0047,"63":0.00705,"64":0.0047,"65":0.0047,"68":0.00705,"70":0.00235,"71":0.00705,"72":0.0047,"74":0.0329,"75":0.00705,"76":0.0047,"77":0.0141,"79":0.00705,"80":0.02115,"81":0.0094,"83":0.0141,"84":0.0094,"85":0.0047,"86":0.0329,"87":0.0376,"88":0.0094,"89":0.0094,"90":0.0047,"91":0.01175,"92":0.03055,"93":0.0094,"94":0.0047,"95":0.01645,"96":0.06815,"97":0.03055,"98":0.0376,"99":0.02115,"100":0.09635,"101":0.67445,"102":8.1169,"103":0.63685,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 26 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 47 48 50 51 53 54 56 57 58 59 60 61 66 67 69 73 78 104 105 106"},F:{"16":0.00705,"67":0.0047,"79":0.0094,"83":0.0047,"84":0.0094,"85":0.0047,"86":0.03525,"87":0.47235,_:"9 11 12 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 78 80 81 82 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01645,"13":0.00705,"14":0.0047,"15":0.00235,"16":0.0047,"17":0.01645,"18":0.0423,"84":0.02115,"85":0.0047,"89":0.0188,"90":0.0047,"91":0.0047,"92":0.0188,"96":0.0047,"97":0.00705,"98":0.02115,"99":0.0094,"100":0.01175,"101":0.28435,"102":1.54865,"103":0.28435,_:"79 80 81 83 86 87 88 93 94 95"},E:{"4":0,"12":0.00705,"14":0.0141,_:"0 5 6 7 8 9 10 11 13 15 3.1 3.2 5.1 6.1 7.1 10.1 12.1","9.1":0.01645,"11.1":0.00705,"13.1":0.0282,"14.1":0.03055,"15.1":0.0094,"15.2-15.3":0.03995,"15.4":0.01645,"15.5":0.1504,"16.0":0.00235},G:{"8":0.00394,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00788,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01527,"10.0-10.2":0.00049,"10.3":0.02266,"11.0-11.2":0.01626,"11.3-11.4":0.01478,"12.0-12.1":0.0473,"12.2-12.5":0.38724,"13.0-13.1":0.02857,"13.2":0.01084,"13.3":0.03843,"13.4-13.7":0.12908,"14.0-14.4":0.39463,"14.5-14.8":0.92572,"15.0-15.1":0.23057,"15.2-15.3":0.51976,"15.4":0.83507,"15.5":1.25778,"16.0":0.03202},P:{"4":0.08294,"5.0-5.4":0.02174,"6.2-6.4":0.01037,"7.2-7.4":0.08793,"8.2":0.06207,"9.2":0.03297,"10.1":0.02112,"11.1-11.2":0.12091,"12.0":0.02074,"13.0":0.02198,"14.0":0.26379,"15.0":0.01099,"16.0":0.29677,"17.0":0.47263},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00384,"4.2-4.3":0.00768,"4.4":0,"4.4.3-4.4.4":0.2256},A:{"11":0.08225,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.10709},O:{"0":0.65781},H:{"0":3.46872},L:{"0":70.27492},S:{"2.5":0},R:{_:"0"},M:{"0":0.09944}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BG.js index 30dd0b0e5aaefe..7641da20bae7ca 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BG.js @@ -1 +1 @@ -module.exports={C:{"48":0.00435,"51":0.00435,"52":0.19987,"56":0.00869,"60":0.00869,"63":0.01304,"66":0.01738,"67":0.01304,"68":0.0869,"72":0.01304,"78":0.04345,"79":0.00869,"80":0.02607,"81":0.00869,"83":0.00869,"84":0.01738,"85":0.01304,"86":0.00869,"87":0.03042,"88":0.02607,"89":0.0478,"90":0.00869,"91":0.13035,"92":0.00869,"93":0.01304,"94":0.05214,"95":0.0869,"96":2.08995,"97":3.37172,"98":0.02173,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 53 54 55 57 58 59 61 62 64 65 69 70 71 73 74 75 76 77 82 99 3.5 3.6"},D:{"38":0.00869,"48":0.01738,"49":0.21291,"50":0.00435,"51":0.25636,"56":0.00869,"58":0.00435,"63":0.00869,"66":0.00435,"67":0.00869,"68":0.00435,"69":0.03042,"70":0.00869,"71":0.01304,"73":0.01304,"74":0.00869,"75":0.00869,"76":0.00435,"77":0.01304,"78":0.00869,"79":0.3085,"80":0.01738,"81":0.03911,"83":0.01738,"84":0.02173,"85":0.02173,"86":0.02607,"87":0.05214,"88":0.01738,"89":0.03042,"90":0.02173,"91":0.07387,"92":0.06083,"93":0.5214,"94":0.03911,"95":0.06518,"96":0.37367,"97":8.38151,"98":19.03979,"99":0.01304,"100":0.01738,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 52 53 54 55 57 59 60 61 62 64 65 72 101"},F:{"28":0.00869,"36":0.00869,"46":0.01738,"78":0.00869,"79":0.00435,"80":0.00869,"82":0.33022,"83":1.31219,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00435,"17":0.01304,"18":0.02607,"84":0.00869,"90":0.00435,"92":0.00435,"94":0.00435,"95":0.01304,"96":0.02607,"97":0.60396,"98":2.15078,_:"12 13 14 16 79 80 81 83 85 86 87 88 89 91 93"},E:{"4":0,"13":0.01304,"14":0.05649,"15":0.03911,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.00869,"12.1":0.02607,"13.1":0.05214,"14.1":0.16946,"15.1":0.09125,"15.2-15.3":0.19553},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00223,"6.0-6.1":0.00074,"7.0-7.1":0.0052,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02004,"10.0-10.2":0.00297,"10.3":0.05642,"11.0-11.2":0.01336,"11.3-11.4":0.01262,"12.0-12.1":0.01262,"12.2-12.5":0.24422,"13.0-13.1":0.00965,"13.2":0.00371,"13.3":0.03415,"13.4-13.7":0.1106,"14.0-14.4":0.29915,"14.5-14.8":1.39628,"15.0-15.1":1.06595,"15.2-15.3":4.1057,"15.4":0.02375},P:{"4":0.09432,"5.0-5.4":0.1009,"6.2-6.4":0.01048,"7.2-7.4":0.07394,"8.2":0.02052,"9.2":0.01025,"10.1":0.02113,"11.1-11.2":0.07336,"12.0":0.03144,"13.0":0.09432,"14.0":0.13624,"15.0":0.1048,"16.0":2.09594},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00393,"4.2-4.3":0.01702,"4.4":0,"4.4.3-4.4.4":0.10346},A:{"11":0.42581,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.18662},Q:{"10.4":0},O:{"0":0.02828},H:{"0":0.25163},L:{"0":46.22418},S:{"2.5":0}}; +module.exports={C:{"47":0.00793,"48":0.00397,"51":0.00793,"52":0.19429,"56":0.00793,"60":0.00793,"63":0.00793,"66":0.02379,"67":0.00793,"68":0.1586,"72":0.0119,"73":0.00397,"78":0.03172,"79":0.00397,"80":0.03172,"81":0.0119,"82":0.00793,"83":0.0119,"84":0.0119,"85":0.00397,"86":0.00397,"87":0.02776,"88":0.02776,"89":0.03569,"90":0.00793,"91":0.13481,"92":0.00793,"93":0.00397,"94":0.01586,"95":0.03172,"96":0.02379,"97":0.01983,"98":0.03569,"99":0.08327,"100":0.59475,"101":4.5201,"102":0.16257,"103":0.00397,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 50 53 54 55 57 58 59 61 62 64 65 69 70 71 74 75 76 77 104 3.5 3.6"},D:{"38":0.00793,"49":0.21411,"50":0.00397,"56":0.00793,"58":0.00397,"63":0.00793,"65":0.00397,"66":0.00397,"67":0.00793,"69":0.06344,"70":0.00397,"71":0.00397,"72":0.00397,"73":0.00793,"74":0.0119,"75":0.00793,"76":0.00397,"77":0.00793,"78":0.00793,"79":0.20222,"80":0.0119,"81":0.03172,"83":0.01586,"84":0.02379,"85":0.02776,"86":0.03569,"87":0.05155,"88":0.01983,"89":0.02379,"90":0.01586,"91":0.01983,"92":0.03172,"93":0.02379,"94":0.01586,"95":0.01983,"96":0.05155,"97":0.05948,"98":0.05155,"99":0.11499,"100":0.19032,"101":1.77632,"102":20.99468,"103":1.76839,"104":0.00793,"105":0.00793,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 51 52 53 54 55 57 59 60 61 62 64 68 106"},F:{"28":0.01586,"36":0.00793,"46":0.00793,"79":0.00793,"82":0.00793,"85":0.04758,"86":0.28945,"87":1.01504,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.0119,"18":0.0119,"85":0.00397,"92":0.00397,"95":0.00397,"98":0.00793,"99":0.00793,"100":0.02776,"101":0.3172,"102":2.11335,"103":0.4084,_:"12 13 14 15 17 79 80 81 83 84 86 87 88 89 90 91 93 94 96 97"},E:{"4":0,"13":0.0119,"14":0.03965,"15":0.01586,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00793,"12.1":0.02379,"13.1":0.04758,"14.1":0.0912,"15.1":0.02379,"15.2-15.3":0.02379,"15.4":0.12292,"15.5":0.36082},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00082,"7.0-7.1":0.00491,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01719,"10.0-10.2":0.00409,"10.3":0.03846,"11.0-11.2":0.02291,"11.3-11.4":0.00818,"12.0-12.1":0.01146,"12.2-12.5":0.21523,"13.0-13.1":0.009,"13.2":0.00491,"13.3":0.02291,"13.4-13.7":0.08593,"14.0-14.4":0.22669,"14.5-14.8":0.70297,"15.0-15.1":0.19068,"15.2-15.3":0.37072,"15.4":1.19154,"15.5":5.00675,"16.0":0.02864},P:{"4":0.08294,"5.0-5.4":0.02174,"6.2-6.4":0.01037,"7.2-7.4":0.06335,"8.2":0.06207,"9.2":0.09503,"10.1":0.02112,"11.1-11.2":0.06221,"12.0":0.02074,"13.0":0.07257,"14.0":0.10368,"15.0":0.05184,"16.0":0.25919,"17.0":2.35347},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00382,"4.2-4.3":0.0102,"4.4":0,"4.4.3-4.4.4":0.07649},A:{"9":0.00397,"11":0.35685,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02414},H:{"0":0.25135},L:{"0":49.12342},S:{"2.5":0},R:{_:"0"},M:{"0":0.18102}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BH.js index 3d30f5103e285b..b7f21c0c6e76ef 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BH.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BH.js @@ -1 +1 @@ -module.exports={C:{"34":0.00399,"36":0.00798,"52":0.01595,"60":0.00399,"78":0.00798,"79":0.00798,"83":0.03589,"91":0.01196,"95":0.01595,"96":0.34696,"97":0.65004,"98":0.00798,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 81 82 84 85 86 87 88 89 90 92 93 94 99 3.5 3.6"},D:{"38":0.00798,"39":0.00399,"49":0.02393,"50":0.00399,"55":0.00399,"56":0.00798,"60":0.03988,"62":0.00399,"63":0.00399,"64":0.00399,"65":0.02393,"66":0.01994,"67":0.01994,"68":0.00399,"69":0.00798,"70":0.01196,"71":0.01196,"73":0.01994,"74":0.00798,"75":0.00399,"76":0.00399,"77":0.00798,"78":0.00798,"79":0.07178,"80":0.00798,"81":0.00798,"83":0.01196,"84":0.01994,"85":0.00798,"86":0.03589,"87":0.06381,"88":0.01196,"89":0.01595,"90":0.05583,"91":0.02792,"92":0.0319,"93":0.42672,"94":0.04786,"95":0.03988,"96":0.48255,"97":8.09963,"98":20.29892,"99":0.01196,"100":0.00798,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 47 48 51 52 53 54 57 58 59 61 72 101"},F:{"28":0.00399,"36":0.01595,"46":0.00798,"53":0.00798,"54":0.00798,"70":0.01595,"77":0.00798,"78":0.0319,"79":0.02393,"81":0.0678,"82":0.21934,"83":0.2313,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 80 10.5 10.6 11.1 11.5 11.6 12.1","9.5-9.6":0.00399,"10.0-10.1":0},B:{"15":0.00798,"16":0.00798,"17":0.00399,"18":0.02393,"84":0.00399,"89":0.00798,"92":0.00798,"94":0.00399,"95":0.01595,"96":0.02792,"97":0.83349,"98":2.84743,_:"12 13 14 79 80 81 83 85 86 87 88 90 91 93"},E:{"4":0,"11":0.00399,"13":0.03988,"14":0.25922,"15":0.17148,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00798,"11.1":0.01595,"12.1":0.05583,"13.1":0.17547,"14.1":0.80159,"15.1":0.41874,"15.2-15.3":0.67796,"15.4":0.00798},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0056,"6.0-6.1":0,"7.0-7.1":0.0112,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.09523,"10.0-10.2":0,"10.3":0.05975,"11.0-11.2":0.03174,"11.3-11.4":0.07095,"12.0-12.1":0.04108,"12.2-12.5":0.38837,"13.0-13.1":0.03921,"13.2":0.0112,"13.3":0.07282,"13.4-13.7":0.25767,"14.0-14.4":0.76554,"14.5-14.8":3.26197,"15.0-15.1":3.67461,"15.2-15.3":9.7859,"15.4":0.09149},P:{"4":0.16415,"5.0-5.4":0.01086,"6.2-6.4":0.02066,"7.2-7.4":0.0513,"8.2":0.02052,"9.2":0.02052,"10.1":0.01018,"11.1-11.2":0.22571,"12.0":0.03078,"13.0":0.12311,"14.0":0.14363,"15.0":0.15389,"16.0":2.87263},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.0022,"4.4":0,"4.4.3-4.4.4":0.01584},A:{"11":0.15952,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.22849},Q:{"10.4":0},O:{"0":2.47736},H:{"0":0.60343},L:{"0":34.31125},S:{"2.5":0}}; +module.exports={C:{"34":0.03326,"52":0.01109,"78":0.01848,"79":0.0037,"86":0.0037,"91":0.08129,"94":0.0037,"99":0.01109,"100":0.09238,"101":0.72053,"102":0.02217,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 81 82 83 84 85 87 88 89 90 92 93 95 96 97 98 103 104 3.5 3.6"},D:{"38":0.01109,"47":0.00739,"49":0.04065,"55":0.01478,"56":0.00739,"65":0.21431,"68":0.00739,"73":0.08499,"74":0.00739,"76":0.0037,"78":0.0037,"79":0.12563,"80":0.01478,"81":0.01109,"83":0.01848,"84":0.01109,"85":0.00739,"86":0.01848,"87":0.05912,"88":0.02217,"89":0.02217,"90":0.01478,"91":0.01848,"92":0.02217,"93":0.04434,"94":0.32516,"95":0.01848,"96":0.24757,"97":0.04065,"98":0.05912,"99":0.09977,"100":0.23648,"101":1.79577,"102":21.79681,"103":1.81055,"104":0.01109,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 53 54 57 58 59 60 61 62 63 64 66 67 69 70 71 72 75 77 105 106"},F:{"28":0.01478,"36":0.0037,"46":0.0037,"69":0.0037,"78":0.00739,"79":0.01478,"82":0.01109,"83":0.00739,"84":0.03326,"85":0.0776,"86":0.18845,"87":0.11824,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00739,"17":0.00739,"18":0.01109,"89":0.0037,"92":0.01109,"96":0.0037,"97":0.01109,"98":0.01109,"99":0.02217,"100":0.01478,"101":0.49144,"102":2.33894,"103":0.51361,_:"12 13 15 16 79 80 81 83 84 85 86 87 88 90 91 93 94 95"},E:{"4":0,"13":0.02587,"14":0.14411,"15":0.03695,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.0037,"10.1":0.05543,"11.1":0.00739,"12.1":0.02217,"13.1":0.10346,"14.1":0.54317,"15.1":0.12563,"15.2-15.3":0.18106,"15.4":0.61337,"15.5":1.00874,"16.0":0.00739},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01268,"6.0-6.1":0,"7.0-7.1":0.02173,"8.1-8.4":0,"9.0-9.2":0.00181,"9.3":0.06157,"10.0-10.2":0,"10.3":0.16298,"11.0-11.2":0.00905,"11.3-11.4":0.01087,"12.0-12.1":0.01449,"12.2-12.5":0.32053,"13.0-13.1":0.03079,"13.2":0.00905,"13.3":0.06157,"13.4-13.7":0.13401,"14.0-14.4":0.50162,"14.5-14.8":1.38535,"15.0-15.1":0.51249,"15.2-15.3":0.98695,"15.4":2.94274,"15.5":10.81117,"16.0":0.05976},P:{"4":0.08174,"5.0-5.4":0.02174,"6.2-6.4":0.01016,"7.2-7.4":0.08174,"8.2":0.06207,"9.2":0.06131,"10.1":0.01019,"11.1-11.2":0.09196,"12.0":0.02044,"13.0":0.08174,"14.0":0.13283,"15.0":0.06131,"16.0":0.30654,"17.0":3.14711},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00647,"4.4":0,"4.4.3-4.4.4":0.03766},A:{"11":0.12933,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.93564},H:{"0":0.53126},L:{"0":39.0044},S:{"2.5":0},R:{_:"0"},M:{"0":0.22698}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BI.js index ab178159b34824..ca44ede1f5ddf2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BI.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BI.js @@ -1 +1 @@ -module.exports={C:{"7":0.00542,"28":0.00542,"31":0.05416,"43":0.00542,"44":0.00271,"47":0.05145,"49":0.00271,"52":0.01083,"56":0.00542,"68":0.00542,"71":0.00812,"72":0.00542,"77":0.00271,"78":0.00542,"84":0.01354,"88":0.02979,"89":0.00542,"91":0.04604,"92":0.00542,"93":0.00271,"94":0.01896,"95":0.02979,"96":1.10486,"97":1.66813,"98":0.06499,_:"2 3 4 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 32 33 34 35 36 37 38 39 40 41 42 45 46 48 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 73 74 75 76 79 80 81 82 83 85 86 87 90 99 3.5 3.6"},D:{"26":0.00812,"36":0.00812,"40":0.01625,"43":0.00542,"49":0.03791,"52":0.00542,"56":0.02437,"63":0.00812,"64":0.05958,"70":0.00812,"73":0.01625,"74":0.01083,"76":0.00542,"77":0.00542,"80":0.07853,"81":0.53077,"83":0.01354,"84":0.01354,"85":0.00542,"86":0.02708,"87":0.03791,"88":0.0352,"89":0.01625,"90":0.01896,"91":0.02708,"92":0.1029,"93":0.02708,"94":0.04333,"95":0.08124,"96":0.37641,"97":4.93939,"98":9.25594,"99":0.01083,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 37 38 39 41 42 44 45 46 47 48 50 51 53 54 55 57 58 59 60 61 62 65 66 67 68 69 71 72 75 78 79 100 101"},F:{"31":0.00271,"37":0.00542,"42":0.00812,"64":0.00542,"67":0.00542,"82":0.14894,"83":0.97759,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.07582,"13":0.02166,"14":0.01083,"15":0.00542,"16":0.00812,"17":0.02979,"18":0.11374,"84":0.01896,"85":0.00542,"89":0.01083,"91":0.00271,"92":0.04874,"93":0.00542,"94":0.05958,"95":0.0352,"96":0.02437,"97":0.75553,"98":1.24568,_:"79 80 81 83 86 87 88 90"},E:{"4":0,"12":0.00542,"13":0.01354,"14":0.01625,"15":0.00542,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.02437,"12.1":0.01625,"13.1":0.05145,"14.1":0.07312,"15.1":0.04333,"15.2-15.3":0.04062,"15.4":0.01083},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00072,"6.0-6.1":0,"7.0-7.1":0.00072,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01805,"10.0-10.2":0.00072,"10.3":0.36673,"11.0-11.2":0.01444,"11.3-11.4":0.00433,"12.0-12.1":0.0231,"12.2-12.5":0.7266,"13.0-13.1":0.00758,"13.2":0.01011,"13.3":0.08374,"13.4-13.7":0.07941,"14.0-14.4":0.73454,"14.5-14.8":0.76631,"15.0-15.1":0.30248,"15.2-15.3":0.46888,"15.4":0.00108},P:{"4":1.47807,"5.0-5.4":0.04049,"6.2-6.4":0.01048,"7.2-7.4":0.09111,"8.2":0.02052,"9.2":0.22272,"10.1":0.06074,"11.1-11.2":0.06074,"12.0":0.30371,"13.0":0.01012,"14.0":0.02025,"15.0":3.53319,"16.0":1.29584},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0.00133,"4.1":0.00267,"4.2-4.3":0.01932,"4.4":0,"4.4.3-4.4.4":0.10794},A:{"11":0.11374,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00729},N:{_:"10 11"},R:{_:"0"},M:{"0":0.08021},Q:{"10.4":0.01458},O:{"0":0.17501},H:{"0":14.33877},L:{"0":50.0552},S:{"2.5":0.02188}}; +module.exports={C:{"28":0.00536,"30":0.00268,"37":0.00536,"45":0.00268,"47":0.00804,"50":0.00536,"52":0.01072,"56":0.00536,"59":0.00536,"64":0.00268,"66":0.00536,"70":0.00268,"74":0.00536,"81":0.00268,"87":0.00536,"88":0.01341,"89":0.00536,"91":0.02145,"92":0.00536,"96":0.00536,"97":0.01609,"98":0.00268,"99":0.01072,"100":0.21448,"101":1.94641,"102":0.09652,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 31 32 33 34 35 36 38 39 40 41 42 43 44 46 48 49 51 53 54 55 57 58 60 61 62 63 65 67 68 69 71 72 73 75 76 77 78 79 80 82 83 84 85 86 90 93 94 95 103 104 3.5 3.6"},D:{"26":0.00804,"37":0.00536,"49":0.00804,"63":0.01609,"64":0.00804,"65":0.00268,"67":0.02145,"68":0.00268,"69":0.00268,"73":0.00804,"74":0.00268,"75":0.01072,"76":0.24129,"77":0.01341,"79":0.02145,"80":0.02413,"81":0.10992,"83":0.01072,"84":0.00536,"85":0.04022,"86":0.01072,"87":0.01341,"88":0.07239,"89":0.01072,"90":0.01877,"91":0.02681,"92":0.00804,"93":0.02145,"94":0.02949,"95":0.00536,"96":0.13137,"97":0.03485,"98":0.12333,"99":0.14746,"100":0.28955,"101":0.96248,"102":11.63286,"103":0.99465,"104":0.02681,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 66 70 71 72 78 105 106"},F:{"40":0.00804,"76":0.00268,"79":0.01341,"82":0.00536,"84":0.00268,"85":0.01609,"86":0.12869,"87":0.69974,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.13941,"13":0.00804,"14":0.0563,"15":0.00804,"16":0.01341,"17":0.02949,"18":0.13137,"83":0.00268,"84":0.01072,"85":0.00536,"89":0.03753,"90":0.01341,"91":0.00536,"92":0.04826,"93":0.00536,"94":0.01341,"95":0.00268,"96":0.00536,"97":0.05094,"98":0.01877,"99":0.02145,"100":0.03485,"101":0.36462,"102":1.32978,"103":0.28419,_:"79 80 81 86 87 88"},E:{"4":0,"9":0.01072,"12":0.50939,"13":0.00536,"14":0.02681,_:"0 5 6 7 8 10 11 15 3.1 3.2 5.1 6.1 7.1 9.1 15.2-15.3","10.1":0.00536,"11.1":0.00536,"12.1":0.01072,"13.1":0.02681,"14.1":0.05898,"15.1":0.01072,"15.4":0.05362,"15.5":0.07507,"16.0":0.00268},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.02885,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00564,"10.0-10.2":0,"10.3":0.04178,"11.0-11.2":0.00597,"11.3-11.4":0.00531,"12.0-12.1":0.02354,"12.2-12.5":0.60381,"13.0-13.1":0.01492,"13.2":0.00829,"13.3":0.03084,"13.4-13.7":0.0577,"14.0-14.4":0.3601,"14.5-14.8":0.23609,"15.0-15.1":0.20459,"15.2-15.3":0.54844,"15.4":0.32993,"15.5":0.80276,"16.0":0.00696},P:{"4":0.54245,"5.0-5.4":0.0313,"6.2-6.4":0.01037,"7.2-7.4":0.13561,"8.2":0.06207,"9.2":0.11475,"10.1":0.02112,"11.1-11.2":0.0313,"12.0":0.02074,"13.0":0.05216,"14.0":0.02086,"15.0":0.0313,"16.0":0.23993,"17.0":0.61547},I:{"0":0,"3":0,"4":0.00074,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0013,"4.2-4.3":0.00278,"4.4":0,"4.4.3-4.4.4":0.05373},A:{"11":0.18499,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.25617},H:{"0":12.07059},L:{"0":59.07905},S:{"2.5":0},R:{_:"0"},M:{"0":0.13174}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BJ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BJ.js index 338a049d60a485..ad62b5f80c3c4e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BJ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BJ.js @@ -1 +1 @@ -module.exports={C:{"35":0.00291,"43":0.00291,"45":0.00582,"49":0.00582,"52":0.01745,"56":0.00291,"60":0.00291,"66":0.00291,"72":0.01455,"75":0.01455,"78":0.02327,"79":0.00873,"80":0.00582,"84":0.00582,"85":0.06982,"86":0.00873,"87":0.00291,"88":0.00873,"89":0.01164,"90":0.00582,"91":0.07273,"92":0.00873,"93":0.00582,"94":0.02036,"95":0.05236,"96":0.72725,"97":1.06179,"98":0.03491,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 44 46 47 48 50 51 53 54 55 57 58 59 61 62 63 64 65 67 68 69 70 71 73 74 76 77 81 82 83 99 3.5 3.6"},D:{"31":0.00291,"32":0.01164,"33":0.00582,"44":0.00582,"45":0.00291,"47":0.00873,"49":0.05527,"50":0.00291,"53":0.00873,"57":0.00582,"58":0.00582,"59":0.00291,"60":0.00291,"61":0.00291,"62":0.02036,"63":0.18327,"64":0.05236,"65":0.00582,"67":0.00873,"68":0.00582,"69":0.00582,"70":0.01455,"71":0.00582,"72":0.01164,"74":0.02327,"75":0.01455,"76":0.01745,"77":0.032,"78":0.01745,"79":0.01455,"80":0.04654,"81":0.02036,"83":0.02327,"84":0.01164,"85":0.02036,"86":0.08436,"87":0.05527,"88":0.05527,"89":0.02909,"90":0.04073,"91":0.10182,"92":0.23272,"93":0.07854,"94":0.19781,"95":0.32581,"96":0.50035,"97":4.31987,"98":11.0222,"99":0.01745,"100":0.02618,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 34 35 36 37 38 39 40 41 42 43 46 48 51 52 54 55 56 66 73 101"},F:{"15":0.00291,"57":0.04654,"71":0.01164,"79":0.01455,"80":0.00582,"81":0.00582,"82":0.08145,"83":0.7447,_:"9 11 12 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01745,"13":0.00582,"14":0.00582,"15":0.00582,"16":0.00582,"17":0.00873,"18":0.04654,"84":0.00873,"85":0.00873,"89":0.01745,"90":0.01164,"91":0.01455,"92":0.02618,"94":0.00291,"95":0.00582,"96":0.03491,"97":0.34617,"98":0.94252,_:"79 80 81 83 86 87 88 93"},E:{"4":0,"14":0.02909,"15":0.00873,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1","5.1":0.02327,"12.1":0.01164,"13.1":0.05527,"14.1":0.04073,"15.1":0.064,"15.2-15.3":0.06109,"15.4":0.00582},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00131,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00916,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01308,"10.0-10.2":0,"10.3":0.00916,"11.0-11.2":0.03139,"11.3-11.4":0.00327,"12.0-12.1":0.19033,"12.2-12.5":1.80911,"13.0-13.1":0.02485,"13.2":0.00262,"13.3":0.55791,"13.4-13.7":0.15174,"14.0-14.4":0.51539,"14.5-14.8":0.91763,"15.0-15.1":0.88101,"15.2-15.3":1.41341,"15.4":0.00654},P:{"4":0.03363,"5.0-5.4":0.1009,"6.2-6.4":0.18286,"7.2-7.4":0.01121,"8.2":0.02052,"9.2":0.04485,"10.1":0.01018,"11.1-11.2":0.21994,"12.0":0.02137,"13.0":0.23544,"14.0":0.01121,"15.0":0.02242,"16.0":0.36998},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00046,"4.2-4.3":0.00161,"4.4":0,"4.4.3-4.4.4":0.02629},A:{"9":0.01473,"11":0.06382,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.19146},Q:{"10.4":0.13473},O:{"0":0.65237},H:{"0":4.06826},L:{"0":62.8251},S:{"2.5":0.04255}}; +module.exports={C:{"31":0.00314,"43":0.00314,"47":0.01886,"52":0.00629,"60":0.00629,"62":0.00314,"68":0.00314,"72":0.01572,"78":0.02829,"79":0.00314,"84":0.01572,"85":0.06286,"88":0.00314,"89":0.00314,"91":0.09429,"92":0.00314,"93":0.00943,"94":0.00314,"95":0.00314,"96":0.01257,"97":0.04715,"98":0.02514,"99":0.07229,"100":0.35202,"101":1.62493,"102":0.16344,"103":0.00314,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 44 45 46 48 49 50 51 53 54 55 56 57 58 59 61 63 64 65 66 67 69 70 71 73 74 75 76 77 80 81 82 83 86 87 90 104 3.5 3.6"},D:{"26":0.00943,"33":0.00629,"43":0.00629,"44":0.00943,"46":0.00629,"47":0.02829,"49":0.01886,"50":0.00943,"51":0.00314,"55":0.00629,"56":0.01886,"57":0.00629,"58":0.00314,"61":0.00314,"62":0.00629,"63":0.05343,"64":0.00943,"65":0.05029,"67":0.01257,"68":0.00629,"69":0.01572,"70":0.01257,"71":0.00629,"72":0.00943,"73":0.00629,"74":0.10058,"75":0.01257,"76":0.00629,"77":0.00629,"78":0.01257,"79":0.01886,"80":0.01886,"81":0.00943,"83":0.00629,"84":0.04715,"85":0.03772,"86":0.06286,"87":0.03457,"88":0.45259,"89":0.01257,"90":0.01572,"91":0.09115,"92":0.05029,"93":0.044,"94":0.07543,"95":0.06915,"96":0.07543,"97":0.11001,"98":0.85175,"99":1.77265,"100":0.3583,"101":1.07805,"102":11.45309,"103":1.10319,"104":0.01257,"105":0.00629,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 45 48 52 53 54 59 60 66 106"},F:{"51":0.022,"57":0.04086,"74":0.00629,"79":0.05657,"80":0.00314,"84":0.00629,"85":0.10686,"86":0.05343,"87":1.15662,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 52 53 54 55 56 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02829,"13":0.00629,"14":0.00629,"15":0.00629,"16":0.00314,"17":0.00943,"18":0.09115,"84":0.07229,"85":0.00629,"89":0.01886,"90":0.00943,"92":0.04715,"98":0.00943,"99":0.02514,"100":0.01257,"101":0.25773,"102":1.35463,"103":0.28601,_:"79 80 81 83 86 87 88 91 93 94 95 96 97"},E:{"4":0,"13":0.00314,"14":0.02829,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00314,"12.1":0.00629,"13.1":0.05972,"14.1":0.03772,"15.1":0.022,"15.2-15.3":0.00943,"15.4":0.04715,"15.5":0.09429},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00129,"7.0-7.1":0.05983,"8.1-8.4":0.00064,"9.0-9.2":0.02123,"9.3":0.01287,"10.0-10.2":0,"10.3":0.01544,"11.0-11.2":0.02123,"11.3-11.4":0.00322,"12.0-12.1":0.00708,"12.2-12.5":1.09682,"13.0-13.1":0.03023,"13.2":0.00386,"13.3":0.13831,"13.4-13.7":0.22322,"14.0-14.4":0.50306,"14.5-14.8":0.77774,"15.0-15.1":0.24831,"15.2-15.3":0.54165,"15.4":1.20232,"15.5":1.44999,"16.0":0.05983},P:{"4":0.04259,"5.0-5.4":0.02174,"6.2-6.4":0.38204,"7.2-7.4":0.15971,"8.2":0.06207,"9.2":0.01134,"10.1":0.01019,"11.1-11.2":0.02268,"12.0":0.05306,"13.0":0.04536,"14.0":0.06388,"15.0":0.02268,"16.0":0.13609,"17.0":0.35155},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00066,"4.2-4.3":0.00115,"4.4":0,"4.4.3-4.4.4":0.01876},A:{"11":0.07543,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.00686},O:{"0":1.04912},H:{"0":3.17447},L:{"0":62.6791},S:{"2.5":0.02743},R:{_:"0"},M:{"0":0.24}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BM.js index c1fc94dc22cf02..bf049f72bf5c35 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BM.js @@ -1 +1 @@ -module.exports={C:{"78":0.06489,"88":0.00433,"92":0.00433,"95":0.0173,"96":0.34608,"97":0.51479,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 93 94 98 99 3.5 3.6"},D:{"49":0.0173,"63":0.00865,"67":0.00865,"71":0.00865,"76":0.00433,"77":0.06056,"78":0.03461,"79":0.01298,"80":0.00433,"83":0.02163,"85":0.0173,"86":0.01298,"87":0.05624,"88":0.0173,"89":0.00865,"90":0.02163,"91":0.8479,"92":0.02163,"93":0.06922,"94":0.20332,"95":0.03893,"96":0.57968,"97":6.46304,"98":11.18704,"99":0.01298,"100":0.00865,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 68 69 70 72 73 74 75 81 84 101"},F:{"82":0.42395,"83":0.73542,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01298,"91":0.01298,"92":0.00865,"95":0.05191,"96":0.05191,"97":1.15504,"98":4.04914,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 93 94"},E:{"4":0,"13":0.05624,"14":0.199,"15":0.20765,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.42827,"11.1":0.00865,"12.1":0.04759,"13.1":0.59266,"14.1":1.37134,"15.1":1.9467,"15.2-15.3":6.10399,"15.4":0.07354},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.12849,"10.0-10.2":0,"10.3":0.08719,"11.0-11.2":0,"11.3-11.4":0.00459,"12.0-12.1":0.02295,"12.2-12.5":0.73884,"13.0-13.1":0.00918,"13.2":0,"13.3":0.01377,"13.4-13.7":0.35795,"14.0-14.4":0.69295,"14.5-14.8":2.8911,"15.0-15.1":6.52563,"15.2-15.3":34.22971,"15.4":0.16062},P:{"4":0.1356,"5.0-5.4":0.1009,"6.2-6.4":0.18286,"7.2-7.4":0.01121,"8.2":0.02052,"9.2":0.04485,"10.1":0.01018,"11.1-11.2":0.03129,"12.0":0.02137,"13.0":0.02086,"14.0":0.08344,"15.0":0.04172,"16.0":2.13825},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.29417,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.04539},Q:{"10.4":0},O:{"0":0.03972},H:{"0":0.02149},L:{"0":8.30905},S:{"2.5":0}}; +module.exports={C:{"78":0.0171,"99":0.0057,"100":0.05985,"101":0.1938,"102":0.00285,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 103 104 3.5 3.6"},D:{"49":0.0057,"65":0.00285,"67":0.00855,"77":0.0285,"78":0.0057,"80":0.00285,"85":0.0057,"87":0.00855,"91":0.0171,"92":0.0057,"93":0.00285,"94":0.0114,"95":0.00285,"96":0.01425,"97":0.0228,"98":0.00855,"99":0.03705,"100":0.14535,"101":0.66405,"102":5.07015,"103":0.46455,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 68 69 70 71 72 73 74 75 76 79 81 83 84 86 88 89 90 104 105 106"},F:{"86":0.11115,"87":0.1197,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0057,"18":0.0057,"92":0.00285,"99":0.0057,"100":0.00285,"101":0.3135,"102":1.15425,"103":0.26505,_:"13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98"},E:{"4":0,"11":0.0114,"13":0.0057,"14":0.08835,"15":0.04275,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1","9.1":0.0057,"10.1":0.16245,"11.1":0.0057,"12.1":0.03135,"13.1":0.27075,"14.1":0.29925,"15.1":0.2109,"15.2-15.3":0.23085,"15.4":2.2743,"15.5":14.90835,"16.0":0.02565},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04698,"10.0-10.2":0,"10.3":0.02685,"11.0-11.2":0,"11.3-11.4":0.01342,"12.0-12.1":0.00671,"12.2-12.5":0.16778,"13.0-13.1":0.03356,"13.2":0,"13.3":0.00671,"13.4-13.7":0.16107,"14.0-14.4":0.10067,"14.5-14.8":0.48993,"15.0-15.1":0.4698,"15.2-15.3":1.29529,"15.4":5.47648,"15.5":58.52985,"16.0":0.09396},P:{"4":0.05284,"5.0-5.4":0.02174,"6.2-6.4":0.38204,"7.2-7.4":0.15971,"8.2":0.06207,"9.2":0.01134,"10.1":0.01019,"11.1-11.2":0.06341,"12.0":0.05306,"13.0":0.02114,"14.0":0.06388,"15.0":0.02268,"16.0":0.0317,"17.0":0.782},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.01995,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.00715},H:{"0":0.00677},L:{"0":3.56089},S:{"2.5":0},R:{_:"0"},M:{"0":0.03576}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BN.js index 66628cbb0dd55e..a0705d2f242ee7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BN.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BN.js @@ -1 +1 @@ -module.exports={C:{"29":0.01254,"32":0.00418,"48":0.01672,"52":0.02926,"72":0.00836,"78":0.01254,"84":0.0209,"89":0.01254,"91":0.00418,"93":0.00418,"94":0.01254,"95":0.0209,"96":0.79838,"97":1.55496,"98":0.06688,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 87 88 90 92 99 3.5 3.6"},D:{"22":0.0209,"26":0.00836,"33":0.00836,"38":0.1045,"47":0.11704,"49":0.21736,"53":0.04598,"55":0.03344,"62":0.05434,"65":0.06688,"67":0.00836,"68":0.00836,"70":0.00836,"72":0.02926,"73":0.03344,"74":0.00836,"75":0.0209,"76":0.00418,"77":0.00836,"78":0.02508,"79":0.16302,"80":0.02508,"81":0.04598,"83":0.0209,"84":0.01672,"85":0.00836,"86":0.00418,"87":0.15884,"88":0.00836,"89":0.02508,"90":0.01254,"91":0.02926,"92":0.07942,"93":0.01672,"94":0.01672,"95":0.07524,"96":0.3553,"97":7.86258,"98":19.06916,"99":0.03344,"100":0.04598,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 56 57 58 59 60 61 63 64 66 69 71 101"},F:{"28":0.02926,"36":0.00836,"46":0.03344,"80":0.00418,"82":0.23408,"83":0.65208,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00836,"18":0.01672,"92":0.01672,"96":0.03344,"97":0.50578,"98":2.16942,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95"},E:{"4":0,"11":0.00836,"12":0.00836,"13":0.10868,"14":0.25498,"15":0.24662,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.10868,"10.1":0.02926,"11.1":0.05434,"12.1":0.04598,"13.1":0.28842,"14.1":1.01574,"15.1":0.86108,"15.2-15.3":1.2749,"15.4":0.0209},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.0046,"7.0-7.1":0.07206,"8.1-8.4":0,"9.0-9.2":0.04447,"9.3":0.33272,"10.0-10.2":0.0092,"10.3":0.37566,"11.0-11.2":0.03373,"11.3-11.4":0.04447,"12.0-12.1":0.0276,"12.2-12.5":0.89851,"13.0-13.1":0.02453,"13.2":0.0138,"13.3":0.0552,"13.4-13.7":0.19013,"14.0-14.4":0.51365,"14.5-14.8":1.69736,"15.0-15.1":2.82433,"15.2-15.3":7.9946,"15.4":0.17326},P:{"4":0.47534,"5.0-5.4":0.1009,"6.2-6.4":0.18286,"7.2-7.4":0.07394,"8.2":0.02052,"9.2":0.01025,"10.1":0.02113,"11.1-11.2":0.04225,"12.0":0.01056,"13.0":0.10563,"14.0":0.03169,"15.0":0.07394,"16.0":1.56335},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00189,"4.4":0,"4.4.3-4.4.4":0.00975},A:{"11":0.04598,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.24444},Q:{"10.4":0},O:{"0":1.9497},H:{"0":1.79626},L:{"0":36.5219},S:{"2.5":0}}; +module.exports={C:{"32":0.00815,"44":0.00407,"47":0.00407,"48":0.00407,"52":0.02444,"55":0.00815,"62":0.00407,"72":0.00407,"78":0.00815,"81":0.00407,"82":0.00815,"84":0.01629,"89":0.01222,"91":0.00407,"95":0.00407,"97":0.00407,"98":0.00407,"99":0.03258,"100":0.22402,"101":2.10574,"102":0.09368,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 38 39 40 41 42 43 45 46 49 50 51 53 54 56 57 58 59 60 61 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 83 85 86 87 88 90 92 93 94 96 103 104 3.5 3.6"},D:{"38":0.04073,"47":0.0611,"49":0.34213,"50":0.00407,"55":0.01222,"56":0.00815,"60":0.00815,"62":0.03258,"65":0.00815,"66":0.00407,"67":0.00407,"68":0.00407,"69":0.00407,"70":0.00407,"72":0.01222,"73":0.02037,"74":0.00407,"75":0.00407,"76":0.00407,"78":0.04888,"79":0.21587,"80":0.02444,"81":0.01222,"83":0.02851,"84":0.01222,"87":0.17514,"88":0.01629,"89":0.04073,"91":0.03666,"92":0.08961,"93":0.0611,"94":0.01629,"95":0.05295,"96":0.04888,"97":0.07739,"98":0.06517,"99":0.08553,"100":0.30955,"101":1.47443,"102":23.13464,"103":1.93875,"104":0.00815,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 51 52 53 54 57 58 59 61 63 64 71 77 85 86 90 105 106"},F:{"28":0.03666,"36":0.00815,"46":0.05295,"63":0.00407,"85":0.03258,"86":0.33806,"87":0.42767,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00815,"97":0.00815,"99":0.01629,"100":0.02037,"101":0.24438,"102":1.50294,"103":0.32177,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 98"},E:{"4":0,"12":0.00815,"13":0.04888,"14":0.15885,"15":0.10183,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.17514,"10.1":0.01629,"11.1":0.03666,"12.1":0.0611,"13.1":0.2118,"14.1":0.41137,"15.1":0.16699,"15.2-15.3":0.18329,"15.4":1.0101,"15.5":2.17091,"16.0":0.01629},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00485,"7.0-7.1":0.05011,"8.1-8.4":0.00323,"9.0-9.2":0.01455,"9.3":0.25055,"10.0-10.2":0.00808,"10.3":0.25702,"11.0-11.2":0.01455,"11.3-11.4":0.01616,"12.0-12.1":0.07112,"12.2-12.5":0.66113,"13.0-13.1":0.02263,"13.2":0.00647,"13.3":0.03071,"13.4-13.7":0.13578,"14.0-14.4":0.27318,"14.5-14.8":0.73549,"15.0-15.1":0.62395,"15.2-15.3":0.91168,"15.4":2.40528,"15.5":9.61952,"16.0":0.0291},P:{"4":0.57019,"5.0-5.4":0.02174,"6.2-6.4":0.38204,"7.2-7.4":0.06335,"8.2":0.06207,"9.2":0.09503,"10.1":0.02112,"11.1-11.2":0.02112,"12.0":0.01025,"13.0":0.03168,"14.0":0.02112,"15.0":0.02112,"16.0":0.13727,"17.0":1.53106},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00542,"4.4":0,"4.4.3-4.4.4":0.042},A:{"11":0.05702,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.61807},H:{"0":2.44653},L:{"0":37},S:{"2.5":0},R:{_:"0"},M:{"0":0.2193}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BO.js index fa28b173448d27..6b315bb7fe4b51 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BO.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BO.js @@ -1 +1 @@ -module.exports={C:{"43":0.00342,"48":0.00342,"52":0.06506,"56":0.00685,"67":0.00342,"68":0.00342,"69":0.01027,"72":0.01027,"73":0.00685,"78":0.02054,"81":0.00342,"82":0.00685,"83":0.01027,"85":0.01712,"86":0.00342,"88":0.01027,"89":0.0137,"91":0.02739,"92":0.01027,"93":0.00685,"94":0.0137,"95":0.03424,"96":0.83888,"97":1.27373,"98":0.0137,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 70 71 74 75 76 77 79 80 84 87 90 99 3.5 3.6"},D:{"22":0.00342,"26":0.00685,"34":0.00342,"38":0.02739,"43":0.00342,"47":0.00685,"49":0.04794,"53":0.01027,"56":0.00342,"58":0.00685,"62":0.01027,"63":0.01027,"65":0.00342,"66":0.00685,"67":0.0137,"68":0.00685,"69":0.01027,"70":0.03082,"71":0.01027,"72":0.01027,"73":0.00342,"74":0.0137,"75":0.00685,"76":0.0137,"77":0.00685,"78":0.00685,"79":0.12326,"80":0.01712,"81":0.02054,"83":0.05821,"84":0.04794,"85":0.03424,"86":0.05136,"87":0.06848,"88":0.03424,"89":0.03082,"90":0.03424,"91":0.85942,"92":0.06848,"93":0.17462,"94":0.04451,"95":0.0719,"96":0.41773,"97":6.68022,"98":16.89402,"99":0.00342,"100":0.00685,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 44 45 46 48 50 51 52 54 55 57 59 60 61 64 101"},F:{"36":0.00685,"68":0.00685,"77":0.00342,"82":0.3287,"83":1.19498,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.00685,"17":0.00685,"18":0.02054,"84":0.00685,"89":0.00685,"92":0.01027,"94":0.00685,"95":0.00685,"96":0.01712,"97":0.29789,"98":1.2703,_:"12 14 15 16 79 80 81 83 85 86 87 88 90 91 93"},E:{"4":0,"14":0.03082,"15":0.02739,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 15.4","5.1":0.03766,"11.1":0.00685,"12.1":0.00342,"13.1":0.04794,"14.1":0.0993,"15.1":0.05136,"15.2-15.3":0.13011},G:{"8":0,"3.2":0.00046,"4.0-4.1":0,"4.2-4.3":0.00023,"5.0-5.1":0.00459,"6.0-6.1":0.00138,"7.0-7.1":0.00781,"8.1-8.4":0.00069,"9.0-9.2":0.00299,"9.3":0.01722,"10.0-10.2":0.00207,"10.3":0.00964,"11.0-11.2":0.0039,"11.3-11.4":0.00459,"12.0-12.1":0.00161,"12.2-12.5":0.12468,"13.0-13.1":0.0023,"13.2":0.00276,"13.3":0.00781,"13.4-13.7":0.05258,"14.0-14.4":0.1341,"14.5-14.8":0.37496,"15.0-15.1":0.33616,"15.2-15.3":1.19654,"15.4":0.00597},P:{"4":0.55693,"5.0-5.4":0.1009,"6.2-6.4":0.18286,"7.2-7.4":0.46411,"8.2":0.02052,"9.2":0.04125,"10.1":0.01018,"11.1-11.2":0.17533,"12.0":0.06188,"13.0":0.16502,"14.0":0.18564,"15.0":0.2269,"16.0":1.96989},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00216,"4.2-4.3":0.00757,"4.4":0,"4.4.3-4.4.4":0.06918},A:{"8":0.00685,"11":0.07875,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.01973},N:{_:"10 11"},R:{_:"0"},M:{"0":0.13152},Q:{"10.4":0},O:{"0":0.18413},H:{"0":0.37977},L:{"0":46.09357},S:{"2.5":0}}; +module.exports={C:{"47":0.00369,"52":0.05907,"53":0.00369,"56":0.00369,"61":0.00738,"63":0.00738,"68":0.00369,"72":0.01108,"73":0.00738,"76":0.00369,"78":0.01477,"79":0.00369,"85":0.00738,"86":0.00738,"88":0.01108,"89":0.00738,"91":0.03323,"92":0.00369,"93":0.00738,"94":0.00369,"95":0.00369,"96":0.07384,"97":0.01108,"98":0.01846,"99":0.07384,"100":0.35074,"101":2.02322,"102":0.08122,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 54 55 57 58 59 60 62 64 65 66 67 69 70 71 74 75 77 80 81 82 83 84 87 90 103 104 3.5 3.6"},D:{"34":0.00369,"38":0.01108,"47":0.00738,"49":0.03692,"50":0.01846,"52":0.00369,"53":0.00369,"56":0.00369,"60":0.01108,"62":0.00738,"63":0.00738,"65":0.00738,"67":0.00369,"68":0.01477,"69":0.02215,"70":0.02954,"71":0.00369,"72":0.01477,"73":0.00738,"74":0.01477,"75":0.00369,"76":0.01477,"77":0.00369,"78":0.00738,"79":0.11445,"80":0.02215,"81":0.02215,"83":0.02215,"84":0.02584,"85":0.05907,"86":0.03323,"87":0.07015,"88":0.02215,"89":0.04061,"90":0.01846,"91":0.46519,"92":0.05169,"93":0.02584,"94":0.04061,"95":0.03692,"96":0.0923,"97":0.11076,"98":0.12553,"99":0.11076,"100":0.24367,"101":1.05591,"102":22.00063,"103":2.27796,"104":0.00369,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 51 54 55 57 58 59 61 64 66 105 106"},F:{"28":0.02584,"84":0.00738,"85":0.03323,"86":0.54642,"87":0.90454,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00369,"18":0.02954,"84":0.00738,"89":0.00369,"92":0.01108,"96":0.00369,"97":0.00369,"98":0.00738,"99":0.01108,"100":0.02584,"101":0.17352,"102":1.36604,"103":0.28798,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 90 91 93 94 95"},E:{"4":0,"13":0.00369,"14":0.05907,"15":0.00738,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 16.0","5.1":0.00738,"11.1":0.00738,"12.1":0.00738,"13.1":0.05538,"14.1":0.05907,"15.1":0.01108,"15.2-15.3":0.01477,"15.4":0.08861,"15.5":0.1846},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00237,"6.0-6.1":0,"7.0-7.1":0.0074,"8.1-8.4":0.0003,"9.0-9.2":0.00355,"9.3":0.01805,"10.0-10.2":0.00118,"10.3":0.01302,"11.0-11.2":0.00444,"11.3-11.4":0.00355,"12.0-12.1":0.00178,"12.2-12.5":0.12932,"13.0-13.1":0.00473,"13.2":0.00296,"13.3":0.00592,"13.4-13.7":0.03285,"14.0-14.4":0.11601,"14.5-14.8":0.20686,"15.0-15.1":0.05712,"15.2-15.3":0.10565,"15.4":0.41786,"15.5":1.80906,"16.0":0.00769},P:{"4":0.38096,"5.0-5.4":0.02174,"6.2-6.4":0.38204,"7.2-7.4":0.47362,"8.2":0.06207,"9.2":0.03089,"10.1":0.01019,"11.1-11.2":0.13385,"12.0":0.04118,"13.0":0.12355,"14.0":0.14415,"15.0":0.08237,"16.0":0.50451,"17.0":2.19309},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00329,"4.2-4.3":0.00768,"4.4":0,"4.4.3-4.4.4":0.06472},A:{"11":0.07753,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.00631},Q:{"10.4":0},O:{"0":0.1829},H:{"0":0.412},L:{"0":56.21957},S:{"2.5":0},R:{_:"0"},M:{"0":0.12614}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BR.js index 15c6e16d9f3d38..8a2be16a3e14e5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BR.js @@ -1 +1 @@ -module.exports={C:{"47":0.00335,"52":0.01676,"60":0.0067,"67":0.00335,"68":0.01006,"72":0.00335,"78":0.02346,"79":0.00335,"80":0.00335,"81":0.0067,"82":0.00335,"84":0.0067,"88":0.01006,"89":0.0067,"90":0.0067,"91":0.03687,"92":0.0067,"93":0.01006,"94":0.04693,"95":0.02346,"96":0.51956,"97":0.80113,"98":0.0067,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 69 70 71 73 74 75 76 77 83 85 86 87 99 3.5 3.6"},D:{"38":0.00335,"47":0.0067,"49":0.02346,"51":0.01006,"54":0.01341,"55":0.00335,"58":0.0067,"63":0.0067,"65":0.0067,"66":0.01341,"67":0.0067,"68":0.0067,"69":0.00335,"70":0.0067,"71":0.00335,"72":0.0067,"73":0.00335,"74":0.01341,"75":0.06369,"76":0.01006,"77":0.0067,"78":0.01006,"79":0.06369,"80":0.02346,"81":0.02682,"83":0.02682,"84":0.05698,"85":0.03352,"86":0.05028,"87":0.0905,"88":0.02011,"89":0.03687,"90":0.04358,"91":0.73074,"92":0.05028,"93":0.21118,"94":0.05028,"95":0.07374,"96":0.32514,"97":6.86825,"98":16.05273,"99":0.03352,"100":0.02011,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 52 53 56 57 59 60 61 62 64 101"},F:{"36":0.01006,"73":0.01341,"78":0.00335,"82":0.82124,"83":1.85366,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01676,"16":0.00335,"18":0.01341,"84":0.00335,"89":0.00335,"90":0.0067,"91":0.01006,"92":0.0067,"94":0.00335,"95":0.02346,"96":0.01676,"97":0.50615,"98":1.74304,_:"12 13 14 17 79 80 81 83 85 86 87 88 93"},E:{"4":0,"13":0.01341,"14":0.02682,"15":0.02346,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 15.4","9.1":0.00335,"11.1":0.0067,"12.1":0.01006,"13.1":0.04358,"14.1":0.10056,"15.1":0.06034,"15.2-15.3":0.10391},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00108,"6.0-6.1":0,"7.0-7.1":0.00108,"8.1-8.4":0,"9.0-9.2":0.00054,"9.3":0.02107,"10.0-10.2":0,"10.3":0.02755,"11.0-11.2":0.00432,"11.3-11.4":0.01189,"12.0-12.1":0.00594,"12.2-12.5":0.19719,"13.0-13.1":0.0054,"13.2":0.0027,"13.3":0.02107,"13.4-13.7":0.08968,"14.0-14.4":0.21934,"14.5-14.8":1.18963,"15.0-15.1":0.86494,"15.2-15.3":2.7234,"15.4":0.01135},P:{"4":0.07168,"5.0-5.4":0.1009,"6.2-6.4":0.18286,"7.2-7.4":0.24576,"8.2":0.02052,"9.2":0.02048,"10.1":0.01018,"11.1-11.2":0.09216,"12.0":0.02048,"13.0":0.1024,"14.0":0.09216,"15.0":0.1024,"16.0":1.79201},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00197,"4.2-4.3":0.00295,"4.4":0,"4.4.3-4.4.4":0.02167},A:{"8":0.00705,"9":0.00705,"11":0.12334,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.09307},Q:{"10.4":0},O:{"0":0.06648},H:{"0":0.14476},L:{"0":40.25477},S:{"2.5":0}}; +module.exports={C:{"19":0.01828,"47":0.00457,"51":0.00457,"52":0.02286,"54":0.00457,"60":0.00457,"66":0.00457,"68":0.00914,"78":0.02286,"79":0.00914,"80":0.00457,"81":0.00914,"82":0.00457,"83":0.00457,"88":0.01371,"89":0.00457,"90":0.00457,"91":0.07314,"94":0.05942,"95":0.00457,"96":0.00914,"97":0.01371,"98":0.00914,"99":0.032,"100":0.18284,"101":1.47643,"102":0.06857,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 53 55 56 57 58 59 61 62 63 64 65 67 69 70 71 72 73 74 75 76 77 84 85 86 87 92 93 103 104 3.5 3.6"},D:{"38":0.00914,"47":0.00914,"49":0.02286,"51":0.00914,"55":0.00914,"58":0.00914,"60":0.00457,"62":0.00457,"63":0.00914,"65":0.00457,"66":0.00457,"67":0.00914,"68":0.00457,"69":0.01828,"70":0.00914,"72":0.00914,"73":0.00457,"74":0.01371,"75":0.02286,"76":0.03657,"77":0.00914,"78":0.01371,"79":0.08228,"80":0.01828,"81":0.03657,"83":0.04114,"84":0.08228,"85":0.06857,"86":0.08685,"87":0.09142,"88":0.01828,"89":0.04571,"90":0.032,"91":1.28445,"92":0.03657,"93":0.04114,"94":0.032,"95":0.02286,"96":0.07314,"97":0.06857,"98":0.07771,"99":0.13256,"100":0.27883,"101":1.39416,"102":26.81349,"103":2.73803,"104":0.02286,"105":0.00457,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 52 53 54 56 57 59 61 64 71 106"},F:{"82":0.00457,"84":0.00457,"85":0.03657,"86":1.72327,"87":1.83297,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.04114,"16":0.00457,"18":0.01828,"84":0.00457,"91":0.01371,"92":0.01371,"96":0.00457,"98":0.00457,"99":0.01371,"100":0.01371,"101":0.38396,"102":2.54605,"103":0.54395,_:"12 13 14 17 79 80 81 83 85 86 87 88 89 90 93 94 95 97"},E:{"4":0,"13":0.00914,"14":0.02743,"15":0.01371,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00457,"12.1":0.00914,"13.1":0.05028,"14.1":0.08228,"15.1":0.01828,"15.2-15.3":0.01828,"15.4":0.10513,"15.5":0.29254},G:{"8":0.00203,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00203,"6.0-6.1":0,"7.0-7.1":0.00203,"8.1-8.4":0,"9.0-9.2":0.00271,"9.3":0.02981,"10.0-10.2":0.00407,"10.3":0.03523,"11.0-11.2":0.00474,"11.3-11.4":0.01965,"12.0-12.1":0.0061,"12.2-12.5":0.18226,"13.0-13.1":0.00542,"13.2":0.00542,"13.3":0.01558,"13.4-13.7":0.07453,"14.0-14.4":0.1599,"14.5-14.8":0.58946,"15.0-15.1":0.12399,"15.2-15.3":0.26763,"15.4":0.94652,"15.5":4.2678,"16.0":0.0122},P:{"4":0.07173,"5.0-5.4":0.02174,"6.2-6.4":0.38204,"7.2-7.4":0.23569,"8.2":0.06207,"9.2":0.01025,"10.1":0.01019,"11.1-11.2":0.06149,"12.0":0.01025,"13.0":0.06149,"14.0":0.06149,"15.0":0.04099,"16.0":0.18446,"17.0":1.81381},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00259,"4.2-4.3":0.00691,"4.4":0,"4.4.3-4.4.4":0.0285},A:{"8":0.00457,"9":0.00914,"11":0.1097,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.09229},H:{"0":0.20045},L:{"0":43.45728},S:{"2.5":0},R:{_:"0"},M:{"0":0.14115}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BS.js index f8b1fca5601065..1494f04654bb4a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BS.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BS.js @@ -1 +1 @@ -module.exports={C:{"48":0.04687,"52":0.01875,"78":0.01406,"88":0.02812,"91":0.04687,"94":0.06562,"95":0.38433,"96":0.50151,"97":0.77336,"98":0.00937,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 99 3.5 3.6"},D:{"49":0.14998,"55":0.00937,"56":0.01406,"65":0.03281,"67":0.01406,"70":0.01406,"71":0.00937,"74":0.00937,"75":0.0375,"76":0.22498,"77":0.00937,"78":0.03281,"79":0.02344,"80":0.00469,"81":0.01406,"83":0.01875,"84":0.01406,"86":0.00469,"87":0.04687,"88":0.00937,"89":0.00937,"90":0.05156,"91":0.07031,"92":0.04687,"93":0.15467,"94":0.05156,"95":0.03281,"96":0.45464,"97":7.61638,"98":13.96257,"99":0.01406,"100":0.03281,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 57 58 59 60 61 62 63 64 66 68 69 72 73 85 101"},F:{"74":0.00469,"82":0.09374,"83":0.30466,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.01406,"14":0.01875,"15":0.00937,"16":0.04687,"17":0.02344,"18":0.07031,"92":0.00469,"93":0.01406,"94":0.01875,"95":0.04218,"96":0.07968,"97":1.83262,"98":6.04154,_:"12 79 80 81 83 84 85 86 87 88 89 90 91"},E:{"4":0,"12":0.00469,"13":0.04218,"14":0.40308,"15":0.22498,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01875,"11.1":0.06562,"12.1":0.10311,"13.1":0.4312,"14.1":1.75294,"15.1":1.11551,"15.2-15.3":2.25445,"15.4":0.01875},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.11597,"10.0-10.2":0.00455,"10.3":0.1228,"11.0-11.2":0.03184,"11.3-11.4":0.02274,"12.0-12.1":0.02729,"12.2-12.5":0.53212,"13.0-13.1":0.04321,"13.2":0.00227,"13.3":0.1046,"13.4-13.7":0.17282,"14.0-14.4":0.72768,"14.5-14.8":4.16371,"15.0-15.1":3.65661,"15.2-15.3":12.96641,"15.4":0.03866},P:{"4":0.04186,"5.0-5.4":0.01086,"6.2-6.4":0.02066,"7.2-7.4":0.30349,"8.2":0.01018,"9.2":0.05233,"10.1":0.01018,"11.1-11.2":0.8372,"12.0":0.05233,"13.0":0.2407,"14.0":0.27209,"15.0":0.13605,"16.0":4.20695},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.03188},A:{"11":0.26716,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.13285},Q:{"10.4":0},O:{"0":0.02657},H:{"0":0.08553},L:{"0":28.3337},S:{"2.5":0}}; +module.exports={C:{"48":0.0211,"52":0.01266,"60":0.00422,"67":0.00844,"78":0.00844,"91":0.04641,"95":0.02531,"96":0.00422,"97":0.0211,"98":0.05485,"99":0.02531,"100":0.12235,"101":0.83536,"102":0.02953,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 103 104 3.5 3.6"},D:{"49":0.16876,"56":0.01266,"65":0.01266,"69":0.01266,"71":0.00844,"75":0.04219,"76":0.27424,"77":0.01266,"78":0.01266,"79":0.0211,"81":0.00844,"83":0.01688,"84":0.00844,"85":0.00422,"86":0.00422,"87":0.03797,"88":0.00844,"90":0.04219,"91":0.09282,"92":0.0211,"93":0.14767,"94":0.0211,"95":0.00844,"96":0.0675,"97":0.16032,"98":0.05485,"99":0.09704,"100":0.27845,"101":1.97027,"102":14.60196,"103":1.42602,"104":0.00844,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 63 64 66 67 68 70 72 73 74 80 89 105 106"},F:{"85":0.00422,"86":0.12657,"87":0.23626,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00422,"16":0.01688,"17":0.0211,"18":0.03797,"93":0.00422,"98":0.01266,"99":0.01266,"100":0.04641,"101":0.83536,"102":4.47214,"103":0.94506,_:"12 13 14 79 80 81 83 84 85 86 87 88 89 90 91 92 94 95 96 97"},E:{"4":0,"12":0.00844,"13":0.02953,"14":0.16876,"15":0.07172,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00422,"11.1":0.03375,"12.1":0.18564,"13.1":0.38815,"14.1":1.09694,"15.1":0.18986,"15.2-15.3":0.18986,"15.4":1.29523,"15.5":4.2401,"16.0":0.00844},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.06751,"10.0-10.2":0.00921,"10.3":0.09819,"11.0-11.2":0.01227,"11.3-11.4":0.01841,"12.0-12.1":0.01227,"12.2-12.5":0.45107,"13.0-13.1":0.02148,"13.2":0,"13.3":0.03682,"13.4-13.7":0.08592,"14.0-14.4":0.3897,"14.5-14.8":1.72758,"15.0-15.1":0.45107,"15.2-15.3":1.21514,"15.4":4.8544,"15.5":21.11758,"16.0":0.03069},P:{"4":0.02064,"5.0-5.4":0.02174,"6.2-6.4":0.01016,"7.2-7.4":0.23733,"8.2":0.06207,"9.2":0.03096,"10.1":0.01019,"11.1-11.2":0.40244,"12.0":0.05159,"13.0":0.25797,"14.0":0.17542,"15.0":0.06191,"16.0":0.3302,"17.0":3.43619},I:{"0":0,"3":0,"4":0.00272,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00272,"4.4":0,"4.4.3-4.4.4":0.06392},A:{"9":0.00844,"11":0.14767,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.00578},Q:{"10.4":0},O:{"0":0.01156},H:{"0":0.07114},L:{"0":27.36048},S:{"2.5":0},R:{_:"0"},M:{"0":0.09826}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BT.js index f6c6077a556557..71f2c7af4ed08f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BT.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BT.js @@ -1 +1 @@ -module.exports={C:{"18":0.00186,"39":0.00186,"41":0.00743,"52":0.00557,"68":0.00186,"72":0.00186,"78":0.00929,"81":0.00186,"82":0.00372,"84":0.00186,"87":0.03159,"88":0.01858,"89":0.00186,"91":0.00557,"92":0.00186,"94":0.00372,"95":0.04088,"96":0.19323,"97":0.29914,"98":0.02601,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 83 85 86 90 93 99 3.5 3.6"},D:{"33":0.00557,"43":0.00372,"49":0.00372,"53":0.00557,"63":0.00372,"65":0.01301,"66":0.01858,"67":0.05946,"69":0.00372,"71":0.00557,"73":0.00929,"74":0.00186,"76":0.00372,"78":0.02044,"79":0.02601,"80":0.02044,"81":0.10591,"83":0.01301,"84":0.00929,"85":0.00557,"86":0.00557,"87":0.03902,"88":0.00372,"89":0.00557,"90":0.01301,"91":0.03159,"92":0.06689,"93":0.0353,"94":0.01672,"95":0.07618,"96":0.41248,"97":4.38116,"98":9.26956,"99":0.01301,"100":0.03159,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 64 68 70 72 75 77 101"},F:{"36":0.00186,"80":0.00372,"82":0.01115,"83":0.13749,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00557,"13":0.00372,"16":0.00186,"18":0.01115,"84":0.00743,"85":0.01115,"87":0.01858,"90":0.00186,"91":0.00557,"92":0.01672,"93":0.00743,"94":0.00929,"95":0.01858,"96":0.10962,"97":0.36045,"98":0.72648,_:"14 15 17 79 80 81 83 86 88 89"},E:{"4":0,"13":0.02973,"14":0.05388,"15":0.11148,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.01672,"11.1":0.00929,"12.1":0.02973,"13.1":0.10219,"14.1":0.22296,"15.1":0.10776,"15.2-15.3":0.13749},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01296,"8.1-8.4":0.00086,"9.0-9.2":0.00086,"9.3":0.04925,"10.0-10.2":0.00346,"10.3":0.01123,"11.0-11.2":0.04925,"11.3-11.4":0.01123,"12.0-12.1":0.03801,"12.2-12.5":0.48036,"13.0-13.1":0.01814,"13.2":0.00864,"13.3":0.1486,"13.4-13.7":0.254,"14.0-14.4":1.11104,"14.5-14.8":1.86355,"15.0-15.1":1.72618,"15.2-15.3":2.845,"15.4":0.00605},P:{"4":0.33912,"5.0-5.4":0.1009,"6.2-6.4":0.18286,"7.2-7.4":0.16442,"8.2":0.02052,"9.2":0.03083,"10.1":0.01018,"11.1-11.2":0.12332,"12.0":0.03083,"13.0":0.19525,"14.0":0.14387,"15.0":0.11304,"16.0":0.97625},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.01672,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.02443},Q:{"10.4":0},O:{"0":4.28269},H:{"0":0.37},L:{"0":66.43858},S:{"2.5":0}}; +module.exports={C:{"4":0.00255,"30":0.00255,"52":0.01018,"68":0.00255,"72":0.00764,"75":0.00255,"76":0.01273,"78":0.02801,"81":0.00255,"84":0.00509,"87":0.01018,"88":0.00509,"91":0.00509,"94":0.00255,"95":0.01782,"96":0.00764,"99":0.00509,"100":0.08402,"101":0.74852,"102":0.10693,"103":0.00509,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 77 79 80 82 83 85 86 89 90 92 93 97 98 104 3.5 3.6"},D:{"31":0.00255,"32":0.00509,"43":0.02037,"49":0.0331,"55":0.00764,"58":0.00509,"60":0.00255,"65":0.00764,"67":0.00764,"69":0.00509,"73":0.01528,"74":0.00509,"75":0.01018,"78":0.01018,"79":0.00764,"80":0.01018,"81":0.02546,"83":0.00509,"84":0.00255,"85":0.01018,"86":0.00764,"87":0.0662,"88":0.01782,"89":0.00509,"90":0.02037,"91":0.01528,"92":0.01018,"93":0.01273,"94":0.00509,"95":0.04837,"96":0.05856,"97":0.03564,"98":0.05601,"99":0.04328,"100":0.1884,"101":0.72052,"102":16.54391,"103":2.00879,"104":0.07129,"105":0.02546,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 50 51 52 53 54 56 57 59 61 62 63 64 66 68 70 71 72 76 77 106"},F:{"46":0.00509,"86":0.01528,"87":0.20368,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00764,"13":0.00509,"14":0.00255,"16":0.01273,"18":0.02037,"84":0.01782,"85":0.00509,"89":0.00255,"90":0.00255,"91":0.00255,"92":0.03819,"93":0.00509,"94":0.02037,"95":0.01528,"96":0.01782,"97":0.00764,"98":0.00764,"99":0.01273,"100":0.03819,"101":0.22914,"102":1.12279,"103":0.20368,_:"15 17 79 80 81 83 86 87 88"},E:{"4":0,"13":0.04074,"14":0.07638,"15":0.01273,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00509,"12.1":0.00764,"13.1":0.06365,"14.1":0.14512,"15.1":0.01528,"15.2-15.3":0.03055,"15.4":0.21896,"15.5":0.34116},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00472,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.017,"10.0-10.2":0.00283,"10.3":0.01417,"11.0-11.2":0.00755,"11.3-11.4":0.01039,"12.0-12.1":0.04722,"12.2-12.5":0.37679,"13.0-13.1":0.01983,"13.2":0.01039,"13.3":0.06516,"13.4-13.7":0.15204,"14.0-14.4":0.76775,"14.5-14.8":0.92828,"15.0-15.1":0.6091,"15.2-15.3":0.79891,"15.4":1.69886,"15.5":3.89539,"16.0":0.01039},P:{"4":0.15546,"5.0-5.4":0.02174,"6.2-6.4":0.38204,"7.2-7.4":0.10364,"8.2":0.06207,"9.2":0.01134,"10.1":0.01019,"11.1-11.2":0.07255,"12.0":0.01036,"13.0":0.06218,"14.0":0.05182,"15.0":0.05182,"16.0":0.18655,"17.0":0.8084},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.01782,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.40135},H:{"0":0.57867},L:{"0":62.59191},S:{"2.5":0},R:{_:"0"},M:{"0":0.02982}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BW.js index 82103593302fde..95fc3a0757ca4c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BW.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BW.js @@ -1 +1 @@ -module.exports={C:{"34":0.05446,"40":0.00908,"41":0.00454,"43":0.00908,"47":0.00908,"50":0.00454,"52":0.04084,"60":0.00908,"69":0.00908,"70":0.00908,"72":0.00908,"78":0.04992,"81":0.00908,"88":0.00908,"89":0.01361,"91":0.1316,"92":0.00908,"93":0.00908,"94":0.02723,"95":0.04538,"96":1.07097,"97":1.42039,"98":0.08622,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 42 44 45 46 48 49 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 71 73 74 75 76 77 79 80 82 83 84 85 86 87 90 99 3.5 3.6"},D:{"38":0.00908,"41":0.01361,"43":0.02723,"49":0.0363,"56":0.00454,"58":0.00454,"59":0.00454,"63":0.01815,"64":0.00454,"66":0.01361,"68":0.00454,"69":0.02269,"70":0.00908,"72":0.01361,"73":0.00908,"74":0.01815,"75":0.01361,"76":0.01361,"78":0.01361,"79":0.08168,"80":0.04084,"81":0.02723,"83":0.05899,"84":0.01361,"85":0.01815,"86":0.04084,"87":0.08168,"88":0.03177,"89":0.02723,"90":0.04538,"91":0.04084,"92":0.08168,"93":0.1316,"94":0.07715,"95":0.13614,"96":0.57179,"97":8.80826,"98":19.20028,"99":0.00454,"100":0.00908,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 44 45 46 47 48 50 51 52 53 54 55 57 60 61 62 65 67 71 77 101"},F:{"28":0.01361,"79":0.01361,"81":0.00454,"82":0.09076,"83":0.84861,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.03177,"13":0.02269,"14":0.05446,"15":0.06807,"16":0.0363,"17":0.02723,"18":0.11799,"80":0.00908,"84":0.02723,"85":0.01361,"89":0.02269,"90":0.00454,"91":0.00908,"92":0.02269,"93":0.01361,"94":0.02269,"95":0.02723,"96":0.1316,"97":1.39317,"98":4.30202,_:"79 81 83 86 87 88"},E:{"4":0,"12":0.01361,"14":0.09984,"15":0.06807,_:"0 5 6 7 8 9 10 11 13 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.00454,"11.1":0.00908,"12.1":0.00908,"13.1":0.09076,"14.1":0.20875,"15.1":0.18606,"15.2-15.3":0.29497},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01874,"6.0-6.1":0.00312,"7.0-7.1":0.03257,"8.1-8.4":0,"9.0-9.2":0.00268,"9.3":0.03703,"10.0-10.2":0,"10.3":0.02811,"11.0-11.2":0.01338,"11.3-11.4":0.0058,"12.0-12.1":0.00758,"12.2-12.5":0.43233,"13.0-13.1":0.00446,"13.2":0,"13.3":0.01472,"13.4-13.7":0.05131,"14.0-14.4":0.22977,"14.5-14.8":0.88294,"15.0-15.1":0.85796,"15.2-15.3":1.7815,"15.4":0.05845},P:{"4":0.25574,"5.0-5.4":0.1009,"6.2-6.4":0.18286,"7.2-7.4":0.39895,"8.2":0.02052,"9.2":0.01023,"10.1":0.01018,"11.1-11.2":0.10229,"12.0":0.03069,"13.0":0.15344,"14.0":0.42964,"15.0":0.11252,"16.0":2.04588},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00192,"4.2-4.3":0.005,"4.4":0,"4.4.3-4.4.4":0.07501},A:{"9":0.00919,"10":0.0046,"11":0.34925,_:"6 7 8 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.01639},N:{_:"10 11"},R:{_:"0"},M:{"0":0.10924},Q:{"10.4":0.00546},O:{"0":1.17433},H:{"0":0.76015},L:{"0":46.92915},S:{"2.5":0.01639}}; +module.exports={C:{"11":0.01616,"34":0.01212,"40":0.00404,"47":0.00808,"48":0.00404,"52":0.02423,"60":0.01616,"72":0.01616,"78":0.01212,"81":0.00808,"88":0.00404,"91":0.0929,"94":0.00808,"95":0.04039,"98":0.00808,"99":0.04847,"100":0.2585,"101":1.78524,"102":0.13733,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 41 42 43 44 45 46 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 82 83 84 85 86 87 89 90 92 93 96 97 103 104 3.5 3.6"},D:{"33":0.00404,"38":0.01616,"49":0.0727,"56":0.00808,"57":0.01212,"63":0.01212,"65":0.01212,"66":0.00808,"69":0.00404,"70":0.00404,"71":0.00808,"72":0.00404,"74":0.01616,"75":0.01212,"76":0.01616,"77":0.00404,"78":0.00404,"79":0.02827,"80":0.04847,"81":0.01616,"83":0.02423,"84":0.01616,"85":0.01616,"86":0.04039,"87":0.02827,"88":0.0202,"89":0.01212,"90":0.0202,"91":0.02423,"92":0.04847,"93":0.04847,"94":0.02423,"95":0.05655,"96":0.0727,"97":0.10501,"98":0.0727,"99":0.20195,"100":0.34735,"101":1.5429,"102":20.84528,"103":1.59137,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 58 59 60 61 62 64 67 68 73 104 105 106"},F:{"28":0.01212,"84":0.01212,"85":0.01212,"86":0.0929,"87":0.7149,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.03231,"13":0.0202,"14":0.04039,"15":0.03635,"16":0.02827,"17":0.0202,"18":0.09694,"84":0.0202,"85":0.00404,"88":0.00404,"89":0.01212,"90":0.01616,"91":0.00404,"92":0.04039,"93":0.00808,"94":0.00808,"95":0.01616,"96":0.0202,"97":0.01616,"98":0.02827,"99":0.04847,"100":0.0727,"101":0.56546,"102":3.55432,"103":0.4968,_:"79 80 81 83 86 87"},E:{"4":0,"13":0.01212,"14":0.02423,"15":0.01616,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01212,"12.1":0.00404,"13.1":0.05251,"14.1":0.06059,"15.1":0.04443,"15.2-15.3":0.0727,"15.4":0.17772,"15.5":0.37563},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00159,"5.0-5.1":0.00476,"6.0-6.1":0.00159,"7.0-7.1":0.0135,"8.1-8.4":0.00238,"9.0-9.2":0,"9.3":0.01707,"10.0-10.2":0,"10.3":0.02858,"11.0-11.2":0.00119,"11.3-11.4":0.01032,"12.0-12.1":0.00516,"12.2-12.5":0.38541,"13.0-13.1":0.00754,"13.2":0.01627,"13.3":0.0647,"13.4-13.7":0.04445,"14.0-14.4":0.11987,"14.5-14.8":0.26633,"15.0-15.1":0.10796,"15.2-15.3":0.18933,"15.4":0.73509,"15.5":1.8933,"16.0":0.01786},P:{"4":0.20495,"5.0-5.4":0.02174,"6.2-6.4":0.38204,"7.2-7.4":0.33817,"8.2":0.06207,"9.2":0.01025,"10.1":0.01019,"11.1-11.2":0.06149,"12.0":0.01025,"13.0":0.12297,"14.0":0.10248,"15.0":0.06149,"16.0":0.45089,"17.0":1.37317},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00072,"4.2-4.3":0.0018,"4.4":0,"4.4.3-4.4.4":0.0571},A:{"10":0.00808,"11":0.19387,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.01192},Q:{"10.4":0},O:{"0":0.90607},H:{"0":0.89731},L:{"0":55.4999},S:{"2.5":0.02981},R:{_:"0"},M:{"0":0.11922}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BY.js index 73e6e6d77f01db..9ea21df74495eb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BY.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BY.js @@ -1 +1 @@ -module.exports={C:{"39":0.01059,"48":0.01059,"50":0.02649,"52":0.24366,"55":0.27544,"72":0.01059,"78":0.04238,"79":0.03178,"80":0.02119,"81":0.02649,"82":0.01589,"84":0.02119,"86":0.01059,"88":0.02119,"89":0.02119,"91":0.09005,"92":0.01059,"93":0.01059,"94":0.02649,"95":0.06886,"96":1.08059,"97":1.53083,"98":0.01059,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 49 51 53 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 83 85 87 90 99 3.5 3.6"},D:{"22":0.0053,"38":0.01059,"49":0.14832,"51":0.01059,"53":0.10064,"59":0.01589,"63":0.0053,"65":0.01059,"66":0.01059,"67":0.02119,"68":0.02119,"69":0.23307,"70":0.01059,"71":0.01059,"72":0.01589,"73":0.03708,"74":0.06886,"75":0.03178,"76":0.01059,"77":0.01059,"78":0.02119,"79":0.10064,"80":0.07946,"81":0.01059,"83":0.04238,"84":0.09535,"85":0.12183,"86":0.27015,"87":0.14832,"88":0.11653,"89":0.07416,"90":0.05827,"91":0.08475,"92":0.24896,"93":0.28074,"94":0.10064,"95":0.06886,"96":0.85811,"97":9.22208,"98":18.15282,"99":0.06356,"100":0.02649,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 52 54 55 56 57 58 60 61 62 64 101"},F:{"36":0.10064,"41":0.01059,"68":0.01059,"71":0.01059,"72":0.0053,"73":0.0053,"74":0.0053,"75":0.01059,"77":0.06356,"78":0.02649,"79":0.05827,"80":0.03178,"81":0.03178,"82":0.72569,"83":5.2917,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 76 9.5-9.6 10.5 11.1 11.5 11.6","10.0-10.1":0,"10.6":0.02649,"12.1":0.12183},B:{"18":0.04238,"79":0.0053,"85":0.0053,"86":0.0053,"95":0.01059,"96":0.0053,"97":0.39728,"98":1.34014,_:"12 13 14 15 16 17 80 81 83 84 87 88 89 90 91 92 93 94"},E:{"4":0,"13":0.01059,"14":0.19599,"15":0.12183,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1","5.1":0.14302,"9.1":0.0053,"10.1":0.0053,"11.1":0.02649,"12.1":0.02119,"13.1":0.10594,"14.1":0.42376,"15.1":0.39728,"15.2-15.3":0.81044,"15.4":0.0053},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0018,"6.0-6.1":0.0018,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.0009,"9.3":0.02706,"10.0-10.2":0.03517,"10.3":0.03337,"11.0-11.2":0.02345,"11.3-11.4":0.01082,"12.0-12.1":0.02525,"12.2-12.5":0.26516,"13.0-13.1":0.00722,"13.2":0.00812,"13.3":0.04149,"13.4-13.7":0.1407,"14.0-14.4":0.46178,"14.5-14.8":1.16257,"15.0-15.1":1.56121,"15.2-15.3":5.19232,"15.4":0.01353},P:{"4":0.03227,"5.0-5.4":0.01086,"6.2-6.4":0.18286,"7.2-7.4":0.26254,"8.2":0.02052,"9.2":0.0104,"10.1":0.01018,"11.1-11.2":0.02151,"12.0":0.07529,"13.0":0.05378,"14.0":0.05378,"15.0":0.06454,"16.0":1.16167},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00391,"4.2-4.3":0.00684,"4.4":0,"4.4.3-4.4.4":0.02687},A:{"8":0.02649,"9":0.01059,"11":0.19069,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.11755},Q:{"10.4":0.0047},O:{"0":0.15046},H:{"0":1.07282},L:{"0":32.66327},S:{"2.5":0}}; +module.exports={C:{"43":0.00473,"50":0.04253,"52":0.33075,"55":0.00473,"60":0.00473,"65":0.00473,"68":0.00473,"72":0.00945,"78":0.0189,"80":0.01418,"81":0.01418,"82":0.00473,"83":0.00473,"84":0.04253,"86":0.00945,"88":0.0378,"89":0.02835,"91":0.14175,"92":0.01418,"94":0.00473,"95":0.01418,"96":0.02363,"97":0.16065,"98":0.02363,"99":0.02363,"100":0.46778,"101":2.21603,"102":0.07088,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 51 53 54 56 57 58 59 61 62 63 64 66 67 69 70 71 73 74 75 76 77 79 85 87 90 93 103 104 3.5 3.6"},D:{"22":0.00945,"38":0.00945,"49":0.10395,"51":0.0189,"53":0.04253,"55":0.00945,"56":0.0189,"57":0.00473,"61":0.00473,"63":0.0189,"69":0.19373,"70":0.00945,"71":0.01418,"73":0.00945,"74":0.04253,"75":0.00473,"76":0.00473,"77":0.01418,"78":0.0189,"79":0.0756,"80":0.06143,"81":0.02835,"83":0.04725,"84":0.06615,"85":0.08033,"86":0.20318,"87":0.1701,"88":0.0756,"89":0.06143,"90":0.05198,"91":0.05198,"92":0.17483,"93":0.01418,"94":0.0189,"95":0.04253,"96":0.10395,"97":0.12758,"98":0.1701,"99":0.1512,"100":0.4914,"101":1.6065,"102":18.51255,"103":1.7199,"104":0.0189,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 52 54 58 59 60 62 64 65 66 67 68 72 105 106"},F:{"36":0.1134,"58":0.00473,"67":0.00945,"71":0.00945,"72":0.00473,"78":0.00473,"79":0.00945,"82":0.03308,"83":0.02363,"84":0.03308,"85":0.33075,"86":0.58118,"87":4.76753,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 60 62 63 64 65 66 68 69 70 73 74 75 76 77 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.01418},B:{"17":0.00473,"18":0.0378,"99":0.06615,"101":0.2079,"102":1.4931,"103":0.36383,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 100"},E:{"4":0,"13":0.02835,"14":0.05198,"15":0.01418,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.0756,"10.1":0.00945,"11.1":0.0189,"12.1":0.00473,"13.1":0.0567,"14.1":0.1512,"15.1":0.07088,"15.2-15.3":0.06143,"15.4":0.52448,"15.5":2.27745,"16.0":0.00473},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00431,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.046,"10.0-10.2":0,"10.3":0.03163,"11.0-11.2":0.023,"11.3-11.4":0.00575,"12.0-12.1":0.02013,"12.2-12.5":0.29326,"13.0-13.1":0.00719,"13.2":0.01006,"13.3":0.03019,"13.4-13.7":0.115,"14.0-14.4":0.30476,"14.5-14.8":0.64258,"15.0-15.1":0.41976,"15.2-15.3":0.72452,"15.4":1.89469,"15.5":9.72644,"16.0":0.046},P:{"4":0.05306,"5.0-5.4":0.02174,"6.2-6.4":0.38204,"7.2-7.4":0.01061,"8.2":0.06207,"9.2":0.01049,"10.1":0.01019,"11.1-11.2":0.04338,"12.0":0.05306,"13.0":0.02122,"14.0":0.03184,"15.0":0.08677,"16.0":0.13796,"17.0":1.05062},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00521,"4.2-4.3":0.00521,"4.4":0,"4.4.3-4.4.4":0.03176},A:{"8":0.02363,"11":0.16065,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.1424},H:{"0":1.18336},L:{"0":33.90005},S:{"2.5":0},R:{_:"0"},M:{"0":0.21623}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BZ.js index d611eddede0a64..bc06bfa43e226b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BZ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BZ.js @@ -1 +1 @@ -module.exports={C:{"64":0.00807,"72":0.00807,"75":0.00807,"78":0.07259,"81":0.39523,"87":0.00807,"88":0.00403,"90":0.0121,"91":0.03226,"92":0.00403,"93":0.04033,"95":0.01613,"96":0.52429,"97":0.83886,"98":0.00807,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 65 66 67 68 69 70 71 73 74 76 77 79 80 82 83 84 85 86 89 94 99 3.5 3.6"},D:{"49":0.0242,"61":0.00807,"65":0.00807,"72":0.00403,"74":0.00403,"75":0.08066,"76":0.09679,"77":0.0484,"79":0.02017,"80":0.00403,"81":0.00807,"84":0.03226,"85":0.00807,"86":0.00403,"87":0.02017,"88":0.00807,"89":0.01613,"90":0.02017,"91":0.06856,"92":0.93969,"93":0.12906,"94":0.05243,"95":0.0484,"96":0.7824,"97":5.47278,"98":12.9056,"99":0.01613,"100":0.0484,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 62 63 64 66 67 68 69 70 71 73 78 83 101"},F:{"28":0.01613,"80":0.00807,"81":0.00403,"82":0.14922,"83":1.29863,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00807,"17":0.00403,"18":0.00807,"93":0.05646,"94":0.00807,"95":0.01613,"96":0.02823,"97":1.12521,"98":3.6176,_:"13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 92"},E:{"4":0,"12":0.02017,"13":0.00403,"14":0.06856,"15":0.08469,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00807,"11.1":0.00403,"12.1":0.0121,"13.1":0.11696,"14.1":0.60092,"15.1":1.10908,"15.2-15.3":3.77489,"15.4":0.05243},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00625,"6.0-6.1":0,"7.0-7.1":0.02186,"8.1-8.4":0,"9.0-9.2":0.04372,"9.3":0.24049,"10.0-10.2":0,"10.3":0.07808,"11.0-11.2":0.00625,"11.3-11.4":0.28734,"12.0-12.1":0.00937,"12.2-12.5":0.35605,"13.0-13.1":0,"13.2":0,"13.3":0.04997,"13.4-13.7":0.07808,"14.0-14.4":0.46848,"14.5-14.8":2.14877,"15.0-15.1":4.32252,"15.2-15.3":22.98996,"15.4":0.10619},P:{"4":0.1571,"5.0-5.4":0.01086,"6.2-6.4":0.18286,"7.2-7.4":0.13615,"8.2":0.02052,"9.2":0.02095,"10.1":0.01018,"11.1-11.2":0.21994,"12.0":0.02137,"13.0":0.14662,"14.0":0.09426,"15.0":0.05237,"16.0":1.69666},I:{"0":0,"3":0,"4":0.0011,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0011,"4.2-4.3":0.00037,"4.4":0,"4.4.3-4.4.4":0.0213},A:{"11":0.08469,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.0716},Q:{"10.4":0.00597},O:{"0":0.39382},H:{"0":0.0339},L:{"0":26.13127},S:{"2.5":0}}; +module.exports={C:{"52":0.01146,"71":0.00382,"78":0.00382,"81":0.35526,"88":0.00764,"91":0.02292,"93":0.02674,"99":0.00382,"100":0.08786,"101":1.10016,"102":0.08786,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 79 80 82 83 84 85 86 87 89 90 92 94 95 96 97 98 103 104 3.5 3.6"},D:{"40":0.14898,"49":0.01528,"65":0.00764,"68":0.00764,"69":0.00382,"72":0.00764,"74":0.01528,"75":0.0573,"76":0.12224,"77":0.00382,"79":0.06876,"80":0.00382,"81":0.00764,"83":0.00764,"84":0.05348,"85":0.00764,"86":0.01146,"87":0.02292,"88":0.01146,"89":0.02674,"90":0.01146,"91":0.02674,"92":0.02292,"93":0.16044,"94":0.0191,"95":0.05348,"96":0.06494,"97":0.01528,"98":0.03438,"99":0.12606,"100":0.63412,"101":4.42356,"102":13.62212,"103":1.34464,"104":0.00764,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 70 71 73 78 105 106"},F:{"28":0.04202,"78":0.00764,"85":0.00764,"86":0.19482,"87":1.17656,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00764,"18":0.01146,"84":0.00764,"89":0.00764,"90":0.00382,"91":0.0191,"92":0.00382,"93":0.04202,"96":0.00382,"97":0.00382,"98":0.00382,"99":0.00764,"100":0.03056,"101":0.46222,"102":2.44862,"103":0.41256,_:"13 14 15 16 17 79 80 81 83 85 86 87 88 94 95"},E:{"4":0,"12":0.00382,"13":0.02292,"14":0.14898,"15":0.0191,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01528,"12.1":0.14134,"13.1":0.12224,"14.1":0.09168,"15.1":0.27504,"15.2-15.3":0.17954,"15.4":2.96814,"15.5":3.12476,"16.0":0.0191},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01348,"6.0-6.1":0,"7.0-7.1":0.00539,"8.1-8.4":0,"9.0-9.2":0.02965,"9.3":0.1752,"10.0-10.2":0,"10.3":0.08625,"11.0-11.2":0,"11.3-11.4":0.24528,"12.0-12.1":0.00539,"12.2-12.5":0.43395,"13.0-13.1":0.01617,"13.2":0.01078,"13.3":0.06469,"13.4-13.7":0.12129,"14.0-14.4":0.22641,"14.5-14.8":0.99188,"15.0-15.1":0.76278,"15.2-15.3":1.69267,"15.4":7.36904,"15.5":14.58984,"16.0":0.03234},P:{"4":0.04259,"5.0-5.4":0.02174,"6.2-6.4":0.38204,"7.2-7.4":0.15971,"8.2":0.06207,"9.2":0.01049,"10.1":0.01019,"11.1-11.2":0.04259,"12.0":0.05306,"13.0":0.04259,"14.0":0.06388,"15.0":0.02129,"16.0":0.13841,"17.0":2.06557},I:{"0":0,"3":0,"4":0.0039,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0013,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.01951},A:{"11":0.20246,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.01854},O:{"0":0.2348},H:{"0":0.0702},L:{"0":33.94397},S:{"2.5":0},R:{_:"0"},M:{"0":0.12358}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CA.js index 2aa6066334b394..f8118cdff5fbd0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CA.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CA.js @@ -1 +1 @@ -module.exports={C:{"24":0.00566,"38":0.01699,"43":0.01699,"44":0.0623,"45":0.01699,"48":0.01133,"50":0.01133,"52":0.04531,"55":0.10762,"56":0.00566,"57":0.01699,"63":0.19824,"66":0.01133,"68":0.00566,"72":0.00566,"77":0.01699,"78":0.09062,"79":0.01133,"80":0.01133,"81":0.01133,"82":0.01699,"83":0.00566,"84":0.01133,"87":0.03398,"88":0.01699,"89":0.01699,"90":0.01699,"91":0.07363,"92":0.00566,"93":0.00566,"94":0.02832,"95":0.0623,"96":1.17245,"97":1.83514,"98":0.01133,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 47 49 51 53 54 58 59 60 61 62 64 65 67 69 70 71 73 74 75 76 85 86 99 3.5 3.6"},D:{"38":0.01133,"47":0.01699,"48":0.17558,"49":0.13027,"60":0.02832,"64":0.02266,"65":0.02266,"66":0.01133,"67":0.02832,"68":0.01133,"69":0.08496,"70":0.22656,"71":0.00566,"72":0.04531,"73":0.01133,"74":0.02832,"75":0.01133,"76":0.03965,"77":0.01133,"78":0.02266,"79":0.11894,"80":0.07363,"81":0.03965,"83":0.36816,"84":0.11894,"85":0.11894,"86":0.16992,"87":0.2039,"88":0.03965,"89":0.03965,"90":0.05098,"91":0.08496,"92":0.06797,"93":0.29453,"94":0.23222,"95":0.11894,"96":0.88358,"97":10.63133,"98":19.89763,"99":0.02832,"100":0.01699,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 50 51 52 53 54 55 56 57 58 59 61 62 63 101"},F:{"52":0.01133,"82":0.1416,"83":0.49277,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00566,"13":0.00566,"14":0.00566,"15":0.01133,"16":0.01133,"17":0.19824,"18":0.02832,"84":0.00566,"85":0.01699,"86":0.01133,"89":0.01133,"90":0.00566,"92":0.01133,"94":0.01133,"95":0.04531,"96":0.07363,"97":1.63123,"98":5.35248,_:"79 80 81 83 87 88 91 93"},E:{"4":0,"8":0.00566,"9":0.02832,"12":0.01133,"13":0.08496,"14":0.43613,"15":0.26621,_:"0 5 6 7 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.02832,"10.1":0.03398,"11.1":0.09062,"12.1":0.16426,"13.1":0.61171,"14.1":1.81248,"15.1":0.8496,"15.2-15.3":2.21462,"15.4":0.02266},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00225,"6.0-6.1":0.00451,"7.0-7.1":0.01127,"8.1-8.4":0.01353,"9.0-9.2":0.00676,"9.3":0.20516,"10.0-10.2":0.01353,"10.3":0.20291,"11.0-11.2":0.08793,"11.3-11.4":0.05636,"12.0-12.1":0.04058,"12.2-12.5":0.992,"13.0-13.1":0.0496,"13.2":0.02029,"13.3":0.10145,"13.4-13.7":0.34269,"14.0-14.4":0.82742,"14.5-14.8":4.29717,"15.0-15.1":2.95346,"15.2-15.3":12.23768,"15.4":0.06764},P:{"4":0.12016,"5.0-5.4":0.03103,"6.2-6.4":0.01048,"7.2-7.4":0.09308,"8.2":0.01077,"9.2":0.08273,"10.1":0.02185,"11.1-11.2":0.01092,"12.0":0.02185,"13.0":0.05462,"14.0":0.04369,"15.0":0.05462,"16.0":3.08039},I:{"0":0,"3":0,"4":0.00132,"2.1":0,"2.2":0,"2.3":0.0022,"4.1":0.00044,"4.2-4.3":0.00396,"4.4":0,"4.4.3-4.4.4":0.02243},A:{"8":0.01799,"9":0.04798,"10":0.006,"11":0.43779,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.3859},Q:{"10.4":0.00867},O:{"0":0.14309},H:{"0":0.1642},L:{"0":16.81277},S:{"2.5":0}}; +module.exports={C:{"24":0.00558,"38":0.01675,"43":0.01675,"44":0.06698,"45":0.01675,"48":0.00558,"50":0.01116,"51":0.01116,"52":0.05582,"53":0.01116,"54":0.01116,"55":0.02791,"56":0.01116,"57":0.02233,"65":0.00558,"66":0.01675,"78":0.07257,"79":0.00558,"80":0.00558,"81":0.01116,"82":0.00558,"87":0.01116,"88":0.01116,"89":0.00558,"90":0.01116,"91":0.06698,"94":0.00558,"95":0.00558,"96":0.01675,"97":0.01116,"98":0.01675,"99":0.03907,"100":0.73124,"101":2.75193,"102":0.09489,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 47 49 58 59 60 61 62 63 64 67 68 69 70 71 72 73 74 75 76 77 83 84 85 86 92 93 103 104 3.5 3.6"},D:{"38":0.00558,"41":0.00558,"46":0.00558,"47":0.02233,"48":0.18421,"49":0.12839,"53":0.00558,"56":0.00558,"58":0.00558,"59":0.01116,"60":0.04466,"62":0.00558,"63":0.00558,"65":0.02233,"66":0.01116,"67":0.02233,"68":0.01116,"69":0.06698,"70":0.00558,"72":0.01675,"73":0.00558,"74":0.02791,"75":0.01116,"76":0.03349,"77":0.01116,"78":0.02233,"79":0.10048,"80":0.05582,"81":0.03349,"83":0.31817,"84":0.11164,"85":0.08931,"86":0.08931,"87":0.14513,"88":0.02791,"89":0.02233,"90":0.01675,"91":0.05582,"92":0.03907,"93":0.10606,"94":0.0614,"95":0.02233,"96":0.1563,"97":0.12839,"98":0.20653,"99":0.27352,"100":0.74241,"101":2.86915,"102":25.17482,"103":2.14907,"104":0.01116,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 50 51 52 54 55 57 61 64 71 105 106"},F:{"52":0.00558,"71":0.00558,"85":0.01116,"86":0.22328,"87":0.40749,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00558,"13":0.00558,"15":0.01116,"16":0.01116,"18":0.01675,"85":0.01675,"92":0.00558,"94":0.00558,"96":0.00558,"97":0.02233,"98":0.01116,"99":0.02791,"100":0.03907,"101":0.79264,"102":5.57642,"103":1.08849,_:"14 17 79 80 81 83 84 86 87 88 89 90 91 93 95"},E:{"4":0,"8":0.01116,"9":0.02791,"12":0.01116,"13":0.06698,"14":0.26235,"15":0.08373,_:"0 5 6 7 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.01675,"10.1":0.03349,"11.1":0.06698,"12.1":0.1228,"13.1":0.50796,"14.1":0.90987,"15.1":0.1563,"15.2-15.3":0.16746,"15.4":1.16106,"15.5":3.60039,"16.0":0.00558},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01138,"6.0-6.1":0.00455,"7.0-7.1":0.01138,"8.1-8.4":0.01593,"9.0-9.2":0.01365,"9.3":0.18886,"10.0-10.2":0.01365,"10.3":0.17293,"11.0-11.2":0.03413,"11.3-11.4":0.05006,"12.0-12.1":0.02958,"12.2-12.5":0.82598,"13.0-13.1":0.02503,"13.2":0.01138,"13.3":0.06371,"13.4-13.7":0.24347,"14.0-14.4":0.53472,"14.5-14.8":1.95458,"15.0-15.1":0.50059,"15.2-15.3":0.89196,"15.4":2.93301,"15.5":14.13944,"16.0":0.03413},P:{"4":0.15201,"5.0-5.4":0.05037,"6.2-6.4":0.01007,"7.2-7.4":0.11081,"8.2":0.06207,"9.2":0.06044,"10.1":0.01086,"11.1-11.2":0.05037,"12.0":0.02015,"13.0":0.04343,"14.0":0.02172,"15.0":0.02172,"16.0":0.15201,"17.0":3.06196},I:{"0":0,"3":0,"4":0.00109,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00109,"4.2-4.3":0.0038,"4.4":0,"4.4.3-4.4.4":0.02496},A:{"8":0.01186,"9":0.04152,"11":0.3262,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.11045},H:{"0":0.16312},L:{"0":17.69382},S:{"2.5":0},R:{_:"0"},M:{"0":0.47273}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CD.js index 0954ed79f00eb8..d2846d1b6ed205 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CD.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CD.js @@ -1 +1 @@ -module.exports={C:{"29":0.00143,"30":0.00286,"33":0.00571,"35":0.00143,"43":0.00286,"45":0.00286,"47":0.00428,"49":0.00143,"52":0.00428,"56":0.00857,"59":0.00143,"68":0.00286,"72":0.01999,"78":0.01714,"80":0.00143,"88":0.00428,"89":0.00714,"90":0.00714,"91":0.01571,"93":0.00571,"94":0.00286,"95":0.01142,"96":0.33272,"97":0.49837,"98":0.00714,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 31 32 34 36 37 38 39 40 41 42 44 46 48 50 51 53 54 55 57 58 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 81 82 83 84 85 86 87 92 99 3.5 3.6"},D:{"11":0.00428,"18":0.00143,"25":0.0714,"26":0.00286,"28":0.00143,"33":0.00143,"34":0.00286,"38":0.00428,"42":0.01142,"43":0.00286,"47":0.00428,"49":0.00428,"55":0.00143,"62":0.00143,"63":0.00286,"64":0.00714,"65":0.00143,"68":0.00428,"69":0.00143,"70":0.00143,"71":0.00286,"72":0.00286,"74":0.01285,"76":0.01856,"77":0.00714,"78":0.00143,"79":0.01,"80":0.01,"81":0.0257,"83":0.00571,"84":0.01,"85":0.01,"86":0.2856,"87":0.02999,"88":0.0257,"89":0.01571,"90":0.00714,"91":0.01714,"92":0.02142,"93":0.0257,"94":0.02142,"95":0.01571,"96":0.0971,"97":1.32518,"98":3.04307,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 19 20 21 22 23 24 27 29 30 31 32 35 36 37 39 40 41 44 45 46 48 50 51 52 53 54 56 57 58 59 60 61 66 67 73 75 99 100 101"},F:{"15":0.00286,"18":0.00714,"34":0.00428,"36":0.00286,"42":0.00428,"66":0.00857,"67":0.00143,"74":0.00286,"78":0.00143,"79":0.01571,"80":0.00571,"81":0.00143,"82":0.1071,"83":0.58548,_:"9 11 12 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 68 69 70 71 72 73 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.04284,"13":0.00857,"14":0.0257,"15":0.02142,"16":0.01571,"17":0.13566,"18":0.06997,"84":0.01142,"85":0.01,"89":0.01285,"90":0.00571,"91":0.00143,"92":0.02713,"93":0.00571,"94":0.00143,"95":0.01856,"96":0.05284,"97":0.39698,"98":0.8668,_:"79 80 81 83 86 87 88"},E:{"4":0,"12":0.00571,"13":0.00571,"14":0.01428,"15":0.01285,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.00428,"11.1":0.01285,"12.1":0.02142,"13.1":0.02856,"14.1":0.08425,"15.1":0.02856,"15.2-15.3":0.03142},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00169,"5.0-5.1":0.00084,"6.0-6.1":0,"7.0-7.1":0.00844,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02616,"10.0-10.2":0.00084,"10.3":0.14934,"11.0-11.2":0.03375,"11.3-11.4":0.02869,"12.0-12.1":0.17212,"12.2-12.5":2.38858,"13.0-13.1":0.01941,"13.2":0.45477,"13.3":0.06159,"13.4-13.7":0.35943,"14.0-14.4":0.88338,"14.5-14.8":1.43855,"15.0-15.1":0.95088,"15.2-15.3":1.44783,"15.4":0.00759},P:{"4":0.29722,"5.0-5.4":0.02123,"6.2-6.4":0.04033,"7.2-7.4":0.13799,"8.2":0.01049,"9.2":0.05307,"10.1":2.25855,"11.1-11.2":0.04246,"12.0":0.18045,"13.0":0.03184,"14.0":0.10615,"15.0":0.12738,"16.0":0.38213},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00257,"4.2-4.3":0.02086,"4.4":0,"4.4.3-4.4.4":0.07085},A:{"11":0.15708,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.23999},Q:{"10.4":0.03428},O:{"0":0.6514},H:{"0":25.88516},L:{"0":52.08426},S:{"2.5":0.05143}}; +module.exports={C:{"8":0.00154,"43":0.00307,"47":0.00307,"49":0.00307,"52":0.00461,"56":0.00461,"65":0.00307,"68":0.00154,"69":0.00154,"72":0.01689,"78":0.01689,"91":0.01842,"95":0.00614,"96":0.00307,"97":0.00461,"98":0.01228,"99":0.05526,"100":0.13815,"101":0.76443,"102":0.03531,_:"2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 48 50 51 53 54 55 57 58 59 60 61 62 63 64 66 67 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 103 104 3.5 3.6"},D:{"11":0.00614,"21":0.00307,"33":0.00461,"37":0.00307,"42":0.00154,"43":0.00307,"48":0.00154,"49":0.00614,"51":0.00307,"56":0.00307,"57":0.00307,"61":0.00154,"63":0.00307,"64":0.00614,"66":0.00154,"68":0.00154,"69":0.00921,"70":0.00307,"72":0.00154,"73":0.00154,"74":0.00614,"76":0.00307,"77":0.00768,"78":0.00307,"79":0.02303,"80":0.01075,"81":0.00307,"83":0.00461,"84":0.00461,"85":0.00461,"86":0.02763,"87":0.00921,"88":0.01228,"89":0.00461,"90":0.00307,"91":0.01535,"92":0.03377,"93":0.01535,"94":0.01842,"95":0.01075,"96":0.01842,"97":0.03531,"98":0.03377,"99":0.03991,"100":0.10438,"101":0.37608,"102":3.55046,"103":0.29165,"104":0.00307,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 31 32 34 35 36 38 39 40 41 44 45 46 47 50 52 53 54 55 58 59 60 62 65 67 71 75 105 106"},F:{"12":0.00307,"18":0.01075,"36":0.00154,"40":0.00154,"42":0.00614,"64":0.00461,"65":0.00307,"68":0.00921,"70":0.00614,"78":0.00154,"79":0.01382,"82":0.00154,"83":0.00307,"84":0.00921,"85":0.01382,"86":0.07215,"87":0.36533,_:"9 11 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 66 67 69 71 72 73 74 75 76 77 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.05833,"13":0.02763,"14":0.01228,"15":0.02917,"16":0.00614,"17":0.01842,"18":0.06601,"83":0.00154,"84":0.01842,"85":0.01996,"88":0.01228,"89":0.00921,"90":0.00768,"91":0.00307,"92":0.02917,"94":0.00307,"95":0.00921,"96":0.00614,"97":0.00461,"98":0.01075,"99":0.01996,"100":0.02149,"101":0.26249,"102":0.75829,"103":0.10745,_:"79 80 81 86 87 93"},E:{"4":0,"8":0.00307,"13":0.01075,"14":0.01689,"15":0.00921,_:"0 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.00307,"11.1":0.00307,"12.1":0.00614,"13.1":0.01996,"14.1":0.04605,"15.1":0.00307,"15.2-15.3":0.00461,"15.4":0.02917,"15.5":0.07522},G:{"8":0.00134,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01543,"8.1-8.4":0.00134,"9.0-9.2":0,"9.3":0.03154,"10.0-10.2":0.00335,"10.3":0.08119,"11.0-11.2":0.05636,"11.3-11.4":0.0161,"12.0-12.1":0.0369,"12.2-12.5":1.2386,"13.0-13.1":0.01745,"13.2":0.02617,"13.3":0.27711,"13.4-13.7":0.21135,"14.0-14.4":0.66358,"14.5-14.8":0.70451,"15.0-15.1":0.74142,"15.2-15.3":0.77094,"15.4":0.77899,"15.5":1.01114,"16.0":0.01946},P:{"4":0.22884,"5.0-5.4":0.0305,"6.2-6.4":0.0305,"7.2-7.4":0.13522,"8.2":0.06207,"9.2":0.11442,"10.1":0.33554,"11.1-11.2":0.03121,"12.0":0.02034,"13.0":0.03121,"14.0":0.08322,"15.0":0.0208,"16.0":0.11442,"17.0":0.46809},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00335,"4.2-4.3":0.01944,"4.4":0,"4.4.3-4.4.4":0.07878},A:{"8":0.0017,"11":0.09501,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.00847},Q:{"10.4":0.03386},O:{"0":1.10892},H:{"0":26.80722},L:{"0":53.52875},S:{"2.5":0.05926},R:{_:"0"},M:{"0":0.08465}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CF.js index 90736d8df653d6..96d8cb3c031ab1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CF.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CF.js @@ -1 +1 @@ -module.exports={C:{"22":0.0018,"30":0.00719,"35":0.0018,"45":0.05034,"50":0.0018,"52":0.00719,"56":0.00719,"58":0.02158,"59":0.00719,"66":0.0018,"68":0.00539,"72":0.0018,"91":0.46928,"92":0.0018,"94":0.00899,"95":0.03416,"96":0.38297,"97":0.46748,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 31 32 33 34 36 37 38 39 40 41 42 43 44 46 47 48 49 51 53 54 55 57 60 61 62 63 64 65 67 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 93 98 99 3.5 3.6"},D:{"43":0.0018,"51":0.00719,"55":0.0018,"57":0.01259,"60":0.0018,"63":0.0018,"77":0.01438,"80":0.01259,"81":0.00539,"83":0.01618,"85":0.00719,"86":0.02697,"89":0.00539,"91":0.00539,"92":0.02877,"93":0.00539,"94":0.02158,"95":0.0018,"96":0.05754,"97":1.90588,"98":3.00446,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 52 53 54 56 58 59 61 62 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 84 87 88 90 99 100 101"},F:{"81":0.01618,"82":0.02697,"83":0.12586,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.08451},B:{"12":0.05754,"13":0.02697,"15":0.0018,"17":0.00539,"18":0.04675,"83":0.00539,"84":0.00899,"90":0.02337,"91":0.01259,"92":0.00539,"93":0.03596,"94":0.0018,"95":0.01259,"96":0.04315,"97":0.18879,"98":0.55918,_:"14 16 79 80 81 85 86 87 88 89"},E:{"4":0,"13":0.00539,_:"0 5 6 7 8 9 10 11 12 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.4","13.1":0.11148,"14.1":0.10608,"15.1":0.00899,"15.2-15.3":0.02697},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.0151,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04165,"10.0-10.2":0,"10.3":0.03483,"11.0-11.2":0.13493,"11.3-11.4":0.00341,"12.0-12.1":0.09328,"12.2-12.5":0.12129,"13.0-13.1":0.00511,"13.2":0,"13.3":0.00487,"13.4-13.7":0.04822,"14.0-14.4":0.34414,"14.5-14.8":0.26961,"15.0-15.1":0.6174,"15.2-15.3":0.70216,"15.4":0},P:{"4":0.04075,"5.0-5.4":0.02063,"6.2-6.4":0.03056,"7.2-7.4":0.05243,"8.2":0.01049,"9.2":0.05094,"10.1":1.21237,"11.1-11.2":0.02038,"12.0":0.03056,"13.0":0.20973,"14.0":0.03056,"15.0":0.0815,"16.0":1.74215},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00185,"4.2-4.3":0.00648,"4.4":0,"4.4.3-4.4.4":0.04908},A:{"11":0.14564,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.07382},Q:{"10.4":0},O:{"0":0.26246},H:{"0":8.73576},L:{"0":75.95695},S:{"2.5":0.13943}}; +module.exports={C:{"36":0.00561,"72":0.01121,"78":0.01121,"80":0.01121,"91":0.17098,"93":0.00561,"96":0.00561,"97":0.01962,"98":0.10091,"99":0.01121,"100":0.1822,"101":0.75961,"102":0.03083,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 81 82 83 84 85 86 87 88 89 90 92 94 95 103 104 3.5 3.6"},D:{"11":0.01962,"25":0.03644,"34":0.01682,"52":0.00841,"69":0.02242,"72":0.00561,"77":0.0028,"81":0.0028,"83":0.01121,"84":0.0028,"86":0.05045,"87":0.01682,"88":0.04205,"89":0.0028,"92":0.01402,"93":0.0028,"94":0.0028,"95":0.01121,"96":0.02523,"97":0.01121,"98":0.01962,"99":0.07288,"100":0.06447,"101":0.16257,"102":18.83896,"103":0.25227,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 73 74 75 76 78 79 80 85 90 91 104 105 106"},F:{"40":0.01962,"74":0.0028,"79":0.0028,"83":0.00841,"85":0.12333,"86":0.01962,"87":0.40083,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 80 81 82 84 9.5-9.6 10.5 10.6 11.5 11.6","10.0-10.1":0,"11.1":0.01402,"12.1":0.0028},B:{"12":0.01962,"13":0.00841,"14":0.01402,"15":0.01962,"16":0.0028,"17":0.05886,"18":0.03083,"84":0.01121,"88":0.01402,"89":0.00841,"90":0.01402,"92":0.03083,"96":0.00841,"97":0.02803,"98":0.0028,"99":0.03083,"100":0.02242,"101":0.30553,"102":1.00347,"103":0.34197,_:"79 80 81 83 85 86 87 91 93 94 95"},E:{"4":0,"13":0.00841,_:"0 5 6 7 8 9 10 11 12 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 13.1 14.1 16.0","12.1":0.01121,"15.1":0.00841,"15.2-15.3":0.00561,"15.4":0.01962,"15.5":0.04205},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00525,"10.0-10.2":0.00525,"10.3":0.02926,"11.0-11.2":0.004,"11.3-11.4":0.00275,"12.0-12.1":0.0065,"12.2-12.5":0.06402,"13.0-13.1":0.00125,"13.2":0,"13.3":0.00675,"13.4-13.7":0.02551,"14.0-14.4":0.42537,"14.5-14.8":0.1653,"15.0-15.1":0.48414,"15.2-15.3":0.22406,"15.4":0.48289,"15.5":0.55341,"16.0":0.012},P:{"4":0.05351,"5.0-5.4":0.0214,"6.2-6.4":0.03095,"7.2-7.4":0.03211,"8.2":0.06207,"9.2":0.09632,"10.1":0.0107,"11.1-11.2":0.0107,"12.0":0.02015,"13.0":0.04281,"14.0":0.16053,"15.0":0.0107,"16.0":0.21405,"17.0":0.16053},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00003,"4.2-4.3":0.00062,"4.4":0,"4.4.3-4.4.4":0.01374},A:{"11":0.05045,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.3527},H:{"0":7.67324},L:{"0":63.80454},S:{"2.5":0.03599},R:{_:"0"},M:{"0":0.02159}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CG.js index 5b728e1098a62c..436f43bdbbca32 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CG.js @@ -1 +1 @@ -module.exports={C:{"32":0.01813,"39":0.00725,"43":0.00363,"47":0.00725,"48":0.00725,"52":0.0145,"72":0.01088,"78":0.00725,"89":0.09425,"91":0.0725,"92":0.00363,"93":0.00363,"94":0.00363,"95":0.01813,"96":1.17813,"97":1.73275,"98":0.01088,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 38 40 41 42 44 45 46 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 90 99 3.5 3.6"},D:{"42":0.01813,"49":0.00725,"55":0.00363,"60":0.00363,"66":0.00363,"67":0.0145,"69":0.05438,"75":0.03988,"79":0.01813,"81":0.03625,"83":0.00363,"84":0.0145,"86":0.09425,"87":0.09425,"88":0.01088,"89":0.02175,"90":0.0145,"91":0.07975,"92":0.0145,"93":0.01088,"94":0.02175,"95":0.02175,"96":0.41325,"97":3.567,"98":8.76163,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 50 51 52 53 54 56 57 58 59 61 62 63 64 65 68 70 71 72 73 74 76 77 78 80 85 99 100 101"},F:{"36":0.00363,"79":0.01813,"82":0.19213,"83":2.001,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02175,"14":0.01813,"15":0.00363,"16":0.10875,"17":0.0145,"18":0.145,"84":0.01088,"89":0.03988,"90":0.00725,"92":0.0145,"94":0.01088,"95":0.00725,"96":0.03988,"97":0.90625,"98":3.07038,_:"13 79 80 81 83 85 86 87 88 91 93"},E:{"4":0,"15":0.00725,_:"0 5 6 7 8 9 10 11 12 13 14 3.1 3.2 5.1 6.1 11.1 12.1 15.4","7.1":0.01813,"9.1":0.00363,"10.1":0.00363,"13.1":0.1885,"14.1":0.03263,"15.1":0.02175,"15.2-15.3":0.05438},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.04029,"8.1-8.4":0.00413,"9.0-9.2":0,"9.3":0.0155,"10.0-10.2":0.00207,"10.3":0.16529,"11.0-11.2":0.11364,"11.3-11.4":0.03926,"12.0-12.1":0.00413,"12.2-12.5":3.97108,"13.0-13.1":0.0093,"13.2":0.00413,"13.3":0.01446,"13.4-13.7":0.76343,"14.0-14.4":0.54959,"14.5-14.8":0.88017,"15.0-15.1":0.59504,"15.2-15.3":3.14154,"15.4":0.01446},P:{"4":0.22481,"5.0-5.4":0.02123,"6.2-6.4":0.04033,"7.2-7.4":0.05353,"8.2":0.01049,"9.2":0.03212,"10.1":2.25855,"11.1-11.2":0.07494,"12.0":0.02141,"13.0":0.03212,"14.0":0.01071,"15.0":0.14987,"16.0":0.53526},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0.00044,"4.1":0.01403,"4.2-4.3":0.01564,"4.4":0,"4.4.3-4.4.4":0.11651},A:{"11":0.07613,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.06375},N:{_:"10 11"},R:{_:"0"},M:{"0":0.08288},Q:{"10.4":0.08925},O:{"0":0.68213},H:{"0":1.84081},L:{"0":57.93513},S:{"2.5":0.24225}}; +module.exports={C:{"35":0.00749,"52":0.01497,"66":0.00374,"88":0.00749,"89":0.00374,"91":0.01123,"97":0.00374,"98":0.00374,"99":0.01872,"100":0.20961,"101":2.93451,"102":0.09732,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 90 92 93 94 95 96 103 104 3.5 3.6"},D:{"11":0.00749,"42":0.01497,"43":0.01497,"58":0.01123,"63":0.00374,"65":0.00374,"67":0.00749,"69":0.0786,"74":0.00749,"75":0.0262,"79":0.06737,"80":0.01123,"81":0.0262,"83":0.00749,"84":0.00749,"86":0.0524,"87":0.00749,"88":0.00749,"89":0.02246,"90":0.01123,"91":0.02246,"92":0.02994,"93":0.00749,"94":0.00749,"95":0.01872,"96":0.04492,"97":0.20961,"98":0.09732,"99":0.06363,"100":0.13101,"101":0.67,"102":12.70374,"103":1.28011,"104":0.01497,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 44 45 46 47 48 49 50 51 52 53 54 55 56 57 59 60 61 62 64 66 68 70 71 72 73 76 77 78 85 105 106"},F:{"37":0.00374,"79":0.00749,"84":0.00374,"85":0.0524,"86":0.10106,"87":1.53089,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00374},B:{"12":0.04492,"13":0.00374,"14":0.01123,"16":0.0262,"17":0.15721,"18":0.1048,"84":0.01123,"89":0.00749,"90":0.00749,"92":0.02246,"97":0.00749,"98":0.00749,"99":0.04492,"100":0.01872,"101":0.71117,"102":3.54462,"103":0.75983,_:"15 79 80 81 83 85 86 87 88 91 93 94 95 96"},E:{"4":0,"14":0.00374,"15":0.01123,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 15.2-15.3 16.0","10.1":0.20961,"11.1":0.00374,"12.1":0.00374,"13.1":0.15346,"14.1":0.01497,"15.1":0.01123,"15.4":0.04492,"15.5":0.0524},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00175,"5.0-5.1":0.04024,"6.0-6.1":0,"7.0-7.1":0.19243,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.19505,"10.0-10.2":0.0105,"10.3":0.30964,"11.0-11.2":0.05073,"11.3-11.4":0.0035,"12.0-12.1":0.01837,"12.2-12.5":2.77624,"13.0-13.1":0.0035,"13.2":0.06997,"13.3":0.01662,"13.4-13.7":0.18018,"14.0-14.4":0.37261,"14.5-14.8":1.02075,"15.0-15.1":0.21692,"15.2-15.3":0.57379,"15.4":0.68663,"15.5":1.82196,"16.0":0.12333},P:{"4":0.36931,"5.0-5.4":0.0305,"6.2-6.4":0.0305,"7.2-7.4":0.306,"8.2":0.06207,"9.2":0.0211,"10.1":0.33554,"11.1-11.2":0.0211,"12.0":0.02034,"13.0":0.0211,"14.0":0.01055,"15.0":0.0211,"16.0":0.53814,"17.0":0.47483},I:{"0":0,"3":0,"4":0.00047,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00404,"4.2-4.3":0.01833,"4.4":0,"4.4.3-4.4.4":0.18364},A:{"11":0.07112,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.02503},O:{"0":0.56939},H:{"0":1.78304},L:{"0":55.83651},S:{"2.5":0.24402},R:{_:"0"},M:{"0":0.05631}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CH.js index 2c1098422ee485..39e0fd8eda17b5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CH.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CH.js @@ -1 +1 @@ -module.exports={C:{"24":0.01204,"48":0.01806,"50":0.01204,"52":0.04215,"55":0.00602,"57":0.01806,"60":0.01806,"66":0.01204,"68":0.01204,"78":0.16859,"79":0.00602,"80":0.00602,"81":0.00602,"84":0.02408,"85":0.03011,"86":0.00602,"87":0.00602,"88":0.07225,"89":0.01204,"90":0.02408,"91":0.39739,"92":0.01806,"93":0.00602,"94":0.51179,"95":0.09032,"96":2.36023,"97":3.73302,"98":0.01204,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 51 53 54 56 58 59 61 62 63 64 65 67 69 70 71 72 73 74 75 76 77 82 83 99 3.5 3.6"},D:{"38":0.01204,"49":0.04817,"52":0.1445,"60":0.03011,"63":0.00602,"64":0.01204,"65":0.02408,"66":0.04817,"67":0.02408,"68":0.02408,"69":0.00602,"70":0.01806,"71":0.00602,"72":0.03011,"73":0.01806,"74":0.01806,"75":0.01204,"76":0.01204,"77":0.01204,"78":0.03613,"79":0.12042,"80":0.07827,"81":0.03011,"83":0.04215,"84":0.09634,"85":0.07225,"86":0.06623,"87":0.18665,"88":0.05419,"89":0.06021,"90":0.04817,"91":0.09032,"92":0.07225,"93":0.22278,"94":0.10236,"95":0.1144,"96":1.01153,"97":7.16499,"98":15.7991,"99":0.01204,"100":0.01204,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 56 57 58 59 61 62 101"},F:{"77":0.01204,"82":0.30105,"83":0.95132,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01806,"16":0.01806,"18":0.03613,"84":0.04817,"85":0.01204,"86":0.01806,"88":0.01204,"89":0.01806,"90":0.01806,"91":0.03613,"92":0.03011,"93":0.01204,"94":0.04817,"95":0.06021,"96":0.20471,"97":3.25134,"98":10.4645,_:"12 13 14 17 79 80 81 83 87"},E:{"4":0,"10":0.03011,"11":0.00602,"12":0.01204,"13":0.13246,"14":0.572,"15":0.3733,_:"0 5 6 7 8 9 3.1 3.2 5.1 6.1 7.1","9.1":0.02408,"10.1":0.04215,"11.1":0.09032,"12.1":0.23482,"13.1":0.85498,"14.1":2.0351,"15.1":0.93928,"15.2-15.3":2.25185,"15.4":0.02408},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00638,"8.1-8.4":0.00425,"9.0-9.2":0.08075,"9.3":0.14451,"10.0-10.2":0.00213,"10.3":0.11688,"11.0-11.2":0.02125,"11.3-11.4":0.08713,"12.0-12.1":0.03188,"12.2-12.5":0.53977,"13.0-13.1":0.034,"13.2":0.01488,"13.3":0.07863,"13.4-13.7":0.34214,"14.0-14.4":1.03066,"14.5-14.8":4.27991,"15.0-15.1":3.211,"15.2-15.3":11.15667,"15.4":0.05313},P:{"4":0.0847,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 10.1 11.1-11.2","9.2":0.02117,"12.0":0.02117,"13.0":0.06352,"14.0":0.09528,"15.0":0.11646,"16.0":3.15492},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00519,"4.2-4.3":0.00519,"4.4":0,"4.4.3-4.4.4":0.03338},A:{"9":0.03011,"11":0.43953,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.5491},Q:{"10.4":0.00796},O:{"0":0.11141},H:{"0":0.22602},L:{"0":13.91426},S:{"2.5":0}}; +module.exports={C:{"2":0.01661,"3":0.05537,"24":0.01107,"48":0.01107,"50":0.01107,"52":0.0443,"54":0.01107,"55":0.02215,"57":0.00554,"60":0.00554,"66":0.01661,"68":0.00554,"71":0.00554,"78":0.13843,"79":0.01107,"80":0.01107,"81":0.00554,"84":0.00554,"85":0.01661,"87":0.01661,"88":0.03322,"89":0.01107,"90":0.01661,"91":0.27685,"92":0.00554,"94":0.43742,"95":0.02769,"96":0.01661,"97":0.01661,"98":0.03876,"99":0.06091,"100":0.66998,"101":5.55915,"102":0.09413,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 51 53 56 58 59 61 62 63 64 65 67 69 70 72 73 74 75 76 77 82 83 86 93 103 104","3.5":0.05537,"3.6":0.07198},D:{"38":0.01107,"49":0.03876,"52":0.13289,"60":0.03322,"62":0.00554,"63":0.00554,"65":0.03322,"66":0.05537,"67":0.01661,"68":0.01661,"72":0.01107,"74":0.01661,"77":0.01107,"78":0.02215,"79":0.13843,"80":0.0443,"81":0.01661,"83":0.05537,"84":0.12181,"85":0.08306,"86":0.08306,"87":0.16057,"88":0.01107,"89":0.03322,"90":0.02215,"91":0.04983,"92":0.06644,"93":0.02769,"94":0.02769,"95":0.03876,"96":0.33222,"97":0.06091,"98":0.09413,"99":0.23255,"100":0.55924,"101":2.20926,"102":19.82246,"103":1.23475,"104":0.00554,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 56 57 58 59 61 64 69 70 71 73 75 76 105 106"},F:{"46":0.00554,"71":0.00554,"85":0.02769,"86":0.44296,"87":0.7475,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01107,"16":0.01661,"18":0.04983,"85":0.01107,"86":0.01107,"89":0.01107,"90":0.01661,"91":0.01107,"92":0.01107,"93":0.00554,"95":0.00554,"96":0.01661,"97":0.03322,"98":0.03876,"99":0.0443,"100":0.14396,"101":1.47284,"102":6.76068,"103":0.99666,_:"12 13 14 17 79 80 81 83 84 87 88 94"},E:{"4":0,"10":0.01107,"12":0.01661,"13":0.07198,"14":0.37098,"15":0.13843,_:"0 5 6 7 8 9 11 3.1 3.2 5.1 6.1 7.1","9.1":0.01107,"10.1":0.02769,"11.1":0.06091,"12.1":0.21041,"13.1":0.65337,"14.1":1.10186,"15.1":0.21594,"15.2-15.3":0.26024,"15.4":1.44516,"15.5":3.88697,"16.0":0.00554},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00233,"7.0-7.1":0.01164,"8.1-8.4":0.00233,"9.0-9.2":0.21648,"9.3":0.11639,"10.0-10.2":0.00233,"10.3":0.09776,"11.0-11.2":0.01397,"11.3-11.4":0.09544,"12.0-12.1":0.02095,"12.2-12.5":0.46787,"13.0-13.1":0.01629,"13.2":0.01164,"13.3":0.04888,"13.4-13.7":0.21881,"14.0-14.4":0.61917,"14.5-14.8":2.06236,"15.0-15.1":0.60288,"15.2-15.3":1.26628,"15.4":3.54978,"15.5":13.72892,"16.0":0.03957},P:{"4":0.12681,"5.0-5.4":0.02079,"6.2-6.4":0.02039,"7.2-7.4":1.06644,"8.2":0.03086,"9.2":0.01057,"10.1":0.03086,"11.1-11.2":0.0104,"12.0":0.01057,"13.0":0.0634,"14.0":0.0634,"15.0":0.0317,"16.0":0.27475,"17.0":3.41319},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00233,"4.2-4.3":0.00407,"4.4":0,"4.4.3-4.4.4":0.02037},A:{"9":0.03369,"11":0.36497,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.04909},H:{"0":0.27464},L:{"0":16.7753},S:{"2.5":0},R:{_:"0"},M:{"0":0.62036}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CI.js index db8ee21245543f..132fcba9ab22db 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CI.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CI.js @@ -1 +1 @@ -module.exports={C:{"38":0.00303,"41":0.00606,"43":0.00303,"47":0.00606,"52":0.04239,"56":0.00303,"60":0.00908,"67":0.00303,"68":0.01211,"70":0.00908,"71":0.00303,"72":0.0212,"75":0.00303,"78":0.01514,"81":0.00303,"82":0.00303,"83":0.00303,"84":0.00606,"88":0.00303,"89":0.01211,"91":0.04542,"92":0.00303,"93":0.00908,"94":0.01514,"95":0.03331,"96":0.84178,"97":1.62301,"98":0.01817,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 44 45 46 48 49 50 51 53 54 55 57 58 59 61 62 63 64 65 66 69 73 74 76 77 79 80 85 86 87 90 99 3.5 3.6"},D:{"11":0.07267,"38":0.00606,"40":0.01514,"42":0.00303,"49":0.02422,"50":0.00303,"56":0.00303,"58":0.00303,"61":0.00303,"62":0.00303,"63":0.00908,"65":0.00606,"66":0.05148,"67":0.01211,"69":0.00908,"70":0.03331,"71":0.00606,"72":0.00908,"73":0.00908,"74":0.0757,"75":0.03028,"76":0.0212,"77":0.0212,"78":0.05753,"79":0.05148,"80":0.04542,"81":0.04239,"83":0.03028,"84":0.05148,"85":0.03634,"86":0.07267,"87":0.14534,"88":0.03634,"89":0.08781,"90":0.07873,"91":0.09387,"92":0.20893,"93":0.10901,"94":0.12112,"95":0.17865,"96":0.69947,"97":5.18091,"98":11.83342,"99":0.03634,"100":0.03331,"101":0.00606,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 41 43 44 45 46 47 48 51 52 53 54 55 57 59 60 64 68"},F:{"70":0.01514,"79":0.00303,"80":0.01211,"81":0.00908,"82":0.08478,"83":0.62074,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.06056,"13":0.00606,"14":0.00606,"15":0.00606,"17":0.00606,"18":0.03028,"84":0.00606,"85":0.00606,"89":0.01211,"90":0.00303,"92":0.01514,"93":0.00606,"94":0.00606,"95":0.01211,"96":0.02725,"97":0.44814,"98":1.53217,_:"16 79 80 81 83 86 87 88 91"},E:{"4":0,"13":0.00606,"14":0.06359,"15":0.02422,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.00606,"10.1":0.00303,"11.1":0.00908,"12.1":0.01211,"13.1":0.03634,"14.1":0.08781,"15.1":0.06056,"15.2-15.3":0.08781,"15.4":0.00303},G:{"8":0.00142,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00142,"6.0-6.1":0,"7.0-7.1":0.01705,"8.1-8.4":0,"9.0-9.2":0.00142,"9.3":0.15486,"10.0-10.2":0,"10.3":0.19322,"11.0-11.2":0.50295,"11.3-11.4":0.11224,"12.0-12.1":0.05825,"12.2-12.5":4.07049,"13.0-13.1":0.03268,"13.2":0.01279,"13.3":0.12361,"13.4-13.7":0.37224,"14.0-14.4":1.43923,"14.5-14.8":1.86688,"15.0-15.1":1.87115,"15.2-15.3":3.28765,"15.4":0.0824},P:{"4":0.14791,"5.0-5.4":0.01056,"6.2-6.4":0.01056,"7.2-7.4":0.16904,"8.2":0.01049,"9.2":0.09508,"10.1":0.02035,"11.1-11.2":0.10565,"12.0":0.02113,"13.0":0.04226,"14.0":0.1796,"15.0":0.16904,"16.0":0.77124},I:{"0":0,"3":0,"4":0.00338,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00725,"4.2-4.3":0.00145,"4.4":0,"4.4.3-4.4.4":0.03672},A:{"11":0.06056,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.01394},N:{_:"10 11"},R:{_:"0"},M:{"0":0.1255},Q:{"10.4":0.01394},O:{"0":0.2231},H:{"0":1.27392},L:{"0":55.51518},S:{"2.5":0.01394}}; +module.exports={C:{"43":0.00302,"47":0.00604,"52":0.03929,"72":0.00907,"78":0.00907,"84":0.00604,"89":0.02418,"90":0.00302,"91":0.06044,"93":0.00604,"94":0.00604,"95":0.00302,"96":0.00302,"97":0.00907,"98":0.00604,"99":0.03929,"100":0.27198,"101":1.95826,"102":0.06648,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 87 88 92 103 104 3.5 3.6"},D:{"26":0.00302,"27":0.01209,"33":0.00604,"38":0.00604,"40":0.00604,"43":0.00302,"49":0.0272,"53":0.00302,"56":0.00302,"63":0.00604,"64":0.00604,"65":0.00604,"66":0.00907,"67":0.01209,"68":0.00604,"69":0.01813,"70":0.01511,"71":0.00302,"72":0.00302,"73":0.00604,"74":0.0272,"75":0.01209,"76":0.03929,"77":0.0544,"78":0.0272,"79":0.08764,"80":0.04231,"81":0.06648,"83":0.01209,"84":0.02418,"85":0.01813,"86":0.0544,"87":0.39286,"88":0.02115,"89":0.03929,"90":0.03929,"91":0.04835,"92":0.06951,"93":0.04533,"94":0.04835,"95":0.06648,"96":0.09368,"97":0.0544,"98":0.10577,"99":0.11181,"100":0.33544,"101":0.97913,"102":13.5718,"103":1.24506,"104":0.02115,"105":0.01813,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 28 29 30 31 32 34 35 36 37 39 41 42 44 45 46 47 48 50 51 52 54 55 57 58 59 60 61 62 106"},F:{"79":0.00302,"81":0.00302,"82":0.08764,"85":0.01511,"86":0.03929,"87":0.66786,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01511,"13":0.00604,"14":0.00604,"15":0.00302,"16":0.00302,"17":0.00604,"18":0.03929,"84":0.00907,"85":0.00604,"89":0.00907,"90":0.00907,"92":0.02418,"96":0.00604,"97":0.01209,"98":0.02115,"99":0.00907,"100":0.02115,"101":0.29011,"102":1.62584,"103":0.30522,_:"79 80 81 83 86 87 88 91 93 94 95"},E:{"4":0,"13":0.00604,"14":0.03022,"15":0.00604,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.02115,"10.1":0.01209,"11.1":0.0967,"12.1":0.00604,"13.1":0.05742,"14.1":0.06951,"15.1":0.01511,"15.2-15.3":0.0272,"15.4":0.06951,"15.5":0.19643,"16.0":0.00302},G:{"8":0.00943,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01078,"8.1-8.4":0,"9.0-9.2":0.00135,"9.3":0.05256,"10.0-10.2":0.0027,"10.3":0.13478,"11.0-11.2":0.11861,"11.3-11.4":0.04178,"12.0-12.1":0.10378,"12.2-12.5":2.40447,"13.0-13.1":0.04178,"13.2":0.02156,"13.3":0.23182,"13.4-13.7":0.19274,"14.0-14.4":1.18202,"14.5-14.8":1.41249,"15.0-15.1":1.00007,"15.2-15.3":1.1618,"15.4":1.7454,"15.5":3.3668,"16.0":0.18195},P:{"4":0.16779,"5.0-5.4":0.0305,"6.2-6.4":0.02097,"7.2-7.4":0.19925,"8.2":0.06207,"9.2":0.06292,"10.1":0.33554,"11.1-11.2":0.12584,"12.0":0.02087,"13.0":0.03146,"14.0":0.11535,"15.0":0.06292,"16.0":0.30411,"17.0":0.76553},I:{"0":0,"3":0,"4":0.00147,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00147,"4.2-4.3":0.00098,"4.4":0,"4.4.3-4.4.4":0.06585},A:{"11":0.03324,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.01396},Q:{"10.4":0.01396},O:{"0":0.15352},H:{"0":1.45339},L:{"0":57.53361},S:{"2.5":0.00698},R:{_:"0"},M:{"0":0.52335}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CK.js index d4aee6475ac603..20610063986886 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CK.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CK.js @@ -1 +1 @@ -module.exports={C:{"65":0.11824,"78":0.02056,"84":0.00514,"89":0.02571,"94":0.00514,"96":1.48061,"97":1.2544,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 90 91 92 93 95 98 99 3.5 3.6"},D:{"49":1.63998,"77":0.02056,"79":3.69124,"81":0.01542,"86":0.00514,"89":0.05141,"92":0.27761,"94":0.06169,"95":0.30846,"96":0.21078,"97":6.40055,"98":30.59923,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 80 83 84 85 87 88 90 91 93 99 100 101"},F:{"82":0.00514,"83":0.22106,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00514,"18":0.09254,"85":0.01028,"94":0.60664,"95":0.00514,"97":0.42156,"98":1.52688,_:"12 13 15 16 17 79 80 81 83 84 86 87 88 89 90 91 92 93 96"},E:{"4":0,"13":0.04113,"14":0.37015,"15":0.02056,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.01028,"12.1":0.01028,"13.1":0.15423,"14.1":0.32388,"15.1":0.18508,"15.2-15.3":0.22106},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00176,"10.0-10.2":0,"10.3":0.03524,"11.0-11.2":0.00529,"11.3-11.4":0.00176,"12.0-12.1":0.01938,"12.2-12.5":0.53561,"13.0-13.1":0.04405,"13.2":0.01938,"13.3":0.08633,"13.4-13.7":0.30304,"14.0-14.4":1.52225,"14.5-14.8":3.65939,"15.0-15.1":3.64882,"15.2-15.3":7.70639,"15.4":0.02643},P:{"4":0.03052,"5.0-5.4":0.02123,"6.2-6.4":0.04033,"7.2-7.4":0.28489,"8.2":0.01049,"9.2":0.03212,"10.1":0.02035,"11.1-11.2":0.18314,"12.0":0.02141,"13.0":0.16279,"14.0":0.17297,"15.0":0.0814,"16.0":3.05236},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.05344},A:{"10":0.17479,"11":0.10796,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.14088},Q:{"10.4":0},O:{"0":0.08744},H:{"0":0.0138},L:{"0":26.72829},S:{"2.5":0}}; +module.exports={C:{"52":0.00397,"65":0.03569,"78":0.03965,"88":0.0119,"97":0.0119,"98":0.00793,"100":0.19429,"101":1.21726,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 99 102 103 104 3.5 3.6"},D:{"49":0.34496,"55":0.03965,"65":0.03172,"79":5.02366,"87":0.07137,"91":0.00793,"94":0.01983,"97":0.00793,"98":0.01586,"99":0.06344,"100":0.82869,"101":1.22915,"102":21.61322,"103":2.50588,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 85 86 88 89 90 92 93 95 96 104 105 106"},F:{"86":0.00793,"87":0.04362,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01586,"91":0.00397,"98":0.03569,"100":0.04362,"101":0.42426,"102":2.25212,"103":0.55114,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 92 93 94 95 96 97 99"},E:{"4":0,"13":0.05551,"14":0.17843,"15":0.01983,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.00397,"13.1":0.10706,"14.1":0.2379,"15.1":0.03172,"15.2-15.3":0.01983,"15.4":0.50356,"15.5":1.00711},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00221,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.00882,"11.0-11.2":0,"11.3-11.4":0.01985,"12.0-12.1":0.00882,"12.2-12.5":0.20729,"13.0-13.1":0.00882,"13.2":0,"13.3":0.01323,"13.4-13.7":0.22934,"14.0-14.4":1.0982,"14.5-14.8":2.29564,"15.0-15.1":0.94825,"15.2-15.3":1.40694,"15.4":3.41149,"15.5":12.38016,"16.0":0.00441},P:{"4":0.05055,"5.0-5.4":0.0305,"6.2-6.4":0.0305,"7.2-7.4":0.09098,"8.2":0.06207,"9.2":0.0211,"10.1":0.33554,"11.1-11.2":0.20219,"12.0":0.02034,"13.0":0.09098,"14.0":0.19208,"15.0":0.16175,"16.0":0.9705,"17.0":3.18445},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.01207},A:{"11":0.11102,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.48892},H:{"0":0.25144},L:{"0":32.67289},S:{"2.5":0},R:{_:"0"},M:{"0":0.28973}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CL.js index 6645e2495dd4e6..f707eda63499ae 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CL.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CL.js @@ -1 +1 @@ -module.exports={C:{"52":0.01973,"67":0.00395,"73":0.00395,"78":0.01973,"81":0.00395,"84":0.00789,"88":0.00395,"90":0.01184,"91":0.01578,"94":0.00789,"95":0.01973,"96":0.5168,"97":0.85212,"98":0.00789,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 74 75 76 77 79 80 82 83 85 86 87 89 92 93 99 3.5 3.6"},D:{"22":0.00395,"38":0.03551,"39":0.00395,"47":0.01184,"48":0.00789,"49":0.05523,"53":0.01184,"56":0.01184,"63":0.00395,"65":0.00395,"67":0.00789,"68":0.00789,"69":0.13019,"70":0.00395,"72":0.00789,"74":0.00789,"75":0.00789,"76":0.00789,"77":0.01578,"78":0.00789,"79":0.13808,"80":0.01578,"81":0.00789,"83":0.01973,"84":0.02762,"85":0.03156,"86":0.02762,"87":0.08679,"88":0.01184,"89":0.11046,"90":0.01973,"91":0.08679,"92":0.06707,"93":0.0789,"94":0.03945,"95":0.05523,"96":0.47735,"97":7.92156,"98":18.89655,"99":0.00789,"100":0.00789,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 50 51 52 54 55 57 58 59 60 61 62 64 66 71 73 101"},F:{"36":0.00789,"80":0.00395,"81":0.00789,"82":1.20717,"83":2.9627,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01184,"84":0.00395,"90":0.01184,"92":0.00789,"94":0.00395,"95":0.01578,"96":0.03156,"97":0.54441,"98":1.93305,_:"12 13 14 15 16 17 79 80 81 83 85 86 87 88 89 91 93"},E:{"4":0,"13":0.0434,"14":0.07101,"15":0.06707,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.00789,"12.1":0.01973,"13.1":0.1223,"14.1":0.33138,"15.1":0.14202,"15.2-15.3":0.29588},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00553,"6.0-6.1":0.00158,"7.0-7.1":0.00079,"8.1-8.4":0.00158,"9.0-9.2":0,"9.3":0.03869,"10.0-10.2":0.00079,"10.3":0.01816,"11.0-11.2":0.00474,"11.3-11.4":0.01184,"12.0-12.1":0.01184,"12.2-12.5":0.30242,"13.0-13.1":0.01184,"13.2":0.00553,"13.3":0.04027,"13.4-13.7":0.13344,"14.0-14.4":0.38611,"14.5-14.8":1.82081,"15.0-15.1":1.20256,"15.2-15.3":3.86587,"15.4":0.02527},P:{"4":0.1951,"5.0-5.4":0.0504,"6.2-6.4":0.04032,"7.2-7.4":0.07188,"8.2":0.01049,"9.2":0.03081,"10.1":0.04032,"11.1-11.2":0.12322,"12.0":0.02054,"13.0":0.11295,"14.0":0.16429,"15.0":0.11295,"16.0":1.3965},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00227,"4.2-4.3":0.00303,"4.4":0,"4.4.3-4.4.4":0.02498},A:{"8":0.01616,"9":0.00404,"10":0.00404,"11":0.1454,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.1756},Q:{"10.4":0},O:{"0":0.02422},H:{"0":0.18917},L:{"0":47.94809},S:{"2.5":0}}; +module.exports={C:{"52":0.01295,"67":0.00863,"73":0.00432,"78":0.02158,"81":0.00863,"88":0.00432,"89":0.00432,"90":0.01726,"91":0.02158,"95":0.00432,"97":0.00432,"99":0.02158,"100":0.1424,"101":1.26861,"102":0.05178,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 74 75 76 77 79 80 82 83 84 85 86 87 92 93 94 96 98 103 104 3.5 3.6"},D:{"18":0.00432,"38":0.02158,"47":0.00432,"49":0.05178,"51":0.00432,"53":0.00863,"56":0.02589,"63":0.00863,"65":0.00432,"67":0.01295,"68":0.00863,"69":0.09062,"70":0.01295,"72":0.00863,"74":0.01295,"75":0.00863,"76":0.01295,"77":0.00863,"78":0.00863,"79":0.10356,"80":0.01726,"81":0.01295,"83":0.02158,"84":0.03021,"85":0.03021,"86":0.02158,"87":0.18555,"88":0.01295,"89":0.03884,"90":0.02589,"91":0.0863,"92":0.03884,"93":0.01295,"94":0.02158,"95":0.02589,"96":0.07336,"97":0.0561,"98":0.06041,"99":0.21575,"100":0.34952,"101":1.56203,"102":25.17803,"103":2.40346,"104":0.00432,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 52 54 55 57 58 59 60 61 62 64 66 71 73 105 106"},F:{"82":0.00432,"85":0.02589,"86":1.90292,"87":2.09278,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00432,"18":0.02158,"84":0.00432,"87":0.00432,"92":0.00863,"97":0.00432,"98":0.00432,"99":0.01295,"100":0.01726,"101":0.30205,"102":2.16182,"103":0.43582,_:"13 14 15 16 17 79 80 81 83 85 86 88 89 90 91 93 94 95 96"},E:{"4":0,"13":0.01295,"14":0.06904,"15":0.03452,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.01726,"10.1":0.00432,"11.1":0.00863,"12.1":0.01726,"13.1":0.10788,"14.1":0.25027,"15.1":0.05178,"15.2-15.3":0.06473,"15.4":0.27616,"15.5":0.59547},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00403,"6.0-6.1":0.00242,"7.0-7.1":0.00161,"8.1-8.4":0,"9.0-9.2":0.00242,"9.3":0.03545,"10.0-10.2":0.00483,"10.3":0.01773,"11.0-11.2":0.01128,"11.3-11.4":0.01289,"12.0-12.1":0.01611,"12.2-12.5":0.253,"13.0-13.1":0.01047,"13.2":0.00725,"13.3":0.02417,"13.4-13.7":0.09105,"14.0-14.4":0.21593,"14.5-14.8":0.76302,"15.0-15.1":0.14986,"15.2-15.3":0.34243,"15.4":1.16587,"15.5":4.86976,"16.0":0.01853},P:{"4":0.09308,"5.0-5.4":0.02026,"6.2-6.4":0.03039,"7.2-7.4":0.06205,"8.2":0.06207,"9.2":0.01034,"10.1":0.02026,"11.1-11.2":0.08274,"12.0":0.01034,"13.0":0.05171,"14.0":0.10342,"15.0":0.04137,"16.0":0.1965,"17.0":1.46858},I:{"0":0,"3":0,"4":0.00291,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00388,"4.4":0,"4.4.3-4.4.4":0.03299},A:{"11":0.13377,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02274},H:{"0":0.18834},L:{"0":47.33428},S:{"2.5":0},R:{_:"0"},M:{"0":0.20462}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CM.js index f363752786c54e..1b26ddcd6572ab 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CM.js @@ -1 +1 @@ -module.exports={C:{"4":0.00705,"28":0.00235,"31":0.00235,"32":0.00235,"33":0.00235,"34":0.0047,"35":0.00235,"36":0.00235,"37":0.0047,"38":0.00705,"39":0.0047,"40":0.0094,"41":0.0047,"42":0.0047,"43":0.0094,"47":0.00705,"48":0.00235,"49":0.00235,"50":0.0094,"51":0.0094,"52":0.11515,"56":0.00705,"58":0.0047,"60":0.0047,"62":0.01175,"64":0.0047,"66":0.00705,"67":0.0047,"68":0.00235,"69":0.0047,"70":0.00235,"72":0.01645,"73":0.00235,"78":0.0235,"79":0.0047,"80":0.00235,"81":0.0047,"82":0.00235,"84":0.01175,"85":0.00235,"86":0.00235,"87":0.00235,"88":0.0094,"89":0.0141,"90":0.00705,"91":0.0376,"92":0.0047,"93":0.0047,"94":0.0235,"95":0.0564,"96":0.9353,"97":1.37005,"98":0.0282,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 44 45 46 53 54 55 57 59 61 63 65 71 74 75 76 77 83 99 3.5 3.6"},D:{"31":0.0047,"33":0.0047,"34":0.00235,"36":0.00235,"37":0.0047,"38":0.01175,"39":0.0047,"40":0.00705,"41":0.0047,"42":0.0094,"43":0.02585,"44":0.02585,"45":0.01175,"46":0.0047,"47":0.00235,"49":0.0141,"50":0.00235,"53":0.0329,"55":0.00235,"56":0.0564,"57":0.0047,"58":0.00705,"61":0.0047,"63":0.00705,"64":0.00235,"65":0.0047,"66":0.00235,"68":0.0611,"69":0.00705,"70":0.0094,"71":0.00235,"74":0.00705,"75":0.01645,"76":0.02585,"77":0.00705,"78":0.0047,"79":0.03995,"80":0.0141,"81":0.01645,"83":0.03995,"84":0.00705,"85":0.0094,"86":0.0846,"87":0.0423,"88":0.0376,"89":0.0282,"90":0.0705,"91":0.0658,"92":0.04465,"93":0.05405,"94":0.0376,"95":0.06815,"96":0.4183,"97":2.9845,"98":5.8186,"99":0.0047,"100":0.01175,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 35 48 51 52 54 59 60 62 67 72 73 101"},F:{"38":0.0047,"42":0.00235,"44":0.00235,"67":0.00705,"79":0.0141,"80":0.00235,"82":0.1269,"83":0.79665,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 43 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.03055,"13":0.0141,"14":0.0329,"15":0.02115,"16":0.0141,"17":0.0141,"18":0.0517,"81":0.00235,"84":0.0329,"85":0.0141,"88":0.0141,"89":0.02115,"90":0.0141,"91":0.0047,"92":0.02115,"93":0.0094,"94":0.0047,"95":0.0188,"96":0.0376,"97":0.3713,"98":0.83425,_:"79 80 83 86 87"},E:{"4":0,"8":0.0047,"10":0.0094,"13":0.00705,"14":0.03055,"15":0.0047,_:"0 5 6 7 9 11 12 3.1 3.2 6.1 9.1 10.1 12.1 15.4","5.1":0.00705,"7.1":0.00705,"11.1":0.00705,"13.1":0.01175,"14.1":0.03055,"15.1":0.01645,"15.2-15.3":0.03055},G:{"8":0.00158,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00079,"6.0-6.1":0.00317,"7.0-7.1":0.01109,"8.1-8.4":0.01426,"9.0-9.2":0.00079,"9.3":0.03564,"10.0-10.2":0.01663,"10.3":0.07763,"11.0-11.2":0.25822,"11.3-11.4":0.04594,"12.0-12.1":0.39288,"12.2-12.5":1.9636,"13.0-13.1":0.07446,"13.2":0.05069,"13.3":0.19802,"13.4-13.7":0.49664,"14.0-14.4":1.39646,"14.5-14.8":1.21903,"15.0-15.1":0.91803,"15.2-15.3":0.73744,"15.4":0.00475},P:{"4":0.42401,"5.0-5.4":0.03103,"6.2-6.4":0.01048,"7.2-7.4":0.09308,"8.2":0.01077,"9.2":0.08273,"10.1":0.06074,"11.1-11.2":0.06205,"12.0":0.01034,"13.0":0.07239,"14.0":0.14478,"15.0":0.18615,"16.0":0.56879},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00163,"4.2-4.3":0.00476,"4.4":0,"4.4.3-4.4.4":0.04716},A:{"8":0.00961,"9":0.0024,"10":0.00721,"11":0.30744,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.0153},N:{_:"10 11"},R:{_:"0"},M:{"0":0.8262},Q:{"10.4":0.00765},O:{"0":0.80325},H:{"0":3.75163},L:{"0":67.96},S:{"2.5":0.0459}}; +module.exports={C:{"34":0.00529,"38":0.00529,"43":0.00529,"47":0.00529,"48":0.00265,"49":0.00265,"50":0.00529,"51":0.00794,"52":0.15347,"56":0.00529,"57":0.00265,"58":0.00529,"59":0.00265,"60":0.00265,"62":0.01058,"66":0.01058,"68":0.00265,"69":0.00265,"70":0.01058,"72":0.03175,"78":0.01323,"79":0.00265,"81":0.00265,"83":0.00265,"84":0.00794,"88":0.00794,"89":0.00529,"90":0.00529,"91":0.07144,"93":0.00794,"94":0.01323,"95":0.00529,"96":0.02911,"97":0.01852,"98":0.01058,"99":0.0688,"100":0.299,"101":1.83103,"102":0.11642,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 44 45 46 53 54 55 61 63 64 65 67 71 73 74 75 76 77 80 82 85 86 87 92 103 104 3.5 3.6"},D:{"29":0.00794,"31":0.00265,"38":0.00794,"39":0.00265,"49":0.01588,"50":0.00265,"55":0.00529,"56":0.04763,"57":0.01058,"58":0.00794,"63":0.01058,"64":0.00529,"65":0.00529,"67":0.00794,"68":0.03704,"69":0.00794,"70":0.01058,"72":0.00794,"73":0.00529,"74":0.00794,"75":0.01058,"76":0.01058,"77":0.00794,"78":0.00794,"79":0.11642,"80":0.02646,"81":0.04763,"83":0.01588,"84":0.01588,"85":0.10584,"86":0.02381,"87":0.04234,"88":0.02381,"89":0.0344,"90":0.01852,"91":0.02911,"92":0.02646,"93":0.02911,"94":0.03704,"95":0.04498,"96":0.05292,"97":0.08467,"98":0.16141,"99":0.08203,"100":0.24343,"101":0.75676,"102":8.17879,"103":0.83614,"104":0.01852,"105":0.00265,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 32 33 34 35 36 37 40 41 42 43 44 45 46 47 48 51 52 53 54 59 60 61 62 66 71 106"},F:{"36":0.00529,"47":0.00529,"67":0.00529,"76":0.00265,"79":0.00794,"82":0.00265,"84":0.01588,"85":0.02381,"86":0.21168,"87":0.55566,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 77 78 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.04498,"13":0.01852,"14":0.0344,"15":0.01323,"16":0.01588,"17":0.02381,"18":0.0688,"84":0.01323,"85":0.00794,"86":0.00529,"89":0.01058,"90":0.01058,"91":0.00529,"92":0.02911,"93":0.00529,"95":0.00529,"96":0.00529,"97":0.00794,"98":0.01323,"99":0.01588,"100":0.0635,"101":0.25137,"102":0.94462,"103":0.18257,_:"79 80 81 83 87 88 94"},E:{"4":0,"10":0.01058,"13":0.01058,"14":0.01852,"15":0.00265,_:"0 5 6 7 8 9 11 12 3.1 3.2 5.1 6.1 7.1 9.1 12.1 16.0","10.1":0.00265,"11.1":0.00529,"13.1":0.02646,"14.1":0.02911,"15.1":0.05557,"15.2-15.3":0.02381,"15.4":0.0344,"15.5":0.03704},G:{"8":0.00295,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00074,"6.0-6.1":0,"7.0-7.1":0.00589,"8.1-8.4":0.00074,"9.0-9.2":0,"9.3":0.02947,"10.0-10.2":0.03021,"10.3":0.18346,"11.0-11.2":0.2402,"11.3-11.4":0.02947,"12.0-12.1":0.14368,"12.2-12.5":1.22382,"13.0-13.1":0.04421,"13.2":0.05231,"13.3":0.21809,"13.4-13.7":0.43618,"14.0-14.4":0.99615,"14.5-14.8":0.99984,"15.0-15.1":0.70364,"15.2-15.3":0.5747,"15.4":0.67122,"15.5":0.76332,"16.0":0.01105},P:{"4":0.272,"5.0-5.4":0.05037,"6.2-6.4":0.01007,"7.2-7.4":0.11081,"8.2":0.06207,"9.2":0.06044,"10.1":0.02112,"11.1-11.2":0.05037,"12.0":0.02015,"13.0":0.0403,"14.0":0.10074,"15.0":0.05037,"16.0":0.21155,"17.0":0.49362},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00118,"4.2-4.3":0.00355,"4.4":0,"4.4.3-4.4.4":0.0394},A:{"8":0.00529,"9":0.00529,"10":0.00265,"11":0.4948,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.02206},Q:{"10.4":0},O:{"0":0.77952},H:{"0":3.64128},L:{"0":67.80192},S:{"2.5":0.03677},R:{_:"0"},M:{"0":0.52949}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CN.js index 98f224a86efbb4..f526a573095c29 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CN.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CN.js @@ -1 +1 @@ -module.exports={C:{"4":0.00328,"36":0.03609,"43":1.34521,"52":0.02625,"53":0.00328,"54":0.00328,"55":0.00328,"56":0.00656,"57":0.00656,"59":0.00328,"63":0.01312,"68":0.00328,"72":0.00984,"75":0.05578,"78":0.01641,"80":0.00656,"81":0.00656,"82":0.00984,"83":0.00656,"84":0.00656,"86":0.00328,"87":0.00984,"88":0.00328,"89":0.01312,"90":0.01641,"91":0.01969,"92":0.00328,"93":0.00328,"94":0.01641,"95":0.02625,"96":0.34122,"97":0.52496,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 44 45 46 47 48 49 50 51 58 60 61 62 64 65 66 67 69 70 71 73 74 76 77 79 85 98 99 3.5 3.6"},D:{"11":0.00984,"17":0.00656,"31":0.00656,"39":0.00984,"40":0.00984,"41":0.00984,"42":0.00984,"43":0.00984,"44":0.00656,"45":0.01641,"46":0.00656,"47":0.01969,"48":0.08859,"49":0.09187,"50":0.00984,"51":0.00656,"52":0.00656,"53":0.01969,"54":0.01969,"55":0.05578,"56":0.01641,"57":0.11155,"58":0.01641,"59":0.01641,"60":0.00656,"61":0.00656,"62":0.13452,"63":0.04593,"64":0.00656,"65":0.04593,"66":0.00656,"67":0.02297,"68":0.01969,"69":1.02367,"70":0.60699,"71":0.01969,"72":0.58402,"73":0.04265,"74":0.32482,"75":0.29201,"76":0.01969,"77":0.01312,"78":0.23623,"79":0.22967,"80":0.11812,"81":0.08203,"83":0.21327,"84":0.18374,"85":0.10499,"86":0.26576,"87":0.14436,"88":0.10171,"89":0.03609,"90":0.0525,"91":0.06562,"92":0.34779,"93":0.03609,"94":0.11155,"95":0.19686,"96":0.60699,"97":1.68643,"98":2.63792,"100":0.00984,_:"4 5 6 7 8 9 10 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 99 101"},F:{"48":0.00328,"82":0.00656,"83":0.05906,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.00656,"14":0.00656,"16":0.01312,"17":0.02297,"18":0.11484,"83":0.00328,"84":0.00328,"85":0.00656,"86":0.00984,"87":0.00656,"89":0.01641,"90":0.00328,"92":0.01969,"93":0.00984,"94":0.00984,"95":0.01641,"96":0.05906,"97":0.7776,"98":3.23507,_:"12 15 79 80 81 88 91"},E:{"4":0,"9":0.00984,"10":0.00328,"11":0.00656,"12":0.00656,"13":0.03281,"14":0.10827,"15":0.04265,_:"0 5 6 7 8 3.1 3.2 5.1 6.1 7.1","9.1":0.00328,"10.1":0.00656,"11.1":0.01312,"12.1":0.02297,"13.1":0.13124,"14.1":0.18702,"15.1":0.09187,"15.2-15.3":0.20342,"15.4":0.00656},G:{"8":0.00097,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.05456,"5.0-5.1":0.01754,"6.0-6.1":0.03313,"7.0-7.1":0.01072,"8.1-8.4":0.01754,"9.0-9.2":0.08184,"9.3":0.04774,"10.0-10.2":0.39654,"10.3":0.15102,"11.0-11.2":0.7015,"11.3-11.4":0.07794,"12.0-12.1":0.10815,"12.2-12.5":0.37121,"13.0-13.1":0.04384,"13.2":0.02533,"13.3":0.13348,"13.4-13.7":0.80478,"14.0-14.4":1.15358,"14.5-14.8":1.3991,"15.0-15.1":1.14286,"15.2-15.3":2.92486,"15.4":0.04287},P:{_:"4 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0","14.0":0.01137,"15.0":0.02274,"16.0":0.40928},I:{"0":0,"3":0,"4":0.11157,"2.1":0,"2.2":0,"2.3":0,"4.1":0.04057,"4.2-4.3":0.071,"4.4":0,"4.4.3-4.4.4":0.29414},A:{"6":0.08023,"8":0.48139,"9":0.48139,"10":0.16046,"11":8.70514,_:"7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.1881},Q:{"10.4":5.74389},O:{"0":11.73635},H:{"0":0.12084},L:{"0":38.69867},S:{"2.5":0}}; +module.exports={C:{"4":0.01166,"36":0.04664,"43":0.7463,"52":0.02721,"54":0.00389,"55":0.00389,"56":0.00777,"57":0.01944,"58":0.00389,"59":0.00389,"63":0.01555,"68":0.00389,"72":0.00777,"78":0.02332,"81":0.00389,"82":0.01166,"83":0.00777,"84":0.00389,"87":0.00777,"88":0.01555,"89":0.01555,"90":0.01944,"91":0.01944,"94":0.00389,"95":0.00389,"96":0.00777,"97":0.04276,"98":0.01166,"99":0.02332,"100":0.13993,"101":0.91733,"102":0.00777,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 44 45 46 47 48 49 50 51 53 60 61 62 64 65 66 67 69 70 71 73 74 75 76 77 79 80 85 86 92 93 103 104 3.5","3.6":0.00777},D:{"11":0.01166,"17":0.00389,"31":0.00777,"39":0.01166,"40":0.01166,"41":0.01166,"42":0.00777,"43":0.01166,"44":0.00777,"45":0.02332,"46":0.00777,"47":0.03887,"48":0.12827,"49":0.09718,"50":0.01166,"51":0.01166,"52":0.00777,"53":0.02721,"54":0.01944,"55":0.06219,"56":0.01944,"57":0.09718,"58":0.02721,"59":0.01944,"60":0.01555,"61":0.00777,"62":0.11272,"63":0.04664,"64":0.00389,"65":0.03498,"66":0.00389,"67":0.01944,"68":0.01944,"69":1.11557,"70":0.52475,"71":0.02332,"72":0.7191,"73":0.05053,"74":0.24099,"75":0.28764,"76":0.01944,"77":0.04276,"78":0.40814,"79":0.28375,"80":0.12827,"81":0.12827,"83":0.23322,"84":0.0894,"85":0.06608,"86":0.40425,"87":0.12827,"88":0.0311,"89":0.28375,"90":0.08163,"91":0.05053,"92":0.45478,"93":0.02721,"94":0.07774,"95":0.14382,"96":0.34206,"97":0.36538,"98":0.29541,"99":0.23322,"100":0.38481,"101":0.69189,"102":4.04637,"103":0.30707,"104":0.01555,_:"4 5 6 7 8 9 10 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 105 106"},F:{"86":0.00389,"87":0.04276,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00389,"16":0.01166,"17":0.01944,"18":0.10106,"84":0.00389,"85":0.00389,"86":0.00389,"87":0.00389,"89":0.01555,"92":0.01555,"94":0.00389,"95":0.00389,"96":0.01166,"97":0.01555,"98":0.0311,"99":0.04276,"100":0.05442,"101":0.63358,"102":4.14743,"103":0.72687,_:"12 13 15 79 80 81 83 88 90 91 93"},E:{"4":0,"9":0.01555,"12":0.00389,"13":0.03887,"14":0.10495,"15":0.02721,_:"0 5 6 7 8 10 11 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.00389,"11.1":0.01166,"12.1":0.01944,"13.1":0.1205,"14.1":0.14382,"15.1":0.04664,"15.2-15.3":0.04276,"15.4":0.21767,"15.5":0.48199,"16.0":0.00777},G:{"8":0,"3.2":0,"4.0-4.1":0.00107,"4.2-4.3":0.04923,"5.0-5.1":0.01605,"6.0-6.1":0.02997,"7.0-7.1":0.00856,"8.1-8.4":0.01498,"9.0-9.2":0.137,"9.3":0.04495,"10.0-10.2":0.0289,"10.3":0.12951,"11.0-11.2":0.39387,"11.3-11.4":0.06529,"12.0-12.1":0.13165,"12.2-12.5":0.3532,"13.0-13.1":0.04816,"13.2":0.03104,"13.3":0.12094,"13.4-13.7":0.75777,"14.0-14.4":1.05317,"14.5-14.8":1.08421,"15.0-15.1":0.64218,"15.2-15.3":0.8145,"15.4":1.69214,"15.5":3.00004,"16.0":0.03104},P:{_:"4 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 15.0","14.0":0.09156,"16.0":0.04578,"17.0":0.4006},I:{"0":0,"3":0,"4":0.11432,"2.1":0,"2.2":0,"2.3":0,"4.1":0.02638,"4.2-4.3":0.05276,"4.4":0,"4.4.3-4.4.4":0.30779},A:{"6":0.25718,"7":0.05144,"8":0.77154,"9":0.82298,"10":0.20574,"11":9.15564,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":5.82569},O:{"0":10.69164},H:{"0":0.11575},L:{"0":32.75779},S:{"2.5":0},R:{_:"0"},M:{"0":0.22618}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CO.js index 71cbc202be831e..45ed99bb7e606c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CO.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CO.js @@ -1 +1 @@ -module.exports={C:{"50":0.00817,"52":0.01226,"78":0.01635,"84":0.00409,"88":0.01226,"89":0.00409,"90":0.02044,"91":0.02452,"93":0.00409,"94":0.00817,"95":0.02044,"96":0.39235,"97":0.64983,"98":0.00817,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 92 99 3.5 3.6"},D:{"22":0.00409,"26":0.00409,"38":0.01635,"39":0.00409,"47":0.00817,"49":0.0327,"53":0.00409,"58":0.00817,"62":0.00817,"63":0.00409,"65":0.00817,"67":0.00817,"68":0.00409,"69":0.01226,"70":0.00817,"71":0.00817,"72":0.00817,"73":0.00409,"74":0.00817,"75":0.00817,"76":0.01635,"77":0.00817,"78":0.00817,"79":0.11852,"80":0.02452,"81":0.02044,"83":0.02861,"84":0.02861,"85":0.02044,"86":0.04496,"87":0.13487,"88":0.03678,"89":0.04904,"90":0.02861,"91":0.1267,"92":0.08583,"93":0.11852,"94":0.06131,"95":0.07765,"96":0.47818,"97":8.56635,"98":21.62023,"99":0.00817,"100":0.01226,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 48 50 51 52 54 55 56 57 59 60 61 64 66 101"},F:{"81":0.00409,"82":0.47818,"83":1.21384,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01226,"84":0.00409,"89":0.00409,"92":0.01226,"94":0.00817,"95":0.01226,"96":0.02452,"97":0.42914,"98":1.68384,_:"12 13 14 15 16 17 79 80 81 83 85 86 87 88 90 91 93"},E:{"4":0,"13":0.02044,"14":0.08583,"15":0.06131,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.00409,"11.1":0.00817,"12.1":0.02044,"13.1":0.094,"14.1":0.22887,"15.1":0.13078,"15.2-15.3":0.24522},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00226,"6.0-6.1":0.00226,"7.0-7.1":0.00767,"8.1-8.4":0.0009,"9.0-9.2":0,"9.3":0.04062,"10.0-10.2":0.00045,"10.3":0.02392,"11.0-11.2":0.00271,"11.3-11.4":0.00812,"12.0-12.1":0.00451,"12.2-12.5":0.24373,"13.0-13.1":0.00587,"13.2":0.00181,"13.3":0.01896,"13.4-13.7":0.0677,"14.0-14.4":0.18686,"14.5-14.8":0.82959,"15.0-15.1":0.6987,"15.2-15.3":2.35382,"15.4":0.01038},P:{"4":0.1819,"5.0-5.4":0.0504,"6.2-6.4":0.0107,"7.2-7.4":0.0749,"8.2":0.01049,"9.2":0.03081,"10.1":0.04032,"11.1-11.2":0.0321,"12.0":0.02054,"13.0":0.0428,"14.0":0.0642,"15.0":0.0535,"16.0":0.83462},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00271,"4.2-4.3":0.00721,"4.4":0,"4.4.3-4.4.4":0.04329},A:{"11":0.11852,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.14189},Q:{"10.4":0},O:{"0":0.02365},H:{"0":0.11194},L:{"0":42.60527},S:{"2.5":0}}; +module.exports={C:{"50":0.00868,"52":0.01301,"73":0.00434,"78":0.01301,"83":0.00434,"88":0.00868,"89":0.00434,"90":0.01735,"91":0.03037,"95":0.00434,"97":0.00434,"98":0.00868,"99":0.02169,"100":0.10845,"101":0.96737,"102":0.05206,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 84 85 86 87 92 93 94 96 103 104 3.5 3.6"},D:{"22":0.00868,"26":0.00434,"34":0.00434,"38":0.01735,"47":0.00868,"49":0.03904,"63":0.00434,"65":0.00434,"67":0.00434,"68":0.00868,"69":0.0911,"70":0.00868,"71":0.00868,"72":0.00868,"73":0.00868,"74":0.00868,"75":0.00868,"76":0.01735,"77":0.00434,"78":0.01301,"79":0.15617,"80":0.02169,"81":0.01735,"83":0.02169,"84":0.03037,"85":0.02603,"86":0.04338,"87":0.07808,"88":0.0347,"89":0.0347,"90":0.02603,"91":0.07808,"92":0.06507,"93":0.02169,"94":0.02603,"95":0.05206,"96":0.09977,"97":0.11713,"98":0.15183,"99":0.17786,"100":0.30366,"101":1.55734,"102":27.27301,"103":2.54641,"104":0.01735,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 66 105 106"},F:{"82":0.01735,"85":0.0347,"86":0.81554,"87":1.06715,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01301,"92":0.00868,"97":0.00434,"98":0.00868,"99":0.01301,"100":0.01301,"101":0.27329,"102":1.90438,"103":0.3427,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96"},E:{"4":0,"13":0.01301,"14":0.05639,"15":0.02169,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 16.0","9.1":0.00434,"11.1":0.01301,"12.1":0.01301,"13.1":0.07375,"14.1":0.15183,"15.1":0.05206,"15.2-15.3":0.03904,"15.4":0.17786,"15.5":0.43814},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00172,"6.0-6.1":0.00057,"7.0-7.1":0.00974,"8.1-8.4":0.00057,"9.0-9.2":0,"9.3":0.03608,"10.0-10.2":0.00057,"10.3":0.02405,"11.0-11.2":0.00344,"11.3-11.4":0.00515,"12.0-12.1":0.00401,"12.2-12.5":0.24341,"13.0-13.1":0.00344,"13.2":0.00229,"13.3":0.01375,"13.4-13.7":0.04525,"14.0-14.4":0.15807,"14.5-14.8":0.45303,"15.0-15.1":0.11512,"15.2-15.3":0.23081,"15.4":0.84822,"15.5":3.49482,"16.0":0.01317},P:{"4":0.14423,"5.0-5.4":0.02026,"6.2-6.4":0.03039,"7.2-7.4":0.08242,"8.2":0.06207,"9.2":0.01034,"10.1":0.02026,"11.1-11.2":0.03091,"12.0":0.01034,"13.0":0.04121,"14.0":0.05151,"15.0":0.03091,"16.0":0.12363,"17.0":0.86539},I:{"0":0,"3":0,"4":0.00198,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00198,"4.2-4.3":0.0089,"4.4":0,"4.4.3-4.4.4":0.04943},A:{"11":0.06941,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.03397},H:{"0":0.13401},L:{"0":50.62893},S:{"2.5":0},R:{_:"0"},M:{"0":0.14721}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CR.js index e0f4e2ef327a84..2b179a14a1a77e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CR.js @@ -1 +1 @@ -module.exports={C:{"52":0.01258,"73":0.04612,"78":0.02516,"82":0.00419,"83":0.02935,"88":0.20126,"89":0.00419,"90":0.03774,"91":0.04193,"94":0.00839,"95":0.02516,"96":0.85957,"97":1.39208,"98":0.01677,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 84 85 86 87 92 93 99 3.5 3.6"},D:{"38":0.00419,"47":0.00839,"49":0.02097,"52":0.00839,"63":0.00419,"65":0.02097,"67":0.05451,"68":0.00839,"69":0.00839,"73":0.00839,"75":0.00839,"77":0.01258,"78":0.00839,"79":0.03774,"80":0.01258,"81":0.02097,"83":0.01677,"84":0.00839,"85":0.00839,"86":0.05451,"87":0.06709,"88":0.01677,"89":0.02516,"90":0.01677,"91":0.0629,"92":0.0629,"93":0.85957,"94":0.03774,"95":0.10063,"96":0.77571,"97":7.32098,"98":18.84754,"99":0.01258,"100":0.00419,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 53 54 55 56 57 58 59 60 61 62 64 66 70 71 72 74 76 101"},F:{"36":0.00419,"72":0.00839,"82":0.47381,"83":1.03148,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.02097,"18":0.00839,"84":0.00419,"89":0.00839,"91":0.00419,"92":0.01258,"94":0.00839,"95":0.02097,"96":0.02935,"97":0.80506,"98":2.74642,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 90 93"},E:{"4":0,"13":0.05451,"14":0.18869,"15":0.1216,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.00419,"10.1":0.00419,"11.1":0.03774,"12.1":0.03354,"13.1":0.239,"14.1":0.67088,"15.1":0.52832,"15.2-15.3":0.68765,"15.4":0.01677},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00612,"6.0-6.1":0,"7.0-7.1":0.01427,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.052,"10.0-10.2":0,"10.3":0.03772,"11.0-11.2":0.00408,"11.3-11.4":0.01427,"12.0-12.1":0.00918,"12.2-12.5":0.3385,"13.0-13.1":0.0051,"13.2":0.00306,"13.3":0.05506,"13.4-13.7":0.09074,"14.0-14.4":0.39355,"14.5-14.8":1.71695,"15.0-15.1":1.54158,"15.2-15.3":5.86046,"15.4":0.0469},P:{"4":0.14404,"5.0-5.4":0.02123,"6.2-6.4":0.04033,"7.2-7.4":0.11318,"8.2":0.01049,"9.2":0.01029,"10.1":0.02035,"11.1-11.2":0.07202,"12.0":0.02058,"13.0":0.11318,"14.0":0.11318,"15.0":0.13376,"16.0":2.30471},I:{"0":0,"3":0,"4":0.00849,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00243,"4.2-4.3":0.00728,"4.4":0,"4.4.3-4.4.4":0.06309},A:{"11":0.14676,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.31933},Q:{"10.4":0},O:{"0":0.05806},H:{"0":0.21437},L:{"0":40.84578},S:{"2.5":0}}; +module.exports={C:{"52":0.00863,"56":0.00863,"72":0.00431,"73":0.05177,"78":0.02157,"88":0.4012,"90":0.03451,"91":0.0302,"98":0.00431,"99":0.01294,"100":0.2459,"101":1.83345,"102":0.07334,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 74 75 76 77 79 80 81 82 83 84 85 86 87 89 92 93 94 95 96 97 103 104 3.5 3.6"},D:{"38":0.00863,"43":0.00863,"47":0.00863,"49":0.02157,"63":0.00431,"65":0.00863,"67":0.00863,"68":0.00863,"73":0.00431,"75":0.00431,"77":0.00863,"78":0.01294,"79":0.0302,"80":0.01726,"81":0.02157,"83":0.01294,"84":0.02588,"85":0.01726,"86":0.04745,"87":0.03883,"88":0.00863,"89":0.02157,"90":0.01294,"91":0.02588,"92":0.05608,"93":0.03883,"94":0.0302,"95":0.01726,"96":0.08197,"97":0.07334,"98":0.06902,"99":0.12511,"100":0.25884,"101":1.99738,"102":23.66229,"103":2.3123,"104":0.01294,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 66 69 70 71 72 74 76 105 106"},F:{"28":0.01294,"85":0.01726,"86":0.78515,"87":0.89731,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.02157,"18":0.00863,"92":0.01294,"95":0.00431,"96":0.00431,"97":0.00431,"98":0.00863,"99":0.02157,"100":0.02157,"101":0.42277,"102":2.88607,"103":0.65141,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94"},E:{"4":0,"13":0.03451,"14":0.1553,"15":0.0302,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.00431,"11.1":0.02588,"12.1":0.02157,"13.1":0.15962,"14.1":0.31924,"15.1":0.05177,"15.2-15.3":0.10785,"15.4":0.42709,"15.5":1.40205,"16.0":0.00431},G:{"8":0,"3.2":0.00111,"4.0-4.1":0.00333,"4.2-4.3":0,"5.0-5.1":0.00333,"6.0-6.1":0.00666,"7.0-7.1":0.02776,"8.1-8.4":0,"9.0-9.2":0.00555,"9.3":0.03442,"10.0-10.2":0,"10.3":0.02776,"11.0-11.2":0.00777,"11.3-11.4":0.01221,"12.0-12.1":0.00666,"12.2-12.5":0.2776,"13.0-13.1":0.00555,"13.2":0.00333,"13.3":0.05663,"13.4-13.7":0.06107,"14.0-14.4":0.20875,"14.5-14.8":0.7051,"15.0-15.1":0.18544,"15.2-15.3":0.38531,"15.4":1.41131,"15.5":7.59177,"16.0":0.0422},P:{"4":0.07304,"5.0-5.4":0.0305,"6.2-6.4":0.0305,"7.2-7.4":0.10435,"8.2":0.06207,"9.2":0.01043,"10.1":0.33554,"11.1-11.2":0.05217,"12.0":0.02087,"13.0":0.07304,"14.0":0.07304,"15.0":0.04174,"16.0":0.17739,"17.0":2.2226},I:{"0":0,"3":0,"4":0.00963,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00413,"4.2-4.3":0.00688,"4.4":0,"4.4.3-4.4.4":0.06466},A:{"11":0.07765,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02843},H:{"0":0.24224},L:{"0":42.99972},S:{"2.5":0},R:{_:"0"},M:{"0":0.35253}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CU.js index 2918dc4d9d24c4..1f0a27290ca5e8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CU.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CU.js @@ -1 +1 @@ -module.exports={C:{"17":0.00271,"23":0.00541,"24":0.02705,"26":0.00541,"34":0.02976,"35":0.00541,"37":0.00271,"38":0.00812,"40":0.02435,"41":0.00541,"42":0.00541,"43":0.01353,"44":0.00271,"45":0.01082,"46":0.00541,"47":0.02435,"48":0.01082,"49":0.00812,"50":0.02705,"51":0.00541,"52":0.18665,"53":0.00541,"54":0.21099,"55":0.00541,"56":0.03517,"57":0.09197,"58":0.01623,"59":0.01353,"60":0.0514,"61":0.02164,"62":0.02164,"63":0.01353,"64":0.02976,"65":0.06492,"66":0.05681,"67":0.04328,"68":0.03787,"69":0.01623,"70":0.02705,"71":0.0514,"72":0.14878,"73":0.02164,"74":0.01353,"75":0.01353,"76":0.01082,"77":0.03787,"78":0.08927,"79":0.03246,"80":0.02435,"81":0.04058,"82":0.04328,"83":0.02705,"84":0.05681,"85":0.03246,"86":0.02705,"87":0.02705,"88":0.11632,"89":0.11632,"90":0.06763,"91":0.23534,"92":0.11632,"93":0.12714,"94":0.21099,"95":0.38682,"96":3.23789,"97":4.20087,"98":0.07574,"99":0.00271,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 25 27 28 29 30 31 32 33 36 39 3.5 3.6"},D:{"22":0.00541,"38":0.00271,"45":0.00541,"48":0.00541,"49":0.00541,"53":0.00271,"54":0.00271,"56":0.00541,"59":0.00271,"60":0.00271,"62":0.01623,"63":0.01353,"64":0.00271,"65":0.00271,"66":0.00541,"67":0.00812,"68":0.03246,"69":0.00271,"70":0.00812,"71":0.01623,"72":0.01623,"73":0.00271,"74":0.01894,"75":0.02435,"76":0.00541,"77":0.01894,"78":0.00541,"79":0.05681,"80":0.04599,"81":0.04869,"83":0.02705,"84":0.02705,"85":0.08386,"86":0.11361,"87":0.12714,"88":0.21099,"89":0.04328,"90":0.12443,"91":0.08115,"92":0.06492,"93":0.02705,"94":0.08656,"95":0.08656,"96":0.78445,"97":2.17482,"98":4.04668,"99":0.00541,"100":0.00541,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 46 47 50 51 52 55 57 58 61 101"},F:{"40":0.00271,"42":0.00541,"52":0.00271,"64":0.00812,"71":0.01623,"74":0.00541,"75":0.01082,"77":0.00541,"79":0.01082,"80":0.01623,"81":0.02164,"82":0.15148,"83":0.71953,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 62 63 65 66 67 68 69 70 72 73 76 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01082,"13":0.01623,"14":0.01623,"15":0.01353,"16":0.01353,"17":0.01894,"18":0.09197,"84":0.02976,"85":0.01353,"86":0.00541,"87":0.00271,"89":0.02435,"90":0.07845,"91":0.02435,"92":0.03246,"93":0.00541,"94":0.00541,"95":0.02435,"96":0.04328,"97":0.38411,"98":0.73847,_:"79 80 81 83 88"},E:{"4":0,"13":0.01894,"14":0.01623,"15":0.01082,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 15.4","5.1":0.03517,"11.1":0.00271,"12.1":0.00812,"13.1":0.01082,"14.1":0.03246,"15.1":0.02435,"15.2-15.3":0.02705},G:{"8":0.00117,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00117,"6.0-6.1":0,"7.0-7.1":0.02643,"8.1-8.4":0.03466,"9.0-9.2":0.00294,"9.3":0.13158,"10.0-10.2":0.0094,"10.3":0.06696,"11.0-11.2":0.06873,"11.3-11.4":0.03231,"12.0-12.1":0.03524,"12.2-12.5":0.90695,"13.0-13.1":0.03524,"13.2":0.03759,"13.3":0.16271,"13.4-13.7":0.39826,"14.0-14.4":1.06907,"14.5-14.8":0.67258,"15.0-15.1":0.88639,"15.2-15.3":1.28935,"15.4":0.00294},P:{"4":0.35891,"5.0-5.4":0.05127,"6.2-6.4":0.03076,"7.2-7.4":0.28713,"8.2":0.02051,"9.2":0.1128,"10.1":0.06153,"11.1-11.2":0.15382,"12.0":0.05127,"13.0":0.16407,"14.0":0.28713,"15.0":0.19484,"16.0":1.00496},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00537,"4.2-4.3":0.04836,"4.4":0,"4.4.3-4.4.4":0.21614},A:{"8":0.00271,"9":0.01082,"11":0.08656,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.88987},Q:{"10.4":0.00729},O:{"0":0.17506},H:{"0":1.19465},L:{"0":65.90979},S:{"2.5":0}}; +module.exports={C:{"24":0.02291,"32":0.00458,"34":0.01604,"38":0.00458,"39":0.00458,"40":0.01146,"41":0.00687,"42":0.00229,"43":0.00687,"45":0.00458,"46":0.00458,"47":0.01146,"49":0.00458,"50":0.01833,"51":0.00458,"52":0.14433,"53":0.00458,"54":0.2291,"55":0.00229,"56":0.02978,"57":0.06415,"58":0.01146,"59":0.00458,"60":0.03207,"61":0.0252,"62":0.00687,"63":0.00687,"64":0.03207,"65":0.01833,"66":0.01604,"67":0.03437,"68":0.08019,"69":0.01833,"70":0.02749,"71":0.03666,"72":0.08477,"73":0.00687,"74":0.00916,"75":0.00916,"76":0.00916,"77":0.01833,"78":0.03437,"79":0.01146,"80":0.01146,"81":0.02749,"82":0.0252,"83":0.01375,"84":0.03437,"85":0.01833,"86":0.0252,"87":0.02749,"88":0.06186,"89":0.07102,"90":0.03437,"91":0.17641,"92":0.02291,"93":0.0504,"94":0.08706,"95":0.06186,"96":0.05728,"97":0.08706,"98":0.13975,"99":0.47195,"100":1.2463,"101":5.05395,"102":0.1787,"103":0.01146,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 33 35 36 37 44 48 104 3.5 3.6"},D:{"31":0.00458,"38":0.00229,"43":0.00458,"44":0.00458,"49":0.01604,"51":0.00458,"53":0.00687,"55":0.00229,"56":0.00458,"58":0.00458,"61":0.00458,"62":0.01146,"63":0.00687,"66":0.01604,"67":0.00687,"68":0.01146,"69":0.00916,"70":0.01833,"71":0.0252,"72":0.01604,"73":0.00229,"74":0.01146,"75":0.01833,"76":0.00916,"77":0.00458,"78":0.00458,"79":0.03666,"80":0.01833,"81":0.03437,"83":0.00916,"84":0.00229,"85":0.00916,"86":0.04582,"87":0.07789,"88":0.09164,"89":0.04353,"90":0.06644,"91":0.02749,"92":0.02062,"93":0.00916,"94":0.06186,"95":0.0504,"96":0.12601,"97":0.14204,"98":0.09164,"99":0.08935,"100":0.2039,"101":0.44904,"102":4.54764,"103":0.49715,"104":0.00458,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 39 40 41 42 45 46 47 48 50 52 54 57 59 60 64 65 105 106"},F:{"34":0.00458,"37":0.00229,"42":0.00229,"71":0.00229,"76":0.00229,"77":0.00229,"78":0.00229,"79":0.01604,"80":0.00458,"82":0.00687,"83":0.00458,"84":0.00687,"85":0.03666,"86":0.09164,"87":0.39405,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00916,"13":0.01375,"14":0.01146,"15":0.00916,"16":0.01375,"17":0.01146,"18":0.05728,"84":0.02978,"85":0.00916,"89":0.01833,"90":0.02749,"92":0.03666,"95":0.00458,"96":0.00687,"97":0.01833,"98":0.03895,"99":0.01833,"100":0.04582,"101":0.18099,"102":0.54297,"103":0.08706,_:"79 80 81 83 86 87 88 91 93 94"},E:{"4":0,"13":0.00229,"14":0.02291,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 9.1 10.1 16.0","5.1":0.00229,"7.1":0.00229,"11.1":0.00458,"12.1":0.00458,"13.1":0.00916,"14.1":0.00916,"15.1":0.00916,"15.2-15.3":0.01604,"15.4":0.01833,"15.5":0.05498},G:{"8":0.00284,"3.2":0.00284,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00114,"6.0-6.1":0,"7.0-7.1":0.02331,"8.1-8.4":0.06198,"9.0-9.2":0.00341,"9.3":0.01763,"10.0-10.2":0.00569,"10.3":0.14159,"11.0-11.2":0.05459,"11.3-11.4":0.00967,"12.0-12.1":0.02502,"12.2-12.5":0.77109,"13.0-13.1":0.03412,"13.2":0.03639,"13.3":0.16661,"13.4-13.7":0.22973,"14.0-14.4":0.69603,"14.5-14.8":0.50212,"15.0-15.1":0.60163,"15.2-15.3":0.86662,"15.4":0.45151,"15.5":0.96386,"16.0":0.01137},P:{"4":0.24484,"5.0-5.4":0.0204,"6.2-6.4":0.0102,"7.2-7.4":0.36726,"8.2":0.06207,"9.2":0.11222,"10.1":0.0204,"11.1-11.2":0.10202,"12.0":0.0204,"13.0":0.12242,"14.0":0.19383,"15.0":0.07141,"16.0":0.5713,"17.0":0.91816},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00266,"4.2-4.3":0.03187,"4.4":0,"4.4.3-4.4.4":0.14276},A:{"9":0.00458,"11":0.04124,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.00771},O:{"0":0.13104},H:{"0":0.86839},L:{"0":71.15893},S:{"2.5":0},R:{_:"0"},M:{"0":0.56268}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CV.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CV.js index cb723f26dc65c6..7a5d5536b8ce1b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CV.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CV.js @@ -1 +1 @@ -module.exports={C:{"29":0.0083,"35":0.00415,"48":0.00415,"52":0.0747,"61":0.0332,"72":0.02905,"78":0.0166,"88":0.0083,"91":0.0166,"94":0.0332,"95":0.01245,"96":0.8798,"97":1.6849,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 98 99 3.5 3.6"},D:{"38":0.0166,"42":0.0083,"43":0.0498,"49":0.07055,"50":0.0083,"55":0.00415,"62":0.00415,"63":0.0083,"65":0.0166,"67":0.0083,"70":0.0166,"71":0.0249,"73":0.0083,"74":0.00415,"75":0.00415,"76":0.01245,"77":0.0166,"78":0.0166,"79":0.0498,"80":0.03735,"81":0.02905,"83":0.0249,"84":0.00415,"85":0.0083,"86":0.01245,"87":0.05395,"88":0.02905,"89":0.07055,"90":0.0498,"91":0.2158,"92":0.02075,"93":0.0498,"94":0.0415,"95":0.0415,"96":0.6059,"97":8.5324,"98":18.3513,"99":0.0166,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 44 45 46 47 48 51 52 53 54 56 57 58 59 60 61 64 66 68 69 72 100 101"},F:{"82":0.12035,"83":2.39455,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.0166,"16":0.00415,"17":0.00415,"18":0.0249,"85":0.0083,"89":0.01245,"92":0.0498,"94":0.04565,"96":0.166,"97":0.6889,"98":2.85105,_:"12 13 14 79 80 81 83 84 86 87 88 90 91 93 95"},E:{"4":0,"13":0.0083,"14":0.03735,"15":0.0913,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.0581,"11.1":0.0581,"12.1":0.00415,"13.1":0.083,"14.1":0.1743,"15.1":0.1328,"15.2-15.3":0.4067,"15.4":0.01245},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00173,"7.0-7.1":0.05029,"8.1-8.4":0.00347,"9.0-9.2":0,"9.3":0.04422,"10.0-10.2":0.0026,"10.3":0.11532,"11.0-11.2":0.11792,"11.3-11.4":0.01214,"12.0-12.1":0.02428,"12.2-12.5":1.35347,"13.0-13.1":0.00434,"13.2":0.0104,"13.3":0.21069,"13.4-13.7":0.26965,"14.0-14.4":0.97283,"14.5-14.8":1.22775,"15.0-15.1":0.91041,"15.2-15.3":3.32255,"15.4":0.01127},P:{"4":0.25791,"5.0-5.4":0.02063,"6.2-6.4":0.01048,"7.2-7.4":0.13411,"8.2":0.01077,"9.2":0.03095,"10.1":0.02185,"11.1-11.2":0.23727,"12.0":0.71182,"13.0":0.13411,"14.0":0.17538,"15.0":0.21664,"16.0":1.21732},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00068,"4.2-4.3":0.00406,"4.4":0,"4.4.3-4.4.4":0.05962},A:{"11":0.1245,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.24574},Q:{"10.4":0},O:{"0":0.14042},H:{"0":0.37668},L:{"0":46.15481},S:{"2.5":0}}; +module.exports={C:{"29":0.0307,"43":0.00384,"45":0.00384,"48":0.00767,"52":0.0729,"61":0.00767,"78":0.00384,"82":0.00767,"89":0.01535,"91":0.01151,"94":0.00384,"96":0.01151,"97":0.00767,"98":0.01151,"100":0.07674,"101":0.7367,"102":0.01919,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 44 46 47 49 50 51 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 85 86 87 88 90 92 93 95 99 103 104 3.5 3.6"},D:{"38":0.01151,"42":0.00384,"43":0.04604,"49":0.03837,"55":0.02686,"56":0.33766,"63":0.01151,"65":0.00384,"66":0.00767,"69":0.01151,"70":0.01151,"71":0.01151,"72":0.00384,"73":0.00384,"74":0.00384,"75":0.00384,"76":0.01535,"77":0.01151,"78":0.01919,"79":0.02686,"80":0.03453,"81":0.04604,"83":0.0307,"84":0.01919,"85":0.04604,"86":0.05756,"87":0.0729,"88":0.03837,"89":0.04988,"90":0.05756,"91":0.30312,"92":0.07674,"93":0.02686,"94":0.03837,"95":0.02302,"96":0.23789,"97":0.07674,"98":0.06523,"99":0.15732,"100":0.58706,"101":0.92472,"102":21.37593,"103":1.86095,"104":0.01151,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 44 45 46 47 48 50 51 52 53 54 57 58 59 60 61 62 64 67 68 105 106"},F:{"28":0.00384,"36":0.06523,"42":0.08058,"75":0.00767,"79":0.03453,"84":0.00384,"85":0.00767,"86":0.15348,"87":1.12424,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 78 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.00767,"17":0.01919,"18":0.06907,"84":0.03837,"85":0.0307,"86":0.00767,"87":0.02302,"88":0.01151,"89":0.02686,"90":0.01535,"91":0.01535,"92":0.0307,"93":0.00384,"94":0.00767,"95":0.01151,"96":0.0729,"97":0.01919,"98":0.08058,"99":0.01535,"100":0.02686,"101":0.45277,"102":3.51086,"103":0.67915,_:"12 13 14 15 79 80 81 83"},E:{"4":0,"13":0.0307,"14":0.21104,"15":0.04604,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.00384,"11.1":0.01535,"12.1":0.00767,"13.1":0.21104,"14.1":0.08058,"15.1":0.01151,"15.2-15.3":0.01151,"15.4":0.13046,"15.5":0.37603},G:{"8":0.00346,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.0095,"8.1-8.4":0,"9.0-9.2":0.00086,"9.3":0.06824,"10.0-10.2":0,"10.3":0.05874,"11.0-11.2":0.09675,"11.3-11.4":0.0216,"12.0-12.1":0.0501,"12.2-12.5":0.84742,"13.0-13.1":0.04665,"13.2":0.03455,"13.3":0.08638,"13.4-13.7":0.15549,"14.0-14.4":0.93553,"14.5-14.8":0.95194,"15.0-15.1":0.26779,"15.2-15.3":0.48116,"15.4":1.02796,"15.5":3.43115,"16.0":0.0406},P:{"4":0.27855,"5.0-5.4":0.05037,"6.2-6.4":0.03095,"7.2-7.4":0.21665,"8.2":0.06207,"9.2":0.04127,"10.1":0.01086,"11.1-11.2":0.15475,"12.0":0.02015,"13.0":0.09285,"14.0":0.2476,"15.0":0.1238,"16.0":0.39204,"17.0":1.23802},I:{"0":0,"3":0,"4":0.00138,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00277,"4.2-4.3":0.006,"4.4":0,"4.4.3-4.4.4":0.12544},A:{"9":0.00767,"11":0.06907,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.06163},H:{"0":0.56597},L:{"0":51.26258},S:{"2.5":0},R:{_:"0"},M:{"0":0.16024}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CX.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CX.js index 71ebfd2033e206..e4ac1e84d7696e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CX.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CX.js @@ -1 +1 @@ -module.exports={C:{_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 3.5 3.6"},D:{"97":38.46,"98":46.152,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 99 100 101"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98"},E:{"4":0,"13":11.538,_:"0 5 6 7 8 9 10 11 12 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4"},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":3.85,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":0,"15.2-15.3":0,"15.4":0},P:{"4":0.1951,"5.0-5.4":0.0504,"6.2-6.4":0.04032,"7.2-7.4":0.07188,"8.2":0.01049,"9.2":0.03081,"10.1":0.04032,"11.1-11.2":0.12322,"12.0":0.02054,"13.0":0.11295,"14.0":0.16429,"15.0":0.11295,"16.0":1.3965},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":0},S:{"2.5":0}}; +module.exports={C:{"97":1.262,"101":0.62603,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 98 99 100 102 103 104 3.5 3.6"},D:{"102":95.59394,"103":1.88803,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 104 105 106"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4 15.5 16.0"},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":0,"15.2-15.3":0,"15.4":0,"15.5":0,"16.0":0},P:{"4":0.09308,"5.0-5.4":0.02026,"6.2-6.4":0.03039,"7.2-7.4":0.06205,"8.2":0.06207,"9.2":0.01034,"10.1":0.02026,"11.1-11.2":0.08274,"12.0":0.01034,"13.0":0.05171,"14.0":0.10342,"15.0":0.04137,"16.0":0.1965,"17.0":1.46858},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":0.63},S:{"2.5":0},R:{_:"0"},M:{"0":0}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CY.js index 23a9dd0d1077b5..d623cd4f7623a1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CY.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CY.js @@ -1 +1 @@ -module.exports={C:{"52":0.29724,"78":0.03468,"80":0.00495,"83":0.01982,"84":0.00495,"88":0.02972,"91":0.02972,"92":0.00495,"94":0.00991,"95":0.02477,"96":0.63411,"97":1.11465,"98":0.00495,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 81 82 85 86 87 89 90 93 99 3.5 3.6"},D:{"38":0.02972,"42":1.4862,"47":0.01486,"49":0.05449,"53":0.02477,"54":0.00991,"56":0.00495,"57":0.00991,"62":0.00991,"65":0.01486,"69":0.00991,"70":1.48125,"71":0.01486,"73":0.00991,"74":0.01486,"76":0.00991,"77":0.03468,"79":0.16348,"80":0.00495,"81":0.02477,"83":0.01982,"84":0.01982,"85":0.02972,"86":0.03963,"87":0.1288,"88":0.01486,"89":0.06936,"90":0.01982,"91":0.04459,"92":0.03468,"93":0.05449,"94":0.02477,"95":0.04459,"96":0.70842,"97":9.95754,"98":21.55981,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 43 44 45 46 48 50 51 52 55 58 59 60 61 63 64 66 67 68 72 75 78 99 100 101"},F:{"28":0.01982,"46":0.00495,"82":0.34678,"83":1.09483,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00991,"16":0.00495,"18":0.01982,"83":0.00495,"90":0.00991,"91":0.00991,"94":0.00495,"96":0.01982,"97":1.01557,"98":4.13164,_:"12 13 14 17 79 80 81 84 85 86 87 88 89 92 93 95"},E:{"4":0,"13":0.02972,"14":0.25265,"15":0.1189,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.00495,"11.1":0.00991,"12.1":0.02477,"13.1":0.8719,"14.1":0.59943,"15.1":0.29229,"15.2-15.3":0.60439,"15.4":0.00495},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00121,"6.0-6.1":0,"7.0-7.1":0.00969,"8.1-8.4":0,"9.0-9.2":0.00606,"9.3":0.06058,"10.0-10.2":0.00485,"10.3":0.10299,"11.0-11.2":0.09572,"11.3-11.4":0.01575,"12.0-12.1":0.01817,"12.2-12.5":0.4895,"13.0-13.1":0.03998,"13.2":0.00969,"13.3":0.04483,"13.4-13.7":0.20356,"14.0-14.4":0.57432,"14.5-14.8":2.31061,"15.0-15.1":1.8308,"15.2-15.3":6.263,"15.4":0.02908},P:{"4":0.20749,"5.0-5.4":0.05127,"6.2-6.4":0.03076,"7.2-7.4":0.01037,"8.2":0.02051,"9.2":0.1128,"10.1":0.06153,"11.1-11.2":0.06225,"12.0":0.03112,"13.0":0.07262,"14.0":0.07262,"15.0":0.10375,"16.0":3.14353},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00128,"4.2-4.3":0.00514,"4.4":0,"4.4.3-4.4.4":0.0289},A:{"9":0.01486,"11":0.22293,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.1867},Q:{"10.4":0},O:{"0":0.79727},H:{"0":0.39651},L:{"0":32.4087},S:{"2.5":0}}; +module.exports={C:{"52":0.10622,"78":0.02213,"79":0.00443,"88":0.01328,"91":0.02213,"94":0.00443,"98":0.00885,"99":0.00885,"100":0.14606,"101":1.46058,"102":0.05311,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 81 82 83 84 85 86 87 89 90 92 93 95 96 97 103 104 3.5 3.6"},D:{"38":0.01328,"42":1.14633,"47":0.00443,"49":0.03098,"53":0.00443,"57":0.02213,"64":0.01328,"68":0.00443,"69":0.00443,"70":1.67745,"71":1.50041,"73":0.00885,"74":0.00443,"76":0.00443,"77":0.01328,"79":0.1195,"80":0.00443,"81":0.00443,"83":0.06639,"84":0.00443,"85":0.00443,"86":0.02213,"87":0.07967,"88":0.00443,"89":0.03983,"90":0.00443,"91":0.01328,"92":0.02213,"93":0.0177,"94":0.0177,"95":0.01328,"96":0.04426,"97":0.07967,"98":0.09737,"99":0.06639,"100":0.2213,"101":3.01411,"102":21.4484,"103":2.46971,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 43 44 45 46 48 50 51 52 54 55 56 58 59 60 61 62 63 65 66 67 72 75 78 104 105 106"},F:{"28":0.0177,"40":0.02656,"46":0.00443,"82":0.00885,"85":0.01328,"86":0.33195,"87":0.87192,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.00443,"15":0.00885,"18":0.00885,"86":0.00885,"98":0.0177,"100":0.00885,"101":0.37621,"102":3.20442,"103":0.77898,_:"12 14 16 17 79 80 81 83 84 85 87 88 89 90 91 92 93 94 95 96 97 99"},E:{"4":0,"13":0.02213,"14":0.13721,"15":0.02213,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01328,"12.1":0.01328,"13.1":0.50899,"14.1":0.34523,"15.1":0.15934,"15.2-15.3":0.05311,"15.4":0.31425,"15.5":0.92946},G:{"8":0.00106,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00106,"6.0-6.1":0.00317,"7.0-7.1":0.00317,"8.1-8.4":0,"9.0-9.2":0.00422,"9.3":0.05175,"10.0-10.2":0.00317,"10.3":0.09082,"11.0-11.2":0.01795,"11.3-11.4":0.01373,"12.0-12.1":0.01901,"12.2-12.5":0.44356,"13.0-13.1":0.00634,"13.2":0.00634,"13.3":0.03274,"13.4-13.7":0.12356,"14.0-14.4":0.33162,"14.5-14.8":1.04554,"15.0-15.1":0.29888,"15.2-15.3":0.47947,"15.4":1.48805,"15.5":6.04514,"16.0":0.0264},P:{"4":0.16508,"5.0-5.4":0.0204,"6.2-6.4":0.0102,"7.2-7.4":0.08254,"8.2":0.06207,"9.2":0.11222,"10.1":0.0204,"11.1-11.2":0.04127,"12.0":0.01032,"13.0":0.0619,"14.0":0.05159,"15.0":0.03095,"16.0":0.18571,"17.0":3.44597},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00194,"4.4":0,"4.4.3-4.4.4":0.04266},A:{"11":0.18147,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.46273},H:{"0":0.36419},L:{"0":38.41269},S:{"2.5":0},R:{_:"0"},M:{"0":0.16168}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CZ.js index 2b38b96d13cca5..aa2713e747a0e1 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CZ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CZ.js @@ -1 +1 @@ -module.exports={C:{"50":0.01181,"52":0.17119,"56":0.02361,"66":0.01181,"68":0.01181,"78":0.05313,"80":0.0059,"82":0.0059,"84":0.0059,"86":0.01181,"87":0.0059,"88":0.02952,"89":0.01771,"90":0.01181,"91":0.21251,"92":0.02952,"93":0.05313,"94":0.25383,"95":0.11806,"96":2.5501,"97":4.1262,"98":0.01771,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 54 55 57 58 59 60 61 62 63 64 65 67 69 70 71 72 73 74 75 76 77 79 81 83 85 99 3.5 3.6"},D:{"38":0.01181,"42":0.0059,"49":0.07674,"53":0.0059,"58":0.01181,"60":0.01181,"63":0.0059,"65":0.0059,"67":0.01181,"68":0.0059,"70":0.0059,"72":0.01771,"73":0.0059,"74":0.0059,"76":0.01181,"77":0.01181,"78":0.01771,"79":0.08855,"80":0.02952,"81":0.05313,"83":0.02952,"84":0.04132,"85":0.03542,"86":0.05313,"87":0.08264,"88":0.02361,"89":0.08264,"90":0.08855,"91":0.09445,"92":0.04722,"93":0.43682,"94":0.04722,"95":0.07674,"96":0.64933,"97":10.74346,"98":22.68523,"99":0.0059,"100":0.01181,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 43 44 45 46 47 48 50 51 52 54 55 56 57 59 61 62 64 66 69 71 75 101"},F:{"46":0.01181,"77":0.0059,"79":0.0059,"80":0.0059,"82":0.61391,"83":2.56781,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.02952},B:{"15":0.01181,"16":0.01181,"17":0.01181,"18":0.02361,"89":0.0059,"90":0.02361,"91":0.01181,"92":0.01181,"93":0.0059,"94":0.0059,"95":0.02361,"96":0.07674,"97":1.62923,"98":5.66098,_:"12 13 14 79 80 81 83 84 85 86 87 88"},E:{"4":0,"13":0.01771,"14":0.17709,"15":0.11216,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.01181,"11.1":0.01181,"12.1":0.02952,"13.1":0.17709,"14.1":0.56669,"15.1":0.34828,"15.2-15.3":0.74968,"15.4":0.01181},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00185,"5.0-5.1":0.00278,"6.0-6.1":0,"7.0-7.1":0.00093,"8.1-8.4":0.00648,"9.0-9.2":0,"9.3":0.03797,"10.0-10.2":0.00093,"10.3":0.05279,"11.0-11.2":0.01019,"11.3-11.4":0.01111,"12.0-12.1":0.01204,"12.2-12.5":0.24912,"13.0-13.1":0.00648,"13.2":0.00648,"13.3":0.025,"13.4-13.7":0.10095,"14.0-14.4":0.27598,"14.5-14.8":1.42343,"15.0-15.1":1.36971,"15.2-15.3":5.57794,"15.4":0.08705},P:{"4":0.12663,"5.0-5.4":0.05127,"6.2-6.4":0.03076,"7.2-7.4":0.01037,"8.2":0.02051,"9.2":0.1128,"10.1":0.06153,"11.1-11.2":0.04221,"12.0":0.03112,"13.0":0.03166,"14.0":0.06331,"15.0":0.06331,"16.0":1.8361},I:{"0":0,"3":0,"4":0.00456,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00456,"4.2-4.3":0.01141,"4.4":0,"4.4.3-4.4.4":0.0696},A:{"8":0.01192,"9":0.01192,"10":0.0417,"11":0.57789,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.32776},Q:{"10.4":0},O:{"0":0.15159},H:{"0":0.512},L:{"0":27.81883},S:{"2.5":0}}; +module.exports={C:{"52":0.15936,"56":0.01494,"66":0.00498,"68":0.00498,"72":0.01494,"73":0.00498,"76":0.00996,"78":0.03984,"84":0.00996,"86":0.00498,"88":0.02988,"89":0.01494,"91":0.20418,"92":0.00498,"93":0.00498,"94":0.07968,"95":0.01494,"96":0.01494,"97":0.01992,"98":0.01992,"99":0.1245,"100":0.53286,"101":4.9053,"102":0.1992,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 67 69 70 71 74 75 77 79 80 81 82 83 85 87 90 103 104 3.5 3.6"},D:{"38":0.00996,"41":0.00996,"42":0.00498,"49":0.03984,"53":0.00498,"67":0.00996,"68":0.00498,"72":0.00996,"73":0.00996,"74":0.00996,"77":0.00498,"78":0.00996,"79":0.08466,"80":0.01494,"81":0.03486,"83":0.01494,"84":0.02988,"85":0.01494,"86":0.02988,"87":0.04482,"88":0.01494,"89":0.0996,"90":0.0747,"91":0.03984,"92":0.03486,"93":0.01494,"94":0.0249,"95":0.01992,"96":0.07968,"97":0.04482,"98":0.0498,"99":0.32868,"100":2.59956,"101":1.47408,"102":22.0614,"103":1.992,"104":0.01494,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 63 64 65 66 69 70 71 75 76 105 106"},F:{"84":0.00996,"85":0.62748,"86":0.56772,"87":1.22508,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00498},B:{"16":0.00498,"17":0.00996,"18":0.01494,"89":0.00996,"91":0.01494,"92":0.00996,"94":0.01494,"96":0.01494,"97":0.00996,"98":0.03486,"99":0.0249,"100":0.06972,"101":0.68226,"102":4.89036,"103":1.10058,_:"12 13 14 15 79 80 81 83 84 85 86 87 88 90 93 95"},E:{"4":0,"13":0.01494,"14":0.08466,"15":0.02988,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 16.0","9.1":0.00996,"11.1":0.00996,"12.1":0.01992,"13.1":0.14442,"14.1":0.25896,"15.1":0.05976,"15.2-15.3":0.05976,"15.4":0.41334,"15.5":1.0707},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00188,"6.0-6.1":0,"7.0-7.1":0.00281,"8.1-8.4":0.00281,"9.0-9.2":0.00094,"9.3":0.04314,"10.0-10.2":0.00188,"10.3":0.04314,"11.0-11.2":0.01032,"11.3-11.4":0.00844,"12.0-12.1":0.00844,"12.2-12.5":0.22131,"13.0-13.1":0.00469,"13.2":0.0075,"13.3":0.02438,"13.4-13.7":0.05533,"14.0-14.4":0.16692,"14.5-14.8":0.59735,"15.0-15.1":0.17067,"15.2-15.3":0.34791,"15.4":1.40757,"15.5":6.14885,"16.0":0.05908},P:{"4":0.12532,"5.0-5.4":0.0204,"6.2-6.4":0.0102,"7.2-7.4":0.08254,"8.2":0.06207,"9.2":0.11222,"10.1":0.0204,"11.1-11.2":0.03133,"12.0":0.01032,"13.0":0.03133,"14.0":0.04177,"15.0":0.03133,"16.0":0.16709,"17.0":2.2871},I:{"0":0,"3":0,"4":0.00502,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01004,"4.2-4.3":0.01338,"4.4":0,"4.4.3-4.4.4":0.087},A:{"8":0.0249,"9":0.00498,"10":0.0249,"11":0.39342,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.13049},H:{"0":0.48467},L:{"0":34.33103},S:{"2.5":0},R:{_:"0"},M:{"0":0.46175}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DE.js index b935a04e3f99dd..cffa05d258c751 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DE.js @@ -1 +1 @@ -module.exports={C:{"48":0.01089,"50":0.00545,"51":0.01089,"52":0.13615,"56":0.00545,"59":0.02178,"60":0.01089,"65":0.00545,"66":0.01089,"68":0.02723,"69":0.00545,"70":0.01089,"72":0.01089,"76":0.00545,"77":0.11437,"78":0.20695,"79":0.07624,"80":0.02723,"81":0.08169,"82":0.02178,"83":0.02178,"84":0.02178,"85":0.01089,"86":0.04901,"87":0.01634,"88":0.03812,"89":0.03268,"90":0.28319,"91":0.38122,"92":0.02723,"93":0.02723,"94":0.12526,"95":0.1416,"96":3.79586,"97":5.79454,"98":0.01634,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 53 54 55 57 58 61 62 63 64 67 71 73 74 75 99 3.5 3.6"},D:{"35":0.01089,"38":0.00545,"49":0.04901,"51":0.03812,"52":0.02723,"56":0.00545,"60":0.01089,"63":0.00545,"65":0.11437,"66":0.09803,"67":0.01089,"68":0.00545,"69":0.0708,"70":0.02723,"71":0.02178,"72":0.03268,"73":0.00545,"74":0.01089,"75":1.54666,"76":0.01634,"77":0.01089,"78":0.03268,"79":0.08714,"80":0.38667,"81":0.04357,"83":0.08714,"84":0.19606,"85":0.18516,"86":0.22329,"87":0.17427,"88":0.03812,"89":0.05446,"90":0.07624,"91":0.06535,"92":0.0708,"93":0.31042,"94":0.31042,"95":0.07624,"96":0.36488,"97":5.9906,"98":12.61294,"99":0.01089,"100":0.01089,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 40 41 42 43 44 45 46 47 48 50 53 54 55 57 58 59 61 62 64 101"},F:{"36":0.00545,"46":0.00545,"68":0.00545,"69":0.00545,"70":0.00545,"71":0.01089,"77":0.01089,"78":0.00545,"79":0.01634,"80":0.01089,"81":0.00545,"82":0.94216,"83":2.73389,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.05991,"15":0.00545,"16":0.00545,"17":0.01634,"18":0.04357,"84":0.01089,"85":0.01634,"86":0.01634,"87":0.00545,"89":0.01089,"90":0.01089,"91":0.01634,"92":0.01634,"93":0.01089,"94":0.02178,"95":0.03812,"96":0.11981,"97":1.59023,"98":5.30985,_:"13 14 79 80 81 83 88"},E:{"4":0,"7":0.00545,"12":0.00545,"13":0.04901,"14":0.35944,"15":0.23962,_:"0 5 6 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.02178,"10.1":0.00545,"11.1":0.05446,"12.1":0.06535,"13.1":0.3431,"14.1":1.17634,"15.1":0.83868,"15.2-15.3":1.75906,"15.4":0.02178},G:{"8":0.00322,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00322,"6.0-6.1":0,"7.0-7.1":0.00483,"8.1-8.4":0.00161,"9.0-9.2":0.01608,"9.3":0.08524,"10.0-10.2":0.00483,"10.3":0.08685,"11.0-11.2":0.0193,"11.3-11.4":0.08203,"12.0-12.1":0.01608,"12.2-12.5":0.41657,"13.0-13.1":0.01608,"13.2":0.00643,"13.3":0.04343,"13.4-13.7":0.16566,"14.0-14.4":0.53559,"14.5-14.8":2.62164,"15.0-15.1":2.28549,"15.2-15.3":9.60355,"15.4":0.0579},P:{"4":0.11566,"5.0-5.4":0.01051,_:"6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.04206,"12.0":0.02103,"13.0":0.10515,"14.0":0.09463,"15.0":1.21974,"16.0":4.14291},I:{"0":0,"3":0,"4":0.00121,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00241,"4.2-4.3":0.00603,"4.4":0,"4.4.3-4.4.4":0.03134},A:{"6":0.01135,"7":0.00567,"8":0.02836,"9":0.02269,"10":0.01135,"11":0.46518,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.84249},Q:{"10.4":0},O:{"0":0.14117},H:{"0":0.43114},L:{"0":22.11709},S:{"2.5":0}}; +module.exports={C:{"47":0.00464,"48":0.00928,"50":0.00464,"52":0.12998,"54":0.00464,"55":0.00928,"56":0.01393,"59":0.02321,"60":0.00928,"64":0.00464,"66":0.01393,"68":0.01857,"70":0.00464,"72":0.00928,"77":0.10212,"78":0.11141,"79":0.04178,"80":0.01393,"81":0.01857,"82":0.01393,"83":0.01393,"84":0.01857,"85":0.00464,"86":0.05106,"87":0.00928,"88":0.02321,"89":0.01393,"90":0.00928,"91":0.3203,"92":0.01393,"93":0.00928,"94":0.01393,"95":0.02785,"96":0.02321,"97":0.03249,"98":0.06499,"99":0.0882,"100":0.90055,"101":7.58967,"102":0.13462,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 51 53 57 58 61 62 63 65 67 69 71 73 74 75 76 103 104 3.5 3.6"},D:{"35":0.01857,"38":0.00464,"41":0.00464,"43":0.03249,"49":0.03714,"51":0.04642,"52":0.02785,"56":0.00464,"58":0.00464,"59":0.00464,"60":0.01857,"61":0.04178,"63":0.00928,"65":0.1439,"66":0.12533,"67":0.01393,"68":0.0557,"69":0.06499,"70":0.03714,"71":0.01857,"72":0.03249,"73":0.00464,"74":0.00928,"75":1.77324,"76":0.00928,"77":0.00928,"78":0.02321,"79":0.07891,"80":0.03714,"81":0.04178,"83":0.06035,"84":0.11141,"85":0.11141,"86":0.12998,"87":0.13926,"88":0.02785,"89":0.04642,"90":0.03714,"91":0.03249,"92":0.04178,"93":0.02785,"94":0.02321,"95":0.02785,"96":0.07891,"97":0.04642,"98":0.0557,"99":0.12998,"100":0.34815,"101":1.01196,"102":13.55,"103":0.96089,"104":0.00464,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 40 42 44 45 46 47 48 50 53 54 55 57 62 64 105 106"},F:{"46":0.00928,"68":0.00464,"69":0.00464,"70":0.00928,"71":0.00928,"82":0.00464,"84":0.00464,"85":0.03249,"86":1.11872,"87":1.79181,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 72 73 74 75 76 77 78 79 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00928,"17":0.01393,"18":0.02321,"84":0.00928,"85":0.00928,"86":0.01393,"87":0.00464,"89":0.00928,"90":0.00464,"91":0.00928,"92":0.01393,"94":0.00928,"95":0.00464,"96":0.01857,"97":0.01857,"98":0.01857,"99":0.03249,"100":0.06963,"101":0.75665,"102":4.7302,"103":0.84949,_:"12 13 15 16 79 80 81 83 88 93"},E:{"4":0,"7":0.00464,"13":0.03249,"14":0.18104,"15":0.06499,_:"0 5 6 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.01857,"10.1":0.00928,"11.1":0.04642,"12.1":0.04642,"13.1":0.27388,"14.1":0.51526,"15.1":0.13926,"15.2-15.3":0.12533,"15.4":0.97018,"15.5":2.55774,"16.0":0.00464},G:{"8":0.00538,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00717,"6.0-6.1":0.00538,"7.0-7.1":0.00717,"8.1-8.4":0.00359,"9.0-9.2":0.01973,"9.3":0.06994,"10.0-10.2":0.00897,"10.3":0.07891,"11.0-11.2":0.02152,"11.3-11.4":0.09325,"12.0-12.1":0.02152,"12.2-12.5":0.53262,"13.0-13.1":0.01973,"13.2":0.00897,"13.3":0.05559,"13.4-13.7":0.17037,"14.0-14.4":0.45192,"14.5-14.8":1.41854,"15.0-15.1":0.36584,"15.2-15.3":0.73348,"15.4":2.6416,"15.5":11.09542,"16.0":0.04304},P:{"4":0.11458,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.03125,"12.0":0.02083,"13.0":0.08333,"14.0":0.07292,"15.0":1.83331,"16.0":0.28125,"17.0":4.45828},I:{"0":0,"3":0,"4":0.00364,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01237,"4.2-4.3":0.01019,"4.4":0,"4.4.3-4.4.4":0.03274},A:{"8":0.00957,"9":0.00957,"11":0.29187,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.15002},H:{"0":0.54277},L:{"0":26.78902},S:{"2.5":0},R:{_:"0"},M:{"0":0.9698}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DJ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DJ.js index 7529b54838b238..3a6b8b0dc28a6b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DJ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DJ.js @@ -1 +1 @@ -module.exports={C:{"52":0.00939,"71":0.00939,"78":0.00626,"81":0.00626,"91":0.04068,"95":0.01877,"96":0.87299,"97":1.10454,"98":0.01877,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 79 80 82 83 84 85 86 87 88 89 90 92 93 94 99 3.5 3.6"},D:{"11":0.00313,"37":0.0219,"43":0.00313,"46":0.05006,"47":0.00939,"49":0.06258,"50":0.00313,"53":0.01252,"55":0.04068,"58":0.00939,"59":0.13455,"65":0.00626,"67":0.00313,"68":0.00939,"69":0.00626,"72":0.00626,"78":0.01565,"79":0.00939,"80":0.00626,"81":0.01252,"83":0.03755,"84":0.00626,"85":0.00939,"86":0.02816,"87":0.03755,"88":0.00626,"90":0.00626,"91":0.23468,"92":0.25971,"93":0.01252,"94":0.03442,"95":0.02503,"96":0.2378,"97":5.93884,"98":13.20438,"100":0.04068,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 44 45 48 51 52 54 56 57 60 61 62 63 64 66 70 71 73 74 75 76 77 89 99 101"},F:{"74":0.56635,"82":0.05006,"83":0.28474,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01252,"13":0.00313,"14":0.00626,"15":0.01252,"17":0.04694,"18":0.07823,"84":0.00313,"85":0.01565,"89":0.01565,"90":0.06571,"91":0.00626,"92":0.01565,"93":0.00626,"94":0.00626,"95":0.00626,"96":0.03755,"97":0.75409,"98":3.22913,_:"16 79 80 81 83 86 87 88"},E:{"4":0,"13":0.00626,"14":0.15019,"15":0.06571,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.4","12.1":0.01877,"13.1":0.18774,"14.1":0.1189,"15.1":0.24093,"15.2-15.3":0.22216},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00417,"8.1-8.4":0.0025,"9.0-9.2":0.00334,"9.3":0.00667,"10.0-10.2":0,"10.3":0.02169,"11.0-11.2":0.01001,"11.3-11.4":0.04672,"12.0-12.1":0.02336,"12.2-12.5":0.29782,"13.0-13.1":0.04338,"13.2":0.00834,"13.3":0.40043,"13.4-13.7":0.22023,"14.0-14.4":0.69157,"14.5-14.8":2.26325,"15.0-15.1":1.6526,"15.2-15.3":2.63614,"15.4":0.00918},P:{"4":0.36466,"5.0-5.4":0.01013,"6.2-6.4":0.04052,"7.2-7.4":0.75971,"8.2":0.02051,"9.2":0.08104,"10.1":0.06153,"11.1-11.2":0.27349,"12.0":0.13168,"13.0":0.24311,"14.0":0.25324,"15.0":0.40518,"16.0":3.33258},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00907,"4.4":0,"4.4.3-4.4.4":0.06651},A:{"11":0.18148,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.09619},Q:{"10.4":0.28858},O:{"0":2.31553},H:{"0":0.34477},L:{"0":52.00312},S:{"2.5":0}}; +module.exports={C:{"52":0.05168,"70":0.00544,"78":0.02992,"84":0.00544,"85":0.01088,"88":0.0136,"91":0.01088,"95":0.00816,"96":0.00544,"97":0.01632,"99":0.10608,"100":0.204,"101":1.88224,"102":0.03536,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 79 80 81 82 83 86 87 89 90 92 93 94 98 103 104 3.5 3.6"},D:{"11":0.01088,"34":0.00544,"39":0.00544,"46":0.0136,"49":0.00816,"50":0.01088,"56":0.00816,"58":0.00272,"59":0.2176,"63":0.00544,"65":0.04624,"66":0.02448,"69":0.00544,"71":0.0544,"74":0.00816,"75":0.00816,"81":0.00272,"83":0.00816,"84":0.00544,"86":0.04624,"87":0.08976,"88":0.03264,"89":0.00544,"90":0.01088,"91":0.0272,"92":0.01088,"93":0.03808,"94":0.01632,"95":0.01904,"96":0.03808,"97":0.0272,"98":0.04352,"99":0.07344,"100":0.5304,"101":0.9112,"102":15.436,"103":1.15056,"104":0.01632,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 40 41 42 43 44 45 47 48 51 52 53 54 55 57 60 61 62 64 67 68 70 72 73 76 77 78 79 80 85 105 106"},F:{"46":0.00272,"74":0.00544,"76":0.07888,"85":0.03808,"86":0.09248,"87":0.22848,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.01904},B:{"12":0.0272,"13":0.01088,"14":0.02448,"15":0.00544,"16":0.00544,"17":0.01632,"18":0.09248,"84":0.00544,"87":0.00544,"89":0.00544,"90":0.00544,"91":0.00544,"92":0.02176,"93":0.00272,"94":0.00544,"97":0.00544,"98":0.00816,"99":0.01088,"100":0.02448,"101":0.46512,"102":1.62384,"103":0.29376,_:"79 80 81 83 85 86 88 95 96"},E:{"4":0,"13":0.01088,"14":0.11696,"15":0.0272,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 16.0","9.1":0.00544,"11.1":0.00272,"12.1":0.0136,"13.1":0.12512,"14.1":0.04624,"15.1":0.03536,"15.2-15.3":0.02176,"15.4":0.11152,"15.5":0.07888},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00486,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00081,"10.0-10.2":0.00081,"10.3":0.13937,"11.0-11.2":0.00972,"11.3-11.4":0.02188,"12.0-12.1":0.00081,"12.2-12.5":0.17988,"13.0-13.1":0.0081,"13.2":0.01053,"13.3":0.04862,"13.4-13.7":0.07941,"14.0-14.4":1.73721,"14.5-14.8":0.96908,"15.0-15.1":0.4108,"15.2-15.3":0.33302,"15.4":0.93586,"15.5":3.16247,"16.0":0.04213},P:{"4":0.29189,"5.0-5.4":0.02013,"6.2-6.4":0.0302,"7.2-7.4":0.76494,"8.2":0.06207,"9.2":0.14091,"10.1":0.01007,"11.1-11.2":1.29839,"12.0":0.0302,"13.0":0.33215,"14.0":0.31202,"15.0":0.14091,"16.0":0.76494,"17.0":1.49969},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00613,"4.4":0,"4.4.3-4.4.4":0.02299},A:{"11":0.14144,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.3276},O:{"0":1.61616},H:{"0":1.11654},L:{"0":57.08072},S:{"2.5":0},R:{_:"0"},M:{"0":0.13104}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DK.js index d6464dfca4909a..c3328c6575f74b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DK.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DK.js @@ -1 +1 @@ -module.exports={C:{"52":0.04172,"70":0.01391,"78":0.05563,"84":0.01391,"87":0.04868,"89":0.01391,"90":0.01391,"91":0.07649,"92":0.00695,"93":0.00695,"94":0.02086,"95":0.02086,"96":0.80666,"97":1.24477,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 79 80 81 82 83 85 86 88 98 99 3.5 3.6"},D:{"38":0.00695,"49":0.04868,"52":0.01391,"59":0.01391,"66":0.01391,"67":0.00695,"69":0.22948,"70":0.01391,"72":0.00695,"73":0.00695,"75":0.02086,"76":0.14603,"77":0.01391,"78":0.02086,"79":0.06954,"80":0.09736,"81":0.01391,"83":0.02086,"84":0.02782,"85":0.02086,"86":0.02782,"87":0.15299,"88":0.03477,"89":0.10431,"90":0.04868,"91":0.15299,"92":0.13213,"93":0.42419,"94":0.14603,"95":0.25034,"96":1.53683,"97":17.2181,"98":28.50445,"99":0.00695,"100":0.00695,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 56 57 58 60 61 62 63 64 65 68 71 74 101"},F:{"82":0.33379,"83":0.86925,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01391,"86":0.01391,"88":0.00695,"89":0.00695,"90":0.01391,"92":0.01391,"94":0.01391,"95":0.02782,"96":0.0904,"97":1.25867,"98":4.47838,_:"12 13 14 15 16 17 79 80 81 83 84 85 87 91 93"},E:{"4":0,"5":0.00695,"8":0.00695,"12":0.00695,"13":0.0904,"14":0.79971,"15":0.48678,_:"0 6 7 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.03477,"12.1":0.09736,"13.1":0.53546,"14.1":2.65643,"15.1":1.12655,"15.2-15.3":2.09315,"15.4":0.01391},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.0037,"9.0-9.2":0.03333,"9.3":0.06111,"10.0-10.2":0.00185,"10.3":0.11481,"11.0-11.2":0.02407,"11.3-11.4":0.02407,"12.0-12.1":0.02222,"12.2-12.5":0.47961,"13.0-13.1":0.01667,"13.2":0.00556,"13.3":0.04815,"13.4-13.7":0.2074,"14.0-14.4":0.60924,"14.5-14.8":4.0795,"15.0-15.1":2.57399,"15.2-15.3":10.17006,"15.4":0.03518},P:{"4":0.01101,"5.0-5.4":0.05127,"6.2-6.4":0.03076,"7.2-7.4":0.01037,"8.2":0.02051,"9.2":0.1128,"10.1":0.06153,"11.1-11.2":0.04221,"12.0":0.03112,"13.0":0.02202,"14.0":0.02202,"15.0":0.03303,"16.0":1.39836},I:{"0":0,"3":0.00075,"4":0.00527,"2.1":0.00226,"2.2":0.00301,"2.3":0.00301,"4.1":0.00226,"4.2-4.3":0.00904,"4.4":0,"4.4.3-4.4.4":0.04141},A:{"8":0.00695,"10":0.06259,"11":0.37552,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.28937},Q:{"10.4":0},O:{"0":0.01523},H:{"0":0.08363},L:{"0":9.99421},S:{"2.5":0}}; +module.exports={C:{"47":0.00632,"48":0.00632,"51":0.01265,"52":0.03794,"53":0.01265,"55":0.01265,"56":0.00632,"57":0.00632,"78":0.03794,"87":0.06955,"89":0.00632,"91":0.03162,"97":0.00632,"98":0.01265,"99":0.01265,"100":0.26557,"101":2.13085,"102":0.06955,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 50 54 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 90 92 93 94 95 96 103 104 3.5 3.6"},D:{"38":0.00632,"41":0.00632,"46":0.00632,"49":0.05691,"52":0.01897,"58":0.00632,"59":0.01265,"63":0.00632,"65":0.00632,"66":0.03162,"67":0.00632,"69":0.27189,"75":0.00632,"76":0.03162,"78":0.01265,"79":0.06955,"80":0.01265,"81":0.01265,"83":0.01265,"84":0.04426,"85":0.02529,"86":0.01897,"87":0.0822,"88":0.01265,"89":0.0822,"90":0.03162,"91":0.05058,"92":0.09485,"93":0.11381,"94":0.03162,"95":0.06323,"96":0.1644,"97":0.12646,"98":0.13911,"99":0.33512,"100":0.84728,"101":4.10363,"102":32.98077,"103":2.49759,"104":0.00632,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 47 48 50 51 53 54 55 56 57 60 61 62 64 68 70 71 72 73 74 77 105 106"},F:{"28":0.00632,"71":0.00632,"85":0.02529,"86":0.68921,"87":0.86625,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00632,"86":0.01265,"90":0.00632,"92":0.01265,"96":0.01265,"97":0.02529,"98":0.01897,"99":0.02529,"100":0.05058,"101":0.75244,"102":4.76754,"103":0.91051,_:"12 13 14 15 16 17 79 80 81 83 84 85 87 88 89 91 93 94 95"},E:{"4":0,"5":0.01897,"13":0.05691,"14":0.41732,"15":0.13278,_:"0 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01897,"12.1":0.0822,"13.1":0.40467,"14.1":1.27725,"15.1":0.27821,"15.2-15.3":0.19601,"15.4":1.37209,"15.5":3.44604},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00624,"8.1-8.4":0,"9.0-9.2":0.04994,"9.3":0.08531,"10.0-10.2":0.00624,"10.3":0.12276,"11.0-11.2":0.01456,"11.3-11.4":0.01873,"12.0-12.1":0.02913,"12.2-12.5":0.46191,"13.0-13.1":0.00624,"13.2":0.00624,"13.3":0.02705,"13.4-13.7":0.1082,"14.0-14.4":0.39949,"14.5-14.8":1.87469,"15.0-15.1":0.3766,"15.2-15.3":0.94046,"15.4":3.0794,"15.5":13.1353,"16.0":0.02289},P:{"4":0.04308,"5.0-5.4":0.0204,"6.2-6.4":0.0102,"7.2-7.4":0.08254,"8.2":0.06207,"9.2":0.11222,"10.1":0.0204,"11.1-11.2":0.03133,"12.0":0.01032,"13.0":0.03133,"14.0":0.01077,"15.0":0.01077,"16.0":0.1077,"17.0":1.79856},I:{"0":0,"3":0,"4":0.00216,"2.1":0,"2.2":0.00108,"2.3":0.00108,"4.1":0.00973,"4.2-4.3":0.00973,"4.4":0,"4.4.3-4.4.4":0.04975},A:{"7":0.00632,"8":0.02529,"9":0.01265,"10":0.10749,"11":0.39835,_:"6 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01471},H:{"0":0.16013},L:{"0":13.36407},S:{"2.5":0},R:{_:"0"},M:{"0":0.41182}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DM.js index 8dcd7e9e7d2736..9e7c8a23d828b8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DM.js @@ -1 +1 @@ -module.exports={C:{"68":0.01016,"77":0.0762,"79":0.02032,"88":0.00508,"95":0.00508,"96":0.30988,"97":0.42164,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 78 80 81 82 83 84 85 86 87 89 90 91 92 93 94 98 99 3.5 3.6"},D:{"38":0.1016,"49":0.01016,"58":0.01016,"63":0.01016,"65":0.01016,"69":0.51816,"74":0.00508,"75":0.14732,"76":1.78816,"77":0.18796,"78":0.01524,"79":0.06604,"81":0.13208,"83":0.03556,"85":0.01524,"87":0.01524,"88":0.06096,"89":0.00508,"90":0.51816,"91":0.03556,"92":0.04064,"93":0.11176,"94":0.06096,"95":0.03048,"96":0.41656,"97":8.68172,"98":19.15668,"99":0.26924,"100":0.02032,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 64 66 67 68 70 71 72 73 80 84 86 101"},F:{"82":0.05588,"83":0.22352,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.0254,"18":0.02032,"92":1.45288,"94":0.01016,"95":0.01016,"96":0.09144,"97":1.38176,"98":4.54152,_:"12 13 14 15 17 79 80 81 83 84 85 86 87 88 89 90 91 93"},E:{"4":0,"14":0.10668,"15":0.03556,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 11.1","10.1":0.00508,"12.1":0.01524,"13.1":0.1016,"14.1":0.42672,"15.1":0.23368,"15.2-15.3":1.18872,"15.4":0.01016},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00124,"6.0-6.1":0.00124,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.07302,"10.0-10.2":0,"10.3":0.0328,"11.0-11.2":0.013,"11.3-11.4":0.0099,"12.0-12.1":0.00124,"12.2-12.5":0.2271,"13.0-13.1":0.00186,"13.2":0.00309,"13.3":0.03651,"13.4-13.7":0.02228,"14.0-14.4":0.11943,"14.5-14.8":0.99258,"15.0-15.1":1.34654,"15.2-15.3":3.30261,"15.4":0.00619},P:{"4":0.08541,"5.0-5.4":0.01013,"6.2-6.4":0.04052,"7.2-7.4":0.10676,"8.2":0.02051,"9.2":0.01068,"10.1":0.06153,"11.1-11.2":0.03203,"12.0":0.13168,"13.0":0.10676,"14.0":0.03203,"15.0":0.04271,"16.0":3.92887},I:{"0":0,"3":0,"4":0.02104,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.01403,"4.4":0,"4.4.3-4.4.4":0.11748},A:{"11":0.12192,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.14763},Q:{"10.4":0},O:{"0":0.21652},H:{"0":0.06522},L:{"0":37.02149},S:{"2.5":0}}; +module.exports={C:{"52":0.00519,"78":0.01039,"88":0.00519,"100":0.2233,"101":0.91916,"102":0.06751,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98 99 103 104 3.5 3.6"},D:{"49":0.02597,"50":0.01039,"53":0.00519,"63":0.02597,"67":0.02597,"69":0.04674,"73":0.02077,"74":0.00519,"75":0.0727,"76":1.00225,"77":0.2233,"79":0.03635,"80":0.01558,"83":0.01039,"84":0.00519,"85":0.02597,"87":0.01039,"88":0.01039,"89":0.01558,"90":0.05193,"91":0.02597,"92":0.01558,"93":0.0779,"94":0.01558,"95":0.00519,"96":0.03635,"97":0.19733,"98":0.12463,"99":0.10905,"100":1.25671,"101":3.38064,"102":23.30618,"103":2.70555,"104":0.01039,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 51 52 54 55 56 57 58 59 60 61 62 64 65 66 68 70 71 72 78 81 86 105 106"},F:{"65":0.00519,"86":0.05712,"87":0.64913,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01558,"18":0.00519,"85":0.01558,"92":1.95257,"99":0.00519,"100":0.16098,"101":1.01783,"102":3.713,"103":0.55046,_:"13 14 15 16 17 79 80 81 83 84 86 87 88 89 90 91 93 94 95 96 97 98"},E:{"4":0,"13":0.01039,"14":0.0779,"15":0.00519,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 11.1 12.1 16.0","10.1":0.01039,"13.1":0.16618,"14.1":0.18176,"15.1":0.03635,"15.2-15.3":0.02597,"15.4":0.18176,"15.5":1.23074},G:{"8":0,"3.2":0.00135,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00135,"6.0-6.1":0.00202,"7.0-7.1":0.01883,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00336,"10.0-10.2":0.00202,"10.3":0.02354,"11.0-11.2":0.00135,"11.3-11.4":0.00202,"12.0-12.1":0.00471,"12.2-12.5":0.39079,"13.0-13.1":0.01076,"13.2":0.01278,"13.3":0.01412,"13.4-13.7":0.0834,"14.0-14.4":0.11771,"14.5-14.8":0.51387,"15.0-15.1":0.59257,"15.2-15.3":0.2334,"15.4":0.99681,"15.5":3.57828,"16.0":0.00942},P:{"4":0.21503,"5.0-5.4":0.02013,"6.2-6.4":0.0302,"7.2-7.4":0.11826,"8.2":0.06207,"9.2":0.01075,"10.1":0.01007,"11.1-11.2":0.19352,"12.0":0.0302,"13.0":0.09676,"14.0":0.0215,"15.0":0.09676,"16.0":0.22578,"17.0":3.42965},I:{"0":0,"3":0,"4":0.00697,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0209,"4.2-4.3":0.00232,"4.4":0,"4.4.3-4.4.4":0.17651},A:{"11":0.02597,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.12018},H:{"0":0.19114},L:{"0":43.64498},S:{"2.5":0},R:{_:"0"},M:{"0":0.17786}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DO.js index ebe58eef3ccdb8..51bb7510a7b2bb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DO.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DO.js @@ -1 +1 @@ -module.exports={C:{"44":0.00789,"52":0.01184,"66":0.00395,"73":0.02368,"78":0.01184,"79":0.00789,"80":0.01184,"81":0.01974,"84":0.00789,"87":0.00789,"88":0.01579,"89":0.00789,"90":0.01184,"91":0.01184,"92":0.00789,"93":0.00395,"94":0.00789,"95":0.01974,"96":0.41838,"97":0.68678,"98":0.00789,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 74 75 76 77 82 83 85 86 99 3.5 3.6"},D:{"38":0.01974,"39":0.00395,"47":0.01184,"48":0.01579,"49":0.1342,"55":0.00395,"63":0.00789,"65":0.02368,"67":0.00395,"70":0.00789,"72":0.01184,"74":0.00789,"75":0.01184,"76":0.03158,"77":0.00789,"78":0.01184,"79":0.04736,"80":0.03552,"81":0.01974,"83":0.07105,"84":0.0671,"85":0.08289,"86":0.09473,"87":0.16183,"88":0.03947,"89":0.0671,"90":0.0671,"91":0.07894,"92":0.05921,"93":0.50522,"94":0.05131,"95":0.08289,"96":0.48548,"97":7.7006,"98":17.8878,"99":0.00395,"100":0.01184,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 50 51 52 53 54 56 57 58 59 60 61 62 64 66 68 69 71 73 101"},F:{"69":0.00789,"71":0.00395,"82":0.34734,"83":1.01833,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00395,"17":0.00789,"18":0.15788,"84":0.00395,"87":0.01184,"89":0.01579,"90":0.01184,"92":0.01579,"93":0.00395,"94":0.00395,"95":0.01579,"96":0.03158,"97":0.59994,"98":2.22611,_:"12 13 14 16 79 80 81 83 85 86 88 91"},E:{"4":0,"12":0.00395,"13":0.01579,"14":0.21709,"15":0.13025,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1","5.1":0.03158,"10.1":0.00789,"11.1":0.01184,"12.1":0.03552,"13.1":0.15393,"14.1":0.42628,"15.1":0.22893,"15.2-15.3":0.43812,"15.4":0.00789},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00282,"6.0-6.1":0.00282,"7.0-7.1":0.04231,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05642,"10.0-10.2":0.00564,"10.3":0.05642,"11.0-11.2":0.01692,"11.3-11.4":0.02398,"12.0-12.1":0.02116,"12.2-12.5":0.60788,"13.0-13.1":0.02962,"13.2":0.00846,"13.3":0.08039,"13.4-13.7":0.23836,"14.0-14.4":0.90407,"14.5-14.8":3.23827,"15.0-15.1":2.14239,"15.2-15.3":6.55694,"15.4":0.06629},P:{"4":0.14025,"5.0-5.4":0.01013,"6.2-6.4":0.04052,"7.2-7.4":0.0971,"8.2":0.02051,"9.2":0.01079,"10.1":0.06153,"11.1-11.2":0.19419,"12.0":0.13168,"13.0":0.05394,"14.0":0.05394,"15.0":0.07552,"16.0":1.1112},I:{"0":0,"3":0,"4":0.0009,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00269,"4.2-4.3":0.00359,"4.4":0,"4.4.3-4.4.4":0.04124},A:{"6":0.00448,"7":0.00448,"8":0.03136,"9":0.01344,"10":0.01792,"11":0.09409,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.28444},Q:{"10.4":0},O:{"0":0.06657},H:{"0":0.22346},L:{"0":34.93743},S:{"2.5":0}}; +module.exports={C:{"52":0.01212,"72":0.00404,"73":0.04039,"77":0.00404,"78":0.0202,"79":0.00808,"81":0.00404,"82":0.01212,"83":0.00808,"84":0.01616,"87":0.00808,"88":0.01212,"89":0.00808,"90":0.01616,"91":0.01616,"94":0.00404,"95":0.00404,"99":0.03231,"100":0.13329,"101":1.01379,"102":0.04443,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 74 75 76 80 85 86 92 93 96 97 98 103 104 3.5 3.6"},D:{"47":0.00808,"48":0.01212,"49":0.10905,"63":0.01212,"64":0.01616,"65":0.01616,"67":0.00808,"68":0.00808,"70":0.00808,"72":0.00808,"73":0.00808,"74":0.01212,"75":0.01212,"76":0.02827,"79":0.06059,"80":0.0202,"81":0.02827,"83":0.04443,"84":0.10501,"85":0.08078,"86":0.14944,"87":0.16964,"88":0.0202,"89":0.0727,"90":0.04039,"91":0.04847,"92":0.03635,"93":0.04847,"94":0.03231,"95":0.04443,"96":0.09694,"97":0.08078,"98":0.07674,"99":0.12521,"100":0.4039,"101":1.48635,"102":22.34779,"103":2.17298,"104":0.01212,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 50 51 52 53 54 55 56 57 58 59 60 61 62 66 69 71 77 78 105 106"},F:{"68":0.00404,"72":0.00808,"85":0.02827,"86":0.57354,"87":0.93301,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00404,"17":0.00404,"18":0.12521,"83":0.01212,"84":0.0202,"85":0.01212,"87":0.01616,"89":0.01212,"90":0.00404,"92":0.0202,"96":0.00404,"97":0.00808,"98":0.00404,"99":0.01212,"100":0.0202,"101":0.32716,"102":2.39917,"103":0.52103,_:"13 14 15 16 79 80 81 86 88 91 93 94 95"},E:{"4":0,"13":0.01616,"14":0.16156,"15":0.05655,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 16.0","5.1":0.00808,"10.1":0.00808,"11.1":0.00808,"12.1":0.01616,"13.1":0.13329,"14.1":0.28677,"15.1":0.0727,"15.2-15.3":0.06059,"15.4":0.33524,"15.5":0.78761},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00321,"6.0-6.1":0,"7.0-7.1":0.04982,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04178,"10.0-10.2":0.00482,"10.3":0.04821,"11.0-11.2":0.00643,"11.3-11.4":0.01286,"12.0-12.1":0.0241,"12.2-12.5":0.48851,"13.0-13.1":0.04339,"13.2":0.01286,"13.3":0.07392,"13.4-13.7":0.22658,"14.0-14.4":0.59297,"14.5-14.8":1.68409,"15.0-15.1":0.40817,"15.2-15.3":0.79544,"15.4":2.32044,"15.5":9.08412,"16.0":0.08356},P:{"4":0.1169,"5.0-5.4":0.02013,"6.2-6.4":0.0302,"7.2-7.4":0.10628,"8.2":0.06207,"9.2":0.02126,"10.1":0.01007,"11.1-11.2":0.15941,"12.0":0.0302,"13.0":0.03188,"14.0":0.04251,"15.0":0.04251,"16.0":0.23381,"17.0":1.10527},I:{"0":0,"3":0,"4":0.00163,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00327,"4.2-4.3":0.01144,"4.4":0,"4.4.3-4.4.4":0.08499},A:{"8":0.00898,"11":0.0718,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.11922},H:{"0":0.21445},L:{"0":39.14135},S:{"2.5":0},R:{_:"0"},M:{"0":0.39939}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DZ.js index 4b5928d7c0afec..2af8a0f3d73743 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DZ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DZ.js @@ -1 +1 @@ -module.exports={C:{"15":0.01468,"29":0.00367,"30":0.00734,"32":0.00367,"33":0.00367,"34":0.00367,"35":0.00367,"36":0.00367,"37":0.00367,"38":0.01101,"39":0.00734,"40":0.00367,"41":0.00367,"43":0.01101,"47":0.01836,"48":0.00734,"52":0.18355,"56":0.00734,"68":0.00367,"72":0.02203,"77":0.00367,"78":0.01468,"79":0.00734,"80":0.00367,"81":0.00367,"83":0.00734,"84":0.07709,"86":0.00367,"87":0.00734,"88":0.01468,"89":0.02937,"90":0.00367,"91":0.05139,"92":0.00734,"93":0.00734,"94":0.02203,"95":0.04405,"96":0.88471,"97":1.68866,"98":0.0257,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 31 42 44 45 46 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 82 85 99 3.5 3.6"},D:{"11":0.00367,"18":0.00734,"22":0.00734,"25":0.00367,"26":0.01101,"30":0.00734,"31":0.01101,"32":0.00734,"33":0.03304,"34":0.00734,"37":0.00367,"38":0.01468,"39":0.02203,"40":0.02937,"42":0.01101,"43":0.24596,"46":0.00367,"47":0.01101,"48":0.00367,"49":0.20191,"50":0.02937,"51":0.01101,"52":0.01468,"53":0.00734,"54":0.00734,"55":0.00734,"56":0.04405,"57":0.00367,"58":0.02203,"60":0.01101,"61":0.02937,"62":0.01101,"63":0.04772,"64":0.01468,"65":0.01101,"66":0.00734,"67":0.01836,"68":0.01468,"69":0.03304,"70":0.02203,"71":0.01468,"72":0.01836,"73":0.01101,"74":0.01468,"75":0.01101,"76":0.01468,"77":0.01468,"78":0.02203,"79":0.08443,"80":0.02937,"81":0.09912,"83":0.04405,"84":0.11747,"85":0.04405,"86":0.12114,"87":0.26431,"88":0.05139,"89":0.06975,"90":0.04405,"91":0.0881,"92":0.09912,"93":0.57268,"94":0.07342,"95":0.18722,"96":0.54331,"97":5.83322,"98":15.70454,"99":0.00734,"100":0.02203,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 19 20 21 23 24 27 28 29 35 36 41 44 45 59 101"},F:{"25":0.00734,"28":0.01468,"77":0.00367,"79":0.00734,"80":0.00734,"81":0.00367,"82":0.20191,"83":1.33257,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00734,"13":0.00734,"14":0.00367,"15":0.00734,"16":0.00734,"17":0.00734,"18":0.01836,"84":0.00734,"85":0.00734,"89":0.00734,"90":0.00367,"92":0.01101,"93":0.00367,"94":0.00734,"95":0.02203,"96":0.02937,"97":0.28634,"98":1.03522,_:"79 80 81 83 86 87 88 91"},E:{"4":0,"11":0.01836,"13":0.03671,"14":0.01836,"15":0.01101,_:"0 5 6 7 8 9 10 12 3.1 3.2 6.1 7.1 9.1 11.1 15.4","5.1":0.01101,"10.1":0.00367,"12.1":0.00367,"13.1":0.02203,"14.1":0.04038,"15.1":0.04772,"15.2-15.3":0.0881},G:{"8":0.00044,"3.2":0.00067,"4.0-4.1":0.00044,"4.2-4.3":0.002,"5.0-5.1":0.00933,"6.0-6.1":0.00244,"7.0-7.1":0.06443,"8.1-8.4":0.004,"9.0-9.2":0.00222,"9.3":0.07887,"10.0-10.2":0.00156,"10.3":0.04732,"11.0-11.2":0.00889,"11.3-11.4":0.00955,"12.0-12.1":0.00689,"12.2-12.5":0.1744,"13.0-13.1":0.00533,"13.2":0.00289,"13.3":0.02488,"13.4-13.7":0.09531,"14.0-14.4":0.15685,"14.5-14.8":0.33814,"15.0-15.1":0.35303,"15.2-15.3":0.82336,"15.4":0.00822},P:{"4":0.25823,"5.0-5.4":0.35318,"6.2-6.4":0.02066,"7.2-7.4":0.15494,"8.2":0.01248,"9.2":0.0723,"10.1":0.02066,"11.1-11.2":0.14461,"12.0":0.05165,"13.0":0.18592,"14.0":0.15494,"15.0":0.15494,"16.0":1.16719},I:{"0":0,"3":0,"4":0.00112,"2.1":0,"2.2":0,"2.3":0.00084,"4.1":0.00224,"4.2-4.3":0.00813,"4.4":0,"4.4.3-4.4.4":0.06362},A:{"8":0.01496,"9":0.01496,"11":0.16831,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.10759},Q:{"10.4":0.01899},O:{"0":0.37974},H:{"0":0.5153},L:{"0":60.21848},S:{"2.5":0}}; +module.exports={C:{"15":0.04167,"34":0.00379,"35":0.00379,"38":0.00379,"39":0.00758,"41":0.00379,"43":0.00758,"44":0.00379,"47":0.01515,"48":0.02273,"52":0.24243,"56":0.00758,"60":0.00379,"67":0.00379,"68":0.00758,"70":0.00758,"72":0.01136,"78":0.01515,"79":0.00379,"81":0.00379,"82":0.00379,"83":0.00758,"84":0.01136,"87":0.00379,"88":0.00758,"89":0.02652,"91":0.04167,"92":0.00379,"93":0.00379,"94":0.01136,"95":0.01515,"96":0.01136,"97":0.01136,"98":0.01515,"99":0.08712,"100":0.28789,"101":2.35235,"102":0.10606,"103":0.00379,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 36 37 40 42 45 46 49 50 51 53 54 55 57 58 59 61 62 63 64 65 66 69 71 73 74 75 76 77 80 85 86 90 104 3.5 3.6"},D:{"22":0.00758,"26":0.00758,"30":0.00758,"32":0.00758,"33":0.01515,"34":0.00758,"38":0.01515,"39":0.01515,"40":0.01515,"42":0.00758,"43":0.13637,"47":0.00758,"48":0.00379,"49":0.17804,"50":0.01515,"51":0.00758,"52":0.00379,"53":0.00379,"55":0.00379,"56":0.03409,"57":0.00379,"58":0.01515,"59":0.00379,"60":0.01136,"61":0.01136,"62":0.00758,"63":0.0303,"64":0.02273,"65":0.01136,"66":0.00379,"67":0.01894,"68":0.01515,"69":0.02273,"70":0.01136,"71":0.02273,"72":0.01515,"73":0.01136,"74":0.02273,"75":0.01136,"76":0.01136,"77":0.01894,"78":0.01515,"79":0.07955,"80":0.03409,"81":0.06818,"83":0.04167,"84":0.05303,"85":0.04167,"86":0.12879,"87":0.11743,"88":0.03788,"89":0.05682,"90":0.04167,"91":0.06818,"92":0.06061,"93":0.04546,"94":0.04546,"95":0.10228,"96":0.12122,"97":0.12122,"98":0.18561,"99":0.14016,"100":0.27274,"101":1.10231,"102":20.41353,"103":2.03037,"104":0.02652,"105":0.00758,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 31 35 36 37 41 44 45 46 54 106"},F:{"28":0.01136,"77":0.00379,"79":0.02273,"80":0.00758,"82":0.01515,"83":0.00379,"84":0.03409,"85":0.14016,"86":0.42804,"87":1.18564,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.01136},B:{"12":0.00758,"15":0.00379,"16":0.01515,"17":0.00758,"18":0.01894,"84":0.01136,"85":0.00379,"89":0.00758,"90":0.00758,"91":0.00379,"92":0.02273,"94":0.00379,"95":0.00379,"96":0.00758,"97":0.01136,"98":0.00758,"99":0.01894,"100":0.01894,"101":0.26516,"102":1.3902,"103":0.30304,_:"13 14 79 80 81 83 86 87 88 93"},E:{"4":0,"13":0.01894,"14":0.01894,"15":0.01136,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 16.0","5.1":0.00379,"11.1":0.00379,"12.1":0.00758,"13.1":0.02273,"14.1":0.0303,"15.1":0.01894,"15.2-15.3":0.02273,"15.4":0.14773,"15.5":0.23107},G:{"8":0.00035,"3.2":0.00035,"4.0-4.1":0.00035,"4.2-4.3":0.00419,"5.0-5.1":0.01048,"6.0-6.1":0.00279,"7.0-7.1":0.05066,"8.1-8.4":0.0014,"9.0-9.2":0.00175,"9.3":0.07581,"10.0-10.2":0.00105,"10.3":0.03284,"11.0-11.2":0.00559,"11.3-11.4":0.01258,"12.0-12.1":0.00769,"12.2-12.5":0.17294,"13.0-13.1":0.00838,"13.2":0.00454,"13.3":0.04472,"13.4-13.7":0.05485,"14.0-14.4":0.13975,"14.5-14.8":0.25015,"15.0-15.1":0.13416,"15.2-15.3":0.22674,"15.4":0.6984,"15.5":1.52048,"16.0":0.01572},P:{"4":0.13654,"5.0-5.4":0.24229,"6.2-6.4":0.0105,"7.2-7.4":0.13654,"8.2":0.03029,"9.2":0.04201,"10.1":0.02245,"11.1-11.2":0.07352,"12.0":0.02101,"13.0":0.09452,"14.0":0.08402,"15.0":0.05251,"16.0":0.26257,"17.0":1.1238},I:{"0":0,"3":0,"4":0.00111,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00222,"4.2-4.3":0.00666,"4.4":0,"4.4.3-4.4.4":0.05214},A:{"8":0.01558,"9":0.01558,"11":0.1052,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.52802},H:{"0":0.63516},L:{"0":57.65947},S:{"2.5":0},R:{_:"0"},M:{"0":0.13666}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EC.js index 78789effe84e12..67f712775e7dd0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EC.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EC.js @@ -1 +1 @@ -module.exports={C:{"52":0.02281,"56":0.00456,"58":0.00456,"60":0.00456,"61":0.00456,"66":0.00912,"70":0.00912,"72":0.01369,"73":0.01369,"78":0.05474,"80":0.00456,"81":0.00912,"82":0.00456,"83":0.00456,"84":0.01369,"87":0.00456,"88":0.04106,"89":0.01825,"90":0.01369,"91":0.04106,"92":0.01825,"93":0.00912,"94":0.01825,"95":0.04562,"96":1.0447,"97":1.76093,"98":0.00456,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 59 62 63 64 65 67 68 69 71 74 75 76 77 79 85 86 99 3.5 3.6"},D:{"22":0.00912,"26":0.00456,"38":0.04562,"42":0.01825,"47":0.03193,"49":0.02737,"53":0.01825,"55":0.01825,"56":0.00456,"63":0.00912,"65":0.01369,"66":0.00912,"67":0.00912,"68":0.00456,"70":0.00912,"71":0.00912,"72":0.00456,"74":0.01369,"75":0.01369,"76":0.01825,"77":0.00912,"78":0.01369,"79":0.14598,"80":0.01825,"81":0.01369,"83":0.01825,"84":0.02281,"85":0.02281,"86":0.04106,"87":0.05931,"88":0.01825,"89":0.02737,"90":0.02737,"91":0.52007,"92":0.05018,"93":0.22354,"94":0.04106,"95":0.05474,"96":0.45164,"97":9.34754,"98":23.09284,"99":0.00912,"100":0.01369,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 34 35 36 37 39 40 41 43 44 45 46 48 50 51 52 54 57 58 59 60 61 62 64 69 73 101"},F:{"29":0.00912,"80":0.00456,"82":0.44708,"83":1.44159,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00456,"18":0.01825,"89":0.00456,"92":0.01369,"93":0.00456,"95":0.00456,"96":0.01825,"97":0.59306,"98":2.12589,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 90 91 94"},E:{"4":0,"13":0.01369,"14":0.05931,"15":0.09124,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 15.4","5.1":0.0365,"11.1":0.00912,"12.1":0.01825,"13.1":0.10036,"14.1":0.23722,"15.1":0.12774,"15.2-15.3":0.26003},G:{"8":0.00041,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01641,"6.0-6.1":0.00615,"7.0-7.1":0.0041,"8.1-8.4":0,"9.0-9.2":0.00082,"9.3":0.02092,"10.0-10.2":0,"10.3":0.02215,"11.0-11.2":0.0041,"11.3-11.4":0.03077,"12.0-12.1":0.00369,"12.2-12.5":0.21291,"13.0-13.1":0.00574,"13.2":0.00287,"13.3":0.01231,"13.4-13.7":0.04923,"14.0-14.4":0.1522,"14.5-14.8":0.72775,"15.0-15.1":0.58417,"15.2-15.3":2.22878,"15.4":0.01477},P:{"4":0.22618,"5.0-5.4":0.01013,"6.2-6.4":0.04052,"7.2-7.4":0.10281,"8.2":0.02051,"9.2":0.01079,"10.1":0.06153,"11.1-11.2":0.06168,"12.0":0.03084,"13.0":0.09253,"14.0":0.08225,"15.0":0.10281,"16.0":1.36735},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00564,"4.2-4.3":0.00423,"4.4":0,"4.4.3-4.4.4":0.06626},A:{"11":0.06843,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.11964},Q:{"10.4":0},O:{"0":0.02719},H:{"0":0.08752},L:{"0":32.09561},S:{"2.5":0}}; +module.exports={C:{"52":0.02112,"66":0.01056,"72":0.01056,"73":0.01584,"78":0.04225,"84":0.01584,"86":0.00528,"88":0.03697,"89":0.01584,"90":0.01584,"91":0.04225,"92":0.01056,"93":0.00528,"94":0.01056,"95":0.01056,"96":0.01584,"97":0.02641,"98":0.02641,"99":0.07393,"100":0.36439,"101":2.88343,"102":0.12146,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 74 75 76 77 79 80 81 82 83 85 87 103 104 3.5 3.6"},D:{"22":0.01056,"38":0.02112,"47":0.02641,"49":0.02112,"53":0.01056,"55":0.02112,"56":0.01056,"63":0.01056,"65":0.01056,"66":0.01056,"67":0.01056,"68":0.01056,"73":0.00528,"74":0.01584,"75":0.01584,"76":0.01584,"77":0.01056,"78":0.01056,"79":0.16899,"80":0.02112,"81":0.02112,"83":0.02112,"84":0.01056,"85":0.02112,"86":0.04225,"87":0.09506,"88":0.01584,"89":0.02641,"90":0.01584,"91":0.25877,"92":0.03169,"93":0.02112,"94":0.05809,"95":0.02641,"96":0.13203,"97":0.17955,"98":0.16899,"99":0.13203,"100":0.29574,"101":1.58958,"102":32.8531,"103":3.28478,"104":0.01056,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 57 58 59 60 61 62 64 69 70 71 72 105 106"},F:{"28":0.00528,"85":0.03169,"86":0.82384,"87":1.30969,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01056,"92":0.01056,"98":0.01056,"99":0.01056,"100":0.02112,"101":0.29574,"102":2.48207,"103":0.5281,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97"},E:{"4":0,"13":0.00528,"14":0.0845,"15":0.03697,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 16.0","5.1":0.01056,"11.1":0.01056,"12.1":0.02112,"13.1":0.10562,"14.1":0.18484,"15.1":0.04753,"15.2-15.3":0.05809,"15.4":0.23765,"15.5":0.54922},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01324,"6.0-6.1":0.01489,"7.0-7.1":0.00276,"8.1-8.4":0,"9.0-9.2":0.0011,"9.3":0.01986,"10.0-10.2":0,"10.3":0.02262,"11.0-11.2":0.00221,"11.3-11.4":0.00441,"12.0-12.1":0.00386,"12.2-12.5":0.2361,"13.0-13.1":0.00276,"13.2":0.00496,"13.3":0.00993,"13.4-13.7":0.04303,"14.0-14.4":0.13239,"14.5-14.8":0.40932,"15.0-15.1":0.11364,"15.2-15.3":0.19528,"15.4":0.71217,"15.5":3.53108,"16.0":0.02317},P:{"4":0.22976,"5.0-5.4":0.02013,"6.2-6.4":0.0302,"7.2-7.4":0.12533,"8.2":0.06207,"9.2":0.02126,"10.1":0.01007,"11.1-11.2":0.05222,"12.0":0.01044,"13.0":0.06266,"14.0":0.04178,"15.0":0.04178,"16.0":0.22976,"17.0":1.51435},I:{"0":0,"3":0,"4":0.00199,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00199,"4.2-4.3":0.00298,"4.4":0,"4.4.3-4.4.4":0.04968},A:{"11":0.05809,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02832},H:{"0":0.11171},L:{"0":38.90432},S:{"2.5":0},R:{_:"0"},M:{"0":0.16048}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EE.js index bafa9959fae123..31ca7ed3326001 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EE.js @@ -1 +1 @@ -module.exports={C:{"52":0.04458,"55":0.00637,"68":0.08915,"72":0.0191,"78":0.02547,"81":0.03821,"87":0.26746,"88":0.01274,"89":0.00637,"90":0.00637,"91":0.10826,"92":0.00637,"93":0.02547,"94":0.03821,"95":0.07005,"96":1.66842,"97":2.49626,"98":0.0191,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 82 83 84 85 86 99 3.5 3.6"},D:{"34":0.00637,"49":0.04458,"60":0.02547,"64":0.00637,"69":0.9552,"74":0.01274,"75":0.01274,"76":0.01274,"78":0.00637,"79":0.04458,"80":0.0191,"81":0.00637,"83":0.04458,"84":0.04458,"85":0.0191,"86":0.05731,"87":0.03821,"88":0.06368,"89":0.03821,"90":0.03184,"91":2.89107,"92":0.07642,"93":0.44576,"94":0.08278,"95":0.24835,"96":0.63043,"97":11.85722,"98":25.31917,"99":0.01274,"100":0.00637,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 61 62 63 65 66 67 68 70 71 72 73 77 101"},F:{"36":0.03184,"46":0.00637,"72":0.01274,"77":0.01274,"78":0.00637,"79":0.01274,"80":0.01274,"81":0.01274,"82":0.73869,"83":4.58496,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00637,"85":0.01274,"88":0.01274,"89":0.01274,"90":0.00637,"92":0.01274,"93":0.00637,"94":0.00637,"95":0.01274,"96":0.03821,"97":0.98067,"98":3.30499,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 91"},E:{"4":0,"13":0.05731,"14":0.35661,"15":0.24198,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.0191,"12.1":0.06368,"13.1":0.32477,"14.1":0.85968,"15.1":0.50307,"15.2-15.3":0.98704,"15.4":0.0191},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00118,"6.0-6.1":0,"7.0-7.1":0.00118,"8.1-8.4":0.00236,"9.0-9.2":0,"9.3":0.0165,"10.0-10.2":0.0106,"10.3":0.15082,"11.0-11.2":0.00707,"11.3-11.4":0.00589,"12.0-12.1":0.00825,"12.2-12.5":0.22034,"13.0-13.1":0.00943,"13.2":0.00353,"13.3":0.02239,"13.4-13.7":0.11547,"14.0-14.4":0.5267,"14.5-14.8":1.88526,"15.0-15.1":1.92886,"15.2-15.3":6.77752,"15.4":0.08484},P:{"4":0.03326,"5.0-5.4":0.0307,"6.2-6.4":0.05116,"7.2-7.4":0.29673,"8.2":0.0104,"9.2":0.06139,"10.1":0.01109,"11.1-11.2":0.03326,"12.0":0.02217,"13.0":0.06652,"14.0":0.11086,"15.0":0.08869,"16.0":2.42793},I:{"0":0,"3":0,"4":0.00119,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00079,"4.2-4.3":0.00278,"4.4":0,"4.4.3-4.4.4":0.02066},A:{"8":0.01987,"11":0.31127,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.3197},Q:{"10.4":0},O:{"0":0.03633},H:{"0":0.25796},L:{"0":20.91212},S:{"2.5":0}}; +module.exports={C:{"52":0.03656,"65":0.00609,"66":0.00609,"68":0.01219,"69":0.01828,"73":0.01828,"76":0.00609,"78":0.03047,"81":0.01219,"82":0.01219,"84":0.04874,"86":0.00609,"87":0.23763,"90":0.00609,"91":0.13405,"92":0.00609,"94":0.04265,"96":0.03047,"97":0.01828,"98":0.01828,"99":0.02437,"100":0.49353,"101":3.4852,"102":0.15233,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 67 70 71 72 74 75 77 79 80 83 85 88 89 93 95 103 104 3.5 3.6"},D:{"39":0.01219,"49":0.02437,"56":0.00609,"58":0.01219,"60":0.04265,"67":0.01219,"69":1.33437,"74":0.01828,"76":0.00609,"79":0.06093,"80":0.01828,"81":0.00609,"83":0.01219,"84":0.04874,"85":0.01828,"86":0.04265,"87":0.04265,"88":0.01828,"89":0.03047,"90":0.06702,"91":2.46767,"92":0.03047,"93":0.01828,"94":0.0853,"95":0.03047,"96":0.06093,"97":0.0853,"98":0.14623,"99":0.36558,"100":0.59102,"101":2.43111,"102":30.15426,"103":2.58343,"104":0.01219,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 59 61 62 63 64 65 66 68 70 71 72 73 75 77 78 105 106"},F:{"36":0.03047,"82":0.00609,"84":0.01219,"85":0.02437,"86":1.048,"87":3.77766,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01219,"85":0.00609,"88":0.01219,"92":0.00609,"94":0.01828,"96":0.00609,"97":0.01219,"98":0.01219,"99":0.01219,"100":0.01828,"101":0.49353,"102":2.97948,"103":0.65804,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 89 90 91 93 95"},E:{"4":0,"13":0.06702,"14":0.15233,"15":0.06702,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 16.0","5.1":0.00609,"10.1":0.00609,"11.1":0.01219,"12.1":0.03656,"13.1":0.18888,"14.1":0.48744,"15.1":0.12186,"15.2-15.3":0.15233,"15.4":0.65195,"15.5":1.58418},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00866,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01236,"10.0-10.2":0.00742,"10.3":0.18547,"11.0-11.2":0.00618,"11.3-11.4":0.00618,"12.0-12.1":0.00247,"12.2-12.5":0.19165,"13.0-13.1":0.00866,"13.2":0.00742,"13.3":0.01855,"13.4-13.7":0.12612,"14.0-14.4":0.32024,"14.5-14.8":0.90632,"15.0-15.1":0.32271,"15.2-15.3":0.6343,"15.4":2.08713,"15.5":7.41995,"16.0":0.04699},P:{"4":0.07349,"5.0-5.4":0.04078,"6.2-6.4":0.10194,"7.2-7.4":0.65242,"8.2":0.06207,"9.2":0.09175,"10.1":0.0105,"11.1-11.2":0.0315,"12.0":0.0105,"13.0":0.042,"14.0":0.08399,"15.0":0.0315,"16.0":0.26248,"17.0":2.00532},I:{"0":0,"3":0,"4":0.00278,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00069,"4.2-4.3":0.00208,"4.4":0,"4.4.3-4.4.4":0.0257},A:{"11":0.76772,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.00781},O:{"0":0.02735},H:{"0":0.29961},L:{"0":23.77437},S:{"2.5":0},R:{_:"0"},M:{"0":0.28912}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EG.js index 7d90922b39a33c..22b3af762ee3b2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EG.js @@ -1 +1 @@ -module.exports={C:{"52":0.03787,"84":0.01082,"91":0.01623,"95":0.01082,"96":14.65028,"97":31.03176,"98":0.01082,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 85 86 87 88 89 90 92 93 94 99 3.5 3.6"},D:{"33":0.00541,"40":0.01082,"43":0.1082,"49":0.02164,"79":0.06492,"80":0.01082,"81":0.00541,"83":0.00541,"84":0.00541,"85":0.00541,"86":0.02705,"87":0.01623,"88":0.01082,"89":0.02164,"90":0.01082,"91":0.01623,"92":0.03246,"93":0.01623,"94":0.01623,"95":0.02164,"96":0.12443,"97":1.68251,"98":4.4903,"100":0.00541,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 41 42 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 99 101"},F:{"64":0.01082,"72":0.01082,"73":0.01082,"79":0.01623,"80":0.01082,"81":0.01623,"82":0.03246,"83":0.01623,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 70 71 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00541,"96":0.01082,"97":0.1082,"98":0.43821,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95"},E:{"4":0,"14":0.01623,"15":0.01082,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 15.4","5.1":0.00541,"13.1":0.01623,"14.1":0.03787,"15.1":0.02164,"15.2-15.3":0.02705},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00098,"6.0-6.1":0.00293,"7.0-7.1":0.01027,"8.1-8.4":0.00147,"9.0-9.2":0.00293,"9.3":0.05133,"10.0-10.2":0.01467,"10.3":0.1315,"11.0-11.2":0.01662,"11.3-11.4":0.04106,"12.0-12.1":0.02786,"12.2-12.5":1.35456,"13.0-13.1":0.01467,"13.2":0.00831,"13.3":0.06648,"13.4-13.7":0.20189,"14.0-14.4":0.76649,"14.5-14.8":0.45462,"15.0-15.1":0.42871,"15.2-15.3":1.28564,"15.4":0.00538},P:{"4":0.18696,"5.0-5.4":0.01013,"6.2-6.4":0.04052,"7.2-7.4":0.09348,"8.2":0.02051,"9.2":0.02077,"10.1":0.06153,"11.1-11.2":0.10387,"12.0":0.02077,"13.0":0.11425,"14.0":0.11425,"15.0":0.10387,"16.0":1.05942},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00292,"4.2-4.3":0.00876,"4.4":0,"4.4.3-4.4.4":0.22241},A:{"11":0.03787,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.07344},Q:{"10.4":0},O:{"0":0.15606},H:{"0":0.21728},L:{"0":37.45262},S:{"2.5":0}}; +module.exports={C:{"40":0.00151,"43":0.00301,"44":0.00301,"47":0.00301,"48":0.00301,"49":0.00151,"50":0.00151,"52":0.06626,"55":0.00151,"56":0.00301,"72":0.00452,"78":0.00602,"80":0.00151,"84":0.00904,"88":0.00301,"89":0.00452,"91":0.01958,"92":0.00301,"94":0.00452,"95":0.00301,"96":0.00301,"97":0.00452,"98":0.00602,"99":0.0256,"100":0.10994,"101":0.97288,"102":0.04669,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 45 46 51 53 54 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 81 82 83 85 86 87 90 93 103 104 3.5 3.6"},D:{"25":0.00151,"26":0.00452,"31":0.00301,"33":0.01054,"34":0.00151,"38":0.00301,"40":0.01506,"43":0.17018,"46":0.00151,"47":0.00452,"49":0.02259,"53":0.00602,"55":0.00301,"58":0.00151,"60":0.00301,"62":0.00301,"63":0.00753,"64":0.00301,"65":0.00301,"67":0.00301,"68":0.00301,"69":0.00602,"70":0.00452,"71":0.00753,"72":0.00452,"73":0.00602,"74":0.01054,"75":0.00602,"76":0.01205,"77":0.00301,"78":0.00452,"79":0.06777,"80":0.01657,"81":0.01355,"83":0.01054,"84":0.01205,"85":0.01506,"86":0.04066,"87":0.0241,"88":0.01054,"89":0.03765,"90":0.01205,"91":0.02108,"92":0.03765,"93":0.01355,"94":0.01355,"95":0.01657,"96":0.04217,"97":0.04367,"98":0.08735,"99":0.05271,"100":0.10994,"101":0.48343,"102":8.91703,"103":0.73794,"104":0.00753,"105":0.00151,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 27 28 29 30 32 35 36 37 39 41 42 44 45 48 50 51 52 54 56 57 59 61 66 106"},F:{"28":0.00151,"51":0.00151,"52":0.00151,"56":0.00301,"63":0.00452,"64":0.01657,"66":0.00151,"68":0.00452,"69":0.00151,"70":0.00452,"71":0.00301,"72":0.01506,"73":0.01506,"74":0.00301,"75":0.00452,"76":0.00452,"77":0.00301,"78":0.00301,"79":0.01807,"80":0.01205,"81":0.02108,"82":0.02259,"83":0.01355,"84":0.02259,"85":0.02861,"86":0.02711,"87":0.01807,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 53 54 55 57 58 60 62 65 67 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00301,"13":0.00151,"15":0.00151,"16":0.00151,"17":0.00151,"18":0.00904,"84":0.00452,"89":0.00301,"90":0.00151,"92":0.00904,"96":0.00452,"97":0.00301,"98":0.00301,"99":0.00452,"100":0.00753,"101":0.12048,"102":0.78161,"103":0.14307,_:"14 79 80 81 83 85 86 87 88 91 93 94 95"},E:{"4":0,"13":0.00301,"14":0.01506,"15":0.00753,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 16.0","5.1":0.00753,"11.1":0.00301,"12.1":0.00301,"13.1":0.02259,"14.1":0.04066,"15.1":0.01054,"15.2-15.3":0.00753,"15.4":0.04066,"15.5":0.08735},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00063,"6.0-6.1":0.00315,"7.0-7.1":0.01322,"8.1-8.4":0.00063,"9.0-9.2":0.00755,"9.3":0.05288,"10.0-10.2":0.01133,"10.3":0.09758,"11.0-11.2":0.01133,"11.3-11.4":0.034,"12.0-12.1":0.03022,"12.2-12.5":1.31954,"13.0-13.1":0.01826,"13.2":0.0063,"13.3":0.04848,"13.4-13.7":0.14228,"14.0-14.4":0.56974,"14.5-14.8":0.37647,"15.0-15.1":0.14291,"15.2-15.3":0.27386,"15.4":0.81653,"15.5":2.2922,"16.0":0.01574},P:{"4":0.2882,"5.0-5.4":0.02013,"6.2-6.4":0.0302,"7.2-7.4":0.16469,"8.2":0.06207,"9.2":0.02059,"10.1":0.01007,"11.1-11.2":0.15439,"12.0":0.03088,"13.0":0.16469,"14.0":0.17498,"15.0":0.08234,"16.0":0.32937,"17.0":1.69832},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0059,"4.2-4.3":0.02123,"4.4":0,"4.4.3-4.4.4":0.31259},A:{"9":0.00301,"11":0.03313,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.4841},H:{"0":0.36183},L:{"0":74.75816},S:{"2.5":0},R:{_:"0"},M:{"0":0.11041}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ER.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ER.js index b83d2f4c875bf8..3dfd7531204473 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ER.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ER.js @@ -1 +1 @@ -module.exports={C:{"31":0.00252,"34":0.00504,"37":0.00755,"39":0.00252,"42":0.00504,"43":0.00755,"44":0.00504,"45":0.00504,"46":0.00504,"47":0.01007,"48":0.00504,"50":0.0277,"52":0.02518,"53":0.01007,"55":0.00252,"57":0.02014,"59":0.06043,"60":0.01007,"61":0.00755,"69":0.00504,"70":0.00504,"72":0.03273,"78":0.01007,"82":0.02014,"84":0.09568,"85":0.00252,"88":0.01511,"89":0.02266,"91":0.05288,"94":0.00755,"95":0.01511,"96":1.36476,"97":1.03238,"98":0.0705,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 35 36 38 40 41 49 51 54 56 58 62 63 64 65 66 67 68 71 73 74 75 76 77 79 80 81 83 86 87 90 92 93 99 3.5 3.6"},D:{"11":0.01007,"30":0.08058,"33":0.01007,"34":0.00504,"35":0.05036,"36":0.00252,"38":0.00252,"39":0.00755,"40":0.11835,"43":0.08058,"49":0.00755,"50":0.02014,"52":0.06295,"54":0.00252,"55":0.00755,"56":0.03273,"58":0.00755,"59":0.00252,"60":0.00504,"63":0.00755,"64":0.00504,"65":0.0277,"67":0.00504,"68":0.00252,"69":0.01259,"71":0.00504,"72":0.00252,"74":0.0277,"75":0.00504,"76":0.00252,"77":0.00252,"79":0.02266,"80":0.01763,"81":0.00504,"83":0.01511,"85":0.01259,"86":0.01259,"87":0.02014,"88":0.00504,"89":0.00504,"90":0.01763,"91":0.04281,"92":0.04281,"93":0.01259,"94":0.02518,"95":0.01511,"96":0.25684,"97":3.78959,"98":7.20652,"99":0.04281,"100":0.01259,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 37 41 42 44 45 46 47 48 51 53 57 61 62 66 70 73 78 84 101"},F:{"28":0.00252,"34":0.00252,"38":0.00252,"69":0.00504,"70":0.00252,"79":0.00504,"80":0.02266,"82":0.09568,"83":0.7,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 71 72 73 74 75 76 77 78 81 9.5-9.6 10.5 11.1 11.5 11.6 12.1","10.0-10.1":0,"10.6":0.00755},B:{"12":0.05791,"13":0.0277,"14":0.01511,"15":0.00755,"16":0.01511,"17":0.01259,"18":0.02266,"84":0.00504,"85":0.00504,"89":0.00755,"90":0.01511,"92":0.02518,"93":0.00252,"94":0.00504,"95":0.01511,"96":0.03273,"97":0.31979,"98":0.79065,_:"79 80 81 83 86 87 88 91"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 15.4","14.1":0.01259,"15.1":0.03273,"15.2-15.3":0.03777},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00131,"6.0-6.1":0,"7.0-7.1":0.08736,"8.1-8.4":0,"9.0-9.2":0.00879,"9.3":0.00636,"10.0-10.2":0.00037,"10.3":0.02114,"11.0-11.2":0.00299,"11.3-11.4":0.01328,"12.0-12.1":0.07539,"12.2-12.5":0.44167,"13.0-13.1":0.00711,"13.2":0.00037,"13.3":0.1375,"13.4-13.7":0.00673,"14.0-14.4":0.13469,"14.5-14.8":0.72527,"15.0-15.1":0.06098,"15.2-15.3":0.13824,"15.4":0.00094},P:{"4":0.32743,"5.0-5.4":0.0307,"6.2-6.4":0.05116,"7.2-7.4":0.29673,"8.2":0.0104,"9.2":0.06139,"10.1":0.01023,"11.1-11.2":0.12279,"12.0":0.03121,"13.0":0.05116,"14.0":0.08186,"15.0":0.10232,"16.0":0.75718},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00104,"4.2-4.3":0.02501,"4.4":0,"4.4.3-4.4.4":0.04128},A:{"11":0.0982,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.07482},Q:{"10.4":0},O:{"0":2.28201},H:{"0":9.48477},L:{"0":63.88741},S:{"2.5":0}}; +module.exports={C:{"31":0.00358,"34":0.00538,"35":0.0215,"38":0.01434,"39":0.00538,"41":0.00358,"42":0.00717,"43":0.00896,"47":0.01434,"52":0.00538,"57":0.03763,"58":0.00896,"59":0.00538,"60":0.00358,"68":0.00896,"72":0.00717,"78":0.00896,"83":0.00358,"88":0.08602,"89":0.07526,"94":0.01075,"96":0.00358,"97":0.00358,"98":0.00358,"99":0.01971,"100":0.11469,"101":1.53216,"102":0.10931,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 36 37 40 44 45 46 48 49 50 51 53 54 55 56 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 84 85 86 87 90 91 92 93 95 103 104 3.5 3.6"},D:{"11":0.00538,"30":0.00358,"31":0.00179,"40":0.00896,"43":0.04301,"44":0.00179,"50":0.00358,"51":0.00179,"54":0.00358,"57":0.03942,"63":0.00896,"65":0.00358,"67":0.01075,"68":0.01434,"69":0.03226,"70":0.01254,"71":0.01434,"73":0.00538,"75":0.00538,"79":0.01254,"80":0.0233,"81":0.01434,"83":0.00896,"85":0.00358,"86":0.02688,"87":0.03942,"88":0.00358,"90":0.00896,"91":0.01075,"92":0.00896,"93":0.00538,"94":0.00717,"95":0.01254,"96":0.08602,"97":0.01075,"98":0.31898,"99":0.04122,"100":0.25088,"101":1.04294,"102":5.76128,"103":0.56986,"104":0.01254,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 41 42 45 46 47 48 49 52 53 55 56 58 59 60 61 62 64 66 72 74 76 77 78 84 89 105 106"},F:{"29":0.00179,"40":0.00896,"69":0.00358,"76":0.00358,"77":0.00358,"78":0.00717,"82":0.01254,"83":0.00179,"84":0.00538,"85":0.01434,"86":0.02867,"87":1.02682,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.05734,"13":0.00538,"14":0.00896,"15":0.03405,"16":0.01254,"17":0.01075,"18":0.03405,"80":0.00538,"84":0.01075,"85":0.00896,"89":0.01434,"90":0.00538,"91":0.00717,"92":0.02867,"93":0.00538,"96":0.05018,"97":0.00538,"98":0.01434,"99":0.00538,"100":0.0233,"101":0.1792,"102":0.99277,"103":0.2007,_:"79 81 83 86 87 88 94 95"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 11.1 12.1 15.1 15.2-15.3 16.0","10.1":0.00179,"13.1":0.00179,"14.1":0.00358,"15.4":0.01971,"15.5":0.01254},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.03107,"8.1-8.4":0.00052,"9.0-9.2":0,"9.3":0.00413,"10.0-10.2":0.00645,"10.3":0.00413,"11.0-11.2":0.00567,"11.3-11.4":0.00052,"12.0-12.1":0.02269,"12.2-12.5":0.14038,"13.0-13.1":0.0018,"13.2":0.01018,"13.3":0.00322,"13.4-13.7":0.00619,"14.0-14.4":0.09397,"14.5-14.8":0.0504,"15.0-15.1":0.04589,"15.2-15.3":0.39342,"15.4":0.11073,"15.5":0.34444,"16.0":0.01302},P:{"4":0.97863,"5.0-5.4":0.04078,"6.2-6.4":0.10194,"7.2-7.4":0.65242,"8.2":0.06207,"9.2":0.09175,"10.1":0.01019,"11.1-11.2":0.12233,"12.0":0.03058,"13.0":0.06116,"14.0":0.07136,"15.0":0.05097,"16.0":0.5097,"17.0":1.32523},I:{"0":0,"3":0,"4":0.00012,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00037,"4.2-4.3":0.02249,"4.4":0,"4.4.3-4.4.4":0.0591},A:{"9":0.01254,"11":0.05555,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.5515},H:{"0":16.28182},L:{"0":61.41293},S:{"2.5":0},R:{_:"0"},M:{"0":0.06567}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ES.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ES.js index 8f61154d8b37d7..5cd98e77645984 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ES.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ES.js @@ -1 +1 @@ -module.exports={C:{"48":0.00455,"52":0.0773,"55":0.00909,"59":0.00455,"60":0.01364,"64":0.00455,"66":0.00455,"67":0.01819,"68":0.01819,"69":0.00455,"72":0.00909,"78":0.09094,"79":0.00455,"82":0.00455,"83":0.00455,"84":0.00909,"85":0.00909,"86":0.00909,"87":0.00455,"88":0.04092,"89":0.00909,"90":0.00909,"91":0.10913,"92":0.00909,"93":0.09094,"94":0.18643,"95":0.07275,"96":1.06855,"97":1.63237,"98":0.00909,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 56 57 58 61 62 63 65 70 71 73 74 75 76 77 80 81 99 3.5 3.6"},D:{"38":0.01364,"49":0.12277,"53":0.00455,"60":0.00455,"61":0.00455,"63":0.00909,"64":0.00455,"65":0.01364,"66":0.02274,"67":0.01819,"68":0.01364,"69":0.02274,"70":0.00909,"71":0.00909,"72":0.00909,"73":0.00909,"74":0.01364,"75":0.0773,"76":0.01364,"77":0.01364,"78":0.01819,"79":0.13641,"80":0.03183,"81":0.02728,"83":0.03183,"84":0.05002,"85":0.04092,"86":0.05456,"87":0.10458,"88":0.03183,"89":0.06821,"90":0.05911,"91":0.09549,"92":0.06366,"93":0.26373,"94":0.17279,"95":0.10003,"96":0.48653,"97":9.43048,"98":19.54301,"99":0.00909,"100":0.00909,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 62 101"},F:{"36":0.00455,"46":0.00455,"82":0.41378,"83":1.0549,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.00455,"17":0.00909,"18":0.01364,"86":0.00455,"87":0.00455,"90":0.00455,"91":0.00909,"92":0.01819,"93":0.00455,"94":0.00909,"95":0.02274,"96":0.03638,"97":0.74571,"98":2.76912,_:"12 13 14 15 79 80 81 83 84 85 88 89"},E:{"4":0,"12":0.00455,"13":0.04547,"14":0.28646,"15":0.20007,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.00909,"10.1":0.00909,"11.1":0.03638,"12.1":0.07275,"13.1":0.27282,"14.1":0.91395,"15.1":0.52291,"15.2-15.3":1.03217,"15.4":0.00455},G:{"8":0.00102,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00205,"6.0-6.1":0.00102,"7.0-7.1":0.00512,"8.1-8.4":0.00512,"9.0-9.2":0.00205,"9.3":0.07471,"10.0-10.2":0.00307,"10.3":0.08393,"11.0-11.2":0.01433,"11.3-11.4":0.02866,"12.0-12.1":0.0174,"12.2-12.5":0.39916,"13.0-13.1":0.02456,"13.2":0.00614,"13.3":0.05424,"13.4-13.7":0.15045,"14.0-14.4":0.47182,"14.5-14.8":1.85147,"15.0-15.1":1.53317,"15.2-15.3":5.4797,"15.4":0.02252},P:{"4":0.13775,"5.0-5.4":0.05095,"6.2-6.4":0.01009,"7.2-7.4":0.55497,"8.2":0.01009,"9.2":0.05045,"10.1":0.05045,"11.1-11.2":0.07417,"12.0":0.03179,"13.0":0.10596,"14.0":0.10596,"15.0":0.09537,"16.0":2.04509},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00273,"4.2-4.3":0.00818,"4.4":0,"4.4.3-4.4.4":0.05454},A:{"9":0.00924,"11":0.27722,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.22907},Q:{"10.4":0},O:{"0":0.03818},H:{"0":0.20138},L:{"0":41.19799},S:{"2.5":0}}; +module.exports={C:{"11":0.00882,"48":0.00441,"52":0.07936,"56":0.00882,"59":0.01323,"60":0.00882,"66":0.00441,"67":0.00882,"68":0.01323,"72":0.00882,"78":0.07495,"79":0.00441,"81":0.00441,"83":0.00441,"84":0.00882,"85":0.00441,"86":0.00441,"88":0.03086,"89":0.00882,"90":0.00882,"91":0.10141,"92":0.00882,"93":0.02645,"94":0.11904,"95":0.00882,"96":0.01323,"97":0.01323,"98":0.01764,"99":0.03527,"100":0.43649,"101":2.43818,"102":0.09259,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 61 62 63 64 65 69 70 71 73 74 75 76 77 80 82 87 103 104 3.5 3.6"},D:{"19":0.00882,"38":0.01764,"49":0.11023,"53":0.00441,"60":0.02205,"63":0.01323,"64":0.00882,"65":0.01323,"66":0.04409,"67":0.01323,"68":0.01764,"69":0.03968,"70":0.00441,"71":0.00441,"72":0.00882,"73":0.00882,"74":0.01323,"75":0.06173,"76":0.01323,"77":0.00882,"78":0.01323,"79":0.15872,"80":0.01764,"81":0.02645,"83":0.02645,"84":0.05291,"85":0.03968,"86":0.03968,"87":0.09259,"88":0.03527,"89":0.06173,"90":0.03086,"91":0.06173,"92":0.03968,"93":0.03527,"94":0.05291,"95":0.04409,"96":0.08377,"97":0.07495,"98":0.18959,"99":0.14109,"100":0.31304,"101":1.75037,"102":23.4647,"103":2.07223,"104":0.00882,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 61 62 105 106"},F:{"28":0.00441,"36":0.00441,"46":0.00882,"80":0.00441,"85":0.02205,"86":0.64812,"87":0.91266,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0.00882},B:{"15":0.00441,"16":0.00441,"17":0.00882,"18":0.00882,"91":0.00882,"92":0.02205,"95":0.00441,"96":0.00882,"97":0.00882,"98":0.00882,"99":0.01764,"100":0.03086,"101":0.4409,"102":2.78208,"103":0.57758,_:"12 13 14 79 80 81 83 84 85 86 87 88 89 90 93 94"},E:{"4":0,"12":0.00441,"13":0.03968,"14":0.18518,"15":0.06173,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.00441,"10.1":0.00441,"11.1":0.03527,"12.1":0.06614,"13.1":0.26013,"14.1":0.47176,"15.1":0.10582,"15.2-15.3":0.10582,"15.4":0.65694,"15.5":1.60488},G:{"8":0.00117,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01171,"6.0-6.1":0.00117,"7.0-7.1":0.00351,"8.1-8.4":0.00469,"9.0-9.2":0.00234,"9.3":0.07614,"10.0-10.2":0.00351,"10.3":0.08785,"11.0-11.2":0.01171,"11.3-11.4":0.03514,"12.0-12.1":0.02109,"12.2-12.5":0.36899,"13.0-13.1":0.01523,"13.2":0.00586,"13.3":0.03748,"13.4-13.7":0.11714,"14.0-14.4":0.31276,"14.5-14.8":0.89963,"15.0-15.1":0.27528,"15.2-15.3":0.53884,"15.4":1.73952,"15.5":7.10217,"16.0":0.01991},P:{"4":0.1379,"5.0-5.4":0.01015,"6.2-6.4":0.11237,"7.2-7.4":0.55808,"8.2":0.03063,"9.2":0.02029,"10.1":0.03044,"11.1-11.2":0.05304,"12.0":0.01061,"13.0":0.05304,"14.0":0.06365,"15.0":0.03182,"16.0":0.18034,"17.0":1.94126},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00309,"4.2-4.3":0.01083,"4.4":0,"4.4.3-4.4.4":0.05878},A:{"9":0.01764,"11":0.2469,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.04474},H:{"0":0.21177},L:{"0":40.52198},S:{"2.5":0},R:{_:"0"},M:{"0":0.28519}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ET.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ET.js index 7c9b798e0e6da1..07238cb42034f0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ET.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ET.js @@ -1 +1 @@ -module.exports={C:{"28":0.00724,"29":0.01448,"30":0.00724,"34":0.01086,"35":0.01086,"36":0.00362,"37":0.00362,"38":0.00724,"39":0.02895,"41":0.00362,"43":0.00724,"44":0.00724,"47":0.01448,"48":0.00724,"52":0.24609,"56":0.00362,"60":0.03257,"61":0.00724,"64":0.01086,"65":0.00362,"67":0.03257,"68":0.02171,"72":0.03619,"77":0.05067,"78":0.02533,"79":0.01086,"81":0.01086,"84":0.19905,"85":0.00724,"86":0.01448,"87":0.00724,"88":0.04343,"89":0.02895,"90":0.01448,"91":0.09048,"92":0.0181,"93":0.00724,"94":0.01448,"95":0.0579,"96":1.76245,"97":2.79025,"98":0.39085,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 31 32 33 40 42 45 46 49 50 51 53 54 55 57 58 59 62 63 66 69 70 71 73 74 75 76 80 82 83 99 3.5 3.6"},D:{"11":0.01086,"30":0.00362,"33":0.01448,"37":0.00362,"38":0.01448,"40":0.09771,"42":0.00724,"43":0.12305,"44":0.02171,"45":0.00724,"46":0.02895,"49":0.01086,"50":0.00724,"53":0.00362,"55":0.00362,"56":0.02533,"57":0.01448,"58":0.00724,"60":0.00724,"63":0.02171,"64":0.02171,"65":0.01448,"66":0.00724,"67":0.00362,"68":0.01086,"69":0.00724,"70":0.0181,"71":0.01086,"72":0.00362,"73":0.00362,"74":0.01086,"75":0.00724,"76":0.00724,"77":0.01086,"78":0.0181,"79":0.36552,"80":0.03257,"81":0.04705,"83":0.01448,"84":0.0181,"85":0.02171,"86":0.09409,"87":0.06514,"88":0.04343,"89":0.03257,"90":0.06514,"91":0.05429,"92":0.19543,"93":0.04705,"94":0.06152,"95":0.08686,"96":0.33657,"97":5.13898,"98":13.32154,"99":0.04343,"100":0.20266,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 34 35 36 39 41 47 48 51 52 54 59 61 62 101"},F:{"28":0.00724,"77":0.00724,"79":0.01086,"80":0.00724,"81":0.00362,"82":0.17733,"83":1.76969,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.05429,"13":0.03257,"14":0.01448,"15":0.01448,"16":0.02171,"17":0.02171,"18":0.09771,"84":0.03257,"85":0.02895,"89":0.01448,"90":0.00362,"91":0.00362,"92":0.04705,"93":0.00362,"94":0.00724,"95":0.01086,"96":0.11219,"97":0.6478,"98":2.16054,_:"79 80 81 83 86 87 88"},E:{"4":0,"7":0.00724,"8":0.00724,"13":0.01086,"14":0.01448,"15":0.00724,_:"0 5 6 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.00362,"12.1":0.01086,"13.1":0.01086,"14.1":0.03981,"15.1":0.02171,"15.2-15.3":0.0181},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00085,"5.0-5.1":0.00057,"6.0-6.1":0.00085,"7.0-7.1":0.15777,"8.1-8.4":0.03025,"9.0-9.2":0.01216,"9.3":0.04043,"10.0-10.2":0.00226,"10.3":0.17954,"11.0-11.2":0.02403,"11.3-11.4":0.07719,"12.0-12.1":0.04213,"12.2-12.5":0.60364,"13.0-13.1":0.01329,"13.2":0.15777,"13.3":0.06248,"13.4-13.7":0.09019,"14.0-14.4":0.23128,"14.5-14.8":0.46566,"15.0-15.1":0.2375,"15.2-15.3":0.39017,"15.4":0.00679},P:{"4":0.47103,"5.0-5.4":0.02093,"6.2-6.4":0.02093,"7.2-7.4":0.20935,"8.2":0.0104,"9.2":0.12561,"10.1":0.01109,"11.1-11.2":0.13608,"12.0":0.01047,"13.0":0.11514,"14.0":0.08374,"15.0":0.10467,"16.0":0.82692},I:{"0":0,"3":0,"4":0.00032,"2.1":0,"2.2":0,"2.3":0.00032,"4.1":0.00546,"4.2-4.3":0.04638,"4.4":0,"4.4.3-4.4.4":0.15809},A:{"11":0.076,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.12762},Q:{"10.4":0},O:{"0":1.04648},H:{"0":4.79665},L:{"0":50.27251},S:{"2.5":0}}; +module.exports={C:{"29":0.00395,"30":0.0079,"34":0.01976,"35":0.0079,"37":0.01186,"38":0.0079,"40":0.00395,"42":0.00395,"43":0.0079,"44":0.00395,"47":0.01976,"48":0.01186,"49":0.00395,"52":0.24107,"54":0.00395,"56":0.00395,"57":0.02371,"60":0.01976,"61":0.00395,"66":0.01186,"67":0.01976,"68":0.0079,"69":0.0079,"70":0.01186,"72":0.01976,"77":0.01186,"78":0.0079,"84":0.11461,"86":0.00395,"87":0.00395,"88":0.03952,"89":0.04742,"91":0.09485,"92":0.01186,"93":0.00395,"94":0.00395,"95":0.13437,"96":0.01186,"97":0.04742,"98":0.08694,"99":0.06323,"100":0.4861,"101":4.29187,"102":0.61651,"103":0.01186,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 31 32 33 36 39 41 45 46 50 51 53 55 58 59 62 63 64 65 71 73 74 75 76 79 80 81 82 83 85 90 104 3.5 3.6"},D:{"11":0.0079,"33":0.01581,"34":0.00395,"38":0.0079,"40":0.03557,"43":0.13437,"45":0.01186,"49":0.08694,"50":0.0079,"51":0.0079,"53":0.00395,"55":0.00395,"56":0.01186,"57":0.00395,"58":0.0079,"60":0.0079,"63":0.02766,"64":0.02371,"65":0.00395,"67":0.01186,"68":0.01581,"69":0.02371,"70":0.02371,"71":0.01976,"72":0.03557,"73":0.01581,"74":0.01581,"75":0.01186,"76":0.0079,"77":0.01186,"78":0.01976,"79":0.75483,"80":0.05533,"81":0.02766,"83":0.07114,"84":0.01186,"85":0.01186,"86":0.06718,"87":0.07904,"88":0.01976,"89":0.07509,"90":0.02371,"91":0.04742,"92":0.06323,"93":0.03557,"94":0.03952,"95":0.06718,"96":0.09485,"97":0.1067,"98":0.6995,"99":0.13437,"100":0.22131,"101":0.92082,"102":16.87504,"103":1.49781,"104":0.26083,"105":0.03162,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 36 37 39 41 42 44 46 47 48 52 54 59 61 62 66 106"},F:{"42":0.00395,"79":0.01581,"82":0.01186,"83":0.00395,"84":0.02371,"85":0.07509,"86":0.13832,"87":1.82978,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.07904,"13":0.04347,"14":0.02371,"15":0.01581,"16":0.01976,"17":0.01976,"18":0.11461,"84":0.01581,"85":0.0079,"89":0.01186,"90":0.0079,"92":0.04347,"95":0.00395,"96":0.03162,"97":0.0079,"98":0.01581,"99":0.01976,"100":0.03952,"101":0.42286,"102":2.42653,"103":0.43867,_:"79 80 81 83 86 87 88 91 93 94"},E:{"4":0,"7":0.0079,"10":0.00395,"14":0.01581,"15":0.00395,_:"0 5 6 8 9 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.2-15.3 16.0","11.1":0.07114,"12.1":0.0079,"13.1":0.01186,"14.1":0.05138,"15.1":0.0079,"15.4":0.03557,"15.5":0.04347},G:{"8":0,"3.2":0,"4.0-4.1":0.00286,"4.2-4.3":0.00019,"5.0-5.1":0.00038,"6.0-6.1":0.00038,"7.0-7.1":0.07333,"8.1-8.4":0.00324,"9.0-9.2":0.00305,"9.3":0.05962,"10.0-10.2":0.0059,"10.3":0.06266,"11.0-11.2":0.012,"11.3-11.4":0.06209,"12.0-12.1":0.01733,"12.2-12.5":0.2137,"13.0-13.1":0.01981,"13.2":0.00305,"13.3":0.01771,"13.4-13.7":0.03581,"14.0-14.4":0.10361,"14.5-14.8":0.22056,"15.0-15.1":0.0918,"15.2-15.3":0.16513,"15.4":0.2638,"15.5":0.45369,"16.0":0.00705},P:{"4":0.47329,"5.0-5.4":0.01052,"6.2-6.4":0.02104,"7.2-7.4":0.27346,"8.2":0.06207,"9.2":0.03155,"10.1":0.0105,"11.1-11.2":0.08414,"12.0":0.0105,"13.0":0.11569,"14.0":0.09466,"15.0":0.05259,"16.0":0.33656,"17.0":0.96762},I:{"0":0,"3":0,"4":0.00046,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00123,"4.2-4.3":0.02093,"4.4":0,"4.4.3-4.4.4":0.09832},A:{"8":0.00427,"11":0.10244,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.00605},Q:{"10.4":0.01209},O:{"0":1.0159},H:{"0":6.3432},L:{"0":50.04994},S:{"2.5":0},R:{_:"0"},M:{"0":0.13303}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FI.js index 07b1a3fd7b9128..6cbdafd0ccc124 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FI.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FI.js @@ -1 +1 @@ -module.exports={C:{"3":0.01277,"52":0.03192,"54":0.00638,"55":0.02553,"59":0.01277,"60":0.00638,"63":0.01277,"74":0.00638,"78":0.45319,"79":0.02553,"80":0.01915,"81":0.02553,"82":0.01915,"83":0.01915,"84":0.05106,"85":0.00638,"88":0.01915,"89":0.01277,"91":0.22341,"92":0.01915,"93":0.00638,"94":0.02553,"95":0.11489,"96":1.65958,"97":2.65533,"98":0.01277,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 56 57 58 61 62 64 65 66 67 68 69 70 71 72 73 75 76 77 86 87 90 99 3.5 3.6"},D:{"38":0.00638,"42":0.01277,"48":0.15958,"49":0.01915,"52":0.07021,"56":0.01277,"58":0.00638,"59":0.01277,"60":0.06383,"61":0.07021,"64":0.81064,"66":0.07021,"67":0.01277,"69":0.21064,"70":0.46596,"72":0.45319,"73":0.01915,"75":0.01915,"76":0.02553,"77":0.01277,"78":0.01277,"79":1.14256,"80":0.51702,"81":0.0383,"83":0.08936,"84":0.15958,"85":0.14681,"86":0.19149,"87":0.37021,"88":0.02553,"89":0.0383,"90":0.09575,"91":0.04468,"92":0.10213,"93":1.22554,"94":2.71278,"95":0.06383,"96":1.86384,"97":10.23833,"98":23.48944,"99":0.00638,"100":0.01915,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 43 44 45 46 47 50 51 53 54 55 57 62 63 65 68 71 74 101"},F:{"28":0.00638,"68":0.00638,"69":0.00638,"71":0.00638,"80":0.00638,"82":0.30638,"83":0.98298,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 70 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.04468,"81":0.01277,"84":0.01277,"85":0.00638,"86":0.00638,"89":0.00638,"90":0.00638,"92":0.01277,"93":0.00638,"94":0.01277,"95":0.03192,"96":0.0766,"97":1.09149,"98":4.34682,_:"12 13 14 15 16 17 79 80 83 87 88 91"},E:{"4":0.01915,"13":0.10213,"14":0.27447,"15":0.17872,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.01277,"10.1":0.01277,"11.1":0.02553,"12.1":0.04468,"13.1":0.27447,"14.1":0.83617,"15.1":0.45319,"15.2-15.3":1.06596,"15.4":0.01277},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00124,"6.0-6.1":0.00248,"7.0-7.1":0.00496,"8.1-8.4":0.00744,"9.0-9.2":0.08189,"9.3":0.04839,"10.0-10.2":0.01117,"10.3":0.06452,"11.0-11.2":0.02978,"11.3-11.4":0.07072,"12.0-12.1":0.03846,"12.2-12.5":0.335,"13.0-13.1":0.02233,"13.2":0.01737,"13.3":0.05211,"13.4-13.7":0.28786,"14.0-14.4":0.75562,"14.5-14.8":2.39218,"15.0-15.1":1.96536,"15.2-15.3":6.19633,"15.4":0.02109},P:{"4":0.04375,"5.0-5.4":0.02093,"6.2-6.4":0.04074,"7.2-7.4":2.52569,"8.2":0.0104,"9.2":0.01094,"10.1":0.04074,"11.1-11.2":0.04375,"12.0":0.03281,"13.0":0.0875,"14.0":0.14218,"15.0":0.14218,"16.0":1.79369},I:{"0":0,"3":0,"4":0.00214,"2.1":0,"2.2":0.00071,"2.3":0.00071,"4.1":0.00214,"4.2-4.3":0.00641,"4.4":0,"4.4.3-4.4.4":0.03491},A:{"6":0.01675,"7":0.01675,"8":0.38521,"9":0.09211,"10":0.15911,"11":0.24285,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.4883},Q:{"10.4":0},O:{"0":0.10489},H:{"0":0.32189},L:{"0":20.65605},S:{"2.5":0}}; +module.exports={C:{"43":0.00594,"50":0.02374,"52":0.05936,"53":0.01187,"54":0.04155,"55":0.04155,"56":0.01781,"58":0.03562,"61":0.03562,"65":0.00594,"66":0.07717,"68":0.07717,"75":0.01187,"76":0.05342,"78":0.22557,"79":0.01781,"80":0.01781,"81":0.05936,"82":0.01781,"83":0.01781,"84":0.04749,"86":0.01781,"87":0.01187,"88":0.02968,"89":0.04749,"90":0.01187,"91":0.28493,"92":0.01781,"93":0.01187,"94":0.01781,"95":0.03562,"96":0.02374,"97":0.02968,"98":0.01187,"99":0.04155,"100":5.63326,"101":7.50904,"102":0.16027,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 51 57 59 60 62 63 64 67 69 70 71 72 73 74 77 85 103 104 3.5 3.6"},D:{"38":0.00594,"42":0.01187,"48":0.01781,"49":0.02374,"53":0.00594,"54":0.00594,"56":0.01781,"59":0.01187,"60":0.07123,"62":0.00594,"63":0.02374,"65":0.01781,"66":0.01187,"67":0.02968,"69":0.14246,"70":0.03562,"73":0.01781,"74":0.01781,"75":0.2968,"76":0.03562,"77":0.02968,"78":0.02374,"79":0.6767,"80":0.32648,"81":0.03562,"83":0.11872,"84":0.25525,"85":0.2137,"86":0.27306,"87":0.41552,"88":0.0831,"89":0.05936,"90":0.02968,"91":0.03562,"92":0.04155,"93":0.0653,"94":0.04155,"95":0.02374,"96":0.40958,"97":0.32648,"98":0.37397,"99":0.16027,"100":1.93514,"101":2.97987,"102":21.4527,"103":1.72738,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 43 44 45 46 47 50 51 52 55 57 58 61 64 68 71 72 104 105 106"},F:{"56":0.00594,"68":0.02968,"70":0.01781,"71":0.01781,"72":0.01187,"77":0.02968,"78":0.02374,"79":0.02968,"80":0.02374,"81":0.01781,"82":0.01187,"83":0.01187,"84":0.01187,"85":0.03562,"86":0.59954,"87":0.93789,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 60 62 63 64 65 66 67 69 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00594,"18":0.02374,"81":0.01187,"84":0.07717,"85":0.01187,"86":0.01781,"87":0.02374,"88":0.00594,"92":0.01187,"97":0.01187,"98":0.00594,"99":0.01781,"100":0.02968,"101":0.54018,"102":3.09266,"103":0.65296,_:"12 13 14 16 17 79 80 83 89 90 91 93 94 95 96"},E:{"4":0,"8":0.00594,"9":0.01781,"13":0.05936,"14":0.14246,"15":0.05936,_:"0 5 6 7 10 11 12 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.01187,"10.1":0.01187,"11.1":0.01781,"12.1":0.03562,"13.1":0.2315,"14.1":0.33835,"15.1":0.07717,"15.2-15.3":0.17808,"15.4":0.58173,"15.5":1.67395},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00123,"8.1-8.4":0.00614,"9.0-9.2":0.00491,"9.3":0.03437,"10.0-10.2":0.00614,"10.3":0.06629,"11.0-11.2":0.01964,"11.3-11.4":0.0221,"12.0-12.1":0.01964,"12.2-12.5":0.31919,"13.0-13.1":0.01719,"13.2":0.00737,"13.3":0.0442,"13.4-13.7":0.19274,"14.0-14.4":0.48001,"14.5-14.8":1.02755,"15.0-15.1":0.41127,"15.2-15.3":0.76238,"15.4":2.06369,"15.5":6.72879,"16.0":0.01105},P:{"4":0.09606,"5.0-5.4":0.01067,"6.2-6.4":0.02037,"7.2-7.4":0.02135,"8.2":0.06207,"9.2":0.05093,"10.1":0.02016,"11.1-11.2":0.03202,"12.0":0.03202,"13.0":0.07471,"14.0":0.08539,"15.0":0.06404,"16.0":0.34155,"17.0":1.93189},I:{"0":0,"3":0,"4":0.00106,"2.1":0,"2.2":0.00106,"2.3":0,"4.1":0.00318,"4.2-4.3":0.00636,"4.4":0,"4.4.3-4.4.4":0.0371},A:{"8":0.04405,"9":0.01888,"10":0.01888,"11":0.23281,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.15439},H:{"0":0.40004},L:{"0":24.66405},S:{"2.5":0},R:{_:"0"},M:{"0":0.70696}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FJ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FJ.js index 62415026020a4c..535bd2481624f4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FJ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FJ.js @@ -1 +1 @@ -module.exports={C:{"34":0.01532,"35":0.00613,"44":0.00613,"47":0.01838,"48":0.00306,"52":0.0245,"54":0.16234,"65":0.07351,"66":0.00306,"72":0.00613,"78":0.00919,"88":0.01838,"89":0.00613,"90":0.00306,"91":0.00613,"94":0.02757,"95":0.06126,"96":0.69224,"97":1.01385,"98":0.02757,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 36 37 38 39 40 41 42 43 45 46 49 50 51 53 55 56 57 58 59 60 61 62 63 64 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 92 93 99 3.5 3.6"},D:{"39":0.16847,"45":0.0245,"49":0.05513,"50":0.00919,"53":0.01225,"56":0.00306,"58":0.00613,"63":0.00613,"65":0.03063,"69":0.04595,"71":0.00306,"74":0.00919,"75":0.0245,"76":0.00613,"77":0.04901,"79":0.06126,"80":0.01225,"81":0.01225,"83":0.01225,"84":0.00613,"85":0.01225,"86":0.00613,"87":0.07658,"88":0.01225,"89":0.04288,"90":0.01225,"91":0.00919,"92":0.12252,"93":0.02144,"94":0.10108,"95":0.04288,"96":0.47477,"97":6.23627,"98":12.17236,"99":0.0582,"100":0.00613,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 46 47 48 51 52 54 55 57 59 60 61 62 64 66 67 68 70 72 73 78 101"},F:{"40":0.00613,"82":0.12865,"83":0.70755,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.00613,"14":0.00613,"15":0.01838,"16":0.00919,"17":0.02144,"18":0.03369,"80":0.00306,"81":0.00306,"84":0.03369,"85":0.00919,"87":0.76269,"89":0.03369,"91":0.00919,"92":0.02757,"93":0.00919,"94":0.02144,"95":0.02144,"96":0.07658,"97":0.85151,"98":2.16248,_:"12 79 83 86 88 90"},E:{"4":0,"13":0.02144,"14":0.06126,"15":0.03369,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.00306,"11.1":0.00919,"12.1":0.01225,"13.1":0.1991,"14.1":0.22054,"15.1":0.24198,"15.2-15.3":0.15928},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01588,"6.0-6.1":0.00318,"7.0-7.1":0.23765,"8.1-8.4":0.00159,"9.0-9.2":0,"9.3":0.18366,"10.0-10.2":0.00847,"10.3":0.26253,"11.0-11.2":0.00423,"11.3-11.4":0.00529,"12.0-12.1":0.03017,"12.2-12.5":0.51183,"13.0-13.1":0.02064,"13.2":0.00106,"13.3":0.09316,"13.4-13.7":0.0614,"14.0-14.4":0.37897,"14.5-14.8":0.93844,"15.0-15.1":0.86963,"15.2-15.3":1.64134,"15.4":0.02382},P:{"4":0.56013,"5.0-5.4":0.02093,"6.2-6.4":0.04074,"7.2-7.4":2.52569,"8.2":0.0104,"9.2":0.10184,"10.1":0.04074,"11.1-11.2":1.55819,"12.0":0.11203,"13.0":0.73326,"14.0":1.18137,"15.0":0.774,"16.0":5.14303},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.08883,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.10406},Q:{"10.4":0},O:{"0":1.5192},H:{"0":0.36778},L:{"0":50.82157},S:{"2.5":0}}; +module.exports={C:{"29":0.00322,"30":0.00322,"47":0.00965,"52":0.01609,"56":0.00322,"65":0.01931,"77":0.00322,"78":0.02574,"87":0.00322,"88":0.00644,"91":0.0354,"95":0.01931,"97":0.00322,"98":0.00644,"99":0.02253,"100":0.21882,"101":1.80208,"102":0.08689,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 75 76 79 80 81 82 83 84 85 86 89 90 92 93 94 96 103 104 3.5 3.6"},D:{"39":0.00322,"49":0.01931,"54":0.00322,"56":0.01609,"63":0.00644,"64":0.00322,"68":0.10298,"69":0.02574,"74":0.03218,"75":0.00965,"76":0.01931,"77":0.01931,"78":0.00644,"79":0.04827,"80":0.00965,"81":0.00644,"83":0.06436,"84":0.01287,"85":0.0708,"86":0.04183,"87":0.11263,"88":0.01609,"89":0.01931,"90":0.00644,"91":0.01287,"92":0.03218,"93":0.01287,"94":0.06758,"95":0.00644,"96":0.15768,"97":0.02896,"98":0.03862,"99":0.10941,"100":0.44087,"101":0.90426,"102":16.62419,"103":1.52211,"104":0.01609,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 48 50 51 52 53 55 57 58 59 60 61 62 65 66 67 70 71 72 73 105 106"},F:{"28":0.01287,"85":0.00644,"86":0.0354,"87":0.61786,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00322,"13":0.00644,"14":0.00965,"15":0.01287,"16":0.01287,"17":0.01931,"18":0.04505,"80":0.00322,"84":0.01931,"85":0.00644,"89":0.02253,"91":0.00644,"92":0.01609,"94":0.00322,"95":0.00965,"96":0.01287,"97":0.00644,"98":0.01287,"99":0.06436,"100":0.06114,"101":0.34433,"102":2.20755,"103":0.46983,_:"79 81 83 86 87 88 90 93"},E:{"4":0,"13":0.02896,"14":0.29927,"15":0.00644,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.00965,"13.1":0.14159,"14.1":0.15125,"15.1":0.09976,"15.2-15.3":0.02574,"15.4":0.19952,"15.5":0.4473},G:{"8":0.00055,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00055,"6.0-6.1":0.00055,"7.0-7.1":0.03899,"8.1-8.4":0,"9.0-9.2":0.0022,"9.3":0.05602,"10.0-10.2":0.01373,"10.3":0.05162,"11.0-11.2":0.00604,"11.3-11.4":0.00604,"12.0-12.1":0.02911,"12.2-12.5":0.47778,"13.0-13.1":0.00494,"13.2":0.00604,"13.3":0.09171,"13.4-13.7":0.08622,"14.0-14.4":0.39925,"14.5-14.8":0.4981,"15.0-15.1":0.19331,"15.2-15.3":0.34378,"15.4":0.88362,"15.5":2.27962,"16.0":0.0033},P:{"4":0.30561,"5.0-5.4":0.01052,"6.2-6.4":0.02037,"7.2-7.4":1.59936,"8.2":0.06207,"9.2":0.05093,"10.1":0.02016,"11.1-11.2":0.41767,"12.0":0.10187,"13.0":0.45841,"14.0":0.77421,"15.0":0.59085,"16.0":1.15113,"17.0":4.41096},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00055,"4.2-4.3":0.00041,"4.4":0,"4.4.3-4.4.4":0.0126},A:{"11":0.10298,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.84097},H:{"0":0.38525},L:{"0":54.09611},S:{"2.5":0},R:{_:"0"},M:{"0":0.20346}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FK.js index 36e7421969cf31..5fa38a723bdc0e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FK.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FK.js @@ -1 +1 @@ -module.exports={C:{"52":0.01672,"61":0.29253,"63":0.01672,"69":0.01672,"78":0.94445,"84":0.01672,"87":0.02507,"89":0.00836,"92":0.02507,"94":0.04179,"95":0.06686,"96":2.35278,"97":3.88229,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 62 64 65 66 67 68 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 88 90 91 93 98 99 3.5 3.6"},D:{"33":0.00836,"49":0.45969,"77":0.01672,"81":0.00836,"86":0.00836,"87":0.00836,"91":0.00836,"93":0.00836,"95":0.00836,"96":0.1003,"97":7.81473,"98":14.68501,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 80 83 84 85 88 89 90 92 94 99 100 101"},F:{"73":0.01672,"81":0.00836,"82":0.00836,"83":0.88595,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00836,"16":0.00836,"18":0.22567,"83":0.00836,"84":0.01672,"91":0.00836,"92":0.16716,"93":0.00836,"95":0.04179,"96":0.29253,"97":0.75222,"98":2.41964,_:"12 13 15 17 79 80 81 85 86 87 88 89 90 94"},E:{"4":0,"13":0.05851,"14":0.07522,"15":0.1003,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.00836,"11.1":0.09194,"12.1":0.05015,"13.1":0.16716,"14.1":0.50148,"15.1":0.08358,"15.2-15.3":0.84416},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00598,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02291,"10.0-10.2":0.14043,"10.3":0,"11.0-11.2":0,"11.3-11.4":0.03486,"12.0-12.1":0,"12.2-12.5":1.73001,"13.0-13.1":0,"13.2":0,"13.3":0.01793,"13.4-13.7":0.00598,"14.0-14.4":0.26891,"14.5-14.8":1.42623,"15.0-15.1":2.05668,"15.2-15.3":4.24982,"15.4":0},P:{"4":0.47103,"5.0-5.4":0.02093,"6.2-6.4":0.02093,"7.2-7.4":0.20935,"8.2":0.0104,"9.2":0.12561,"10.1":0.01109,"11.1-11.2":0.04208,"12.0":0.04208,"13.0":0.2209,"14.0":0.09467,"15.0":0.03165,"16.0":4.94395},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.78565,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.50643},Q:{"10.4":0},O:{"0":12.5559},H:{"0":0},L:{"0":32.58584},S:{"2.5":0}}; +module.exports={C:{"63":0.01456,"72":0.04368,"78":1.5288,"91":0.01456,"94":0.20675,"98":0.02912,"100":0.08736,"101":2.71981,"102":0.10192,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 95 96 97 99 103 104 3.5 3.6"},D:{"68":0.01456,"91":0.01456,"96":0.01456,"97":0.01456,"99":0.04368,"100":0.05824,"101":0.66102,"102":7.22176,"103":1.16189,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 92 93 94 95 98 104 105 106"},F:{"31":0.01456,"87":0.47174,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.08736,"18":0.29411,"91":0.01456,"93":0.01456,"95":0.01456,"99":0.11648,"100":0.01456,"101":1.01338,"102":3.91082,"103":0.80954,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 89 90 92 94 96 97 98"},E:{"4":0,"13":1.35408,_:"0 5 6 7 8 9 10 11 12 14 15 3.1 3.2 5.1 6.1 7.1 9.1 12.1 16.0","10.1":0.04368,"11.1":0.05824,"13.1":0.17763,"14.1":3.75066,"15.1":0.05824,"15.2-15.3":0.16307,"15.4":0.36691,"15.5":1.39776},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03902,"10.0-10.2":0,"10.3":0.00975,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0.00975,"12.2-12.5":0.32385,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0.00975,"14.5-14.8":0.32288,"15.0-15.1":0.1668,"15.2-15.3":1.11983,"15.4":4.22376,"15.5":3.45802,"16.0":0.06828},P:{"4":0.47329,"5.0-5.4":0.01052,"6.2-6.4":0.02104,"7.2-7.4":0.03024,"8.2":0.06207,"9.2":0.03155,"10.1":0.02016,"11.1-11.2":0.09073,"12.0":0.0105,"13.0":0.11089,"14.0":7.51031,"15.0":0.03024,"16.0":0.08065,"17.0":8.37727},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.44262,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.02684},L:{"0":44.61853},S:{"2.5":0},R:{_:"0"},M:{"0":0.50318}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FM.js index 9ed2ac0ab466c0..16a92cf8b82c7a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FM.js @@ -1 +1 @@ -module.exports={C:{"47":0.0106,"78":0.02121,"88":0.0106,"89":0.02651,"96":2.07308,"97":1.89281,"98":0.08483,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 90 91 92 93 94 95 99 3.5 3.6"},D:{"33":0.30221,"49":0.02651,"65":0.0106,"78":0.0106,"79":0.18557,"80":0.36054,"81":0.01591,"83":0.0106,"87":0.02121,"90":0.01591,"91":0.29161,"92":0.04242,"93":0.49309,"94":0.07953,"95":0.02651,"96":0.95966,"97":8.35595,"98":18.27069,"99":0.02121,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 84 85 86 88 89 100 101"},F:{"83":0.22799,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.02121,"14":0.02121,"16":0.0106,"18":0.01591,"84":0.0106,"86":0.15906,"96":0.04772,"97":1.60651,"98":11.38339,_:"12 15 17 79 80 81 83 85 87 88 89 90 91 92 93 94 95"},E:{"4":0,"14":0.5302,"15":0.05832,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.0106,"12.1":0.86953,"13.1":0.90134,"14.1":0.16436,"15.1":0.08483,"15.2-15.3":0.42416},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01836,"10.0-10.2":0,"10.3":0.01836,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0.03672,"12.2-12.5":2.16039,"13.0-13.1":0.00773,"13.2":0,"13.3":0.00386,"13.4-13.7":0.98068,"14.0-14.4":0.64251,"14.5-14.8":2.41836,"15.0-15.1":2.05701,"15.2-15.3":1.2058,"15.4":0.11401},P:{"4":0.02192,"5.0-5.4":0.01024,"6.2-6.4":0.02048,"7.2-7.4":0.10962,"8.2":0.01015,"9.2":0.12286,"10.1":0.02048,"11.1-11.2":0.53714,"12.0":0.01078,"13.0":0.19732,"14.0":0.05481,"15.0":0.04314,"16.0":1.01947},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.07953,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.06577},Q:{"10.4":0},O:{"0":0.0094},H:{"0":0.0934},L:{"0":31.24196},S:{"2.5":0}}; +module.exports={C:{"88":0.01062,"89":0.01062,"90":0.02656,"99":0.01593,"100":0.50455,"101":3.11225,"102":0.37177,"103":0.02124,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 91 92 93 94 95 96 97 98 104 3.5 3.6"},D:{"33":0.02656,"49":0.03718,"68":0.01593,"76":0.61608,"78":0.03187,"80":0.01062,"81":0.02124,"86":0.03718,"88":0.02124,"91":0.01593,"93":0.46737,"96":0.01062,"97":0.02656,"98":0.03718,"100":0.05311,"101":1.981,"102":20.41017,"103":1.75794,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 77 79 83 84 85 87 89 90 92 94 95 99 104 105 106"},F:{"86":0.04249,"87":0.39301,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.01062,"16":0.04249,"18":0.01593,"86":0.18057,"90":0.01593,"92":0.10091,"94":0.01593,"97":0.0478,"98":0.02656,"99":0.01062,"100":0.01593,"101":1.52426,"102":9.95813,"103":1.48177,_:"12 14 15 17 79 80 81 83 84 85 87 88 89 91 93 95 96"},E:{"4":0,"13":0.02124,"14":0.9666,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.06904,"13.1":0.15933,"14.1":0.12215,"15.1":0.01062,"15.2-15.3":0.02124,"15.4":0.45675,"15.5":0.95067},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.02138,"7.0-7.1":0.00338,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.52207,"10.0-10.2":0.00338,"10.3":0.01125,"11.0-11.2":0.02588,"11.3-11.4":0.01125,"12.0-12.1":0.06188,"12.2-12.5":1.10152,"13.0-13.1":0.03263,"13.2":0,"13.3":0.036,"13.4-13.7":0.57945,"14.0-14.4":0.2059,"14.5-14.8":1.89588,"15.0-15.1":0.49282,"15.2-15.3":0.97551,"15.4":1.75074,"15.5":3.4711,"16.0":0},P:{"4":0.02152,"5.0-5.4":0.0405,"6.2-6.4":0.09113,"7.2-7.4":0.07531,"8.2":0.01021,"9.2":0.02034,"10.1":0.03038,"11.1-11.2":0.08607,"12.0":0.02034,"13.0":0.01076,"14.0":0.03169,"15.0":0.02152,"16.0":0.11835,"17.0":1.23729},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"10":0.0478,"11":0.01593,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.06096},O:{"0":0.05627},H:{"0":0.44392},L:{"0":39.7907},S:{"2.5":0},R:{_:"0"},M:{"0":0.07971}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FO.js index 7aba38e28eeece..972fa0c950d611 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FO.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FO.js @@ -1 +1 @@ -module.exports={C:{"48":0.00441,"60":0.00441,"78":0.0397,"91":0.11469,"93":0.00441,"95":0.05293,"96":0.49403,"97":0.66165,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 94 98 99 3.5 3.6"},D:{"49":0.01764,"67":0.00882,"68":0.03529,"71":0.03529,"74":0.00441,"79":0.00882,"80":0.00882,"83":0.02206,"86":0.01764,"87":0.02206,"88":0.05293,"90":0.01764,"91":0.04852,"92":0.11028,"93":0.04852,"94":0.06617,"95":0.01764,"96":0.50727,"97":6.67384,"98":8.92786,"99":0.00882,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 69 70 72 73 75 76 77 78 81 84 85 89 100 101"},F:{"82":0.09704,"83":0.37494,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01323,"18":0.00882,"84":0.00882,"89":0.02647,"94":0.00882,"95":0.00882,"96":0.03088,"97":0.79398,"98":2.31136,_:"12 13 14 16 17 79 80 81 83 85 86 87 88 90 91 92 93"},E:{"4":0,"12":0.00441,"13":0.00882,"14":1.16009,"15":0.21173,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00441,"11.1":0.0397,"12.1":0.02206,"13.1":0.23378,"14.1":0.83368,"15.1":4.21692,"15.2-15.3":9.144,"15.4":0.0397},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02501,"10.0-10.2":0.015,"10.3":0.11003,"11.0-11.2":0.02001,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.24507,"13.0-13.1":0,"13.2":0,"13.3":0.01,"13.4-13.7":0.05001,"14.0-14.4":1.06029,"14.5-14.8":3.38092,"15.0-15.1":9.02246,"15.2-15.3":35.95478,"15.4":0.10003},P:{"4":0.47103,"5.0-5.4":0.02093,"6.2-6.4":0.02093,"7.2-7.4":0.20935,"8.2":0.0104,"9.2":0.12561,"10.1":0.01109,"11.1-11.2":0.03165,"12.0":0.01047,"13.0":0.11514,"14.0":0.01055,"15.0":0.03165,"16.0":0.77009},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.22937,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.16208},Q:{"10.4":0},O:{"0":0},H:{"0":0.1217},L:{"0":4.8021},S:{"2.5":0}}; +module.exports={C:{"78":0.07503,"91":0.05717,"100":0.08933,"101":0.52166,"102":0.01072,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 99 103 104 3.5 3.6"},D:{"49":0.01787,"68":0.00715,"71":0.01072,"79":0.03216,"80":0.01787,"81":0.00715,"83":0.00357,"84":0.00715,"88":0.06789,"90":0.00357,"91":0.00357,"92":0.00715,"96":0.0536,"97":0.02858,"98":0.02144,"99":0.06074,"100":0.20366,"101":0.69316,"102":8.11786,"103":0.54667,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 72 73 74 75 76 77 78 85 86 87 89 93 94 95 104 105 106"},F:{"86":0.25368,"87":0.34658,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"91":0.00715,"92":0.00357,"95":0.02144,"96":0.01429,"100":0.01072,"101":0.28584,"102":1.46136,"103":0.39303,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 93 94 97 98 99"},E:{"4":0,"13":0.00715,"14":0.77891,"15":0.11076,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.03216,"12.1":0.01072,"13.1":0.15364,"14.1":0.2644,"15.1":0.27869,"15.2-15.3":0.3966,"15.4":4.95575,"15.5":14.04546,"16.0":0.0393},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04658,"10.0-10.2":0.01164,"10.3":0.05822,"11.0-11.2":0.01164,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.23288,"13.0-13.1":0.01747,"13.2":0,"13.3":0.01747,"13.4-13.7":0.02911,"14.0-14.4":0.39008,"14.5-14.8":0.91407,"15.0-15.1":0.97811,"15.2-15.3":1.97368,"15.4":8.704,"15.5":44.59707,"16.0":0.06404},P:{"4":0.47329,"5.0-5.4":0.01052,"6.2-6.4":0.02104,"7.2-7.4":0.27346,"8.2":0.06207,"9.2":0.03155,"10.1":0.0105,"11.1-11.2":0.08414,"12.0":0.0105,"13.0":0.02056,"14.0":0.09466,"15.0":0.01028,"16.0":0.14394,"17.0":0.49352},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.03216,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.04259},L:{"0":5.45717},S:{"2.5":0},R:{_:"0"},M:{"0":0.08996}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FR.js index 3afeea41bd2bc5..bb75a0d38b53c8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FR.js @@ -1 +1 @@ -module.exports={C:{"11":0.00487,"45":0.00974,"47":0.00974,"48":0.01949,"50":0.00487,"52":0.09744,"56":0.01462,"59":0.01462,"60":0.01462,"66":0.00487,"68":0.02923,"72":0.00974,"75":0.00487,"77":0.00487,"78":0.21924,"79":0.00974,"80":0.01462,"81":0.44822,"82":0.01462,"83":0.00974,"84":0.02436,"85":0.00974,"86":0.00974,"87":0.01462,"88":0.02436,"89":0.0341,"90":0.03898,"91":0.33617,"92":0.01462,"93":0.01462,"94":0.04872,"95":0.12667,"96":2.31907,"97":3.52733,"98":0.00974,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 49 51 53 54 55 57 58 61 62 63 64 65 67 69 70 71 73 74 76 99 3.5 3.6"},D:{"38":0.00974,"48":0.00487,"49":0.11206,"50":0.00487,"51":0.00487,"52":0.02436,"53":0.00974,"54":0.06334,"56":0.01462,"58":0.00974,"60":0.07308,"63":0.00974,"64":0.07308,"65":0.01462,"66":0.06334,"67":0.01949,"69":0.02436,"70":0.03898,"71":0.01949,"72":0.03898,"73":0.00487,"74":0.01462,"75":0.01949,"76":0.01949,"77":0.01462,"78":0.02436,"79":0.18514,"80":0.07795,"81":0.0341,"83":0.06821,"84":0.1218,"85":0.14129,"86":0.1559,"87":0.30694,"88":0.05359,"89":0.06334,"90":0.03898,"91":0.05846,"92":0.05359,"93":0.90132,"94":0.53592,"95":0.11206,"96":0.53592,"97":7.56622,"98":15.3468,"99":0.01462,"100":0.00974,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 55 57 59 61 62 68 101"},F:{"71":0.00974,"82":0.33617,"83":0.93542,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.01949,"18":0.03898,"83":0.00487,"84":0.00974,"85":0.01462,"86":0.00974,"87":0.00487,"89":0.00974,"90":0.00974,"91":0.00974,"92":0.00974,"93":0.00487,"94":0.01462,"95":0.03898,"96":0.07308,"97":1.23749,"98":4.13146,_:"12 13 14 15 16 79 80 81 88"},E:{"4":0,"8":0.00487,"12":0.01462,"13":0.0877,"14":0.42386,"15":0.25822,_:"0 5 6 7 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.01949,"10.1":0.02436,"11.1":0.08282,"12.1":0.14616,"13.1":0.4872,"14.1":1.2521,"15.1":0.61874,"15.2-15.3":1.15954,"15.4":0.00974},G:{"8":0.00677,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00169,"7.0-7.1":0.01016,"8.1-8.4":0.00339,"9.0-9.2":0.01863,"9.3":0.10161,"10.0-10.2":0.02371,"10.3":0.10838,"11.0-11.2":0.04742,"11.3-11.4":0.04064,"12.0-12.1":0.03387,"12.2-12.5":0.63504,"13.0-13.1":0.06266,"13.2":0.01524,"13.3":0.11346,"13.4-13.7":0.3082,"14.0-14.4":0.84841,"14.5-14.8":3.3513,"15.0-15.1":2.7061,"15.2-15.3":8.4282,"15.4":0.06266},P:{"4":0.08493,"5.0-5.4":0.01062,_:"6.2-6.4 7.2-7.4","8.2":0.01062,"9.2":0.03185,"10.1":0.01062,"11.1-11.2":0.10616,"12.0":0.03185,"13.0":0.10616,"14.0":0.10616,"15.0":0.12739,"16.0":2.54788},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00299,"4.2-4.3":0.00598,"4.4":0,"4.4.3-4.4.4":0.06282},A:{"8":0.01519,"9":0.02026,"10":0.01013,"11":0.33931,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.51793},Q:{"10.4":0},O:{"0":0.43075},H:{"0":0.35926},L:{"0":30.1504},S:{"2.5":0}}; +module.exports={C:{"3":0.00928,"11":0.03711,"45":0.01392,"47":0.01392,"48":0.01856,"52":0.07886,"55":0.00464,"56":0.00928,"59":0.01392,"60":0.00928,"68":0.0232,"72":0.00928,"77":0.00464,"78":0.19484,"79":0.01392,"80":0.01856,"81":0.29226,"82":0.01856,"83":0.01392,"84":0.01392,"85":0.00928,"86":0.00464,"87":0.00464,"88":0.0232,"89":0.01392,"90":0.01856,"91":0.35256,"92":0.00928,"93":0.01856,"94":0.02783,"95":0.01856,"96":0.01856,"97":0.03247,"98":0.02783,"99":0.06495,"100":0.57524,"101":5.05187,"102":0.08814,_:"2 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 49 50 51 53 54 57 58 61 62 63 64 65 66 67 69 70 71 73 74 75 76 103 104","3.5":0.01392,"3.6":0.01392},D:{"38":0.00464,"48":0.00464,"49":0.09278,"50":0.01392,"51":0.03247,"52":0.01392,"54":0.07422,"56":0.09278,"58":0.01392,"60":0.0835,"63":0.01392,"65":0.01392,"66":0.05103,"67":0.0232,"69":0.01856,"70":0.00928,"71":0.01856,"74":0.00928,"75":0.0232,"76":0.01392,"77":0.00928,"78":0.01856,"79":0.07886,"80":0.06031,"81":0.02783,"83":0.07886,"84":0.16237,"85":0.14381,"86":0.17628,"87":0.22267,"88":0.02783,"89":0.05103,"90":0.02783,"91":0.05103,"92":0.05103,"93":0.1067,"94":0.2737,"95":0.05103,"96":0.16237,"97":0.12525,"98":0.10206,"99":0.13917,"100":0.45462,"101":1.67468,"102":19.48844,"103":1.3082,"104":0.00464,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 53 55 57 59 61 62 64 68 72 73 105 106"},F:{"68":0.01856,"69":0.00464,"70":0.00928,"71":0.00928,"72":0.00464,"85":0.01856,"86":0.43607,"87":0.77007,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.00464,"17":0.01392,"18":0.03711,"83":0.00464,"84":0.01392,"85":0.01392,"86":0.01392,"87":0.00464,"89":0.00464,"91":0.00928,"92":0.00928,"94":0.00928,"95":0.00464,"96":0.06495,"97":0.00928,"98":0.01856,"99":0.0232,"100":0.08814,"101":0.60771,"102":3.99882,"103":0.70513,_:"12 13 14 15 79 80 81 88 90 93"},E:{"4":0,"12":0.00464,"13":0.04639,"14":0.21803,"15":0.08814,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.01392,"10.1":0.02783,"11.1":0.06959,"12.1":0.10206,"13.1":0.37112,"14.1":0.64946,"15.1":0.14845,"15.2-15.3":0.13917,"15.4":0.69585,"15.5":1.66076,"16.0":0.00464},G:{"8":0.00493,"3.2":0,"4.0-4.1":0.01313,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00657,"8.1-8.4":0.00328,"9.0-9.2":0.04104,"9.3":0.10015,"10.0-10.2":0.01478,"10.3":0.10179,"11.0-11.2":0.04269,"11.3-11.4":0.03612,"12.0-12.1":0.03284,"12.2-12.5":0.58283,"13.0-13.1":0.03776,"13.2":0.01149,"13.3":0.07224,"13.4-13.7":0.2003,"14.0-14.4":0.54835,"14.5-14.8":1.4776,"15.0-15.1":0.43507,"15.2-15.3":0.87343,"15.4":2.52834,"15.5":9.15292,"16.0":0.05254},P:{"4":0.06322,"5.0-5.4":0.01054,"6.2-6.4":0.02037,"7.2-7.4":0.01054,"8.2":0.06207,"9.2":0.02107,"10.1":0.02016,"11.1-11.2":0.06322,"12.0":0.02107,"13.0":0.09483,"14.0":0.08429,"15.0":0.05268,"16.0":0.28449,"17.0":2.61312},I:{"0":0,"3":0,"4":0.0041,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0041,"4.2-4.3":0.00615,"4.4":0,"4.4.3-4.4.4":0.05535},A:{"8":0.0096,"9":0.01921,"10":0.0048,"11":0.24009,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.43432},H:{"0":0.44672},L:{"0":32.72813},S:{"2.5":0.01072},R:{_:"0"},M:{"0":0.56837}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GA.js index bd5e8ab670e929..39ff35b0a204dd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GA.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GA.js @@ -1 +1 @@ -module.exports={C:{"30":0.00287,"31":0.00287,"35":0.00575,"39":0.00287,"48":0.00287,"52":0.01724,"54":0.02298,"68":0.01149,"72":0.00862,"78":0.02586,"85":0.00287,"88":0.05459,"89":0.00575,"91":0.06608,"92":0.00287,"93":0.01724,"94":0.04597,"95":0.03448,"96":0.77284,"97":1.54567,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 32 33 34 36 37 38 40 41 42 43 44 45 46 47 49 50 51 53 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 86 87 90 98 99 3.5 3.6"},D:{"29":0.03735,"38":0.00862,"48":0.00575,"49":0.00862,"53":0.00287,"56":0.00575,"58":0.01437,"63":0.00287,"65":0.01149,"66":0.00287,"69":0.02011,"70":0.00575,"71":0.00575,"73":0.02586,"74":0.00862,"75":0.01437,"76":0.02873,"77":0.01149,"79":0.75847,"80":0.01149,"81":0.0316,"83":0.01437,"84":0.00862,"85":0.01724,"86":0.01724,"87":0.22984,"88":0.01437,"89":0.01149,"90":0.00575,"91":0.00862,"92":0.09768,"93":0.02011,"94":0.03735,"95":0.12354,"96":0.34189,"97":4.02795,"98":10.83696,"99":0.0316,"100":0.05171,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 50 51 52 54 55 57 59 60 61 62 64 67 68 72 78 101"},F:{"28":0.27006,"46":0.00862,"68":0.01437,"74":0.02586,"79":0.00287,"80":0.01724,"82":0.05459,"83":1.50545,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00862,"13":0.00862,"14":0.01149,"15":0.00575,"16":0.01149,"17":0.01149,"18":0.06608,"80":0.00287,"84":0.00862,"85":0.00287,"89":0.00862,"90":0.01149,"91":0.00287,"92":0.01149,"94":0.00575,"95":0.01149,"96":0.0316,"97":0.64355,"98":2.18635,_:"79 81 83 86 87 88 93"},E:{"4":0,"14":0.01724,"15":0.01437,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.01149,"12.1":0.01437,"13.1":0.09481,"14.1":0.04884,"15.1":0.0316,"15.2-15.3":0.15802},G:{"8":0.00219,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01531,"6.0-6.1":0.00146,"7.0-7.1":0.02042,"8.1-8.4":0.00219,"9.0-9.2":0,"9.3":0.02771,"10.0-10.2":0.00146,"10.3":0.02916,"11.0-11.2":0.24936,"11.3-11.4":0.01094,"12.0-12.1":0.10062,"12.2-12.5":2.13046,"13.0-13.1":0.01239,"13.2":0.00073,"13.3":0.00875,"13.4-13.7":0.10208,"14.0-14.4":0.34706,"14.5-14.8":0.84431,"15.0-15.1":0.63651,"15.2-15.3":2.71374,"15.4":0.02698},P:{"4":0.4495,"5.0-5.4":0.02093,"6.2-6.4":0.02043,"7.2-7.4":1.39958,"8.2":0.02094,"9.2":0.01022,"10.1":0.02043,"11.1-11.2":0.24518,"12.0":0.05108,"13.0":0.54144,"14.0":0.18389,"15.0":0.15324,"16.0":1.14419},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00052,"4.2-4.3":0.00207,"4.4":0,"4.4.3-4.4.4":0.06868},A:{"11":0.11722,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.91226},Q:{"10.4":0},O:{"0":0.3706},H:{"0":2.09844},L:{"0":51.6867},S:{"2.5":0.01425}}; +module.exports={C:{"48":0.01091,"52":0.04728,"54":0.01819,"56":0.04364,"68":0.01091,"72":0.00364,"78":0.03273,"91":0.06547,"94":0.00364,"95":0.02546,"96":0.0291,"97":0.00364,"98":0.01091,"99":0.04728,"100":0.22186,"101":2.93506,"102":0.05456,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 55 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 103 104 3.5 3.6"},D:{"22":0.00364,"43":0.00727,"49":0.02546,"50":0.00364,"56":0.01455,"65":0.01455,"66":0.00727,"69":0.02182,"70":0.02182,"72":0.00727,"73":0.01455,"74":0.00727,"76":0.01455,"77":0.02182,"79":0.24368,"80":0.00727,"81":0.00727,"83":0.02182,"84":0.01819,"85":0.01455,"86":0.05819,"87":0.02182,"88":0.01091,"89":0.01091,"90":0.00727,"91":0.01819,"92":0.0291,"93":0.04364,"94":0.01455,"95":0.11275,"96":0.03273,"97":0.02182,"98":0.08365,"99":0.07638,"100":1.13838,"101":0.88015,"102":15.03172,"103":1.2584,"104":0.01091,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 51 52 53 54 55 57 58 59 60 61 62 63 64 67 68 71 75 78 105 106"},F:{"28":0.01091,"46":0.05819,"79":0.00727,"84":0.00364,"85":0.00727,"86":0.0691,"87":1.2875,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01819,"13":0.01091,"15":0.00727,"17":0.01455,"18":0.02182,"84":0.01819,"89":0.00364,"90":0.01091,"92":0.0291,"94":0.00364,"98":0.02546,"99":0.00727,"100":0.01819,"101":0.27278,"102":2.38224,"103":0.37825,_:"14 16 79 80 81 83 85 86 87 88 91 93 95 96 97"},E:{"4":0,"13":0.00364,"14":0.00727,"15":0.00727,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01091,"12.1":0.00727,"13.1":0.05819,"14.1":0.04364,"15.1":0.00727,"15.2-15.3":0.00727,"15.4":0.05819,"15.5":0.24732},G:{"8":0.14078,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.04746,"6.0-6.1":0,"7.0-7.1":0.04988,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02011,"10.0-10.2":0,"10.3":0.0716,"11.0-11.2":0.04022,"11.3-11.4":0.01207,"12.0-12.1":0.02816,"12.2-12.5":1.6113,"13.0-13.1":0.01046,"13.2":0.00322,"13.3":0.01609,"13.4-13.7":0.0547,"14.0-14.4":0.48267,"14.5-14.8":0.58161,"15.0-15.1":0.69826,"15.2-15.3":0.36039,"15.4":1.04738,"15.5":2.65064,"16.0":0.07642},P:{"4":0.26838,"5.0-5.4":0.01054,"6.2-6.4":0.01032,"7.2-7.4":0.37161,"8.2":0.06207,"9.2":0.02064,"10.1":0.02016,"11.1-11.2":0.0929,"12.0":0.01032,"13.0":0.25806,"14.0":0.0929,"15.0":0.05161,"16.0":0.61935,"17.0":1.32127},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00055,"4.2-4.3":0.0033,"4.4":0,"4.4.3-4.4.4":0.0534},A:{"11":0.05819,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.17814},H:{"0":1.96354},L:{"0":52.96149},S:{"2.5":0.01272},R:{_:"0"},M:{"0":0.1336}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GB.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GB.js index d849070739278d..1dab5590a37a5e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GB.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GB.js @@ -1 +1 @@ -module.exports={C:{"48":0.00503,"52":0.0302,"59":0.0151,"78":0.05537,"84":0.02014,"87":0.02517,"88":0.00503,"89":0.02014,"90":0.07551,"91":0.04027,"92":0.00503,"93":0.01007,"94":0.0151,"95":0.03524,"96":0.82054,"97":1.2736,"98":0.00503,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 99 3.5 3.6"},D:{"35":0.00503,"38":0.00503,"40":0.18626,"43":0.01007,"49":0.06041,"56":0.0302,"60":0.0151,"63":0.00503,"64":0.0151,"65":0.0151,"66":0.05537,"67":0.0151,"69":0.04531,"70":0.0151,"72":0.0151,"73":0.00503,"74":0.01007,"75":0.02014,"76":0.04027,"77":0.02517,"78":0.0151,"79":0.07048,"80":0.05537,"81":0.02014,"83":0.03524,"84":0.08054,"85":0.03524,"86":0.03524,"87":0.16109,"88":0.02517,"89":0.06041,"90":0.04027,"91":0.08558,"92":0.08558,"93":0.58898,"94":0.14095,"95":0.12082,"96":0.72993,"97":9.44882,"98":17.87573,"99":0.0151,"100":0.0151,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 41 42 44 45 46 47 48 50 51 52 53 54 55 57 58 59 61 62 68 71 101"},F:{"46":0.00503,"82":0.18626,"83":0.58394,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00503,"16":0.00503,"17":0.01007,"18":0.06041,"85":0.01007,"89":0.00503,"90":0.00503,"91":0.01007,"92":0.02014,"93":0.0151,"94":0.01007,"95":0.07551,"96":0.08054,"97":1.84244,"98":6.0408,_:"12 13 14 79 80 81 83 84 86 87 88"},E:{"4":0,"12":0.01007,"13":0.07551,"14":0.4732,"15":0.25673,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.00503,"10.1":0.01007,"11.1":0.06041,"12.1":0.09565,"13.1":0.41782,"14.1":1.777,"15.1":0.85578,"15.2-15.3":1.95319,"15.4":0.0151},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00499,"7.0-7.1":0.01248,"8.1-8.4":0.01248,"9.0-9.2":0.0025,"9.3":0.24959,"10.0-10.2":0.00749,"10.3":0.2421,"11.0-11.2":0.02995,"11.3-11.4":0.05741,"12.0-12.1":0.02995,"12.2-12.5":1.11318,"13.0-13.1":0.02746,"13.2":0.00749,"13.3":0.06989,"13.4-13.7":0.25209,"14.0-14.4":0.89853,"14.5-14.8":5.04175,"15.0-15.1":3.30709,"15.2-15.3":13.53785,"15.4":0.04493},P:{"4":0.04325,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.04325,"12.0":0.02162,"13.0":0.09731,"14.0":0.09731,"15.0":0.09731,"16.0":3.38406},I:{"0":0,"3":0,"4":0.01457,"2.1":0,"2.2":0.00089,"2.3":0,"4.1":0.00119,"4.2-4.3":0.00387,"4.4":0,"4.4.3-4.4.4":0.02914},A:{"9":0.01023,"11":0.30691,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.2781},Q:{"10.4":0},O:{"0":0.11422},H:{"0":0.17866},L:{"0":20.43488},S:{"2.5":0}}; +module.exports={C:{"48":0.00488,"52":0.03415,"59":0.01464,"68":0.00488,"78":0.05367,"79":0.00488,"80":0.00976,"81":0.00976,"82":0.00488,"83":0.00488,"87":0.00976,"88":0.00488,"89":0.01464,"90":0.04391,"91":0.07319,"92":0.00488,"93":0.00488,"94":0.00976,"95":0.00976,"96":0.00488,"97":0.00488,"98":0.05855,"99":0.01952,"100":0.21956,"101":1.89793,"102":0.02927,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 84 85 86 103 104 3.5 3.6"},D:{"36":0.00976,"38":0.00488,"40":0.13661,"49":0.05367,"51":0.00976,"60":0.01464,"63":0.00488,"65":0.00976,"66":0.05855,"67":0.02927,"69":0.05367,"74":0.01464,"75":0.00976,"76":0.03903,"77":0.0244,"78":0.00976,"79":0.05855,"80":0.0244,"81":0.01952,"83":0.05855,"84":0.06831,"85":0.06343,"86":0.07319,"87":0.09758,"88":0.01464,"89":0.06343,"90":0.01464,"91":0.05367,"92":0.04879,"93":0.0927,"94":0.11222,"95":0.04391,"96":0.12198,"97":0.08782,"98":0.15125,"99":0.23907,"100":0.50742,"101":2.59075,"102":22.12139,"103":1.36612,"104":0.00976,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 39 41 42 43 44 45 46 47 48 50 52 53 54 55 56 57 58 59 61 62 64 68 70 71 72 73 105 106"},F:{"46":0.00976,"85":0.00976,"86":0.31714,"87":0.47326,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00976},B:{"15":0.00488,"17":0.00976,"18":0.05367,"84":0.00488,"85":0.00976,"87":0.00488,"91":0.00488,"92":0.01952,"93":0.01464,"95":0.00976,"96":0.00976,"97":0.01464,"98":0.01952,"99":0.03415,"100":0.06343,"101":1.01971,"102":6.58665,"103":1.01971,_:"12 13 14 16 79 80 81 83 86 88 89 90 94"},E:{"4":0,"13":0.04879,"14":0.26835,"15":0.08294,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.00488,"10.1":0.00976,"11.1":0.04391,"12.1":0.06831,"13.1":0.31226,"14.1":0.82943,"15.1":0.15125,"15.2-15.3":0.15613,"15.4":1.04411,"15.5":3.16647,"16.0":0.00488},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00486,"7.0-7.1":0.01214,"8.1-8.4":0.00972,"9.0-9.2":0.00243,"9.3":0.22345,"10.0-10.2":0.00729,"10.3":0.20888,"11.0-11.2":0.08744,"11.3-11.4":0.05343,"12.0-12.1":0.02429,"12.2-12.5":0.9861,"13.0-13.1":0.01943,"13.2":0.00729,"13.3":0.04858,"13.4-13.7":0.16273,"14.0-14.4":0.53191,"14.5-14.8":2.16165,"15.0-15.1":0.45176,"15.2-15.3":1.48886,"15.4":3.24976,"15.5":14.46118,"16.0":0.02429},P:{"4":0.05373,"5.0-5.4":0.01045,"6.2-6.4":0.0107,"7.2-7.4":0.04122,"8.2":0.02141,"9.2":0.01095,"10.1":0.07086,"11.1-11.2":0.03224,"12.0":0.02149,"13.0":0.06447,"14.0":0.06447,"15.0":0.04298,"16.0":0.19342,"17.0":3.35259},I:{"0":0,"3":0,"4":0.01339,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00156,"4.2-4.3":0.0028,"4.4":0,"4.4.3-4.4.4":0.02834},A:{"8":0.005,"9":0.01499,"11":0.18982,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.13315},H:{"0":0.21817},L:{"0":22.51602},S:{"2.5":0},R:{_:"0"},M:{"0":0.45577}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GD.js index e72dbf354be95c..afe7814a00d1cc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GD.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GD.js @@ -1 +1 @@ -module.exports={C:{"47":0.00909,"52":0.00454,"60":0.01817,"72":0.00454,"78":0.01363,"86":0.19989,"89":0.00454,"91":0.02726,"95":0.00454,"96":0.99037,"97":1.17209,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 87 88 90 92 93 94 98 99 3.5 3.6"},D:{"38":0.01817,"49":0.00454,"63":0.01363,"65":0.00454,"71":0.02272,"73":0.05452,"76":0.10903,"77":0.04997,"79":0.01363,"80":0.00454,"81":0.02726,"83":0.26804,"84":0.00454,"85":0.00909,"86":0.02726,"87":0.10449,"88":0.01363,"89":0.02272,"90":0.00909,"91":0.04543,"92":0.09086,"93":0.07269,"94":0.02726,"95":0.02726,"96":0.26349,"97":8.08654,"98":16.7455,"99":0.01817,"100":0.00454,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 66 67 68 69 70 72 74 75 78 101"},F:{"67":0.24532,"82":0.16355,"83":0.62693,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.09086,"18":0.01363,"92":0.03634,"96":0.04997,"97":2.21698,"98":7.60044,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95"},E:{"4":0,"13":0.00909,"14":0.14538,"15":0.19535,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 11.1 15.4","5.1":0.01363,"9.1":0.01817,"12.1":0.04089,"13.1":0.18626,"14.1":0.59513,"15.1":0.77231,"15.2-15.3":0.82683},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00619,"6.0-6.1":0,"7.0-7.1":0.09704,"8.1-8.4":0,"9.0-9.2":0.03097,"9.3":0.0702,"10.0-10.2":0,"10.3":0.26324,"11.0-11.2":0.01032,"11.3-11.4":0.02581,"12.0-12.1":0.00619,"12.2-12.5":0.49242,"13.0-13.1":0.00206,"13.2":0,"13.3":0.01961,"13.4-13.7":0.05471,"14.0-14.4":0.23434,"14.5-14.8":1.51856,"15.0-15.1":2.12454,"15.2-15.3":5.34645,"15.4":0.01652},P:{"4":0.07596,"5.0-5.4":0.04073,"6.2-6.4":0.01071,"7.2-7.4":0.21703,"8.2":0.01071,"9.2":0.0632,"10.1":0.02096,"11.1-11.2":0.13022,"12.0":0.02107,"13.0":0.04341,"14.0":0.04341,"15.0":0.11937,"16.0":3.16868},I:{"0":0,"3":0,"4":0.00084,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00127,"4.4":0,"4.4.3-4.4.4":0.09066},A:{"11":0.06815,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.10368},Q:{"10.4":0},O:{"0":0.07094},H:{"0":0.19115},L:{"0":37.10759},S:{"2.5":0}}; +module.exports={C:{"45":0.00416,"47":0.00416,"52":0.00831,"60":0.00831,"86":0.00831,"87":0.00416,"89":0.02494,"91":0.01662,"95":0.00831,"100":0.2452,"101":1.32161,"102":0.01662,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 88 90 92 93 94 96 97 98 99 103 104 3.5 3.6"},D:{"38":0.00416,"49":0.01662,"53":0.02494,"63":0.05403,"73":0.0665,"76":0.04572,"77":0.0374,"78":0.01247,"79":0.14962,"81":0.02909,"87":0.04156,"88":0.00416,"89":0.01662,"91":0.00416,"92":0.05403,"93":0.07481,"94":0.02909,"96":0.10806,"97":0.04156,"98":0.04156,"99":0.07065,"100":0.30754,"101":2.24424,"102":20.43921,"103":2.28996,"104":0.01247,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 70 71 72 74 75 80 83 84 85 86 90 95 105 106"},F:{"74":0.00416,"85":0.00831,"86":0.14962,"87":0.54444,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00416,"18":0.01247,"92":0.01247,"96":0.02909,"99":0.01247,"100":0.01247,"101":1.35901,"102":5.15344,"103":0.92679,_:"12 13 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 97 98"},E:{"4":0,"12":0.01247,"14":0.07481,"15":0.04156,_:"0 5 6 7 8 9 10 11 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01247,"12.1":0.01662,"13.1":0.16208,"14.1":0.17455,"15.1":0.16208,"15.2-15.3":0.02909,"15.4":0.2452,"15.5":1.08472},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01025,"6.0-6.1":0,"7.0-7.1":0.03383,"8.1-8.4":0,"9.0-9.2":0.0041,"9.3":0.07074,"10.0-10.2":0,"10.3":0.06254,"11.0-11.2":0,"11.3-11.4":0.01025,"12.0-12.1":0.00205,"12.2-12.5":0.53825,"13.0-13.1":0,"13.2":0,"13.3":0.00205,"13.4-13.7":0.05126,"14.0-14.4":0.16404,"14.5-14.8":0.85095,"15.0-15.1":0.08407,"15.2-15.3":0.84275,"15.4":1.7911,"15.5":5.70445,"16.0":0.02768},P:{"4":0.09492,"5.0-5.4":0.03078,"6.2-6.4":0.03078,"7.2-7.4":0.22147,"8.2":0.06207,"9.2":0.01055,"10.1":0.02016,"11.1-11.2":0.05273,"12.0":0.39548,"13.0":0.04218,"14.0":0.06328,"15.0":0.03164,"16.0":0.29529,"17.0":3.29043},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00294,"4.4":0,"4.4.3-4.4.4":0.08472},A:{"11":0.01247,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.00584},Q:{"10.4":0},O:{"0":0.05844},H:{"0":0.23237},L:{"0":46.1426},S:{"2.5":0},R:{_:"0"},M:{"0":0.33311}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GE.js index 64078eac6145f9..2d8f52cb698f8d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GE.js @@ -1 +1 @@ -module.exports={C:{"34":0.00428,"48":0.00428,"52":0.00855,"68":0.02139,"78":0.03849,"83":0.00428,"84":0.00855,"88":0.01283,"89":0.00855,"90":0.00428,"91":0.01283,"94":0.00428,"95":0.01711,"96":0.41487,"97":0.71426,"98":0.00855,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 85 86 87 92 93 99 3.5 3.6"},D:{"38":0.00855,"47":0.02566,"49":0.05988,"50":0.01283,"53":0.00855,"56":0.01283,"59":0.01711,"62":0.02566,"63":0.00855,"64":0.00855,"66":0.02139,"67":0.00855,"68":0.02566,"69":0.01711,"70":0.00855,"71":0.01711,"72":0.00855,"73":0.01283,"74":0.01711,"75":0.02139,"76":0.06843,"77":0.00855,"78":0.04705,"79":0.19247,"80":0.01711,"81":0.02566,"83":0.04705,"84":0.02994,"85":0.02994,"86":0.07699,"87":0.08554,"88":0.07271,"89":0.03422,"90":0.11976,"91":0.05132,"92":0.07699,"93":0.10265,"94":0.08126,"95":0.10693,"96":0.44053,"97":8.09208,"98":20.24304,"99":0.03422,"100":0.1112,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 51 52 54 55 57 58 60 61 65 101"},F:{"28":0.04705,"36":0.00428,"40":0.00428,"46":0.01711,"49":0.00428,"67":0.00855,"72":0.01283,"73":0.00855,"77":0.03849,"79":0.00855,"80":0.00855,"81":0.01711,"82":0.41487,"83":2.7715,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 74 75 76 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00855,"13":0.08554,"14":0.23096,"15":0.00428,"16":0.10265,"17":0.02139,"18":0.15825,"84":0.02994,"88":0.00855,"89":0.00855,"91":0.00428,"92":0.01283,"93":0.00428,"94":0.00855,"95":0.02139,"96":0.09837,"97":0.77414,"98":3.06233,_:"79 80 81 83 85 86 87 90"},E:{"4":0,"13":0.02566,"14":0.06843,"15":0.02994,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00855,"12.1":0.02139,"13.1":0.07271,"14.1":0.19674,"15.1":0.13259,"15.2-15.3":0.23524,"15.4":0.04277},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.03446,"6.0-6.1":0.0053,"7.0-7.1":0.22133,"8.1-8.4":0.00133,"9.0-9.2":0.00265,"9.3":0.09277,"10.0-10.2":0.00398,"10.3":0.12856,"11.0-11.2":0.05964,"11.3-11.4":0.02916,"12.0-12.1":0.03048,"12.2-12.5":0.95823,"13.0-13.1":0.02518,"13.2":0.01325,"13.3":0.09145,"13.4-13.7":0.277,"14.0-14.4":0.88003,"14.5-14.8":2.61624,"15.0-15.1":2.22128,"15.2-15.3":5.50815,"15.4":0.05169},P:{"4":0.58696,"5.0-5.4":0.04073,"6.2-6.4":0.01018,"7.2-7.4":0.1153,"8.2":0.02094,"9.2":0.07127,"10.1":0.02096,"11.1-11.2":0.08385,"12.0":0.01048,"13.0":0.1153,"14.0":0.15722,"15.0":0.06289,"16.0":1.09007},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00465,"4.2-4.3":0.02944,"4.4":0,"4.4.3-4.4.4":0.11468},A:{"11":0.11548,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.06866},Q:{"10.4":0},O:{"0":0.08583},H:{"0":0.20585},L:{"0":41.13343},S:{"2.5":0}}; +module.exports={C:{"48":0.00441,"52":0.00882,"68":0.00882,"78":0.03088,"84":0.00882,"88":0.04853,"89":0.00882,"91":0.01324,"99":0.06177,"100":0.13236,"101":1.10741,"102":0.05294,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 90 92 93 94 95 96 97 98 103 104 3.5 3.6"},D:{"38":0.00882,"47":0.02206,"49":0.06177,"50":0.00441,"53":0.00882,"56":0.02206,"62":0.00882,"63":0.01324,"66":0.03088,"67":0.00441,"68":0.01765,"69":0.00441,"70":0.00882,"71":0.01324,"73":0.00882,"74":0.0353,"75":0.00441,"76":0.06618,"77":0.00441,"78":0.01324,"79":0.20736,"80":0.03088,"81":0.02206,"83":0.05736,"84":0.11471,"85":0.03971,"86":0.04412,"87":0.06177,"88":0.04412,"89":0.04412,"90":0.08824,"91":0.05294,"92":0.04412,"93":0.02647,"94":0.03971,"95":0.06177,"96":0.10148,"97":0.07942,"98":0.10589,"99":0.11912,"100":0.2956,"101":1.38537,"102":26.30434,"103":2.55896,"104":0.08824,"105":0.04853,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 51 52 54 55 57 58 59 60 61 64 65 72 106"},F:{"28":0.0353,"36":0.00882,"40":0.00441,"45":0.00441,"46":0.00882,"48":0.01765,"63":0.01324,"73":0.00441,"77":0.02647,"79":0.03088,"82":0.00441,"84":0.02206,"85":0.14118,"86":0.6265,"87":2.45307,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 47 49 50 51 52 53 54 55 56 57 58 60 62 64 65 66 67 68 69 70 71 72 74 75 76 78 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00882,"13":0.03971,"14":0.14118,"15":0.00441,"16":0.04412,"18":0.05736,"84":0.01324,"88":0.00441,"89":0.00441,"91":0.00441,"92":0.00882,"95":0.00882,"96":0.02647,"97":0.01324,"98":0.01324,"99":0.02206,"100":0.02647,"101":0.30002,"102":2.05599,"103":0.41914,_:"17 79 80 81 83 85 86 87 90 93 94"},E:{"4":0,"13":0.00882,"14":0.06177,"15":0.02206,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.01765,"13.1":0.05294,"14.1":0.17648,"15.1":0.03971,"15.2-15.3":0.10589,"15.4":0.23825,"15.5":0.48973},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01441,"6.0-6.1":0.0012,"7.0-7.1":0.13325,"8.1-8.4":0,"9.0-9.2":0.0024,"9.3":0.04322,"10.0-10.2":0.006,"10.3":0.11524,"11.0-11.2":0.04922,"11.3-11.4":0.01561,"12.0-12.1":0.02161,"12.2-12.5":0.84273,"13.0-13.1":0.02041,"13.2":0.012,"13.3":0.06723,"13.4-13.7":0.18607,"14.0-14.4":0.55462,"14.5-14.8":1.2761,"15.0-15.1":0.38535,"15.2-15.3":0.73469,"15.4":2.11883,"15.5":5.31207,"16.0":0.06843},P:{"4":0.42038,"5.0-5.4":0.03078,"6.2-6.4":0.03078,"7.2-7.4":0.09459,"8.2":0.06207,"9.2":0.01051,"10.1":0.02016,"11.1-11.2":0.04204,"12.0":0.01032,"13.0":0.07357,"14.0":0.09459,"15.0":0.04204,"16.0":0.19968,"17.0":1.31369},I:{"0":0,"3":0,"4":0.00465,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00697,"4.2-4.3":0.02788,"4.4":0,"4.4.3-4.4.4":0.16726},A:{"11":0.05736,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.08941},H:{"0":0.26452},L:{"0":41.52245},S:{"2.5":0},R:{_:"0"},M:{"0":0.08941}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GF.js index 2e90429448e516..7f3e920407ab5e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GF.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GF.js @@ -1 +1 @@ -module.exports={C:{"35":0.00844,"52":0.0211,"60":0.03376,"68":0.00422,"71":0.00844,"73":0.00422,"76":0.07174,"77":0.00422,"78":0.1055,"81":0.01688,"83":0.00422,"85":0.01266,"86":0.00844,"88":0.02954,"89":0.01266,"91":0.1055,"92":0.01266,"94":0.01266,"95":0.05064,"96":2.28302,"97":3.87818,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 72 74 75 79 80 82 84 87 90 93 98 99 3.5 3.6"},D:{"38":0.00844,"39":0.02954,"47":0.00422,"49":0.1055,"51":0.00422,"63":0.01688,"66":0.00422,"67":0.01266,"76":0.02532,"78":0.00422,"79":0.02532,"87":0.0211,"88":0.01266,"89":0.04642,"90":0.01688,"91":0.02954,"92":0.0422,"93":0.02954,"94":0.04642,"95":0.0211,"96":0.2743,"97":5.4016,"98":12.5334,"100":0.01266,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 48 50 52 53 54 55 56 57 58 59 60 61 62 64 65 68 69 70 71 72 73 74 75 77 80 81 83 84 85 86 99 101"},F:{"46":0.01266,"79":0.01266,"82":0.20678,"83":0.59502,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.06752,"15":0.00422,"16":0.01266,"17":0.00422,"18":0.03376,"88":0.00422,"89":0.00422,"90":0.00422,"92":0.00844,"94":0.00844,"95":0.00844,"96":0.08018,"97":2.15642,"98":7.10648,_:"13 14 79 80 81 83 84 85 86 87 91 93"},E:{"4":0,"11":0.00844,"13":0.34182,"14":0.32494,"15":0.211,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 15.4","9.1":0.00422,"10.1":0.05064,"11.1":0.03376,"12.1":0.03798,"13.1":0.29962,"14.1":1.25756,"15.1":0.47686,"15.2-15.3":0.76804},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.00736,"9.3":0.03236,"10.0-10.2":0,"10.3":0.04119,"11.0-11.2":0.15593,"11.3-11.4":0.00441,"12.0-12.1":0.0103,"12.2-12.5":0.33686,"13.0-13.1":0.05296,"13.2":0,"13.3":0.01765,"13.4-13.7":0.22654,"14.0-14.4":0.59871,"14.5-14.8":2.68903,"15.0-15.1":2.26243,"15.2-15.3":8.23036,"15.4":0.03825},P:{"4":0.08228,"5.0-5.4":0.02093,"6.2-6.4":0.04074,"7.2-7.4":0.10285,"8.2":0.0104,"9.2":0.01094,"10.1":0.04074,"11.1-11.2":0.10285,"12.0":0.02057,"13.0":0.40113,"14.0":0.16457,"15.0":0.08228,"16.0":3.05477},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00189,"4.2-4.3":0.00236,"4.4":0,"4.4.3-4.4.4":0.01887},A:{"11":0.1055,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.48552},Q:{"10.4":0},O:{"0":0.02312},H:{"0":0.17511},L:{"0":37.47044},S:{"2.5":0}}; +module.exports={C:{"35":0.00384,"52":0.00767,"57":0.01151,"59":0.02301,"68":0.00767,"78":0.02301,"81":0.01151,"84":0.00384,"86":0.02685,"87":0.00384,"88":0.03835,"89":0.02301,"91":0.19942,"92":0.00384,"95":0.02301,"98":0.01534,"99":0.06136,"100":0.88972,"101":3.14087,"102":0.16874,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 58 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 82 83 85 90 93 94 96 97 103 104 3.5 3.6"},D:{"49":0.46787,"65":0.00384,"74":0.00767,"76":0.01151,"77":0.00384,"79":0.01534,"80":0.00384,"83":0.00384,"84":0.01151,"86":0.00384,"87":0.01534,"88":0.00767,"89":0.01534,"90":0.02301,"91":0.01534,"92":0.01534,"94":0.03068,"95":0.03068,"96":0.01151,"97":0.02301,"98":0.02685,"99":0.02685,"100":0.37967,"101":0.92424,"102":14.95267,"103":1.64905,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 75 78 81 85 93 104 105 106"},F:{"40":0.03068,"80":0.01918,"86":0.21093,"87":0.59059,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.12272,"15":0.00767,"17":0.01534,"18":0.01151,"84":0.01534,"89":0.00384,"90":0.00384,"92":0.00767,"94":0.00384,"95":0.00384,"96":0.00384,"97":0.01151,"98":0.01151,"99":0.02301,"100":0.02685,"101":0.89739,"102":6.91834,"103":1.18502,_:"13 14 16 79 80 81 83 85 86 87 88 91 93"},E:{"4":0,"13":0.08437,"14":0.28379,"15":0.04602,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.02301,"11.1":0.06136,"12.1":0.04986,"13.1":0.25311,"14.1":0.44486,"15.1":0.05369,"15.2-15.3":0.13806,"15.4":0.51389,"15.5":0.78234},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.24275,"10.0-10.2":0,"10.3":0.0239,"11.0-11.2":0,"11.3-11.4":0.00126,"12.0-12.1":0.01635,"12.2-12.5":0.15219,"13.0-13.1":0.02516,"13.2":0.00503,"13.3":0.04276,"13.4-13.7":0.12074,"14.0-14.4":0.4289,"14.5-14.8":1.2653,"15.0-15.1":0.65278,"15.2-15.3":0.54461,"15.4":3.22866,"15.5":5.75927,"16.0":0.04025},P:{"4":0.1432,"5.0-5.4":0.01054,"6.2-6.4":0.02037,"7.2-7.4":0.10229,"8.2":0.06207,"9.2":0.03069,"10.1":0.02016,"11.1-11.2":0.15343,"12.0":0.03069,"13.0":0.33755,"14.0":0.22503,"15.0":0.11252,"16.0":0.45007,"17.0":3.59032},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01121,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.08125},A:{"11":0.0652,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.04931},H:{"0":0.15173},L:{"0":44.54613},S:{"2.5":0},R:{_:"0"},M:{"0":0.25272}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GG.js index ac00daecf62679..ab5aa96b5231b9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GG.js @@ -1 +1 @@ -module.exports={C:{"52":0.37455,"70":0.01998,"78":0.01498,"87":0.05993,"94":0.00999,"95":0.01998,"96":0.58929,"97":0.98881,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 91 92 93 98 99 3.5 3.6"},D:{"38":0.00999,"49":0.00999,"65":0.01498,"66":0.00499,"67":0.00499,"76":0.37954,"77":0.06992,"78":0.00499,"79":0.00499,"81":0.01998,"83":0.01498,"84":0.01498,"86":0.00999,"87":0.07491,"88":0.00499,"90":0.04994,"91":0.05493,"92":0.03496,"93":0.31962,"94":0.00999,"95":0.02497,"96":0.54435,"97":7.72572,"98":14.50258,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 68 69 70 71 72 73 74 75 80 85 89 99 100 101"},F:{"82":0.05493,"83":0.43448,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.03496,"18":0.00999,"87":0.00499,"90":0.00999,"91":0.01998,"95":0.00999,"96":0.02996,"97":1.7479,"98":6.35736,_:"12 13 14 15 16 79 80 81 83 84 85 86 88 89 92 93 94"},E:{"4":0,"11":0.00499,"13":0.06492,"14":0.70415,"15":0.38454,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.15981,"12.1":0.07491,"13.1":0.87395,"14.1":2.46704,"15.1":1.67798,"15.2-15.3":4.3298},G:{"8":0.03144,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":2.77303,"10.0-10.2":0,"10.3":0.55335,"11.0-11.2":0.07231,"11.3-11.4":0.01572,"12.0-12.1":0.01886,"12.2-12.5":1.41481,"13.0-13.1":0.00314,"13.2":0,"13.3":0.03458,"13.4-13.7":0.33955,"14.0-14.4":1.12871,"14.5-14.8":5.33541,"15.0-15.1":4.41421,"15.2-15.3":15.27368,"15.4":0.01258},P:{"4":0.13335,"5.0-5.4":0.04073,"6.2-6.4":0.01071,"7.2-7.4":0.18464,"8.2":0.01071,"9.2":0.03077,"10.1":0.02096,"11.1-11.2":0.0561,"12.0":0.02052,"13.0":0.03366,"14.0":0.21317,"15.0":0.15707,"16.0":4.22969},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.93388,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.17518},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":14.1478},S:{"2.5":0}}; +module.exports={C:{"52":0.00513,"78":0.03078,"91":0.02565,"98":0.01026,"99":0.04617,"100":0.42066,"101":2.19051,"102":0.05643,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 103 104 3.5 3.6"},D:{"49":0.01026,"65":0.01026,"70":0.00513,"76":0.40527,"77":0.13851,"79":0.00513,"83":0.00513,"84":0.01026,"85":0.00513,"86":0.09747,"87":0.1026,"91":0.01539,"93":0.24624,"94":0.01026,"95":0.00513,"96":0.07182,"97":0.10773,"98":0.04617,"99":0.23598,"100":0.66177,"101":1.83654,"102":17.34453,"103":1.80063,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 71 72 73 74 75 78 80 81 88 89 90 92 104 105 106"},F:{"85":0.4104,"86":0.07695,"87":0.14364,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.01026,"93":0.00513,"95":0.03591,"96":0.03591,"97":0.00513,"98":0.0513,"99":0.03078,"100":0.07182,"101":1.13886,"102":5.48397,"103":1.1799,_:"12 13 14 15 16 18 79 80 81 83 84 85 86 87 88 89 90 91 92 94"},E:{"4":0,"13":0.02565,"14":0.72333,"15":0.15903,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.02052,"11.1":0.1026,"12.1":0.02565,"13.1":0.48222,"14.1":2.21103,"15.1":0.3078,"15.2-15.3":0.12312,"15.4":2.71377,"15.5":7.61805},G:{"8":0.03932,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00605,"9.0-9.2":0,"9.3":0.45672,"10.0-10.2":0,"10.3":0.614,"11.0-11.2":0.05444,"11.3-11.4":0.02722,"12.0-12.1":0.04839,"12.2-12.5":1.33083,"13.0-13.1":0.02722,"13.2":0.03932,"13.3":0.01815,"13.4-13.7":0.36598,"14.0-14.4":0.94368,"14.5-14.8":2.75241,"15.0-15.1":0.52931,"15.2-15.3":1.09794,"15.4":3.68097,"15.5":18.18404,"16.0":0.0121},P:{"4":0.02184,"5.0-5.4":0.03078,"6.2-6.4":0.03078,"7.2-7.4":0.19494,"8.2":0.06207,"9.2":0.03078,"10.1":0.02016,"11.1-11.2":0.0546,"12.0":0.02052,"13.0":0.08736,"14.0":0.01092,"15.0":0.07182,"16.0":0.2184,"17.0":3.84379},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.71307,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.05072},L:{"0":13.92075},S:{"2.5":0},R:{_:"0"},M:{"0":0.45291}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GH.js index 807daf2902a570..a783fcc4abd35a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GH.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GH.js @@ -1 +1 @@ -module.exports={C:{"30":0.00231,"31":0.00231,"35":0.00461,"40":0.00231,"41":0.00231,"42":0.00231,"43":0.00461,"44":0.00231,"45":0.00231,"47":0.00692,"48":0.00692,"49":0.00692,"50":0.00461,"52":0.01614,"56":0.00692,"64":0.00231,"66":0.00461,"68":0.00461,"69":0.00231,"72":0.01153,"73":0.00231,"74":0.00231,"78":0.01153,"81":0.00461,"83":0.00231,"84":0.00692,"85":0.00692,"86":0.00461,"87":0.00692,"88":0.01153,"89":0.01153,"90":0.00231,"91":0.01614,"92":0.00922,"93":0.01153,"94":0.01384,"95":0.04843,"96":0.77943,"97":1.01695,"98":0.0761,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 32 33 34 36 37 38 39 46 51 53 54 55 57 58 59 60 61 62 63 65 67 70 71 75 76 77 79 80 82 99 3.5 3.6"},D:{"11":0.00231,"33":0.00231,"38":0.00461,"39":0.00231,"43":0.00461,"47":0.00461,"49":0.02075,"50":0.00692,"55":0.00461,"56":0.00461,"57":0.00461,"58":0.00692,"60":0.00461,"63":0.00922,"64":0.00231,"65":0.00922,"66":0.00231,"67":0.01153,"68":0.02075,"69":0.01153,"70":0.00922,"71":0.00461,"72":0.00922,"73":0.00231,"74":0.00922,"75":0.01614,"76":0.01384,"77":0.04843,"78":0.01384,"79":0.03459,"80":0.02998,"81":0.02998,"83":0.02537,"84":0.01153,"85":0.01614,"86":0.03228,"87":0.06457,"88":0.06457,"89":0.03228,"90":0.02075,"91":0.05073,"92":0.05304,"93":0.04151,"94":0.05996,"95":0.07149,"96":0.33668,"97":3.67576,"98":7.97876,"99":0.01153,"100":0.02075,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 40 41 42 44 45 46 48 51 52 53 54 59 61 62 101"},F:{"36":0.00231,"42":0.00692,"67":0.00692,"73":0.00461,"79":0.00922,"80":0.00461,"82":0.11069,"83":0.90856,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 74 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02998,"13":0.00922,"14":0.00922,"15":0.01153,"16":0.02075,"17":0.01845,"18":0.0761,"84":0.0369,"85":0.01384,"89":0.06687,"90":0.02075,"91":0.00461,"92":0.05073,"93":0.01153,"94":0.01384,"95":0.02306,"96":0.08532,"97":0.55113,"98":1.51735,_:"79 80 81 83 86 87 88"},E:{"4":0,"11":0.00231,"12":0.00231,"13":0.01153,"14":0.05996,"15":0.05073,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 15.4","5.1":0.00692,"9.1":0.00461,"10.1":0.00692,"11.1":0.01614,"12.1":0.02537,"13.1":0.09224,"14.1":0.15911,"15.1":0.11069,"15.2-15.3":0.18448},G:{"8":0.00571,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00143,"7.0-7.1":0.02282,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04422,"10.0-10.2":0.00285,"10.3":0.13552,"11.0-11.2":0.50785,"11.3-11.4":0.03566,"12.0-12.1":0.04993,"12.2-12.5":1.46079,"13.0-13.1":0.06847,"13.2":0.04422,"13.3":0.15977,"13.4-13.7":0.3652,"14.0-14.4":2.22114,"14.5-14.8":2.85739,"15.0-15.1":2.77037,"15.2-15.3":3.47794,"15.4":0.02568},P:{"4":0.1264,"5.0-5.4":0.04073,"6.2-6.4":0.01018,"7.2-7.4":0.13693,"8.2":0.02094,"9.2":0.0632,"10.1":0.02096,"11.1-11.2":0.13693,"12.0":0.02107,"13.0":0.08427,"14.0":0.21067,"15.0":0.16854,"16.0":0.82161},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00196,"4.2-4.3":0.00476,"4.4":0,"4.4.3-4.4.4":0.03945},A:{"10":0.00461,"11":0.08763,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.02308},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.31545},Q:{"10.4":0},O:{"0":2.03122},H:{"0":13.00955},L:{"0":46.8191},S:{"2.5":0}}; +module.exports={C:{"43":0.00254,"47":0.01271,"48":0.00762,"49":0.00254,"52":0.01779,"56":0.00254,"66":0.00762,"68":0.00508,"69":0.00254,"72":0.01525,"77":0.00254,"78":0.01016,"81":0.00508,"82":0.00254,"83":0.00508,"84":0.00254,"85":0.00762,"86":0.00254,"87":0.00508,"88":0.02033,"89":0.00508,"91":0.02287,"94":0.01271,"95":0.01016,"96":0.00762,"97":0.00762,"98":0.01016,"99":0.03303,"100":0.24902,"101":1.46362,"102":0.12705,"103":0.00508,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 50 51 53 54 55 57 58 59 60 61 62 63 64 65 67 70 71 73 74 75 76 79 80 90 92 93 104 3.5 3.6"},D:{"21":0.00254,"38":0.00508,"47":0.00254,"49":0.01016,"50":0.00508,"55":0.01016,"56":0.00762,"58":0.00254,"60":0.00254,"63":0.01271,"64":0.00508,"65":0.01271,"66":0.00254,"67":0.00762,"68":0.01525,"69":0.00762,"70":0.00508,"71":0.00254,"72":0.00508,"73":0.00508,"74":0.02033,"75":0.01016,"76":0.01016,"77":0.04066,"78":0.01271,"79":0.04828,"80":0.04828,"81":0.02795,"83":0.02287,"84":0.01779,"85":0.02541,"86":0.0559,"87":0.04574,"88":0.03557,"89":0.03303,"90":0.01525,"91":0.04066,"92":0.02795,"93":0.03049,"94":0.03557,"95":0.03812,"96":0.06353,"97":0.03812,"98":0.08385,"99":0.10672,"100":0.18549,"101":0.73943,"102":9.73457,"103":0.92747,"104":0.02287,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 51 52 53 54 57 59 61 62 105 106"},F:{"42":0.00254,"70":0.00254,"79":0.01271,"82":0.00508,"83":0.00508,"84":0.00762,"85":0.03557,"86":0.09656,"87":0.76484,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0432,"13":0.01271,"14":0.01016,"15":0.01271,"16":0.01525,"17":0.02033,"18":0.08639,"84":0.03049,"85":0.01016,"89":0.04574,"90":0.02541,"91":0.00254,"92":0.05082,"93":0.00254,"94":0.00254,"95":0.00254,"96":0.01779,"97":0.01016,"98":0.01271,"99":0.02541,"100":0.03557,"101":0.36845,"102":1.5805,"103":0.26935,_:"79 80 81 83 86 87 88"},E:{"4":0,"13":0.03812,"14":0.05336,"15":0.02033,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.00254,"10.1":0.00254,"11.1":0.02033,"12.1":0.01271,"13.1":0.2541,"14.1":0.08385,"15.1":0.03049,"15.2-15.3":0.03303,"15.4":0.13976,"15.5":0.22361,"16.0":0.00254},G:{"8":0.00287,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01006,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02731,"10.0-10.2":0.00144,"10.3":0.0848,"11.0-11.2":0.14085,"11.3-11.4":0.02156,"12.0-12.1":0.05749,"12.2-12.5":1.23888,"13.0-13.1":0.05893,"13.2":0.02156,"13.3":0.1121,"13.4-13.7":0.2472,"14.0-14.4":1.68442,"14.5-14.8":1.98192,"15.0-15.1":1.53351,"15.2-15.3":1.614,"15.4":2.06528,"15.5":3.38752,"16.0":0.05749},P:{"4":0.09607,"5.0-5.4":0.03078,"6.2-6.4":0.03078,"7.2-7.4":0.12809,"8.2":0.06207,"9.2":0.06405,"10.1":0.02016,"11.1-11.2":0.06405,"12.0":0.01067,"13.0":0.06405,"14.0":0.12809,"15.0":0.06405,"16.0":0.22416,"17.0":0.86462},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00284,"4.2-4.3":0.00693,"4.4":0,"4.4.3-4.4.4":0.03498},A:{"8":0.00254,"10":0.00508,"11":0.04828,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.02237},Q:{"10.4":0},O:{"0":1.90179},H:{"0":12.14449},L:{"0":48.65332},S:{"2.5":0},R:{_:"0"},M:{"0":0.34307}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GI.js index 8a22d3b959ba5a..c93d4f6071f3cd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GI.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GI.js @@ -1 +1 @@ -module.exports={C:{"78":0.07764,"89":0.04658,"90":0.06729,"91":0.01035,"95":0.01035,"96":0.47102,"97":0.71946,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 92 93 94 98 99 3.5 3.6"},D:{"49":0.01035,"60":0.05176,"74":0.00518,"78":0.01035,"79":0.03623,"80":0.02588,"81":0.07246,"83":0.01035,"84":0.15528,"86":0.02588,"87":0.02588,"89":0.07764,"90":0.04141,"91":0.01553,"92":0.02588,"93":0.69876,"94":0.06211,"95":0.17081,"96":0.27433,"97":9.79299,"98":21.29924,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 85 88 99 100 101"},F:{"36":0.02588,"82":0.11905,"83":0.40373,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.08799,"92":0.03106,"95":0.06729,"96":0.03623,"97":1.30953,"98":4.7878,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94"},E:{"4":0,"9":0.01035,"13":0.47619,"14":0.61077,"15":0.46066,_:"0 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.03623,"11.1":0.03106,"12.1":0.24845,"13.1":0.34162,"14.1":2.14286,"15.1":0.97309,"15.2-15.3":2.24638,"15.4":0.01035},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.01613,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.19966,"9.3":0.12706,"10.0-10.2":0,"10.3":0.09882,"11.0-11.2":0.11697,"11.3-11.4":0.02017,"12.0-12.1":0.02622,"12.2-12.5":0.44167,"13.0-13.1":0.00403,"13.2":0.00403,"13.3":0.07059,"13.4-13.7":0.13311,"14.0-14.4":0.6857,"14.5-14.8":4.43081,"15.0-15.1":3.53941,"15.2-15.3":10.20075,"15.4":0.04437},P:{"4":0.12606,"5.0-5.4":0.04073,"6.2-6.4":0.01018,"7.2-7.4":0.13693,"8.2":0.02094,"9.2":0.0632,"10.1":0.02096,"11.1-11.2":0.04202,"12.0":0.02107,"13.0":0.04202,"14.0":0.06303,"15.0":0.02101,"16.0":4.20184},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.14493,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":3.89779},Q:{"10.4":0},O:{"0":0.06271},H:{"0":0.70789},L:{"0":19.50756},S:{"2.5":0}}; +module.exports={C:{"78":0.01625,"100":0.10294,"101":1.30574,"102":0.02167,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 103 104 3.5 3.6"},D:{"60":0.0596,"63":0.04876,"76":0.01084,"79":0.01084,"81":0.02167,"83":0.01625,"86":0.00542,"87":0.1192,"89":0.00542,"90":0.00542,"96":0.0596,"97":0.03793,"98":0.20588,"99":0.51471,"100":0.8723,"101":2.01008,"102":24.14261,"103":2.73609,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 61 62 64 65 66 67 68 69 70 71 72 73 74 75 77 78 80 84 85 88 91 92 93 94 95 104 105 106"},F:{"32":0.01625,"36":0.0596,"86":0.15712,"87":0.61765,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01625,"92":0.00542,"100":0.00542,"101":2.88238,"102":5.58054,"103":2.15095,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99"},E:{"4":0,"12":0.00542,"13":0.04876,"14":0.29799,"15":0.0596,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01084,"12.1":0.09752,"13.1":0.40635,"14.1":0.67725,"15.1":0.17879,"15.2-15.3":0.49304,"15.4":1.47911,"15.5":3.733},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.01655,"7.0-7.1":0,"8.1-8.4":0.00207,"9.0-9.2":0.00207,"9.3":0.0455,"10.0-10.2":0.02895,"10.3":0.05171,"11.0-11.2":0.01034,"11.3-11.4":0.00414,"12.0-12.1":0.00207,"12.2-12.5":0.34746,"13.0-13.1":0.01861,"13.2":0,"13.3":0.03309,"13.4-13.7":0.06205,"14.0-14.4":0.47776,"14.5-14.8":1.71248,"15.0-15.1":0.47776,"15.2-15.3":1.11477,"15.4":4.54799,"15.5":11.66884,"16.0":0.02689},P:{"4":0.01058,"5.0-5.4":0.03078,"6.2-6.4":0.03078,"7.2-7.4":0.12809,"8.2":0.06207,"9.2":0.06405,"10.1":0.02016,"11.1-11.2":0.06405,"12.0":0.03175,"13.0":0.03175,"14.0":0.27517,"15.0":0.01058,"16.0":0.29634,"17.0":3.54551},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.45511,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.1283},O:{"0":0.06415},H:{"0":1.08449},L:{"0":20.93441},S:{"2.5":0},R:{_:"0"},M:{"0":0.25201}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GL.js index ffc2e15283073d..a24440b7d80202 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GL.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GL.js @@ -1 +1 @@ -module.exports={C:{"48":0.00454,"78":0.04996,"87":0.00908,"89":0.00908,"90":0.00454,"91":0.01363,"94":0.14989,"95":0.02725,"96":0.77668,"97":1.32626,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 92 93 98 99 3.5 3.6"},D:{"38":0.01817,"49":0.03634,"52":0.00908,"53":0.01363,"58":0.01363,"65":0.04996,"67":0.00454,"68":0.02725,"73":0.02271,"79":0.01817,"80":0.08176,"81":0.01817,"84":0.01817,"86":0.01817,"88":0.09992,"89":0.24073,"90":0.06813,"91":0.01363,"92":0.01817,"93":0.06813,"94":0.07721,"95":0.1408,"96":0.29523,"97":5.3959,"98":14.41631,"99":0.01817,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 54 55 56 57 59 60 61 62 63 64 66 69 70 71 72 74 75 76 77 78 83 85 87 100 101"},F:{"31":0.00454,"36":0.02725,"80":0.01817,"82":0.40878,"83":0.45874,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00908,"15":0.00908,"16":0.00454,"18":0.04088,"84":0.01363,"85":0.02725,"88":0.00454,"91":0.00908,"92":0.00454,"95":0.01817,"96":0.02271,"97":1.11733,"98":3.22028,_:"12 13 17 79 80 81 83 86 87 89 90 93 94"},E:{"4":0,"12":0.08176,"13":0.46328,"14":0.52687,"15":0.21802,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01817,"11.1":0.04088,"12.1":0.13172,"13.1":0.50416,"14.1":4.65101,"15.1":2.62528,"15.2-15.3":3.57001,"15.4":0.03179},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.10064,"9.3":0.12199,"10.0-10.2":0,"10.3":0.05795,"11.0-11.2":0,"11.3-11.4":0.00305,"12.0-12.1":0.0061,"12.2-12.5":0.20128,"13.0-13.1":0.05795,"13.2":0.00915,"13.3":0,"13.4-13.7":0.0488,"14.0-14.4":0.48491,"14.5-14.8":2.56789,"15.0-15.1":3.7024,"15.2-15.3":23.01954,"15.4":0.10674},P:{"4":0.23569,"5.0-5.4":0.04073,"6.2-6.4":0.01071,"7.2-7.4":0.01071,"8.2":0.01071,"9.2":0.0632,"10.1":0.02096,"11.1-11.2":0.07499,"12.0":0.02107,"13.0":0.03214,"14.0":0.04285,"15.0":0.20355,"16.0":2.26046},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00504,"4.4":0,"4.4.3-4.4.4":0.01134},A:{"11":0.38607,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.28382},Q:{"10.4":0},O:{"0":0.04912},H:{"0":3.73594},L:{"0":16.05057},S:{"2.5":0}}; +module.exports={C:{"48":0.01796,"80":0.01347,"86":0.00449,"88":0.03593,"90":0.00449,"91":0.05838,"92":0.00898,"97":0.00449,"98":0.06287,"99":0.01796,"100":0.40868,"101":2.3937,"102":0.15719,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 82 83 84 85 87 89 93 94 95 96 103 104 3.5 3.6"},D:{"38":0.00449,"49":0.00898,"65":0.02695,"75":0.01347,"79":0.06737,"80":0.01347,"83":0.00898,"84":0.01347,"85":0.00449,"87":0.01796,"88":0.01796,"89":0.01796,"90":0.01347,"91":0.00898,"92":0.01347,"93":0.02695,"95":0.00449,"96":0.1976,"98":0.10778,"99":0.9476,"100":0.37724,"101":1.5494,"102":17.17808,"103":1.60778,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 76 77 78 81 86 94 97 104 105 106"},F:{"76":0.05838,"80":0.02246,"86":0.55239,"87":0.85778,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 79 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00449,"13":0.00898,"14":0.01347,"17":0.09431,"18":0.03144,"84":0.03144,"85":0.00449,"90":0.00449,"92":0.03144,"96":0.04042,"99":0.01796,"101":0.70509,"102":5.02992,"103":0.80838,_:"15 16 79 80 81 83 86 87 88 89 91 93 94 95 97 98 100"},E:{"4":0,"12":0.02695,"13":0.16617,"14":0.16617,"15":0.10778,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00898,"11.1":0.03144,"12.1":0.05838,"13.1":0.33233,"14.1":2.51945,"15.1":0.96557,"15.2-15.3":0.21108,"15.4":1.43263,"15.5":2.49251,"16.0":0.03144},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00882,"10.0-10.2":0,"10.3":0.04629,"11.0-11.2":0,"11.3-11.4":0.00882,"12.0-12.1":0.01764,"12.2-12.5":0.37697,"13.0-13.1":0.00441,"13.2":0.00441,"13.3":0.00661,"13.4-13.7":0.02204,"14.0-14.4":0.34831,"14.5-14.8":1.28962,"15.0-15.1":0.56876,"15.2-15.3":1.16838,"15.4":2.40289,"15.5":15.74,"16.0":0.01102},P:{"4":0.02081,"5.0-5.4":0.03078,"6.2-6.4":0.03078,"7.2-7.4":0.12809,"8.2":0.06207,"9.2":0.06405,"10.1":0.02016,"11.1-11.2":0.04268,"12.0":0.39548,"13.0":0.11448,"14.0":0.03122,"15.0":0.01041,"16.0":0.21856,"17.0":3.34079},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.02204},A:{"9":0.01796,"11":0.30988,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.04958},H:{"0":4.40715},L:{"0":23.94786},S:{"2.5":0},R:{_:"0"},M:{"0":0.53437}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GM.js index fd8b9f6d64f8da..aaca03d171b52c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GM.js @@ -1 +1 @@ -module.exports={C:{"34":0.00923,"43":0.00923,"47":0.00369,"49":0.00554,"52":0.00185,"56":0.01107,"65":0.00369,"69":0.00185,"72":0.01845,"78":0.00369,"85":0.00185,"88":0.00554,"91":0.00923,"93":0.00369,"94":0.00738,"95":0.00738,"96":0.64206,"97":0.98708,"98":0.1476,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 45 46 48 50 51 53 54 55 57 58 59 60 61 62 63 64 66 67 68 70 71 73 74 75 76 77 79 80 81 82 83 84 86 87 89 90 92 99 3.5 3.6"},D:{"31":0.00369,"33":0.00554,"34":0.00554,"38":0.01292,"40":0.00369,"47":0.00369,"49":0.01292,"53":0.00369,"55":0.01476,"57":0.01107,"58":0.01661,"60":0.00554,"64":0.00738,"65":0.01107,"67":0.00185,"68":0.00369,"69":0.00185,"70":0.00369,"72":0.00369,"74":0.00369,"75":0.01107,"77":0.00738,"78":0.00369,"79":0.03137,"80":0.00923,"81":0.00923,"84":0.00923,"85":0.00369,"86":0.00185,"87":0.07011,"88":0.00738,"89":0.00738,"90":0.00923,"91":0.01476,"92":0.01107,"93":0.15129,"94":0.02583,"95":0.01661,"96":0.12546,"97":1.85054,"98":5.97596,"99":0.03137,"100":0.0572,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 35 36 37 39 41 42 43 44 45 46 48 50 51 52 54 56 59 61 62 63 66 71 73 76 83 101"},F:{"21":0.00369,"79":0.00369,"82":0.05166,"83":1.01844,_:"9 11 12 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01845,"13":0.00369,"15":0.00738,"16":0.01476,"17":0.00185,"18":0.04797,"80":0.00185,"84":0.00369,"85":0.00554,"89":0.00923,"90":0.01292,"92":0.02214,"93":0.00369,"94":0.01845,"95":0.00923,"96":0.02768,"97":0.49815,"98":1.22508,_:"14 79 81 83 86 87 88 91"},E:{"4":0,"12":0.00185,"13":0.00738,"14":0.06089,"15":0.00554,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 15.4","9.1":0.00738,"10.1":0.00185,"11.1":0.00185,"12.1":0.01292,"13.1":0.04797,"14.1":0.12731,"15.1":0.07011,"15.2-15.3":0.12915},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01021,"6.0-6.1":0,"7.0-7.1":0.02918,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.17505,"10.0-10.2":0.00875,"10.3":0.20131,"11.0-11.2":0.02918,"11.3-11.4":0.09044,"12.0-12.1":0.11816,"12.2-12.5":3.98102,"13.0-13.1":0.06127,"13.2":0.01021,"13.3":0.33552,"13.4-13.7":0.43618,"14.0-14.4":2.33843,"14.5-14.8":2.90152,"15.0-15.1":1.46608,"15.2-15.3":2.37928,"15.4":0.01751},P:{"4":0.34619,"5.0-5.4":0.04073,"6.2-6.4":0.01018,"7.2-7.4":0.93674,"8.2":0.02094,"9.2":0.07127,"10.1":0.02043,"11.1-11.2":0.07127,"12.0":0.04073,"13.0":0.224,"14.0":0.72292,"15.0":0.08146,"16.0":0.97747},I:{"0":0,"3":0,"4":0.00042,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00017,"4.2-4.3":0.01475,"4.4":0,"4.4.3-4.4.4":0.02544},A:{"11":0.0572,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.95414},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.05709},Q:{"10.4":0},O:{"0":0.83997},H:{"0":2.42428},L:{"0":61.63072},S:{"2.5":0}}; +module.exports={C:{"34":0.03686,"41":0.0023,"43":0.01843,"44":0.00461,"47":0.0023,"50":0.00461,"52":0.0023,"56":0.01152,"61":0.0023,"68":0.00461,"72":0.01613,"78":0.0023,"79":0.00461,"81":0.0023,"88":0.0023,"89":0.0023,"91":0.00691,"93":0.01152,"95":0.01382,"96":0.00461,"97":0.0023,"98":0.00691,"99":0.08064,"100":0.13824,"101":1.43309,"102":0.25574,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 42 45 46 48 49 51 53 54 55 57 58 59 60 62 63 64 65 66 67 69 70 71 73 74 75 76 77 80 82 83 84 85 86 87 90 92 94 103 104 3.5 3.6"},D:{"39":0.01613,"45":0.00461,"46":0.0023,"49":0.0023,"54":0.00922,"58":0.00461,"59":0.0023,"60":0.02534,"63":0.00461,"64":0.01843,"69":0.0023,"70":0.01152,"71":0.0023,"72":0.0023,"74":0.01152,"75":0.00922,"76":0.0023,"77":0.01152,"79":0.03917,"80":0.00922,"81":0.12211,"83":0.00461,"84":0.00461,"85":0.03686,"86":0.00461,"87":0.27187,"88":0.01152,"89":0.00461,"90":0.01382,"91":0.00922,"92":0.01382,"93":0.09446,"94":0.00691,"95":0.00691,"96":0.01843,"97":0.01152,"98":0.00922,"99":0.02765,"100":0.0599,"101":0.71194,"102":7.09402,"103":0.67968,"104":0.00691,"105":0.00461,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 47 48 50 51 52 53 55 56 57 61 62 65 66 67 68 73 78 106"},F:{"31":0.00922,"40":0.01382,"79":0.0023,"84":0.00461,"85":0.00922,"86":0.38016,"87":0.31334,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02995,"13":0.00691,"14":0.0023,"15":0.00461,"16":0.02534,"17":0.01152,"18":3.20026,"83":0.00461,"84":0.01382,"85":0.0023,"88":0.0023,"89":0.00691,"90":0.00461,"91":0.0023,"92":0.02304,"93":0.00461,"96":0.00461,"97":0.00922,"98":0.00461,"99":0.01843,"100":0.02534,"101":0.27187,"102":1.54598,"103":0.21197,_:"79 80 81 86 87 94 95"},E:{"4":0,"8":0.0023,"13":0.02765,"14":0.03456,"15":0.0023,_:"0 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1 11.1 16.0","9.1":0.0023,"10.1":0.00461,"12.1":0.00461,"13.1":0.01843,"14.1":0.18202,"15.1":0.01613,"15.2-15.3":0.01152,"15.4":0.07373,"15.5":0.55987},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.05617,"6.0-6.1":0,"7.0-7.1":0.05206,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.06028,"10.0-10.2":0.05754,"10.3":0.52608,"11.0-11.2":0.02192,"11.3-11.4":0.2466,"12.0-12.1":0.0685,"12.2-12.5":1.75633,"13.0-13.1":0.07398,"13.2":0.01644,"13.3":1.0179,"13.4-13.7":0.27126,"14.0-14.4":1.60563,"14.5-14.8":1.6755,"15.0-15.1":0.79049,"15.2-15.3":0.88365,"15.4":1.48644,"15.5":2.96603,"16.0":0.05069},P:{"4":0.24627,"5.0-5.4":0.03078,"6.2-6.4":0.03078,"7.2-7.4":0.35915,"8.2":0.06207,"9.2":0.05131,"10.1":0.02016,"11.1-11.2":0.03078,"12.0":0.01032,"13.0":0.04105,"14.0":0.12314,"15.0":0.02052,"16.0":0.17444,"17.0":0.83117},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00074,"4.2-4.3":0.0018,"4.4":0,"4.4.3-4.4.4":0.02054},A:{"11":0.02074,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.14622},Q:{"10.4":0},O:{"0":0.83117},H:{"0":2.38255},L:{"0":55.00006},S:{"2.5":0},R:{_:"0"},M:{"0":0.05387}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GN.js index d13224b0dd9d4b..7bf69ff9c27507 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GN.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GN.js @@ -1 +1 @@ -module.exports={C:{"5":0.00088,"33":0.00529,"35":0.00088,"37":0.00176,"38":0.00176,"44":0.00176,"45":0.00176,"47":0.00265,"65":0.00176,"72":0.00176,"78":0.00088,"80":0.00441,"82":0.00529,"88":0.00088,"91":0.00441,"92":0.2108,"93":0.00088,"95":0.02822,"96":0.20021,"97":0.3431,_:"2 3 4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 36 39 40 41 42 43 46 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 73 74 75 76 77 79 81 83 84 85 86 87 89 90 94 98 99 3.5 3.6"},D:{"19":0.00176,"28":0.00529,"29":0.00176,"36":0.00353,"38":0.00441,"43":0.01411,"49":0.0097,"56":0.00176,"57":0.00088,"58":0.00176,"59":0.00088,"60":0.00088,"62":0.00441,"63":0.01499,"64":0.00176,"65":0.00529,"66":0.26901,"67":0.00265,"69":0.00353,"70":0.00176,"72":0.00441,"75":0.00529,"76":0.01147,"78":0.00088,"79":0.00353,"80":0.00265,"81":0.00529,"83":0.00353,"84":0.0097,"86":0.00706,"87":0.00794,"88":0.00088,"89":0.00529,"90":0.00529,"91":0.0247,"92":0.10937,"93":0.01852,"94":0.00441,"95":0.02558,"96":0.11995,"97":0.94903,"98":1.74195,"100":0.00882,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 30 31 32 33 34 35 37 39 40 41 42 44 45 46 47 48 50 51 52 53 54 55 61 68 71 73 74 77 85 99 101"},F:{"15":0.00353,"35":0.00176,"42":0.00176,"48":0.00176,"73":0.00088,"75":0.00265,"79":0.00353,"81":0.00265,"82":0.00617,"83":0.20198,_:"9 11 12 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 76 77 78 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01676,"13":0.00617,"14":0.00176,"15":0.00176,"16":0.00176,"17":0.00794,"18":0.03352,"84":0.01764,"85":0.00441,"89":0.00441,"90":0.00617,"91":0.00176,"92":0.05292,"93":0.01588,"94":0.06439,"95":0.00176,"96":0.01058,"97":0.17816,"98":0.32017,_:"79 80 81 83 86 87 88"},E:{"4":0,"11":0.00353,"12":0.00794,"13":0.0097,"14":0.02029,"15":0.00706,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 15.4","9.1":0.00176,"10.1":0.01764,"11.1":0.00176,"12.1":0.00529,"13.1":0.0247,"14.1":0.0194,"15.1":0.01588,"15.2-15.3":0.07321},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.03288,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03145,"10.0-10.2":0.13294,"10.3":0.20013,"11.0-11.2":0.3245,"11.3-11.4":1.23938,"12.0-12.1":0.47031,"12.2-12.5":5.98105,"13.0-13.1":0.41885,"13.2":0.12866,"13.3":0.5232,"13.4-13.7":0.19727,"14.0-14.4":1.35946,"14.5-14.8":1.36089,"15.0-15.1":0.92918,"15.2-15.3":0.95777,"15.4":0},P:{"4":1.46776,"5.0-5.4":0.28149,"6.2-6.4":0.04021,"7.2-7.4":0.41218,"8.2":0.01071,"9.2":0.1709,"10.1":0.02096,"11.1-11.2":0.24128,"12.0":0.03016,"13.0":0.09048,"14.0":0.56298,"15.0":0.65346,"16.0":0.75399},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00114,"4.2-4.3":0.003,"4.4":0,"4.4.3-4.4.4":0.05057},A:{"11":0.0247,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.03647},Q:{"10.4":0.00912},O:{"0":0.23707},H:{"0":6.33613},L:{"0":68.25973},S:{"2.5":0.1003}}; +module.exports={C:{"37":0.00382,"39":0.00478,"43":0.00287,"47":0.00191,"48":0.00382,"56":0.01243,"63":0.00191,"68":0.00191,"69":0.00191,"72":0.00191,"78":0.00096,"80":0.00096,"84":0.00191,"89":0.00096,"91":0.00478,"92":0.06501,"95":0.0478,"96":0.00191,"97":0.00191,"98":0.00765,"99":0.00382,"100":0.05449,"101":0.40343,"102":0.02199,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 41 42 44 45 46 49 50 51 52 53 54 55 57 58 59 60 61 62 64 65 66 67 70 71 73 74 75 76 77 79 81 82 83 85 86 87 88 90 93 94 103 104 3.5 3.6"},D:{"18":0.00191,"25":0.00287,"26":0.00191,"28":0.00096,"29":0.00096,"33":0.01434,"38":0.00191,"40":0.00287,"43":0.00478,"46":0.00191,"48":0.00096,"49":0.00191,"55":0.00191,"56":0.00096,"57":0.00382,"60":0.01243,"63":0.00191,"64":0.01147,"65":0.00191,"66":0.00191,"67":0.00191,"68":0.00191,"69":0.00478,"70":0.00287,"71":0.00096,"72":0.00382,"74":0.00765,"75":0.00191,"76":0.04493,"78":0.00478,"79":0.00669,"80":0.0086,"81":0.01052,"83":0.0086,"84":0.00191,"86":0.01434,"87":0.03537,"88":0.01147,"89":0.00191,"90":0.00096,"91":0.01147,"92":0.01338,"93":0.02294,"94":0.00669,"95":0.00574,"96":0.02199,"97":0.01721,"98":0.0153,"99":0.02772,"100":0.05545,"101":0.19024,"102":2.716,"103":0.23135,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 23 24 27 30 31 32 34 35 36 37 39 41 42 44 45 47 50 51 52 53 54 58 59 61 62 73 77 85 104 105 106"},F:{"15":0.00096,"34":0.00096,"58":0.00191,"79":0.00096,"81":0.00191,"84":0.00478,"85":0.00191,"86":0.00669,"87":0.07457,_:"9 11 12 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.03442,"13":0.00478,"14":0.00096,"15":0.00287,"16":0.0086,"17":0.0086,"18":0.03442,"84":0.00765,"85":0.0086,"87":0.00956,"89":0.02199,"90":0.00574,"92":0.0086,"94":0.00287,"95":0.00287,"96":0.00382,"97":0.00191,"98":0.00191,"99":0.00765,"100":0.04111,"101":0.13193,"102":0.57456,"103":0.22466,_:"79 80 81 83 86 88 91 93"},E:{"4":0,"11":0.00096,"12":0.00096,"13":0.00191,"14":0.03537,"15":0.00478,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1 11.1 16.0","10.1":0.01912,"12.1":0.00191,"13.1":0.0086,"14.1":0.02294,"15.1":0.05067,"15.2-15.3":0.00478,"15.4":0.03728,"15.5":0.06501},G:{"8":0.00226,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.08486,"8.1-8.4":0.00113,"9.0-9.2":0,"9.3":0.05884,"10.0-10.2":0.03281,"10.3":0.29985,"11.0-11.2":0.22517,"11.3-11.4":0.05771,"12.0-12.1":0.90181,"12.2-12.5":2.87855,"13.0-13.1":0.25233,"13.2":0.04639,"13.3":0.17651,"13.4-13.7":0.41753,"14.0-14.4":1.27973,"14.5-14.8":0.83505,"15.0-15.1":0.77848,"15.2-15.3":1.04438,"15.4":0.90068,"15.5":1.01157,"16.0":0.02716},P:{"4":0.35561,"5.0-5.4":0.09144,"6.2-6.4":0.06096,"7.2-7.4":0.42674,"8.2":0.06207,"9.2":0.13208,"10.1":0.02016,"11.1-11.2":0.16257,"12.0":0.04064,"13.0":0.07112,"14.0":0.28449,"15.0":0.06096,"16.0":1.32085,"17.0":0.52834},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00036,"4.2-4.3":0.00288,"4.4":0,"4.4.3-4.4.4":0.04197},A:{"10":0.00574,"11":0.06883,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.02713},O:{"0":0.35268},H:{"0":8.39866},L:{"0":69.71566},S:{"2.5":0.07234},R:{_:"0"},M:{"0":0.01809}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GP.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GP.js index fbe7b64e093ea3..a6450dcd6f45b5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GP.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GP.js @@ -1 +1 @@ -module.exports={C:{"38":0.01265,"50":0.01265,"52":0.00843,"56":0.01265,"60":0.01686,"64":0.00422,"78":0.06324,"84":0.00843,"85":0.00422,"89":0.00843,"91":0.05059,"92":0.01265,"93":0.00422,"94":0.00843,"95":0.04638,"96":1.36177,"97":1.72013,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 51 53 54 55 57 58 59 61 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 86 87 88 90 98 99 3.5 3.6"},D:{"49":0.06324,"58":0.01265,"63":0.04216,"65":0.01265,"67":0.01686,"74":0.00422,"76":0.00843,"77":0.01686,"78":0.00422,"79":0.02951,"80":0.00843,"81":0.00422,"83":0.02951,"84":0.05481,"85":0.02108,"86":0.00843,"87":0.02951,"88":0.00422,"89":0.01686,"90":0.01265,"91":0.0253,"92":0.02951,"93":0.04216,"94":0.04638,"95":0.05059,"96":0.72515,"97":6.5348,"98":14.65903,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 64 66 68 69 70 71 72 73 75 99 100 101"},F:{"82":0.14756,"83":0.66613,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.00843,"17":0.00843,"18":0.02108,"86":0.00422,"90":0.00843,"91":0.00422,"92":0.01265,"93":0.00843,"94":0.01265,"95":0.00843,"96":0.06746,"97":1.48403,"98":5.09293,_:"12 13 14 15 79 80 81 83 84 85 87 88 89"},E:{"4":0,"12":0.00843,"13":0.06324,"14":0.56916,"15":0.28247,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.02108,"10.1":0.00843,"11.1":0.05059,"12.1":0.18972,"13.1":0.62397,"14.1":1.58522,"15.1":1.35755,"15.2-15.3":1.21842,"15.4":0.01686},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.0086,"9.0-9.2":0.00516,"9.3":0.03269,"10.0-10.2":0.00688,"10.3":0.08432,"11.0-11.2":0.01549,"11.3-11.4":0.01205,"12.0-12.1":0.03786,"12.2-12.5":0.61947,"13.0-13.1":0.01721,"13.2":0.0086,"13.3":0.07571,"13.4-13.7":0.2409,"14.0-14.4":0.86725,"14.5-14.8":3.47934,"15.0-15.1":3.10077,"15.2-15.3":8.52455,"15.4":0.07055},P:{"4":0.07195,"5.0-5.4":0.04073,"6.2-6.4":0.01071,"7.2-7.4":0.14391,"8.2":0.01071,"9.2":0.04112,"10.1":0.02096,"11.1-11.2":0.18502,"12.0":0.05139,"13.0":0.21586,"14.0":0.27753,"15.0":0.17474,"16.0":4.23495},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00168,"4.2-4.3":0.00168,"4.4":0,"4.4.3-4.4.4":0.03135},A:{"11":0.1054,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.26606},Q:{"10.4":0},O:{"0":0.01157},H:{"0":0.10952},L:{"0":33.08468},S:{"2.5":0}}; +module.exports={C:{"38":0.0084,"50":0.0126,"52":0.0168,"60":0.0084,"78":0.13443,"84":0.0084,"89":0.0084,"91":0.09662,"97":0.0084,"98":0.02521,"99":0.0126,"100":0.26046,"101":2.76006,"102":0.19745,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 90 92 93 94 95 96 103 104 3.5 3.6"},D:{"49":0.03361,"53":0.0126,"58":0.0084,"62":0.0126,"63":0.0042,"74":0.0042,"75":0.02941,"77":0.0126,"79":0.04621,"81":0.0126,"83":0.0126,"84":0.0084,"85":0.02521,"86":0.0084,"87":0.02521,"88":0.0084,"89":0.02101,"90":0.02941,"91":0.0126,"92":0.02521,"93":0.0126,"94":0.0084,"95":0.05041,"96":0.13443,"97":0.02521,"98":0.02941,"99":0.11343,"100":0.57134,"101":0.99564,"102":18.24914,"103":1.65519,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 59 60 61 64 65 66 67 68 69 70 71 72 73 76 78 80 104 105 106"},F:{"28":0.05041,"85":0.0084,"86":0.18064,"87":0.44951,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.0084,"16":0.0126,"17":0.0084,"18":0.02101,"89":0.0084,"92":0.0084,"95":0.0084,"96":0.0084,"97":0.08402,"98":0.0084,"99":0.0168,"100":0.08402,"101":0.63015,"102":3.72629,"103":0.8444,_:"12 13 15 79 80 81 83 84 85 86 87 88 90 91 93 94"},E:{"4":0,"11":0.21005,"12":0.0042,"13":0.06722,"14":0.27307,"15":0.05881,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 10.1 16.0","9.1":0.0042,"11.1":0.05041,"12.1":0.09662,"13.1":0.4327,"14.1":0.60074,"15.1":0.18905,"15.2-15.3":0.11343,"15.4":0.836,"15.5":1.81063},G:{"8":0.00338,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.01521,"7.0-7.1":0.00338,"8.1-8.4":0.01352,"9.0-9.2":0.00169,"9.3":0.02027,"10.0-10.2":0,"10.3":0.10644,"11.0-11.2":0.00169,"11.3-11.4":0.00507,"12.0-12.1":0.52207,"12.2-12.5":0.38184,"13.0-13.1":0.01521,"13.2":0.00845,"13.3":0.03548,"13.4-13.7":0.12165,"14.0-14.4":0.4038,"14.5-14.8":1.28069,"15.0-15.1":0.51869,"15.2-15.3":1.10497,"15.4":2.93139,"15.5":9.33651,"16.0":0.0321},P:{"4":0.09492,"5.0-5.4":0.03078,"6.2-6.4":0.03078,"7.2-7.4":0.288,"8.2":0.06207,"9.2":0.01055,"10.1":0.02016,"11.1-11.2":0.12343,"12.0":0.09257,"13.0":0.144,"14.0":0.31886,"15.0":0.072,"16.0":0.38057,"17.0":3.89826},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00633,"4.4":0,"4.4.3-4.4.4":0.02266},A:{"8":2.85248,"11":0.23946,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.07137},L:{"0":36.2258},S:{"2.5":0},R:{_:"0"},M:{"0":0.24936}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GQ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GQ.js index 6c4fde9c4240c2..265818c291f3b3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GQ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GQ.js @@ -1 +1 @@ -module.exports={C:{"39":0.00497,"43":0.0149,"45":0.00993,"52":0.09435,"56":0.00497,"57":0.00497,"60":0.00993,"62":0.04966,"64":0.00993,"71":0.05959,"72":0.00497,"78":0.00497,"79":0.00993,"83":0.0149,"85":0.01986,"87":0.00993,"89":0.01986,"91":0.0149,"93":0.02483,"94":0.02483,"95":0.05959,"96":2.67667,"97":1.95164,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 44 46 47 48 49 50 51 53 54 55 58 59 61 63 65 66 67 68 69 70 73 74 75 76 77 80 81 82 84 86 88 90 92 98 99 3.5 3.6"},D:{"18":0.08442,"39":0.00497,"43":0.03476,"46":0.00993,"47":0.00497,"49":0.00497,"50":0.00497,"54":0.04469,"55":0.05959,"57":0.00497,"58":0.85912,"60":0.09435,"63":0.28803,"64":0.11422,"66":0.02483,"69":0.01986,"70":0.00993,"71":0.00497,"74":0.06456,"75":0.09435,"76":0.00993,"78":0.00993,"79":0.12912,"80":0.01986,"81":0.01986,"83":0.07946,"84":0.00993,"86":0.02483,"87":0.0298,"88":0.03476,"89":0.02483,"91":0.0149,"92":0.14401,"93":0.0298,"94":0.02483,"95":0.02483,"96":0.47177,"97":7.33975,"98":13.1599,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 44 45 48 51 52 53 56 59 61 62 65 67 68 72 73 77 85 90 99 100 101"},F:{"15":0.00497,"46":0.00497,"49":0.00497,"51":0.00497,"64":0.20361,"70":0.00497,"76":0.0149,"77":0.03973,"78":0.00993,"80":0.00497,"81":0.00993,"82":0.4966,"83":0.10925,_:"9 11 12 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 50 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 71 72 73 74 75 79 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.05959,"13":0.00497,"14":0.01986,"15":0.00993,"16":0.05463,"17":0.00497,"18":0.15891,"84":0.0149,"85":0.00497,"86":0.02483,"88":0.00993,"89":0.01986,"90":0.09435,"92":0.0149,"93":0.0149,"94":0.01986,"95":0.00497,"96":0.12912,"97":0.79953,"98":14.70929,_:"79 80 81 83 87 91"},E:{"4":0,"11":0.00497,"12":0.03973,"14":0.02483,"15":0.11918,_:"0 5 6 7 8 9 10 13 3.1 3.2 6.1 7.1","5.1":0.00993,"9.1":0.0149,"10.1":0.00993,"11.1":0.00993,"12.1":0.00497,"13.1":0.01986,"14.1":0.05959,"15.1":0.12415,"15.2-15.3":0.58599,"15.4":0.00993},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.09474,"8.1-8.4":0,"9.0-9.2":0.01373,"9.3":0.02883,"10.0-10.2":0,"10.3":0.10572,"11.0-11.2":3.38456,"11.3-11.4":0.00824,"12.0-12.1":0.02334,"12.2-12.5":1.47053,"13.0-13.1":0.02334,"13.2":0.02334,"13.3":0.01648,"13.4-13.7":0.15241,"14.0-14.4":1.82478,"14.5-14.8":1.18082,"15.0-15.1":1.94835,"15.2-15.3":3.41751,"15.4":0.01098},P:{"4":1.74544,"5.0-5.4":0.02066,"6.2-6.4":0.04052,"7.2-7.4":0.04131,"8.2":0.0104,"9.2":0.02066,"10.1":0.06153,"11.1-11.2":0.04131,"12.0":0.03121,"13.0":0.02066,"14.0":0.04131,"15.0":0.04131,"16.0":0.82624},I:{"0":0,"3":0,"4":0.00157,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00067,"4.2-4.3":0.03112,"4.4":0,"4.4.3-4.4.4":0.14283},A:{"11":0.35755,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.49333},N:{_:"10 11"},R:{_:"0"},M:{"0":0.06544},Q:{"10.4":0.10571},O:{"0":0.30204},H:{"0":0.27165},L:{"0":31.11591},S:{"2.5":0}}; +module.exports={C:{"52":0.05796,"56":0.01656,"57":0.04968,"71":0.00828,"72":0.0414,"78":0.03312,"79":0.00828,"85":0.00828,"97":0.01656,"99":0.03312,"100":0.10764,"101":0.73692,"102":0.02484,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 58 59 60 61 62 63 64 65 66 67 68 69 70 73 74 75 76 77 80 81 82 83 84 86 87 88 89 90 91 92 93 94 95 96 98 103 104 3.5 3.6"},D:{"18":0.02484,"48":0.0828,"54":0.02484,"56":0.01656,"62":0.02484,"64":0.0414,"72":0.00828,"73":0.01656,"79":0.11592,"83":0.00828,"85":0.06624,"86":0.0414,"87":0.0828,"89":0.02484,"91":0.01656,"92":0.02484,"93":0.0414,"94":0.01656,"95":0.00828,"97":0.02484,"98":0.05796,"99":0.02484,"100":0.06624,"101":0.48024,"102":8.85132,"103":0.91908,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 55 57 58 59 60 61 63 65 66 67 68 69 70 71 74 75 76 77 78 80 81 84 88 90 96 104 105 106"},F:{"28":0.11592,"60":0.00828,"81":0.01656,"86":0.02484,"87":0.35604,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.03312,"13":0.01656,"15":0.01656,"18":0.11592,"84":0.00828,"89":0.00828,"92":0.9108,"94":0.00828,"95":0.01656,"99":0.54648,"101":5.55588,"102":50.02776,"103":11.02068,_:"14 16 17 79 80 81 83 85 86 87 88 90 91 93 96 97 98 100"},E:{"4":0,"13":0.03312,"14":0.02484,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 16.0","13.1":0.00828,"14.1":0.03312,"15.1":0.02484,"15.2-15.3":0.00828,"15.4":0.01656,"15.5":0.06624},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00031,"6.0-6.1":0,"7.0-7.1":0.01155,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01655,"10.0-10.2":0.00062,"10.3":0.0484,"11.0-11.2":0.21296,"11.3-11.4":0.00187,"12.0-12.1":0.03966,"12.2-12.5":0.6417,"13.0-13.1":0.00625,"13.2":0.00999,"13.3":0.00312,"13.4-13.7":0.03279,"14.0-14.4":0.49275,"14.5-14.8":0.12678,"15.0-15.1":0.25231,"15.2-15.3":0.43748,"15.4":0.26886,"15.5":0.51274,"16.0":0.00156},P:{"4":0.61963,"5.0-5.4":0.02174,"6.2-6.4":0.0302,"7.2-7.4":0.13516,"8.2":0.06207,"9.2":0.0104,"10.1":0.01007,"11.1-11.2":0.10397,"12.0":0.02079,"13.0":0.03261,"14.0":0.01087,"15.0":0.07278,"16.0":0.04348,"17.0":0.41308},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00234,"4.2-4.3":0.04814,"4.4":0,"4.4.3-4.4.4":0.07329},A:{"11":0.07452,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.01375},O:{"0":0.10658},H:{"0":0.18553},L:{"0":13.18506},S:{"2.5":0},R:{_:"0"},M:{"0":0.04641}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GR.js index 25f59c8d4f78e3..7411f9aef1c758 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GR.js @@ -1 +1 @@ -module.exports={C:{"52":0.69463,"60":0.01187,"68":0.14249,"77":0.01781,"78":0.04156,"81":0.03562,"83":0.01187,"84":0.01187,"85":0.00594,"86":0.01187,"87":0.03562,"88":0.0475,"89":0.01187,"90":0.00594,"91":0.08312,"92":0.01781,"93":0.00594,"94":0.08906,"95":0.03562,"96":2.60041,"97":4.28651,"98":0.01187,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 79 80 82 99 3.5 3.6"},D:{"22":0.42746,"34":0.04156,"38":0.22561,"39":0.07718,"41":0.01187,"47":0.27904,"49":0.48683,"53":0.01187,"56":0.00594,"62":0.41559,"65":0.00594,"67":0.00594,"69":0.25529,"71":0.01781,"72":0.02375,"74":0.01187,"76":0.00594,"77":0.08906,"78":0.01781,"79":0.18405,"80":0.02969,"81":0.01781,"83":0.02969,"84":0.01781,"85":0.02375,"86":0.02969,"87":0.11874,"88":0.10687,"89":0.08312,"90":0.01187,"91":0.33247,"92":0.02969,"93":0.06531,"94":0.03562,"95":0.0475,"96":0.31466,"97":10.74597,"98":24.85822,"99":0.00594,"100":0.00594,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 40 42 43 44 45 46 48 50 51 52 54 55 57 58 59 60 61 63 64 66 68 70 73 75 101"},F:{"12":0.08906,"25":0.0475,"31":0.84305,"40":0.58776,"46":0.00594,"67":0.01781,"82":0.2078,"83":1.12803,_:"9 11 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 32 33 34 35 36 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.13655,"18":0.00594,"92":0.04156,"95":0.01187,"96":0.01781,"97":0.84899,"98":2.49354,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94"},E:{"4":0,"13":0.02969,"14":0.08312,"15":0.05343,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.04156,"12.1":0.04156,"13.1":0.10093,"14.1":0.32654,"15.1":0.14843,"15.2-15.3":0.29685},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00124,"6.0-6.1":0.00062,"7.0-7.1":0.24598,"8.1-8.4":0.00496,"9.0-9.2":0,"9.3":0.05205,"10.0-10.2":0.00248,"10.3":0.05638,"11.0-11.2":0.00867,"11.3-11.4":0.01425,"12.0-12.1":0.00929,"12.2-12.5":0.30113,"13.0-13.1":0.00496,"13.2":0.01053,"13.3":0.02107,"13.4-13.7":0.11215,"14.0-14.4":0.24226,"14.5-14.8":0.99012,"15.0-15.1":0.8154,"15.2-15.3":3.28761,"15.4":0.01239},P:{"4":0.59228,"5.0-5.4":0.04073,"6.2-6.4":0.01018,"7.2-7.4":0.13693,"8.2":0.02094,"9.2":0.0632,"10.1":0.02096,"11.1-11.2":0.06461,"12.0":0.02107,"13.0":0.09692,"14.0":0.05384,"15.0":0.08615,"16.0":1.443},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00468,"4.2-4.3":0.23867,"4.4":0,"4.4.3-4.4.4":0.29716},A:{"11":0.4809,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.19101},Q:{"10.4":0},O:{"0":0.08941},H:{"0":0.24239},L:{"0":30.41749},S:{"2.5":0}}; +module.exports={C:{"52":0.43868,"60":0.0117,"68":0.11113,"77":0.00585,"78":0.03509,"81":0.05264,"84":0.02925,"86":0.00585,"87":0.0117,"88":0.04094,"89":0.00585,"91":0.07019,"94":0.00585,"95":0.0117,"96":0.0117,"97":0.0117,"98":0.0117,"99":0.08189,"100":0.8598,"101":5.69108,"102":0.18717,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 79 80 82 83 85 90 92 93 103 104 3.5 3.6"},D:{"22":0.48547,"34":0.22811,"38":0.26321,"39":0.03509,"47":0.40358,"49":0.23396,"53":0.0117,"56":0.00585,"58":0.02925,"61":0.11113,"62":0.43868,"69":0.22226,"71":0.01755,"77":0.08189,"78":0.00585,"79":0.07604,"80":0.0117,"81":0.01755,"83":0.0234,"84":0.0117,"85":0.01755,"86":0.03509,"87":0.12868,"88":0.0234,"89":0.05849,"90":0.0117,"91":0.2866,"92":0.01755,"93":0.01755,"94":0.0117,"95":0.01755,"96":0.04094,"97":0.02925,"98":0.04679,"99":0.05264,"100":0.18717,"101":1.57338,"102":29.92348,"103":2.62035,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 40 41 42 43 44 45 46 48 50 51 52 54 55 57 59 60 63 64 65 66 67 68 70 72 73 74 75 76 104 105 106"},F:{"12":0.10528,"28":0.00585,"31":0.8832,"36":0.00585,"40":0.67264,"46":0.23981,"85":0.0117,"86":0.26321,"87":0.82471,_:"9 11 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.15207,"18":0.00585,"96":0.00585,"97":0.07604,"99":0.00585,"100":0.00585,"101":0.36849,"102":2.47413,"103":0.52056,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 98"},E:{"4":0,"13":0.03509,"14":0.06434,"15":0.01755,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01755,"12.1":0.0234,"13.1":0.10528,"14.1":0.17547,"15.1":0.03509,"15.2-15.3":0.03509,"15.4":0.25151,"15.5":0.61415},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.05289,"6.0-6.1":0.00068,"7.0-7.1":0.2807,"8.1-8.4":0.00136,"9.0-9.2":0,"9.3":0.0495,"10.0-10.2":0.00068,"10.3":0.04882,"11.0-11.2":0.00542,"11.3-11.4":0.01153,"12.0-12.1":0.0061,"12.2-12.5":0.27121,"13.0-13.1":0.00542,"13.2":0.02237,"13.3":0.01492,"13.4-13.7":0.09153,"14.0-14.4":0.14713,"14.5-14.8":0.46648,"15.0-15.1":0.13357,"15.2-15.3":0.29087,"15.4":0.96416,"15.5":3.88443,"16.0":0.0122},P:{"4":0.20275,"5.0-5.4":0.03078,"6.2-6.4":0.03078,"7.2-7.4":0.12809,"8.2":0.06207,"9.2":0.06405,"10.1":0.02016,"11.1-11.2":0.04268,"12.0":0.03175,"13.0":0.09604,"14.0":0.04268,"15.0":0.02134,"16.0":0.10671,"17.0":1.52594},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.02238,"4.2-4.3":0.18647,"4.4":0,"4.4.3-4.4.4":0.26852},A:{"11":0.57905,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.09962},H:{"0":0.27509},L:{"0":32.47476},S:{"2.5":0},R:{_:"0"},M:{"0":0.24076}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GT.js index cfabd39c166e2d..d2be0a7191a943 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GT.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GT.js @@ -1 +1 @@ -module.exports={C:{"52":0.01948,"72":0.00779,"73":0.13636,"78":0.01558,"88":0.0039,"89":0.0039,"90":0.01169,"91":0.02727,"92":0.0039,"94":0.00779,"95":0.01558,"96":0.5844,"97":1.05582,"98":0.00779,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 74 75 76 77 79 80 81 82 83 84 85 86 87 93 99 3.5 3.6"},D:{"38":0.01169,"49":0.03506,"50":0.01558,"53":0.00779,"59":0.01558,"65":0.00779,"69":0.01169,"70":0.0039,"72":0.00779,"74":0.0039,"75":0.00779,"76":0.04675,"78":0.02727,"79":0.10519,"80":0.01169,"81":0.01558,"83":0.01948,"84":0.00779,"85":0.0039,"86":0.06623,"87":0.06623,"88":0.01558,"89":0.02338,"90":0.01948,"91":0.07013,"92":0.06623,"93":0.05454,"94":0.03506,"95":0.04286,"96":0.2922,"97":7.35565,"98":19.3826,"99":0.01169,"100":0.01558,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 51 52 54 55 56 57 58 60 61 62 63 64 66 67 68 71 73 77 101"},F:{"46":0.00779,"82":0.45973,"83":1.40646,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00779,"17":0.0039,"18":0.01558,"84":0.00779,"85":0.01558,"89":0.00779,"90":0.01169,"92":0.01558,"94":0.00779,"95":0.00779,"96":0.02338,"97":0.57661,"98":2.2441,_:"12 13 14 16 79 80 81 83 86 87 88 91 93"},E:{"4":0,"13":0.01169,"14":0.10909,"15":0.1013,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 7.1 9.1","6.1":0.0039,"10.1":0.0039,"11.1":0.01169,"12.1":0.01948,"13.1":0.14805,"14.1":0.33116,"15.1":0.20649,"15.2-15.3":0.50648,"15.4":0.00779},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00077,"6.0-6.1":0.0069,"7.0-7.1":0.00614,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01687,"10.0-10.2":0.00153,"10.3":0.01764,"11.0-11.2":0.0046,"11.3-11.4":0.0115,"12.0-12.1":0.01611,"12.2-12.5":0.25847,"13.0-13.1":0.01304,"13.2":0.0046,"13.3":0.02761,"13.4-13.7":0.07516,"14.0-14.4":0.27457,"14.5-14.8":1.11134,"15.0-15.1":1.11517,"15.2-15.3":4.65474,"15.4":0.04985},P:{"4":0.13335,"5.0-5.4":0.04073,"6.2-6.4":0.01071,"7.2-7.4":0.18464,"8.2":0.01071,"9.2":0.03077,"10.1":0.02096,"11.1-11.2":0.18464,"12.0":0.02052,"13.0":0.17438,"14.0":0.17438,"15.0":0.21541,"16.0":2.0926},I:{"0":0,"3":0,"4":0.00523,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00349,"4.4":0,"4.4.3-4.4.4":0.05232},A:{"11":0.08571,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.20143},Q:{"10.4":0},O:{"0":0.06714},H:{"0":0.23693},L:{"0":47.24267},S:{"2.5":0}}; +module.exports={C:{"52":0.02342,"72":0.01562,"73":0.12883,"78":0.01952,"80":0.00781,"88":0.00781,"89":0.0039,"90":0.01562,"91":0.01952,"98":0.0039,"99":0.01952,"100":0.12883,"101":1.3703,"102":0.06637,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 74 75 76 77 79 81 82 83 84 85 86 87 92 93 94 95 96 97 103 104 3.5 3.6"},D:{"38":0.00781,"49":0.01952,"50":0.00781,"65":0.0039,"69":0.00781,"70":0.0039,"75":0.00781,"76":0.03123,"78":0.01562,"79":0.06246,"80":0.01171,"81":0.00781,"83":0.01171,"84":0.00781,"86":0.06637,"87":0.05466,"88":0.01562,"89":0.02733,"90":0.01171,"91":0.06246,"92":0.03514,"93":0.05856,"94":0.02733,"95":0.01562,"96":0.05466,"97":0.04294,"98":0.04685,"99":0.08589,"100":0.1913,"101":0.94867,"102":22.81498,"103":2.20966,"104":0.00781,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 71 72 73 74 77 85 105 106"},F:{"36":0.0039,"85":0.01562,"86":0.93306,"87":1.15949,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01171,"85":0.01171,"90":0.0039,"92":0.00781,"96":0.00781,"97":0.0039,"98":0.01562,"99":0.00781,"100":0.02733,"101":0.26938,"102":2.28384,"103":0.41773,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 88 89 91 93 94 95"},E:{"4":0,"13":0.01562,"14":0.05856,"15":0.03904,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.0039,"11.1":0.0039,"12.1":0.01562,"13.1":0.0976,"14.1":0.1952,"15.1":0.05075,"15.2-15.3":0.05856,"15.4":0.27718,"15.5":0.89792},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.01019,"7.0-7.1":0.00679,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01443,"10.0-10.2":0,"10.3":0.01783,"11.0-11.2":0.00255,"11.3-11.4":0.00509,"12.0-12.1":0.00509,"12.2-12.5":0.20713,"13.0-13.1":0.00764,"13.2":0.00424,"13.3":0.02717,"13.4-13.7":0.04499,"14.0-14.4":0.20034,"14.5-14.8":0.45756,"15.0-15.1":0.16724,"15.2-15.3":0.30136,"15.4":1.1299,"15.5":5.78957,"16.0":0.05603},P:{"4":0.07182,"5.0-5.4":0.03078,"6.2-6.4":0.03078,"7.2-7.4":0.19494,"8.2":0.06207,"9.2":0.03078,"10.1":0.02016,"11.1-11.2":0.12312,"12.0":0.02052,"13.0":0.1026,"14.0":0.14364,"15.0":0.07182,"16.0":0.33858,"17.0":2.23669},I:{"0":0,"3":0,"4":0.00135,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00948,"4.4":0,"4.4.3-4.4.4":0.03793},A:{"11":0.05075,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.06096},H:{"0":0.25971},L:{"0":51.12408},S:{"2.5":0},R:{_:"0"},M:{"0":0.19507}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GU.js index 9b62e83795772e..e31786b2ba07cd 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GU.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GU.js @@ -1 +1 @@ -module.exports={C:{"52":0.00415,"78":0.01246,"84":0.00415,"93":0.00415,"94":0.00831,"95":0.00831,"96":0.72695,"97":1.22128,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 89 90 91 92 98 99 3.5 3.6"},D:{"49":0.03323,"67":0.00415,"75":0.01662,"76":0.08723,"77":0.03739,"79":0.05816,"80":0.00831,"83":0.02077,"84":0.02492,"85":0.00831,"86":0.00831,"87":0.2077,"88":0.04154,"89":0.01246,"90":0.00831,"91":0.0997,"92":0.08308,"93":0.04154,"94":0.0997,"95":0.02908,"96":0.73941,"97":7.9466,"98":16.16737,"99":0.00831,"100":0.01246,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 78 81 101"},F:{"74":0.00415,"82":0.12462,"83":0.6231,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00831,"18":0.00415,"92":0.00831,"95":0.04569,"96":0.02077,"97":1.1922,"98":3.05319,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94"},E:{"4":0,"10":0.00415,"12":0.00415,"13":0.11631,"14":0.46109,"15":0.32817,_:"0 5 6 7 8 9 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00831,"11.1":0.01246,"12.1":0.17862,"13.1":0.38217,"14.1":1.40821,"15.1":0.95127,"15.2-15.3":2.17254,"15.4":0.02077},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.01249,"7.0-7.1":0,"8.1-8.4":0.01874,"9.0-9.2":0,"9.3":0.39345,"10.0-10.2":0.0281,"10.3":0.05933,"11.0-11.2":0.01874,"11.3-11.4":0.04372,"12.0-12.1":0.0281,"12.2-12.5":0.74631,"13.0-13.1":0.03435,"13.2":0.00625,"13.3":0.04684,"13.4-13.7":0.32476,"14.0-14.4":1.1991,"14.5-14.8":4.57468,"15.0-15.1":5.26167,"15.2-15.3":18.38304,"15.4":0.03747},P:{"4":0.2393,"5.0-5.4":0.04073,"6.2-6.4":0.01071,"7.2-7.4":0.02081,"8.2":0.01071,"9.2":0.0104,"10.1":0.02096,"11.1-11.2":0.13525,"12.0":0.02081,"13.0":0.05202,"14.0":0.11445,"15.0":0.08323,"16.0":4.27613},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00675,"4.4":0,"4.4.3-4.4.4":0.01079},A:{"11":0.11216,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.2865},Q:{"10.4":0},O:{"0":0.19295},H:{"0":0.13285},L:{"0":22.02727},S:{"2.5":0}}; +module.exports={C:{"52":0.00374,"78":0.01121,"84":0.02242,"91":0.04857,"95":0.02615,"96":0.03362,"98":0.00374,"100":0.21295,"101":1.86426,"102":0.04857,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 89 90 92 93 94 97 99 103 104 3.5 3.6"},D:{"38":0.00747,"49":0.04483,"53":0.00374,"65":0.01121,"67":0.00747,"68":0.00374,"70":0.01494,"75":0.00374,"76":0.02242,"77":0.03362,"79":0.28767,"80":0.00747,"83":0.02242,"84":0.00374,"86":0.01121,"87":0.02242,"88":0.00374,"90":0.01121,"91":0.02989,"92":0.03736,"93":0.05604,"94":0.02989,"96":0.08593,"97":0.02615,"98":0.04857,"99":0.40349,"100":0.29514,"101":1.61395,"102":15.82943,"103":1.6812,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 63 64 66 69 71 72 73 74 78 81 85 89 95 104 105 106"},F:{"86":0.2802,"87":0.53051,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00374,"17":0.00374,"18":0.01868,"92":0.00374,"94":0.01121,"97":0.00747,"99":0.02989,"100":0.01494,"101":0.73599,"102":2.8954,"103":0.52678,_:"12 13 14 16 79 80 81 83 84 85 86 87 88 89 90 91 93 95 96 98"},E:{"4":0,"13":0.12702,"14":0.41843,"15":0.06351,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.08966,"11.1":0.01868,"12.1":0.1457,"13.1":0.42217,"14.1":1.23662,"15.1":0.12329,"15.2-15.3":0.25031,"15.4":1.25156,"15.5":2.81694},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00324,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.29814,"10.0-10.2":0,"10.3":0.02268,"11.0-11.2":0.00972,"11.3-11.4":0.03565,"12.0-12.1":0.07778,"12.2-12.5":0.88794,"13.0-13.1":0.01944,"13.2":0.0162,"13.3":0.17176,"13.4-13.7":0.36944,"14.0-14.4":0.82961,"14.5-14.8":2.23282,"15.0-15.1":0.86526,"15.2-15.3":1.70459,"15.4":5.79432,"15.5":19.00006,"16.0":0.00972},P:{"4":0.35078,"5.0-5.4":0.03078,"6.2-6.4":0.03078,"7.2-7.4":0.288,"8.2":0.06207,"9.2":0.01055,"10.1":0.02016,"11.1-11.2":0.05159,"12.0":0.01032,"13.0":0.05159,"14.0":0.07222,"15.0":0.07222,"16.0":0.57776,"17.0":3.61099},I:{"0":0,"3":0,"4":0.00582,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.01163,"4.4":0,"4.4.3-4.4.4":0.06397},A:{"11":0.1345,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.05637},H:{"0":0.15416},L:{"0":25.72252},S:{"2.5":0},R:{_:"0"},M:{"0":0.14405}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GW.js index 0d59662f724255..6a89f5b8962d22 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GW.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GW.js @@ -1 +1 @@ -module.exports={C:{"27":0.00474,"29":0.00474,"91":0.10907,"96":0.0901,"97":0.1636,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 98 99 3.5 3.6"},D:{"33":0.00711,"38":0.00474,"48":0.00711,"54":0.00474,"60":0.00237,"71":0.01897,"72":0.00237,"75":0.01423,"83":0.00948,"86":0.00948,"87":0.00711,"88":0.03557,"89":0.03082,"90":0.04742,"91":0.03082,"92":0.00948,"93":0.0166,"94":0.00474,"95":0.22287,"96":0.03082,"97":2.83572,"98":12.50228,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 39 40 41 42 43 44 45 46 47 49 50 51 52 53 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 73 74 76 77 78 79 80 81 84 85 99 100 101"},F:{"76":0.06876,"82":0.01423,"83":0.36988,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.05453,"13":0.00237,"15":0.00237,"16":0.00474,"84":0.01423,"85":0.01186,"90":0.00474,"91":0.01423,"93":0.01423,"95":0.01186,"96":0.01186,"97":0.40544,"98":1.5862,_:"14 17 18 79 80 81 83 86 87 88 89 92 94"},E:{"4":0,"15":0.00237,_:"0 5 6 7 8 9 10 11 12 13 14 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 13.1 15.2-15.3 15.4","5.1":0.00237,"14.1":0.01423,"15.1":0.00474},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.041,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02303,"10.0-10.2":0.00842,"10.3":0.01348,"11.0-11.2":0.0146,"11.3-11.4":0.00281,"12.0-12.1":1.13568,"12.2-12.5":0.92674,"13.0-13.1":0.04044,"13.2":0.00112,"13.3":0,"13.4-13.7":1.32889,"14.0-14.4":0.35329,"14.5-14.8":0.45439,"15.0-15.1":1.04076,"15.2-15.3":0.23028,"15.4":0},P:{"4":1.45239,"5.0-5.4":0.19571,"6.2-6.4":0.04021,"7.2-7.4":0.13391,"8.2":0.01071,"9.2":0.0515,"10.1":0.02096,"11.1-11.2":0.10301,"12.0":0.09271,"13.0":0.23691,"14.0":0.0412,"15.0":0.09271,"16.0":0.24722},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.02608,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0.04577},H:{"0":1.74788},L:{"0":69.65273},S:{"2.5":0.2365}}; +module.exports={C:{"43":0.00928,"56":5.7502,"91":0.01856,"100":0.14387,"101":0.11603,"102":0.38056,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 99 103 104 3.5 3.6"},D:{"33":0.00928,"43":0.00928,"49":0.00464,"70":0.00928,"71":0.02321,"79":0.02785,"81":0.00928,"83":0.00928,"86":2.51078,"87":0.00928,"88":0.02321,"92":0.01392,"94":0.00928,"96":0.03249,"97":0.42233,"98":0.02785,"99":0.02785,"100":0.12067,"101":1.35981,"102":26.92708,"103":0.42233,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 72 73 74 75 76 77 78 80 84 85 89 90 91 93 95 104 105 106"},F:{"76":0.03713,"85":0.01856,"86":0.06033,"87":0.68687,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.05105,"18":0.05105,"89":0.00464,"92":0.00928,"100":0.00928,"101":0.32487,"102":2.65929,"103":0.33415,_:"13 14 15 16 17 79 80 81 83 84 85 86 87 88 90 91 93 94 95 96 97 98 99"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4 16.0","15.5":0.01392},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.03342,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00847,"10.0-10.2":0.02808,"10.3":0.03075,"11.0-11.2":0.0254,"11.3-11.4":0.00267,"12.0-12.1":0.02228,"12.2-12.5":0.52586,"13.0-13.1":0.00758,"13.2":0.00178,"13.3":0.01292,"13.4-13.7":1.72687,"14.0-14.4":0.09982,"14.5-14.8":0.23441,"15.0-15.1":0.12879,"15.2-15.3":0.45233,"15.4":0.45768,"15.5":0.64841,"16.0":0.00579},P:{"4":0.35719,"5.0-5.4":0.09144,"6.2-6.4":0.06096,"7.2-7.4":1.02054,"8.2":0.06207,"9.2":0.13208,"10.1":0.02016,"11.1-11.2":0.08164,"12.0":0.21431,"13.0":0.1837,"14.0":0.12246,"15.0":0.03062,"16.0":0.10205,"17.0":0.23472},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00256,"4.4":0,"4.4.3-4.4.4":0.03496},A:{"8":0.00928,"11":0.09282,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01072},H:{"0":0.94368},L:{"0":48.94153},S:{"2.5":0.13398},R:{_:"0"},M:{"0":0.0268}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GY.js index 71c1b5eb7fac5a..33cd19c112f037 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GY.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GY.js @@ -1 +1 @@ -module.exports={C:{"52":0.01091,"65":0.01091,"88":0.00364,"91":0.02545,"94":0.00364,"95":0.01091,"96":0.44347,"97":0.62522,"98":0.02181,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 89 90 92 93 99 3.5 3.6"},D:{"47":0.00727,"49":0.01454,"50":0.00364,"55":0.00727,"56":0.00364,"60":0.00364,"63":0.01091,"65":0.03272,"66":0.00364,"68":0.01091,"69":0.01091,"70":0.01091,"75":0.02545,"76":0.07997,"77":0.09451,"79":0.13086,"80":0.04726,"81":0.02545,"83":0.00727,"84":0.01454,"86":0.01818,"87":0.08724,"88":0.04362,"89":0.01454,"90":0.03635,"91":0.05089,"92":0.05816,"93":0.15994,"94":0.04726,"95":0.10178,"96":0.27626,"97":6.88469,"98":13.99112,"99":0.06543,"100":0.04362,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 51 52 53 54 57 58 59 61 62 64 67 71 72 73 74 78 85 101"},F:{"28":0.01454,"80":0.00727,"81":0.00364,"82":0.07634,"83":0.5089,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01454,"16":0.02908,"17":0.01091,"18":0.02545,"84":0.01454,"85":0.00727,"88":0.00364,"89":0.00727,"90":0.00727,"91":0.00364,"92":0.01091,"95":0.03999,"96":0.05453,"97":1.33405,"98":4.90362,_:"12 13 14 79 80 81 83 86 87 93 94"},E:{"4":0,"14":0.04362,"15":0.04726,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 11.1 15.4","10.1":0.00727,"12.1":0.01091,"13.1":0.02908,"14.1":0.20356,"15.1":0.12723,"15.2-15.3":0.35623},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01445,"6.0-6.1":0.00085,"7.0-7.1":0.0765,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.0952,"10.0-10.2":0,"10.3":0.0595,"11.0-11.2":0.06205,"11.3-11.4":0.00765,"12.0-12.1":0.00425,"12.2-12.5":0.41736,"13.0-13.1":0.00765,"13.2":0.00425,"13.3":0.01955,"13.4-13.7":0.18615,"14.0-14.4":0.32981,"14.5-14.8":1.46288,"15.0-15.1":1.24613,"15.2-15.3":4.466,"15.4":0.0357},P:{"4":0.29837,"5.0-5.4":0.19571,"6.2-6.4":0.04021,"7.2-7.4":0.22378,"8.2":0.01071,"9.2":0.04262,"10.1":0.07459,"11.1-11.2":0.39427,"12.0":0.03197,"13.0":0.20246,"14.0":0.11722,"15.0":0.1705,"16.0":3.48451},I:{"0":0,"3":0,"4":0.01856,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00247,"4.4":0,"4.4.3-4.4.4":0.06806},A:{"10":0.01818,"11":0.04726,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.14001},Q:{"10.4":0.01909},O:{"0":0.59822},H:{"0":0.1928},L:{"0":44.96927},S:{"2.5":0}}; +module.exports={C:{"48":0.00355,"52":0.00709,"91":0.00355,"95":0.00709,"97":0.02128,"99":0.00709,"100":0.1206,"101":1.16696,"102":0.04966,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 96 98 103 104 3.5 3.6"},D:{"11":0.07803,"49":0.01064,"50":0.01064,"55":0.00709,"60":0.00355,"61":0.02128,"62":0.01064,"65":0.02128,"68":0.00709,"69":0.00709,"70":0.00355,"73":0.00709,"74":0.01064,"75":0.00709,"76":0.10996,"77":0.08158,"78":0.00709,"79":0.1206,"80":0.00709,"81":0.01064,"83":0.01419,"85":0.00355,"86":0.01064,"87":0.03547,"88":0.00709,"89":0.00709,"90":0.02838,"91":0.03192,"92":0.02838,"93":0.09222,"94":0.01064,"95":0.03192,"96":0.04966,"97":0.0603,"98":0.13833,"99":0.09222,"100":0.27667,"101":1.52876,"102":16.905,"103":1.36205,"104":0.01064,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 51 52 53 54 56 57 58 59 63 64 66 67 71 72 84 105 106"},F:{"28":0.00709,"86":0.20218,"87":0.40791,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00709,"13":0.00355,"15":0.01774,"16":0.01064,"17":0.00709,"18":0.01419,"92":0.01419,"96":0.00709,"97":0.00709,"98":0.00709,"99":0.01064,"100":0.01774,"101":0.62073,"102":3.75273,"103":0.86192,_:"14 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95"},E:{"4":0,"14":0.05321,"15":0.01064,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00709,"12.1":0.01064,"13.1":0.05321,"14.1":0.06385,"15.1":0.07449,"15.2-15.3":0.01774,"15.4":0.34406,"15.5":0.65974},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00475,"6.0-6.1":0,"7.0-7.1":0.02755,"8.1-8.4":0.0057,"9.0-9.2":0,"9.3":0.19856,"10.0-10.2":0,"10.3":0.0494,"11.0-11.2":0.03515,"11.3-11.4":0.0114,"12.0-12.1":0.0019,"12.2-12.5":0.36672,"13.0-13.1":0.00665,"13.2":0.00475,"13.3":0.03135,"13.4-13.7":0.14156,"14.0-14.4":0.30781,"14.5-14.8":0.84269,"15.0-15.1":0.15486,"15.2-15.3":0.52252,"15.4":1.48017,"15.5":5.24804,"16.0":0.0171},P:{"4":0.28364,"5.0-5.4":0.02101,"6.2-6.4":0.06096,"7.2-7.4":0.28364,"8.2":0.06207,"9.2":0.13208,"10.1":0.03152,"11.1-11.2":0.25212,"12.0":0.21431,"13.0":0.09455,"14.0":0.10505,"15.0":0.07354,"16.0":0.33617,"17.0":4.2546},I:{"0":0,"3":0,"4":0.02065,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00129,"4.2-4.3":0.01032,"4.4":0,"4.4.3-4.4.4":0.07097},A:{"10":0.01419,"11":0.03192,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.45809},H:{"0":0.36039},L:{"0":52.8419},S:{"2.5":0},R:{_:"0"},M:{"0":0.16775}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HK.js index 60590c5ecd57d4..c4897ef4867171 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HK.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HK.js @@ -1 +1 @@ -module.exports={C:{"34":0.02236,"52":0.0149,"56":0.00373,"72":0.00373,"78":0.03726,"88":0.00373,"89":0.01863,"90":0.02981,"91":0.01863,"94":0.0149,"95":0.02236,"96":0.40241,"97":0.59616,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 92 93 98 99 3.5 3.6"},D:{"19":0.00745,"22":0.02236,"26":0.01118,"30":0.00745,"34":0.05962,"38":0.14531,"48":0.00373,"49":0.06707,"53":0.04844,"55":0.01863,"56":0.01863,"57":0.00373,"61":0.02981,"62":0.01118,"63":0.01863,"64":0.00373,"65":0.0149,"67":0.02236,"68":0.01863,"69":0.01863,"70":0.01118,"71":0.01118,"72":0.01863,"73":0.0149,"74":0.02236,"75":0.02608,"76":0.01118,"77":0.00745,"78":0.03726,"79":0.54772,"80":0.03726,"81":0.03726,"83":0.04471,"84":0.02608,"85":0.01863,"86":0.04471,"87":0.09688,"88":0.02236,"89":0.08942,"90":0.02981,"91":0.09688,"92":0.24592,"93":0.07452,"94":0.19375,"95":0.12668,"96":0.66323,"97":6.22242,"98":14.46061,"99":0.01863,"100":0.0149,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 23 24 25 27 28 29 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 50 51 52 54 58 59 60 66 101"},F:{"28":0.02236,"36":0.03726,"40":0.00745,"46":0.06707,"82":0.02236,"83":0.11923,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00745,"17":0.00373,"18":0.0149,"92":0.00373,"94":0.00745,"95":0.01118,"96":0.02236,"97":0.6446,"98":2.49642,_:"13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93"},E:{"4":0,"8":0.01118,"11":0.00745,"12":0.01118,"13":0.11551,"14":0.56263,"15":0.27572,_:"0 5 6 7 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.00745,"10.1":0.02236,"11.1":0.04471,"12.1":0.06707,"13.1":0.38378,"14.1":1.93379,"15.1":0.78619,"15.2-15.3":1.79593,"15.4":0.01118},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01697,"6.0-6.1":0.01132,"7.0-7.1":0.0198,"8.1-8.4":0.02546,"9.0-9.2":0.00849,"9.3":0.20651,"10.0-10.2":0.01132,"10.3":0.13579,"11.0-11.2":0.04809,"11.3-11.4":0.05375,"12.0-12.1":0.06224,"12.2-12.5":0.82603,"13.0-13.1":0.07355,"13.2":0.02263,"13.3":0.14427,"13.4-13.7":0.42716,"14.0-14.4":1.47102,"14.5-14.8":5.17403,"15.0-15.1":4.10471,"15.2-15.3":15.34104,"15.4":0.09901},P:{"4":0.80478,"5.0-5.4":0.08172,"6.2-6.4":0.04086,"7.2-7.4":0.01045,"8.2":0.01045,"9.2":0.04181,"10.1":0.0209,"11.1-11.2":0.09407,"12.0":0.06271,"13.0":0.17768,"14.0":0.18813,"15.0":0.22994,"16.0":7.24306},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00167,"4.2-4.3":0.00335,"4.4":0,"4.4.3-4.4.4":0.02008},A:{"11":0.40241,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.19449},Q:{"10.4":0.07529},O:{"0":0.30115},H:{"0":0.08316},L:{"0":25.51358},S:{"2.5":0}}; +module.exports={C:{"34":0.03735,"41":0.00467,"52":0.02335,"68":0.00467,"72":0.00934,"78":0.04669,"81":0.00934,"83":0.00467,"84":0.00467,"88":0.00934,"89":0.00934,"90":0.01868,"91":0.04202,"95":0.00467,"96":0.00934,"97":0.03735,"98":0.01401,"99":0.02335,"100":0.16342,"101":1.13457,"102":0.03268,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 82 85 86 87 92 93 94 103 104 3.5 3.6"},D:{"19":0.00467,"22":0.02801,"26":0.01401,"30":0.00934,"34":0.09338,"38":0.20544,"47":0.00467,"48":0.00934,"49":0.08871,"53":0.05603,"54":0.00467,"55":0.02801,"56":0.00934,"57":0.00934,"61":0.04202,"62":0.01868,"63":0.01401,"64":0.00467,"65":0.01401,"66":0.00467,"67":0.02335,"68":0.01868,"69":0.04202,"70":0.01401,"71":0.01401,"72":0.07004,"73":0.01401,"74":0.02801,"75":0.05136,"76":0.01401,"77":0.00934,"78":0.05603,"79":0.88711,"80":0.0747,"81":0.04202,"83":0.09338,"84":0.0607,"85":0.05603,"86":0.09805,"87":0.1354,"88":0.01868,"89":0.07004,"90":0.03268,"91":0.05603,"92":0.16808,"93":0.01868,"94":0.14941,"95":0.05136,"96":0.18209,"97":0.2568,"98":0.20077,"99":0.24279,"100":0.59763,"101":1.93297,"102":21.42604,"103":1.74621,"104":0.01868,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 23 24 25 27 28 29 31 32 33 35 36 37 39 40 41 42 43 44 45 46 50 51 52 58 59 60 105 106"},F:{"28":0.03268,"36":0.05136,"40":0.00934,"46":0.10272,"86":0.03268,"87":0.14474,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00934,"17":0.00467,"18":0.02335,"86":0.00467,"97":0.00467,"98":0.00934,"99":0.01868,"100":0.01868,"101":0.41554,"102":3.06286,"103":0.61631,_:"13 14 15 16 79 80 81 83 84 85 87 88 89 90 91 92 93 94 95 96"},E:{"4":0,"8":0.00467,"11":0.00467,"12":0.01401,"13":0.10739,"14":0.41087,"15":0.12139,_:"0 5 6 7 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.00467,"10.1":0.02335,"11.1":0.04202,"12.1":0.07004,"13.1":0.32683,"14.1":1.03652,"15.1":0.17275,"15.2-15.3":0.20077,"15.4":1.58746,"15.5":3.56712,"16.0":0.00467},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00393,"5.0-5.1":0.0177,"6.0-6.1":0.01967,"7.0-7.1":0.02361,"8.1-8.4":0.02951,"9.0-9.2":0.03147,"9.3":0.23606,"10.0-10.2":0.02164,"10.3":0.14754,"11.0-11.2":0.03541,"11.3-11.4":0.03934,"12.0-12.1":0.04721,"12.2-12.5":0.76325,"13.0-13.1":0.04524,"13.2":0.0177,"13.3":0.09049,"13.4-13.7":0.25573,"14.0-14.4":0.72784,"14.5-14.8":1.57568,"15.0-15.1":0.55277,"15.2-15.3":0.82227,"15.4":3.08055,"15.5":11.02978,"16.0":0.01967},P:{"4":1.25928,"5.0-5.4":0.17307,"6.2-6.4":0.04072,"7.2-7.4":0.18699,"8.2":0.03054,"9.2":0.02171,"10.1":0.01018,"11.1-11.2":0.05428,"12.0":0.03257,"13.0":0.10856,"14.0":0.15198,"15.0":0.08685,"16.0":0.29311,"17.0":5.15653},I:{"0":0,"3":0,"4":0.00291,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00291,"4.2-4.3":0.00775,"4.4":0,"4.4.3-4.4.4":0.03974},A:{"11":0.80774,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.27188},O:{"0":0.71435},H:{"0":0.10094},L:{"0":26.14501},S:{"2.5":0},R:{_:"0"},M:{"0":0.21857}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HN.js index e4b6a4e80456a6..cfb81ab3be8db2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HN.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HN.js @@ -1 +1 @@ -module.exports={C:{"44":0.01174,"45":0.00391,"52":0.02348,"56":0.00391,"73":0.04305,"78":0.00783,"89":0.00391,"91":0.01174,"93":0.01174,"94":0.02348,"95":0.02348,"96":0.43054,"97":0.74366,"98":0.01174,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 86 87 88 90 92 99 3.5 3.6"},D:{"38":0.01174,"41":0.01174,"47":0.00783,"49":0.01957,"53":0.03914,"58":0.00391,"63":0.00783,"65":0.01566,"66":0.00783,"68":0.07828,"69":0.01174,"70":0.00783,"71":0.00783,"72":0.00783,"73":0.00783,"74":0.00783,"75":0.03131,"76":0.03523,"77":0.00783,"78":0.03131,"79":0.23875,"80":0.09785,"81":0.0274,"83":0.03523,"84":0.06654,"85":0.03523,"86":0.0274,"87":0.06654,"88":0.03523,"89":0.05871,"90":0.02348,"91":0.06654,"92":0.07045,"93":0.09002,"94":0.10176,"95":0.08611,"96":0.49708,"97":7.03737,"98":17.55038,"99":0.03131,"100":0.01566,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 48 50 51 52 54 55 56 57 59 60 61 62 64 67 101"},F:{"46":0.00391,"81":0.00391,"82":0.51273,"83":1.75739,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00783,"15":0.01957,"16":0.00391,"17":0.00783,"18":0.03914,"84":0.00783,"89":0.00783,"90":0.00391,"91":0.00783,"92":0.01957,"93":0.00391,"94":0.00783,"95":0.01957,"96":0.03131,"97":0.73583,"98":2.64586,_:"13 14 79 80 81 83 85 86 87 88"},E:{"4":0,"13":0.02348,"14":0.11351,"15":0.07045,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 15.4","5.1":0.04305,"9.1":0.01174,"10.1":0.00391,"11.1":0.03131,"12.1":0.01174,"13.1":0.10568,"14.1":0.3914,"15.1":0.17613,"15.2-15.3":0.52839},G:{"8":0,"3.2":0.00248,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.01157,"7.0-7.1":0.02479,"8.1-8.4":0.00165,"9.0-9.2":0.00331,"9.3":0.05288,"10.0-10.2":0.00661,"10.3":0.08345,"11.0-11.2":0.01239,"11.3-11.4":0.01074,"12.0-12.1":0.01074,"12.2-12.5":0.33134,"13.0-13.1":0.0157,"13.2":0.00413,"13.3":0.03223,"13.4-13.7":0.08924,"14.0-14.4":0.45941,"14.5-14.8":1.45426,"15.0-15.1":1.28157,"15.2-15.3":4.33551,"15.4":0.0347},P:{"4":0.29919,"5.0-5.4":0.08172,"6.2-6.4":0.04086,"7.2-7.4":0.14444,"8.2":0.04086,"9.2":0.03095,"10.1":0.07459,"11.1-11.2":0.14444,"12.0":0.04127,"13.0":0.11348,"14.0":0.15475,"15.0":0.11348,"16.0":1.73322},I:{"0":0,"3":0,"4":0.00277,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00277,"4.2-4.3":0.00369,"4.4":0,"4.4.3-4.4.4":0.05164},A:{"11":0.10568,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.09738},Q:{"10.4":0},O:{"0":0.0852},H:{"0":0.20166},L:{"0":39.39483},S:{"2.5":0}}; +module.exports={C:{"47":0.01223,"52":0.01631,"63":0.00816,"73":0.06525,"78":0.00816,"81":0.01223,"88":0.00408,"91":0.01223,"92":0.00408,"97":0.00816,"98":0.00816,"99":0.05709,"100":0.10195,"101":1.08475,"102":0.05709,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 82 83 84 85 86 87 89 90 93 94 95 96 103 104 3.5 3.6"},D:{"38":0.02039,"41":0.03262,"47":0.02039,"49":0.04078,"53":0.04078,"63":0.00816,"65":0.00816,"66":0.00816,"68":0.08972,"69":0.00816,"70":0.00816,"73":0.00408,"74":0.00816,"75":0.01223,"76":0.04486,"77":0.00816,"78":0.04486,"79":0.22837,"80":0.01223,"81":0.03262,"83":0.00816,"84":0.02447,"85":0.0367,"86":0.01631,"87":0.05709,"88":0.06933,"89":0.04078,"90":0.03262,"91":0.0734,"92":0.04078,"93":0.05709,"94":0.01223,"95":0.01631,"96":0.10603,"97":0.0734,"98":0.08156,"99":0.10603,"100":0.28546,"101":1.27641,"102":22.26588,"103":2.0757,"104":0.00816,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 48 50 51 52 54 55 56 57 58 59 60 61 62 64 67 71 72 105 106"},F:{"83":0.00816,"85":0.01631,"86":0.77074,"87":1.49663,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01631,"16":0.00816,"17":0.00816,"18":0.06525,"84":0.01223,"89":0.01223,"92":0.01223,"94":0.00408,"96":0.00816,"97":0.00408,"98":0.04078,"99":0.02039,"100":0.02447,"101":0.41596,"102":3.12375,"103":0.575,_:"12 13 14 79 80 81 83 85 86 87 88 90 91 93 95"},E:{"4":0,"13":0.00816,"14":0.04894,"15":0.02447,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.01631,"11.1":0.03262,"12.1":0.01223,"13.1":0.08564,"14.1":0.23245,"15.1":0.07748,"15.2-15.3":0.06525,"15.4":0.30585,"15.5":0.65656,"16.0":0.02039},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00201,"6.0-6.1":0.02514,"7.0-7.1":0.01408,"8.1-8.4":0.00704,"9.0-9.2":0,"9.3":0.06437,"10.0-10.2":0,"10.3":0.06034,"11.0-11.2":0.01307,"11.3-11.4":0.00905,"12.0-12.1":0.00905,"12.2-12.5":0.36005,"13.0-13.1":0.00905,"13.2":0.00603,"13.3":0.03118,"13.4-13.7":0.0875,"14.0-14.4":0.30071,"14.5-14.8":0.74524,"15.0-15.1":0.18204,"15.2-15.3":0.42542,"15.4":1.31146,"15.5":6.29985,"16.0":0.05733},P:{"4":0.21816,"5.0-5.4":0.17307,"6.2-6.4":0.04072,"7.2-7.4":0.18699,"8.2":0.03054,"9.2":0.03117,"10.1":0.01018,"11.1-11.2":0.10388,"12.0":0.02078,"13.0":0.06233,"14.0":0.0935,"15.0":0.05194,"16.0":0.29088,"17.0":2.02574},I:{"0":0,"3":0,"4":0.00375,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.003,"4.4":0,"4.4.3-4.4.4":0.04654},A:{"11":0.07748,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.15989},H:{"0":0.22987},L:{"0":47.85269},S:{"2.5":0},R:{_:"0"},M:{"0":0.15397}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HR.js index 7aacf603128853..6cc8b25107b54d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HR.js @@ -1 +1 @@ -module.exports={C:{"48":0.00468,"52":0.08886,"56":0.00935,"63":0.02806,"68":0.00468,"72":0.00468,"75":0.00468,"78":0.03274,"84":0.01871,"88":0.02806,"89":0.05145,"90":0.00468,"91":0.08419,"92":0.05145,"93":0.00468,"94":0.02806,"95":0.0608,"96":2.06256,"97":3.20842,"98":0.00935,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 64 65 66 67 69 70 71 73 74 76 77 79 80 81 82 83 85 86 87 99 3.5 3.6"},D:{"38":0.00935,"41":0.00468,"43":0.00935,"47":0.00468,"49":0.09822,"53":0.03274,"59":0.00468,"63":0.00935,"65":0.00468,"66":0.00468,"68":0.00468,"69":0.01403,"70":0.00468,"71":0.01403,"74":0.01403,"75":0.02339,"76":0.02339,"77":0.1637,"78":0.00468,"79":0.13096,"80":0.01871,"81":0.25256,"83":0.01403,"84":0.03274,"85":0.01871,"86":0.04677,"87":0.0608,"88":0.02806,"89":0.04209,"90":0.02806,"91":0.05612,"92":0.04209,"93":0.11693,"94":0.05612,"95":0.06548,"96":0.49109,"97":9.41948,"98":21.04182,"99":0.00935,"100":0.00468,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 44 45 46 48 50 51 52 54 55 56 57 58 60 61 62 64 67 72 73 101"},F:{"36":0.00468,"46":0.01403,"68":0.00468,"72":0.00935,"82":0.35545,"83":1.75388,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.01871,"18":0.01403,"86":0.00468,"88":0.01871,"89":0.00935,"92":0.00935,"94":0.00468,"95":0.00935,"96":0.03742,"97":0.65946,"98":2.58638,_:"12 13 14 15 16 79 80 81 83 84 85 87 90 91 93"},E:{"4":0,"13":0.00935,"14":0.07951,"15":0.03742,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.00935,"12.1":0.02339,"13.1":0.14031,"14.1":0.31336,"15.1":0.14966,"15.2-15.3":0.35078},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00668,"6.0-6.1":0,"7.0-7.1":0.00445,"8.1-8.4":0.00223,"9.0-9.2":0.00148,"9.3":0.06163,"10.0-10.2":0.00074,"10.3":0.02747,"11.0-11.2":0.01114,"11.3-11.4":0.02227,"12.0-12.1":0.01336,"12.2-12.5":0.24205,"13.0-13.1":0.01782,"13.2":0.00891,"13.3":0.0297,"13.4-13.7":0.11286,"14.0-14.4":0.3705,"14.5-14.8":1.41889,"15.0-15.1":1.2741,"15.2-15.3":3.78444,"15.4":0.01485},P:{"4":0.13398,"5.0-5.4":0.01056,"6.2-6.4":0.01056,"7.2-7.4":0.01031,"8.2":0.01049,"9.2":0.09508,"10.1":0.01031,"11.1-11.2":0.12367,"12.0":0.04122,"13.0":0.11337,"14.0":0.15459,"15.0":0.1649,"16.0":3.12279},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00192,"4.2-4.3":0.00447,"4.4":0,"4.4.3-4.4.4":0.02555},A:{"11":0.28997,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.26083},Q:{"10.4":0},O:{"0":0.08517},H:{"0":0.44851},L:{"0":40.42433},S:{"2.5":0}}; +module.exports={C:{"2":0.00418,"3":0.00418,"33":0.00418,"52":0.06685,"66":0.02089,"68":0.00836,"72":0.00418,"78":0.02089,"80":0.01253,"81":0.00418,"83":0.00836,"84":0.00836,"85":0.00836,"86":0.00836,"88":0.01253,"89":0.03342,"91":0.04178,"92":0.00836,"94":0.00418,"95":0.00836,"96":0.00836,"97":0.02925,"98":0.01671,"99":0.10027,"100":0.60581,"101":3.87301,"102":0.14205,"103":0.00418,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 82 87 90 93 104","3.5":0.01253,"3.6":0.04596},D:{"13":0.00836,"14":0.00836,"15":0.00836,"38":0.01253,"41":0.01671,"47":0.00418,"49":0.07103,"53":0.01253,"58":0.00418,"59":0.00836,"63":0.00836,"65":0.00836,"66":0.01671,"67":0.00418,"69":0.01253,"70":0.00836,"71":0.02507,"73":0.00836,"74":0.0376,"75":0.01671,"76":0.01671,"77":0.09609,"78":0.00836,"79":0.14623,"80":0.01671,"81":0.12534,"83":0.01253,"84":0.02507,"85":0.04178,"86":0.05014,"87":0.05431,"88":0.01671,"89":0.0376,"90":0.01253,"91":0.02925,"92":0.05014,"93":0.02507,"94":0.03342,"95":0.02925,"96":0.14205,"97":0.05849,"98":0.05849,"99":0.09609,"100":0.22143,"101":1.18655,"102":22.61551,"103":2.2603,"104":0.00418,_:"4 5 6 7 8 9 10 11 12 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 48 50 51 52 54 55 56 57 60 61 62 64 68 72 105 106"},F:{"28":0.00418,"36":0.00418,"46":0.02089,"69":0.00418,"85":0.0376,"86":0.43033,"87":1.29936,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 11.1 11.5 11.6","10.0-10.1":0,"10.6":0.02089,"12.1":0.01671},B:{"16":0.00836,"17":0.00418,"18":0.00836,"84":0.00418,"92":0.00418,"95":0.00418,"98":0.00418,"99":0.02507,"100":0.01671,"101":0.30917,"102":2.18927,"103":0.46794,_:"12 13 14 15 79 80 81 83 85 86 87 88 89 90 91 93 94 96 97"},E:{"4":0,"13":0.01671,"14":0.05431,"15":0.02089,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00836,"12.1":0.02089,"13.1":0.11698,"14.1":0.22561,"15.1":0.05014,"15.2-15.3":0.06685,"15.4":0.27157,"15.5":0.70608},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00092,"8.1-8.4":0.00183,"9.0-9.2":0,"9.3":0.05034,"10.0-10.2":0,"10.3":0.03478,"11.0-11.2":0.00732,"11.3-11.4":0.01098,"12.0-12.1":0.00732,"12.2-12.5":0.23524,"13.0-13.1":0.01007,"13.2":0.00458,"13.3":0.03387,"13.4-13.7":0.07323,"14.0-14.4":0.24073,"14.5-14.8":0.79359,"15.0-15.1":0.2508,"15.2-15.3":0.46407,"15.4":1.45995,"15.5":5.43156,"16.0":0.0119},P:{"4":0.16437,"5.0-5.4":0.0305,"6.2-6.4":0.02097,"7.2-7.4":0.01027,"8.2":0.06207,"9.2":0.06292,"10.1":0.33554,"11.1-11.2":0.05137,"12.0":0.03082,"13.0":0.08219,"14.0":0.10273,"15.0":0.06164,"16.0":0.29793,"17.0":3.43128},I:{"0":0,"3":0,"4":0.00561,"2.1":0,"2.2":0,"2.3":0.00981,"4.1":0.01402,"4.2-4.3":0.02943,"4.4":0,"4.4.3-4.4.4":0.09251},A:{"11":0.25486,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.07569},H:{"0":0.56221},L:{"0":42.28864},S:{"2.5":0},R:{_:"0"},M:{"0":0.43665}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HT.js index 3c052986d4f78c..4afb01d6b2419f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HT.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HT.js @@ -1 +1 @@ -module.exports={C:{"46":0.00146,"52":0.00731,"68":0.00146,"78":0.00146,"84":0.00292,"87":0.00439,"88":0.00146,"89":0.00439,"91":0.00731,"94":0.00146,"95":0.01901,"96":0.17398,"97":0.30556,"98":0.00585,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 90 92 93 99 3.5 3.6"},D:{"11":0.00292,"26":0.00146,"33":0.00585,"38":0.00439,"39":0.00292,"42":0.00439,"43":0.00585,"46":0.00146,"49":0.01023,"50":0.00585,"54":0.00146,"55":0.00439,"56":0.00731,"58":0.00146,"59":0.00146,"60":0.05556,"63":0.01462,"64":0.00731,"65":0.00292,"66":0.00292,"67":0.00439,"68":0.00731,"69":0.00292,"70":0.01316,"71":0.00731,"72":0.00585,"73":0.01023,"74":0.01023,"75":0.03363,"76":0.04678,"77":0.04386,"78":0.00146,"79":0.03363,"80":0.01023,"81":0.02193,"83":0.00585,"84":0.01462,"85":0.01023,"86":0.0307,"87":0.02193,"88":0.0307,"89":0.09211,"90":0.02339,"91":0.02485,"92":0.11404,"93":0.05263,"94":0.09503,"95":0.02193,"96":0.1579,"97":2.10236,"98":4.1784,"99":0.00439,"100":0.00439,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 35 36 37 40 41 44 45 47 48 51 52 53 57 61 62 101"},F:{"33":0.00146,"77":0.00439,"79":0.00146,"80":0.00439,"82":0.02778,"83":0.33626,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.04532,"13":0.02047,"14":0.01023,"15":0.01023,"16":0.0117,"17":0.0117,"18":0.0424,"80":0.00292,"84":0.01608,"85":0.00585,"86":0.02778,"87":0.00292,"88":0.00146,"89":0.02193,"90":0.00439,"91":0.00292,"92":0.01462,"93":0.00731,"94":0.00731,"95":0.00877,"96":0.0424,"97":0.41959,"98":1.38013,_:"79 81 83"},E:{"4":0,"12":0.00146,"13":0.03509,"14":0.04825,"15":0.02339,_:"0 5 6 7 8 9 10 11 3.1 3.2 7.1 9.1","5.1":0.0117,"6.1":0.00439,"10.1":0.09942,"11.1":0.00731,"12.1":0.01316,"13.1":0.02047,"14.1":0.16374,"15.1":0.36989,"15.2-15.3":0.09795,"15.4":0.00146},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00104,"7.0-7.1":0.01351,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04262,"10.0-10.2":0.00208,"10.3":0.11538,"11.0-11.2":0.02495,"11.3-11.4":0.4449,"12.0-12.1":0.09251,"12.2-12.5":2.5613,"13.0-13.1":0.05925,"13.2":0.02079,"13.3":0.27962,"13.4-13.7":0.57588,"14.0-14.4":1.71204,"14.5-14.8":1.74426,"15.0-15.1":1.38564,"15.2-15.3":1.3004,"15.4":0.01455},P:{"4":0.35753,"5.0-5.4":0.08172,"6.2-6.4":0.04086,"7.2-7.4":0.2043,"8.2":0.04086,"9.2":0.23495,"10.1":0.07459,"11.1-11.2":0.4086,"12.0":0.07151,"13.0":0.09194,"14.0":0.30645,"15.0":0.26559,"16.0":0.75592},I:{"0":0,"3":0,"4":0.00033,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00154,"4.2-4.3":0.00065,"4.4":0,"4.4.3-4.4.4":0.01456},A:{"10":0.00146,"11":0.07749,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.02561},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.16222},Q:{"10.4":0},O:{"0":0.21345},H:{"0":0.86491},L:{"0":72.20151},S:{"2.5":0}}; +module.exports={C:{"52":0.00414,"78":0.00691,"84":0.00138,"91":0.01243,"97":0.00138,"98":0.00276,"99":0.00552,"100":0.05662,"101":0.58969,"102":0.01657,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 89 90 92 93 94 95 96 103 104 3.5 3.6"},D:{"33":0.00138,"38":0.00276,"40":0.00414,"42":0.00967,"43":0.00138,"49":0.00691,"50":0.00276,"53":0.00552,"55":0.00276,"56":0.00414,"60":0.06353,"62":0.00552,"63":0.029,"64":0.00414,"65":0.02486,"66":0.00414,"67":0.04419,"68":0.02348,"69":0.00552,"70":0.00552,"71":0.00138,"72":0.00414,"73":0.00691,"74":0.00967,"75":0.01105,"76":0.11048,"77":0.00691,"78":0.00552,"79":0.01243,"80":0.01105,"81":0.03314,"83":0.02486,"84":0.00414,"85":0.02486,"86":0.02348,"87":0.03453,"88":0.04695,"89":0.01105,"90":0.01657,"91":0.01795,"92":0.12981,"93":0.03176,"94":0.03729,"95":0.01381,"96":0.02762,"97":0.02348,"98":0.06215,"99":0.0511,"100":0.12015,"101":0.48335,"102":5.41352,"103":0.35077,"104":0.00414,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 39 41 44 45 46 47 48 51 52 54 57 58 59 61 105 106"},F:{"27":0.00138,"42":0.00138,"53":0.00276,"84":0.00138,"85":0.01105,"86":0.058,"87":0.27206,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.03314,"13":0.01243,"14":0.00691,"15":0.01243,"16":0.01381,"17":0.00829,"18":0.03453,"80":0.00691,"84":0.03176,"85":0.029,"88":0.00138,"89":0.01105,"90":0.00414,"92":0.02348,"95":0.00552,"96":0.00829,"97":0.01243,"98":0.00414,"99":0.02762,"100":0.01657,"101":0.24306,"102":1.09237,"103":0.21406,_:"79 81 83 86 87 91 93 94"},E:{"4":0,"6":0.00829,"13":0.03038,"14":0.03314,"15":0.00967,_:"0 5 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.00276,"10.1":0.00414,"11.1":0.00691,"12.1":0.01519,"13.1":0.04005,"14.1":0.11186,"15.1":0.02486,"15.2-15.3":0.01519,"15.4":0.07734,"15.5":0.15882},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00254,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.12718,"10.0-10.2":0.00636,"10.3":0.3383,"11.0-11.2":0.01908,"11.3-11.4":0.62955,"12.0-12.1":0.15262,"12.2-12.5":2.00947,"13.0-13.1":0.08903,"13.2":0.01399,"13.3":0.16025,"13.4-13.7":0.43242,"14.0-14.4":1.61012,"14.5-14.8":1.96115,"15.0-15.1":0.87247,"15.2-15.3":1.02763,"15.4":1.27055,"15.5":1.94461,"16.0":0.03561},P:{"4":0.28506,"5.0-5.4":0.17307,"6.2-6.4":0.04072,"7.2-7.4":0.29524,"8.2":0.03054,"9.2":0.30543,"10.1":0.01018,"11.1-11.2":0.51922,"12.0":0.02036,"13.0":0.20362,"14.0":0.20362,"15.0":0.15271,"16.0":0.51922,"17.0":1.1708},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00064,"4.2-4.3":0.00191,"4.4":0,"4.4.3-4.4.4":0.05779},A:{"11":0.04695,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.24992},H:{"0":0.82406},L:{"0":70.83105},S:{"2.5":0},R:{_:"0"},M:{"0":0.15512}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HU.js index 7e548044600573..12dc3fea512932 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HU.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HU.js @@ -1 +1 @@ -module.exports={C:{"50":0.01385,"52":0.15233,"60":0.00462,"68":0.01385,"72":0.01385,"74":0.00923,"76":0.00462,"78":0.03693,"80":0.00462,"81":0.00923,"82":0.00462,"83":0.00462,"84":0.44314,"86":0.00462,"88":0.03231,"89":0.02308,"90":0.00462,"91":0.10617,"92":0.00923,"93":0.00462,"94":0.0277,"95":0.11078,"96":2.88038,"97":3.88667,"98":0.00923,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 73 75 77 79 85 87 99 3.5 3.6"},D:{"24":0.01385,"33":0.01385,"34":0.00923,"37":0.01385,"38":0.0277,"49":0.36466,"53":0.01846,"66":0.01846,"68":0.00462,"69":0.00462,"70":0.00462,"71":0.00462,"73":0.00462,"74":0.0277,"75":0.00462,"76":0.00923,"77":0.00923,"78":0.01385,"79":0.26311,"80":0.01385,"81":0.01846,"83":0.05539,"84":0.01846,"85":0.01846,"86":0.0277,"87":0.48468,"88":0.02308,"89":0.04154,"90":0.0277,"91":0.03231,"92":0.04154,"93":0.15233,"94":0.03231,"95":0.06462,"96":0.38313,"97":8.06877,"98":19.11024,"99":0.00923,"100":0.00923,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 35 36 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 63 64 65 67 72 101"},F:{"36":0.00923,"46":0.00462,"80":0.00462,"81":0.00462,"82":0.36928,"83":1.66638,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00923,"18":0.00923,"87":0.00923,"89":0.00462,"92":0.00923,"95":0.01385,"96":0.02308,"97":0.7801,"98":2.52495,_:"12 13 14 15 16 79 80 81 83 84 85 86 88 90 91 93 94"},E:{"4":0,"13":0.12463,"14":0.11078,"15":0.06001,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.01385,"11.1":0.01385,"12.1":0.03231,"13.1":0.10617,"14.1":0.29081,"15.1":0.18464,"15.2-15.3":0.42467,"15.4":0.00462},G:{"8":0.00105,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00105,"6.0-6.1":0.00211,"7.0-7.1":0.00633,"8.1-8.4":0,"9.0-9.2":0.00316,"9.3":0.02637,"10.0-10.2":0.00211,"10.3":0.03375,"11.0-11.2":0.01898,"11.3-11.4":0.0116,"12.0-12.1":0.01793,"12.2-12.5":0.26051,"13.0-13.1":0.01688,"13.2":0.00422,"13.3":0.04113,"13.4-13.7":0.27212,"14.0-14.4":0.44403,"14.5-14.8":1.64535,"15.0-15.1":1.40277,"15.2-15.3":6.29137,"15.4":0.03902},P:{"4":0.21756,"5.0-5.4":0.08172,"6.2-6.4":0.04086,"7.2-7.4":0.01045,"8.2":0.01045,"9.2":0.04181,"10.1":0.0209,"11.1-11.2":0.03108,"12.0":0.02072,"13.0":0.07252,"14.0":0.13468,"15.0":0.09324,"16.0":2.29988},I:{"0":0,"3":0,"4":0,"2.1":0.00383,"2.2":0,"2.3":0,"4.1":0.00383,"4.2-4.3":0.0153,"4.4":0,"4.4.3-4.4.4":0.07396},A:{"11":0.18926,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0.27997},Q:{"10.4":0},O:{"0":0.03769},H:{"0":0.44346},L:{"0":40.30563},S:{"2.5":0}}; +module.exports={C:{"51":0.00435,"52":0.11734,"66":0.00435,"68":0.01304,"72":0.01304,"75":0.00869,"78":0.03911,"81":0.00869,"82":0.00435,"83":0.00435,"88":0.01738,"89":0.01738,"91":0.09996,"92":0.00435,"94":0.00869,"95":0.01738,"96":0.01304,"97":0.01304,"98":0.03042,"99":1.83401,"100":0.47371,"101":5.00225,"102":0.18253,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 53 54 55 56 57 58 59 60 61 62 63 64 65 67 69 70 71 73 74 76 77 79 80 84 85 86 87 90 93 103 104 3.5 3.6"},D:{"34":0.00869,"38":0.02608,"47":0.00435,"49":0.0565,"53":0.01738,"58":0.00435,"66":0.00435,"68":0.00435,"69":0.01738,"73":0.00869,"74":0.00435,"76":0.00869,"77":0.00435,"78":0.00869,"79":0.27814,"80":0.00869,"81":0.01304,"83":0.01304,"84":0.02173,"85":0.01738,"86":0.02173,"87":0.04781,"88":0.01304,"89":0.03042,"90":0.01738,"91":0.03911,"92":0.03477,"93":0.01304,"94":0.01304,"95":0.03042,"96":0.05215,"97":0.03042,"98":0.04781,"99":0.09561,"100":0.93004,"101":1.19515,"102":21.73869,"103":1.95135,"104":0.00869,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 55 56 57 59 60 61 62 63 64 65 67 70 71 72 75 105 106"},F:{"28":0.00435,"36":0.00869,"46":0.00869,"82":0.00435,"85":0.03911,"86":0.42156,"87":1.36899,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00869,"18":0.00869,"87":0.00435,"92":0.01304,"97":0.00435,"99":0.00869,"100":0.02173,"101":0.50414,"102":2.49026,"103":0.48675,_:"12 13 14 15 16 79 80 81 83 84 85 86 88 89 90 91 93 94 95 96 98"},E:{"4":0,"13":0.01304,"14":0.07388,"15":0.02608,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01304,"12.1":0.02173,"13.1":0.07823,"14.1":0.15646,"15.1":0.04346,"15.2-15.3":0.04781,"15.4":0.27814,"15.5":0.68667,"16.0":0.00435},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00322,"6.0-6.1":0,"7.0-7.1":0.0075,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02679,"10.0-10.2":0.00214,"10.3":0.03322,"11.0-11.2":0.01179,"11.3-11.4":0.0075,"12.0-12.1":0.01286,"12.2-12.5":0.22507,"13.0-13.1":0.0075,"13.2":0.00429,"13.3":0.02465,"13.4-13.7":0.0911,"14.0-14.4":0.25722,"14.5-14.8":0.7363,"15.0-15.1":0.20364,"15.2-15.3":0.46729,"15.4":1.56585,"15.5":6.95684,"16.0":0.03751},P:{"4":0.36211,"5.0-5.4":0.17307,"6.2-6.4":0.04072,"7.2-7.4":0.18699,"8.2":0.03054,"9.2":0.02171,"10.1":0.01018,"11.1-11.2":0.02069,"12.0":0.01035,"13.0":0.04138,"14.0":0.08277,"15.0":0.04138,"16.0":0.19657,"17.0":2.40024},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00424,"4.2-4.3":0.01272,"4.4":0,"4.4.3-4.4.4":0.07352},A:{"11":0.07823,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.05655},H:{"0":0.48719},L:{"0":41.49629},S:{"2.5":0},R:{_:"0"},M:{"0":0.33365}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ID.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ID.js index c2cd637dbf513f..62fc6ab5c0a969 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ID.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ID.js @@ -1 +1 @@ -module.exports={C:{"36":0.12877,"45":0.00307,"47":0.00307,"48":0.00307,"52":0.02453,"56":0.01533,"60":0.00613,"62":0.00613,"66":0.00307,"68":0.00307,"69":0.00307,"70":0.00307,"72":0.01533,"77":0.00307,"78":0.01226,"80":0.00613,"81":0.00613,"82":0.00307,"83":0.00307,"84":0.0092,"85":0.00613,"86":0.00307,"87":0.00307,"88":0.02146,"89":0.01533,"90":0.00613,"91":0.02453,"92":0.01226,"93":0.01533,"94":0.02146,"95":0.04599,"96":1.01485,"97":1.65257,"98":0.05825,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 46 49 50 51 53 54 55 57 58 59 61 63 64 65 67 71 73 74 75 76 79 99 3.5 3.6"},D:{"25":0.00613,"49":0.01533,"58":0.00613,"63":0.01533,"65":0.00307,"66":0.00307,"67":0.00613,"68":0.00307,"69":0.00613,"70":0.0092,"71":0.0184,"72":0.00613,"73":0.00613,"74":0.01226,"75":0.0092,"76":0.0092,"77":0.0092,"78":0.0092,"79":0.04292,"80":0.02453,"81":0.01226,"83":0.02453,"84":0.03066,"85":0.03679,"86":0.04599,"87":0.08891,"88":0.02146,"89":0.09198,"90":0.02146,"91":0.03679,"92":0.05519,"93":0.09198,"94":0.05519,"95":0.05825,"96":0.33726,"97":5.70276,"98":14.99581,"99":0.0092,"100":0.0092,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 64 101"},F:{"82":0.06745,"83":0.43537,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00613,"14":0.00307,"15":0.00307,"17":0.00307,"18":0.01533,"84":0.00307,"92":0.0092,"94":0.00307,"95":0.00613,"96":0.02759,"97":0.37405,"98":1.48701,_:"13 16 79 80 81 83 85 86 87 88 89 90 91 93"},E:{"4":0,"12":0.00613,"13":0.0184,"14":0.07665,"15":0.03986,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 10.1 15.4","5.1":0.11957,"9.1":0.00613,"11.1":0.0092,"12.1":0.0184,"13.1":0.08585,"14.1":0.1717,"15.1":0.09198,"15.2-15.3":0.1349},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00052,"5.0-5.1":0.00052,"6.0-6.1":0.00104,"7.0-7.1":0.00052,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00993,"10.0-10.2":0.00157,"10.3":0.01567,"11.0-11.2":0.01045,"11.3-11.4":0.00836,"12.0-12.1":0.01515,"12.2-12.5":0.28633,"13.0-13.1":0.0162,"13.2":0.00731,"13.3":0.04493,"13.4-13.7":0.11599,"14.0-14.4":0.43106,"14.5-14.8":1.00528,"15.0-15.1":0.98752,"15.2-15.3":2.25614,"15.4":0.00679},P:{"4":0.20201,"5.0-5.4":0.08172,"6.2-6.4":0.02146,"7.2-7.4":0.08506,"8.2":0.01045,"9.2":0.0319,"10.1":0.02126,"11.1-11.2":0.10632,"12.0":0.04253,"13.0":0.11695,"14.0":0.15948,"15.0":0.13822,"16.0":1.16953},I:{"0":0,"3":0.00109,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00109,"4.2-4.3":0.00082,"4.4":0,"4.4.3-4.4.4":0.01088},A:{"8":0.00624,"9":0.00312,"11":0.17461,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.12481},Q:{"10.4":0},O:{"0":1.14411},H:{"0":1.05035},L:{"0":60.07681},S:{"2.5":0}}; +module.exports={C:{"36":0.16249,"45":0.00319,"47":0.00319,"52":0.02549,"56":0.02549,"60":0.00319,"66":0.00319,"72":0.00956,"78":0.00956,"82":0.00319,"84":0.00319,"88":0.01912,"89":0.00956,"90":0.00319,"91":0.01912,"92":0.00637,"93":0.00637,"94":0.00956,"95":0.01274,"96":0.01274,"97":0.01274,"98":0.01912,"99":0.06372,"100":0.30267,"101":2.30029,"102":0.14656,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 46 48 49 50 51 53 54 55 57 58 59 61 62 63 64 65 67 68 69 70 71 73 74 75 76 77 79 80 81 83 85 86 87 103 104 3.5","3.6":0.01274},D:{"25":0.00637,"49":0.00956,"58":0.00637,"63":0.01274,"65":0.00319,"66":0.00319,"67":0.00637,"68":0.00319,"69":0.00956,"70":0.00956,"71":0.01274,"72":0.00956,"73":0.00637,"74":0.01593,"75":0.00637,"76":0.00637,"77":0.00956,"78":0.01274,"79":0.03505,"80":0.03505,"81":0.01593,"83":0.02549,"84":0.02549,"85":0.02549,"86":0.03823,"87":0.05098,"88":0.03505,"89":0.08921,"90":0.01593,"91":0.02867,"92":0.03823,"93":0.0223,"94":0.02867,"95":0.02867,"96":0.06372,"97":0.05098,"98":0.07328,"99":0.07965,"100":0.21346,"101":0.96854,"102":19.21477,"103":1.70451,"104":0.00956,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 64 105 106"},F:{"85":0.01912,"86":0.07965,"87":0.33772,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00637,"14":0.00319,"15":0.00319,"16":0.00319,"17":0.00319,"18":0.01274,"84":0.00637,"89":0.00319,"90":0.00319,"92":0.00956,"96":0.00637,"97":0.00637,"98":0.00637,"99":0.00956,"100":0.01593,"101":0.21028,"102":1.6153,"103":0.31541,_:"13 79 80 81 83 85 86 87 88 91 93 94 95"},E:{"4":0,"12":0.00319,"13":0.01593,"14":0.05416,"15":0.01912,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 10.1 16.0","5.1":0.07009,"9.1":0.00637,"11.1":0.00637,"12.1":0.01593,"13.1":0.06691,"14.1":0.1147,"15.1":0.03823,"15.2-15.3":0.02867,"15.4":0.10514,"15.5":0.20072},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00108,"5.0-5.1":0.00054,"6.0-6.1":0.00054,"7.0-7.1":0.00054,"8.1-8.4":0.00108,"9.0-9.2":0.00108,"9.3":0.00921,"10.0-10.2":0.00271,"10.3":0.01246,"11.0-11.2":0.00975,"11.3-11.4":0.00596,"12.0-12.1":0.01192,"12.2-12.5":0.21401,"13.0-13.1":0.01354,"13.2":0.00759,"13.3":0.03413,"13.4-13.7":0.07802,"14.0-14.4":0.26819,"14.5-14.8":0.48924,"15.0-15.1":0.25843,"15.2-15.3":0.35812,"15.4":1.10796,"15.5":2.51607,"16.0":0.00813},P:{"4":0.19908,"5.0-5.4":0.17307,"6.2-6.4":0.04072,"7.2-7.4":0.0943,"8.2":0.03054,"9.2":0.03143,"10.1":0.01018,"11.1-11.2":0.0943,"12.0":0.03143,"13.0":0.0943,"14.0":0.10478,"15.0":0.08383,"16.0":0.29339,"17.0":1.19451},I:{"0":0,"3":0.00093,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00186,"4.2-4.3":0.00186,"4.4":0,"4.4.3-4.4.4":0.0158},A:{"11":0.07009,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.09705},H:{"0":1.02572},L:{"0":59.61484},S:{"2.5":0},R:{_:"0"},M:{"0":0.13628}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IE.js index 5b6c6ec8bdd0da..d8a1a29e1130a3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IE.js @@ -1 +1 @@ -module.exports={C:{"11":0.0088,"24":0.01321,"38":0.02201,"43":0.01761,"44":0.07483,"45":0.01761,"50":0.01321,"52":0.02201,"66":0.01321,"70":0.0088,"78":0.04842,"79":0.01761,"80":0.01321,"81":0.0088,"82":0.01321,"83":0.0088,"84":0.0088,"87":0.17168,"88":0.0088,"91":0.16728,"94":0.4358,"95":0.01321,"96":0.51944,"97":0.70432,"98":0.0044,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 47 48 49 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 71 72 73 74 75 76 77 85 86 89 90 92 93 99 3.5 3.6"},D:{"28":0.0044,"37":0.0088,"38":0.0088,"43":0.0088,"47":0.01761,"48":0.2157,"49":0.07924,"60":0.02201,"63":0.0088,"65":0.03522,"67":0.01761,"68":0.01761,"69":0.01321,"70":0.0088,"71":0.0088,"72":0.01761,"74":0.01761,"75":0.0044,"76":0.02201,"77":0.01321,"78":0.17608,"79":0.07483,"80":0.03522,"81":0.09244,"83":0.05282,"84":0.09244,"85":0.10125,"86":0.11885,"87":0.12766,"88":0.02641,"89":0.03962,"90":0.02201,"91":0.04842,"92":0.04402,"93":0.16728,"94":0.36977,"95":0.06603,"96":0.34776,"97":9.0241,"98":19.45244,"99":0.0088,"100":0.01321,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 39 40 41 42 44 45 46 50 51 52 53 54 55 56 57 58 59 61 62 64 66 73 101"},F:{"82":0.11885,"83":0.38297,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0088,"13":0.0088,"15":0.01761,"16":0.02201,"18":0.03081,"84":0.0088,"85":0.0044,"86":0.0088,"88":0.0044,"92":0.0088,"94":0.0088,"95":0.04402,"96":0.03962,"97":0.81437,"98":2.28464,_:"14 17 79 80 81 83 87 89 90 91 93"},E:{"4":0,"8":0.0088,"9":0.03081,"13":0.08364,"14":0.73954,"15":0.16728,_:"0 5 6 7 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.0088,"11.1":0.01761,"12.1":0.07483,"13.1":0.28173,"14.1":1.5407,"15.1":0.71753,"15.2-15.3":1.3162,"15.4":0.0044},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.0154,"7.0-7.1":0.05389,"8.1-8.4":0.0077,"9.0-9.2":0.00513,"9.3":0.11804,"10.0-10.2":0,"10.3":0.1668,"11.0-11.2":0.03593,"11.3-11.4":0.03593,"12.0-12.1":0.04106,"12.2-12.5":1.05209,"13.0-13.1":0.02309,"13.2":0.02053,"13.3":0.11547,"13.4-13.7":0.37978,"14.0-14.4":1.17783,"14.5-14.8":6.4614,"15.0-15.1":3.5335,"15.2-15.3":12.37366,"15.4":0.02823},P:{"4":0.021,"5.0-5.4":0.01022,"6.2-6.4":0.01022,"7.2-7.4":0.0315,"8.2":0.08049,"9.2":0.05112,"10.1":0.12073,"11.1-11.2":0.09449,"12.0":0.0315,"13.0":0.11548,"14.0":0.18897,"15.0":0.13648,"16.0":3.01305},I:{"0":0,"3":0,"4":0.00292,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00195,"4.2-4.3":0.00584,"4.4":0,"4.4.3-4.4.4":0.03407},A:{"8":0.00446,"9":0.1203,"11":0.24061,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.40298},Q:{"10.4":0},O:{"0":0.02799},H:{"0":0.10598},L:{"0":25.91888},S:{"2.5":0}}; +module.exports={C:{"38":0.02211,"43":0.01895,"44":0.08211,"45":0.02211,"48":0.00316,"52":0.02526,"53":0.00316,"56":0.03158,"57":0.00316,"65":0.00316,"68":0.00316,"70":0.00632,"78":0.03474,"79":0.01263,"80":0.00947,"81":0.01263,"82":0.01579,"83":0.00632,"87":0.08842,"88":0.00632,"89":0.00316,"91":0.02526,"95":0.00316,"97":0.00632,"98":0.00632,"99":0.02211,"100":0.15474,"101":1.13688,"102":0.04737,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 47 49 50 51 54 55 58 59 60 61 62 63 64 66 67 69 71 72 73 74 75 76 77 84 85 86 90 92 93 94 96 103 104 3.5 3.6"},D:{"17":0.00316,"37":0.01263,"38":0.00632,"41":0.00947,"47":0.01895,"48":0.23685,"49":0.08842,"53":0.00947,"64":0.00316,"65":0.00947,"67":0.00316,"69":0.00316,"70":0.00316,"71":0.00632,"73":0.00316,"74":0.00316,"75":0.00632,"76":0.02211,"77":0.00632,"78":0.30948,"79":0.08211,"80":0.01579,"81":0.11053,"83":0.04421,"84":0.10106,"85":0.0979,"86":0.09158,"87":0.16106,"88":0.00947,"89":0.04105,"90":0.01263,"91":0.06316,"92":0.02526,"93":0.0379,"94":0.03474,"95":0.01263,"96":0.17685,"97":0.11685,"98":0.04737,"99":0.14843,"100":0.34738,"101":2.13797,"102":13.89204,"103":1.41794,"104":0.00632,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 39 40 42 43 44 45 46 50 51 52 54 55 56 57 58 59 60 61 62 63 66 68 72 105 106"},F:{"70":0.00316,"71":0.00947,"85":0.01579,"86":0.24948,"87":0.36001,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00632,"13":0.00947,"15":0.00632,"18":0.03158,"80":0.00316,"84":0.01263,"86":0.00947,"87":0.00632,"89":0.00632,"92":0.00632,"94":0.00316,"95":0.00316,"96":0.00947,"97":0.00632,"98":0.01263,"99":0.02526,"100":0.02211,"101":0.4358,"102":2.12849,"103":0.44844,_:"14 16 17 79 81 83 85 88 90 91 93"},E:{"4":0,"7":0.00632,"8":0.00947,"9":0.03474,"10":0.00316,"13":0.05053,"14":0.28106,"15":0.05369,_:"0 5 6 11 12 3.1 3.2 6.1 7.1","5.1":0.00316,"9.1":0.00316,"10.1":0.00632,"11.1":0.02211,"12.1":0.03158,"13.1":0.24948,"14.1":0.57791,"15.1":0.11685,"15.2-15.3":0.11053,"15.4":0.71055,"15.5":1.81585,"16.0":0.00316},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.01785,"7.0-7.1":0.0595,"8.1-8.4":0.0238,"9.0-9.2":0.00595,"9.3":0.11603,"10.0-10.2":0,"10.3":0.16066,"11.0-11.2":0.01488,"11.3-11.4":0.05355,"12.0-12.1":0.0238,"12.2-12.5":0.99667,"13.0-13.1":0.02083,"13.2":0.04463,"13.3":0.0595,"13.4-13.7":0.25289,"14.0-14.4":0.77651,"14.5-14.8":3.12686,"15.0-15.1":0.63668,"15.2-15.3":1.43996,"15.4":4.51029,"15.5":17.33012,"16.0":0.02083},P:{"4":0.03116,"5.0-5.4":0.04029,"6.2-6.4":0.05036,"7.2-7.4":0.04154,"8.2":0.07051,"9.2":0.05085,"10.1":0.09065,"11.1-11.2":0.09347,"12.0":0.02077,"13.0":0.09347,"14.0":0.13501,"15.0":0.06231,"16.0":0.3531,"17.0":3.58291},I:{"0":0,"3":0,"4":0.00342,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00855,"4.2-4.3":0.01026,"4.4":0,"4.4.3-4.4.4":0.05303},A:{"8":0.00325,"9":0.13336,"11":0.18866,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.00684},Q:{"10.4":0},O:{"0":0.02737},H:{"0":0.21379},L:{"0":33.92856},S:{"2.5":0},R:{_:"0"},M:{"0":0.56113}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IL.js index 12989b032f25d7..ca75f3009b5a19 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IL.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IL.js @@ -1 +1 @@ -module.exports={C:{"24":0.00399,"25":0.01197,"26":0.03192,"27":0.00399,"36":0.00399,"52":0.02793,"56":0.00399,"66":0.00399,"72":0.00399,"78":0.01995,"79":0.1197,"80":0.02793,"84":0.01197,"88":0.01995,"89":0.00399,"91":0.01596,"94":0.00798,"95":0.02793,"96":0.50274,"97":0.85386,"98":0.00798,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 67 68 69 70 71 73 74 75 76 77 81 82 83 85 86 87 90 92 93 99 3.5 3.6"},D:{"31":0.04389,"32":0.00798,"38":0.02394,"49":0.0399,"53":0.00798,"55":0.00399,"56":0.00399,"63":0.03192,"65":0.00798,"67":0.00399,"68":0.00798,"69":0.00399,"70":0.00798,"71":0.00798,"72":0.00399,"73":0.03192,"74":0.01197,"75":0.01596,"76":0.01197,"77":0.00798,"78":0.01197,"79":0.07581,"80":0.26733,"81":0.01995,"83":0.01596,"84":0.01197,"85":0.02394,"86":0.03591,"87":0.11172,"88":0.01995,"89":0.0798,"90":0.03192,"91":0.04389,"92":0.04389,"93":0.10773,"94":0.04788,"95":0.05985,"96":0.58254,"97":9.3366,"98":20.66022,"99":0.01197,"100":0.00798,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 57 58 59 60 61 62 64 66 101"},F:{"28":0.00399,"77":0.00399,"82":0.14364,"83":0.56259,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01995,"91":0.00798,"92":0.00798,"93":0.00399,"94":0.00798,"95":0.01596,"96":0.06384,"97":0.54264,"98":1.89924,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90"},E:{"4":0,"7":0.00399,"8":0.12768,"13":0.03591,"14":0.09177,"15":0.04389,_:"0 5 6 9 10 11 12 3.1 3.2 5.1 7.1 9.1 10.1","6.1":0.00798,"11.1":0.00798,"12.1":0.01197,"13.1":0.07581,"14.1":0.40698,"15.1":0.17955,"15.2-15.3":0.34713,"15.4":0.00798},G:{"8":0.00267,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00401,"6.0-6.1":0.00134,"7.0-7.1":0.0294,"8.1-8.4":0.01203,"9.0-9.2":0.00134,"9.3":0.06548,"10.0-10.2":0.00535,"10.3":0.07216,"11.0-11.2":0.03742,"11.3-11.4":0.02806,"12.0-12.1":0.04009,"12.2-12.5":0.37016,"13.0-13.1":0.03474,"13.2":0.00935,"13.3":0.06682,"13.4-13.7":0.19778,"14.0-14.4":0.68554,"14.5-14.8":3.06823,"15.0-15.1":1.77599,"15.2-15.3":6.81397,"15.4":0.03608},P:{"4":0.05112,"5.0-5.4":0.01022,"6.2-6.4":0.01022,"7.2-7.4":0.02045,"8.2":0.08049,"9.2":0.08179,"10.1":0.03067,"11.1-11.2":0.28625,"12.0":0.10223,"13.0":0.23513,"14.0":0.35781,"15.0":0.27603,"16.0":5.53076},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.002,"4.2-4.3":0.00334,"4.4":0,"4.4.3-4.4.4":0.01869},A:{"9":0.00798,"10":0.00798,"11":0.29925,_:"6 7 8 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.16825},Q:{"10.4":0.00601},O:{"0":0.05408},H:{"0":0.3072},L:{"0":39.21334},S:{"2.5":0}}; +module.exports={C:{"24":0.00405,"25":0.01214,"26":0.02832,"27":0.00405,"36":0.00405,"52":0.02428,"56":0.02428,"78":0.01618,"79":0.12543,"80":0.0526,"81":0.00405,"88":0.00809,"89":0.00809,"91":0.02832,"95":0.00405,"97":0.01214,"98":0.01214,"99":0.01618,"100":0.16589,"101":1.20166,"102":0.04046,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 82 83 84 85 86 87 90 92 93 94 96 103 104 3.5 3.6"},D:{"31":0.04046,"32":0.00809,"35":0.10924,"38":0.02428,"41":0.00405,"49":0.02832,"53":0.00405,"55":0.00405,"63":0.00405,"65":0.01214,"67":0.00405,"68":0.01214,"69":0.00405,"70":0.00809,"71":0.00809,"72":0.00809,"73":0.02023,"74":0.01214,"75":0.00809,"76":0.01214,"77":0.00809,"78":0.01214,"79":0.1052,"80":0.28727,"81":0.01618,"83":0.01618,"84":0.01618,"85":0.03641,"86":0.03237,"87":0.06069,"88":0.02428,"89":0.0526,"90":0.03237,"91":0.02832,"92":0.03641,"93":0.02023,"94":0.03237,"95":0.04855,"96":1.69527,"97":0.05664,"98":0.06474,"99":0.12947,"100":0.33582,"101":1.9259,"102":24.1708,"103":2.06751,"104":0.00809,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 33 34 36 37 39 40 42 43 44 45 46 47 48 50 51 52 54 56 57 58 59 60 61 62 64 66 105 106"},F:{"28":0.00809,"85":0.02428,"86":0.2023,"87":0.44101,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00809,"85":0.00405,"86":0.00809,"91":0.00405,"92":0.00809,"96":0.03641,"97":0.00405,"98":0.01618,"99":0.02023,"100":0.02428,"101":0.3075,"102":1.88948,"103":0.39651,_:"12 13 14 15 16 17 79 80 81 83 84 87 88 89 90 93 94 95"},E:{"4":0,"7":0.00405,"8":0.15375,"13":0.02023,"14":0.06878,"15":0.01618,_:"0 5 6 9 10 11 12 3.1 3.2 5.1 7.1 10.1 16.0","6.1":0.00809,"9.1":0.01214,"11.1":0.00809,"12.1":0.01214,"13.1":0.08901,"14.1":0.22658,"15.1":0.04855,"15.2-15.3":0.04855,"15.4":0.24681,"15.5":0.6595},G:{"8":0.00399,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00399,"6.0-6.1":0.00133,"7.0-7.1":0.0279,"8.1-8.4":0.0093,"9.0-9.2":0.00133,"9.3":0.0651,"10.0-10.2":0.00531,"10.3":0.0651,"11.0-11.2":0.01196,"11.3-11.4":0.03056,"12.0-12.1":0.02524,"12.2-12.5":0.31753,"13.0-13.1":0.01196,"13.2":0.01063,"13.3":0.04517,"13.4-13.7":0.14216,"14.0-14.4":0.51947,"14.5-14.8":1.36843,"15.0-15.1":0.27369,"15.2-15.3":0.58192,"15.4":1.8786,"15.5":7.81202,"16.0":0.0372},P:{"4":0.07211,"5.0-5.4":0.04029,"6.2-6.4":0.05036,"7.2-7.4":0.0103,"8.2":0.07051,"9.2":0.05151,"10.1":0.03259,"11.1-11.2":0.13391,"12.0":0.06181,"13.0":0.14421,"14.0":0.20602,"15.0":0.10301,"16.0":0.50475,"17.0":4.96512},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00321,"4.2-4.3":0.00962,"4.4":0,"4.4.3-4.4.4":0.02886},A:{"8":0.00405,"9":0.00809,"10":0.00809,"11":0.25894,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.00596},O:{"0":0.04764},H:{"0":0.29317},L:{"0":40.01005},S:{"2.5":0},R:{_:"0"},M:{"0":0.22034}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IM.js index d0075dfea0d87e..a704fd405c2d03 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IM.js @@ -1 +1 @@ -module.exports={C:{"52":0.27833,"63":0.01953,"70":0.02442,"78":0.00977,"83":0.05371,"84":0.03418,"87":0.15626,"89":0.00977,"91":0.00488,"92":0.0293,"93":0.01465,"95":0.0293,"96":0.95707,"97":1.51861,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 71 72 73 74 75 76 77 79 80 81 82 85 86 88 90 94 98 99 3.5 3.6"},D:{"38":0.02442,"49":0.06836,"65":0.01953,"67":0.00977,"76":0.03418,"77":0.01465,"78":0.0293,"79":0.03906,"81":0.00488,"84":0.01465,"85":0.2002,"86":0.11231,"87":0.08301,"88":0.05371,"89":0.00977,"90":0.03418,"91":0.13184,"92":0.0293,"93":0.0293,"94":0.10743,"95":0.06348,"96":0.85453,"97":6.65065,"98":13.38919,"99":0.00977,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 68 69 70 71 72 73 74 75 80 83 100 101"},F:{"76":0.01953,"82":0.23927,"83":0.57619,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.01465,"18":0.02442,"87":0.00977,"90":0.01953,"92":0.01465,"93":0.01953,"94":0.00488,"95":0.03906,"96":0.18067,"97":2.53428,"98":6.70436,_:"12 13 14 15 17 79 80 81 83 84 85 86 88 89 91"},E:{"4":0,"11":0.01953,"12":0.01953,"13":0.12696,"14":0.46389,"15":0.25392,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.0293,"11.1":0.20509,"12.1":0.26368,"13.1":1.20122,"14.1":1.79206,"15.1":1.11332,"15.2-15.3":3.22278},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.38148,"10.0-10.2":0,"10.3":0.34333,"11.0-11.2":0.0088,"11.3-11.4":0.27877,"12.0-12.1":0.04695,"12.2-12.5":1.61689,"13.0-13.1":0.01467,"13.2":0.0088,"13.3":0.05282,"13.4-13.7":0.48125,"14.0-14.4":1.36159,"14.5-14.8":5.23507,"15.0-15.1":3.77665,"15.2-15.3":15.70521,"15.4":0.02348},P:{"4":0.0768,"5.0-5.4":0.01022,"6.2-6.4":0.01022,"7.2-7.4":0.0315,"8.2":0.08049,"9.2":0.05112,"10.1":0.02194,"11.1-11.2":0.01097,"12.0":0.02194,"13.0":0.03291,"14.0":0.04389,"15.0":0.40594,"16.0":4.33374},I:{"0":0,"3":0,"4":0.01944,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00273,"4.4":0,"4.4.3-4.4.4":0.01365},A:{"9":0.00488,"11":0.26857,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.60892},Q:{"10.4":0},O:{"0":0},H:{"0":0.0872},L:{"0":16.28872},S:{"2.5":0}}; +module.exports={C:{"48":0.00915,"52":0.29731,"63":0.00457,"70":0.00457,"78":0.0183,"83":0.0183,"84":0.0183,"88":0.00915,"91":0.00915,"96":0.00457,"97":0.00457,"99":0.04574,"100":0.30646,"101":1.88449,"102":0.06861,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 71 72 73 74 75 76 77 79 80 81 82 85 86 87 89 90 92 93 94 95 98 103 104 3.5 3.6"},D:{"49":0.03202,"65":0.02287,"72":0.00915,"76":0.00915,"77":0.00457,"78":0.02744,"79":0.03659,"80":0.00457,"84":0.01372,"85":0.20583,"86":0.00915,"87":0.06404,"90":0.0183,"91":0.15552,"92":0.03659,"93":0.04117,"94":0.03659,"95":0.00915,"96":0.02744,"97":0.05489,"98":0.14637,"99":0.20583,"100":0.25614,"101":1.19381,"102":15.73913,"103":1.33561,"105":0.02744,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 73 74 75 81 83 88 89 104 106"},F:{"74":0.00915,"86":0.26072,"87":0.4391,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.00457,"18":0.00457,"92":0.00915,"95":0.01372,"96":0.00457,"99":0.05031,"100":0.01372,"101":1.1618,"102":7.10342,"103":1.50942,_:"12 13 14 15 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 97 98"},E:{"4":0,"11":0.03202,"13":0.13722,"14":0.27901,"15":0.05489,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.06861,"11.1":0.28816,"12.1":0.28359,"13.1":0.60834,"14.1":0.63121,"15.1":0.1052,"15.2-15.3":0.27901,"15.4":2.15435,"15.5":6.32127,"16.0":0.03202},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00307,"7.0-7.1":0.01844,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.45167,"10.0-10.2":0,"10.3":0.23045,"11.0-11.2":0.01229,"11.3-11.4":0.01844,"12.0-12.1":0.01844,"12.2-12.5":1.93882,"13.0-13.1":0.01229,"13.2":0.01229,"13.3":0.05223,"13.4-13.7":0.33799,"14.0-14.4":0.75894,"14.5-14.8":2.20614,"15.0-15.1":0.73743,"15.2-15.3":1.05391,"15.4":4.02205,"15.5":18.66612,"16.0":0.11676},P:{"4":0.05432,"5.0-5.4":0.04029,"6.2-6.4":0.05036,"7.2-7.4":0.04154,"8.2":0.07051,"9.2":0.05085,"10.1":0.03259,"11.1-11.2":0.05432,"12.0":0.03259,"13.0":0.09778,"14.0":0.02173,"15.0":0.04346,"16.0":0.26075,"17.0":4.08509},I:{"0":0,"3":0,"4":0.01061,"2.1":0,"2.2":0,"2.3":0.00018,"4.1":0,"4.2-4.3":0.0011,"4.4":0,"4.4.3-4.4.4":0.00439},A:{"11":0.19211,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.08219},L:{"0":18.18226},S:{"2.5":0},R:{_:"0"},M:{"0":0.74879}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IN.js index f4bb292fdb7a6a..4562f492d7c4be 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IN.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IN.js @@ -1 +1 @@ -module.exports={C:{"42":0.00474,"47":0.00711,"48":0.00237,"52":0.02843,"56":0.00474,"60":0.00237,"66":0.00474,"68":0.00237,"72":0.00711,"78":0.00711,"83":0.00237,"87":0.00237,"88":0.01421,"89":0.00711,"90":0.00711,"91":0.02369,"92":0.00711,"93":0.00474,"94":0.01185,"95":0.02606,"96":0.46906,"97":0.76282,"98":0.05686,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 49 50 51 53 54 55 57 58 59 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 80 81 82 84 85 86 99 3.5 3.6"},D:{"49":0.02369,"55":0.00237,"56":0.00237,"58":0.00474,"63":0.01421,"64":0.00711,"66":0.00237,"67":0.00474,"68":0.00237,"69":0.00474,"70":0.01658,"71":0.03317,"72":0.00711,"73":0.00474,"74":0.01185,"75":0.00474,"76":0.00474,"77":0.00474,"78":0.00948,"79":0.14925,"80":0.0308,"81":0.01421,"83":0.03554,"84":0.01658,"85":0.01895,"86":0.02606,"87":0.06633,"88":0.01895,"89":0.02606,"90":0.04027,"91":0.04738,"92":0.0687,"93":0.06159,"94":0.07581,"95":0.05923,"96":0.34351,"97":5.42975,"98":12.07716,"99":0.02132,"100":0.01895,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 57 59 60 61 62 65 101"},F:{"80":0.00237,"82":0.04027,"83":0.24164,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00711,"17":0.00237,"18":0.00948,"84":0.00237,"89":0.00237,"92":0.00711,"94":0.00237,"95":0.00474,"96":0.01658,"97":0.23927,"98":0.73202,_:"13 14 15 16 79 80 81 83 85 86 87 88 90 91 93"},E:{"4":0,"13":0.00474,"14":0.02369,"15":0.01658,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.4","5.1":0.00711,"12.1":0.00474,"13.1":0.02132,"14.1":0.0687,"15.1":0.04738,"15.2-15.3":0.09239},G:{"8":0.00096,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00048,"5.0-5.1":0.00024,"6.0-6.1":0.00024,"7.0-7.1":0.00746,"8.1-8.4":0,"9.0-9.2":0.00072,"9.3":0.00721,"10.0-10.2":0.0012,"10.3":0.00818,"11.0-11.2":0.05772,"11.3-11.4":0.00433,"12.0-12.1":0.00649,"12.2-12.5":0.12386,"13.0-13.1":0.02092,"13.2":0.00265,"13.3":0.0113,"13.4-13.7":0.03463,"14.0-14.4":0.15199,"14.5-14.8":0.33092,"15.0-15.1":0.39441,"15.2-15.3":1.22509,"15.4":0.01275},P:{"4":0.22532,"5.0-5.4":0.08172,"6.2-6.4":0.02146,"7.2-7.4":0.12875,"8.2":0.01045,"9.2":0.04292,"10.1":0.0209,"11.1-11.2":0.04292,"12.0":0.02146,"13.0":0.09656,"14.0":0.12875,"15.0":0.10729,"16.0":0.61157},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00416,"4.4":0,"4.4.3-4.4.4":0.01873},A:{"11":0.04264,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.15262},Q:{"10.4":0},O:{"0":1.99932},H:{"0":2.44189},L:{"0":68.05766},S:{"2.5":0.81652}}; +module.exports={C:{"42":0.0048,"47":0.00721,"48":0.0024,"52":0.02402,"56":0.0048,"66":0.0048,"68":0.0024,"72":0.0048,"78":0.00721,"80":0.0024,"81":0.0024,"88":0.01201,"89":0.0048,"90":0.0048,"91":0.02642,"92":0.0024,"94":0.0024,"95":0.0048,"96":0.00721,"97":0.00721,"98":0.00961,"99":0.03603,"100":0.14652,"101":1.11453,"102":0.09128,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 82 83 84 85 86 87 93 103 104 3.5 3.6"},D:{"49":0.01922,"55":0.0024,"56":0.0024,"58":0.0024,"63":0.01922,"64":0.0048,"67":0.0048,"68":0.0024,"69":0.0048,"70":0.01201,"71":0.02642,"72":0.0048,"73":0.0048,"74":0.01681,"75":0.0024,"76":0.0024,"77":0.0048,"78":0.00721,"79":0.02162,"80":0.02402,"81":0.01441,"83":0.02642,"84":0.02162,"85":0.02162,"86":0.03363,"87":0.05044,"88":0.01201,"89":0.01681,"90":0.01922,"91":0.03363,"92":0.03363,"93":0.01922,"94":0.04324,"95":0.02162,"96":0.06485,"97":0.05765,"98":0.06245,"99":0.08887,"100":0.22339,"101":0.86232,"102":15.12299,"103":1.12173,"104":0.01922,"105":0.0024,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 57 59 60 61 62 65 66 106"},F:{"84":0.0048,"85":0.01441,"86":0.03843,"87":0.17294,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00721,"16":0.0024,"17":0.0024,"18":0.01201,"84":0.0024,"89":0.0024,"92":0.00721,"96":0.0024,"97":0.0048,"98":0.0048,"99":0.00721,"100":0.01201,"101":0.1177,"102":0.73982,"103":0.1177,_:"13 14 15 79 80 81 83 85 86 87 88 90 91 93 94 95"},E:{"4":0,"13":0.0024,"14":0.01201,"15":0.00721,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.0024,"13.1":0.01441,"14.1":0.03363,"15.1":0.01201,"15.2-15.3":0.01201,"15.4":0.05765,"15.5":0.13932},G:{"8":0.00118,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00071,"7.0-7.1":0.00684,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00566,"10.0-10.2":0.00071,"10.3":0.00637,"11.0-11.2":0.00802,"11.3-11.4":0.00283,"12.0-12.1":0.00566,"12.2-12.5":0.09456,"13.0-13.1":0.00424,"13.2":0.00283,"13.3":0.0066,"13.4-13.7":0.02382,"14.0-14.4":0.09268,"14.5-14.8":0.16436,"15.0-15.1":0.11484,"15.2-15.3":0.17922,"15.4":0.39051,"15.5":1.22577,"16.0":0.01038},P:{"4":0.14743,_:"5.0-5.4 8.2 10.1","6.2-6.4":0.02106,"7.2-7.4":0.09478,"9.2":0.02106,"11.1-11.2":0.03159,"12.0":0.02106,"13.0":0.07371,"14.0":0.08424,"15.0":0.05265,"16.0":0.16849,"17.0":0.48441},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00402,"4.4":0,"4.4.3-4.4.4":0.01877},A:{"11":0.03843,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.39043},H:{"0":2.0357},L:{"0":70.63444},S:{"2.5":0.3951},R:{_:"0"},M:{"0":0.15956}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IQ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IQ.js index 83fed8433f3be8..411ebafcd2493f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IQ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IQ.js @@ -1 +1 @@ -module.exports={C:{"30":0.00216,"34":0.00216,"35":0.00216,"43":0.00433,"47":0.00649,"50":0.00216,"52":0.0303,"56":0.00216,"59":0.00216,"68":0.00649,"69":0.01298,"72":0.00433,"78":0.01082,"81":0.00216,"82":0.00216,"84":0.00216,"87":0.00216,"88":0.00649,"89":0.00433,"91":0.00866,"92":0.00649,"93":0.00433,"94":0.00433,"95":0.01082,"96":0.27266,"97":0.46742,"98":0.01082,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 36 37 38 39 40 41 42 44 45 46 48 49 51 53 54 55 57 58 60 61 62 63 64 65 66 67 70 71 73 74 75 76 77 79 80 83 85 86 90 99 3.5 3.6"},D:{"11":0.00433,"31":0.00433,"33":0.00866,"34":0.00216,"37":0.00216,"38":0.04112,"40":0.00433,"41":0.00433,"43":0.06492,"45":0.00433,"46":0.00216,"47":0.00649,"49":0.0303,"50":0.00433,"51":0.00216,"53":0.00866,"55":0.00649,"56":0.00866,"57":0.00216,"58":0.00216,"60":0.00866,"63":0.01731,"64":0.00649,"65":0.00866,"66":0.00649,"67":0.00649,"68":0.01082,"69":0.01298,"70":0.00866,"71":0.00866,"72":0.01082,"73":0.00649,"74":0.00866,"75":0.00649,"76":0.00649,"77":0.00649,"78":0.00649,"79":0.10604,"80":0.01731,"81":0.02164,"83":0.02164,"84":0.00866,"85":0.01082,"86":0.07141,"87":0.03679,"88":0.0238,"89":0.04544,"90":0.01515,"91":0.0303,"92":0.06059,"93":0.26617,"94":0.03246,"95":0.04544,"96":0.3787,"97":3.68746,"98":9.09962,"99":0.00433,"100":0.02164,"101":0.00216,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 35 36 39 42 44 48 52 54 59 61 62"},F:{"28":0.00216,"82":0.09522,"83":0.53018,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00649,"13":0.00216,"14":0.00433,"15":0.00433,"16":0.00649,"17":0.01082,"18":0.0238,"84":0.00866,"85":0.00433,"89":0.00866,"90":0.00216,"91":0.00433,"92":0.01515,"94":0.00433,"95":0.02597,"96":0.01731,"97":0.40467,"98":1.1902,_:"79 80 81 83 86 87 88 93"},E:{"4":0,"13":0.01515,"14":0.11902,"15":0.09522,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1","5.1":0.03462,"9.1":0.00649,"10.1":0.03679,"11.1":0.00216,"12.1":0.00649,"13.1":0.06276,"14.1":0.38303,"15.1":0.2164,"15.2-15.3":0.35706,"15.4":0.00433},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00169,"6.0-6.1":0.00169,"7.0-7.1":0.04574,"8.1-8.4":0,"9.0-9.2":0.02372,"9.3":0.05591,"10.0-10.2":0.01016,"10.3":0.05929,"11.0-11.2":0.0288,"11.3-11.4":0.02202,"12.0-12.1":0.03049,"12.2-12.5":0.84197,"13.0-13.1":0.01694,"13.2":0.00847,"13.3":0.08809,"13.4-13.7":0.25581,"14.0-14.4":0.93006,"14.5-14.8":3.32891,"15.0-15.1":3.03413,"15.2-15.3":8.08594,"15.4":0.05591},P:{"4":0.17381,"5.0-5.4":0.01022,"6.2-6.4":0.01022,"7.2-7.4":0.19426,"8.2":0.08049,"9.2":0.05112,"10.1":0.12073,"11.1-11.2":0.17381,"12.0":0.05112,"13.0":0.26583,"14.0":0.23515,"15.0":0.22493,"16.0":2.90365},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00073,"4.2-4.3":0.00331,"4.4":0,"4.4.3-4.4.4":0.04298},A:{"8":0.00234,"11":0.08205,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.09403},Q:{"10.4":0},O:{"0":0.70524},H:{"0":0.29674},L:{"0":49.84278},S:{"2.5":0}}; +module.exports={C:{"47":0.00372,"51":0.01302,"52":0.08556,"53":0.01302,"54":0.00744,"55":0.01302,"56":0.0093,"57":0.0093,"58":0.00372,"59":0.00372,"68":0.00744,"69":0.01488,"72":0.00372,"78":0.00372,"81":0.00186,"82":0.00372,"84":0.00186,"85":0.00186,"87":0.00372,"88":0.00744,"89":0.00744,"90":0.00372,"91":0.01488,"92":0.00372,"93":0.00372,"94":0.00372,"95":0.00372,"96":0.00372,"97":0.00558,"98":0.00372,"99":0.02232,"100":0.05022,"101":0.58962,"102":0.0279,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 60 61 62 63 64 65 66 67 70 71 73 74 75 76 77 79 80 83 86 103 104 3.5 3.6"},D:{"11":0.00186,"33":0.00558,"34":0.00186,"36":0.00372,"38":0.02232,"39":0.00558,"40":0.00744,"41":0.0093,"42":0.00372,"43":0.05952,"44":0.00744,"45":0.00744,"46":0.00558,"47":0.01116,"48":0.00558,"49":0.0093,"50":0.00558,"51":0.00372,"52":0.00372,"53":0.00744,"54":0.00558,"55":0.00744,"56":0.0093,"57":0.00744,"58":0.0093,"59":0.00744,"60":0.01302,"61":0.00558,"62":0.00558,"63":0.01302,"64":0.00744,"65":0.01302,"67":0.00186,"68":0.00558,"69":0.00744,"70":0.00558,"71":0.00558,"72":0.00558,"73":0.00372,"74":0.00558,"75":0.00372,"76":0.00372,"77":0.00372,"78":0.00558,"79":0.07998,"80":0.0093,"81":0.04464,"83":0.03906,"84":0.02604,"85":0.02232,"86":0.06138,"87":0.04092,"88":0.0372,"89":0.07812,"90":0.04836,"91":0.04464,"92":0.07254,"93":0.02232,"94":0.0279,"95":0.04464,"96":0.06696,"97":0.04278,"98":0.06138,"99":0.05766,"100":0.15438,"101":0.50406,"102":8.33838,"103":0.87792,"104":0.01116,"105":0.00372,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 37 66 106"},F:{"28":0.00186,"70":0.00186,"73":0.00372,"75":0.00186,"76":0.00186,"77":0.00186,"78":0.00186,"79":0.00372,"82":0.00372,"83":0.00186,"84":0.00372,"85":0.0279,"86":0.11532,"87":0.29388,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 74 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00372,"14":0.00186,"15":0.00186,"16":0.00372,"17":0.00372,"18":0.01488,"84":0.01674,"85":0.01116,"86":0.0093,"87":0.01116,"88":0.01116,"89":0.01674,"90":0.01488,"91":0.0186,"92":0.02418,"93":0.00744,"94":0.0093,"95":0.0093,"96":0.01674,"97":0.01116,"98":0.01302,"99":0.01488,"100":0.01302,"101":0.186,"102":0.82956,"103":0.1674,_:"13 79 80 81 83"},E:{"4":0,"12":0.00372,"13":0.03348,"14":0.10974,"15":0.03162,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 10.1 11.1","5.1":0.0372,"9.1":0.00558,"12.1":0.00372,"13.1":0.04092,"14.1":0.18972,"15.1":0.03534,"15.2-15.3":0.05022,"15.4":0.2976,"15.5":0.73656,"16.0":0.00558},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00325,"6.0-6.1":0,"7.0-7.1":0.04709,"8.1-8.4":0,"9.0-9.2":0.01949,"9.3":0.04547,"10.0-10.2":0.01461,"10.3":0.0617,"11.0-11.2":0.01624,"11.3-11.4":0.01949,"12.0-12.1":0.0341,"12.2-12.5":0.75992,"13.0-13.1":0.03572,"13.2":0.02111,"13.3":0.08606,"13.4-13.7":0.21758,"14.0-14.4":0.57643,"14.5-14.8":1.39155,"15.0-15.1":0.48225,"15.2-15.3":0.87195,"15.4":3.25075,"15.5":8.1496,"16.0":0.06982},P:{"4":0.15256,"5.0-5.4":0.04029,"6.2-6.4":0.05036,"7.2-7.4":0.18307,"8.2":0.07051,"9.2":0.05085,"10.1":0.09065,"11.1-11.2":0.21359,"12.0":0.04068,"13.0":0.25427,"14.0":0.22376,"15.0":0.15256,"16.0":0.51871,"17.0":3.10208},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00105,"4.2-4.3":0.00474,"4.4":0,"4.4.3-4.4.4":0.06746},A:{"8":0.00589,"9":0.00785,"10":0.00196,"11":0.05497,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.41514},H:{"0":0.27743},L:{"0":61.13182},S:{"2.5":0},R:{_:"0"},M:{"0":0.13024}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IR.js index 24f2909e33e5c8..3d94ea2a882fb6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IR.js @@ -1 +1 @@ -module.exports={C:{"3":0.0057,"24":0.00285,"29":0.0057,"30":0.00285,"31":0.00285,"32":0.00285,"33":0.00855,"38":0.00285,"39":0.00285,"40":0.00285,"41":0.00855,"43":0.00855,"47":0.01426,"48":0.0057,"49":0.0057,"50":0.00285,"52":0.08838,"56":0.0114,"60":0.0057,"65":0.00285,"68":0.0057,"72":0.02566,"77":0.0057,"78":0.01426,"79":0.0057,"80":0.00855,"81":0.0114,"82":0.0057,"83":0.0057,"84":0.00855,"85":0.0057,"86":0.0057,"87":0.0057,"88":0.01426,"89":0.01711,"90":0.00855,"91":0.11119,"92":0.01426,"93":0.01711,"94":0.03706,"95":0.09123,"96":1.62507,"97":2.73126,"98":0.02566,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 34 35 36 37 42 44 45 46 51 53 54 55 57 58 59 61 62 63 64 66 67 69 70 71 73 74 75 76 99 3.5 3.6"},D:{"29":0.0057,"34":0.03136,"38":0.0114,"48":0.04277,"49":0.02566,"51":0.00285,"56":0.00285,"58":0.0057,"60":0.00285,"62":0.00855,"63":0.01426,"64":0.0057,"66":0.00285,"67":0.0057,"68":0.0057,"69":0.00855,"70":0.00855,"71":0.01711,"72":0.0057,"73":0.0057,"74":0.00855,"75":0.0057,"76":0.0057,"77":0.0057,"78":0.01711,"79":0.02566,"80":0.02566,"81":0.02281,"83":0.03421,"84":0.04562,"85":0.05702,"86":0.09123,"87":0.08553,"88":0.02566,"89":0.04562,"90":0.02566,"91":0.07128,"92":0.06557,"93":0.11404,"94":0.05987,"95":0.05987,"96":0.36208,"97":4.62717,"98":11.73472,"99":0.00855,"100":0.00855,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 50 52 53 54 55 57 59 61 65 101"},F:{"64":0.0057,"70":0.00285,"77":0.00855,"78":0.0057,"79":0.01426,"80":0.0057,"81":0.00285,"82":0.07128,"83":0.45046,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01426,"13":0.0057,"14":0.0057,"15":0.0057,"16":0.0057,"17":0.0057,"18":0.03421,"81":0.00285,"84":0.00855,"85":0.00285,"86":0.00285,"89":0.01426,"90":0.00855,"91":0.00285,"92":0.01996,"94":0.00285,"95":0.0057,"96":0.02281,"97":0.17106,"98":0.63862,_:"79 80 83 87 88 93"},E:{"4":0.0057,"13":0.00855,"14":0.01426,"15":0.00855,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.4","5.1":0.23378,"12.1":0.00285,"13.1":0.01711,"14.1":0.03706,"15.1":0.02281,"15.2-15.3":0.03136},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0004,"6.0-6.1":0,"7.0-7.1":0.00316,"8.1-8.4":0,"9.0-9.2":0.00158,"9.3":0.01067,"10.0-10.2":0.00633,"10.3":0.02965,"11.0-11.2":0.02135,"11.3-11.4":0.02214,"12.0-12.1":0.02372,"12.2-12.5":0.41632,"13.0-13.1":0.02174,"13.2":0.01107,"13.3":0.06089,"13.4-13.7":0.12533,"14.0-14.4":0.43332,"14.5-14.8":0.74486,"15.0-15.1":0.82671,"15.2-15.3":1.19083,"15.4":0.00277},P:{"4":0.71431,"5.0-5.4":0.07043,"6.2-6.4":0.07043,"7.2-7.4":0.5634,"8.2":0.08049,"9.2":0.2817,"10.1":0.12073,"11.1-11.2":0.54328,"12.0":0.26158,"13.0":0.7948,"14.0":0.89541,"15.0":0.8451,"16.0":3.8935},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00267,"4.2-4.3":0.02006,"4.4":0,"4.4.3-4.4.4":0.07019},A:{"6":0.01171,"7":0.01464,"8":0.08784,"9":0.02635,"10":0.03807,"11":2.63532,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.8935},Q:{"10.4":0},O:{"0":0.13581},H:{"0":0.45341},L:{"0":57.08514},S:{"2.5":0}}; +module.exports={C:{"29":0.00268,"32":0.00268,"33":0.00804,"34":0.00268,"38":0.00268,"39":0.00268,"40":0.00536,"41":0.00536,"43":0.00536,"46":0.00536,"47":0.01072,"48":0.00536,"49":0.00268,"50":0.00536,"52":0.07775,"56":0.00536,"60":0.00536,"61":0.00268,"68":0.00804,"72":0.01877,"77":0.00536,"78":0.01072,"79":0.00536,"80":0.01072,"81":0.00804,"82":0.01609,"83":0.00536,"84":0.00804,"85":0.00268,"86":0.00536,"87":0.00268,"88":0.00804,"89":0.01072,"90":0.00536,"91":0.10724,"92":0.00804,"93":0.00536,"94":0.01341,"95":0.01609,"96":0.02145,"97":0.02681,"98":0.02413,"99":0.08311,"100":0.40751,"101":3.63007,"102":0.08847,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 35 36 37 42 44 45 51 53 54 55 57 58 59 62 63 64 65 66 67 69 70 71 73 74 75 76 103 104 3.5 3.6"},D:{"34":0.00536,"38":0.01341,"41":0.00536,"48":0.00268,"49":0.02413,"51":0.00268,"56":0.00268,"58":0.00268,"60":0.00268,"62":0.00804,"63":0.01341,"64":0.00268,"66":0.00536,"67":0.00268,"68":0.00268,"69":0.00804,"70":0.00536,"71":0.01609,"72":0.00536,"73":0.00536,"74":0.00804,"75":0.00536,"76":0.00536,"77":0.00536,"78":0.01609,"79":0.02413,"80":0.02145,"81":0.02145,"83":0.0429,"84":0.07507,"85":0.06703,"86":0.10188,"87":0.08311,"88":0.01877,"89":0.04022,"90":0.01877,"91":0.05362,"92":0.04826,"93":0.01877,"94":0.04022,"95":0.02681,"96":0.08311,"97":0.06166,"98":0.06434,"99":0.08579,"100":0.21448,"101":0.63808,"102":13.05647,"103":1.15551,"104":0.00536,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 42 43 44 45 46 47 50 52 53 54 55 57 59 61 65 105 106"},F:{"64":0.00268,"71":0.00268,"77":0.00268,"79":0.00804,"82":0.00268,"83":0.00268,"84":0.00536,"85":0.02413,"86":0.06971,"87":0.311,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 70 72 73 74 75 76 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00536,"13":0.00268,"14":0.00536,"15":0.00268,"16":0.00268,"17":0.00536,"18":0.02949,"81":0.00536,"84":0.01072,"85":0.00268,"89":0.01072,"90":0.00804,"92":0.02413,"96":0.00804,"97":0.00268,"98":0.00536,"99":0.01072,"100":0.01072,"101":0.0992,"102":0.58714,"103":0.10992,_:"79 80 83 86 87 88 91 93 94 95"},E:{"4":0,"13":0.00268,"14":0.01072,"15":0.00268,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 16.0","5.1":0.29491,"12.1":0.00268,"13.1":0.01341,"14.1":0.02145,"15.1":0.00804,"15.2-15.3":0.00804,"15.4":0.02949,"15.5":0.06166},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00709,"7.0-7.1":0.00203,"8.1-8.4":0,"9.0-9.2":0.00152,"9.3":0.00608,"10.0-10.2":0.00506,"10.3":0.02531,"11.0-11.2":0.01671,"11.3-11.4":0.01823,"12.0-12.1":0.02025,"12.2-12.5":0.4592,"13.0-13.1":0.01873,"13.2":0.00962,"13.3":0.06025,"13.4-13.7":0.12353,"14.0-14.4":0.40351,"14.5-14.8":0.50476,"15.0-15.1":0.3792,"15.2-15.3":0.48907,"15.4":1.00244,"15.5":1.49404,"16.0":0.01013},P:{"4":0.48348,"5.0-5.4":0.04029,"6.2-6.4":0.05036,"7.2-7.4":0.52377,"8.2":0.07051,"9.2":0.21152,"10.1":0.09065,"11.1-11.2":0.41297,"12.0":0.19138,"13.0":0.59428,"14.0":0.75544,"15.0":0.43312,"16.0":1.57131,"17.0":3.53546},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00151,"4.2-4.3":0.0106,"4.4":0,"4.4.3-4.4.4":0.03911},A:{"8":0.01343,"9":0.00806,"10":0.00269,"11":2.7024,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.09513},H:{"0":0.44341},L:{"0":58.40682},S:{"2.5":0},R:{_:"0"},M:{"0":1.03184}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IS.js index 5525986604641b..2e98172177330a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IS.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IS.js @@ -1 +1 @@ -module.exports={C:{"52":0.04215,"76":0.00602,"78":0.12044,"91":0.12646,"92":0.00602,"93":0.00602,"94":0.01807,"95":0.04215,"96":1.47539,"97":2.74001,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 79 80 81 82 83 84 85 86 87 88 89 90 98 99 3.5 3.6"},D:{"44":0.00602,"45":0.00602,"49":0.01807,"51":0.01807,"65":0.03011,"66":0.02409,"67":0.01807,"70":0.01204,"77":0.01204,"78":0.01807,"79":0.1084,"80":0.00602,"81":0.00602,"83":0.01204,"84":0.01204,"85":0.0542,"86":0.04818,"87":0.25292,"88":0.03011,"89":0.10237,"90":0.03613,"91":0.03011,"92":0.03613,"93":0.08431,"94":0.04215,"95":0.20475,"96":0.98761,"97":12.11626,"98":22.46206,"99":0.01807,"100":0.00602,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 46 47 48 50 52 53 54 55 56 57 58 59 60 61 62 63 64 68 69 71 72 73 74 75 76 101"},F:{"28":0.00602,"82":0.4095,"83":1.18031,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.01204,"18":0.00602,"89":0.01204,"91":0.00602,"92":0.01204,"95":0.01807,"96":0.04818,"97":1.07794,"98":4.01667,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 90 93 94"},E:{"4":0,"9":0.02409,"12":0.01807,"13":0.07226,"14":0.62629,"15":0.73468,_:"0 5 6 7 8 10 11 3.1 3.2 6.1 7.1 9.1","5.1":0.00602,"10.1":0.01204,"11.1":0.25292,"12.1":0.18668,"13.1":0.76479,"14.1":2.52924,"15.1":1.16225,"15.2-15.3":2.52322,"15.4":0.01204},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00782,"8.1-8.4":0.00586,"9.0-9.2":0.00782,"9.3":0.02931,"10.0-10.2":0.00195,"10.3":0.08011,"11.0-11.2":0.07816,"11.3-11.4":0.00977,"12.0-12.1":0.05862,"12.2-12.5":0.34976,"13.0-13.1":0.00391,"13.2":0.00391,"13.3":0.03322,"13.4-13.7":0.17586,"14.0-14.4":0.65849,"14.5-14.8":4.22449,"15.0-15.1":2.70821,"15.2-15.3":11.02627,"15.4":0.06448},P:{"4":0.05314,"5.0-5.4":0.08172,"6.2-6.4":0.01063,"7.2-7.4":0.01045,"8.2":0.01045,"9.2":0.04181,"10.1":0.0209,"11.1-11.2":0.02126,"12.0":0.02072,"13.0":0.03189,"14.0":0.04251,"15.0":0.11691,"16.0":3.15667},I:{"0":0,"3":0.0019,"4":0.01395,"2.1":0.0019,"2.2":0.00888,"2.3":0.00888,"4.1":0.00634,"4.2-4.3":0.01585,"4.4":0,"4.4.3-4.4.4":0.07356},A:{"8":0.03011,"9":0.01204,"10":0.00602,"11":0.13851,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00796},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.36598},Q:{"10.4":0},O:{"0":0.01591},H:{"0":0.12428},L:{"0":16.34459},S:{"2.5":0.01989}}; +module.exports={C:{"41":0.01554,"52":0.05698,"60":0.01036,"78":0.1295,"84":0.00518,"91":0.03108,"95":0.00518,"97":0.01036,"98":0.0259,"99":0.01036,"100":0.53872,"101":3.27376,"102":0.06216,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 89 90 92 93 94 96 103 104 3.5 3.6"},D:{"44":0.01554,"46":0.01036,"48":0.01036,"49":0.04662,"51":0.01036,"56":0.01036,"65":0.01554,"67":0.02072,"73":0.01036,"78":0.01036,"79":0.02072,"80":0.04144,"83":0.01554,"84":0.0259,"85":0.0259,"86":0.03108,"87":0.19166,"88":0.01036,"89":0.0259,"90":0.01036,"91":0.01554,"92":0.01036,"93":0.00518,"94":0.01554,"95":0.20202,"96":0.04662,"97":0.0518,"98":0.12432,"99":0.23828,"100":0.66822,"101":2.42424,"102":23.81764,"103":2.00466,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 47 50 52 53 54 55 57 58 59 60 61 62 63 64 66 68 69 70 71 72 74 75 76 77 81 104 105 106"},F:{"79":0.0259,"85":0.04662,"86":0.78218,"87":0.9583,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01036,"85":0.00518,"88":0.0259,"92":0.00518,"96":0.01554,"99":0.01036,"100":0.0259,"101":0.63714,"102":3.77104,"103":0.9065,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 89 90 91 93 94 95 97 98"},E:{"4":0,"9":0.01554,"13":0.03108,"14":0.38332,"15":0.11396,_:"0 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.0518,"11.1":0.1036,"12.1":0.10878,"13.1":0.70448,"14.1":1.07226,"15.1":0.27972,"15.2-15.3":0.1813,"15.4":1.34162,"15.5":2.99922},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00392,"8.1-8.4":0.00392,"9.0-9.2":0,"9.3":0.02155,"10.0-10.2":0.00196,"10.3":0.06074,"11.0-11.2":0.06074,"11.3-11.4":0.00784,"12.0-12.1":0.01959,"12.2-12.5":0.36055,"13.0-13.1":0.01764,"13.2":0.00392,"13.3":0.02351,"13.4-13.7":0.09797,"14.0-14.4":0.25082,"14.5-14.8":1.52645,"15.0-15.1":0.4017,"15.2-15.3":0.78576,"15.4":2.5885,"15.5":13.29324,"16.0":0.01959},P:{"4":0.08366,"5.0-5.4":0.17307,"6.2-6.4":0.04072,"7.2-7.4":0.18699,"8.2":0.03054,"9.2":0.02171,"10.1":0.01018,"11.1-11.2":0.02069,"12.0":0.01035,"13.0":0.04183,"14.0":0.06275,"15.0":0.03137,"16.0":0.28235,"17.0":3.62878},I:{"0":0,"3":0.00102,"4":0.00819,"2.1":0,"2.2":0.00512,"2.3":0.00615,"4.1":0.00512,"4.2-4.3":0.01127,"4.4":0,"4.4.3-4.4.4":0.04507},A:{"8":0.04662,"9":0.01036,"10":0.00518,"11":0.1036,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.00482},Q:{"10.4":0},O:{"0":0.01446},H:{"0":0.18253},L:{"0":24.42946},S:{"2.5":0.00964},R:{_:"0"},M:{"0":0.40488}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IT.js index 76cf0d914a8ef4..c9981e3e2444bc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IT.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IT.js @@ -1 +1 @@ -module.exports={C:{"48":0.00983,"52":0.10317,"56":0.00983,"59":0.00983,"66":0.00491,"68":0.00983,"72":0.00491,"78":0.09335,"82":0.00491,"84":0.00491,"87":0.02948,"88":0.01965,"89":0.00983,"91":0.07861,"92":0.00983,"93":0.01474,"94":0.08843,"95":0.05896,"96":1.46899,"97":2.37789,"98":0.01474,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 60 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 80 81 83 85 86 90 99 3.5 3.6"},D:{"38":0.00983,"49":0.12774,"60":0.01474,"63":0.01474,"65":0.01474,"66":0.0737,"67":0.01965,"68":0.00491,"69":0.25056,"70":0.00491,"71":0.00983,"72":0.00491,"74":0.02948,"75":0.00983,"76":0.00983,"77":0.01965,"78":0.00983,"79":0.05896,"80":0.03439,"81":0.02948,"83":0.01965,"84":0.03439,"85":0.03439,"86":0.0737,"87":0.113,"88":0.03439,"89":0.06387,"90":0.03439,"91":0.04422,"92":0.07861,"93":0.2653,"94":0.08843,"95":0.06387,"96":0.45691,"97":9.68352,"98":21.29786,"99":0.00983,"100":0.00983,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 61 62 64 73 101"},F:{"46":0.00491,"80":0.00491,"82":0.23091,"83":0.89417,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.00491,"16":0.00491,"17":0.00983,"18":0.01965,"90":0.00491,"91":0.00491,"92":0.00983,"94":0.00983,"95":0.02457,"96":0.04913,"97":0.88434,"98":3.1001,_:"12 14 15 79 80 81 83 84 85 86 87 88 89 93"},E:{"4":0,"11":0.00491,"12":0.00983,"13":0.04913,"14":0.38321,"15":0.21617,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.00983,"10.1":0.00983,"11.1":0.06387,"12.1":0.08843,"13.1":0.3783,"14.1":0.85978,"15.1":0.54534,"15.2-15.3":1.15456,"15.4":0.01474},G:{"8":0.00411,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00411,"7.0-7.1":0.00548,"8.1-8.4":0.00685,"9.0-9.2":0.00685,"9.3":0.08499,"10.0-10.2":0.00274,"10.3":0.08362,"11.0-11.2":0.04798,"11.3-11.4":0.0425,"12.0-12.1":0.02605,"12.2-12.5":0.41537,"13.0-13.1":0.0329,"13.2":0.01371,"13.3":0.05895,"13.4-13.7":0.19192,"14.0-14.4":0.68817,"14.5-14.8":2.38254,"15.0-15.1":2.17005,"15.2-15.3":7.38202,"15.4":0.05346},P:{"4":0.09425,"5.0-5.4":0.01022,"6.2-6.4":0.01022,"7.2-7.4":0.02045,"8.2":0.08049,"9.2":0.03142,"10.1":0.03067,"11.1-11.2":0.12567,"12.0":0.03142,"13.0":0.13614,"14.0":0.1885,"15.0":0.17803,"16.0":2.78565},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00199,"4.2-4.3":0.00498,"4.4":0,"4.4.3-4.4.4":0.03882},A:{"9":0.00497,"11":0.40281,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.30013},Q:{"10.4":0},O:{"0":0.12718},H:{"0":0.22635},L:{"0":33.17532},S:{"2.5":0}}; +module.exports={C:{"47":0.00863,"48":0.01295,"52":0.09493,"55":0.00432,"56":0.01295,"59":0.01295,"66":0.00432,"68":0.00863,"78":0.0863,"81":0.00432,"82":0.00432,"87":0.01726,"88":0.01295,"89":0.00432,"90":0.01726,"91":0.09062,"92":0.00432,"93":0.00432,"94":0.08199,"95":0.01295,"96":0.00863,"97":0.01295,"98":0.01726,"99":0.08199,"100":0.38404,"101":3.14995,"102":0.1424,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 50 51 53 54 57 58 60 61 62 63 64 65 67 69 70 71 72 73 74 75 76 77 79 80 83 84 85 86 103 104 3.5 3.6"},D:{"38":0.01295,"49":0.09925,"59":0.01295,"60":0.03452,"63":0.08199,"65":0.00863,"66":0.0863,"67":0.01726,"68":0.00863,"69":0.22438,"72":0.00432,"73":0.01295,"74":0.02158,"75":0.00432,"76":0.00432,"77":0.01726,"78":0.01295,"79":0.08199,"80":0.03021,"81":0.02158,"83":0.03021,"84":0.03884,"85":0.03884,"86":0.04315,"87":0.08199,"88":0.02158,"89":0.05178,"90":0.02589,"91":0.05178,"92":0.12945,"93":0.01726,"94":0.03884,"95":0.02158,"96":0.06904,"97":0.04747,"98":0.07767,"99":0.10356,"100":0.2589,"101":1.41964,"102":22.50704,"103":2.25243,"104":0.00863,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 61 62 64 70 71 105 106"},F:{"46":0.00863,"85":0.18555,"86":0.24164,"87":0.46171,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00432,"16":0.00432,"17":0.01295,"18":0.01295,"92":0.00863,"96":0.00863,"97":0.01295,"98":0.01295,"99":0.01726,"100":0.03452,"101":0.36246,"102":2.82201,"103":0.64294,_:"13 14 15 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95"},E:{"4":0,"12":0.00432,"13":0.03884,"14":0.22438,"15":0.07336,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.01726,"10.1":0.01295,"11.1":0.0561,"12.1":0.06473,"13.1":0.30637,"14.1":0.47034,"15.1":0.12514,"15.2-15.3":0.11651,"15.4":0.67314,"15.5":1.65265,"16.0":0.00863},G:{"8":0.00149,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00149,"6.0-6.1":0.00297,"7.0-7.1":0.00743,"8.1-8.4":0.00446,"9.0-9.2":0.00594,"9.3":0.09802,"10.0-10.2":0.00297,"10.3":0.08317,"11.0-11.2":0.01634,"11.3-11.4":0.03565,"12.0-12.1":0.02525,"12.2-12.5":0.4322,"13.0-13.1":0.02376,"13.2":0.01188,"13.3":0.04159,"13.4-13.7":0.16486,"14.0-14.4":0.44853,"14.5-14.8":1.14955,"15.0-15.1":0.4114,"15.2-15.3":0.71439,"15.4":2.26346,"15.5":8.81771,"16.0":0.04753},P:{"4":0.13579,"5.0-5.4":0.04029,"6.2-6.4":0.05036,"7.2-7.4":0.0103,"8.2":0.07051,"9.2":0.01045,"10.1":0.03259,"11.1-11.2":0.07312,"12.0":0.03134,"13.0":0.09401,"14.0":0.12534,"15.0":0.07312,"16.0":0.34469,"17.0":2.89334},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00505,"4.2-4.3":0.00404,"4.4":0,"4.4.3-4.4.4":0.03639},A:{"9":0.00875,"11":0.30193,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.10803},H:{"0":0.26377},L:{"0":37.94105},S:{"2.5":0},R:{_:"0"},M:{"0":0.35253}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JE.js index ca33e7ffd0ceee..6d6a41aaf608d2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JE.js @@ -1 +1 @@ -module.exports={C:{"52":0.00965,"60":0.00482,"66":0.0193,"78":0.00965,"83":0.00482,"91":0.01447,"96":0.78631,"97":1.10952,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 87 88 89 90 92 93 94 95 98 99 3.5 3.6"},D:{"49":0.05306,"65":0.03859,"67":0.0193,"72":0.1013,"78":0.03859,"79":0.01447,"80":0.06754,"83":0.00965,"87":0.08683,"88":0.00965,"89":0.02412,"90":0.02412,"91":0.01447,"92":0.04342,"93":0.0193,"94":0.06271,"95":0.05306,"96":0.2605,"97":6.51722,"98":14.86274,"101":0.00482,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 68 69 70 71 73 74 75 76 77 81 84 85 86 99 100"},F:{"82":0.19778,"83":0.21226,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00482,"18":0.01447,"83":0.00482,"92":0.01447,"94":0.00965,"95":0.03859,"96":0.11095,"97":1.87171,"98":6.20849,_:"12 13 14 16 17 79 80 81 84 85 86 87 88 89 90 91 93"},E:{"4":0,"11":0.03859,"12":0.00965,"13":0.1206,"14":1.35072,"15":0.43898,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.01447,"10.1":0.00965,"11.1":0.04342,"12.1":0.35215,"13.1":0.91656,"14.1":3.32374,"15.1":1.31695,"15.2-15.3":3.24655,"15.4":0.00965},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.29374,"10.0-10.2":0,"10.3":0.60164,"11.0-11.2":0.00708,"11.3-11.4":0.05663,"12.0-12.1":0.01062,"12.2-12.5":1.27407,"13.0-13.1":0,"13.2":0,"13.3":0.08848,"13.4-13.7":0.2442,"14.0-14.4":0.78921,"14.5-14.8":7.65502,"15.0-15.1":5.06795,"15.2-15.3":19.23841,"15.4":0.03539},P:{"4":0.26968,"5.0-5.4":0.01022,"6.2-6.4":0.01022,"7.2-7.4":0.21819,"8.2":0.08049,"9.2":0.03236,"10.1":0.03067,"11.1-11.2":0.02157,"12.0":0.01113,"13.0":0.38834,"14.0":0.04315,"15.0":0.09708,"16.0":2.86936},I:{"0":0,"3":0,"4":0.00269,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.0009,"4.4":0,"4.4.3-4.4.4":0.01194},A:{"11":1.45202,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.18116},Q:{"10.4":0},O:{"0":0},H:{"0":0.0049},L:{"0":12.51737},S:{"2.5":0}}; +module.exports={C:{"52":0.00845,"78":0.0169,"83":0.01268,"91":0.01268,"96":0.00423,"100":0.16904,"101":1.53826,"102":0.03381,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 87 88 89 90 92 93 94 95 97 98 99 103 104 3.5 3.6"},D:{"49":0.04226,"65":0.00845,"66":0.01268,"75":0.05916,"76":0.0169,"79":0.05071,"80":0.0972,"81":0.13523,"83":0.00423,"84":0.02113,"86":0.01268,"87":0.0169,"90":0.02536,"91":0.00845,"93":0.00845,"94":0.01268,"95":0.00845,"96":0.08875,"97":0.03803,"98":0.04649,"99":0.16059,"100":0.17749,"101":1.44107,"102":14.26698,"103":1.71576,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 67 68 69 70 71 72 73 74 77 78 85 88 89 92 104 105 106"},F:{"85":0.03381,"86":0.35498,"87":0.30005,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00845,"18":0.04226,"85":0.00845,"94":0.00423,"97":0.00423,"100":0.05071,"101":0.98466,"102":5.78117,"103":1.17483,_:"12 13 14 15 16 79 80 81 83 84 86 87 88 89 90 91 92 93 95 96 98 99"},E:{"4":0,"12":0.00423,"13":0.06339,"14":0.54093,"15":0.08875,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.00845,"11.1":0.02536,"12.1":0.10142,"13.1":0.4226,"14.1":1.14947,"15.1":0.1141,"15.2-15.3":0.20707,"15.4":1.53826,"15.5":6.29251,"16.0":0.00423},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00349,"7.0-7.1":0,"8.1-8.4":0.00698,"9.0-9.2":0.03489,"9.3":0.32801,"10.0-10.2":0.01396,"10.3":1.22131,"11.0-11.2":0.00698,"11.3-11.4":0.11515,"12.0-12.1":0.00698,"12.2-12.5":1.1934,"13.0-13.1":0,"13.2":0.01396,"13.3":0.03489,"13.4-13.7":0.18145,"14.0-14.4":0.72581,"14.5-14.8":3.32197,"15.0-15.1":0.8933,"15.2-15.3":1.08174,"15.4":4.63053,"15.5":21.05197,"16.0":0.01396},P:{"4":0.19404,"5.0-5.4":0.04029,"6.2-6.4":0.05036,"7.2-7.4":0.28464,"8.2":0.07051,"9.2":0.01054,"10.1":0.03259,"11.1-11.2":0.02156,"12.0":0.01088,"13.0":0.06468,"14.0":0.01078,"15.0":0.01078,"16.0":0.1078,"17.0":4.45207},I:{"0":0,"3":0,"4":0.0033,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.03134},A:{"11":1.25512,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.0328},L:{"0":17.92443},S:{"2.5":0},R:{_:"0"},M:{"0":0.10393}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JM.js index b92ee5729f3d4d..0f8d6ed0d0f2c8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JM.js @@ -1 +1 @@ -module.exports={C:{"52":0.02066,"57":0.00344,"73":0.06197,"78":0.04132,"86":0.00344,"87":0.01033,"88":0.00689,"89":0.00689,"91":0.00689,"94":0.00689,"95":0.01033,"96":0.36496,"97":0.57842,"98":0.00689,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 90 92 93 99 3.5 3.6"},D:{"11":0.00344,"47":0.01033,"49":0.01722,"53":0.00689,"55":0.00344,"60":0.00344,"61":0.00344,"63":0.00689,"65":0.00689,"68":0.00689,"69":0.01722,"70":0.00344,"73":0.01722,"74":0.01377,"75":0.03099,"76":0.0723,"77":0.02066,"78":0.00344,"79":0.0482,"80":0.02754,"81":0.03443,"83":0.04132,"84":0.0241,"85":0.01377,"86":0.0241,"87":0.05853,"88":0.0241,"89":0.01377,"90":0.02066,"91":0.05853,"92":0.03443,"93":0.20314,"94":0.0723,"95":0.07919,"96":0.3202,"97":7.2062,"98":14.38141,"99":0.03787,"100":0.04132,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 50 51 52 54 56 57 58 59 62 64 66 67 71 72 101"},F:{"28":0.00344,"82":0.14116,"83":0.68516,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01377,"13":0.00689,"15":0.00689,"16":0.00689,"17":0.00689,"18":0.02066,"84":0.00689,"85":0.00344,"87":0.00689,"89":0.01377,"90":0.00344,"92":0.01377,"94":0.00689,"95":0.02754,"96":0.06886,"97":1.07422,"98":3.26741,_:"14 79 80 81 83 86 88 91 93"},E:{"4":0,"12":0.00689,"13":0.01377,"14":0.07919,"15":0.0723,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1","5.1":0.00689,"10.1":0.02066,"11.1":0.00689,"12.1":0.01377,"13.1":0.12739,"14.1":0.36496,"15.1":0.19281,"15.2-15.3":0.44759,"15.4":0.00689},G:{"8":0.01007,"3.2":0.00604,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00302,"6.0-6.1":0.00101,"7.0-7.1":0.09868,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.07955,"10.0-10.2":0,"10.3":0.04733,"11.0-11.2":0.04229,"11.3-11.4":0.01007,"12.0-12.1":0.01813,"12.2-12.5":0.37459,"13.0-13.1":0.02215,"13.2":0.00503,"13.3":0.03927,"13.4-13.7":0.1158,"14.0-14.4":0.38768,"14.5-14.8":1.70477,"15.0-15.1":1.77929,"15.2-15.3":5.25026,"15.4":0.07149},P:{"4":0.18702,"5.0-5.4":0.01022,"6.2-6.4":0.01022,"7.2-7.4":0.21819,"8.2":0.08049,"9.2":0.03117,"10.1":0.03067,"11.1-11.2":0.13507,"12.0":0.02078,"13.0":0.13507,"14.0":0.15585,"15.0":0.17663,"16.0":2.51434},I:{"0":0,"3":0,"4":0.00131,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00079,"4.4":0,"4.4.3-4.4.4":0.01102},A:{"8":0.01906,"10":0.00762,"11":0.08005,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.01312},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.09837},Q:{"10.4":0},O:{"0":0.37381},H:{"0":0.22351},L:{"0":30.19569},S:{"2.5":0}}; +module.exports={C:{"52":0.00779,"73":0.03897,"78":0.01559,"86":0.00779,"91":0.00779,"98":0.01169,"99":0.00779,"100":0.08963,"101":0.75212,"102":0.05066,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 87 88 89 90 92 93 94 95 96 97 103 104 3.5 3.6"},D:{"49":0.02338,"50":0.0039,"53":0.01169,"56":0.00779,"61":0.00779,"63":0.00779,"65":0.02338,"66":0.03897,"68":0.00779,"69":0.00779,"73":0.03897,"74":0.01169,"75":0.04676,"76":0.07015,"77":0.00779,"79":0.07404,"80":0.01949,"81":0.05066,"83":0.02338,"84":0.03507,"85":0.00779,"86":0.01949,"87":0.08184,"88":0.03507,"89":0.01949,"90":0.01949,"91":0.03118,"92":0.03118,"93":0.19485,"94":0.01949,"95":0.05066,"96":0.07404,"97":0.04676,"98":0.07404,"99":0.17926,"100":0.40919,"101":2.15894,"102":19.97602,"103":1.80431,"104":0.02728,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 51 52 54 55 57 58 59 60 62 64 67 70 71 72 78 105 106"},F:{"85":0.0039,"86":0.27669,"87":0.46764,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00779,"15":0.01559,"16":0.0039,"17":0.0039,"18":0.01559,"91":0.00779,"92":0.01169,"93":0.0039,"94":0.01949,"96":0.00779,"98":0.01169,"99":0.01169,"100":0.02728,"101":0.54168,"102":3.03966,"103":0.57286,_:"13 14 79 80 81 83 84 85 86 87 88 89 90 95 97"},E:{"4":0,"13":0.01559,"14":0.05066,"15":0.03118,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01559,"11.1":0.02728,"12.1":0.03118,"13.1":0.15588,"14.1":0.16367,"15.1":0.07015,"15.2-15.3":0.06235,"15.4":0.35073,"15.5":0.83786,"16.0":0.0039},G:{"8":0.00265,"3.2":0.00265,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00133,"6.0-6.1":0,"7.0-7.1":0.11014,"8.1-8.4":0.00133,"9.0-9.2":0,"9.3":0.06767,"10.0-10.2":0,"10.3":0.03583,"11.0-11.2":0.0491,"11.3-11.4":0.00663,"12.0-12.1":0.01725,"12.2-12.5":0.46576,"13.0-13.1":0.0146,"13.2":0.00398,"13.3":0.02123,"13.4-13.7":0.13933,"14.0-14.4":0.29326,"14.5-14.8":0.8665,"15.0-15.1":0.33307,"15.2-15.3":0.63561,"15.4":2.13773,"15.5":7.97235,"16.0":0.03715},P:{"4":0.21084,"5.0-5.4":0.04029,"6.2-6.4":0.05036,"7.2-7.4":0.28464,"8.2":0.07051,"9.2":0.01054,"10.1":0.03259,"11.1-11.2":0.15813,"12.0":0.02108,"13.0":0.11596,"14.0":0.14759,"15.0":0.09488,"16.0":0.50602,"17.0":3.39455},I:{"0":0,"3":0,"4":0.00313,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.0094,"4.4":0,"4.4.3-4.4.4":0.06682},A:{"10":0.00779,"11":0.05846,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.05494},O:{"0":0.39676},H:{"0":0.17337},L:{"0":46.67582},S:{"2.5":0},R:{_:"0"},M:{"0":0.07325}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JO.js index d2051cf7c1703f..79d5bf51926b41 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JO.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JO.js @@ -1 +1 @@ -module.exports={C:{"34":0.01065,"47":0.00799,"52":0.01065,"63":0.00799,"78":0.01597,"84":0.01065,"88":0.00532,"89":0.00532,"90":0.00266,"91":0.01065,"92":0.00532,"94":0.02396,"95":0.01065,"96":0.49247,"97":0.64154,"98":0.00532,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 93 99 3.5 3.6"},D:{"11":0.01065,"32":0.00266,"38":0.00532,"43":0.00266,"49":0.02662,"51":0.00266,"55":0.00799,"63":0.00532,"65":0.0213,"67":0.00266,"69":0.01065,"70":0.00799,"71":0.01331,"73":0.00266,"74":0.00532,"75":0.00532,"76":0.00532,"77":0.00266,"78":0.01863,"79":0.04525,"80":0.01863,"81":0.01331,"83":0.01863,"84":0.01065,"85":0.01065,"86":0.03461,"87":0.05058,"88":0.03727,"89":0.04259,"90":0.01863,"91":0.04792,"92":0.06655,"93":0.04525,"94":0.04259,"95":0.04792,"96":0.33275,"97":5.70999,"98":12.91336,"99":0.01597,"100":0.01597,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 39 40 41 42 44 45 46 47 48 50 52 53 54 56 57 58 59 60 61 62 64 66 68 72 101"},F:{"28":0.00266,"78":0.00266,"82":0.27152,"83":0.61758,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00532,"14":0.00266,"18":0.01597,"85":0.00266,"89":0.00266,"90":0.00266,"91":0.00266,"92":0.01065,"95":0.00799,"96":0.01331,"97":0.38333,"98":1.54928,_:"13 15 16 17 79 80 81 83 84 86 87 88 93 94"},E:{"4":0,"13":0.01065,"14":0.12511,"15":0.09051,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01065,"12.1":0.01597,"13.1":0.10914,"14.1":0.34074,"15.1":0.16238,"15.2-15.3":0.22893,"15.4":0.00266},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00126,"6.0-6.1":0.00126,"7.0-7.1":0.01885,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05153,"10.0-10.2":0.00377,"10.3":0.03896,"11.0-11.2":0.00754,"11.3-11.4":0.02262,"12.0-12.1":0.02137,"12.2-12.5":0.55178,"13.0-13.1":0.01885,"13.2":0.01006,"13.3":0.04525,"13.4-13.7":0.22624,"14.0-14.4":0.74408,"14.5-14.8":2.67844,"15.0-15.1":2.14552,"15.2-15.3":5.94637,"15.4":0.02891},P:{"4":0.09181,"5.0-5.4":0.01022,"6.2-6.4":0.01022,"7.2-7.4":0.09181,"8.2":0.08049,"9.2":0.0306,"10.1":0.03067,"11.1-11.2":0.14281,"12.0":0.0408,"13.0":0.14281,"14.0":0.17342,"15.0":0.15302,"16.0":2.24423},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.24782,"4.2-4.3":0.30978,"4.4":0,"4.4.3-4.4.4":4.33685},A:{"11":0.07986,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.19079},Q:{"10.4":0},O:{"0":0.29352},H:{"0":0.24315},L:{"0":52.07698},S:{"2.5":0}}; +module.exports={C:{"34":0.00507,"43":0.00254,"52":0.01776,"63":0.02791,"69":0.00507,"72":0.00254,"78":0.01015,"83":0.00761,"87":0.00507,"88":0.00507,"89":0.00254,"91":0.00761,"94":0.00507,"97":0.00254,"98":0.0203,"99":0.01776,"100":0.08118,"101":0.77125,"102":0.03044,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 70 71 73 74 75 76 77 79 80 81 82 84 85 86 90 92 93 95 96 103 104 3.5 3.6"},D:{"11":0.00507,"38":0.00761,"43":0.00254,"49":0.02283,"55":0.00507,"63":0.00761,"65":0.01269,"67":0.00254,"69":0.00507,"70":0.00507,"71":0.01269,"74":0.00761,"75":0.00254,"76":0.00254,"78":0.01015,"79":0.02537,"80":0.01522,"81":0.01776,"83":0.01522,"84":0.0203,"85":0.02283,"86":0.05074,"87":0.03806,"88":0.03552,"89":0.04059,"90":0.01776,"91":0.04059,"92":0.07357,"93":0.03552,"94":0.01522,"95":0.01015,"96":0.06596,"97":0.06343,"98":0.12939,"99":0.09387,"100":0.33742,"101":0.90571,"102":14.81354,"103":1.37252,"104":0.01015,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 61 62 64 66 68 72 73 77 105 106"},F:{"69":0.00254,"79":0.00254,"82":0.00254,"83":0.03298,"84":0.05581,"85":0.07104,"86":0.2537,"87":0.35772,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00254,"15":0.00254,"18":0.01776,"84":0.00507,"89":0.00507,"90":0.00254,"91":0.00254,"92":0.01269,"94":0.00254,"95":0.00254,"96":0.00761,"97":0.00254,"98":0.00761,"99":0.00761,"100":0.01015,"101":0.21057,"102":1.32178,"103":0.28161,_:"13 14 16 17 79 80 81 83 85 86 87 88 93"},E:{"4":0,"13":0.01522,"14":0.07104,"15":0.03044,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00507,"12.1":0.01522,"13.1":0.07865,"14.1":0.18266,"15.1":0.03552,"15.2-15.3":0.03298,"15.4":0.20042,"15.5":0.45666,"16.0":0.00254},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00126,"6.0-6.1":0.00126,"7.0-7.1":0.0101,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02904,"10.0-10.2":0.00253,"10.3":0.06818,"11.0-11.2":0.00884,"11.3-11.4":0.01136,"12.0-12.1":0.01515,"12.2-12.5":0.48734,"13.0-13.1":0.01641,"13.2":0.00758,"13.3":0.02778,"13.4-13.7":0.13635,"14.0-14.4":0.51385,"14.5-14.8":1.20951,"15.0-15.1":0.36361,"15.2-15.3":0.65273,"15.4":1.9847,"15.5":7.01715,"16.0":0.03283},P:{"4":0.06132,"5.0-5.4":0.04029,"6.2-6.4":0.05036,"7.2-7.4":0.11243,"8.2":0.07051,"9.2":0.02044,"10.1":0.03259,"11.1-11.2":0.13287,"12.0":0.03066,"13.0":0.10221,"14.0":0.16353,"15.0":0.08176,"16.0":0.38838,"17.0":2.39162},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.25887,"4.2-4.3":0.25887,"4.4":0,"4.4.3-4.4.4":3.81827},A:{"9":0.00254,"11":0.05328,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.16419},H:{"0":0.2261},L:{"0":55.24622},S:{"2.5":0},R:{_:"0"},M:{"0":0.1418}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JP.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JP.js index 0fa311738eb25a..55aab9a895a4f4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JP.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JP.js @@ -1 +1 @@ -module.exports={C:{"48":0.00618,"52":0.06175,"55":0.01853,"56":0.0247,"60":0.00618,"66":0.01235,"67":0.01235,"72":0.01235,"78":0.03705,"84":0.01235,"85":0.0247,"88":0.00618,"89":0.04323,"90":0.00618,"91":0.0494,"92":0.00618,"93":0.01235,"94":0.01235,"95":0.05558,"96":1.14238,"97":1.8525,"98":0.01235,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 57 58 59 61 62 63 64 65 68 69 70 71 73 74 75 76 77 79 80 81 82 83 86 87 99 3.5 3.6"},D:{"34":0.01853,"49":0.1235,"52":0.00618,"61":0.01235,"62":0.00618,"63":0.0247,"64":0.01235,"65":0.01235,"67":0.01235,"69":0.03088,"70":0.01235,"71":0.00618,"72":0.01853,"73":0.01235,"74":0.0247,"75":0.01853,"76":0.01235,"78":0.01235,"79":0.03705,"80":0.06175,"81":0.08645,"83":0.03088,"84":0.03088,"85":0.03088,"86":0.04323,"87":0.12968,"88":0.03088,"89":0.08645,"90":0.0494,"91":0.0741,"92":0.06175,"93":0.36433,"94":0.1482,"95":0.11115,"96":0.58045,"97":7.37295,"98":26.17583,"99":0.01853,"100":0.0247,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 56 57 58 59 60 66 68 77 101"},F:{"80":0.00618,"82":0.03088,"83":0.21613,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00618,"18":0.0247,"84":0.00618,"85":0.00618,"89":0.01235,"90":0.01235,"91":0.00618,"92":0.01235,"94":0.01853,"95":0.01235,"96":0.0741,"97":1.9266,"98":7.28033,_:"12 13 14 15 16 79 80 81 83 86 87 88 93"},E:{"4":0,"12":0.00618,"13":0.06175,"14":0.23465,"15":0.11115,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.01235,"10.1":0.01235,"11.1":0.03088,"12.1":0.05558,"13.1":0.20995,"14.1":0.7904,"15.1":0.33345,"15.2-15.3":0.77188,"15.4":0.00618},G:{"8":0.00243,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.02673,"8.1-8.4":0.01944,"9.0-9.2":0.17252,"9.3":0.10934,"10.0-10.2":0.01701,"10.3":0.10205,"11.0-11.2":0.07532,"11.3-11.4":0.03645,"12.0-12.1":0.04617,"12.2-12.5":0.42522,"13.0-13.1":0.03159,"13.2":0.01944,"13.3":0.09719,"13.4-13.7":0.33045,"14.0-14.4":1.0351,"14.5-14.8":5.42091,"15.0-15.1":2.85989,"15.2-15.3":13.42228,"15.4":0.03159},P:{"4":0.18702,"5.0-5.4":0.01022,"6.2-6.4":0.01022,"7.2-7.4":0.21819,"8.2":0.08049,"9.2":0.03117,"10.1":0.03067,"11.1-11.2":0.13507,"12.0":0.01113,"13.0":0.02225,"14.0":0.01113,"15.0":0.03338,"16.0":0.90131},I:{"0":0,"3":0,"4":0.00491,"2.1":0,"2.2":0.03927,"2.3":0.02781,"4.1":0.01145,"4.2-4.3":0.07853,"4.4":0,"4.4.3-4.4.4":0.12107},A:{"11":1.729,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.27158},Q:{"10.4":0.03443},O:{"0":0.19125},H:{"0":0.09415},L:{"0":18.28825},S:{"2.5":0}}; +module.exports={C:{"48":0.01189,"51":0.00595,"52":0.07731,"53":0.01189,"55":0.00595,"56":0.03568,"60":0.00595,"63":0.00595,"66":0.01189,"67":0.00595,"68":0.00595,"72":0.01189,"73":0.02974,"78":0.04758,"79":0.00595,"83":0.00595,"84":0.01784,"91":0.06542,"93":0.00595,"94":0.00595,"95":0.00595,"96":0.00595,"97":0.02379,"98":0.01189,"99":0.03568,"100":0.35087,"101":3.19354,"102":0.04758,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 54 57 58 59 61 62 64 65 69 70 71 74 75 76 77 80 81 82 85 86 87 88 89 90 92 103 104 3.5 3.6"},D:{"34":0.01189,"42":0.00595,"49":0.12489,"52":0.00595,"60":0.00595,"61":0.00595,"62":0.00595,"65":0.01189,"67":0.01189,"69":0.03568,"70":0.01784,"71":0.01189,"72":0.01784,"73":0.01189,"74":0.02974,"75":0.01189,"76":0.00595,"77":0.00595,"78":0.01189,"79":0.04758,"80":0.05947,"81":0.1011,"83":0.05947,"84":0.06542,"85":0.04758,"86":0.08326,"87":0.13678,"88":0.01784,"89":0.06542,"90":0.01784,"91":0.02974,"92":0.07136,"93":0.01784,"94":0.02974,"95":0.07136,"96":0.1011,"97":0.1011,"98":0.12489,"99":0.13083,"100":0.36871,"101":1.5938,"102":22.3964,"103":1.54622,"104":0.01784,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 43 44 45 46 47 48 50 51 53 54 55 56 57 58 59 63 64 66 68 105 106"},F:{"70":0.00595,"86":0.05352,"87":0.21409,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.01189,"18":0.02974,"84":0.01189,"86":0.01189,"89":0.00595,"90":0.01189,"91":0.02974,"92":0.01189,"94":0.00595,"95":0.00595,"96":0.01784,"97":0.01189,"98":0.01784,"99":0.03568,"100":0.07136,"101":1.25482,"102":10.13964,"103":1.58785,_:"12 13 14 15 16 79 80 81 83 85 87 88 93"},E:{"4":0,"12":0.01189,"13":0.05947,"14":0.17841,"15":0.04758,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.00595,"10.1":0.01784,"11.1":0.03568,"12.1":0.04758,"13.1":0.22004,"14.1":0.45792,"15.1":0.07731,"15.2-15.3":0.08326,"15.4":0.52334,"15.5":1.61758},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00243,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.04139,"8.1-8.4":0.01461,"9.0-9.2":0.20695,"9.3":0.11687,"10.0-10.2":0.03165,"10.3":0.07304,"11.0-11.2":0.06574,"11.3-11.4":0.03165,"12.0-12.1":0.03652,"12.2-12.5":0.39929,"13.0-13.1":0.02435,"13.2":0.01461,"13.3":0.06817,"13.4-13.7":0.26538,"14.0-14.4":0.72555,"14.5-14.8":2.15716,"15.0-15.1":0.44799,"15.2-15.3":0.93737,"15.4":3.56443,"15.5":15.08067,"16.0":0.01217},P:{"4":0.21084,"5.0-5.4":0.04029,"6.2-6.4":0.05036,"7.2-7.4":0.28464,"8.2":0.07051,"9.2":0.01054,"10.1":0.03259,"11.1-11.2":0.01088,"12.0":0.01088,"13.0":0.02177,"14.0":0.01088,"15.0":0.01088,"16.0":0.07618,"17.0":1.03389},I:{"0":0,"3":0,"4":0.01051,"2.1":0,"2.2":0.03154,"2.3":0.03154,"4.1":0.01314,"4.2-4.3":0.11038,"4.4":0,"4.4.3-4.4.4":0.13929},A:{"9":0.01351,"11":1.37809,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.03242},O:{"0":0.23102},H:{"0":0.11128},L:{"0":21.95517},S:{"2.5":0},R:{_:"0"},M:{"0":0.37693}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KE.js index 06270a8439afea..da0143374a00d3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KE.js @@ -1 +1 @@ -module.exports={C:{"34":0.00733,"43":0.00244,"47":0.00977,"52":0.19788,"57":0.00489,"65":0.00244,"68":0.00244,"72":0.02443,"73":0.00977,"78":0.01954,"82":0.00977,"84":0.00733,"87":0.02199,"88":0.01954,"89":0.01222,"90":0.00489,"91":0.02932,"92":0.00489,"93":0.00733,"94":0.01466,"95":0.04642,"96":0.70114,"97":1.17753,"98":0.07329,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 45 46 48 49 50 51 53 54 55 56 58 59 60 61 62 63 64 66 67 69 70 71 74 75 76 77 79 80 81 83 85 86 99 3.5 3.6"},D:{"11":0.00244,"22":0.00244,"38":0.00489,"39":0.00977,"47":0.00489,"49":0.0171,"50":0.00244,"54":0.00733,"55":0.00244,"56":0.00733,"58":0.00244,"63":0.00489,"64":0.00733,"65":0.00733,"66":0.00733,"67":0.00977,"68":0.00977,"69":0.16612,"70":0.01466,"71":0.00489,"72":0.00489,"73":0.00977,"74":0.00733,"75":0.00733,"76":0.01222,"77":0.01222,"78":0.00733,"79":0.03909,"80":0.01466,"81":0.00977,"83":0.01466,"84":0.01466,"85":0.01222,"86":0.04397,"87":0.0513,"88":0.0171,"89":0.0171,"90":0.01954,"91":0.04397,"92":0.06108,"93":0.05619,"94":0.0342,"95":0.05619,"96":0.30538,"97":4.18975,"98":9.75001,"99":0.02932,"100":0.01222,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 48 51 52 53 57 59 60 61 62 101"},F:{"28":0.01222,"65":0.01954,"66":0.00489,"67":0.0171,"79":0.01466,"80":0.02199,"82":0.08551,"83":0.55212,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 68 69 70 71 72 73 74 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00977,"13":0.00733,"14":0.00489,"15":0.00489,"16":0.00733,"17":0.01222,"18":0.03909,"84":0.00489,"85":0.00489,"89":0.00733,"90":0.00244,"91":0.00244,"92":0.02199,"93":0.00244,"94":0.00489,"95":0.00733,"96":0.03176,"97":0.32003,"98":1.05538,_:"79 80 81 83 86 87 88"},E:{"4":0,"12":0.00244,"13":0.00733,"14":0.03176,"15":0.02687,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00733,"11.1":0.00244,"12.1":0.00977,"13.1":0.04153,"14.1":0.12704,"15.1":0.0513,"15.2-15.3":0.09772,"15.4":0.01466},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00572,"5.0-5.1":0.00445,"6.0-6.1":0.00021,"7.0-7.1":0.02541,"8.1-8.4":0.00042,"9.0-9.2":0.00106,"9.3":0.02286,"10.0-10.2":0.00148,"10.3":0.02562,"11.0-11.2":0.01059,"11.3-11.4":0.00445,"12.0-12.1":0.01143,"12.2-12.5":0.14862,"13.0-13.1":0.00635,"13.2":0.00318,"13.3":0.01334,"13.4-13.7":0.05145,"14.0-14.4":0.13422,"14.5-14.8":0.41643,"15.0-15.1":0.37769,"15.2-15.3":0.84472,"15.4":0.00656},P:{"4":0.1499,"5.0-5.4":0.01022,"6.2-6.4":0.01034,"7.2-7.4":0.05354,"8.2":0.08049,"9.2":0.04136,"10.1":0.03067,"11.1-11.2":0.03212,"12.0":0.0517,"13.0":0.03212,"14.0":0.06424,"15.0":0.06424,"16.0":0.50324},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00058,"4.2-4.3":0.00407,"4.4":0,"4.4.3-4.4.4":0.02558},A:{"8":0.00513,"10":0.00513,"11":0.14365,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.12093},Q:{"10.4":0},O:{"0":0.30232},H:{"0":35.96317},L:{"0":37.07781},S:{"2.5":0}}; +module.exports={C:{"34":0.00881,"43":0.00294,"47":0.01174,"48":0.01174,"52":0.32285,"57":0.00587,"72":0.00294,"73":0.00881,"78":0.01761,"82":0.00294,"84":0.00294,"87":0.00587,"88":0.01174,"89":0.00587,"90":0.00294,"91":0.0499,"93":0.00294,"94":0.00587,"95":0.00587,"96":0.00587,"97":0.01468,"98":0.01174,"99":0.04403,"100":0.22013,"101":1.73752,"102":0.15849,"103":0.00294,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 45 46 49 50 51 53 54 55 56 58 59 60 61 62 63 64 65 66 67 68 69 70 71 74 75 76 77 79 80 81 83 85 86 92 104 3.5 3.6"},D:{"11":0.01174,"38":0.00881,"39":0.00587,"47":0.00587,"49":0.01468,"50":0.00587,"52":0.00294,"54":0.00881,"55":0.00587,"56":0.01761,"58":0.00587,"60":0.00294,"62":0.00294,"63":0.00587,"64":0.00587,"65":0.00587,"66":0.00881,"68":0.00294,"69":0.14088,"70":0.01174,"72":0.01468,"73":0.01468,"74":0.01174,"75":0.00294,"76":0.01468,"77":0.00587,"78":0.00881,"79":0.0499,"80":0.00881,"81":0.01468,"83":0.02055,"84":0.01468,"85":0.00881,"86":0.03522,"87":0.0499,"88":0.01761,"89":0.01761,"90":0.02348,"91":0.02935,"92":0.04109,"93":0.02642,"94":0.02642,"95":0.03229,"96":0.05577,"97":0.03522,"98":0.05577,"99":0.07338,"100":0.24654,"101":0.81887,"102":13.48339,"103":1.32369,"104":0.01468,"105":0.00294,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 48 51 53 57 59 61 67 71 106"},F:{"28":0.02642,"46":0.00294,"65":0.00587,"69":0.00294,"70":0.00587,"79":0.00294,"85":0.02348,"86":0.07338,"87":0.47547,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 71 72 73 74 75 76 77 78 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01174,"13":0.00881,"14":0.00587,"15":0.00587,"16":0.00587,"17":0.00587,"18":0.03522,"84":0.00587,"85":0.00587,"86":0.00294,"89":0.00881,"90":0.00587,"91":0.00587,"92":0.04696,"95":0.00294,"96":0.00587,"97":0.00587,"98":0.00587,"99":0.01174,"100":0.02348,"101":0.19371,"102":1.12998,"103":0.23187,_:"79 80 81 83 87 88 93 94"},E:{"4":0,"11":0.02348,"13":0.01174,"14":0.02935,"15":0.00881,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.00881,"11.1":0.00294,"12.1":0.01468,"13.1":0.03522,"14.1":0.09392,"15.1":0.01174,"15.2-15.3":0.01468,"15.4":0.08805,"15.5":0.18491},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00641,"6.0-6.1":0.00047,"7.0-7.1":0.01116,"8.1-8.4":0,"9.0-9.2":0.00024,"9.3":0.0292,"10.0-10.2":0.00166,"10.3":0.02303,"11.0-11.2":0.00688,"11.3-11.4":0.00736,"12.0-12.1":0.00641,"12.2-12.5":0.14292,"13.0-13.1":0.0038,"13.2":0.00285,"13.3":0.01472,"13.4-13.7":0.03134,"14.0-14.4":0.13271,"14.5-14.8":0.24264,"15.0-15.1":0.07763,"15.2-15.3":0.13912,"15.4":0.37037,"15.5":1.11133,"16.0":0.00451},P:{"4":0.17173,"5.0-5.4":0.04029,"6.2-6.4":0.05036,"7.2-7.4":0.07513,"8.2":0.07051,"9.2":0.01035,"10.1":0.03259,"11.1-11.2":0.0322,"12.0":0.0207,"13.0":0.04293,"14.0":0.05367,"15.0":0.05367,"16.0":0.1288,"17.0":0.55814},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00103,"4.2-4.3":0.00309,"4.4":0,"4.4.3-4.4.4":0.0312},A:{"11":0.84528,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.27554},H:{"0":24.38026},L:{"0":46.07642},S:{"2.5":0},R:{_:"0"},M:{"0":0.15543}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KG.js index 96b0f57c49622c..b3825a7368ee5d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KG.js @@ -1 +1 @@ -module.exports={C:{"52":0.0158,"72":0.0079,"78":0.00395,"87":0.00395,"91":0.03555,"93":0.0079,"95":0.01185,"96":0.20935,"97":0.2923,"98":0.0079,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 92 94 99 3.5 3.6"},D:{"42":0.00395,"49":0.0395,"57":0.00395,"59":0.05925,"60":0.00395,"63":0.00395,"66":0.0079,"67":0.0079,"71":0.0237,"72":0.01975,"74":0.0316,"77":0.01975,"78":0.0079,"79":0.03555,"80":0.0237,"81":0.00395,"83":0.01185,"84":0.00395,"85":0.01185,"86":0.0395,"87":0.02765,"88":0.04345,"89":0.0869,"90":0.01975,"91":0.01975,"92":0.0316,"93":0.01185,"94":0.1185,"95":0.03555,"96":0.56485,"97":14.60315,"98":17.80265,"100":0.00395,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 50 51 52 53 54 55 56 58 61 62 64 65 68 69 70 73 75 76 99 101"},F:{"42":0.01975,"77":0.0079,"79":0.00395,"81":0.00395,"82":0.16195,"83":1.14155,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00395,"18":0.0079,"96":0.00395,"97":0.1106,"98":0.38315,_:"13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95"},E:{"4":0,"13":0.00395,"14":0.16195,"15":0.02765,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1","5.1":0.4503,"12.1":0.00395,"13.1":0.0553,"14.1":0.17775,"15.1":0.079,"15.2-15.3":0.1817,"15.4":0.01185},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00054,"6.0-6.1":0,"7.0-7.1":0.00326,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.0174,"10.0-10.2":0.00109,"10.3":0.01142,"11.0-11.2":0.01251,"11.3-11.4":0.00761,"12.0-12.1":0.01794,"12.2-12.5":0.27784,"13.0-13.1":0.01196,"13.2":0.00598,"13.3":0.12179,"13.4-13.7":0.09189,"14.0-14.4":0.53557,"14.5-14.8":1.11518,"15.0-15.1":1.20218,"15.2-15.3":1.98568,"15.4":0.01305},P:{"4":0.31645,"5.0-5.4":0.01021,"6.2-6.4":0.07146,"7.2-7.4":0.32666,"8.2":0.08049,"9.2":0.08166,"10.1":0.02042,"11.1-11.2":0.1327,"12.0":0.10208,"13.0":0.21437,"14.0":0.2552,"15.0":0.30624,"16.0":1.1331},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00016,"4.2-4.3":0.00033,"4.4":0,"4.4.3-4.4.4":0.00556},A:{"11":0.0237,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.03025},Q:{"10.4":0},O:{"0":0.5566},H:{"0":0.35512},L:{"0":50.3731},S:{"2.5":0}}; +module.exports={C:{"52":0.02276,"91":0.04097,"99":0.04097,"100":0.07283,"101":0.48706,"102":0.03642,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 103 104 3.5 3.6"},D:{"49":0.02731,"67":0.00455,"71":0.03186,"74":0.05007,"78":0.0091,"79":0.04552,"80":0.01821,"81":0.01366,"83":0.01366,"84":0.01821,"85":0.03642,"86":0.03186,"87":0.01366,"88":0.04552,"89":0.05462,"90":0.02731,"91":0.0091,"92":0.02276,"93":0.00455,"94":0.00455,"95":0.0091,"96":0.04552,"97":0.07738,"98":0.05007,"99":0.22305,"100":13.21901,"101":0.96502,"102":22.79642,"103":1.65238,"104":0.0091,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 72 73 75 76 77 105 106"},F:{"42":0.02276,"79":0.0091,"85":0.10014,"86":0.20939,"87":1.02875,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00455,"85":0.0091,"92":0.00455,"100":0.0091,"101":0.07283,"102":0.31864,"103":0.05007,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 88 89 90 91 93 94 95 96 97 98 99"},E:{"4":0,"13":0.01366,"14":0.02276,"15":0.0091,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 16.0","5.1":0.21394,"12.1":0.01366,"13.1":0.01821,"14.1":0.05462,"15.1":0.03642,"15.2-15.3":0.02731,"15.4":0.15022,"15.5":0.29133},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00246,"8.1-8.4":0,"9.0-9.2":0.00246,"9.3":0.01477,"10.0-10.2":0.00431,"10.3":0.01108,"11.0-11.2":0.01354,"11.3-11.4":0.008,"12.0-12.1":0.00985,"12.2-12.5":0.22955,"13.0-13.1":0.01477,"13.2":0.03262,"13.3":0.02831,"13.4-13.7":0.07508,"14.0-14.4":0.39387,"14.5-14.8":0.66834,"15.0-15.1":0.45048,"15.2-15.3":0.5748,"15.4":1.25606,"15.5":2.29427,"16.0":0.05416},P:{"4":0.24667,"5.0-5.4":0.01028,"6.2-6.4":0.05139,"7.2-7.4":0.24667,"8.2":0.03083,"9.2":0.04111,"10.1":0.02056,"11.1-11.2":0.05139,"12.0":0.05139,"13.0":0.12333,"14.0":0.12333,"15.0":0.07194,"16.0":0.37,"17.0":0.8325},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00192,"4.4":0,"4.4.3-4.4.4":0.03076},A:{"11":0.06828,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.56104},H:{"0":0.32488},L:{"0":45.47126},S:{"2.5":0},R:{_:"0"},M:{"0":0.03813}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KH.js index 75c1593ec5c129..fb5faa159722ce 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KH.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KH.js @@ -1 +1 @@ -module.exports={C:{"4":0.00822,"5":0.00411,"15":0.00411,"17":0.00822,"44":0.00822,"47":0.00822,"50":0.00822,"51":0.00411,"52":0.01644,"56":0.00411,"57":0.00411,"60":0.00411,"61":0.02876,"67":0.00822,"68":0.00411,"70":0.00822,"72":0.00411,"78":0.04109,"79":0.01233,"80":0.03287,"81":0.05753,"82":0.03287,"83":0.01233,"84":0.00822,"86":0.00411,"88":0.01644,"89":0.01644,"90":0.00822,"91":0.01233,"92":0.00822,"93":0.00822,"94":0.01233,"95":0.02876,"96":0.65744,"97":1.28612,"98":0.05342,_:"2 3 6 7 8 9 10 11 12 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 48 49 53 54 55 58 59 62 63 64 65 66 69 71 73 74 75 76 77 85 87 99 3.5 3.6"},D:{"24":0.00822,"28":0.01233,"38":0.02465,"40":0.01644,"41":0.00411,"43":0.00411,"47":0.00822,"49":0.01644,"53":0.05753,"56":0.02876,"57":0.00411,"58":0.00411,"61":0.00822,"63":0.00411,"65":0.01233,"67":0.00822,"69":0.00822,"71":0.05342,"72":0.01233,"74":0.00822,"75":0.00411,"76":0.01233,"77":0.00411,"78":0.02055,"79":0.10683,"80":0.03698,"81":0.02055,"83":0.15614,"84":0.1808,"85":0.27119,"86":0.23421,"87":0.32461,"88":0.01644,"89":0.02876,"90":0.08629,"91":0.07396,"92":0.09451,"93":1.85316,"94":0.03287,"95":0.0452,"96":0.53828,"97":6.09776,"98":17.3482,"99":0.02876,"100":0.06574,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 29 30 31 32 33 34 35 36 37 39 42 44 45 46 48 50 51 52 54 55 59 60 62 64 66 68 70 73 101"},F:{"36":0.01233,"52":0.00822,"70":0.00822,"72":0.00411,"75":0.00411,"82":0.12327,"83":0.76017,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 73 74 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00411,"13":0.00822,"18":0.07396,"84":0.02055,"85":0.03698,"86":0.01233,"89":0.00822,"90":0.00822,"92":0.03698,"93":0.00411,"95":0.01233,"96":0.03287,"97":0.40679,"98":1.56964,_:"14 15 16 17 79 80 81 83 87 88 91 94"},E:{"4":0,"10":0.00411,"11":0.00822,"12":0.01233,"13":0.0452,"14":0.29585,"15":0.1808,_:"0 5 6 7 8 9 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00411,"11.1":0.01233,"12.1":0.03698,"13.1":0.21778,"14.1":0.95329,"15.1":0.42323,"15.2-15.3":0.80126,"15.4":0.01233},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00229,"6.0-6.1":0.00458,"7.0-7.1":0.03209,"8.1-8.4":0.04355,"9.0-9.2":0.01146,"9.3":0.08251,"10.0-10.2":0.01604,"10.3":0.11689,"11.0-11.2":0.04813,"11.3-11.4":0.09855,"12.0-12.1":0.0848,"12.2-12.5":1.56999,"13.0-13.1":0.09168,"13.2":0.0275,"13.3":0.24524,"13.4-13.7":0.63487,"14.0-14.4":2.1384,"14.5-14.8":5.42736,"15.0-15.1":3.74277,"15.2-15.3":8.40461,"15.4":0.09855},P:{"4":0.25853,"5.0-5.4":0.01077,"6.2-6.4":0.01048,"7.2-7.4":0.01077,"8.2":0.01077,"9.2":0.22272,"10.1":0.06074,"11.1-11.2":0.01077,"12.0":0.03232,"13.0":0.06463,"14.0":0.05386,"15.0":0.0754,"16.0":1.35729},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00333,"4.2-4.3":0.002,"4.4":0,"4.4.3-4.4.4":0.03001},A:{"8":0.04003,"9":0.02502,"10":0.01501,"11":0.42534,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.15906},Q:{"10.4":0.03535},O:{"0":0.78939},H:{"0":0.50753},L:{"0":31.87965},S:{"2.5":0}}; +module.exports={C:{"47":0.0075,"50":0.0075,"52":0.01501,"56":0.01126,"61":0.02251,"68":0.01876,"70":0.0075,"72":0.01126,"75":0.02251,"77":0.01876,"78":0.03752,"79":0.0075,"80":0.03377,"81":0.04502,"82":0.02626,"83":0.01501,"84":0.0075,"88":0.0075,"89":0.0075,"90":0.0075,"91":0.01501,"92":0.00375,"95":0.01126,"96":0.01876,"98":0.0075,"99":0.02251,"100":0.18385,"101":1.53457,"102":0.10881,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 51 53 54 55 57 58 59 60 62 63 64 65 66 67 69 71 73 74 76 85 86 87 93 94 97 103 104 3.5 3.6"},D:{"38":0.01876,"45":0.01126,"48":0.0075,"49":0.01126,"53":0.03002,"54":0.01876,"56":0.02251,"63":0.00375,"65":0.0075,"68":0.00375,"69":0.0075,"70":0.00375,"71":0.00375,"72":0.01126,"73":0.0075,"74":0.01126,"76":0.01876,"78":0.02626,"79":0.09755,"80":0.04127,"81":0.04502,"83":0.12382,"84":0.33393,"85":0.44274,"86":0.35644,"87":0.23262,"88":0.01501,"89":0.02251,"90":0.04878,"91":0.04127,"92":0.04878,"93":0.02251,"94":0.02626,"95":0.02251,"96":0.1013,"97":0.09755,"98":0.06378,"99":0.15383,"100":0.27014,"101":1.51581,"102":19.8931,"103":2.08611,"104":0.05253,"105":0.05253,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 46 47 50 51 52 55 57 58 59 60 61 62 64 66 67 75 77 106"},F:{"28":0.0075,"36":0.00375,"37":0.00375,"40":0.01126,"46":0.00375,"68":0.01876,"70":0.01501,"71":0.00375,"79":0.0075,"85":0.0075,"86":0.15758,"87":0.62658,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 72 73 74 75 76 77 78 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00375,"13":0.00375,"14":0.01501,"18":0.05253,"83":0.0075,"84":0.01126,"85":0.02251,"86":0.0075,"89":0.0075,"92":0.01876,"96":0.00375,"98":0.0075,"99":0.0075,"100":0.01126,"101":0.17634,"102":1.52706,"103":0.33393,_:"15 16 17 79 80 81 87 88 90 91 93 94 95 97"},E:{"4":0,"10":0.00375,"12":0.0075,"13":0.03752,"14":0.26639,"15":0.06003,_:"0 5 6 7 8 9 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.0075,"11.1":0.01126,"12.1":0.04127,"13.1":0.17634,"14.1":0.52153,"15.1":0.14258,"15.2-15.3":0.12757,"15.4":0.65285,"15.5":1.39199,"16.0":0.01876},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01362,"8.1-8.4":0.0354,"9.0-9.2":0.01089,"9.3":0.08715,"10.0-10.2":0.01362,"10.3":0.09532,"11.0-11.2":0.04085,"11.3-11.4":0.06536,"12.0-12.1":0.07353,"12.2-12.5":1.32358,"13.0-13.1":0.07081,"13.2":0.03268,"13.3":0.17702,"13.4-13.7":0.54468,"14.0-14.4":1.72665,"14.5-14.8":3.68207,"15.0-15.1":1.23371,"15.2-15.3":1.80291,"15.4":4.16956,"15.5":11.71344,"16.0":0.2097},P:{"4":0.15144,"5.0-5.4":0.01082,"6.2-6.4":0.01037,"7.2-7.4":0.13561,"8.2":0.06207,"9.2":0.11475,"10.1":0.02112,"11.1-11.2":0.01082,"12.0":0.01082,"13.0":0.02163,"14.0":0.02163,"15.0":0.03245,"16.0":0.11899,"17.0":1.35211},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00234,"4.2-4.3":0.00234,"4.4":0,"4.4.3-4.4.4":0.02031},A:{"8":0.00504,"9":0.02015,"11":0.34251,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.02499},O:{"0":0.65604},H:{"0":0.51462},L:{"0":32.98045},S:{"2.5":0},R:{_:"0"},M:{"0":0.44361}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KI.js index b6779b6ba1a680..1358affe88694b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KI.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KI.js @@ -1 +1 @@ -module.exports={C:{"54":0.01027,"56":0.07447,"75":0.05136,"89":0.03082,"94":0.03082,"95":0.02054,"96":0.24139,"97":7.73995,"98":0.02054,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 78 79 80 81 82 83 84 85 86 87 88 90 91 92 93 99 3.5 3.6"},D:{"56":0.01027,"57":0.42115,"71":0.01027,"72":0.05136,"81":0.01027,"87":0.03082,"88":0.02054,"89":0.28505,"92":0.14638,"95":0.28505,"96":0.61118,"97":2.21875,"98":7.47802,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 58 59 60 61 62 63 64 65 66 67 68 69 70 73 74 75 76 77 78 79 80 83 84 85 86 90 91 93 94 99 100 101"},F:{"82":0.01027,"83":0.22085,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.04109,"15":0.01027,"16":0.08474,"18":0.2003,"80":0.0642,"84":0.0642,"87":0.01027,"89":0.03082,"90":0.04109,"92":0.01027,"95":0.0642,"96":0.10529,"97":1.48174,"98":1.20953,_:"13 14 17 79 81 83 85 86 88 91 93 94"},E:{"4":0,"13":0.03082,_:"0 5 6 7 8 9 10 11 12 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.4","15.1":0.03082,"15.2-15.3":0.19003},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00689,"7.0-7.1":0.0411,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0.00689,"11.3-11.4":0.04119,"12.0-12.1":0.00689,"12.2-12.5":0.23299,"13.0-13.1":0.00689,"13.2":0.00689,"13.3":0.03429,"13.4-13.7":0.06169,"14.0-14.4":0.2398,"14.5-14.8":0.04808,"15.0-15.1":0.06169,"15.2-15.3":0.08909,"15.4":0},P:{"4":0.09071,"5.0-5.4":0.09071,"6.2-6.4":0.11087,"7.2-7.4":2.20723,"8.2":0.08049,"9.2":0.01008,"10.1":0.03067,"11.1-11.2":1.64283,"12.0":0.06047,"13.0":0.37291,"14.0":0.20157,"15.0":0.08063,"16.0":1.47149},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.03082,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":4.03558},H:{"0":0.28145},L:{"0":64.2664},S:{"2.5":0}}; +module.exports={C:{"56":0.0216,"84":0.0216,"91":0.0108,"98":0.0216,"100":0.3618,"101":2.5731,"102":0.0648,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 85 86 87 88 89 90 92 93 94 95 96 97 99 103 104 3.5 3.6"},D:{"55":0.054,"63":0.0108,"72":0.0891,"74":0.054,"75":0.0324,"76":0.3078,"87":0.0324,"88":0.0891,"92":0.0432,"93":0.054,"94":0.1971,"96":0.0216,"97":0.0891,"98":0.0648,"99":0.0324,"100":0.1323,"101":0.4077,"102":10.3059,"103":1.188,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 56 57 58 59 60 61 62 64 65 66 67 68 69 70 71 73 77 78 79 80 81 83 84 85 86 89 90 91 95 104 105 106"},F:{"40":0.0108,"86":0.1215,"87":0.2646,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0216,"14":0.0216,"15":0.1863,"17":0.0108,"18":0.2646,"80":0.0432,"81":0.0216,"84":0.0324,"85":0.1971,"86":0.0108,"89":0.054,"90":0.1107,"91":0.0216,"92":0.1647,"94":0.0999,"95":0.0648,"96":0.0108,"97":0.0324,"98":0.0432,"99":0.0783,"100":0.0432,"101":1.0341,"102":3.7611,"103":0.6939,_:"13 16 79 83 87 88 93"},E:{"4":0,"15":0.0324,_:"0 5 6 7 8 9 10 11 12 13 14 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 13.1 14.1 15.2-15.3 16.0","12.1":0.0216,"15.1":0.0216,"15.4":0.0108,"15.5":0.0648},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.01594,"11.0-11.2":0,"11.3-11.4":0.02391,"12.0-12.1":0,"12.2-12.5":0.07981,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0.27152,"14.5-14.8":0.07981,"15.0-15.1":0.07194,"15.2-15.3":0.14378,"15.4":0.13571,"15.5":0.19958,"16.0":0},P:{"4":0.22211,"5.0-5.4":0.04029,"6.2-6.4":0.06057,"7.2-7.4":0.85814,"8.2":0.07051,"9.2":0.08077,"10.1":0.03259,"11.1-11.2":0.2322,"12.0":0.0207,"13.0":0.53507,"14.0":0.13124,"15.0":0.03029,"16.0":1.70618,"17.0":1.36293},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.0365},A:{"11":0.0108,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.6497},H:{"0":0.35938},L:{"0":68.3316},S:{"2.5":0},R:{_:"0"},M:{"0":0.2044}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KM.js index cc4d0c893f151e..3762386e57d58c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KM.js @@ -1 +1 @@ -module.exports={C:{"47":0.04297,"78":0.00992,"84":0.00331,"91":0.03636,"94":0.00661,"96":2.68366,"97":3.24882,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 89 90 92 93 95 98 99 3.5 3.6"},D:{"32":0.00331,"38":0.00331,"54":0.00661,"58":0.00992,"63":0.00992,"65":0.01322,"74":0.03636,"76":0.01322,"81":0.17186,"83":0.00331,"86":2.23088,"87":0.01322,"88":0.01653,"89":0.02314,"91":0.01322,"92":0.03636,"93":0.03305,"94":0.00661,"95":0.02975,"96":0.16856,"97":2.01936,"98":8.16005,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 55 56 57 59 60 61 62 64 66 67 68 69 70 71 72 73 75 77 78 79 80 84 85 90 99 100 101"},F:{"43":0.02975,"67":0.00331,"79":0.00331,"82":0.00992,"83":0.36686,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00661,"13":0.00992,"17":0.00992,"18":0.01653,"80":0.00331,"81":0.00661,"84":0.01983,"85":0.00331,"89":0.00331,"92":0.02644,"94":0.02314,"95":0.03305,"96":0.0661,"97":0.18508,"98":0.54533,_:"14 15 16 79 83 86 87 88 90 91 93"},E:{"4":0,"12":0.00331,"13":0.00661,"14":0.07271,_:"0 5 6 7 8 9 10 11 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.00992,"12.1":0.05619,"13.1":0.01322,"14.1":0.08263,"15.1":0.00331,"15.2-15.3":0.01322},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.08002,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00418,"10.0-10.2":0,"10.3":0.00209,"11.0-11.2":0.06956,"11.3-11.4":0.15951,"12.0-12.1":0.01046,"12.2-12.5":1.00727,"13.0-13.1":0.03138,"13.2":0.00418,"13.3":0.01883,"13.4-13.7":0.08159,"14.0-14.4":1.51561,"14.5-14.8":0.79494,"15.0-15.1":0.64589,"15.2-15.3":0.80121,"15.4":0.00209},P:{"4":0.56464,"5.0-5.4":0.02017,"6.2-6.4":0.04033,"7.2-7.4":0.61505,"8.2":0.01049,"9.2":0.07058,"10.1":2.25855,"11.1-11.2":0.92762,"12.0":0.02017,"13.0":0.02017,"14.0":0.09075,"15.0":0.04033,"16.0":0.3529},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00217,"4.2-4.3":0.01517,"4.4":0,"4.4.3-4.4.4":0.08309},A:{"9":0.18864,"11":0.51202,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.30128},Q:{"10.4":0},O:{"0":0.29458},H:{"0":0.7099},L:{"0":66.53176},S:{"2.5":0}}; +module.exports={C:{"63":0.00199,"68":0.00795,"78":0.00994,"81":0.03775,"86":0.00199,"88":0.00199,"90":0.00596,"91":0.00994,"95":0.00199,"96":0.00199,"97":0.00199,"98":0.00199,"99":0.09339,"100":0.13313,"101":1.15047,"102":0.03179,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 82 83 84 85 87 89 92 93 94 103 104 3.5 3.6"},D:{"43":0.00199,"55":0.02186,"62":0.00994,"63":0.00795,"65":0.00199,"69":0.00199,"70":0.00596,"71":0.00596,"75":0.00596,"76":0.00199,"77":0.00795,"79":0.0159,"80":0.1987,"81":0.08743,"83":0.00596,"85":0.04968,"86":0.00596,"87":0.02384,"89":0.04371,"90":0.0159,"91":0.02186,"92":0.03577,"93":0.00596,"94":0.03179,"96":0.03577,"97":0.26626,"98":0.0457,"99":0.04371,"100":0.10929,"101":0.58815,"102":7.27639,"103":1.15643,"104":0.03179,"105":0.00199,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 56 57 58 59 60 61 64 66 67 68 72 73 74 78 84 88 95 106"},F:{"37":0.07352,"44":0.00199,"82":0.02384,"84":0.02782,"85":0.00795,"86":0.05166,"87":0.40336,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.03577,"13":0.02384,"15":0.00199,"16":0.01987,"17":0.0457,"18":0.02186,"84":0.03775,"85":0.00596,"86":0.00199,"88":0.00199,"89":0.04968,"90":0.00199,"92":0.02186,"94":0.00199,"95":0.0159,"97":0.00199,"98":0.00795,"99":0.04968,"100":0.00795,"101":0.27222,"102":1.72472,"103":0.38945,_:"14 79 80 81 83 87 91 93 96"},E:{"4":0.00596,"14":0.0457,"15":0.00795,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 15.1 16.0","5.1":0.00199,"13.1":0.02782,"14.1":0.10332,"15.2-15.3":0.00596,"15.4":0.02384,"15.5":0.0457},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00264,"6.0-6.1":0,"7.0-7.1":0.04417,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.03494,"11.0-11.2":0.08569,"11.3-11.4":0.02307,"12.0-12.1":0.01912,"12.2-12.5":0.82926,"13.0-13.1":0.00923,"13.2":0.01187,"13.3":0.04417,"13.4-13.7":0.08833,"14.0-14.4":1.53459,"14.5-14.8":0.51153,"15.0-15.1":0.54119,"15.2-15.3":0.59459,"15.4":1.27685,"15.5":0.86815,"16.0":0.07449},P:{"4":0.20336,"5.0-5.4":0.0305,"6.2-6.4":0.0305,"7.2-7.4":0.21352,"8.2":0.06207,"9.2":0.11185,"10.1":0.33554,"11.1-11.2":0.2847,"12.0":0.02034,"13.0":0.04067,"14.0":0.13218,"15.0":0.06101,"16.0":0.5999,"17.0":0.46772},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00072,"4.2-4.3":0.0013,"4.4":0,"4.4.3-4.4.4":0.03003},A:{"11":0.23248,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.6009},H:{"0":0.95574},L:{"0":73.18108},S:{"2.5":0},R:{_:"0"},M:{"0":0.17626}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KN.js index 990f6039d784b0..3bf342e88a629d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KN.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KN.js @@ -1 +1 @@ -module.exports={C:{"69":0.0085,"78":0.0085,"94":0.00425,"95":0.01276,"96":0.19559,"97":0.31465,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 98 99 3.5 3.6"},D:{"23":0.0085,"49":0.02551,"63":0.01276,"66":0.00425,"70":0.01276,"76":0.05102,"77":0.03827,"78":0.01276,"79":0.03827,"81":0.02976,"83":0.04252,"85":0.3104,"86":0.01701,"87":0.02126,"89":0.04252,"91":0.02551,"92":0.02976,"93":0.01276,"94":0.03402,"95":0.04677,"96":0.66756,"97":6.85422,"98":16.42973,"99":0.0085,"100":0.00425,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 67 68 69 71 72 73 74 75 80 84 88 90 101"},F:{"82":0.25512,"83":0.2126,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0085,"15":0.00425,"17":0.00425,"18":0.02551,"85":0.18709,"89":0.00425,"90":0.08079,"95":0.08504,"96":0.02976,"97":2.0112,"98":5.97831,_:"13 14 16 79 80 81 83 84 86 87 88 91 92 93 94"},E:{"4":0,"12":0.04677,"13":0.0085,"14":0.13181,"15":0.13181,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 10.1 15.4","9.1":0.0085,"11.1":0.01276,"12.1":0.07228,"13.1":0.25512,"14.1":0.59103,"15.1":0.34866,"15.2-15.3":1.34363},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00642,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01124,"10.0-10.2":0.01124,"10.3":0.265,"11.0-11.2":0.00642,"11.3-11.4":0.00964,"12.0-12.1":0.00482,"12.2-12.5":0.94597,"13.0-13.1":0.01285,"13.2":0,"13.3":0.01767,"13.4-13.7":0.09315,"14.0-14.4":0.49788,"14.5-14.8":2.61948,"15.0-15.1":1.79236,"15.2-15.3":9.21557,"15.4":0.54445},P:{"4":0.25173,"5.0-5.4":0.01121,"6.2-6.4":0.01012,"7.2-7.4":0.15733,"8.2":0.03083,"9.2":0.07359,"10.1":0.03037,"11.1-11.2":0.14684,"12.0":0.05244,"13.0":0.02098,"14.0":0.03147,"15.0":0.0944,"16.0":3.734},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00366,"4.2-4.3":0.00274,"4.4":0,"4.4.3-4.4.4":0.03383},A:{"11":0.17858,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.52307},Q:{"10.4":0},O:{"0":0.0115},H:{"0":2.04069},L:{"0":36.60142},S:{"2.5":0}}; +module.exports={C:{"78":0.01809,"85":0.00452,"86":0.01357,"91":0.01809,"97":0.00452,"100":0.07689,"101":0.91365,"102":0.03618,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 87 88 89 90 92 93 94 95 96 98 99 103 104 3.5 3.6"},D:{"29":0.00452,"49":0.02714,"65":0.01357,"68":0.00452,"70":0.04071,"72":0.00905,"75":0.04523,"76":0.02262,"77":0.00452,"79":0.03618,"80":0.01357,"81":0.00905,"83":0.01809,"84":0.01357,"85":0.06332,"86":0.02262,"87":0.01809,"88":0.00452,"89":0.01809,"90":0.04071,"91":0.01357,"92":0.03166,"93":0.03618,"94":0.01809,"95":0.00905,"96":0.03166,"97":0.00905,"98":0.04523,"99":0.07689,"100":0.6694,"101":1.68708,"102":20.57965,"103":3.12992,"105":0.00452,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 69 71 73 74 78 104 106"},F:{"85":0.06332,"86":0.20806,"87":0.56085,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01809,"18":0.01357,"83":0.00905,"84":0.00452,"85":0.00905,"88":0.00452,"89":0.00452,"92":0.00905,"93":0.00905,"94":0.00905,"96":0.00905,"97":0.02262,"98":0.00905,"99":0.02714,"100":0.01809,"101":1.05838,"102":6.29602,"103":0.4523,_:"12 13 14 16 17 79 80 81 86 87 90 91 95"},E:{"4":0,"12":0.00452,"13":0.01357,"14":0.17187,"15":0.04071,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01357,"12.1":0.14021,"13.1":0.14926,"14.1":0.28043,"15.1":0.04975,"15.2-15.3":0.06332,"15.4":0.97245,"15.5":1.85443},G:{"8":0.01258,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00343,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00915,"10.0-10.2":0,"10.3":0.23334,"11.0-11.2":0.00801,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.71488,"13.0-13.1":0.02173,"13.2":0.01944,"13.3":0.04461,"13.4-13.7":0.0549,"14.0-14.4":0.35916,"14.5-14.8":0.64968,"15.0-15.1":0.12239,"15.2-15.3":0.59707,"15.4":2.16065,"15.5":6.32069,"16.0":0.08235},P:{"4":0.1464,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.17778,"8.2":0.01015,"9.2":0.01035,"10.1":0.01018,"11.1-11.2":0.03137,"12.0":0.01106,"13.0":0.02091,"14.0":0.03137,"15.0":0.02091,"16.0":0.39738,"17.0":3.0954},I:{"0":0,"3":0,"4":0.00025,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00224,"4.4":0,"4.4.3-4.4.4":0.01942},A:{"11":0.03618,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01643},H:{"0":1.13557},L:{"0":41.35246},S:{"2.5":0},R:{_:"0"},M:{"0":0.60795}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KP.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KP.js index 3810de0e6da37d..7343e0cdfbddac 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KP.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KP.js @@ -1 +1 @@ -module.exports={C:{"97":0.01755,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 98 99 3.5 3.6"},D:{"78":0.00878,"83":0.00878,"86":0.00878,"92":0.05265,"96":0.2184,"97":0.07898,"98":0.4719,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 84 85 87 88 89 90 91 93 94 95 99 100 101"},F:{"56":0.0351,"83":0.12285,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"92":0.49823,"97":0.0351,"98":0.11408,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96"},E:{"4":0,"9":0.01755,_:"0 5 6 7 8 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1","15.1":0.92723,"15.2-15.3":3.27893,"15.4":0.19208},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01804,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0.01804,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":22.95271,"15.2-15.3":66.8191,"15.4":0.406},P:{"4":0.09071,"5.0-5.4":0.09071,"6.2-6.4":0.11087,"7.2-7.4":2.20723,"8.2":0.08049,"9.2":0.02708,"10.1":0.03067,"11.1-11.2":1.64283,"12.0":0.06047,"13.0":0.37291,"14.0":0.20157,"15.0":0.08063,"16.0":1.47149},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":0.56843},S:{"2.5":0}}; +module.exports={C:{"71":0.08114,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 3.5 3.6"},D:{"56":0.02632,"88":0.02632,"92":0.05483,"96":0.02632,"100":0.19079,"102":1.4101,"103":0.05483,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 89 90 91 93 94 95 97 98 99 101 104 105 106"},F:{"56":0.05483,"74":0.10746,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 80 81 82 83 84 85 86 87 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"101":0.02632,"102":0.21711,"103":0.02632,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 11.1 12.1 13.1 14.1","10.1":0.02632,"15.1":0.08114,"15.2-15.3":0.24342,"15.4":5.17767,"15.5":13.58125,"16.0":0.29825},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":0.68097,"15.2-15.3":0.19346,"15.4":10.79487,"15.5":65.28768,"16.0":0.37917},P:{"4":0.22211,"5.0-5.4":0.04029,"6.2-6.4":0.06057,"7.2-7.4":0.85814,"8.2":0.07051,"9.2":0.08077,"10.1":0.03259,"11.1-11.2":0.2322,"12.0":0.0207,"13.0":0.53507,"14.0":0.13124,"15.0":0.03029,"16.0":1.70618,"17.0":1.36293},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.02956},L:{"0":0.70263},S:{"2.5":0},R:{_:"0"},M:{"0":0}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KR.js index 96800a79cf3321..b109081892311b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KR.js @@ -1 +1 @@ -module.exports={C:{"52":0.01419,"78":0.01892,"80":0.00473,"91":0.05202,"95":0.00946,"96":0.25537,"97":0.53911,"98":0.01419,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 81 82 83 84 85 86 87 88 89 90 92 93 94 99 3.5 3.6"},D:{"42":0.0331,"49":0.02365,"56":0.00473,"64":0.02837,"67":0.00473,"68":0.00946,"69":0.00473,"70":0.0331,"72":0.0331,"77":0.18443,"78":0.00473,"79":0.07094,"80":0.05202,"81":0.02837,"83":0.0331,"84":0.04256,"85":0.04729,"86":0.06621,"87":0.06621,"88":0.00473,"89":0.04729,"90":0.08512,"91":0.03783,"92":0.04256,"93":0.5864,"94":0.04256,"95":0.03783,"96":0.30266,"97":8.50747,"98":21.94256,"99":0.01419,"100":0.00946,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 63 65 66 71 73 74 75 76 101"},F:{"82":0.01892,"83":0.21281,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00473,"17":0.00946,"18":0.02365,"84":0.00473,"85":0.00473,"86":0.02837,"87":0.00473,"89":0.00946,"90":0.00946,"91":0.01419,"92":0.01892,"93":0.00473,"94":0.01419,"95":0.02365,"96":0.07094,"97":1.43762,"98":5.77411,_:"12 13 15 16 79 80 81 83 88"},E:{"4":0,"8":0.00473,"13":0.00946,"14":0.06148,"15":0.05675,_:"0 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.00946,"13.1":0.05675,"14.1":0.18916,"15.1":0.14187,"15.2-15.3":0.36413,"15.4":0.01419},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00243,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.14835,"9.3":0.01216,"10.0-10.2":0,"10.3":0.00973,"11.0-11.2":0.00973,"11.3-11.4":0.00608,"12.0-12.1":0.01094,"12.2-12.5":0.08633,"13.0-13.1":0.15443,"13.2":0.00365,"13.3":0.02675,"13.4-13.7":0.07904,"14.0-14.4":0.39884,"14.5-14.8":1.8641,"15.0-15.1":2.28118,"15.2-15.3":7.0089,"15.4":0.05229},P:{_:"4 5.0-5.4 6.2-6.4 7.2-7.4 8.2 10.1","9.2":0.02028,"11.1-11.2":0.07099,"12.0":0.08113,"13.0":0.20282,"14.0":0.30423,"15.0":0.38536,"16.0":12.40259},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.05798},A:{"8":0.00971,"9":0.00971,"11":0.89328,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.13705},Q:{"10.4":0.01054},O:{"0":0.10542},H:{"0":0.1547},L:{"0":20.0349},S:{"2.5":0}}; +module.exports={C:{"51":0.00491,"52":0.01474,"53":0.00491,"55":0.00491,"56":0.00491,"78":0.01474,"79":0.00491,"80":0.00983,"91":0.02457,"100":0.05897,"101":0.60442,"102":0.00983,"103":0.00983,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 54 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 99 104 3.5 3.6"},D:{"42":0.0344,"49":0.02457,"56":0.00491,"62":0.01966,"65":0.00491,"68":0.00983,"70":0.00491,"72":0.00491,"74":0.00491,"75":0.00491,"77":0.14251,"78":0.00983,"79":0.04423,"80":0.0344,"81":0.02457,"83":0.03931,"84":0.05897,"85":0.08845,"86":0.08354,"87":0.11302,"88":0.00491,"89":0.01966,"90":0.11302,"91":0.01966,"92":0.02457,"93":0.00983,"94":0.09337,"95":0.00983,"96":0.08845,"97":0.05405,"98":0.07371,"99":0.08354,"100":0.27027,"101":1.37101,"102":29.23339,"103":1.7543,"104":0.00983,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 63 64 66 67 69 71 73 76 105 106"},F:{"86":0.01474,"87":0.18673,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.02457,"84":0.00491,"86":0.01474,"89":0.00491,"90":0.00491,"91":0.00491,"92":0.01474,"93":0.00491,"94":0.00983,"95":0.00983,"96":0.01474,"97":0.01966,"98":0.01966,"99":0.02948,"100":0.03931,"101":0.71744,"102":6.11302,"103":0.82555,_:"12 13 14 15 16 17 79 80 81 83 85 87 88"},E:{"4":0,"8":0.00983,"13":0.00491,"14":0.03931,"15":0.01966,_:"0 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.00983,"13.1":0.03931,"14.1":0.10319,"15.1":0.02948,"15.2-15.3":0.03931,"15.4":0.22604,"15.5":0.63391,"16.0":0.00491},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00239,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.16595,"9.3":0.00716,"10.0-10.2":0.00119,"10.3":0.01074,"11.0-11.2":0.00716,"11.3-11.4":0.00239,"12.0-12.1":0.00836,"12.2-12.5":0.07641,"13.0-13.1":0.10745,"13.2":0.00478,"13.3":0.01433,"13.4-13.7":0.05372,"14.0-14.4":0.27697,"14.5-14.8":0.7581,"15.0-15.1":0.4083,"15.2-15.3":0.51216,"15.4":1.70721,"15.5":7.74454,"16.0":0.03701},P:{"4":0.22211,"5.0-5.4":0.04029,"6.2-6.4":0.06057,"7.2-7.4":0.85814,"8.2":0.07051,"9.2":0.01013,"10.1":0.03259,"11.1-11.2":0.06081,"12.0":0.05067,"13.0":0.11148,"14.0":0.21283,"15.0":0.11148,"16.0":0.71958,"17.0":12.60785},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.06103},A:{"8":0.00509,"9":0.01018,"11":0.69726,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.01017},O:{"0":0.09155},H:{"0":0.14927},L:{"0":18.86596},S:{"2.5":0},R:{_:"0"},M:{"0":0.10681}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KW.js index 17e4b158c79f2e..59653d6ded2c1d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KW.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KW.js @@ -1 +1 @@ -module.exports={C:{"34":0.00878,"52":0.12298,"78":0.05856,"84":0.06149,"88":0.01464,"91":0.05563,"95":0.01464,"96":0.24888,"97":0.36307,"98":0.00586,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 89 90 92 93 94 99 3.5 3.6"},D:{"38":0.0527,"43":0.00586,"47":0.01757,"49":0.0205,"56":0.01171,"63":0.00586,"64":0.00878,"65":0.00293,"66":0.00293,"67":0.02342,"69":0.00586,"70":0.00586,"71":0.00878,"73":0.00586,"74":0.00586,"75":0.00586,"76":0.01464,"78":0.01464,"79":0.03221,"80":0.00878,"81":0.00586,"83":0.00878,"84":0.00586,"85":0.01171,"86":0.0205,"87":0.19032,"88":0.01171,"89":0.0205,"90":0.02635,"91":0.04685,"92":0.11126,"93":0.02635,"94":0.02635,"95":0.06442,"96":0.42749,"97":5.6569,"98":12.67531,"99":0.00293,"100":0.01464,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 48 50 51 52 53 54 55 57 58 59 60 61 62 68 72 77 101"},F:{"28":0.01757,"46":0.01757,"82":0.25474,"83":0.68222,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00293,"16":0.00293,"17":0.00586,"18":0.01464,"84":0.00586,"85":0.00293,"89":0.00586,"90":0.00586,"92":0.01464,"93":0.00293,"94":0.00586,"95":0.03806,"96":0.07613,"97":0.67637,"98":2.09059,_:"12 13 14 79 80 81 83 86 87 88 91"},E:{"4":0,"13":0.0732,"14":0.35136,"15":0.20203,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.02635,"12.1":0.04099,"13.1":0.15811,"14.1":1.06286,"15.1":0.34843,"15.2-15.3":0.68808,"15.4":0.00878},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00336,"6.0-6.1":0,"7.0-7.1":0.01678,"8.1-8.4":0,"9.0-9.2":0.01678,"9.3":0.14765,"10.0-10.2":0.01342,"10.3":0.08389,"11.0-11.2":0.04027,"11.3-11.4":0.05033,"12.0-12.1":0.08054,"12.2-12.5":0.91944,"13.0-13.1":0.10738,"13.2":0.07382,"13.3":0.28858,"13.4-13.7":0.60737,"14.0-14.4":2.96973,"14.5-14.8":8.09713,"15.0-15.1":6.32536,"15.2-15.3":13.61043,"15.4":0.09731},P:{"4":0.16429,"5.0-5.4":0.09071,"6.2-6.4":0.11087,"7.2-7.4":0.08214,"8.2":0.08049,"9.2":0.04107,"10.1":0.02054,"11.1-11.2":0.12322,"12.0":0.05134,"13.0":0.15402,"14.0":0.24643,"15.0":0.30804,"16.0":3.0804},I:{"0":0,"3":0,"4":0.00381,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00508,"4.2-4.3":0.00127,"4.4":0,"4.4.3-4.4.4":0.03935},A:{"11":0.13762,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.10608},Q:{"10.4":0.0495},O:{"0":1.74678},H:{"0":0.83691},L:{"0":30.27026},S:{"2.5":0}}; +module.exports={C:{"34":0.00927,"52":0.21932,"78":0.00618,"84":0.01853,"85":0.00309,"91":0.06796,"92":0.00309,"96":0.00309,"98":0.00618,"99":0.00618,"100":0.0834,"101":0.66105,"102":0.03089,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 86 87 88 89 90 93 94 95 97 103 104 3.5 3.6"},D:{"38":0.01853,"47":0.00927,"49":0.01236,"56":0.00927,"62":0.00618,"64":0.00618,"65":0.00309,"67":0.04942,"68":0.00618,"69":0.00309,"70":0.00618,"71":0.01853,"73":0.00618,"74":0.00309,"75":0.01236,"76":0.00309,"78":0.01545,"79":0.00618,"80":0.00927,"81":0.01236,"83":0.01545,"84":0.01236,"85":0.01853,"86":0.01853,"87":0.08958,"88":0.03089,"89":0.02162,"90":0.0278,"91":0.0278,"92":0.07723,"93":0.00927,"94":0.00618,"95":0.01545,"96":0.03398,"97":0.03707,"98":0.02471,"99":0.0556,"100":0.15754,"101":0.85565,"102":18.48767,"103":1.45183,"104":0.01545,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 53 54 55 57 58 59 60 61 63 66 72 77 105 106"},F:{"28":0.0278,"46":0.01236,"85":0.00618,"86":0.31199,"87":0.43864,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00309,"16":0.00927,"18":0.01236,"83":0.00927,"84":0.00309,"89":0.00309,"90":0.00309,"92":0.00927,"93":0.00618,"96":0.00927,"97":0.00618,"98":0.00927,"99":0.02471,"100":0.0278,"101":0.46335,"102":1.76691,"103":0.32435,_:"12 13 14 17 79 80 81 85 86 87 88 91 94 95"},E:{"4":0,"12":0.00309,"13":0.02471,"14":0.24712,"15":0.07105,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00309,"11.1":0.00618,"12.1":0.04016,"13.1":0.09576,"14.1":0.55293,"15.1":0.12356,"15.2-15.3":0.08958,"15.4":0.51586,"15.5":1.09042,"16.0":0.00309},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00834,"8.1-8.4":0,"9.0-9.2":0.00556,"9.3":0.12506,"10.0-10.2":0,"10.3":0.0667,"11.0-11.2":0.02501,"11.3-11.4":0.01668,"12.0-12.1":0.05558,"12.2-12.5":0.65312,"13.0-13.1":0.05003,"13.2":0.04169,"13.3":0.17509,"13.4-13.7":0.38075,"14.0-14.4":1.63418,"14.5-14.8":3.7714,"15.0-15.1":1.30901,"15.2-15.3":2.15112,"15.4":4.83584,"15.5":12.35919,"16.0":0.06948},P:{"4":0.1536,"5.0-5.4":0.04029,"6.2-6.4":0.06057,"7.2-7.4":0.1024,"8.2":0.07051,"9.2":0.02048,"10.1":0.03259,"11.1-11.2":0.07168,"12.0":0.03072,"13.0":0.18432,"14.0":0.21505,"15.0":0.16384,"16.0":0.51201,"17.0":3.03112},I:{"0":0,"3":0,"4":0.00314,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00942,"4.4":0,"4.4.3-4.4.4":0.02199},A:{"11":0.1112,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.70011},H:{"0":0.80478},L:{"0":34.86987},S:{"2.5":0},R:{_:"0"},M:{"0":0.13131}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KY.js index 6f94b765bc5ce2..ecf3c39899a5a8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KY.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KY.js @@ -1 +1 @@ -module.exports={C:{"52":0.01037,"53":0.01037,"78":0.01037,"91":0.02593,"95":0.0726,"96":0.46155,"97":1.13055,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 98 99 3.5 3.6"},D:{"26":0.00519,"49":0.01037,"63":0.04667,"66":0.00519,"67":0.01037,"75":0.01037,"76":0.02593,"79":0.04149,"80":0.01037,"83":0.02593,"84":0.02593,"85":0.05705,"87":0.03112,"88":0.01037,"89":0.01556,"90":0.01037,"91":0.09335,"92":0.08816,"93":0.01556,"94":0.08298,"95":0.04149,"96":0.47711,"97":9.68226,"98":19.05336,"99":0.11928,"100":0.05186,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 68 69 70 71 72 73 74 77 78 81 86 101"},F:{"82":0.67937,"83":0.63788,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.01037,"18":0.08816,"89":0.01556,"95":0.01037,"96":0.02593,"97":2.24554,"98":5.79795,_:"12 13 14 15 17 79 80 81 83 84 85 86 87 88 90 91 92 93 94"},E:{"4":0,"12":0.01037,"13":0.16595,"14":0.15039,"15":0.47193,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01556,"11.1":0.01037,"12.1":0.05186,"13.1":1.05794,"14.1":2.42705,"15.1":0.84013,"15.2-15.3":2.63967,"15.4":0.01037},G:{"8":0.00762,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04571,"10.0-10.2":0,"10.3":0.17521,"11.0-11.2":0,"11.3-11.4":0.20822,"12.0-12.1":0.01777,"12.2-12.5":0.35549,"13.0-13.1":0.16759,"13.2":0.0127,"13.3":0.03809,"13.4-13.7":0.22599,"14.0-14.4":0.32756,"14.5-14.8":3.73772,"15.0-15.1":5.8021,"15.2-15.3":14.20434,"15.4":0.05332},P:{"4":0.0734,"5.0-5.4":0.02063,"6.2-6.4":0.01048,"7.2-7.4":0.05243,"8.2":0.01049,"9.2":0.03095,"10.1":0.02185,"11.1-11.2":0.08389,"12.0":0.01049,"13.0":0.20973,"14.0":0.04195,"15.0":0.02097,"16.0":3.55486},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00172,"4.2-4.3":0.00069,"4.4":0,"4.4.3-4.4.4":0.00241},A:{"11":0.14002,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.08665},Q:{"10.4":0},O:{"0":0.0674},H:{"0":0.02279},L:{"0":18.01079},S:{"2.5":0}}; +module.exports={C:{"78":0.01013,"87":0.00506,"91":0.01013,"99":0.02532,"100":0.74426,"101":2.33911,"102":0.03544,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 92 93 94 95 96 97 98 103 104 3.5 3.6"},D:{"49":0.01013,"68":0.01013,"70":0.0405,"79":0.03038,"83":0.05569,"84":0.17214,"85":0.00506,"86":0.16202,"87":0.07088,"88":0.02025,"90":0.00506,"91":0.04557,"92":0.02532,"93":0.03038,"95":0.01013,"96":0.01013,"97":0.11645,"98":0.03038,"99":0.08101,"100":0.43036,"101":2.23278,"102":25.77573,"103":2.32898,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 71 72 73 74 75 76 77 78 80 81 89 94 104 105 106"},F:{"86":0.57212,"87":0.72907,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.00506,"18":0.03544,"89":0.01519,"92":0.02025,"98":0.00506,"100":0.07595,"101":0.79489,"102":4.91617,"103":0.84046,_:"12 13 14 15 17 79 80 81 83 84 85 86 87 88 90 91 93 94 95 96 97 99"},E:{"4":0,"12":0.01519,"13":0.0405,"14":0.12151,"15":0.03544,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.22784,"13.1":0.4101,"14.1":0.86071,"15.1":0.13164,"15.2-15.3":0.3696,"15.4":1.40245,"15.5":2.82009,"16.0":0.00506},G:{"8":0.00496,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01985,"10.0-10.2":0.00496,"10.3":0.02978,"11.0-11.2":0,"11.3-11.4":0.00993,"12.0-12.1":0.00744,"12.2-12.5":0.4814,"13.0-13.1":0.00993,"13.2":0,"13.3":0.06948,"13.4-13.7":0.11911,"14.0-14.4":0.23574,"14.5-14.8":1.42434,"15.0-15.1":0.27296,"15.2-15.3":1.26305,"15.4":3.99262,"15.5":16.66778,"16.0":0.00744},P:{"4":0.01051,"5.0-5.4":0.05037,"6.2-6.4":0.03095,"7.2-7.4":0.15765,"8.2":0.06207,"9.2":0.01051,"10.1":0.01086,"11.1-11.2":0.14714,"12.0":0.02015,"13.0":0.1051,"14.0":0.04204,"15.0":0.1238,"16.0":0.18918,"17.0":3.40515},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.02468},A:{"11":0.04557,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01481},H:{"0":0.02804},L:{"0":20.75795},S:{"2.5":0},R:{_:"0"},M:{"0":0.20238}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KZ.js index 8e87d05c852cea..c6c0e905f46ebb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KZ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KZ.js @@ -1 +1 @@ -module.exports={C:{"48":0.00384,"51":0.00384,"52":0.28823,"55":0.03459,"57":0.02306,"75":0.00384,"78":0.02306,"80":0.00384,"81":0.00384,"82":0.00769,"88":0.00769,"89":0.02306,"91":0.03074,"93":0.00384,"94":0.00769,"95":0.03074,"96":0.44579,"97":0.82625,"98":0.01537,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 53 54 56 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 79 83 84 85 86 87 90 92 99 3.5 3.6"},D:{"22":0.00769,"40":0.00384,"49":0.04996,"57":0.00384,"60":0.00384,"61":0.00769,"63":0.01153,"64":0.00769,"65":0.01537,"66":0.00769,"67":0.00769,"68":0.01153,"69":0.00769,"70":0.00769,"71":0.03459,"72":0.01537,"73":0.01537,"74":0.04227,"75":0.00384,"76":0.01153,"77":0.00384,"78":0.00769,"79":0.69943,"80":0.05765,"81":0.01537,"83":0.03074,"84":0.06149,"85":0.02306,"86":0.14603,"87":0.06533,"88":0.04612,"89":0.0269,"90":0.0269,"91":0.09223,"92":0.05765,"93":0.4112,"94":0.0538,"95":0.06917,"96":0.60335,"97":6.79827,"98":14.69948,"99":0.00769,"100":0.0269,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 58 59 62 101"},F:{"46":0.00769,"68":0.00384,"74":0.01153,"77":0.00769,"78":0.00384,"79":0.01537,"81":0.01153,"82":0.50728,"83":2.11365,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 75 76 80 9.5-9.6 10.5 10.6 11.1 11.5","10.0-10.1":0,"11.6":0.37661,"12.1":0.00769},B:{"16":0.00384,"18":0.01537,"83":0.00384,"84":0.00769,"85":0.00384,"86":0.00384,"88":0.00384,"89":0.01153,"90":0.00769,"91":0.00769,"92":0.00769,"93":0.00384,"94":0.00384,"95":0.00769,"96":0.01922,"97":0.34971,"98":1.37579,_:"12 13 14 15 17 79 80 81 87"},E:{"4":0,"13":0.01922,"14":0.12298,"15":0.07686,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1","5.1":0.23827,"12.1":0.01153,"13.1":0.0807,"14.1":0.39583,"15.1":0.19984,"15.2-15.3":0.27285,"15.4":0.0269},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00254,"8.1-8.4":0.0038,"9.0-9.2":0.00127,"9.3":0.01648,"10.0-10.2":0.01014,"10.3":0.02282,"11.0-11.2":0.01648,"11.3-11.4":0.02029,"12.0-12.1":0.03043,"12.2-12.5":0.60859,"13.0-13.1":0.03677,"13.2":0.02409,"13.3":0.12425,"13.4-13.7":0.3119,"14.0-14.4":1.15506,"14.5-14.8":2.96182,"15.0-15.1":2.75388,"15.2-15.3":4.54669,"15.4":0.02789},P:{"4":0.08272,"5.0-5.4":0.01022,"6.2-6.4":0.01034,"7.2-7.4":0.21713,"8.2":0.08049,"9.2":0.04136,"10.1":0.03067,"11.1-11.2":0.14475,"12.0":0.0517,"13.0":0.15509,"14.0":0.22747,"15.0":0.16543,"16.0":1.84043},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00112,"4.2-4.3":0.00336,"4.4":0,"4.4.3-4.4.4":0.01399},A:{"9":0.00392,"11":0.18054,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01591,_:"11"},R:{_:"0"},M:{"0":0.08618},Q:{"10.4":0.00616},O:{"0":0.31396},H:{"0":0.22147},L:{"0":39.32082},S:{"2.5":0}}; +module.exports={C:{"51":0.00839,"52":0.30631,"55":0.0042,"56":0.00839,"74":0.0042,"78":0.04616,"81":0.00839,"82":0.0042,"83":0.0042,"84":0.00839,"85":0.00839,"86":0.00839,"87":0.0042,"88":0.00839,"89":0.00839,"90":0.0042,"91":0.03776,"92":0.0042,"93":0.00839,"94":0.05874,"95":0.01678,"96":0.01678,"97":0.01678,"98":0.02937,"99":0.02518,"100":0.15525,"101":1.49378,"102":0.05035,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 53 54 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 79 80 103 104 3.5 3.6"},D:{"34":0.0042,"45":0.0042,"49":0.02937,"57":0.0042,"59":0.0042,"63":0.0042,"64":0.01259,"65":0.01259,"68":0.00839,"69":0.0042,"70":0.0042,"71":0.02937,"72":0.00839,"74":0.11749,"76":0.0042,"77":0.01259,"78":0.01678,"79":0.06294,"80":0.07972,"81":0.08392,"83":0.1091,"84":0.11329,"85":0.09651,"86":0.214,"87":0.17204,"88":0.09651,"89":0.09651,"90":0.15945,"91":0.15945,"92":0.11749,"93":0.04196,"94":0.07133,"95":0.06714,"96":0.15945,"97":0.19721,"98":0.16364,"99":0.33148,"100":0.86018,"101":1.28817,"102":18.7729,"103":1.72875,"104":0.02098,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 46 47 48 50 51 52 53 54 55 56 58 60 61 62 66 67 73 75 105 106"},F:{"36":0.00839,"46":0.0042,"68":0.01259,"70":0.00839,"71":0.01259,"72":0.0042,"73":0.00839,"74":0.02098,"75":0.00839,"76":0.00839,"77":0.01678,"78":0.02098,"79":0.01259,"80":0.00839,"81":0.0042,"82":0.02937,"83":0.01678,"84":0.01259,"85":0.15945,"86":0.50352,"87":1.81687,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 9.5-9.6 10.5 10.6 11.1 11.5 12.1","10.0-10.1":0,"11.6":0.60842},B:{"18":0.00839,"84":0.04616,"85":0.04616,"86":0.03357,"87":0.04196,"88":0.03776,"89":0.04196,"90":0.04196,"91":0.05455,"92":0.03776,"93":0.02518,"94":0.03357,"95":0.03357,"96":0.05455,"97":0.03776,"98":0.05874,"99":0.01259,"100":0.02098,"101":0.23078,"102":1.2588,"103":0.25596,_:"12 13 14 15 16 17 79 80 81 83"},E:{"4":0,"13":0.08812,"14":0.14266,"15":0.05035,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1","5.1":0.15945,"12.1":0.01259,"13.1":0.11749,"14.1":0.19721,"15.1":0.15945,"15.2-15.3":0.05874,"15.4":0.36925,"15.5":0.68395,"16.0":0.0042},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00134,"8.1-8.4":0.0107,"9.0-9.2":0.00134,"9.3":0.02407,"10.0-10.2":0.00802,"10.3":0.0361,"11.0-11.2":0.02674,"11.3-11.4":0.0254,"12.0-12.1":0.01872,"12.2-12.5":0.46526,"13.0-13.1":0.08022,"13.2":0.04679,"13.3":0.10562,"13.4-13.7":0.26873,"14.0-14.4":0.72998,"14.5-14.8":1.35034,"15.0-15.1":0.6618,"15.2-15.3":0.96663,"15.4":2.64853,"15.5":5.78239,"16.0":0.07888},P:{"4":0.11386,"5.0-5.4":0.04029,"6.2-6.4":0.05036,"7.2-7.4":0.08281,"8.2":0.07051,"9.2":0.01035,"10.1":0.03259,"11.1-11.2":0.08281,"12.0":0.0207,"13.0":0.11386,"14.0":0.10351,"15.0":0.08281,"16.0":0.35194,"17.0":1.66655},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00256,"4.2-4.3":0.00341,"4.4":0,"4.4.3-4.4.4":0.02305},A:{"8":0.00874,"11":0.09616,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.01161},O:{"0":0.39467},H:{"0":0.30771},L:{"0":40.39514},S:{"2.5":0},R:{_:"0"},M:{"0":0.20894}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LA.js index 3364e8fa240c27..9dc69af4a88fc0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LA.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LA.js @@ -1 +1 @@ -module.exports={C:{"43":0.00583,"44":0.00291,"48":0.00291,"52":0.04371,"66":0.00291,"69":0.00291,"71":0.20107,"72":0.00583,"78":0.03205,"81":0.00874,"84":0.01166,"91":0.01748,"92":0.00291,"93":0.00291,"94":0.05828,"95":0.02914,"96":0.56823,"97":1.57356,"98":0.04371,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 70 73 74 75 76 77 79 80 82 83 85 86 87 88 89 90 99 3.5 3.6"},D:{"26":0.00291,"33":0.00583,"37":0.00874,"43":0.03788,"47":0.00291,"49":0.02331,"53":0.00291,"56":0.01166,"58":0.00291,"63":0.03497,"65":0.01166,"66":0.00291,"68":0.00291,"69":0.0204,"70":0.00874,"71":0.00583,"72":0.00874,"73":0.00583,"74":0.01166,"75":0.01457,"76":0.00874,"77":0.00291,"78":0.03788,"79":0.02331,"80":0.04662,"81":0.01748,"83":0.02623,"84":0.00874,"85":0.00583,"86":0.05245,"87":0.05245,"88":0.02331,"89":0.01457,"90":0.02331,"91":0.02914,"92":0.10782,"93":0.02331,"94":0.04371,"95":0.0408,"96":0.46624,"97":5.44918,"98":13.20916,"99":0.01748,"100":0.01457,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 35 36 38 39 40 41 42 44 45 46 48 50 51 52 54 55 57 59 60 61 62 64 67 101"},F:{"82":0.02331,"83":0.3963,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00291,"13":0.03205,"14":0.00583,"15":0.00583,"16":0.01457,"17":0.01166,"18":0.02914,"84":0.00583,"85":0.00291,"86":0.00583,"89":0.01166,"91":0.01166,"92":0.01748,"94":0.00583,"95":0.00874,"96":0.0204,"97":0.50995,"98":1.88244,_:"79 80 81 83 87 88 90 93"},E:{"4":0,"12":0.03788,"13":0.01166,"14":0.11656,"15":0.0408,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 15.4","9.1":0.00583,"10.1":0.03788,"11.1":0.00874,"12.1":0.04371,"13.1":0.09033,"14.1":0.20981,"15.1":0.11656,"15.2-15.3":0.23603},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00491,"7.0-7.1":0.00491,"8.1-8.4":0,"9.0-9.2":0.00123,"9.3":0.0785,"10.0-10.2":0.01717,"10.3":0.06624,"11.0-11.2":0.06869,"11.3-11.4":0.10058,"12.0-12.1":0.06256,"12.2-12.5":1.52468,"13.0-13.1":0.05152,"13.2":0.01104,"13.3":0.14474,"13.4-13.7":0.52008,"14.0-14.4":1.29408,"14.5-14.8":2.99784,"15.0-15.1":1.96013,"15.2-15.3":3.32412,"15.4":0.02576},P:{"4":0.39876,"5.0-5.4":0.03067,"6.2-6.4":0.03067,"7.2-7.4":0.23517,"8.2":0.01022,"9.2":0.07157,"10.1":0.02045,"11.1-11.2":0.17382,"12.0":0.11247,"13.0":0.15337,"14.0":0.38854,"15.0":0.28629,"16.0":1.85066},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00394,"4.2-4.3":0.00262,"4.4":0,"4.4.3-4.4.4":0.02887},A:{"10":0.01153,"11":0.25947,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.20549},Q:{"10.4":0.12755},O:{"0":1.60144},H:{"0":0.30189},L:{"0":50.6704},S:{"2.5":0}}; +module.exports={C:{"4":0.01152,"50":0.01152,"51":0.0144,"52":0.03455,"78":0.00864,"81":0.00288,"82":0.00288,"84":0.00576,"85":0.00576,"88":0.00576,"89":0.00288,"91":0.00864,"92":0.00288,"94":0.0144,"95":0.00288,"96":0.00288,"97":0.00576,"98":0.01727,"99":0.03455,"100":0.14395,"101":1.31282,"102":0.1094,"103":0.01152,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 83 86 87 90 93 104 3.5 3.6"},D:{"33":0.00864,"37":0.00576,"38":0.02015,"43":0.04319,"49":0.01152,"52":0.00288,"54":0.00288,"55":0.00576,"56":0.08637,"57":0.00576,"58":0.00864,"60":0.00576,"62":0.00576,"63":0.02591,"65":0.00576,"67":0.00576,"68":0.00576,"69":0.02591,"70":0.00864,"71":0.00576,"72":0.00864,"74":0.01152,"75":0.00864,"76":0.0144,"77":0.00576,"78":0.00576,"79":0.04894,"80":0.02591,"81":0.03455,"83":0.04894,"84":0.03455,"85":0.02015,"86":0.06334,"87":0.03455,"88":0.04031,"89":0.02879,"90":0.05758,"91":0.06622,"92":0.0547,"93":0.02591,"94":0.03455,"95":0.02591,"96":0.11516,"97":0.13531,"98":0.08925,"99":0.13819,"100":0.31957,"101":0.9184,"102":16.02164,"103":1.48269,"104":0.02879,"105":0.00288,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 39 40 41 42 44 45 46 47 48 50 51 53 59 61 64 66 73 106"},F:{"28":0.0144,"44":0.00576,"46":0.00288,"73":0.00288,"79":0.00288,"85":0.02591,"86":0.03455,"87":0.28214,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 78 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00576,"13":0.00576,"14":0.00864,"15":0.01152,"16":0.0144,"17":0.01727,"18":0.03455,"81":0.00576,"84":0.02015,"85":0.01152,"86":0.01152,"87":0.0144,"88":0.01152,"89":0.01152,"90":0.01727,"91":0.01727,"92":0.03455,"93":0.00864,"94":0.00864,"95":0.00864,"96":0.02303,"97":0.01152,"98":0.02015,"99":0.01152,"100":0.02015,"101":0.23896,"102":1.7274,"103":0.3426,_:"79 80 83"},E:{"4":0,"10":0.00864,"12":0.02591,"13":0.03455,"14":0.04894,"15":0.02879,_:"0 5 6 7 8 9 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00576,"12.1":0.02591,"13.1":0.06046,"14.1":0.16122,"15.1":0.0547,"15.2-15.3":0.03455,"15.4":0.16698,"15.5":0.61899},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00699,"7.0-7.1":0.00233,"8.1-8.4":0.00117,"9.0-9.2":0.0035,"9.3":0.10837,"10.0-10.2":0.02447,"10.3":0.16197,"11.0-11.2":0.0571,"11.3-11.4":0.03612,"12.0-12.1":0.07341,"12.2-12.5":1.20488,"13.0-13.1":0.08273,"13.2":0.0303,"13.3":0.11886,"13.4-13.7":0.33326,"14.0-14.4":0.93221,"14.5-14.8":1.33539,"15.0-15.1":0.49873,"15.2-15.3":0.84365,"15.4":1.70944,"15.5":4.03296,"16.0":0.02913},P:{"4":0.29642,"5.0-5.4":0.01028,"6.2-6.4":0.02044,"7.2-7.4":0.26576,"8.2":0.03083,"9.2":0.05111,"10.1":0.01022,"11.1-11.2":0.11243,"12.0":0.06133,"13.0":0.12266,"14.0":0.17376,"15.0":0.1431,"16.0":0.55195,"17.0":1.52298},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.01506,"4.4":0,"4.4.3-4.4.4":0.06326},A:{"8":0.01008,"11":0.23176,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.0712},O:{"0":1.23888},H:{"0":0.40445},L:{"0":55.69848},S:{"2.5":0},R:{_:"0"},M:{"0":0.14952}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LB.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LB.js index eefe4835b72e9e..1f5a1828273a96 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LB.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LB.js @@ -1 +1 @@ -module.exports={C:{"2":0.00325,"43":0.00325,"47":0.00325,"48":0.00325,"52":0.04868,"58":0.00649,"67":0.00325,"72":0.00974,"78":0.02596,"79":0.00325,"84":0.00325,"88":0.00649,"89":0.00325,"91":0.03245,"94":0.01947,"95":0.01623,"96":0.76258,"97":0.98973,"98":0.01623,_:"3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 49 50 51 53 54 55 56 57 59 60 61 62 63 64 65 66 68 69 70 71 73 74 75 76 77 80 81 82 83 85 86 87 90 92 93 99 3.5","3.6":0.00649},D:{"4":0.01298,"5":0.00325,"6":0.00325,"11":0.00325,"34":0.00325,"38":0.00649,"43":0.00325,"49":0.06166,"55":0.00325,"58":0.00325,"60":0.00649,"63":0.00325,"65":0.01623,"66":0.00325,"67":0.00974,"68":0.00649,"69":0.00649,"70":0.00649,"72":0.00649,"73":0.00974,"74":0.00649,"75":0.00649,"76":0.00325,"77":0.00649,"78":0.00649,"79":0.04219,"80":0.02596,"81":0.02272,"83":0.01947,"84":0.01623,"85":0.04543,"86":0.02596,"87":0.04868,"88":0.01947,"89":0.01947,"90":0.02596,"91":0.08762,"92":0.05517,"93":0.01623,"94":0.03245,"95":0.06166,"96":0.45106,"97":6.02272,"98":14.39807,"99":0.00974,"100":0.01623,_:"7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 53 54 56 57 59 61 62 64 71 101"},F:{"9":0.00325,"69":0.00974,"79":0.00649,"82":0.13629,"83":0.52245,_:"11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 78 80 81 10.5 10.6 11.1 11.5 11.6 12.1","9.5-9.6":0.00649,"10.0-10.1":0},B:{"12":0.00649,"13":0.00649,"14":0.00649,"15":0.00974,"16":0.00325,"17":0.00974,"18":0.04219,"84":0.00325,"89":0.00649,"90":0.00974,"92":0.01623,"94":0.00649,"95":0.00974,"96":0.02921,"97":0.62304,"98":2.35263,_:"79 80 81 83 85 86 87 88 91 93"},E:{"4":0.00649,"5":0.00649,"10":0.00325,"11":0.00325,"12":0.00649,"13":0.03894,"14":0.21093,"15":0.1006,_:"0 6 7 8 9 3.2 6.1 7.1","3.1":0.00649,"5.1":0.00974,"9.1":0.00325,"10.1":0.00974,"11.1":0.0357,"12.1":0.08762,"13.1":0.17523,"14.1":0.66198,"15.1":0.25311,"15.2-15.3":0.45755,"15.4":0.00649},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.03905,"6.0-6.1":0.00434,"7.0-7.1":0.03761,"8.1-8.4":0.00434,"9.0-9.2":0.00289,"9.3":0.07088,"10.0-10.2":0.01013,"10.3":0.07955,"11.0-11.2":0.02604,"11.3-11.4":0.06654,"12.0-12.1":0.05496,"12.2-12.5":0.94163,"13.0-13.1":0.02025,"13.2":0.00723,"13.3":0.06075,"13.4-13.7":0.23577,"14.0-14.4":0.86497,"14.5-14.8":2.84514,"15.0-15.1":2.43869,"15.2-15.3":6.60877,"15.4":0.03616},P:{"4":0.18507,"5.0-5.4":0.03067,"6.2-6.4":0.03067,"7.2-7.4":0.2776,"8.2":0.01022,"9.2":0.05141,"10.1":0.01028,"11.1-11.2":0.19535,"12.0":0.07197,"13.0":0.24675,"14.0":0.28788,"15.0":0.23647,"16.0":4.26679},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00162,"4.2-4.3":0.00648,"4.4":0,"4.4.3-4.4.4":0.05269},A:{"6":0.00649,"7":0.00649,"8":0.00974,"9":0.00649,"11":0.21742,_:"10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.10808},Q:{"10.4":0},O:{"0":0.16888},H:{"0":0.23023},L:{"0":44.43901},S:{"2.5":0}}; +module.exports={C:{"12":0.00298,"52":0.03275,"78":0.02679,"84":0.02977,"87":0.00298,"88":0.00893,"89":0.01191,"90":0.00298,"91":0.02679,"92":0.00298,"94":0.00595,"96":0.00298,"97":0.00298,"98":0.00298,"99":0.02382,"100":0.1548,"101":1.4111,"102":0.05656,_:"2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 93 95 103 104 3.5 3.6"},D:{"38":0.01191,"49":0.04466,"63":0.00595,"64":0.00298,"65":0.03275,"67":0.00893,"68":0.00298,"69":0.00595,"70":0.00595,"73":0.00595,"74":0.00595,"75":0.00298,"76":0.00595,"79":0.04466,"80":0.01191,"81":0.01191,"83":0.02679,"84":0.01191,"85":0.01191,"86":0.02382,"87":0.05359,"88":0.01191,"89":0.02382,"90":0.01191,"91":0.05954,"92":0.03275,"93":0.01489,"94":0.02382,"95":0.02084,"96":0.05061,"97":0.05954,"98":0.06252,"99":0.09526,"100":0.19648,"101":1.06279,"102":16.09962,"103":1.47957,"104":0.00595,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 66 71 72 77 78 105 106"},F:{"46":0.00298,"85":0.02084,"86":0.15183,"87":0.34831,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00595,"14":0.00298,"15":0.00595,"16":0.00595,"17":0.00893,"18":0.02679,"84":0.00595,"85":0.00298,"89":0.00595,"90":0.00595,"91":0.00298,"92":0.01191,"95":0.00298,"96":0.00595,"97":0.00595,"98":0.00298,"99":0.00893,"100":0.01191,"101":0.23816,"102":1.65521,"103":0.33938,_:"13 79 80 81 83 86 87 88 93 94"},E:{"4":0,"9":0.00298,"12":0.00298,"13":0.02977,"14":0.16076,"15":0.04168,_:"0 5 6 7 8 10 11 3.1 3.2 6.1 7.1","5.1":0.01191,"9.1":0.00298,"10.1":0.00595,"11.1":0.01786,"12.1":0.05359,"13.1":0.14587,"14.1":0.3364,"15.1":0.10122,"15.2-15.3":0.1161,"15.4":0.39892,"15.5":0.80974,"16.0":0.02679},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00154,"6.0-6.1":0,"7.0-7.1":0.0216,"8.1-8.4":0,"9.0-9.2":0.00154,"9.3":0.12035,"10.0-10.2":0.00617,"10.3":0.11109,"11.0-11.2":0.01852,"11.3-11.4":0.04474,"12.0-12.1":0.03703,"12.2-12.5":0.82392,"13.0-13.1":0.01543,"13.2":0.00771,"13.3":0.08023,"13.4-13.7":0.14658,"14.0-14.4":0.49836,"14.5-14.8":1.49046,"15.0-15.1":0.45053,"15.2-15.3":0.95353,"15.4":2.51342,"15.5":8.02473,"16.0":0.03394},P:{"4":0.16367,"5.0-5.4":0.01028,"6.2-6.4":0.02044,"7.2-7.4":0.32734,"8.2":0.03083,"9.2":0.05115,"10.1":0.01022,"11.1-11.2":0.19436,"12.0":0.07161,"13.0":0.35803,"14.0":0.23528,"15.0":0.15344,"16.0":0.65468,"17.0":4.7362},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00171,"4.2-4.3":0.00342,"4.4":0,"4.4.3-4.4.4":0.05808},A:{"9":0.00298,"11":0.1429,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.22474},H:{"0":0.36569},L:{"0":49.29585},S:{"2.5":0},R:{_:"0"},M:{"0":0.12641}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LC.js index 42322a7f4ea0ed..4bce9c1822f0a7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LC.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LC.js @@ -1 +1 @@ -module.exports={C:{"56":0.00788,"87":0.24816,"89":0.00394,"91":0.00788,"95":0.05515,"96":0.4136,"97":0.59873,"98":0.03939,"99":0.05515,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 88 90 92 93 94 3.5 3.6"},D:{"34":0.01576,"49":0.01182,"51":0.00394,"63":0.00394,"69":0.06302,"71":0.00394,"75":0.01182,"76":0.33482,"77":0.0197,"78":0.01182,"79":0.19695,"80":0.01576,"81":0.11423,"83":0.01576,"84":0.02363,"85":0.01182,"86":0.02757,"87":0.00394,"88":0.03939,"89":0.0197,"90":0.01182,"91":0.03545,"92":0.02757,"93":0.1615,"94":0.15362,"95":0.07878,"96":0.59873,"97":7.05081,"98":15.15727,"99":0.08272,"100":0.03151,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 70 72 73 74 101"},F:{"28":0.02757,"82":0.06696,"83":0.74447,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.00394,"14":0.00788,"16":0.00788,"17":0.0197,"18":0.14968,"87":0.00394,"89":0.00394,"92":0.01576,"95":0.02363,"96":0.03151,"97":1.25654,"98":4.28563,_:"12 15 79 80 81 83 84 85 86 88 90 91 93 94"},E:{"4":0,"13":0.01182,"14":0.11817,"15":0.08272,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 15.4","5.1":0.00394,"10.1":0.02363,"11.1":0.00394,"12.1":0.0197,"13.1":0.18907,"14.1":0.62236,"15.1":0.19695,"15.2-15.3":0.90203},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00354,"6.0-6.1":0,"7.0-7.1":0.00236,"8.1-8.4":0,"9.0-9.2":0.0059,"9.3":0.15332,"10.0-10.2":0,"10.3":0.02713,"11.0-11.2":0.00472,"11.3-11.4":0.03184,"12.0-12.1":0.01415,"12.2-12.5":0.51304,"13.0-13.1":0.00118,"13.2":0.00354,"13.3":0.02948,"13.4-13.7":0.18752,"14.0-14.4":0.68287,"14.5-14.8":1.50727,"15.0-15.1":1.96251,"15.2-15.3":6.63527,"15.4":0.02713},P:{"4":0.16724,"5.0-5.4":0.01121,"6.2-6.4":0.01012,"7.2-7.4":0.68986,"8.2":0.03083,"9.2":0.03136,"10.1":0.03037,"11.1-11.2":0.20905,"12.0":0.0209,"13.0":0.14633,"14.0":0.20905,"15.0":0.36584,"16.0":5.94746},I:{"0":0,"3":0,"4":0.00155,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00052,"4.4":0,"4.4.3-4.4.4":0.04035},A:{"11":0.07484,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.2424},Q:{"10.4":0},O:{"0":0.24846},H:{"0":0.23523},L:{"0":41.07256},S:{"2.5":0}}; +module.exports={C:{"47":0.00796,"56":0.02786,"78":0.00796,"87":0.0199,"89":0.00398,"91":0.01194,"98":0.00398,"100":0.18706,"101":1.0547,"102":0.04776,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 90 92 93 94 95 96 97 99 103 104 3.5 3.6"},D:{"38":0.01592,"42":0.01194,"49":0.03184,"63":0.00796,"69":0.02786,"70":0.06368,"75":0.01592,"76":0.23482,"77":0.07562,"79":0.0597,"80":0.02786,"81":0.0796,"83":0.00796,"84":0.00796,"86":0.01592,"87":0.00796,"88":0.02786,"89":0.00796,"90":0.01194,"91":0.00398,"92":0.02786,"93":0.07562,"94":0.02786,"95":0.02388,"96":0.03582,"97":0.05572,"98":0.31442,"99":0.10348,"100":0.46964,"101":1.9701,"102":18.57466,"103":1.50444,"104":0.02786,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 71 72 73 74 78 85 105 106"},F:{"85":0.00398,"86":0.1393,"87":0.51342,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.00796,"17":0.0199,"18":0.20298,"92":0.0597,"95":0.00398,"96":0.00796,"97":0.00796,"98":0.00398,"99":0.01592,"100":0.22288,"101":0.85172,"102":4.15114,"103":0.71242,_:"12 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94"},E:{"4":0,"13":0.02388,"14":0.03582,"15":0.00398,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.11542,"11.1":0.00796,"12.1":0.01592,"13.1":0.1393,"14.1":0.15124,"15.1":0.0398,"15.2-15.3":0.03184,"15.4":0.58904,"15.5":0.89152},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00825,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.08719,"10.0-10.2":0,"10.3":0.03063,"11.0-11.2":0.00353,"11.3-11.4":0.00825,"12.0-12.1":0.00825,"12.2-12.5":0.43596,"13.0-13.1":0.00236,"13.2":0.00589,"13.3":0.02828,"13.4-13.7":0.05773,"14.0-14.4":0.2062,"14.5-14.8":0.60209,"15.0-15.1":0.12018,"15.2-15.3":0.44656,"15.4":1.99834,"15.5":7.57035,"16.0":0.04477},P:{"4":0.08275,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.38274,"8.2":0.01015,"9.2":0.02069,"10.1":0.01018,"11.1-11.2":0.14482,"12.0":0.02069,"13.0":0.0931,"14.0":0.16551,"15.0":0.10344,"16.0":0.45515,"17.0":4.70662},I:{"0":0,"3":0,"4":0.00032,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00129,"4.2-4.3":0.00032,"4.4":0,"4.4.3-4.4.4":0.01612},A:{"10":0.01194,"11":0.02388,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.21067},H:{"0":0.33051},L:{"0":46.53706},S:{"2.5":0},R:{_:"0"},M:{"0":0.20465}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LI.js index 84245199a2f815..79c88968c0f91f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LI.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LI.js @@ -1 +1 @@ -module.exports={C:{"54":0.17758,"77":0.41857,"78":0.06976,"89":0.01903,"91":0.06976,"93":0.00634,"94":0.11416,"95":0.09513,"96":2.35288,"97":4.49648,"98":0.01903,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 79 80 81 82 83 84 85 86 87 88 90 92 99 3.5 3.6"},D:{"49":0.83714,"56":0.01903,"65":0.00634,"72":0.18392,"73":0.06342,"79":0.1205,"81":0.01903,"83":0.00634,"84":0.05708,"87":0.00634,"89":0.06342,"90":0.02537,"91":0.10147,"92":0.11416,"93":0.22831,"94":0.05708,"95":0.02537,"96":0.69762,"97":8.82806,"98":20.62418,"99":0.01903,"100":0.13318,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 63 64 66 67 68 69 70 71 74 75 76 77 78 80 85 86 88 101"},F:{"81":0.04439,"82":0.38052,"83":1.54745,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.10147,"83":0.00634,"90":0.00634,"92":0.40589,"93":0.04439,"94":0.01268,"95":0.13318,"96":0.06342,"97":2.16262,"98":8.33339,_:"12 14 15 16 17 18 79 80 81 84 85 86 87 88 89 91"},E:{"4":0,"13":0.03171,"14":0.53907,"15":0.16489,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.27271,"12.1":0.03171,"13.1":1.14156,"14.1":1.3889,"15.1":0.93227,"15.2-15.3":2.6573,"15.4":0.01268},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02527,"10.0-10.2":0,"10.3":0.01608,"11.0-11.2":0.05743,"11.3-11.4":0.0023,"12.0-12.1":0.01149,"12.2-12.5":0.23892,"13.0-13.1":0.00689,"13.2":0,"13.3":0.06662,"13.4-13.7":0.07351,"14.0-14.4":0.86379,"14.5-14.8":4.51193,"15.0-15.1":3.27368,"15.2-15.3":13.6185,"15.4":0.20216},P:{"4":0.03167,"5.0-5.4":0.89089,"6.2-6.4":0.05053,"7.2-7.4":0.56594,"8.2":0.01022,"9.2":0.11117,"10.1":0.05053,"11.1-11.2":0.27286,"12.0":0.09095,"13.0":0.12667,"14.0":0.03167,"15.0":0.32339,"16.0":2.3962},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00216,"4.4":0,"4.4.3-4.4.4":0.04174},A:{"11":0.241,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.25606},Q:{"10.4":0},O:{"0":0},H:{"0":0.52986},L:{"0":10.09171},S:{"2.5":0}}; +module.exports={C:{"78":0.03242,"84":0.05835,"91":0.12966,"94":0.02593,"95":0.02593,"96":0.01297,"97":0.01945,"98":0.03242,"99":0.03242,"100":1.14101,"101":8.96599,"102":0.18152,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 89 90 92 93 103 104 3.5 3.6"},D:{"49":0.76499,"70":0.00648,"79":0.18801,"84":0.09076,"85":0.01297,"87":0.01297,"90":0.01945,"91":0.01945,"92":0.0389,"93":0.00648,"95":0.11669,"96":0.03242,"97":0.10373,"98":0.11669,"99":0.05186,"100":0.89465,"101":1.6013,"102":23.65647,"103":1.61427,"104":0.05835,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 80 81 83 86 88 89 94 105 106"},F:{"36":0.04538,"85":0.00648,"86":0.32415,"87":1.11508,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00648},B:{"90":0.01945,"91":0.01297,"97":0.05186,"98":0.62237,"100":0.40843,"101":1.0308,"102":7.33227,"103":1.80876,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 92 93 94 95 96 99"},E:{"4":0,"13":0.0389,"14":0.55106,"15":0.22042,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.02593,"11.1":0.95948,"12.1":0.05835,"13.1":0.9141,"14.1":0.99838,"15.1":0.49919,"15.2-15.3":0.40843,"15.4":0.96597,"15.5":4.55107,"16.0":0.01297},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.00434,"9.3":0,"10.0-10.2":0,"10.3":0.00651,"11.0-11.2":0.01303,"11.3-11.4":0.01303,"12.0-12.1":0,"12.2-12.5":0.25402,"13.0-13.1":0,"13.2":0,"13.3":0.00651,"13.4-13.7":0.07165,"14.0-14.4":0.7816,"14.5-14.8":1.02043,"15.0-15.1":0.29527,"15.2-15.3":2.86588,"15.4":3.50202,"15.5":12.77706,"16.0":0.02171},P:{"4":0.22471,"5.0-5.4":0.03107,"6.2-6.4":0.05107,"7.2-7.4":0.34728,"8.2":0.01021,"9.2":0.04086,"10.1":0.03064,"11.1-11.2":0.15321,"12.0":0.04086,"13.0":0.13278,"14.0":0.25535,"15.0":0.12257,"16.0":0.01052,"17.0":2.31422},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00239,"4.2-4.3":0.0004,"4.4":0,"4.4.3-4.4.4":0.01127},A:{"11":0.29174,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.43619},L:{"0":10.58023},S:{"2.5":0},R:{_:"0"},M:{"0":0.56624}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LK.js index 64df55c8757b60..04b25cc53bae3f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LK.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LK.js @@ -1 +1 @@ -module.exports={C:{"41":0.0038,"52":0.02663,"56":0.0038,"78":0.00761,"88":0.00761,"89":0.01141,"90":0.0038,"91":0.0989,"92":0.00761,"93":0.06847,"94":0.01141,"95":0.02282,"96":0.61625,"97":0.97763,"98":0.04945,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 99 3.5 3.6"},D:{"22":0.0038,"38":0.00761,"49":0.01522,"63":0.01141,"65":0.01141,"67":0.00761,"68":0.00761,"70":0.00761,"71":0.0038,"74":0.01141,"75":0.00761,"76":0.0038,"77":0.00761,"78":0.00761,"79":0.02282,"80":0.01522,"81":0.04945,"83":0.02282,"84":0.01141,"85":0.01902,"86":0.03043,"87":0.04184,"88":0.01902,"89":0.01902,"90":0.02663,"91":0.03424,"92":0.05326,"93":0.07228,"94":0.03804,"95":0.04565,"96":0.34997,"97":6.4706,"98":16.02245,"99":0.01902,"100":0.00761,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 66 69 72 73 101"},F:{"72":0.0038,"79":0.00761,"80":0.01141,"82":0.11412,"83":1.01947,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00761,"13":0.0038,"14":0.0038,"15":0.0038,"16":0.00761,"17":0.0038,"18":0.03043,"84":0.01141,"85":0.0038,"88":0.0038,"89":0.00761,"90":0.0038,"91":0.00761,"92":0.01902,"93":0.0038,"94":0.00761,"95":0.01522,"96":0.05706,"97":2.1873,"98":7.33031,_:"79 80 81 83 86 87"},E:{"4":0,"13":0.03043,"14":0.04945,"15":0.03804,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 15.4","5.1":0.0038,"11.1":0.0038,"12.1":0.01141,"13.1":0.03804,"14.1":0.14836,"15.1":0.07608,"15.2-15.3":0.13694},G:{"8":0.00053,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00053,"5.0-5.1":0,"6.0-6.1":0.00212,"7.0-7.1":0.00582,"8.1-8.4":0.00371,"9.0-9.2":0.00265,"9.3":0.036,"10.0-10.2":0.00794,"10.3":0.03811,"11.0-11.2":0.03282,"11.3-11.4":0.02858,"12.0-12.1":0.02964,"12.2-12.5":0.47853,"13.0-13.1":0.02806,"13.2":0.01535,"13.3":0.07093,"13.4-13.7":0.17045,"14.0-14.4":0.55688,"14.5-14.8":0.90466,"15.0-15.1":0.96289,"15.2-15.3":1.90354,"15.4":0.01165},P:{"4":0.64575,"5.0-5.4":0.05095,"6.2-6.4":0.03075,"7.2-7.4":0.9635,"8.2":0.01009,"9.2":0.082,"10.1":0.03075,"11.1-11.2":0.31775,"12.0":0.07175,"13.0":0.25625,"14.0":0.369,"15.0":0.287,"16.0":1.36325},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00123,"4.2-4.3":0.00339,"4.4":0,"4.4.3-4.4.4":0.04495},A:{"11":0.03424,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.13631},Q:{"10.4":0},O:{"0":1.73488},H:{"0":1.59554},L:{"0":49.28983},S:{"2.5":0}}; +module.exports={C:{"52":0.01918,"56":0.00767,"72":0.00384,"78":0.00767,"88":0.00384,"89":0.00767,"91":0.01918,"92":0.00767,"93":0.0767,"94":0.00384,"95":0.00384,"96":0.00384,"97":0.01151,"98":0.00767,"99":0.03835,"100":0.1534,"101":1.32308,"102":0.12656,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 90 103 104 3.5 3.6"},D:{"22":0.00384,"49":0.01151,"60":0.00384,"63":0.00767,"65":0.00767,"68":0.00384,"69":0.00384,"70":0.00767,"71":0.00384,"73":0.00384,"74":0.02685,"75":0.00384,"76":0.00767,"77":0.00767,"78":0.00767,"79":0.02301,"80":0.01918,"81":0.04602,"83":0.01151,"84":0.00767,"85":0.00767,"86":0.02685,"87":0.03452,"88":0.01534,"89":0.01534,"90":0.03068,"91":0.03452,"92":0.03835,"93":0.02685,"94":0.01918,"95":0.02685,"96":0.08054,"97":0.04986,"98":0.05369,"99":0.08054,"100":0.16491,"101":0.84754,"102":18.71097,"103":1.83697,"104":0.00767,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 61 62 64 66 67 72 105 106"},F:{"79":0.00767,"82":0.00384,"84":0.00767,"85":0.04219,"86":0.14573,"87":0.85904,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00767,"16":0.02301,"17":0.00384,"18":0.03068,"84":0.00767,"89":0.00767,"92":0.03068,"96":0.00767,"97":0.01534,"98":0.01534,"99":0.01151,"100":0.01918,"101":1.18885,"102":8.22608,"103":1.54551,_:"13 14 15 79 80 81 83 85 86 87 88 90 91 93 94 95"},E:{"4":0,"13":0.00767,"14":0.03835,"15":0.01534,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.00767,"13.1":0.03068,"14.1":0.09204,"15.1":0.02301,"15.2-15.3":0.02301,"15.4":0.11122,"15.5":0.18792},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00248,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00497,"8.1-8.4":0.00248,"9.0-9.2":0.00124,"9.3":0.03041,"10.0-10.2":0.00434,"10.3":0.036,"11.0-11.2":0.018,"11.3-11.4":0.02172,"12.0-12.1":0.03041,"12.2-12.5":0.4661,"13.0-13.1":0.02669,"13.2":0.01676,"13.3":0.07324,"13.4-13.7":0.14957,"14.0-14.4":0.44066,"14.5-14.8":0.59271,"15.0-15.1":0.37114,"15.2-15.3":0.50396,"15.4":1.03957,"15.5":2.3423,"16.0":0.0149},P:{"4":0.58625,"5.0-5.4":0.01015,"6.2-6.4":0.02057,"7.2-7.4":0.80224,"8.2":0.03086,"9.2":0.072,"10.1":0.03086,"11.1-11.2":0.24684,"12.0":0.04114,"13.0":0.2057,"14.0":0.24684,"15.0":0.13371,"16.0":0.51426,"17.0":1.22394},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00065,"4.2-4.3":0.00172,"4.4":0,"4.4.3-4.4.4":0.02845},A:{"11":0.02685,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.42412},H:{"0":1.42414},L:{"0":49.11823},S:{"2.5":0},R:{_:"0"},M:{"0":0.11714}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LR.js index 9358bb614607c7..3d3940b9b2b303 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LR.js @@ -1 +1 @@ -module.exports={C:{"24":0.00888,"31":0.00222,"43":0.00222,"47":0.00888,"49":0.00222,"51":0.04886,"60":0.00444,"66":0.00444,"68":0.00888,"72":0.00666,"78":0.00666,"88":0.00444,"91":0.01333,"94":0.02221,"95":0.01999,"96":0.45975,"97":0.55081,"98":0.02443,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 44 45 46 48 50 52 53 54 55 56 57 58 59 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 99 3.5 3.6"},D:{"11":0.01333,"30":0.00888,"33":0.00444,"38":0.00222,"39":0.00444,"43":0.00444,"45":0.00222,"47":0.00222,"49":0.00444,"51":0.00888,"52":0.00444,"57":0.00666,"58":0.00444,"60":0.00444,"61":0.02443,"63":0.00666,"64":0.03332,"67":0.00444,"68":0.00444,"69":0.00888,"71":0.00888,"72":0.00666,"73":0.00222,"74":0.03109,"75":0.02221,"76":0.03332,"77":0.01333,"78":0.02443,"79":0.01777,"80":0.01333,"81":0.01999,"85":0.01777,"86":0.01777,"87":0.06441,"88":0.02221,"89":0.01333,"90":0.02887,"91":0.01999,"92":0.05775,"93":0.01555,"94":0.03554,"95":0.02221,"96":0.21544,"97":3.16048,"98":5.33484,"99":0.00222,"100":0.00666,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 34 35 36 37 40 41 42 44 46 48 50 53 54 55 56 59 62 65 66 70 83 84 101"},F:{"18":0.00222,"46":0.00444,"63":0.00444,"68":0.00888,"72":0.01111,"79":0.01777,"82":0.02665,"83":0.39756,_:"9 11 12 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 65 66 67 69 70 71 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.09995,"13":0.03109,"14":0.02665,"15":0.03554,"16":0.0422,"17":0.01333,"18":0.15103,"80":0.00444,"83":0.00666,"84":0.01111,"85":0.01333,"88":0.00666,"89":0.03776,"90":0.01555,"91":0.01777,"92":0.04664,"93":0.01333,"94":0.05553,"95":0.01777,"96":0.07551,"97":0.63965,"98":1.53693,_:"79 81 86 87"},E:{"4":0,"10":0.00222,"13":0.01333,"14":0.03109,"15":0.03998,_:"0 5 6 7 8 9 11 12 3.1 3.2 5.1 6.1 7.1 10.1 15.4","9.1":0.00666,"11.1":0.00666,"12.1":0.00888,"13.1":0.01111,"14.1":0.08218,"15.1":0.02221,"15.2-15.3":0.02221},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00742,"6.0-6.1":0,"7.0-7.1":0.00834,"8.1-8.4":0,"9.0-9.2":0.00185,"9.3":0.13534,"10.0-10.2":0.01205,"10.3":0.02595,"11.0-11.2":0.03893,"11.3-11.4":0.01576,"12.0-12.1":0.08713,"12.2-12.5":1.01779,"13.0-13.1":0.05098,"13.2":0.02225,"13.3":0.33463,"13.4-13.7":0.2957,"14.0-14.4":1.6991,"14.5-14.8":2.81608,"15.0-15.1":1.05858,"15.2-15.3":1.63792,"15.4":0.00556},P:{"4":0.08287,"5.0-5.4":0.89089,"6.2-6.4":0.01036,"7.2-7.4":0.14503,"8.2":0.01022,"9.2":0.0518,"10.1":0.02072,"11.1-11.2":0.10359,"12.0":0.05073,"13.0":0.04144,"14.0":0.07251,"15.0":0.09323,"16.0":0.82874},I:{"0":0,"3":0,"4":0.00255,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00102,"4.4":0,"4.4.3-4.4.4":0.02754},A:{"8":0.00222,"11":0.14214,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.14778},Q:{"10.4":0},O:{"0":1.29893},H:{"0":6.75252},L:{"0":64.39758},S:{"2.5":0.24112}}; +module.exports={C:{"32":0.0023,"39":0.0023,"42":0.0023,"43":0.0023,"45":0.02303,"47":0.00461,"48":0.00691,"56":0.00461,"74":0.01612,"80":0.0023,"90":0.00461,"91":0.0023,"97":0.00921,"98":0.01152,"99":0.01612,"100":0.14739,"101":0.78072,"102":0.05297,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 38 40 41 44 46 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 81 82 83 84 85 86 87 88 89 92 93 94 95 96 103 104 3.5 3.6"},D:{"28":0.0023,"43":0.0023,"47":0.00691,"50":0.0023,"55":0.0023,"57":0.00921,"59":0.0023,"60":0.01152,"61":0.01152,"63":0.00691,"64":0.08291,"68":0.0023,"69":0.00461,"70":0.00691,"71":0.01612,"72":0.01152,"73":0.00461,"74":0.00921,"75":0.03685,"76":0.03224,"78":0.00921,"79":0.00921,"80":0.05527,"81":0.00921,"83":0.00691,"84":0.01152,"85":0.00921,"86":0.05067,"87":0.00691,"88":0.02303,"89":0.00691,"90":0.01382,"91":0.01152,"92":0.02994,"93":0.02533,"94":0.01382,"95":0.01382,"96":0.02994,"97":0.04145,"98":0.25794,"99":0.12897,"100":0.12667,"101":0.62181,"102":6.77082,"103":1.02944,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 48 49 51 52 53 54 56 58 62 65 66 67 77 104 105 106"},F:{"36":0.0023,"37":0.0023,"42":0.0023,"53":0.00461,"80":0.0023,"85":0.02303,"86":0.01842,"87":0.28097,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 38 39 40 41 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.0023},B:{"12":0.08291,"13":0.08521,"14":0.01152,"15":0.02764,"16":0.02533,"17":0.02533,"18":0.25563,"80":0.00691,"84":0.04145,"85":0.00691,"87":0.00461,"88":0.00461,"89":0.02073,"90":0.01612,"92":0.10364,"93":0.0023,"94":0.01612,"95":0.00691,"96":0.00921,"97":0.01612,"98":0.00921,"99":0.04606,"100":0.07139,"101":0.35466,"102":2.05197,"103":0.3063,_:"79 81 83 86 91"},E:{"4":0,"10":0.0023,"12":0.00461,"13":0.01152,"14":0.01382,"15":0.00461,_:"0 5 6 7 8 9 11 3.1 3.2 5.1 6.1 9.1 10.1 12.1 15.2-15.3 16.0","7.1":0.0023,"11.1":0.01152,"13.1":0.02073,"14.1":0.22569,"15.1":0.01382,"15.4":0.03224,"15.5":0.04376},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01616,"8.1-8.4":0.00346,"9.0-9.2":0,"9.3":0.07616,"10.0-10.2":0.00462,"10.3":0.04962,"11.0-11.2":0.01962,"11.3-11.4":0.01731,"12.0-12.1":0.11193,"12.2-12.5":0.69928,"13.0-13.1":0.09693,"13.2":0.03116,"13.3":0.15693,"13.4-13.7":0.3381,"14.0-14.4":2.06785,"14.5-14.8":2.74405,"15.0-15.1":0.88507,"15.2-15.3":1.1597,"15.4":1.65589,"15.5":1.38357,"16.0":0.01269},P:{"4":0.40395,"5.0-5.4":0.03107,"6.2-6.4":0.04084,"7.2-7.4":0.08286,"8.2":0.01021,"9.2":0.0725,"10.1":0.03107,"11.1-11.2":0.06215,"12.0":0.02072,"13.0":0.05179,"14.0":0.09322,"15.0":0.04143,"16.0":0.21751,"17.0":0.56967},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00243,"4.2-4.3":0.00122,"4.4":0,"4.4.3-4.4.4":0.04254},A:{"10":0.00236,"11":0.08976,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.63115},H:{"0":5.79318},L:{"0":64.25818},S:{"2.5":0.17703},R:{_:"0"},M:{"0":0.05388}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LS.js index 119e5fa14f0b5a..1b3ccc86f8b337 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LS.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LS.js @@ -1 +1 @@ -module.exports={C:{"29":0.01582,"45":0.01582,"52":0.01266,"56":0.00316,"85":0.00633,"88":0.03797,"90":0.02215,"91":0.01266,"93":0.00316,"95":0.03797,"96":0.43347,"97":0.62014,"98":0.01898,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 89 92 94 99 3.5 3.6"},D:{"34":0.00316,"43":0.00633,"49":0.06012,"56":0.00633,"58":0.00949,"63":0.01582,"69":0.00633,"70":0.03797,"71":0.01898,"72":0.00316,"74":0.06961,"75":0.03797,"78":0.00633,"79":0.04113,"80":0.02215,"81":0.04746,"83":0.00949,"85":0.00949,"86":0.09176,"87":0.2373,"88":0.02215,"89":0.01898,"90":0.03164,"91":0.07277,"92":0.04746,"93":0.03164,"94":0.05379,"95":0.02848,"96":0.3512,"97":4.04043,"98":8.51749,"99":0.00949,"100":0.01898,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 45 46 47 48 50 51 52 53 54 55 57 59 60 61 62 64 65 66 67 68 73 76 77 84 101"},F:{"79":0.01582,"82":0.06328,"83":0.63913,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.05695,"13":0.01582,"14":0.00949,"15":0.02848,"16":0.06012,"17":0.02531,"18":0.1139,"80":0.00316,"84":0.01898,"85":0.01898,"89":0.0443,"90":0.00633,"91":0.00633,"92":0.03164,"93":0.02215,"94":0.01582,"95":0.0348,"96":0.07277,"97":0.91756,"98":3.00896,_:"79 81 83 86 87 88"},E:{"4":0,"6":0.00316,"14":0.01582,"15":0.02531,_:"0 5 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 15.4","5.1":0.00316,"13.1":0.02531,"14.1":0.04113,"15.1":0.06012,"15.2-15.3":0.08226},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0025,"5.0-5.1":0,"6.0-6.1":0.0025,"7.0-7.1":0.00136,"8.1-8.4":0,"9.0-9.2":0.00136,"9.3":0.03992,"10.0-10.2":0.00159,"10.3":0.01996,"11.0-11.2":0.02994,"11.3-11.4":0.022,"12.0-12.1":0.01157,"12.2-12.5":0.235,"13.0-13.1":0.02041,"13.2":0.0025,"13.3":0.05421,"13.4-13.7":0.07032,"14.0-14.4":0.24089,"14.5-14.8":0.49154,"15.0-15.1":0.26517,"15.2-15.3":0.75331,"15.4":0.00318},P:{"4":0.66965,"5.0-5.4":0.03067,"6.2-6.4":0.02029,"7.2-7.4":1.25813,"8.2":0.01022,"9.2":0.04058,"10.1":0.15219,"11.1-11.2":0.18263,"12.0":0.05073,"13.0":0.2638,"14.0":0.50731,"15.0":0.18263,"16.0":1.23783},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00126,"4.2-4.3":0.00306,"4.4":0,"4.4.3-4.4.4":0.03669},A:{"8":0.00316,"11":0.22464,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00684},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.57414},Q:{"10.4":0},O:{"0":0.99791},H:{"0":6.83331},L:{"0":62.6305},S:{"2.5":0.01367}}; +module.exports={C:{"29":0.00627,"43":0.00313,"88":0.0094,"91":0.0094,"94":0.02193,"97":0.00313,"98":0.01253,"99":0.01567,"100":0.12532,"101":1.13728,"102":0.10966,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 89 90 92 93 95 96 103 104 3.5 3.6"},D:{"20":0.00627,"33":0.00313,"40":0.00627,"44":0.00627,"49":0.17545,"56":0.0188,"63":0.08146,"65":0.00627,"66":0.00627,"68":0.00627,"69":0.0094,"70":0.13472,"72":0.00313,"74":0.06579,"75":0.047,"77":0.00313,"78":0.0094,"79":0.03133,"80":0.00627,"81":0.03133,"83":0.00313,"84":0.00627,"85":0.00313,"86":0.0094,"87":0.05639,"88":0.0094,"89":0.01567,"90":0.0094,"91":0.00627,"92":0.02506,"93":0.00627,"94":0.03133,"95":0.01253,"96":0.0282,"97":0.05013,"98":0.0282,"99":0.07833,"100":0.22244,"101":0.82085,"102":11.28193,"103":1.09655,"104":0.00627,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 41 42 43 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 64 67 71 73 76 105 106"},F:{"63":0.00627,"64":0.0094,"79":0.01253,"85":0.07833,"86":0.06266,"87":1.272,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0282,"13":0.01567,"14":0.0094,"15":0.01567,"16":0.03446,"17":0.04386,"18":0.06893,"80":0.00627,"84":0.0188,"85":0.01567,"88":0.02193,"89":0.0188,"90":0.00627,"91":0.01567,"92":0.0188,"94":0.0094,"96":0.0188,"97":0.01253,"98":0.0188,"99":0.03446,"100":0.06579,"101":0.52321,"102":3.01395,"103":0.47935,_:"79 81 83 86 87 93 95"},E:{"4":0,"11":0.00313,"13":0.00627,"14":0.00627,"15":0.00627,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.00627,"13.1":0.01567,"14.1":0.0376,"15.1":0.01567,"15.2-15.3":0.0094,"15.4":0.02506,"15.5":0.15352},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00068,"5.0-5.1":0.00456,"6.0-6.1":0.00114,"7.0-7.1":0.00137,"8.1-8.4":0.00388,"9.0-9.2":0,"9.3":0.06542,"10.0-10.2":0.00068,"10.3":0.02325,"11.0-11.2":0.00684,"11.3-11.4":0.00205,"12.0-12.1":0.01345,"12.2-12.5":0.24779,"13.0-13.1":0.02006,"13.2":0.01026,"13.3":0.031,"13.4-13.7":0.14248,"14.0-14.4":0.12378,"14.5-14.8":0.17644,"15.0-15.1":0.1671,"15.2-15.3":0.16732,"15.4":0.28176,"15.5":0.78852,"16.0":0},P:{"4":0.439,"5.0-5.4":0.01028,"6.2-6.4":0.04084,"7.2-7.4":0.99031,"8.2":0.01021,"9.2":0.05105,"10.1":0.03063,"11.1-11.2":0.15314,"12.0":0.07161,"13.0":0.10209,"14.0":0.23481,"15.0":0.1123,"16.0":0.439,"17.0":0.85758},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00161,"4.4":0,"4.4.3-4.4.4":0.0396},A:{"7":0.0094,"9":0.00627,"10":0.00313,"11":0.09399,_:"6 8 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.3116},H:{"0":6.26719},L:{"0":63.4584},S:{"2.5":0.0206},R:{_:"0"},M:{"0":0.09614}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LT.js index e3ced5fc5ae7c4..038f5f90478b35 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LT.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LT.js @@ -1 +1 @@ -module.exports={C:{"48":0.03575,"51":0.00596,"52":0.11322,"57":0.01192,"60":0.01192,"66":0.00596,"72":0.01192,"77":0.01192,"78":0.04171,"79":0.00596,"80":0.00596,"82":0.00596,"84":0.01788,"85":0.00596,"88":0.02384,"89":0.01192,"90":0.0298,"91":0.10726,"92":0.06555,"93":0.01192,"94":0.04767,"95":0.1311,"96":2.02606,"97":3.18211,"98":0.02384,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 53 54 55 56 58 59 61 62 63 64 65 67 68 69 70 71 73 74 75 76 81 83 86 87 99 3.5 3.6"},D:{"33":0.01192,"34":0.01192,"38":0.00596,"41":0.01788,"49":0.05363,"56":0.01788,"63":0.01192,"64":0.01192,"65":0.00596,"66":0.01192,"67":0.00596,"68":0.01192,"70":0.01192,"71":0.01192,"73":0.02384,"74":0.00596,"75":0.00596,"76":0.01192,"77":0.01192,"78":0.01788,"79":0.07151,"80":0.02384,"81":0.03575,"83":0.07151,"84":0.07151,"85":0.04767,"86":0.07747,"87":0.1013,"88":0.06555,"89":0.05959,"90":0.05363,"91":0.07151,"92":0.07747,"93":0.75083,"94":0.1311,"95":0.15493,"96":0.70912,"97":11.85245,"98":25.27808,"99":0.01192,"100":0.01788,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 36 37 39 40 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 69 72 101"},F:{"28":0.00596,"36":0.01788,"64":0.01192,"79":0.01192,"80":0.01192,"82":1.00111,"83":3.46814,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01192,"85":0.01192,"89":0.01192,"91":0.00596,"92":0.02384,"94":0.01192,"95":0.01788,"96":0.04171,"97":1.13817,"98":3.76013,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 88 90 93"},E:{"4":0,"13":0.04171,"14":0.20261,"15":0.1311,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.01192,"11.1":0.01788,"12.1":0.04171,"13.1":0.23836,"14.1":0.47672,"15.1":0.29795,"15.2-15.3":0.50056,"15.4":0.01788},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00286,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02862,"10.0-10.2":0.00382,"10.3":0.08683,"11.0-11.2":0.00763,"11.3-11.4":0.01908,"12.0-12.1":0.00954,"12.2-12.5":0.15266,"13.0-13.1":0.01717,"13.2":0.02004,"13.3":0.0229,"13.4-13.7":0.15075,"14.0-14.4":0.50664,"14.5-14.8":1.66019,"15.0-15.1":1.63443,"15.2-15.3":5.1504,"15.4":0.05916},P:{"4":0.08398,"5.0-5.4":0.89089,"6.2-6.4":0.05053,"7.2-7.4":0.56594,"8.2":0.01022,"9.2":0.11117,"10.1":0.05053,"11.1-11.2":0.03149,"12.0":0.0105,"13.0":0.07349,"14.0":0.09448,"15.0":0.09448,"16.0":2.61403},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00128,"4.2-4.3":0.00638,"4.4":0,"4.4.3-4.4.4":0.02871},A:{"8":0.00596,"11":0.3635,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.25862},Q:{"10.4":0},O:{"0":0.0687},H:{"0":0.3864},L:{"0":26.79061},S:{"2.5":0}}; +module.exports={C:{"48":0.06918,"52":0.32861,"60":0.00577,"66":0.01153,"68":0.00577,"72":0.01153,"77":0.01153,"78":0.05189,"79":0.01153,"80":0.00577,"81":0.0173,"82":0.00577,"83":0.00577,"84":0.0173,"85":0.00577,"88":0.02306,"89":0.01153,"90":0.01153,"91":0.09224,"92":0.00577,"94":0.0173,"95":0.06342,"96":0.05765,"97":0.02306,"98":0.02883,"99":0.06918,"100":0.55921,"101":5.08473,"102":0.15566,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 67 69 70 71 73 74 75 76 86 87 93 103 104 3.5 3.6"},D:{"23":0.02306,"38":0.01153,"41":0.06342,"49":0.03459,"56":0.09224,"63":0.02883,"64":0.01153,"65":0.0173,"66":0.01153,"67":0.00577,"68":0.01153,"70":0.01153,"71":0.01153,"72":0.01153,"73":0.01153,"74":0.01153,"75":0.00577,"76":0.01153,"77":0.01153,"78":0.02306,"79":0.06918,"80":0.02883,"81":0.03459,"83":0.03459,"84":0.07495,"85":0.04612,"86":0.16719,"87":0.14413,"88":0.05765,"89":0.05765,"90":0.06918,"91":0.06342,"92":0.09224,"93":0.16142,"94":0.06342,"95":0.10954,"96":0.31131,"97":0.31708,"98":0.06918,"99":0.17295,"100":0.50156,"101":2.18494,"102":29.0556,"103":2.39248,"104":0.00577,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 69 105 106"},F:{"28":0.00577,"36":0.0173,"70":0.01153,"72":0.01153,"80":0.01153,"82":0.06918,"83":0.00577,"84":0.01153,"85":0.09224,"86":1.41819,"87":2.98627,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.0173,"85":0.00577,"90":0.00577,"92":0.01153,"94":0.00577,"96":0.0173,"97":0.02883,"98":0.02306,"99":0.0173,"100":0.02306,"101":0.53615,"102":3.68384,"103":0.88205,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 88 89 91 93 95"},E:{"4":0,"13":0.02306,"14":0.1153,"15":0.04036,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.00577,"11.1":0.0173,"12.1":0.05189,"13.1":0.14413,"14.1":0.39779,"15.1":0.1326,"15.2-15.3":0.08071,"15.4":0.35167,"15.5":0.77251,"16.0":0.00577},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00189,"7.0-7.1":0.00189,"8.1-8.4":0.00094,"9.0-9.2":0,"9.3":0.01793,"10.0-10.2":0.00944,"10.3":0.09156,"11.0-11.2":0.00472,"11.3-11.4":0.00944,"12.0-12.1":0.00661,"12.2-12.5":0.14442,"13.0-13.1":0.0085,"13.2":0.00378,"13.3":0.01888,"13.4-13.7":0.0859,"14.0-14.4":0.26242,"14.5-14.8":0.724,"15.0-15.1":0.26147,"15.2-15.3":0.51445,"15.4":1.70759,"15.5":5.50602,"16.0":0.02832},P:{"4":0.105,"5.0-5.4":0.03107,"6.2-6.4":0.05107,"7.2-7.4":0.34728,"8.2":0.01021,"9.2":0.04086,"10.1":0.03064,"11.1-11.2":0.021,"12.0":0.04086,"13.0":0.042,"14.0":0.0735,"15.0":0.042,"16.0":0.24151,"17.0":2.54112},I:{"0":0,"3":0,"4":0.00652,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00521,"4.2-4.3":0.00391,"4.4":0,"4.4.3-4.4.4":0.05212},A:{"8":0.01153,"11":0.23637,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.06353},H:{"0":0.50519},L:{"0":28.79668},S:{"2.5":0},R:{_:"0"},M:{"0":0.34727}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LU.js index 13dd4ef232f965..64e85d0833398d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LU.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LU.js @@ -1 +1 @@ -module.exports={C:{"24":0.03173,"38":0.00529,"45":0.00529,"48":0.02115,"50":0.03702,"51":0.03173,"52":0.0899,"59":0.02644,"60":0.0423,"61":0.03173,"62":0.02644,"63":0.02115,"66":0.0423,"68":0.03173,"77":0.01586,"78":0.17979,"79":0.01586,"87":0.00529,"88":0.02115,"89":0.04759,"91":0.86723,"92":0.01058,"93":0.01586,"94":1.33258,"95":0.13749,"96":2.19452,"97":3.5271,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 46 47 49 53 54 55 56 57 58 64 65 67 69 70 71 72 73 74 75 76 80 81 82 83 84 85 86 90 98 99 3.5 3.6"},D:{"49":0.0423,"53":0.01586,"56":0.00529,"60":0.06874,"65":0.0423,"66":0.01586,"67":0.04759,"68":0.06346,"69":0.03173,"70":0.02644,"71":0.03173,"72":0.20623,"74":0.04759,"75":0.00529,"76":0.00529,"77":0.15335,"78":0.15864,"79":0.15335,"80":0.05288,"81":0.0423,"83":0.04759,"84":0.08461,"85":0.15864,"86":0.55524,"87":0.06874,"88":0.0423,"89":0.03173,"90":0.04759,"91":0.08461,"92":0.0899,"93":0.54466,"94":0.0423,"95":0.11105,"96":0.67686,"97":6.22398,"98":12.84984,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 57 58 59 61 62 63 64 73 99 100 101"},F:{"53":0.01058,"69":0.01058,"79":0.01058,"82":0.48121,"83":1.34315,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.03173,"16":0.03702,"17":0.01058,"18":0.01058,"89":0.02115,"90":0.01058,"91":0.01586,"92":0.01058,"94":0.02115,"95":0.18508,"96":0.20623,"97":1.39603,"98":4.93899,_:"12 13 14 79 80 81 83 84 85 86 87 88 93"},E:{"4":0,"8":0.01058,"12":0.01058,"13":0.07403,"14":0.54466,"15":0.46534,_:"0 5 6 7 9 10 11 3.1 3.2 6.1 7.1","5.1":0.01058,"9.1":0.01058,"10.1":0.02115,"11.1":0.0423,"12.1":0.25382,"13.1":0.83022,"14.1":2.21567,"15.1":1.33786,"15.2-15.3":2.54882,"15.4":0.01058},G:{"8":0,"3.2":0.00781,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00195,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.0039,"9.3":0.10929,"10.0-10.2":0.00195,"10.3":0.08392,"11.0-11.2":0.02342,"11.3-11.4":0.05659,"12.0-12.1":0.01366,"12.2-12.5":0.39812,"13.0-13.1":0.05269,"13.2":0.0039,"13.3":0.04098,"13.4-13.7":0.27712,"14.0-14.4":0.71622,"14.5-14.8":3.35471,"15.0-15.1":2.9039,"15.2-15.3":11.39119,"15.4":0.06635},P:{"4":0.15575,"5.0-5.4":0.89089,"6.2-6.4":0.05053,"7.2-7.4":0.03115,"8.2":0.01022,"9.2":0.02077,"10.1":0.05053,"11.1-11.2":0.02077,"12.0":0.05192,"13.0":0.0623,"14.0":0.11422,"15.0":0.07269,"16.0":4.00809},I:{"0":0,"3":0,"4":0.00048,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00192,"4.2-4.3":0.00361,"4.4":0,"4.4.3-4.4.4":0.01755},A:{"9":0.07699,"11":0.47296,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.81046},Q:{"10.4":0.00942},O:{"0":0.61256},H:{"0":0.6067},L:{"0":20.55799},S:{"2.5":0}}; +module.exports={C:{"24":0.01333,"48":0.00444,"50":0.01333,"52":0.0711,"60":0.00889,"66":0.01778,"68":0.02666,"78":0.13776,"84":0.34663,"88":0.05777,"89":0.01333,"91":0.58216,"92":0.01333,"94":0.51995,"95":0.01333,"96":0.01333,"97":0.02222,"98":0.02222,"99":0.09777,"100":0.54217,"101":4.2929,"102":0.19109,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 51 53 54 55 56 57 58 59 61 62 63 64 65 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 90 93 103 104 3.5 3.6"},D:{"38":0.01333,"46":0.01778,"49":0.02222,"53":0.00889,"54":0.02666,"60":0.02666,"65":0.01333,"67":0.03111,"68":0.01333,"72":0.30664,"73":0.00444,"74":0.01778,"75":0.00444,"77":0.00444,"78":0.05333,"79":0.14221,"80":0.04,"81":0.02222,"83":0.04,"84":0.09332,"85":0.10666,"86":0.21776,"87":0.09777,"88":0.00444,"89":0.02222,"90":0.06222,"91":0.08888,"92":0.04444,"93":0.03555,"94":0.01333,"95":0.04,"96":0.07999,"97":0.06666,"98":0.07999,"99":0.23109,"100":0.44884,"101":1.5154,"102":13.42532,"103":1.31987,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 47 48 50 51 52 55 56 57 58 59 61 62 63 64 66 69 70 71 76 104 105 106"},F:{"85":0.02222,"86":0.39552,"87":0.82658,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01778,"16":0.01333,"18":0.00889,"86":0.00889,"91":0.01778,"92":0.00889,"95":0.00444,"96":0.01333,"97":0.00889,"98":0.12443,"99":0.01333,"100":0.15554,"101":0.7377,"102":3.78629,"103":0.7377,_:"12 13 14 17 79 80 81 83 84 85 87 88 89 90 93 94"},E:{"4":0,"11":0.00444,"13":0.05777,"14":0.24886,"15":0.10666,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1","9.1":0.00444,"10.1":0.00889,"11.1":0.04444,"12.1":0.25331,"13.1":0.78659,"14.1":0.9599,"15.1":0.31552,"15.2-15.3":0.17776,"15.4":1.43541,"15.5":5.03505,"16.0":0.02222},G:{"8":0.00193,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.10595,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.3275,"9.3":0.06357,"10.0-10.2":0,"10.3":0.1387,"11.0-11.2":0.02504,"11.3-11.4":0.02504,"12.0-12.1":0.00771,"12.2-12.5":0.27934,"13.0-13.1":0.00771,"13.2":0,"13.3":0.03275,"13.4-13.7":0.15604,"14.0-14.4":0.37758,"14.5-14.8":1.27531,"15.0-15.1":0.41419,"15.2-15.3":0.94396,"15.4":3.16323,"15.5":11.78024,"16.0":0.08476},P:{"4":0.13328,"5.0-5.4":0.03107,"6.2-6.4":0.05107,"7.2-7.4":0.0205,"8.2":0.01021,"9.2":0.04086,"10.1":0.03064,"11.1-11.2":0.01025,"12.0":0.04101,"13.0":0.05126,"14.0":0.04101,"15.0":0.07177,"16.0":0.30756,"17.0":3.75229},I:{"0":0,"3":0.02161,"4":0.00247,"2.1":0.0105,"2.2":0.03334,"2.3":0,"4.1":0.02779,"4.2-4.3":0.0247,"4.4":0,"4.4.3-4.4.4":0.08521},A:{"9":0.0397,"11":0.25805,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":1.14474},O:{"0":1.05583},H:{"0":0.52084},L:{"0":21.40756},S:{"2.5":0},R:{_:"0"},M:{"0":0.76687}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LV.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LV.js index 66ec6302a1a815..f4b9028396dda4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LV.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LV.js @@ -1 +1 @@ -module.exports={C:{"42":0.00654,"52":0.08498,"55":0.03269,"56":0.01307,"68":0.00654,"72":0.03269,"78":0.06537,"79":0.01961,"81":0.00654,"83":0.00654,"84":0.01961,"85":0.00654,"86":0.00654,"87":0.01961,"88":0.03922,"89":0.01307,"90":0.01307,"91":0.20918,"92":0.01961,"93":0.01961,"94":0.01307,"95":0.09806,"96":1.98725,"97":3.19006,"98":0.01961,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 53 54 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 80 82 99 3.5 3.6"},D:{"38":0.00654,"49":0.14381,"57":0.00654,"68":0.01307,"69":0.01307,"70":0.00654,"71":0.00654,"72":0.01307,"74":0.01307,"76":0.00654,"77":0.00654,"78":0.03922,"79":0.18957,"80":0.02615,"81":0.01307,"83":0.03269,"84":0.05883,"85":0.04576,"86":0.07191,"87":0.10459,"88":0.03269,"89":0.09152,"90":0.11113,"91":0.1242,"92":0.11767,"93":0.706,"94":0.07191,"95":0.07191,"96":0.7779,"97":13.1263,"98":30.99192,"99":0.02615,"100":0.0523,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 58 59 60 61 62 63 64 65 66 67 73 75 101"},F:{"36":0.01961,"68":0.01307,"82":0.51642,"83":1.98725,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"84":0.00654,"85":0.02615,"89":0.01961,"92":0.01961,"94":0.00654,"95":0.02615,"96":0.05883,"97":1.3074,"98":4.5759,_:"12 13 14 15 16 17 18 79 80 81 83 86 87 88 90 91 93"},E:{"4":0,"13":0.01961,"14":0.20918,"15":0.11113,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.01307,"10.1":0.01307,"11.1":0.01307,"12.1":0.03269,"13.1":0.21572,"14.1":0.41837,"15.1":0.28763,"15.2-15.3":0.51642,"15.4":0.00654},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0009,"5.0-5.1":0.0009,"6.0-6.1":0.0009,"7.0-7.1":0.0009,"8.1-8.4":0.0009,"9.0-9.2":0.00449,"9.3":0.01795,"10.0-10.2":0.00538,"10.3":0.04398,"11.0-11.2":0.01346,"11.3-11.4":0.01167,"12.0-12.1":0.02513,"12.2-12.5":0.16872,"13.0-13.1":0.01256,"13.2":0.00538,"13.3":0.04487,"13.4-13.7":0.1059,"14.0-14.4":0.52142,"14.5-14.8":1.62529,"15.0-15.1":1.58401,"15.2-15.3":4.72151,"15.4":0.05295},P:{"4":0.06305,"5.0-5.4":0.03067,"6.2-6.4":0.03067,"7.2-7.4":0.23517,"8.2":0.01022,"9.2":0.07157,"10.1":0.01051,"11.1-11.2":0.08407,"12.0":0.02102,"13.0":0.07356,"14.0":0.07356,"15.0":0.15763,"16.0":2.85839},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00395,"4.2-4.3":0.01448,"4.4":0,"4.4.3-4.4.4":0.04737},A:{"11":0.16996,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.26319},Q:{"10.4":0},O:{"0":0.07965},H:{"0":0.34425},L:{"0":20.9847},S:{"2.5":0}}; +module.exports={C:{"52":0.06031,"56":0.0134,"60":0.0067,"78":0.04691,"79":0.0134,"81":0.0067,"83":0.0134,"84":0.0067,"87":0.0067,"88":0.0201,"89":0.0067,"91":0.07371,"94":0.0067,"95":0.0134,"96":0.0201,"97":0.0067,"98":0.03351,"99":0.08041,"100":0.45567,"101":3.58504,"102":0.12062,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 82 85 86 90 92 93 103 104 3.5 3.6"},D:{"38":0.0067,"41":0.0067,"49":0.06031,"63":0.0067,"65":0.0201,"71":0.0134,"74":0.0201,"76":0.0067,"78":0.0201,"79":0.14742,"80":0.0134,"81":0.0067,"83":0.03351,"84":0.08711,"85":0.0268,"86":0.06031,"87":0.07371,"88":0.0201,"89":0.04691,"90":0.03351,"91":0.06701,"92":0.04691,"93":0.08041,"94":0.96494,"95":0.0268,"96":0.10052,"97":0.34845,"98":0.15412,"99":0.12062,"100":0.40876,"101":4.6907,"102":38.82559,"103":3.3438,"104":0.0268,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 66 67 68 69 70 72 73 75 77 105 106"},F:{"70":0.0134,"84":0.0134,"85":0.06031,"86":0.79742,"87":1.38711,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.0134,"84":0.0134,"85":0.0201,"86":0.0067,"91":0.0134,"92":0.0067,"95":0.0134,"96":0.0134,"97":0.0134,"98":0.0067,"99":0.0134,"100":0.04021,"101":0.83763,"102":4.36905,"103":1.12577,_:"12 13 14 15 16 17 79 80 81 83 87 88 89 90 93 94"},E:{"4":0,"13":0.0134,"14":0.10722,"15":0.0268,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 16.0","9.1":0.0201,"11.1":0.0067,"12.1":0.06031,"13.1":0.13402,"14.1":0.24794,"15.1":0.07371,"15.2-15.3":0.06031,"15.4":0.34845,"15.5":0.88453},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00085,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00255,"8.1-8.4":0.00255,"9.0-9.2":0.0017,"9.3":0.00937,"10.0-10.2":0.00426,"10.3":0.02384,"11.0-11.2":0.01192,"11.3-11.4":0.00681,"12.0-12.1":0.00851,"12.2-12.5":0.14815,"13.0-13.1":0.01107,"13.2":0.00937,"13.3":0.02043,"13.4-13.7":0.09451,"14.0-14.4":0.24862,"14.5-14.8":0.66498,"15.0-15.1":0.27928,"15.2-15.3":0.49469,"15.4":1.56837,"15.5":4.81496,"16.0":0.04172},P:{"4":0.05252,"5.0-5.4":0.01028,"6.2-6.4":0.02044,"7.2-7.4":0.26576,"8.2":0.03083,"9.2":0.05111,"10.1":0.01022,"11.1-11.2":0.03151,"12.0":0.0105,"13.0":0.03151,"14.0":0.08403,"15.0":0.05252,"16.0":0.27311,"17.0":2.48947},I:{"0":0,"3":0,"4":0.00302,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00302,"4.2-4.3":0.00754,"4.4":0,"4.4.3-4.4.4":0.03921},A:{"8":0.0134,"11":0.05361,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.0033},Q:{"10.4":0},O:{"0":0.10887},H:{"0":0.3092},L:{"0":20.40482},S:{"2.5":0},R:{_:"0"},M:{"0":0.38928}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LY.js index 93f68c6c443e96..912f7060a41e75 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LY.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LY.js @@ -1 +1 @@ -module.exports={C:{"4":0.00353,"5":0.00176,"15":0.00176,"17":0.00529,"23":0.00353,"26":0.00176,"28":0.00176,"30":0.00176,"33":0.00882,"34":0.00353,"36":0.00176,"38":0.00353,"39":0.00353,"43":0.00529,"47":0.00882,"48":0.00529,"52":0.01058,"56":0.00176,"61":0.00176,"70":0.01235,"72":0.00706,"78":0.00706,"84":0.00353,"85":0.00176,"88":0.00353,"89":0.00176,"90":0.00353,"91":0.01058,"92":0.00176,"93":0.00353,"94":0.01058,"95":0.02999,"96":0.33163,"97":0.60505,"98":0.01411,_:"2 3 6 7 8 9 10 11 12 13 14 16 18 19 20 21 22 24 25 27 29 31 32 35 37 40 41 42 44 45 46 49 50 51 53 54 55 57 58 59 60 62 63 64 65 66 67 68 69 71 73 74 75 76 77 79 80 81 82 83 86 87 99 3.5 3.6"},D:{"11":0.00353,"19":0.00176,"23":0.00353,"24":0.00529,"25":0.00529,"26":0.00176,"28":0.00353,"31":0.00176,"32":0.00706,"33":0.01235,"37":0.00353,"38":0.00529,"40":0.00706,"43":0.01764,"44":0.00176,"49":0.02293,"50":0.00176,"53":0.00353,"54":0.00353,"55":0.00529,"56":0.01058,"57":0.00353,"58":0.00529,"60":0.00529,"63":0.01764,"64":0.00353,"65":0.01058,"66":0.00882,"67":0.00706,"68":0.00353,"69":0.01235,"70":0.00882,"71":0.02646,"72":0.00176,"73":0.00529,"74":0.00706,"75":0.00529,"76":0.00706,"77":0.00529,"78":0.01058,"79":0.02822,"80":0.01764,"81":0.00882,"83":0.02822,"84":0.00882,"85":0.01588,"86":0.03528,"87":0.05468,"88":0.03352,"89":0.03528,"90":0.02117,"91":0.02999,"92":0.06174,"93":0.03704,"94":0.02822,"95":0.05116,"96":0.34927,"97":3.38159,"98":8.00856,"99":0.00353,"100":0.01058,"101":0.00353,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 20 21 22 27 29 30 34 35 36 39 41 42 45 46 47 48 51 52 59 61 62"},F:{"67":0.01235,"68":0.00176,"69":0.00353,"79":0.00706,"80":0.00529,"82":0.10408,"83":0.53449,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 70 71 72 73 74 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00353,"14":0.00706,"16":0.00529,"17":0.0194,"18":0.02646,"83":0.00353,"84":0.01411,"85":0.02822,"89":0.01235,"90":0.00529,"92":0.01058,"93":0.00353,"94":0.00176,"95":0.05645,"96":0.02646,"97":0.34927,"98":0.74088,_:"13 15 79 80 81 86 87 88 91"},E:{"4":0,"13":0.0688,"14":0.07056,"15":0.05292,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 15.4","9.1":0.00176,"10.1":0.01058,"11.1":0.00353,"12.1":0.00529,"13.1":0.0441,"14.1":0.11995,"15.1":0.07938,"15.2-15.3":0.09878},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00177,"6.0-6.1":0.0062,"7.0-7.1":0.01418,"8.1-8.4":0.04076,"9.0-9.2":0.00443,"9.3":0.07531,"10.0-10.2":0.00443,"10.3":0.06734,"11.0-11.2":0.02126,"11.3-11.4":0.04164,"12.0-12.1":0.05936,"12.2-12.5":0.83194,"13.0-13.1":0.03101,"13.2":0.01949,"13.3":0.11695,"13.4-13.7":0.24099,"14.0-14.4":1.00648,"14.5-14.8":1.77464,"15.0-15.1":1.56909,"15.2-15.3":2.89807,"15.4":0.02835},P:{"4":0.29307,"5.0-5.4":0.89089,"6.2-6.4":0.05053,"7.2-7.4":0.56594,"8.2":0.01022,"9.2":0.11117,"10.1":0.05053,"11.1-11.2":0.27286,"12.0":0.09095,"13.0":0.25265,"14.0":0.3436,"15.0":0.32339,"16.0":1.82919},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00092,"4.2-4.3":0.00423,"4.4":0,"4.4.3-4.4.4":0.03603},A:{"8":0.00529,"9":0.00353,"10":0.00353,"11":0.07232,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.09883},Q:{"10.4":0},O:{"0":0.45298},H:{"0":3.29047},L:{"0":63.59095},S:{"2.5":0}}; +module.exports={C:{"7":0.00268,"28":0.00268,"34":0.00268,"36":0.00268,"39":0.00134,"40":0.00134,"42":0.00134,"43":0.00268,"45":0.0161,"47":0.00403,"52":0.00671,"56":0.00537,"61":0.00134,"72":0.00403,"78":0.00134,"79":0.00268,"81":0.00134,"82":0.00134,"83":0.00268,"84":0.00268,"85":0.00134,"86":0.00268,"88":0.00268,"89":0.00268,"91":0.00537,"92":0.00134,"93":0.00268,"94":0.01074,"95":0.00403,"96":0.00403,"97":0.00537,"98":0.01074,"99":0.05234,"100":0.05636,"101":0.53546,"102":0.03355,_:"2 3 4 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 35 37 38 41 44 46 48 49 50 51 53 54 55 57 58 59 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 80 87 90 103 104 3.5 3.6"},D:{"11":0.00134,"19":0.00134,"25":0.00671,"26":0.00134,"31":0.00268,"32":0.00268,"33":0.00939,"35":0.00134,"37":0.00268,"38":0.00268,"40":0.00268,"41":0.00134,"42":0.00403,"43":0.01074,"44":0.00268,"49":0.00939,"50":0.00268,"53":0.00134,"55":0.00268,"58":0.00268,"60":0.01074,"61":0.00134,"63":0.01476,"64":0.00134,"65":0.00268,"66":0.00268,"67":0.00403,"68":0.00134,"69":0.00268,"70":0.00537,"71":0.00537,"72":0.00403,"73":0.00268,"74":0.00403,"75":0.00134,"76":0.00134,"77":0.00268,"78":0.00537,"79":0.01342,"80":0.01074,"81":0.02684,"83":0.03221,"84":0.02818,"85":0.0255,"86":0.06978,"87":0.04429,"88":0.04697,"89":0.03489,"90":0.04294,"91":0.04563,"92":0.03758,"93":0.02147,"94":0.03355,"95":0.0255,"96":0.0671,"97":0.04965,"98":0.0671,"99":0.07113,"100":0.12078,"101":0.42139,"102":6.70329,"103":0.57303,"104":0.00537,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 20 21 22 23 24 27 28 29 30 34 36 39 45 46 47 48 51 52 54 56 57 59 62 105 106"},F:{"47":0.00268,"70":0.00268,"72":0.00268,"73":0.00268,"74":0.00268,"75":0.00268,"76":0.00268,"77":0.00268,"78":0.00403,"79":0.00537,"80":0.00134,"81":0.00134,"82":0.00403,"83":0.00671,"84":0.01208,"85":0.02818,"86":0.08186,"87":0.34355,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00403,"13":0.00268,"14":0.00268,"15":0.00134,"16":0.00268,"17":0.00268,"18":0.02684,"84":0.02013,"85":0.02147,"86":0.01074,"87":0.00939,"88":0.01074,"89":0.02013,"90":0.0161,"91":0.01476,"92":0.01879,"93":0.00671,"94":0.01074,"95":0.01074,"96":0.02281,"97":0.01208,"98":0.01208,"99":0.01208,"100":0.01208,"101":0.12481,"102":0.65355,"103":0.15433,_:"79 80 81 83"},E:{"4":0,"13":0.05771,"14":0.06978,"15":0.03892,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.00537,"10.1":0.00671,"11.1":0.03489,"12.1":0.00268,"13.1":0.04563,"14.1":0.07918,"15.1":0.02013,"15.2-15.3":0.02281,"15.4":0.08052,"15.5":0.13823,"16.0":0.00134},G:{"8":0.00069,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00276,"6.0-6.1":0.00276,"7.0-7.1":0.01173,"8.1-8.4":0.00138,"9.0-9.2":0.00345,"9.3":0.04485,"10.0-10.2":0.00276,"10.3":0.03795,"11.0-11.2":0.01932,"11.3-11.4":0.0207,"12.0-12.1":0.02001,"12.2-12.5":0.39953,"13.0-13.1":0.05106,"13.2":0.01794,"13.3":0.05175,"13.4-13.7":0.13801,"14.0-14.4":0.52167,"14.5-14.8":0.73765,"15.0-15.1":0.42299,"15.2-15.3":0.64518,"15.4":1.21998,"15.5":2.46619,"16.0":0.04278},P:{"4":0.22471,"5.0-5.4":0.03107,"6.2-6.4":0.05107,"7.2-7.4":0.34728,"8.2":0.01021,"9.2":0.04086,"10.1":0.03064,"11.1-11.2":0.15321,"12.0":0.04086,"13.0":0.13278,"14.0":0.25535,"15.0":0.12257,"16.0":0.51071,"17.0":1.21549},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00052,"4.2-4.3":0.00699,"4.4":0,"4.4.3-4.4.4":0.07041},A:{"9":0.00134,"11":0.04697,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.30303},H:{"0":2.46725},L:{"0":74.18227},S:{"2.5":0},R:{_:"0"},M:{"0":0.08658}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MA.js index 7e9ab93b701de8..07a32dd34f60e9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MA.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MA.js @@ -1 +1 @@ -module.exports={C:{"2":0.72585,"15":0.74612,"18":0.74207,"21":0.73801,"23":0.74207,"25":1.48413,"30":0.7299,"51":0.74612,"52":0.04461,"60":0.00406,"64":0.00406,"65":0.01622,"78":0.01622,"81":0.00811,"84":0.02433,"88":0.00406,"89":0.00406,"91":0.02028,"93":0.00406,"94":0.00811,"95":0.01622,"96":0.31224,"97":0.49066,"98":0.01217,_:"3 4 5 6 7 8 9 10 11 12 13 14 16 17 19 20 22 24 26 27 28 29 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 53 54 55 56 57 58 59 61 62 63 66 67 68 69 70 71 72 73 74 75 76 77 79 80 82 83 85 86 87 90 92 99 3.5 3.6"},D:{"19":0.73801,"24":2.21809,"30":0.73801,"33":0.74612,"35":1.48008,"38":0.00406,"43":0.00406,"49":0.04461,"53":0.01217,"54":0.74207,"55":0.74612,"56":3.69816,"58":0.00406,"62":0.00406,"63":0.00811,"64":0.00406,"65":0.01217,"66":0.01622,"67":0.06083,"68":0.01217,"69":0.00811,"70":0.06894,"71":0.00811,"72":0.01622,"74":0.00406,"75":0.01622,"77":0.00406,"78":0.00406,"79":0.04461,"80":0.00811,"81":0.02028,"83":0.03244,"84":0.04461,"85":0.04055,"86":0.05272,"87":0.13787,"88":0.03244,"89":0.0365,"90":0.02839,"91":0.04055,"92":0.0365,"93":0.1987,"94":0.0811,"95":0.03244,"96":0.1987,"97":2.48166,"98":5.70133,"100":0.00406,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 25 26 27 28 29 31 32 34 36 37 39 40 41 42 44 45 46 47 48 50 51 52 57 59 60 61 73 76 99 101"},F:{"43":0.73801,"82":0.10949,"83":0.49066,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0.74207},B:{"18":0.00811,"84":0.00811,"85":0.00811,"86":0.00406,"87":0.00406,"88":0.00406,"89":0.00811,"90":0.00406,"91":0.00811,"92":0.01217,"94":0.00406,"95":0.00811,"96":0.01622,"97":0.17437,"98":0.61231,_:"12 13 14 15 16 17 79 80 81 83 93"},E:{"4":0,"5":0.73396,"13":0.0365,"14":0.04055,"15":0.02839,_:"0 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.00811,"12.1":0.01217,"13.1":0.05272,"14.1":0.08516,"15.1":0.03244,"15.2-15.3":0.04866},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00383,"6.0-6.1":14.55397,"7.0-7.1":0.0249,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04597,"10.0-10.2":1.97079,"10.3":0.04405,"11.0-11.2":0.06129,"11.3-11.4":0.04405,"12.0-12.1":0.06703,"12.2-12.5":0.452,"13.0-13.1":0.00766,"13.2":0.00383,"13.3":0.01915,"13.4-13.7":0.08427,"14.0-14.4":0.18195,"14.5-14.8":0.452,"15.0-15.1":0.36581,"15.2-15.3":0.75461,"15.4":0.00575},P:{"4":0.37587,"5.0-5.4":0.07136,"6.2-6.4":0.02048,"7.2-7.4":0.12161,"8.2":0.01015,"9.2":0.03317,"10.1":0.02048,"11.1-11.2":0.05528,"12.0":0.02211,"13.0":0.12161,"14.0":0.07739,"15.0":0.0995,"16.0":1.06128},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0133,"4.2-4.3":0.63155,"4.4":0,"4.4.3-4.4.4":1.07919},A:{"8":1.48008,"9":1.48008,"10":1.48413,"11":0.05677,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.05945},Q:{"10.4":0},O:{"0":0.05351},H:{"0":0.16322},L:{"0":35.78282},S:{"2.5":0}}; +module.exports={C:{"47":0.00359,"50":0.00359,"52":0.17586,"55":0.01436,"58":0.00718,"65":0.0646,"67":0.00359,"68":0.00359,"72":0.01077,"75":0.00359,"78":0.0323,"80":0.00359,"81":0.00718,"82":0.00718,"84":0.01077,"88":0.00718,"89":0.02871,"90":0.00359,"91":0.07537,"92":0.00359,"93":0.04666,"94":0.00718,"95":0.01436,"96":0.00718,"97":0.01436,"98":0.01436,"99":0.05742,"100":0.25841,"101":1.92729,"102":0.08255,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 51 53 54 56 57 59 60 61 62 63 64 66 69 70 71 73 74 76 77 79 83 85 86 87 103 104 3.5 3.6"},D:{"22":0.00359,"38":0.01077,"43":0.01436,"49":0.10049,"53":0.01436,"55":0.00718,"56":0.01436,"58":0.00359,"62":0.00718,"63":0.01436,"64":0.01077,"65":0.01077,"66":0.00718,"67":0.35172,"68":0.01795,"69":0.01436,"70":0.01436,"71":0.00718,"72":0.00718,"73":0.00718,"74":0.01077,"75":0.03589,"76":0.01077,"77":0.01077,"78":0.01436,"79":0.10408,"80":0.02512,"81":0.02153,"83":0.05025,"84":0.06819,"85":0.05742,"86":0.09331,"87":0.16509,"88":0.03589,"89":0.04307,"90":0.02512,"91":0.11485,"92":0.04666,"93":0.04307,"94":0.0323,"95":0.03589,"96":0.10049,"97":0.08614,"98":0.10049,"99":0.14715,"100":0.30148,"101":1.32075,"102":20.60804,"103":1.91294,"104":0.01077,"105":0.00718,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 54 57 59 60 61 106"},F:{"28":0.01077,"36":0.00359,"40":0.00359,"46":0.00359,"79":0.00718,"82":0.00359,"83":0.01077,"84":0.01436,"85":0.06819,"86":0.41991,"87":1.12695,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.00718,"17":0.00718,"18":0.02153,"84":0.01077,"85":0.00359,"89":0.00359,"92":0.01795,"96":0.01077,"97":0.00359,"98":0.00718,"99":0.01795,"100":0.01436,"101":0.28712,"102":1.70478,"103":0.33378,_:"12 13 14 15 79 80 81 83 86 87 88 90 91 93 94 95"},E:{"4":0,"11":0.00359,"13":0.01795,"14":0.0646,"15":0.01795,_:"0 5 6 7 8 9 10 12 3.1 3.2 6.1 7.1 9.1 16.0","5.1":0.00718,"10.1":0.00359,"11.1":0.01795,"12.1":0.02153,"13.1":0.08255,"14.1":0.15433,"15.1":0.0323,"15.2-15.3":0.03948,"15.4":0.10767,"15.5":0.20816},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00824,"6.0-6.1":0.00069,"7.0-7.1":0.04329,"8.1-8.4":0.00481,"9.0-9.2":0.00069,"9.3":0.11062,"10.0-10.2":0.02748,"10.3":0.09001,"11.0-11.2":0.11337,"11.3-11.4":0.08657,"12.0-12.1":0.13948,"12.2-12.5":0.91725,"13.0-13.1":0.01718,"13.2":0.00756,"13.3":0.0481,"13.4-13.7":0.11062,"14.0-14.4":0.44385,"14.5-14.8":0.8135,"15.0-15.1":0.32018,"15.2-15.3":0.39713,"15.4":0.97771,"15.5":2.16498,"16.0":0.01649},P:{"4":0.65906,"5.0-5.4":0.03046,"6.2-6.4":0.0206,"7.2-7.4":0.26774,"8.2":0.01015,"9.2":0.06179,"10.1":0.0103,"11.1-11.2":0.13387,"12.0":0.05149,"13.0":0.19566,"14.0":0.14417,"15.0":0.10298,"16.0":0.38102,"17.0":2.23464},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00391,"4.2-4.3":0.00657,"4.4":0,"4.4.3-4.4.4":0.04722},A:{"8":0.00359,"11":0.0646,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.10899},H:{"0":0.41273},L:{"0":53.19758},S:{"2.5":0},R:{_:"0"},M:{"0":0.1731}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MC.js index 04db73ae98f66b..d738da1d90865b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MC.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MC.js @@ -1 +1 @@ -module.exports={C:{"68":0.01917,"75":0.02556,"78":0.65817,"79":0.01278,"80":0.03834,"81":0.03195,"84":0.02556,"91":0.10224,"92":0.00639,"93":0.01278,"94":0.01278,"95":0.10224,"96":1.42497,"97":2.67741,"98":0.01278,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 76 77 82 83 85 86 87 88 89 90 99 3.5 3.6"},D:{"18":3.24612,"49":0.00639,"56":0.01278,"66":0.01278,"71":0.00639,"75":0.00639,"76":0.00639,"77":0.60705,"78":0.01278,"79":0.01917,"80":0.00639,"81":0.02556,"83":0.01278,"84":0.05751,"85":0.24282,"86":0.00639,"87":0.68373,"88":0.01917,"89":0.23643,"90":0.08307,"91":0.01917,"92":0.05112,"93":0.02556,"94":0.79875,"95":0.04473,"96":0.69012,"97":8.67123,"98":17.09325,"99":0.01917,"100":0.01917,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 67 68 69 70 72 73 74 101"},F:{"70":0.01278,"71":0.00639,"82":0.10224,"83":0.7668,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.03195,"84":0.01278,"85":0.01278,"94":0.00639,"95":0.02556,"96":0.15975,"97":1.29078,"98":4.33242,_:"12 13 14 15 16 17 79 80 81 83 86 87 88 89 90 91 92 93"},E:{"4":0,"13":0.20448,"14":0.84348,"15":0.56871,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.00639,"10.1":0.01278,"11.1":0.04473,"12.1":0.11502,"13.1":1.3419,"14.1":3.84039,"15.1":1.7892,"15.2-15.3":4.54968,"15.4":0.01278},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00956,"9.0-9.2":0,"9.3":0.04542,"10.0-10.2":0.04064,"10.3":0.06694,"11.0-11.2":0,"11.3-11.4":0.24385,"12.0-12.1":0.04781,"12.2-12.5":0.38011,"13.0-13.1":0.02152,"13.2":0.01673,"13.3":0.01913,"13.4-13.7":0.60723,"14.0-14.4":2.24722,"14.5-14.8":5.7065,"15.0-15.1":2.58669,"15.2-15.3":11.81225,"15.4":0.0502},P:{"4":0.06258,"5.0-5.4":0.01024,"6.2-6.4":0.02048,"7.2-7.4":0.04172,"8.2":0.01015,"9.2":0.03129,"10.1":0.02048,"11.1-11.2":0.04348,"12.0":0.02174,"13.0":0.11472,"14.0":0.03261,"15.0":0.13558,"16.0":0.90215},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.17253,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00722},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.1083},Q:{"10.4":0},O:{"0":0.00722},H:{"0":0.00342},L:{"0":11.45817},S:{"2.5":0}}; +module.exports={C:{"48":0.0295,"52":0.0177,"72":0.0118,"78":0.3717,"91":0.118,"95":0.295,"99":0.0531,"100":0.4838,"101":3.2686,"102":0.1711,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 96 97 98 103 104 3.5 3.6"},D:{"18":0.1593,"77":0.3658,"79":0.0177,"84":0.0177,"85":0.0118,"86":0.1121,"87":0.236,"88":0.0826,"89":0.0649,"90":0.0472,"91":0.0177,"93":0.1298,"94":0.3245,"96":0.118,"97":0.0059,"98":0.0944,"99":0.5074,"100":0.7965,"101":3.5636,"102":21.2459,"103":2.1299,"105":0.0118,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 80 81 83 92 95 104 106"},F:{"86":0.7434,"87":0.4248,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.0118,"18":0.0059,"84":0.0118,"90":0.0118,"95":0.0413,"97":0.0059,"99":0.0118,"101":2.7907,"102":3.7642,"103":0.6726,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 89 91 92 93 94 96 98 100"},E:{"4":0,"10":0.0118,"13":0.0472,"14":0.7021,"15":0.1062,_:"0 5 6 7 8 9 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.059,"12.1":0.1121,"13.1":0.5782,"14.1":1.5222,"15.1":0.2124,"15.2-15.3":0.3245,"15.4":1.7877,"15.5":7.9827},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02451,"10.0-10.2":0,"10.3":0.03813,"11.0-11.2":0.00545,"11.3-11.4":0.10078,"12.0-12.1":0.07899,"12.2-12.5":0.41674,"13.0-13.1":0.01362,"13.2":0.00817,"13.3":0.05448,"13.4-13.7":0.05175,"14.0-14.4":0.34864,"14.5-14.8":2.41326,"15.0-15.1":0.63191,"15.2-15.3":1.39184,"15.4":5.40122,"15.5":16.0811,"16.0":0.11167},P:{"4":0.11421,"5.0-5.4":0.0405,"6.2-6.4":0.09113,"7.2-7.4":0.04153,"8.2":0.01021,"9.2":0.02034,"10.1":0.03038,"11.1-11.2":0.35115,"12.0":0.01038,"13.0":0.04153,"14.0":0.07268,"15.0":0.03115,"16.0":0.04131,"17.0":1.71443},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.0123},A:{"11":0.0708,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.0082},Q:{"10.4":0},O:{"0":0.0123},H:{"0":0.08926},L:{"0":11.52197},S:{"2.5":0},R:{_:"0"},M:{"0":0.13527}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MD.js index 3cb7e1a876936a..ef437b812296f7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MD.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MD.js @@ -1 +1 @@ -module.exports={C:{"16":0.00426,"52":0.06389,"55":0.00852,"68":0.00426,"77":0.00426,"78":0.03833,"80":0.00426,"84":0.00426,"85":0.00426,"87":0.24276,"88":0.00852,"89":0.00852,"90":0.00426,"91":0.11073,"92":0.00426,"93":0.01278,"94":0.04259,"95":0.07666,"96":0.79217,"97":0.9242,"98":0.00852,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 79 81 82 83 86 99 3.5 3.6"},D:{"34":0.00426,"38":0.00426,"48":0.0213,"49":0.11073,"53":0.00426,"57":0.00426,"58":0.00852,"59":0.01704,"63":0.00852,"64":0.00852,"67":0.04685,"68":0.00852,"69":0.01704,"70":0.01278,"71":0.02555,"72":0.00852,"73":0.0213,"74":0.03407,"75":0.00426,"76":0.04259,"77":0.02555,"78":0.00852,"79":0.03407,"80":0.07666,"81":0.01278,"83":0.05963,"84":0.09796,"85":0.04685,"86":0.08518,"87":0.05537,"88":0.02981,"89":0.03833,"90":0.07666,"91":0.05111,"92":0.05111,"93":2.71724,"94":0.07666,"95":0.04685,"96":0.86884,"97":9.702,"98":18.10501,"99":0.01278,"100":0.00426,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 50 51 52 54 55 56 60 61 62 65 66 101"},F:{"70":0.02555,"82":0.41738,"83":1.53324,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01704,"85":0.01704,"91":0.00852,"92":0.00852,"96":0.01278,"97":0.33646,"98":1.07753,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 88 89 90 93 94 95"},E:{"4":0,"13":0.04259,"14":0.10648,"15":0.05111,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 15.4","5.1":0.05537,"9.1":0.00852,"11.1":0.00426,"12.1":0.01278,"13.1":0.10648,"14.1":0.26832,"15.1":0.12777,"15.2-15.3":0.24702},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00093,"6.0-6.1":0,"7.0-7.1":0.00371,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.0167,"10.0-10.2":0.00371,"10.3":0.0334,"11.0-11.2":0.01392,"11.3-11.4":0.01113,"12.0-12.1":0.01021,"12.2-12.5":0.30157,"13.0-13.1":0.01485,"13.2":0.00557,"13.3":0.04176,"13.4-13.7":0.16517,"14.0-14.4":0.50479,"14.5-14.8":1.90222,"15.0-15.1":1.56261,"15.2-15.3":4.63771,"15.4":0.04176},P:{"4":0.06258,"5.0-5.4":0.01024,"6.2-6.4":0.02048,"7.2-7.4":0.04172,"8.2":0.01015,"9.2":0.03129,"10.1":0.02048,"11.1-11.2":0.07301,"12.0":0.02086,"13.0":0.11472,"14.0":0.12515,"15.0":0.13558,"16.0":1.89817},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00197,"4.2-4.3":0.00492,"4.4":0,"4.4.3-4.4.4":0.02756},A:{"6":0.0047,"7":0.0047,"8":0.04232,"9":0.01411,"10":0.01411,"11":0.14578,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.06315},Q:{"10.4":0},O:{"0":0.08037},H:{"0":0.20654},L:{"0":41.25343},S:{"2.5":0}}; +module.exports={C:{"50":0.00445,"52":0.09341,"55":0.00445,"60":0.00445,"68":0.01334,"78":0.01779,"83":0.01334,"85":0.00445,"87":0.19571,"88":0.04893,"89":0.0089,"90":0.00445,"91":0.20461,"93":0.01334,"94":0.02669,"95":0.07562,"96":0.15123,"97":0.0089,"98":0.01779,"99":0.19126,"100":0.24909,"101":1.70358,"102":0.04893,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 54 56 57 58 59 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 84 86 92 103 104 3.5","3.6":0.01779},D:{"38":0.01779,"49":0.09341,"53":0.01779,"56":0.0089,"59":0.02224,"61":0.0089,"64":0.01779,"66":0.00445,"67":0.0089,"69":0.01334,"70":0.01334,"71":0.01779,"72":0.0089,"73":0.00445,"74":0.04448,"75":0.22685,"76":0.00445,"77":0.00445,"78":0.0089,"79":0.07562,"80":0.04448,"81":0.01779,"83":0.02669,"84":0.04893,"85":0.02669,"86":0.1201,"87":0.05782,"88":0.01334,"89":0.04003,"90":0.1201,"91":0.24464,"92":0.05338,"93":0.01779,"94":0.07117,"95":0.01334,"96":0.08006,"97":0.11565,"98":0.14234,"99":0.15568,"100":0.556,"101":1.98381,"102":24.59299,"103":2.33075,"104":0.00445,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 57 58 60 62 63 65 68 105 106"},F:{"70":0.00445,"82":0.00445,"83":0.0089,"84":0.01334,"85":0.05782,"86":0.60048,"87":2.02829,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.0089,"97":0.0089,"99":0.00445,"100":0.0089,"101":0.15568,"102":1.15648,"103":0.26688,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 98"},E:{"4":0,"13":0.02224,"14":0.17347,"15":0.01334,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00445,"12.1":0.01334,"13.1":0.1201,"14.1":0.16902,"15.1":0.07562,"15.2-15.3":0.04003,"15.4":0.24019,"15.5":0.44035},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00097,"6.0-6.1":0,"7.0-7.1":0.00969,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05716,"10.0-10.2":0.00194,"10.3":0.04069,"11.0-11.2":0.00872,"11.3-11.4":0.01938,"12.0-12.1":0.01163,"12.2-12.5":0.32841,"13.0-13.1":0.0155,"13.2":0.00969,"13.3":0.02616,"13.4-13.7":0.1676,"14.0-14.4":0.2945,"14.5-14.8":0.89417,"15.0-15.1":0.2635,"15.2-15.3":0.54929,"15.4":1.56455,"15.5":5.29525,"16.0":0.08331},P:{"4":0.11421,"5.0-5.4":0.0405,"6.2-6.4":0.09113,"7.2-7.4":0.04153,"8.2":0.01021,"9.2":0.02034,"10.1":0.03038,"11.1-11.2":0.03115,"12.0":0.01038,"13.0":0.04153,"14.0":0.07268,"15.0":0.03115,"16.0":0.1765,"17.0":1.72348},I:{"0":0,"3":0,"4":0.00617,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00617,"4.2-4.3":0.01542,"4.4":0,"4.4.3-4.4.4":0.05551},A:{"8":0.05782,"11":0.14678,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.06106},H:{"0":0.25226},L:{"0":44.04148},S:{"2.5":0},R:{_:"0"},M:{"0":0.13322}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ME.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ME.js index cd3302474fae6a..1d98ee5236433e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ME.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ME.js @@ -1 +1 @@ -module.exports={C:{"34":0.00341,"48":0.04091,"49":0.00341,"52":0.92043,"56":0.00341,"84":0.01705,"88":0.01705,"89":0.00341,"91":0.01705,"92":0.00682,"93":0.01364,"94":0.01023,"95":0.02045,"96":0.61703,"97":1.28519,"98":0.01364,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 85 86 87 90 99 3.5 3.6"},D:{"11":0.00341,"34":0.00682,"38":0.01364,"49":0.075,"53":0.075,"56":0.00341,"62":0.00341,"63":0.00341,"66":0.05795,"68":0.02727,"75":0.00341,"77":0.00682,"78":0.03068,"79":0.10568,"80":0.02386,"81":0.01023,"83":0.01023,"84":0.03409,"85":0.04773,"86":0.01364,"87":0.08182,"88":0.05795,"89":0.02386,"90":0.01023,"91":0.02727,"92":0.05454,"93":0.075,"94":0.03068,"95":0.04773,"96":0.32045,"97":5.7578,"98":12.30308,"99":0.00682,"100":0.01023,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 57 58 59 60 61 64 65 67 69 70 71 72 73 74 76 101"},F:{"28":0.00682,"40":0.01023,"42":0.01364,"46":0.01705,"68":7.9532,"74":0.00341,"82":0.16022,"83":0.78407,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 41 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00682,"91":0.00682,"92":0.02045,"96":0.00341,"97":0.22159,"98":0.8693,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 93 94 95"},E:{"4":0,"12":0.00682,"13":0.02045,"14":0.06818,"15":0.02386,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.00341,"12.1":0.03068,"13.1":0.05454,"14.1":0.17386,"15.1":0.08523,"15.2-15.3":0.15681},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01388,"8.1-8.4":0.00185,"9.0-9.2":0,"9.3":0.03793,"10.0-10.2":0.00185,"10.3":0.11378,"11.0-11.2":0.0111,"11.3-11.4":0.02313,"12.0-12.1":0.02128,"12.2-12.5":0.49397,"13.0-13.1":0.01573,"13.2":0.00463,"13.3":0.0555,"13.4-13.7":0.18963,"14.0-14.4":0.51155,"14.5-14.8":2.40048,"15.0-15.1":1.20625,"15.2-15.3":4.1192,"15.4":0.02405},P:{"4":0.12465,"5.0-5.4":0.07136,"6.2-6.4":0.02048,"7.2-7.4":0.04155,"8.2":0.01015,"9.2":0.08155,"10.1":0.02048,"11.1-11.2":0.05194,"12.0":0.01039,"13.0":0.07271,"14.0":0.10387,"15.0":0.11426,"16.0":2.2748},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00081,"4.2-4.3":0.00244,"4.4":0,"4.4.3-4.4.4":0.01652},A:{"11":0.08863,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.11203},Q:{"10.4":0},O:{"0":0.01318},H:{"0":0.18093},L:{"0":42.12832},S:{"2.5":0}}; +module.exports={C:{"52":0.5923,"69":0.0034,"78":0.04766,"79":0.01702,"80":0.02723,"88":0.01021,"91":0.01362,"94":0.01362,"95":0.00681,"96":0.01362,"97":0.01021,"98":0.01362,"99":0.04085,"100":0.40508,"101":1.56244,"102":0.0885,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 81 82 83 84 85 86 87 89 90 92 93 103 104 3.5 3.6"},D:{"38":0.01362,"49":0.03064,"53":0.05106,"58":0.10552,"62":0.01021,"63":0.01021,"66":0.0817,"68":0.02042,"69":0.01021,"70":0.00681,"78":0.02042,"79":0.11914,"80":0.04766,"81":0.0034,"83":0.03404,"84":0.11233,"85":0.03404,"86":0.03744,"87":0.04766,"88":0.02042,"89":0.02383,"90":0.01021,"91":0.01021,"92":0.03064,"93":0.03064,"94":0.01702,"95":0.02383,"96":0.20424,"97":0.06127,"98":0.07829,"99":0.11233,"100":0.27232,"101":1.49436,"102":16.44813,"103":1.6203,"104":0.0034,"105":0.0034,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 59 60 61 64 65 67 71 72 73 74 75 76 77 106"},F:{"28":0.01362,"40":0.00681,"42":0.00681,"46":0.01702,"68":4.44222,"82":0.0034,"84":0.00681,"85":0.07148,"86":0.2587,"87":0.77271,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 41 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 78 79 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"84":0.00681,"92":0.02383,"97":0.00681,"98":0.0034,"99":0.0034,"100":0.01021,"101":0.11233,"102":1.1063,"103":0.26892,_:"12 13 14 15 16 17 18 79 80 81 83 85 86 87 88 89 90 91 93 94 95 96"},E:{"4":0,"13":0.01362,"14":0.06468,"15":0.01021,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.0034,"12.1":0.00681,"13.1":0.06808,"14.1":0.15658,"15.1":0.0817,"15.2-15.3":0.03064,"15.4":0.29615,"15.5":0.5106,"16.0":0.0034},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.03571,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02747,"10.0-10.2":0,"10.3":0.1552,"11.0-11.2":0.00961,"11.3-11.4":0.02335,"12.0-12.1":0.01373,"12.2-12.5":0.34612,"13.0-13.1":0.00961,"13.2":0.00687,"13.3":0.04395,"13.4-13.7":0.1552,"14.0-14.4":0.46698,"14.5-14.8":1.64543,"15.0-15.1":0.32139,"15.2-15.3":0.70597,"15.4":2.0561,"15.5":7.62829,"16.0":0.03571},P:{"4":0.16538,"5.0-5.4":0.03046,"6.2-6.4":0.09113,"7.2-7.4":0.01034,"8.2":0.01015,"9.2":0.09137,"10.1":0.03038,"11.1-11.2":0.06202,"12.0":0.03101,"13.0":0.06202,"14.0":0.12404,"15.0":0.03101,"16.0":0.24807,"17.0":2.65646},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00209,"4.2-4.3":0.00471,"4.4":0,"4.4.3-4.4.4":0.02617},A:{"11":0.09531,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01319},H:{"0":0.29974},L:{"0":48.96776},S:{"2.5":0},R:{_:"0"},M:{"0":0.24405}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MG.js index 88395a65173b70..e1288bfd4b1ece 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MG.js @@ -1 +1 @@ -module.exports={C:{"16":0.00964,"28":0.00964,"36":0.00482,"39":0.00964,"40":0.01447,"41":0.00964,"42":0.00482,"47":0.02411,"48":0.02411,"52":0.13019,"56":0.02411,"59":0.00482,"60":0.01929,"61":0.00964,"66":0.01929,"68":0.01929,"69":0.01447,"70":0.01929,"72":0.18324,"75":0.00482,"78":0.05786,"79":0.02411,"80":0.00482,"81":0.00964,"82":0.00964,"83":0.00964,"84":0.01447,"85":0.00964,"86":0.00964,"87":0.01447,"88":0.05304,"89":0.10126,"90":0.00482,"91":0.1543,"92":0.0434,"93":0.0868,"94":0.04822,"95":0.1543,"96":2.02042,"97":3.18734,"98":0.04822,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 43 44 45 46 49 50 51 53 54 55 57 58 62 63 64 65 67 71 73 74 76 77 99 3.5 3.6"},D:{"11":0.07715,"29":0.00482,"38":0.00482,"40":0.05786,"42":0.06269,"43":0.05304,"49":0.09162,"55":0.00964,"57":0.02893,"58":0.00964,"60":0.02411,"61":0.01447,"63":0.01447,"64":0.01447,"65":0.00964,"67":0.03858,"68":0.00482,"69":0.00482,"70":0.00482,"71":0.02893,"72":0.00964,"73":0.01447,"74":0.02893,"75":0.00482,"76":0.07715,"77":0.00964,"78":0.06269,"79":0.03858,"80":0.04822,"81":0.13984,"83":0.0434,"84":0.01929,"85":0.03858,"86":0.20252,"87":0.16877,"88":0.03858,"89":0.18324,"90":0.07233,"91":0.13502,"92":0.10608,"93":0.44845,"94":0.08197,"95":0.19288,"96":1.21032,"97":6.82795,"98":15.09768,"99":0.01447,"100":0.02893,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 39 41 44 45 46 47 48 50 51 52 53 54 56 59 62 66 101"},F:{"37":0.00964,"53":0.08197,"66":0.03375,"68":0.06751,"79":0.01447,"82":0.13019,"83":0.88243,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 60 62 63 64 65 67 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00964,"13":0.00482,"14":0.00964,"15":0.00964,"17":0.00964,"18":0.03375,"84":0.01447,"85":0.01929,"89":0.01447,"90":0.01929,"92":0.01929,"93":0.02893,"94":0.00964,"95":0.02893,"96":0.03858,"97":0.57382,"98":1.7745,_:"16 79 80 81 83 86 87 88 91"},E:{"4":0,"14":0.01447,"15":0.01447,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.07715,"12.1":0.06751,"13.1":0.09644,"14.1":0.13019,"15.1":0.06751,"15.2-15.3":0.05304},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.01522,"5.0-5.1":0.00098,"6.0-6.1":0.00074,"7.0-7.1":0.02356,"8.1-8.4":0.00123,"9.0-9.2":0.00123,"9.3":0.03878,"10.0-10.2":0.04467,"10.3":0.06209,"11.0-11.2":0.01301,"11.3-11.4":0.01031,"12.0-12.1":0.01203,"12.2-12.5":0.27904,"13.0-13.1":0.04172,"13.2":0.00442,"13.3":0.03755,"13.4-13.7":0.07976,"14.0-14.4":0.24051,"14.5-14.8":0.33597,"15.0-15.1":0.29057,"15.2-15.3":0.90852,"15.4":0.01203},P:{"4":0.08639,"5.0-5.4":0.0216,"6.2-6.4":0.05053,"7.2-7.4":0.0108,"8.2":0.01057,"9.2":0.07569,"10.1":0.05053,"11.1-11.2":0.0216,"12.0":0.0432,"13.0":0.0648,"14.0":0.21599,"15.0":0.0756,"16.0":0.46437},I:{"0":0,"3":0,"4":0.00043,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00534,"4.2-4.3":0.01025,"4.4":0,"4.4.3-4.4.4":0.06681},A:{"9":0.01232,"11":0.09858,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.37792},Q:{"10.4":0.01035},O:{"0":1.07682},H:{"0":4.3229},L:{"0":51.88882},S:{"2.5":0.06212}}; +module.exports={C:{"33":0.00462,"41":0.00924,"43":0.00924,"46":0.00462,"47":0.01848,"48":0.00924,"50":0.00462,"51":0.00462,"52":0.0878,"56":0.02311,"57":0.00924,"66":0.00462,"68":0.00924,"72":0.03235,"75":0.00462,"76":0.01386,"78":0.15711,"79":0.00462,"81":0.03235,"82":0.00462,"84":0.00924,"85":0.00924,"88":0.02773,"89":0.03697,"91":0.09242,"92":0.02773,"93":0.01386,"94":0.05083,"95":0.05545,"96":0.04159,"97":0.03235,"98":0.05083,"99":0.16636,"100":0.60535,"101":4.50085,"102":0.1756,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 42 44 45 49 53 54 55 58 59 60 61 62 63 64 65 67 69 70 71 73 74 77 80 83 86 87 90 103 104 3.5 3.6"},D:{"11":0.03697,"25":0.00924,"33":0.00924,"38":0.00924,"40":0.00924,"42":0.06007,"43":0.01848,"47":0.03235,"49":0.06007,"56":0.01848,"57":0.05545,"60":0.00924,"61":0.00462,"63":0.01848,"64":0.00924,"65":0.01848,"67":0.00924,"69":0.00924,"70":0.01848,"71":0.01848,"72":0.00462,"74":0.01386,"75":0.02773,"76":0.01848,"78":0.00924,"79":0.02311,"80":0.02773,"81":0.10628,"83":0.06007,"84":0.00924,"85":0.03697,"86":0.06932,"87":0.13401,"88":0.11553,"89":0.23567,"90":0.06932,"91":0.04159,"92":0.02773,"93":0.12015,"94":0.06007,"95":0.1109,"96":0.14787,"97":0.18022,"98":0.1109,"99":0.34658,"100":0.73936,"101":1.1229,"102":16.9221,"103":1.74212,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 34 35 36 37 39 41 44 45 46 48 50 51 52 53 54 55 58 59 62 66 68 73 77 104 105 106"},F:{"53":0.02311,"76":0.02311,"79":0.01386,"80":0.01386,"81":0.01386,"82":0.00924,"84":0.00462,"85":0.03697,"86":0.06932,"87":0.79943,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00462,"14":0.00924,"15":0.00924,"17":0.00462,"18":0.06007,"84":0.00924,"85":0.02311,"89":0.00924,"90":0.01848,"92":0.03235,"96":0.01848,"97":0.00924,"98":0.00462,"99":0.00924,"100":0.03235,"101":0.26802,"102":1.68204,"103":0.37892,_:"13 16 79 80 81 83 86 87 88 91 93 94 95"},E:{"4":0,"12":0.01848,"13":0.00462,"14":0.01386,"15":0.00924,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.07394,"12.1":0.05545,"13.1":0.04159,"14.1":0.09242,"15.1":0.00924,"15.2-15.3":0.01848,"15.4":0.0878,"15.5":0.16174},G:{"8":0.00257,"3.2":0,"4.0-4.1":0.0015,"4.2-4.3":0.01691,"5.0-5.1":0.00086,"6.0-6.1":0,"7.0-7.1":0.02033,"8.1-8.4":0.00021,"9.0-9.2":0.00086,"9.3":0.0398,"10.0-10.2":0.00835,"10.3":0.08325,"11.0-11.2":0.00407,"11.3-11.4":0.00342,"12.0-12.1":0.0092,"12.2-12.5":0.23219,"13.0-13.1":0.02012,"13.2":0.0184,"13.3":0.0137,"13.4-13.7":0.05029,"14.0-14.4":0.12433,"14.5-14.8":0.16093,"15.0-15.1":0.09523,"15.2-15.3":0.13525,"15.4":0.3914,"15.5":0.69828,"16.0":0.00364},P:{"4":0.01106,"5.0-5.4":0.03107,"6.2-6.4":0.05107,"7.2-7.4":0.01106,"8.2":0.01021,"9.2":0.076,"10.1":0.03064,"11.1-11.2":0.0819,"12.0":0.04425,"13.0":0.09955,"14.0":0.02212,"15.0":0.02212,"16.0":0.21017,"17.0":0.55308},I:{"0":0,"3":0,"4":0.00049,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01225,"4.2-4.3":0.01298,"4.4":0,"4.4.3-4.4.4":0.0926},A:{"9":0.01386,"11":0.05083,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.01076},Q:{"10.4":0},O:{"0":0.92502},H:{"0":3.3095},L:{"0":57.42612},S:{"2.5":0.11832},R:{_:"0"},M:{"0":0.29041}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MH.js index 0fedaeae19395c..5eb0021260b81c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MH.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MH.js @@ -1 +1 @@ -module.exports={C:{"78":0.00723,"85":0.00241,"91":0.00723,"95":0.01205,"96":0.20236,"97":0.72029,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 86 87 88 89 90 92 93 94 98 99 3.5 3.6"},D:{"36":0.00241,"60":0.00241,"73":0.15418,"75":0.01686,"80":0.00723,"81":0.01205,"84":0.01927,"87":0.02168,"90":0.00241,"92":0.07468,"93":0.11081,"94":0.00482,"95":0.00482,"96":0.10359,"97":5.90205,"98":11.89564,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 74 76 77 78 79 83 85 86 88 89 91 99 100 101"},F:{"82":0.00723,"83":0.03614,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00241,"80":0.01205,"84":0.02168,"89":0.00723,"90":0.00241,"92":0.00964,"95":0.01205,"97":0.20717,"98":0.84797,_:"12 13 14 15 16 17 79 81 83 85 86 87 88 91 93 94 96"},E:{"4":0,"13":0.00482,"14":0.01205,"15":0.00241,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.4","12.1":0.053,"13.1":0.40471,"14.1":0.67934,"15.1":0.06023,"15.2-15.3":0.01686},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00388,"9.0-9.2":0,"9.3":0.00388,"10.0-10.2":0,"10.3":0.02286,"11.0-11.2":0.16603,"11.3-11.4":0.00776,"12.0-12.1":0.00388,"12.2-12.5":0.06296,"13.0-13.1":0.00173,"13.2":0.00388,"13.3":0.00561,"13.4-13.7":0.02458,"14.0-14.4":0.68483,"14.5-14.8":1.30023,"15.0-15.1":0.95997,"15.2-15.3":1.05959,"15.4":0},P:{"4":0.02189,"5.0-5.4":0.01033,"6.2-6.4":0.02087,"7.2-7.4":0.03284,"8.2":0.01057,"9.2":0.02066,"10.1":0.01052,"11.1-11.2":0.02189,"12.0":0.01095,"13.0":0.03284,"14.0":0.08588,"15.0":0.09661,"16.0":0.35025},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.05782,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.03036},Q:{"10.4":0},O:{"0":0.90333},H:{"0":0.02156},L:{"0":12.69557},S:{"2.5":0}}; +module.exports={C:{"68":0.00562,"77":0.01685,"78":0.00562,"79":0.01123,"91":0.03932,"94":0.00562,"98":0.00562,"99":0.07302,"100":0.04494,"101":0.84817,"102":0.05055,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 80 81 82 83 84 85 86 87 88 89 90 92 93 95 96 97 103 104 3.5 3.6"},D:{"67":0.00562,"73":0.27523,"75":0.21906,"76":0.07864,"77":0.01685,"79":0.93242,"80":0.01685,"83":0.02809,"84":0.01685,"87":0.03932,"88":0.00562,"89":0.00562,"90":0.01685,"91":0.02809,"92":0.05617,"93":0.12357,"94":0.02247,"96":0.02247,"98":0.02809,"99":0.25838,"100":0.20221,"101":4.80815,"102":30.74746,"103":2.25242,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 74 78 81 85 86 95 97 104 105 106"},F:{"85":0.00562,"86":0.06179,"87":0.05617,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.08987,"84":0.02809,"92":0.03932,"100":0.05055,"101":0.60102,"102":5.21258,"103":0.38757,_:"13 14 15 16 17 18 79 80 81 83 85 86 87 88 89 90 91 93 94 95 96 97 98 99"},E:{"4":0,"13":0.00562,"14":2.05582,"15":0.17413,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 12.1 16.0","10.1":0.00562,"11.1":0.02247,"13.1":0.90434,"14.1":0.36511,"15.1":0.0674,"15.2-15.3":0.15166,"15.4":0.61787,"15.5":0.27523},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.85598,"10.0-10.2":0,"10.3":0.10412,"11.0-11.2":0.16633,"11.3-11.4":0,"12.0-12.1":0.05679,"12.2-12.5":0.20825,"13.0-13.1":0.01082,"13.2":0.00541,"13.3":0.01082,"13.4-13.7":1.5916,"14.0-14.4":0.38134,"14.5-14.8":1.06963,"15.0-15.1":1.24813,"15.2-15.3":1.53886,"15.4":2.05002,"15.5":4.22038,"16.0":0},P:{"4":0.09456,"5.0-5.4":0.02031,"6.2-6.4":0.01015,"7.2-7.4":0.18278,"8.2":0.01021,"9.2":0.04062,"10.1":0.03064,"11.1-11.2":0.05218,"12.0":0.01051,"13.0":0.03131,"14.0":0.05253,"15.0":0.04175,"16.0":0.04175,"17.0":4.28951},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00231,"4.2-4.3":0.00404,"4.4":0,"4.4.3-4.4.4":0.01557},A:{"8":0.01123,"10":0.02247,"11":0.02247,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.3155},H:{"0":0.02074},L:{"0":27.89418},S:{"2.5":0},R:{_:"0"},M:{"0":0.16652}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MK.js index 44d3fec3acfe9c..7756caa9d6b335 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MK.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MK.js @@ -1 +1 @@ -module.exports={C:{"40":0.02095,"44":0.00698,"47":0.01047,"48":0.00349,"50":0.00698,"51":0.01396,"52":0.2723,"56":0.01047,"65":0.00349,"66":0.00698,"68":0.01047,"71":0.00349,"72":0.01746,"78":0.02095,"79":0.02793,"80":0.02095,"81":0.01047,"82":0.04538,"83":0.00349,"84":0.00698,"85":0.00698,"87":0.00349,"88":0.01047,"91":0.04189,"92":0.00349,"93":0.00698,"94":0.04538,"95":0.09077,"96":0.78897,"97":1.47669,"98":0.01047,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 45 46 49 53 54 55 57 58 59 60 61 62 63 64 67 69 70 73 74 75 76 77 86 89 90 99 3.5 3.6"},D:{"22":0.00349,"26":0.00698,"34":0.00698,"38":0.01047,"47":0.05237,"48":0.01396,"49":0.15011,"53":0.03491,"56":0.01396,"58":0.00698,"63":0.01047,"64":0.01047,"66":0.01396,"68":0.01047,"69":0.02095,"70":0.00349,"71":0.01746,"72":0.01396,"73":0.00349,"74":0.00698,"76":0.00698,"77":0.01396,"78":0.02793,"79":0.10124,"80":0.01746,"81":0.01047,"83":0.05935,"84":0.13615,"85":0.12568,"86":0.17106,"87":0.2339,"88":0.02793,"89":0.02444,"90":0.03142,"91":0.06633,"92":0.05935,"93":0.02793,"94":0.0384,"95":0.11869,"96":0.40845,"97":7.2543,"98":17.09892,"99":0.01047,"100":0.00698,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 50 51 52 54 55 57 59 60 61 62 65 67 75 101"},F:{"28":0.00349,"31":0.01047,"36":0.00698,"46":0.00698,"52":0.01396,"68":0.01396,"69":0.01396,"70":0.00698,"71":0.01746,"72":0.00349,"73":0.01047,"80":0.00349,"82":0.26881,"83":1.1625,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 53 54 55 56 57 58 60 62 63 64 65 66 67 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.03491,"18":0.03142,"84":0.01047,"85":0.00698,"87":0.00698,"92":0.01746,"94":0.00698,"95":0.00349,"96":0.03491,"97":0.30721,"98":1.21836,_:"12 13 14 15 17 79 80 81 83 86 88 89 90 91 93"},E:{"4":0,"11":0.00349,"13":0.00698,"14":0.04538,"15":0.05586,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00698,"12.1":0.00349,"13.1":0.03142,"14.1":0.11171,"15.1":0.07331,"15.2-15.3":0.09077,"15.4":0.01746},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00232,"6.0-6.1":0,"7.0-7.1":0.01275,"8.1-8.4":0,"9.0-9.2":0.00464,"9.3":0.0313,"10.0-10.2":0.00464,"10.3":0.04406,"11.0-11.2":0.01739,"11.3-11.4":0.04058,"12.0-12.1":0.02087,"12.2-12.5":0.49739,"13.0-13.1":0.01159,"13.2":0.01043,"13.3":0.0858,"13.4-13.7":0.22493,"14.0-14.4":0.57855,"14.5-14.8":2.65738,"15.0-15.1":1.77506,"15.2-15.3":5.5362,"15.4":0.03014},P:{"4":0.07399,"5.0-5.4":0.89089,"6.2-6.4":0.05053,"7.2-7.4":0.03115,"8.2":0.01057,"9.2":0.07569,"10.1":0.05053,"11.1-11.2":0.13741,"12.0":0.02114,"13.0":0.09513,"14.0":0.11627,"15.0":0.09513,"16.0":1.92377},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00393,"4.2-4.3":0.00393,"4.4":0,"4.4.3-4.4.4":0.02469},A:{"8":0.02095,"9":0.02095,"10":0.00349,"11":0.10822,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.11716},Q:{"10.4":0},O:{"0":0.01302},H:{"0":0.15406},L:{"0":45.88336},S:{"2.5":0}}; +module.exports={C:{"40":0.01279,"47":0.00639,"48":0.0032,"51":0.01599,"52":0.1087,"56":0.00639,"61":0.01279,"65":0.01279,"68":0.01599,"72":0.00959,"78":0.01599,"81":0.01279,"82":0.01918,"88":0.0032,"89":0.0032,"91":0.02877,"92":0.0032,"93":0.0032,"94":0.00959,"95":0.01279,"96":0.0032,"97":0.00639,"98":0.00959,"99":0.04796,"100":0.27175,"101":1.80311,"102":0.05115,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 49 50 53 54 55 57 58 59 60 62 63 64 66 67 69 70 71 73 74 75 76 77 79 80 83 84 85 86 87 90 103 104 3.5 3.6"},D:{"22":0.0032,"28":0.01279,"38":0.00959,"47":0.04476,"49":0.09591,"53":0.01279,"55":0.0032,"56":0.00639,"58":0.0032,"63":0.19502,"64":0.00959,"65":0.0032,"66":0.00639,"68":0.01599,"69":0.03197,"70":0.00639,"71":0.00639,"72":0.00959,"73":0.01279,"74":0.00639,"75":0.00639,"76":0.00639,"79":0.17584,"80":0.01918,"81":0.00959,"83":0.05435,"84":0.15985,"85":0.07673,"86":0.06714,"87":0.12788,"88":0.01599,"89":0.01918,"90":0.01918,"91":0.01918,"92":0.01918,"93":0.01279,"94":0.01279,"95":0.02558,"96":0.04476,"97":0.03517,"98":0.05435,"99":0.07353,"100":0.18543,"101":1.08378,"102":19.5017,"103":1.83508,"104":0.00959,"105":0.0032,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 57 59 60 61 62 67 77 78 106"},F:{"28":0.01279,"36":0.00959,"40":0.00639,"46":0.00639,"68":0.00959,"69":0.00639,"70":0.00959,"71":0.01279,"72":0.00639,"73":0.00959,"84":0.00959,"85":0.04156,"86":0.46037,"87":0.77367,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.0032,"18":0.01599,"83":0.0032,"84":0.00639,"85":0.00959,"86":0.00639,"92":0.00639,"98":0.00639,"99":0.0032,"100":0.00959,"101":0.15985,"102":1.2756,"103":0.24617,_:"12 13 14 15 17 79 80 81 87 88 89 90 91 93 94 95 96 97"},E:{"4":0,"13":0.01279,"14":0.01918,"15":0.00959,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01918,"12.1":0.0032,"13.1":0.01918,"14.1":0.07353,"15.1":0.02558,"15.2-15.3":0.01599,"15.4":0.06714,"15.5":0.25256},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00144,"6.0-6.1":0,"7.0-7.1":0.01725,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02156,"10.0-10.2":0.00575,"10.3":0.03019,"11.0-11.2":0.02156,"11.3-11.4":0.01438,"12.0-12.1":0.01294,"12.2-12.5":0.52758,"13.0-13.1":0.00863,"13.2":0.01006,"13.3":0.0575,"13.4-13.7":0.19551,"14.0-14.4":0.44852,"14.5-14.8":1.70637,"15.0-15.1":0.31051,"15.2-15.3":0.57646,"15.4":2.0327,"15.5":8.31048,"16.0":0.04025},P:{"4":0.21499,"5.0-5.4":0.03107,"6.2-6.4":0.05107,"7.2-7.4":0.0205,"8.2":0.01021,"9.2":0.076,"10.1":0.03064,"11.1-11.2":0.0819,"12.0":0.03071,"13.0":0.06143,"14.0":0.07166,"15.0":0.03071,"16.0":0.15357,"17.0":1.54591},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01445,"4.2-4.3":0.0044,"4.4":0,"4.4.3-4.4.4":0.02198},A:{"8":0.01279,"11":0.07673,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02041},H:{"0":0.18681},L:{"0":52.1105},S:{"2.5":0},R:{_:"0"},M:{"0":0.10886}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ML.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ML.js index b14ac463dabbeb..d00d09fcce596c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ML.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ML.js @@ -1 +1 @@ -module.exports={C:{"41":0.00228,"43":0.00228,"47":0.00685,"48":0.00685,"52":0.00228,"56":0.00457,"57":0.00228,"72":0.02741,"78":0.00685,"87":0.00457,"88":0.00457,"89":0.00914,"91":0.02512,"93":0.00457,"94":0.00457,"95":0.01142,"96":1.20824,"97":1.39096,"98":0.00457,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 44 45 46 49 50 51 53 54 55 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 90 92 99 3.5 3.6"},D:{"11":0.00685,"30":0.00228,"38":0.00228,"43":0.00914,"49":0.00457,"50":0.00228,"57":0.00685,"60":0.00457,"63":0.00685,"65":0.00228,"68":0.01142,"76":0.01142,"77":0.01142,"78":0.00228,"79":0.02741,"80":0.01142,"81":0.00685,"83":0.00228,"84":0.00228,"85":0.00228,"86":0.00457,"87":0.02284,"88":0.00457,"89":0.00685,"90":0.01142,"91":0.01142,"92":0.02512,"93":0.07309,"94":0.00685,"95":0.01827,"96":2.18122,"97":3.7686,"98":6.64644,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 51 52 53 54 55 56 58 59 61 62 64 66 67 69 70 71 72 73 74 75 99 100 101"},F:{"51":0.00914,"60":0.00228,"79":0.00228,"80":0.00228,"82":0.08222,"83":0.4431,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 52 53 54 55 56 57 58 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01142,"13":0.01142,"14":0.00685,"15":0.00228,"16":0.00914,"17":0.00914,"18":0.27865,"84":0.00685,"85":0.00685,"89":0.02741,"90":0.00457,"92":0.01142,"93":0.00228,"95":0.00457,"96":0.02284,"97":0.47964,"98":1.41151,_:"79 80 81 83 86 87 88 91 94"},E:{"4":0,"14":0.02969,"15":0.00685,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 9.1 10.1 15.4","5.1":0.00228,"7.1":0.00914,"11.1":0.00228,"12.1":0.00685,"13.1":0.03654,"14.1":0.04111,"15.1":0.01827,"15.2-15.3":0.02969},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.02516,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03972,"10.0-10.2":0,"10.3":0.14961,"11.0-11.2":0.08209,"11.3-11.4":0.04501,"12.0-12.1":0.03177,"12.2-12.5":4.76359,"13.0-13.1":0.00662,"13.2":0.04369,"13.3":0.05296,"13.4-13.7":0.38924,"14.0-14.4":1.69996,"14.5-14.8":1.6801,"15.0-15.1":1.81382,"15.2-15.3":2.38842,"15.4":0.02118},P:{"4":0.30992,"5.0-5.4":0.01033,"6.2-6.4":0.02087,"7.2-7.4":0.24793,"8.2":0.01057,"9.2":0.02066,"10.1":0.01052,"11.1-11.2":0.09297,"12.0":0.42355,"13.0":0.10331,"14.0":0.2376,"15.0":0.21694,"16.0":0.83677},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00631,"4.2-4.3":0.00253,"4.4":0,"4.4.3-4.4.4":0.19949},A:{"9":0.00228,"11":0.05938,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.24691},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.03086},Q:{"10.4":0.00772},O:{"0":0.93364},H:{"0":0.54057},L:{"0":61.78002},S:{"2.5":0.02315}}; +module.exports={C:{"43":0.00471,"47":0.01649,"49":0.00236,"52":0.00942,"56":0.00942,"67":0.00236,"72":0.00707,"78":0.00942,"84":0.00236,"87":0.00471,"89":0.00236,"91":0.0212,"93":0.00707,"98":0.00471,"99":0.67353,"100":0.14837,"101":1.77332,"102":0.03297,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 48 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 88 90 92 94 95 96 97 103 104 3.5 3.6"},D:{"22":0.00236,"33":0.00236,"55":0.00471,"60":0.00236,"65":0.00471,"70":0.00236,"74":0.0942,"75":0.00236,"76":0.08714,"77":0.00471,"79":0.02591,"80":0.00707,"81":0.00236,"84":0.00236,"86":0.00471,"87":0.01178,"88":0.00471,"89":0.00236,"90":0.00471,"91":0.00471,"92":0.00707,"93":0.24492,"94":0.00471,"95":0.01178,"96":0.0212,"97":0.01413,"98":0.01413,"99":0.0212,"100":0.12717,"101":0.57698,"102":10.39733,"103":0.7536,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 56 57 58 59 61 62 63 64 66 67 68 69 71 72 73 78 83 85 104 105 106"},F:{"58":0.00236,"83":0.00471,"85":0.00471,"86":0.02355,"87":0.15308,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.04004,"13":0.01178,"14":0.00942,"15":0.00942,"16":0.00471,"17":0.00942,"18":0.2355,"84":0.00942,"85":0.00236,"86":0.00471,"89":0.00942,"90":0.00471,"92":0.01178,"95":0.00471,"96":0.00236,"98":0.00942,"99":0.00707,"100":0.00942,"101":0.60524,"102":2.15954,"103":0.471,_:"79 80 81 83 87 88 91 93 94 97"},E:{"4":0,"13":0.00471,"14":0.10362,"15":0.01178,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00236,"12.1":0.00236,"13.1":0.01884,"14.1":0.01884,"15.1":0.01178,"15.2-15.3":0.01413,"15.4":0.02826,"15.5":0.06359},G:{"8":0.00723,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.06071,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05493,"10.0-10.2":0,"10.3":0.08529,"11.0-11.2":0.04626,"11.3-11.4":0.00723,"12.0-12.1":0.02891,"12.2-12.5":2.02951,"13.0-13.1":0.02602,"13.2":0.00867,"13.3":1.00608,"13.4-13.7":0.08384,"14.0-14.4":1.86038,"14.5-14.8":1.15063,"15.0-15.1":1.74618,"15.2-15.3":1.0162,"15.4":1.65656,"15.5":3.4013,"16.0":0.0795},P:{"4":0.12185,"5.0-5.4":0.02031,"6.2-6.4":0.01015,"7.2-7.4":0.18278,"8.2":0.01021,"9.2":0.04062,"10.1":0.03064,"11.1-11.2":0.08124,"12.0":0.0313,"13.0":0.10155,"14.0":0.17263,"15.0":0.05077,"16.0":0.37572,"17.0":0.91391},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00099,"4.2-4.3":0.00345,"4.4":0,"4.4.3-4.4.4":0.08729},A:{"9":0.00732,"11":0.06098,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.01529},O:{"0":1.46},H:{"0":1.24474},L:{"0":60.71546},S:{"2.5":0.02293},R:{_:"0"},M:{"0":0.07644}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MM.js index 0ae6a965536fe6..bbfc4e6485b544 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MM.js @@ -1 +1 @@ -module.exports={C:{"29":0.00227,"30":0.00454,"34":0.00227,"35":0.00681,"36":0.00681,"37":0.00227,"39":0.00454,"41":0.00908,"43":0.00908,"44":0.00454,"45":0.00454,"46":0.00227,"47":0.00681,"48":0.00681,"52":0.00908,"54":0.00454,"56":0.01135,"57":0.00681,"58":0.00227,"60":0.14975,"61":0.00454,"62":0.00454,"66":0.02269,"67":0.00227,"68":0.00227,"69":0.00908,"71":0.00227,"72":0.02042,"73":0.00227,"76":0.00227,"77":0.00227,"78":0.09984,"79":0.00227,"81":0.00454,"82":0.00227,"84":0.00908,"85":0.00454,"87":0.00681,"88":0.02042,"89":0.01361,"90":0.00681,"91":0.02723,"92":0.00908,"93":0.01588,"94":0.02723,"95":0.05219,"96":0.8418,"97":1.36594,"98":0.08849,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 31 32 33 38 40 42 49 50 51 53 55 59 63 64 65 70 74 75 80 83 86 99 3.5 3.6"},D:{"11":0.00454,"22":0.00227,"31":0.00227,"32":0.00681,"37":0.00681,"38":0.00681,"40":0.00227,"49":0.00908,"53":0.02723,"54":0.00227,"56":0.00454,"57":0.00227,"61":0.00454,"62":0.00454,"63":0.01135,"65":0.00681,"66":0.00227,"67":0.00454,"70":0.00454,"71":0.01361,"74":0.00681,"76":0.00454,"78":0.00681,"79":0.04311,"80":0.01361,"81":0.01361,"83":0.01361,"84":0.00908,"85":0.00908,"86":0.01588,"87":0.04765,"88":0.01588,"89":0.02042,"90":0.01361,"91":0.0295,"92":0.05673,"93":0.02269,"94":0.02496,"95":0.04765,"96":0.2927,"97":3.57821,"98":9.12819,"99":0.00454,"100":0.00454,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 33 34 35 36 39 41 42 43 44 45 46 47 48 50 51 52 55 58 59 60 64 68 69 72 73 75 77 101"},F:{"36":0.00681,"46":0.00454,"54":0.01135,"77":0.00227,"79":0.00227,"80":0.01815,"81":0.00227,"82":0.0953,"83":0.33808,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00908,"14":0.00227,"15":0.00454,"16":0.00454,"17":0.00681,"18":0.03404,"84":0.00681,"85":0.00454,"89":0.00908,"90":0.00227,"91":0.00227,"92":0.02042,"93":0.00227,"94":0.00454,"95":0.00454,"96":0.02496,"97":0.36758,"98":1.40678,_:"13 79 80 81 83 86 87 88"},E:{"4":0,"12":0.00454,"13":0.02269,"14":0.14068,"15":0.08168,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00908,"11.1":0.01135,"12.1":0.02042,"13.1":0.11118,"14.1":0.34035,"15.1":0.21102,"15.2-15.3":0.39708,"15.4":0.00454},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00233,"5.0-5.1":0.0035,"6.0-6.1":0.00233,"7.0-7.1":0.0251,"8.1-8.4":0.0035,"9.0-9.2":0.007,"9.3":0.06713,"10.0-10.2":0.00292,"10.3":0.08114,"11.0-11.2":0.01634,"11.3-11.4":0.01051,"12.0-12.1":0.00992,"12.2-12.5":0.3088,"13.0-13.1":0.01518,"13.2":0.00584,"13.3":0.03327,"13.4-13.7":0.10799,"14.0-14.4":0.31581,"14.5-14.8":0.85869,"15.0-15.1":1.16108,"15.2-15.3":2.76288,"15.4":0.03561},P:{"4":0.16332,"5.0-5.4":0.03097,"6.2-6.4":0.02048,"7.2-7.4":0.02178,"8.2":0.11355,"9.2":0.08258,"10.1":0.02048,"11.1-11.2":0.02178,"12.0":0.01089,"13.0":0.11977,"14.0":0.07621,"15.0":0.04355,"16.0":0.84925},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00394,"4.2-4.3":0.00507,"4.4":0,"4.4.3-4.4.4":0.23838},A:{"11":0.06807,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.17781},Q:{"10.4":0.03092},O:{"0":1.71628},H:{"0":0.44647},L:{"0":41.94551},S:{"2.5":0}}; +module.exports={C:{"29":0.00605,"30":0.00908,"35":0.00908,"36":0.00908,"37":0.00605,"39":0.00303,"40":0.00605,"41":0.03935,"42":0.00605,"43":0.00605,"44":0.00605,"45":0.00605,"47":0.00908,"48":0.00303,"49":0.00303,"50":0.00303,"52":0.00908,"54":0.00605,"56":0.00908,"57":0.00605,"58":0.00303,"60":0.17254,"61":0.00605,"62":0.00303,"66":0.05449,"67":0.00303,"69":0.00303,"70":0.00605,"71":0.00908,"72":0.02724,"76":0.01211,"78":0.02422,"79":0.00605,"81":0.00605,"83":0.00908,"84":0.00908,"85":0.00605,"87":0.00605,"88":0.0333,"89":0.04843,"90":0.00605,"91":0.02422,"92":0.00605,"93":0.00908,"94":0.01211,"95":0.01514,"96":0.01816,"97":0.02724,"98":0.02119,"99":0.06659,"100":0.28757,"101":2.58809,"102":0.27243,"103":0.00908,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 31 32 33 34 38 46 51 53 55 59 63 64 65 68 73 74 75 77 80 82 86 104 3.5 3.6"},D:{"11":0.00605,"31":0.00605,"32":0.00908,"38":0.0333,"46":0.00303,"47":0.00303,"49":0.00605,"53":0.00605,"55":0.00303,"56":0.00303,"58":0.00303,"61":0.00605,"62":0.01211,"63":0.01211,"64":0.00303,"65":0.00908,"67":0.01816,"68":0.00303,"69":0.00908,"70":0.01211,"71":0.02119,"72":0.00303,"74":0.02724,"75":0.00605,"76":0.00908,"77":0.00908,"78":0.01211,"79":0.08778,"80":0.01816,"81":0.03632,"83":0.01211,"84":0.02119,"85":0.01211,"86":0.01816,"87":0.0333,"88":0.02724,"89":0.03632,"90":0.02119,"91":0.02119,"92":0.06962,"93":0.01211,"94":0.01816,"95":0.02422,"96":0.04843,"97":0.06054,"98":0.05751,"99":0.05751,"100":0.17557,"101":0.84151,"102":14.80203,"103":1.59523,"104":0.01514,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 33 34 35 36 37 39 40 41 42 43 44 45 48 50 51 52 54 57 59 60 66 73 105 106"},F:{"28":0.00605,"36":0.00605,"46":0.00908,"73":0.00303,"74":0.00605,"79":0.00605,"85":0.00908,"86":0.10897,"87":0.34811,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 75 76 77 78 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01816,"13":0.00605,"14":0.00605,"15":0.00605,"16":0.00605,"17":0.00908,"18":0.0787,"84":0.00908,"85":0.00605,"86":0.00605,"89":0.01211,"90":0.00908,"92":0.03632,"95":0.00303,"96":0.00908,"97":0.00303,"98":0.00908,"99":0.01211,"100":0.01211,"101":0.21492,"102":1.87674,"103":0.43589,_:"79 80 81 83 87 88 91 93 94"},E:{"4":0,"13":0.02422,"14":0.13924,"15":0.03935,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02119,"11.1":0.01816,"12.1":0.03632,"13.1":0.09384,"14.1":0.22097,"15.1":0.09686,"15.2-15.3":0.06054,"15.4":0.37838,"15.5":0.96259,"16.0":0.00605},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00236,"6.0-6.1":0.00314,"7.0-7.1":0.01257,"8.1-8.4":0.01335,"9.0-9.2":0.00236,"9.3":0.10134,"10.0-10.2":0.01257,"10.3":0.12333,"11.0-11.2":0.02985,"11.3-11.4":0.01178,"12.0-12.1":0.01885,"12.2-12.5":0.42342,"13.0-13.1":0.01021,"13.2":0.00864,"13.3":0.03299,"13.4-13.7":0.0982,"14.0-14.4":0.25295,"14.5-14.8":0.55147,"15.0-15.1":0.30716,"15.2-15.3":0.45877,"15.4":1.25613,"15.5":4.08026,"16.0":0.02592},P:{"4":0.19833,"5.0-5.4":0.03046,"6.2-6.4":0.0206,"7.2-7.4":0.05219,"8.2":0.01015,"9.2":0.12537,"10.1":0.01045,"11.1-11.2":0.04175,"12.0":0.01044,"13.0":0.04175,"14.0":0.05219,"15.0":0.02088,"16.0":0.14614,"17.0":1.15866},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00327,"4.2-4.3":0.00784,"4.4":0,"4.4.3-4.4.4":0.45608},A:{"9":0.00395,"11":0.08686,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.03487},O:{"0":2.15466},H:{"0":0.56774},L:{"0":57.20193},S:{"2.5":0},R:{_:"0"},M:{"0":0.19524}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MN.js index b72bd3b0cf030a..eb8de3dffa1598 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MN.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MN.js @@ -1 +1 @@ -module.exports={C:{"52":0.04244,"72":0.00386,"78":0.01543,"81":0.01543,"84":0.00772,"87":0.00772,"88":0.01929,"89":0.01929,"90":0.00386,"91":0.01929,"92":0.00386,"94":0.00772,"95":0.01929,"96":0.58256,"97":1.19984,"98":0.05015,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 82 83 85 86 93 99 3.5 3.6"},D:{"38":0.00386,"49":0.04244,"53":0.03086,"63":0.01543,"65":0.00386,"66":0.00386,"67":0.00772,"69":0.00772,"70":0.01543,"71":0.00772,"72":0.00386,"73":0.01543,"74":0.02315,"76":0.01157,"78":0.02701,"79":0.03858,"80":0.01157,"81":0.01157,"83":0.01157,"84":0.02701,"85":0.01929,"86":0.06173,"87":0.09259,"88":0.02315,"89":0.03086,"90":0.03086,"91":0.07716,"92":0.09259,"93":0.08488,"94":0.05015,"95":0.06559,"96":0.73688,"97":6.4853,"98":19.69895,"99":0.02315,"100":0.01929,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 64 68 75 77 101"},F:{"28":0.00386,"46":0.00772,"82":0.21991,"83":0.90277,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00772,"16":0.00772,"17":0.00386,"18":0.05015,"84":0.01157,"89":0.01157,"90":0.01157,"91":0.01929,"92":0.01929,"93":0.01543,"94":0.00772,"95":0.01929,"96":0.03472,"97":0.34722,"98":2.09489,_:"13 14 15 79 80 81 83 85 86 87 88"},E:{"4":0,"13":0.01543,"14":0.20062,"15":0.09259,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.00772,"10.1":0.00772,"11.1":0.02315,"12.1":0.03086,"13.1":0.06559,"14.1":0.54398,"15.1":0.28549,"15.2-15.3":0.41281,"15.4":0.01543},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00602,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.09636,"10.0-10.2":0.00201,"10.3":0.05019,"11.0-11.2":0.01606,"11.3-11.4":0.03814,"12.0-12.1":0.01606,"12.2-12.5":0.95758,"13.0-13.1":0.03212,"13.2":0.02208,"13.3":0.20075,"13.4-13.7":0.267,"14.0-14.4":1.45344,"14.5-14.8":3.27425,"15.0-15.1":4.18365,"15.2-15.3":9.34495,"15.4":0.10238},P:{"4":0.30583,"5.0-5.4":0.07136,"6.2-6.4":0.02048,"7.2-7.4":0.24466,"8.2":0.01015,"9.2":0.08155,"10.1":0.02048,"11.1-11.2":0.09175,"12.0":0.03058,"13.0":0.21408,"14.0":0.36699,"15.0":0.25486,"16.0":4.02675},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00101,"4.2-4.3":0.0037,"4.4":0,"4.4.3-4.4.4":0.01986},A:{"8":0.00817,"10":0.00408,"11":0.05719,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.23958},Q:{"10.4":0.01229},O:{"0":0.11672},H:{"0":0.16284},L:{"0":37.06002},S:{"2.5":0}}; +module.exports={C:{"52":0.0313,"72":0.00391,"78":0.01174,"84":0.00783,"87":0.01174,"88":0.0313,"89":0.02348,"90":0.00391,"91":0.01957,"92":0.00391,"93":0.00783,"94":0.00783,"95":0.00783,"96":0.0313,"98":0.00783,"99":0.01957,"100":0.20739,"101":1.25607,"102":0.03913,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 97 103 104 3.5 3.6"},D:{"49":0.03913,"50":0.00391,"63":0.00783,"65":0.00391,"66":0.00783,"67":0.00783,"69":0.00783,"70":0.01565,"72":0.00391,"74":0.03913,"76":0.00783,"77":0.01565,"78":0.00783,"79":0.06261,"80":0.01957,"81":0.01565,"83":0.01565,"84":0.03522,"85":0.01174,"86":0.03913,"87":0.07043,"88":0.02348,"89":0.04304,"90":0.04696,"91":0.0587,"92":0.06652,"93":0.02348,"94":0.03522,"95":0.01957,"96":0.10956,"97":0.09391,"98":0.11348,"99":0.19174,"100":0.32087,"101":1.52998,"102":23.02801,"103":2.13259,"104":0.01174,"105":0.00783,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 58 59 60 61 62 64 68 71 73 75 106"},F:{"28":0.00783,"79":0.00783,"85":0.01565,"86":0.32869,"87":0.67695,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.00391,"18":0.01957,"84":0.00783,"88":0.00391,"89":0.01174,"90":0.00783,"91":0.02348,"92":0.02739,"94":0.00783,"95":0.00783,"96":0.01174,"97":0.01174,"98":0.01174,"99":0.01957,"100":0.02739,"101":0.30913,"102":2.18345,"103":0.39913,_:"12 13 14 15 17 79 80 81 83 85 86 87 93"},E:{"4":0,"8":0.00783,"13":0.02739,"14":0.11739,"15":0.05087,_:"0 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01565,"12.1":0.04696,"13.1":0.07826,"14.1":0.36782,"15.1":0.11739,"15.2-15.3":0.07043,"15.4":0.38347,"15.5":0.73564},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05934,"10.0-10.2":0,"10.3":0.05116,"11.0-11.2":0.0266,"11.3-11.4":0.04707,"12.0-12.1":0.01023,"12.2-12.5":0.76534,"13.0-13.1":0.03888,"13.2":0.01637,"13.3":0.08799,"13.4-13.7":0.35811,"14.0-14.4":0.81446,"14.5-14.8":1.90926,"15.0-15.1":0.97817,"15.2-15.3":1.9154,"15.4":4.16232,"15.5":9.12068,"16.0":0.03888},P:{"4":0.35531,"5.0-5.4":0.03046,"6.2-6.4":0.09113,"7.2-7.4":0.12182,"8.2":0.01015,"9.2":0.09137,"10.1":0.03038,"11.1-11.2":0.10152,"12.0":0.0203,"13.0":0.21319,"14.0":0.12182,"15.0":0.11167,"16.0":0.67002,"17.0":3.04553},I:{"0":0,"3":0,"4":0.00592,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00169,"4.2-4.3":0.00085,"4.4":0,"4.4.3-4.4.4":0.02198},A:{"11":0.04696,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.00609},O:{"0":0.09129},H:{"0":0.17862},L:{"0":37.29534},S:{"2.5":0},R:{_:"0"},M:{"0":0.20692}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MO.js index 9fabf4e3859867..754e55d706820a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MO.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MO.js @@ -1 +1 @@ -module.exports={C:{"34":0.07637,"52":0.03394,"75":0.00849,"77":0.00424,"81":0.00849,"84":0.00849,"87":0.00424,"88":0.00849,"91":0.01273,"93":0.01697,"94":0.05516,"95":0.02546,"96":0.35641,"97":0.68737,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 78 79 80 82 83 85 86 89 90 92 98 99 3.5 3.6"},D:{"22":0.05092,"26":0.05516,"30":0.01273,"34":0.09335,"38":0.16123,"45":0.00424,"47":0.02546,"49":0.08062,"53":0.09335,"55":0.04243,"57":0.00424,"58":0.02122,"61":0.09759,"62":0.02122,"63":0.00424,"65":0.02546,"66":0.00849,"67":0.03819,"68":0.07213,"69":0.0297,"70":0.02546,"71":0.06365,"72":0.02546,"73":0.03394,"74":0.04243,"75":0.02122,"76":0.03394,"77":0.02546,"78":0.0297,"79":0.44552,"80":0.06789,"81":0.04667,"83":0.02546,"84":0.01697,"85":0.00849,"86":0.0297,"87":0.13153,"88":0.00849,"89":0.0594,"90":0.01697,"91":0.05516,"92":0.21215,"93":0.0594,"94":0.11032,"95":0.13153,"96":0.7892,"97":6.61059,"98":15.20267,"99":0.00424,"100":0.01697,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 31 32 33 35 36 37 39 40 41 42 43 44 46 48 50 51 52 54 56 59 60 64 101"},F:{"28":0.00849,"36":0.03819,"46":0.08062,"70":0.01697,"82":0.02546,"83":0.17396,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00849,"18":0.06365,"95":0.01273,"96":0.01697,"97":0.53038,"98":2.34638,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94"},E:{"4":0,"11":0.00424,"12":0.00849,"13":0.17821,"14":0.82739,"15":0.35641,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01697,"11.1":0.04243,"12.1":0.13153,"13.1":0.43703,"14.1":3.62777,"15.1":1.2432,"15.2-15.3":2.62217,"15.4":0.01273},G:{"8":0.00327,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00327,"6.0-6.1":0.06204,"7.0-7.1":0.0653,"8.1-8.4":0.05877,"9.0-9.2":0.13714,"9.3":0.30366,"10.0-10.2":0.06204,"10.3":0.35264,"11.0-11.2":0.17959,"11.3-11.4":0.20244,"12.0-12.1":0.23183,"12.2-12.5":1.69464,"13.0-13.1":0.09469,"13.2":0.03918,"13.3":0.25469,"13.4-13.7":0.67263,"14.0-14.4":1.89382,"14.5-14.8":7.16711,"15.0-15.1":3.89212,"15.2-15.3":15.1995,"15.4":0.07183},P:{"4":0.82174,"5.0-5.4":0.89089,"6.2-6.4":0.05053,"7.2-7.4":0.03115,"8.2":0.01022,"9.2":0.07569,"10.1":0.05053,"11.1-11.2":0.02077,"12.0":0.05192,"13.0":0.04325,"14.0":0.0865,"15.0":0.04325,"16.0":1.94624},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00018,"4.2-4.3":0.00053,"4.4":0,"4.4.3-4.4.4":0.01657},A:{"11":0.47522,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.17271},Q:{"10.4":0.11514},O:{"0":0.59873},H:{"0":0.0763},L:{"0":21.63894},S:{"2.5":0}}; +module.exports={C:{"34":0.07536,"51":0.0133,"52":0.04876,"53":0.00887,"54":0.00443,"55":0.00887,"56":0.01773,"57":0.00887,"75":0.0133,"78":0.0133,"81":0.00887,"84":0.00887,"88":0.00443,"91":0.00887,"94":0.03103,"98":0.03103,"99":0.02217,"100":0.12856,"101":0.89547,"102":0.0266,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 79 80 82 83 85 86 87 89 90 92 93 95 96 97 103 104 3.5 3.6"},D:{"22":0.04433,"26":0.05763,"30":0.0133,"34":0.07979,"38":0.20392,"40":0.00887,"45":0.00887,"46":0.00443,"47":0.00443,"49":0.08866,"53":0.11526,"54":0.00443,"55":0.03546,"56":0.00443,"57":0.00887,"58":0.03546,"59":0.00443,"60":0.00887,"61":0.11083,"62":0.01773,"63":0.0133,"64":0.00887,"65":0.0133,"66":0.00443,"67":0.0399,"68":0.04433,"69":0.01773,"70":0.0133,"71":0.0266,"72":0.0266,"73":0.0266,"74":0.0399,"75":0.02217,"76":0.02217,"77":0.0266,"78":0.04433,"79":0.51866,"80":0.05763,"81":0.03546,"83":0.03103,"84":0.01773,"85":0.00887,"86":0.04876,"87":0.12412,"88":0.00443,"89":0.06206,"90":0.00443,"91":0.03103,"92":0.16845,"93":0.01773,"94":0.04876,"95":0.03546,"96":0.15072,"97":0.29701,"98":0.19062,"99":0.16402,"100":0.62949,"101":1.89289,"102":17.92705,"103":1.56042,"104":0.0532,"105":0.00887,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 31 32 33 35 36 37 39 41 42 43 44 48 50 51 52 106"},F:{"28":0.02217,"36":0.06206,"46":0.08423,"70":0.00887,"85":0.00443,"86":0.03103,"87":0.15072,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00443,"18":0.03546,"95":0.00887,"99":0.00887,"100":0.01773,"101":0.34134,"102":2.34062,"103":0.50536,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 96 97 98"},E:{"4":0,"11":0.00887,"12":0.00443,"13":0.11526,"14":0.64279,"15":0.15072,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01773,"11.1":0.05763,"12.1":0.08423,"13.1":0.4167,"14.1":1.94609,"15.1":0.17732,"15.2-15.3":0.23495,"15.4":2.37609,"15.5":5.13341,"16.0":0.00887},G:{"8":0.006,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.06297,"7.0-7.1":0.05998,"8.1-8.4":0.07497,"9.0-9.2":0.11695,"9.3":0.38385,"10.0-10.2":0.06597,"10.3":0.32387,"11.0-11.2":0.14694,"11.3-11.4":0.08397,"12.0-12.1":0.15894,"12.2-12.5":1.41843,"13.0-13.1":0.06297,"13.2":0.02399,"13.3":0.14394,"13.4-13.7":0.5008,"14.0-14.4":1.04358,"14.5-14.8":3.13674,"15.0-15.1":0.64174,"15.2-15.3":1.13954,"15.4":4.42323,"15.5":15.88163,"16.0":0.02699},P:{"4":1.08576,"5.0-5.4":0.03107,"6.2-6.4":0.05107,"7.2-7.4":0.0205,"8.2":0.01021,"9.2":0.076,"10.1":0.03064,"11.1-11.2":0.01025,"12.0":0.04101,"13.0":0.03257,"14.0":0.01086,"15.0":0.03257,"16.0":0.06515,"17.0":2.17152},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00134,"4.2-4.3":0.00178,"4.4":0,"4.4.3-4.4.4":0.03029},A:{"9":0.02811,"11":0.54818,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.08909},O:{"0":0.65702},H:{"0":0.05799},L:{"0":22.27687},S:{"2.5":0},R:{_:"0"},M:{"0":0.17818}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MP.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MP.js index cd0e5ae20f40bb..dcb78f2493abc0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MP.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MP.js @@ -1 +1 @@ -module.exports={C:{"52":0.23072,"78":0.0355,"85":0.00592,"93":0.00592,"94":0.01183,"95":0.01183,"96":0.34313,"97":0.50878,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 86 87 88 89 90 91 92 98 99 3.5 3.6"},D:{"23":0.00592,"65":0.0355,"67":0.01775,"76":0.01183,"77":0.00592,"78":0.01775,"79":0.10057,"83":0.09466,"86":0.00592,"87":0.11832,"90":0.01775,"91":0.04141,"92":0.19523,"93":0.05324,"94":0.10057,"95":0.16565,"96":1.56182,"97":11.9444,"98":24.16686,"99":0.02958,"100":0.01775,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 68 69 70 71 72 73 74 75 80 81 84 85 88 89 101"},F:{"82":0.34904,"83":2.63854,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01183,"96":0.0355,"97":1.04122,"98":4.48433,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95"},E:{"4":0,"12":0.00592,"13":0.11832,"14":1.26602,"15":0.19523,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.4","13.1":0.40229,"14.1":4.41334,"15.1":1.11812,"15.2-15.3":1.37843},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05048,"10.0-10.2":0.00235,"10.3":0.30403,"11.0-11.2":0.11621,"11.3-11.4":0.01996,"12.0-12.1":0.00939,"12.2-12.5":1.46263,"13.0-13.1":0.00822,"13.2":0.00704,"13.3":0.09273,"13.4-13.7":0.08569,"14.0-14.4":1.06469,"14.5-14.8":1.8817,"15.0-15.1":2.44515,"15.2-15.3":4.17659,"15.4":0.01056},P:{"4":0.16235,"5.0-5.4":0.01015,"6.2-6.4":0.04189,"7.2-7.4":0.15152,"8.2":0.11355,"9.2":0.0112,"10.1":0.02048,"11.1-11.2":0.02165,"12.0":0.0112,"13.0":0.02165,"14.0":0.03247,"15.0":0.03247,"16.0":4.37252},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.0147,"4.4":0,"4.4.3-4.4.4":0.03431},A:{"11":0.06508,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.90256},Q:{"10.4":0},O:{"0":0.00817},H:{"0":0.07346},L:{"0":23.78834},S:{"2.5":0}}; +module.exports={C:{"52":0.07545,"91":0.10563,"97":0.01006,"100":0.03521,"101":1.01103,"102":0.03521,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 98 99 103 104 3.5 3.6"},D:{"23":0.01006,"29":0.00503,"53":0.02515,"63":0.0503,"71":0.01006,"76":0.03018,"78":0.01006,"79":0.13078,"83":0.04024,"85":0.00503,"87":0.14084,"90":0.01006,"91":0.04024,"92":0.01006,"93":0.12575,"94":0.00503,"95":0.01006,"96":0.05533,"97":0.02515,"98":0.05533,"99":0.27665,"100":1.56433,"101":2.68602,"102":26.94068,"103":2.55021,"104":0.00503,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 70 72 73 74 75 77 80 81 84 86 88 89 105 106"},F:{"86":0.6036,"87":2.40434,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01509,"96":0.01006,"100":0.01006,"101":0.67402,"102":2.96267,"103":0.56336,_:"12 13 14 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 97 98 99"},E:{"4":0,"12":0.01006,"13":0.74444,"14":0.14084,"15":0.02515,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.12575,"12.1":0.03521,"13.1":0.10563,"14.1":1.97679,"15.1":0.05533,"15.2-15.3":0.18108,"15.4":0.55833,"15.5":0.82995},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00131,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.01176,"9.3":0.25477,"10.0-10.2":0,"10.3":0.11628,"11.0-11.2":0.17508,"11.3-11.4":0.01829,"12.0-12.1":0.15025,"12.2-12.5":1.999,"13.0-13.1":0,"13.2":0,"13.3":0.11889,"13.4-13.7":0.11889,"14.0-14.4":1.06613,"14.5-14.8":0.6402,"15.0-15.1":0.17377,"15.2-15.3":0.57096,"15.4":1.83699,"15.5":5.7997,"16.0":0.00392},P:{"4":0.0105,"5.0-5.4":0.021,"6.2-6.4":0.03149,"7.2-7.4":0.01073,"8.2":0.01015,"9.2":0.02178,"10.1":0.01002,"11.1-11.2":0.07513,"12.0":0.01089,"13.0":0.02147,"14.0":0.0644,"15.0":0.01073,"16.0":0.54737,"17.0":4.51849},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.01491},A:{"11":0.04527,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.13175},L:{"0":31.85468},S:{"2.5":0},R:{_:"0"},M:{"0":0.71568}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MQ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MQ.js index 8f7a6a3f4810a7..fe691c8fb3388a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MQ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MQ.js @@ -1 +1 @@ -module.exports={C:{"52":0.00833,"60":0.02083,"78":0.04999,"82":0.12915,"83":0.00417,"84":0.00417,"89":0.01666,"91":0.04583,"92":0.00833,"94":0.03333,"95":0.03333,"96":1.82054,"97":2.51626,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 85 86 87 88 90 93 98 99 3.5 3.6"},D:{"49":0.0125,"58":0.00417,"65":0.00833,"67":0.02083,"74":0.00417,"75":0.00833,"76":0.0125,"77":0.00833,"79":0.0125,"80":0.0125,"83":0.02083,"84":0.0125,"86":0.025,"87":0.04999,"88":0.01666,"89":0.01666,"90":0.00833,"91":0.0125,"92":0.01666,"93":0.06249,"94":0.02916,"95":0.02083,"96":0.44993,"97":7.01971,"98":15.0226,"99":0.0125,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 63 64 66 68 69 70 71 72 73 78 81 85 100 101"},F:{"40":0.04999,"77":0.0125,"80":0.00833,"82":0.29162,"83":0.79571,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00833,"17":0.0125,"18":0.0125,"80":0.00833,"86":0.00833,"89":0.01666,"90":0.00417,"91":0.00417,"92":0.02083,"93":0.00417,"95":0.00833,"96":0.04166,"97":1.29979,"98":4.62426,_:"13 14 15 16 79 81 83 84 85 87 88 94"},E:{"4":0,"12":0.00833,"13":0.14164,"14":0.47076,"15":0.32911,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00833,"11.1":0.01666,"12.1":0.10832,"13.1":0.42493,"14.1":1.61641,"15.1":0.65823,"15.2-15.3":0.90402,"15.4":0.0125},G:{"8":0.00319,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.0016,"9.3":0.11645,"10.0-10.2":0,"10.3":0.03828,"11.0-11.2":0.01595,"11.3-11.4":0.00798,"12.0-12.1":0.01117,"12.2-12.5":0.40518,"13.0-13.1":0.0319,"13.2":0.01117,"13.3":0.04626,"13.4-13.7":0.14835,"14.0-14.4":0.87576,"14.5-14.8":2.87771,"15.0-15.1":2.56506,"15.2-15.3":8.7448,"15.4":0.04626},P:{"4":0.07293,"5.0-5.4":0.01033,"6.2-6.4":0.02087,"7.2-7.4":0.08335,"8.2":0.01057,"9.2":0.01042,"10.1":0.01052,"11.1-11.2":0.14586,"12.0":0.06251,"13.0":0.47927,"14.0":0.47927,"15.0":0.20838,"16.0":4.53223},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.03016,"4.4":0,"4.4.3-4.4.4":0.12155},A:{"11":0.14581,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.46097},Q:{"10.4":0},O:{"0":0.01751},H:{"0":0.07734},L:{"0":35.70815},S:{"2.5":0}}; +module.exports={C:{"52":0.02474,"78":0.0165,"89":0.00825,"91":0.08248,"94":0.00825,"95":0.02062,"98":0.00825,"99":0.00825,"100":0.7382,"101":3.9343,"102":0.13609,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 90 92 93 96 97 103 104 3.5 3.6"},D:{"38":0.00412,"49":0.03712,"58":0.01237,"63":0.00412,"65":0.42477,"68":0.02887,"72":0.00412,"73":0.00412,"75":0.00412,"76":0.00412,"77":0.0165,"79":0.02062,"83":0.01237,"85":0.00412,"86":0.00825,"87":0.04124,"89":0.01237,"90":0.01237,"91":0.00825,"92":0.00825,"93":0.00412,"94":0.01237,"96":0.02474,"97":0.01237,"98":0.05361,"99":0.05774,"100":0.39178,"101":1.19596,"102":19.06113,"103":1.62073,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 64 66 67 69 70 71 74 78 80 81 84 88 95 104 105 106"},F:{"40":0.03299,"82":0.05774,"85":0.02474,"86":0.44127,"87":0.7052,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00412,"18":0.00825,"84":0.00412,"88":0.00825,"89":0.02474,"94":0.00825,"96":0.00825,"97":0.00412,"98":0.00825,"99":0.02474,"100":0.02062,"101":0.44539,"102":3.63737,"103":0.80418,_:"13 14 15 16 17 79 80 81 83 85 86 87 90 91 92 93 95"},E:{"4":0,"13":0.01237,"14":0.19795,"15":0.05774,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00412,"11.1":0.07423,"12.1":0.06598,"13.1":0.19795,"14.1":1.10936,"15.1":0.20208,"15.2-15.3":0.1897,"15.4":1.02275,"15.5":1.50114,"16.0":0.00825},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.22194,"10.0-10.2":0,"10.3":0.1164,"11.0-11.2":0,"11.3-11.4":0.0031,"12.0-12.1":0.01707,"12.2-12.5":0.3073,"13.0-13.1":0.00776,"13.2":0.00776,"13.3":0.0388,"13.4-13.7":0.06518,"14.0-14.4":0.56027,"14.5-14.8":0.96534,"15.0-15.1":0.47025,"15.2-15.3":1.01811,"15.4":2.89758,"15.5":8.71911,"16.0":0.04966},P:{"4":0.09456,"5.0-5.4":0.02031,"6.2-6.4":0.01015,"7.2-7.4":0.12465,"8.2":0.01021,"9.2":0.04062,"10.1":0.03064,"11.1-11.2":0.18698,"12.0":0.03116,"13.0":0.10388,"14.0":0.31163,"15.0":0.0831,"16.0":0.48822,"17.0":4.35246},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00167,"4.2-4.3":0.02254,"4.4":0,"4.4.3-4.4.4":0.12269},A:{"11":0.15259,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01763},H:{"0":0.37829},L:{"0":37.86902},S:{"2.5":0},R:{_:"0"},M:{"0":0.32906}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MR.js index 481363ef540c80..aba2d6735d8161 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MR.js @@ -1 +1 @@ -module.exports={C:{"24":0.00552,"30":0.00552,"34":0.00414,"35":0.00276,"36":0.00414,"38":0.01241,"42":0.00552,"43":0.00827,"45":0.00138,"47":0.00276,"49":0.01103,"52":0.03448,"56":0.00552,"57":0.00414,"68":0.01793,"69":0.00965,"71":0.00276,"72":0.00827,"73":0.00276,"78":0.00552,"80":0.00276,"81":0.00552,"87":0.00276,"89":0.00138,"90":0.00138,"91":0.00965,"93":0.00276,"94":0.00552,"95":0.02344,"96":0.44128,"97":0.52126,"98":0.00414,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 31 32 33 37 39 40 41 44 46 48 50 51 53 54 55 58 59 60 61 62 63 64 65 66 67 70 74 75 76 77 79 82 83 84 85 86 88 92 99 3.5 3.6"},D:{"11":0.00414,"19":0.00138,"22":0.00276,"25":0.00138,"31":0.00276,"33":0.02206,"37":0.00414,"39":0.0069,"40":0.00414,"43":0.0262,"47":0.00827,"48":0.00276,"49":0.01655,"53":0.00276,"54":0.00276,"57":0.00276,"60":0.00414,"63":0.02206,"65":0.00827,"67":0.00552,"68":0.00276,"69":0.01103,"70":0.00965,"71":0.00414,"72":0.01103,"73":0.00276,"75":0.00414,"76":0.00552,"77":0.00414,"78":0.00965,"79":0.02896,"80":0.01517,"81":0.02206,"83":0.02758,"84":0.01103,"85":0.0069,"86":0.02206,"87":0.04413,"88":0.01793,"89":0.01793,"90":0.01793,"91":0.06343,"92":0.01517,"93":0.01517,"94":0.01931,"95":0.03861,"96":0.22202,"97":2.85453,"98":5.02921,"99":0.00552,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 20 21 23 24 26 27 28 29 30 32 34 35 36 38 41 42 44 45 46 50 51 52 55 56 58 59 61 62 64 66 74 100 101"},F:{"28":0.00276,"30":0.00276,"46":0.01103,"82":0.0524,"83":0.20823,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00827,"13":0.0069,"14":0.00552,"15":0.00414,"16":0.0069,"17":0.00414,"18":0.05516,"83":0.00276,"84":0.01379,"85":0.0069,"89":0.00827,"90":0.00414,"91":0.01241,"92":0.01103,"93":0.00276,"94":0.00552,"95":0.00552,"96":0.0331,"97":0.33648,"98":1.04528,_:"79 80 81 86 87 88"},E:{"4":0,"12":0.00138,"13":0.01103,"14":0.03172,"15":0.01103,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 10.1 11.1 15.4","9.1":0.00414,"12.1":0.00414,"13.1":0.09929,"14.1":0.07309,"15.1":0.13376,"15.2-15.3":0.06757},G:{"8":0.00278,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.03062,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03758,"10.0-10.2":0.00278,"10.3":0.04175,"11.0-11.2":0.22824,"11.3-11.4":0.22129,"12.0-12.1":0.09464,"12.2-12.5":2.49537,"13.0-13.1":0.04175,"13.2":0.01809,"13.3":0.17118,"13.4-13.7":0.32706,"14.0-14.4":1.84683,"14.5-14.8":2.53573,"15.0-15.1":2.35898,"15.2-15.3":3.44314,"15.4":0.01809},P:{"4":1.124,"5.0-5.4":0.0405,"6.2-6.4":0.12151,"7.2-7.4":1.16451,"8.2":0.01057,"9.2":0.17214,"10.1":0.01052,"11.1-11.2":0.54681,"12.0":0.09114,"13.0":0.28353,"14.0":0.62782,"15.0":0.53669,"16.0":1.79233},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00031,"4.2-4.3":0.00282,"4.4":0,"4.4.3-4.4.4":0.02274},A:{"8":0.00772,"10":0.00309,"11":0.05092,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.10346},Q:{"10.4":0},O:{"0":0.68114},H:{"0":0.702},L:{"0":59.89872},S:{"2.5":0}}; +module.exports={C:{"29":0.00319,"31":0.00319,"34":0.00479,"47":0.0016,"48":0.00319,"49":0.00798,"52":0.01117,"56":0.00958,"57":0.0016,"68":0.01436,"72":0.01117,"85":0.0016,"88":0.00638,"89":0.00319,"91":0.05746,"92":0.0016,"93":0.0016,"95":0.0016,"96":0.00638,"97":0.0016,"98":0.00638,"99":0.02713,"100":0.1979,"101":1.18742,"102":0.08778,"103":0.00479,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 32 33 35 36 37 38 39 40 41 42 43 44 45 46 50 51 53 54 55 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 86 87 90 94 104 3.5 3.6"},D:{"11":0.00638,"19":0.01756,"22":0.00319,"25":0.00638,"33":0.01436,"39":0.00319,"40":0.00479,"43":0.01436,"44":0.00319,"46":0.03352,"48":0.00479,"49":0.00319,"50":0.00958,"56":0.0016,"58":0.00479,"60":0.00319,"63":0.00479,"65":0.00319,"69":0.00479,"70":0.01436,"71":0.00319,"72":0.01277,"74":0.01596,"76":0.00958,"77":0.01436,"78":0.01436,"79":0.01117,"80":0.00479,"81":0.01436,"83":0.03192,"84":0.00798,"85":0.01117,"86":0.02234,"87":0.00958,"88":0.02713,"89":0.00638,"90":0.00638,"91":0.02234,"92":0.01915,"93":0.01596,"94":0.05586,"95":0.01117,"96":0.03352,"97":0.02234,"98":0.02234,"99":0.03192,"100":0.12608,"101":0.64319,"102":7.38948,"103":0.62084,"104":0.00479,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 20 21 23 24 26 27 28 29 30 31 32 34 35 36 37 38 41 42 45 47 51 52 53 54 55 57 59 61 62 64 66 67 68 73 75 105 106"},F:{"23":0.00638,"40":0.01277,"69":0.0016,"79":0.00638,"83":0.01915,"85":0.02075,"86":0.09257,"87":0.22663,_:"9 11 12 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 78 80 81 82 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00638,"13":0.00958,"14":0.01277,"15":0.00638,"16":0.00798,"17":0.06863,"18":0.05107,"83":0.00798,"84":0.0016,"85":0.00319,"88":0.0016,"89":0.00319,"90":0.00319,"91":0.00319,"92":0.01277,"95":0.00479,"96":0.00319,"97":0.00319,"98":0.00319,"99":0.01596,"100":0.01436,"101":0.3208,"102":1.19381,"103":0.18194,_:"79 80 81 86 87 93 94"},E:{"4":0,"13":0.00958,"14":0.04948,"15":0.02234,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 16.0","5.1":0.0016,"11.1":0.00638,"12.1":0.0016,"13.1":0.06065,"14.1":0.10214,"15.1":0.0415,"15.2-15.3":0.0383,"15.4":0.09416,"15.5":0.07501},G:{"8":0.00449,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00299,"7.0-7.1":0.02842,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03441,"10.0-10.2":0,"10.3":0.02842,"11.0-11.2":0.06283,"11.3-11.4":0.0748,"12.0-12.1":0.06433,"12.2-12.5":1.79815,"13.0-13.1":0.04039,"13.2":0.05685,"13.3":0.12716,"13.4-13.7":0.29022,"14.0-14.4":2.18112,"14.5-14.8":1.8191,"15.0-15.1":1.0008,"15.2-15.3":1.60218,"15.4":2.05845,"15.5":3.58584,"16.0":0.08976},P:{"4":0.36452,"5.0-5.4":0.0405,"6.2-6.4":0.09113,"7.2-7.4":1.02267,"8.2":0.01021,"9.2":0.09113,"10.1":0.03038,"11.1-11.2":0.37464,"12.0":0.02025,"13.0":0.14176,"14.0":0.26326,"15.0":0.25314,"16.0":1.22518,"17.0":1.51882},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00017,"4.2-4.3":0.00116,"4.4":0,"4.4.3-4.4.4":0.03228},A:{"11":0.21067,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.44541},H:{"0":0.91498},L:{"0":63.4454},S:{"2.5":0},R:{_:"0"},M:{"0":0.26052}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MS.js index b093cc986f9198..e49adf2dc4eb64 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MS.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MS.js @@ -1 +1 @@ -module.exports={C:{"95":0.05202,"96":0.41619,"97":0.20159,"98":0.05202,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 99 3.5 3.6"},D:{"49":0.02601,"67":0.01301,"75":0.31865,"79":0.01301,"86":0.03902,"88":0.01301,"89":0.03902,"95":0.01301,"96":0.69582,"97":9.42285,"98":38.40022,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 76 77 78 80 81 83 84 85 87 90 91 92 93 94 99 100 101"},F:{"83":0.17558,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.03902,"89":0.07804,"93":0.01301,"96":0.05202,"97":1.073,"98":5.15688,_:"12 14 15 16 17 18 79 80 81 83 84 85 86 87 88 90 91 92 94 95"},E:{"4":0,"13":0.02601,"14":0.41619,"15":0.03902,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1 13.1 15.4","11.1":0.10405,"14.1":1.073,"15.1":2.25004,"15.2-15.3":2.67924},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.01965,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.058,"10.0-10.2":0,"10.3":0.00936,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.20301,"13.0-13.1":0,"13.2":0.00936,"13.3":0.01965,"13.4-13.7":2.30704,"14.0-14.4":0.03836,"14.5-14.8":0.53045,"15.0-15.1":1.56422,"15.2-15.3":4.58602,"15.4":0.00936},P:{"4":0.01234,"5.0-5.4":0.07136,"6.2-6.4":0.02048,"7.2-7.4":0.07403,"8.2":0.01015,"9.2":0.08155,"10.1":0.02048,"11.1-11.2":0.05194,"12.0":0.01039,"13.0":0.11105,"14.0":0.08637,"15.0":0.01234,"16.0":1.66569},I:{"0":0,"3":0,"4":0.00244,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.01505},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.03497},Q:{"10.4":0},O:{"0":0},H:{"0":0.03311},L:{"0":23.67829},S:{"2.5":0}}; +module.exports={C:{"91":0.0577,"100":0.0577,"101":0.2404,"102":0.22117,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 99 103 104 3.5 3.6"},D:{"68":0.01923,"76":0.03846,"79":0.09135,"86":0.01923,"93":0.11058,"98":0.07212,"99":0.2404,"100":0.35098,"101":1.33182,"102":30.61254,"103":4.28874,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 77 78 80 81 83 84 85 87 88 89 90 91 92 94 95 96 97 104 105 106"},F:{"86":0.07212,"87":0.79332,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.03846,"18":0.01923,"90":0.01923,"101":0.68274,"102":3.80794,"103":0.83178,_:"12 13 14 15 17 79 80 81 83 84 85 86 87 88 89 91 92 93 94 95 96 97 98 99 100"},E:{"4":0,"14":0.1827,_:"0 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.1 16.0","13.1":0.01923,"14.1":0.11058,"15.2-15.3":0.01923,"15.4":0.2404,"15.5":0.98083},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01399,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01399,"10.0-10.2":0,"10.3":0.01399,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0.01399,"12.2-12.5":0.30175,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":1.535,"14.0-14.4":0.0551,"14.5-14.8":0.32799,"15.0-15.1":0.20554,"15.2-15.3":0.26064,"15.4":0.95948,"15.5":4.96272,"16.0":0.04111},P:{"4":0.02117,"5.0-5.4":0.03046,"6.2-6.4":0.09113,"7.2-7.4":0.16934,"8.2":0.01015,"9.2":0.09137,"10.1":0.03038,"11.1-11.2":0.02117,"12.0":0.03101,"13.0":0.06202,"14.0":0.0635,"15.0":0.08467,"16.0":0.23284,"17.0":2.67765},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.03846,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.04153},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":41.42199},S:{"2.5":0},R:{_:"0"},M:{"0":0.06229}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MT.js index a42e8098d43236..4e3c27275e4255 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MT.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MT.js @@ -1 +1 @@ -module.exports={C:{"52":0.03023,"68":0.03628,"76":0.00605,"78":0.01814,"82":0.00605,"89":0.04232,"91":0.01814,"94":0.01209,"95":0.03023,"96":0.57437,"97":1.17292,"98":0.01209,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 77 79 80 81 83 84 85 86 87 88 90 92 93 99 3.5 3.6"},D:{"26":0.01209,"49":0.04837,"67":0.03023,"69":0.23579,"70":0.01814,"72":0.03023,"74":0.00605,"76":0.01814,"77":0.18743,"78":0.02418,"79":0.01814,"80":0.06046,"81":0.01814,"83":0.02418,"84":0.03023,"85":0.00605,"86":0.02418,"87":0.05441,"88":0.01209,"89":0.01814,"90":0.01209,"91":0.04232,"92":0.03628,"93":0.85249,"94":0.06046,"95":0.28416,"96":0.526,"97":13.38584,"98":27.733,"99":0.01814,"100":0.01209,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 71 73 75 101"},F:{"28":0.00605,"37":0.01814,"46":0.00605,"67":0.27812,"82":0.40508,"83":1.15479,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01209,"18":0.01814,"92":0.01209,"95":0.01209,"96":0.03628,"97":1.39058,"98":5.30839,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94"},E:{"4":0,"12":0.00605,"13":0.04837,"14":0.27207,"15":0.17533,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.06651,"12.1":0.07255,"13.1":0.31439,"14.1":1.29384,"15.1":0.91295,"15.2-15.3":1.11851},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00124,"7.0-7.1":0.00868,"8.1-8.4":0.01116,"9.0-9.2":0.0062,"9.3":0.04218,"10.0-10.2":0.00248,"10.3":0.36594,"11.0-11.2":0.00992,"11.3-11.4":0.00868,"12.0-12.1":0.02233,"12.2-12.5":0.25554,"13.0-13.1":0.00744,"13.2":0.00248,"13.3":0.01861,"13.4-13.7":0.05954,"14.0-14.4":0.67358,"14.5-14.8":2.20308,"15.0-15.1":2.06414,"15.2-15.3":6.59682,"15.4":0.0397},P:{"4":0.05367,"5.0-5.4":0.01033,"6.2-6.4":0.02087,"7.2-7.4":0.02147,"8.2":0.01057,"9.2":0.02066,"10.1":0.01052,"11.1-11.2":0.04294,"12.0":0.42355,"13.0":0.04294,"14.0":0.08588,"15.0":0.09661,"16.0":2.40453},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.0041,"4.4":0,"4.4.3-4.4.4":0.06312},A:{"11":0.24789,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.18979},Q:{"10.4":0},O:{"0":0.11071},H:{"0":0.09733},L:{"0":23.75954},S:{"2.5":0}}; +module.exports={C:{"48":0.00515,"52":0.0309,"68":0.0309,"78":0.01545,"91":0.00515,"98":0.0206,"99":0.01545,"100":0.1957,"101":1.3596,"102":0.03605,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 103 104 3.5 3.6"},D:{"49":0.05665,"68":0.0103,"69":0.4223,"70":0.02575,"72":0.01545,"75":0.02575,"76":0.01545,"77":0.1339,"78":0.0206,"79":0.0515,"80":0.0206,"83":0.02575,"84":0.02575,"85":0.02575,"86":0.01545,"87":0.04635,"89":0.03605,"90":0.0103,"91":0.0206,"92":0.02575,"93":0.0206,"94":0.07725,"95":0.0103,"96":0.0412,"97":0.02575,"98":0.0721,"99":0.43775,"100":0.40685,"101":2.06515,"102":30.18415,"103":2.48745,"104":0.00515,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 71 73 74 81 88 105 106"},F:{"28":0.03605,"40":0.0103,"46":0.0103,"72":0.0103,"85":0.0206,"86":0.59225,"87":0.8343,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.0103,"15":0.00515,"18":0.0412,"86":0.00515,"92":0.00515,"98":0.0103,"99":0.0309,"100":0.0309,"101":0.6489,"102":4.4393,"103":0.7519,_:"12 13 16 17 79 80 81 83 84 85 87 88 89 90 91 93 94 95 96 97"},E:{"4":0,"13":0.0309,"14":0.15965,"15":0.0412,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.09785,"12.1":0.0309,"13.1":0.18025,"14.1":0.49955,"15.1":0.1751,"15.2-15.3":0.0824,"15.4":0.73645,"15.5":1.7819},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00146,"6.0-6.1":0,"7.0-7.1":0.00729,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03645,"10.0-10.2":0.00146,"10.3":0.41263,"11.0-11.2":0.00292,"11.3-11.4":0.01895,"12.0-12.1":0.01312,"12.2-12.5":0.29453,"13.0-13.1":0.00729,"13.2":0.00292,"13.3":0.01604,"13.4-13.7":0.06124,"14.0-14.4":0.38784,"14.5-14.8":1.01918,"15.0-15.1":0.33389,"15.2-15.3":0.57739,"15.4":2.30227,"15.5":9.01514,"16.0":0.03499},P:{"4":0.09456,"5.0-5.4":0.02031,"6.2-6.4":0.01015,"7.2-7.4":0.18278,"8.2":0.01021,"9.2":0.04062,"10.1":0.03064,"11.1-11.2":0.01051,"12.0":0.01051,"13.0":0.03152,"14.0":0.05253,"15.0":0.07354,"16.0":0.15759,"17.0":2.84717},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00216,"4.4":0,"4.4.3-4.4.4":0.05603},A:{"11":0.1957,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.11153},H:{"0":0.27085},L:{"0":29.31743},S:{"2.5":0},R:{_:"0"},M:{"0":0.29579}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MU.js index 04ff7a53ae8540..376e034dc1726c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MU.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MU.js @@ -1 +1 @@ -module.exports={C:{"34":0.01427,"51":0.00357,"52":0.17126,"69":0.00357,"72":0.00714,"78":0.01784,"89":0.00357,"91":0.04995,"92":0.00714,"94":0.00714,"95":0.02141,"96":0.92054,"97":1.43077,"98":0.01784,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 90 93 99 3.5 3.6"},D:{"26":0.00714,"31":0.00357,"38":0.10704,"39":0.01427,"43":0.00357,"49":0.03211,"50":0.00714,"53":0.01784,"55":0.00714,"58":0.02141,"59":0.00357,"65":0.03211,"67":0.00357,"69":0.0107,"71":0.0107,"73":0.0107,"74":0.00357,"75":0.00714,"76":0.0107,"77":0.00714,"78":0.00714,"79":0.11774,"80":0.01427,"81":0.01784,"83":0.02141,"84":0.01427,"85":0.04282,"86":0.02141,"87":0.03925,"88":0.0107,"89":0.02141,"90":0.03925,"91":0.03925,"92":0.08206,"93":0.02498,"94":0.04638,"95":0.03211,"96":0.38534,"97":6.65075,"98":16.02389,"99":0.02498,"100":0.03925,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 32 33 34 35 36 37 40 41 42 44 45 46 47 48 51 52 54 56 57 60 61 62 63 64 66 68 70 72 101"},F:{"28":0.06779,"82":0.12488,"83":0.59942,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00357,"16":0.00714,"17":0.0107,"18":0.02854,"84":0.00357,"92":0.00714,"95":0.00714,"96":0.04282,"97":0.7243,"98":2.52258,_:"13 14 15 79 80 81 83 85 86 87 88 89 90 91 93 94"},E:{"4":0,"11":0.00714,"12":0.02498,"13":0.0107,"14":0.21051,"15":0.0999,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.00714,"11.1":0.02498,"12.1":0.02498,"13.1":0.19624,"14.1":0.5352,"15.1":0.25333,"15.2-15.3":0.71717},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01444,"6.0-6.1":0.00138,"7.0-7.1":0.04332,"8.1-8.4":0.00206,"9.0-9.2":0,"9.3":0.07082,"10.0-10.2":0.00275,"10.3":0.08114,"11.0-11.2":0.00344,"11.3-11.4":0.00756,"12.0-12.1":0.011,"12.2-12.5":0.31493,"13.0-13.1":0.00825,"13.2":0.00413,"13.3":0.03369,"13.4-13.7":0.11414,"14.0-14.4":0.2056,"14.5-14.8":1.0321,"15.0-15.1":1.16756,"15.2-15.3":3.72823,"15.4":0.02819},P:{"4":0.24351,"5.0-5.4":0.0405,"6.2-6.4":0.12151,"7.2-7.4":0.23337,"8.2":0.01015,"9.2":0.03044,"10.1":0.02029,"11.1-11.2":0.14205,"12.0":0.05073,"13.0":0.23337,"14.0":0.39571,"15.0":0.20293,"16.0":4.63693},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00181,"4.2-4.3":0.00289,"4.4":0,"4.4.3-4.4.4":0.05318},A:{"8":0.00771,"10":0.00386,"11":0.22749,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.23152},Q:{"10.4":0},O:{"0":0.77172},H:{"0":0.49925},L:{"0":49.25859},S:{"2.5":0}}; +module.exports={C:{"34":0.0074,"52":0.04071,"69":0.0037,"78":0.0148,"88":0.0037,"89":0.01851,"90":0.0037,"91":0.04811,"92":0.0148,"95":0.0037,"96":0.0074,"97":0.0111,"98":0.0148,"99":0.04071,"100":0.22206,"101":1.71726,"102":0.06662,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 93 94 103 104 3.5 3.6"},D:{"26":0.0037,"34":0.0037,"38":0.03331,"39":0.0037,"47":0.0037,"49":0.02591,"53":0.01851,"55":0.0074,"58":0.0148,"65":0.0037,"66":0.0111,"71":0.0074,"72":0.0111,"74":0.0037,"78":0.0074,"79":0.17765,"80":0.04441,"81":0.02221,"83":0.02591,"84":0.0074,"85":0.01851,"86":0.0148,"87":0.04811,"88":0.01851,"89":0.0111,"90":0.0148,"91":0.07402,"92":0.04811,"93":0.0148,"94":0.0111,"95":0.0074,"96":0.07402,"97":0.08142,"98":0.07402,"99":0.14434,"100":0.45522,"101":1.23613,"102":20.44432,"103":1.79128,"104":0.02591,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 40 41 42 43 44 45 46 48 50 51 52 54 56 57 59 60 61 62 63 64 67 68 69 70 73 75 76 77 105 106"},F:{"28":0.03701,"85":0.0074,"86":0.14064,"87":0.64027,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.0037,"16":0.0111,"17":0.0037,"18":0.01851,"83":0.0037,"84":0.0037,"92":0.0037,"97":0.0074,"98":0.0111,"99":0.0111,"100":0.02221,"101":0.30718,"102":2.44266,"103":0.49593,_:"12 13 14 79 80 81 85 86 87 88 89 90 91 93 94 95 96"},E:{"4":0,"12":0.04811,"13":0.0074,"14":0.18505,"15":0.02221,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.0037,"11.1":0.0148,"12.1":0.05922,"13.1":0.14804,"14.1":0.30718,"15.1":0.07402,"15.2-15.3":0.09993,"15.4":0.31829,"15.5":1.04368,"16.0":0.0074},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01675,"6.0-6.1":0,"7.0-7.1":0.02767,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.09901,"10.0-10.2":0.00146,"10.3":0.07499,"11.0-11.2":0.00437,"11.3-11.4":0.00437,"12.0-12.1":0.01019,"12.2-12.5":0.25991,"13.0-13.1":0.00946,"13.2":0.00291,"13.3":0.01456,"13.4-13.7":0.05533,"14.0-14.4":0.10557,"14.5-14.8":0.37203,"15.0-15.1":0.11794,"15.2-15.3":0.32034,"15.4":1.27335,"15.5":4.45201,"16.0":0.03422},P:{"4":0.17319,"5.0-5.4":0.0405,"6.2-6.4":0.09113,"7.2-7.4":0.29544,"8.2":0.01021,"9.2":0.03056,"10.1":0.03038,"11.1-11.2":0.07131,"12.0":0.03056,"13.0":0.18338,"14.0":0.17319,"15.0":0.09169,"16.0":0.59088,"17.0":4.35013},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00127,"4.2-4.3":0.00254,"4.4":0,"4.4.3-4.4.4":0.04658},A:{"11":0.11103,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.6299},H:{"0":0.38166},L:{"0":50.90663},S:{"2.5":0},R:{_:"0"},M:{"0":0.26456}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MV.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MV.js index 3c32ee178614a1..9b2f2bb52d649c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MV.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MV.js @@ -1 +1 @@ -module.exports={C:{"3":0.00288,"5":0.00288,"17":0.00576,"34":0.00576,"40":0.00288,"68":0.02879,"72":0.00576,"77":0.00576,"78":0.01152,"85":0.00576,"87":0.00288,"89":0.02591,"90":0.01152,"91":0.02015,"93":0.00576,"95":0.02015,"96":0.40594,"97":0.68808,"98":0.02015,_:"2 4 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 79 80 81 82 83 84 86 88 92 94 99 3.5","3.6":0.00576},D:{"18":0.00576,"39":0.01727,"42":0.00288,"43":0.00864,"44":0.00864,"45":0.00864,"46":0.01152,"47":0.00576,"49":0.00288,"51":0.02303,"67":0.00864,"69":0.00288,"70":0.00576,"73":0.01727,"74":0.00576,"76":0.02303,"77":0.02015,"79":0.02015,"80":0.01727,"83":0.0547,"84":0.00288,"85":0.00576,"86":0.05182,"87":0.05758,"88":0.00288,"89":0.02879,"90":0.00864,"91":0.04031,"92":0.04606,"93":0.01152,"94":0.04031,"95":0.04606,"96":0.29366,"97":6.25319,"98":13.11672,"99":0.00288,"100":0.01152,"101":0.00576,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 48 50 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 71 72 75 78 81"},F:{"28":0.00864,"81":0.0144,"82":0.1094,"83":0.25623,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00288,"15":0.00576,"16":0.00576,"17":0.00288,"18":0.02015,"84":0.00576,"89":0.00288,"90":0.00576,"91":0.01152,"92":0.00576,"93":0.02015,"95":0.00864,"96":0.02015,"97":0.3973,"98":1.06235,_:"13 14 79 80 81 83 85 86 87 88 94"},E:{"4":0,"9":0.04606,"13":0.01727,"14":0.10364,"15":0.09501,_:"0 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00864,"12.1":0.02303,"13.1":0.08925,"14.1":0.38867,"15.1":0.27063,"15.2-15.3":0.39442,"15.4":0.00576},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01626,"8.1-8.4":0.00813,"9.0-9.2":0,"9.3":0.0305,"10.0-10.2":0.00203,"10.3":0.04473,"11.0-11.2":0.10572,"11.3-11.4":0.01017,"12.0-12.1":0.04676,"12.2-12.5":0.38425,"13.0-13.1":0.0244,"13.2":0.0061,"13.3":0.07116,"13.4-13.7":0.13418,"14.0-14.4":0.81932,"14.5-14.8":3.22034,"15.0-15.1":3.72657,"15.2-15.3":11.61275,"15.4":0.05286},P:{"4":0.04174,"5.0-5.4":0.0216,"6.2-6.4":0.02087,"7.2-7.4":0.06261,"8.2":0.01057,"9.2":0.01045,"10.1":0.01052,"11.1-11.2":0.04174,"12.0":0.02087,"13.0":0.05217,"14.0":0.05217,"15.0":0.09391,"16.0":1.72173},I:{"0":0,"3":0.00729,"4":0.04008,"2.1":0.00729,"2.2":0.02915,"2.3":0.0255,"4.1":0.01457,"4.2-4.3":0.04736,"4.4":0,"4.4.3-4.4.4":0.29875},A:{"7":0.00576,"8":0.05182,"9":0.01152,"10":0.00864,"11":0.06046,_:"6 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.01424},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.68362},Q:{"10.4":0},O:{"0":0.86876},H:{"0":0.51911},L:{"0":46.41095},S:{"2.5":0.00712}}; +module.exports={C:{"34":0.00279,"65":0.00837,"72":0.00279,"78":0.01395,"82":0.01116,"87":0.00558,"90":0.00558,"91":0.01116,"94":0.00837,"95":0.01116,"96":0.01116,"97":0.01674,"98":0.01953,"99":0.0279,"100":0.09207,"101":0.8928,"102":0.05859,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 73 74 75 76 77 79 80 81 83 84 85 86 88 89 92 93 103 104 3.5 3.6"},D:{"38":0.03348,"63":0.00279,"69":0.00558,"71":0.00279,"73":0.00837,"74":0.00837,"76":0.00558,"77":0.00558,"79":0.00279,"80":0.04185,"83":0.14229,"84":0.00279,"85":0.05859,"87":0.01674,"88":0.01395,"89":0.01953,"90":0.00558,"91":0.05859,"92":0.02232,"93":0.01116,"94":0.02511,"95":0.02511,"96":0.02232,"97":0.03906,"98":0.02511,"99":0.0837,"100":0.28458,"101":1.12716,"102":17.93691,"103":1.42569,"104":0.00558,"105":0.00837,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 70 72 75 78 81 86 106"},F:{"28":0.00279,"82":0.02232,"83":0.01116,"84":0.01674,"85":0.0279,"86":0.14787,"87":0.25947,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00279,"13":0.00279,"15":0.00837,"18":0.01116,"84":0.00558,"87":0.00279,"89":0.00558,"90":0.00558,"91":0.00558,"92":0.01395,"96":0.00558,"97":0.01674,"98":0.00558,"99":0.00837,"100":0.01116,"101":0.2232,"102":1.01556,"103":0.20925,_:"14 16 17 79 80 81 83 85 86 88 93 94 95"},E:{"4":0,"13":0.00837,"14":0.16461,"15":0.0279,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00279,"11.1":0.00279,"12.1":0.01953,"13.1":0.0558,"14.1":0.18414,"15.1":0.10602,"15.2-15.3":0.06417,"15.4":0.29853,"15.5":0.67797,"16.0":0.00558},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01451,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00829,"10.0-10.2":0,"10.3":0.02281,"11.0-11.2":0.00415,"11.3-11.4":0.01866,"12.0-12.1":0.01037,"12.2-12.5":0.25711,"13.0-13.1":0.00829,"13.2":0.01244,"13.3":0.03525,"13.4-13.7":0.10989,"14.0-14.4":0.4686,"14.5-14.8":1.17149,"15.0-15.1":0.56605,"15.2-15.3":1.23369,"15.4":3.75707,"15.5":12.74748,"16.0":0.21771},P:{"4":0.0313,"5.0-5.4":0.03107,"6.2-6.4":0.05107,"7.2-7.4":0.0313,"8.2":0.01021,"9.2":0.05307,"10.1":0.03064,"11.1-11.2":0.04216,"12.0":0.0313,"13.0":0.04173,"14.0":0.05217,"15.0":0.04173,"16.0":0.17737,"17.0":1.36676},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00721,"4.4":0,"4.4.3-4.4.4":0.13699},A:{"11":0.04743,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.59843},H:{"0":0.44369},L:{"0":48.85482},S:{"2.5":0},R:{_:"0"},M:{"0":0.54075}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MW.js index c6b2306b076d63..8efdd780201261 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MW.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MW.js @@ -1 +1 @@ -module.exports={C:{"29":0.01012,"34":0.00337,"39":0.00675,"40":0.00337,"47":0.00337,"48":0.00337,"52":0.01687,"56":0.00337,"59":0.01687,"60":0.00337,"61":0.02024,"63":0.04385,"68":0.01012,"69":0.02024,"72":0.01012,"76":0.00675,"77":0.00337,"78":0.07758,"80":0.02024,"81":0.03373,"84":0.01012,"87":0.00337,"88":0.04048,"89":0.03373,"90":0.00337,"91":0.04385,"92":0.00675,"93":0.01012,"94":0.07083,"95":0.05734,"96":1.35257,"97":2.09126,"98":0.08095,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 36 37 38 41 42 43 44 45 46 49 50 51 53 54 55 57 58 62 64 65 66 67 70 71 73 74 75 79 82 83 85 86 99 3.5 3.6"},D:{"31":0.00337,"33":0.00337,"43":0.00675,"49":0.01349,"50":0.14504,"52":0.00337,"55":0.00675,"56":0.00675,"60":0.00675,"62":0.00337,"63":0.00675,"65":0.00675,"66":0.00675,"69":0.02361,"70":0.01012,"71":0.01012,"72":0.01687,"74":0.02698,"75":0.02361,"76":0.01012,"77":0.00675,"78":0.05734,"79":0.05734,"80":0.01687,"81":0.01349,"83":0.03036,"84":0.02024,"85":0.01012,"86":0.0506,"87":0.17877,"88":0.03373,"89":0.0371,"90":0.0371,"91":0.03373,"92":0.13829,"93":0.04385,"94":0.04385,"95":0.10794,"96":0.61726,"97":4.62438,"98":10.97574,"99":0.01012,"100":0.00337,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 34 35 36 37 38 39 40 41 42 44 45 46 47 48 51 53 54 57 58 59 61 64 67 68 73 101"},F:{"34":0.00675,"36":0.00675,"42":0.02024,"54":0.02024,"64":0.21925,"67":0.01012,"74":0.00675,"79":0.03036,"80":0.01349,"81":0.00675,"82":0.13492,"83":0.94107,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 55 56 57 58 60 62 63 65 66 68 69 70 71 72 73 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.07083,"13":0.04048,"14":0.02698,"15":0.04048,"16":0.0506,"17":0.06071,"18":0.27659,"84":0.03036,"85":0.06071,"89":0.09444,"90":0.06071,"91":0.00675,"92":0.09782,"93":0.01012,"94":0.03373,"95":0.0506,"96":0.1754,"97":0.84662,"98":2.45892,_:"79 80 81 83 86 87 88"},E:{"4":0,"13":0.01349,"14":0.02361,"15":0.0506,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 15.4","5.1":0.05734,"9.1":0.00337,"11.1":0.00675,"12.1":0.01349,"13.1":0.04722,"14.1":0.0877,"15.1":0.0371,"15.2-15.3":0.03036},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00023,"5.0-5.1":0.00045,"6.0-6.1":0,"7.0-7.1":0.00499,"8.1-8.4":0,"9.0-9.2":0.00385,"9.3":0.04988,"10.0-10.2":0.00068,"10.3":0.04671,"11.0-11.2":0.01088,"11.3-11.4":0.0068,"12.0-12.1":0.0093,"12.2-12.5":0.28638,"13.0-13.1":0.00612,"13.2":0.00499,"13.3":0.02154,"13.4-13.7":0.07505,"14.0-14.4":0.33332,"14.5-14.8":0.4349,"15.0-15.1":0.44805,"15.2-15.3":0.51403,"15.4":0.00794},P:{"4":0.27352,"5.0-5.4":0.0216,"6.2-6.4":0.02104,"7.2-7.4":0.11572,"8.2":0.01057,"9.2":0.07569,"10.1":0.01052,"11.1-11.2":0.07364,"12.0":0.02104,"13.0":0.18936,"14.0":0.19988,"15.0":0.263,"16.0":1.052},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00519,"4.2-4.3":0.00778,"4.4":0,"4.4.3-4.4.4":0.1063},A:{"9":0.00675,"10":0.00337,"11":0.14167,_:"6 7 8 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.01988},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.21866},Q:{"10.4":0},O:{"0":6.77177},H:{"0":7.77233},L:{"0":50.43139},S:{"2.5":0.03976}}; +module.exports={C:{"29":0.00613,"47":0.00613,"52":0.00613,"56":0.00613,"59":0.01532,"61":0.00919,"63":0.01838,"68":0.00306,"69":0.02757,"71":0.00613,"72":0.00919,"78":0.0245,"80":0.01225,"81":0.01532,"84":0.00613,"88":0.00613,"89":0.00919,"91":0.01838,"94":0.00613,"95":0.00613,"96":0.00613,"97":0.00306,"98":0.03676,"99":0.04595,"100":0.38288,"101":2.40752,"102":0.12865,"103":0.01225,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 57 58 60 62 64 65 66 67 70 73 74 75 76 77 79 82 83 85 86 87 90 92 93 104 3.5 3.6"},D:{"25":0.00306,"30":0.00306,"33":0.00613,"38":0.00306,"50":0.00919,"54":0.00306,"55":0.00306,"57":0.00613,"60":0.00306,"61":0.00306,"62":0.00306,"63":0.01225,"64":0.00306,"65":0.00306,"68":0.00306,"69":0.02757,"70":0.00919,"71":0.00919,"72":0.00919,"74":0.01532,"75":0.01532,"77":0.00613,"78":0.03369,"79":0.02757,"80":0.01225,"81":0.01532,"83":0.00613,"84":0.00613,"85":0.02144,"86":0.06126,"87":0.06432,"88":0.01838,"89":0.00919,"90":0.02144,"91":0.02757,"92":0.07045,"93":0.0582,"94":0.01225,"95":0.0245,"96":0.14702,"97":0.09495,"98":0.03982,"99":0.08576,"100":0.20522,"101":0.77188,"102":10.65924,"103":1.03836,"104":0.01225,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 31 32 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 51 52 53 56 58 59 66 67 73 76 105 106"},F:{"42":0.00613,"54":0.01225,"70":0.01838,"74":0.01532,"79":0.13784,"83":0.00306,"84":0.00919,"85":0.02757,"86":0.08576,"87":0.82395,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 75 76 77 78 80 81 82 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.07964,"13":0.0245,"14":0.0245,"15":0.06126,"16":0.04288,"17":0.03369,"18":0.29711,"81":0.00306,"84":0.03063,"85":0.02757,"88":0.00613,"89":0.02144,"90":0.02757,"92":0.09495,"95":0.01838,"96":0.00613,"97":0.01225,"98":0.03063,"99":0.04595,"100":0.07964,"101":0.48702,"102":2.07671,"103":0.40125,_:"79 80 83 86 87 91 93 94"},E:{"4":0,"9":0.00919,"10":0.00306,"12":0.00613,"13":0.00306,"14":0.03063,_:"0 5 6 7 8 11 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 16.0","5.1":0.01838,"12.1":0.01225,"13.1":0.03676,"14.1":0.01838,"15.1":0.00613,"15.2-15.3":0.0245,"15.4":0.07351,"15.5":0.22666},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00382,"5.0-5.1":0.00091,"6.0-6.1":0.00109,"7.0-7.1":0.00801,"8.1-8.4":0.00091,"9.0-9.2":0.00291,"9.3":0.08701,"10.0-10.2":0,"10.3":0.01857,"11.0-11.2":0.00419,"11.3-11.4":0.00309,"12.0-12.1":0.00728,"12.2-12.5":0.14709,"13.0-13.1":0.00674,"13.2":0.00255,"13.3":0.01383,"13.4-13.7":0.03331,"14.0-14.4":0.21408,"14.5-14.8":0.13708,"15.0-15.1":0.10795,"15.2-15.3":0.10758,"15.4":0.28234,"15.5":0.61675,"16.0":0.00346},P:{"4":0.20167,"5.0-5.4":0.03107,"6.2-6.4":0.05107,"7.2-7.4":0.16982,"8.2":0.01021,"9.2":0.05307,"10.1":0.03064,"11.1-11.2":0.03184,"12.0":0.04425,"13.0":0.05307,"14.0":0.11675,"15.0":0.09553,"16.0":0.35026,"17.0":0.87035},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00294,"4.2-4.3":0.00705,"4.4":0,"4.4.3-4.4.4":0.09406},A:{"8":0.00613,"10":0.00613,"11":0.11333,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.00694},Q:{"10.4":0.00694},O:{"0":6.91619},H:{"0":6.94185},L:{"0":56.47079},S:{"2.5":0.03469},R:{_:"0"},M:{"0":0.38847}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MX.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MX.js index 10205392d73e94..2d0ee1c6205b6c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MX.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MX.js @@ -1 +1 @@ -module.exports={C:{"4":0.69904,"34":0.00874,"52":0.02185,"56":0.00437,"72":0.00437,"73":0.00437,"78":0.04369,"84":0.00437,"88":0.00874,"89":0.00437,"90":0.01311,"91":0.02185,"92":0.00437,"93":0.00437,"94":0.0699,"95":0.03058,"96":0.5636,"97":0.93497,"98":0.00874,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 74 75 76 77 79 80 81 82 83 85 86 87 99 3.5 3.6"},D:{"22":0.00874,"34":0.00437,"38":0.01311,"39":0.00874,"47":0.00437,"48":0.00437,"49":0.07427,"52":0.01311,"53":0.00437,"58":0.00437,"60":0.00437,"63":0.00437,"65":0.01311,"66":0.02185,"67":0.01748,"69":0.00437,"70":0.00874,"71":0.00437,"72":0.00437,"73":0.00437,"74":0.00874,"75":0.01311,"76":0.02185,"77":0.01311,"78":0.00874,"79":0.16602,"80":0.01748,"81":0.02185,"83":0.01748,"84":0.02185,"85":0.01748,"86":0.02621,"87":0.09612,"88":0.03058,"89":0.02185,"90":0.03495,"91":0.07427,"92":0.07427,"93":0.14418,"94":0.0699,"95":0.0699,"96":0.42379,"97":8.14819,"98":21.37315,"99":0.01748,"100":0.00874,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 40 41 42 43 44 45 46 50 51 54 55 56 57 59 61 62 64 68 101"},F:{"82":0.3102,"83":0.93934,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01311,"15":0.00874,"16":0.00874,"17":0.00874,"18":0.02621,"85":0.00874,"89":0.00437,"90":0.00874,"91":0.00437,"92":0.00874,"94":0.00874,"95":0.0568,"96":0.03495,"97":0.88254,"98":2.60392,_:"13 14 79 80 81 83 84 86 87 88 93"},E:{"4":0,"13":0.02185,"14":0.14855,"15":0.10923,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.02185,"10.1":0.00437,"11.1":0.01748,"12.1":0.03932,"13.1":0.17913,"14.1":0.5068,"15.1":0.26214,"15.2-15.3":0.55049,"15.4":0.00437},G:{"8":0.00175,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00614,"6.0-6.1":0.00175,"7.0-7.1":0.01052,"8.1-8.4":0.00263,"9.0-9.2":0.01315,"9.3":0.06925,"10.0-10.2":0.00175,"10.3":0.05435,"11.0-11.2":0.01052,"11.3-11.4":0.03506,"12.0-12.1":0.01052,"12.2-12.5":0.43305,"13.0-13.1":0.01578,"13.2":0.00438,"13.3":0.03068,"13.4-13.7":0.10695,"14.0-14.4":0.3375,"14.5-14.8":1.62087,"15.0-15.1":1.2676,"15.2-15.3":4.69782,"15.4":0.02981},P:{"4":0.12942,"5.0-5.4":0.01024,"6.2-6.4":0.02048,"7.2-7.4":0.07549,"8.2":0.01015,"9.2":0.12286,"10.1":0.02048,"11.1-11.2":0.04314,"12.0":0.01078,"13.0":0.03235,"14.0":0.04314,"15.0":0.04314,"16.0":0.89514},I:{"0":0,"3":0,"4":0.00116,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00174,"4.2-4.3":0.00348,"4.4":0,"4.4.3-4.4.4":0.03304},A:{"8":0.01885,"9":0.00942,"10":0.00942,"11":0.2026,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.17456},Q:{"10.4":0},O:{"0":0.05068},H:{"0":0.19192},L:{"0":41.32315},S:{"2.5":0}}; +module.exports={C:{"4":0.77425,"52":0.02405,"56":0.00481,"66":0.00962,"73":0.00481,"78":0.03366,"88":0.00962,"90":0.00962,"91":0.02405,"94":0.05771,"96":0.01924,"97":0.00481,"98":0.00962,"99":0.02405,"100":0.16351,"101":1.33209,"102":0.03847,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 86 87 89 92 93 95 103 104 3.5 3.6"},D:{"22":0.00481,"38":0.00962,"49":0.06252,"52":0.01924,"63":0.00481,"65":0.00962,"66":0.01924,"67":0.01443,"69":0.00962,"70":0.00481,"72":0.00481,"73":0.00481,"74":0.00962,"75":0.01443,"76":0.02885,"77":0.00962,"78":0.00962,"79":0.06733,"80":0.01443,"81":0.01443,"83":0.01443,"84":0.01924,"85":0.01443,"86":0.01924,"87":0.06252,"88":0.02405,"89":0.01924,"90":0.03847,"91":0.09618,"92":0.05771,"93":0.02405,"94":0.03366,"95":0.01924,"96":0.09618,"97":0.09137,"98":0.07214,"99":0.19236,"100":0.28373,"101":1.70239,"102":30.13319,"103":2.12077,"104":0.00481,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 56 57 58 59 60 61 62 64 68 71 105 106"},F:{"28":0.00962,"85":0.01443,"86":0.44724,"87":0.71173,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01443,"15":0.00962,"16":0.00481,"17":0.00962,"18":0.01924,"85":0.00481,"88":0.00481,"90":0.00481,"92":0.00962,"94":0.00481,"96":0.00962,"97":0.00962,"98":0.00962,"99":0.02405,"100":0.02405,"101":0.54823,"102":2.78922,"103":0.428,_:"13 14 79 80 81 83 84 86 87 89 91 93 95"},E:{"4":0,"13":0.01924,"14":0.10099,"15":0.03366,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 16.0","5.1":0.00962,"10.1":0.00481,"11.1":0.01443,"12.1":0.03847,"13.1":0.13946,"14.1":0.27892,"15.1":0.06252,"15.2-15.3":0.05771,"15.4":0.35106,"15.5":0.79829},G:{"8":0.00091,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00637,"6.0-6.1":0.00091,"7.0-7.1":0.01183,"8.1-8.4":0.00091,"9.0-9.2":0.00728,"9.3":0.06098,"10.0-10.2":0,"10.3":0.05279,"11.0-11.2":0.00637,"11.3-11.4":0.03003,"12.0-12.1":0.00819,"12.2-12.5":0.36677,"13.0-13.1":0.00728,"13.2":0.00273,"13.3":0.02093,"13.4-13.7":0.07281,"14.0-14.4":0.21115,"14.5-14.8":0.68531,"15.0-15.1":0.15472,"15.2-15.3":0.34493,"15.4":1.30237,"15.5":5.69547,"16.0":0.02457},P:{"4":0.09507,"5.0-5.4":0.0405,"6.2-6.4":0.09113,"7.2-7.4":0.07394,"8.2":0.01021,"9.2":0.02034,"10.1":0.03038,"11.1-11.2":0.03169,"12.0":0.02034,"13.0":0.02113,"14.0":0.03169,"15.0":0.02113,"16.0":0.0845,"17.0":0.86617},I:{"0":0,"3":0,"4":0.00144,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00216,"4.2-4.3":0.00431,"4.4":0,"4.4.3-4.4.4":0.03882},A:{"9":0.00481,"11":0.12984,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.05192},H:{"0":0.18679},L:{"0":42.72689},S:{"2.5":0.00519},R:{_:"0"},M:{"0":0.17653}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MY.js index 0bb186ae5e0e8c..96a68947b5bdde 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MY.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MY.js @@ -1 +1 @@ -module.exports={C:{"34":0.01996,"39":0.01198,"52":0.02395,"60":0.02395,"63":0.00399,"71":0.00399,"78":0.02395,"81":0.00399,"88":0.00399,"89":0.00399,"91":0.03593,"92":0.00399,"93":0.00399,"94":0.01597,"95":0.02395,"96":0.54291,"97":0.97804,"98":0.02395,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 64 65 66 67 68 69 70 72 73 74 75 76 77 79 80 82 83 84 85 86 87 90 99 3.5 3.6"},D:{"22":0.00798,"34":0.02395,"38":0.08782,"47":0.01198,"49":0.07186,"53":0.07585,"55":0.07186,"56":0.03194,"58":0.00399,"62":0.00798,"63":0.00399,"65":0.01198,"66":0.00399,"67":0.01198,"68":0.00798,"69":0.01597,"70":0.02794,"71":0.01198,"72":0.01597,"73":0.01597,"74":0.01597,"75":0.03194,"76":0.01198,"77":0.00798,"78":0.01996,"79":0.31138,"80":0.02395,"81":0.0519,"83":0.03992,"84":0.03593,"85":0.04391,"86":0.0519,"87":0.07984,"88":0.04391,"89":0.03992,"90":0.02395,"91":0.07984,"92":0.18363,"93":0.07186,"94":0.07585,"95":0.06387,"96":0.47904,"97":7.52492,"98":20.61469,"99":0.01198,"100":0.02395,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 57 59 60 61 64 101"},F:{"28":0.03194,"36":0.05589,"40":0.01198,"46":0.05589,"82":0.09581,"83":0.37924,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01198,"84":0.00399,"92":0.00399,"95":0.00399,"96":0.02395,"97":0.35529,"98":1.74051,_:"12 13 14 15 16 17 79 80 81 83 85 86 87 88 89 90 91 93 94"},E:{"4":0,"13":0.03593,"14":0.21956,"15":0.18762,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00798,"11.1":0.01597,"12.1":0.02794,"13.1":0.1477,"14.1":0.87026,"15.1":0.50698,"15.2-15.3":0.79042,"15.4":0.00399},G:{"8":0.00133,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00265,"5.0-5.1":0.0053,"6.0-6.1":0.01061,"7.0-7.1":0.02652,"8.1-8.4":0.03448,"9.0-9.2":0.02652,"9.3":0.23872,"10.0-10.2":0.02255,"10.3":0.17241,"11.0-11.2":0.02122,"11.3-11.4":0.02785,"12.0-12.1":0.03713,"12.2-12.5":0.65781,"13.0-13.1":0.03448,"13.2":0.01194,"13.3":0.07825,"13.4-13.7":0.19496,"14.0-14.4":0.70423,"14.5-14.8":2.07688,"15.0-15.1":2.5636,"15.2-15.3":6.27572,"15.4":0.03448},P:{"4":0.76275,"5.0-5.4":0.0216,"6.2-6.4":0.02104,"7.2-7.4":0.06269,"8.2":0.01057,"9.2":0.01045,"10.1":0.01052,"11.1-11.2":0.05224,"12.0":0.0209,"13.0":0.06269,"14.0":0.08359,"15.0":0.08359,"16.0":1.50461},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00698,"4.4":0,"4.4.3-4.4.4":0.02907},A:{"9":0.00577,"11":0.14992,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.01512,_:"11"},R:{_:"0"},M:{"0":0.13818},Q:{"10.4":0.00601},O:{"0":1.03938},H:{"0":0.59724},L:{"0":43.04182},S:{"2.5":0}}; +module.exports={C:{"34":0.02234,"39":0.00447,"52":0.01787,"60":0.03127,"72":0.00447,"78":0.0134,"88":0.00447,"91":0.04914,"94":0.00447,"95":0.00447,"96":0.00447,"97":0.00893,"98":0.0134,"99":0.04467,"100":0.13848,"101":1.40264,"102":0.04467,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 103 104 3.5 3.6"},D:{"22":0.00893,"34":0.02234,"38":0.08041,"47":0.02234,"49":0.07147,"53":0.07594,"55":0.06254,"56":0.03574,"57":0.00447,"60":0.00447,"62":0.00893,"63":0.00893,"65":0.00893,"66":0.00447,"67":0.00893,"68":0.00893,"69":0.0134,"70":0.02234,"71":0.00893,"72":0.00893,"73":0.0134,"74":0.0134,"75":0.03127,"76":0.00893,"77":0.00893,"78":0.0134,"79":0.36629,"80":0.02234,"81":0.0536,"83":0.05807,"84":0.03127,"85":0.0402,"86":0.0536,"87":0.08041,"88":0.03127,"89":0.04467,"90":0.02234,"91":0.08041,"92":0.14294,"93":0.02234,"94":0.03574,"95":0.03127,"96":0.08934,"97":0.14294,"98":0.09381,"99":0.12508,"100":0.30376,"101":1.47858,"102":28.17784,"103":1.7868,"104":0.0268,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 58 59 61 64 105 106"},F:{"28":0.04914,"36":0.04914,"40":0.00893,"46":0.05807,"85":0.0134,"86":0.18761,"87":0.33949,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00893,"92":0.00447,"99":0.00893,"100":0.00893,"101":0.24569,"102":1.96995,"103":0.29482,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98"},E:{"4":0,"13":0.03127,"14":0.16081,"15":0.07594,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.00893,"11.1":0.00893,"12.1":0.02234,"13.1":0.12954,"14.1":0.49137,"15.1":0.13401,"15.2-15.3":0.11168,"15.4":0.86213,"15.5":1.63492},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00389,"5.0-5.1":0.00778,"6.0-6.1":0.00907,"7.0-7.1":0.02463,"8.1-8.4":0.0363,"9.0-9.2":0.02333,"9.3":0.24372,"10.0-10.2":0.01037,"10.3":0.16205,"11.0-11.2":0.01685,"11.3-11.4":0.02204,"12.0-12.1":0.03111,"12.2-12.5":0.56651,"13.0-13.1":0.02333,"13.2":0.00907,"13.3":0.04926,"13.4-13.7":0.12575,"14.0-14.4":0.40965,"14.5-14.8":0.85042,"15.0-15.1":0.40965,"15.2-15.3":0.60541,"15.4":2.49163,"15.5":6.7904,"16.0":0.01945},P:{"4":0.83258,"5.0-5.4":0.03107,"6.2-6.4":0.05107,"7.2-7.4":0.04216,"8.2":0.01021,"9.2":0.05307,"10.1":0.03064,"11.1-11.2":0.04216,"12.0":0.04425,"13.0":0.03162,"14.0":0.04216,"15.0":0.04216,"16.0":0.15809,"17.0":1.46493},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00229,"4.2-4.3":0.00458,"4.4":0,"4.4.3-4.4.4":0.02633},A:{"11":0.16081,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.00553},O:{"0":0.91295},H:{"0":0.58669},L:{"0":39.06521},S:{"2.5":0},R:{_:"0"},M:{"0":0.14939}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MZ.js index 9fb039d0b71a5a..bebb6fb01dd656 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MZ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MZ.js @@ -1 +1 @@ -module.exports={C:{"35":0.00863,"45":0.00431,"52":0.00431,"65":0.00431,"66":0.00431,"78":0.00863,"88":0.01725,"89":0.00863,"91":0.01294,"92":0.00431,"93":0.00863,"94":0.01294,"95":0.02588,"96":0.77634,"97":1.46642,"98":0.00863,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 90 99 3.5 3.6"},D:{"11":0.00431,"33":0.01725,"39":0.02157,"40":0.00863,"42":0.00431,"43":0.04744,"49":0.01294,"53":0.00431,"56":0.03882,"60":0.18115,"62":0.00431,"63":0.02157,"65":0.00431,"68":0.00431,"69":0.00863,"70":0.01725,"72":0.00431,"73":0.00431,"74":0.04744,"77":0.00863,"79":0.01725,"80":0.01725,"81":0.38817,"83":0.01294,"84":0.00431,"85":0.00431,"86":0.06901,"87":0.05176,"88":0.02157,"89":0.02157,"90":0.01725,"91":0.03882,"92":0.03019,"93":0.1984,"94":0.04744,"95":0.08626,"96":0.29328,"97":5.09365,"98":12.09797,"99":0.01294,"100":0.00431,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 41 44 45 46 47 48 50 51 52 54 55 57 58 59 61 64 66 67 71 75 76 78 101"},F:{"20":0.01725,"53":0.00863,"65":0.01294,"79":0.00863,"80":0.02157,"82":0.18115,"83":1.60012,_:"9 11 12 15 16 17 18 19 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01725,"13":0.00431,"14":0.00431,"15":0.00863,"16":0.03019,"17":0.01294,"18":0.18115,"84":0.01725,"85":0.00431,"89":0.12939,"90":0.00431,"91":0.00863,"92":0.0345,"93":0.00863,"94":0.01725,"95":0.01725,"96":0.04313,"97":0.59519,"98":1.626,_:"79 80 81 83 86 87 88"},E:{"4":0,"13":0.01294,"14":0.02588,"15":0.00863,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.00863,"11.1":0.00863,"12.1":0.01294,"13.1":0.07763,"14.1":0.06901,"15.1":0.02588,"15.2-15.3":0.03882},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00176,"6.0-6.1":0.00059,"7.0-7.1":0.03515,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02753,"10.0-10.2":0.00234,"10.3":0.11423,"11.0-11.2":0.01172,"11.3-11.4":0.06326,"12.0-12.1":0.02929,"12.2-12.5":1.80829,"13.0-13.1":0.13707,"13.2":0.06444,"13.3":0.05213,"13.4-13.7":0.18042,"14.0-14.4":0.5395,"14.5-14.8":0.71816,"15.0-15.1":0.62971,"15.2-15.3":1.43749,"15.4":0.00351},P:{"4":1.32129,"5.0-5.4":0.03097,"6.2-6.4":0.02048,"7.2-7.4":0.20645,"8.2":0.11355,"9.2":0.08258,"10.1":0.02048,"11.1-11.2":0.17548,"12.0":0.12387,"13.0":0.07226,"14.0":0.19613,"15.0":0.08258,"16.0":0.67097},I:{"0":0,"3":0,"4":0.00023,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00085,"4.2-4.3":0.00271,"4.4":0,"4.4.3-4.4.4":0.03032},A:{"11":0.1984,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.03412},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.07392},Q:{"10.4":0.00569},O:{"0":0.21038},H:{"0":5.0117},L:{"0":58.17232},S:{"2.5":0.03412}}; +module.exports={C:{"57":0.02593,"59":0.00432,"66":0.00432,"72":0.00864,"78":0.01728,"84":0.00432,"88":0.01296,"89":0.00864,"91":0.03025,"97":0.00432,"99":0.02161,"100":0.22037,"101":1.61605,"102":0.07346,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 58 60 61 62 63 64 65 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 87 90 92 93 94 95 96 98 103 104 3.5 3.6"},D:{"30":0.00864,"33":0.00864,"40":0.00864,"43":0.05185,"49":0.04321,"55":0.00864,"56":0.01296,"58":0.00432,"59":0.00432,"60":0.01296,"63":0.01296,"65":0.00432,"67":0.00432,"68":0.02161,"69":0.00864,"70":0.01296,"71":0.00864,"74":0.05617,"75":0.00864,"78":0.01728,"79":0.02161,"80":0.06482,"81":0.46667,"83":0.01296,"84":0.01296,"85":0.01296,"86":0.02593,"87":0.05185,"88":0.00864,"89":0.00864,"90":0.09074,"91":0.04321,"92":0.01728,"93":0.00864,"94":0.03025,"95":0.03025,"96":0.06049,"97":0.07778,"98":0.05617,"99":0.12099,"100":0.15124,"101":1.4605,"102":16.48029,"103":1.30062,"104":0.01296,"105":0.01296,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 34 35 36 37 38 39 41 42 44 45 46 47 48 50 51 52 53 54 57 61 62 64 66 72 73 76 77 106"},F:{"53":0.01296,"72":0.00432,"79":0.00864,"80":0.00864,"81":0.00432,"84":0.02593,"85":0.01728,"86":0.08642,"87":0.98087,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.03889,"13":0.02593,"14":0.00864,"15":0.01296,"16":0.01296,"17":0.00864,"18":0.11667,"84":0.01728,"85":0.03457,"89":0.05617,"90":0.01296,"91":0.02161,"92":0.06049,"94":0.01296,"96":0.01728,"97":0.00432,"98":0.01296,"99":0.04753,"100":0.05185,"101":0.40185,"102":1.89692,"103":0.39753,_:"79 80 81 83 86 87 88 93 95"},E:{"4":0,"13":0.00864,"14":0.00864,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.00864,"13.1":0.06914,"14.1":0.03457,"15.1":0.01728,"15.2-15.3":0.00864,"15.4":0.04321,"15.5":0.19445},G:{"8":0.00195,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00146,"7.0-7.1":0.03556,"8.1-8.4":0.00049,"9.0-9.2":0,"9.3":0.01705,"10.0-10.2":0.00536,"10.3":0.07257,"11.0-11.2":0.01315,"11.3-11.4":0.02533,"12.0-12.1":0.01072,"12.2-12.5":0.78128,"13.0-13.1":0.0453,"13.2":0.02338,"13.3":0.04384,"13.4-13.7":0.09498,"14.0-14.4":0.53481,"14.5-14.8":0.41012,"15.0-15.1":0.16756,"15.2-15.3":0.50997,"15.4":0.5918,"15.5":1.47001,"16.0":0.01023},P:{"4":0.60594,"5.0-5.4":0.03046,"6.2-6.4":0.0206,"7.2-7.4":0.1985,"8.2":0.01015,"9.2":0.12537,"10.1":0.01045,"11.1-11.2":0.11492,"12.0":0.11492,"13.0":0.05224,"14.0":0.11492,"15.0":0.02089,"16.0":0.18805,"17.0":0.66862},I:{"0":0,"3":0,"4":0.00009,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00028,"4.2-4.3":0.00062,"4.4":0,"4.4.3-4.4.4":0.01604},A:{"11":0.12531,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.02272},Q:{"10.4":0},O:{"0":0.38617},H:{"0":5.89803},L:{"0":57.2618},S:{"2.5":0.03975},R:{_:"0"},M:{"0":0.34642}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NA.js index 60a3ff33c60500..dcfe48de4156c2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NA.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NA.js @@ -1 +1 @@ -module.exports={C:{"34":0.01641,"37":0.0041,"47":0.00821,"49":0.00821,"52":0.09847,"56":0.0041,"60":0.0041,"72":0.0041,"78":0.02872,"82":0.01231,"83":0.01231,"84":0.01231,"86":0.0041,"87":0.01231,"89":0.0041,"91":0.02462,"94":0.00821,"95":0.02462,"96":0.86573,"97":1.45246,"98":0.02052,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 38 39 40 41 42 43 44 45 46 48 50 51 53 54 55 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 85 88 90 92 93 99 3.5 3.6"},D:{"36":0.00821,"37":0.0041,"38":0.01231,"39":0.0041,"40":0.0041,"48":0.01641,"49":0.04924,"55":0.01231,"63":0.01231,"69":0.02462,"70":0.00821,"71":0.02872,"72":0.00821,"73":0.0041,"75":0.01641,"76":0.01231,"78":0.0041,"79":0.01641,"80":0.01231,"81":0.02462,"83":0.01641,"84":0.02462,"85":0.01231,"86":0.04103,"87":0.02462,"88":0.02462,"89":0.01641,"90":0.03282,"91":0.03693,"92":0.05334,"93":0.04103,"94":0.09437,"95":0.07796,"96":0.2749,"97":6.63455,"98":16.28481,"99":0.0041,"100":0.0041,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 41 42 43 44 45 46 47 50 51 52 53 54 56 57 58 59 60 61 62 64 65 66 67 68 74 77 101"},F:{"79":0.01231,"81":0.0041,"82":0.09847,"83":0.84932,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.03282,"13":0.02052,"14":0.01231,"15":0.02462,"16":0.02462,"17":0.04924,"18":0.09847,"80":0.00821,"81":0.01641,"84":0.02872,"85":0.00821,"88":0.0041,"89":0.01641,"90":0.00821,"91":0.0041,"92":0.04103,"93":0.01231,"94":0.01641,"95":0.03282,"96":0.4062,"97":1.02985,"98":3.37677,_:"79 83 86 87"},E:{"4":0,"12":0.01641,"13":0.01231,"14":0.08206,"15":0.11078,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 10.1 15.4","5.1":0.00821,"11.1":0.02052,"12.1":0.02462,"13.1":0.10668,"14.1":0.31593,"15.1":0.22156,"15.2-15.3":0.51698},G:{"8":0,"3.2":0,"4.0-4.1":0.00067,"4.2-4.3":0,"5.0-5.1":0.00399,"6.0-6.1":0.01332,"7.0-7.1":0.01864,"8.1-8.4":0.01531,"9.0-9.2":0.00067,"9.3":0.0526,"10.0-10.2":0,"10.3":0.07057,"11.0-11.2":0.01065,"11.3-11.4":0.00266,"12.0-12.1":0.01332,"12.2-12.5":0.47536,"13.0-13.1":0.01465,"13.2":0.00466,"13.3":0.06192,"13.4-13.7":0.08855,"14.0-14.4":0.5446,"14.5-14.8":1.14313,"15.0-15.1":1.44805,"15.2-15.3":2.66641,"15.4":0.00799},P:{"4":0.48383,"5.0-5.4":0.03097,"6.2-6.4":0.02048,"7.2-7.4":0.7309,"8.2":0.11355,"9.2":0.08258,"10.1":0.02048,"11.1-11.2":0.21618,"12.0":0.02059,"13.0":0.15441,"14.0":0.26765,"15.0":0.23677,"16.0":2.66623},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00077,"4.2-4.3":0.00294,"4.4":0,"4.4.3-4.4.4":0.02578},A:{"9":0.00843,"11":0.76293,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.56611},Q:{"10.4":0},O:{"0":0.65457},H:{"0":1.7642},L:{"0":49.09273},S:{"2.5":0}}; +module.exports={C:{"34":0.01185,"44":0.00395,"47":0.01185,"52":0.02766,"56":0.00395,"60":0.0079,"61":0.0079,"68":0.0079,"72":0.01185,"78":0.02766,"82":0.0079,"86":0.01185,"91":0.07112,"93":0.0079,"94":0.00395,"95":0.0079,"97":0.00395,"98":0.0079,"99":0.02371,"100":0.20545,"101":1.89253,"102":0.09482,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 45 46 48 49 50 51 53 54 55 57 58 59 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 83 84 85 87 88 89 90 92 96 103 104 3.5 3.6"},D:{"37":0.00395,"43":0.0079,"49":0.0158,"56":0.0079,"63":0.0158,"65":0.00395,"68":0.0079,"69":0.04741,"70":0.0079,"72":0.0079,"74":0.0079,"75":0.00395,"79":0.06322,"80":0.01185,"81":0.0158,"83":0.0079,"84":0.0079,"85":0.0079,"86":0.0158,"87":0.01976,"88":0.02766,"89":0.02371,"90":0.01185,"91":0.03951,"92":0.02766,"93":0.0158,"94":0.03951,"95":0.0158,"96":0.06717,"97":0.08297,"98":0.06717,"99":0.27657,"100":0.28052,"101":1.33149,"102":19.22162,"103":1.87673,"104":0.16199,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 64 66 67 71 73 76 77 78 105 106"},F:{"79":0.0079,"84":0.00395,"85":0.0079,"86":0.12248,"87":0.57685,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02371,"13":0.01185,"14":0.01185,"15":0.0158,"16":0.02766,"17":0.01976,"18":0.09087,"83":0.00395,"84":0.02371,"85":0.00395,"89":0.0079,"90":0.01185,"91":0.00395,"92":0.02766,"93":0.01185,"94":0.02371,"95":0.01976,"96":0.13829,"97":0.01185,"98":0.03556,"99":0.02371,"100":0.07902,"101":0.58475,"102":3.07783,"103":0.70328,_:"79 80 81 86 87 88"},E:{"4":0,"13":0.01185,"14":0.02371,"15":0.01185,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.0079,"12.1":0.01185,"13.1":0.09878,"14.1":0.16989,"15.1":0.03556,"15.2-15.3":0.06322,"15.4":0.32793,"15.5":0.67167,"16.0":0.00395},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00203,"6.0-6.1":0,"7.0-7.1":0.01421,"8.1-8.4":0.01083,"9.0-9.2":0,"9.3":0.04738,"10.0-10.2":0.00135,"10.3":0.10763,"11.0-11.2":0.00609,"11.3-11.4":0.00812,"12.0-12.1":0.00542,"12.2-12.5":0.45893,"13.0-13.1":0.0088,"13.2":0.00068,"13.3":0.01963,"13.4-13.7":0.08732,"14.0-14.4":0.46638,"14.5-14.8":0.60108,"15.0-15.1":0.39869,"15.2-15.3":0.375,"15.4":1.12635,"15.5":2.99795,"16.0":0.01286},P:{"4":0.53342,"5.0-5.4":0.03046,"6.2-6.4":0.0206,"7.2-7.4":0.81039,"8.2":0.01015,"9.2":0.01026,"10.1":0.05129,"11.1-11.2":0.09232,"12.0":0.02052,"13.0":0.09232,"14.0":0.15387,"15.0":0.07181,"16.0":0.4411,"17.0":2.41067},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00266,"4.2-4.3":0.00409,"4.4":0,"4.4.3-4.4.4":0.03559},A:{"9":0.00395,"11":0.403,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.50207},H:{"0":1.31144},L:{"0":51.66409},S:{"2.5":0},R:{_:"0"},M:{"0":0.38714}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NC.js index 0b74bd33779e94..e2aea90eab6697 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NC.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NC.js @@ -1 +1 @@ -module.exports={C:{"45":0.02514,"48":0.00359,"52":0.14368,"56":0.26222,"60":0.01078,"68":0.01796,"78":0.25503,"80":0.00718,"84":0.00359,"87":0.02155,"88":0.00718,"89":0.01078,"91":0.10417,"92":0.00359,"93":0.00359,"94":0.02155,"95":0.03951,"96":2.18034,"97":3.10349,"98":0.00359,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 49 50 51 53 54 55 57 58 59 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 81 82 83 85 86 90 99 3.5 3.6"},D:{"49":0.10776,"63":0.12213,"65":0.01078,"67":0.00359,"70":0.00359,"71":0.00359,"74":0.03592,"75":0.00359,"76":0.19397,"77":0.00359,"78":0.00718,"79":0.03233,"80":0.01078,"81":0.00359,"83":0.00718,"85":0.01796,"86":0.0431,"87":0.05388,"89":0.01078,"90":0.02155,"91":0.00718,"92":0.02514,"93":0.05747,"94":0.05029,"95":0.25503,"96":0.21193,"97":5.26587,"98":12.11222,"99":0.00359,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 66 68 69 72 73 84 88 100 101"},F:{"36":0.00359,"82":0.32328,"83":0.34124,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00718,"15":0.01796,"17":0.00718,"18":0.02514,"84":0.00718,"85":0.02155,"89":0.00718,"91":0.02514,"94":0.00359,"95":0.00718,"96":0.05029,"97":0.84412,"98":2.81972,_:"12 13 16 79 80 81 83 86 87 88 90 92 93"},E:{"4":0,"12":0.0467,"13":0.06825,"14":0.16882,"15":0.10417,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02874,"11.1":0.12931,"12.1":0.10417,"13.1":0.33765,"14.1":1.52301,"15.1":0.44182,"15.2-15.3":1.0776,"15.4":0.01078},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00223,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03683,"10.0-10.2":0.00446,"10.3":0.13281,"11.0-11.2":0.01228,"11.3-11.4":0.125,"12.0-12.1":0.02009,"12.2-12.5":0.99103,"13.0-13.1":0.02009,"13.2":0.00112,"13.3":0.14508,"13.4-13.7":0.24553,"14.0-14.4":0.39396,"14.5-14.8":1.73096,"15.0-15.1":1.3783,"15.2-15.3":5.90157,"15.4":0.01674},P:{"4":0.1143,"5.0-5.4":0.01015,"6.2-6.4":0.02048,"7.2-7.4":0.99755,"8.2":0.11355,"9.2":0.02078,"10.1":0.02048,"11.1-11.2":0.4676,"12.0":0.04156,"13.0":0.239,"14.0":0.22861,"15.0":0.24939,"16.0":3.67848},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00034,"4.4":0,"4.4.3-4.4.4":0.0253},A:{"9":0.00718,"11":0.21552,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.44222},Q:{"10.4":0},O:{"0":0.0705},H:{"0":0.03034},L:{"0":27.45535},S:{"2.5":0}}; +module.exports={C:{"47":0.00857,"48":0.00428,"52":0.19702,"57":0.03855,"60":0.02998,"68":0.02998,"78":0.25698,"80":0.00428,"86":0.00857,"89":0.00857,"91":0.23557,"94":0.01713,"95":0.00428,"96":0.01713,"97":0.16704,"98":0.02998,"99":0.03855,"100":0.92513,"101":4.62564,"102":0.14562,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 50 51 53 54 55 56 58 59 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 81 82 83 84 85 87 88 90 92 93 103 104 3.5 3.6"},D:{"49":0.05568,"65":0.00428,"73":0.01285,"74":0.03426,"75":0.00428,"76":0.04711,"78":0.04711,"79":0.04283,"80":0.00857,"81":0.00857,"84":0.01713,"85":0.0257,"86":0.03426,"87":0.04711,"89":0.05568,"90":0.02998,"91":0.01285,"92":0.03855,"93":0.06425,"94":0.13277,"95":0.0257,"96":0.07709,"97":0.23985,"98":0.13277,"99":0.32123,"100":0.25698,"101":1.05362,"102":18.90945,"103":1.61469,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 77 83 88 104 105 106"},F:{"28":0.00857,"36":0.00428,"81":0.02998,"85":0.00428,"86":0.33407,"87":0.58249,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.01713,"15":0.00428,"16":0.00857,"17":0.00857,"18":0.02142,"84":0.0257,"85":0.01285,"89":0.00857,"91":0.00428,"96":0.00857,"97":0.08138,"99":0.00857,"100":0.0257,"101":0.44972,"102":3.15229,"103":0.84803,_:"12 14 79 80 81 83 86 87 88 90 92 93 94 95 98"},E:{"4":0,"13":0.03855,"14":0.22272,"15":0.0514,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01713,"11.1":0.02998,"12.1":0.15847,"13.1":0.40689,"14.1":0.77522,"15.1":0.11564,"15.2-15.3":0.19702,"15.4":0.6039,"15.5":2.13293,"16.0":0.00857},G:{"8":0.00312,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00156,"6.0-6.1":0.00312,"7.0-7.1":0.00312,"8.1-8.4":0.02959,"9.0-9.2":0,"9.3":0.21182,"10.0-10.2":0,"10.3":0.15887,"11.0-11.2":0.00312,"11.3-11.4":0.21338,"12.0-12.1":0.03115,"12.2-12.5":0.6635,"13.0-13.1":0.00779,"13.2":0.00779,"13.3":0.21182,"13.4-13.7":0.1355,"14.0-14.4":0.37692,"14.5-14.8":1.06222,"15.0-15.1":0.53578,"15.2-15.3":0.54668,"15.4":3.37355,"15.5":7.91991,"16.0":0.05296},P:{"4":0.01049,"5.0-5.4":0.03046,"6.2-6.4":0.0206,"7.2-7.4":0.37778,"8.2":0.01015,"9.2":0.02099,"10.1":0.01002,"11.1-11.2":0.19938,"12.0":0.02099,"13.0":0.14691,"14.0":0.14691,"15.0":0.08395,"16.0":0.43025,"17.0":4.7642},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00047,"4.4":0,"4.4.3-4.4.4":0.01668},A:{"11":0.09423,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02858},H:{"0":0.02706},L:{"0":35.9085},S:{"2.5":0},R:{_:"0"},M:{"0":0.26294}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NE.js index d83a475915ca3c..f218a3053e3630 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NE.js @@ -1 +1 @@ -module.exports={C:{"33":0.00316,"34":0.00316,"35":0.00316,"37":0.00316,"45":0.00316,"47":0.00475,"49":0.01107,"52":0.00475,"56":0.00475,"57":0.00316,"60":0.00316,"63":0.00316,"67":0.00633,"68":0.00316,"72":0.00791,"75":0.00475,"77":0.00158,"78":0.00475,"80":0.00158,"84":0.00158,"85":0.00316,"88":0.00475,"89":0.02689,"91":0.02215,"92":0.00158,"93":0.0174,"94":0.03639,"95":0.04113,"96":0.97768,"97":1.32413,"98":0.02689,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 36 38 39 40 41 42 43 44 46 48 50 51 53 54 55 58 59 61 62 64 65 66 69 70 71 73 74 76 79 81 82 83 86 87 90 99 3.5 3.6"},D:{"33":0.00475,"37":0.00949,"43":0.00316,"48":0.00316,"49":0.01107,"57":0.00158,"58":0.02531,"59":0.00316,"60":0.00316,"63":0.00791,"65":0.00316,"66":0.00633,"67":0.02848,"69":0.02848,"70":0.01898,"71":0.01424,"75":0.00633,"78":0.00475,"79":0.27052,"80":0.00475,"81":0.06486,"83":0.00949,"84":0.00316,"86":0.00475,"87":0.0174,"88":0.01424,"89":0.01424,"90":0.01266,"91":0.0174,"92":0.03006,"93":0.01266,"94":0.01424,"95":0.01582,"96":0.09492,"97":2.07084,"98":3.762,"99":0.00475,"100":0.01424,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 38 39 40 41 42 44 45 46 47 50 51 52 53 54 55 56 61 62 64 68 72 73 74 76 77 85 101"},F:{"12":0.00633,"40":0.00475,"42":0.00158,"45":0.00949,"47":0.00158,"79":0.00158,"80":0.00158,"81":0.01266,"82":0.04904,"83":0.24205,_:"9 11 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 43 44 46 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.08543,"13":0.01582,"14":0.01107,"15":0.00475,"16":0.01898,"17":0.01266,"18":0.11865,"84":0.02689,"85":0.01107,"87":0.00158,"89":0.00475,"90":0.00791,"91":0.01107,"92":0.02689,"93":0.04588,"94":0.00158,"95":0.02215,"96":0.64229,"97":0.45562,"98":1.03621,_:"79 80 81 83 86 88"},E:{"4":0,"8":0.00633,"13":0.00949,"14":0.02531,"15":0.00791,_:"0 5 6 7 9 10 11 12 3.1 3.2 6.1 7.1 15.4","5.1":0.00316,"9.1":0.00316,"10.1":0.00158,"11.1":0.01582,"12.1":0.00791,"13.1":0.0174,"14.1":0.04746,"15.1":0.03955,"15.2-15.3":0.04746},G:{"8":0.00071,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00707,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01202,"10.0-10.2":0,"10.3":0.03252,"11.0-11.2":0.04242,"11.3-11.4":0.09968,"12.0-12.1":0.07635,"12.2-12.5":0.7013,"13.0-13.1":0.01485,"13.2":0.01202,"13.3":0.03464,"13.4-13.7":0.21704,"14.0-14.4":1.26899,"14.5-14.8":1.74194,"15.0-15.1":1.53693,"15.2-15.3":1.26899,"15.4":0.00283},P:{"4":0.29325,"5.0-5.4":0.01015,"6.2-6.4":0.04189,"7.2-7.4":0.07331,"8.2":0.11355,"9.2":0.07331,"10.1":0.02048,"11.1-11.2":0.02095,"12.0":0.06167,"13.0":0.04189,"14.0":0.05237,"15.0":0.14662,"16.0":0.62838},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.02221,"4.2-4.3":0.01428,"4.4":0,"4.4.3-4.4.4":0.56954},A:{"9":0.02774,"11":0.3203,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00842},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.0505},Q:{"10.4":0.14309},O:{"0":1.81807},H:{"0":3.80106},L:{"0":71.13845},S:{"2.5":0.00842}}; +module.exports={C:{"29":0.01219,"35":0.00174,"37":0.00348,"38":0.00174,"51":0.00523,"56":0.00348,"60":0.00348,"67":0.00348,"68":0.00348,"72":0.00871,"78":0.00523,"81":0.00348,"85":0.00348,"86":0.00174,"89":0.04007,"90":0.00523,"91":0.03136,"93":0.00174,"97":0.0662,"98":0.01568,"99":0.02961,"100":0.42156,"101":1.92143,"102":0.25782,"103":0.00523,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 36 39 40 41 42 43 44 45 46 47 48 49 50 52 53 54 55 57 58 59 61 62 63 64 65 66 69 70 71 73 74 75 76 77 79 80 82 83 84 87 88 92 94 95 96 104 3.5 3.6"},D:{"22":0.01219,"26":0.01045,"39":0.00174,"40":0.00348,"49":0.00174,"55":0.00697,"58":0.02961,"63":0.00348,"64":0.01219,"70":0.00523,"74":0.00523,"75":0.00348,"77":0.00523,"79":0.19162,"80":0.00871,"81":0.00523,"84":0.00697,"85":0.00174,"86":0.00523,"87":0.02787,"88":0.00348,"89":0.04529,"90":0.00697,"91":0.00348,"92":0.02787,"94":0.00523,"95":0.02787,"96":0.02265,"97":0.01916,"98":0.01394,"99":0.03484,"100":0.06445,"101":0.48602,"102":4.5292,"103":0.51912,"104":0.01219,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 34 35 36 37 38 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 59 60 61 62 65 66 67 68 69 71 72 73 76 78 83 93 105 106"},F:{"19":0.00348,"29":0.00871,"36":0.00174,"45":0.00523,"64":0.00174,"65":0.08884,"79":0.01045,"84":0.00174,"85":0.00697,"86":0.01916,"87":0.23517,_:"9 11 12 15 16 17 18 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 37 38 39 40 41 42 43 44 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.07839,"13":0.00871,"14":0.01045,"15":0.00523,"16":0.01045,"17":0.01394,"18":0.07142,"84":0.01394,"85":0.03136,"89":0.01394,"92":0.01742,"96":0.05923,"97":0.00174,"98":0.02961,"99":0.02613,"100":0.09581,"101":0.46686,"102":1.17411,"103":0.1411,_:"79 80 81 83 86 87 88 90 91 93 94 95"},E:{"4":0,"12":0.00174,"13":0.00871,"14":0.01045,"15":0.00697,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 11.1 16.0","5.1":0.00348,"9.1":0.00697,"10.1":0.00174,"12.1":0.00871,"13.1":0.00697,"14.1":0.01219,"15.1":0.01742,"15.2-15.3":0.01045,"15.4":0.19162,"15.5":0.30311},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.05394,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01586,"10.0-10.2":0.00127,"10.3":0.06472,"11.0-11.2":0.01523,"11.3-11.4":0.01967,"12.0-12.1":0.12691,"12.2-12.5":0.78303,"13.0-13.1":0.0184,"13.2":0.00444,"13.3":0.04125,"13.4-13.7":0.08757,"14.0-14.4":0.71704,"14.5-14.8":1.12505,"15.0-15.1":0.31854,"15.2-15.3":0.74622,"15.4":0.91121,"15.5":1.26909,"16.0":0.02348},P:{"4":0.0105,"5.0-5.4":0.021,"6.2-6.4":0.03149,"7.2-7.4":0.14697,"8.2":0.01015,"9.2":0.24145,"10.1":0.01002,"11.1-11.2":0.021,"12.0":0.06212,"13.0":0.03149,"14.0":0.10498,"15.0":0.10498,"16.0":0.41992,"17.0":0.60888},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00218,"4.2-4.3":0.00164,"4.4":0,"4.4.3-4.4.4":0.21918},A:{"11":0.16897,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.1404},O:{"0":1.88305},H:{"0":2.86179},L:{"0":73.54829},S:{"2.5":0.00826},R:{_:"0"},M:{"0":0.28907}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NF.js index 14cb7ab2b98f77..6689092dda9991 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NF.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NF.js @@ -1 +1 @@ -module.exports={C:{"95":0.52157,"96":4.16053,"97":7.80549,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 98 99 3.5 3.6"},D:{"81":0.25779,"95":0.13189,"96":1.04313,"97":9.2323,"98":21.588,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 83 84 85 86 87 88 89 90 91 92 93 94 99 100 101"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.25779,"97":0.77935,"98":2.60183,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96"},E:{"4":0,"13":0.25779,"14":0.38968,"15":0.77935,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.4","13.1":2.46994,"14.1":1.04313,"15.1":0.77935,"15.2-15.3":0.64746},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.12026,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0.72155,"14.5-14.8":1.80231,"15.0-15.1":3.12359,"15.2-15.3":9.8518,"15.4":0},P:{"4":0.29325,"5.0-5.4":0.01015,"6.2-6.4":0.04189,"7.2-7.4":0.03361,"8.2":0.11355,"9.2":0.0112,"10.1":0.02048,"11.1-11.2":0.03361,"12.0":0.0112,"13.0":0.05602,"14.0":0.26539,"15.0":0.08963,"16.0":1.20445},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.52157,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.12513},L:{"0":25.03011},S:{"2.5":0}}; +module.exports={C:{"91":1.33726,"100":0.44575,"101":9.37818,"102":0.15051,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 99 103 104 3.5 3.6"},D:{"56":0.15051,"101":1.78301,"102":23.51492,"103":4.31859,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 104 105 106"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.29524,"101":0.44575,"102":7.43887,"103":0.89151,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.2-15.3","13.1":0.29524,"14.1":0.89151,"15.1":0.15051,"15.4":0.89151,"15.5":1.33726,"16.0":0.29524},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.23668,"11.0-11.2":0.23668,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":1.30177,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0.11834,"14.0-14.4":0.47337,"14.5-14.8":2.72188,"15.0-15.1":1.65679,"15.2-15.3":0.47337,"15.4":6.5069,"15.5":5.6785,"16.0":0},P:{"4":0.0105,"5.0-5.4":0.021,"6.2-6.4":0.03149,"7.2-7.4":0.04355,"8.2":0.01015,"9.2":0.02178,"10.1":0.01002,"11.1-11.2":0.02178,"12.0":0.01089,"13.0":0.04355,"14.0":0.19915,"15.0":0.04355,"16.0":0.19915,"17.0":3.09263},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.74678,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.18339},L:{"0":19.41944},S:{"2.5":0},R:{_:"0"},M:{"0":0}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NG.js index 6433a07ab6fa35..e5918a7f19a802 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NG.js @@ -1 +1 @@ -module.exports={C:{"34":0.00252,"43":0.02644,"47":0.01007,"48":0.00126,"52":0.01259,"56":0.00252,"57":0.00252,"58":0.00252,"61":0.00126,"65":0.00504,"68":0.00252,"72":0.01007,"77":0.00504,"78":0.01007,"79":0.00252,"80":0.00252,"81":0.00252,"82":0.00504,"83":0.00126,"84":0.00378,"85":0.00378,"86":0.00378,"87":0.00252,"88":0.00504,"89":0.0063,"90":0.00378,"91":0.01511,"92":0.00755,"93":0.00504,"94":0.01259,"95":0.03022,"96":0.45576,"97":0.73652,"98":0.05917,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 45 46 49 50 51 53 54 55 59 60 62 63 64 66 67 69 70 71 73 74 75 76 99 3.5 3.6"},D:{"38":0.00378,"39":0.00126,"47":0.01385,"49":0.00378,"50":0.00252,"53":0.00252,"55":0.0063,"56":0.00378,"57":0.00252,"58":0.01007,"62":0.00755,"63":0.00378,"64":0.00881,"65":0.00126,"66":0.00126,"68":0.00378,"69":0.05917,"70":0.01007,"71":0.00378,"72":0.00252,"73":0.00252,"74":0.00755,"75":0.00755,"76":0.00881,"77":0.01259,"78":0.00378,"79":0.0214,"80":0.03022,"81":0.01637,"83":0.01385,"84":0.01007,"85":0.00881,"86":0.03525,"87":0.03651,"88":0.01637,"89":0.01889,"90":0.01889,"91":0.08561,"92":0.03148,"93":0.03273,"94":0.03148,"95":0.04281,"96":0.19515,"97":1.86836,"98":3.74301,"99":0.00755,"100":0.0063,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 48 51 52 54 59 60 61 67 101"},F:{"36":0.01133,"65":0.00504,"66":0.00252,"67":0.00378,"79":0.00881,"80":0.02518,"81":0.00126,"82":0.04407,"83":0.26187,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 68 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01385,"13":0.00252,"14":0.00126,"15":0.00378,"16":0.00378,"17":0.00378,"18":0.03022,"84":0.0063,"85":0.00504,"88":0.0063,"89":0.00504,"90":0.00378,"91":0.00252,"92":0.00881,"93":0.00252,"94":0.00378,"95":0.00755,"96":0.02644,"97":0.22536,"98":0.57159,_:"79 80 81 83 86 87"},E:{"4":0,"11":0.00126,"12":0.00378,"13":0.01133,"14":0.03777,"15":0.01133,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 9.1 15.4","5.1":0.01259,"10.1":0.00252,"11.1":0.00378,"12.1":0.00504,"13.1":0.02392,"14.1":0.06925,"15.1":0.03148,"15.2-15.3":0.0491},G:{"8":0.00061,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00122,"6.0-6.1":0,"7.0-7.1":0.00367,"8.1-8.4":0,"9.0-9.2":0.00122,"9.3":0.0165,"10.0-10.2":0.00244,"10.3":0.04521,"11.0-11.2":0.10081,"11.3-11.4":0.03177,"12.0-12.1":0.03727,"12.2-12.5":0.71792,"13.0-13.1":0.07637,"13.2":0.02383,"13.3":0.13564,"13.4-13.7":0.2609,"14.0-14.4":1.17617,"14.5-14.8":1.20916,"15.0-15.1":1.06313,"15.2-15.3":1.20122,"15.4":0.00489},P:{"4":0.29325,"5.0-5.4":0.01015,"6.2-6.4":0.04189,"7.2-7.4":0.03361,"8.2":0.11355,"9.2":0.0112,"10.1":0.02048,"11.1-11.2":0.03361,"12.0":0.0112,"13.0":0.05602,"14.0":0.10083,"15.0":0.08963,"16.0":0.45933},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00082,"4.2-4.3":0.00082,"4.4":0,"4.4.3-4.4.4":0.03333},A:{"8":0.00278,"9":0.00278,"10":0.00139,"11":0.03334,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00874},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.27097},Q:{"10.4":0},O:{"0":1.07514},H:{"0":41.55913},L:{"0":37.70243},S:{"2.5":0.00874}}; +module.exports={C:{"34":0.00371,"39":0.01299,"43":0.0297,"47":0.01114,"50":0.00186,"52":0.01114,"57":0.00557,"58":0.00186,"65":0.00557,"66":0.00557,"68":0.00186,"72":0.00928,"76":0.00186,"78":0.00928,"80":0.00186,"84":0.00186,"85":0.00186,"88":0.00371,"89":0.00557,"90":0.00186,"91":0.01856,"92":0.00371,"93":0.00186,"94":0.00928,"95":0.00557,"96":0.00742,"97":0.00928,"98":0.01114,"99":0.07238,"100":0.18374,"101":1.15072,"102":0.09094,"103":0.00186,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 40 41 42 44 45 46 48 49 51 53 54 55 56 59 60 61 62 63 64 67 69 70 71 73 74 75 77 79 81 82 83 86 87 104 3.5 3.6"},D:{"25":0.00186,"38":0.00186,"45":0.00186,"47":0.02413,"49":0.00371,"53":0.00371,"55":0.01485,"56":0.00557,"58":0.01485,"60":0.00557,"61":0.00371,"62":0.00928,"63":0.00371,"64":0.01299,"65":0.00371,"68":0.00557,"69":0.0631,"70":0.01299,"71":0.00186,"72":0.00371,"73":0.00371,"74":0.01299,"75":0.00928,"76":0.01114,"77":0.02413,"78":0.00371,"79":0.03712,"80":0.04269,"81":0.02598,"83":0.01485,"84":0.01114,"85":0.09094,"86":0.39718,"87":0.03898,"88":0.02042,"89":0.02042,"90":0.02227,"91":0.02784,"92":0.02042,"93":0.0297,"94":0.03341,"95":0.02598,"96":0.04826,"97":0.05197,"98":0.08538,"99":0.11136,"100":0.17075,"101":0.71085,"102":6.43475,"103":0.56422,"104":0.00928,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 46 48 50 51 52 54 57 59 66 67 105 106"},F:{"36":0.01114,"64":0.00371,"66":0.01114,"68":0.00186,"69":0.00371,"70":0.00371,"79":0.01299,"80":0.00186,"82":0.01485,"84":0.00557,"85":0.02413,"86":0.07053,"87":0.2617,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 67 71 72 73 74 75 76 77 78 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01485,"13":0.00186,"14":0.00371,"15":0.00371,"16":0.00371,"17":0.00371,"18":0.04083,"84":0.00928,"85":0.00557,"88":0.00371,"89":0.00742,"90":0.00371,"91":0.00186,"92":0.0167,"95":0.00186,"96":0.00557,"97":0.00928,"98":0.00742,"99":0.02042,"100":0.02042,"101":0.17632,"102":0.71456,"103":0.12621,_:"79 80 81 83 86 87 93 94"},E:{"4":0,"12":0.00371,"13":0.01114,"14":0.05754,"15":0.00742,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 16.0","5.1":0.0167,"10.1":0.00186,"11.1":0.00186,"12.1":0.00557,"13.1":0.0297,"14.1":0.07238,"15.1":0.01485,"15.2-15.3":0.01856,"15.4":0.03898,"15.5":0.0928},G:{"8":0.0026,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00866,"5.0-5.1":0.00173,"6.0-6.1":0,"7.0-7.1":0.00347,"8.1-8.4":0,"9.0-9.2":0.00087,"9.3":0.03205,"10.0-10.2":0.0026,"10.3":0.04678,"11.0-11.2":0.04505,"11.3-11.4":0.01126,"12.0-12.1":0.03552,"12.2-12.5":0.80221,"13.0-13.1":0.06324,"13.2":0.01906,"13.3":0.12648,"13.4-13.7":0.24863,"14.0-14.4":1.15999,"14.5-14.8":1.19118,"15.0-15.1":0.8975,"15.2-15.3":1.01705,"15.4":1.30727,"15.5":1.61481,"16.0":0.01906},P:{"4":0.0105,"5.0-5.4":0.021,"6.2-6.4":0.03149,"7.2-7.4":0.04355,"8.2":0.01015,"9.2":0.02178,"10.1":0.01002,"11.1-11.2":0.02178,"12.0":0.01089,"13.0":0.04355,"14.0":0.05444,"15.0":0.04355,"16.0":0.23954,"17.0":0.52263},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00062,"4.2-4.3":0.00155,"4.4":0,"4.4.3-4.4.4":0.0304},A:{"8":0.00198,"10":0.00198,"11":0.02574,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.00814},Q:{"10.4":0},O:{"0":1.27046},H:{"0":26.4229},L:{"0":46.89482},S:{"2.5":0.01629},R:{_:"0"},M:{"0":0.34205}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NI.js index 07f2d0ef087fbf..5f1817538bcf46 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NI.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NI.js @@ -1 +1 @@ -module.exports={C:{"52":0.03156,"69":0.00395,"72":0.00395,"78":0.00395,"84":0.00395,"85":0.01184,"87":0.00395,"88":0.0434,"89":0.02367,"90":0.01973,"91":0.03156,"92":0.03156,"93":0.00789,"94":0.01973,"95":0.25643,"96":1.72002,"97":2.1303,"98":0.00789,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 73 74 75 76 77 79 80 81 82 83 86 99 3.5 3.6"},D:{"38":0.01184,"42":0.00789,"49":0.02762,"56":0.00395,"58":0.01184,"63":0.00789,"65":0.00395,"66":0.00789,"69":0.00789,"70":0.01184,"71":0.00395,"72":0.01184,"73":0.00395,"74":0.01973,"75":0.05129,"76":0.02367,"77":0.00395,"78":0.00789,"79":0.10257,"80":0.03156,"81":0.02367,"83":0.01578,"84":0.01184,"85":0.01184,"86":0.01973,"87":0.0434,"88":0.03551,"89":0.20909,"90":0.05129,"91":0.05918,"92":0.04734,"93":0.03156,"94":0.05918,"95":0.06707,"96":0.40239,"97":7.74009,"98":17.98131,"99":0.01578,"100":0.00789,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 43 44 45 46 47 48 50 51 52 53 54 55 57 59 60 61 62 64 67 68 101"},F:{"36":0.00395,"79":0.00789,"82":0.27615,"83":0.89157,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00395,"18":0.02762,"84":0.00789,"85":0.00395,"89":0.01184,"90":0.01578,"92":0.01973,"94":0.00395,"95":0.01578,"96":0.03551,"97":0.48524,"98":1.64507,_:"13 14 15 16 17 79 80 81 83 86 87 88 91 93"},E:{"4":0,"12":0.01184,"13":0.03551,"14":0.05918,"15":0.03945,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.4","5.1":0.0434,"12.1":0.01184,"13.1":0.09074,"14.1":0.14597,"15.1":0.08285,"15.2-15.3":0.10652},G:{"8":0,"3.2":0,"4.0-4.1":0.0017,"4.2-4.3":0,"5.0-5.1":0.00284,"6.0-6.1":0,"7.0-7.1":0.02497,"8.1-8.4":0,"9.0-9.2":0.00114,"9.3":0.0874,"10.0-10.2":0.0017,"10.3":0.02327,"11.0-11.2":0.01873,"11.3-11.4":0.00738,"12.0-12.1":0.00624,"12.2-12.5":0.3723,"13.0-13.1":0.00908,"13.2":0.00568,"13.3":0.06243,"13.4-13.7":0.07605,"14.0-14.4":0.34619,"14.5-14.8":0.97841,"15.0-15.1":0.85526,"15.2-15.3":2.76384,"15.4":0.02894},P:{"4":0.27753,"5.0-5.4":0.01015,"6.2-6.4":0.02056,"7.2-7.4":0.32893,"8.2":0.11355,"9.2":0.07195,"10.1":0.02048,"11.1-11.2":0.27753,"12.0":0.06167,"13.0":0.16446,"14.0":0.25698,"15.0":0.2467,"16.0":2.16888},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00202,"4.2-4.3":0.01514,"4.4":0,"4.4.3-4.4.4":0.09183},A:{"11":0.08679,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.12716},Q:{"10.4":0},O:{"0":0.13927},H:{"0":0.33248},L:{"0":49.83656},S:{"2.5":0}}; +module.exports={C:{"52":0.02536,"78":0.00845,"84":0.01691,"87":0.00423,"88":0.13526,"89":0.01268,"90":0.00845,"91":0.02536,"93":0.00423,"94":0.00845,"95":0.00845,"96":0.00845,"97":0.01268,"98":0.02959,"99":0.02959,"100":0.13526,"101":1.53017,"102":0.08877,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 92 103 104 3.5 3.6"},D:{"38":0.00845,"49":0.02536,"63":0.00845,"65":0.00423,"68":0.00423,"69":0.00845,"70":0.00845,"72":0.00423,"73":0.01268,"74":0.01268,"75":0.02114,"76":0.02114,"78":0.00845,"79":0.06763,"80":0.02536,"81":0.02536,"83":0.02536,"84":0.01268,"85":0.00845,"86":0.02959,"87":0.03382,"88":0.01691,"89":0.02114,"90":0.02536,"91":0.30434,"92":0.03804,"93":0.02959,"94":0.0465,"95":0.02114,"96":0.10145,"97":0.08454,"98":0.11836,"99":0.13949,"100":0.28744,"101":1.16243,"102":26.08904,"103":2.08391,"104":0.02114,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 66 67 71 77 105 106"},F:{"84":0.00845,"85":0.00845,"86":0.43961,"87":0.78622,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00423,"13":0.02114,"16":0.00423,"17":0.00423,"18":0.02114,"84":0.01691,"85":0.00423,"89":0.00845,"92":0.02536,"96":0.00845,"97":0.00845,"98":0.00845,"99":0.01691,"100":0.02114,"101":0.27898,"102":2.31217,"103":0.44806,_:"14 15 79 80 81 83 86 87 88 90 91 93 94 95"},E:{"4":0,"14":0.05072,"15":0.00845,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01268,"12.1":0.00845,"13.1":0.07186,"14.1":0.13949,"15.1":0.02959,"15.2-15.3":0.01691,"15.4":0.09299,"15.5":0.41847},G:{"8":0,"3.2":0.00057,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00113,"6.0-6.1":0.00057,"7.0-7.1":0.02716,"8.1-8.4":0,"9.0-9.2":0.00057,"9.3":0.0447,"10.0-10.2":0.00226,"10.3":0.01867,"11.0-11.2":0.00962,"11.3-11.4":0.00622,"12.0-12.1":0.00792,"12.2-12.5":0.29534,"13.0-13.1":0.00736,"13.2":0.00396,"13.3":0.05884,"13.4-13.7":0.07638,"14.0-14.4":0.17256,"14.5-14.8":0.42263,"15.0-15.1":0.172,"15.2-15.3":0.32136,"15.4":0.93693,"15.5":3.03878,"16.0":0.01471},P:{"4":0.20705,"5.0-5.4":0.03046,"6.2-6.4":0.02071,"7.2-7.4":0.42446,"8.2":0.01015,"9.2":0.04141,"10.1":0.01002,"11.1-11.2":0.18635,"12.0":0.06212,"13.0":0.12423,"14.0":0.18635,"15.0":0.09317,"16.0":0.46587,"17.0":1.89454},I:{"0":0,"3":0,"4":0.00101,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00403,"4.2-4.3":0.00906,"4.4":0,"4.4.3-4.4.4":0.0725},A:{"11":0.06341,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.1501},H:{"0":0.42084},L:{"0":50.60907},S:{"2.5":0},R:{_:"0"},M:{"0":0.13278}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NL.js index 2e013cc011c00f..f809f2f46153aa 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NL.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NL.js @@ -1 +1 @@ -module.exports={C:{"11":0.01047,"52":0.02617,"55":0.00523,"56":0.0157,"60":0.01047,"66":0.01047,"74":0.01047,"78":0.05756,"80":0.00523,"81":0.0157,"83":0.00523,"84":0.0157,"87":0.00523,"88":0.02093,"89":0.00523,"90":0.00523,"91":0.07326,"92":0.00523,"93":0.00523,"94":0.05233,"95":0.09419,"96":1.18266,"97":1.89958,"98":0.01047,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 57 58 59 61 62 63 64 65 67 68 69 70 71 72 73 75 76 77 79 82 85 86 99 3.5 3.6"},D:{"15":0.04186,"47":0.05233,"48":0.01047,"49":0.03663,"52":0.0628,"53":0.01047,"63":0.00523,"64":0.08896,"65":0.00523,"66":0.0157,"67":0.01047,"69":0.07326,"70":0.11513,"72":0.10466,"73":0.01047,"74":0.01047,"75":0.01047,"76":0.02093,"77":0.0157,"78":0.0157,"79":0.22502,"80":0.11513,"81":0.02093,"83":0.0471,"84":0.07326,"85":0.0785,"86":0.06803,"87":0.14129,"88":0.0314,"89":0.04186,"90":0.04186,"91":0.0785,"92":0.22502,"93":0.81112,"94":0.20932,"95":0.18839,"96":0.68029,"97":10.11539,"98":18.36783,"99":0.01047,"100":0.01047,_:"4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 50 51 54 55 56 57 58 59 60 61 62 68 71 101"},F:{"67":0.01047,"80":0.00523,"82":0.17269,"83":0.64889,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00523,"18":0.02617,"89":0.00523,"90":0.00523,"91":0.00523,"92":0.0157,"93":0.00523,"94":0.0157,"95":0.0314,"96":0.0785,"97":1.51757,"98":5.10218,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88"},E:{"4":0,"12":0.00523,"13":0.0628,"14":0.38201,"15":0.24595,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.00523,"10.1":0.00523,"11.1":0.03663,"12.1":0.06803,"13.1":0.41864,"14.1":1.46001,"15.1":0.79018,"15.2-15.3":1.78445,"15.4":0.0157},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.0018,"7.0-7.1":0.00361,"8.1-8.4":0.00541,"9.0-9.2":0.06133,"9.3":0.07575,"10.0-10.2":0,"10.3":0.10642,"11.0-11.2":0.01263,"11.3-11.4":0.03247,"12.0-12.1":0.01263,"12.2-12.5":0.62768,"13.0-13.1":0.02345,"13.2":0.00902,"13.3":0.05772,"13.4-13.7":0.1966,"14.0-14.4":0.70704,"14.5-14.8":3.30795,"15.0-15.1":2.57746,"15.2-15.3":10.16195,"15.4":0.0469},P:{"4":0.11614,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.01056,"12.0":0.02112,"13.0":0.07391,"14.0":0.07391,"15.0":0.08447,"16.0":4.44511},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00468,"4.2-4.3":0.00562,"4.4":0,"4.4.3-4.4.4":0.04215},A:{"8":0.02528,"9":0.05898,"10":0.00843,"11":0.40445,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.40528},Q:{"10.4":0.00477},O:{"0":0.43389},H:{"0":0.30244},L:{"0":23.61706},S:{"2.5":0}}; +module.exports={C:{"52":0.01952,"55":0.00976,"56":0.01464,"60":0.00976,"74":0.00488,"78":0.05368,"80":0.00488,"81":0.02928,"82":0.00976,"83":0.00488,"84":0.00488,"88":0.00976,"91":0.07808,"94":0.03904,"95":0.00976,"96":0.00976,"97":0.00976,"98":0.01952,"99":0.03416,"100":0.38552,"101":2.67424,"102":0.0488,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 79 85 86 87 89 90 92 93 103 104 3.5 3.6"},D:{"41":0.00488,"47":0.07808,"49":0.0244,"52":0.03416,"53":0.00976,"56":0.00488,"60":0.00976,"65":0.00976,"66":0.01952,"67":0.01464,"69":0.10736,"70":0.03416,"71":0.05856,"72":0.03416,"73":0.00488,"74":0.00976,"75":0.00488,"76":0.10248,"77":0.01464,"78":0.01464,"79":0.1464,"80":0.06344,"81":0.00976,"83":0.02928,"84":0.06344,"85":0.10248,"86":0.0732,"87":0.10248,"88":0.01464,"89":0.03416,"90":0.0244,"91":0.03416,"92":0.03416,"93":0.07808,"94":0.02928,"95":0.01952,"96":0.12688,"97":0.12688,"98":0.15616,"99":0.2684,"100":0.5124,"101":2.64008,"102":22.7408,"103":1.49328,"104":0.00976,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 48 50 51 54 55 57 58 59 61 62 63 64 68 105 106"},F:{"85":0.20984,"86":0.24888,"87":0.3904,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01952,"84":0.00488,"85":0.00488,"92":0.00976,"95":0.00488,"96":0.00976,"97":0.01952,"98":0.01952,"99":0.03416,"100":0.05368,"101":0.83448,"102":5.13376,"103":0.89792,_:"12 13 14 15 16 17 79 80 81 83 86 87 88 89 90 91 93 94"},E:{"4":0,"13":0.03416,"14":0.22936,"15":0.08296,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.0244,"12.1":0.06344,"13.1":0.32208,"14.1":0.72224,"15.1":0.1708,"15.2-15.3":0.15128,"15.4":0.97112,"15.5":3.00608},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00375,"8.1-8.4":0.00937,"9.0-9.2":0.03375,"9.3":0.07687,"10.0-10.2":0,"10.3":0.0975,"11.0-11.2":0.01875,"11.3-11.4":0.03187,"12.0-12.1":0.01125,"12.2-12.5":0.74812,"13.0-13.1":0.015,"13.2":0.01125,"13.3":0.0375,"13.4-13.7":0.135,"14.0-14.4":0.4275,"14.5-14.8":1.41749,"15.0-15.1":0.3825,"15.2-15.3":0.81749,"15.4":2.48435,"15.5":11.91176,"16.0":0.03375},P:{"4":0.12585,"5.0-5.4":0.03046,"6.2-6.4":0.0206,"7.2-7.4":0.04522,"8.2":0.01015,"9.2":0.07017,"10.1":0.01002,"11.1-11.2":0.01049,"12.0":0.01049,"13.0":0.04195,"14.0":0.05244,"15.0":0.03146,"16.0":0.19926,"17.0":4.47814},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0041,"4.2-4.3":0.00512,"4.4":0,"4.4.3-4.4.4":0.03686},A:{"8":0.01416,"9":0.05665,"11":0.29031,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.39416},H:{"0":0.36348},L:{"0":26.35881},S:{"2.5":0},R:{_:"0"},M:{"0":0.45559}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NO.js index f9b07324e39f07..3eb16532d5ba96 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NO.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NO.js @@ -1 +1 @@ -module.exports={C:{"52":0.01269,"59":0.01903,"78":0.0444,"88":0.00634,"91":0.06977,"94":0.00634,"95":0.03172,"96":3.05098,"97":2.96218,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 98 99 3.5 3.6"},D:{"38":0.00634,"49":0.03172,"64":0.02537,"65":0.00634,"66":0.08246,"67":0.01269,"69":0.12686,"70":0.02537,"72":0.02537,"75":0.02537,"76":0.19029,"77":0.00634,"78":0.01269,"79":0.08246,"80":0.05709,"81":0.01269,"83":0.01269,"84":0.03172,"85":2.76555,"86":0.03172,"87":0.12686,"88":0.03172,"89":0.03172,"90":0.07612,"91":0.08246,"92":0.06343,"93":0.08246,"94":0.13955,"95":0.90705,"96":1.00854,"97":11.97558,"98":20.08828,"99":0.00634,"100":0.01903,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 68 71 73 74 101"},F:{"82":0.37424,"83":0.93876,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.01269,"18":0.01269,"84":0.01903,"85":0.05074,"86":0.00634,"87":0.00634,"89":0.01269,"91":0.00634,"92":0.01269,"94":0.01903,"95":0.02537,"96":0.06343,"97":1.60478,"98":5.02366,_:"12 13 14 15 16 79 80 81 83 88 90 93"},E:{"4":0,"12":0.00634,"13":0.12052,"14":0.50744,"15":0.35521,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.00634,"10.1":0.00634,"11.1":0.03172,"12.1":0.07612,"13.1":0.41864,"14.1":2.51183,"15.1":1.39546,"15.2-15.3":2.13125,"15.4":0.00634},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00215,"9.0-9.2":0.00215,"9.3":0.04522,"10.0-10.2":0.00215,"10.3":0.09043,"11.0-11.2":0.01723,"11.3-11.4":0.05383,"12.0-12.1":0.01507,"12.2-12.5":0.4134,"13.0-13.1":0.02584,"13.2":0.00646,"13.3":0.05813,"13.4-13.7":0.14211,"14.0-14.4":0.74498,"14.5-14.8":4.31273,"15.0-15.1":3.32229,"15.2-15.3":12.21259,"15.4":0.04737},P:{"4":0.0423,"5.0-5.4":0.01015,"6.2-6.4":0.04189,"7.2-7.4":0.15152,"8.2":0.11355,"9.2":0.0112,"10.1":0.02048,"11.1-11.2":0.02115,"12.0":0.0112,"13.0":0.02115,"14.0":0.03172,"15.0":0.03172,"16.0":2.38991},I:{"0":0,"3":0,"4":0.0026,"2.1":0,"2.2":0.00195,"2.3":0.00195,"4.1":0.0026,"4.2-4.3":0.0065,"4.4":0,"4.4.3-4.4.4":0.01365},A:{"8":0.04229,"9":0.00705,"10":0.0141,"11":0.25372,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.20479},Q:{"10.4":0},O:{"0":0.01829},H:{"0":0.14541},L:{"0":12.12816},S:{"2.5":0}}; +module.exports={C:{"52":0.01361,"59":0.02042,"78":0.02723,"81":0.00681,"91":0.03404,"96":0.00681,"99":0.01361,"100":1.60645,"101":34.66805,"102":0.04084,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 82 83 84 85 86 87 88 89 90 92 93 94 95 97 98 103 104 3.5 3.6"},D:{"49":0.02042,"66":0.08849,"67":0.00681,"69":0.0953,"70":0.00681,"78":0.01361,"79":0.05446,"80":0.02042,"83":0.02723,"84":0.04084,"85":3.56006,"86":0.05446,"87":0.06807,"88":0.00681,"89":0.02723,"90":0.01361,"91":0.02042,"92":0.02042,"93":0.01361,"94":0.01361,"95":0.01361,"96":0.07488,"97":0.05446,"98":0.08849,"99":0.10891,"100":0.32674,"101":1.8515,"102":12.64741,"103":1.00744,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 68 71 72 73 74 75 76 77 81 104 105 106"},F:{"85":0.02042,"86":0.46288,"87":0.64667,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.01361,"86":0.00681,"97":0.01361,"98":0.00681,"99":0.01361,"100":0.02723,"101":0.60582,"102":2.94743,"103":0.57179,_:"12 13 14 15 16 18 79 80 81 83 84 85 87 88 89 90 91 92 93 94 95 96"},E:{"4":0,"13":0.02723,"14":0.18379,"15":0.05446,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 7.1 9.1 16.0","6.1":0.01361,"10.1":0.00681,"11.1":0.03404,"12.1":0.04084,"13.1":0.1974,"14.1":0.69431,"15.1":0.12933,"15.2-15.3":0.12933,"15.4":1.00744,"15.5":2.19866},G:{"8":0.00172,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.00344,"9.3":0.03442,"10.0-10.2":0.00344,"10.3":0.08088,"11.0-11.2":0.03098,"11.3-11.4":0.05335,"12.0-12.1":0.01033,"12.2-12.5":0.30804,"13.0-13.1":0.00688,"13.2":0.00344,"13.3":0.02581,"13.4-13.7":0.07744,"14.0-14.4":0.35795,"14.5-14.8":1.28896,"15.0-15.1":0.35795,"15.2-15.3":0.83292,"15.4":2.68978,"15.5":10.96391,"16.0":0.02753},P:{"4":0.01076,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 12.0 13.0","11.1-11.2":0.02153,"14.0":0.02153,"15.0":0.01076,"16.0":0.07535,"17.0":2.32506},I:{"0":0,"3":0,"4":0.00274,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00137,"4.2-4.3":0.00342,"4.4":0,"4.4.3-4.4.4":0.01163},A:{"11":0.14295,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01597},H:{"0":0.15719},L:{"0":12.03554},S:{"2.5":0},R:{_:"0"},M:{"0":0.18839}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NP.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NP.js index 5dffd891a4c01c..9e1c9b9ec91d0f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NP.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NP.js @@ -1 +1 @@ -module.exports={C:{"28":0.00216,"47":0.00216,"48":0.00216,"52":0.00864,"66":0.00432,"71":0.0389,"72":0.01297,"73":0.01081,"74":0.01081,"75":0.01945,"76":0.05619,"78":0.04106,"87":0.50135,"88":0.00432,"89":0.00648,"90":0.00216,"91":0.01513,"92":0.00216,"94":0.00432,"95":0.03025,"96":0.35224,"97":0.65911,"98":0.04754,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 77 79 80 81 82 83 84 85 86 93 99 3.5 3.6"},D:{"38":0.00432,"49":0.00648,"53":0.00216,"63":0.00648,"64":0.00432,"65":0.00864,"67":0.00432,"68":0.00216,"69":0.00432,"70":0.00432,"71":0.00216,"72":0.00216,"73":0.00216,"74":0.00432,"75":0.00432,"76":0.01729,"78":0.00432,"79":0.02161,"80":0.00648,"81":0.00648,"83":0.01297,"84":0.03242,"85":0.00648,"86":0.01513,"87":0.02593,"88":0.02161,"89":0.97461,"90":0.01297,"91":0.01729,"92":0.02377,"93":0.02377,"94":0.01513,"95":0.04106,"96":0.22474,"97":4.20963,"98":10.50678,"99":0.05835,"100":0.01945,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 66 77 101"},F:{"63":0.01081,"75":0.03242,"82":0.05619,"83":0.38682,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 65 66 67 68 69 70 71 72 73 74 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00216,"16":0.00216,"17":0.00216,"18":0.00864,"81":0.01513,"89":0.31983,"92":0.00432,"93":0.00432,"95":0.00432,"96":0.01513,"97":0.255,"98":0.83631,_:"13 14 15 79 80 83 84 85 86 87 88 90 91 94"},E:{"4":0,"8":0.00432,"9":0.00216,"13":0.00432,"14":0.05403,"15":0.01513,_:"0 5 6 7 10 11 12 3.1 3.2 5.1 6.1 7.1 15.4","9.1":0.00432,"10.1":0.00216,"11.1":0.00432,"12.1":0.00864,"13.1":0.02161,"14.1":0.09508,"15.1":0.04106,"15.2-15.3":0.0886},G:{"8":0.0023,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00092,"6.0-6.1":0.00046,"7.0-7.1":0.00965,"8.1-8.4":0.00184,"9.0-9.2":0.00322,"9.3":0.02574,"10.0-10.2":0.0023,"10.3":0.04045,"11.0-11.2":0.27395,"11.3-11.4":0.01241,"12.0-12.1":0.02298,"12.2-12.5":0.42149,"13.0-13.1":0.05378,"13.2":0.0046,"13.3":0.0239,"13.4-13.7":0.0717,"14.0-14.4":0.62511,"14.5-14.8":0.75243,"15.0-15.1":0.48814,"15.2-15.3":1.74618,"15.4":0.01011},P:{"4":0.14128,"5.0-5.4":0.01015,"6.2-6.4":0.02048,"7.2-7.4":0.05434,"8.2":0.11355,"9.2":0.08258,"10.1":0.02048,"11.1-11.2":0.02174,"12.0":0.02174,"13.0":0.05434,"14.0":0.04347,"15.0":0.04347,"16.0":0.57599},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0016,"4.2-4.3":0.00561,"4.4":0,"4.4.3-4.4.4":0.06334},A:{"6":0.00216,"11":0.01081,_:"7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.65848},Q:{"10.4":0},O:{"0":1.07394},H:{"0":0.86831},L:{"0":69.56896},S:{"2.5":0}}; +module.exports={C:{"36":0.00185,"52":0.0074,"71":0.1406,"72":0.037,"73":0.0444,"74":0.03885,"75":0.06845,"76":0.1776,"78":0.00925,"87":0.5254,"89":0.0037,"91":0.0222,"97":0.00555,"98":0.00555,"99":0.02035,"100":0.0851,"101":0.76775,"102":0.0814,"103":0.00185,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 77 79 80 81 82 83 84 85 86 88 90 92 93 94 95 96 104 3.5 3.6"},D:{"49":0.00555,"63":0.00185,"64":0.00185,"65":0.00925,"69":0.0037,"70":0.0074,"71":0.00185,"72":0.0037,"74":0.00555,"75":0.0037,"76":0.03885,"79":0.02035,"80":0.0037,"81":0.0037,"83":0.00555,"84":0.0037,"85":0.0037,"86":0.00925,"87":0.02035,"88":0.01665,"89":0.92685,"90":0.0074,"91":0.00925,"92":0.0111,"93":0.00925,"94":0.00555,"95":0.00555,"96":0.0222,"97":0.02775,"98":0.0259,"99":0.0296,"100":0.1221,"101":0.45695,"102":10.86135,"103":1.0286,"104":0.0222,"105":0.00185,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 66 67 68 73 77 78 106"},F:{"73":0.0037,"85":0.0148,"86":0.05365,"87":0.29415,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.00185,"18":0.00555,"89":0.2923,"92":0.0037,"98":0.00185,"99":0.00555,"100":0.0037,"101":0.07585,"102":0.6364,"103":0.13875,_:"12 13 14 15 17 79 80 81 83 84 85 86 87 88 90 91 93 94 95 96 97"},E:{"4":0,"13":0.0037,"14":0.01295,"15":0.00555,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.00185,"11.1":0.0037,"12.1":0.0074,"13.1":0.01665,"14.1":0.04625,"15.1":0.00925,"15.2-15.3":0.0111,"15.4":0.04255,"15.5":0.13875},G:{"8":0.0048,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00373,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01599,"10.0-10.2":0.00107,"10.3":0.03572,"11.0-11.2":0.33159,"11.3-11.4":0.01279,"12.0-12.1":0.04851,"12.2-12.5":0.4638,"13.0-13.1":0.16686,"13.2":0.0096,"13.3":0.02079,"13.4-13.7":0.04851,"14.0-14.4":0.78952,"14.5-14.8":0.37424,"15.0-15.1":0.07197,"15.2-15.3":0.18072,"15.4":0.59921,"15.5":2.13667,"16.0":0.00586},P:{"4":0.07913,"5.0-5.4":0.03046,"6.2-6.4":0.0206,"7.2-7.4":0.04522,"8.2":0.01015,"9.2":0.07017,"10.1":0.01002,"11.1-11.2":0.0113,"12.0":0.03007,"13.0":0.02261,"14.0":0.0113,"15.0":0.02261,"16.0":0.06783,"17.0":0.44089},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00158,"4.2-4.3":0.00317,"4.4":0,"4.4.3-4.4.4":0.0523},A:{"6":0.01295,"11":0.0074,_:"7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.6357},H:{"0":0.64814},L:{"0":73.2025},S:{"2.5":0},R:{_:"0"},M:{"0":0.652}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NR.js index f8c464a69db505..9b85e8ca24e293 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NR.js @@ -1 +1 @@ -module.exports={C:{"96":0.2029,"97":0.03689,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 98 99 3.5 3.6"},D:{"11":0.02372,"75":0.03689,"79":0.01318,"86":0.01318,"89":0.01318,"96":0.888,"97":2.9512,"98":9.57559,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 78 80 81 83 84 85 87 88 90 91 92 93 94 95 99 100 101"},F:{"83":0.06061,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.02372,"84":0.03689,"94":0.02372,"96":0.03689,"97":0.25296,"98":1.09089,_:"12 13 15 16 17 18 79 80 81 83 85 86 87 88 89 90 91 92 93 95"},E:{"4":0,"11":0.08432,"13":0.03689,"14":6.93532,_:"0 5 6 7 8 9 10 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1 13.1 15.1 15.2-15.3 15.4","11.1":0.06061,"14.1":1.14096},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0.01067,"12.0-12.1":0,"12.2-12.5":0.01067,"13.0-13.1":0.03155,"13.2":0.02088,"13.3":0,"13.4-13.7":0.36702,"14.0-14.4":0.18931,"14.5-14.8":1.91073,"15.0-15.1":1.12287,"15.2-15.3":0.97625,"15.4":0},P:{"4":0.02031,"5.0-5.4":0.01015,"6.2-6.4":0.02048,"7.2-7.4":0.02031,"8.2":0.11355,"9.2":0.08258,"10.1":0.02048,"11.1-11.2":0.21618,"12.0":0.02059,"13.0":0.11169,"14.0":0.12184,"15.0":0.01015,"16.0":0.75137},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.16864,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.01473},Q:{"10.4":0},O:{"0":0.86171},H:{"0":6.83325},L:{"0":62.07733},S:{"2.5":0}}; +module.exports={C:{"99":0.02718,"101":0.05436,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 100 102 103 104 3.5 3.6"},D:{"79":0.01359,"90":0.02718,"94":0.04077,"98":0.06795,"99":0.02718,"100":0.01359,"101":0.62288,"102":9.62399,"103":0.89468,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 85 86 87 88 89 91 92 93 95 96 97 104 105 106"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.04077,"85":0.06795,"99":0.01359,"100":0.08154,"101":0.47339,"102":1.23443,"103":0.14949,_:"12 13 15 16 17 18 79 80 81 83 84 86 87 88 89 90 91 92 93 94 95 96 97 98"},E:{"4":0,"14":5.01471,_:"0 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 15.2-15.3 16.0","14.1":0.01359,"15.1":0.01359,"15.4":0.05436,"15.5":0.12231},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.0126,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0.02573,"12.2-12.5":0.06407,"13.0-13.1":0,"13.2":0,"13.3":0.03834,"13.4-13.7":0.02521,"14.0-14.4":0.40909,"14.5-14.8":2.00609,"15.0-15.1":1.09915,"15.2-15.3":0.49837,"15.4":0.4217,"15.5":0.65172,"16.0":0},P:{"4":0.1203,"5.0-5.4":0.03046,"6.2-6.4":0.0206,"7.2-7.4":0.81039,"8.2":0.01015,"9.2":0.07017,"10.1":0.01002,"11.1-11.2":0.09232,"12.0":0.03007,"13.0":0.14035,"14.0":0.36089,"15.0":0.0401,"16.0":0.60149,"17.0":4.18033},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"10":0.14389,"11":0.10073,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.56247},H:{"0":2.66557},L:{"0":65.48105},S:{"2.5":0},R:{_:"0"},M:{"0":0}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NU.js index 55b5be90242546..ab8e1f58128984 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NU.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NU.js @@ -1 +1 @@ -module.exports={C:{_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 3.5 3.6"},D:{"81":4.4448,"98":31.1136,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 99 100 101"},F:{"83":2.2224,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"98":2.2224,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97"},E:{"4":0,"14":4.4448,_:"0 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4"},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":6.66511,"13.0-13.1":0,"13.2":2.22222,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":2.22222,"15.0-15.1":0,"15.2-15.3":2.22222,"15.4":2.22222},P:{"4":0.29325,"5.0-5.4":0.01015,"6.2-6.4":0.04189,"7.2-7.4":0.03361,"8.2":0.11355,"9.2":0.0112,"10.1":0.02048,"11.1-11.2":0.03361,"12.0":0.0112,"13.0":0.05602,"14.0":0.10083,"15.0":0.08963,"16.0":0.45933},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":6.6672,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":28.886},S:{"2.5":0}}; +module.exports={C:{_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 3.5 3.6"},D:{"97":0.64509,"102":16.1293,"103":3.22544,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 98 99 100 101 104 105 106"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4 16.0","15.5":0.64509},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":0,"15.2-15.3":0,"15.4":15.48335,"15.5":34.19053,"16.0":0},P:{"4":0.0105,"5.0-5.4":0.021,"6.2-6.4":0.03149,"7.2-7.4":0.04355,"8.2":0.01015,"9.2":0.02178,"10.1":0.01002,"11.1-11.2":0.02178,"12.0":0.01089,"13.0":0.04355,"14.0":0.05444,"15.0":0.04355,"16.0":0.23954,"17.0":0.52263},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":29.03612},S:{"2.5":0},R:{_:"0"},M:{"0":0}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NZ.js index 585806a3169df9..35fd3debf13fb9 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NZ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NZ.js @@ -1 +1 @@ -module.exports={C:{"11":0.01228,"34":0.01228,"52":0.02456,"54":0.00614,"59":0.02456,"78":0.08597,"88":0.01228,"89":0.01228,"90":0.00614,"91":0.07369,"92":0.00614,"93":0.01842,"94":0.16581,"95":0.03685,"96":1.02555,"97":1.6028,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 55 56 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 98 99 3.5 3.6"},D:{"34":0.03071,"38":0.15353,"49":0.07369,"53":0.04299,"59":0.01842,"61":0.03071,"65":0.01842,"66":0.05527,"67":0.01228,"68":0.01228,"69":0.00614,"70":0.01842,"71":0.00614,"72":0.01842,"73":0.01228,"74":0.01842,"75":0.01228,"76":0.03685,"77":0.01842,"78":0.01228,"79":0.39917,"80":0.01842,"81":0.01842,"83":0.01842,"84":0.02456,"85":0.01228,"86":0.01842,"87":0.15353,"88":0.01842,"89":0.04913,"90":0.17809,"91":0.08597,"92":0.15353,"93":0.62024,"94":0.27635,"95":0.23336,"96":1.19135,"97":11.95039,"98":26.92829,"99":0.04299,"100":0.01842,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 60 62 63 64 101"},F:{"28":0.00614,"36":0.00614,"40":0.00614,"46":0.09212,"82":0.11668,"83":0.39917,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00614,"18":0.01842,"84":0.00614,"85":0.00614,"90":0.01228,"92":0.00614,"95":0.07369,"96":0.04913,"97":1.23434,"98":4.43994,_:"12 13 14 15 16 79 80 81 83 86 87 88 89 91 93 94"},E:{"4":0,"12":0.01228,"13":0.07369,"14":0.41759,"15":0.3439,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02456,"11.1":0.05527,"12.1":0.12282,"13.1":0.55883,"14.1":1.78703,"15.1":0.97028,"15.2-15.3":1.78703,"15.4":0.01228},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00313,"6.0-6.1":0.01254,"7.0-7.1":0.00627,"8.1-8.4":0.02351,"9.0-9.2":0.01724,"9.3":0.17551,"10.0-10.2":0.00784,"10.3":0.20215,"11.0-11.2":0.10343,"11.3-11.4":0.08149,"12.0-12.1":0.03134,"12.2-12.5":0.84622,"13.0-13.1":0.01567,"13.2":0.0047,"13.3":0.06895,"13.4-13.7":0.19902,"14.0-14.4":0.46699,"14.5-14.8":2.80818,"15.0-15.1":2.08107,"15.2-15.3":8.46843,"15.4":0.04388},P:{"4":0.72232,"5.0-5.4":0.01015,"6.2-6.4":0.02048,"7.2-7.4":0.99755,"8.2":0.11355,"9.2":0.02078,"10.1":0.02048,"11.1-11.2":0.03283,"12.0":0.01094,"13.0":0.10944,"14.0":0.08755,"15.0":0.07661,"16.0":2.36394},I:{"0":0,"3":0,"4":0.00265,"2.1":0,"2.2":0.00132,"2.3":0.00132,"4.1":0.00132,"4.2-4.3":0.00728,"4.4":0,"4.4.3-4.4.4":0.03242},A:{"11":0.38074,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.41291},Q:{"10.4":0},O:{"0":0.08104},H:{"0":0.17171},L:{"0":18.97166},S:{"2.5":0}}; +module.exports={C:{"34":0.00544,"51":0.0381,"52":0.05987,"53":0.0381,"54":0.02722,"55":0.0381,"56":0.02722,"57":0.02722,"58":0.01089,"59":0.04354,"78":0.08709,"84":0.00544,"86":0.00544,"88":0.01089,"91":0.08165,"93":0.02177,"94":0.20139,"95":0.00544,"96":0.01089,"97":0.00544,"98":0.01089,"99":0.01633,"100":0.31569,"101":2.52555,"102":0.03266,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 87 89 90 92 103 104 3.5 3.6"},D:{"26":0.00544,"34":0.0381,"38":0.09797,"39":0.01089,"40":0.01089,"41":0.01089,"42":0.01089,"43":0.01633,"44":0.01633,"45":0.01633,"46":0.01633,"47":0.01633,"48":0.01633,"49":0.06532,"50":0.01089,"51":0.01633,"52":0.01089,"53":0.02722,"54":0.01089,"55":0.01089,"56":0.01633,"57":0.01633,"58":0.01633,"59":0.02177,"60":0.01633,"61":0.02722,"62":0.01633,"63":0.01633,"64":0.01633,"65":0.03266,"66":0.08165,"67":0.01089,"68":0.01089,"69":0.01089,"70":0.00544,"71":0.01089,"72":0.01089,"73":0.01089,"74":0.01089,"75":0.01633,"76":0.05987,"77":0.01089,"78":0.01089,"79":0.20139,"80":0.01633,"81":0.02177,"83":0.03266,"84":0.01089,"85":0.01089,"86":0.01633,"87":0.10886,"88":0.01089,"89":0.01633,"90":0.05987,"91":0.02722,"92":0.05987,"93":0.15785,"94":0.07076,"95":0.05987,"96":0.11975,"97":0.1524,"98":0.1524,"99":0.29392,"100":0.59329,"101":3.03719,"102":26.31146,"103":1.69822,"104":0.01089,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 105 106"},F:{"28":0.00544,"46":0.05987,"85":0.01089,"86":0.26671,"87":0.39734,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.01089,"18":0.02177,"95":0.02177,"96":0.01089,"98":0.00544,"99":0.02177,"100":0.02177,"101":0.76746,"102":4.55579,"103":0.75658,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 97"},E:{"4":0,"12":0.00544,"13":0.05987,"14":0.29392,"15":0.14696,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02177,"11.1":0.05443,"12.1":0.09253,"13.1":0.47898,"14.1":0.96341,"15.1":0.23949,"15.2-15.3":0.17418,"15.4":1.34986,"15.5":3.68491,"16.0":0.00544},G:{"8":0.00557,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00371,"7.0-7.1":0.00742,"8.1-8.4":0.0167,"9.0-9.2":0.04639,"9.3":0.1763,"10.0-10.2":0.02041,"10.3":0.19114,"11.0-11.2":0.02784,"11.3-11.4":0.07052,"12.0-12.1":0.02227,"12.2-12.5":0.84623,"13.0-13.1":0.00742,"13.2":0.00371,"13.3":0.04454,"13.4-13.7":0.1763,"14.0-14.4":0.33218,"14.5-14.8":1.33058,"15.0-15.1":0.31919,"15.2-15.3":0.66251,"15.4":2.40692,"15.5":11.78594,"16.0":0.02041},P:{"4":0.33665,"5.0-5.4":0.03046,"6.2-6.4":0.0206,"7.2-7.4":0.37778,"8.2":0.01015,"9.2":0.02099,"10.1":0.01002,"11.1-11.2":0.03258,"12.0":0.02099,"13.0":0.07602,"14.0":0.07602,"15.0":0.04344,"16.0":0.17375,"17.0":2.97551},I:{"0":0,"3":0,"4":0.00083,"2.1":0,"2.2":0.00331,"2.3":0.00083,"4.1":0.00166,"4.2-4.3":0.00829,"4.4":0,"4.4.3-4.4.4":0.03066},A:{"8":0.04068,"9":0.03051,"10":0.01017,"11":0.30509,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.10025},H:{"0":0.16394},L:{"0":22.97879},S:{"2.5":0},R:{_:"0"},M:{"0":0.47393}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/OM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/OM.js index 4f5b65a7b6b123..9ac87c6d2b2955 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/OM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/OM.js @@ -1 +1 @@ -module.exports={C:{"34":0.00326,"52":0.00326,"78":0.00979,"86":0.00653,"91":0.00653,"95":0.00653,"96":0.20883,"97":0.29367,"98":0.00653,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 87 88 89 90 92 93 94 99 3.5 3.6"},D:{"11":0.00653,"30":0.01305,"38":0.02284,"49":0.02937,"53":0.00326,"59":0.00653,"62":0.00653,"63":0.00326,"64":0.00326,"65":0.0261,"67":0.00326,"68":0.00326,"69":0.00653,"70":0.00979,"71":0.00653,"73":0.00326,"74":0.00979,"75":0.01632,"76":0.00653,"77":0.00326,"78":0.00326,"79":0.06526,"80":0.00653,"81":0.00979,"83":0.00979,"84":0.00326,"85":0.02937,"86":0.03589,"87":0.05221,"88":0.01632,"89":0.03263,"90":0.01632,"91":0.04568,"92":0.14357,"93":0.46987,"94":0.05547,"95":0.05547,"96":0.31977,"97":5.89624,"98":15.186,"99":0.05221,"100":0.01632,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 60 61 66 72 101"},F:{"28":0.00979,"46":0.00979,"82":0.15336,"83":0.36546,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00326,"15":0.00326,"16":0.00653,"17":0.00326,"18":0.01958,"84":0.00653,"89":0.00326,"91":0.00326,"92":0.01305,"93":0.00326,"94":0.01305,"95":0.01958,"96":0.03589,"97":0.47966,"98":2.26452,_:"13 14 79 80 81 83 85 86 87 88 90"},E:{"4":0,"13":0.02937,"14":0.13378,"15":0.11094,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00979,"12.1":0.01305,"13.1":0.0881,"14.1":0.38177,"15.1":0.2382,"15.2-15.3":0.37525,"15.4":0.00653},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00321,"6.0-6.1":0,"7.0-7.1":0.03532,"8.1-8.4":0.00803,"9.0-9.2":0.00161,"9.3":0.04334,"10.0-10.2":0.00321,"10.3":0.0305,"11.0-11.2":0.03692,"11.3-11.4":0.01124,"12.0-12.1":0.01605,"12.2-12.5":0.51368,"13.0-13.1":0.03692,"13.2":0.02087,"13.3":0.08508,"13.4-13.7":0.20708,"14.0-14.4":0.78657,"14.5-14.8":2.87177,"15.0-15.1":2.79953,"15.2-15.3":8.43069,"15.4":0.10595},P:{"4":0.18523,"5.0-5.4":0.01015,"6.2-6.4":0.01029,"7.2-7.4":0.17494,"8.2":0.11355,"9.2":0.03087,"10.1":0.02048,"11.1-11.2":0.16465,"12.0":0.05145,"13.0":0.19552,"14.0":0.22639,"15.0":0.20581,"16.0":2.50061},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00049,"4.2-4.3":0.00391,"4.4":0,"4.4.3-4.4.4":0.02929},A:{"11":2.92039,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.06737},Q:{"10.4":0},O:{"0":0.88928},H:{"0":0.4975},L:{"0":39.42475},S:{"2.5":0}}; +module.exports={C:{"34":0.00363,"52":0.00363,"79":0.0145,"86":0.00363,"91":0.01088,"96":0.00363,"98":0.00725,"99":0.00725,"100":0.06527,"101":0.51852,"102":0.03989,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 85 87 88 89 90 92 93 94 95 97 103 104 3.5 3.6"},D:{"11":0.00363,"31":0.00363,"34":0.00725,"38":0.03626,"49":0.0145,"58":0.00363,"62":0.00725,"63":0.00725,"64":0.00725,"65":0.01813,"70":0.00725,"71":0.00363,"72":0.00725,"74":0.03626,"75":0.0145,"76":0.00725,"77":0.00363,"79":0.09428,"80":0.00725,"81":0.0145,"83":0.01088,"84":0.02901,"85":0.05076,"86":0.03626,"87":0.05076,"88":0.0145,"89":0.05076,"90":0.0145,"91":0.03989,"92":0.10878,"93":0.03989,"94":0.01088,"95":0.03263,"96":0.05802,"97":0.06527,"98":0.06164,"99":0.07977,"100":0.27558,"101":0.99715,"102":20.4869,"103":1.76949,"104":0.04351,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 66 67 68 69 73 78 105 106"},F:{"28":0.01088,"36":0.00363,"46":0.01813,"68":0.00725,"85":0.01088,"86":0.1958,"87":0.31546,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00363,"16":0.00363,"17":0.01088,"18":0.01813,"84":0.00363,"89":0.00725,"92":0.0145,"94":0.01088,"96":0.01088,"97":0.01088,"98":0.00725,"99":0.01813,"100":0.02538,"101":0.53665,"102":2.38953,"103":0.49676,_:"12 13 14 79 80 81 83 85 86 87 88 90 91 93 95"},E:{"4":0,"13":0.0145,"14":0.11241,"15":0.04351,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.01813,"13.1":0.10153,"14.1":0.30458,"15.1":0.11603,"15.2-15.3":0.06164,"15.4":0.38073,"15.5":0.87024,"16.0":0.00363},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00287,"6.0-6.1":0,"7.0-7.1":0.02585,"8.1-8.4":0,"9.0-9.2":0.00431,"9.3":0.07754,"10.0-10.2":0,"10.3":0.0359,"11.0-11.2":0.00718,"11.3-11.4":0.00718,"12.0-12.1":0.01436,"12.2-12.5":0.44369,"13.0-13.1":0.01723,"13.2":0.01005,"13.3":0.05456,"13.4-13.7":0.11918,"14.0-14.4":0.44656,"14.5-14.8":0.98646,"15.0-15.1":0.35036,"15.2-15.3":0.76246,"15.4":2.57744,"15.5":8.30954,"16.0":0.02728},P:{"4":0.1439,"5.0-5.4":0.021,"6.2-6.4":0.03149,"7.2-7.4":0.21585,"8.2":0.01015,"9.2":0.04112,"10.1":0.01002,"11.1-11.2":0.09251,"12.0":0.03084,"13.0":0.11307,"14.0":0.1439,"15.0":0.1439,"16.0":0.32892,"17.0":2.40524},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00216,"4.2-4.3":0.00755,"4.4":0,"4.4.3-4.4.4":0.06042},A:{"11":2.67961,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.01363},H:{"0":0.682},L:{"0":45.30654},S:{"2.5":0},R:{_:"0"},M:{"0":0.08288}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PA.js index 5ba7e2d5bd89db..c712f22d18baed 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PA.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PA.js @@ -1 +1 @@ -module.exports={C:{"51":0.00755,"52":0.00755,"56":0.00377,"73":0.03773,"78":0.01887,"83":0.00377,"84":0.00377,"88":0.01132,"89":0.01132,"90":0.03396,"91":0.02641,"93":0.00755,"94":0.01132,"95":0.01132,"96":0.50558,"97":0.78101,"98":0.00755,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 85 86 87 92 99 3.5 3.6"},D:{"34":0.01132,"38":0.01509,"47":0.01132,"49":0.02641,"53":0.01132,"56":0.00377,"58":0.00377,"61":0.00377,"62":0.01509,"63":0.00377,"65":0.01132,"67":0.00755,"68":0.00755,"69":0.01132,"70":0.01132,"72":0.01887,"73":0.02264,"75":0.04528,"76":0.01887,"77":0.00755,"78":0.00755,"79":0.19242,"80":0.01887,"81":0.01509,"83":0.01509,"84":0.01509,"85":0.00755,"86":0.02264,"87":0.14337,"88":0.01132,"89":0.03018,"90":0.04905,"91":0.23015,"92":0.08678,"93":0.22638,"94":0.02641,"95":0.07546,"96":0.49804,"97":7.59128,"98":16.55215,"99":0.00755,"100":0.01132,"101":0.01132,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 55 57 59 60 64 66 71 74"},F:{"28":0.00755,"46":0.00377,"79":0.01132,"82":0.4754,"83":1.61107,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00377,"14":0.00377,"16":0.00755,"17":0.01132,"18":0.02641,"84":0.00755,"89":0.00377,"90":0.00755,"92":0.01132,"93":0.00377,"94":0.00755,"95":0.00755,"96":0.03773,"97":0.69046,"98":2.46377,_:"13 15 79 80 81 83 85 86 87 88 91"},E:{"4":0,"8":0.00755,"12":0.00755,"13":0.00755,"14":0.13583,"15":0.07923,_:"0 5 6 7 9 10 11 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.01887,"11.1":0.01509,"12.1":0.02641,"13.1":0.26034,"14.1":0.615,"15.1":0.24147,"15.2-15.3":0.57727,"15.4":0.00377},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00166,"6.0-6.1":0.00581,"7.0-7.1":0.03819,"8.1-8.4":0.00664,"9.0-9.2":0.01494,"9.3":0.09132,"10.0-10.2":0,"10.3":0.02657,"11.0-11.2":0.01245,"11.3-11.4":0.0083,"12.0-12.1":0.01411,"12.2-12.5":0.33041,"13.0-13.1":0.01826,"13.2":0.00166,"13.3":0.03653,"13.4-13.7":0.14694,"14.0-14.4":0.39516,"14.5-14.8":1.54413,"15.0-15.1":1.23115,"15.2-15.3":4.34181,"15.4":0.03321},P:{"4":0.27566,"5.0-5.4":0.01065,"6.2-6.4":0.01065,"7.2-7.4":0.31649,"8.2":0.03083,"9.2":0.04084,"10.1":0.01021,"11.1-11.2":0.20419,"12.0":0.03063,"13.0":0.14293,"14.0":0.18377,"15.0":0.22461,"16.0":2.87907},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00854,"4.4":0,"4.4.3-4.4.4":0.06617},A:{"11":0.18865,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.25527},Q:{"10.4":0},O:{"0":0.1432},H:{"0":0.24756},L:{"0":44.50503},S:{"2.5":0}}; +module.exports={C:{"52":0.0041,"72":0.00821,"73":0.05334,"78":0.00821,"88":0.0041,"90":0.04513,"91":0.02462,"97":0.02462,"99":0.01231,"100":0.1313,"101":1.08319,"102":0.05334,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 74 75 76 77 79 80 81 82 83 84 85 86 87 89 92 93 94 95 96 98 103 104 3.5 3.6"},D:{"38":0.00821,"47":0.01641,"49":0.04103,"55":0.00821,"62":0.0041,"65":0.01231,"67":0.00821,"68":0.00821,"69":0.00821,"70":0.01231,"73":0.02462,"74":0.01641,"75":0.04513,"76":0.02462,"77":0.00821,"78":0.00821,"79":0.1313,"80":0.02872,"81":0.02052,"83":0.01231,"84":0.02052,"86":0.02052,"87":0.05744,"88":0.02462,"89":0.03282,"90":0.01641,"91":0.06155,"92":0.06155,"93":0.06565,"94":0.02052,"95":0.01231,"96":0.08616,"97":0.11899,"98":0.08616,"99":0.09847,"100":0.30773,"101":1.44015,"102":22.71011,"103":2.39615,"104":0.00821,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 53 54 56 57 58 59 60 61 63 64 66 71 72 85 105 106"},F:{"28":0.02462,"85":0.02052,"86":0.74675,"87":0.97651,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00821,"16":0.00821,"17":0.01231,"18":0.02462,"84":0.00821,"89":0.0041,"90":0.00821,"92":0.01641,"95":0.00821,"96":0.00821,"97":0.00821,"98":0.00821,"99":0.01641,"100":0.02052,"101":0.45954,"102":3.18393,"103":0.64417,_:"12 13 14 79 80 81 83 85 86 87 88 91 93 94"},E:{"4":0,"12":0.01231,"13":0.02462,"14":0.07796,"15":0.04513,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.02462,"12.1":0.02462,"13.1":0.14361,"14.1":0.38158,"15.1":0.07385,"15.2-15.3":0.06565,"15.4":0.43902,"15.5":1.07088,"16.0":0.00821},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00181,"6.0-6.1":0.01265,"7.0-7.1":0.03252,"8.1-8.4":0,"9.0-9.2":0.01265,"9.3":0.05962,"10.0-10.2":0,"10.3":0.0533,"11.0-11.2":0.02349,"11.3-11.4":0.00181,"12.0-12.1":0.01084,"12.2-12.5":0.2439,"13.0-13.1":0.01084,"13.2":0.00361,"13.3":0.01536,"13.4-13.7":0.0542,"14.0-14.4":0.19241,"14.5-14.8":0.75339,"15.0-15.1":0.18157,"15.2-15.3":0.34779,"15.4":1.31889,"15.5":5.64773,"16.0":0.03071},P:{"4":0.16459,"5.0-5.4":0.01056,"6.2-6.4":0.03149,"7.2-7.4":0.42175,"8.2":0.01015,"9.2":0.02057,"10.1":0.01002,"11.1-11.2":0.14401,"12.0":0.02057,"13.0":0.06172,"14.0":0.1543,"15.0":0.09258,"16.0":0.43204,"17.0":2.83911},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.0059,"4.4":0,"4.4.3-4.4.4":0.07075},A:{"11":0.14361,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.1533},H:{"0":0.19537},L:{"0":46.67884},S:{"2.5":0},R:{_:"0"},M:{"0":0.2948}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PE.js index 755887ad404e9e..de431c5e740618 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PE.js @@ -1 +1 @@ -module.exports={C:{"47":0.005,"52":0.015,"76":0.01,"78":0.01,"84":0.01,"88":0.01,"90":0.01,"91":0.01,"92":0.01,"93":0.005,"94":0.01,"95":0.015,"96":0.39992,"97":0.68486,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 79 80 81 82 83 85 86 87 89 98 99 3.5 3.6"},D:{"22":0.01,"34":0.005,"38":0.05499,"47":0.01,"49":0.02999,"53":0.02,"65":0.01,"66":0.005,"68":0.01,"69":0.01,"70":0.005,"71":0.005,"72":0.005,"74":0.01,"75":0.01,"76":0.005,"77":0.02,"78":0.01,"79":0.24995,"80":0.025,"81":0.04499,"83":0.03499,"84":0.02,"85":0.015,"86":0.03999,"87":0.09498,"88":0.025,"89":0.02999,"90":0.02999,"91":0.23495,"92":0.09498,"93":0.11998,"94":0.06499,"95":0.08498,"96":0.54489,"97":11.24775,"98":27.94441,"99":0.02,"100":0.01,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 55 56 57 58 59 60 61 62 63 64 67 73 101"},F:{"36":0.01,"80":0.005,"81":0.005,"82":0.64487,"83":1.68466,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.005,"18":0.025,"84":0.005,"88":0.01,"90":0.005,"91":0.005,"92":0.01,"94":0.005,"95":0.01,"96":0.04999,"97":0.5149,"98":1.87463,_:"13 14 15 16 17 79 80 81 83 85 86 87 89 93"},E:{"4":0,"12":0.005,"13":0.005,"14":0.06499,"15":0.06499,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.005,"12.1":0.01,"13.1":0.04999,"14.1":0.14997,"15.1":0.11498,"15.2-15.3":0.17497},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00348,"6.0-6.1":0.00145,"7.0-7.1":0.00261,"8.1-8.4":0.00058,"9.0-9.2":0,"9.3":0.01245,"10.0-10.2":0.00463,"10.3":0.01738,"11.0-11.2":0.00521,"11.3-11.4":0.00695,"12.0-12.1":0.00724,"12.2-12.5":0.1593,"13.0-13.1":0.00463,"13.2":0.00463,"13.3":0.0197,"13.4-13.7":0.04489,"14.0-14.4":0.1735,"14.5-14.8":0.58566,"15.0-15.1":0.5063,"15.2-15.3":1.32715,"15.4":0.00782},P:{"4":0.2466,"5.0-5.4":0.01065,"6.2-6.4":0.01012,"7.2-7.4":0.07505,"8.2":0.03083,"9.2":0.02144,"10.1":0.03037,"11.1-11.2":0.09649,"12.0":0.02144,"13.0":0.06433,"14.0":0.11794,"15.0":0.08577,"16.0":0.76123},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00129,"4.2-4.3":0.00323,"4.4":0,"4.4.3-4.4.4":0.05549},A:{"11":0.12498,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.09002},Q:{"10.4":0},O:{"0":0.02501},H:{"0":0.17045},L:{"0":43.35314},S:{"2.5":0}}; +module.exports={C:{"52":0.0112,"73":0.0056,"78":0.0056,"88":0.0112,"90":0.0112,"91":0.0112,"97":0.0168,"99":0.0112,"100":0.0728,"101":0.9352,"102":0.0336,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 86 87 89 92 93 94 95 96 98 103 104 3.5 3.6"},D:{"22":0.0112,"38":0.0336,"47":0.0056,"49":0.028,"53":0.0168,"62":0.0112,"63":0.0056,"65":0.0056,"67":0.0112,"68":0.028,"69":0.0056,"70":0.0056,"72":0.0056,"73":0.0056,"74":0.0112,"75":0.0056,"76":0.0056,"77":0.0112,"78":0.0112,"79":0.224,"80":0.028,"81":0.0392,"83":0.0168,"84":0.0168,"85":0.028,"86":0.0392,"87":0.084,"88":0.0168,"89":0.028,"90":0.0224,"91":0.336,"92":0.0672,"93":0.0504,"94":0.0336,"95":0.0448,"96":0.112,"97":0.1064,"98":0.084,"99":0.168,"100":0.3304,"101":1.624,"102":38.7128,"103":3.6736,"104":0.0112,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 55 56 57 58 59 60 61 64 66 71 105 106"},F:{"28":0.0056,"80":0.0056,"85":0.028,"86":1.0696,"87":1.4448,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.0168,"92":0.0112,"96":0.0056,"98":0.0056,"99":0.0112,"100":0.0168,"101":0.2688,"102":2.1672,"103":0.4312,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 97"},E:{"4":0,"13":0.0056,"14":0.056,"15":0.0168,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.0056,"13.1":0.0392,"14.1":0.1064,"15.1":0.0392,"15.2-15.3":0.028,"15.4":0.14,"15.5":0.3248},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00392,"6.0-6.1":0.0012,"7.0-7.1":0.00151,"8.1-8.4":0,"9.0-9.2":0.0009,"9.3":0.01024,"10.0-10.2":0.0003,"10.3":0.01145,"11.0-11.2":0.00211,"11.3-11.4":0.00331,"12.0-12.1":0.00964,"12.2-12.5":0.09911,"13.0-13.1":0.00392,"13.2":0.00331,"13.3":0.01175,"13.4-13.7":0.02922,"14.0-14.4":0.09549,"14.5-14.8":0.25817,"15.0-15.1":0.0726,"15.2-15.3":0.16508,"15.4":0.5091,"15.5":1.70714,"16.0":0.00572},P:{"4":0.17044,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.07457,"8.2":0.01015,"9.2":0.07129,"10.1":0.01018,"11.1-11.2":0.05326,"12.0":0.05092,"13.0":0.04261,"14.0":0.06392,"15.0":0.03196,"16.0":0.13848,"17.0":0.63916},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00321,"4.2-4.3":0.00193,"4.4":0,"4.4.3-4.4.4":0.05206},A:{"11":0.0616,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.022},H:{"0":0.16246},L:{"0":41.1712},S:{"2.5":0},R:{_:"0"},M:{"0":0.088}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PF.js index 1b9da8a73b6182..94740714d59711 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PF.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PF.js @@ -1 +1 @@ -module.exports={C:{"47":0.02663,"48":0.0222,"52":0.00888,"56":0.02663,"59":0.01332,"60":0.03551,"61":0.00444,"63":0.00444,"65":0.00444,"68":0.25302,"78":0.31961,"81":0.00444,"82":0.03551,"84":0.01332,"88":0.00888,"89":0.00888,"90":0.00444,"91":0.13317,"92":0.00888,"93":0.05771,"94":0.04439,"95":0.03995,"96":1.32282,"97":2.44589,"98":0.00444,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 50 51 53 54 55 57 58 62 64 66 67 69 70 71 72 73 74 75 76 77 79 80 83 85 86 87 99 3.5 3.6"},D:{"49":0.03551,"62":0.01776,"67":0.03107,"77":0.01332,"79":0.00888,"83":0.02663,"84":0.02663,"85":0.00888,"86":0.00888,"87":0.08878,"88":0.00888,"89":0.01776,"91":0.01776,"92":0.11541,"93":0.182,"94":0.02663,"95":0.03551,"96":0.51936,"97":5.49548,"98":17.54737,"100":0.00444,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 63 64 65 66 68 69 70 71 72 73 74 75 76 78 80 81 90 99 101"},F:{"71":0.03995,"82":0.23971,"83":0.53712,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00888,"17":0.01332,"18":0.00888,"89":0.00888,"90":0.00888,"91":0.01332,"92":0.03551,"93":0.09322,"95":0.00888,"96":0.0222,"97":0.71468,"98":2.13072,_:"12 13 15 16 79 80 81 83 84 85 86 87 88 94"},E:{"4":0,"12":0.01332,"13":0.04439,"14":0.7857,"15":0.2841,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.00444,"11.1":0.13761,"12.1":0.16424,"13.1":0.38619,"14.1":2.05082,"15.1":1.08312,"15.2-15.3":1.65575,"15.4":0.0222},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00215,"6.0-6.1":0,"7.0-7.1":0.00431,"8.1-8.4":0,"9.0-9.2":0.00431,"9.3":0.14426,"10.0-10.2":0.01722,"10.3":0.15718,"11.0-11.2":0.0689,"11.3-11.4":0.03014,"12.0-12.1":0.13349,"12.2-12.5":1.54807,"13.0-13.1":0.04737,"13.2":0.00431,"13.3":0.09043,"13.4-13.7":0.44784,"14.0-14.4":0.86339,"14.5-14.8":4.11026,"15.0-15.1":3.61289,"15.2-15.3":10.20566,"15.4":0.03445},P:{"4":0.02094,"5.0-5.4":0.02093,"6.2-6.4":0.04074,"7.2-7.4":0.10469,"8.2":0.02094,"9.2":0.01094,"10.1":0.04074,"11.1-11.2":0.13609,"12.0":0.01047,"13.0":0.07328,"14.0":0.14656,"15.0":0.11516,"16.0":2.66954},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00189,"4.2-4.3":0.00142,"4.4":0,"4.4.3-4.4.4":0.01893},A:{"11":0.20419,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.31142},Q:{"10.4":0},O:{"0":0.67288},H:{"0":0.06318},L:{"0":29.53786},S:{"2.5":0}}; +module.exports={C:{"48":0.05779,"52":0.00826,"60":0.04128,"68":0.15686,"75":0.01238,"78":0.10733,"82":0.05366,"88":0.01651,"89":0.00826,"91":0.45408,"93":0.01238,"94":0.00413,"95":0.00413,"96":0.02064,"97":0.01238,"98":0.00413,"99":0.03302,"100":0.54077,"101":3.55421,"102":0.07843,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 72 73 74 76 77 79 80 81 83 84 85 86 87 90 92 103 104 3.5 3.6"},D:{"49":0.03715,"56":0.00413,"63":0.00413,"67":0.02064,"71":0.00413,"73":0.00826,"74":0.00413,"77":0.06192,"79":0.01238,"81":0.01238,"83":0.00826,"84":0.02064,"85":0.0289,"86":0.01238,"87":0.08669,"89":0.02477,"90":0.00826,"91":0.00826,"92":0.03715,"93":0.01651,"94":0.00413,"95":0.01651,"96":0.11558,"97":0.11558,"98":0.04954,"99":0.21466,"100":0.34262,"101":1.05264,"102":16.19827,"103":1.33747,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 64 65 66 68 69 70 72 75 76 78 80 88 104 105 106"},F:{"46":0.00413,"85":0.01238,"86":0.26832,"87":0.28896,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01238,"87":0.00413,"90":0.02064,"91":0.00413,"92":0.02064,"93":0.04954,"97":0.00826,"98":0.01238,"99":0.01238,"100":0.01238,"101":0.32198,"102":2.36534,"103":0.49123,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 88 89 94 95 96"},E:{"4":0,"12":0.0289,"13":0.04954,"14":0.4128,"15":0.17338,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.00413,"11.1":0.41693,"12.1":0.11146,"13.1":0.57379,"14.1":1.55213,"15.1":0.32611,"15.2-15.3":0.3096,"15.4":1.81632,"15.5":2.43139,"16.0":0.01238},G:{"8":0.00188,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00376,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.10146,"10.0-10.2":0,"10.3":0.05824,"11.0-11.2":0.00939,"11.3-11.4":0.10333,"12.0-12.1":0.02067,"12.2-12.5":0.84735,"13.0-13.1":0.02442,"13.2":0,"13.3":0.03006,"13.4-13.7":0.0977,"14.0-14.4":0.7628,"14.5-14.8":2.32409,"15.0-15.1":0.80601,"15.2-15.3":1.22687,"15.4":2.87083,"15.5":9.4354,"16.0":0.03946},P:{"4":0.01042,"5.0-5.4":0.01054,"6.2-6.4":0.02037,"7.2-7.4":0.11467,"8.2":0.06207,"9.2":0.01042,"10.1":0.02016,"11.1-11.2":0.0834,"12.0":0.03069,"13.0":0.0834,"14.0":0.09382,"15.0":0.05212,"16.0":0.46911,"17.0":3.35672},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.02348},A:{"11":0.40454,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.32291},H:{"0":0.95602},L:{"0":36.53456},S:{"2.5":0},R:{_:"0"},M:{"0":0.25245}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PG.js index 6e462187edc45e..fba3ed706fccee 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PG.js @@ -1 +1 @@ -module.exports={C:{"33":0.02085,"44":0.00695,"48":0.00695,"56":0.00695,"61":0.01043,"72":0.00695,"77":0.02433,"78":0.00348,"79":0.00695,"80":0.0139,"82":0.03475,"83":0.00695,"84":0.01738,"88":0.0139,"89":0.00348,"90":0.01043,"91":0.04518,"92":0.00348,"93":0.0139,"94":0.01738,"95":0.0695,"96":0.59075,"97":1.33788,"98":0.06603,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 45 46 47 49 50 51 52 53 54 55 57 58 59 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 81 85 86 87 99 3.5 3.6"},D:{"26":0.00695,"37":0.02433,"38":0.00348,"43":0.00348,"44":0.00695,"46":0.00348,"49":0.02085,"53":0.00695,"54":0.01043,"55":0.00348,"56":0.01043,"59":0.00695,"60":0.00695,"61":0.01043,"62":0.00695,"65":0.0139,"67":0.02085,"68":0.00695,"69":0.16333,"70":0.17028,"72":0.00695,"74":0.03475,"76":0.0139,"77":0.00695,"78":0.00348,"79":0.00695,"80":0.01043,"81":0.04865,"83":0.03128,"84":0.00695,"85":0.05213,"86":0.02433,"87":0.05213,"88":0.44828,"89":0.07993,"90":0.04518,"91":0.07645,"92":0.0556,"93":0.09035,"94":0.07645,"95":0.07645,"96":0.52473,"97":4.1978,"98":9.76823,"99":0.00695,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 39 40 41 42 45 47 48 50 51 52 57 58 63 64 66 71 73 75 100 101"},F:{"28":0.00348,"67":0.13553,"73":0.00695,"76":0.00695,"77":0.04865,"80":0.04865,"81":0.0139,"82":0.11815,"83":0.46565,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 74 75 78 79 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.05213,"13":0.05908,"14":0.0278,"15":0.04518,"16":0.06603,"17":0.05213,"18":0.26758,"80":0.03128,"83":0.01043,"84":0.10425,"85":0.02085,"88":0.00348,"89":0.03823,"90":0.0139,"91":0.0278,"92":0.0417,"93":0.0139,"94":0.03823,"95":0.04518,"96":0.1112,"97":0.95215,"98":2.96765,_:"79 81 86 87"},E:{"4":0,"7":0.00348,"12":0.00695,"13":0.02085,"14":0.04865,"15":0.0139,_:"0 5 6 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.05213,"12.1":0.01738,"13.1":0.37183,"14.1":0.10773,"15.1":0.03128,"15.2-15.3":0.15985},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00121,"7.0-7.1":0,"8.1-8.4":0.0006,"9.0-9.2":0.00904,"9.3":0.01356,"10.0-10.2":0,"10.3":0.02924,"11.0-11.2":0.00573,"11.3-11.4":0.01658,"12.0-12.1":0.01537,"12.2-12.5":0.27279,"13.0-13.1":0.00603,"13.2":0.00452,"13.3":0.06722,"13.4-13.7":0.10912,"14.0-14.4":0.21009,"14.5-14.8":0.40903,"15.0-15.1":0.79847,"15.2-15.3":1.04353,"15.4":0.00241},P:{"4":0.5237,"5.0-5.4":0.01065,"6.2-6.4":0.01027,"7.2-7.4":1.15009,"8.2":0.03083,"9.2":0.12322,"10.1":0.01021,"11.1-11.2":0.25672,"12.0":0.05134,"13.0":0.45182,"14.0":0.45182,"15.0":0.54424,"16.0":2.14615},I:{"0":0,"3":0,"4":0.00282,"2.1":0,"2.2":0,"2.3":0,"4.1":0.02441,"4.2-4.3":0.02347,"4.4":0,"4.4.3-4.4.4":0.2103},A:{"9":0.02309,"10":0.00924,"11":0.33254,_:"6 7 8 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.13703},Q:{"10.4":0.0522},O:{"0":2.32943},H:{"0":1.68644},L:{"0":59.5965},S:{"2.5":0.09788}}; +module.exports={C:{"16":0.00348,"59":0.00348,"77":0.02089,"84":0.00696,"85":0.00696,"86":0.00696,"88":0.01393,"89":0.02089,"91":0.01393,"92":0.01045,"93":0.00696,"94":0.00348,"95":0.01393,"96":0.00696,"97":0.03134,"98":0.04527,"99":0.05223,"100":0.26811,"101":0.95755,"102":0.06616,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 80 81 82 83 87 90 103 104 3.5 3.6"},D:{"11":0.00696,"31":0.00696,"36":0.01045,"43":0.00348,"49":0.00696,"54":0.00696,"55":0.01393,"60":0.00696,"61":0.00696,"63":0.00696,"65":0.01045,"66":0.00348,"67":0.01045,"68":0.00696,"69":0.05571,"70":0.06616,"72":0.00696,"74":0.02437,"77":0.00696,"78":0.00696,"79":0.01045,"80":0.01045,"81":0.07312,"83":0.01393,"86":0.00696,"87":0.04527,"88":0.17062,"89":0.04178,"90":0.04875,"91":0.01393,"92":0.05571,"93":0.02786,"94":0.10794,"95":0.02437,"96":0.07312,"97":0.05223,"98":0.0766,"99":0.07312,"100":0.16017,"101":0.76256,"102":10.35895,"103":1.35102,"104":0.00696,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 37 38 39 40 41 42 44 45 46 47 48 50 51 52 53 56 57 58 59 62 64 71 73 75 76 84 85 105 106"},F:{"42":0.02089,"78":0.00348,"80":0.00348,"81":0.01045,"82":0.01045,"84":0.00696,"85":0.00696,"86":0.60587,"87":0.41088,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.04527,"13":0.03134,"14":0.01045,"15":0.0383,"16":0.04178,"17":0.04875,"18":0.16714,"80":0.02786,"81":0.00696,"84":0.0975,"85":0.01045,"88":0.00348,"89":0.02786,"90":0.02437,"91":0.02089,"92":0.04178,"93":0.01045,"94":0.02089,"95":0.01045,"96":0.03134,"97":0.02089,"98":0.04527,"99":0.0383,"100":0.11491,"101":0.54667,"102":2.29464,"103":0.84961,_:"79 83 86 87"},E:{"4":0,"13":0.00696,"14":0.02786,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00696,"12.1":0.00348,"13.1":0.06964,"14.1":0.06616,"15.1":0.02437,"15.2-15.3":0.00696,"15.4":0.0383,"15.5":0.12187},G:{"8":0,"3.2":0,"4.0-4.1":0.00022,"4.2-4.3":0.0041,"5.0-5.1":0.00259,"6.0-6.1":0.00151,"7.0-7.1":0.00432,"8.1-8.4":0.00389,"9.0-9.2":0.00389,"9.3":0.00454,"10.0-10.2":0.01015,"10.3":0.01231,"11.0-11.2":0.00929,"11.3-11.4":0.00605,"12.0-12.1":0.01512,"12.2-12.5":0.19658,"13.0-13.1":0.01383,"13.2":0.00907,"13.3":0.01771,"13.4-13.7":0.05314,"14.0-14.4":0.26701,"14.5-14.8":0.13178,"15.0-15.1":0.14279,"15.2-15.3":0.18578,"15.4":0.30136,"15.5":0.7602,"16.0":0.00022},P:{"4":0.20657,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.88825,"8.2":0.01015,"9.2":0.0723,"10.1":0.01002,"11.1-11.2":0.2892,"12.0":0.05164,"13.0":0.15493,"14.0":0.33051,"15.0":0.2169,"16.0":0.77464,"17.0":1.0122},I:{"0":0,"3":0,"4":0.00565,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00791,"4.2-4.3":0.0192,"4.4":0,"4.4.3-4.4.4":0.19538},A:{"9":0.00766,"11":0.18385,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.00652},O:{"0":1.59691},H:{"0":1.74017},L:{"0":67.00774},S:{"2.5":0.16947},R:{_:"0"},M:{"0":0.24117}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PH.js index edf9106d41f162..7bb458bc5e7ffe 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PH.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PH.js @@ -1 +1 @@ -module.exports={C:{"34":0.00474,"36":0.00949,"52":0.00949,"56":0.03321,"59":0.01423,"72":0.00474,"78":0.00949,"87":0.00474,"88":0.00949,"91":0.00949,"92":0.00949,"94":0.00949,"95":0.01423,"96":0.31785,"97":0.48863,"98":0.00949,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 89 90 93 99 3.5 3.6"},D:{"49":0.02372,"52":0.00474,"53":0.00949,"55":0.00949,"56":0.00474,"58":0.00474,"63":0.00474,"65":0.01423,"66":0.06167,"67":0.00949,"69":0.01423,"70":0.00949,"71":0.01423,"72":0.01423,"73":0.00949,"74":0.02372,"75":0.02372,"76":0.03321,"77":0.01898,"78":0.10437,"79":0.08065,"80":0.02846,"81":0.02846,"83":0.03795,"84":0.03321,"85":0.03321,"86":0.05218,"87":0.1186,"88":0.05218,"89":0.05693,"90":0.06642,"91":0.1186,"92":0.18027,"93":0.1186,"94":0.09488,"95":0.12334,"96":0.61672,"97":9.93394,"98":23.6014,"99":0.02372,"100":0.02372,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 54 57 59 60 61 62 64 68 101"},F:{"28":0.03321,"36":0.00949,"46":0.00949,"82":0.30836,"83":0.85392,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00949,"18":0.01423,"84":0.00474,"92":0.00949,"95":0.01423,"96":0.02846,"97":0.76378,"98":2.65664,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 89 90 91 93 94"},E:{"4":0,"13":0.01898,"14":0.09962,"15":0.0759,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.00474,"11.1":0.02372,"12.1":0.01423,"13.1":0.07116,"14.1":0.29887,"15.1":0.17078,"15.2-15.3":0.29413},G:{"8":0.00087,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00043,"5.0-5.1":0.01039,"6.0-6.1":0.00217,"7.0-7.1":0.01473,"8.1-8.4":0.00087,"9.0-9.2":0.00823,"9.3":0.0589,"10.0-10.2":0.00476,"10.3":0.03465,"11.0-11.2":0.01776,"11.3-11.4":0.03378,"12.0-12.1":0.01949,"12.2-12.5":0.38849,"13.0-13.1":0.01299,"13.2":0.00736,"13.3":0.03162,"13.4-13.7":0.10351,"14.0-14.4":0.26809,"14.5-14.8":0.72371,"15.0-15.1":0.71591,"15.2-15.3":1.85713,"15.4":0.01429},P:{"4":0.32855,"5.0-5.4":0.01065,"6.2-6.4":0.01012,"7.2-7.4":0.07505,"8.2":0.03083,"9.2":0.0106,"10.1":0.03037,"11.1-11.2":0.05299,"12.0":0.0106,"13.0":0.03179,"14.0":0.05299,"15.0":0.05299,"16.0":0.72069},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00401,"4.2-4.3":0.0024,"4.4":0,"4.4.3-4.4.4":0.04088},A:{"11":3.07886,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.09459},Q:{"10.4":0.01051},O:{"0":1.13508},H:{"0":0.69651},L:{"0":45.06218},S:{"2.5":0}}; +module.exports={C:{"36":0.00919,"52":0.00919,"59":0.01379,"78":0.01379,"88":0.0046,"91":0.01379,"95":0.0046,"98":0.0046,"99":0.01839,"100":0.12412,"101":0.69415,"102":0.04137,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 94 96 97 103 104 3.5 3.6"},D:{"38":0.0046,"49":0.02299,"52":0.05057,"53":0.00919,"63":0.0046,"65":0.01379,"66":0.05976,"67":0.00919,"68":0.0046,"69":0.01379,"70":0.00919,"71":0.00919,"72":0.00919,"73":0.00919,"74":0.02299,"75":0.01839,"76":0.03218,"77":0.00919,"78":0.07355,"79":0.10573,"80":0.01839,"81":0.02299,"83":0.05976,"84":0.02299,"85":0.03218,"86":0.04137,"87":0.06436,"88":0.03218,"89":0.04137,"90":0.03218,"91":0.09654,"92":0.12872,"93":0.06896,"94":0.05976,"95":0.05516,"96":0.10573,"97":0.13331,"98":0.11952,"99":0.19307,"100":0.33098,"101":1.3791,"102":27.15448,"103":2.41802,"104":0.01379,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 54 55 56 57 58 59 60 61 62 64 105 106"},F:{"28":0.03678,"46":0.00919,"85":0.01839,"86":0.47809,"87":0.62979,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00919,"18":0.01379,"84":0.0046,"92":0.01379,"98":0.0046,"99":0.00919,"100":0.01839,"101":0.28042,"102":2.56972,"103":0.47809,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 89 90 91 93 94 95 96 97"},E:{"4":0,"13":0.01839,"14":0.06896,"15":0.02758,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01839,"12.1":0.00919,"13.1":0.06896,"14.1":0.1563,"15.1":0.04137,"15.2-15.3":0.03678,"15.4":0.23445,"15.5":0.58382},G:{"8":0,"3.2":0.00045,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0086,"6.0-6.1":0.00272,"7.0-7.1":0.00996,"8.1-8.4":0.00317,"9.0-9.2":0.03532,"9.3":0.06973,"10.0-10.2":0.00408,"10.3":0.04392,"11.0-11.2":0.00951,"11.3-11.4":0.03668,"12.0-12.1":0.01358,"12.2-12.5":0.34732,"13.0-13.1":0.0086,"13.2":0.00589,"13.3":0.02174,"13.4-13.7":0.06611,"14.0-14.4":0.17388,"14.5-14.8":0.35909,"15.0-15.1":0.13947,"15.2-15.3":0.21237,"15.4":0.74127,"15.5":2.1894,"16.0":0.01404},P:{"4":0.32013,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.07457,"8.2":0.01015,"9.2":0.07129,"10.1":0.01018,"11.1-11.2":0.02134,"12.0":0.05092,"13.0":0.02134,"14.0":0.03201,"15.0":0.03201,"16.0":0.08537,"17.0":0.76831},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00094,"4.2-4.3":0.00468,"4.4":0,"4.4.3-4.4.4":0.04302},A:{"11":4.08673,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.67538},H:{"0":0.7059},L:{"0":47.76508},S:{"2.5":0},R:{_:"0"},M:{"0":0.09185}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PK.js index fdf280665113d8..41f22aab95e258 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PK.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PK.js @@ -1 +1 @@ -module.exports={C:{"47":0.01214,"50":0.00243,"52":0.03156,"68":0.00243,"72":0.00486,"78":0.00971,"79":0.00486,"80":0.00486,"81":0.00486,"82":0.00243,"83":0.00243,"84":0.00486,"88":0.00486,"89":0.00486,"91":0.02185,"93":0.00486,"94":0.04128,"95":0.017,"96":0.36177,"97":0.59486,"98":0.03156,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 85 86 87 90 92 99 3.5 3.6"},D:{"38":0.00486,"40":0.00243,"42":0.00243,"43":0.017,"49":0.02428,"50":0.00243,"56":0.02671,"58":0.00243,"62":0.00243,"63":0.00728,"64":0.03885,"65":0.00728,"66":0.00243,"67":0.00243,"68":0.00728,"69":0.00486,"70":0.00486,"71":0.00728,"72":0.00728,"73":0.00728,"74":0.01214,"75":0.00971,"76":0.00971,"77":0.00486,"78":0.00728,"79":0.017,"80":0.02185,"81":0.03399,"83":0.03642,"84":0.06798,"85":0.03885,"86":0.06798,"87":0.08012,"88":0.017,"89":0.03399,"90":0.02185,"91":0.0437,"92":0.05099,"93":0.25008,"94":0.0437,"95":0.07284,"96":0.34235,"97":5.06724,"98":12.37066,"99":0.02428,"100":0.02671,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 41 44 45 46 47 48 51 52 53 54 55 57 59 60 61 101"},F:{"71":0.00243,"82":0.06798,"83":0.52202,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01214,"13":0.00243,"14":0.00243,"15":0.00486,"16":0.00486,"17":0.00243,"18":0.02428,"84":0.00486,"85":0.00243,"89":0.00486,"92":0.00728,"95":0.00728,"96":0.00971,"97":0.19424,"98":0.66284,_:"79 80 81 83 86 87 88 90 91 93 94"},E:{"4":0,"13":0.00971,"14":0.02914,"15":0.017,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 15.4","5.1":0.00971,"10.1":0.00243,"11.1":0.00486,"12.1":0.00728,"13.1":0.01942,"14.1":0.09226,"15.1":0.03885,"15.2-15.3":0.05584},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00114,"5.0-5.1":0.00228,"6.0-6.1":0.00076,"7.0-7.1":0.03841,"8.1-8.4":0.00076,"9.0-9.2":0.00456,"9.3":0.07795,"10.0-10.2":0.0057,"10.3":0.04715,"11.0-11.2":0.01559,"11.3-11.4":0.01483,"12.0-12.1":0.01065,"12.2-12.5":0.35402,"13.0-13.1":0.00799,"13.2":0.00456,"13.3":0.0289,"13.4-13.7":0.10115,"14.0-14.4":0.2331,"14.5-14.8":0.66849,"15.0-15.1":0.6221,"15.2-15.3":1.55182,"15.4":0.00875},P:{"4":0.21296,"5.0-5.4":0.01065,"6.2-6.4":0.01065,"7.2-7.4":0.05324,"8.2":0.11355,"9.2":0.0213,"10.1":0.02048,"11.1-11.2":0.04259,"12.0":0.0213,"13.0":0.08519,"14.0":0.06389,"15.0":0.09583,"16.0":1.03288},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00139,"4.2-4.3":0.00555,"4.4":0,"4.4.3-4.4.4":0.05363},A:{"8":0.00744,"9":0.00744,"11":0.09923,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.06057},Q:{"10.4":0},O:{"0":4.32304},H:{"0":1.74893},L:{"0":64.93215},S:{"2.5":0.11357}}; +module.exports={C:{"11":0.00264,"47":0.00528,"52":0.03699,"68":0.00264,"72":0.00528,"78":0.00528,"83":0.00264,"84":0.00264,"88":0.00264,"89":0.00264,"91":0.01057,"93":0.00264,"94":0.00264,"95":0.01057,"96":0.00793,"97":0.00528,"98":0.01057,"99":0.02642,"100":0.11889,"101":0.8428,"102":0.06077,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 85 86 87 90 92 103 104 3.5 3.6"},D:{"31":0.00264,"33":0.00264,"38":0.00264,"42":0.00264,"43":0.01849,"49":0.01849,"50":0.00264,"53":0.00528,"55":0.00264,"56":0.0317,"58":0.00264,"62":0.00528,"63":0.00793,"64":0.02114,"65":0.00793,"67":0.00528,"68":0.00793,"69":0.01057,"70":0.00528,"71":0.00528,"72":0.01321,"73":0.01057,"74":0.03435,"75":0.01057,"76":0.01057,"77":0.01057,"78":0.00793,"79":0.02378,"80":0.02114,"81":0.03963,"83":0.02642,"84":0.06077,"85":0.33553,"86":0.06077,"87":0.06341,"88":0.02378,"89":0.0317,"90":0.01849,"91":0.06869,"92":0.0317,"93":0.0317,"94":0.02642,"95":0.04756,"96":0.05812,"97":0.06869,"98":0.07926,"99":0.0819,"100":0.20608,"101":0.70541,"102":15.5561,"103":1.61955,"104":0.02642,"105":0.00528,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 34 35 36 37 39 40 41 44 45 46 47 48 51 52 54 57 59 60 61 66 106"},F:{"28":0.00264,"36":0.00264,"79":0.00793,"84":0.00528,"85":0.0317,"86":0.07926,"87":0.43065,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01057,"13":0.00793,"14":0.00264,"15":0.00793,"16":0.00793,"18":0.02378,"84":0.00528,"89":0.00528,"91":0.00793,"92":0.01057,"94":0.00264,"98":0.00528,"99":0.01057,"100":0.01321,"101":0.1004,"102":0.70013,"103":0.14531,_:"17 79 80 81 83 85 86 87 88 90 93 95 96 97"},E:{"4":0,"13":0.00528,"14":0.02114,"15":0.00793,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.00528,"13.1":0.02114,"14.1":0.07398,"15.1":0.01321,"15.2-15.3":0.01321,"15.4":0.06341,"15.5":0.11889},G:{"8":0,"3.2":0.00037,"4.0-4.1":0,"4.2-4.3":0.00112,"5.0-5.1":0.00299,"6.0-6.1":0.00075,"7.0-7.1":0.03845,"8.1-8.4":0.00075,"9.0-9.2":0.00261,"9.3":0.10041,"10.0-10.2":0.00299,"10.3":0.05151,"11.0-11.2":0.00859,"11.3-11.4":0.00933,"12.0-12.1":0.00933,"12.2-12.5":0.29378,"13.0-13.1":0.00709,"13.2":0.00859,"13.3":0.01642,"13.4-13.7":0.05525,"14.0-14.4":0.14558,"14.5-14.8":0.29788,"15.0-15.1":0.13102,"15.2-15.3":0.21464,"15.4":0.65586,"15.5":1.65925,"16.0":0.00859},P:{"4":0.19006,"5.0-5.4":0.01056,"6.2-6.4":0.03149,"7.2-7.4":0.04224,"8.2":0.01015,"9.2":0.01056,"10.1":0.01002,"11.1-11.2":0.03168,"12.0":0.01056,"13.0":0.08447,"14.0":0.05279,"15.0":0.04224,"16.0":0.19006,"17.0":1.20372},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00156,"4.2-4.3":0.00625,"4.4":0,"4.4.3-4.4.4":0.05105},A:{"8":0.00264,"9":0.00264,"11":0.07662,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":3.31846},H:{"0":1.5604},L:{"0":65.8532},S:{"2.5":0.12509},R:{_:"0"},M:{"0":0.06622}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PL.js index 2470b7684d419f..7e86b91a11cafa 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PL.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PL.js @@ -1 +1 @@ -module.exports={C:{"48":0.00474,"52":0.16597,"56":0.00474,"66":0.00948,"68":0.00948,"72":0.01897,"78":0.03794,"80":0.00474,"81":0.00474,"82":0.00948,"83":0.00474,"84":0.02371,"85":0.00474,"86":0.00948,"87":0.02845,"88":0.02371,"89":0.02845,"90":0.01897,"91":0.11855,"92":0.01897,"93":0.03794,"94":0.06165,"95":0.12329,"96":2.48007,"97":3.42847,"98":0.01423,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 99 3.5 3.6"},D:{"34":0.01423,"49":0.11855,"50":0.00474,"58":0.00948,"63":0.01897,"70":0.00474,"71":0.00474,"74":0.00474,"75":0.00948,"76":0.04268,"77":0.01423,"78":0.01423,"79":0.27504,"80":0.00948,"81":0.00948,"83":0.01897,"84":0.04742,"85":0.01897,"86":0.04268,"87":0.06165,"88":0.03319,"89":0.03319,"90":0.03319,"91":0.03794,"92":0.04742,"93":0.1802,"94":0.07587,"95":0.09484,"96":0.8915,"97":7.64885,"98":15.2313,"99":0.00474,"100":0.00474,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 59 60 61 62 64 65 66 67 68 69 72 73 101"},F:{"36":0.01897,"75":0.00948,"76":0.00474,"77":0.01897,"78":0.01897,"79":0.01897,"80":0.01897,"81":0.01897,"82":2.50852,"83":6.2215,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00948,"16":0.00474,"17":0.00948,"18":0.01897,"84":0.00474,"86":0.00474,"89":0.00474,"91":0.00948,"92":0.01897,"93":0.00474,"94":0.01423,"95":0.01897,"96":0.06165,"97":0.98634,"98":3.33363,_:"12 13 14 79 80 81 83 85 87 88 90"},E:{"4":0,"13":0.01423,"14":0.07113,"15":0.04742,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.00948,"12.1":0.01897,"13.1":0.07113,"14.1":0.1802,"15.1":0.12329,"15.2-15.3":0.22287},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00039,"6.0-6.1":0.00116,"7.0-7.1":0.00232,"8.1-8.4":0.00077,"9.0-9.2":0.00039,"9.3":0.01898,"10.0-10.2":0.00039,"10.3":0.00929,"11.0-11.2":0.00387,"11.3-11.4":0.00349,"12.0-12.1":0.00542,"12.2-12.5":0.06932,"13.0-13.1":0.00852,"13.2":0.00503,"13.3":0.01704,"13.4-13.7":0.05925,"14.0-14.4":0.1793,"14.5-14.8":0.7114,"15.0-15.1":0.60413,"15.2-15.3":2.15394,"15.4":0.01549},P:{"4":0.18679,"5.0-5.4":0.01065,"6.2-6.4":0.01012,"7.2-7.4":0.02075,"8.2":0.03083,"9.2":0.12453,"10.1":0.03037,"11.1-11.2":0.09339,"12.0":0.03113,"13.0":0.09339,"14.0":0.14528,"15.0":0.09339,"16.0":1.96127},I:{"0":0,"3":0,"4":0.00216,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01417,"4.2-4.3":0.00984,"4.4":0,"4.4.3-4.4.4":0.02641},A:{"11":0.14226,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.01052},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.21032},Q:{"10.4":0},O:{"0":0.03681},H:{"0":1.18475},L:{"0":44.77015},S:{"2.5":0.00526}}; +module.exports={C:{"3":0.00719,"52":0.09712,"68":0.00719,"72":0.00719,"78":0.02158,"80":0.0036,"84":0.0036,"87":0.01079,"88":0.02158,"89":0.01079,"90":0.0036,"91":0.08273,"92":0.00719,"93":0.03597,"94":0.05036,"95":0.01439,"96":0.01079,"97":0.02158,"98":0.03597,"99":0.08273,"100":0.49639,"101":4.29122,"102":0.14028,"103":0.0036,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 81 82 83 85 86 104","3.5":0.00719,"3.6":0.01079},D:{"38":0.0036,"49":0.06115,"58":0.00719,"60":0.0036,"63":0.01079,"69":0.00719,"71":0.0036,"73":0.0036,"76":0.00719,"78":0.00719,"79":0.2446,"80":0.00719,"81":0.00719,"83":0.01799,"84":0.02878,"85":0.01439,"86":0.02878,"87":0.03957,"88":0.01079,"89":0.02158,"90":0.01079,"91":0.01439,"92":0.01799,"93":0.01439,"94":0.02518,"95":0.08993,"96":0.06475,"97":0.06475,"98":0.07194,"99":0.12949,"100":0.21942,"101":0.88846,"102":15.36998,"103":1.34888,"104":0.0036,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 61 62 64 65 66 67 68 70 72 74 75 77 105 106"},F:{"36":0.01079,"73":0.00719,"78":0.00719,"79":0.00719,"80":0.00719,"82":0.01079,"83":0.00719,"84":0.04316,"85":0.08273,"86":2.1546,"87":3.28046,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.0036,"16":0.00719,"17":0.0036,"18":0.00719,"92":0.01079,"96":0.00719,"97":0.00719,"98":0.02158,"99":0.01799,"100":0.03237,"101":0.33092,"102":2.07907,"103":0.42085,_:"12 13 14 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95"},E:{"4":0,"13":0.00719,"14":0.02878,"15":0.02518,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.0036,"12.1":0.00719,"13.1":0.03957,"14.1":0.07913,"15.1":0.03237,"15.2-15.3":0.02878,"15.4":0.1187,"15.5":0.26978},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00052,"6.0-6.1":0.00052,"7.0-7.1":0.00155,"8.1-8.4":0,"9.0-9.2":0.00103,"9.3":0.01237,"10.0-10.2":0,"10.3":0.00773,"11.0-11.2":0.00052,"11.3-11.4":0.00155,"12.0-12.1":0.00309,"12.2-12.5":0.07011,"13.0-13.1":0.01186,"13.2":0.00155,"13.3":0.01031,"13.4-13.7":0.05104,"14.0-14.4":0.1196,"14.5-14.8":0.32685,"15.0-15.1":0.09847,"15.2-15.3":0.22941,"15.4":0.86403,"15.5":3.30559,"16.0":0.01753},P:{"4":0.15547,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 10.1","9.2":0.02073,"11.1-11.2":0.06219,"12.0":0.01036,"13.0":0.05182,"14.0":0.08292,"15.0":0.04146,"16.0":0.22802,"17.0":2.44607},I:{"0":0,"3":0,"4":0.00141,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01057,"4.2-4.3":0.00881,"4.4":0,"4.4.3-4.4.4":0.01762},A:{"11":0.06475,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02561},H:{"0":2.29748},L:{"0":53.62886},S:{"2.5":0},R:{_:"0"},M:{"0":0.53785}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PM.js index 36f80eedde0def..6b6e456749a2d5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PM.js @@ -1 +1 @@ -module.exports={C:{"43":0.00778,"52":0.00778,"78":0.02724,"79":0.22179,"86":0.00389,"91":0.14397,"95":0.05447,"96":0.54474,"97":1.57586,"98":0.01556,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 81 82 83 84 85 87 88 89 90 92 93 94 99 3.5 3.6"},D:{"29":0.00389,"49":0.00778,"61":0.00389,"65":0.01167,"76":0.01167,"79":0.01556,"84":0.01167,"87":0.01946,"89":0.00389,"91":0.00389,"94":0.01167,"95":0.00389,"96":0.26459,"97":4.10501,"98":10.93371,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 62 63 64 66 67 68 69 70 71 72 73 74 75 77 78 80 81 83 85 86 88 90 92 93 99 100 101"},F:{"82":0.27626,"83":1.26068,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00389,"97":1.24123,"98":4.5836,_:"12 13 14 15 16 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96"},E:{"4":0,"14":0.10117,"15":0.08949,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00389,"11.1":0.04669,"12.1":0.00389,"13.1":0.10895,"14.1":1.30349,"15.1":1.71204,"15.2-15.3":5.78203,"15.4":0.29183},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00956,"10.0-10.2":0,"10.3":0.01913,"11.0-11.2":0.02391,"11.3-11.4":0.01434,"12.0-12.1":0.00956,"12.2-12.5":1.39619,"13.0-13.1":0,"13.2":0.00956,"13.3":0.31558,"13.4-13.7":0.00956,"14.0-14.4":0.15779,"14.5-14.8":5.98639,"15.0-15.1":7.05744,"15.2-15.3":32.27965,"15.4":0.50205},P:{"4":0.16724,"5.0-5.4":0.01121,"6.2-6.4":0.01012,"7.2-7.4":0.68986,"8.2":0.03083,"9.2":0.03136,"10.1":0.03037,"11.1-11.2":0.20905,"12.0":0.0209,"13.0":0.14633,"14.0":0.20905,"15.0":0.36584,"16.0":0.31767},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.04934,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.03618},A:{"11":0.05058,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.09164},Q:{"10.4":0},O:{"0":0},H:{"0":0.08097},L:{"0":12.73345},S:{"2.5":0}}; +module.exports={C:{"47":0.00839,"52":0.01258,"68":0.00839,"78":0.05033,"86":0.00839,"91":0.42779,"99":0.05872,"100":0.67523,"101":2.01312,"102":0.08388,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 87 88 89 90 92 93 94 95 96 97 98 103 104 3.5 3.6"},D:{"23":0.01258,"29":0.02516,"49":0.00839,"55":0.00839,"61":0.02097,"65":0.00839,"76":0.00839,"78":0.0713,"79":0.01258,"83":0.05033,"90":0.02097,"91":0.00839,"92":0.00839,"96":0.26003,"97":0.00839,"98":0.02516,"99":0.18034,"100":1.92505,"101":1.1911,"102":12.7204,"103":1.0485,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 62 63 64 66 67 68 69 70 71 72 73 74 75 77 80 81 84 85 86 87 88 89 93 94 95 104 105 106"},F:{"85":0.03775,"86":0.47392,"87":0.2768,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00839,"100":0.01258,"101":0.43198,"102":6.37488,"103":0.63329,_:"12 13 14 15 16 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99"},E:{"4":0,"13":0.00839,"14":0.05872,"15":0.04613,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.02097,"12.1":0.00839,"13.1":0.18034,"14.1":0.53683,"15.1":0.47392,"15.2-15.3":1.01075,"15.4":0.71717,"15.5":6.62652,"16.0":0.37746},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.01909,"11.0-11.2":0,"11.3-11.4":0.02545,"12.0-12.1":0.00636,"12.2-12.5":2.81516,"13.0-13.1":0.0159,"13.2":0,"13.3":0.17495,"13.4-13.7":0.11133,"14.0-14.4":0.29265,"14.5-14.8":2.42708,"15.0-15.1":1.79407,"15.2-15.3":4.47563,"15.4":2.96148,"15.5":16.53469,"16.0":0.10497},P:{"4":0.08275,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.38274,"8.2":0.01015,"9.2":0.02069,"10.1":0.01018,"11.1-11.2":0.14482,"12.0":0.02069,"13.0":0.0931,"14.0":0.16551,"15.0":0.10344,"16.0":0.91366,"17.0":1.01394},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.26543,"4.4":0,"4.4.3-4.4.4":0.03648},A:{"11":0.04613,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.03484},H:{"0":0},L:{"0":23.99139},S:{"2.5":0},R:{_:"0"},M:{"0":0.1974}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PN.js index d70389d372a8e8..ed9bb67c65c8d4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PN.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PN.js @@ -1 +1 @@ -module.exports={C:{_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 3.5 3.6"},D:{"81":57.14,"98":42.86,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 99 100 101"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4"},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":0,"15.2-15.3":0,"15.4":0},P:{"4":0.32855,"5.0-5.4":0.01065,"6.2-6.4":0.01012,"7.2-7.4":0.07505,"8.2":0.03083,"9.2":0.0106,"10.1":0.03037,"11.1-11.2":0.05299,"12.0":0.0106,"13.0":0.03179,"14.0":0.05299,"15.0":0.05299,"16.0":0.72069},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":0},S:{"2.5":0}}; +module.exports={C:{_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 3.5 3.6"},D:{"102":85.71,"103":14.29,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 104 105 106"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4 15.5 16.0"},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":0,"15.2-15.3":0,"15.4":0,"15.5":0,"16.0":0},P:{"4":0.32013,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.07457,"8.2":0.01015,"9.2":0.07129,"10.1":0.01018,"11.1-11.2":0.02134,"12.0":0.05092,"13.0":0.02134,"14.0":0.03201,"15.0":0.03201,"16.0":0.08537,"17.0":0.76831},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":0},S:{"2.5":0},R:{_:"0"},M:{"0":0}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PR.js index 343757b3cf0f45..63c961185e36a0 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PR.js @@ -1 +1 @@ -module.exports={C:{"52":0.04526,"73":0.04073,"78":0.0181,"90":0.05431,"91":0.03168,"95":0.03168,"96":0.93688,"97":1.29896,"98":0.01358,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 92 93 94 99 3.5 3.6"},D:{"25":0.00453,"49":0.03621,"54":0.01358,"58":0.00453,"63":0.00453,"65":0.00453,"68":0.00453,"71":0.00453,"75":0.01358,"76":0.0181,"78":0.00905,"79":0.06789,"80":0.00905,"81":0.00905,"83":0.0181,"84":0.03168,"85":0.00905,"86":0.03168,"87":0.49786,"88":0.0181,"89":0.05884,"90":0.0181,"91":0.02263,"92":0.04526,"93":0.05431,"94":0.11315,"95":0.08599,"96":0.47523,"97":7.62178,"98":16.76883,"99":0.0181,"100":0.00453,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 55 56 57 59 60 61 62 64 66 67 69 70 72 73 74 77 101"},F:{"82":0.17651,"83":0.64269,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.00905,"17":0.01358,"18":0.04526,"84":0.00453,"85":0.00905,"89":0.00453,"90":0.00905,"91":0.00453,"92":0.00905,"93":0.00453,"94":0.04526,"95":0.04526,"96":0.18104,"97":1.53431,"98":5.46288,_:"12 13 14 15 79 80 81 83 86 87 88"},E:{"4":0,"12":0.00905,"13":0.04979,"14":0.43902,"15":0.30324,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02716,"11.1":0.03621,"12.1":0.06789,"13.1":0.38924,"14.1":1.6882,"15.1":0.66985,"15.2-15.3":1.67009,"15.4":0.03168},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00775,"9.0-9.2":0.00258,"9.3":0.09036,"10.0-10.2":0,"10.3":0.03098,"11.0-11.2":0.07229,"11.3-11.4":0.0284,"12.0-12.1":0.01549,"12.2-12.5":0.35886,"13.0-13.1":0.02065,"13.2":0.01549,"13.3":0.05422,"13.4-13.7":0.23494,"14.0-14.4":0.83131,"14.5-14.8":4.41988,"15.0-15.1":4.05586,"15.2-15.3":15.44891,"15.4":0.11101},P:{"4":0.21935,"5.0-5.4":0.01065,"6.2-6.4":0.01012,"7.2-7.4":0.05223,"8.2":0.03083,"9.2":0.04178,"10.1":0.03037,"11.1-11.2":0.06267,"12.0":0.01045,"13.0":0.17757,"14.0":0.09401,"15.0":0.09401,"16.0":2.43379},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.01642},A:{"11":0.23535,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.2737},Q:{"10.4":0},O:{"0":0.00547},H:{"0":0.11401},L:{"0":24.77973},S:{"2.5":0}}; +module.exports={C:{"38":0.51051,"43":0.53053,"44":2.25726,"45":0.51552,"49":0.00501,"52":0.02503,"73":0.04505,"78":0.03003,"80":0.01502,"81":0.01001,"90":0.07508,"91":0.02002,"99":0.02503,"100":0.1952,"101":1.54154,"102":0.08008,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 47 48 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 82 83 84 85 86 87 88 89 92 93 94 95 96 97 98 103 104 3.5 3.6"},D:{"47":0.53053,"48":6.06606,"49":1.51151,"58":0.02002,"65":0.03504,"75":0.01001,"76":0.01001,"78":0.01001,"79":0.06507,"80":0.02002,"81":0.00501,"84":0.01001,"85":0.02002,"86":0.04004,"87":0.1952,"88":0.03504,"89":0.01502,"90":0.01001,"91":0.00501,"92":0.01001,"93":0.03003,"94":0.02002,"95":0.00501,"96":0.02503,"97":0.02503,"98":0.07007,"99":0.06507,"100":0.2953,"101":1.48148,"102":15.27526,"103":1.52152,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 50 51 52 53 54 55 56 57 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 77 83 104 105 106"},F:{"52":0.00501,"71":0.01001,"86":0.33033,"87":0.4955,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.18519,"13":0.18519,"15":0.00501,"17":0.00501,"18":0.01502,"84":0.00501,"85":0.01502,"92":0.00501,"94":0.01502,"95":0.00501,"96":0.01001,"97":0.02002,"98":0.01001,"99":0.02002,"100":0.05506,"101":0.67067,"102":3.999,"103":0.92092,_:"14 16 79 80 81 83 86 87 88 89 90 91 93"},E:{"4":0,"8":0.18018,"9":0.85586,"13":0.02002,"14":0.2002,"15":0.06507,_:"0 5 6 7 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02002,"11.1":0.02503,"12.1":0.04505,"13.1":0.3003,"14.1":0.58559,"15.1":0.13514,"15.2-15.3":0.11512,"15.4":0.9009,"15.5":2.80781,"16.0":0.01502},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.02423,"9.0-9.2":0.15504,"9.3":0.0969,"10.0-10.2":0,"10.3":0.02907,"11.0-11.2":0.01696,"11.3-11.4":0.02665,"12.0-12.1":0.00969,"12.2-12.5":0.19138,"13.0-13.1":0.01696,"13.2":0.00727,"13.3":0.03392,"13.4-13.7":0.10417,"14.0-14.4":0.42395,"14.5-14.8":1.55771,"15.0-15.1":0.56203,"15.2-15.3":1.04655,"15.4":3.61931,"15.5":16.15365,"16.0":0.06541},P:{"4":0.15814,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.03163,"8.2":0.01015,"9.2":0.02109,"10.1":0.01018,"11.1-11.2":0.04217,"12.0":0.05092,"13.0":0.06326,"14.0":0.06326,"15.0":0.03163,"16.0":0.23194,"17.0":2.10858},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.0107,"4.4":0,"4.4.3-4.4.4":0.06422},A:{"9":0.37037,"11":0.81582,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01499},H:{"0":0.07566},L:{"0":23.48837},S:{"2.5":0},R:{_:"0"},M:{"0":0.21978}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PS.js index a822cfbf6cf279..65aa71b7fd55e2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PS.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PS.js @@ -1 +1 @@ -module.exports={C:{"52":0.02036,"78":0.00291,"79":0.01163,"87":0.00582,"88":0.00291,"91":0.02036,"94":0.00291,"95":0.01745,"96":0.47691,"97":0.60777,"98":0.00872,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 81 82 83 84 85 86 89 90 92 93 99 3.5 3.6"},D:{"35":0.41294,"38":0.02036,"41":0.0349,"43":0.00582,"49":0.01745,"53":0.00582,"56":0.00291,"58":0.00582,"60":0.00582,"61":0.01454,"63":0.00872,"69":0.00582,"70":0.00291,"71":0.00872,"72":0.00872,"73":0.00291,"74":0.00582,"76":0.00291,"77":0.20938,"78":0.00582,"79":0.07561,"80":0.01745,"81":0.01745,"83":0.01163,"84":0.01745,"85":0.00872,"86":0.04653,"87":0.05525,"88":0.00872,"89":0.17739,"90":0.01745,"91":0.0378,"92":0.04071,"93":0.05816,"94":0.04071,"95":0.04944,"96":0.33151,"97":6.66223,"98":15.3019,"99":0.00582,"100":0.01454,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 40 42 44 45 46 47 48 50 51 52 54 55 57 59 62 64 65 66 67 68 75 101"},F:{"82":0.13377,"83":0.6543,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00291,"13":0.00291,"17":0.00582,"18":0.03199,"84":0.00582,"92":0.00872,"93":0.00291,"95":0.00872,"96":0.02036,"97":0.34314,"98":1.23008,_:"14 15 16 79 80 81 83 85 86 87 88 89 90 91 94"},E:{"4":0,"13":0.01454,"14":0.04362,"15":0.02908,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.00872,"12.1":0.00872,"13.1":0.02036,"14.1":0.12214,"15.1":0.09887,"15.2-15.3":0.15122},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00241,"6.0-6.1":0,"7.0-7.1":0.03047,"8.1-8.4":0.0016,"9.0-9.2":0,"9.3":0.03208,"10.0-10.2":0.0016,"10.3":0.01684,"11.0-11.2":0.00722,"11.3-11.4":0.01524,"12.0-12.1":0.02005,"12.2-12.5":0.27424,"13.0-13.1":0.00882,"13.2":0.00321,"13.3":0.02887,"13.4-13.7":0.09222,"14.0-14.4":0.3841,"14.5-14.8":1.69677,"15.0-15.1":1.30546,"15.2-15.3":4.07113,"15.4":0.02165},P:{"4":0.08236,"5.0-5.4":0.01065,"6.2-6.4":0.01065,"7.2-7.4":0.12354,"8.2":0.03083,"9.2":0.02059,"10.1":0.01029,"11.1-11.2":0.15442,"12.0":0.05147,"13.0":0.24708,"14.0":0.17501,"15.0":0.1956,"16.0":2.13103},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00278,"4.2-4.3":0.00972,"4.4":0,"4.4.3-4.4.4":0.12225},A:{"11":0.09887,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.0851},Q:{"10.4":0},O:{"0":0.07092},H:{"0":0.39614},L:{"0":54.16528},S:{"2.5":0}}; +module.exports={C:{"52":0.01312,"56":0.00328,"72":0.00656,"76":0.00328,"78":0.04593,"81":0.00656,"83":0.00328,"84":0.00656,"88":0.00656,"91":0.00984,"94":0.00656,"98":0.00328,"99":0.01969,"100":0.09843,"101":1.1057,"102":0.04922,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 77 79 80 82 85 86 87 89 90 92 93 95 96 97 103 104 3.5 3.6"},D:{"38":0.01969,"43":0.00328,"49":0.02297,"53":0.00328,"56":0.00656,"63":0.00656,"69":0.00656,"71":0.00656,"72":0.00328,"74":0.00984,"76":0.00656,"77":0.26248,"78":0.00984,"79":0.06562,"80":0.00984,"81":0.01641,"83":0.01312,"84":0.01969,"85":0.01312,"86":0.04922,"87":0.03609,"88":0.01641,"89":0.13452,"90":0.01641,"91":0.02297,"92":0.02625,"93":0.00984,"94":0.01312,"95":0.02625,"96":0.04593,"97":0.05578,"98":0.07218,"99":0.08859,"100":0.25592,"101":1.01383,"102":22.01879,"103":1.96204,"104":0.00984,"105":0.01969,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 54 55 57 58 59 60 61 62 64 65 66 67 68 70 73 75 106"},F:{"85":0.00984,"86":0.19358,"87":0.58074,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00656,"18":0.01641,"84":0.00328,"89":0.00328,"92":0.01969,"96":0.00656,"97":0.00984,"98":0.00984,"99":0.00656,"100":0.00984,"101":0.18046,"102":1.40755,"103":0.33466,_:"13 14 15 16 17 79 80 81 83 85 86 87 88 90 91 93 94 95"},E:{"4":0,"13":0.00656,"14":0.03609,"15":0.02297,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.00656,"13.1":0.02297,"14.1":0.16077,"15.1":0.03609,"15.2-15.3":0.04593,"15.4":0.15093,"15.5":0.43309},G:{"8":0,"3.2":0.00216,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.02264,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03127,"10.0-10.2":0.00108,"10.3":0.01402,"11.0-11.2":0.00539,"11.3-11.4":0.01617,"12.0-12.1":0.03342,"12.2-12.5":0.23397,"13.0-13.1":0.00647,"13.2":0.00431,"13.3":0.01725,"13.4-13.7":0.0744,"14.0-14.4":0.29328,"14.5-14.8":0.87228,"15.0-15.1":0.24907,"15.2-15.3":0.47549,"15.4":1.99471,"15.5":6.36796,"16.0":0.03666},P:{"4":0.05154,"5.0-5.4":0.01056,"6.2-6.4":0.03149,"7.2-7.4":0.08246,"8.2":0.01015,"9.2":0.02062,"10.1":0.01002,"11.1-11.2":0.18554,"12.0":0.03092,"13.0":0.19585,"14.0":0.24739,"15.0":0.08246,"16.0":0.30923,"17.0":2.44295},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00254,"4.2-4.3":0.00763,"4.4":0,"4.4.3-4.4.4":0.08391},A:{"11":0.09515,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.11424},H:{"0":0.5535},L:{"0":52.64489},S:{"2.5":0},R:{_:"0"},M:{"0":0.1008}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PT.js index 7e030db0b57720..3ab437597403df 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PT.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PT.js @@ -1 +1 @@ -module.exports={C:{"3":0.01273,"15":0.01273,"49":0.03819,"52":0.05092,"54":0.01273,"78":0.04456,"84":0.01273,"87":0.00637,"88":0.00637,"91":0.05729,"92":0.01273,"93":0.0191,"94":0.01273,"95":0.05729,"96":1.15207,"97":1.91587,"98":0.01273,_:"2 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 53 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 89 90 99 3.5 3.6"},D:{"23":0.02546,"38":0.00637,"43":0.36917,"49":0.10821,"59":0.00637,"63":0.00637,"65":0.00637,"67":0.00637,"68":0.01273,"69":0.0191,"70":0.00637,"71":0.0191,"73":0.01273,"75":0.00637,"76":0.01273,"77":0.01273,"78":0.01273,"79":0.04456,"80":0.02546,"81":0.01273,"83":0.01273,"84":0.04456,"85":0.02546,"86":0.04456,"87":0.17822,"88":0.02546,"89":0.07638,"90":0.09548,"91":0.12094,"92":0.05092,"93":0.35008,"94":0.08275,"95":0.11457,"96":0.40736,"97":12.78092,"98":29.53997,"99":0.02546,"100":0.01273,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 53 54 55 56 57 58 60 61 62 64 66 72 74 101"},F:{"82":1.46395,"83":3.11249,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01273,"18":0.01273,"84":0.00637,"89":0.01273,"90":0.00637,"91":0.00637,"92":0.01273,"93":0.00637,"94":0.01273,"95":0.0191,"96":0.05092,"97":1.26027,"98":4.62736,_:"12 13 14 16 17 79 80 81 83 85 86 87 88"},E:{"4":0,"13":0.03819,"14":0.20368,"15":0.16549,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00637,"11.1":0.02546,"12.1":0.03819,"13.1":0.22914,"14.1":0.62377,"15.1":0.37554,"15.2-15.3":0.84018,"15.4":0.01273},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00176,"5.0-5.1":0,"6.0-6.1":0.00176,"7.0-7.1":0.00088,"8.1-8.4":0.00616,"9.0-9.2":0,"9.3":0.06244,"10.0-10.2":0,"10.3":0.06419,"11.0-11.2":0.02902,"11.3-11.4":0.00703,"12.0-12.1":0.00528,"12.2-12.5":0.27348,"13.0-13.1":0.01847,"13.2":0.0044,"13.3":0.0255,"13.4-13.7":0.11168,"14.0-14.4":0.28492,"14.5-14.8":1.46064,"15.0-15.1":1.36654,"15.2-15.3":5.01329,"15.4":0.04837},P:{"4":0.01076,"5.0-5.4":0.01065,"6.2-6.4":0.01012,"7.2-7.4":0.02075,"8.2":0.03083,"9.2":0.12453,"10.1":0.03037,"11.1-11.2":0.01076,"12.0":0.01076,"13.0":0.04305,"14.0":0.05381,"15.0":0.04305,"16.0":1.46357},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00277,"4.2-4.3":0.00554,"4.4":0,"4.4.3-4.4.4":0.04985},A:{"11":0.37554,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.18175},Q:{"10.4":0},O:{"0":0.14177},H:{"0":0.20304},L:{"0":24.70845},S:{"2.5":0}}; +module.exports={C:{"48":0.01136,"52":0.04544,"78":0.03408,"85":0.01136,"87":0.01136,"88":0.01136,"91":0.0568,"94":0.00568,"95":0.00568,"97":0.02272,"98":0.00568,"99":0.01704,"100":0.29536,"101":2.55032,"102":0.09656,"103":0.00568,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 86 89 90 92 93 96 104 3.5 3.6"},D:{"23":0.03408,"49":0.06248,"63":0.01704,"65":0.00568,"67":0.01136,"68":0.01136,"69":0.06248,"70":0.00568,"71":0.01136,"76":0.01136,"77":0.01136,"79":0.04544,"80":0.01136,"81":0.01136,"83":0.00568,"84":0.03976,"85":0.02272,"86":0.01704,"87":0.06816,"88":0.01704,"89":0.07384,"90":0.06816,"91":0.1136,"92":0.02272,"93":0.01136,"94":0.02272,"95":0.03976,"96":0.05112,"97":0.04544,"98":0.06816,"99":0.13632,"100":0.31808,"101":1.91984,"102":31.59784,"103":2.96496,"104":0.01136,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 66 72 73 74 75 78 105 106"},F:{"84":0.01136,"85":0.0284,"86":2.03344,"87":2.1868,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00568,"18":0.01136,"89":0.00568,"92":0.00568,"96":0.01136,"97":0.01136,"98":0.01136,"99":0.01704,"100":0.0284,"101":0.67024,"102":4.54968,"103":0.97128,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 90 91 93 94 95"},E:{"4":0,"13":0.02272,"14":0.142,"15":0.0568,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.02272,"12.1":0.03408,"13.1":0.1988,"14.1":0.37488,"15.1":0.0852,"15.2-15.3":0.13064,"15.4":0.55096,"15.5":1.38024},G:{"8":0.00099,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00099,"6.0-6.1":0.00298,"7.0-7.1":0.00198,"8.1-8.4":0.00198,"9.0-9.2":0,"9.3":0.05753,"10.0-10.2":0.00099,"10.3":0.05257,"11.0-11.2":0.00794,"11.3-11.4":0.00893,"12.0-12.1":0.00496,"12.2-12.5":0.27179,"13.0-13.1":0.00893,"13.2":0.00298,"13.3":0.0248,"13.4-13.7":0.06844,"14.0-14.4":0.19938,"14.5-14.8":0.65268,"15.0-15.1":0.21723,"15.2-15.3":0.40768,"15.4":1.46605,"15.5":6.38002,"16.0":0.04464},P:{"4":0.01065,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.07457,"8.2":0.01015,"9.2":0.07129,"10.1":0.01018,"11.1-11.2":0.0213,"12.0":0.05092,"13.0":0.04261,"14.0":0.03196,"15.0":0.0213,"16.0":0.12782,"17.0":1.57646},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00261,"4.2-4.3":0.00912,"4.4":0,"4.4.3-4.4.4":0.07037},A:{"11":0.1988,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.17284},H:{"0":0.225},L:{"0":27.98631},S:{"2.5":0},R:{_:"0"},M:{"0":0.24198}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PW.js index c7f6eb159579a1..8b3392fab3fb9f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PW.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PW.js @@ -1 +1 @@ -module.exports={C:{"92":0.04309,"96":0.89408,"97":0.8456,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 93 94 95 98 99 3.5 3.6"},D:{"33":0.01077,"43":0.0754,"48":0.01077,"49":0.01077,"58":0.02154,"68":0.09695,"75":0.7325,"76":0.0377,"78":0.02693,"79":0.25314,"81":0.64632,"85":0.01616,"86":0.01077,"87":0.28007,"89":0.08618,"90":0.09695,"91":0.05925,"93":0.06463,"94":0.03232,"95":0.02154,"96":1.01795,"97":13.10414,"98":25.16339,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 44 45 46 47 50 51 52 53 54 55 56 57 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 77 80 83 84 88 92 99 100 101"},F:{"79":0.11311,"82":0.02154,"83":0.15619,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.02154,"18":0.01077,"89":0.01077,"96":0.2693,"97":1.08797,"98":2.97846,_:"12 13 15 16 17 79 80 81 83 84 85 86 87 88 90 91 92 93 94 95"},E:{"4":0,"11":0.04847,"13":0.01077,"14":0.17235,"15":0.08618,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 11.1 15.4","10.1":0.05386,"12.1":0.03232,"13.1":0.17774,"14.1":1.52962,"15.1":0.19928,"15.2-15.3":1.10952},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00335,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00335,"10.0-10.2":0.00335,"10.3":0.43827,"11.0-11.2":0,"11.3-11.4":0.02683,"12.0-12.1":0.00335,"12.2-12.5":0.29293,"13.0-13.1":0,"13.2":0,"13.3":0.08162,"13.4-13.7":0.03019,"14.0-14.4":0.25715,"14.5-14.8":3.30942,"15.0-15.1":1.58427,"15.2-15.3":5.01556,"15.4":0.12522},P:{"4":0.21296,"5.0-5.4":0.01065,"6.2-6.4":0.01065,"7.2-7.4":0.46249,"8.2":0.03083,"9.2":0.0213,"10.1":0.01028,"11.1-11.2":0.02056,"12.0":0.0213,"13.0":0.08519,"14.0":0.15416,"15.0":0.29805,"16.0":3.07297},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.12926,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.24905},Q:{"10.4":0},O:{"0":0.17987},H:{"0":0.75974},L:{"0":31.12102},S:{"2.5":0}}; +module.exports={C:{"89":0.05593,"91":0.02581,"93":0.0043,"98":0.05593,"99":0.54635,"100":0.0086,"101":0.30974,"102":0.0086,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 92 94 95 96 97 103 104 3.5 3.6"},D:{"71":0.01721,"75":0.01291,"76":0.01721,"79":0.16348,"80":0.01291,"83":0.01721,"84":0.04732,"86":0.4345,"87":0.0086,"93":0.09895,"94":0.0086,"95":0.0043,"96":1.31641,"98":0.03872,"99":0.02581,"100":0.10325,"101":2.81781,"102":20.77866,"103":2.42203,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 72 73 74 77 78 81 85 88 89 90 91 92 97 104 105 106"},F:{"28":0.20219,"86":0.01291,"87":0.03442,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.01291,"89":0.0043,"92":0.01291,"95":0.0086,"99":0.0086,"100":0.05593,"101":0.26242,"102":1.4971,"103":0.63239,_:"12 13 14 15 16 18 79 80 81 83 84 85 86 87 88 90 91 93 94 96 97 98"},E:{"4":0,"11":0.01721,"14":0.12906,"15":0.07313,_:"0 5 6 7 8 9 10 12 13 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.0086,"11.1":0.0043,"12.1":0.06453,"13.1":1.14433,"14.1":1.63906,"15.1":0.03872,"15.2-15.3":0.09034,"15.4":0.88191,"15.5":1.26049},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.07316,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0.00443,"12.0-12.1":0,"12.2-12.5":0.30152,"13.0-13.1":0,"13.2":0,"13.3":0.02882,"13.4-13.7":0.07981,"14.0-14.4":0.18623,"14.5-14.8":1.25929,"15.0-15.1":0.17736,"15.2-15.3":0.61856,"15.4":6.31641,"15.5":12.94986,"16.0":0.01774},P:{"4":0.19006,"5.0-5.4":0.01056,"6.2-6.4":0.03149,"7.2-7.4":0.13286,"8.2":0.01015,"9.2":0.02044,"10.1":0.01002,"11.1-11.2":0.02044,"12.0":0.01056,"13.0":0.08447,"14.0":0.03066,"15.0":0.04224,"16.0":0.0511,"17.0":2.07458},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.03418},A:{"11":1.75952,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.05127},H:{"0":0.09708},L:{"0":35.90915},S:{"2.5":0},R:{_:"0"},M:{"0":0.02849}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PY.js index 4659e82e197a5a..04a919150f91f2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PY.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PY.js @@ -1 +1 @@ -module.exports={C:{"24":0.03432,"30":0.00644,"35":0.11154,"43":0.00215,"47":0.00429,"52":0.3239,"56":0.00215,"60":0.00429,"61":0.00215,"64":0.00429,"65":0.00215,"66":0.00215,"68":0.01502,"69":0.00858,"72":0.00858,"73":0.03218,"77":0.01073,"78":0.00429,"86":0.00644,"88":0.01716,"89":0.00644,"90":0.01073,"91":0.01073,"92":0.00215,"93":0.01287,"94":0.00644,"95":0.01716,"96":0.37109,"97":0.60275,"98":0.00429,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 31 32 33 34 36 37 38 39 40 41 42 44 45 46 48 49 50 51 53 54 55 57 58 59 62 63 67 70 71 74 75 76 79 80 81 82 83 84 85 87 99 3.5 3.6"},D:{"11":0.00858,"31":0.00644,"35":0.00215,"38":0.00858,"41":0.00215,"47":0.03432,"49":0.02789,"52":0.00215,"53":0.00215,"54":0.00215,"55":0.00215,"63":0.00429,"64":0.18447,"65":0.02145,"66":0.00429,"69":0.00858,"70":0.00215,"71":0.01073,"72":0.00215,"73":0.00429,"74":0.00215,"75":0.00644,"76":0.00429,"77":0.00429,"78":0.00429,"79":0.07508,"80":0.00644,"81":0.01073,"83":0.00858,"84":0.00644,"85":0.01931,"86":0.02145,"87":0.18876,"88":0.01716,"89":0.0236,"90":0.01502,"91":0.07293,"92":0.0429,"93":0.0429,"94":0.02574,"95":0.03218,"96":0.57057,"97":4.15058,"98":10.24238,"99":0.00215,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 36 37 39 40 42 43 44 45 46 48 50 51 56 57 58 59 60 61 62 67 68 100 101"},F:{"36":0.00429,"76":0.00429,"78":0.00429,"82":0.21665,"83":0.66495,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00215,"15":0.00429,"17":0.00429,"18":0.00858,"84":0.00429,"89":0.00215,"92":0.01073,"95":0.00858,"96":0.01073,"97":0.28314,"98":0.9867,_:"12 13 16 79 80 81 83 85 86 87 88 90 91 93 94"},E:{"4":0,"13":0.00215,"14":0.02145,"15":0.01931,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.4","5.1":0.04505,"12.1":0.00215,"13.1":0.05363,"14.1":0.09867,"15.1":0.07508,"15.2-15.3":0.09009},G:{"8":0,"3.2":0.00179,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00313,"6.0-6.1":0,"7.0-7.1":0.02415,"8.1-8.4":0.00089,"9.0-9.2":0.00224,"9.3":0.00716,"10.0-10.2":0.00134,"10.3":0.01387,"11.0-11.2":0.00626,"11.3-11.4":0.01208,"12.0-12.1":0.00358,"12.2-12.5":0.23976,"13.0-13.1":0.00403,"13.2":0.00134,"13.3":0.01118,"13.4-13.7":0.05457,"14.0-14.4":0.15566,"14.5-14.8":0.97379,"15.0-15.1":0.68885,"15.2-15.3":2.25353,"15.4":0.01029},P:{"4":0.50616,"5.0-5.4":0.01065,"6.2-6.4":0.01012,"7.2-7.4":0.64788,"8.2":0.03083,"9.2":0.08098,"10.1":0.03037,"11.1-11.2":0.21259,"12.0":0.07086,"13.0":0.25308,"14.0":0.32394,"15.0":0.27332,"16.0":2.35868},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00269,"4.2-4.3":0.00539,"4.4":0,"4.4.3-4.4.4":0.08618},A:{"8":0.00644,"11":0.07937,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.08641},Q:{"10.4":0},O:{"0":0.04713},H:{"0":0.18592},L:{"0":60.80205},S:{"2.5":0}}; +module.exports={C:{"24":0.00908,"30":0.00681,"35":0.07949,"43":0.00454,"45":0.00908,"47":0.00454,"52":0.24073,"60":0.00227,"61":0.00227,"62":0.00227,"64":0.00681,"65":0.00227,"66":0.00227,"68":0.00227,"69":0.00454,"72":0.00681,"73":0.03407,"78":0.00681,"84":0.00227,"86":0.0159,"88":0.0159,"89":0.00454,"91":0.01363,"93":0.00454,"94":0.00454,"95":0.00454,"96":0.00454,"97":0.00454,"98":0.00681,"99":0.04542,"100":0.09765,"101":0.94019,"102":0.03861,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 31 32 33 34 36 37 38 39 40 41 42 44 46 48 49 50 51 53 54 55 56 57 58 59 63 67 70 71 74 75 76 77 79 80 81 82 83 85 87 90 92 103 104 3.5 3.6"},D:{"38":0.00681,"47":0.0159,"49":0.03407,"52":0.00454,"55":0.00227,"64":0.0704,"65":0.02725,"68":0.00454,"69":0.00681,"70":0.00681,"71":0.00454,"73":0.00227,"74":0.00681,"75":0.00681,"76":0.00454,"77":0.00681,"78":0.00227,"79":0.05678,"80":0.00681,"81":0.00908,"83":0.01136,"84":0.00454,"85":0.00908,"86":0.02725,"87":0.71537,"88":0.00681,"89":0.04315,"90":0.01363,"91":0.11582,"92":0.03407,"93":0.0159,"94":0.01136,"95":0.02271,"96":0.05223,"97":0.05223,"98":0.0704,"99":0.04996,"100":0.14989,"101":0.88342,"102":13.12411,"103":1.23088,"104":0.00227,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 53 54 56 57 58 59 60 61 62 63 66 67 72 105 106"},F:{"36":0.00454,"85":0.02498,"86":0.32248,"87":0.50416,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00454,"16":0.01136,"18":0.01136,"84":0.00227,"89":0.00227,"91":0.02044,"92":0.01136,"96":0.00227,"98":0.00908,"99":0.00227,"100":0.01363,"101":0.14534,"102":1.14686,"103":0.25889,_:"12 13 15 17 79 80 81 83 85 86 87 88 90 93 94 95 97"},E:{"4":0,"13":0.00681,"14":0.0159,"15":0.01817,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 16.0","5.1":0.01363,"12.1":0.00227,"13.1":0.02498,"14.1":0.05678,"15.1":0.01136,"15.2-15.3":0.03179,"15.4":0.06813,"15.5":0.19076},G:{"8":0,"3.2":0.00053,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00317,"6.0-6.1":0,"7.0-7.1":0.01481,"8.1-8.4":0.00053,"9.0-9.2":0.01005,"9.3":0.00899,"10.0-10.2":0.00053,"10.3":0.01269,"11.0-11.2":0.00899,"11.3-11.4":0.00582,"12.0-12.1":0.00582,"12.2-12.5":0.23485,"13.0-13.1":0.00688,"13.2":0.00423,"13.3":0.01428,"13.4-13.7":0.05448,"14.0-14.4":0.16926,"14.5-14.8":0.42526,"15.0-15.1":0.08727,"15.2-15.3":0.15339,"15.4":0.67333,"15.5":3.364,"16.0":0.01269},P:{"4":0.29533,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.71286,"8.2":0.01015,"9.2":0.07129,"10.1":0.01018,"11.1-11.2":0.16294,"12.0":0.05092,"13.0":0.17312,"14.0":0.5601,"15.0":0.15276,"16.0":0.54992,"17.0":2.16913},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00843,"4.2-4.3":0.00562,"4.4":0,"4.4.3-4.4.4":0.07871},A:{"11":0.0545,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.03865},H:{"0":0.161},L:{"0":67.41876},S:{"2.5":0},R:{_:"0"},M:{"0":0.05411}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/QA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/QA.js index ac8465ba70d72e..6b40116851a78a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/QA.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/QA.js @@ -1 +1 @@ -module.exports={C:{"38":0.03135,"52":0.00314,"78":0.00627,"84":0.00314,"89":0.00627,"91":0.02822,"94":0.00314,"95":0.00941,"96":0.24767,"97":0.41069,"98":0.00314,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 90 92 93 99 3.5 3.6"},D:{"34":0.00314,"38":0.01568,"39":0.00314,"41":0.00627,"49":0.02822,"53":0.00627,"61":0.00314,"65":0.00627,"67":0.00627,"68":0.01568,"69":0.00627,"71":0.00314,"73":0.00627,"74":0.01254,"75":0.00941,"76":0.00627,"77":0.00314,"78":0.00941,"79":0.05957,"80":0.00941,"81":0.00627,"83":0.00941,"84":0.01881,"85":0.00941,"86":0.03449,"87":0.05643,"88":0.01881,"89":0.02195,"90":0.01568,"91":0.02822,"92":0.07524,"93":0.04703,"94":0.04389,"95":0.09092,"96":0.31037,"97":6.37032,"98":15.20162,"99":0.01568,"100":0.00941,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 40 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 62 63 64 66 70 72 101"},F:{"28":0.01568,"46":0.00627,"82":0.16616,"83":0.47339,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00314,"16":0.00314,"17":0.00941,"18":0.03135,"84":0.01254,"85":0.01881,"91":0.00941,"92":0.00941,"93":0.00314,"94":0.00941,"95":0.02822,"96":0.04389,"97":0.60506,"98":2.11299,_:"12 13 14 79 80 81 83 86 87 88 89 90"},E:{"4":0,"12":0.00627,"13":0.02822,"14":0.17243,"15":0.16616,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00627,"12.1":0.02195,"13.1":0.12854,"14.1":0.64895,"15.1":0.36366,"15.2-15.3":0.73359,"15.4":0.00941},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00274,"6.0-6.1":0.00274,"7.0-7.1":0.01233,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.0507,"10.0-10.2":0.00137,"10.3":0.03699,"11.0-11.2":0.03562,"11.3-11.4":0.01233,"12.0-12.1":0.00548,"12.2-12.5":0.27815,"13.0-13.1":0.0137,"13.2":0.00411,"13.3":0.04385,"13.4-13.7":0.16031,"14.0-14.4":0.55355,"14.5-14.8":2.04156,"15.0-15.1":2.01142,"15.2-15.3":8.35397,"15.4":0.06988},P:{"4":0.12427,"5.0-5.4":0.01065,"6.2-6.4":0.01012,"7.2-7.4":0.05178,"8.2":0.03083,"9.2":0.04178,"10.1":0.03037,"11.1-11.2":0.07249,"12.0":0.01036,"13.0":0.04142,"14.0":0.0932,"15.0":0.11391,"16.0":1.99866},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00294,"4.4":0,"4.4.3-4.4.4":0.01766},A:{"11":0.16929,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.08926},Q:{"10.4":0},O:{"0":4.0784},H:{"0":0.98804},L:{"0":46.01359},S:{"2.5":0}}; +module.exports={C:{"38":0.07142,"52":0.00298,"78":0.00595,"79":0.00298,"84":0.00298,"91":0.02083,"98":0.00298,"99":0.01488,"100":0.0625,"101":0.54461,"102":0.02381,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 81 82 83 85 86 87 88 89 90 92 93 94 95 96 97 103 104 3.5 3.6"},D:{"38":0.01488,"41":0.00893,"49":0.0119,"53":0.00298,"65":0.0119,"67":0.00595,"68":0.00893,"69":0.00893,"71":0.00893,"74":0.01786,"75":0.0119,"76":0.0119,"78":0.00893,"79":0.05952,"80":0.00893,"81":0.00298,"83":0.00893,"84":0.01786,"85":0.00595,"86":0.02976,"87":0.06845,"88":0.00893,"89":0.04166,"90":0.00893,"91":0.04762,"92":0.02678,"93":0.02976,"94":0.0119,"95":0.00893,"96":0.03274,"97":0.03274,"98":0.03869,"99":0.11904,"100":0.14285,"101":1.12195,"102":17.46614,"103":1.74691,"104":0.00893,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 63 64 66 70 72 73 77 105 106"},F:{"28":0.00893,"40":0.01786,"46":0.00893,"85":0.01786,"86":0.2351,"87":0.38093,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00595,"18":0.01488,"84":0.00298,"85":0.00893,"92":0.00595,"94":0.00595,"95":0.00595,"96":0.0119,"97":0.01488,"98":0.00893,"99":0.02678,"100":0.02976,"101":0.36307,"102":1.98797,"103":0.42854,_:"12 13 14 15 16 79 80 81 83 86 87 88 89 90 91 93"},E:{"4":0,"13":0.02083,"14":0.10714,"15":0.05059,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00893,"12.1":0.01786,"13.1":0.0744,"14.1":0.27677,"15.1":0.05654,"15.2-15.3":0.05357,"15.4":0.44342,"15.5":0.98208,"16.0":0.00595},G:{"8":0.00388,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00258,"6.0-6.1":0.00129,"7.0-7.1":0.0155,"8.1-8.4":0,"9.0-9.2":0.00129,"9.3":0.03747,"10.0-10.2":0,"10.3":0.0478,"11.0-11.2":0.01034,"11.3-11.4":0.00646,"12.0-12.1":0.00258,"12.2-12.5":0.21446,"13.0-13.1":0.00775,"13.2":0.00258,"13.3":0.0323,"13.4-13.7":0.08914,"14.0-14.4":0.31006,"14.5-14.8":0.78032,"15.0-15.1":0.34753,"15.2-15.3":0.6408,"15.4":1.80095,"15.5":8.4337,"16.0":0.0633},P:{"4":0.06274,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.05228,"8.2":0.01015,"9.2":0.02109,"10.1":0.01018,"11.1-11.2":0.04182,"12.0":0.01046,"13.0":0.03137,"14.0":0.06274,"15.0":0.03137,"16.0":0.14638,"17.0":2.36303},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.03512},A:{"11":0.07738,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":3.25867},H:{"0":0.97074},L:{"0":51.20751},S:{"2.5":0},R:{_:"0"},M:{"0":0.09832}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RE.js index 0b4b1e861f8fbc..f896f0af60a867 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RE.js @@ -1 +1 @@ -module.exports={C:{"11":0.00445,"23":0.00445,"32":0.01335,"45":0.00445,"48":0.0178,"49":0.0178,"52":0.02225,"54":0.0089,"55":0.0089,"56":0.0089,"60":0.0178,"61":0.0356,"66":0.0089,"68":0.01335,"72":0.0089,"78":0.20915,"80":0.00445,"82":0.01335,"85":0.0089,"88":0.0267,"89":0.12015,"90":0.0089,"91":0.1424,"93":0.0089,"94":0.0178,"95":0.0534,"96":1.87345,"97":3.4087,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 33 34 35 36 37 38 39 40 41 42 43 44 46 47 50 51 53 57 58 59 62 63 64 65 67 69 70 71 73 74 75 76 77 79 81 83 84 86 87 92 98 99 3.5 3.6"},D:{"34":0.0178,"46":0.00445,"47":0.0089,"49":0.0801,"54":0.01335,"57":0.00445,"58":0.01335,"61":0.02225,"62":0.00445,"63":0.00445,"65":0.0178,"67":0.0089,"69":0.00445,"70":0.0089,"71":0.0178,"74":0.00445,"76":0.04005,"77":0.0089,"78":0.00445,"79":0.13795,"80":0.0267,"81":0.0089,"83":0.04005,"84":0.0178,"85":0.0267,"86":0.0178,"87":0.0801,"88":0.00445,"89":0.02225,"90":0.01335,"91":0.0267,"92":0.04005,"93":0.01335,"94":0.0356,"95":0.0801,"96":0.3649,"97":6.3813,"98":16.39825,"100":0.00445,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 48 50 51 52 53 55 56 59 60 64 66 68 72 73 75 99 101"},F:{"28":0.0089,"46":0.00445,"82":0.2581,"83":1.07245,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00445,"16":0.00445,"17":0.1691,"18":0.0267,"84":0.0178,"86":0.0089,"89":0.00445,"90":0.00445,"92":0.01335,"94":0.04895,"95":0.0178,"96":0.0534,"97":1.1214,"98":4.10735,_:"12 13 14 79 80 81 83 85 87 88 91 93"},E:{"4":0,"11":0.01335,"12":0.0178,"13":0.0712,"14":0.36935,"15":0.20025,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.00445,"10.1":0.01335,"11.1":0.06675,"12.1":0.1246,"13.1":0.57405,"14.1":1.2549,"15.1":0.8544,"15.2-15.3":1.18815,"15.4":0.00445},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01055,"8.1-8.4":0.00176,"9.0-9.2":0,"9.3":0.14423,"10.0-10.2":0.01231,"10.3":0.08619,"11.0-11.2":0.0299,"11.3-11.4":0.01583,"12.0-12.1":0.02638,"12.2-12.5":0.48369,"13.0-13.1":0.07739,"13.2":0.00528,"13.3":0.05453,"13.4-13.7":0.19875,"14.0-14.4":0.68948,"14.5-14.8":3.10267,"15.0-15.1":2.72451,"15.2-15.3":9.83039,"15.4":0.08619},P:{"4":0.06207,"5.0-5.4":0.01065,"6.2-6.4":0.01012,"7.2-7.4":0.10345,"8.2":0.03083,"9.2":0.01035,"10.1":0.03037,"11.1-11.2":0.17587,"12.0":0.01035,"13.0":0.10345,"14.0":0.14483,"15.0":0.14483,"16.0":2.65868},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00171,"4.2-4.3":0.00114,"4.4":0,"4.4.3-4.4.4":0.036},A:{"11":0.1246,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.35526},Q:{"10.4":0},O:{"0":0.15543},H:{"0":0.16817},L:{"0":34.4385},S:{"2.5":0}}; +module.exports={C:{"11":0.00431,"48":0.00862,"49":0.02586,"52":0.02155,"55":0.03448,"56":0.01724,"57":0.00862,"60":0.02586,"68":0.01293,"74":0.02586,"78":0.10775,"88":0.00862,"89":0.12499,"91":0.18964,"94":0.00431,"95":0.00431,"96":0.02155,"97":0.02586,"98":0.01293,"99":0.06896,"100":0.58185,"101":4.29707,"102":0.15085,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 50 51 53 54 58 59 61 62 63 64 65 66 67 69 70 71 72 73 75 76 77 79 80 81 82 83 84 85 86 87 90 92 93 103 104 3.5 3.6"},D:{"34":0.00862,"38":0.00431,"46":0.00862,"47":0.05172,"49":0.03017,"54":0.00862,"62":0.00431,"63":0.00862,"67":0.01293,"68":0.01724,"71":0.01293,"74":0.00431,"76":0.03448,"79":0.05603,"80":0.01293,"81":0.00862,"83":0.00431,"84":0.02155,"85":0.00862,"86":0.00862,"87":0.10344,"88":0.00431,"89":0.03017,"90":0.01293,"91":0.01293,"92":0.06465,"93":0.00431,"94":0.01293,"95":0.02155,"96":0.08189,"97":0.03017,"98":0.03879,"99":0.09482,"100":0.26291,"101":1.06888,"102":20.08891,"103":1.62056,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 48 50 51 52 53 55 56 57 58 59 60 61 64 65 66 69 70 72 73 75 77 78 104 105 106"},F:{"28":0.01724,"85":0.02155,"86":0.46117,"87":1.30593,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.01724,"17":0.00862,"18":0.01724,"84":0.00862,"91":0.00862,"92":0.02155,"97":0.01293,"98":0.01293,"99":0.00862,"100":0.02155,"101":0.5172,"102":3.74539,"103":0.74994,_:"12 13 14 15 79 80 81 83 85 86 87 88 89 90 93 94 95 96"},E:{"4":0,"12":0.00862,"13":0.02586,"14":0.1724,"15":0.05603,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.00862,"10.1":0.00862,"11.1":0.03448,"12.1":0.05603,"13.1":0.36204,"14.1":0.59478,"15.1":0.10775,"15.2-15.3":0.20257,"15.4":0.71115,"15.5":1.69814},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00466,"8.1-8.4":0.00466,"9.0-9.2":0.00155,"9.3":0.14431,"10.0-10.2":0.01086,"10.3":0.05276,"11.0-11.2":0.00621,"11.3-11.4":0.00931,"12.0-12.1":0.02793,"12.2-12.5":0.37396,"13.0-13.1":0.01552,"13.2":0.0031,"13.3":0.02638,"13.4-13.7":0.10707,"14.0-14.4":0.36465,"14.5-14.8":0.96982,"15.0-15.1":0.405,"15.2-15.3":0.56017,"15.4":2.70464,"15.5":9.55546,"16.0":0.07759},P:{"4":0.01042,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.0625,"8.2":0.01015,"9.2":0.02083,"10.1":0.01018,"11.1-11.2":0.10417,"12.0":0.01042,"13.0":0.05208,"14.0":0.125,"15.0":0.05208,"16.0":0.38542,"17.0":2.50003},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00254,"4.2-4.3":0.00847,"4.4":0,"4.4.3-4.4.4":0.02881},A:{"11":0.07758,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.52348},H:{"0":0.2478},L:{"0":38.34263},S:{"2.5":0},R:{_:"0"},M:{"0":0.3414}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RO.js index 0dd3dce7d820d7..1beaf03be7de9e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RO.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RO.js @@ -1 +1 @@ -module.exports={C:{"52":0.17475,"55":0.00406,"68":0.00406,"72":0.00813,"78":0.02438,"79":0.00406,"81":0.00406,"82":0.00406,"84":0.02032,"88":0.01626,"89":0.00813,"90":0.00406,"91":0.06909,"92":0.00813,"93":0.00813,"94":0.01626,"95":0.04064,"96":1.11354,"97":1.79629,"98":0.01219,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 80 83 85 86 87 99 3.5 3.6"},D:{"38":0.00406,"49":0.13411,"51":0.01626,"60":0.34544,"61":0.00813,"67":0.01626,"68":0.00406,"69":0.08941,"70":0.00813,"71":0.01219,"72":0.00813,"73":0.00406,"74":0.00813,"75":0.00813,"76":0.02032,"77":0.00813,"78":0.01626,"79":0.04877,"80":0.01219,"81":0.03251,"83":0.01626,"84":0.04064,"85":0.02845,"86":0.03658,"87":0.10566,"88":0.02845,"89":0.03251,"90":0.04064,"91":0.04877,"92":0.04877,"93":0.32512,"94":0.06096,"95":0.05283,"96":0.34138,"97":8.5913,"98":19.26336,"99":0.01219,"100":0.00813,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 52 53 54 55 56 57 58 59 62 63 64 65 66 101"},F:{"36":0.00406,"78":0.00406,"82":0.53238,"83":1.99949,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01626,"84":0.00406,"89":0.00406,"92":0.00813,"94":0.00406,"95":0.01219,"96":0.02438,"97":0.508,"98":1.81254,_:"12 13 14 15 16 17 79 80 81 83 85 86 87 88 90 91 93"},E:{"4":0,"13":0.05283,"14":0.06909,"15":0.04877,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.00406,"11.1":0.00813,"12.1":0.02032,"13.1":0.06502,"14.1":0.20726,"15.1":0.12192,"15.2-15.3":0.27229,"15.4":0.00406},G:{"8":0,"3.2":0.01833,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.06987,"6.0-6.1":0.00115,"7.0-7.1":0.00573,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03092,"10.0-10.2":0.00229,"10.3":0.03551,"11.0-11.2":0.00916,"11.3-11.4":0.01603,"12.0-12.1":0.01718,"12.2-12.5":0.27259,"13.0-13.1":0.01374,"13.2":0.00687,"13.3":0.05039,"13.4-13.7":0.16035,"14.0-14.4":0.51655,"14.5-14.8":2.12461,"15.0-15.1":1.78215,"15.2-15.3":6.2444,"15.4":0.06872},P:{"4":0.09337,"5.0-5.4":0.01065,"6.2-6.4":0.01012,"7.2-7.4":0.10345,"8.2":0.03083,"9.2":0.01037,"10.1":0.03037,"11.1-11.2":0.11412,"12.0":0.0415,"13.0":0.12449,"14.0":0.31123,"15.0":0.16599,"16.0":3.16421},I:{"0":0,"3":0,"4":0.0147,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.01715,"4.4":0,"4.4.3-4.4.4":0.12251},A:{"11":0.28854,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.2078},Q:{"10.4":0},O:{"0":0.0475},H:{"0":0.2698},L:{"0":43.38381},S:{"2.5":0}}; +module.exports={C:{"52":0.11323,"68":0.02178,"78":0.01307,"80":0.00436,"81":0.00436,"84":0.00871,"88":0.00871,"89":0.00436,"90":0.00436,"91":0.05662,"94":0.00436,"95":0.00871,"96":0.00871,"97":0.01307,"98":0.01307,"99":0.04791,"100":2.75236,"101":4.84276,"102":0.10452,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 82 83 85 86 87 92 93 103 104 3.5 3.6"},D:{"38":0.00436,"39":0.00436,"49":0.07404,"51":0.01307,"53":0.00436,"58":0.00871,"60":0.41373,"61":0.00871,"64":0.64019,"66":0.03049,"67":0.00436,"69":0.10452,"70":0.00436,"71":0.01742,"74":0.00871,"75":0.00871,"76":0.01742,"77":0.00871,"78":0.00871,"79":0.04355,"80":0.01307,"81":0.01742,"83":0.02613,"84":0.03484,"85":0.02178,"86":0.03484,"87":0.08275,"88":0.01307,"89":0.02178,"90":0.02613,"91":0.0392,"92":0.04791,"93":0.01742,"94":0.01742,"95":0.01742,"96":0.04355,"97":0.05226,"98":0.06097,"99":0.07839,"100":0.20904,"101":1.37183,"102":22.52842,"103":1.97717,"104":0.00871,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 47 48 50 52 54 55 56 57 59 62 63 65 68 72 73 105 106"},F:{"46":0.00436,"84":0.00871,"85":0.55744,"86":0.74471,"87":1.11488,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.01742,"92":0.00871,"94":0.00436,"96":0.00871,"97":0.00871,"98":0.00871,"99":0.00871,"100":0.01742,"101":0.24388,"102":1.76378,"103":0.36582,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 95"},E:{"4":0,"13":0.00871,"14":0.04791,"15":0.01742,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00436,"12.1":0.01307,"13.1":0.06533,"14.1":0.12194,"15.1":0.03484,"15.2-15.3":0.03484,"15.4":0.15678,"15.5":0.41373},G:{"8":0,"3.2":0.02188,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.07987,"6.0-6.1":0,"7.0-7.1":0.00328,"8.1-8.4":0,"9.0-9.2":0.00109,"9.3":0.02954,"10.0-10.2":0.00109,"10.3":0.03283,"11.0-11.2":0.00547,"11.3-11.4":0.00875,"12.0-12.1":0.01204,"12.2-12.5":0.21993,"13.0-13.1":0.00875,"13.2":0.00547,"13.3":0.04048,"13.4-13.7":0.10176,"14.0-14.4":0.32278,"14.5-14.8":0.8644,"15.0-15.1":0.24509,"15.2-15.3":0.46831,"15.4":1.78241,"15.5":6.57817,"16.0":0.0558},P:{"4":0.09314,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.0625,"8.2":0.01015,"9.2":0.01035,"10.1":0.01018,"11.1-11.2":0.0621,"12.0":0.03105,"13.0":0.09314,"14.0":0.28978,"15.0":0.0621,"16.0":0.30013,"17.0":2.78393},I:{"0":0,"3":0,"4":0.00798,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00532,"4.2-4.3":0.03193,"4.4":0,"4.4.3-4.4.4":0.14104},A:{"8":0.00436,"9":0.00436,"11":0.18727,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.04516},H:{"0":0.29928},L:{"0":41.05694},S:{"2.5":0},R:{_:"0"},M:{"0":0.25967}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RS.js index 43daff16e5f608..5b420637a63762 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RS.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RS.js @@ -1 +1 @@ -module.exports={C:{"38":0.00352,"48":0.00704,"50":0.00704,"52":0.17248,"56":0.01056,"57":0.00352,"60":0.00704,"65":0.00704,"66":0.01408,"68":0.01056,"72":0.00704,"76":0.00704,"78":0.02464,"79":0.00704,"80":0.00352,"81":0.00352,"82":0.00704,"83":0.00704,"84":0.0176,"87":0.01056,"88":0.0352,"89":0.0176,"90":0.00704,"91":0.0352,"92":0.14432,"93":0.02816,"94":0.02464,"95":0.05984,"96":1.41152,"97":2.36896,"98":0.02816,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 49 51 53 54 55 58 59 61 62 63 64 67 69 70 71 73 74 75 77 85 86 99 3.5 3.6"},D:{"38":0.01056,"43":0.00352,"47":0.01408,"48":0.00352,"49":0.14784,"53":0.0176,"56":0.00352,"63":0.01056,"65":0.00704,"66":0.00352,"67":0.01056,"68":0.02112,"70":0.01408,"71":0.00352,"72":0.01056,"73":0.01056,"74":0.00704,"75":0.01056,"76":0.00704,"77":0.00704,"78":0.0176,"79":0.08448,"80":0.0176,"81":0.0176,"83":0.02816,"84":0.0528,"85":0.03872,"86":0.07392,"87":0.11968,"88":0.0352,"89":0.03872,"90":0.02112,"91":0.03872,"92":0.05632,"93":0.30624,"94":0.0528,"95":0.06688,"96":0.3344,"97":7.2864,"98":15.44576,"99":0.01056,"100":0.01408,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 50 51 52 54 55 57 58 59 60 61 62 64 69 101"},F:{"28":0.00704,"36":0.00704,"40":0.00352,"68":0.02112,"71":0.00704,"79":0.00352,"82":0.34144,"83":1.69664,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00352,"18":0.01408,"84":0.00352,"90":0.00352,"92":0.00704,"95":0.00352,"96":0.0176,"97":0.32032,"98":1.21088,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 89 91 93 94"},E:{"4":0,"13":0.02816,"14":0.06336,"15":0.03168,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.00704,"11.1":0.00704,"12.1":0.0176,"13.1":0.0704,"14.1":0.12672,"15.1":0.0528,"15.2-15.3":0.13728},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00129,"6.0-6.1":0,"7.0-7.1":0.02702,"8.1-8.4":0.00515,"9.0-9.2":0.00129,"9.3":0.03088,"10.0-10.2":0.00515,"10.3":0.07333,"11.0-11.2":0.02058,"11.3-11.4":0.03088,"12.0-12.1":0.01801,"12.2-12.5":0.63555,"13.0-13.1":0.02444,"13.2":0.01158,"13.3":0.08234,"13.4-13.7":0.26245,"14.0-14.4":0.70631,"14.5-14.8":3.29481,"15.0-15.1":1.63518,"15.2-15.3":5.95665,"15.4":0.03345},P:{"4":0.0314,"5.0-5.4":0.01034,"6.2-6.4":0.02028,"7.2-7.4":0.02094,"8.2":0.03042,"9.2":0.04056,"10.1":0.05069,"11.1-11.2":0.09421,"12.0":0.0314,"13.0":0.10468,"14.0":0.11514,"15.0":0.11514,"16.0":2.0726},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00336,"4.2-4.3":0.0084,"4.4":0,"4.4.3-4.4.4":0.0336},A:{"8":0.0153,"9":0.00765,"10":0.00383,"11":0.14922,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.17496},Q:{"10.4":0},O:{"0":0.02592},H:{"0":0.34969},L:{"0":46.34224},S:{"2.5":0}}; +module.exports={C:{"38":0.00346,"47":0.00346,"48":0.00346,"50":0.00346,"52":0.13824,"56":0.01037,"60":0.00691,"65":0.00346,"66":0.01728,"67":0.00346,"68":0.01037,"72":0.01382,"77":0.00691,"78":0.02074,"79":0.00346,"81":0.00691,"82":0.00346,"84":0.00691,"85":0.00691,"87":0.01037,"88":0.03802,"89":0.01382,"90":0.00691,"91":0.03456,"92":0.16589,"93":0.04493,"94":0.01037,"95":0.01728,"96":0.01037,"97":0.02765,"98":0.01728,"99":0.0864,"100":0.33869,"101":3.19334,"102":0.13824,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 49 51 53 54 55 57 58 59 61 62 63 64 69 70 71 73 74 75 76 80 83 86 103 104 3.5 3.6"},D:{"34":0.00346,"38":0.01037,"43":0.00346,"47":0.00691,"49":0.09677,"53":0.01037,"58":0.00691,"63":0.00691,"65":0.00691,"66":0.00346,"67":0.00691,"68":0.01728,"70":0.00691,"71":0.00691,"72":0.01382,"73":0.01037,"74":0.01382,"75":0.01728,"76":0.01382,"77":0.00691,"78":0.01728,"79":0.10022,"80":0.01382,"81":0.02419,"83":0.03456,"84":0.07949,"85":0.04838,"86":0.12096,"87":0.05875,"88":0.02419,"89":0.03802,"90":0.02419,"91":0.03456,"92":0.05184,"93":0.02419,"94":0.01728,"95":0.0311,"96":0.06221,"97":0.09677,"98":0.07258,"99":0.09331,"100":0.2281,"101":1.10592,"102":19.38816,"103":1.79366,"104":0.01382,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 44 45 46 48 50 51 52 54 55 56 57 59 60 61 62 64 69 105 106"},F:{"28":0.01037,"36":0.00691,"40":0.00346,"68":0.01037,"69":0.00346,"71":0.00346,"82":0.00346,"84":0.01382,"85":0.09677,"86":0.43546,"87":1.40659,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 70 72 73 74 75 76 77 78 79 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00346},B:{"18":0.00691,"85":0.00691,"92":0.00346,"96":0.00346,"97":0.00346,"99":0.01037,"100":0.00691,"101":0.15898,"102":1.1785,"103":0.24883,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 88 89 90 91 93 94 95 98"},E:{"4":0,"13":0.00691,"14":0.03802,"15":0.02074,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.00346,"11.1":0.01037,"12.1":0.00691,"13.1":0.05184,"14.1":0.09677,"15.1":0.02419,"15.2-15.3":0.02074,"15.4":0.11405,"15.5":0.29376},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0057,"6.0-6.1":0,"7.0-7.1":0.02708,"8.1-8.4":0.00713,"9.0-9.2":0,"9.3":0.01996,"10.0-10.2":0.00285,"10.3":0.0727,"11.0-11.2":0.01568,"11.3-11.4":0.02281,"12.0-12.1":0.01425,"12.2-12.5":0.50176,"13.0-13.1":0.02138,"13.2":0.00713,"13.3":0.05274,"13.4-13.7":0.19101,"14.0-14.4":0.47752,"14.5-14.8":1.83169,"15.0-15.1":0.34211,"15.2-15.3":0.63005,"15.4":1.99134,"15.5":7.95254,"16.0":0.03706},P:{"4":0.05176,"5.0-5.4":0.01042,"6.2-6.4":0.01024,"7.2-7.4":0.01035,"8.2":0.01015,"9.2":0.02048,"10.1":0.01024,"11.1-11.2":0.07246,"12.0":0.01035,"13.0":0.09316,"14.0":0.08281,"15.0":0.05176,"16.0":0.16562,"17.0":2.11165},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00774,"4.2-4.3":0.00498,"4.4":0,"4.4.3-4.4.4":0.02654},A:{"8":0.00691,"9":0.00691,"11":0.10368,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.03272},H:{"0":0.34689},L:{"0":48.98967},S:{"2.5":0},R:{_:"0"},M:{"0":0.17666}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RU.js index cde0f61f353b1b..e69d840ac26e2d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RU.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RU.js @@ -1 +1 @@ -module.exports={C:{"4":0.00623,"33":0.03117,"38":0.01247,"44":0.10596,"50":0.0374,"51":0.02493,"52":0.25555,"55":0.26179,"56":0.0187,"60":0.01247,"68":0.0187,"69":0.0187,"70":0.03117,"71":0.01247,"72":0.0187,"75":0.01247,"77":0.0187,"78":0.0748,"79":0.0187,"80":0.04363,"81":0.0561,"82":0.02493,"83":0.0187,"84":0.0561,"86":0.02493,"87":0.0187,"88":0.0374,"89":0.04363,"90":0.04363,"91":0.10596,"92":0.04986,"93":0.02493,"94":0.0374,"95":0.11219,"96":1.08454,"97":1.50215,"98":0.01247,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 39 40 41 42 43 45 46 47 48 49 53 54 57 58 59 61 62 63 64 65 66 67 73 74 76 85 99 3.5 3.6"},D:{"38":0.00623,"41":0.01247,"47":0.00623,"48":0.04363,"49":0.13089,"51":0.22439,"53":0.01247,"56":0.03117,"57":0.00623,"58":0.00623,"59":0.00623,"61":0.01247,"62":0.00623,"63":0.00623,"64":0.01247,"65":0.00623,"66":0.01247,"67":0.02493,"68":0.02493,"69":0.02493,"70":0.02493,"71":0.02493,"72":0.0374,"73":0.04363,"74":0.0748,"75":0.02493,"76":0.03117,"77":0.0187,"78":0.02493,"79":0.44878,"80":0.10596,"81":0.06233,"83":0.11219,"84":0.24932,"85":0.20569,"86":0.32412,"87":0.35528,"88":0.24309,"89":0.18699,"90":0.41761,"91":0.16829,"92":0.25555,"93":0.5859,"94":0.13089,"95":0.18699,"96":1.14687,"97":8.69504,"98":16.99116,"99":0.01247,"100":0.0187,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 50 52 54 55 60 101"},F:{"36":0.04363,"54":0.00623,"60":0.00623,"68":0.01247,"70":0.00623,"71":0.01247,"72":0.01247,"73":0.01247,"75":0.0187,"76":0.0187,"77":0.13089,"78":0.0935,"79":0.11843,"80":0.09973,"81":0.0561,"82":1.03468,"83":4.47529,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 55 56 57 58 62 63 64 65 66 67 69 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.02493},B:{"14":0.00623,"17":0.00623,"18":0.06233,"84":0.01247,"85":0.01247,"86":0.01247,"89":0.00623,"90":0.01247,"91":0.00623,"92":0.01247,"94":0.01247,"95":0.01247,"96":0.04363,"97":0.55474,"98":1.80134,_:"12 13 15 16 79 80 81 83 87 88 93"},E:{"4":0,"12":0.00623,"13":0.06856,"14":0.15583,"15":0.09973,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 10.1","5.1":0.11843,"9.1":0.04363,"11.1":0.01247,"12.1":0.02493,"13.1":0.14959,"14.1":0.40515,"15.1":0.27425,"15.2-15.3":0.44254,"15.4":0.00623},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00168,"5.0-5.1":0.00838,"6.0-6.1":0.00419,"7.0-7.1":0.00671,"8.1-8.4":0.00755,"9.0-9.2":0.0109,"9.3":0.05198,"10.0-10.2":0.01174,"10.3":0.05869,"11.0-11.2":0.02264,"11.3-11.4":0.02264,"12.0-12.1":0.02683,"12.2-12.5":0.31776,"13.0-13.1":0.02683,"13.2":0.01425,"13.3":0.0503,"13.4-13.7":0.20038,"14.0-14.4":0.50808,"14.5-14.8":1.5695,"15.0-15.1":1.55273,"15.2-15.3":3.88183,"15.4":0.02599},P:{"4":0.04483,"5.0-5.4":0.01121,"6.2-6.4":0.01012,"7.2-7.4":0.08966,"8.2":0.03083,"9.2":0.02242,"10.1":0.03037,"11.1-11.2":0.05604,"12.0":0.02242,"13.0":0.07845,"14.0":0.08966,"15.0":0.06725,"16.0":0.87419},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0029,"4.2-4.3":0.01161,"4.4":0,"4.4.3-4.4.4":0.05706},A:{"6":0.0135,"7":0.0135,"8":0.06752,"9":0.04051,"10":0.03376,"11":0.47942,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.13185},Q:{"10.4":0.00753},O:{"0":0.21472},H:{"0":0.78103},L:{"0":23.1652},S:{"2.5":0}}; +module.exports={C:{"50":0.0173,"51":0.05765,"52":0.37473,"53":0.0173,"55":0.0173,"56":0.02306,"60":0.02306,"68":0.02883,"70":0.01153,"72":0.02883,"78":0.05189,"79":0.02306,"80":0.02883,"81":0.02306,"82":0.0173,"83":0.01153,"84":0.03459,"86":0.00577,"87":0.01153,"88":0.02306,"89":0.02306,"90":0.02883,"91":0.1153,"92":0.01153,"93":0.01153,"94":0.01153,"95":0.06342,"96":0.04612,"97":0.04036,"98":0.04036,"99":0.10377,"100":0.35743,"101":2.40977,"102":0.05765,"103":0.00577,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 54 57 58 59 61 62 63 64 65 66 67 69 71 73 74 75 76 77 85 104 3.5 3.6"},D:{"22":0.01153,"26":0.00577,"38":0.01153,"39":0.00577,"41":0.00577,"47":0.00577,"48":0.01153,"49":0.10954,"51":0.14989,"52":0.03459,"53":0.01153,"55":0.01153,"56":0.02306,"57":0.01153,"58":0.00577,"59":0.01153,"61":0.02306,"63":0.01153,"64":0.0173,"65":0.01153,"66":0.04036,"67":0.01153,"68":0.0173,"69":0.03459,"70":0.01153,"71":0.01153,"72":0.0173,"73":0.0173,"74":0.14413,"75":0.01153,"76":0.06918,"77":0.0173,"78":0.02306,"79":0.29402,"80":0.09801,"81":0.10377,"83":0.14989,"84":0.25943,"85":0.22484,"86":0.3459,"87":0.31131,"88":0.12107,"89":0.13836,"90":0.27096,"91":0.14989,"92":0.2479,"93":0.10377,"94":0.10377,"95":0.05765,"96":0.16719,"97":0.25366,"98":0.29402,"99":0.28825,"100":0.68604,"101":1.81021,"102":18.07904,"103":1.27983,"104":0.01153,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 34 35 36 37 40 42 43 44 45 46 50 54 60 62 105 106"},F:{"36":0.04612,"37":0.01153,"47":0.01153,"54":0.0173,"60":0.00577,"68":0.0173,"69":0.00577,"70":0.01153,"71":0.02306,"72":0.01153,"73":0.0173,"75":0.01153,"76":0.01153,"77":0.04612,"78":0.0173,"79":0.02883,"80":0.02306,"81":0.0173,"82":0.05189,"83":0.02306,"84":0.06342,"85":0.28249,"86":1.00888,"87":3.95479,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 38 39 40 41 42 43 44 45 46 48 49 50 51 52 53 55 56 57 58 62 63 64 65 66 67 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.02306},B:{"13":0.00577,"14":0.00577,"16":0.01153,"17":0.01153,"18":0.07495,"84":0.02306,"85":0.02306,"86":0.0173,"87":0.01153,"88":0.01153,"89":0.0173,"90":0.01153,"91":0.0173,"92":0.02306,"93":0.00577,"94":0.0173,"95":0.01153,"96":0.02306,"97":0.02306,"98":0.02306,"99":0.0173,"100":0.02306,"101":0.28249,"102":1.9774,"103":0.31708,_:"12 15 79 80 81 83"},E:{"4":0,"13":0.06342,"14":0.1153,"15":0.03459,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 16.0","5.1":0.00577,"9.1":0.02306,"11.1":0.0173,"12.1":0.02306,"13.1":0.12107,"14.1":0.26519,"15.1":0.07495,"15.2-15.3":0.08071,"15.4":0.25943,"15.5":0.57074},G:{"8":0.00081,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00081,"5.0-5.1":0.00323,"6.0-6.1":0.00485,"7.0-7.1":0.01536,"8.1-8.4":0.00808,"9.0-9.2":0.0291,"9.3":0.05496,"10.0-10.2":0.0097,"10.3":0.05981,"11.0-11.2":0.02667,"11.3-11.4":0.03071,"12.0-12.1":0.01778,"12.2-12.5":0.30955,"13.0-13.1":0.04203,"13.2":0.02263,"13.3":0.05819,"13.4-13.7":0.17296,"14.0-14.4":0.40492,"14.5-14.8":0.93754,"15.0-15.1":0.52211,"15.2-15.3":1.33357,"15.4":1.16303,"15.5":2.811,"16.0":0.02829},P:{"4":0.0553,_:"5.0-5.4 6.2-6.4 8.2 10.1","7.2-7.4":0.07742,"9.2":0.02212,"11.1-11.2":0.04424,"12.0":0.01106,"13.0":0.04424,"14.0":0.04424,"15.0":0.03318,"16.0":0.14378,"17.0":0.86268},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00568,"4.2-4.3":0.01325,"4.4":0,"4.4.3-4.4.4":0.06153},A:{"8":0.0241,"9":0.01205,"10":0.00602,"11":0.49398,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.20328},H:{"0":0.74976},L:{"0":29.13104},S:{"2.5":0},R:{_:"0"},M:{"0":0.16517}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RW.js index 3bc9e53465e196..4da4cef744e667 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RW.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RW.js @@ -1 +1 @@ -module.exports={C:{"28":0.00471,"31":0.01884,"36":0.00942,"37":0.00471,"40":0.00471,"47":0.02356,"50":0.06124,"52":0.01884,"56":0.00942,"66":0.00471,"69":0.00471,"71":0.00471,"72":0.00942,"75":0.00471,"78":0.03769,"80":0.00471,"82":0.00942,"88":0.00942,"89":0.02356,"91":0.1696,"93":0.00942,"94":0.01884,"95":0.03298,"96":1.13535,"97":1.7996,"98":0.11306,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 32 33 34 35 38 39 41 42 43 44 45 46 48 49 51 53 54 55 57 58 59 60 61 62 63 64 65 67 68 70 73 74 76 77 79 81 83 84 85 86 87 90 92 99 3.5 3.6"},D:{"25":0.00471,"29":0.00471,"38":0.01413,"41":0.05653,"43":0.01884,"49":0.04711,"58":0.00471,"60":0.02827,"61":0.00471,"63":0.01413,"65":0.00942,"66":0.00471,"68":0.00471,"69":0.02827,"70":0.00942,"71":0.0424,"72":0.00942,"73":0.00471,"74":0.0424,"75":0.00471,"76":0.01413,"77":0.01413,"78":0.00471,"79":0.03298,"80":0.0424,"81":0.01884,"83":0.01413,"84":0.08009,"85":0.01413,"86":0.0424,"87":0.08009,"88":0.01884,"89":0.06595,"90":0.03298,"91":0.07067,"92":0.0848,"93":0.09893,"94":0.212,"95":0.10364,"96":0.48052,"97":8.66824,"98":19.80033,"99":0.0424,"100":0.04711,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 30 31 32 33 34 35 36 37 39 40 42 44 45 46 47 48 50 51 52 53 54 55 56 57 59 62 64 67 101"},F:{"42":0.03298,"79":0.00942,"82":0.09893,"83":0.85269,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.19786,"13":0.13662,"14":0.0424,"15":0.01884,"16":0.02356,"17":0.03298,"18":0.16017,"84":0.03298,"85":0.01884,"87":0.00942,"89":0.01884,"90":0.00942,"91":0.00942,"92":0.0424,"93":0.00471,"94":0.00942,"95":0.01884,"96":0.07538,"97":3.82533,"98":3.19877,_:"79 80 81 83 86 88"},E:{"4":0,"14":0.03769,"15":0.02356,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 15.4","5.1":0.00471,"10.1":0.00471,"11.1":0.01884,"12.1":0.03298,"13.1":0.06595,"14.1":0.22142,"15.1":0.06124,"15.2-15.3":0.19786},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00178,"6.0-6.1":0,"7.0-7.1":0.01006,"8.1-8.4":0,"9.0-9.2":0.00237,"9.3":0.02841,"10.0-10.2":0.00592,"10.3":0.05209,"11.0-11.2":0.01184,"11.3-11.4":0.0148,"12.0-12.1":0.03847,"12.2-12.5":0.55106,"13.0-13.1":0.0148,"13.2":0.00474,"13.3":0.04676,"13.4-13.7":0.10536,"14.0-14.4":0.59131,"14.5-14.8":0.96124,"15.0-15.1":0.9938,"15.2-15.3":2.45342,"15.4":0.03019},P:{"4":0.12615,"5.0-5.4":0.01121,"6.2-6.4":0.01012,"7.2-7.4":0.12615,"8.2":0.03083,"9.2":0.07359,"10.1":0.03037,"11.1-11.2":0.12615,"12.0":0.02102,"13.0":0.05256,"14.0":0.09461,"15.0":0.09461,"16.0":0.97764},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00098,"4.2-4.3":0.00146,"4.4":0,"4.4.3-4.4.4":0.02929},A:{"11":0.15075,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00529},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0.21156},Q:{"10.4":0},O:{"0":0.26974},H:{"0":7.561},L:{"0":39.08053},S:{"2.5":0.03173}}; +module.exports={C:{"31":0.01437,"52":0.00719,"78":0.00719,"88":0.01437,"91":0.01437,"96":0.00719,"97":0.00719,"98":0.00719,"99":0.04312,"100":4.54937,"101":2.84605,"102":0.13655,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 94 95 103 104 3.5 3.6"},D:{"49":0.02156,"60":0.02156,"74":0.01437,"75":0.00719,"77":0.04312,"79":0.03594,"80":0.02156,"81":0.00719,"83":0.00719,"84":0.00719,"85":0.02156,"86":0.01437,"87":0.05031,"88":0.01437,"89":0.01437,"91":0.02156,"92":0.07906,"93":0.02875,"94":0.02156,"95":0.02156,"96":0.08624,"97":0.0575,"98":0.07187,"99":0.11499,"100":0.21561,"101":2.05548,"102":20.53326,"103":1.50208,"104":0.02156,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 76 78 90 105 106"},F:{"85":0.02156,"86":0.04312,"87":0.56059,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.05031,"13":0.08624,"14":0.04312,"15":0.02156,"16":0.02156,"17":0.01437,"18":0.09343,"84":0.01437,"85":0.01437,"89":0.01437,"90":0.02875,"92":0.15811,"96":0.00719,"97":0.00719,"98":0.01437,"99":0.01437,"100":0.02156,"101":13.95715,"102":19.17492,"103":1.59551,_:"79 80 81 83 86 87 88 91 93 94 95"},E:{"4":0,"11":0.01437,"13":0.01437,"14":0.02156,"15":0.00719,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.00719,"13.1":0.03594,"14.1":0.15811,"15.1":0.02156,"15.2-15.3":0.01437,"15.4":0.07906,"15.5":0.20842},G:{"8":0.00042,"3.2":0.00084,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00084,"6.0-6.1":0,"7.0-7.1":0.00169,"8.1-8.4":0,"9.0-9.2":0.00127,"9.3":0.05356,"10.0-10.2":0.00169,"10.3":0.01645,"11.0-11.2":0.00422,"11.3-11.4":0.01223,"12.0-12.1":0.01518,"12.2-12.5":0.36519,"13.0-13.1":0.00506,"13.2":0.00211,"13.3":0.02362,"13.4-13.7":0.03964,"14.0-14.4":0.22181,"14.5-14.8":0.34748,"15.0-15.1":0.16362,"15.2-15.3":0.51658,"15.4":0.79237,"15.5":1.61468,"16.0":0.01054},P:{"4":0.06635,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.06635,"8.2":0.01015,"9.2":0.01035,"10.1":0.01018,"11.1-11.2":0.06635,"12.0":0.01106,"13.0":0.01106,"14.0":0.02212,"15.0":0.02212,"16.0":0.16587,"17.0":0.53078},I:{"0":0,"3":0,"4":0.00026,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00035,"4.2-4.3":0.00182,"4.4":0,"4.4.3-4.4.4":0.01445},A:{"11":0.10781,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.00281},Q:{"10.4":0},O:{"0":0.10408},H:{"0":3.03335},L:{"0":21.42113},S:{"2.5":0.01688},R:{_:"0"},M:{"0":0.07876}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SA.js index b182ff18b4866b..e36132ab81b7b6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SA.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SA.js @@ -1 +1 @@ -module.exports={C:{"34":0.00246,"52":0.00739,"78":0.01725,"84":0.00246,"91":0.01232,"94":0.00246,"95":0.00986,"96":0.26611,"97":0.44845,"98":0.00493,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 89 90 92 93 99 3.5 3.6"},D:{"11":0.00493,"34":0.00246,"38":0.00739,"43":0.00493,"47":0.00493,"49":0.04189,"53":0.00493,"56":0.00986,"63":0.00739,"64":0.00493,"65":0.00493,"66":0.00246,"67":0.01232,"68":0.00493,"69":0.00739,"70":0.00246,"71":0.00739,"72":0.00246,"74":0.01232,"75":0.00986,"76":0.00493,"77":0.00739,"78":0.01232,"79":0.06406,"80":0.01478,"81":0.00739,"83":0.02218,"84":0.01478,"85":0.02957,"86":0.0271,"87":0.27597,"88":0.01971,"89":0.02218,"90":0.01232,"91":0.03203,"92":0.07392,"93":0.31046,"94":0.02957,"95":0.05421,"96":0.30061,"97":4.928,"98":11.57834,"99":0.00739,"100":0.01232,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 44 45 46 48 50 51 52 54 55 57 58 59 60 61 62 73 101"},F:{"28":0.00986,"36":0.00246,"46":0.00739,"72":0.00493,"73":0.00493,"75":0.00493,"76":0.00493,"77":0.01232,"78":0.00739,"79":0.00986,"80":0.01232,"81":0.01478,"82":0.09856,"83":0.08624,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00493,"14":0.00493,"15":0.00493,"16":0.00493,"17":0.00493,"18":0.01971,"84":0.00493,"89":0.00493,"90":0.00246,"91":0.00246,"92":0.00986,"93":0.00493,"94":0.00739,"95":0.01971,"96":0.0345,"97":0.46077,"98":1.67798,_:"13 79 80 81 83 85 86 87 88"},E:{"4":0,"12":0.00246,"13":0.0271,"14":0.18726,"15":0.13306,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1","5.1":0.00246,"10.1":0.00246,"11.1":0.01232,"12.1":0.02464,"13.1":0.0887,"14.1":0.47802,"15.1":0.30307,"15.2-15.3":0.41149,"15.4":0.00493},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.02477,"8.1-8.4":0.00354,"9.0-9.2":0,"9.3":0.04955,"10.0-10.2":0.00708,"10.3":0.03539,"11.0-11.2":0.02124,"11.3-11.4":0.02124,"12.0-12.1":0.06017,"12.2-12.5":0.81404,"13.0-13.1":0.12741,"13.2":0.08848,"13.3":0.33269,"13.4-13.7":0.7928,"14.0-14.4":3.88967,"14.5-14.8":7.83597,"15.0-15.1":7.55991,"15.2-15.3":13.62978,"15.4":0.08494},P:{"4":0.05168,"5.0-5.4":0.01034,"6.2-6.4":0.04087,"7.2-7.4":0.1137,"8.2":0.16348,"9.2":0.01034,"10.1":0.01033,"11.1-11.2":0.07236,"12.0":0.02067,"13.0":0.10336,"14.0":0.16538,"15.0":0.14471,"16.0":1.83989},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00188,"4.4":0,"4.4.3-4.4.4":0.0358},A:{"11":0.19219,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.08291},Q:{"10.4":0},O:{"0":0.94966},H:{"0":0.11417},L:{"0":35.61174},S:{"2.5":0}}; +module.exports={C:{"52":0.00754,"78":0.01005,"83":0.00754,"91":0.01257,"94":0.00251,"95":0.00251,"97":0.00251,"98":0.00503,"99":0.01257,"100":0.0779,"101":0.65338,"102":0.02513,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 87 88 89 90 92 93 96 103 104 3.5 3.6"},D:{"38":0.00503,"43":0.00251,"47":0.00251,"49":0.01759,"50":0.00251,"56":0.01005,"63":0.00503,"65":0.00251,"66":0.00251,"67":0.00754,"68":0.00754,"69":0.00754,"70":0.00251,"71":0.00754,"72":0.00503,"73":0.00503,"74":0.00754,"75":0.00503,"76":0.00503,"77":0.00503,"78":0.01005,"79":0.05026,"80":0.01257,"81":0.00503,"83":0.02262,"84":0.01005,"85":0.02513,"86":0.02513,"87":0.03518,"88":0.01005,"89":0.01759,"90":0.00503,"91":0.04021,"92":0.06785,"93":0.01005,"94":0.01508,"95":0.01759,"96":0.0578,"97":0.03518,"98":0.04775,"99":0.08293,"100":0.17088,"101":0.91725,"102":14.44975,"103":1.24896,"104":0.01257,"105":0.00251,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 48 51 52 53 54 55 57 58 59 60 61 62 64 106"},F:{"11":0.00503,"28":0.00754,"46":0.00503,"73":0.00251,"76":0.01005,"77":0.00251,"78":0.00503,"79":0.00754,"80":0.00503,"81":0.00754,"82":0.03016,"83":0.01508,"84":0.00503,"85":0.01759,"86":0.07036,"87":0.10052,_:"9 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00503,"14":0.00754,"15":0.00503,"16":0.00503,"17":0.00251,"18":0.01508,"84":0.00251,"89":0.00251,"91":0.00251,"92":0.01005,"94":0.00251,"95":0.00754,"96":0.01005,"97":0.01005,"98":0.01257,"99":0.01759,"100":0.06785,"101":0.31664,"102":1.66109,"103":0.30407,_:"13 79 80 81 83 85 86 87 88 90 93"},E:{"4":0,"13":0.0201,"14":0.14324,"15":0.04775,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.00251,"10.1":0.00251,"11.1":0.01005,"12.1":0.0201,"13.1":0.0779,"14.1":0.3091,"15.1":0.08796,"15.2-15.3":0.06534,"15.4":0.39705,"15.5":0.81421,"16.0":0.00503},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01534,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05523,"10.0-10.2":0.00307,"10.3":0.03375,"11.0-11.2":0.01227,"11.3-11.4":0.01534,"12.0-12.1":0.0675,"12.2-12.5":0.55839,"13.0-13.1":0.0767,"13.2":0.05216,"13.3":0.18715,"13.4-13.7":0.49089,"14.0-14.4":2.19675,"14.5-14.8":3.55284,"15.0-15.1":1.64449,"15.2-15.3":2.30106,"15.4":5.89992,"15.5":13.39831,"16.0":0.04909},P:{"4":0.01042,"5.0-5.4":0.01042,"6.2-6.4":0.0103,"7.2-7.4":0.11465,"8.2":0.01015,"9.2":0.01042,"10.1":0.01018,"11.1-11.2":0.05211,"12.0":0.01042,"13.0":0.06254,"14.0":0.12507,"15.0":0.05211,"16.0":0.30226,"17.0":1.95949},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00561,"4.2-4.3":0.0014,"4.4":0,"4.4.3-4.4.4":0.0379},A:{"6":0.01005,"8":0.00503,"11":0.16837,_:"7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.93575},H:{"0":0.14175},L:{"0":41.50925},S:{"2.5":0},R:{_:"0"},M:{"0":0.08983}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SB.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SB.js index da46d3f2272e09..d01b3f70812ca5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SB.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SB.js @@ -1 +1 @@ -module.exports={C:{"47":0.04251,"68":0.00981,"78":0.01308,"83":0.01962,"87":0.00327,"88":0.00981,"90":0.00327,"91":0.00327,"94":0.01635,"95":0.02943,"96":0.54609,"97":0.72267,"98":0.12426,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 89 92 93 99 3.5 3.6"},D:{"11":0.00654,"70":0.00654,"71":0.03597,"75":0.10791,"78":0.00654,"80":0.00981,"81":0.03597,"83":0.02289,"85":0.01308,"86":0.02616,"87":0.03597,"88":0.05886,"89":0.04251,"90":0.01962,"91":0.04578,"93":0.00654,"95":0.01962,"96":0.1962,"97":4.08423,"98":9.33258,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 72 73 74 76 77 79 84 92 94 99 100 101"},F:{"47":0.00654,"83":0.16677,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01635,"13":0.05232,"14":0.40875,"15":0.08502,"16":0.08502,"17":0.06213,"18":0.51993,"84":0.01308,"85":0.0327,"86":0.01635,"87":0.00654,"88":0.01308,"89":0.05559,"92":0.02943,"93":0.17004,"94":0.03924,"96":0.05559,"97":0.73575,"98":1.91622,_:"79 80 81 83 90 91 95"},E:{"4":0,"13":0.01962,"14":0.00327,"15":0.00327,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.00327,"12.1":0.01962,"13.1":0.05232,"14.1":0.04251,"15.1":0.09156,"15.2-15.3":0.03597},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.02248,"8.1-8.4":0,"9.0-9.2":0.0017,"9.3":0.03287,"10.0-10.2":0,"10.3":0.14376,"11.0-11.2":0.06064,"11.3-11.4":0.007,"12.0-12.1":0.01209,"12.2-12.5":0.2854,"13.0-13.1":0.007,"13.2":0.03626,"13.3":0.02947,"13.4-13.7":0.07082,"14.0-14.4":0.27501,"14.5-14.8":0.34096,"15.0-15.1":0.14715,"15.2-15.3":0.64735,"15.4":0},P:{"4":0.17359,"5.0-5.4":0.01029,"6.2-6.4":0.04084,"7.2-7.4":0.24506,"8.2":0.03042,"9.2":0.25528,"10.1":0.04084,"11.1-11.2":0.34718,"12.0":0.14295,"13.0":0.61266,"14.0":0.26549,"15.0":0.0919,"16.0":0.74541},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.05804,"4.2-4.3":0.01451,"4.4":0,"4.4.3-4.4.4":0.24376},A:{"10":0.02972,"11":0.99052,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.07403},Q:{"10.4":0},O:{"0":5.68685},H:{"0":2.89267},L:{"0":62.27555},S:{"2.5":0}}; +module.exports={C:{"46":0.00374,"67":0.00374,"72":0.00374,"77":0.01494,"84":0.00747,"88":0.00374,"94":0.01494,"98":0.00374,"99":0.01121,"100":0.27646,"101":1.1619,"102":0.06351,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 73 74 75 76 78 79 80 81 82 83 85 86 87 89 90 91 92 93 95 96 97 103 104 3.5 3.6"},D:{"33":0.0523,"40":0.00374,"49":0.01121,"55":0.00747,"65":0.02615,"69":0.01494,"71":0.01494,"75":0.00747,"79":0.00747,"80":0.01121,"81":0.01121,"83":2.62267,"86":0.01494,"87":0.01121,"88":0.01121,"89":0.01494,"91":0.01121,"92":0.02989,"93":0.01121,"94":0.00747,"95":0.07098,"96":0.02989,"97":0.07472,"98":0.0934,"99":0.01868,"100":0.2279,"101":0.76588,"102":12.45582,"103":1.02366,"104":0.01494,"105":0.01494,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 61 62 63 64 66 67 68 70 72 73 74 76 77 78 84 85 90 106"},F:{"82":0.00374,"86":0.00747,"87":0.12329,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02242,"13":0.10461,"14":0.68369,"15":0.13076,"16":0.11208,"17":0.08593,"18":0.33998,"80":0.00747,"84":0.04857,"85":0.02989,"86":0.00747,"87":0.01121,"89":0.03736,"91":0.01121,"92":0.0934,"93":0.00747,"94":0.01494,"95":0.10461,"96":0.04483,"97":0.00374,"99":0.1345,"100":0.04857,"101":0.57534,"102":2.88046,"103":0.7061,_:"79 81 83 88 90 98"},E:{"4":0,"9":0.01494,"12":0.01121,"13":0.06725,"14":0.13076,_:"0 5 6 7 8 10 11 15 3.1 3.2 5.1 6.1 7.1 10.1 11.1 16.0","9.1":0.01121,"12.1":0.04483,"13.1":0.02242,"14.1":0.02242,"15.1":0.04857,"15.2-15.3":0.00747,"15.4":0.02615,"15.5":0.17186},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.0111,"8.1-8.4":0,"9.0-9.2":0.02852,"9.3":0.04467,"10.0-10.2":0,"10.3":0.0111,"11.0-11.2":0.12164,"11.3-11.4":0.00631,"12.0-12.1":0.01489,"12.2-12.5":0.21225,"13.0-13.1":0.00858,"13.2":0.0212,"13.3":0.02599,"13.4-13.7":0.16,"14.0-14.4":0.32279,"14.5-14.8":0.57693,"15.0-15.1":0.08808,"15.2-15.3":0.20619,"15.4":0.17616,"15.5":0.48632,"16.0":0.00126},P:{"4":0.29611,"5.0-5.4":0.04223,"6.2-6.4":0.05105,"7.2-7.4":0.34716,"8.2":0.03063,"9.2":0.05105,"10.1":0.05352,"11.1-11.2":0.14295,"12.0":0.0919,"13.0":0.41863,"14.0":0.15316,"15.0":0.10211,"16.0":0.46969,"17.0":1.21506},I:{"0":0,"3":0,"4":0.00716,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00159,"4.2-4.3":0.00875,"4.4":0,"4.4.3-4.4.4":0.08271},A:{"11":0.78456,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":7.97906},H:{"0":1.73139},L:{"0":55.21692},S:{"2.5":0},R:{_:"0"},M:{"0":0.92066}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SC.js index 2b814623a481f0..b41cece6940948 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SC.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SC.js @@ -1 +1 @@ -module.exports={C:{"38":0.00861,"50":0.00431,"55":0.02584,"56":0.02153,"59":0.03014,"60":0.03875,"61":0.05167,"62":0.02153,"63":0.02153,"68":0.05598,"69":0.03014,"70":0.03875,"71":0.03445,"72":0.05167,"73":0.06459,"74":0.04737,"75":0.04737,"76":0.04306,"77":0.0732,"78":0.11196,"79":0.04306,"80":0.0689,"81":0.0732,"82":0.13349,"83":0.03875,"84":0.0732,"86":0.00861,"87":0.00861,"88":0.01292,"89":0.01292,"90":0.00431,"91":0.52533,"92":0.01722,"94":0.01722,"95":0.05598,"96":0.4306,"97":0.84828,"98":0.01722,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 51 52 53 54 57 58 64 65 66 67 85 93 99 3.5 3.6"},D:{"33":0.01722,"43":0.00861,"48":0.03014,"53":0.01292,"55":0.01722,"59":0.1421,"63":0.00431,"65":0.00861,"66":0.00431,"68":0.87412,"69":0.27128,"70":0.27128,"71":0.23683,"72":0.89995,"73":0.1464,"74":0.38754,"75":0.24975,"76":0.25836,"77":0.25836,"78":0.53825,"79":0.58562,"80":0.67174,"81":0.37032,"83":0.62006,"84":0.58131,"85":0.8612,"86":0.84398,"87":1.02052,"88":0.49088,"89":0.64159,"90":0.59853,"91":0.16793,"92":1.25735,"93":0.7923,"94":0.02584,"95":0.03445,"96":1.66642,"97":2.27787,"98":4.89592,"99":0.05167,"100":0.00861,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 44 45 46 47 49 50 51 52 54 56 57 58 60 61 62 64 67 101"},F:{"46":0.00861,"47":0.00431,"48":0.00861,"49":0.00861,"51":0.00861,"53":0.04306,"54":0.05598,"55":0.05167,"56":0.01292,"57":0.00431,"60":0.01292,"62":0.00431,"63":0.00431,"65":0.00861,"66":0.00861,"67":0.05167,"68":0.09473,"69":0.00431,"72":0.01292,"73":0.05598,"74":0.00861,"75":0.01292,"76":0.01292,"77":0.05598,"78":0.02153,"79":0.04737,"80":0.03445,"81":0.01292,"82":0.04737,"83":0.46935,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 50 52 58 64 70 71 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.01292,"15":0.00861,"16":0.03875,"17":0.05167,"18":0.29281,"79":0.02153,"80":0.08612,"81":0.06028,"83":0.05598,"84":0.07751,"85":0.03445,"86":0.05167,"87":0.03445,"88":0.04737,"89":0.10765,"90":0.04306,"91":0.00431,"92":0.02153,"95":0.01722,"96":0.05167,"97":0.33587,"98":0.85689,_:"12 13 93 94"},E:{"4":0,"13":0.11626,"14":0.05598,"15":0.05167,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 11.1","9.1":2.09702,"12.1":0.01292,"13.1":0.06459,"14.1":0.21099,"15.1":1.77407,"15.2-15.3":3.84956,"15.4":0.01722},G:{"8":0.04188,"3.2":0.00966,"4.0-4.1":0.00966,"4.2-4.3":0.06764,"5.0-5.1":0.07409,"6.0-6.1":0.11918,"7.0-7.1":0.14495,"8.1-8.4":0.20615,"9.0-9.2":0.17072,"9.3":0.28024,"10.0-10.2":0.22226,"10.3":0.24159,"11.0-11.2":0.37688,"11.3-11.4":0.26736,"12.0-12.1":0.34789,"12.2-12.5":0.73443,"13.0-13.1":0.21904,"13.2":0.08697,"13.3":0.28024,"13.4-13.7":0.89549,"14.0-14.4":0.47673,"14.5-14.8":0.53794,"15.0-15.1":5.11522,"15.2-15.3":21.23718,"15.4":0.04188},P:{"4":0.15464,"5.0-5.4":0.03093,"6.2-6.4":0.07216,"7.2-7.4":0.2268,"8.2":0.03042,"9.2":0.12371,"10.1":0.29896,"11.1-11.2":0.35051,"12.0":0.16495,"13.0":0.2268,"14.0":0.10309,"15.0":0.08247,"16.0":1.10308},I:{"0":0,"3":0,"4":0.00444,"2.1":0,"2.2":0.005,"2.3":0.00111,"4.1":0.01055,"4.2-4.3":0.02555,"4.4":0,"4.4.3-4.4.4":0.06722},A:{"8":0.03478,"9":0.02484,"10":0.00994,"11":0.51175,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.31317},Q:{"10.4":0.01708},O:{"0":0.88257},H:{"0":0.31266},L:{"0":20.14343},S:{"2.5":0}}; +module.exports={C:{"2":1.82638,"3":5.17475,"4":0.09203,"5":0.00708,"7":0.00708,"20":0.00708,"21":0.00708,"23":0.00708,"27":0.00708,"29":0.00708,"31":0.00708,"33":0.0354,"35":0.02124,"36":0.01416,"37":0.02832,"38":0.00708,"40":0.01416,"41":0.00708,"42":0.02124,"43":0.01416,"44":0.00708,"45":0.02832,"46":0.01416,"47":0.04955,"48":0.02124,"49":0.01416,"50":0.04955,"51":0.02124,"52":0.22653,"53":0.0354,"54":0.22653,"55":0.24069,"56":0.14866,"57":0.18405,"58":0.04247,"59":0.04955,"60":0.02832,"61":0.01416,"63":0.02832,"64":0.04247,"65":0.00708,"66":0.07787,"67":0.02832,"68":0.01416,"69":0.00708,"70":0.01416,"71":0.00708,"72":0.01416,"77":0.00708,"78":0.26192,"80":0.01416,"81":0.76453,"84":0.32563,"89":0.09203,"91":0.15574,"94":0.01416,"96":0.00708,"97":0.01416,"98":0.07787,"99":0.12742,"100":0.44598,"101":0.9769,"102":0.04247,_:"6 8 9 10 11 12 13 14 15 16 17 18 19 22 24 25 26 28 30 32 34 39 62 73 74 75 76 79 82 83 85 86 87 88 90 92 93 95 103 104","3.5":5.87557,"3.6":7.26305},D:{"4":0.12034,"5":0.07079,"6":0.0354,"7":0.04247,"8":0.07079,"9":0.09911,"10":0.04247,"11":0.04247,"12":0.02124,"14":0.01416,"15":0.01416,"16":0.02832,"17":0.01416,"18":0.01416,"19":0.01416,"20":0.02124,"21":0.02124,"22":0.01416,"23":0.02124,"25":0.00708,"27":0.02124,"28":0.00708,"29":0.01416,"30":0.01416,"31":0.02124,"32":0.02124,"33":0.00708,"34":0.02124,"35":0.02124,"36":0.06371,"37":0.02124,"38":0.02124,"39":0.01416,"40":0.02832,"41":0.05663,"42":0.10619,"43":0.04955,"44":0.01416,"45":0.10619,"46":0.0354,"47":0.09203,"48":0.04247,"49":0.10619,"50":0.07787,"51":0.06371,"52":0.07079,"53":0.11326,"54":0.07787,"55":0.11326,"56":0.11326,"57":0.21945,"58":0.21945,"59":0.49553,"60":0.96982,"61":0.65127,"62":0.64419,"63":0.51677,"64":0.28316,"65":0.1699,"66":0.04955,"67":0.02124,"68":0.06371,"69":0.09911,"70":0.12034,"71":0.12742,"72":1.13264,"73":0.14866,"74":0.26192,"75":0.0354,"76":0.04247,"77":0.02832,"78":0.04247,"79":0.06371,"80":0.1345,"81":0.04955,"83":0.20529,"84":0.07787,"85":0.37519,"86":0.1345,"87":0.41058,"88":0.04247,"89":0.24069,"90":0.09911,"91":0.19821,"92":0.20529,"93":0.04955,"94":0.09911,"96":0.04247,"97":0.07787,"98":0.16282,"99":0.19113,"100":1.13264,"101":0.92027,"102":4.72169,"103":0.53093,_:"13 24 26 95 104 105 106"},F:{"35":0.00708,"36":0.02124,"37":0.01416,"40":0.02124,"42":0.38935,"43":0.01416,"44":0.01416,"45":0.04247,"46":0.31148,"47":0.29024,"48":0.21237,"49":0.22653,"50":0.09911,"51":0.02832,"53":0.02124,"54":0.01416,"55":0.01416,"56":0.00708,"57":0.05663,"58":0.01416,"60":0.02124,"62":0.00708,"70":0.00708,"71":0.53093,"83":0.01416,"84":0.02124,"85":0.01416,"86":0.04955,"87":0.18405,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 38 39 41 52 63 64 65 66 67 68 69 72 73 74 75 76 77 78 79 80 81 82 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.07079,"13":0.01416,"14":0.07079,"15":0.09911,"16":0.11326,"17":0.06371,"18":0.11326,"80":0.01416,"81":0.01416,"84":0.00708,"85":0.33979,"86":0.00708,"87":0.04955,"89":0.01416,"90":0.01416,"91":0.04247,"96":0.01416,"99":0.01416,"100":0.01416,"101":0.4389,"102":1.10432,"103":0.29732,_:"79 83 88 92 93 94 95 97 98"},E:{"4":0.14158,"5":0.07079,"9":0.19113,"11":0.00708,"13":0.02832,"14":0.07079,_:"0 6 7 8 10 12 15 6.1 7.1 16.0","3.1":0.0354,"3.2":0.01416,"5.1":0.01416,"9.1":0.12742,"10.1":0.00708,"11.1":0.05663,"12.1":0.49553,"13.1":0.08495,"14.1":0.26192,"15.1":0.4035,"15.2-15.3":0.14158,"15.4":0.16282,"15.5":0.22653},G:{"8":0.00586,"3.2":0.00053,"4.0-4.1":0.0032,"4.2-4.3":0.01119,"5.0-5.1":0.00799,"6.0-6.1":0.01385,"7.0-7.1":0.01492,"8.1-8.4":0.05968,"9.0-9.2":0.01758,"9.3":0.02185,"10.0-10.2":0.0341,"10.3":0.09058,"11.0-11.2":0.07513,"11.3-11.4":0.05915,"12.0-12.1":0.04796,"12.2-12.5":0.16625,"13.0-13.1":0.06714,"13.2":0.05701,"13.3":0.1135,"13.4-13.7":0.17957,"14.0-14.4":0.75984,"14.5-14.8":0.38844,"15.0-15.1":0.35274,"15.2-15.3":0.75398,"15.4":0.55416,"15.5":1.46053,"16.0":0.00533},P:{"4":0.0107,"5.0-5.4":0.01042,"6.2-6.4":0.01024,"7.2-7.4":0.08564,"8.2":0.01015,"9.2":0.02048,"10.1":0.05352,"11.1-11.2":0.05352,"12.0":0.03211,"13.0":0.31043,"14.0":0.04282,"15.0":0.03211,"16.0":0.16057,"17.0":1.03835},I:{"0":0,"3":0,"4":0.00106,"2.1":0,"2.2":0.00426,"2.3":0.00106,"4.1":0.00532,"4.2-4.3":0.0181,"4.4":0,"4.4.3-4.4.4":0.08411},A:{"8":0.91049,"9":0.69371,"10":0.4986,"11":3.76481,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0.04382},O:{"0":0.90551},H:{"0":0.448},L:{"0":20.852},S:{"2.5":0.02045},R:{_:"0"},M:{"0":0.61341}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SD.js index 9d3a47f9038f13..cb265291606f99 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SD.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SD.js @@ -1 +1 @@ -module.exports={C:{"16":0.00139,"17":0.01249,"19":0.00278,"23":0.00278,"24":0.00278,"29":0.00278,"30":0.00416,"31":0.00694,"32":0.00139,"33":0.01249,"34":0.00139,"35":0.01943,"36":0.00555,"38":0.01666,"39":0.00833,"40":0.00416,"41":0.00833,"42":0.00416,"43":0.01804,"44":0.00555,"45":0.00278,"46":0.00278,"47":0.01666,"48":0.00555,"49":0.00555,"50":0.00278,"51":0.00416,"52":0.09438,"53":0.00139,"54":0.00278,"56":0.00833,"57":0.00139,"58":0.00278,"60":0.00278,"61":0.00555,"62":0.00278,"63":0.00416,"64":0.00139,"65":0.00139,"66":0.00416,"68":0.00972,"69":0.00416,"70":0.00416,"72":0.02498,"73":0.00278,"74":0.00416,"78":0.03609,"80":0.00278,"81":0.01943,"82":0.00833,"83":0.01388,"84":0.00972,"85":0.00416,"86":0.00833,"87":0.00416,"88":0.01804,"89":0.03054,"90":0.00694,"91":0.06107,"92":0.01388,"93":0.02082,"94":0.0347,"95":0.03748,"96":2.00844,"97":1.04794,"98":0.0236,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 20 21 22 25 26 27 28 37 55 59 67 71 75 76 77 79 99 3.5 3.6"},D:{"26":0.00278,"28":0.00416,"29":0.01666,"33":0.0111,"37":0.00139,"38":0.00278,"39":0.00139,"40":0.01666,"43":0.0458,"46":0.00416,"47":0.00278,"48":0.00139,"49":0.00278,"50":0.00833,"51":0.00139,"52":0.00416,"53":0.00694,"54":0.00278,"55":0.00694,"56":0.00416,"57":0.00416,"58":0.00972,"59":0.00278,"60":0.00278,"62":0.00278,"63":0.01388,"64":0.00833,"65":0.00416,"66":0.00416,"67":0.00555,"68":0.00416,"69":0.01943,"70":0.0111,"71":0.00555,"72":0.00972,"73":0.00278,"74":0.00694,"75":0.01249,"76":0.00833,"77":0.00555,"78":0.01666,"79":0.03886,"80":0.01249,"81":0.01249,"83":0.02498,"84":0.00833,"85":0.02082,"86":0.03609,"87":0.04025,"88":0.01804,"89":0.01388,"90":0.02637,"91":0.06107,"92":0.03609,"93":0.02082,"94":0.0347,"95":0.01943,"96":0.17905,"97":2.15418,"98":3.38256,"99":0.00416,"100":0.00416,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 30 31 32 34 35 36 41 42 44 45 61 101"},F:{"18":0.00139,"33":0.00139,"36":0.00694,"38":0.00278,"42":0.00278,"50":0.00278,"53":0.00139,"62":0.00139,"65":0.00416,"66":0.00139,"71":0.00416,"73":0.00278,"74":0.00278,"77":0.00278,"79":0.00972,"80":0.00278,"81":0.00139,"82":0.04719,"83":0.64126,_:"9 11 12 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 37 39 40 41 43 44 45 46 47 48 49 51 52 54 55 56 57 58 60 63 64 67 68 69 70 72 75 76 78 9.5-9.6 10.5 10.6 11.1 11.6 12.1","10.0-10.1":0,"11.5":0.00139},B:{"12":0.0236,"13":0.00555,"14":0.02082,"15":0.00555,"16":0.00972,"17":0.02221,"18":0.06107,"84":0.01388,"85":0.00416,"89":0.00694,"90":0.00694,"91":0.00833,"92":0.01804,"93":0.00833,"94":0.00555,"95":0.00972,"96":0.0347,"97":0.21792,"98":0.60794,_:"79 80 81 83 86 87 88"},E:{"4":0,"12":0.00139,"13":0.00833,"14":0.03609,"15":0.02082,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1","5.1":0.00278,"9.1":0.00139,"10.1":0.00278,"11.1":0.01249,"12.1":0.00278,"13.1":0.02221,"14.1":0.09716,"15.1":0.01388,"15.2-15.3":0.04303,"15.4":0.00278},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00187,"5.0-5.1":0,"6.0-6.1":0.00094,"7.0-7.1":0.01125,"8.1-8.4":0,"9.0-9.2":0.00703,"9.3":0.03328,"10.0-10.2":0.00984,"10.3":0.04031,"11.0-11.2":0.02062,"11.3-11.4":0.06702,"12.0-12.1":0.08952,"12.2-12.5":0.52586,"13.0-13.1":0.05155,"13.2":0.0225,"13.3":0.07874,"13.4-13.7":0.15466,"14.0-14.4":0.69693,"14.5-14.8":0.96736,"15.0-15.1":0.73817,"15.2-15.3":1.1628,"15.4":0.00469},P:{"4":1.45751,"5.0-5.4":0.08041,"6.2-6.4":0.14072,"7.2-7.4":0.65337,"8.2":0.03016,"9.2":0.17088,"10.1":0.08041,"11.1-11.2":0.48249,"12.0":0.13067,"13.0":0.42217,"14.0":0.71368,"15.0":0.48249,"16.0":1.64849},I:{"0":0,"3":0,"4":0.00101,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00406,"4.2-4.3":0.01657,"4.4":0,"4.4.3-4.4.4":0.10754},A:{"9":0.00707,"11":0.22334,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.31003},Q:{"10.4":0},O:{"0":1.30902},H:{"0":6.04158},L:{"0":67.45873},S:{"2.5":0.01722}}; +module.exports={C:{"22":0.00131,"26":0.00131,"30":0.00261,"32":0.00131,"33":0.00131,"35":0.00653,"36":0.00653,"38":0.01436,"39":0.00131,"40":0.00261,"41":0.00653,"42":0.00261,"43":0.00261,"44":0.00914,"45":0.00392,"47":0.01436,"48":0.00392,"49":0.00261,"50":0.00261,"51":0.00131,"52":0.03002,"54":0.00261,"56":0.00783,"57":0.00131,"60":0.00131,"61":0.00261,"62":0.00131,"63":0.00261,"64":0.00261,"65":0.00131,"66":0.00261,"68":0.00261,"69":0.00131,"72":0.04307,"73":0.00261,"78":0.01175,"80":0.00783,"81":0.00261,"82":0.00261,"83":0.00261,"84":0.00522,"85":0.00392,"86":0.00261,"87":0.00131,"88":0.00522,"89":0.01697,"90":0.00261,"91":0.03263,"92":0.02088,"93":0.00653,"94":0.01566,"95":0.01566,"96":0.00522,"97":0.00914,"98":0.01436,"99":0.07047,"100":0.24665,"101":1.52163,"102":0.06003,"103":0.00261,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 31 34 37 46 53 55 58 59 67 70 71 74 75 76 77 79 104 3.5 3.6"},D:{"11":0.00261,"26":0.00131,"28":0.00392,"29":0.00522,"32":0.00653,"33":0.00783,"37":0.00653,"38":0.00522,"40":0.00783,"41":0.00261,"43":0.0261,"45":0.00131,"47":0.00261,"48":0.00261,"49":0.00914,"50":0.00783,"52":0.00261,"55":0.00261,"56":0.00261,"57":0.00783,"58":0.00522,"59":0.00261,"60":0.00392,"62":0.00653,"63":0.01566,"64":0.00653,"65":0.00261,"66":0.00131,"67":0.00261,"68":0.00653,"69":0.01305,"70":0.01697,"71":0.00522,"72":0.00261,"73":0.00131,"74":0.00653,"75":0.00261,"76":0.00653,"77":0.00392,"78":0.02349,"79":0.02349,"80":0.01697,"81":0.01697,"83":0.01175,"84":0.01305,"85":0.00783,"86":0.01958,"87":0.0522,"88":0.06134,"89":0.01305,"90":0.03654,"91":0.04046,"92":0.03785,"93":0.03654,"94":0.03002,"95":0.01436,"96":0.06395,"97":0.06656,"98":0.05351,"99":0.11093,"100":0.11223,"101":0.45284,"102":4.20993,"103":0.42935,"104":0.00392,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 30 31 34 35 36 39 42 44 46 51 53 54 61 105 106"},F:{"20":0.00261,"28":0.00783,"36":0.01958,"42":0.00261,"70":0.00261,"73":0.00392,"75":0.00261,"77":0.00131,"78":0.00131,"79":0.02219,"80":0.00131,"81":0.00783,"82":0.00783,"83":0.00392,"84":0.00914,"85":0.08222,"86":0.0522,"87":0.48677,_:"9 11 12 15 16 17 18 19 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 74 76 9.5-9.6 10.5 10.6 11.1 11.6 12.1","10.0-10.1":0,"11.5":0.00783},B:{"12":0.03002,"13":0.00783,"14":0.01566,"15":0.01436,"16":0.01175,"17":0.01305,"18":0.05351,"83":0.00261,"84":0.02741,"85":0.00522,"86":0.00261,"87":0.00261,"88":0.00392,"89":0.02741,"90":0.01566,"91":0.00522,"92":0.03263,"93":0.00261,"94":0.00261,"95":0.00261,"96":0.01044,"97":0.00653,"98":0.01566,"99":0.01958,"100":0.0261,"101":0.17487,"102":0.89654,"103":0.13442,_:"79 80 81"},E:{"4":0,"13":0.01697,"14":0.03524,"15":0.00783,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 16.0","5.1":0.01175,"11.1":0.00783,"12.1":0.01566,"13.1":0.0248,"14.1":0.04437,"15.1":0.01305,"15.2-15.3":0.00783,"15.4":0.06917,"15.5":0.10179},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0031,"5.0-5.1":0,"6.0-6.1":0.00103,"7.0-7.1":0.01085,"8.1-8.4":0,"9.0-9.2":0.00465,"9.3":0.02584,"10.0-10.2":0.00155,"10.3":0.03618,"11.0-11.2":0.01344,"11.3-11.4":0.02481,"12.0-12.1":0.02739,"12.2-12.5":0.36542,"13.0-13.1":0.05375,"13.2":0.01809,"13.3":0.04652,"13.4-13.7":0.11061,"14.0-14.4":0.598,"14.5-14.8":0.63676,"15.0-15.1":0.34733,"15.2-15.3":0.5122,"15.4":0.92982,"15.5":1.36088,"16.0":0.02791},P:{"4":0.88519,"5.0-5.4":0.0407,"6.2-6.4":0.0814,"7.2-7.4":0.42733,"8.2":0.03086,"9.2":0.06105,"10.1":0.03086,"11.1-11.2":0.25436,"12.0":0.0407,"13.0":0.20349,"14.0":0.43751,"15.0":0.15262,"16.0":0.74274,"17.0":1.03781},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00161,"4.2-4.3":0.00998,"4.4":0,"4.4.3-4.4.4":0.08405},A:{"8":0.00131,"9":0.00522,"11":0.1553,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.7477},H:{"0":10.77551},L:{"0":65.30547},S:{"2.5":0.02609},R:{_:"0"},M:{"0":0.15651}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SE.js index 5c567cf981b52a..00e1cf4a1fa669 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SE.js @@ -1 +1 @@ -module.exports={C:{"52":0.02167,"68":0.00542,"78":0.07043,"84":0.01625,"88":0.01084,"91":0.0596,"92":0.01084,"94":0.01084,"95":0.04334,"96":0.81812,"97":1.27865,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 89 90 93 98 99 3.5 3.6"},D:{"38":0.01084,"49":0.02709,"65":0.01084,"66":0.00542,"67":0.01084,"69":0.16796,"71":0.00542,"72":0.00542,"73":0.00542,"75":0.02709,"76":0.03793,"77":0.02167,"78":0.01084,"79":0.05418,"80":0.03251,"81":0.01084,"83":0.01625,"84":0.04876,"85":0.02709,"86":0.03793,"87":0.17879,"88":0.02709,"89":0.0596,"90":0.0596,"91":0.0596,"92":0.07585,"93":0.47137,"94":0.22756,"95":0.13003,"96":1.07276,"97":12.53725,"98":19.14721,"99":0.02709,"100":0.02167,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 68 70 74 101"},F:{"80":0.01084,"82":0.31966,"83":1.28948,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.01625,"18":0.02709,"85":0.01084,"86":0.01625,"88":0.01084,"89":0.01625,"90":0.00542,"91":0.02167,"92":0.01084,"93":0.01084,"94":0.01084,"95":0.02709,"96":0.12461,"97":1.60373,"98":5.00623,_:"12 13 14 15 17 79 80 81 83 84 87"},E:{"4":0,"13":0.09752,"14":0.57431,"15":0.27632,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.00542,"10.1":0.01625,"11.1":0.03793,"12.1":0.09211,"13.1":0.4822,"14.1":2.10218,"15.1":0.81812,"15.2-15.3":1.72292,"15.4":0.01084},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00236,"7.0-7.1":0.00236,"8.1-8.4":0.00946,"9.0-9.2":0.00473,"9.3":0.07566,"10.0-10.2":0.00473,"10.3":0.13004,"11.0-11.2":0.02837,"11.3-11.4":0.02837,"12.0-12.1":0.03783,"12.2-12.5":0.82989,"13.0-13.1":0.03074,"13.2":0.01891,"13.3":0.09221,"13.4-13.7":0.2719,"14.0-14.4":0.92683,"14.5-14.8":5.26542,"15.0-15.1":3.0713,"15.2-15.3":12.76752,"15.4":0.03074},P:{"4":0.06363,"5.0-5.4":0.08041,"6.2-6.4":0.14072,"7.2-7.4":0.67198,"8.2":0.03016,"9.2":0.02036,"10.1":0.03053,"11.1-11.2":0.0106,"12.0":0.02121,"13.0":0.06363,"14.0":0.08484,"15.0":0.09544,"16.0":3.40414},I:{"0":0,"3":0,"4":0.00761,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00285,"4.2-4.3":0.00666,"4.4":0,"4.4.3-4.4.4":0.03328},A:{"11":0.18963,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.2795},Q:{"10.4":0},O:{"0":0.03207},H:{"0":0.76782},L:{"0":17.42427},S:{"2.5":0}}; +module.exports={C:{"51":0.00869,"52":0.03476,"53":0.00435,"55":0.00869,"56":0.00435,"57":0.00869,"59":0.01304,"60":0.01304,"65":0.00435,"68":0.00869,"75":0.00435,"77":0.00435,"78":0.09559,"79":0.03476,"80":0.05214,"81":0.05214,"82":0.03042,"83":0.02173,"84":0.01738,"88":0.01304,"91":0.05214,"92":0.00435,"95":0.00869,"96":0.00869,"97":0.00869,"98":0.00869,"99":0.02607,"100":0.29546,"101":2.03346,"102":0.08256,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 54 58 61 62 63 64 66 67 69 70 71 72 73 74 76 85 86 87 89 90 93 94 103 104 3.5 3.6"},D:{"38":0.01738,"48":0.00869,"49":0.03042,"52":0.00869,"53":0.00869,"58":0.00869,"62":0.00435,"63":0.01304,"65":0.01304,"66":0.05214,"67":0.00869,"69":0.2216,"73":0.00435,"75":0.03911,"76":0.02173,"77":0.00869,"78":0.01738,"79":0.0869,"80":0.04345,"81":0.01738,"83":0.16077,"84":0.33457,"85":0.26505,"86":0.32153,"87":0.36064,"88":0.01304,"89":0.07387,"90":0.01738,"91":0.03911,"92":0.02607,"93":0.06518,"94":0.03042,"95":0.01738,"96":0.09125,"97":0.05214,"98":0.09125,"99":0.16077,"100":0.4823,"101":2.55921,"102":18.29245,"103":1.43385,"104":0.00435,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 50 51 54 55 56 57 59 60 61 64 68 70 71 72 74 105 106"},F:{"46":0.00435,"68":0.01304,"69":0.01304,"70":0.01304,"71":0.02607,"72":0.00435,"79":0.00869,"85":0.02173,"86":0.42147,"87":0.61265,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 73 74 75 76 77 78 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00869,"18":0.05214,"80":0.00869,"84":0.01738,"85":0.02607,"86":0.01304,"87":0.00869,"88":0.00869,"92":0.00435,"95":0.00435,"96":0.00869,"97":0.00869,"98":0.00869,"99":0.02173,"100":0.09125,"101":0.94721,"102":4.44059,"103":0.86031,_:"12 13 14 15 16 79 81 83 89 90 91 93 94"},E:{"4":0,"13":0.05649,"14":0.25201,"15":0.07387,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.01304,"10.1":0.00869,"11.1":0.03042,"12.1":0.06952,"13.1":0.32588,"14.1":0.84728,"15.1":0.14339,"15.2-15.3":0.14773,"15.4":0.98197,"15.5":2.55052},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00284,"8.1-8.4":0.00851,"9.0-9.2":0.00851,"9.3":0.08505,"10.0-10.2":0.00851,"10.3":0.11908,"11.0-11.2":0.02268,"11.3-11.4":0.04536,"12.0-12.1":0.03119,"12.2-12.5":0.7343,"13.0-13.1":0.02552,"13.2":0.01985,"13.3":0.07655,"13.4-13.7":0.29202,"14.0-14.4":0.74281,"14.5-14.8":2.8153,"15.0-15.1":0.49048,"15.2-15.3":1.10287,"15.4":3.77925,"15.5":17.8586,"16.0":0.02835},P:{"4":0.12475,"5.0-5.4":0.02079,"6.2-6.4":0.02039,"7.2-7.4":1.06644,"8.2":0.03086,"9.2":0.09141,"10.1":0.03086,"11.1-11.2":0.0104,"12.0":0.03119,"13.0":0.05198,"14.0":0.05198,"15.0":0.04158,"16.0":0.21831,"17.0":3.9504},I:{"0":0,"3":0,"4":0.00129,"2.1":0,"2.2":0,"2.3":0,"4.1":0.009,"4.2-4.3":0.009,"4.4":0,"4.4.3-4.4.4":0.03727},A:{"8":0.00869,"9":0.01304,"11":0.24332,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.02262},H:{"0":0.18203},L:{"0":23.26878},S:{"2.5":0},R:{_:"0"},M:{"0":0.42413}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SG.js index 33e707616761c9..6ec91e5793e6f5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SG.js @@ -1 +1 @@ -module.exports={C:{"34":0.00281,"48":0.00562,"52":0.00562,"63":0.00562,"78":0.0225,"79":0.00281,"80":0.00562,"83":0.00281,"84":0.00562,"87":0.0225,"88":0.00844,"89":0.00844,"90":0.01406,"91":0.01968,"92":0.00844,"93":0.00562,"94":0.01125,"95":0.0225,"96":0.50054,"97":0.81548,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 70 71 72 73 74 75 76 77 81 82 85 86 98 99 3.5 3.6"},D:{"22":0.00562,"26":0.00562,"34":0.03937,"38":0.10404,"47":0.0225,"49":0.02531,"53":0.02812,"55":0.00562,"56":0.01406,"57":0.00562,"60":0.01125,"62":0.00562,"64":0.03374,"65":0.01406,"66":0.01125,"67":0.01687,"68":0.00562,"69":0.00281,"70":0.03656,"71":0.00562,"72":0.03374,"73":0.00562,"74":0.00562,"75":0.00562,"76":0.01406,"77":0.01125,"78":0.01687,"79":0.31776,"80":0.05343,"81":0.03937,"83":0.03937,"84":0.03374,"85":0.03656,"86":0.03374,"87":0.08436,"88":0.02812,"89":0.02531,"90":0.01687,"91":0.05905,"92":0.05905,"93":0.16028,"94":0.11248,"95":0.07592,"96":0.40774,"97":5.02223,"98":12.08316,"99":0.00844,"100":0.00844,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 58 59 61 63 101"},F:{"36":0.01406,"40":0.00562,"46":0.03374,"77":0.01406,"78":0.00844,"79":0.01125,"80":0.01125,"81":0.00844,"82":0.05905,"83":0.28401,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00281,"18":0.00844,"84":0.00281,"92":0.00281,"94":0.00281,"95":0.01968,"96":0.01687,"97":0.43867,"98":1.69282,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 89 90 91 93"},E:{"4":0,"8":0.00562,"12":0.00562,"13":0.05062,"14":0.21371,"15":0.14622,_:"0 5 6 7 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.00281,"10.1":0.01125,"11.1":0.01968,"12.1":0.02812,"13.1":0.19122,"14.1":0.88578,"15.1":0.52022,"15.2-15.3":0.97014,"15.4":0.01125},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00149,"6.0-6.1":0.00595,"7.0-7.1":0.01638,"8.1-8.4":0.01638,"9.0-9.2":0.00595,"9.3":0.12505,"10.0-10.2":0.02084,"10.3":0.08188,"11.0-11.2":0.0268,"11.3-11.4":0.02977,"12.0-12.1":0.02531,"12.2-12.5":0.4362,"13.0-13.1":0.0268,"13.2":0.01042,"13.3":0.05211,"13.4-13.7":0.18311,"14.0-14.4":0.50914,"14.5-14.8":2.17801,"15.0-15.1":2.18545,"15.2-15.3":8.89811,"15.4":0.04913},P:{"4":0.50181,"5.0-5.4":0.01029,"6.2-6.4":0.07216,"7.2-7.4":0.07202,"8.2":0.03042,"9.2":0.03087,"10.1":0.01029,"11.1-11.2":0.05144,"12.0":0.03072,"13.0":0.07169,"14.0":0.03072,"15.0":0.0512,"16.0":2.92892},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":7.25348,"4.4":0,"4.4.3-4.4.4":21.76044},A:{"8":0.00891,"9":0.00891,"11":0.21838,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.37372},Q:{"10.4":0.02156},O:{"0":0.50309},H:{"0":0.46949},L:{"0":19.10707},S:{"2.5":0}}; +module.exports={C:{"25":0.00248,"48":0.00248,"52":0.00745,"65":0.00496,"78":0.02234,"80":0.00248,"81":0.00745,"82":0.00745,"83":0.00496,"84":0.00248,"88":0.00745,"89":0.00248,"90":0.00496,"91":0.01986,"93":0.02234,"95":0.00496,"96":0.01241,"98":0.00745,"99":0.00993,"100":0.10673,"101":1.00521,"102":0.03475,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 79 85 86 87 92 94 97 103 104 3.5 3.6"},D:{"22":0.00248,"26":0.00248,"34":0.0273,"38":0.07446,"47":0.01737,"48":0.00248,"49":0.01737,"53":0.01737,"55":0.00496,"56":0.00993,"57":0.00496,"60":0.01986,"65":0.00745,"66":0.00745,"67":0.01241,"68":0.00496,"69":0.00248,"70":0.00496,"71":0.00496,"72":0.00248,"73":0.00248,"74":0.00496,"75":0.00496,"76":0.00745,"77":0.00496,"78":0.01489,"79":0.23083,"80":0.03723,"81":0.02978,"83":0.04716,"84":0.06701,"85":0.05709,"86":0.07446,"87":0.08191,"88":0.02234,"89":0.01737,"90":0.00745,"91":0.03971,"92":0.03227,"93":0.01241,"94":0.06205,"95":0.01986,"96":0.0546,"97":0.05957,"98":0.07446,"99":0.10176,"100":0.23579,"101":1.13179,"102":12.99079,"103":1.23604,"104":0.00993,"105":0.00248,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 50 51 52 54 58 59 61 62 63 64 106"},F:{"28":0.00745,"36":0.00993,"40":0.00248,"46":0.02482,"68":0.00248,"71":0.00496,"72":0.00248,"85":0.00745,"86":0.08439,"87":0.21345,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00248,"18":0.01241,"84":0.00496,"85":0.00496,"86":0.00745,"98":0.00496,"99":0.01986,"100":0.01489,"101":0.22586,"102":1.44204,"103":0.3028,_:"12 13 14 16 17 79 80 81 83 87 88 89 90 91 92 93 94 95 96 97"},E:{"4":0,"8":0.01241,"12":0.00248,"13":0.03723,"14":0.12162,"15":0.05212,_:"0 5 6 7 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.00248,"10.1":0.00496,"11.1":0.01737,"12.1":0.02482,"13.1":0.13403,"14.1":0.35493,"15.1":0.0695,"15.2-15.3":0.0695,"15.4":0.56341,"15.5":1.48672,"16.0":0.00248},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00607,"7.0-7.1":0.01213,"8.1-8.4":0.0091,"9.0-9.2":0.00455,"9.3":0.1001,"10.0-10.2":0.00758,"10.3":0.05612,"11.0-11.2":0.01668,"11.3-11.4":0.01668,"12.0-12.1":0.01365,"12.2-12.5":0.30789,"13.0-13.1":0.01517,"13.2":0.00758,"13.3":0.03792,"13.4-13.7":0.1274,"14.0-14.4":0.31851,"14.5-14.8":0.96615,"15.0-15.1":0.34126,"15.2-15.3":0.56725,"15.4":2.08246,"15.5":10.08924,"16.0":0.01517},P:{"4":0.3892,"5.0-5.4":0.04223,"6.2-6.4":0.03167,"7.2-7.4":0.11612,"8.2":0.01056,"9.2":0.04223,"10.1":0.05352,"11.1-11.2":0.04223,"12.0":0.01024,"13.0":0.06145,"14.0":0.01024,"15.0":0.02048,"16.0":0.13315,"17.0":3.02145},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":7.37516,"4.4":0,"4.4.3-4.4.4":22.12547},A:{"8":0.00865,"9":0.00865,"11":0.1341,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0.01504},O:{"0":0.45108},H:{"0":0.50535},L:{"0":20.23414},S:{"2.5":0},R:{_:"0"},M:{"0":0.4586}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SH.js index 666d0dc2ba105a..20a97296bbc6d5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SH.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SH.js @@ -1 +1 @@ -module.exports={C:{"85":0.22214,"96":0.22214,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 95 97 98 99 3.5 3.6"},D:{"49":1.10502,"96":0.22214,"97":18.10474,"98":3.31222,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 99 100 101"},F:{"83":2.87078,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4","11.1":0.44144},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":13.12716,"13.0-13.1":0,"13.2":0.63491,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0.63491,"15.0-15.1":0,"15.2-15.3":0,"15.4":0},P:{"4":0.12615,"5.0-5.4":0.01121,"6.2-6.4":0.01012,"7.2-7.4":0.12615,"8.2":0.03083,"9.2":0.07359,"10.1":0.03037,"11.1-11.2":0.22276,"12.0":0.02102,"13.0":0.05256,"14.0":0.6784,"15.0":0.09461,"16.0":0.97764},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.22214,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,"11":0.03845},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":52.62442},H:{"0":0},L:{"0":5.36322},S:{"2.5":0}}; +module.exports={C:{_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 3.5 3.6"},D:{"102":100,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 106"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 15.2-15.3 15.4 15.5 16.0"},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":0,"15.2-15.3":0,"15.4":0,"15.5":0,"16.0":0},P:{"4":0.06635,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.06635,"8.2":0.01015,"9.2":0.01035,"10.1":0.01018,"11.1-11.2":0.06635,"12.0":0.01106,"13.0":0.01106,"14.0":0.02212,"15.0":0.02212,"16.0":0.16587,"17.0":0.53078},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":0},S:{"2.5":0},R:{_:"0"},M:{"0":0}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SI.js index 18e4fb9d65e446..5c5d15e6523e8c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SI.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SI.js @@ -1 +1 @@ -module.exports={C:{"52":0.18429,"60":0.02304,"66":0.01152,"67":0.01728,"68":0.01152,"71":0.00576,"76":0.00576,"77":0.02304,"78":0.10942,"82":0.02304,"83":0.0288,"84":0.01728,"87":0.00576,"88":0.05183,"89":0.03455,"90":0.01152,"91":0.13822,"92":0.01728,"93":0.01152,"94":0.0288,"95":0.1267,"96":2.6549,"97":4.22135,"98":0.01728,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 69 70 72 73 74 75 79 80 81 85 86 99 3.5 3.6"},D:{"49":0.07487,"51":0.0288,"63":0.02304,"69":0.02304,"70":0.00576,"72":0.00576,"76":0.0288,"77":0.01728,"78":0.01152,"79":0.04607,"80":0.02304,"81":0.01152,"83":0.02304,"84":0.03455,"85":0.02304,"86":0.04607,"87":0.05759,"88":0.01152,"89":0.03455,"90":0.08063,"91":0.12094,"92":0.05183,"93":0.71412,"94":0.04031,"95":0.06911,"96":0.85233,"97":10.40651,"98":25.89246,"99":0.01152,"100":0.00576,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 71 73 74 75 101"},F:{"82":0.38585,"83":1.36488,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.02304,"86":0.00576,"92":0.01152,"94":0.00576,"95":0.01152,"96":0.04031,"97":1.0539,"98":3.88157,_:"12 13 14 15 16 17 79 80 81 83 84 85 87 88 89 90 91 93"},E:{"4":0,"5":0.01728,"13":0.04607,"14":0.14398,"15":0.13246,_:"0 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.00576,"11.1":0.02304,"12.1":0.0288,"13.1":0.24764,"14.1":0.46648,"15.1":0.34554,"15.2-15.3":0.56438,"15.4":0.00576},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00288,"6.0-6.1":0.00192,"7.0-7.1":0.00096,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02397,"10.0-10.2":0.00192,"10.3":0.04027,"11.0-11.2":0.00575,"11.3-11.4":0.00863,"12.0-12.1":0.00863,"12.2-12.5":0.15052,"13.0-13.1":0.00959,"13.2":0.00288,"13.3":0.02013,"13.4-13.7":0.10834,"14.0-14.4":0.50335,"14.5-14.8":1.65097,"15.0-15.1":1.67878,"15.2-15.3":5.29616,"15.4":0.06903},P:{"4":0.03157,"5.0-5.4":0.01029,"6.2-6.4":0.07216,"7.2-7.4":0.07202,"8.2":0.03042,"9.2":0.03087,"10.1":0.01029,"11.1-11.2":0.04209,"12.0":0.01052,"13.0":0.10523,"14.0":0.12628,"15.0":0.09471,"16.0":2.694},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00308,"4.2-4.3":0.00463,"4.4":0,"4.4.3-4.4.4":0.02622},A:{"11":0.42041,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.4241},Q:{"10.4":0},O:{"0":0.01272},H:{"0":0.22886},L:{"0":29.11605},S:{"2.5":0}}; +module.exports={C:{"52":0.21382,"60":0.02086,"66":0.00522,"68":0.01565,"72":0.00522,"73":1.2151,"76":0.00522,"78":0.06258,"83":0.01043,"84":0.00522,"88":0.04172,"89":0.01043,"90":0.00522,"91":0.16167,"92":0.00522,"95":0.03651,"96":0.01565,"97":0.02608,"98":0.03129,"99":0.09387,"100":0.82397,"101":5.38188,"102":0.21382,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 67 69 70 71 74 75 77 79 80 81 82 85 86 87 93 94 103 104 3.5 3.6"},D:{"49":0.09909,"51":0.02608,"58":0.00522,"60":0.10952,"67":0.00522,"69":0.02086,"74":0.00522,"76":0.03129,"77":0.01565,"78":0.01565,"79":0.04172,"80":0.03129,"81":0.02086,"83":0.00522,"84":0.03651,"85":0.02608,"86":0.02086,"87":0.03651,"88":0.03651,"89":0.03129,"90":0.0678,"91":0.04172,"92":0.03651,"93":0.01565,"94":0.01565,"95":0.01565,"96":0.0678,"97":0.05737,"98":0.10952,"99":0.10952,"100":0.33898,"101":2.02864,"102":26.98763,"103":2.27896,"104":0.04172,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 52 53 54 55 56 57 59 61 62 63 64 65 66 68 70 71 72 73 75 105 106"},F:{"28":0.02086,"46":0.01565,"85":0.04694,"86":0.57887,"87":1.09515,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00522,"18":0.01043,"86":0.00522,"87":0.01043,"89":0.00522,"92":0.01043,"97":0.01043,"98":0.01043,"99":0.01565,"100":0.03129,"101":0.55279,"102":3.64529,"103":0.71446,_:"12 13 14 15 16 79 80 81 83 84 85 88 90 91 93 94 95 96"},E:{"4":0,"5":0.01565,"13":0.03129,"14":0.09387,"15":0.04694,_:"0 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.01043,"11.1":0.01043,"12.1":0.02608,"13.1":0.13038,"14.1":0.34419,"15.1":0.08866,"15.2-15.3":0.08344,"15.4":0.40677,"15.5":0.96478,"16.0":0.00522},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00448,"7.0-7.1":0.00224,"8.1-8.4":0.00336,"9.0-9.2":0,"9.3":0.02015,"10.0-10.2":0.00112,"10.3":0.05485,"11.0-11.2":0.0056,"11.3-11.4":0.01567,"12.0-12.1":0.01119,"12.2-12.5":0.14999,"13.0-13.1":0.01007,"13.2":0.0056,"13.3":0.01903,"13.4-13.7":0.07387,"14.0-14.4":0.24401,"14.5-14.8":0.89881,"15.0-15.1":0.34027,"15.2-15.3":0.78464,"15.4":1.94648,"15.5":6.51439,"16.0":0.03134},P:{"4":0.09322,"5.0-5.4":0.04223,"6.2-6.4":0.03167,"7.2-7.4":0.11612,"8.2":0.01056,"9.2":0.04223,"10.1":0.05352,"11.1-11.2":0.04143,"12.0":0.01034,"13.0":0.04143,"14.0":0.09322,"15.0":0.04143,"16.0":0.3211,"17.0":2.75523},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01435,"4.2-4.3":0.00478,"4.4":0,"4.4.3-4.4.4":0.0287},A:{"11":0.22946,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01914},H:{"0":0.23099},L:{"0":32.89974},S:{"2.5":0},R:{_:"0"},M:{"0":0.47362}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SK.js index 7909b0fbb77af3..1972d97a078411 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SK.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SK.js @@ -1 +1 @@ -module.exports={C:{"52":0.14582,"56":0.01042,"65":0.00521,"68":0.01042,"72":0.01042,"74":0.00521,"78":0.05208,"80":0.01042,"81":0.01042,"82":0.01042,"84":0.00521,"87":0.03125,"88":0.02604,"89":0.01042,"90":0.01042,"91":0.10416,"92":0.02604,"93":0.01042,"94":0.02604,"95":0.07291,"96":2.32277,"97":3.81226,"98":0.02083,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 66 67 69 70 71 73 75 76 77 79 83 85 86 99 3.5 3.6"},D:{"34":0.01042,"38":0.10416,"43":0.01042,"47":0.01562,"49":0.11458,"53":0.02604,"63":0.09895,"67":0.00521,"70":0.01042,"71":0.01042,"72":0.02083,"74":0.00521,"75":0.00521,"77":0.01042,"78":0.01562,"79":0.35414,"80":0.01562,"81":0.04166,"83":0.02604,"84":0.05208,"85":0.05208,"86":0.11458,"87":0.04687,"88":0.01562,"89":0.07291,"90":0.02083,"91":0.04166,"92":0.05208,"93":0.15624,"94":0.03646,"95":0.08854,"96":0.42706,"97":9.44731,"98":21.78506,"99":0.01562,"100":0.01042,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 44 45 46 48 50 51 52 54 55 56 57 58 59 60 61 62 64 65 66 68 69 73 76 101"},F:{"28":0.02604,"36":0.01042,"40":0.00521,"46":0.01562,"69":0.01042,"78":0.01042,"79":0.01042,"80":0.01562,"81":0.00521,"82":0.55726,"83":2.70295,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.01562,"18":0.01562,"85":0.00521,"86":0.01042,"87":0.01042,"91":0.02083,"92":0.01042,"93":0.00521,"94":0.01042,"95":0.01562,"96":0.03646,"97":0.9739,"98":3.41645,_:"12 13 14 15 16 79 80 81 83 84 88 89 90"},E:{"4":0,"12":0.01042,"13":0.02604,"14":0.17707,"15":0.08854,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01042,"12.1":0.03646,"13.1":0.1927,"14.1":0.44789,"15.1":0.30206,"15.2-15.3":0.64579,"15.4":0.00521},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01039,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03117,"10.0-10.2":0,"10.3":0.08001,"11.0-11.2":0.00935,"11.3-11.4":0.01247,"12.0-12.1":0.00831,"12.2-12.5":0.23898,"13.0-13.1":0.00727,"13.2":0.01559,"13.3":0.02494,"13.4-13.7":0.1143,"14.0-14.4":0.35224,"14.5-14.8":1.65209,"15.0-15.1":1.67079,"15.2-15.3":6.08052,"15.4":0.07585},P:{"4":0.49039,"5.0-5.4":0.01029,"6.2-6.4":0.07216,"7.2-7.4":0.07202,"8.2":0.03042,"9.2":0.03087,"10.1":0.01029,"11.1-11.2":0.04174,"12.0":0.0313,"13.0":0.05217,"14.0":0.07304,"15.0":0.07304,"16.0":2.00331},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0029,"4.2-4.3":0.00639,"4.4":0,"4.4.3-4.4.4":0.04821},A:{"9":0.00521,"11":0.28123,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.27794},Q:{"10.4":0},O:{"0":0.04792},H:{"0":0.3947},L:{"0":34.01666},S:{"2.5":0}}; +module.exports={C:{"33":0.0237,"44":0.00948,"48":0.00474,"52":0.1422,"56":0.01422,"68":0.0237,"78":0.03792,"80":0.00474,"81":0.00948,"82":0.00948,"84":0.00948,"88":0.01422,"89":0.00474,"90":0.02844,"91":0.12324,"92":0.00948,"94":0.00474,"95":0.01422,"96":0.00948,"97":0.04266,"98":0.06162,"99":0.07584,"100":0.56406,"101":4.75422,"102":0.15642,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 83 85 86 87 93 103 104 3.5 3.6"},D:{"34":0.00948,"38":0.0474,"43":0.00474,"47":0.00948,"49":0.0948,"50":0.00474,"53":0.01896,"63":0.10902,"65":0.00474,"68":0.00948,"69":0.10428,"70":0.00948,"71":0.00948,"72":0.01422,"74":0.00948,"76":0.01422,"79":0.28914,"80":0.00948,"81":0.03318,"83":0.02844,"84":0.03792,"85":0.03792,"86":0.0711,"87":0.04266,"88":0.00948,"89":0.03792,"90":0.05214,"91":0.0237,"92":0.03318,"93":0.0237,"94":0.09954,"95":0.00948,"96":0.06636,"97":0.02844,"98":0.05688,"99":0.13746,"100":0.37446,"101":1.57368,"102":24.51054,"103":1.93866,"104":0.00474,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 44 45 46 48 51 52 54 55 56 57 58 59 60 61 62 64 66 67 73 75 77 78 105 106"},F:{"28":0.02844,"36":0.00474,"40":0.00474,"46":0.02844,"69":0.00948,"72":0.00474,"84":0.00948,"85":0.07584,"86":0.6873,"87":2.04294,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00474,"18":0.01422,"86":0.00474,"87":0.00474,"91":0.01422,"92":0.00948,"96":0.00474,"97":0.00948,"98":0.00948,"99":0.01896,"100":0.01896,"101":0.50244,"102":2.98146,"103":0.60672,_:"12 13 14 16 17 79 80 81 83 84 85 88 89 90 93 94 95"},E:{"4":0,"12":0.00474,"13":0.0237,"14":0.1185,"15":0.04266,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.00474,"11.1":0.00948,"12.1":0.02844,"13.1":0.13746,"14.1":0.24648,"15.1":0.0948,"15.2-15.3":0.06636,"15.4":0.37446,"15.5":0.92904,"16.0":0.00474},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01565,"6.0-6.1":0,"7.0-7.1":0.00112,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02123,"10.0-10.2":0,"10.3":0.08046,"11.0-11.2":0.00335,"11.3-11.4":0.01229,"12.0-12.1":0.00894,"12.2-12.5":0.22797,"13.0-13.1":0.00671,"13.2":0.00894,"13.3":0.01788,"13.4-13.7":0.07376,"14.0-14.4":0.23133,"14.5-14.8":0.67275,"15.0-15.1":0.31402,"15.2-15.3":0.49506,"15.4":1.90984,"15.5":6.95655,"16.0":0.06705},P:{"4":0.36192,"5.0-5.4":0.04223,"6.2-6.4":0.03167,"7.2-7.4":0.11612,"8.2":0.01056,"9.2":0.04223,"10.1":0.05352,"11.1-11.2":0.02068,"12.0":0.01034,"13.0":0.04136,"14.0":0.0517,"15.0":0.03102,"16.0":0.14477,"17.0":2.06814},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00809,"4.2-4.3":0.01315,"4.4":0,"4.4.3-4.4.4":0.05766},A:{"11":0.17538,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.04208},H:{"0":0.52288},L:{"0":37.29946},S:{"2.5":0},R:{_:"0"},M:{"0":0.31034}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SL.js index 15c88a488be5ce..b06a70b512f48d 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SL.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SL.js @@ -1 +1 @@ -module.exports={C:{"30":0.00225,"33":0.00225,"35":0.01578,"43":0.00902,"45":0.00676,"47":0.00225,"57":0.00451,"61":0.00225,"78":0.00451,"80":0.00225,"87":0.00451,"91":0.00902,"94":0.00225,"95":0.03156,"96":0.41474,"97":0.73706,"98":0.06311,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 34 36 37 38 39 40 41 42 44 46 48 49 50 51 52 53 54 55 56 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 81 82 83 84 85 86 88 89 90 92 93 99 3.5 3.6"},D:{"34":0.02029,"37":0.01127,"43":0.01578,"44":0.00225,"46":0.00676,"48":0.00225,"49":0.01803,"53":0.00676,"55":0.00451,"56":0.00451,"57":0.01803,"60":0.02705,"62":0.00225,"63":0.00225,"64":0.0293,"65":0.00902,"67":0.00676,"68":0.00225,"69":0.00902,"72":0.2547,"73":0.00676,"74":0.00676,"75":0.02029,"76":0.01803,"77":0.02479,"79":0.01352,"80":0.00902,"81":0.00902,"83":0.02029,"84":0.01352,"85":0.00451,"86":0.02029,"87":0.0293,"88":0.01803,"89":0.01803,"90":0.00676,"91":0.02254,"92":0.02029,"93":0.03832,"94":0.02479,"95":0.01803,"96":0.18934,"97":3.01811,"98":5.74319,"99":0.01352,"100":0.00225,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 38 39 40 41 42 45 47 50 51 52 54 58 59 61 66 70 71 78 101"},F:{"20":0.00451,"31":0.00225,"38":0.00225,"42":0.01127,"48":0.00225,"60":0.00676,"62":0.00451,"64":0.00451,"66":0.00225,"67":0.00225,"79":0.01352,"80":0.00225,"81":0.00902,"82":0.1961,"83":0.70776,_:"9 11 12 15 16 17 18 19 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 39 40 41 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 63 65 68 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.07664,"13":0.04057,"14":0.03381,"15":0.02254,"16":0.04057,"17":0.01352,"18":0.11045,"80":0.00451,"84":0.01803,"85":0.01352,"87":0.01127,"88":0.00451,"89":0.01803,"90":0.01578,"91":0.01578,"92":0.06762,"93":0.01803,"94":0.01352,"95":0.0293,"96":0.11045,"97":0.51166,"98":1.65894,_:"79 81 83 86"},E:{"4":0,"13":0.00451,"14":0.02705,"15":0.01127,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 10.1 15.4","5.1":0.00451,"7.1":0.00225,"9.1":0.00225,"11.1":0.01578,"12.1":0.00451,"13.1":0.01578,"14.1":0.23442,"15.1":0.0586,"15.2-15.3":0.05184},G:{"8":0.00207,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00069,"5.0-5.1":0,"6.0-6.1":0.00207,"7.0-7.1":0.00829,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.09815,"10.0-10.2":0.00415,"10.3":0.03456,"11.0-11.2":0.03387,"11.3-11.4":0.01313,"12.0-12.1":0.06013,"12.2-12.5":0.59236,"13.0-13.1":0.05806,"13.2":0.03387,"13.3":0.1258,"13.4-13.7":0.18455,"14.0-14.4":1.16744,"14.5-14.8":1.51165,"15.0-15.1":1.43078,"15.2-15.3":1.54483,"15.4":0.00207},P:{"4":0.1852,"5.0-5.4":0.01029,"6.2-6.4":0.07216,"7.2-7.4":0.07202,"8.2":0.03042,"9.2":0.03087,"10.1":0.01029,"11.1-11.2":0.05144,"12.0":0.16495,"13.0":0.03087,"14.0":0.10289,"15.0":0.11318,"16.0":0.80254},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0012,"4.2-4.3":0.00329,"4.4":0,"4.4.3-4.4.4":0.04972},A:{"10":0.02058,"11":0.18228,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.01549},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.12392},Q:{"10.4":0},O:{"0":1.79684},H:{"0":18.71978},L:{"0":52.91197},S:{"2.5":0.02324}}; +module.exports={C:{"30":0.00234,"36":0.00468,"43":0.00935,"47":0.00234,"72":0.00468,"89":0.00701,"91":0.01403,"95":0.00468,"97":0.00701,"98":0.00234,"99":0.01637,"100":0.11456,"101":0.92585,"102":0.08183,"103":0.01169,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 37 38 39 40 41 42 44 45 46 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 92 93 94 96 104 3.5 3.6"},D:{"26":0.00468,"34":0.00701,"36":0.00468,"43":0.00935,"46":0.00468,"48":0.00701,"55":0.00701,"58":0.00234,"60":0.00468,"63":0.00468,"64":0.00935,"65":0.00234,"67":0.00234,"69":0.00468,"70":0.00468,"71":0.00468,"72":0.01637,"73":0.00468,"74":0.00701,"75":0.01169,"76":0.01169,"77":0.00234,"79":0.0187,"80":0.01637,"81":0.00468,"83":0.00701,"85":0.01403,"86":0.02338,"87":0.03507,"88":0.00935,"89":0.00234,"90":0.00935,"91":0.00935,"92":0.01403,"93":0.03273,"94":0.02806,"95":0.02104,"96":0.04676,"97":0.0491,"98":0.03507,"99":0.10287,"100":0.19405,"101":0.52839,"102":6.89944,"103":0.96559,"104":0.00468,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 37 38 39 40 41 42 44 45 47 49 50 51 52 53 54 56 57 59 61 62 66 68 78 84 105 106"},F:{"37":0.00234,"40":0.00234,"42":0.00701,"45":0.00468,"65":0.01169,"73":0.00468,"75":0.00234,"76":0.00234,"79":0.02338,"85":0.02104,"86":0.06313,"87":0.65932,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 41 43 44 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 74 77 78 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.06546,"13":0.03273,"14":0.00935,"15":0.03741,"16":0.02572,"17":0.01403,"18":0.14028,"80":0.00468,"84":0.02338,"85":0.02104,"89":0.02572,"90":0.03273,"91":0.00468,"92":0.07715,"93":0.00468,"94":0.00234,"95":0.00468,"96":0.02338,"97":0.01403,"98":0.02572,"99":0.04208,"100":0.04208,"101":0.36707,"102":1.89612,"103":0.26419,_:"79 81 83 86 87 88"},E:{"4":0,"13":0.00234,"14":0.02806,"15":0.00468,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.00935,"11.1":0.00468,"12.1":0.00935,"13.1":0.03273,"14.1":0.02806,"15.1":0.03273,"15.2-15.3":0.01403,"15.4":0.03273,"15.5":0.14963},G:{"8":0.00165,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00495,"6.0-6.1":0.01236,"7.0-7.1":0.01484,"8.1-8.4":0.00577,"9.0-9.2":0.00165,"9.3":0.075,"10.0-10.2":0.00082,"10.3":0.19615,"11.0-11.2":0.01566,"11.3-11.4":0.0239,"12.0-12.1":0.02885,"12.2-12.5":0.55467,"13.0-13.1":0.08077,"13.2":0.03626,"13.3":0.0783,"13.4-13.7":0.13352,"14.0-14.4":1.3673,"14.5-14.8":1.32114,"15.0-15.1":0.63049,"15.2-15.3":0.88928,"15.4":1.16125,"15.5":1.55109,"16.0":0.02802},P:{"4":0.0739,"5.0-5.4":0.04223,"6.2-6.4":0.03167,"7.2-7.4":0.11612,"8.2":0.01056,"9.2":0.04223,"10.1":0.05352,"11.1-11.2":0.04223,"12.0":0.03211,"13.0":0.02111,"14.0":0.06334,"15.0":0.03167,"16.0":0.20057,"17.0":0.74951},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00498,"4.2-4.3":0.00146,"4.4":0,"4.4.3-4.4.4":0.03953},A:{"10":0.00606,"11":0.07577,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.93082},H:{"0":15.28394},L:{"0":56.18963},S:{"2.5":0.00766},R:{_:"0"},M:{"0":0.2222}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SM.js index 356a899cf2bfd4..7458fff8d141b7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SM.js @@ -1 +1 @@ -module.exports={C:{"48":0.02024,"52":0.02699,"56":0.02024,"59":0.02024,"60":0.01349,"64":0.01349,"78":0.24289,"87":0.00675,"89":0.01349,"90":0.04723,"91":0.07422,"93":0.01349,"95":0.12819,"96":1.49109,"97":3.11711,"98":0.04048,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 61 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 92 94 99 3.5 3.6"},D:{"49":0.03374,"66":0.00675,"71":0.01349,"76":0.60048,"77":0.02699,"79":0.18892,"80":0.01349,"84":0.02699,"87":0.17542,"88":0.02024,"89":0.00675,"91":0.02024,"92":0.02024,"95":0.00675,"96":0.31711,"97":13.85834,"98":32.88488,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 72 73 74 75 78 81 83 85 86 90 93 94 99 100 101"},F:{"77":0.04723,"82":0.05398,"83":0.25639,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.03374,"95":0.01349,"97":1.28193,"98":4.52049,_:"12 13 14 15 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 96"},E:{"4":0,"13":0.04723,"14":0.16193,"15":0.22265,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.56,"12.1":0.16193,"13.1":1.17398,"14.1":1.03229,"15.1":0.41831,"15.2-15.3":1.2347},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00258,"9.0-9.2":0.00773,"9.3":0.02406,"10.0-10.2":0,"10.3":0.02148,"11.0-11.2":0.0696,"11.3-11.4":0.00258,"12.0-12.1":0.00516,"12.2-12.5":0.65729,"13.0-13.1":0,"13.2":0.00516,"13.3":0,"13.4-13.7":0.13661,"14.0-14.4":1.00355,"14.5-14.8":1.17797,"15.0-15.1":0.76211,"15.2-15.3":4.705,"15.4":0.01031},P:{"4":0.08266,"5.0-5.4":0.01121,"6.2-6.4":0.04087,"7.2-7.4":0.63347,"8.2":0.16348,"9.2":0.01033,"10.1":0.01033,"11.1-11.2":0.11366,"12.0":0.05109,"13.0":0.34739,"14.0":0.093,"15.0":0.01033,"16.0":3.01725},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00798,"4.4":0,"4.4.3-4.4.4":0.05383},A:{"11":0.1147,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.1106},Q:{"10.4":0},O:{"0":0},H:{"0":0.02156},L:{"0":20.72511},S:{"2.5":0}}; +module.exports={C:{"48":0.01171,"52":0.01171,"56":0.02928,"69":0.00586,"78":0.03513,"88":0.02342,"91":0.15809,"95":0.03513,"96":0.04099,"97":0.06441,"98":0.01757,"99":0.01757,"100":0.60307,"101":2.9275,"102":0.07026,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 94 103 104 3.5 3.6"},D:{"66":0.00586,"76":0.11125,"77":0.01171,"79":0.31617,"81":0.00586,"83":0.01171,"84":0.0527,"87":0.1171,"91":0.03513,"92":0.02342,"95":0.01171,"96":0.04099,"97":0.02342,"98":0.14052,"99":0.0527,"100":0.16394,"101":4.52006,"102":28.23281,"103":3.91114,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 78 80 85 86 88 89 90 93 94 104 105 106"},F:{"82":0.00586,"86":0.06441,"87":0.57379,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"92":0.0527,"101":1.26468,"102":9.04598,"103":0.71431,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 100"},E:{"4":0,"13":0.01757,"14":0.26348,"15":0.21078,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.02928,"11.1":0.09954,"12.1":0.07612,"13.1":0.83141,"14.1":0.17565,"15.1":0.44498,"15.2-15.3":0.0527,"15.4":0.7553,"15.5":1.21784},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00493,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.00493,"9.3":0.01644,"10.0-10.2":0,"10.3":0.01644,"11.0-11.2":0.00493,"11.3-11.4":0.00329,"12.0-12.1":0.01973,"12.2-12.5":0.77424,"13.0-13.1":0,"13.2":0,"13.3":0.00822,"13.4-13.7":0.04603,"14.0-14.4":0.24,"14.5-14.8":1.54684,"15.0-15.1":0.28109,"15.2-15.3":0.16931,"15.4":8.15993,"15.5":5.11393,"16.0":0.02466},P:{"4":0.23701,"5.0-5.4":0.01056,"6.2-6.4":0.0103,"7.2-7.4":0.48433,"8.2":0.01015,"9.2":0.08244,"10.1":0.01018,"11.1-11.2":0.02068,"12.0":0.07213,"13.0":0.96866,"14.0":0.01034,"15.0":0.29884,"16.0":0.01034,"17.0":2.53269},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.04974},A:{"11":0.06441,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.02747},L:{"0":22.36902},S:{"2.5":0},R:{_:"0"},M:{"0":0.17409}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SN.js index 41a9b8e1930343..5d45b4433b4eb4 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SN.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SN.js @@ -1 +1 @@ -module.exports={C:{"35":0.07044,"43":0.00486,"49":0.00729,"52":0.01215,"57":0.03886,"65":0.00243,"68":0.00243,"70":0.00243,"72":0.00486,"78":0.01457,"80":0.06558,"81":0.00243,"84":0.00972,"86":0.00486,"88":0.04129,"89":0.01943,"91":0.02186,"92":0.00486,"93":0.00243,"94":0.16517,"95":0.02429,"96":0.6364,"97":0.76756,"98":0.00486,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 44 45 46 47 48 50 51 53 54 55 56 58 59 60 61 62 63 64 66 67 69 71 73 74 75 76 77 79 82 83 85 87 90 99 3.5 3.6"},D:{"33":0.00486,"38":0.01457,"40":0.00243,"43":0.00486,"49":0.017,"58":0.00729,"60":0.00486,"63":0.00486,"64":0.00243,"65":0.01215,"66":0.07044,"67":0.00729,"68":0.01215,"69":0.02672,"70":0.01457,"71":0.00243,"72":0.00486,"73":0.00243,"74":0.017,"75":0.01215,"76":0.05587,"77":0.00243,"78":0.00486,"79":0.07773,"80":0.00972,"81":0.04129,"83":0.01943,"84":0.01215,"85":0.017,"86":0.02672,"87":0.03644,"88":0.01943,"89":0.03886,"90":0.03158,"91":0.03401,"92":0.03401,"93":0.02186,"94":0.04372,"95":0.08987,"96":0.32792,"97":3.50019,"98":7.95498,"99":0.00729,"100":0.00486,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 39 41 42 44 45 46 47 48 50 51 52 53 54 55 56 57 59 61 62 101"},F:{"37":0.00486,"70":0.00486,"79":0.00243,"82":0.05101,"83":0.89387,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00972,"13":0.017,"14":0.00486,"15":0.00972,"16":0.00972,"17":0.01215,"18":0.03644,"84":0.00243,"85":0.00729,"89":0.00729,"90":0.00243,"92":0.00972,"93":0.00729,"94":0.00486,"95":0.00729,"96":0.05101,"97":0.44937,"98":1.5327,_:"79 80 81 83 86 87 88 91"},E:{"4":0,"13":0.01215,"14":0.07287,"15":0.01215,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.00486,"11.1":0.02429,"12.1":0.0583,"13.1":0.05344,"14.1":0.09473,"15.1":0.04615,"15.2-15.3":0.10688},G:{"8":0.00677,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00271,"7.0-7.1":0.2111,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.09878,"10.0-10.2":0.02977,"10.3":0.20704,"11.0-11.2":0.12179,"11.3-11.4":0.12179,"12.0-12.1":0.12585,"12.2-12.5":2.82821,"13.0-13.1":0.05413,"13.2":0.04195,"13.3":0.19486,"13.4-13.7":0.59541,"14.0-14.4":1.6252,"14.5-14.8":2.49802,"15.0-15.1":1.66039,"15.2-15.3":3.04743,"15.4":0.05819},P:{"4":0.89223,"5.0-5.4":0.01034,"6.2-6.4":0.02028,"7.2-7.4":0.365,"8.2":0.03042,"9.2":0.04056,"10.1":0.05069,"11.1-11.2":0.22306,"12.0":0.16222,"13.0":0.13181,"14.0":0.16222,"15.0":0.17236,"16.0":1.21667},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00086,"4.2-4.3":0.00185,"4.4":0,"4.4.3-4.4.4":0.02757},A:{"6":0.00243,"11":0.04372,_:"7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00757},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.053},Q:{"10.4":0},O:{"0":0.11357},H:{"0":0.53758},L:{"0":60.07901},S:{"2.5":0.01514}}; +module.exports={C:{"34":0.00422,"35":0.01267,"36":0.00422,"41":0.00422,"42":0.01056,"43":0.00634,"48":0.00211,"49":0.00422,"52":0.02746,"56":0.00211,"57":0.00422,"58":0.00422,"60":0.00211,"64":0.00422,"70":0.04646,"72":0.02112,"78":0.04435,"79":0.00422,"80":0.01267,"84":0.00845,"86":0.00211,"87":0.00211,"88":0.00634,"89":0.00634,"91":0.04435,"92":0.00211,"94":0.00845,"95":0.00845,"96":0.00422,"97":0.00845,"98":0.17318,"99":0.04224,"100":0.17741,"101":1.58611,"102":0.05069,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 37 38 39 40 44 45 46 47 50 51 53 54 55 59 61 62 63 65 66 67 68 69 71 73 74 75 76 77 81 82 83 85 90 93 103 104 3.5 3.6"},D:{"34":0.00422,"46":0.00634,"49":0.03802,"58":0.00211,"60":0.00634,"61":0.00211,"62":0.00422,"63":0.00634,"65":0.01267,"67":0.00211,"68":0.00211,"69":0.04013,"70":0.00211,"71":0.00211,"72":0.00211,"73":0.00211,"74":0.00422,"75":0.00634,"76":0.01056,"77":0.00845,"78":0.00634,"79":0.03168,"80":0.01056,"81":0.01267,"83":0.00422,"84":0.00422,"85":0.03802,"86":0.02534,"87":0.02323,"88":0.00845,"89":0.01056,"90":0.00634,"91":0.04435,"92":0.08659,"93":0.01056,"94":0.01267,"95":0.02534,"96":0.02957,"97":0.04646,"98":0.03379,"99":0.03168,"100":0.08237,"101":0.48998,"102":9.41952,"103":0.81734,"104":0.00211,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 47 48 50 51 52 53 54 55 56 57 59 64 66 105 106"},F:{"28":0.00211,"79":0.00422,"84":0.00422,"85":0.01901,"86":0.02534,"87":0.34003,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01056,"13":0.01056,"14":0.00211,"15":0.01056,"16":0.01056,"17":0.01267,"18":0.04646,"84":0.00634,"85":0.00634,"87":0.00634,"89":0.00422,"91":0.00422,"92":0.01478,"96":0.01267,"97":0.00634,"98":0.02746,"99":0.0169,"100":0.04224,"101":0.2999,"102":1.58822,"103":0.28723,_:"79 80 81 83 86 88 90 93 94 95"},E:{"4":0,"6":0.00211,"10":0.00845,"11":0.00211,"12":0.01267,"13":0.00845,"14":0.02746,"15":0.00422,_:"0 5 7 8 9 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.00211,"10.1":0.01056,"11.1":0.0169,"12.1":0.02112,"13.1":0.07392,"14.1":0.08659,"15.1":0.01478,"15.2-15.3":0.01267,"15.4":0.09715,"15.5":0.20909},G:{"8":0.0018,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.02165,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05774,"10.0-10.2":0.02887,"10.3":0.10826,"11.0-11.2":0.04511,"11.3-11.4":0.03609,"12.0-12.1":0.06315,"12.2-12.5":1.06093,"13.0-13.1":0.03248,"13.2":0.03609,"13.3":0.14434,"13.4-13.7":0.32117,"14.0-14.4":1.40555,"14.5-14.8":2.46468,"15.0-15.1":0.91478,"15.2-15.3":1.37849,"15.4":2.48272,"15.5":7.31646,"16.0":0.07217},P:{"4":0.2457,"5.0-5.4":0.01042,"6.2-6.4":0.01024,"7.2-7.4":0.3276,"8.2":0.01015,"9.2":0.02048,"10.1":0.01024,"11.1-11.2":0.11261,"12.0":0.06143,"13.0":0.10238,"14.0":0.11261,"15.0":0.0819,"16.0":0.35832,"17.0":1.4435},I:{"0":0,"3":0,"4":0.0009,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00179,"4.2-4.3":0.00299,"4.4":0,"4.4.3-4.4.4":0.05742},A:{"11":0.18163,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.00789},Q:{"10.4":0},O:{"0":0.03944},H:{"0":0.31365},L:{"0":60.71664},S:{"2.5":0.01578},R:{_:"0"},M:{"0":0.12621}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SO.js index 98ba4340a6e93d..03b29a07c45cd6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SO.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SO.js @@ -1 +1 @@ -module.exports={C:{"4":0.00172,"15":0.00515,"17":0.00686,"48":0.00172,"52":0.00343,"55":0.00343,"78":0.00343,"87":0.01201,"91":0.00343,"93":0.00172,"94":0.06346,"95":0.00686,"96":0.10633,"97":0.27269,"98":0.03087,_:"2 3 5 6 7 8 9 10 11 12 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 92 99 3.5 3.6"},D:{"11":0.00172,"23":0.01029,"24":0.00172,"25":0.00172,"33":0.00343,"38":0.00858,"39":0.00172,"40":0.00343,"43":0.01372,"45":0.00343,"49":0.00686,"53":0.00343,"56":0.00172,"60":0.00343,"63":0.01029,"65":0.00343,"67":0.00172,"68":0.00858,"70":0.00686,"71":0.00172,"73":0.00172,"74":0.00515,"75":0.02401,"76":0.00515,"77":0.01029,"78":0.00343,"79":0.05831,"80":0.01372,"81":0.01372,"83":0.00343,"84":0.00686,"86":0.02401,"87":0.01887,"88":0.00686,"89":0.00515,"90":0.01201,"91":0.01372,"92":0.04288,"93":0.01372,"94":0.01715,"95":0.08747,"96":0.17493,"97":3.42143,"98":7.8547,"99":0.01372,"100":0.01715,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 26 27 28 29 30 31 32 34 35 36 37 41 42 44 46 47 48 50 51 52 54 55 57 58 59 61 62 64 66 69 72 85 101"},F:{"53":0.01372,"78":0.00343,"79":0.00343,"80":0.00172,"82":0.04802,"83":0.25211,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01029,"13":0.00172,"14":0.01029,"15":0.00343,"16":0.01029,"17":0.01201,"18":0.05145,"84":0.01544,"85":0.00343,"87":0.00686,"89":0.01029,"90":0.00343,"92":0.02744,"93":0.00343,"94":0.00515,"95":0.00515,"96":0.04288,"97":0.36187,"98":1.1199,_:"79 80 81 83 86 88 91"},E:{"4":0,"12":0.00515,"13":0.00343,"14":0.06174,"15":0.02401,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 11.1","5.1":0.00343,"10.1":0.01372,"12.1":0.00343,"13.1":0.01372,"14.1":0.07889,"15.1":0.08404,"15.2-15.3":0.09776,"15.4":0.00343},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00169,"6.0-6.1":0.00169,"7.0-7.1":0.0045,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04331,"10.0-10.2":0.00169,"10.3":0.01744,"11.0-11.2":0.00731,"11.3-11.4":0.00787,"12.0-12.1":0.03431,"12.2-12.5":0.59175,"13.0-13.1":0.12375,"13.2":0.01012,"13.3":0.07706,"13.4-13.7":0.17719,"14.0-14.4":0.76331,"14.5-14.8":1.07212,"15.0-15.1":1.04962,"15.2-15.3":1.60592,"15.4":0.03487},P:{"4":0.32607,"5.0-5.4":0.05095,"6.2-6.4":0.11209,"7.2-7.4":0.8865,"8.2":0.03042,"9.2":0.05095,"10.1":0.04084,"11.1-11.2":0.30569,"12.0":0.06114,"13.0":0.28531,"14.0":0.43815,"15.0":0.35664,"16.0":1.55901},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.02752,"4.4":0,"4.4.3-4.4.4":0.20446},A:{"8":0.00343,"10":0.00343,"11":0.02401,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.1657},Q:{"10.4":0},O:{"0":1.88898},H:{"0":2.20408},L:{"0":65.0104},S:{"2.5":0}}; +module.exports={C:{"34":0.00191,"79":0.00381,"85":0.00191,"87":0.00191,"91":0.00762,"96":0.00191,"99":0.0305,"100":0.06671,"101":0.41551,"102":0.01906,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 86 88 89 90 92 93 94 95 97 98 103 104 3.5 3.6"},D:{"33":0.00191,"38":0.01715,"39":0.00191,"43":0.01334,"49":0.01334,"52":0.00381,"55":0.00381,"63":0.01334,"64":0.00381,"65":0.02859,"68":0.01715,"69":0.00953,"70":0.00762,"71":0.00572,"73":0.00572,"74":0.00381,"76":0.00572,"77":0.00191,"79":0.08005,"80":0.01144,"81":0.00953,"83":0.00572,"84":0.00572,"85":0.00381,"86":0.02097,"87":0.03431,"88":0.00762,"89":0.00381,"90":0.00953,"91":0.01334,"92":0.01334,"93":0.01906,"94":0.00572,"95":0.01715,"96":0.04765,"97":0.02478,"98":0.06862,"99":0.08768,"100":0.11817,"101":0.64995,"102":11.83817,"103":0.95109,"104":0.00572,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 40 41 42 44 45 46 47 48 50 51 53 54 56 57 58 59 60 61 62 66 67 72 75 78 105 106"},F:{"70":0.00381,"71":0.00381,"85":0.00572,"86":0.01906,"87":0.29162,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01525,"13":0.00572,"14":0.00572,"15":0.00953,"16":0.01144,"17":0.00572,"18":0.07624,"84":0.01906,"85":0.01144,"89":0.01334,"90":0.00762,"91":0.00191,"92":0.0324,"93":0.00191,"96":0.00572,"97":0.00572,"98":0.00953,"99":0.02097,"100":0.0324,"101":0.24969,"102":1.40091,"103":0.2211,_:"79 80 81 83 86 87 88 94 95"},E:{"4":0,"13":0.00572,"14":0.0324,"15":0.01144,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.01525,"13.1":0.01144,"14.1":0.11817,"15.1":0.03621,"15.2-15.3":0.01906,"15.4":0.09149,"15.5":0.12008},G:{"8":0.00288,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00072,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00936,"10.0-10.2":0,"10.3":0.02016,"11.0-11.2":0.00288,"11.3-11.4":0.03527,"12.0-12.1":0.01008,"12.2-12.5":0.47653,"13.0-13.1":0.02016,"13.2":0.01368,"13.3":0.05975,"13.4-13.7":0.15692,"14.0-14.4":0.61186,"14.5-14.8":0.88251,"15.0-15.1":0.52332,"15.2-15.3":0.83572,"15.4":1.32593,"15.5":2.1163,"16.0":0.05831},P:{"4":0.31669,"5.0-5.4":0.03065,"6.2-6.4":0.11237,"7.2-7.4":1.08287,"8.2":0.03063,"9.2":0.02043,"10.1":0.05352,"11.1-11.2":0.21453,"12.0":0.04086,"13.0":0.1941,"14.0":0.40863,"15.0":0.21453,"16.0":0.66402,"17.0":1.6856},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.02492,"4.4":0,"4.4.3-4.4.4":0.39592},A:{"11":0.02668,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":2.28223},H:{"0":2.16833},L:{"0":64.48455},S:{"2.5":0},R:{_:"0"},M:{"0":0.04047}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SR.js index e62ffc323ac8cb..9f1fcb389ef0be 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SR.js @@ -1 +1 @@ -module.exports={C:{"52":0.03792,"78":0.00689,"91":0.00345,"95":0.01724,"96":0.56531,"97":0.87899,"98":0.08273,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 99 3.5 3.6"},D:{"49":0.03102,"53":0.01034,"63":0.01034,"65":0.02413,"68":0.00689,"69":0.00689,"70":0.00345,"71":0.00689,"72":0.00345,"75":0.04136,"76":0.01034,"79":0.03447,"80":0.03792,"81":0.02068,"83":0.00689,"84":0.01034,"85":0.01379,"86":0.00345,"87":0.05171,"88":0.06205,"89":0.01034,"90":0.01724,"91":0.01724,"92":0.00689,"93":0.09996,"94":0.02068,"95":0.03102,"96":0.41364,"97":6.01157,"98":16.1423,"99":0.04826,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 64 66 67 73 74 77 78 100 101"},F:{"28":0.00345,"63":0.09996,"82":0.1172,"83":0.5791,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.05515,"13":0.01379,"15":0.00689,"16":0.00689,"17":0.01034,"18":0.08618,"84":0.00345,"85":0.01034,"90":0.01034,"92":0.01034,"93":0.01379,"95":0.00689,"96":0.14822,"97":0.73076,"98":3.31601,_:"14 79 80 81 83 86 87 88 89 91 94"},E:{"4":0,"13":0.00689,"14":0.07928,"15":0.01724,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.01379,"11.1":0.01379,"12.1":0.00689,"13.1":0.03447,"14.1":0.86864,"15.1":0.26542,"15.2-15.3":0.46535,"15.4":0.00345},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00484,"6.0-6.1":0,"7.0-7.1":0.02907,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.07073,"10.0-10.2":0.00097,"10.3":0.12402,"11.0-11.2":0.00194,"11.3-11.4":0.01453,"12.0-12.1":0.01453,"12.2-12.5":0.8885,"13.0-13.1":0.10077,"13.2":0.00969,"13.3":0.14631,"13.4-13.7":0.14631,"14.0-14.4":0.374,"14.5-14.8":1.37974,"15.0-15.1":1.5057,"15.2-15.3":4.85042,"15.4":0.02325},P:{"4":0.67175,"5.0-5.4":0.08041,"6.2-6.4":0.14072,"7.2-7.4":0.62086,"8.2":0.03016,"9.2":0.04071,"10.1":0.03053,"11.1-11.2":0.36641,"12.0":0.12214,"13.0":0.16285,"14.0":0.21374,"15.0":0.39694,"16.0":6.94144},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00054,"4.2-4.3":0.00564,"4.4":0,"4.4.3-4.4.4":0.02659},A:{"11":0.10686,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.19004},Q:{"10.4":0},O:{"0":0.38663},H:{"0":0.22334},L:{"0":42.71467},S:{"2.5":0}}; +module.exports={C:{"52":0.02561,"78":0.03201,"94":0.0096,"96":0.0064,"98":0.0032,"99":0.0096,"100":0.23367,"101":1.77335,"102":0.15365,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 95 97 103 104 3.5 3.6"},D:{"49":0.02881,"53":0.0128,"61":0.0064,"63":0.0032,"64":0.0064,"65":0.0128,"69":0.0064,"70":0.0096,"73":0.0064,"75":0.01601,"76":0.0064,"79":0.04161,"81":0.0128,"83":0.02241,"84":0.05762,"86":0.0128,"87":0.0096,"88":0.04802,"89":0.0096,"90":0.0064,"91":0.05122,"92":0.0064,"93":0.09923,"94":0.0064,"95":0.02561,"96":0.09923,"97":0.07682,"98":0.02881,"99":0.04802,"100":0.3233,"101":1.01152,"102":17.07413,"103":1.37963,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 62 66 67 68 71 72 74 77 78 80 85 104 105 106"},F:{"63":0.14084,"75":0.0096,"85":0.0032,"86":0.14084,"87":0.65621,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 65 66 67 68 69 70 71 72 73 74 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.03201,"13":0.0032,"16":0.0032,"17":0.0064,"18":0.02241,"84":0.0064,"91":0.0032,"96":0.0096,"98":0.01601,"99":0.02241,"100":0.0096,"101":0.57298,"102":2.91931,"103":0.50256,_:"14 15 79 80 81 83 85 86 87 88 89 90 92 93 94 95 97"},E:{"4":0,"13":0.0064,"14":0.04481,"15":0.02241,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.0064,"12.1":0.0064,"13.1":0.06402,"14.1":0.23687,"15.1":0.0096,"15.2-15.3":0.02881,"15.4":0.41933,"15.5":0.68181},G:{"8":0,"3.2":0.0011,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00991,"6.0-6.1":0,"7.0-7.1":0.20144,"8.1-8.4":0,"9.0-9.2":0.0011,"9.3":0.06274,"10.0-10.2":0.0011,"10.3":0.20144,"11.0-11.2":0.0033,"11.3-11.4":0.00991,"12.0-12.1":0.0066,"12.2-12.5":0.77602,"13.0-13.1":0.11778,"13.2":0.0033,"13.3":0.03743,"13.4-13.7":0.11998,"14.0-14.4":0.25317,"14.5-14.8":0.90371,"15.0-15.1":0.23556,"15.2-15.3":0.43259,"15.4":1.6379,"15.5":5.9539,"16.0":0.00881},P:{"4":0.51987,"5.0-5.4":0.0407,"6.2-6.4":0.02039,"7.2-7.4":0.98877,"8.2":0.03086,"9.2":0.03058,"10.1":0.03086,"11.1-11.2":0.1631,"12.0":0.07135,"13.0":0.24464,"14.0":0.21406,"15.0":0.28542,"16.0":0.73393,"17.0":6.72773},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00133,"4.2-4.3":0.0031,"4.4":0,"4.4.3-4.4.4":0.03635},A:{"11":0.37772,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.57103},H:{"0":0.19308},L:{"0":47.54389},S:{"2.5":0},R:{_:"0"},M:{"0":0.30591}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ST.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ST.js index fc18072b652db4..8a3a3965c0ff3a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ST.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ST.js @@ -1 +1 @@ -module.exports={C:{"56":0.02655,"94":0.01328,"95":0.15045,"96":0.10178,"97":1.62398,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 98 99 3.5 3.6"},D:{"38":0.02655,"40":0.07523,"43":0.02655,"64":0.06195,"65":0.04868,"68":0.2124,"69":0.10178,"75":3.92498,"79":0.50445,"81":0.04868,"86":0.03983,"88":0.02655,"89":9.01815,"92":0.07523,"93":0.03983,"94":0.06195,"95":0.02655,"96":0.10178,"97":5.76135,"98":10.27485,"99":0.04868,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 41 42 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 66 67 70 71 72 73 74 76 77 78 80 83 84 85 87 90 91 100 101"},F:{"28":0.02655,"83":0.3894,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.02655,"18":0.04868,"91":0.04868,"92":0.04868,"93":0.01328,"94":0.01328,"96":0.03983,"97":1.31865,"98":2.70368,_:"12 13 15 16 17 79 80 81 83 84 85 86 87 88 89 90 95"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1 14.1 15.4","5.1":0.04868,"13.1":0.01328,"15.1":0.03983,"15.2-15.3":0.11505},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0.01058,"12.0-12.1":0,"12.2-12.5":0.22179,"13.0-13.1":0,"13.2":0.01058,"13.3":0,"13.4-13.7":0.02115,"14.0-14.4":0.02115,"14.5-14.8":0.50734,"15.0-15.1":0.60221,"15.2-15.3":1.62686,"15.4":0},P:{"4":0.08216,"5.0-5.4":0.01121,"6.2-6.4":0.04087,"7.2-7.4":0.03081,"8.2":0.16348,"9.2":0.01027,"10.1":0.01033,"11.1-11.2":0.01027,"12.0":0.01027,"13.0":0.06162,"14.0":0.07189,"15.0":0.18486,"16.0":0.51349},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00365,"4.2-4.3":0.00075,"4.4":0,"4.4.3-4.4.4":0.03463},A:{"11":0.49118,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.17283},Q:{"10.4":0.01115},O:{"0":1.33243},H:{"0":0.13723},L:{"0":44.10515},S:{"2.5":0}}; +module.exports={C:{"43":0.00499,"56":0.00997,"77":0.00499,"78":0.07478,"94":0.00997,"96":0.01994,"99":0.00997,"100":0.06979,"101":1.51046,"102":0.04487,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 95 97 98 103 104 3.5 3.6"},D:{"26":0.14955,"34":0.00997,"43":0.12961,"50":0.00997,"52":0.50847,"64":0.06979,"65":0.00499,"68":0.01994,"69":0.0349,"70":0.09472,"72":0.22433,"75":0.00997,"78":0.06979,"79":0.01994,"81":0.34895,"83":0.02493,"86":0.02991,"88":0.02493,"89":5.5184,"90":0.00997,"92":0.0349,"93":0.00997,"95":0.01994,"96":0.1346,"97":0.09472,"98":0.27916,"99":0.07478,"100":0.36391,"101":1.13658,"102":23.7286,"103":1.21634,"105":0.02493,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 45 46 47 48 49 51 53 54 55 56 57 58 59 60 61 62 63 66 67 71 73 74 76 77 80 84 85 87 91 94 104 106"},F:{"79":0.00997,"85":0.00997,"86":0.18445,"87":0.70289,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00499,"16":0.00997,"17":0.00997,"18":0.02493,"80":0.00499,"84":0.01994,"91":0.00997,"92":0.07976,"97":0.01994,"99":0.02991,"100":0.00997,"101":0.48355,"102":3.55431,"103":0.56829,_:"12 13 14 79 81 83 85 86 87 88 89 90 93 94 95 96 98"},E:{"4":0,"14":0.07976,_:"0 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.1","13.1":0.00499,"14.1":0.05484,"15.2-15.3":0.00499,"15.4":0.0349,"15.5":0.27418,"16.0":0.00499},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01222,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.00407,"11.0-11.2":0,"11.3-11.4":0.00407,"12.0-12.1":0,"12.2-12.5":0.12885,"13.0-13.1":0.01666,"13.2":0.01259,"13.3":0.00815,"13.4-13.7":0.00407,"14.0-14.4":0.04554,"14.5-14.8":0.13736,"15.0-15.1":0.14958,"15.2-15.3":0.10404,"15.4":1.43289,"15.5":1.6369,"16.0":0.00407},P:{"4":0.03046,"5.0-5.4":0.01056,"6.2-6.4":0.0103,"7.2-7.4":0.45683,"8.2":0.01015,"9.2":0.08244,"10.1":0.01018,"11.1-11.2":0.05076,"12.0":0.07106,"13.0":0.96866,"14.0":0.06091,"15.0":0.04061,"16.0":0.20304,"17.0":1.59384},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0107,"4.2-4.3":0.01051,"4.4":0,"4.4.3-4.4.4":0.05903},A:{"11":1.2961,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":2.89366},H:{"0":0.68369},L:{"0":44.48188},S:{"2.5":0},R:{_:"0"},M:{"0":0.07523}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SV.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SV.js index ce57f399a7d667..e1eece520765b3 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SV.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SV.js @@ -1 +1 @@ -module.exports={C:{"35":0.00897,"52":0.02242,"68":0.00448,"70":0.03138,"73":0.04035,"78":0.01793,"80":0.00448,"88":0.01345,"89":0.01345,"90":0.17484,"91":0.0269,"92":0.00448,"93":0.00448,"94":0.02242,"95":0.0269,"96":0.67693,"97":1.12523,"98":0.00897,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 71 72 74 75 76 77 79 81 82 83 84 85 86 87 99 3.5 3.6"},D:{"38":0.00897,"47":0.00448,"49":0.05828,"53":0.00897,"55":0.00448,"65":0.00448,"66":0.00448,"67":0.00897,"69":0.00897,"70":0.00897,"71":0.01793,"72":0.01793,"73":0.01345,"74":0.03586,"75":0.0269,"76":0.03138,"77":0.01793,"78":0.01345,"79":0.15691,"80":0.01345,"81":0.01793,"83":0.01345,"84":0.02242,"85":0.01793,"86":0.03138,"87":0.04035,"88":0.02242,"89":0.0269,"90":0.03586,"91":0.14794,"92":0.05828,"93":0.04035,"94":0.11208,"95":0.07173,"96":0.41244,"97":8.66116,"98":21.37046,"99":0.00448,"100":0.00897,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 56 57 58 59 60 61 62 63 64 68 101"},F:{"36":0.00448,"46":0.00897,"77":0.00448,"80":0.00448,"82":0.45727,"83":1.28214,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00897,"16":0.00448,"17":0.00448,"18":0.02242,"84":0.01345,"87":0.00448,"89":0.00448,"92":0.01793,"94":0.0269,"95":0.01345,"96":0.09863,"97":0.67245,"98":2.78394,_:"12 13 14 79 80 81 83 85 86 88 90 91 93"},E:{"4":0,"12":0.01345,"13":0.04931,"14":0.08069,"15":0.08966,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1","5.1":0.0269,"10.1":0.00448,"11.1":0.00448,"12.1":0.01345,"13.1":0.07173,"14.1":0.22863,"15.1":0.17484,"15.2-15.3":0.31829,"15.4":0.00448},G:{"8":0,"3.2":0.00102,"4.0-4.1":0.00102,"4.2-4.3":0,"5.0-5.1":0.00102,"6.0-6.1":0.01229,"7.0-7.1":0.01639,"8.1-8.4":0.00102,"9.0-9.2":0,"9.3":0.02766,"10.0-10.2":0.00051,"10.3":0.01946,"11.0-11.2":0.00461,"11.3-11.4":0.00717,"12.0-12.1":0.00768,"12.2-12.5":0.24331,"13.0-13.1":0.00563,"13.2":0.00461,"13.3":0.02151,"13.4-13.7":0.07581,"14.0-14.4":0.32578,"14.5-14.8":0.87899,"15.0-15.1":0.65771,"15.2-15.3":2.78911,"15.4":0.01742},P:{"4":0.17686,"5.0-5.4":0.01013,"6.2-6.4":0.04052,"7.2-7.4":0.20807,"8.2":0.0104,"9.2":0.02081,"10.1":0.06153,"11.1-11.2":0.13525,"12.0":0.03121,"13.0":0.18726,"14.0":0.14565,"15.0":0.11444,"16.0":1.51891},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00398,"4.2-4.3":0.00497,"4.4":0,"4.4.3-4.4.4":0.05173},A:{"11":0.08069,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.54067},Q:{"10.4":0},O:{"0":0.09379},H:{"0":0.18803},L:{"0":45.00528},S:{"2.5":0}}; +module.exports={C:{"35":0.00897,"52":0.02242,"68":0.00448,"73":0.0538,"78":0.02242,"88":0.00897,"89":0.00448,"90":0.20174,"91":0.04483,"93":0.00448,"94":0.00897,"95":0.01793,"97":0.00897,"98":0.01793,"99":0.03138,"100":0.14346,"101":1.6094,"102":0.09414,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 86 87 92 96 103 104 3.5 3.6"},D:{"38":0.00448,"43":0.00448,"49":0.0538,"65":0.00448,"67":0.00897,"68":0.00897,"70":0.01345,"71":0.00897,"72":0.00897,"73":0.00448,"74":0.00897,"75":0.00897,"76":0.03586,"77":0.00448,"78":0.01345,"79":0.11208,"80":0.03138,"81":0.0269,"83":0.00897,"84":0.01793,"85":0.01793,"86":0.03138,"87":0.03586,"88":0.02242,"89":0.01793,"90":0.01793,"91":0.16139,"92":0.03586,"93":0.0269,"94":0.03138,"95":0.0538,"96":0.04035,"97":0.05828,"98":0.08966,"99":0.11656,"100":0.21518,"101":1.188,"102":25.58448,"103":2.4791,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 69 104 105 106"},F:{"28":0.00897,"81":0.00448,"85":0.01345,"86":0.76659,"87":1.11178,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00897,"18":0.02242,"89":0.00448,"90":0.00897,"92":0.01793,"94":0.00448,"96":0.01793,"97":0.00448,"98":0.01345,"99":0.03138,"100":0.03138,"101":0.4483,"102":3.29501,"103":0.66348,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 91 93 95"},E:{"4":0,"13":0.01345,"14":0.04483,"15":0.03138,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 16.0","5.1":0.00448,"12.1":0.00448,"13.1":0.0538,"14.1":0.13001,"15.1":0.04931,"15.2-15.3":0.0538,"15.4":0.2376,"15.5":0.59176},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00234,"6.0-6.1":0.0187,"7.0-7.1":0.0111,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02746,"10.0-10.2":0,"10.3":0.0187,"11.0-11.2":0.00292,"11.3-11.4":0.00584,"12.0-12.1":0.01227,"12.2-12.5":0.21504,"13.0-13.1":0.00526,"13.2":0.00234,"13.3":0.01987,"13.4-13.7":0.06545,"14.0-14.4":0.19693,"14.5-14.8":0.41898,"15.0-15.1":0.1157,"15.2-15.3":0.22673,"15.4":0.7877,"15.5":3.65977,"16.0":0.01286},P:{"4":0.11436,"5.0-5.4":0.02013,"6.2-6.4":0.0302,"7.2-7.4":0.13516,"8.2":0.06207,"9.2":0.0104,"10.1":0.01007,"11.1-11.2":0.10397,"12.0":0.02079,"13.0":0.12476,"14.0":0.13516,"15.0":0.07278,"16.0":0.25991,"17.0":1.63226},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0031,"4.2-4.3":0.01239,"4.4":0,"4.4.3-4.4.4":0.07279},A:{"11":0.06276,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.15448},H:{"0":0.18803},L:{"0":48.94545},S:{"2.5":0},R:{_:"0"},M:{"0":0.56825}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SY.js index 91189fe2bd0599..51e2740ee5bf17 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SY.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SY.js @@ -1 +1 @@ -module.exports={C:{"16":0.00261,"30":0.00391,"35":0.0013,"38":0.00391,"41":0.0013,"43":0.00261,"47":0.00522,"48":0.00261,"52":0.04434,"53":0.0013,"54":0.0013,"56":0.00522,"57":0.0013,"60":0.0013,"61":0.0013,"66":0.0013,"70":0.0013,"72":0.01304,"74":0.00261,"76":0.00261,"78":0.01304,"80":0.00261,"81":0.00261,"83":0.0013,"84":0.04303,"85":0.00261,"86":0.00391,"87":0.0013,"88":0.00391,"89":0.01043,"90":0.00261,"91":0.01174,"92":0.00522,"93":0.00522,"94":0.04434,"95":0.0313,"96":0.50726,"97":0.8476,"98":0.00261,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 36 37 39 40 42 44 45 46 49 50 51 55 58 59 62 63 64 65 67 68 69 71 73 75 77 79 82 99 3.5 3.6"},D:{"11":0.00261,"24":0.0013,"28":0.0013,"33":0.0013,"36":0.00522,"38":0.00522,"39":0.00261,"40":0.0013,"42":0.00261,"43":0.01434,"49":0.01043,"50":0.0013,"51":0.0013,"52":0.00522,"53":0.00391,"55":0.00261,"56":0.00261,"57":0.00261,"58":0.00261,"60":0.00391,"61":0.0013,"62":0.00261,"63":0.0313,"64":0.00261,"65":0.00522,"66":0.00522,"67":0.00652,"68":0.00261,"69":0.01174,"70":0.0639,"71":0.01043,"72":0.00782,"73":0.00652,"74":0.00261,"75":0.00391,"76":0.00261,"77":0.00391,"78":0.01043,"79":0.04694,"80":0.01565,"81":0.01956,"83":0.01956,"84":0.00913,"85":0.01434,"86":0.02347,"87":0.11997,"88":0.02086,"89":0.02738,"90":0.02869,"91":0.07042,"92":0.05346,"93":0.04694,"94":0.02999,"95":0.05607,"96":0.24776,"97":2.32634,"98":5.42986,"99":0.00522,"100":0.00652,"101":0.00261,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 29 30 31 32 34 35 37 41 44 45 46 47 48 54 59"},F:{"69":0.0013,"79":0.0013,"80":0.01304,"82":0.07694,"83":0.31557,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00522,"14":0.00261,"15":0.00522,"16":0.00391,"17":0.01304,"18":0.0326,"84":0.00913,"86":0.0013,"89":0.00522,"90":0.00522,"91":0.0013,"92":0.01695,"93":0.0013,"94":0.0013,"95":0.00913,"96":0.01304,"97":0.16822,"98":0.5542,_:"13 79 80 81 83 85 87 88"},E:{"4":0,"13":0.00261,"14":0.01304,"15":0.00522,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.05477,"10.1":0.00913,"11.1":0.00261,"12.1":0.0013,"13.1":0.01043,"14.1":0.04564,"15.1":0.03912,"15.2-15.3":0.08476,"15.4":0.0013},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00293,"6.0-6.1":0.00176,"7.0-7.1":0.03108,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.10087,"10.0-10.2":0.00469,"10.3":0.05278,"11.0-11.2":0.01877,"11.3-11.4":0.04574,"12.0-12.1":0.06334,"12.2-12.5":0.4457,"13.0-13.1":0.0305,"13.2":0.00645,"13.3":0.04633,"13.4-13.7":0.12667,"14.0-14.4":0.32783,"14.5-14.8":0.59584,"15.0-15.1":1.08435,"15.2-15.3":2.85251,"15.4":0.02229},P:{"4":2.07895,"5.0-5.4":0.08035,"6.2-6.4":0.18078,"7.2-7.4":0.41177,"8.2":0.04017,"9.2":0.27117,"10.1":0.18078,"11.1-11.2":0.31134,"12.0":0.16069,"13.0":0.62268,"14.0":0.96415,"15.0":0.55238,"16.0":1.7877},I:{"0":0,"3":0,"4":0.00171,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01641,"4.2-4.3":0.02964,"4.4":0,"4.4.3-4.4.4":0.16092},A:{"11":0.05607,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.15651},Q:{"10.4":0},O:{"0":1.11296},H:{"0":1.60521},L:{"0":70.09159},S:{"2.5":0}}; +module.exports={C:{"33":0.00155,"36":0.00155,"40":0.00155,"43":0.0062,"45":0.00155,"47":0.0031,"48":0.00465,"49":0.0031,"52":0.05112,"54":0.00155,"56":0.00465,"58":0.00155,"60":0.00155,"64":0.00155,"70":0.00155,"72":0.00929,"74":0.00155,"78":0.00775,"79":0.00155,"80":0.00155,"81":0.00775,"84":0.01859,"85":0.0031,"87":0.00155,"88":0.0062,"89":0.00929,"90":0.0031,"91":0.01549,"92":0.0031,"93":0.0031,"94":0.01239,"95":0.0062,"96":0.01084,"97":0.02014,"98":0.01704,"99":0.0759,"100":0.20757,"101":1.27793,"102":0.05267,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 37 38 39 41 42 44 46 50 51 53 55 57 59 61 62 63 65 66 67 68 69 71 73 75 76 77 82 83 86 103 104 3.5 3.6"},D:{"21":0.00775,"33":0.00929,"34":0.00155,"36":0.00155,"38":0.01394,"39":0.0031,"40":0.00155,"42":0.00155,"43":0.01239,"44":0.00155,"48":0.00155,"49":0.01084,"50":0.0031,"53":0.0031,"55":0.0062,"56":0.0031,"57":0.00155,"58":0.0062,"60":0.00465,"61":0.00155,"62":0.00465,"63":0.01084,"64":0.0031,"65":0.00775,"66":0.01394,"67":0.0031,"68":0.0062,"69":0.0062,"70":0.21221,"71":0.02324,"72":0.00775,"73":0.00465,"74":0.00929,"75":0.0062,"76":0.00775,"77":0.00465,"78":0.01084,"79":0.03408,"80":0.01084,"81":0.06196,"83":0.04027,"84":0.01704,"85":0.02788,"86":0.03873,"87":0.04802,"88":0.01549,"89":0.06041,"90":0.02788,"91":0.03718,"92":0.04182,"93":0.02014,"94":0.02633,"95":0.06661,"96":0.07125,"97":0.04337,"98":0.07745,"99":0.08055,"100":0.158,"101":0.54215,"102":7.57306,"103":0.72648,"104":0.0062,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 31 32 35 37 41 45 46 47 51 52 54 59 105 106"},F:{"79":0.00775,"82":0.00155,"83":0.0062,"84":0.0062,"85":0.03718,"86":0.05422,"87":0.28657,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0031,"14":0.0031,"15":0.01084,"16":0.0062,"17":0.01704,"18":0.04492,"84":0.00775,"85":0.00155,"88":0.00155,"89":0.0062,"90":0.0062,"91":0.00155,"92":0.01859,"94":0.0031,"95":0.00155,"96":0.00465,"97":0.00775,"98":0.00775,"99":0.00465,"100":0.00775,"101":0.12702,"102":0.66607,"103":0.12547,_:"13 79 80 81 83 86 87 93"},E:{"4":0,"13":0.01084,"14":0.02478,"15":0.00929,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 16.0","5.1":0.20292,"12.1":0.0031,"13.1":0.01084,"14.1":0.03408,"15.1":0.00775,"15.2-15.3":0.00465,"15.4":0.02014,"15.5":0.02169},G:{"8":0,"3.2":0.00047,"4.0-4.1":0,"4.2-4.3":0.00023,"5.0-5.1":0.00233,"6.0-6.1":0.00163,"7.0-7.1":0.01977,"8.1-8.4":0.00209,"9.0-9.2":0.00093,"9.3":0.0835,"10.0-10.2":0.00372,"10.3":0.04675,"11.0-11.2":0.0114,"11.3-11.4":0.0428,"12.0-12.1":0.0428,"12.2-12.5":0.33329,"13.0-13.1":0.01233,"13.2":0.00791,"13.3":0.05117,"13.4-13.7":0.07838,"14.0-14.4":0.23421,"14.5-14.8":0.33655,"15.0-15.1":0.17165,"15.2-15.3":0.24887,"15.4":0.2798,"15.5":0.30957,"16.0":0.00163},P:{"4":1.93513,"5.0-5.4":0.08021,"6.2-6.4":0.18048,"7.2-7.4":0.37098,"8.2":0.04011,"9.2":0.25066,"10.1":0.18048,"11.1-11.2":0.32085,"12.0":0.12032,"13.0":0.44117,"14.0":0.65173,"15.0":0.26069,"16.0":0.90239,"17.0":1.7346},I:{"0":0,"3":0,"4":0.00144,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01871,"4.2-4.3":0.02375,"4.4":0,"4.4.3-4.4.4":0.142},A:{"11":0.06041,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.12385},H:{"0":1.77598},L:{"0":71.46265},S:{"2.5":0},R:{_:"0"},M:{"0":0.19435}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SZ.js index 8fb30937429e61..ec747545e965ef 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SZ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SZ.js @@ -1 +1 @@ -module.exports={C:{"23":0.02002,"27":0.005,"34":0.01751,"36":0.01751,"52":0.01251,"60":0.05004,"61":0.00751,"76":0.01251,"77":0.005,"78":0.005,"88":0.01001,"89":0.01001,"91":0.02002,"92":0.005,"94":0.005,"96":0.81815,"97":0.3803,"98":0.03002,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 28 29 30 31 32 33 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 62 63 64 65 66 67 68 69 70 71 72 73 74 75 79 80 81 82 83 84 85 86 87 90 93 95 99 3.5 3.6"},D:{"26":0.005,"36":0.00751,"49":0.00751,"59":0.0025,"63":0.005,"68":0.005,"69":0.00751,"70":0.02002,"74":0.04754,"75":0.0025,"76":0.00751,"78":0.0025,"79":0.01251,"80":0.005,"81":0.01751,"83":0.01001,"84":0.0025,"85":0.01751,"86":0.02252,"87":0.03002,"88":0.02752,"89":0.005,"90":0.01001,"91":0.02502,"92":0.02752,"93":0.0025,"94":0.10008,"95":0.04504,"96":0.18014,"97":3.68044,"98":6.72287,"99":0.00751,"100":0.01501,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 60 61 62 64 65 66 67 71 72 73 77 101"},F:{"36":0.005,"37":0.005,"60":0.01001,"62":0.0025,"63":0.005,"65":0.0025,"66":0.00751,"77":0.03753,"79":0.06005,"80":0.005,"82":0.07006,"83":1.26601,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 64 67 68 69 70 71 72 73 74 75 76 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01751,"13":0.02252,"14":0.0025,"15":0.01251,"16":0.01751,"17":0.02752,"18":0.10258,"80":0.005,"84":0.01251,"85":0.01751,"86":0.26021,"89":0.01001,"90":0.01751,"92":0.01501,"93":0.005,"94":0.00751,"95":0.0025,"96":0.02752,"97":0.71557,"98":1.78643,_:"79 81 83 87 88 91"},E:{"4":0,"8":0.00751,"13":0.00751,"14":0.01751,"15":0.01751,_:"0 5 6 7 9 10 11 12 3.1 3.2 6.1 7.1","5.1":0.005,"9.1":0.005,"10.1":0.00751,"11.1":0.0025,"12.1":0.0025,"13.1":0.02752,"14.1":0.03753,"15.1":0.46787,"15.2-15.3":0.8732,"15.4":0.02002},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00297,"8.1-8.4":0.00495,"9.0-9.2":0,"9.3":0.00792,"10.0-10.2":0,"10.3":0.18715,"11.0-11.2":0.01188,"11.3-11.4":0.00693,"12.0-12.1":0.01584,"12.2-12.5":0.21587,"13.0-13.1":0.01188,"13.2":0,"13.3":0.01188,"13.4-13.7":0.02872,"14.0-14.4":0.1921,"14.5-14.8":0.7704,"15.0-15.1":1.69825,"15.2-15.3":6.71674,"15.4":0.01386},P:{"4":0.35635,"5.0-5.4":0.08041,"6.2-6.4":0.14072,"7.2-7.4":0.67198,"8.2":0.03016,"9.2":0.02036,"10.1":0.03053,"11.1-11.2":0.09163,"12.0":0.04073,"13.0":0.18327,"14.0":0.1629,"15.0":0.18327,"16.0":1.19123},I:{"0":0,"3":0,"4":0.00023,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00046,"4.2-4.3":0.00103,"4.4":0,"4.4.3-4.4.4":0.02077},A:{"9":0.00751,"11":0.1251,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.015},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.09747},Q:{"10.4":0},O:{"0":1.18468},H:{"0":15.81573},L:{"0":48.96257},S:{"2.5":0.06748}}; +module.exports={C:{"34":0.00818,"52":0.01091,"60":0.01091,"63":0.01091,"72":0.03546,"87":0.00546,"88":0.00546,"91":0.00818,"95":0.00546,"96":0.00273,"98":0.00546,"99":0.00818,"100":0.10912,"101":0.72565,"102":0.05729,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 86 89 90 92 93 94 97 103 104 3.5 3.6"},D:{"11":0.00273,"40":0.00818,"49":0.01637,"50":0.00818,"64":0.00273,"67":0.00546,"69":0.00546,"70":0.03274,"74":0.04092,"75":0.00818,"77":0.00818,"78":0.00818,"79":0.03546,"80":0.01091,"81":0.02455,"83":0.01364,"86":0.01637,"87":0.01364,"88":0.00546,"89":0.60834,"90":0.01637,"91":0.01091,"92":0.03274,"93":0.01091,"94":0.00273,"95":0.01364,"96":0.03001,"97":0.04638,"98":0.01091,"99":0.04365,"100":0.1555,"101":0.54833,"102":8.99149,"103":1.02573,"104":0.02455,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 58 59 60 61 62 63 65 66 68 71 72 73 76 84 85 105 106"},F:{"34":0.00273,"79":0.02455,"82":0.00273,"85":0.00818,"86":0.04092,"87":0.5456,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 9.5-9.6 10.5 10.6 11.1 11.5 12.1","10.0-10.1":0,"11.6":0.00273},B:{"12":0.0491,"13":0.01364,"14":0.01091,"15":0.0191,"16":0.00546,"17":0.0191,"18":0.03274,"84":0.02182,"85":0.01091,"86":0.02182,"89":0.00546,"90":0.0191,"92":0.0191,"95":0.00273,"96":0.00818,"97":0.00818,"98":0.00818,"99":0.01637,"100":0.01637,"101":0.46103,"102":1.81139,"103":0.27826,_:"79 80 81 83 87 88 91 93 94"},E:{"4":0,"14":0.01637,"15":0.00273,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.0191,"12.1":0.00546,"13.1":0.01364,"14.1":0.0491,"15.1":0.03819,"15.2-15.3":0.1555,"15.4":0.0491,"15.5":0.12822},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00329,"6.0-6.1":0.00526,"7.0-7.1":0.00296,"8.1-8.4":0.00362,"9.0-9.2":0,"9.3":0.02695,"10.0-10.2":0.00197,"10.3":0.04207,"11.0-11.2":0.02498,"11.3-11.4":0.00164,"12.0-12.1":0.01512,"12.2-12.5":0.17155,"13.0-13.1":0.00099,"13.2":0,"13.3":0.01183,"13.4-13.7":0.02991,"14.0-14.4":0.09367,"14.5-14.8":0.21494,"15.0-15.1":0.10451,"15.2-15.3":0.29578,"15.4":0.5633,"15.5":1.67151,"16.0":0.00066},P:{"4":0.45705,"5.0-5.4":0.0407,"6.2-6.4":0.02039,"7.2-7.4":1.06644,"8.2":0.03086,"9.2":0.09141,"10.1":0.03086,"11.1-11.2":0.52814,"12.0":0.03047,"13.0":0.13204,"14.0":0.32501,"15.0":0.16251,"16.0":0.31485,"17.0":1.42192},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00138,"4.2-4.3":0.00184,"4.4":0,"4.4.3-4.4.4":0.08404},A:{"9":0.00818,"10":0.00273,"11":0.13913,_:"6 7 8 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.9016},H:{"0":13.56091},L:{"0":59.1028},S:{"2.5":0.10179},R:{_:"0"},M:{"0":0.29084}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TC.js index eb709eb42d69ea..5fb7ca74bcd964 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TC.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TC.js @@ -1 +1 @@ -module.exports={C:{"56":0.04314,"68":0.00539,"92":0.01078,"93":0.02696,"96":0.674,"97":0.73331,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 94 95 98 99 3.5 3.6"},D:{"23":0.00539,"42":0.16715,"49":0.01078,"63":0.01618,"76":0.04314,"78":0.00539,"79":0.02157,"83":0.03774,"84":0.00539,"86":0.07549,"87":0.27499,"88":0.03774,"91":0.01618,"92":0.03235,"93":0.07549,"94":0.02157,"95":0.01078,"96":2.68522,"97":11.00507,"98":15.2324,"99":0.31274,"100":0.29656,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 70 71 72 73 74 75 77 80 81 85 89 90 101"},F:{"79":0.01078,"80":0.01078,"82":0.04853,"83":0.17794,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.01078,"16":0.01618,"17":4.84202,"18":0.16176,"80":0.00539,"96":0.03235,"97":1.42888,"98":4.62094,_:"12 13 15 79 81 83 84 85 86 87 88 89 90 91 92 93 94 95"},E:{"4":0,"13":0.10245,"14":0.30195,"15":0.66861,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.01618,"10.1":0.02696,"11.1":0.01078,"12.1":0.09706,"13.1":0.78184,"14.1":2.75531,"15.1":0.92203,"15.2-15.3":1.8225,"15.4":0.00539},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00443,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.03545,"9.0-9.2":0,"9.3":0.01329,"10.0-10.2":0,"10.3":0.04653,"11.0-11.2":0.01773,"11.3-11.4":0.00886,"12.0-12.1":0.03324,"12.2-12.5":0.91067,"13.0-13.1":0.0288,"13.2":0.00222,"13.3":0.03545,"13.4-13.7":0.10414,"14.0-14.4":0.72898,"14.5-14.8":4.0792,"15.0-15.1":3.38788,"15.2-15.3":12.69625,"15.4":0.01773},P:{"4":0.15843,"5.0-5.4":0.0102,"6.2-6.4":0.01036,"7.2-7.4":0.04225,"8.2":0.02073,"9.2":0.19011,"10.1":0.0204,"11.1-11.2":0.04225,"12.0":0.06121,"13.0":0.39078,"14.0":0.05281,"15.0":0.02112,"16.0":2.47144},I:{"0":0,"3":0,"4":0.00481,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.00441},A:{"11":0.17794,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.04148},Q:{"10.4":0},O:{"0":0.00461},H:{"0":0.17454},L:{"0":19.34237},S:{"2.5":0}}; +module.exports={C:{"52":0.00401,"78":0.00803,"99":0.0321,"100":0.14447,"101":1.16377,"102":0.02809,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 103 104 3.5 3.6"},D:{"29":0.00401,"49":0.03612,"56":0.08026,"63":0.00401,"65":0.00803,"69":0.01204,"75":0.00401,"76":0.05217,"80":0.01605,"83":0.01605,"87":0.05618,"91":0.00401,"92":0.23275,"93":0.16453,"94":0.01605,"97":0.04013,"98":0.47353,"99":0.04013,"100":0.84674,"101":3.0258,"102":14.82804,"103":1.93025,"104":0.08026,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 64 66 67 68 70 71 72 73 74 77 78 79 81 84 85 86 88 89 90 95 96 105 106"},F:{"42":0.01204,"86":0.12039,"87":0.11236,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.02809,"17":0.00803,"18":0.14447,"84":0.00803,"86":0.01204,"98":0.01605,"99":0.00803,"100":0.0602,"101":0.88286,"102":4.29792,"103":0.63807,_:"12 13 14 15 79 80 81 83 85 87 88 89 90 91 92 93 94 95 96 97"},E:{"4":0,"12":0.01204,"13":0.04414,"14":0.13243,"15":0.35716,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 11.1","10.1":0.17256,"12.1":0.05217,"13.1":0.32104,"14.1":1.19587,"15.1":0.05618,"15.2-15.3":0.20868,"15.4":1.14772,"15.5":3.78025,"16.0":0.01605},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.06432,"10.0-10.2":0,"10.3":0.05788,"11.0-11.2":0,"11.3-11.4":0.02251,"12.0-12.1":0.02251,"12.2-12.5":1.36027,"13.0-13.1":0.00643,"13.2":0,"13.3":0.01608,"13.4-13.7":0.2444,"14.0-14.4":0.939,"14.5-14.8":2.35073,"15.0-15.1":0.65923,"15.2-15.3":1.53714,"15.4":5.19347,"15.5":19.64513,"16.0":0.02573},P:{"4":0.20017,"5.0-5.4":0.03079,"6.2-6.4":0.0107,"7.2-7.4":0.03161,"8.2":0.02141,"9.2":0.02105,"10.1":0.07086,"11.1-11.2":0.06321,"12.0":0.02105,"13.0":0.02107,"14.0":0.07375,"15.0":0.01054,"16.0":0.36874,"17.0":3.97183},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.01796},A:{"11":0.02809,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01796},H:{"0":0.14168},L:{"0":23.66},S:{"2.5":0},R:{_:"0"},M:{"0":0.26937}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TD.js index a11acaebbe7753..4fd90324096823 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TD.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TD.js @@ -1 +1 @@ -module.exports={C:{"17":0.00473,"35":0.00378,"37":0.00284,"41":0.00662,"47":0.00284,"52":0.0246,"55":0.00284,"57":0.01608,"58":0.00284,"61":0.00189,"66":0.00473,"72":0.035,"78":0.01041,"79":0.00095,"80":0.01135,"81":0.00095,"85":0.01324,"86":0.01608,"87":0.00095,"88":0.00284,"89":0.00757,"90":0.00095,"91":0.00189,"93":0.00284,"94":0.00284,"95":0.02933,"96":0.47395,"97":0.45881,"98":0.02081,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 38 39 40 42 43 44 45 46 48 49 50 51 53 54 56 59 60 62 63 64 65 67 68 69 70 71 73 74 75 76 77 82 83 84 92 99 3.5 3.6"},D:{"11":0.00284,"24":0.00378,"25":0.00568,"26":0.00189,"30":0.01987,"33":0.00095,"37":0.00946,"38":0.00189,"39":0.00095,"40":0.01324,"43":0.00284,"49":0.00568,"52":0.00189,"55":0.0123,"57":0.00378,"60":0.00568,"61":0.00189,"65":0.00473,"67":0.00473,"68":0.00851,"69":0.00095,"70":0.00284,"72":0.00095,"74":0.00189,"75":0.00662,"77":0.00851,"78":0.00284,"79":0.00189,"80":0.06433,"81":0.00851,"83":0.01987,"85":0.00189,"86":0.01419,"87":0.04635,"88":0.00189,"89":0.00189,"90":0.00946,"91":0.00189,"92":0.08609,"93":0.03406,"94":0.01987,"95":0.01135,"96":0.05771,"97":1.16074,"98":2.11053,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 27 28 29 31 32 34 35 36 41 42 44 45 46 47 48 50 51 53 54 56 58 59 62 63 64 66 71 73 76 84 99 100 101"},F:{"34":0.00284,"35":0.00284,"37":0.05487,"40":0.01135,"42":0.01797,"43":0.00284,"44":0.00189,"45":0.00095,"46":0.00473,"50":0.00662,"51":0.00095,"62":0.00189,"64":0.00568,"66":0.00189,"77":0.00189,"79":0.00946,"80":0.03027,"81":0.00946,"82":0.04825,"83":0.05203,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 36 38 39 41 47 48 49 52 53 54 55 56 57 58 60 63 65 67 68 69 70 71 72 73 74 75 76 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.07473,"13":0.01987,"14":0.05487,"15":0.00095,"16":0.00473,"17":0.01324,"18":0.02838,"80":0.00189,"84":0.01135,"85":0.01324,"89":0.01135,"90":0.00284,"91":0.00189,"92":0.02365,"93":0.00851,"94":0.01419,"95":0.03216,"96":0.16082,"97":0.21096,"98":0.45692,_:"79 81 83 86 87 88"},E:{"4":0,"11":0.00473,"13":0.00189,"14":0.00946,"15":0.00189,_:"0 5 6 7 8 9 10 12 3.1 3.2 6.1 11.1 15.4","5.1":0.00284,"7.1":0.00757,"9.1":0.00189,"10.1":0.00568,"12.1":0.00568,"13.1":0.01703,"14.1":0.00757,"15.1":0.00757,"15.2-15.3":0.03216},G:{"8":0.00068,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01559,"10.0-10.2":0.00407,"10.3":0.00881,"11.0-11.2":0.01694,"11.3-11.4":0.04066,"12.0-12.1":0.17144,"12.2-12.5":2.01735,"13.0-13.1":0.23108,"13.2":0.00136,"13.3":0.03049,"13.4-13.7":0.07522,"14.0-14.4":1.23535,"14.5-14.8":0.55702,"15.0-15.1":1.02392,"15.2-15.3":1.33835,"15.4":0.00407},P:{"4":0.84672,"5.0-5.4":0.0504,"6.2-6.4":0.04032,"7.2-7.4":0.21168,"8.2":0.01049,"9.2":0.16128,"10.1":0.04032,"11.1-11.2":0.24192,"12.0":0.0504,"13.0":0.3024,"14.0":0.63504,"15.0":0.23184,"16.0":0.74592},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00138,"4.4":0,"4.4.3-4.4.4":0.05295},A:{"11":0.25069,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.01811},N:{_:"10 11"},R:{_:"0"},M:{"0":0.13581},Q:{"10.4":0.04527},O:{"0":0.5704},H:{"0":3.06011},L:{"0":77.16592},S:{"2.5":0.03622}}; +module.exports={C:{"25":0.00167,"47":0.00669,"52":0.00167,"56":0.00335,"57":0.00167,"62":0.00167,"63":0.00335,"69":0.00167,"70":0.00167,"78":0.00669,"79":0.00335,"87":0.00335,"88":0.00167,"90":0.00167,"91":0.01338,"93":0.00167,"98":0.00837,"99":0.00837,"100":0.34798,"101":2.51285,"102":0.05856,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 58 59 60 61 64 65 66 67 68 71 72 73 74 75 76 77 80 81 82 83 84 85 86 89 92 94 95 96 97 103 104 3.5 3.6"},D:{"30":0.00167,"32":0.00502,"37":0.01338,"40":0.00335,"45":0.00167,"49":0.00167,"50":0.00502,"55":0.00837,"57":0.00837,"58":0.01171,"61":0.00335,"68":0.00669,"69":0.00502,"70":0.01673,"71":0.00335,"72":0.00167,"75":0.00335,"77":0.01673,"80":0.00837,"81":0.00335,"83":0.00335,"84":0.00167,"86":0.00335,"87":0.00837,"89":0.00335,"90":0.01004,"91":0.0184,"92":0.02342,"93":0.00502,"94":0.01338,"95":0.03011,"96":0.01338,"97":0.01338,"98":0.02844,"99":0.02844,"100":0.11376,"101":0.28943,"102":3.75756,"103":0.36304,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 33 34 35 36 38 39 41 42 43 44 46 47 48 51 52 53 54 56 59 60 62 63 64 65 66 67 73 74 76 78 79 85 88 104 105 106"},F:{"18":0.00502,"20":0.00167,"29":0.00837,"35":0.00502,"37":0.00335,"38":0.00502,"42":0.47179,"45":0.00335,"46":0.00669,"47":0.01004,"68":0.00167,"77":0.00335,"78":0.00502,"79":0.01171,"81":0.00502,"82":0.00335,"83":0.00502,"85":0.02844,"86":0.05856,"87":0.04684,_:"9 11 12 15 16 17 19 21 22 23 24 25 26 27 28 30 31 32 33 34 36 39 40 41 43 44 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 80 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0435,"13":0.00837,"14":0.01004,"15":0.00669,"16":0.01673,"17":0.00837,"18":0.06357,"84":0.00502,"85":0.00502,"89":0.00669,"90":0.02342,"92":0.01004,"95":0.00502,"98":0.00837,"99":0.00837,"100":0.04015,"101":0.12715,"102":0.54707,"103":0.10373,_:"79 80 81 83 86 87 88 91 93 94 96 97"},E:{"4":0,"8":0.00167,"14":0.00502,"15":0.00167,_:"0 5 6 7 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1 16.0","5.1":0.00335,"12.1":0.00335,"13.1":0.01673,"14.1":0.03011,"15.1":0.00335,"15.2-15.3":0.00502,"15.4":0.02677,"15.5":0.35802},G:{"8":0.00589,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00327,"7.0-7.1":0.00785,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04319,"10.0-10.2":0,"10.3":0.01832,"11.0-11.2":0.03599,"11.3-11.4":0.01767,"12.0-12.1":0.11844,"12.2-12.5":1.20275,"13.0-13.1":0.01571,"13.2":0.00458,"13.3":0.00982,"13.4-13.7":0.0818,"14.0-14.4":0.7028,"14.5-14.8":0.5307,"15.0-15.1":0.35991,"15.2-15.3":0.6871,"15.4":0.9796,"15.5":1.62417,"16.0":0.06217},P:{"4":0.24316,"5.0-5.4":0.02026,"6.2-6.4":0.03039,"7.2-7.4":0.65855,"8.2":0.06207,"9.2":0.14184,"10.1":0.02026,"11.1-11.2":0.2229,"12.0":0.03039,"13.0":0.11145,"14.0":0.34447,"15.0":0.06079,"16.0":0.6079,"17.0":0.78013},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0021,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.04786},A:{"11":0.12548,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.04164},O:{"0":0.89099},H:{"0":1.59246},L:{"0":76.57454},S:{"2.5":0.05829},R:{_:"0"},M:{"0":0.2165}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TG.js index d85f4eedf65100..a14d0e61cb29cb 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TG.js @@ -1 +1 @@ -module.exports={C:{"40":0.00684,"43":0.01369,"50":0.00684,"51":0.00684,"52":0.02738,"56":0.00342,"60":0.00684,"64":0.01027,"65":0.00342,"66":0.00342,"68":0.01027,"72":0.03764,"75":0.00342,"77":0.00684,"78":0.01711,"79":0.01027,"80":0.03764,"84":0.01027,"85":0.00684,"86":0.00342,"87":0.00684,"88":0.01711,"89":0.02395,"90":0.00342,"91":0.03764,"92":0.02395,"93":0.01369,"94":0.03764,"95":0.11635,"96":1.70073,"97":2.58361,"98":0.05475,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 44 45 46 47 48 49 53 54 55 57 58 59 61 62 63 67 69 70 71 73 74 76 81 82 83 99 3.5 3.6"},D:{"11":0.00342,"29":0.0308,"31":0.20874,"33":0.05133,"43":0.07528,"45":0.00342,"48":0.00342,"49":0.05475,"50":0.00342,"51":0.00342,"55":0.02738,"58":0.00684,"59":0.00684,"60":0.00684,"63":0.01027,"64":0.00342,"65":0.02053,"69":0.00342,"70":0.00342,"72":0.04106,"73":0.01027,"74":0.00684,"75":0.00684,"76":0.01027,"77":0.01027,"78":0.00684,"79":0.03764,"80":0.02395,"81":0.05475,"83":0.01711,"84":0.04791,"85":0.01711,"86":0.06844,"87":0.02738,"88":0.01711,"89":0.03422,"90":0.01369,"91":0.02738,"92":0.22585,"93":0.05133,"94":0.02738,"95":0.07871,"96":0.61254,"97":3.89766,"98":10.25573,"99":0.02053,"100":0.03422,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 32 34 35 36 37 38 39 40 41 42 44 46 47 52 53 54 56 57 61 62 66 67 68 71 101"},F:{"70":0.01027,"79":0.02395,"80":0.00684,"81":0.00684,"82":0.24296,"83":1.98476,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01027,"13":0.00684,"14":0.00684,"15":0.02053,"16":0.00342,"17":0.20532,"18":0.03422,"83":0.00684,"84":0.01027,"85":0.00342,"89":0.00342,"92":0.03422,"95":0.01711,"96":0.04106,"97":0.55094,"98":2.00187,_:"79 80 81 86 87 88 90 91 93 94"},E:{"4":0,"13":0.00342,"14":0.02738,"15":0.00342,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 15.4","5.1":0.01369,"12.1":0.00684,"13.1":0.05817,"14.1":0.10266,"15.1":0.02738,"15.2-15.3":0.05817},G:{"8":0.00062,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.02618,"5.0-5.1":0.02805,"6.0-6.1":0,"7.0-7.1":0.08165,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.06482,"10.0-10.2":0,"10.3":0.08789,"11.0-11.2":0.10098,"11.3-11.4":0.00748,"12.0-12.1":0.05111,"12.2-12.5":1.02223,"13.0-13.1":0.00436,"13.2":0.00125,"13.3":0.10472,"13.4-13.7":0.18762,"14.0-14.4":0.4625,"14.5-14.8":1.03906,"15.0-15.1":0.75919,"15.2-15.3":2.1685,"15.4":0.03117},P:{"4":0.07814,"5.0-5.4":0.01116,"6.2-6.4":0.01036,"7.2-7.4":0.03349,"8.2":0.02073,"9.2":0.04146,"10.1":0.05182,"11.1-11.2":0.02233,"12.0":0.02073,"13.0":0.04465,"14.0":0.02233,"15.0":0.05581,"16.0":0.46883},I:{"0":0,"3":0,"4":0.00106,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00212,"4.2-4.3":0.00531,"4.4":0,"4.4.3-4.4.4":0.06386},A:{"11":0.29429,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.12498},Q:{"10.4":0.03289},O:{"0":0.78278},H:{"0":3.18232},L:{"0":52.9161},S:{"2.5":0.01316}}; +module.exports={C:{"45":0.00792,"47":0.00396,"50":0.00792,"52":0.0594,"56":0.01188,"57":0.00396,"60":0.01188,"66":0.00792,"72":0.02772,"77":0.01188,"78":0.01188,"80":0.03168,"81":0.00396,"83":0.00396,"84":0.20592,"86":0.00792,"88":0.11088,"89":0.00792,"90":0.01188,"91":0.05148,"92":0.01188,"93":0.01188,"94":0.02376,"95":0.02376,"96":0.02376,"97":0.02772,"98":0.04356,"99":0.09108,"100":0.52668,"101":4.68468,"102":0.26928,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 48 49 51 53 54 55 58 59 61 62 63 64 65 67 68 69 70 71 73 74 75 76 79 82 85 87 103 104 3.5 3.6"},D:{"26":0.01188,"29":0.01188,"33":0.03564,"34":0.00792,"40":0.00792,"42":0.00396,"43":0.0198,"47":0.01188,"49":0.01584,"50":0.00396,"55":0.01188,"56":0.00792,"58":0.00396,"62":0.00396,"63":0.00792,"65":0.03564,"68":0.00792,"69":0.01188,"70":0.00396,"72":0.06732,"73":0.17028,"74":0.07128,"75":0.02772,"76":0.02772,"77":0.01584,"78":0.00792,"79":0.04356,"80":0.0198,"81":0.05148,"83":0.03564,"84":0.01188,"85":0.06336,"86":0.04356,"87":0.24156,"88":0.0594,"89":0.02772,"90":0.0396,"91":0.03564,"92":0.06336,"93":0.03564,"94":0.02376,"95":0.09504,"96":0.20196,"97":0.1782,"98":0.11484,"99":0.15444,"100":0.28116,"101":1.04148,"102":14.84604,"103":1.57212,"104":0.03168,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 30 31 32 35 36 37 38 39 41 44 45 46 48 51 52 53 54 57 59 60 61 64 66 67 71 105 106"},F:{"12":0.01188,"36":0.00396,"70":0.01188,"79":0.01188,"82":0.03168,"85":0.05544,"86":0.10296,"87":2.00772,_:"9 11 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 80 81 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02376,"13":0.00396,"14":0.00396,"15":0.00792,"16":0.00792,"17":0.03168,"18":0.06336,"84":0.01188,"89":0.01188,"90":0.00792,"91":0.00396,"92":0.06732,"96":0.01584,"97":0.00792,"99":0.01584,"100":0.01584,"101":0.36432,"102":2.37996,"103":0.3762,_:"79 80 81 83 85 86 87 88 93 94 95 98"},E:{"4":0,"13":0.01188,"14":0.00792,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 11.1 16.0","10.1":0.0594,"12.1":0.00792,"13.1":0.01584,"14.1":0.03168,"15.1":0.00792,"15.2-15.3":0.00396,"15.4":0.03564,"15.5":0.13464},G:{"8":0.00152,"3.2":0.00405,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00759,"6.0-6.1":0.00152,"7.0-7.1":0.05417,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.07796,"10.0-10.2":0,"10.3":0.19238,"11.0-11.2":0.02734,"11.3-11.4":0.02228,"12.0-12.1":0.01418,"12.2-12.5":0.85407,"13.0-13.1":0.00557,"13.2":0.00608,"13.3":0.02886,"13.4-13.7":0.06936,"14.0-14.4":0.30376,"14.5-14.8":0.33515,"15.0-15.1":0.15694,"15.2-15.3":0.42577,"15.4":0.60043,"15.5":1.80939,"16.0":0.04506},P:{"4":0.11774,"5.0-5.4":0.03079,"6.2-6.4":0.0107,"7.2-7.4":0.02141,"8.2":0.02141,"9.2":0.0107,"10.1":0.02074,"11.1-11.2":0.0107,"12.0":0.02074,"13.0":0.03211,"14.0":0.0107,"15.0":0.04148,"16.0":0.07493,"17.0":0.53519},I:{"0":0,"3":0,"4":0.00391,"2.1":0,"2.2":0,"2.3":0,"4.1":0.02423,"4.2-4.3":0.03048,"4.4":0,"4.4.3-4.4.4":0.29775},A:{"11":0.07128,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0.0302},Q:{"10.4":0.01812},O:{"0":0.54964},H:{"0":2.5332},L:{"0":56.18944},S:{"2.5":0.00604},R:{_:"0"},M:{"0":0.15704}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TH.js index f7f4caae49f5c8..e5772b66484278 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TH.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TH.js @@ -1 +1 @@ -module.exports={C:{"52":0.04137,"53":0.00414,"54":0.00414,"55":0.00827,"56":0.08274,"68":0.00827,"69":0.00414,"70":0.00414,"71":0.00414,"72":0.00827,"73":0.00414,"74":0.00414,"75":0.00414,"76":0.00414,"77":0.00414,"78":0.02482,"79":0.00827,"80":0.00827,"81":0.00827,"82":0.00827,"83":0.00827,"84":0.00414,"88":0.00827,"89":0.00827,"91":0.01241,"94":0.00827,"95":0.02896,"96":0.51299,"97":0.88118,"98":0.00827,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 57 58 59 60 61 62 63 64 65 66 67 85 86 87 90 92 93 99 3.5 3.6"},D:{"25":0.00414,"38":0.00827,"43":0.01241,"47":0.00414,"48":0.00414,"49":0.07447,"53":0.02482,"56":0.01655,"57":0.00827,"58":0.01241,"63":0.00827,"65":0.01241,"66":0.00414,"67":0.00414,"68":0.04964,"69":0.03723,"70":0.04137,"71":0.03723,"72":0.04964,"73":0.02069,"74":0.06206,"75":0.04551,"76":0.04551,"77":0.04137,"78":0.05792,"79":0.12825,"80":0.0786,"81":0.06619,"83":0.0786,"84":0.0786,"85":0.08688,"86":0.12825,"87":0.11584,"88":0.08688,"89":0.07447,"90":0.08274,"91":0.06619,"92":0.06619,"93":0.0786,"94":0.07033,"95":0.06206,"96":0.26891,"97":8.01751,"98":19.79141,"99":0.02896,"100":0.02069,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 50 51 52 54 55 59 60 61 62 64 101"},F:{"28":0.01241,"46":0.00414,"53":0.00414,"54":0.00827,"55":0.00827,"70":0.00414,"71":0.00414,"82":0.05378,"83":0.42197,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 56 57 58 60 62 63 64 65 66 67 68 69 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00827},B:{"14":0.00414,"16":0.00827,"17":0.00827,"18":0.02896,"80":0.00827,"81":0.00827,"83":0.00827,"84":0.01655,"85":0.00827,"86":0.01241,"87":0.00827,"88":0.00827,"89":0.01241,"90":0.00827,"91":0.00414,"92":0.00827,"94":0.00827,"95":0.00827,"96":0.02896,"97":0.59987,"98":2.23398,_:"12 13 15 79 93"},E:{"4":0,"13":0.0331,"14":0.14893,"15":0.21099,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.25236,"10.1":0.00414,"11.1":0.00827,"12.1":0.01655,"13.1":0.11584,"14.1":0.7157,"15.1":0.52954,"15.2-15.3":1.1294,"15.4":0.00827},G:{"8":0.0074,"3.2":0.00148,"4.0-4.1":0.00296,"4.2-4.3":0.01036,"5.0-5.1":0.01184,"6.0-6.1":0.0222,"7.0-7.1":0.03107,"8.1-8.4":0.03995,"9.0-9.2":0.02959,"9.3":0.08582,"10.0-10.2":0.03699,"10.3":0.08878,"11.0-11.2":0.0725,"11.3-11.4":0.05919,"12.0-12.1":0.0725,"12.2-12.5":0.68509,"13.0-13.1":0.05771,"13.2":0.02515,"13.3":0.09766,"13.4-13.7":0.24859,"14.0-14.4":0.70876,"14.5-14.8":2.46809,"15.0-15.1":2.46662,"15.2-15.3":7.4324,"15.4":0.03551},P:{"4":0.14731,_:"5.0-5.4 6.2-6.4 8.2","7.2-7.4":0.12627,"9.2":0.04209,"10.1":0.06313,"11.1-11.2":0.15783,"12.0":0.04209,"13.0":0.08418,"14.0":0.14731,"15.0":0.12627,"16.0":1.83086},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00235,"4.2-4.3":0.0086,"4.4":0,"4.4.3-4.4.4":0.03596},A:{"8":0.00849,"9":0.00849,"11":0.3057,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.12899},Q:{"10.4":0},O:{"0":0.2697},H:{"0":0.23313},L:{"0":41.06986},S:{"2.5":0}}; +module.exports={C:{"52":0.0342,"53":0.0038,"56":0.0988,"58":0.0076,"67":0.0228,"68":0.0076,"69":0.0076,"70":0.0076,"71":0.0076,"72":0.0076,"73":0.0038,"74":0.0038,"75":0.0076,"76":0.0076,"77":0.0076,"78":0.0152,"79":0.0076,"80":0.0076,"81":0.0152,"82":0.0076,"83":0.0038,"84":0.0076,"88":0.019,"91":0.0114,"95":0.0076,"97":0.0076,"98":0.0076,"99":0.0114,"100":0.0912,"101":1.0868,"102":0.0266,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 54 55 57 59 60 61 62 63 64 65 66 85 86 87 89 90 92 93 94 96 103 104 3.5 3.6"},D:{"25":0.0152,"38":0.0076,"43":0.0114,"49":0.0646,"53":0.0152,"56":0.0266,"57":0.0038,"58":0.0076,"63":0.0076,"65":0.0114,"66":0.0038,"68":0.0304,"69":0.0266,"70":0.0228,"71":0.0228,"72":0.0304,"73":0.0152,"74":0.0456,"75":0.0304,"76":0.0342,"77":0.0266,"78":0.0418,"79":0.1102,"80":0.0494,"81":0.038,"83":0.0646,"84":0.0532,"85":0.0646,"86":0.0874,"87":0.0836,"88":0.057,"89":0.0532,"90":0.0494,"91":0.0836,"92":0.0532,"93":0.0152,"94":0.0342,"95":0.0266,"96":0.0646,"97":0.0684,"98":0.0456,"99":0.0722,"100":0.1824,"101":1.0336,"102":22.7164,"103":1.558,"104":0.019,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 54 55 59 60 61 62 64 67 105 106"},F:{"28":0.0152,"46":0.0038,"53":0.0038,"54":0.0076,"55":0.0076,"73":0.0038,"75":0.0076,"76":0.0152,"77":0.0114,"85":0.0076,"86":0.076,"87":0.2546,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.0038,"17":0.0076,"18":0.019,"80":0.0038,"81":0.0038,"83":0.0038,"84":0.0114,"85":0.0038,"86":0.0038,"87":0.0038,"88":0.0038,"89":0.0076,"90":0.0152,"91":0.0114,"92":0.0076,"96":0.0076,"97":0.0038,"98":0.0076,"99":0.0076,"100":0.0152,"101":0.2622,"102":2.0786,"103":0.361,_:"12 13 14 15 79 93 94 95"},E:{"4":0,"13":0.0228,"14":0.0874,"15":0.057,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.1368,"10.1":0.0038,"11.1":0.0076,"12.1":0.0114,"13.1":0.0836,"14.1":0.304,"15.1":0.0722,"15.2-15.3":0.0684,"15.4":0.627,"15.5":1.7404,"16.0":0.0076},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00153,"5.0-5.1":0.00459,"6.0-6.1":0.00612,"7.0-7.1":0.01223,"8.1-8.4":0.00764,"9.0-9.2":0.01835,"9.3":0.05657,"10.0-10.2":0.02599,"10.3":0.06727,"11.0-11.2":0.04739,"11.3-11.4":0.02752,"12.0-12.1":0.05962,"12.2-12.5":0.62986,"13.0-13.1":0.04739,"13.2":0.03058,"13.3":0.05962,"13.4-13.7":0.16358,"14.0-14.4":0.50756,"14.5-14.8":1.22761,"15.0-15.1":0.46628,"15.2-15.3":0.68642,"15.4":2.48275,"15.5":8.59024,"16.0":0.02905},P:{"4":0.12487,"5.0-5.4":0.03079,"6.2-6.4":0.02053,"7.2-7.4":0.09365,"8.2":0.02008,"9.2":0.03122,"10.1":0.13054,"11.1-11.2":0.09365,"12.0":0.02081,"13.0":0.06243,"14.0":0.10405,"15.0":0.06243,"16.0":0.26014,"17.0":1.76893},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00129,"4.2-4.3":0.00581,"4.4":0,"4.4.3-4.4.4":0.02389},A:{"8":0.00386,"9":0.00772,"11":0.45961,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.24796},H:{"0":0.22301},L:{"0":45.01742},S:{"2.5":0},R:{_:"0"},M:{"0":0.19837}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TJ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TJ.js index d0b32f7271cf4f..8f347c210c2882 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TJ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TJ.js @@ -1 +1 @@ -module.exports={C:{"28":0.00253,"35":0.00253,"50":0.00253,"52":0.08841,"77":0.00253,"78":0.02526,"79":0.00758,"80":0.00758,"81":0.0101,"82":0.00758,"83":0.00758,"88":0.11367,"91":0.01263,"92":0.00505,"94":0.01768,"95":0.02273,"96":0.42184,"97":0.89926,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 84 85 86 87 89 90 93 98 99 3.5 3.6"},D:{"11":0.02779,"23":0.00253,"35":0.00505,"38":0.00253,"43":0.00253,"44":0.08083,"47":0.00758,"48":0.13135,"49":0.06062,"54":0.00505,"56":0.00253,"57":0.0101,"58":0.00758,"59":0.00505,"62":0.01516,"63":0.00505,"64":0.00758,"67":0.01263,"69":0.01768,"70":0.01516,"71":0.01516,"72":0.00253,"73":0.00505,"74":0.01263,"75":0.04294,"76":0.00758,"77":0.00253,"78":0.0101,"79":0.23744,"80":0.01516,"81":0.02526,"83":0.03284,"84":0.23997,"85":0.29554,"86":0.05557,"87":0.53299,"88":0.02021,"89":0.06568,"90":0.0101,"91":0.04042,"92":0.05052,"93":0.00758,"94":0.04042,"95":0.05557,"96":0.35111,"97":3.95824,"98":8.70712,"100":0.01263,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 36 37 39 40 41 42 45 46 50 51 52 53 55 60 61 65 66 68 99 101"},F:{"11":0.00253,"36":0.01768,"42":0.00758,"56":0.00253,"57":0.00253,"66":0.00505,"67":0.02021,"68":0.05557,"77":0.00253,"79":0.00505,"80":0.00253,"82":0.08588,"83":0.93209,_:"9 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 58 60 62 63 64 65 69 70 71 72 73 74 75 76 78 81 9.5-9.6 10.6 11.1 11.5 11.6","10.0-10.1":0,"10.5":0.00253,"12.1":0.00505},B:{"12":0.00505,"13":0.00505,"14":0.00253,"17":0.00253,"18":0.04547,"84":0.03536,"85":0.00505,"86":0.09346,"91":0.00758,"92":0.00505,"95":0.0101,"96":0.0101,"97":0.12377,"98":0.54056,_:"15 16 79 80 81 83 87 88 89 90 93 94"},E:{"4":0,"13":0.00758,"14":0.02021,"15":0.02021,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 12.1 15.4","5.1":1.66716,"11.1":0.05557,"13.1":0.04042,"14.1":0.22987,"15.1":0.14146,"15.2-15.3":0.17935},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00315,"5.0-5.1":0.0063,"6.0-6.1":0.00315,"7.0-7.1":0.00945,"8.1-8.4":0,"9.0-9.2":0.00315,"9.3":0.05734,"10.0-10.2":0.00567,"10.3":0.07499,"11.0-11.2":0.02584,"11.3-11.4":0.04726,"12.0-12.1":0.27538,"12.2-12.5":0.51547,"13.0-13.1":0.04159,"13.2":0.01954,"13.3":0.08633,"13.4-13.7":0.17203,"14.0-14.4":0.59298,"14.5-14.8":0.80409,"15.0-15.1":1.02149,"15.2-15.3":2.52002,"15.4":0.01449},P:{"4":1.16404,"5.0-5.4":0.17059,"6.2-6.4":0.21073,"7.2-7.4":0.59206,"8.2":0.05017,"9.2":0.34118,"10.1":0.08028,"11.1-11.2":0.36125,"12.0":0.18063,"13.0":0.4315,"14.0":0.51178,"15.0":0.35122,"16.0":1.90662},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0.0018,"4.1":0.0084,"4.2-4.3":0.0114,"4.4":0,"4.4.3-4.4.4":0.0606},A:{"8":0.01087,"9":0.03805,"10":0.01359,"11":0.1522,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.0822},Q:{"10.4":0},O:{"0":1.6889},H:{"0":2.21446},L:{"0":56.84675},S:{"2.5":0}}; +module.exports={C:{"9":0.00258,"44":0.03101,"47":0.00517,"52":0.02584,"72":0.01034,"81":0.01292,"82":0.00775,"83":0.01034,"84":0.00517,"85":0.01034,"86":0.00775,"87":0.00258,"88":0.00517,"89":0.00775,"90":0.00517,"91":0.03101,"92":0.00258,"93":0.00517,"94":0.01034,"95":0.00517,"96":0.01292,"97":0.00775,"98":0.02326,"99":0.0155,"100":0.12403,"101":0.71318,"102":0.03618,_:"2 3 4 5 6 7 8 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 103 104 3.5 3.6"},D:{"26":0.00258,"35":0.01034,"40":0.00258,"44":0.04393,"47":0.00258,"49":0.03876,"63":0.00517,"65":0.00517,"67":0.02067,"68":0.00258,"69":0.00775,"70":0.01034,"71":0.01292,"72":0.00517,"74":0.01809,"75":0.01034,"76":0.00517,"78":0.00775,"79":0.12145,"80":0.44445,"81":0.0646,"83":0.22739,"84":0.57882,"85":0.13437,"86":0.3385,"87":0.05943,"88":0.07494,"89":0.11628,"90":0.1292,"91":0.08269,"92":0.09302,"93":0.03359,"94":0.05685,"95":0.05168,"96":0.1292,"97":0.10336,"98":0.11628,"99":0.11628,"100":0.25323,"101":0.65634,"102":10.61766,"103":1.24807,"104":0.01034,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 36 37 38 39 41 42 43 45 46 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 66 73 77 105 106"},F:{"36":0.00775,"63":0.00775,"64":0.00258,"70":0.00258,"71":0.00517,"72":0.00517,"73":0.00775,"74":0.00517,"75":0.00775,"76":0.00775,"77":0.00775,"78":0.00517,"79":0.01034,"80":0.00775,"81":0.00258,"82":0.02067,"83":0.01034,"84":0.01292,"85":0.03101,"86":0.0801,"87":0.9535,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 65 66 67 68 69 9.5-9.6 10.6 11.1 11.5 11.6","10.0-10.1":0,"10.5":0.00258,"12.1":0.00258},B:{"15":0.00517,"16":0.00775,"17":0.00517,"18":0.03618,"83":0.00258,"84":0.19897,"85":0.15246,"86":0.02584,"87":0.02067,"88":0.02584,"89":0.04393,"90":0.06718,"91":0.05426,"92":0.03101,"93":0.01809,"94":0.03101,"95":0.03101,"96":0.0491,"97":0.02584,"98":0.04134,"99":0.0155,"100":0.02067,"101":0.10336,"102":0.67701,"103":0.08786,_:"12 13 14 79 80 81"},E:{"4":0,"13":0.07494,"14":0.07494,"15":0.02326,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 11.1 12.1 16.0","5.1":0.96125,"9.1":0.00258,"10.1":0.01034,"13.1":0.05943,"14.1":0.16279,"15.1":0.05685,"15.2-15.3":0.10594,"15.4":0.09302,"15.5":0.15504},G:{"8":0.00096,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.01734,"5.0-5.1":0.00096,"6.0-6.1":0.00096,"7.0-7.1":0.00482,"8.1-8.4":0.00193,"9.0-9.2":0.0212,"9.3":0.03951,"10.0-10.2":0.00675,"10.3":0.08094,"11.0-11.2":0.02409,"11.3-11.4":0.03854,"12.0-12.1":0.03469,"12.2-12.5":0.76798,"13.0-13.1":0.16285,"13.2":0.05396,"13.3":0.13298,"13.4-13.7":0.26017,"14.0-14.4":0.85952,"14.5-14.8":1.07055,"15.0-15.1":0.8152,"15.2-15.3":1.14282,"15.4":1.40877,"15.5":2.60073,"16.0":0.07034},P:{"4":0.85354,"5.0-5.4":0.17071,"6.2-6.4":0.16067,"7.2-7.4":0.54225,"8.2":0.02008,"9.2":0.21088,"10.1":0.13054,"11.1-11.2":0.25104,"12.0":0.08033,"13.0":0.29121,"14.0":0.21088,"15.0":0.14058,"16.0":0.64267,"17.0":2.10876},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0.00246,"4.1":0.00676,"4.2-4.3":0.00676,"4.4":0,"4.4.3-4.4.4":0.10267},A:{"8":0.00548,"9":0.01095,"11":0.26006,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0.00742},O:{"0":1.3423},H:{"0":1.86758},L:{"0":55.61206},S:{"2.5":0},R:{_:"0"},M:{"0":0.20023}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TK.js index bc928f2fae333b..579cafe8d1ec96 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TK.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TK.js @@ -1 +1 @@ -module.exports={C:{_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 3.5 3.6"},D:{"97":0.0335,"98":0.13958,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 99 100 101"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"98":0.00558,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1","15.1":18.37924,"15.2-15.3":17.43013,"15.4":0.01117},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.00439,"13.0-13.1":0,"13.2":0.00439,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0.00439,"15.0-15.1":10.90159,"15.2-15.3":32.69162,"15.4":0.24119},P:{"4":0.07814,"5.0-5.4":0.01116,"6.2-6.4":0.01036,"7.2-7.4":0.03349,"8.2":0.02073,"9.2":0.04146,"10.1":0.05182,"11.1-11.2":0.02233,"12.0":0.02073,"13.0":0.04465,"14.0":0.02233,"15.0":0.05581,"16.0":0.46883},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.00558,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":0.31361},S:{"2.5":0}}; +module.exports={C:{"101":0.43423,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 102 103 104 3.5 3.6"},D:{"99":0.22121,"100":0.22121,"101":0.05735,"102":1.46655,"103":0.05735,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 104 105 106"},F:{"87":0.22121,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"84":0.05735,"102":0.05735,_:"12 13 14 15 16 17 18 79 80 81 83 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1","15.1":20.03189,"15.2-15.3":40.50619,"15.4":0.16386,"15.5":0.27037,"16.0":0.05735},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0.54046,"12.2-12.5":0.10861,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0.0543,"15.0-15.1":1.46104,"15.2-15.3":10.33334,"15.4":0.37884,"15.5":0.0543,"16.0":0},P:{"4":0.11774,"5.0-5.4":0.03079,"6.2-6.4":0.0107,"7.2-7.4":0.02141,"8.2":0.02141,"9.2":0.11142,"10.1":0.02074,"11.1-11.2":0.0107,"12.0":0.02074,"13.0":0.03211,"14.0":0.0107,"15.0":0.11142,"16.0":0.44569,"17.0":0.05065},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":4.41992},S:{"2.5":0},R:{_:"0"},M:{"0":0}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TL.js index 588199c3e4d3bf..e176e45bd6efde 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TL.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TL.js @@ -1 +1 @@ -module.exports={C:{"7":0.00466,"15":0.01397,"18":0.00466,"21":0.02329,"23":0.00932,"24":0.00466,"29":0.01863,"30":0.00466,"33":0.00932,"34":0.02329,"37":0.04192,"38":0.00932,"39":0.00466,"40":0.01863,"41":0.13042,"43":0.02329,"44":0.01397,"45":0.01863,"46":0.00932,"47":0.09782,"48":0.04192,"49":0.00932,"52":0.00932,"54":0.01397,"56":0.06055,"57":0.09316,"58":0.00466,"61":0.16769,"65":0.00466,"67":0.03726,"68":0.03261,"70":0.00466,"72":0.0559,"77":0.00932,"78":0.0559,"79":0.41922,"80":0.00466,"81":0.02329,"83":0.00932,"84":0.01397,"85":0.03261,"86":0.04192,"88":0.02795,"89":0.02795,"90":0.00932,"91":0.11645,"92":0.06987,"93":0.07453,"94":0.06055,"95":0.22358,"96":3.9593,"97":4.67663,"98":0.40059,_:"2 3 4 5 6 8 9 10 11 12 13 14 16 17 19 20 22 25 26 27 28 31 32 35 36 42 50 51 53 55 59 60 62 63 64 66 69 71 73 74 75 76 82 87 99 3.5 3.6"},D:{"30":0.00932,"31":0.01397,"40":0.01397,"43":0.04658,"47":0.00932,"49":0.02795,"56":0.00932,"57":0.00932,"58":0.27482,"61":0.07453,"62":0.04192,"63":0.09782,"64":0.00466,"65":0.02795,"67":0.01863,"68":0.01397,"71":0.01397,"72":0.00932,"73":0.00932,"74":0.01863,"75":0.01397,"77":0.00466,"78":0.01397,"79":0.04192,"80":0.03261,"83":0.00932,"84":0.10713,"85":0.00932,"86":0.01863,"87":0.53567,"88":0.01863,"89":0.02329,"90":0.01863,"91":0.03261,"92":0.0559,"93":0.02795,"94":0.10713,"95":0.12111,"96":0.58225,"97":7.37827,"98":15.52046,"99":0.00932,"100":0.00932,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 32 33 34 35 36 37 38 39 41 42 44 45 46 48 50 51 52 53 54 55 59 60 66 69 70 76 81 101"},F:{"56":0.03726,"65":0.00466,"79":0.00466,"82":0.08384,"83":1.14121,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.06055,"13":0.01397,"14":0.00466,"15":0.04658,"16":0.03261,"17":0.02329,"18":0.13508,"84":0.01863,"85":0.02329,"89":0.01397,"90":0.01863,"91":0.00466,"92":0.01863,"93":0.02795,"94":0.03261,"95":0.02329,"96":0.21427,"97":1.04805,"98":4.05246,_:"79 80 81 83 86 87 88"},E:{"4":0,"8":0.01863,"11":0.00932,"12":0.01863,"13":0.00466,"14":0.18166,"15":0.02795,_:"0 5 6 7 9 10 3.1 3.2 5.1 6.1 7.1 15.4","9.1":0.02795,"10.1":0.01863,"11.1":0.01397,"12.1":0.06521,"13.1":0.12111,"14.1":0.24687,"15.1":0.14906,"15.2-15.3":0.20495},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00401,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.00802,"9.3":0.00516,"10.0-10.2":0.00458,"10.3":0.04814,"11.0-11.2":0.01261,"11.3-11.4":0.05273,"12.0-12.1":0.0682,"12.2-12.5":0.76453,"13.0-13.1":0.06533,"13.2":0.01662,"13.3":0.13468,"13.4-13.7":0.20976,"14.0-14.4":1.24423,"14.5-14.8":1.59669,"15.0-15.1":0.65736,"15.2-15.3":0.83503,"15.4":0},P:{"4":0.24874,"5.0-5.4":0.02059,"6.2-6.4":0.01036,"7.2-7.4":0.11401,"8.2":0.02073,"9.2":0.04146,"10.1":0.05182,"11.1-11.2":0.18655,"12.0":0.02073,"13.0":0.13473,"14.0":0.32129,"15.0":0.16583,"16.0":0.4042},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00102,"4.2-4.3":0.00153,"4.4":0,"4.4.3-4.4.4":0.00814},A:{"11":0.31674,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.03206},Q:{"10.4":0.02672},O:{"0":0.55033},H:{"0":1.86149},L:{"0":44.20826},S:{"2.5":0}}; +module.exports={C:{"8":0.00493,"18":0.00986,"19":0.00986,"20":0.00493,"21":0.0789,"24":0.00493,"29":0.00986,"30":0.01972,"31":0.00986,"34":0.01479,"35":0.00986,"36":0.01479,"37":0.01479,"40":0.00986,"41":0.27614,"42":0.00986,"43":0.08876,"44":0.03452,"47":0.02466,"48":0.09369,"52":0.10355,"54":0.02466,"56":0.02466,"57":0.10848,"61":0.10848,"62":0.01479,"65":0.02959,"67":0.05424,"68":0.00986,"72":0.11834,"78":0.09369,"79":0.59665,"81":0.00493,"84":0.01972,"85":0.05917,"86":0.00493,"87":0.00493,"88":0.05917,"89":0.04931,"91":0.20217,"92":0.04438,"94":0.00986,"95":0.03452,"96":0.01479,"97":0.02466,"98":0.0789,"99":0.49803,"100":1.23768,"101":6.25744,"102":0.66075,"103":0.01972,_:"2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 22 23 25 26 27 28 32 33 38 39 45 46 49 50 51 53 55 58 59 60 63 64 66 69 70 71 73 74 75 76 77 80 82 83 90 93 104 3.5 3.6"},D:{"31":0.02959,"40":0.01479,"43":0.03452,"49":0.04438,"55":0.03452,"56":0.00986,"58":0.04438,"60":0.00493,"61":0.05424,"62":0.02959,"63":0.02466,"64":0.00493,"65":0.03945,"66":0.00493,"67":0.02959,"68":0.04438,"70":0.00986,"71":0.00493,"72":0.00493,"74":0.08876,"75":0.01479,"76":0.00493,"78":0.02959,"79":0.01972,"80":0.04931,"81":0.01479,"83":0.01479,"84":0.11834,"85":0.01479,"86":0.05424,"87":0.32052,"88":0.05424,"89":0.01479,"90":0.01479,"91":0.04438,"92":0.05424,"93":0.01479,"94":0.04438,"95":0.03945,"96":0.0789,"97":0.13314,"98":0.10355,"99":0.10355,"100":0.429,"101":1.94281,"102":21.02085,"103":2.36688,"104":0.01479,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 41 42 44 45 46 47 48 50 51 52 53 54 57 59 69 73 77 105 106"},F:{"75":0.00493,"77":0.00493,"79":0.00493,"81":0.01479,"83":0.00986,"84":0.00986,"85":0.01972,"86":0.03452,"87":0.75937,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 76 78 80 82 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.10848,"13":0.04438,"14":0.02466,"15":0.00986,"16":0.04438,"17":0.03945,"18":0.13807,"84":0.01479,"85":0.02959,"86":0.00493,"89":0.02466,"90":0.02466,"92":0.03452,"96":0.05424,"97":0.00986,"98":0.01479,"99":0.03945,"100":0.11341,"101":0.715,"102":4.03849,"103":0.87279,_:"79 80 81 83 87 88 91 93 94 95"},E:{"4":0,"7":0.00493,"12":0.00986,"13":0.00986,"14":0.11834,_:"0 5 6 8 9 10 11 15 3.1 3.2 5.1 7.1 16.0","6.1":0.00986,"9.1":0.02466,"10.1":0.05424,"11.1":0.01972,"12.1":0.03945,"13.1":0.18738,"14.1":0.12821,"15.1":0.13807,"15.2-15.3":0.01479,"15.4":0.10355,"15.5":0.02466},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00101,"8.1-8.4":0.00101,"9.0-9.2":0,"9.3":0.01571,"10.0-10.2":0.01014,"10.3":0.03294,"11.0-11.2":0.00304,"11.3-11.4":0.02585,"12.0-12.1":0.0446,"12.2-12.5":0.63603,"13.0-13.1":0.0522,"13.2":0.02331,"13.3":0.12062,"13.4-13.7":0.20931,"14.0-14.4":0.80176,"14.5-14.8":0.76679,"15.0-15.1":0.45257,"15.2-15.3":0.38517,"15.4":0.86561,"15.5":0.61323,"16.0":0.00203},P:{"4":0.19702,"5.0-5.4":0.03079,"6.2-6.4":0.01037,"7.2-7.4":0.1348,"8.2":0.02008,"9.2":0.05185,"10.1":0.02074,"11.1-11.2":0.15554,"12.0":0.02074,"13.0":0.06222,"14.0":0.2696,"15.0":0.04148,"16.0":0.2385,"17.0":0.3733},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.16272,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.60816},H:{"0":1.7369},L:{"0":42.82322},S:{"2.5":0},R:{_:"0"},M:{"0":0.07095}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TM.js index bb9f61f2bb76e8..2bd4b432a73275 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TM.js @@ -1 +1 @@ -module.exports={C:{"41":0.00669,"48":0.02006,"51":0.04013,"52":0.02006,"56":0.00669,"60":0.02675,"68":0.02006,"71":0.01338,"72":0.01338,"81":0.00669,"82":0.37453,"84":0.02006,"88":0.02006,"89":0.01338,"91":0.04682,"93":0.00669,"94":0.01338,"95":0.03344,"96":0.29427,"97":0.23408,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 47 49 50 53 54 55 57 58 59 61 62 63 64 65 66 67 69 70 73 74 75 76 77 78 79 80 83 85 86 87 90 92 98 99 3.5 3.6"},D:{"49":0.00669,"55":0.00669,"66":0.01338,"67":0.02675,"70":0.00669,"71":0.02675,"78":0.10032,"79":0.26083,"83":0.1137,"84":0.01338,"85":0.04013,"86":0.06688,"87":0.02675,"89":0.07357,"90":0.10032,"91":0.82931,"92":0.81594,"93":0.06019,"94":0.01338,"95":0.00669,"96":0.19395,"97":14.31901,"98":31.23296,"100":0.02006,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 61 62 63 64 65 68 69 72 73 74 75 76 77 80 81 88 99 101"},F:{"28":0.02675,"47":0.54173,"54":0.01338,"76":0.04682,"77":0.03344,"81":0.02006,"82":0.0535,"83":0.41466,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 52 53 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.02006,"18":0.00669,"88":0.00669,"94":0.01338,"95":0.00669,"96":0.01338,"97":0.32771,"98":1.96627,_:"12 13 15 16 17 79 80 81 83 84 85 86 87 89 90 91 92 93"},E:{"4":0,"11":0.1137,"12":0.01338,"14":1.13027,_:"0 5 6 7 8 9 10 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 13.1 15.4","12.1":0.00669,"14.1":0.2809,"15.1":0.06019,"15.2-15.3":0.20733},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04035,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0.00605,"12.0-12.1":0,"12.2-12.5":0.02623,"13.0-13.1":0,"13.2":0.00605,"13.3":0.01412,"13.4-13.7":0.00605,"14.0-14.4":0.14324,"14.5-14.8":0.05447,"15.0-15.1":8.59046,"15.2-15.3":11.27977,"15.4":0.00605},P:{"4":0.06226,"5.0-5.4":0.0102,"6.2-6.4":0.01036,"7.2-7.4":0.06226,"8.2":0.02073,"9.2":0.0306,"10.1":0.0204,"11.1-11.2":0.13261,"12.0":0.06121,"13.0":0.08302,"14.0":0.15302,"15.0":0.04151,"16.0":0.45661},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00192,"4.4":0,"4.4.3-4.4.4":0.00471},A:{"10":0.15252,"11":3.25836,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.41413},Q:{"10.4":0.01325},O:{"0":0.815},H:{"0":0},L:{"0":8.23535},S:{"2.5":0}}; +module.exports={C:{"48":0.0117,"60":0.30173,"78":0.03275,"81":0.00468,"97":0.00468,"100":1.24435,"101":6.61469,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 98 99 102 103 104 3.5 3.6"},D:{"62":0.02573,"68":0.00468,"71":0.04912,"79":0.26197,"80":0.0117,"85":0.01637,"89":0.00468,"90":0.09122,"91":0.0117,"92":0.01637,"96":0.00468,"97":0.0117,"100":1.74489,"101":0.51458,"102":10.3337,"103":0.43038,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 63 64 65 66 67 69 70 72 73 74 75 76 77 78 81 83 84 86 87 88 93 94 95 98 99 104 105 106"},F:{"86":0.0538,"87":0.02105,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00468,"101":0.00468,"102":0.0117,"103":0.02573,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 16.0","13.1":0.00468,"14.1":0.26197,"15.1":0.10292,"15.2-15.3":0.04912,"15.4":0.24793,"15.5":0.43505},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00736,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0.00736,"12.0-12.1":0.02207,"12.2-12.5":0.00736,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0.00736,"14.0-14.4":0,"14.5-14.8":0.05149,"15.0-15.1":4.25127,"15.2-15.3":1.50045,"15.4":51.49335,"15.5":16.07834,"16.0":0.08091},P:{"4":0.15063,"5.0-5.4":0.03079,"6.2-6.4":0.0107,"7.2-7.4":0.1368,"8.2":0.02141,"9.2":0.02105,"10.1":0.07086,"11.1-11.2":0.01004,"12.0":0.02105,"13.0":0.09471,"14.0":0.11576,"15.0":0.05262,"16.0":0.17072,"17.0":0.41173},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.04678,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.06129},H:{"0":0.01451},L:{"0":2.0742},S:{"2.5":0},R:{_:"0"},M:{"0":0.18386}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TN.js index feac9ffd0a2229..1208f5d6b880b6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TN.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TN.js @@ -1 +1 @@ -module.exports={C:{"43":0.00436,"52":0.09592,"60":0.00436,"72":0.00436,"78":0.03488,"80":0.00872,"81":0.00436,"82":0.01308,"84":0.13952,"87":0.00436,"88":0.02616,"89":0.00872,"91":0.03052,"92":0.00872,"93":0.00436,"94":0.01308,"95":0.02616,"96":0.64528,"97":0.97664,"98":0.00872,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 83 85 86 90 99 3.5 3.6"},D:{"38":0.00436,"39":0.01308,"42":0.00436,"43":0.00436,"47":0.00872,"49":0.20492,"50":0.00436,"55":0.00436,"56":0.0218,"58":0.00872,"60":0.00436,"62":0.00436,"63":0.01744,"64":0.00872,"65":0.01308,"66":0.00872,"67":0.01744,"68":0.01308,"69":0.00872,"70":0.01744,"71":0.01308,"72":0.01308,"73":0.00872,"74":0.01308,"75":0.01308,"76":0.00872,"77":0.01744,"78":0.01744,"79":0.05668,"80":0.03052,"81":0.03488,"83":0.0436,"84":0.05232,"85":0.06976,"86":0.07848,"87":0.72376,"88":0.03052,"89":0.06976,"90":0.0654,"91":0.0872,"92":0.10028,"93":0.4578,"94":0.05232,"95":0.10028,"96":0.55372,"97":9.02084,"98":20.66204,"99":0.01308,"100":0.03052,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 44 45 46 48 51 52 53 54 57 59 61 101"},F:{"40":0.00872,"71":0.00436,"82":0.7848,"83":2.27156,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00872,"13":0.01308,"16":0.00436,"17":0.00436,"18":0.0218,"84":0.00436,"85":0.00436,"89":0.00436,"92":0.03488,"94":0.00436,"95":0.01744,"96":0.03052,"97":0.55372,"98":1.90096,_:"14 15 79 80 81 83 86 87 88 90 91 93"},E:{"4":0,"13":0.10028,"14":0.03488,"15":0.03924,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.00872,"12.1":0.00872,"13.1":0.03924,"14.1":0.11336,"15.1":0.06104,"15.2-15.3":0.06976},G:{"8":0.00037,"3.2":0.00037,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01373,"6.0-6.1":0.00111,"7.0-7.1":0.03526,"8.1-8.4":0.00223,"9.0-9.2":0.00223,"9.3":0.05382,"10.0-10.2":0.00482,"10.3":0.06235,"11.0-11.2":0.02004,"11.3-11.4":0.01485,"12.0-12.1":0.01485,"12.2-12.5":0.2906,"13.0-13.1":0.00557,"13.2":0.00631,"13.3":0.0308,"13.4-13.7":0.33477,"14.0-14.4":0.26054,"14.5-14.8":0.7716,"15.0-15.1":0.52182,"15.2-15.3":1.25594,"15.4":0.00779},P:{"4":0.25027,"5.0-5.4":0.01116,"6.2-6.4":0.01036,"7.2-7.4":0.14599,"8.2":0.02073,"9.2":0.04171,"10.1":0.05182,"11.1-11.2":0.12514,"12.0":0.03128,"13.0":0.17728,"14.0":0.17728,"15.0":0.13556,"16.0":1.53291},I:{"0":0,"3":0,"4":0.00296,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00414,"4.2-4.3":0.00591,"4.4":0,"4.4.3-4.4.4":0.06032},A:{"9":0.00436,"11":0.11772,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.07897},Q:{"10.4":0},O:{"0":0.10718},H:{"0":0.27237},L:{"0":48.76275},S:{"2.5":0}}; +module.exports={C:{"47":0.0041,"52":0.08192,"71":0.0041,"78":0.02867,"81":0.0041,"82":0.00819,"84":0.01229,"87":0.0041,"88":0.01229,"91":0.04096,"95":0.00819,"97":0.01229,"98":0.0041,"99":0.03686,"100":0.14746,"101":1.18374,"102":0.04096,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 79 80 83 85 86 89 90 92 93 94 96 103 104 3.5 3.6"},D:{"39":0.0041,"43":0.0041,"47":0.0041,"49":0.18022,"56":0.01229,"58":0.0041,"61":0.0041,"63":0.02048,"64":0.00819,"65":0.04915,"66":0.0041,"67":0.02048,"68":0.00819,"69":0.01229,"70":0.01638,"71":0.01229,"72":0.00819,"73":0.01229,"74":0.01638,"75":0.00819,"76":0.0041,"77":0.00819,"78":0.07373,"79":0.05325,"80":0.02048,"81":0.04096,"83":0.03277,"84":0.02867,"85":0.03277,"86":0.08602,"87":0.16384,"88":0.02458,"89":0.05325,"90":0.04096,"91":0.05734,"92":0.07373,"93":0.02867,"94":0.03686,"95":0.02458,"96":0.0983,"97":0.1024,"98":0.12288,"99":0.15565,"100":0.31539,"101":1.31482,"102":24.62925,"103":2.22413,"104":0.01638,"105":0.00819,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 44 45 46 48 50 51 52 53 54 55 57 59 60 62 106"},F:{"28":0.0041,"79":0.00819,"82":0.0041,"84":0.00819,"85":0.04506,"86":1.27386,"87":1.89235,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0041,"13":0.0041,"15":0.0041,"18":0.02048,"84":0.0041,"89":0.0041,"91":0.00819,"92":0.01638,"97":0.0041,"98":0.00819,"99":0.01229,"100":0.04506,"101":0.3072,"102":1.88826,"103":0.34816,_:"14 16 17 79 80 81 83 85 86 87 88 90 93 94 95 96"},E:{"4":0,"13":0.02048,"14":0.02458,"15":0.0041,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 16.0","13.1":0.03277,"14.1":0.1065,"15.1":0.01638,"15.2-15.3":0.01229,"15.4":0.05325,"15.5":0.1065},G:{"8":0.00156,"3.2":0.00039,"4.0-4.1":0.00078,"4.2-4.3":0,"5.0-5.1":0.00624,"6.0-6.1":0.00117,"7.0-7.1":0.0199,"8.1-8.4":0.00429,"9.0-9.2":0.00156,"9.3":0.04955,"10.0-10.2":0.00234,"10.3":0.04213,"11.0-11.2":0.00897,"11.3-11.4":0.00858,"12.0-12.1":0.00936,"12.2-12.5":0.2766,"13.0-13.1":0.00819,"13.2":0.00663,"13.3":0.01912,"13.4-13.7":0.09519,"14.0-14.4":0.21535,"14.5-14.8":0.43968,"15.0-15.1":0.14162,"15.2-15.3":0.25085,"15.4":0.60822,"15.5":1.66469,"16.0":0.01365},P:{"4":0.19994,"5.0-5.4":0.03079,"6.2-6.4":0.0107,"7.2-7.4":0.1368,"8.2":0.02141,"9.2":0.02105,"10.1":0.07086,"11.1-11.2":0.09471,"12.0":0.02105,"13.0":0.09471,"14.0":0.11576,"15.0":0.05262,"16.0":0.23151,"17.0":1.30489},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00275,"4.2-4.3":0.00619,"4.4":0,"4.4.3-4.4.4":0.06191},A:{"11":0.06554,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.10627},H:{"0":0.28507},L:{"0":54.13984},S:{"2.5":0},R:{_:"0"},M:{"0":0.08856}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TO.js index 0c0f1ad2e3ce5a..d75fe95f846e84 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TO.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TO.js @@ -1 +1 @@ -module.exports={C:{"78":0.10686,"92":0.03717,"96":0.14403,"97":0.39026,"98":0.01858,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 93 94 95 99 3.5 3.6"},D:{"61":0.06504,"75":0.00929,"77":0.27876,"79":0.21836,"81":0.00929,"86":0.00929,"88":0.00929,"89":0.00929,"90":0.18119,"91":0.02788,"94":0.01858,"95":0.24624,"96":2.93627,"97":4.56702,"98":21.67824,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 76 78 80 83 84 85 87 92 93 99 100 101"},F:{"82":0.22765,"83":0.51571,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00929,"18":0.07434,"81":0.02788,"83":0.01858,"84":0.00929,"89":0.00929,"90":0.00929,"92":0.07434,"93":0.10686,"96":0.32522,"97":1.40309,"98":2.30906,_:"12 13 15 16 17 79 80 85 86 87 88 91 94 95"},E:{"4":0,"13":0.01858,"14":0.13473,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.02788,"11.1":0.00929,"12.1":0.01858,"13.1":0.00929,"14.1":0.11615,"15.1":0.28805,"15.2-15.3":0.01858},G:{"8":0.05313,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00781,"10.0-10.2":0.03828,"10.3":0.01484,"11.0-11.2":0.03047,"11.3-11.4":0.00781,"12.0-12.1":0.00781,"12.2-12.5":1.24853,"13.0-13.1":0.20548,"13.2":0.01484,"13.3":0.30471,"13.4-13.7":0.62426,"14.0-14.4":0.82975,"14.5-14.8":2.24625,"15.0-15.1":1.52276,"15.2-15.3":0.65473,"15.4":0},P:{"4":0.07814,"5.0-5.4":0.01116,"6.2-6.4":0.01036,"7.2-7.4":0.38743,"8.2":0.02073,"9.2":0.43841,"10.1":0.05182,"11.1-11.2":0.13254,"12.0":0.02073,"13.0":0.25489,"14.0":0.04078,"15.0":0.03059,"16.0":0.84624},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.02788,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0.58359},H:{"0":0.07096},L:{"0":52.20205},S:{"2.5":0}}; +module.exports={C:{"32":0.02339,"45":0.00468,"91":0.31804,"98":0.00935,"99":0.00935,"100":0.04209,"101":2.09062,"102":0.07951,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 103 104 3.5 3.6"},D:{"67":0.09354,"69":0.00935,"74":0.00935,"75":0.27127,"76":0.00935,"77":0.02806,"79":0.05145,"80":0.00935,"81":0.00468,"84":0.00468,"86":0.01871,"87":0.14031,"88":0.00468,"89":0.00935,"90":0.09354,"92":0.02806,"93":0.05612,"94":0.01403,"95":0.0608,"96":0.03274,"97":0.21514,"98":0.05612,"99":0.19643,"100":1.3423,"101":1.73984,"102":22.62265,"103":1.86145,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 70 71 72 73 78 83 85 91 104 105 106"},F:{"82":0.00468,"86":0.01871,"87":0.16837,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01403,"14":0.00468,"16":0.01403,"17":0.02339,"18":0.03274,"84":0.03742,"89":0.04209,"90":0.03274,"92":0.05145,"94":0.00935,"97":0.01403,"98":0.01403,"99":0.02339,"100":0.11225,"101":0.54253,"102":3.54049,"103":0.65946,_:"13 15 79 80 81 83 85 86 87 88 91 93 95 96"},E:{"4":0,"11":0.00468,"13":0.00935,"14":0.14031,_:"0 5 6 7 8 9 10 12 15 3.1 3.2 5.1 6.1 7.1 10.1 12.1 16.0","9.1":0.02339,"11.1":0.02339,"13.1":0.03274,"14.1":0.03742,"15.1":0.00935,"15.2-15.3":0.01403,"15.4":0.16837,"15.5":0.23385},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03116,"10.0-10.2":0.00246,"10.3":0.041,"11.0-11.2":0.02296,"11.3-11.4":0.0164,"12.0-12.1":0.12955,"12.2-12.5":0.69942,"13.0-13.1":0.10249,"13.2":0.0164,"13.3":0.0451,"13.4-13.7":0.24271,"14.0-14.4":0.87489,"14.5-14.8":1.15204,"15.0-15.1":0.4272,"15.2-15.3":0.60595,"15.4":1.35375,"15.5":2.43773,"16.0":0},P:{"4":0.09111,"5.0-5.4":0.03079,"6.2-6.4":0.0107,"7.2-7.4":0.52642,"8.2":0.02141,"9.2":0.11136,"10.1":0.07086,"11.1-11.2":0.03037,"12.0":0.04049,"13.0":0.02025,"14.0":0.22271,"15.0":0.06074,"16.0":0.26321,"17.0":0.42518},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.02661},A:{"11":0.04209,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.12773},H:{"0":0.12596},L:{"0":51.45714},S:{"2.5":0},R:{_:"0"},M:{"0":0.1703}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TR.js index 50bb36b6abc3d9..393c6adc3c4b1a 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TR.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TR.js @@ -1 +1 @@ -module.exports={C:{"52":0.01394,"55":0.00279,"78":0.01115,"79":0.00836,"80":0.00836,"81":0.00557,"82":0.00279,"83":0.00279,"84":0.04181,"87":0.00557,"88":0.00279,"89":0.00279,"91":0.00836,"92":0.01115,"94":0.00279,"95":0.01115,"96":0.25362,"97":0.4069,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 85 86 90 93 98 99 3.5 3.6"},D:{"22":0.06689,"26":0.03623,"34":0.07525,"38":0.12263,"43":0.00279,"47":0.0864,"48":0.00557,"49":0.10033,"53":0.02508,"56":0.00557,"58":0.00279,"59":0.00557,"60":0.00279,"61":0.01115,"63":0.00836,"65":0.00557,"67":0.00557,"68":0.01672,"69":0.00557,"70":0.00836,"71":0.04738,"72":0.00557,"73":0.01672,"74":0.00557,"75":0.00836,"76":0.00836,"77":0.00836,"78":0.01115,"79":0.18116,"80":0.0223,"81":0.0223,"83":0.03344,"84":0.06968,"85":0.06968,"86":0.06689,"87":0.28706,"88":0.0223,"89":0.04459,"90":0.01672,"91":0.04181,"92":0.05295,"93":0.17001,"94":0.04181,"95":0.11148,"96":0.26755,"97":5.46252,"98":13.05988,"99":0.00557,"100":0.00557,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 44 45 46 50 51 52 54 55 57 62 64 66 101"},F:{"28":0.00836,"31":0.00557,"32":0.01115,"36":0.01394,"40":0.06131,"46":0.04738,"71":0.00279,"79":0.00279,"80":0.00557,"81":0.00279,"82":0.30936,"83":1.10923,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00557,"13":0.00557,"14":0.00557,"15":0.00557,"16":0.00557,"17":0.00557,"18":0.02508,"84":0.00557,"85":0.00557,"86":0.00557,"87":0.00557,"89":0.00279,"91":0.00279,"92":0.00836,"94":0.00557,"95":0.01115,"96":0.0223,"97":0.36788,"98":1.19841,_:"79 80 81 83 88 90 93"},E:{"4":0,"13":0.05017,"14":0.05295,"15":0.02508,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 15.4","5.1":0.0223,"10.1":0.00557,"11.1":0.00557,"12.1":0.01672,"13.1":0.05295,"14.1":0.15886,"15.1":0.07525,"15.2-15.3":0.1505},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00106,"6.0-6.1":0.00317,"7.0-7.1":0.04643,"8.1-8.4":0.00739,"9.0-9.2":0.00422,"9.3":0.08864,"10.0-10.2":0.01688,"10.3":0.13929,"11.0-11.2":0.04221,"11.3-11.4":0.03904,"12.0-12.1":0.03377,"12.2-12.5":1.40244,"13.0-13.1":0.01899,"13.2":0.00633,"13.3":0.06437,"13.4-13.7":0.24799,"14.0-14.4":0.50864,"14.5-14.8":1.79817,"15.0-15.1":1.3328,"15.2-15.3":4.74129,"15.4":0.0095},P:{"4":0.60186,"5.0-5.4":0.0102,"6.2-6.4":0.01036,"7.2-7.4":0.22442,"8.2":0.02073,"9.2":0.0306,"10.1":0.0204,"11.1-11.2":0.13261,"12.0":0.06121,"13.0":0.26523,"14.0":0.15302,"15.0":0.19382,"16.0":2.88689},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0023,"4.2-4.3":0.0076,"4.4":0,"4.4.3-4.4.4":0.02616},A:{"8":0.01136,"9":0.01136,"10":0.00568,"11":0.42589,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.18754},Q:{"10.4":0},O:{"0":0.12983},H:{"0":0.68971},L:{"0":55.72819},S:{"2.5":0}}; +module.exports={C:{"52":0.00549,"78":0.00412,"79":0.00275,"80":0.00275,"81":0.00137,"82":0.00137,"84":0.00275,"88":0.00137,"91":0.00275,"98":0.00137,"99":0.00549,"100":0.02334,"101":0.25126,"102":0.01236,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 83 85 86 87 89 90 92 93 94 95 96 97 103 104 3.5 3.6"},D:{"22":0.02609,"26":0.01373,"31":0.00275,"34":0.02883,"38":0.04394,"42":0.00137,"43":0.00275,"47":0.03844,"49":0.04119,"50":0.00137,"53":0.01098,"56":0.00275,"58":0.00137,"59":0.00137,"60":0.00137,"61":0.00137,"63":0.00412,"65":0.00275,"66":0.00137,"67":0.00275,"68":0.00824,"69":0.00275,"70":0.00412,"71":0.02471,"72":0.00137,"73":0.00549,"74":0.00275,"75":0.00412,"76":0.00275,"77":0.00412,"78":0.00549,"79":0.08787,"80":0.01236,"81":0.00824,"83":0.01922,"84":0.03021,"85":0.03158,"86":0.03158,"87":0.04531,"88":0.00961,"89":0.01922,"90":0.00687,"91":0.0151,"92":0.02471,"93":0.00549,"94":0.01236,"95":0.0151,"96":0.03433,"97":0.03158,"98":0.0508,"99":0.0357,"100":0.07002,"101":0.34325,"102":7.18766,"103":0.79909,"104":0.00275,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 32 33 35 36 37 39 40 41 44 45 46 48 51 52 54 55 57 62 64 105 106"},F:{"28":0.00687,"31":0.00275,"32":0.00412,"36":0.00824,"40":0.03844,"46":0.03021,"70":0.00137,"71":0.00137,"84":0.00137,"85":0.00961,"86":0.16888,"87":0.35698,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.00137,"14":0.00137,"15":0.00137,"16":0.00137,"17":0.00275,"18":0.00824,"84":0.00275,"85":0.00137,"86":0.00137,"91":0.00137,"92":0.00275,"96":0.00275,"97":0.00275,"98":0.00275,"99":0.00412,"100":0.00412,"101":0.06453,"102":0.53959,"103":0.14691,_:"12 79 80 81 83 87 88 89 90 93 94 95"},E:{"4":0,"13":0.00549,"14":0.01922,"15":0.00687,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.00137,"11.1":0.00412,"12.1":0.00412,"13.1":0.01785,"14.1":0.04531,"15.1":0.00961,"15.2-15.3":0.00824,"15.4":0.05492,"15.5":0.12494},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.0138,"8.1-8.4":0,"9.0-9.2":0.0023,"9.3":0.02645,"10.0-10.2":0.0069,"10.3":0.08396,"11.0-11.2":0.0276,"11.3-11.4":0.03105,"12.0-12.1":0.02875,"12.2-12.5":1.4929,"13.0-13.1":0.0138,"13.2":0.00575,"13.3":0.05866,"13.4-13.7":0.17827,"14.0-14.4":0.3968,"14.5-14.8":1.06734,"15.0-15.1":0.25533,"15.2-15.3":0.53367,"15.4":1.5136,"15.5":5.70935,"16.0":0.04486},P:{"4":0.38885,_:"5.0-5.4 6.2-6.4 8.2 10.1","7.2-7.4":0.17396,"9.2":0.0307,"11.1-11.2":0.0921,"12.0":0.0307,"13.0":0.18419,"14.0":0.0921,"15.0":0.07163,"16.0":0.36839,"17.0":2.855},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00093,"4.2-4.3":0.00358,"4.4":0,"4.4.3-4.4.4":0.01275},A:{"9":0.00137,"11":0.12632,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.24156},H:{"0":0.81675},L:{"0":70.63605},S:{"2.5":0},R:{_:"0"},M:{"0":0.07764}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TT.js index 18ac670d3322ea..fb20a383c10693 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TT.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TT.js @@ -1 +1 @@ -module.exports={C:{"52":0.00901,"68":0.00451,"78":0.01352,"87":0.00901,"89":0.02704,"91":0.01802,"92":0.12166,"93":0.00451,"94":0.00451,"95":0.13969,"96":0.58578,"97":1.14903,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 90 98 99 3.5 3.6"},D:{"26":0.03154,"38":0.00451,"47":0.01802,"49":0.03605,"55":0.00451,"56":0.00901,"62":0.00901,"63":0.00901,"66":0.03154,"67":0.00901,"68":0.02253,"74":0.05858,"75":0.01802,"76":0.04055,"77":0.00451,"79":0.09012,"80":0.02704,"81":0.09913,"83":0.00901,"84":0.00901,"86":0.01802,"87":0.09012,"88":0.01802,"89":0.01802,"90":0.03154,"91":0.05858,"92":0.04506,"93":0.11265,"94":0.08111,"95":0.0721,"96":0.55874,"97":9.12916,"98":19.20908,"99":0.02704,"100":0.04506,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 53 54 57 58 59 60 61 64 65 69 70 71 72 73 78 85 101"},F:{"28":0.01352,"80":0.01352,"82":0.21629,"83":0.8291,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00451,"14":0.00451,"15":0.00451,"16":0.00451,"17":0.00901,"18":0.01802,"85":0.03154,"89":0.00901,"90":0.00451,"92":0.01352,"95":0.02253,"96":0.03605,"97":1.40137,"98":4.43841,_:"13 79 80 81 83 84 86 87 88 91 93 94"},E:{"4":0,"13":0.00901,"14":0.21178,"15":0.11265,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02253,"11.1":0.09463,"12.1":0.03605,"13.1":0.28838,"14.1":0.43258,"15.1":0.25684,"15.2-15.3":0.57226,"15.4":0.01802},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00936,"6.0-6.1":0,"7.0-7.1":0.09358,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.17406,"10.0-10.2":0,"10.3":0.1254,"11.0-11.2":0.00561,"11.3-11.4":0.0131,"12.0-12.1":0.00936,"12.2-12.5":0.37433,"13.0-13.1":0.01029,"13.2":0.00094,"13.3":0.0262,"13.4-13.7":0.05896,"14.0-14.4":0.26016,"14.5-14.8":1.33075,"15.0-15.1":1.45335,"15.2-15.3":5.36232,"15.4":0.04679},P:{"4":0.46074,"5.0-5.4":0.01116,"6.2-6.4":0.01036,"7.2-7.4":0.27859,"8.2":0.02073,"9.2":0.02143,"10.1":0.05182,"11.1-11.2":0.11786,"12.0":0.01071,"13.0":0.18215,"14.0":0.16072,"15.0":0.15001,"16.0":4.47881},I:{"0":0,"3":0,"4":0.00202,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0004,"4.2-4.3":0.00161,"4.4":0,"4.4.3-4.4.4":0.03991},A:{"11":0.09463,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.14282},Q:{"10.4":0},O:{"0":0.03845},H:{"0":0.33803},L:{"0":40.36034},S:{"2.5":0}}; +module.exports={C:{"45":0.00832,"47":0.00416,"52":0.00416,"68":0.00416,"72":0.01248,"78":0.03745,"87":0.00832,"91":0.02081,"99":0.00416,"100":0.12483,"101":1.18589,"102":0.05409,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 92 93 94 95 96 97 98 103 104 3.5 3.6"},D:{"38":0.00832,"47":0.01664,"49":0.07906,"53":0.00416,"55":0.02081,"56":0.01248,"58":0.01248,"67":0.00416,"68":0.01664,"70":0.00832,"72":0.00832,"73":0.00832,"74":0.08738,"75":0.01248,"76":0.03329,"79":0.06242,"81":0.03329,"83":0.03745,"84":0.01248,"85":0.00416,"86":0.01248,"87":0.0957,"88":0.00832,"89":0.01664,"90":0.01664,"91":0.10819,"92":0.03745,"93":0.10819,"94":0.04993,"95":0.01664,"96":0.08322,"97":0.10819,"98":0.08738,"99":0.14564,"100":0.4161,"101":1.97648,"102":21.84525,"103":1.97231,"104":0.01248,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 57 59 60 61 62 63 64 65 66 69 71 77 78 80 105 106"},F:{"28":0.01248,"85":0.02497,"86":0.3204,"87":0.62415,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00832,"18":0.01664,"84":0.00416,"85":0.01248,"89":0.00416,"92":0.00832,"96":0.00832,"98":0.00416,"99":0.02913,"100":0.01248,"101":0.60335,"102":3.48692,"103":0.67408,_:"13 14 15 16 17 79 80 81 83 86 87 88 90 91 93 94 95 97"},E:{"4":0,"13":0.01248,"14":0.16644,"15":0.09154,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.01664,"11.1":0.07906,"12.1":0.02913,"13.1":0.22469,"14.1":0.2455,"15.1":0.04161,"15.2-15.3":0.03745,"15.4":0.51596,"15.5":1.12763},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00429,"6.0-6.1":0.00107,"7.0-7.1":0.03,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.13071,"10.0-10.2":0.00429,"10.3":0.09321,"11.0-11.2":0.00214,"11.3-11.4":0.00429,"12.0-12.1":0.015,"12.2-12.5":0.39107,"13.0-13.1":0.0075,"13.2":0.00321,"13.3":0.01714,"13.4-13.7":0.06857,"14.0-14.4":0.17143,"14.5-14.8":0.53892,"15.0-15.1":0.20678,"15.2-15.3":0.36964,"15.4":1.62105,"15.5":6.94705,"16.0":0.01714},P:{"4":0.48525,"5.0-5.4":0.03079,"6.2-6.4":0.0107,"7.2-7.4":0.31647,"8.2":0.02141,"9.2":0.01055,"10.1":0.07086,"11.1-11.2":0.08439,"12.0":0.01055,"13.0":0.16878,"14.0":0.12659,"15.0":0.0422,"16.0":0.41141,"17.0":4.39887},I:{"0":0,"3":0,"4":0.00089,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00089,"4.2-4.3":0.00798,"4.4":0,"4.4.3-4.4.4":0.06031},A:{"10":0.00832,"11":0.04577,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.0292},H:{"0":0.37038},L:{"0":43.9561},S:{"2.5":0},R:{_:"0"},M:{"0":0.21604}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TV.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TV.js index c82f79bf14549f..02380051b51cae 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TV.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TV.js @@ -1 +1 @@ -module.exports={C:{"85":0.05317,"96":0.10634,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 86 87 88 89 90 91 92 93 94 95 97 98 99 3.5 3.6"},D:{"96":0.26585,"97":10.66263,"98":16.39272,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 99 100 101"},F:{"82":0.05317,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.10634,"17":0.05317,"92":0.42536,"95":0.15951,"96":0.47853,"97":0.37219,"98":4.61352,_:"12 14 15 16 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1 15.1 15.4","11.1":0.05317,"13.1":0.15951,"14.1":2.01637,"15.2-15.3":0.47853},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.46475,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.14295,"13.0-13.1":0,"13.2":0.10727,"13.3":0,"13.4-13.7":0.10727,"14.0-14.4":0,"14.5-14.8":0.85791,"15.0-15.1":0.10727,"15.2-15.3":0.42884,"15.4":0},P:{"4":0.15843,"5.0-5.4":0.0102,"6.2-6.4":0.01036,"7.2-7.4":0.04225,"8.2":0.02073,"9.2":0.19011,"10.1":0.11002,"11.1-11.2":0.04225,"12.0":0.06121,"13.0":0.39078,"14.0":0.05281,"15.0":0.02112,"16.0":0.54008},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.05317,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0.32505},H:{"0":0},L:{"0":57.37093},S:{"2.5":0}}; +module.exports={C:{"97":0.04163,"101":0.0791,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 98 99 100 102 103 104 3.5 3.6"},D:{"64":0.19982,"80":0.04163,"92":0.0791,"96":0.28308,"98":0.28308,"101":1.48619,"102":20.99401,"103":2.28965,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 83 84 85 86 87 88 89 90 91 93 94 95 97 99 100 104 105 106"},F:{"87":0.12073,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.04163,"89":0.12073,"90":0.0791,"98":0.04163,"100":0.24145,"101":3.69258,"102":7.74734,"103":1.76511,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 91 92 93 94 95 96 97 99"},E:{"4":0,"13":0.04163,_:"0 5 6 7 8 9 10 11 12 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 14.1 15.2-15.3 15.4 15.5 16.0","12.1":0.16236,"13.1":0.16236,"15.1":0.0791},G:{"8":0.02985,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0.06004,"13.3":0,"13.4-13.7":0.18011,"14.0-14.4":0.27,"14.5-14.8":0.18011,"15.0-15.1":0.20996,"15.2-15.3":0.14993,"15.4":0.63023,"15.5":1.68106,"16.0":0},P:{"4":0.20017,"5.0-5.4":0.03079,"6.2-6.4":0.0107,"7.2-7.4":0.03161,"8.2":0.02141,"9.2":0.02105,"10.1":0.07086,"11.1-11.2":0.06321,"12.0":0.02105,"13.0":0.02107,"14.0":0.07375,"15.0":0.01054,"16.0":0.36874,"17.0":0.76465},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":54.93025},S:{"2.5":0},R:{_:"0"},M:{"0":0}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TW.js index 53593ca8f42215..34d1e0716eb5ed 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TW.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TW.js @@ -1 +1 @@ -module.exports={C:{"34":0.02901,"52":0.01658,"55":0.00829,"67":0.00414,"78":0.00829,"88":0.00414,"89":0.00414,"91":0.00829,"93":0.00414,"94":0.00829,"95":0.02072,"96":0.3481,"97":0.57602,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 90 92 98 99 3.5 3.6"},D:{"11":0.00829,"22":0.00829,"26":0.00414,"30":0.00829,"34":0.02901,"38":0.11189,"45":0.00414,"47":0.00414,"49":0.15333,"53":0.11189,"55":0.01243,"56":0.02901,"58":0.00829,"61":0.0373,"62":0.00414,"63":0.00829,"64":0.00829,"65":0.01243,"66":0.01243,"67":0.02486,"68":0.01658,"69":0.01658,"70":0.01658,"71":0.02072,"72":0.01243,"73":0.00829,"74":0.02072,"75":0.01658,"76":0.01243,"77":0.00829,"78":0.00829,"79":0.45584,"80":0.02072,"81":0.06216,"83":0.01658,"84":0.01243,"85":0.01658,"86":0.04973,"87":0.09117,"88":0.01658,"89":0.06216,"90":0.02486,"91":0.04973,"92":0.04973,"93":0.21549,"94":0.07045,"95":0.08702,"96":0.50971,"97":7.79486,"98":20.07768,"99":0.00829,"100":0.01243,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 31 32 33 35 36 37 39 40 41 42 43 44 46 48 50 51 52 54 57 59 60 101"},F:{"28":0.02901,"36":0.02072,"40":0.00414,"46":0.07045,"82":0.01243,"83":0.1036,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00414,"16":0.00414,"17":0.00829,"18":0.02072,"84":0.00414,"91":0.00414,"92":0.00829,"94":0.00829,"95":0.00829,"96":0.02486,"97":0.56773,"98":2.24605,_:"12 13 15 79 80 81 83 85 86 87 88 89 90 93"},E:{"4":0,"12":0.00829,"13":0.12846,"14":0.41854,"15":0.16162,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.00829,"10.1":0.02072,"11.1":0.02901,"12.1":0.06216,"13.1":0.28179,"14.1":1.82336,"15.1":0.62989,"15.2-15.3":1.27221,"15.4":0.00414},G:{"8":0.00261,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.02866,"6.0-6.1":0.01303,"7.0-7.1":0.10681,"8.1-8.4":0.04689,"9.0-9.2":0.01563,"9.3":0.2501,"10.0-10.2":0.02345,"10.3":0.26573,"11.0-11.2":0.05992,"11.3-11.4":0.05992,"12.0-12.1":0.13287,"12.2-12.5":0.93527,"13.0-13.1":0.11984,"13.2":0.0495,"13.3":0.22665,"13.4-13.7":0.5002,"14.0-14.4":2.64168,"14.5-14.8":6.13526,"15.0-15.1":4.51482,"15.2-15.3":9.86331,"15.4":0.0495},P:{"4":0.63144,"5.0-5.4":0.08035,"6.2-6.4":0.18078,"7.2-7.4":0.41177,"8.2":0.0107,"9.2":0.06421,"10.1":0.03211,"11.1-11.2":0.11773,"12.0":0.06421,"13.0":0.22475,"14.0":0.21405,"15.0":0.26756,"16.0":2.40803},I:{"0":0,"3":0,"4":0.00045,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0009,"4.2-4.3":0.0036,"4.4":0,"4.4.3-4.4.4":0.01847},A:{"11":0.19477,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.08784},Q:{"10.4":0.01171},O:{"0":0.0937},H:{"0":0.29938},L:{"0":28.60877},S:{"2.5":0}}; +module.exports={C:{"34":0.02726,"52":0.01363,"55":0.00909,"78":0.00909,"88":0.00454,"91":0.00909,"96":0.00454,"98":0.00909,"99":0.01363,"100":0.30892,"101":0.98583,"102":0.02726,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 92 93 94 95 97 103 104 3.5 3.6"},D:{"22":0.00909,"26":0.00454,"30":0.00909,"34":0.0318,"38":0.10903,"49":0.13175,"53":0.10903,"55":0.00909,"56":0.02726,"58":0.01363,"61":0.04089,"62":0.00454,"63":0.00909,"64":0.00454,"65":0.01363,"66":0.00909,"67":0.02272,"68":0.01363,"69":0.01363,"70":0.01363,"71":0.01363,"72":0.00909,"73":0.00909,"74":0.01817,"75":0.01363,"76":0.01363,"77":0.00909,"78":0.00909,"79":0.5497,"80":0.01817,"81":0.04997,"83":0.02726,"84":0.01363,"85":0.01363,"86":0.04543,"87":0.08632,"88":0.00909,"89":0.05906,"90":0.01817,"91":0.0318,"92":0.0318,"93":0.01363,"94":0.02726,"95":0.0318,"96":0.08177,"97":0.12266,"98":0.08632,"99":0.10903,"100":0.29075,"101":1.66728,"102":26.77644,"103":2.08069,"104":0.02272,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 57 59 60 105 106"},F:{"28":0.03634,"36":0.01817,"46":0.07723,"86":0.01363,"87":0.09086,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.00909,"18":0.01363,"84":0.00454,"92":0.00454,"96":0.00909,"98":0.00909,"99":0.01363,"100":0.01817,"101":0.33164,"102":2.51682,"103":0.4543,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 89 90 91 93 94 95 97"},E:{"4":0,"12":0.00454,"13":0.10449,"14":0.3271,"15":0.07269,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.00454,"10.1":0.01817,"11.1":0.0318,"12.1":0.05906,"13.1":0.24532,"14.1":1.04943,"15.1":0.14083,"15.2-15.3":0.12266,"15.4":1.05852,"15.5":2.53045},G:{"8":0.00237,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.02368,"6.0-6.1":0.01421,"7.0-7.1":0.08289,"8.1-8.4":0.04263,"9.0-9.2":0.01421,"9.3":0.24629,"10.0-10.2":0.01895,"10.3":0.24156,"11.0-11.2":0.04263,"11.3-11.4":0.045,"12.0-12.1":0.09947,"12.2-12.5":0.8123,"13.0-13.1":0.08052,"13.2":0.03079,"13.3":0.1492,"13.4-13.7":0.30787,"14.0-14.4":1.64117,"14.5-14.8":2.80397,"15.0-15.1":1.1178,"15.2-15.3":1.49198,"15.4":4.25805,"15.5":10.07675,"16.0":0.01184},P:{"4":0.72321,"5.0-5.4":0.08021,"6.2-6.4":0.18048,"7.2-7.4":0.37098,"8.2":0.04011,"9.2":0.03287,"10.1":0.01096,"11.1-11.2":0.0767,"12.0":0.03287,"13.0":0.16436,"14.0":0.12053,"15.0":0.12053,"16.0":0.44926,"17.0":2.37781},I:{"0":0,"3":0,"4":0.00074,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00074,"4.2-4.3":0.0026,"4.4":0,"4.4.3-4.4.4":0.01228},A:{"11":0.17718,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0.01091},O:{"0":0.08731},H:{"0":0.23249},L:{"0":27.125},S:{"2.5":0},R:{_:"0"},M:{"0":0.0764}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TZ.js index 7715faed66696b..84517d8bf4fbd5 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TZ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TZ.js @@ -1 +1 @@ -module.exports={C:{"30":0.00377,"32":0.00377,"33":0.00189,"34":0.00566,"36":0.00566,"38":0.01132,"39":0.00189,"43":0.00755,"44":0.00377,"45":0.00377,"47":0.00377,"48":0.00377,"49":0.00755,"51":0.00189,"52":0.00755,"56":0.00377,"61":0.00189,"63":0.00377,"65":0.00566,"68":0.00566,"72":0.01321,"78":0.01887,"79":0.00189,"84":0.00377,"85":0.00189,"88":0.00566,"89":0.0151,"90":0.00189,"91":0.02076,"92":0.00377,"93":0.00755,"94":0.01321,"95":0.02831,"96":0.78311,"97":1.09635,"98":0.07359,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 35 37 40 41 42 46 50 53 54 55 57 58 59 60 62 64 66 67 69 70 71 73 74 75 76 77 80 81 82 83 86 87 99 3.5 3.6"},D:{"11":0.00189,"21":0.00189,"37":0.00377,"38":0.00377,"39":0.01321,"43":0.00566,"47":0.00566,"49":0.01321,"50":0.00377,"53":0.00189,"55":0.10001,"57":0.00377,"58":0.00566,"60":0.00377,"63":0.00944,"64":0.00566,"65":0.00944,"67":0.00377,"68":0.00377,"69":0.00755,"70":0.00944,"71":0.00566,"72":0.00755,"73":0.00377,"74":0.01132,"75":0.00944,"76":0.00189,"77":0.00566,"78":0.00566,"79":0.02642,"80":0.01321,"81":0.00755,"83":0.00755,"84":0.01132,"85":0.00944,"86":0.0151,"87":0.0434,"88":0.01887,"89":0.01321,"90":0.01132,"91":0.02453,"92":0.02642,"93":0.01887,"94":0.03208,"95":0.0434,"96":0.26041,"97":2.73426,"98":6.62148,"99":0.00566,"100":0.00755,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 40 41 42 44 45 46 48 51 52 54 56 59 61 62 66 101"},F:{"28":0.00189,"37":0.00189,"63":0.00189,"67":0.00566,"73":0.00189,"79":0.00566,"80":0.00377,"81":0.00755,"82":0.06605,"83":0.66422,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 65 66 68 69 70 71 72 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02642,"13":0.00944,"14":0.00377,"15":0.01698,"16":0.01698,"17":0.00944,"18":0.10001,"84":0.00944,"85":0.00755,"86":0.00377,"89":0.02453,"90":0.0151,"91":0.00189,"92":0.01698,"93":0.00377,"94":0.00755,"95":0.02453,"96":0.05095,"97":0.37551,"98":1.00011,_:"79 80 81 83 87 88"},E:{"4":0,"12":0.00755,"13":0.00944,"14":0.06416,"15":0.02453,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 7.1","6.1":0.00189,"9.1":0.00377,"10.1":0.00755,"11.1":0.01321,"12.1":0.01698,"13.1":0.04906,"14.1":0.07737,"15.1":0.04906,"15.2-15.3":0.08869,"15.4":0.00566},G:{"8":0.00119,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00298,"6.0-6.1":0,"7.0-7.1":0.01193,"8.1-8.4":0.00358,"9.0-9.2":0.0006,"9.3":0.03221,"10.0-10.2":0.00298,"10.3":0.04713,"11.0-11.2":0.03579,"11.3-11.4":0.05846,"12.0-12.1":0.04593,"12.2-12.5":1.14534,"13.0-13.1":0.03221,"13.2":0.01074,"13.3":0.08232,"13.4-13.7":0.27619,"14.0-14.4":0.83932,"14.5-14.8":0.9968,"15.0-15.1":0.91687,"15.2-15.3":1.41437,"15.4":0.00537},P:{"4":0.35011,"5.0-5.4":0.02059,"6.2-6.4":0.21073,"7.2-7.4":0.12357,"8.2":0.05017,"9.2":0.13387,"10.1":0.08028,"11.1-11.2":0.08238,"12.0":0.04119,"13.0":0.08238,"14.0":0.17506,"15.0":0.21625,"16.0":1.02974},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00219,"4.2-4.3":0.00658,"4.4":0,"4.4.3-4.4.4":0.07235},A:{"8":0.00209,"11":0.07528,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.1379},Q:{"10.4":0},O:{"0":1.25736},H:{"0":16.62702},L:{"0":56.13239},S:{"2.5":0.44616}}; +module.exports={C:{"34":0.00401,"38":0.002,"43":0.00401,"44":0.002,"47":0.00801,"48":0.00401,"49":0.00401,"52":0.01402,"53":0.002,"56":0.002,"58":0.002,"60":0.002,"68":0.00601,"72":0.02804,"78":0.02203,"84":0.00801,"88":0.00401,"89":0.00601,"91":0.02404,"92":0.002,"94":0.00601,"95":0.01002,"96":0.01402,"97":0.00801,"98":0.00601,"99":0.02604,"100":0.21432,"101":1.51827,"102":0.16425,"103":0.00401,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 45 46 50 51 54 55 57 59 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 87 90 93 104 3.5 3.6"},D:{"32":0.02404,"33":0.00401,"37":0.002,"38":0.00401,"43":0.00601,"49":0.00801,"50":0.00401,"53":0.002,"55":0.00401,"56":0.002,"57":0.00801,"58":0.002,"63":0.00601,"64":0.002,"65":0.00401,"67":0.002,"68":0.00401,"69":0.00601,"70":0.01202,"71":0.002,"72":0.00601,"73":0.01002,"74":0.01402,"75":0.00401,"76":0.01002,"77":0.00801,"78":0.00801,"79":0.02804,"80":0.01002,"81":0.00601,"83":0.01202,"84":0.01002,"85":0.03205,"86":0.02404,"87":0.03806,"88":0.02003,"89":0.01202,"90":0.01402,"91":0.02404,"92":0.02003,"93":0.01402,"94":0.01402,"95":0.01602,"96":0.03806,"97":0.02604,"98":0.07011,"99":0.10015,"100":0.12218,"101":0.58888,"102":7.72157,"103":0.69304,"104":0.00601,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 34 35 36 39 40 41 42 44 45 46 47 48 51 52 54 59 60 61 62 66 105 106"},F:{"36":0.00601,"79":0.00801,"82":0.00601,"84":0.00401,"85":0.01402,"86":0.03806,"87":0.46269,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02404,"13":0.01402,"14":0.00601,"15":0.01402,"16":0.02003,"17":0.01002,"18":0.10616,"84":0.01202,"85":0.00801,"89":0.02404,"90":0.01602,"92":0.02203,"93":0.002,"96":0.00401,"97":0.00801,"98":0.01202,"99":0.01002,"100":0.02604,"101":0.22233,"102":0.94341,"103":0.15223,_:"79 80 81 83 86 87 88 91 94 95"},E:{"4":0,"12":0.00401,"13":0.00801,"14":0.02604,"15":0.01002,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00401,"11.1":0.01202,"12.1":0.00801,"13.1":0.0661,"14.1":0.08613,"15.1":0.01202,"15.2-15.3":0.01803,"15.4":0.05408,"15.5":0.11617,"16.0":0.00401},G:{"8":0.00182,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00303,"6.0-6.1":0,"7.0-7.1":0.01573,"8.1-8.4":0,"9.0-9.2":0.00121,"9.3":0.03207,"10.0-10.2":0.00484,"10.3":0.12163,"11.0-11.2":0.01452,"11.3-11.4":0.03994,"12.0-12.1":0.02844,"12.2-12.5":0.85503,"13.0-13.1":0.02057,"13.2":0.00968,"13.3":0.0587,"13.4-13.7":0.13676,"14.0-14.4":0.58636,"14.5-14.8":0.64748,"15.0-15.1":0.42116,"15.2-15.3":0.55247,"15.4":0.89799,"15.5":1.58662,"16.0":0.00968},P:{"4":0.29764,"5.0-5.4":0.03079,"6.2-6.4":0.02053,"7.2-7.4":0.10264,"8.2":0.02008,"9.2":0.07184,"10.1":0.13054,"11.1-11.2":0.05132,"12.0":0.01026,"13.0":0.05132,"14.0":0.12316,"15.0":0.10264,"16.0":0.28738,"17.0":0.76976},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00145,"4.2-4.3":0.00688,"4.4":0,"4.4.3-4.4.4":0.07964},A:{"8":0.00648,"9":0.01081,"11":0.06483,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.15157},H:{"0":18.50363},L:{"0":55.43036},S:{"2.5":0.37586},R:{_:"0"},M:{"0":0.15194}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UA.js index 5f910aa0863ec8..aecadc4b754e1b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UA.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UA.js @@ -1 +1 @@ -module.exports={C:{"45":0.01142,"48":0.01713,"52":0.27408,"53":0.00571,"55":0.27408,"56":0.03426,"57":0.00571,"60":0.07994,"68":0.24553,"72":0.00571,"78":0.12562,"79":0.01713,"80":0.01142,"81":0.04568,"82":0.02284,"83":0.01142,"84":0.02855,"86":0.01713,"87":0.01713,"88":0.02855,"89":0.02284,"90":0.01142,"91":0.10849,"92":0.02284,"93":0.02284,"94":0.02284,"95":0.16559,"96":1.0278,"97":1.42179,"98":0.00571,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 49 50 51 54 58 59 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 85 99 3.5 3.6"},D:{"41":0.01713,"48":0.00571,"49":0.19414,"51":0.00571,"56":0.00571,"57":0.00571,"58":0.00571,"59":0.12562,"61":0.07423,"62":0.00571,"63":0.03426,"64":0.00571,"65":0.00571,"66":0.00571,"67":0.01713,"68":0.01713,"69":0.02855,"70":0.01713,"71":0.02284,"72":0.01713,"73":0.03997,"74":0.07994,"75":0.01142,"76":0.02284,"77":0.01713,"78":0.02284,"79":0.07994,"80":0.04568,"81":0.02855,"83":0.07423,"84":0.10278,"85":0.1142,"86":0.25695,"87":0.21127,"88":0.1713,"89":0.09707,"90":0.18272,"91":0.06852,"92":0.15988,"93":1.22765,"94":0.11991,"95":0.09707,"96":0.93073,"97":10.62631,"98":19.8708,"99":0.01713,"100":0.06852,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 47 50 52 53 54 55 60 101"},F:{"35":0.00571,"36":0.06852,"58":0.01713,"60":0.00571,"67":0.00571,"68":0.01713,"70":0.00571,"71":0.01142,"72":0.00571,"73":0.01142,"75":0.01142,"76":0.00571,"77":0.09136,"78":0.0571,"79":0.08565,"80":0.08565,"81":0.05139,"82":1.10774,"83":7.94832,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 62 63 64 65 66 69 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.03997},B:{"14":0.00571,"18":0.01142,"84":0.00571,"85":0.00571,"90":0.00571,"96":0.01142,"97":0.27979,"98":0.86792,_:"12 13 15 16 17 79 80 81 83 86 87 88 89 91 92 93 94 95"},E:{"4":0,"13":0.03426,"14":0.1142,"15":0.06281,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1","5.1":0.18272,"9.1":0.00571,"11.1":0.01142,"12.1":0.02855,"13.1":0.12562,"14.1":0.35973,"15.1":0.21127,"15.2-15.3":0.34831,"15.4":0.00571},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00197,"6.0-6.1":0.00262,"7.0-7.1":0.00721,"8.1-8.4":0.00197,"9.0-9.2":0.00262,"9.3":0.03015,"10.0-10.2":0.0059,"10.3":0.03801,"11.0-11.2":0.01245,"11.3-11.4":0.01376,"12.0-12.1":0.01114,"12.2-12.5":0.24051,"13.0-13.1":0.01573,"13.2":0.00655,"13.3":0.03473,"13.4-13.7":0.12386,"14.0-14.4":0.32505,"14.5-14.8":1.25236,"15.0-15.1":1.06428,"15.2-15.3":3.34226,"15.4":0.01769},P:{"4":0.01085,"5.0-5.4":0.0102,"6.2-6.4":0.01085,"7.2-7.4":0.08681,"8.2":0.02073,"9.2":0.0217,"10.1":0.11002,"11.1-11.2":0.06511,"12.0":0.01085,"13.0":0.0434,"14.0":0.07596,"15.0":0.06511,"16.0":1.08512},I:{"0":0,"3":0,"4":0.00158,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00158,"4.2-4.3":0.00473,"4.4":0,"4.4.3-4.4.4":0.02643},A:{"8":0.01713,"9":0.01713,"11":0.3426,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.16302},Q:{"10.4":0},O:{"0":0.18447},H:{"0":3.72845},L:{"0":26.30602},S:{"2.5":0}}; +module.exports={C:{"48":0.01179,"50":0.0059,"52":0.2358,"55":0.01769,"56":0.0059,"57":0.01179,"60":0.04716,"68":0.29475,"72":0.01179,"78":0.10611,"80":0.0059,"81":0.10022,"82":0.01769,"83":0.01179,"84":0.01179,"86":0.01179,"87":0.0059,"88":0.01179,"89":0.0059,"91":0.07074,"93":0.01179,"94":0.01179,"95":0.02358,"96":0.01769,"97":0.01769,"98":0.01769,"99":0.22401,"100":0.38907,"101":2.5938,"102":0.08843,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 51 53 54 58 59 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 85 90 92 103 104 3.5 3.6"},D:{"22":0.0059,"31":0.0059,"33":0.01769,"41":0.01179,"42":0.02358,"49":0.25938,"51":0.0059,"53":0.0059,"57":0.0059,"59":0.15327,"61":0.05306,"63":0.02358,"64":0.0059,"67":0.01179,"68":0.01179,"69":0.01179,"70":0.01179,"71":0.01179,"72":0.02358,"73":0.01179,"74":0.07664,"75":0.0059,"76":0.01769,"77":0.01179,"78":0.01179,"79":0.05895,"80":0.04716,"81":0.02358,"83":0.05895,"84":0.1179,"85":0.10022,"86":0.21812,"87":0.12969,"88":0.04716,"89":0.07074,"90":0.05895,"91":0.04716,"92":0.06485,"93":0.14148,"94":0.02948,"95":0.04127,"96":0.15917,"97":0.37728,"98":0.17685,"99":0.26528,"100":0.67793,"101":1.82745,"102":25.74936,"103":2.38158,"104":0.02948,"105":0.0059,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 32 34 35 36 37 38 39 40 43 44 45 46 47 48 50 52 54 55 56 58 60 62 65 66 106"},F:{"21":0.01769,"36":0.07664,"62":0.01179,"69":0.01769,"70":0.01179,"71":0.0059,"72":0.0059,"73":0.01769,"74":0.01179,"77":0.01769,"78":0.01179,"79":0.02948,"80":0.02358,"81":0.02358,"82":0.02948,"83":0.02358,"84":0.07074,"85":0.57182,"86":1.27922,"87":9.24926,_:"9 11 12 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 63 64 65 66 67 68 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.03537},B:{"18":0.02358,"92":0.0059,"98":0.0059,"100":0.0059,"101":0.1238,"102":0.90783,"103":0.19454,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 99"},E:{"4":0,"13":0.04127,"14":0.09432,"15":0.01179,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 16.0","5.1":0.06485,"9.1":0.0059,"11.1":0.01179,"12.1":0.02358,"13.1":0.08843,"14.1":0.1179,"15.1":0.03537,"15.2-15.3":0.02948,"15.4":0.18275,"15.5":0.54824},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00171,"6.0-6.1":0.00057,"7.0-7.1":0.01081,"8.1-8.4":0.00057,"9.0-9.2":0.00114,"9.3":0.03585,"10.0-10.2":0.00114,"10.3":0.02447,"11.0-11.2":0.01024,"11.3-11.4":0.01081,"12.0-12.1":0.00911,"12.2-12.5":0.17472,"13.0-13.1":0.01081,"13.2":0.00512,"13.3":0.01707,"13.4-13.7":0.06659,"14.0-14.4":0.1787,"14.5-14.8":0.47237,"15.0-15.1":0.16334,"15.2-15.3":0.37334,"15.4":0.87303,"15.5":3.19447,"16.0":0.03984},P:{"4":0.02191,"5.0-5.4":0.01045,"6.2-6.4":0.0107,"7.2-7.4":0.08763,"8.2":0.02141,"9.2":0.01095,"10.1":0.07086,"11.1-11.2":0.06573,"12.0":0.02105,"13.0":0.04382,"14.0":0.05477,"15.0":0.04382,"16.0":0.10954,"17.0":1.01875},I:{"0":0,"3":0,"4":0.00301,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00361,"4.2-4.3":0.01145,"4.4":0,"4.4.3-4.4.4":0.04759},A:{"8":0.0059,"9":0.0059,"11":0.30065,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.16826},H:{"0":5.8825},L:{"0":27.74748},S:{"2.5":0},R:{_:"0"},M:{"0":0.13133}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UG.js index 13852d1aa6eb65..8e29a08ce9d679 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UG.js @@ -1 +1 @@ -module.exports={C:{"36":0.00277,"38":0.00277,"40":0.00277,"41":0.00554,"42":0.00554,"43":0.00831,"44":0.01108,"47":0.01108,"48":0.00554,"50":0.00554,"52":0.04157,"55":0.00277,"56":0.00831,"57":0.00554,"58":0.00277,"60":0.01108,"64":0.01108,"66":0.00554,"67":0.00277,"68":0.00554,"69":0.00277,"72":0.0194,"73":0.00554,"76":0.00277,"78":0.05819,"82":0.00277,"84":0.00554,"85":0.00831,"86":0.00554,"87":0.00277,"88":0.02217,"89":0.03325,"90":0.01108,"91":0.06928,"92":0.0194,"93":0.00554,"94":0.02494,"95":0.07482,"96":1.35225,"97":2.01729,"98":0.28264,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 39 45 46 49 51 53 54 59 61 62 63 65 70 71 74 75 77 79 80 81 83 99 3.5 3.6"},D:{"19":0.00831,"24":0.00277,"37":0.00554,"38":0.00831,"39":0.00277,"40":0.00277,"47":0.00831,"49":0.01386,"50":0.00554,"56":0.00554,"57":0.00554,"58":0.00554,"59":0.00554,"62":0.00554,"63":0.01386,"64":0.0194,"65":0.01663,"66":0.00554,"67":0.00277,"68":0.00277,"69":0.00277,"70":0.00554,"71":0.00554,"72":0.01663,"73":0.00277,"74":0.02217,"75":0.01108,"76":0.00831,"77":0.00277,"78":0.00554,"79":0.03602,"80":0.05265,"81":0.01108,"83":0.06096,"84":0.00554,"85":0.01386,"86":0.03325,"87":0.04157,"88":0.01386,"89":0.0194,"90":0.02217,"91":0.04157,"92":0.05265,"93":0.04434,"94":0.06373,"95":0.04988,"96":0.3824,"97":4.41697,"98":9.19972,"99":0.02217,"100":0.00831,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 41 42 43 44 45 46 48 51 52 53 54 55 60 61 101"},F:{"28":0.00277,"57":0.00277,"67":0.00554,"68":0.00277,"79":0.01108,"80":0.01108,"81":0.00277,"82":0.05819,"83":0.79251,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 58 60 62 63 64 65 66 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.03048,"13":0.01663,"14":0.00831,"15":0.01386,"16":0.01386,"17":0.01386,"18":0.08313,"84":0.01108,"85":0.00831,"88":0.00277,"89":0.0194,"90":0.01108,"91":0.00554,"92":0.03879,"93":0.00831,"94":0.00831,"95":0.0194,"96":0.07205,"97":0.40457,"98":1.26358,_:"79 80 81 83 86 87"},E:{"4":0,"8":0.00277,"10":0.00277,"12":0.00277,"13":0.01108,"14":0.02771,"15":0.01663,_:"0 5 6 7 9 11 3.1 3.2 5.1 6.1 7.1 9.1 15.4","10.1":0.00554,"11.1":0.00554,"12.1":0.01386,"13.1":0.04157,"14.1":0.11915,"15.1":0.03879,"15.2-15.3":0.05542},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00301,"6.0-6.1":0.00086,"7.0-7.1":0.0262,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03608,"10.0-10.2":0.00515,"10.3":0.05241,"11.0-11.2":0.01675,"11.3-11.4":0.26246,"12.0-12.1":0.01546,"12.2-12.5":0.53523,"13.0-13.1":0.0378,"13.2":0.01289,"13.3":0.05842,"13.4-13.7":0.08763,"14.0-14.4":0.5842,"14.5-14.8":0.73326,"15.0-15.1":0.73626,"15.2-15.3":1.08506,"15.4":0.0043},P:{"4":0.12479,"5.0-5.4":0.0102,"6.2-6.4":0.01036,"7.2-7.4":0.07279,"8.2":0.02073,"9.2":0.17678,"10.1":0.11002,"11.1-11.2":0.05199,"12.0":0.0104,"13.0":0.09359,"14.0":0.35357,"15.0":0.13519,"16.0":0.59274},I:{"0":0,"3":0,"4":0.00081,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00081,"4.2-4.3":0.00222,"4.4":0,"4.4.3-4.4.4":0.03954},A:{"8":0.00603,"9":0.00302,"10":0.00302,"11":0.12371,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00723},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.13733},Q:{"10.4":0},O:{"0":1.02638},H:{"0":15.98526},L:{"0":52.49623},S:{"2.5":0.23852}}; +module.exports={C:{"31":0.00566,"34":0.00283,"35":0.00283,"39":0.00283,"41":0.00849,"42":0.00566,"43":0.00566,"44":0.00566,"47":0.02264,"49":0.00283,"50":0.00566,"52":0.03396,"55":0.00566,"56":0.00849,"58":0.00566,"60":0.01698,"62":0.00283,"64":0.01132,"65":0.00849,"66":0.00566,"67":0.00566,"68":0.01415,"69":0.01415,"71":0.00283,"72":0.02264,"75":0.00566,"76":0.00283,"78":0.01415,"85":0.00566,"88":0.0283,"89":0.00849,"91":0.06509,"92":0.00566,"93":0.00566,"94":0.00849,"95":0.00566,"96":0.00849,"97":0.00849,"98":0.01981,"99":0.05094,"100":0.35375,"101":2.30645,"102":0.36224,"103":0.00566,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 36 37 38 40 45 46 48 51 53 54 57 59 61 63 70 73 74 77 79 80 81 82 83 84 86 87 90 104 3.5 3.6"},D:{"19":0.00849,"33":0.00566,"37":0.00283,"38":0.00849,"39":0.00849,"47":0.00566,"49":0.00283,"53":0.00566,"55":0.00849,"56":0.01132,"57":0.00283,"59":0.00283,"62":0.00283,"63":0.00566,"64":0.02264,"65":0.01698,"66":0.00849,"69":0.00283,"70":0.00566,"72":0.01698,"74":0.01415,"75":0.01132,"76":0.01415,"77":0.00566,"78":0.00849,"79":0.0283,"80":0.02547,"81":0.01415,"83":0.02547,"84":0.00849,"85":0.01132,"86":0.02547,"87":0.03396,"88":0.00849,"89":0.01132,"90":0.01698,"91":0.01698,"92":0.03396,"93":0.01698,"94":0.03396,"95":0.03396,"96":0.05943,"97":0.05943,"98":0.04811,"99":0.09056,"100":0.22357,"101":0.8207,"102":11.32283,"103":1.06691,"104":0.02547,"105":0.00849,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 40 41 42 43 44 45 46 48 50 51 52 54 58 60 61 67 68 71 73 106"},F:{"28":0.00566,"69":0.00566,"79":0.00849,"80":0.00566,"82":0.01132,"84":0.01132,"85":0.02547,"86":0.0566,"87":0.63109,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 78 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.05094,"13":0.01981,"14":0.01415,"15":0.01415,"16":0.02264,"17":0.00849,"18":0.07924,"84":0.01132,"85":0.00849,"89":0.01415,"90":0.01415,"92":0.0283,"95":0.00283,"96":0.00849,"97":0.00849,"98":0.01132,"99":0.02264,"100":0.02547,"101":0.24621,"102":1.31878,"103":0.24055,_:"79 80 81 83 86 87 88 91 93 94"},E:{"4":0,"13":0.01415,"14":0.03396,"15":0.00849,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.02547,"11.1":0.00849,"12.1":0.00566,"13.1":0.04528,"14.1":0.0849,"15.1":0.0283,"15.2-15.3":0.01981,"15.4":0.05943,"15.5":0.13301},G:{"8":0.00134,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00089,"5.0-5.1":0.00223,"6.0-6.1":0,"7.0-7.1":0.01603,"8.1-8.4":0.00178,"9.0-9.2":0,"9.3":0.02137,"10.0-10.2":0.00312,"10.3":0.03562,"11.0-11.2":0.00623,"11.3-11.4":0.0098,"12.0-12.1":0.02449,"12.2-12.5":0.45461,"13.0-13.1":0.04408,"13.2":0.00801,"13.3":0.05699,"13.4-13.7":0.08104,"14.0-14.4":0.42923,"14.5-14.8":0.42612,"15.0-15.1":0.32549,"15.2-15.3":0.42211,"15.4":0.77164,"15.5":1.26543,"16.0":0.00846},P:{"4":0.115,"5.0-5.4":0.01045,"6.2-6.4":0.0107,"7.2-7.4":0.09409,"8.2":0.02141,"9.2":0.09409,"10.1":0.07086,"11.1-11.2":0.03136,"12.0":0.02105,"13.0":0.02091,"14.0":0.12546,"15.0":0.08364,"16.0":0.23001,"17.0":0.70047},I:{"0":0,"3":0,"4":0.00076,"2.1":0,"2.2":0,"2.3":0.00025,"4.1":0.00152,"4.2-4.3":0.00228,"4.4":0,"4.4.3-4.4.4":0.04537},A:{"8":0.00955,"10":0.00318,"11":0.06368,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0.00717},O:{"0":0.83877},H:{"0":16.37738},L:{"0":53.52009},S:{"2.5":0.19356},R:{_:"0"},M:{"0":0.10754}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/US.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/US.js index 9dc9b23cd96796..bfde9b19e46dcc 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/US.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/US.js @@ -1 +1 @@ -module.exports={C:{"2":0.00478,"3":0.00478,"4":0.03347,"11":0.00956,"38":0.00478,"43":0.00478,"44":0.01912,"45":0.00478,"47":0.00478,"48":0.00478,"52":0.03347,"54":0.00956,"55":0.00956,"59":0.00478,"68":0.00478,"78":0.10996,"79":0.00478,"80":0.00478,"81":0.00478,"82":0.00956,"83":0.00478,"84":0.00478,"85":0.00478,"86":0.00956,"87":0.00956,"88":0.01434,"89":0.01434,"90":0.00956,"91":0.09084,"92":0.00478,"93":0.01434,"94":0.0765,"95":0.06215,"96":0.92751,"97":1.37693,_:"5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 49 50 51 53 56 57 58 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 98 99 3.5 3.6"},D:{"35":0.01912,"38":0.00478,"40":0.02391,"43":0.00956,"46":0.00478,"47":0.00478,"48":0.05737,"49":0.05737,"50":0.00478,"52":0.00478,"56":0.08606,"58":0.00478,"59":0.01434,"60":0.05737,"63":0.00956,"64":0.04781,"65":0.01434,"66":0.04781,"67":0.01912,"68":0.00956,"69":0.01434,"70":0.05259,"71":0.00478,"72":0.3012,"73":0.00478,"74":0.02391,"75":0.02391,"76":0.22949,"77":0.01434,"78":0.05259,"79":0.42551,"80":0.08606,"81":0.06693,"83":0.31555,"84":0.11474,"85":0.09084,"86":0.07172,"87":0.14343,"88":0.05259,"89":0.08128,"90":0.08606,"91":0.20558,"92":0.15299,"93":0.34423,"94":0.4016,"95":0.12431,"96":1.30999,"97":8.49106,"98":13.86012,"99":0.01912,"100":0.05259,"101":0.01912,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 41 42 44 45 51 53 54 55 57 61 62"},F:{"80":0.00478,"82":0.10518,"83":0.36814,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00956,"15":0.03347,"16":0.00956,"17":0.00956,"18":0.26774,"85":0.00956,"86":0.00478,"87":0.02869,"89":0.00478,"90":0.00478,"91":0.00478,"92":0.00956,"93":0.00478,"94":0.00956,"95":0.06215,"96":0.07172,"97":1.29087,"98":4.14991,_:"13 14 79 80 81 83 84 88"},E:{"4":0,"8":0.00478,"9":0.00956,"12":0.00956,"13":0.0765,"14":0.41595,"15":0.26774,_:"0 5 6 7 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.05259,"10.1":0.02869,"11.1":0.06215,"12.1":0.13387,"13.1":1.64945,"14.1":1.67813,"15.1":0.7554,"15.2-15.3":1.92196,"15.4":0.02391},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.0084,"7.0-7.1":0.0084,"8.1-8.4":0.0084,"9.0-9.2":0.0112,"9.3":0.08116,"10.0-10.2":0.0112,"10.3":0.09796,"11.0-11.2":0.03918,"11.3-11.4":0.04758,"12.0-12.1":0.05318,"12.2-12.5":0.54296,"13.0-13.1":0.04758,"13.2":0.01959,"13.3":0.10915,"13.4-13.7":0.34425,"14.0-14.4":1.1391,"14.5-14.8":5.14976,"15.0-15.1":3.85392,"15.2-15.3":16.3225,"15.4":0.07837},P:{"4":0.03251,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.02167,"12.0":0.01084,"13.0":0.04334,"14.0":0.07585,"15.0":0.06501,"16.0":1.74445},I:{"0":0,"3":0,"4":0.01305,"2.1":0,"2.2":0.00703,"2.3":0.001,"4.1":0.00201,"4.2-4.3":0.0261,"4.4":0,"4.4.3-4.4.4":0.02911},A:{"7":0.0049,"8":0.01469,"9":0.07836,"11":0.70526,_:"6 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.4384},Q:{"10.4":0.00522},O:{"0":0.11482},H:{"0":0.20258},L:{"0":21.66147},S:{"2.5":0.00522}}; +module.exports={C:{"4":0.03562,"11":0.04897,"38":0.00445,"44":0.01336,"45":0.00445,"48":0.00445,"52":0.04452,"54":0.02226,"55":0.00445,"56":0.0089,"59":0.00445,"78":0.07123,"79":0.00445,"80":0.00445,"81":0.00445,"82":0.00445,"83":0.00445,"84":0.00445,"86":0.00445,"87":0.00445,"88":0.0089,"89":0.0089,"90":0.00445,"91":0.10685,"93":0.0089,"94":0.05342,"95":0.0089,"96":0.0089,"97":0.01336,"98":0.01781,"99":0.03116,"100":0.31164,"101":1.97669,"102":0.04007,_:"2 3 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 46 47 49 50 51 53 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 85 92 103 104 3.5 3.6"},D:{"35":0.01336,"38":0.00445,"40":0.01781,"43":0.00445,"47":0.00445,"48":0.04007,"49":0.04897,"52":0.0089,"56":0.09349,"58":0.0089,"59":0.00445,"60":0.0089,"61":0.03562,"62":0.0089,"63":0.0089,"64":0.00445,"65":0.01336,"66":0.06233,"67":0.01336,"68":0.0089,"69":0.01336,"70":0.0089,"72":0.0089,"73":0.00445,"74":0.02226,"75":0.01781,"76":0.25822,"77":0.0089,"78":0.04452,"79":0.43184,"80":0.06233,"81":0.06678,"83":0.35171,"84":0.05342,"85":0.08904,"86":0.06233,"87":2.02121,"88":0.01781,"89":0.08014,"90":0.03562,"91":0.07568,"92":0.04452,"93":0.1024,"94":0.06233,"95":0.04007,"96":0.13801,"97":0.14246,"98":0.27157,"99":0.31609,"100":0.71677,"101":2.29723,"102":16.94876,"103":1.13526,"104":0.02671,"105":0.04007,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 41 42 44 45 46 50 51 53 54 55 57 71 106"},F:{"85":0.01336,"86":0.17808,"87":0.35616,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0089,"15":0.00445,"17":0.00445,"18":0.01781,"85":0.0089,"87":0.01781,"92":0.00445,"95":0.0089,"96":0.0089,"97":0.0089,"98":0.01336,"99":0.03116,"100":0.06678,"101":0.73903,"102":4.31399,"103":0.73903,_:"13 14 16 79 80 81 83 84 86 88 89 90 91 93 94"},E:{"4":0,"8":0.00445,"9":0.0089,"12":0.0089,"13":0.05788,"14":0.25376,"15":0.08459,_:"0 5 6 7 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.04897,"10.1":0.01781,"11.1":0.04897,"12.1":0.1024,"13.1":0.74348,"14.1":0.80136,"15.1":0.15137,"15.2-15.3":0.15137,"15.4":0.98389,"15.5":3.03626,"16.0":0.0089},G:{"8":0,"3.2":0.00584,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00292,"7.0-7.1":0.00875,"8.1-8.4":0.00584,"9.0-9.2":0.01167,"9.3":0.07877,"10.0-10.2":0.00584,"10.3":0.08753,"11.0-11.2":0.02918,"11.3-11.4":0.04085,"12.0-12.1":0.03209,"12.2-12.5":0.46681,"13.0-13.1":0.02918,"13.2":0.01751,"13.3":0.07586,"13.4-13.7":0.22757,"14.0-14.4":0.74981,"14.5-14.8":2.18816,"15.0-15.1":0.5981,"15.2-15.3":1.29831,"15.4":4.05246,"15.5":19.04279,"16.0":0.03793},P:{"4":0.0428,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 12.0","11.1-11.2":0.0214,"13.0":0.0321,"14.0":0.0428,"15.0":0.0321,"16.0":0.1819,"17.0":1.74405},I:{"0":0,"3":0,"4":0.0111,"2.1":0,"2.2":0.00555,"2.3":0,"4.1":0.00222,"4.2-4.3":0.02774,"4.4":0,"4.4.3-4.4.4":0.03107},A:{"7":0.00464,"8":0.01393,"9":0.06036,"11":0.24607,_:"6 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.01664},O:{"0":0.11096},H:{"0":0.25737},L:{"0":23.91659},S:{"2.5":0.00555},R:{_:"0"},M:{"0":0.47713}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UY.js index 8d8a06cfcecacf..03fb0c7793e362 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UY.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UY.js @@ -1 +1 @@ -module.exports={C:{"45":0.00459,"52":0.08723,"55":0.00918,"57":0.00918,"61":0.00918,"66":0.01377,"68":0.00918,"73":0.02755,"78":0.03214,"81":0.00459,"83":0.00918,"84":0.01377,"85":0.01836,"86":0.01377,"88":0.02296,"89":0.00459,"90":0.03214,"91":0.09641,"92":0.00918,"93":0.00918,"94":0.00918,"95":0.03673,"96":0.72997,"97":1.26712,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 53 54 56 58 59 60 62 63 64 65 67 69 70 71 72 74 75 76 77 79 80 82 87 98 99 3.5 3.6"},D:{"22":0.00918,"36":0.04132,"38":0.04591,"43":0.00918,"47":0.01836,"48":0.00459,"49":0.12396,"52":0.00459,"53":0.00918,"55":0.00459,"58":0.00459,"62":0.04132,"63":0.00459,"65":0.01377,"66":0.01377,"69":0.01377,"70":0.26628,"71":0.01377,"72":0.00459,"73":0.01377,"74":0.01836,"75":0.00918,"76":0.01377,"77":0.00459,"78":0.00918,"79":0.0505,"80":0.14232,"81":0.03214,"83":0.04132,"84":0.01377,"85":0.02296,"86":0.93656,"87":0.07346,"88":0.02755,"89":0.05509,"90":0.05968,"91":0.09182,"92":0.07346,"93":0.09641,"94":0.08264,"95":0.08264,"96":0.53715,"97":9.14068,"98":22.12403,"99":0.00459,"100":0.00918,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 37 39 40 41 42 44 45 46 50 51 54 56 57 59 60 61 64 67 68 101"},F:{"82":0.94116,"83":2.31386,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00459,"14":0.00459,"17":0.00459,"18":0.00918,"92":0.02296,"95":0.01836,"96":0.04132,"97":0.50501,"98":1.8364,_:"13 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 94"},E:{"4":0,"13":0.02296,"14":0.04591,"15":0.04591,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 15.4","5.1":0.01377,"11.1":0.00918,"12.1":0.1515,"13.1":0.12396,"14.1":0.27087,"15.1":0.14691,"15.2-15.3":0.23414},G:{"8":0,"3.2":0.00138,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.02561,"6.0-6.1":0,"7.0-7.1":0.00831,"8.1-8.4":0,"9.0-9.2":0.00138,"9.3":0.03185,"10.0-10.2":0.00069,"10.3":0.03738,"11.0-11.2":0.00346,"11.3-11.4":0.00692,"12.0-12.1":0.01246,"12.2-12.5":0.39392,"13.0-13.1":0.02008,"13.2":0.00138,"13.3":0.03185,"13.4-13.7":0.11492,"14.0-14.4":0.34961,"14.5-14.8":1.29321,"15.0-15.1":1.11252,"15.2-15.3":3.43863,"15.4":0.03254},P:{"4":0.05252,"5.0-5.4":0.0102,"6.2-6.4":0.01085,"7.2-7.4":0.19957,"8.2":0.02073,"9.2":0.02101,"10.1":0.11002,"11.1-11.2":0.08403,"12.0":0.06302,"13.0":0.09453,"14.0":0.08403,"15.0":0.10504,"16.0":1.10287},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00412,"4.2-4.3":0.00206,"4.4":0,"4.4.3-4.4.4":0.03709},A:{"9":0.00918,"11":0.1515,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.26504},Q:{"10.4":0},O:{"0":0.01623},H:{"0":0.10754},L:{"0":43.02314},S:{"2.5":0}}; +module.exports={C:{"40":0.01386,"43":0.02771,"45":0.00462,"50":0.00462,"52":0.08314,"57":0.01386,"61":0.02771,"66":0.0231,"68":0.01848,"73":0.04157,"78":0.0231,"83":0.01848,"84":0.00462,"86":0.01386,"88":0.0231,"89":0.00924,"90":0.04619,"91":0.10624,"92":0.00924,"94":0.00924,"95":0.00924,"96":0.0231,"97":0.01386,"98":0.01386,"99":0.05543,"100":0.20324,"101":1.63051,"102":0.06929,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 44 46 47 48 49 51 53 54 55 56 58 59 60 62 63 64 65 67 69 70 71 72 74 75 76 77 79 80 81 82 85 87 93 103 104 3.5 3.6"},D:{"22":0.00924,"36":0.04157,"38":0.21247,"43":0.00462,"47":0.01848,"48":0.01386,"49":0.11086,"53":0.00462,"55":0.00924,"62":0.0231,"63":0.00462,"65":0.01386,"66":0.00462,"68":0.00924,"69":0.00924,"70":0.01386,"71":0.01386,"72":0.00462,"73":0.01386,"74":0.01848,"75":0.00924,"76":0.00924,"77":0.01386,"78":0.00924,"79":0.06467,"80":0.13395,"81":0.03695,"83":0.01848,"84":0.03233,"85":0.03695,"86":0.85452,"87":0.05081,"88":0.06467,"89":0.03695,"90":0.04157,"91":0.10624,"92":0.097,"93":0.12933,"94":0.03695,"95":0.06005,"96":0.12009,"97":0.06929,"98":0.194,"99":0.13395,"100":0.291,"101":1.7506,"102":26.96572,"103":2.56355,"104":0.00462,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 37 39 40 41 42 44 45 46 50 51 52 54 56 57 58 59 60 61 64 67 105 106"},F:{"69":0.03233,"70":0.00924,"80":0.0231,"85":0.04157,"86":1.13166,"87":1.41803,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 71 72 73 74 75 76 77 78 79 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00462,"18":0.01848,"92":0.00924,"94":0.00462,"95":0.01386,"98":0.00924,"99":0.01386,"100":0.01848,"101":0.27252,"102":2.16169,"103":0.44342,_:"12 13 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 96 97"},E:{"4":0,"13":0.0231,"14":0.05081,"15":0.01848,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00924,"12.1":0.06005,"13.1":0.08776,"14.1":0.15243,"15.1":0.06929,"15.2-15.3":0.0231,"15.4":0.15705,"15.5":0.41571},G:{"8":0,"3.2":0.00073,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01541,"6.0-6.1":0,"7.0-7.1":0.011,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01614,"10.0-10.2":0,"10.3":0.02934,"11.0-11.2":0.00514,"11.3-11.4":0.0044,"12.0-12.1":0.00734,"12.2-12.5":0.31545,"13.0-13.1":0.00367,"13.2":0.00147,"13.3":0.01541,"13.4-13.7":0.13572,"14.0-14.4":0.23549,"14.5-14.8":0.58982,"15.0-15.1":0.14232,"15.2-15.3":0.23989,"15.4":0.96542,"15.5":4.55713,"16.0":0.03228},P:{"4":0.01033,"5.0-5.4":0.01045,"6.2-6.4":0.0107,"7.2-7.4":0.21689,"8.2":0.02141,"9.2":0.03098,"10.1":0.07086,"11.1-11.2":0.08262,"12.0":0.04131,"13.0":0.06197,"14.0":0.06197,"15.0":0.09295,"16.0":0.20656,"17.0":1.11543},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00743,"4.2-4.3":0.00198,"4.4":0,"4.4.3-4.4.4":0.02825},A:{"11":0.11086,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.03767},H:{"0":0.21396},L:{"0":45.64875},S:{"2.5":0},R:{_:"0"},M:{"0":0.22062}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UZ.js index 587e47c3603fa6..8baba1935df0c2 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UZ.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UZ.js @@ -1 +1 @@ -module.exports={C:{"30":0.00613,"52":0.08891,"55":0.02759,"57":0.00307,"72":0.00307,"73":0.00613,"78":0.0092,"80":0.00307,"81":0.00613,"84":0.00307,"89":0.00307,"91":0.03986,"92":0.00307,"93":0.00613,"94":0.0092,"95":0.0092,"96":0.325,"97":0.54575,"98":0.0092,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 56 58 59 60 61 62 63 64 65 66 67 68 69 70 71 74 75 76 77 79 82 83 85 86 87 88 90 99 3.5 3.6"},D:{"34":0.00307,"35":0.00307,"38":0.00613,"49":0.10424,"56":0.01533,"63":0.00307,"64":0.00613,"66":0.03373,"67":0.0092,"68":0.00613,"70":0.00613,"71":0.0184,"72":0.01533,"73":0.0184,"74":0.02453,"75":0.0092,"76":0.00307,"78":0.00613,"79":0.04906,"80":0.04292,"81":0.02146,"83":0.03679,"84":0.05212,"85":0.05519,"86":0.12571,"87":0.05519,"88":0.02453,"89":0.07665,"90":0.02453,"91":0.03679,"92":0.03679,"93":0.08278,"94":0.05825,"95":0.03679,"96":0.42617,"97":5.6813,"98":13.86445,"99":0.0092,"100":0.01533,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 61 62 65 69 77 101"},F:{"28":0.00307,"36":0.00307,"42":0.00307,"51":0.00613,"53":0.03986,"54":0.00613,"55":0.01226,"56":0.00613,"57":0.02453,"58":0.02146,"60":0.01533,"62":0.01533,"63":0.00613,"64":0.03986,"65":0.0092,"66":0.01226,"67":0.01226,"68":0.0184,"70":0.0092,"71":0.0092,"72":0.0184,"73":0.0092,"74":0.00613,"75":0.0092,"76":0.0092,"77":0.04292,"78":0.02146,"79":0.06745,"80":0.05212,"81":0.0184,"82":0.04599,"83":0.03986,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 52 69 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01226,"15":0.00613,"16":0.00613,"17":0.00307,"18":0.04906,"83":0.00613,"84":0.03373,"85":0.00613,"86":0.00307,"87":0.00307,"88":0.00613,"89":0.01226,"90":0.0092,"91":0.0092,"92":0.0092,"93":0.00613,"94":0.0092,"95":0.01226,"96":0.02759,"97":0.25448,"98":0.84008,_:"13 14 79 80 81"},E:{"4":0,"13":0.01226,"14":0.03066,"15":0.0184,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 15.4","5.1":0.99952,"11.1":0.00307,"12.1":0.00613,"13.1":0.05519,"14.1":0.08278,"15.1":0.05825,"15.2-15.3":0.08278},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00093,"5.0-5.1":0.00232,"6.0-6.1":0.00139,"7.0-7.1":0.0251,"8.1-8.4":0,"9.0-9.2":0.00604,"9.3":0.03346,"10.0-10.2":0.00372,"10.3":0.07716,"11.0-11.2":0.01534,"11.3-11.4":0.01441,"12.0-12.1":0.01069,"12.2-12.5":0.46154,"13.0-13.1":0.02649,"13.2":0.0093,"13.3":0.02882,"13.4-13.7":0.0911,"14.0-14.4":0.38392,"14.5-14.8":0.79386,"15.0-15.1":0.80409,"15.2-15.3":1.83824,"15.4":0.0172},P:{"4":0.90873,"5.0-5.4":0.04039,"6.2-6.4":0.13126,"7.2-7.4":0.55534,"8.2":0.02019,"9.2":0.12116,"10.1":0.05049,"11.1-11.2":0.3332,"12.0":0.10097,"13.0":0.38369,"14.0":0.47456,"15.0":0.36349,"16.0":2.53436},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00155,"4.2-4.3":0.00492,"4.4":0,"4.4.3-4.4.4":0.0282},A:{"9":0.00613,"11":0.18396,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.0624},Q:{"10.4":0},O:{"0":3.31397},H:{"0":0.46602},L:{"0":48.80021},S:{"2.5":0}}; +module.exports={C:{"48":0.00658,"52":0.03619,"66":0.00658,"68":0.00987,"78":0.02303,"82":0.01316,"89":0.00658,"90":0.00329,"91":0.04935,"92":0.00658,"93":0.00329,"94":0.00658,"95":0.00658,"96":0.00658,"97":0.00658,"98":0.01645,"99":0.01316,"100":0.09541,"101":0.82579,"102":0.03948,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 69 70 71 72 73 74 75 76 77 79 80 81 83 84 85 86 87 88 103 104 3.5 3.6"},D:{"11":0.00987,"18":0.00658,"34":0.00987,"35":0.00329,"38":0.00658,"39":0.00329,"49":0.05922,"55":0.00329,"56":0.00987,"62":0.00658,"63":0.00329,"64":0.00987,"65":0.00658,"66":0.03619,"67":0.00329,"70":0.00329,"71":0.00987,"72":0.00658,"74":0.10857,"76":0.00987,"78":0.00329,"79":0.03948,"80":0.02961,"81":0.02632,"83":0.05264,"84":0.03948,"85":0.06909,"86":0.15792,"87":0.04277,"88":0.0329,"89":0.09212,"90":0.04277,"91":0.03619,"92":0.03948,"93":0.0329,"94":0.02961,"95":0.02303,"96":0.08225,"97":0.05593,"98":0.15792,"99":0.07896,"100":0.25004,"101":1.65816,"102":17.52583,"103":1.67461,"104":0.01316,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 36 37 40 41 42 43 44 45 46 47 48 50 51 52 53 54 57 58 59 60 61 68 69 73 75 77 105 106"},F:{"28":0.05264,"34":0.00658,"36":0.00329,"51":0.00329,"53":0.0987,"54":0.00329,"55":0.00658,"56":0.00658,"57":0.01645,"58":0.00987,"60":0.01645,"62":0.01645,"63":0.01645,"64":0.02961,"65":0.00658,"66":0.00658,"67":0.00658,"68":0.01316,"70":0.00658,"71":0.00658,"72":0.01316,"73":0.01645,"74":0.00987,"75":0.01316,"76":0.00658,"77":0.02303,"78":0.01316,"79":0.02303,"80":0.02303,"81":0.01316,"82":0.02303,"83":0.01316,"84":0.02632,"85":0.0329,"86":0.05264,"87":0.0987,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 52 69 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.01316},B:{"12":0.00987,"15":0.00658,"16":0.00658,"17":0.00658,"18":0.0658,"84":0.02303,"85":0.01316,"86":0.01316,"87":0.01316,"88":0.00987,"89":0.01645,"90":0.01316,"91":0.01645,"92":0.01974,"93":0.00658,"94":0.00987,"95":0.00987,"96":0.01645,"97":0.01316,"98":0.01645,"99":0.00987,"100":0.01316,"101":0.18095,"102":0.96068,"103":0.1645,_:"13 14 79 80 81 83"},E:{"4":0,"13":0.02303,"14":0.03948,"15":0.02303,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 12.1 16.0","5.1":0.82579,"11.1":0.00658,"13.1":0.03619,"14.1":0.05264,"15.1":0.03619,"15.2-15.3":0.0329,"15.4":0.14147,"15.5":0.18753},G:{"8":0.00062,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00187,"6.0-6.1":0.00437,"7.0-7.1":0.02062,"8.1-8.4":0,"9.0-9.2":0.00562,"9.3":0.04312,"10.0-10.2":0.00312,"10.3":0.07561,"11.0-11.2":0.02812,"11.3-11.4":0.01625,"12.0-12.1":0.0075,"12.2-12.5":0.48679,"13.0-13.1":0.05062,"13.2":0.025,"13.3":0.05062,"13.4-13.7":0.1331,"14.0-14.4":0.36494,"14.5-14.8":0.53366,"15.0-15.1":0.25246,"15.2-15.3":0.4543,"15.4":1.05482,"15.5":2.57268,"16.0":0.04687},P:{"4":0.7005,"5.0-5.4":0.03046,"6.2-6.4":0.10152,"7.2-7.4":0.60913,"8.2":0.02141,"9.2":0.07106,"10.1":0.01015,"11.1-11.2":0.20304,"12.0":0.07106,"13.0":0.22335,"14.0":0.28426,"15.0":0.19289,"16.0":0.76141,"17.0":2.12179},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00563,"4.2-4.3":0.00985,"4.4":0,"4.4.3-4.4.4":0.07174},A:{"8":0.00733,"9":0.01833,"11":0.22363,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":4.00527},H:{"0":0.30488},L:{"0":49.19871},S:{"2.5":0},R:{_:"0"},M:{"0":0.08722}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VA.js index e351753e2d109c..4d526e33bcb99c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VA.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VA.js @@ -1 +1 @@ -module.exports={C:{"39":0.03884,"70":0.01942,"84":0.01942,"90":0.93216,"91":0.21362,"93":0.04855,"95":0.03884,"96":4.90355,"97":6.42802,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 80 81 82 83 85 86 87 88 89 92 94 98 99 3.5 3.6"},D:{"67":0.43695,"92":0.01942,"93":0.7768,"95":0.17478,"96":0.14565,"97":18.49755,"98":42.15111,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 94 99 100 101"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.0971,"18":3.05865,"97":3.1072,"98":11.01114,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96"},E:{"4":0,"14":0.18449,"15":0.16507,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.33014,"12.1":0.22333,"13.1":0.12623,"14.1":0.17478,"15.1":0.24275,"15.2-15.3":1.2623},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.0042,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0.0042,"12.2-12.5":0.57132,"13.0-13.1":0,"13.2":0,"13.3":0.0042,"13.4-13.7":0,"14.0-14.4":0.0169,"14.5-14.8":0.08042,"15.0-15.1":0.05501,"15.2-15.3":0.39359,"15.4":0.0042},P:{"4":0.35753,"5.0-5.4":0.08172,"6.2-6.4":0.04086,"7.2-7.4":0.2043,"8.2":0.04086,"9.2":0.23495,"10.1":0.07459,"11.1-11.2":0.4086,"12.0":0.07151,"13.0":0.09194,"14.0":0.30645,"15.0":0.26559,"16.0":0.4397},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.78651,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.10602,_:"11"},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.00827},L:{"0":1.43435},S:{"2.5":0}}; +module.exports={C:{"39":0.03875,"52":0.01938,"70":0.03875,"78":0.05813,"91":0.17438,"92":0.01938,"100":0.70722,"101":8.2348,"102":0.17438,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 93 94 95 96 97 98 99 103 104 3.5 3.6"},D:{"67":0.42627,"75":0.1647,"85":0.01938,"88":0.01938,"93":1.20131,"94":0.00969,"95":0.61034,"97":0.01938,"101":2.94515,"102":55.3863,"103":3.85582,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 76 77 78 79 80 81 83 84 86 87 89 90 91 92 96 98 99 100 104 105 106"},F:{"86":0.01938,"87":0.03875,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"17":0.02906,"18":1.98604,"101":1.44351,"102":13.23381,"103":1.94729,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100"},E:{"4":0,"15":0.09688,_:"0 5 6 7 8 9 10 11 12 13 14 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.27126,"12.1":0.01938,"13.1":0.09688,"14.1":0.35846,"15.1":0.12594,"15.2-15.3":0.06782,"15.4":0.29064,"15.5":1.87947},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.45143,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0.01334,"14.5-14.8":0.01334,"15.0-15.1":0,"15.2-15.3":0.02215,"15.4":0.15051,"15.5":0.50894,"16.0":0},P:{"4":0.28506,"5.0-5.4":0.17307,"6.2-6.4":0.04072,"7.2-7.4":0.29524,"8.2":0.03054,"9.2":0.30543,"10.1":0.01018,"11.1-11.2":0.51922,"12.0":0.02036,"13.0":0.20362,"14.0":0.20362,"15.0":0.15271,"16.0":0.51922,"17.0":0.19469},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.29064,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0.01418},L:{"0":1.64434},S:{"2.5":0},R:{_:"0"},M:{"0":0}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VC.js index 11f3b90868a090..be6b78fee37db7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VC.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VC.js @@ -1 +1 @@ -module.exports={C:{"52":0.00783,"78":0.00783,"80":0.00391,"91":0.00391,"94":0.01957,"95":0.02348,"96":0.91956,"97":0.80217,"98":0.03522,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 81 82 83 84 85 86 87 88 89 90 92 93 99 3.5 3.6"},D:{"23":0.00783,"48":0.01565,"49":0.01565,"61":0.02739,"68":0.00391,"69":0.01957,"70":0.00783,"74":0.00391,"75":0.00783,"76":0.38347,"78":0.01957,"79":0.01957,"80":0.00783,"83":0.03522,"86":0.00783,"87":0.24652,"88":0.01957,"89":0.00783,"90":0.03522,"91":0.00391,"92":0.01957,"93":0.08217,"94":0.08609,"95":0.05478,"96":0.61825,"97":6.60906,"98":14.59158,"99":0.04696,"100":0.00391,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 50 51 52 53 54 55 56 57 58 59 60 62 63 64 65 66 67 71 72 73 77 81 84 85 101"},F:{"28":0.02348,"82":0.01565,"83":0.22695,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"89":0.00391,"94":0.00391,"96":0.06261,"97":0.82173,"98":3.95213,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 90 91 92 93 95"},E:{"4":0,"8":0.07826,"13":0.01174,"14":0.21913,"15":0.08609,_:"0 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1 11.1 15.4","9.1":0.01565,"12.1":0.02739,"13.1":0.19565,"14.1":0.23869,"15.1":0.27,"15.2-15.3":1.45172},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00753,"7.0-7.1":0.04216,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03011,"10.0-10.2":0,"10.3":0.87329,"11.0-11.2":0.03312,"11.3-11.4":0.00301,"12.0-12.1":0.00753,"12.2-12.5":0.91545,"13.0-13.1":0.00151,"13.2":0,"13.3":0.00452,"13.4-13.7":0.14605,"14.0-14.4":0.23639,"14.5-14.8":3.64372,"15.0-15.1":3.21009,"15.2-15.3":5.88265,"15.4":0.01355},P:{"4":0.14291,"5.0-5.4":0.01121,"6.2-6.4":0.01012,"7.2-7.4":0.21986,"8.2":0.03083,"9.2":0.04397,"10.1":0.03037,"11.1-11.2":0.14291,"12.0":0.01099,"13.0":0.09894,"14.0":0.03298,"15.0":0.06596,"16.0":3.44082},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.02164,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.05139},A:{"10":0.0313,"11":0.03522,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.09129},Q:{"10.4":0},O:{"0":0.03043},H:{"0":0.08067},L:{"0":37.69295},S:{"2.5":0}}; +module.exports={C:{"89":0.00365,"98":0.0073,"99":0.0146,"100":0.21535,"101":1.0585,"102":0.01095,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 91 92 93 94 95 96 97 103 104 3.5 3.6"},D:{"29":0.0073,"49":0.01095,"61":0.0073,"67":0.00365,"76":0.0365,"79":0.0073,"81":0.01825,"83":0.0365,"84":0.00365,"85":0.00365,"87":0.0146,"88":0.0073,"90":0.01095,"91":0.01095,"92":0.06935,"93":0.09855,"94":0.00365,"95":0.01825,"96":0.02555,"97":0.01825,"98":0.0438,"99":0.0949,"100":0.58765,"101":1.72645,"102":15.28255,"103":1.30305,"104":0.0146,"105":0.00365,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 62 63 64 65 66 68 69 70 71 72 73 74 75 77 78 80 86 89 106"},F:{"28":0.01095,"70":0.0073,"85":0.00365,"86":0.5037,"87":0.70445,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00365,"17":0.00365,"18":0.0146,"92":0.00365,"94":0.00365,"96":0.00365,"98":0.0073,"99":0.01825,"100":0.2117,"101":1.0585,"102":4.6939,"103":1.77025,_:"13 14 15 16 79 80 81 83 84 85 86 87 88 89 90 91 93 95 97"},E:{"4":0,"13":0.01825,"14":0.1533,"15":0.01095,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 16.0","12.1":0.0146,"13.1":0.09855,"14.1":0.1168,"15.1":0.01095,"15.2-15.3":0.0511,"15.4":0.35405,"15.5":0.6862},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00377,"6.0-6.1":0,"7.0-7.1":0.18904,"8.1-8.4":0.06402,"9.0-9.2":0,"9.3":0.12276,"10.0-10.2":0,"10.3":0.10695,"11.0-11.2":0.00226,"11.3-11.4":0.00301,"12.0-12.1":0.00377,"12.2-12.5":1.11465,"13.0-13.1":0.00979,"13.2":0.00753,"13.3":0.00904,"13.4-13.7":0.05347,"14.0-14.4":0.10243,"14.5-14.8":0.37958,"15.0-15.1":0.48201,"15.2-15.3":0.28996,"15.4":1.03933,"15.5":3.49156,"16.0":0.01054},P:{"4":0.35934,"5.0-5.4":0.01056,"6.2-6.4":0.03099,"7.2-7.4":0.12352,"8.2":0.01015,"9.2":0.03369,"10.1":0.01018,"11.1-11.2":0.04492,"12.0":0.02069,"13.0":0.31442,"14.0":0.05615,"15.0":0.06738,"16.0":0.52778,"17.0":3.27899},I:{"0":0,"3":0,"4":0.00483,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01448,"4.2-4.3":0.00241,"4.4":0,"4.4.3-4.4.4":0.09892},A:{"10":0.01095,"11":0.0292,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.11428},H:{"0":0.54097},L:{"0":54.36596},S:{"2.5":0},R:{_:"0"},M:{"0":0.52062}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VE.js index bb70ceb134aa01..b439180bd40a99 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VE.js @@ -1 +1 @@ -module.exports={C:{"23":0.01095,"27":0.21353,"28":0.01095,"40":0.00548,"43":0.01095,"45":0.00548,"47":0.01643,"48":0.00548,"52":0.44895,"56":0.01095,"60":0.0219,"62":0.01095,"64":0.01095,"65":0.01643,"66":0.01095,"67":0.01095,"68":0.02738,"69":0.01643,"70":0.01095,"71":0.01095,"72":0.02738,"78":0.07665,"79":0.01095,"80":0.01095,"81":0.00548,"83":0.00548,"84":0.01095,"87":0.00548,"88":0.0219,"89":0.0219,"90":0.01643,"91":0.10403,"92":0.01643,"93":0.01643,"94":0.02738,"95":0.03833,"96":1.23188,"97":2.04218,"98":0.0219,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 29 30 31 32 33 34 35 36 37 38 39 41 42 44 46 49 50 51 53 54 55 57 58 59 61 63 73 74 75 76 77 82 85 86 99 3.5 3.6"},D:{"34":0.00548,"42":0.00548,"47":0.01643,"49":0.5037,"51":0.00548,"53":0.00548,"55":0.01095,"58":0.01643,"63":0.03285,"64":0.01095,"65":0.01643,"66":0.01095,"67":0.06023,"68":0.01095,"69":0.03833,"70":0.02738,"71":0.03285,"72":0.03285,"73":0.01643,"74":0.02738,"75":0.05475,"76":0.04928,"77":0.03833,"78":0.01643,"79":0.0657,"80":0.0438,"81":0.0438,"83":0.06023,"84":0.04928,"85":0.06023,"86":0.08213,"87":0.14235,"88":0.1095,"89":0.09308,"90":0.08213,"91":0.14235,"92":0.1533,"93":0.13688,"94":0.1314,"95":0.10403,"96":1.17713,"97":9.89333,"98":23.2359,"99":0.01095,"100":0.01643,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 43 44 45 46 48 50 52 54 56 57 59 60 61 62 101"},F:{"53":0.00548,"57":0.01643,"68":0.00548,"78":0.01095,"82":0.41063,"83":1.65345,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 56 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00548,"18":0.01095,"84":0.00548,"85":0.01095,"92":0.01643,"95":0.00548,"96":0.01643,"97":0.36135,"98":1.37423,_:"13 14 15 16 17 79 80 81 83 86 87 88 89 90 91 93 94"},E:{"4":0,"13":0.01095,"14":0.03285,"15":0.01643,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 15.4","5.1":0.0219,"11.1":0.00548,"12.1":0.01095,"13.1":0.03833,"14.1":0.07118,"15.1":0.03833,"15.2-15.3":0.07665},G:{"8":0.00186,"3.2":0.00041,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00557,"6.0-6.1":0.00392,"7.0-7.1":0.01383,"8.1-8.4":0.00186,"9.0-9.2":0.00083,"9.3":0.06131,"10.0-10.2":0.00206,"10.3":0.06007,"11.0-11.2":0.00537,"11.3-11.4":0.00495,"12.0-12.1":0.00826,"12.2-12.5":0.21427,"13.0-13.1":0.01177,"13.2":0.00351,"13.3":0.02787,"13.4-13.7":0.03736,"14.0-14.4":0.13356,"14.5-14.8":0.37012,"15.0-15.1":0.30984,"15.2-15.3":0.77945,"15.4":0.00537},P:{"4":0.12107,"5.0-5.4":0.04039,"6.2-6.4":0.06112,"7.2-7.4":0.11007,"8.2":0.02019,"9.2":0.11205,"10.1":0.05049,"11.1-11.2":0.03302,"12.0":0.01101,"13.0":0.03302,"14.0":0.06604,"15.0":0.08805,"16.0":0.75947},I:{"0":0,"3":0,"4":0.00026,"2.1":0,"2.2":0,"2.3":0.0001,"4.1":0.00209,"4.2-4.3":0.00382,"4.4":0,"4.4.3-4.4.4":0.02539},A:{"9":0.00548,"11":0.1095,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.01358},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.1448},Q:{"10.4":0},O:{"0":0.04073},H:{"0":0.43268},L:{"0":42.58945},S:{"2.5":0.00453}}; +module.exports={C:{"27":0.20861,"43":0.01128,"45":0.01691,"47":0.01128,"48":0.00564,"52":0.47359,"55":0.01128,"56":0.01128,"60":0.02819,"62":0.01128,"63":0.00564,"64":0.01128,"65":0.02255,"66":0.01128,"67":0.01691,"68":0.02255,"69":0.02255,"70":0.01128,"71":0.00564,"72":0.02255,"78":0.05638,"79":0.00564,"80":0.00564,"81":0.00564,"84":0.01691,"85":0.00564,"87":0.00564,"88":0.0451,"89":0.03383,"90":0.02255,"91":0.10148,"92":0.01128,"93":0.01691,"94":0.01128,"95":0.02819,"96":0.01691,"97":0.01691,"98":0.03383,"99":0.19733,"100":0.33264,"101":2.89793,"102":0.14095,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 46 49 50 51 53 54 57 58 59 61 73 74 75 76 77 82 83 86 103 104 3.5 3.6"},D:{"46":0.00564,"47":0.01128,"49":0.40594,"51":0.02819,"53":0.00564,"56":0.01128,"58":0.01128,"63":0.01691,"64":0.00564,"65":0.01691,"66":0.00564,"67":0.01691,"68":0.01128,"69":0.02255,"70":0.02255,"71":0.01691,"72":0.01691,"73":0.01128,"74":0.02819,"75":0.05638,"76":0.06766,"77":0.02255,"78":0.01691,"79":0.06766,"80":0.03947,"81":0.03947,"83":0.05074,"84":0.06202,"85":0.0451,"86":0.09585,"87":0.09021,"88":0.10148,"89":0.07329,"90":0.08457,"91":0.1184,"92":0.10148,"93":0.09585,"94":0.06766,"95":0.05638,"96":0.30445,"97":0.38338,"98":0.27062,"99":0.26499,"100":0.61454,"101":1.58428,"102":29.06953,"103":2.92048,"104":0.01691,"105":0.01128,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 48 50 52 54 55 57 59 60 61 62 106"},F:{"20":0.01691,"36":0.00564,"53":0.00564,"57":0.01128,"78":0.01128,"79":0.01128,"82":0.01128,"84":0.02819,"85":0.10712,"86":0.58635,"87":1.32493,_:"9 11 12 15 16 17 18 19 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 56 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01128,"18":0.01128,"84":0.00564,"85":0.00564,"92":0.01128,"96":0.00564,"98":0.00564,"99":0.01128,"100":0.00564,"101":0.18042,"102":1.53917,"103":0.36083,_:"13 14 15 16 17 79 80 81 83 86 87 88 89 90 91 93 94 95 97"},E:{"4":0,"13":0.00564,"14":0.02255,"15":0.01128,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.06766,"12.1":0.00564,"13.1":0.03383,"14.1":0.05638,"15.1":0.01691,"15.2-15.3":0.01691,"15.4":0.07329,"15.5":0.13531},G:{"8":0.00076,"3.2":0.00025,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00252,"6.0-6.1":0.00126,"7.0-7.1":0.01285,"8.1-8.4":0.00328,"9.0-9.2":0.00076,"9.3":0.05392,"10.0-10.2":0.00403,"10.3":0.04636,"11.0-11.2":0.00529,"11.3-11.4":0.0058,"12.0-12.1":0.00806,"12.2-12.5":0.17588,"13.0-13.1":0.02016,"13.2":0.01033,"13.3":0.01865,"13.4-13.7":0.04989,"14.0-14.4":0.10785,"14.5-14.8":0.23082,"15.0-15.1":0.0703,"15.2-15.3":0.13405,"15.4":0.3049,"15.5":1.23547,"16.0":0.00907},P:{"4":0.07594,"5.0-5.4":0.03046,"6.2-6.4":0.10152,"7.2-7.4":0.08678,"8.2":0.02141,"9.2":0.02042,"10.1":0.01015,"11.1-11.2":0.0217,"12.0":0.02042,"13.0":0.03254,"14.0":0.03254,"15.0":0.04339,"16.0":0.17357,"17.0":0.78106},I:{"0":0,"3":0,"4":0.00044,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00523,"4.2-4.3":0.00582,"4.4":0,"4.4.3-4.4.4":0.05831},A:{"11":0.07329,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0.01309},Q:{"10.4":0},O:{"0":0.0349},H:{"0":0.40058},L:{"0":47.0404},S:{"2.5":0},R:{_:"0"},M:{"0":0.16576}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VG.js index a5c4e6d33aff35..cf915cbbf412a8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VG.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VG.js @@ -1 +1 @@ -module.exports={C:{"78":0.0074,"80":0.0074,"89":0.01481,"95":0.01481,"96":0.45164,"97":1.76215,"98":0.03702,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 81 82 83 84 85 86 87 88 90 91 92 93 94 99 3.5 3.6"},D:{"62":0.01851,"65":0.02962,"74":0.0074,"75":0.01481,"76":0.0074,"79":0.01111,"80":0.03332,"84":0.13327,"86":0.05183,"87":0.02591,"90":0.02962,"91":0.17399,"92":0.0074,"93":0.03702,"94":0.02962,"95":0.56641,"96":0.62564,"97":5.87878,"98":11.30221,"100":0.0074,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 63 64 66 67 68 69 70 71 72 73 77 78 81 83 85 88 89 99 101"},F:{"82":0.12587,"83":0.31097,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01111,"16":0.01111,"18":0.30727,"95":0.01481,"96":0.0074,"97":0.84035,"98":4.46091,_:"12 13 14 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94"},E:{"4":0,"13":0.0074,"14":0.09995,"15":0.11476,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 11.1","10.1":0.01481,"12.1":0.08885,"13.1":0.26284,"14.1":1.27719,"15.1":1.98797,"15.2-15.3":3.41695,"15.4":0.02591},G:{"8":0,"3.2":0,"4.0-4.1":0.00243,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.16541,"9.3":0.12163,"10.0-10.2":0,"10.3":0.01216,"11.0-11.2":0.0146,"11.3-11.4":0.04135,"12.0-12.1":0.0073,"12.2-12.5":0.50353,"13.0-13.1":0.01216,"13.2":0,"13.3":0.14595,"13.4-13.7":0.17514,"14.0-14.4":0.63732,"14.5-14.8":3.69258,"15.0-15.1":3.06499,"15.2-15.3":15.63874,"15.4":0.08514},P:{"4":0.05127,"5.0-5.4":0.1009,"6.2-6.4":0.18286,"7.2-7.4":0.01025,"8.2":0.02052,"9.2":0.01025,"10.1":0.01018,"11.1-11.2":0.12304,"12.0":0.02048,"13.0":0.06152,"14.0":0.27684,"15.0":0.07177,"16.0":3.08627},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.0189},A:{"11":0.32578,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.15748},Q:{"10.4":0.0063},O:{"0":0.13858},H:{"0":0.01789},L:{"0":34.70058},S:{"2.5":0}}; +module.exports={C:{"78":0.16083,"88":0.00357,"91":0.00357,"92":0.0822,"100":0.49321,"101":0.67906,"102":0.00715,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 90 93 94 95 96 97 98 99 103 104 3.5 3.6"},D:{"27":0.00357,"41":0.0143,"56":0.02144,"74":0.00357,"76":0.00715,"79":0.00357,"80":0.00357,"86":0.00715,"87":0.00715,"89":0.00715,"90":0.00715,"92":0.0143,"93":0.51108,"96":0.02144,"97":0.03574,"98":0.02859,"99":0.15368,"100":0.34668,"101":1.46534,"102":16.05441,"103":0.61115,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 75 77 78 81 83 84 85 88 91 94 95 104 105 106"},F:{"86":0.05004,"87":0.10722,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.0143,"89":0.01072,"93":0.00357,"94":0.00715,"96":0.01072,"97":0.01072,"98":0.04646,"100":0.01072,"101":0.63617,"102":3.22732,"103":0.40744,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 90 91 92 95 99"},E:{"4":0,"13":0.01787,"14":0.23588,"15":0.00357,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.01072,"10.1":0.00357,"11.1":0.11437,"12.1":0.01787,"13.1":0.32166,"14.1":1.61187,"15.1":1.20086,"15.2-15.3":0.53967,"15.4":2.21945,"15.5":2.70909},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00707,"10.0-10.2":0,"10.3":0.04241,"11.0-11.2":0.00707,"11.3-11.4":0.01414,"12.0-12.1":0.02827,"12.2-12.5":0.34282,"13.0-13.1":0,"13.2":0.00353,"13.3":0.04948,"13.4-13.7":0.06008,"14.0-14.4":0.30748,"14.5-14.8":2.2089,"15.0-15.1":0.15551,"15.2-15.3":1.50559,"15.4":4.8313,"15.5":25.53488,"16.0":0.20499},P:{"4":0.03053,"5.0-5.4":0.02174,"6.2-6.4":0.38204,"7.2-7.4":0.1832,"8.2":0.06207,"9.2":0.01025,"10.1":0.01019,"11.1-11.2":0.47835,"12.0":0.01025,"13.0":0.04071,"14.0":0.17302,"15.0":0.02036,"16.0":0.12213,"17.0":2.42228},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.00643},A:{"8":0.00357,"11":0.04289,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":25.96015},S:{"2.5":0},R:{_:"0"},M:{"0":0.25708}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VI.js index 57307867a776c4..ef6756a7e31253 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VI.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VI.js @@ -1 +1 @@ -module.exports={C:{"67":0.00494,"78":0.00988,"91":0.08395,"92":0.01975,"93":0.01975,"94":0.18764,"95":0.00494,"96":0.99748,"97":1.3777,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 98 99 3.5 3.6"},D:{"23":0.00494,"49":0.00988,"72":0.01481,"75":0.02963,"76":0.09382,"78":0.01975,"79":0.01975,"80":0.0395,"83":0.02963,"85":0.01481,"87":0.01975,"89":0.00494,"90":0.06419,"91":0.05432,"92":0.38516,"93":0.02963,"94":0.25678,"95":0.06419,"96":0.68638,"97":7.82179,"98":15.17941,"99":0.00494,"100":0.00988,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 77 81 84 86 88 101"},F:{"82":0.0395,"83":0.24196,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00494,"16":0.00988,"18":0.01481,"85":0.00494,"90":0.00988,"92":0.01481,"94":0.01975,"95":0.03457,"96":0.17283,"97":2.11346,"98":7.47119,_:"12 13 14 17 79 80 81 83 84 86 87 88 89 91 93"},E:{"4":0,"11":0.00988,"12":0.01975,"13":0.07901,"14":0.4938,"15":0.16295,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01975,"12.1":0.05926,"13.1":0.69132,"14.1":2.41962,"15.1":1.06167,"15.2-15.3":2.64183,"15.4":0.00494},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.03496,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01883,"10.0-10.2":0,"10.3":0.11027,"11.0-11.2":0.01076,"11.3-11.4":0.06993,"12.0-12.1":0.00807,"12.2-12.5":0.80147,"13.0-13.1":0.04841,"13.2":0,"13.3":0.04303,"13.4-13.7":0.39805,"14.0-14.4":1.52763,"14.5-14.8":4.45919,"15.0-15.1":3.91053,"15.2-15.3":15.39468,"15.4":0.05379},P:{"4":0.03166,"5.0-5.4":0.04039,"6.2-6.4":0.06112,"7.2-7.4":0.12327,"8.2":0.02019,"9.2":0.05136,"10.1":0.03082,"11.1-11.2":0.02111,"12.0":0.06164,"13.0":0.05276,"14.0":0.13719,"15.0":0.03166,"16.0":3.3558},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.01013},A:{"10":0.00988,"11":0.21233,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.39998},Q:{"10.4":0},O:{"0":0.0405},H:{"0":0.05752},L:{"0":20.72961},S:{"2.5":0}}; +module.exports={C:{"52":0.0871,"78":0.00458,"91":0.00917,"94":0.16961,"98":0.00917,"99":0.04584,"100":0.3163,"101":1.719,"102":0.07793,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 95 96 97 103 104 3.5 3.6"},D:{"29":0.00458,"47":0.00458,"49":0.00458,"53":0.04584,"56":0.00917,"75":0.01834,"76":0.16502,"80":0.01375,"83":0.02292,"84":0.00458,"85":0.01834,"87":0.03209,"88":0.01375,"89":0.01375,"90":0.00458,"91":0.00917,"92":0.47215,"93":0.13294,"95":0.09626,"96":0.0275,"97":0.09626,"98":0.03667,"99":0.16502,"100":0.57758,"101":2.15906,"102":18.21223,"103":1.07266,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 50 51 52 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 77 78 79 81 86 94 104 105 106"},F:{"86":0.11002,"87":0.6005,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.03667,"85":0.01375,"87":0.00458,"89":0.01834,"90":0.00917,"95":0.00917,"96":0.00917,"98":0.00458,"99":0.03667,"100":0.04584,"101":1.19184,"102":5.90419,"103":1.43479,_:"12 13 14 15 16 17 79 80 81 83 84 86 88 91 92 93 94 97"},E:{"4":0,"13":0.08251,"14":0.29796,"15":0.16044,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.01375,"12.1":0.0275,"13.1":0.46298,"14.1":1.13683,"15.1":0.49507,"15.2-15.3":0.15127,"15.4":1.27435,"15.5":3.90557},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01598,"10.0-10.2":0,"10.3":0.11187,"11.0-11.2":0.01918,"11.3-11.4":0.02237,"12.0-12.1":0,"12.2-12.5":0.91417,"13.0-13.1":0.04795,"13.2":0.00959,"13.3":0.02877,"13.4-13.7":0.20777,"14.0-14.4":0.56896,"14.5-14.8":2.06807,"15.0-15.1":0.40275,"15.2-15.3":0.78631,"15.4":4.1649,"15.5":22.51221,"16.0":0.03516},P:{"4":0.06383,"5.0-5.4":0.03046,"6.2-6.4":0.10152,"7.2-7.4":0.01064,"8.2":0.02141,"9.2":0.02043,"10.1":0.01015,"11.1-11.2":0.10216,"12.0":0.02043,"13.0":0.02128,"14.0":0.07446,"15.0":0.02128,"16.0":0.3936,"17.0":2.71265},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.00542},A:{"11":0.15127,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.14079},H:{"0":0.04614},L:{"0":19.78969},S:{"2.5":0},R:{_:"0"},M:{"0":0.59565}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VN.js index 0cb11cbb05bff8..115fa1abf7ca53 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VN.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VN.js @@ -1 +1 @@ -module.exports={C:{"52":0.0464,"55":0.0029,"56":0.0058,"67":0.0058,"68":0.0058,"69":0.0029,"70":0.0058,"71":0.0174,"72":0.0029,"75":0.0029,"77":0.0087,"78":0.0203,"79":0.0116,"80":0.0116,"81":0.0145,"82":0.0174,"83":0.0116,"84":0.0232,"86":0.0058,"87":0.0174,"88":0.0087,"89":0.0058,"90":0.0058,"91":0.0145,"92":0.0116,"93":0.0145,"94":0.0145,"95":0.0058,"96":0.1276,"97":0.2668,"98":0.0029,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 57 58 59 60 61 62 63 64 65 66 73 74 76 85 99 3.5 3.6"},D:{"22":0.0029,"33":0.0116,"34":0.0058,"38":0.0203,"41":0.0058,"47":0.0029,"48":0.0116,"49":0.0319,"50":0.0174,"52":0.0029,"53":0.0116,"54":0.0058,"56":0.0087,"57":0.0319,"58":0.0029,"60":0.0029,"61":0.0029,"63":0.0058,"64":0.0029,"65":0.0058,"67":0.0058,"68":0.0145,"69":0.0145,"70":0.0145,"71":0.0145,"72":0.0174,"73":0.0116,"74":0.0174,"75":0.0203,"76":0.0174,"77":0.3045,"78":0.0174,"79":0.1015,"80":0.0464,"81":0.0464,"83":0.0841,"84":0.1276,"85":0.1421,"86":0.1595,"87":0.2117,"88":0.0319,"89":0.0551,"90":0.0377,"91":0.1305,"92":0.0551,"93":0.4582,"94":0.0319,"95":0.0406,"96":0.2233,"97":2.7463,"98":10.2776,"99":0.0174,"100":0.0058,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 35 36 37 39 40 42 43 44 45 46 51 55 59 62 66 101"},F:{"28":0.0087,"36":0.0116,"40":0.0087,"43":0.0116,"46":0.0232,"57":0.0029,"60":0.0029,"68":0.0087,"70":0.0087,"71":0.0087,"72":0.0058,"77":0.0522,"78":0.0377,"79":0.0464,"80":0.0377,"81":0.029,"82":0.0783,"83":0.3364,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 44 45 47 48 49 50 51 52 53 54 55 56 58 62 63 64 65 66 67 69 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.0058,"17":0.0058,"18":0.0319,"83":0.0058,"84":0.0145,"85":0.0116,"86":0.0087,"87":0.0058,"88":0.0029,"89":0.0058,"90":0.0087,"91":0.0029,"92":0.0058,"93":0.0029,"94":0.0058,"95":0.0058,"96":0.0203,"97":0.145,"98":1.0208,_:"12 13 14 15 79 80 81"},E:{"4":0,"13":0.0348,"14":0.0812,"15":0.0464,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.0667,"11.1":0.0087,"12.1":0.0116,"13.1":0.0696,"14.1":0.3045,"15.1":0.1334,"15.2-15.3":0.1885,"15.4":0.0029},G:{"8":0.00479,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00319,"5.0-5.1":0.00319,"6.0-6.1":0.00479,"7.0-7.1":0.02233,"8.1-8.4":0.01276,"9.0-9.2":0.02712,"9.3":0.13558,"10.0-10.2":0.03828,"10.3":0.22171,"11.0-11.2":0.09251,"11.3-11.4":0.13877,"12.0-12.1":0.10846,"12.2-12.5":1.8359,"13.0-13.1":0.06859,"13.2":0.03669,"13.3":0.20576,"13.4-13.7":0.74808,"14.0-14.4":1.70191,"14.5-14.8":4.24122,"15.0-15.1":1.81038,"15.2-15.3":4.45336,"15.4":0.0335},P:{"4":0.39037,"5.0-5.4":0.04039,"6.2-6.4":0.06112,"7.2-7.4":0.12327,"8.2":0.02019,"9.2":0.05136,"10.1":0.03082,"11.1-11.2":0.18491,"12.0":0.06164,"13.0":0.16437,"14.0":0.21573,"15.0":0.16437,"16.0":2.17786},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00109,"4.2-4.3":0.00255,"4.4":0,"4.4.3-4.4.4":0.02476},A:{"7":0.00313,"8":0.02189,"9":0.01563,"10":0.00625,"11":0.1532,_:"6 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.07101},Q:{"10.4":0},O:{"0":1.86046},H:{"0":0.3832},L:{"0":48.25849},S:{"2.5":0}}; +module.exports={C:{"36":0.00228,"37":0.00228,"38":0.00456,"39":0.00456,"40":0.00683,"51":0.00228,"52":0.05012,"55":0.00228,"56":0.00456,"78":0.00911,"79":0.00456,"80":0.00683,"81":0.00911,"82":0.00456,"83":0.00456,"84":0.00683,"88":0.00228,"91":0.00911,"94":0.00228,"97":0.00456,"98":0.00228,"99":0.00683,"100":0.03189,"101":0.24602,"102":0.00683,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 41 42 43 44 45 46 47 48 49 50 53 54 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 85 86 87 89 90 92 93 95 96 103 104 3.5 3.6"},D:{"27":0.00683,"33":0.00911,"34":0.00456,"35":0.00456,"36":0.00911,"37":0.00456,"38":0.01822,"39":0.00456,"40":0.00456,"41":0.01139,"42":0.00911,"43":0.01367,"44":0.0205,"45":0.01139,"46":0.00456,"47":0.00456,"48":0.00228,"49":0.01595,"50":0.00228,"53":0.01139,"54":0.00228,"56":0.00456,"57":0.01139,"63":0.00456,"65":0.00228,"67":0.00228,"68":0.00456,"69":0.00228,"70":0.00456,"71":0.00456,"72":0.00456,"73":0.00228,"74":0.00683,"75":0.00683,"76":0.02278,"77":0.00911,"78":0.01139,"79":0.07973,"80":0.01595,"81":0.01595,"83":0.04328,"84":0.05923,"85":0.07062,"86":0.08429,"87":0.09795,"88":0.00911,"89":0.03189,"90":0.01139,"91":0.01367,"92":0.0205,"93":0.00911,"94":0.01139,"95":0.01367,"96":0.03645,"97":0.02278,"98":0.02506,"99":0.04784,"100":0.10934,"101":0.42826,"102":9.27374,"103":0.66973,"104":0.00456,"105":0.00228,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 31 32 51 52 55 58 59 60 61 62 64 66 106"},F:{"28":0.01367,"36":0.00911,"40":0.00456,"45":0.00228,"46":0.01595,"60":0.00228,"68":0.00228,"69":0.00228,"70":0.00228,"71":0.00456,"72":0.00228,"77":0.00683,"78":0.00456,"79":0.00683,"80":0.00456,"81":0.00456,"84":0.00228,"85":0.00911,"86":0.09112,"87":0.17085,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 47 48 49 50 51 52 53 54 55 56 57 58 62 63 64 65 66 67 73 74 75 76 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00456,"18":0.01367,"84":0.00911,"85":0.00228,"86":0.00456,"92":0.00228,"94":0.00228,"96":0.00456,"98":0.00228,"99":0.00683,"100":0.00911,"101":0.08429,"102":0.7244,"103":0.1139,_:"13 14 15 16 17 79 80 81 83 87 88 89 90 91 93 95 97"},E:{"4":0,"7":0.00228,"8":0.00456,"13":0.0205,"14":0.05239,"15":0.01595,_:"0 5 6 9 10 11 12 3.1 3.2 5.1 6.1 10.1","7.1":0.00228,"9.1":0.00911,"11.1":0.00456,"12.1":0.00683,"13.1":0.07745,"14.1":0.15946,"15.1":0.03189,"15.2-15.3":0.02506,"15.4":0.12757,"15.5":0.28247,"16.0":0.00228},G:{"8":0.00375,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00562,"6.0-6.1":0.00375,"7.0-7.1":0.015,"8.1-8.4":0.01874,"9.0-9.2":0.015,"9.3":0.06561,"10.0-10.2":0.03374,"10.3":0.15183,"11.0-11.2":0.05436,"11.3-11.4":0.0806,"12.0-12.1":0.0806,"12.2-12.5":1.43769,"13.0-13.1":0.05061,"13.2":0.02624,"13.3":0.16682,"13.4-13.7":0.56608,"14.0-14.4":1.52204,"14.5-14.8":3.03096,"15.0-15.1":0.79476,"15.2-15.3":1.27837,"15.4":2.43114,"15.5":6.80796,"16.0":0.07685},P:{"4":0.28604,"5.0-5.4":0.03046,"6.2-6.4":0.10152,"7.2-7.4":0.09194,"8.2":0.02141,"9.2":0.02043,"10.1":0.01015,"11.1-11.2":0.10216,"12.0":0.02043,"13.0":0.10216,"14.0":0.10216,"15.0":0.08172,"16.0":0.25539,"17.0":1.87966},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00262,"4.4":0,"4.4.3-4.4.4":0.02054},A:{"8":0.00724,"9":0.00724,"10":0.00483,"11":0.14243,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.52896},H:{"0":0.35091},L:{"0":56.37298},S:{"2.5":0},R:{_:"0"},M:{"0":0.06178}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VU.js index 217b5076e2a57a..1da415baacd16f 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VU.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VU.js @@ -1 +1 @@ -module.exports={C:{"34":0.0216,"38":0.05183,"52":0.12525,"56":0.00864,"72":0.04751,"82":0.00864,"84":0.01728,"88":0.00864,"89":0.00864,"90":0.02591,"91":0.11661,"95":0.00864,"96":2.0904,"97":2.11199,"98":0.0216,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 83 85 86 87 92 93 94 99 3.5 3.6"},D:{"31":0.01296,"37":0.05615,"39":0.13389,"53":0.01728,"55":0.01728,"59":0.06047,"63":0.01728,"67":0.00864,"69":0.11229,"77":0.01728,"79":0.09934,"81":1.00633,"83":0.03887,"84":0.05615,"86":0.01728,"87":0.16844,"88":0.59602,"90":0.01728,"91":0.02591,"92":0.02591,"94":0.02591,"95":0.05615,"96":1.93923,"97":7.62304,"98":11.4799,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 38 40 41 42 43 44 45 46 47 48 49 50 51 52 54 56 57 58 60 61 62 64 65 66 68 70 71 72 73 74 75 76 78 80 85 89 93 99 100 101"},F:{"82":0.19867,"83":0.26778,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.19867,"13":0.02591,"14":0.0216,"17":0.05183,"18":0.24618,"80":0.00864,"84":0.02591,"85":0.00864,"89":0.00864,"94":0.00864,"96":0.1598,"97":1.02792,"98":3.67979,_:"15 16 79 81 83 86 87 88 90 91 92 93 95"},E:{"4":0,"13":0.00864,"14":0.19867,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 11.1 15.4","10.1":0.00864,"12.1":0.02591,"13.1":1.16613,"14.1":0.704,"15.1":0.42326,"15.2-15.3":0.49237},G:{"8":0.00265,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00265,"7.0-7.1":0.00265,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01358,"10.0-10.2":0,"10.3":0.00265,"11.0-11.2":0.04374,"11.3-11.4":0.00265,"12.0-12.1":0.05997,"12.2-12.5":0.30317,"13.0-13.1":0.01624,"13.2":0.00265,"13.3":0.14479,"13.4-13.7":0.06262,"14.0-14.4":0.19913,"14.5-14.8":0.88234,"15.0-15.1":0.42046,"15.2-15.3":1.14741,"15.4":0.00265},P:{"4":0.06112,"5.0-5.4":0.04039,"6.2-6.4":0.06112,"7.2-7.4":0.74362,"8.2":0.02019,"9.2":0.11205,"10.1":0.05049,"11.1-11.2":0.03056,"12.0":0.02037,"13.0":0.06112,"14.0":0.20373,"15.0":0.24448,"16.0":1.71135},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00448,"4.4":0,"4.4.3-4.4.4":0.03529},A:{"11":1.16613,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.13066},Q:{"10.4":0},O:{"0":1.42593},H:{"0":0.04303},L:{"0":52.54926},S:{"2.5":0}}; +module.exports={C:{"34":0.08688,"38":0.09122,"47":0.02172,"58":0.00434,"64":0.03041,"78":0.00869,"82":0.00434,"91":0.07819,"95":0.00869,"96":0.00869,"99":0.00869,"100":0.76889,"101":2.4587,"102":0.02172,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 49 50 51 52 53 54 55 56 57 59 60 61 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 85 86 87 88 89 90 92 93 94 97 98 103 104 3.5 3.6"},D:{"31":0.00434,"49":0.00869,"59":0.02172,"63":0.00869,"69":0.02172,"70":0.00869,"72":0.01738,"74":0.0695,"76":0.00869,"78":0.00869,"79":0.00434,"80":0.01303,"81":0.4735,"83":0.00434,"84":0.03475,"86":0.01738,"87":0.00869,"88":0.3649,"89":0.01303,"90":0.02172,"91":0.02606,"92":0.00869,"94":0.00869,"95":0.03475,"96":0.04344,"97":0.03041,"98":0.03475,"99":0.10426,"100":0.9774,"101":1.22066,"102":17.8495,"103":1.85923,"105":0.00869,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 60 61 62 64 65 66 67 68 71 73 75 77 85 93 104 106"},F:{"79":0.00869,"86":0.20417,"87":0.25195,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.02172,"13":0.04778,"14":0.03475,"15":0.02172,"16":0.00869,"17":0.03041,"18":0.15638,"84":0.04778,"85":0.00869,"89":0.01738,"90":0.01738,"91":0.00434,"92":0.12598,"94":0.02606,"95":0.04778,"96":0.00869,"98":0.01303,"99":0.02606,"100":0.0695,"101":0.68201,"102":4.09205,"103":0.80364,_:"79 80 81 83 86 87 88 93 97"},E:{"4":0,"13":0.00434,_:"0 5 6 7 8 9 10 11 12 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 16.0","13.1":0.22589,"14.1":0.11729,"15.1":0.02172,"15.2-15.3":0.35621,"15.4":0.09557,"15.5":0.59947},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.00184,"9.3":0.0058,"10.0-10.2":0,"10.3":0.00764,"11.0-11.2":0.00184,"11.3-11.4":0.0174,"12.0-12.1":0.00184,"12.2-12.5":0.17185,"13.0-13.1":0.0485,"13.2":0.00764,"13.3":0.01555,"13.4-13.7":0.03664,"14.0-14.4":0.12388,"14.5-14.8":0.32472,"15.0-15.1":0.12941,"15.2-15.3":0.35556,"15.4":0.29757,"15.5":1.08802,"16.0":0},P:{"4":0.06126,"5.0-5.4":0.03046,"6.2-6.4":0.10152,"7.2-7.4":0.56155,"8.2":0.02141,"9.2":0.02042,"10.1":0.01015,"11.1-11.2":0.11231,"12.0":0.02042,"13.0":0.02042,"14.0":0.28588,"15.0":0.18378,"16.0":0.2042,"17.0":2.87922},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00085,"4.4":0,"4.4.3-4.4.4":0.01046},A:{"10":0.00465,"11":0.12567,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":1.05202},H:{"0":0.18206},L:{"0":55.69768},S:{"2.5":0.00566},R:{_:"0"},M:{"0":0.12443}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WF.js index 5201b41b4bbf6e..1d6341aff19e9b 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WF.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WF.js @@ -1 +1 @@ -module.exports={C:{"78":0.02568,"91":0.38841,"95":0.02568,"96":0.73509,"97":1.2519,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 92 93 94 98 99 3.5 3.6"},D:{"78":0.05136,"85":0.03852,"90":0.01284,"96":0.0642,"97":1.0593,"98":3.67866,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 86 87 88 89 91 92 93 94 95 99 100 101"},F:{"82":0.02568,"83":0.2568,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.02568,"97":0.2568,"98":0.68373,_:"12 13 14 15 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96"},E:{"4":0,"14":0.1284,"15":0.03852,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 15.4","13.1":0.01284,"14.1":0.20544,"15.1":5.59182,"15.2-15.3":10.29126},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.011,"11.0-11.2":0,"11.3-11.4":0.011,"12.0-12.1":0,"12.2-12.5":0.011,"13.0-13.1":0,"13.2":0.011,"13.3":0.0385,"13.4-13.7":0.08801,"14.0-14.4":0.11551,"14.5-14.8":0.66007,"15.0-15.1":10.73713,"15.2-15.3":43.16854,"15.4":0.15402},P:{"4":0.03166,"5.0-5.4":0.04039,"6.2-6.4":0.06112,"7.2-7.4":0.12327,"8.2":0.02019,"9.2":0.05136,"10.1":0.03082,"11.1-11.2":0.02111,"12.0":0.06164,"13.0":0.1316,"14.0":0.13719,"15.0":0.03166,"16.0":0.98196},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.01284,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.08148},Q:{"10.4":0},O:{"0":0.05432},H:{"0":0},L:{"0":10.15761},S:{"2.5":0}}; +module.exports={C:{"68":0.416,"78":0.20634,"81":0.05325,"91":0.93517,"92":0.10317,"94":0.31283,"100":0.7255,"101":9.96736,"102":0.10317,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 82 83 84 85 86 87 88 89 90 93 95 96 97 98 99 103 104 3.5 3.6"},D:{"87":0.20634,"99":0.15642,"100":0.20634,"101":0.31283,"102":2.12992,"103":0.51917,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 88 89 90 91 92 93 94 95 96 97 98 104 105 106"},F:{"87":0.77875,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"96":0.15642,"101":0.10317,"102":2.23309,"103":0.20634,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 97 98 99 100"},E:{"4":0,"14":0.05325,"15":0.15642,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1","13.1":0.25958,"14.1":0.67558,"15.1":2.59584,"15.2-15.3":2.59584,"15.4":1.50426,"15.5":0.20634,"16.0":0.15642},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0.03786,"12.0-12.1":0.11515,"12.2-12.5":0.03786,"13.0-13.1":0,"13.2":0,"13.3":0.03786,"13.4-13.7":0,"14.0-14.4":0.15301,"14.5-14.8":5.68975,"15.0-15.1":1.98597,"15.2-15.3":4.85056,"15.4":1.67995,"15.5":1.18464,"16.0":0},P:{"4":0.06383,"5.0-5.4":0.03046,"6.2-6.4":0.10152,"7.2-7.4":0.01064,"8.2":0.02141,"9.2":0.02043,"10.1":0.01015,"11.1-11.2":0.10216,"12.0":0.02043,"13.0":0.06264,"14.0":0.07446,"15.0":0.02128,"16.0":0.11484,"17.0":3.85241},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":46.35702},S:{"2.5":0},R:{_:"0"},M:{"0":0.77395}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WS.js index 83245c7a36b4f6..47aa944d0e56f8 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WS.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WS.js @@ -1 +1 @@ -module.exports={C:{"52":0.00906,"59":0.04983,"66":0.00906,"72":0.00906,"78":0.04983,"90":0.01812,"93":0.00906,"94":0.09966,"95":0.01812,"96":0.19026,"97":0.50736,"98":0.08154,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 61 62 63 64 65 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 91 92 99 3.5 3.6"},D:{"49":0.01359,"63":0.00453,"68":0.01359,"69":0.04077,"70":0.05436,"71":0.01812,"77":0.00906,"78":0.01812,"79":0.02265,"80":0.07701,"84":0.02265,"86":0.00453,"87":0.00453,"88":0.01359,"89":0.03624,"91":0.01812,"92":0.0453,"93":0.02265,"94":0.02718,"95":0.24462,"96":0.20385,"97":6.13362,"98":15.3567,"99":0.00906,"100":0.01812,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 72 73 74 75 76 81 83 85 90 101"},F:{"82":0.12231,"83":1.15062,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.15855,"13":0.09966,"14":0.00906,"15":0.04983,"16":0.04077,"17":0.06795,"18":0.42582,"84":0.01359,"85":0.08607,"89":0.04077,"92":0.03171,"94":0.13137,"95":0.03624,"96":0.18573,"97":1.80294,"98":5.33181,_:"79 80 81 83 86 87 88 90 91 93"},E:{"4":0,"13":0.02265,"14":0.13137,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1 15.4","11.1":0.00906,"13.1":0.11778,"14.1":0.1359,"15.1":0.05889,"15.2-15.3":0.0906},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00149,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.0544,"10.0-10.2":0,"10.3":0.0149,"11.0-11.2":0.08569,"11.3-11.4":0.19076,"12.0-12.1":0.06483,"12.2-12.5":0.86065,"13.0-13.1":0.04918,"13.2":0.22205,"13.3":0.18703,"13.4-13.7":0.25484,"14.0-14.4":1.42249,"14.5-14.8":2.12144,"15.0-15.1":0.81445,"15.2-15.3":1.10729,"15.4":0},P:{"4":0.16348,"5.0-5.4":0.01121,"6.2-6.4":0.04087,"7.2-7.4":0.63347,"8.2":0.16348,"9.2":0.20434,"10.1":0.08174,"11.1-11.2":0.36782,"12.0":0.05109,"13.0":0.34739,"14.0":0.52108,"15.0":0.49043,"16.0":1.71649},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00025,"4.2-4.3":0.00087,"4.4":0,"4.4.3-4.4.4":0.00435},A:{"10":0.00475,"11":0.09491,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.12583},Q:{"10.4":0.04377},O:{"0":0.61275},H:{"0":1.31562},L:{"0":51.41736},S:{"2.5":0.05471}}; +module.exports={C:{"30":0.02106,"89":0.00421,"91":0.22739,"96":0.02106,"99":0.00842,"100":0.21897,"101":1.74757,"102":0.05895,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 92 93 94 95 97 98 103 104 3.5 3.6"},D:{"47":0.01684,"49":0.00421,"69":0.01263,"73":0.00842,"74":0.20634,"75":0.00842,"76":0.00421,"79":0.01684,"80":0.01684,"83":0.00842,"84":0.00421,"85":0.02106,"86":0.01263,"87":0.00842,"88":0.00421,"90":0.01684,"91":0.06738,"92":0.00842,"93":0.40426,"94":0.02106,"95":0.54322,"96":0.04211,"97":0.0379,"98":0.02106,"99":0.13896,"100":0.10949,"101":1.21277,"102":17.1893,"103":1.17908,"104":0.04632,"105":0.00421,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 72 77 78 81 89 106"},F:{"86":0.05895,"87":0.17686,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"13":0.00421,"15":0.01684,"16":0.01684,"17":0.00842,"18":0.08001,"80":0.00842,"84":0.0379,"88":0.01263,"89":0.00842,"90":0.00842,"92":0.01684,"94":0.02948,"95":0.05474,"96":0.00421,"97":0.02106,"98":0.00421,"99":0.02527,"100":0.07159,"101":0.5727,"102":2.23183,"103":0.4211,_:"12 14 79 81 83 85 86 87 91 93"},E:{"4":0,"11":0.02948,"12":0.01263,"13":0.00842,"14":0.16423,_:"0 5 6 7 8 9 10 15 3.1 3.2 5.1 6.1 7.1 9.1 11.1 16.0","10.1":0.01263,"12.1":0.01263,"13.1":0.08422,"14.1":0.05053,"15.1":0.01684,"15.2-15.3":0.01684,"15.4":0.34109,"15.5":0.16423},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00144,"8.1-8.4":0.02225,"9.0-9.2":0,"9.3":0.01292,"10.0-10.2":0.00431,"10.3":0.04594,"11.0-11.2":0.01077,"11.3-11.4":0.07753,"12.0-12.1":0.0079,"12.2-12.5":0.89083,"13.0-13.1":0.01938,"13.2":0.01723,"13.3":0.2254,"13.4-13.7":0.13065,"14.0-14.4":1.10188,"14.5-14.8":1.04948,"15.0-15.1":0.17946,"15.2-15.3":0.30723,"15.4":1.08034,"15.5":1.99343,"16.0":0},P:{"4":0.23701,"5.0-5.4":0.01056,"6.2-6.4":0.0103,"7.2-7.4":0.48433,"8.2":0.01015,"9.2":0.08244,"10.1":0.01018,"11.1-11.2":0.17518,"12.0":0.07213,"13.0":0.96866,"14.0":0.15457,"15.0":0.29884,"16.0":2.18463,"17.0":0.81408},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.33688,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.61363},H:{"0":0.54807},L:{"0":56.92578},S:{"2.5":0.01158},R:{_:"0"},M:{"0":0.13894}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YE.js index e241f354c4f05a..7498904d024481 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YE.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YE.js @@ -1 +1 @@ -module.exports={C:{"3":0.03086,"37":0.00193,"43":0.00579,"44":0.01157,"47":0.00386,"50":0.00386,"52":0.07523,"54":0.00386,"56":0.00579,"57":0.00772,"59":0.00386,"60":0.00965,"62":0.00386,"63":0.00193,"64":0.00193,"65":0.00193,"66":0.00193,"68":0.00386,"69":0.00579,"72":0.01543,"74":0.00193,"78":0.01929,"82":0.00386,"84":0.00193,"86":0.00386,"87":0.01543,"88":0.00193,"89":0.00965,"91":0.00772,"92":0.00579,"93":0.00386,"94":0.04051,"95":0.02122,"96":0.39737,"97":0.63271,"98":0.00772,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 45 46 48 49 51 53 55 58 61 67 70 71 73 75 76 77 79 80 81 83 85 90 99 3.5 3.6"},D:{"37":0.0135,"40":0.00386,"44":0.00579,"48":0.00193,"49":0.00965,"50":0.00386,"51":0.00386,"52":0.00386,"53":0.00772,"54":0.00193,"55":0.00965,"56":0.00772,"57":0.00386,"60":0.00386,"62":0.00386,"63":0.0135,"64":0.00772,"65":0.00386,"66":0.00965,"67":0.00772,"68":0.00386,"69":0.00965,"70":0.04437,"71":0.00965,"72":0.00386,"73":0.00579,"74":0.01929,"75":0.0135,"76":0.02701,"77":0.00772,"78":0.00579,"79":0.03472,"80":0.02122,"81":0.01929,"83":0.03665,"84":0.01736,"85":0.00965,"86":0.08681,"87":0.06173,"88":0.01736,"89":0.09066,"90":0.03279,"91":0.04437,"92":0.08681,"93":0.05208,"94":0.0463,"95":0.07137,"96":0.36844,"97":2.02545,"98":4.07212,"99":0.00386,"100":0.00579,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 41 42 43 45 46 47 58 59 61 101"},F:{"65":0.00193,"66":0.00193,"67":0.00579,"79":0.00193,"80":0.00386,"81":0.00193,"82":0.08102,"83":0.11381,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 68 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00193,"84":0.01157,"85":0.00386,"89":0.00772,"90":0.00579,"92":0.04244,"93":0.00193,"94":0.00965,"95":0.01736,"96":0.03858,"97":0.12924,"98":0.4591,_:"13 14 15 16 17 18 79 80 81 83 86 87 88 91"},E:{"4":0,"14":0.00386,_:"0 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 15.4","14.1":0.01157,"15.1":0.01929,"15.2-15.3":0.00772},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.01017,"5.0-5.1":0,"6.0-6.1":0.00116,"7.0-7.1":0.00727,"8.1-8.4":0,"9.0-9.2":0.00378,"9.3":0.00262,"10.0-10.2":0.00203,"10.3":0.00378,"11.0-11.2":0.00276,"11.3-11.4":0.00262,"12.0-12.1":0.01787,"12.2-12.5":0.18627,"13.0-13.1":0.00581,"13.2":0.01729,"13.3":0.01613,"13.4-13.7":0.04679,"14.0-14.4":0.42994,"14.5-14.8":0.22492,"15.0-15.1":0.21751,"15.2-15.3":0.25311,"15.4":0.00058},P:{"4":0.25168,"5.0-5.4":0.10067,"6.2-6.4":0.0302,"7.2-7.4":0.24162,"8.2":0.02019,"9.2":0.35236,"10.1":0.05034,"11.1-11.2":0.47316,"12.0":0.09061,"13.0":0.34229,"14.0":0.27182,"15.0":0.4329,"16.0":2.72825},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00439,"4.2-4.3":0.00644,"4.4":0,"4.4.3-4.4.4":0.04565},A:{"11":0.01157,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.29855},Q:{"10.4":0},O:{"0":4.36533},H:{"0":10.7942},L:{"0":62.46775},S:{"2.5":0.02421}}; +module.exports={C:{"3":0.02394,"43":0.00239,"47":0.00239,"48":0.00479,"49":0.00239,"50":0.00479,"52":0.02394,"54":0.00718,"56":0.00718,"57":0.00479,"58":0.00239,"59":0.00479,"60":0.00718,"61":0.00479,"62":0.00479,"63":0.00958,"64":0.00479,"65":0.01197,"66":0.00718,"69":0.02633,"72":0.01197,"74":0.00479,"78":0.01436,"80":0.00718,"81":0.00718,"82":0.00479,"83":0.00718,"87":0.00239,"89":0.01436,"91":0.01915,"93":0.00718,"94":0.00718,"95":0.00958,"96":0.01676,"97":0.01676,"98":0.01197,"99":0.02633,"100":0.17476,"101":1.63031,"102":0.0383,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 51 53 55 67 68 70 71 73 75 76 77 79 84 85 86 88 90 92 103 104 3.5 3.6"},D:{"37":0.01436,"39":0.00718,"40":0.00479,"43":0.00479,"44":0.00479,"47":0.00239,"48":0.00479,"49":0.01436,"50":0.00479,"51":0.00479,"52":0.00479,"53":0.01436,"55":0.01197,"56":0.00718,"57":0.00958,"58":0.00479,"60":0.00479,"62":0.00479,"63":0.01197,"64":0.00239,"65":0.00479,"66":0.01436,"67":0.01436,"68":0.01436,"69":0.01197,"70":0.01197,"71":0.03112,"72":0.00718,"73":0.00718,"74":0.02155,"75":0.00958,"76":0.03591,"77":0.01197,"78":0.01436,"79":0.04309,"80":0.02394,"81":0.02873,"83":0.02873,"84":0.01676,"85":0.01676,"86":0.08379,"87":0.05985,"88":0.02394,"89":0.05027,"90":0.02633,"91":0.05267,"92":0.05267,"93":0.02394,"94":0.02633,"95":0.05027,"96":0.11731,"97":0.10534,"98":0.16758,"99":0.13885,"100":0.2777,"101":0.55301,"102":7.20115,"103":0.80678,"104":0.00718,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 41 42 45 46 54 59 61 105 106"},F:{"40":0.00239,"69":0.00718,"70":0.01197,"79":0.00958,"82":0.00479,"85":0.01197,"86":0.01197,"87":0.11252,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 71 72 73 74 75 76 77 78 80 81 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.00718,"84":0.02633,"85":0.00479,"88":0.00479,"89":0.01197,"90":0.00718,"92":0.01915,"94":0.00479,"96":0.00479,"97":0.00239,"98":0.00479,"99":0.0383,"100":0.01436,"101":0.1197,"102":0.55062,"103":0.12688,_:"12 13 14 15 16 17 79 80 81 83 86 87 91 93 95"},E:{"4":0,"13":0.01436,"14":0.00718,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 16.0","13.1":0.00718,"14.1":0.00718,"15.1":0.00479,"15.2-15.3":0.00239,"15.4":0.00958,"15.5":0.02155},G:{"8":0.00032,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00884,"5.0-5.1":0.00064,"6.0-6.1":0.00112,"7.0-7.1":0.00353,"8.1-8.4":0.00016,"9.0-9.2":0.00273,"9.3":0.00803,"10.0-10.2":0.00048,"10.3":0.00546,"11.0-11.2":0.00193,"11.3-11.4":0.00096,"12.0-12.1":0.01398,"12.2-12.5":0.17674,"13.0-13.1":0.00594,"13.2":0.00353,"13.3":0.01542,"13.4-13.7":0.03728,"14.0-14.4":0.15521,"14.5-14.8":0.18606,"15.0-15.1":0.1009,"15.2-15.3":0.19811,"15.4":0.29677,"15.5":0.37839,"16.0":0.00209},P:{"4":0.19234,"5.0-5.4":0.06074,"6.2-6.4":0.01012,"7.2-7.4":0.14173,"8.2":0.02141,"9.2":0.21259,"10.1":0.04049,"11.1-11.2":0.32395,"12.0":0.07086,"13.0":0.29358,"14.0":0.22271,"15.0":0.15185,"16.0":0.69851,"17.0":2.19676},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0.00093,"4.1":0.00556,"4.2-4.3":0.00432,"4.4":0,"4.4.3-4.4.4":0.05003},A:{"11":0.00958,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":3.4983},H:{"0":8.00631},L:{"0":66.36858},S:{"2.5":0.00761},R:{_:"0"},M:{"0":0.66924}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YT.js index c3966492a9e972..73b67c9a1575d6 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YT.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YT.js @@ -1 +1 @@ -module.exports={C:{"51":0.02462,"60":0.10831,"68":0.00985,"73":0.01969,"78":3.68733,"84":0.04431,"85":0.18707,"86":0.01477,"88":0.12308,"89":0.128,"91":0.14769,"94":0.00985,"95":0.17723,"96":2.75688,"97":2.70765,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 72 74 75 76 77 79 80 81 82 83 87 90 92 93 98 99 3.5 3.6"},D:{"49":0.00492,"58":0.00985,"64":0.01969,"67":0.00985,"69":0.02462,"75":0.05415,"77":0.05415,"79":0.02954,"81":0.01477,"83":0.01477,"85":0.00985,"87":0.13292,"88":0.08369,"89":0.06892,"90":0.02462,"91":0.10831,"92":0.03446,"93":1.11752,"94":0.01477,"95":0.03938,"96":0.48738,"97":8.44295,"98":14.47854,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 63 65 66 68 70 71 72 73 74 76 78 80 84 86 99 100 101"},F:{"82":0.05415,"83":0.37907,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"14":0.00492,"17":0.15754,"18":0.01477,"84":0.01477,"85":0.00985,"89":0.02462,"91":0.02954,"92":0.00985,"93":0.00492,"94":0.02462,"95":0.06892,"96":0.12308,"97":1.27013,"98":4.58331,_:"12 13 15 16 79 80 81 83 86 87 88 90"},E:{"4":0,"12":0.01969,"13":0.00492,"14":0.44799,"15":0.12308,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 15.4","11.1":0.01477,"12.1":0.12308,"13.1":0.15754,"14.1":0.86645,"15.1":0.68922,"15.2-15.3":0.58091},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.03171,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00362,"10.0-10.2":0,"10.3":0.00181,"11.0-11.2":0.05164,"11.3-11.4":0.00544,"12.0-12.1":0.01812,"12.2-12.5":0.17303,"13.0-13.1":0.05526,"13.2":0.00181,"13.3":0.03895,"13.4-13.7":0.10056,"14.0-14.4":0.72111,"14.5-14.8":2.14703,"15.0-15.1":2.08361,"15.2-15.3":3.60918,"15.4":0.01449},P:{"4":0.01024,"5.0-5.4":0.01024,"6.2-6.4":0.02048,"7.2-7.4":0.03072,"8.2":0.01015,"9.2":0.12286,"10.1":0.02048,"11.1-11.2":0.18429,"12.0":0.05073,"13.0":0.02048,"14.0":0.11262,"15.0":0.14334,"16.0":3.63464},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00159,"4.2-4.3":0.00159,"4.4":0,"4.4.3-4.4.4":0.01206},A:{"11":0.27077,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02136,_:"11"},R:{_:"0"},M:{"0":0.13708},Q:{"10.4":0},O:{"0":0.27416},H:{"0":0.19226},L:{"0":36.20709},S:{"2.5":0}}; +module.exports={C:{"48":0.00363,"60":0.01816,"68":0.00726,"72":0.00363,"78":0.59185,"81":0.00726,"82":0.00726,"83":0.00363,"84":0.01089,"85":0.02179,"87":0.00363,"88":0.00363,"89":0.0581,"91":0.43935,"95":0.00363,"96":0.00726,"97":0.00726,"98":0.01089,"99":0.08351,"100":0.81334,"101":3.89243,"102":0.06536,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 86 90 92 93 94 103 104 3.5 3.6"},D:{"22":0.03268,"43":0.00726,"46":0.00726,"47":0.02542,"49":0.01816,"54":0.00363,"66":0.00363,"67":0.01816,"70":0.00363,"74":0.00726,"75":0.00726,"76":0.01452,"77":0.06173,"78":0.02179,"81":0.02905,"83":0.01089,"84":0.01089,"85":0.01452,"86":0.00363,"87":0.09441,"88":0.01452,"89":0.03994,"90":0.02179,"91":0.12709,"92":0.03268,"93":0.01816,"94":0.00363,"95":0.00726,"96":0.05447,"97":0.11619,"98":0.03994,"99":0.03994,"100":0.34858,"101":1.14013,"102":14.43323,"103":1.0893,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 48 50 51 52 53 55 56 57 58 59 60 61 62 63 64 65 68 69 71 72 73 79 80 104 105 106"},F:{"82":0.00363,"86":0.07625,"87":0.26506,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.02542,"17":0.03994,"18":0.01816,"84":0.01816,"86":0.00363,"87":0.00726,"89":0.00363,"90":0.00726,"91":0.00363,"92":0.01816,"93":0.00726,"94":0.00363,"96":0.03268,"97":0.01089,"98":0.01452,"99":0.01452,"100":0.08714,"101":0.74799,"102":3.74356,"103":0.75888,_:"12 13 14 16 79 80 81 83 85 88 95"},E:{"4":0,"11":0.01452,"13":0.01816,"14":0.33768,"15":0.01452,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.01089,"11.1":0.00726,"12.1":0.02179,"13.1":0.34131,"14.1":0.28322,"15.1":0.13435,"15.2-15.3":0.09078,"15.4":0.25417,"15.5":0.79156},G:{"8":0.00616,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00616,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0.00308,"10.3":0.01,"11.0-11.2":0.01462,"11.3-11.4":0.00693,"12.0-12.1":0.00923,"12.2-12.5":0.20008,"13.0-13.1":0.01385,"13.2":0.01462,"13.3":0.02001,"13.4-13.7":0.10312,"14.0-14.4":0.2855,"14.5-14.8":0.93116,"15.0-15.1":0.34168,"15.2-15.3":0.53946,"15.4":1.6907,"15.5":3.44297,"16.0":0.04925},P:{"4":0.11185,"5.0-5.4":0.0405,"6.2-6.4":0.09113,"7.2-7.4":0.05084,"8.2":0.01021,"9.2":0.02034,"10.1":0.03038,"11.1-11.2":0.21354,"12.0":0.02034,"13.0":0.09152,"14.0":0.08135,"15.0":0.02034,"16.0":0.18303,"17.0":3.58943},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.05096},A:{"11":0.11256,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01274},H:{"0":0.17489},L:{"0":29.37363},S:{"2.5":0},R:{_:"0"},M:{"0":0.72618}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZA.js index cd4c0e3ed58201..0bfb793ebd394c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZA.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZA.js @@ -1 +1 @@ -module.exports={C:{"34":0.00855,"52":0.03848,"60":0.00855,"68":0.00214,"69":0.00428,"70":0.00428,"71":0.00214,"72":0.00641,"73":0.00428,"74":0.00214,"75":0.00214,"77":0.00855,"78":0.01069,"79":0.00641,"80":0.00428,"81":0.00855,"82":0.00641,"83":0.00428,"84":0.00428,"85":0.00214,"86":0.00855,"87":0.00855,"88":0.01069,"89":0.00855,"90":0.00641,"91":0.01924,"92":0.00641,"93":0.00855,"94":0.01497,"95":0.01069,"96":0.30787,"97":0.49815,"98":0.01069,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 76 99 3.5 3.6"},D:{"11":0.00214,"18":0.00214,"28":0.00855,"34":0.00641,"38":0.00428,"39":0.00214,"40":0.00428,"49":0.04276,"50":0.00641,"52":0.00855,"55":0.00641,"56":0.00214,"63":0.00214,"64":0.01069,"65":0.00641,"66":0.00214,"67":0.01069,"69":0.01497,"70":0.02352,"71":0.00428,"72":0.01283,"73":0.00428,"74":0.00855,"75":0.00214,"76":0.00428,"77":0.00428,"78":0.00641,"79":0.03848,"80":0.02566,"81":0.01497,"83":0.00855,"84":0.00641,"85":0.00641,"86":0.01497,"87":0.02352,"88":0.0171,"89":0.01283,"90":0.01497,"91":0.03207,"92":0.04276,"93":0.07911,"94":0.04704,"95":0.02779,"96":0.1689,"97":3.04451,"98":7.74597,"99":0.00641,"100":0.00641,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 29 30 31 32 33 35 36 37 41 42 43 44 45 46 47 48 51 53 54 57 58 59 60 61 62 68 101"},F:{"28":0.00855,"67":0.00855,"77":0.00428,"78":0.00214,"79":0.00641,"80":0.00641,"81":0.00214,"82":0.05559,"83":0.29932,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01069,"13":0.00428,"14":0.00641,"15":0.00855,"16":0.01069,"17":0.0171,"18":0.04062,"84":0.00855,"85":0.00214,"89":0.00641,"90":0.00214,"91":0.00428,"92":0.00855,"93":0.00214,"94":0.00641,"95":0.03207,"96":0.03635,"97":0.53664,"98":1.69757,_:"79 80 81 83 86 87 88"},E:{"4":0,"13":0.02138,"14":0.06842,"15":0.04917,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00641,"11.1":0.01069,"12.1":0.02138,"13.1":0.09835,"14.1":0.2758,"15.1":0.14752,"15.2-15.3":0.36346,"15.4":0.00428},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00219,"6.0-6.1":0.00219,"7.0-7.1":0.01094,"8.1-8.4":0.00875,"9.0-9.2":0.00547,"9.3":0.09842,"10.0-10.2":0.00328,"10.3":0.06342,"11.0-11.2":0.01422,"11.3-11.4":0.02187,"12.0-12.1":0.02624,"12.2-12.5":0.60908,"13.0-13.1":0.04483,"13.2":0.01094,"13.3":0.07764,"13.4-13.7":0.17715,"14.0-14.4":0.56862,"14.5-14.8":1.93878,"15.0-15.1":1.61729,"15.2-15.3":5.6053,"15.4":0.02296},P:{"4":0.30271,"5.0-5.4":0.05095,"6.2-6.4":0.01009,"7.2-7.4":0.55497,"8.2":0.01009,"9.2":0.05045,"10.1":0.05045,"11.1-11.2":0.23208,"12.0":0.15136,"13.0":0.3128,"14.0":0.37334,"15.0":0.36325,"16.0":6.45786},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00122,"4.2-4.3":0.00405,"4.4":0,"4.4.3-4.4.4":0.03405},A:{"11":0.31642,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.51896},Q:{"10.4":0.00786},O:{"0":0.58973},H:{"0":3.58065},L:{"0":57.61738},S:{"2.5":0}}; +module.exports={C:{"34":0.01478,"52":0.03168,"58":0.00422,"60":0.00634,"78":0.00634,"87":0.00422,"88":0.00634,"91":0.01056,"93":0.00211,"94":0.00422,"95":0.00422,"97":0.00211,"98":0.00422,"99":0.00634,"100":0.08659,"101":0.6336,"102":0.02957,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 89 90 92 96 103 104 3.5 3.6"},D:{"28":0.00845,"34":0.00422,"38":0.00422,"39":0.00211,"40":0.00211,"49":0.02746,"50":0.00422,"52":0.01056,"55":0.00422,"63":0.00634,"65":0.00422,"67":0.00634,"69":0.02534,"70":0.0169,"71":0.00211,"72":0.00211,"73":0.00211,"74":0.01056,"75":0.00211,"76":0.00211,"77":0.00211,"78":0.00422,"79":0.02746,"80":0.01056,"81":0.02112,"83":0.00634,"84":0.00845,"85":0.00634,"86":0.01056,"87":0.01478,"88":0.01056,"89":0.00634,"90":0.00845,"91":0.01901,"92":0.04224,"93":0.00845,"94":0.01267,"95":0.01267,"96":0.02746,"97":0.02534,"98":0.03168,"99":0.04435,"100":0.13728,"101":0.60403,"102":8.8345,"103":0.76032,"104":0.00422,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 35 36 37 41 42 43 44 45 46 47 48 51 53 54 56 57 58 59 60 61 62 64 66 68 105 106"},F:{"28":0.01267,"70":0.00634,"77":0.00211,"78":0.00211,"79":0.00422,"85":0.00845,"86":0.07814,"87":0.27878,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00845,"13":0.00422,"14":0.00422,"15":0.00845,"16":0.00634,"17":0.01056,"18":0.02534,"84":0.00845,"85":0.00211,"89":0.00422,"90":0.00211,"91":0.00211,"92":0.00634,"95":0.00845,"96":0.00422,"97":0.00845,"98":0.00634,"99":0.01901,"100":0.02746,"101":0.27034,"102":1.6009,"103":0.29357,_:"79 80 81 83 86 87 88 93 94"},E:{"4":0,"13":0.00845,"14":0.04435,"15":0.0169,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 16.0","10.1":0.00422,"11.1":0.00845,"12.1":0.01901,"13.1":0.0697,"14.1":0.13517,"15.1":0.03168,"15.2-15.3":0.02957,"15.4":0.1943,"15.5":0.53856},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00444,"6.0-6.1":0.00111,"7.0-7.1":0.00777,"8.1-8.4":0.00777,"9.0-9.2":0.00333,"9.3":0.08876,"10.0-10.2":0.00222,"10.3":0.05104,"11.0-11.2":0.0122,"11.3-11.4":0.01109,"12.0-12.1":0.01109,"12.2-12.5":0.51924,"13.0-13.1":0.02774,"13.2":0.00999,"13.3":0.03772,"13.4-13.7":0.10873,"14.0-14.4":0.36058,"14.5-14.8":0.86762,"15.0-15.1":0.28403,"15.2-15.3":0.55918,"15.4":1.61098,"15.5":6.4661,"16.0":0.01553},P:{"4":0.22323,"5.0-5.4":0.01015,"6.2-6.4":0.11237,"7.2-7.4":0.55808,"8.2":0.03063,"9.2":0.02029,"10.1":0.03044,"11.1-11.2":0.1725,"12.0":0.08118,"13.0":0.16235,"14.0":0.25367,"15.0":0.13191,"16.0":0.76102,"17.0":6.28096},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0015,"4.2-4.3":0.00499,"4.4":0,"4.4.3-4.4.4":0.03295},A:{"11":0.16474,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.04966,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0.00789},O:{"0":0.62323},H:{"0":3.57755},L:{"0":59.04733},S:{"2.5":0},R:{_:"0"},M:{"0":0.55223}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZM.js index 298d5f76e44145..82dc70858d10a7 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZM.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZM.js @@ -1 +1 @@ -module.exports={C:{"27":0.00266,"31":0.00797,"34":0.00531,"37":0.00797,"38":0.00266,"43":0.00531,"45":0.00266,"46":0.00266,"47":0.00797,"48":0.00266,"52":0.01328,"68":0.00531,"69":0.00266,"72":0.00531,"78":0.01328,"79":0.00531,"88":0.00531,"91":0.02656,"92":0.00266,"93":0.00266,"94":0.00797,"95":0.02125,"96":0.51261,"97":0.91101,"98":0.04781,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 32 33 35 36 39 40 41 42 44 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 70 71 73 74 75 76 77 80 81 82 83 84 85 86 87 89 90 99 3.5 3.6"},D:{"11":0.00531,"34":0.00266,"38":0.00531,"39":0.00266,"43":0.00531,"49":0.01859,"50":0.01328,"51":0.00266,"55":0.00531,"57":0.00531,"58":0.00266,"59":0.00266,"62":0.00531,"63":0.00797,"65":0.00531,"66":0.00531,"67":0.00531,"68":0.00797,"69":0.00531,"70":0.00266,"71":0.03984,"72":0.00266,"73":0.03718,"74":0.00797,"75":0.00531,"76":0.00797,"77":0.01594,"78":0.00797,"79":0.02125,"80":0.01328,"81":0.03718,"83":0.02656,"84":0.01859,"85":0.00531,"86":0.05578,"87":0.0664,"88":0.02656,"89":0.03187,"90":0.06109,"91":0.03984,"92":0.05046,"93":0.04781,"94":0.04515,"95":0.05843,"96":0.43027,"97":3.8273,"98":8.39562,"99":0.02125,"100":0.00531,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 40 41 42 44 45 46 47 48 52 53 54 56 60 61 64 101"},F:{"34":0.00531,"36":0.00797,"40":0.00266,"42":0.01062,"45":0.00797,"63":0.00531,"65":0.00266,"67":0.01594,"73":0.00531,"76":0.00266,"77":0.00531,"79":0.03187,"80":0.01062,"81":0.00531,"82":0.1567,"83":1.22973,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 38 39 41 43 44 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 66 68 69 70 71 72 74 75 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.02125},B:{"12":0.08234,"13":0.03187,"14":0.03453,"15":0.02656,"16":0.0239,"17":0.03984,"18":0.12218,"80":0.00266,"84":0.02656,"85":0.02125,"86":0.00531,"88":0.00266,"89":0.03187,"90":0.03453,"91":0.00797,"92":0.04515,"93":0.01328,"94":0.01594,"95":0.03187,"96":0.07968,"97":0.61885,"98":1.78749,_:"79 81 83 87"},E:{"4":0,"13":0.02656,"14":0.03984,"15":0.01062,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 15.4","5.1":0.02656,"9.1":0.00266,"10.1":0.01859,"11.1":0.01328,"12.1":0.01328,"13.1":0.05046,"14.1":0.14077,"15.1":0.09562,"15.2-15.3":0.10358},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01342,"6.0-6.1":0,"7.0-7.1":0.00992,"8.1-8.4":0,"9.0-9.2":0.00058,"9.3":0.1126,"10.0-10.2":0.01925,"10.3":0.15052,"11.0-11.2":0.06943,"11.3-11.4":0.05076,"12.0-12.1":0.03325,"12.2-12.5":1.19306,"13.0-13.1":0.02567,"13.2":0.00642,"13.3":0.11551,"13.4-13.7":0.20361,"14.0-14.4":0.58341,"14.5-14.8":0.89728,"15.0-15.1":0.85236,"15.2-15.3":1.49002,"15.4":0.00408},P:{"4":0.59599,"5.0-5.4":0.01028,"6.2-6.4":0.0302,"7.2-7.4":0.12331,"8.2":0.02019,"9.2":0.06165,"10.1":0.02055,"11.1-11.2":0.03083,"12.0":0.02055,"13.0":0.10276,"14.0":0.10276,"15.0":0.3391,"16.0":1.1406},I:{"0":0,"3":0,"4":0.00091,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00327,"4.2-4.3":0.00327,"4.4":0,"4.4.3-4.4.4":0.10271},A:{"10":0.01005,"11":0.20774,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.02938},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.09547},Q:{"10.4":0},O:{"0":2.3207},H:{"0":13.43286},L:{"0":53.21928},S:{"2.5":0.02203}}; +module.exports={C:{"34":0.00254,"37":0.00762,"47":0.01016,"52":0.00762,"68":0.00762,"71":0.00254,"72":0.00254,"78":0.01016,"87":0.00254,"88":0.00762,"89":0.00508,"91":0.0254,"95":0.00508,"96":0.00508,"98":0.01016,"99":0.02032,"100":0.14732,"101":1.17602,"102":0.07874,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 73 74 75 76 77 79 80 81 82 83 84 85 86 90 92 93 94 97 103 104 3.5 3.6"},D:{"11":0.00254,"40":0.00508,"42":0.00254,"43":0.00508,"49":0.00508,"50":0.00508,"51":0.02286,"53":0.00508,"55":0.00254,"57":0.00508,"63":0.01524,"64":0.02286,"65":0.00508,"66":0.00254,"67":0.00254,"68":0.01016,"69":0.00508,"70":0.00762,"71":0.01778,"73":0.02794,"74":0.00508,"75":0.00508,"76":0.0254,"77":0.01524,"78":0.0127,"79":0.01778,"80":0.02286,"81":0.04318,"83":0.0127,"84":0.01016,"85":0.00762,"86":0.04064,"87":0.04064,"88":0.02032,"89":0.01524,"90":0.01778,"91":0.02794,"92":0.01778,"93":0.04318,"94":0.02032,"95":0.02794,"96":0.0508,"97":0.04318,"98":0.0508,"99":0.07874,"100":0.23876,"101":0.72898,"102":8.18896,"103":0.76454,"104":0.01016,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 44 45 46 47 48 52 54 56 58 59 60 61 62 72 105 106"},F:{"28":0.00254,"34":0.00254,"36":0.00254,"42":0.01016,"70":0.01016,"77":0.00508,"79":0.02032,"81":0.00254,"82":0.00508,"84":0.01778,"85":0.04826,"86":0.09906,"87":0.99314,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 78 80 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0635,"13":0.0254,"14":0.0127,"15":0.0254,"16":0.03048,"17":0.0381,"18":0.11176,"84":0.02286,"85":0.0127,"88":0.00254,"89":0.01778,"90":0.0254,"92":0.04826,"93":0.01524,"94":0.00254,"95":0.00508,"96":0.0127,"97":0.01778,"98":0.0127,"99":0.03048,"100":0.0508,"101":0.38608,"102":1.6764,"103":0.33782,_:"79 80 81 83 86 87 91"},E:{"4":0,"13":0.01016,"14":0.01778,_:"0 5 6 7 8 9 10 11 12 15 3.1 3.2 6.1 7.1 9.1 16.0","5.1":0.01016,"10.1":0.00762,"11.1":0.0127,"12.1":0.00762,"13.1":0.02794,"14.1":0.03556,"15.1":0.01016,"15.2-15.3":0.01524,"15.4":0.0635,"15.5":0.08636},G:{"8":0.00167,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00223,"5.0-5.1":0.00446,"6.0-6.1":0,"7.0-7.1":0.02342,"8.1-8.4":0,"9.0-9.2":0.00056,"9.3":0.07808,"10.0-10.2":0.00502,"10.3":0.09704,"11.0-11.2":0.02008,"11.3-11.4":0.01729,"12.0-12.1":0.02063,"12.2-12.5":1.01052,"13.0-13.1":0.0145,"13.2":0.0039,"13.3":0.03179,"13.4-13.7":0.09313,"14.0-14.4":0.44671,"14.5-14.8":0.56103,"15.0-15.1":0.35469,"15.2-15.3":0.4099,"15.4":0.79247,"15.5":1.55984,"16.0":0.00948},P:{"4":0.27027,"5.0-5.4":0.06074,"6.2-6.4":0.01012,"7.2-7.4":0.13514,"8.2":0.02141,"9.2":0.03119,"10.1":0.04049,"11.1-11.2":0.02079,"12.0":0.02079,"13.0":0.09356,"14.0":0.06237,"15.0":0.06237,"16.0":0.30146,"17.0":0.8524},I:{"0":0,"3":0,"4":0.00199,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00099,"4.2-4.3":0.00274,"4.4":0,"4.4.3-4.4.4":0.07635},A:{"8":0.00862,"9":0.00287,"10":0.00862,"11":0.0891,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0.00746},Q:{"10.4":0.01492},O:{"0":2.28307},H:{"0":14.19782},L:{"0":57.06293},S:{"2.5":0.00746},R:{_:"0"},M:{"0":0.17906}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZW.js index 0a1dc08d0c8cbd..44411a17fe117c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZW.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZW.js @@ -1 +1 @@ -module.exports={C:{"41":0.00415,"43":0.00829,"47":0.00829,"48":0.00829,"52":0.02073,"57":0.02073,"60":0.00415,"69":0.00829,"72":0.01658,"78":0.0539,"80":0.00415,"82":0.00415,"84":0.02073,"85":0.00415,"87":0.01244,"88":0.03317,"89":0.02073,"90":0.00415,"91":0.02488,"92":0.01244,"93":0.02488,"94":0.03317,"95":0.04975,"96":1.23551,"97":1.8118,"98":0.11609,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 44 45 46 49 50 51 53 54 55 56 58 59 61 62 63 64 65 66 67 68 70 71 73 74 75 76 77 79 81 83 86 99 3.5 3.6"},D:{"34":0.00415,"37":0.00829,"49":0.02488,"58":0.01244,"60":0.00415,"63":0.02073,"64":0.00829,"65":0.00415,"66":0.01244,"67":0.00829,"68":0.00415,"69":0.01244,"70":0.02073,"71":0.00415,"72":0.00415,"73":0.01244,"74":0.06219,"75":0.00829,"76":0.02073,"77":0.01658,"78":0.01244,"79":0.06219,"80":0.02073,"81":0.02488,"83":0.02902,"84":0.01658,"85":0.02073,"86":0.04561,"87":0.04561,"88":0.01658,"89":0.04561,"90":0.02902,"91":0.07877,"92":0.06219,"93":0.04975,"94":0.07877,"95":0.08707,"96":0.44362,"97":6.38484,"98":14.22493,"99":0.02902,"100":0.02488,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 61 62 101"},F:{"36":0.00829,"67":0.01658,"77":0.00415,"79":0.02073,"80":0.07877,"81":0.01658,"82":0.2612,"83":1.57133,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 76 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.07048,"13":0.04975,"14":0.02488,"15":0.03317,"16":0.0539,"17":0.0539,"18":0.15755,"84":0.02902,"85":0.01658,"89":0.03731,"90":0.02073,"91":0.00829,"92":0.04975,"93":0.01244,"94":0.01658,"95":0.02902,"96":0.0995,"97":1.08211,"98":3.09706,_:"79 80 81 83 86 87 88"},E:{"4":0,"12":0.00415,"13":0.03317,"14":0.08292,"15":0.04561,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 10.1 15.4","5.1":0.00415,"9.1":0.00415,"11.1":0.00829,"12.1":0.00829,"13.1":0.09536,"14.1":0.41875,"15.1":0.14511,"15.2-15.3":0.38972},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00072,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01878,"8.1-8.4":0.00144,"9.0-9.2":0,"9.3":0.1322,"10.0-10.2":0.00361,"10.3":0.08524,"11.0-11.2":0.0065,"11.3-11.4":0.01734,"12.0-12.1":0.02384,"12.2-12.5":0.5389,"13.0-13.1":0.02384,"13.2":0.01156,"13.3":0.08307,"13.4-13.7":0.10547,"14.0-14.4":0.54323,"14.5-14.8":1.35953,"15.0-15.1":1.22516,"15.2-15.3":3.0304,"15.4":0.013},P:{"4":0.25107,"5.0-5.4":0.01028,"6.2-6.4":0.0302,"7.2-7.4":0.15692,"8.2":0.02019,"9.2":0.06165,"10.1":0.02055,"11.1-11.2":0.05231,"12.0":0.03138,"13.0":0.11507,"14.0":0.10461,"15.0":0.12554,"16.0":1.42274},I:{"0":0,"3":0,"4":0.00035,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00105,"4.2-4.3":0.00805,"4.4":0,"4.4.3-4.4.4":0.1369},A:{"10":0.01244,"11":0.18242,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.15806},Q:{"10.4":0.04098},O:{"0":1.70351},H:{"0":9.08919},L:{"0":43.06018},S:{"2.5":0}}; +module.exports={C:{"44":0.0081,"47":0.00405,"48":0.00405,"49":0.0081,"52":0.01215,"56":0.0081,"57":0.01215,"59":0.00405,"72":0.0081,"78":0.0162,"84":0.00405,"87":0.01215,"88":0.02834,"89":0.02025,"90":0.02025,"91":0.02834,"94":0.0081,"95":0.0081,"97":0.0081,"98":0.01215,"99":0.05669,"100":0.30772,"101":1.97996,"102":0.15791,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 50 51 53 54 55 58 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 92 93 96 103 104 3.5 3.6"},D:{"11":0.0081,"47":0.0081,"49":0.0081,"50":0.00405,"55":0.0081,"57":0.00405,"58":0.01215,"63":0.02025,"64":0.00405,"65":0.0081,"66":0.00405,"67":0.00405,"69":0.01215,"70":0.0081,"71":0.0081,"74":0.03644,"75":0.02025,"76":0.02025,"77":0.00405,"78":0.01215,"79":0.04454,"80":0.0162,"81":0.02429,"83":0.02834,"84":0.0081,"85":0.02025,"86":0.03239,"87":0.02834,"88":0.02025,"89":0.02025,"90":0.0162,"91":0.04049,"92":0.06074,"93":0.03644,"94":0.04049,"95":0.04049,"96":0.06074,"97":0.07288,"98":0.10932,"99":0.11742,"100":0.31177,"101":1.0163,"102":17.53217,"103":1.405,"104":0.01215,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 51 52 53 54 56 59 60 61 62 68 72 73 105 106"},F:{"36":0.01215,"37":0.01215,"40":0.00405,"42":0.0081,"70":0.00405,"79":0.02025,"82":0.0081,"83":0.0162,"84":0.01215,"85":0.04049,"86":0.17816,"87":1.26329,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 38 39 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.07288,"13":0.02834,"14":0.02834,"15":0.02834,"16":0.04049,"17":0.02834,"18":0.16196,"84":0.02834,"85":0.02429,"89":0.02025,"90":0.0162,"91":0.00405,"92":0.09718,"94":0.00405,"95":0.0081,"96":0.03239,"97":0.02025,"98":0.02834,"99":0.04049,"100":0.04454,"101":0.54662,"102":2.69259,"103":0.56281,_:"79 80 81 83 86 87 88 93"},E:{"4":0,"12":0.00405,"13":0.01215,"14":0.03239,"15":0.0162,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.02429,"12.1":0.0081,"13.1":0.05669,"14.1":0.25509,"15.1":0.02834,"15.2-15.3":0.05669,"15.4":0.1984,"15.5":0.31582},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00133,"5.0-5.1":0.00066,"6.0-6.1":0,"7.0-7.1":0.00597,"8.1-8.4":0,"9.0-9.2":0.00464,"9.3":0.04908,"10.0-10.2":0.00066,"10.3":0.03847,"11.0-11.2":0.01061,"11.3-11.4":0.00796,"12.0-12.1":0.0199,"12.2-12.5":0.4291,"13.0-13.1":0.01194,"13.2":0.00597,"13.3":0.04841,"13.4-13.7":0.09749,"14.0-14.4":0.41119,"14.5-14.8":0.61148,"15.0-15.1":0.34155,"15.2-15.3":0.5498,"15.4":1.05715,"15.5":2.91082,"16.0":0.00928},P:{"4":0.15875,"5.0-5.4":0.06074,"6.2-6.4":0.01012,"7.2-7.4":0.1905,"8.2":0.02141,"9.2":0.03119,"10.1":0.04049,"11.1-11.2":0.05292,"12.0":0.04233,"13.0":0.05292,"14.0":0.07408,"15.0":0.05292,"16.0":0.254,"17.0":1.07948},I:{"0":0,"3":0,"4":0.00078,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00157,"4.2-4.3":0.00627,"4.4":0,"4.4.3-4.4.4":0.11635},A:{"10":0.00405,"11":0.10527,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0.04761},O:{"0":1.66628},H:{"0":7.26225},L:{"0":49.51333},S:{"2.5":0.00595},R:{_:"0"},M:{"0":0.21424}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-af.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-af.js index ef7f0d10e955a9..5ee23ca0de0f28 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-af.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-af.js @@ -1 +1 @@ -module.exports={C:{"2":0.09788,"15":0.1015,"18":0.1015,"21":0.1015,"23":0.1015,"25":0.203,"30":0.1015,"43":0.00363,"47":0.00363,"51":0.1015,"52":0.05438,"60":0.00363,"72":0.00725,"78":0.01088,"81":0.00363,"84":0.01813,"87":0.00363,"88":0.00725,"89":0.01088,"91":0.02538,"92":0.00725,"93":0.00363,"94":0.01088,"95":0.02175,"96":5.45563,"97":10.69375,"98":0.029,_:"3 4 5 6 7 8 9 10 11 12 13 14 16 17 19 20 22 24 26 27 28 29 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 48 49 50 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 82 83 85 86 90 99 3.5 3.6"},D:{"19":0.1015,"24":0.3045,"30":0.1015,"33":0.10875,"35":0.203,"38":0.00725,"40":0.00725,"43":0.05438,"47":0.00363,"49":0.03988,"50":0.00363,"53":0.00363,"54":0.1015,"55":0.10513,"56":0.5075,"58":0.00363,"60":0.00363,"63":0.01088,"64":0.00725,"65":0.00725,"66":0.00725,"67":0.0145,"68":0.00725,"69":0.02175,"70":0.01813,"71":0.00725,"72":0.01088,"73":0.00363,"74":0.00725,"75":0.00725,"76":0.00725,"77":0.00725,"78":0.00725,"79":0.058,"80":0.01813,"81":0.02175,"83":0.01813,"84":0.02175,"85":0.01813,"86":0.03988,"87":0.06888,"88":0.02175,"89":0.02538,"90":0.02175,"91":0.03988,"92":0.05075,"93":0.09788,"94":0.03988,"95":0.0435,"96":0.22838,"97":2.929,"98":6.82225,"99":0.00725,"100":0.01088,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 25 26 27 28 29 31 32 34 36 37 39 41 42 44 45 46 48 51 52 57 59 61 62 101"},F:{"28":0.00363,"43":0.1015,"64":0.00363,"72":0.00363,"73":0.00363,"79":0.01088,"80":0.01088,"81":0.00725,"82":0.08338,"83":0.42775,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 70 71 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0.1015},B:{"12":0.01088,"13":0.00363,"14":0.00363,"15":0.00363,"16":0.00725,"17":0.00725,"18":0.029,"84":0.00725,"85":0.00363,"89":0.00725,"90":0.00363,"92":0.01088,"94":0.00363,"95":0.0145,"96":0.03263,"97":0.31175,"98":0.957,_:"79 80 81 83 86 87 88 91 93"},E:{"4":0,"5":0.1015,"13":0.01813,"14":0.03988,"15":0.02538,_:"0 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1 15.4","5.1":0.00363,"9.1":0.00363,"11.1":0.00725,"12.1":0.01088,"13.1":0.0435,"14.1":0.10875,"15.1":0.06163,"15.2-15.3":0.12325},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00326,"6.0-6.1":1.88832,"7.0-7.1":0.02202,"8.1-8.4":0.00326,"9.0-9.2":0.00245,"9.3":0.0571,"10.0-10.2":0.26265,"10.3":0.08565,"11.0-11.2":0.04813,"11.3-11.4":0.03915,"12.0-12.1":0.03915,"12.2-12.5":0.91357,"13.0-13.1":0.02936,"13.2":0.01468,"13.3":0.07096,"13.4-13.7":0.18435,"14.0-14.4":0.65092,"14.5-14.8":0.9307,"15.0-15.1":0.82058,"15.2-15.3":2.07674,"15.4":0.0106},P:{"4":0.28151,"5.0-5.4":0.01028,"6.2-6.4":0.0302,"7.2-7.4":0.1981,"8.2":0.02019,"9.2":0.0417,"10.1":0.02055,"11.1-11.2":0.13554,"12.0":0.0417,"13.0":0.14597,"14.0":0.17725,"15.0":0.16682,"16.0":2.04354},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00493,"4.2-4.3":0.06896,"4.4":0,"4.4.3-4.4.4":0.24487},A:{"8":0.203,"9":0.203,"10":0.203,"11":0.116,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00638},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.19763},Q:{"10.4":0},O:{"0":0.46538},H:{"0":7.09768},L:{"0":45.066},S:{"2.5":0.01275}}; +module.exports={C:{"2":0.00234,"3":0.00935,"34":0.00701,"43":0.00467,"47":0.00467,"48":0.00467,"52":0.07011,"56":0.00467,"57":0.00234,"58":0.00234,"60":0.00234,"65":0.00467,"66":0.00234,"68":0.00234,"70":0.00234,"72":0.00701,"78":0.01169,"81":0.00234,"84":0.00935,"87":0.00234,"88":0.00701,"89":0.00701,"91":0.02804,"92":0.00234,"93":0.00467,"94":0.00701,"95":0.00935,"96":0.00467,"97":0.00701,"98":0.01402,"99":0.03739,"100":0.17995,"101":1.24095,"102":0.07712,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 44 45 46 49 50 51 53 54 55 59 61 62 63 64 67 69 71 73 74 75 76 77 79 80 82 83 85 86 90 103 104","3.5":0.00935,"3.6":0.01169},D:{"28":0.00234,"33":0.00467,"34":0.00234,"38":0.00467,"40":0.00701,"43":0.05609,"46":0.00467,"47":0.00467,"49":0.03506,"50":0.00467,"52":0.00467,"53":0.00467,"55":0.00467,"56":0.00701,"57":0.00234,"58":0.00467,"60":0.00467,"61":0.00234,"62":0.00467,"63":0.00935,"64":0.00701,"65":0.00701,"66":0.00234,"67":0.02337,"68":0.00467,"69":0.02571,"70":0.01169,"71":0.00701,"72":0.00935,"73":0.00701,"74":0.01402,"75":0.00701,"76":0.00935,"77":0.00935,"78":0.00935,"79":0.0631,"80":0.02103,"81":0.02571,"83":0.01636,"84":0.01636,"85":0.02571,"86":0.07478,"87":0.04908,"88":0.0187,"89":0.02804,"90":0.01636,"91":0.03272,"92":0.03973,"93":0.02103,"94":0.02103,"95":0.02571,"96":0.05141,"97":0.05141,"98":0.08413,"99":0.0818,"100":0.17294,"101":0.70811,"102":10.84368,"103":0.96284,"104":0.01402,"105":0.00234,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 35 36 37 39 41 42 44 45 48 51 54 59 106"},F:{"28":0.00701,"36":0.00234,"64":0.00467,"70":0.00467,"72":0.00467,"73":0.00467,"79":0.01169,"80":0.00467,"81":0.00701,"82":0.00935,"83":0.00467,"84":0.01169,"85":0.03038,"86":0.12152,"87":0.43936,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 71 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.01402,"13":0.00701,"14":0.00467,"15":0.00701,"16":0.00701,"17":0.00935,"18":0.03973,"84":0.00935,"85":0.00467,"89":0.00701,"90":0.00701,"91":0.00234,"92":0.0187,"95":0.00467,"96":0.00701,"97":0.00701,"98":0.00935,"99":0.01636,"100":0.02337,"101":0.29446,"102":1.43024,"103":0.26174,_:"79 80 81 83 86 87 88 93 94"},E:{"4":0,"12":0.00234,"13":0.00935,"14":0.03506,"15":0.01169,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 16.0","5.1":0.00467,"10.1":0.00467,"11.1":0.00935,"12.1":0.01169,"13.1":0.05141,"14.1":0.08881,"15.1":0.02103,"15.2-15.3":0.02103,"15.4":0.10517,"15.5":0.2524},G:{"8":0.00081,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00161,"5.0-5.1":0.00322,"6.0-6.1":0.00081,"7.0-7.1":0.01852,"8.1-8.4":0.00322,"9.0-9.2":0.00322,"9.3":0.06604,"10.0-10.2":0.00725,"10.3":0.0749,"11.0-11.2":0.0306,"11.3-11.4":0.02577,"12.0-12.1":0.03463,"12.2-12.5":0.82632,"13.0-13.1":0.02819,"13.2":0.01128,"13.3":0.06282,"13.4-13.7":0.13853,"14.0-14.4":0.5694,"14.5-14.8":0.74256,"15.0-15.1":0.36242,"15.2-15.3":0.52913,"15.4":1.15008,"15.5":3.32702,"16.0":0.02013},P:{"4":0.25733,"5.0-5.4":0.06074,"6.2-6.4":0.01012,"7.2-7.4":0.27791,"8.2":0.02141,"9.2":0.03088,"10.1":0.01029,"11.1-11.2":0.11322,"12.0":0.04117,"13.0":0.12352,"14.0":0.16469,"15.0":0.08234,"16.0":0.43231,"17.0":2.63501},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00352,"4.2-4.3":0.01174,"4.4":0,"4.4.3-4.4.4":0.11501},A:{"8":0.00475,"9":0.00475,"11":0.13071,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.67434},H:{"0":6.20288},L:{"0":60.20893},S:{"2.5":0.01533},R:{_:"0"},M:{"0":0.28353}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-an.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-an.js index 076c254775031c..0eb1b0fb81e304 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-an.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-an.js @@ -1 +1 @@ -module.exports={C:{"55":0.0083,"89":0.0083,"91":0.03595,"96":0.5613,"97":0.18249,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 90 92 93 94 95 98 99 3.5 3.6"},D:{"49":0.0083,"71":0.02765,"94":0.0083,"96":0.0083,"97":1.73089,"98":1.20554,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 95 99 100 101"},F:{"82":0.01936,"83":0.07189,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"92":0.0083,"94":0.03595,"98":0.19908,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 93 95 96 97"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 14.1","13.1":0.01936,"15.1":1.22213,"15.2-15.3":12.48951,"15.4":1.91891},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00607,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0.00607,"13.4-13.7":0,"14.0-14.4":0.07892,"14.5-14.8":3.83658,"15.0-15.1":4.37686,"15.2-15.3":49.40205,"15.4":2.98063},P:{"4":0.02035,"5.0-5.4":0.01028,"6.2-6.4":0.0302,"7.2-7.4":0.1981,"8.2":0.02019,"9.2":0.05087,"10.1":0.02055,"11.1-11.2":0.13554,"12.0":0.0417,"13.0":0.14597,"14.0":0.17725,"15.0":0.02035,"16.0":0.55958},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.13023},Q:{"10.4":0.02171},O:{"0":0.20258},H:{"0":0.28083},L:{"0":10.55679},S:{"2.5":0}}; +module.exports={C:{_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 3.5 3.6"},D:{"101":0.16467,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 102 103 104 105 106"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1","15.1":1.79407,"15.2-15.3":2.44409,"15.4":51.46465,"15.5":23.01089,"16.0":1.57739},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0,"15.0-15.1":0.78034,"15.2-15.3":5.13165,"15.4":0.16673,"15.5":1.00446,"16.0":6.24681},P:{"4":0.25733,"5.0-5.4":0.06074,"6.2-6.4":0.01012,"7.2-7.4":0.27791,"8.2":0.02141,"9.2":0.03088,"10.1":0.01029,"11.1-11.2":0.11322,"12.0":0.04117,"13.0":0.12352,"14.0":0.16469,"15.0":0.08234,"16.0":0.43231,"17.0":2.63501},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":0},S:{"2.5":0},R:{_:"0"},M:{"0":0}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-as.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-as.js index 6b015728ccd4bf..f29c68aea3d2ba 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-as.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-as.js @@ -1 +1 @@ -module.exports={C:{"34":0.00647,"36":0.01294,"43":0.09384,"47":0.00324,"52":0.06148,"56":0.00971,"60":0.00324,"68":0.00324,"72":0.00647,"75":0.00647,"78":0.01618,"79":0.00324,"80":0.00324,"81":0.00324,"82":0.00324,"84":0.00971,"87":0.01294,"88":0.00971,"89":0.00971,"90":0.00647,"91":0.02265,"92":0.00647,"93":0.00647,"94":0.01294,"95":0.02589,"96":0.48864,"97":0.83165,"98":0.02912,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 38 39 40 41 42 44 45 46 48 49 50 51 53 54 55 57 58 59 61 62 63 64 65 66 67 69 70 71 73 74 76 77 83 85 86 99 3.5 3.6"},D:{"22":0.00971,"26":0.00324,"34":0.01618,"35":0.00324,"38":0.0356,"42":0.00647,"47":0.01294,"48":0.00971,"49":0.05501,"53":0.02265,"55":0.00971,"56":0.00971,"57":0.00971,"58":0.00647,"61":0.00647,"62":0.01294,"63":0.01294,"64":0.00647,"65":0.00971,"66":0.00647,"67":0.00971,"68":0.00971,"69":0.0809,"70":0.05825,"71":0.02265,"72":0.05178,"73":0.00971,"74":0.0356,"75":0.03236,"76":0.01294,"77":0.01942,"78":0.02912,"79":0.18122,"80":0.03883,"81":0.03236,"83":0.0453,"84":0.0453,"85":0.03883,"86":0.06472,"87":0.11002,"88":0.02912,"89":0.06148,"90":0.0356,"91":0.05501,"92":0.09384,"93":0.14562,"94":0.07443,"95":0.0809,"96":0.40126,"97":5.80538,"98":14.57818,"99":0.01618,"100":0.01618,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 36 37 39 40 41 43 44 45 46 50 51 52 54 59 60 101"},F:{"28":0.00971,"36":0.00647,"40":0.00647,"46":0.01942,"79":0.00324,"80":0.00324,"82":0.0809,"83":0.37538,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00324,"14":0.00324,"16":0.00324,"17":0.00647,"18":0.02589,"84":0.00647,"85":0.00324,"86":0.00324,"89":0.00971,"90":0.00324,"91":0.00324,"92":0.00971,"94":0.00647,"95":0.00971,"96":0.02912,"97":0.48864,"98":1.86717,_:"13 15 79 80 81 83 87 88 93"},E:{"4":0,"12":0.00324,"13":0.0356,"14":0.13268,"15":0.07119,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1","5.1":0.01942,"9.1":0.01294,"10.1":0.00647,"11.1":0.01294,"12.1":0.02265,"13.1":0.10355,"14.1":0.46922,"15.1":0.21358,"15.2-15.3":0.41744,"15.4":0.00324},G:{"8":0.00104,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0052,"5.0-5.1":0.00623,"6.0-6.1":0.00623,"7.0-7.1":0.02598,"8.1-8.4":0.01143,"9.0-9.2":0.02182,"9.3":0.07481,"10.0-10.2":0.04156,"10.3":0.08416,"11.0-11.2":0.10287,"11.3-11.4":0.03117,"12.0-12.1":0.04156,"12.2-12.5":0.51121,"13.0-13.1":0.0426,"13.2":0.01455,"13.3":0.07585,"13.4-13.7":0.24418,"14.0-14.4":0.77617,"14.5-14.8":1.99083,"15.0-15.1":1.62716,"15.2-15.3":4.62483,"15.4":0.02805},P:{"4":0.34125,"5.0-5.4":0.01028,"6.2-6.4":0.0302,"7.2-7.4":0.10341,"8.2":0.02019,"9.2":0.03102,"10.1":0.02055,"11.1-11.2":0.09307,"12.0":0.04136,"13.0":0.14477,"14.0":0.15511,"15.0":0.15511,"16.0":1.98545},I:{"0":0,"3":0,"4":0.03949,"2.1":0,"2.2":0,"2.3":0,"4.1":0.02962,"4.2-4.3":0.09872,"4.4":0,"4.4.3-4.4.4":0.56269},A:{"8":0.02586,"9":0.01724,"10":0.00862,"11":0.99998,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.17586},Q:{"10.4":0.4126},O:{"0":1.92098},H:{"0":1.10144},L:{"0":49.86406},S:{"2.5":0.2435}}; +module.exports={C:{"34":0.00592,"36":0.01479,"43":0.04141,"47":0.00296,"52":0.05324,"56":0.00887,"68":0.00296,"71":0.00296,"72":0.00592,"76":0.00592,"78":0.01183,"79":0.00296,"80":0.00296,"81":0.00296,"82":0.00296,"84":0.00296,"87":0.01183,"88":0.00887,"89":0.00592,"90":0.00296,"91":0.02071,"93":0.00296,"94":0.00296,"95":0.00592,"96":0.00592,"97":0.00887,"98":0.00887,"99":0.02662,"100":0.14494,"101":1.06192,"102":0.06803,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 38 39 40 41 42 44 45 46 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 73 74 75 77 83 85 86 92 103 104 3.5 3.6"},D:{"22":0.00592,"26":0.00296,"34":0.01183,"35":0.00592,"38":0.02958,"42":0.00296,"43":0.00296,"47":0.01183,"48":0.00887,"49":0.04437,"53":0.01775,"55":0.00887,"56":0.00887,"57":0.00592,"58":0.00592,"60":0.00296,"61":0.00592,"62":0.00887,"63":0.01183,"64":0.00296,"65":0.00887,"66":0.00592,"67":0.00887,"68":0.00887,"69":0.06803,"70":0.03845,"71":0.02071,"72":0.04437,"73":0.00887,"74":0.02662,"75":0.02366,"76":0.00887,"77":0.01183,"78":0.03254,"79":0.14494,"80":0.03254,"81":0.02958,"83":0.04141,"84":0.0355,"85":0.04437,"86":0.06508,"87":0.07099,"88":0.01775,"89":0.06508,"90":0.02366,"91":0.0355,"92":0.06508,"93":0.01775,"94":0.03845,"95":0.03254,"96":0.0917,"97":0.08282,"98":0.07987,"99":0.09466,"100":0.22777,"101":0.91698,"102":15.71585,"103":1.45534,"104":0.01479,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 36 37 39 40 41 44 45 46 50 51 52 54 59 105 106"},F:{"28":0.00887,"36":0.00592,"40":0.00887,"46":0.01775,"85":0.01183,"86":0.08874,"87":0.25735,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00296,"16":0.00296,"17":0.00592,"18":0.01775,"84":0.00592,"89":0.00887,"91":0.00296,"92":0.00887,"96":0.00592,"97":0.00592,"98":0.00592,"99":0.01183,"100":0.01775,"101":0.23368,"102":1.71268,"103":0.34609,_:"13 14 15 79 80 81 83 85 86 87 88 90 93 94 95"},E:{"4":0,"13":0.02366,"14":0.08282,"15":0.02662,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 16.0","5.1":0.01479,"9.1":0.00592,"10.1":0.00592,"11.1":0.00887,"12.1":0.01479,"13.1":0.07691,"14.1":0.22777,"15.1":0.04437,"15.2-15.3":0.04141,"15.4":0.28693,"15.5":0.6833},G:{"8":0.00101,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00302,"5.0-5.1":0.00503,"6.0-6.1":0.00403,"7.0-7.1":0.01711,"8.1-8.4":0.00805,"9.0-9.2":0.02114,"9.3":0.0604,"10.0-10.2":0.00906,"10.3":0.07147,"11.0-11.2":0.04932,"11.3-11.4":0.02315,"12.0-12.1":0.03523,"12.2-12.5":0.58383,"13.0-13.1":0.02919,"13.2":0.01208,"13.3":0.05436,"13.4-13.7":0.17414,"14.0-14.4":0.51739,"14.5-14.8":0.97641,"15.0-15.1":0.36741,"15.2-15.3":0.56471,"15.4":1.5854,"15.5":4.85183,"16.0":0.02416},P:{"4":0.31072,"5.0-5.4":0.06074,"6.2-6.4":0.01012,"7.2-7.4":0.09322,"8.2":0.02141,"9.2":0.03107,"10.1":0.01029,"11.1-11.2":0.06214,"12.0":0.02071,"13.0":0.10357,"14.0":0.10357,"15.0":0.0725,"16.0":0.27965,"17.0":1.93682},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.04014,"4.2-4.3":0.10704,"4.4":0,"4.4.3-4.4.4":0.65561},A:{"8":0.01653,"9":0.01653,"11":0.85138,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0.30985},O:{"0":1.39432},H:{"0":0.98004},L:{"0":54.87024},S:{"2.5":0.10563},R:{_:"0"},M:{"0":0.16901}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-eu.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-eu.js index 2b844c5696c6a3..78323c11089775 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-eu.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-eu.js @@ -1 +1 @@ -module.exports={C:{"44":0.00515,"48":0.0103,"52":0.10817,"55":0.01545,"56":0.00515,"59":0.0103,"60":0.0103,"66":0.00515,"68":0.0206,"72":0.00515,"77":0.01545,"78":0.09787,"79":0.01545,"80":0.0103,"81":0.05151,"82":0.0103,"83":0.00515,"84":0.03091,"85":0.00515,"86":0.0103,"87":0.0206,"88":0.0206,"89":0.0206,"90":0.05666,"91":0.14938,"92":0.01545,"93":0.0206,"94":0.08242,"95":0.08242,"96":1.74619,"97":2.61156,"98":0.0103,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 49 50 51 53 54 57 58 61 62 63 64 65 67 69 70 71 73 74 75 76 99 3.5 3.6"},D:{"22":0.0103,"38":0.01545,"40":0.03606,"43":0.0103,"47":0.0103,"48":0.0103,"49":0.10302,"51":0.0206,"52":0.0103,"53":0.00515,"54":0.00515,"56":0.0103,"60":0.02576,"62":0.0103,"63":0.0103,"64":0.02576,"65":0.0206,"66":0.03606,"67":0.01545,"68":0.00515,"69":0.06696,"70":0.02576,"71":0.0103,"72":0.03091,"73":0.0103,"74":0.01545,"75":0.19059,"76":0.02576,"77":0.0206,"78":0.03091,"79":0.15968,"80":0.09272,"81":0.03091,"83":0.04636,"84":0.08242,"85":0.11847,"86":0.09272,"87":0.16483,"88":0.04636,"89":0.06181,"90":0.06181,"91":0.08757,"92":0.08242,"93":0.45329,"94":0.20604,"95":0.11847,"96":0.64388,"97":9.22029,"98":18.22424,"99":0.0103,"100":0.01545,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 41 42 44 45 46 50 55 57 58 59 61 101"},F:{"31":0.0206,"36":0.00515,"40":0.01545,"68":0.0103,"77":0.0103,"78":0.00515,"79":0.0103,"80":0.0103,"81":0.00515,"82":0.55631,"83":1.76164,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0103,"15":0.0103,"16":0.00515,"17":0.0103,"18":0.03091,"84":0.00515,"85":0.0103,"86":0.00515,"89":0.00515,"90":0.00515,"91":0.0103,"92":0.01545,"93":0.0103,"94":0.0103,"95":0.03606,"96":0.07211,"97":1.30835,"98":4.29078,_:"13 14 79 80 81 83 87 88"},E:{"4":0,"12":0.00515,"13":0.06181,"14":0.33482,"15":0.20089,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1","5.1":0.0103,"9.1":0.0103,"10.1":0.0103,"11.1":0.04121,"12.1":0.07211,"13.1":0.32451,"14.1":1.12292,"15.1":0.60267,"15.2-15.3":1.26715,"15.4":0.0103},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00311,"6.0-6.1":0.00156,"7.0-7.1":0.014,"8.1-8.4":0.00467,"9.0-9.2":0.01089,"9.3":0.10111,"10.0-10.2":0.00622,"10.3":0.11044,"11.0-11.2":0.02333,"11.3-11.4":0.04044,"12.0-12.1":0.02178,"12.2-12.5":0.55688,"13.0-13.1":0.02489,"13.2":0.00933,"13.3":0.05911,"13.4-13.7":0.19911,"14.0-14.4":0.63776,"14.5-14.8":3.00216,"15.0-15.1":2.24617,"15.2-15.3":8.43093,"15.4":0.042},P:{"4":0.10593,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 10.1","9.2":0.01059,"11.1-11.2":0.06356,"12.0":0.02119,"13.0":0.09534,"14.0":0.11653,"15.0":0.22246,"16.0":2.8072},I:{"0":0,"3":0,"4":0.00572,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00572,"4.2-4.3":0.01,"4.4":0,"4.4.3-4.4.4":0.04645},A:{"8":0.01636,"9":0.01636,"10":0.00545,"11":0.33269,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.35398},Q:{"10.4":0},O:{"0":0.13577},H:{"0":0.40857},L:{"0":28.30804},S:{"2.5":0}}; +module.exports={C:{"48":0.00474,"52":0.09948,"55":0.00474,"56":0.00947,"59":0.00947,"60":0.00474,"66":0.00474,"68":0.02369,"72":0.00474,"77":0.01421,"78":0.07106,"79":0.00947,"80":0.00947,"81":0.03316,"82":0.00947,"83":0.00947,"84":0.00947,"86":0.00947,"87":0.01421,"88":0.01895,"89":0.01421,"90":0.01421,"91":0.13737,"92":0.00947,"93":0.01421,"94":0.0379,"95":0.01421,"96":0.01421,"97":0.01895,"98":0.03316,"99":0.09474,"100":0.59213,"101":4.31067,"102":0.06632,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 57 58 61 62 63 64 65 67 69 70 71 73 74 75 76 85 103 104 3.5 3.6"},D:{"22":0.01421,"34":0.00947,"38":0.01421,"40":0.02842,"47":0.01895,"48":0.00474,"49":0.07579,"51":0.01421,"52":0.00947,"53":0.00474,"54":0.00474,"56":0.00947,"58":0.00474,"59":0.00474,"60":0.02842,"61":0.00947,"62":0.01421,"63":0.01421,"64":0.02369,"65":0.02369,"66":0.04263,"67":0.01421,"68":0.00947,"69":0.06632,"70":0.00947,"71":0.00947,"72":0.00947,"73":0.00474,"74":0.01421,"75":0.20369,"76":0.02369,"77":0.01421,"78":0.02842,"79":0.13737,"80":0.03316,"81":0.02369,"83":0.05211,"84":0.08053,"85":0.13737,"86":0.09,"87":0.11843,"88":0.02369,"89":0.05211,"90":0.03316,"91":0.05684,"92":0.05211,"93":0.05211,"94":0.07106,"95":0.04263,"96":0.10895,"97":0.09,"98":0.11369,"99":0.17053,"100":0.45475,"101":1.89954,"102":21.0607,"103":1.35952,"104":0.00947,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 41 42 43 44 45 46 50 55 57 105 106"},F:{"31":0.02369,"36":0.00474,"40":0.01895,"46":0.00947,"68":0.00947,"71":0.00474,"82":0.00474,"84":0.00947,"85":0.09474,"86":0.71529,"87":1.34057,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 72 73 74 75 76 77 78 79 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00947,"17":0.00947,"18":0.02842,"84":0.00474,"85":0.00947,"86":0.00474,"91":0.00474,"92":0.01421,"95":0.00474,"96":0.01421,"97":0.01421,"98":0.01421,"99":0.02369,"100":0.05211,"101":0.65371,"102":4.19225,"103":0.68687,_:"12 13 14 16 79 80 81 83 87 88 89 90 93 94"},E:{"4":0,"13":0.03316,"14":0.17527,"15":0.06158,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.00947,"10.1":0.00947,"11.1":0.03316,"12.1":0.05211,"13.1":0.23685,"14.1":0.50686,"15.1":0.11369,"15.2-15.3":0.10895,"15.4":0.6916,"15.5":1.87112},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00784,"6.0-6.1":0.00157,"7.0-7.1":0.01569,"8.1-8.4":0.00471,"9.0-9.2":0.01255,"9.3":0.09099,"10.0-10.2":0.00471,"10.3":0.09727,"11.0-11.2":0.02981,"11.3-11.4":0.03765,"12.0-12.1":0.01883,"12.2-12.5":0.51458,"13.0-13.1":0.01883,"13.2":0.00941,"13.3":0.04236,"13.4-13.7":0.13963,"14.0-14.4":0.40162,"14.5-14.8":1.33822,"15.0-15.1":0.34671,"15.2-15.3":0.82835,"15.4":2.28266,"15.5":9.37226,"16.0":0.03295},P:{"4":0.12538,"5.0-5.4":0.06074,"6.2-6.4":0.01012,"7.2-7.4":0.01045,"8.2":0.02141,"9.2":0.03107,"10.1":0.01029,"11.1-11.2":0.04179,"12.0":0.0209,"13.0":0.06269,"14.0":0.07314,"15.0":0.22986,"16.0":0.21942,"17.0":2.85241},I:{"0":0,"3":0,"4":0.00563,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00805,"4.2-4.3":0.01046,"4.4":0,"4.4.3-4.4.4":0.04426},A:{"8":0.00983,"9":0.01475,"11":0.23596,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.13155},H:{"0":0.60279},L:{"0":32.0116},S:{"2.5":0},R:{_:"0"},M:{"0":0.45779}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-na.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-na.js index 4742e98e58fa45..f53b2e7958b462 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-na.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-na.js @@ -1 +1 @@ -module.exports={C:{"2":0.00482,"4":0.06749,"11":0.00964,"38":0.00482,"43":0.00482,"44":0.02411,"45":0.00482,"48":0.00482,"52":0.03375,"54":0.00964,"55":0.01928,"63":0.01928,"68":0.00482,"72":0.00482,"78":0.10124,"79":0.00482,"80":0.00482,"81":0.00964,"82":0.00964,"83":0.00482,"84":0.00482,"85":0.00482,"86":0.00482,"87":0.01446,"88":0.01446,"89":0.01446,"90":0.00964,"91":0.08678,"92":0.00482,"93":0.01446,"94":0.06749,"95":0.05785,"96":0.89189,"97":1.4222,"98":0.00482,_:"3 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 47 49 50 51 53 56 57 58 59 60 61 62 64 65 66 67 69 70 71 73 74 75 76 77 99 3.5 3.6"},D:{"35":0.01446,"38":0.00482,"40":0.01928,"43":0.00482,"46":0.00482,"47":0.00964,"48":0.06267,"49":0.06749,"50":0.00482,"52":0.00482,"56":0.07232,"58":0.00482,"59":0.00964,"60":0.04821,"63":0.00964,"64":0.03857,"65":0.01446,"66":0.03857,"67":0.01928,"68":0.00964,"69":0.01928,"70":0.06267,"71":0.00482,"72":0.24587,"73":0.00482,"74":0.02411,"75":0.01928,"76":0.19284,"77":0.01446,"78":0.04821,"79":0.3664,"80":0.07714,"81":0.06267,"83":0.28926,"84":0.11088,"85":0.08678,"86":0.07714,"87":0.14463,"88":0.04821,"89":0.07232,"90":0.07714,"91":0.1832,"92":0.13981,"93":0.32783,"94":0.35675,"95":0.12053,"96":1.18597,"97":8.3789,"98":15.28739,"99":0.01928,"100":0.04339,"101":0.01446,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 41 42 44 45 51 53 54 55 57 61 62"},F:{"82":0.12535,"83":0.42907,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00964,"15":0.02893,"16":0.00964,"17":0.02411,"18":0.22177,"84":0.00482,"85":0.00964,"86":0.00482,"87":0.02411,"89":0.00482,"90":0.00482,"91":0.00482,"92":0.00964,"93":0.00482,"94":0.00964,"95":0.05785,"96":0.06749,"97":1.24382,"98":4.18945,_:"13 14 79 80 81 83 88"},E:{"4":0,"8":0.00482,"9":0.00964,"12":0.00964,"13":0.07232,"14":0.39532,"15":0.25069,_:"0 5 6 7 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.04339,"10.1":0.02411,"11.1":0.05785,"12.1":0.12535,"13.1":1.42702,"14.1":1.58611,"15.1":0.71833,"15.2-15.3":1.79341,"15.4":0.02411},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00775,"7.0-7.1":0.01291,"8.1-8.4":0.00775,"9.0-9.2":0.01033,"9.3":0.09037,"10.0-10.2":0.01033,"10.3":0.10586,"11.0-11.2":0.04131,"11.3-11.4":0.04906,"12.0-12.1":0.04906,"12.2-12.5":0.57578,"13.0-13.1":0.04648,"13.2":0.01807,"13.3":0.10328,"13.4-13.7":0.32533,"14.0-14.4":1.04053,"14.5-14.8":4.7405,"15.0-15.1":3.50115,"15.2-15.3":15.00641,"15.4":0.07488},P:{"4":0.05406,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.03243,"12.0":0.01081,"13.0":0.04325,"14.0":0.07568,"15.0":0.06487,"16.0":1.82716},I:{"0":0,"3":0,"4":0.0093,"2.1":0,"2.2":0.00558,"2.3":0.00093,"4.1":0.00186,"4.2-4.3":0.02045,"4.4":0,"4.4.3-4.4.4":0.0344},A:{"7":0.00495,"8":0.01486,"9":0.06936,"11":0.62916,_:"6 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.4144},Q:{"10.4":0.00518},O:{"0":0.11396},H:{"0":0.19616},L:{"0":22.93694},S:{"2.5":0.00518}}; +module.exports={C:{"4":0.07755,"11":0.04106,"38":0.00456,"43":0.00456,"44":0.02281,"45":0.00456,"48":0.00456,"52":0.04106,"54":0.01825,"55":0.00912,"56":0.00912,"57":0.00456,"59":0.00456,"78":0.06843,"79":0.00456,"80":0.00456,"81":0.00456,"82":0.00456,"83":0.00456,"84":0.00456,"86":0.00456,"87":0.00456,"88":0.01369,"89":0.00912,"90":0.00456,"91":0.0958,"93":0.00456,"94":0.05018,"95":0.00912,"96":0.00912,"97":0.01369,"98":0.01369,"99":0.03193,"100":0.34215,"101":1.99816,"102":0.04106,_:"2 3 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 47 49 50 51 53 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 85 92 103 104 3.5 3.6"},D:{"35":0.00912,"38":0.00456,"40":0.01369,"47":0.00912,"48":0.06387,"49":0.05931,"52":0.00912,"56":0.07755,"58":0.00912,"59":0.00456,"60":0.01369,"61":0.02737,"62":0.00456,"63":0.00912,"65":0.01369,"66":0.05474,"67":0.01369,"68":0.00912,"69":0.01825,"70":0.00912,"72":0.00912,"73":0.00456,"74":0.01825,"75":0.01369,"76":0.21898,"77":0.00912,"78":0.0365,"79":0.36952,"80":0.05474,"81":0.05931,"83":0.31934,"84":0.05474,"85":0.08212,"86":0.06387,"87":1.67882,"88":0.01825,"89":0.06843,"90":0.03193,"91":0.07299,"92":0.04106,"93":0.10036,"94":0.05931,"95":0.0365,"96":0.13686,"97":0.13686,"98":0.24635,"99":0.30109,"100":0.6843,"101":2.29925,"102":18.60384,"103":1.24543,"104":0.02737,"105":0.03193,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 41 42 43 44 45 46 50 51 53 54 55 57 64 71 106"},F:{"85":0.01369,"86":0.20985,"87":0.39689,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.00912,"15":0.00456,"17":0.00456,"18":0.01825,"85":0.00912,"87":0.01369,"92":0.00456,"95":0.00456,"96":0.00912,"97":0.00912,"98":0.00912,"99":0.02737,"100":0.05931,"101":0.72536,"102":4.32021,"103":0.72536,_:"13 14 16 79 80 81 83 84 86 88 89 90 91 93 94"},E:{"4":0,"8":0.00456,"9":0.00912,"12":0.00912,"13":0.05474,"14":0.24179,"15":0.08212,_:"0 5 6 7 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.04106,"10.1":0.01825,"11.1":0.04562,"12.1":0.0958,"13.1":0.67061,"14.1":0.76642,"15.1":0.14598,"15.2-15.3":0.14598,"15.4":0.9489,"15.5":2.90599,"16.0":0.00456},G:{"8":0,"3.2":0.00539,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00269,"7.0-7.1":0.01077,"8.1-8.4":0.00539,"9.0-9.2":0.01347,"9.3":0.08618,"10.0-10.2":0.00808,"10.3":0.09156,"11.0-11.2":0.02693,"11.3-11.4":0.0404,"12.0-12.1":0.02962,"12.2-12.5":0.49013,"13.0-13.1":0.02424,"13.2":0.01616,"13.3":0.07002,"13.4-13.7":0.21275,"14.0-14.4":0.68672,"14.5-14.8":2.04132,"15.0-15.1":0.55477,"15.2-15.3":1.18494,"15.4":3.72717,"15.5":17.48051,"16.0":0.0377},P:{"4":0.06479,"5.0-5.4":0.06074,"6.2-6.4":0.01012,"7.2-7.4":0.01045,"8.2":0.02141,"9.2":0.03107,"10.1":0.01029,"11.1-11.2":0.0216,"12.0":0.0209,"13.0":0.03239,"14.0":0.04319,"15.0":0.03239,"16.0":0.17277,"17.0":1.83566},I:{"0":0,"3":0,"4":0.0082,"2.1":0,"2.2":0.00512,"2.3":0,"4.1":0.00205,"4.2-4.3":0.02049,"4.4":0,"4.4.3-4.4.4":0.03484},A:{"8":0.01431,"9":0.05723,"11":0.24324,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0.01632},O:{"0":0.10334},H:{"0":0.24717},L:{"0":25.1063},S:{"2.5":0.00544},R:{_:"0"},M:{"0":0.45144}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-oc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-oc.js index 0845984a2ee699..511910299b17fa 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-oc.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-oc.js @@ -1 +1 @@ -module.exports={C:{"34":0.01163,"48":0.00582,"52":0.02908,"54":0.01745,"66":0.01163,"78":0.06397,"84":0.01163,"87":0.01745,"88":0.00582,"89":0.01163,"90":0.01163,"91":0.05815,"93":0.01745,"94":0.16282,"95":0.04652,"96":0.94203,"97":1.50027,"98":0.01163,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 92 99 3.5 3.6"},D:{"26":0.01163,"34":0.02908,"38":0.1163,"49":0.05815,"53":0.03489,"56":0.01163,"57":0.01163,"59":0.03489,"60":0.02326,"61":0.00582,"64":0.03489,"65":0.02326,"66":0.02326,"67":0.01745,"68":0.01745,"69":0.01745,"70":0.04071,"71":0.00582,"72":0.04071,"73":0.01163,"74":0.02326,"75":0.01745,"76":0.02326,"77":0.01163,"78":0.02908,"79":0.37216,"80":0.0756,"81":0.04071,"83":0.02908,"84":0.02908,"85":0.04071,"86":0.05815,"87":0.19771,"88":0.03489,"89":0.02908,"90":0.06397,"91":0.08141,"92":0.17445,"93":0.3082,"94":0.26168,"95":0.40124,"96":1.17463,"97":10.61238,"98":23.13789,"99":0.01745,"100":0.01745,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 58 62 63 101"},F:{"36":0.00582,"46":0.06397,"80":0.00582,"82":0.13956,"83":0.41868,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.00582,"16":0.01163,"17":0.00582,"18":0.02326,"84":0.01163,"85":0.00582,"86":0.01745,"87":0.00582,"89":0.01745,"90":0.01163,"91":0.01163,"92":0.01745,"93":0.00582,"94":0.01163,"95":0.08723,"96":0.09304,"97":1.3549,"98":4.89042,_:"12 13 14 79 80 81 83 88"},E:{"4":0,"11":0.00582,"12":0.01745,"13":0.1163,"14":0.52335,"15":0.35472,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.01163,"10.1":0.03489,"11.1":0.06397,"12.1":0.13956,"13.1":0.57569,"14.1":2.21552,"15.1":1.04089,"15.2-15.3":2.08759,"15.4":0.01163},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01655,"6.0-6.1":0.01242,"7.0-7.1":0.01242,"8.1-8.4":0.02069,"9.0-9.2":0.02069,"9.3":0.20693,"10.0-10.2":0.01862,"10.3":0.23176,"11.0-11.2":0.07242,"11.3-11.4":0.08277,"12.0-12.1":0.05794,"12.2-12.5":1.05326,"13.0-13.1":0.03311,"13.2":0.01448,"13.3":0.10139,"13.4-13.7":0.29591,"14.0-14.4":0.85461,"14.5-14.8":3.89643,"15.0-15.1":2.72729,"15.2-15.3":10.90917,"15.4":0.04759},P:{"4":0.74859,"5.0-5.4":0.01085,"6.2-6.4":0.0302,"7.2-7.4":0.0217,"8.2":0.02019,"9.2":0.01085,"10.1":0.02055,"11.1-11.2":0.03255,"12.0":0.0217,"13.0":0.09764,"14.0":0.10849,"15.0":0.10849,"16.0":2.53869},I:{"0":0,"3":0,"4":0.00266,"2.1":0,"2.2":0.00133,"2.3":0.00133,"4.1":0.00266,"4.2-4.3":0.00598,"4.4":0,"4.4.3-4.4.4":0.0279},A:{"9":0.01084,"11":0.39039,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.38502},Q:{"10.4":0.00837},O:{"0":0.10463},H:{"0":0.1466},L:{"0":17.01388},S:{"2.5":0}}; +module.exports={C:{"11":0.00575,"48":0.00575,"51":0.01151,"52":0.04027,"53":0.01151,"54":0.02301,"55":0.01151,"56":0.01151,"57":0.01151,"59":0.01151,"66":0.00575,"78":0.08054,"79":0.01151,"80":0.01726,"81":0.01726,"82":0.01151,"83":0.01151,"84":0.01726,"85":0.00575,"87":0.00575,"88":0.01151,"89":0.00575,"91":0.06904,"93":0.01151,"94":0.09205,"95":0.01151,"96":0.00575,"97":0.01726,"98":0.01726,"99":0.02877,"100":0.27614,"101":2.01355,"102":0.07479,"103":0.00575,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 58 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 86 90 92 104 3.5 3.6"},D:{"26":0.01151,"34":0.02877,"38":0.08054,"41":0.00575,"45":0.00575,"47":0.00575,"48":0.01151,"49":0.05178,"53":0.01151,"55":0.00575,"56":0.01151,"57":0.00575,"58":0.00575,"59":0.03452,"60":0.02877,"61":0.01151,"62":0.00575,"63":0.01151,"64":0.00575,"65":0.02301,"66":0.02301,"67":0.01151,"68":0.01151,"69":0.01726,"70":0.00575,"71":0.00575,"72":0.01151,"73":0.01151,"74":0.02301,"75":0.01151,"76":0.02301,"77":0.01151,"78":0.01726,"79":0.17834,"80":0.05753,"81":0.03452,"83":0.06328,"84":0.10931,"85":0.12081,"86":0.14383,"87":0.1956,"88":0.01726,"89":0.02301,"90":0.02301,"91":0.04602,"92":0.05753,"93":0.06328,"94":0.06328,"95":0.05178,"96":0.24738,"97":0.1956,"98":0.20136,"99":0.36244,"100":0.7709,"101":2.81897,"102":27.47633,"103":2.1171,"104":0.02301,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 42 43 44 46 50 51 52 54 105 106"},F:{"46":0.03452,"71":0.00575,"72":0.00575,"80":0.00575,"85":0.01151,"86":0.24163,"87":0.35669,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 73 74 75 76 77 78 79 81 82 83 84 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"18":0.02877,"84":0.01151,"85":0.01726,"86":0.01151,"90":0.00575,"92":0.02301,"94":0.01151,"95":0.01726,"96":0.02877,"97":0.01151,"98":0.01726,"99":0.04027,"100":0.05753,"101":0.80542,"102":5.55165,"103":1.11608,_:"12 13 14 15 16 17 79 80 81 83 87 88 89 91 93"},E:{"4":0,"12":0.01151,"13":0.09205,"14":0.33367,"15":0.12081,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 16.0","9.1":0.00575,"10.1":0.02301,"11.1":0.05178,"12.1":0.10355,"13.1":0.43723,"14.1":1.13909,"15.1":0.21286,"15.2-15.3":0.18985,"15.4":1.36346,"15.5":3.76246},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01034,"6.0-6.1":0.01034,"7.0-7.1":0.01241,"8.1-8.4":0.02068,"9.0-9.2":0.01861,"9.3":0.18614,"10.0-10.2":0.01448,"10.3":0.20062,"11.0-11.2":0.04343,"11.3-11.4":0.06618,"12.0-12.1":0.0455,"12.2-12.5":0.89556,"13.0-13.1":0.02482,"13.2":0.01655,"13.3":0.07859,"13.4-13.7":0.22337,"14.0-14.4":0.58532,"14.5-14.8":1.69184,"15.0-15.1":0.43227,"15.2-15.3":0.8149,"15.4":2.67013,"15.5":12.56262,"16.0":0.02482},P:{"4":0.2703,"5.0-5.4":0.02162,"6.2-6.4":0.01012,"7.2-7.4":0.02162,"8.2":0.02141,"9.2":0.03107,"10.1":0.01029,"11.1-11.2":0.03244,"12.0":0.02162,"13.0":0.06487,"14.0":0.07568,"15.0":0.04325,"16.0":0.22705,"17.0":2.57322},I:{"0":0,"3":0,"4":0.00139,"2.1":0,"2.2":0,"2.3":0.00348,"4.1":0.00279,"4.2-4.3":0.00557,"4.4":0,"4.4.3-4.4.4":0.02925},A:{"8":0.02816,"9":0.01877,"11":0.30975,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0.0085},O:{"0":0.09346},H:{"0":0.1488},L:{"0":18.32337},S:{"2.5":0},R:{_:"0"},M:{"0":0.39931}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-sa.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-sa.js index e31160b4a7608d..abcfd3a86cc66c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-sa.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-sa.js @@ -1 +1 @@ -module.exports={C:{"27":0.00756,"52":0.04911,"60":0.00378,"68":0.00756,"72":0.00378,"78":0.02267,"81":0.00756,"84":0.00756,"86":0.00756,"87":0.00378,"88":0.01511,"89":0.00756,"90":0.01133,"91":0.03778,"92":0.00756,"93":0.00756,"94":0.03022,"95":0.02267,"96":0.54781,"97":0.90294,"98":0.00756,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 82 83 85 99 3.5 3.6"},D:{"38":0.01511,"47":0.01133,"49":0.07934,"51":0.00756,"53":0.00756,"54":0.00756,"55":0.00378,"58":0.00756,"63":0.00756,"64":0.00378,"65":0.00756,"66":0.01511,"67":0.00756,"68":0.00756,"69":0.01511,"70":0.01133,"71":0.00756,"72":0.00756,"73":0.00378,"74":0.01133,"75":0.03778,"76":0.01133,"77":0.01133,"78":0.01133,"79":0.08689,"80":0.02267,"81":0.02645,"83":0.02645,"84":0.04156,"85":0.03022,"86":0.05667,"87":0.09067,"88":0.02645,"89":0.04534,"90":0.03778,"91":0.4458,"92":0.06045,"93":0.15868,"94":0.06045,"95":0.07178,"96":0.43447,"97":7.72601,"98":18.95423,"99":0.02267,"100":0.01511,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 52 56 57 59 60 61 62 101"},F:{"36":0.00756,"73":0.00756,"81":0.00378,"82":0.70271,"83":1.74921,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01133,"17":0.00378,"18":0.01511,"84":0.00378,"89":0.00378,"90":0.00378,"91":0.00756,"92":0.00756,"94":0.00378,"95":0.01889,"96":0.02267,"97":0.47225,"98":1.71143,_:"12 13 14 16 79 80 81 83 85 86 87 88 93"},E:{"4":0,"13":0.01511,"14":0.04156,"15":0.034,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 15.4","5.1":0.00756,"11.1":0.00756,"12.1":0.01511,"13.1":0.06045,"14.1":0.14734,"15.1":0.08312,"15.2-15.3":0.15112},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0058,"6.0-6.1":0.00097,"7.0-7.1":0.00387,"8.1-8.4":0.00048,"9.0-9.2":0.00048,"9.3":0.0266,"10.0-10.2":0.00097,"10.3":0.02612,"11.0-11.2":0.00435,"11.3-11.4":0.01596,"12.0-12.1":0.00629,"12.2-12.5":0.21089,"13.0-13.1":0.00677,"13.2":0.0029,"13.3":0.0208,"13.4-13.7":0.07836,"14.0-14.4":0.20509,"14.5-14.8":1.00705,"15.0-15.1":0.75117,"15.2-15.3":2.44845,"15.4":0.01112},P:{"4":0.15406,"5.0-5.4":0.01085,"6.2-6.4":0.0302,"7.2-7.4":0.20541,"8.2":0.02019,"9.2":0.01027,"10.1":0.02055,"11.1-11.2":0.08216,"12.0":0.02054,"13.0":0.1027,"14.0":0.1027,"15.0":0.1027,"16.0":1.57137},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00272,"4.2-4.3":0.00544,"4.4":0,"4.4.3-4.4.4":0.03539},A:{"8":0.00389,"9":0.00389,"11":0.12445,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.112},Q:{"10.4":0},O:{"0":0.04978},H:{"0":0.16494},L:{"0":42.74835},S:{"2.5":0}}; +module.exports={C:{"19":0.00452,"27":0.00904,"52":0.05425,"66":0.00452,"68":0.00904,"72":0.00452,"73":0.00452,"78":0.02261,"79":0.00452,"80":0.00452,"81":0.00452,"84":0.00452,"86":0.00904,"88":0.01808,"89":0.00904,"90":0.01356,"91":0.0859,"94":0.02713,"95":0.00904,"96":0.00904,"97":0.01356,"98":0.00904,"99":0.04069,"100":0.1718,"101":1.44672,"102":0.06329,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 24 25 26 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 69 70 71 74 75 76 77 82 83 85 87 92 93 103 104 3.5 3.6"},D:{"22":0.00452,"38":0.01808,"47":0.00904,"49":0.09042,"51":0.00452,"53":0.00452,"55":0.00452,"56":0.00452,"58":0.00452,"63":0.00904,"65":0.00904,"66":0.01356,"67":0.00904,"68":0.00904,"69":0.02713,"70":0.00904,"71":0.00452,"72":0.00904,"73":0.00452,"74":0.01356,"75":0.01808,"76":0.02261,"77":0.00904,"78":0.01356,"79":0.09946,"80":0.02261,"81":0.02713,"83":0.02713,"84":0.04973,"85":0.04069,"86":0.06782,"87":0.09494,"88":0.02261,"89":0.04069,"90":0.03165,"91":0.58773,"92":0.04521,"93":0.03617,"94":0.03165,"95":0.03617,"96":0.09494,"97":0.09494,"98":0.09946,"99":0.15824,"100":0.30743,"101":1.44672,"102":27.5781,"103":2.72616,"104":0.01356,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 52 54 57 59 60 61 62 64 105 106"},F:{"28":0.00452,"36":0.00452,"82":0.00452,"84":0.00452,"85":0.03617,"86":1.26588,"87":1.4648,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"15":0.01808,"18":0.01356,"91":0.00452,"92":0.00904,"96":0.00452,"98":0.00452,"99":0.01356,"100":0.01356,"101":0.30291,"102":2.14748,"103":0.44758,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 89 90 93 94 95 97"},E:{"4":0,"13":0.00904,"14":0.04069,"15":0.01808,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 16.0","11.1":0.00904,"12.1":0.01356,"13.1":0.05877,"14.1":0.11303,"15.1":0.02713,"15.2-15.3":0.02713,"15.4":0.13563,"15.5":0.3436},G:{"8":0.00056,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00504,"6.0-6.1":0.00112,"7.0-7.1":0.00392,"8.1-8.4":0,"9.0-9.2":0.00168,"9.3":0.028,"10.0-10.2":0.00224,"10.3":0.02688,"11.0-11.2":0.00448,"11.3-11.4":0.02016,"12.0-12.1":0.00616,"12.2-12.5":0.18707,"13.0-13.1":0.0056,"13.2":0.00448,"13.3":0.01512,"13.4-13.7":0.05825,"14.0-14.4":0.1417,"14.5-14.8":0.4688,"15.0-15.1":0.10418,"15.2-15.3":0.22516,"15.4":0.77069,"15.5":3.49162,"16.0":0.0112},P:{"4":0.13401,"5.0-5.4":0.02162,"6.2-6.4":0.01012,"7.2-7.4":0.18555,"8.2":0.02141,"9.2":0.01031,"10.1":0.01029,"11.1-11.2":0.06185,"12.0":0.01031,"13.0":0.06185,"14.0":0.08247,"15.0":0.04123,"16.0":0.18555,"17.0":1.56685},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00244,"4.2-4.3":0.00426,"4.4":0,"4.4.3-4.4.4":0.03714},A:{"9":0.00452,"11":0.10398,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.06028},H:{"0":0.19196},L:{"0":46.90428},S:{"2.5":0},R:{_:"0"},M:{"0":0.137}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-ww.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-ww.js index df07a0d8acd324..32df5967dbaf2e 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-ww.js +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-ww.js @@ -1 +1 @@ -module.exports={C:{"2":0.00832,"4":0.01664,"15":0.00832,"18":0.00416,"21":0.00832,"23":0.00416,"25":0.01248,"30":0.00832,"36":0.00416,"43":0.04161,"44":0.00832,"48":0.00416,"51":0.00832,"52":0.06242,"55":0.00832,"56":0.00832,"59":0.00416,"60":0.00832,"63":0.00832,"68":0.00832,"72":0.00832,"77":0.00416,"78":0.05825,"79":0.00832,"80":0.00416,"81":0.01664,"82":0.00416,"83":0.00416,"84":0.01248,"86":0.00416,"87":0.01248,"88":0.01248,"89":0.01248,"90":0.02081,"91":0.09986,"92":0.00832,"93":0.01248,"94":0.04577,"95":0.04577,"96":1.16508,"97":2.02641,"98":0.01664,_:"3 5 6 7 8 9 10 11 12 13 14 16 17 19 20 22 24 26 27 28 29 31 32 33 34 35 37 38 39 40 41 42 45 46 47 49 50 53 54 57 58 61 62 64 65 66 67 69 70 71 73 74 75 76 85 99 3.5 3.6"},D:{"19":0.00832,"22":0.00832,"24":0.01664,"30":0.00832,"33":0.00832,"34":0.00832,"35":0.01664,"38":0.02081,"40":0.01248,"43":0.00832,"47":0.00832,"48":0.02081,"49":0.07074,"51":0.00832,"52":0.00416,"53":0.01248,"54":0.00832,"55":0.01248,"56":0.05409,"57":0.00416,"58":0.00416,"59":0.00416,"60":0.02081,"61":0.00416,"62":0.00832,"63":0.00832,"64":0.02081,"65":0.01248,"66":0.02081,"67":0.01248,"68":0.00832,"69":0.05409,"70":0.04993,"71":0.01664,"72":0.09154,"73":0.00832,"74":0.02497,"75":0.06242,"76":0.05825,"77":0.01664,"78":0.03745,"79":0.21221,"80":0.05825,"81":0.03745,"83":0.10403,"84":0.06658,"85":0.07074,"86":0.07074,"87":0.12899,"88":0.03745,"89":0.06242,"90":0.04993,"91":0.11235,"92":0.09986,"93":0.26214,"94":0.17476,"95":0.09986,"96":0.64912,"97":7.14028,"98":15.53301,"99":0.01664,"100":0.02081,"101":0.00416,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 23 25 26 27 28 29 31 32 36 37 39 41 42 44 45 46 50"},F:{"28":0.00416,"31":0.00416,"36":0.00416,"40":0.00832,"43":0.00416,"46":0.00832,"77":0.00416,"79":0.00416,"80":0.00416,"82":0.22886,"83":0.78643,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 32 33 34 35 37 38 39 41 42 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 81 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0.00416},B:{"12":0.00832,"15":0.01248,"16":0.00416,"17":0.01248,"18":0.0749,"84":0.00416,"85":0.00832,"86":0.00416,"87":0.00832,"89":0.00832,"90":0.00416,"91":0.00416,"92":0.01248,"93":0.00416,"94":0.00832,"95":0.02913,"96":0.04993,"97":0.85301,"98":2.98344,_:"13 14 79 80 81 83 88"},E:{"4":0,"5":0.00832,"12":0.00416,"13":0.04993,"14":0.23718,"15":0.14564,_:"0 6 7 8 9 10 11 3.1 3.2 6.1 7.1","5.1":0.01248,"9.1":0.01664,"10.1":0.01248,"11.1":0.02913,"12.1":0.05825,"13.1":0.47852,"14.1":0.87797,"15.1":0.42026,"15.2-15.3":0.93623,"15.4":0.01248},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00299,"5.0-5.1":0.00448,"6.0-6.1":0.12242,"7.0-7.1":0.01941,"8.1-8.4":0.00746,"9.0-9.2":0.01344,"9.3":0.0836,"10.0-10.2":0.03882,"10.3":0.09555,"11.0-11.2":0.06419,"11.3-11.4":0.03732,"12.0-12.1":0.03732,"12.2-12.5":0.55984,"13.0-13.1":0.03732,"13.2":0.01344,"13.3":0.07614,"13.4-13.7":0.24483,"14.0-14.4":0.7778,"14.5-14.8":2.77828,"15.0-15.1":2.12738,"15.2-15.3":7.74216,"15.4":0.04031},P:{"4":0.21833,"5.0-5.4":0.01028,"6.2-6.4":0.0302,"7.2-7.4":0.07278,"8.2":0.02019,"9.2":0.03119,"10.1":0.02055,"11.1-11.2":0.07278,"12.0":0.03119,"13.0":0.10397,"14.0":0.11436,"15.0":0.14555,"16.0":2.10015},I:{"0":0,"3":0,"4":0.01335,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01335,"4.2-4.3":0.06339,"4.4":0,"4.4.3-4.4.4":0.26025},A:{"8":0.03955,"9":0.05932,"10":0.02637,"11":0.61958,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.04242,"11":0.03845},R:{_:"0"},M:{"0":0.28027},Q:{"10.4":0.16933},O:{"0":0.86417},H:{"0":1.03373},L:{"0":37.2095},S:{"2.5":0.09926}}; +module.exports={C:{"4":0.01901,"11":0.0114,"36":0.0076,"43":0.01901,"44":0.0076,"48":0.0038,"52":0.06082,"54":0.0076,"55":0.0038,"56":0.0076,"59":0.0038,"60":0.0038,"66":0.0038,"68":0.0076,"72":0.0038,"77":0.0038,"78":0.04181,"79":0.0038,"80":0.0038,"81":0.0114,"82":0.0038,"83":0.0038,"84":0.0076,"86":0.0038,"87":0.0114,"88":0.0114,"89":0.0076,"90":0.0076,"91":0.09503,"92":0.0038,"93":0.0076,"94":0.02281,"95":0.0076,"96":0.0076,"97":0.0114,"98":0.0152,"99":0.04561,"100":0.28888,"101":2.00313,"102":0.08362,_:"2 3 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 45 46 47 49 50 51 53 57 58 61 62 63 64 65 67 69 70 71 73 74 75 76 85 103 104 3.5 3.6"},D:{"22":0.0076,"34":0.0076,"35":0.0038,"38":0.01901,"40":0.0114,"43":0.0076,"47":0.0114,"48":0.01901,"49":0.05321,"51":0.0038,"52":0.0038,"53":0.0114,"55":0.0038,"56":0.02661,"57":0.0038,"58":0.0076,"59":0.0038,"60":0.0114,"61":0.0114,"62":0.0076,"63":0.0114,"64":0.0076,"65":0.0114,"66":0.02661,"67":0.0114,"68":0.0076,"69":0.04941,"70":0.02281,"71":0.0114,"72":0.02661,"73":0.0076,"74":0.02281,"75":0.06082,"76":0.06082,"77":0.0114,"78":0.03421,"79":0.19385,"80":0.03801,"81":0.03421,"83":0.11023,"84":0.04941,"85":0.07602,"86":0.07222,"87":0.44852,"88":0.01901,"89":0.06082,"90":0.02661,"91":0.07222,"92":0.05321,"93":0.04561,"94":0.04941,"95":0.03421,"96":0.10643,"97":0.09883,"98":0.12923,"99":0.16344,"100":0.3877,"101":1.47099,"102":17.80769,"103":1.61923,"104":0.0152,"105":0.0114,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 36 37 39 41 42 44 45 46 50 54 106"},F:{"28":0.0076,"31":0.0038,"36":0.0038,"40":0.0076,"46":0.0114,"84":0.0038,"85":0.03421,"86":0.30028,"87":0.59296,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"12":0.0038,"15":0.0038,"16":0.0038,"17":0.0076,"18":0.02281,"84":0.0038,"85":0.0076,"86":0.0038,"87":0.0038,"89":0.0076,"92":0.0076,"95":0.0038,"96":0.0076,"97":0.0076,"98":0.0114,"99":0.01901,"100":0.03421,"101":0.44472,"102":2.86595,"103":0.58916,_:"13 14 79 80 81 83 88 90 91 93 94"},E:{"4":0,"12":0.0038,"13":0.03421,"14":0.14064,"15":0.04561,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1","5.1":0.0076,"9.1":0.0152,"10.1":0.0076,"11.1":0.02281,"12.1":0.04561,"13.1":0.25467,"14.1":0.41811,"15.1":0.08362,"15.2-15.3":0.07982,"15.4":0.52834,"15.5":1.47859,"16.0":0.0038},G:{"8":0,"3.2":0.0015,"4.0-4.1":0,"4.2-4.3":0.0015,"5.0-5.1":0.00449,"6.0-6.1":0.00449,"7.0-7.1":0.01646,"8.1-8.4":0.00748,"9.0-9.2":0.01646,"9.3":0.07482,"10.0-10.2":0.00898,"10.3":0.08231,"11.0-11.2":0.04041,"11.3-11.4":0.02993,"12.0-12.1":0.02993,"12.2-12.5":0.55968,"13.0-13.1":0.02544,"13.2":0.01197,"13.3":0.05537,"13.4-13.7":0.17359,"14.0-14.4":0.52826,"14.5-14.8":1.278,"15.0-15.1":0.39956,"15.2-15.3":0.74974,"15.4":2.16691,"15.5":8.63769,"16.0":0.02843},P:{"4":0.20706,"5.0-5.4":0.06074,"6.2-6.4":0.01012,"7.2-7.4":0.08283,"8.2":0.02141,"9.2":0.01035,"10.1":0.04049,"11.1-11.2":0.04141,"12.0":0.02071,"13.0":0.08283,"14.0":0.09318,"15.0":0.09318,"16.0":0.23812,"17.0":2.11205},I:{"0":0,"3":0,"4":0.0155,"2.1":0,"2.2":0,"2.3":0,"4.1":0.02066,"4.2-4.3":0.06199,"4.4":0,"4.4.3-4.4.4":0.30478},A:{"8":0.01459,"9":0.03647,"11":0.48869,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{"10":0.01131,_:"11"},J:{"7":0,"10":0},Q:{"10.4":0.14258},O:{"0":0.71289},H:{"0":0.95075},L:{"0":42.38982},S:{"2.5":0.04959},R:{_:"0"},M:{"0":0.30995}}; diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/package.json b/tools/node_modules/eslint/node_modules/caniuse-lite/package.json index 321001c5d275fb..8a48b87a06a92c 100644 --- a/tools/node_modules/eslint/node_modules/caniuse-lite/package.json +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/package.json @@ -1,6 +1,6 @@ { "name": "caniuse-lite", - "version": "1.0.30001314", + "version": "1.0.30001367", "description": "A smaller version of caniuse-db, with only the essentials!", "main": "dist/unpacker/index.js", "files": [ @@ -20,9 +20,15 @@ "url": "http://beneb.info" }, "repository": "browserslist/caniuse-lite", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ], "license": "CC-BY-4.0" } diff --git a/tools/node_modules/eslint/node_modules/comment-parser/browser/index.js b/tools/node_modules/eslint/node_modules/comment-parser/browser/index.js index a42c00baa33d4c..c034f5bdc72e96 100644 --- a/tools/node_modules/eslint/node_modules/comment-parser/browser/index.js +++ b/tools/node_modules/eslint/node_modules/comment-parser/browser/index.js @@ -149,7 +149,7 @@ var CommentParser = (function (exports) { } /** - * Splits the `@prefix` from remaining `Spec.lines[].token.descrioption` into the `tag` token, + * Splits the `@prefix` from remaining `Spec.lines[].token.description` into the `tag` token, * and populates `spec.tag` */ function tagTokenizer() { @@ -388,15 +388,12 @@ var CommentParser = (function (exports) { const parseBlock = getParser$3({ fence }); const parseSpec = getParser$1({ tokenizers }); const joinDescription = getJoiner(spacing); - const notEmpty = (line) => line.tokens.description.trim() != ''; return function (source) { const blocks = []; for (const line of splitLines(source)) { const lines = parseSource(line); if (lines === null) continue; - if (lines.find(notEmpty) === undefined) - continue; const sections = parseBlock(lines); const specs = sections.slice(1).map(parseSpec); blocks.push({ diff --git a/tools/node_modules/eslint/node_modules/comment-parser/es6/parser/index.js b/tools/node_modules/eslint/node_modules/comment-parser/es6/parser/index.js index 01e17686692f47..236d23e844017b 100644 --- a/tools/node_modules/eslint/node_modules/comment-parser/es6/parser/index.js +++ b/tools/node_modules/eslint/node_modules/comment-parser/es6/parser/index.js @@ -19,15 +19,12 @@ export default function getParser({ startLine = 0, fence = '```', spacing = 'com const parseBlock = blockParser({ fence }); const parseSpec = specParser({ tokenizers }); const joinDescription = getDescriptionJoiner(spacing); - const notEmpty = (line) => line.tokens.description.trim() != ''; return function (source) { const blocks = []; for (const line of splitLines(source)) { const lines = parseSource(line); if (lines === null) continue; - if (lines.find(notEmpty) === undefined) - continue; const sections = parseBlock(lines); const specs = sections.slice(1).map(parseSpec); blocks.push({ diff --git a/tools/node_modules/eslint/node_modules/comment-parser/es6/parser/tokenizers/tag.js b/tools/node_modules/eslint/node_modules/comment-parser/es6/parser/tokenizers/tag.js index 4696b00dab08a0..adbea116d2c6c5 100644 --- a/tools/node_modules/eslint/node_modules/comment-parser/es6/parser/tokenizers/tag.js +++ b/tools/node_modules/eslint/node_modules/comment-parser/es6/parser/tokenizers/tag.js @@ -1,5 +1,5 @@ /** - * Splits the `@prefix` from remaining `Spec.lines[].token.descrioption` into the `tag` token, + * Splits the `@prefix` from remaining `Spec.lines[].token.description` into the `tag` token, * and populates `spec.tag` */ export default function tagTokenizer() { diff --git a/tools/node_modules/eslint/node_modules/comment-parser/lib/parser/index.cjs b/tools/node_modules/eslint/node_modules/comment-parser/lib/parser/index.cjs index dde50d4013e453..13aecaf92cbe85 100644 --- a/tools/node_modules/eslint/node_modules/comment-parser/lib/parser/index.cjs +++ b/tools/node_modules/eslint/node_modules/comment-parser/lib/parser/index.cjs @@ -41,16 +41,12 @@ function getParser({ tokenizers }); const joinDescription = description_1.getJoiner(spacing); - - const notEmpty = line => line.tokens.description.trim() != ''; - return function (source) { const blocks = []; for (const line of util_1.splitLines(source)) { const lines = parseSource(line); if (lines === null) continue; - if (lines.find(notEmpty) === undefined) continue; const sections = parseBlock(lines); const specs = sections.slice(1).map(parseSpec); blocks.push({ diff --git a/tools/node_modules/eslint/node_modules/comment-parser/lib/parser/tokenizers/tag.cjs b/tools/node_modules/eslint/node_modules/comment-parser/lib/parser/tokenizers/tag.cjs index 55aec566c6f644..10b4597e436fa9 100644 --- a/tools/node_modules/eslint/node_modules/comment-parser/lib/parser/tokenizers/tag.cjs +++ b/tools/node_modules/eslint/node_modules/comment-parser/lib/parser/tokenizers/tag.cjs @@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); /** - * Splits the `@prefix` from remaining `Spec.lines[].token.descrioption` into the `tag` token, + * Splits the `@prefix` from remaining `Spec.lines[].token.description` into the `tag` token, * and populates `spec.tag` */ diff --git a/tools/node_modules/eslint/node_modules/comment-parser/package.json b/tools/node_modules/eslint/node_modules/comment-parser/package.json index 3ed6fbf63f46fb..2024b4dcc49930 100644 --- a/tools/node_modules/eslint/node_modules/comment-parser/package.json +++ b/tools/node_modules/eslint/node_modules/comment-parser/package.json @@ -1,6 +1,6 @@ { "name": "comment-parser", - "version": "1.3.0", + "version": "1.3.1", "description": "Generic JSDoc-like comment parser", "type": "module", "main": "lib/index.cjs", @@ -81,6 +81,5 @@ "bugs": { "url": "https://github.com/syavorsky/comment-parser/issues" }, - "homepage": "https://github.com/syavorsky/comment-parser", - "dependencies": {} + "homepage": "https://github.com/syavorsky/comment-parser" } diff --git a/tools/node_modules/eslint/node_modules/debug/package.json b/tools/node_modules/eslint/node_modules/debug/package.json index cb7efa8eec32da..3bcdc242fc0675 100644 --- a/tools/node_modules/eslint/node_modules/debug/package.json +++ b/tools/node_modules/eslint/node_modules/debug/package.json @@ -1,6 +1,6 @@ { "name": "debug", - "version": "4.3.3", + "version": "4.3.4", "repository": { "type": "git", "url": "git://github.com/debug-js/debug.git" diff --git a/tools/node_modules/eslint/node_modules/debug/src/common.js b/tools/node_modules/eslint/node_modules/debug/src/common.js index 6d571d2844dd95..e3291b20faa1a6 100644 --- a/tools/node_modules/eslint/node_modules/debug/src/common.js +++ b/tools/node_modules/eslint/node_modules/debug/src/common.js @@ -179,7 +179,7 @@ function setup(env) { namespaces = split[i].replace(/\*/g, '.*?'); if (namespaces[0] === '-') { - createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); } else { createDebug.names.push(new RegExp('^' + namespaces + '$')); } diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.js index 590b2d039f9072..c84df508124c6d 100644 --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.js +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.js @@ -41,5 +41,8 @@ module.exports = { "96": "16.0", "98": "17.0", "99": "18.0", - "100": "18.0" + "100": "18.0", + "102": "19.0", + "103": "20.0", + "104": "20.0" }; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.json index cb99e212f63db4..2a4329d3f0dd85 100644 --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.json +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.json @@ -1 +1 @@ -{"39":"0.20","40":"0.21","41":"0.21","42":"0.25","43":"0.27","44":"0.30","45":"0.31","47":"0.36","49":"0.37","50":"1.1","51":"1.2","52":"1.3","53":"1.4","54":"1.4","56":"1.6","58":"1.7","59":"1.8","61":"2.0","66":"3.0","69":"4.0","72":"5.0","73":"5.0","76":"6.0","78":"7.0","79":"8.0","80":"8.0","82":"9.0","83":"9.0","84":"10.0","85":"10.0","86":"11.0","87":"11.0","89":"12.0","90":"13.0","91":"13.0","92":"14.0","93":"14.0","94":"15.0","95":"16.0","96":"16.0","98":"17.0","99":"18.0","100":"18.0"} \ No newline at end of file +{"39":"0.20","40":"0.21","41":"0.21","42":"0.25","43":"0.27","44":"0.30","45":"0.31","47":"0.36","49":"0.37","50":"1.1","51":"1.2","52":"1.3","53":"1.4","54":"1.4","56":"1.6","58":"1.7","59":"1.8","61":"2.0","66":"3.0","69":"4.0","72":"5.0","73":"5.0","76":"6.0","78":"7.0","79":"8.0","80":"8.0","82":"9.0","83":"9.0","84":"10.0","85":"10.0","86":"11.0","87":"11.0","89":"12.0","90":"13.0","91":"13.0","92":"14.0","93":"14.0","94":"15.0","95":"16.0","96":"16.0","98":"17.0","99":"18.0","100":"18.0","102":"19.0","103":"20.0","104":"20.0"} \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.js index bfefaebe3dbe5c..f649000828a499 100644 --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.js +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.js @@ -1500,7 +1500,9 @@ module.exports = { "14.2.4", "14.2.5", "14.2.6", - "14.2.7" + "14.2.7", + "14.2.8", + "14.2.9" ], "94.0.4584.0": [ "15.0.0-alpha.3", @@ -1590,7 +1592,16 @@ module.exports = { "15.3.6", "15.3.7", "15.4.0", - "15.4.1" + "15.4.1", + "15.4.2", + "15.5.0", + "15.5.1", + "15.5.2", + "15.5.3", + "15.5.4", + "15.5.5", + "15.5.6", + "15.5.7" ], "95.0.4629.0": [ "16.0.0-alpha.1", @@ -1683,7 +1694,17 @@ module.exports = { "96.0.4664.174": [ "16.0.9", "16.0.10", - "16.1.0" + "16.1.0", + "16.1.1", + "16.2.0", + "16.2.1", + "16.2.2", + "16.2.3", + "16.2.4", + "16.2.5", + "16.2.6", + "16.2.7", + "16.2.8" ], "96.0.4664.4": [ "17.0.0-alpha.1", @@ -1773,7 +1794,23 @@ module.exports = { ], "98.0.4758.109": [ "17.1.1", - "17.1.2" + "17.1.2", + "17.2.0" + ], + "98.0.4758.141": [ + "17.3.0", + "17.3.1", + "17.4.0", + "17.4.1", + "17.4.2", + "17.4.3", + "17.4.4", + "17.4.5", + "17.4.6", + "17.4.7", + "17.4.8", + "17.4.9", + "17.4.10" ], "99.0.4767.0": [ "18.0.0-alpha.1", @@ -1805,9 +1842,192 @@ module.exports = { "100.0.4894.0": [ "18.0.0-beta.1", "18.0.0-beta.2", + "18.0.0-beta.3", + "18.0.0-beta.4", + "18.0.0-beta.5", + "18.0.0-beta.6", "19.0.0-nightly.20220308", "19.0.0-nightly.20220309", "19.0.0-nightly.20220310", - "19.0.0-nightly.20220311" + "19.0.0-nightly.20220311", + "19.0.0-nightly.20220314", + "19.0.0-nightly.20220315", + "19.0.0-nightly.20220316", + "19.0.0-nightly.20220317", + "19.0.0-nightly.20220318", + "19.0.0-nightly.20220321", + "19.0.0-nightly.20220322", + "19.0.0-nightly.20220323", + "19.0.0-nightly.20220324" + ], + "100.0.4896.56": [ + "18.0.0" + ], + "100.0.4896.60": [ + "18.0.1", + "18.0.2" + ], + "100.0.4896.75": [ + "18.0.3", + "18.0.4" + ], + "100.0.4896.127": [ + "18.1.0" + ], + "100.0.4896.143": [ + "18.2.0", + "18.2.1", + "18.2.2", + "18.2.3" + ], + "100.0.4896.160": [ + "18.2.4", + "18.3.0", + "18.3.1", + "18.3.2", + "18.3.3", + "18.3.4", + "18.3.5" + ], + "102.0.4962.3": [ + "19.0.0-alpha.1", + "19.0.0-nightly.20220328", + "19.0.0-nightly.20220329", + "20.0.0-nightly.20220330" + ], + "102.0.4971.0": [ + "19.0.0-alpha.2", + "19.0.0-alpha.3", + "20.0.0-nightly.20220411" + ], + "102.0.4989.0": [ + "19.0.0-alpha.4", + "19.0.0-alpha.5", + "20.0.0-nightly.20220414", + "20.0.0-nightly.20220415", + "20.0.0-nightly.20220418", + "20.0.0-nightly.20220419", + "20.0.0-nightly.20220420", + "20.0.0-nightly.20220421" + ], + "102.0.4999.0": [ + "19.0.0-beta.1", + "19.0.0-beta.2", + "19.0.0-beta.3", + "20.0.0-nightly.20220425", + "20.0.0-nightly.20220426", + "20.0.0-nightly.20220427", + "20.0.0-nightly.20220428", + "20.0.0-nightly.20220429", + "20.0.0-nightly.20220502", + "20.0.0-nightly.20220503", + "20.0.0-nightly.20220504", + "20.0.0-nightly.20220505", + "20.0.0-nightly.20220506", + "20.0.0-nightly.20220509", + "20.0.0-nightly.20220511", + "20.0.0-nightly.20220512", + "20.0.0-nightly.20220513", + "20.0.0-nightly.20220516", + "20.0.0-nightly.20220517" + ], + "102.0.5005.27": [ + "19.0.0-beta.4" + ], + "102.0.5005.40": [ + "19.0.0-beta.5", + "19.0.0-beta.6", + "19.0.0-beta.7" + ], + "102.0.5005.49": [ + "19.0.0-beta.8" + ], + "102.0.4961.0": [ + "19.0.0-nightly.20220325" + ], + "102.0.5005.61": [ + "19.0.0", + "19.0.1" + ], + "102.0.5005.63": [ + "19.0.2", + "19.0.3", + "19.0.4" + ], + "102.0.5005.115": [ + "19.0.5", + "19.0.6" + ], + "102.0.5005.134": [ + "19.0.7" + ], + "102.0.5005.148": [ + "19.0.8" + ], + "103.0.5044.0": [ + "20.0.0-alpha.1", + "20.0.0-nightly.20220518", + "20.0.0-nightly.20220519", + "20.0.0-nightly.20220520", + "20.0.0-nightly.20220523", + "20.0.0-nightly.20220524", + "21.0.0-nightly.20220526", + "21.0.0-nightly.20220527", + "21.0.0-nightly.20220530", + "21.0.0-nightly.20220531" + ], + "104.0.5073.0": [ + "20.0.0-alpha.2", + "20.0.0-alpha.3", + "20.0.0-alpha.4", + "20.0.0-alpha.5", + "20.0.0-alpha.6", + "20.0.0-alpha.7", + "20.0.0-beta.1", + "20.0.0-beta.2", + "20.0.0-beta.3", + "20.0.0-beta.4", + "20.0.0-beta.5", + "20.0.0-beta.6", + "20.0.0-beta.7", + "20.0.0-beta.8", + "21.0.0-nightly.20220602", + "21.0.0-nightly.20220603", + "21.0.0-nightly.20220606", + "21.0.0-nightly.20220607", + "21.0.0-nightly.20220608", + "21.0.0-nightly.20220609", + "21.0.0-nightly.20220610", + "21.0.0-nightly.20220613", + "21.0.0-nightly.20220614", + "21.0.0-nightly.20220615", + "21.0.0-nightly.20220616", + "21.0.0-nightly.20220617", + "21.0.0-nightly.20220620", + "21.0.0-nightly.20220621", + "21.0.0-nightly.20220622", + "21.0.0-nightly.20220623", + "21.0.0-nightly.20220624", + "21.0.0-nightly.20220627" + ], + "104.0.5112.39": [ + "20.0.0-beta.9" + ], + "105.0.5129.0": [ + "21.0.0-nightly.20220628", + "21.0.0-nightly.20220629", + "21.0.0-nightly.20220630", + "21.0.0-nightly.20220701", + "21.0.0-nightly.20220704", + "21.0.0-nightly.20220705", + "21.0.0-nightly.20220706", + "21.0.0-nightly.20220707", + "21.0.0-nightly.20220708", + "21.0.0-nightly.20220711", + "21.0.0-nightly.20220712", + "21.0.0-nightly.20220713" + ], + "105.0.5173.0": [ + "21.0.0-nightly.20220715" ] }; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.json index 2e3a63cbb41097..50141518cea3be 100644 --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.json +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.json @@ -1 +1 @@ -{"39.0.2171.65":["0.20.0","0.20.1","0.20.2","0.20.3","0.20.4","0.20.5","0.20.6","0.20.7","0.20.8"],"40.0.2214.91":["0.21.0","0.21.1","0.21.2"],"41.0.2272.76":["0.21.3","0.22.1","0.22.2","0.22.3","0.23.0","0.24.0"],"42.0.2311.107":["0.25.0","0.25.1","0.25.2","0.25.3","0.26.0","0.26.1","0.27.0","0.27.1"],"43.0.2357.65":["0.27.2","0.27.3","0.28.0","0.28.1","0.28.2","0.28.3","0.29.1","0.29.2"],"44.0.2403.125":["0.30.4","0.31.0"],"45.0.2454.85":["0.31.2","0.32.2","0.32.3","0.33.0","0.33.1","0.33.2","0.33.3","0.33.4","0.33.6","0.33.7","0.33.8","0.33.9","0.34.0","0.34.1","0.34.2","0.34.3","0.34.4","0.35.1","0.35.2","0.35.3","0.35.4","0.35.5"],"47.0.2526.73":["0.36.0","0.36.2","0.36.3","0.36.4"],"47.0.2526.110":["0.36.5","0.36.6","0.36.7","0.36.8","0.36.9","0.36.10","0.36.11","0.36.12"],"49.0.2623.75":["0.37.0","0.37.1","0.37.3","0.37.4","0.37.5","0.37.6","0.37.7","0.37.8","1.0.0","1.0.1","1.0.2"],"50.0.2661.102":["1.1.0","1.1.1","1.1.2","1.1.3"],"51.0.2704.63":["1.2.0","1.2.1"],"51.0.2704.84":["1.2.2","1.2.3"],"51.0.2704.103":["1.2.4","1.2.5"],"51.0.2704.106":["1.2.6","1.2.7","1.2.8"],"52.0.2743.82":["1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3.9","1.3.10","1.3.13","1.3.14","1.3.15"],"53.0.2785.113":["1.4.0","1.4.1","1.4.2","1.4.3","1.4.4","1.4.5"],"53.0.2785.143":["1.4.6","1.4.7","1.4.8","1.4.10","1.4.11","1.4.13","1.4.14","1.4.15","1.4.16"],"54.0.2840.51":["1.4.12"],"54.0.2840.101":["1.5.0","1.5.1"],"56.0.2924.87":["1.6.0","1.6.1","1.6.2","1.6.3","1.6.4","1.6.5","1.6.6","1.6.7","1.6.8","1.6.9","1.6.10","1.6.11","1.6.12","1.6.13","1.6.14","1.6.15","1.6.16","1.6.17","1.6.18"],"58.0.3029.110":["1.7.0","1.7.1","1.7.2","1.7.3","1.7.4","1.7.5","1.7.6","1.7.7","1.7.8","1.7.9","1.7.10","1.7.11","1.7.12","1.7.13","1.7.14","1.7.15","1.7.16"],"59.0.3071.115":["1.8.0","1.8.1","1.8.2-beta.1","1.8.2-beta.2","1.8.2-beta.3","1.8.2-beta.4","1.8.2-beta.5","1.8.2","1.8.3","1.8.4","1.8.5","1.8.6","1.8.7","1.8.8"],"61.0.3163.100":["2.0.0-beta.1","2.0.0-beta.2","2.0.0-beta.3","2.0.0-beta.4","2.0.0-beta.5","2.0.0-beta.6","2.0.0-beta.7","2.0.0-beta.8","2.0.0","2.0.1","2.0.2","2.0.3","2.0.4","2.0.5","2.0.6","2.0.7","2.0.8-nightly.20180819","2.0.8-nightly.20180820","2.0.8","2.0.9","2.0.10","2.0.11","2.0.12","2.0.13","2.0.14","2.0.15","2.0.16","2.0.17","2.0.18","2.1.0-unsupported.20180809"],"66.0.3359.181":["3.0.0-beta.1","3.0.0-beta.2","3.0.0-beta.3","3.0.0-beta.4","3.0.0-beta.5","3.0.0-beta.6","3.0.0-beta.7","3.0.0-beta.8","3.0.0-beta.9","3.0.0-beta.10","3.0.0-beta.11","3.0.0-beta.12","3.0.0-beta.13","3.0.0-nightly.20180818","3.0.0-nightly.20180821","3.0.0-nightly.20180823","3.0.0-nightly.20180904","3.0.0","3.0.1","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","3.0.8","3.0.9","3.0.10","3.0.11","3.0.12","3.0.13","3.0.14","3.0.15","3.0.16","3.1.0-beta.1","3.1.0-beta.2","3.1.0-beta.3","3.1.0-beta.4","3.1.0-beta.5","3.1.0","3.1.1","3.1.2","3.1.3","3.1.4","3.1.5","3.1.6","3.1.7","3.1.8","3.1.9","3.1.10","3.1.11","3.1.12","3.1.13","4.0.0-nightly.20180817","4.0.0-nightly.20180819","4.0.0-nightly.20180821"],"69.0.3497.106":["4.0.0-beta.1","4.0.0-beta.2","4.0.0-beta.3","4.0.0-beta.4","4.0.0-beta.5","4.0.0-beta.6","4.0.0-beta.7","4.0.0-beta.8","4.0.0-beta.9","4.0.0-beta.10","4.0.0-beta.11","4.0.0-nightly.20181010","4.0.0","4.0.1","4.0.2","4.0.3","4.0.4","4.0.5","4.0.6"],"67.0.3396.99":["4.0.0-nightly.20180929"],"68.0.3440.128":["4.0.0-nightly.20181006"],"69.0.3497.128":["4.0.7","4.0.8","4.1.0","4.1.1","4.1.2","4.1.3","4.1.4","4.1.5","4.2.0","4.2.1","4.2.2","4.2.3","4.2.4","4.2.5","4.2.6","4.2.7","4.2.8","4.2.9","4.2.10","4.2.11","4.2.12"],"72.0.3626.52":["5.0.0-beta.1","5.0.0-beta.2"],"73.0.3683.27":["5.0.0-beta.3"],"73.0.3683.54":["5.0.0-beta.4"],"73.0.3683.61":["5.0.0-beta.5"],"73.0.3683.84":["5.0.0-beta.6"],"73.0.3683.94":["5.0.0-beta.7"],"73.0.3683.104":["5.0.0-beta.8"],"73.0.3683.117":["5.0.0-beta.9"],"70.0.3538.110":["5.0.0-nightly.20190107"],"71.0.3578.98":["5.0.0-nightly.20190121","5.0.0-nightly.20190122"],"73.0.3683.119":["5.0.0"],"73.0.3683.121":["5.0.1","5.0.2","5.0.3","5.0.4","5.0.5","5.0.6","5.0.7","5.0.8","5.0.9","5.0.10","5.0.11","5.0.12","5.0.13"],"76.0.3774.1":["6.0.0-beta.1"],"76.0.3783.1":["6.0.0-beta.2","6.0.0-beta.3","6.0.0-beta.4"],"76.0.3805.4":["6.0.0-beta.5"],"76.0.3809.3":["6.0.0-beta.6"],"76.0.3809.22":["6.0.0-beta.7"],"76.0.3809.26":["6.0.0-beta.8","6.0.0-beta.9"],"76.0.3809.37":["6.0.0-beta.10"],"76.0.3809.42":["6.0.0-beta.11"],"76.0.3809.54":["6.0.0-beta.12"],"76.0.3809.60":["6.0.0-beta.13"],"76.0.3809.68":["6.0.0-beta.14"],"76.0.3809.74":["6.0.0-beta.15"],"72.0.3626.107":["6.0.0-nightly.20190212"],"72.0.3626.110":["6.0.0-nightly.20190213"],"74.0.3724.8":["6.0.0-nightly.20190311"],"76.0.3809.88":["6.0.0"],"76.0.3809.102":["6.0.1"],"76.0.3809.110":["6.0.2"],"76.0.3809.126":["6.0.3"],"76.0.3809.131":["6.0.4"],"76.0.3809.136":["6.0.5"],"76.0.3809.138":["6.0.6"],"76.0.3809.139":["6.0.7"],"76.0.3809.146":["6.0.8","6.0.9","6.0.10","6.0.11","6.0.12","6.1.0","6.1.1","6.1.2","6.1.3","6.1.4","6.1.5","6.1.6","6.1.7","6.1.8","6.1.9","6.1.10","6.1.11","6.1.12"],"78.0.3866.0":["7.0.0-beta.1","7.0.0-beta.2","7.0.0-beta.3","7.0.0-nightly.20190727","7.0.0-nightly.20190728","7.0.0-nightly.20190729","7.0.0-nightly.20190730","7.0.0-nightly.20190731","8.0.0-nightly.20190801","8.0.0-nightly.20190802"],"78.0.3896.6":["7.0.0-beta.4"],"78.0.3905.1":["7.0.0-beta.5","7.0.0-beta.6","7.0.0-beta.7","7.0.0"],"76.0.3784.0":["7.0.0-nightly.20190521"],"76.0.3806.0":["7.0.0-nightly.20190529","7.0.0-nightly.20190530","7.0.0-nightly.20190531","7.0.0-nightly.20190602","7.0.0-nightly.20190603"],"77.0.3814.0":["7.0.0-nightly.20190604"],"77.0.3815.0":["7.0.0-nightly.20190605","7.0.0-nightly.20190606","7.0.0-nightly.20190607","7.0.0-nightly.20190608","7.0.0-nightly.20190609","7.0.0-nightly.20190611","7.0.0-nightly.20190612","7.0.0-nightly.20190613","7.0.0-nightly.20190615","7.0.0-nightly.20190616","7.0.0-nightly.20190618","7.0.0-nightly.20190619","7.0.0-nightly.20190622","7.0.0-nightly.20190623","7.0.0-nightly.20190624","7.0.0-nightly.20190627","7.0.0-nightly.20190629","7.0.0-nightly.20190630","7.0.0-nightly.20190701","7.0.0-nightly.20190702"],"77.0.3843.0":["7.0.0-nightly.20190704","7.0.0-nightly.20190705"],"77.0.3848.0":["7.0.0-nightly.20190719","7.0.0-nightly.20190720","7.0.0-nightly.20190721"],"77.0.3864.0":["7.0.0-nightly.20190726"],"78.0.3904.92":["7.0.1"],"78.0.3904.94":["7.1.0"],"78.0.3904.99":["7.1.1"],"78.0.3904.113":["7.1.2"],"78.0.3904.126":["7.1.3"],"78.0.3904.130":["7.1.4","7.1.5","7.1.6","7.1.7","7.1.8","7.1.9","7.1.10","7.1.11","7.1.12","7.1.13","7.1.14","7.2.0","7.2.1","7.2.2","7.2.3","7.2.4","7.3.0","7.3.1","7.3.2","7.3.3"],"79.0.3931.0":["8.0.0-beta.1","8.0.0-beta.2","8.0.0-nightly.20191019","8.0.0-nightly.20191020","8.0.0-nightly.20191021","8.0.0-nightly.20191023"],"80.0.3955.0":["8.0.0-beta.3","8.0.0-beta.4"],"80.0.3987.14":["8.0.0-beta.5"],"80.0.3987.51":["8.0.0-beta.6"],"80.0.3987.59":["8.0.0-beta.7"],"80.0.3987.75":["8.0.0-beta.8","8.0.0-beta.9"],"78.0.3871.0":["8.0.0-nightly.20190803","8.0.0-nightly.20190806","8.0.0-nightly.20190807","8.0.0-nightly.20190808","8.0.0-nightly.20190809","8.0.0-nightly.20190810","8.0.0-nightly.20190811","8.0.0-nightly.20190812","8.0.0-nightly.20190813","8.0.0-nightly.20190814","8.0.0-nightly.20190815"],"78.0.3881.0":["8.0.0-nightly.20190816","8.0.0-nightly.20190817","8.0.0-nightly.20190818","8.0.0-nightly.20190819","8.0.0-nightly.20190820"],"78.0.3892.0":["8.0.0-nightly.20190824","8.0.0-nightly.20190825","8.0.0-nightly.20190827","8.0.0-nightly.20190828","8.0.0-nightly.20190830","8.0.0-nightly.20190901","8.0.0-nightly.20190902","8.0.0-nightly.20190907","8.0.0-nightly.20190909","8.0.0-nightly.20190910","8.0.0-nightly.20190911","8.0.0-nightly.20190913","8.0.0-nightly.20190914","8.0.0-nightly.20190915","8.0.0-nightly.20190917"],"79.0.3915.0":["8.0.0-nightly.20190919","8.0.0-nightly.20190920"],"79.0.3919.0":["8.0.0-nightly.20190923","8.0.0-nightly.20190924","8.0.0-nightly.20190926","8.0.0-nightly.20190929","8.0.0-nightly.20190930","8.0.0-nightly.20191001","8.0.0-nightly.20191004","8.0.0-nightly.20191005","8.0.0-nightly.20191006","8.0.0-nightly.20191009","8.0.0-nightly.20191011","8.0.0-nightly.20191012","8.0.0-nightly.20191017"],"80.0.3952.0":["8.0.0-nightly.20191101","8.0.0-nightly.20191105"],"80.0.3987.86":["8.0.0","8.0.1","8.0.2"],"80.0.3987.134":["8.0.3"],"80.0.3987.137":["8.1.0"],"80.0.3987.141":["8.1.1"],"80.0.3987.158":["8.2.0"],"80.0.3987.163":["8.2.1","8.2.2","8.2.3","8.5.3","8.5.4","8.5.5"],"80.0.3987.165":["8.2.4","8.2.5","8.3.0","8.3.1","8.3.2","8.3.3","8.3.4","8.4.0","8.4.1","8.5.0","8.5.1","8.5.2"],"82.0.4048.0":["9.0.0-beta.1","9.0.0-beta.2","9.0.0-beta.3","9.0.0-beta.4","9.0.0-beta.5"],"82.0.4058.2":["9.0.0-beta.6","9.0.0-beta.7","9.0.0-beta.9"],"82.0.4085.10":["9.0.0-beta.10"],"82.0.4085.14":["9.0.0-beta.12","9.0.0-beta.13"],"82.0.4085.27":["9.0.0-beta.14"],"83.0.4102.3":["9.0.0-beta.15","9.0.0-beta.16"],"83.0.4103.14":["9.0.0-beta.17"],"83.0.4103.16":["9.0.0-beta.18"],"83.0.4103.24":["9.0.0-beta.19"],"83.0.4103.26":["9.0.0-beta.20","9.0.0-beta.21"],"83.0.4103.34":["9.0.0-beta.22"],"83.0.4103.44":["9.0.0-beta.23"],"83.0.4103.45":["9.0.0-beta.24"],"80.0.3954.0":["9.0.0-nightly.20191121","9.0.0-nightly.20191122","9.0.0-nightly.20191123","9.0.0-nightly.20191124","9.0.0-nightly.20191129","9.0.0-nightly.20191130","9.0.0-nightly.20191201","9.0.0-nightly.20191202","9.0.0-nightly.20191203","9.0.0-nightly.20191204","9.0.0-nightly.20191210"],"81.0.3994.0":["9.0.0-nightly.20191220","9.0.0-nightly.20191221","9.0.0-nightly.20191222","9.0.0-nightly.20191223","9.0.0-nightly.20191224","9.0.0-nightly.20191225","9.0.0-nightly.20191226","9.0.0-nightly.20191228","9.0.0-nightly.20191229","9.0.0-nightly.20191230","9.0.0-nightly.20191231","9.0.0-nightly.20200101","9.0.0-nightly.20200103","9.0.0-nightly.20200104","9.0.0-nightly.20200105","9.0.0-nightly.20200106","9.0.0-nightly.20200108","9.0.0-nightly.20200109","9.0.0-nightly.20200110","9.0.0-nightly.20200111","9.0.0-nightly.20200113","9.0.0-nightly.20200115","9.0.0-nightly.20200116","9.0.0-nightly.20200117"],"81.0.4030.0":["9.0.0-nightly.20200119","9.0.0-nightly.20200121"],"83.0.4103.64":["9.0.0"],"83.0.4103.94":["9.0.1","9.0.2"],"83.0.4103.100":["9.0.3"],"83.0.4103.104":["9.0.4"],"83.0.4103.119":["9.0.5"],"83.0.4103.122":["9.1.0","9.1.1","9.1.2","9.2.0","9.2.1","9.3.0","9.3.1","9.3.2","9.3.3","9.3.4","9.3.5","9.4.0","9.4.1","9.4.2","9.4.3","9.4.4"],"84.0.4129.0":["10.0.0-beta.1","10.0.0-beta.2","10.0.0-nightly.20200501","10.0.0-nightly.20200504","10.0.0-nightly.20200505","10.0.0-nightly.20200506","10.0.0-nightly.20200507","10.0.0-nightly.20200508","10.0.0-nightly.20200511","10.0.0-nightly.20200512","10.0.0-nightly.20200513","10.0.0-nightly.20200514","10.0.0-nightly.20200515","10.0.0-nightly.20200518","10.0.0-nightly.20200519","10.0.0-nightly.20200520","10.0.0-nightly.20200521","11.0.0-nightly.20200525","11.0.0-nightly.20200526"],"85.0.4161.2":["10.0.0-beta.3","10.0.0-beta.4"],"85.0.4181.1":["10.0.0-beta.8","10.0.0-beta.9"],"85.0.4183.19":["10.0.0-beta.10"],"85.0.4183.20":["10.0.0-beta.11"],"85.0.4183.26":["10.0.0-beta.12"],"85.0.4183.39":["10.0.0-beta.13","10.0.0-beta.14","10.0.0-beta.15","10.0.0-beta.17","10.0.0-beta.19","10.0.0-beta.20","10.0.0-beta.21"],"85.0.4183.70":["10.0.0-beta.23"],"85.0.4183.78":["10.0.0-beta.24"],"85.0.4183.80":["10.0.0-beta.25"],"82.0.4050.0":["10.0.0-nightly.20200209","10.0.0-nightly.20200210","10.0.0-nightly.20200211","10.0.0-nightly.20200216","10.0.0-nightly.20200217","10.0.0-nightly.20200218","10.0.0-nightly.20200221","10.0.0-nightly.20200222","10.0.0-nightly.20200223","10.0.0-nightly.20200226","10.0.0-nightly.20200303"],"82.0.4076.0":["10.0.0-nightly.20200304","10.0.0-nightly.20200305","10.0.0-nightly.20200306","10.0.0-nightly.20200309","10.0.0-nightly.20200310"],"82.0.4083.0":["10.0.0-nightly.20200311"],"83.0.4086.0":["10.0.0-nightly.20200316"],"83.0.4087.0":["10.0.0-nightly.20200317","10.0.0-nightly.20200318","10.0.0-nightly.20200320","10.0.0-nightly.20200323","10.0.0-nightly.20200324","10.0.0-nightly.20200325","10.0.0-nightly.20200326","10.0.0-nightly.20200327","10.0.0-nightly.20200330","10.0.0-nightly.20200331","10.0.0-nightly.20200401","10.0.0-nightly.20200402","10.0.0-nightly.20200403","10.0.0-nightly.20200406"],"83.0.4095.0":["10.0.0-nightly.20200408","10.0.0-nightly.20200410","10.0.0-nightly.20200413"],"84.0.4114.0":["10.0.0-nightly.20200414"],"84.0.4115.0":["10.0.0-nightly.20200415","10.0.0-nightly.20200416","10.0.0-nightly.20200417"],"84.0.4121.0":["10.0.0-nightly.20200422","10.0.0-nightly.20200423"],"84.0.4125.0":["10.0.0-nightly.20200427","10.0.0-nightly.20200428","10.0.0-nightly.20200429","10.0.0-nightly.20200430"],"85.0.4183.84":["10.0.0"],"85.0.4183.86":["10.0.1"],"85.0.4183.87":["10.1.0"],"85.0.4183.93":["10.1.1"],"85.0.4183.98":["10.1.2"],"85.0.4183.121":["10.1.3","10.1.4","10.1.5","10.1.6","10.1.7","10.2.0","10.3.0","10.3.1","10.3.2","10.4.0","10.4.1","10.4.2","10.4.3","10.4.4","10.4.5","10.4.6","10.4.7"],"86.0.4234.0":["11.0.0-beta.1","11.0.0-beta.3","11.0.0-beta.4","11.0.0-beta.5","11.0.0-beta.6","11.0.0-beta.7","11.0.0-nightly.20200822","11.0.0-nightly.20200824","11.0.0-nightly.20200825","11.0.0-nightly.20200826","12.0.0-nightly.20200827","12.0.0-nightly.20200831","12.0.0-nightly.20200902","12.0.0-nightly.20200903","12.0.0-nightly.20200907","12.0.0-nightly.20200910","12.0.0-nightly.20200911","12.0.0-nightly.20200914"],"87.0.4251.1":["11.0.0-beta.8","11.0.0-beta.9","11.0.0-beta.11"],"87.0.4280.11":["11.0.0-beta.12","11.0.0-beta.13"],"87.0.4280.27":["11.0.0-beta.16","11.0.0-beta.17","11.0.0-beta.18","11.0.0-beta.19"],"87.0.4280.40":["11.0.0-beta.20"],"87.0.4280.47":["11.0.0-beta.22","11.0.0-beta.23"],"85.0.4156.0":["11.0.0-nightly.20200529"],"85.0.4162.0":["11.0.0-nightly.20200602","11.0.0-nightly.20200603","11.0.0-nightly.20200604","11.0.0-nightly.20200609","11.0.0-nightly.20200610","11.0.0-nightly.20200611","11.0.0-nightly.20200615","11.0.0-nightly.20200616","11.0.0-nightly.20200617","11.0.0-nightly.20200618","11.0.0-nightly.20200619"],"85.0.4179.0":["11.0.0-nightly.20200701","11.0.0-nightly.20200702","11.0.0-nightly.20200703","11.0.0-nightly.20200706","11.0.0-nightly.20200707","11.0.0-nightly.20200708","11.0.0-nightly.20200709"],"86.0.4203.0":["11.0.0-nightly.20200716","11.0.0-nightly.20200717","11.0.0-nightly.20200720","11.0.0-nightly.20200721"],"86.0.4209.0":["11.0.0-nightly.20200723","11.0.0-nightly.20200724","11.0.0-nightly.20200729","11.0.0-nightly.20200730","11.0.0-nightly.20200731","11.0.0-nightly.20200803","11.0.0-nightly.20200804","11.0.0-nightly.20200805","11.0.0-nightly.20200811","11.0.0-nightly.20200812"],"87.0.4280.60":["11.0.0","11.0.1"],"87.0.4280.67":["11.0.2","11.0.3","11.0.4"],"87.0.4280.88":["11.0.5","11.1.0","11.1.1"],"87.0.4280.141":["11.2.0","11.2.1","11.2.2","11.2.3","11.3.0","11.4.0","11.4.1","11.4.2","11.4.3","11.4.4","11.4.5","11.4.6","11.4.7","11.4.8","11.4.9","11.4.10","11.4.11","11.4.12","11.5.0"],"89.0.4328.0":["12.0.0-beta.1","12.0.0-beta.3","12.0.0-beta.4","12.0.0-beta.5","12.0.0-beta.6","12.0.0-beta.7","12.0.0-beta.8","12.0.0-beta.9","12.0.0-beta.10","12.0.0-beta.11","12.0.0-beta.12","12.0.0-beta.14","13.0.0-nightly.20201119","13.0.0-nightly.20201123","13.0.0-nightly.20201124","13.0.0-nightly.20201126","13.0.0-nightly.20201127","13.0.0-nightly.20201130","13.0.0-nightly.20201201","13.0.0-nightly.20201202","13.0.0-nightly.20201203","13.0.0-nightly.20201204","13.0.0-nightly.20201207","13.0.0-nightly.20201208","13.0.0-nightly.20201209","13.0.0-nightly.20201210","13.0.0-nightly.20201211","13.0.0-nightly.20201214"],"89.0.4348.1":["12.0.0-beta.16","12.0.0-beta.18","12.0.0-beta.19","12.0.0-beta.20"],"89.0.4388.2":["12.0.0-beta.21","12.0.0-beta.22","12.0.0-beta.23","12.0.0-beta.24","12.0.0-beta.25","12.0.0-beta.26"],"89.0.4389.23":["12.0.0-beta.27","12.0.0-beta.28","12.0.0-beta.29"],"89.0.4389.58":["12.0.0-beta.30","12.0.0-beta.31"],"87.0.4268.0":["12.0.0-nightly.20201013","12.0.0-nightly.20201014","12.0.0-nightly.20201015"],"88.0.4292.0":["12.0.0-nightly.20201023","12.0.0-nightly.20201026"],"88.0.4306.0":["12.0.0-nightly.20201030","12.0.0-nightly.20201102","12.0.0-nightly.20201103","12.0.0-nightly.20201104","12.0.0-nightly.20201105","12.0.0-nightly.20201106","12.0.0-nightly.20201111","12.0.0-nightly.20201112"],"88.0.4324.0":["12.0.0-nightly.20201116"],"89.0.4389.69":["12.0.0"],"89.0.4389.82":["12.0.1"],"89.0.4389.90":["12.0.2"],"89.0.4389.114":["12.0.3","12.0.4"],"89.0.4389.128":["12.0.5","12.0.6","12.0.7","12.0.8","12.0.9","12.0.10","12.0.11","12.0.12","12.0.13","12.0.14","12.0.15","12.0.16","12.0.17","12.0.18","12.1.0","12.1.1","12.1.2","12.2.0","12.2.1","12.2.2","12.2.3"],"90.0.4402.0":["13.0.0-beta.2","13.0.0-beta.3","13.0.0-nightly.20210210","13.0.0-nightly.20210211","13.0.0-nightly.20210212","13.0.0-nightly.20210216","13.0.0-nightly.20210217","13.0.0-nightly.20210218","13.0.0-nightly.20210219","13.0.0-nightly.20210222","13.0.0-nightly.20210225","13.0.0-nightly.20210226","13.0.0-nightly.20210301","13.0.0-nightly.20210302","13.0.0-nightly.20210303","14.0.0-nightly.20210304"],"90.0.4415.0":["13.0.0-beta.4","13.0.0-beta.5","13.0.0-beta.6","13.0.0-beta.7","13.0.0-beta.8","13.0.0-beta.9","13.0.0-beta.11","13.0.0-beta.12","13.0.0-beta.13","14.0.0-nightly.20210305","14.0.0-nightly.20210308","14.0.0-nightly.20210309","14.0.0-nightly.20210311","14.0.0-nightly.20210315","14.0.0-nightly.20210316","14.0.0-nightly.20210317","14.0.0-nightly.20210318","14.0.0-nightly.20210319","14.0.0-nightly.20210323","14.0.0-nightly.20210324","14.0.0-nightly.20210325","14.0.0-nightly.20210326","14.0.0-nightly.20210329","14.0.0-nightly.20210330"],"91.0.4448.0":["13.0.0-beta.14","13.0.0-beta.16","13.0.0-beta.17","13.0.0-beta.18","13.0.0-beta.20","14.0.0-nightly.20210331","14.0.0-nightly.20210401","14.0.0-nightly.20210402","14.0.0-nightly.20210406","14.0.0-nightly.20210407","14.0.0-nightly.20210408","14.0.0-nightly.20210409","14.0.0-nightly.20210413"],"91.0.4472.33":["13.0.0-beta.21","13.0.0-beta.22","13.0.0-beta.23"],"91.0.4472.38":["13.0.0-beta.24","13.0.0-beta.26","13.0.0-beta.27","13.0.0-beta.28"],"89.0.4349.0":["13.0.0-nightly.20201215","13.0.0-nightly.20201216","13.0.0-nightly.20201221","13.0.0-nightly.20201222"],"89.0.4359.0":["13.0.0-nightly.20201223","13.0.0-nightly.20210104","13.0.0-nightly.20210108","13.0.0-nightly.20210111"],"89.0.4386.0":["13.0.0-nightly.20210113","13.0.0-nightly.20210114","13.0.0-nightly.20210118","13.0.0-nightly.20210122","13.0.0-nightly.20210125"],"89.0.4389.0":["13.0.0-nightly.20210127","13.0.0-nightly.20210128","13.0.0-nightly.20210129","13.0.0-nightly.20210201","13.0.0-nightly.20210202","13.0.0-nightly.20210203","13.0.0-nightly.20210205","13.0.0-nightly.20210208","13.0.0-nightly.20210209"],"91.0.4472.69":["13.0.0","13.0.1"],"91.0.4472.77":["13.1.0","13.1.1","13.1.2"],"91.0.4472.106":["13.1.3","13.1.4"],"91.0.4472.124":["13.1.5","13.1.6","13.1.7"],"91.0.4472.164":["13.1.8","13.1.9","13.2.0","13.2.1","13.2.2","13.2.3","13.3.0","13.4.0","13.5.0","13.5.1","13.5.2","13.6.0","13.6.1","13.6.2","13.6.3","13.6.6","13.6.7","13.6.8","13.6.9"],"92.0.4511.0":["14.0.0-beta.1","14.0.0-beta.2","14.0.0-beta.3","14.0.0-nightly.20210520","14.0.0-nightly.20210523","14.0.0-nightly.20210524","15.0.0-nightly.20210527","15.0.0-nightly.20210528","15.0.0-nightly.20210531","15.0.0-nightly.20210601","15.0.0-nightly.20210602"],"93.0.4536.0":["14.0.0-beta.5","14.0.0-beta.6","14.0.0-beta.7","14.0.0-beta.8","15.0.0-nightly.20210609","15.0.0-nightly.20210610","15.0.0-nightly.20210611","15.0.0-nightly.20210614","15.0.0-nightly.20210615","15.0.0-nightly.20210616"],"93.0.4539.0":["14.0.0-beta.9","14.0.0-beta.10","15.0.0-nightly.20210617","15.0.0-nightly.20210618","15.0.0-nightly.20210621","15.0.0-nightly.20210622"],"93.0.4557.4":["14.0.0-beta.11","14.0.0-beta.12"],"93.0.4566.0":["14.0.0-beta.13","14.0.0-beta.14","14.0.0-beta.15","14.0.0-beta.16","14.0.0-beta.17","15.0.0-alpha.1","15.0.0-alpha.2","15.0.0-nightly.20210706","15.0.0-nightly.20210707","15.0.0-nightly.20210708","15.0.0-nightly.20210709","15.0.0-nightly.20210712","15.0.0-nightly.20210713","15.0.0-nightly.20210714","15.0.0-nightly.20210715","15.0.0-nightly.20210716","15.0.0-nightly.20210719","15.0.0-nightly.20210720","15.0.0-nightly.20210721","16.0.0-nightly.20210722","16.0.0-nightly.20210723","16.0.0-nightly.20210726"],"93.0.4577.15":["14.0.0-beta.18","14.0.0-beta.19","14.0.0-beta.20","14.0.0-beta.21"],"93.0.4577.25":["14.0.0-beta.22","14.0.0-beta.23"],"93.0.4577.51":["14.0.0-beta.24","14.0.0-beta.25"],"92.0.4475.0":["14.0.0-nightly.20210426","14.0.0-nightly.20210427"],"92.0.4488.0":["14.0.0-nightly.20210430","14.0.0-nightly.20210503"],"92.0.4496.0":["14.0.0-nightly.20210505"],"92.0.4498.0":["14.0.0-nightly.20210506"],"92.0.4499.0":["14.0.0-nightly.20210507","14.0.0-nightly.20210510","14.0.0-nightly.20210511","14.0.0-nightly.20210512","14.0.0-nightly.20210513"],"92.0.4505.0":["14.0.0-nightly.20210514","14.0.0-nightly.20210517","14.0.0-nightly.20210518","14.0.0-nightly.20210519"],"93.0.4577.58":["14.0.0"],"93.0.4577.63":["14.0.1"],"93.0.4577.82":["14.0.2","14.1.0","14.1.1","14.2.0","14.2.1","14.2.2","14.2.3","14.2.4","14.2.5","14.2.6","14.2.7"],"94.0.4584.0":["15.0.0-alpha.3","15.0.0-alpha.4","15.0.0-alpha.5","15.0.0-alpha.6","16.0.0-nightly.20210727","16.0.0-nightly.20210728","16.0.0-nightly.20210729","16.0.0-nightly.20210730","16.0.0-nightly.20210802","16.0.0-nightly.20210803","16.0.0-nightly.20210804","16.0.0-nightly.20210805","16.0.0-nightly.20210806","16.0.0-nightly.20210809","16.0.0-nightly.20210810","16.0.0-nightly.20210811"],"94.0.4590.2":["15.0.0-alpha.7","15.0.0-alpha.8","15.0.0-alpha.9","16.0.0-nightly.20210812","16.0.0-nightly.20210813","16.0.0-nightly.20210816","16.0.0-nightly.20210817","16.0.0-nightly.20210818","16.0.0-nightly.20210819","16.0.0-nightly.20210820","16.0.0-nightly.20210823"],"94.0.4606.12":["15.0.0-alpha.10"],"94.0.4606.20":["15.0.0-beta.1","15.0.0-beta.2"],"94.0.4606.31":["15.0.0-beta.3","15.0.0-beta.4","15.0.0-beta.5","15.0.0-beta.6","15.0.0-beta.7"],"93.0.4530.0":["15.0.0-nightly.20210603","15.0.0-nightly.20210604"],"93.0.4535.0":["15.0.0-nightly.20210608"],"93.0.4550.0":["15.0.0-nightly.20210623","15.0.0-nightly.20210624"],"93.0.4552.0":["15.0.0-nightly.20210625","15.0.0-nightly.20210628","15.0.0-nightly.20210629"],"93.0.4558.0":["15.0.0-nightly.20210630","15.0.0-nightly.20210701","15.0.0-nightly.20210702","15.0.0-nightly.20210705"],"94.0.4606.51":["15.0.0"],"94.0.4606.61":["15.1.0","15.1.1"],"94.0.4606.71":["15.1.2"],"94.0.4606.81":["15.2.0","15.3.0","15.3.1","15.3.2","15.3.3","15.3.4","15.3.5","15.3.6","15.3.7","15.4.0","15.4.1"],"95.0.4629.0":["16.0.0-alpha.1","16.0.0-alpha.2","16.0.0-alpha.3","16.0.0-alpha.4","16.0.0-alpha.5","16.0.0-alpha.6","16.0.0-alpha.7","16.0.0-nightly.20210902","16.0.0-nightly.20210903","16.0.0-nightly.20210906","16.0.0-nightly.20210907","16.0.0-nightly.20210908","16.0.0-nightly.20210909","16.0.0-nightly.20210910","16.0.0-nightly.20210913","16.0.0-nightly.20210914","16.0.0-nightly.20210915","16.0.0-nightly.20210916","16.0.0-nightly.20210917","16.0.0-nightly.20210920","16.0.0-nightly.20210921","16.0.0-nightly.20210922","17.0.0-nightly.20210923","17.0.0-nightly.20210924","17.0.0-nightly.20210927","17.0.0-nightly.20210928","17.0.0-nightly.20210929","17.0.0-nightly.20210930","17.0.0-nightly.20211001","17.0.0-nightly.20211004","17.0.0-nightly.20211005"],"96.0.4647.0":["16.0.0-alpha.8","16.0.0-alpha.9","16.0.0-beta.1","16.0.0-beta.2","16.0.0-beta.3","17.0.0-nightly.20211006","17.0.0-nightly.20211007","17.0.0-nightly.20211008","17.0.0-nightly.20211011","17.0.0-nightly.20211012","17.0.0-nightly.20211013","17.0.0-nightly.20211014","17.0.0-nightly.20211015","17.0.0-nightly.20211018","17.0.0-nightly.20211019","17.0.0-nightly.20211020","17.0.0-nightly.20211021"],"96.0.4664.18":["16.0.0-beta.4","16.0.0-beta.5"],"96.0.4664.27":["16.0.0-beta.6","16.0.0-beta.7"],"96.0.4664.35":["16.0.0-beta.8","16.0.0-beta.9"],"95.0.4612.5":["16.0.0-nightly.20210824","16.0.0-nightly.20210825","16.0.0-nightly.20210826","16.0.0-nightly.20210827","16.0.0-nightly.20210830","16.0.0-nightly.20210831","16.0.0-nightly.20210901"],"96.0.4664.45":["16.0.0","16.0.1"],"96.0.4664.55":["16.0.2","16.0.3","16.0.4","16.0.5"],"96.0.4664.110":["16.0.6","16.0.7","16.0.8"],"96.0.4664.174":["16.0.9","16.0.10","16.1.0"],"96.0.4664.4":["17.0.0-alpha.1","17.0.0-alpha.2","17.0.0-alpha.3","17.0.0-nightly.20211022","17.0.0-nightly.20211025","17.0.0-nightly.20211026","17.0.0-nightly.20211027","17.0.0-nightly.20211028","17.0.0-nightly.20211029","17.0.0-nightly.20211101","17.0.0-nightly.20211102","17.0.0-nightly.20211103","17.0.0-nightly.20211104","17.0.0-nightly.20211105","17.0.0-nightly.20211108","17.0.0-nightly.20211109","17.0.0-nightly.20211110","17.0.0-nightly.20211111","17.0.0-nightly.20211112","17.0.0-nightly.20211115","17.0.0-nightly.20211116","17.0.0-nightly.20211117","18.0.0-nightly.20211118","18.0.0-nightly.20211119","18.0.0-nightly.20211122","18.0.0-nightly.20211123"],"98.0.4706.0":["17.0.0-alpha.4","17.0.0-alpha.5","17.0.0-alpha.6","17.0.0-beta.1","17.0.0-beta.2","18.0.0-nightly.20211124","18.0.0-nightly.20211125","18.0.0-nightly.20211126","18.0.0-nightly.20211129","18.0.0-nightly.20211130","18.0.0-nightly.20211201","18.0.0-nightly.20211202","18.0.0-nightly.20211203","18.0.0-nightly.20211206","18.0.0-nightly.20211207","18.0.0-nightly.20211208","18.0.0-nightly.20211209","18.0.0-nightly.20211210","18.0.0-nightly.20211213","18.0.0-nightly.20211214","18.0.0-nightly.20211215","18.0.0-nightly.20211216","18.0.0-nightly.20211217","18.0.0-nightly.20211220","18.0.0-nightly.20211221","18.0.0-nightly.20211222","18.0.0-nightly.20211223","18.0.0-nightly.20211228","18.0.0-nightly.20211229","18.0.0-nightly.20211231","18.0.0-nightly.20220103","18.0.0-nightly.20220104","18.0.0-nightly.20220105","18.0.0-nightly.20220106","18.0.0-nightly.20220107","18.0.0-nightly.20220110"],"98.0.4758.9":["17.0.0-beta.3"],"98.0.4758.11":["17.0.0-beta.4","17.0.0-beta.5","17.0.0-beta.6","17.0.0-beta.7","17.0.0-beta.8","17.0.0-beta.9"],"98.0.4758.74":["17.0.0"],"98.0.4758.82":["17.0.1"],"98.0.4758.102":["17.1.0"],"98.0.4758.109":["17.1.1","17.1.2"],"99.0.4767.0":["18.0.0-alpha.1","18.0.0-alpha.2","18.0.0-alpha.3","18.0.0-alpha.4","18.0.0-alpha.5","18.0.0-nightly.20220111","18.0.0-nightly.20220112","18.0.0-nightly.20220113","18.0.0-nightly.20220114","18.0.0-nightly.20220117","18.0.0-nightly.20220118","18.0.0-nightly.20220119","18.0.0-nightly.20220121","18.0.0-nightly.20220124","18.0.0-nightly.20220125","18.0.0-nightly.20220127","18.0.0-nightly.20220128","18.0.0-nightly.20220131","18.0.0-nightly.20220201","19.0.0-nightly.20220202","19.0.0-nightly.20220203","19.0.0-nightly.20220204","19.0.0-nightly.20220207","19.0.0-nightly.20220208","19.0.0-nightly.20220209"],"100.0.4894.0":["18.0.0-beta.1","18.0.0-beta.2","19.0.0-nightly.20220308","19.0.0-nightly.20220309","19.0.0-nightly.20220310","19.0.0-nightly.20220311"]} \ No newline at end of file +{"39.0.2171.65":["0.20.0","0.20.1","0.20.2","0.20.3","0.20.4","0.20.5","0.20.6","0.20.7","0.20.8"],"40.0.2214.91":["0.21.0","0.21.1","0.21.2"],"41.0.2272.76":["0.21.3","0.22.1","0.22.2","0.22.3","0.23.0","0.24.0"],"42.0.2311.107":["0.25.0","0.25.1","0.25.2","0.25.3","0.26.0","0.26.1","0.27.0","0.27.1"],"43.0.2357.65":["0.27.2","0.27.3","0.28.0","0.28.1","0.28.2","0.28.3","0.29.1","0.29.2"],"44.0.2403.125":["0.30.4","0.31.0"],"45.0.2454.85":["0.31.2","0.32.2","0.32.3","0.33.0","0.33.1","0.33.2","0.33.3","0.33.4","0.33.6","0.33.7","0.33.8","0.33.9","0.34.0","0.34.1","0.34.2","0.34.3","0.34.4","0.35.1","0.35.2","0.35.3","0.35.4","0.35.5"],"47.0.2526.73":["0.36.0","0.36.2","0.36.3","0.36.4"],"47.0.2526.110":["0.36.5","0.36.6","0.36.7","0.36.8","0.36.9","0.36.10","0.36.11","0.36.12"],"49.0.2623.75":["0.37.0","0.37.1","0.37.3","0.37.4","0.37.5","0.37.6","0.37.7","0.37.8","1.0.0","1.0.1","1.0.2"],"50.0.2661.102":["1.1.0","1.1.1","1.1.2","1.1.3"],"51.0.2704.63":["1.2.0","1.2.1"],"51.0.2704.84":["1.2.2","1.2.3"],"51.0.2704.103":["1.2.4","1.2.5"],"51.0.2704.106":["1.2.6","1.2.7","1.2.8"],"52.0.2743.82":["1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3.9","1.3.10","1.3.13","1.3.14","1.3.15"],"53.0.2785.113":["1.4.0","1.4.1","1.4.2","1.4.3","1.4.4","1.4.5"],"53.0.2785.143":["1.4.6","1.4.7","1.4.8","1.4.10","1.4.11","1.4.13","1.4.14","1.4.15","1.4.16"],"54.0.2840.51":["1.4.12"],"54.0.2840.101":["1.5.0","1.5.1"],"56.0.2924.87":["1.6.0","1.6.1","1.6.2","1.6.3","1.6.4","1.6.5","1.6.6","1.6.7","1.6.8","1.6.9","1.6.10","1.6.11","1.6.12","1.6.13","1.6.14","1.6.15","1.6.16","1.6.17","1.6.18"],"58.0.3029.110":["1.7.0","1.7.1","1.7.2","1.7.3","1.7.4","1.7.5","1.7.6","1.7.7","1.7.8","1.7.9","1.7.10","1.7.11","1.7.12","1.7.13","1.7.14","1.7.15","1.7.16"],"59.0.3071.115":["1.8.0","1.8.1","1.8.2-beta.1","1.8.2-beta.2","1.8.2-beta.3","1.8.2-beta.4","1.8.2-beta.5","1.8.2","1.8.3","1.8.4","1.8.5","1.8.6","1.8.7","1.8.8"],"61.0.3163.100":["2.0.0-beta.1","2.0.0-beta.2","2.0.0-beta.3","2.0.0-beta.4","2.0.0-beta.5","2.0.0-beta.6","2.0.0-beta.7","2.0.0-beta.8","2.0.0","2.0.1","2.0.2","2.0.3","2.0.4","2.0.5","2.0.6","2.0.7","2.0.8-nightly.20180819","2.0.8-nightly.20180820","2.0.8","2.0.9","2.0.10","2.0.11","2.0.12","2.0.13","2.0.14","2.0.15","2.0.16","2.0.17","2.0.18","2.1.0-unsupported.20180809"],"66.0.3359.181":["3.0.0-beta.1","3.0.0-beta.2","3.0.0-beta.3","3.0.0-beta.4","3.0.0-beta.5","3.0.0-beta.6","3.0.0-beta.7","3.0.0-beta.8","3.0.0-beta.9","3.0.0-beta.10","3.0.0-beta.11","3.0.0-beta.12","3.0.0-beta.13","3.0.0-nightly.20180818","3.0.0-nightly.20180821","3.0.0-nightly.20180823","3.0.0-nightly.20180904","3.0.0","3.0.1","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","3.0.8","3.0.9","3.0.10","3.0.11","3.0.12","3.0.13","3.0.14","3.0.15","3.0.16","3.1.0-beta.1","3.1.0-beta.2","3.1.0-beta.3","3.1.0-beta.4","3.1.0-beta.5","3.1.0","3.1.1","3.1.2","3.1.3","3.1.4","3.1.5","3.1.6","3.1.7","3.1.8","3.1.9","3.1.10","3.1.11","3.1.12","3.1.13","4.0.0-nightly.20180817","4.0.0-nightly.20180819","4.0.0-nightly.20180821"],"69.0.3497.106":["4.0.0-beta.1","4.0.0-beta.2","4.0.0-beta.3","4.0.0-beta.4","4.0.0-beta.5","4.0.0-beta.6","4.0.0-beta.7","4.0.0-beta.8","4.0.0-beta.9","4.0.0-beta.10","4.0.0-beta.11","4.0.0-nightly.20181010","4.0.0","4.0.1","4.0.2","4.0.3","4.0.4","4.0.5","4.0.6"],"67.0.3396.99":["4.0.0-nightly.20180929"],"68.0.3440.128":["4.0.0-nightly.20181006"],"69.0.3497.128":["4.0.7","4.0.8","4.1.0","4.1.1","4.1.2","4.1.3","4.1.4","4.1.5","4.2.0","4.2.1","4.2.2","4.2.3","4.2.4","4.2.5","4.2.6","4.2.7","4.2.8","4.2.9","4.2.10","4.2.11","4.2.12"],"72.0.3626.52":["5.0.0-beta.1","5.0.0-beta.2"],"73.0.3683.27":["5.0.0-beta.3"],"73.0.3683.54":["5.0.0-beta.4"],"73.0.3683.61":["5.0.0-beta.5"],"73.0.3683.84":["5.0.0-beta.6"],"73.0.3683.94":["5.0.0-beta.7"],"73.0.3683.104":["5.0.0-beta.8"],"73.0.3683.117":["5.0.0-beta.9"],"70.0.3538.110":["5.0.0-nightly.20190107"],"71.0.3578.98":["5.0.0-nightly.20190121","5.0.0-nightly.20190122"],"73.0.3683.119":["5.0.0"],"73.0.3683.121":["5.0.1","5.0.2","5.0.3","5.0.4","5.0.5","5.0.6","5.0.7","5.0.8","5.0.9","5.0.10","5.0.11","5.0.12","5.0.13"],"76.0.3774.1":["6.0.0-beta.1"],"76.0.3783.1":["6.0.0-beta.2","6.0.0-beta.3","6.0.0-beta.4"],"76.0.3805.4":["6.0.0-beta.5"],"76.0.3809.3":["6.0.0-beta.6"],"76.0.3809.22":["6.0.0-beta.7"],"76.0.3809.26":["6.0.0-beta.8","6.0.0-beta.9"],"76.0.3809.37":["6.0.0-beta.10"],"76.0.3809.42":["6.0.0-beta.11"],"76.0.3809.54":["6.0.0-beta.12"],"76.0.3809.60":["6.0.0-beta.13"],"76.0.3809.68":["6.0.0-beta.14"],"76.0.3809.74":["6.0.0-beta.15"],"72.0.3626.107":["6.0.0-nightly.20190212"],"72.0.3626.110":["6.0.0-nightly.20190213"],"74.0.3724.8":["6.0.0-nightly.20190311"],"76.0.3809.88":["6.0.0"],"76.0.3809.102":["6.0.1"],"76.0.3809.110":["6.0.2"],"76.0.3809.126":["6.0.3"],"76.0.3809.131":["6.0.4"],"76.0.3809.136":["6.0.5"],"76.0.3809.138":["6.0.6"],"76.0.3809.139":["6.0.7"],"76.0.3809.146":["6.0.8","6.0.9","6.0.10","6.0.11","6.0.12","6.1.0","6.1.1","6.1.2","6.1.3","6.1.4","6.1.5","6.1.6","6.1.7","6.1.8","6.1.9","6.1.10","6.1.11","6.1.12"],"78.0.3866.0":["7.0.0-beta.1","7.0.0-beta.2","7.0.0-beta.3","7.0.0-nightly.20190727","7.0.0-nightly.20190728","7.0.0-nightly.20190729","7.0.0-nightly.20190730","7.0.0-nightly.20190731","8.0.0-nightly.20190801","8.0.0-nightly.20190802"],"78.0.3896.6":["7.0.0-beta.4"],"78.0.3905.1":["7.0.0-beta.5","7.0.0-beta.6","7.0.0-beta.7","7.0.0"],"76.0.3784.0":["7.0.0-nightly.20190521"],"76.0.3806.0":["7.0.0-nightly.20190529","7.0.0-nightly.20190530","7.0.0-nightly.20190531","7.0.0-nightly.20190602","7.0.0-nightly.20190603"],"77.0.3814.0":["7.0.0-nightly.20190604"],"77.0.3815.0":["7.0.0-nightly.20190605","7.0.0-nightly.20190606","7.0.0-nightly.20190607","7.0.0-nightly.20190608","7.0.0-nightly.20190609","7.0.0-nightly.20190611","7.0.0-nightly.20190612","7.0.0-nightly.20190613","7.0.0-nightly.20190615","7.0.0-nightly.20190616","7.0.0-nightly.20190618","7.0.0-nightly.20190619","7.0.0-nightly.20190622","7.0.0-nightly.20190623","7.0.0-nightly.20190624","7.0.0-nightly.20190627","7.0.0-nightly.20190629","7.0.0-nightly.20190630","7.0.0-nightly.20190701","7.0.0-nightly.20190702"],"77.0.3843.0":["7.0.0-nightly.20190704","7.0.0-nightly.20190705"],"77.0.3848.0":["7.0.0-nightly.20190719","7.0.0-nightly.20190720","7.0.0-nightly.20190721"],"77.0.3864.0":["7.0.0-nightly.20190726"],"78.0.3904.92":["7.0.1"],"78.0.3904.94":["7.1.0"],"78.0.3904.99":["7.1.1"],"78.0.3904.113":["7.1.2"],"78.0.3904.126":["7.1.3"],"78.0.3904.130":["7.1.4","7.1.5","7.1.6","7.1.7","7.1.8","7.1.9","7.1.10","7.1.11","7.1.12","7.1.13","7.1.14","7.2.0","7.2.1","7.2.2","7.2.3","7.2.4","7.3.0","7.3.1","7.3.2","7.3.3"],"79.0.3931.0":["8.0.0-beta.1","8.0.0-beta.2","8.0.0-nightly.20191019","8.0.0-nightly.20191020","8.0.0-nightly.20191021","8.0.0-nightly.20191023"],"80.0.3955.0":["8.0.0-beta.3","8.0.0-beta.4"],"80.0.3987.14":["8.0.0-beta.5"],"80.0.3987.51":["8.0.0-beta.6"],"80.0.3987.59":["8.0.0-beta.7"],"80.0.3987.75":["8.0.0-beta.8","8.0.0-beta.9"],"78.0.3871.0":["8.0.0-nightly.20190803","8.0.0-nightly.20190806","8.0.0-nightly.20190807","8.0.0-nightly.20190808","8.0.0-nightly.20190809","8.0.0-nightly.20190810","8.0.0-nightly.20190811","8.0.0-nightly.20190812","8.0.0-nightly.20190813","8.0.0-nightly.20190814","8.0.0-nightly.20190815"],"78.0.3881.0":["8.0.0-nightly.20190816","8.0.0-nightly.20190817","8.0.0-nightly.20190818","8.0.0-nightly.20190819","8.0.0-nightly.20190820"],"78.0.3892.0":["8.0.0-nightly.20190824","8.0.0-nightly.20190825","8.0.0-nightly.20190827","8.0.0-nightly.20190828","8.0.0-nightly.20190830","8.0.0-nightly.20190901","8.0.0-nightly.20190902","8.0.0-nightly.20190907","8.0.0-nightly.20190909","8.0.0-nightly.20190910","8.0.0-nightly.20190911","8.0.0-nightly.20190913","8.0.0-nightly.20190914","8.0.0-nightly.20190915","8.0.0-nightly.20190917"],"79.0.3915.0":["8.0.0-nightly.20190919","8.0.0-nightly.20190920"],"79.0.3919.0":["8.0.0-nightly.20190923","8.0.0-nightly.20190924","8.0.0-nightly.20190926","8.0.0-nightly.20190929","8.0.0-nightly.20190930","8.0.0-nightly.20191001","8.0.0-nightly.20191004","8.0.0-nightly.20191005","8.0.0-nightly.20191006","8.0.0-nightly.20191009","8.0.0-nightly.20191011","8.0.0-nightly.20191012","8.0.0-nightly.20191017"],"80.0.3952.0":["8.0.0-nightly.20191101","8.0.0-nightly.20191105"],"80.0.3987.86":["8.0.0","8.0.1","8.0.2"],"80.0.3987.134":["8.0.3"],"80.0.3987.137":["8.1.0"],"80.0.3987.141":["8.1.1"],"80.0.3987.158":["8.2.0"],"80.0.3987.163":["8.2.1","8.2.2","8.2.3","8.5.3","8.5.4","8.5.5"],"80.0.3987.165":["8.2.4","8.2.5","8.3.0","8.3.1","8.3.2","8.3.3","8.3.4","8.4.0","8.4.1","8.5.0","8.5.1","8.5.2"],"82.0.4048.0":["9.0.0-beta.1","9.0.0-beta.2","9.0.0-beta.3","9.0.0-beta.4","9.0.0-beta.5"],"82.0.4058.2":["9.0.0-beta.6","9.0.0-beta.7","9.0.0-beta.9"],"82.0.4085.10":["9.0.0-beta.10"],"82.0.4085.14":["9.0.0-beta.12","9.0.0-beta.13"],"82.0.4085.27":["9.0.0-beta.14"],"83.0.4102.3":["9.0.0-beta.15","9.0.0-beta.16"],"83.0.4103.14":["9.0.0-beta.17"],"83.0.4103.16":["9.0.0-beta.18"],"83.0.4103.24":["9.0.0-beta.19"],"83.0.4103.26":["9.0.0-beta.20","9.0.0-beta.21"],"83.0.4103.34":["9.0.0-beta.22"],"83.0.4103.44":["9.0.0-beta.23"],"83.0.4103.45":["9.0.0-beta.24"],"80.0.3954.0":["9.0.0-nightly.20191121","9.0.0-nightly.20191122","9.0.0-nightly.20191123","9.0.0-nightly.20191124","9.0.0-nightly.20191129","9.0.0-nightly.20191130","9.0.0-nightly.20191201","9.0.0-nightly.20191202","9.0.0-nightly.20191203","9.0.0-nightly.20191204","9.0.0-nightly.20191210"],"81.0.3994.0":["9.0.0-nightly.20191220","9.0.0-nightly.20191221","9.0.0-nightly.20191222","9.0.0-nightly.20191223","9.0.0-nightly.20191224","9.0.0-nightly.20191225","9.0.0-nightly.20191226","9.0.0-nightly.20191228","9.0.0-nightly.20191229","9.0.0-nightly.20191230","9.0.0-nightly.20191231","9.0.0-nightly.20200101","9.0.0-nightly.20200103","9.0.0-nightly.20200104","9.0.0-nightly.20200105","9.0.0-nightly.20200106","9.0.0-nightly.20200108","9.0.0-nightly.20200109","9.0.0-nightly.20200110","9.0.0-nightly.20200111","9.0.0-nightly.20200113","9.0.0-nightly.20200115","9.0.0-nightly.20200116","9.0.0-nightly.20200117"],"81.0.4030.0":["9.0.0-nightly.20200119","9.0.0-nightly.20200121"],"83.0.4103.64":["9.0.0"],"83.0.4103.94":["9.0.1","9.0.2"],"83.0.4103.100":["9.0.3"],"83.0.4103.104":["9.0.4"],"83.0.4103.119":["9.0.5"],"83.0.4103.122":["9.1.0","9.1.1","9.1.2","9.2.0","9.2.1","9.3.0","9.3.1","9.3.2","9.3.3","9.3.4","9.3.5","9.4.0","9.4.1","9.4.2","9.4.3","9.4.4"],"84.0.4129.0":["10.0.0-beta.1","10.0.0-beta.2","10.0.0-nightly.20200501","10.0.0-nightly.20200504","10.0.0-nightly.20200505","10.0.0-nightly.20200506","10.0.0-nightly.20200507","10.0.0-nightly.20200508","10.0.0-nightly.20200511","10.0.0-nightly.20200512","10.0.0-nightly.20200513","10.0.0-nightly.20200514","10.0.0-nightly.20200515","10.0.0-nightly.20200518","10.0.0-nightly.20200519","10.0.0-nightly.20200520","10.0.0-nightly.20200521","11.0.0-nightly.20200525","11.0.0-nightly.20200526"],"85.0.4161.2":["10.0.0-beta.3","10.0.0-beta.4"],"85.0.4181.1":["10.0.0-beta.8","10.0.0-beta.9"],"85.0.4183.19":["10.0.0-beta.10"],"85.0.4183.20":["10.0.0-beta.11"],"85.0.4183.26":["10.0.0-beta.12"],"85.0.4183.39":["10.0.0-beta.13","10.0.0-beta.14","10.0.0-beta.15","10.0.0-beta.17","10.0.0-beta.19","10.0.0-beta.20","10.0.0-beta.21"],"85.0.4183.70":["10.0.0-beta.23"],"85.0.4183.78":["10.0.0-beta.24"],"85.0.4183.80":["10.0.0-beta.25"],"82.0.4050.0":["10.0.0-nightly.20200209","10.0.0-nightly.20200210","10.0.0-nightly.20200211","10.0.0-nightly.20200216","10.0.0-nightly.20200217","10.0.0-nightly.20200218","10.0.0-nightly.20200221","10.0.0-nightly.20200222","10.0.0-nightly.20200223","10.0.0-nightly.20200226","10.0.0-nightly.20200303"],"82.0.4076.0":["10.0.0-nightly.20200304","10.0.0-nightly.20200305","10.0.0-nightly.20200306","10.0.0-nightly.20200309","10.0.0-nightly.20200310"],"82.0.4083.0":["10.0.0-nightly.20200311"],"83.0.4086.0":["10.0.0-nightly.20200316"],"83.0.4087.0":["10.0.0-nightly.20200317","10.0.0-nightly.20200318","10.0.0-nightly.20200320","10.0.0-nightly.20200323","10.0.0-nightly.20200324","10.0.0-nightly.20200325","10.0.0-nightly.20200326","10.0.0-nightly.20200327","10.0.0-nightly.20200330","10.0.0-nightly.20200331","10.0.0-nightly.20200401","10.0.0-nightly.20200402","10.0.0-nightly.20200403","10.0.0-nightly.20200406"],"83.0.4095.0":["10.0.0-nightly.20200408","10.0.0-nightly.20200410","10.0.0-nightly.20200413"],"84.0.4114.0":["10.0.0-nightly.20200414"],"84.0.4115.0":["10.0.0-nightly.20200415","10.0.0-nightly.20200416","10.0.0-nightly.20200417"],"84.0.4121.0":["10.0.0-nightly.20200422","10.0.0-nightly.20200423"],"84.0.4125.0":["10.0.0-nightly.20200427","10.0.0-nightly.20200428","10.0.0-nightly.20200429","10.0.0-nightly.20200430"],"85.0.4183.84":["10.0.0"],"85.0.4183.86":["10.0.1"],"85.0.4183.87":["10.1.0"],"85.0.4183.93":["10.1.1"],"85.0.4183.98":["10.1.2"],"85.0.4183.121":["10.1.3","10.1.4","10.1.5","10.1.6","10.1.7","10.2.0","10.3.0","10.3.1","10.3.2","10.4.0","10.4.1","10.4.2","10.4.3","10.4.4","10.4.5","10.4.6","10.4.7"],"86.0.4234.0":["11.0.0-beta.1","11.0.0-beta.3","11.0.0-beta.4","11.0.0-beta.5","11.0.0-beta.6","11.0.0-beta.7","11.0.0-nightly.20200822","11.0.0-nightly.20200824","11.0.0-nightly.20200825","11.0.0-nightly.20200826","12.0.0-nightly.20200827","12.0.0-nightly.20200831","12.0.0-nightly.20200902","12.0.0-nightly.20200903","12.0.0-nightly.20200907","12.0.0-nightly.20200910","12.0.0-nightly.20200911","12.0.0-nightly.20200914"],"87.0.4251.1":["11.0.0-beta.8","11.0.0-beta.9","11.0.0-beta.11"],"87.0.4280.11":["11.0.0-beta.12","11.0.0-beta.13"],"87.0.4280.27":["11.0.0-beta.16","11.0.0-beta.17","11.0.0-beta.18","11.0.0-beta.19"],"87.0.4280.40":["11.0.0-beta.20"],"87.0.4280.47":["11.0.0-beta.22","11.0.0-beta.23"],"85.0.4156.0":["11.0.0-nightly.20200529"],"85.0.4162.0":["11.0.0-nightly.20200602","11.0.0-nightly.20200603","11.0.0-nightly.20200604","11.0.0-nightly.20200609","11.0.0-nightly.20200610","11.0.0-nightly.20200611","11.0.0-nightly.20200615","11.0.0-nightly.20200616","11.0.0-nightly.20200617","11.0.0-nightly.20200618","11.0.0-nightly.20200619"],"85.0.4179.0":["11.0.0-nightly.20200701","11.0.0-nightly.20200702","11.0.0-nightly.20200703","11.0.0-nightly.20200706","11.0.0-nightly.20200707","11.0.0-nightly.20200708","11.0.0-nightly.20200709"],"86.0.4203.0":["11.0.0-nightly.20200716","11.0.0-nightly.20200717","11.0.0-nightly.20200720","11.0.0-nightly.20200721"],"86.0.4209.0":["11.0.0-nightly.20200723","11.0.0-nightly.20200724","11.0.0-nightly.20200729","11.0.0-nightly.20200730","11.0.0-nightly.20200731","11.0.0-nightly.20200803","11.0.0-nightly.20200804","11.0.0-nightly.20200805","11.0.0-nightly.20200811","11.0.0-nightly.20200812"],"87.0.4280.60":["11.0.0","11.0.1"],"87.0.4280.67":["11.0.2","11.0.3","11.0.4"],"87.0.4280.88":["11.0.5","11.1.0","11.1.1"],"87.0.4280.141":["11.2.0","11.2.1","11.2.2","11.2.3","11.3.0","11.4.0","11.4.1","11.4.2","11.4.3","11.4.4","11.4.5","11.4.6","11.4.7","11.4.8","11.4.9","11.4.10","11.4.11","11.4.12","11.5.0"],"89.0.4328.0":["12.0.0-beta.1","12.0.0-beta.3","12.0.0-beta.4","12.0.0-beta.5","12.0.0-beta.6","12.0.0-beta.7","12.0.0-beta.8","12.0.0-beta.9","12.0.0-beta.10","12.0.0-beta.11","12.0.0-beta.12","12.0.0-beta.14","13.0.0-nightly.20201119","13.0.0-nightly.20201123","13.0.0-nightly.20201124","13.0.0-nightly.20201126","13.0.0-nightly.20201127","13.0.0-nightly.20201130","13.0.0-nightly.20201201","13.0.0-nightly.20201202","13.0.0-nightly.20201203","13.0.0-nightly.20201204","13.0.0-nightly.20201207","13.0.0-nightly.20201208","13.0.0-nightly.20201209","13.0.0-nightly.20201210","13.0.0-nightly.20201211","13.0.0-nightly.20201214"],"89.0.4348.1":["12.0.0-beta.16","12.0.0-beta.18","12.0.0-beta.19","12.0.0-beta.20"],"89.0.4388.2":["12.0.0-beta.21","12.0.0-beta.22","12.0.0-beta.23","12.0.0-beta.24","12.0.0-beta.25","12.0.0-beta.26"],"89.0.4389.23":["12.0.0-beta.27","12.0.0-beta.28","12.0.0-beta.29"],"89.0.4389.58":["12.0.0-beta.30","12.0.0-beta.31"],"87.0.4268.0":["12.0.0-nightly.20201013","12.0.0-nightly.20201014","12.0.0-nightly.20201015"],"88.0.4292.0":["12.0.0-nightly.20201023","12.0.0-nightly.20201026"],"88.0.4306.0":["12.0.0-nightly.20201030","12.0.0-nightly.20201102","12.0.0-nightly.20201103","12.0.0-nightly.20201104","12.0.0-nightly.20201105","12.0.0-nightly.20201106","12.0.0-nightly.20201111","12.0.0-nightly.20201112"],"88.0.4324.0":["12.0.0-nightly.20201116"],"89.0.4389.69":["12.0.0"],"89.0.4389.82":["12.0.1"],"89.0.4389.90":["12.0.2"],"89.0.4389.114":["12.0.3","12.0.4"],"89.0.4389.128":["12.0.5","12.0.6","12.0.7","12.0.8","12.0.9","12.0.10","12.0.11","12.0.12","12.0.13","12.0.14","12.0.15","12.0.16","12.0.17","12.0.18","12.1.0","12.1.1","12.1.2","12.2.0","12.2.1","12.2.2","12.2.3"],"90.0.4402.0":["13.0.0-beta.2","13.0.0-beta.3","13.0.0-nightly.20210210","13.0.0-nightly.20210211","13.0.0-nightly.20210212","13.0.0-nightly.20210216","13.0.0-nightly.20210217","13.0.0-nightly.20210218","13.0.0-nightly.20210219","13.0.0-nightly.20210222","13.0.0-nightly.20210225","13.0.0-nightly.20210226","13.0.0-nightly.20210301","13.0.0-nightly.20210302","13.0.0-nightly.20210303","14.0.0-nightly.20210304"],"90.0.4415.0":["13.0.0-beta.4","13.0.0-beta.5","13.0.0-beta.6","13.0.0-beta.7","13.0.0-beta.8","13.0.0-beta.9","13.0.0-beta.11","13.0.0-beta.12","13.0.0-beta.13","14.0.0-nightly.20210305","14.0.0-nightly.20210308","14.0.0-nightly.20210309","14.0.0-nightly.20210311","14.0.0-nightly.20210315","14.0.0-nightly.20210316","14.0.0-nightly.20210317","14.0.0-nightly.20210318","14.0.0-nightly.20210319","14.0.0-nightly.20210323","14.0.0-nightly.20210324","14.0.0-nightly.20210325","14.0.0-nightly.20210326","14.0.0-nightly.20210329","14.0.0-nightly.20210330"],"91.0.4448.0":["13.0.0-beta.14","13.0.0-beta.16","13.0.0-beta.17","13.0.0-beta.18","13.0.0-beta.20","14.0.0-nightly.20210331","14.0.0-nightly.20210401","14.0.0-nightly.20210402","14.0.0-nightly.20210406","14.0.0-nightly.20210407","14.0.0-nightly.20210408","14.0.0-nightly.20210409","14.0.0-nightly.20210413"],"91.0.4472.33":["13.0.0-beta.21","13.0.0-beta.22","13.0.0-beta.23"],"91.0.4472.38":["13.0.0-beta.24","13.0.0-beta.26","13.0.0-beta.27","13.0.0-beta.28"],"89.0.4349.0":["13.0.0-nightly.20201215","13.0.0-nightly.20201216","13.0.0-nightly.20201221","13.0.0-nightly.20201222"],"89.0.4359.0":["13.0.0-nightly.20201223","13.0.0-nightly.20210104","13.0.0-nightly.20210108","13.0.0-nightly.20210111"],"89.0.4386.0":["13.0.0-nightly.20210113","13.0.0-nightly.20210114","13.0.0-nightly.20210118","13.0.0-nightly.20210122","13.0.0-nightly.20210125"],"89.0.4389.0":["13.0.0-nightly.20210127","13.0.0-nightly.20210128","13.0.0-nightly.20210129","13.0.0-nightly.20210201","13.0.0-nightly.20210202","13.0.0-nightly.20210203","13.0.0-nightly.20210205","13.0.0-nightly.20210208","13.0.0-nightly.20210209"],"91.0.4472.69":["13.0.0","13.0.1"],"91.0.4472.77":["13.1.0","13.1.1","13.1.2"],"91.0.4472.106":["13.1.3","13.1.4"],"91.0.4472.124":["13.1.5","13.1.6","13.1.7"],"91.0.4472.164":["13.1.8","13.1.9","13.2.0","13.2.1","13.2.2","13.2.3","13.3.0","13.4.0","13.5.0","13.5.1","13.5.2","13.6.0","13.6.1","13.6.2","13.6.3","13.6.6","13.6.7","13.6.8","13.6.9"],"92.0.4511.0":["14.0.0-beta.1","14.0.0-beta.2","14.0.0-beta.3","14.0.0-nightly.20210520","14.0.0-nightly.20210523","14.0.0-nightly.20210524","15.0.0-nightly.20210527","15.0.0-nightly.20210528","15.0.0-nightly.20210531","15.0.0-nightly.20210601","15.0.0-nightly.20210602"],"93.0.4536.0":["14.0.0-beta.5","14.0.0-beta.6","14.0.0-beta.7","14.0.0-beta.8","15.0.0-nightly.20210609","15.0.0-nightly.20210610","15.0.0-nightly.20210611","15.0.0-nightly.20210614","15.0.0-nightly.20210615","15.0.0-nightly.20210616"],"93.0.4539.0":["14.0.0-beta.9","14.0.0-beta.10","15.0.0-nightly.20210617","15.0.0-nightly.20210618","15.0.0-nightly.20210621","15.0.0-nightly.20210622"],"93.0.4557.4":["14.0.0-beta.11","14.0.0-beta.12"],"93.0.4566.0":["14.0.0-beta.13","14.0.0-beta.14","14.0.0-beta.15","14.0.0-beta.16","14.0.0-beta.17","15.0.0-alpha.1","15.0.0-alpha.2","15.0.0-nightly.20210706","15.0.0-nightly.20210707","15.0.0-nightly.20210708","15.0.0-nightly.20210709","15.0.0-nightly.20210712","15.0.0-nightly.20210713","15.0.0-nightly.20210714","15.0.0-nightly.20210715","15.0.0-nightly.20210716","15.0.0-nightly.20210719","15.0.0-nightly.20210720","15.0.0-nightly.20210721","16.0.0-nightly.20210722","16.0.0-nightly.20210723","16.0.0-nightly.20210726"],"93.0.4577.15":["14.0.0-beta.18","14.0.0-beta.19","14.0.0-beta.20","14.0.0-beta.21"],"93.0.4577.25":["14.0.0-beta.22","14.0.0-beta.23"],"93.0.4577.51":["14.0.0-beta.24","14.0.0-beta.25"],"92.0.4475.0":["14.0.0-nightly.20210426","14.0.0-nightly.20210427"],"92.0.4488.0":["14.0.0-nightly.20210430","14.0.0-nightly.20210503"],"92.0.4496.0":["14.0.0-nightly.20210505"],"92.0.4498.0":["14.0.0-nightly.20210506"],"92.0.4499.0":["14.0.0-nightly.20210507","14.0.0-nightly.20210510","14.0.0-nightly.20210511","14.0.0-nightly.20210512","14.0.0-nightly.20210513"],"92.0.4505.0":["14.0.0-nightly.20210514","14.0.0-nightly.20210517","14.0.0-nightly.20210518","14.0.0-nightly.20210519"],"93.0.4577.58":["14.0.0"],"93.0.4577.63":["14.0.1"],"93.0.4577.82":["14.0.2","14.1.0","14.1.1","14.2.0","14.2.1","14.2.2","14.2.3","14.2.4","14.2.5","14.2.6","14.2.7","14.2.8","14.2.9"],"94.0.4584.0":["15.0.0-alpha.3","15.0.0-alpha.4","15.0.0-alpha.5","15.0.0-alpha.6","16.0.0-nightly.20210727","16.0.0-nightly.20210728","16.0.0-nightly.20210729","16.0.0-nightly.20210730","16.0.0-nightly.20210802","16.0.0-nightly.20210803","16.0.0-nightly.20210804","16.0.0-nightly.20210805","16.0.0-nightly.20210806","16.0.0-nightly.20210809","16.0.0-nightly.20210810","16.0.0-nightly.20210811"],"94.0.4590.2":["15.0.0-alpha.7","15.0.0-alpha.8","15.0.0-alpha.9","16.0.0-nightly.20210812","16.0.0-nightly.20210813","16.0.0-nightly.20210816","16.0.0-nightly.20210817","16.0.0-nightly.20210818","16.0.0-nightly.20210819","16.0.0-nightly.20210820","16.0.0-nightly.20210823"],"94.0.4606.12":["15.0.0-alpha.10"],"94.0.4606.20":["15.0.0-beta.1","15.0.0-beta.2"],"94.0.4606.31":["15.0.0-beta.3","15.0.0-beta.4","15.0.0-beta.5","15.0.0-beta.6","15.0.0-beta.7"],"93.0.4530.0":["15.0.0-nightly.20210603","15.0.0-nightly.20210604"],"93.0.4535.0":["15.0.0-nightly.20210608"],"93.0.4550.0":["15.0.0-nightly.20210623","15.0.0-nightly.20210624"],"93.0.4552.0":["15.0.0-nightly.20210625","15.0.0-nightly.20210628","15.0.0-nightly.20210629"],"93.0.4558.0":["15.0.0-nightly.20210630","15.0.0-nightly.20210701","15.0.0-nightly.20210702","15.0.0-nightly.20210705"],"94.0.4606.51":["15.0.0"],"94.0.4606.61":["15.1.0","15.1.1"],"94.0.4606.71":["15.1.2"],"94.0.4606.81":["15.2.0","15.3.0","15.3.1","15.3.2","15.3.3","15.3.4","15.3.5","15.3.6","15.3.7","15.4.0","15.4.1","15.4.2","15.5.0","15.5.1","15.5.2","15.5.3","15.5.4","15.5.5","15.5.6","15.5.7"],"95.0.4629.0":["16.0.0-alpha.1","16.0.0-alpha.2","16.0.0-alpha.3","16.0.0-alpha.4","16.0.0-alpha.5","16.0.0-alpha.6","16.0.0-alpha.7","16.0.0-nightly.20210902","16.0.0-nightly.20210903","16.0.0-nightly.20210906","16.0.0-nightly.20210907","16.0.0-nightly.20210908","16.0.0-nightly.20210909","16.0.0-nightly.20210910","16.0.0-nightly.20210913","16.0.0-nightly.20210914","16.0.0-nightly.20210915","16.0.0-nightly.20210916","16.0.0-nightly.20210917","16.0.0-nightly.20210920","16.0.0-nightly.20210921","16.0.0-nightly.20210922","17.0.0-nightly.20210923","17.0.0-nightly.20210924","17.0.0-nightly.20210927","17.0.0-nightly.20210928","17.0.0-nightly.20210929","17.0.0-nightly.20210930","17.0.0-nightly.20211001","17.0.0-nightly.20211004","17.0.0-nightly.20211005"],"96.0.4647.0":["16.0.0-alpha.8","16.0.0-alpha.9","16.0.0-beta.1","16.0.0-beta.2","16.0.0-beta.3","17.0.0-nightly.20211006","17.0.0-nightly.20211007","17.0.0-nightly.20211008","17.0.0-nightly.20211011","17.0.0-nightly.20211012","17.0.0-nightly.20211013","17.0.0-nightly.20211014","17.0.0-nightly.20211015","17.0.0-nightly.20211018","17.0.0-nightly.20211019","17.0.0-nightly.20211020","17.0.0-nightly.20211021"],"96.0.4664.18":["16.0.0-beta.4","16.0.0-beta.5"],"96.0.4664.27":["16.0.0-beta.6","16.0.0-beta.7"],"96.0.4664.35":["16.0.0-beta.8","16.0.0-beta.9"],"95.0.4612.5":["16.0.0-nightly.20210824","16.0.0-nightly.20210825","16.0.0-nightly.20210826","16.0.0-nightly.20210827","16.0.0-nightly.20210830","16.0.0-nightly.20210831","16.0.0-nightly.20210901"],"96.0.4664.45":["16.0.0","16.0.1"],"96.0.4664.55":["16.0.2","16.0.3","16.0.4","16.0.5"],"96.0.4664.110":["16.0.6","16.0.7","16.0.8"],"96.0.4664.174":["16.0.9","16.0.10","16.1.0","16.1.1","16.2.0","16.2.1","16.2.2","16.2.3","16.2.4","16.2.5","16.2.6","16.2.7","16.2.8"],"96.0.4664.4":["17.0.0-alpha.1","17.0.0-alpha.2","17.0.0-alpha.3","17.0.0-nightly.20211022","17.0.0-nightly.20211025","17.0.0-nightly.20211026","17.0.0-nightly.20211027","17.0.0-nightly.20211028","17.0.0-nightly.20211029","17.0.0-nightly.20211101","17.0.0-nightly.20211102","17.0.0-nightly.20211103","17.0.0-nightly.20211104","17.0.0-nightly.20211105","17.0.0-nightly.20211108","17.0.0-nightly.20211109","17.0.0-nightly.20211110","17.0.0-nightly.20211111","17.0.0-nightly.20211112","17.0.0-nightly.20211115","17.0.0-nightly.20211116","17.0.0-nightly.20211117","18.0.0-nightly.20211118","18.0.0-nightly.20211119","18.0.0-nightly.20211122","18.0.0-nightly.20211123"],"98.0.4706.0":["17.0.0-alpha.4","17.0.0-alpha.5","17.0.0-alpha.6","17.0.0-beta.1","17.0.0-beta.2","18.0.0-nightly.20211124","18.0.0-nightly.20211125","18.0.0-nightly.20211126","18.0.0-nightly.20211129","18.0.0-nightly.20211130","18.0.0-nightly.20211201","18.0.0-nightly.20211202","18.0.0-nightly.20211203","18.0.0-nightly.20211206","18.0.0-nightly.20211207","18.0.0-nightly.20211208","18.0.0-nightly.20211209","18.0.0-nightly.20211210","18.0.0-nightly.20211213","18.0.0-nightly.20211214","18.0.0-nightly.20211215","18.0.0-nightly.20211216","18.0.0-nightly.20211217","18.0.0-nightly.20211220","18.0.0-nightly.20211221","18.0.0-nightly.20211222","18.0.0-nightly.20211223","18.0.0-nightly.20211228","18.0.0-nightly.20211229","18.0.0-nightly.20211231","18.0.0-nightly.20220103","18.0.0-nightly.20220104","18.0.0-nightly.20220105","18.0.0-nightly.20220106","18.0.0-nightly.20220107","18.0.0-nightly.20220110"],"98.0.4758.9":["17.0.0-beta.3"],"98.0.4758.11":["17.0.0-beta.4","17.0.0-beta.5","17.0.0-beta.6","17.0.0-beta.7","17.0.0-beta.8","17.0.0-beta.9"],"98.0.4758.74":["17.0.0"],"98.0.4758.82":["17.0.1"],"98.0.4758.102":["17.1.0"],"98.0.4758.109":["17.1.1","17.1.2","17.2.0"],"98.0.4758.141":["17.3.0","17.3.1","17.4.0","17.4.1","17.4.2","17.4.3","17.4.4","17.4.5","17.4.6","17.4.7","17.4.8","17.4.9","17.4.10"],"99.0.4767.0":["18.0.0-alpha.1","18.0.0-alpha.2","18.0.0-alpha.3","18.0.0-alpha.4","18.0.0-alpha.5","18.0.0-nightly.20220111","18.0.0-nightly.20220112","18.0.0-nightly.20220113","18.0.0-nightly.20220114","18.0.0-nightly.20220117","18.0.0-nightly.20220118","18.0.0-nightly.20220119","18.0.0-nightly.20220121","18.0.0-nightly.20220124","18.0.0-nightly.20220125","18.0.0-nightly.20220127","18.0.0-nightly.20220128","18.0.0-nightly.20220131","18.0.0-nightly.20220201","19.0.0-nightly.20220202","19.0.0-nightly.20220203","19.0.0-nightly.20220204","19.0.0-nightly.20220207","19.0.0-nightly.20220208","19.0.0-nightly.20220209"],"100.0.4894.0":["18.0.0-beta.1","18.0.0-beta.2","18.0.0-beta.3","18.0.0-beta.4","18.0.0-beta.5","18.0.0-beta.6","19.0.0-nightly.20220308","19.0.0-nightly.20220309","19.0.0-nightly.20220310","19.0.0-nightly.20220311","19.0.0-nightly.20220314","19.0.0-nightly.20220315","19.0.0-nightly.20220316","19.0.0-nightly.20220317","19.0.0-nightly.20220318","19.0.0-nightly.20220321","19.0.0-nightly.20220322","19.0.0-nightly.20220323","19.0.0-nightly.20220324"],"100.0.4896.56":["18.0.0"],"100.0.4896.60":["18.0.1","18.0.2"],"100.0.4896.75":["18.0.3","18.0.4"],"100.0.4896.127":["18.1.0"],"100.0.4896.143":["18.2.0","18.2.1","18.2.2","18.2.3"],"100.0.4896.160":["18.2.4","18.3.0","18.3.1","18.3.2","18.3.3","18.3.4","18.3.5"],"102.0.4962.3":["19.0.0-alpha.1","19.0.0-nightly.20220328","19.0.0-nightly.20220329","20.0.0-nightly.20220330"],"102.0.4971.0":["19.0.0-alpha.2","19.0.0-alpha.3","20.0.0-nightly.20220411"],"102.0.4989.0":["19.0.0-alpha.4","19.0.0-alpha.5","20.0.0-nightly.20220414","20.0.0-nightly.20220415","20.0.0-nightly.20220418","20.0.0-nightly.20220419","20.0.0-nightly.20220420","20.0.0-nightly.20220421"],"102.0.4999.0":["19.0.0-beta.1","19.0.0-beta.2","19.0.0-beta.3","20.0.0-nightly.20220425","20.0.0-nightly.20220426","20.0.0-nightly.20220427","20.0.0-nightly.20220428","20.0.0-nightly.20220429","20.0.0-nightly.20220502","20.0.0-nightly.20220503","20.0.0-nightly.20220504","20.0.0-nightly.20220505","20.0.0-nightly.20220506","20.0.0-nightly.20220509","20.0.0-nightly.20220511","20.0.0-nightly.20220512","20.0.0-nightly.20220513","20.0.0-nightly.20220516","20.0.0-nightly.20220517"],"102.0.5005.27":["19.0.0-beta.4"],"102.0.5005.40":["19.0.0-beta.5","19.0.0-beta.6","19.0.0-beta.7"],"102.0.5005.49":["19.0.0-beta.8"],"102.0.4961.0":["19.0.0-nightly.20220325"],"102.0.5005.61":["19.0.0","19.0.1"],"102.0.5005.63":["19.0.2","19.0.3","19.0.4"],"102.0.5005.115":["19.0.5","19.0.6"],"102.0.5005.134":["19.0.7"],"102.0.5005.148":["19.0.8"],"103.0.5044.0":["20.0.0-alpha.1","20.0.0-nightly.20220518","20.0.0-nightly.20220519","20.0.0-nightly.20220520","20.0.0-nightly.20220523","20.0.0-nightly.20220524","21.0.0-nightly.20220526","21.0.0-nightly.20220527","21.0.0-nightly.20220530","21.0.0-nightly.20220531"],"104.0.5073.0":["20.0.0-alpha.2","20.0.0-alpha.3","20.0.0-alpha.4","20.0.0-alpha.5","20.0.0-alpha.6","20.0.0-alpha.7","20.0.0-beta.1","20.0.0-beta.2","20.0.0-beta.3","20.0.0-beta.4","20.0.0-beta.5","20.0.0-beta.6","20.0.0-beta.7","20.0.0-beta.8","21.0.0-nightly.20220602","21.0.0-nightly.20220603","21.0.0-nightly.20220606","21.0.0-nightly.20220607","21.0.0-nightly.20220608","21.0.0-nightly.20220609","21.0.0-nightly.20220610","21.0.0-nightly.20220613","21.0.0-nightly.20220614","21.0.0-nightly.20220615","21.0.0-nightly.20220616","21.0.0-nightly.20220617","21.0.0-nightly.20220620","21.0.0-nightly.20220621","21.0.0-nightly.20220622","21.0.0-nightly.20220623","21.0.0-nightly.20220624","21.0.0-nightly.20220627"],"104.0.5112.39":["20.0.0-beta.9"],"105.0.5129.0":["21.0.0-nightly.20220628","21.0.0-nightly.20220629","21.0.0-nightly.20220630","21.0.0-nightly.20220701","21.0.0-nightly.20220704","21.0.0-nightly.20220705","21.0.0-nightly.20220706","21.0.0-nightly.20220707","21.0.0-nightly.20220708","21.0.0-nightly.20220711","21.0.0-nightly.20220712","21.0.0-nightly.20220713"],"105.0.5173.0":["21.0.0-nightly.20220715"]} \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.js index 5369e370f0afd6..d6fa4b9d4c5685 100644 --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.js +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.js @@ -1054,6 +1054,8 @@ module.exports = { "14.2.5": "93.0.4577.82", "14.2.6": "93.0.4577.82", "14.2.7": "93.0.4577.82", + "14.2.8": "93.0.4577.82", + "14.2.9": "93.0.4577.82", "15.0.0-alpha.1": "93.0.4566.0", "15.0.0-alpha.2": "93.0.4566.0", "15.0.0-alpha.3": "94.0.4584.0", @@ -1125,6 +1127,15 @@ module.exports = { "15.3.7": "94.0.4606.81", "15.4.0": "94.0.4606.81", "15.4.1": "94.0.4606.81", + "15.4.2": "94.0.4606.81", + "15.5.0": "94.0.4606.81", + "15.5.1": "94.0.4606.81", + "15.5.2": "94.0.4606.81", + "15.5.3": "94.0.4606.81", + "15.5.4": "94.0.4606.81", + "15.5.5": "94.0.4606.81", + "15.5.6": "94.0.4606.81", + "15.5.7": "94.0.4606.81", "16.0.0-alpha.1": "95.0.4629.0", "16.0.0-alpha.2": "95.0.4629.0", "16.0.0-alpha.3": "95.0.4629.0", @@ -1200,6 +1211,16 @@ module.exports = { "16.0.9": "96.0.4664.174", "16.0.10": "96.0.4664.174", "16.1.0": "96.0.4664.174", + "16.1.1": "96.0.4664.174", + "16.2.0": "96.0.4664.174", + "16.2.1": "96.0.4664.174", + "16.2.2": "96.0.4664.174", + "16.2.3": "96.0.4664.174", + "16.2.4": "96.0.4664.174", + "16.2.5": "96.0.4664.174", + "16.2.6": "96.0.4664.174", + "16.2.7": "96.0.4664.174", + "16.2.8": "96.0.4664.174", "17.0.0-alpha.1": "96.0.4664.4", "17.0.0-alpha.2": "96.0.4664.4", "17.0.0-alpha.3": "96.0.4664.4", @@ -1260,6 +1281,20 @@ module.exports = { "17.1.0": "98.0.4758.102", "17.1.1": "98.0.4758.109", "17.1.2": "98.0.4758.109", + "17.2.0": "98.0.4758.109", + "17.3.0": "98.0.4758.141", + "17.3.1": "98.0.4758.141", + "17.4.0": "98.0.4758.141", + "17.4.1": "98.0.4758.141", + "17.4.2": "98.0.4758.141", + "17.4.3": "98.0.4758.141", + "17.4.4": "98.0.4758.141", + "17.4.5": "98.0.4758.141", + "17.4.6": "98.0.4758.141", + "17.4.7": "98.0.4758.141", + "17.4.8": "98.0.4758.141", + "17.4.9": "98.0.4758.141", + "17.4.10": "98.0.4758.141", "18.0.0-alpha.1": "99.0.4767.0", "18.0.0-alpha.2": "99.0.4767.0", "18.0.0-alpha.3": "99.0.4767.0", @@ -1267,6 +1302,10 @@ module.exports = { "18.0.0-alpha.5": "99.0.4767.0", "18.0.0-beta.1": "100.0.4894.0", "18.0.0-beta.2": "100.0.4894.0", + "18.0.0-beta.3": "100.0.4894.0", + "18.0.0-beta.4": "100.0.4894.0", + "18.0.0-beta.5": "100.0.4894.0", + "18.0.0-beta.6": "100.0.4894.0", "18.0.0-nightly.20211118": "96.0.4664.4", "18.0.0-nightly.20211119": "96.0.4664.4", "18.0.0-nightly.20211122": "96.0.4664.4", @@ -1316,6 +1355,36 @@ module.exports = { "18.0.0-nightly.20220128": "99.0.4767.0", "18.0.0-nightly.20220131": "99.0.4767.0", "18.0.0-nightly.20220201": "99.0.4767.0", + "18.0.0": "100.0.4896.56", + "18.0.1": "100.0.4896.60", + "18.0.2": "100.0.4896.60", + "18.0.3": "100.0.4896.75", + "18.0.4": "100.0.4896.75", + "18.1.0": "100.0.4896.127", + "18.2.0": "100.0.4896.143", + "18.2.1": "100.0.4896.143", + "18.2.2": "100.0.4896.143", + "18.2.3": "100.0.4896.143", + "18.2.4": "100.0.4896.160", + "18.3.0": "100.0.4896.160", + "18.3.1": "100.0.4896.160", + "18.3.2": "100.0.4896.160", + "18.3.3": "100.0.4896.160", + "18.3.4": "100.0.4896.160", + "18.3.5": "100.0.4896.160", + "19.0.0-alpha.1": "102.0.4962.3", + "19.0.0-alpha.2": "102.0.4971.0", + "19.0.0-alpha.3": "102.0.4971.0", + "19.0.0-alpha.4": "102.0.4989.0", + "19.0.0-alpha.5": "102.0.4989.0", + "19.0.0-beta.1": "102.0.4999.0", + "19.0.0-beta.2": "102.0.4999.0", + "19.0.0-beta.3": "102.0.4999.0", + "19.0.0-beta.4": "102.0.5005.27", + "19.0.0-beta.5": "102.0.5005.40", + "19.0.0-beta.6": "102.0.5005.40", + "19.0.0-beta.7": "102.0.5005.40", + "19.0.0-beta.8": "102.0.5005.49", "19.0.0-nightly.20220202": "99.0.4767.0", "19.0.0-nightly.20220203": "99.0.4767.0", "19.0.0-nightly.20220204": "99.0.4767.0", @@ -1325,5 +1394,106 @@ module.exports = { "19.0.0-nightly.20220308": "100.0.4894.0", "19.0.0-nightly.20220309": "100.0.4894.0", "19.0.0-nightly.20220310": "100.0.4894.0", - "19.0.0-nightly.20220311": "100.0.4894.0" + "19.0.0-nightly.20220311": "100.0.4894.0", + "19.0.0-nightly.20220314": "100.0.4894.0", + "19.0.0-nightly.20220315": "100.0.4894.0", + "19.0.0-nightly.20220316": "100.0.4894.0", + "19.0.0-nightly.20220317": "100.0.4894.0", + "19.0.0-nightly.20220318": "100.0.4894.0", + "19.0.0-nightly.20220321": "100.0.4894.0", + "19.0.0-nightly.20220322": "100.0.4894.0", + "19.0.0-nightly.20220323": "100.0.4894.0", + "19.0.0-nightly.20220324": "100.0.4894.0", + "19.0.0-nightly.20220325": "102.0.4961.0", + "19.0.0-nightly.20220328": "102.0.4962.3", + "19.0.0-nightly.20220329": "102.0.4962.3", + "19.0.0": "102.0.5005.61", + "19.0.1": "102.0.5005.61", + "19.0.2": "102.0.5005.63", + "19.0.3": "102.0.5005.63", + "19.0.4": "102.0.5005.63", + "19.0.5": "102.0.5005.115", + "19.0.6": "102.0.5005.115", + "19.0.7": "102.0.5005.134", + "19.0.8": "102.0.5005.148", + "20.0.0-alpha.1": "103.0.5044.0", + "20.0.0-alpha.2": "104.0.5073.0", + "20.0.0-alpha.3": "104.0.5073.0", + "20.0.0-alpha.4": "104.0.5073.0", + "20.0.0-alpha.5": "104.0.5073.0", + "20.0.0-alpha.6": "104.0.5073.0", + "20.0.0-alpha.7": "104.0.5073.0", + "20.0.0-beta.1": "104.0.5073.0", + "20.0.0-beta.2": "104.0.5073.0", + "20.0.0-beta.3": "104.0.5073.0", + "20.0.0-beta.4": "104.0.5073.0", + "20.0.0-beta.5": "104.0.5073.0", + "20.0.0-beta.6": "104.0.5073.0", + "20.0.0-beta.7": "104.0.5073.0", + "20.0.0-beta.8": "104.0.5073.0", + "20.0.0-beta.9": "104.0.5112.39", + "20.0.0-nightly.20220330": "102.0.4962.3", + "20.0.0-nightly.20220411": "102.0.4971.0", + "20.0.0-nightly.20220414": "102.0.4989.0", + "20.0.0-nightly.20220415": "102.0.4989.0", + "20.0.0-nightly.20220418": "102.0.4989.0", + "20.0.0-nightly.20220419": "102.0.4989.0", + "20.0.0-nightly.20220420": "102.0.4989.0", + "20.0.0-nightly.20220421": "102.0.4989.0", + "20.0.0-nightly.20220425": "102.0.4999.0", + "20.0.0-nightly.20220426": "102.0.4999.0", + "20.0.0-nightly.20220427": "102.0.4999.0", + "20.0.0-nightly.20220428": "102.0.4999.0", + "20.0.0-nightly.20220429": "102.0.4999.0", + "20.0.0-nightly.20220502": "102.0.4999.0", + "20.0.0-nightly.20220503": "102.0.4999.0", + "20.0.0-nightly.20220504": "102.0.4999.0", + "20.0.0-nightly.20220505": "102.0.4999.0", + "20.0.0-nightly.20220506": "102.0.4999.0", + "20.0.0-nightly.20220509": "102.0.4999.0", + "20.0.0-nightly.20220511": "102.0.4999.0", + "20.0.0-nightly.20220512": "102.0.4999.0", + "20.0.0-nightly.20220513": "102.0.4999.0", + "20.0.0-nightly.20220516": "102.0.4999.0", + "20.0.0-nightly.20220517": "102.0.4999.0", + "20.0.0-nightly.20220518": "103.0.5044.0", + "20.0.0-nightly.20220519": "103.0.5044.0", + "20.0.0-nightly.20220520": "103.0.5044.0", + "20.0.0-nightly.20220523": "103.0.5044.0", + "20.0.0-nightly.20220524": "103.0.5044.0", + "21.0.0-nightly.20220526": "103.0.5044.0", + "21.0.0-nightly.20220527": "103.0.5044.0", + "21.0.0-nightly.20220530": "103.0.5044.0", + "21.0.0-nightly.20220531": "103.0.5044.0", + "21.0.0-nightly.20220602": "104.0.5073.0", + "21.0.0-nightly.20220603": "104.0.5073.0", + "21.0.0-nightly.20220606": "104.0.5073.0", + "21.0.0-nightly.20220607": "104.0.5073.0", + "21.0.0-nightly.20220608": "104.0.5073.0", + "21.0.0-nightly.20220609": "104.0.5073.0", + "21.0.0-nightly.20220610": "104.0.5073.0", + "21.0.0-nightly.20220613": "104.0.5073.0", + "21.0.0-nightly.20220614": "104.0.5073.0", + "21.0.0-nightly.20220615": "104.0.5073.0", + "21.0.0-nightly.20220616": "104.0.5073.0", + "21.0.0-nightly.20220617": "104.0.5073.0", + "21.0.0-nightly.20220620": "104.0.5073.0", + "21.0.0-nightly.20220621": "104.0.5073.0", + "21.0.0-nightly.20220622": "104.0.5073.0", + "21.0.0-nightly.20220623": "104.0.5073.0", + "21.0.0-nightly.20220624": "104.0.5073.0", + "21.0.0-nightly.20220627": "104.0.5073.0", + "21.0.0-nightly.20220628": "105.0.5129.0", + "21.0.0-nightly.20220629": "105.0.5129.0", + "21.0.0-nightly.20220630": "105.0.5129.0", + "21.0.0-nightly.20220701": "105.0.5129.0", + "21.0.0-nightly.20220704": "105.0.5129.0", + "21.0.0-nightly.20220705": "105.0.5129.0", + "21.0.0-nightly.20220706": "105.0.5129.0", + "21.0.0-nightly.20220707": "105.0.5129.0", + "21.0.0-nightly.20220708": "105.0.5129.0", + "21.0.0-nightly.20220711": "105.0.5129.0", + "21.0.0-nightly.20220712": "105.0.5129.0", + "21.0.0-nightly.20220713": "105.0.5129.0", + "21.0.0-nightly.20220715": "105.0.5173.0" }; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.json index 29b0681569de7b..a0751b0552e044 100644 --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.json +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.json @@ -1 +1 @@ -{"0.20.0":"39.0.2171.65","0.20.1":"39.0.2171.65","0.20.2":"39.0.2171.65","0.20.3":"39.0.2171.65","0.20.4":"39.0.2171.65","0.20.5":"39.0.2171.65","0.20.6":"39.0.2171.65","0.20.7":"39.0.2171.65","0.20.8":"39.0.2171.65","0.21.0":"40.0.2214.91","0.21.1":"40.0.2214.91","0.21.2":"40.0.2214.91","0.21.3":"41.0.2272.76","0.22.1":"41.0.2272.76","0.22.2":"41.0.2272.76","0.22.3":"41.0.2272.76","0.23.0":"41.0.2272.76","0.24.0":"41.0.2272.76","0.25.0":"42.0.2311.107","0.25.1":"42.0.2311.107","0.25.2":"42.0.2311.107","0.25.3":"42.0.2311.107","0.26.0":"42.0.2311.107","0.26.1":"42.0.2311.107","0.27.0":"42.0.2311.107","0.27.1":"42.0.2311.107","0.27.2":"43.0.2357.65","0.27.3":"43.0.2357.65","0.28.0":"43.0.2357.65","0.28.1":"43.0.2357.65","0.28.2":"43.0.2357.65","0.28.3":"43.0.2357.65","0.29.1":"43.0.2357.65","0.29.2":"43.0.2357.65","0.30.4":"44.0.2403.125","0.31.0":"44.0.2403.125","0.31.2":"45.0.2454.85","0.32.2":"45.0.2454.85","0.32.3":"45.0.2454.85","0.33.0":"45.0.2454.85","0.33.1":"45.0.2454.85","0.33.2":"45.0.2454.85","0.33.3":"45.0.2454.85","0.33.4":"45.0.2454.85","0.33.6":"45.0.2454.85","0.33.7":"45.0.2454.85","0.33.8":"45.0.2454.85","0.33.9":"45.0.2454.85","0.34.0":"45.0.2454.85","0.34.1":"45.0.2454.85","0.34.2":"45.0.2454.85","0.34.3":"45.0.2454.85","0.34.4":"45.0.2454.85","0.35.1":"45.0.2454.85","0.35.2":"45.0.2454.85","0.35.3":"45.0.2454.85","0.35.4":"45.0.2454.85","0.35.5":"45.0.2454.85","0.36.0":"47.0.2526.73","0.36.2":"47.0.2526.73","0.36.3":"47.0.2526.73","0.36.4":"47.0.2526.73","0.36.5":"47.0.2526.110","0.36.6":"47.0.2526.110","0.36.7":"47.0.2526.110","0.36.8":"47.0.2526.110","0.36.9":"47.0.2526.110","0.36.10":"47.0.2526.110","0.36.11":"47.0.2526.110","0.36.12":"47.0.2526.110","0.37.0":"49.0.2623.75","0.37.1":"49.0.2623.75","0.37.3":"49.0.2623.75","0.37.4":"49.0.2623.75","0.37.5":"49.0.2623.75","0.37.6":"49.0.2623.75","0.37.7":"49.0.2623.75","0.37.8":"49.0.2623.75","1.0.0":"49.0.2623.75","1.0.1":"49.0.2623.75","1.0.2":"49.0.2623.75","1.1.0":"50.0.2661.102","1.1.1":"50.0.2661.102","1.1.2":"50.0.2661.102","1.1.3":"50.0.2661.102","1.2.0":"51.0.2704.63","1.2.1":"51.0.2704.63","1.2.2":"51.0.2704.84","1.2.3":"51.0.2704.84","1.2.4":"51.0.2704.103","1.2.5":"51.0.2704.103","1.2.6":"51.0.2704.106","1.2.7":"51.0.2704.106","1.2.8":"51.0.2704.106","1.3.0":"52.0.2743.82","1.3.1":"52.0.2743.82","1.3.2":"52.0.2743.82","1.3.3":"52.0.2743.82","1.3.4":"52.0.2743.82","1.3.5":"52.0.2743.82","1.3.6":"52.0.2743.82","1.3.7":"52.0.2743.82","1.3.9":"52.0.2743.82","1.3.10":"52.0.2743.82","1.3.13":"52.0.2743.82","1.3.14":"52.0.2743.82","1.3.15":"52.0.2743.82","1.4.0":"53.0.2785.113","1.4.1":"53.0.2785.113","1.4.2":"53.0.2785.113","1.4.3":"53.0.2785.113","1.4.4":"53.0.2785.113","1.4.5":"53.0.2785.113","1.4.6":"53.0.2785.143","1.4.7":"53.0.2785.143","1.4.8":"53.0.2785.143","1.4.10":"53.0.2785.143","1.4.11":"53.0.2785.143","1.4.12":"54.0.2840.51","1.4.13":"53.0.2785.143","1.4.14":"53.0.2785.143","1.4.15":"53.0.2785.143","1.4.16":"53.0.2785.143","1.5.0":"54.0.2840.101","1.5.1":"54.0.2840.101","1.6.0":"56.0.2924.87","1.6.1":"56.0.2924.87","1.6.2":"56.0.2924.87","1.6.3":"56.0.2924.87","1.6.4":"56.0.2924.87","1.6.5":"56.0.2924.87","1.6.6":"56.0.2924.87","1.6.7":"56.0.2924.87","1.6.8":"56.0.2924.87","1.6.9":"56.0.2924.87","1.6.10":"56.0.2924.87","1.6.11":"56.0.2924.87","1.6.12":"56.0.2924.87","1.6.13":"56.0.2924.87","1.6.14":"56.0.2924.87","1.6.15":"56.0.2924.87","1.6.16":"56.0.2924.87","1.6.17":"56.0.2924.87","1.6.18":"56.0.2924.87","1.7.0":"58.0.3029.110","1.7.1":"58.0.3029.110","1.7.2":"58.0.3029.110","1.7.3":"58.0.3029.110","1.7.4":"58.0.3029.110","1.7.5":"58.0.3029.110","1.7.6":"58.0.3029.110","1.7.7":"58.0.3029.110","1.7.8":"58.0.3029.110","1.7.9":"58.0.3029.110","1.7.10":"58.0.3029.110","1.7.11":"58.0.3029.110","1.7.12":"58.0.3029.110","1.7.13":"58.0.3029.110","1.7.14":"58.0.3029.110","1.7.15":"58.0.3029.110","1.7.16":"58.0.3029.110","1.8.0":"59.0.3071.115","1.8.1":"59.0.3071.115","1.8.2-beta.1":"59.0.3071.115","1.8.2-beta.2":"59.0.3071.115","1.8.2-beta.3":"59.0.3071.115","1.8.2-beta.4":"59.0.3071.115","1.8.2-beta.5":"59.0.3071.115","1.8.2":"59.0.3071.115","1.8.3":"59.0.3071.115","1.8.4":"59.0.3071.115","1.8.5":"59.0.3071.115","1.8.6":"59.0.3071.115","1.8.7":"59.0.3071.115","1.8.8":"59.0.3071.115","2.0.0-beta.1":"61.0.3163.100","2.0.0-beta.2":"61.0.3163.100","2.0.0-beta.3":"61.0.3163.100","2.0.0-beta.4":"61.0.3163.100","2.0.0-beta.5":"61.0.3163.100","2.0.0-beta.6":"61.0.3163.100","2.0.0-beta.7":"61.0.3163.100","2.0.0-beta.8":"61.0.3163.100","2.0.0":"61.0.3163.100","2.0.1":"61.0.3163.100","2.0.2":"61.0.3163.100","2.0.3":"61.0.3163.100","2.0.4":"61.0.3163.100","2.0.5":"61.0.3163.100","2.0.6":"61.0.3163.100","2.0.7":"61.0.3163.100","2.0.8-nightly.20180819":"61.0.3163.100","2.0.8-nightly.20180820":"61.0.3163.100","2.0.8":"61.0.3163.100","2.0.9":"61.0.3163.100","2.0.10":"61.0.3163.100","2.0.11":"61.0.3163.100","2.0.12":"61.0.3163.100","2.0.13":"61.0.3163.100","2.0.14":"61.0.3163.100","2.0.15":"61.0.3163.100","2.0.16":"61.0.3163.100","2.0.17":"61.0.3163.100","2.0.18":"61.0.3163.100","2.1.0-unsupported.20180809":"61.0.3163.100","3.0.0-beta.1":"66.0.3359.181","3.0.0-beta.2":"66.0.3359.181","3.0.0-beta.3":"66.0.3359.181","3.0.0-beta.4":"66.0.3359.181","3.0.0-beta.5":"66.0.3359.181","3.0.0-beta.6":"66.0.3359.181","3.0.0-beta.7":"66.0.3359.181","3.0.0-beta.8":"66.0.3359.181","3.0.0-beta.9":"66.0.3359.181","3.0.0-beta.10":"66.0.3359.181","3.0.0-beta.11":"66.0.3359.181","3.0.0-beta.12":"66.0.3359.181","3.0.0-beta.13":"66.0.3359.181","3.0.0-nightly.20180818":"66.0.3359.181","3.0.0-nightly.20180821":"66.0.3359.181","3.0.0-nightly.20180823":"66.0.3359.181","3.0.0-nightly.20180904":"66.0.3359.181","3.0.0":"66.0.3359.181","3.0.1":"66.0.3359.181","3.0.2":"66.0.3359.181","3.0.3":"66.0.3359.181","3.0.4":"66.0.3359.181","3.0.5":"66.0.3359.181","3.0.6":"66.0.3359.181","3.0.7":"66.0.3359.181","3.0.8":"66.0.3359.181","3.0.9":"66.0.3359.181","3.0.10":"66.0.3359.181","3.0.11":"66.0.3359.181","3.0.12":"66.0.3359.181","3.0.13":"66.0.3359.181","3.0.14":"66.0.3359.181","3.0.15":"66.0.3359.181","3.0.16":"66.0.3359.181","3.1.0-beta.1":"66.0.3359.181","3.1.0-beta.2":"66.0.3359.181","3.1.0-beta.3":"66.0.3359.181","3.1.0-beta.4":"66.0.3359.181","3.1.0-beta.5":"66.0.3359.181","3.1.0":"66.0.3359.181","3.1.1":"66.0.3359.181","3.1.2":"66.0.3359.181","3.1.3":"66.0.3359.181","3.1.4":"66.0.3359.181","3.1.5":"66.0.3359.181","3.1.6":"66.0.3359.181","3.1.7":"66.0.3359.181","3.1.8":"66.0.3359.181","3.1.9":"66.0.3359.181","3.1.10":"66.0.3359.181","3.1.11":"66.0.3359.181","3.1.12":"66.0.3359.181","3.1.13":"66.0.3359.181","4.0.0-beta.1":"69.0.3497.106","4.0.0-beta.2":"69.0.3497.106","4.0.0-beta.3":"69.0.3497.106","4.0.0-beta.4":"69.0.3497.106","4.0.0-beta.5":"69.0.3497.106","4.0.0-beta.6":"69.0.3497.106","4.0.0-beta.7":"69.0.3497.106","4.0.0-beta.8":"69.0.3497.106","4.0.0-beta.9":"69.0.3497.106","4.0.0-beta.10":"69.0.3497.106","4.0.0-beta.11":"69.0.3497.106","4.0.0-nightly.20180817":"66.0.3359.181","4.0.0-nightly.20180819":"66.0.3359.181","4.0.0-nightly.20180821":"66.0.3359.181","4.0.0-nightly.20180929":"67.0.3396.99","4.0.0-nightly.20181006":"68.0.3440.128","4.0.0-nightly.20181010":"69.0.3497.106","4.0.0":"69.0.3497.106","4.0.1":"69.0.3497.106","4.0.2":"69.0.3497.106","4.0.3":"69.0.3497.106","4.0.4":"69.0.3497.106","4.0.5":"69.0.3497.106","4.0.6":"69.0.3497.106","4.0.7":"69.0.3497.128","4.0.8":"69.0.3497.128","4.1.0":"69.0.3497.128","4.1.1":"69.0.3497.128","4.1.2":"69.0.3497.128","4.1.3":"69.0.3497.128","4.1.4":"69.0.3497.128","4.1.5":"69.0.3497.128","4.2.0":"69.0.3497.128","4.2.1":"69.0.3497.128","4.2.2":"69.0.3497.128","4.2.3":"69.0.3497.128","4.2.4":"69.0.3497.128","4.2.5":"69.0.3497.128","4.2.6":"69.0.3497.128","4.2.7":"69.0.3497.128","4.2.8":"69.0.3497.128","4.2.9":"69.0.3497.128","4.2.10":"69.0.3497.128","4.2.11":"69.0.3497.128","4.2.12":"69.0.3497.128","5.0.0-beta.1":"72.0.3626.52","5.0.0-beta.2":"72.0.3626.52","5.0.0-beta.3":"73.0.3683.27","5.0.0-beta.4":"73.0.3683.54","5.0.0-beta.5":"73.0.3683.61","5.0.0-beta.6":"73.0.3683.84","5.0.0-beta.7":"73.0.3683.94","5.0.0-beta.8":"73.0.3683.104","5.0.0-beta.9":"73.0.3683.117","5.0.0-nightly.20190107":"70.0.3538.110","5.0.0-nightly.20190121":"71.0.3578.98","5.0.0-nightly.20190122":"71.0.3578.98","5.0.0":"73.0.3683.119","5.0.1":"73.0.3683.121","5.0.2":"73.0.3683.121","5.0.3":"73.0.3683.121","5.0.4":"73.0.3683.121","5.0.5":"73.0.3683.121","5.0.6":"73.0.3683.121","5.0.7":"73.0.3683.121","5.0.8":"73.0.3683.121","5.0.9":"73.0.3683.121","5.0.10":"73.0.3683.121","5.0.11":"73.0.3683.121","5.0.12":"73.0.3683.121","5.0.13":"73.0.3683.121","6.0.0-beta.1":"76.0.3774.1","6.0.0-beta.2":"76.0.3783.1","6.0.0-beta.3":"76.0.3783.1","6.0.0-beta.4":"76.0.3783.1","6.0.0-beta.5":"76.0.3805.4","6.0.0-beta.6":"76.0.3809.3","6.0.0-beta.7":"76.0.3809.22","6.0.0-beta.8":"76.0.3809.26","6.0.0-beta.9":"76.0.3809.26","6.0.0-beta.10":"76.0.3809.37","6.0.0-beta.11":"76.0.3809.42","6.0.0-beta.12":"76.0.3809.54","6.0.0-beta.13":"76.0.3809.60","6.0.0-beta.14":"76.0.3809.68","6.0.0-beta.15":"76.0.3809.74","6.0.0-nightly.20190212":"72.0.3626.107","6.0.0-nightly.20190213":"72.0.3626.110","6.0.0-nightly.20190311":"74.0.3724.8","6.0.0":"76.0.3809.88","6.0.1":"76.0.3809.102","6.0.2":"76.0.3809.110","6.0.3":"76.0.3809.126","6.0.4":"76.0.3809.131","6.0.5":"76.0.3809.136","6.0.6":"76.0.3809.138","6.0.7":"76.0.3809.139","6.0.8":"76.0.3809.146","6.0.9":"76.0.3809.146","6.0.10":"76.0.3809.146","6.0.11":"76.0.3809.146","6.0.12":"76.0.3809.146","6.1.0":"76.0.3809.146","6.1.1":"76.0.3809.146","6.1.2":"76.0.3809.146","6.1.3":"76.0.3809.146","6.1.4":"76.0.3809.146","6.1.5":"76.0.3809.146","6.1.6":"76.0.3809.146","6.1.7":"76.0.3809.146","6.1.8":"76.0.3809.146","6.1.9":"76.0.3809.146","6.1.10":"76.0.3809.146","6.1.11":"76.0.3809.146","6.1.12":"76.0.3809.146","7.0.0-beta.1":"78.0.3866.0","7.0.0-beta.2":"78.0.3866.0","7.0.0-beta.3":"78.0.3866.0","7.0.0-beta.4":"78.0.3896.6","7.0.0-beta.5":"78.0.3905.1","7.0.0-beta.6":"78.0.3905.1","7.0.0-beta.7":"78.0.3905.1","7.0.0-nightly.20190521":"76.0.3784.0","7.0.0-nightly.20190529":"76.0.3806.0","7.0.0-nightly.20190530":"76.0.3806.0","7.0.0-nightly.20190531":"76.0.3806.0","7.0.0-nightly.20190602":"76.0.3806.0","7.0.0-nightly.20190603":"76.0.3806.0","7.0.0-nightly.20190604":"77.0.3814.0","7.0.0-nightly.20190605":"77.0.3815.0","7.0.0-nightly.20190606":"77.0.3815.0","7.0.0-nightly.20190607":"77.0.3815.0","7.0.0-nightly.20190608":"77.0.3815.0","7.0.0-nightly.20190609":"77.0.3815.0","7.0.0-nightly.20190611":"77.0.3815.0","7.0.0-nightly.20190612":"77.0.3815.0","7.0.0-nightly.20190613":"77.0.3815.0","7.0.0-nightly.20190615":"77.0.3815.0","7.0.0-nightly.20190616":"77.0.3815.0","7.0.0-nightly.20190618":"77.0.3815.0","7.0.0-nightly.20190619":"77.0.3815.0","7.0.0-nightly.20190622":"77.0.3815.0","7.0.0-nightly.20190623":"77.0.3815.0","7.0.0-nightly.20190624":"77.0.3815.0","7.0.0-nightly.20190627":"77.0.3815.0","7.0.0-nightly.20190629":"77.0.3815.0","7.0.0-nightly.20190630":"77.0.3815.0","7.0.0-nightly.20190701":"77.0.3815.0","7.0.0-nightly.20190702":"77.0.3815.0","7.0.0-nightly.20190704":"77.0.3843.0","7.0.0-nightly.20190705":"77.0.3843.0","7.0.0-nightly.20190719":"77.0.3848.0","7.0.0-nightly.20190720":"77.0.3848.0","7.0.0-nightly.20190721":"77.0.3848.0","7.0.0-nightly.20190726":"77.0.3864.0","7.0.0-nightly.20190727":"78.0.3866.0","7.0.0-nightly.20190728":"78.0.3866.0","7.0.0-nightly.20190729":"78.0.3866.0","7.0.0-nightly.20190730":"78.0.3866.0","7.0.0-nightly.20190731":"78.0.3866.0","7.0.0":"78.0.3905.1","7.0.1":"78.0.3904.92","7.1.0":"78.0.3904.94","7.1.1":"78.0.3904.99","7.1.2":"78.0.3904.113","7.1.3":"78.0.3904.126","7.1.4":"78.0.3904.130","7.1.5":"78.0.3904.130","7.1.6":"78.0.3904.130","7.1.7":"78.0.3904.130","7.1.8":"78.0.3904.130","7.1.9":"78.0.3904.130","7.1.10":"78.0.3904.130","7.1.11":"78.0.3904.130","7.1.12":"78.0.3904.130","7.1.13":"78.0.3904.130","7.1.14":"78.0.3904.130","7.2.0":"78.0.3904.130","7.2.1":"78.0.3904.130","7.2.2":"78.0.3904.130","7.2.3":"78.0.3904.130","7.2.4":"78.0.3904.130","7.3.0":"78.0.3904.130","7.3.1":"78.0.3904.130","7.3.2":"78.0.3904.130","7.3.3":"78.0.3904.130","8.0.0-beta.1":"79.0.3931.0","8.0.0-beta.2":"79.0.3931.0","8.0.0-beta.3":"80.0.3955.0","8.0.0-beta.4":"80.0.3955.0","8.0.0-beta.5":"80.0.3987.14","8.0.0-beta.6":"80.0.3987.51","8.0.0-beta.7":"80.0.3987.59","8.0.0-beta.8":"80.0.3987.75","8.0.0-beta.9":"80.0.3987.75","8.0.0-nightly.20190801":"78.0.3866.0","8.0.0-nightly.20190802":"78.0.3866.0","8.0.0-nightly.20190803":"78.0.3871.0","8.0.0-nightly.20190806":"78.0.3871.0","8.0.0-nightly.20190807":"78.0.3871.0","8.0.0-nightly.20190808":"78.0.3871.0","8.0.0-nightly.20190809":"78.0.3871.0","8.0.0-nightly.20190810":"78.0.3871.0","8.0.0-nightly.20190811":"78.0.3871.0","8.0.0-nightly.20190812":"78.0.3871.0","8.0.0-nightly.20190813":"78.0.3871.0","8.0.0-nightly.20190814":"78.0.3871.0","8.0.0-nightly.20190815":"78.0.3871.0","8.0.0-nightly.20190816":"78.0.3881.0","8.0.0-nightly.20190817":"78.0.3881.0","8.0.0-nightly.20190818":"78.0.3881.0","8.0.0-nightly.20190819":"78.0.3881.0","8.0.0-nightly.20190820":"78.0.3881.0","8.0.0-nightly.20190824":"78.0.3892.0","8.0.0-nightly.20190825":"78.0.3892.0","8.0.0-nightly.20190827":"78.0.3892.0","8.0.0-nightly.20190828":"78.0.3892.0","8.0.0-nightly.20190830":"78.0.3892.0","8.0.0-nightly.20190901":"78.0.3892.0","8.0.0-nightly.20190902":"78.0.3892.0","8.0.0-nightly.20190907":"78.0.3892.0","8.0.0-nightly.20190909":"78.0.3892.0","8.0.0-nightly.20190910":"78.0.3892.0","8.0.0-nightly.20190911":"78.0.3892.0","8.0.0-nightly.20190913":"78.0.3892.0","8.0.0-nightly.20190914":"78.0.3892.0","8.0.0-nightly.20190915":"78.0.3892.0","8.0.0-nightly.20190917":"78.0.3892.0","8.0.0-nightly.20190919":"79.0.3915.0","8.0.0-nightly.20190920":"79.0.3915.0","8.0.0-nightly.20190923":"79.0.3919.0","8.0.0-nightly.20190924":"79.0.3919.0","8.0.0-nightly.20190926":"79.0.3919.0","8.0.0-nightly.20190929":"79.0.3919.0","8.0.0-nightly.20190930":"79.0.3919.0","8.0.0-nightly.20191001":"79.0.3919.0","8.0.0-nightly.20191004":"79.0.3919.0","8.0.0-nightly.20191005":"79.0.3919.0","8.0.0-nightly.20191006":"79.0.3919.0","8.0.0-nightly.20191009":"79.0.3919.0","8.0.0-nightly.20191011":"79.0.3919.0","8.0.0-nightly.20191012":"79.0.3919.0","8.0.0-nightly.20191017":"79.0.3919.0","8.0.0-nightly.20191019":"79.0.3931.0","8.0.0-nightly.20191020":"79.0.3931.0","8.0.0-nightly.20191021":"79.0.3931.0","8.0.0-nightly.20191023":"79.0.3931.0","8.0.0-nightly.20191101":"80.0.3952.0","8.0.0-nightly.20191105":"80.0.3952.0","8.0.0":"80.0.3987.86","8.0.1":"80.0.3987.86","8.0.2":"80.0.3987.86","8.0.3":"80.0.3987.134","8.1.0":"80.0.3987.137","8.1.1":"80.0.3987.141","8.2.0":"80.0.3987.158","8.2.1":"80.0.3987.163","8.2.2":"80.0.3987.163","8.2.3":"80.0.3987.163","8.2.4":"80.0.3987.165","8.2.5":"80.0.3987.165","8.3.0":"80.0.3987.165","8.3.1":"80.0.3987.165","8.3.2":"80.0.3987.165","8.3.3":"80.0.3987.165","8.3.4":"80.0.3987.165","8.4.0":"80.0.3987.165","8.4.1":"80.0.3987.165","8.5.0":"80.0.3987.165","8.5.1":"80.0.3987.165","8.5.2":"80.0.3987.165","8.5.3":"80.0.3987.163","8.5.4":"80.0.3987.163","8.5.5":"80.0.3987.163","9.0.0-beta.1":"82.0.4048.0","9.0.0-beta.2":"82.0.4048.0","9.0.0-beta.3":"82.0.4048.0","9.0.0-beta.4":"82.0.4048.0","9.0.0-beta.5":"82.0.4048.0","9.0.0-beta.6":"82.0.4058.2","9.0.0-beta.7":"82.0.4058.2","9.0.0-beta.9":"82.0.4058.2","9.0.0-beta.10":"82.0.4085.10","9.0.0-beta.12":"82.0.4085.14","9.0.0-beta.13":"82.0.4085.14","9.0.0-beta.14":"82.0.4085.27","9.0.0-beta.15":"83.0.4102.3","9.0.0-beta.16":"83.0.4102.3","9.0.0-beta.17":"83.0.4103.14","9.0.0-beta.18":"83.0.4103.16","9.0.0-beta.19":"83.0.4103.24","9.0.0-beta.20":"83.0.4103.26","9.0.0-beta.21":"83.0.4103.26","9.0.0-beta.22":"83.0.4103.34","9.0.0-beta.23":"83.0.4103.44","9.0.0-beta.24":"83.0.4103.45","9.0.0-nightly.20191121":"80.0.3954.0","9.0.0-nightly.20191122":"80.0.3954.0","9.0.0-nightly.20191123":"80.0.3954.0","9.0.0-nightly.20191124":"80.0.3954.0","9.0.0-nightly.20191129":"80.0.3954.0","9.0.0-nightly.20191130":"80.0.3954.0","9.0.0-nightly.20191201":"80.0.3954.0","9.0.0-nightly.20191202":"80.0.3954.0","9.0.0-nightly.20191203":"80.0.3954.0","9.0.0-nightly.20191204":"80.0.3954.0","9.0.0-nightly.20191210":"80.0.3954.0","9.0.0-nightly.20191220":"81.0.3994.0","9.0.0-nightly.20191221":"81.0.3994.0","9.0.0-nightly.20191222":"81.0.3994.0","9.0.0-nightly.20191223":"81.0.3994.0","9.0.0-nightly.20191224":"81.0.3994.0","9.0.0-nightly.20191225":"81.0.3994.0","9.0.0-nightly.20191226":"81.0.3994.0","9.0.0-nightly.20191228":"81.0.3994.0","9.0.0-nightly.20191229":"81.0.3994.0","9.0.0-nightly.20191230":"81.0.3994.0","9.0.0-nightly.20191231":"81.0.3994.0","9.0.0-nightly.20200101":"81.0.3994.0","9.0.0-nightly.20200103":"81.0.3994.0","9.0.0-nightly.20200104":"81.0.3994.0","9.0.0-nightly.20200105":"81.0.3994.0","9.0.0-nightly.20200106":"81.0.3994.0","9.0.0-nightly.20200108":"81.0.3994.0","9.0.0-nightly.20200109":"81.0.3994.0","9.0.0-nightly.20200110":"81.0.3994.0","9.0.0-nightly.20200111":"81.0.3994.0","9.0.0-nightly.20200113":"81.0.3994.0","9.0.0-nightly.20200115":"81.0.3994.0","9.0.0-nightly.20200116":"81.0.3994.0","9.0.0-nightly.20200117":"81.0.3994.0","9.0.0-nightly.20200119":"81.0.4030.0","9.0.0-nightly.20200121":"81.0.4030.0","9.0.0":"83.0.4103.64","9.0.1":"83.0.4103.94","9.0.2":"83.0.4103.94","9.0.3":"83.0.4103.100","9.0.4":"83.0.4103.104","9.0.5":"83.0.4103.119","9.1.0":"83.0.4103.122","9.1.1":"83.0.4103.122","9.1.2":"83.0.4103.122","9.2.0":"83.0.4103.122","9.2.1":"83.0.4103.122","9.3.0":"83.0.4103.122","9.3.1":"83.0.4103.122","9.3.2":"83.0.4103.122","9.3.3":"83.0.4103.122","9.3.4":"83.0.4103.122","9.3.5":"83.0.4103.122","9.4.0":"83.0.4103.122","9.4.1":"83.0.4103.122","9.4.2":"83.0.4103.122","9.4.3":"83.0.4103.122","9.4.4":"83.0.4103.122","10.0.0-beta.1":"84.0.4129.0","10.0.0-beta.2":"84.0.4129.0","10.0.0-beta.3":"85.0.4161.2","10.0.0-beta.4":"85.0.4161.2","10.0.0-beta.8":"85.0.4181.1","10.0.0-beta.9":"85.0.4181.1","10.0.0-beta.10":"85.0.4183.19","10.0.0-beta.11":"85.0.4183.20","10.0.0-beta.12":"85.0.4183.26","10.0.0-beta.13":"85.0.4183.39","10.0.0-beta.14":"85.0.4183.39","10.0.0-beta.15":"85.0.4183.39","10.0.0-beta.17":"85.0.4183.39","10.0.0-beta.19":"85.0.4183.39","10.0.0-beta.20":"85.0.4183.39","10.0.0-beta.21":"85.0.4183.39","10.0.0-beta.23":"85.0.4183.70","10.0.0-beta.24":"85.0.4183.78","10.0.0-beta.25":"85.0.4183.80","10.0.0-nightly.20200209":"82.0.4050.0","10.0.0-nightly.20200210":"82.0.4050.0","10.0.0-nightly.20200211":"82.0.4050.0","10.0.0-nightly.20200216":"82.0.4050.0","10.0.0-nightly.20200217":"82.0.4050.0","10.0.0-nightly.20200218":"82.0.4050.0","10.0.0-nightly.20200221":"82.0.4050.0","10.0.0-nightly.20200222":"82.0.4050.0","10.0.0-nightly.20200223":"82.0.4050.0","10.0.0-nightly.20200226":"82.0.4050.0","10.0.0-nightly.20200303":"82.0.4050.0","10.0.0-nightly.20200304":"82.0.4076.0","10.0.0-nightly.20200305":"82.0.4076.0","10.0.0-nightly.20200306":"82.0.4076.0","10.0.0-nightly.20200309":"82.0.4076.0","10.0.0-nightly.20200310":"82.0.4076.0","10.0.0-nightly.20200311":"82.0.4083.0","10.0.0-nightly.20200316":"83.0.4086.0","10.0.0-nightly.20200317":"83.0.4087.0","10.0.0-nightly.20200318":"83.0.4087.0","10.0.0-nightly.20200320":"83.0.4087.0","10.0.0-nightly.20200323":"83.0.4087.0","10.0.0-nightly.20200324":"83.0.4087.0","10.0.0-nightly.20200325":"83.0.4087.0","10.0.0-nightly.20200326":"83.0.4087.0","10.0.0-nightly.20200327":"83.0.4087.0","10.0.0-nightly.20200330":"83.0.4087.0","10.0.0-nightly.20200331":"83.0.4087.0","10.0.0-nightly.20200401":"83.0.4087.0","10.0.0-nightly.20200402":"83.0.4087.0","10.0.0-nightly.20200403":"83.0.4087.0","10.0.0-nightly.20200406":"83.0.4087.0","10.0.0-nightly.20200408":"83.0.4095.0","10.0.0-nightly.20200410":"83.0.4095.0","10.0.0-nightly.20200413":"83.0.4095.0","10.0.0-nightly.20200414":"84.0.4114.0","10.0.0-nightly.20200415":"84.0.4115.0","10.0.0-nightly.20200416":"84.0.4115.0","10.0.0-nightly.20200417":"84.0.4115.0","10.0.0-nightly.20200422":"84.0.4121.0","10.0.0-nightly.20200423":"84.0.4121.0","10.0.0-nightly.20200427":"84.0.4125.0","10.0.0-nightly.20200428":"84.0.4125.0","10.0.0-nightly.20200429":"84.0.4125.0","10.0.0-nightly.20200430":"84.0.4125.0","10.0.0-nightly.20200501":"84.0.4129.0","10.0.0-nightly.20200504":"84.0.4129.0","10.0.0-nightly.20200505":"84.0.4129.0","10.0.0-nightly.20200506":"84.0.4129.0","10.0.0-nightly.20200507":"84.0.4129.0","10.0.0-nightly.20200508":"84.0.4129.0","10.0.0-nightly.20200511":"84.0.4129.0","10.0.0-nightly.20200512":"84.0.4129.0","10.0.0-nightly.20200513":"84.0.4129.0","10.0.0-nightly.20200514":"84.0.4129.0","10.0.0-nightly.20200515":"84.0.4129.0","10.0.0-nightly.20200518":"84.0.4129.0","10.0.0-nightly.20200519":"84.0.4129.0","10.0.0-nightly.20200520":"84.0.4129.0","10.0.0-nightly.20200521":"84.0.4129.0","10.0.0":"85.0.4183.84","10.0.1":"85.0.4183.86","10.1.0":"85.0.4183.87","10.1.1":"85.0.4183.93","10.1.2":"85.0.4183.98","10.1.3":"85.0.4183.121","10.1.4":"85.0.4183.121","10.1.5":"85.0.4183.121","10.1.6":"85.0.4183.121","10.1.7":"85.0.4183.121","10.2.0":"85.0.4183.121","10.3.0":"85.0.4183.121","10.3.1":"85.0.4183.121","10.3.2":"85.0.4183.121","10.4.0":"85.0.4183.121","10.4.1":"85.0.4183.121","10.4.2":"85.0.4183.121","10.4.3":"85.0.4183.121","10.4.4":"85.0.4183.121","10.4.5":"85.0.4183.121","10.4.6":"85.0.4183.121","10.4.7":"85.0.4183.121","11.0.0-beta.1":"86.0.4234.0","11.0.0-beta.3":"86.0.4234.0","11.0.0-beta.4":"86.0.4234.0","11.0.0-beta.5":"86.0.4234.0","11.0.0-beta.6":"86.0.4234.0","11.0.0-beta.7":"86.0.4234.0","11.0.0-beta.8":"87.0.4251.1","11.0.0-beta.9":"87.0.4251.1","11.0.0-beta.11":"87.0.4251.1","11.0.0-beta.12":"87.0.4280.11","11.0.0-beta.13":"87.0.4280.11","11.0.0-beta.16":"87.0.4280.27","11.0.0-beta.17":"87.0.4280.27","11.0.0-beta.18":"87.0.4280.27","11.0.0-beta.19":"87.0.4280.27","11.0.0-beta.20":"87.0.4280.40","11.0.0-beta.22":"87.0.4280.47","11.0.0-beta.23":"87.0.4280.47","11.0.0-nightly.20200525":"84.0.4129.0","11.0.0-nightly.20200526":"84.0.4129.0","11.0.0-nightly.20200529":"85.0.4156.0","11.0.0-nightly.20200602":"85.0.4162.0","11.0.0-nightly.20200603":"85.0.4162.0","11.0.0-nightly.20200604":"85.0.4162.0","11.0.0-nightly.20200609":"85.0.4162.0","11.0.0-nightly.20200610":"85.0.4162.0","11.0.0-nightly.20200611":"85.0.4162.0","11.0.0-nightly.20200615":"85.0.4162.0","11.0.0-nightly.20200616":"85.0.4162.0","11.0.0-nightly.20200617":"85.0.4162.0","11.0.0-nightly.20200618":"85.0.4162.0","11.0.0-nightly.20200619":"85.0.4162.0","11.0.0-nightly.20200701":"85.0.4179.0","11.0.0-nightly.20200702":"85.0.4179.0","11.0.0-nightly.20200703":"85.0.4179.0","11.0.0-nightly.20200706":"85.0.4179.0","11.0.0-nightly.20200707":"85.0.4179.0","11.0.0-nightly.20200708":"85.0.4179.0","11.0.0-nightly.20200709":"85.0.4179.0","11.0.0-nightly.20200716":"86.0.4203.0","11.0.0-nightly.20200717":"86.0.4203.0","11.0.0-nightly.20200720":"86.0.4203.0","11.0.0-nightly.20200721":"86.0.4203.0","11.0.0-nightly.20200723":"86.0.4209.0","11.0.0-nightly.20200724":"86.0.4209.0","11.0.0-nightly.20200729":"86.0.4209.0","11.0.0-nightly.20200730":"86.0.4209.0","11.0.0-nightly.20200731":"86.0.4209.0","11.0.0-nightly.20200803":"86.0.4209.0","11.0.0-nightly.20200804":"86.0.4209.0","11.0.0-nightly.20200805":"86.0.4209.0","11.0.0-nightly.20200811":"86.0.4209.0","11.0.0-nightly.20200812":"86.0.4209.0","11.0.0-nightly.20200822":"86.0.4234.0","11.0.0-nightly.20200824":"86.0.4234.0","11.0.0-nightly.20200825":"86.0.4234.0","11.0.0-nightly.20200826":"86.0.4234.0","11.0.0":"87.0.4280.60","11.0.1":"87.0.4280.60","11.0.2":"87.0.4280.67","11.0.3":"87.0.4280.67","11.0.4":"87.0.4280.67","11.0.5":"87.0.4280.88","11.1.0":"87.0.4280.88","11.1.1":"87.0.4280.88","11.2.0":"87.0.4280.141","11.2.1":"87.0.4280.141","11.2.2":"87.0.4280.141","11.2.3":"87.0.4280.141","11.3.0":"87.0.4280.141","11.4.0":"87.0.4280.141","11.4.1":"87.0.4280.141","11.4.2":"87.0.4280.141","11.4.3":"87.0.4280.141","11.4.4":"87.0.4280.141","11.4.5":"87.0.4280.141","11.4.6":"87.0.4280.141","11.4.7":"87.0.4280.141","11.4.8":"87.0.4280.141","11.4.9":"87.0.4280.141","11.4.10":"87.0.4280.141","11.4.11":"87.0.4280.141","11.4.12":"87.0.4280.141","11.5.0":"87.0.4280.141","12.0.0-beta.1":"89.0.4328.0","12.0.0-beta.3":"89.0.4328.0","12.0.0-beta.4":"89.0.4328.0","12.0.0-beta.5":"89.0.4328.0","12.0.0-beta.6":"89.0.4328.0","12.0.0-beta.7":"89.0.4328.0","12.0.0-beta.8":"89.0.4328.0","12.0.0-beta.9":"89.0.4328.0","12.0.0-beta.10":"89.0.4328.0","12.0.0-beta.11":"89.0.4328.0","12.0.0-beta.12":"89.0.4328.0","12.0.0-beta.14":"89.0.4328.0","12.0.0-beta.16":"89.0.4348.1","12.0.0-beta.18":"89.0.4348.1","12.0.0-beta.19":"89.0.4348.1","12.0.0-beta.20":"89.0.4348.1","12.0.0-beta.21":"89.0.4388.2","12.0.0-beta.22":"89.0.4388.2","12.0.0-beta.23":"89.0.4388.2","12.0.0-beta.24":"89.0.4388.2","12.0.0-beta.25":"89.0.4388.2","12.0.0-beta.26":"89.0.4388.2","12.0.0-beta.27":"89.0.4389.23","12.0.0-beta.28":"89.0.4389.23","12.0.0-beta.29":"89.0.4389.23","12.0.0-beta.30":"89.0.4389.58","12.0.0-beta.31":"89.0.4389.58","12.0.0-nightly.20200827":"86.0.4234.0","12.0.0-nightly.20200831":"86.0.4234.0","12.0.0-nightly.20200902":"86.0.4234.0","12.0.0-nightly.20200903":"86.0.4234.0","12.0.0-nightly.20200907":"86.0.4234.0","12.0.0-nightly.20200910":"86.0.4234.0","12.0.0-nightly.20200911":"86.0.4234.0","12.0.0-nightly.20200914":"86.0.4234.0","12.0.0-nightly.20201013":"87.0.4268.0","12.0.0-nightly.20201014":"87.0.4268.0","12.0.0-nightly.20201015":"87.0.4268.0","12.0.0-nightly.20201023":"88.0.4292.0","12.0.0-nightly.20201026":"88.0.4292.0","12.0.0-nightly.20201030":"88.0.4306.0","12.0.0-nightly.20201102":"88.0.4306.0","12.0.0-nightly.20201103":"88.0.4306.0","12.0.0-nightly.20201104":"88.0.4306.0","12.0.0-nightly.20201105":"88.0.4306.0","12.0.0-nightly.20201106":"88.0.4306.0","12.0.0-nightly.20201111":"88.0.4306.0","12.0.0-nightly.20201112":"88.0.4306.0","12.0.0-nightly.20201116":"88.0.4324.0","12.0.0":"89.0.4389.69","12.0.1":"89.0.4389.82","12.0.2":"89.0.4389.90","12.0.3":"89.0.4389.114","12.0.4":"89.0.4389.114","12.0.5":"89.0.4389.128","12.0.6":"89.0.4389.128","12.0.7":"89.0.4389.128","12.0.8":"89.0.4389.128","12.0.9":"89.0.4389.128","12.0.10":"89.0.4389.128","12.0.11":"89.0.4389.128","12.0.12":"89.0.4389.128","12.0.13":"89.0.4389.128","12.0.14":"89.0.4389.128","12.0.15":"89.0.4389.128","12.0.16":"89.0.4389.128","12.0.17":"89.0.4389.128","12.0.18":"89.0.4389.128","12.1.0":"89.0.4389.128","12.1.1":"89.0.4389.128","12.1.2":"89.0.4389.128","12.2.0":"89.0.4389.128","12.2.1":"89.0.4389.128","12.2.2":"89.0.4389.128","12.2.3":"89.0.4389.128","13.0.0-beta.2":"90.0.4402.0","13.0.0-beta.3":"90.0.4402.0","13.0.0-beta.4":"90.0.4415.0","13.0.0-beta.5":"90.0.4415.0","13.0.0-beta.6":"90.0.4415.0","13.0.0-beta.7":"90.0.4415.0","13.0.0-beta.8":"90.0.4415.0","13.0.0-beta.9":"90.0.4415.0","13.0.0-beta.11":"90.0.4415.0","13.0.0-beta.12":"90.0.4415.0","13.0.0-beta.13":"90.0.4415.0","13.0.0-beta.14":"91.0.4448.0","13.0.0-beta.16":"91.0.4448.0","13.0.0-beta.17":"91.0.4448.0","13.0.0-beta.18":"91.0.4448.0","13.0.0-beta.20":"91.0.4448.0","13.0.0-beta.21":"91.0.4472.33","13.0.0-beta.22":"91.0.4472.33","13.0.0-beta.23":"91.0.4472.33","13.0.0-beta.24":"91.0.4472.38","13.0.0-beta.26":"91.0.4472.38","13.0.0-beta.27":"91.0.4472.38","13.0.0-beta.28":"91.0.4472.38","13.0.0-nightly.20201119":"89.0.4328.0","13.0.0-nightly.20201123":"89.0.4328.0","13.0.0-nightly.20201124":"89.0.4328.0","13.0.0-nightly.20201126":"89.0.4328.0","13.0.0-nightly.20201127":"89.0.4328.0","13.0.0-nightly.20201130":"89.0.4328.0","13.0.0-nightly.20201201":"89.0.4328.0","13.0.0-nightly.20201202":"89.0.4328.0","13.0.0-nightly.20201203":"89.0.4328.0","13.0.0-nightly.20201204":"89.0.4328.0","13.0.0-nightly.20201207":"89.0.4328.0","13.0.0-nightly.20201208":"89.0.4328.0","13.0.0-nightly.20201209":"89.0.4328.0","13.0.0-nightly.20201210":"89.0.4328.0","13.0.0-nightly.20201211":"89.0.4328.0","13.0.0-nightly.20201214":"89.0.4328.0","13.0.0-nightly.20201215":"89.0.4349.0","13.0.0-nightly.20201216":"89.0.4349.0","13.0.0-nightly.20201221":"89.0.4349.0","13.0.0-nightly.20201222":"89.0.4349.0","13.0.0-nightly.20201223":"89.0.4359.0","13.0.0-nightly.20210104":"89.0.4359.0","13.0.0-nightly.20210108":"89.0.4359.0","13.0.0-nightly.20210111":"89.0.4359.0","13.0.0-nightly.20210113":"89.0.4386.0","13.0.0-nightly.20210114":"89.0.4386.0","13.0.0-nightly.20210118":"89.0.4386.0","13.0.0-nightly.20210122":"89.0.4386.0","13.0.0-nightly.20210125":"89.0.4386.0","13.0.0-nightly.20210127":"89.0.4389.0","13.0.0-nightly.20210128":"89.0.4389.0","13.0.0-nightly.20210129":"89.0.4389.0","13.0.0-nightly.20210201":"89.0.4389.0","13.0.0-nightly.20210202":"89.0.4389.0","13.0.0-nightly.20210203":"89.0.4389.0","13.0.0-nightly.20210205":"89.0.4389.0","13.0.0-nightly.20210208":"89.0.4389.0","13.0.0-nightly.20210209":"89.0.4389.0","13.0.0-nightly.20210210":"90.0.4402.0","13.0.0-nightly.20210211":"90.0.4402.0","13.0.0-nightly.20210212":"90.0.4402.0","13.0.0-nightly.20210216":"90.0.4402.0","13.0.0-nightly.20210217":"90.0.4402.0","13.0.0-nightly.20210218":"90.0.4402.0","13.0.0-nightly.20210219":"90.0.4402.0","13.0.0-nightly.20210222":"90.0.4402.0","13.0.0-nightly.20210225":"90.0.4402.0","13.0.0-nightly.20210226":"90.0.4402.0","13.0.0-nightly.20210301":"90.0.4402.0","13.0.0-nightly.20210302":"90.0.4402.0","13.0.0-nightly.20210303":"90.0.4402.0","13.0.0":"91.0.4472.69","13.0.1":"91.0.4472.69","13.1.0":"91.0.4472.77","13.1.1":"91.0.4472.77","13.1.2":"91.0.4472.77","13.1.3":"91.0.4472.106","13.1.4":"91.0.4472.106","13.1.5":"91.0.4472.124","13.1.6":"91.0.4472.124","13.1.7":"91.0.4472.124","13.1.8":"91.0.4472.164","13.1.9":"91.0.4472.164","13.2.0":"91.0.4472.164","13.2.1":"91.0.4472.164","13.2.2":"91.0.4472.164","13.2.3":"91.0.4472.164","13.3.0":"91.0.4472.164","13.4.0":"91.0.4472.164","13.5.0":"91.0.4472.164","13.5.1":"91.0.4472.164","13.5.2":"91.0.4472.164","13.6.0":"91.0.4472.164","13.6.1":"91.0.4472.164","13.6.2":"91.0.4472.164","13.6.3":"91.0.4472.164","13.6.6":"91.0.4472.164","13.6.7":"91.0.4472.164","13.6.8":"91.0.4472.164","13.6.9":"91.0.4472.164","14.0.0-beta.1":"92.0.4511.0","14.0.0-beta.2":"92.0.4511.0","14.0.0-beta.3":"92.0.4511.0","14.0.0-beta.5":"93.0.4536.0","14.0.0-beta.6":"93.0.4536.0","14.0.0-beta.7":"93.0.4536.0","14.0.0-beta.8":"93.0.4536.0","14.0.0-beta.9":"93.0.4539.0","14.0.0-beta.10":"93.0.4539.0","14.0.0-beta.11":"93.0.4557.4","14.0.0-beta.12":"93.0.4557.4","14.0.0-beta.13":"93.0.4566.0","14.0.0-beta.14":"93.0.4566.0","14.0.0-beta.15":"93.0.4566.0","14.0.0-beta.16":"93.0.4566.0","14.0.0-beta.17":"93.0.4566.0","14.0.0-beta.18":"93.0.4577.15","14.0.0-beta.19":"93.0.4577.15","14.0.0-beta.20":"93.0.4577.15","14.0.0-beta.21":"93.0.4577.15","14.0.0-beta.22":"93.0.4577.25","14.0.0-beta.23":"93.0.4577.25","14.0.0-beta.24":"93.0.4577.51","14.0.0-beta.25":"93.0.4577.51","14.0.0-nightly.20210304":"90.0.4402.0","14.0.0-nightly.20210305":"90.0.4415.0","14.0.0-nightly.20210308":"90.0.4415.0","14.0.0-nightly.20210309":"90.0.4415.0","14.0.0-nightly.20210311":"90.0.4415.0","14.0.0-nightly.20210315":"90.0.4415.0","14.0.0-nightly.20210316":"90.0.4415.0","14.0.0-nightly.20210317":"90.0.4415.0","14.0.0-nightly.20210318":"90.0.4415.0","14.0.0-nightly.20210319":"90.0.4415.0","14.0.0-nightly.20210323":"90.0.4415.0","14.0.0-nightly.20210324":"90.0.4415.0","14.0.0-nightly.20210325":"90.0.4415.0","14.0.0-nightly.20210326":"90.0.4415.0","14.0.0-nightly.20210329":"90.0.4415.0","14.0.0-nightly.20210330":"90.0.4415.0","14.0.0-nightly.20210331":"91.0.4448.0","14.0.0-nightly.20210401":"91.0.4448.0","14.0.0-nightly.20210402":"91.0.4448.0","14.0.0-nightly.20210406":"91.0.4448.0","14.0.0-nightly.20210407":"91.0.4448.0","14.0.0-nightly.20210408":"91.0.4448.0","14.0.0-nightly.20210409":"91.0.4448.0","14.0.0-nightly.20210413":"91.0.4448.0","14.0.0-nightly.20210426":"92.0.4475.0","14.0.0-nightly.20210427":"92.0.4475.0","14.0.0-nightly.20210430":"92.0.4488.0","14.0.0-nightly.20210503":"92.0.4488.0","14.0.0-nightly.20210505":"92.0.4496.0","14.0.0-nightly.20210506":"92.0.4498.0","14.0.0-nightly.20210507":"92.0.4499.0","14.0.0-nightly.20210510":"92.0.4499.0","14.0.0-nightly.20210511":"92.0.4499.0","14.0.0-nightly.20210512":"92.0.4499.0","14.0.0-nightly.20210513":"92.0.4499.0","14.0.0-nightly.20210514":"92.0.4505.0","14.0.0-nightly.20210517":"92.0.4505.0","14.0.0-nightly.20210518":"92.0.4505.0","14.0.0-nightly.20210519":"92.0.4505.0","14.0.0-nightly.20210520":"92.0.4511.0","14.0.0-nightly.20210523":"92.0.4511.0","14.0.0-nightly.20210524":"92.0.4511.0","14.0.0":"93.0.4577.58","14.0.1":"93.0.4577.63","14.0.2":"93.0.4577.82","14.1.0":"93.0.4577.82","14.1.1":"93.0.4577.82","14.2.0":"93.0.4577.82","14.2.1":"93.0.4577.82","14.2.2":"93.0.4577.82","14.2.3":"93.0.4577.82","14.2.4":"93.0.4577.82","14.2.5":"93.0.4577.82","14.2.6":"93.0.4577.82","14.2.7":"93.0.4577.82","15.0.0-alpha.1":"93.0.4566.0","15.0.0-alpha.2":"93.0.4566.0","15.0.0-alpha.3":"94.0.4584.0","15.0.0-alpha.4":"94.0.4584.0","15.0.0-alpha.5":"94.0.4584.0","15.0.0-alpha.6":"94.0.4584.0","15.0.0-alpha.7":"94.0.4590.2","15.0.0-alpha.8":"94.0.4590.2","15.0.0-alpha.9":"94.0.4590.2","15.0.0-alpha.10":"94.0.4606.12","15.0.0-beta.1":"94.0.4606.20","15.0.0-beta.2":"94.0.4606.20","15.0.0-beta.3":"94.0.4606.31","15.0.0-beta.4":"94.0.4606.31","15.0.0-beta.5":"94.0.4606.31","15.0.0-beta.6":"94.0.4606.31","15.0.0-beta.7":"94.0.4606.31","15.0.0-nightly.20210527":"92.0.4511.0","15.0.0-nightly.20210528":"92.0.4511.0","15.0.0-nightly.20210531":"92.0.4511.0","15.0.0-nightly.20210601":"92.0.4511.0","15.0.0-nightly.20210602":"92.0.4511.0","15.0.0-nightly.20210603":"93.0.4530.0","15.0.0-nightly.20210604":"93.0.4530.0","15.0.0-nightly.20210608":"93.0.4535.0","15.0.0-nightly.20210609":"93.0.4536.0","15.0.0-nightly.20210610":"93.0.4536.0","15.0.0-nightly.20210611":"93.0.4536.0","15.0.0-nightly.20210614":"93.0.4536.0","15.0.0-nightly.20210615":"93.0.4536.0","15.0.0-nightly.20210616":"93.0.4536.0","15.0.0-nightly.20210617":"93.0.4539.0","15.0.0-nightly.20210618":"93.0.4539.0","15.0.0-nightly.20210621":"93.0.4539.0","15.0.0-nightly.20210622":"93.0.4539.0","15.0.0-nightly.20210623":"93.0.4550.0","15.0.0-nightly.20210624":"93.0.4550.0","15.0.0-nightly.20210625":"93.0.4552.0","15.0.0-nightly.20210628":"93.0.4552.0","15.0.0-nightly.20210629":"93.0.4552.0","15.0.0-nightly.20210630":"93.0.4558.0","15.0.0-nightly.20210701":"93.0.4558.0","15.0.0-nightly.20210702":"93.0.4558.0","15.0.0-nightly.20210705":"93.0.4558.0","15.0.0-nightly.20210706":"93.0.4566.0","15.0.0-nightly.20210707":"93.0.4566.0","15.0.0-nightly.20210708":"93.0.4566.0","15.0.0-nightly.20210709":"93.0.4566.0","15.0.0-nightly.20210712":"93.0.4566.0","15.0.0-nightly.20210713":"93.0.4566.0","15.0.0-nightly.20210714":"93.0.4566.0","15.0.0-nightly.20210715":"93.0.4566.0","15.0.0-nightly.20210716":"93.0.4566.0","15.0.0-nightly.20210719":"93.0.4566.0","15.0.0-nightly.20210720":"93.0.4566.0","15.0.0-nightly.20210721":"93.0.4566.0","15.0.0":"94.0.4606.51","15.1.0":"94.0.4606.61","15.1.1":"94.0.4606.61","15.1.2":"94.0.4606.71","15.2.0":"94.0.4606.81","15.3.0":"94.0.4606.81","15.3.1":"94.0.4606.81","15.3.2":"94.0.4606.81","15.3.3":"94.0.4606.81","15.3.4":"94.0.4606.81","15.3.5":"94.0.4606.81","15.3.6":"94.0.4606.81","15.3.7":"94.0.4606.81","15.4.0":"94.0.4606.81","15.4.1":"94.0.4606.81","16.0.0-alpha.1":"95.0.4629.0","16.0.0-alpha.2":"95.0.4629.0","16.0.0-alpha.3":"95.0.4629.0","16.0.0-alpha.4":"95.0.4629.0","16.0.0-alpha.5":"95.0.4629.0","16.0.0-alpha.6":"95.0.4629.0","16.0.0-alpha.7":"95.0.4629.0","16.0.0-alpha.8":"96.0.4647.0","16.0.0-alpha.9":"96.0.4647.0","16.0.0-beta.1":"96.0.4647.0","16.0.0-beta.2":"96.0.4647.0","16.0.0-beta.3":"96.0.4647.0","16.0.0-beta.4":"96.0.4664.18","16.0.0-beta.5":"96.0.4664.18","16.0.0-beta.6":"96.0.4664.27","16.0.0-beta.7":"96.0.4664.27","16.0.0-beta.8":"96.0.4664.35","16.0.0-beta.9":"96.0.4664.35","16.0.0-nightly.20210722":"93.0.4566.0","16.0.0-nightly.20210723":"93.0.4566.0","16.0.0-nightly.20210726":"93.0.4566.0","16.0.0-nightly.20210727":"94.0.4584.0","16.0.0-nightly.20210728":"94.0.4584.0","16.0.0-nightly.20210729":"94.0.4584.0","16.0.0-nightly.20210730":"94.0.4584.0","16.0.0-nightly.20210802":"94.0.4584.0","16.0.0-nightly.20210803":"94.0.4584.0","16.0.0-nightly.20210804":"94.0.4584.0","16.0.0-nightly.20210805":"94.0.4584.0","16.0.0-nightly.20210806":"94.0.4584.0","16.0.0-nightly.20210809":"94.0.4584.0","16.0.0-nightly.20210810":"94.0.4584.0","16.0.0-nightly.20210811":"94.0.4584.0","16.0.0-nightly.20210812":"94.0.4590.2","16.0.0-nightly.20210813":"94.0.4590.2","16.0.0-nightly.20210816":"94.0.4590.2","16.0.0-nightly.20210817":"94.0.4590.2","16.0.0-nightly.20210818":"94.0.4590.2","16.0.0-nightly.20210819":"94.0.4590.2","16.0.0-nightly.20210820":"94.0.4590.2","16.0.0-nightly.20210823":"94.0.4590.2","16.0.0-nightly.20210824":"95.0.4612.5","16.0.0-nightly.20210825":"95.0.4612.5","16.0.0-nightly.20210826":"95.0.4612.5","16.0.0-nightly.20210827":"95.0.4612.5","16.0.0-nightly.20210830":"95.0.4612.5","16.0.0-nightly.20210831":"95.0.4612.5","16.0.0-nightly.20210901":"95.0.4612.5","16.0.0-nightly.20210902":"95.0.4629.0","16.0.0-nightly.20210903":"95.0.4629.0","16.0.0-nightly.20210906":"95.0.4629.0","16.0.0-nightly.20210907":"95.0.4629.0","16.0.0-nightly.20210908":"95.0.4629.0","16.0.0-nightly.20210909":"95.0.4629.0","16.0.0-nightly.20210910":"95.0.4629.0","16.0.0-nightly.20210913":"95.0.4629.0","16.0.0-nightly.20210914":"95.0.4629.0","16.0.0-nightly.20210915":"95.0.4629.0","16.0.0-nightly.20210916":"95.0.4629.0","16.0.0-nightly.20210917":"95.0.4629.0","16.0.0-nightly.20210920":"95.0.4629.0","16.0.0-nightly.20210921":"95.0.4629.0","16.0.0-nightly.20210922":"95.0.4629.0","16.0.0":"96.0.4664.45","16.0.1":"96.0.4664.45","16.0.2":"96.0.4664.55","16.0.3":"96.0.4664.55","16.0.4":"96.0.4664.55","16.0.5":"96.0.4664.55","16.0.6":"96.0.4664.110","16.0.7":"96.0.4664.110","16.0.8":"96.0.4664.110","16.0.9":"96.0.4664.174","16.0.10":"96.0.4664.174","16.1.0":"96.0.4664.174","17.0.0-alpha.1":"96.0.4664.4","17.0.0-alpha.2":"96.0.4664.4","17.0.0-alpha.3":"96.0.4664.4","17.0.0-alpha.4":"98.0.4706.0","17.0.0-alpha.5":"98.0.4706.0","17.0.0-alpha.6":"98.0.4706.0","17.0.0-beta.1":"98.0.4706.0","17.0.0-beta.2":"98.0.4706.0","17.0.0-beta.3":"98.0.4758.9","17.0.0-beta.4":"98.0.4758.11","17.0.0-beta.5":"98.0.4758.11","17.0.0-beta.6":"98.0.4758.11","17.0.0-beta.7":"98.0.4758.11","17.0.0-beta.8":"98.0.4758.11","17.0.0-beta.9":"98.0.4758.11","17.0.0-nightly.20210923":"95.0.4629.0","17.0.0-nightly.20210924":"95.0.4629.0","17.0.0-nightly.20210927":"95.0.4629.0","17.0.0-nightly.20210928":"95.0.4629.0","17.0.0-nightly.20210929":"95.0.4629.0","17.0.0-nightly.20210930":"95.0.4629.0","17.0.0-nightly.20211001":"95.0.4629.0","17.0.0-nightly.20211004":"95.0.4629.0","17.0.0-nightly.20211005":"95.0.4629.0","17.0.0-nightly.20211006":"96.0.4647.0","17.0.0-nightly.20211007":"96.0.4647.0","17.0.0-nightly.20211008":"96.0.4647.0","17.0.0-nightly.20211011":"96.0.4647.0","17.0.0-nightly.20211012":"96.0.4647.0","17.0.0-nightly.20211013":"96.0.4647.0","17.0.0-nightly.20211014":"96.0.4647.0","17.0.0-nightly.20211015":"96.0.4647.0","17.0.0-nightly.20211018":"96.0.4647.0","17.0.0-nightly.20211019":"96.0.4647.0","17.0.0-nightly.20211020":"96.0.4647.0","17.0.0-nightly.20211021":"96.0.4647.0","17.0.0-nightly.20211022":"96.0.4664.4","17.0.0-nightly.20211025":"96.0.4664.4","17.0.0-nightly.20211026":"96.0.4664.4","17.0.0-nightly.20211027":"96.0.4664.4","17.0.0-nightly.20211028":"96.0.4664.4","17.0.0-nightly.20211029":"96.0.4664.4","17.0.0-nightly.20211101":"96.0.4664.4","17.0.0-nightly.20211102":"96.0.4664.4","17.0.0-nightly.20211103":"96.0.4664.4","17.0.0-nightly.20211104":"96.0.4664.4","17.0.0-nightly.20211105":"96.0.4664.4","17.0.0-nightly.20211108":"96.0.4664.4","17.0.0-nightly.20211109":"96.0.4664.4","17.0.0-nightly.20211110":"96.0.4664.4","17.0.0-nightly.20211111":"96.0.4664.4","17.0.0-nightly.20211112":"96.0.4664.4","17.0.0-nightly.20211115":"96.0.4664.4","17.0.0-nightly.20211116":"96.0.4664.4","17.0.0-nightly.20211117":"96.0.4664.4","17.0.0":"98.0.4758.74","17.0.1":"98.0.4758.82","17.1.0":"98.0.4758.102","17.1.1":"98.0.4758.109","17.1.2":"98.0.4758.109","18.0.0-alpha.1":"99.0.4767.0","18.0.0-alpha.2":"99.0.4767.0","18.0.0-alpha.3":"99.0.4767.0","18.0.0-alpha.4":"99.0.4767.0","18.0.0-alpha.5":"99.0.4767.0","18.0.0-beta.1":"100.0.4894.0","18.0.0-beta.2":"100.0.4894.0","18.0.0-nightly.20211118":"96.0.4664.4","18.0.0-nightly.20211119":"96.0.4664.4","18.0.0-nightly.20211122":"96.0.4664.4","18.0.0-nightly.20211123":"96.0.4664.4","18.0.0-nightly.20211124":"98.0.4706.0","18.0.0-nightly.20211125":"98.0.4706.0","18.0.0-nightly.20211126":"98.0.4706.0","18.0.0-nightly.20211129":"98.0.4706.0","18.0.0-nightly.20211130":"98.0.4706.0","18.0.0-nightly.20211201":"98.0.4706.0","18.0.0-nightly.20211202":"98.0.4706.0","18.0.0-nightly.20211203":"98.0.4706.0","18.0.0-nightly.20211206":"98.0.4706.0","18.0.0-nightly.20211207":"98.0.4706.0","18.0.0-nightly.20211208":"98.0.4706.0","18.0.0-nightly.20211209":"98.0.4706.0","18.0.0-nightly.20211210":"98.0.4706.0","18.0.0-nightly.20211213":"98.0.4706.0","18.0.0-nightly.20211214":"98.0.4706.0","18.0.0-nightly.20211215":"98.0.4706.0","18.0.0-nightly.20211216":"98.0.4706.0","18.0.0-nightly.20211217":"98.0.4706.0","18.0.0-nightly.20211220":"98.0.4706.0","18.0.0-nightly.20211221":"98.0.4706.0","18.0.0-nightly.20211222":"98.0.4706.0","18.0.0-nightly.20211223":"98.0.4706.0","18.0.0-nightly.20211228":"98.0.4706.0","18.0.0-nightly.20211229":"98.0.4706.0","18.0.0-nightly.20211231":"98.0.4706.0","18.0.0-nightly.20220103":"98.0.4706.0","18.0.0-nightly.20220104":"98.0.4706.0","18.0.0-nightly.20220105":"98.0.4706.0","18.0.0-nightly.20220106":"98.0.4706.0","18.0.0-nightly.20220107":"98.0.4706.0","18.0.0-nightly.20220110":"98.0.4706.0","18.0.0-nightly.20220111":"99.0.4767.0","18.0.0-nightly.20220112":"99.0.4767.0","18.0.0-nightly.20220113":"99.0.4767.0","18.0.0-nightly.20220114":"99.0.4767.0","18.0.0-nightly.20220117":"99.0.4767.0","18.0.0-nightly.20220118":"99.0.4767.0","18.0.0-nightly.20220119":"99.0.4767.0","18.0.0-nightly.20220121":"99.0.4767.0","18.0.0-nightly.20220124":"99.0.4767.0","18.0.0-nightly.20220125":"99.0.4767.0","18.0.0-nightly.20220127":"99.0.4767.0","18.0.0-nightly.20220128":"99.0.4767.0","18.0.0-nightly.20220131":"99.0.4767.0","18.0.0-nightly.20220201":"99.0.4767.0","19.0.0-nightly.20220202":"99.0.4767.0","19.0.0-nightly.20220203":"99.0.4767.0","19.0.0-nightly.20220204":"99.0.4767.0","19.0.0-nightly.20220207":"99.0.4767.0","19.0.0-nightly.20220208":"99.0.4767.0","19.0.0-nightly.20220209":"99.0.4767.0","19.0.0-nightly.20220308":"100.0.4894.0","19.0.0-nightly.20220309":"100.0.4894.0","19.0.0-nightly.20220310":"100.0.4894.0","19.0.0-nightly.20220311":"100.0.4894.0"} \ No newline at end of file +{"0.20.0":"39.0.2171.65","0.20.1":"39.0.2171.65","0.20.2":"39.0.2171.65","0.20.3":"39.0.2171.65","0.20.4":"39.0.2171.65","0.20.5":"39.0.2171.65","0.20.6":"39.0.2171.65","0.20.7":"39.0.2171.65","0.20.8":"39.0.2171.65","0.21.0":"40.0.2214.91","0.21.1":"40.0.2214.91","0.21.2":"40.0.2214.91","0.21.3":"41.0.2272.76","0.22.1":"41.0.2272.76","0.22.2":"41.0.2272.76","0.22.3":"41.0.2272.76","0.23.0":"41.0.2272.76","0.24.0":"41.0.2272.76","0.25.0":"42.0.2311.107","0.25.1":"42.0.2311.107","0.25.2":"42.0.2311.107","0.25.3":"42.0.2311.107","0.26.0":"42.0.2311.107","0.26.1":"42.0.2311.107","0.27.0":"42.0.2311.107","0.27.1":"42.0.2311.107","0.27.2":"43.0.2357.65","0.27.3":"43.0.2357.65","0.28.0":"43.0.2357.65","0.28.1":"43.0.2357.65","0.28.2":"43.0.2357.65","0.28.3":"43.0.2357.65","0.29.1":"43.0.2357.65","0.29.2":"43.0.2357.65","0.30.4":"44.0.2403.125","0.31.0":"44.0.2403.125","0.31.2":"45.0.2454.85","0.32.2":"45.0.2454.85","0.32.3":"45.0.2454.85","0.33.0":"45.0.2454.85","0.33.1":"45.0.2454.85","0.33.2":"45.0.2454.85","0.33.3":"45.0.2454.85","0.33.4":"45.0.2454.85","0.33.6":"45.0.2454.85","0.33.7":"45.0.2454.85","0.33.8":"45.0.2454.85","0.33.9":"45.0.2454.85","0.34.0":"45.0.2454.85","0.34.1":"45.0.2454.85","0.34.2":"45.0.2454.85","0.34.3":"45.0.2454.85","0.34.4":"45.0.2454.85","0.35.1":"45.0.2454.85","0.35.2":"45.0.2454.85","0.35.3":"45.0.2454.85","0.35.4":"45.0.2454.85","0.35.5":"45.0.2454.85","0.36.0":"47.0.2526.73","0.36.2":"47.0.2526.73","0.36.3":"47.0.2526.73","0.36.4":"47.0.2526.73","0.36.5":"47.0.2526.110","0.36.6":"47.0.2526.110","0.36.7":"47.0.2526.110","0.36.8":"47.0.2526.110","0.36.9":"47.0.2526.110","0.36.10":"47.0.2526.110","0.36.11":"47.0.2526.110","0.36.12":"47.0.2526.110","0.37.0":"49.0.2623.75","0.37.1":"49.0.2623.75","0.37.3":"49.0.2623.75","0.37.4":"49.0.2623.75","0.37.5":"49.0.2623.75","0.37.6":"49.0.2623.75","0.37.7":"49.0.2623.75","0.37.8":"49.0.2623.75","1.0.0":"49.0.2623.75","1.0.1":"49.0.2623.75","1.0.2":"49.0.2623.75","1.1.0":"50.0.2661.102","1.1.1":"50.0.2661.102","1.1.2":"50.0.2661.102","1.1.3":"50.0.2661.102","1.2.0":"51.0.2704.63","1.2.1":"51.0.2704.63","1.2.2":"51.0.2704.84","1.2.3":"51.0.2704.84","1.2.4":"51.0.2704.103","1.2.5":"51.0.2704.103","1.2.6":"51.0.2704.106","1.2.7":"51.0.2704.106","1.2.8":"51.0.2704.106","1.3.0":"52.0.2743.82","1.3.1":"52.0.2743.82","1.3.2":"52.0.2743.82","1.3.3":"52.0.2743.82","1.3.4":"52.0.2743.82","1.3.5":"52.0.2743.82","1.3.6":"52.0.2743.82","1.3.7":"52.0.2743.82","1.3.9":"52.0.2743.82","1.3.10":"52.0.2743.82","1.3.13":"52.0.2743.82","1.3.14":"52.0.2743.82","1.3.15":"52.0.2743.82","1.4.0":"53.0.2785.113","1.4.1":"53.0.2785.113","1.4.2":"53.0.2785.113","1.4.3":"53.0.2785.113","1.4.4":"53.0.2785.113","1.4.5":"53.0.2785.113","1.4.6":"53.0.2785.143","1.4.7":"53.0.2785.143","1.4.8":"53.0.2785.143","1.4.10":"53.0.2785.143","1.4.11":"53.0.2785.143","1.4.12":"54.0.2840.51","1.4.13":"53.0.2785.143","1.4.14":"53.0.2785.143","1.4.15":"53.0.2785.143","1.4.16":"53.0.2785.143","1.5.0":"54.0.2840.101","1.5.1":"54.0.2840.101","1.6.0":"56.0.2924.87","1.6.1":"56.0.2924.87","1.6.2":"56.0.2924.87","1.6.3":"56.0.2924.87","1.6.4":"56.0.2924.87","1.6.5":"56.0.2924.87","1.6.6":"56.0.2924.87","1.6.7":"56.0.2924.87","1.6.8":"56.0.2924.87","1.6.9":"56.0.2924.87","1.6.10":"56.0.2924.87","1.6.11":"56.0.2924.87","1.6.12":"56.0.2924.87","1.6.13":"56.0.2924.87","1.6.14":"56.0.2924.87","1.6.15":"56.0.2924.87","1.6.16":"56.0.2924.87","1.6.17":"56.0.2924.87","1.6.18":"56.0.2924.87","1.7.0":"58.0.3029.110","1.7.1":"58.0.3029.110","1.7.2":"58.0.3029.110","1.7.3":"58.0.3029.110","1.7.4":"58.0.3029.110","1.7.5":"58.0.3029.110","1.7.6":"58.0.3029.110","1.7.7":"58.0.3029.110","1.7.8":"58.0.3029.110","1.7.9":"58.0.3029.110","1.7.10":"58.0.3029.110","1.7.11":"58.0.3029.110","1.7.12":"58.0.3029.110","1.7.13":"58.0.3029.110","1.7.14":"58.0.3029.110","1.7.15":"58.0.3029.110","1.7.16":"58.0.3029.110","1.8.0":"59.0.3071.115","1.8.1":"59.0.3071.115","1.8.2-beta.1":"59.0.3071.115","1.8.2-beta.2":"59.0.3071.115","1.8.2-beta.3":"59.0.3071.115","1.8.2-beta.4":"59.0.3071.115","1.8.2-beta.5":"59.0.3071.115","1.8.2":"59.0.3071.115","1.8.3":"59.0.3071.115","1.8.4":"59.0.3071.115","1.8.5":"59.0.3071.115","1.8.6":"59.0.3071.115","1.8.7":"59.0.3071.115","1.8.8":"59.0.3071.115","2.0.0-beta.1":"61.0.3163.100","2.0.0-beta.2":"61.0.3163.100","2.0.0-beta.3":"61.0.3163.100","2.0.0-beta.4":"61.0.3163.100","2.0.0-beta.5":"61.0.3163.100","2.0.0-beta.6":"61.0.3163.100","2.0.0-beta.7":"61.0.3163.100","2.0.0-beta.8":"61.0.3163.100","2.0.0":"61.0.3163.100","2.0.1":"61.0.3163.100","2.0.2":"61.0.3163.100","2.0.3":"61.0.3163.100","2.0.4":"61.0.3163.100","2.0.5":"61.0.3163.100","2.0.6":"61.0.3163.100","2.0.7":"61.0.3163.100","2.0.8-nightly.20180819":"61.0.3163.100","2.0.8-nightly.20180820":"61.0.3163.100","2.0.8":"61.0.3163.100","2.0.9":"61.0.3163.100","2.0.10":"61.0.3163.100","2.0.11":"61.0.3163.100","2.0.12":"61.0.3163.100","2.0.13":"61.0.3163.100","2.0.14":"61.0.3163.100","2.0.15":"61.0.3163.100","2.0.16":"61.0.3163.100","2.0.17":"61.0.3163.100","2.0.18":"61.0.3163.100","2.1.0-unsupported.20180809":"61.0.3163.100","3.0.0-beta.1":"66.0.3359.181","3.0.0-beta.2":"66.0.3359.181","3.0.0-beta.3":"66.0.3359.181","3.0.0-beta.4":"66.0.3359.181","3.0.0-beta.5":"66.0.3359.181","3.0.0-beta.6":"66.0.3359.181","3.0.0-beta.7":"66.0.3359.181","3.0.0-beta.8":"66.0.3359.181","3.0.0-beta.9":"66.0.3359.181","3.0.0-beta.10":"66.0.3359.181","3.0.0-beta.11":"66.0.3359.181","3.0.0-beta.12":"66.0.3359.181","3.0.0-beta.13":"66.0.3359.181","3.0.0-nightly.20180818":"66.0.3359.181","3.0.0-nightly.20180821":"66.0.3359.181","3.0.0-nightly.20180823":"66.0.3359.181","3.0.0-nightly.20180904":"66.0.3359.181","3.0.0":"66.0.3359.181","3.0.1":"66.0.3359.181","3.0.2":"66.0.3359.181","3.0.3":"66.0.3359.181","3.0.4":"66.0.3359.181","3.0.5":"66.0.3359.181","3.0.6":"66.0.3359.181","3.0.7":"66.0.3359.181","3.0.8":"66.0.3359.181","3.0.9":"66.0.3359.181","3.0.10":"66.0.3359.181","3.0.11":"66.0.3359.181","3.0.12":"66.0.3359.181","3.0.13":"66.0.3359.181","3.0.14":"66.0.3359.181","3.0.15":"66.0.3359.181","3.0.16":"66.0.3359.181","3.1.0-beta.1":"66.0.3359.181","3.1.0-beta.2":"66.0.3359.181","3.1.0-beta.3":"66.0.3359.181","3.1.0-beta.4":"66.0.3359.181","3.1.0-beta.5":"66.0.3359.181","3.1.0":"66.0.3359.181","3.1.1":"66.0.3359.181","3.1.2":"66.0.3359.181","3.1.3":"66.0.3359.181","3.1.4":"66.0.3359.181","3.1.5":"66.0.3359.181","3.1.6":"66.0.3359.181","3.1.7":"66.0.3359.181","3.1.8":"66.0.3359.181","3.1.9":"66.0.3359.181","3.1.10":"66.0.3359.181","3.1.11":"66.0.3359.181","3.1.12":"66.0.3359.181","3.1.13":"66.0.3359.181","4.0.0-beta.1":"69.0.3497.106","4.0.0-beta.2":"69.0.3497.106","4.0.0-beta.3":"69.0.3497.106","4.0.0-beta.4":"69.0.3497.106","4.0.0-beta.5":"69.0.3497.106","4.0.0-beta.6":"69.0.3497.106","4.0.0-beta.7":"69.0.3497.106","4.0.0-beta.8":"69.0.3497.106","4.0.0-beta.9":"69.0.3497.106","4.0.0-beta.10":"69.0.3497.106","4.0.0-beta.11":"69.0.3497.106","4.0.0-nightly.20180817":"66.0.3359.181","4.0.0-nightly.20180819":"66.0.3359.181","4.0.0-nightly.20180821":"66.0.3359.181","4.0.0-nightly.20180929":"67.0.3396.99","4.0.0-nightly.20181006":"68.0.3440.128","4.0.0-nightly.20181010":"69.0.3497.106","4.0.0":"69.0.3497.106","4.0.1":"69.0.3497.106","4.0.2":"69.0.3497.106","4.0.3":"69.0.3497.106","4.0.4":"69.0.3497.106","4.0.5":"69.0.3497.106","4.0.6":"69.0.3497.106","4.0.7":"69.0.3497.128","4.0.8":"69.0.3497.128","4.1.0":"69.0.3497.128","4.1.1":"69.0.3497.128","4.1.2":"69.0.3497.128","4.1.3":"69.0.3497.128","4.1.4":"69.0.3497.128","4.1.5":"69.0.3497.128","4.2.0":"69.0.3497.128","4.2.1":"69.0.3497.128","4.2.2":"69.0.3497.128","4.2.3":"69.0.3497.128","4.2.4":"69.0.3497.128","4.2.5":"69.0.3497.128","4.2.6":"69.0.3497.128","4.2.7":"69.0.3497.128","4.2.8":"69.0.3497.128","4.2.9":"69.0.3497.128","4.2.10":"69.0.3497.128","4.2.11":"69.0.3497.128","4.2.12":"69.0.3497.128","5.0.0-beta.1":"72.0.3626.52","5.0.0-beta.2":"72.0.3626.52","5.0.0-beta.3":"73.0.3683.27","5.0.0-beta.4":"73.0.3683.54","5.0.0-beta.5":"73.0.3683.61","5.0.0-beta.6":"73.0.3683.84","5.0.0-beta.7":"73.0.3683.94","5.0.0-beta.8":"73.0.3683.104","5.0.0-beta.9":"73.0.3683.117","5.0.0-nightly.20190107":"70.0.3538.110","5.0.0-nightly.20190121":"71.0.3578.98","5.0.0-nightly.20190122":"71.0.3578.98","5.0.0":"73.0.3683.119","5.0.1":"73.0.3683.121","5.0.2":"73.0.3683.121","5.0.3":"73.0.3683.121","5.0.4":"73.0.3683.121","5.0.5":"73.0.3683.121","5.0.6":"73.0.3683.121","5.0.7":"73.0.3683.121","5.0.8":"73.0.3683.121","5.0.9":"73.0.3683.121","5.0.10":"73.0.3683.121","5.0.11":"73.0.3683.121","5.0.12":"73.0.3683.121","5.0.13":"73.0.3683.121","6.0.0-beta.1":"76.0.3774.1","6.0.0-beta.2":"76.0.3783.1","6.0.0-beta.3":"76.0.3783.1","6.0.0-beta.4":"76.0.3783.1","6.0.0-beta.5":"76.0.3805.4","6.0.0-beta.6":"76.0.3809.3","6.0.0-beta.7":"76.0.3809.22","6.0.0-beta.8":"76.0.3809.26","6.0.0-beta.9":"76.0.3809.26","6.0.0-beta.10":"76.0.3809.37","6.0.0-beta.11":"76.0.3809.42","6.0.0-beta.12":"76.0.3809.54","6.0.0-beta.13":"76.0.3809.60","6.0.0-beta.14":"76.0.3809.68","6.0.0-beta.15":"76.0.3809.74","6.0.0-nightly.20190212":"72.0.3626.107","6.0.0-nightly.20190213":"72.0.3626.110","6.0.0-nightly.20190311":"74.0.3724.8","6.0.0":"76.0.3809.88","6.0.1":"76.0.3809.102","6.0.2":"76.0.3809.110","6.0.3":"76.0.3809.126","6.0.4":"76.0.3809.131","6.0.5":"76.0.3809.136","6.0.6":"76.0.3809.138","6.0.7":"76.0.3809.139","6.0.8":"76.0.3809.146","6.0.9":"76.0.3809.146","6.0.10":"76.0.3809.146","6.0.11":"76.0.3809.146","6.0.12":"76.0.3809.146","6.1.0":"76.0.3809.146","6.1.1":"76.0.3809.146","6.1.2":"76.0.3809.146","6.1.3":"76.0.3809.146","6.1.4":"76.0.3809.146","6.1.5":"76.0.3809.146","6.1.6":"76.0.3809.146","6.1.7":"76.0.3809.146","6.1.8":"76.0.3809.146","6.1.9":"76.0.3809.146","6.1.10":"76.0.3809.146","6.1.11":"76.0.3809.146","6.1.12":"76.0.3809.146","7.0.0-beta.1":"78.0.3866.0","7.0.0-beta.2":"78.0.3866.0","7.0.0-beta.3":"78.0.3866.0","7.0.0-beta.4":"78.0.3896.6","7.0.0-beta.5":"78.0.3905.1","7.0.0-beta.6":"78.0.3905.1","7.0.0-beta.7":"78.0.3905.1","7.0.0-nightly.20190521":"76.0.3784.0","7.0.0-nightly.20190529":"76.0.3806.0","7.0.0-nightly.20190530":"76.0.3806.0","7.0.0-nightly.20190531":"76.0.3806.0","7.0.0-nightly.20190602":"76.0.3806.0","7.0.0-nightly.20190603":"76.0.3806.0","7.0.0-nightly.20190604":"77.0.3814.0","7.0.0-nightly.20190605":"77.0.3815.0","7.0.0-nightly.20190606":"77.0.3815.0","7.0.0-nightly.20190607":"77.0.3815.0","7.0.0-nightly.20190608":"77.0.3815.0","7.0.0-nightly.20190609":"77.0.3815.0","7.0.0-nightly.20190611":"77.0.3815.0","7.0.0-nightly.20190612":"77.0.3815.0","7.0.0-nightly.20190613":"77.0.3815.0","7.0.0-nightly.20190615":"77.0.3815.0","7.0.0-nightly.20190616":"77.0.3815.0","7.0.0-nightly.20190618":"77.0.3815.0","7.0.0-nightly.20190619":"77.0.3815.0","7.0.0-nightly.20190622":"77.0.3815.0","7.0.0-nightly.20190623":"77.0.3815.0","7.0.0-nightly.20190624":"77.0.3815.0","7.0.0-nightly.20190627":"77.0.3815.0","7.0.0-nightly.20190629":"77.0.3815.0","7.0.0-nightly.20190630":"77.0.3815.0","7.0.0-nightly.20190701":"77.0.3815.0","7.0.0-nightly.20190702":"77.0.3815.0","7.0.0-nightly.20190704":"77.0.3843.0","7.0.0-nightly.20190705":"77.0.3843.0","7.0.0-nightly.20190719":"77.0.3848.0","7.0.0-nightly.20190720":"77.0.3848.0","7.0.0-nightly.20190721":"77.0.3848.0","7.0.0-nightly.20190726":"77.0.3864.0","7.0.0-nightly.20190727":"78.0.3866.0","7.0.0-nightly.20190728":"78.0.3866.0","7.0.0-nightly.20190729":"78.0.3866.0","7.0.0-nightly.20190730":"78.0.3866.0","7.0.0-nightly.20190731":"78.0.3866.0","7.0.0":"78.0.3905.1","7.0.1":"78.0.3904.92","7.1.0":"78.0.3904.94","7.1.1":"78.0.3904.99","7.1.2":"78.0.3904.113","7.1.3":"78.0.3904.126","7.1.4":"78.0.3904.130","7.1.5":"78.0.3904.130","7.1.6":"78.0.3904.130","7.1.7":"78.0.3904.130","7.1.8":"78.0.3904.130","7.1.9":"78.0.3904.130","7.1.10":"78.0.3904.130","7.1.11":"78.0.3904.130","7.1.12":"78.0.3904.130","7.1.13":"78.0.3904.130","7.1.14":"78.0.3904.130","7.2.0":"78.0.3904.130","7.2.1":"78.0.3904.130","7.2.2":"78.0.3904.130","7.2.3":"78.0.3904.130","7.2.4":"78.0.3904.130","7.3.0":"78.0.3904.130","7.3.1":"78.0.3904.130","7.3.2":"78.0.3904.130","7.3.3":"78.0.3904.130","8.0.0-beta.1":"79.0.3931.0","8.0.0-beta.2":"79.0.3931.0","8.0.0-beta.3":"80.0.3955.0","8.0.0-beta.4":"80.0.3955.0","8.0.0-beta.5":"80.0.3987.14","8.0.0-beta.6":"80.0.3987.51","8.0.0-beta.7":"80.0.3987.59","8.0.0-beta.8":"80.0.3987.75","8.0.0-beta.9":"80.0.3987.75","8.0.0-nightly.20190801":"78.0.3866.0","8.0.0-nightly.20190802":"78.0.3866.0","8.0.0-nightly.20190803":"78.0.3871.0","8.0.0-nightly.20190806":"78.0.3871.0","8.0.0-nightly.20190807":"78.0.3871.0","8.0.0-nightly.20190808":"78.0.3871.0","8.0.0-nightly.20190809":"78.0.3871.0","8.0.0-nightly.20190810":"78.0.3871.0","8.0.0-nightly.20190811":"78.0.3871.0","8.0.0-nightly.20190812":"78.0.3871.0","8.0.0-nightly.20190813":"78.0.3871.0","8.0.0-nightly.20190814":"78.0.3871.0","8.0.0-nightly.20190815":"78.0.3871.0","8.0.0-nightly.20190816":"78.0.3881.0","8.0.0-nightly.20190817":"78.0.3881.0","8.0.0-nightly.20190818":"78.0.3881.0","8.0.0-nightly.20190819":"78.0.3881.0","8.0.0-nightly.20190820":"78.0.3881.0","8.0.0-nightly.20190824":"78.0.3892.0","8.0.0-nightly.20190825":"78.0.3892.0","8.0.0-nightly.20190827":"78.0.3892.0","8.0.0-nightly.20190828":"78.0.3892.0","8.0.0-nightly.20190830":"78.0.3892.0","8.0.0-nightly.20190901":"78.0.3892.0","8.0.0-nightly.20190902":"78.0.3892.0","8.0.0-nightly.20190907":"78.0.3892.0","8.0.0-nightly.20190909":"78.0.3892.0","8.0.0-nightly.20190910":"78.0.3892.0","8.0.0-nightly.20190911":"78.0.3892.0","8.0.0-nightly.20190913":"78.0.3892.0","8.0.0-nightly.20190914":"78.0.3892.0","8.0.0-nightly.20190915":"78.0.3892.0","8.0.0-nightly.20190917":"78.0.3892.0","8.0.0-nightly.20190919":"79.0.3915.0","8.0.0-nightly.20190920":"79.0.3915.0","8.0.0-nightly.20190923":"79.0.3919.0","8.0.0-nightly.20190924":"79.0.3919.0","8.0.0-nightly.20190926":"79.0.3919.0","8.0.0-nightly.20190929":"79.0.3919.0","8.0.0-nightly.20190930":"79.0.3919.0","8.0.0-nightly.20191001":"79.0.3919.0","8.0.0-nightly.20191004":"79.0.3919.0","8.0.0-nightly.20191005":"79.0.3919.0","8.0.0-nightly.20191006":"79.0.3919.0","8.0.0-nightly.20191009":"79.0.3919.0","8.0.0-nightly.20191011":"79.0.3919.0","8.0.0-nightly.20191012":"79.0.3919.0","8.0.0-nightly.20191017":"79.0.3919.0","8.0.0-nightly.20191019":"79.0.3931.0","8.0.0-nightly.20191020":"79.0.3931.0","8.0.0-nightly.20191021":"79.0.3931.0","8.0.0-nightly.20191023":"79.0.3931.0","8.0.0-nightly.20191101":"80.0.3952.0","8.0.0-nightly.20191105":"80.0.3952.0","8.0.0":"80.0.3987.86","8.0.1":"80.0.3987.86","8.0.2":"80.0.3987.86","8.0.3":"80.0.3987.134","8.1.0":"80.0.3987.137","8.1.1":"80.0.3987.141","8.2.0":"80.0.3987.158","8.2.1":"80.0.3987.163","8.2.2":"80.0.3987.163","8.2.3":"80.0.3987.163","8.2.4":"80.0.3987.165","8.2.5":"80.0.3987.165","8.3.0":"80.0.3987.165","8.3.1":"80.0.3987.165","8.3.2":"80.0.3987.165","8.3.3":"80.0.3987.165","8.3.4":"80.0.3987.165","8.4.0":"80.0.3987.165","8.4.1":"80.0.3987.165","8.5.0":"80.0.3987.165","8.5.1":"80.0.3987.165","8.5.2":"80.0.3987.165","8.5.3":"80.0.3987.163","8.5.4":"80.0.3987.163","8.5.5":"80.0.3987.163","9.0.0-beta.1":"82.0.4048.0","9.0.0-beta.2":"82.0.4048.0","9.0.0-beta.3":"82.0.4048.0","9.0.0-beta.4":"82.0.4048.0","9.0.0-beta.5":"82.0.4048.0","9.0.0-beta.6":"82.0.4058.2","9.0.0-beta.7":"82.0.4058.2","9.0.0-beta.9":"82.0.4058.2","9.0.0-beta.10":"82.0.4085.10","9.0.0-beta.12":"82.0.4085.14","9.0.0-beta.13":"82.0.4085.14","9.0.0-beta.14":"82.0.4085.27","9.0.0-beta.15":"83.0.4102.3","9.0.0-beta.16":"83.0.4102.3","9.0.0-beta.17":"83.0.4103.14","9.0.0-beta.18":"83.0.4103.16","9.0.0-beta.19":"83.0.4103.24","9.0.0-beta.20":"83.0.4103.26","9.0.0-beta.21":"83.0.4103.26","9.0.0-beta.22":"83.0.4103.34","9.0.0-beta.23":"83.0.4103.44","9.0.0-beta.24":"83.0.4103.45","9.0.0-nightly.20191121":"80.0.3954.0","9.0.0-nightly.20191122":"80.0.3954.0","9.0.0-nightly.20191123":"80.0.3954.0","9.0.0-nightly.20191124":"80.0.3954.0","9.0.0-nightly.20191129":"80.0.3954.0","9.0.0-nightly.20191130":"80.0.3954.0","9.0.0-nightly.20191201":"80.0.3954.0","9.0.0-nightly.20191202":"80.0.3954.0","9.0.0-nightly.20191203":"80.0.3954.0","9.0.0-nightly.20191204":"80.0.3954.0","9.0.0-nightly.20191210":"80.0.3954.0","9.0.0-nightly.20191220":"81.0.3994.0","9.0.0-nightly.20191221":"81.0.3994.0","9.0.0-nightly.20191222":"81.0.3994.0","9.0.0-nightly.20191223":"81.0.3994.0","9.0.0-nightly.20191224":"81.0.3994.0","9.0.0-nightly.20191225":"81.0.3994.0","9.0.0-nightly.20191226":"81.0.3994.0","9.0.0-nightly.20191228":"81.0.3994.0","9.0.0-nightly.20191229":"81.0.3994.0","9.0.0-nightly.20191230":"81.0.3994.0","9.0.0-nightly.20191231":"81.0.3994.0","9.0.0-nightly.20200101":"81.0.3994.0","9.0.0-nightly.20200103":"81.0.3994.0","9.0.0-nightly.20200104":"81.0.3994.0","9.0.0-nightly.20200105":"81.0.3994.0","9.0.0-nightly.20200106":"81.0.3994.0","9.0.0-nightly.20200108":"81.0.3994.0","9.0.0-nightly.20200109":"81.0.3994.0","9.0.0-nightly.20200110":"81.0.3994.0","9.0.0-nightly.20200111":"81.0.3994.0","9.0.0-nightly.20200113":"81.0.3994.0","9.0.0-nightly.20200115":"81.0.3994.0","9.0.0-nightly.20200116":"81.0.3994.0","9.0.0-nightly.20200117":"81.0.3994.0","9.0.0-nightly.20200119":"81.0.4030.0","9.0.0-nightly.20200121":"81.0.4030.0","9.0.0":"83.0.4103.64","9.0.1":"83.0.4103.94","9.0.2":"83.0.4103.94","9.0.3":"83.0.4103.100","9.0.4":"83.0.4103.104","9.0.5":"83.0.4103.119","9.1.0":"83.0.4103.122","9.1.1":"83.0.4103.122","9.1.2":"83.0.4103.122","9.2.0":"83.0.4103.122","9.2.1":"83.0.4103.122","9.3.0":"83.0.4103.122","9.3.1":"83.0.4103.122","9.3.2":"83.0.4103.122","9.3.3":"83.0.4103.122","9.3.4":"83.0.4103.122","9.3.5":"83.0.4103.122","9.4.0":"83.0.4103.122","9.4.1":"83.0.4103.122","9.4.2":"83.0.4103.122","9.4.3":"83.0.4103.122","9.4.4":"83.0.4103.122","10.0.0-beta.1":"84.0.4129.0","10.0.0-beta.2":"84.0.4129.0","10.0.0-beta.3":"85.0.4161.2","10.0.0-beta.4":"85.0.4161.2","10.0.0-beta.8":"85.0.4181.1","10.0.0-beta.9":"85.0.4181.1","10.0.0-beta.10":"85.0.4183.19","10.0.0-beta.11":"85.0.4183.20","10.0.0-beta.12":"85.0.4183.26","10.0.0-beta.13":"85.0.4183.39","10.0.0-beta.14":"85.0.4183.39","10.0.0-beta.15":"85.0.4183.39","10.0.0-beta.17":"85.0.4183.39","10.0.0-beta.19":"85.0.4183.39","10.0.0-beta.20":"85.0.4183.39","10.0.0-beta.21":"85.0.4183.39","10.0.0-beta.23":"85.0.4183.70","10.0.0-beta.24":"85.0.4183.78","10.0.0-beta.25":"85.0.4183.80","10.0.0-nightly.20200209":"82.0.4050.0","10.0.0-nightly.20200210":"82.0.4050.0","10.0.0-nightly.20200211":"82.0.4050.0","10.0.0-nightly.20200216":"82.0.4050.0","10.0.0-nightly.20200217":"82.0.4050.0","10.0.0-nightly.20200218":"82.0.4050.0","10.0.0-nightly.20200221":"82.0.4050.0","10.0.0-nightly.20200222":"82.0.4050.0","10.0.0-nightly.20200223":"82.0.4050.0","10.0.0-nightly.20200226":"82.0.4050.0","10.0.0-nightly.20200303":"82.0.4050.0","10.0.0-nightly.20200304":"82.0.4076.0","10.0.0-nightly.20200305":"82.0.4076.0","10.0.0-nightly.20200306":"82.0.4076.0","10.0.0-nightly.20200309":"82.0.4076.0","10.0.0-nightly.20200310":"82.0.4076.0","10.0.0-nightly.20200311":"82.0.4083.0","10.0.0-nightly.20200316":"83.0.4086.0","10.0.0-nightly.20200317":"83.0.4087.0","10.0.0-nightly.20200318":"83.0.4087.0","10.0.0-nightly.20200320":"83.0.4087.0","10.0.0-nightly.20200323":"83.0.4087.0","10.0.0-nightly.20200324":"83.0.4087.0","10.0.0-nightly.20200325":"83.0.4087.0","10.0.0-nightly.20200326":"83.0.4087.0","10.0.0-nightly.20200327":"83.0.4087.0","10.0.0-nightly.20200330":"83.0.4087.0","10.0.0-nightly.20200331":"83.0.4087.0","10.0.0-nightly.20200401":"83.0.4087.0","10.0.0-nightly.20200402":"83.0.4087.0","10.0.0-nightly.20200403":"83.0.4087.0","10.0.0-nightly.20200406":"83.0.4087.0","10.0.0-nightly.20200408":"83.0.4095.0","10.0.0-nightly.20200410":"83.0.4095.0","10.0.0-nightly.20200413":"83.0.4095.0","10.0.0-nightly.20200414":"84.0.4114.0","10.0.0-nightly.20200415":"84.0.4115.0","10.0.0-nightly.20200416":"84.0.4115.0","10.0.0-nightly.20200417":"84.0.4115.0","10.0.0-nightly.20200422":"84.0.4121.0","10.0.0-nightly.20200423":"84.0.4121.0","10.0.0-nightly.20200427":"84.0.4125.0","10.0.0-nightly.20200428":"84.0.4125.0","10.0.0-nightly.20200429":"84.0.4125.0","10.0.0-nightly.20200430":"84.0.4125.0","10.0.0-nightly.20200501":"84.0.4129.0","10.0.0-nightly.20200504":"84.0.4129.0","10.0.0-nightly.20200505":"84.0.4129.0","10.0.0-nightly.20200506":"84.0.4129.0","10.0.0-nightly.20200507":"84.0.4129.0","10.0.0-nightly.20200508":"84.0.4129.0","10.0.0-nightly.20200511":"84.0.4129.0","10.0.0-nightly.20200512":"84.0.4129.0","10.0.0-nightly.20200513":"84.0.4129.0","10.0.0-nightly.20200514":"84.0.4129.0","10.0.0-nightly.20200515":"84.0.4129.0","10.0.0-nightly.20200518":"84.0.4129.0","10.0.0-nightly.20200519":"84.0.4129.0","10.0.0-nightly.20200520":"84.0.4129.0","10.0.0-nightly.20200521":"84.0.4129.0","10.0.0":"85.0.4183.84","10.0.1":"85.0.4183.86","10.1.0":"85.0.4183.87","10.1.1":"85.0.4183.93","10.1.2":"85.0.4183.98","10.1.3":"85.0.4183.121","10.1.4":"85.0.4183.121","10.1.5":"85.0.4183.121","10.1.6":"85.0.4183.121","10.1.7":"85.0.4183.121","10.2.0":"85.0.4183.121","10.3.0":"85.0.4183.121","10.3.1":"85.0.4183.121","10.3.2":"85.0.4183.121","10.4.0":"85.0.4183.121","10.4.1":"85.0.4183.121","10.4.2":"85.0.4183.121","10.4.3":"85.0.4183.121","10.4.4":"85.0.4183.121","10.4.5":"85.0.4183.121","10.4.6":"85.0.4183.121","10.4.7":"85.0.4183.121","11.0.0-beta.1":"86.0.4234.0","11.0.0-beta.3":"86.0.4234.0","11.0.0-beta.4":"86.0.4234.0","11.0.0-beta.5":"86.0.4234.0","11.0.0-beta.6":"86.0.4234.0","11.0.0-beta.7":"86.0.4234.0","11.0.0-beta.8":"87.0.4251.1","11.0.0-beta.9":"87.0.4251.1","11.0.0-beta.11":"87.0.4251.1","11.0.0-beta.12":"87.0.4280.11","11.0.0-beta.13":"87.0.4280.11","11.0.0-beta.16":"87.0.4280.27","11.0.0-beta.17":"87.0.4280.27","11.0.0-beta.18":"87.0.4280.27","11.0.0-beta.19":"87.0.4280.27","11.0.0-beta.20":"87.0.4280.40","11.0.0-beta.22":"87.0.4280.47","11.0.0-beta.23":"87.0.4280.47","11.0.0-nightly.20200525":"84.0.4129.0","11.0.0-nightly.20200526":"84.0.4129.0","11.0.0-nightly.20200529":"85.0.4156.0","11.0.0-nightly.20200602":"85.0.4162.0","11.0.0-nightly.20200603":"85.0.4162.0","11.0.0-nightly.20200604":"85.0.4162.0","11.0.0-nightly.20200609":"85.0.4162.0","11.0.0-nightly.20200610":"85.0.4162.0","11.0.0-nightly.20200611":"85.0.4162.0","11.0.0-nightly.20200615":"85.0.4162.0","11.0.0-nightly.20200616":"85.0.4162.0","11.0.0-nightly.20200617":"85.0.4162.0","11.0.0-nightly.20200618":"85.0.4162.0","11.0.0-nightly.20200619":"85.0.4162.0","11.0.0-nightly.20200701":"85.0.4179.0","11.0.0-nightly.20200702":"85.0.4179.0","11.0.0-nightly.20200703":"85.0.4179.0","11.0.0-nightly.20200706":"85.0.4179.0","11.0.0-nightly.20200707":"85.0.4179.0","11.0.0-nightly.20200708":"85.0.4179.0","11.0.0-nightly.20200709":"85.0.4179.0","11.0.0-nightly.20200716":"86.0.4203.0","11.0.0-nightly.20200717":"86.0.4203.0","11.0.0-nightly.20200720":"86.0.4203.0","11.0.0-nightly.20200721":"86.0.4203.0","11.0.0-nightly.20200723":"86.0.4209.0","11.0.0-nightly.20200724":"86.0.4209.0","11.0.0-nightly.20200729":"86.0.4209.0","11.0.0-nightly.20200730":"86.0.4209.0","11.0.0-nightly.20200731":"86.0.4209.0","11.0.0-nightly.20200803":"86.0.4209.0","11.0.0-nightly.20200804":"86.0.4209.0","11.0.0-nightly.20200805":"86.0.4209.0","11.0.0-nightly.20200811":"86.0.4209.0","11.0.0-nightly.20200812":"86.0.4209.0","11.0.0-nightly.20200822":"86.0.4234.0","11.0.0-nightly.20200824":"86.0.4234.0","11.0.0-nightly.20200825":"86.0.4234.0","11.0.0-nightly.20200826":"86.0.4234.0","11.0.0":"87.0.4280.60","11.0.1":"87.0.4280.60","11.0.2":"87.0.4280.67","11.0.3":"87.0.4280.67","11.0.4":"87.0.4280.67","11.0.5":"87.0.4280.88","11.1.0":"87.0.4280.88","11.1.1":"87.0.4280.88","11.2.0":"87.0.4280.141","11.2.1":"87.0.4280.141","11.2.2":"87.0.4280.141","11.2.3":"87.0.4280.141","11.3.0":"87.0.4280.141","11.4.0":"87.0.4280.141","11.4.1":"87.0.4280.141","11.4.2":"87.0.4280.141","11.4.3":"87.0.4280.141","11.4.4":"87.0.4280.141","11.4.5":"87.0.4280.141","11.4.6":"87.0.4280.141","11.4.7":"87.0.4280.141","11.4.8":"87.0.4280.141","11.4.9":"87.0.4280.141","11.4.10":"87.0.4280.141","11.4.11":"87.0.4280.141","11.4.12":"87.0.4280.141","11.5.0":"87.0.4280.141","12.0.0-beta.1":"89.0.4328.0","12.0.0-beta.3":"89.0.4328.0","12.0.0-beta.4":"89.0.4328.0","12.0.0-beta.5":"89.0.4328.0","12.0.0-beta.6":"89.0.4328.0","12.0.0-beta.7":"89.0.4328.0","12.0.0-beta.8":"89.0.4328.0","12.0.0-beta.9":"89.0.4328.0","12.0.0-beta.10":"89.0.4328.0","12.0.0-beta.11":"89.0.4328.0","12.0.0-beta.12":"89.0.4328.0","12.0.0-beta.14":"89.0.4328.0","12.0.0-beta.16":"89.0.4348.1","12.0.0-beta.18":"89.0.4348.1","12.0.0-beta.19":"89.0.4348.1","12.0.0-beta.20":"89.0.4348.1","12.0.0-beta.21":"89.0.4388.2","12.0.0-beta.22":"89.0.4388.2","12.0.0-beta.23":"89.0.4388.2","12.0.0-beta.24":"89.0.4388.2","12.0.0-beta.25":"89.0.4388.2","12.0.0-beta.26":"89.0.4388.2","12.0.0-beta.27":"89.0.4389.23","12.0.0-beta.28":"89.0.4389.23","12.0.0-beta.29":"89.0.4389.23","12.0.0-beta.30":"89.0.4389.58","12.0.0-beta.31":"89.0.4389.58","12.0.0-nightly.20200827":"86.0.4234.0","12.0.0-nightly.20200831":"86.0.4234.0","12.0.0-nightly.20200902":"86.0.4234.0","12.0.0-nightly.20200903":"86.0.4234.0","12.0.0-nightly.20200907":"86.0.4234.0","12.0.0-nightly.20200910":"86.0.4234.0","12.0.0-nightly.20200911":"86.0.4234.0","12.0.0-nightly.20200914":"86.0.4234.0","12.0.0-nightly.20201013":"87.0.4268.0","12.0.0-nightly.20201014":"87.0.4268.0","12.0.0-nightly.20201015":"87.0.4268.0","12.0.0-nightly.20201023":"88.0.4292.0","12.0.0-nightly.20201026":"88.0.4292.0","12.0.0-nightly.20201030":"88.0.4306.0","12.0.0-nightly.20201102":"88.0.4306.0","12.0.0-nightly.20201103":"88.0.4306.0","12.0.0-nightly.20201104":"88.0.4306.0","12.0.0-nightly.20201105":"88.0.4306.0","12.0.0-nightly.20201106":"88.0.4306.0","12.0.0-nightly.20201111":"88.0.4306.0","12.0.0-nightly.20201112":"88.0.4306.0","12.0.0-nightly.20201116":"88.0.4324.0","12.0.0":"89.0.4389.69","12.0.1":"89.0.4389.82","12.0.2":"89.0.4389.90","12.0.3":"89.0.4389.114","12.0.4":"89.0.4389.114","12.0.5":"89.0.4389.128","12.0.6":"89.0.4389.128","12.0.7":"89.0.4389.128","12.0.8":"89.0.4389.128","12.0.9":"89.0.4389.128","12.0.10":"89.0.4389.128","12.0.11":"89.0.4389.128","12.0.12":"89.0.4389.128","12.0.13":"89.0.4389.128","12.0.14":"89.0.4389.128","12.0.15":"89.0.4389.128","12.0.16":"89.0.4389.128","12.0.17":"89.0.4389.128","12.0.18":"89.0.4389.128","12.1.0":"89.0.4389.128","12.1.1":"89.0.4389.128","12.1.2":"89.0.4389.128","12.2.0":"89.0.4389.128","12.2.1":"89.0.4389.128","12.2.2":"89.0.4389.128","12.2.3":"89.0.4389.128","13.0.0-beta.2":"90.0.4402.0","13.0.0-beta.3":"90.0.4402.0","13.0.0-beta.4":"90.0.4415.0","13.0.0-beta.5":"90.0.4415.0","13.0.0-beta.6":"90.0.4415.0","13.0.0-beta.7":"90.0.4415.0","13.0.0-beta.8":"90.0.4415.0","13.0.0-beta.9":"90.0.4415.0","13.0.0-beta.11":"90.0.4415.0","13.0.0-beta.12":"90.0.4415.0","13.0.0-beta.13":"90.0.4415.0","13.0.0-beta.14":"91.0.4448.0","13.0.0-beta.16":"91.0.4448.0","13.0.0-beta.17":"91.0.4448.0","13.0.0-beta.18":"91.0.4448.0","13.0.0-beta.20":"91.0.4448.0","13.0.0-beta.21":"91.0.4472.33","13.0.0-beta.22":"91.0.4472.33","13.0.0-beta.23":"91.0.4472.33","13.0.0-beta.24":"91.0.4472.38","13.0.0-beta.26":"91.0.4472.38","13.0.0-beta.27":"91.0.4472.38","13.0.0-beta.28":"91.0.4472.38","13.0.0-nightly.20201119":"89.0.4328.0","13.0.0-nightly.20201123":"89.0.4328.0","13.0.0-nightly.20201124":"89.0.4328.0","13.0.0-nightly.20201126":"89.0.4328.0","13.0.0-nightly.20201127":"89.0.4328.0","13.0.0-nightly.20201130":"89.0.4328.0","13.0.0-nightly.20201201":"89.0.4328.0","13.0.0-nightly.20201202":"89.0.4328.0","13.0.0-nightly.20201203":"89.0.4328.0","13.0.0-nightly.20201204":"89.0.4328.0","13.0.0-nightly.20201207":"89.0.4328.0","13.0.0-nightly.20201208":"89.0.4328.0","13.0.0-nightly.20201209":"89.0.4328.0","13.0.0-nightly.20201210":"89.0.4328.0","13.0.0-nightly.20201211":"89.0.4328.0","13.0.0-nightly.20201214":"89.0.4328.0","13.0.0-nightly.20201215":"89.0.4349.0","13.0.0-nightly.20201216":"89.0.4349.0","13.0.0-nightly.20201221":"89.0.4349.0","13.0.0-nightly.20201222":"89.0.4349.0","13.0.0-nightly.20201223":"89.0.4359.0","13.0.0-nightly.20210104":"89.0.4359.0","13.0.0-nightly.20210108":"89.0.4359.0","13.0.0-nightly.20210111":"89.0.4359.0","13.0.0-nightly.20210113":"89.0.4386.0","13.0.0-nightly.20210114":"89.0.4386.0","13.0.0-nightly.20210118":"89.0.4386.0","13.0.0-nightly.20210122":"89.0.4386.0","13.0.0-nightly.20210125":"89.0.4386.0","13.0.0-nightly.20210127":"89.0.4389.0","13.0.0-nightly.20210128":"89.0.4389.0","13.0.0-nightly.20210129":"89.0.4389.0","13.0.0-nightly.20210201":"89.0.4389.0","13.0.0-nightly.20210202":"89.0.4389.0","13.0.0-nightly.20210203":"89.0.4389.0","13.0.0-nightly.20210205":"89.0.4389.0","13.0.0-nightly.20210208":"89.0.4389.0","13.0.0-nightly.20210209":"89.0.4389.0","13.0.0-nightly.20210210":"90.0.4402.0","13.0.0-nightly.20210211":"90.0.4402.0","13.0.0-nightly.20210212":"90.0.4402.0","13.0.0-nightly.20210216":"90.0.4402.0","13.0.0-nightly.20210217":"90.0.4402.0","13.0.0-nightly.20210218":"90.0.4402.0","13.0.0-nightly.20210219":"90.0.4402.0","13.0.0-nightly.20210222":"90.0.4402.0","13.0.0-nightly.20210225":"90.0.4402.0","13.0.0-nightly.20210226":"90.0.4402.0","13.0.0-nightly.20210301":"90.0.4402.0","13.0.0-nightly.20210302":"90.0.4402.0","13.0.0-nightly.20210303":"90.0.4402.0","13.0.0":"91.0.4472.69","13.0.1":"91.0.4472.69","13.1.0":"91.0.4472.77","13.1.1":"91.0.4472.77","13.1.2":"91.0.4472.77","13.1.3":"91.0.4472.106","13.1.4":"91.0.4472.106","13.1.5":"91.0.4472.124","13.1.6":"91.0.4472.124","13.1.7":"91.0.4472.124","13.1.8":"91.0.4472.164","13.1.9":"91.0.4472.164","13.2.0":"91.0.4472.164","13.2.1":"91.0.4472.164","13.2.2":"91.0.4472.164","13.2.3":"91.0.4472.164","13.3.0":"91.0.4472.164","13.4.0":"91.0.4472.164","13.5.0":"91.0.4472.164","13.5.1":"91.0.4472.164","13.5.2":"91.0.4472.164","13.6.0":"91.0.4472.164","13.6.1":"91.0.4472.164","13.6.2":"91.0.4472.164","13.6.3":"91.0.4472.164","13.6.6":"91.0.4472.164","13.6.7":"91.0.4472.164","13.6.8":"91.0.4472.164","13.6.9":"91.0.4472.164","14.0.0-beta.1":"92.0.4511.0","14.0.0-beta.2":"92.0.4511.0","14.0.0-beta.3":"92.0.4511.0","14.0.0-beta.5":"93.0.4536.0","14.0.0-beta.6":"93.0.4536.0","14.0.0-beta.7":"93.0.4536.0","14.0.0-beta.8":"93.0.4536.0","14.0.0-beta.9":"93.0.4539.0","14.0.0-beta.10":"93.0.4539.0","14.0.0-beta.11":"93.0.4557.4","14.0.0-beta.12":"93.0.4557.4","14.0.0-beta.13":"93.0.4566.0","14.0.0-beta.14":"93.0.4566.0","14.0.0-beta.15":"93.0.4566.0","14.0.0-beta.16":"93.0.4566.0","14.0.0-beta.17":"93.0.4566.0","14.0.0-beta.18":"93.0.4577.15","14.0.0-beta.19":"93.0.4577.15","14.0.0-beta.20":"93.0.4577.15","14.0.0-beta.21":"93.0.4577.15","14.0.0-beta.22":"93.0.4577.25","14.0.0-beta.23":"93.0.4577.25","14.0.0-beta.24":"93.0.4577.51","14.0.0-beta.25":"93.0.4577.51","14.0.0-nightly.20210304":"90.0.4402.0","14.0.0-nightly.20210305":"90.0.4415.0","14.0.0-nightly.20210308":"90.0.4415.0","14.0.0-nightly.20210309":"90.0.4415.0","14.0.0-nightly.20210311":"90.0.4415.0","14.0.0-nightly.20210315":"90.0.4415.0","14.0.0-nightly.20210316":"90.0.4415.0","14.0.0-nightly.20210317":"90.0.4415.0","14.0.0-nightly.20210318":"90.0.4415.0","14.0.0-nightly.20210319":"90.0.4415.0","14.0.0-nightly.20210323":"90.0.4415.0","14.0.0-nightly.20210324":"90.0.4415.0","14.0.0-nightly.20210325":"90.0.4415.0","14.0.0-nightly.20210326":"90.0.4415.0","14.0.0-nightly.20210329":"90.0.4415.0","14.0.0-nightly.20210330":"90.0.4415.0","14.0.0-nightly.20210331":"91.0.4448.0","14.0.0-nightly.20210401":"91.0.4448.0","14.0.0-nightly.20210402":"91.0.4448.0","14.0.0-nightly.20210406":"91.0.4448.0","14.0.0-nightly.20210407":"91.0.4448.0","14.0.0-nightly.20210408":"91.0.4448.0","14.0.0-nightly.20210409":"91.0.4448.0","14.0.0-nightly.20210413":"91.0.4448.0","14.0.0-nightly.20210426":"92.0.4475.0","14.0.0-nightly.20210427":"92.0.4475.0","14.0.0-nightly.20210430":"92.0.4488.0","14.0.0-nightly.20210503":"92.0.4488.0","14.0.0-nightly.20210505":"92.0.4496.0","14.0.0-nightly.20210506":"92.0.4498.0","14.0.0-nightly.20210507":"92.0.4499.0","14.0.0-nightly.20210510":"92.0.4499.0","14.0.0-nightly.20210511":"92.0.4499.0","14.0.0-nightly.20210512":"92.0.4499.0","14.0.0-nightly.20210513":"92.0.4499.0","14.0.0-nightly.20210514":"92.0.4505.0","14.0.0-nightly.20210517":"92.0.4505.0","14.0.0-nightly.20210518":"92.0.4505.0","14.0.0-nightly.20210519":"92.0.4505.0","14.0.0-nightly.20210520":"92.0.4511.0","14.0.0-nightly.20210523":"92.0.4511.0","14.0.0-nightly.20210524":"92.0.4511.0","14.0.0":"93.0.4577.58","14.0.1":"93.0.4577.63","14.0.2":"93.0.4577.82","14.1.0":"93.0.4577.82","14.1.1":"93.0.4577.82","14.2.0":"93.0.4577.82","14.2.1":"93.0.4577.82","14.2.2":"93.0.4577.82","14.2.3":"93.0.4577.82","14.2.4":"93.0.4577.82","14.2.5":"93.0.4577.82","14.2.6":"93.0.4577.82","14.2.7":"93.0.4577.82","14.2.8":"93.0.4577.82","14.2.9":"93.0.4577.82","15.0.0-alpha.1":"93.0.4566.0","15.0.0-alpha.2":"93.0.4566.0","15.0.0-alpha.3":"94.0.4584.0","15.0.0-alpha.4":"94.0.4584.0","15.0.0-alpha.5":"94.0.4584.0","15.0.0-alpha.6":"94.0.4584.0","15.0.0-alpha.7":"94.0.4590.2","15.0.0-alpha.8":"94.0.4590.2","15.0.0-alpha.9":"94.0.4590.2","15.0.0-alpha.10":"94.0.4606.12","15.0.0-beta.1":"94.0.4606.20","15.0.0-beta.2":"94.0.4606.20","15.0.0-beta.3":"94.0.4606.31","15.0.0-beta.4":"94.0.4606.31","15.0.0-beta.5":"94.0.4606.31","15.0.0-beta.6":"94.0.4606.31","15.0.0-beta.7":"94.0.4606.31","15.0.0-nightly.20210527":"92.0.4511.0","15.0.0-nightly.20210528":"92.0.4511.0","15.0.0-nightly.20210531":"92.0.4511.0","15.0.0-nightly.20210601":"92.0.4511.0","15.0.0-nightly.20210602":"92.0.4511.0","15.0.0-nightly.20210603":"93.0.4530.0","15.0.0-nightly.20210604":"93.0.4530.0","15.0.0-nightly.20210608":"93.0.4535.0","15.0.0-nightly.20210609":"93.0.4536.0","15.0.0-nightly.20210610":"93.0.4536.0","15.0.0-nightly.20210611":"93.0.4536.0","15.0.0-nightly.20210614":"93.0.4536.0","15.0.0-nightly.20210615":"93.0.4536.0","15.0.0-nightly.20210616":"93.0.4536.0","15.0.0-nightly.20210617":"93.0.4539.0","15.0.0-nightly.20210618":"93.0.4539.0","15.0.0-nightly.20210621":"93.0.4539.0","15.0.0-nightly.20210622":"93.0.4539.0","15.0.0-nightly.20210623":"93.0.4550.0","15.0.0-nightly.20210624":"93.0.4550.0","15.0.0-nightly.20210625":"93.0.4552.0","15.0.0-nightly.20210628":"93.0.4552.0","15.0.0-nightly.20210629":"93.0.4552.0","15.0.0-nightly.20210630":"93.0.4558.0","15.0.0-nightly.20210701":"93.0.4558.0","15.0.0-nightly.20210702":"93.0.4558.0","15.0.0-nightly.20210705":"93.0.4558.0","15.0.0-nightly.20210706":"93.0.4566.0","15.0.0-nightly.20210707":"93.0.4566.0","15.0.0-nightly.20210708":"93.0.4566.0","15.0.0-nightly.20210709":"93.0.4566.0","15.0.0-nightly.20210712":"93.0.4566.0","15.0.0-nightly.20210713":"93.0.4566.0","15.0.0-nightly.20210714":"93.0.4566.0","15.0.0-nightly.20210715":"93.0.4566.0","15.0.0-nightly.20210716":"93.0.4566.0","15.0.0-nightly.20210719":"93.0.4566.0","15.0.0-nightly.20210720":"93.0.4566.0","15.0.0-nightly.20210721":"93.0.4566.0","15.0.0":"94.0.4606.51","15.1.0":"94.0.4606.61","15.1.1":"94.0.4606.61","15.1.2":"94.0.4606.71","15.2.0":"94.0.4606.81","15.3.0":"94.0.4606.81","15.3.1":"94.0.4606.81","15.3.2":"94.0.4606.81","15.3.3":"94.0.4606.81","15.3.4":"94.0.4606.81","15.3.5":"94.0.4606.81","15.3.6":"94.0.4606.81","15.3.7":"94.0.4606.81","15.4.0":"94.0.4606.81","15.4.1":"94.0.4606.81","15.4.2":"94.0.4606.81","15.5.0":"94.0.4606.81","15.5.1":"94.0.4606.81","15.5.2":"94.0.4606.81","15.5.3":"94.0.4606.81","15.5.4":"94.0.4606.81","15.5.5":"94.0.4606.81","15.5.6":"94.0.4606.81","15.5.7":"94.0.4606.81","16.0.0-alpha.1":"95.0.4629.0","16.0.0-alpha.2":"95.0.4629.0","16.0.0-alpha.3":"95.0.4629.0","16.0.0-alpha.4":"95.0.4629.0","16.0.0-alpha.5":"95.0.4629.0","16.0.0-alpha.6":"95.0.4629.0","16.0.0-alpha.7":"95.0.4629.0","16.0.0-alpha.8":"96.0.4647.0","16.0.0-alpha.9":"96.0.4647.0","16.0.0-beta.1":"96.0.4647.0","16.0.0-beta.2":"96.0.4647.0","16.0.0-beta.3":"96.0.4647.0","16.0.0-beta.4":"96.0.4664.18","16.0.0-beta.5":"96.0.4664.18","16.0.0-beta.6":"96.0.4664.27","16.0.0-beta.7":"96.0.4664.27","16.0.0-beta.8":"96.0.4664.35","16.0.0-beta.9":"96.0.4664.35","16.0.0-nightly.20210722":"93.0.4566.0","16.0.0-nightly.20210723":"93.0.4566.0","16.0.0-nightly.20210726":"93.0.4566.0","16.0.0-nightly.20210727":"94.0.4584.0","16.0.0-nightly.20210728":"94.0.4584.0","16.0.0-nightly.20210729":"94.0.4584.0","16.0.0-nightly.20210730":"94.0.4584.0","16.0.0-nightly.20210802":"94.0.4584.0","16.0.0-nightly.20210803":"94.0.4584.0","16.0.0-nightly.20210804":"94.0.4584.0","16.0.0-nightly.20210805":"94.0.4584.0","16.0.0-nightly.20210806":"94.0.4584.0","16.0.0-nightly.20210809":"94.0.4584.0","16.0.0-nightly.20210810":"94.0.4584.0","16.0.0-nightly.20210811":"94.0.4584.0","16.0.0-nightly.20210812":"94.0.4590.2","16.0.0-nightly.20210813":"94.0.4590.2","16.0.0-nightly.20210816":"94.0.4590.2","16.0.0-nightly.20210817":"94.0.4590.2","16.0.0-nightly.20210818":"94.0.4590.2","16.0.0-nightly.20210819":"94.0.4590.2","16.0.0-nightly.20210820":"94.0.4590.2","16.0.0-nightly.20210823":"94.0.4590.2","16.0.0-nightly.20210824":"95.0.4612.5","16.0.0-nightly.20210825":"95.0.4612.5","16.0.0-nightly.20210826":"95.0.4612.5","16.0.0-nightly.20210827":"95.0.4612.5","16.0.0-nightly.20210830":"95.0.4612.5","16.0.0-nightly.20210831":"95.0.4612.5","16.0.0-nightly.20210901":"95.0.4612.5","16.0.0-nightly.20210902":"95.0.4629.0","16.0.0-nightly.20210903":"95.0.4629.0","16.0.0-nightly.20210906":"95.0.4629.0","16.0.0-nightly.20210907":"95.0.4629.0","16.0.0-nightly.20210908":"95.0.4629.0","16.0.0-nightly.20210909":"95.0.4629.0","16.0.0-nightly.20210910":"95.0.4629.0","16.0.0-nightly.20210913":"95.0.4629.0","16.0.0-nightly.20210914":"95.0.4629.0","16.0.0-nightly.20210915":"95.0.4629.0","16.0.0-nightly.20210916":"95.0.4629.0","16.0.0-nightly.20210917":"95.0.4629.0","16.0.0-nightly.20210920":"95.0.4629.0","16.0.0-nightly.20210921":"95.0.4629.0","16.0.0-nightly.20210922":"95.0.4629.0","16.0.0":"96.0.4664.45","16.0.1":"96.0.4664.45","16.0.2":"96.0.4664.55","16.0.3":"96.0.4664.55","16.0.4":"96.0.4664.55","16.0.5":"96.0.4664.55","16.0.6":"96.0.4664.110","16.0.7":"96.0.4664.110","16.0.8":"96.0.4664.110","16.0.9":"96.0.4664.174","16.0.10":"96.0.4664.174","16.1.0":"96.0.4664.174","16.1.1":"96.0.4664.174","16.2.0":"96.0.4664.174","16.2.1":"96.0.4664.174","16.2.2":"96.0.4664.174","16.2.3":"96.0.4664.174","16.2.4":"96.0.4664.174","16.2.5":"96.0.4664.174","16.2.6":"96.0.4664.174","16.2.7":"96.0.4664.174","16.2.8":"96.0.4664.174","17.0.0-alpha.1":"96.0.4664.4","17.0.0-alpha.2":"96.0.4664.4","17.0.0-alpha.3":"96.0.4664.4","17.0.0-alpha.4":"98.0.4706.0","17.0.0-alpha.5":"98.0.4706.0","17.0.0-alpha.6":"98.0.4706.0","17.0.0-beta.1":"98.0.4706.0","17.0.0-beta.2":"98.0.4706.0","17.0.0-beta.3":"98.0.4758.9","17.0.0-beta.4":"98.0.4758.11","17.0.0-beta.5":"98.0.4758.11","17.0.0-beta.6":"98.0.4758.11","17.0.0-beta.7":"98.0.4758.11","17.0.0-beta.8":"98.0.4758.11","17.0.0-beta.9":"98.0.4758.11","17.0.0-nightly.20210923":"95.0.4629.0","17.0.0-nightly.20210924":"95.0.4629.0","17.0.0-nightly.20210927":"95.0.4629.0","17.0.0-nightly.20210928":"95.0.4629.0","17.0.0-nightly.20210929":"95.0.4629.0","17.0.0-nightly.20210930":"95.0.4629.0","17.0.0-nightly.20211001":"95.0.4629.0","17.0.0-nightly.20211004":"95.0.4629.0","17.0.0-nightly.20211005":"95.0.4629.0","17.0.0-nightly.20211006":"96.0.4647.0","17.0.0-nightly.20211007":"96.0.4647.0","17.0.0-nightly.20211008":"96.0.4647.0","17.0.0-nightly.20211011":"96.0.4647.0","17.0.0-nightly.20211012":"96.0.4647.0","17.0.0-nightly.20211013":"96.0.4647.0","17.0.0-nightly.20211014":"96.0.4647.0","17.0.0-nightly.20211015":"96.0.4647.0","17.0.0-nightly.20211018":"96.0.4647.0","17.0.0-nightly.20211019":"96.0.4647.0","17.0.0-nightly.20211020":"96.0.4647.0","17.0.0-nightly.20211021":"96.0.4647.0","17.0.0-nightly.20211022":"96.0.4664.4","17.0.0-nightly.20211025":"96.0.4664.4","17.0.0-nightly.20211026":"96.0.4664.4","17.0.0-nightly.20211027":"96.0.4664.4","17.0.0-nightly.20211028":"96.0.4664.4","17.0.0-nightly.20211029":"96.0.4664.4","17.0.0-nightly.20211101":"96.0.4664.4","17.0.0-nightly.20211102":"96.0.4664.4","17.0.0-nightly.20211103":"96.0.4664.4","17.0.0-nightly.20211104":"96.0.4664.4","17.0.0-nightly.20211105":"96.0.4664.4","17.0.0-nightly.20211108":"96.0.4664.4","17.0.0-nightly.20211109":"96.0.4664.4","17.0.0-nightly.20211110":"96.0.4664.4","17.0.0-nightly.20211111":"96.0.4664.4","17.0.0-nightly.20211112":"96.0.4664.4","17.0.0-nightly.20211115":"96.0.4664.4","17.0.0-nightly.20211116":"96.0.4664.4","17.0.0-nightly.20211117":"96.0.4664.4","17.0.0":"98.0.4758.74","17.0.1":"98.0.4758.82","17.1.0":"98.0.4758.102","17.1.1":"98.0.4758.109","17.1.2":"98.0.4758.109","17.2.0":"98.0.4758.109","17.3.0":"98.0.4758.141","17.3.1":"98.0.4758.141","17.4.0":"98.0.4758.141","17.4.1":"98.0.4758.141","17.4.2":"98.0.4758.141","17.4.3":"98.0.4758.141","17.4.4":"98.0.4758.141","17.4.5":"98.0.4758.141","17.4.6":"98.0.4758.141","17.4.7":"98.0.4758.141","17.4.8":"98.0.4758.141","17.4.9":"98.0.4758.141","17.4.10":"98.0.4758.141","18.0.0-alpha.1":"99.0.4767.0","18.0.0-alpha.2":"99.0.4767.0","18.0.0-alpha.3":"99.0.4767.0","18.0.0-alpha.4":"99.0.4767.0","18.0.0-alpha.5":"99.0.4767.0","18.0.0-beta.1":"100.0.4894.0","18.0.0-beta.2":"100.0.4894.0","18.0.0-beta.3":"100.0.4894.0","18.0.0-beta.4":"100.0.4894.0","18.0.0-beta.5":"100.0.4894.0","18.0.0-beta.6":"100.0.4894.0","18.0.0-nightly.20211118":"96.0.4664.4","18.0.0-nightly.20211119":"96.0.4664.4","18.0.0-nightly.20211122":"96.0.4664.4","18.0.0-nightly.20211123":"96.0.4664.4","18.0.0-nightly.20211124":"98.0.4706.0","18.0.0-nightly.20211125":"98.0.4706.0","18.0.0-nightly.20211126":"98.0.4706.0","18.0.0-nightly.20211129":"98.0.4706.0","18.0.0-nightly.20211130":"98.0.4706.0","18.0.0-nightly.20211201":"98.0.4706.0","18.0.0-nightly.20211202":"98.0.4706.0","18.0.0-nightly.20211203":"98.0.4706.0","18.0.0-nightly.20211206":"98.0.4706.0","18.0.0-nightly.20211207":"98.0.4706.0","18.0.0-nightly.20211208":"98.0.4706.0","18.0.0-nightly.20211209":"98.0.4706.0","18.0.0-nightly.20211210":"98.0.4706.0","18.0.0-nightly.20211213":"98.0.4706.0","18.0.0-nightly.20211214":"98.0.4706.0","18.0.0-nightly.20211215":"98.0.4706.0","18.0.0-nightly.20211216":"98.0.4706.0","18.0.0-nightly.20211217":"98.0.4706.0","18.0.0-nightly.20211220":"98.0.4706.0","18.0.0-nightly.20211221":"98.0.4706.0","18.0.0-nightly.20211222":"98.0.4706.0","18.0.0-nightly.20211223":"98.0.4706.0","18.0.0-nightly.20211228":"98.0.4706.0","18.0.0-nightly.20211229":"98.0.4706.0","18.0.0-nightly.20211231":"98.0.4706.0","18.0.0-nightly.20220103":"98.0.4706.0","18.0.0-nightly.20220104":"98.0.4706.0","18.0.0-nightly.20220105":"98.0.4706.0","18.0.0-nightly.20220106":"98.0.4706.0","18.0.0-nightly.20220107":"98.0.4706.0","18.0.0-nightly.20220110":"98.0.4706.0","18.0.0-nightly.20220111":"99.0.4767.0","18.0.0-nightly.20220112":"99.0.4767.0","18.0.0-nightly.20220113":"99.0.4767.0","18.0.0-nightly.20220114":"99.0.4767.0","18.0.0-nightly.20220117":"99.0.4767.0","18.0.0-nightly.20220118":"99.0.4767.0","18.0.0-nightly.20220119":"99.0.4767.0","18.0.0-nightly.20220121":"99.0.4767.0","18.0.0-nightly.20220124":"99.0.4767.0","18.0.0-nightly.20220125":"99.0.4767.0","18.0.0-nightly.20220127":"99.0.4767.0","18.0.0-nightly.20220128":"99.0.4767.0","18.0.0-nightly.20220131":"99.0.4767.0","18.0.0-nightly.20220201":"99.0.4767.0","18.0.0":"100.0.4896.56","18.0.1":"100.0.4896.60","18.0.2":"100.0.4896.60","18.0.3":"100.0.4896.75","18.0.4":"100.0.4896.75","18.1.0":"100.0.4896.127","18.2.0":"100.0.4896.143","18.2.1":"100.0.4896.143","18.2.2":"100.0.4896.143","18.2.3":"100.0.4896.143","18.2.4":"100.0.4896.160","18.3.0":"100.0.4896.160","18.3.1":"100.0.4896.160","18.3.2":"100.0.4896.160","18.3.3":"100.0.4896.160","18.3.4":"100.0.4896.160","18.3.5":"100.0.4896.160","19.0.0-alpha.1":"102.0.4962.3","19.0.0-alpha.2":"102.0.4971.0","19.0.0-alpha.3":"102.0.4971.0","19.0.0-alpha.4":"102.0.4989.0","19.0.0-alpha.5":"102.0.4989.0","19.0.0-beta.1":"102.0.4999.0","19.0.0-beta.2":"102.0.4999.0","19.0.0-beta.3":"102.0.4999.0","19.0.0-beta.4":"102.0.5005.27","19.0.0-beta.5":"102.0.5005.40","19.0.0-beta.6":"102.0.5005.40","19.0.0-beta.7":"102.0.5005.40","19.0.0-beta.8":"102.0.5005.49","19.0.0-nightly.20220202":"99.0.4767.0","19.0.0-nightly.20220203":"99.0.4767.0","19.0.0-nightly.20220204":"99.0.4767.0","19.0.0-nightly.20220207":"99.0.4767.0","19.0.0-nightly.20220208":"99.0.4767.0","19.0.0-nightly.20220209":"99.0.4767.0","19.0.0-nightly.20220308":"100.0.4894.0","19.0.0-nightly.20220309":"100.0.4894.0","19.0.0-nightly.20220310":"100.0.4894.0","19.0.0-nightly.20220311":"100.0.4894.0","19.0.0-nightly.20220314":"100.0.4894.0","19.0.0-nightly.20220315":"100.0.4894.0","19.0.0-nightly.20220316":"100.0.4894.0","19.0.0-nightly.20220317":"100.0.4894.0","19.0.0-nightly.20220318":"100.0.4894.0","19.0.0-nightly.20220321":"100.0.4894.0","19.0.0-nightly.20220322":"100.0.4894.0","19.0.0-nightly.20220323":"100.0.4894.0","19.0.0-nightly.20220324":"100.0.4894.0","19.0.0-nightly.20220325":"102.0.4961.0","19.0.0-nightly.20220328":"102.0.4962.3","19.0.0-nightly.20220329":"102.0.4962.3","19.0.0":"102.0.5005.61","19.0.1":"102.0.5005.61","19.0.2":"102.0.5005.63","19.0.3":"102.0.5005.63","19.0.4":"102.0.5005.63","19.0.5":"102.0.5005.115","19.0.6":"102.0.5005.115","19.0.7":"102.0.5005.134","19.0.8":"102.0.5005.148","20.0.0-alpha.1":"103.0.5044.0","20.0.0-alpha.2":"104.0.5073.0","20.0.0-alpha.3":"104.0.5073.0","20.0.0-alpha.4":"104.0.5073.0","20.0.0-alpha.5":"104.0.5073.0","20.0.0-alpha.6":"104.0.5073.0","20.0.0-alpha.7":"104.0.5073.0","20.0.0-beta.1":"104.0.5073.0","20.0.0-beta.2":"104.0.5073.0","20.0.0-beta.3":"104.0.5073.0","20.0.0-beta.4":"104.0.5073.0","20.0.0-beta.5":"104.0.5073.0","20.0.0-beta.6":"104.0.5073.0","20.0.0-beta.7":"104.0.5073.0","20.0.0-beta.8":"104.0.5073.0","20.0.0-beta.9":"104.0.5112.39","20.0.0-nightly.20220330":"102.0.4962.3","20.0.0-nightly.20220411":"102.0.4971.0","20.0.0-nightly.20220414":"102.0.4989.0","20.0.0-nightly.20220415":"102.0.4989.0","20.0.0-nightly.20220418":"102.0.4989.0","20.0.0-nightly.20220419":"102.0.4989.0","20.0.0-nightly.20220420":"102.0.4989.0","20.0.0-nightly.20220421":"102.0.4989.0","20.0.0-nightly.20220425":"102.0.4999.0","20.0.0-nightly.20220426":"102.0.4999.0","20.0.0-nightly.20220427":"102.0.4999.0","20.0.0-nightly.20220428":"102.0.4999.0","20.0.0-nightly.20220429":"102.0.4999.0","20.0.0-nightly.20220502":"102.0.4999.0","20.0.0-nightly.20220503":"102.0.4999.0","20.0.0-nightly.20220504":"102.0.4999.0","20.0.0-nightly.20220505":"102.0.4999.0","20.0.0-nightly.20220506":"102.0.4999.0","20.0.0-nightly.20220509":"102.0.4999.0","20.0.0-nightly.20220511":"102.0.4999.0","20.0.0-nightly.20220512":"102.0.4999.0","20.0.0-nightly.20220513":"102.0.4999.0","20.0.0-nightly.20220516":"102.0.4999.0","20.0.0-nightly.20220517":"102.0.4999.0","20.0.0-nightly.20220518":"103.0.5044.0","20.0.0-nightly.20220519":"103.0.5044.0","20.0.0-nightly.20220520":"103.0.5044.0","20.0.0-nightly.20220523":"103.0.5044.0","20.0.0-nightly.20220524":"103.0.5044.0","21.0.0-nightly.20220526":"103.0.5044.0","21.0.0-nightly.20220527":"103.0.5044.0","21.0.0-nightly.20220530":"103.0.5044.0","21.0.0-nightly.20220531":"103.0.5044.0","21.0.0-nightly.20220602":"104.0.5073.0","21.0.0-nightly.20220603":"104.0.5073.0","21.0.0-nightly.20220606":"104.0.5073.0","21.0.0-nightly.20220607":"104.0.5073.0","21.0.0-nightly.20220608":"104.0.5073.0","21.0.0-nightly.20220609":"104.0.5073.0","21.0.0-nightly.20220610":"104.0.5073.0","21.0.0-nightly.20220613":"104.0.5073.0","21.0.0-nightly.20220614":"104.0.5073.0","21.0.0-nightly.20220615":"104.0.5073.0","21.0.0-nightly.20220616":"104.0.5073.0","21.0.0-nightly.20220617":"104.0.5073.0","21.0.0-nightly.20220620":"104.0.5073.0","21.0.0-nightly.20220621":"104.0.5073.0","21.0.0-nightly.20220622":"104.0.5073.0","21.0.0-nightly.20220623":"104.0.5073.0","21.0.0-nightly.20220624":"104.0.5073.0","21.0.0-nightly.20220627":"104.0.5073.0","21.0.0-nightly.20220628":"105.0.5129.0","21.0.0-nightly.20220629":"105.0.5129.0","21.0.0-nightly.20220630":"105.0.5129.0","21.0.0-nightly.20220701":"105.0.5129.0","21.0.0-nightly.20220704":"105.0.5129.0","21.0.0-nightly.20220705":"105.0.5129.0","21.0.0-nightly.20220706":"105.0.5129.0","21.0.0-nightly.20220707":"105.0.5129.0","21.0.0-nightly.20220708":"105.0.5129.0","21.0.0-nightly.20220711":"105.0.5129.0","21.0.0-nightly.20220712":"105.0.5129.0","21.0.0-nightly.20220713":"105.0.5129.0","21.0.0-nightly.20220715":"105.0.5173.0"} \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/package.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/package.json index dad7c3fc331e1f..c31bfe9105ceed 100644 --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/package.json +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/package.json @@ -1,6 +1,6 @@ { "name": "electron-to-chromium", - "version": "1.4.82", + "version": "1.4.192", "description": "Provides a list of electron-to-chromium version mappings", "main": "index.js", "files": [ @@ -34,7 +34,7 @@ "devDependencies": { "ava": "^4.0.1", "codecov": "^3.8.0", - "electron-releases": "^3.960.0", + "electron-releases": "^3.1072.0", "nyc": "^15.1.0", "request": "^2.65.0", "shelljs": "^0.8.4" diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.js index 3e0ce3f5437598..dd8cda83ec3350 100644 --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.js +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.js @@ -80,9 +80,19 @@ module.exports = { "15.2": "94", "15.3": "94", "15.4": "94", + "15.5": "94", "16.0": "96", "16.1": "96", + "16.2": "96", "17.0": "98", "17.1": "98", - "18.0": "100" + "17.2": "98", + "17.3": "98", + "17.4": "98", + "18.0": "100", + "18.1": "100", + "18.2": "100", + "18.3": "100", + "19.0": "102", + "20.0": "104" }; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.json index 099d01c09bdbf6..997011af955c81 100644 --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.json +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.json @@ -1 +1 @@ -{"0.20":"39","0.21":"41","0.22":"41","0.23":"41","0.24":"41","0.25":"42","0.26":"42","0.27":"43","0.28":"43","0.29":"43","0.30":"44","0.31":"45","0.32":"45","0.33":"45","0.34":"45","0.35":"45","0.36":"47","0.37":"49","1.0":"49","1.1":"50","1.2":"51","1.3":"52","1.4":"53","1.5":"54","1.6":"56","1.7":"58","1.8":"59","2.0":"61","2.1":"61","3.0":"66","3.1":"66","4.0":"69","4.1":"69","4.2":"69","5.0":"73","6.0":"76","6.1":"76","7.0":"78","7.1":"78","7.2":"78","7.3":"78","8.0":"80","8.1":"80","8.2":"80","8.3":"80","8.4":"80","8.5":"80","9.0":"83","9.1":"83","9.2":"83","9.3":"83","9.4":"83","10.0":"85","10.1":"85","10.2":"85","10.3":"85","10.4":"85","11.0":"87","11.1":"87","11.2":"87","11.3":"87","11.4":"87","11.5":"87","12.0":"89","12.1":"89","12.2":"89","13.0":"91","13.1":"91","13.2":"91","13.3":"91","13.4":"91","13.5":"91","13.6":"91","14.0":"93","14.1":"93","14.2":"93","15.0":"94","15.1":"94","15.2":"94","15.3":"94","15.4":"94","16.0":"96","16.1":"96","17.0":"98","17.1":"98","18.0":"100"} \ No newline at end of file +{"0.20":"39","0.21":"41","0.22":"41","0.23":"41","0.24":"41","0.25":"42","0.26":"42","0.27":"43","0.28":"43","0.29":"43","0.30":"44","0.31":"45","0.32":"45","0.33":"45","0.34":"45","0.35":"45","0.36":"47","0.37":"49","1.0":"49","1.1":"50","1.2":"51","1.3":"52","1.4":"53","1.5":"54","1.6":"56","1.7":"58","1.8":"59","2.0":"61","2.1":"61","3.0":"66","3.1":"66","4.0":"69","4.1":"69","4.2":"69","5.0":"73","6.0":"76","6.1":"76","7.0":"78","7.1":"78","7.2":"78","7.3":"78","8.0":"80","8.1":"80","8.2":"80","8.3":"80","8.4":"80","8.5":"80","9.0":"83","9.1":"83","9.2":"83","9.3":"83","9.4":"83","10.0":"85","10.1":"85","10.2":"85","10.3":"85","10.4":"85","11.0":"87","11.1":"87","11.2":"87","11.3":"87","11.4":"87","11.5":"87","12.0":"89","12.1":"89","12.2":"89","13.0":"91","13.1":"91","13.2":"91","13.3":"91","13.4":"91","13.5":"91","13.6":"91","14.0":"93","14.1":"93","14.2":"93","15.0":"94","15.1":"94","15.2":"94","15.3":"94","15.4":"94","15.5":"94","16.0":"96","16.1":"96","16.2":"96","17.0":"98","17.1":"98","17.2":"98","17.3":"98","17.4":"98","18.0":"100","18.1":"100","18.2":"100","18.3":"100","19.0":"102","20.0":"104"} \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/alignTransform.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/alignTransform.js index aa51820eade6f7..6ef3ed8bd782b4 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/alignTransform.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/alignTransform.js @@ -79,7 +79,7 @@ const alignTransform = ({ let intoTags = false; let width; - const alignTokens = tokens => { + const alignTokens = (tokens, hasNoTypes) => { const nothingAfter = { delim: false, name: false, @@ -105,6 +105,11 @@ const alignTransform = ({ } } } + } + + if (hasNoTypes) { + nothingAfter.tag = true; + tokens.postTag = ''; } // Todo: Avoid fixing alignment of blocks with multiline wrapping of type @@ -136,7 +141,7 @@ const alignTransform = ({ return tokens; }; - const update = (line, index, source) => { + const update = (line, index, source, hasNoTypes) => { const tokens = { ...line.tokens }; @@ -192,7 +197,7 @@ const alignTransform = ({ } return { ...line, - tokens: alignTokens(tokens) + tokens: alignTokens(tokens, hasNoTypes) }; }; @@ -202,9 +207,14 @@ const alignTransform = ({ }) => { width = source.reduce(getWidth(tags), { ...zeroWidth }); + const hasNoTypes = fields.tags.every(({ + type + }) => { + return !type; + }); return rewireSource({ ...fields, source: source.map((line, index) => { - return update(line, index, source); + return update(line, index, source, hasNoTypes); }) }); }; diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/defaultTagOrder.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/defaultTagOrder.js index 0ee80656a5cec1..8ea729ebcef592 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/defaultTagOrder.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/defaultTagOrder.js @@ -10,7 +10,8 @@ const defaultTagOrder = [// Brief descriptions 'typedef', 'interface', 'record', 'template', 'name', 'kind', 'type', 'alias', 'external', 'host', 'callback', 'func', 'function', 'method', 'class', 'constructor', // Relationships 'modifies', 'mixes', 'mixin', 'mixinClass', 'mixinFunction', 'namespace', 'borrows', 'constructs', 'lends', 'implements', 'requires', // Long descriptions 'desc', 'description', 'classdesc', 'tutorial', 'copyright', 'license', // Simple annotations -'const', 'constant', 'final', 'global', 'readonly', 'abstract', 'virtual', 'var', 'member', 'memberof', 'memberof!', 'inner', 'instance', 'inheritdoc', 'inheritDoc', 'override', 'hideconstructor', // Core function/object info +// TypeScript +'internal', 'const', 'constant', 'final', 'global', 'readonly', 'abstract', 'virtual', 'var', 'member', 'memberof', 'memberof!', 'inner', 'instance', 'inheritdoc', 'inheritDoc', 'override', 'hideconstructor', // Core function/object info 'param', 'arg', 'argument', 'prop', 'property', 'return', 'returns', // Important behavior details 'async', 'generator', 'default', 'defaultvalue', 'enum', 'augments', 'extends', 'throws', 'exception', 'yield', 'yields', 'event', 'fires', 'emits', 'listens', 'this', // Access 'static', 'private', 'protected', 'public', 'access', 'package', '-other', // Supplementary descriptions diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/exportParser.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/exportParser.js index 510d20dda97d67..05c07c34c971e6 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/exportParser.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/exportParser.js @@ -108,11 +108,15 @@ const getSymbol = function (node, globals, scope, opt) { return null; } + case 'ClassExpression': + { + return getSymbol(node.body, globals, scope, opts); + } + case 'TSTypeAliasDeclaration': case 'TSEnumDeclaration': case 'TSInterfaceDeclaration': case 'ClassDeclaration': - case 'ClassExpression': case 'FunctionExpression': case 'FunctionDeclaration': case 'ArrowFunctionExpression': @@ -141,7 +145,7 @@ const getSymbol = function (node, globals, scope, opt) { } val.type = 'object'; - val.value = node; + val.value = node.parent; return val; } @@ -490,7 +494,7 @@ const getExportAncestor = function (nde) { }; const canBeExportedByAncestorType = new Set(['TSPropertySignature', 'TSMethodSignature', 'ClassProperty', 'PropertyDefinition', 'Method']); -const canExportChildrenType = new Set(['TSInterfaceBody', 'TSInterfaceDeclaration', 'ClassDeclaration', 'ClassBody', 'ClassDefinition', 'ClassExpression', 'Program']); +const canExportChildrenType = new Set(['TSInterfaceBody', 'TSInterfaceDeclaration', 'TSTypeLiteral', 'TSTypeAliasDeclaration', 'ClassDeclaration', 'ClassBody', 'ClassDefinition', 'ClassExpression', 'Program']); const isExportByAncestor = function (nde) { if (!canBeExportedByAncestorType.has(nde.type)) { @@ -539,7 +543,11 @@ const findExportedNode = function (block, node, cache) { }; const isNodeExported = function (node, globals, opt) { - if (opt.initModuleExports && globals.props.module && globals.props.module.props.exports && findNode(node, globals.props.module.props.exports)) { + var _globals$props$module, _globals$props$module2; + + const moduleExports = (_globals$props$module = globals.props.module) === null || _globals$props$module === void 0 ? void 0 : (_globals$props$module2 = _globals$props$module.props) === null || _globals$props$module2 === void 0 ? void 0 : _globals$props$module2.exports; + + if (opt.initModuleExports && moduleExports && findNode(node, moduleExports)) { return true; } diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/getDefaultTagStructureForMode.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/getDefaultTagStructureForMode.js index cb67c34c392c2c..e762c8cfb56e8a 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/getDefaultTagStructureForMode.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/getDefaultTagStructureForMode.js @@ -88,7 +88,9 @@ const getDefaultTagStructureForMode = mode => { ['nameContents', 'namepath-defining'], // See `external` ['nameRequired', true], ['typeAllowed', false]])], ['interface', new Map([// Allows for "name" in signature, but indicates as optional ['nameContents', isJsdocTypescriptOrPermissive ? 'namepath-defining' : false], // Not in use, but should be this value if using to power `empty-tags` - ['nameAllowed', isClosure], ['typeAllowed', false]])], ['implements', new Map([// Shows curly brackets in the doc signature and examples + ['nameAllowed', isClosure], ['typeAllowed', false]])], ['internal', new Map([// https://www.typescriptlang.org/tsconfig/#stripInternal + ['nameContents', false], // Not in use, but should be this value if using to power `empty-tags` + ['nameAllowed', false]])], ['implements', new Map([// Shows curly brackets in the doc signature and examples // "typeExpression" ['typeRequired', true]])], ['lends', new Map([// Signature seems to require a "namepath" (and no counter-examples) ['nameContents', 'namepath-referencing'], // "namepath" diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js index f480e32f9a44cd..26aea353fff07e 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js @@ -20,11 +20,29 @@ var _jsdocUtils = _interopRequireDefault(require("./jsdocUtils")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/* eslint-disable jsdoc/valid-types */ const { rewireSpecs, seedTokens -} = _commentParser.util; +} = _commentParser.util; // todo: Change these `any` types once importing types properly. + +/** + * Should use ESLint rule's typing. + * + * @typedef {any} EslintRuleMeta + */ + +/** + * A plain object for tracking state as needed by rules across iterations. + * + * @typedef {any} StateObject + */ + +/** + * The Node AST as supplied by the parser. + * + * @typedef {any} Node + */ + /* const { align as commentAlign, @@ -253,11 +271,17 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl }; - utils.addTag = (targetTagName, number = (() => { - var _jsdoc$tags$source$0$, _jsdoc$tags, _jsdoc$tags$source$; + utils.addTag = (targetTagName, number = ((() => { + var _jsdoc$tags, _jsdoc$tags$source$; - return (_jsdoc$tags$source$0$ = (_jsdoc$tags = jsdoc.tags[jsdoc.tags.length - 1]) === null || _jsdoc$tags === void 0 ? void 0 : (_jsdoc$tags$source$ = _jsdoc$tags.source[0]) === null || _jsdoc$tags$source$ === void 0 ? void 0 : _jsdoc$tags$source$.number) !== null && _jsdoc$tags$source$0$ !== void 0 ? _jsdoc$tags$source$0$ : 0; - })() + 1, tokens = {}) => { + return (_jsdoc$tags = jsdoc.tags[jsdoc.tags.length - 1]) === null || _jsdoc$tags === void 0 ? void 0 : (_jsdoc$tags$source$ = _jsdoc$tags.source[0]) === null || _jsdoc$tags$source$ === void 0 ? void 0 : _jsdoc$tags$source$.number; + })() ?? jsdoc.source.findIndex(({ + tokens: { + tag + } + }) => { + return tag; + }) - 1) + 1, tokens = {}) => { jsdoc.source.splice(number, 0, { number, source: '', @@ -505,7 +529,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl }; utils.avoidDocs = () => { - var _context$options$0$ex, _context$options$; + var _context$options$; if (ignoreReplacesDocs !== false && (utils.hasTag('ignore') || utils.classHasTag('ignore')) || overrideReplacesDocs !== false && (utils.hasTag('override') || utils.classHasTag('override')) || implementsReplacesDocs !== false && (utils.hasTag('implements') || utils.classHasTag('implements')) || augmentsExtendsReplacesDocs && (utils.hasATag(['augments', 'extends']) || utils.classHasTag('augments') || utils.classHasTag('extends'))) { return true; @@ -515,7 +539,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl return true; } - const exemptedBy = (_context$options$0$ex = (_context$options$ = context.options[0]) === null || _context$options$ === void 0 ? void 0 : _context$options$.exemptedBy) !== null && _context$options$0$ex !== void 0 ? _context$options$0$ex : ['inheritDoc', ...(mode === 'closure' ? [] : ['inheritdoc'])]; + const exemptedBy = ((_context$options$ = context.options[0]) === null || _context$options$ === void 0 ? void 0 : _context$options$.exemptedBy) ?? ['inheritDoc', ...(mode === 'closure' ? [] : ['inheritdoc'])]; if (exemptedBy.length && utils.getPresentTags(exemptedBy).length) { return true; @@ -622,11 +646,9 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl }; utils.hasOptionTag = tagName => { - var _context$options$2; - const { tags - } = (_context$options$2 = context.options[0]) !== null && _context$options$2 !== void 0 ? _context$options$2 : {}; + } = context.options[0] ?? {}; return Boolean(tags && tags.includes(tagName)); }; @@ -649,8 +671,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl }); if (classJsdocNode) { - const indnt = ' '.repeat(classJsdocNode.loc.start.column); - return (0, _jsdoccomment.parseComment)(classJsdocNode, indnt); + return (0, _jsdoccomment.parseComment)(classJsdocNode, ''); } return null; @@ -686,29 +707,29 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl }; const getSettings = context => { - var _context$settings$jsd, _context$settings$jsd2, _context$settings$jsd3, _context$settings$jsd4, _context$settings$jsd5, _context$settings$jsd6, _context$settings$jsd7, _context$settings$jsd8, _context$settings$jsd9, _context$settings$jsd10, _context$settings$jsd11, _context$settings$jsd12, _context$settings$jsd13, _context$settings$jsd14, _context$settings$jsd15, _context$settings$jsd16, _context$settings$jsd17, _context$settings$jsd18; + var _context$settings$jsd, _context$settings$jsd2, _context$settings$jsd3, _context$settings$jsd4, _context$settings$jsd5, _context$settings$jsd6, _context$settings$jsd7, _context$settings$jsd8, _context$settings$jsd9, _context$settings$jsd10, _context$settings$jsd11, _context$settings$jsd12; /* eslint-disable canonical/sort-keys */ const settings = { // All rules ignorePrivate: Boolean((_context$settings$jsd = context.settings.jsdoc) === null || _context$settings$jsd === void 0 ? void 0 : _context$settings$jsd.ignorePrivate), ignoreInternal: Boolean((_context$settings$jsd2 = context.settings.jsdoc) === null || _context$settings$jsd2 === void 0 ? void 0 : _context$settings$jsd2.ignoreInternal), - maxLines: Number((_context$settings$jsd3 = (_context$settings$jsd4 = context.settings.jsdoc) === null || _context$settings$jsd4 === void 0 ? void 0 : _context$settings$jsd4.maxLines) !== null && _context$settings$jsd3 !== void 0 ? _context$settings$jsd3 : 1), - minLines: Number((_context$settings$jsd5 = (_context$settings$jsd6 = context.settings.jsdoc) === null || _context$settings$jsd6 === void 0 ? void 0 : _context$settings$jsd6.minLines) !== null && _context$settings$jsd5 !== void 0 ? _context$settings$jsd5 : 0), + maxLines: Number(((_context$settings$jsd3 = context.settings.jsdoc) === null || _context$settings$jsd3 === void 0 ? void 0 : _context$settings$jsd3.maxLines) ?? 1), + minLines: Number(((_context$settings$jsd4 = context.settings.jsdoc) === null || _context$settings$jsd4 === void 0 ? void 0 : _context$settings$jsd4.minLines) ?? 0), // `check-tag-names` and many returns/param rules - tagNamePreference: (_context$settings$jsd7 = (_context$settings$jsd8 = context.settings.jsdoc) === null || _context$settings$jsd8 === void 0 ? void 0 : _context$settings$jsd8.tagNamePreference) !== null && _context$settings$jsd7 !== void 0 ? _context$settings$jsd7 : {}, + tagNamePreference: ((_context$settings$jsd5 = context.settings.jsdoc) === null || _context$settings$jsd5 === void 0 ? void 0 : _context$settings$jsd5.tagNamePreference) ?? {}, // `check-types` and `no-undefined-types` - preferredTypes: (_context$settings$jsd9 = (_context$settings$jsd10 = context.settings.jsdoc) === null || _context$settings$jsd10 === void 0 ? void 0 : _context$settings$jsd10.preferredTypes) !== null && _context$settings$jsd9 !== void 0 ? _context$settings$jsd9 : {}, + preferredTypes: ((_context$settings$jsd6 = context.settings.jsdoc) === null || _context$settings$jsd6 === void 0 ? void 0 : _context$settings$jsd6.preferredTypes) ?? {}, // `check-types`, `no-undefined-types`, `valid-types` - structuredTags: (_context$settings$jsd11 = (_context$settings$jsd12 = context.settings.jsdoc) === null || _context$settings$jsd12 === void 0 ? void 0 : _context$settings$jsd12.structuredTags) !== null && _context$settings$jsd11 !== void 0 ? _context$settings$jsd11 : {}, + structuredTags: ((_context$settings$jsd7 = context.settings.jsdoc) === null || _context$settings$jsd7 === void 0 ? void 0 : _context$settings$jsd7.structuredTags) ?? {}, // `require-param`, `require-description`, `require-example`, // `require-returns`, `require-throw`, `require-yields` - overrideReplacesDocs: (_context$settings$jsd13 = context.settings.jsdoc) === null || _context$settings$jsd13 === void 0 ? void 0 : _context$settings$jsd13.overrideReplacesDocs, - ignoreReplacesDocs: (_context$settings$jsd14 = context.settings.jsdoc) === null || _context$settings$jsd14 === void 0 ? void 0 : _context$settings$jsd14.ignoreReplacesDocs, - implementsReplacesDocs: (_context$settings$jsd15 = context.settings.jsdoc) === null || _context$settings$jsd15 === void 0 ? void 0 : _context$settings$jsd15.implementsReplacesDocs, - augmentsExtendsReplacesDocs: (_context$settings$jsd16 = context.settings.jsdoc) === null || _context$settings$jsd16 === void 0 ? void 0 : _context$settings$jsd16.augmentsExtendsReplacesDocs, + overrideReplacesDocs: (_context$settings$jsd8 = context.settings.jsdoc) === null || _context$settings$jsd8 === void 0 ? void 0 : _context$settings$jsd8.overrideReplacesDocs, + ignoreReplacesDocs: (_context$settings$jsd9 = context.settings.jsdoc) === null || _context$settings$jsd9 === void 0 ? void 0 : _context$settings$jsd9.ignoreReplacesDocs, + implementsReplacesDocs: (_context$settings$jsd10 = context.settings.jsdoc) === null || _context$settings$jsd10 === void 0 ? void 0 : _context$settings$jsd10.implementsReplacesDocs, + augmentsExtendsReplacesDocs: (_context$settings$jsd11 = context.settings.jsdoc) === null || _context$settings$jsd11 === void 0 ? void 0 : _context$settings$jsd11.augmentsExtendsReplacesDocs, // Many rules, e.g., `check-tag-names` - mode: (_context$settings$jsd17 = (_context$settings$jsd18 = context.settings.jsdoc) === null || _context$settings$jsd18 === void 0 ? void 0 : _context$settings$jsd18.mode) !== null && _context$settings$jsd17 !== void 0 ? _context$settings$jsd17 : context.parserPath.includes('@typescript-eslint') ? 'typescript' : 'jsdoc' + mode: ((_context$settings$jsd12 = context.settings.jsdoc) === null || _context$settings$jsd12 === void 0 ? void 0 : _context$settings$jsd12.mode) ?? (context.parserPath.includes('@typescript-eslint') ? 'typescript' : 'jsdoc') }; /* eslint-enable canonical/sort-keys */ @@ -753,9 +774,11 @@ const makeReport = (context, commentNode) => { const lineNumber = commentNode.loc.start.line + jsdocLoc.line; loc = { end: { + column: 0, line: lineNumber }, start: { + column: 0, line: lineNumber } }; // Todo: Remove ignore once `check-examples` can be restored for ESLint 8+ @@ -779,7 +802,7 @@ const makeReport = (context, commentNode) => { return report; }; -/* eslint-disable jsdoc/no-undefined-types -- Need to build this in; see https://www.typescriptlang.org/docs/handbook/utility-types.html */ +/* eslint-disable jsdoc/no-undefined-types -- canonical still using an older version where not defined */ /** * @typedef {ReturnType} Utils @@ -791,7 +814,7 @@ const makeReport = (context, commentNode) => { * indent: string, * jsdoc: object, * jsdocNode: object, - * node: object | null, + * node: Node | null, * report: ReturnType, * settings: Settings, * utils: Utils, @@ -799,7 +822,7 @@ const makeReport = (context, commentNode) => { * ) => any } JsdocVisitor */ -/* eslint-enable jsdoc/no-undefined-types -- Need to build this in */ +/* eslint-enable jsdoc/no-undefined-types -- canonical still using an older version where not defined */ const iterate = (info, indent, jsdoc, ruleConfig, context, lines, jsdocNode, node, settings, sourceCode, iterator, state, iteratingAll) => { @@ -842,22 +865,49 @@ const iterate = (info, indent, jsdoc, ruleConfig, context, lines, jsdocNode, nod const getIndentAndJSDoc = function (lines, jsdocNode) { const sourceLine = lines[jsdocNode.loc.start.line - 1]; const indnt = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column); - const jsdc = (0, _jsdoccomment.parseComment)(jsdocNode, indnt); + const jsdc = (0, _jsdoccomment.parseComment)(jsdocNode, ''); return [indnt, jsdc]; }; +/** + * + * @typedef {{node: Node, state: StateObject}} NonCommentArgs + */ + +/** + * Our internal dynamic set of utilities. + * + * @todo Document + * @typedef {any} Utils + */ + +/** + * @typedef {object} RuleConfig + * @property {EslintRuleMeta} meta ESLint rule meta + * @property {import('./jsdocUtils').DefaultContexts} [contextDefaults] Any default contexts + * @property {true} [contextSelected] Whether to force a `contexts` check + * @property {true} [iterateAllJsdocs] Whether to iterate all JSDoc blocks by default + * regardless of context + * @property {(context, state: StateObject, utils: Utils) => void} [exit] Handler to be executed + * upon exiting iteration of program AST + * @property {(NonCommentArgs) => void} [nonComment] Handler to be executed if rule wishes + * to be supplied nodes without comments + */ + /** * Create an eslint rule that iterates over all JSDocs, regardless of whether * they are attached to a function-like node. * * @param {JsdocVisitor} iterator - * @param {{meta: any}} ruleConfig - * @param contexts - * @param {boolean} additiveContexts + * @param {RuleConfig} ruleConfig The rule's configuration + * @param contexts The `contexts` containing relevant `comment` info. + * @param {boolean} additiveCommentContexts If true, will have a separate + * iteration for each matching comment context. Otherwise, will iterate + * once if there is a single matching comment context. */ -const iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveContexts) => { - const trackedJsdocs = []; +const iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveCommentContexts) => { + const trackedJsdocs = new Set(); let handler; let settings; @@ -875,7 +925,7 @@ const iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveContexts) => { const [indent, jsdoc] = getIndentAndJSDoc(lines, jsdocNode); - if (additiveContexts) { + if (additiveCommentContexts) { for (const [idx, { comment }] of contexts.entries()) { @@ -949,7 +999,7 @@ const iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveContexts) => { const commentNode = (0, _jsdoccomment.getJSDocComment)(sourceCode, node, settings); - if (trackedJsdocs.includes(commentNode)) { + if (trackedJsdocs.has(commentNode)) { return; } @@ -964,14 +1014,14 @@ const iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveContexts) => { return; } - trackedJsdocs.push(commentNode); + trackedJsdocs.add(commentNode); callIterator(context, node, [commentNode], state); }, 'Program:exit'() { const allComments = sourceCode.getAllComments(); const untrackedJSdoc = allComments.filter(node => { - return !trackedJsdocs.includes(node); + return !trackedJsdocs.has(node); }); callIterator(context, null, untrackedJSdoc, state, true); } @@ -987,7 +1037,7 @@ const iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveContexts) => { * they are attached to a function-like node. * * @param {JsdocVisitor} iterator - * @param {{meta: any}} ruleConfig + * @param {RuleConfig} ruleConfig */ @@ -1028,12 +1078,7 @@ const checkFile = (iterator, ruleConfig) => { /** * @param {JsdocVisitor} iterator - * @param {{ - * meta: any, - * contextDefaults?: true | string[], - * contextSelected?: true, - * iterateAllJsdocs?: true, - * }} ruleConfig + * @param {RuleConfig} ruleConfig */ function iterateJsdoc(iterator, ruleConfig) { var _ruleConfig$meta; @@ -1076,9 +1121,9 @@ function iterateJsdoc(iterator, ruleConfig) { let contexts; if (ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext) { - var _context$options$3, _contexts, _contexts2; + var _context$options$2, _contexts, _contexts2; - contexts = ruleConfig.matchContext && (_context$options$3 = context.options[0]) !== null && _context$options$3 !== void 0 && _context$options$3.match ? context.options[0].match : _jsdocUtils.default.enforcedContexts(context, ruleConfig.contextDefaults); + contexts = ruleConfig.matchContext && (_context$options$2 = context.options[0]) !== null && _context$options$2 !== void 0 && _context$options$2.match ? context.options[0].match : _jsdocUtils.default.enforcedContexts(context, ruleConfig.contextDefaults); if (contexts) { contexts = contexts.map(obj => { diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/jsdocUtils.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/jsdocUtils.js index 3871ad954959fa..2c80b344ebea90 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/jsdocUtils.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/jsdocUtils.js @@ -640,13 +640,13 @@ const tagMissingRequiredTypeOrNamepath = (tag, tagMap = tagStructure) => { const isNewPromiseExpression = node => { - return node.type === 'NewExpression' && node.callee.type === 'Identifier' && node.callee.name === 'Promise'; + return node && node.type === 'NewExpression' && node.callee.type === 'Identifier' && node.callee.name === 'Promise'; }; const isVoidPromise = node => { var _node$typeParameters, _node$typeParameters$, _node$typeParameters$2; - return ((_node$typeParameters = node.typeParameters) === null || _node$typeParameters === void 0 ? void 0 : (_node$typeParameters$ = _node$typeParameters.params) === null || _node$typeParameters$ === void 0 ? void 0 : (_node$typeParameters$2 = _node$typeParameters$[0]) === null || _node$typeParameters$2 === void 0 ? void 0 : _node$typeParameters$2.type) === 'TSVoidKeyword'; + return (node === null || node === void 0 ? void 0 : (_node$typeParameters = node.typeParameters) === null || _node$typeParameters === void 0 ? void 0 : (_node$typeParameters$ = _node$typeParameters.params) === null || _node$typeParameters$ === void 0 ? void 0 : (_node$typeParameters$2 = _node$typeParameters$[0]) === null || _node$typeParameters$2 === void 0 ? void 0 : _node$typeParameters$2.type) === 'TSVoidKeyword'; }; /** * @callback PromiseFilter @@ -683,7 +683,7 @@ const hasReturnValue = (node, promFilter) => { case 'FunctionDeclaration': case 'ArrowFunctionExpression': { - return node.expression && (!isNewPromiseExpression(node.body) || !isVoidPromise(node === null || node === void 0 ? void 0 : node.body)) || hasReturnValue(node.body, promFilter); + return node.expression && (!isNewPromiseExpression(node.body) || !isVoidPromise(node.body)) || hasReturnValue(node.body, promFilter); } case 'BlockStatement': @@ -1261,16 +1261,20 @@ const isInlineTag = (tag) => { const parseClosureTemplateTag = tag => { return tag.name.split(',').map(type => { - return type.trim(); + return type.trim().replace(/^\[(?.*?)=.*\]$/u, '$'); }); }; +/** + * @typedef {true|string[]} DefaultContexts + */ + /** * Checks user option for `contexts` array, defaulting to * contexts designated by the rule. Returns an array of * ESTree AST types, indicating allowable contexts. * * @param {*} context - * @param {true|string[]} defaultContexts + * @param {DefaultContexts} defaultContexts * @returns {string[]} */ @@ -1360,9 +1364,9 @@ const getTagsByType = (context, mode, tags, tagPreference) => { }; const getIndent = sourceCode => { - var _sourceCode$text$matc, _sourceCode$text$matc2; + var _sourceCode$text$matc; - return ((_sourceCode$text$matc = (_sourceCode$text$matc2 = sourceCode.text.match(/^\n*([ \t]+)/u)) === null || _sourceCode$text$matc2 === void 0 ? void 0 : _sourceCode$text$matc2[1]) !== null && _sourceCode$text$matc !== void 0 ? _sourceCode$text$matc : '') + ' '; + return (((_sourceCode$text$matc = sourceCode.text.match(/^\n*([ \t]+)/u)) === null || _sourceCode$text$matc === void 0 ? void 0 : _sourceCode$text$matc[1]) ?? '') + ' '; }; const isConstructor = node => { @@ -1405,10 +1409,10 @@ const hasAccessorPair = node => { const exemptSpeciaMethods = (jsdoc, node, context, schema) => { const hasSchemaOption = prop => { - var _context$options$0$pr, _context$options$; + var _context$options$; const schemaProperties = schema[0].properties; - return (_context$options$0$pr = (_context$options$ = context.options[0]) === null || _context$options$ === void 0 ? void 0 : _context$options$[prop]) !== null && _context$options$0$pr !== void 0 ? _context$options$0$pr : schemaProperties[prop] && schemaProperties[prop].default; + return ((_context$options$ = context.options[0]) === null || _context$options$ === void 0 ? void 0 : _context$options$[prop]) ?? (schemaProperties[prop] && schemaProperties[prop].default); }; const checkGetters = hasSchemaOption('checkGetters'); diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkParamNames.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkParamNames.js index 1ca13234e9e520..7ff9f1e9dd50df 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkParamNames.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkParamNames.js @@ -19,12 +19,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * @param {boolean} enableFixer * @param {Array} functionParameterNames * @param jsdoc - * @param _jsdocNode * @param utils * @param report * @returns {boolean} */ -const validateParameterNames = (targetTagName, allowExtraTrailingParamDocs, checkDestructured, checkRestProperty, checkTypesRegex, disableExtraPropertyReporting, enableFixer, functionParameterNames, jsdoc, _jsdocNode, utils, report) => { +const validateParameterNames = (targetTagName, allowExtraTrailingParamDocs, checkDestructured, checkRestProperty, checkTypesRegex, disableExtraPropertyReporting, enableFixer, functionParameterNames, jsdoc, utils, report) => { const paramTags = Object.entries(jsdoc.tags).filter(([, tag]) => { return tag.tag === targetTagName; }); @@ -246,7 +245,6 @@ const validateParameterNamesDeep = (targetTagName, _allowExtraTrailingParamDocs, var _default = (0, _iterateJsdoc.default)(({ context, jsdoc, - jsdocNode, report, utils }) => { @@ -270,7 +268,7 @@ var _default = (0, _iterateJsdoc.default)(({ const targetTagName = utils.getPreferredTagName({ tagName: 'param' }); - const isError = validateParameterNames(targetTagName, allowExtraTrailingParamDocs, checkDestructured, checkRestProperty, checkTypesRegex, disableExtraPropertyReporting, enableFixer, functionParameterNames, jsdoc, jsdocNode, utils, report); + const isError = validateParameterNames(targetTagName, allowExtraTrailingParamDocs, checkDestructured, checkRestProperty, checkTypesRegex, disableExtraPropertyReporting, enableFixer, functionParameterNames, jsdoc, utils, report); if (isError || !checkDestructured) { return; diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkPropertyNames.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkPropertyNames.js index e2a318663dea96..a794d0ccda9be6 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkPropertyNames.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkPropertyNames.js @@ -13,11 +13,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * @param {string} targetTagName * @param {boolean} enableFixer * @param jsdoc - * @param jsdocNode * @param utils * @returns {boolean} */ -const validatePropertyNames = (targetTagName, enableFixer, jsdoc, jsdocNode, utils) => { +const validatePropertyNames = (targetTagName, enableFixer, jsdoc, utils) => { const propertyTags = Object.entries(jsdoc.tags).filter(([, tag]) => { return tag.tag === targetTagName; }); @@ -81,7 +80,6 @@ const validatePropertyNamesDeep = (targetTagName, jsdocPropertyNames, jsdoc, rep var _default = (0, _iterateJsdoc.default)(({ context, jsdoc, - jsdocNode, report, utils }) => { @@ -97,7 +95,7 @@ var _default = (0, _iterateJsdoc.default)(({ const targetTagName = utils.getPreferredTagName({ tagName: 'property' }); - const isError = validatePropertyNames(targetTagName, enableFixer, jsdoc, jsdocNode, utils); + const isError = validatePropertyNames(targetTagName, enableFixer, jsdoc, utils); if (isError) { return; diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkTypes.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkTypes.js index 8e6995f77a3b24..40993330677ee1 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkTypes.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkTypes.js @@ -12,8 +12,20 @@ var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const strictNativeTypes = ['undefined', 'null', 'boolean', 'number', 'bigint', 'string', 'symbol', 'object', 'Array', 'Function', 'Date', 'RegExp']; - -const adjustNames = (type, preferred, isGenericMatch, nodeName, node, parentNode) => { +/** + * Adjusts the parent type node `meta` for generic matches (or type node + * `type` for `JsdocTypeAny`) and sets the type node `value`. + * + * @param {string} type The actual type + * @param {string} preferred The preferred type + * @param {boolean} isGenericMatch + * @param {string} typeNodeName + * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node + * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode + * @returns {void} + */ + +const adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => { let ret = preferred; if (isGenericMatch) { @@ -35,7 +47,7 @@ const adjustNames = (type, preferred, isGenericMatch, nodeName, node, parentNode parentNode.meta.brackets = 'angle'; parentNode.meta.dot = false; ret = preferred.slice(0, -2); - } else if (parentNode.meta.brackets === 'square' && (nodeName === '[]' || nodeName === 'Array')) { + } else if (parentNode.meta.brackets === 'square' && (typeNodeName === '[]' || typeNodeName === 'Array')) { parentNode.meta.brackets = 'angle'; parentNode.meta.dot = false; } @@ -48,7 +60,7 @@ const adjustNames = (type, preferred, isGenericMatch, nodeName, node, parentNode node.value = ret.replace(/(?:\.|<>|\.<>|\[\])$/u, ''); // For bare pseudo-types like `<>` if (!ret) { - node.value = nodeName; + node.value = typeNodeName; } }; @@ -64,62 +76,167 @@ var _default = (0, _iterateJsdoc.default)(({ return utils.tagMightHaveTypePosition(tag.tag); }); const { - preferredTypes, + preferredTypes: preferredTypesOriginal, structuredTags, mode } = settings; + const injectObjectPreferredTypes = !('Object' in preferredTypesOriginal || 'object' in preferredTypesOriginal || 'object.<>' in preferredTypesOriginal || 'Object.<>' in preferredTypesOriginal || 'object<>' in preferredTypesOriginal); + const preferredTypes = { ...(injectObjectPreferredTypes ? { + Object: 'object', + 'object.<>': 'Object<>', + 'Object.<>': 'Object<>', + 'object<>': 'Object<>' + } : {}), + ...preferredTypesOriginal + }; const { noDefaults, unifyParentAndChildTypeChecks, exemptTagContexts = [] } = context.options[0] || {}; + /** + * Gets information about the preferred type: whether there is a matching + * preferred type, what the type is, and whether it is a match to a generic. + * + * @param {string} _type Not currently in use + * @param {string} typeNodeName + * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode + * @param {string} property + * @returns {[hasMatchingPreferredType: boolean, typeName: string, isGenericMatch: boolean]} + */ + + const getPreferredTypeInfo = (_type, typeNodeName, parentNode, property) => { + let hasMatchingPreferredType = false; + let isGenericMatch = false; + let typeName = typeNodeName; + const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left'; + + if (unifyParentAndChildTypeChecks || isNameOfGeneric) { + var _parentNode$meta, _parentNode$meta2; + + const brackets = parentNode === null || parentNode === void 0 ? void 0 : (_parentNode$meta = parentNode.meta) === null || _parentNode$meta === void 0 ? void 0 : _parentNode$meta.brackets; + const dot = parentNode === null || parentNode === void 0 ? void 0 : (_parentNode$meta2 = parentNode.meta) === null || _parentNode$meta2 === void 0 ? void 0 : _parentNode$meta2.dot; + + if (brackets === 'angle') { + const checkPostFixes = dot ? ['.', '.<>'] : ['<>']; + isGenericMatch = checkPostFixes.some(checkPostFix => { + if ((preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[typeNodeName + checkPostFix]) !== undefined) { + typeName += checkPostFix; + return true; + } - const getPreferredTypeInfo = (_type, nodeName, parentNode, property) => { - let hasMatchingPreferredType; - let isGenericMatch; - let typeName = nodeName; - - if (Object.keys(preferredTypes).length) { - const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left'; - - if (unifyParentAndChildTypeChecks || isNameOfGeneric) { - var _parentNode$meta, _parentNode$meta2; - - const brackets = parentNode === null || parentNode === void 0 ? void 0 : (_parentNode$meta = parentNode.meta) === null || _parentNode$meta === void 0 ? void 0 : _parentNode$meta.brackets; - const dot = parentNode === null || parentNode === void 0 ? void 0 : (_parentNode$meta2 = parentNode.meta) === null || _parentNode$meta2 === void 0 ? void 0 : _parentNode$meta2.dot; - - if (brackets === 'angle') { - const checkPostFixes = dot ? ['.', '.<>'] : ['<>']; - isGenericMatch = checkPostFixes.some(checkPostFix => { - if ((preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[nodeName + checkPostFix]) !== undefined) { - typeName += checkPostFix; - return true; - } + return false; + }); + } - return false; - }); - } + if (!isGenericMatch && property) { + const checkPostFixes = dot ? ['.', '.<>'] : [brackets === 'angle' ? '<>' : '[]']; + isGenericMatch = checkPostFixes.some(checkPostFix => { + if ((preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[checkPostFix]) !== undefined) { + typeName = checkPostFix; + return true; + } - if (!isGenericMatch && property) { - const checkPostFixes = dot ? ['.', '.<>'] : [brackets === 'angle' ? '<>' : '[]']; - isGenericMatch = checkPostFixes.some(checkPostFix => { - if ((preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[checkPostFix]) !== undefined) { - typeName = checkPostFix; - return true; - } + return false; + }); + } + } - return false; - }); - } + const directNameMatch = (preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[typeNodeName]) !== undefined && !Object.values(preferredTypes).includes(typeNodeName); + const unifiedSyntaxParentMatch = property && directNameMatch && unifyParentAndChildTypeChecks; + isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch; + hasMatchingPreferredType = isGenericMatch || directNameMatch && !property; + return [hasMatchingPreferredType, typeName, isGenericMatch]; + }; + /** + * Iterates strict types to see if any should be added to `invalidTypes` (and + * the the relevant strict type returned as the new preferred type). + * + * @param {string} typeNodeName + * @param {string} preferred + * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode + * @param {string[]} invalidTypes + * @returns {string} The `preferred` type string, optionally changed + */ + + + const checkNativeTypes = (typeNodeName, preferred, parentNode, invalidTypes) => { + let changedPreferred = preferred; + + for (const strictNativeType of strictNativeTypes) { + var _parentNode$elements, _parentNode$left, _parentNode$left2; + + if (strictNativeType === 'object' && ( // This is not set to remap with exact type match (e.g., + // `object: 'Object'`), so can ignore (including if circular) + !(preferredTypes !== null && preferredTypes !== void 0 && preferredTypes[typeNodeName]) || // Although present on `preferredTypes` for remapping, this is a + // parent object without a parent match (and not + // `unifyParentAndChildTypeChecks`) and we don't want + // `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555 + parentNode !== null && parentNode !== void 0 && (_parentNode$elements = parentNode.elements) !== null && _parentNode$elements !== void 0 && _parentNode$elements.length && (parentNode === null || parentNode === void 0 ? void 0 : (_parentNode$left = parentNode.left) === null || _parentNode$left === void 0 ? void 0 : _parentNode$left.type) === 'JsdocTypeName' && (parentNode === null || parentNode === void 0 ? void 0 : (_parentNode$left2 = parentNode.left) === null || _parentNode$left2 === void 0 ? void 0 : _parentNode$left2.value) === 'Object')) { + continue; } - const directNameMatch = (preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[nodeName]) !== undefined && !Object.values(preferredTypes).includes(nodeName); - const unifiedSyntaxParentMatch = property && directNameMatch && unifyParentAndChildTypeChecks; - isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch; - hasMatchingPreferredType = isGenericMatch || directNameMatch && !property; + if (strictNativeType !== typeNodeName && strictNativeType.toLowerCase() === typeNodeName.toLowerCase() && ( // Don't report if user has own map for a strict native type + !preferredTypes || (preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[strictNativeType]) === undefined)) { + changedPreferred = strictNativeType; + invalidTypes.push([typeNodeName, changedPreferred]); + break; + } } - return [hasMatchingPreferredType, typeName, isGenericMatch]; + return changedPreferred; + }; + /** + * Collect invalid type info. + * + * @param {string} type + * @param {string} value + * @param {string} tagName + * @param {string} property + * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node + * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode + * @param {string[]} invalidTypes + * @returns {void} + */ + + + const getInvalidTypes = (type, value, tagName, property, node, parentNode, invalidTypes) => { + let typeNodeName = type === 'JsdocTypeAny' ? '*' : value; + const [hasMatchingPreferredType, typeName, isGenericMatch] = getPreferredTypeInfo(type, typeNodeName, parentNode, property); + let preferred; + let types; + + if (hasMatchingPreferredType) { + const preferredSetting = preferredTypes[typeName]; + typeNodeName = typeName === '[]' ? typeName : typeNodeName; + + if (!preferredSetting) { + invalidTypes.push([typeNodeName]); + } else if (typeof preferredSetting === 'string') { + preferred = preferredSetting; + invalidTypes.push([typeNodeName, preferred]); + } else if (typeof preferredSetting === 'object') { + preferred = preferredSetting === null || preferredSetting === void 0 ? void 0 : preferredSetting.replacement; + invalidTypes.push([typeNodeName, preferred, preferredSetting === null || preferredSetting === void 0 ? void 0 : preferredSetting.message]); + } else { + utils.reportSettings('Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.'); + return; + } + } else if (Object.entries(structuredTags).some(([tag, { + type: typs + }]) => { + types = typs; + return tag === tagName && Array.isArray(types) && !types.includes(typeNodeName); + })) { + invalidTypes.push([typeNodeName, types]); + } else if (!noDefaults && type === 'JsdocTypeName') { + preferred = checkNativeTypes(typeNodeName, preferred, parentNode, invalidTypes); + } // For fixer + + + if (preferred) { + adjustNames(type, preferred, isGenericMatch, typeNodeName, node, parentNode); + } }; for (const jsdocTag of jsdocTagsWithPossibleType) { @@ -132,8 +249,7 @@ var _default = (0, _iterateJsdoc.default)(({ continue; } - const tagName = jsdocTag.tag; // eslint-disable-next-line complexity -- To refactor - + const tagName = jsdocTag.tag; (0, _jsdoccomment.traverse)(typeAst, (node, parentNode, property) => { const { type, @@ -144,64 +260,15 @@ var _default = (0, _iterateJsdoc.default)(({ return; } - let nodeName = type === 'JsdocTypeAny' ? '*' : value; - const [hasMatchingPreferredType, typeName, isGenericMatch] = getPreferredTypeInfo(type, nodeName, parentNode, property); - let preferred; - let types; - - if (hasMatchingPreferredType) { - const preferredSetting = preferredTypes[typeName]; - nodeName = typeName === '[]' ? typeName : nodeName; - - if (!preferredSetting) { - invalidTypes.push([nodeName]); - } else if (typeof preferredSetting === 'string') { - preferred = preferredSetting; - invalidTypes.push([nodeName, preferred]); - } else if (typeof preferredSetting === 'object') { - preferred = preferredSetting === null || preferredSetting === void 0 ? void 0 : preferredSetting.replacement; - invalidTypes.push([nodeName, preferred, preferredSetting === null || preferredSetting === void 0 ? void 0 : preferredSetting.message]); - } else { - utils.reportSettings('Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.'); - return; - } - } else if (Object.entries(structuredTags).some(([tag, { - type: typs - }]) => { - types = typs; - return tag === tagName && Array.isArray(types) && !types.includes(nodeName); - })) { - invalidTypes.push([nodeName, types]); - } else if (!noDefaults && type === 'JsdocTypeName') { - for (const strictNativeType of strictNativeTypes) { - if ( // Todo: Avoid typescript condition if moving to default typescript - strictNativeType === 'object' && mode === 'typescript' && ( // This is not set to remap with exact type match (e.g., - // `object: 'Object'`), so can ignore (including if circular) - !(preferredTypes !== null && preferredTypes !== void 0 && preferredTypes[nodeName]) || // Although present on `preferredTypes` for remapping, this is a - // parent object without a parent match (and not - // `unifyParentAndChildTypeChecks`) and we don't want - // `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555 - parentNode !== null && parentNode !== void 0 && parentNode.elements.length && (parentNode === null || parentNode === void 0 ? void 0 : parentNode.left.type) === 'JsdocTypeName' && (parentNode === null || parentNode === void 0 ? void 0 : parentNode.left.value) === 'Object')) { - continue; - } - - if (strictNativeType !== nodeName && strictNativeType.toLowerCase() === nodeName.toLowerCase() && ( // Don't report if user has own map for a strict native type - !preferredTypes || (preferredTypes === null || preferredTypes === void 0 ? void 0 : preferredTypes[strictNativeType]) === undefined)) { - preferred = strictNativeType; - invalidTypes.push([nodeName, preferred]); - break; - } - } - } // For fixer - - - if (preferred) { - adjustNames(type, preferred, isGenericMatch, nodeName, node, parentNode); - } + getInvalidTypes(type, value, tagName, property, node, parentNode, invalidTypes); }); if (invalidTypes.length) { const fixedType = (0, _jsdoccomment.stringify)(typeAst); + /** + * @param {any} fixer The ESLint fixer + * @returns {string} + */ const fix = fixer => { return fixer.replaceText(jsdocNode, sourceCode.getText(jsdocNode).replace(`{${jsdocTag.type}}`, `{${fixedType}}`)); diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkValues.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkValues.js index b323550c9d9a61..34dcd8c6cca149 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkValues.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/checkValues.js @@ -69,20 +69,33 @@ var _default = (0, _iterateJsdoc.default)(({ }); utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => { const licenseRegex = utils.getRegexFromString(licensePattern, 'g'); - const match = utils.getTagDescription(jsdocParameter).match(licenseRegex); - const license = match && match[1] || match[0]; + const matches = utils.getTagDescription(jsdocParameter).matchAll(licenseRegex); + let positiveMatch = false; - if (!license.trim()) { - report(`Missing JSDoc @${targetTagName} value.`, null, jsdocParameter); - } else if (allowedLicenses) { - if (allowedLicenses !== true && !allowedLicenses.includes(license)) { - report(`Invalid JSDoc @${targetTagName}: "${license}"; expected one of ${allowedLicenses.join(', ')}.`, null, jsdocParameter); + for (const match of matches) { + const license = match[1] || match[0]; + + if (license) { + positiveMatch = true; } - } else { - try { - (0, _spdxExpressionParse.default)(license); - } catch { - report(`Invalid JSDoc @${targetTagName}: "${license}"; expected SPDX expression: https://spdx.org/licenses/.`, null, jsdocParameter); + + if (!license.trim()) { + // Avoid reporting again as empty match + if (positiveMatch) { + return; + } + + report(`Missing JSDoc @${targetTagName} value.`, null, jsdocParameter); + } else if (allowedLicenses) { + if (allowedLicenses !== true && !allowedLicenses.includes(license)) { + report(`Invalid JSDoc @${targetTagName}: "${license}"; expected one of ${allowedLicenses.join(', ')}.`, null, jsdocParameter); + } + } else { + try { + (0, _spdxExpressionParse.default)(license); + } catch { + report(`Invalid JSDoc @${targetTagName}: "${license}"; expected SPDX expression: https://spdx.org/licenses/.`, null, jsdocParameter); + } } } }); diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/matchDescription.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/matchDescription.js index 0659b3486acf1a..d7e934efcf7ce6 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/matchDescription.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/matchDescription.js @@ -11,7 +11,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de // If supporting Node >= 10, we could loosen the default to this for the // initial letter: \\p{Upper} -const matchDescriptionDefault = '^[A-Z`\\d_][\\s\\S]*[.?!`]\\s*$'; +const matchDescriptionDefault = '^\n?([A-Z`\\d_][\\s\\S]*[.?!`]\\s*)?$'; const stringOrDefault = (value, userDefault) => { return typeof value === 'string' ? value : userDefault || matchDescriptionDefault; diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/noMissingSyntax.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/noMissingSyntax.js index e4f23ff3a0e253..8e135899dc062c 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/noMissingSyntax.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/noMissingSyntax.js @@ -35,10 +35,9 @@ var _default = (0, _iterateJsdoc.default)(({ info: { comment }, + sourceCode, state }) => { - var _foundContext$context; - if (!context.options[0]) { // Handle error later return; @@ -48,9 +47,13 @@ var _default = (0, _iterateJsdoc.default)(({ contexts } = context.options[0]; const foundContext = contexts.find(cntxt => { - return typeof cntxt === 'string' ? _esquery.default.matches(node, _esquery.default.parse(cntxt)) : (!cntxt.context || cntxt.context === 'any' || _esquery.default.matches(node, _esquery.default.parse(cntxt.context))) && comment === cntxt.comment; + return typeof cntxt === 'string' ? _esquery.default.matches(node, _esquery.default.parse(cntxt), null, { + visitorKeys: sourceCode.visitorKeys + }) : (!cntxt.context || cntxt.context === 'any' || _esquery.default.matches(node, _esquery.default.parse(cntxt.context), null, { + visitorKeys: sourceCode.visitorKeys + })) && comment === cntxt.comment; }); - const contextStr = typeof foundContext === 'object' ? (_foundContext$context = foundContext.context) !== null && _foundContext$context !== void 0 ? _foundContext$context : 'any' : foundContext; + const contextStr = typeof foundContext === 'object' ? foundContext.context ?? 'any' : foundContext; setDefaults(state); incrementSelector(state, contextStr, comment); }, { @@ -79,20 +82,14 @@ var _default = (0, _iterateJsdoc.default)(({ } = context.options[0]; // Report when MISSING contexts.some(cntxt => { - var _cntxt$context, _cntxt$comment, _cntxt$minimum; - - const contextStr = typeof cntxt === 'object' ? (_cntxt$context = cntxt.context) !== null && _cntxt$context !== void 0 ? _cntxt$context : 'any' : cntxt; - const comment = (_cntxt$comment = cntxt === null || cntxt === void 0 ? void 0 : cntxt.comment) !== null && _cntxt$comment !== void 0 ? _cntxt$comment : ''; + const contextStr = typeof cntxt === 'object' ? cntxt.context ?? 'any' : cntxt; + const comment = (cntxt === null || cntxt === void 0 ? void 0 : cntxt.comment) ?? ''; const contextKey = contextStr === 'any' ? undefined : contextStr; - if ((!state.selectorMap[contextKey] || !state.selectorMap[contextKey][comment] || state.selectorMap[contextKey][comment] < ((_cntxt$minimum = cntxt === null || cntxt === void 0 ? void 0 : cntxt.minimum) !== null && _cntxt$minimum !== void 0 ? _cntxt$minimum : 1)) && (contextStr !== 'any' || Object.values(state.selectorMap).every(cmmnt => { - var _cntxt$minimum2; - - return !cmmnt[comment] || cmmnt[comment] < ((_cntxt$minimum2 = cntxt === null || cntxt === void 0 ? void 0 : cntxt.minimum) !== null && _cntxt$minimum2 !== void 0 ? _cntxt$minimum2 : 1); + if ((!state.selectorMap[contextKey] || !state.selectorMap[contextKey][comment] || state.selectorMap[contextKey][comment] < ((cntxt === null || cntxt === void 0 ? void 0 : cntxt.minimum) ?? 1)) && (contextStr !== 'any' || Object.values(state.selectorMap).every(cmmnt => { + return !cmmnt[comment] || cmmnt[comment] < ((cntxt === null || cntxt === void 0 ? void 0 : cntxt.minimum) ?? 1); }))) { - var _cntxt$message; - - const message = (_cntxt$message = cntxt === null || cntxt === void 0 ? void 0 : cntxt.message) !== null && _cntxt$message !== void 0 ? _cntxt$message : 'Syntax is required: {{context}}' + (comment ? ' with {{comment}}' : ''); + const message = (cntxt === null || cntxt === void 0 ? void 0 : cntxt.message) ?? 'Syntax is required: {{context}}' + (comment ? ' with {{comment}}' : ''); context.report({ data: { comment, diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/noRestrictedSyntax.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/noRestrictedSyntax.js index 05b604f9d5d23f..6234c3d7d86ce9 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/noRestrictedSyntax.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/noRestrictedSyntax.js @@ -17,10 +17,9 @@ var _default = (0, _iterateJsdoc.default)(({ info: { comment }, + sourceCode, report }) => { - var _foundContext$context, _foundContext$message; - if (!context.options.length) { report('Rule `no-restricted-syntax` is missing a `context` option.'); return; @@ -30,7 +29,11 @@ var _default = (0, _iterateJsdoc.default)(({ contexts } = context.options[0]; const foundContext = contexts.find(cntxt => { - return typeof cntxt === 'string' ? _esquery.default.matches(node, _esquery.default.parse(cntxt)) : (!cntxt.context || cntxt.context === 'any' || _esquery.default.matches(node, _esquery.default.parse(cntxt.context))) && comment === cntxt.comment; + return typeof cntxt === 'string' ? _esquery.default.matches(node, _esquery.default.parse(cntxt), null, { + visitorKeys: sourceCode.visitorKeys + }) : (!cntxt.context || cntxt.context === 'any' || _esquery.default.matches(node, _esquery.default.parse(cntxt.context), null, { + visitorKeys: sourceCode.visitorKeys + })) && comment === cntxt.comment; }); // We are not on the *particular* matching context/comment, so don't assume // we need reporting @@ -38,9 +41,10 @@ var _default = (0, _iterateJsdoc.default)(({ return; } - const contextStr = typeof foundContext === 'object' ? (_foundContext$context = foundContext.context) !== null && _foundContext$context !== void 0 ? _foundContext$context : 'any' : foundContext; - const message = (_foundContext$message = foundContext === null || foundContext === void 0 ? void 0 : foundContext.message) !== null && _foundContext$message !== void 0 ? _foundContext$message : 'Syntax is restricted: {{context}}.'; + const contextStr = typeof foundContext === 'object' ? foundContext.context ?? 'any' : foundContext; + const message = (foundContext === null || foundContext === void 0 ? void 0 : foundContext.message) ?? 'Syntax is restricted: {{context}}' + (comment ? ' with {{comment}}' : ''); report(message, null, null, { + comment, context: contextStr }); }, { diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/noUndefinedTypes.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/noUndefinedTypes.js index 4395ab683c7945..653a7e49096b5c 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/noUndefinedTypes.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/noUndefinedTypes.js @@ -17,7 +17,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } -const extraTypes = ['null', 'undefined', 'void', 'string', 'boolean', 'object', 'function', 'symbol', 'number', 'bigint', 'NaN', 'Infinity', 'any', '*', 'never', 'unknown', 'const', 'this', 'true', 'false', 'Array', 'Object', 'RegExp', 'Date', 'Function']; +const extraTypes = ['null', 'undefined', 'void', 'string', 'boolean', 'object', 'function', 'symbol', 'number', 'bigint', 'NaN', 'Infinity', 'any', '*', 'never', 'unknown', 'const', 'this', 'true', 'false', 'Array', 'Object', 'RegExp', 'Date', 'Function']; // https://www.typescriptlang.org/docs/handbook/utility-types.html + +const typescriptGlobals = ['Partial', 'Required', 'Readonly', 'Record', 'Pick', 'Omit', 'Exclude', 'Extract', 'NonNullable', 'Parameters', 'ConstructorParameters', 'ReturnType', 'InstanceType', 'ThisParameterType', 'OmitThisParameter', 'ThisType', 'Uppercase', 'Lowercase', 'Capitalize', 'Uncapitalize']; const stripPseudoTypes = str => { return str && str.replace(/(?:\.|<>|\.<>|\[\])$/u, ''); @@ -31,7 +33,7 @@ var _default = (0, _iterateJsdoc.default)(({ sourceCode, utils }) => { - var _globalScope$childSco; + var _globalScope$childSco, _globalScope$childSco2; const { scopeManager @@ -71,7 +73,7 @@ var _default = (0, _iterateJsdoc.default)(({ } const typedefDeclarations = context.getAllComments().filter(comment => { - return comment.value.startsWith('*'); + return /^\*\s/u.test(comment.value); }).map(commentNode => { return (0, _iterateJsdoc.parseComment)(commentNode, ''); }).flatMap(doc => { @@ -116,7 +118,7 @@ var _default = (0, _iterateJsdoc.default)(({ }); // In modules, including Node, there is a global scope at top with the // Program scope inside - const cjsOrESMScope = ((_globalScope$childSco = globalScope.childScopes[0]) === null || _globalScope$childSco === void 0 ? void 0 : _globalScope$childSco.block.type) === 'Program'; + const cjsOrESMScope = ((_globalScope$childSco = globalScope.childScopes[0]) === null || _globalScope$childSco === void 0 ? void 0 : (_globalScope$childSco2 = _globalScope$childSco.block) === null || _globalScope$childSco2 === void 0 ? void 0 : _globalScope$childSco2.type) === 'Program'; const allDefinedTypes = new Set(globalScope.variables.map(({ name }) => { @@ -130,7 +132,7 @@ var _default = (0, _iterateJsdoc.default)(({ name }) => { return name; - }) : []).concat(extraTypes).concat(typedefDeclarations).concat(definedTypes).concat(definedPreferredTypes).concat(settings.mode === 'jsdoc' ? [] : closureGenericTypes)); + }) : []).concat(extraTypes).concat(typedefDeclarations).concat(definedTypes).concat(definedPreferredTypes).concat(settings.mode === 'jsdoc' ? [] : [...(settings.mode === 'typescript' ? typescriptGlobals : []), ...closureGenericTypes])); const jsdocTagsWithPossibleType = utils.filterTags(({ tag }) => { diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireDescriptionCompleteSentence.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireDescriptionCompleteSentence.js index 5f72084c9b84ec..543db351f6a0c6 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireDescriptionCompleteSentence.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireDescriptionCompleteSentence.js @@ -7,8 +7,6 @@ exports.default = void 0; var _escapeStringRegexp = _interopRequireDefault(require("escape-string-regexp")); -var _mainUmd = require("regextras/dist/main-umd"); - var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -26,11 +24,8 @@ const extractSentences = (text, abbreviationsRegex) => { const txt = text // Remove all {} tags. .replace(/\{[\s\S]*?\}\s*/gu, '') // Remove custom abbreviations .replace(abbreviationsRegex, ''); - const sentenceEndGrouping = /([.?!])(?:\s+|$)/u; // eslint-disable-next-line unicorn/no-array-method-this-argument - - const puncts = new _mainUmd.RegExtras(sentenceEndGrouping).map(txt, punct => { - return punct; - }); + const sentenceEndGrouping = /([.?!])(?:\s+|$)/ug; + const puncts = txt.matchAll(sentenceEndGrouping); return txt.split(/[.?!](?:\s+|$)/u) // Re-add the dot. .map((sentence, idx) => { return /^\s*$/u.test(sentence) ? sentence : `${sentence}${puncts[idx] || ''}`; @@ -63,7 +58,7 @@ const capitalize = str => { }; const validateDescription = (description, reportOrig, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd) => { - if (!description) { + if (!description || /^\n+$/u.test(description)) { return false; } diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireExample.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireExample.js index 29ad49b2b87d3c..859d7106aac231 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireExample.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireExample.js @@ -20,6 +20,7 @@ var _default = (0, _iterateJsdoc.default)(({ } const { + enableFixer = true, exemptNoArguments = false } = context.options[0] || {}; const targetTagName = 'example'; @@ -35,7 +36,9 @@ var _default = (0, _iterateJsdoc.default)(({ } utils.reportJSDoc(`Missing JSDoc @${targetTagName} declaration.`, null, () => { - utils.addTag(targetTagName); + if (enableFixer) { + utils.addTag(targetTagName); + } }); return; } @@ -89,6 +92,10 @@ var _default = (0, _iterateJsdoc.default)(({ }, type: 'array' }, + enableFixer: { + default: true, + type: 'boolean' + }, exemptedBy: { items: { type: 'string' diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireJsdoc.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireJsdoc.js index b8eafd9965015c..1b4fb15fbe28f0 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireJsdoc.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireJsdoc.js @@ -52,6 +52,9 @@ const OPTIONS_SCHEMA = { }, inlineCommentBlock: { type: 'boolean' + }, + minLineCount: { + type: 'integer' } }, type: 'object' @@ -75,6 +78,9 @@ const OPTIONS_SCHEMA = { default: '', type: 'string' }, + minLineCount: { + type: 'integer' + }, publicOnly: { oneOf: [{ default: false, @@ -150,7 +156,8 @@ const getOptions = context => { exemptEmptyConstructors = true, exemptEmptyFunctions = false, enableFixer = true, - fixerMessage = '' + fixerMessage = '', + minLineCount = undefined } = context.options[0] || {}; return { contexts, @@ -158,6 +165,7 @@ const getOptions = context => { exemptEmptyConstructors, exemptEmptyFunctions, fixerMessage, + minLineCount, publicOnly: (baseObj => { if (!publicOnly) { return false; @@ -201,10 +209,40 @@ var _default = { exemptEmptyFunctions, exemptEmptyConstructors, enableFixer, - fixerMessage + fixerMessage, + minLineCount } = getOptions(context); const checkJsDoc = (info, handler, node) => { + if ( // Optimize + minLineCount !== undefined || contexts.some(({ + minLineCount: count + }) => { + return count !== undefined; + })) { + const underMinLine = count => { + var _sourceCode$getText$m; + + return count !== undefined && count > (((_sourceCode$getText$m = sourceCode.getText(node).match(/\n/gu)) === null || _sourceCode$getText$m === void 0 ? void 0 : _sourceCode$getText$m.length) ?? 0) + 1; + }; + + if (underMinLine(minLineCount)) { + return; + } + + const { + minLineCount: contextMinLineCount + } = contexts.find(({ + context: ctxt + }) => { + return ctxt === (info.selector || node.type); + }) || {}; + + if (underMinLine(contextMinLineCount)) { + return; + } + } + const jsDocNode = (0, _jsdoccomment.getJSDocComment)(sourceCode, node, settings); if (jsDocNode) { @@ -257,8 +295,14 @@ var _default = { }; const report = () => { + const { + start + } = node.loc; const loc = { - end: node.loc.start + 1, + end: { + column: 0, + line: start.line + 1 + }, start: node.loc.start }; context.report({ @@ -270,13 +314,11 @@ var _default = { }; if (publicOnly) { - var _publicOnly$ancestors, _publicOnly$esm, _publicOnly$cjs, _publicOnly$window; - const opt = { - ancestorsOnly: Boolean((_publicOnly$ancestors = publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.ancestorsOnly) !== null && _publicOnly$ancestors !== void 0 ? _publicOnly$ancestors : false), - esm: Boolean((_publicOnly$esm = publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.esm) !== null && _publicOnly$esm !== void 0 ? _publicOnly$esm : true), - initModuleExports: Boolean((_publicOnly$cjs = publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.cjs) !== null && _publicOnly$cjs !== void 0 ? _publicOnly$cjs : true), - initWindow: Boolean((_publicOnly$window = publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.window) !== null && _publicOnly$window !== void 0 ? _publicOnly$window : false) + ancestorsOnly: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.ancestorsOnly) ?? false), + esm: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.esm) ?? true), + initModuleExports: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.cjs) ?? true), + initWindow: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.window) ?? false) }; const exported = _exportParser.default.isUncommentedExport(node, sourceCode, opt, settings); @@ -340,13 +382,6 @@ var _default = { }, FunctionExpression(node) { - if (hasOption('MethodDefinition') && node.parent.type === 'MethodDefinition') { - checkJsDoc({ - isFunctionContext: true - }, null, node); - return; - } - if (!hasOption('FunctionExpression')) { return; } @@ -356,6 +391,17 @@ var _default = { isFunctionContext: true }, null, node); } + }, + + MethodDefinition(node) { + if (!hasOption('MethodDefinition')) { + return; + } + + checkJsDoc({ + isFunctionContext: true, + selector: 'MethodDefinition' + }, null, node.value); } }; diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireParam.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireParam.js index c95b8a40ac8f67..43bfccc7c75ad5 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireParam.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/rules/requireParam.js @@ -313,7 +313,7 @@ var _default = (0, _iterateJsdoc.default)(({ postType: type ? ' ' : '', start: jsdoc.source[sourceIndex].tokens.start, tag: `@${preferredTagName}`, - type: type !== null && type !== void 0 ? type : '' + type: type ?? '' } }; jsdoc.tags.splice(tagIndex, spliceCount, { @@ -321,7 +321,7 @@ var _default = (0, _iterateJsdoc.default)(({ newAdd: true, source: [tokens], tag: preferredTagName, - type: type !== null && type !== void 0 ? type : '' + type: type ?? '' }); const firstNumber = jsdoc.source[0].number; jsdoc.source.splice(sourceIndex, spliceCount, tokens); diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/tagNames.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/tagNames.js index a02e0b73d1003a..3df17caf976592 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/tagNames.js +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/tagNames.js @@ -84,6 +84,8 @@ const jsdocTags = { ...jsdocTagsUndocumented, }; exports.jsdocTags = jsdocTags; const typeScriptTags = { ...jsdocTags, + // https://www.typescriptlang.org/tsconfig/#stripInternal + internal: [], // `@template` is also in TypeScript per: // https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html#supported-jsdoc template: [] @@ -108,6 +110,7 @@ const undocumentedClosureTags = { const { /* eslint-disable no-unused-vars */ inheritdoc, + internal, // Will be inverted to prefer `return` returns, diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/package.json b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/package.json index 0c7c33d457a142..2e75cf6e801d0f 100644 --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/package.json +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/package.json @@ -5,49 +5,50 @@ "url": "http://gajus.com" }, "dependencies": { - "@es-joy/jsdoccomment": "~0.20.1", - "comment-parser": "1.3.0", - "debug": "^4.3.3", + "@es-joy/jsdoccomment": "~0.31.0", + "comment-parser": "1.3.1", + "debug": "^4.3.4", "escape-string-regexp": "^4.0.0", "esquery": "^1.4.0", - "regextras": "^0.8.0", - "semver": "^7.3.5", + "semver": "^7.3.7", "spdx-expression-parse": "^3.0.1" }, "description": "JSDoc linting rules for ESLint.", "devDependencies": { - "@babel/cli": "^7.17.6", - "@babel/core": "^7.17.5", + "@babel/cli": "^7.17.10", + "@babel/core": "^7.18.0", "@babel/eslint-parser": "^7.17.0", - "@babel/node": "^7.16.8", + "@babel/node": "^7.17.10", "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-transform-flow-strip-types": "^7.16.7", - "@babel/preset-env": "^7.16.11", - "@babel/register": "^7.17.0", + "@babel/plugin-transform-flow-strip-types": "^7.17.12", + "@babel/preset-env": "^7.18.0", + "@babel/register": "^7.17.7", + "@es-joy/jsdoc-eslint-parser": "^0.17.0", "@hkdobrev/run-if-changed": "^0.3.1", - "@typescript-eslint/parser": "^5.14.0", + "@typescript-eslint/parser": "^5.26.0", "babel-plugin-add-module-exports": "^1.0.4", "babel-plugin-istanbul": "^6.1.1", "camelcase": "^6.3.0", "chai": "^4.3.6", "cross-env": "^7.0.3", "decamelize": "^5.0.1", - "eslint": "^8.10.0", - "eslint-config-canonical": "^33.0.1", + "eslint": "^8.16.0", + "eslint-config-canonical": "~33.0.1", "gitdown": "^3.1.5", - "glob": "^7.2.0", - "husky": "^7.0.4", - "lint-staged": "^12.3.5", + "glob": "^8.0.3", + "husky": "^8.0.1", + "jsdoc-type-pratt-parser": "^3.1.0", + "lint-staged": "^12.4.1", "lodash.defaultsdeep": "^4.6.1", - "mocha": "^9.2.1", + "mocha": "^10.0.0", "nyc": "^15.1.0", "open-editor": "^3.0.0", "rimraf": "^3.0.2", "semantic-release": "^19.0.2", - "typescript": "^4.6.2" + "typescript": "^4.6.4" }, "engines": { - "node": "^12 || ^14 || ^16 || ^17" + "node": "^14 || ^16 || ^17 || ^18" }, "keywords": [ "eslint", @@ -116,5 +117,5 @@ "test-cov": "cross-env TIMING=1 nyc --reporter text npm run test-no-cov", "test-index": "npm run test-no-cov -- test/rules/index.js" }, - "version": "38.0.2" + "version": "39.3.3" } 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 d1a50208729e5d..b22b87c328df4e 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 @@ -1,6 +1,6 @@ { "name": "eslint-plugin-markdown", - "version": "2.2.1", + "version": "3.0.0", "description": "An ESLint plugin to lint JavaScript in Markdown code fences.", "license": "MIT", "author": { @@ -38,10 +38,10 @@ ], "devDependencies": { "chai": "^4.2.0", - "eslint": "^6.8.0", - "eslint-config-eslint": "^6.0.0", - "eslint-plugin-jsdoc": "^15.9.5", - "eslint-plugin-node": "^9.0.0", + "eslint": "^7.32.0", + "eslint-config-eslint": "^7.0.0", + "eslint-plugin-jsdoc": "^37.0.3", + "eslint-plugin-node": "^11.1.0", "eslint-release": "^3.1.2", "mocha": "^6.2.2", "nyc": "^14.1.1" @@ -50,9 +50,9 @@ "mdast-util-from-markdown": "^0.8.5" }, "peerDependencies": { - "eslint": ">=6.0.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "engines": { - "node": "^8.10.0 || ^10.12.0 || >= 12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } } diff --git a/tools/node_modules/eslint/node_modules/espree/dist/espree.cjs b/tools/node_modules/eslint/node_modules/espree/dist/espree.cjs index 7495def051ccdd..f2fe26cc7f2380 100644 --- a/tools/node_modules/eslint/node_modules/espree/dist/espree.cjs +++ b/tools/node_modules/eslint/node_modules/espree/dist/espree.cjs @@ -739,7 +739,7 @@ var espree = () => Parser => { }; }; -const version$1 = "9.3.1"; +const version$1 = "9.3.2"; /** * @fileoverview Main Espree file that converts Acorn into Esprima output. diff --git a/tools/node_modules/eslint/node_modules/espree/lib/version.js b/tools/node_modules/eslint/node_modules/espree/lib/version.js index 5a01b1367fb052..cabc77e07b4edd 100644 --- a/tools/node_modules/eslint/node_modules/espree/lib/version.js +++ b/tools/node_modules/eslint/node_modules/espree/lib/version.js @@ -1,3 +1,3 @@ -const version = "9.3.1"; +const version = "9.3.2"; export default version; diff --git a/tools/node_modules/eslint/node_modules/espree/package.json b/tools/node_modules/eslint/node_modules/espree/package.json index 419d2f63518284..7445ef35c06f8c 100644 --- a/tools/node_modules/eslint/node_modules/espree/package.json +++ b/tools/node_modules/eslint/node_modules/espree/package.json @@ -16,7 +16,7 @@ ], "./package.json": "./package.json" }, - "version": "9.3.1", + "version": "9.3.2", "files": [ "lib", "dist/espree.cjs", @@ -31,8 +31,8 @@ }, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "devDependencies": { @@ -40,22 +40,17 @@ "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^11.2.0", "c8": "^7.11.0", - "chai": "^4.3.4", - "eslint": "^7.22.0", + "chai": "^4.3.6", + "eslint": "^8.13.0", "eslint-config-eslint": "^7.0.0", - "eslint-plugin-jsdoc": "^32.2.0", + "eslint-plugin-jsdoc": "^39.2.4", "eslint-plugin-node": "^11.1.0", "eslint-release": "^3.2.0", - "esprima": "latest", "esprima-fb": "^8001.2001.0-dev-harmony-fb", - "json-diff": "^0.5.4", - "mocha": "^8.3.1", + "mocha": "^9.2.2", "npm-run-all": "^4.1.5", - "regenerate": "^1.4.0", "rollup": "^2.41.2", - "shelljs": "^0.3.0", - "shelljs-nodecli": "^0.1.1", - "unicode-6.3.0": "^0.7.5" + "shelljs": "^0.3.0" }, "keywords": [ "ast", @@ -70,7 +65,7 @@ "unit:esm": "c8 mocha --color --reporter progress --timeout 30000 'tests/lib/**/*.js'", "unit:cjs": "mocha --color --reporter progress --timeout 30000 tests/lib/commonjs.cjs", "test": "npm-run-all -p unit lint", - "lint": "eslint \"*.?(c)js\" lib/ tests/lib/", + "lint": "eslint .", "fixlint": "npm run lint -- --fix", "build": "rollup -c rollup.config.js", "update-version": "node tools/update-version.js", diff --git a/tools/node_modules/eslint/node_modules/flatted/esm.js b/tools/node_modules/eslint/node_modules/flatted/esm.js new file mode 100644 index 00000000000000..c20ae09e976e55 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/flatted/esm.js @@ -0,0 +1,2 @@ +/*! (c) 2020 Andrea Giammarchi */ +const{parse:t,stringify:e}=JSON,{keys:n}=Object,o=String,c={},r=(t,e)=>e,s=t=>t instanceof o?o(t):t,l=(t,e)=>"string"==typeof e?new o(e):e,a=(t,e,r,s)=>{const l=[];for(let a=n(r),{length:f}=a,i=0;i{const c=o(e.push(n)-1);return t.set(n,c),c},i=(e,n)=>{const o=t(e,l).map(s),c=o[0],f=n||r,i="object"==typeof c&&c?a(o,new Set,c,f):c;return f.call({"":i},"",i)},p=(t,n,o)=>{const c=n&&"object"==typeof n?(t,e)=>""===t||-1t(p(e)),g=t=>i(e(t));export{g as fromJSON,i as parse,p as stringify,u as toJSON}; diff --git a/tools/node_modules/eslint/node_modules/flatted/index.js b/tools/node_modules/eslint/node_modules/flatted/index.js index 9cc91070180dcf..afb193dc4227db 100644 --- a/tools/node_modules/eslint/node_modules/flatted/index.js +++ b/tools/node_modules/eslint/node_modules/flatted/index.js @@ -1,7 +1,15 @@ self.Flatted = (function (exports) { 'use strict'; - + function _typeof(obj) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, _typeof(obj); + } /*! (c) 2020 Andrea Giammarchi */ var $parse = JSON.parse, @@ -23,7 +31,7 @@ self.Flatted = (function (exports) { }; var Primitives = function Primitives(_, value) { - return typeof(value) === primitive ? new Primitive(value) : value; + return _typeof(value) === primitive ? new Primitive(value) : value; }; var revive = function revive(input, parsed, output, $) { @@ -36,7 +44,7 @@ self.Flatted = (function (exports) { if (value instanceof Primitive) { var tmp = input[value]; - if (typeof(tmp) === object && !parsed.has(tmp)) { + if (_typeof(tmp) === object && !parsed.has(tmp)) { parsed.add(tmp); output[k] = ignore; lazy.push({ @@ -67,13 +75,13 @@ self.Flatted = (function (exports) { var input = $parse(text, Primitives).map(primitives); var value = input[0]; var $ = reviver || noop; - var tmp = typeof(value) === object && value ? revive(input, new Set(), value, $) : value; + var tmp = _typeof(value) === object && value ? revive(input, new Set(), value, $) : value; return $.call({ '': tmp }, '', tmp); }; var stringify = function stringify(value, replacer, space) { - var $ = replacer && typeof(replacer) === object ? function (k, v) { + var $ = replacer && _typeof(replacer) === object ? function (k, v) { return k === '' || -1 < replacer.indexOf(k) ? v : void 0; } : replacer || noop; var known = new Map(); @@ -99,7 +107,7 @@ self.Flatted = (function (exports) { var after = $.call(this, key, value); - switch (typeof(after)) { + switch (_typeof(after)) { case object: if (after === null) return after; diff --git a/tools/node_modules/eslint/node_modules/flatted/min.js b/tools/node_modules/eslint/node_modules/flatted/min.js index a822de22434f24..b7a8efc10d3e0e 100644 --- a/tools/node_modules/eslint/node_modules/flatted/min.js +++ b/tools/node_modules/eslint/node_modules/flatted/min.js @@ -1,2 +1,2 @@ -self.Flatted=function(n){"use strict"; -/*! (c) 2020 Andrea Giammarchi */var t=JSON.parse,r=JSON.stringify,e=Object.keys,u=String,a="string",f={},i="object",o=function(n,t){return t},c=function(n){return n instanceof u?u(n):n},l=function(n,t){return typeof t===a?new u(t):t},s=function n(t,r,a,o){for(var c=[],l=e(a),s=l.length,p=0;p ./coverage/lcov.info" @@ -34,28 +35,29 @@ }, "homepage": "https://github.com/WebReflection/flatted#readme", "devDependencies": { - "@babel/core": "^7.16.0", - "@babel/preset-env": "^7.16.0", - "@ungap/structured-clone": "^0.3.4", + "@babel/core": "^7.18.5", + "@babel/preset-env": "^7.18.2", + "@ungap/structured-clone": "^1.0.1", "ascjs": "^5.0.1", - "c8": "^7.10.0", + "c8": "^7.11.3", "circular-json": "^0.5.9", "circular-json-es6": "^2.0.2", - "drop-babel-typeof": "^1.0.3", - "jsan": "^3.1.13", - "rollup": "^2.59.0", + "jsan": "^3.1.14", + "rollup": "^2.75.7", "rollup-plugin-babel": "^4.4.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-terser": "^7.0.2", - "terser": "^5.9.0" + "terser": "^5.14.1" }, "module": "./esm/index.js", "type": "module", "exports": { ".": { + "types": "./types.d.ts", "import": "./esm/index.js", "default": "./cjs/index.js" }, + "./esm": "./esm.js", "./package.json": "./package.json" } } diff --git a/tools/node_modules/eslint/node_modules/glob/common.js b/tools/node_modules/eslint/node_modules/glob/common.js index 8e363b6c1f16a1..424c46e1dab1be 100644 --- a/tools/node_modules/eslint/node_modules/glob/common.js +++ b/tools/node_modules/eslint/node_modules/glob/common.js @@ -110,6 +110,8 @@ function setopts (self, pattern, options) { // Note that they are not supported in Glob itself anyway. options.nonegate = true options.nocomment = true + // always treat \ in patterns as escapes, not path separators + options.allowWindowsEscape = false self.minimatch = new Minimatch(pattern, options) self.options = self.minimatch.options diff --git a/tools/node_modules/eslint/node_modules/glob/glob.js b/tools/node_modules/eslint/node_modules/glob/glob.js index afcf82752c390a..37a4d7e60775a3 100644 --- a/tools/node_modules/eslint/node_modules/glob/glob.js +++ b/tools/node_modules/eslint/node_modules/glob/glob.js @@ -342,7 +342,10 @@ Glob.prototype._process = function (pattern, index, inGlobStar, cb) { var read if (prefix === null) read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + else if (isAbsolute(prefix) || + isAbsolute(pattern.map(function (p) { + return typeof p === 'string' ? p : '[*]' + }).join('/'))) { if (!prefix || !isAbsolute(prefix)) prefix = '/' + prefix read = prefix diff --git a/tools/node_modules/eslint/node_modules/glob/package.json b/tools/node_modules/eslint/node_modules/glob/package.json index cc1a57a896e9eb..5940b649b7e65a 100644 --- a/tools/node_modules/eslint/node_modules/glob/package.json +++ b/tools/node_modules/eslint/node_modules/glob/package.json @@ -2,7 +2,10 @@ "author": "Isaac Z. Schlueter (http://blog.izs.me/)", "name": "glob", "description": "a little globber", - "version": "7.2.0", + "version": "7.2.3", + "publishConfig": { + "tag": "v7-legacy" + }, "repository": { "type": "git", "url": "git://github.com/isaacs/node-glob.git" @@ -20,7 +23,7 @@ "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, diff --git a/tools/node_modules/eslint/node_modules/glob/sync.js b/tools/node_modules/eslint/node_modules/glob/sync.js index 4f46f90559a0ca..2c4f480192d28d 100644 --- a/tools/node_modules/eslint/node_modules/glob/sync.js +++ b/tools/node_modules/eslint/node_modules/glob/sync.js @@ -48,7 +48,7 @@ function GlobSync (pattern, options) { } GlobSync.prototype._finish = function () { - assert(this instanceof GlobSync) + assert.ok(this instanceof GlobSync) if (this.realpath) { var self = this this.matches.forEach(function (matchset, index) { @@ -72,7 +72,7 @@ GlobSync.prototype._finish = function () { GlobSync.prototype._process = function (pattern, index, inGlobStar) { - assert(this instanceof GlobSync) + assert.ok(this instanceof GlobSync) // Get the first [n] parts of pattern that are all strings. var n = 0 @@ -109,7 +109,10 @@ GlobSync.prototype._process = function (pattern, index, inGlobStar) { var read if (prefix === null) read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + else if (isAbsolute(prefix) || + isAbsolute(pattern.map(function (p) { + return typeof p === 'string' ? p : '[*]' + }).join('/'))) { if (!prefix || !isAbsolute(prefix)) prefix = '/' + prefix read = prefix diff --git a/tools/node_modules/eslint/node_modules/globals/globals.json b/tools/node_modules/eslint/node_modules/globals/globals.json index 051a31e0489948..f0990806f8b8bf 100644 --- a/tools/node_modules/eslint/node_modules/globals/globals.json +++ b/tools/node_modules/eslint/node_modules/globals/globals.json @@ -646,6 +646,7 @@ "MediaKeyStatusMap": false, "MediaKeySystemAccess": false, "MediaList": false, + "MediaMetadata": false, "MediaQueryList": false, "MediaQueryListEvent": false, "MediaRecorder": false, @@ -854,6 +855,7 @@ "registerProcessor": false, "RemotePlayback": false, "removeEventListener": false, + "reportError": false, "Request": false, "requestAnimationFrame": false, "requestIdleCallback": false, @@ -916,6 +918,7 @@ "Storage": false, "StorageEvent": false, "StorageManager": false, + "structuredClone": false, "styleMedia": false, "StyleSheet": false, "StyleSheetList": false, @@ -1137,6 +1140,7 @@ "Promise": false, "queueMicrotask": false, "removeEventListener": false, + "reportError": false, "Request": false, "Response": false, "self": true, @@ -1168,6 +1172,7 @@ "Event": false, "EventTarget": false, "exports": true, + "fetch": false, "global": false, "Intl": false, "MessageChannel": false, @@ -1200,6 +1205,7 @@ "DOMException": false, "Event": false, "EventTarget": false, + "fetch": false, "global": false, "Intl": false, "MessageChannel": false, @@ -1701,6 +1707,7 @@ "DOMException": false, "Event": false, "EventTarget": false, + "fetch": false, "Intl": false, "MessageChannel": false, "MessageEvent": false, @@ -1709,6 +1716,7 @@ "queueMicrotask": false, "setInterval": false, "setTimeout": false, + "structuredClone": false, "TextDecoder": false, "TextEncoder": false, "URL": false, diff --git a/tools/node_modules/eslint/node_modules/globals/package.json b/tools/node_modules/eslint/node_modules/globals/package.json index 4a1af774ee9b94..e8723cc9973c55 100644 --- a/tools/node_modules/eslint/node_modules/globals/package.json +++ b/tools/node_modules/eslint/node_modules/globals/package.json @@ -1,6 +1,6 @@ { "name": "globals", - "version": "13.12.1", + "version": "13.16.0", "description": "Global identifiers from different JavaScript environments", "license": "MIT", "repository": "sindresorhus/globals", diff --git a/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/dist/index.js b/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/dist/index.js index d4e8e47e1202f9..eb07b24d34085f 100644 --- a/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/dist/index.js +++ b/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/dist/index.js @@ -213,51 +213,39 @@ identifierRule, stringValueRule ]; + const breakingWhitespaceRegex = /^\s*\n\s*/; class Lexer { - constructor() { + constructor(text, previous, current, next) { this.text = ''; - } - lex(text) { this.text = text; - this.current = undefined; - this.next = undefined; - this.advance(); - } - token() { - if (this.current === undefined) { - throw new Error('Lexer not lexing'); - } - return this.current; - } - peek() { - if (this.next === undefined) { - this.next = this.read(); - } - return this.next; - } - last() { - return this.previous; - } - advance() { - this.previous = this.current; - if (this.next !== undefined) { - this.current = this.next; - this.next = undefined; - return; - } - this.current = this.read(); - } - read() { - const text = this.text.trim(); + this.previous = previous; + this.current = current; + this.next = next; + } + static create(text) { + const current = this.read(text); + text = current.text; + const next = this.read(text); + text = next.text; + return new Lexer(text, undefined, current.token, next.token); + } + static read(text, startOfLine = false) { + startOfLine = startOfLine || breakingWhitespaceRegex.test(text); + text = text.trim(); for (const rule of rules) { - const token = rule(text); - if (token !== null) { - this.text = text.slice(token.text.length); - return token; + const partial = rule(text); + if (partial !== null) { + const token = Object.assign(Object.assign({}, partial), { startOfLine }); + text = text.slice(token.text.length); + return { text, token }; } } throw new Error('Unexpected Token ' + text); } + advance() { + const next = Lexer.read(this.text); + return new Lexer(next.text, this.current, this.next, next.token); + } } /** @@ -338,19 +326,26 @@ })(Precedence || (Precedence = {})); class Parser { - constructor({ grammar, lexer, parent }) { - this.lexer = lexer !== null && lexer !== void 0 ? lexer : new Lexer(); - this.parent = parent; + constructor(grammar, textOrLexer, parent) { this.grammar = grammar; + if (typeof textOrLexer === 'string') { + this._lexer = Lexer.create(textOrLexer); + } + else { + this._lexer = textOrLexer; + } + this.parent = parent; + } + get lexer() { + return this._lexer; } /** * Parses a given string and throws an error if the parse ended before the end of the string. */ - parseText(text) { - this.lexer.lex(text); + parse() { const result = this.parseType(Precedence.ALL); - if (this.lexer.token().type !== 'EOF') { - throw new EarlyEndOfParseError(this.lexer.token()); + if (this.lexer.current.type !== 'EOF') { + throw new EarlyEndOfParseError(this.lexer.current); } return result; } @@ -360,26 +355,14 @@ parseType(precedence) { return assertRootResult(this.parseIntermediateType(precedence)); } - /** - * Tries to parse the current state with all parslets in the grammar and returns the first non null result. - */ - tryParslets(precedence, left) { - for (const parslet of this.grammar) { - const result = parslet(this, precedence, left); - if (result !== null) { - return result; - } - } - return null; - } /** * The main parsing function. First it tries to parse the current state in the prefix step, and then it continues * to parse the state in the infix step. */ parseIntermediateType(precedence) { - const result = this.tryParslets(precedence, null); + const result = this.tryParslets(null, precedence); if (result === null) { - throw new NoParsletFoundError(this.lexer.token()); + throw new NoParsletFoundError(this.lexer.current); } return this.parseInfixIntermediateType(result, precedence); } @@ -387,13 +370,25 @@ * In the infix parsing step the parser continues to parse the current state with all parslets until none returns * a result. */ - parseInfixIntermediateType(result, precedence) { - let newResult = this.tryParslets(precedence, result); - while (newResult !== null) { - result = newResult; - newResult = this.tryParslets(precedence, result); + parseInfixIntermediateType(left, precedence) { + let result = this.tryParslets(left, precedence); + while (result !== null) { + left = result; + result = this.tryParslets(left, precedence); } - return result; + return left; + } + /** + * Tries to parse the current state with all parslets in the grammar and returns the first non null result. + */ + tryParslets(left, precedence) { + for (const parslet of this.grammar) { + const result = parslet(this, precedence, left); + if (result !== null) { + return result; + } + } + return null; } /** * If the given type equals the current type of the {@link Lexer} advance the lexer. Return true if the lexer was @@ -403,17 +398,16 @@ if (!Array.isArray(types)) { types = [types]; } - if (!types.includes(this.lexer.token().type)) { + if (types.includes(this.lexer.current.type)) { + this._lexer = this.lexer.advance(); + return true; + } + else { return false; } - this.lexer.advance(); - return true; } - getLexer() { - return this.lexer; - } - getParent() { - return this.parent; + acceptLexerState(parser) { + this._lexer = parser.lexer; } } @@ -422,8 +416,8 @@ } const nullableParslet = (parser, precedence, left) => { - const type = parser.getLexer().token().type; - const next = parser.getLexer().peek().type; + const type = parser.lexer.current.type; + const next = parser.lexer.next.type; const accept = ((left == null) && type === '?' && !isQuestionMarkUnknownType(next)) || ((left != null) && type === '?'); if (!accept) { @@ -452,9 +446,9 @@ function composeParslet(options) { const parslet = (parser, curPrecedence, left) => { - const type = parser.getLexer().token().type; - const next = parser.getLexer().peek().type; - if (left == null) { + const type = parser.lexer.current.type; + const next = parser.lexer.next.type; + if (left === null) { if ('parsePrefix' in options) { if (options.accept(type, next)) { return options.parsePrefix(parser); @@ -507,7 +501,7 @@ name: 'numberParslet', accept: type => type === 'Number', parsePrefix: parser => { - const value = parseFloat(parser.getLexer().token().text); + const value = parseFloat(parser.lexer.current.text); parser.consume('Number'); return { type: 'JsdocTypeNumber', @@ -572,7 +566,7 @@ type: 'JsdocTypeUnknown' }; } - throw new Error('Unacceptable token: ' + parser.getLexer().token().text); + throw new Error('Unacceptable token: ' + parser.lexer.current.text); } }); @@ -700,8 +694,8 @@ if ((left == null) || precedence >= Precedence.NAME_PATH) { return null; } - const type = parser.getLexer().token().type; - const next = parser.getLexer().peek().type; + const type = parser.lexer.current.type; + const next = parser.lexer.next.type; const accept = (type === '.' && next !== '<') || (type === '[' && left.type === 'JsdocTypeName') || (allowJsdocNamePaths && (type === '~' || type === '#')); @@ -725,12 +719,10 @@ pathType = 'instance'; } const pathParser = pathGrammar !== null - ? new Parser({ - grammar: pathGrammar, - lexer: parser.getLexer() - }) + ? new Parser(pathGrammar, parser.lexer, parser) : parser; const parsed = pathParser.parseIntermediateType(Precedence.NAME_PATH); + parser.acceptLexerState(pathParser); let right; switch (parsed.type) { case 'JsdocTypeName': @@ -772,7 +764,7 @@ throw new UnexpectedTypeError(parsed, 'Expecting \'JsdocTypeName\', \'JsdocTypeNumber\', \'JsdocStringValue\' or \'JsdocTypeSpecialNamePath\''); } if (brackets && !parser.consume(']')) { - const token = parser.getLexer().token(); + const token = parser.lexer.current; throw new Error(`Unterminated square brackets. Next token is '${token.type}' ` + `with text '${token.text}'`); } @@ -790,7 +782,7 @@ name: 'nameParslet', accept: type => type === 'Identifier' || type === 'this' || type === 'new' || allowedAdditionalTokens.includes(type), parsePrefix: parser => { - const { type, text } = parser.getLexer().token(); + const { type, text } = parser.lexer.current; parser.consume(type); return { type: 'JsdocTypeName', @@ -804,7 +796,7 @@ name: 'stringValueParslet', accept: type => type === 'StringValue', parsePrefix: parser => { - const text = parser.getLexer().token().text; + const text = parser.lexer.current.text; parser.consume('StringValue'); return { type: 'JsdocTypeStringValue', @@ -821,7 +813,7 @@ name: 'specialNamePathParslet', accept: type => allowedTypes.includes(type), parsePrefix: parser => { - const type = parser.getLexer().token().type; + const type = parser.lexer.current.type; parser.consume(type); if (!parser.consume(':')) { return { @@ -829,12 +821,8 @@ value: type }; } - const moduleParser = new Parser({ - grammar: pathGrammar, - lexer: parser.getLexer() - }); let result; - let token = parser.getLexer().token(); + let token = parser.lexer.current; if (parser.consume('StringValue')) { result = { type: 'JsdocTypeSpecialNamePath', @@ -850,7 +838,7 @@ const allowed = ['Identifier', '@', '/']; while (allowed.some(type => parser.consume(type))) { value += token.text; - token = parser.getLexer().token(); + token = parser.lexer.current; } result = { type: 'JsdocTypeSpecialNamePath', @@ -861,7 +849,10 @@ } }; } - return assertRootResult(moduleParser.parseInfixIntermediateType(result, Precedence.ALL)); + const moduleParser = new Parser(pathGrammar, parser.lexer, parser); + const moduleResult = moduleParser.parseInfixIntermediateType(result, Precedence.ALL); + parser.acceptLexerState(moduleParser); + return assertRootResult(moduleResult); } }); } @@ -905,13 +896,14 @@ } return parameters; } - function createFunctionParslet({ allowNamedParameters, allowNoReturnType, allowWithoutParenthesis }) { + function createFunctionParslet({ allowNamedParameters, allowNoReturnType, allowWithoutParenthesis, allowNewAsFunctionKeyword }) { return composeParslet({ name: 'functionParslet', - accept: type => type === 'function', + accept: (type, next) => type === 'function' || (allowNewAsFunctionKeyword && type === 'new' && next === '('), parsePrefix: parser => { + const newKeyword = parser.consume('new'); parser.consume('function'); - const hasParenthesis = parser.getLexer().token().type === '('; + const hasParenthesis = parser.lexer.current.type === '('; if (!hasParenthesis) { if (!allowWithoutParenthesis) { throw new Error('function is missing parameter list'); @@ -921,16 +913,22 @@ value: 'function' }; } - const result = { + let result = { type: 'JsdocTypeFunction', parameters: [], arrow: false, + constructor: newKeyword, parenthesis: hasParenthesis }; const value = parser.parseIntermediateType(Precedence.FUNCTION); if (allowNamedParameters === undefined) { result.parameters = getUnnamedParameters(value); } + else if (newKeyword && value.type === 'JsdocTypeFunction' && value.arrow) { + result = value; + result.constructor = true; + return result; + } else { result.parameters = getParameters(value); for (const p of result.parameters) { @@ -1056,7 +1054,7 @@ } }); - function createKeyValueParslet({ allowKeyTypes, allowReadonly, allowOptional }) { + function createKeyValueParslet({ allowKeyTypes, allowReadonly, allowOptional, allowVariadic }) { return composeParslet({ name: 'keyValueParslet', precedence: Precedence.KEY_VALUE, @@ -1065,6 +1063,7 @@ var _a; let optional = false; let readonlyProperty = false; + let variadic = false; if (allowOptional && left.type === 'JsdocTypeNullable') { optional = true; left = left.element; @@ -1073,20 +1072,28 @@ readonlyProperty = true; left = left.element; } + if (allowVariadic && left.type === 'JsdocTypeVariadic' && left.element !== undefined) { + variadic = true; + left = left.element; + } // object parslet uses a special grammar and for the value we want to switch back to the parent - parser = (_a = parser.getParent()) !== null && _a !== void 0 ? _a : parser; + const parentParser = (_a = parser.parent) !== null && _a !== void 0 ? _a : parser; + parentParser.acceptLexerState(parser); if (left.type === 'JsdocTypeNumber' || left.type === 'JsdocTypeName' || left.type === 'JsdocTypeStringValue') { - parser.consume(':'); + parentParser.consume(':'); let quote; if (left.type === 'JsdocTypeStringValue') { quote = left.meta.quote; } + const right = parentParser.parseType(Precedence.KEY_VALUE); + parser.acceptLexerState(parentParser); return { type: 'JsdocTypeKeyValue', key: left.value.toString(), - right: parser.parseType(Precedence.KEY_VALUE), - optional: optional, + right, + optional, readonly: readonlyProperty, + variadic, meta: { quote, hasLeftSideExpression: false @@ -1097,11 +1104,13 @@ if (!allowKeyTypes) { throw new UnexpectedTypeError(left); } - parser.consume(':'); + parentParser.consume(':'); + const right = parentParser.parseType(Precedence.KEY_VALUE); + parser.acceptLexerState(parentParser); return { type: 'JsdocTypeKeyValue', left: assertRootResult(left), - right: parser.parseType(Precedence.KEY_VALUE), + right: right, meta: { hasLeftSideExpression: true } @@ -1126,14 +1135,11 @@ }; if (!parser.consume('}')) { let separator; - const lexer = parser.getLexer(); - const fieldParser = new Parser({ - grammar: objectFieldGrammar, - lexer: lexer, - parent: parser - }); + const fieldParser = new Parser(objectFieldGrammar, parser.lexer, parser); while (true) { + fieldParser.acceptLexerState(parser); let field = fieldParser.parseIntermediateType(Precedence.OBJECT); + parser.acceptLexerState(fieldParser); if (field === undefined && allowKeyTypes) { field = parser.parseIntermediateType(Precedence.OBJECT); } @@ -1153,6 +1159,7 @@ right: undefined, optional: optional, readonly: false, + variadic: false, meta: { quote, hasLeftSideExpression: false @@ -1165,7 +1172,10 @@ else { throw new UnexpectedTypeError(field); } - if (parser.consume(',')) { + if (parser.lexer.current.startOfLine) { + separator = 'linebreak'; + } + else if (parser.consume(',')) { separator = 'comma'; } else if (parser.consume(';')) { @@ -1174,6 +1184,10 @@ else { break; } + const type = parser.lexer.current.type; + if (type === '}') { + break; + } } result.meta.separator = separator !== null && separator !== void 0 ? separator : 'comma'; // TODO: use undefined here if (!parser.consume('}')) { @@ -1190,7 +1204,8 @@ createFunctionParslet({ allowWithoutParenthesis: true, allowNamedParameters: ['this', 'new'], - allowNoReturnType: true + allowNoReturnType: true, + allowNewAsFunctionKeyword: false }), stringValueParslet, createSpecialNamePathParslet({ @@ -1213,7 +1228,8 @@ createKeyValueParslet({ allowKeyTypes: true, allowOptional: false, - allowReadonly: false + allowReadonly: false, + allowVariadic: false }) ]; const jsdocGrammar = [ @@ -1254,7 +1270,8 @@ createKeyValueParslet({ allowKeyTypes: false, allowOptional: false, - allowReadonly: false + allowReadonly: false, + allowVariadic: false }) ]; const closureGrammar = [ @@ -1270,7 +1287,8 @@ createFunctionParslet({ allowWithoutParenthesis: false, allowNamedParameters: ['this', 'new'], - allowNoReturnType: true + allowNoReturnType: true, + allowNewAsFunctionKeyword: false }), createVariadicParslet({ allowEnclosingBrackets: false, @@ -1291,7 +1309,8 @@ createKeyValueParslet({ allowKeyTypes: false, allowOptional: false, - allowReadonly: false + allowReadonly: false, + allowVariadic: false }), symbolParslet ]; @@ -1393,6 +1412,7 @@ type: 'JsdocTypeFunction', parameters: getParameters(left).map(assertPlainKeyValueOrNameResult), arrow: true, + constructor: false, parenthesis: true, returnType: parser.parseType(Precedence.OBJECT) }; @@ -1445,7 +1465,8 @@ createKeyValueParslet({ allowKeyTypes: false, allowOptional: true, - allowReadonly: true + allowReadonly: true, + allowVariadic: false }) ]; const typescriptGrammar = [ @@ -1461,7 +1482,8 @@ createFunctionParslet({ allowWithoutParenthesis: true, allowNoReturnType: false, - allowNamedParameters: ['this', 'new'] + allowNamedParameters: ['this', 'new', 'args'], + allowNewAsFunctionKeyword: true }), createTupleParslet({ allowQuestionMark: false @@ -1486,30 +1508,27 @@ createKeyValueParslet({ allowKeyTypes: false, allowOptional: true, - allowReadonly: true + allowReadonly: true, + allowVariadic: true }), intersectionParslet, predicateParslet ]; - const parsers = { - jsdoc: new Parser({ - grammar: jsdocGrammar - }), - closure: new Parser({ - grammar: closureGrammar - }), - typescript: new Parser({ - grammar: typescriptGrammar - }) - }; /** * This function parses the given expression in the given mode and produces a {@link RootResult}. * @param expression * @param mode */ function parse(expression, mode) { - return parsers[mode].parseText(expression); + switch (mode) { + case 'closure': + return (new Parser(closureGrammar, expression)).parse(); + case 'jsdoc': + return (new Parser(jsdocGrammar, expression)).parse(); + case 'typescript': + return (new Parser(typescriptGrammar, expression)).parse(); + } } /** * This function tries to parse the given expression in multiple modes and returns the first successful @@ -1522,7 +1541,7 @@ let error; for (const mode of modes) { try { - return parsers[mode].parseText(expression); + return parse(expression, mode); } catch (e) { error = e; @@ -1583,7 +1602,7 @@ JsdocTypeKeyof: (result, transform) => `keyof ${transform(result.element)}`, JsdocTypeFunction: (result, transform) => { if (!result.arrow) { - let stringified = 'function'; + let stringified = result.constructor ? 'new' : 'function'; if (!result.parenthesis) { return stringified; } @@ -1597,7 +1616,11 @@ if (result.returnType === undefined) { throw new Error('Arrow function needs a return type.'); } - return `(${result.parameters.map(transform).join(', ')}) => ${transform(result.returnType)}`; + let stringified = `(${result.parameters.map(transform).join(', ')}) => ${transform(result.returnType)}`; + if (result.constructor) { + stringified = 'new ' + stringified; + } + return stringified; } }, JsdocTypeName: result => result.value, @@ -1647,6 +1670,9 @@ if (result.optional) { text += '?'; } + if (result.variadic) { + text = '...' + text; + } if (result.right === undefined) { return text; } @@ -2230,6 +2256,7 @@ right: result.right === undefined ? undefined : transform(result.right), optional: result.optional, readonly: result.readonly, + variadic: result.variadic, meta: result.meta }; } @@ -2272,6 +2299,7 @@ type: 'JsdocTypeFunction', arrow: result.arrow, parameters: result.parameters.map(transform), + constructor: result.constructor, parenthesis: result.parenthesis }; if (result.returnType !== undefined) { diff --git a/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/package.json b/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/package.json index fb04594a43aced..6bab2e1197b8aa 100644 --- a/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/package.json +++ b/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/package.json @@ -1,6 +1,6 @@ { "name": "jsdoc-type-pratt-parser", - "version": "2.2.4", + "version": "3.1.0", "description": "", "main": "dist/index.js", "types": "dist/src/index.d.ts", diff --git a/tools/node_modules/eslint/node_modules/json5/lib/cli.js b/tools/node_modules/eslint/node_modules/json5/lib/cli.js index de852f15e47bc2..93cb80921e21ae 100755 --- a/tools/node_modules/eslint/node_modules/json5/lib/cli.js +++ b/tools/node_modules/eslint/node_modules/json5/lib/cli.js @@ -2,37 +2,17 @@ const fs = require('fs') const path = require('path') -const minimist = require('minimist') const pkg = require('../package.json') const JSON5 = require('./') -const argv = minimist(process.argv.slice(2), { - alias: { - 'convert': 'c', - 'space': 's', - 'validate': 'v', - 'out-file': 'o', - 'version': 'V', - 'help': 'h', - }, - boolean: [ - 'convert', - 'validate', - 'version', - 'help', - ], - string: [ - 'space', - 'out-file', - ], -}) +const argv = parseArgs() if (argv.version) { version() } else if (argv.help) { usage() } else { - const inFilename = argv._[0] + const inFilename = argv.defaults[0] let readStream if (inFilename) { @@ -65,7 +45,7 @@ if (argv.version) { // --convert is for backward compatibility with v0.5.1. If // specified with and not --out-file, then a file with // the same name but with a .json extension will be written. - if (argv.convert && inFilename && !argv.o) { + if (argv.convert && inFilename && !argv.outFile) { const parsedFilename = path.parse(inFilename) const outFilename = path.format( Object.assign( @@ -75,8 +55,8 @@ if (argv.version) { ) writeStream = fs.createWriteStream(outFilename) - } else if (argv.o) { - writeStream = fs.createWriteStream(argv.o) + } else if (argv.outFile) { + writeStream = fs.createWriteStream(argv.outFile) } else { writeStream = process.stdout } @@ -90,6 +70,66 @@ if (argv.version) { }) } +function parseArgs () { + let convert + let space + let validate + let outFile + let version + let help + const defaults = [] + + const args = process.argv.slice(2) + for (let i = 0; i < args.length; i++) { + const arg = args[i] + switch (arg) { + case '--convert': + case '-c': + convert = true + break + + case '--space': + case '-s': + space = args[++i] + break + + case '--validate': + case '-v': + validate = true + break + + case '--out-file': + case '-o': + outFile = args[++i] + break + + case '--version': + case '-V': + version = true + break + + case '--help': + case '-h': + help = true + break + + default: + defaults.push(arg) + break + } + } + + return { + convert, + space, + validate, + outFile, + version, + help, + defaults, + } +} + function version () { console.log(pkg.version) } diff --git a/tools/node_modules/eslint/node_modules/json5/package.json b/tools/node_modules/eslint/node_modules/json5/package.json index 31c43e5f999962..ec68d1c587204a 100644 --- a/tools/node_modules/eslint/node_modules/json5/package.json +++ b/tools/node_modules/eslint/node_modules/json5/package.json @@ -1,6 +1,6 @@ { "name": "json5", - "version": "2.2.0", + "version": "2.2.1", "description": "JSON for humans.", "main": "lib/index.js", "module": "dist/index.mjs", @@ -48,9 +48,6 @@ "url": "https://github.com/json5/json5/issues" }, "homepage": "http://json5.org/", - "dependencies": { - "minimist": "^1.2.5" - }, "devDependencies": { "core-js": "^2.6.5", "eslint": "^5.15.3", diff --git a/tools/node_modules/eslint/node_modules/minimist/index.js b/tools/node_modules/eslint/node_modules/minimist/index.js deleted file mode 100644 index d2afe5e4d4056e..00000000000000 --- a/tools/node_modules/eslint/node_modules/minimist/index.js +++ /dev/null @@ -1,245 +0,0 @@ -module.exports = function (args, opts) { - if (!opts) opts = {}; - - var flags = { bools : {}, strings : {}, unknownFn: null }; - - if (typeof opts['unknown'] === 'function') { - flags.unknownFn = opts['unknown']; - } - - if (typeof opts['boolean'] === 'boolean' && opts['boolean']) { - flags.allBools = true; - } else { - [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { - flags.bools[key] = true; - }); - } - - var aliases = {}; - Object.keys(opts.alias || {}).forEach(function (key) { - aliases[key] = [].concat(opts.alias[key]); - aliases[key].forEach(function (x) { - aliases[x] = [key].concat(aliases[key].filter(function (y) { - return x !== y; - })); - }); - }); - - [].concat(opts.string).filter(Boolean).forEach(function (key) { - flags.strings[key] = true; - if (aliases[key]) { - flags.strings[aliases[key]] = true; - } - }); - - var defaults = opts['default'] || {}; - - var argv = { _ : [] }; - Object.keys(flags.bools).forEach(function (key) { - setArg(key, defaults[key] === undefined ? false : defaults[key]); - }); - - var notFlags = []; - - if (args.indexOf('--') !== -1) { - notFlags = args.slice(args.indexOf('--')+1); - args = args.slice(0, args.indexOf('--')); - } - - function argDefined(key, arg) { - return (flags.allBools && /^--[^=]+$/.test(arg)) || - flags.strings[key] || flags.bools[key] || aliases[key]; - } - - function setArg (key, val, arg) { - if (arg && flags.unknownFn && !argDefined(key, arg)) { - if (flags.unknownFn(arg) === false) return; - } - - var value = !flags.strings[key] && isNumber(val) - ? Number(val) : val - ; - setKey(argv, key.split('.'), value); - - (aliases[key] || []).forEach(function (x) { - setKey(argv, x.split('.'), value); - }); - } - - function setKey (obj, keys, value) { - var o = obj; - for (var i = 0; i < keys.length-1; i++) { - var key = keys[i]; - if (key === '__proto__') return; - if (o[key] === undefined) o[key] = {}; - if (o[key] === Object.prototype || o[key] === Number.prototype - || o[key] === String.prototype) o[key] = {}; - if (o[key] === Array.prototype) o[key] = []; - o = o[key]; - } - - var key = keys[keys.length - 1]; - if (key === '__proto__') return; - if (o === Object.prototype || o === Number.prototype - || o === String.prototype) o = {}; - if (o === Array.prototype) o = []; - if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') { - o[key] = value; - } - else if (Array.isArray(o[key])) { - o[key].push(value); - } - else { - o[key] = [ o[key], value ]; - } - } - - function aliasIsBoolean(key) { - return aliases[key].some(function (x) { - return flags.bools[x]; - }); - } - - for (var i = 0; i < args.length; i++) { - var arg = args[i]; - - if (/^--.+=/.test(arg)) { - // Using [\s\S] instead of . because js doesn't support the - // 'dotall' regex modifier. See: - // http://stackoverflow.com/a/1068308/13216 - var m = arg.match(/^--([^=]+)=([\s\S]*)$/); - var key = m[1]; - var value = m[2]; - if (flags.bools[key]) { - value = value !== 'false'; - } - setArg(key, value, arg); - } - else if (/^--no-.+/.test(arg)) { - var key = arg.match(/^--no-(.+)/)[1]; - setArg(key, false, arg); - } - else if (/^--.+/.test(arg)) { - var key = arg.match(/^--(.+)/)[1]; - var next = args[i + 1]; - if (next !== undefined && !/^-/.test(next) - && !flags.bools[key] - && !flags.allBools - && (aliases[key] ? !aliasIsBoolean(key) : true)) { - setArg(key, next, arg); - i++; - } - else if (/^(true|false)$/.test(next)) { - setArg(key, next === 'true', arg); - i++; - } - else { - setArg(key, flags.strings[key] ? '' : true, arg); - } - } - else if (/^-[^-]+/.test(arg)) { - var letters = arg.slice(1,-1).split(''); - - var broken = false; - for (var j = 0; j < letters.length; j++) { - var next = arg.slice(j+2); - - if (next === '-') { - setArg(letters[j], next, arg) - continue; - } - - if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { - setArg(letters[j], next.split('=')[1], arg); - broken = true; - break; - } - - if (/[A-Za-z]/.test(letters[j]) - && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { - setArg(letters[j], next, arg); - broken = true; - break; - } - - if (letters[j+1] && letters[j+1].match(/\W/)) { - setArg(letters[j], arg.slice(j+2), arg); - broken = true; - break; - } - else { - setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg); - } - } - - var key = arg.slice(-1)[0]; - if (!broken && key !== '-') { - if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) - && !flags.bools[key] - && (aliases[key] ? !aliasIsBoolean(key) : true)) { - setArg(key, args[i+1], arg); - i++; - } - else if (args[i+1] && /^(true|false)$/.test(args[i+1])) { - setArg(key, args[i+1] === 'true', arg); - i++; - } - else { - setArg(key, flags.strings[key] ? '' : true, arg); - } - } - } - else { - if (!flags.unknownFn || flags.unknownFn(arg) !== false) { - argv._.push( - flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) - ); - } - if (opts.stopEarly) { - argv._.push.apply(argv._, args.slice(i + 1)); - break; - } - } - } - - Object.keys(defaults).forEach(function (key) { - if (!hasKey(argv, key.split('.'))) { - setKey(argv, key.split('.'), defaults[key]); - - (aliases[key] || []).forEach(function (x) { - setKey(argv, x.split('.'), defaults[key]); - }); - } - }); - - if (opts['--']) { - argv['--'] = new Array(); - notFlags.forEach(function(key) { - argv['--'].push(key); - }); - } - else { - notFlags.forEach(function(key) { - argv._.push(key); - }); - } - - return argv; -}; - -function hasKey (obj, keys) { - var o = obj; - keys.slice(0,-1).forEach(function (key) { - o = (o[key] || {}); - }); - - var key = keys[keys.length - 1]; - return key in o; -} - -function isNumber (x) { - if (typeof x === 'number') return true; - if (/^0x[0-9a-f]+$/i.test(x)) return true; - return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); -} - diff --git a/tools/node_modules/eslint/node_modules/minimist/package.json b/tools/node_modules/eslint/node_modules/minimist/package.json deleted file mode 100644 index c091d41375f9aa..00000000000000 --- a/tools/node_modules/eslint/node_modules/minimist/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "minimist", - "version": "1.2.5", - "description": "parse argument options", - "main": "index.js", - "devDependencies": { - "covert": "^1.0.0", - "tap": "~0.4.0", - "tape": "^3.5.0" - }, - "scripts": { - "test": "tap test/*.js", - "coverage": "covert test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/6..latest", - "ff/5", - "firefox/latest", - "chrome/10", - "chrome/latest", - "safari/5.1", - "safari/latest", - "opera/12" - ] - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/minimist.git" - }, - "homepage": "https://github.com/substack/minimist", - "keywords": [ - "argv", - "getopt", - "parser", - "optimist" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT" -} diff --git a/tools/node_modules/eslint/node_modules/minimist/readme.markdown b/tools/node_modules/eslint/node_modules/minimist/readme.markdown deleted file mode 100644 index 5fd97ab11ee9d8..00000000000000 --- a/tools/node_modules/eslint/node_modules/minimist/readme.markdown +++ /dev/null @@ -1,95 +0,0 @@ -# minimist - -parse argument options - -This module is the guts of optimist's argument parser without all the -fanciful decoration. - -# example - -``` js -var argv = require('minimist')(process.argv.slice(2)); -console.log(argv); -``` - -``` -$ node example/parse.js -a beep -b boop -{ _: [], a: 'beep', b: 'boop' } -``` - -``` -$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz -{ _: [ 'foo', 'bar', 'baz' ], - x: 3, - y: 4, - n: 5, - a: true, - b: true, - c: true, - beep: 'boop' } -``` - -# security - -Previous versions had a prototype pollution bug that could cause privilege -escalation in some circumstances when handling untrusted user input. - -Please use version 1.2.3 or later: https://snyk.io/vuln/SNYK-JS-MINIMIST-559764 - -# methods - -``` js -var parseArgs = require('minimist') -``` - -## var argv = parseArgs(args, opts={}) - -Return an argument object `argv` populated with the array arguments from `args`. - -`argv._` contains all the arguments that didn't have an option associated with -them. - -Numeric-looking arguments will be returned as numbers unless `opts.string` or -`opts.boolean` is set for that argument name. - -Any arguments after `'--'` will not be parsed and will end up in `argv._`. - -options can be: - -* `opts.string` - a string or array of strings argument names to always treat as -strings -* `opts.boolean` - a boolean, string or array of strings to always treat as -booleans. if `true` will treat all double hyphenated arguments without equal signs -as boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`) -* `opts.alias` - an object mapping string names to strings or arrays of string -argument names to use as aliases -* `opts.default` - an object mapping string argument names to default values -* `opts.stopEarly` - when true, populate `argv._` with everything after the -first non-option -* `opts['--']` - when true, populate `argv._` with everything before the `--` -and `argv['--']` with everything after the `--`. Here's an example: - - ``` - > require('./')('one two three -- four five --six'.split(' '), { '--': true }) - { _: [ 'one', 'two', 'three' ], - '--': [ 'four', 'five', '--six' ] } - ``` - - Note that with `opts['--']` set, parsing for arguments still stops after the - `--`. - -* `opts.unknown` - a function which is invoked with a command line parameter not -defined in the `opts` configuration object. If the function returns `false`, the -unknown option is not added to `argv`. - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install minimist -``` - -# license - -MIT diff --git a/tools/node_modules/eslint/node_modules/node-releases/data/processed/envs.json b/tools/node_modules/eslint/node_modules/node-releases/data/processed/envs.json index 812935d265ad1f..80b4be3cff9fba 100644 --- a/tools/node_modules/eslint/node_modules/node-releases/data/processed/envs.json +++ b/tools/node_modules/eslint/node_modules/node-releases/data/processed/envs.json @@ -1 +1 @@ -[{"name":"nodejs","version":"0.2.0","date":"2011-08-26","lts":false,"security":false},{"name":"nodejs","version":"0.3.0","date":"2011-08-26","lts":false,"security":false},{"name":"nodejs","version":"0.4.0","date":"2011-08-26","lts":false,"security":false},{"name":"nodejs","version":"0.5.0","date":"2011-08-26","lts":false,"security":false},{"name":"nodejs","version":"0.6.0","date":"2011-11-04","lts":false,"security":false},{"name":"nodejs","version":"0.7.0","date":"2012-01-17","lts":false,"security":false},{"name":"nodejs","version":"0.8.0","date":"2012-06-22","lts":false,"security":false},{"name":"nodejs","version":"0.9.0","date":"2012-07-20","lts":false,"security":false},{"name":"nodejs","version":"0.10.0","date":"2013-03-11","lts":false,"security":false},{"name":"nodejs","version":"0.11.0","date":"2013-03-28","lts":false,"security":false},{"name":"nodejs","version":"0.12.0","date":"2015-02-06","lts":false,"security":false},{"name":"nodejs","version":"4.0.0","date":"2015-09-08","lts":false,"security":false},{"name":"nodejs","version":"4.1.0","date":"2015-09-17","lts":false,"security":false},{"name":"nodejs","version":"4.2.0","date":"2015-10-12","lts":"Argon","security":false},{"name":"nodejs","version":"4.3.0","date":"2016-02-09","lts":"Argon","security":false},{"name":"nodejs","version":"4.4.0","date":"2016-03-08","lts":"Argon","security":false},{"name":"nodejs","version":"4.5.0","date":"2016-08-16","lts":"Argon","security":false},{"name":"nodejs","version":"4.6.0","date":"2016-09-27","lts":"Argon","security":true},{"name":"nodejs","version":"4.7.0","date":"2016-12-06","lts":"Argon","security":false},{"name":"nodejs","version":"4.8.0","date":"2017-02-21","lts":"Argon","security":false},{"name":"nodejs","version":"4.9.0","date":"2018-03-28","lts":"Argon","security":true},{"name":"nodejs","version":"5.0.0","date":"2015-10-29","lts":false,"security":false},{"name":"nodejs","version":"5.1.0","date":"2015-11-17","lts":false,"security":false},{"name":"nodejs","version":"5.2.0","date":"2015-12-09","lts":false,"security":false},{"name":"nodejs","version":"5.3.0","date":"2015-12-15","lts":false,"security":false},{"name":"nodejs","version":"5.4.0","date":"2016-01-06","lts":false,"security":false},{"name":"nodejs","version":"5.5.0","date":"2016-01-21","lts":false,"security":false},{"name":"nodejs","version":"5.6.0","date":"2016-02-09","lts":false,"security":false},{"name":"nodejs","version":"5.7.0","date":"2016-02-23","lts":false,"security":false},{"name":"nodejs","version":"5.8.0","date":"2016-03-09","lts":false,"security":false},{"name":"nodejs","version":"5.9.0","date":"2016-03-16","lts":false,"security":false},{"name":"nodejs","version":"5.10.0","date":"2016-04-01","lts":false,"security":false},{"name":"nodejs","version":"5.11.0","date":"2016-04-21","lts":false,"security":false},{"name":"nodejs","version":"5.12.0","date":"2016-06-23","lts":false,"security":false},{"name":"nodejs","version":"6.0.0","date":"2016-04-26","lts":false,"security":false},{"name":"nodejs","version":"6.1.0","date":"2016-05-05","lts":false,"security":false},{"name":"nodejs","version":"6.2.0","date":"2016-05-17","lts":false,"security":false},{"name":"nodejs","version":"6.3.0","date":"2016-07-06","lts":false,"security":false},{"name":"nodejs","version":"6.4.0","date":"2016-08-12","lts":false,"security":false},{"name":"nodejs","version":"6.5.0","date":"2016-08-26","lts":false,"security":false},{"name":"nodejs","version":"6.6.0","date":"2016-09-14","lts":false,"security":false},{"name":"nodejs","version":"6.7.0","date":"2016-09-27","lts":false,"security":true},{"name":"nodejs","version":"6.8.0","date":"2016-10-12","lts":false,"security":false},{"name":"nodejs","version":"6.9.0","date":"2016-10-18","lts":"Boron","security":false},{"name":"nodejs","version":"6.10.0","date":"2017-02-21","lts":"Boron","security":false},{"name":"nodejs","version":"6.11.0","date":"2017-06-06","lts":"Boron","security":false},{"name":"nodejs","version":"6.12.0","date":"2017-11-06","lts":"Boron","security":false},{"name":"nodejs","version":"6.13.0","date":"2018-02-10","lts":"Boron","security":false},{"name":"nodejs","version":"6.14.0","date":"2018-03-28","lts":"Boron","security":true},{"name":"nodejs","version":"6.15.0","date":"2018-11-27","lts":"Boron","security":true},{"name":"nodejs","version":"6.16.0","date":"2018-12-26","lts":"Boron","security":false},{"name":"nodejs","version":"6.17.0","date":"2019-02-28","lts":"Boron","security":true},{"name":"nodejs","version":"7.0.0","date":"2016-10-25","lts":false,"security":false},{"name":"nodejs","version":"7.1.0","date":"2016-11-08","lts":false,"security":false},{"name":"nodejs","version":"7.2.0","date":"2016-11-22","lts":false,"security":false},{"name":"nodejs","version":"7.3.0","date":"2016-12-20","lts":false,"security":false},{"name":"nodejs","version":"7.4.0","date":"2017-01-04","lts":false,"security":false},{"name":"nodejs","version":"7.5.0","date":"2017-01-31","lts":false,"security":false},{"name":"nodejs","version":"7.6.0","date":"2017-02-21","lts":false,"security":false},{"name":"nodejs","version":"7.7.0","date":"2017-02-28","lts":false,"security":false},{"name":"nodejs","version":"7.8.0","date":"2017-03-29","lts":false,"security":false},{"name":"nodejs","version":"7.9.0","date":"2017-04-11","lts":false,"security":false},{"name":"nodejs","version":"7.10.0","date":"2017-05-02","lts":false,"security":false},{"name":"nodejs","version":"8.0.0","date":"2017-05-30","lts":false,"security":false},{"name":"nodejs","version":"8.1.0","date":"2017-06-08","lts":false,"security":false},{"name":"nodejs","version":"8.2.0","date":"2017-07-19","lts":false,"security":false},{"name":"nodejs","version":"8.3.0","date":"2017-08-08","lts":false,"security":false},{"name":"nodejs","version":"8.4.0","date":"2017-08-15","lts":false,"security":false},{"name":"nodejs","version":"8.5.0","date":"2017-09-12","lts":false,"security":false},{"name":"nodejs","version":"8.6.0","date":"2017-09-26","lts":false,"security":false},{"name":"nodejs","version":"8.7.0","date":"2017-10-11","lts":false,"security":false},{"name":"nodejs","version":"8.8.0","date":"2017-10-24","lts":false,"security":false},{"name":"nodejs","version":"8.9.0","date":"2017-10-31","lts":"Carbon","security":false},{"name":"nodejs","version":"8.10.0","date":"2018-03-06","lts":"Carbon","security":false},{"name":"nodejs","version":"8.11.0","date":"2018-03-28","lts":"Carbon","security":true},{"name":"nodejs","version":"8.12.0","date":"2018-09-10","lts":"Carbon","security":false},{"name":"nodejs","version":"8.13.0","date":"2018-11-20","lts":"Carbon","security":false},{"name":"nodejs","version":"8.14.0","date":"2018-11-27","lts":"Carbon","security":true},{"name":"nodejs","version":"8.15.0","date":"2018-12-26","lts":"Carbon","security":false},{"name":"nodejs","version":"8.16.0","date":"2019-04-16","lts":"Carbon","security":false},{"name":"nodejs","version":"8.17.0","date":"2019-12-17","lts":"Carbon","security":true},{"name":"nodejs","version":"9.0.0","date":"2017-10-31","lts":false,"security":false},{"name":"nodejs","version":"9.1.0","date":"2017-11-07","lts":false,"security":false},{"name":"nodejs","version":"9.2.0","date":"2017-11-14","lts":false,"security":false},{"name":"nodejs","version":"9.3.0","date":"2017-12-12","lts":false,"security":false},{"name":"nodejs","version":"9.4.0","date":"2018-01-10","lts":false,"security":false},{"name":"nodejs","version":"9.5.0","date":"2018-01-31","lts":false,"security":false},{"name":"nodejs","version":"9.6.0","date":"2018-02-21","lts":false,"security":false},{"name":"nodejs","version":"9.7.0","date":"2018-03-01","lts":false,"security":false},{"name":"nodejs","version":"9.8.0","date":"2018-03-07","lts":false,"security":false},{"name":"nodejs","version":"9.9.0","date":"2018-03-21","lts":false,"security":false},{"name":"nodejs","version":"9.10.0","date":"2018-03-28","lts":false,"security":true},{"name":"nodejs","version":"9.11.0","date":"2018-04-04","lts":false,"security":false},{"name":"nodejs","version":"10.0.0","date":"2018-04-24","lts":false,"security":false},{"name":"nodejs","version":"10.1.0","date":"2018-05-08","lts":false,"security":false},{"name":"nodejs","version":"10.2.0","date":"2018-05-23","lts":false,"security":false},{"name":"nodejs","version":"10.3.0","date":"2018-05-29","lts":false,"security":false},{"name":"nodejs","version":"10.4.0","date":"2018-06-06","lts":false,"security":false},{"name":"nodejs","version":"10.5.0","date":"2018-06-20","lts":false,"security":false},{"name":"nodejs","version":"10.6.0","date":"2018-07-04","lts":false,"security":false},{"name":"nodejs","version":"10.7.0","date":"2018-07-18","lts":false,"security":false},{"name":"nodejs","version":"10.8.0","date":"2018-08-01","lts":false,"security":false},{"name":"nodejs","version":"10.9.0","date":"2018-08-15","lts":false,"security":false},{"name":"nodejs","version":"10.10.0","date":"2018-09-06","lts":false,"security":false},{"name":"nodejs","version":"10.11.0","date":"2018-09-19","lts":false,"security":false},{"name":"nodejs","version":"10.12.0","date":"2018-10-10","lts":false,"security":false},{"name":"nodejs","version":"10.13.0","date":"2018-10-30","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.14.0","date":"2018-11-27","lts":"Dubnium","security":true},{"name":"nodejs","version":"10.15.0","date":"2018-12-26","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.16.0","date":"2019-05-28","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.17.0","date":"2019-10-22","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.18.0","date":"2019-12-17","lts":"Dubnium","security":true},{"name":"nodejs","version":"10.19.0","date":"2020-02-05","lts":"Dubnium","security":true},{"name":"nodejs","version":"10.20.0","date":"2020-03-26","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.21.0","date":"2020-06-02","lts":"Dubnium","security":true},{"name":"nodejs","version":"10.22.0","date":"2020-07-21","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.23.0","date":"2020-10-27","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.24.0","date":"2021-02-23","lts":"Dubnium","security":true},{"name":"nodejs","version":"11.0.0","date":"2018-10-23","lts":false,"security":false},{"name":"nodejs","version":"11.1.0","date":"2018-10-30","lts":false,"security":false},{"name":"nodejs","version":"11.2.0","date":"2018-11-15","lts":false,"security":false},{"name":"nodejs","version":"11.3.0","date":"2018-11-27","lts":false,"security":true},{"name":"nodejs","version":"11.4.0","date":"2018-12-07","lts":false,"security":false},{"name":"nodejs","version":"11.5.0","date":"2018-12-18","lts":false,"security":false},{"name":"nodejs","version":"11.6.0","date":"2018-12-26","lts":false,"security":false},{"name":"nodejs","version":"11.7.0","date":"2019-01-17","lts":false,"security":false},{"name":"nodejs","version":"11.8.0","date":"2019-01-24","lts":false,"security":false},{"name":"nodejs","version":"11.9.0","date":"2019-01-30","lts":false,"security":false},{"name":"nodejs","version":"11.10.0","date":"2019-02-14","lts":false,"security":false},{"name":"nodejs","version":"11.11.0","date":"2019-03-05","lts":false,"security":false},{"name":"nodejs","version":"11.12.0","date":"2019-03-14","lts":false,"security":false},{"name":"nodejs","version":"11.13.0","date":"2019-03-28","lts":false,"security":false},{"name":"nodejs","version":"11.14.0","date":"2019-04-10","lts":false,"security":false},{"name":"nodejs","version":"11.15.0","date":"2019-04-30","lts":false,"security":false},{"name":"nodejs","version":"12.0.0","date":"2019-04-23","lts":false,"security":false},{"name":"nodejs","version":"12.1.0","date":"2019-04-29","lts":false,"security":false},{"name":"nodejs","version":"12.2.0","date":"2019-05-07","lts":false,"security":false},{"name":"nodejs","version":"12.3.0","date":"2019-05-21","lts":false,"security":false},{"name":"nodejs","version":"12.4.0","date":"2019-06-04","lts":false,"security":false},{"name":"nodejs","version":"12.5.0","date":"2019-06-26","lts":false,"security":false},{"name":"nodejs","version":"12.6.0","date":"2019-07-03","lts":false,"security":false},{"name":"nodejs","version":"12.7.0","date":"2019-07-23","lts":false,"security":false},{"name":"nodejs","version":"12.8.0","date":"2019-08-06","lts":false,"security":false},{"name":"nodejs","version":"12.9.0","date":"2019-08-20","lts":false,"security":false},{"name":"nodejs","version":"12.10.0","date":"2019-09-04","lts":false,"security":false},{"name":"nodejs","version":"12.11.0","date":"2019-09-25","lts":false,"security":false},{"name":"nodejs","version":"12.12.0","date":"2019-10-11","lts":false,"security":false},{"name":"nodejs","version":"12.13.0","date":"2019-10-21","lts":"Erbium","security":false},{"name":"nodejs","version":"12.14.0","date":"2019-12-17","lts":"Erbium","security":true},{"name":"nodejs","version":"12.15.0","date":"2020-02-05","lts":"Erbium","security":true},{"name":"nodejs","version":"12.16.0","date":"2020-02-11","lts":"Erbium","security":false},{"name":"nodejs","version":"12.17.0","date":"2020-05-26","lts":"Erbium","security":false},{"name":"nodejs","version":"12.18.0","date":"2020-06-02","lts":"Erbium","security":true},{"name":"nodejs","version":"12.19.0","date":"2020-10-06","lts":"Erbium","security":false},{"name":"nodejs","version":"12.20.0","date":"2020-11-24","lts":"Erbium","security":false},{"name":"nodejs","version":"12.21.0","date":"2021-02-23","lts":"Erbium","security":true},{"name":"nodejs","version":"12.22.0","date":"2021-03-30","lts":"Erbium","security":false},{"name":"nodejs","version":"13.0.0","date":"2019-10-22","lts":false,"security":false},{"name":"nodejs","version":"13.1.0","date":"2019-11-05","lts":false,"security":false},{"name":"nodejs","version":"13.2.0","date":"2019-11-21","lts":false,"security":false},{"name":"nodejs","version":"13.3.0","date":"2019-12-03","lts":false,"security":false},{"name":"nodejs","version":"13.4.0","date":"2019-12-17","lts":false,"security":true},{"name":"nodejs","version":"13.5.0","date":"2019-12-18","lts":false,"security":false},{"name":"nodejs","version":"13.6.0","date":"2020-01-07","lts":false,"security":false},{"name":"nodejs","version":"13.7.0","date":"2020-01-21","lts":false,"security":false},{"name":"nodejs","version":"13.8.0","date":"2020-02-05","lts":false,"security":true},{"name":"nodejs","version":"13.9.0","date":"2020-02-18","lts":false,"security":false},{"name":"nodejs","version":"13.10.0","date":"2020-03-04","lts":false,"security":false},{"name":"nodejs","version":"13.11.0","date":"2020-03-12","lts":false,"security":false},{"name":"nodejs","version":"13.12.0","date":"2020-03-26","lts":false,"security":false},{"name":"nodejs","version":"13.13.0","date":"2020-04-14","lts":false,"security":false},{"name":"nodejs","version":"13.14.0","date":"2020-04-29","lts":false,"security":false},{"name":"nodejs","version":"14.0.0","date":"2020-04-21","lts":false,"security":false},{"name":"nodejs","version":"14.1.0","date":"2020-04-29","lts":false,"security":false},{"name":"nodejs","version":"14.2.0","date":"2020-05-05","lts":false,"security":false},{"name":"nodejs","version":"14.3.0","date":"2020-05-19","lts":false,"security":false},{"name":"nodejs","version":"14.4.0","date":"2020-06-02","lts":false,"security":true},{"name":"nodejs","version":"14.5.0","date":"2020-06-30","lts":false,"security":false},{"name":"nodejs","version":"14.6.0","date":"2020-07-20","lts":false,"security":false},{"name":"nodejs","version":"14.7.0","date":"2020-07-29","lts":false,"security":false},{"name":"nodejs","version":"14.8.0","date":"2020-08-11","lts":false,"security":false},{"name":"nodejs","version":"14.9.0","date":"2020-08-27","lts":false,"security":false},{"name":"nodejs","version":"14.10.0","date":"2020-09-08","lts":false,"security":false},{"name":"nodejs","version":"14.11.0","date":"2020-09-15","lts":false,"security":true},{"name":"nodejs","version":"14.12.0","date":"2020-09-22","lts":false,"security":false},{"name":"nodejs","version":"14.13.0","date":"2020-09-29","lts":false,"security":false},{"name":"nodejs","version":"14.14.0","date":"2020-10-15","lts":false,"security":false},{"name":"nodejs","version":"14.15.0","date":"2020-10-27","lts":"Fermium","security":false},{"name":"nodejs","version":"14.16.0","date":"2021-02-23","lts":"Fermium","security":true},{"name":"nodejs","version":"14.17.0","date":"2021-05-11","lts":"Fermium","security":false},{"name":"nodejs","version":"14.18.0","date":"2021-09-28","lts":"Fermium","security":false},{"name":"nodejs","version":"14.19.0","date":"2022-02-01","lts":"Fermium","security":false},{"name":"nodejs","version":"15.0.0","date":"2020-10-20","lts":false,"security":false},{"name":"nodejs","version":"15.1.0","date":"2020-11-04","lts":false,"security":false},{"name":"nodejs","version":"15.2.0","date":"2020-11-10","lts":false,"security":false},{"name":"nodejs","version":"15.3.0","date":"2020-11-24","lts":false,"security":false},{"name":"nodejs","version":"15.4.0","date":"2020-12-09","lts":false,"security":false},{"name":"nodejs","version":"15.5.0","date":"2020-12-22","lts":false,"security":false},{"name":"nodejs","version":"15.6.0","date":"2021-01-14","lts":false,"security":false},{"name":"nodejs","version":"15.7.0","date":"2021-01-25","lts":false,"security":false},{"name":"nodejs","version":"15.8.0","date":"2021-02-02","lts":false,"security":false},{"name":"nodejs","version":"15.9.0","date":"2021-02-18","lts":false,"security":false},{"name":"nodejs","version":"15.10.0","date":"2021-02-23","lts":false,"security":true},{"name":"nodejs","version":"15.11.0","date":"2021-03-03","lts":false,"security":false},{"name":"nodejs","version":"15.12.0","date":"2021-03-17","lts":false,"security":false},{"name":"nodejs","version":"15.13.0","date":"2021-03-31","lts":false,"security":false},{"name":"nodejs","version":"15.14.0","date":"2021-04-06","lts":false,"security":false},{"name":"nodejs","version":"16.0.0","date":"2021-04-20","lts":false,"security":false},{"name":"nodejs","version":"16.1.0","date":"2021-05-04","lts":false,"security":false},{"name":"nodejs","version":"16.2.0","date":"2021-05-19","lts":false,"security":false},{"name":"nodejs","version":"16.3.0","date":"2021-06-03","lts":false,"security":false},{"name":"nodejs","version":"16.4.0","date":"2021-06-23","lts":false,"security":false},{"name":"nodejs","version":"16.5.0","date":"2021-07-14","lts":false,"security":false},{"name":"nodejs","version":"16.6.0","date":"2021-07-29","lts":false,"security":true},{"name":"nodejs","version":"16.7.0","date":"2021-08-18","lts":false,"security":false},{"name":"nodejs","version":"16.8.0","date":"2021-08-25","lts":false,"security":false},{"name":"nodejs","version":"16.9.0","date":"2021-09-07","lts":false,"security":false},{"name":"nodejs","version":"16.10.0","date":"2021-09-22","lts":false,"security":false},{"name":"nodejs","version":"16.11.0","date":"2021-10-08","lts":false,"security":false},{"name":"nodejs","version":"16.12.0","date":"2021-10-20","lts":false,"security":false},{"name":"nodejs","version":"16.13.0","date":"2021-10-26","lts":"Gallium","security":false},{"name":"nodejs","version":"17.0.0","date":"2021-10-19","lts":false,"security":false},{"name":"nodejs","version":"17.1.0","date":"2021-11-09","lts":false,"security":false},{"name":"nodejs","version":"17.2.0","date":"2021-11-30","lts":false,"security":false},{"name":"nodejs","version":"17.3.0","date":"2021-12-17","lts":false,"security":false},{"name":"nodejs","version":"17.4.0","date":"2022-01-18","lts":false,"security":false}] \ No newline at end of file +[{"name":"nodejs","version":"0.2.0","date":"2011-08-26","lts":false,"security":false},{"name":"nodejs","version":"0.3.0","date":"2011-08-26","lts":false,"security":false},{"name":"nodejs","version":"0.4.0","date":"2011-08-26","lts":false,"security":false},{"name":"nodejs","version":"0.5.0","date":"2011-08-26","lts":false,"security":false},{"name":"nodejs","version":"0.6.0","date":"2011-11-04","lts":false,"security":false},{"name":"nodejs","version":"0.7.0","date":"2012-01-17","lts":false,"security":false},{"name":"nodejs","version":"0.8.0","date":"2012-06-22","lts":false,"security":false},{"name":"nodejs","version":"0.9.0","date":"2012-07-20","lts":false,"security":false},{"name":"nodejs","version":"0.10.0","date":"2013-03-11","lts":false,"security":false},{"name":"nodejs","version":"0.11.0","date":"2013-03-28","lts":false,"security":false},{"name":"nodejs","version":"0.12.0","date":"2015-02-06","lts":false,"security":false},{"name":"nodejs","version":"4.0.0","date":"2015-09-08","lts":false,"security":false},{"name":"nodejs","version":"4.1.0","date":"2015-09-17","lts":false,"security":false},{"name":"nodejs","version":"4.2.0","date":"2015-10-12","lts":"Argon","security":false},{"name":"nodejs","version":"4.3.0","date":"2016-02-09","lts":"Argon","security":false},{"name":"nodejs","version":"4.4.0","date":"2016-03-08","lts":"Argon","security":false},{"name":"nodejs","version":"4.5.0","date":"2016-08-16","lts":"Argon","security":false},{"name":"nodejs","version":"4.6.0","date":"2016-09-27","lts":"Argon","security":true},{"name":"nodejs","version":"4.7.0","date":"2016-12-06","lts":"Argon","security":false},{"name":"nodejs","version":"4.8.0","date":"2017-02-21","lts":"Argon","security":false},{"name":"nodejs","version":"4.9.0","date":"2018-03-28","lts":"Argon","security":true},{"name":"nodejs","version":"5.0.0","date":"2015-10-29","lts":false,"security":false},{"name":"nodejs","version":"5.1.0","date":"2015-11-17","lts":false,"security":false},{"name":"nodejs","version":"5.2.0","date":"2015-12-09","lts":false,"security":false},{"name":"nodejs","version":"5.3.0","date":"2015-12-15","lts":false,"security":false},{"name":"nodejs","version":"5.4.0","date":"2016-01-06","lts":false,"security":false},{"name":"nodejs","version":"5.5.0","date":"2016-01-21","lts":false,"security":false},{"name":"nodejs","version":"5.6.0","date":"2016-02-09","lts":false,"security":false},{"name":"nodejs","version":"5.7.0","date":"2016-02-23","lts":false,"security":false},{"name":"nodejs","version":"5.8.0","date":"2016-03-09","lts":false,"security":false},{"name":"nodejs","version":"5.9.0","date":"2016-03-16","lts":false,"security":false},{"name":"nodejs","version":"5.10.0","date":"2016-04-01","lts":false,"security":false},{"name":"nodejs","version":"5.11.0","date":"2016-04-21","lts":false,"security":false},{"name":"nodejs","version":"5.12.0","date":"2016-06-23","lts":false,"security":false},{"name":"nodejs","version":"6.0.0","date":"2016-04-26","lts":false,"security":false},{"name":"nodejs","version":"6.1.0","date":"2016-05-05","lts":false,"security":false},{"name":"nodejs","version":"6.2.0","date":"2016-05-17","lts":false,"security":false},{"name":"nodejs","version":"6.3.0","date":"2016-07-06","lts":false,"security":false},{"name":"nodejs","version":"6.4.0","date":"2016-08-12","lts":false,"security":false},{"name":"nodejs","version":"6.5.0","date":"2016-08-26","lts":false,"security":false},{"name":"nodejs","version":"6.6.0","date":"2016-09-14","lts":false,"security":false},{"name":"nodejs","version":"6.7.0","date":"2016-09-27","lts":false,"security":true},{"name":"nodejs","version":"6.8.0","date":"2016-10-12","lts":false,"security":false},{"name":"nodejs","version":"6.9.0","date":"2016-10-18","lts":"Boron","security":false},{"name":"nodejs","version":"6.10.0","date":"2017-02-21","lts":"Boron","security":false},{"name":"nodejs","version":"6.11.0","date":"2017-06-06","lts":"Boron","security":false},{"name":"nodejs","version":"6.12.0","date":"2017-11-06","lts":"Boron","security":false},{"name":"nodejs","version":"6.13.0","date":"2018-02-10","lts":"Boron","security":false},{"name":"nodejs","version":"6.14.0","date":"2018-03-28","lts":"Boron","security":true},{"name":"nodejs","version":"6.15.0","date":"2018-11-27","lts":"Boron","security":true},{"name":"nodejs","version":"6.16.0","date":"2018-12-26","lts":"Boron","security":false},{"name":"nodejs","version":"6.17.0","date":"2019-02-28","lts":"Boron","security":true},{"name":"nodejs","version":"7.0.0","date":"2016-10-25","lts":false,"security":false},{"name":"nodejs","version":"7.1.0","date":"2016-11-08","lts":false,"security":false},{"name":"nodejs","version":"7.2.0","date":"2016-11-22","lts":false,"security":false},{"name":"nodejs","version":"7.3.0","date":"2016-12-20","lts":false,"security":false},{"name":"nodejs","version":"7.4.0","date":"2017-01-04","lts":false,"security":false},{"name":"nodejs","version":"7.5.0","date":"2017-01-31","lts":false,"security":false},{"name":"nodejs","version":"7.6.0","date":"2017-02-21","lts":false,"security":false},{"name":"nodejs","version":"7.7.0","date":"2017-02-28","lts":false,"security":false},{"name":"nodejs","version":"7.8.0","date":"2017-03-29","lts":false,"security":false},{"name":"nodejs","version":"7.9.0","date":"2017-04-11","lts":false,"security":false},{"name":"nodejs","version":"7.10.0","date":"2017-05-02","lts":false,"security":false},{"name":"nodejs","version":"8.0.0","date":"2017-05-30","lts":false,"security":false},{"name":"nodejs","version":"8.1.0","date":"2017-06-08","lts":false,"security":false},{"name":"nodejs","version":"8.2.0","date":"2017-07-19","lts":false,"security":false},{"name":"nodejs","version":"8.3.0","date":"2017-08-08","lts":false,"security":false},{"name":"nodejs","version":"8.4.0","date":"2017-08-15","lts":false,"security":false},{"name":"nodejs","version":"8.5.0","date":"2017-09-12","lts":false,"security":false},{"name":"nodejs","version":"8.6.0","date":"2017-09-26","lts":false,"security":false},{"name":"nodejs","version":"8.7.0","date":"2017-10-11","lts":false,"security":false},{"name":"nodejs","version":"8.8.0","date":"2017-10-24","lts":false,"security":false},{"name":"nodejs","version":"8.9.0","date":"2017-10-31","lts":"Carbon","security":false},{"name":"nodejs","version":"8.10.0","date":"2018-03-06","lts":"Carbon","security":false},{"name":"nodejs","version":"8.11.0","date":"2018-03-28","lts":"Carbon","security":true},{"name":"nodejs","version":"8.12.0","date":"2018-09-10","lts":"Carbon","security":false},{"name":"nodejs","version":"8.13.0","date":"2018-11-20","lts":"Carbon","security":false},{"name":"nodejs","version":"8.14.0","date":"2018-11-27","lts":"Carbon","security":true},{"name":"nodejs","version":"8.15.0","date":"2018-12-26","lts":"Carbon","security":false},{"name":"nodejs","version":"8.16.0","date":"2019-04-16","lts":"Carbon","security":false},{"name":"nodejs","version":"8.17.0","date":"2019-12-17","lts":"Carbon","security":true},{"name":"nodejs","version":"9.0.0","date":"2017-10-31","lts":false,"security":false},{"name":"nodejs","version":"9.1.0","date":"2017-11-07","lts":false,"security":false},{"name":"nodejs","version":"9.2.0","date":"2017-11-14","lts":false,"security":false},{"name":"nodejs","version":"9.3.0","date":"2017-12-12","lts":false,"security":false},{"name":"nodejs","version":"9.4.0","date":"2018-01-10","lts":false,"security":false},{"name":"nodejs","version":"9.5.0","date":"2018-01-31","lts":false,"security":false},{"name":"nodejs","version":"9.6.0","date":"2018-02-21","lts":false,"security":false},{"name":"nodejs","version":"9.7.0","date":"2018-03-01","lts":false,"security":false},{"name":"nodejs","version":"9.8.0","date":"2018-03-07","lts":false,"security":false},{"name":"nodejs","version":"9.9.0","date":"2018-03-21","lts":false,"security":false},{"name":"nodejs","version":"9.10.0","date":"2018-03-28","lts":false,"security":true},{"name":"nodejs","version":"9.11.0","date":"2018-04-04","lts":false,"security":false},{"name":"nodejs","version":"10.0.0","date":"2018-04-24","lts":false,"security":false},{"name":"nodejs","version":"10.1.0","date":"2018-05-08","lts":false,"security":false},{"name":"nodejs","version":"10.2.0","date":"2018-05-23","lts":false,"security":false},{"name":"nodejs","version":"10.3.0","date":"2018-05-29","lts":false,"security":false},{"name":"nodejs","version":"10.4.0","date":"2018-06-06","lts":false,"security":false},{"name":"nodejs","version":"10.5.0","date":"2018-06-20","lts":false,"security":false},{"name":"nodejs","version":"10.6.0","date":"2018-07-04","lts":false,"security":false},{"name":"nodejs","version":"10.7.0","date":"2018-07-18","lts":false,"security":false},{"name":"nodejs","version":"10.8.0","date":"2018-08-01","lts":false,"security":false},{"name":"nodejs","version":"10.9.0","date":"2018-08-15","lts":false,"security":false},{"name":"nodejs","version":"10.10.0","date":"2018-09-06","lts":false,"security":false},{"name":"nodejs","version":"10.11.0","date":"2018-09-19","lts":false,"security":false},{"name":"nodejs","version":"10.12.0","date":"2018-10-10","lts":false,"security":false},{"name":"nodejs","version":"10.13.0","date":"2018-10-30","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.14.0","date":"2018-11-27","lts":"Dubnium","security":true},{"name":"nodejs","version":"10.15.0","date":"2018-12-26","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.16.0","date":"2019-05-28","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.17.0","date":"2019-10-22","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.18.0","date":"2019-12-17","lts":"Dubnium","security":true},{"name":"nodejs","version":"10.19.0","date":"2020-02-05","lts":"Dubnium","security":true},{"name":"nodejs","version":"10.20.0","date":"2020-03-26","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.21.0","date":"2020-06-02","lts":"Dubnium","security":true},{"name":"nodejs","version":"10.22.0","date":"2020-07-21","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.23.0","date":"2020-10-27","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.24.0","date":"2021-02-23","lts":"Dubnium","security":true},{"name":"nodejs","version":"11.0.0","date":"2018-10-23","lts":false,"security":false},{"name":"nodejs","version":"11.1.0","date":"2018-10-30","lts":false,"security":false},{"name":"nodejs","version":"11.2.0","date":"2018-11-15","lts":false,"security":false},{"name":"nodejs","version":"11.3.0","date":"2018-11-27","lts":false,"security":true},{"name":"nodejs","version":"11.4.0","date":"2018-12-07","lts":false,"security":false},{"name":"nodejs","version":"11.5.0","date":"2018-12-18","lts":false,"security":false},{"name":"nodejs","version":"11.6.0","date":"2018-12-26","lts":false,"security":false},{"name":"nodejs","version":"11.7.0","date":"2019-01-17","lts":false,"security":false},{"name":"nodejs","version":"11.8.0","date":"2019-01-24","lts":false,"security":false},{"name":"nodejs","version":"11.9.0","date":"2019-01-30","lts":false,"security":false},{"name":"nodejs","version":"11.10.0","date":"2019-02-14","lts":false,"security":false},{"name":"nodejs","version":"11.11.0","date":"2019-03-05","lts":false,"security":false},{"name":"nodejs","version":"11.12.0","date":"2019-03-14","lts":false,"security":false},{"name":"nodejs","version":"11.13.0","date":"2019-03-28","lts":false,"security":false},{"name":"nodejs","version":"11.14.0","date":"2019-04-10","lts":false,"security":false},{"name":"nodejs","version":"11.15.0","date":"2019-04-30","lts":false,"security":false},{"name":"nodejs","version":"12.0.0","date":"2019-04-23","lts":false,"security":false},{"name":"nodejs","version":"12.1.0","date":"2019-04-29","lts":false,"security":false},{"name":"nodejs","version":"12.2.0","date":"2019-05-07","lts":false,"security":false},{"name":"nodejs","version":"12.3.0","date":"2019-05-21","lts":false,"security":false},{"name":"nodejs","version":"12.4.0","date":"2019-06-04","lts":false,"security":false},{"name":"nodejs","version":"12.5.0","date":"2019-06-26","lts":false,"security":false},{"name":"nodejs","version":"12.6.0","date":"2019-07-03","lts":false,"security":false},{"name":"nodejs","version":"12.7.0","date":"2019-07-23","lts":false,"security":false},{"name":"nodejs","version":"12.8.0","date":"2019-08-06","lts":false,"security":false},{"name":"nodejs","version":"12.9.0","date":"2019-08-20","lts":false,"security":false},{"name":"nodejs","version":"12.10.0","date":"2019-09-04","lts":false,"security":false},{"name":"nodejs","version":"12.11.0","date":"2019-09-25","lts":false,"security":false},{"name":"nodejs","version":"12.12.0","date":"2019-10-11","lts":false,"security":false},{"name":"nodejs","version":"12.13.0","date":"2019-10-21","lts":"Erbium","security":false},{"name":"nodejs","version":"12.14.0","date":"2019-12-17","lts":"Erbium","security":true},{"name":"nodejs","version":"12.15.0","date":"2020-02-05","lts":"Erbium","security":true},{"name":"nodejs","version":"12.16.0","date":"2020-02-11","lts":"Erbium","security":false},{"name":"nodejs","version":"12.17.0","date":"2020-05-26","lts":"Erbium","security":false},{"name":"nodejs","version":"12.18.0","date":"2020-06-02","lts":"Erbium","security":true},{"name":"nodejs","version":"12.19.0","date":"2020-10-06","lts":"Erbium","security":false},{"name":"nodejs","version":"12.20.0","date":"2020-11-24","lts":"Erbium","security":false},{"name":"nodejs","version":"12.21.0","date":"2021-02-23","lts":"Erbium","security":true},{"name":"nodejs","version":"12.22.0","date":"2021-03-30","lts":"Erbium","security":false},{"name":"nodejs","version":"13.0.0","date":"2019-10-22","lts":false,"security":false},{"name":"nodejs","version":"13.1.0","date":"2019-11-05","lts":false,"security":false},{"name":"nodejs","version":"13.2.0","date":"2019-11-21","lts":false,"security":false},{"name":"nodejs","version":"13.3.0","date":"2019-12-03","lts":false,"security":false},{"name":"nodejs","version":"13.4.0","date":"2019-12-17","lts":false,"security":true},{"name":"nodejs","version":"13.5.0","date":"2019-12-18","lts":false,"security":false},{"name":"nodejs","version":"13.6.0","date":"2020-01-07","lts":false,"security":false},{"name":"nodejs","version":"13.7.0","date":"2020-01-21","lts":false,"security":false},{"name":"nodejs","version":"13.8.0","date":"2020-02-05","lts":false,"security":true},{"name":"nodejs","version":"13.9.0","date":"2020-02-18","lts":false,"security":false},{"name":"nodejs","version":"13.10.0","date":"2020-03-04","lts":false,"security":false},{"name":"nodejs","version":"13.11.0","date":"2020-03-12","lts":false,"security":false},{"name":"nodejs","version":"13.12.0","date":"2020-03-26","lts":false,"security":false},{"name":"nodejs","version":"13.13.0","date":"2020-04-14","lts":false,"security":false},{"name":"nodejs","version":"13.14.0","date":"2020-04-29","lts":false,"security":false},{"name":"nodejs","version":"14.0.0","date":"2020-04-21","lts":false,"security":false},{"name":"nodejs","version":"14.1.0","date":"2020-04-29","lts":false,"security":false},{"name":"nodejs","version":"14.2.0","date":"2020-05-05","lts":false,"security":false},{"name":"nodejs","version":"14.3.0","date":"2020-05-19","lts":false,"security":false},{"name":"nodejs","version":"14.4.0","date":"2020-06-02","lts":false,"security":true},{"name":"nodejs","version":"14.5.0","date":"2020-06-30","lts":false,"security":false},{"name":"nodejs","version":"14.6.0","date":"2020-07-20","lts":false,"security":false},{"name":"nodejs","version":"14.7.0","date":"2020-07-29","lts":false,"security":false},{"name":"nodejs","version":"14.8.0","date":"2020-08-11","lts":false,"security":false},{"name":"nodejs","version":"14.9.0","date":"2020-08-27","lts":false,"security":false},{"name":"nodejs","version":"14.10.0","date":"2020-09-08","lts":false,"security":false},{"name":"nodejs","version":"14.11.0","date":"2020-09-15","lts":false,"security":true},{"name":"nodejs","version":"14.12.0","date":"2020-09-22","lts":false,"security":false},{"name":"nodejs","version":"14.13.0","date":"2020-09-29","lts":false,"security":false},{"name":"nodejs","version":"14.14.0","date":"2020-10-15","lts":false,"security":false},{"name":"nodejs","version":"14.15.0","date":"2020-10-27","lts":"Fermium","security":false},{"name":"nodejs","version":"14.16.0","date":"2021-02-23","lts":"Fermium","security":true},{"name":"nodejs","version":"14.17.0","date":"2021-05-11","lts":"Fermium","security":false},{"name":"nodejs","version":"14.18.0","date":"2021-09-28","lts":"Fermium","security":false},{"name":"nodejs","version":"14.19.0","date":"2022-02-01","lts":"Fermium","security":false},{"name":"nodejs","version":"14.20.0","date":"2022-07-07","lts":"Fermium","security":true},{"name":"nodejs","version":"15.0.0","date":"2020-10-20","lts":false,"security":false},{"name":"nodejs","version":"15.1.0","date":"2020-11-04","lts":false,"security":false},{"name":"nodejs","version":"15.2.0","date":"2020-11-10","lts":false,"security":false},{"name":"nodejs","version":"15.3.0","date":"2020-11-24","lts":false,"security":false},{"name":"nodejs","version":"15.4.0","date":"2020-12-09","lts":false,"security":false},{"name":"nodejs","version":"15.5.0","date":"2020-12-22","lts":false,"security":false},{"name":"nodejs","version":"15.6.0","date":"2021-01-14","lts":false,"security":false},{"name":"nodejs","version":"15.7.0","date":"2021-01-25","lts":false,"security":false},{"name":"nodejs","version":"15.8.0","date":"2021-02-02","lts":false,"security":false},{"name":"nodejs","version":"15.9.0","date":"2021-02-18","lts":false,"security":false},{"name":"nodejs","version":"15.10.0","date":"2021-02-23","lts":false,"security":true},{"name":"nodejs","version":"15.11.0","date":"2021-03-03","lts":false,"security":false},{"name":"nodejs","version":"15.12.0","date":"2021-03-17","lts":false,"security":false},{"name":"nodejs","version":"15.13.0","date":"2021-03-31","lts":false,"security":false},{"name":"nodejs","version":"15.14.0","date":"2021-04-06","lts":false,"security":false},{"name":"nodejs","version":"16.0.0","date":"2021-04-20","lts":false,"security":false},{"name":"nodejs","version":"16.1.0","date":"2021-05-04","lts":false,"security":false},{"name":"nodejs","version":"16.2.0","date":"2021-05-19","lts":false,"security":false},{"name":"nodejs","version":"16.3.0","date":"2021-06-03","lts":false,"security":false},{"name":"nodejs","version":"16.4.0","date":"2021-06-23","lts":false,"security":false},{"name":"nodejs","version":"16.5.0","date":"2021-07-14","lts":false,"security":false},{"name":"nodejs","version":"16.6.0","date":"2021-07-29","lts":false,"security":true},{"name":"nodejs","version":"16.7.0","date":"2021-08-18","lts":false,"security":false},{"name":"nodejs","version":"16.8.0","date":"2021-08-25","lts":false,"security":false},{"name":"nodejs","version":"16.9.0","date":"2021-09-07","lts":false,"security":false},{"name":"nodejs","version":"16.10.0","date":"2021-09-22","lts":false,"security":false},{"name":"nodejs","version":"16.11.0","date":"2021-10-08","lts":false,"security":false},{"name":"nodejs","version":"16.12.0","date":"2021-10-20","lts":false,"security":false},{"name":"nodejs","version":"16.13.0","date":"2021-10-26","lts":"Gallium","security":false},{"name":"nodejs","version":"16.14.0","date":"2022-02-08","lts":"Gallium","security":false},{"name":"nodejs","version":"16.15.0","date":"2022-04-26","lts":"Gallium","security":false},{"name":"nodejs","version":"16.16.0","date":"2022-07-07","lts":"Gallium","security":true},{"name":"nodejs","version":"17.0.0","date":"2021-10-19","lts":false,"security":false},{"name":"nodejs","version":"17.1.0","date":"2021-11-09","lts":false,"security":false},{"name":"nodejs","version":"17.2.0","date":"2021-11-30","lts":false,"security":false},{"name":"nodejs","version":"17.3.0","date":"2021-12-17","lts":false,"security":false},{"name":"nodejs","version":"17.4.0","date":"2022-01-18","lts":false,"security":false},{"name":"nodejs","version":"17.5.0","date":"2022-02-10","lts":false,"security":false},{"name":"nodejs","version":"17.6.0","date":"2022-02-22","lts":false,"security":false},{"name":"nodejs","version":"17.7.0","date":"2022-03-09","lts":false,"security":false},{"name":"nodejs","version":"17.8.0","date":"2022-03-22","lts":false,"security":false},{"name":"nodejs","version":"17.9.0","date":"2022-04-07","lts":false,"security":false},{"name":"nodejs","version":"18.0.0","date":"2022-04-18","lts":false,"security":false},{"name":"nodejs","version":"18.1.0","date":"2022-05-03","lts":false,"security":false},{"name":"nodejs","version":"18.2.0","date":"2022-05-17","lts":false,"security":false},{"name":"nodejs","version":"18.3.0","date":"2022-06-02","lts":false,"security":false},{"name":"nodejs","version":"18.4.0","date":"2022-06-16","lts":false,"security":false},{"name":"nodejs","version":"18.5.0","date":"2022-07-06","lts":false,"security":true}] \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/node-releases/data/release-schedule/release-schedule.json b/tools/node_modules/eslint/node_modules/node-releases/data/release-schedule/release-schedule.json index 8db643694c7e1a..037cc5330e2a90 100644 --- a/tools/node_modules/eslint/node_modules/node-releases/data/release-schedule/release-schedule.json +++ b/tools/node_modules/eslint/node_modules/node-releases/data/release-schedule/release-schedule.json @@ -1 +1 @@ -{"v0.8":{"start":"2012-06-25","end":"2014-07-31"},"v0.10":{"start":"2013-03-11","end":"2016-10-31"},"v0.12":{"start":"2015-02-06","end":"2016-12-31"},"v4":{"start":"2015-09-08","lts":"2015-10-12","maintenance":"2017-04-01","end":"2018-04-30","codename":"Argon"},"v5":{"start":"2015-10-29","maintenance":"2016-04-30","end":"2016-06-30"},"v6":{"start":"2016-04-26","lts":"2016-10-18","maintenance":"2018-04-30","end":"2019-04-30","codename":"Boron"},"v7":{"start":"2016-10-25","maintenance":"2017-04-30","end":"2017-06-30"},"v8":{"start":"2017-05-30","lts":"2017-10-31","maintenance":"2019-01-01","end":"2019-12-31","codename":"Carbon"},"v9":{"start":"2017-10-01","maintenance":"2018-04-01","end":"2018-06-30"},"v10":{"start":"2018-04-24","lts":"2018-10-30","maintenance":"2020-05-19","end":"2021-04-30","codename":"Dubnium"},"v11":{"start":"2018-10-23","maintenance":"2019-04-22","end":"2019-06-01"},"v12":{"start":"2019-04-23","lts":"2019-10-21","maintenance":"2020-11-30","end":"2022-04-30","codename":"Erbium"},"v13":{"start":"2019-10-22","maintenance":"2020-04-01","end":"2020-06-01"},"v14":{"start":"2020-04-21","lts":"2020-10-27","maintenance":"2021-10-19","end":"2023-04-30","codename":"Fermium"},"v15":{"start":"2020-10-20","maintenance":"2021-04-01","end":"2021-06-01"},"v16":{"start":"2021-04-20","lts":"2021-10-26","maintenance":"2022-10-18","end":"2024-04-30","codename":"Gallium"},"v17":{"start":"2021-10-19","maintenance":"2022-04-01","end":"2022-06-01"},"v18":{"start":"2022-04-19","lts":"2022-10-25","maintenance":"2023-10-18","end":"2025-04-30","codename":""}} \ No newline at end of file +{"v0.8":{"start":"2012-06-25","end":"2014-07-31"},"v0.10":{"start":"2013-03-11","end":"2016-10-31"},"v0.12":{"start":"2015-02-06","end":"2016-12-31"},"v4":{"start":"2015-09-08","lts":"2015-10-12","maintenance":"2017-04-01","end":"2018-04-30","codename":"Argon"},"v5":{"start":"2015-10-29","maintenance":"2016-04-30","end":"2016-06-30"},"v6":{"start":"2016-04-26","lts":"2016-10-18","maintenance":"2018-04-30","end":"2019-04-30","codename":"Boron"},"v7":{"start":"2016-10-25","maintenance":"2017-04-30","end":"2017-06-30"},"v8":{"start":"2017-05-30","lts":"2017-10-31","maintenance":"2019-01-01","end":"2019-12-31","codename":"Carbon"},"v9":{"start":"2017-10-01","maintenance":"2018-04-01","end":"2018-06-30"},"v10":{"start":"2018-04-24","lts":"2018-10-30","maintenance":"2020-05-19","end":"2021-04-30","codename":"Dubnium"},"v11":{"start":"2018-10-23","maintenance":"2019-04-22","end":"2019-06-01"},"v12":{"start":"2019-04-23","lts":"2019-10-21","maintenance":"2020-11-30","end":"2022-04-30","codename":"Erbium"},"v13":{"start":"2019-10-22","maintenance":"2020-04-01","end":"2020-06-01"},"v14":{"start":"2020-04-21","lts":"2020-10-27","maintenance":"2021-10-19","end":"2023-04-30","codename":"Fermium"},"v15":{"start":"2020-10-20","maintenance":"2021-04-01","end":"2021-06-01"},"v16":{"start":"2021-04-20","lts":"2021-10-26","maintenance":"2022-10-18","end":"2023-09-11","codename":"Gallium"},"v17":{"start":"2021-10-19","maintenance":"2022-04-01","end":"2022-06-01"},"v18":{"start":"2022-04-19","lts":"2022-10-25","maintenance":"2023-10-18","end":"2025-04-30","codename":""},"v19":{"start":"2022-10-18","maintenance":"2023-04-01","end":"2023-06-01"},"v20":{"start":"2023-04-18","lts":"2023-10-24","maintenance":"2024-10-22","end":"2026-04-30","codename":""}} \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/node-releases/package.json b/tools/node_modules/eslint/node_modules/node-releases/package.json index 6eeea56ea301e4..cb6c7c124f9446 100644 --- a/tools/node_modules/eslint/node_modules/node-releases/package.json +++ b/tools/node_modules/eslint/node_modules/node-releases/package.json @@ -1,6 +1,6 @@ { "name": "node-releases", - "version": "2.0.2", + "version": "2.0.6", "description": "Node.js releases data", "scripts": { "build": "node scripts/build.js" diff --git a/tools/node_modules/eslint/node_modules/regextras/LICENSE-MIT.txt b/tools/node_modules/eslint/node_modules/regextras/LICENSE-MIT.txt deleted file mode 100644 index 2f25801bc69b25..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/LICENSE-MIT.txt +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (C) 2012 Brett Zamir - -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/regextras/dist/index-es.js b/tools/node_modules/eslint/node_modules/regextras/dist/index-es.js deleted file mode 100644 index 22f4c75b2f03a6..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/dist/index-es.js +++ /dev/null @@ -1,442 +0,0 @@ -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} - -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} - -function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); -} - -function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); - return true; - } catch (e) { - return false; - } -} - -function _construct(Parent, args, Class) { - if (_isNativeReflectConstruct()) { - _construct = Reflect.construct; - } else { - _construct = function _construct(Parent, args, Class) { - var a = [null]; - a.push.apply(a, args); - var Constructor = Function.bind.apply(Parent, a); - var instance = new Constructor(); - if (Class) _setPrototypeOf(instance, Class.prototype); - return instance; - }; - } - - return _construct.apply(null, arguments); -} - -/* eslint-disable node/no-unsupported-features/es-syntax */ - -/** - * @param {RegExp} regex - * @param {string} newFlags - * @param {Integer} [newLastIndex=regex.lastIndex] - * @returns {RegExp} - */ -function mixinRegex(regex, newFlags) { - var newLastIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : regex.lastIndex; - newFlags = newFlags || ''; - regex = new RegExp(regex.source, (newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') + (newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') + (newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') + (newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') + (newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') + (newFlags.includes('s') ? 's' : regex.dotAll ? 's' : '')); - regex.lastIndex = newLastIndex; - return regex; -} - -var RegExtras = /*#__PURE__*/function () { - function RegExtras(regex, flags, newLastIndex) { - _classCallCheck(this, RegExtras); - - this.regex = mixinRegex(typeof regex === 'string' ? new RegExp(regex) : mixinRegex(regex), flags || '', newLastIndex); - } - - _createClass(RegExtras, [{ - key: "forEach", - value: function forEach(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - - return this; - } - }, { - key: "some", - value: function some(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - ret, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return true; - } - } - - return false; - } - }, { - key: "every", - value: function every(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - ret, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (!ret) { - return false; - } - } - - return true; - } - }, { - key: "map", - value: function map(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var ret = []; - var regex = mixinRegex(this.regex, 'g'); - var matches, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - - return ret; - } - }, { - key: "filter", - value: function filter(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = [], - regex = mixinRegex(this.regex, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - - if (cb.apply(thisObj, matches)) { - ret.push(n0[0]); - } - } - - return ret; - } - }, { - key: "reduce", - value: function reduce(str, cb, prev) { - var thisObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - var matches, - n0, - i = 0; - var regex = mixinRegex(this.regex, 'g'); - - if (!prev) { - if ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i++, n0))); - } - } - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(i++, n0))); - } - - return prev; - } - }, { - key: "reduceRight", - value: function reduceRight(str, cb, prevOrig, thisObjOrig) { - var matches, - n0, - i, - thisObj = thisObjOrig, - prev = prevOrig; - var matchesContainer = [], - regex = mixinRegex(this.regex, 'g'); - thisObj = thisObj || null; - - while ((matches = regex.exec(str)) !== null) { - matchesContainer.push(matches); - } - - i = matchesContainer.length; - - if (!i) { - if (arguments.length < 3) { - throw new TypeError('reduce of empty matches array with no initial value'); - } - - return prev; - } - - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i--, n0))); - } - - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(i--, n0))); - return container; - }, matchesContainer); - return prev; - } - }, { - key: "find", - value: function find(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this.regex, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return n0[0]; - } - } - - return false; - } - }, { - key: "findIndex", - value: function findIndex(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - var n0 = matches.splice(0, 1); - var ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return i - 1; - } - } - - return -1; - } - }, { - key: "findExec", - value: function findExec(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - var n0 = matches.splice(0, 1); - var ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return matches; - } - } - - return false; - } - }, { - key: "filterExec", - value: function filterExec(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = [], - regex = mixinRegex(this.regex, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches.push(i++, n0[0]); - - if (cb.apply(thisObj, matches)) { - ret.push(matches); - } - } - - return ret; - } - }]); - - return RegExtras; -}(); - -var _RegExtras = RegExtras; - -RegExtras = function RegExtras() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - // eslint-disable-line no-class-assign - return _construct(_RegExtras, args); -}; - -RegExtras.prototype = _RegExtras.prototype; -RegExtras.mixinRegex = mixinRegex; - -/* eslint-disable node/no-unsupported-features/es-syntax */ -// We copy the regular expression so as to be able to always -// ensure the exec expression is a global one (and thereby prevent recursion) - -/** - * - * @param {RegExtras} RegExtras - * @returns {void} - */ -function addPrototypeMethods(RegExtras) { - RegExtras.prototype.entries = /*#__PURE__*/regeneratorRuntime.mark(function _callee(str) { - var matches, i, regex; - return regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - i = 0; - regex = RegExtras.mixinRegex(this.regex, 'g'); - - case 2: - if (!((matches = regex.exec(str)) !== null)) { - _context.next = 7; - break; - } - - _context.next = 5; - return [i++, matches]; - - case 5: - _context.next = 2; - break; - - case 7: - case "end": - return _context.stop(); - } - } - }, _callee, this); - }); - RegExtras.prototype.values = /*#__PURE__*/regeneratorRuntime.mark(function _callee2(str) { - var matches, regex; - return regeneratorRuntime.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - regex = RegExtras.mixinRegex(this.regex, 'g'); - - case 1: - if (!((matches = regex.exec(str)) !== null)) { - _context2.next = 6; - break; - } - - _context2.next = 4; - return matches; - - case 4: - _context2.next = 1; - break; - - case 6: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - }); - RegExtras.prototype.keys = /*#__PURE__*/regeneratorRuntime.mark(function _callee3(str) { - var i, regex; - return regeneratorRuntime.wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - i = 0; - regex = RegExtras.mixinRegex(this.regex, 'g'); - - case 2: - if (!(regex.exec(str) !== null)) { - _context3.next = 7; - break; - } - - _context3.next = 5; - return i++; - - case 5: - _context3.next = 2; - break; - - case 7: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - }); -} - -addPrototypeMethods(RegExtras); - -export { RegExtras, mixinRegex }; diff --git a/tools/node_modules/eslint/node_modules/regextras/dist/index-es.min.js b/tools/node_modules/eslint/node_modules/regextras/dist/index-es.min.js deleted file mode 100644 index e73391fdaa8340..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/dist/index-es.min.js +++ /dev/null @@ -1 +0,0 @@ -function e(e,n){for(var t=0;t2&&void 0!==arguments[2]?arguments[2]:e.lastIndex;return n=n||"",(e=new RegExp(e.source,(n.includes("g")||e.global?"g":"")+(n.includes("i")||e.ignoreCase?"i":"")+(n.includes("m")||e.multiline?"m":"")+(n.includes("u")||e.unicode?"u":"")+(n.includes("y")||e.sticky?"y":"")+(n.includes("s")||e.dotAll?"s":""))).lastIndex=t,e}var u=function(){function n(e,t,r){!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,n),this.regex=c("string"==typeof e?new RegExp(e):c(e),t||"",r)}var t,r,u;return t=n,(r=[{key:"forEach",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,l=c(this.regex,"g"),i=0;null!==(t=l.exec(e));)r=t.splice(0,1),n.apply(u,t.concat(i++,r));return this}},{key:"some",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,l=c(this.regex,"g"),i=0;null!==(t=l.exec(e));)if(r=t.splice(0,1),n.apply(u,t.concat(i++,r)))return!0;return!1}},{key:"every",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,l=c(this.regex,"g"),i=0;null!==(t=l.exec(e));)if(r=t.splice(0,1),!n.apply(u,t.concat(i++,r)))return!1;return!0}},{key:"map",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,l=[],i=c(this.regex,"g"),o=0;null!==(t=i.exec(e));)r=t.splice(0,1),l.push(n.apply(u,t.concat(o++,r)));return l}},{key:"filter",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,l=0,i=[],o=c(this.regex,"g");null!==(t=o.exec(e));)r=t.splice(0,1),t=t.concat(l++,r),n.apply(u,t)&&i.push(r[0]);return i}},{key:"reduce",value:function(e,n,t){var r,u,l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=0,o=c(this.regex,"g");for(t||null!==(r=o.exec(e))&&(u=r.splice(0,1),t=n.apply(l,[""].concat(r.concat(i++,u))));null!==(r=o.exec(e));)u=r.splice(0,1),t=n.apply(l,[t].concat(r.concat(i++,u)));return t}},{key:"reduceRight",value:function(e,n,t,r){var u,l,i,o=r,a=t,p=[],s=c(this.regex,"g");for(o=o||null;null!==(u=s.exec(e));)p.push(u);if(!(i=p.length)){if(arguments.length<3)throw new TypeError("reduce of empty matches array with no initial value");return a}return a||(u=p.splice(-1)[0],l=u.splice(0,1),a=n.apply(o,[""].concat(u.concat(i--,l)))),p.reduceRight((function(e,t){return l=t.splice(0,1),a=n.apply(o,[a].concat(t.concat(i--,l))),e}),p),a}},{key:"find",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,l=0,i=c(this.regex,"g");null!==(t=i.exec(e));)if(r=t.splice(0,1),n.apply(u,t.concat(l++,r)))return r[0];return!1}},{key:"findIndex",value:function(e,n){for(var t,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,u=c(this.regex,"g"),l=0;null!==(t=u.exec(e));){var i=t.splice(0,1),o=n.apply(r,t.concat(l++,i));if(o)return l-1}return-1}},{key:"findExec",value:function(e,n){for(var t,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,u=c(this.regex,"g"),l=0;null!==(t=u.exec(e));){var i=t.splice(0,1),o=n.apply(r,t.concat(l++,i));if(o)return t}return!1}},{key:"filterExec",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,l=0,i=[],o=c(this.regex,"g");null!==(t=o.exec(e));)r=t.splice(0,1),t.push(l++,r[0]),n.apply(u,t)&&i.push(t);return i}}])&&e(t.prototype,r),u&&e(t,u),n}(),l=u;(u=function(){for(var e=arguments.length,n=new Array(e),t=0;t 2 && arguments[2] !== undefined ? arguments[2] : regex.lastIndex; - newFlags = newFlags || ''; - regex = new RegExp(regex.source, (newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') + (newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') + (newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') + (newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') + (newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') + (newFlags.includes('s') ? 's' : regex.dotAll ? 's' : '')); - regex.lastIndex = newLastIndex; - return regex; - } - - exports.RegExtras = /*#__PURE__*/function () { - function RegExtras(regex, flags, newLastIndex) { - _classCallCheck(this, RegExtras); - - this.regex = mixinRegex(typeof regex === 'string' ? new RegExp(regex) : mixinRegex(regex), flags || '', newLastIndex); - } - - _createClass(RegExtras, [{ - key: "forEach", - value: function forEach(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - - return this; - } - }, { - key: "some", - value: function some(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - ret, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return true; - } - } - - return false; - } - }, { - key: "every", - value: function every(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - ret, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (!ret) { - return false; - } - } - - return true; - } - }, { - key: "map", - value: function map(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var ret = []; - var regex = mixinRegex(this.regex, 'g'); - var matches, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - - return ret; - } - }, { - key: "filter", - value: function filter(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = [], - regex = mixinRegex(this.regex, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - - if (cb.apply(thisObj, matches)) { - ret.push(n0[0]); - } - } - - return ret; - } - }, { - key: "reduce", - value: function reduce(str, cb, prev) { - var thisObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - var matches, - n0, - i = 0; - var regex = mixinRegex(this.regex, 'g'); - - if (!prev) { - if ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i++, n0))); - } - } - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(i++, n0))); - } - - return prev; - } - }, { - key: "reduceRight", - value: function reduceRight(str, cb, prevOrig, thisObjOrig) { - var matches, - n0, - i, - thisObj = thisObjOrig, - prev = prevOrig; - var matchesContainer = [], - regex = mixinRegex(this.regex, 'g'); - thisObj = thisObj || null; - - while ((matches = regex.exec(str)) !== null) { - matchesContainer.push(matches); - } - - i = matchesContainer.length; - - if (!i) { - if (arguments.length < 3) { - throw new TypeError('reduce of empty matches array with no initial value'); - } - - return prev; - } - - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i--, n0))); - } - - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(i--, n0))); - return container; - }, matchesContainer); - return prev; - } - }, { - key: "find", - value: function find(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this.regex, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return n0[0]; - } - } - - return false; - } - }, { - key: "findIndex", - value: function findIndex(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - var n0 = matches.splice(0, 1); - var ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return i - 1; - } - } - - return -1; - } - }, { - key: "findExec", - value: function findExec(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - var n0 = matches.splice(0, 1); - var ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return matches; - } - } - - return false; - } - }, { - key: "filterExec", - value: function filterExec(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = [], - regex = mixinRegex(this.regex, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches.push(i++, n0[0]); - - if (cb.apply(thisObj, matches)) { - ret.push(matches); - } - } - - return ret; - } - }]); - - return RegExtras; - }(); - - var _RegExtras = exports.RegExtras; - - exports.RegExtras = function RegExtras() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - // eslint-disable-line no-class-assign - return _construct(_RegExtras, args); - }; - - exports.RegExtras.prototype = _RegExtras.prototype; - exports.RegExtras.mixinRegex = mixinRegex; - - /* eslint-disable node/no-unsupported-features/es-syntax */ - // We copy the regular expression so as to be able to always - // ensure the exec expression is a global one (and thereby prevent recursion) - - /** - * - * @param {RegExtras} RegExtras - * @returns {void} - */ - function addPrototypeMethods(RegExtras) { - RegExtras.prototype.entries = /*#__PURE__*/regeneratorRuntime.mark(function _callee(str) { - var matches, i, regex; - return regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - i = 0; - regex = RegExtras.mixinRegex(this.regex, 'g'); - - case 2: - if (!((matches = regex.exec(str)) !== null)) { - _context.next = 7; - break; - } - - _context.next = 5; - return [i++, matches]; - - case 5: - _context.next = 2; - break; - - case 7: - case "end": - return _context.stop(); - } - } - }, _callee, this); - }); - RegExtras.prototype.values = /*#__PURE__*/regeneratorRuntime.mark(function _callee2(str) { - var matches, regex; - return regeneratorRuntime.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - regex = RegExtras.mixinRegex(this.regex, 'g'); - - case 1: - if (!((matches = regex.exec(str)) !== null)) { - _context2.next = 6; - break; - } - - _context2.next = 4; - return matches; - - case 4: - _context2.next = 1; - break; - - case 6: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - }); - RegExtras.prototype.keys = /*#__PURE__*/regeneratorRuntime.mark(function _callee3(str) { - var i, regex; - return regeneratorRuntime.wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - i = 0; - regex = RegExtras.mixinRegex(this.regex, 'g'); - - case 2: - if (!(regex.exec(str) !== null)) { - _context3.next = 7; - break; - } - - _context3.next = 5; - return i++; - - case 5: - _context3.next = 2; - break; - - case 7: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - }); - } - - addPrototypeMethods(exports.RegExtras); - - exports.mixinRegex = mixinRegex; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); diff --git a/tools/node_modules/eslint/node_modules/regextras/dist/index-umd.min.js b/tools/node_modules/eslint/node_modules/regextras/dist/index-umd.min.js deleted file mode 100644 index d663d9eddb2c47..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/dist/index-umd.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).RegExtras={})}(this,(function(e){"use strict";function n(e,n){for(var t=0;t2&&void 0!==arguments[2]?arguments[2]:e.lastIndex;return n=n||"",(e=new RegExp(e.source,(n.includes("g")||e.global?"g":"")+(n.includes("i")||e.ignoreCase?"i":"")+(n.includes("m")||e.multiline?"m":"")+(n.includes("u")||e.unicode?"u":"")+(n.includes("y")||e.sticky?"y":"")+(n.includes("s")||e.dotAll?"s":""))).lastIndex=t,e}e.RegExtras=function(){function e(n,t,r){!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.regex=c("string"==typeof n?new RegExp(n):c(n),t||"",r)}var t,r,u;return t=e,(r=[{key:"forEach",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=c(this.regex,"g"),l=0;null!==(t=i.exec(e));)r=t.splice(0,1),n.apply(u,t.concat(l++,r));return this}},{key:"some",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=c(this.regex,"g"),l=0;null!==(t=i.exec(e));)if(r=t.splice(0,1),n.apply(u,t.concat(l++,r)))return!0;return!1}},{key:"every",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=c(this.regex,"g"),l=0;null!==(t=i.exec(e));)if(r=t.splice(0,1),!n.apply(u,t.concat(l++,r)))return!1;return!0}},{key:"map",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=[],l=c(this.regex,"g"),o=0;null!==(t=l.exec(e));)r=t.splice(0,1),i.push(n.apply(u,t.concat(o++,r)));return i}},{key:"filter",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=0,l=[],o=c(this.regex,"g");null!==(t=o.exec(e));)r=t.splice(0,1),t=t.concat(i++,r),n.apply(u,t)&&l.push(r[0]);return l}},{key:"reduce",value:function(e,n,t){var r,u,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,l=0,o=c(this.regex,"g");for(t||null!==(r=o.exec(e))&&(u=r.splice(0,1),t=n.apply(i,[""].concat(r.concat(l++,u))));null!==(r=o.exec(e));)u=r.splice(0,1),t=n.apply(i,[t].concat(r.concat(l++,u)));return t}},{key:"reduceRight",value:function(e,n,t,r){var u,i,l,o=r,a=t,s=[],f=c(this.regex,"g");for(o=o||null;null!==(u=f.exec(e));)s.push(u);if(!(l=s.length)){if(arguments.length<3)throw new TypeError("reduce of empty matches array with no initial value");return a}return a||(u=s.splice(-1)[0],i=u.splice(0,1),a=n.apply(o,[""].concat(u.concat(l--,i)))),s.reduceRight((function(e,t){return i=t.splice(0,1),a=n.apply(o,[a].concat(t.concat(l--,i))),e}),s),a}},{key:"find",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=0,l=c(this.regex,"g");null!==(t=l.exec(e));)if(r=t.splice(0,1),n.apply(u,t.concat(i++,r)))return r[0];return!1}},{key:"findIndex",value:function(e,n){for(var t,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,u=c(this.regex,"g"),i=0;null!==(t=u.exec(e));){var l=t.splice(0,1),o=n.apply(r,t.concat(i++,l));if(o)return i-1}return-1}},{key:"findExec",value:function(e,n){for(var t,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,u=c(this.regex,"g"),i=0;null!==(t=u.exec(e));){var l=t.splice(0,1),o=n.apply(r,t.concat(i++,l));if(o)return t}return!1}},{key:"filterExec",value:function(e,n){for(var t,r,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=0,l=[],o=c(this.regex,"g");null!==(t=o.exec(e));)r=t.splice(0,1),t.push(i++,r[0]),n.apply(u,t)&&l.push(t);return l}}])&&n(t.prototype,r),u&&n(t,u),e}();var i,l=e.RegExtras;e.RegExtras=function(){for(var e=arguments.length,n=new Array(e),t=0;t 2 && arguments[2] !== undefined ? arguments[2] : regex.lastIndex; - newFlags = newFlags || ''; - regex = new RegExp(regex.source, (newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') + (newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') + (newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') + (newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') + (newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') + (newFlags.includes('s') ? 's' : regex.dotAll ? 's' : '')); - regex.lastIndex = newLastIndex; - return regex; -} - -var RegExtras = /*#__PURE__*/function () { - function RegExtras(regex, flags, newLastIndex) { - _classCallCheck(this, RegExtras); - - this.regex = mixinRegex(typeof regex === 'string' ? new RegExp(regex) : mixinRegex(regex), flags || '', newLastIndex); - } - - _createClass(RegExtras, [{ - key: "forEach", - value: function forEach(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - - return this; - } - }, { - key: "some", - value: function some(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - ret, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return true; - } - } - - return false; - } - }, { - key: "every", - value: function every(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - ret, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (!ret) { - return false; - } - } - - return true; - } - }, { - key: "map", - value: function map(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var ret = []; - var regex = mixinRegex(this.regex, 'g'); - var matches, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - - return ret; - } - }, { - key: "filter", - value: function filter(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = [], - regex = mixinRegex(this.regex, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - - if (cb.apply(thisObj, matches)) { - ret.push(n0[0]); - } - } - - return ret; - } - }, { - key: "reduce", - value: function reduce(str, cb, prev) { - var thisObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - var matches, - n0, - i = 0; - var regex = mixinRegex(this.regex, 'g'); - - if (!prev) { - if ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i++, n0))); - } - } - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(i++, n0))); - } - - return prev; - } - }, { - key: "reduceRight", - value: function reduceRight(str, cb, prevOrig, thisObjOrig) { - var matches, - n0, - i, - thisObj = thisObjOrig, - prev = prevOrig; - var matchesContainer = [], - regex = mixinRegex(this.regex, 'g'); - thisObj = thisObj || null; - - while ((matches = regex.exec(str)) !== null) { - matchesContainer.push(matches); - } - - i = matchesContainer.length; - - if (!i) { - if (arguments.length < 3) { - throw new TypeError('reduce of empty matches array with no initial value'); - } - - return prev; - } - - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i--, n0))); - } - - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(i--, n0))); - return container; - }, matchesContainer); - return prev; - } - }, { - key: "find", - value: function find(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this.regex, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return n0[0]; - } - } - - return false; - } - }, { - key: "findIndex", - value: function findIndex(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - var n0 = matches.splice(0, 1); - var ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return i - 1; - } - } - - return -1; - } - }, { - key: "findExec", - value: function findExec(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - var n0 = matches.splice(0, 1); - var ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return matches; - } - } - - return false; - } - }, { - key: "filterExec", - value: function filterExec(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = [], - regex = mixinRegex(this.regex, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches.push(i++, n0[0]); - - if (cb.apply(thisObj, matches)) { - ret.push(matches); - } - } - - return ret; - } - }]); - - return RegExtras; -}(); - -var _RegExtras = RegExtras; - -RegExtras = function RegExtras() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - // eslint-disable-line no-class-assign - return _construct(_RegExtras, args); -}; - -RegExtras.prototype = _RegExtras.prototype; -RegExtras.mixinRegex = mixinRegex; - -export { RegExtras, mixinRegex }; diff --git a/tools/node_modules/eslint/node_modules/regextras/dist/main-umd.js b/tools/node_modules/eslint/node_modules/regextras/dist/main-umd.js deleted file mode 100644 index a744ec100a7824..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/dist/main-umd.js +++ /dev/null @@ -1,352 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.RegExtras = {})); -}(this, (function (exports) { 'use strict'; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); - return true; - } catch (e) { - return false; - } - } - - function _construct(Parent, args, Class) { - if (_isNativeReflectConstruct()) { - _construct = Reflect.construct; - } else { - _construct = function _construct(Parent, args, Class) { - var a = [null]; - a.push.apply(a, args); - var Constructor = Function.bind.apply(Parent, a); - var instance = new Constructor(); - if (Class) _setPrototypeOf(instance, Class.prototype); - return instance; - }; - } - - return _construct.apply(null, arguments); - } - - /* eslint-disable node/no-unsupported-features/es-syntax */ - - /** - * @param {RegExp} regex - * @param {string} newFlags - * @param {Integer} [newLastIndex=regex.lastIndex] - * @returns {RegExp} - */ - function mixinRegex(regex, newFlags) { - var newLastIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : regex.lastIndex; - newFlags = newFlags || ''; - regex = new RegExp(regex.source, (newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') + (newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') + (newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') + (newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') + (newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') + (newFlags.includes('s') ? 's' : regex.dotAll ? 's' : '')); - regex.lastIndex = newLastIndex; - return regex; - } - - exports.RegExtras = /*#__PURE__*/function () { - function RegExtras(regex, flags, newLastIndex) { - _classCallCheck(this, RegExtras); - - this.regex = mixinRegex(typeof regex === 'string' ? new RegExp(regex) : mixinRegex(regex), flags || '', newLastIndex); - } - - _createClass(RegExtras, [{ - key: "forEach", - value: function forEach(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - - return this; - } - }, { - key: "some", - value: function some(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - ret, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return true; - } - } - - return false; - } - }, { - key: "every", - value: function every(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - ret, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (!ret) { - return false; - } - } - - return true; - } - }, { - key: "map", - value: function map(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var ret = []; - var regex = mixinRegex(this.regex, 'g'); - var matches, - n0, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - - return ret; - } - }, { - key: "filter", - value: function filter(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = [], - regex = mixinRegex(this.regex, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - - if (cb.apply(thisObj, matches)) { - ret.push(n0[0]); - } - } - - return ret; - } - }, { - key: "reduce", - value: function reduce(str, cb, prev) { - var thisObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - var matches, - n0, - i = 0; - var regex = mixinRegex(this.regex, 'g'); - - if (!prev) { - if ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i++, n0))); - } - } - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(i++, n0))); - } - - return prev; - } - }, { - key: "reduceRight", - value: function reduceRight(str, cb, prevOrig, thisObjOrig) { - var matches, - n0, - i, - thisObj = thisObjOrig, - prev = prevOrig; - var matchesContainer = [], - regex = mixinRegex(this.regex, 'g'); - thisObj = thisObj || null; - - while ((matches = regex.exec(str)) !== null) { - matchesContainer.push(matches); - } - - i = matchesContainer.length; - - if (!i) { - if (arguments.length < 3) { - throw new TypeError('reduce of empty matches array with no initial value'); - } - - return prev; - } - - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i--, n0))); - } - - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(i--, n0))); - return container; - }, matchesContainer); - return prev; - } - }, { - key: "find", - value: function find(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this.regex, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return n0[0]; - } - } - - return false; - } - }, { - key: "findIndex", - value: function findIndex(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - var n0 = matches.splice(0, 1); - var ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return i - 1; - } - } - - return -1; - } - }, { - key: "findExec", - value: function findExec(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var regex = mixinRegex(this.regex, 'g'); - var matches, - i = 0; - - while ((matches = regex.exec(str)) !== null) { - var n0 = matches.splice(0, 1); - var ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return matches; - } - } - - return false; - } - }, { - key: "filterExec", - value: function filterExec(str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = [], - regex = mixinRegex(this.regex, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches.push(i++, n0[0]); - - if (cb.apply(thisObj, matches)) { - ret.push(matches); - } - } - - return ret; - } - }]); - - return RegExtras; - }(); - - var _RegExtras = exports.RegExtras; - - exports.RegExtras = function RegExtras() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - // eslint-disable-line no-class-assign - return _construct(_RegExtras, args); - }; - - exports.RegExtras.prototype = _RegExtras.prototype; - exports.RegExtras.mixinRegex = mixinRegex; - - exports.mixinRegex = mixinRegex; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); diff --git a/tools/node_modules/eslint/node_modules/regextras/dist/prototype-es.js b/tools/node_modules/eslint/node_modules/regextras/dist/prototype-es.js deleted file mode 100644 index b6630dee374ff4..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/dist/prototype-es.js +++ /dev/null @@ -1,170 +0,0 @@ -/* eslint-disable node/no-unsupported-features/es-syntax */ - -/** - * @param {RegExp} regex - * @param {string} newFlags - * @param {Integer} [newLastIndex=regex.lastIndex] - * @returns {RegExp} - */ -function mixinRegex(regex, newFlags) { - var newLastIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : regex.lastIndex; - newFlags = newFlags || ''; - regex = new RegExp(regex.source, (newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') + (newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') + (newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') + (newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') + (newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') + (newFlags.includes('s') ? 's' : regex.dotAll ? 's' : '')); - regex.lastIndex = newLastIndex; - return regex; -} - -/* eslint-disable no-extend-native, - no-use-extend-native/no-use-extend-native, - node/no-unsupported-features/es-syntax */ - -RegExp.prototype.forEach = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - - return this; -}; - -RegExp.prototype.some = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return true; - } - } - - return false; -}; - -RegExp.prototype.every = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (!ret) { - return false; - } - } - - return true; -}; - -RegExp.prototype.map = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - - return ret; -}; - -RegExp.prototype.filter = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - - if (cb.apply(thisObj, matches)) { - ret.push(matches[0]); - } - } - - return ret; -}; - -RegExp.prototype.reduce = function (str, cb, prev) { - var thisObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - var matches, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - if (!prev) { - if ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(n0, i++))); - } - } - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(n0, i++))); - } - - return prev; -}; - -RegExp.prototype.reduceRight = function (str, cb, prevOrig, thisObjOrig) { - var matches, - n0, - i, - prev = prevOrig, - thisObj = thisObjOrig; - var regex = mixinRegex(this, 'g'); - var matchesContainer = []; - thisObj = thisObj || null; - - while ((matches = regex.exec(str)) !== null) { - matchesContainer.push(matches); - } - - i = matchesContainer.length; - - if (!i) { - if (arguments.length < 3) { - throw new TypeError('reduce of empty matches array with no initial value'); - } - - return prev; - } - - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(n0, i--))); - } - - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(n0, i--))); - return container; - }, matchesContainer); - return prev; -}; diff --git a/tools/node_modules/eslint/node_modules/regextras/dist/prototype-umd.js b/tools/node_modules/eslint/node_modules/regextras/dist/prototype-umd.js deleted file mode 100644 index 552f1d52dc2885..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/dist/prototype-umd.js +++ /dev/null @@ -1,177 +0,0 @@ -(function (factory) { - typeof define === 'function' && define.amd ? define(factory) : - factory(); -}((function () { 'use strict'; - - /* eslint-disable node/no-unsupported-features/es-syntax */ - - /** - * @param {RegExp} regex - * @param {string} newFlags - * @param {Integer} [newLastIndex=regex.lastIndex] - * @returns {RegExp} - */ - function mixinRegex(regex, newFlags) { - var newLastIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : regex.lastIndex; - newFlags = newFlags || ''; - regex = new RegExp(regex.source, (newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') + (newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') + (newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') + (newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') + (newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') + (newFlags.includes('s') ? 's' : regex.dotAll ? 's' : '')); - regex.lastIndex = newLastIndex; - return regex; - } - - /* eslint-disable no-extend-native, - no-use-extend-native/no-use-extend-native, - node/no-unsupported-features/es-syntax */ - - RegExp.prototype.forEach = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - - return this; - }; - - RegExp.prototype.some = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return true; - } - } - - return false; - }; - - RegExp.prototype.every = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (!ret) { - return false; - } - } - - return true; - }; - - RegExp.prototype.map = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - - return ret; - }; - - RegExp.prototype.filter = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - - if (cb.apply(thisObj, matches)) { - ret.push(matches[0]); - } - } - - return ret; - }; - - RegExp.prototype.reduce = function (str, cb, prev) { - var thisObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - var matches, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - if (!prev) { - if ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(n0, i++))); - } - } - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(n0, i++))); - } - - return prev; - }; - - RegExp.prototype.reduceRight = function (str, cb, prevOrig, thisObjOrig) { - var matches, - n0, - i, - prev = prevOrig, - thisObj = thisObjOrig; - var regex = mixinRegex(this, 'g'); - var matchesContainer = []; - thisObj = thisObj || null; - - while ((matches = regex.exec(str)) !== null) { - matchesContainer.push(matches); - } - - i = matchesContainer.length; - - if (!i) { - if (arguments.length < 3) { - throw new TypeError('reduce of empty matches array with no initial value'); - } - - return prev; - } - - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(n0, i--))); - } - - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(n0, i--))); - return container; - }, matchesContainer); - return prev; - }; - -}))); diff --git a/tools/node_modules/eslint/node_modules/regextras/dist/regexp-prototype-es.js b/tools/node_modules/eslint/node_modules/regextras/dist/regexp-prototype-es.js deleted file mode 100644 index 9d7fad59ad9d2b..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/dist/regexp-prototype-es.js +++ /dev/null @@ -1,250 +0,0 @@ -/* eslint-disable node/no-unsupported-features/es-syntax */ - -/** - * @param {RegExp} regex - * @param {string} newFlags - * @param {Integer} [newLastIndex=regex.lastIndex] - * @returns {RegExp} - */ -function mixinRegex(regex, newFlags) { - var newLastIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : regex.lastIndex; - newFlags = newFlags || ''; - regex = new RegExp(regex.source, (newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') + (newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') + (newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') + (newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') + (newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') + (newFlags.includes('s') ? 's' : regex.dotAll ? 's' : '')); - regex.lastIndex = newLastIndex; - return regex; -} - -/* eslint-disable no-extend-native, - no-use-extend-native/no-use-extend-native, - node/no-unsupported-features/es-syntax */ - -RegExp.prototype.forEach = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - - return this; -}; - -RegExp.prototype.some = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return true; - } - } - - return false; -}; - -RegExp.prototype.every = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (!ret) { - return false; - } - } - - return true; -}; - -RegExp.prototype.map = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - - return ret; -}; - -RegExp.prototype.filter = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - - if (cb.apply(thisObj, matches)) { - ret.push(n0[0]); - } - } - - return ret; -}; - -RegExp.prototype.reduce = function (str, cb, prev) { - var thisObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - var matches, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - if (!prev) { - if ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i++, n0))); - } - } - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(i++, n0))); - } - - return prev; -}; - -RegExp.prototype.reduceRight = function (str, cb, prevOrig, thisObjOrig) { - var matches, - n0, - i, - prev = prevOrig, - thisObj = thisObjOrig; - var regex = mixinRegex(this, 'g'); - var matchesContainer = []; - thisObj = thisObj || null; - - while ((matches = regex.exec(str)) !== null) { - matchesContainer.push(matches); - } - - i = matchesContainer.length; - - if (!i) { - if (arguments.length < 3) { - throw new TypeError('reduce of empty matches array with no initial value'); - } - - return prev; - } - - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i--, n0))); - } - - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(i--, n0))); - return container; - }, matchesContainer); - return prev; -}; - -RegExp.prototype.find = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return n0[0]; - } - } - - return false; -}; - -RegExp.prototype.findIndex = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return i - 1; - } - } - - return -1; -}; - -RegExp.prototype.findExec = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return matches; - } - } - - return false; -}; - -RegExp.prototype.filterExec = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = [], - regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches.push(i++, n0[0]); - - if (cb.apply(thisObj, matches)) { - ret.push(matches); - } - } - - return ret; -}; diff --git a/tools/node_modules/eslint/node_modules/regextras/dist/regexp-prototype-umd.js b/tools/node_modules/eslint/node_modules/regextras/dist/regexp-prototype-umd.js deleted file mode 100644 index 01bd099b09517b..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/dist/regexp-prototype-umd.js +++ /dev/null @@ -1,257 +0,0 @@ -(function (factory) { - typeof define === 'function' && define.amd ? define(factory) : - factory(); -}((function () { 'use strict'; - - /* eslint-disable node/no-unsupported-features/es-syntax */ - - /** - * @param {RegExp} regex - * @param {string} newFlags - * @param {Integer} [newLastIndex=regex.lastIndex] - * @returns {RegExp} - */ - function mixinRegex(regex, newFlags) { - var newLastIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : regex.lastIndex; - newFlags = newFlags || ''; - regex = new RegExp(regex.source, (newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') + (newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') + (newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') + (newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') + (newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') + (newFlags.includes('s') ? 's' : regex.dotAll ? 's' : '')); - regex.lastIndex = newLastIndex; - return regex; - } - - /* eslint-disable no-extend-native, - no-use-extend-native/no-use-extend-native, - node/no-unsupported-features/es-syntax */ - - RegExp.prototype.forEach = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - - return this; - }; - - RegExp.prototype.some = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return true; - } - } - - return false; - }; - - RegExp.prototype.every = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (!ret) { - return false; - } - } - - return true; - }; - - RegExp.prototype.map = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - - return ret; - }; - - RegExp.prototype.filter = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - - if (cb.apply(thisObj, matches)) { - ret.push(n0[0]); - } - } - - return ret; - }; - - RegExp.prototype.reduce = function (str, cb, prev) { - var thisObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - var matches, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - if (!prev) { - if ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i++, n0))); - } - } - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(i++, n0))); - } - - return prev; - }; - - RegExp.prototype.reduceRight = function (str, cb, prevOrig, thisObjOrig) { - var matches, - n0, - i, - prev = prevOrig, - thisObj = thisObjOrig; - var regex = mixinRegex(this, 'g'); - var matchesContainer = []; - thisObj = thisObj || null; - - while ((matches = regex.exec(str)) !== null) { - matchesContainer.push(matches); - } - - i = matchesContainer.length; - - if (!i) { - if (arguments.length < 3) { - throw new TypeError('reduce of empty matches array with no initial value'); - } - - return prev; - } - - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i--, n0))); - } - - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(i--, n0))); - return container; - }, matchesContainer); - return prev; - }; - - RegExp.prototype.find = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return n0[0]; - } - } - - return false; - }; - - RegExp.prototype.findIndex = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return i - 1; - } - } - - return -1; - }; - - RegExp.prototype.findExec = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - var regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return matches; - } - } - - return false; - }; - - RegExp.prototype.filterExec = function (str, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = [], - regex = mixinRegex(this, 'g'); - - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches.push(i++, n0[0]); - - if (cb.apply(thisObj, matches)) { - ret.push(matches); - } - } - - return ret; - }; - -}))); diff --git a/tools/node_modules/eslint/node_modules/regextras/dist/string-prototype-es.js b/tools/node_modules/eslint/node_modules/regextras/dist/string-prototype-es.js deleted file mode 100644 index dcb05f926e10c7..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/dist/string-prototype-es.js +++ /dev/null @@ -1,248 +0,0 @@ -/* eslint-disable node/no-unsupported-features/es-syntax */ - -/** - * @param {RegExp} regex - * @param {string} newFlags - * @param {Integer} [newLastIndex=regex.lastIndex] - * @returns {RegExp} - */ -function mixinRegex(regex, newFlags) { - var newLastIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : regex.lastIndex; - newFlags = newFlags || ''; - regex = new RegExp(regex.source, (newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') + (newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') + (newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') + (newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') + (newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') + (newFlags.includes('s') ? 's' : regex.dotAll ? 's' : '')); - regex.lastIndex = newLastIndex; - return regex; -} - -// We copy the regular expression so as to be able to always ensure the exec - -String.prototype.forEach = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - - return this; -}; - -String.prototype.some = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return true; - } - } - - return false; -}; - -String.prototype.every = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (!ret) { - return false; - } - } - - return true; -}; - -String.prototype.map = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - - return ret; -}; - -String.prototype.filter = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - - if (cb.apply(thisObj, matches)) { - ret.push(n0[0]); - } - } - - return ret; -}; - -String.prototype.reduce = function (regex, cb, prev) { - var thisObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - var matches, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - if (!prev) { - if ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i++, n0))); - } - } - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(i++, n0))); - } - - return prev; -}; - -String.prototype.reduceRight = function (regex, cb, prevOrig, thisObjOrig) { - var matches, - n0, - i, - prev = prevOrig, - thisObj = thisObjOrig; - var matchesContainer = []; - regex = mixinRegex(regex, 'g'); - thisObj = thisObj || null; - - while ((matches = regex.exec(this)) !== null) { - matchesContainer.push(matches); - } - - i = matchesContainer.length; - - if (!i) { - if (arguments.length < 3) { - throw new TypeError('reduce of empty matches array with no initial value'); - } - - return prev; - } - - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i--, n0))); - } - - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(i--, n0))); - return container; - }, matchesContainer); - return prev; -}; - -String.prototype.find = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return n0[0]; - } - } - - return false; -}; - -String.prototype.findIndex = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return i - 1; - } - } - - return -1; -}; - -String.prototype.findExec = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return matches; - } - } - - return false; -}; - -String.prototype.filterExec = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - matches.push(i++, n0[0]); - - if (cb.apply(thisObj, matches)) { - ret.push(matches); - } - } - - return ret; -}; diff --git a/tools/node_modules/eslint/node_modules/regextras/dist/string-prototype-umd.js b/tools/node_modules/eslint/node_modules/regextras/dist/string-prototype-umd.js deleted file mode 100644 index ee23111e3f8d34..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/dist/string-prototype-umd.js +++ /dev/null @@ -1,255 +0,0 @@ -(function (factory) { - typeof define === 'function' && define.amd ? define(factory) : - factory(); -}((function () { 'use strict'; - - /* eslint-disable node/no-unsupported-features/es-syntax */ - - /** - * @param {RegExp} regex - * @param {string} newFlags - * @param {Integer} [newLastIndex=regex.lastIndex] - * @returns {RegExp} - */ - function mixinRegex(regex, newFlags) { - var newLastIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : regex.lastIndex; - newFlags = newFlags || ''; - regex = new RegExp(regex.source, (newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') + (newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') + (newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') + (newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') + (newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') + (newFlags.includes('s') ? 's' : regex.dotAll ? 's' : '')); - regex.lastIndex = newLastIndex; - return regex; - } - - // We copy the regular expression so as to be able to always ensure the exec - - String.prototype.forEach = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - - return this; - }; - - String.prototype.some = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return true; - } - } - - return false; - }; - - String.prototype.every = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (!ret) { - return false; - } - } - - return true; - }; - - String.prototype.map = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - - return ret; - }; - - String.prototype.filter = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - - if (cb.apply(thisObj, matches)) { - ret.push(n0[0]); - } - } - - return ret; - }; - - String.prototype.reduce = function (regex, cb, prev) { - var thisObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - var matches, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - if (!prev) { - if ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i++, n0))); - } - } - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(i++, n0))); - } - - return prev; - }; - - String.prototype.reduceRight = function (regex, cb, prevOrig, thisObjOrig) { - var matches, - n0, - i, - prev = prevOrig, - thisObj = thisObjOrig; - var matchesContainer = []; - regex = mixinRegex(regex, 'g'); - thisObj = thisObj || null; - - while ((matches = regex.exec(this)) !== null) { - matchesContainer.push(matches); - } - - i = matchesContainer.length; - - if (!i) { - if (arguments.length < 3) { - throw new TypeError('reduce of empty matches array with no initial value'); - } - - return prev; - } - - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i--, n0))); - } - - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(i--, n0))); - return container; - }, matchesContainer); - return prev; - }; - - String.prototype.find = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return n0[0]; - } - } - - return false; - }; - - String.prototype.findIndex = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return i - 1; - } - } - - return -1; - }; - - String.prototype.findExec = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - ret, - n0, - i = 0; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - - if (ret) { - return matches; - } - } - - return false; - }; - - String.prototype.filterExec = function (regex, cb) { - var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - var matches, - n0, - i = 0; - var ret = []; - regex = mixinRegex(regex, 'g'); - - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - matches.push(i++, n0[0]); - - if (cb.apply(thisObj, matches)) { - ret.push(matches); - } - } - - return ret; - }; - -}))); diff --git a/tools/node_modules/eslint/node_modules/regextras/lgtm.yml b/tools/node_modules/eslint/node_modules/regextras/lgtm.yml deleted file mode 100644 index bb188bae8063b8..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/lgtm.yml +++ /dev/null @@ -1,5 +0,0 @@ -extraction: - javascript: - index: - filters: - - exclude: "dist" diff --git a/tools/node_modules/eslint/node_modules/regextras/package.json b/tools/node_modules/eslint/node_modules/regextras/package.json deleted file mode 100644 index ecb604f2053bd1..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "name": "regextras", - "version": "0.8.0", - "license": "MIT", - "author": "Brett Zamir", - "contributors": [], - "repository": "https://github.com/brettz9/regextras", - "homepage": "https://github.com/brettz9/regextras", - "bugs": "https://github.com/brettz9/regextras/issues", - "scripts": { - "eslint": "eslint --ext=js,md,html .", - "lint": "npm run eslint", - "rollup": "rollup -c", - "start": "static -p 8081", - "coverage": "open-cli http://localhost:8081/coverage && npm start", - "mocha": "mocha --require esm --require chai/register-assert --require chai/register-expect test/test.*.js --exit", - "nyc": "rm -Rf ./node_modules/.cache && nyc npm run mocha", - "test": "npm run eslint && npm run rollup && npm run nyc", - "test-browser": "npm run eslint && npm run rollup && open-cli http://127.0.0.1:8081/tests/regextras.html && npm start" - }, - "nyc": { - "reporter": [ - "html", - "text" - ], - "exclude": [ - ".eslintrc.js", - "rollup.config.js", - "dist", - "node_modules", - "test", - "tests" - ] - }, - "browserslist": [ - "cover 100%" - ], - "main": "dist/index-umd.js", - "module": "dist/index-es.js", - "keywords": [ - "regex", - "regexp", - "regular expression" - ], - "description": "Array extras for regular expressions", - "engines": { - "node": ">=0.1.14" - }, - "dependencies": {}, - "devDependencies": { - "@babel/core": "^7.14.3", - "@babel/preset-env": "^7.14.2", - "@brettz9/eslint-plugin": "^1.0.3", - "@brettz9/node-static": "^0.1.1", - "@rollup/plugin-babel": "^5.3.0", - "chai": "^4.3.4", - "core-js-bundle": "^3.12.1", - "eslint": "^7.27.0", - "eslint-config-ash-nazg": "^29.16.0", - "eslint-config-standard": "^16.0.2", - "eslint-plugin-array-func": "^3.1.7", - "eslint-plugin-chai-expect": "^2.2.0", - "eslint-plugin-chai-friendly": "^0.7.1", - "eslint-plugin-compat": "^3.9.0", - "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-html": "^6.1.2", - "eslint-plugin-import": "^2.23.3", - "eslint-plugin-jsdoc": "^35.0.0", - "eslint-plugin-markdown": "^2.1.0", - "eslint-plugin-no-unsanitized": "^3.1.5", - "eslint-plugin-no-use-extend-native": "^0.5.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.0", - "eslint-plugin-radar": "^0.2.1", - "eslint-plugin-standard": "^4.1.0", - "eslint-plugin-unicorn": "^32.0.1", - "esm": "^3.2.25", - "mocha": "^8.4.0", - "nyc": "^15.1.0", - "open-cli": "^6.0.1", - "regenerator-runtime": "^0.13.7", - "rollup": "2.49.0", - "rollup-plugin-terser": "^7.0.2" - } -} diff --git a/tools/node_modules/eslint/node_modules/regextras/pnpm-lock.yaml b/tools/node_modules/eslint/node_modules/regextras/pnpm-lock.yaml deleted file mode 100644 index 3bce11018624ea..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/pnpm-lock.yaml +++ /dev/null @@ -1,4437 +0,0 @@ -lockfileVersion: 5.3 - -specifiers: - '@babel/core': ^7.14.3 - '@babel/preset-env': ^7.14.2 - '@brettz9/eslint-plugin': ^1.0.3 - '@brettz9/node-static': ^0.1.1 - '@rollup/plugin-babel': ^5.3.0 - chai: ^4.3.4 - core-js-bundle: ^3.12.1 - eslint: ^7.27.0 - eslint-config-ash-nazg: ^29.16.0 - eslint-config-standard: ^16.0.2 - eslint-plugin-array-func: ^3.1.7 - eslint-plugin-chai-expect: ^2.2.0 - eslint-plugin-chai-friendly: ^0.7.1 - eslint-plugin-compat: ^3.9.0 - eslint-plugin-eslint-comments: ^3.2.0 - eslint-plugin-html: ^6.1.2 - eslint-plugin-import: ^2.23.3 - eslint-plugin-jsdoc: ^35.0.0 - eslint-plugin-markdown: ^2.1.0 - eslint-plugin-no-unsanitized: ^3.1.5 - eslint-plugin-no-use-extend-native: ^0.5.0 - eslint-plugin-node: ^11.1.0 - eslint-plugin-promise: ^5.1.0 - eslint-plugin-radar: ^0.2.1 - eslint-plugin-standard: ^4.1.0 - eslint-plugin-unicorn: ^32.0.1 - esm: ^3.2.25 - mocha: ^8.4.0 - nyc: ^15.1.0 - open-cli: ^6.0.1 - regenerator-runtime: ^0.13.7 - rollup: 2.49.0 - rollup-plugin-terser: ^7.0.2 - -devDependencies: - '@babel/core': 7.14.3 - '@babel/preset-env': 7.14.2_@babel+core@7.14.3 - '@brettz9/eslint-plugin': 1.0.3_eslint@7.27.0 - '@brettz9/node-static': 0.1.1 - '@rollup/plugin-babel': 5.3.0_@babel+core@7.14.3+rollup@2.49.0 - chai: 4.3.4 - core-js-bundle: 3.12.1 - eslint: 7.27.0 - eslint-config-ash-nazg: 29.16.0_86bc859d2c4079058d807e5716b4b586 - eslint-config-standard: 16.0.2_54a118fc6338897394bb0683ed693a07 - eslint-plugin-array-func: 3.1.7_eslint@7.27.0 - eslint-plugin-chai-expect: 2.2.0_eslint@7.27.0 - eslint-plugin-chai-friendly: 0.7.1_eslint@7.27.0 - eslint-plugin-compat: 3.9.0_eslint@7.27.0 - eslint-plugin-eslint-comments: 3.2.0_eslint@7.27.0 - eslint-plugin-html: 6.1.2 - eslint-plugin-import: 2.23.3_eslint@7.27.0 - eslint-plugin-jsdoc: 35.0.0_eslint@7.27.0 - eslint-plugin-markdown: 2.1.0_eslint@7.27.0 - eslint-plugin-no-unsanitized: 3.1.5_eslint@7.27.0 - eslint-plugin-no-use-extend-native: 0.5.0 - eslint-plugin-node: 11.1.0_eslint@7.27.0 - eslint-plugin-promise: 5.1.0_eslint@7.27.0 - eslint-plugin-radar: 0.2.1_eslint@7.27.0 - eslint-plugin-standard: 4.1.0_eslint@7.27.0 - eslint-plugin-unicorn: 32.0.1_eslint@7.27.0 - esm: 3.2.25 - mocha: 8.4.0 - nyc: 15.1.0 - open-cli: 6.0.1 - regenerator-runtime: 0.13.7 - rollup: 2.49.0 - rollup-plugin-terser: 7.0.2_rollup@2.49.0 - -packages: - - /@babel/code-frame/7.12.11: - resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} - dependencies: - '@babel/highlight': 7.14.0 - dev: true - - /@babel/code-frame/7.12.13: - resolution: {integrity: sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==} - dependencies: - '@babel/highlight': 7.14.0 - dev: true - - /@babel/compat-data/7.14.0: - resolution: {integrity: sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==} - dev: true - - /@babel/core/7.14.3: - resolution: {integrity: sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.12.13 - '@babel/generator': 7.14.3 - '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 - '@babel/helper-module-transforms': 7.14.2 - '@babel/helpers': 7.14.0 - '@babel/parser': 7.14.3 - '@babel/template': 7.12.13 - '@babel/traverse': 7.14.2 - '@babel/types': 7.14.2 - convert-source-map: 1.7.0 - debug: 4.3.1 - gensync: 1.0.0-beta.2 - json5: 2.2.0 - semver: 6.3.0 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/eslint-parser/7.14.3_@babel+core@7.14.3+eslint@7.27.0: - resolution: {integrity: sha512-IfJXKEVRV/Gisvgmih/+05gkBzzg4Dy0gcxkZ84iFiLK8+O+fI1HLnGJv3UrUMPpsMmmThNa69v+UnF80XP+kA==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': '>=7.11.0' - eslint: '>=7.5.0' - dependencies: - '@babel/core': 7.14.3 - eslint: 7.27.0 - eslint-scope: 5.1.1 - eslint-visitor-keys: 2.1.0 - semver: 6.3.0 - dev: true - - /@babel/generator/7.14.3: - resolution: {integrity: sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==} - dependencies: - '@babel/types': 7.14.2 - jsesc: 2.5.2 - source-map: 0.5.7 - dev: true - - /@babel/helper-annotate-as-pure/7.12.13: - resolution: {integrity: sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==} - dependencies: - '@babel/types': 7.14.2 - dev: true - - /@babel/helper-builder-binary-assignment-operator-visitor/7.12.13: - resolution: {integrity: sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==} - dependencies: - '@babel/helper-explode-assignable-expression': 7.13.0 - '@babel/types': 7.14.2 - dev: true - - /@babel/helper-compilation-targets/7.13.16_@babel+core@7.14.3: - resolution: {integrity: sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.14.0 - '@babel/core': 7.14.3 - '@babel/helper-validator-option': 7.12.17 - browserslist: 4.16.6 - semver: 6.3.0 - dev: true - - /@babel/helper-create-class-features-plugin/7.14.3_@babel+core@7.14.3: - resolution: {integrity: sha512-BnEfi5+6J2Lte9LeiL6TxLWdIlEv9Woacc1qXzXBgbikcOzMRM2Oya5XGg/f/ngotv1ej2A/b+3iJH8wbS1+lQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-annotate-as-pure': 7.12.13 - '@babel/helper-function-name': 7.14.2 - '@babel/helper-member-expression-to-functions': 7.13.12 - '@babel/helper-optimise-call-expression': 7.12.13 - '@babel/helper-replace-supers': 7.14.3 - '@babel/helper-split-export-declaration': 7.12.13 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-create-regexp-features-plugin/7.14.3_@babel+core@7.14.3: - resolution: {integrity: sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-annotate-as-pure': 7.12.13 - regexpu-core: 4.7.1 - dev: true - - /@babel/helper-define-polyfill-provider/0.2.1_@babel+core@7.14.3: - resolution: {integrity: sha512-x3AUTVZNPunaw1opRTa5OwVA5N0YxGlIad9xQ5QflK1uIS7PnAGGU5O2Dj/G183fR//N8AzTq+Q8+oiu9m0VFg==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 - '@babel/helper-module-imports': 7.13.12 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/traverse': 7.14.2 - debug: 4.3.1 - lodash.debounce: 4.0.8 - resolve: 1.20.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-explode-assignable-expression/7.13.0: - resolution: {integrity: sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==} - dependencies: - '@babel/types': 7.14.2 - dev: true - - /@babel/helper-function-name/7.14.2: - resolution: {integrity: sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==} - dependencies: - '@babel/helper-get-function-arity': 7.12.13 - '@babel/template': 7.12.13 - '@babel/types': 7.14.2 - dev: true - - /@babel/helper-get-function-arity/7.12.13: - resolution: {integrity: sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==} - dependencies: - '@babel/types': 7.14.2 - dev: true - - /@babel/helper-hoist-variables/7.13.16: - resolution: {integrity: sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==} - dependencies: - '@babel/traverse': 7.14.2 - '@babel/types': 7.14.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-member-expression-to-functions/7.13.12: - resolution: {integrity: sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==} - dependencies: - '@babel/types': 7.14.2 - dev: true - - /@babel/helper-module-imports/7.13.12: - resolution: {integrity: sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==} - dependencies: - '@babel/types': 7.14.2 - dev: true - - /@babel/helper-module-transforms/7.14.2: - resolution: {integrity: sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==} - dependencies: - '@babel/helper-module-imports': 7.13.12 - '@babel/helper-replace-supers': 7.14.3 - '@babel/helper-simple-access': 7.13.12 - '@babel/helper-split-export-declaration': 7.12.13 - '@babel/helper-validator-identifier': 7.14.0 - '@babel/template': 7.12.13 - '@babel/traverse': 7.14.2 - '@babel/types': 7.14.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-optimise-call-expression/7.12.13: - resolution: {integrity: sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==} - dependencies: - '@babel/types': 7.14.2 - dev: true - - /@babel/helper-plugin-utils/7.13.0: - resolution: {integrity: sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==} - dev: true - - /@babel/helper-remap-async-to-generator/7.13.0: - resolution: {integrity: sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==} - dependencies: - '@babel/helper-annotate-as-pure': 7.12.13 - '@babel/helper-wrap-function': 7.13.0 - '@babel/types': 7.14.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-replace-supers/7.14.3: - resolution: {integrity: sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA==} - dependencies: - '@babel/helper-member-expression-to-functions': 7.13.12 - '@babel/helper-optimise-call-expression': 7.12.13 - '@babel/traverse': 7.14.2 - '@babel/types': 7.14.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-simple-access/7.13.12: - resolution: {integrity: sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==} - dependencies: - '@babel/types': 7.14.2 - dev: true - - /@babel/helper-skip-transparent-expression-wrappers/7.12.1: - resolution: {integrity: sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==} - dependencies: - '@babel/types': 7.14.2 - dev: true - - /@babel/helper-split-export-declaration/7.12.13: - resolution: {integrity: sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==} - dependencies: - '@babel/types': 7.14.2 - dev: true - - /@babel/helper-validator-identifier/7.14.0: - resolution: {integrity: sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==} - dev: true - - /@babel/helper-validator-option/7.12.17: - resolution: {integrity: sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==} - dev: true - - /@babel/helper-wrap-function/7.13.0: - resolution: {integrity: sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==} - dependencies: - '@babel/helper-function-name': 7.14.2 - '@babel/template': 7.12.13 - '@babel/traverse': 7.14.2 - '@babel/types': 7.14.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helpers/7.14.0: - resolution: {integrity: sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==} - dependencies: - '@babel/template': 7.12.13 - '@babel/traverse': 7.14.2 - '@babel/types': 7.14.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight/7.14.0: - resolution: {integrity: sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==} - dependencies: - '@babel/helper-validator-identifier': 7.14.0 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/parser/7.14.3: - resolution: {integrity: sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dev: true - - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.13.12_@babel+core@7.14.3: - resolution: {integrity: sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.12.1 - '@babel/plugin-proposal-optional-chaining': 7.14.2_@babel+core@7.14.3 - dev: true - - /@babel/plugin-proposal-async-generator-functions/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/helper-remap-async-to-generator': 7.13.0 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-class-properties/7.13.0_@babel+core@7.14.3: - resolution: {integrity: sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-class-features-plugin': 7.14.3_@babel+core@7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-class-static-block/7.14.3_@babel+core@7.14.3: - resolution: {integrity: sha512-HEjzp5q+lWSjAgJtSluFDrGGosmwTgKwCXdDQZvhKsRlwv3YdkUEqxNrrjesJd+B9E9zvr1PVPVBvhYZ9msjvQ==} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-class-features-plugin': 7.14.3_@babel+core@7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/plugin-syntax-class-static-block': 7.12.13_@babel+core@7.14.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-dynamic-import/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.3 - dev: true - - /@babel/plugin-proposal-export-namespace-from/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.14.3 - dev: true - - /@babel/plugin-proposal-json-strings/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.3 - dev: true - - /@babel/plugin-proposal-logical-assignment-operators/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.3 - dev: true - - /@babel/plugin-proposal-nullish-coalescing-operator/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.3 - dev: true - - /@babel/plugin-proposal-numeric-separator/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.3 - dev: true - - /@babel/plugin-proposal-object-rest-spread/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.14.0 - '@babel/core': 7.14.3 - '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-transform-parameters': 7.14.2_@babel+core@7.14.3 - dev: true - - /@babel/plugin-proposal-optional-catch-binding/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.3 - dev: true - - /@babel/plugin-proposal-optional-chaining/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.12.1 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.3 - dev: true - - /@babel/plugin-proposal-private-methods/7.13.0_@babel+core@7.14.3: - resolution: {integrity: sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-class-features-plugin': 7.14.3_@babel+core@7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-private-property-in-object/7.14.0_@babel+core@7.14.3: - resolution: {integrity: sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-annotate-as-pure': 7.12.13 - '@babel/helper-create-class-features-plugin': 7.14.3_@babel+core@7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.0_@babel+core@7.14.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-proposal-unicode-property-regex/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-regexp-features-plugin': 7.14.3_@babel+core@7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.14.3: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-class-static-block/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.14.3: - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.14.3: - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.14.3: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.14.3: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.14.3: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.14.3: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.14.3: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.14.3: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.14.3: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-private-property-in-object/7.14.0_@babel+core@7.14.3: - resolution: {integrity: sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-syntax-top-level-await/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-arrow-functions/7.13.0_@babel+core@7.14.3: - resolution: {integrity: sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-async-to-generator/7.13.0_@babel+core@7.14.3: - resolution: {integrity: sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-module-imports': 7.13.12 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/helper-remap-async-to-generator': 7.13.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-block-scoped-functions/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-block-scoping/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-classes/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-annotate-as-pure': 7.12.13 - '@babel/helper-function-name': 7.14.2 - '@babel/helper-optimise-call-expression': 7.12.13 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/helper-replace-supers': 7.14.3 - '@babel/helper-split-export-declaration': 7.12.13 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-computed-properties/7.13.0_@babel+core@7.14.3: - resolution: {integrity: sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-destructuring/7.13.17_@babel+core@7.14.3: - resolution: {integrity: sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-dotall-regex/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-regexp-features-plugin': 7.14.3_@babel+core@7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-duplicate-keys/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-exponentiation-operator/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.12.13 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-for-of/7.13.0_@babel+core@7.14.3: - resolution: {integrity: sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-function-name/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-function-name': 7.14.2 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-literals/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-member-expression-literals/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-modules-amd/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-module-transforms': 7.14.2 - '@babel/helper-plugin-utils': 7.13.0 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-commonjs/7.14.0_@babel+core@7.14.3: - resolution: {integrity: sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-module-transforms': 7.14.2 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/helper-simple-access': 7.13.12 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-systemjs/7.13.8_@babel+core@7.14.3: - resolution: {integrity: sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-hoist-variables': 7.13.16 - '@babel/helper-module-transforms': 7.14.2 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/helper-validator-identifier': 7.14.0 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-modules-umd/7.14.0_@babel+core@7.14.3: - resolution: {integrity: sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-module-transforms': 7.14.2 - '@babel/helper-plugin-utils': 7.13.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-named-capturing-groups-regex/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-regexp-features-plugin': 7.14.3_@babel+core@7.14.3 - dev: true - - /@babel/plugin-transform-new-target/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-object-super/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/helper-replace-supers': 7.14.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/plugin-transform-parameters/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-property-literals/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-regenerator/7.13.15_@babel+core@7.14.3: - resolution: {integrity: sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - regenerator-transform: 0.14.5 - dev: true - - /@babel/plugin-transform-reserved-words/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-shorthand-properties/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-spread/7.13.0_@babel+core@7.14.3: - resolution: {integrity: sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.12.1 - dev: true - - /@babel/plugin-transform-sticky-regex/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-template-literals/7.13.0_@babel+core@7.14.3: - resolution: {integrity: sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-typeof-symbol/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-unicode-escapes/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/plugin-transform-unicode-regex/7.12.13_@babel+core@7.14.3: - resolution: {integrity: sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-regexp-features-plugin': 7.14.3_@babel+core@7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - dev: true - - /@babel/preset-env/7.14.2_@babel+core@7.14.3: - resolution: {integrity: sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.14.0 - '@babel/core': 7.14.3 - '@babel/helper-compilation-targets': 7.13.16_@babel+core@7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/helper-validator-option': 7.12.17 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.13.12_@babel+core@7.14.3 - '@babel/plugin-proposal-async-generator-functions': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-proposal-class-properties': 7.13.0_@babel+core@7.14.3 - '@babel/plugin-proposal-class-static-block': 7.14.3_@babel+core@7.14.3 - '@babel/plugin-proposal-dynamic-import': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-proposal-export-namespace-from': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-proposal-json-strings': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-proposal-logical-assignment-operators': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-proposal-numeric-separator': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-proposal-object-rest-spread': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-proposal-optional-catch-binding': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-proposal-optional-chaining': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-proposal-private-methods': 7.13.0_@babel+core@7.14.3 - '@babel/plugin-proposal-private-property-in-object': 7.14.0_@babel+core@7.14.3 - '@babel/plugin-proposal-unicode-property-regex': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.3 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-syntax-class-static-block': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.3 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.3 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-private-property-in-object': 7.14.0_@babel+core@7.14.3 - '@babel/plugin-syntax-top-level-await': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-arrow-functions': 7.13.0_@babel+core@7.14.3 - '@babel/plugin-transform-async-to-generator': 7.13.0_@babel+core@7.14.3 - '@babel/plugin-transform-block-scoped-functions': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-block-scoping': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-transform-classes': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-transform-computed-properties': 7.13.0_@babel+core@7.14.3 - '@babel/plugin-transform-destructuring': 7.13.17_@babel+core@7.14.3 - '@babel/plugin-transform-dotall-regex': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-duplicate-keys': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-exponentiation-operator': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-for-of': 7.13.0_@babel+core@7.14.3 - '@babel/plugin-transform-function-name': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-literals': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-member-expression-literals': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-modules-amd': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-transform-modules-commonjs': 7.14.0_@babel+core@7.14.3 - '@babel/plugin-transform-modules-systemjs': 7.13.8_@babel+core@7.14.3 - '@babel/plugin-transform-modules-umd': 7.14.0_@babel+core@7.14.3 - '@babel/plugin-transform-named-capturing-groups-regex': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-new-target': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-object-super': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-parameters': 7.14.2_@babel+core@7.14.3 - '@babel/plugin-transform-property-literals': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-regenerator': 7.13.15_@babel+core@7.14.3 - '@babel/plugin-transform-reserved-words': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-shorthand-properties': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-spread': 7.13.0_@babel+core@7.14.3 - '@babel/plugin-transform-sticky-regex': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-template-literals': 7.13.0_@babel+core@7.14.3 - '@babel/plugin-transform-typeof-symbol': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-unicode-escapes': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-unicode-regex': 7.12.13_@babel+core@7.14.3 - '@babel/preset-modules': 0.1.4_@babel+core@7.14.3 - '@babel/types': 7.14.2 - babel-plugin-polyfill-corejs2: 0.2.1_@babel+core@7.14.3 - babel-plugin-polyfill-corejs3: 0.2.1_@babel+core@7.14.3 - babel-plugin-polyfill-regenerator: 0.2.1_@babel+core@7.14.3 - core-js-compat: 3.12.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/preset-modules/0.1.4_@babel+core@7.14.3: - resolution: {integrity: sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.13.0 - '@babel/plugin-proposal-unicode-property-regex': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-transform-dotall-regex': 7.12.13_@babel+core@7.14.3 - '@babel/types': 7.14.2 - esutils: 2.0.3 - dev: true - - /@babel/runtime/7.14.0: - resolution: {integrity: sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==} - dependencies: - regenerator-runtime: 0.13.7 - dev: true - - /@babel/template/7.12.13: - resolution: {integrity: sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==} - dependencies: - '@babel/code-frame': 7.12.13 - '@babel/parser': 7.14.3 - '@babel/types': 7.14.2 - dev: true - - /@babel/traverse/7.14.2: - resolution: {integrity: sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==} - dependencies: - '@babel/code-frame': 7.12.13 - '@babel/generator': 7.14.3 - '@babel/helper-function-name': 7.14.2 - '@babel/helper-split-export-declaration': 7.12.13 - '@babel/parser': 7.14.3 - '@babel/types': 7.14.2 - debug: 4.3.1 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types/7.14.2: - resolution: {integrity: sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==} - dependencies: - '@babel/helper-validator-identifier': 7.14.0 - to-fast-properties: 2.0.0 - dev: true - - /@brettz9/eslint-plugin/1.0.3_eslint@7.27.0: - resolution: {integrity: sha512-2ESGw4oZJ5IvkFitzRXzfdUY8hzSPSanQ8i+adzWMQPK7jxxUHkZ6GEslOd7GjHFZIcwqc1xVXVU0itf8zYFGA==} - engines: {node: '>=10.0.0'} - peerDependencies: - eslint: '>=7.20.0' - dependencies: - eslint: 7.27.0 - dev: true - - /@brettz9/node-static/0.1.1: - resolution: {integrity: sha512-HHD3JKDCTxudQ7btLDykPlzLBFl+RM70vC6Zsvey1cr9m67UBOmwiP0f2Bk7IjjU3G1c4vAJCjysVxPkmHs7Ew==} - engines: {node: '>=10.0.0'} - hasBin: true - dependencies: - colors: 1.4.0 - mime: 2.5.2 - minimatch: 3.0.4 - neodoc: 2.0.2 - dev: true - - /@es-joy/jsdoccomment/0.7.2: - resolution: {integrity: sha512-i5p0VgxeCXbf5aPLPY9s9Fz6K5BkzYdbRCisw/vEY/FXAxUJ8SiAifPwkFUm0CJrmZ8tFBGW8bUtM7wiE4KTIA==} - engines: {node: '>=10.0.0'} - dependencies: - comment-parser: 1.1.5 - esquery: 1.4.0 - jsdoctypeparser: 9.0.0 - dev: true - - /@eslint/eslintrc/0.4.1: - resolution: {integrity: sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.1 - espree: 7.3.1 - globals: 12.4.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - js-yaml: 3.14.1 - minimatch: 3.0.4 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@istanbuljs/load-nyc-config/1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema/0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true - - /@mdn/browser-compat-data/2.0.7: - resolution: {integrity: sha512-GeeM827DlzFFidn1eKkMBiqXFD2oLsnZbaiGhByPl0vcapsRzUL+t9hDoov1swc9rB2jw64R+ihtzC8qOE9wXw==} - engines: {node: '>=10.0.0'} - dependencies: - extend: 3.0.2 - dev: true - - /@rollup/plugin-babel/5.3.0_@babel+core@7.14.3+rollup@2.49.0: - resolution: {integrity: sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==} - engines: {node: '>= 10.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-module-imports': 7.13.12 - '@rollup/pluginutils': 3.1.0_rollup@2.49.0 - rollup: 2.49.0 - dev: true - - /@rollup/pluginutils/3.1.0_rollup@2.49.0: - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.0 - rollup: 2.49.0 - dev: true - - /@tokenizer/token/0.1.1: - resolution: {integrity: sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==} - dev: true - - /@types/debug/4.1.5: - resolution: {integrity: sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==} - dev: true - - /@types/estree/0.0.39: - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - dev: true - - /@types/json5/0.0.29: - resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} - dev: true - - /@types/minimist/1.2.1: - resolution: {integrity: sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==} - dev: true - - /@types/node/15.6.0: - resolution: {integrity: sha512-gCYSfQpy+LYhOFTKAeE8BkyGqaxmlFxe+n4DKM6DR0wzw/HISUE/hAmkC/KT8Sw5PCJblqg062b3z9gucv3k0A==} - dev: true - - /@types/normalize-package-data/2.4.0: - resolution: {integrity: sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==} - dev: true - - /@ungap/promise-all-settled/1.1.2: - resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} - dev: true - - /acorn-jsx/5.3.1_acorn@7.4.1: - resolution: {integrity: sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 7.4.1 - dev: true - - /acorn/7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /aggregate-error/3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: true - - /ajv/6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /ajv/8.5.0: - resolution: {integrity: sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - - /ansi-colors/4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - dev: true - - /ansi-regex/2.1.1: - resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=} - engines: {node: '>=0.10.0'} - dev: true - - /ansi-regex/3.0.0: - resolution: {integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=} - engines: {node: '>=4'} - dev: true - - /ansi-regex/5.0.0: - resolution: {integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==} - engines: {node: '>=8'} - dev: true - - /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.0 - dev: true - - /append-transform/2.0.0: - resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} - engines: {node: '>=8'} - dependencies: - default-require-extensions: 3.0.0 - dev: true - - /archy/1.0.0: - resolution: {integrity: sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=} - dev: true - - /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - - /argparse/2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /array-includes/3.1.3: - resolution: {integrity: sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.18.0 - get-intrinsic: 1.1.1 - is-string: 1.0.6 - dev: true - - /array.prototype.flat/1.2.4: - resolution: {integrity: sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.18.0 - dev: true - - /arrify/1.0.1: - resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} - engines: {node: '>=0.10.0'} - dev: true - - /assertion-error/1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true - - /ast-metadata-inferer/0.4.0: - resolution: {integrity: sha512-tKHdBe8N/Vq2nLAm4YPBVREVZjMux6KrqyPfNQgIbDl0t7HaNSmy8w4OyVHYg/cvyn5BW7o7pVwpjPte89Zhcg==} - dev: true - - /astral-regex/2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true - - /babel-plugin-dynamic-import-node/2.3.3: - resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} - dependencies: - object.assign: 4.1.2 - dev: true - - /babel-plugin-polyfill-corejs2/0.2.1_@babel+core@7.14.3: - resolution: {integrity: sha512-hXGSPbr6IbjeMyGew+3uGIAkRjBFSOJ9FLDZNOfHuyJZCcoia4nd/72J0bSgvfytcVfUcP/dxEVcUhVJuQRtSw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.14.0 - '@babel/core': 7.14.3 - '@babel/helper-define-polyfill-provider': 0.2.1_@babel+core@7.14.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-corejs3/0.2.1_@babel+core@7.14.3: - resolution: {integrity: sha512-WZCqF3DLUhdTD/P381MDJfuP18hdCZ+iqJ+wHtzhWENpsiof284JJ1tMQg1CE+hfCWyG48F7e5gDMk2c3Laz7w==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-define-polyfill-provider': 0.2.1_@babel+core@7.14.3 - core-js-compat: 3.12.1 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-polyfill-regenerator/0.2.1_@babel+core@7.14.3: - resolution: {integrity: sha512-T3bYyL3Sll2EtC94v3f+fA8M28q7YPTOZdB++SRHjvYZTvtd+WorMUq3tDTD4Q7Kjk1LG0gGromslKjcO5p2TA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-define-polyfill-provider': 0.2.1_@babel+core@7.14.3 - transitivePeerDependencies: - - supports-color - dev: true - - /bail/1.0.5: - resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} - dev: true - - /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - - /binary-extensions/2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - - /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /braces/3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - - /browser-stdout/1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - dev: true - - /browserslist/4.16.6: - resolution: {integrity: sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001228 - colorette: 1.2.2 - electron-to-chromium: 1.3.736 - escalade: 3.1.1 - node-releases: 1.1.72 - dev: true - - /buffer-from/1.1.1: - resolution: {integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==} - dev: true - - /builtin-modules/3.2.0: - resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==} - engines: {node: '>=6'} - dev: true - - /caching-transform/4.0.0: - resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} - engines: {node: '>=8'} - dependencies: - hasha: 5.2.2 - make-dir: 3.1.0 - package-hash: 4.0.0 - write-file-atomic: 3.0.3 - dev: true - - /call-bind/1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.1.1 - dev: true - - /callsites/3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true - - /camelcase-keys/6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - map-obj: 4.2.1 - quick-lru: 4.0.1 - dev: true - - /camelcase/5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true - - /camelcase/6.2.0: - resolution: {integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==} - engines: {node: '>=10'} - dev: true - - /caniuse-lite/1.0.30001228: - resolution: {integrity: sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==} - dev: true - - /chai/4.3.4: - resolution: {integrity: sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.2 - deep-eql: 3.0.1 - get-func-name: 2.0.0 - pathval: 1.1.1 - type-detect: 4.0.8 - dev: true - - /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - - /chalk/4.1.1: - resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /character-entities-legacy/1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} - dev: true - - /character-entities/1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} - dev: true - - /character-reference-invalid/1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} - dev: true - - /check-error/1.0.2: - resolution: {integrity: sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=} - dev: true - - /chokidar/3.5.1: - resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.2 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.1 - normalize-path: 3.0.0 - readdirp: 3.5.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /ci-info/3.1.1: - resolution: {integrity: sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ==} - dev: true - - /clean-regexp/1.0.0: - resolution: {integrity: sha1-jffHquUf02h06PjQW5GAvBGj/tc=} - engines: {node: '>=4'} - dependencies: - escape-string-regexp: 1.0.5 - dev: true - - /clean-stack/2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true - - /cliui/6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - dependencies: - string-width: 4.2.2 - strip-ansi: 6.0.0 - wrap-ansi: 6.2.0 - dev: true - - /cliui/7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.2 - strip-ansi: 6.0.0 - wrap-ansi: 7.0.0 - dev: true - - /collapse-white-space/1.0.6: - resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} - dev: true - - /color-convert/1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - - /color-name/1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} - dev: true - - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - - /colorette/1.2.2: - resolution: {integrity: sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==} - dev: true - - /colors/1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - dev: true - - /commander/2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true - - /comment-parser/1.1.5: - resolution: {integrity: sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==} - engines: {node: '>= 10.0.0'} - dev: true - - /commondir/1.0.1: - resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} - dev: true - - /concat-map/0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - dev: true - - /convert-source-map/1.7.0: - resolution: {integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /core-js-bundle/3.12.1: - resolution: {integrity: sha512-4xo0s+HI15r0HEVLy6LhFoPqVlwQKxgl/tbgDfcRziFa5gAUxyEPUtPVXi2VPcSVYIJ8JSG+SOvy/aLPD7M6Fw==} - requiresBuild: true - dev: true - - /core-js-compat/3.12.1: - resolution: {integrity: sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ==} - dependencies: - browserslist: 4.16.6 - semver: 7.0.0 - dev: true - - /core-js/3.12.1: - resolution: {integrity: sha512-Ne9DKPHTObRuB09Dru5AjwKjY4cJHVGu+y5f7coGn1E9Grkc3p2iBwE9AI/nJzsE29mQF7oq+mhYYRqOMFN1Bw==} - requiresBuild: true - dev: true - - /cross-spawn/7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /debug/2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - dependencies: - ms: 2.0.0 - dev: true - - /debug/3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - dependencies: - ms: 2.1.3 - dev: true - - /debug/4.3.1: - resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /debug/4.3.1_supports-color@8.1.1: - resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - supports-color: 8.1.1 - dev: true - - /decamelize-keys/1.1.0: - resolution: {integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=} - engines: {node: '>=0.10.0'} - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - dev: true - - /decamelize/1.2.0: - resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} - engines: {node: '>=0.10.0'} - dev: true - - /decamelize/4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - dev: true - - /deep-eql/3.0.1: - resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} - engines: {node: '>=0.12'} - dependencies: - type-detect: 4.0.8 - dev: true - - /deep-is/0.1.3: - resolution: {integrity: sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=} - dev: true - - /default-require-extensions/3.0.0: - resolution: {integrity: sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==} - engines: {node: '>=8'} - dependencies: - strip-bom: 4.0.0 - dev: true - - /define-properties/1.1.3: - resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} - engines: {node: '>= 0.4'} - dependencies: - object-keys: 1.1.1 - dev: true - - /diff/5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - dev: true - - /doctrine/2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /doctrine/3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /dom-serializer/1.3.2: - resolution: {integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==} - dependencies: - domelementtype: 2.2.0 - domhandler: 4.2.0 - entities: 2.2.0 - dev: true - - /domelementtype/2.2.0: - resolution: {integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==} - dev: true - - /domhandler/4.2.0: - resolution: {integrity: sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.2.0 - dev: true - - /domutils/2.6.0: - resolution: {integrity: sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==} - dependencies: - dom-serializer: 1.3.2 - domelementtype: 2.2.0 - domhandler: 4.2.0 - dev: true - - /electron-to-chromium/1.3.736: - resolution: {integrity: sha512-DY8dA7gR51MSo66DqitEQoUMQ0Z+A2DSXFi7tK304bdTVqczCAfUuyQw6Wdg8hIoo5zIxkU1L24RQtUce1Ioig==} - dev: true - - /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - - /enquirer/2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.1 - dev: true - - /entities/2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: true - - /error-ex/1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true - - /es-abstract/1.18.0: - resolution: {integrity: sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - es-to-primitive: 1.2.1 - function-bind: 1.1.1 - get-intrinsic: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.2 - is-callable: 1.2.3 - is-negative-zero: 2.0.1 - is-regex: 1.1.3 - is-string: 1.0.6 - object-inspect: 1.10.3 - object-keys: 1.1.1 - object.assign: 4.1.2 - string.prototype.trimend: 1.0.4 - string.prototype.trimstart: 1.0.4 - unbox-primitive: 1.0.1 - dev: true - - /es-to-primitive/1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.3 - is-date-object: 1.0.4 - is-symbol: 1.0.4 - dev: true - - /es6-error/4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - dev: true - - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - - /escape-string-regexp/1.0.5: - resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} - engines: {node: '>=0.8.0'} - dev: true - - /escape-string-regexp/4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true - - /eslint-config-ash-nazg/29.16.0_86bc859d2c4079058d807e5716b4b586: - resolution: {integrity: sha512-tD/qdNcUek9ZY8rHIWI6gJj/1GGYN73uSqeedu6AMS7YGlz8j0YoUZGhjt7HHMRASf9B3cT44EnMb5xT1QFCmw==} - engines: {node: '>=10.0.0'} - peerDependencies: - '@brettz9/eslint-plugin': ^1.0.3 - eslint: ^7.27.0 - eslint-config-standard: ^16.0.2 - eslint-plugin-array-func: ^3.1.7 - eslint-plugin-compat: ^3.9.0 - eslint-plugin-eslint-comments: ^3.2.0 - eslint-plugin-html: ^6.1.2 - eslint-plugin-import: ^2.23.3 - eslint-plugin-jsdoc: ^35.0.0 - eslint-plugin-markdown: ^2.1.0 - eslint-plugin-no-unsanitized: ^3.1.5 - eslint-plugin-no-use-extend-native: ^0.5.0 - eslint-plugin-node: ^11.1.0 - eslint-plugin-promise: ^5.1.0 - eslint-plugin-radar: ^0.2.1 - eslint-plugin-unicorn: ^32.0.1 - dependencies: - '@brettz9/eslint-plugin': 1.0.3_eslint@7.27.0 - eslint: 7.27.0 - eslint-config-standard: 16.0.2_54a118fc6338897394bb0683ed693a07 - eslint-plugin-array-func: 3.1.7_eslint@7.27.0 - eslint-plugin-compat: 3.9.0_eslint@7.27.0 - eslint-plugin-eslint-comments: 3.2.0_eslint@7.27.0 - eslint-plugin-html: 6.1.2 - eslint-plugin-import: 2.23.3_eslint@7.27.0 - eslint-plugin-jsdoc: 35.0.0_eslint@7.27.0 - eslint-plugin-markdown: 2.1.0_eslint@7.27.0 - eslint-plugin-no-unsanitized: 3.1.5_eslint@7.27.0 - eslint-plugin-no-use-extend-native: 0.5.0 - eslint-plugin-node: 11.1.0_eslint@7.27.0 - eslint-plugin-promise: 5.1.0_eslint@7.27.0 - eslint-plugin-radar: 0.2.1_eslint@7.27.0 - eslint-plugin-unicorn: 32.0.1_eslint@7.27.0 - semver: 7.3.5 - dev: true - - /eslint-config-standard/16.0.2_54a118fc6338897394bb0683ed693a07: - resolution: {integrity: sha512-fx3f1rJDsl9bY7qzyX8SAtP8GBSk6MfXFaTfaGgk12aAYW4gJSyRm7dM790L6cbXv63fvjY4XeSzXnb4WM+SKw==} - peerDependencies: - eslint: ^7.12.1 - eslint-plugin-import: ^2.22.1 - eslint-plugin-node: ^11.1.0 - eslint-plugin-promise: ^4.2.1 - dependencies: - eslint: 7.27.0 - eslint-plugin-import: 2.23.3_eslint@7.27.0 - eslint-plugin-node: 11.1.0_eslint@7.27.0 - eslint-plugin-promise: 5.1.0_eslint@7.27.0 - dev: true - - /eslint-import-resolver-node/0.3.4: - resolution: {integrity: sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==} - dependencies: - debug: 2.6.9 - resolve: 1.20.0 - dev: true - - /eslint-module-utils/2.6.1: - resolution: {integrity: sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==} - engines: {node: '>=4'} - dependencies: - debug: 3.2.7 - pkg-dir: 2.0.0 - dev: true - - /eslint-plugin-array-func/3.1.7_eslint@7.27.0: - resolution: {integrity: sha512-fB5TBICjHSTGToNTbCCgR8zsngpUkoCM31EMh/M/NEAyNg90i5rUuG0dnNNBML2n0BzM0nBE3sPvo2SEWf6jlA==} - engines: {node: '>= 6.8.0'} - peerDependencies: - eslint: '>=3.0.0' - dependencies: - eslint: 7.27.0 - dev: true - - /eslint-plugin-chai-expect/2.2.0_eslint@7.27.0: - resolution: {integrity: sha512-ExTJKhgeYMfY8wDj3UiZmgpMKJOUHGNHmWMlxT49JUDB1vTnw0sSNfXJSxnX+LcebyBD/gudXzjzD136WqPJrQ==} - engines: {node: 6.* || 8.* || >= 10.*} - peerDependencies: - eslint: '>=2.0.0 <= 7.x' - dependencies: - eslint: 7.27.0 - dev: true - - /eslint-plugin-chai-friendly/0.7.1_eslint@7.27.0: - resolution: {integrity: sha512-0xhGiSQ+9oWtNc6IZPUR+6ChKbEvLXwT9oZZ5NcGlPzHVKGn1YKwQFj7a9yL3rnRKbWF7b3RkRYEP8kN6dPOwQ==} - engines: {node: '>=0.10.0'} - peerDependencies: - eslint: '>=3.0.0' - dependencies: - eslint: 7.27.0 - dev: true - - /eslint-plugin-compat/3.9.0_eslint@7.27.0: - resolution: {integrity: sha512-lt3l5PHFHVEYSZ5zijcoYvtQJPsBifRiH5N0Et57KwVu7l/yxmHhSG6VJiLMa/lXrg93Qu8049RNQOMn0+yJBg==} - engines: {node: '>=9.x'} - peerDependencies: - eslint: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - dependencies: - '@mdn/browser-compat-data': 2.0.7 - ast-metadata-inferer: 0.4.0 - browserslist: 4.16.6 - caniuse-lite: 1.0.30001228 - core-js: 3.12.1 - eslint: 7.27.0 - find-up: 4.1.0 - lodash.memoize: 4.1.2 - semver: 7.3.2 - dev: true - - /eslint-plugin-es/3.0.1_eslint@7.27.0: - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' - dependencies: - eslint: 7.27.0 - eslint-utils: 2.1.0 - regexpp: 3.1.0 - dev: true - - /eslint-plugin-eslint-comments/3.2.0_eslint@7.27.0: - resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} - engines: {node: '>=6.5.0'} - peerDependencies: - eslint: '>=4.19.1' - dependencies: - escape-string-regexp: 1.0.5 - eslint: 7.27.0 - ignore: 5.1.8 - dev: true - - /eslint-plugin-html/6.1.2: - resolution: {integrity: sha512-bhBIRyZFqI4EoF12lGDHAmgfff8eLXx6R52/K3ESQhsxzCzIE6hdebS7Py651f7U3RBotqroUnC3L29bR7qJWQ==} - dependencies: - htmlparser2: 6.1.0 - dev: true - - /eslint-plugin-import/2.23.3_eslint@7.27.0: - resolution: {integrity: sha512-wDxdYbSB55F7T5CC7ucDjY641VvKmlRwT0Vxh7PkY1mI4rclVRFWYfsrjDgZvwYYDZ5ee0ZtfFKXowWjqvEoRQ==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 - dependencies: - array-includes: 3.1.3 - array.prototype.flat: 1.2.4 - debug: 2.6.9 - doctrine: 2.1.0 - eslint: 7.27.0 - eslint-import-resolver-node: 0.3.4 - eslint-module-utils: 2.6.1 - find-up: 2.1.0 - has: 1.0.3 - is-core-module: 2.4.0 - minimatch: 3.0.4 - object.values: 1.1.3 - pkg-up: 2.0.0 - read-pkg-up: 3.0.0 - resolve: 1.20.0 - tsconfig-paths: 3.9.0 - dev: true - - /eslint-plugin-jsdoc/35.0.0_eslint@7.27.0: - resolution: {integrity: sha512-n92EO6g84qzjF4Lyvg+hDouMQTRHCKvW0hRobGRza0aqbG9fmmlS4p1x8cvPPAc0P87TmahMZnrP0F7hPOcAoQ==} - engines: {node: '>=12'} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 - dependencies: - '@es-joy/jsdoccomment': 0.7.2 - comment-parser: 1.1.5 - debug: 4.3.1 - eslint: 7.27.0 - esquery: 1.4.0 - jsdoctypeparser: 9.0.0 - lodash: 4.17.21 - regextras: 0.7.1 - semver: 7.3.5 - spdx-expression-parse: 3.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-markdown/2.1.0_eslint@7.27.0: - resolution: {integrity: sha512-Rqw7tosArdlzXcR/xJGW3Er9gRiF7iE+QEMEm7hZZ/feZjUf8xCaGQJgB1nzs9yVhJnUeiAcj5TXLLfKMbp3DQ==} - engines: {node: ^8.10.0 || ^10.12.0 || >= 12.0.0} - peerDependencies: - eslint: '>=6.0.0' - dependencies: - eslint: 7.27.0 - remark-parse: 7.0.2 - unified: 6.2.0 - dev: true - - /eslint-plugin-no-unsanitized/3.1.5_eslint@7.27.0: - resolution: {integrity: sha512-s/6w++p1590h/H/dE2Wo660bOkaM/3OEK14Y7xm1UT0bafxkKw1Cq0ksjxkxLdH/WWd014DlsLKuD6CyNrR2Dw==} - peerDependencies: - eslint: ^5 || ^6 || ^7 - dependencies: - eslint: 7.27.0 - dev: true - - /eslint-plugin-no-use-extend-native/0.5.0: - resolution: {integrity: sha512-dBNjs8hor8rJgeXLH4HTut5eD3RGWf9JUsadIfuL7UosVQ/dnvOKwxEcRrXrFxrMZ8llUVWT+hOimxJABsAUzQ==} - engines: {node: '>=6.0.0'} - dependencies: - is-get-set-prop: 1.0.0 - is-js-type: 2.0.0 - is-obj-prop: 1.0.0 - is-proto-prop: 2.0.0 - dev: true - - /eslint-plugin-node/11.1.0_eslint@7.27.0: - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=5.16.0' - dependencies: - eslint: 7.27.0 - eslint-plugin-es: 3.0.1_eslint@7.27.0 - eslint-utils: 2.1.0 - ignore: 5.1.8 - minimatch: 3.0.4 - resolve: 1.20.0 - semver: 6.3.0 - dev: true - - /eslint-plugin-promise/5.1.0_eslint@7.27.0: - resolution: {integrity: sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^7.0.0 - dependencies: - eslint: 7.27.0 - dev: true - - /eslint-plugin-radar/0.2.1_eslint@7.27.0: - resolution: {integrity: sha512-aOc1MK6ddL45X6mS6zEqFIKy/c/qnwjhNycDecaFMw5acUsD744ZCZf2cG7yxLhMv71mBSwr6pZdu+26+Zzk5A==} - engines: {node: '>=10'} - peerDependencies: - eslint: '>= 3.0.0 <= 7.x.x' - dependencies: - eslint: 7.27.0 - dev: true - - /eslint-plugin-standard/4.1.0_eslint@7.27.0: - resolution: {integrity: sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ==} - peerDependencies: - eslint: '>=5.0.0' - dependencies: - eslint: 7.27.0 - dev: true - - /eslint-plugin-unicorn/32.0.1_eslint@7.27.0: - resolution: {integrity: sha512-LaZ9utnXtOJjnoDkpm+nQsONUUmyRR0WD6PGROSdQRRW3LRmgK/ZP8wxjW+Ai+2uolKTtuJzLx2mvbIeIoLqpg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=7.23.0' - dependencies: - ci-info: 3.1.1 - clean-regexp: 1.0.0 - eslint: 7.27.0 - eslint-template-visitor: 2.3.2_eslint@7.27.0 - eslint-utils: 2.1.0 - import-modules: 2.1.0 - is-builtin-module: 3.1.0 - lodash: 4.17.21 - pluralize: 8.0.0 - read-pkg-up: 7.0.1 - regexp-tree: 0.1.23 - reserved-words: 0.1.2 - safe-regex: 2.1.1 - semver: 7.3.5 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-scope/5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /eslint-template-visitor/2.3.2_eslint@7.27.0: - resolution: {integrity: sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA==} - peerDependencies: - eslint: '>=7.0.0' - dependencies: - '@babel/core': 7.14.3 - '@babel/eslint-parser': 7.14.3_@babel+core@7.14.3+eslint@7.27.0 - eslint: 7.27.0 - eslint-visitor-keys: 2.1.0 - esquery: 1.4.0 - multimap: 1.1.0 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-utils/2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} - dependencies: - eslint-visitor-keys: 1.3.0 - dev: true - - /eslint-visitor-keys/1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - dev: true - - /eslint-visitor-keys/2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint/7.27.0: - resolution: {integrity: sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA==} - engines: {node: ^10.12.0 || >=12.0.0} - hasBin: true - dependencies: - '@babel/code-frame': 7.12.11 - '@eslint/eslintrc': 0.4.1 - ajv: 6.12.6 - chalk: 4.1.1 - cross-spawn: 7.0.3 - debug: 4.3.1 - doctrine: 3.0.0 - enquirer: 2.3.6 - escape-string-regexp: 4.0.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - eslint-visitor-keys: 2.1.0 - espree: 7.3.1 - esquery: 1.4.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 5.1.2 - globals: 13.8.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.1 - js-yaml: 3.14.1 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.0.4 - natural-compare: 1.4.0 - optionator: 0.9.1 - progress: 2.0.3 - regexpp: 3.1.0 - semver: 7.3.5 - strip-ansi: 6.0.0 - strip-json-comments: 3.1.1 - table: 6.7.1 - text-table: 0.2.0 - v8-compile-cache: 2.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /esm/3.2.25: - resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} - engines: {node: '>=6'} - dev: true - - /espree/7.3.1: - resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - acorn: 7.4.1 - acorn-jsx: 5.3.1_acorn@7.4.1 - eslint-visitor-keys: 1.3.0 - dev: true - - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /esquery/1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.2.0 - dev: true - - /esrecurse/4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.2.0 - dev: true - - /estraverse/4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - - /estraverse/5.2.0: - resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} - engines: {node: '>=4.0'} - dev: true - - /estree-walker/1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - dev: true - - /esutils/2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /extend/3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: true - - /fast-deep-equal/3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-json-stable-stringify/2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein/2.0.6: - resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} - dev: true - - /file-entry-cache/6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.0.4 - dev: true - - /file-type/14.7.1: - resolution: {integrity: sha512-sXAMgFk67fQLcetXustxfKX+PZgHIUFn96Xld9uH8aXPdX3xOp0/jg9OdouVTvQrf7mrn+wAa4jN/y9fUOOiRA==} - engines: {node: '>=8'} - dependencies: - readable-web-to-node-stream: 2.0.0 - strtok3: 6.0.8 - token-types: 2.1.1 - typedarray-to-buffer: 3.1.5 - dev: true - - /fill-range/7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - - /find-cache-dir/3.3.1: - resolution: {integrity: sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==} - engines: {node: '>=8'} - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - dev: true - - /find-up/2.1.0: - resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} - engines: {node: '>=4'} - dependencies: - locate-path: 2.0.0 - dev: true - - /find-up/4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - - /find-up/5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /flat-cache/3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.1.1 - rimraf: 3.0.2 - dev: true - - /flat/5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - dev: true - - /flatted/3.1.1: - resolution: {integrity: sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==} - dev: true - - /foreground-child/2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 3.0.3 - dev: true - - /fromentries/1.3.2: - resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} - dev: true - - /fs.realpath/1.0.0: - resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} - dev: true - - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - dev: true - optional: true - - /function-bind/1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - - /functional-red-black-tree/1.0.1: - resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} - dev: true - - /gensync/1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - - /get-caller-file/2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true - - /get-func-name/2.0.0: - resolution: {integrity: sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=} - dev: true - - /get-intrinsic/1.1.1: - resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.2 - dev: true - - /get-package-type/0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true - - /get-set-props/0.1.0: - resolution: {integrity: sha1-mYR1wXhEVobQsyJG2l3428++jqM=} - engines: {node: '>=0.10.0'} - dev: true - - /get-stdin/7.0.0: - resolution: {integrity: sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==} - engines: {node: '>=8'} - dev: true - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.1 - dev: true - - /glob/7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.0.4 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /glob/7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.0.4 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - - /globals/12.4.0: - resolution: {integrity: sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.8.1 - dev: true - - /globals/13.8.0: - resolution: {integrity: sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /graceful-fs/4.2.6: - resolution: {integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==} - dev: true - - /growl/1.10.5: - resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} - engines: {node: '>=4.x'} - dev: true - - /hard-rejection/2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: true - - /has-bigints/1.0.1: - resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} - dev: true - - /has-flag/3.0.0: - resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} - engines: {node: '>=4'} - dev: true - - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true - - /has-symbols/1.0.2: - resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} - engines: {node: '>= 0.4'} - dev: true - - /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - - /hasha/5.2.2: - resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} - engines: {node: '>=8'} - dependencies: - is-stream: 2.0.0 - type-fest: 0.8.1 - dev: true - - /he/1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: true - - /hosted-git-info/2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true - - /html-escaper/2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - - /htmlparser2/6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - dependencies: - domelementtype: 2.2.0 - domhandler: 4.2.0 - domutils: 2.6.0 - entities: 2.2.0 - dev: true - - /ieee754/1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true - - /ignore/4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - dev: true - - /ignore/5.1.8: - resolution: {integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==} - engines: {node: '>= 4'} - dev: true - - /import-fresh/3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /import-modules/2.1.0: - resolution: {integrity: sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==} - engines: {node: '>=8'} - dev: true - - /imurmurhash/0.1.4: - resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} - engines: {node: '>=0.8.19'} - dev: true - - /indent-string/4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true - - /inflight/1.0.6: - resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - - /is-alphabetical/1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} - dev: true - - /is-alphanumerical/1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - dev: true - - /is-arrayish/0.2.1: - resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} - dev: true - - /is-bigint/1.0.2: - resolution: {integrity: sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==} - dev: true - - /is-binary-path/2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - - /is-boolean-object/1.1.1: - resolution: {integrity: sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - dev: true - - /is-buffer/1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: true - - /is-builtin-module/3.1.0: - resolution: {integrity: sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==} - engines: {node: '>=6'} - dependencies: - builtin-modules: 3.2.0 - dev: true - - /is-callable/1.2.3: - resolution: {integrity: sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==} - engines: {node: '>= 0.4'} - dev: true - - /is-core-module/2.4.0: - resolution: {integrity: sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==} - dependencies: - has: 1.0.3 - dev: true - - /is-date-object/1.0.4: - resolution: {integrity: sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==} - engines: {node: '>= 0.4'} - dev: true - - /is-decimal/1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - dev: true - - /is-docker/2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - - /is-extglob/2.1.1: - resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} - engines: {node: '>=0.10.0'} - dev: true - - /is-fullwidth-code-point/2.0.0: - resolution: {integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=} - engines: {node: '>=4'} - dev: true - - /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true - - /is-get-set-prop/1.0.0: - resolution: {integrity: sha1-JzGHfk14pqae3M5rudaLB3nnYxI=} - dependencies: - get-set-props: 0.1.0 - lowercase-keys: 1.0.1 - dev: true - - /is-glob/4.0.1: - resolution: {integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-hexadecimal/1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - dev: true - - /is-js-type/2.0.0: - resolution: {integrity: sha1-c2FwBtZZtOtHKbunR9KHgt8PfiI=} - dependencies: - js-types: 1.0.0 - dev: true - - /is-negative-zero/2.0.1: - resolution: {integrity: sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==} - engines: {node: '>= 0.4'} - dev: true - - /is-number-object/1.0.5: - resolution: {integrity: sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==} - engines: {node: '>= 0.4'} - dev: true - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - - /is-obj-prop/1.0.0: - resolution: {integrity: sha1-s03nnEULjXxzqyzfZ9yHWtuF+A4=} - dependencies: - lowercase-keys: 1.0.1 - obj-props: 1.3.0 - dev: true - - /is-plain-obj/1.1.0: - resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} - engines: {node: '>=0.10.0'} - dev: true - - /is-plain-obj/2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: true - - /is-proto-prop/2.0.0: - resolution: {integrity: sha512-jl3NbQ/fGLv5Jhan4uX+Ge9ohnemqyblWVVCpAvtTQzNFvV2xhJq+esnkIbYQ9F1nITXoLfDDQLp7LBw/zzncg==} - dependencies: - lowercase-keys: 1.0.1 - proto-props: 2.0.0 - dev: true - - /is-regex/1.1.3: - resolution: {integrity: sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-symbols: 1.0.2 - dev: true - - /is-stream/2.0.0: - resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} - engines: {node: '>=8'} - dev: true - - /is-string/1.0.6: - resolution: {integrity: sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==} - engines: {node: '>= 0.4'} - dev: true - - /is-symbol/1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.2 - dev: true - - /is-typedarray/1.0.0: - resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} - dev: true - - /is-whitespace-character/1.0.4: - resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} - dev: true - - /is-windows/1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true - - /is-word-character/1.0.4: - resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} - dev: true - - /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: true - - /isexe/2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} - dev: true - - /istanbul-lib-coverage/3.0.0: - resolution: {integrity: sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-hook/3.0.0: - resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} - engines: {node: '>=8'} - dependencies: - append-transform: 2.0.0 - dev: true - - /istanbul-lib-instrument/4.0.3: - resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.14.3 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.0.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-processinfo/2.0.2: - resolution: {integrity: sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==} - engines: {node: '>=8'} - dependencies: - archy: 1.0.0 - cross-spawn: 7.0.3 - istanbul-lib-coverage: 3.0.0 - make-dir: 3.1.0 - p-map: 3.0.0 - rimraf: 3.0.2 - uuid: 3.4.0 - dev: true - - /istanbul-lib-report/3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} - dependencies: - istanbul-lib-coverage: 3.0.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps/4.0.0: - resolution: {integrity: sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==} - engines: {node: '>=8'} - dependencies: - debug: 4.3.1 - istanbul-lib-coverage: 3.0.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports/3.0.2: - resolution: {integrity: sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - - /jest-worker/26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 15.6.0 - merge-stream: 2.0.0 - supports-color: 7.2.0 - dev: true - - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true - - /js-types/1.0.0: - resolution: {integrity: sha1-0kLmSU7Vcq08koCfyL7X92h8vwM=} - engines: {node: '>=0.10.0'} - dev: true - - /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - - /js-yaml/4.0.0: - resolution: {integrity: sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - - /jsdoctypeparser/9.0.0: - resolution: {integrity: sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==} - engines: {node: '>=10'} - hasBin: true - dev: true - - /jsesc/0.5.0: - resolution: {integrity: sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=} - hasBin: true - dev: true - - /jsesc/2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /json-parse-better-errors/1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true - - /json-parse-even-better-errors/2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true - - /json-schema-traverse/0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - - /json-schema-traverse/1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true - - /json-stable-stringify-without-jsonify/1.0.1: - resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} - dev: true - - /json5/1.0.1: - resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} - hasBin: true - dependencies: - minimist: 1.2.5 - dev: true - - /json5/2.2.0: - resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} - engines: {node: '>=6'} - hasBin: true - dependencies: - minimist: 1.2.5 - dev: true - - /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - - /levn/0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /lines-and-columns/1.1.6: - resolution: {integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=} - dev: true - - /load-json-file/4.0.0: - resolution: {integrity: sha1-L19Fq5HjMhYjT9U62rZo607AmTs=} - engines: {node: '>=4'} - dependencies: - graceful-fs: 4.2.6 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - dev: true - - /locate-path/2.0.0: - resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} - engines: {node: '>=4'} - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - dev: true - - /locate-path/5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: true - - /locate-path/6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash.clonedeep/4.5.0: - resolution: {integrity: sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=} - dev: true - - /lodash.debounce/4.0.8: - resolution: {integrity: sha1-gteb/zCmfEAF/9XiUVMArZyk168=} - dev: true - - /lodash.flattendeep/4.4.0: - resolution: {integrity: sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=} - dev: true - - /lodash.memoize/4.1.2: - resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} - dev: true - - /lodash.merge/4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true - - /lodash.truncate/4.4.2: - resolution: {integrity: sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=} - dev: true - - /lodash/4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true - - /log-symbols/4.0.0: - resolution: {integrity: sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.1 - dev: true - - /lowercase-keys/1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - dev: true - - /lru-cache/6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - - /make-dir/3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.0 - dev: true - - /map-obj/1.0.1: - resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} - engines: {node: '>=0.10.0'} - dev: true - - /map-obj/4.2.1: - resolution: {integrity: sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==} - engines: {node: '>=8'} - dev: true - - /markdown-escapes/1.0.4: - resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} - dev: true - - /meow/6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - dependencies: - '@types/minimist': 1.2.1 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.0 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.0 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - dev: true - - /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - - /mime/2.5.2: - resolution: {integrity: sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: true - - /min-indent/1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true - - /minimatch/3.0.4: - resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimist-options/4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: true - - /minimist/1.2.5: - resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} - dev: true - - /mocha/8.4.0: - resolution: {integrity: sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==} - engines: {node: '>= 10.12.0'} - hasBin: true - dependencies: - '@ungap/promise-all-settled': 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.1 - debug: 4.3.1_supports-color@8.1.1 - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.1.6 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.0.0 - log-symbols: 4.0.0 - minimatch: 3.0.4 - ms: 2.1.3 - nanoid: 3.1.20 - serialize-javascript: 5.0.1 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - wide-align: 1.1.3 - workerpool: 6.1.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - dev: true - - /ms/2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} - dev: true - - /ms/2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /ms/2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - - /multimap/1.1.0: - resolution: {integrity: sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==} - dev: true - - /nanoid/3.1.20: - resolution: {integrity: sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /natural-compare/1.4.0: - resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} - dev: true - - /neodoc/2.0.2: - resolution: {integrity: sha512-NAppJ0YecKWdhSXFYCHbo6RutiX8vOt/Jo3l46mUg6pQlpJNaqc5cGxdrW2jITQm5JIYySbFVPDl3RrREXNyPw==} - dependencies: - ansi-regex: 2.1.1 - dev: true - - /node-preload/0.2.1: - resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} - engines: {node: '>=8'} - dependencies: - process-on-spawn: 1.0.0 - dev: true - - /node-releases/1.1.72: - resolution: {integrity: sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==} - dev: true - - /normalize-package-data/2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.20.0 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - - /nyc/15.1.0: - resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} - engines: {node: '>=8.9'} - hasBin: true - dependencies: - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - caching-transform: 4.0.0 - convert-source-map: 1.7.0 - decamelize: 1.2.0 - find-cache-dir: 3.3.1 - find-up: 4.1.0 - foreground-child: 2.0.0 - get-package-type: 0.1.0 - glob: 7.1.7 - istanbul-lib-coverage: 3.0.0 - istanbul-lib-hook: 3.0.0 - istanbul-lib-instrument: 4.0.3 - istanbul-lib-processinfo: 2.0.2 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.0 - istanbul-reports: 3.0.2 - make-dir: 3.1.0 - node-preload: 0.2.1 - p-map: 3.0.0 - process-on-spawn: 1.0.0 - resolve-from: 5.0.0 - rimraf: 3.0.2 - signal-exit: 3.0.3 - spawn-wrap: 2.0.0 - test-exclude: 6.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - supports-color - dev: true - - /obj-props/1.3.0: - resolution: {integrity: sha512-k2Xkjx5wn6eC3537SWAXHzB6lkI81kS+icMKMkh4nG3w7shWG6MaWOBrNvhWVOszrtL5uxdfymQQfPUxwY+2eg==} - engines: {node: '>=0.10.0'} - dev: true - - /object-inspect/1.10.3: - resolution: {integrity: sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==} - dev: true - - /object-keys/1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true - - /object.assign/4.1.2: - resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - has-symbols: 1.0.2 - object-keys: 1.1.1 - dev: true - - /object.values/1.1.3: - resolution: {integrity: sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.18.0 - has: 1.0.3 - dev: true - - /once/1.4.0: - resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} - dependencies: - wrappy: 1.0.2 - dev: true - - /open-cli/6.0.1: - resolution: {integrity: sha512-A5h8MF3GrT1efn9TiO9LPajDnLtuEiGQT5G8TxWObBlgt1cZJF1YbQo/kNtsD1bJb7HxnT6SaSjzeLq0Rfhygw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - file-type: 14.7.1 - get-stdin: 7.0.0 - meow: 6.1.1 - open: 7.4.2 - temp-write: 4.0.0 - dev: true - - /open/7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: true - - /optionator/0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.3 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.3 - dev: true - - /p-limit/1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - dependencies: - p-try: 1.0.0 - dev: true - - /p-limit/2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - - /p-limit/3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-locate/2.0.0: - resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} - engines: {node: '>=4'} - dependencies: - p-limit: 1.3.0 - dev: true - - /p-locate/4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: true - - /p-locate/5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - - /p-map/3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - dependencies: - aggregate-error: 3.1.0 - dev: true - - /p-try/1.0.0: - resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} - engines: {node: '>=4'} - dev: true - - /p-try/2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - - /package-hash/4.0.0: - resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} - engines: {node: '>=8'} - dependencies: - graceful-fs: 4.2.6 - hasha: 5.2.2 - lodash.flattendeep: 4.4.0 - release-zalgo: 1.0.0 - dev: true - - /parent-module/1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - - /parse-entities/1.2.2: - resolution: {integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==} - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - dev: true - - /parse-json/4.0.0: - resolution: {integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: true - - /parse-json/5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.12.13 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.1.6 - dev: true - - /path-exists/3.0.0: - resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} - engines: {node: '>=4'} - dev: true - - /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - - /path-is-absolute/1.0.1: - resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} - engines: {node: '>=0.10.0'} - dev: true - - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - - /path-parse/1.0.6: - resolution: {integrity: sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==} - dev: true - - /path-type/3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - dependencies: - pify: 3.0.0 - dev: true - - /pathval/1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true - - /peek-readable/3.1.3: - resolution: {integrity: sha512-mpAcysyRJxmICBcBa5IXH7SZPvWkcghm6Fk8RekoS3v+BpbSzlZzuWbMx+GXrlUwESi9qHar4nVEZNMKylIHvg==} - engines: {node: '>=8'} - dev: true - - /picomatch/2.3.0: - resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} - engines: {node: '>=8.6'} - dev: true - - /pify/3.0.0: - resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=} - engines: {node: '>=4'} - dev: true - - /pkg-dir/2.0.0: - resolution: {integrity: sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=} - engines: {node: '>=4'} - dependencies: - find-up: 2.1.0 - dev: true - - /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - - /pkg-up/2.0.0: - resolution: {integrity: sha1-yBmscoBZpGHKscOImivjxJoATX8=} - engines: {node: '>=4'} - dependencies: - find-up: 2.1.0 - dev: true - - /pluralize/8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - dev: true - - /prelude-ls/1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true - - /process-on-spawn/1.0.0: - resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} - engines: {node: '>=8'} - dependencies: - fromentries: 1.3.2 - dev: true - - /progress/2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: true - - /proto-props/2.0.0: - resolution: {integrity: sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ==} - engines: {node: '>=4'} - dev: true - - /punycode/2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} - engines: {node: '>=6'} - dev: true - - /quick-lru/4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: true - - /randombytes/2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /read-pkg-up/3.0.0: - resolution: {integrity: sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=} - engines: {node: '>=4'} - dependencies: - find-up: 2.1.0 - read-pkg: 3.0.0 - dev: true - - /read-pkg-up/7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: true - - /read-pkg/3.0.0: - resolution: {integrity: sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=} - engines: {node: '>=4'} - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - dev: true - - /read-pkg/5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - dependencies: - '@types/normalize-package-data': 2.4.0 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: true - - /readable-web-to-node-stream/2.0.0: - resolution: {integrity: sha512-+oZJurc4hXpaaqsN68GoZGQAQIA3qr09Or4fqEsargABnbe5Aau8hFn6ISVleT3cpY/0n/8drn7huyyEvTbghA==} - dev: true - - /readdirp/3.5.0: - resolution: {integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.0 - dev: true - - /redent/3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: true - - /regenerate-unicode-properties/8.2.0: - resolution: {integrity: sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - dev: true - - /regenerate/1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: true - - /regenerator-runtime/0.13.7: - resolution: {integrity: sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==} - dev: true - - /regenerator-transform/0.14.5: - resolution: {integrity: sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==} - dependencies: - '@babel/runtime': 7.14.0 - dev: true - - /regexp-tree/0.1.23: - resolution: {integrity: sha512-+7HWfb4Bvu8Rs2eQTUIpX9I/PlQkYOuTNbRpKLJlQpSgwSkzFYh+pUj0gtvglnOZLKB6YgnIgRuJ2/IlpL48qw==} - hasBin: true - dev: true - - /regexpp/3.1.0: - resolution: {integrity: sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==} - engines: {node: '>=8'} - dev: true - - /regexpu-core/4.7.1: - resolution: {integrity: sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 8.2.0 - regjsgen: 0.5.2 - regjsparser: 0.6.9 - unicode-match-property-ecmascript: 1.0.4 - unicode-match-property-value-ecmascript: 1.2.0 - dev: true - - /regextras/0.7.1: - resolution: {integrity: sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==} - engines: {node: '>=0.1.14'} - dev: true - - /regjsgen/0.5.2: - resolution: {integrity: sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==} - dev: true - - /regjsparser/0.6.9: - resolution: {integrity: sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==} - hasBin: true - dependencies: - jsesc: 0.5.0 - dev: true - - /release-zalgo/1.0.0: - resolution: {integrity: sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=} - engines: {node: '>=4'} - dependencies: - es6-error: 4.1.1 - dev: true - - /remark-parse/7.0.2: - resolution: {integrity: sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA==} - dependencies: - collapse-white-space: 1.0.6 - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - is-whitespace-character: 1.0.4 - is-word-character: 1.0.4 - markdown-escapes: 1.0.4 - parse-entities: 1.2.2 - repeat-string: 1.6.1 - state-toggle: 1.0.3 - trim: 0.0.1 - trim-trailing-lines: 1.1.4 - unherit: 1.1.3 - unist-util-remove-position: 1.1.4 - vfile-location: 2.0.6 - xtend: 4.0.2 - dev: true - - /repeat-string/1.6.1: - resolution: {integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc=} - engines: {node: '>=0.10'} - dev: true - - /replace-ext/1.0.0: - resolution: {integrity: sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=} - engines: {node: '>= 0.10'} - dev: true - - /require-directory/2.1.1: - resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} - engines: {node: '>=0.10.0'} - dev: true - - /require-from-string/2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true - - /require-main-filename/2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true - - /reserved-words/0.1.2: - resolution: {integrity: sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=} - dev: true - - /resolve-from/4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - - /resolve-from/5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /resolve/1.20.0: - resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} - dependencies: - is-core-module: 2.4.0 - path-parse: 1.0.6 - dev: true - - /rimraf/3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.1.7 - dev: true - - /rollup-plugin-terser/7.0.2_rollup@2.49.0: - resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} - peerDependencies: - rollup: ^2.0.0 - dependencies: - '@babel/code-frame': 7.12.13 - jest-worker: 26.6.2 - rollup: 2.49.0 - serialize-javascript: 4.0.0 - terser: 5.7.0 - dev: true - - /rollup/2.49.0: - resolution: {integrity: sha512-UnrCjMXICx9q0jF8L7OYs7LPk95dW0U5UYp/VANnWqfuhyr66FWi/YVlI34Oy8Tp4ZGLcaUDt4APJm80b9oPWQ==} - engines: {node: '>=10.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - - /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true - - /safe-regex/2.1.1: - resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} - dependencies: - regexp-tree: 0.1.23 - dev: true - - /semver/5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - dev: true - - /semver/6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - dev: true - - /semver/7.0.0: - resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} - hasBin: true - dev: true - - /semver/7.3.2: - resolution: {integrity: sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==} - engines: {node: '>=10'} - hasBin: true - dev: true - - /semver/7.3.5: - resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /serialize-javascript/4.0.0: - resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} - dependencies: - randombytes: 2.1.0 - dev: true - - /serialize-javascript/5.0.1: - resolution: {integrity: sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==} - dependencies: - randombytes: 2.1.0 - dev: true - - /set-blocking/2.0.0: - resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} - dev: true - - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /signal-exit/3.0.3: - resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==} - dev: true - - /slice-ansi/4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /source-map-support/0.5.19: - resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} - dependencies: - buffer-from: 1.1.1 - source-map: 0.6.1 - dev: true - - /source-map/0.5.7: - resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} - engines: {node: '>=0.10.0'} - dev: true - - /source-map/0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map/0.7.3: - resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} - engines: {node: '>= 8'} - dev: true - - /spawn-wrap/2.0.0: - resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} - engines: {node: '>=8'} - dependencies: - foreground-child: 2.0.0 - is-windows: 1.0.2 - make-dir: 3.1.0 - rimraf: 3.0.2 - signal-exit: 3.0.3 - which: 2.0.2 - dev: true - - /spdx-correct/3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.9 - dev: true - - /spdx-exceptions/2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true - - /spdx-expression-parse/3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.9 - dev: true - - /spdx-license-ids/3.0.9: - resolution: {integrity: sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==} - dev: true - - /sprintf-js/1.0.3: - resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} - dev: true - - /state-toggle/1.0.3: - resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} - dev: true - - /string-width/2.1.1: - resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} - engines: {node: '>=4'} - dependencies: - is-fullwidth-code-point: 2.0.0 - strip-ansi: 4.0.0 - dev: true - - /string-width/4.2.2: - resolution: {integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.0 - dev: true - - /string.prototype.trimend/1.0.4: - resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - dev: true - - /string.prototype.trimstart/1.0.4: - resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - dev: true - - /strip-ansi/4.0.0: - resolution: {integrity: sha1-qEeQIusaw2iocTibY1JixQXuNo8=} - engines: {node: '>=4'} - dependencies: - ansi-regex: 3.0.0 - dev: true - - /strip-ansi/6.0.0: - resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.0 - dev: true - - /strip-bom/3.0.0: - resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} - engines: {node: '>=4'} - dev: true - - /strip-bom/4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - - /strip-indent/3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - dev: true - - /strip-json-comments/3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - - /strtok3/6.0.8: - resolution: {integrity: sha512-QLgv+oiXwXgCgp2PdPPa+Jpp4D9imK9e/0BsyfeFMr6QL6wMVqoVn9+OXQ9I7MZbmUzN6lmitTJ09uwS2OmGcw==} - engines: {node: '>=8'} - dependencies: - '@tokenizer/token': 0.1.1 - '@types/debug': 4.1.5 - peek-readable: 3.1.3 - dev: true - - /supports-color/5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true - - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-color/8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - - /table/6.7.1: - resolution: {integrity: sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==} - engines: {node: '>=10.0.0'} - dependencies: - ajv: 8.5.0 - lodash.clonedeep: 4.5.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.2 - strip-ansi: 6.0.0 - dev: true - - /temp-dir/1.0.0: - resolution: {integrity: sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=} - engines: {node: '>=4'} - dev: true - - /temp-write/4.0.0: - resolution: {integrity: sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==} - engines: {node: '>=8'} - dependencies: - graceful-fs: 4.2.6 - is-stream: 2.0.0 - make-dir: 3.1.0 - temp-dir: 1.0.0 - uuid: 3.4.0 - dev: true - - /terser/5.7.0: - resolution: {integrity: sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==} - engines: {node: '>=10'} - hasBin: true - dependencies: - commander: 2.20.3 - source-map: 0.7.3 - source-map-support: 0.5.19 - dev: true - - /test-exclude/6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.1.7 - minimatch: 3.0.4 - dev: true - - /text-table/0.2.0: - resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} - dev: true - - /to-fast-properties/2.0.0: - resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} - engines: {node: '>=4'} - dev: true - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - - /token-types/2.1.1: - resolution: {integrity: sha512-wnQcqlreS6VjthyHO3Y/kpK/emflxDBNhlNUPfh7wE39KnuDdOituXomIbyI79vBtF0Ninpkh72mcuRHo+RG3Q==} - engines: {node: '>=0.1.98'} - dependencies: - '@tokenizer/token': 0.1.1 - ieee754: 1.2.1 - dev: true - - /trim-newlines/3.0.0: - resolution: {integrity: sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==} - engines: {node: '>=8'} - dev: true - - /trim-trailing-lines/1.1.4: - resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} - dev: true - - /trim/0.0.1: - resolution: {integrity: sha1-WFhUf2spB1fulczMZm+1AITEYN0=} - dev: true - - /trough/1.0.5: - resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} - dev: true - - /tsconfig-paths/3.9.0: - resolution: {integrity: sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.1 - minimist: 1.2.5 - strip-bom: 3.0.0 - dev: true - - /type-check/0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - - /type-detect/4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true - - /type-fest/0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - dev: true - - /type-fest/0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - - /type-fest/0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true - - /type-fest/0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true - - /typedarray-to-buffer/3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: true - - /unbox-primitive/1.0.1: - resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} - dependencies: - function-bind: 1.1.1 - has-bigints: 1.0.1 - has-symbols: 1.0.2 - which-boxed-primitive: 1.0.2 - dev: true - - /unherit/1.1.3: - resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} - dependencies: - inherits: 2.0.4 - xtend: 4.0.2 - dev: true - - /unicode-canonical-property-names-ecmascript/1.0.4: - resolution: {integrity: sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==} - engines: {node: '>=4'} - dev: true - - /unicode-match-property-ecmascript/1.0.4: - resolution: {integrity: sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==} - engines: {node: '>=4'} - dependencies: - unicode-canonical-property-names-ecmascript: 1.0.4 - unicode-property-aliases-ecmascript: 1.1.0 - dev: true - - /unicode-match-property-value-ecmascript/1.2.0: - resolution: {integrity: sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==} - engines: {node: '>=4'} - dev: true - - /unicode-property-aliases-ecmascript/1.1.0: - resolution: {integrity: sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==} - engines: {node: '>=4'} - dev: true - - /unified/6.2.0: - resolution: {integrity: sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==} - dependencies: - bail: 1.0.5 - extend: 3.0.2 - is-plain-obj: 1.1.0 - trough: 1.0.5 - vfile: 2.3.0 - x-is-string: 0.1.0 - dev: true - - /unist-util-is/3.0.0: - resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==} - dev: true - - /unist-util-remove-position/1.1.4: - resolution: {integrity: sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==} - dependencies: - unist-util-visit: 1.4.1 - dev: true - - /unist-util-stringify-position/1.1.2: - resolution: {integrity: sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==} - dev: true - - /unist-util-visit-parents/2.1.2: - resolution: {integrity: sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==} - dependencies: - unist-util-is: 3.0.0 - dev: true - - /unist-util-visit/1.4.1: - resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} - dependencies: - unist-util-visit-parents: 2.1.2 - dev: true - - /uri-js/4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.1.1 - dev: true - - /uuid/3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - hasBin: true - dev: true - - /v8-compile-cache/2.3.0: - resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} - dev: true - - /validate-npm-package-license/3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.1.1 - spdx-expression-parse: 3.0.1 - dev: true - - /vfile-location/2.0.6: - resolution: {integrity: sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==} - dev: true - - /vfile-message/1.1.1: - resolution: {integrity: sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==} - dependencies: - unist-util-stringify-position: 1.1.2 - dev: true - - /vfile/2.3.0: - resolution: {integrity: sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==} - dependencies: - is-buffer: 1.1.6 - replace-ext: 1.0.0 - unist-util-stringify-position: 1.1.2 - vfile-message: 1.1.1 - dev: true - - /which-boxed-primitive/1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.2 - is-boolean-object: 1.1.1 - is-number-object: 1.0.5 - is-string: 1.0.6 - is-symbol: 1.0.4 - dev: true - - /which-module/2.0.0: - resolution: {integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=} - dev: true - - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /wide-align/1.1.3: - resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==} - dependencies: - string-width: 2.1.1 - dev: true - - /word-wrap/1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - dev: true - - /workerpool/6.1.0: - resolution: {integrity: sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==} - dev: true - - /wrap-ansi/6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.2 - strip-ansi: 6.0.0 - dev: true - - /wrap-ansi/7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.2 - strip-ansi: 6.0.0 - dev: true - - /wrappy/1.0.2: - resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} - dev: true - - /write-file-atomic/3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.3 - typedarray-to-buffer: 3.1.5 - dev: true - - /x-is-string/0.1.0: - resolution: {integrity: sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=} - dev: true - - /xtend/4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true - - /y18n/4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true - - /y18n/5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true - - /yallist/4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - - /yargs-parser/18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true - - /yargs-parser/20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - dev: true - - /yargs-unparser/2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - dependencies: - camelcase: 6.2.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - dev: true - - /yargs/15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.2 - which-module: 2.0.0 - y18n: 4.0.3 - yargs-parser: 18.1.3 - dev: true - - /yargs/16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.2 - y18n: 5.0.8 - yargs-parser: 20.2.4 - dev: true - - /yocto-queue/0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true diff --git a/tools/node_modules/eslint/node_modules/regextras/src/index-generators.js b/tools/node_modules/eslint/node_modules/regextras/src/index-generators.js deleted file mode 100644 index 3dbf16414dacac..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/src/index-generators.js +++ /dev/null @@ -1,36 +0,0 @@ -/* eslint-disable node/no-unsupported-features/es-syntax */ -// We copy the regular expression so as to be able to always -// ensure the exec expression is a global one (and thereby prevent recursion) - -/** - * - * @param {RegExtras} RegExtras - * @returns {void} - */ -function addPrototypeMethods (RegExtras) { - RegExtras.prototype.entries = function * (str) { - let matches, i = 0; - const regex = RegExtras.mixinRegex(this.regex, 'g'); - while ((matches = regex.exec(str)) !== null) { - yield [i++, matches]; - } - }; - - RegExtras.prototype.values = function * (str) { - let matches; - const regex = RegExtras.mixinRegex(this.regex, 'g'); - while ((matches = regex.exec(str)) !== null) { - yield matches; - } - }; - - RegExtras.prototype.keys = function * (str) { - let i = 0; - const regex = RegExtras.mixinRegex(this.regex, 'g'); - while (regex.exec(str) !== null) { - yield i++; - } - }; -} - -export default addPrototypeMethods; diff --git a/tools/node_modules/eslint/node_modules/regextras/src/index.js b/tools/node_modules/eslint/node_modules/regextras/src/index.js deleted file mode 100644 index d5fd29475a466e..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/src/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import {mixinRegex, RegExtras} from './main.js'; -import addGenerators from './index-generators.js'; - -addGenerators(RegExtras); - -export {mixinRegex, RegExtras}; diff --git a/tools/node_modules/eslint/node_modules/regextras/src/main.js b/tools/node_modules/eslint/node_modules/regextras/src/main.js deleted file mode 100644 index 59a638e8f399df..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/src/main.js +++ /dev/null @@ -1,186 +0,0 @@ -/* eslint-disable node/no-unsupported-features/es-syntax, - jsdoc/require-jsdoc */ - -// We copy the regular expression so as to be able to always ensure the -// exec expression is a global one (and thereby prevent recursion) - -import mixinRegex from './mixinRegex.js'; - -class RegExtras { - constructor (regex, flags, newLastIndex) { - this.regex = mixinRegex( - (typeof regex === 'string' ? new RegExp(regex) : mixinRegex(regex)), - flags || '', - newLastIndex - ); - } - - forEach (str, cb, thisObj = null) { - const regex = mixinRegex(this.regex, 'g'); - - let matches, n0, i = 0; - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - return this; - } - - some (str, cb, thisObj = null) { - const regex = mixinRegex(this.regex, 'g'); - let matches, ret, n0, i = 0; - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return true; - } - } - return false; - } - - every (str, cb, thisObj = null) { - const regex = mixinRegex(this.regex, 'g'); - let matches, ret, n0, i = 0; - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (!ret) { - return false; - } - } - return true; - } - - map (str, cb, thisObj = null) { - const ret = []; - const regex = mixinRegex(this.regex, 'g'); - let matches, n0, i = 0; - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - return ret; - } - - filter (str, cb, thisObj = null) { - let matches, n0, i = 0; - const ret = [], regex = mixinRegex(this.regex, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - if (cb.apply(thisObj, matches)) { - ret.push(n0[0]); - } - } - return ret; - } - - reduce (str, cb, prev, thisObj = null) { - let matches, n0, i = 0; - const regex = mixinRegex(this.regex, 'g'); - if (!prev) { - if ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i++, n0))); - } - } - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(i++, n0))); - } - return prev; - } - - reduceRight (str, cb, prevOrig, thisObjOrig) { - let matches, n0, i, thisObj = thisObjOrig, prev = prevOrig; - const matchesContainer = [], - regex = mixinRegex(this.regex, 'g'); - thisObj = thisObj || null; - while ((matches = regex.exec(str)) !== null) { - matchesContainer.push(matches); - } - i = matchesContainer.length; - if (!i) { - if (arguments.length < 3) { - throw new TypeError( - 'reduce of empty matches array with no initial value' - ); - } - return prev; - } - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i--, n0))); - } - matchesContainer.reduceRight((container, mtches) => { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(i--, n0))); - return container; - }, matchesContainer); - return prev; - } - - find (str, cb, thisObj = null) { - let matches, ret, n0, i = 0; - const regex = mixinRegex(this.regex, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return n0[0]; - } - } - return false; - } - - findIndex (str, cb, thisObj = null) { - const regex = mixinRegex(this.regex, 'g'); - let matches, i = 0; - while ((matches = regex.exec(str)) !== null) { - const n0 = matches.splice(0, 1); - const ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return i - 1; - } - } - return -1; - } - - findExec (str, cb, thisObj = null) { - const regex = mixinRegex(this.regex, 'g'); - let matches, i = 0; - while ((matches = regex.exec(str)) !== null) { - const n0 = matches.splice(0, 1); - const ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return matches; - } - } - return false; - } - - filterExec (str, cb, thisObj = null) { - let matches, n0, i = 0; - const ret = [], regex = mixinRegex(this.regex, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches.push(i++, n0[0]); - if (cb.apply(thisObj, matches)) { - ret.push(matches); - } - } - return ret; - } -} - -const _RegExtras = RegExtras; -RegExtras = function (...args) { // eslint-disable-line no-class-assign - return new _RegExtras(...args); -}; -RegExtras.prototype = _RegExtras.prototype; - -RegExtras.mixinRegex = mixinRegex; - -export {mixinRegex, RegExtras}; diff --git a/tools/node_modules/eslint/node_modules/regextras/src/mixinRegex.js b/tools/node_modules/eslint/node_modules/regextras/src/mixinRegex.js deleted file mode 100644 index 9618b0d8da2d44..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/src/mixinRegex.js +++ /dev/null @@ -1,24 +0,0 @@ -/* eslint-disable node/no-unsupported-features/es-syntax */ - -/** - * @param {RegExp} regex - * @param {string} newFlags - * @param {Integer} [newLastIndex=regex.lastIndex] - * @returns {RegExp} - */ -export default function mixinRegex ( - regex, newFlags, newLastIndex = regex.lastIndex -) { - newFlags = newFlags || ''; - regex = new RegExp( - regex.source, - (newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') + - (newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') + - (newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') + - (newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') + - (newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') + - (newFlags.includes('s') ? 's' : regex.dotAll ? 's' : '') - ); - regex.lastIndex = newLastIndex; - return regex; -} diff --git a/tools/node_modules/eslint/node_modules/regextras/src/prototype.js b/tools/node_modules/eslint/node_modules/regextras/src/prototype.js deleted file mode 100644 index 617d995ca507d9..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/src/prototype.js +++ /dev/null @@ -1,116 +0,0 @@ -/* eslint-disable no-extend-native, - no-use-extend-native/no-use-extend-native, - node/no-unsupported-features/es-syntax */ - -// We copy the regular expression so as to be able to always ensure the -// exec expression is a global one (and thereby prevent recursion) - -import mixinRegex from './mixinRegex.js'; - -RegExp.prototype.forEach = function (str, cb, thisObj = null) { - let matches, n0, i = 0; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - return this; -}; - -RegExp.prototype.some = function (str, cb, thisObj = null) { - let matches, ret, n0, i = 0; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return true; - } - } - return false; -}; - -RegExp.prototype.every = function (str, cb, thisObj = null) { - let matches, ret, n0, i = 0; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (!ret) { - return false; - } - } - return true; -}; - -RegExp.prototype.map = function (str, cb, thisObj = null) { - let matches, n0, i = 0; - const ret = []; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - return ret; -}; - -RegExp.prototype.filter = function (str, cb, thisObj = null) { - let matches, n0, i = 0; - const ret = []; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - if (cb.apply(thisObj, matches)) { - ret.push(matches[0]); - } - } - return ret; -}; - -RegExp.prototype.reduce = function (str, cb, prev, thisObj = null) { - let matches, n0, i = 0; - const regex = mixinRegex(this, 'g'); - if (!prev) { - if ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(n0, i++))); - } - } - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(n0, i++))); - } - return prev; -}; - -RegExp.prototype.reduceRight = function (str, cb, prevOrig, thisObjOrig) { - let matches, n0, i, - prev = prevOrig, thisObj = thisObjOrig; - const regex = mixinRegex(this, 'g'); - const matchesContainer = []; - thisObj = thisObj || null; - while ((matches = regex.exec(str)) !== null) { - matchesContainer.push(matches); - } - i = matchesContainer.length; - if (!i) { - if (arguments.length < 3) { - throw new TypeError( - 'reduce of empty matches array with no initial value' - ); - } - return prev; - } - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(n0, i--))); - } - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(n0, i--))); - return container; - }, matchesContainer); - return prev; -}; diff --git a/tools/node_modules/eslint/node_modules/regextras/src/regexp-prototype.js b/tools/node_modules/eslint/node_modules/regextras/src/regexp-prototype.js deleted file mode 100644 index 764bb671518745..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/src/regexp-prototype.js +++ /dev/null @@ -1,168 +0,0 @@ -/* eslint-disable no-extend-native, - no-use-extend-native/no-use-extend-native, - node/no-unsupported-features/es-syntax */ - -// We copy the regular expression so as to be able to always ensure the -// exec expression is a global one (and thereby prevent recursion) - -import mixinRegex from './mixinRegex.js'; - -RegExp.prototype.forEach = function (str, cb, thisObj = null) { - let matches, n0, i = 0; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - return this; -}; - -RegExp.prototype.some = function (str, cb, thisObj = null) { - let matches, ret, n0, i = 0; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return true; - } - } - return false; -}; - -RegExp.prototype.every = function (str, cb, thisObj = null) { - let matches, ret, n0, i = 0; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (!ret) { - return false; - } - } - return true; -}; - -RegExp.prototype.map = function (str, cb, thisObj = null) { - let matches, n0, i = 0; - const ret = []; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - return ret; -}; - -RegExp.prototype.filter = function (str, cb, thisObj = null) { - let matches, n0, i = 0; - const ret = []; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - if (cb.apply(thisObj, matches)) { - ret.push(n0[0]); - } - } - return ret; -}; - -RegExp.prototype.reduce = function (str, cb, prev, thisObj = null) { - let matches, n0, i = 0; - const regex = mixinRegex(this, 'g'); - if (!prev) { - if ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i++, n0))); - } - } - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(i++, n0))); - } - return prev; -}; - -RegExp.prototype.reduceRight = function (str, cb, prevOrig, thisObjOrig) { - let matches, n0, i, - prev = prevOrig, thisObj = thisObjOrig; - const regex = mixinRegex(this, 'g'); - const matchesContainer = []; - thisObj = thisObj || null; - while ((matches = regex.exec(str)) !== null) { - matchesContainer.push(matches); - } - i = matchesContainer.length; - if (!i) { - if (arguments.length < 3) { - throw new TypeError( - 'reduce of empty matches array with no initial value' - ); - } - return prev; - } - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i--, n0))); - } - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(i--, n0))); - return container; - }, matchesContainer); - return prev; -}; - -RegExp.prototype.find = function (str, cb, thisObj = null) { - let matches, ret, n0, i = 0; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return n0[0]; - } - } - return false; -}; - -RegExp.prototype.findIndex = function (str, cb, thisObj = null) { - let matches, ret, n0, i = 0; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return i - 1; - } - } - return -1; -}; - -RegExp.prototype.findExec = function (str, cb, thisObj = null) { - let matches, ret, n0, i = 0; - const regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return matches; - } - } - return false; -}; - -RegExp.prototype.filterExec = function (str, cb, thisObj = null) { - let matches, n0, i = 0; - const ret = [], regex = mixinRegex(this, 'g'); - while ((matches = regex.exec(str)) !== null) { - n0 = matches.splice(0, 1); - matches.push(i++, n0[0]); - if (cb.apply(thisObj, matches)) { - ret.push(matches); - } - } - return ret; -}; diff --git a/tools/node_modules/eslint/node_modules/regextras/src/string-prototype.js b/tools/node_modules/eslint/node_modules/regextras/src/string-prototype.js deleted file mode 100644 index ce26abf3c162d2..00000000000000 --- a/tools/node_modules/eslint/node_modules/regextras/src/string-prototype.js +++ /dev/null @@ -1,169 +0,0 @@ -// We copy the regular expression so as to be able to always ensure the exec -// expression is a global one (and thereby prevent recursion) - -/* eslint-disable no-extend-native, - no-use-extend-native/no-use-extend-native, - node/no-unsupported-features/es-syntax */ - -import mixinRegex from './mixinRegex.js'; - -String.prototype.forEach = function (regex, cb, thisObj = null) { - let matches, n0, i = 0; - regex = mixinRegex(regex, 'g'); - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - cb.apply(thisObj, matches.concat(i++, n0)); - } - return this; -}; - -String.prototype.some = function (regex, cb, thisObj = null) { - let matches, ret, n0, i = 0; - regex = mixinRegex(regex, 'g'); - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return true; - } - } - return false; -}; - -String.prototype.every = function (regex, cb, thisObj = null) { - let matches, ret, n0, i = 0; - regex = mixinRegex(regex, 'g'); - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (!ret) { - return false; - } - } - return true; -}; - -String.prototype.map = function (regex, cb, thisObj = null) { - let matches, n0, i = 0; - const ret = []; - regex = mixinRegex(regex, 'g'); - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret.push(cb.apply(thisObj, matches.concat(i++, n0))); - } - return ret; -}; - -String.prototype.filter = function (regex, cb, thisObj = null) { - let matches, n0, i = 0; - const ret = []; - regex = mixinRegex(regex, 'g'); - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - matches = matches.concat(i++, n0); - if (cb.apply(thisObj, matches)) { - ret.push(n0[0]); - } - } - return ret; -}; - -String.prototype.reduce = function (regex, cb, prev, thisObj = null) { - let matches, n0, i = 0; - regex = mixinRegex(regex, 'g'); - if (!prev) { - if ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i++, n0))); - } - } - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(matches.concat(i++, n0))); - } - return prev; -}; - -String.prototype.reduceRight = function (regex, cb, prevOrig, thisObjOrig) { - let matches, n0, i, - prev = prevOrig, thisObj = thisObjOrig; - const matchesContainer = []; - regex = mixinRegex(regex, 'g'); - thisObj = thisObj || null; - while ((matches = regex.exec(this)) !== null) { - matchesContainer.push(matches); - } - i = matchesContainer.length; - if (!i) { - if (arguments.length < 3) { - throw new TypeError( - 'reduce of empty matches array with no initial value' - ); - } - return prev; - } - if (!prev) { - matches = matchesContainer.splice(-1)[0]; - n0 = matches.splice(0, 1); - prev = cb.apply(thisObj, [''].concat(matches.concat(i--, n0))); - } - matchesContainer.reduceRight(function (container, mtches) { - n0 = mtches.splice(0, 1); - prev = cb.apply(thisObj, [prev].concat(mtches.concat(i--, n0))); - return container; - }, matchesContainer); - return prev; -}; - -String.prototype.find = function (regex, cb, thisObj = null) { - let matches, ret, n0, i = 0; - regex = mixinRegex(regex, 'g'); - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return n0[0]; - } - } - return false; -}; - -String.prototype.findIndex = function (regex, cb, thisObj = null) { - let matches, ret, n0, i = 0; - regex = mixinRegex(regex, 'g'); - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return i - 1; - } - } - return -1; -}; - -String.prototype.findExec = function (regex, cb, thisObj = null) { - let matches, ret, n0, i = 0; - regex = mixinRegex(regex, 'g'); - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - ret = cb.apply(thisObj, matches.concat(i++, n0)); - if (ret) { - return matches; - } - } - return false; -}; - -String.prototype.filterExec = function (regex, cb, thisObj = null) { - let matches, n0, i = 0; - const ret = []; - regex = mixinRegex(regex, 'g'); - while ((matches = regex.exec(this)) !== null) { - n0 = matches.splice(0, 1); - matches.push(i++, n0[0]); - if (cb.apply(thisObj, matches)) { - ret.push(matches); - } - } - return ret; -}; diff --git a/tools/node_modules/eslint/node_modules/semver/bin/semver.js b/tools/node_modules/eslint/node_modules/semver/bin/semver.js index 73fe29538ad574..8d1b55720e0ab7 100755 --- a/tools/node_modules/eslint/node_modules/semver/bin/semver.js +++ b/tools/node_modules/eslint/node_modules/semver/bin/semver.js @@ -27,16 +27,19 @@ const semver = require('../') let reverse = false -const options = {} +let options = {} const main = () => { - if (!argv.length) return help() + if (!argv.length) { + return help() + } while (argv.length) { let a = argv.shift() const indexOfEqualSign = a.indexOf('=') if (indexOfEqualSign !== -1) { + const value = a.slice(indexOfEqualSign + 1) a = a.slice(0, indexOfEqualSign) - argv.unshift(a.slice(indexOfEqualSign + 1)) + argv.unshift(value) } switch (a) { case '-rv': case '-rev': case '--rev': case '--reverse': @@ -85,26 +88,31 @@ const main = () => { } } - const options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl } + options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl } versions = versions.map((v) => { return coerce ? (semver.coerce(v, options) || { version: v }).version : v }).filter((v) => { return semver.valid(v) }) - if (!versions.length) return fail() - if (inc && (versions.length !== 1 || range.length)) { return failInc() } + if (!versions.length) { + return fail() + } + if (inc && (versions.length !== 1 || range.length)) { + return failInc() + } for (let i = 0, l = range.length; i < l; i++) { versions = versions.filter((v) => { return semver.satisfies(v, range[i], options) }) - if (!versions.length) return fail() + if (!versions.length) { + return fail() + } } return success(versions) } - const failInc = () => { console.error('--inc can only be used on a single version with no range') fail() @@ -120,7 +128,9 @@ const success = () => { return semver.clean(v, options) }).map((v) => { return inc ? semver.inc(v, inc, options, identifier) : v - }).forEach((v, i, _) => { console.log(v) }) + }).forEach((v, i, _) => { + console.log(v) + }) } const help = () => console.log( diff --git a/tools/node_modules/eslint/node_modules/semver/classes/comparator.js b/tools/node_modules/eslint/node_modules/semver/classes/comparator.js index dbbef2d8fe20e6..62cd204d9b7969 100644 --- a/tools/node_modules/eslint/node_modules/semver/classes/comparator.js +++ b/tools/node_modules/eslint/node_modules/semver/classes/comparator.js @@ -4,6 +4,7 @@ class Comparator { static get ANY () { return ANY } + constructor (comp, options) { options = parseOptions(options) @@ -80,7 +81,7 @@ class Comparator { if (!options || typeof options !== 'object') { options = { loose: !!options, - includePrerelease: false + includePrerelease: false, } } @@ -128,7 +129,7 @@ class Comparator { module.exports = Comparator const parseOptions = require('../internal/parse-options') -const {re, t} = require('../internal/re') +const { re, t } = require('../internal/re') const cmp = require('../functions/cmp') const debug = require('../internal/debug') const SemVer = require('./semver') diff --git a/tools/node_modules/eslint/node_modules/semver/classes/index.js b/tools/node_modules/eslint/node_modules/semver/classes/index.js index 198b84d6645cf4..5e3f5c9b19cef1 100644 --- a/tools/node_modules/eslint/node_modules/semver/classes/index.js +++ b/tools/node_modules/eslint/node_modules/semver/classes/index.js @@ -1,5 +1,5 @@ module.exports = { SemVer: require('./semver.js'), Range: require('./range.js'), - Comparator: require('./comparator.js') + Comparator: require('./comparator.js'), } diff --git a/tools/node_modules/eslint/node_modules/semver/classes/range.js b/tools/node_modules/eslint/node_modules/semver/classes/range.js index aa04f6bff94461..7dc24bc714b023 100644 --- a/tools/node_modules/eslint/node_modules/semver/classes/range.js +++ b/tools/node_modules/eslint/node_modules/semver/classes/range.js @@ -29,9 +29,9 @@ class Range { // First, split based on boolean or || this.raw = range this.set = range - .split(/\s*\|\|\s*/) + .split('||') // map the range to a 2d array of comparators - .map(range => this.parseRange(range.trim())) + .map(r => this.parseRange(r.trim())) // throw out any comparator lists that are empty // this generally means that it was not a valid range, which is allowed // in loose mode, but will still throw if the WHOLE range is invalid. @@ -46,9 +46,9 @@ class Range { // keep the first one, in case they're all null sets const first = this.set[0] this.set = this.set.filter(c => !isNullSet(c[0])) - if (this.set.length === 0) + if (this.set.length === 0) { this.set = [first] - else if (this.set.length > 1) { + } else if (this.set.length > 1) { // if we have any that are *, then the range is just * for (const c of this.set) { if (c.length === 1 && isAny(c[0])) { @@ -84,8 +84,9 @@ class Range { const memoOpts = Object.keys(this.options).join(',') const memoKey = `parseRange:${memoOpts}:${range}` const cached = cache.get(memoKey) - if (cached) + if (cached) { return cached + } const loose = this.options.loose // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` @@ -94,7 +95,7 @@ class Range { debug('hyphen replace', range) // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) - debug('comparator trim', range, re[t.COMPARATORTRIM]) + debug('comparator trim', range) // `~ 1.2.3` => `~1.2.3` range = range.replace(re[t.TILDETRIM], tildeTrimReplace) @@ -108,30 +109,37 @@ class Range { // At this point, the range is completely trimmed and // ready to be split into comparators. - const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - const rangeList = range + let rangeList = range .split(' ') .map(comp => parseComparator(comp, this.options)) .join(' ') .split(/\s+/) // >=0.0.0 is equivalent to * .map(comp => replaceGTE0(comp, this.options)) + + if (loose) { // in loose mode, throw out any that are not valid comparators - .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true) - .map(comp => new Comparator(comp, this.options)) + rangeList = rangeList.filter(comp => { + debug('loose invalid filter', comp, this.options) + return !!comp.match(re[t.COMPARATORLOOSE]) + }) + } + debug('range list', rangeList) // if any comparators are the null set, then replace with JUST null set // if more than one comparator, remove any * comparators // also, don't include the same comparator more than once - const l = rangeList.length const rangeMap = new Map() - for (const comp of rangeList) { - if (isNullSet(comp)) + const comparators = rangeList.map(comp => new Comparator(comp, this.options)) + for (const comp of comparators) { + if (isNullSet(comp)) { return [comp] + } rangeMap.set(comp.value, comp) } - if (rangeMap.size > 1 && rangeMap.has('')) + if (rangeMap.size > 1 && rangeMap.has('')) { rangeMap.delete('') + } const result = [...rangeMap.values()] cache.set(memoKey, result) @@ -196,7 +204,7 @@ const { t, comparatorTrimReplace, tildeTrimReplace, - caretTrimReplace + caretTrimReplace, } = require('../internal/re') const isNullSet = c => c.value === '<0.0.0-0' @@ -245,8 +253,8 @@ const isX = id => !id || id.toLowerCase() === 'x' || id === '*' // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 const replaceTildes = (comp, options) => - comp.trim().split(/\s+/).map((comp) => { - return replaceTilde(comp, options) + comp.trim().split(/\s+/).map((c) => { + return replaceTilde(c, options) }).join(' ') const replaceTilde = (comp, options) => { @@ -284,8 +292,8 @@ const replaceTilde = (comp, options) => { // ^1.2.3 --> >=1.2.3 <2.0.0-0 // ^1.2.0 --> >=1.2.0 <2.0.0-0 const replaceCarets = (comp, options) => - comp.trim().split(/\s+/).map((comp) => { - return replaceCaret(comp, options) + comp.trim().split(/\s+/).map((c) => { + return replaceCaret(c, options) }).join(' ') const replaceCaret = (comp, options) => { @@ -343,8 +351,8 @@ const replaceCaret = (comp, options) => { const replaceXRanges = (comp, options) => { debug('replaceXRanges', comp, options) - return comp.split(/\s+/).map((comp) => { - return replaceXRange(comp, options) + return comp.split(/\s+/).map((c) => { + return replaceXRange(c, options) }).join(' ') } @@ -405,8 +413,9 @@ const replaceXRange = (comp, options) => { } } - if (gtlt === '<') + if (gtlt === '<') { pr = '-0' + } ret = `${gtlt + M}.${m}.${p}${pr}` } else if (xm) { diff --git a/tools/node_modules/eslint/node_modules/semver/classes/semver.js b/tools/node_modules/eslint/node_modules/semver/classes/semver.js index ed81a7ec6cbfe6..af62955194793c 100644 --- a/tools/node_modules/eslint/node_modules/semver/classes/semver.js +++ b/tools/node_modules/eslint/node_modules/semver/classes/semver.js @@ -265,7 +265,7 @@ class SemVer { if (identifier) { // 1.2.0-beta.1 bumps to 1.2.0-beta.2, // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { if (isNaN(this.prerelease[1])) { this.prerelease = [identifier, 0] } diff --git a/tools/node_modules/eslint/node_modules/semver/functions/cmp.js b/tools/node_modules/eslint/node_modules/semver/functions/cmp.js index 3b89db779108a0..40119094747dd0 100644 --- a/tools/node_modules/eslint/node_modules/semver/functions/cmp.js +++ b/tools/node_modules/eslint/node_modules/semver/functions/cmp.js @@ -8,17 +8,21 @@ const lte = require('./lte') const cmp = (a, op, b, loose) => { switch (op) { case '===': - if (typeof a === 'object') + if (typeof a === 'object') { a = a.version - if (typeof b === 'object') + } + if (typeof b === 'object') { b = b.version + } return a === b case '!==': - if (typeof a === 'object') + if (typeof a === 'object') { a = a.version - if (typeof b === 'object') + } + if (typeof b === 'object') { b = b.version + } return a !== b case '': diff --git a/tools/node_modules/eslint/node_modules/semver/functions/coerce.js b/tools/node_modules/eslint/node_modules/semver/functions/coerce.js index 106ca71c9af92e..2e01452fddad68 100644 --- a/tools/node_modules/eslint/node_modules/semver/functions/coerce.js +++ b/tools/node_modules/eslint/node_modules/semver/functions/coerce.js @@ -1,6 +1,6 @@ const SemVer = require('../classes/semver') const parse = require('./parse') -const {re, t} = require('../internal/re') +const { re, t } = require('../internal/re') const coerce = (version, options) => { if (version instanceof SemVer) { @@ -43,8 +43,9 @@ const coerce = (version, options) => { re[t.COERCERTL].lastIndex = -1 } - if (match === null) + if (match === null) { return null + } return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options) } diff --git a/tools/node_modules/eslint/node_modules/semver/functions/inc.js b/tools/node_modules/eslint/node_modules/semver/functions/inc.js index aa4d83ab4c2895..62d1da2c4093bf 100644 --- a/tools/node_modules/eslint/node_modules/semver/functions/inc.js +++ b/tools/node_modules/eslint/node_modules/semver/functions/inc.js @@ -7,7 +7,10 @@ const inc = (version, release, options, identifier) => { } try { - return new SemVer(version, options).inc(release, identifier).version + return new SemVer( + version instanceof SemVer ? version.version : version, + options + ).inc(release, identifier).version } catch (er) { return null } diff --git a/tools/node_modules/eslint/node_modules/semver/functions/parse.js b/tools/node_modules/eslint/node_modules/semver/functions/parse.js index 11f20f03745ab2..a66663aa5918fb 100644 --- a/tools/node_modules/eslint/node_modules/semver/functions/parse.js +++ b/tools/node_modules/eslint/node_modules/semver/functions/parse.js @@ -1,4 +1,4 @@ -const {MAX_LENGTH} = require('../internal/constants') +const { MAX_LENGTH } = require('../internal/constants') const { re, t } = require('../internal/re') const SemVer = require('../classes/semver') diff --git a/tools/node_modules/eslint/node_modules/semver/internal/constants.js b/tools/node_modules/eslint/node_modules/semver/internal/constants.js index 49df215ad554da..4f0de59b56949f 100644 --- a/tools/node_modules/eslint/node_modules/semver/internal/constants.js +++ b/tools/node_modules/eslint/node_modules/semver/internal/constants.js @@ -4,7 +4,7 @@ const SEMVER_SPEC_VERSION = '2.0.0' const MAX_LENGTH = 256 const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || - /* istanbul ignore next */ 9007199254740991 +/* istanbul ignore next */ 9007199254740991 // Max safe segment length for coercion. const MAX_SAFE_COMPONENT_LENGTH = 16 @@ -13,5 +13,5 @@ module.exports = { SEMVER_SPEC_VERSION, MAX_LENGTH, MAX_SAFE_INTEGER, - MAX_SAFE_COMPONENT_LENGTH + MAX_SAFE_COMPONENT_LENGTH, } diff --git a/tools/node_modules/eslint/node_modules/semver/internal/identifiers.js b/tools/node_modules/eslint/node_modules/semver/internal/identifiers.js index ed130942175207..e612d0a3d83619 100644 --- a/tools/node_modules/eslint/node_modules/semver/internal/identifiers.js +++ b/tools/node_modules/eslint/node_modules/semver/internal/identifiers.js @@ -19,5 +19,5 @@ const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) module.exports = { compareIdentifiers, - rcompareIdentifiers + rcompareIdentifiers, } diff --git a/tools/node_modules/eslint/node_modules/semver/internal/parse-options.js b/tools/node_modules/eslint/node_modules/semver/internal/parse-options.js index 42d2ebd6fa32f8..bbd9ec77a3ff44 100644 --- a/tools/node_modules/eslint/node_modules/semver/internal/parse-options.js +++ b/tools/node_modules/eslint/node_modules/semver/internal/parse-options.js @@ -4,8 +4,8 @@ const opts = ['includePrerelease', 'loose', 'rtl'] const parseOptions = options => !options ? {} : typeof options !== 'object' ? { loose: true } - : opts.filter(k => options[k]).reduce((options, k) => { - options[k] = true - return options + : opts.filter(k => options[k]).reduce((o, k) => { + o[k] = true + return o }, {}) module.exports = parseOptions diff --git a/tools/node_modules/eslint/node_modules/semver/internal/re.js b/tools/node_modules/eslint/node_modules/semver/internal/re.js index 54d4176deaf232..ed88398a9dbf5b 100644 --- a/tools/node_modules/eslint/node_modules/semver/internal/re.js +++ b/tools/node_modules/eslint/node_modules/semver/internal/re.js @@ -10,7 +10,7 @@ let R = 0 const createToken = (name, value, isGlobal) => { const index = R++ - debug(index, value) + debug(name, index, value) t[name] = index src[index] = value re[index] = new RegExp(value, isGlobal ? 'g' : undefined) @@ -178,5 +178,5 @@ createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + // Star ranges basically just allow anything at all. createToken('STAR', '(<|>)?=?\\s*\\*') // >=0.0.0 is like a star -createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$') -createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$') +createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$') +createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$') diff --git a/tools/node_modules/eslint/node_modules/lru-cache/LICENSE b/tools/node_modules/eslint/node_modules/semver/node_modules/lru-cache/LICENSE similarity index 100% rename from tools/node_modules/eslint/node_modules/lru-cache/LICENSE rename to tools/node_modules/eslint/node_modules/semver/node_modules/lru-cache/LICENSE diff --git a/tools/node_modules/eslint/node_modules/lru-cache/index.js b/tools/node_modules/eslint/node_modules/semver/node_modules/lru-cache/index.js similarity index 100% rename from tools/node_modules/eslint/node_modules/lru-cache/index.js rename to tools/node_modules/eslint/node_modules/semver/node_modules/lru-cache/index.js diff --git a/tools/node_modules/eslint/node_modules/lru-cache/package.json b/tools/node_modules/eslint/node_modules/semver/node_modules/lru-cache/package.json similarity index 100% rename from tools/node_modules/eslint/node_modules/lru-cache/package.json rename to tools/node_modules/eslint/node_modules/semver/node_modules/lru-cache/package.json diff --git a/tools/node_modules/eslint/node_modules/semver/package.json b/tools/node_modules/eslint/node_modules/semver/package.json index 4e1154195a5f17..7898f5902cb737 100644 --- a/tools/node_modules/eslint/node_modules/semver/package.json +++ b/tools/node_modules/eslint/node_modules/semver/package.json @@ -1,6 +1,6 @@ { "name": "semver", - "version": "7.3.5", + "version": "7.3.7", "description": "The semantic version parser used by npm.", "main": "index.js", "scripts": { @@ -8,25 +8,36 @@ "snap": "tap", "preversion": "npm test", "postversion": "npm publish", - "postpublish": "git push origin --follow-tags" + "postpublish": "git push origin --follow-tags", + "lint": "eslint \"**/*.js\"", + "postlint": "template-oss-check", + "lintfix": "npm run lint -- --fix", + "prepublishOnly": "git push origin --follow-tags", + "posttest": "npm run lint", + "template-oss-apply": "template-oss-apply --force" }, "devDependencies": { - "tap": "^14.10.7" + "@npmcli/eslint-config": "^3.0.1", + "@npmcli/template-oss": "3.3.2", + "tap": "^16.0.0" }, "license": "ISC", - "repository": "https://github.com/npm/node-semver", + "repository": { + "type": "git", + "url": "https://github.com/npm/node-semver.git" + }, "bin": { "semver": "bin/semver.js" }, "files": [ - "bin/**/*.js", - "range.bnf", - "classes/**/*.js", - "functions/**/*.js", - "internal/**/*.js", - "ranges/**/*.js", + "bin/", + "classes/", + "functions/", + "internal/", + "ranges/", "index.js", - "preload.js" + "preload.js", + "range.bnf" ], "tap": { "check-coverage": true, @@ -37,5 +48,28 @@ }, "dependencies": { "lru-cache": "^6.0.0" + }, + "author": "GitHub Inc.", + "templateOSS": { + "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", + "version": "3.3.2", + "engines": ">=10", + "ciVersions": [ + "10.0.0", + "10.x", + "12.x", + "14.x", + "16.x" + ], + "distPaths": [ + "bin/", + "classes/", + "functions/", + "internal/", + "ranges/", + "index.js", + "preload.js", + "range.bnf" + ] } } diff --git a/tools/node_modules/eslint/node_modules/semver/ranges/min-version.js b/tools/node_modules/eslint/node_modules/semver/ranges/min-version.js index 2fac412914fe25..350e1f78368ea2 100644 --- a/tools/node_modules/eslint/node_modules/semver/ranges/min-version.js +++ b/tools/node_modules/eslint/node_modules/semver/ranges/min-version.js @@ -47,8 +47,9 @@ const minVersion = (range, loose) => { throw new Error(`Unexpected operation: ${comparator.operator}`) } }) - if (setMin && (!minver || gt(minver, setMin))) + if (setMin && (!minver || gt(minver, setMin))) { minver = setMin + } } if (minver && range.test(minver)) { diff --git a/tools/node_modules/eslint/node_modules/semver/ranges/outside.js b/tools/node_modules/eslint/node_modules/semver/ranges/outside.js index 2a4b0a13f9e298..ae99b10a5b9e6a 100644 --- a/tools/node_modules/eslint/node_modules/semver/ranges/outside.js +++ b/tools/node_modules/eslint/node_modules/semver/ranges/outside.js @@ -1,6 +1,6 @@ const SemVer = require('../classes/semver') const Comparator = require('../classes/comparator') -const {ANY} = Comparator +const { ANY } = Comparator const Range = require('../classes/range') const satisfies = require('../functions/satisfies') const gt = require('../functions/gt') diff --git a/tools/node_modules/eslint/node_modules/semver/ranges/simplify.js b/tools/node_modules/eslint/node_modules/semver/ranges/simplify.js index b792f972964542..618d5b62735518 100644 --- a/tools/node_modules/eslint/node_modules/semver/ranges/simplify.js +++ b/tools/node_modules/eslint/node_modules/semver/ranges/simplify.js @@ -5,38 +5,41 @@ const satisfies = require('../functions/satisfies.js') const compare = require('../functions/compare.js') module.exports = (versions, range, options) => { const set = [] - let min = null + let first = null let prev = null const v = versions.sort((a, b) => compare(a, b, options)) for (const version of v) { const included = satisfies(version, range, options) if (included) { prev = version - if (!min) - min = version + if (!first) { + first = version + } } else { if (prev) { - set.push([min, prev]) + set.push([first, prev]) } prev = null - min = null + first = null } } - if (min) - set.push([min, null]) + if (first) { + set.push([first, null]) + } const ranges = [] for (const [min, max] of set) { - if (min === max) + if (min === max) { ranges.push(min) - else if (!max && min === v[0]) + } else if (!max && min === v[0]) { ranges.push('*') - else if (!max) + } else if (!max) { ranges.push(`>=${min}`) - else if (min === v[0]) + } else if (min === v[0]) { ranges.push(`<=${max}`) - else + } else { ranges.push(`${min} - ${max}`) + } } const simplified = ranges.join(' || ') const original = typeof range.raw === 'string' ? range.raw : String(range) diff --git a/tools/node_modules/eslint/node_modules/semver/ranges/subset.js b/tools/node_modules/eslint/node_modules/semver/ranges/subset.js index 532fd1364ce754..e0dea43c2b6a89 100644 --- a/tools/node_modules/eslint/node_modules/semver/ranges/subset.js +++ b/tools/node_modules/eslint/node_modules/semver/ranges/subset.js @@ -41,8 +41,9 @@ const compare = require('../functions/compare.js') // - Else return true const subset = (sub, dom, options = {}) => { - if (sub === dom) + if (sub === dom) { return true + } sub = new Range(sub, options) dom = new Range(dom, options) @@ -52,73 +53,84 @@ const subset = (sub, dom, options = {}) => { for (const simpleDom of dom.set) { const isSub = simpleSubset(simpleSub, simpleDom, options) sawNonNull = sawNonNull || isSub !== null - if (isSub) + if (isSub) { continue OUTER + } } // the null set is a subset of everything, but null simple ranges in // a complex range should be ignored. so if we saw a non-null range, // then we know this isn't a subset, but if EVERY simple range was null, // then it is a subset. - if (sawNonNull) + if (sawNonNull) { return false + } } return true } const simpleSubset = (sub, dom, options) => { - if (sub === dom) + if (sub === dom) { return true + } if (sub.length === 1 && sub[0].semver === ANY) { - if (dom.length === 1 && dom[0].semver === ANY) + if (dom.length === 1 && dom[0].semver === ANY) { return true - else if (options.includePrerelease) - sub = [ new Comparator('>=0.0.0-0') ] - else - sub = [ new Comparator('>=0.0.0') ] + } else if (options.includePrerelease) { + sub = [new Comparator('>=0.0.0-0')] + } else { + sub = [new Comparator('>=0.0.0')] + } } if (dom.length === 1 && dom[0].semver === ANY) { - if (options.includePrerelease) + if (options.includePrerelease) { return true - else - dom = [ new Comparator('>=0.0.0') ] + } else { + dom = [new Comparator('>=0.0.0')] + } } const eqSet = new Set() let gt, lt for (const c of sub) { - if (c.operator === '>' || c.operator === '>=') + if (c.operator === '>' || c.operator === '>=') { gt = higherGT(gt, c, options) - else if (c.operator === '<' || c.operator === '<=') + } else if (c.operator === '<' || c.operator === '<=') { lt = lowerLT(lt, c, options) - else + } else { eqSet.add(c.semver) + } } - if (eqSet.size > 1) + if (eqSet.size > 1) { return null + } let gtltComp if (gt && lt) { gtltComp = compare(gt.semver, lt.semver, options) - if (gtltComp > 0) + if (gtltComp > 0) { return null - else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) + } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) { return null + } } // will iterate one or zero times for (const eq of eqSet) { - if (gt && !satisfies(eq, String(gt), options)) + if (gt && !satisfies(eq, String(gt), options)) { return null + } - if (lt && !satisfies(eq, String(lt), options)) + if (lt && !satisfies(eq, String(lt), options)) { return null + } for (const c of dom) { - if (!satisfies(eq, String(c), options)) + if (!satisfies(eq, String(c), options)) { return false + } } return true @@ -154,10 +166,12 @@ const simpleSubset = (sub, dom, options) => { } if (c.operator === '>' || c.operator === '>=') { higher = higherGT(gt, c, options) - if (higher === c && higher !== gt) + if (higher === c && higher !== gt) { return false - } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) + } + } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) { return false + } } if (lt) { if (needDomLTPre) { @@ -170,37 +184,44 @@ const simpleSubset = (sub, dom, options) => { } if (c.operator === '<' || c.operator === '<=') { lower = lowerLT(lt, c, options) - if (lower === c && lower !== lt) + if (lower === c && lower !== lt) { return false - } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) + } + } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) { return false + } } - if (!c.operator && (lt || gt) && gtltComp !== 0) + if (!c.operator && (lt || gt) && gtltComp !== 0) { return false + } } // if there was a < or >, and nothing in the dom, then must be false // UNLESS it was limited by another range in the other direction. // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 - if (gt && hasDomLT && !lt && gtltComp !== 0) + if (gt && hasDomLT && !lt && gtltComp !== 0) { return false + } - if (lt && hasDomGT && !gt && gtltComp !== 0) + if (lt && hasDomGT && !gt && gtltComp !== 0) { return false + } // we needed a prerelease range in a specific tuple, but didn't get one // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, // because it includes prereleases in the 1.2.3 tuple - if (needDomGTPre || needDomLTPre) + if (needDomGTPre || needDomLTPre) { return false + } return true } // >=1.2.3 is lower than >1.2.3 const higherGT = (a, b, options) => { - if (!a) + if (!a) { return b + } const comp = compare(a.semver, b.semver, options) return comp > 0 ? a : comp < 0 ? b @@ -210,8 +231,9 @@ const higherGT = (a, b, options) => { // <=1.2.3 is higher than <1.2.3 const lowerLT = (a, b, options) => { - if (!a) + if (!a) { return b + } const comp = compare(a.semver, b.semver, options) return comp < 0 ? a : comp > 0 ? b diff --git a/tools/node_modules/eslint/node_modules/source-map/LICENSE b/tools/node_modules/eslint/node_modules/source-map/LICENSE deleted file mode 100644 index ed1b7cf27e97e1..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ - -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tools/node_modules/eslint/node_modules/source-map/dist/source-map.debug.js b/tools/node_modules/eslint/node_modules/source-map/dist/source-map.debug.js deleted file mode 100644 index b5ab6382abbabc..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/dist/source-map.debug.js +++ /dev/null @@ -1,3091 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["sourceMap"] = factory(); - else - root["sourceMap"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - /* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ - exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer; - exports.SourceNode = __webpack_require__(10).SourceNode; - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var base64VLQ = __webpack_require__(2); - var util = __webpack_require__(4); - var ArraySet = __webpack_require__(5).ArraySet; - var MappingList = __webpack_require__(6).MappingList; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ - SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - - SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - var base64 = __webpack_require__(3); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ - exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; - }; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); - }; - - /** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ - exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; - }; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; - } - exports.urlParse = urlParse; - - function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - - /** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ - function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; - } - exports.normalize = normalize; - - /** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ - function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; - } - exports.join = join; - - exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); - }; - - /** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ - function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); - } - exports.relative = relative; - - var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); - }()); - - function identity (s) { - return s; - } - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; - } - exports.toSetString = supportsNullProto ? identity : toSetString; - - function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; - } - exports.fromSetString = supportsNullProto ? identity : fromSetString; - - function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; - } - - /** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; - } - exports.compareByOriginalPositions = compareByOriginalPositions; - - /** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ - function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; - } - exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - - function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; - } - - /** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ - function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var has = Object.prototype.hasOwnProperty; - var hasNativeMap = typeof Map !== "undefined"; - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - - /** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ - ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - - /** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ - function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; - } - - /** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ - function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; - } - - /** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ - MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - - /** - * Add the given source mapping. - * - * @param Object aMapping - */ - MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } - }; - - /** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ - MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; - }; - - exports.MappingList = MappingList; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var binarySearch = __webpack_require__(8); - var ArraySet = __webpack_require__(5).ArraySet; - var base64VLQ = __webpack_require__(2); - var quickSort = __webpack_require__(9).quickSort; - - function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap) - : new BasicSourceMapConsumer(sourceMap); - } - - SourceMapConsumer.fromSourceMap = function(aSourceMap) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap); - } - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - // `__generatedMappings` and `__originalMappings` are arrays that hold the - // parsed mapping coordinates from the source map's "mappings" attribute. They - // are lazily instantiated, accessed via the `_generatedMappings` and - // `_originalMappings` getters respectively, and we only parse the mappings - // and create these arrays once queried for a source location. We jump through - // these hoops because there can be many thousands of mappings, and parsing - // them is expensive, so we only want to do it if we must. - // - // Each object in the arrays is of the form: - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `_generatedMappings` is ordered by the generated positions. - // - // `_originalMappings` is ordered by the original positions. - - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } - }); - - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } - }); - - SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - SourceMapConsumer.GREATEST_LOWER_BOUND = 1; - SourceMapConsumer.LEAST_UPPER_BOUND = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - if (source != null && sourceRoot != null) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - - /** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: Optional. the column number in the original source. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - if (this.sourceRoot != null) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - if (!this._sources.has(needle.source)) { - return []; - } - needle.source = this._sources.indexOf(needle.source); - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - - exports.SourceMapConsumer = SourceMapConsumer; - - /** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function BasicSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this.file = file; - } - - BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - - /** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @returns BasicSourceMapConsumer - */ - BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - - /** - * The version of the source mapping spec that we are consuming. - */ - BasicSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; - }, this); - } - }); - - /** - * Provide the JIT with a nice shape / hidden class. - */ - function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; - } - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - - /** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ - BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - if (this.sourceRoot != null) { - source = util.join(this.sourceRoot, source); - } - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot != null) { - aSource = util.relative(this.sourceRoot, aSource); - } - - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + aSource)) { - return this.sourcesContent[this._sources.indexOf("/" + aSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - if (this.sourceRoot != null) { - source = util.relative(this.sourceRoot, source); - } - if (!this._sources.has(source)) { - return { - line: null, - column: null, - lastColumn: null - }; - } - source = this._sources.indexOf(source); - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - - exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - - /** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The only parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ - function IndexedSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map')) - } - }); - } - - IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - - /** - * The version of the source mapping spec that we are consuming. - */ - IndexedSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } - }); - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - if (section.consumer.sourceRoot !== null) { - source = util.join(section.consumer.sourceRoot, source); - } - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - - exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - exports.GREATEST_LOWER_BOUND = 1; - exports.LEAST_UPPER_BOUND = 2; - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } - } - - /** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ - exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; - }; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - // It turns out that some (most?) JavaScript engines don't self-host - // `Array.prototype.sort`. This makes sense because C++ will likely remain - // faster than JS when doing raw CPU-intensive sorting. However, when using a - // custom comparator function, calling back and forth between the VM's C++ and - // JIT'd JS is rather slow *and* loses JIT type information, resulting in - // worse generated code for the comparator function than would be optimal. In - // fact, when sorting with a comparator, these costs outweigh the benefits of - // sorting in C++. By using our own JS-implemented Quick Sort (below), we get - // a ~3500ms mean speed-up in `bench/bench.html`. - - /** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ - function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; - } - - /** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ - function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); - } - - /** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ - function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } - } - - /** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ - exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); - }; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - var util = __webpack_require__(4); - - // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other - // operating systems these days (capturing the result). - var REGEX_NEWLINE = /(\r?\n)/; - - // Newline character code for charCodeAt() comparisons - var NEWLINE_CODE = 10; - - // Private symbol for identifying `SourceNode`s when multiple versions of - // the source-map library are loaded. This MUST NOT CHANGE across - // versions! - var isSourceNode = "$$$isSourceNode$$$"; - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex]; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - - -/***/ }) -/******/ ]) -}); -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCBlNDczOGZjNzJhN2IyMzAzOTg4OSIsIndlYnBhY2s6Ly8vLi9zb3VyY2UtbWFwLmpzIiwid2VicGFjazovLy8uL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LXZscS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LmpzIiwid2VicGFjazovLy8uL2xpYi91dGlsLmpzIiwid2VicGFjazovLy8uL2xpYi9hcnJheS1zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21hcHBpbmctbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmluYXJ5LXNlYXJjaC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcXVpY2stc29ydC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW5vZGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNWQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNQQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTBDLFNBQVM7QUFDbkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDL1pBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUEyRDtBQUMzRCxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBO0FBQ0E7Ozs7Ozs7QUMzSUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWdCO0FBQ2hCLGlCQUFnQjs7QUFFaEIsb0JBQW1CO0FBQ25CLHFCQUFvQjs7QUFFcEIsaUJBQWdCO0FBQ2hCLGlCQUFnQjs7QUFFaEIsaUJBQWdCO0FBQ2hCLGtCQUFpQjs7QUFFakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNsRUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0NBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUEyQixRQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNoYUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXNDLFNBQVM7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3hIQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWdCO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQzlFQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxvQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7O0FBRVg7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLE1BQU07QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVEQUFzRCxZQUFZO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBeUIsY0FBYztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXVCLHdDQUF3QztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQStDLG1CQUFtQixFQUFFO0FBQ3BFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFpQixvQkFBb0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE2QixNQUFNO0FBQ25DO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXNEO0FBQ3REOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBLElBQUc7QUFDSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUMsc0JBQXFCLCtDQUErQztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CLDJCQUEyQjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsMkJBQTJCO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUM7QUFDQTtBQUNBLHNCQUFxQiw0QkFBNEI7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDempDQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7OztBQzlHQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVcsTUFBTTtBQUNqQjtBQUNBLFlBQVcsT0FBTztBQUNsQjtBQUNBLFlBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLFNBQVM7QUFDcEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ2pIQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBaUMsUUFBUTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsU0FBUztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBLHVDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBK0MsU0FBUztBQUN4RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUF5QyxTQUFTO0FBQ2xEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSw2Q0FBNEMsY0FBYztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGNBQWE7QUFDYjtBQUNBLFlBQVc7QUFDWDtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBLElBQUc7O0FBRUgsV0FBVTtBQUNWOztBQUVBIiwiZmlsZSI6InNvdXJjZS1tYXAuZGVidWcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJzb3VyY2VNYXBcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wic291cmNlTWFwXCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRleHBvcnRzOiB7fSxcbiBcdFx0XHRpZDogbW9kdWxlSWQsXG4gXHRcdFx0bG9hZGVkOiBmYWxzZVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIGU0NzM4ZmM3MmE3YjIzMDM5ODg5IiwiLypcbiAqIENvcHlyaWdodCAyMDA5LTIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLnR4dCBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuZXhwb3J0cy5Tb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvcicpLlNvdXJjZU1hcEdlbmVyYXRvcjtcbmV4cG9ydHMuU291cmNlTWFwQ29uc3VtZXIgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2UtbWFwLWNvbnN1bWVyJykuU291cmNlTWFwQ29uc3VtZXI7XG5leHBvcnRzLlNvdXJjZU5vZGUgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2Utbm9kZScpLlNvdXJjZU5vZGU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NvdXJjZS1tYXAuanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgYmFzZTY0VkxRID0gcmVxdWlyZSgnLi9iYXNlNjQtdmxxJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBNYXBwaW5nTGlzdCA9IHJlcXVpcmUoJy4vbWFwcGluZy1saXN0JykuTWFwcGluZ0xpc3Q7XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhlIFNvdXJjZU1hcEdlbmVyYXRvciByZXByZXNlbnRzIGEgc291cmNlIG1hcCB3aGljaCBpc1xuICogYmVpbmcgYnVpbHQgaW5jcmVtZW50YWxseS4gWW91IG1heSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAqIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGZpbGU6IFRoZSBmaWxlbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBzb3VyY2VSb290OiBBIHJvb3QgZm9yIGFsbCByZWxhdGl2ZSBVUkxzIGluIHRoaXMgc291cmNlIG1hcC5cbiAqL1xuZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKSB7XG4gIGlmICghYUFyZ3MpIHtcbiAgICBhQXJncyA9IHt9O1xuICB9XG4gIHRoaXMuX2ZpbGUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2ZpbGUnLCBudWxsKTtcbiAgdGhpcy5fc291cmNlUm9vdCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB0aGlzLl9za2lwVmFsaWRhdGlvbiA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc2tpcFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbWFwcGluZ3MgPSBuZXcgTWFwcGluZ0xpc3QoKTtcbiAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gbnVsbDtcbn1cblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IgYmFzZWQgb24gYSBTb3VyY2VNYXBDb25zdW1lclxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIpIHtcbiAgICB2YXIgc291cmNlUm9vdCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VSb290O1xuICAgIHZhciBnZW5lcmF0b3IgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKHtcbiAgICAgIGZpbGU6IGFTb3VyY2VNYXBDb25zdW1lci5maWxlLFxuICAgICAgc291cmNlUm9vdDogc291cmNlUm9vdFxuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIG5ld01hcHBpbmcgPSB7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgIG5ld01hcHBpbmcuc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbmV3TWFwcGluZy5zb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3TWFwcGluZy5vcmlnaW5hbCA9IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLm5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdG9yLmFkZE1hcHBpbmcobmV3TWFwcGluZyk7XG4gICAgfSk7XG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgZ2VuZXJhdG9yLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfTtcblxuLyoqXG4gKiBBZGQgYSBzaW5nbGUgbWFwcGluZyBmcm9tIG9yaWdpbmFsIHNvdXJjZSBsaW5lIGFuZCBjb2x1bW4gdG8gdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIGZvciB0aGlzIHNvdXJjZSBtYXAgYmVpbmcgY3JlYXRlZC4gVGhlIG1hcHBpbmdcbiAqIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGdlbmVyYXRlZDogQW4gb2JqZWN0IHdpdGggdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLlxuICogICAtIG9yaWdpbmFsOiBBbiBvYmplY3Qgd2l0aCB0aGUgb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZVJvb3QpLlxuICogICAtIG5hbWU6IEFuIG9wdGlvbmFsIG9yaWdpbmFsIHRva2VuIG5hbWUgZm9yIHRoaXMgbWFwcGluZy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hZGRNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FkZE1hcHBpbmcoYUFyZ3MpIHtcbiAgICB2YXIgZ2VuZXJhdGVkID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdnZW5lcmF0ZWQnKTtcbiAgICB2YXIgb3JpZ2luYWwgPSB1dGlsLmdldEFyZyhhQXJncywgJ29yaWdpbmFsJywgbnVsbCk7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJywgbnVsbCk7XG4gICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhhQXJncywgJ25hbWUnLCBudWxsKTtcblxuICAgIGlmICghdGhpcy5fc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlTWFwcGluZyhnZW5lcmF0ZWQsIG9yaWdpbmFsLCBzb3VyY2UsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgc291cmNlID0gU3RyaW5nKHNvdXJjZSk7XG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmFtZSAhPSBudWxsKSB7XG4gICAgICBuYW1lID0gU3RyaW5nKG5hbWUpO1xuICAgICAgaWYgKCF0aGlzLl9uYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21hcHBpbmdzLmFkZCh7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogZ2VuZXJhdGVkLmNvbHVtbixcbiAgICAgIG9yaWdpbmFsTGluZTogb3JpZ2luYWwgIT0gbnVsbCAmJiBvcmlnaW5hbC5saW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwuY29sdW1uLFxuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBuYW1lOiBuYW1lXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgdmFyIHNvdXJjZSA9IGFTb3VyY2VGaWxlO1xuICAgIGlmICh0aGlzLl9zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5fc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoYVNvdXJjZUNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgLy8gQWRkIHRoZSBzb3VyY2UgY29udGVudCB0byB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgX3NvdXJjZXNDb250ZW50cyBtYXAgaWYgdGhlIHByb3BlcnR5IGlzIG51bGwuXG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV0gPSBhU291cmNlQ29udGVudDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBzb3VyY2UgZmlsZSBmcm9tIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcC5cbiAgICAgIC8vIElmIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcCBpcyBlbXB0eSwgc2V0IHRoZSBwcm9wZXJ0eSB0byBudWxsLlxuICAgICAgZGVsZXRlIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3NvdXJjZXNDb250ZW50cykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIEFwcGxpZXMgdGhlIG1hcHBpbmdzIG9mIGEgc3ViLXNvdXJjZS1tYXAgZm9yIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgdG8gdGhlXG4gKiBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZC4gRWFjaCBtYXBwaW5nIHRvIHRoZSBzdXBwbGllZCBzb3VyY2UgZmlsZSBpc1xuICogcmV3cml0dGVuIHVzaW5nIHRoZSBzdXBwbGllZCBzb3VyY2UgbWFwLiBOb3RlOiBUaGUgcmVzb2x1dGlvbiBmb3IgdGhlXG4gKiByZXN1bHRpbmcgbWFwcGluZ3MgaXMgdGhlIG1pbmltaXVtIG9mIHRoaXMgbWFwIGFuZCB0aGUgc3VwcGxpZWQgbWFwLlxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBhU291cmNlRmlsZSBPcHRpb25hbC4gVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZS5cbiAqICAgICAgICBJZiBvbWl0dGVkLCBTb3VyY2VNYXBDb25zdW1lcidzIGZpbGUgcHJvcGVydHkgd2lsbCBiZSB1c2VkLlxuICogQHBhcmFtIGFTb3VyY2VNYXBQYXRoIE9wdGlvbmFsLiBUaGUgZGlybmFtZSBvZiB0aGUgcGF0aCB0byB0aGUgc291cmNlIG1hcFxuICogICAgICAgIHRvIGJlIGFwcGxpZWQuIElmIHJlbGF0aXZlLCBpdCBpcyByZWxhdGl2ZSB0byB0aGUgU291cmNlTWFwQ29uc3VtZXIuXG4gKiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgbmVlZGVkIHdoZW4gdGhlIHR3byBzb3VyY2UgbWFwcyBhcmVuJ3QgaW4gdGhlIHNhbWVcbiAqICAgICAgICBkaXJlY3RvcnksIGFuZCB0aGUgc291cmNlIG1hcCB0byBiZSBhcHBsaWVkIGNvbnRhaW5zIHJlbGF0aXZlIHNvdXJjZVxuICogICAgICAgIHBhdGhzLiBJZiBzbywgdGhvc2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIG5lZWQgdG8gYmUgcmV3cml0dGVuXG4gKiAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcEdlbmVyYXRvci5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hcHBseVNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hcHBseVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIsIGFTb3VyY2VGaWxlLCBhU291cmNlTWFwUGF0aCkge1xuICAgIHZhciBzb3VyY2VGaWxlID0gYVNvdXJjZUZpbGU7XG4gICAgLy8gSWYgYVNvdXJjZUZpbGUgaXMgb21pdHRlZCwgd2Ugd2lsbCB1c2UgdGhlIGZpbGUgcHJvcGVydHkgb2YgdGhlIFNvdXJjZU1hcFxuICAgIGlmIChhU291cmNlRmlsZSA9PSBudWxsKSB7XG4gICAgICBpZiAoYVNvdXJjZU1hcENvbnN1bWVyLmZpbGUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1NvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgcmVxdWlyZXMgZWl0aGVyIGFuIGV4cGxpY2l0IHNvdXJjZSBmaWxlLCAnICtcbiAgICAgICAgICAnb3IgdGhlIHNvdXJjZSBtYXBcXCdzIFwiZmlsZVwiIHByb3BlcnR5LiBCb3RoIHdlcmUgb21pdHRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzb3VyY2VGaWxlID0gYVNvdXJjZU1hcENvbnN1bWVyLmZpbGU7XG4gICAgfVxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5fc291cmNlUm9vdDtcbiAgICAvLyBNYWtlIFwic291cmNlRmlsZVwiIHJlbGF0aXZlIGlmIGFuIGFic29sdXRlIFVybCBpcyBwYXNzZWQuXG4gICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgfVxuICAgIC8vIEFwcGx5aW5nIHRoZSBTb3VyY2VNYXAgY2FuIGFkZCBhbmQgcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNvdXJjZXMgYW5kXG4gICAgLy8gdGhlIG5hbWVzIGFycmF5LlxuICAgIHZhciBuZXdTb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gICAgdmFyIG5ld05hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgICAvLyBGaW5kIG1hcHBpbmdzIGZvciB0aGUgXCJzb3VyY2VGaWxlXCJcbiAgICB0aGlzLl9tYXBwaW5ncy51bnNvcnRlZEZvckVhY2goZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gc291cmNlRmlsZSAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGl0IGNhbiBiZSBtYXBwZWQgYnkgdGhlIHNvdXJjZSBtYXAsIHRoZW4gdXBkYXRlIHRoZSBtYXBwaW5nLlxuICAgICAgICB2YXIgb3JpZ2luYWwgPSBhU291cmNlTWFwQ29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3JpZ2luYWwuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBDb3B5IG1hcHBpbmdcbiAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IG9yaWdpbmFsLnNvdXJjZTtcbiAgICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbWFwcGluZy5zb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgICAgICBpZiAob3JpZ2luYWwubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLm5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICBpZiAoc291cmNlICE9IG51bGwgJiYgIW5ld1NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgbmV3U291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmICFuZXdOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgbmV3TmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuXG4gICAgfSwgdGhpcyk7XG4gICAgdGhpcy5fc291cmNlcyA9IG5ld1NvdXJjZXM7XG4gICAgdGhpcy5fbmFtZXMgPSBuZXdOYW1lcztcblxuICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnRzIG9mIGFwcGxpZWQgbWFwLlxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChhU291cmNlTWFwUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhU291cmNlTWFwUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBBIG1hcHBpbmcgY2FuIGhhdmUgb25lIG9mIHRoZSB0aHJlZSBsZXZlbHMgb2YgZGF0YTpcbiAqXG4gKiAgIDEuIEp1c3QgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAqICAgMi4gVGhlIEdlbmVyYXRlZCBwb3NpdGlvbiwgb3JpZ2luYWwgcG9zaXRpb24sIGFuZCBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIDMuIEdlbmVyYXRlZCBhbmQgb3JpZ2luYWwgcG9zaXRpb24sIG9yaWdpbmFsIHNvdXJjZSwgYXMgd2VsbCBhcyBhIG5hbWVcbiAqICAgICAgdG9rZW4uXG4gKlxuICogVG8gbWFpbnRhaW4gY29uc2lzdGVuY3ksIHdlIHZhbGlkYXRlIHRoYXQgYW55IG5ldyBtYXBwaW5nIGJlaW5nIGFkZGVkIGZhbGxzXG4gKiBpbiB0byBvbmUgb2YgdGhlc2UgY2F0ZWdvcmllcy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGVNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3ZhbGlkYXRlTWFwcGluZyhhR2VuZXJhdGVkLCBhT3JpZ2luYWwsIGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYU5hbWUpIHtcbiAgICAvLyBXaGVuIGFPcmlnaW5hbCBpcyB0cnV0aHkgYnV0IGhhcyBlbXB0eSB2YWx1ZXMgZm9yIC5saW5lIGFuZCAuY29sdW1uLFxuICAgIC8vIGl0IGlzIG1vc3QgbGlrZWx5IGEgcHJvZ3JhbW1lciBlcnJvci4gSW4gdGhpcyBjYXNlIHdlIHRocm93IGEgdmVyeVxuICAgIC8vIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgdG8gdHJ5IHRvIGd1aWRlIHRoZW0gdGhlIHJpZ2h0IHdheS5cbiAgICAvLyBGb3IgZXhhbXBsZTogaHR0cHM6Ly9naXRodWIuY29tL1BvbHltZXIvcG9seW1lci1idW5kbGVyL3B1bGwvNTE5XG4gICAgaWYgKGFPcmlnaW5hbCAmJiB0eXBlb2YgYU9yaWdpbmFsLmxpbmUgIT09ICdudW1iZXInICYmIHR5cGVvZiBhT3JpZ2luYWwuY29sdW1uICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnb3JpZ2luYWwubGluZSBhbmQgb3JpZ2luYWwuY29sdW1uIGFyZSBub3QgbnVtYmVycyAtLSB5b3UgcHJvYmFibHkgbWVhbnQgdG8gb21pdCAnICtcbiAgICAgICAgICAgICd0aGUgb3JpZ2luYWwgbWFwcGluZyBlbnRpcmVseSBhbmQgb25seSBtYXAgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi4gSWYgc28sIHBhc3MgJyArXG4gICAgICAgICAgICAnbnVsbCBmb3IgdGhlIG9yaWdpbmFsIG1hcHBpbmcgaW5zdGVhZCBvZiBhbiBvYmplY3Qgd2l0aCBlbXB0eSBvciBudWxsIHZhbHVlcy4nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAmJiBhR2VuZXJhdGVkLmxpbmUgPiAwICYmIGFHZW5lcmF0ZWQuY29sdW1uID49IDBcbiAgICAgICAgJiYgIWFPcmlnaW5hbCAmJiAhYVNvdXJjZSAmJiAhYU5hbWUpIHtcbiAgICAgIC8vIENhc2UgMS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoYUdlbmVyYXRlZCAmJiAnbGluZScgaW4gYUdlbmVyYXRlZCAmJiAnY29sdW1uJyBpbiBhR2VuZXJhdGVkXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsICYmICdsaW5lJyBpbiBhT3JpZ2luYWwgJiYgJ2NvbHVtbicgaW4gYU9yaWdpbmFsXG4gICAgICAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsLmxpbmUgPiAwICYmIGFPcmlnaW5hbC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFTb3VyY2UpIHtcbiAgICAgIC8vIENhc2VzIDIgYW5kIDMuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hcHBpbmc6ICcgKyBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGdlbmVyYXRlZDogYUdlbmVyYXRlZCxcbiAgICAgICAgc291cmNlOiBhU291cmNlLFxuICAgICAgICBvcmlnaW5hbDogYU9yaWdpbmFsLFxuICAgICAgICBuYW1lOiBhTmFtZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIHRvIHRoZSBzdHJlYW0gb2YgYmFzZSA2NCBWTFFzXG4gKiBzcGVjaWZpZWQgYnkgdGhlIHNvdXJjZSBtYXAgZm9ybWF0LlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl9zZXJpYWxpemVNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXJpYWxpemVNYXBwaW5ncygpIHtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbExpbmUgPSAwO1xuICAgIHZhciBwcmV2aW91c05hbWUgPSAwO1xuICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBuZXh0O1xuICAgIHZhciBtYXBwaW5nO1xuICAgIHZhciBuYW1lSWR4O1xuICAgIHZhciBzb3VyY2VJZHg7XG5cbiAgICB2YXIgbWFwcGluZ3MgPSB0aGlzLl9tYXBwaW5ncy50b0FycmF5KCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG1hcHBpbmdzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBtYXBwaW5nID0gbWFwcGluZ3NbaV07XG4gICAgICBuZXh0ID0gJydcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgICAgd2hpbGUgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbmV4dCArPSAnOyc7XG4gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBpZiAoIXV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZywgbWFwcGluZ3NbaSAtIDFdKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQgKz0gJywnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c0dlbmVyYXRlZENvbHVtbik7XG4gICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VJZHggPSB0aGlzLl9zb3VyY2VzLmluZGV4T2YobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUoc291cmNlSWR4IC0gcHJldmlvdXNTb3VyY2UpO1xuICAgICAgICBwcmV2aW91c1NvdXJjZSA9IHNvdXJjZUlkeDtcblxuICAgICAgICAvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lvbiAzXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsTGluZSAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsTGluZSk7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmUgLSAxO1xuXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbENvbHVtbik7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIG5hbWVJZHggPSB0aGlzLl9uYW1lcy5pbmRleE9mKG1hcHBpbmcubmFtZSk7XG4gICAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKG5hbWVJZHggLSBwcmV2aW91c05hbWUpO1xuICAgICAgICAgIHByZXZpb3VzTmFtZSA9IG5hbWVJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzdWx0ICs9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KGFTb3VyY2VzLCBhU291cmNlUm9vdCkge1xuICAgIHJldHVybiBhU291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoYVNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKGFTb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHV0aWwudG9TZXRTdHJpbmcoc291cmNlKTtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fc291cmNlc0NvbnRlbnRzLCBrZXkpXG4gICAgICAgID8gdGhpcy5fc291cmNlc0NvbnRlbnRzW2tleV1cbiAgICAgICAgOiBudWxsO1xuICAgIH0sIHRoaXMpO1xuICB9O1xuXG4vKipcbiAqIEV4dGVybmFsaXplIHRoZSBzb3VyY2UgbWFwLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvSlNPTiA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl90b0pTT04oKSB7XG4gICAgdmFyIG1hcCA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMuX3ZlcnNpb24sXG4gICAgICBzb3VyY2VzOiB0aGlzLl9zb3VyY2VzLnRvQXJyYXkoKSxcbiAgICAgIG5hbWVzOiB0aGlzLl9uYW1lcy50b0FycmF5KCksXG4gICAgICBtYXBwaW5nczogdGhpcy5fc2VyaWFsaXplTWFwcGluZ3MoKVxuICAgIH07XG4gICAgaWYgKHRoaXMuX2ZpbGUgIT0gbnVsbCkge1xuICAgICAgbWFwLmZpbGUgPSB0aGlzLl9maWxlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBtYXAuc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIG1hcC5zb3VyY2VzQ29udGVudCA9IHRoaXMuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQobWFwLnNvdXJjZXMsIG1hcC5zb3VyY2VSb290KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9O1xuXG4vKipcbiAqIFJlbmRlciB0aGUgc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQgdG8gYSBzdHJpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudG9KU09OKCkpO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcEdlbmVyYXRvciA9IFNvdXJjZU1hcEdlbmVyYXRvcjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3NvdXJjZS1tYXAtZ2VuZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKlxuICogQmFzZWQgb24gdGhlIEJhc2UgNjQgVkxRIGltcGxlbWVudGF0aW9uIGluIENsb3N1cmUgQ29tcGlsZXI6XG4gKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nsb3N1cmUtY29tcGlsZXIvc291cmNlL2Jyb3dzZS90cnVuay9zcmMvY29tL2dvb2dsZS9kZWJ1Z2dpbmcvc291cmNlbWFwL0Jhc2U2NFZMUS5qYXZhXG4gKlxuICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1cmUgQ29tcGlsZXIgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKiAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWRcbiAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLFxuICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXG4gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJy4vYmFzZTY0Jyk7XG5cbi8vIEEgc2luZ2xlIGJhc2UgNjQgZGlnaXQgY2FuIGNvbnRhaW4gNiBiaXRzIG9mIGRhdGEuIEZvciB0aGUgYmFzZSA2NCB2YXJpYWJsZVxuLy8gbGVuZ3RoIHF1YW50aXRpZXMgd2UgdXNlIGluIHRoZSBzb3VyY2UgbWFwIHNwZWMsIHRoZSBmaXJzdCBiaXQgaXMgdGhlIHNpZ24sXG4vLyB0aGUgbmV4dCBmb3VyIGJpdHMgYXJlIHRoZSBhY3R1YWwgdmFsdWUsIGFuZCB0aGUgNnRoIGJpdCBpcyB0aGVcbi8vIGNvbnRpbnVhdGlvbiBiaXQuIFRoZSBjb250aW51YXRpb24gYml0IHRlbGxzIHVzIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmVcbi8vIGRpZ2l0cyBpbiB0aGlzIHZhbHVlIGZvbGxvd2luZyB0aGlzIGRpZ2l0LlxuLy9cbi8vICAgQ29udGludWF0aW9uXG4vLyAgIHwgICAgU2lnblxuLy8gICB8ICAgIHxcbi8vICAgViAgICBWXG4vLyAgIDEwMTAxMVxuXG52YXIgVkxRX0JBU0VfU0hJRlQgPSA1O1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9CQVNFID0gMSA8PCBWTFFfQkFTRV9TSElGVDtcblxuLy8gYmluYXJ5OiAwMTExMTFcbnZhciBWTFFfQkFTRV9NQVNLID0gVkxRX0JBU0UgLSAxO1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9DT05USU5VQVRJT05fQklUID0gVkxRX0JBU0U7XG5cbi8qKlxuICogQ29udmVydHMgZnJvbSBhIHR3by1jb21wbGVtZW50IHZhbHVlIHRvIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KVxuICogICAyIGJlY29tZXMgNCAoMTAwIGJpbmFyeSksIC0yIGJlY29tZXMgNSAoMTAxIGJpbmFyeSlcbiAqL1xuZnVuY3Rpb24gdG9WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHJldHVybiBhVmFsdWUgPCAwXG4gICAgPyAoKC1hVmFsdWUpIDw8IDEpICsgMVxuICAgIDogKGFWYWx1ZSA8PCAxKSArIDA7XG59XG5cbi8qKlxuICogQ29udmVydHMgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMiAoMTAgYmluYXJ5KSBiZWNvbWVzIDEsIDMgKDExIGJpbmFyeSkgYmVjb21lcyAtMVxuICogICA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTJcbiAqL1xuZnVuY3Rpb24gZnJvbVZMUVNpZ25lZChhVmFsdWUpIHtcbiAgdmFyIGlzTmVnYXRpdmUgPSAoYVZhbHVlICYgMSkgPT09IDE7XG4gIHZhciBzaGlmdGVkID0gYVZhbHVlID4+IDE7XG4gIHJldHVybiBpc05lZ2F0aXZlXG4gICAgPyAtc2hpZnRlZFxuICAgIDogc2hpZnRlZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIDY0IFZMUSBlbmNvZGVkIHZhbHVlLlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIGJhc2U2NFZMUV9lbmNvZGUoYVZhbHVlKSB7XG4gIHZhciBlbmNvZGVkID0gXCJcIjtcbiAgdmFyIGRpZ2l0O1xuXG4gIHZhciB2bHEgPSB0b1ZMUVNpZ25lZChhVmFsdWUpO1xuXG4gIGRvIHtcbiAgICBkaWdpdCA9IHZscSAmIFZMUV9CQVNFX01BU0s7XG4gICAgdmxxID4+Pj0gVkxRX0JBU0VfU0hJRlQ7XG4gICAgaWYgKHZscSA+IDApIHtcbiAgICAgIC8vIFRoZXJlIGFyZSBzdGlsbCBtb3JlIGRpZ2l0cyBpbiB0aGlzIHZhbHVlLCBzbyB3ZSBtdXN0IG1ha2Ugc3VyZSB0aGVcbiAgICAgIC8vIGNvbnRpbnVhdGlvbiBiaXQgaXMgbWFya2VkLlxuICAgICAgZGlnaXQgfD0gVkxRX0NPTlRJTlVBVElPTl9CSVQ7XG4gICAgfVxuICAgIGVuY29kZWQgKz0gYmFzZTY0LmVuY29kZShkaWdpdCk7XG4gIH0gd2hpbGUgKHZscSA+IDApO1xuXG4gIHJldHVybiBlbmNvZGVkO1xufTtcblxuLyoqXG4gKiBEZWNvZGVzIHRoZSBuZXh0IGJhc2UgNjQgVkxRIHZhbHVlIGZyb20gdGhlIGdpdmVuIHN0cmluZyBhbmQgcmV0dXJucyB0aGVcbiAqIHZhbHVlIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIHZpYSB0aGUgb3V0IHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZGVjb2RlKGFTdHIsIGFJbmRleCwgYU91dFBhcmFtKSB7XG4gIHZhciBzdHJMZW4gPSBhU3RyLmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IDA7XG4gIHZhciBzaGlmdCA9IDA7XG4gIHZhciBjb250aW51YXRpb24sIGRpZ2l0O1xuXG4gIGRvIHtcbiAgICBpZiAoYUluZGV4ID49IHN0ckxlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbW9yZSBkaWdpdHMgaW4gYmFzZSA2NCBWTFEgdmFsdWUuXCIpO1xuICAgIH1cblxuICAgIGRpZ2l0ID0gYmFzZTY0LmRlY29kZShhU3RyLmNoYXJDb2RlQXQoYUluZGV4KyspKTtcbiAgICBpZiAoZGlnaXQgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBkaWdpdDogXCIgKyBhU3RyLmNoYXJBdChhSW5kZXggLSAxKSk7XG4gICAgfVxuXG4gICAgY29udGludWF0aW9uID0gISEoZGlnaXQgJiBWTFFfQ09OVElOVUFUSU9OX0JJVCk7XG4gICAgZGlnaXQgJj0gVkxRX0JBU0VfTUFTSztcbiAgICByZXN1bHQgPSByZXN1bHQgKyAoZGlnaXQgPDwgc2hpZnQpO1xuICAgIHNoaWZ0ICs9IFZMUV9CQVNFX1NISUZUO1xuICB9IHdoaWxlIChjb250aW51YXRpb24pO1xuXG4gIGFPdXRQYXJhbS52YWx1ZSA9IGZyb21WTFFTaWduZWQocmVzdWx0KTtcbiAgYU91dFBhcmFtLnJlc3QgPSBhSW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmFzZTY0LXZscS5qc1xuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBpbnRUb0NoYXJNYXAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycuc3BsaXQoJycpO1xuXG4vKipcbiAqIEVuY29kZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBvZiAwIHRvIDYzIHRvIGEgc2luZ2xlIGJhc2UgNjQgZGlnaXQuXG4gKi9cbmV4cG9ydHMuZW5jb2RlID0gZnVuY3Rpb24gKG51bWJlcikge1xuICBpZiAoMCA8PSBudW1iZXIgJiYgbnVtYmVyIDwgaW50VG9DaGFyTWFwLmxlbmd0aCkge1xuICAgIHJldHVybiBpbnRUb0NoYXJNYXBbbnVtYmVyXTtcbiAgfVxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYzOiBcIiArIG51bWJlcik7XG59O1xuXG4vKipcbiAqIERlY29kZSBhIHNpbmdsZSBiYXNlIDY0IGNoYXJhY3RlciBjb2RlIGRpZ2l0IHRvIGFuIGludGVnZXIuIFJldHVybnMgLTEgb25cbiAqIGZhaWx1cmUuXG4gKi9cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gKGNoYXJDb2RlKSB7XG4gIHZhciBiaWdBID0gNjU7ICAgICAvLyAnQSdcbiAgdmFyIGJpZ1ogPSA5MDsgICAgIC8vICdaJ1xuXG4gIHZhciBsaXR0bGVBID0gOTc7ICAvLyAnYSdcbiAgdmFyIGxpdHRsZVogPSAxMjI7IC8vICd6J1xuXG4gIHZhciB6ZXJvID0gNDg7ICAgICAvLyAnMCdcbiAgdmFyIG5pbmUgPSA1NzsgICAgIC8vICc5J1xuXG4gIHZhciBwbHVzID0gNDM7ICAgICAvLyAnKydcbiAgdmFyIHNsYXNoID0gNDc7ICAgIC8vICcvJ1xuXG4gIHZhciBsaXR0bGVPZmZzZXQgPSAyNjtcbiAgdmFyIG51bWJlck9mZnNldCA9IDUyO1xuXG4gIC8vIDAgLSAyNTogQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpcbiAgaWYgKGJpZ0EgPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gYmlnWikge1xuICAgIHJldHVybiAoY2hhckNvZGUgLSBiaWdBKTtcbiAgfVxuXG4gIC8vIDI2IC0gNTE6IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XG4gIGlmIChsaXR0bGVBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGxpdHRsZVopIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gbGl0dGxlQSArIGxpdHRsZU9mZnNldCk7XG4gIH1cblxuICAvLyA1MiAtIDYxOiAwMTIzNDU2Nzg5XG4gIGlmICh6ZXJvIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IG5pbmUpIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gemVybyArIG51bWJlck9mZnNldCk7XG4gIH1cblxuICAvLyA2MjogK1xuICBpZiAoY2hhckNvZGUgPT0gcGx1cykge1xuICAgIHJldHVybiA2MjtcbiAgfVxuXG4gIC8vIDYzOiAvXG4gIGlmIChjaGFyQ29kZSA9PSBzbGFzaCkge1xuICAgIHJldHVybiA2MztcbiAgfVxuXG4gIC8vIEludmFsaWQgYmFzZTY0IGRpZ2l0LlxuICByZXR1cm4gLTE7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmFzZTY0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxuLyoqXG4gKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHZhbHVlcyBmcm9tIHBhcmFtZXRlci9vcHRpb25zXG4gKiBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSBhcmdzIFRoZSBvYmplY3Qgd2UgYXJlIGV4dHJhY3RpbmcgdmFsdWVzIGZyb21cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB3ZSBhcmUgZ2V0dGluZy5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgQW4gb3B0aW9uYWwgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nXG4gKiBmcm9tIHRoZSBvYmplY3QuIElmIHRoaXMgaXMgbm90IHNwZWNpZmllZCBhbmQgdGhlIHByb3BlcnR5IGlzIG1pc3NpbmcsIGFuXG4gKiBlcnJvciB3aWxsIGJlIHRocm93bi5cbiAqL1xuZnVuY3Rpb24gZ2V0QXJnKGFBcmdzLCBhTmFtZSwgYURlZmF1bHRWYWx1ZSkge1xuICBpZiAoYU5hbWUgaW4gYUFyZ3MpIHtcbiAgICByZXR1cm4gYUFyZ3NbYU5hbWVdO1xuICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gYURlZmF1bHRWYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFOYW1lICsgJ1wiIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQuJyk7XG4gIH1cbn1cbmV4cG9ydHMuZ2V0QXJnID0gZ2V0QXJnO1xuXG52YXIgdXJsUmVnZXhwID0gL14oPzooW1xcdytcXC0uXSspOik/XFwvXFwvKD86KFxcdys6XFx3KylAKT8oW1xcdy5dKikoPzo6KFxcZCspKT8oXFxTKikkLztcbnZhciBkYXRhVXJsUmVnZXhwID0gL15kYXRhOi4rXFwsLiskLztcblxuZnVuY3Rpb24gdXJsUGFyc2UoYVVybCkge1xuICB2YXIgbWF0Y2ggPSBhVXJsLm1hdGNoKHVybFJlZ2V4cCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjaGVtZTogbWF0Y2hbMV0sXG4gICAgYXV0aDogbWF0Y2hbMl0sXG4gICAgaG9zdDogbWF0Y2hbM10sXG4gICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgcGF0aDogbWF0Y2hbNV1cbiAgfTtcbn1cbmV4cG9ydHMudXJsUGFyc2UgPSB1cmxQYXJzZTtcblxuZnVuY3Rpb24gdXJsR2VuZXJhdGUoYVBhcnNlZFVybCkge1xuICB2YXIgdXJsID0gJyc7XG4gIGlmIChhUGFyc2VkVXJsLnNjaGVtZSkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLnNjaGVtZSArICc6JztcbiAgfVxuICB1cmwgKz0gJy8vJztcbiAgaWYgKGFQYXJzZWRVcmwuYXV0aCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAnQCc7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwuaG9zdCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmhvc3Q7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwucG9ydCkge1xuICAgIHVybCArPSBcIjpcIiArIGFQYXJzZWRVcmwucG9ydFxuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBhdGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5wYXRoO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5leHBvcnRzLnVybEdlbmVyYXRlID0gdXJsR2VuZXJhdGU7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIG9yIHRoZSBwYXRoIHBvcnRpb24gb2YgYSBVUkw6XG4gKlxuICogLSBSZXBsYWNlcyBjb25zZWN1dGl2ZSBzbGFzaGVzIHdpdGggb25lIHNsYXNoLlxuICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICcuJyBwYXJ0cy5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnPGRpcj4vLi4nIHBhcnRzLlxuICpcbiAqIEJhc2VkIG9uIGNvZGUgaW4gdGhlIE5vZGUuanMgJ3BhdGgnIGNvcmUgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciB1cmwgdG8gbm9ybWFsaXplLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUoYVBhdGgpIHtcbiAgdmFyIHBhdGggPSBhUGF0aDtcbiAgdmFyIHVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgaWYgKHVybCkge1xuICAgIGlmICghdXJsLnBhdGgpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG4gICAgcGF0aCA9IHVybC5wYXRoO1xuICB9XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpO1xuXG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoL1xcLysvKTtcbiAgZm9yICh2YXIgcGFydCwgdXAgPSAwLCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwID4gMCkge1xuICAgICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICAgIC8vIFRoZSBmaXJzdCBwYXJ0IGlzIGJsYW5rIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLiBUcnlpbmcgdG8gZ29cbiAgICAgICAgLy8gYWJvdmUgdGhlIHJvb3QgaXMgYSBuby1vcC4gVGhlcmVmb3JlIHdlIGNhbiByZW1vdmUgYWxsICcuLicgcGFydHNcbiAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgdGhlIHJvb3QuXG4gICAgICAgIHBhcnRzLnNwbGljZShpICsgMSwgdXApO1xuICAgICAgICB1cCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMik7XG4gICAgICAgIHVwLS07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHBhdGggPSBwYXJ0cy5qb2luKCcvJyk7XG5cbiAgaWYgKHBhdGggPT09ICcnKSB7XG4gICAgcGF0aCA9IGlzQWJzb2x1dGUgPyAnLycgOiAnLic7XG4gIH1cblxuICBpZiAodXJsKSB7XG4gICAgdXJsLnBhdGggPSBwYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZSh1cmwpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5cbi8qKlxuICogSm9pbnMgdHdvIHBhdGhzL1VSTHMuXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBqb2luZWQgd2l0aCB0aGUgcm9vdC5cbiAqXG4gKiAtIElmIGFQYXRoIGlzIGEgVVJMIG9yIGEgZGF0YSBVUkksIGFQYXRoIGlzIHJldHVybmVkLCB1bmxlc3MgYVBhdGggaXMgYVxuICogICBzY2hlbWUtcmVsYXRpdmUgVVJMOiBUaGVuIHRoZSBzY2hlbWUgb2YgYVJvb3QsIGlmIGFueSwgaXMgcHJlcGVuZGVkXG4gKiAgIGZpcnN0LlxuICogLSBPdGhlcndpc2UgYVBhdGggaXMgYSBwYXRoLiBJZiBhUm9vdCBpcyBhIFVSTCwgdGhlbiBpdHMgcGF0aCBwb3J0aW9uXG4gKiAgIGlzIHVwZGF0ZWQgd2l0aCB0aGUgcmVzdWx0IGFuZCBhUm9vdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRcbiAqICAgaXMgcmV0dXJuZWQuXG4gKiAgIC0gSWYgYVBhdGggaXMgYWJzb2x1dGUsIHRoZSByZXN1bHQgaXMgYVBhdGguXG4gKiAgIC0gT3RoZXJ3aXNlIHRoZSB0d28gcGF0aHMgYXJlIGpvaW5lZCB3aXRoIGEgc2xhc2guXG4gKiAtIEpvaW5pbmcgZm9yIGV4YW1wbGUgJ2h0dHA6Ly8nIGFuZCAnd3d3LmV4YW1wbGUuY29tJyBpcyBhbHNvIHN1cHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gam9pbihhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuICBpZiAoYVBhdGggPT09IFwiXCIpIHtcbiAgICBhUGF0aCA9IFwiLlwiO1xuICB9XG4gIHZhciBhUGF0aFVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgdmFyIGFSb290VXJsID0gdXJsUGFyc2UoYVJvb3QpO1xuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdCA9IGFSb290VXJsLnBhdGggfHwgJy8nO1xuICB9XG5cbiAgLy8gYGpvaW4oZm9vLCAnLy93d3cuZXhhbXBsZS5vcmcnKWBcbiAgaWYgKGFQYXRoVXJsICYmICFhUGF0aFVybC5zY2hlbWUpIHtcbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFQYXRoVXJsLnNjaGVtZSA9IGFSb290VXJsLnNjaGVtZTtcbiAgICB9XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFQYXRoVXJsKTtcbiAgfVxuXG4gIGlmIChhUGF0aFVybCB8fCBhUGF0aC5tYXRjaChkYXRhVXJsUmVnZXhwKSkge1xuICAgIHJldHVybiBhUGF0aDtcbiAgfVxuXG4gIC8vIGBqb2luKCdodHRwOi8vJywgJ3d3dy5leGFtcGxlLmNvbScpYFxuICBpZiAoYVJvb3RVcmwgJiYgIWFSb290VXJsLmhvc3QgJiYgIWFSb290VXJsLnBhdGgpIHtcbiAgICBhUm9vdFVybC5ob3N0ID0gYVBhdGg7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFSb290VXJsKTtcbiAgfVxuXG4gIHZhciBqb2luZWQgPSBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJ1xuICAgID8gYVBhdGhcbiAgICA6IG5vcm1hbGl6ZShhUm9vdC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIGFQYXRoKTtcblxuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdFVybC5wYXRoID0gam9pbmVkO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cbiAgcmV0dXJuIGpvaW5lZDtcbn1cbmV4cG9ydHMuam9pbiA9IGpvaW47XG5cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uIChhUGF0aCkge1xuICByZXR1cm4gYVBhdGguY2hhckF0KDApID09PSAnLycgfHwgISFhUGF0aC5tYXRjaCh1cmxSZWdleHApO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgcGF0aCByZWxhdGl2ZSB0byBhIFVSTCBvciBhbm90aGVyIHBhdGguXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIGFSb290LlxuICovXG5mdW5jdGlvbiByZWxhdGl2ZShhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuXG4gIGFSb290ID0gYVJvb3QucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBhdGggdG8gYmUgYWJvdmUgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2ltcGx5XG4gIC8vIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlIHBhdGggd29uJ3Qgd29yay4gSW5zdGVhZCwgd2VcbiAgLy8gbmVlZCB0byByZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoZSByb290IG9uZSBieSBvbmUsIHVudGlsIGVpdGhlciB3ZSBmaW5kXG4gIC8vIGEgcHJlZml4IHRoYXQgZml0cywgb3Igd2UgcnVuIG91dCBvZiBjb21wb25lbnRzIHRvIHJlbW92ZS5cbiAgdmFyIGxldmVsID0gMDtcbiAgd2hpbGUgKGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpICE9PSAwKSB7XG4gICAgdmFyIGluZGV4ID0gYVJvb3QubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBwYXJ0IG9mIHRoZSByb290IHRoYXQgaXMgbGVmdCBpcyB0aGUgc2NoZW1lIChpLmUuIGh0dHA6Ly8sXG4gICAgLy8gZmlsZTovLy8sIGV0Yy4pLCBvbmUgb3IgbW9yZSBzbGFzaGVzICgvKSwgb3Igc2ltcGx5IG5vdGhpbmcgYXQgYWxsLCB3ZVxuICAgIC8vIGhhdmUgZXhoYXVzdGVkIGFsbCBjb21wb25lbnRzLCBzbyB0aGUgcGF0aCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gICAgYVJvb3QgPSBhUm9vdC5zbGljZSgwLCBpbmRleCk7XG4gICAgaWYgKGFSb290Lm1hdGNoKC9eKFteXFwvXSs6XFwvKT9cXC8qJC8pKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgKytsZXZlbDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB3ZSBhZGQgYSBcIi4uL1wiIGZvciBlYWNoIGNvbXBvbmVudCB3ZSByZW1vdmVkIGZyb20gdGhlIHJvb3QuXG4gIHJldHVybiBBcnJheShsZXZlbCArIDEpLmpvaW4oXCIuLi9cIikgKyBhUGF0aC5zdWJzdHIoYVJvb3QubGVuZ3RoICsgMSk7XG59XG5leHBvcnRzLnJlbGF0aXZlID0gcmVsYXRpdmU7XG5cbnZhciBzdXBwb3J0c051bGxQcm90byA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBvYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gISgnX19wcm90b19fJyBpbiBvYmopO1xufSgpKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkgKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8qKlxuICogQmVjYXVzZSBiZWhhdmlvciBnb2VzIHdhY2t5IHdoZW4geW91IHNldCBgX19wcm90b19fYCBvbiBvYmplY3RzLCB3ZVxuICogaGF2ZSB0byBwcmVmaXggYWxsIHRoZSBzdHJpbmdzIGluIG91ciBzZXQgd2l0aCBhbiBhcmJpdHJhcnkgY2hhcmFjdGVyLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL3B1bGwvMzEgYW5kXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8zMFxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5mdW5jdGlvbiB0b1NldFN0cmluZyhhU3RyKSB7XG4gIGlmIChpc1Byb3RvU3RyaW5nKGFTdHIpKSB7XG4gICAgcmV0dXJuICckJyArIGFTdHI7XG4gIH1cblxuICByZXR1cm4gYVN0cjtcbn1cbmV4cG9ydHMudG9TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogdG9TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiBhU3RyLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLmZyb21TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogZnJvbVNldFN0cmluZztcblxuZnVuY3Rpb24gaXNQcm90b1N0cmluZyhzKSB7XG4gIGlmICghcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBzLmxlbmd0aDtcblxuICBpZiAobGVuZ3RoIDwgOSAvKiBcIl9fcHJvdG9fX1wiLmxlbmd0aCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMSkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAyKSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDMpICE9PSAxMTEgLyogJ28nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNCkgIT09IDExNiAvKiAndCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA1KSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDYpICE9PSAxMTQgLyogJ3InICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNykgIT09IDExMiAvKiAncCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA4KSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDkpICE9PSA5NSAgLyogJ18nICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDEwOyBpID49IDA7IGktLSkge1xuICAgIGlmIChzLmNoYXJDb2RlQXQoaSkgIT09IDM2IC8qICckJyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4sIGJ1dCBkaWZmZXJlbnQgZ2VuZXJhdGVkXG4gKiBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXBwaW5nIHdpdGggYVxuICogc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gIHZhciBjbXAgPSBtYXBwaW5nQS5zb3VyY2UgLSBtYXBwaW5nQi5zb3VyY2U7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDAgfHwgb25seUNvbXBhcmVPcmlnaW5hbCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW4gLSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIG1hcHBpbmdBLm5hbWUgLSBtYXBwaW5nQi5uYW1lO1xufVxuZXhwb3J0cy5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyA9IGNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zO1xuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2l0aCBkZWZsYXRlZCBzb3VyY2UgYW5kIG5hbWUgaW5kaWNlcyB3aGVyZVxuICogdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICpcbiAqIE9wdGlvbmFsbHkgcGFzcyBpbiBgdHJ1ZWAgYXMgYG9ubHlDb21wYXJlR2VuZXJhdGVkYCB0byBjb25zaWRlciB0d29cbiAqIG1hcHBpbmdzIHdpdGggdGhlIHNhbWUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiwgYnV0IGRpZmZlcmVudFxuICogc291cmNlL25hbWUvb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGFcbiAqIG1hcHBpbmcgd2l0aCBhIHN0dWJiZWQgb3V0IG1hcHBpbmcuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVHZW5lcmF0ZWQpIHtcbiAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5zb3VyY2UgLSBtYXBwaW5nQi5zb3VyY2U7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIG1hcHBpbmdBLm5hbWUgLSBtYXBwaW5nQi5uYW1lO1xufVxuZXhwb3J0cy5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCA9IGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkO1xuXG5mdW5jdGlvbiBzdHJjbXAoYVN0cjEsIGFTdHIyKSB7XG4gIGlmIChhU3RyMSA9PT0gYVN0cjIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChhU3RyMSA+IGFTdHIyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGluZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBzdHJpbmdzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3V0aWwuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaGFzTmF0aXZlTWFwID0gdHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIGEgY29tYmluYXRpb24gb2YgYW4gYXJyYXkgYW5kIGEgc2V0LiBBZGRpbmcgYSBuZXdcbiAqIG1lbWJlciBpcyBPKDEpLCB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIGlzIE8oMSksIGFuZCBmaW5kaW5nIHRoZSBpbmRleCBvZiBhblxuICogZWxlbWVudCBpcyBPKDEpLiBSZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBzZXQgaXMgbm90IHN1cHBvcnRlZC4gT25seVxuICogc3RyaW5ncyBhcmUgc3VwcG9ydGVkIGZvciBtZW1iZXJzaGlwLlxuICovXG5mdW5jdGlvbiBBcnJheVNldCgpIHtcbiAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgdGhpcy5fc2V0ID0gaGFzTmF0aXZlTWFwID8gbmV3IE1hcCgpIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBBcnJheVNldCBpbnN0YW5jZXMgZnJvbSBhbiBleGlzdGluZyBhcnJheS5cbiAqL1xuQXJyYXlTZXQuZnJvbUFycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfZnJvbUFycmF5KGFBcnJheSwgYUFsbG93RHVwbGljYXRlcykge1xuICB2YXIgc2V0ID0gbmV3IEFycmF5U2V0KCk7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzZXQuYWRkKGFBcnJheVtpXSwgYUFsbG93RHVwbGljYXRlcyk7XG4gIH1cbiAgcmV0dXJuIHNldDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGhvdyBtYW55IHVuaXF1ZSBpdGVtcyBhcmUgaW4gdGhpcyBBcnJheVNldC4gSWYgZHVwbGljYXRlcyBoYXZlIGJlZW5cbiAqIGFkZGVkLCB0aGFuIHRob3NlIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBzaXplLlxuICpcbiAqIEByZXR1cm5zIE51bWJlclxuICovXG5BcnJheVNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIEFycmF5U2V0X3NpemUoKSB7XG4gIHJldHVybiBoYXNOYXRpdmVNYXAgPyB0aGlzLl9zZXQuc2l6ZSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NldCkubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIEFycmF5U2V0X2FkZChhU3RyLCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzU3RyID0gaGFzTmF0aXZlTWFwID8gYVN0ciA6IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gIHZhciBpc0R1cGxpY2F0ZSA9IGhhc05hdGl2ZU1hcCA/IHRoaXMuaGFzKGFTdHIpIDogaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKTtcbiAgdmFyIGlkeCA9IHRoaXMuX2FycmF5Lmxlbmd0aDtcbiAgaWYgKCFpc0R1cGxpY2F0ZSB8fCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhU3RyKTtcbiAgfVxuICBpZiAoIWlzRHVwbGljYXRlKSB7XG4gICAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgICAgdGhpcy5fc2V0LnNldChhU3RyLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRbc1N0cl0gPSBpZHg7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBtZW1iZXIgb2YgdGhpcyBzZXQ/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBBcnJheVNldF9oYXMoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldC5oYXMoYVN0cik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB9XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGFycmF5P1xuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIEFycmF5U2V0X2luZGV4T2YoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX3NldC5nZXQoYVN0cik7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBpZHg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICBpZiAoaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldFtzU3RyXTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTdHIgKyAnXCIgaXMgbm90IGluIHRoZSBzZXQuJyk7XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4P1xuICpcbiAqIEBwYXJhbSBOdW1iZXIgYUlkeFxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiBBcnJheVNldF9hdChhSWR4KSB7XG4gIGlmIChhSWR4ID49IDAgJiYgYUlkeCA8IHRoaXMuX2FycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJheVthSWR4XTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgaW5kZXhlZCBieSAnICsgYUlkeCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0ICh3aGljaCBoYXMgdGhlIHByb3BlciBpbmRpY2VzXG4gKiBpbmRpY2F0ZWQgYnkgaW5kZXhPZikuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29weSBvZiB0aGUgaW50ZXJuYWwgYXJyYXkgdXNlZFxuICogZm9yIHN0b3JpbmcgdGhlIG1lbWJlcnMgc28gdGhhdCBubyBvbmUgY2FuIG1lc3Mgd2l0aCBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF90b0FycmF5KCkge1xuICByZXR1cm4gdGhpcy5fYXJyYXkuc2xpY2UoKTtcbn07XG5cbmV4cG9ydHMuQXJyYXlTZXQgPSBBcnJheVNldDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2FycmF5LXNldC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTQgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFwcGluZ0IgaXMgYWZ0ZXIgbWFwcGluZ0Egd2l0aCByZXNwZWN0IHRvIGdlbmVyYXRlZFxuICogcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gIC8vIE9wdGltaXplZCBmb3IgbW9zdCBjb21tb24gY2FzZVxuICB2YXIgbGluZUEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgbGluZUIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgY29sdW1uQSA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbjtcbiAgdmFyIGNvbHVtbkIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIHJldHVybiBsaW5lQiA+IGxpbmVBIHx8IGxpbmVCID09IGxpbmVBICYmIGNvbHVtbkIgPj0gY29sdW1uQSB8fFxuICAgICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIDw9IDA7XG59XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB0byBwcm92aWRlIGEgc29ydGVkIHZpZXcgb2YgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gYVxuICogcGVyZm9ybWFuY2UgY29uc2Npb3VzIG1hbm5lci4gSXQgdHJhZGVzIGEgbmVnbGliYWJsZSBvdmVyaGVhZCBpbiBnZW5lcmFsXG4gKiBjYXNlIGZvciBhIGxhcmdlIHNwZWVkdXAgaW4gY2FzZSBvZiBtYXBwaW5ncyBiZWluZyBhZGRlZCBpbiBvcmRlci5cbiAqL1xuZnVuY3Rpb24gTWFwcGluZ0xpc3QoKSB7XG4gIHRoaXMuX2FycmF5ID0gW107XG4gIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIC8vIFNlcnZlcyBhcyBpbmZpbXVtXG4gIHRoaXMuX2xhc3QgPSB7Z2VuZXJhdGVkTGluZTogLTEsIGdlbmVyYXRlZENvbHVtbjogMH07XG59XG5cbi8qKlxuICogSXRlcmF0ZSB0aHJvdWdoIGludGVybmFsIGl0ZW1zLiBUaGlzIG1ldGhvZCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgdGhhdFxuICogYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCB0YWtlcy5cbiAqXG4gKiBOT1RFOiBUaGUgb3JkZXIgb2YgdGhlIG1hcHBpbmdzIGlzIE5PVCBndWFyYW50ZWVkLlxuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUudW5zb3J0ZWRGb3JFYWNoID1cbiAgZnVuY3Rpb24gTWFwcGluZ0xpc3RfZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKSB7XG4gICAgdGhpcy5fYXJyYXkuZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKTtcbiAgfTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHNvdXJjZSBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSBPYmplY3QgYU1hcHBpbmdcbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2FkZChhTWFwcGluZykge1xuICBpZiAoZ2VuZXJhdGVkUG9zaXRpb25BZnRlcih0aGlzLl9sYXN0LCBhTWFwcGluZykpIHtcbiAgICB0aGlzLl9sYXN0ID0gYU1hcHBpbmc7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fc29ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmxhdCwgc29ydGVkIGFycmF5IG9mIG1hcHBpbmdzLiBUaGUgbWFwcGluZ3MgYXJlIHNvcnRlZCBieVxuICogZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICpcbiAqIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgaW50ZXJuYWwgZGF0YSB3aXRob3V0IGNvcHlpbmcsIGZvclxuICogcGVyZm9ybWFuY2UuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBOT1QgYmUgbXV0YXRlZCwgYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzXG4gKiBhbiBpbW11dGFibGUgYm9ycm93LiBJZiB5b3Ugd2FudCB0byB0YWtlIG93bmVyc2hpcCwgeW91IG11c3QgbWFrZSB5b3VyIG93blxuICogY29weS5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF90b0FycmF5KCkge1xuICBpZiAoIXRoaXMuX3NvcnRlZCkge1xuICAgIHRoaXMuX2FycmF5LnNvcnQodXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZCk7XG4gICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyYXk7XG59O1xuXG5leHBvcnRzLk1hcHBpbmdMaXN0ID0gTWFwcGluZ0xpc3Q7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9tYXBwaW5nLWxpc3QuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXApIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSBKU09OLnBhcnNlKGFTb3VyY2VNYXAucmVwbGFjZSgvXlxcKVxcXVxcfScvLCAnJykpO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZU1hcC5zZWN0aW9ucyAhPSBudWxsXG4gICAgPyBuZXcgSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcClcbiAgICA6IG5ldyBCYXNpY1NvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcCk7XG59XG5cblNvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPSBmdW5jdGlvbihhU291cmNlTWFwKSB7XG4gIHJldHVybiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcCk7XG59XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vLyBgX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kIGBfX29yaWdpbmFsTWFwcGluZ3NgIGFyZSBhcnJheXMgdGhhdCBob2xkIHRoZVxuLy8gcGFyc2VkIG1hcHBpbmcgY29vcmRpbmF0ZXMgZnJvbSB0aGUgc291cmNlIG1hcCdzIFwibWFwcGluZ3NcIiBhdHRyaWJ1dGUuIFRoZXlcbi8vIGFyZSBsYXppbHkgaW5zdGFudGlhdGVkLCBhY2Nlc3NlZCB2aWEgdGhlIGBfZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuLy8gYF9vcmlnaW5hbE1hcHBpbmdzYCBnZXR0ZXJzIHJlc3BlY3RpdmVseSwgYW5kIHdlIG9ubHkgcGFyc2UgdGhlIG1hcHBpbmdzXG4vLyBhbmQgY3JlYXRlIHRoZXNlIGFycmF5cyBvbmNlIHF1ZXJpZWQgZm9yIGEgc291cmNlIGxvY2F0aW9uLiBXZSBqdW1wIHRocm91Z2hcbi8vIHRoZXNlIGhvb3BzIGJlY2F1c2UgdGhlcmUgY2FuIGJlIG1hbnkgdGhvdXNhbmRzIG9mIG1hcHBpbmdzLCBhbmQgcGFyc2luZ1xuLy8gdGhlbSBpcyBleHBlbnNpdmUsIHNvIHdlIG9ubHkgd2FudCB0byBkbyBpdCBpZiB3ZSBtdXN0LlxuLy9cbi8vIEVhY2ggb2JqZWN0IGluIHRoZSBhcnJheXMgaXMgb2YgdGhlIGZvcm06XG4vL1xuLy8gICAgIHtcbi8vICAgICAgIGdlbmVyYXRlZExpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBnZW5lcmF0ZWRDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIHNvdXJjZTogVGhlIHBhdGggdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoYXQgZ2VuZXJhdGVkIHRoaXNcbi8vICAgICAgICAgICAgICAgY2h1bmsgb2YgY29kZSxcbi8vICAgICAgIG9yaWdpbmFsTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byB0aGlzIGNodW5rIG9mIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBuYW1lOiBUaGUgbmFtZSBvZiB0aGUgb3JpZ2luYWwgc3ltYm9sIHdoaWNoIGdlbmVyYXRlZCB0aGlzIGNodW5rIG9mXG4vLyAgICAgICAgICAgICBjb2RlLlxuLy8gICAgIH1cbi8vXG4vLyBBbGwgcHJvcGVydGllcyBleGNlcHQgZm9yIGBnZW5lcmF0ZWRMaW5lYCBhbmQgYGdlbmVyYXRlZENvbHVtbmAgY2FuIGJlXG4vLyBgbnVsbGAuXG4vL1xuLy8gYF9nZW5lcmF0ZWRNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucy5cbi8vXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGlzIG9yZGVyZWQgYnkgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucy5cblxuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBudWxsO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ19nZW5lcmF0ZWRNYXBwaW5ncycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MpIHtcbiAgICAgIHRoaXMuX3BhcnNlTWFwcGluZ3ModGhpcy5fbWFwcGluZ3MsIHRoaXMuc291cmNlUm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fX29yaWdpbmFsTWFwcGluZ3MgPSBudWxsO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ19vcmlnaW5hbE1hcHBpbmdzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgaWYgKHNvdXJjZSAhPSBudWxsICYmIHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmpvaW4oc291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBPcHRpb25hbC4gdGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IoYUFyZ3MpIHtcbiAgICB2YXIgbGluZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpO1xuXG4gICAgLy8gV2hlbiB0aGVyZSBpcyBubyBleGFjdCBtYXRjaCwgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX2ZpbmRNYXBwaW5nXG4gICAgLy8gcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGNsb3Nlc3QgbWFwcGluZyBsZXNzIHRoYW4gdGhlIG5lZWRsZS4gQnlcbiAgICAvLyBzZXR0aW5nIG5lZWRsZS5vcmlnaW5hbENvbHVtbiB0byAwLCB3ZSB0aHVzIGZpbmQgdGhlIGxhc3QgbWFwcGluZyBmb3JcbiAgICAvLyB0aGUgZ2l2ZW4gbGluZSwgcHJvdmlkZWQgc3VjaCBhIG1hcHBpbmcgZXhpc3RzLlxuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBzb3VyY2U6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyksXG4gICAgICBvcmlnaW5hbExpbmU6IGxpbmUsXG4gICAgICBvcmlnaW5hbENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nLCAwKVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIG5lZWRsZS5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgbmVlZGxlLnNvdXJjZSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fc291cmNlcy5oYXMobmVlZGxlLnNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihuZWVkbGUuc291cmNlKTtcblxuICAgIHZhciBtYXBwaW5ncyA9IFtdO1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcobmVlZGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsTWFwcGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAoYUFyZ3MuY29sdW1uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2UgZm91bmQuIFNpbmNlXG4gICAgICAgIC8vIG1hcHBpbmdzIGFyZSBzb3J0ZWQsIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBmaW5kIGFsbCBtYXBwaW5ncyBmb3JcbiAgICAgICAgLy8gdGhlIGxpbmUgd2UgZm91bmQuXG4gICAgICAgIHdoaWxlIChtYXBwaW5nICYmIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBvcmlnaW5hbExpbmUpIHtcbiAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgb3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2Ugd2VyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICAvLyBTaW5jZSBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJlxuICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09IGxpbmUgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPT0gb3JpZ2luYWxDb2x1bW4pIHtcbiAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcHBpbmdzO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaCB3ZSBjYW5cbiAqIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JpZ2luYWwgZmlsZSBwb3NpdGlvbnMgYnkgZ2l2aW5nIGl0IGEgZmlsZVxuICogcG9zaXRpb24gaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKlxuICogVGhlIG9ubHkgcGFyYW1ldGVyIGlzIHRoZSByYXcgc291cmNlIG1hcCAoZWl0aGVyIGFzIGEgSlNPTiBzdHJpbmcsIG9yXG4gKiBhbHJlYWR5IHBhcnNlZCB0byBhbiBvYmplY3QpLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHNvdXJjZSBtYXBzIGhhdmUgdGhlXG4gKiBmb2xsb3dpbmcgYXR0cmlidXRlczpcbiAqXG4gKiAgIC0gdmVyc2lvbjogV2hpY2ggdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcCBzcGVjIHRoaXMgbWFwIGlzIGZvbGxvd2luZy5cbiAqICAgLSBzb3VyY2VzOiBBbiBhcnJheSBvZiBVUkxzIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbmFtZXM6IEFuIGFycmF5IG9mIGlkZW50aWZpZXJzIHdoaWNoIGNhbiBiZSByZWZlcnJlbmNlZCBieSBpbmRpdmlkdWFsIG1hcHBpbmdzLlxuICogICAtIHNvdXJjZVJvb3Q6IE9wdGlvbmFsLiBUaGUgVVJMIHJvb3QgZnJvbSB3aGljaCBhbGwgc291cmNlcyBhcmUgcmVsYXRpdmUuXG4gKiAgIC0gc291cmNlc0NvbnRlbnQ6IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBjb250ZW50cyBvZiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLlxuICogICAtIG1hcHBpbmdzOiBBIHN0cmluZyBvZiBiYXNlNjQgVkxRcyB3aGljaCBjb250YWluIHRoZSBhY3R1YWwgbWFwcGluZ3MuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICpcbiAqIEhlcmUgaXMgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF06XG4gKlxuICogICAgIHtcbiAqICAgICAgIHZlcnNpb24gOiAzLFxuICogICAgICAgZmlsZTogXCJvdXQuanNcIixcbiAqICAgICAgIHNvdXJjZVJvb3QgOiBcIlwiLFxuICogICAgICAgc291cmNlczogW1wiZm9vLmpzXCIsIFwiYmFyLmpzXCJdLFxuICogICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICBtYXBwaW5nczogXCJBQSxBQjs7QUJDREU7XCJcbiAqICAgICB9XG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IEpTT04ucGFyc2UoYVNvdXJjZU1hcC5yZXBsYWNlKC9eXFwpXFxdXFx9Jy8sICcnKSk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNvdXJjZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzJyk7XG4gIC8vIFNhc3MgMy4zIGxlYXZlcyBvdXQgdGhlICduYW1lcycgYXJyYXksIHNvIHdlIGRldmlhdGUgZnJvbSB0aGUgc3BlYyAod2hpY2hcbiAgLy8gcmVxdWlyZXMgdGhlIGFycmF5KSB0byBwbGF5IG5pY2UgaGVyZS5cbiAgdmFyIG5hbWVzID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnbmFtZXMnLCBbXSk7XG4gIHZhciBzb3VyY2VSb290ID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB2YXIgc291cmNlc0NvbnRlbnQgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzQ29udGVudCcsIG51bGwpO1xuICB2YXIgbWFwcGluZ3MgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdtYXBwaW5ncycpO1xuICB2YXIgZmlsZSA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ2ZpbGUnLCBudWxsKTtcblxuICAvLyBPbmNlIGFnYWluLCBTYXNzIGRldmlhdGVzIGZyb20gdGhlIHNwZWMgYW5kIHN1cHBsaWVzIHRoZSB2ZXJzaW9uIGFzIGFcbiAgLy8gc3RyaW5nIHJhdGhlciB0aGFuIGEgbnVtYmVyLCBzbyB3ZSB1c2UgbG9vc2UgZXF1YWxpdHkgY2hlY2tpbmcgaGVyZS5cbiAgaWYgKHZlcnNpb24gIT0gdGhpcy5fdmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdmVyc2lvbjogJyArIHZlcnNpb24pO1xuICB9XG5cbiAgc291cmNlcyA9IHNvdXJjZXNcbiAgICAubWFwKFN0cmluZylcbiAgICAvLyBTb21lIHNvdXJjZSBtYXBzIHByb2R1Y2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIGxpa2UgXCIuL2Zvby5qc1wiIGluc3RlYWQgb2ZcbiAgICAvLyBcImZvby5qc1wiLiAgTm9ybWFsaXplIHRoZXNlIGZpcnN0IHNvIHRoYXQgZnV0dXJlIGNvbXBhcmlzb25zIHdpbGwgc3VjY2VlZC5cbiAgICAvLyBTZWUgYnVnemlsLmxhLzEwOTA3NjguXG4gICAgLm1hcCh1dGlsLm5vcm1hbGl6ZSlcbiAgICAvLyBBbHdheXMgZW5zdXJlIHRoYXQgYWJzb2x1dGUgc291cmNlcyBhcmUgaW50ZXJuYWxseSBzdG9yZWQgcmVsYXRpdmUgdG9cbiAgICAvLyB0aGUgc291cmNlIHJvb3QsIGlmIHRoZSBzb3VyY2Ugcm9vdCBpcyBhYnNvbHV0ZS4gTm90IGRvaW5nIHRoaXMgd291bGRcbiAgICAvLyBiZSBwYXJ0aWN1bGFybHkgcHJvYmxlbWF0aWMgd2hlbiB0aGUgc291cmNlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlXG4gICAgLy8gc291cmNlICh2YWxpZCwgYnV0IHdoeT8/KS4gU2VlIGdpdGh1YiBpc3N1ZSAjMTk5IGFuZCBidWd6aWwubGEvMTE4ODk4Mi5cbiAgICAubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBzb3VyY2VSb290ICYmIHV0aWwuaXNBYnNvbHV0ZShzb3VyY2VSb290KSAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlKVxuICAgICAgICA/IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlKVxuICAgICAgICA6IHNvdXJjZTtcbiAgICB9KTtcblxuICAvLyBQYXNzIGB0cnVlYCBiZWxvdyB0byBhbGxvdyBkdXBsaWNhdGUgbmFtZXMgYW5kIHNvdXJjZXMuIFdoaWxlIHNvdXJjZSBtYXBzXG4gIC8vIGFyZSBpbnRlbmRlZCB0byBiZSBjb21wcmVzc2VkIGFuZCBkZWR1cGxpY2F0ZWQsIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyXG4gIC8vIHNvbWV0aW1lcyBnZW5lcmF0ZXMgc291cmNlIG1hcHMgd2l0aCBkdXBsaWNhdGVzIGluIHRoZW0uIFNlZSBHaXRodWIgaXNzdWVcbiAgLy8gIzcyIGFuZCBidWd6aWwubGEvODg5NDkyLlxuICB0aGlzLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShuYW1lcy5tYXAoU3RyaW5nKSwgdHJ1ZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoc291cmNlcywgdHJ1ZSk7XG5cbiAgdGhpcy5zb3VyY2VSb290ID0gc291cmNlUm9vdDtcbiAgdGhpcy5zb3VyY2VzQ29udGVudCA9IHNvdXJjZXNDb250ZW50O1xuICB0aGlzLl9tYXBwaW5ncyA9IG1hcHBpbmdzO1xuICB0aGlzLmZpbGUgPSBmaWxlO1xufVxuXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlKTtcbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQ3JlYXRlIGEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBmcm9tIGEgU291cmNlTWFwR2VuZXJhdG9yLlxuICpcbiAqIEBwYXJhbSBTb3VyY2VNYXBHZW5lcmF0b3IgYVNvdXJjZU1hcFxuICogICAgICAgIFRoZSBzb3VyY2UgbWFwIHRoYXQgd2lsbCBiZSBjb25zdW1lZC5cbiAqIEByZXR1cm5zIEJhc2ljU291cmNlTWFwQ29uc3VtZXJcbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5mcm9tU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwKSB7XG4gICAgdmFyIHNtYyA9IE9iamVjdC5jcmVhdGUoQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuXG4gICAgdmFyIG5hbWVzID0gc21jLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShhU291cmNlTWFwLl9uYW1lcy50b0FycmF5KCksIHRydWUpO1xuICAgIHZhciBzb3VyY2VzID0gc21jLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX3NvdXJjZXMudG9BcnJheSgpLCB0cnVlKTtcbiAgICBzbWMuc291cmNlUm9vdCA9IGFTb3VyY2VNYXAuX3NvdXJjZVJvb3Q7XG4gICAgc21jLnNvdXJjZXNDb250ZW50ID0gYVNvdXJjZU1hcC5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudChzbWMuX3NvdXJjZXMudG9BcnJheSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21jLnNvdXJjZVJvb3QpO1xuICAgIHNtYy5maWxlID0gYVNvdXJjZU1hcC5fZmlsZTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlUm9vdCAhPSBudWxsID8gdXRpbC5qb2luKHRoaXMuc291cmNlUm9vdCwgcykgOiBzO1xuICAgIH0sIHRoaXMpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKiAgIC0gYmlhczogRWl0aGVyICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICogICAgIERlZmF1bHRzIHRvICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcuXG4gKlxuICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUsIG9yIG51bGwuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kTWFwcGluZyhcbiAgICAgIG5lZWRsZSxcbiAgICAgIHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzLFxuICAgICAgXCJnZW5lcmF0ZWRMaW5lXCIsXG4gICAgICBcImdlbmVyYXRlZENvbHVtblwiLFxuICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCxcbiAgICAgIHV0aWwuZ2V0QXJnKGFBcmdzLCAnYmlhcycsIFNvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EKVxuICAgICk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnc291cmNlJywgbnVsbCk7XG4gICAgICAgIGlmIChzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2UgPSB0aGlzLl9zb3VyY2VzLmF0KHNvdXJjZSk7XG4gICAgICAgICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBzb3VyY2UgPSB1dGlsLmpvaW4odGhpcy5zb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgbmFtZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICduYW1lJywgbnVsbCk7XG4gICAgICAgIGlmIChuYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgbmFtZSA9IHRoaXMuX25hbWVzLmF0KG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgbGluZTogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsTGluZScsIG51bGwpLFxuICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbmFtZTogbnVsbFxuICAgIH07XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gKiBtYXAsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMgPVxuICBmdW5jdGlvbiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudC5sZW5ndGggPj0gdGhpcy5fc291cmNlcy5zaXplKCkgJiZcbiAgICAgICF0aGlzLnNvdXJjZXNDb250ZW50LnNvbWUoZnVuY3Rpb24gKHNjKSB7IHJldHVybiBzYyA9PSBudWxsOyB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBhU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIGFTb3VyY2UpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhhU291cmNlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbdGhpcy5fc291cmNlcy5pbmRleE9mKGFTb3VyY2UpXTtcbiAgICB9XG5cbiAgICB2YXIgdXJsO1xuICAgIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbFxuICAgICAgICAmJiAodXJsID0gdXRpbC51cmxQYXJzZSh0aGlzLnNvdXJjZVJvb3QpKSkge1xuICAgICAgLy8gWFhYOiBmaWxlOi8vIFVSSXMgYW5kIGFic29sdXRlIHBhdGhzIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBmb3JcbiAgICAgIC8vIG1hbnkgdXNlcnMuIFdlIGNhbiBoZWxwIHRoZW0gb3V0IHdoZW4gdGhleSBleHBlY3QgZmlsZTovLyBVUklzIHRvXG4gICAgICAvLyBiZWhhdmUgbGlrZSBpdCB3b3VsZCBpZiB0aGV5IHdlcmUgcnVubmluZyBhIGxvY2FsIEhUVFAgc2VydmVyLiBTZWVcbiAgICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4NTU5Ny5cbiAgICAgIHZhciBmaWxlVXJpQWJzUGF0aCA9IGFTb3VyY2UucmVwbGFjZSgvXmZpbGU6XFwvXFwvLywgXCJcIik7XG4gICAgICBpZiAodXJsLnNjaGVtZSA9PSBcImZpbGVcIlxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKGZpbGVVcmlBYnNQYXRoKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudFt0aGlzLl9zb3VyY2VzLmluZGV4T2YoZmlsZVVyaUFic1BhdGgpXVxuICAgICAgfVxuXG4gICAgICBpZiAoKCF1cmwucGF0aCB8fCB1cmwucGF0aCA9PSBcIi9cIilcbiAgICAgICAgICAmJiB0aGlzLl9zb3VyY2VzLmhhcyhcIi9cIiArIGFTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIGFTb3VyY2UpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgcmVjdXJzaXZlbHkgZnJvbVxuICAgIC8vIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvci4gSW4gdGhhdCBjYXNlLCB3ZVxuICAgIC8vIGRvbid0IHdhbnQgdG8gdGhyb3cgaWYgd2UgY2FuJ3QgZmluZCB0aGUgc291cmNlIC0gd2UganVzdCB3YW50IHRvXG4gICAgLy8gcmV0dXJuIG51bGwsIHNvIHdlIHByb3ZpZGUgYSBmbGFnIHRvIGV4aXQgZ3JhY2VmdWxseS5cbiAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9zb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICAgIH07XG4gICAgfVxuICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgb3JpZ2luYWxMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIG9yaWdpbmFsQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fb3JpZ2luYWxNYXBwaW5ncyxcbiAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgPT09IG5lZWRsZS5zb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG5leHBvcnRzLkJhc2ljU291cmNlTWFwQ29uc3VtZXIgPSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEFuIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2hcbiAqIHdlIGNhbiBxdWVyeSBmb3IgaW5mb3JtYXRpb24uIEl0IGRpZmZlcnMgZnJvbSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluXG4gKiB0aGF0IGl0IHRha2VzIFwiaW5kZXhlZFwiIHNvdXJjZSBtYXBzIChpLmUuIG9uZXMgd2l0aCBhIFwic2VjdGlvbnNcIiBmaWVsZCkgYXNcbiAqIGlucHV0LlxuICpcbiAqIFRoZSBvbmx5IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQjaGVhZGluZz1oLjUzNWVzM3hlcHJndFxuICovXG5mdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IEpTT04ucGFyc2UoYVNvdXJjZU1hcC5yZXBsYWNlKC9eXFwpXFxdXFx9Jy8sICcnKSk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSlcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBuYW1lOiBUaGUgb3JpZ2luYWwgaWRlbnRpZmllciwgb3IgbnVsbC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX29yaWdpbmFsUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgZ2VuZXJhdGVkTGluZTogdXRpbC5nZXRBcmcoYUFyZ3MsICdsaW5lJyksXG4gICAgICBnZW5lcmF0ZWRDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgLy8gRmluZCB0aGUgc2VjdGlvbiBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24gd2UncmUgdHJ5aW5nIHRvIG1hcFxuICAgIC8vIHRvIGFuIG9yaWdpbmFsIHBvc2l0aW9uLlxuICAgIHZhciBzZWN0aW9uSW5kZXggPSBiaW5hcnlTZWFyY2guc2VhcmNoKG5lZWRsZSwgdGhpcy5fc2VjdGlvbnMsXG4gICAgICBmdW5jdGlvbihuZWVkbGUsIHNlY3Rpb24pIHtcbiAgICAgICAgdmFyIGNtcCA9IG5lZWRsZS5nZW5lcmF0ZWRMaW5lIC0gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZTtcbiAgICAgICAgaWYgKGNtcCkge1xuICAgICAgICAgIHJldHVybiBjbXA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgIHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbik7XG4gICAgICB9KTtcbiAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW3NlY3Rpb25JbmRleF07XG5cbiAgICBpZiAoIXNlY3Rpb24pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgbGluZTogbnVsbCxcbiAgICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgICBuYW1lOiBudWxsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzZWN0aW9uLmNvbnN1bWVyLm9yaWdpbmFsUG9zaXRpb25Gb3Ioe1xuICAgICAgbGluZTogbmVlZGxlLmdlbmVyYXRlZExpbmUgLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgY29sdW1uOiBuZWVkbGUuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgIDogMCksXG4gICAgICBiaWFzOiBhQXJncy5iaWFzXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gKiBtYXAsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5oYXNDb250ZW50c09mQWxsU291cmNlcyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnMuZXZlcnkoZnVuY3Rpb24gKHMpIHtcbiAgICAgIHJldHVybiBzLmNvbnN1bWVyLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCk7XG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuXG4gICAgICB2YXIgY29udGVudCA9IHNlY3Rpb24uY29uc3VtZXIuc291cmNlQ29udGVudEZvcihhU291cmNlLCB0cnVlKTtcbiAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmdlbmVyYXRlZFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcblxuICAgICAgLy8gT25seSBjb25zaWRlciB0aGlzIHNlY3Rpb24gaWYgdGhlIHJlcXVlc3RlZCBzb3VyY2UgaXMgaW4gdGhlIGxpc3Qgb2ZcbiAgICAgIC8vIHNvdXJjZXMgb2YgdGhlIGNvbnN1bWVyLlxuICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuc291cmNlcy5pbmRleE9mKHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJykpID09PSAtMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBnZW5lcmF0ZWRQb3NpdGlvbiA9IHNlY3Rpb24uY29uc3VtZXIuZ2VuZXJhdGVkUG9zaXRpb25Gb3IoYUFyZ3MpO1xuICAgICAgaWYgKGdlbmVyYXRlZFBvc2l0aW9uKSB7XG4gICAgICAgIHZhciByZXQgPSB7XG4gICAgICAgICAgbGluZTogZ2VuZXJhdGVkUG9zaXRpb24ubGluZSArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkUG9zaXRpb24uY29sdW1uICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lID09PSBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lXG4gICAgICAgICAgICAgPyBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRDb2x1bW4gLSAxXG4gICAgICAgICAgICAgOiAwKVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsXG4gICAgfTtcbiAgfTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbWFwcGluZ3MgaW4gYSBzdHJpbmcgaW4gdG8gYSBkYXRhIHN0cnVjdHVyZSB3aGljaCB3ZSBjYW4gZWFzaWx5XG4gKiBxdWVyeSAodGhlIG9yZGVyZWQgYXJyYXlzIGluIHRoZSBgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmRcbiAqIGB0aGlzLl9fb3JpZ2luYWxNYXBwaW5nc2AgcHJvcGVydGllcykuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfcGFyc2VNYXBwaW5ncyhhU3RyLCBhU291cmNlUm9vdCkge1xuICAgIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IFtdO1xuICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcbiAgICAgIHZhciBzZWN0aW9uTWFwcGluZ3MgPSBzZWN0aW9uLmNvbnN1bWVyLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VjdGlvbk1hcHBpbmdzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBtYXBwaW5nID0gc2VjdGlvbk1hcHBpbmdzW2pdO1xuXG4gICAgICAgIHZhciBzb3VyY2UgPSBzZWN0aW9uLmNvbnN1bWVyLl9zb3VyY2VzLmF0KG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuc291cmNlUm9vdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHV0aWwuam9pbihzZWN0aW9uLmNvbnN1bWVyLnNvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgICAgc291cmNlID0gdGhpcy5fc291cmNlcy5pbmRleE9mKHNvdXJjZSk7XG5cbiAgICAgICAgdmFyIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICB0aGlzLl9uYW1lcy5hZGQobmFtZSk7XG4gICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbmV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCA9IDI7XG5cbi8qKlxuICogUmVjdXJzaXZlIGltcGxlbWVudGF0aW9uIG9mIGJpbmFyeSBzZWFyY2guXG4gKlxuICogQHBhcmFtIGFMb3cgSW5kaWNlcyBoZXJlIGFuZCBsb3dlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICogQHBhcmFtIGFIaWdoIEluZGljZXMgaGVyZSBhbmQgaGlnaGVyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCBiZWluZyBzZWFyY2hlZCBmb3IuXG4gKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBub24tZW1wdHkgYXJyYXkgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgRnVuY3Rpb24gd2hpY2ggdGFrZXMgdHdvIGVsZW1lbnRzIGFuZCByZXR1cm5zIC0xLCAwLCBvciAxLlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVTZWFyY2goYUxvdywgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gdGVybWluYXRlcyB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gIC8vXG4gIC8vICAgMS4gV2UgZmluZCB0aGUgZXhhY3QgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gIC8vXG4gIC8vICAgMi4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBidXQgd2UgY2FuIHJldHVybiB0aGUgaW5kZXggb2ZcbiAgLy8gICAgICB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQuXG4gIC8vXG4gIC8vICAgMy4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBhbmQgdGhlcmUgaXMgbm8gbmV4dC1jbG9zZXN0XG4gIC8vICAgICAgZWxlbWVudCB0aGFuIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IsIHNvIHdlIHJldHVybiAtMS5cbiAgdmFyIG1pZCA9IE1hdGguZmxvb3IoKGFIaWdoIC0gYUxvdykgLyAyKSArIGFMb3c7XG4gIHZhciBjbXAgPSBhQ29tcGFyZShhTmVlZGxlLCBhSGF5c3RhY2tbbWlkXSwgdHJ1ZSk7XG4gIGlmIChjbXAgPT09IDApIHtcbiAgICAvLyBGb3VuZCB0aGUgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gICAgcmV0dXJuIG1pZDtcbiAgfVxuICBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBncmVhdGVyIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKGFIaWdoIC0gbWlkID4gMSkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKG1pZCwgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZXhhY3QgbmVlZGxlIGVsZW1lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGlzIGhheXN0YWNrLiBEZXRlcm1pbmUgaWZcbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gYUhpZ2ggPCBhSGF5c3RhY2subGVuZ3RoID8gYUhpZ2ggOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBsZXNzIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKG1pZCAtIGFMb3cgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgbG93ZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2goYUxvdywgbWlkLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcyk7XG4gICAgfVxuXG4gICAgLy8gd2UgYXJlIGluIHRlcm1pbmF0aW9uIGNhc2UgKDMpIG9yICgyKSBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB0aGluZy5cbiAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFMb3cgPCAwID8gLTEgOiBhTG93O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaCB3aGljaCB3aWxsIGFsd2F5cyB0cnkgYW5kIHJldHVyblxuICogdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IGVsZW1lbnQgaWYgdGhlcmUgaXMgbm8gZXhhY3QgaGl0LiBUaGlzIGlzIGJlY2F1c2VcbiAqIG1hcHBpbmdzIGJldHdlZW4gb3JpZ2luYWwgYW5kIGdlbmVyYXRlZCBsaW5lL2NvbCBwYWlycyBhcmUgc2luZ2xlIHBvaW50cyxcbiAqIGFuZCB0aGVyZSBpcyBhbiBpbXBsaWNpdCByZWdpb24gYmV0d2VlbiBlYWNoIG9mIHRoZW0sIHNvIGEgbWlzcyBqdXN0IG1lYW5zXG4gKiB0aGF0IHlvdSBhcmVuJ3Qgb24gdGhlIHZlcnkgc3RhcnQgb2YgYSByZWdpb24uXG4gKlxuICogQHBhcmFtIGFOZWVkbGUgVGhlIGVsZW1lbnQgeW91IGFyZSBsb29raW5nIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIGFycmF5IHRoYXQgaXMgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgQSBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbmVlZGxlIGFuZCBhbiBlbGVtZW50IGluIHRoZVxuICogICAgIGFycmF5IGFuZCByZXR1cm5zIC0xLCAwLCBvciAxIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuZWVkbGUgaXMgbGVzc1xuICogICAgIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gdGhlIGVsZW1lbnQsIHJlc3BlY3RpdmVseS5cbiAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAqL1xuZXhwb3J0cy5zZWFyY2ggPSBmdW5jdGlvbiBzZWFyY2goYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgaWYgKGFIYXlzdGFjay5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICB2YXIgaW5kZXggPSByZWN1cnNpdmVTZWFyY2goLTEsIGFIYXlzdGFjay5sZW5ndGgsIGFOZWVkbGUsIGFIYXlzdGFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFDb21wYXJlLCBhQmlhcyB8fCBleHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EKTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8vIFdlIGhhdmUgZm91bmQgZWl0aGVyIHRoZSBleGFjdCBlbGVtZW50LCBvciB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQgdGhhblxuICAvLyB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLiBIb3dldmVyLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBzdWNoXG4gIC8vIGVsZW1lbnQuIE1ha2Ugc3VyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBzbWFsbGVzdCBvZiB0aGVzZS5cbiAgd2hpbGUgKGluZGV4IC0gMSA+PSAwKSB7XG4gICAgaWYgKGFDb21wYXJlKGFIYXlzdGFja1tpbmRleF0sIGFIYXlzdGFja1tpbmRleCAtIDFdLCB0cnVlKSAhPT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC0taW5kZXg7XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmluYXJ5LXNlYXJjaC5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvcXVpY2stc29ydC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBTb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuLy8gTWF0Y2hlcyBhIFdpbmRvd3Mtc3R5bGUgYFxcclxcbmAgbmV3bGluZSBvciBhIGBcXG5gIG5ld2xpbmUgdXNlZCBieSBhbGwgb3RoZXJcbi8vIG9wZXJhdGluZyBzeXN0ZW1zIHRoZXNlIGRheXMgKGNhcHR1cmluZyB0aGUgcmVzdWx0KS5cbnZhciBSRUdFWF9ORVdMSU5FID0gLyhcXHI/XFxuKS87XG5cbi8vIE5ld2xpbmUgY2hhcmFjdGVyIGNvZGUgZm9yIGNoYXJDb2RlQXQoKSBjb21wYXJpc29uc1xudmFyIE5FV0xJTkVfQ09ERSA9IDEwO1xuXG4vLyBQcml2YXRlIHN5bWJvbCBmb3IgaWRlbnRpZnlpbmcgYFNvdXJjZU5vZGVgcyB3aGVuIG11bHRpcGxlIHZlcnNpb25zIG9mXG4vLyB0aGUgc291cmNlLW1hcCBsaWJyYXJ5IGFyZSBsb2FkZWQuIFRoaXMgTVVTVCBOT1QgQ0hBTkdFIGFjcm9zc1xuLy8gdmVyc2lvbnMhXG52YXIgaXNTb3VyY2VOb2RlID0gXCIkJCRpc1NvdXJjZU5vZGUkJCRcIjtcblxuLyoqXG4gKiBTb3VyY2VOb2RlcyBwcm92aWRlIGEgd2F5IHRvIGFic3RyYWN0IG92ZXIgaW50ZXJwb2xhdGluZy9jb25jYXRlbmF0aW5nXG4gKiBzbmlwcGV0cyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgbGluZSBhbmRcbiAqIGNvbHVtbiBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBhTGluZSBUaGUgb3JpZ2luYWwgbGluZSBudW1iZXIuXG4gKiBAcGFyYW0gYUNvbHVtbiBUaGUgb3JpZ2luYWwgY29sdW1uIG51bWJlci5cbiAqIEBwYXJhbSBhU291cmNlIFRoZSBvcmlnaW5hbCBzb3VyY2UncyBmaWxlbmFtZS5cbiAqIEBwYXJhbSBhQ2h1bmtzIE9wdGlvbmFsLiBBbiBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBzbmlwcGV0cyBvZlxuICogICAgICAgIGdlbmVyYXRlZCBKUywgb3Igb3RoZXIgU291cmNlTm9kZXMuXG4gKiBAcGFyYW0gYU5hbWUgVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU5vZGUoYUxpbmUsIGFDb2x1bW4sIGFTb3VyY2UsIGFDaHVua3MsIGFOYW1lKSB7XG4gIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgdGhpcy5zb3VyY2VDb250ZW50cyA9IHt9O1xuICB0aGlzLmxpbmUgPSBhTGluZSA9PSBudWxsID8gbnVsbCA6IGFMaW5lO1xuICB0aGlzLmNvbHVtbiA9IGFDb2x1bW4gPT0gbnVsbCA/IG51bGwgOiBhQ29sdW1uO1xuICB0aGlzLnNvdXJjZSA9IGFTb3VyY2UgPT0gbnVsbCA/IG51bGwgOiBhU291cmNlO1xuICB0aGlzLm5hbWUgPSBhTmFtZSA9PSBudWxsID8gbnVsbCA6IGFOYW1lO1xuICB0aGlzW2lzU291cmNlTm9kZV0gPSB0cnVlO1xuICBpZiAoYUNodW5rcyAhPSBudWxsKSB0aGlzLmFkZChhQ2h1bmtzKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU291cmNlTm9kZSBmcm9tIGdlbmVyYXRlZCBjb2RlIGFuZCBhIFNvdXJjZU1hcENvbnN1bWVyLlxuICpcbiAqIEBwYXJhbSBhR2VuZXJhdGVkQ29kZSBUaGUgZ2VuZXJhdGVkIGNvZGVcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVJlbGF0aXZlUGF0aCBPcHRpb25hbC4gVGhlIHBhdGggdGhhdCByZWxhdGl2ZSBzb3VyY2VzIGluIHRoZVxuICogICAgICAgIFNvdXJjZU1hcENvbnN1bWVyIHNob3VsZCBiZSByZWxhdGl2ZSB0by5cbiAqL1xuU291cmNlTm9kZS5mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAoYUdlbmVyYXRlZENvZGUsIGFTb3VyY2VNYXBDb25zdW1lciwgYVJlbGF0aXZlUGF0aCkge1xuICAgIC8vIFRoZSBTb3VyY2VOb2RlIHdlIHdhbnQgdG8gZmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgIC8vIGFuZCB0aGUgU291cmNlTWFwXG4gICAgdmFyIG5vZGUgPSBuZXcgU291cmNlTm9kZSgpO1xuXG4gICAgLy8gQWxsIGV2ZW4gaW5kaWNlcyBvZiB0aGlzIGFycmF5IGFyZSBvbmUgbGluZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gICAgLy8gd2hpbGUgYWxsIG9kZCBpbmRpY2VzIGFyZSB0aGUgbmV3bGluZXMgYmV0d2VlbiB0d28gYWRqYWNlbnQgbGluZXNcbiAgICAvLyAoc2luY2UgYFJFR0VYX05FV0xJTkVgIGNhcHR1cmVzIGl0cyBtYXRjaCkuXG4gICAgLy8gUHJvY2Vzc2VkIGZyYWdtZW50cyBhcmUgYWNjZXNzZWQgYnkgY2FsbGluZyBgc2hpZnROZXh0TGluZWAuXG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzID0gYUdlbmVyYXRlZENvZGUuc3BsaXQoUkVHRVhfTkVXTElORSk7XG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzSW5kZXggPSAwO1xuICAgIHZhciBzaGlmdE5leHRMaW5lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGluZUNvbnRlbnRzID0gZ2V0TmV4dExpbmUoKTtcbiAgICAgIC8vIFRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIG1pZ2h0IG5vdCBoYXZlIGEgbmV3bGluZS5cbiAgICAgIHZhciBuZXdMaW5lID0gZ2V0TmV4dExpbmUoKSB8fCBcIlwiO1xuICAgICAgcmV0dXJuIGxpbmVDb250ZW50cyArIG5ld0xpbmU7XG5cbiAgICAgIGZ1bmN0aW9uIGdldE5leHRMaW5lKCkge1xuICAgICAgICByZXR1cm4gcmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCA/XG4gICAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4KytdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBwb3NpdGlvbiBvZiBcInJlbWFpbmluZ0xpbmVzXCJcbiAgICB2YXIgbGFzdEdlbmVyYXRlZExpbmUgPSAxLCBsYXN0R2VuZXJhdGVkQ29sdW1uID0gMDtcblxuICAgIC8vIFRoZSBnZW5lcmF0ZSBTb3VyY2VOb2RlcyB3ZSBuZWVkIGEgY29kZSByYW5nZS5cbiAgICAvLyBUbyBleHRyYWN0IGl0IGN1cnJlbnQgYW5kIGxhc3QgbWFwcGluZyBpcyB1c2VkLlxuICAgIC8vIEhlcmUgd2Ugc3RvcmUgdGhlIGxhc3QgbWFwcGluZy5cbiAgICB2YXIgbGFzdE1hcHBpbmcgPSBudWxsO1xuXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcgIT09IG51bGwpIHtcbiAgICAgICAgLy8gV2UgYWRkIHRoZSBjb2RlIGZyb20gXCJsYXN0TWFwcGluZ1wiIHRvIFwibWFwcGluZ1wiOlxuICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgIGlmIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIC8vIEFzc29jaWF0ZSBmaXJzdCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBjb2RlIGlzIGFkZGVkIHdpdGhvdXQgbWFwcGluZ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBjb2RlIGJldHdlZW4gXCJsYXN0R2VuZXJhdGVkQ29sdW1uXCIgYW5kXG4gICAgICAgICAgLy8gXCJtYXBwaW5nLmdlbmVyYXRlZENvbHVtblwiIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF07XG4gICAgICAgICAgdmFyIGNvZGUgPSBuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBjb2RlKTtcbiAgICAgICAgICAvLyBObyBtb3JlIHJlbWFpbmluZyBjb2RlLCBjb250aW51ZVxuICAgICAgICAgIGxhc3RNYXBwaW5nID0gbWFwcGluZztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFdlIGFkZCB0aGUgZ2VuZXJhdGVkIGNvZGUgdW50aWwgdGhlIGZpcnN0IG1hcHBpbmdcbiAgICAgIC8vIHRvIHRoZSBTb3VyY2VOb2RlIHdpdGhvdXQgYW55IG1hcHBpbmcuXG4gICAgICAvLyBFYWNoIGxpbmUgaXMgYWRkZWQgYXMgc2VwYXJhdGUgc3RyaW5nLlxuICAgICAgd2hpbGUgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIG5vZGUuYWRkKHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICB9XG4gICAgICBpZiAobGFzdEdlbmVyYXRlZENvbHVtbiA8IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSB7XG4gICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdO1xuICAgICAgICBub2RlLmFkZChuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pKTtcbiAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICB9XG4gICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgfSwgdGhpcyk7XG4gICAgLy8gV2UgaGF2ZSBwcm9jZXNzZWQgYWxsIG1hcHBpbmdzLlxuICAgIGlmIChyZW1haW5pbmdMaW5lc0luZGV4IDwgcmVtYWluaW5nTGluZXMubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcpIHtcbiAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSByZW1haW5pbmcgY29kZSBpbiB0aGUgY3VycmVudCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGFuZCBhZGQgdGhlIHJlbWFpbmluZyBsaW5lcyB3aXRob3V0IGFueSBtYXBwaW5nXG4gICAgICBub2RlLmFkZChyZW1haW5pbmdMaW5lcy5zcGxpY2UocmVtYWluaW5nTGluZXNJbmRleCkuam9pbihcIlwiKSk7XG4gICAgfVxuXG4gICAgLy8gQ29weSBzb3VyY2VzQ29udGVudCBpbnRvIFNvdXJjZU5vZGVcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVJlbGF0aXZlUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbm9kZTtcblxuICAgIGZ1bmN0aW9uIGFkZE1hcHBpbmdXaXRoQ29kZShtYXBwaW5nLCBjb2RlKSB7XG4gICAgICBpZiAobWFwcGluZyA9PT0gbnVsbCB8fCBtYXBwaW5nLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5vZGUuYWRkKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFSZWxhdGl2ZVBhdGhcbiAgICAgICAgICA/IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICA6IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBub2RlLmFkZChuZXcgU291cmNlTm9kZShtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gU291cmNlTm9kZV9hZGQoYUNodW5rKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICBhQ2h1bmsuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgIHRoaXMuYWRkKGNodW5rKTtcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgaWYgKGFDaHVuaykge1xuICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGFDaHVuayk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzb3VyY2Ugbm9kZS5cbiAqXG4gKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2ZcbiAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5wcmVwZW5kID0gZnVuY3Rpb24gU291cmNlTm9kZV9wcmVwZW5kKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgZm9yICh2YXIgaSA9IGFDaHVuay5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMucHJlcGVuZChhQ2h1bmtbaV0pO1xuICAgIH1cbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFDaHVuayk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcsIG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgXCIgKyBhQ2h1bmtcbiAgICApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgSlMgc25pcHBldHMgaW4gdGhpcyBub2RlIGFuZCBpdHMgY2hpbGRyZW4uIFRoZVxuICogd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBzbmlwcGV0IG9mIEpTIGFuZCBpcyBwYXNzZWQgdGhhdFxuICogc25pcHBldCBhbmQgdGhlIGl0cyBvcmlnaW5hbCBhc3NvY2lhdGVkIHNvdXJjZSdzIGxpbmUvY29sdW1uIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2FsayhhRm4pIHtcbiAgdmFyIGNodW5rO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNodW5rID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICBpZiAoY2h1bmtbaXNTb3VyY2VOb2RlXSkge1xuICAgICAgY2h1bmsud2FsayhhRm4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmIChjaHVuayAhPT0gJycpIHtcbiAgICAgICAgYUZuKGNodW5rLCB7IHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmUsXG4gICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMaWtlIGBTdHJpbmcucHJvdG90eXBlLmpvaW5gIGV4Y2VwdCBmb3IgU291cmNlTm9kZXMuIEluc2VydHMgYGFTdHJgIGJldHdlZW5cbiAqIGVhY2ggb2YgYHRoaXMuY2hpbGRyZW5gLlxuICpcbiAqIEBwYXJhbSBhU2VwIFRoZSBzZXBhcmF0b3IuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2pvaW4oYVNlcCkge1xuICB2YXIgbmV3Q2hpbGRyZW47XG4gIHZhciBpO1xuICB2YXIgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgbmV3Q2hpbGRyZW4gPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuLTE7IGkrKykge1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2goYVNlcCk7XG4gICAgfVxuICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IG5ld0NoaWxkcmVuO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDYWxsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSBvbiB0aGUgdmVyeSByaWdodC1tb3N0IHNvdXJjZSBzbmlwcGV0LiBVc2VmdWxcbiAqIGZvciB0cmltbWluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIGVuZCBvZiBhIHNvdXJjZSBub2RlLCBldGMuXG4gKlxuICogQHBhcmFtIGFQYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gKiBAcGFyYW0gYVJlcGxhY2VtZW50IFRoZSB0aGluZyB0byByZXBsYWNlIHRoZSBwYXR0ZXJuIHdpdGguXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnJlcGxhY2VSaWdodCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpIHtcbiAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgaWYgKGxhc3RDaGlsZFtpc1NvdXJjZU5vZGVdKSB7XG4gICAgbGFzdENoaWxkLnJlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgbGFzdENoaWxkID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXSA9IGxhc3RDaGlsZC5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICB9XG4gIGVsc2Uge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaCgnJy5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3JcbiAqIGluIHRoZSBzb3VyY2VzQ29udGVudCBmaWVsZC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZVxuICogQHBhcmFtIGFTb3VyY2VDb250ZW50IFRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgZmlsZVxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHRoaXMuc291cmNlQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhhU291cmNlRmlsZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gIH07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIFNvdXJjZU5vZGVzLiBUaGUgd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2hcbiAqIHNvdXJjZSBmaWxlIGNvbnRlbnQgYW5kIGlzIHBhc3NlZCB0aGUgZmlsZW5hbWUgYW5kIHNvdXJjZSBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2Fsa1NvdXJjZUNvbnRlbnRzID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV93YWxrU291cmNlQ29udGVudHMoYUZuKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldW2lzU291cmNlTm9kZV0pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbltpXS53YWxrU291cmNlQ29udGVudHMoYUZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc291cmNlcyA9IE9iamVjdC5rZXlzKHRoaXMuc291cmNlQ29udGVudHMpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzb3VyY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhRm4odXRpbC5mcm9tU2V0U3RyaW5nKHNvdXJjZXNbaV0pLCB0aGlzLnNvdXJjZUNvbnRlbnRzW3NvdXJjZXNbaV1dKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZS4gV2Fsa3Mgb3ZlciB0aGUgdHJlZVxuICogYW5kIGNvbmNhdGVuYXRlcyBhbGwgdGhlIHZhcmlvdXMgc25pcHBldHMgdG9nZXRoZXIgdG8gb25lIHN0cmluZy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nKCkge1xuICB2YXIgc3RyID0gXCJcIjtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaykge1xuICAgIHN0ciArPSBjaHVuaztcbiAgfSk7XG4gIHJldHVybiBzdHI7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlIGFsb25nIHdpdGggYSBzb3VyY2VcbiAqIG1hcC5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmdXaXRoU291cmNlTWFwID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZ1dpdGhTb3VyY2VNYXAoYUFyZ3MpIHtcbiAgdmFyIGdlbmVyYXRlZCA9IHtcbiAgICBjb2RlOiBcIlwiLFxuICAgIGxpbmU6IDEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHZhciBtYXAgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKTtcbiAgdmFyIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgdmFyIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbENvbHVtbiA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxOYW1lID0gbnVsbDtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaywgb3JpZ2luYWwpIHtcbiAgICBnZW5lcmF0ZWQuY29kZSArPSBjaHVuaztcbiAgICBpZiAob3JpZ2luYWwuc291cmNlICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmxpbmUgIT09IG51bGxcbiAgICAgICAgJiYgb3JpZ2luYWwuY29sdW1uICE9PSBudWxsKSB7XG4gICAgICBpZihsYXN0T3JpZ2luYWxTb3VyY2UgIT09IG9yaWdpbmFsLnNvdXJjZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsTGluZSAhPT0gb3JpZ2luYWwubGluZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsQ29sdW1uICE9PSBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbE5hbWUgIT09IG9yaWdpbmFsLm5hbWUpIHtcbiAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICBsYXN0T3JpZ2luYWxMaW5lID0gb3JpZ2luYWwubGluZTtcbiAgICAgIGxhc3RPcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgIGxhc3RPcmlnaW5hbE5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGlkeCA9IDAsIGxlbmd0aCA9IGNodW5rLmxlbmd0aDsgaWR4IDwgbGVuZ3RoOyBpZHgrKykge1xuICAgICAgaWYgKGNodW5rLmNoYXJDb2RlQXQoaWR4KSA9PT0gTkVXTElORV9DT0RFKSB7XG4gICAgICAgIGdlbmVyYXRlZC5saW5lKys7XG4gICAgICAgIGdlbmVyYXRlZC5jb2x1bW4gPSAwO1xuICAgICAgICAvLyBNYXBwaW5ncyBlbmQgYXQgZW9sXG4gICAgICAgIGlmIChpZHggKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgdGhpcy53YWxrU291cmNlQ29udGVudHMoZnVuY3Rpb24gKHNvdXJjZUZpbGUsIHNvdXJjZUNvbnRlbnQpIHtcbiAgICBtYXAuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgY29kZTogZ2VuZXJhdGVkLmNvZGUsIG1hcDogbWFwIH07XG59O1xuXG5leHBvcnRzLlNvdXJjZU5vZGUgPSBTb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW5vZGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/source-map/dist/source-map.js b/tools/node_modules/eslint/node_modules/source-map/dist/source-map.js deleted file mode 100644 index 4e630e29434ca5..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/dist/source-map.js +++ /dev/null @@ -1,3090 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["sourceMap"] = factory(); - else - root["sourceMap"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; - -/******/ // The require function -/******/ function __webpack_require__(moduleId) { - -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; - -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; - -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - -/******/ // Flag the module as loaded -/******/ module.loaded = true; - -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } - - -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; - -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; - -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; - -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - - /* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ - exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer; - exports.SourceNode = __webpack_require__(10).SourceNode; - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var base64VLQ = __webpack_require__(2); - var util = __webpack_require__(4); - var ArraySet = __webpack_require__(5).ArraySet; - var MappingList = __webpack_require__(6).MappingList; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ - SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - - SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - var base64 = __webpack_require__(3); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ - exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; - }; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); - }; - - /** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ - exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; - }; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; - } - exports.urlParse = urlParse; - - function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - - /** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ - function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; - } - exports.normalize = normalize; - - /** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ - function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; - } - exports.join = join; - - exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); - }; - - /** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ - function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); - } - exports.relative = relative; - - var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); - }()); - - function identity (s) { - return s; - } - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; - } - exports.toSetString = supportsNullProto ? identity : toSetString; - - function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; - } - exports.fromSetString = supportsNullProto ? identity : fromSetString; - - function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; - } - - /** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; - } - exports.compareByOriginalPositions = compareByOriginalPositions; - - /** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ - function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; - } - exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - - function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; - } - - /** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ - function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var has = Object.prototype.hasOwnProperty; - var hasNativeMap = typeof Map !== "undefined"; - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - - /** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ - ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - - /** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ - function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; - } - - /** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ - function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; - } - - /** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ - MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - - /** - * Add the given source mapping. - * - * @param Object aMapping - */ - MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } - }; - - /** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ - MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; - }; - - exports.MappingList = MappingList; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var util = __webpack_require__(4); - var binarySearch = __webpack_require__(8); - var ArraySet = __webpack_require__(5).ArraySet; - var base64VLQ = __webpack_require__(2); - var quickSort = __webpack_require__(9).quickSort; - - function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap) - : new BasicSourceMapConsumer(sourceMap); - } - - SourceMapConsumer.fromSourceMap = function(aSourceMap) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap); - } - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - // `__generatedMappings` and `__originalMappings` are arrays that hold the - // parsed mapping coordinates from the source map's "mappings" attribute. They - // are lazily instantiated, accessed via the `_generatedMappings` and - // `_originalMappings` getters respectively, and we only parse the mappings - // and create these arrays once queried for a source location. We jump through - // these hoops because there can be many thousands of mappings, and parsing - // them is expensive, so we only want to do it if we must. - // - // Each object in the arrays is of the form: - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `_generatedMappings` is ordered by the generated positions. - // - // `_originalMappings` is ordered by the original positions. - - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } - }); - - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } - }); - - SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - SourceMapConsumer.GREATEST_LOWER_BOUND = 1; - SourceMapConsumer.LEAST_UPPER_BOUND = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - if (source != null && sourceRoot != null) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - - /** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: Optional. the column number in the original source. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - if (this.sourceRoot != null) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - if (!this._sources.has(needle.source)) { - return []; - } - needle.source = this._sources.indexOf(needle.source); - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - - exports.SourceMapConsumer = SourceMapConsumer; - - /** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function BasicSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this.file = file; - } - - BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - - /** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @returns BasicSourceMapConsumer - */ - BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - - /** - * The version of the source mapping spec that we are consuming. - */ - BasicSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; - }, this); - } - }); - - /** - * Provide the JIT with a nice shape / hidden class. - */ - function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; - } - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - - /** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ - BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - if (this.sourceRoot != null) { - source = util.join(this.sourceRoot, source); - } - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot != null) { - aSource = util.relative(this.sourceRoot, aSource); - } - - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + aSource)) { - return this.sourcesContent[this._sources.indexOf("/" + aSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - if (this.sourceRoot != null) { - source = util.relative(this.sourceRoot, source); - } - if (!this._sources.has(source)) { - return { - line: null, - column: null, - lastColumn: null - }; - } - source = this._sources.indexOf(source); - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - - exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - - /** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The only parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ - function IndexedSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map')) - } - }); - } - - IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - - /** - * The version of the source mapping spec that we are consuming. - */ - IndexedSourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } - }); - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - - /** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ - IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ - IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - if (section.consumer.sourceRoot !== null) { - source = util.join(section.consumer.sourceRoot, source); - } - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - - exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - exports.GREATEST_LOWER_BOUND = 1; - exports.LEAST_UPPER_BOUND = 2; - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } - } - - /** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ - exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; - }; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - // It turns out that some (most?) JavaScript engines don't self-host - // `Array.prototype.sort`. This makes sense because C++ will likely remain - // faster than JS when doing raw CPU-intensive sorting. However, when using a - // custom comparator function, calling back and forth between the VM's C++ and - // JIT'd JS is rather slow *and* loses JIT type information, resulting in - // worse generated code for the comparator function than would be optimal. In - // fact, when sorting with a comparator, these costs outweigh the benefits of - // sorting in C++. By using our own JS-implemented Quick Sort (below), we get - // a ~3500ms mean speed-up in `bench/bench.html`. - - /** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ - function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; - } - - /** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ - function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); - } - - /** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ - function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } - } - - /** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ - exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); - }; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - - /* -*- Mode: js; js-indent-level: 2; -*- */ - /* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - - var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator; - var util = __webpack_require__(4); - - // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other - // operating systems these days (capturing the result). - var REGEX_NEWLINE = /(\r?\n)/; - - // Newline character code for charCodeAt() comparisons - var NEWLINE_CODE = 10; - - // Private symbol for identifying `SourceNode`s when multiple versions of - // the source-map library are loaded. This MUST NOT CHANGE across - // versions! - var isSourceNode = "$$$isSourceNode$$$"; - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex]; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - - -/***/ }) -/******/ ]) -}); -; \ No newline at end of file diff --git a/tools/node_modules/eslint/node_modules/source-map/dist/source-map.min.js b/tools/node_modules/eslint/node_modules/source-map/dist/source-map.min.js deleted file mode 100644 index f2a46bd02536a3..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/dist/source-map.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.sourceMap=n():e.sourceMap=n()}(this,function(){return function(e){function n(t){if(r[t])return r[t].exports;var o=r[t]={exports:{},id:t,loaded:!1};return e[t].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){n.SourceMapGenerator=r(1).SourceMapGenerator,n.SourceMapConsumer=r(7).SourceMapConsumer,n.SourceNode=r(10).SourceNode},function(e,n,r){function t(e){e||(e={}),this._file=i.getArg(e,"file",null),this._sourceRoot=i.getArg(e,"sourceRoot",null),this._skipValidation=i.getArg(e,"skipValidation",!1),this._sources=new s,this._names=new s,this._mappings=new a,this._sourcesContents=null}var o=r(2),i=r(4),s=r(5).ArraySet,a=r(6).MappingList;t.prototype._version=3,t.fromSourceMap=function(e){var n=e.sourceRoot,r=new t({file:e.file,sourceRoot:n});return e.eachMapping(function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(t.source=e.source,null!=n&&(t.source=i.relative(n,t.source)),t.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(t.name=e.name)),r.addMapping(t)}),e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&r.setSourceContent(n,t)}),r},t.prototype.addMapping=function(e){var n=i.getArg(e,"generated"),r=i.getArg(e,"original",null),t=i.getArg(e,"source",null),o=i.getArg(e,"name",null);this._skipValidation||this._validateMapping(n,r,t,o),null!=t&&(t=String(t),this._sources.has(t)||this._sources.add(t)),null!=o&&(o=String(o),this._names.has(o)||this._names.add(o)),this._mappings.add({generatedLine:n.line,generatedColumn:n.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:t,name:o})},t.prototype.setSourceContent=function(e,n){var r=e;null!=this._sourceRoot&&(r=i.relative(this._sourceRoot,r)),null!=n?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[i.toSetString(r)]=n):this._sourcesContents&&(delete this._sourcesContents[i.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},t.prototype.applySourceMap=function(e,n,r){var t=n;if(null==n){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');t=e.file}var o=this._sourceRoot;null!=o&&(t=i.relative(o,t));var a=new s,u=new s;this._mappings.unsortedForEach(function(n){if(n.source===t&&null!=n.originalLine){var s=e.originalPositionFor({line:n.originalLine,column:n.originalColumn});null!=s.source&&(n.source=s.source,null!=r&&(n.source=i.join(r,n.source)),null!=o&&(n.source=i.relative(o,n.source)),n.originalLine=s.line,n.originalColumn=s.column,null!=s.name&&(n.name=s.name))}var l=n.source;null==l||a.has(l)||a.add(l);var c=n.name;null==c||u.has(c)||u.add(c)},this),this._sources=a,this._names=u,e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&(null!=r&&(n=i.join(r,n)),null!=o&&(n=i.relative(o,n)),this.setSourceContent(n,t))},this)},t.prototype._validateMapping=function(e,n,r,t){if(n&&"number"!=typeof n.line&&"number"!=typeof n.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||n||r||t)&&!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:n,name:t}))},t.prototype._serializeMappings=function(){for(var e,n,r,t,s=0,a=1,u=0,l=0,c=0,g=0,p="",h=this._mappings.toArray(),f=0,d=h.length;f0){if(!i.compareByGeneratedPositionsInflated(n,h[f-1]))continue;e+=","}e+=o.encode(n.generatedColumn-s),s=n.generatedColumn,null!=n.source&&(t=this._sources.indexOf(n.source),e+=o.encode(t-g),g=t,e+=o.encode(n.originalLine-1-l),l=n.originalLine-1,e+=o.encode(n.originalColumn-u),u=n.originalColumn,null!=n.name&&(r=this._names.indexOf(n.name),e+=o.encode(r-c),c=r)),p+=e}return p},t.prototype._generateSourcesContent=function(e,n){return e.map(function(e){if(!this._sourcesContents)return null;null!=n&&(e=i.relative(n,e));var r=i.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},t.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},t.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=t},function(e,n,r){function t(e){return e<0?(-e<<1)+1:(e<<1)+0}function o(e){var n=1===(1&e),r=e>>1;return n?-r:r}var i=r(3),s=5,a=1<>>=s,o>0&&(n|=l),r+=i.encode(n);while(o>0);return r},n.decode=function(e,n,r){var t,a,c=e.length,g=0,p=0;do{if(n>=c)throw new Error("Expected more digits in base 64 VLQ value.");if(a=i.decode(e.charCodeAt(n++)),a===-1)throw new Error("Invalid base64 digit: "+e.charAt(n-1));t=!!(a&l),a&=u,g+=a<=0;c--)s=u[c],"."===s?u.splice(c,1):".."===s?l++:l>0&&(""===s?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return r=u.join("/"),""===r&&(r=a?"/":"."),i?(i.path=r,o(i)):r}function s(e,n){""===e&&(e="."),""===n&&(n=".");var r=t(n),s=t(e);if(s&&(e=s.path||"/"),r&&!r.scheme)return s&&(r.scheme=s.scheme),o(r);if(r||n.match(_))return n;if(s&&!s.host&&!s.path)return s.host=n,o(s);var a="/"===n.charAt(0)?n:i(e.replace(/\/+$/,"")+"/"+n);return s?(s.path=a,o(s)):a}function a(e,n){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==n.indexOf(e+"/");){var t=e.lastIndexOf("/");if(t<0)return n;if(e=e.slice(0,t),e.match(/^([^\/]+:\/)?\/*$/))return n;++r}return Array(r+1).join("../")+n.substr(e.length+1)}function u(e){return e}function l(e){return g(e)?"$"+e:e}function c(e){return g(e)?e.slice(1):e}function g(e){if(!e)return!1;var n=e.length;if(n<9)return!1;if(95!==e.charCodeAt(n-1)||95!==e.charCodeAt(n-2)||111!==e.charCodeAt(n-3)||116!==e.charCodeAt(n-4)||111!==e.charCodeAt(n-5)||114!==e.charCodeAt(n-6)||112!==e.charCodeAt(n-7)||95!==e.charCodeAt(n-8)||95!==e.charCodeAt(n-9))return!1;for(var r=n-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function p(e,n,r){var t=e.source-n.source;return 0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t||r?t:(t=e.generatedColumn-n.generatedColumn,0!==t?t:(t=e.generatedLine-n.generatedLine,0!==t?t:e.name-n.name))))}function h(e,n,r){var t=e.generatedLine-n.generatedLine;return 0!==t?t:(t=e.generatedColumn-n.generatedColumn,0!==t||r?t:(t=e.source-n.source,0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t?t:e.name-n.name))))}function f(e,n){return e===n?0:e>n?1:-1}function d(e,n){var r=e.generatedLine-n.generatedLine;return 0!==r?r:(r=e.generatedColumn-n.generatedColumn,0!==r?r:(r=f(e.source,n.source),0!==r?r:(r=e.originalLine-n.originalLine,0!==r?r:(r=e.originalColumn-n.originalColumn,0!==r?r:f(e.name,n.name)))))}n.getArg=r;var m=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,_=/^data:.+\,.+$/;n.urlParse=t,n.urlGenerate=o,n.normalize=i,n.join=s,n.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(m)},n.relative=a;var v=function(){var e=Object.create(null);return!("__proto__"in e)}();n.toSetString=v?u:l,n.fromSetString=v?u:c,n.compareByOriginalPositions=p,n.compareByGeneratedPositionsDeflated=h,n.compareByGeneratedPositionsInflated=d},function(e,n,r){function t(){this._array=[],this._set=s?new Map:Object.create(null)}var o=r(4),i=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;t.fromArray=function(e,n){for(var r=new t,o=0,i=e.length;o=0)return n}else{var r=o.toSetString(e);if(i.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},t.prototype.at=function(e){if(e>=0&&er||t==r&&s>=o||i.compareByGeneratedPositionsInflated(e,n)<=0}function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var i=r(4);o.prototype.unsortedForEach=function(e,n){this._array.forEach(e,n)},o.prototype.add=function(e){t(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=o},function(e,n,r){function t(e){var n=e;return"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,""))),null!=n.sections?new s(n):new o(n)}function o(e){var n=e;"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=a.getArg(n,"version"),t=a.getArg(n,"sources"),o=a.getArg(n,"names",[]),i=a.getArg(n,"sourceRoot",null),s=a.getArg(n,"sourcesContent",null),u=a.getArg(n,"mappings"),c=a.getArg(n,"file",null);if(r!=this._version)throw new Error("Unsupported version: "+r);t=t.map(String).map(a.normalize).map(function(e){return i&&a.isAbsolute(i)&&a.isAbsolute(e)?a.relative(i,e):e}),this._names=l.fromArray(o.map(String),!0),this._sources=l.fromArray(t,!0),this.sourceRoot=i,this.sourcesContent=s,this._mappings=u,this.file=c}function i(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function s(e){var n=e;"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=a.getArg(n,"version"),o=a.getArg(n,"sections");if(r!=this._version)throw new Error("Unsupported version: "+r);this._sources=new l,this._names=new l;var i={line:-1,column:0};this._sections=o.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var n=a.getArg(e,"offset"),r=a.getArg(n,"line"),o=a.getArg(n,"column");if(r=0){var i=this._originalMappings[o];if(void 0===e.column)for(var s=i.originalLine;i&&i.originalLine===s;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o];else for(var l=i.originalColumn;i&&i.originalLine===n&&i.originalColumn==l;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o]}return t},n.SourceMapConsumer=t,o.prototype=Object.create(t.prototype),o.prototype.consumer=t,o.fromSourceMap=function(e){var n=Object.create(o.prototype),r=n._names=l.fromArray(e._names.toArray(),!0),t=n._sources=l.fromArray(e._sources.toArray(),!0);n.sourceRoot=e._sourceRoot,n.sourcesContent=e._generateSourcesContent(n._sources.toArray(),n.sourceRoot),n.file=e._file;for(var s=e._mappings.toArray().slice(),u=n.__generatedMappings=[],c=n.__originalMappings=[],p=0,h=s.length;p1&&(r.source=d+o[1],d+=o[1],r.originalLine=h+o[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=f+o[3],f=r.originalColumn,o.length>4&&(r.name=m+o[4],m+=o[4])),S.push(r),"number"==typeof r.originalLine&&A.push(r)}g(S,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=S,g(A,a.compareByOriginalPositions),this.__originalMappings=A},o.prototype._findMapping=function(e,n,r,t,o,i){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[t]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[t]);return u.search(e,n,o,i)},o.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[r];if(o.generatedLine===n.generatedLine){var i=a.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),null!=this.sourceRoot&&(i=a.join(this.sourceRoot,i)));var s=a.getArg(o,"name",null);return null!==s&&(s=this._names.at(s)),{source:i,line:a.getArg(o,"originalLine",null),column:a.getArg(o,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},o.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},o.prototype.sourceContentFor=function(e,n){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=a.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var r;if(null!=this.sourceRoot&&(r=a.urlParse(this.sourceRoot))){var t=e.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(t))return this.sourcesContent[this._sources.indexOf(t)];if((!r.path||"/"==r.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(n)return null;throw new Error('"'+e+'" is not in the SourceMap.')},o.prototype.generatedPositionFor=function(e){var n=a.getArg(e,"source");if(null!=this.sourceRoot&&(n=a.relative(this.sourceRoot,n)),!this._sources.has(n))return{line:null,column:null,lastColumn:null};n=this._sources.indexOf(n);var r={source:n,originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",t.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=o,s.prototype=Object.create(t.prototype),s.prototype.constructor=t,s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){for(var e=[],n=0;n0?t-u>1?r(u,t,o,i,s,a):a==n.LEAST_UPPER_BOUND?t1?r(e,u,o,i,s,a):a==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,o,i){if(0===t.length)return-1;var s=r(-1,t.length,e,t,o,i||n.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&0===o(t[s],t[s-1],!0);)--s;return s}},function(e,n){function r(e,n,r){var t=e[n];e[n]=e[r],e[r]=t}function t(e,n){return Math.round(e+Math.random()*(n-e))}function o(e,n,i,s){if(i=0;n--)this.prepend(e[n]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},t.prototype.walk=function(e){for(var n,r=0,t=this.children.length;r0){for(n=[],r=0;r= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); -}; - -/** - * What is the element at the given index? - * - * @param Number aIdx - */ -ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); -}; - -/** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ -ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); -}; - -exports.ArraySet = ArraySet; diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/base64-vlq.js b/tools/node_modules/eslint/node_modules/source-map/lib/base64-vlq.js deleted file mode 100644 index 612b404018ece9..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/lib/base64-vlq.js +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -var base64 = require('./base64'); - -// A single base 64 digit can contain 6 bits of data. For the base 64 variable -// length quantities we use in the source map spec, the first bit is the sign, -// the next four bits are the actual value, and the 6th bit is the -// continuation bit. The continuation bit tells us whether there are more -// digits in this value following this digit. -// -// Continuation -// | Sign -// | | -// V V -// 101011 - -var VLQ_BASE_SHIFT = 5; - -// binary: 100000 -var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - -// binary: 011111 -var VLQ_BASE_MASK = VLQ_BASE - 1; - -// binary: 100000 -var VLQ_CONTINUATION_BIT = VLQ_BASE; - -/** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ -function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; -} - -/** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ -function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; -} - -/** - * Returns the base 64 VLQ encoded value. - */ -exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; -}; - -/** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ -exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; -}; diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/base64.js b/tools/node_modules/eslint/node_modules/source-map/lib/base64.js deleted file mode 100644 index 8aa86b30264363..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/lib/base64.js +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - -/** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ -exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); -}; - -/** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ -exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; -}; diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/binary-search.js b/tools/node_modules/eslint/node_modules/source-map/lib/binary-search.js deleted file mode 100644 index 010ac941e1568d..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/lib/binary-search.js +++ /dev/null @@ -1,111 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -exports.GREATEST_LOWER_BOUND = 1; -exports.LEAST_UPPER_BOUND = 2; - -/** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ -function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } -} - -/** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ -exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; -}; diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/mapping-list.js b/tools/node_modules/eslint/node_modules/source-map/lib/mapping-list.js deleted file mode 100644 index 06d1274a025a8a..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/lib/mapping-list.js +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); - -/** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ -function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; -} - -/** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ -function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; -} - -/** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ -MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - -/** - * Add the given source mapping. - * - * @param Object aMapping - */ -MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } -}; - -/** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ -MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; -}; - -exports.MappingList = MappingList; diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/quick-sort.js b/tools/node_modules/eslint/node_modules/source-map/lib/quick-sort.js deleted file mode 100644 index 6a7caadbbdbea1..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/lib/quick-sort.js +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -// It turns out that some (most?) JavaScript engines don't self-host -// `Array.prototype.sort`. This makes sense because C++ will likely remain -// faster than JS when doing raw CPU-intensive sorting. However, when using a -// custom comparator function, calling back and forth between the VM's C++ and -// JIT'd JS is rather slow *and* loses JIT type information, resulting in -// worse generated code for the comparator function than would be optimal. In -// fact, when sorting with a comparator, these costs outweigh the benefits of -// sorting in C++. By using our own JS-implemented Quick Sort (below), we get -// a ~3500ms mean speed-up in `bench/bench.html`. - -/** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ -function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; -} - -/** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ -function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); -} - -/** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ -function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } -} - -/** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ -exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); -}; diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/source-map-consumer.js b/tools/node_modules/eslint/node_modules/source-map/lib/source-map-consumer.js deleted file mode 100644 index 6abcc280eea160..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/lib/source-map-consumer.js +++ /dev/null @@ -1,1082 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = require('./util'); -var binarySearch = require('./binary-search'); -var ArraySet = require('./array-set').ArraySet; -var base64VLQ = require('./base64-vlq'); -var quickSort = require('./quick-sort').quickSort; - -function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap) - : new BasicSourceMapConsumer(sourceMap); -} - -SourceMapConsumer.fromSourceMap = function(aSourceMap) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap); -} - -/** - * The version of the source mapping spec that we are consuming. - */ -SourceMapConsumer.prototype._version = 3; - -// `__generatedMappings` and `__originalMappings` are arrays that hold the -// parsed mapping coordinates from the source map's "mappings" attribute. They -// are lazily instantiated, accessed via the `_generatedMappings` and -// `_originalMappings` getters respectively, and we only parse the mappings -// and create these arrays once queried for a source location. We jump through -// these hoops because there can be many thousands of mappings, and parsing -// them is expensive, so we only want to do it if we must. -// -// Each object in the arrays is of the form: -// -// { -// generatedLine: The line number in the generated code, -// generatedColumn: The column number in the generated code, -// source: The path to the original source file that generated this -// chunk of code, -// originalLine: The line number in the original source that -// corresponds to this chunk of generated code, -// originalColumn: The column number in the original source that -// corresponds to this chunk of generated code, -// name: The name of the original symbol which generated this chunk of -// code. -// } -// -// All properties except for `generatedLine` and `generatedColumn` can be -// `null`. -// -// `_generatedMappings` is ordered by the generated positions. -// -// `_originalMappings` is ordered by the original positions. - -SourceMapConsumer.prototype.__generatedMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } -}); - -SourceMapConsumer.prototype.__originalMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } -}); - -SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - -SourceMapConsumer.GENERATED_ORDER = 1; -SourceMapConsumer.ORIGINAL_ORDER = 2; - -SourceMapConsumer.GREATEST_LOWER_BOUND = 1; -SourceMapConsumer.LEAST_UPPER_BOUND = 2; - -/** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ -SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - if (source != null && sourceRoot != null) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - -/** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: Optional. the column number in the original source. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ -SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - if (this.sourceRoot != null) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - if (!this._sources.has(needle.source)) { - return []; - } - needle.source = this._sources.indexOf(needle.source); - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - -exports.SourceMapConsumer = SourceMapConsumer; - -/** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ -function BasicSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this.file = file; -} - -BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - -/** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @returns BasicSourceMapConsumer - */ -BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - -/** - * The version of the source mapping spec that we are consuming. - */ -BasicSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; - }, this); - } -}); - -/** - * Provide the JIT with a nice shape / hidden class. - */ -function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; -} - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - -/** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ -BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - -/** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ -BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ -BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - if (this.sourceRoot != null) { - source = util.join(this.sourceRoot, source); - } - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot != null) { - aSource = util.relative(this.sourceRoot, aSource); - } - - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + aSource)) { - return this.sourcesContent[this._sources.indexOf("/" + aSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ -BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - if (this.sourceRoot != null) { - source = util.relative(this.sourceRoot, source); - } - if (!this._sources.has(source)) { - return { - line: null, - column: null, - lastColumn: null - }; - } - source = this._sources.indexOf(source); - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - -exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - -/** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The only parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ -function IndexedSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map')) - } - }); -} - -IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - -/** - * The version of the source mapping spec that we are consuming. - */ -IndexedSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } -}); - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ -IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ -IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - if (section.consumer.sourceRoot !== null) { - source = util.join(section.consumer.sourceRoot, source); - } - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - -exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/source-map-generator.js b/tools/node_modules/eslint/node_modules/source-map/lib/source-map-generator.js deleted file mode 100644 index aff1e7fb268acc..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/lib/source-map-generator.js +++ /dev/null @@ -1,416 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var base64VLQ = require('./base64-vlq'); -var util = require('./util'); -var ArraySet = require('./array-set').ArraySet; -var MappingList = require('./mapping-list').MappingList; - -/** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ -function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; -} - -SourceMapGenerator.prototype._version = 3; - -/** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ -SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - -/** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ -SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - -/** - * Set the source content for a source file. - */ -SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - -/** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ -SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - -/** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ -SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - -/** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ -SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - -SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - -/** - * Externalize the source map. - */ -SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - -/** - * Render the source map being generated to a string. - */ -SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - -exports.SourceMapGenerator = SourceMapGenerator; diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/source-node.js b/tools/node_modules/eslint/node_modules/source-map/lib/source-node.js deleted file mode 100644 index d196a53f8c0eda..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/lib/source-node.js +++ /dev/null @@ -1,413 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; -var util = require('./util'); - -// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other -// operating systems these days (capturing the result). -var REGEX_NEWLINE = /(\r?\n)/; - -// Newline character code for charCodeAt() comparisons -var NEWLINE_CODE = 10; - -// Private symbol for identifying `SourceNode`s when multiple versions of -// the source-map library are loaded. This MUST NOT CHANGE across -// versions! -var isSourceNode = "$$$isSourceNode$$$"; - -/** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ -function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); -} - -/** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ -SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex]; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - -/** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } -}; - -/** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ -SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; -}; - -/** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ -SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; -}; - -/** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ -SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - -/** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - -/** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ -SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; -}; - -/** - * Returns the string representation of this source node along with a source - * map. - */ -SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; -}; - -exports.SourceNode = SourceNode; diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/util.js b/tools/node_modules/eslint/node_modules/source-map/lib/util.js deleted file mode 100644 index 44e0e45205233e..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/lib/util.js +++ /dev/null @@ -1,417 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ -function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } -} -exports.getArg = getArg; - -var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; -var dataUrlRegexp = /^data:.+\,.+$/; - -function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; -} -exports.urlParse = urlParse; - -function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; -} -exports.urlGenerate = urlGenerate; - -/** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ -function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; -} -exports.normalize = normalize; - -/** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ -function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; -} -exports.join = join; - -exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); -}; - -/** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ -function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); -} -exports.relative = relative; - -var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); -}()); - -function identity (s) { - return s; -} - -/** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ -function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; -} -exports.toSetString = supportsNullProto ? identity : toSetString; - -function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; -} -exports.fromSetString = supportsNullProto ? identity : fromSetString; - -function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; -} - -/** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ -function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; -} -exports.compareByOriginalPositions = compareByOriginalPositions; - -/** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ -function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; -} -exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - -function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; -} - -/** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ -function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; diff --git a/tools/node_modules/eslint/node_modules/source-map/package.json b/tools/node_modules/eslint/node_modules/source-map/package.json deleted file mode 100644 index 048e3ae86099f8..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "source-map", - "description": "Generates and consumes source maps", - "version": "0.5.7", - "homepage": "https://github.com/mozilla/source-map", - "author": "Nick Fitzgerald ", - "contributors": [ - "Tobias Koppers ", - "Duncan Beevers ", - "Stephen Crane ", - "Ryan Seddon ", - "Miles Elam ", - "Mihai Bazon ", - "Michael Ficarra ", - "Todd Wolfson ", - "Alexander Solovyov ", - "Felix Gnass ", - "Conrad Irwin ", - "usrbincc ", - "David Glasser ", - "Chase Douglas ", - "Evan Wallace ", - "Heather Arthur ", - "Hugh Kennedy ", - "David Glasser ", - "Simon Lydell ", - "Jmeas Smith ", - "Michael Z Goddard ", - "azu ", - "John Gozde ", - "Adam Kirkton ", - "Chris Montgomery ", - "J. Ryan Stinnett ", - "Jack Herrington ", - "Chris Truter ", - "Daniel Espeset ", - "Jamie Wong ", - "Eddy Bruël ", - "Hawken Rives ", - "Gilad Peleg ", - "djchie ", - "Gary Ye ", - "Nicolas Lalevée " - ], - "repository": { - "type": "git", - "url": "http://github.com/mozilla/source-map.git" - }, - "main": "./source-map.js", - "files": [ - "source-map.js", - "lib/", - "dist/source-map.debug.js", - "dist/source-map.js", - "dist/source-map.min.js", - "dist/source-map.min.js.map" - ], - "engines": { - "node": ">=0.10.0" - }, - "license": "BSD-3-Clause", - "scripts": { - "test": "npm run build && node test/run-tests.js", - "build": "webpack --color", - "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md" - }, - "devDependencies": { - "doctoc": "^0.15.0", - "webpack": "^1.12.0" - }, - "typings": "source-map" -} diff --git a/tools/node_modules/eslint/node_modules/source-map/source-map.js b/tools/node_modules/eslint/node_modules/source-map/source-map.js deleted file mode 100644 index bc88fe820c87a2..00000000000000 --- a/tools/node_modules/eslint/node_modules/source-map/source-map.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator; -exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer; -exports.SourceNode = require('./lib/source-node').SourceNode; diff --git a/tools/node_modules/eslint/node_modules/minimist/LICENSE b/tools/node_modules/eslint/node_modules/update-browserslist-db/LICENSE similarity index 91% rename from tools/node_modules/eslint/node_modules/minimist/LICENSE rename to tools/node_modules/eslint/node_modules/update-browserslist-db/LICENSE index ee27ba4b4412b0..377ae1bee969f6 100644 --- a/tools/node_modules/eslint/node_modules/minimist/LICENSE +++ b/tools/node_modules/eslint/node_modules/update-browserslist-db/LICENSE @@ -1,4 +1,6 @@ -This software is released under the MIT license: +The MIT License (MIT) + +Copyright 2022 Andrey Sitnik and other contributors 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 diff --git a/tools/node_modules/eslint/node_modules/update-browserslist-db/cli.js b/tools/node_modules/eslint/node_modules/update-browserslist-db/cli.js new file mode 100755 index 00000000000000..e6829ce94962e2 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/update-browserslist-db/cli.js @@ -0,0 +1,41 @@ +#!/usr/bin/env node + +let { readFileSync } = require('fs') +let { join } = require('path') + +let updateDb = require('./') + +const ROOT = __dirname + +function getPackage() { + return JSON.parse(readFileSync(join(ROOT, 'package.json'))) +} + +let args = process.argv.slice(2) + +let USAGE = 'Usage:\n npx update-browserslist-db\n' + +function isArg(arg) { + return args.some(i => i === arg) +} + +function error(msg) { + process.stderr.write('update-browserslist-db: ' + msg + '\n') + process.exit(1) +} + +if (isArg('--help') || isArg('-h')) { + process.stdout.write(getPackage().description + '.\n\n' + USAGE + '\n') +} else if (isArg('--version') || isArg('-v')) { + process.stdout.write('browserslist-lint ' + getPackage().version + '\n') +} else { + try { + updateDb() + } catch (e) { + if (e.name === 'BrowserslistUpdateError') { + error(e.message) + } else { + throw e + } + } +} diff --git a/tools/node_modules/eslint/node_modules/browserslist/update-db.js b/tools/node_modules/eslint/node_modules/update-browserslist-db/index.js similarity index 59% rename from tools/node_modules/eslint/node_modules/browserslist/update-db.js rename to tools/node_modules/eslint/node_modules/update-browserslist-db/index.js index 3e69e640a648ee..ccd941f089e223 100644 --- a/tools/node_modules/eslint/node_modules/browserslist/update-db.js +++ b/tools/node_modules/eslint/node_modules/update-browserslist-db/index.js @@ -1,41 +1,55 @@ -var childProcess = require('child_process') -var escalade = require('escalade/sync') -var pico = require('picocolors') -var path = require('path') -var fs = require('fs') +let childProcess = require('child_process') +let escalade = require('escalade/sync') +let pico = require('picocolors') +let path = require('path') +let fs = require('fs') -var BrowserslistError = require('./error') +function BrowserslistUpdateError(message) { + this.name = 'BrowserslistUpdateError' + this.message = message + this.browserslist = true + if (Error.captureStackTrace) { + Error.captureStackTrace(this, BrowserslistUpdateError) + } +} + +BrowserslistUpdateError.prototype = Error.prototype + +/* c8 ignore next 3 */ +function defaultPrint(str) { + process.stdout.write(str) +} function detectLockfile() { - var packageDir = escalade('.', function (dir, names) { + let packageDir = escalade('.', (dir, names) => { return names.indexOf('package.json') !== -1 ? dir : '' }) if (!packageDir) { - throw new BrowserslistError( + throw new BrowserslistUpdateError( 'Cannot find package.json. ' + - 'Is this the right directory to run `npx browserslist --update-db` in?' + 'Is this the right directory to run `npx update-browserslist-db` in?' ) } - var lockfileNpm = path.join(packageDir, 'package-lock.json') - var lockfileShrinkwrap = path.join(packageDir, 'npm-shrinkwrap.json') - var lockfileYarn = path.join(packageDir, 'yarn.lock') - var lockfilePnpm = path.join(packageDir, 'pnpm-lock.yaml') + let lockfileNpm = path.join(packageDir, 'package-lock.json') + let lockfileShrinkwrap = path.join(packageDir, 'npm-shrinkwrap.json') + let lockfileYarn = path.join(packageDir, 'yarn.lock') + let lockfilePnpm = path.join(packageDir, 'pnpm-lock.yaml') if (fs.existsSync(lockfilePnpm)) { return { mode: 'pnpm', file: lockfilePnpm } } else if (fs.existsSync(lockfileNpm)) { return { mode: 'npm', file: lockfileNpm } } else if (fs.existsSync(lockfileYarn)) { - var lock = { mode: 'yarn', file: lockfileYarn } + let lock = { mode: 'yarn', file: lockfileYarn } lock.content = fs.readFileSync(lock.file).toString() lock.version = /# yarn lockfile v1/.test(lock.content) ? 1 : 2 return lock } else if (fs.existsSync(lockfileShrinkwrap)) { return { mode: 'npm', file: lockfileShrinkwrap } } - throw new BrowserslistError( + throw new BrowserslistUpdateError( 'No lockfile found. Run "npm install", "yarn install" or "pnpm install"' ) } @@ -57,62 +71,39 @@ function getLatestInfo(lock) { ) } -function getBrowsersList() { - return childProcess - .execSync('npx browserslist') - .toString() - .trim() - .split('\n') - .map(function (line) { - return line.trim().split(' ') - }) - .reduce(function (result, entry) { - if (!result[entry[0]]) { - result[entry[0]] = [] - } - result[entry[0]].push(entry[1]) - return result - }, {}) +function getBrowsers() { + let browserslist = require('browserslist') + return browserslist().reduce((result, entry) => { + if (!result[entry[0]]) { + result[entry[0]] = [] + } + result[entry[0]].push(entry[1]) + return result + }, {}) } -function diffBrowsersLists(old, current) { - var browsers = Object.keys(old).concat( - Object.keys(current).filter(function (browser) { - return old[browser] === undefined - }) +function diffBrowsers(old, current) { + let browsers = Object.keys(old).concat( + Object.keys(current).filter(browser => old[browser] === undefined) ) return browsers - .map(function (browser) { - var oldVersions = old[browser] || [] - var currentVersions = current[browser] || [] - var intersection = oldVersions.filter(function (version) { - return currentVersions.indexOf(version) !== -1 - }) - var addedVersions = currentVersions.filter(function (version) { - return intersection.indexOf(version) === -1 - }) - var removedVersions = oldVersions.filter(function (version) { - return intersection.indexOf(version) === -1 - }) - return removedVersions - .map(function (version) { - return pico.red('- ' + browser + ' ' + version) - }) - .concat( - addedVersions.map(function (version) { - return pico.green('+ ' + browser + ' ' + version) - }) - ) + .map(browser => { + let oldVersions = old[browser] || [] + let currentVersions = current[browser] || [] + let common = oldVersions.filter(v => currentVersions.includes(v)) + let added = currentVersions.filter(v => !common.includes(v)) + let removed = oldVersions.filter(v => !common.includes(v)) + return removed + .map(v => pico.red('- ' + browser + ' ' + v)) + .concat(added.map(v => pico.green('+ ' + browser + ' ' + v))) }) - .reduce(function (result, array) { - return result.concat(array) - }, []) + .reduce((result, array) => result.concat(array), []) .join('\n') } function updateNpmLockfile(lock, latest) { - var metadata = { latest: latest, versions: [] } - var content = deletePackage(JSON.parse(lock.content), metadata) + let metadata = { latest, versions: [] } + let content = deletePackage(JSON.parse(lock.content), metadata) metadata.content = JSON.stringify(content, null, ' ') return metadata } @@ -120,27 +111,27 @@ function updateNpmLockfile(lock, latest) { function deletePackage(node, metadata) { if (node.dependencies) { if (node.dependencies['caniuse-lite']) { - var version = node.dependencies['caniuse-lite'].version + let version = node.dependencies['caniuse-lite'].version metadata.versions[version] = true delete node.dependencies['caniuse-lite'] } - for (var i in node.dependencies) { + for (let i in node.dependencies) { node.dependencies[i] = deletePackage(node.dependencies[i], metadata) } } return node } -var yarnVersionRe = /version "(.*?)"/ +let yarnVersionRe = /version "(.*?)"/ function updateYarnLockfile(lock, latest) { - var blocks = lock.content.split(/(\n{2,})/).map(function (block) { + let blocks = lock.content.split(/(\n{2,})/).map(block => { return block.split('\n') }) - var versions = {} - blocks.forEach(function (lines) { + let versions = {} + blocks.forEach(lines => { if (lines[0].indexOf('caniuse-lite@') !== -1) { - var match = yarnVersionRe.exec(lines[1]) + let match = yarnVersionRe.exec(lines[1]) versions[match[1]] = true if (match[1] !== latest.version) { lines[1] = lines[1].replace( @@ -162,12 +153,8 @@ function updateYarnLockfile(lock, latest) { } } }) - var content = blocks - .map(function (lines) { - return lines.join('\n') - }) - .join('') - return { content: content, versions: versions } + let content = blocks.map(lines => lines.join('\n')).join('') + return { content, versions } } function updateLockfile(lock, latest) { @@ -181,8 +168,8 @@ function updateLockfile(lock, latest) { } function updatePackageManually(print, lock, latest) { - var lockfileData = updateLockfile(lock, latest) - var caniuseVersions = Object.keys(lockfileData.versions).sort() + let lockfileData = updateLockfile(lock, latest) + let caniuseVersions = Object.keys(lockfileData.versions).sort() if (caniuseVersions.length === 1 && caniuseVersions[0] === latest.version) { print( 'Installed version: ' + @@ -206,7 +193,7 @@ function updatePackageManually(print, lock, latest) { ) fs.writeFileSync(lock.file, lockfileData.content) - var install = lock.mode === 'yarn' ? 'yarn add -W' : lock.mode + ' install' + let install = lock.mode === 'yarn' ? 'yarn add -W' : lock.mode + ' install' print( 'Installing new caniuse-lite version\n' + pico.yellow('$ ' + install + ' caniuse-lite') + @@ -229,7 +216,7 @@ function updatePackageManually(print, lock, latest) { process.exit(1) } /* c8 ignore end */ - var del = lock.mode === 'yarn' ? 'yarn remove -W' : lock.mode + ' uninstall' + let del = lock.mode === 'yarn' ? 'yarn remove -W' : lock.mode + ' uninstall' print( 'Cleaning package.json dependencies from caniuse-lite\n' + pico.yellow('$ ' + del + ' caniuse-lite') + @@ -259,16 +246,16 @@ function updateWith(print, cmd) { } /* c8 ignore end */ } -module.exports = function updateDB(print) { - var lock = detectLockfile() - var latest = getLatestInfo(lock) +module.exports = function updateDB(print = defaultPrint) { + let lock = detectLockfile() + let latest = getLatestInfo(lock) - var browsersListRetrievalError - var oldBrowsersList + let listError + let oldList try { - oldBrowsersList = getBrowsersList() + oldList = getBrowsers() } catch (e) { - browsersListRetrievalError = e + listError = e } print('Latest version: ' + pico.bold(pico.green(latest.version)) + '\n') @@ -283,33 +270,30 @@ module.exports = function updateDB(print) { print('caniuse-lite has been successfully updated\n') - var currentBrowsersList - if (!browsersListRetrievalError) { + let newList + if (!listError) { try { - currentBrowsersList = getBrowsersList() + newList = getBrowsers() } catch (e) /* c8 ignore start */ { - browsersListRetrievalError = e + listError = e } /* c8 ignore end */ } - if (browsersListRetrievalError) { + if (listError) { print( pico.red( '\n' + - browsersListRetrievalError.stack + + listError.stack + '\n\n' + 'Problem with browser list retrieval.\n' + 'Target browser changes won’t be shown.\n' ) ) } else { - var targetBrowserChanges = diffBrowsersLists( - oldBrowsersList, - currentBrowsersList - ) - if (targetBrowserChanges) { + let changes = diffBrowsers(oldList, newList) + if (changes) { print('\nTarget browser changes:\n') - print(targetBrowserChanges + '\n') + print(changes + '\n') } else { print('\n' + pico.green('No target browser changes') + '\n') } diff --git a/tools/node_modules/eslint/node_modules/update-browserslist-db/package.json b/tools/node_modules/eslint/node_modules/update-browserslist-db/package.json new file mode 100644 index 00000000000000..fcaa527123bc43 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/update-browserslist-db/package.json @@ -0,0 +1,38 @@ +{ + "name": "update-browserslist-db", + "version": "1.0.4", + "description": "CLI tool to update caniuse-lite to refresh target browsers from Browserslist config", + "keywords": [ + "caniuse", + "browsers", + "target" + ], + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "author": "Andrey Sitnik ", + "license": "MIT", + "repository": "browserslist/update-db", + "types": "./index.d.ts", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + }, + "bin": { + "browserslist-lint": "cli.js" + } +} diff --git a/tools/node_modules/eslint/package.json b/tools/node_modules/eslint/package.json index 88a92f798f3f8c..bdb3d6f49253f2 100644 --- a/tools/node_modules/eslint/package.json +++ b/tools/node_modules/eslint/package.json @@ -1,6 +1,6 @@ { "name": "eslint", - "version": "8.11.0", + "version": "8.20.0", "author": "Nicholas C. Zakas ", "description": "An AST-based pattern checker for JavaScript.", "bin": { @@ -16,7 +16,9 @@ "test": "node Makefile.js test", "test:cli": "mocha", "lint": "node Makefile.js lint", + "lint:docsjs": "node Makefile.js lintDocsJS", "fix": "node Makefile.js lint -- fix", + "fix:docsjs": "node Makefile.js lintDocsJS -- fix", "fuzz": "node Makefile.js fuzz", "generate-release": "node Makefile.js generateRelease", "generate-alpharelease": "node Makefile.js generatePrerelease -- alpha", @@ -25,14 +27,19 @@ "publish-release": "node Makefile.js publishRelease", "gensite": "node Makefile.js gensite", "webpack": "node Makefile.js webpack", - "perf": "node Makefile.js perf" + "perf": "node Makefile.js perf", + "docs:update-links": "node tools/fetch-docs-links.js" }, "gitHooks": { "pre-commit": "lint-staged" }, "lint-staged": { "*.js": "eslint --fix", - "*.md": "markdownlint" + "*.md": "markdownlint --fix", + "docs/src/rules/*.md": [ + "node tools/fetch-docs-links.js", + "git add docs/src/_data/further_reading_links.json" + ] }, "files": [ "LICENSE", @@ -47,7 +54,7 @@ "homepage": "https://eslint.org", "bugs": "https://github.com/eslint/eslint/issues/", "dependencies": { - "@eslint/eslintrc": "^1.2.1", + "@eslint/eslintrc": "^1.3.0", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -58,14 +65,14 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", + "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -74,7 +81,7 @@ "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", @@ -90,19 +97,22 @@ "cheerio": "^0.22.0", "common-tags": "^1.8.0", "core-js": "^3.1.3", - "dateformat": "^4.5.1", "ejs": "^3.0.2", "eslint": "file:.", "eslint-config-eslint": "file:packages/eslint-config-eslint", "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-eslint-plugin": "^4.0.1", + "eslint-plugin-eslint-plugin": "^4.4.0", "eslint-plugin-internal-rules": "file:tools/internal-rules", "eslint-plugin-node": "^11.1.0", + "eslint-plugin-unicorn": "^42.0.0", "eslint-release": "^3.2.0", "eslump": "^3.0.0", "esprima": "^4.0.1", + "fast-glob": "^3.2.11", "fs-teardown": "^0.1.3", "glob": "^7.1.6", + "got": "^11.8.3", + "gray-matter": "^4.0.3", "jsdoc": "^3.5.5", "karma": "^6.1.1", "karma-chrome-launcher": "^3.1.0", @@ -111,10 +121,16 @@ "karma-webpack": "^5.0.0", "lint-staged": "^11.0.0", "load-perf": "^0.2.0", - "markdownlint": "^0.24.0", - "markdownlint-cli": "^0.30.0", + "markdownlint": "^0.25.1", + "markdownlint-cli": "^0.31.1", "marked": "^4.0.8", "memfs": "^3.0.1", + "metascraper": "^5.25.7", + "metascraper-description": "^5.25.7", + "metascraper-image": "^5.29.3", + "metascraper-logo": "^5.25.7", + "metascraper-logo-favicon": "^5.25.7", + "metascraper-title": "^5.25.7", "mocha": "^8.3.2", "mocha-junit-reporter": "^2.0.0", "node-polyfill-webpack-plugin": "^1.0.3", diff --git a/tools/osx-notarize.sh b/tools/osx-notarize.sh index 07d3e20e7e9a18..31c92c2ca426f3 100755 --- a/tools/osx-notarize.sh +++ b/tools/osx-notarize.sh @@ -28,8 +28,7 @@ if [ ! -f "${gon_exe}" ]; then (cd "${HOME}/.gon/" && rm -f gon && unzip "${gon_exe}.zip" && mv gon "${gon_exe}") fi -cat tools/osx-gon-config.json.tmpl \ - | sed -e "s/{{appleid}}/${NOTARIZATION_ID}/" -e "s/{{pkgid}}/${pkgid}/" \ +sed -e "s/{{appleid}}/${NOTARIZATION_ID}/" -e "s/{{pkgid}}/${pkgid}/" tools/osx-gon-config.json.tmpl \ > gon-config.json "${gon_exe}" -log-level=info gon-config.json diff --git a/tools/rpm/node.spec b/tools/rpm/node.spec deleted file mode 100644 index 83c7b67b2a39a5..00000000000000 --- a/tools/rpm/node.spec +++ /dev/null @@ -1,114 +0,0 @@ -# Copyright (c) 2013, StrongLoop, Inc. -# -# Permission to use, copy, modify, and/or distribute this software for any -# purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -# This is updated by rpmbuild.sh. -%define _version 0.10.12 - -Name: node -Version: %{_version} -Release: 1 -Summary: Node.js is a platform for building fast, scalable network applications. -Group: Development/Languages -License: MIT -URL: https://nodejs.org/ -Source0: https://nodejs.org/dist/v%{_version}/node-v%{_version}.tar.gz -BuildRequires: gcc -BuildRequires: gcc-c++ -BuildRequires: glibc-devel -BuildRequires: make -BuildRequires: python - -# Conflicts with the HAM radio package. -Conflicts: node <= 0.3.2-11 - -# Conflicts with the Fedora node.js package. -Conflicts: nodejs - - -%description -Node.js is a platform built on Chrome's JavaScript runtime for easily -building fast, scalable network applications. - -Node.js uses an event-driven, non-blocking I/O model that makes it -lightweight and efficient, perfect for data-intensive real-time -applications that run across distributed devices. - - -%prep -%setup -q - - -%build -%ifarch arm -%define _dest_cpu arm -%endif - -%ifarch i386 i686 -%define _dest_cpu ia32 -%endif - -%ifarch x86_64 -%define _dest_cpu x64 -%endif - -./configure --prefix=/usr --dest-cpu=%{_dest_cpu} -make %{?_smp_mflags} - - -%check -#make test - - -# Use mildly hard-coded paths in the install and files targets for now. -# _libdir is /usr/lib64 on some systems but the installer always installs -# to /usr/lib. I have commits sitting in a branch that add --libdir and -# --mandir configure switches to the configure script but it's debatable -# if it's worth the extra complexity. -%install -export DONT_STRIP=1 # Don't strip debug symbols for now. -make install DESTDIR=%{buildroot} -rm -fr %{buildroot}/usr/lib/dtrace/ # No systemtap support. -install -m 755 -d %{buildroot}/usr/lib/node_modules/ -install -m 755 -d %{buildroot}%{_datadir}/%{name} - -# Remove junk files from node_modules/ - we should probably take care of -# this in the installer. -for FILE in .gitmodules .gitignore .npmignore .travis.yml \*.py[co]; do - find %{buildroot}/usr/lib/node_modules/ -name "$FILE" -delete -done - - -%files -/usr/bin/* -/usr/include/* -/usr/lib/node_modules/ -/usr/share/doc/node/gdbinit -/usr/share/man/man1/node.1.gz -/usr/share/systemtap/tapset/node.stp -%{_datadir}/%{name}/ -%doc CHANGELOG.md LICENSE README.md - - -%changelog -* Tue Jul 7 2015 Ali Ijaz Sheikh -- Added gdbinit. - -* Mon Apr 13 2015 Dan Varga -- Fix paths for changelog and manpage - -* Thu Dec 4 2014 Ben Noordhuis -- Rename to iojs. - -* Fri Jul 5 2013 Ben Noordhuis -- Initial release. diff --git a/tools/rpm/rpmbuild.sh b/tools/rpm/rpmbuild.sh deleted file mode 100755 index 6c990c8e94b997..00000000000000 --- a/tools/rpm/rpmbuild.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh - -# Copyright (c) 2013, StrongLoop, Inc. -# -# Permission to use, copy, modify, and/or distribute this software for any -# purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -set -e - -TOOLSDIR=`dirname "$0"` -TOPLEVELDIR="$TOOLSDIR/../.." - -RPMBUILD_PATH="${RPMBUILD_PATH:-$HOME/rpmbuild}" -if [ ! -d "$RPMBUILD_PATH" ]; then - echo "Run rpmdev-setuptree first." - exit 1 -fi - -if [ $# -ge 1 ]; then - VERSION=$1 -else - FILE="$TOPLEVELDIR/src/node_version.h" - MAJOR=`sed -nre 's/#define NODE_MAJOR_VERSION ([0-9]+)/\1/p' "$FILE"` - MINOR=`sed -nre 's/#define NODE_MINOR_VERSION ([0-9]+)/\1/p' "$FILE"` - PATCH=`sed -nre 's/#define NODE_PATCH_VERSION ([0-9]+)/\1/p' "$FILE"` - VERSION="$MAJOR.$MINOR.$PATCH" -fi - -set -x - -sed -re "s/%define _version .+/%define _version ${VERSION}/" \ - "$TOOLSDIR/node.spec" > "$RPMBUILD_PATH/SPECS/node.spec" -tar --exclude-vcs --transform="s|^|node-${VERSION}/|" \ - -czf "$RPMBUILD_PATH/SOURCES/node-v${VERSION}.tar.gz" . -rpmbuild "$*" -ba "$RPMBUILD_PATH/SPECS/node.spec" diff --git a/tools/snapshot/README.md b/tools/snapshot/README.md index fb22c03ed50b88..5792ede4499f33 100644 --- a/tools/snapshot/README.md +++ b/tools/snapshot/README.md @@ -22,8 +22,7 @@ In the default build of the Node.js executable, to embed a V8 startup snapshot into the Node.js executable, `libnode` is first built with these unresolved symbols: -- `node::NodeMainInstance::GetEmbeddedSnapshotBlob` -- `node::NodeMainInstance::GetIsolateDataIndices` +- `node::NodeMainInstance::GetEmbeddedSnapshotData` Then the `node_mksnapshot` executable is built with C++ files in this directory, as well as `src/node_snapshot_stub.cc` which defines the unresolved diff --git a/tools/snapshot/node_mksnapshot.cc b/tools/snapshot/node_mksnapshot.cc index e591f64a2a0518..d166559a715b14 100644 --- a/tools/snapshot/node_mksnapshot.cc +++ b/tools/snapshot/node_mksnapshot.cc @@ -7,53 +7,91 @@ #include "libplatform/libplatform.h" #include "node_internals.h" -#include "node_snapshotable.h" +#include "node_snapshot_builder.h" #include "util-inl.h" #include "v8.h" +int BuildSnapshot(int argc, char* argv[]); + #ifdef _WIN32 #include -int wmain(int argc, wchar_t* argv[]) { +int wmain(int argc, wchar_t* wargv[]) { + // Windows needs conversion from wchar_t to char. + + // Convert argv to UTF8. + char** argv = new char*[argc + 1]; + for (int i = 0; i < argc; i++) { + // Compute the size of the required buffer + DWORD size = WideCharToMultiByte( + CP_UTF8, 0, wargv[i], -1, nullptr, 0, nullptr, nullptr); + if (size == 0) { + // This should never happen. + fprintf(stderr, "Could not convert arguments to utf8."); + exit(1); + } + // Do the actual conversion + argv[i] = new char[size]; + DWORD result = WideCharToMultiByte( + CP_UTF8, 0, wargv[i], -1, argv[i], size, nullptr, nullptr); + if (result == 0) { + // This should never happen. + fprintf(stderr, "Could not convert arguments to utf8."); + exit(1); + } + } + argv[argc] = nullptr; #else // UNIX int main(int argc, char* argv[]) { argv = uv_setup_args(argc, argv); + + // Disable stdio buffering, it interacts poorly with printf() + // calls elsewhere in the program (e.g., any logging from V8.) + setvbuf(stdout, nullptr, _IONBF, 0); + setvbuf(stderr, nullptr, _IONBF, 0); #endif // _WIN32 v8::V8::SetFlagsFromString("--random_seed=42"); + v8::V8::SetFlagsFromString("--harmony-import-assertions"); + return BuildSnapshot(argc, argv); +} +int BuildSnapshot(int argc, char* argv[]) { if (argc < 2) { std::cerr << "Usage: " << argv[0] << " \n"; + std::cerr << " " << argv[0] << " --build-snapshot " + << " \n"; return 1; } - std::ofstream out; - out.open(argv[1], std::ios::out | std::ios::binary); - if (!out.is_open()) { - std::cerr << "Cannot open " << argv[1] << "\n"; - return 1; - } - -// Windows needs conversion from wchar_t to char. See node_main.cc -#ifdef _WIN32 - int node_argc = 1; - char argv0[] = "node"; - char* node_argv[] = {argv0, nullptr}; - node::InitializationResult result = - node::InitializeOncePerProcess(node_argc, node_argv); -#else node::InitializationResult result = node::InitializeOncePerProcess(argc, argv); -#endif CHECK(!result.early_return); CHECK_EQ(result.exit_code, 0); + std::string out_path; + if (node::per_process::cli_options->build_snapshot) { + out_path = result.args[2]; + } else { + out_path = result.args[1]; + } + + std::ofstream out(out_path, std::ios::out | std::ios::binary); + if (!out) { + std::cerr << "Cannot open " << out_path << "\n"; + return 1; + } + { std::string snapshot = node::SnapshotBuilder::Generate(result.args, result.exec_args); out << snapshot; - out.close(); + + if (!out) { + std::cerr << "Failed to write " << out_path << "\n"; + return 1; + } } node::TearDownOncePerProcess(); diff --git a/tools/test.py b/tools/test.py index 9a7de5ed24d706..35153057f0b9f2 100755 --- a/tools/test.py +++ b/tools/test.py @@ -96,10 +96,11 @@ def get_module(name, path): class ProgressIndicator(object): - def __init__(self, cases, flaky_tests_mode): + def __init__(self, cases, flaky_tests_mode, measure_flakiness): self.cases = cases self.serial_id = 0 self.flaky_tests_mode = flaky_tests_mode + self.measure_flakiness = measure_flakiness self.parallel_queue = Queue(len(cases)) self.sequential_queue = Queue(len(cases)) for case in cases: @@ -211,10 +212,22 @@ def RunSingle(self, parallel, thread_id): if output.UnexpectedOutput(): if FLAKY in output.test.outcomes and self.flaky_tests_mode == DONTCARE: self.flaky_failed.append(output) + elif FLAKY in output.test.outcomes and self.flaky_tests_mode == KEEP_RETRYING: + for _ in range(99): + if not case.Run().UnexpectedOutput(): + self.flaky_failed.append(output) + break + else: + # If after 100 tries, the test is not passing, it's not flaky. + self.failed.append(output) else: self.failed.append(output) if output.HasCrashed(): self.crashed += 1 + if self.measure_flakiness: + outputs = [case.Run() for _ in range(self.measure_flakiness)] + # +1s are there because the test already failed once at this point. + print(f" failed {len([i for i in outputs if i.UnexpectedOutput()]) + 1} out of {self.measure_flakiness + 1}") else: self.succeeded += 1 self.remaining -= 1 @@ -436,8 +449,8 @@ def Done(self): class CompactProgressIndicator(ProgressIndicator): - def __init__(self, cases, flaky_tests_mode, templates): - super(CompactProgressIndicator, self).__init__(cases, flaky_tests_mode) + def __init__(self, cases, flaky_tests_mode, measure_flakiness, templates): + super(CompactProgressIndicator, self).__init__(cases, flaky_tests_mode, measure_flakiness) self.templates = templates self.last_status_length = 0 self.start_time = time.time() @@ -492,13 +505,13 @@ def PrintProgress(self, name): class ColorProgressIndicator(CompactProgressIndicator): - def __init__(self, cases, flaky_tests_mode): + def __init__(self, cases, flaky_tests_mode, measure_flakiness): templates = { 'status_line': "[%(mins)02i:%(secs)02i|\033[34m%%%(remaining) 4d\033[0m|\033[32m+%(passed) 4d\033[0m|\033[31m-%(failed) 4d\033[0m]: %(test)s", 'stdout': "\033[1m%s\033[0m", 'stderr': "\033[31m%s\033[0m", } - super(ColorProgressIndicator, self).__init__(cases, flaky_tests_mode, templates) + super(ColorProgressIndicator, self).__init__(cases, flaky_tests_mode, measure_flakiness, templates) def ClearLine(self, last_line_length): print("\033[1K\r", end='') @@ -506,7 +519,7 @@ def ClearLine(self, last_line_length): class MonochromeProgressIndicator(CompactProgressIndicator): - def __init__(self, cases, flaky_tests_mode): + def __init__(self, cases, flaky_tests_mode, measure_flakiness): templates = { 'status_line': "[%(mins)02i:%(secs)02i|%%%(remaining) 4d|+%(passed) 4d|-%(failed) 4d]: %(test)s", 'stdout': '%s', @@ -514,7 +527,7 @@ def __init__(self, cases, flaky_tests_mode): 'clear': lambda last_line_length: ("\r" + (" " * last_line_length) + "\r"), 'max_length': 78 } - super(MonochromeProgressIndicator, self).__init__(cases, flaky_tests_mode, templates) + super(MonochromeProgressIndicator, self).__init__(cases, flaky_tests_mode, measure_flakiness, templates) def ClearLine(self, last_line_length): print(("\r" + (" " * last_line_length) + "\r"), end='') @@ -948,8 +961,8 @@ def GetTimeout(self, mode, section=''): timeout = timeout * 6 return timeout -def RunTestCases(cases_to_run, progress, tasks, flaky_tests_mode): - progress = PROGRESS_INDICATORS[progress](cases_to_run, flaky_tests_mode) +def RunTestCases(cases_to_run, progress, tasks, flaky_tests_mode, measure_flakiness): + progress = PROGRESS_INDICATORS[progress](cases_to_run, flaky_tests_mode, measure_flakiness) return progress.Run(tasks) # ------------------------------------------- @@ -967,6 +980,7 @@ def RunTestCases(cases_to_run, progress, tasks, flaky_tests_mode): SLOW = 'slow' FLAKY = 'flaky' DONTCARE = 'dontcare' +KEEP_RETRYING = 'keep_retrying' class Expression(object): pass @@ -1355,8 +1369,11 @@ def BuildOptions(): result.add_option("--cat", help="Print the source of the tests", default=False, action="store_true") result.add_option("--flaky-tests", - help="Regard tests marked as flaky (run|skip|dontcare)", + help="Regard tests marked as flaky (run|skip|dontcare|keep_retrying)", default="run") + result.add_option("--measure-flakiness", + help="When a test fails, re-run it x number of times", + default=0, type="int") result.add_option("--skip-tests", help="Tests that should not be executed (comma-separated)", default="") @@ -1433,7 +1450,7 @@ def ProcessOptions(options): # -j and ignoring -J, which is the opposite of what we used to do before -J # became a legacy no-op. print('Warning: Legacy -J option is ignored. Using the -j option.') - if options.flaky_tests not in [RUN, SKIP, DONTCARE]: + if options.flaky_tests not in [RUN, SKIP, DONTCARE, KEEP_RETRYING]: print("Unknown flaky-tests mode %s" % options.flaky_tests) return False return True @@ -1733,7 +1750,7 @@ def should_keep(case): else: try: start = time.time() - if RunTestCases(cases_to_run, options.progress, options.j, options.flaky_tests): + if RunTestCases(cases_to_run, options.progress, options.j, options.flaky_tests, options.measure_flakiness): result = 0 else: result = 1 diff --git a/tools/update-authors.js b/tools/update-authors.mjs similarity index 86% rename from tools/update-authors.js rename to tools/update-authors.mjs index 5d8a5e7b3685a3..971fe160e3cf71 100755 --- a/tools/update-authors.js +++ b/tools/update-authors.mjs @@ -1,11 +1,9 @@ #!/usr/bin/env node -// Usage: tools/update-author.js [--dry] +// Usage: tools/update-author.mjs [--dry] // Passing --dry will redirect output to stdout rather than write to 'AUTHORS'. -'use strict'; -const { spawn } = require('child_process'); -const path = require('path'); -const fs = require('fs'); -const readline = require('readline'); +import { spawn } from 'node:child_process'; +import fs from 'node:fs'; +import readline from 'node:readline'; class CaseIndifferentMap { _map = new Map(); @@ -33,7 +31,7 @@ output.write('# Authors ordered by first contribution.\n\n'); const mailmap = new CaseIndifferentMap(); { - const lines = fs.readFileSync(path.resolve(__dirname, '../', '.mailmap'), + const lines = fs.readFileSync(new URL('../.mailmap', import.meta.url), { encoding: 'utf8' }).split('\n'); for (let line of lines) { line = line.trim(); @@ -55,7 +53,7 @@ const mailmap = new CaseIndifferentMap(); const previousAuthors = new CaseIndifferentMap(); { - const lines = fs.readFileSync(path.resolve(__dirname, '../', 'AUTHORS'), + const lines = fs.readFileSync(new URL('../AUTHORS', import.meta.url), { encoding: 'utf8' }).split('\n'); for (let line of lines) { line = line.trim(); @@ -85,9 +83,9 @@ const seen = new Set(); // by GitHub now. const authorRe = /(^Author:|^Co-authored-by:)\s+(?[^<]+)\s+(?<[^>]+>)/i; -rl.on('line', (line) => { +for await (const line of rl) { const match = line.match(authorRe); - if (!match) return; + if (!match) continue; let { author, email } = match.groups; const emailLower = email.toLowerCase(); @@ -99,7 +97,7 @@ rl.on('line', (line) => { } if (seen.has(email)) { - return; + continue; } seen.add(email); @@ -109,8 +107,6 @@ rl.on('line', (line) => { console.warn('Author name already in AUTHORS file. Possible duplicate:'); console.warn(` ${author} ${email}`); } -}); +} -rl.on('close', () => { - output.end('\n# Generated by tools/update-authors.js\n'); -}); +output.end('\n# Generated by tools/update-authors.mjs\n'); diff --git a/tools/update-npm.sh b/tools/update-npm.sh index d58b325b77f713..f69b6e5b17ea15 100755 --- a/tools/update-npm.sh +++ b/tools/update-npm.sh @@ -49,5 +49,5 @@ echo "Please git add npm, commit the new version, and whitespace-fix:" echo "" echo "$ git add -A deps/npm" echo "$ git commit -m \"deps: upgrade npm to $NPM_VERSION\"" -echo "$ git rebase --whitespace=fix master" +echo "$ git rebase --whitespace=fix main" echo "" diff --git a/tools/update-undici.sh b/tools/update-undici.sh old mode 100644 new mode 100755 index 40920df9d8f8c9..8350e215272808 --- a/tools/update-undici.sh +++ b/tools/update-undici.sh @@ -29,7 +29,7 @@ rm -f deps/undici/undici.js ) mv undici-tmp/node_modules/undici deps/undici/src -mv deps/undici/src/undici.js deps/undici/undici.js +mv deps/undici/src/undici-fetch.js deps/undici/undici.js cp deps/undici/src/LICENSE deps/undici/LICENSE rm -rf undici-tmp/ diff --git a/tools/v8_gypfiles/features.gypi b/tools/v8_gypfiles/features.gypi index 365860ef947ff0..e85f6709e7a45c 100644 --- a/tools/v8_gypfiles/features.gypi +++ b/tools/v8_gypfiles/features.gypi @@ -253,7 +253,7 @@ # will fail. 'v8_enable_webassembly%': 1, - # Enable advanced BigInt algorithms, costing about 10-30 KB binary size + # Enable advanced BigInt algorithms, costing about 10-30 KiB binary size # depending on platform. 'v8_advanced_bigint_algorithms%': 1 }, diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp index 39b96803c71935..73099a03e49d78 100644 --- a/tools/v8_gypfiles/v8.gyp +++ b/tools/v8_gypfiles/v8.gyp @@ -322,7 +322,7 @@ '<(V8_ROOT)/src/builtins/builtins-intl-gen.cc', ], }], - ['OS=="win"', { + ['OS=="win" and _toolset=="target"', { 'msvs_precompiled_header': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.h', 'msvs_precompiled_source': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.cc', 'sources': [ @@ -670,7 +670,7 @@ ], 'sources': ['<@(v8_compiler_sources)'], 'conditions': [ - ['OS=="win"', { + ['OS=="win" and _toolset=="target"', { 'msvs_precompiled_header': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.h', 'msvs_precompiled_source': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.cc', 'sources': [ @@ -695,7 +695,7 @@ ], 'sources': ['<@(v8_compiler_sources)'], 'conditions': [ - ['OS=="win"', { + ['OS=="win" and _toolset=="target"', { 'msvs_precompiled_header': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.h', 'msvs_precompiled_source': '<(V8_ROOT)/../../tools/msvs/pch/v8_pch.cc', 'sources': [ @@ -880,13 +880,15 @@ '&2 + exit 1 +fi + +originalsidedeck=$1 +outputsidedeck=$2 +newdllname=$3 + +SCRIPT_DIR=$(dirname "$0") +ID=`date +%C%y%m%d_%H%M%S` +TMP="/tmp/sidedeck-$(basename "$0").$ID.tmp" +TMP2="/tmp/sidedeck-$(basename "$0").$ID.tmp.2" + +# Remove on exit/interrupt +trap '/bin/rm -rf "$TMP" "$TMP2" && exit' EXIT INT TERM QUIT HUP + +set -x +dd conv=unblock cbs=80 if="$originalsidedeck" of="$TMP" +chtag -tc 1047 "$TMP" +"$SCRIPT_DIR"/sdwrap.py -u -i "$TMP" -o "$TMP2" +chtag -tc 819 "$TMP2" +sed -e "s/\(^ IMPORT \(DATA\|CODE\)64,\)'[^']*'/\1'$newdllname'/g" "$TMP2" > "$TMP" +"$SCRIPT_DIR"/sdwrap.py -i "$TMP" -o "$TMP2" + +# Reformat sidedeck to be USS compatible +iconv -f ISO8859-1 -t IBM-1047 "$TMP2" > "$TMP" +dd conv=block cbs=80 if="$TMP" of="$outputsidedeck" diff --git a/tools/zos/sdwrap.py b/tools/zos/sdwrap.py new file mode 100755 index 00000000000000..5253d945f40892 --- /dev/null +++ b/tools/zos/sdwrap.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python + +import argparse +import sys + +def wrap(args): + l = args.input.readline(72) + firstline = True + while l: + if l[-1] == '\n': + if firstline: + outstr = "{}".format(l) + else: + outstr = " {}".format(l) + firstline = True + l = args.input.readline(72) + else: + if firstline: + outstr = "{:<71}*\n".format(l[:-1]) + firstline = False + else: + outstr = " {:<70}*\n".format(l[:-1]) + l = l[-1] + args.input.readline(70) + args.output.write(outstr) + + return 0 + +def unwrap(args): + l = args.input.readline() + firstline = True + while l: + if len(l) > 80: + print("Error: input line invalid (longer than 80 characters)", file=sys.stderr) + return 1 + if not firstline and l[0] != ' ': + print("Error: continuation line not start with blank", file=sys.stderr) + return 1 + + if len(l) > 71 and l[71] == '*': + if firstline: + args.output.write(l[:71]) + firstline = False + else: + args.output.write(l[1:71]) + else: + if firstline: + args.output.write(l) + else: + args.output.write(l[1:]) + firstline = True + l = args.input.readline() + return 0 + +def Main(): + parser = argparse.ArgumentParser(description="Wrap sidedeck source to card formats") + parser.add_argument("-u", "--unwrap", + help="Unwrap sidedeck cards to source formats instead", action="store_true", + default=False) + parser.add_argument("-i", "--input", help="input filename, default to stdin", + action="store", default=None) + parser.add_argument("-o", "--output", help="output filename, default to stdout", + action="store", default=None) + + args = parser.parse_args() + + if args.input is None: + args.input = sys.stdin + else: + args.input = open(args.input, 'r') + + if args.output is None: + args.output = sys.stdout + else: + args.output = open(args.output, 'w') + + if args.unwrap: + return unwrap(args) + + return wrap(args) + +if __name__ == '__main__': + sys.exit(Main()) diff --git a/typings/internalBinding/async_wrap.d.ts b/typings/internalBinding/async_wrap.d.ts index 9df451e23cb515..bfbda3d7ed890b 100644 --- a/typings/internalBinding/async_wrap.d.ts +++ b/typings/internalBinding/async_wrap.d.ts @@ -107,7 +107,7 @@ declare function InternalBinding(binding: 'async_wrap'): { promiseAfterHook: InternalAsyncWrapBinding.PromiseHook | undefined, promiseResolveHook: InternalAsyncWrapBinding.PromiseHook | undefined ): void; - registerDestroyHook(promise: Promise, asyncId: number, destroyed: { destroyed: boolean }): void; + registerDestroyHook(resource: object, asyncId: number, destroyed?: { destroyed: boolean }): void; async_hook_fields: Uint32Array; async_id_fields: Float64Array; async_ids_stack: Float64Array; diff --git a/vcbuild.bat b/vcbuild.bat index d1a9e592551593..eb2fc28628ed47 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -35,6 +35,8 @@ set projgen= set nobuild= set sign= set nosnapshot= +set nonpm= +set nocorepack= set cctest_args= set test_args= set stage_package= @@ -89,6 +91,8 @@ if /i "%1"=="nobuild" set nobuild=1&goto arg-ok if /i "%1"=="nosign" set "sign="&echo Note: vcbuild no longer signs by default. "nosign" is redundant.&goto arg-ok if /i "%1"=="sign" set sign=1&goto arg-ok if /i "%1"=="nosnapshot" set nosnapshot=1&goto arg-ok +if /i "%1"=="nonpm" set nonpm=1&goto arg-ok +if /i "%1"=="nocorepack" set nocorepack=1&goto arg-ok if /i "%1"=="noetw" set noetw=1&goto arg-ok if /i "%1"=="ltcg" set ltcg=1&goto arg-ok if /i "%1"=="licensertf" set licensertf=1&goto arg-ok @@ -184,6 +188,8 @@ if "%*"=="lint" if exist "%node_exe%" goto lint-cpp if "%config%"=="Debug" set configure_flags=%configure_flags% --debug if defined nosnapshot set configure_flags=%configure_flags% --without-snapshot +if defined nonpm set configure_flags=%configure_flags% --without-npm +if defined nocorepack set configure_flags=%configure_flags% --without-corepack if defined noetw set configure_flags=%configure_flags% --without-etw& set noetw_msi_arg=/p:NoETW=1 if defined ltcg set configure_flags=%configure_flags% --with-ltcg if defined release_urlbase set configure_flags=%configure_flags% --release-urlbase=%release_urlbase% @@ -198,7 +204,6 @@ if defined target_arch set configure_flags=%configure_flags% --dest-cpu=%ta if defined openssl_no_asm set configure_flags=%configure_flags% --openssl-no-asm if defined DEBUG_HELPER set configure_flags=%configure_flags% --verbose if "%target_arch%"=="x86" if "%PROCESSOR_ARCHITECTURE%"=="AMD64" set configure_flags=%configure_flags% --no-cross-compiling -if "%target_arch%"=="arm64" set configure_flags=%configure_flags% --cross-compiling if not exist "%~dp0deps\icu" goto no-depsicu if "%target%"=="Clean" echo deleting %~dp0deps\icu @@ -400,7 +405,7 @@ if errorlevel 1 echo "Could not create junction to 'out\%config%'." & exit /B if not defined sign goto licensertf call tools\sign.bat Release\node.exe -if errorlevel 1 echo Failed to sign exe&goto exit +if errorlevel 1 echo Failed to sign exe, got error code %errorlevel%&goto exit :licensertf @rem Skip license.rtf generation if not requested. @@ -421,12 +426,12 @@ if "%use_x64_node_exe%"=="true" ( set exit_code=1 goto exit ) - %x64_node_exe% tools\license2rtf.js < LICENSE > %config%\license.rtf + %x64_node_exe% tools\license2rtf.mjs < LICENSE > %config%\license.rtf ) else ( - %node_exe% tools\license2rtf.js < LICENSE > %config%\license.rtf + %node_exe% tools\license2rtf.mjs < LICENSE > %config%\license.rtf ) -if errorlevel 1 echo Failed to generate license.rtf&goto exit +if errorlevel 1 echo Failed to generate license.rtf, got error code %errorlevel%&goto exit :stage_package if not defined stage_package goto install-doctools @@ -445,22 +450,29 @@ copy /Y ..\README.md %TARGET_NAME%\ > nul if errorlevel 1 echo Cannot copy README.md && goto package_error copy /Y ..\CHANGELOG.md %TARGET_NAME%\ > nul if errorlevel 1 echo Cannot copy CHANGELOG.md && goto package_error -robocopy ..\deps\npm %TARGET_NAME%\node_modules\npm /e /xd test > nul -if errorlevel 8 echo Cannot copy npm package && goto package_error -robocopy ..\deps\corepack %TARGET_NAME%\node_modules\corepack /e /xd test > nul -if errorlevel 8 echo Cannot copy corepack package && goto package_error -copy /Y ..\deps\npm\bin\npm %TARGET_NAME%\ > nul -if errorlevel 1 echo Cannot copy npm && goto package_error -copy /Y ..\deps\npm\bin\npm.cmd %TARGET_NAME%\ > nul -if errorlevel 1 echo Cannot copy npm.cmd && goto package_error -copy /Y ..\deps\npm\bin\npx %TARGET_NAME%\ > nul -if errorlevel 1 echo Cannot copy npx && goto package_error -copy /Y ..\deps\npm\bin\npx.cmd %TARGET_NAME%\ > nul -if errorlevel 1 echo Cannot copy npx.cmd && goto package_error -copy /Y ..\deps\corepack\shims\nodewin\corepack %TARGET_NAME%\ > nul -if errorlevel 1 echo Cannot copy corepack && goto package_error -copy /Y ..\deps\corepack\shims\nodewin\corepack.cmd %TARGET_NAME%\ > nul -if errorlevel 1 echo Cannot copy corepack.cmd && goto package_error + +if not defined nonpm ( + robocopy ..\deps\npm %TARGET_NAME%\node_modules\npm /e /xd test > nul + if errorlevel 8 echo Cannot copy npm package && goto package_error + copy /Y ..\deps\npm\bin\npm %TARGET_NAME%\ > nul + if errorlevel 1 echo Cannot copy npm && goto package_error + copy /Y ..\deps\npm\bin\npm.cmd %TARGET_NAME%\ > nul + if errorlevel 1 echo Cannot copy npm.cmd && goto package_error + copy /Y ..\deps\npm\bin\npx %TARGET_NAME%\ > nul + if errorlevel 1 echo Cannot copy npx && goto package_error + copy /Y ..\deps\npm\bin\npx.cmd %TARGET_NAME%\ > nul + if errorlevel 1 echo Cannot copy npx.cmd && goto package_error +) + +if not defined nocorepack ( + robocopy ..\deps\corepack %TARGET_NAME%\node_modules\corepack /e /xd test > nul + if errorlevel 8 echo Cannot copy corepack package && goto package_error + copy /Y ..\deps\corepack\shims\nodewin\corepack %TARGET_NAME%\ > nul + if errorlevel 1 echo Cannot copy corepack && goto package_error + copy /Y ..\deps\corepack\shims\nodewin\corepack.cmd %TARGET_NAME%\ > nul + if errorlevel 1 echo Cannot copy corepack.cmd && goto package_error +) + copy /Y ..\tools\msvs\nodevars.bat %TARGET_NAME%\ > nul if errorlevel 1 echo Cannot copy nodevars.bat && goto package_error copy /Y ..\tools\msvs\install_tools\*.* %TARGET_NAME%\ > nul @@ -469,6 +481,19 @@ if not defined noetw ( copy /Y ..\src\res\node_etw_provider.man %TARGET_NAME%\ > nul if errorlevel 1 echo Cannot copy node_etw_provider.man && goto package_error ) +if defined dll ( + copy /Y libnode.dll %TARGET_NAME%\ > nul + if errorlevel 1 echo Cannot copy libnode.dll && goto package_error + + mkdir %TARGET_NAME%\Release > nul + copy /Y node.def %TARGET_NAME%\Release\ > nul + if errorlevel 1 echo Cannot copy node.def && goto package_error + + set HEADERS_ONLY=1 + python ..\tools\install.py install %CD%\%TARGET_NAME% \ > nul + if errorlevel 1 echo Cannot install headers && goto package_error + set HEADERS_ONLY= +) cd .. :package @@ -513,7 +538,7 @@ if errorlevel 1 goto exit if not defined sign goto upload call tools\sign.bat node-v%FULLVERSION%-%target_arch%.msi -if errorlevel 1 echo Failed to sign msi&goto exit +if errorlevel 1 echo Failed to sign msi, got error code %errorlevel%&goto exit :upload @rem Skip upload if not requested @@ -596,7 +621,7 @@ if %errorlevel% neq 0 exit /b %errorlevel% :: building addons setlocal set npm_config_nodedir=%~dp0 -"%node_exe%" "%~dp0tools\build-addons.js" "%~dp0deps\npm\node_modules\node-gyp\bin\node-gyp.js" "%~dp0test\addons" +"%node_exe%" "%~dp0tools\build-addons.mjs" "%~dp0deps\npm\node_modules\node-gyp\bin\node-gyp.js" "%~dp0test\addons" if errorlevel 1 exit /b 1 endlocal @@ -614,7 +639,7 @@ for /d %%F in (test\js-native-api\??_*) do ( :: building js-native-api setlocal set npm_config_nodedir=%~dp0 -"%node_exe%" "%~dp0tools\build-addons.js" "%~dp0deps\npm\node_modules\node-gyp\bin\node-gyp.js" "%~dp0test\js-native-api" +"%node_exe%" "%~dp0tools\build-addons.mjs" "%~dp0deps\npm\node_modules\node-gyp\bin\node-gyp.js" "%~dp0test\js-native-api" if errorlevel 1 exit /b 1 endlocal goto build-node-api-tests @@ -633,7 +658,7 @@ for /d %%F in (test\node-api\??_*) do ( :: building node-api setlocal set npm_config_nodedir=%~dp0 -"%node_exe%" "%~dp0tools\build-addons.js" "%~dp0deps\npm\node_modules\node-gyp\bin\node-gyp.js" "%~dp0test\node-api" +"%node_exe%" "%~dp0tools\build-addons.mjs" "%~dp0deps\npm\node_modules\node-gyp\bin\node-gyp.js" "%~dp0test\node-api" if errorlevel 1 exit /b 1 endlocal goto run-tests @@ -747,7 +772,7 @@ set exit_code=1 goto exit :help -echo vcbuild.bat [debug/release] [msi] [doc] [test/test-all/test-addons/test-doc/test-js-native-api/test-node-api/test-benchmark/test-internet/test-pummel/test-simple/test-message/test-tick-processor/test-known-issues/test-node-inspect/test-check-deopts/test-npm/test-async-hooks/test-v8/test-v8-intl/test-v8-benchmarks/test-v8-all] [ignore-flaky] [static/dll] [noprojgen] [projgen] [small-icu/full-icu/without-intl] [nobuild] [nosnapshot] [noetw] [ltcg] [licensetf] [sign] [ia32/x86/x64/arm64] [vs2019/vs2022] [download-all] [lint/lint-ci/lint-js/lint-md] [lint-md-build] [package] [build-release] [upload] [no-NODE-OPTIONS] [link-module path-to-module] [debug-http2] [debug-nghttp2] [clean] [cctest] [no-cctest] [openssl-no-asm] +echo vcbuild.bat [debug/release] [msi] [doc] [test/test-all/test-addons/test-doc/test-js-native-api/test-node-api/test-benchmark/test-internet/test-pummel/test-simple/test-message/test-tick-processor/test-known-issues/test-node-inspect/test-check-deopts/test-npm/test-async-hooks/test-v8/test-v8-intl/test-v8-benchmarks/test-v8-all] [ignore-flaky] [static/dll] [noprojgen] [projgen] [small-icu/full-icu/without-intl] [nobuild] [nosnapshot] [nonpm] [nocorepack] [noetw] [ltcg] [licensetf] [sign] [ia32/x86/x64/arm64] [vs2019/vs2022] [download-all] [lint/lint-ci/lint-js/lint-md] [lint-md-build] [package] [build-release] [upload] [no-NODE-OPTIONS] [link-module path-to-module] [debug-http2] [debug-nghttp2] [clean] [cctest] [no-cctest] [openssl-no-asm] echo Examples: echo vcbuild.bat : builds release build echo vcbuild.bat debug : builds debug build